LOKI97暗号化・復号
オーストラリアのブロック暗号 - 128ビットブロック、可変キー長のAES候補
セキュリティ通知
LOKI97はAES候補でしたが、標準として選択されませんでした。強力なセキュリティが必要な新しいアプリケーションには、AES(Rijndael)の使用をお勧めします。
LOKI97について
LOKI97はオーストラリアのLOKI暗号ファミリーの第三世代で、Lawrie Brown(オーストラリア国防軍士官学校)とJosef Pieprzyk(マッコーリー大学)が設計しました。LOKI89(1990年、64ビットブロック)に始まり、BihamとShamirの差分解読法攻撃後にLOKI91で改良、1998年にAES候補として完全再設計されたLOKI97が登場しました。
LOKI97の最も特徴的な構造要素はGF(2¹³)上の既約多項式評価で生成されるS-boxです。DESの手作業設計S-boxやAESのGF(2⁸) SubBytesより代数的に複雑な構造です。鍵スケジュールはLOKI97のラウンド関数自体をマスター鍵に再帰的に適用してラウンドサブ鍵を導出します。
主な特徴
- 128ビットブロックサイズ — LOKI89の64ビットブロックから刷新、64ビット版の誕生日界脆弱性を除去
- 128・192・256ビットの3つの鍵長 — AESの全鍵長範囲に対応
- GF(2¹³)上で生成されるS-boxを持つ16ラウンドFeistelネットワーク
- 自己参照鍵スケジュール — ラウンドサブ鍵はLOKI97ラウンド関数を再帰適用して導出
- オーストラリア発祥:ADFA・マッコーリー大学設計の唯一の南半球学術系AES候補
LOKIファミリーの歴史
- LOKI89:1989年に設計されたオリジナル暗号。64ビットブロックと64ビットキー。
- LOKI91:LOKI89で見つかった弱点に対処した改良版。
- LOKI97:128ビットブロックを採用した最終進化版。AESコンペティションに提出。
暗号化モード
- CBC: 暗号ブロック連鎖 — 各128ビットLOKI97ブロックは16ラウンドGF(2¹³) S-box Feistelシーケンス前に前の暗号文とXORされます。128ビットブロックにより誕生日界衝突は約2⁶⁴ブロック(~148 EB)まで無視でき、Sweet32問題は実用上存在しません。
- ECB: 電子符号表 — 各128ビットLOKI97ブロックが16ラウンドすべて独立処理。同一128ビット平文ブロックは常に同一暗号文を生成し反復パターンを暴露。ECBは単一ブロックのトークン/鍵ラップのみ使用可。
- CFB: 暗号フィードバック — LOKI97の128ビットブロック関数が前の暗号文ブロック(IVから開始)を暗号化し、出力上位nビットがn平文ビットとXORされます。GF(2¹³) S-box置換とFeistel拡散ネットワーク両方から鍵ストリームを生成します。
- OFB: 出力フィードバック — LOKI97ブロック関数が平文と独立して実行状態を反復暗号化し決定論的鍵ストリームを生成。128ビット内部状態により鍵ストリームサイクル長は最低2⁶⁴。
- RAW: 生ブロック - チェーンモードなしの直接単一ブロック暗号化。IVは不要。単一の128ビットブロックのみ対象。
アルゴリズム構造
LOKI97は16ラウンドのFeistelネットワーク構造を使用します。各ラウンドは128ビットブロックを2つの64ビット半分(LとR)に分割して処理します。
鍵スケジュール
256ビットマスター鍵は、f関数と定数DELTA(黄金比から派生)を使用して48個のサブキー(SK[0]からSK[47])に拡張されます。128ビットまたは192ビット鍵の場合、拡張前に鍵材料が複製されて256ビット鍵レジスタを満たします。
ラウンド関数
各ラウンドは次を適用:L' = R + SK[3i]、R' = L XOR f(R + SK[3i], SK[3i+1], SK[3i+2])。加算は2^64を法とします。
f関数
コアf関数f(A, B)は4つの層で構成されます:
- KP(鍵制御置換):Bの制御ビットに基づいてAからビットを選択
- Sa(Sボックス層a):2種類の8つの並列Sボックス参照(S1:13→8ビット、S2:11→8ビット)
- P(置換):8×8ビットインターリーブパターンを使用した64ビット置換
- Sb(Sボックス層b):Bからの追加鍵材料を使用した2回目の8つのSボックス参照
Sボックス
S1は8192エントリ(13ビット入力→8ビット出力)、S2は2048エントリ(11ビット入力→8ビット出力)を持ちます。両方ともそれぞれGF(2^13)とGF(2^11)での立方演算を使用して計算され、強い非線形性のための特定の生成多項式を使用します。
復号処理
復号は同じ構造を使用しますが、サブキーを逆順(SK[47]からSK[0])で適用し、加算の代わりに減算を使用します。
アルゴリズム比較
| アルゴリズム | キー長 | ブロックサイズ | セキュリティ | 速度 |
|---|---|---|---|---|
| LOKI97 | 128/192/256 bits | 128 bits | 良好 | 中程度 |
| AES | 128/192/256 bits | 128 bits | 優秀 | 高速 |
| Serpent | 128/192/256 bits | 128 bits | 優秀 | 中程度 |
| DES | 56 bits | 64 bits | 弱い | 高速 |
セキュリティに関する考慮事項
- LOKI97の完全16ラウンドに対する実用的攻撃は発表されていません。GF(2¹³) S-box設計はLOKI89で露呈した弱点を修正して差分・線形解読法に対する証明可能な耐性を持ちます。
- 128ビットブロックにより64ビット前身のSweet32誕生日攻撃が排除。LOKI97での衝突は約2⁶⁴ブロック(~148 EB)が必要で、実用上問題なし。
- AES評価でLOKI97が敗退した理由はセキュリティではなく効率性。RijndaelやTwofishより遅いソフトウェア性能が理由で、暗号学的弱点は指摘されていません。
- 新システムはAES-128-GCMまたはAES-256-GCMを使用してください。LOKI97は既存のLOKI97暗号化データの読み取りや学術目的に適しています。
使用例
- 暗号解析研究:GF(2¹³) S-box設計と自己参照鍵スケジュールは代数的暗号設計とAES評価の歴史的研究に独自の価値を提供
- オーストラリア政府・防衛遺産互換:1990年代後半にLOKI97で構築されたシステムのデータ読み取りや移行に必要
- AES候補比較研究:Serpent/Twofish/RC6/MARSと共にNIST第1ラウンドAES候補を比較研究
- 非AESコンプライアンス:AES以外のアルゴリズムを要求する規制環境でのLOKI97使用