RFC 10032: The AEGIS Authenticated Encryption Algorithmsの仕様と構造を読み解く

ネットワーク・RFCカテゴリを表すパンダのイラスト ネットワーク・RFC

本記事はAIを利用して作成した技術解説・実装例です。掲載するコードや手順は一次情報を基に構成していますが、筆者による実機での動作確認は行っていません。環境やバージョンによって動作が異なる場合があります。 、RFC 10032で規定されている高速な認証付き暗号(AEAD)アルゴリズム「AEGIS」ファミリーについて、公式の仕様書に基づき、その構成要素や処理の仕組みを安全かつ実用的に整理します。AEGIS-128LやAEGIS-256などの各バリアントが持つ特徴、内部状態の更新方法、そしてメッセージの暗号化・復号プロセスを詳しく確認します。


1. AEGISファミリーの概要と位置づけ

AEGISは、CAESARコンペティションにおいて高パフォーマンス用途向けに選出されたAEADアルゴリズムのファミリーです。Crypto Forum Research Group(CFRG)の成果物として、RFC 10032に情報提供目的(Informational)としてまとめられています。

AES-GCMなどの既存の構成と比較して、AES命令を搭載したCPU上で優れたパフォーマンスを発揮するほか、AES命令を使用しないソフトウェア実装でも高速に動作する特性を持っています。また、AEGIS-256やAEGIS-256Xなどでは、ランダムなnonceを実用的な制限なしに安全に選択できる点も特徴です。

一次情報では、以下の主要なバリアントが規定されています。

  • AEGIS-128L: 128ビット鍵、128ビットnonce、1024ビット状態(8個の128ビットブロック)、128または256ビットの認証タグを持ち、256ビットの入力ブロックを処理する。

  • AEGIS-256: 256ビット鍵、256ビットnonce、768ビット状態(6個の128ビットブロック)、128または256ビットの認証タグを持ち、128ビットの入力ブロックを処理する。

  • AEGIS-128X: AEGIS-128Lをベースにし、大規模なベクトルレジスタとベクトルAES命令を持つCPUに特化したモード。

  • AEGIS-256X: AEGIS-256をベースにし、大規模なベクトルレジスタとベクトルAES命令を持つCPUに特化したモード。

すべてのバリアントは逆関数を持たない(inverse-free)構造であり、AESの暗号化ラウンド関数(AESRound)を組み合わせて構築されています。


2. プリミティブと共通定義

RFC 10032では、アルゴリズムの仕様を記述するために、いくつかの基本的な演算子や関数が定義されています。

  • {}: 空のビット配列

  • |x|: $x$ のビット長

  • a ^ b: ビット単位の排他的論理和(XOR)

  • a & b: ビット単位の論理積(AND)

  • a || b: 連結

  • LE64(x): 符号なし64ビット整数 $x$ のリトルエンディアンエンコーディング

  • Zeros(n): すべて0の $n$ ビット配列

  • ZeroPad(x, n): 長さが $n$ ビットの倍数になるようにゼロパディングを追加する関数

  • AESRound(in, rk): SubBytesShiftRowsMixColumnsAddRoundKey を組み合わせた単一のAESラウンド関数

また、定数ブロックとして、16バイトのヘキサデシマル値から構成される C0 および C1 が定義されています。


3. AEGIS-128Lの構造と内部関数

AEGIS-128Lは、1024ビットの状態を保持し、8つの128ビットブロック ${S_0, \dots, S_7}$ によって構成されます。ここでは主要な内部関数の役割を整理します。

flowchart TD
    Init["Init(key, nonce)"] --> Absorb["Absorb(ai) <br/> 関連データの吸収"]
    Absorb --> EncDec["Enc(xi) / Dec(ci) <br/> ブロックの暗号化・復号"]
    EncDec --> Finalize["Finalize(ad_len, msg_len) <br/> 認証タグ生成"]

初期化関数(Init)

Init(key, nonce) は、与えられた keynonce を用いて初期状態 ${S_0, \dots, S_7}$ を構築します。鍵とnonceのXORや定数ブロック C0C1 を初期状態に配置した後、Update 関数を10回繰り返して攪拌を行います。

状態更新関数(Update)

