nonceとは? わかりやすく解説

ノンス

(nonce から転送)

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2026/06/11 07:32 UTC 版)

クライアント側とサーバ側の両方でノンスを生成する、認証での通信例。

ノンス: nonceナンスとも)は、暗号通信で用いられる、使い捨てのランダムな値のことである[1]。「Number Used Once(一度だけ使われる数値)」の略語である。ノンスはたいてい、認証の過程で使われ、リプレイ攻撃を行えないようにする働きを担っている。具体例として、HTTPDigest認証では、パスワードMD5ダイジェストを計算する過程でノンスが使われている。ノンスはサーバが401 Unauthorizedを返すごとに違っているので、リプレイ攻撃はほとんど不可能となる。

次に、インターネット上で買い物をするような例を考える。ノンスを使わない場合、攻撃者が暗号化された注文データを手に入れれば、それを再度送信することで、暗号を解読せずとも注文を繰り返すことができてしまう。ここで注文データの中に、一度ごとに使い捨てとするノンスを加えることで、複数回の注文を繰り返してもそれぞれデータとして異なるようになる。同じノンスで送られた注文データを不正なものとして無視することで、前述のような攻撃は成立しなくなる。ノンスの中にはタイムスタンプを使うことで時間的な順序を担保するような用法もあるが、この場合は両側での時刻同期が必須となる。クライアント側がノンス(cnonceと呼ばれる)を生成するプロトコルも、Digest認証などいくつか存在する。

ストリーム暗号でも、同じ鍵で暗号化の結果をメッセージごとに異なったものとするためにノンスが使われることがある。この場合、メッセージの番号を使うことも多い。同様の目的で使われる初期化ベクトルも、見方を変えればノンスの一種とも考えられる。「一度きり」であることを担保するための方法として、できるだけ粒度の細かいタイムスタンプから生成する、あるいは充分なエントロピーを持った乱数で生成して、重複する可能性を現実的でないほどに下げるというような手法がとられる。ノンスには擬似乱数性、すなわち予測不可能性が必要だとする議論もある。[2]


プルーフ・オブ・ワークシステムにおいては、暗号学的ハッシュ関数の出力を変えて特定の条件を満たさせるためにノンスが使われる。条件を満たすようなハッシュ値を生成するのは、それを検証するよりずっと困難なことであり、通常とは違う側に処理の負荷をかけることができる。このようなシステムの具体例としてビットコインがあり、ブロックチェーンに対するハッシュの頭に続くべきゼロの数を調節することで、難易度を調節している。ハッシュが暗号学的なものである以上、特定の出力が得られるような入力を任意に生成することはできず、ひたすらノンスを生成して総当たりで探すほかに方法はない。ビットコインのマイニングとは、条件に当てはまるノンスを探す作業のことであり、一番乗りできればビットコインが得られる。

関連項目

脚注

  1. 結城浩『暗号技術入門 秘密の国のアリス』ソフトバンククリエイティブ、2008年12月、204頁。ISBN 978-4-7973-5099-9
  2. Nonce-Based Symmetric Encryption

外部リンク



英和和英テキスト翻訳

英語⇒日本語日本語⇒英語

辞書ショートカット

すべての辞書の索引

「nonce」の関連用語

nonceのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



nonceのページの著作権

   
デジタル大辞泉デジタル大辞泉
(C)Shogakukan Inc.
株式会社 小学館
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアのノンス (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。

©2026 GRAS Group, Inc.RSS