認証付き暗号の鍵利用上限について

認証付き暗号 "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