Update(M0, M1) は、AEGIS-128Lのコアとなる状態更新関数です。2つの128ビット値(またはブロック)を受け取り、AESラウンド関数を適用しながら8つの状態ブロック ${S_0, \dots, S_7}$ を順次更新します。

暗号化と復号(Enc / Dec)

Encrypt および Decrypt プロセスでは、パディングされた関連データ(associated data)を Absorb 関数で順次吸収した後、メッセージブロック単位で暗号化(Enc)または復号(Dec)を行います。最後尾の不完全なブロックに対しては DecPartial が適用されます。

タグ生成関数(Finalize)

Finalize(ad_len_bits, msg_len_bits) は、関連データとメッセージの長さを組み込んでタグを計算します。タグ長が128ビットの場合と256ビットの場合で出力形式が変わり、データの改ざん検知に使用されます。


4. セキュリティ上の特性と設計上の注意点

RFC 10032では、従来のAEADスキーム(AES-GCMなど)で指摘されていた問題点に対する耐性や、AEGIS特有のセキュリティ上の利点が説明されています。

  1. パーティションオラクル攻撃への耐性: AES-GCMなどの一部の方式では、複数の異なる鍵で正常に復号できる暗号文を攻撃者が生成できる場合があり、パスワード探索などの効率化に利用されることがあります。一方、AEGISにおいて異なる鍵やnonceのペアを見つけ出す困難さはタグサイズに依存し、128ビットタグや256ビットタグによって十分なセキュリティが確保されます。

  2. 状態漏洩の影響軽減: AESベースの多くの構築とは異なり、内部状態の一部が漏洩した場合でも、鍵や過去の状態が直接漏洩しない構造になっています。

  3. エフェメラル鍵の保護: AEGISの鍵は初期化関数の実行後には保持する必要がなく、鍵スケジュールも存在しません。これにより、データ暗号化・復号の前にメモリからエフェメラル鍵を消去することができ、コールドブート攻撃のリスクを軽減します。

  4. Nonce再利用の禁止: セキュリティ上の必須事項として、同一の鍵に対してnonceを再利用してはなりません。nonceの再利用は内部状態の回復を許してしまうため、厳格な管理が求められます。


5. AEGIS-256の仕様差分

AEGIS-256は、より大きなセキュリティマージンを求める用途向けに設計されたバリアントです。AEGIS-128Lとの主な違いは以下の通りです。

  • 状態サイズ: 768ビット(6個の128ビットブロック ${S_0, \dots, S_5}$)

  • 鍵長およびNonce長: 32バイト(256ビット)

  • 入力ブロックサイズ: 128ビット

パラメータや利用上の制約(RFC 5116に準拠したP_MAXやA_MAXなど)の枠組みは共通しつつも、内部のブロック長や状態の配列サイズが異なるため、実装時は対象とするアルゴリズムの仕様に厳密に従う必要があります。


6. まとめ

本記事では、RFC 10032で規定されているAEGIS認証付き暗号アルゴリズムの仕様と構造について、一次情報に基づき整理しました。

  • 主なポイント:

    • AEGISファミリーは高パフォーマンス用途向けに設計された逆関数を持たないAESベースのAEADアルゴリズムである。

    • AEGIS-128L(1024ビット状態)とAEGIS-256(768ビット状態)をはじめとする複数のバリアントが存在する。

    • 鍵スケジュールが存在せず、初期化後に鍵を即座に消去可能なため、コールドブート攻撃対策に寄与する。

    • 同一鍵におけるnonceの再利用は厳禁であり、安全な乱数生成または管理が必要不可欠である。

    • 本記事の内容はすべて公式の規格文書に基づく調査・解説であり、実機での動作確認は行っていない。


参考情報

文書情報

記事タイトル
RFC 10032: The AEGIS Authenticated Encryption Algorithmsの仕様と構造を読み解く
作成日
更新日
Source URL
https://papanda925.com/?p=17179

ライセンス: 本記事のうち、当サイトが権利を有する本文・自作図表は、特記なき限り CC BY 4.0 で利用できます。生成AIを活用して作成・編集した内容を含みます。コードについて、別途ライセンス表示またはリンク先GitHubリポジトリのライセンスがある場合は、その条件を優先します。引用・第三者資料・画像・商標等は本ライセンスの対象外です。 利用ポリシー

タイトルとURLをコピーしました