説明

ランダムファンクションを利用した秘密の共有

フィジカルランダムファンクション(PUF)は、評価することは容易であるが、特徴付けすることが困難であるファンクションである。被制御フィジカルランダムファンクション(CPUF)は、分離不可な方法によりPUFに物理的に関連付けされたセキュリティアルゴリズムによって制御されるセキュアプログラムを介してのみアクセス可能である。CPUFは、証明書が生成され、特定の計算が特定のプロセッサ上で実行されたことを証明する場合、証明された実行を可能にする。特に、CPUFを有する集積回路が、チャレンジ・レスポンスペア(CRP)を利用して認証可能である。本発明は、CPUF上で実行される各セキュリティプログラムの間に共有される秘密を生成する機構を提供する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、第1セキュリティプログラムと少なくとも第2セキュリティプログラムとの間で共有される秘密を生成する方法と、当該方法を実現するよう構成されるシステムと、当該方法を実現するためのコンピュータプログラムプロダクトと、当該方法を実現するためのコンピュータ実行可能命令と、当該方法により生成される結果を搬送する信号とに関する。
【背景技術】
【0002】
電子取引などのプリケーションでは、計算(又はプログラム)がユーザ又は第三者によって特定のプロセッサ上で実際に実行されたことを検証することが要求されるかもしれない。Blaise Gassend、Dwaine Clarke、Marten van Dijk及びSrinivas Devadasによる“Controlled Physical Random Functions”(Proceedings of the 18th Annual Computer Security Applications Conference,December,2002)(以降において「従来技術文献」と呼ぶ)において、PUFに結合されたチャレンジ・レスポンスペアを生成及び検証するためのフレームワークが規定されている。フィジカル・ランダム・ファンクション(PUF)は、複雑な物理システムを用いて評価されるランダムファンクションである。PUFという略語の使用は(PRFの代わりに)、発音するのがより容易であるという効果を有し、擬似ランダムファンクション(Pseudo−Random Function)との混同を回避する。PUFは様々な方法により実現可能である。PUFの実現形態のいくつかは、各生成サンプル(各半導体チップなど)が異なるファンクションを実現するように生成することが容易である。これは、PUFを認証識別アプリケーションに利用することを可能にする。
【0003】
PUFは、チャレンジをレスポンスに変換し、物理装置により実現され、以下の2つの性質を有するファンクションである。すなわち、(1)PUFは評価が容易である。すなわち、物理装置は、短い時間でファンクションを容易に評価することができる。(2)PUFは特性化が困難である。すなわち、ポリノミアル(polynomial)数のもっともらしい(plausible)物理的測定から(特に、選ばれたチャレンジ・レスポンスペアの決定)、もはやセキュリティ装置を有さず(アクセスできず)、ポリノミアル量のリソース(時間、物質など)しか利用できない攻撃者は、ランダムに選択されたチャレンジに対するレスポンスに関してわずかな情報しか抽出することができない。上記定義では、「短い」及び「多項式の」という用語は、セキュリティパラメータである装置のサイズに相対するものである。特に、「短い」という用語は、リニア又は低い程度のポリノミアルを意味する。「もっともらしい」という用語は、最新の測定技術に相対するものであり、改良された方法が創出されるに従い変化する可能性がある。
【0004】
PUFの具体例として、シリコンPUF(Blaise Gassend、Dwaine Clarke、Marten van Dijk及びSrinivas Devadasによる“Silicon Physical Random Functions”(Proceedings of the 9th ACM Conference on Computer and Communications Security,November,2002)、オプティカルPUF(マサチューセッツ工科大のP.S.Ravikanthによる“Physical One−Way Functions(2001)、デジタルPUFなどがあげられる。シリコンPUFは、製造工程に帰因するチップ間のばらつきを利用する、オプティカルPUFは、コヒーレント光(レーザ)ビームにより放射される光構成によって生成されるスペックルパターンの予測不能性を利用する。デジタルPUFは、改ざん耐性環境が、暗号化及び認証用に利用される秘密鍵をプロテクトする従来シナリオを表す。
【0005】
PUFは、それがセキュリティ装置内で分離不可な方法により(すなわち、当該アルゴリズムを回避しようとする何れの試みも、PUFの破壊を導く)PUFに物理的にリンクしたセキュリティアルゴリズムを介してのみアクセス可能である場合、被制御であると定義される(被制御PUF又はCPUF)。特に、当該セキュリティアルゴリズムは、PUFに提供されるチャンレンジを制限し、外部の世界に与えられるレスポンスに関する情報を制限することができる。制御は、PUFがシンプルな認証識別アプリケーションに勝ることを可能にする基本的アイデアである。
【0006】
CPUFの具体例については、従来技術文献に記載されている。セキュリティプログラムは、PUFがセキュリティプログラムから2つのプリミティブファンクションGetSecret(.)及びGetResponse(.)を介してのみアクセス可能となるように、セキュリティアルゴリズムの制御の下で利用され、PUFとリンクされる。GetSecret(.)は、プリミティブファンクションが実行されるセキュリティプログラムの表現にPUFへの入力が依存することを保証する。この依存性のため、PUFへの入出力は、これらのプリミティブファンクションが異なるセキュリティプログラム内から実行される場合には、異なるものとなるであろう。さらに、これらのプリミティブファンクションは、新たなチャレンジ・レスポンスペアの生成が、従来技術文献に記載されるように、規制され、セキュアとすることが可能であることを保証する。
【0007】
しかしながら、上記プリミティブファンクションの出力はセキュリティプログラムの表現に依存するとき、それらは同一のPUF上で実行される異なるセキュリティプログラムの間で共有される秘密を生成するのに利用可能でない。
【発明の開示】
【発明が解決しようとする課題】
【0008】
本発明の課題は、異なるセキュリティアルゴリズムの間で共有される秘密を生成することを可能にする方法を提供することである。
【課題を解決するための手段】
【0009】
上記課題は、第1セキュリティプログラムと少なくとも第2セキュリティプログラムとの間で共有される秘密を生成する方法であって、被制御インタフェースを介しセキュリティプログラムのみからアクセス可能なランダムファンクションを有するセキュリティ装置上で、前記第1セキュリティプログラムの制御の下でプログラム命令を実行するステップを有し、前記被制御インタフェースは、プリミティブファンクションを呼び出す前記第1セキュリティプログラムの表現の少なくとも一部と、前記セキュリティ装置上で前記第2セキュリティプログラムを実行すると、前記プリミティブファンクションを呼び出す前記第2セキュリティプログラムの表現の少なくとも一部とに依存する出力を返す前記ランダムファンクションにアクセスする少なくとも1つのプリミティブファンクションを有し、前記ステップは、前記共有される秘密を生成するため前記少なくとも1つのプリミティブファンクションを呼び出すサブステップを有する方法により実現される。これにより、共有される秘密は、各セキュリティプログラムが入力としてのプリミティブファンクションが呼び出されるセキュリティプログラムの表現と、秘密が共有されるべきその他のセキュリティプログラムの表現との両方と共にプリミティブファンクションを呼び出すことによって、2以上のセキュリティプログラムの間で確立することが可能である。これらセキュリティプログラムのそれぞれがプリミティブファンクションへの入力として、関係するセキュリティプログラムの表現を利用するため、同一の秘密が各セキュリティプログラムにより生成される。
【0010】
出力をセキュリティプログラムの表現に依存させることによって、セキュリティ装置上で実行される他の何れかのセキュリティプログラムが、被制御インタフェースを介し同一の入力に対して異なる結果を取得することが、(ほとんど)保証される。共有されるキーを取得するようハッカーによって設計される他の何れかのセキュリティプログラムが、被制御インタフェースを介し役に立たない結果のみを取得する(表現方法に依存して高い確率により)。なぜなら、これらの結果は、ハッカーによって使用される他のセキュリティプログラムともとのセキュリティプログラムに対して異なるセキュリティプログラム表現に依存するためである。他の何れのセキュリティプログラムも、秘密キーを再生成し、ランダムファンクションによって提供されるセキュリティを危うくする方法によってはランダムファンクションにアクセスすることはできない。
【0011】
セキュリティプログラムの表現は、ハッシュ、他のシグネチャ又は他の一部とすることが可能である。通常、セキュリティプログラムの表現は、完全なセキュリティプログラムをカバーするが、特別なケースでは(例えば、セキュリティプログラムがランダムファンクションに関係ない大きな部分を含む場合など)、プリミティブファンクションの入出力の呼び出し及び処理を扱うセキュリティプログラムのこれらの部分に表現を限定することが効果的であるかもしれない。
【0012】
セキュリティプログラムは、典型的には、セキュリティ装置のユーザにより提供される。代わりとして、セキュリティプログラムはまた、セキュリティ装置内の別のプログラムライブラリによって提供することが可能である。
【0013】
以降の利用のため特定のセキュリティプログラムの迅速な抽出を可能にするため、プログラムは、任意的に以降の実行が許可されている許可に関する情報と共に、セキュリティプログラムの以降の実行のため、格納又はハッシュコードとすることが可能である。
【0014】
本発明のより特定の実現形態が、請求項2に記載されている。プログラム表現はすべて、明示的にはプログラムProg1..ProgNについて、又は暗黙的にはプリミティブファンクションが呼び出されるプログラムProgramについて、ランダムファンクションへの入力として使用される。これを実現するため、プリミティブファンクションは、プリミティブファンクションを呼び出すセキュリティプログラムとその他のセキュリティプログラムの表現が区別されないようにしなければならない。異なるセキュリティプログラムが同一の共有された秘密を生成することを保証するため、辞書式順序付けが適用される。
【0015】
本発明のより特定の実現形態が、請求項3に記載されている。好ましくは(ほとんど)コリジョンフリーであるランダムハッシュファンクションh(.)が利用されるとき、これらのプリミティブファンクションは、セキュリティプログラムの間で共有されるキーとして使用されるキーを確実に生成するのに効果的に利用可能である。請求項1に記載されるように、Program及びProg1..ProgNは、セキュリティプログラムの関連する部分のみを表現することが理解されるべきである(セキュリティの観点から)。
【0016】
本発明の一変形が、請求項4に記載される。請求項2のような辞書式順序付けを計算する必要の代わりに、プログラム表現がプリミティブファンクションへの入力として利用される前に、各セキュリティプログラムに同じ順序により容易に再順序付け可能となるように、当該変形はセキュリティプログラムが番号付けされることに依拠する。
【0017】
本発明の一変形が、請求項5に記載される。2004年5月6日に出願された特許出願US2004/014404(代理人整理番号PHNL030605)は、セキュリティプログラムが第1モードにより実行することによって生成され、同一のセキュリティプログラムが第2モードにより実行されることによって検証可能な実行のプルーフを記載している。当該手段の問題点は、双方のモードを含む完全なセキュリティプログラムが、プリミティブファンクションにおける利用及び実行のため、セキュリティプログラムにおいて利用可能とされる必要があるということである。本発明による方法は、第1モード部分又は第2モード部分のみが独立したセキュリティプログラムとして必要とされ、各セキュリティプログラムが共有される秘密を依然として生成することが可能であるとき、依然としてセキュリティが利用可能であるという効果を有している。
【0018】
本発明の一変形が、請求項6に記載されている。2004年5月6日に出願された特許出願US2004/014404(代理人整理番号PHNL030605)は、セキュリティプログラムの以降の継続のために考えられるセキュリティプログラムによるセキュア状態情報のコンセプトをさらに記載する。このコンセプトは、複数のセキュリティプログラムがセキュリティ装置上で実行することを効果的に可能にする2以上のセキュリティプログラムをスケジューリングするのに利用可能である。これらの各セキュリティプログラムは、本発明による方法により取得される共有される秘密キーを利用してセキュアに通信可能である。
【0019】
本発明の効果的な実現形態が、請求項7に記載されている。従来技術文献では、認証された実行は、特定のプロセッサチップのユーザに、特定の計算が当該プロセッサチップ上で実行され、当該計算が実行され、与えられた計算出力を生成したことを証明する証明書(電子証明書と呼ばれる)を計算出力と共に生成するプロセスとして定義される。セキュリティ装置のユーザに、セキュリティプログラムが実際に同一のセキュリティ装置上で実行されることを証明するため、セキュリティプログラムは、好ましくは、従来技術文献に記載されるような認証された実行を実現する第2セキュリティプログラムの一部として実行される。
【0020】
本発明のより特定の実現形態が、請求項8に記載される。当該実現形態では、プリミティブファンクションにおいて利用されるランダムファンクションを実現するため、PUFが利用される。
【0021】
本発明のより特定の実現形態が、請求項9に記載されている。本実現形態における生成された共有秘密キーはまた、入力変数の少なくとも一部に依存する。これは、共有される秘密の生成について使用するため、(アプリケーション)プログラム入力がセキュリティプログラムにハードコード化される必要がないという効果を有する。一部の入力は関係がないかもしれないため、セキュリティ装置と当該セキュリティ装置のユーザとの間で秘密が維持される場合(従って、第三者に通信されない場合)、又は異なるプログラムの実行の間で異なるものとすることが許容される場合、必ずしもすべての入力が考慮される必要はない。
【0022】
本発明によるシステムが、請求項10に記載されるように特徴付けされる。
【0023】
本発明によるコンピュータ可読媒体などのコンピュータプログラムプロダクトが、請求項11に記載されるように特徴付けされる。
【0024】
本発明による信号が、請求項12に記載されるように特徴付けされる。
【0025】
本発明の上記及び他の特徴が、概略図を参照して実施例を通じてさらに説明される。
【発明を実施するための最良の形態】
【0026】
図面を通じて、同一の参照番号は同様又は対応する特徴を示す。図面に示される特徴の一部は、典型的にはソフトウェアにより実現され、ソフトウェアモジュールやオブジェクトなどのソフトウェアエンティティを表す。
【0027】
図1は、従来技術によるPUF104を有するセキュリティ装置103を利用するアプリケーションのための基本的モデルを示す。システム100により実現されるモデルは、以下を有する。
・セキュリティ装置103の制御における又は制御下のチップ105の計算能力を利用することを所望するユーザ103
・当該ユーザ及びチップは、おそらく信頼されない公衆通信チャネル102により互いに接続されている。ユーザは、人間とすることが可能であるだけでなく、異なるソフトウェア、ハードウェア又は他の装置とすることが可能である。
【0028】
セキュリティ装置103は、プロセッサ111とメモリ112とを有し、コンピュータプログラムプロダクト113からのコンピュータ実行可能命令を実行するよう構成される処理装置110により実現可能である。
【0029】
従来技術文献は、各特定のPUFに対して一意的なチャレンジ及びレスポンスの処理を記載している。チャレンジが与えられると、PUFは対応するレスポンスを計算することができる。ユーザは、PUFにより当初生成されたCRP(Challenge−Response Pair)の自己のプライベート(認証された)リストを所有する。このリストは、当該ユーザのみが(おそらくPUFに加えて)リストの各チャレンジに対するレスポンスを知っているという理由のため、プライベートなものである。ユーザのチャレンジはパブリックなものとすることが可能である。ユーザはセキュリティ装置によりいくつかのCRPを確定していると仮定される。
【0030】
(限定数の)チャレンジに対するレスポンスは、ユーザにのみ知られている。さらに、セキュリティ装置は、特定のチャレンジに対するレスポンスを(再)計算するかもしれない。他者が特定のチャレンジに対してレスポンスを復元することを回避するため、CRPを管理するセキュアな方法が必要とされる。従来技術文献は、これを実現するための被制御PUFのコンセプトを提案している。PUFは、それがセキュリティ装置内で分離不可な方法により(すなわち、当該アルゴリズムを回避しようとする何れの試みも、PUFの破壊を導く)PUFに物理的にリンクしたセキュリティアルゴリズムを介してのみアクセス可能である場合、被制御であると定義される(被制御PUF又はCPUF)。特に、当該セキュリティアルゴリズムは、PUFに提供されるチャンレンジを制限し、外部の世界に与えられるレスポンスに関する情報を制限することができる。制御は、PUFがシンプルな認証識別アプリケーションに勝ることを可能にする基本的アイデアである。PUF及び被制御PUFは、スマートカード識別、認証実行及びソフトウェアライセンシングを実現するため説明及び知られている。
【0031】
マン・イン・ザ・ミドル(man−in−the−middle)攻撃者を回避するため、ユーザはCRP管理プロトコル期間中には特定のチャレンジに対するレスポンスを求めることが禁止されている。これは、これらのプロトコルによりセキュリティ装置がユーザにレスポンスを送信するときに、CRP管理プロトコルにおいて懸念されることである。これは、セキュリティ装置がチャレンジ対するレスポンスを直接的には提供しないように、PUFへのアクセスを制限することにより保証される。CRP管理は、従来技術文献に記載されるように行われる。アプリケーションプロトコルでは、レスポンスは、メッセージ認証コード(MAC)を生成するためなど、さらなる処理のために内部的にのみ使用され、ユーザに送信されることはない。CPUFは、プライベートな方法により(当該プログラムが行っていることを誰も見ることができず、あるいは操作されている少なくともキー材料が隠されたままにされる)、また信頼できる方法により(検出されることなく、プログラムが行っていることを誰も変更することができない)、ある形式のプログラム(以降において、セキュリティプログラム)を実行することができる。
【0032】
CPUFの制御は、PUFがセキュリティプログラムを介してのみ、より具体的には2つのプリミティブファンクションGetResponse(.)及びGetSecret(.)を利用することによってのみアクセス可能となるように構成される。従来技術文献において使用されるプリミティブファンクションのセットは、
・GetResponse(PC)=f(h(h(SProgram),PC))
・GetSecret(Challenge)=h(h(SProgram),f(Challenge))
として定義される。ここで、fはPUFであり、hは公開利用可能なランダムハッシュファンクション(又は、実際的にはある擬似ランダムファンクション)である。これらのプリミティブファンクションにおいて、SProgramは、信頼できる方法により実行されているセキュリティプログラムのコードである。当該装置のユーザが、このようなセキュリティプログラムを配信する。h(SProgram)は、ハードコード化された値(一部のケースでは、チャレンジなど)を含むプログラムに含まれるすべてを含む。セキュリティ装置は、h(SProgram)を計算し、以降においてGetResponse(.)とGetSecret(.)が呼び出されると、この値を利用する。h(SProgram)の計算は、セキュリティプログラムの開始前又はプリミティブファンクションの最初のインスタンス化(直)前に実行することができる。従来技術文献に示されるように、これら2つのプリミティブファンクションは、GetResponse(.)がCRPの生成に原則的に利用され、GetSecret(.)がCRPから共有される秘密を生成することを所望するアプリケーションにより利用されるセキュアなCRP管理を実現するのに十分である。
【0033】
以降において、以下の記号が使用される。
・E(m,k)は、キーkによりメッセージmの暗号化である。
・D(m,k)は、キーkによるメッセージmの解読である。
・M(m,k)は、キーkによりメッセージmをMACする。
・E&M(m,k)は、キーkによりメッセージmを暗号化及びMACする。
・D&M(m,k)は、MACが一致する場合、キーkによりメッセージmを解読する。MACが一致しない場合、MACが一致せず、解読を実行しない旨のメッセージを出力する。
【0034】
図2に示されるような本発明の第1実施例は、共有される秘密を生成するセキュリティプログラムを実行する例を示す。セキュリティプログラム231は、セキュリティプログラム231は、共有キーが生成されるその他のセキュリティプログラムのハッシュコード表現(本例では、h_SProgB=h(SProgB)である)を有するセキュリティプログラムのための入力232と共に、実行のためPUF203を有するセキュリティ装置202を有するシステム201に通信221により送信される。その後、セキュリティプログラムSProgAは、
・GetResponseSK(PC)=f(h(PHR,PC))
・GetSecretSK(Challenge)=h(PHR,f(Challenge))
として定義される本発明によるプリミティブファンクションを利用して、セキュリティ装置に関する共有秘密を生成する。ただし、
・PHR=Ordering(h(SProgram),Val,Rule)
である。
【0035】
Orderingファンクションは、Ruleの値に従って入力パラメータの再順序付けを規定する。Ruleの値は、PHRとプリミティブファンクションの出力が、共有秘密を生成することを所望する異なるセキュリティプログラムにおいて同一であることを保証するのに利用可能である。生成される共有秘密は、その後は秘密キーとして利用可能である。Orderingファンクションは、セキュリティプログラムの表現値の辞書式順序付けとすることも可能であり、あるいはRuleの値は上記表現値が連結される順序を決定するものであってもよい。
【0036】
【表1】

プログラムSProgAにおいては、h(Ordering(h(ProgA),Val,Rule))=h(Ordering(h(ProgA),h(ProgB),0))=h(h(ProgA),h(ProgB))となる。プログラムSProgBにおいては、h(Ordering(h(ProgB),Val,Rule))=h(Ordering(h(ProgB),h(ProgA),1))=h(h(ProgA),h(ProgB))となる。従って、双方のプログラムは、同一の入力をプリミティブファンクションGetResponseSKに適用する。
【0037】
本発明の第2実施例は、実行のプルーフ(proof)の生成及び検証のため、別々のセキュリティプログラムを有するための共有秘密の利用を示す。2004年5月6日に出願された特許出願US2004/014404(代理人整理番号PHNL030605)は、第1モードが実行のプルーフを生成し、第2モードが実行のプルーフを検証するマルチモードセキュリティプログラムを利用した実行のプルーフの生成及び検証を記載している。本発明によると、別々のセキュリティプログラムを利用して実行のプルーフを生成し、それを検証することが可能であり、これにより、プログラムダウンロード及び初期化のオーバヘッドを軽減することが可能となる。それはまた、セキュリティプログラムの表現計算の計算負荷を軽減するかもしれない。
【0038】
実行のプルーフをサポートするため、認証された実行の解を実行のプルーフを生成するための付加的なプログラムレイヤにより拡張することが効果的である。
【0039】
本実施例が利用可能な第1の例として、図3に示されるように、アリスが配信者310であり、ボブがセキュリティ装置301を有するSTB(セットトップボックス)300の所有者となるSTBアプリケーションを考える。プログラムA320において、ボブはあるサービスを購入する。アリスは、取引詳細332と、電子証明書333(当該電子証明書は、取引詳細と電子プルーフの両方の真正性を証明する)と、電子プルーフ334とを受信する。アリスは、ステップ340において、電子証明書が一致するかチェックする。そうである場合、アリスは、電子プルーフがボブのSTBにより生成されたものであることを知り、プログラムBにおいて取引を継続する。電子プルーフは、仲介者が取引詳細を復元可能であるため、ボブがサービスを購入したという確認として利用可能である。プログラムB321において、ボブは、ボブが要求したサービスに属するコンテンツ335を受信する。当該コンテンツは、CRPを利用することによって暗号化されてもよい。アリスは、プログラムBにおいてボブのアクションの第2の電子プルーフ336を受信する。第1の例では、それは、ボブにプログラムBにおいて当該コンテンツを送るアリスの約束のプルーフを受信していないようにみえる。しかしながら、アリスだけでなくボブもまた、第1の電子プルーフを利用することが可能である。ボブのSTBがプログラムAにおいて符号化されたプロトコルを良好に実行したことを何れかの第三者がチェック可能であり、それ自体プログラムBにおいてボブにコンテンツを送信するアリスの約束となる。例えば、ボブは、電子プルーフを利用して、ボブがあるサービスを購入したことを第三者(及び特にアリス)に確信させることが可能であり、それが、ボブをディスカウントやアップグレードの対象とすることを可能にするかもしれない。
【0040】
第2の例として、アリスが入力の一部としてタイムスタンプを有するプログラムをボブのセキュリティ装置上で実行することを所望していると仮定する。この実行結果は、当該タイムスタンプが正確な実行時間を表すというボブとの合意によるタイムスタンプのコピーを含むかもしれない。例えば、プログラムは、それがボブに同意するか尋ね、ボブが同意しない場合には中断するよう設計される。正しい電子プルーフが与えられると、仲介者は当該結果を抽出する。このため、ボブは、タイムスタンプをチェックし、ボブ及び/又はアリスの主張が依然として有効であるか否か検証することができる。
【0041】
第3の例として、異なるモードによるプログラムProgram’を仮定する。それのモードに応じて、Program’はプロセッサP上で(Result,EProof)=Program(Input)を計算するか(ただし、EProofは、Pに対する入力InputによるプログラムProgramの電子プルーフである。)、又はProgram’が、EProofが有効な電子プルーフであるかチェックする仲介者の役割を果たし、そうである場合には、Resultを再構成する。仲介者の役割では、EProofはProgram’における次のモードへのチケットとして利用されてもよい。この技術は、限定的なアクセスを実現する。
【0042】
図4は、各種プログラムレイヤを示す。それぞれ実行のプルーフ、EProgram_generation403及びEProgram_verification453を生成検証する本発明によるプログラムはそれぞれ、ユーザと第三者の双方がセキュリティ装置上で実行が行われたことを確信するため、PUF401を備えるセキュリティ装置400において各自の認証された実行プログラムCProgram1(402及び454)のXProgram部分として実行される。
【0043】
EProgram_generationは、アリスが興味を有する結果だけでなく、電子プルーフも計算する(AProgram406において)。アリスは、認証された実行を利用して(CProgramのXProgram部分としてEProgram_generationを実行することによって)、当該プログラムがボブのセキュリティ装置上で正確に実行されたことを確信する。仲介者は、EProgram_verificationを実行し、さらに認証された実行を利用することによって、電子プルーフをチェックすることができる。そのキーとなるアイデアは、GetResponse(.)プリミティブが、双方のセキュリティ装置のハッシュに依存するということである。この結果、(GetResponse(.)プリミティブを介し取得されたキーにより)実行のプルーフを生成するためセキュリティプログラムによって生成された電子プルーフは、実行のプルーフの検証のためセキュリティプログラムにより解読することが可能である。
【0044】
セキュリティは、第1にGetResponse(.)プリミティブをブレークする困難性によって、すなわち、ハッシュをブレークし、GetResponse(.)が定義されるPUFをブレークする困難性によって、そして第2に暗号化及びMAC E&M(.)プリミティブをブレークする困難性によって決定される。
【0045】
これらのプログラムの変形が可能である。一部のプログラムは、入力の一部をハードコード化するかもしれず、これはフレキシビリティを低下させるが、よりロウバストになる。プルーフ結果に存在する出力量もまた異なる。これらのアルゴリズムの任意の変形が実現可能である。
【0046】
第1の変形では、アリスは、AProgram(Input)を実行し、実行プルーフを受け取ることを所望し、これにより、EProgram_generation(Inputs)(431)を実行する。ただし、h(EProgram_verification)に等しいVal432とランダム文字列であるPC433によるInputs=(h(EProgram_verfication),AProgram,Input,PC)(435:AProgram,434:Inputによる)であり、EProgram_generationは以下に定義されるようなものである。PCは、秘密キーKEを生成するため、ランダムファンクションに対するチャレンジを計算するため、GetResponse(.)により“プレ・チャレンジ(pre−challenge)として利用される。アリスは、認証された実行の技術を利用して、前述されたようなCProgram430を利用したボブのセキュリティ装置上でEProgram_generation(Inputs)を実行する。アリスは、セキュリティ装置から取得したすべての出力の真正性を検証するため、電子証明書をチェックする。生成された電子証明書は、Program(Input)により生成された結果438の証明書だけでなく、生成された電子プルーフ436の証明書となる。
【0047】
【表2】

実行のプルーフは、ボブのセキュリティ装置によりプロトコルを実行する何れかの仲介者により検証可能であり、当該検証は3つのステップを有している。ステップ1では、仲介者はステップ450においてアリス又はボブから実行のプルーフであるEProofを受け取る。仲介者はInputs=(h(Eprogram_generation),EProof)(EProof:444)を構成する。ここで、Val442は、共有される秘密キーを生成するのに必要とされるセキュリティプログラム表現である。仲介者はまた、おそらくアリス又はボブからEProgram_verification及びCProgram(おそらく以前に実行されたようなものであって、本例では、ステップ451及び452において仲介者に通信される)。仲介者はPCを必要としないことに留意されたい。
【0048】
ステップ2では、仲介者は、CProgram440による認証された実行の技術を利用して、ボブのセキュリティ装置上でEProgram_verification(Inputs)(EProgram_verification:441)を実行する。仲介者は、セキュリティ装置から取得したResultsの真正性を検証するため、電子証明書447をチェックする。電子証明書がResultsに一致する場合、仲介者は、ボブのセキュリティ装置が何れかの者の干渉なしにボブのEProgram_generation(Inputs)を実行し、何れの者にもそれの入力又は出力が改ざんされていないことを知ることとなる。特に、何れの者も入力EProofを変更していなかった。すなわち、ボブのセキュリティ装置は、EProofを用いてEProof_verification(Inputs)を実行した。Result445は、Outputにおいて完全に若しくは部分的に供給可能であり、又は全く供給することが可能でない。それはまた、Resultから求められる情報と置換することができる。これは、アプリケーションと仲介者に依存するかもしれない。この決定は、その後プログラムにより実現される。例えば、プライバシーの理由のため、EProgram_verificationは、結果のサマリのみを仲介者に送信することも可能である。
【0049】
ステップ3では、仲介者は、CheckBit446が真であるか、すなわち、EMResultのMACが一致するか検証する。そうである場合、仲介者は、ボブのセキュリティ装置上のAProgram(Input)がEProof及びResultを計算したと判断する。そうでない場合、仲介者は、ボブのセキュリティ装置がEProofを計算していないと判断する。EProgram_verificationは、MACが一致しないことを出力するか(D&M(.)及びChechBitの定義を参照されたい)、又はMACが解読された結果と一致することを出力する。(偽の)結果であるFResultに対して偽の電子プルーフであるFEProof=(FPC,FEMResult)を生成することは、いわゆる困難な問題である。
【0050】
第3の実施例では、2004年5月6日に出願された特許出願US2004/014404(代理人整理番号PHNL030605)に記載されるように、セキュアメモリとセキュアプリグラムの実行状態の利用が、同一のセキュリティ装置上で交互に実行されるセキュリティ装置間のセキュアな通信を行うため、共有された秘密の生成と組み合わせることができる。
【0051】
図5は、本実施例のアーキテクチャを示す。プログラム実行状態502とメモリコンテンツ502とは、セキュリティプログラム505の部分的実行の間に格納される。セキュリティ装置500上で実行されるセキュリティプログラム501は、割り込みの場合、又は異なるセキュリティプログラムが実行される必要がある場合、それのプログラム状態505をセキュアに格納することが可能である。割り込みが行われると、プログラム状態が暗号化される(ステップ503)。セキュリティ装置は、外部にそれの状態を開示することなく以降においてそれの実行を継続するかもしれない。継続されると、プログラム状態が検証及び解読され(ステップ504)、復元される。メモリコンテンツの一部は共有秘密キーを用いて暗号化され、メモリの他の部分はプライベート共有秘密キーを用いて暗号化されてもよく、これにより、セキュアなプログラム間の通信とセキュリティプログラムの間のセキュアな分離の両方を実現することができる。
【0052】
本発明の第4実施例は、認証された実行のレイヤを追加する。認証された実行のコンセプトは、従来技術文献において記載されている。セキュリティ装置のユーザにセキュリティプログラムがセキュリティ装置上で実際に及びセキュアに実行されることを保証するため、共有秘密を生成するセキュリティプログラムは、認証された実行を実現する他のセキュリティプログラムの制御の下で実行される。この技術は、具体的実現形態により示される。認証された実行は、いわゆる電子証明書を用いて提供される。セキュリティ装置上の入力InputによるプログラムXProgramの電子証明書は、XProgramの出力される結果がセキュリティ装置上でXProgram(Input)により生成されたか、セキュリティ装置のユーザがかなりの確率により効率的にチェックすることができるように、セキュリティ装置上でXProgram(Input)により効率的に生成される文字列として規定される。セキュリティ装置上でのXProgramの実行をリクエストするユーザは、セキュリティ装置の所有者に頼る代わりに、自らがセキュリティ装置を生成したということを保証することができるセキュリティ装置のメーカーの信頼性に頼ることができる。
【0053】
図6は、計算がセキュリティ装置上で直接実行される認証された実行を示す。ユーザであるアリスは、ボブのコンピュータ601上で計算量の大きなプログラムProgram(Input)を実行することを所望している。ボブのコンピュータは、PUF603を有するセキュリティ装置602を有する。アリスは、セキュリティ装置によるCRP611のリストをすでに確立していると仮定する。(Challenge,Response)をボブのPUFに対するアリスのCRPの1つであるとする。第1の実現形態の変形では、アリスは、(Challenge,E&M((XProgram,Input),h(h(CProgram),Response)))に等しい入力Inputs632による以下のプログラムCProgram1(631)をセキュリティ装置602に送信する(通信621により)。
【0054】
【表3】

Result=XProgram(Input)によって、ResultはXProgram(Input)の出力の一部であると理解される。電子プルーフが必要とされないさらなる出力があるかもしれない。Output(...)は、通信622に示されるように、CPUFからの結果633を送信するのに利用される。セキュリティ装置から送信されるものは、潜在的には全世界に明白にされる(メーカーがセキュリティ装置を物理的に所持するブートストラッピング中を除いて)。プログラムのセキュアな設計は、Resultに暗号化形式により配置される結果を生成する。暗号化は、従来の暗号化又はSecretを用いることによって実行可能である。後者のケースでは、SecretはInputに含まれる。
【0055】
アリスのCRPはプライベートであるため、他の何れの者もSecretと、SecretによるMACを生成することはできない。MACは、プログラムの2つのスポットにおいて利用される。第1MACは、プログラムによりチェックされ、Inputsの真正性を保証する。第2MACは、アリスによりチェックされ、セキュリティ装置から取得したメッセージの真正性を保証する。アリスを除いて、セキュリティ装置のみが、プログラムCProgramを実行することによりSecretが与えられたチャレンジを生成することができる。このことは、ResultとCertificateがセキュリティ装置上でCProgramにより生成されたことを意味する。すなわち、CProgramは入力としてInputsにより認証された実行を実行したこととなる。これは、Certificateが電子証明書であることを証明する。
【0056】
従って、電子証明書は共有される秘密を生成するセキュリティプログラムのセキュアなリモート計算に利用可能である。Certificateが一致する場合、このことは、XProgram(Input)がセキュリティ装置上で(CProgram(Inputs)により)実行されたことをアリスに証明するものである。
【0057】
セキュリティ装置の所有者(ボブ)とセキュリティ装置のユーザ(アリス)とは、1つの同一のものであってもよいということに留意されたい。例えば、ボブは、自分がProgram(Input)によりResultを計算したことを自らの電子プルーフにより他人に証明する。最終的に、本発明の効果は、アリスも仲介者もPUFを備えたセキュリティ装置を必要としないということである。
【0058】
本発明は、それがデジタルだけでなく、フィジカル又はオプティカルであるすべてのPUFに適用可能であるという意味において一般的に適用可能である。構成の詳細は、フィジカルPUFについて与えられているが、デジタル又はオプティカルPUFに振り替えることができる。
【0059】
他のものも可能である。上記記載において、「有する」という用語は他の要素又はステップを排除するものでなく、「ある」という用語は複数を排除するものでなく、単一のプロセッサ又は他のユニットもまた、請求項に記載されるいくつかの手段の機能を実現するかもしれない。
【図面の簡単な説明】
【0060】
【図1】図1は、PUFを利用したアプリケーションに対する基本的モデルを示す。
【図2】図2は、共有される秘密の生成を示す。
【図3】図3は、共有される秘密を生成するための一例となる利用シナリオを示す。
【図4】図4は、認証された実行の下で共有秘密を生成するための各プログラムレイヤの概略を示す。
【図5】図5は、割り込みされた処理を示す。
【図6】図6は、認証された実行を示す。

【特許請求の範囲】
【請求項1】
第1セキュリティプログラムと少なくとも第2セキュリティプログラムとの間で共有される秘密を生成する方法であって、
被制御インタフェースを介しセキュリティプログラムのみからアクセス可能なランダムファンクションを有するセキュリティ装置上で、前記第1セキュリティプログラムの制御の下でプログラム命令を実行するステップを有し、
前記被制御インタフェースは、プリミティブファンクションを呼び出す前記第1セキュリティプログラムの表現の少なくとも一部と、前記セキュリティ装置上で前記第2セキュリティプログラムを実行すると、前記プリミティブファンクションを呼び出す前記第2セキュリティプログラムの表現の少なくとも一部とに依存する出力を返す前記ランダムファンクションにアクセスする少なくとも1つのプリミティブファンクションを有し、
前記ステップは、前記共有される秘密を生成するため前記少なくとも1つのプリミティブファンクションを呼び出すサブステップを有する方法。
【請求項2】
前記第1セキュリティプログラムの表現と前記第2セキュリティプログラムの表現とは、前記プリミティブファンクションの入力として使用されると、辞書式に順序付けされる、請求項1記載の方法。
【請求項3】
前記ランダムファンクションは、プリミティブファンクションを介しアクセス可能であり、GetResponse(..)=f(h(o(h(Program),hprog1,...,hprogN),PC)に実質的に等しい(ただし、Programは前記プリミティブファンクションを呼び出すセキュリティプログラムであり、hprog1〜hprogNはh(Program1)〜h(ProgramN)に等しく、Program1〜ProgramNは前記キーが共有されるべきセキュリティプログラムであり、f(.)は前記ランダムファンクションであり、h(.)は実質的に公開利用可能なランダムハッシュファンクションであり、o(..)は当該引数の辞書式順序付けを実行する)、請求項2記載の方法。
【請求項4】
前記ランダムファンクションは、プリミティブファンクションGetResponse(..)=f(h(o(h(Program),hprog1,...,hprogN,R),PC)を介しアクセス可能である(ただし、Programは前記プリミティブファンクションを呼び出すセキュリティプログラムであり、hprog1〜hprogNはh(Program1)〜h(ProgramN)に等しく、Program1〜ProgramNは前記キーが共有されるべきセキュリティプログラムであり、f(.)は前記ランダムファンクションであり、h(.)は実質的に公開利用可能なランダムハッシュファンクションであり、o(..)は引数をhprog1,...,hprogR,h(Program),hprogR+1,...,hprogNの順序で出力する当該引数の再順序付けを実行する)、請求項1記載の方法。
【請求項5】
前記共有される秘密は、実行のプルーフを生成するため第1セキュリティプログラムにおいて利用され、
前記共有される秘密は、前記実行のプルーフを検証するため第2セキュリティプログラムにおいて利用される、請求項1記載の方法。
【請求項6】
前記共有される秘密は、同一のセキュリティ装置上で実行される各セキュリティプログラムの間で通信するため利用される、請求項1記載の方法。
【請求項7】
前記セキュリティプログラムは、該セキュリティプログラムが前記セキュリティ装置によって実行されることを前記セキュリティ装置のユーザに証明する認証された実行を提供する第2セキュリティプログラムの一部として実行される、請求項1記載の方法。
【請求項8】
前記ランダムファンクションは複雑物理系を有する、請求項1記載の方法。
【請求項9】
前記共有される秘密の計算は、前記ランダムファンクションへの入力として前記セキュリティプログラムの一部を利用する、請求項1記載の方法。
【請求項10】
コンピュータ可読命令を実行するためのプロセッサとメモリとを有する処理装置とランダムファンクションとを有するシステムであって、
前記命令は、請求項1記載の方法を当該システムに実行させるよう構成されるシステム。
【請求項11】
コンピュータに請求項1記載の方法を実現させるためのコンピュータにより実行可能な命令を有するコンピュータプログラム。
【請求項12】
請求項1記載の方法によって生成される共有される秘密を搬送する信号。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate


【公表番号】特表2008−514097(P2008−514097A)
【公表日】平成20年5月1日(2008.5.1)
【国際特許分類】
【出願番号】特願2007−531939(P2007−531939)
【出願日】平成17年9月16日(2005.9.16)
【国際出願番号】PCT/IB2005/053047
【国際公開番号】WO2006/033065
【国際公開日】平成18年3月30日(2006.3.30)
【出願人】(590000248)コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ (12,071)
【Fターム(参考)】