暗号化ノンスの定義と意義とは?

通信プロトコルで使用される乱数または擬似乱数である暗号化ノンスは、通信をプライベートに保つのに役立ちます。これはランダムに生成される任意の数値であり、一度しか使用できず、多くの場合にタイムスタンプも含みます。

暗号化ノンスは、反射攻撃を防ぐのに役立ち、古い通信が攻撃者によって再利用されないようにします。暗号化ノンスは、認証プロトコル、暗号化ハッシュ関数、初期化ベクトルで使用されます。

暗号化ノンスとは?

ライブデータの送信サービスで使用される暗号化ノンスは、ランダムに生成される数値であり、通信をプライベートに保ち、反射攻撃から保護するように設計されています。暗号化で、ノンスは「一度だけ使用される数値」という意味であり、この任意の数値は暗号通信で1回だけ使用されます。

多くの場合、ノンスはタイムスタンプを含みます。つまり、特定の期間に限って有効であるため、一回限り使用できます。ノンスが時変型を含まない場合には、以前に生成された値を繰り返す確率が非常に低いことを確認するのに十分なランダムビットで生成する必要があります。

ノンスの例

ノンスを使用して古い通信が再利用されないように確保することで、認証プロトコルで反射攻撃を防止できます。ノンスは、受信したメッセージが意図した送信者によって送信されたものであり、攻撃者によって傍受され再送信されたものではないことを証明するのに役立ちます。ノンスを最適化するには、シーケンス部分とランダム部分の両方が必要です。

以下は、ノンスの使用例です。

  • 認証プロトコル:ノンスを使用することで、HTTPダイジェストアクセス認証でパスワードのMD5ダイジェストを計算できます。401認証チャレンジ応答コードが発行されるたびに、ノンスは異なります。これは、オンラインでの小売取引が正規なものであることを確認するために特に有益です。

認証にノンスを使用すると、古い通信が再処理され再利用されることがないように確保できます。たとえば、eコマースサイトでは、クライアントが購入するたびにノンスを追加することで、攻撃者が最初の注文を使用し、クライアントの情報を含む追加の注文を行うことを防止できます。

  • 非対称暗号化:ノンス値は公開鍵暗号でも使用できます。たとえば、SSL/TLS(Transport Layer Security/Secure Sockets Layer)ハンドシェイクでは、2つの一意のノンス値が生成され交換されます。クライアントとサーバーの両方が、秘密鍵と公開鍵のペアで検証される一意のノンス値を生成します。
  • デジタル署名:ノンスを使用して、電子署名ツールでデジタル署名を作成、比較、検証できます。
  • アイデンティティ管理:SSO(シングルサインオン)、2FA(二要素認証)、アカウント回復などのアイデンティティ管理機能で、ノンスを使用できます。
  • ハッシュ:PoW(Proof of Work)システムでは、ノンスを使用して暗号化ハッシュ関数への入力を変化させることで、任意の条件を希望する難易度で満たすことができます。
  • 初期化:データの暗号化に使用される初期化ベクトルは、ランダムまたは疑似ランダムであることが多く、セッション中に一度だけ使用されるため、ノンスです。
  • 暗号通貨:ノンスを使用して、Bitcoinブロックチェーンに接続する暗号化ハッシュを作成できます。Bitcoinマイニングにより、ハッシュされる値にノンスを追加して、ハッシュアルゴリズムの出力を変更できます。

SSOとは?

暗号化ノンスのメリット

ノンスを使用すると、送信される通信が本物であることを確保できます。反射攻撃では古い通信が再利用されますが、こうした行為を防止できます。

反射攻撃では、送受信の当事者間の通信を攻撃者が傍受し、不正アクセスを実行するために捕捉したメッセージを利用します。たとえば、ユーザーがサーバーにリクエストを送信すると、ハッカーがこのリクエストを傍受し、ユーザーになりすまして同じリクエストをサーバーに再送信する可能性があります。このとき、ユーザーのブラウザからデータが送信されているように見せかけます。

しかし、ノンスを使用する場合、サーバーは許可されないメッセージを受け入れないため、通信が傍受されても再利用できません。ノンスは1回だけ使用されるため、古い通信の再利用は無効になり、ブロックされます。ノンスのランダム性を(場合によっては、さらにタイムスタンプを追加して)使用することで、アプリケーションがユーザーを検証し、攻撃者が正当なクライアントになりすますことが困難になります。

こちらの情報も併せてご活用ください

米国国立標準技術研究所(NIST)は、ノンスやベストプラクティス、それらの使用法に関するリソースを公開しています。Bitcoinマイニングでのゴールデンノンスは、目標値よりも小さいハッシュ値を指します。Blockchain Councilは、ブロックチェーンとノンスの適用方法に関する豊富な情報を有しています。

参考文献

Replay Attack(National Institute of Standards and Technology[NIST])

Nonce(National Institute of Standards and Technology[NIST])

What Is a Golden Nonce and What Is Its Usage in Blockchain?(2022年、Blockchain Council)