JP2008520145A - 汎用鍵導出関数サポートのための安全インタフェース - Google Patents

汎用鍵導出関数サポートのための安全インタフェース Download PDF

Info

Publication number
JP2008520145A
JP2008520145A JP2007540747A JP2007540747A JP2008520145A JP 2008520145 A JP2008520145 A JP 2008520145A JP 2007540747 A JP2007540747 A JP 2007540747A JP 2007540747 A JP2007540747 A JP 2007540747A JP 2008520145 A JP2008520145 A JP 2008520145A
Authority
JP
Japan
Prior art keywords
module
private key
kdf
key
function
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2007540747A
Other languages
English (en)
Other versions
JP4937921B2 (ja
Inventor
ダニエル アール. エル. ブラウン,
ロバート ピー. ギャラント,
スコット エー. ヴァンストーン,
Original Assignee
サーティコム コーポレーション
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by サーティコム コーポレーション filed Critical サーティコム コーポレーション
Priority claimed from PCT/IB2005/003385 external-priority patent/WO2006051404A2/en
Publication of JP2008520145A publication Critical patent/JP2008520145A/ja
Application granted granted Critical
Publication of JP4937921B2 publication Critical patent/JP4937921B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

【課題】 静的ディフィ−ヘルマン(Diffie-Hellman:DH)私有鍵の不適切な再使用は、鍵についての情報を漏洩させる可能性がある。この漏洩は、鍵導出関数(KDF)により防止できるが、規格は鍵導出関数に関して一致していない。DH私有鍵演算を実行するモジュールは、ある程度は複数の異なるKDF規格をサポートしていなければならない。本発明は、すべての可能なKDF演算を実践しようとすることもなく、未処理DH私有鍵演算への保護されていないアクセスを提供することもない、中間のアプローチを提供する。その代わり、モジュールは、モジュールを使用するアプリケーションにより示されるように、KDF演算の一部を実行する。これにより、モジュールが、必要な各KDFに対して、全体のKDFを実践する必要がなくなる。その代わり、モジュールは、ほとんどのDFに共通な再使用可能な部分のみを実践する。更に、新しいKDFが必要なときは、モジュールはそれらが、モジュールが既に実践した部分上に構築されるならば、それらをサポートすることも可能である。
【選択図】図1

Description

本発明は一般的には、暗号の分野に関する。特に、本発明は、多用途鍵導出関数サポートの提供に関する。
ディフィ−ヘルマン(Diffie-Hellman:DH)鍵共有は、暗号における基本的な開発である。それは、公開鍵暗号の最初の機能する方法であり、それにより、前もって同意された秘密を設定せずに鍵配布を実現可能にする。
DH鍵共有の最も簡単な形態では、当事者はそれぞれ私有鍵x、yを有し、そこから公開鍵α、αがそれぞれ導出できる。公開鍵を交換することにより、当事者それぞれは、私有鍵と公開鍵を組み合わせることにより共有秘密鍵αxyを算出できる。私有鍵から公開鍵を導出するために使用される関数は、一方向性関数であり、一方向性関数では、公開鍵の計算は比較的簡単であるが、公開鍵から私有鍵を抽出するのは実行不可能である。そのような関数は、2つの大きな素数の積である大きな数の素因数分解の困難性、または有限体上における離散対数問題に基づいている。
ディフィ−ヘルマン(Diffie-Hellman:DH)鍵共有は、今日では広く使用されている。IPSecプロトコルはDH鍵共有を使用し、IPSecは、ほとんどの企業において、従業員が公開インターネット上で離れたオフィスへ接続するのと共に、遠隔地から会社のネットワークに接続するのを可能にするために使用されている仮想プライベートネットワーク(VPN)のほとんどで使用されている。
ディフィ−ヘルマン(Diffie-Hellman)鍵共有はまた、トランスポート層セキュリティ(TLS)プロトコルにおけるNIST推奨オプションでもある。TLSプロトコルは、SSLプロトコルの後継プロトコルである。これらのプロトコルは今日では、オンラインバンキングのような、取扱いに慎重さを要するウェブ上の通信データの流れを安全にするために広く使用されている。
静的DH鍵共有は、私有鍵の1つが静的であるDH鍵共有の変形であり、それは、複数回使用される長期間鍵であることを意味している。
私有鍵の鋭敏性のため、特に複数回使用される場合は、それは私有鍵操作を含む実践である私有鍵モジュールに通常位置している。一般的には、そのようなモジュールは私有鍵の抽出を防止する手段を含んでおり、もっと制限された範囲で、私有鍵操作の悪用を防止している。例えば、これらのモジュールは、ウイルスや、ワーム、およびトロイの木馬のような悪意のあるソフトウェアのロードを認めない特殊化されたハードウェアにおいて実践できる。一般的には、そのような改竄防止手段の実践は高価となる。従って、コストを下げるために、モジュールは一般的には、最低限の機能を有するように設計される。このように、最低限の機能には、改竄防止による保護が必要である。
簡単な例では、モジュールはスマートカードであってよい。スマートカードはユーザーにより所持される。ユーザーがある遠隔コンピュータから、ホームコンピュータのような接続先へ安全に接続したいと所望していると仮定する。ユーザーはスマートカードを、リモートコンピュータに取り付けられたスマートカードリーダーに入れる。その後、ホームコンピュータへの接続が行われる。ホームコンピュータは、問いかけを送ることでユーザーを認証する。リモートコンピュータはその問いかけをスマートカードに転送する。スマートカードは問いかけに署名し、それはホームコンピュータに転送されて戻される。ホームコンピュータは、その問いかけを検証して、リモートコンピュータを介しての、必要なアクセスをユーザーに提供する。これにより、ユーザーは異なるリモートコンピュータ間を動き回ることができる。しかし、リモートコンピュータはスマートカードからユーザーの私有鍵を抽出できてはならない。つまり、リモートコンピュータはユーザーがスマートカードをリーダー内に入れている間だけホームコンピュータに接続できるだけである。(これを達成するために、簡単な問いかけと応答より、より高度な方法が必要となる。そして、スマートカードはトラフィックの正規の認証、またはすべてのトラフィックの暗号化と暗号解読さえも行うことが必要となることもある。)
安全性を更に高めるために、未処理のDH共有秘密に適用された一方向性関数である鍵導出関数(KDF)がしばしば指定される。ある規格では、KDFをDH鍵共有と共に使用するよう指定している。しかし、規格が異なれば、推奨されるKDFも異なる。例えば、ANSIは、IEEEや、SSLおよびTLSのように、いくつかの異なるKDFを指定しており、IPSecも更にまた異なっている。
下記に、2つの規格化鍵導出関数の詳細を簡単に記述する。これらはANSI X9.63鍵導出およびTLS鍵導出関数である。
ANSI X9.63鍵導出は下記のように計算される。入力は3つの成分を有している。第1入力成分はZであり、これは私有鍵モジュールと接続先、例えば、上記の簡単な例におけるホームコンピュータとの間で共有される秘密値である。この共有秘密値Zは、上記の例におけるリモートコンピュータのような、いかなるゲートウェイにも明かされてはならない。第2の入力成分は整数鍵datalenであり、これは生成されるべきキーイングデータのオクテットでの長さである。オプションである第3の入力成分は、オクテットストリングSharedInfoであり、共有秘密値Zを共有するエンティティにより共有されるいくつかのデータから構成されている。更に、SharedInfoにはまた、随意に抽象構文記法1(ASN.1)の符号化が与えられ、これは5つのフィールド、つまり、アルゴリズム識別子、2つのエンティティそれぞれに対する随意の識別子、随意の公開共有情報、および随意の私有共有情報を含む。この入力についてのKDFの評価はその後、下記のように進行する。
ANSI X9.63鍵導出関数の第1ステップは、ある一貫性チェックであり、入力の長さと、所望の出力長keydatalenに対して行われる。その後、4オクテット整数カウンタjが値1で初期化される。一連のハッシュ値Kjは、次のように計算される。Kj=SHA−1(Z‖j‖[SharedInfo])、ここで‖は、連接を示し、[ ]はカッコで囲まれた入力はオプションであることを示している。これらの出力の数tは、keydatalenに依存する。ハッシュ値は連接されてオクテットストリングK’=K1‖K2‖...‖Ktを形成する。オクテットストリングは、最左端のkeydatalenオクテットを取ることにより短オクテットストリングKに切り詰められる。ANSI X9.63KDFの出力はKである。
TLS規格では、鍵導出関数は擬似乱数関数(PRF)と称せられる。TLS PRFの構成はANSI X9.63KDFとはまったく異なり、次のように与えられる。この構成は、最初に記述される補助構成HMACを利用する。
HMAC構成は、任意のハッシュ関数上に構築できる。HMAC構成が、MD5およびSHA−1のようなハッシュ関数と共に使用されると、その結果としての関数は、HMAC−Hashと命名され、ここでHashはハッシュ関数の名前である。TLS PRFはHMAC−SHA−1とHMAC−MD5を使用する。HMACの一般的な形式、つまりHMAC−Hashは下記のように作動する。
HMACへの入力は、秘密鍵KとメッセージMである。出力はタグTである。HMACタグは、T=Hash(C+K‖Hash((D+K)‖M))として計算され、ここで‖は、連接を表わし、+は、よく知られたビット単位の排他的論理和(XOR)演算を表わし、CとDは、HMACアルゴリズムで決定された一定のビットストリングである。より正確には、鍵Kは、その長さがCとDの長さになるまでゼロビットを埋め込まれるが、KがCとDより長いときは除外され、その場合は、Kは鍵のハッシュと置換される。これは次のように記述される。
T=HAMC−Hash(K,M)
関数HMAC−Hashは、P_Hashと呼ばれる、TLS PRFにおける別の補助ハッシュ一般構成に使用される。P_Hashの構成は下記の通りである。
P_Hash(Z,シード)=HAMC−Hash(Z,A(1)‖シード)‖HMAC−Hash(Z,A(2)‖シード)‖HMAC−Hash(Z,A(3)‖シード)...
ここで‖は、連接を表わし、A()は下記のように定義される。
A(0)=シード;A(j)=HMAC_Hash(Z,A(j−1))
P_Hashは、必要な回数繰り返して、必要な量のデータを生成できる。ANSI X9.63と同様に、HMACタグの結果としての連接が、必要なデータ量よりも長い場合は、最終(最右端)バイトが切断される。
TLS PRFは下記のように定義される。
PRF(Z,ラベル,シード)=P_MD5(S1,ラベル‖シード)+P_SHA−1(S2,ラベル‖シード)
ここで、通常のように、+は、排他的論理和を表わし、‖は、連接を表わす。値S1とS2はオクテットストリング秘密Zを半々に分割することで得られ、左半分は、S1であり右半分は、S2であり、左半分が大きく、秘密は奇数個のオクテットを有する。
アルゴリズムで指定されるように、MD5の出力は、16オクテットであり、一方、SHA−1の出力は20オクテットであり、関数P_MD5は、一般的にはP_SHA−1よりも多くの繰り返しを使用する。
TLS PRFはTLSプロトコルにおいては、幅広く使用される。例えば、プレマスター秘密からマスター秘密を導出するのに使用され、またマスター鍵から暗号鍵を導出などに使用される。
KDFに関する規格の不一致が、KDFなしのDH鍵共有をサポートするか、単に限定された数のKDFをサポートするかのどちらかに対する、モジュールの実践者への大きなインセンティブを作り出している。
標準公開鍵暗号規格(PKCS)#11:暗号トークンインタフェース(cryptoki)は、私有鍵モジュールのクラスである、スマートカードのようなトークンのインタフェースをアドレスする。この規格においては、2、3のKDFがサポートされるが、提供されるインタフェースは一般的には、KDFとの順応性がない。規格FIPS 140−2もまた私有鍵モジュールに対する条件を指定する。それは明示的に、未処理DH共有秘密値のような暗号値は、私有鍵モジュールの安全境界を離れてはならないことを要求するが、鍵導出に対する正確な機構は提供しない。
本発明の発明者は、静的DH私有鍵の不適切な再使用は、最終的には敵対者による私有鍵の再生という結果になり得ることを発見した。より正確にいえば、静的DH鍵共有を介して確立された共有秘密が、鍵導出関数(KDF)の適用なしに使用された場合、敵対者は、複数の異なる共有鍵が確立されて使用される攻撃を仕掛けることができ、それにより静的DH私有鍵を再生できる。
本発明の発明者の最近の発見は、KDFなしにDHを実践できるという選択の余地があることは、安全性のリスクであり得ることを意味している。減少された数のKDFをサポートすることはあまりにも限定的すぎる。例えば、新しいアプリケーション規格を使用するためだけにハードウェアのアップグレードが必要になることもある。
規格が鍵導出関数について一致しないため、DH私有鍵操作を実行するモジュールは、ある程度は、複数の異なるKDF規格をサポートしなければならない。1つのアプローチは、モジュールがすべてのKDFアルゴリズムを実践することであるが、それは、モジュールが複数の異なるKDFをサポートしなければならないので高価であり、モジュールは、新しいKDFが登場したときにそれらをサポートできないので限定的である。反対のアプローチは、モジュールが保護されていないアクセスを未処理DH私有鍵操作に提供し、そのモジュールを使用するアプリケーションにKDFを適用させることである。しかし、これは私有鍵を、最近発見された攻撃に対して脆弱にさせる。
本発明の目的は、上記の不都合な点を削除し、または緩和することである。
一般的に言えば、モジュールを使用するアプリケーションにより示されるように、本発明によりモジュールがKDFアルゴリズムの一部を実行することを可能にする。これにより、モジュールが各必要なKDFに対してKDF全体を実践する必要はなくなる。その代わり、ほとんどのKDFに共通の再使用可能部分のみが実践される。更に、新しいKDFが必要となったときに、それらがモジュールが実践したKDFの部分上に構築されれば、それらをサポートできる。
このように、静的DH私有鍵操作への未処理アクセスは、一般的に安全性のリスクがあまりにも高すぎる傾向があるので、モジュール上では許可されない。その代わり、モジュールは、すべての予見可能なKDFと同様に、すべての既存の関心対象であるKDFをサポートするのに十分なほど順応性のあるインタフェースを提供する。これは、安全私有鍵モジュール上の既存および予見可能なKDFの共通部分を実践することによりなされる。今日のほとんどのKDFは、ハッシュ関数上に構築されている。従来は、ほとんどの私有鍵モジュールは、少なくともハッシュ関数を実践する必要があった。これは、ハッシュ関数が、デジタル署名のような、多くのアルゴリズムの安全性に対して非常に重要であるので、改竄防止を考慮するためにも重要である。
これに対する代替として、モジュールはまた、SHA−1の圧縮関数へのアクセスを簡単に提供することもできる。アプリケーションは、この圧縮関数を使用して、いくつかの必要な埋め込み(Padding)をし、ある適切なチェインニング(Chaining)を行うだけで、SHA−1を計算できる。これは更に、実践モジュールを単純化し、その順応性を高める。例えば、ある追加的順応性は、あるANSI決定的乱数生成子は、関数SHA−1全体の代わりに、SHA−1圧縮関数を使用するということである。より一般的には、鍵導出のような乱数生成は、一般的に秘密および秘密でない入力の混合に対するハッシュ関数値計算法の組み合わせを含む。従って、本発明は、複数のKDFをサポートすることに限定されないだけでなく、複数の決定的乱数生成子もサポートできる。
更に高い順応性のために、モジュールは、SHA−1圧縮関数のサブ演算のいくつかのような、より微小な演算をサポートできる。しかし、これらのサブ演算がSHA−1圧縮関数以外のある目的で再使用されるとは思われない。また、これら個々のサブ演算は、SHA−1の完全な安全性は提供せず、従って、モジュール上の秘密をアプリケーションに明らかにする可能性もあり、それは避けなければならない。しかし、この原理に対する例外は、新しいハッシュ関数の2つの対である。これはSHA−384とSHA−512の対と、SHA−224とSHA−256の対である。これらの対のそれぞれは、多くの共通部分を有しており、本質的に単一共通関数で実践できる。アプリケーションは、入力と出力を共通関数に対してのみ処理して、所望のハッシュ関数を得る。
TLSの用語においては擬似乱数関数(PRF)として知られているTLS鍵導出の場合、2つのハッシュ関数が使用される。その1つはSHA−1で他の1つはMD5である。PRF−TLSを秘密Zに適用するために、秘密は2つの部分S1とS2に半々にされる。そして、MD5に基づくPRFがS1に適用されて、SHA1に基づく関数がS2に適用される。モジュールが、高価となる可能性のあるMD5とSHA1両者の実践をしなくていいように、モジュールはアプリケーションにS1を明らかにする機構を提供し、S2をモジュール内に保持する。モジュールはS2についてのSHA1の計算を行い、アプリケーションはS1に対してMD5の計算を行うことができる。
TLS内の1つ以外の他のKDFはそのような方法で秘密を分割することは予想されないが、規格が今後どのような方向に進むかを予測することは困難になる傾向がある。従って、モジュールが秘密を分割する一般的方法をサポートすることは有効である。従って、モジュールに対するインタフェースは、アプリケーションが秘密のその部分が公開されるように要求できる機構を含む。十分な秘密が、秘密のまま残り、アプリケーションが秘密の異なる部分に対する複数の要求ができないような方法でモジュールは実践される。
新しい規格は出現し続けているので、また、規格はKDFと乱数生成子を再設計し続けているので、ハードウェアモジュールへの順応性があり、安全なインタフェースは、モジュールの使用可能性の拡大に重要な価値を提供する。そうでなければ、モジュールはあまりにも早くに廃れてしまう危険性がある。
下記の説明と、そこで説明される実施形態は、本発明の原理の特別な実施形態の例を示すことにより提供される。これらの例は、本発明のそれらの原理を説明する目的のため提供されるのであって、限定的ではない。下記の説明では、類似の部分には、本明細書と図を通してそれぞれ、同一の参照番号が記される。
図1を参照すると、私有鍵モジュール装置50で保護された、ユーザー装置40と接続先100の間の接続が示されている。ユーザー装置40と接続先100の間の接続は、一般的には安全ではなく、オープンである。例えば、接続は、インターネットなどの公衆ネットワーク80へのリンク70と、公衆ネットワークから接続先100へのリンク90から構成されている。それぞれのリンクは、有線リンクであっても、ワイヤレスリンクであっても、その両者の組み合わせであってもよい。一般的には、私有鍵モジュール装置50は、スマートカードやトークンのような、現地の装置に挿入できる自己完結型装置であるか、またはアプリケーションが起動されるユーザー装置40である。モジュール装置50は、アプリケーションにより起動されると、ユーザー装置40と協働して、リンク70上の通信を保護する。
この作動モードにおいて、私有鍵モジュール装置50は、ユーザー装置40と接続先装置100の間の接続を保護するための私有鍵機能を提供する。しかし、私有鍵モジュール装置50は、カスタム私有鍵モジュールなので、ユーザー装置40のような典型的なユーザーコンピュータの保護とは別のある追加的な保護を必要とする。鍵導出関数(KDF)を、ユーザー装置40で起動しているアプリケーションで部分的に、私有鍵モジュール装置50上で実行されているモジュール内で部分的に実践することにより、安全性が強化される。ユーザー装置40と私有鍵モジュール装置50がここでは別個の装置として記述されているが、それらは単一の物理的装置に統合できるということは理解されよう。例えば、私有鍵モジュール装置50は、特別埋め込みチップセットとしてユーザー装置40上に常駐できる。
ユーザー装置40は典型的に複数のアプリケーションを起動し、CPU42とメモリ装置44を利用して異なる機能を実行する。ユーザー装置40は、CPU42上で起動している通信アプリケーションの指令のもとで、リンク70を管理するための通信モジュール45を含む。安全な通信を確立するために、通信アプリケーションは、KDFのような私有鍵機能を要求する、上記に検討したプロトコルの1つのような、確立された保護プロトコルを実践する。順応性を維持しながら、選択されたKDFの計算を促進するために、KDFの導出は、離散したサブルーチンに分離され、私有鍵上での作動を要求するサブルーチンが私有鍵モジュール50により実行される。ユーザー装置40によりバランスが取られ、それにより未処理私有鍵データは、ユーザー装置40を通してアクセスされない。
図2を参照すると、ユーザー装置40上で起動しているアプリケーション10で部分的に実践され、私有鍵モジュール50上で起動しているアプリケーション20で部分的に実践される鍵導出関数(KDF)を有する保護システムの実践例が示されている。KDFは2つの部分に分割される。私有鍵モジュール50は、KDFの構成要素24を生成し、アプリケーション10はこれらの構成要素を使用してKDFのバランス22を計算する。私有鍵モジュール20は、データを交換し、アプリケーション10と通信するモジュールインタフェース26を有している。モジュールインタフェース26は更に2つのインタフェース関数、第1インタフェース関数28と、第2インタフェース関数30を有している。
有利なことであるが、ディフィ−ヘルマン(Diffie-Hellman)共有秘密値Zのような、ある秘密値は、私有鍵モジュール20内で判定される。Zの長さはアプリケーション10に知られているが、Zの値は知られていない。アプリケーション10は、ハンドルを有しており、それにより、秘密Zを参照することができ、このように私有鍵モジュール20にZから値を導出することを依頼できる。
第1インタフェース関数28は、整数と、秘密Zのハンドルから構成される入力を有している。この整数は、アプリケーション10に開示されるZのオクテット数を定義する。これはTLS PRF内のS1値である。この機能を実行するときは、私有鍵モジュール20は、秘密の最小数のオクテットをS2として保持させることができ、それにより、アプリケーション10は、全体の秘密を知ることはない。この最小数は、アプリケーションの意図された保護レベルに対して適切に選択される。80ビットの保護レベルに対しては10オクテットであってもよい。第1インタフェース関数28がいったん呼び出されると、秘密は永久的にS2に切断され、私有鍵モジュール20は、S2の更なる切断を許可しない。S2を参照するためのハンドルまたはポインタがアプリケーション10に設けられる。好ましくは、Zが更なる計算では使用されないので、Zを参照するハンドルまたはポインタは再使用される。この後、私有鍵モジュール20は、第1インタフェース関数28が呼び出された後に、秘密Z=S2を設定する。随意に、私有鍵モジュール20は、単にS2を指し示している新しいハンドルを作成して、この新しいハンドルをアプリケーション10に出力して、アプリケーション10が後でS2を参照できるようにすることができる。値S1は常に第1インタフェース関数28の出力の一部であり、それにより、アプリケーション10、つまり、アプリケーション10に含まれるKDFの第1部分22は、TLS PRF内で使用されるMD5計算のような、必要ないかなる計算もS1に対して実行できる。
第2インタフェース関数30は、2つの値XとYと秘密Zのハンドルから構成される入力を有する。第1値は、秘密Zと同一の長さのオクテットストリングである。第2インタフェース関数30の出力は下記の通りである。
SHA−1(X+Z‖Y)
第2インタフェース関数30は、ANSI X9.63 KDFとTLS PRFの両者が構築できる基本的暗号動作である。第1インタフェース関数28の出力S1と、第2インタフェース関数30の出力、つまり、SHA−1のハッシュ値から、アプリケーション10は、KDF計算を完結でき、鍵を導出できる。
ユーザー装置40は一般的に、CPU42と、CPU42にアクセス可能なメモリ装置44と、これもまたCPU20にアクセス可能な格納媒体46と、ある入力および出力装置(図示せず)を有する。理解されるであろうが、ユーザー装置40は、他のプログラム可能な計算装置であってもよい。アプリケーション10は、CPU42上で実行される。アプリケーション10は、格納媒体46上に格納でき、ユーザー装置40に永久的に設置してもよく、あるいはユーザー装置40から取外しできてもよく、あるいは、ユーザー装置40にリモートアクセスできてもよい。アプリケーション10はまた、CPU42に直接搭載することもできる。KDFの出力は、ユーザー装置40から接続先100への接続を保護するために必要である。
私有鍵モジュール50は一般的に、CPUまたはマイクロプロセッサ52と、CPU52にアクセス可能なメモリ装置54と、これもまたCPU52にアクセス可能な格納媒体56を有する。私有鍵モジュール20はCPU52上で実行される。私有鍵モジュール50は、格納媒体56上に格納してもよく、またはメモリ装置52に直接搭載してもよい。私有鍵モジュール50は秘密私有鍵を、そのメモリ装置54またはその格納媒体56内に格納できる。理解されるであろうが、私有鍵モジュール50は、私有鍵モジュール50がキーボード付きのスマートカードである場合のキーボードのような、ユーザーが秘密私有鍵を入力する入力手段を有してもよい。
より揮発性の高いデータを格納するために使用される傾向にあるメモリ装置54と、より永続的なデータを格納するために使用される傾向にある格納媒体56を、ここでは区別してきたが、私有鍵モジュール50は、揮発性データおよび永続性データの両者を格納するための単一のデータ格納装置のみを有してもよい。同様に、ユーザー装置40は、揮発性データおよび永続性データの両者を格納するための単一のデータ格納装置のみを有してもよい。
データリンク60は、必要なときに、アプリケーション10と私有鍵モジュール50の間の通信チャネルを提供する。データリンク60は、有線でも、ワイヤレスでもよい。それはユーザー装置40と私有鍵モジュール50間の直接接続であってもよい。データリンク60は永続的であってもよく、より好ましくは、要求により確立される接続である。一般的に、データリンク60は、オープンリンクではなく、保護されているリンクである。
上記したように、私有鍵モジュール20は全体のKDFを実践しない。私有鍵モジュール50内で生成されたKDFの構成要素24は、再使用可能な部分のみと、安全性に基本的な暗号操作を行う部分しか実践しない。これにより、安全性を損ねることなく順応性を促進できる。例えば、DHプロトコルを実践するときは、静的DH私有鍵操作への未処理アクセスはモジュール上では許可されない。その代わりモジュールは、すべての予見可能なKDFと同様に、すべての関心対象の既存KDFをサポートするのに十分順応性のあるインタフェースを提供する。これを最も効率的に行う1つの方法は、既存および予見可能なKDFの共通部分を実践することである。今日のほとんどのKDFは、将来はそのいくつかはブロック暗号から構築されるであろうことは予見されるが、ハッシュ関数上で構築されている。ほとんどの私有鍵モジュールは、少なくともハッシュ関数をサポートすべきであり、これはデジタル署名のような、多くのアルゴリズムの安全性に対してハッシュ関数が非常に重要であることによる。幸いなことに、規格化されているハッシュ関数の数は、KDFよりも少ない。例えば、ハッシュ関数SHA−1は、別個のANSI、IPSec、およびTLS鍵導出関数のような、いくつかの異なるKDFをサポートするために再使用できる。TLS鍵導出はまた、別のハッシュ関数であるMD5を使用するが、これは、下記に更に説明するように、モジュール50の外部で扱うことができる。
図3を参照すると、SHA−1操作を使用して生成されたKDFに対して、アプリケーション10は、私有鍵モジュール50に、ハッシュ関数への入力としてどの入力を供給すべきかを指令する。入力のいくつかは、秘密であり、アプリケーションには知らされない。これを指定するために、アプリケーション10は、ハンドルまたはポインタ57を介してそのような秘密入力を参照する。公開入力がアプリケーション10により直接提供されてもよい。各KDF独自の入力のフォーマットは、モジュールにより提供される一般的フォーマットインタフェースにより指定される。私有鍵モジュール50がアプリケーション10に提供するハッシュ出力は、より多くのハッシュ関数の呼び出しへの更なる入力としてアプリケーション10により再使用することもできる。これは、多くのKDFが、1つのハッシュ呼び出しの出力が、別のハッシュ呼び出しの入力に供給されるチェーニング機構に基づいているからである。
1つの実施形態において、私有鍵モジュール50は、SHA−1の実践と単純インタフェースを含む。代替実施形態においては、私有鍵モジュール20は、汎用目的の実行環境を含む。
または、インタフェースが実践されて、それにより、モジュールがTLS PRFとANSI X9.63 KDFの両者を、過度に未処理私有鍵操作を開示することなく(それにより本発明の発明者により発見された攻撃を回避する)サポートできる。
ANSI X9.63 KDFとTLS PRFのサポートにおける操作において、ANSI X9.63 KDFは、ハッシュ関数SHA−1から、共有秘密値に基づいて計算された一連のハッシュ値を計算し、ハッシュ値の連接から形成されるオクテットストリングを切断することにより、共有秘密値から鍵を導出し、一方、TLS PRFは、ハッシュ関数MD5とハッシュ関数SHA−1の両者の計算を含む、はるかに複雑な構造を有している。
モジュールインタフェース26の目的は、ハッシュ関数MD5を実践しないことである。ハッシュ関数SHA−1のみが私有鍵モジュール20上で、つまり、KDFの第2部分24上で実践される。従って、私有鍵モジュール20を使用するアプリケーション10は、KDFのその第1部分22においてMD5を実践することに責任がある。安全性の観点からは、これは重大な欠点とはならない。これは、MD5ハッシュ関数は、十分な安全性を提供するとは普遍的には考えられていないからであり、一方では、SHA−1ハッシュ関数は、最高の安全性レベル(これらの高いレベルはSHA−256またはSHA−1の別の後継プロトコルを必要とする)以外のすべてのレベルに対して、鍵導出の目的のために、十分な安全性を提供することが普遍的に受け入れられる傾向にあるからである。
ANSI X9.63 KDFのサポートにおける操作の概要は、図4に示されている。そのような操作においては、アプリケーション10はX=0とY=j‖[SharedInfo]を選択し、ここでjは、アプリケーションが維持する4オクテットカウンタである。アプリケーション10は、その後、X、Yと、Zに対するハンドルで機能30を呼び出す。私有鍵モジュール50のアプリケーション20は、その後、アプリケーション10により供給されたXとYに対する値と、Zに対するハンドルを使用して、上述され、図4に示された式に従ってSHA−1を計算する。アプリケーション10は、これにより計算されたSHA−1値を得ることができ、これを使用して、ANSI X9.63 KDFを構築して鍵を導出する。
TLS PRFのサポートにおけるアプリケーション10と20の操作は、図5に示されている。アプリケーション10は、関数28に関して上述したように、共有秘密ZをS1とS2に半々にする(図5のパート1)ために、第1インタフェース関数28を呼び出す。アプリケーション10はこの後、第2インタフェース関数30を呼び出して、S2に基づいてハッシュ値を計算し(図5のパート2)、この上述の構成を使用して、第1および第2インタフェース関数28、30の出力からP_SHA−1を計算する(図5のパート3)。パート2と3は下記に説明する。
図5に示されたTLS−PRFの操作のパート2で使用された関数HMAC−SHA−1を構築するために、アプリケーション10はまず、X=DとY=Mと、鍵Kに対するハンドルで第2インタフェース関数30を呼び出し、それによりT1=SHA−1((D+K)‖M)が与えられる(Dの値は、一定であると一般に知られており、従って、アプリケーション10に利用できる)。そして、アプリケーション10は、Kに対する同一ハンドルでX=CとY=Tを設定して、T=SHA−1(C+K)‖T1)=HMAC−SHA(K,M)を得る(Cの値は、Dのように公開である)。
鍵Kをゼロビットで埋める必要がある場合は、アプリケーション10が、第2入力Yに、定数CとDの適切なオクテットとの排他的論理和が演算された必要なゼロビットを提供することでこれを行う。鍵Kが最初に圧縮が必要なほど長い場合は、アプリケーション10は、これをX=0とY=0と設定してハッシュ鍵を得ることで行うことができる。この場合、アプリケーション10は、必要な情報をすべて有しているので、随意的にそれ自身上で計算の残りを実行することができ、または更に第3インタフェース機能を使用して、上記のハッシュ出力を、新しいハンドルの別の秘密として指定できる。
図3に示されたTLS−PRFをサポートする操作のパート3において関数P_SHA−1を構築するために、アプリケーション10は、今度はパート1での出力として提供されたS1と、上記の構成を使用して、秘密鍵が私有鍵モジュール20に閉じ込められている、HMAC_SHA−1を計算する。これは、HMAC_SHA−1を繰り返し適用することでA(0)、A(1)、A(2)を計算することを含み、それらはその結果、HMAC_SHA−1を更に適用することでP_SHA−1の出力を形成する。
出力P_SHA−1は、KDFを構築して、鍵を導出するのに使用される。
上記の例は、私有鍵モジュール20内で導出された鍵はアプリケーション10への出力として導出されると仮定している。これに対する代替例では、導出された鍵は、私有鍵モジュール20内に留まり、出力はその鍵への単なるハンドルまたはポインタである。この優位点は、すべての鍵が私有鍵モジュール20上に保持できることであり、それによりモジュールの所有者に、アプリケーションが、長期私有鍵は言うまでもなく、導出されたセッション鍵さえも乱用できないことを更に確信させる。
代替実施形態において、私有鍵モジュール20は、更に高いレベルの順応性を有している。私有鍵モジュール20は、ジャバスクリプト(javascript)またはジャバ(java)のような、ある単純な実行言語をサポートしてもよく、それにより、カード上で実行される操作に広大な普遍性を与える。つまり、アプリケーション10はプログラムを私有鍵モジュール20に供給して、それを私有鍵モジュール20が実行する。プログラムは、モジュールにあるときは、秘密に自由にアクセスできる。安全のために、私有鍵モジュール20は、モジュールからのすべての出力が、SHA−1のようなハッシュアルゴリズムや、AESのような対称暗号操作の一部のような、認可されている安全性アルゴリズムを経ることを確実にする。これにより、悪意あるプログラムが試みることができるほとんどの悪用を防止できる。
安全性を更に高めるために、私有鍵モジュール20は、プログラムが、その公開検証鍵が既に安全に私有鍵モジュール20にロードされている署名者によるデジタル署名を要求する。これは、私有鍵モジュール20にロードされたプログラムを認証する1つの方法である。プログラムの認証により、プログラムが、モジュールの秘密を危険に晒すという目的の悪意ある実行プログラムでないことが保証される。プログラムの認証により、プログラムそれ自身が任意のアルゴリズムを実行するのに十分なほど信頼できるので、モジュール入力をあるハッシュ、または他のアルゴリズムに制限する必要がなくなる。
この代替実施形態の、第1実施形態に対する優位点は、それが、既存または新しい多様なハッシュをモジュール上で実行することを可能にするように、より高い順応性を提供することである。不都合な点は、モジュールが、一般実行言語と、場合によっては公開鍵インフラの一部、をサポートする必要があるということである。
本発明の種々の実施形態が詳細に記述された。当業者は、本発明の範囲から逸脱することなく、実施形態に対して、多くの修正、適合、および変形が可能であることを理解するであろう。上述した最も好適な実施形態における、またはそれに付け加える変更は、本発明の本質、精神、および範囲から逸脱することなく可能であるので、本発明はそれらの詳細には限定されず、付随する請求項にのみ限定される。
図1は、私有鍵モジュールにより保護されたユーザー装置と接続先との間の接続を示すブロック図である。 図2は、図1に示されたユーザー装置と、私有鍵モジュールにおける鍵導出関数の実践を示している模式図である。 図3は、私有鍵モジュール装置を示している模式図である。 図4は、鍵導出関数の1つの例を示しているフローチャートである。 図5は、鍵導出関数の別の例を示しているフローチャートである。
符号の説明
10 アプリケーション
20 アプリケーション
40 ユーザー装置
50 私有鍵モジュール装置
60 データリンク
70 リンク
80 公衆ネットワーク
90 リンク
100 接続

