(58)【調査した分野】(Int.Cl.,DB名)
前記ルート鍵材料が二変数多項式を含み、構成サーバによってネットワークデバイスのための前記ローカル鍵材料を計算することが、前記ネットワークデバイス識別番号を特定の前記多項式に代入することによって一変数多項式を取得することを含む、請求項1に記載の暗号システム。
前記複数の構成サーバが全て同一の公開グローバルリダクション整数のために構成され、秘密リダクション整数と前記公開グローバルリダクション整数との差が2のべき乗の倍数であり、任意選択的に、前記計算ユニットが、前記公開グローバルリダクション整数を法として前記一変数多項式セットの合計結果をリダクションする、請求項3に記載の暗号システム。
前記電子記憶装置が更に公開グローバルリダクション整数を記憶し、前記共有鍵ユニットが前記公開グローバルリダクション整数を法として前記組み合わせローカル鍵材料をリダクションし、前記複数のネットワークデバイスの全てのネットワークデバイスが同一の公開グローバルリダクション整数を記憶している、請求項6に記載の第1のネットワークデバイス。
前記共有鍵ユニットが、前記第2のネットワークデバイス識別番号と、前記第1のネットワークデバイスの前記複数のローカル鍵材料のうち第1のローカル鍵材料と、から第1の中間共有鍵を導出すると共に、前記第2のネットワークデバイス識別番号と、前記第1のネットワークデバイスの前記複数のローカル鍵材料のうち第2のローカル鍵材料と、から第2の中間共有鍵を導出し、前記共有鍵が前記第1及び第2の中間鍵を組み合わせることによって導出される、請求項6に記載の第1のネットワークデバイス。
前記複数のローカル鍵材料が複数の関連付けられた構成サーバ識別子と共に前記第1のネットワークデバイスに記憶され、構成サーバ識別子が、どの構成サーバから関連付けられたローカル鍵材料が前記第1のネットワークデバイスで受信されたかを示し、前記第1のネットワークデバイスが、複数の構成サーバ識別子の中のサブセットについて、前記第1及び第2のネットワークデバイスが双方とも前記サブセットの構成サーバに関連付けられたローカル鍵材料を有するように前記第2のネットワークデバイスと合意する構成ユニットを備える、請求項6乃至8のいずれか1項に記載の第1のネットワークデバイス。
前記第1のネットワークデバイスの前記構成ユニットが、前記複数の構成サーバ識別子を前記第2のネットワークデバイスに提供し、前記第2のネットワークデバイスから前記サブセットを受信し、及び/又は、
前記第1のネットワークデバイスの前記構成ユニットが、前記第2のネットワークデバイスから複数の構成サーバ識別子を受信し、前記受信した複数の構成サーバ識別子と前記第1のネットワークデバイスの前記複数の構成サーバ識別子との共通部分を決定し、前記共通部分から前記サブセットを選択し、前記サブセットを前記第2のネットワークデバイスに提供する、請求項9に記載の第1のネットワークデバイス。
【発明を実施するための形態】
【0031】
本発明は多くの異なる形態の実施形態が可能であるが、1つ以上の具体的な実施形態が図面に示され明細書に詳しく記載される。これは、本開示が本発明の原理の例示として見なされるものであり、図示され記載される具体的な実施形態に本発明を限定することは意図されないという了解のもとに行われる。以下で、理解を得るため、動作中の回路について記載する。しかしながら、各要素は、それらが実行するものとして記載される機能を実行するように設けられることは明らかである。
【0032】
図1aは、暗号鍵共有システム100の実施形態の一例をブロック図として概略的に示す。
【0033】
鍵共有システム100は、鍵共有のため複数のネットワークデバイス1を構成するように設けられた複数の構成サーバ2を備えている。
【0034】
図1aは、構成サーバ200、201、及び202を示す。少なくとも2つの構成サーバがある。
【0035】
各構成サーバは、鍵材料取得器、ネットワークデバイスマネージャ、計算ユニット、及びネットワークデバイスマネージャを備えている。明確さのため、
図1aは鍵材料取得器及び計算ユニットのみを示す。
図1aは、構成サーバ200のための鍵材料取得器210及び計算ユニット220、構成サーバ201のための鍵材料取得器211及び計算ユニット223、構成サーバ202のための鍵材料取得器212及び計算ユニット225を示す。計算ユニット220、223、及び225は同一の設計を共有し得る。
【0036】
鍵材料取得器は、構成サーバに特定的なルート鍵材料を電子形式で取得するように設けられている。すなわち、異なる構成サーバは異なるルート鍵材料を有する。例えば鍵材料取得器は、ルート鍵材料を発生するか又はルート鍵材料を受信することができる。一実施形態では、鍵材料取得器はルート鍵材料を記憶する記憶装置を備え、この記憶装置からルート鍵材料を検索する。一実施形態では、ルート鍵材料は1つ以上の秘密二変数多項式(f
i(,))を含む。記憶装置は、電子メモリ、磁気記憶装置、光学記憶装置等とすればよい。
【0037】
ネットワークデバイスマネージャは、複数のネットワークデバイス1のうち構成対象のネットワークデバイスのネットワークデバイス識別番号(A)を電子形式で取得するように設けられている。
【0038】
計算ユニット220は、ルート鍵材料及びネットワークデバイス識別番号(A)から、ネットワークデバイスのローカル鍵材料を計算するように設けられている。ローカル鍵材料は鍵材料セットとも呼ばれる。
【0039】
ある実施形態において、計算ユニットは、1つ以上の非公開の二変数多項式(f
i(A,))にネットワークデバイス識別番号を代入して、ローカル鍵材料が導出される1つ以上の一変数多項式を取得するように設けられている。ローカル鍵材料は一変数多項式を含む。
【0040】
ネットワークデバイスマネージャ230は更に、計算したローカル鍵材料を構成対象のネットワークデバイスに提供するように設けられている。これを提供する1つの方法は送信することである。例えばネットワークデバイスマネージャ230は、計算したローカル鍵材料を構成対象のネットワークデバイスに送信するように設ければよい。
【0041】
構成サーバは、例えばウェブサーバとして実装され得る。ネットワークデバイスマネージャは、例えばLANネットワーク又はインターネット等のコンピュータ−ネットワーク接続を用いて実装され得る。構成サーバは、必ずしもコンピュータネットワーク接続を使用するものではなく、構成のもとで直接ネットワークデバイスに接続してもよい。後者は例えば、ネットワークデバイスの製造と共に用いるのに適している。システム100の単一の実施形態において、異なるタイプの構成サーバを組み合わせてもよい。ローカル鍵材料を構成サーバからネットワークデバイスへ転送するための接続は、
図1aにおいて、複数の構成サーバ2から複数のネットワークデバイス1への矢印として図示している。
【0042】
鍵共有システム100は、鍵共有のため複数のネットワークデバイス1を構成するように設けられた複数の構成サーバ2を備えている。
【0043】
図1aは、ネットワークデバイス300、350、及び360を示す。少なくとも2つのネットワークデバイスがあるが、典型的な実施形態では、ネットワークデバイスの数は構成サーバの数よりもはるかに多い。例えばある実施形態では、構成サーバの少なくとも50倍の数のネットワークデバイスがある。
【0044】
一実施形態に従った複数のデバイスは、それらのペアの間で容易に鍵を確立することができ、これによって任意の2つのデバイス間で安全な通信を可能とする。従って、これらのデバイスをネットワークデバイスと呼ぶ。ある実施形態では、2つのデバイス間の通信は無線通信を用いる。例えば有線通信のような他の形態の通信も可能である。
【0045】
各ネットワークデバイスは、第1のネットワークデバイス識別番号を記憶するように設けられた電子記憶装置を備えている。
図1aは、電子記憶装置320を備えた第1のネットワークデバイス300、電子記憶装置321を備えた第2のネットワークデバイス350、電子記憶装置322を備えた第3のネットワークデバイス360を示す。複数のネットワークデバイス間で導出できる異なる鍵の数が充分に多いことを保証するため、識別番号は複数のネットワークデバイス内のあるネットワークデバイスを一意に識別することが好ましいが、後者は必須ではない。例えば識別番号は、複数のデバイス内でデバイスをアドレスするように機能し得る。一方、例えば鍵合意のため識別番号を予約する等、独立したアドレス機構を使用してもよい。
【0046】
ネットワークデバイスは更に、受信器、通信ユニット、及び共有鍵ユニット330を備えている。明確さのため、
図1aは電子記憶装置及び計算ユニットのみを示す。
【0047】
受信器は、複数の構成サーバのうち少なくとも2つの異なる構成サーバから複数のローカル鍵材料を受信するように設けられている。受信器はネットワーク接続ユニットとすればよく、例えばWi−Fi(登録商標)のような無線接続ユニット、又は例えばイーサネット(登録商標)のような有線接続である。受信器は、例えば製造中にローカル鍵材料をデバイスにロードするための専用の接続としてもよい。
【0048】
ネットワークデバイスは、異なる構成サーバからローカル鍵材料を受信する。ネットワークデバイスは、異なるタイプの構成サーバからローカル鍵材料を受信することができる。例えば、製造中にネットワークデバイスは第1のローカル鍵材料を受信し、後に例えばコンピュータネットワーク接続を介して追加のローカル鍵材料を受信し得る。
【0049】
ネットワークデバイスは、それらのローカル鍵材料を受信した後、別のネットワークデバイスと鍵を共有するために構成サーバによる介入を必要としない。複数のネットワークデバイスのうち別のネットワークデバイス、例えば第2のネットワークデバイスと鍵を共有するため、ネットワークデバイスの通信ユニット及び共有鍵ユニットがネットワークデバイスによって用いられる。通信ユニットは、複数のネットワークデバイスのうち第2のネットワークデバイスの第2のネットワークデバイス識別番号(B)を取得すると共に、第1のネットワークデバイス識別番号を第2のネットワークデバイスに提供するように設けられている。共有鍵ユニット330は、第2のネットワークデバイス識別番号と、第1のネットワークデバイスの複数のローカル鍵材料のうち少なくとも2つと、から共有鍵を導出するように設けられている。第2のネットワークデバイスは同様の計算を実行するが、それ自身の複数のローカル鍵材料及び第1のデバイスの識別番号を用いる。両者における計算の結果が共有鍵である。
【0050】
2つのネットワークデバイス、例えば第1のネットワークデバイス300と第2のネットワークデバイス350との間の通信について知っている者は、過度に大きいリソースを用いることなしに共有鍵を取得することはできない。デバイス360でさえ、デバイス300と350との間で共有される鍵を導出できない。
【0051】
例えば鍵合意プロトコル等、システム100において使用され得る鍵共有のための複数のアルゴリズムがある。これらの2つの例について以下で説明する。
【0052】
2つのネットワークデバイスが、例えばこれら2つのデバイス間の通信を暗号化及び/又は認証するために、例えば対称鍵のような鍵を共有する必要がある場合、各々は、第2のネットワークデバイスの識別番号と、第1のネットワークデバイスの複数のローカル鍵材料のうち少なくとも2つと、から共有鍵を導出する。共有鍵の導出に用いられるローカル鍵材料は、同じルート鍵材料から発生する。
【0053】
図1aに示す例では、第1のネットワークデバイス300は、構成サーバ200及び201からの、すなわちそれらの各ルート鍵材料から導出されたローカル鍵材料を受信し、第2のネットワークデバイス350は、構成サーバ200、201、及び202からのローカル鍵材料を受信し、第3のネットワークデバイス360は、構成サーバ201及び202からの、すなわちそれらの各ルート鍵材料から導出されたローカル鍵材料を受信する。
【0054】
例えば、第1及び第2のネットワークデバイス300及び350は、同じ2つの構成サーバ200及び201からローカル鍵材料を受信している。これらのローカル鍵材料を用いて、これらのネットワークデバイスは共有する鍵を導出することができる。
【0055】
複数のローカル鍵材料を用いて共有鍵を導出することは、多くの手法で実施され得る。
【0056】
2つ以上のローカル鍵材料から共有鍵を導出する第1の手法は、複数のローカル鍵材料のうち少なくとも2つを組み合わせて単一の組み合わせローカル鍵材料を得るように設けられた共有鍵ユニット330を使用する。共有鍵は、単一の組み合わせローカル鍵材料及び受信したネットワークデバイス識別番号から導出され得る。後者は、当技術分野の鍵共有アルゴリズム、例えば以下で更に説明する2つの例のうち1つを用い得る。例えば、2つ以上のローカル鍵材料を加算することでそれらを組み合わせればよい。
【0057】
組み合わせるローカル鍵材料の加算は、例えば、ルート鍵材料が二変数多項式を含み、ローカル鍵材料がこの二変数多項式から導出された一変数多項式を含む鍵合意に適している。一変数多項式を含むローカル鍵材料の加算は、一変数多項式を加算すること、例えば同じべき指数を有する単項式の係数を加算することを含み得る。
【0058】
組み合わせローカル鍵材料は、鍵共有の間に又は構成フェーズの間等に導出され得る。例えばネットワークデバイスは、例えば2又は3又はそれ以上といった特定数のローカル鍵材料のため構成することができる。ネットワークデバイスがその数のローカル鍵材料を受信した場合、例えば鍵共有が必要となる前、例えば第2のネットワークデバイス識別番号が受信される前に、組み合わせが行われる。この動作によって、攻撃者が個々のローカル鍵材料にアクセスを得ることが回避されるので、セキュリティが向上する。しかしながら、組み合わせは、例えば第2のネットワークデバイス識別番号の受信後のように、鍵共有の間に行ってもよい。
【0059】
ローカル鍵材料の組み合わせは、使用するローカル鍵材料の数が増えるので、ネットワークデバイスの結託攻撃に対するセキュリティが向上するという追加の利点を有する。
【0060】
ローカル鍵材料を組み合わせた後、それらは後に除去してもよい。受信した識別子と、第1のネットワークデバイスの少なくとも2つのローカル鍵材料を含む組み合わせ鍵材料と、から共有鍵が導出される。
【0061】
2つ以上のローカル鍵材料から共有鍵を導出する第2の手法は、第2のネットワークデバイス識別番号と、第1のネットワークデバイスの複数のローカル鍵材料のうち第1のローカル鍵材料と、から第1の中間共有鍵を導出するように設けられると共に、第2のネットワークデバイス識別番号と、第1のネットワークデバイスの複数のローカル鍵材料のうち第2のローカル鍵材料と、から第2の中間共有鍵を導出するように設けられた共有鍵ユニット330を使用する。第1及び第2の中間鍵を組み合わせることによって共有鍵が導出される。まず中間鍵を導出し、それらを組み合わせて共有鍵を形成することは、例えばDiffie−Hellmanに基づくもの等、広範囲の鍵合意プロトコルと両立する。
【0062】
中間鍵は、原則として単独で用いられて通信を保護することができる暗号共有鍵であり得る。一方で中間鍵は、例えば共有されないという理由のため、単独での使用に適さない場合もある。例えば、中間鍵の導出中、第1及び第2のネットワークデバイスのような双方のパーティについて中間鍵が等しい可能性が高いことを保証する鍵共有アルゴリズムの部分、例えばモジュロ演算や調停(reconciliation)等が省略されている場合がある。省略された部分は、第1及び第2の中間鍵を組み合わせるため実行され得る。
【0063】
中間鍵の組み合わせは、それらを加算することによっても実行できる。加算、又は基礎にある鍵合意機構と両立する他の何らかの数学的操作は、例えば組み合わせ鍵に対して何らかの操作が実行される場合に適している。加算はある数を法として実行できる。加算、XOR、乗算等の基本算術演算の代わりに、鍵導出関数を用いて中間鍵から共有鍵を導出することも可能である。鍵導出は、入力として少なくとも第1及び第2の中間鍵を使用し、出力として共有鍵又はその何らかの先行物を生成する。例えば、第1及び第2の中間鍵の連結に適用されるsha−256等の暗号ハッシュ関数を鍵導出関数として用いればよい。基礎にある鍵合意機構と両立しない暗号鍵導出関数は、例えば第1及び第2のネットワークデバイスのような双方のパーティについて共有される、例えば等しい中間鍵を組み合わせるのに適している。
【0064】
ある実施形態では、複数のネットワークデバイスの全てが複数の構成サーバの全てからローカル鍵材料を受信する。例えばそのような実施形態は、厳密に2つの構成サーバが存在するシステムに適している。全ての構成サーバからローカル鍵材料を受信すると、異なる構成サーバから得られるセキュリティへの寄与が最大になる。例えば3、4、又はそれ以上の数の構成サーバがある場合、共有鍵ユニット330は、同じ数のローカル鍵材料から共有鍵を導出するように設けることができる。
【0065】
後者は必須ではないが、異なるネットワークデバイスは、それぞれ異なる構成サーバから、場合によってはそれぞれ異なる数の構成サーバからローカル鍵材料を受信し得るので、全てのネットワークデバイスが同じ数のローカル鍵材料を有するわけではない。この実施形態では、ネットワークデバイスは、どのネットワークデバイスとの共有鍵をどのローカル鍵材料を使用して導出するか、例えばプリプログラムによって構成できる。ネットワークデバイスは、正しいローカル鍵材料を選択するように構成してもよい。
【0066】
ある実施形態において、複数のローカル鍵材料は、複数の関連付けられた構成サーバ識別子と共に第1のネットワークデバイスに記憶される。構成サーバ識別子は、どの構成サーバから関連付けられたローカル鍵材料が第1のネットワークデバイスで受信されたかを示す。各構成サーバは、複数の構成サーバの中で当該構成サーバを一意に識別する構成サーバ識別子に関連付けられている。ネットワークデバイスは、複数の構成サーバ識別子の中のサブセットについて、第1及び第2のネットワークデバイスが双方ともこのサブセットの構成サーバに関連付けられたローカル鍵材料を有するように第2のネットワークデバイスと合意するよう設けられた構成ユニットを備える。構成ユニットは、
図1aに単体として示されていない。構成ユニットは任意選択的である。
【0067】
図1bは電子記憶装置320の実施形態の一例を示す。記憶装置320は、第1のネットワークデバイス300の識別番号、第1の鍵材料セット370、すなわち第1のローカル鍵材料、及び第2の鍵材料セット380、すなわち第2のローカル鍵材料を記憶している。記憶装置320は、第1のローカル鍵材料に関連付けられた第1の構成サーバ識別子376、及び第2のローカル鍵材料に関連付けられた第2の構成サーバ識別子386も記憶している。例えば、第1の構成サーバ識別子376は構成サーバ200を識別し、第2の構成サーバ識別子386は構成サーバ201を識別することができる。
【0068】
図1aに戻ると、構成ユニットは、複数の構成サーバ識別子のサブセットに関して合意を達成するため、複数の手法で設けられ得る。
【0069】
例えば、第1のネットワークデバイスの構成ユニットは、複数の構成サーバ識別子を第2のネットワークデバイスに送信し、第2のネットワークデバイスからサブセットを受信するように設けられ得る。第1のネットワークデバイスが共に共有鍵を導出している第2のネットワークデバイスの構成は、第2のネットワークデバイスから複数の構成サーバ識別子を受信し、受信した複数の構成サーバ識別子と第1のネットワークデバイスの複数の構成サーバ識別子との共通部分を決定し、この共通部分からサブセットを選択し、このサブセットを第2のネットワークデバイスに送信するように設けられ得る。
【0070】
例えば第2のネットワークデバイス350は、構成サーバ200、201、及び202の構成識別子を第3のネットワークデバイス360に送信することができる。第3のネットワークデバイス360は、構成サーバ201及び202の構成サーバ識別子である、受信した複数の構成サーバ識別子とそれ自身、すなわち第3のネットワークデバイスの複数の構成サーバ識別子との共通部分を決定できる。この例では、共通部分は構成サーバ201及び202の構成識別子である。この共通部分から、第3のネットワークデバイス360はサブセットを選択する。得られたサブセットは第2のネットワークデバイス350に返信することができる。ネットワークデバイスは、それらの各通信ユニットを用いてメッセージを送信できる。
【0071】
共通部分からのサブセット選択は複数の手法で実行され得る。例えば、共通部分をサブセットとして選択することができる。これは、共有鍵へと組み合わされるローカル鍵材料の量を最大化し、これによってセキュリティが向上する。しかしながら、共通部分が大きい場合は、より選択を狭めることでオーバーヘッドを低減させることが好適であり得る。例えば一実施形態において、構成ユニットは、構成サーバ識別子の数が、例えば4又は5又はそれ以上である共通部分パラメータ以下である場合は、共通部分全体をサブセットとして選択すると共に、構成サーバ識別子の数が構成サーバ識別子の共通部分パラメータより大きい場合は、共通部分パラメータ数を選択するように設けられている。共通部分からの選択は、ランダムな選択によって、又は例えば構成サーバ識別子の第1の共通部分パラメータを使用することによって実行できる。共通部分パラメータは、予め決定されているか、又は例えば構成ユニットの構成可能セキュリティパラメータに応じて構成ユニットにより動的に決定され得る。
【0072】
図1aに示す例では、第1のネットワークデバイス300及び第3のネットワークデバイス360は、この場合は構成サーバ201である1つだけの共有構成サーバからのローカル鍵材料のみを有する。構成ユニットが用いられる場合、これは共通部分が決定される場合に検出され得る。この時点で、構成ユニットはエラーメッセージを生成し、少なくとも2つの同一構成サーバからのローカル鍵材料が利用できないので、このネットワークデバイスとの共有鍵の導出は不可能であると示すことができる。ある実施形態では、例えば単一のローカル鍵材料から導出される共有鍵を使用できるフォールバック機構を設けてもよい。後者は、セキュリティが低下したフォールバック状況を攻撃者によって強制できる可能性があるので、好適でない。しかしながらこれは、ある適用例では、通信の欠如に比べると好ましい場合がある。このフォールバックは、共通部分がない場合は不可能であるが、後者は、それらのネットワークデバイスが1つの構成サーバからの少なくとも1つのローカル鍵材料を有すると保証することによって回避され得る。例えば、全てのネットワークデバイスは、例えば製造中に少なくとも1つの特定の構成サーバからローカル鍵材料を受信できる。使用中にネットワークデバイスによって追加のローカル鍵材料を取得できる。このようにして、ネットワークデバイスの寿命中に共有鍵のセキュリティが向上する。更に、ローカル鍵材料の起点がますます不明瞭になるので、例えば構成サーバを危険にさらし得る強力な敵による攻撃がますます難しくなる。
【0073】
以下で、システム100と共に用いるのに適した2つの鍵共有アルゴリズムについて説明する。双方とも、構成サーバを危険にさらすことにより生じる単一障害点が排除されているので、セキュリティ向上の利点を有する。単一の構成サーバのルート鍵材料の漏洩は、全ての導出される共有鍵のセキュリティを直接損なうものではない。
【0074】
システム100において使用され得る第1の暗号鍵共有機構について説明する。構成サーバのルート鍵材料は単一の二変数多項式を含み得る。例えば、構成サーバiは二変数多項式R
i(x,y)を有する。ここで、二変数多項式の2つの入力はx及びyで示される。これらの変数は形式的変数であり、明確さのため後者は時として、例えばR
i(,)のように省略される。二変数多項式はある環において規定することができ、具体的にはある数を法とした、更に具体的には素数を法とした整数、例えばZpにおいて、規定され得る。
【0075】
構成サーバiが識別番号rのネットワークデバイスを構成する場合、構成サーバは環内で、例えばpを法として、Zpにおいて、R
i(r,x)を計算し、これにより一変数多項式を得る。ローカル鍵材料は一変数多項式を含む。
【0076】
上述のように、1つのネットワークデバイスは、全ての又はいくつかの構成サーバからローカル鍵材料を受信し得る。構成サーバは、例えば異なる二変数多項式のような異なるルート鍵材料を有するが、それらは全て計算のため同じ環を共有する。例えば、それらは全てpを法とした計算を行う。
【0077】
例えば第1のネットワークデバイス300等の第1のネットワークデバイスが、例えば第2のネットワークデバイス350等の第2のネットワークデバイスと共有する鍵を導出したい場合、これら2つのネットワークデバイスはネットワークデバイス識別子を交換する。例えば、第1のネットワークデバイスは識別子Aを第2のネットワークデバイスに送信し、第2のネットワークデバイスから識別子Bを受信する。
【0078】
以下では、明確さのため、これらのネットワークデバイスがサーバi=1及びi=2から、例えばサーバ200及び201からローカル鍵材料を受信すること、計算がpを法とすることを仮定する。しかしながら、本明細書に示す変数は必要に応じて変更を加えて適用される。第1のネットワークデバイスは2つの中間鍵R
1(A,B)及びR
2(A,B)を計算することができる。これら2つの中間鍵は各々、pを法としたリダクションを行い、このようにして2つの共有中間鍵が得られる。2つの共有中間鍵は、鍵導出関数を用いて単一の共有鍵へと組み合わせることができる。最初に中間鍵を加算し、次いでpを法としたリダクションを行うように、pを法としたリダクションを後回しにしてもよい。後者の結果は共有鍵として直接使用され得る。所望の場合、単一の入力を用いる鍵導出関数を使用し、例えばハッシュ関数の適用によって、鍵におけるエントロピを均等にすることができる。
【0079】
中間鍵を導出する代わりに、ネットワークデバイスはローカル鍵材料自体を組み合わせてもよい。例えば第1のネットワークデバイスは、好ましくはpを法として一変数多項式を加算し、SC(y)=R
1(A,y)+R
2(A,y)、単一の組み合わせローカル鍵材料SCを得ることができる。共有鍵を導出するため、ネットワークデバイスはここで、受信した識別番号における単一の組み合わせローカル鍵材料を直接評価することができる。
【0080】
図2及び
図3を参照して、システム100で使用され得る第2の暗号鍵共有機構について説明する。この鍵共有方法の実施形態を最初に数学的な用語で説明する。鍵共有方法は、以下で記載するようにデバイス内で、例えば鍵共有システム100等におけるネットワークデバイス300を構成するための構成サーバ200上で実装することができる。ネットワークデバイスをノード又はネットワークノードとも称する。
【0081】
この方法はセットアップフェーズと使用フェーズとを有する。セットアップフェーズは開始ステップ及び登録ステップを含み得る。開始ステップはネットワークデバイスを必要としない。
【0082】
開始ステップはシステムパラメータを選択する。開始ステップは信頼できるサードパーティ(TTP)によって実行され得る。システムパラメータは所与の入力と見なすことも可能である。その場合、信頼できるサードパーティはシステムパラメータを生成する必要はなく、開始ステップはスキップすることができる。例えば、信頼できるサードパーティはデバイス製造業者からシステムパラメータを受信してもよい。デバイス製造業者は、すでに開始ステップを実行してシステムパラメータを取得している場合がある。解説の便宜上、信頼できるサードパーティが開始ステップを実行するものと記載するが、これは必須ではないことに留意すべきである。構成サーバの1つが、信頼できるサードパーティとして、例えばシステムパラメータを選択し、それらを他の構成サーバに配信する追加機能を有してもよい。
【0083】
開始ステップ
インスタンスの使用フェーズにおいてデバイス間で共有されることになる鍵の所望の鍵長が選択される。この鍵長を「b」と称する。所望の識別番号長も選択される。後の登録ステップ中、各デバイスは識別番号長の識別番号に関連付けられることになる。識別番号長を「B」と称する。この番号長はビット単位で測定される。複数のインスタンスが並列に存在し、各インスタンスが共有鍵の導出を可能とすることができる。単一のインスタンスが存在する場合もある。各構成はそれぞれのインスタンスごとにルート鍵材料を取得する。各構成サーバは好ましくは同じ数のインスタンスを用いる。インスタンス数は1であってもよい。
【0084】
b≦Bであることが好ましいが、これは必須ではない。格子攻撃に対する耐性を高めるため、b<Bを選択してもよい。ある実施形態において、Bはbの倍数であり、例えばBは少なくとも2bであるか、又は推奨されるセキュリティレベルではBは少なくとも4bである。低セキュリティ適用例の典型的な値は、b=8、B=16である。高セキュリティでは、b=8、B=32がより良い。各インスタンスで、2つのパーティが共有鍵を導出することができる。共有鍵を組み合わせて、より大きな組み合わせ鍵を形成できる。使用されることになるセキュリティ適用例のために組み合わせ鍵が充分な長さであるように、インスタンスの数が選択される。
【0085】
Bに対してbの値を小さくすると、いわゆる結託攻撃に対するレジリエンスが増大する。結託攻撃において、攻撃者は、ターゲットのネットワークノードと複数の結託ネットワークノードとの間で用いられる共有鍵に関する情報を取得する。
【0086】
多くの場合、インスタンス数、鍵サイズ、及びサブ鍵長は、例えばシステム設計者によって予め決定され、信頼できるパーティに入力として与えられる。
【0087】
インスタンスパラメータ
次に、各インスタンスのパラメータが選択される。所望の次数が選択される。この次数は、特定の多項式の次数を制御する。次数は「α」と称され、これは少なくとも1である。αの実際的な選択は2である。より安全な適用例は、例えば3又は4又はより大きい値のような、より大きいαの値が使用され得る。単純な適用例では、α=1も可能である。α=1のケースは、いわゆる「隠れ数問題(hidden number problem)」に関連し、より大きい「α」の値は、拡張(extended)隠れ数問題に関連し、これらの事例が破られにくいことを保証する。α=1の値は、可能であるものの推奨されず、極めて低いセキュリティ適用例でのみ検討すべきである。低セキュリティの適用例では、α>2の値、例えばα=3が可能である。しかしながら、より高いセキュリティではα≧32が推奨され、例えばα=32である。
【0088】
多項式の数が選択される。多項式の数は「m」と称される。mの実際的な選択は2である。より安全な適用例では、例えば3又は4又はより大きい値のような、より大きいmの値が使用され得る。
【0089】
例えばリソース制約デバイスのような複雑性の低い適用例では、m=1を使用し得ることを注記しておく。m=1の値は、可能であるが推奨されず、低セキュリティ適用例でのみ検討すべきである。セキュリティパラメータα及びmの値が大きくなると、システムの複雑性が増し、従ってその扱いにくさが増す。より複雑なシステムは解析が難しくなり、従って暗号解析に対する耐性が高くなる。以下では、m≧2を仮定する。
【0090】
2
(α+1)B+b−1≦Nを満たす公開モジュラス(public modulus)Nが選択される。好ましくは、公開モジュラスNは、厳密に(α+1)B+bビットを有するように選択され、従ってN<2
(α+1)B+bである。例えば、Nはこの区間内でランダムに選択され得る。多くの場合、鍵長b、次数α、及び多項式の数mは、例えばシステム設計者によって予め決定され、信頼できるパーティに入力として与えられる。公開モジュラスも、例えばある基準における既定のものでもよいが、より典型的にはパラメータ生成中に選択されることになる。
【0091】
ある実施形態において、全ての構成サーバは、公開モジュラスN、共有鍵サイズb、識別子サイズB、及び次数αを含む同じパラメータを取得する。構成サーバは更に、秘密モジュラス(private modulus)及び秘密二変数多項式を必要とする。これらを信頼できるパーティによって選択して構成サーバに配信することも可能であり、この場合も構成サーバが後に危険にさらされることに対する保護を与えるが、信頼できるパーティに対する中央攻撃の可能性は残っている。
【0092】
ある実施形態において、各構成サーバの鍵材料取得器は、その構成サーバに特定的なルート鍵材料の少なくとも一部を生成するように設けられている。各構成サーバのルート鍵材料の重要部分は、秘密モジュラス及び対応する二変数多項式である。ある実施形態において、鍵材料取得器は、その構成サーバのため少なくとも秘密モジュラス及び二変数モジュラスを生成する。以下ではこれを仮定しているが、これが絶対に必須ではないことに留意すべきである。
【0093】
各構成サーバにおいて、m個の秘密モジュラスp
1、p
2...、p
mが選択される。モジュラスは正の整数である。ある実施形態において、選択された各数は以下の関係p
j=N−B
j2
bを満たす。ここでB
jはランダムなBビット整数である。すなわちB
j<2
Bである。より好ましくは、秘密モジュラスは識別子長Bに厳密に等しいビット数を有する。すなわち、2
B−1≦B
j<2
Bである。秘密モジュラスを第2の秘密セットと称する。
【0094】
m>1では、異なるモジュラスについてのモジュロ演算が、通常の数学的な意味では両立しないにもかかわらず組み合わされるので、システムはより複雑であり、従ってより安全である。この理由で、選択される秘密モジュラスp
jをペアワイズに別個になるように選択することが有利である。
【0095】
構成サーバを1つだけ用いた場合、m>1であることが推奨されるが、複数のローカル鍵材料を組み合わせることで、最終的な共有鍵とローカル鍵材料との間の関係(単一の組み合わせローカル鍵材料に組み合わせられるか否かにはかかわらず)は線形性が低くなる。ある実施形態では、m=1である。
【0096】
ある実施形態では、m≧1、α>1、p
j=N−B
j2
b、B
j<2
B、及び2
(α+1)B+b−1≦Nである。
【0097】
各構成サーバにおいて、次数α
jのm個の二変数多項式f
1、f
2、...、f
mが生成される。これを第1の秘密セットと称する。好ましくは、二変数多項式は対称である。これにより、全てのネットワークデバイスは他の各ネットワークデバイスと共有鍵に関して合意することができる。これらの二変数多項式は非対称に選択してもよい。後者の場合、デバイスは2つのグループに分割される。第1のグループは二変数多項式の第1の変数に代入することでローカル鍵材料を取得し、第2のグループは二変数多項式の第2の変数に代入することでローカル鍵材料を取得する。1つのグループ内のデバイスは他のグループ内のデバイスとのみ共有鍵に関して合意できる。
【0098】
全ての次数はα
j≦αを満たし、少なくとも1つのjについてα
j=αである。より良い選択は、次数αの各多項式を利用することである。α>1の値が推奨され、好ましくはより大きい値が用いられる。二変数多項式は2変数の多項式である。対称多項式fはf(x,y)=f(y,x)を満たす。各多項式f
jは、モジュロp
jを計算することで得られる整数モジュロp
jによって形成される有限環において評価される。整数モジュロp
jは、p
jの元を含む有限環を形成する。多項式f
jの係数は整数であり、モジュロp
j演算により定義される有限環内の元を表す。ある実施形態では、多項式f
jは0からp
j−1までの係数によって表される。二変数多項式は、例えばこれらの範囲内でランダムな係数を選択することによってランダムに選択され得る。
【0099】
これらの二変数多項式はシステムのルート鍵材料であるので、鍵共有のセキュリティはこれらに依存する。従って、好ましくは、例えば制御手順や改ざん防止デバイス等、それらを保護するための強力な措置が取られる。好ましくは、p
jに対応する値B
jを含めて、選択される整数p
1、p
2...、p
mも秘密に保持されるが、これは重要性が低い。これは、秘密に保持する必要のないN、b、B、m、α等のパラメータには当てはまらない。二変数多項式については、以下の形態でも記載される。(j=1、2、...、m)。
【数1】
この理由で、これらのパラメータが、例えば第1の構成サーバのような信頼できるサードパーティ(TTP)により選択され、他の構成サーバに配信されることが許容される。
【0100】
上述の実施形態は多様に変更することができる。公開及び秘密モジュラスに対する制約を多種多様に選択することで、一変数多項式の難読化が可能でありながら、ネットワークデバイスで得られる共有鍵が充分な頻度で相互に充分に近いまま維持されるようにすることができる。何をもって充分とするかは、用途、必要なセキュリティレベル、及びネットワークデバイスで利用可能な計算リソースに依存する。上述の実施形態は、多項式部分の生成時に実行されるモジュラ演算が、多項式部分を整数に対して加算する際に非線形に組み合わされるよう正の整数を組み合わせ、ネットワークデバイス上に記憶されるローカル鍵材料の非線形構造を作成する。N及びp
jについての上記の選択は、以下の特性を有する。すなわち、(i)Nのサイズは全てのネットワークデバイスについて固定されている。(ii)非線形効果は、デバイスに記憶される鍵材料を形成する係数に現れる。その特定の形態のため、共有される小さい鍵は、Nを法としたリダクションの後に2
bを法としたリダクションを行うことによって生成され得る。
【0101】
登録ステップ
登録ステップにおいて各ネットワークデバイスは、構成サーバのうち2つ以上から、鍵材料(KM)とも称するローカル鍵材料が割り当てられる。ローカル鍵材料は、秘密一変数鍵多項式を含む。ネットワークデバイスは、2つの構成サーバから2つのローカル鍵材料を取得したら、一実施形態に従ったシステムに加わることができる。しかしながら、ネットワークデバイスの寿命全体を通して、新しいローカル鍵材料がネットワークデバイスで受信され得る。ある実施形態では、ネットワークデバイスは、共有鍵を導出した後に追加のローカル鍵材料を受信する。
【0102】
鍵材料は、(複数のインスタンスが用いられる場合)各インスタンスのための鍵材料を含む。以下で、ネットワークデバイスに対してどのように1つのインスタンスの鍵材料が導出されるかを説明する。鍵材料の部分が異なるインスタンス間で共有され得るにもかかわらず、各インスタンスは、そのインスタンスに一意の鍵材料を有する。簡略化のため、そのローカル鍵材料が用いられる2つの構成サーバに1及び2と番号を付す。
【0103】
ネットワークデバイスは識別番号Aに関連付けられている。識別番号は、例えばTTPによってオンデマンドで割り当てるか、又はデバイス内にすでに記憶されていてもよく、例えば製造時にデバイス内に記憶され得る。AのビットサイズはBビットである。Aの生成は、多種多様に実行することができる。高いセキュリティでは、Aの下位ビットはランダムである。例えば、Aは乱数として選択され得る。Aは、例えば通し番号のような別の識別番号のハッシュとし、場合によっては切り捨ててBビットにすればよい。
【0104】
構成サーバ1は、以下のようにデバイスAの鍵材料セットを生成する。
【数2】
これは、第1の構成サーバに特定的なルート鍵材料、すなわち秘密リダクション整数p
1,j及び二変数多項式f
1,j(,)を用いる。これにより一変数多項式セットが得られ、第1の秘密セットのそれぞれ特定の多項式について、識別番号(A)が前記の特定の多項式に代入されf
i(A,x)、前記の特定の多項式に関連付けられたリダクション整数を法としたリダクションを実行する。得られた一変数多項式セットを合計する。この合計を一変数多項式の生成と組み合わせてもよい。は形式的変数である。同様のべき乗のxの係数を加算して、G
1,A(x)の係数を得る。鍵材料は非線形であることを注記しておく。表記<・・・>p
jは、括弧内の多項式の各係数のp
jを法としたリダクションを示す。
【0105】
以下のように、これに難読化数を加えることができる。
【数3】
ここで、KM
A,1(x)は構成サーバ1から受信された識別番号Aのデバイスの鍵材料である。換言すると、以下を有する。
【数4】
表記「ε
A,i」は、|ε
A,i|<2
(α+1−i)bであるようなランダムな整数であり、難読化数の一例である。ランダムな整数のいずれも正又は負であり得ることを注記しておく。乱数εはデバイスごとに再び生成される。従って、以下の項は次数αのXの多項式を表し、その係数長は次数が大きいほど短くなる。
【数5】
あるいは、より一般的であるが複雑な条件は、以下
【数6】
が小さい、例えば<2
α+1である。異なる有限環で混合を行う効果はセキュリティに最大の寄与を与え、このため難読化数の使用は任意選択的なものである。
【0106】
全ての他の加算は、普通の整数演算(natural integer arithmetic)、すなわち環Z内の演算を用いるか、又は(好ましくは)Nを法とした加算を用い得る。このため、一変数多項式
【数7】
の評価はそれぞれ、より小さいモジュラスp
jを法として実行されるが、これらのリダクション一変数多項式自体の合計は、好ましくはNを法として行われる。また、難読化多項式
【数8】
の加算も、普通の整数演算を用いて、又は好ましくはNを法として行えばよい。鍵材料は係数
【数9】
を含む。鍵材料は上述のように多項式として表すことができる。実際には、鍵材料は整数
【数10】
のリストとして、例えばアレイとして記憶され得る。デバイスAは数値N及びbも受信する。例えば係数を含むアレイの操作として、多項式の操作を実装してもよく、例えば全ての係数を所定の順序にリスト化することができる。多項式は他のデータ構造で実装してもよい。例えば、(次数、係数)ペアの集合を含む連想配列として(「マップ」としても知られる)、好ましくは集合内で各係数が最大で1度現れるようにする。デバイスに与えられる係数
【数11】
は、好ましくは0、1、...、N−1の範囲内にある。
【0107】
第2の鍵材料の生成は、第2の構成サーバにより、代わりに二変数多項式f
2,j及び秘密リダクション整数p
1,jを用いて、同様に進行する。
【0108】
使用フェーズ
いったん2つのデバイスが識別番号A及びBを有し、少なくとも2つの構成サーバからそれぞれの鍵材料を受信したら、これら2つのデバイスは2つの鍵材料を用いて1つの共有鍵を取得することができる。
【0109】
例えば、デバイスA及びBは、使用する一変数多項式を組み合わせる、この場合は加算することができる。これは効果的に値mを2倍にし、少なくとも2つの構成サーバがもはや単一の障害点でないという事実に加えて、著しいセキュリティ向上が得られる。一変数多項式の加算後、公開グローバルリダクション整数Nを法としたリダクションを適用できる。
【0110】
単一の組み合わせローカル鍵材料を用いて、デバイスAは以下のステップをインスタンスごとに実行して、その共有鍵を取得することができる。まず、デバイスAはデバイスBの識別番号Bを取得し、次いでAは以下を計算することにより共有鍵を生成する。上付き文字「c」は、組み合わせ鍵材料が用いられることを示す。
【数12】
【0111】
すなわちAは、整数多項式として見られる組み合わせ鍵材料を値Bについて評価する。鍵材料の評価の結果は整数である。次にデバイスAは評価の結果を、まず公開モジュラスNを法として、次いで鍵モジュラス2
bを法としてリダクションすることができる。この結果をAの中間鍵と称する。これは、0から2
b−1までの範囲内の整数である。その一部について、デバイスBは、自身の鍵材料を識別子Aについて評価し、その結果をNを法として、次いで2
bを法としてリダクションすることにより、AによるBの中間鍵を生成することができる。K
ABはK(A,B)の別の表記であることを注記しておく。
【0112】
ルート鍵材料における二変数多項式が対称である場合、Aの中間鍵及びAによるBの中間鍵は、必ずしも常にではないが多くの場合は等しい。整数p
1、p
2...、p
m、及び(任意選択的な)乱数εに対する特定の要件は、2の鍵長乗を法とした計算を行った鍵がしばしば等しく、ほとんど必ず相互に近いというものである。
【0113】
この鍵をK(A,B)とも称する。ここでAは、デバイスAのBビット識別子であり、すなわち0≦ξ<2
Bである。[デバイスBの識別子Bは、Bとも称する識別子長に無関係であることを注記しておく。例えば前者は128ビット数であり、後者は数128であり得る。]
【0114】
デバイスAが例えばデバイスBとの通信を暗号化するために生成するbビットの鍵K(A,B)は、デバイスBが例えばデバイスAとの通信を暗号化するために生成する鍵K(B,A)と常に等しいわけでない。しかしながら、これらの鍵の差は、以下の意味で限定されている。すなわち、K(B,A)=<K(A,B)+δN>
2bが成り立ち、ここでNは公開グローバルリダクション整数であり、<>
2bは2
bを法とした演算を示し、δは絶対値|δ|≦Δで限定される整数である。K(A,B)は中間鍵の一例であり、補正項の倍数、すなわちNの倍数を加算又は減算することにより、可能な共有鍵セットを定義する。倍数は、例えばΔのような上限以下であり、例えば−Δのような下限以上である。
【0115】
上限及び下限の値は、選択したパラメータに関して計算することができ、それらのパラメータに依存し得る。鍵材料のビットの半分をゼロに設定することで、この差について比較的シャープな範囲(bound)が得られる。この場合、Δ≦2m+2α+1である。ここで、mは混合多項式の数であり、αはその次数である。しかしながら他の実施形態では、K(A,B)及びK(B,A)の導出に従い、相違し得るビット数を把握することで、同様の範囲を得てもよい。係数をゼロに設定するという仮定がない場合は、範囲Δ≦2mである。
【0116】
このポイントで、パーティA及びBの変更された中間鍵は等しい可能性が極めて高い。A及びBが同じ鍵を取得した場合、AとBとの間で共有される対称鍵としてそれを用い得る。例えばこれは多種多様な暗号適用例のため使用可能であり、例えば、共有鍵を用いて暗号化及び/又は認証した1つ以上のメッセージを交換することができる。好ましくは、マスター鍵を更に保護するため、共有鍵に鍵導出アルゴリズムが適用される。例えばハッシュ関数を適用すればよい。
【0117】
パーティA及びBは、鍵調停データを送信することによって、変更後の同じ鍵を実際に取得したことを検証し得る。例えば、変更された鍵のハッシュを送信すること、又は所定のストリングの暗号を送信すること等によって。鍵調停データにより同一の共有鍵が取得されていないことが示されると、補正された鍵を変更して、受信された鍵調停データに一致させることができるので、第1のデバイス及び第2のデバイスは同一の共有鍵に対するアクセスを得る。変更は、その範囲に従って異なるδの値を試行することを含み得る。範囲は比較的小さいので、正しい補正項を見つけるための仕事量も実現可能である。もう1つの可能性は、中間鍵のある数の最下位ビットを調停データ内に含めることである。補正項はこれらのビットを複製することになり、調停の後これらのビットは廃棄される。
【0118】
組み合わせ鍵材料を用いる代わりに、システムは、各ローカル鍵材料から中間鍵を導出してもよい。中間鍵は別個に調停され、次いで単一の共有鍵へと組み合わせることができる。しかしながら、まずNを法として中間鍵を加算し、次いで2
bを法としてリダクションすることも可能である。すなわち、第1及び第2の中間鍵は共有鍵よりも長い。このように得られた共有鍵は、上記のように調停することができる。
【0119】
選択されたm個の秘密モジュラスp
1、p
2...、p
mは、好ましくはペアワイズで互いに素である。これらの数がペアワイズで互いに素である場合、モジュロ演算間の互換性の欠如が増す。ペアワイズで互いに素な数を取得するには、整数を順番に選択し、新しい整数ごとに、異なる数の全てのペアが依然として互いに素であるか試験し、素でなければ選択した数をセットから除去すればよい。この手順は、m個の数が全て選択されるまで継続する。選択されたm個の秘密モジュラスp
1、p
2...、p
mが別個の素数であることを要求することによって、複雑性は更に増す。
【0120】
複数のインスタンスの組み合わせ
説明されるシステムによってネットワークノードは、小さい共有鍵、しかもそれらの識別子よりも小さい可能性のある共有鍵に関して合意することができる。より高いセキュリティと現実的な実装の組み合わせでは、例えばb≦8、又は場合によってはb≦16のような比較的小さいbの値の選択が望ましくなる。非現実的なほどに長い鍵材料を生成することなく鍵長を増大させる1つの手法は、複数の小さい鍵を組み合わせることである。システムによってパーティは、一緒に共有鍵を形成する複数のサブ鍵に関して合意することができる。サブ鍵を生成するシステムを鍵合意インスタンスと呼ぶ。各インスタンスはそれ自身の独立パラメータを有し得るが、他のインスタンスと同じ原理に沿って動作する。それにもかかわらず、複数のインスタンスはそれらのパラメータのいくつかを共有することができる。上述のような1つのシステムから、すなわち単一のインスタンスから取得される共有鍵を「小さい」鍵と呼び、2つ以上の小さい鍵の組み合わせを「大きい鍵」と呼ぶ。組み合わされるインスタンスの数を「t」とする。
【0121】
以下のパラメータセット、すなわちアルファ=3、b=8、B=32は、実現可能な選択である。セキュリティを向上させるため、32ビット識別番号の全範囲を用いることが勧められる。具体的には、長さ256の任意の区間において、10未満の識別番号を用いなければならない。一般的に、セキュリティ向上を達成するには、所定の第1及び第2の識別閾値を設定し、第1の識別閾値(例えば256)の大きさの区間が識別値の第2の識別閾値(例えば10)より多くを含まないように識別番号を選択する。これは、例えばネットワークデバイスマネージャにより、例えばこのルールに従って識別値を生成することによって、又は閾値を超える識別値を有するデバイスに対してローカル鍵材料の生成を拒否することによって、実行できる。
【0122】
図2は、鍵共有のためネットワークデバイスを構成するための構成サーバ200及び第1のデバイス300の概略ブロック図である。デバイス300をネットワークデバイスと呼ぶ。
【0123】
構成サーバ200は典型的には統合デバイスとして実装される。例えば、構成サーバ200はサーバ内に含まれ得る。構成サーバ200は、例えば無線ネットワーク又はインターネット等のネットワークを介してネットワークデバイスを構成することができる。しかしながら、構成サーバ200は、ネットワークデバイスを製造するための製造デバイスに統合されてもよい。
【0124】
構成サーバ200は、鍵材料取得器210、ネットワークデバイスマネージャ230、及び計算ユニット220を備えている。構成サーバ200は、複数のネットワークデバイスと動作するように意図されている。
図2は、1つのそのようなデバイス、すなわち第1のネットワークデバイス300を示す。
【0125】
構成サーバ200は、ルート鍵材料とも称する秘密鍵材料を選択する。構成サーバ2000は次いで、複数のネットワークデバイスの各々についてローカル鍵材料を導出する。ローカル鍵材料は、ルート鍵材料及びネットワークデバイスの少なくとも1つの公開識別番号Aから導出される。
図2において、ネットワークデバイス300は識別番号310を記憶している。ネットワークデバイスは、複数の識別番号を、例えばインスタンスごとに1つずつ有してもよい。ネットワークデバイスは、別の識別番号も記憶し、必要な場合に例えばこの別の識別番号をハッシュ処理することで、ここから識別番号310を導出してもよい。
【0126】
ローカル鍵材料は、特定のネットワークデバイスだけに限られている(pivate)部分、すなわち、1つの特定のネットワークデバイスと、場合によっては信頼できるデバイスとにだけアクセス可能な部分を含む。ローカル鍵材料は、共有鍵を取得するため必要であるが、秘密に保つことがあまり重要でない部分も含み得る。
【0127】
公開(public)及び秘密(private)という形容詞の使用は、以下の理解を助けるものとして意図される。すなわち、全ての公開データにはアクセスを有するとしても、秘密データは、少なくとも、その適用例のセキュリティが与えられた、又は鍵生成、暗号化、及び暗号解読に必要なリソースに比べて、過度に大きいリソースなしでは計算することができない。しかしながら、「公開」とは、対応するデータが必ずしも構成サーバ200及びネットワークデバイス以外の他者に利用可能とされることを意味しない。特に、公開グローバルリダクション整数及び他の公開パラメータを信頼できないパーティから秘密に保つことは、セキュリティを向上させる。同様に、秘密データに対するアクセスは、そのデータを生成したか又は必要とするパーティに限定することができ、これはセキュリティを向上させる。しかしながら、信頼できるパーティには秘密データへのアクセスが許可されることがある。秘密データに対するアクセスはセキュリティを低下させる。
【0128】
ネットワークデバイスのローカル鍵材料及び他のパーティの識別番号を用いて、ネットワークデバイスはそれらの間で共有鍵に関して合意することができる。
【0129】
鍵材料取得器210は、少なくともパラメータセット250を電子形式で取得するように構成されている。パラメータセット250は、公開グローバルリダクション整数256,Nと、二変数多項式の第1の秘密セット252、f
i(,)と、リダクション整数の第2の秘密セット254,p
iと、を含む。第1のセットの各二変数多項式は、第2のセットのリダクション整数と、公開グローバルリダクション整数256,Nとに関連付けられている。パラメータセットは、ビットサイズBの識別番号を有するネットワークノードに対して生成される。パラメータセットはローカル鍵材料を生成するため用いられ、次いでこのローカル鍵材料は共有鍵を導出するため用いられる。ある実施形態では、小さい鍵bのビットサイズは、b<Bを満たす。これは必須ではないが、格子問題を解くことによるシステムへの攻撃を困難にする。ある実施形態ではb≦Bであり、特に、bはBに等しい場合がある。
【0130】
好適な実施形態において、鍵材料取得器210はパラメータセット250を電子形式で取得するように構成されている。複数のインスタンスが用いられる場合、鍵材料取得器210は複数のパラメータセットを備え得る。
図2は1つのパラメータセット250を示す。
【0131】
パラメータセットの公開グローバルリダクション整数256,Nは、好ましくはそのセットのリダクション整数254の各々とは異なるが、これは厳密に要求されない。好ましくは、パラメータセットの公開グローバルリダクション整数256,Nは、そのパラメータセットのリダクション整数254の各々以上の大きさである。
【0132】
鍵材料取得器210は、鍵材料を取得するためネットワークデバイスとのインタラクションを必要としない。特に、鍵材料取得器210は識別番号を必要としない。構成サーバ200は、鍵材料取得器210が計算ユニット220とは異なる物理的ロケーションに位置付けられた分散システムとすることができる。鍵材料取得器210は、鍵材料の全部又は一部を生成する、及び/又は外部ソースから鍵材料の全部又は一部を取得する。例えば、鍵材料取得器210は外部ソースから公開グローバルリダクション整数256を受信し、第1の秘密セット252及び第2の秘密セット254を生成するように適合されている。後者によって、全てのネットワークデバイスを固定の公開グローバルリダクション整数256を用いて製造することが可能となり、コストを削減できる。
【0133】
鍵材料取得器210は、電子乱数発生器を備えることができる。乱数発生器は、真又は疑似乱数発生器とすればよい。鍵材料取得器210は、例えば電子乱数発生器を用いて公開グローバルリダクション整数Nを生成することができるが、それでもなお、Nの値は、全ての鍵材料取得器(例えば
図1aの場合、210、211、212)で同じでなければならない。例えばNは、構成サーバ間で通信されることがある。
【0134】
公開グローバルリダクション整数は公開情報であるが、ランダム性を導入することによって、システムの解析をいっそう困難にする。
【0135】
第1のセット内の各二変数多項式に、第2のセットからのリダクション整数が関連付けられる。ランダム係数は、整数環から、例えば関連付けられたリダクション整数のような数を法とした整数から、ランダムに選択され得る。
【0136】
鍵材料取得器210は、電子乱数発生器を用いて、第2の秘密セット内のリダクション整数p
iの1つ以上の係数を生成することができる。リダクション整数が素数であることは必須ではない。しかしながらリダクション整数は、耐性を向上させるために素数として選択することができる。素数は、環の種類である体を生じさせる。後に鍵を共有する必要がある全てのネットワークデバイスについて、同じパラメータセット、すなわち同じ第1及び第2の秘密セット並びに公開グローバルリダクション数が用いられる。
【0137】
鍵材料取得器210は、例えば電子乱数発生器を用いて、第1の秘密セット252内の二変数多項式f
i(,)の1つ以上の係数を生成することができる。鍵材料取得器210はこのように二変数多項式の全てを生成できる。鍵材料取得器210は、これらの多項式の最大次数、例えば2又は3又はそれ以上を用い、その次数より1以上多いランダム係数を生成することができる。
【0138】
秘密セット252内の多項式の数及び多項式の次数又は最大次数のような、第1の秘密セット252のいくつかの態様を規定することは便利である。また、例えば記憶要件を低減するため、多項式の係数のいくつかがゼロであると規定してもよい。
【0139】
第1のセットは、2つの等しい多項式を含んでもよい。これは機能するが、関連付けられたリダクション整数が同じであれば、このセットはサイズが縮小し得る。このため、典型的に、第1のセット内の2つ以上の二変数多項式が同じである場合はいつでも、関連付けられたリダクション整数、すなわち基礎にある環は異なる。
【0140】
ある実施形態では、二変数多項式(f
i(,))の第1の秘密セットは全て、対称二変数多項式のみを含む。対称多項式のみを用いることは、各ネットワークデバイスが構成されたネットワークデバイスの他の任意のネットワークデバイスと共有鍵に関して合意できるという利点がある。しかしながら、二変数多項式の第1の秘密セットは、1つ以上の非対称多項式を含んでもよい。これは、デバイスを2つのグループに分割できるという効果がある。1つのグループからのデバイスは、第2のグループのデバイスとだけ共有鍵に関して合意できる。
【0141】
鍵材料取得器210は、数式でf
i(,)とも表される二変数多項式の第1の秘密セット252を電子形式で取得するように構成されている。以下に記載する実施形態は、セット252内の全ての二変数多項式が対称であると仮定する。第2のパラメータセットの生成は同じように実行すればよい。
【0142】
対称二変数多項式は、2つの形式的変数をプレースホルダーとして、f
i(x,y)とも表すことができる。対称的な二変数多項式は、f
i(x,y)=f
i(y,x)を満たす。この要件は、例えば単項式x
αy
bの係数が単項式x
by
αの係数に等しいという係数に対する要件に変換される。
【0143】
第1の秘密セット252内の多項式の数は、用途に応じて異なるように選択され得る。システムは、第1及び第2のセットが1つだけ多項式を含む場合に機能するはずである。そのようなシステムでは、鍵は良好に共有されて、中程度のセキュリティを提供し得る。しかしながら、異なる環で混合を行うことのセキュリティ上の利点が達成されるのは、第1のセットがその中に少なくとも2つの多項式を有し、第2のセットが少なくとも2つの異なるリダクション整数を有する場合のみである。
【0144】
秘密セット252は、少なくとも1つの二変数多項式を含む。構成サーバ200のある実施形態では、秘密セット252は1つの多項式から成る。秘密セット252内に1つだけ多項式を有することは、複雑性、記憶要件を低減させ、速度を上げる。しかしながら、秘密セット252内に1つだけ多項式を有することは、秘密セット252内に2つ以上の多項式を有するよりも安全でないと考えられる。その理由は、そのような1多項式システムが、以下に説明する合計における追加の混合から利益を得ないからである。しかしながら、鍵共有は正しく機能するはずであり、低い値及び/又は低いセキュリティの適用例では充分に安全であると考えられる。
【0145】
残りの部分では、秘密セット252が少なくとも2つの対称二変数多項式を含むと仮定する。ある実施形態では、多項式の少なくとも2つ、又は全てが異なる。これはシステムの解析を著しく複雑にする。必須ではないが、秘密セット252は2つの等しい多項式を含むことができ、これら2つの多項式が異なるリングで評価されるならば、合計ステップにおける混合から利益を得ることができる。異なるリダクション整数は異なる環を定義することを注記しておく。ある実施形態において、秘密セット252は、異なる関連リダクション整数に関連付けられた少なくとも2つの等しい多項式を含む。第1のセット内に2つ以上の等しい多項式を有することは、記憶要件を低減させる。ある実施形態では、第2のセットは少なくとも2つの多項式を含み、第2のセット内の全ての多項式は異なっている。
【0146】
秘密セット252内の多項式は、次数が異なるものであり得る。対称二変数多項式の次数とは、2つの変数の一方における多項式の次数を意味する。例えば、x
2y
2+2xy+1では、xの次数が2であるので、この式の次数は2に等しい。多項式は、各変数において同じ次数を有するように選択され得る。秘密セット252内の多項式が対称である場合、次数は他の変数と同じになる。
【0147】
秘密セット252内の多項式の次数は、用途に応じて異なるように選択され得る。秘密セット252は、次数が1以上である少なくとも1つの対称二変数多項式を含む。ある実施形態において、秘密セット252は次数1の多項式のみを含む。秘密セット252内に線形多項式のみを有することは、複雑性、記憶要件を低減させ、速度を上げる。しかしながら、秘密セット252内に次数1の多項式のみを有することは、秘密セット252内に次数が少なくとも2である少なくとも1つの多項式を有するよりも安全でないと考えられる。その理由は、そのようなシステムは著しく線形性が高いからである。この場合でも、秘密セット252内の複数の多項式が異なる環で評価されるならば、秘密セット252内の全ての多項式が線形であるとしても、結果として生じる暗号化は線形でない。ある実施形態において、秘密セット252は、次数が2以上の多項式を少なくとも1つ、好ましくは2つ含む。しかしながら、鍵生成、暗号化、及び暗号解読は、次数1の多項式のみが用いられる場合に正しく機能するはずであり、低い値及び/又は低いセキュリティの適用例では充分に安全であると考えられる。
【0148】
秘密セット252内に次数0の1つ以上の多項式を有することは、より高い次数の多項式(複数の多項式)が充分なセキュリティを与える限り、システムに影響を及ぼさない。
【0149】
中程度のセキュリティの適用例では、秘密セット252は、次数2の対称二変数多項式を2つ含むか又はそれらから成る場合がある。より高いセキュリティの適用例では、秘密セット252は、1つが次数2、もう1つが2より高い、例えば次数3という2つの対称二変数多項式を含むか又はそれらから成る場合がある。多項式の数及び/又はそれらの次数の増大はセキュリティを更に向上させるが、リソース消費の増大という犠牲が伴う。
【0150】
好ましくは、リダクション整数は、同じリダクション整数セット内の任意の2つのリダクション整数の差が公約数を有するように選択される。具体的には、公約数は2
bとすればよい。又は、任意の2つのリダクション整数間の差の二進表現は、このインスタンスから導出される小さい鍵のサイズと少なくとも同じゼロの数で終わる。
【0151】
例えば、リダクション整数及び公開グローバルリダクション整数を生成するための1つの手法は、以下の通りである。
【0152】
まず、例えば規定サイズのランダムな整数として、公開グローバルリダクション整数Nを生成する。
【0153】
各リダクション整数について、整数B
iを生成し、リダクション整数p
iを差p
i=N−B
i2
bとして生成する。
【0154】
公開グローバルリダクション整数は、(α+1)B+bビット以上となるように選択することができる。ここで、αは第1の秘密セット内の二変数多項式の単一変数における最も高い次数である。その場合、整数B
iはB
i<2
Bとして選択することができる。ある実施形態では、公開グローバルリダクション整数は少なくとも(α+1)B+bビットを有する。ここで、αは第1の秘密セット内の二変数多項式の単一変数における最も高い次数である。
【0155】
鍵材料取得器210は、ソフトウェア又はハードウェア又はそれらの組み合わせでプログラムすることができる。鍵材料取得器210は、多項式操作のための計算ユニット220とリソースを共有することができる。
【0156】
ネットワークデバイスマネージャ230は、ネットワークデバイス300のための識別番号310、Aを電子形式で取得するように構成されている。ネットワークデバイスマネージャ230は、ネットワークデバイスから識別番号を受信することができる。例えばネットワークデバイスマネージャ230は、ネットワークを介して識別番号を受信するための通信ユニットを含むか又は利用すればよい。例えばネットワークデバイスマネージャ230は、無線信号として識別番号を受信するためのアンテナを含み得る。識別番号はビット数として表すことができ、典型的には、識別番号のビット数bは共有鍵のビット数と少なくとも同じ大きさである。
【0157】
システム200は、全てのパラメータセットについて同じ識別番号を使用できる。しかしながら、異なるパラメータセットについて異なる識別番号を使用することも可能である。後者の場合、ネットワークマネージャ230は複数の識別番号を取得する。
【0158】
計算ユニット220は、パラメータセット及び識別番号Aについて一変数秘密鍵多項式229を計算するように構成されている。計算ユニット220は、鍵材料取得器210のパラメータセットの各々に適用される。ある実施形態では、計算ユニットは、パラメータセットの少なくとも2つ、又は各々に対して、同じ識別番号を用いる。ある実施形態では、計算ユニットは、パラメータセットの少なくとも2つ、又は全てに対して、ネットワークデバイスの異なる識別番号を用いる。このように取得された一変数秘密鍵多項式及び対応する公開グローバルリダクション整数は、ネットワークデバイスに送信されることになるローカル鍵材料の一部である。
【0159】
計算ユニット220は、接続238を介して鍵材料取得器210からパラメータセット内のデータを受信する。以下で、計算ユニット220がどのようにパラメータセットから一変数秘密鍵多項式を決定するかについて説明する。他のパラメータセットからの一変数秘密鍵多項式の生成も同じように行われる。
【0160】
計算ユニット220は、以下のように一変数秘密鍵多項式229を計算することができる。
【0161】
一変数多項式は、現在処理しているパラメータセットの第1の秘密セット内の各多項式に識別整数Aを代入することによって取得される。二変数多項式の1つの変数だけに値を代入することにより、二変数多項式は一変数多項式に変換される。次いで、得られた一変数多項式を、識別整数Aが代入された二変数多項式に関連付けられたリダクション整数を法としてリダクションする。これにより得られた一変数多項式セットを、例えば多項式におけるyの等しいべき指数の係数を加算することで合計する。これは、C
iAについて、以下の式から得られる。
【数13】
【0162】
f
i(x,y)が第1の秘密セット内の二変数多項式の1つであると仮定する。この多項式の係数は環Z
piから得られる。すなわち、第1のセット内の多項式の係数は整数環から得られる。簡略化のため、変数x及びyを用いて第1のセット内の整数の形式的変数を表す。
【0163】
代入の後、計算ユニット220はf
i(A,y)を取得する。計算ユニット220は更に、この項をp
iを法としてリダクションするように構成されている。係数は、例えばpを法としてリダクションすることで、例えばZ
pのようなシステムが動作する環においてリダクションされる。好ましくは、計算ユニット220はその結果を正準形に、すなわち所定の標準化表現にする。適切な正準形は、単項式の次数によってソートされた係数表現である。あるいは、代入はyについて行ってもよい。
【0164】
識別番号がシステム内で「ランダムに」動作することを保証するため、チェーン内のポイントにおけるランダム化ステップによって、攻撃が簡単でないことを保証することが勧められる。特に、ネットワークデバイスが、例えば通し番号のような特定の順序に従った識別番号を与えられる場合、そのようなランダム化ステップが勧められる。例えば、Sha256等の暗号ハッシュを識別番号に適用し、その結果をBビットまで短くすればよい。
【0165】
更に、識別番号をより多くのビットに拡張することも可能である。例えばB’ビットの識別番号を、例えばハッシュ及び/又は連結によってBビットまで拡張してもよい。ここで、B’<Bである。例えば、識別番号Aを、H(A)又はA||H(A)まで拡張してもよい。Hはハッシュを示し、||は連結を示す。連結はLSB側で行われる。この動作には、暗号ハッシュ等の高度に非線形のハッシュが好ましい。
【0166】
第1のセットが対称多項式のみを含む場合、識別整数Aの代入は二変数多項式の2つの変数のいずれか1つにおいて行えばよい。しかしながら、非対称多項式で代入が行われる場合、より注意が必要である。例えば計算ユニット220は、第1のネットワークデバイス300が第1又は第2のグループのどちらかであるかを取得するように構成され得る。第1及び第2のグループは、それぞれ二変数多項式の第1及び第2の変数に関連付けられている。第1のグループのネットワークデバイスでは、常に第1の変数が用いられる。第2のグループのネットワークデバイスでは、常に第2の変数が用いられる。
【0167】
図2は、この機能を実装する1つの可能な手法を示す。
図2は、代入ユニット222、多項式リダクションユニット224、多項式加算ユニット226、及び一変数多項式セットの合計228を示す。後者は、一変数秘密鍵多項式229となる。
【0168】
代入ユニット222、多項式リダクションユニット224、及び多項式加算ユニット226は、まとめて1つの計算ユニットにしてもよい。この選択肢は
図2において破線で示されている。
【0169】
これらは以下のように機能し得る。代入ユニット222は、第1のセットの二変数多項式に識別整数Aを代入する。代入ユニット222は、複数の項を収集して、その結果を正準形としてもよいが、これは後で行ってもよい。多項式リダクションユニット224は、代入の結果を受信し、これを、代入された二変数多項式に関連付けられたリダクション整数を法としてリダクションする。
【0170】
識別整数Aを前記の特定の多項式に代入しf
i(A,y)、前記の特定の多項式に関連付けられたリダクション整数を法としてリダクションした結果は、係数のリストとして正準形で表され、その後で多項式加算ユニット226によって合計される。変数yは形式的変数として作用する。この代入を、単にf
i(A,)と表すこともある。
【0171】
多項式加算ユニット226は、リダクションされた一変数多項式を受信し、それらを合計228の現在までの合計に加算する。合計228は、一変数秘密鍵多項式の生成の前に0にリセットされている。多項式加算ユニット226は、普通の演算又はパラメータセットに関連した公開グローバルリダクション数を法とした計算のどちらかを用いて、多項式を係数的に加算することができる。
【0172】
第1の秘密セットの全ての多項式がこのように処理されたら、合計228の結果を一変数秘密鍵多項式として用いることができる。例えば合計228で結果として得られた一変数秘密鍵多項式を、係数リストとして正準形で表すことができる。
【0173】
システム200が複数のインスタンスを用いる場合、すなわちシステム200が複数のパラメータセットを用いる場合、計算ユニット220は、それらの各々について一変数秘密鍵多項式を決定する。必要ならば、ユニット220は何らかの情報を再使用することができる。例えばユニット220は、全ての一変数秘密鍵多項式を生成するため同じ識別番号Aを用い得る。より高いセキュリティのためには、パラメータセットは独立であり、好ましくは異なる識別番号を用いる。
【0174】
ネットワークデバイスマネージャ230は更に、生成された一変数秘密鍵多項式229、対応する公開グローバルリダクション整数256,Nを、ネットワークデバイスにおいて電子的に記憶するよう構成されている。一変数秘密鍵多項式229及びその1つ又は複数の識別番号を用いて、第1のネットワークデバイス300は、同じルート材料から構成された鍵を他のデバイスと共有することができる。また、ネットワークデバイスマネージャ230は、パラメータB及びbをネットワークデバイスにおいて電子的に記憶するよう構成することも可能である。
【0175】
構成サーバ200は、例えば電子メモリ内に構成サーバ識別子276も備え得る。ネットワークデバイスマネージャ230は、ネットワークデバイスにおいて、例えば鍵材料と共に構成サーバ識別子276を記憶することができる。構成サーバ識別子276は任意選択的であり、例えば全てのネットワークデバイスが同じ構成サーバセットから鍵材料を受信する場合は省略してもよい。
【0176】
電子的に記憶することは、デバイスマネージャが第1のデバイスに情報を電子的に送信し、次いで第1のデバイスがこの情報を記憶することを含み得る。
【0177】
計算ユニット220はソフトウェアで実装してもよいが、計算ユニット220はハードウェアでの実装に特に適している。多項式リダクションユニット224のみがハードウェアを実装している場合、著しい速度の向上が得られる。ユニット224のハードウェアバージョンにより実行されないシステム200の機能性の部分は、プロセッサのソフトウェア動作により実行すればよい。
【0178】
図2は、計算ユニット220が第1のネットワークデバイス300から識別番号メッセージ232を受信し、第1のネットワークデバイス300が計算ユニット220から秘密鍵材料メッセージ236を受信することを示す。秘密鍵材料メッセージ236は、公開グローバルリダクション整数、一変数秘密鍵多項式計算ユニットを含み得る。
【0179】
これらのメッセージは典型的に、ネットワークデバイスマネージャ230を介して送信及び受信される。秘密鍵材料メッセージ236は、複数のメッセージ間に分割してもよい。複数のインスタンスが用いられる場合、それらの対応する秘密鍵材料メッセージを組み合わせて単一のメッセージとしてもよい。
【0180】
構成サーバ200は、第1のネットワークデバイス300のための識別番号を生成することで識別番号を取得するように構成してもよい。そのような構成は、製造設備によく適している。その場合、第1のネットワークデバイス300は、識別番号メッセージ232を送信するのではなく構成システム200から受信する。例えば、鍵材料取得器210又は計算ユニット220から識別番号メッセージ232を受信する。
【0181】
図3は、第1のネットワークデバイス300及び第2のネットワークデバイス350の概略ブロック図である。第1のネットワークデバイス300及び第2のネットワークデバイス350は、一緒に共有鍵を決定するように構成されている。
【0182】
第2のネットワークデバイス350は、ネットワークデバイス300と同じ設計とすることができる。第1のネットワークデバイス300についてのみ詳細に説明するが、第2のネットワークデバイス350も同じか又は同様であり得る。
図3は、第2のネットワークデバイス350が識別番号355を記憶していることのみを示す。第2のネットワークデバイス350の識別番号355は公開であり、鍵を共有するためネットワークデバイス300と交換することができる。また、第2のネットワークデバイス350は、ローカル鍵材料(図示せず)、特に、識別番号355に対応する1つ以上の一変数秘密鍵多項式も必要とする。
【0183】
第1のネットワークデバイス300は、電子記憶装置320、通信ユニット342、共有鍵ユニット330、及び鍵導出デバイス340を備えている。
【0184】
記憶装置320は、デバイス300のローカル鍵材料を記憶している。
図3に示す実施形態において、記憶装置320は、2つの異なる構成サーバ、例えば構成サーバ200及び201から受信された鍵材料セット370及び380を含む。各鍵材料は一変数秘密鍵多項式を含み、双方の鍵材料は同じ公開グローバルリダクション整数374と共に機能する。例えば、鍵材料370は一変数秘密鍵多項式372及び構成サーバ識別子386を含む。例えば、鍵材料380は一変数秘密鍵多項式382及び構成サーバ識別子386を含む。ローカル鍵材料370及び380は異なる構成サーバから受信され、公開グローバルリダクション整数374は、TTPから受信されるか、製造中に入力されるか、又は、例えばネットワークデバイスを構成する第1の構成サーバ等の構成サーバから受信される場合がある。
【0185】
この実施形態は、他の各ネットワークデバイスと単一の共有鍵を導出するため、単一のインスタンス、すなわち鍵材料のために設けられているものとして記載される。ネットワークデバイスに、複数の構成サーバからの複数の鍵材料を含み得る複数の鍵材料セットを供給して、このネットワークデバイスが複数の共有鍵を導出すること、例えばより長い鍵へと組み合わせることを可能としてもよい。また、記憶装置320は、鍵材料内の一変数秘密鍵多項式を生成するため構成サーバによって用いられた識別番号310,Aも記憶している。
【0186】
図示する例では、鍵材料370及び380は組み合わされていない。ある実施形態において、鍵材料は例えば受信時に組み合わされる。これはメモリ要件を低減させると共に、リバースエンジニアリングを複雑化する。
【0187】
記憶装置320は、例えば不揮発性かつ書き込み可能のメモリ、例えばフラッシュメモリ等のメモリとすればよい。記憶装置320は、例えばハードディスク等の磁気記憶装置のような他のタイプの記憶装置としてもよい。記憶装置320は追記型メモリとしてもよい。
【0188】
通信ユニット342は、第2のネットワークデバイス350の識別番号355,Bを取得するように構成されている。通信ユニット342は、例えばWi−Fi(登録商標)、Bluetooth(登録商標)、又はZigbee(登録商標)接続のような有線接続として実装され得る。通信ユニット342は、例えばインターネットのようなデータネットワークを介した接続によって実装され得る。
【0189】
共有鍵ユニット330は、記憶装置320内の鍵材料370に対応してデバイス350と共有される鍵を導出するように構成されている。デバイス350は鍵材料370に対応した鍵材料を有する。以下で、どのように共有鍵ユニット330が鍵材料370を用いて単一の共有鍵を導出し得るかについて説明する。しかしながら、複数のインスタンスを組み合わせることも可能である。
【0190】
共有鍵ユニット330は、代入ユニット332及び整数リダクションユニット334を含み得る。代入ユニット332及び整数リダクションユニット334は一緒に共有鍵ユニット330を形成する。後者は破線で示されている。
【0191】
共有鍵ユニット330は、受信されたネットワークデバイス350の識別整数B及び鍵材料から、ネットワークデバイス300と350との間の中間鍵を導出するように構成されている。これを用いて、第2のネットワークデバイス識別番号及び第1のネットワークデバイスの複数のローカル鍵材料のうち少なくとも2つから共有鍵を導出する。
【0192】
識別整数B及び鍵材料から中間鍵を導出すると、共有鍵ユニット330は、一変数秘密鍵多項式372のような一変数秘密鍵多項式に識別整数Bを代入し、この代入の結果を公開グローバルリダクション整数374を法としてリダクションするように構成されている。共有鍵ユニット330は、代入ユニット222及び多項式リダクションユニット224と同様のハードウェア又はソフトウェアを用い得る。第1のネットワークデバイス300は第1及び第2の秘密セットに対するアクセスを有しないことを注記しておく。リダクションユニット334の結果は中間鍵である。
【0193】
ある実施形態において、共有鍵ユニットは、第1のネットワークデバイスの複数のローカル鍵材料のうち少なくとも2つを組み合わせて単一の組み合わせローカル鍵材料を得るように設けられ、共有鍵は、第2のネットワークデバイス識別番号及びこの組み合わせローカル鍵材料から導出される。例えばそれらは、一変数多項式を加算することによって、例えば等しいべき指数の係数を合計することによって組み合わせればよい。共有鍵ユニットは、一変数多項式を加算するように設けられた多項式加算ユニットを備え得る。その合計は、グローバル公開グローバルリダクション整数374を法としてリダクションすることができる。組み合わせ鍵材料から中間鍵が導出される。後者の結果は、公開グローバルリダクション整数374Nを法としてリダクションされ、その後、以下で示すように2
bを法としたリダクション及び/又は調停が行われる。
【0194】
後に共有鍵が導出される中間鍵を導出する前に鍵材料を組み合わせる代わりに、共有鍵ユニット330は、複数のローカル鍵材料から複数の中間鍵を導出するように設けることも可能である。第1及び第2の中間鍵を組み合わせることで共有鍵が導出される。例えば、複数の中間鍵は最初に、公開グローバルリダクション整数374Nを法として加算される。後者の結果は、以下で示すように、2
bを法としたリダクション及び/又は調停が実行され得る。
【0195】
ある実施形態において、異なるネットワークデバイスは異なる構成サーバからローカル鍵材料を受信し得る。この実施形態では、鍵材料又は中間鍵を組み合わせるには、鍵共有に参加している双方のネットワークデバイスについて、使用されるローカル鍵材料が同じルート鍵材料から発生したものである必要がある。
【0196】
記憶装置320は、複数のローカル鍵材料370、380を、任意選択的な複数の関連付けられた構成サーバ識別子376、386と共に記憶している。ネットワークデバイス300は、任意選択的な構成ユニット390を備えている。構成ユニットは、例えばネットワークデバイス350のような第2のネットワークデバイスと、複数の構成サーバ識別子のサブセットについて合意するよう設けられて、第1及び第2のネットワークデバイスが双方ともそのサブセットの構成サーバに関連付けられたローカル鍵材料を有するようにする。例えば構成ユニット390は、通信ユニット342を用いて、複数の構成サーバ識別子を第2のネットワークデバイスに送信すると共に、第2のネットワークデバイスからサブセットを受信することができる。
【0197】
ネットワークデバイス350は、第1のネットワークデバイス300から複数の構成サーバ識別子を受信し、受信した複数の構成サーバ識別子と第2のネットワークデバイスの複数の構成サーバ識別子との間の共通部分を決定し、この共通部分からサブセットを選択し、このサブセットを第1のネットワークデバイス300に送信するように設けられた構成ユニットを備え得る。
【0198】
構成ユニット390は、双方の機能のために構成することができる。例えば構成ユニット390は、デバイス300が鍵共有を開始した場合は複数の構成サーバ識別子を他方のネットワークデバイスに送信するが、鍵共有を開始しなかった場合はサブセットを選択するように設けることができる。
【0199】
任意選択的に、共有鍵ユニット330は鍵調停ユニット336を備えている。デバイス300及びデバイス350は、同じ共有鍵に到達しないということが起こり得る。アプリケーションは、この可能性を無視することを選択してもよい。その際は、いくつかのネットワークデバイスペアは、共通の共有鍵がないので、暗号化された及び/又は認証された通信に関与できない場合がある。いくつかのアプリケーションでは、いくつかのネットワークデバイスペアのみが安全であれば充分である。例えば、アドホックのネットワークはこの一例である。デバイス300及び350は、任意選択的な鍵調停ユニット336を用いて構成してもよい。2つのデバイス300及び350のうち一方において、鍵調停ユニット336は生成された鍵から鍵調停データを生成し、これを他方のデバイスに送信する。他方のデバイスにおいて、鍵調停ユニット336は受信した鍵調停データを用いて、双方のデバイスで導出される共有鍵が同じであるように、生成された鍵を適合させる。
【0200】
鍵調停ユニット336を用いて鍵を適合させる場合、鍵調停ユニットは、鍵調停データに一致するまで、生成された鍵を適合させる。すなわち、適合された鍵から鍵調停データを導出すると、その鍵について受信した鍵調停データと同じ結果を与える。鍵の適合は、公開グローバルリダクション整数の倍数を加算し、2
bを法としてリダクションすることにより、すなわちK
BA+δN mod2
bにより実行できる。調停が行われない場合、中間鍵は直接2
bを法としてリダクションされる。
【0201】
例えば、デバイス330内の鍵調停ユニット336は、鍵調停データとして、生成された小さい鍵の所定数の最下位ビットを取得する。例えば、2
C≧1+2Dとなるように、所定数cを最小の数として選択することができる。ここで、αは第1の秘密セットの多項式の次数であり、mは多項式の数である。Dは残りの可能な鍵の数、すなわち変更された中間鍵に残っている不確定性を示す。これらの最下位ビットが調停データとして用いられる場合、鍵調停ユニットは、cの最下位ビットが受信したビットと同じになるまで倍数を加算する。b=8であっても、各インスタンスに5ビットが残る。これらの5ビットは追加の調停を必要としないが、複数のインスタンス、例えば16のインスタンスを組み合わせて80ビットの共有鍵を取得することで、所望の長さの鍵を取得できる。
【0202】
鍵導出デバイス340は、例えば変更された中間鍵(複数の中間鍵)のような、導出された1つ以上の鍵から共有鍵を導出するように構成されている。共有鍵はいわゆる対称鍵である。リダクションの結果は整数である。この結果は、例えば調停後に任意選択的に係数を連結することによって、ほとんど直接的に鍵として用いられ得る。
【0203】
リダクションの結果から共有鍵を導出することは、例えばOpen Mobile Alliance(OMA)のOMA DRM仕様(OMA−TS−DRM−DRM−V2_0_2−20080723−A、セクション7.1.2KDF)で定義された関数KDF、及び同様の関数のような鍵導出関数の適用を含み得る。
【0204】
bビット鍵ごとに鍵調停データを送信及び受信する代わりに、鍵調停ユニットは、場合によってはKDFのような鍵調停アルゴリズムの後に、アセンブルされた大きい共有鍵に対して鍵調停データを生成するよう構成することも可能である。この場合、鍵調停ユニットは、鍵調停データを満足する大きい鍵が見出されるまで全ての小さい鍵を同時に適合させる。複数の小さい鍵を同時に変化させることは著しい手間がかかる一方で、小さい鍵に利用可能な情報がより直接的でなくなるので、大きい鍵に対して鍵調停データを生成することは著しく安全でもある。
【0205】
図3は更に、第1のネットワークデバイス300内に任意選択的な暗号ユニット345を示す。暗号ユニット345は共有鍵を用いるように構成されている。例えば暗号ユニット345は、共有対称鍵を用いて電子メッセージを暗号化するため構成された暗号化ユニットとすればよい。例えば暗号ユニット345は、共有対称鍵を用いて電子メッセージを暗号解読するため構成された暗号解読ユニットとしてもよい。
【0206】
図4は、同様の鍵共有システム102の概略ブロック図である。システム102は、ネットワークデバイスが個人化デバイス110から識別番号を受信することを除いて、システム100と同じである。この場合ネットワークデバイスは、それらの識別番号を送信することによって構成サーバ200及び201に登録する。デバイス360でさえも、デバイス300と350との間で共有される鍵を取得することはできない。
【0207】
個人化デバイス110は、他の目的にも使用される識別番号を割り当てることができる。例えば個人化デバイス110は、MACアドレス等のネットワークアドレスを割り当ててもよい。ネットワークアドレスは、ネットワークノードによって、第2のネットワークノードからそれ自身へネットワークトラフィックをルーティングするため用いられる。しかしながら、ネットワークアドレスは識別番号としても兼用され得る。この場合、ネットワークノードは、そのネットワークアドレスをシステム200及び201が利用できるようにし、ネットワークノードがそのネットワークアドレスを識別番号として用いて暗号化通信に関与することを可能とする一変数秘密鍵多項式を受信する。識別番号は、完全エントロピ、すなわちBビットのエントロピを有することが好ましい。しかしながら、これが実現可能でない場合は、識別番号としてこの番号を用いる前に、例えばハッシュ関数等のエントロピ平滑化関数を実行することが好ましい。
【0208】
個人化デバイス110は、近い識別番号、すなわち最上位ビットの多く又は全てを共有する識別番号を回避することによって、システムのセキュリティを向上させるように識別番号を生成できる。例えばサーバ110は、識別番号をランダムに、例えば真の又は疑似乱数を生成することができる。また、例えば10ビット等の所定数のランダムなビットを識別番号に付加することで充分である。識別番号は、A
1||A
2の形態を有し得る。A
1は乱数でなく、例えば通し番号、ネットワークアドレス等であり、A
2は乱数である。A
2は乱数発生器によって発生すればよい。A
2は、A
1のハッシュ処理によって生成してもよい。鍵形成ハッシュ(keyed hash)、例えばHMACが用いられる場合、A
2は、前記のカギにアクセスを有しないパーティには、乱数から区別できない場合がある。この鍵はサーバ110によって生成され、記憶することができる。
【0209】
サーバ110は、構成サーバの1つに含めることができ、例えばシステム200内で、例えばネットワークマネージャ230に組み込んでもよい。
【0210】
典型的に、デバイス200、201、202、及び300、350、360、及び110は各々、デバイスに記憶された適切なソフトウェアを実行するマイクロプロセッサ(図示せず)を備えている。例えばそのソフトウェアは、例えばRAM等の揮発性メモリ又はフラッシュ(Flash)等の不揮発性メモリ(図示せず)のような対応するメモリにダウンロード及び/又は記憶しておくことができる。また、これらのデバイスにマイクロプロセッサ及びメモリ(図示せず)を搭載することも可能である。あるいは、デバイスは全体的に又は部分的に、例えばフィールドプログラマブルゲートアレイ(FPGA)等のプログラマブル論理に実装してもよい。デバイスは、全体的に又は部分的に、いわゆる特定用途向け集積回路(ASIC)、すなわち特定の用途のためカスタマイズされた集積回路に実装してもよい。
【0211】
図6は、集積回路400の概略ブロック図である。集積回路400は、プロセッサ420、メモリ430、及び入出力ユニット440を備えている。集積回路400のこれらのユニットは、バス等の相互接続410を介して相互に通信を行うことができる。プロセッサ420は、メモリ430に記憶されたソフトウェアを実行して、本明細書に記載されるような方法、例えばデバイスを構成するための方法又は共有鍵を決定するための方法を実行するように構成されている。このように、集積回路400は、構成サーバ200又は第1のネットワークデバイス300等のネットワークデバイスとして構成することができる。メモリ430の一部は、必要に応じて、公開グローバルリダクション整数、二変数多項式の第1の秘密セット、リダクション整数の第2の秘密セット、識別番号、平文メッセージ、及び/又は暗号化メッセージを記憶することができる。
【0212】
入出力ユニット440は、デバイス200又は300等の他のデバイスと通信を行って、例えば二変数多項式の第1の秘密セット252、場合によってはサイズ、次数、モジュラスのような関連付けられたパラメータ等も含む鍵データを受信すること、又は暗号化及び/又は認証されたメッセージを送信及び受信することができる。入出力ユニット440は無線通信のためのアンテナを備えてもよい。入出力ユニット440は有線通信のための電気インタフェースを備えてもよい。
【0213】
集積回路400は、コンピュータや携帯電話等の移動通信デバイスに一体化してもよい。集積回路400は、照明デバイスに一体化し、例えばLEDデバイスと共に設けてもよい。例えば、ネットワークデバイスとして構成され、LED等の照明ユニットと共に設けられる集積回路は、共有対称鍵で暗号化されたコマンドを受信することができる。
【0214】
例えば照明デバイスに組み込まれた複数のネットワークデバイスは、暗号化ネットワークのノードを形成することができ、この場合、ノード間で共有鍵を用いてリンクが暗号化される。
【0215】
集積回路400は、迅速な対称鍵合意を望む他のデバイスに一体化することも可能である。集積回路400は支払いシステムに一体化してもよい。集積回路400は自動車に一体化してもよい。複数のそのような自動車を自動車間通信のために配置し、共有鍵を用いて自動車間メッセージを暗号化及び/又は認証してもよい。
【0216】
多項式操作は、メモリ430に記憶された多項式操作ソフトウェアにより命令される通りにプロセッサ420が実行すればよいが、集積回路400が任意選択的な計算ユニット450と共に構成されている場合、鍵生成及び一変数多項式を計算するタスクはいっそう迅速になる。この実施形態において、計算ユニット450は、代入及びリダクション動作を実行するためのハードウェアユニットである。
【0217】
典型的に、デバイス200、300は各々、デバイス200及び300に記憶された適切なソフトウェアを実行するマイクロプロセッサ(図示せず)を備えている。例えばそのソフトウェアは、例えばRAM等の揮発性メモリ又はフラッシュ等の不揮発性メモリ(図示せず)のような対応するメモリにダウンロード及び/又は記憶しておくことができる。あるいは、デバイス200又は300は全体的に又は部分的に、例えばフィールドプログラマブルゲートアレイ(FPGA)等のプログラマブル論理に実装してもよい。
【0218】
図5は、複数のネットワークデバイスのいずれか1つとの共有鍵を決定するための方法500の実施形態の一例をフローチャートとして概略的に示す。この方法は、例えばデバイス300、350、及び360のいずれか1つによって実行すればよい。方法は、
第1のネットワークデバイス識別番号(310,A)を記憶すること(510)、
複数の構成サーバのうち少なくとも2つの異なる構成サーバから複数のローカル鍵材料を受信すること(520)、
複数のネットワークデバイスのうち第2のネットワークデバイスの第2のネットワークデバイス識別番号(355,B)を取得すること(530)、
第1のネットワークデバイス識別番号を第2のネットワークデバイスに提供すること(540)、
第2のネットワークデバイス識別番号及び第1のネットワークデバイスの複数のローカル鍵材料のうち少なくとも2つから、第1及び第2のネットワークデバイス間で共有される共有鍵を導出すること(550)、
を備える。
【0219】
当業者に明らかであるように、この方法を実行する多くの異なる手法が可能である。例えばステップの順序を変えることができ、又はいくつかのステップを並行して実行してもよい。更に、ステップ間に他の方法ステップを挿入してもよい。挿入されるステップは、本明細書に記載されるような方法の改良(refinement)を表すことがあり、又は本方法に無関係であることもある。
【0220】
ある実施形態に従った方法は、プロセッサシステムに方法500又は600を実行させるための命令を含むソフトウェアを用いて実行され得る。ソフトウェアは、システムの特定のサブエンティティ(sub−entity)によって利用されるステップのみを含み得る。ソフトウェアは、ハードディスク、フロッピー、メモリ等の適切な記憶媒体に記憶することができる。ソフトウェアは、有線又は無線で、又は例えばインターネット等のデータネットワークを用いて、信号として送信することができる。ソフトウェアは、ダウンロードのため及び/又はサーバ上での遠隔使用のため利用できるようにしてもよい。方法は、この方法を実行するため、例えばフィールドプログラマブルゲートアレイ(FPGA)等のプログラマブル論理を構成するように設けられたビットストリームを用いて実行すればよい。
【0221】
本発明は、本発明を実行に移すように適合されたコンピュータプログラム、特にキャリア上又はキャリア内のコンピュータプログラムにも拡張されることは認められよう。プログラムは、ソースコード、オブジェクトコード、部分的にコンパイルされた形態等のソースコード及びオブジェクトコードの中間コードの形態、又は実施形態に従った本方法の実装における使用に適した他の任意の形態を取り得る。コンピュータプログラム製品に関する一実施形態は、上述した方法の少なくとも1つの処理ステップの各々に対応するコンピュータ実行可能命令を含む。これらの命令はサブルーチンに細分してもよく、及び/又は静的に又は動的にリンクされ得る1つ以上のファイル内に記憶してもよい。コンピュータプログラム製品に関する別の実施形態は、上述したシステム及び/又は製品のうち少なくとも1つの手段の各々に対応するコンピュータ実行可能命令を含む。
【0222】
上述の実施形態は本発明を限定するのではなく例示するものであり、当業者は多くの代替的な実施形態を設計できることに留意するべきである。
【0223】
請求項において、括弧内に置かれたいかなる参照符号も請求項を限定するものとして解釈されるべきではない。動詞「comprise(備える)」及びその活用形の使用は、請求項に記載されたもの以外の要素又はステップの存在を除外しない。ある要素の前の冠詞「a(1つの)」又は「an(1つの)」は、複数のそのような要素の存在を除外しない。本発明は、いくつかの別個の要素を含むハードウェアによって、及び適切にプログラミングしたコンピュータによって実施され得る。いくつかの手段を列挙したデバイスの請求項では、これらの手段のいくつかはハードウェアの同一のアイテムによって具現化され得る。単にいくつかの手段(measures)が相互に異なる従属項に記載されているからといって、これらの手段の組み合わせを有利に使用することができないと示唆されるわけではない。
【0224】
請求項において、括弧内の参照番号(reference)は、実施形態の図面又は実施形態の式における参照符号を示し、これによって請求項の理解しやすさを向上させる。これらの参照番号は請求項を限定するものとして解釈されない。