ノンス
ノンス(英: nonce、ナンスとも)は、暗号通信で用いられる、使い捨てのランダムな値のことである。ノンスはたいてい、認証の過程で使われ、リプレイ攻撃を行えないようにする働きを担っている。具体例として、HTTPのDigest認証では、パスワードのMD5ダイジェストを計算する過程でノンスが使われている。ノンスはサーバが401 Unauthorizedを返すごとに違っているので、リプレイ攻撃はほとんど不可能となる。
次に、インターネット上で買い物をするような例を考える。ノンスを使わない場合、攻撃者が暗号化された注文データを手に入れれば、それを再度送信することで、暗号を解読せずとも注文を繰り返すことができてしまう。ここで注文データの中に、一度ごとに使い捨てとするノンスを加えることで、複数回の注文を繰り返してもそれぞれデータとして異なるようになる。同じノンスで送られた注文データを不正なものとして無視することで、前述のような攻撃は成立しなくなる。ノンスの中にはタイムスタンプを使うことで時間的な順序を担保するような用法もあるが、この場合は両側での時刻同期が必須となる。クライアント側がノンス(cnonceと呼ばれる)を生成するプロトコルも、Digest認証などいくつか存在する。
ストリーム暗号でも、同じ鍵で暗号化の結果をメッセージごとに異なったものとするためにノンスが使われることがある。