Claims (4)

  1. DH共有秘密を含む暗号関数を計算する方法であって、前記DH共有秘密は、私有鍵モジュールにアクセス可能であり、前記方法は、私有鍵モジュール上で、共有秘密を利用する暗号関数の構成要素を実行するステップと、別の装置上で起動しているアプリケーションにそのような構成要素を提供し、前記暗号関数を計算するステップを含む方法。
  2. 前記暗号関数は鍵導出関数である請求項1に記載の方法。
  3. 前記構成要素はハッシュ関数を含む請求項2に記載の方法。
  4. 共有秘密と、前記共有秘密を使用して暗号構成要素を生成するCPUを有する第1モジュールと、アプリケーションを起動して、暗号関数を計算する第2モジュールと、構成要素を前記第1モジュールから前記第2モジュールへ転送するデータトランスファーと、を備える暗号装置。
JP2007540747A 2004-11-11 2005-11-11 汎用鍵導出関数サポートのための安全インタフェース Active JP4937921B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
IBPCT/IB2004/3705 2004-11-11
IB2004003705 2004-11-11
PCT/IB2005/003385 WO2006051404A2 (en) 2004-11-11 2005-11-11 Secure interface for versatile key derivation function support

Publications (2)

Publication Number Publication Date
JP2008520145A true JP2008520145A (ja) 2008-06-12
JP4937921B2 JP4937921B2 (ja) 2012-05-23

