XAES-256-GCM の紹介
- XAES-256-GCM は、256ビット鍵と192ビットノンスを使用する認証付き暗号アルゴリズム(AEAD)
- 主な目標:
- ランダムに生成されたノンスを安全にサポート
- FIPS 140 準拠
- 一般的な暗号化ライブラリで容易に実装可能
XAES-256-GCM の設計目標
- 大きなノンスを使用することで、無制限のメッセージに対して安全にランダム生成が可能
- FIPS 140 準拠により、さまざまな環境で利用可能
- シンプルな実装によってユーザーの負担を軽減
XAES-256-GCM の動作原理
- AES-256-GCM をベースにした拡張ノンス構造を使用
- 入力鍵とノンスを使って派生鍵を計算
- 3回の AES-256 呼び出しでメッセージを処理
実装と最適化
- Go のリファレンス実装は 100 行未満のコードで構成
- 標準ライブラリの
crypto/cipher と crypto/aes のみを使用
- NIST SP 800-108r1 KDF と NIST AES-256-GCM AEAD を用いて説明可能
サードパーティ実装と互換性
- .NET 8+、pyca/cryptography、Web Cryptography API にサードパーティ実装が存在
- FIPS 140 準拠のためラウンド数は変更不可
代替案とテストベクター
- AES-GCM-SIV など、さまざまな代替案が存在
- 主要なコードパスに対するテストベクターを含む
要約
- XAES-256-GCM は、安全で準拠性があり、相互運用可能な AEAD として設計されている
- XChaCha20Poly1305 および AES-GCM-SIV を補完する役割
- Go 標準ライブラリへの追加が期待される
GN⁺ の見解
- XAES-256-GCM は、大きなノンスを使って安全性を高めている点が注目に値する
- FIPS 140 準拠により、さまざまな環境で利用可能
- Go のような言語で容易に実装でき、開発者にとって有用
- AES-GCM-SIV のような代替案も検討に値する
- 新しい技術を導入する際は、性能と互換性を慎重に検討する必要がある
1件のコメント
Hacker Newsのコメント
設計が非常に巧妙: CMACベースで、低レベルのプリミティブがない場合でも AES-CBC を使って鍵を導出できる
Filippo の仕事は素晴らしい: ランダム nonce を使う場合、約 2^32 メッセージごとに鍵をローテーションしなければならない問題を解決している
この機能が数年前に暗号化ファイルシステムを書いたときに存在していてほしかった
この機能が、アーカイブファイル暗号化向けの FIPS 準拠版 age[1] に使われてほしい
非暗号学者からの質問: なぜ 192 ビット nonce を使い、256 ビットを使わないのか気になる
(2⁸⁰ メッセージで衝突リスク 2⁻³²)