説明

乱数関数を利用した実行証明

物理的乱数関数は、評価が容易であるが特徴付けするのが困難な関数である。制御された物理的乱数関数は、分離不可な手法によりPUFに物理的に結合されたセキュリティアルゴリズムにより制御されるセキュリティプログラムを介する場合のみアクセス可能なPUFである。CPUFは、特定の計算が特定のプロセッサ上で実行されたことを証明する証明書が生成される証明された実行を可能にする。本発明は、任意の第三者が検証可能な実行証明を生成する付加的レイヤを提供する。この実行証明はまた、セキュアなメモリ及び中断可能なプログラム実行を提供するのに有用である。


【発明の詳細な説明】
【技術分野】
【0001】
本発明は、プログラム実行の真正性を証明するための方法、当該方法を実現するよう構成されたシステム、当該方法を実現するコンピュータプログラムプロダクツ、当該方法を実現するコンピュータ実行可能な命令、及び当該方法により生成される証明結果を伝搬する信号に関する。
【背景技術】
【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)(以下では「先行技術文献」と呼ぶ)では、認証された実行とは、計算出力と共に、特定プロセッサチップのユーザに特定の計算が当該特定プロセッサチップ上で実行され、当該計算が実行され、所与の計算結果を生成したことを証明する証明書(電子証明書と呼ばれる)を生成するプロセスとして定義される。
【0003】
電子証明書の生成及び検証のため先行技術文献で用いられるフレームワークは、物理的乱数関数(Physical Random Function)の概念に基づき構成されている。物理的乱数関数(PUF)は、複雑な物理的システムを用いて評価される乱数関数である。略語PUF(PRFの代わりに)を用いることは、発音が容易であるという利点と共に、擬似乱数関数(Pseudo−Random Function)との混同を避けるためである。PUFは様々な手法により実現可能である。PUFの実現形態の一部は、各生成サンプル(例えば、各半導体チップ)が異なる機能を実現するような方法により生成することが容易である。これは、PUFが認証された識別アプリケーションにより利用されることを可能にする。
【0004】
PUFは、チャレンジとレスポンスをマップし、物理的装置により実現され、以下の2つの性質を有する関数である。すなわち、(1)PUFは評価が容易であり、物理的装置は短時間に当該関数を容易に評価することができる。(2)PUFは、多項数のもっともらしい物理的測定値(特に、選ばれたチャレンジ−レスポンスペアの決定)から、もはやセキュリティ装置(へのアクセス)を有しない、多項量のリソースのみが利用可能な攻撃者は、ランダムに選ばれたチャレンジに対するレスポンスに関する無視できる量の情報しか抽出することができないということを特徴付けることは困難である。上記定義では、「短い」及び「多項(polynomial)」という表現は、装置のサイズに対するものであり、セキュリティパラメータである。特に「短い」とは、リニアまたは低次元の多項を意味する。「もっともらしい」という表現は、測定技術における現在の技術状態に対するものであり、方法が改良されるに従い変わる可能性がある。
【0005】
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,Massachusetts Institute of Technology,Physical One−Way Functions,2001)、及びデジタルPUFがあげられる。シリコンPUFは、製造過程に起因するチップ間変動を利用する。オプティカルPUFは、コヒーレント光(レーザ)ビームにより照射された光構造により生成されるスペックルパターンの予測不可能性を利用する。デジタルPUFは、改ざん耐性環境が暗号化及び認証のために利用する秘密鍵を保護する従来シナリオを表す。
【0006】
PUFは、セキュリティ装置内で分離不可な方法によりPUFに物理的リンクするセキュリティアルゴリズムを介してのみアクセス可能な場合に、「制御された」ものであると定義される(制御PUFまたはCPUF)(すなわち、当該アルゴリズムを回避しようとする試みは、PUFの破壊を招くであろう)。特に、当該セキュリティアルゴリズムは、PUFに与えられたチャレンジを制限することが可能であり、外部に与えられるレスポンスに関する情報を制限することができる。制御は、PUFが単なる認証された識別用途以上のものとなるのを可能にする基本的アイデアである。
【0007】
先行技術文献には、CPUFの例が説明されている。セキュリティプログラムは、PUFがセキュリティプログラムからの2つのプリミティブな関数GetSecret(.)とGetResponse(.)を介する場合に限りアクセス可能となるように、PUFにリンクされたセキュリティアルゴリズムの制御下で使用される。GetSecret(.)は、PUFへの入力がプリミティブ関数が実行されるセキュリティプログラムの表現に依存することを保証する。GetResponse(.)は、PUFの出力がプリミティブ関数が実行されるセキュリティプログラムの表現に依存することを保証する。この依存性のため、PUFの入出力は、上記プリミティブ関数が異なるセキュリティプログラム内で実行される場合、異なるものとなるであろう。さらに、上記プリミティブ関数は、先行技術文献に記載されるように、新たなチャレンジ−レスポンスペアの生成が規制可能であると共に、セキュアなものとすることが可能であることを保証する。
【0008】
認証された実行は(先行技術文献で記載されるような)、ユーザにのみ知られている秘密のPUFチャレンジ−レスポンスペアに基づきユーザが出力を計算可能なチャレンジに対しGetSecret(.)プリミティブを利用する。このようにして、ユーザがPUFアルゴリズムと共に特定のプロセッサチップ上のアルゴリズムを実行したことを証明するため、当該出力はユーザに対し利用可能である。
【0009】
しかしながら、ユーザは当該出力を用いて、プログラムが特定のプロセッサ上でアクティブに実行されたことを第三者に証明することはできない。なぜならば、ユーザはチャレンジ−レスポンスペアを用いて自ら当該結果を生成することができるためである。しかしながら、例えば電子取引システムでは、プログラム(番組を視聴するため料金を支払うプログラムなど)が特定のプロセッサ上で実行されたことを第三者に実際に証明することができることがしばしば望ましい。
【発明の開示】
【発明が解決しようとする課題】
【0010】
従って、本発明の課題は、任意の第三者により検証可能な証明書としての電子証明と呼ばれる特定プロセッサ上の特定の計算に対する実行証明として利用可能な証明結果の生成を可能にする方法を提供することである。
【課題を解決するための手段】
【0011】
上記課題は、プログラム命令の実行の真正性を証明する方法であって、乱数関数を有するセキュリティ装置上のセキュリティプログラムの制御の下、プログラム命令を実行するステップと、前記乱数関数を利用して、制御されたインタフェースを介し前記乱数関数にアクセスすることにより、第1モードで動作する前記セキュリティプログラムの実行中に証明結果を計算するステップと、前記乱数関数を利用して、前記制御されたインタフェースを介し前記乱数関数にアクセスすることにより、第2モードで動作する前記同一のセキュリティプログラムの実行中に前記証明結果を検証するステップとを有し、前記乱数関数は、前記制御されたインタフェースを介し前記セキュリティプログラムからのみアクセス可能であり、前記制御されたインタフェースは少なくとも1つのプリミティブ関数を有し、前記プリミティブ関数は、該プリミティブ関数を呼び出す前記セキュリティプログラムの少なくとも一部の表現の少なくとも一部に依存する出力を返す前記乱数関数にアクセスすることを特徴とする方法により実現される。
【0012】
セキュリティプログラムは、同一または異なる実行による異なる動作モードにより実行可能である。同一のプログラムに少なくとも2つの動作モードを有することにより、セキュリティプログラムは、異なるプログラム実行において乱数関数を効果的に利用することが可能である。乱数関数にアクセスするプリミティブ関数は異なるモードで動作する同一のセキュリティプログラムである少なくともセキュリティプログラムの一部の表現に依存するため、乱数関数へのアクセスは、当該異なるモードによるセキュリティプログラムに対し保証され、他の何れのセキュリティプログラムも乱数関数により提供されるセキュリティに妥協して乱数関数にアクセスすることはできない。従って、「マルチモード」プログラムは、その他のモードの機能がセキュリティプログラムの最初の実行中にすでに明らかに規定及び制限されるとき、効果的なコンセプトである。
【0013】
当該出力をセキュリティプログラムの表現に依存させることにより、セキュリティ装置上で実行される他の任意のセキュリティプログラムが制御されたインタフェースを介し同一の入力に対し異なる結果を取得することが(ほとんど)保証される。例えば、不正な証明結果を生成するため情報を取得するようハッカーにより設計された他の任意のセキュリティプログラムは、当該制御されたインタフェースを介し役に立たない結果のみを取得することになる(表現方法に応じて高い確率により)。これは、当該結果がハッカーにより利用されたセキュリティプログラムともとのセキュリティプログラムに対し異なるセキュリティプログラム表現に依存しているためである。
【0014】
セキュリティプログラムの表現は、ハッシュまたは他の署名、若しくはその一部とすることができる。通常、セキュリティプログラムの表現は、セキュリティプログラム全体をカバーするが、特殊ケースでは(例えば、セキュリティプログラムが乱数関数に関係しない大きな部分を含む場合)、プリミティブ関数の入出力の呼び出し及び処理を取り扱うセキュリティプログラムの部分に表現を制限することが効果的であるかもしれない。
【0015】
セキュリティプログラムの実行中、当該セキュリティプログラムの表現に依存する出力を有するプリミティブ関数を利用して、鍵が導出可能である。この鍵は、証明結果(の一部)を暗号化するのに利用可能である。この鍵により暗号化された結果は何れも、同一のセキュリティプログラムの以降の実行を除き、同一または異なるモードでは役に立たない。
【0016】
セキュリティプログラムは、典型的には、セキュリティ装置のユーザにより提供される。これはまた、異なるサブシステムまたは他のシステムとすることが可能である。
【0017】
以降の利用のため特定のセキュリティプログラムの迅速な抽出を可能にするため、任意的には以降の実行が可能なユーザのパーミッションに関する情報と共に、同一または異なるモードによるセキュリティプログラムの以降の実行のため、プログラムコードまたはそのハッシュコードが格納可能である。
【0018】
当該方法を利用して、CPUFは任意の第三者により検証可能な証明書である電子証明書(e−proof)と呼ばれる実行証明を証明結果として生成するのに利用可能である。例えば、STBアプリケーションでは、放送局はSTBと通信し、コンテンツを当該所有者(またはそれをレンタルした者)に販売する。放送局は、所有者のSTBを利用し、所有者と放送局との間の取引を含むプログラムの認証された実行を所望する。放送局は、所有者がコンテンツを購入したことを任意の仲介者が確認できることを所望する。これには、実行の証明が必要とされる。他のアプリケーションとしては、電子商取引、電子バンキング及び電子ビジネスにおける電子取引がある。
【0019】
本発明の第1実施例が請求項2に記載される。この証明結果は、セキュリティ装置のもとのユーザからの介入を必要とすることなく、任意の第三者に対しセキュリティ装置による(おそらく以降の)検証用の証明書として電子証明書と呼ばれる実行証明として利用可能である。電子証明書へのアクセスを有する任意の第三者は、証明結果及びセキュリティ装置を利用して、セキュリティ装置が実際に電子証明書を生成したか検証することが可能である。
【0020】
本発明の第1実施例の効果的な実現形態が、請求項3に記載される。この変形では、第1モードにより証明結果を生成するセキュリティプログラムはまた(本実施例では、実行モードと呼ぶ)、実行モードにより実際のアプリケーションプログラムを実行する。第2モードでは(検証モードと呼ぶ)、セキュリティプログラムは、証明結果を検証し、任意的には解読する。セキュリティプログラムが実行モードの一部としてアプリケーションプログラムを実行すると、証明結果はアプリケーションプログラムの真正な実行に拡張する。この証明結果は、どのアプリケーションプログラムが実行されたか、及び/またはどの入出力がそれぞれ利用されたかの検証が生成されることをカバーすることを保証するため、アプリケーションプログラム(の一部)、アプリケーションプログラム入力(の一部)及びアプリケーションプログラム出力(の一部)を含むようにしてもよい。さらに、これは仲介モードによる当該情報の(部分的)復元を可能にするものであってもよい。アプリケーション、その目的及びセキュリティポリシーに応じて、これらの解読された部分を出力するか否かはセキュリティプログラム次第である。
【0021】
本発明の第1実施例のさらなる実現形態が、請求項4に記載されている。本変形では、第1モードにより動作した特定のセキュリティプログラムにより生成された証明結果を所持する第三者は、証明結果を検証し(任意的には解読することにより抽出し)、その後第三者に確認の証拠(任意的には解読された結果)を送信するため第2モードにより以降において実行される同一のセキュリティプログラムを実行するための入力として、セキュリティプログラムに証明結果を送信する。当該情報は、証明結果が第1モードにより同一のセキュリティ装置および同一のセキュリティプログラムにより計算されたことを第三者に確信させるために想定される。
【0022】
本発明の第2実施例が、請求項5に記載される。この第2実施例では、証明結果はセキュアなデータ格納に利用される格納データ(おそらく暗号化された)を有する。第1モードとメモリストアと、及び第1モードとメモリロード動作とを関連付けることにより、(暗号化)データを有する証明結果をメモリ位置に格納することが可能である。このようにして、セキュアでない物理的メモリを、メモリアクセスに応答してメモリコンテンツを検証/認証することによりセキュアなものとすることができる。第1モードと第2モードの両方が、セキュリティプログラムの同一または異なる実行において複数回利用することが可能となる。
【0023】
本発明の第2実施例の可能な実現形態が、請求項6に記載される。証明結果に格納されているデータを暗号化することにより、当該データはセキュリティプログラム自体による以外は、証明結果から抽出することは不可能となる。当該データ(の一部)が外部に出力されるか否かは、セキュリティプログラム次第である。
【0024】
本発明の第3実施例が、請求項7に記載される。本実施例は、それがプログラム実行に関する状態情報を格納することを可能にするとき効果的である。これは、中断、スタンバイまたは電源オフなど(意図的か否かによらず)の後に、プログラムが同一状態により確実に実質的に継続されることを可能にする。継続により、状態情報は、第1モードで動作する同一のプログラムから生成されたものであることが信頼される前に、第2モードで検証される。
【0025】
本発明の第3実施例のさらなる実現形態が、請求項8に記載される。証明結果の状態情報を暗号化することにより、状態情報はセキュリティプログラム自体による場合を除き、証明結果から抽出することはできない。
【0026】
本発明の一実現形態が、請求項9に記載される。選択される動作モードがセキュリティプログラム自体でハードコード処理ができないため、異なる動作モード選択方法が求められる。動作モードを選択する大変簡潔かつ有用な方法は、セキュリティ装置のユーザにセキュリティプログラムへの入力として当該モードを供給させることである。
【0027】
本発明の効果的な実現形態が、請求項10に記載される。誰がセキュリティ装置に証明結果の生成または検証を求めているか、当該生成または検証が実際に同一のセキュリティ装置により実行されているかについてセキュリティ装置のユーザに証明するため、セキュリティプログラムは好ましくは、先行技術文献に記載されるような認証された実行を実現する第2のセキュリティプログラムの一部として実行される。
【0028】
本発明のより詳細な実現形態が、請求項11に記載される。本実現形態では、プリミティブ関数に用いられる乱数関数を実現するためPUFが利用される。
【0029】
本発明のより詳細な実現形態が、請求項12に記載される。好ましくは(ほとんど)コリジョン・フリー(collision−free)な乱数ハッシュ関数h(.)が利用されるとき、当該プリミティブ関数が、証明結果を生成する第1モード、及び証明結果の検証または証明結果からの情報の取得を行う第2モードの両方で利用される鍵を確実に生成するのに効果的に利用可能である。請求項1に記載されるように、プログラムはセキュリティプログラムの関連部分のみを(セキュリティの観点から)表しているということが理解されるべきである。
【0030】
本発明のより詳細な実現形態は、請求項13に記載される。本実現形態で証明結果を計算するため生成された鍵はまた、入力変数の少なくとも一部に依存する。これは、(アプリケーション)プログラムの入力が、証明結果によりプロテクトされるように、セキュリティプログラムにおいてハードコード処理されることが不要となるという効果を有する。一部の入力が対象外となっているとき、すべての入力が考慮される必要はなく、セキュリティ装置とユーザとの間で秘密にされるべきであり(従って、第三者に通信せず)、あるいは異なるプログラム実行間で異なるものとされることが可能にされるべきである(動作を決定する入力は、もちろん利用されるべきでない)。
【0031】
本発明によるシステムが、請求項14に記載されるように特徴付けされる。
【0032】
本発明によるコンピュータ可読媒体などのコンピュータプログラムが、請求項15に記載されるように特徴付けされる。
【0033】
本発明によるコンピュータ実行可能命令が、請求項16に記載されるように特徴付けされる。
【0034】
本発明による信号が、請求項17に記載されるように特徴付けされる。
【0035】
本発明の上記及び他の特徴がさらに、実施例と概略図を参照して説明される。
【発明を実施するための最良の形態】
【0036】
図面を通じて、同一の参照番号は同様または対応する特徴を示す。図面に示されている特徴の一部は、典型的にはソフトウェアにより実現され、またソフトウェアモジュールまたはオブジェクトなどのソフトウェアエンティティを表す。
【0037】
図1は、PUF104を有するセキュリティ装置103を用いたアプリケーションのための基本モデルを示す。当該モデルは、システム100により実現され、セキュリティ装置103の内部またはその制御下のチップ105の計算機能を利用することを所望するユーザ101を有する。
【0038】
ユーザとチップは、おそらく信頼性の低い公衆通信チャネルにより互いに接続されている。ユーザは人間だけでなく、異なるソフトウェア、ハードウェアまたは他の装置とすることも可能である。
【0039】
セキュリティ装置103は、プロセッサ111とメモリ112を有し、コンピュータプログラムプロダクツ113からのコンピュータにより実行可能な命令を実行するよう構成された処理装置110により実現することが可能である。
【0040】
先行技術文献には、各PUFに一意的なチャレンジ及びレスポンスの取扱いが記載されている。チャレンジが与えられると、PUFは対応するレスポンスを計算することができる。ユーザは、PUFにより当初生成されたCRP(チャレンジ−レスポンスペア)のユーザ自身のプライベート(認証された)リストを所持している。当該リストは、(おそらくPUFを除き)ユーザのみがリストの各チャレンジへのレスポンスを知っているという理由からプライベートである。ユーザのチャレンジはパブリックとすることができる。ユーザはセキュリティ装置により複数のCRPを確立したと仮定される。
【0041】
(限定数の)チャレンジに対するレスポンスのみが、ユーザに知られている。さらに、セキュリティ装置は、特定のチャレンジに対するレスポンスを計算するようにしてもよい。他の者が特定のチャレンジに対するレスポンスを復元するのを防ぐため、CRPの安全な管理方法が必要とされる。先行技術文献は、これを実現するのに制御されたPUFのコンセプトを提案している。PUFは、それが分離不可な方法によりPUFに物理的にリンクされているセキュリティアルゴリズムを介する場合に限りアクセス可能である場合に制御されたもの(制御されたPUFまたはCPUF)であると定義される(すなわち、当該アルゴリズムを回避しようとする任意の試みが、PUFの破壊を招くであろう)。特に、このセキュリティアルゴリズムは、PUFに与えられたチャレンジを制限し、外部に与えられるレスポンスに関する情報を制限することが可能である。制御は、PUFが単なる認証された識別プリケーション以上のものとなることを可能にする基本的アイデアである。PUFと制御されたPUFは、スマートカード識別、認証された実行及びソフトウェアライセンス処理を実現するのに説明及び知られている。
【0042】
中間者攻撃(man−in−the−middle attack)を防ぐため、CRP管理プロトコル中、ユーザは特定のチャレンジに対するレスポンスを求めることが禁止される。これは、CRP管理プロトコルにおける懸念であり、当該プロトコルにおいて、セキュリティ装置はユーザにレスポンスを送信するためである。これは、セキュリティ装置がレスポンスをチャレンジ直接的には与えないように、PUFへのアクセスを制限することにより保証される。CRP管理は、先行技術文献に記載されるように行われる。当該アプリケーションプロトコルでは、レスポンスはメッセージ認証コード(MAC)を生成するためなどさらなる処理のため内部的に利用されるだけであり、ユーザには送信されない。CPUFは、プライベートな方法により(誰もプログラムが実行しているものを閲覧することができないか、あるいは少なくとも操作されているキーマテリアルは隠された状態にされる)、かつ真正な方法により(誰も検出されることなくプログラムが実行しているものを変更することができない)、ある形態のプログラム(さらに、セキュリティプログラム)を実行することが可能である。
【0043】
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)は、ハードコード処理された値(一部のケースでは、Challenge)などを含むプログラムに含まれるあらゆるものを含むことに留意されたい。セキュリティ装置は、h(SProgram)を計算し、以降においてGetResponse(.)とGetSecret(.)が呼び出されると当該値を利用する。h(SProgram)の計算は、セキュリティプログラムの開始前(開始直前)、あるいはプリミティブ関数の最初のインスタンス化前に実行可能である。先行技術文献に示されるように、上記2つのプリミティブ関数は、GetResponse(.)は実質的にCRPの生成のため利用され、GetSecret(.)はCRPから共有された秘密を生成することを所望するアプリケーションにより利用されるセキュアなCRP管理を実現するのに十分である。
【0044】
以降では、以下の記号が用いられる。
・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が一致していないメッセージを出力し、解読は行わない。
【0045】
認証された実行の概念は、先行技術文献に記載されている。当該技術は、いくつかの特定の実現形態により図示されるであろう。検証された実行は、いわゆる電子証明書を用いて提供される。セキュリティ装置上の入力InputによるプログラムXProgramの電子証明書は、セキュリティ装置のユーザが、XProgramの出力結果がセキュリティ装置上のXProgram(Input)により生成されたものであるかかなりの確率で効率的にチェックすることができるように、セキュリティ装置上のXProgram(Input)により効率的に生成される文字列として定義される。セキュリティ装置上でのXProgramの実行を要求するユーザは、セキュリティ装置の所有者によることなく、自らがセキュリティ装置を製造したことを保証することができるセキュリティ装置のメーカーの信用性に頼ることが可能である。
【0046】
図2は、計算がセキュリティ装置上で直接的に実行される認証された実行の簡単な例を示す。ユーザであるAliceは、Bobのコンピュータ201上で計算量の大きなプログラムProgram(Input)を実行することを所望している。Bobのコンピュータは、PUF203を有するセキュリティ装置202を有する。Aliceはすでにセキュリティ装置によりCRP211のリストを確立したと仮定される。(Challenge,Response)をBobのPUFに対するAliceのCRPの1つであるとする。第1の実現形態の変形では、Aliceはセキュリティ装置202に(Challenge,E&M((XProgram,Input),h(h(CPogram),Response)))に等しい入力Input232と共に以下のプログラムCProgram231を(通信221により)送信する。
【0047】
【表1】

