nonce 【ノンス】 ナンス / number used once
例えば、インターネットを通じてサーバが接続を求めるクライアントの身元を確かめるために認証を行うような場合、パスワードをそのまま送ると攻撃者に傍受される危険があるため、ハッシュ関数によりハッシュ化して送信することがある。
攻撃者は通信を傍受してもハッシュ値しか得ることができず、パスワードを割り出すことはできないが、パスワードのみからハッシュ値を作成する方式だと毎回同じハッシュ値を送信するため、攻撃者はパスワード自体が分からなくても傍受したハッシュ値を応答すればクライアントになりすますことができてしまう。このような攻撃手法を「リプレイ攻撃」(反射攻撃)という。
これを防ぐため、認証開始時にまずサーバがその場でランダムに生成したnonceをクライアントに送り、クライアントはパスワードとnonceを連結した文字列からハッシュ値を得るようにする。サーバ側でも同様の処理を行えば正しいパスワードから生成されたハッシュか確かめることができ、パスワードが同じでもクライアントが送信するハッシュを毎回変更することができる。
攻撃者がnonceとハッシュのやり取りを傍受できたとしても、傍受したハッシュは次回の認証に使い回すことはできず、パスワードが分からなければサーバが新たに発行したnonceに対応するハッシュも作り出すことができない。クライアント側がnonceを生成し、ハッシュとともに送信する方式や、サーバとクライアントの双方のnonceを併用するシステムもある。
(2021.10.29更新)