Search

JP-2026514751-A - セキュアネットワークアドレス

JP2026514751AJP 2026514751 AJP2026514751 AJP 2026514751AJP-2026514751-A

Abstract

ネットワークのためのネットワークアドレスを生成するコンピュータ実装方法であって、前記方法は、アドレス生成器によって実行され、サブネットプレフィックスに基づいて署名を生成するステップと、インタフェース識別子を生成するステップであって、前記インタフェース識別子はハッシュ値に基づき、前記ハッシュ値は少なくとも前記署名及び衝突カウント値のハッシュに基づく、ステップと、前記サブネットプレフィックス及び前記インタフェース識別子に基づいて前記ネットワークアドレスを生成するステップと、を含む方法。

Inventors

  • デュクロー,マチュー

Assignees

  • エヌチェーン ライセンシング アーゲー

Dates

Publication Date
20260513
Application Date
20240328
Priority Date
20230418

Claims (19)

  1. ネットワークのためのネットワークアドレスを生成するコンピュータ実装方法であって、前記方法は、アドレス生成器によって実行され、 サブネットプレフィックスに基づいて署名を生成するステップと、 インタフェース識別子を生成するステップであって、前記インタフェース識別子はハッシュ値に基づき、前記ハッシュ値は少なくとも前記署名及び衝突カウント値のハッシュに基づく、ステップと、 前記サブネットプレフィックス及び前記インタフェース識別子に基づいて前記ネットワークアドレスを生成するステップと、 を含む方法。
  2. 前記署名を生成するステップは、ハッシュされたときに、所定数の先頭ゼロを含むハッシュ値をもたらす署名を生成するステップを含む、請求項1に記載の方法。
  3. 前記署名を生成するステップは、前記所定数の先頭ゼロを含む前記ハッシュ値への前記署名のハッシュ化をもたらす秘密鍵を生成するステップを含む、請求項2に記載の方法。
  4. 前記秘密鍵を生成するステップは、初期秘密鍵から開始して、前記所定数の先頭ゼロを含む前記ハッシュ値への前記署名のハッシュ化をもたらす前記秘密鍵を生成するまで、1つ以上の各々の追加の秘密鍵を通して反復することを含む、請求項3に記載の方法。
  5. 各々の追加の秘密鍵は、前の各々の秘密鍵に基づく、請求項4に記載の方法。
  6. 前記インタフェース識別子を生成するステップは、セキュリティパラメータを前記ハッシュ値に符号化するステップ、及び/又は前記ハッシュ値の1つ以上のビットをゼロ値として設定するステップを含む、請求項1に記載の方法。
  7. 前記ネットワークアドレスは、IPv6アドレスである、請求項1に記載の方法。
  8. 前記ネットワークアドレスは、1つ以上のパーティに利用可能である、請求項1に記載の方法。
  9. 前記1つ以上のパーティは、前記ネットワークアドレスを検証するよう構成されるアドレス検証器を含む、請求項8に記載の方法。
  10. 前記署名を前記アドレス検証器に利用可能にするステップ、を含む請求項9に記載の方法。
  11. ネットワークのためのネットワークアドレスを検証するコンピュータ実装方法であって、前記方法は、アドレス検証器によって実行され、 候補ネットワークアドレス、ターゲット公開鍵、候補衝突カウント値、及び候補署名を取得するステップであって、前記候補ネットワークアドレスは、サブネットプレフィックス及びインタフェース識別子を含む、ステップと、 前記ターゲット公開鍵を使用して前記候補署名を検証するステップと、 ハッシュ値に基づいて候補インタフェース識別子を生成するステップであって、前記ハッシュ値は、少なくとも前記候補署名及び前記候補衝突カウント値のハッシュに基づいて生成される、ステップと、 前記候補インタフェース識別子がターゲットインタフェース識別子に対応することを検証するステップと、 を含む方法。
  12. 前記候補衝突カウント値が値の所定のセットのうちの1つに等しいことを検証するステップ、を含む請求項11に記載の方法。
  13. 少なくとも前記候補署名のハッシュに基づいて候補ハッシュ値を生成するステップと、 前記候補ハッシュ値が所定数の先頭ゼロを含むことを検証するステップと、 を含む請求項11に記載の方法。
  14. 前記取得するステップは、前記候補ネットワークアドレスを生成するように構成されたアドレス生成器から、前記候補ネットワークアドレス、前記ターゲット公開鍵、候補サブネットプレフィックス、及び前記候補署名、のうちの1つ以上を受信するステップを含む、請求項11に記載の方法。
  15. 前記ネットワークアドレスを検証することに応答して、前記ネットワークアドレスにアドレス指定された前記ネットワークを介してデータを送信するステップ、を含む請求項11に記載の方法。
  16. コンピュータ機器であって、 1つ以上のメモリユニットを含むメモリと、 1つ以上の処理ユニットを含む処理機器と、 を含み、 前記メモリは、前記処理機器上で実行するよう構成されるコードを格納し、前記コードは前記処理機器上で実行すると請求項1に記載の方法を実行するよう構成される、コンピュータ機器。
  17. コンピュータ機器であって、 1つ以上のメモリユニットを含むメモリと、 1つ以上の処理ユニットを含む処理機器と、 を含み、 前記メモリは、前記処理機器上で実行するよう構成されるコードを格納し、前記コードは前記処理機器上で実行すると請求項11に記載の方法を実行するよう構成される、コンピュータ機器。
  18. コンピュータ可読記憶装置上に具現化され、1つ以上のプロセッサ上で実行すると請求項1に記載の方法を実行するよう構成される、コンピュータプログラム。
  19. コンピュータ可読記憶装置上に具現化され、1つ以上のプロセッサ上で実行すると請求項11に記載の方法を実行するよう構成される、コンピュータプログラム。