第2の実現形態の変形では、Aliceはセキュリティ装置に(E&M((XProgram,Input),h(h(CProgram),Response)))に等しい入力Inputと共に以下のプログラムCProgram2を送信する。この変形は、CProgram2のChallengeの値をハードコード処理するとき、よりロウバストなものとなる。すなわち、Challengeの値はプリミティブ関数において利用される。
【0048】
【表2】

Result=XProgram(Input)とすることにより、ResultはXProgram(Input)の出力の一部となることは理解される。電子証明が必要とされないより多くの出力があるかもしれない。Output(...)は、通信222に示されるようなCPUFからの結果233を送信するのに利用される。セキュリティ装置から送信されるものは何れも、全世界に潜在的には視聴されうる(メーカーがセキュリティ装置の物理的な所持をしているブーストラップ処理期間を除き)。プログラムのセキュアな設計は、Resultに暗号化された形式により配置された結果を生成する。この暗号化は、従来の暗号化により、あるいはSecretを用いることにより実行可能である。後者の場合、SecretはInputに含まれる。
【0049】
AliceのCRPはプライベートであるため、他の何れの者もSecret、すなわち、Secretを有するMACを生成することができない。MACはプログラムの2つの箇所で利用される。第1のMACは、プログラムによりチェックされ、Inputの真正性を保証する。第2のMACは、Aliceによりチェックされ、セキュリティ装置から受け取ったメッセージの真正性を保証する。Aliceとは別に、セキュリティ装置はプログラムを実行することによりChallengeが与えられると、Secretを生成することができる。このことは、ResultとCertificateがセキュリティ装置のCProgramにより生成されたことを意味する。言い換えると、CProgramは、入力としてInputにより認証された実行を行う。これは、Certificateが電子証明書であることを証明するものである。
【0050】
従って、電子証明書はセキュアなリモート計算に利用可能である。Certificateが一致する場合、これはXProgram(Input)がセキュリティ装置上で(CProgram(Inputs)により)実行されたことをAliceに証明する。
【0051】
先行技術文献に記載されるような認証された実行は、XProgramの実行を実行のプルーフとして証明するため、第三者に対しAliceにより利用可能ではない。AliceのCRPを利用して、Aliceは、任意の結果であるResultに対し電子証明書Certificateを偽ることが可能である。この事実から、AliceはChallengeに関するレスポンスを利用することによりSecretを計算することができる。AliceがCRPを計算できる(MACをチェックするため)という事実により、Aliceは当該電子証明書をAliceがBobのセキュリティ装置上でXProgram(Input)を(CProgram(Inputs)において)実行したことを第三者に証明するための実行のプルーフとして利用することができなくなる。
【0052】
本発明の第1実施例では、任意の第三者に対し実行のプルーフとして利用可能な証明結果が利用される。セキュリティ装置上で結果Resultを生成する入力InputによるプログラムXProgramの電子証明書EProofは、入力EProof及びXProgramによるセキュリティ装置と任意の仲介者との間にプロトコルA1が存在するように、セキュリティ装置上でXProgram(Input)により生成される文字列として定義され、EProofがXProgram(Input)によりセキュリティ装置上で生成されたか否か高い確率で正確かつ効率的に決定可能な補助情報であるかもしれず、正しく生成された場合には、セキュリティ装置上のXProgram(Input)によりEProofと共に以前に生成された結果Resultを高い確率により復元する。プロトコルA1は、仲介者プロトコルと呼ばれる。以下の例は、電子証明書がセキュリティ装置のユーザと所有者の両方により利用可能であることを示している。
【0053】
実行の証明をサポートするため、実行の証明を生成するための追加的なプログラムレイヤにより認証された実行の解を拡張することが必要とされる。ユーザであるAliceは、PUFを有する1つのセキュリティ装置を有するBobのコンピュータ上でアプリケーションプログラムAProgramを実行することを所望する。Aliceは既に、Bobのセキュリティ装置によりCRPを確立している。
【0054】
本実施例が利用可能な第1の例として、図3に参照されるように、Aliceが配信者310であり、Bobがセキュリティ装置301を有するSTB300の所有者であるSTB(セットトップボックス)アプリケーションを考える。プログラムA320では、Bobはあるサービスを購入する。Aliceは、取引詳細332、電子証明書333(電子証明書は、取引詳細と電子証明書の両方の真正性を検証する)及び電子証明書334を受信する。Aliceはステップ340において、電子証明書が一致するかチェックする。一致する場合、電子証明書はBobのSTBにより生成されたものであることを知ることとなり、プログラムBにおいて当該取引を続ける。電子証明書がBobがサービスを購入したことの確認として利用することができる。なぜならば、仲介者が取引詳細を復元することができるからである。プログラムB321では、Bobは自らが要求したサービスに属するコンテンツ335を受信する。当該コンテンツは、CRPを用いることにより暗号化されてもよい。Aliceは、プログラムBにおいてBobのアクションの第2の電子証明書336を受信する。第1の例では、BobはプログラムBのコンテンツを送信するため、Aliceの約束の証明書を受信しないかのように見える。しかしながら、AliceだけでなくBobもまた、第1の電子証明書を利用することが可能である。任意の第三者は、BobのSTBがプログラムAにより符号化されたプロトコルの実行に成功したことをチェックすることが可能であり、それ自体プログラムBによりコンテンツをBobに送信するAliceの約束である。例えば、Bobは電子証明書を利用して、割引やアップグレードの資格を与えるあるサービスを購入したことを第三者(特に、Alice)に確信させることができる。
【0055】
第2の例として、Aliceが入力の一部としてタイムスタンプによりBobのセキュリティ装置上でプログラムを実行することを所望していると仮定する。当該実行の結果は、タイムスタンプが正確な実行時間を表しているというBobの同意によるタイムスタンプのコピーを含む。例えば、当該プログラムは、Bobが同意しているか問い合わせ、Bobが同意していない場合には中断されるよう設計される。正しい電子証明書が与えられると、仲介者はこの結果を抽出する。すなわち、仲介者はタイムスタンプをチェックし、Bob及び/またはAliceの主張が依然として有効であるか検証することができる。
【0056】
第3の例として、異なるモードを有するプログラムProgram’を仮定する。そのモードに応じて、Program’はEProofがP上の入力InputによるプログラムProgramの電子証明書であるプロセッサP上において(Result,EProof)=Program(Input)を計算するか、あるいは、Program’はEProofが有効な電子証明書であるかチェックする仲介者の役割を果たし、有効である場合には、Resultを再構成する。仲介者の役割において、EProofはProgram’の次のモードへのチケットとして利用されてもよい。当該技術は、限定受信を実現する。
【0057】
図4は、異なるプログラムレイヤを示す。EProgram403と呼ばれる実行の証明書を生成または検証する本発明によるプログラムは、ユーザと第三者の両方がセキュリティ装置において実行が行われたことを確信できるように、PUF401を有するセキュリティ装置400における認証された実行プログラムCProgram1(402)(またはCProgram2(402))のXProgram部分として実行される。EProgramは、実行モード404と仲介モード405の両方を有する。
【0058】
実行モードでは、EProgramはAliceが興味を有する結果だけでなく、電子証明書も計算する(AProgram406において)。Aliceは、プログラムがBobのセキュリティ装置上で正確に実行されたことを確信するため、認証された実行を利用する(CProgramのXProgram部分としてEProgramを実行することにより)。仲介者は、認証された実行を用いて、仲介モードによりEProgramを実行することにより電子証明書をチェックすることができる。主要なアイデアは、GetResponse(.)プリミティブが、両方のモードを含む完全なプログラムEProgramのハッシュに依存するということである。この結果、実行モードによりプログラムEProgramにより生成された電子証明書は(GetResponse(.)プリミティブを介し取得される鍵により)、仲介モードによりプログラムEProgramにより解読可能である。
【0059】
セキュリティは、第1にGetResponse(.)プリミティブの解読、ハッシュの解読及びGetResponse(.)が規定されるPUFの解読を行う困難さにより、第2に暗号化及びMAC E&M(.)プリミティブを解読する困難さにより決定される。
【0060】
以下において、EProgramのいくつかの変形が与えられる。一部のプログラムは、入力の一部をハードコード処理することから、柔軟性は低下するが、ロウバスト性は向上する。証明結果に与えられる出力量もまた異なる。これらのアルゴリズムの任意の変形が実現可能である。
【0061】
第1の変形では、AliceはAProgram(Input)を実行し、実行の証明書を受け取ることを所望し、Mode432が「実行モード」、PC433が乱数文字列、EProgram1が以下に規定されるInputs=((AProgram,Input,PC),Mode)(AProgram435、Input434)であるEProgram1(Inputs)(431)を実行する。PCは、秘密鍵KE(実行モードにおける)またはKA(仲介モードにおける)を生成するため、乱数関数のチャレンジを計算するため、「pre−challenge」としてGetResponse(.)により利用される。Aliceは、認証された実行技術を利用して、上述のように、CProgram430を利用してBobのセキュリティ装置上でEProgram1(Inputs)を実行する。Aliceは、セキュリティ装置から取得するすべての出力の真正性を検証するため、電子証明書をチェックする。生成された電子証明書は、Program(Input)により生成された結果438だけでなく生成された電子証明書436の証明書である。
【0062】
【表3】

