本発明は、多くの異なる形の実施形態が可能であるが、1以上の特定の実施形態が、図面に示され本明細書で詳細に説明される。本開示は、本発明の原理の例示として考えられるべきであり、本発明を、図示及び説明される特定の実施形態に限定するようには意図されていないことを理解されたい。
以下において、まず、鍵共有方法の実施形態が、数学的用語で説明される。鍵共有方法は、鍵共有システム100、102等における、以下に記載するようなデバイスにおいて、例えば、ネットワークデバイス300を構成するためのシステム200において、実施され得る。デバイスは、ノード又はネットワークノードとも呼ばれる。
一実施形態に従った複数のデバイスは、それらのペアの間で容易に鍵を確立することができ、したがって、それらのデバイスのうちのいずれか2つのデバイスの間のセキュアな通信を可能にする。したがって、それらのデバイスは、ネットワークデバイスと呼ばれる。一実施形態において、2つのデバイスの間の通信は、無線通信を使用する。例えば有線通信等の他の形態の通信も可能である。
方法は、セットアップフェーズ及び使用フェーズを有する。セットアップフェーズは、開始ステップ及び登録ステップを含み得る。開始ステップは、ネットワークデバイスを伴わない。
開始ステップは、システムパラメータを選択する。開始ステップは、信頼できる第三者機関(TTP)によって実行され得る。システムパラメータは、所与の入力とみなされもする。この場合、信頼できる第三者機関は、システムパラメータを生成する必要がなく、開始ステップは、スキップされ得る。例えば、信頼できる第三者機関は、デバイス製造業者からシステムパラメータを受け取ることができる。デバイス製造業者は、開始ステップを実行して、システムパラメータを取得していることがある。説明の便宜上、信頼できる第三者機関が開始ステップを実行するものとして言及されるが、これは必須ではないことに留意されたい。
開始ステップ
インスタンスの使用フェーズにおいてデバイス間で共有されることになる鍵の所望の鍵長が選択される。この鍵長は、「b」として参照される。所望の識別番号長も選択される。後の登録ステップ中に、各デバイスは、識別番号長を有する識別番号に関連付けられることになる。識別番号長は、「B」として参照される。番号の長さは、ビット単位で測定される。
b≦Bであることが好ましいが、これは必須ではない。格子攻撃に対する耐性を高めるために、b<Bが選択され得る。一実施形態において、Bは、bの倍数であり、例えば、Bは、少なくとも2bであり、又は、推奨されるセキュリティレベルについては、Bは、少なくとも4bである。低セキュリティ用途のための一般的な値は、b=8、B=16であり得る。高いセキュリティのためには、b=8、B=32がより良好である。より高いセキュリティでは、b≦8(例えば、b=8)及びB≧128(例えば、B=128)が使用され得る。
各インスタンスを用いて、2つのパーティは、共有鍵を導出することができる。共有鍵は、組み合わされて、より大きい組合せ鍵(combined key)が形成され得る。インスタンスの数は、組合せ鍵が、それが使用されることになるセキュリティ用途にとって十分長くなるように選択される。
Bに対してbの値が小さくなるほど、いわゆる結託攻撃に対する耐性が増大する。結託攻撃において、攻撃者は、ターゲットネットワークノードと複数の結託ネットワークノードとの間で使用される共有鍵に関する情報を取得する。
しばしば、インスタンスの数、鍵サイズ、及びサブ鍵長は、例えば、システム設計者によって事前に決定され、入力として信頼できるパーティに提供される。
インスタンスパラメータ
次いで、各インスタンスについてのパラメータが選択される。所望の次数が選択される。次数は、所定の多項式の次数を制御する。次数は、「α」として参照され、少なくとも1である。αの実用的な選択は2である。よりセキュアな用途では、αとして、より高い値、例えば3若しくは4、又はさらに高い値が使用され得る。単純な用途では、α=1も可能である。α=1の場合は、いわゆる「隠れ数問題」に関連し、より高い「α」値は、拡張隠れ問題に関連し、これらの場合は、破るのが難しいことが確認されている。値α=1は、可能ではあるが推奨されず、非常に低いセキュリティ用途についてのみ検討されるべきである。低セキュリティ用途では、α>2、例えば、α=3が可能である。しかしながら、高いセキュリティでは、α≧32、例えば、α=32が推奨される。
多項式の数が選択される。多項式の数は、「m」として参照される。mの実用的な選択は2である。よりセキュアな用途では、mとして、より高い値、例えば、3若しくは4、又はさらに高い値が使用され得る。
低複雑度のアプリケーションは、例えば、リソースが限られているデバイスについては、m=1を使用し得ることに留意されたい。値m=1は、可能ではあるが推奨されず、低セキュリティ用途についてのみ検討されるべきである。セキュリティパラメータα及びmのより高い値は、システムの複雑度、したがって、その取り扱いにくさを増大させる。システムが複雑になるほど解析が難しくなり、したがって、暗号解読に対する耐性が高くなる。以下においては、m≧2であると想定する。
2(α+1)B+b−1≦Nを満たす公開モジュラスNが選択される。好ましくは、公開モジュラスNは、正確に(α+1)B+bビットを有するように選択され、したがって、N<2(α+1)B+bでもある。例えば、Nは、この間隔の中でランダムに選択され得る。しばしば、鍵長b、多項式の次数α及び数mは、例えば、システム設計者によって事前に決定され、入力として信頼できるパーティに提供される。公開モジュラスは、例えば標準において固定されてもよいが、より一般的には、パラメータを生成している間に選択される。
m個の秘密モジュラスp1、p2、...、pmが選択される。モジュラスは、正の整数である。一実施形態において、各選択される数は、関係pj=N−βj・2bを満たす。ここで、βjは、ランダムなBビット整数である、すなわち、βj<2Bである。より好ましくは、秘密モジュラスは、識別子長Bに正確に等しいビット数を有する、すなわち、2B−1≦βj<2Bである。これらの秘密モジュラスは、第2の秘密集合と呼ばれる。
m>1について、異なるモジュラスについてのモジュロ演算が、そのような演算は通常の数学的意味では両立しないにもかかわらず、組み合わされるため、システムは、より複雑であり、したがって、よりセキュアである。この理由から、選択される秘密モジュラスpjを、互いに相違するもの(pairwise distinct)として選択することが有利である。非常に低いセキュリティ用途以外では、m>1及びα>1が推奨されるが、より高い値が使用されることが好ましい。
一実施形態において、m>1、α>1、pj=N−βj・2b、βj<2B、及び2(α+1)B+b−1≦Nである。
次数αjのm個の二変数多項式f1、f2、...、fmが生成され、これらは、第1の秘密集合と呼ばれる。好ましくは、二変数多項式は対称であり、これは、全てのネットワークデバイスが、各他のネットワークデバイスと共有鍵について合意することを可能にする。これらの二変数多項式はまた、非対称に選択されてもよい。後者の場合において、デバイスは、2つのグループ、すなわち、二変数多項式の第1の変数に代入することによってローカル鍵材料を取得する第1のグループと、二変数多項式の第2の変数に代入することによってローカル鍵材料を取得する第2のグループと、に分けられる。1つのグループ内のデバイスは、他のデバイス内のデバイスとのみ、共有鍵について合意することができる。
全ての次数は、αj≦αを満たし、少なくとも1つのjについて、αj=αである。より良好な選択は、それぞれが次数αの多項式をとることである。二変数多項式は、変数が2つの多項式である。対称多項式fは、f(x,y)=f(y,x)を満たす。モジュロpjを演算することによって取得されるpjを法とする整数によって形成される有限環において、各多項式fjが評価される。pjを法とする整数は、pjの元(element)を含む有限環を形成する。多項式fjの係数は、整数であり、モジュロpj演算によって規定される有限環内の元を表す。一実施形態において、多項式fjは、0からpj−1までの係数を用いて表される。二変数多項式は、ランダムに、例えば、これらの制限内でランダムな係数を選択することによって、選択され得る。
これらの二変数多項式は、システムのルート鍵材料であるため、鍵共有のセキュリティは、これらの二変数多項式に依存し、そのため、それらを保護するための強力な手段、例えば、制御手順、耐タンパー性デバイス等が、利用されることが好ましい。p
jに対応する値β
jを含め、選択される整数p
1、p
2、...、p
mも秘密に保たれることが好ましいが、これはそれほど重要ではない。二変数多項式は、次の形態でも参照される。すなわち、j=1、2、...、mについて、
と記述される。
上記の実施形態は、いくつかの形で変更され得る。公開モジュラス及び秘密モジュラスに対する制限は、一変数多項式の難読化が可能であるが、なおネットワークデバイスにおいて取得される共有鍵が十分な頻度で十分に互いに近いままであるように、多様に選択され得る。何をもって十分とするかは、用途、必要とされるセキュリティレベル、及び、ネットワークデバイスにおいて利用可能な計算リソースに応じて決まる。上記の実施形態は、共有される多項式を生成するときに実行されるモジュラ演算が、それら多項式が整数にわたって加算されるときに非線形に結合されるように、正の整数を組み合わせて、ネットワークデバイスに記憶されるローカル鍵材料についての非線形構造を生成する。N及びpjの上記選択は、次の特性を有する:(i)Nのサイズは、全てのネットワークデバイスについて固定である、(ii)非線形効果は、デバイスに記憶される鍵材料を形成する係数に現れる。その特定の形態を理由として、小さい共有鍵が、Nを法とする簡約の後に2bを法として簡約することによって生成され得る。
登録ステップ
登録ステップにおいて、各ネットワークデバイスに、秘密一変数鍵多項式を含む鍵材料(KM)が割り当てられる。鍵材料は、各インスタンスについての鍵材料を含む。以下において、ネットワークデバイスのために1つのインスタンスについての鍵材料がどのように導出されるかが説明される。各インスタンスは、たとえ鍵材料の部分が異なるインスタンスの間で共有され得るとしても、当該インスタンスに固有である鍵材料を有する。
ネットワークデバイスは、識別番号Aに関連付けられる。識別番号は、要求に応じて、例えば、TTPによって割り当てられてもよいし、例えば、製造時にデバイスに記憶される等、デバイスにすでに記憶されていてもよい。Aのビットサイズは、Bビットである。Aの生成は、様々な方法で行われ得る。高いセキュリティのためには、Aの低ビットは、ランダムである。例えば、Aは、乱数として選択されてもよいし、あるいは、Aは、場合によってはBビットに切り詰められる、例えばシリアル番号といったさらなる識別番号のハッシュであってもよい。
TTPは、以下のように、デバイスAについての鍵材料の集合を生成する。
したがって、一変数多項式の集合が取得され、第1の秘密集合の各特定の多項式について、識別番号(A)が、当該特定の多項式f
i(A,x)に代入され、当該特定の多項式に関連付けられている簡約整数を法として簡約される。結果としてもたらされた一変数多項式の集合が合計される。この合計は、生成と組み合わされ得る。xは、形式的変数(formal variable)である。鍵材料は非線形であることに留意されたい。表記
は、p
jを法として、括弧の間の多項式の各係数を簡約することを表す。
以下のように、さらなる難読化数をこれに加算することが可能である。
ここで、KM
A(X)は、識別番号Aを有するデバイスの鍵材料である。言い換えれば、
である。表記「∈
A,i」は、ランダムな整数を表し、これは、|∈
A,i|<2
(α+1−i)bであるような難読化数の一例である。ランダムな整数のいずれか1つは、正であっても負であってもよいことに留意されたい。乱数∈が、各デバイスについて再び生成される。したがって、項
は、次数αのX内の多項式を表し、その係数長は、次数が増大するほど短くなる。代替的に、より一般的ではあるがより複雑な条件は、
が小さいこと、例えば、2
α+1よりも小さいことである。異なる有限環にわたる混合効果(mixing effect)は、セキュリティに対する最大の寄与を提供し、したがって、難読化数の使用は任意的である。
全ての他の加算は、自然整数演算、すなわち、環
における演算を使用するか、又は(好ましくは)Nを法とする加算を使用する。そのため、一変数多項式
の評価は、より小さいモジュラスp
jを法としてそれぞれ個々に行われるが、これらの簡約された一変数多項式自体の合計は、好ましくは、Nを法として行われる。また、難読化多項式
の加算は、自然整数演算を使用して、又は、好ましくはNを法として行われ得る。鍵材料は、係数
(i=0、...、α)を含む。鍵材料は、上記のように多項式として提示され得る。実際には、鍵材料は、整数
のリスト、例えば配列として、記憶され得る。デバイスAはまた、数N及びbを受信する。多項式の操作は、例えば、例として予め定められた順序で全ての係数を列挙している、係数を含む配列の操作として実施され得る。多項式は、例えば、(次数,係数)ペアの集合を、好ましくはこのような集合内に各係数が最大で一度現れるように含む連想配列(「マップ」としても知られる)として、他のデータ構造で実装されてもよいことに留意されたい。デバイスに提供される係数
は、好ましくは、0、1、...、N−1の範囲内である。
2つのデバイスが、識別番号A及びBを有し、TTPからそれらのそれぞれの鍵材料を受信すると、それらのデバイスは、それらの鍵材料を使用して、1つの小さい共有鍵を取得することができる。デバイスAは、各インスタンスについて、次のステップを実行して、その共有鍵を取得することができる。最初に、デバイスAは、デバイスBの識別番号Bを取得し、次いで、Aは、以下を計算することによって、共有鍵を生成する。
この鍵は、K(A,B)としても参照される。ここで、Aは、デバイスAのBビット識別子である、すなわち、0≦ξ<2Bである。[デバイスBの識別子Bは、Bとしても参照されるこの識別子長とは無関係であることに留意されたい。例えば、前者は、128ビット数であり得るのに対し、前者は、数128であり得る。]
例えば、デバイスBとの通信を暗号化するためにデバイスAが生成するbビット鍵K(A,B)は、必ずしも、K(B,A)、すなわち、デバイスAとの通信を暗号化するためにデバイスBが生成する鍵に等しいとは限らない。しかしながら、これらの鍵の間の差は、以下の意味において限られている。すなわち、
が成り立つ(ここで、Nは、公開グローバル簡約整数であり、
は、モジュロ2
b演算を表し、δは、絶対値|δ|≦Δに制限される整数である)。K(A,B)は、中間鍵の一例であり、補正項の倍数、すなわち、Nの倍数を加算又は減算することによって、可能な共有鍵の集合を規定する。倍数は、上限以下、例えばΔ以下であり、下限以上、例えば−Δ以上である。
上限及び下限の値が、計算され得、選択されたパラメータに依存し得る。差に対する相対的に鋭い制限は、鍵材料のビットの半分を0に設定することによって得られ得る。この場合においては、Δ≦2m+2α+1である。ここで、mは、混合多項式の数を表し、αは、それらの次数を表す。しかしながら、他の実施形態について、同様の制限がまた、K(A,B)及びK(B,A)の導出後、異なり得るビット数を追跡することによって取得されてもよい。係数を0に設定すると仮定しなければ、制限は、Δ≦2mである。
大きい値Δは望ましくない。より大きい値は、2つのデバイスが、偶然に、すなわち、さらなる調整なく、同じ共有鍵に到達する機会を低減させる。さらに、鍵調整が開始された場合、作業は、Δとともに増大する。また、暗号学的観点からも、大きい値のΔは望ましくない。調整のために、デバイスAが、2Δ+1個の候補の間でK(B,A)を見出すことを可能にするために、デバイスBは、K(B,A)に関する少なくともlog2(2Δ+1)ビットの情報をデバイスAに送信しなければならない場合がある。これは、有効鍵長を、bビットからb−log2(2Δ+1)ビットに低減させる。小さい値のbを使用する用途については、これは特に望ましくない。第1の集合は、2Δ+1のサイズを有する。調整は、代わりに、1以上の鍵にわたるハッシュ値を、調整データとして送信してもよい。
TTPはまた、追加の調整データを送信することなく、第1の集合のサイズを低減させるために使用することができる秘密補正関数(ΛA())を計算するよう構成される。生成された鍵が常に合致するように鍵共有を修正することは、結託攻撃に対する耐性にとっては弊害があると考えられる。しかしながら、この補正関数は、もしあれば、そのような攻撃に対するわずかなさらなる脆弱性しかもたらさないようにしながら、鍵の差に対する制限が大きく低減されることを可能にする。
好ましくは、デバイスA及びBの両方が、補正関数を有する。両方が、補正係数を導出し、この補正係数を中間鍵に適用する。2つのデバイスのうちの一方のみ、例えばデバイスAが、調整に関与する必要があり得るのに対し、他方のデバイス、例えばデバイスBは、デバイスBがその補正係数を適用した、生成された鍵、例えばK(B,A)を、単に使用することができる。デバイスは、それでも、補正関数を有することなく鍵共有システムに関与することができる。この場合、より大きい調整が必要とされる。これは、システムが、補正関数を有しないデバイスと後方互換性があることを意味する。すなわち、両方のデバイスが、補正関数を使用するか、あるいは、両方が、補正関数を使用しない。補正係数は、概して、デバイスAとデバイスBとで異なる。
この秘密補正関数は、各デバイス用であり、その定義域は、可能な識別子の集合{0,1,...,2B−1}であり、その値域は、例えば、集合{0,1,2,...,2m+2α+1}である。この関数は、TTPによって計算され、好ましい実施形態においては、単調関数である、すなわち、非減少又は非増加である。
デバイスAは、前述したようにK(A,B)を計算することができるが、これは、その鍵になろうとするものではない。K(A,B)は、中間鍵の一例である。代わりに、デバイスAはまた、Λ
A(B)を計算し(又は、後述するように探索し)、
として鍵を計算する。Λ
A()は、秘密補正関数の一例である。Λ
A(B)は、補正係数の一例である。同様に、デバイスBは、
を計算する。デバイスBはまた、補正を実行するが、それ自身の補正関数を使用し、デバイスAの補正係数とは概して異なるそれ自身の補正係数を導出し、この補正係数をそれ自身の中間鍵に適用する。
一実施形態において、修正された中間鍵は、
のようにほぼ等しく、ここで、δ∈{−1,0,1}である。したがって、第2の集合は、第1の集合よりもはるかに小さい。この実施形態において、修正された中間鍵について、制限は、Δ=1である。
TTPは、システムに関与する各デバイスについて関数ΛAを計算する。TTPのみが、この関数を計算できる。なぜならば、これは、ルート鍵材料、すなわち、秘密モジュラスp1、p2、...、pm及びm個の多項式fi(x,y)に依存するからである。補正関数を生成するためのいくつかの方法が存在する。以下において、いくつかの異なるオプションが与えられる。
m個の多項式f
i(x,y)は対称であると想定しているが、これは必須ではないことに留意されたい。以下において、m個の対称多項式f
i(x,y)が、多項式係数
の対称行列として表現される。
は、二変数多項式f
i(x,y)内のx
jy
kの係数である。x及びyは、形式的変数であることを思い出してほしい。
ここで、デバイスAについての鍵生成多項式は、
として定義され得る。TTPは、この多項式の係数をデバイスAに与え、それによって、デバイスAは、
を計算することができる。説明を単純にするために、各デバイスAについて、m個の補助多項式
がさらに導入される。これらの多項式に関して、関数
が定義される。関数Λ’
Aは、有理係数を有する次数αの多項式であることに留意されたい。変数Xは、形式的であるが、動作中にデバイス識別子で置換され得る。
少なくとも有効な識別子値について、例えば、範囲{0,...,2B−1}にわたって、関数Λ’A(X)についての整数近似を提供することによって、補正関数が取得され得る。そのような近似は、整数値単調ステップ関数である。一実施形態において、補正関数は、非多項式である。この文脈において、非多項式とは、範囲{0,...,2B−1}内の全てのxについて補正関数と同じ値を有するラグランジュ補間多項式L(X)(すなわち、ΛA(x)=L(x)である)が、αよりも大きい次数を有することを意味し、実際には、典型的には次数は、はるかに大きく、例えば、L(x)の次数は、10α以上である。
例えば、補正関数Λ
A(X)は、
によって与えられ得る。ここで、
は、最も近い整数へと下向きに丸めることを意味し、したがって、
である。
この合計は、有理数にわたるものである。有理数は、分子及び分母を示す整数のペアとして数字で表現され得る。この補正関数は、他の補正関数と同様に、整数値関数である。この関数は非多項式であることに留意されたい。一般的に、非整数係数が下方向に丸められている有理多項式自体が多項式であり、また、Λ’A(X)が非整数値を扱う場合は、これは当てはまらない。
丸められている関数は、非負係数を有するXの多項式であり、それによって、Λ’A(X)は、その定義域{0,1,...,2B−1}における非減少関数であることに留意されたい。関数は、その負数で置換され得、その場合、これは非増加である。後者は、補正項が、減算される代わりに加算されるという結果を有する。両方の場合において、秘密補正関数ΛA(X)は単調である。
ΛA(X)は、その係数を記憶することによって記憶され得る。代替的に、単調であるということは、秘密補正関数ΛA(X)が、(最大)2m+2α+1個の整数ブレークポイントIA,1、IA,2、...によって一意に特徴付けられ得ることを示す。ここで、IA,k=min{x|ΛA(x)=k}である。これは、IA,k≦B<IA,k+1である場合、ΛA(B)=kであって、ここで、1≦k≦2m+2αであり、0≦B<IA,1である場合、ΛA(B)=0であり、IA,2m+2α+1≦Bである場合、ΛA(B)=2m+2α+1であることを意味する。ブレークポイントの数は、中間鍵間の差に対する制限Δに応じて増大又は低減され得る。
補正関数の係数は、有理数であり、大きい分子及び分母を有するため、補正関数の係数の代わりにブレークポイントを記憶することは、記憶空間を節減させる。
TTPは、例えば二分法といった探索アルゴリズムによって、値IA,kを探し出すことができ、これらの値をデバイスAに与える。デバイスAは、ここで、上述したように、Bを値IA,kと比較することによって、ΛA(B)を評価することができる。
Λ’Aを近似するためのいくつかの変形形態が可能である。例えば、ΛA(X)の定義において最も近い整数への丸めを使用することができる(その場合、値域は、{0,1,...,2m+2α+2}になる)。これは、丸めの形態よりもさらに一般化され得る。サイズ1の任意の範囲内でΛA(X)を指定することは、同じ結果をもたらすことになる。後者は、下方向への丸めの代わりに最も近い整数に丸めること、又は、より大きい整数の中で最も小さい整数に丸めることによって、得られ得る。整数サイズkの任意の範囲内でΛA(X)を指定することは、Δ=kにさせることになる。例えば、ΛA(X)は、最も近い偶数の整数(k=2)、又は、予め定められた整数の最も近い倍数、に丸めることによって、得られ得る。これらの方策は、ブレークポイントを記憶するのに必要とされるストレージサイズを低減させる。
TTPは、デバイスAがΛA(X)を正確に計算することができず、ΛA(X)を近似することしかできないように、デバイスに不完全な情報を与えることもできる。これは、修正された鍵におけるいくらかより大きい最大非対称性Δをもたらすが、これは依然として許容可能であり得る。
Λ’Aを近似するための種々の方法が存在する。例えば、有理多項式は、1以上の最高次数項によって近似され得る。高次近似(high-order approximation)は、デバイスによって評価され得、次いで、例えば下方向に丸められる等、丸められ得る。
例えば、秘密補正関数(Λ
A())は、有理係数を有する丸められた多項式であり得る。一実施形態において、秘密補正関数は、有理係数を有する単一項を有する丸められた多項式、例えば、
であり、ここで、Rは、非整数有理数である。例えば、一実施形態において、
である。この関数を記憶するためには、数
と、場合によっては数rと、しか記憶される必要がない。この式において、a
αは、Λ’
A(y)内のy
αの係数である。数rは、この係数を近似するのに用いられたビット数を示す。識別子ビット長が中間鍵長に等しい(B=bである)場合、rの良好な選択は、2b−2である。
説明している補正関数の全てが、鍵不等性(key-inequality)を大きく低減させる。実際、次の定理を導出することができる:Г
ξ(y)を、全ての0<η<2
bについてΛ
ξ(η)−1≦Г
ξ(η)≦Λ
ξ(η)となるような任意の実数値関数とする。
とする。
このとき、
となるようなδ’
ξ,η∈{−1,0,1}が存在する。本明細書において、
及びK’は、同じ関数を表す。
補正関数はまた、複数のインスタンスを有するときにも適用され得、その場合、デバイスは、2以上の鍵生成多項式を記憶し、これらの多項式の各々を、Nに類似する異なるパラメータを法として評価する。その場合、各鍵生成多項式は、それ自身の補正関数を伴う。
使用フェーズ
2つのデバイスが、識別番号A及びBを有し、TPPから、秘密一変数鍵多項式及び秘密補正関数を含む、それらのそれぞれの鍵材料を受信すると、それらのデバイスは、それらの鍵材料を使用して、共有鍵を取得することができる。
デバイスAは、各インスタンスについて、以下のステップを実行して、その共有鍵を取得することができる。
最初に、デバイスは、中間鍵を計算する。すなわち、デバイスAは、デバイスBの識別番号Bを取得し、次いで、Aは、以下を計算することによって、中間鍵を生成する。
すなわち、Aは、値Bについて、整数多項式として確認されるその鍵材料を評価する。鍵材料を評価した結果は整数である。次いで、デバイスAは、評価の結果を、最初は公開モジュラスNを法として、次いで、鍵モジュラス2bを法として、簡約することができる。この結果は、Aの中間鍵として参照されることになり、これは、0から2b−1までの範囲内の整数である。その部分について、デバイスBは、アイデンティティAについてその鍵材料を評価し、その結果を、Nを法として、次いで、2bを法として、簡約することによって、Aを有するBの中間鍵を生成することができる。KABは、K(A,B)の別の表記であることに留意されたい。
ルート鍵材料における二変数多項式が対称である場合、Aの中間鍵とAを有するBの中間鍵とは、必ずしも常にではないが、多くの場合、等しい。整数p1、p2、...、pm及び(任意的な)乱数∈に対する特定の要件は、鍵が、多くの場合等しく、2の鍵長乗を法としてほぼ常に互いに近くなることである。
A及びBが同じ共有鍵を取得していないとしても、KAB=KBA+δN mod 2bであるという意味において、これらの鍵が互いに近いことは確かである。本明細書において、δは、最大でも絶対値が2m+2α+1の小さい数であり、この値は、上記で示したように、係数に制限を課すことによって、さらに低減され得る。したがって、中間鍵は、他のパーティによって導出される中間鍵に関する情報を与えるが、それでも、依然として、まずまずの、可能な共有鍵の第1の集合を可能にする。可能な鍵の第1の鍵集合は、中間鍵KABによって、及び、補正項(N)の倍数を加算又は減算し、2bを法として簡約することによって、規定され得る。倍数(δ)は、上限、例えば+(2m+2α+1)よりも小さく、下限、例えば−(2m+2α+1)よりも大きい。
一例において、第1の鍵集合のサイズは、鍵1000個よりも小さく、より好ましくは、100個よりも小さく、より好ましくは、10個よりも小さい。第1の鍵集合のサイズは、例えば、多項式の数mとともに増大する。後者は、第1の鍵集合のサイズを制御するために使用され得る。
デバイスA及びBはまた、他方のパーティの識別番号を、それらの秘密補正関数に代入することによって、補正係数を導出する。中間鍵は、補正係数を用いて修正されて、補正された鍵が取得される。一実施形態において、修正された中間鍵は、
として計算される。言い換えれば、中間鍵を修正することは、補正係数Λ
A(B)を公開グローバル簡約整数Nで乗算し、乗算の結果を中間鍵に対して加算又は減算することを含む。
この手順が、可能性のある鍵非対称性を低減させることが示され得る:
ここで、δ∈{−1,0,1}である。言い換えれば、修正された中間鍵は、他のパーティによって導出される修正された中間鍵に関する情報を与え、これは、依然として、可能な補正された中間鍵の第2の集合を可能にするが、第2の集合は、第1の集合よりもはるかに小さい。
第2の鍵集合は、修正された中間鍵
によって、及び、補正項(N)の倍数を加算又は減算し、2
bを法として簡約することによって、規定され得る。倍数(δ)は、上限、例えば+1よりも小さく、下限、例えば−1よりも大きい。
補正関数は、その表現に対応するように評価され得る。例えば、補正関数が、一連の整数ブレークポイントIA,1、IA,2、...として記憶されるならば、それによって、x≦IA,1である場合、ΛA(x)=0であり、IA,i<x≦IA,i+1である場合、ΛA(x)=iである。このとき、IA,k≦B<IA,k+1である場合、ΛA(B)=kである。ここで、kは、第1の集合のサイズによって制限され、例えば、1≦k≦2m+2αであり、0≦B<IA,1である場合、ΛA(B)=0であり、IA,2m+2α+1≦Bである場合、ΛA(B)=2m+2α+1である。好ましくは、ブレークポイントは、ソート順に記憶される。補正関数がさらに丸められた場合、ブレークポイントの数が低減され、これに対応して補正係数が増大される。
秘密補正関数(ΛA())が、有理係数を有する丸められた多項式である場合、丸められた多項式は、他方のパーティの識別番号について評価され、例えば下方向/上方向に又は最も近い整数に丸められる等、丸められ得る。
この時点において、パーティA及びBの修正された中間鍵は等しい可能性が非常に高い。A及びBが同じ鍵を取得している場合、それらは、その鍵を、AとBとの間で共有される対称鍵として使用することができる。例えば、その鍵は、様々な暗号用途に使用され得る。例えば、A及びBは、その共有鍵を使用して暗号化及び/又は認証された1以上のメッセージを交換することができる。好ましくは、鍵導出アルゴリズムが、マスター鍵のさらなる保護のために、共有鍵に適用される。例えば、ハッシュ関数が適用され得る。
パーティA及びBは、鍵調整データを送信することによって、修正後にパーティA及びBが実際に同じ鍵を取得していることを検証することができる。例えば、修正された鍵のハッシュを送信することによって、又は、予め定められた文字列を暗号化したものを送信することによって等、検証が行われ得る。同じ共有鍵が取得されていないことを鍵調整データが示す場合、第1のデバイス及び第2のデバイスが同一の共有鍵へのアクセスを得るように、補正された鍵が、受信された鍵調整データに合うように修正され得る。この修正は、例えば値1及び−1といった異なる値のδを試行することを含み得る。
選択されるm個の秘密モジュラスp1、p2、...、pmは、好ましくは、互いに素である。これらの数が、互いに素である場合、モジュロ演算の間の互換性の欠如が増大される。互いに素である数は、整数を順に選択し、各新たな整数について、異なる数の全てのペアが依然として互いに素であるかどうかをテストし、互いに素でない場合には現在選択されている数を集合から除去することによって、取得され得る。この手順は、m個全ての数が選択されるまで継続する。選択されるm個の秘密モジュラスp1、p2、...、pmが互いに相違する素数であることを要求することによって、複雑度がさらに増大する。
複数のインスタンスの組合せ
説明しているシステムは、ネットワークノードが、小さいものであり得る共有鍵であって、また、ネットワークノードの識別子よりも小さいものであり得る共有鍵について合意することを可能にする。より高いセキュリティと実際的な実装との組合せは、比較的小さい、例えば、b≦8又は場合によってはb≦16であるbの値を選択することを望ましいものにする。しかしながら、そのようなbの選択は、セキュアな暗号化通信には小さすぎる。これは、例えば、識別番号長Bを512ビット以上として選択し、鍵長bを128ビット以上として選択することによって等、はるかにより大きい値のBを選択することによって、解決され得る。この場合、単一のインスタンスは、2つのネットワークノードがbビットの鍵を共有することを可能にし、これは、セキュアな通信にとって十分に長い。しかしながら、B=512にすることは、ローカル鍵材料を、これに対応してより大きくさせる。したがって、例えば携帯電話機といった中程度に強力なネットワークデバイスのみを使用しても、なお単一のインスタンスのみを必要としながら、セキュアな通信にとって十分に長い鍵をセキュアに共有するようにそのようなネットワークデバイスを構成することが可能である。それでも、依然として十分に長い共有鍵を導出しながら、ストレージ要件を低減させることが非常に望ましい。
非実際的なほどに長い鍵材料を作成することなく鍵長を増大させるための1つの方法は、複数の小さい鍵を組み合わせることである。システムは、一緒になって共有鍵を形成する複数のサブ鍵についてパーティが合意することを可能にする。サブ鍵を生成するシステムは、鍵共有インスタンスとして参照される。各インスタンスは、それ自身の独立したパラメータを有し得るが、他のインスタンスと同じ原理に沿って動作する。それでも、複数のインスタンスは、それらのパラメータのうちのいくつかを共有することができる。上述したようなシステムから取得される共有鍵、すなわち、単一のインスタンスから取得される共有鍵は、「小さい」鍵と呼ばれ、2以上の小さい鍵の組合せは、「大きい鍵」と呼ばれる。組み合わされるインスタンスの数は、「t」として参照される。
複数の小さい鍵を取得するための第1の方法は、複数の完全に独立したインスタンスを選択することである。しかしながら、小さい鍵の各々についてのセキュリティ要件は等しいため、これら複数のインスタンスは、通常、b、B、α、及びmについて同じ値を有する。TTPは、各インスタンスについて、公開モジュラスN、秘密モジュラスpi、秘密多項式fiを生成し、各インスタンス及び各ネットワークノードについて、識別子A及びローカル鍵材料KMAを生成する。
複数のインスタンスを組み合わせるための第2の方法は、各インスタンスについて同じ識別子Aを使用することである。第3の方法は、各インスタンスについて同じ公開モジュラスNを使用することである。最後に、同じ識別子A及び同じ公開モジュラスNを使用してもよい。ローカル鍵材料は、全てのインスタンスについて同じになるとは限らない。
各インスタンスはまた、それ自身の補正関数も有する。興味深いことに、2以上の小さい鍵の調整データが計算され得る。これは、調整データにおいて漏洩する可能性がある情報を低減させる。結果として、複数の小さい鍵が同時に調整される必要がある。しかしながら、第2の集合のサイズは低減されているため、これは作業量がより少ない。
例えば、大きい共有鍵のサイズは、セキュリティ要件に依存し、64又は80であり得る。コンシューマレベルのセキュリティのための典型的な値は、128であり得る。機密性の高い用途では、256又はさらにより高い値が好ましい場合がある。一実施形態において、組合せ鍵の長さは、識別子の長さBに等しい。
また、インスタンスの数「t」及びサブ鍵のサイズが選択される。異なるインスタンスにおけるサブ鍵のサイズは異なり得る。インスタンス「i」におけるサブ鍵のサイズは、「bi」として参照され得る。これらは、Σbi≧Bであるように選択される。単純にするために、添え字が落とされ、以下において、サブ鍵のサイズは、「b」と表記される。通常、サブ鍵のサイズは、全てのインスタンスにおいて等しくなり、bt=Bであるように選択される。
各デバイスは、鍵材料の異なるインスタンスを使用して、サブ鍵を生成する。次いで、共有鍵が、例えば、サブ鍵を連結することによって、サブ鍵から生成される。
とりわけ、B=32について、α=10、b=8、B=32であるパラメータ集合が、他のものよりもセキュアであると実験的に検証されており、このシステムは、32ビット鍵を作成するために4つのインスタンスを必要とする。α=3、b=8、B=32であるパラメータ集合もセキュアであるが、αがより小さいこの選択では、32ビットIDのフルスパンを使用することが望ましい。特に、長さ256の任意の間隔内では、10個未満のIDが使用されるべきである。一般に、予め定められた第1の識別閾値及び第2の識別閾値を設定し、第1の識別閾値のサイズ(例えば、256)のいずれの間隔も、第2の識別閾値(例えば、10)を超える識別値を含まないように、識別番号を選択することによって、より高いセキュリティが実現される。これは、例えば、ネットワークデバイスマネージャによって、例えば、このルールに従って識別値を生成することによって、又は、閾値を超える識別値を有するデバイスについてローカル鍵材料の生成を拒絶することによって、強化され得る。
図1は、鍵を共有するようにネットワークデバイスを構成するためのシステム200と第1のデバイス300との概略ブロック図である。デバイス300は、ネットワークデバイスと呼ばれる。
構成するためのシステム200は、一般的に、統合デバイスとして実装される。例えば、構成するためのシステム200は、サーバに含められ得る。構成するためのシステム200は、例えば、無線ネットワーク又はインターネット等のネットワークにわたるネットワークデバイスを構成することができる。しかしながら、構成するためのシステム200はまた、ネットワークデバイスを製造するための製造デバイスに統合されてもよい。
構成するためのシステム200は、鍵材料取得部210、ネットワークデバイスマネージャ230、及び計算ユニット220を備える。構成するためのシステム200は、複数のネットワークデバイスとともに動作するよう意図されている。図1は、1つのそのようなデバイスとして、第1のネットワークデバイス300を示している。
構成するためのシステム200は、ルート鍵材料とも呼ばれる秘密鍵材料を選択する。構成するためのシステム200は、次いで、複数のネットワークデバイスの各々についてのローカル鍵材料を導出する。ローカル鍵材料は、ルート鍵材料とネットワークデバイスの少なくとも1つの公開識別番号Aとから導出される。図1において、ネットワークデバイス300は、識別番号310を記憶する。ネットワークデバイスはまた、例えばインスタンスごとに1つの識別番号といった、複数の識別番号を有することもできる。ネットワークデバイスはまた、さらなる識別番号を記憶し、必要とされるときに、例えば、さらなる識別番号をハッシュすることによって、さらなる識別番号から識別番号310を導出することもできる。
ローカル鍵材料は、特定のネットワークデバイスに秘密である部分、すなわち、1つの特定のネットワークデバイス及び場合によっては信頼できるデバイスにのみアクセス可能である部分を含む。ローカル鍵材料はまた、共有鍵を取得するために必要ではあるが、秘密を保持するためにはそれほど重要でない部分も含み得る。
公開(public)及び秘密(private)という形容詞の使用は、理解のために有用であるように意図されている。全ての公開データにアクセスすることができる場合であっても、少なくとも、その用途のセキュリティを所与として、又は、鍵生成、暗号化、及び復号化のために必要とされるリソースと比較して不当に高いリソースがなければ、秘密データを計算することはできない。しかしながら、「公開」は、対応するデータが、必ずしも、構成するためのシステム200及びネットワークデバイス以外のいかなる者にも利用可能にされることを意味するわけではない。特に、公開グローバル簡約整数及び他の公開パラメータを、信頼できないパーティから秘密のままにすることは、セキュリティを増大させる。同様に、秘密データへのアクセスは、そのデータを生成したパーティ又はそのデータを必要とするパーティに制限され得、これは、セキュリティを増大させる。しかしながら、信頼できるパーティは、秘密データへのアクセスを許容され得、秘密データへのアクセスは、セキュリティを低減させる。
それらのローカル鍵材料及び他のパーティの識別番号を使用して、ネットワークデバイスは、それらデバイスの間で共有鍵について合意することができる。
鍵材料取得部210は、少なくとも1つのパラメータ集合250を電子的形態で取得するよう構成されている。パラメータ集合250は、公開グローバル簡約整数256(N)と、二変数多項式の第1の秘密集合252(fi(,))と、簡約整数の第2の秘密集合254(pi)と、を含み、第1の集合内の各二変数多項式には、第2の集合の簡約整数及び公開グローバル簡約整数256(N)が関連付けられている。パラメータ集合は、ビットサイズBの識別番号を有するネットワークノードについて生成される。パラメータ集合は、ローカル鍵材料を生成するために使用されることになり、その後、ローカル鍵材料は、共有鍵を導出するために使用されることになる。一実施形態において、小さい鍵のビットサイズbは、b<Bを満たす。これは、必須ではないが、対応する格子問題をより難しくする。一実施形態において、b≦Bであり、特に、bはBに等しくてよい。
好ましい実施形態において、鍵材料取得部210は、パラメータ集合250を電子的形態で取得するよう構成されている。複数のインスタンスが使用される場合、鍵材料取得部210は、複数のパラメータ集合を含み得る。図1は、1つのパラメータ集合250を示している。
パラメータ集合の公開グローバル簡約整数256(N)は、その集合の簡約整数254の各々とは異なる。好ましくは、パラメータ集合の公開グローバル簡約整数256(N)は、そのパラメータ集合の簡約整数254の各々よりも大きい。
鍵材料取得部210は、鍵材料を取得するために、ネットワークデバイスとのインタラションを必要としない。詳細には、鍵材料取得部210は、識別番号を必要としない。構成するためのシステム200は、鍵材料取得部210が計算ユニット220とは異なる物理的位置に配置される分散型システムであってもよい。鍵材料取得部210は、鍵材料の全て又は一部分を生成し、且つ/又は、外部ソースから鍵材料の全て又は一部分を取得する。例えば、鍵材料取得部210は、外部ソースから公開グローバル簡約整数256を受信し、第1の秘密集合252及び第2の集合254を生成するのに適している。後者は、全てのネットワークデバイスが、固定された公開グローバル簡約整数256をもって製造されることを可能にし、コストを低減させる。
鍵材料取得部210は、電子乱数生成部を含み得る。乱数生成部は、真性乱数生成部であってもよいし、擬似乱数生成部であってもよい。鍵材料取得部210は、例えば、電子乱数生成部を使用して、公開グローバル簡約整数(N)を生成することができる。公開グローバル簡約整数は公開情報であるが、ランダム性を導入することは、システムを解析することをより難しくする。
第2の集合からの簡約整数は、第1の集合内の各二変数多項式に関連付けられる。ランダム係数は、整数環、例えば、関連付けられている簡約整数等の数を法とする整数からランダムに選択され得る。
鍵材料取得部210は、電子乱数生成部を使用して、第2の秘密集合内の簡約整数piの1以上の係数を生成することができる。簡約整数が素数であることは必須ではない。しかしながら、耐性を増大させるために、それらは、素数として選択されてもよい。素数は、環の一種である体(field)を生じさせる。同じパラメータ集合、すなわち、同じ第1の秘密集合及び第2の秘密集合並びに公開グローバル簡約整数が、後に鍵を共有する必要がある全てのネットワークデバイスについて使用される。
鍵材料取得部210は、例えば、電子乱数生成部を使用して、第1の秘密集合252内の二変数多項式(fi(,))の1以上の係数を生成することができる。鍵材料取得部210は、この方式で二変数多項式の全てを生成することができる。鍵材料取得部210は、これらの多項式の最大次数、例えば、2若しくは3又は4以上を使用し、その次数よりも1つ多いランダム係数を生成することができる。
秘密集合252内の多項式の数、多項式の次数、又は最大次数等の、第1の秘密集合252のいくつかの態様を規定することが都合がよい。例えば、ストレージ要件を低減させるために、多項式内の係数のうちのいくつかが0であることが規定され得る。
第1の集合は、2つの等しい多項式を含み得る。これは機能するが、関連付けられる簡約整数が異なっていない限り、集合のサイズが低減され得る。そのため、通常、第1の集合内の2以上の二変数多項式が同じであるときはいつでも、関連付けられる簡約整数、すなわち、基礎となる環は、異なる。
一実施形態において、二変数多項式の全ての第1の秘密集合(fi(,))は、対称二変数多項式のみを含む。対称多項式のみを使用することには、各ネットワークデバイスが、構成されているネットワークデバイスのうちの任意の他のネットワークデバイスと共有鍵について合意できるという利点がある。しかしながら、二変数多項式の第1の秘密集合は、1以上の非対称多項式を含んでもよく、これには、デバイスを2つのグループに分けることができるという効果があり、第1のグループからのデバイスは、第2のグループのデバイスとのみ、共有鍵について合意することができる。
鍵材料取得部210は、式においてfi(,)としても参照される、二変数多項式の第1の秘密集合252を電子的形態で取得するよう構成されている。以下に記載の実施形態は、集合252内の全ての二変数多項式が対称であると想定している。第2のパラメータ集合の生成も、同様に行われ得る。
対称二変数多項式は、プレースホルダとして2つの形式的変数を有するfi(x,y)と表記されることもある。対称二変数多項式は、fi(x,y)=fi(y,x)を満たす。この要件は、例えば、単項式xaybの係数が単項式xbyaの係数に等しいといった、係数に対する要件に変換される。
第1の秘密集合252内の多項式の数は、用途に応じて異なって選択され得る。システムは、第1の集合及び第2の集合が単一の多項式のみを含むときに機能する。そのようなシステムにおいて、鍵は、成功裡に共有され、適度なレベルのセキュリティを提供することができる。一方、第1の集合がその中に少なくとも2つの多項式を有し、第2の集合が少なくとも2つの異なる簡約整数を有するときにのみ、異なる環にわたる混合のセキュリティ利点が実現される。
秘密集合252は、少なくとも1つの二変数多項式を含む。鍵共有デバイス100を起動する実施形態において、秘密集合252は、1つの多項式からなる。秘密集合252内に1つの多項式のみを有することは、複雑度、ストレージ要件を低減させ、速度を増大させる。しかしながら、秘密集合252内に1つの多項式のみを有することは、秘密集合252内に2以上の多項式を有することよりもセキュアでないと考えられる。なぜならば、そのような1多項式システムは、以下に記載されている合計におけるさらなる混合から恩恵を受けないからである。しかしながら、鍵共有は、適切に機能することになり、低値及び/又は低セキュリティ用途には十分にセキュアであると考えられる。
残りの部分において、秘密集合252が、少なくとも2つの対称二変数多項式を含むと想定している。一実施形態において、多項式のうちの少なくとも2つ又はさらには全てが異なる。これは、システムの解析を相当に複雑化させる。これは必須ではないが、秘密集合252は、2つの等しい多項式を含み、これらの2つの多項式が異なる環にわたって評価される場合、合計ステップにおける混合からなお恩恵を受けることができる。異なる簡約整数が異なる環を規定することに留意されたい。一実施形態において、秘密集合252は、異なる関連簡約整数に関連付けられている少なくとも2つの等しい多項式を含む。第1の集合内に2以上の等しい多項式を有することは、ストレージ要件を低減させる。一実施形態において、第2の集合は、少なくとも2つの多項式を含み、第2の集合内の全ての多項式は異なる。
秘密集合252内の多項式は、次数が異なってもよい。対称二変数多項式の次数は、2つの変数のうちの一方における、多項式の次数を意味する。例えば、x2y2+2xy+1の次数は、xにおける次数が2であるため、2に等しい。多項式は、各変数において同じ次数を有するように選択され得る。秘密集合252内の多項式が対称である場合、次数は、他の変数において同じになる。
秘密集合252内の多項式の次数は、用途に応じて異なって選択され得る。秘密集合252は、次数が1以上である少なくとも1つの対称二変数多項式を含む。一実施形態において、秘密集合252は、次数が1である多項式のみを含む。秘密集合252内に線形多項式のみを有することは、複雑度、ストレージ要件を低減させ、速度を増大させる。しかしながら、秘密集合252内に一次多項式のみを有することは、秘密集合252内に次数が少なくとも2である少なくとも1つの多項式を有することよりもセキュアでないと考えられる。なぜならば、そのようなシステムは、相当により線形であるからである。そうであっても、秘密集合252内の複数の多項式が異なる環にわたって評価される場合、結果としてもたらされる暗号化は、たとえ秘密集合252内の全ての多項式が線形であるとしても、線形でない。一実施形態において、秘密集合252は、次数が2以上である少なくとも1つの、好ましくは2つの多項式を含む。しかしながら、鍵生成、暗号化、及び復号化は、一次多項式のみが使用される場合に適切に機能することになり、低値及び/又は低セキュリティ用途には十分にセキュアであると考えられる。
より高い次数を有する1以上の多項式が十分なセキュリティを提供する限り、秘密集合252内に次数が0である1以上の多項式を有することは、システムに影響を及ぼさない。
中程度のセキュリティの用途では、秘密集合252は、次数が2である2つの対称二変数多項式を含んでもよいし、さらには、そのような2つの対称二変数多項式からなってもよい。より高いセキュリティの用途では、秘密集合252は、一方の次数が2であり、一方の次数が2よりも高い、例えば、3である2つの対称二変数多項式を含んでもよいし、さらには、そのような2つの対称二変数多項式からなってもよい。多項式の数及び/又は多項式の次数を増大させることは、リソース消費の増大と引き換えに、セキュリティをさらに増大させる。
好ましくは、簡約整数は、簡約整数の同じ集合内の任意の2つの簡約整数の差が公約数を有するように選択される。特に、公約数は、2bであり得る。すなわち、言葉で説明すると、任意の2つの簡約整数の間の差は、このインスタンスから導出されることになる小さい鍵のサイズと同数のゼロとしての最小値になる。
例えば、簡約整数及び公開グローバル簡約整数を生成するための1つの方法は、以下のようなものである。
1.最初に、公開グローバル簡約整数(N)を、例えば、規定サイズのランダムな整数として生成する。
2.各簡約整数について、整数βiを生成し、簡約整数piを、差pi=N−βi2bとして生成する。
公開グローバル簡約整数は、(α+1)B+bビット以上を有するように選択され得る。ここで、αは、第1の秘密集合内の二変数多項式の単一の変数における最高次数である。この場合、整数βiは、βi<2Bとして選択され得る。
鍵材料取得部210は、ソフトウェア若しくはハードウェア又はソフトウェアとハードウェアとの組合せでプログラムされ得る。鍵材料取得部210は、多項式操作のために計算ユニット220とリソースを共有することができる。
ネットワークデバイスマネージャ230は、ネットワークデバイス300の識別番号310(A)を電子的形態で取得するよう構成されている。ネットワークデバイスマネージャ230は、ネットワークデバイスから識別番号を受信することができる。例えば、ネットワークデバイスマネージャ230は、ネットワークを介して識別番号を受信するために、通信ユニットを含み得る又は利用し得る。例えば、ネットワークデバイスマネージャ230は、識別番号を無線信号として受信するためのアンテナを含み得る。識別番号は、ビット数として表現され得、識別番号におけるビット数bは、少なくとも、共有鍵におけるビット数だけの大きさがある。
システム200は、全てのパラメータ集合について同じ識別番号を使用することができる。しかしながら、異なるパラメータ集合について異なる識別番号を使用することも可能である。後者の場合、ネットワークマネージャ230は、複数の識別番号を取得する。
計算ユニット220は、パラメータ集合及び識別番号Aについて一変数秘密鍵多項式229を計算するよう構成されている。計算ユニット220は、鍵材料取得部210のパラメータ集合の各々に適用される。一実施形態において、計算ユニットは、パラメータ集合のうちの少なくとも2つのパラメータ集合について、又は、さらにはパラメータ集合の各々について、同じ識別番号を使用する。一実施形態において、多項式操作ユニットは、パラメータ集合のうちの少なくとも2つのパラメータ集合について、又は、さらにはパラメータ集合の全てについて、ネットワークデバイスの異なる識別番号を使用する。このように取得される一変数秘密鍵多項式及び対応する公開グローバル簡約整数は、ネットワークデバイスに送信されることになるローカル鍵材料の一部分である。
計算ユニット220は、鍵材料取得部210から接続238を介してパラメータ集合内のデータを受信する。以下において、計算ユニット220が、パラメータ集合から一変数秘密鍵多項式をどのように決定するかが説明される。他のパラメータ集合からの一変数秘密鍵多項式の生成も、同様に行われる。
計算ユニット220は、以下のように、一変数秘密鍵多項式229を計算することができる。
一変数多項式は、現在処理されているパラメータ集合の第1の秘密集合内の多項式の各々に、識別整数Aを代入することによって、取得される。二変数多項式の1つの変数のみについて値を代入することによって、二変数多項式は、一変数多項式に簡約される。次いで、結果としてもたらされた一変数多項式が、識別整数Aが代入された二変数多項式に関連付けられている簡約整数を法として簡約される。結果としてもたらされた一変数多項式の集合が、例えば、多項式内のyの等しい冪の係数を加算することによって合計される。これは、
における
についての式から得られ得る。
f
i(x,y)が、第1の秘密集合内の二変数多項式のうちの1つであると仮定する。この多項式の係数は、環
から得られる。すなわち、第1の集合内の多項式の係数は、整数環から得られる。単純にするために、変数x及びyが、第1の集合内の整数の形式的変数を表すために使用される。
代入後、計算ユニット220は、fi(A,y)を取得する。計算ユニット220は、さらに、この項を、piを法として簡約するよう構成されている。係数は、システムが演算する環、例えば、Zpにおいて、例えば、pを法として簡約することによって簡約される。好ましくは、計算ユニット220は、その結果を、正準形、すなわち、予め定められた標準化された表現にする。適切な正準形は、単項式の次数でソートされた係数の表現である。代替的に、代入は、yについてのものであってもよい。
識別番号がシステムにおいて「ランダム」に作用することを確実にするために、格子攻撃が単純化しないことを保証するための、チェーン内のポイントにおけるランダム化ステップが望ましい。特に、ネットワークデバイスに、特定の順序に従った識別番号、例えば、シリアル番号が与えられる場合、そのようなランダム化ステップが望ましい。例えばsha−256といった暗号学的ハッシュが、例えば、識別番号に適用され得、その結果が、Bビットに短縮される。
さらに、識別番号は、より多くのビットに拡張され得る。例えば、B’ビットの識別番号が、例えば、ハッシング及び/又は連結によってBビットに拡張され得る。ここで、B’<Bである。例えば、識別番号Aは、H(A)又はA||H(A)に拡張され得る。ここで、Hはハッシングを表し、||は連結を表す。連結は、LSB側で行われる。暗号学的ハッシュ等の高度に非線形なハッシュが、この演算には好ましい。
第1の集合が対称多項式のみを含む場合、識別整数Aの代入は、二変数多項式の2つの変数のうちのいずれか一方におけるものであり得る。しかしながら、代入が非対称多項式において行われる場合、より注意が必要である。例えば、計算ユニット220は、第1のネットワークデバイス300が第1のグループにあるか又は第2のグループにあるかを得るよう構成され得る。第1のグループ及び第2のグループはそれぞれ、二変数多項式の第1の変数及び第2の変数に関連付けられる。第1のグループ内のネットワークデバイスについては、常に第1の変数が使用される。第2のグループ内のネットワークデバイスについては、常に第2の変数が使用される。
図1は、この機能を実装するための1つの可能な態様を示している。図1は、代入ユニット222、多項式簡約ユニット224、多項式加算ユニット226、及び、一変数多項式の集合の合計228を示している。後者は、一変数秘密鍵多項式229になる。
代入ユニット222、多項式簡約ユニット224、及び多項式加算ユニット226は、多項式操作ユニットに編成され得る。このオプションが、図1において破線で示されている。
これらは、次のように動作することができる。代入ユニット222は、識別整数Aを、第1の集合の二変数多項式に代入する。代入ユニット222は、項をまとめて、正準形の結果にすることができるが、これは準備されていてもよい。多項式簡約ユニット224は、代入の結果を受信し、この結果を、代入された二変数多項式に関連付けられている簡約整数を法として簡約する。
識別整数Aを上記特定の多項式fi(A,y)に代入し、上記特定の多項式に関連付けられている簡約整数を法として簡約した結果は、多項式加算ユニット226による合計の前に、正準形での係数のリストとして表現される。変数yは、形式的変数として作用する。この代入は、単にfi(A,)と表記されることがある。
多項式加算ユニット226は、簡約された一変数多項式を受信し、それら簡約された一変数多項式を合計228における当座の総計(running total)に加算する。合計228は、一変数秘密鍵多項式の生成の前に、0にリセットされている。多項式加算ユニット226は、自然演算を使用して、又は、パラメータ集合に関連付けられている公開グローバル簡約整数を法として、係数に関して多項式を加算することができる。
第1の秘密集合の全ての多項式がこのように処理されると、合計228における結果が、一変数秘密鍵多項式として使用され得る。例えば、合計228における、結果としてもたらされた一変数秘密鍵多項式が、係数のリストとして正準形で表現され得る。
システム200が複数のインスタンスを使用する場合、すなわち、システム200が複数のパラメータ集合を使用する場合、計算ユニット220は、それらのパラメータ集合の各々について一変数秘密鍵多項式を決定する。必要とされる場合、ユニット220は、何らかの情報を再使用することができ、例えば、ユニット220は、同じ識別番号Aを使用して、全ての一変数秘密鍵多項式を生成することができる。より高いセキュリティのために、パラメータ集合は、独立しており、好ましくは、異なる識別番号を使用する。
計算ユニット220はまた、識別番号310及びパラメータ集合250の両方に対応する補正関数271を計算するよう構成されている補正関数ユニット270を含む。例えば、ユニット270は、以下を計算するよう構成され得る。
ここで、
である。
間隔0−2Bの中での繰り返しの交差によって、ブレークポイントが計算され得る。ブレークポイントは、記憶空間の量を低減させる。さらに、ブレークポイントはまた、ネットワークデバイスに記憶される情報の量も低減させる。補正関数の個々の係数が記憶される必要はない。これらの有理係数は、ルート鍵材料から決定され、デバイスは、ブレークポイントを使用して、依然として補正関数を評価することができるが、これを越えて追加の情報を有していない。これは、セキュリティを向上させる。
代替的に、Λ’Aの最高次数項の1つの係数(好ましくは)又は複数の係数が計算されてもよい。これは、一変数多項式fi(A,X)の最高次数項を選択することによって行われ、整数にわたって評価され、整数にわたって加算され得る。この単一の数は、デバイスAのローカル鍵材料とともに配布され得る。
ネットワークデバイスマネージャ230は、さらに、生成された一変数秘密鍵多項式229、対応する公開グローバル簡約整数256(N)、及び補正関数271を、ネットワークデバイスにおいて電子的に記憶させるよう構成されている。第1のネットワークデバイス300は、一変数秘密鍵多項式229及びその1以上の識別番号を使用して、同じルート鍵材料から構成されている鍵を、他のデバイスと共有することができる。ネットワークデバイスマネージャ230はまた、パラメータB及びbを、ネットワークデバイスにおいて電子的に記憶させるよう構成され得る。
電子的に記憶させることは、デバイスマネージャが第1のデバイスに情報を電子的に送信し、その後、第1のデバイスが情報を記憶することを含み得る。
計算ユニット220は、ソフトウェアにより実装されてもよいが、計算ユニット220は、ハードウェアによる実装に特に適している。多項式簡約ユニット224のみが、ハードウェアにより実装される場合、大幅な速度向上が得られる。システム200の機能のうち、ユニット224のハードウェアバージョンによって実行されない部分は、プロセッサでのソフトウェア動作で実行され得る。
図1は、第1のネットワークデバイス300から識別番号メッセージ232を受信する計算ユニット220、計算デバイス220から秘密鍵材料メッセージ236を受信する第1のネットワークデバイス300を示している。秘密鍵材料メッセージ236は、公開グローバル簡約整数、一変数秘密鍵多項式、及び補正関数を含み得る。
これらのメッセージは、通常、ネットワークデバイスマネージャ230を通じて送受信される。秘密鍵材料メッセージ236は、複数のメッセージにわたって分割され得る。複数のインスタンスが使用される場合、それらは、それらの対応する秘密鍵材料メッセージを組み合わせて単一のメッセージにすることができる。
構成するためのシステム200は、第1のネットワークデバイス300の識別番号を生成することによって識別番号を取得するよう構成され得る。そのような構成は、製造設備によく適している。その場合、第1のネットワークデバイス300は、識別番号メッセージ232を送信する代わりに、構成システム200から識別番号メッセージ232を受信する。第1のネットワークデバイス300は、例えば、鍵材料取得部210又は計算ユニット220から識別番号メッセージ232を受信する。
図2は、第1のネットワークデバイス300及び第2のネットワークデバイス350の概略ブロック図である。第1のネットワークデバイス300及び第2のネットワークデバイス350は、一緒に共有鍵を決定するよう構成されている。
第2のネットワークデバイス350は、ネットワークデバイス300と同じ設計のものであってよい。第1のネットワークデバイス300のみが詳細に説明されるが、第2のネットワークデバイス350は、同じ又は同様であり得る。図2は、第2のネットワークデバイス350が識別番号355を記憶することしか示していない。第2のネットワークデバイス350の識別番号355は、公開であり、鍵を共有するためにネットワークデバイス300と交換され得る。第2のネットワークデバイス350はまた、対応する補正関数とともに、ローカル鍵材料(図示せず)、特に、識別番号355に対応する1以上の一変数秘密鍵多項式を必要とする。
第1のネットワークデバイス300は、電子ストレージ320、通信ユニット342、計算ユニット330、及び鍵導出デバイス340を備える。
ストレージ320は、デバイス300のローカル鍵材料を記憶する。デバイスは、ローカル鍵材料の単一のインスタンス、すなわち、1つの一変数秘密鍵多項式及び1つの公開グローバル簡約整数をもって動作するよう構成され得る。図2に示す実施形態において、デバイス300は、鍵材料集合370を備える。デバイス300は、複数の鍵材料集合を備えることができる。鍵材料集合の数は、2であってもよいし、2より多くてもよい。デバイス300の鍵材料は、システム200等の、鍵を共有するようにネットワークデバイスを構成するためのシステムから取得されているものであり得る。鍵材料は、一変数秘密鍵多項式、公開グローバル簡約整数、及び補正関数を含む。例えば、鍵材料370は、一変数秘密鍵多項式372、公開グローバル簡約整数374、及び補正関数376を含む。公開グローバル簡約整数は、いくつかの又は全ての鍵材料の間で共有され得る。しかしながら、秘密鍵多項式は、好ましくは、全ての集合において異なる。
ストレージ320は、鍵材料における一変数秘密鍵多項式を生成するために使用された識別番号310(A)も記憶する。鍵材料はまた、特に、各鍵材料について異なる識別番号が使用される場合、識別番号も含み得る。
ストレージ320は、例えば、フラッシュメモリ等の不揮発性の書き込み可能なメモリといったメモリであり得る。ストレージ320は、例えば、ハードディスク等の磁気ストレージといった他のタイプのストレージであってもよい。ストレージ320は、ライトワンスメモリであってもよい。
通信ユニット342は、第2のネットワークデバイス350の識別番号355を取得するよう構成されている。通信ユニット342は、有線接続や、例えば、Wi−Fi(登録商標)接続、Bluetooth(登録商標)接続、又はZigbee(登録商標)接続として実装され得る。通信ユニット342は、例えばインターネットといったデータネットワークを介する接続で実装されてもよい。
計算ユニット330は、ストレージ320内の鍵材料370に対応する、デバイス350と共有される鍵を導出するよう構成されている。デバイス350は、鍵材料370に対応する鍵材料を有する。以下において、計算ユニット330が、鍵材料370を使用して、単一の共有鍵をどのように導出できるかが説明される。しかしながら、複数のインスタンスが組み合わされてもよい。
計算ユニット330は、代入ユニット332及び整数簡約ユニット334を含み得る。代入ユニット332及び整数簡約ユニット334は、一緒になって多項式操作ユニット331を形成する。後者が、破線で示されている。
計算ユニット330は、識別整数Aを一変数秘密鍵多項式372に代入し、公開グローバル簡約整数374を法として、代入の結果を簡約するよう構成されている。計算ユニット330は、代入ユニット222及び多項式簡約ユニット224と同様のハードウェア又はソフトウェアを使用することができる。第1のネットワークデバイス300は、第1の秘密集合及び第2の秘密集合にアクセスすることができないことに留意されたい。簡約ユニット334の結果は、中間鍵である。
計算ユニット330は、補正関数評価ユニット392及び鍵修正ユニット394をさらに含む。後者2つは、破線で示されている鍵補正ユニット391を形成する。
補正関数評価ユニット392は、第2の識別番号を秘密補正関数に代入して、補正係数を取得するよう構成されている。補正関数の評価は、関数の記憶のタイプに適している評価方法を使用する。例えば、補正関数376が、一連のブレークポイントとして記憶されている場合、関数は、識別番号355が間に含まれる2つのブレークポイントを見出すことによって評価される。例えば、補正関数376が、近似有理多項式として記憶されている場合、有理多項式が、例えば有理数として評価され、丸められる。
その結果が、中間鍵を修正するために使用することができる補正係数である。
鍵修正ユニット394は、中間鍵及び補正係数を受信し、補正係数を用いて中間鍵を修正して、補正された鍵を取得するよう構成されている。例えば、鍵修正ユニット394は、補正係数を公開グローバルモジュラス374で乗算し、その結果を中間鍵に加算することができる。後者が、次いで、2bを法として簡約される。
任意的に、計算ユニット330は、鍵調整ユニット336を含む。デバイス300及びデバイス350が同じ共有鍵に達しないということが起こり得る。アプリケーションは、この可能性を無視することを選択することができる。そうする際、ネットワークデバイスのいくつかのペアは、それらが共通の共有鍵を有しないため、暗号化及び/又は認証された通信に関与することができない場合がある。いくつかの用途について、ネットワークデバイスのいくつかのペアのみがセキュアにされていることで十分であり、例えば、アドホックネットワークが、この一例である。デバイス300及び350はまた、任意的な鍵調整ユニット336を有するよう構成されてもよい。2つのデバイス300及び350のうちの一方において、鍵調整ユニット336は、生成された鍵から鍵調整データを生成し、鍵調整データを他方のデバイスに送信する。他方のデバイスにおいて、鍵調整ユニット336は、受信された鍵調整データを使用して、両方のデバイスにおいて導出された共有鍵が同じであるように、生成された鍵を適合させる。
鍵調整ユニット336が鍵を適合させるために使用される場合、鍵調整ユニットは、生成された鍵が鍵調整データに合うまで、生成された鍵を適合させる。すなわち、適合された鍵から鍵調整データを導出することが、その鍵について、受信された鍵調整データと同じ結果を与えるであろう。鍵を適合させることは、公開グローバル簡約整数の倍数を加算し、2bを法として簡約すること、すなわち、KBA+δN mod 2bによって行われ得る。
例えば、デバイス300における鍵調整ユニット336は、生成された小さい鍵の所定数の最下位ビットを、鍵調整データとして取得する。例えば、2c≧1+2Dであるように、所定数cが、最小数として選択され得る。ここで、αは、第1の秘密集合内の多項式の次数であり、mは、多項式の数である。Dは、第2の集合内の鍵の残っている数を表す、すなわち、修正された中間鍵における残っている不確実性を表す。好ましくは、D=3である。なぜならば、これは、1、−1、又は0のいずれかであるδの値に対応するからである。デバイス350は、調整データとして、修正された中間鍵の最下位3ビットを送信することができる。最下位ビットが調整データとして使用される場合、鍵調整ユニットは、最下位cビットが、受信されたビットと同じになるまで、倍数を加算する。b=8であるとしても、5ビットが各インスタンスについて残る。これら5ビットは、追加の調整を必要としないが、複数のインスタンス、例えば、80ビット共有鍵を取得するための16個のインスタンスを組み合わせることによって、任意の所望の長さの鍵が取得され得る。
鍵導出デバイス340は、導出された1以上の鍵、例えば、1以上の修正された中間鍵から、共有鍵を導出するよう構成されている。共有鍵は、いわゆる対称鍵である。簡約の結果は整数である。この結果は、例えば、その係数を任意的に調整後に連結することによって、ほぼ直接的に鍵として使用され得る。
簡約の結果から共有鍵を導出することは、例えば、Open Mobile AllianceのOMA DRM仕様(OMA−TS−DRM−DRM−V2_0_2−20080723−A,section 7.1.2 KDF)において定義されている関数KDF及び同様の関数といった鍵導出関数を適用することを含み得る。
bビット鍵ごとに鍵調整データを送受信する代わりに、鍵調整ユニットはまた、可能であればKDFのような鍵調整アルゴリズムの後でも、集約された大きい共有鍵にわたる鍵調整データを生成するよう構成され得る。この場合、鍵調整ユニットは、鍵調整データを満たす大きい鍵が見出されるまで、全ての小さい鍵を同時に適合させる。同時での複数の小さい鍵の変更は、はるかに多くの作業量であるが、小さい鍵にとって利用可能な直接的な情報はより少ないため、大きい鍵にわたって鍵調整データを生成することは、はるかにセキュアである。
図2は、第1のネットワークデバイス300における任意的な暗号化ユニット345をさらに示している。暗号化ユニット345は、共有鍵を使用するよう構成されている。例えば、暗号化ユニット345は、共有対称鍵を用いて電子メッセージを暗号化するよう構成されている暗号化ユニットであり得る。例えば、暗号化ユニット345は、共有対称鍵を用いて電子メッセージを復号化するよう構成されている復号化ユニットであってもよい。
図3aは、鍵共有システム100の概略ブロック図である。
鍵共有システム100は、構成するためのシステム200及び複数のネットワークデバイスを有する。ネットワークデバイス300、350、及び360が図示されている。ネットワークデバイスの各々は、構成するためのシステム200から、識別番号、一変数秘密鍵多項式、グローバル簡約整数、及び補正関数を受信する。この情報を使用して、ネットワークデバイスは、共有鍵について合意することができる。例えば、第1のネットワークデバイス300及び第2のネットワークデバイス350の各々は、それらの識別番号を他方のパーティに送信する。次いで、それらのネットワークデバイスは、例えば、両方とも最初に中間鍵を導出し、両方とも補正され修正された中間鍵を導出することによって、共有鍵を計算することができる。最後に、それら2つのネットワークデバイスのうちの一方が、調整データを送信し得るのに対し、他方のネットワークデバイスが、受信された調整データに合うように、その修正された中間鍵を適合させる。
第1のネットワークデバイス300と第2のネットワークデバイス350との間の通信の知識、及び、さらにはグローバル簡約整数の知識を有する者も、不当に大きいリソースを使用しなければ、それらの共有鍵を取得することはできない。デバイス360でさえ、デバイス300とデバイス350との間で共有される鍵を導出することはできない。
図3bは、類似する鍵共有システム102の概略ブロック図である。システム102は、ネットワークデバイスが、個別化デバイスとも呼ばれる構成サーバ110から、それらの識別番号を受信することを除いて、システム100と同じである。その後、ネットワークデバイスは、それらの識別番号を送信することによって、構成するためのシステム200に登録する。デバイス360でさえ、デバイス300とデバイス350との間で共有される鍵を取得することはできない。
構成サーバ110は、他の目的でも使用される識別番号を割り当てることができる。例えば、構成サーバ110は、MACアドレス等のネットワークアドレスを割り当てることができる。ネットワークアドレスは、ネットワークノードによって、ネットワークトラフィックを第2のネットワークノードからネットワークノード自身へとルーティングするために使用される。しかしながら、ネットワークアドレスはまた、識別番号の役割も果たすことができる。この場合、ネットワークノードは、そのネットワークアドレスを、システム200に利用可能にし、ネットワークノードがそのネットワークアドレスを識別番号として使用して暗号化通信に関与することを可能にする一変数秘密鍵多項式を受信する。識別番号が、完全エントロピー、すなわち、Bビットのエントロピーを有することが好ましい。しかしながら、これを実現することが可能でない場合、その番号を識別番号として使用する前に、例えばハッシュ関数といったエントロピー平滑化関数を実行することが好ましい。
構成サーバ110は、近い識別番号、すなわち、最上位ビットの多く又は全てを共有する識別番号を回避することによって、システムのセキュリティを増大させるための識別番号を生成することができる。例えば、サーバ110は、識別番号をランダムに、例えば、真性ランダム又は擬似ランダムに、生成することができる。例えば10ビットといった所定数のランダムビットを識別番号に付加することでも、十分である。識別番号は、A1||A2の形態を有することができる。ここで、A1は、ランダムではなく、例えば、シリアル番号、ネットワークアドレス等であり、A2は、ランダムである。A2は、乱数生成部によって生成され得る。A2はまた、A1をハッシュすることによって生成され得る。例えばHMACといった鍵付きハッシュが使用される場合、このA2は、ランダム性から、当該鍵にアクセスできないパーティには識別できない。鍵は、サーバ110によって生成されて記憶され得る。
サーバ110は、システム200に含められ得、例えば、ネットワークマネージャ230に組み込まれ得る。
一般的に、デバイス200及び300の各々は、デバイス200及び300に記憶されている適切なソフトウェアを実行するマイクロプロセッサ(図示せず)を備え、例えば、そのようなソフトウェアは、例えば、RAM等の揮発性メモリ又はフラッシュ等の不揮発性メモリ(図示せず)といった対応するメモリにダウンロード及び/又は記憶されているものであり得る。デバイス350及び360も、マイクロプロセッサ及びメモリ(図示せず)を備えることができる。代替的に、デバイス200及び300は、プログラマブルロジックにより、例えば、フィールドプログラマブルゲートアレイ(FPGA)として、全て又は一部分が実装されてもよい。デバイス200及び300は、いわゆる特定用途向け集積回路(ASIC)、すなわち、それらの特定の使用に合わせてカスタマイズされている集積回路(IC)として、全て又は一部分が実装されてもよい。
図4は、集積回路400の概略ブロック図である。集積回路400は、プロセッサ420、メモリ430、及びI/Oユニット440を備える。集積回路400のこれらのユニットは、バス等のインターコネクト410を介して互いの間で通信することができる。プロセッサ420は、例えば、デバイスを構成するための方法又は共有鍵を決定するための方法といった、本明細書に記載の方法を実行するための、メモリ430に記憶されているソフトウェアを実行するよう構成されている。このように、集積回路400は、構成するためのシステム200として、又は、第1のネットワークデバイス300等のネットワークデバイスとして、構成され得る、メモリ430の一部分は、必要に応じて、公開グローバル簡約整数、二変数多項式の第1の秘密集合、簡約整数の第2の秘密集合、識別番号、平文メッセージ、及び/又は暗号化メッセージを記憶することができる。
I/Oユニット440は、デバイス200又は300等の他のデバイスと通信して、例えば、二変数多項式の第1の秘密集合252等の鍵データ、及び、可能であれば、サイズ、次数、モジュラス等といった関連パラメータを受信するために、又は、暗号化及び/又は認証されたメッセージを送受信するために、使用され得る。I/Oユニット440は、無線通信のためのアンテナを含み得る。I/Oユニット440は、有線通信のための電気インターフェースを含み得る。
集積回路400は、コンピュータ、携帯電話機等のモバイル通信デバイス等に統合され得る。集積回路400はまた、例えば、LEDデバイスを有して構成されているライティングデバイスに統合されてもよい。例えば、ネットワークデバイスとして、LED等のライティングユニットを有して構成されている集積回路400は、共有対称鍵を用いて暗号化されたコマンドを受信することができる。
例えば、ライティングデバイスに組み込まれている複数のネットワークデバイスは、リンクがノード間の共有鍵を使用して暗号化されている暗号化ネットワークのノードを形成することができる。
集積回路400は、高速の対称鍵共有を望む他のデバイスに統合されてもよい。集積回路400は、決済システムに統合されてもよい。集積回路400は、車両に統合されてもよい。複数のそのような車両が、車両間メッセージが共有鍵を使用して暗号化及び/又は認証される車両間通信のために構成されてもよい。
多項式操作は、プロセッサ420によって、メモリ430に記憶されている多項式操作ソフトウェアによって命令されるように実行され得るが、鍵生成、及び一変数多項式の計算のタスクは、集積回路400が、任意的な多項式操作ユニット450を有して構成される場合、より高速である。この実施形態において、多項式操作ユニット450は、代入演算及び簡約演算を実行するためのハードウェアユニットである。
一般的に、デバイス200及び300の各々は、デバイス200及び300に記憶されている適切なソフトウェアを実行するマイクロプロセッサ(図示せず)を備え、例えば、そのようなソフトウェアは、例えば、RAM等の揮発性メモリ又はフラッシュ等の不揮発性メモリ(図示せず)といった対応するメモリにダウンロード及び/又は記憶されているものであり得る。代替的に、デバイス200及び300は、プログラマブルロジックにより、例えば、フィールドプログラマブルゲートアレイ(FPGA)として、全て又は一部分が実装されてもよい。
図5は、第2のデバイスとともに共有鍵を決定するための方法500をフローチャートとして概略的に示している。
方法500は、
第1の識別番号(A)、秘密補正関数(ΛA())、第1の秘密一変数鍵多項式(372、GA())を記憶するステップ502と、
第2のデバイスの第2の識別番号(355、B)を取得するステップ504と、
第2の識別番号を秘密一変数鍵多項式に代入して、中間鍵を取得するステップ506であって、中間鍵は、第1の鍵集合を規定する、ステップ506と、
第2の識別番号を秘密補正関数に代入して、補正係数を取得するステップ508と、
補正係数を用いて中間鍵を修正して、補正された鍵を取得するステップ510であって、補正された鍵は、第2の鍵集合を規定し、第2の鍵集合は、第1の鍵集合よりも小さい、ステップ510と、
を含む。
共有鍵は、少なくとも補正された鍵から導出され得る。
図6は、鍵を共有するようにデバイス300を構成するための方法600をフローチャートとして概略的に示している。
方法600は、
ルート鍵材料を電子的形態で取得するステップ602と、
デバイスの第1の識別番号(310、A)を電子的形態で取得するステップ604と、
デバイスについて、ルート鍵材料及び第1の識別番号(310、A)から、秘密一変数鍵多項式(229)及び秘密補正関数(ΛA())を計算するステップ606と、
生成された秘密一変数鍵多項式(229、236)及び秘密補正関数(ΛA())を、デバイスにおいて記憶させるステップ608と、
を含む。
当業者には明らかであるように、本方法を実行する多くの異なる態様が可能である。例えば、ステップの順序が、変更されてもよいし、いくつかのステップが、並列に実行されてもよい。さらに、ステップの間に、他の方法ステップが挿入されてもよい。挿入されるステップは、本明細書に記載されているような方法の改良を表すこともあるし、本明細書に記載されているような方法と無関係であることもある。
一実施形態に従った方法は、プロセッサシステムに、方法500又は600を実行させる命令を含むソフトウェアを使用して実行され得る。ソフトウェアは、システムの特定のサブエンティティによって行われるステップのみを含み得る。ソフトウェアは、ハードディスク、フロッピー(登録商標)、メモリ等といった適切な記憶媒体に記憶され得る。ソフトウェアは、ワイヤに沿って若しくは無線で、又は、例えばインターネットといったデータネットワークを用いて、信号として伝送され得る。ソフトウェアは、ダウンロード及び/又はサーバ上でのリモート使用のために利用可能にされ得る。方法は、本方法を実行するように、例えばフィールドプログラマブルゲートアレイ(FPGA)といったプログラマブルロジックを構成するよう構成されているビットストリームを使用して実行され得る。
本発明はまた、コンピュータプログラム、特に、本発明を実施するよう適合されている、キャリア上又はキャリア内のコンピュータプログラムにも拡張される。プログラムは、ソースコード、オブジェクトコード、コード中間ソース、及び、部分的にコンパイルされた形態、又は、実施形態に従った方法の実装において使用するのに適した任意の他の形態等のオブジェクトコードの形態であり得る。コンピュータプログラム製品に関連する実施形態は、記載されている方法のうちの少なくとも1つ方法の処理ステップの各々に対応するコンピュータ実行可能な命令を含む。これらの命令は、サブルーチンに細分割され得る、且つ/又は、静的若しくは動的にリンクされ得る1以上のファイルに記憶され得る。コンピュータプログラム製品に関連する別の実施形態は、記載されているシステム及び/又は製品のうちの少なくとも1つの手段の各々に対応するコンピュータ実行可能な命令を含む。
上述した実施形態は、本発明を限定するものではなく例示するものであり、当業者であれば多くの代替実施形態を設計することが可能であることに留意されたい。
バイオメトリック検証のための有利な実施形態が、以下の項目に記載される。本出願人は、これによって、本出願又は本出願から導出される任意のさらなる出願の手続き中に、そのような項目及び/又はそのような項目の組合せ及び/又は本明細書から得られる特徴に対して新たな請求項が策定され得ることを告示する。
1.第2のデバイス(350)とともに共有鍵を決定するよう構成されている第1のデバイス(300)であって、
第1の識別番号(310、A)と、第1の秘密補正関数(376、ΛA())と、第1の秘密一変数鍵多項式(372、GA())と、を記憶する電子ストレージ(320)であって、
第2のデバイス(350)は、第2の秘密一変数鍵多項式(GB())及び第2の補正関数(ΛB())にアクセスすることができ、第1の識別番号(310、A)を第2の秘密一変数鍵多項式(GB())に代入することから第2の中間鍵を取得するよう構成されており、補正係数を用いて第2の中間鍵を修正することから第2の補正された鍵を取得するよう構成されている、
電子ストレージ(320)と、
第2のデバイスの第2の識別番号(355、B)を取得するよう構成されている通信ユニット(342)と、
第2の識別番号(355)を第1の秘密一変数鍵多項式(372)に代入して、第1の中間鍵を取得するよう構成されている多項式操作ユニット(331)であって、第1の中間鍵は、第1の鍵集合を規定し、第2のデバイスによって導出される第2の中間鍵は、第1の鍵集合内に含まれる、多項式操作ユニット(331)と、
第2の識別番号(355)を第1の秘密補正関数(376)に代入して、第1の補正係数を取得し、第1の補正係数を用いて第1の中間鍵を修正して、第1の補正された鍵を取得するよう構成されている鍵補正ユニット(391)であって、第1の補正された鍵は、第2の鍵集合を規定し、第2の鍵集合は、第1の鍵集合よりも小さく、第2の鍵集合は、第2の補正された鍵を含み、第1のデバイスは、少なくとも第1の補正された鍵から共有鍵を導出するよう構成されている、鍵補正ユニット(391)と、
を備える、第1のデバイス(300)。
2.第1の秘密補正関数(376)は、単調且つ/又は非多項式である、項目1に記載の第1のデバイス(300)。
3.第1の秘密補正関数(ΛA())は、有理係数を有する丸められた多項式である、項目1〜2のいずれか1つに記載の第1のデバイス(300)。
4.第1の秘密補正関数(Λ
A())は、有理係数を有する単一の項を有する丸められた多項式(
)である、項目3に記載の第1のデバイス(300)。
5.第1の秘密補正関数(376、ΛA())は、x≦IA,1である場合、ΛA(x)=0であり、IA,i<x≦IA,i+1である場合、ΛA(x)=iであるように、昇順の一連の整数ブレークポイントIA,1、IA,2、...として記憶される、項目2に記載の第1のデバイス(300)。
6.第1の秘密一変数鍵多項式(372、GA())は、二変数多項式(252、fi(,))の第1の秘密集合の各特定の多項式について、第1の識別番号(A)を該特定の多項式(fi(A,))に代入し、該特定の多項式に関連付けられている簡約整数を法として簡約し、一変数多項式の集合を合計することにより、一変数多項式の集合を取得することによって、デバイス(300)を構成するためのシステム(200)によって取得されている、項目1〜5のいずれか1つに記載の第1のデバイス(300)。
7.秘密簡約整数piは、βi<2Bである何らかの整数βi、及び、公開グローバル簡約整数(256、N)について、pi=N−βi2bを満たす、項目6に記載の第1のデバイス(300)。
8.第1の鍵集合は、第1の中間鍵によって、補正項の倍数を加算又は減算することにより規定され、倍数は、上限よりも小さく下限よりも大きい、項目1〜7のいずれか1つに記載の第1のデバイス(300)。
9.電子ストレージ(320)は、公開グローバル簡約整数(374、N)をさらに記憶し、第1の中間鍵を修正することは、第1の補正係数を公開グローバル簡約整数(374、N)で乗算し、乗算の結果を第1の中間鍵に対して加算又は減算することを含む、項目1〜8のいずれか1つに記載の第1のデバイス(300)。
10.多項式操作ユニットは、さらに、公開グローバル簡約整数(N)を法として代入の結果を簡約し、2bを法として、公開グローバル簡約整数(N)を法とする簡約の結果をさらに簡約して、第1の中間鍵を取得するよう構成されており、第1の中間鍵は、bビット長であり、第1の中間鍵を修正することは、加算又は減算の後に、2bを法として簡約することをさらに含む、項目9に記載の第1のデバイス(300)。
11.通信ユニット(342)は、さらに、第2のデバイスから鍵調整データを受信するよう構成されており、第1のデバイスは、受信された鍵調整データに合うように第1の補正された鍵を修正するよう構成されている鍵調整ユニット(336)を備え、共有鍵は、修正された第1の補正された鍵から導出される、項目1〜10のいずれか1つに記載の第1のデバイス(300)。
12.鍵を共有するように第1のデバイス(300)を構成するためのシステム(200)であって、
ルート鍵材料を電子的形態で取得するよう構成されている鍵材料取得部(210)と、
少なくとも、第1のデバイスの第1の識別番号(310、A)を電子的形態で取得するデバイスマネージャ(230)と、
デバイスについて、項目1に記載の第1のデバイスにおいて使用するために、ルート鍵材料及び第1の識別番号(310、A)から秘密一変数鍵多項式(229、GA())及び秘密補正関数(271、ΛA())を計算する計算ユニット(220)と、
を備え、
デバイスマネージャ(230)は、さらに、生成された秘密一変数鍵多項式(229、236)及び秘密補正関数(271、ΛA())を、第1のデバイスにおいて電子的に記憶させるよう構成されている、鍵を共有するように第1のデバイス(300)を構成するためのシステム(200)。
13.ルート鍵材料は、二変数多項式の第1の秘密集合(252、fi(,))、及び、簡約整数の第2の秘密集合(254、pi)を含み、第1の集合内の各二変数多項式には、第2の集合の簡約整数が関連付けられており、鍵材料取得部(210)は、さらに、公開グローバル簡約整数(256、N)を取得するよう構成されており、
計算ユニット(220)は、デバイスについて、
第1の秘密集合の各特定の多項式について、第1の識別番号(A)を該特定の多項式(fi(A,))に代入し、該特定の多項式に関連付けられている簡約整数を法として簡約することによって、一変数多項式の集合を取得し、
一変数多項式の集合を合計する
ことによって、第1の秘密集合及び第2の秘密集合から、秘密一変数鍵多項式(229、GA())を計算するよう構成されている、項目12に記載のデバイス(300)を構成するためのシステム(200)。
14.計算ユニットは、関数
を近似することによって補正関数Λ
A(X)を計算するよう構成されており、ここで、
であり、f
i(,)は、二変数多項式の第1の秘密集合(252)を表し、p
iは、簡約モジュラスの第2の秘密集合を表す、項目13に記載のデバイス(300)を構成するためのシステム(200)。
15.第2のデバイス(350)とともに共有鍵を決定するための方法であって、
第1の識別番号(A)と、第1の秘密補正関数(ΛA())と、第1の秘密一変数鍵多項式(372、GA())と、を記憶するステップと、
第2のデバイスの第2の識別番号(355、B)を取得するステップと、
第2の識別番号を秘密一変数鍵多項式に代入して、第1の中間鍵を取得するステップであって、第1の中間鍵は、第1の鍵集合を規定する、ステップと、
第2の識別番号を第1の秘密補正関数に代入して、第1の補正係数を取得するステップと、
第1の補正係数を用いて第1の中間鍵を修正して、第1の補正された鍵を取得するステップであって、第1の補正された鍵は、第2の鍵集合を規定し、第2の鍵集合は、第1の鍵集合よりも小さい、ステップと、
を含む、方法。
16.鍵を共有するようにデバイス(300)を構成するための方法であって、
ルート鍵材料を電子的形態で取得するステップと、
デバイスの第1の識別番号(310、A)を電子的形態で取得するステップと、
デバイスについて、ルート鍵材料及び第1の識別番号(310、A)から、秘密一変数鍵多項式(229)及び第1の秘密補正関数(ΛA())を計算するステップと、
生成された秘密一変数鍵多項式(229、236)及び第1の秘密補正関数(ΛA())を、デバイスにおいて電子的に記憶させるステップと、
を含む、方法。
17.コンピュータプログラムであって、コンピュータプログラムがコンピュータ上で実行されたときに、項目15又は16の全てのステップを実行するよう適合されているコンピュータプログラムコード手段を含む、コンピュータプログラム。
18.コンピュータ読み取り可能な媒体上に具現化されている、項目17に記載のコンピュータプログラム。
請求項において、括弧内に配置されているいかなる参照符号も、請求項を限定するものとして解釈されるべきではない。動詞「備える(comprise)」及びその活用形の使用は、請求項に記載されている要素又はステップ以外の要素又はステップの存在を排除するものではない。要素に先行する冠詞「a」又は「an」は、複数のそのような要素の存在を排除するものではない。本発明は、複数の異なる要素を含むハードウェア、及び、適切にプログラムされたコンピュータによって実装され得る。複数の手段を列挙している装置の請求項において、これらの手段のうちのいくつかは、全く同一のハードウェアアイテムによって具現化されてもよい。所定の手段が、相互に異なる従属請求項に記載されているというだけの事実は、これらの手段の組合せを有利に使用することができないことを示すものではない。
請求項において、括弧内の参照符号は、実施形態の図面内の参照符号又は実施形態の式を参照しており、したがって、請求項の理解度を増大させる。これらの参照符号は、請求項を限定するものとして解釈されるべきではない。