コンテンツへスキップ
uencoder

Nonce

ノンス(nonce、number used once)は暗号化で一度だけ使われる値である。IVと似るが、ランダム性よりも一意性を重視し、ストリーム暗号やAEADで広く使われる。

目的

同じ鍵での暗号化ごとに異なるキーストリームを生成させ、two-time pad攻撃を防止する。

メカニズム

ノンスは鍵の有効期間内で一意(再利用禁止)でなければならない。カウンタ(決定論的)またはランダム値でよい。CTR/GCM/ChaCha20はノンスからキーストリームを生成し、GCMでは96ビットノンスが最も一般的である。ノンス再利用は壊滅的なセキュリティ障害を招く。

ユースケース

  • AES-GCMによるメッセージ暗号化
  • ChaCha20-Poly1305による暗号化
  • TLSレコードのシーケンス番号
  • WireGuardのノンスカウンタ

例

  • 入力
    nonce=0,1,2... (counter)
    Output
    a unique nonce per message

    Deterministic and unique

よくあるエラー

Nonce reuse replays the keystream and breaks authentication
Use a monotonic counter or a long enough random nonce

関連用語

関連ツール

References