第1実施例の第2の変形では、Aliceは、乱数文字列PCをロウバスト性を向上させるためEProgramにハードコード処理し、当該入力を有するプログラムが性格に利用されたことを以降において証明できるように、アプリケーションプログラムAProgramのハッシュ値(部分)と、アプリケーションプログラム入力Inputのハッシュ値をEProofに組み込む。仲介モードでは、EProofは検証されるだけであり、AProgram、Input及びResultをカバーして、これらの何れも第三者ユーザには出力されない。
【0063】
【表4】

第1実施例の第3の変形では、乱数文字列PCは省略され、これにより、計算が簡単化される。鍵KEが、KE=GetResponse()またはよりシンプルな(新しい)プリミティブ関数KE=f(h(EProgram3))によりEProgram3において計算される。
【0064】
第1実施例の第4の変形では、PC及び任意的な他の入力パラメータが、ハードコード処理がなされないが(第2の変形のように)、プリミティブ関数における乱数関数への入力として依然として利用される。これは、例えば、ProgramとInputがEProgram3への入力として取得され、GetResponse(.)への入力として利用されるEProgram3に示される。一部の入力が関心の対象外であるとき、必ずしもすべての入力が考慮される必要はなく、セキュリティ装置と当該セキュリティ装置のユーザとの間で秘密に保たれるべきであり(従って、第三者に通信されるべきでない)、あるいは異なるプログラム実行間で異なるものとされることが許容されるべきである(動作モードを決定する入力は、もちろん利用されるべきでない)。
【0065】
【表5】