Description

本開示は、ネットワークアドレス、例えばIPv6アドレスなどのIPアドレスの生成に関する。 ノードがサブネットに参加し、それら自体のIPv6アドレスをローカルに生成することを可能にするために、暗号生成アドレス(Cryptographically Generated Address (CGA))がセキュア近隣発見(SEcure Neighbor Discovery (SEN)プロトコルの一部として導入された。アドレスは、暗号一方向ハッシュ関数を使用してノードの公開鍵にバインドされる。CGAは、ノードが、いかなるセキュリティインフラストラクチャにも依存することなく、それらがアドバタイズされたIPv6アドレスの正当な所有者であることを証明するための安全な方法を提供する。その目的は、近隣発見プロトコル(Neighbor Discovery Protocol (NDP))などのプロトコルが受けるスプーフィング及びサービス拒否(Denial-of-Service (DoS))攻撃を防止することである。 Bos et al., 2009, “Analysis and Optimization of Cryptographically Generated Addresses”, Information Security (p.17-32), Springer Berlin Heidelbergは、CGAの完全な分析を提示し、その脆弱性の一部を強調している。その結果、これらの脆弱性を解決するために、CGA++と呼ばれる新しい技術が提案された。この技術は、主にCGAに基づいており、デジタル署名を導入して、アドレス検証プロセスに直接認証を追加する。 CGA++におけるデジタル署名の導入は、基本のCGA技術のセキュリティを著しく低下させる。この問題を軽減するために、本開示は、CGA++によって提供される利点を保持しながら、そのセキュリティを大幅に改善する技術のセット(本願明細書では、拡張CGA++と呼ばれる)を提供する。これは、アドレス生成中又はアドレス検証中に余分な複雑さを導入することなく行われる。 本願明細書で開示される一態様によれば、ネットワークのためのネットワークアドレスを生成するコンピュータ実装方法であって、前記方法は、アドレス生成器によって実行され、 サブネットプレフィックスに基づいて署名を生成するステップと、 インタフェース識別子を生成するステップであって、前記インタフェース識別子はハッシュ値に基づき、前記ハッシュ値は少なくとも前記署名及び衝突カウント値のハッシュに基づく、ステップと、 前記サブネットプレフィックス及び前記インタフェース識別子に基づいて前記ネットワークアドレスを生成するステップと、 を含む方法が提供される。 本願明細書で開示される別の態様によれば、ネットワークのためのネットワークアドレスを検証するコンピュータ実装方法であって、前記方法は、アドレス検証器によって実行され、 候補ネットワークアドレス、ターゲット公開鍵、候補衝突カウント値、及び候補署名を取得するステップであって、前記候補ネットワークアドレスは、サブネットプレフィックス及びインタフェース識別子を含む、ステップと、 前記ターゲット公開鍵を使用して前記候補署名を検証するステップと、 ハッシュ値に基づいて候補インタフェース識別子を生成するステップであって、前記ハッシュ値は、少なくとも前記候補署名及び前記候補衝突カウント値のハッシュに基づいて生成される、ステップと、 前記候補インタフェース識別子が前記ターゲットインタフェース識別子に対応することを検証するステップと、 を含む方法が提供される。 本開示の実施形態は、一般にネットワークアドレスを生成及び検証するために使用することができ、IPv6アドレスなどの特定のタイプのネットワークアドレスを生成及び検証することのみに限定されないことに留意されたい。 本開示の実施形態の理解を助け、そのような実施形態がどのように実施され得るかを示すために、例としてのみ、以下の添付の図面を参照する。 IPv6アドレスのフォーマットを概略的に示す。 CGA生成アルゴリズムのフローを概略的に示す。 CGA++生成アルゴリズムのフローを概略的に示す。 ネットワークアドレスを生成し、検証するためのシステムを概略的に示す。 CGA++生成アルゴリズムのフローを概略的に示す。 代替の拡張CGA++生成アルゴリズムのフローを概略的に示す。 1.関連する暗号の背景 1.1 暗号生成アドレス(Cryptographically Generated Addresses (CGA)) IPv6アドレスは128ビットのアドレスであり、左端の64ビットがサブネットプレフィックスを形成し、右端の64ビットがインタフェース識別子を形成する。サブネットプレフィックスは、インターネットトポロジにおけるホストの位置を決定するために使用され、インタフェース識別子は、サブネット内のホストのアイデンティティとして使用される。図1は、IPv6アドレスフォーマットを示す。 暗号生成アドレス(CGA)は、公開鍵及び追加の補助パラメータに暗号ハッシュ関数を適用することによってインタフェース識別子が生成されるIPv6アドレスである。ホストは、関連する秘密鍵を使用してメッセージに署名することによって、通信しているIPv6アドレスの所有権を証明することができる。アドレス所有権の検証は、署名を検証し、公開鍵とアドレスとの間のバインディングを再計算することによって、任意のセキュリティインフラストラクチャとは独立して実行することができる。 CGAは、SENDプロトコルにおいて、なりすまし及びDoS攻撃を防止するために使用される。ローカルネットワーク内の攻撃者がルータ広告メッセージを偽装し、その結果、ある正当なホストに宛てられたパケットが他のリンク層アドレスにリダイレクトされる場合に、偽装攻撃が発生する。DoS攻撃では、攻撃者は、侵入ホストによって行われるあらゆるDAD試行に応答することによって、重複アドレス検出(Duplicate Address Detection (DAD))プロトコルを中断する。このように、新しい正当なホストはアドレスを得ることができない。CGAは、アドレス所有権を証明する方法をホストに与えることによって、これらの攻撃を軽減するように設計された。 技術の進歩に伴い、64ビットのインタフェース識別子では、なりすまし攻撃からCGAを保護するのに十分ではないことが急速に認識された。CGAでは、攻撃者が、ターゲットアドレスをもたらす別の有効な公開/秘密鍵を総当たり攻撃で攻撃しようとするときに、なりすまし攻撃が発生する。これは、ターゲットアドレスに正しくバインドする公開鍵を提示することによって、攻撃者にそれ自体を別のホストとして誤って表す能力を与える。この攻撃を軽減するために、CGAは、新しいアドレスの生成にハッシュ拡張技術を追加した。この技術は、パラメータ化可能なセキュリティパラメータにその難易度が依存するPoWのようなパズルを解くことをホストに要求する。この技術は、アドレス生成となりすまし攻撃の両方のコストを同じ要因で増加させるが、アドレス使用と検証のコストを維持する。 各CGAは、表1に示すCGAパラメータデータ構造と呼ばれる補助パラメータセットに関連付けられる。 表1:CGAパラメータデータ構造 modifier(変更子)は、CGA生成中に、ハッシュ拡張技術を実施し、アドレスにランダム性を追加することによってプライバシーを強化するために使用される。collisionCountは、値0、1、又は2のみを有することができる。これは、DADによって検出されたアドレス衝突から回復するために、CGA生成中にインクリメントされる。pubKeyは、インターネットX.509認証プロファイルで定義されたSubjectPublicKeyInfoのDER符号化ASN.1構造としての公開鍵である。extensionFieldsは、追加のデータ項目に使用できる任意的な可変長フィールドであり、デフォルトでは、長さ0を有する。これは、デフォルトでは、長さ0を有する。 CGAは、インタフェース識別子の左端の3ビットに符号化された3ビットのセキュリティパラメータsecも有する。このパラメータは、なりすまし攻撃に対するCGAの強度を決定する。これは、0(最低のセキュリティ)から7(最高のセキュリティ)までの値を有することができる。 CGA生成アルゴリズムは、CGAパラメータデータ構造の一部に対して2つのハッシュ値を計算することを含む。Hash1は、CGAパラメータデータ構造に対して計算されたハッシュダイジェストの左端の64ビットを含む。Hash2は、サブネットプレフィックス及び0に設定された衝突カウントを有するCGAパラメータデータ構造に対して計算されたハッシュダイジェストの左端の112ビットを含む。 図2は、CGA生成アルゴリズムを示す。インタフェース識別子のビットには、左側のビット0から始まる番号を付ける。上部は、ハッシュ拡張技術に対応する。これは、ホストが、Hash2の左端の16×sec個のビットがゼロに等しくなるまでmodifier値を反復することによって暗号パズルを解くことを必要とする。なお、sec=0の場合は、この部分はスキップされる。アドレスのインタフェース識別子は、Hash1の左端の64ビットを取り込み、ビット6(u「ユニバーサル、universal」)及び7(g「個別/グループ、individual/group」)をゼロに設定し、左端の3ビットにsecパラメータを符号化することによって、Hash1から導出される。CGAを使用する場合、uビット及びgビットは無視される。それらを0に設定することは、任意の取り決めである。 Hash1への入力としてサブネットプレフィックスを含むことは、異なるサブネットにおいて、異なるインタフェース識別子が同じ公開鍵から生成されることを意味する。したがって、攻撃者は、同じインタフェース識別子及び異なるサブネットプレフィックスを有するすべてのCGAを一度に総当たり攻撃することはできない。 Hash2の入力としてサブネットプレフィックスを含まないことの利点は、あるサブネットから別のサブネットに移動するモバイルホストが、古いmodifier値を再利用して新しいアドレスを生成することを可能にすることである。しかしながら、modifier値を再利用することは、オブザーバが2つのアドレスを互いにリンクすることをより容易にし得る。これはまた、攻撃者が、任意のサブネットプレフィックスについてネットワーク内のランダムなホストのアドレスを装うために、時間とメモリのトレードオフ攻撃を構築することを可能にする。 CGA検証アルゴリズムは、入力としてアドレス及びCGAパラメータデータ構造を受け取り、以下のように動作する: 1.collisionCountが0、1、又は2に等しいことをチェックする; 2.subnetPrefixがアドレスのサブネットプレフィックスに等しいことをチェックする; 3.Hash1を計算し、それがアドレスのインタフェース識別子に等しいことをチェックする。左端の3ビットとu及びgビットの違いは無視される; 4.Hash2を計算し、結果として得られるハッシュ値の左端の16×sec個のビットがゼロであることをチェックする。 検証が成功した場合、pubKeyとアドレスとの間のバインディングが検証される。検証アルゴリズム