認証付き暗号 "Authenticated Encryption with Associated Data (AEAD)" の利用上の制限について、「Usage Limits on AEAD Algorithms」というドキュメントが公開されている。
このドキュメントでは機密性と完全性を一定以上に保つために、一つの鍵の利用上限についてまとめています。
「RFC 8446 TLS1.3」を読んだことがあれば、その仕様の中で「5.5. Limits on Key Usage」の章で、一つの鍵でAES-GCMでレコードを暗号化していい上限値を規定しているのをご存知かもしれません。また、同様の記述がQUICの仕様(URL)にも記述されています。(上限に達する前に鍵更新が行われます)
このように暗号の解析についてはいくつかの論文に分散しているため、プロトコルの標準化を行うために各仕様から参照できるように一つのドキュメントとしてまとめようということになっています。
ドキュメントは鍵について、2者間での利用ケースについて説明したSingle-User AEAD Limitsと、複数ユーザでの利用ケースについてMulti-User AEAD Limitsを説明しています。
ここでは、Single-User AEAD Limitsの上限について紹介します
前提
以下の変数を導入します
- n: ブロックごとのbit数
- k: AEAD鍵のbit数
- t: 認証タグのbit数
- l: 各メッセージのブロック数
- s: 全てのメッセージの平文のブロック数
- q: ユーザの暗号化の試行回数
- v: 攻撃者の偽造試行回数
- p: 攻撃者の攻撃確率
また、機密性及び完全性の特性を破る確率の増加率を優位性として定義します。
- Confidentiality advantage (CA)
- Integrity advantage (IA)
TLS1.3ではCAを2^(-60)、IAを2^(-57)になるように制限しています。
AEAD_AES_128_GCM、AEAD_AES_256_GCM
AEAD_AES_128_GCM、AEAD_AES_256_GCMにおける上限について紹介する
CAを下記に抑えるために
CA <= ((s + q + 1)^2) / 2^129
ある仮定のもと、暗号化の上限回数は下記となる
q <= (p^(1/2) * 2^(129/2) - 1) / (l + 1)
IAを下記に抑えるために
IA <= 2 * (v * (l + 1)) / 2^128
下記の上限回数となる
v <= (p * 2^127) / (l + 1)
その他
紹介しないが、同様に次の暗号アルゴリズムの上限回数がドキュメントでは紹介されている
- AEAD_CHACHA20_POLY1305
- AEAD_AES_128_CCM
- AEAD_AES_128_CCM_8
参照文献
このドキュメントが参照している文献は以下の通りである。暗号の分析の詳細が知りたい場合は参照するのが良さそう
- Limits on Authenticated Encryption Use in TLS
- On the Security of CTR + CBC-MAC
- A Security Analysis of the Composition of ChaCha20 and Poly1305
- Breaking and Repairing GCM Security Proofs
- Public-key Encryption in a Multi-User Setting: Security Proofs and Improvements
- Nonce-Disrespecting Adversaries: Practical Forgery Attacks on GCM in TLS
- The Multi-user Security of GCM, Revisited: Tight Bounds for Nonce Randomization