仲介モードでは、仲介者は3つのステップから構成されるBobのセキュリティ装置によりプロトコルを実行する。ステップ1では、仲介者はステップ450における実行の証明書EProofをAliceまたはBobから受信する。仲介者は、Mode442が仲介モードに等しいInputs=(EProof,Mode)(EProof:444)を構成する。仲介者はまた、おそらくAliceとBobから同じEProgramとCProgramを取得する(おそらく以前に実行されたように、本例では、ステップ451と452において仲介者に通信される)。ここで、仲介者はPCを必要としないということに留意されたい。
【0066】
ステップ2において、仲介者はCProgram440による認証された実行の技術を利用して、Bobのセキュリティ装置上でEProgram(Inputs)(EProgram:441)を実行する。仲介者は、電子証明書447をチェックし、セキュリティ装置から取得したResultsの真正性を検証する。電子証明書がResultsと一致する場合、仲介者はBobのセキュリティ装置が他者の介入なくEProgram(Inputs)を実行し、それの入出力が改ざんされていないことを知る。特に、何れの者も入力EProof及びModeを変更していない。言い換えると、Bobのセキュリティ装置は、EProofを用いて仲介モードによりEProgram(Inputs)を実行した。仲介モードでは、Result445はOutputに完全または部分的に供給可能か、あるいは全く供給することができない。それはまた、Resultから導出される情報により置換可能である。これは、アプリケーション及び仲介者に依存するものであってもよい。このとき、その決定はプログラムにより実現される。例えば、プライバシーの理由から、EProgramは結果の概要のみを仲介者に送信することも可能である。
【0067】
ステップ3において、仲介者はCheckBit446が真であるか、すなわち、EMResultのMACが一致するか検証する。一致する場合、仲介者はBobのセキュリティ装置が実行モードによりEProofとResultを計算したと判断する。一致しない場合、仲介者はBobのセキュリティ装置は実行モードによりEProofを計算しなかったと判断する。仲介モードでは、EProgramは、MACが一致していないということを出力するか(D&M(.)及びCheckBitの定義を参照せよ)、あるいは、MACが解読された結果と共に一致しているということを出力する。偽の電子証明書を生成するため、(偽の)結果FResultに対するFEProof=(FPC,FEMResult)は、いわゆる困難な問題である。
【0068】
第2実施例では、電子証明書と類似した証明結果が、セキュアでない(おそらくオフチップ)物理的メモリを用いて、あるいは中断処理、ソフトウェアの著作権侵害による環境、暗号化されていないコンテンツが不正に配布される可能性がある環境などの困難な状況の下、PUFを有する特定のセキュリティ装置上の特定プログラムによるセキュアなメモリ制御を実現するのに利用可能である。
【0069】
図5は、セキュアなメモリ実現形態を示す。本実施例では、第1モード501または実行モードが、メモリ503に結果を格納するのにセキュリティプログラム500により使用され、第2モード502または仲介モードが、メモリをロードし、それの真正性をチェックするのにプログラムにより使用される。メモリはデータDataを位置Addressに格納すると仮定される。これは、単一のアドレスまたはアドレス範囲とすることが可能である。Dataは(PC,E&M(Data,K))として暗号化形式により格納される。ここで、KはGetResponse(PC)に等しい。入力(Address,(PC,Data))によるStoreと呼ばれる手順は、データを格納し、Result=Datam、EMResult=EMData及びEProof=(PC,EMData)であるEProgramにおける実行モードに対応する。入力AddressによるLoadと呼ばれる手順は、データをロードし、Result=Data、EMResult=EMData及びEProof=(PC,EMData)であるEProgramの仲介モードに対応する。
【0070】
【表6】