Family

ID=39012133

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007540747A Active JP4937921B2 (ja) 2004-11-11 2005-11-11 汎用鍵導出関数サポートのための安全インタフェース

Country Status (2)

Country Link
JP (1) JP4937921B2 (ja)
CN (1) CN101099327B (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024095451A1 (ja) * 2022-11-04 2024-05-10 日本電信電話株式会社 通信システム、通信装置、方法、及びプログラム

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102012219205A1 (de) * 2012-10-22 2014-05-08 Robert Bosch Gmbh Vorrichtung und Verfahren zur Ausführung eines kryptographischen Verfahrens
CN105515775B (zh) * 2015-08-31 2021-03-09 上海扈民区块链科技有限公司 一种高效且隐私保护的签密方法
CN107770195B (zh) * 2017-11-27 2024-01-09 中电万维信息技术有限责任公司 基于云环境跨域身份认证系统及其使用方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0372737A (ja) * 1989-05-31 1991-03-27 Toshiba Corp 依頼計算方式
JPH0619393A (ja) * 1992-03-31 1994-01-28 Toshiba Corp 依頼計算装置
JP2004297578A (ja) * 2003-03-27 2004-10-21 Matsushita Electric Ind Co Ltd 公開鍵生成装置、共有鍵生成装置、鍵交換装置、及び鍵交換方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE10000503A1 (de) * 2000-01-08 2001-07-12 Philips Corp Intellectual Pty Datenverarbeitungseinrichtung und Verfahren zu dessen Betrieb
CN1365214A (zh) * 2001-01-09 2002-08-21 深圳市中兴集成电路设计有限责任公司 一种基于公开密钥体制的密钥管理方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0372737A (ja) * 1989-05-31 1991-03-27 Toshiba Corp 依頼計算方式
JPH0619393A (ja) * 1992-03-31 1994-01-28 Toshiba Corp 依頼計算装置
JP2004297578A (ja) * 2003-03-27 2004-10-21 Matsushita Electric Ind Co Ltd 公開鍵生成装置、共有鍵生成装置、鍵交換装置、及び鍵交換方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024095451A1 (ja) * 2022-11-04 2024-05-10 日本電信電話株式会社 通信システム、通信装置、方法、及びプログラム

Also Published As

Publication number Publication date
CN101099327A (zh) 2008-01-02
CN101099327B (zh) 2011-08-24
JP4937921B2 (ja) 2012-05-23

Similar Documents

Publication Publication Date Title
KR101999188B1 (ko) 비밀 공유를 위한 타원 곡선 암호를 사용하는 개인용 장치 보안
US8335317B2 (en) Secure interface for versatile key derivation function support
CN108292402B (zh) 用于信息的安全交换的公共秘密的确定和层级确定性密钥
RU2718689C2 (ru) Управление конфиденциальной связью
JP5562687B2 (ja) 第1のユーザによって第2のユーザに送信される通信の安全化
US8059818B2 (en) Accessing protected data on network storage from multiple devices
CA2071413C (en) Method to establish and enforce a network cryptographic security policy in a public key cryptosystem
JP3872107B2 (ja) 暗号キー回復システム
US7516321B2 (en) Method, system and device for enabling delegation of authority and access control methods based on delegated authority
US7688975B2 (en) Method and apparatus for dynamic generation of symmetric encryption keys and exchange of dynamic symmetric key infrastructure
EP2204008B1 (en) Credential provisioning
US20080037793A1 (en) System and Method for Distributed Security
JP2009529832A (ja) 発見不可能、即ち、ブラック・データを使用するセキュアなデータ通信
KR20080025121A (ko) 비대칭 개인키로부터 비밀키 생성
CN109951276B (zh) 基于tpm的嵌入式设备远程身份认证方法
CN108768613A (zh) 一种基于多种加密算法的密文口令校验方法
US9800410B1 (en) Data encryption system and method
JP4937921B2 (ja) 汎用鍵導出関数サポートのための安全インタフェース
US20240114025A1 (en) Modification of device behavior for use in secure networking
CN114124366A (zh) 一种可信芯片的密钥生成方法及相关设备
CN106230595B (zh) 一种可信平台控制模块的授权协议
Jain Enhancing security in Tokenization using NGE for storage as a service
US20220083666A1 (en) Key authentication
CN114765531A (zh) 认证方法、量子密钥调用方法、装置及量子密码网络
Ruan et al. Building blocks of the security and management engine

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20081027

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20100120

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20100128

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110629

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110928

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20111005

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20111028

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20111107

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20111128

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20111205

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111229

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120126

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120222

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150302

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4937921

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250