3.1. Requirements on Nonce Generation (ノンス生成に関する要件)
3.1. Requirements on Nonce Generation (ノンス生成に関する要件)
セキュリティのために不可欠なのは, 鍵の任意の固定値について認証付き暗号化操作の各呼び出しに対して各ノンス値が異なるという要件を満たすようにノンスを構成することです。本節では, 異なるシナリオにおけるこの要件の帰結のいくつかに注意を喚起します。
単一の鍵を用いて暗号化を行う複数デバイスがある場合, それらのデバイスはノンスが一意であることを保証するよう調整しなければならない。これを行う単純な方法の 1 つは, セクション 3.2 で説明するように, 各デバイスごとに異なるフィールドを含むノンス形式を用いることです。完全なノンスが暗号文とともに送信または格納され復号側が利用できる限り, 暗号化側と復号側の間でノンス形式の詳細を調整する必要はない, という点に注意してください。完全なノンスが復号側に利用できない場合, 復号側はノンスを再構成するためにその構造を知る必要がある。アプリケーションは, 暗号エンジンがノンスの選択にある程度の自由度を持てるようにすべきである。たとえば, ノンスはカウンタと, 暗号化側が設定するが受信側では処理されないフィールドの両方を含んでもよい。この自由度により, 複数の暗号化デバイスがより容易に協調してノンスの一意性を保証できます。
秘密鍵が長期間 (たとえば複数回の再起動にわたって) 用いられる場合, ノンスは不揮発性記憶に格納する必要がある。そのような場合, ノンスのチェックポイント化, すなわち予期しない障害の際に暗号化を再開するのに必要な状態情報を提供するために現在のノンス値を格納することが不可欠である。ノンス値が繰り返し用いられないことを高い確信で保証する単純な方法の 1 つは, 暗号化過程がストレージ過程から, 後続のノンス値がすでに格納されたことを示す確認を受け取るまで待つことである。この方法は著しい遅延を加える可能性があるため, シーケンス上で数値的に先行するノンス値を格納することが望ましい場合がある。例として, ノンス 100 を格納した後, ノンス 1 から 99 を暗号化に用いることができる。ノンス 1 から 99 を用いている同じ時刻にノンス値 200 を格納し, 以下同様にできる。
ノンスの再利用に関する多くの問題は, ノンスの調整が困難な状況で鍵を変更することで避けられます。
各 AEAD アルゴリズムは, ノンス値の不用意な再利用から生じるセキュリティの劣化が何であるかを記述すべきである。