それのコードの一部として手順Store(.)とLoad(.)を有するプログラムMProgram(Input)がメモリアクセスに対する手順を利用する場合、プログラム自体は両方のモードで実行される。Store(.)とLoad(.)のGetResponse(.)は何れも同一のMProgramに依存する。MProgramがデータを格納する場合、それは第1モードで動作する。すなわち、データはメモリに暗号化された電子証明書形式により書き込まれる。それがデータをロードする場合、それは第2モードにより動作する。すなわち、出力されたCheckBitが、Bobのセキュリティ装置上で実行されるMProgramから出力されるという意味で、データの真正性をチェックするのに利用される。この意味で、MProgramは完全にそれが処理するデータにより制御される。暗号化されていないデータを公衆に出力すべきか否かはMProgram次第である。このプログラムは効率的にデータの所有者になる。
【0071】
ここで、アドバーサリ(adversary)が旧式のバージョンにより現在メモリを置き換え、未検出に進行するということに留意されたい。最新のメモリの真正性をチェックするため、プロセッサはタイマーカウンターを格納するためプライベートメモリを必要とする。このタイマーカウンターは、PUFから導出される鍵を有するMACと共に格納することが可能である。さらに、このアイデアは、David Lie、Chandramohan Thekkath、Mark Mitchell、Patrick Lincoln、Dan Boneh、John Mitchell及びMark Horowitzによる「Architectural Support for Copy and Tamper Resistant Software」(Proceedings of the 9th International Conference on Architectural Support for Programming Languages and Operating Systems(ASPLOS−IX),November,2002,p.169−177)、及びBlaise Gassend、G.Edward Suh、Dwaine Clarke、Marten van Dijk及びSrinivas Devadasによる「Caches and Merkle Trees for Efficient Memory Authentication」(Proceedings of the 9th International Symposium on High−Performance Computer Architecture,February,2003)に記載されるようなオフチップリソースメモリ認証スキームをセキュアに利用したより高度なアーキテクチャを利用して向上させることが可能である。
【0072】
図6は、本発明の第3及び第4実施例のアーキテクチャを示す。
【0073】
本発明の第3実施例では、中断の場合にセキュリティ装置600上で実行されるプログラム601が、それのプログラム状態605をセキュアに格納することが可能となるように、証明結果がプログラム実行状態602を格納するのに利用される。中断が起こると、プログラム状態は暗号化される(第1モード603のように)。セキュリティ装置は、それの状態を外部に明らかにすることなく、以降においてそれの実行を続けるようにしてもよい。継続により、プログラム状態は検証、解読(第2モード604のように)及び復元される。このため、プログラムはフル制御状態となる。これは、中断に対しロウバストなセキュアな実行を可能にする。アプリケーションは、セキュア中断処理、ソフトウェア著作権侵害に対する耐性、及び暗号化されていないコンテンツの不正な配布に対する耐性である。
【0074】
第4実施例では、以降の利用のため、プログラムは暗号化されたコンテンツ602または暗号化されたソフトウェア602を格納するようにしてもよい。当該コンテンツのみが再生し(または再生を継続し)、当該ソフトウェアのみが同一の特定のセキュリティ装置600上で同一状態605により実行される(または実行を継続される)。これは、暗号化されていないコンテンツの不正な配布またはソフトウェア著作権侵害に対する耐性を可能にする。
【0075】
ここで、セキュリティ装置の所有者(Bob)とセキュリティ装置のユーザ(Alice)は同一の者であってもよいということに留意されたい。例えば、BobはProgram(Input)によりResultを計算したことを電子証明書により他者に対し証明する。最終的には、本発明の効果は、Aliceと仲介者の何れもがPUFを搭載したセキュリティ装置を必要としないということである。
【0076】
本発明は、デジタル、物理的またはオプティカルなすべてのPUFに適用可能であるという意味において、一般に適用可能である。当該構成の詳細は、物理的PUFに対し与えられるが、デジタルまたはオプティカルPUFに転送可能である。
【0077】
他の実施例が可能である。上記説明では、「有する」という用語は他の要素またはステップを排除するものでなく、「ある」という用語は複数を排除するものでなく、単一のプロセッサまたは他のユニットがまた請求項に記載される複数の手段の機能を実現するようにしてもよい。
【図面の簡単な説明】
【0078】
【図1】図1は、PUFを用いたアプリケーションのための基本モデルを示す。
【図2】図2は、認証された実行の使用例を示す。
【図3】図3は、実行証明書の使用例を示す。
【図4】図4は、認証された実行下で電子証明書を生成する異なるプログラムレイヤの概観を示す。
【図5】図5は、セキュアなメモリ実現形態を示す。
【図6】図6は、中断された処理を示す。

