ソルトとノンスの違いについてのメモ

ソルトとノンスの違いについて。

ソルト (salt) とは

主にパスワードをハッシュ化する際に付与されるランダムな値のこと。パスワードにランダムな値を付与してハッシュ化することによって、辞書攻撃等のパスワード・クラッキングを防止したり、複数のユーザーで同一のパスワードを使用できるようにする。

ノンス (nonce) とは

主にクライアント - サーバー間の通信においてサーバーが生成するランダムな値のこと。ノンスを利用する通信の例としてダイジェスト認証がある。ダイジェスト認証では、サーバーはクライアントにノンスを送り、クライアントはユーザー名やパスワードなどの認証情報にノンスを加えてハッシュ化し、サーバーに送る。サーバーは送られたハッシュを検証し、問題が無ければリクエストされたコンテンツを返す。(詳細な流れはリンクを参照)
このように認証情報にノンスを加えることで、使い回し (再生攻撃) を阻止する。例えば攻撃者がクライアント - サーバー間の通信を盗聴して認証用のハッシュを手に入れたとしても、サーバーと新規の通信を行う際は別のノンスが生成されるので、攻撃者が持つ古いノンスを元に生成した認証用のハッシュは使用できない。

参考
結城 浩 著 暗号技術入門 第3版 (SBクリエイティブ株式会社発行) P.217, 303
McGraw-Hill Education発行 Hacking Exposed 7: Network Security Secrets & Solutions, Seventh Edition P.279

Leave a Reply

Your email address will not be published. Required fields are marked *