【特許請求の範囲】
【請求項1】
プログラム命令の実行の真正性を証明する方法であって、
乱数関数を有するセキュリティ装置上のセキュリティプログラムの制御の下、プログラム命令を実行するステップと、
前記乱数関数を利用して、制御されたインタフェースを介し前記乱数関数にアクセスすることにより、第1モードで動作する前記セキュリティプログラムの実行中に証明結果を計算するステップと、
前記乱数関数を利用して、前記制御されたインタフェースを介し前記乱数関数にアクセスすることにより、第2モードで動作する前記同一のセキュリティプログラムの実行中に前記証明結果を検証するステップと、
を有し、
前記乱数関数は、前記制御されたインタフェースを介し前記セキュリティプログラムからのみアクセス可能であり、前記制御されたインタフェースは少なくとも1つのプリミティブ関数を有し、前記プリミティブ関数は、該プリミティブ関数を呼び出す前記セキュリティプログラムの少なくとも一部の表現の少なくとも一部に依存する出力を返す前記乱数関数にアクセスすることを特徴とする方法。
【請求項2】
請求項1記載の方法であって、
第三者が前記証明結果を検証可能な実行証明として受け取ることを特徴とする方法。
【請求項3】
請求項1記載の方法であって、
前記セキュリティプログラムは、前記第1モードで動作する場合、
アプリケーションプログラム出力を生成するアプリケーションプログラム入力によりアプリケーションプログラムを実行するステップと、
前記制御されたインタフェースを介し前記乱数関数を用いて暗号化により結果を取得し、前記アプリケーションプログラム入力の少なくとも一部、前記アプリケーションプログラム出力の少なくとも一部、及び前記アプリケーションプログラムの少なくとも一部の少なくとも1つに対しメッセージ認証コードを生成するステップと、
前記暗号化及びメッセージ認証された結果を有する証明結果を生成するステップと、
を実行し、
前記セキュリティプログラムは、前記第2モードで動作する場合、
検証対象となる証明結果を受け取るステップと、
前記証明結果の暗号化及びメッセージ認証された結果のメッセージ真正性を少なくとも部分的に検証するステップと、
を実行することを特徴とする方法。
【請求項4】
請求項3記載の方法であって、
前記セキュリティプログラムはさらに、前記第2モードで動作する場合、前記証明結果の文字列による暗号化及びメッセージ認証された結果の少なくとも部分的に検証されたメッセージ真正性の少なくとも一部を前記セキュリティ装置のユーザに送信するステップを実行することを特徴とする方法。
【請求項5】
請求項1記載の方法であって、
前記証明結果は、以降の利用を想定した格納データを有し、該格納データが前記セキュリティ装置上に実行されているセキュリティプログラムからのものであることを検証することを可能にすることを特徴とする方法。
【請求項6】
請求項5記載の方法であって、
前記証明結果に含まれる格納データは、前記セキュリティプログラムの表現に依存する出力を有するプリミティブ関数を利用して計算される鍵により暗号化されることを特徴とする方法。
【請求項7】
請求項1記載の方法であって、
前記証明結果は、前記セキュリティプログラムの以降の継続を想定する状態情報を有することを特徴とする方法。
【請求項8】
請求項7記載の方法であって、
前記証明結果に含まれる状態情報は、前記セキュリティプログラムの表現に依存する出力を有するプリミティブ関数を利用して計算される鍵により暗号化されることを特徴とする方法。
【請求項9】
請求項1記載の方法であって、
前記動作モードは、前記セキュリティプログラムに入力を供給することにより、前記セキュリティ装置のユーザにより選択されることを特徴とする方法。
【請求項10】
請求項1記載の方法であって、
前記セキュリティプログラムは、該セキュリティプログラムが前記セキュリティ装置により実行されることを前記セキュリティ装置のユーザに証明する認証された実行を提供する第2セキュリティプログラムの一部として実行されることを特徴とする方法。
【請求項11】
請求項1記載の方法であって、
前記乱数関数は、複雑な物理的システムを有することを特徴とする方法。
【請求項12】
請求項1記載の方法であって、
前記乱数関数は、プリミティブ関数
GetSecret(Challenge)=h(h(Program),f(Challenge))
を介し(ただし、f(.)は前記乱数関数であり、h(.)は実質的に公衆に利用可能な乱数ハッシュ関数である)アクセス可能であることを特徴とする方法。
【請求項13】
請求項1記載の方法であって、
前記鍵の計算は、前記セキュリティプログラムの入力の一部を前記乱数関数への入力として利用することを特徴とする方法。
【請求項14】
乱数関数と、
プロセッサ及びメモリを有する処理装置と、
を有するシステムであって、
当該システムに請求項1記載の方法を実現させるよう構成されるコンピュータ可読命令を実行することを特徴とするシステム。
【請求項15】
請求項1記載の方法をコンピュータに実現させるコンピュータ可読命令を有することを特徴とするコンピュータプログラム。
【請求項16】
請求項1記載の方法をコンピュータに実現させることを特徴とするコンピュータ実行可能命令。
【請求項17】
請求項1記載の方法により生成される証明結果を伝搬することを特徴とする信号。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate


【公表番号】特表2007−511810(P2007−511810A)
【公表日】平成19年5月10日(2007.5.10)
【国際特許分類】
【出願番号】特願2006−530718(P2006−530718)
【出願日】平成16年5月6日(2004.5.6)
【国際出願番号】PCT/IB2004/002342
【国際公開番号】WO2004/102302
【国際公開日】平成16年11月25日(2004.11.25)
【出願人】(590000248)コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ (12,071)
【Fターム(参考)】