JP2004005595A - 公開鍵暗号化に基づくデータの保存および検索 - Google Patents
公開鍵暗号化に基づくデータの保存および検索 Download PDFInfo
- Publication number
- JP2004005595A JP2004005595A JP2003113502A JP2003113502A JP2004005595A JP 2004005595 A JP2004005595 A JP 2004005595A JP 2003113502 A JP2003113502 A JP 2003113502A JP 2003113502 A JP2003113502 A JP 2003113502A JP 2004005595 A JP2004005595 A JP 2004005595A
- Authority
- JP
- Japan
- Prior art keywords
- key
- data
- computer
- program
- bound
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
Abstract
【解決手段】データが、呼出し側プログラムから受け取られる。データを含む暗号テキストが、公開鍵暗号化を使用して、1つまたは複数のターゲットプログラムだけが暗号テキストからデータを得られるようにすることができる形で生成される。
【選択図】 図3
Description
【発明の属する技術分野】
本発明は、データの保存および検索に関し、具体的には、公開鍵暗号化に基づくデータの保存および検索に関する。
【0002】
【従来の技術】
コンピュータ上でデータを保護し、その結果、適当な当事者だけにデータが開示されるようにすることが、ユーザにとって重要な関心事になってきた。ユーザが保護を望むデータのタイプは、仕事関連のまたは個人的な機密文書、銀行口座番号、クレジットカード番号、社会保険番号など、さまざまである。さらに、不正な使用またはアクセスからユーザのコンピュータのデータを保護することが、ある第三者にとって重要である。たとえば、クレジットカード発行会社は、クレジットカード番号が保護され、その結果、コンピュータをハッキングする悪意のあるプログラムまたは当事者にその番号が開示されなくなることを望み、音楽会社は、コピーできないように音楽を保護することを望み、映画スタジオは、コピーできないように映画を保護することを望む。
【0003】
【非特許文献1】
M. Bellare, R. Canetti, and H. Krawczyk, ”Keying hash functions for message authentication,” in Advances in Cryptology Crypto’96, number 1109 in Lecture Notes in CS, 1996.
【0004】
【発明が解決しようとする課題】
コンピュータのデータを保護する解決策の1つが、汎用のコンピューティングデバイスを除去し、特殊目的の耐タンパボックスを、保護された内容の配布、保存、および表示に使用することである。しかし、この解決策は、ユーザが自分のコンピュータを拡張できなくなる(たとえば、ユーザが、そのような耐タンパボックスに追加のソフトウェアコンポーネントおよび/またはハードウェア構成要素をインストールできない)ので、望ましくない可能性がある。したがって、汎用コンピューティングデバイスでデータを保護できるようにする方法を提供することが有益である。
【0005】
【課題を解決するための手段】
本明細書では、公開鍵暗号化に基づくデータの保存および検索を開示する。
【0006】
一態様によれば、データが、呼出し側プログラムから受け取られる。データを含む暗号テキストが、公開鍵暗号化を使用して、1つまたは複数のターゲットプログラムだけが暗号テキストからデータを得られるようにすることができる形で生成される。
【0007】
もう1つの態様によれば、ビットストリングが、呼出し側プログラムから受け取られる。呼出し側プログラムの識別子を検査して、呼出し側プログラムが、ビットストリングの暗号テキスト内で暗号化されたデータにアクセスすることを許可されるかどうかを判定する。呼出し側プログラムがデータへのアクセスを許可される場合に限って、データは、公開鍵暗号解読(暗号化解除と称することがある)を使用して暗号解読され、呼出し側プログラムに返される。
【0008】
同一の符号は、本明細書全体を通じて同一の構成要素および/または特徴を指すのに使用される。
【0009】
【発明の実施の形態】
図1に、例示的なアクセス制御モデル100を示す。プリンシパル102が、保護されたリソースへのアクセスの要求を行うことができる。この要求は、ガード104によって受け取られ、ガード104は、リソース106へのアクセスを制御するコンポーネントである。ガード104は、要求を検査し、リソースのアクセスポリシならびに、要求を発行したプリンシパル102の識別などの他の情報に基づいて、要求を許可するかどうかを決定する。説明を簡単にするために、単一のプリンシパル102、ガード104、およびリソース106が図1に示されている。しかし、アクセス制御モデル100に、複数のプリンシパル102、複数のガード104、および/または複数のリソース106を含めることができることに留意されたい。
【0010】
プリンシパル102は、保護されたデータへのアクセスを要求するコンポーネントまたはモジュールを指す。この要求は、保護されたデータを検索する要求(たとえば、暗号鍵の検索の要求)、または保護されたデータを使用して動作を実行する要求(たとえば、保護されたデータを暗号鍵とすることができ、要求を、暗号鍵を使用する特定のデータの暗号化または暗号解読の要求とすることができる)とすることができる。プリンシパル102は、ハードウェア、ソフトウェア、ファームウェア、またはハードウェア、ソフトウェア、および/またはファームウェアの組合せで、コンポーネントまたはモジュールとして実施することができる。
【0011】
ガード104は、保護されたデータへのアクセスを制御するコンポーネントまたはモジュールを指す。ガード104は、保護されたデータに関連するアクセスポリシ、ならびに他の情報(保護された内容へのアクセスを要求するプリンシパルの識別など)を使用して、プリンシパルが保護されたデータにアクセスすることが許可されるかどうかを判定する。ガード104が、要求元のプリンシパルが保護されたデータへのアクセスを許可されると判定する場合には、ガード104は、適当な形で要求に応答する(たとえば、要求が、保護されたデータに関する要求である場合には、保護されたデータをプリンシパルに返し、要求が、保護されたデータを使用して特定のデータを暗号化する要求である場合には、ガード104は、保護されたデータを使用して特定のデータを暗号化し、暗号テキスト(暗号化されたデータ)をプリンシパルに返す)。ガード104が、要求の性質に基づいてプリンシパルを制限することができることに留意されたい。たとえば、ガード104は、特定のプリンシパルが保護されたデータを使用して特定のデータに署名させることを許可することができるが、保護されたデータをその特定のプリンシパルに返すことを許可しないことができる。
【0012】
ガード104は、開示ガードおよび/またはサービスガードとして特徴を表すこともできる。サービスガードは、プリンシパルからの要求の際に、保護されたデータ(たとえば暗号鍵)を開示せずに、保護されたデータを用いるある動作(たとえば、暗号化、暗号解読、ディジタル署名など)を実行する。その一方で、開示ガードは、許可された要求元に、保護されたデータを明らかにする。特定のガード104を、開示ガードおよびサービスガードの両方とすることができることに留意されたい。
【0013】
リソース106は、アクセスが制限されるすべてのタイプのデータとすることができる。リソース106の例には、暗号鍵、銀行口座番号、クレジットカード番号、社会保険番号などの個人情報、パスワードなどを含めることができる。リソース106は、コンピューティングデバイス内の事実上何にでもすることができる。たとえば、リソース106を、物理メモリ(たとえばRAMまたはROM)、光ディスク、磁気ディスク、光ディスクドライブ、磁気ディスクドライブ、ビデオカード、サウンドカード、スマートカードなどにすることもできる。もう1つの例として、リソース106を、プロセス、ファイル、スレッド、セマフォなどのオペレーティングシステム抽象化とすることもできる。
【0014】
本明細書の説明では、アクセス制御モデル100を、主に、単一のコンピューティングデバイスで実施される物に関して説明する。しかし、このモデルの異なる部分を、異なるコンピューティングデバイスで実施できることを諒解されたい。たとえば、プリンシパル102をあるコンピューティングデバイスに置き、ガード104およびリソース106を別のコンピューティングデバイスに置くことができる。
【0015】
あるコンピューティングデバイスのプリンシパルおよびガードを、任意の数nの階層層lnに分類することができる。図2に、4つの異なる階層層を使用する例示的なアクセス制御環境を示す。一実施形態では、層l1が、ハードウェア層またはセキュリティカーネル層を指し、層l2が、基本入出力システム(BIOS)層を指し、層3が、オペレーティングシステム(OS)層を指し、層4が、アプリケーション層を指す。
【0016】
図2の例の環境では、最下位層(層l1)が、ルートリソースを保護する。中間層(層l2およびl3)のプログラムは、次に下位の層にアクセスを要求するプリンシパルとして働くと同時に、次に上位の層のプリンシパルに向かってガードとして働く。したがって、中間層によって、上位層のプリンシパルに関する機能性を追加することができる。
【0017】
たとえば、プログラム120が、ガード126によって保護されるルートリソース128の検索を望むと仮定する。プログラム120は、モジュール122にルートリソース128へのアクセスを要求するプリンシパルとして働き、モジュール122は、そのリソースのガードとして働く。モジュール122が、リソース128のコピーを有する(たとえば、プログラム120または層l4の他のプログラムによるリソースに関する前の要求に応答して、またはモジュール122が初期化され、コンピューティングデバイスにロードされる場合に、ガード126から得た)場合に、モジュール122は、プログラム120がリソースを検索することを許可されるかどうかを検査する。その後、モジュール122は、プログラム120がリソースを検索することを許可される場合に、プログラム120にリソースを返す。
【0018】
しかし、モジュール122が、リソース128のコピーを有しない場合には、モジュール122は、モジュール124にルートリソースへのアクセスを要求するプリンシパルとして働き、モジュール124は、このリソースのガードとして働く。モジュール124が、リソース128のコピーを有する(たとえば、プログラム122または層l3の他のモジュールによるリソースに関する前の要求に応答して、またはモジュール124が初期化され、コンピューティングデバイスにロードされる場合に、ガード126から得た)場合に、モジュール124は、プログラム122がリソースを検索することを許可されるかどうかを検査する。その後、モジュール124は、プログラム122がリソースを検索することを許可される場合に、プログラム122にリソースを返す。その後、モジュール122は、プログラム120がリソースを検索することを許可される場合に、プログラム120にリソースを返す。
【0019】
しかし、モジュール124が、リソース128のコピーを有しない場合には、モジュール124は、ガード126にルートリソースへのアクセスを要求するプリンシパルとして働く。ガード126は、モジュール124がリソースの検索を許可されるかどうかを検査し、モジュール124がリソースの検索を許可される場合に、モジュール124にリソースを返す。モジュール124は、モジュール122がリソースの検索を許可される場合にモジュール122にリソースを返し、モジュール122は、プログラム120がリソースの検索を許可される場合にプログラム120にリソースを返す。
【0020】
本明細書の説明では、図1のアクセス制御モデル100を使用してソフトウェアの許可される動作を可能にすることに複数の場所で言及する。通常、ソフトウェアの許可された動作で保護されるリソースは、暗号鍵である。しかし、ソフトウェアの許可される動作が、アクセス制御モデル100の使用の1つの例にすぎないことを諒解されたい。
【0021】
アクセス制御モデル100の使用のもう1つの例が、コンピュータに対するユーザの認証である。ほとんどの近代のコンピュータが、アクセス制御システムを有する。ユーザは、コンピュータにログオンし、その結果、コンピュータが、そのユーザが誰であるかを知るようになる。ログオンの後に、ユーザは、通常はシステムリソースへのアクセスを必要とするプログラムを実行する(たとえば、ファイルの読取、画面上のウィンドウへの書込など)。通常、コンピュータのアクセス制御システムが、相談される(たとえば、「ユーザxがリソースzに対する動作yを実行できるか」)。回答が「否」の場合には、プログラムはリソースにアクセスできない。
【0022】
アクセス制御モデル100の使用のもう1つの例が、リモートサービスに対するユーザの認証である。ウェブサイト(たとえばオンラインブローカまたはオンライン銀行)などのリモートサービスは、アクセス制御システムを有するとみなすことができる。リソースは、人々の銀行口座、預金、および株式である。ユーザがウェブサイトにログオンした後に、アクセス制御システムは、そのユーザが、リソース「銀行口座データ」に対する「読取」アクセス(最新の銀行明細書を検索するため)またはリソース「銀行口座12345の1000ドル」への「振替」アクセスなど、ユーザによって要求されたアクセスを実行することを許可されるかどうかを判定する。
【0023】
アクセス制御モデル100の使用のもう1つの例が、特定の建物または区域への物理的アクセスの制限である。たとえば、ユーザが朝に職場に到着した場合に、そのユーザは、自分のバッジを提示し、リソース「フロントドア」に対する「開く」動作を要求する。ある電子システム(ガード)が、バッジに保存された情報に基づいて、そのユーザが建物に入ることを許可されるかどうかを判定し、それに応じてドアの鍵をはずす。
【0024】
コンピューティングデバイスは、プログラムが少なくとも1つの暗号リソースへの保護されたアクセス(開示ガードまたはサービスガードからの)を得られるようにすることが可能である場合に、プログラム(ソフトウェア)の認証された動作を可能にする。ある実施形態で、下で説明する認証および分離を可能にするコンピューティングデバイスが、認証された動作を可能にする。
【0025】
プログラムCを、別のプログラムDから分離されると言うことができるのは、2つの点すなわち、(1)プログラムCによってアクセスできるがプログラムDによってアクセスできないメモリがあり、(2)プログラムDが、プログラムCの実行を開始できない(おそらくはプログラムCによって決定されるエントリポイントを除いて)が満たされる場合である。プログラムは、その推移規則(実行可能コード)およびその初期状態(エントリポイントまたは命令ポインタIPの初期値)によって与えられる。第1の点によって、プログラムDによる敵対する挙動が存在する場合であっても、データをプログラムDによってアクセスできないメモリに保存することができるので、プログラムCのプログラムコードおよび状態情報の保全性が保証される。この点によって、プログラムCが、プログラムDによる観察から機密データ(たとえば暗号鍵)を保護できるようにもなる。第2の点によって、Dが、敵対する形でエントリポイントを選択することによってCの挙動を覆すことができないことが保証される。
【0026】
さらに、プログラムCが、プログラムDの推移規則(プログラムコード)および初期状態の両方を識別できる場合に、プログラムCが、プログラムDを認証できると言うことができる。コンピューティングデバイスは、iがプログラムCの層であるものとして、各層j<iについて、単一のプログラムEjを除いて、すべての他のプログラムDからの任意のプログラムCに関する分離を可能にする。これによって、プログラムCがそれを介してリソースへのアクセスを要求するガードのシーケンス、E1、E2、...、Ei−1を除くすべてのプログラムによる観察および干渉からプログラムが保護される。さらに、任意の層iについて、コンピューティングデバイスは、層iで実行中のプログラムが、層i+1内の少なくともいくつかのプログラムを認証できるようにする。この要件によって、プログラムが、次の層のプリンシパルからの要求に関するガードとして働けるようになる。この2つの観察によって、任意の層のプログラムが、前のプログラムにリソースへのアクセスを要求し、分離を介して保全性およびリソースを保護し、次の層のプリンシパルからの要求を認証をすることによって、リソースに関するガードとして働くことができるという誘導的な議論が与えられる。
【0027】
分離は、物理メモリ保護を使用することによって実施することができる。この手法を、「空間における分離」または「空間分離」と称する。たとえば、多くの近代のマイクロプロセッサにみられるリングメモリ保護および仮想メモリ保護は、空間における分離を実施するのに十分である。特権モードで動作するオペレーティングシステムカーネル(層i)は、アプリケーション(層i+1)のページテーブルをセットアップすることができ、すべてのアプリケーションが、物理メモリのうちで、オペレーティングシステムがそのアプリケーションの仮想アドレス空間にマッピングすることを選択した部分だけにアクセスできるようにする。さらに、カーネルは、アプリケーションがメモリマッピングを変更できないようにするためにアプリケーションの特権を制限し、アプリケーションが明確に定義されたエントリポイント(システム呼出し)でのみカーネルコードの実行を開始できることを保証する。
【0028】
2つの層の間の分離を実施するもう1つの手法が、その実行を時間的に分離することである。この手法を、「時間における分離」または「時間分離」と称する。第1層iのプログラムが、完了まで実行され、あるリソースを使用不能にし、その後、終了する。その後、制御が、次の層i+1に移される。
【0029】
認証は、後続の層(j=i+1)で行われる。プログラムCが、jの構成のプログラム(推移規則)および初期状態を認証する。プログラムは、プログラムCに層jのプログラムを検査させることによって認証することができる。すなわち、通常、プログラムCは、層jのプログラムが含まれるメモリを読み取り、このメモリ範囲に対する暗号ダイジェストを計算する。この点での目標が、コードに関して他のプリンシパルによって行われるステートメントの評価ではなく、コードの識別の確認だけであることに留意されたい。したがって、証明書は、この点では不要である。
【0030】
プログラムCの第2の仕事は、プログラムDの初期状態を識別することである。一般に、任意の実行段階でプログラムの初期状態を判定するという問題は、非常に困難である。したがって、プログラムCは、プログラムDの初期状態を制御する。現実的には、これは、プログラムCが、初期状態σでプログラムDの実行を開始する場合に、プログラムCが、プログラムDの初期状態σだけを確認できることを意味する。
【0031】
要約すると、プログラムDを認証するために、プログラムCは、関連するとみなされるメモリ内容(プログラムおよびおそらくはデータ)を検査し、暗号ダイジェストを計算する。その後、プログラムCが、プログラムDの明確に定義されたエントリポイントに実行を移す。
【0032】
リソースが暗号鍵である場合に、認証される動作によって、各オペレーティングシステムおよびアプリケーションプログラムが、1つまたは複数の秘密への排他的アクセスを有することが可能になる。上で述べた分離によって、敵対するコードによる攻撃から各秘密が保護される。上で述べたプログラムの認証によって、各秘密がそれを所有するプログラムだけに保持されるように、プログラムを識別できるようになる。
【0033】
一般に、プログラム(図1のプリンシパル102)からの要求に対して、ガード104は、プログラムの識別を確立する(すなわち、ガード104がプログラムを認証する)。プログラムが、要求された秘密(リソース106)の所有者でない場合には、ガード104が、その要求を拒否する。そうでない場合には、ガード104は、秘密および、おそらくは、さらに、プログラムによって供給されるさらなる情報のある関数(秘密自体とすることができる)を計算し、その結果を返す。代替案では、要求を明示的に受け入れるか拒否するのではなく、ガード104が、要求をサービスするが、呼出し側の識別を結果に束縛する。この代替手法は、たとえば、ガードによって返される結果に機密情報が含まれない場合(たとえば、秘密を使用してディジタル署名を作る要求)に適当である。用語ゲーティング機能は、本明細書で、この両方の事例を指すのに使用される。
【0034】
さらに、どちらの場合でも、ガード104は、呼出し側(プリンシパル102)を認証する。プリンシパル102の認証を、本明細書では、関数ID()とも称し、この関数は、呼出し側プログラム(ガード104のゲーティング機能を呼び出すプログラム)のダイジェストを返す。ダイジェストは、SHA1(Secure Hash Algorithm 1)、MD5(Message Digest 5)、MD2(Message Digest 2)などのさまざまな暗号ハッシュ関数(1方向ハッシュ関数とも称する)の1つまたは複数の使用、keyed MAC(メッセージ確認コード)の使用など、さまざまな従来の形のどれかで生成することができる。
【0035】
本明細書で説明するゲーティング機能の1つのクラスで、シールドストレージ(sealed strage)が実施される。シールドストレージの目的は、1つまたは複数のプログラムの特定の組(秘密を保存するプログラムによって定義される)だけが秘密を検索できるように、プログラムが秘密を保存できるようにすることである。1つの実施形態で、最初に秘密を保存した(封印(seal)した)プログラムだけが、その秘密を回復(封印解除(unseal))することができる。通常、これらの秘密の寿命は、プログラムの個々の実行の時間を超える。プログラムの単一の実行中に使用される秘密を、保存(封印)することができ、その代わりに、分離および乱数ジェネレータを用いて、プログラムが単一の実行中の秘密を維持できるようにする。シールドストレージによって、プログラムが、時間的にオーバーラップしない可能性がある、異なる実行にまたがって秘密を維持できるようになる。層liが、下記のインターフェースによって、次の層li+1にシールドストレージを公開する(たとえば、「Seal」動作および「UnSeal」動作および/またはPKSeal動作およびPKUnseal動作を使用して)。
【0036】
シールドストレージに関する本明細書の説明で、データの暗号化および暗号解読に使用される暗号鍵に言及する。これらの暗号鍵は、リソースへのアクセスを保護するガード(たとえば図1のガード104)に関連する鍵である。
【0037】
本明細書の説明で、プログラムの識別子(たとえば、動作を呼び出すプログラムの識別子、またはリソースへのアクセスを許可されたターゲットプログラムの識別子)に言及する。本明細書では、これらの識別子を、しばしばダイジェストと称する。しかし、ダイジェストが、プログラムの識別子の1例にすぎないことを諒解されたい。プログラムの測定または他の表現であり、プログラムに対するすべての変更を検出できる他のタイプの識別子を、使用することができる。プログラムに対して何らかの変更が行われる(たとえば、保護されたデータへのアクセスを悪意をもって取得し、そのデータを利用する試みで敵対者が1つまたは複数の命令を変更する)場合に、プログラムの識別子は、その変更を反映しなければならない(たとえば、変更されないプログラムの識別子が、変更されたプログラムの識別子と異なる)。
【0038】
Seal動作は、入力として、封印されるデータ(たとえば秘密)を受け取る。Seal動作は、任意選択として、秘密が明かされる(封印解除される)場合および/または相手を識別する条件を、入力として受け取る。一実施形態では、この条件が、データの検索(封印解除)を許可されるターゲットプログラムのダイジェストである。その代わりに、データの検索(封印解除)を許可されるプログラムを、他の形で識別することができる。たとえば、プログラムを、1つまたは複数の証明書を検証する公開鍵によって識別することができ、この証明書のそれぞれは、1つまたは複数のプログラムに関連する。
【0039】
その代わりに、他の条件を、ターゲットプログラムの識別子に加えてまたはその代わりに使用することができる。たとえば、条件に、その間に秘密を明かす(封印解除する)ことができる特定の時間または曜日など、データを明かす(封印解除する)ことができる時に関する時間制約を含めることができる。もう1つの例として、条件に、秘密を明かす(封印解除する)ために提供しなければならないパスワードまたは他のデータの識別子を含めることができ、たとえば、パスワードの知識を有するプログラムのみによって秘密を封印解除することができる。
【0040】
もう1つの例として、条件を、論理式(たとえば、一階論理で記述されたステートメント、術語論理で記述されたステートメントなど)とすることができる。その論理式が、評価され(たとえばガードによって)、その評価で真の表示が返される場合に限って、秘密が明かされる(封印解除される)。
【0041】
もう1つの例では、条件を、ある言語(たとえば、Java(登録商標)、C*、Java(登録商標)script、VBScriptなど)の実行可能プログラムとすることができる。プログラムが、実行され(たとえばガードによって)、プログラムが、「真」または「満足」の何らかの表示を返す場合に限って、秘密が明かされる(封印解除される)。
【0042】
条件が、ターゲットプログラムのダイジェストと共に供給されるのではなく、ターゲットプログラムのダイジェストである状況では、Seal動作で、Seal動作を呼び出すプログラムのダイジェストを使用することができる(これによって、ターゲットプログラムのダイジェストが暗黙のうちに入力される)。さらに、複数のターゲットプログラムのダイジェストを、Seal動作に入力することができ、これによって、複数のターゲットプログラムがデータを明かす(封印解除する)ことができるようになる。
【0043】
Seal動作では、その入力(データおよびデータの検索(封印解除)を可能にする条件)が、呼出し側の識別子と共に暗号化される。Seal動作では、暗号化された形で(暗号テキストとして)入力データが返される。Seal動作では、封印されたデータの保全性を検証するのに使用することができる値(たとえば、メッセージ確認コード(MAC)値)も返される。この返されるデータを用いると、下で詳細に説明するように、保存されたデータを後続のUnSeal動作で参照できるようになる。
【0044】
Seal動作の擬似コードを、表Iに示す。表Iの擬似コードでは、ID()が、上で説明したID()関数を指し、eが、呼出し側に返される値(たとえばビットのストリングまたはシーケンス)を指し、dataが、封印されるデータを指し、[t1、...、tm]が、データの検索(封印解除)を許可される1つまたは複数(m個)のターゲットプログラムのダイジェスト(または、1つまたは複数の他の条件)を指す。
表I
d=ID()
e= store {data, [t1, ..., tm], d)
return e
【0045】
図3は、Seal動作を実施する例示的なプロセス200を示す流れ図である。プロセス200は、図1のガード104によって実行され、ハードウェア、ソフトウェア、ファームウェア、またはその組合せで実施することができる。
【0046】
まず、封印される秘密を呼出し側から受け取る(動作202)。秘密を暗号化し、その結果、秘密を、特定のターゲットプログラムだけによって検索できるようにするか(動作204)、その代わりに、秘密を、1つまたは複数の特定の条件が満足される場合に限って検索できるようにする。暗号化された秘密を含む暗号テキストを、呼出し側に返す(動作206)。呼出し側のダイジェストおよび/またはターゲットプログラムのダイジェストなどの追加情報も、呼出し側に返すことができる(暗号テキストの一部として、または暗号テキストとは別に)。
【0047】
UnSeal動作では、呼出し側プログラムが現在検索を望むデータを封印した時にSeal動作によって返されたビットストリング(たとえば暗号鍵)を入力として受け取る。UnSeal動作では、データを明かす条件を入手し、その条件が満足されるかどうかを検査する。たとえば、条件に、データの検索(封印解除)を許可される1つまたは複数のターゲットプログラムのダイジェストが含まれる場合に、UnSeal動作では、これらのダイジェストを入手し、呼出し側プログラムが1つまたは複数のターゲットプログラムの1つであるかどうかを検査する。呼出し側プログラムが、1つまたは複数のターゲットプログラムの1つでない場合には、UnSeal動作が失敗し、要求されたデータは、呼出し側に返されない。しかし、呼出し側プログラムが、1つまたは複数のターゲットプログラムの1つである場合には、UnSeal動作が成功し、要求されたデータが、呼出し側プログラムに返される。データを封印したプログラムのダイジェストも、任意選択として、UnSeal動作から返される。
【0048】
UnSeal動作の擬似コードを表IIに示す。表IIの擬似コードでは、dataが、要求されている(前に封印された)データを指し、[t1、...、tm]が、データの検索(封印解除)を許可される1つまたは複数(m個)のターゲットプログラムのダイジェスト(または、1つまたは複数の他の条件)を指し、eが、UnSeal動作への入力(通常は、Seal動作による前の出力)を指し、dが、データを封印したプログラムのダイジェストを指す。
表II
(data, [t1, ..., tm], d) = retrieve(e)
if ID() is in [t1, ..., tm] then return (data, d)
else fail
【0049】
図4は、UnSeal動作を実施する例示的なプロセス220を示す流れ図である。プロセス220は、図1のガード104によって実行され、ハードウェア、ソフトウェア、ファームウェア、またはその組合せで実施することができる。
【0050】
まず、呼出し側が検索を望む暗号化されたデータを含む暗号テキストを受け取る(動作222)。呼出し側がデータの検索を許可されるかどうかを検査し(動作224)、呼出し側がデータの検索を許可されるかどうかに基づいて処理を進める(動作226)。呼出し側がデータの検索を許可される場合には、データ(暗号解読された)を呼出し側に返す(動作228)。呼出し側がデータの検索を許可されない場合には、処理が失敗し(動作230)、データは、呼出し側に返されない。
【0051】
シールドストレージを、異なる形で実施することができる。一実施形態では、シールドストレージが、物理的に保護された不揮発性メモリを使用して実施される。この実施形態では、コンピューティングデバイスが、保護された不揮発性メモリの異なる部分に異なるガードを関連付け、各ガードが、そのガードに関連付けられた部分だけにアクセスできるようにする。この実施形態では、Seal動作およびUnSeal動作で参照されるStore動作およびRetrieve動作が、コンピューティングデバイスに、ガードに関連する保護された不揮発性メモリ内のデータを、それぞれ保存させるか検索させるために呼び出される。
【0052】
たとえば、ストレージデバイス(ハードディスクドライブなど)によって、ガードを実施することができる。ストレージデバイスに対する読取コマンドおよび書込コマンドを無条件に単純に実行するのではなく、ストレージデバイスが、そのストレージデバイスへのアクセスを試みるプリンシパルを識別し(たとえば、プリンシパルのダイジェストに基づいて)、特定のプリンシパルだけにそのストレージデバイスへのアクセスを許可する。代替案では、異なるプリンシパルを、ストレージデバイスの特定の部分(たとえば、特定のセクタまたはアドレス範囲)だけへのアクセスに制限することができる。
【0053】
もう1つの実施形態では、シールドストレージが、暗号を使用して実施される。暗号を使用するシールドストレージの1つの例示的な実施形態の説明を続ける。
【0054】
暗号を使用してシールドストレージを実施する場合に、リソースは、物理的に保護されるメモリではなく、鍵Kである。Store動作では、その入力が物理的に保存されない。そうではなく、Store動作では、暗号的に保護された出力cが作られ、この出力cが、暗号化され保全性を保護された形でのStore動作の入力になる。暗号化は、入力に対称暗号を適用した結果である。後者のプロパティは、入力(入力を暗号化する前または後のいずれか)にメッセージ確認コード(MAC)を適用することから生じる。
【0055】
Store動作の擬似コードを、表IIIに示す。表IIIの擬似コードでは、bが、Store動作に入力されるビットストリングを指し、cが、Store動作によって出力されるビットストリングを指し、K1が、鍵Kの第1部分を指し、K2が、鍵Kの第2部分を指す。鍵KはSeal動作およびStore動作を実施するガードの対称鍵である。
表III
m = MACK1(b)
c = (m, EncryptK2(b))
return c
【0056】
したがって、表IIIからわかるように、値(m)は、Store動作に入力されるビットストリングにMACを適用することによって生成される。MACは、鍵Kの部分(K1)を鍵とする。また、保存動作に入力されるビットストリングは、鍵Kの第2部分(K2)を使用して暗号化される。入力ビットストリングにMACを適用すること、および入力ビットストリングを暗号化することによって生成された値が、Store動作の呼出し側に返される。
【0057】
鍵Kは、MACと暗号に同一の鍵を使用しないようにするために、2つの独立の鍵K1およびK2に区分される。この区分は、さまざまな形のいずれかで実行することができる。区分では、鍵Kの異なるビットを使用するか、その代わりに、1つまたは複数の同一のビットを使用することができる。たとえば、鍵Kが1024ビットであると仮定すると、下位512ビットを鍵K1として使用し、上位512ビットを鍵K2として使用することができ、偶数番目のビット(ビット0、2、4、6、8、10、...、1022)を鍵K1として使用し、奇数番目(ビット1、3、5、7、9、11、...、1023)を鍵K2として使用することができ、下位650ビットを鍵K1として使用し、上位650ビットを鍵K2として使用することができる(いくつかのビットがK1およびK2の両方に使用されることになる)。その代わりに、同一の鍵KをMACおよび暗号の両方に使用することができる。
【0058】
表IIIに示された擬似コードでは、データに対してMACを計算し、MACを暗号化し、暗号化されたMACを出力することによって、Store動作が実施される。その代わりに、Store動作を異なる形で実施することができる。たとえば、Store動作で、まずデータを暗号化し、次に暗号テキストに対するMACを計算し、暗号テキストおよびMACの両方を出力することができる。もう1つの例として、Store動作で、データに対するMACを計算し、データおよびMACの両方を暗号化し、暗号テキストを出力することができる。
【0059】
Store動作の暗号によって実行される暗号化は、さまざまな対称暗号化アルゴリズムのいずれかを使用して実行することができる。一般に、対称暗号化アルゴリズムでは、暗号化および暗号解読の両方に同一の鍵が使用される。そのようなアルゴリズムの例に、triple−DES(Data Encryption Standard、データ暗号化規格)、AES(Advanced Encryption Standard)などが含まれる。
【0060】
同様に、MACは、さまざまなメッセージ確認コードのいずれか(たとえば、非特許文献1参照)とすることができる。代替案では、MACの代わりに公開鍵ディジタル署名によって保全性を保護することができる。
【0061】
図5は、Store動作を実施する例示的なプロセス250を示す流れ図である。プロセス250は、図1のガード104によって実行され、ハードウェア、ソフトウェア、ファームウェア、またはその組合せで実施することができる。
【0062】
まず、保存されるデータを受け取る(動作252)。対称暗号をデータに適用し(動作254)、メッセージ確認コード(MAC)をデータに適用する(動作256)。動作254で生成された暗号化されたデータ、および動作256で生成されたMAC値を呼出し側に返す(動作258)。
【0063】
Retrieve動作では、MAC値および暗号テキストを含むビットストリングを入力として受け取る。暗号テキストを暗号解読して、平文を生成し、その平文のMAC値を生成する。平文について生成されたMAC値が、入力ビットストリングの一部として受け取ったMAC値と同一である場合には、平文を呼出し側に返す。しかし、平文について生成されたMAC値が、入力ビットストリングの一部として受け取ったMAC値と同一でない場合には、Retrieve動作が失敗し、平文は呼出し側に返されない。入力ビットストリングからMACおよび暗号テキストを得るためにRetrieve動作が実施される特定の形が、Store動作が実施される形に依存することを諒解されたい。
【0064】
Retrieve動作の擬似コードを、表IVに示す。表IVの擬似コードでは、cが、Retrieve動作に入力されるビットストリングを指し、bが、Retrieve動作によって出力されるビットストリングを指し、mが、Retrieve動作に入力されたビットストリングのMAC値部分を指し、dが、Retrieve動作に入力されたビットストリングの暗号テキスト部分を指し、K1が、鍵Kの第1部分を指し、K2が、鍵Kの第2部分を指す。K1鍵およびK2鍵は、鍵Kのうちで、Store動作に関して上で説明した物と同一の部分である。
表IV
Let (m, d) = c
b = DecryptK2(d))
if m = MACK1(b) then return b
else fail
【0065】
したがって、表IVからわかるように、値(b)は、Retrieve動作に入力されたビットストリングを暗号解読することによって生成される。その後、MAC値が、値(b)について生成される。Retrieve動作によって生成されたMAC値が、Retrieve動作に入力されたビットストリングの一部として受け取られたMAC値と同一である場合には、値(b)をRetrieve動作の呼出し側に返し、そうでない場合には、Retrieve動作が失敗する。
【0066】
表IVの擬似コードは、データに対するMACを計算し、データを暗号化し、MACおよび暗号テキストを一緒に出力する(これがRetrieve動作の入力ビットストリングとして働く)Store動作の実施形態に基づく。Store動作が、まずデータを暗号化し、暗号テキストに対するMACを計算し、暗号テキストおよびMACの両方を出力するように実施される場合には、Retrieve動作は、暗号テキストのMACを計算し、それを入力ビットストリングの一部として受け取られたMAC値と比較し、MAC値が一致する場合に暗号テキストを暗号解読し、暗号解読されたデータを返すように実施される。Store動作が、データに対するMACを計算し、データおよびMACの両方を暗号化するように実施される場合には、Retrieve動作は、入力ビットストリングを暗号解読し、入力ビットストリングのデータに対するMACを計算し、計算されたMACを暗号解読されたストリングのMAC値と比較し、MAC値が一致する場合にデータを返すように実施される。
【0067】
Store動作に関する上の説明と同様に、さまざまな暗号解読アルゴリズムのどれであっても、Retrieve動作に使用することができる。しかし、暗号解読アルゴリズムは、暗号化されたデータを暗号解読できるようにするために、暗号化アルゴリズムに対応しなければならない。同様に、さまざまなメッセージ確認コードのどれでも、MACとして使用することができるが、メッセージ確認コードは、Store動作によって使用されるメッセージ確認コードと同一でなければならない。
【0068】
図6は、Seal動作を実施する例示的なプロセス270を示す流れ図である。プロセス270は、図1のガード104によって実行され、ハードウェア、ソフトウェア、ファームウェア、またはその組合せで実施することができる。
【0069】
まず、暗号テキストおよびMAC値を受け取る(動作272)。暗号テキストを暗号解読して、平文データを生成する(動作274)。メッセージ確認コード(MAC)を平文データに適用して、MAC値を生成し(動作276)、動作276で生成されたMAC値が動作272で受け取ったMAC値と等しいかどうかを検査する(動作278)。その後、処理は、生成されたMAC値が受け取ったMAC値と等しいかどうかに基づいて進行する(動作280)。生成されたMAC値が受け取ったMAC値と等しい場合には、平文データを呼出し側に返す(動作282)。しかし、生成されたMAC値が受け取ったMAC値と等しくない場合には、処理が失敗し(動作284)、平文データは呼出し側に返されない。
【0070】
したがって、シールドストレージに対する暗号手法では、値c(Store動作の出力)のすべての破壊を検出できること、および値b(Store動作への入力)を、鍵K2(値bを暗号化するために暗号によって使用される鍵)にアクセスできなければ検索できないことが、実質的に保証される。
【0071】
ゲーティング機能のもう1つのクラスでは、リモート認証が実施される。リモート認証の目的は、認証機能への強い物理的結合(たとえばサーバまたはスマートカードを使用する)がない場合であってもプログラムを認証できるようにすることである。この状況では、認証は、暗号に基づく。すなわち、両方の実体が、暗号認証プロトコルを介して進む。これには、秘密へのアクセスを有する認証された構成が含まれ、この秘密は、プロトコルに依存するが、通常は秘密鍵または対称鍵である。さらに、コンピューティングデバイスは、この認証秘密の使用を、その使用を要求する構成(たとえば、プロセッサおよび/またはソフトウェア)の識別に結び付けることができる。したがって、認証機能は、コンピューティングデバイスならびにその上で実行されるソフトウェアの識別を確立することができる。
【0072】
2つの動作、Quote動作およびPKUnseal動作が、公開鍵署名および秘密鍵暗号解読のめいめいのゲーティング機能である。これらのゲーティング機能を実施するガードは、署名鍵Ksおよび暗号解読鍵Kdにアクセスできる。署名鍵Ksおよび暗号解読鍵Kdの両方を、公開/秘密鍵対の秘密鍵とも称する。この公開/秘密鍵対は、Quote動作およびPKUnseal動作を実施するガードの鍵対である。
【0073】
Quote動作は、Quote動作への入力、および秘密を明かすことができる場合および/または相手を識別する条件の組合せ(たとえば連結)に対する公開鍵署名を返す。上で説明したSeal動作およびUnSeal動作に似て、秘密を明かすことを、さまざまな条件のどれにでも結び付けることができる。一実施形態では、条件が、呼出し側プログラムの識別子(たとえばダイジェスト)である。
【0074】
署名に固有なのが、動作が、識別される呼出し側プログラムの要求で実行されるという断定である。Quote動作は、Verify動作と共に働き、Verify動作は、通常は、Quote動作が実行されるデバイス以外のデバイスで(たとえば、リモートサーバデバイスで、スマートカードでなど)実行される。Verify動作では、公開鍵署名検証を実行し、呼出し側プログラムの識別子(および/または秘密を明かす他の条件)を検索し、評価する。
【0075】
Quote動作の擬似コードを、表Vに示す。表Vの擬似コードでは、ID()が、上で説明したID()関数を指し、aが、Quote動作に入力されるデータを表し、Ksが、署名鍵を指す。
表V
d =ID()
return sn=SignatureKs(d, a)
【0076】
したがって、表Vからわかるように、Quote動作では、呼出し側プログラムのダイジェストを入手し、入力値aを受け取る。Quote動作では、入力値aおよび呼出し側プログラムのダイジェストの、署名鍵Ksを使用するディジタル署名(sn)を生成する。入力値aは、呼出し側プログラムが生成することができ、その代わりに、別のコンポーネントまたはデバイスから(たとえば、Verify動作を実行するデバイスから)受け取られる値とすることができる。ディジタル署名は、公開鍵暗号を使用して生成される。
【0077】
図7は、Quote動作を実施する例示的なプロセス300を示す流れ図である。プロセス300は、図1のガード104によって実行され、ハードウェア、ソフトウェア、ファームウェア、またはその組合せで実施することができる。
【0078】
まず、入力データを呼出し側から受け取る(動作302)。呼出し側の識別子(および/または入力データの検索に関する1つまたは複数の他の条件)を入手し(動作304)、入力データおよび呼出し側の識別子(および/または1つまたは複数の他の条件)の組合せに対するディジタル署名を生成する(動作306)。その後、生成されたディジタル署名を呼出し側に返す(動作308)。
【0079】
Verify動作では、公開鍵署名検証を実行し、呼出し側プログラムの識別子を検索し、評価する。Verify動作では、通常はVerify動作が実行されるデバイス以外のデバイス(たとえば、リモートサーバデバイス、スマートカードなど)から、Quote動作によって生成されたディジタル署名を受け取る。Verify動作では、受け取ったディジタル署名から、Quote動作を呼び出したプログラム(たとえば、アプリケーションプログラム、オペレーティングシステム、ファームウェアプログラムなど)のダイジェストを抽出し、そのダイジェストを評価して、進行方法を決定する。
【0080】
Verify動作の擬似コードを、表VIに示す。表VIの擬似コードでは、dが、Quote動作を呼び出したプログラムのダイジェストを指し、aが、Quote動作に入力された値を指し、Snが、Verify動作によって入力として受け取られたディジタル署名を指す。
表VI
(d,a)=ExtractKv(Sn)
Evaluate(d)
【0081】
したがって、表VIからわかるように、Verify動作では、ディジタル署名を受け取り、検証鍵Kv(署名鍵Ksを含む公開/秘密鍵対の公開鍵)を使用して、署名からダイジェストdおよび値aを抽出する。その後、Verifyプログラムでは、Quote動作を呼び出したプログラムのダイジェストdを評価することができる。ダイジェストdを評価する形は、変更することができる。たとえば、評価に、ダイジェストdを、「承認された」または「信頼される」アプリケーションプログラムのリストと比較することを含めることができる。
【0082】
図8は、Verify動作を実施する例示的なプロセス320を示す流れ図である。プロセス320は、図1のガード104によって実行され、ハードウェア、ソフトウェア、ファームウェア、またはその組合せで実施することができる。
【0083】
まず、ディジタル署名を受け取る(動作322)。入力値を引用した(Quote動作を使用した)呼出し側の識別子(および/または入力値の検索に関する1つまたは複数の他の条件)および入力値自体の両方を、ディジタル署名から抽出する(動作324)。呼出し側の識別子(および/または1つまたは複数の他の条件)を評価して、入力値に関して進行する方法を決定する(動作326)。
【0084】
PKUnseal動作は、公開鍵暗号解読の、呼出し側の識別(たとえば呼出し側プログラムのダイジェスト)またはその代わりに1つまたは複数の他の条件に対してゲーティングされる版である。PKUnseal動作への入力cの公開鍵暗号解読の結果は、対(d、s)として解釈され、ここで、sは、秘密であり、dは、それに対してsを明かすことができる構成(たとえば、呼出し側プログラムのダイジェスト)を識別する。PKUnsealの呼出し側が、dでない場合には、PKUnseal動作が失敗する。PKUnseal動作への入力cは、PKUnseal動作が実行されるデバイス以外のデバイス(たとえば、リモートサーバデバイス、スマートカードなど)で実行することができる第2の動作PKSealによって生成される。PKSeal動作では、対(d、s)の公開鍵暗号化を実行する。PKUnseal動作およびPKSeal動作は、シールドストレージの実施にも使用することができる。
【0085】
PKUnseal動作の擬似コードを、表VIIに示す。表VIIの擬似コードでは、ID()が、上で説明したID()関数を指し、cが、PKUnseal動作への入力を指し、[d1、...、dm]が、それに対してsを明かすことができる1つまたは複数の呼出し側プログラムのダイジェスト(または、その代わりに1つまたは複数の他の条件)を指し、sが、保護されたデータを指し、Kdが、暗号解読鍵(PKUnseal動作を実施するガードに関連する公開/秘密鍵対の秘密鍵)を指す。
表VII
([d1, ..., dm], s) = DecryptKd(c)
if ID() is in [d1, ..., dm] then return selse fail
【0086】
したがって、表VIIからわかるように、PKUnseal動作では、公開鍵暗号解読および暗号解読鍵Kdを使用して入力値cを暗号解読する。暗号解読された入力値には、保護されたデータsがそれに明かされることを許可される1つまたは複数の呼出し側プログラムのダイジェスト[d1、...、dm](または、その代わりに保護されたデータsを明かすことが許可される場合および/または相手を識別する1つまたは複数の条件)が含まれる。PKUnseal動作では、呼出し側プログラムのダイジェストも生成される。呼出し側プログラムのダイジェストが、ダイジェスト[d1、...、dm]の1つと等しい場合には、保護されたデータsが、呼出し側プログラムに返される。しかし、呼出し側プログラムのダイジェストが、ダイジェスト[d1、...、dm]のどれとも等しくない場合には、保護されたデータsは、呼出し側プログラムに返されない。
【0087】
図9は、PKUnseal動作を実施する例示的なプロセス340を示す流れ図である。プロセス340は、図1のガード104によって実行され、ハードウェア、ソフトウェア、ファームウェア、またはその組合せで実施することができる。
【0088】
まず、呼出し側が検索を望む暗号化されたデータを含む暗号テキストを受け取る(動作342)。呼出し側がそのデータの検索を許可されるかどうかに関する検査を行い(動作344)、呼出し側がそのデータの検索を許可されるかどうかに基づいて処理を進める(動作346)。呼出し側がそのデータの検索を許可される場合には、データ(公開鍵暗号解読を使用して暗号解読された)を呼出し側に返す(動作348)。呼出し側がそのデータの検索を許可されない場合には、処理が失敗し(動作350)、データは、呼出し側に返されない。
【0089】
PKSeal動作は、公開鍵暗号化の、呼出し側の識別(たとえば、呼出し側プログラムあるいは1つまたは複数の他のプログラムのダイジェスト)に基づいてゲーティングされる版である。PKSeal動作では、対(d、s)の公開鍵暗号化を実行し、ここで、sは、秘密であり、dは、それに対してsを明かすことができる1つまたは複数の構成(たとえば、呼出し側プログラムのダイジェスト)を識別する。
【0090】
PKSeal動作の擬似コードを、表VIIIに示す。表VIIIの擬似コードでは、cが、PKSeal動作の出力を指し、[d1、...、dm]が、それに対してsを明かすことができる1つまたは複数の呼出し側プログラムのダイジェストを指し、sが、保護されたデータを指し、Keが、暗号化鍵を指す。
表VIII
c=EncryptKe([d1, ..., dm], s)
return c
【0091】
したがって、表VIIIからわかるように、PKSeal動作では、入力として、保護されたデータs、および保護されたデータsをそれに対して明かすことができる1つまたは複数のプログラムのダイジェスト[d1、...、dm]を受け取る。対[d1、...、dm]、sを、暗号化鍵Keに基づく公開鍵暗号を使用して暗号化する。暗号化鍵Keは、暗号テキストを暗号解読できることが意図されたガードの公開鍵である。公開鍵暗号化から生じる暗号テキストを、呼出し側プログラムに返す。
【0092】
図10は、PKSeal動作を実施する例示的なプロセス360を示す流れ図である。プロセス360は、図1のガード104によって実行され、ハードウェア、ソフトウェア、ファームウェア、またはその組合せで実施することができる。
【0093】
まず、封印する秘密を呼出し側から受け取る(動作362)。秘密を公開鍵暗号化を使用して暗号化し、その結果、特定のターゲットプログラムだけが秘密を検索できるようにするか(動作364)、その代わりに、1つまたは複数の他の条件が満たされる場合に限って秘密を検索できるようにする。暗号化された秘密を含む暗号テキストを呼出し側に返す(動作366)。呼出し側のダイジェストおよび/またはターゲットプログラムのダイジェストなどの追加情報も、呼出し側に返すことができる(暗号テキストの一部としてまたは暗号テキストと別に)。
【0094】
Quote動作およびPKUnseal動作は、公開鍵認証プロトコルと共に使用されることを意図されている。ほとんどの公開鍵認証プロトコルは、公開鍵暗号解読、公開鍵暗号化、署名、および署名検証への呼出しのすべてを、それぞれPKUnseal、PKSeal、Quote、およびVerifyに置換することによって簡単に適合させることができる。
【0095】
いくつかの状況で、乱数を得られることが重要である(たとえば、暗号鍵生成の基礎として)。乱数は、さまざまな異なる形で得ることができる。一実施形態では、乱数の供給源が、コンピューティングデバイスのハードウェアで実施される、暗号的に強い乱数ジェネレータである。
【0096】
上で説明したSeal動作の代替案の1つが、Seal動作を乱数生成動作と組み合わせたGenSeal動作である。GenSeal動作では、入力として、秘密を検索することができなければならないターゲットプログラムのダイジェスト[t1、...、tm](および/または秘密を検索するために満足されなければならない他の条件)を受け取る。GenSeal動作では、乱数を生成し、新たに生成された乱数を封印し、その結果、新たに生成された乱数を、ターゲットダイジェスト[t1、...、tm](および/または満足される他の条件)の1つを有する呼出し側プログラムだけが検索できるようにする。
【0097】
GenSeal動作の擬似コードを、表IXに示す。表IXの擬似コードでは、ID()が、上で説明したID()関数を指し、cが、GenSeal動作の出力を指し、sが、新たに生成される乱数を指し、[t1、...、tm]が、値sを検索することが許可されなければならない1つまたは複数のターゲットプログラム(そのうちの1つを、任意選択として、GenSeal動作を呼び出すプログラムにすることができる)あるいはその代わりに1つまたは複数の他の条件を指し、GenRandom()が、乱数を生成する関数を指す。
表IX
d =ID()
s =GenRandom()
c = store (s, [t1, ..., tm], d)
return c
【0098】
図11は、GenSeal動作を実施する例示的なプロセス380を示す流れ図である。プロセス380は、図1のガード104によって実行され、ハードウェア、ソフトウェア、ファームウェア、またはその組合せで実施することができる。
【0099】
まず、秘密を検索できなければならないターゲットプログラムまたはその代わりに秘密を検索するために満足されなければならない1つまたは他の条件を識別する入力を呼出し側から受け取る(動作382)。秘密を生成し(動作384)、秘密を暗号化し、その結果、識別されたターゲットプログラムだけが秘密を検索できるようにする(動作386)か、その代わりに1つまたは他の条件が満足される場合に限って秘密を検索できるようにする。暗号化された秘密を含む暗号テキストを呼出し側に返す(動作388)。呼出し側のダイジェストおよび/またはターゲットプログラムのダイジェストなどの追加情報も、呼出し側に返すことができる(暗号テキストの一部としてまたは暗号テキストと別に)。
【0100】
開示ガードによって供給されるサービスを、汎用封印サービスに使用することができる。たとえば、図1および2に戻ると、層n−1によって、初期化の際の(たとえば、コンピューティングデバイスのリセットまたはブートの後、あるいはプログラムの実行の始まり)層nの識別に基づいて、層nに単一の鍵が開かされる。層nは、この鍵をキャッシュに入れ、これを使用して追加の秘密を暗号化する。このプラットフォームが同一の構成で次にブートされる時に、開示ガードが、同一のルート鍵を供給し(たとえば、UnSealまたはPKUnsealを介して)、前に暗号化されたすべての秘密を、層nによって検索できる。
【0101】
いくつかの実施形態で、次の層が初期化される時(たとえば、コンピューティングデバイスのリセットまたはブートの後、あるいはプログラムの実行の始まり)に、その、次の層に、下位の層によって1つまたは複数の秘密が開示される。このゲーティングされる開示の後に、下位の層は、もはや使用されなくなる(次のブートまたはリセットまで)。この使用モデルを、開示ガードモデルとも称する。開示ガードモデルを使用することによって、下位層へのアクセスが減る。
【0102】
本明細書で説明するゲーティング機能は、時間分離および空間分離を使用して実施されるサービスガードおよび開示ガードと共に使用することができる。認証動作に関する4つのサービスモデル実施形態すなわち、(1)サービスガード−空間分離、(2)開示ガード−空間分離、(3)開示ガード−時間分離、および(4)サービスガード−時間分離を下で説明する。これらのサービスモデルの説明では、下位ガードが、検討される層のガードに1つまたは複数の鍵を開示したと仮定する。これらの鍵を入手する形は、下の層のガードおよび分離のモデルに依存する。同一のコンピューティングデバイスの異なる層で、これらのサービスモデルの異なる1つを使用することができる。
【0103】
(1)サービスガード−空間分離:ガードが、初期化される場合に要求元プログラムの識別を測定し、保存する。ガードは、プロセッササービス(たとえばCPUあるいは他のセキュリティプロセッサまたはセキュリティコプロセッサの)を使用する保護システム、および認証された動作プリミティブ動作を公開するシステム呼出しインターフェースを実施する。
【0104】
(2)開示ガード−空間分離:ガードが、暗号blobの形で初期化時にサービス要求を得る。blobは、メモリに保存するか、その代わりに外部ストレージデバイスから得ることができる。ガードは、それが初期化するプログラムの識別を測定し、上で説明したゲーティング機能に従ってプログラムに鍵を開示する。次の層に制御を渡す前に、ガードは、それ自体およびそれの秘密リソースに関するモード−保護を確立する。
【0105】
(3)開示ガード−時間分離:ガードが、暗号blob(ビットのグループ)の形で初期化時にサービス要求を得る。blobは、メモリに保存するか、その代わりに外部ストレージデバイスから得ることができる。ガードは、それが初期化するプログラムの識別を測定し、上で説明したゲーティング機能に従ってプログラムに鍵を開示する。次の層に制御を渡す前に、ガードは、ゲーティング機能を実施するのに使用される鍵を削除(または他の形でアクセス不能に)する。
【0106】
(4)サービスガード−時間分離:サービスガード−時間分離モデルでは、コンピューティングデバイスが、セキュリティリセットにまたがって、プログラム状態を安全に保存する。このモデルは、モデル(1)(サービスガード−空間分離)に類似するが、制御を次の層に渡す前に、サービスガードが、その秘密を削除する(次のリブートまで機能しないようにする)。次の層は、ガードにサービスを要求する必要が生じるまで、普通に実行される。必要になった時点で、次の層は、要求のパラメータを、メモリのうちでリセットに耐える場所に保存し、リセットを実行する。デバイスがリブートする際に、サービスガードが、その秘密を入手し、要求を見、それを実行し(鍵を使用して)、鍵および関連する情報を破壊し、計算の結果および制御を次の層(最初にサービスを要求した層)に渡す。
【0107】
いくつかの実施形態で、コンピューティングデバイスが、空間分離をサポートする場合に、セキュリティカーネルが、プリミティブ(動作)Seal、Unseal、GetRandom(乱数を得るため)、およびPKUnseal(またはQuote)を公開しなければならない。セキュリティカーネルで、開示ガードまたはサービスガードを実施することができる。その一方で、プラットフォームが時間分離をサポートする場合に、セキュリティカーネルが、開示ガードを提供しなければならず、プリミティブ(動作)Unseal、GenSeal、およびPKUnseal(またはQuote)を実施しなければならない。
【0108】
QuoteおよびPKUnsealの機能性を、SealプリミティブおよびUnsealプリミティブまたはUnsealプリミティブおよびGenSealプリミティブに基づいて構築できることにも留意されたい。たとえば、製造業者は、QuoteまたはPKUnsealを実施し、l1で実施されるGenSealおよびUnsealに基づく上位ソフトウェア(たとえばオペレーティングシステム)のホストとして働くl2プログラムを構築することができる。製造業者は、サービス層が必要とする鍵を生成し、Sealし、デバイスまたはCPUと共に出荷する(またはオンラインで使用可能にする)ことができる。
【0109】
プラットフォームが認証された動作をサポートできるようにする、ハードウェア実施形態の系列の例示的な説明を続ける。システムの上位層と同様に、下位層(図2のl1)の特性は、(a)秘密の鍵リソース、(b)これらの鍵にアクセスできる特権コード、および(c)層の制御された初期化である。
【0110】
認証される動作によって、プログラムと秘密の鍵の間の強い束縛が提供される。上位層では、下位層のガードによって、この束縛が保証される。下位層では、プラットフォームの秘密へのアクセスをゲーティングできる、基礎となるソフトウェアガードがない。したがって、l1プログラムへのl1鍵の関連付けをサポートするために、別の機構が使用される。この束縛を達成する方法の1つが、l1ソフトウェアを、製造後に変更できないプラットフォームマイクロコードまたはファームウェアにし、l1ソフトウェアに、l1鍵への制限されないアクセスを与えることである。このプラットフォームマイクロコードまたはファームウェアを、セキュリティカーネルと呼ぶことができ、l1鍵を、プラットフォーム鍵と称する。プラットフォームは、所定のセキュリティカーネルだけに制御を渡すように設計される。このハードウェア挙動を、プラットフォーム鍵を事前定義のセキュリティカーネルに開示する単純なリソースガードと説明することもできる。
【0111】
プラットフォーム鍵およびセキュリティカーネルファームウェアは、プロセッサの一部とするか、その代わりに、コンピューティングデバイスの1つまたは複数の他のコンポーネント(たとえば、暗号動作も実行できるセキュリティプロセッサまたはセキュリティコプロセッサ)で実施することができる。プラットフォーム鍵およびセキュリティカーネルファームウェアは、単一のコンポーネントで実施するか、その代わりにコンピューティングデバイスの複数のコンポーネントで実施することができる。
【0112】
認証された動作を用いると、プログラムが、制御された初期状態で開始される。上位レベルでは、下位レベルで動作するソフトウェアを信頼して、正しいエントリポイントで実行を開始することができる。しかし、l1では、ハードウェアがこの機能を実行する。通常、電源投入時またはリセットの後に、現在のプロセッサは、ある決定論的なシーケンスに従うことによって実行を開始する。たとえば、最も単純な場合に、プロセッサは、アーキテクチャ的に定義されたメモリ位置からコードをフェッチし、実行する。l1について、セキュリティカーネルがスタートアップ時に実行されるコードである(決定論的シーケンスの一部として)ことをハードウェアが保証することによって、プログラムを、制御された初期状態で開始することができる。
【0113】
さらに、他のプラットフォーム状態によって、セキュリティカーネルの実行を破壊できてはならない。リセットおよび電源投入によって、堅牢で確実にデバッグされた状態がプロセッサに明瞭にされなければならない。この例で使用される際に、セキュリティカーネルの開始または呼出しに使用されるプラットフォーム状態変化を、セキュリティリセットと称する。
【0114】
さらに、デバイス製造業者は、SealおよびUnsealのl1実装によって使用されるプラットフォーム鍵の生成またはインストールを配置しなければならない。デバイスが、PKI(公開鍵インフラストラクチャ)の一部として認識されなければならない場合には、製造業者は、プラットフォームの公開鍵の証明も行わなければならない。これは、l1によって直接に使用されるプラットフォーム鍵とするか、その代わりに上位層によって使用される鍵とすることができる。
【0115】
鍵の生成および証明は、CPU製造業者の責任とするか、その代わりにCPUをデバイスに組み立てるOEMなどの第三者の責任とすることができる。その代わりに、この責任を、複数のそのような当事者が共有することができる。
【0116】
セキュリティカーネルが実行されているならば、そのセキュリティカーネルが、上で説明した分離機構を使用して、上位層で実行されるコードからそれ自体を保護することができる。空間における分離には、通常は、特権モードサポートが含まれ、時間における分離には、通常は、上位層から隠される秘密が含まれる。
【0117】
ほとんどの現在のプロセッサでは、空間分離をサポートするための追加のプラットフォームサポートは不要である。すなわち、既存の特権モードまたはレベルで十分である(プラットフォーム鍵へのアクセスを許可するハードウェアリソースを上位層から保護できる限り)。
【0118】
時間分離をサポートするために、ハードウェアの援助を使用して、セキュリティカーネルが、上位層に制御を渡す前にプラットフォーム鍵を隠せるようにする。時間分離モデルでプラットフォーム鍵セキュリティを提供する形の1つが、リセットラッチと称するステートフルガード回路を使用することである。リセットラッチは、リセットまたは電源投入の後に開かれるが、いつでもどのソフトウェアでもこのラッチをプログラム的に閉じることができるというプロパティを有するハードウェア回路である。閉じられたならば、ラッチは、次のリセットまたは電源投入まで閉じられたままになる。時間分離されるセキュリティカーネルを実施するプラットフォームは、リセットラッチの状態に基づいてプラットフォーム鍵アクセスをゲーティングしなければならず、セキュリティカーネルは、上位層に制御を渡す前にこのラッチを閉じなければならない。上で説明したように、セキュリティカーネルは、制御を渡す前に、メモリおよびレジスタのクリアなどの追加処置も講じなければならないが、これらの処置は、上位層で使用される物と同一である。
【0119】
プラットフォームで、空間分離が使用される場合には、セキュリティカーネルで、特権モードを使用して、それ自体およびそのプラットフォーム鍵を、セキュリティカーネルがホストするプログラム(たとえばオペレーティングシステム)から保護する。さらに、セキュリティカーネルは、認証動作の呼出しに関するシステム呼出しインターフェースを確立する。
【0120】
プラットフォームで、空間分離が使用される場合には、そのプラットフォームに、サービスルーチンにパラメータを渡すためにセキュリティリセットの後まで残されるストレージも含まれなければならない。サービスを呼び出すために、オペレーティングシステムは、セキュリティカーネルに既知のメモリ位置にコマンドおよびパラメータブロックを準備し、セキュリティリセットを実行する。OSが、サービス呼出しの後に実行を継続する(単純な再始動ではなく)ことを望む場合には、OSおよびセキュリティカーネルが、これを信頼性があり安全な形で行えることを保証するために余分な処置を講じなければならない。
【0121】
本明細書で説明する認証された動作は、ウィルスからの個人データの保護、ネットワーク攻撃からの機密サーバデータの保護、ネットワーク管理、コピープロテクト、信頼性のある分散コンピューティングなど、さまざまな設定でセキュリティに使用することができる。認証される動作を用いると、特定の信頼関係でなしに同一のコンピュータで実行できる異なるプログラムが、他のソフトウェアの処置に無関係にその暗号リソースを保存できるようになる。
【0122】
下の説明の一部で、SSP(Secure Service Processor、セキュアサービスプロセッサ)に言及する。一実施形態では、SSPが、コンピューティングデバイスに基本的な暗号サービスを提供するプロセッサ(コンピューティングデバイス内で使用するための)である(たとえば、SSPが、本明細書で説明するゲーティング機能(たとえば図2の層l1)をサポートする)。SSPは、暗号鍵を利用することができ、通常は、そのSSPに一意の(または一意であると期待される)1つまたは複数の暗号鍵を有する。SSPは、デバイスのCPUの一部とするか、その代わりに1つまたは複数の他のプロセッサとすることができる。たとえば、SSPを、コンピューティングデバイス内の別のチップまたは集積回路(IC)とすることができる。
【0123】
異なる実施形態では、SSPが、前の実施形態と同一の機能性を呼出し側に公開する、適当に分離されたソフトウェアプログラムである。このSSP実施形態は、暗号鍵へのアクセス(直接にまたは間接的に)を有する。そのようなアクセスの提供に関して、複数の実施形態のオプションが存在する。たとえば、SSPから、下位層のサービスガードまたは開示ガードを呼び出すことができる。あるいは、SSPが、永続メモリ(たとえば、ハードディスク、フラッシュメモリ、ROMなど)のうちで必要な暗号鍵を含む部分への排他的なアクセスを有することができる。
【0124】
要約すると、SSPは、それが上位のプリンシパルに公開する機能性によって定義される。SSPは、暗号鍵へのアクセス(直接のまたは間接的な)を有するガード(上で説明した)である。SSPでは、これらの鍵を使用して、呼出し側に暗号サービスを提供する。以下の節では、SSPが公開する例示的な機能性を説明する。
【0125】
例示的な動作
下記は、シールドストレージ動作の例示的実施形態およびリモート認証動作の説明である。この節では、上で説明したSeal動作、UnSeal動作、Quote動作、およびPKUnseal動作の例の実施形態を説明する。
【0126】
この節では、下記の定義を使用する。
【0127】
【表1】
【0128】
さらに、この節および下の束縛鍵動作の節で、アクセスポリシに言及する。アクセスポリシによって、特定の動作が機能する(すなわち、それが動作する)場合が記述される。コンピューティングデバイスのユーザは、ある機能を選択的にオフに切り替えることができる。たとえば、コンピューティングデバイス(たとえばSeal動作を実施するSSP)に、FeatureEnableと称するレジスタが含まれる。このレジスタのビットの1つを、MainEnableと称する。ユーザが、MainEnableに偽をセットする場合に、この節の機能のどれもが、動作しなくなる。各関数に含まれるアクセスポリシの説明によって、どのFeatureEnable設定の下でその関数が動作するかが記述される。
【0129】
Seal
定義
SSP_STATUS Seal (
[in] SECRET S,
[in] DIGEST Target[2],
[in] UINT32 MaxLen,
[out] UINT32* ActualLen,
[out] BYTE* SealedBlob
【0130】
パラメータ
Seal−Input ::= SEQUENCE {
ordinal INTEGER,
secret Secret,
target DigestPair }
Seal−Output ::= SEQUENCE {
ordinal INTEGER,
status INTEGER,
sealed−blob OCTET STRING }
【0131】
戻り値
SSP_SUCCESS
【0132】
コメント
Seal動作は、下記の評価が真の場合に、対応するUnseal動作によってのみ暗号解読できる暗号化されたblob(ビットのグループ)を形成する。
・符号化が正しいか
・MACが正しいか
・現在動作しているSK/SL(セキュリティカーネルまたはセキュアローダー)が、Seal動作中にターゲットとして名前を指定された物であるか
【0133】
Sealでは、内部のランダムさを追加し、その結果、同一の入力に対するSeal動作の出力が、異なる結果を生じるようにする。これによって、Sealをハードウェアデバイス識別子として使用できないことが保証される。Sealには、開封する物に保全性情報を提供するように封印が実行された場合に、Seal動作を呼び出したプログラムの識別子(たとえば、本明細書でPCR値とも称する、SSPのPCRレジスタに保存された、呼出し側プログラムのダイジェスト)も含まれる。
【0134】
アクセスポリシ
Allowed = FeatureEnable.MainEnable &
(FeatureEnable.UseSymmKey==All |
FeatureEnable.UseSymmKey==AuthSL
& SLKnown & AuthPCR[CurrentSL].UseSymmKey)
【0135】
処置
Seal動作では、下記の処置が実施される。
1.128ビットの乱数Rを生成する
2.D0が、PCR[0]の現在の値になるようにし、D1=PCR[1]にする
3.ダイジェストM=HMAC[KM](R‖S‖target‖D0‖D1)
4.C=AES[KS](R‖S‖Target‖D0‖D1‖M)
5.SealedBlobにCをセットしてSSP_SUCCESSを返す
【0136】
Unseal
定義
SSP_STATUS Unseal (
[in] BYTE* SealedBlob,
[in] UINT32 SealedBlobLen,
[out] SECRET S,
[out] DIGEST Source
)
【0137】
パラメータ
Unseal−Input ::= SEQUENCE {
ordinal INTEGER,
sealed−blob OCTET STRING }
Unseal−Output ::= SEQUENCE {
ordinal INTEGER,
status INTEGER,
secret Secret,
source Digest }
【0138】
戻り値
SSP_SUCCESS
SSP_UNSEAL_ERROR
【0139】
コメント
Unseal動作では、Seal動作によって生成されたblobを内部で暗号解読し、下記の条件を検査する。
・符号化が正しいか
・PCRの現在の値が、Seal動作中にターゲットとして名前を指定された物であるか
【0140】
すべての検査に成功する場合に、secretおよび封印した物のPCRを返し、そうでない場合にはUNSEAL_ERRORを返す。
【0141】
アクセスポリシ
Allowed = FeatureEnable.MainEnable &
(FeatureEnable.UseSymmKey==All |
FeatureEnable.UseSymmKey==AuthSL
& SLKnown & AuthPCR[CurrentSL].UseSymmKey)
【0142】
処置
Unseal動作では、下記の処置を実施する。
1.M=AES−1[KS](SealedBlob)。
2.Mを(BITS[128] R‖SECRET S1‖DIGEST Target0‖DIGEST Target1‖DIGEST Sealer0‖DIGEST Sealer1‖DIGEST N)として解釈する。
3.ダイジェストD=HMAC[KM](R‖S1‖Target0‖Target1‖Sealer0‖Sealer1)。
4.(Target0!=PCR[0]‖Target1!=PCR[1])の場合に、S、Sourceに0をセットしてSSP_UNSEAL_ERRORを返す。
5.D!=Nの場合に、S、Sourceに0をセットしてSSP_UNSEAL_ERRORを返す。
6.そうでない場合に、SにS1、Sourceに{Sealer0、Sealer1}をセットしてSSP_SUCCESSを返す。
【0143】
Quote
定義
SSP_STATUS Quote (
[in] BITSTRING d−ext,
[out] PKSignature SigBlob
)
【0144】
パラメータ
Quote−Input ::= {
ordinal INTEGER,
d−ext Digest }
Quote−output ::= {
ordinal INTEGER,
status INTEGER,
sig−blob PKSignature }
【0145】
戻り値
SSP_SUCCESS
SSP_CRYPTO_ERROR
【0146】
コメント
Quote動作では、SSPに、外部から供給されるD−EXTおよび内部のPCR値の連結に署名するように指示する。
【0147】
アクセスポリシ
Allowed = FeatureEnable.MainEnable &
(FeatureEnable.UsePrivKey==All |
FeatureEnable.UsePrivKey==AuthSL
& SLKnown & AuthPCR[CurrentSL].UsePrivKey)
【0148】
処置
Quote動作では、下記の処置を実施する。
1.SSPは、DER(Distinguished Encoding Rules)符号化の下で、メッセージ型QuoteMessageの識別子D−EXTおよびPCRレジスタの内容の連結からなるメッセージMを形成する。
SEQUENCE {
message−typePKMessageType,
d−ext Digest,
pcr DigestPair
}
【0149】
2.SSPが、KQ、PRIVを使用して、PKCS #1 V2.1で指定されるRSASSA−PSS−SIGNのデフォルト実装に従って、Mに対する署名されたメッセージを生成する。この関数がエラーを返す場合には、SigBlobに0をセットしてSSP_CRYPTO_ERRORを返す。
【0150】
3.SSPが、SSP_SUCCESSおよび計算されたばかりの署名値を、SigBlobのsignatureAlgorithm=rSASSA−PSS−Default−Identifierと共に返す。
【0151】
PKUnseal
定義
SSP_STATUS PK_Unseal (
[in] PKCiphertext SealedBlob,
[out] SECRET Secret
)
【0152】
パラメータ
PkUnseal−Input ::= {
ordinal INTEGER,
pk−sealed−blob PKCiphertext }PkUnseal−output ::= {
ordinal INTEGER,
status INTEGER,
secret Secret }
【0153】
戻り値
SSP_SUCCESS
SSP_CRYPTO_ERROR
SSP_BAD_DATA_ERROR
【0154】
コメント
PKUnseal動作は、長さ416ビットで特定のフォーマットの暗号化されたblobをとる。blobを暗号解読し、暗号解読および復号が成功の場合には、416ビットメッセージを、秘密値および暗号解読された値を受け取ることを許可されるPCR値の連結として解釈する。
【0155】
現在のPCR値が、暗号化されたblobで指定される物と等しい場合に、秘密を明かし、そうでない場合には、エラーを返す。
【0156】
アクセスポリシ
Allowed = FeatureEnable.MainEnable &
(FeatureEnable.UsePrivKey==All |
FeatureEnable.UsePrivKey==AuthSL
& SLKnown & AuthPCR[CurrentSL].UsePrivKey)
【0157】
処置
PKUnseal動作では、下記の処置を実施する。
1.SSPが、pk−sealed−blobのAlgorithmIdentifierがsspV1BoundKeyであるかどうかをテストする。
【0158】
2.SSPが、PKCS #1 V2.1で指定されるRSAES−OAEP−DECRYPTのデフォルト実装に従ってSealedBlobを内部で暗号解読し、平文メッセージMを入手する。
【0159】
3.復号動作の出力が、「復号エラー」である場合には、Secretに0をセットしてSSP_BAD_DATA_ERRORを返す。
【0160】
4.そうでない場合には、回復されたメッセージMが、DER符号化の下で下記の形でなければならない。
SEQUENCE {
message−type PKMessageType,
secret Secret,
target Digest }
【0161】
さらに、Secretは、256ビット(=32オクテット)からならなければならず、targetは、160ビット(=20オクテット)からならなければならない。メッセージ型は、sspV1PKSealedMessageでなければならない。これらの条件のいずれかが満たされない場合には、Secretに0をセットしてSSP_BAD_DATA_ERRORを返す。そうでない場合には
1.target!=PCRの場合には、Secretに0をセットしてSSP_BAD_DATA_ERRORを返す。
2.target==PCRの場合には、SecretにsecretをセットしてSSP_SUCCESSを返す。
【0162】
束縛鍵動作
さらに、束縛鍵関数または束縛鍵動作の組を用いると、ローカルに暗号鍵を作成でき、証明できるようになり(たとえばSSPによって)、また、信頼されるリモート当事者から暗号鍵を通信できるようになる(たとえば、SSPに通信する)。
【0163】
束縛鍵機能性は、下記の特徴がある。
1.あるシステム層のサービスガード(たとえばSSP)が、束縛鍵に直接にアクセスする。各束縛鍵は、どのガードがその束縛鍵にアクセスできるかを判定する関連する条件を有する。条件は、暗黙のうちに表される。すなわち、束縛鍵は、ガードの1つまたはある組だけが束縛鍵を暗号解読する鍵を有するように暗号化される。
【0164】
2.束縛鍵へのアクセスを有するサービスガードは、上位層のプリンシパルに束縛鍵の使用を必要とする機能(たとえば、署名、MAC、暗号化、暗号解読)を公開する。各束縛鍵は、関連する使用条件を有することができ、その場合に、ガードは、関連する条件を満足する要求だけをサービスする。
【0165】
3.束縛鍵は、暗号的に保護されたデータ構造体(本明細書では束縛鍵blobとも称する)に含まれる。束縛鍵blobは、自己保護的であり、信頼される環境の外に保存することができる。
【0166】
束縛鍵は、下記の長所を有する。
・各プリンシパルがそれ自体の束縛鍵を有することを許可することができる。さらに、各プリンシパルが、任意の数の束縛鍵を有することを許可することができる。これによって、より細かい粒度のポリシ設定が可能になり、ある種のアプリケーションでのプライバシが改善される。したがって、ガードが、すべてのプリンシパルからの要求をサービスするのに使用される唯一のまたは少数の鍵だけを有するように制限する必要がない。
【0167】
・束縛鍵は、許可されるサービスガードの外に開示されない。したがって、プリンシパルを危うくすること(たとえば、プログラミングエラーに起因する)が、すべての束縛鍵を危うくすることにつながらない。一実施形態では、サービスガード(SSP)が、ハードウェアで実施される。この場合に、悪意のあるソフトウェアまたは不正なソフトウェアに起因して束縛鍵を危うくすることはできない。
【0168】
束縛鍵機能によって、暗号鍵の保護が提供される。束縛鍵を、リモート当事者が生成することができ、あるいは、GenBoundKeyコマンドを介してローカルに作成することができる。
【0169】
ローカルに作成される束縛鍵は、公開鍵のタイプ、生成される鍵のタイプ、生成中の機械の状態、および鍵がそれに束縛される(任意選択の)条件(たとえダイジェスト)の証拠をリモート当事者に与えるのに使用することができる「引用」証明書を発することができる。
【0170】
束縛鍵には、下記の要素の1つまたは複数が含まれる。
・鍵の使用法(たとえば、BoundSign、BoundQuote、BoundPkUnseal、BoundPkDecrypt、BoundMAC、BoundEncrypt、またはBoundDecrypt)。この要素は、任意選択である。含まれる場合には、この要素によって、束縛鍵が、識別される関数型での使用だけに制限される。
【0171】
・どの条件の下でこの束縛鍵を使用できるかを指定する条件要素(上で説明した物)(束縛鍵使用条件とも称する)。たとえば、条件を、プログラムの1つまたは複数のダイジェストの形で表すことができる。この場合に、束縛鍵は、ダイジェストが指定されるプログラムによって、またはそのプログラムの代わりにのみ使用されなければならない。条件の他の要素には、上で説明したように、時間制約、論理式、および実行可能プログラムが含まれる。この要素は、任意選択である。この要素が省略された場合には、あるデフォルト条件が適用される。たとえば、デフォルト条件では、束縛鍵へのアクセスを制限しないことができる(空の条件)。
【0172】
・鍵を計算できるようにする、暗号鍵(束縛鍵)または他のデータ。
【0173】
・その下で束縛鍵使用条件を変更できる1つまたは複数の条件(上で説明した物)。そのような変更を、束縛鍵移植とも称し、そのような条件を、移植条件と称する。この要素は、任意選択である。この要素が省略された場合には、あるデフォルト条件が適用される。たとえば、ダイジェスト(存在する場合に)を変更できないように、デフォルト条件を「常に偽」とすることができる。
【0174】
・その下で、束縛鍵に直接にアクセスできるサービスガードの組を変更できる1つまたは複数の条件。そのような変更を、束縛鍵エクスポートとも称し、そのような条件を、エクスポート条件と称する。この要素は任意選択である。
【0175】
束縛鍵の暗号的保護
束縛鍵は、上で説明したシールドストレージおよび立証関数(Seal、Unseal、PKUnseal)と同一の暗号要件を有する。具体的に言うと、ローカルに生成される束縛鍵は、上で説明したStore関数およびRetrieve関数の暗号実施形態のいずれかによって保護することができる。どの場合でも、束縛鍵の使用法を支配する異なる条件が破壊されていないことを保証するために、束縛鍵自体の信頼性が、保護され、全体的なデータ構造体の保全性が、保護される。前に説明したように、これは、対称暗号または公開鍵暗号化およびMACまたはディジタル証明のさまざまな組合せによって達成することができる。一実施形態では、束縛鍵データ構造体が、公開鍵によって暗号化される。
【0176】
関数
ある実施形態で、束縛鍵を、下記の関数の1つまたは複数で使用することができる。
・BoundSign
・BoundQuote
・BoundPkDecrypt
・BoundPkUnseal
・BoundMAC
・BoundEncrypt
・BoundDecrypt
・GenBoundKey
・BoundKeyMigrate
・BoundKeyExport
【0177】
これらの関数のそれぞれで、束縛鍵blob(データ構造体内のビットのグループ)および束縛鍵blobに含まれる鍵によって操作されるデータが、束縛鍵関数へのパラメータとして供給される。鍵使用法要素が束縛鍵blobに含まれる場合に、SSPによって、束縛鍵が正しい目的に使用されることが保証される(たとえば、型「BoundQuoteKey」を使用して作成された鍵は、BoundQuote動作でのみ使用することができる)。
【0178】
いくつかの実施形態で、束縛鍵が、公開/秘密鍵対の秘密鍵である。そのような実施形態では、束縛鍵blobに、秘密鍵を含めることができ、その代わりに、鍵を計算できるようにする何らかのデータを含めることができる。たとえば、秘密鍵の断片を、束縛鍵blobに含めることができ、この断片を、対応する公開鍵と共に使用して、公開/秘密鍵対の秘密鍵を再構成することができる。
【0179】
BoundSign動作では、束縛鍵を使用して署名されるデータ入力を受け取り、束縛鍵blobも受け取る。SSPが、束縛鍵blobから秘密署名鍵を回復し、回復された署名鍵を使用して、データ入力に対するディジタル署名されたメッセージを生成する。その後、SSPが、ディジタル署名されたメッセージを出力する。束縛鍵blobが、破壊されているか、束縛鍵使用条件があり、その条件が満足されない場合に、SSPは、動作を実行しない。したがって、秘密鍵をSSPが明かさずに、回復された秘密鍵を使用してデータ入力にディジタル署名することができる。
【0180】
BoundQuote動作では、署名されるデータおよび束縛鍵blobを入力として受け取る。SSPが、束縛鍵blobから秘密鍵を回復し、その後、回復された署名鍵を使用して、上で説明したQuote動作と同様に、この動作に入力されたデータおよび現在のPCR値(たとえば、BoundQuote動作を呼び出したプログラムの、ダイジェストなどの識別子)に対する署名を生成する。その後、SSPが、ディジタル署名されたメッセージを出力する。束縛鍵blobが、破壊されているか、束縛鍵使用条件があり、その条件が満足されない場合に、SSPは、動作を実行しない。一実施形態では、BoundQuote動作が、BoundSign動作に類似するが、BoundQuote動作で現在のPCR値が使用される点が異なる。
【0181】
BoundPkDecrypt動作では、暗号テキストおよび束縛鍵blobを入力として受け取る。SSPが、束縛鍵blobから秘密鍵を回復し、回復された秘密束縛鍵を使用して、入力暗号テキストを暗号解読する。その後、暗号解読されたデータが、BoundPkDecrypt動作によって出力される。束縛鍵blobが破壊されているか、束縛鍵使用条件があり、その条件が満足されない場合に、SSPは、動作を実行しない。
【0182】
BoundPkUnseal動作では、暗号テキストおよび束縛鍵blobを入力として受け取る。SSPが、束縛鍵blobから秘密鍵を回復し、その秘密鍵を使用して、上で説明したPKUnseal動作と同様に、入力暗号テキストを暗号解読する。暗号解読されたデータが、BoundPkUnseal動作によって出力される。束縛鍵blobが破壊されているか、束縛鍵使用条件があり、その条件が満足されない場合に、SSPは、動作を実行しない。
【0183】
BoundMAC動作では、それに対して束縛鍵を使用してMACが計算されるデータ入力を受け取り、束縛鍵blobも受け取る。束縛鍵blobが破壊されているか、束縛鍵使用条件があり、その条件が満足されない場合に、SSPは、動作を実行しない。そうでない場合には、SSPが、束縛鍵blobから束縛鍵を回復し、回復された束縛鍵を使用して、データ入力に対するメッセージ確認コード(MAC)を生成する。SSPが、計算されたMACを出力する。したがって、SSPが束縛鍵を明かさずに、回復された束縛鍵を使用してデータ入力のMACを計算することができる。
【0184】
BoundEncrypt動作では、束縛鍵を使用して暗号化されるデータ入力を受け取り、束縛鍵blobも受け取る。束縛鍵blobが破壊されているか、束縛鍵使用条件があり、その条件が満足されない場合に、SSPは、動作を実行しない。そうでない場合には、SSPが、束縛鍵blobから束縛鍵を回復し、回復された束縛鍵を使用して、データ入力を暗号化する。SSPが、計算された暗号テキストを出力する。したがって、SSPが束縛鍵を明かさずに、回復された束縛鍵を使用してデータ入力を暗号化することができる。
【0185】
BoundDecrypt動作では、束縛鍵を使用して暗号解読されるデータ入力を受け取り、束縛鍵blobも受け取る。束縛鍵blobが破壊されているか、束縛鍵使用条件があり、その条件が満足されない場合に、SSPは、動作を実行しない。そうでない場合には、SSPが、束縛鍵blobから束縛鍵を回復し、回復された束縛鍵を使用して、データ入力を暗号解読する。SSPが、計算された平文を出力する。したがって、SSPが束縛鍵を明かさずに、回復された束縛鍵を使用してデータ入力を暗号解読することができる。
【0186】
GenBoundKey動作では、SSPに、新しい束縛鍵を作成させる。新しい束縛鍵は、暗号鍵であり、新たに生成された鍵を含む新しい束縛鍵blobが生成される。束縛鍵blobに、必ず鍵全体が含まれるわけではないことを諒解されたい。たとえば、新たに生成される鍵が、公開/秘密鍵対である場合に、束縛鍵blobに秘密鍵だけを含めれば十分である場合がある。
【0187】
新しい束縛鍵blobは、1つまたは複数のガードに束縛され、このガードは、通常は、動作を実行しているSSPである(たとえば、上で説明したStore関数に似た形で新しい束縛鍵blobを暗号的に保護することによって、または、他の形で新しい束縛鍵blobを保護し、その結果、そのSSPだけがそれを検索できるようにすることによって)。GenBoundKey動作は、新しい束縛鍵blobのさまざまな態様を決定するパラメータを有することもでき、これらのパラメータを記述したデータが、ある保全性を保護される形で、新たに生成される秘密鍵に付加される(たとえば、データが、新しい束縛鍵blobの一部にされる)。このデータの例には、上で説明したように、移植条件、束縛鍵使用条件などが含まれる。その後、新しい束縛鍵blobが、GenBoundKeyによって出力される。
【0188】
一般に、束縛鍵は、対称鍵または公開鍵秘密鍵対を含む、任意の種類の暗号鍵とすることができる。正確な鍵のタイプは、それが使用される束縛鍵動作に依存する。たとえば、BoundMACに使用される束縛鍵は、通常は対称鍵であるが、BoundSignに使用される束縛鍵は、通常は公開/秘密署名鍵対である。鍵のタイプは、GenBoundKeyへのパラメータとして指定することができる。
【0189】
BoundKeyMigrateを用いると、束縛鍵の使用条件を変更できるようになる。SSPが、1つまたは複数の移植条件が満足されることを検証する。さまざまな条件のどれでも、BoundKeyMigrate動作と共に使用することができる(たとえば、Seal動作およびUnSeal動作に関して上で説明した条件に類似する、データを移植できる場合および/または相手を識別するすべての条件)。検証が成功裡に行われない場合には、動作が失敗する。検証が成功裡に行われる場合には、ガードが新しい束縛鍵blobを作り、その束縛鍵blob内で、束縛鍵使用条件が、要求された通りに変更されている。
【0190】
BoundKeyExport動作では、SSPに、束縛鍵に直接にアクセスできるガード(SSP)の組を変更するように指示する。SSPは、1つまたは複数の条件が満足されることを検証する。さまざまな条件のどれでも、BoundKeyExport動作と共に使用することができる(たとえば、Seal動作およびUnSeal動作に関して上で説明した条件に類似する、データをエクスポートできる場合および/または相手を識別するすべての条件)。検証が成功裡に行われない場合には、動作が失敗する。検証が成功裡に行われる場合には、SSPが、要求された通りに、束縛鍵blobに対する暗号保護を変更する。一実施形態では、SSPが、1つまたは複数の新しい鍵を用いて束縛鍵データ構造体を暗号化する。
【0191】
束縛鍵の作成者(ローカルであれリモートであれ)が指定できる条件のクラスの例が、束縛鍵を、特定の値を有するプログラムダイジェストを有するプリンシパルの代わりにのみ使用できることである。この場合に、束縛鍵動作によって、束縛鍵blobの内部検索の後に、要求元プリンシパルのダイジェストが検査され、そのダイジェストが束縛鍵blobで指定された物でない場合には、追加の計算を実行せずに、束縛鍵動作が失敗する。
【0192】
束縛鍵blobは、通常は、成功するために特定のSSPの一意の鍵を必要とする暗号動作によって、特定のSSPに結び付けられる、すなわち束縛される。そのような動作の例が、MAC関数、ディジタル署名関数、暗号化関数、および暗号化関数および保全性検証関数の組合せである。
【0193】
束縛鍵動作の例
一実施形態では、移植が、ローカル移植証明書または許可する実体によって発行されたエクスポート証明書によって許可される。ローカル移植証明書は、下記のデータ構造体に対するRSASSA−PSS−SIGN動作のデフォルトである。
Bound−migration−info ::= SEQUENCE {
source−bound−blob−digest Digest,
dest−PCR DigestPair
}
【0194】
ローカルSSP移植は、BoundKeyMigrate動作を使用して要求される。ローカル移植を許可するために、SSPに、この束縛鍵を参照するBound−migration−info構造体、および許可された実体によって供給されるこの構造体に対する正しく形成された証明書が供給される。移植許可が受入可能である場合には、SSPが、他の鍵属性のすべてを未変更のままにして、新しいPCRについて鍵を再束縛する(たとえば、鍵が元々PCR値に束縛されていない場合には、再束縛の場合にも束縛されない)。source−bound−blob−digestは、束縛鍵の暗号化された外部形のダイジェストである。
【0195】
リモート移植は、たとえば許可する実体によって署名された下記のBound−export−info構造体を用いて、BoundKcyExport関数を介して達成される
Bound export−info ::= SEQUENCE {
source−bound−blob−digest Digest,
dest−pubkey RSAPublicKey
dest−PCR DigestPair
}
【0196】
許可する実体は、鍵がエクスポート可能とマークされる場合に、鍵が再束縛されるデバイスまたはソフトウェアモジュールを完全に制御する。
【0197】
束縛鍵動作では、PKCiphertextが使用され、このPKCiphertextは、プラットフォーム公開暗号化鍵を用いて暗号化された、下記の型Bound−key−blobのシーケンスである。
Bound−key−blob ::= SEQUENCE {
message−type PKMessageType,
key−type Bound−key−type,
bound−to−PCR BOOL,
bound−to DigestPair,
migrateable Bool,
migrate−auth Digest,
exportable Bool,
export−auth Digest,
pub−key−digest Digest,
bound−key PKCompressedPrivateKey }
ここで
Bound−key−type ::= INTEGER {
BoundSignKey,
BoundQuoteKey
BoundDecryptKey,
BoundPkUnsealKey }
【0198】
bound−to−PCR要素は、束縛鍵を使用するために、bound−toダイジェストフィールドが、現在のPCR値と一致しなければならないかどうかを示すフラグである。{migrateable、migrate−auth}は、鍵が移植可能であるかどうかを示し、そうである場合に、どの権限の制御下であるかを示す(migrateableが偽の場合に、migrate−auth値は重要でない)。{exportable、export−auth}は、鍵がエクスポート可能であるかどうかを示し、そうである場合に、どの権限の制御下であるかを示す(exportableが偽の場合に、export−auth値は重要でない)。pub−key−digestは、PKCompressedPrivateKeyおよび秘密鍵の回復に必要な公開鍵の間の強い束縛を提供するための、対応する公開鍵のダイジェストである。
【0199】
一実施形態では、GenBoundKey関数を用いて束縛鍵がローカルに作成される場合に、SSPが、生成されたばかりの鍵のパブリックプロパティの詳細を示すデータ構造体、および束縛鍵エクスポート中のシステムの構成に対する署名を作成する。
Bound−key−pub−info ::= SEQUENCE {
message−type PKMessageType,// sspV1BoundKeyGenMessage
sig−nonce Digest,
key−type Bound−key−type,
bound−to−PCR BOOL,
bound−to DigestPair,
migrateable Bool,
migrate−auth Digest,
exportable Bool,
export−auth Digest,
creator−PCR DigestPair
bound−pub−key Digest }
【0200】
このデータ構造体内で、key−type、bound−to−PCR、bound−to、migrateable、migrate−auth、exportable、およびexport−authが、新たに生成された鍵の束縛鍵特性である。creator−PCRは、鍵がエクスポートされた時にアクティブであったPCRであり、bound−pub−keyは、新たに作成された公開鍵のダイジェストである。sig−nonceは、束縛鍵生成が要求された時に渡されたダイジェストサイズの値である。
【0201】
BoundSign、BoundQuote、BoundPkDecrypt、BoundPkUnseal、GenBoundKey、BoundKeyMigrate、およびBoundKeyExport動作の例示的定義を下に示す。
【0202】
BoundSign
定義
SSP_STATUS BoundSign (
[in] PKCiphertext BoundKeyBlob,
[in] RSAPublicKey PubPartOfBoundKey,
[in] BITSTRING DataToBeSigned
[out] PKSignature sig−blob
)
【0203】
パラメータ
BoundSign−Input ::= {
ordinal INTEGER,
bound−key BoundKeyBlob,
bound−pub−key RSAPublicKey,
data−to−be−signed OCTET STRING }
BoundSign−output ::= {
ordinal INTEGER,
status INTEGER,
sig−blob PKSignature }
【0204】
戻り値
SSP_SUCCESS
SSP_CRYPTO_ERROR
SSP_BAD_DATA_ERROR
SSP_UNSEAL_ERROR
【0205】
コメント
BoundSign動作では、型BoundSignKeyのBoundKeyBlobを含む型sspV1BoundKeyのPKciphertextおよび対応する公開鍵をとる。この条件のどちらかが満足されない場合、またはシーケンスを復号できない場合に、動作が失敗し、SSP_CRYPTO_ERRORが返される。
【0206】
bound−to−PCRがセットされる場合には、SSPが、現在のPCR値がBound−key−blobシーケンスで指定されていることを検査する。そうでない場合には、SSPが、SSP_CRYPTO_ERRORを返す。
【0207】
最後に、SSPが、暗号解読された秘密鍵を用いて入力メッセージに署名する。
【0208】
アクセスポリシ
Allowed = FeatureEnable.MainEnable &
(FeatureEnable.UsePrivKey==All |
FeatureEnable.UsePrivKey==AuthSL
& SLKnown & AuthPCR[CurrentSL].UsePrivKey)
【0209】
処置
BoundSign動作では、下記の処置を実施する。
1.SSPが、pk−sealed−blobのAlgorithmIdentifierがsspV1BoundKeyであるかどうかをテストする。
【0210】
2.SSPが、PKCS #1 V2.1で指定されるRSAES−OAEP−DECRYPTのデフォルト実装に従ってSealedBlobを内部で暗号解読し、平文メッセージMを入手する。
【0211】
3.復号動作の出力が、「復号エラー」である場合には、Secretに0をセットしてSSP_CRYPTO_ERRORを返す。
【0212】
4.そうでない場合には、回復されたメッセージMが、型BoundSignKeyのBound−key−blob形式のDER符号化でなければならない。そうでない場合には、SSPがSSP_CRYPTO_ERRORを発しなければならない。
【0213】
5.bound−to−PCRがTRUEの場合には、bound−toを現在のPCR値と比較しなければならない。これらの値が同一でない場合には、SSPが、SSP_CRYPTO_ERRORを出力しなければならない。
【0214】
6.SSPが、供給された関連する公開鍵を使用して束縛された秘密鍵を回復する。これに失敗する場合には、SSPがSSP_CRYPTO_ERRORを返す。成功の場合には、SSPが、回復された秘密鍵束縛鍵を使用して、PKCS #1 V2.1で指定されたRSASSA−PSS−SIGNのデフォルト実装に従って、入力メッセージDataToBeSignedに対する署名されたメッセージを生成する。この関数がエラーを返す場合には、SigBlobに0をセットしてSSP_CRYPTO_ERRORを返す。
【0215】
7.SSP_SUCCESSを返す。
【0216】
BoundQuote
定義
SSP_STATUS BoundQuote (
[in] PKCiphertext BoundKeyBlob,
[in] DIGEST DataToBeSigned
[out] PKSignature sig−blob
)
【0217】
パラメータ
BoundQuote−Input ::= {
ordinal INTEGER,
bound−key BoundKeyBlob,
bound−pub−key RSAPublicKey,
data−to−be−quoted Digest }
BoundQuote−output ::= {
ordinal INTEGER,
status INTEGER,
sig−blob PKSignature }
【0218】
戻り値
SSP_SUCCESS
SSP_CRYPTO_ERROR
SSP_BAD_DATA_ERROR
SSP_UNSEAL_ERROR
【0219】
コメント
BoundQuote動作では、型BoundQuoteKeyのBoundKeyBlobを含む型sspV1BoundKeyのPKciphertextをとる。これらの条件のどちらかが満たされない場合、またはシーケンスを復号できない場合に、動作が失敗し、SSP_CRYPTO_ERRORが返される。
【0220】
bound−to−PCRがセットされる場合には、SSPが、現在のPCR値がBound−key−blobシーケンスで指定されていることを検査する。そうでない場合には、SSPが、SSP_CRYPTO_ERRORを返す。
【0221】
最後に、SSPが、暗号解読された秘密鍵を用いて入力メッセージを引用する。
【0222】
アクセスポリシ
Allowed = FeatureEnable.MainEnable &
(FeatureEnable.UsePrivKey==All |
FeatureEnable.UsePrivKey==AuthSL
& SLKnown & AuthPCR[CurrentSL].UsePrivKey)
【0223】
処置
BoundQuote動作では、下記の処置を実施する。
1.SSPが、pk−sealed−blobのAlgorithmIdentifierがsspV1BoundKeyであるかどうかをテストする。
【0224】
2.SSPが、PKCS #1 V2.1で指定されるRSAES−OAEP−DECRYPTのデフォルト実装に従ってSealedBlobを内部で暗号解読し、平文メッセージMを入手する。
【0225】
3.復号動作の出力が、「復号エラー」である場合には、Secretに0をセットしてSSP_CRYPTO_ERRORを返す。
【0226】
4.そうでない場合には、回復されたメッセージMが、型BoundQuoteKeyのBound−key−blob形式のDER符号化でなければならない。そうでない場合には、SSPがSSP_CRYPTO_ERRORを発しなければならない。
【0227】
5.bound−to−PCRが真の場合には、bound−toを現在のPCR値と比較しなければならない。これらの値が同一でない場合には、SSPが、SSP_CRYPTO_ERRORを出力しなければならない。
【0228】
6.その後、SSPが、回復された秘密鍵断片および公開鍵を使用して、秘密鍵を再構成する。秘密鍵は、下記のように再構成することができる。一般に、RSA鍵は、数N=p×q(Nは、2つの素数pおよびqの積である)および2つの指数e(暗号化指数)およびd(暗号解読指数)からなる。Nおよびeが公開鍵を形成し、dが秘密鍵である。一般に、dは、Nと同じ長さである(たとえば2048ビット)。Nの因数分解が既知である場合(すなわち、pおよびqが既知の場合)に、秘密鍵dを、簡単に判定することができる。pおよびqが、Nの半分の長さにすぎないことに留意されたい。したがって、秘密鍵としてdを保存するのではなく、本発明ではpを保存する。したがって、公開鍵N、e、およびpを与えられれば、値q=N/pを計算でき、その後、pおよびqから値dを決定することができる。
【0229】
その後、この秘密鍵を使用して、上で定義されたQuote動作の指定に従って、入力メッセージDataToBeSignedおよび現在のPCR値に対する署名メッセージを生成する。この関数がエラーを返す場合には、SigBlobに0をセットしてSSP_CRYPTO_ERRORを返す。
【0230】
7.SSP_SUCCESSを返す。
【0231】
BoundPkDecrypt
定義
SSP_STATUS BoundPkDecrypt (
[in] PKCiphertext BoundKeyBlob,
[in] RSAPublicKey BoundPubKey,
[in] PKCiphertext DataToBeDecrypted,
[out] Secret decryptedData
)
【0232】
パラメータ
BoundPkDecrypt−Input ::= {
ordinal INTEGER,
bound−key BoundKeyBlob,
bound−pub−key RSAPublicKey,
pk−sealed−blob PKCiphertext }
BoundPkDecrypt−output ::= {
ordinal INTEGER,
status INTEGER,
d−blob Secret }
【0233】
戻り値
SSP_SUCCESS
SSP_UNSEAL_ERROR
SSP_CRYPTO_ERROR
SSP_BAD_DATA_ERROR
【0234】
コメント
BoundPkDecrypt動作では、型BoundDecryptKeyのBoundKeyBlobを含む型sspV1BoundKeyのPKciphertextをとる。これらの条件のどちらかが満たされない場合、またはシーケンスを復号できない場合に、動作が失敗し、SSP_CRYPTO_ERRORが返される。
【0235】
bound−to−PCRがセットされる場合には、SSPが、現在のPCR値がBound−key−blobシーケンスで指定されていることを検査する。そうでない場合には、SSPが、SSP_CRYPTO_ERRORを返す。
【0236】
最後に、SSPが、束縛blobから暗号解読された秘密鍵を用いて入力メッセージを暗号解読する。
【0237】
アクセスポリシ
Allowed = FeatureEnable.MainEnable &
(FeatureEnable.UsePrivKey==All |
FeatureEnable.UsePrivKey==AuthSL
& SLKnown & AuthPCR[CurrentSL].UsePrivKey)
【0238】
処置
BoundPkDecrypt動作では、下記の処置を実施する。
1.SSPが、pk−sealed−blobのAlgorithmIdentifierがsspV1BoundKeyであるかどうかをテストする。
【0239】
2.SSPが、PKCS #1 V2.1で指定されるRSAES−OAEP−DECRYPTのデフォルト実装に従ってSealedBlobを内部で暗号解読し、平文メッセージMを入手する。
【0240】
3.復号動作の出力が、「復号エラー」である場合には、Secretに0をセットしてSSP_CRYPTO_ERRORを返す。
【0241】
4.そうでない場合には、回復されたメッセージMが、型BoundDecryptKeyのBound−key−blob形式のDER符号化でなければならない。そうでない場合には、SSPがSSP_CRYPTO_ERRORを発しなければならない。
【0242】
5.bound−to−PCRが真の場合には、bound−toを現在のPCR値と比較しなければならず、これらの値が同一でない場合には、SSPが、SSP_CRYPTO_ERRORを出力しなければならない。
【0243】
6.SSPが、供給された公開鍵を使用して秘密鍵を回復する。秘密鍵は、上でBoundQuote動作に関して説明したように回復することができる。その後、回復された秘密束縛鍵を使用して、PKCS #1 V2.1で指定されるRSAES−OAEP−DECRYPTのデフォルト実装を使用してpk−sealed−blobを暗号解読し、平文メッセージMを入手する。
【0244】
7.SSPが、d−blobにMをセットする。
【0245】
8.SSP_SUCCESSを返す。
【0246】
BoundPkUnseal
定義
SSP_STATUS BoundPKUnseal (
[in] PKCiphertext BoundKeyBlob,
[in] RSAPublicKey BoundPubKey,
[in] PKCiphertext DataToBeUnsealed
[out] Secret decryptedData
)
【0247】
パラメータ
BoundPKUnseal−Input ::= {
ordinal INTEGER,
bound−key BoundKeyBlob,
bound−pub−key RSAPublicKey,
pk−sealed−blob PKCiphertext }
BoundPKUnseal−output ::= {
ordinal INTEGER,
status INTEGER,
d−blob Secret }
【0248】
戻り値
SSP_SUCCESS
SSP_UNSEAL_ERROR
SSP_CRYPTO_ERROR
SSP_BAD_DATA_ERROR
【0249】
コメント
BoundPkUnseal動作では、型BoundPKUnsealKeyのBoundKeyBlobを含む型sspV1BoundKeyのPKciphertextをとる。これらの条件のどちらかが満たされない場合、またはシーケンスを復号できない場合に、動作が失敗し、SSP_CRYPTO_ERRORが返される。
【0250】
bound−to−PCRがセットされる場合には、SSPが、現在のPCR値がBound−key−blobシーケンスで指定されていることを検査する。そうでない場合には、SSPが、SSP_CRYPTO_ERRORを返す。
【0251】
最後に、SSPが、束縛blobから暗号解読された秘密鍵と共にPK_Unsealを使用して、入力メッセージを封印解除する。
【0252】
アクセスポリシ
Allowed = FeatureEnable.MainEnable &
(FeatureEnable.UsePrivKey==All |
FeatureEnable.UsePrivKey==AuthSL
& SLKnown & AuthPCR[CurrentSL].UsePrivKey)
【0253】
処置
BoundPkUnseal動作では、下記のステップを実施する。
1.SSPが、pk−sealed−blobのAlgorithmIdentifierがsspV1BoundKeyであるかどうかをテストする。
【0254】
2.SSPが、PKCS #1 V2.1で指定されるRSAES−OAEP−DECRYPTのデフォルト実装に従ってSealedBlobを内部で暗号解読し、平文メッセージMを入手する。
【0255】
3.復号動作の出力が、「復号エラー」である場合には、Secretに0をセットしてSSP_CRYPTO_ERRORを返す。
【0256】
4.そうでない場合には、回復されたメッセージMが、型BoundDecryptKeyのBound−key−blob形式のDER符号化でなければならない。そうでない場合には、SSPがSSP_CRYPTO_ERRORを発しなければならない。
【0257】
5.bound−to−PCRが真の場合には、bound−toを現在のPCR値と比較しなければならない。これらの値が同一でない場合には、SSPが、SSP_CRYPTO_ERRORを出力しなければならない。
【0258】
6.SSPが、束縛鍵blobを使用して秘密鍵を再作成する。秘密鍵は、上でBoundQuote動作に関して説明したように回復することができる。その後、回復された秘密束縛鍵を使用し、PK_Unsealコマンドで説明したステップを使用して、pk−sealed−blobを封印解除する。
【0259】
7.封印解除されたblobで名前を指定されるPCRが、現在のPCRと一致しない場合には、SSPが、SSP_CRYPTO_ERRORを返す。
【0260】
8.そうでない場合には、SSPが、d−blobにMをセットする。
【0261】
9.SSP_SUCCESSを返す。
【0262】
GenBoundKey
定義
SSP_STATUS GenBoundKey (
[in] BoundKeyType KeyType,
[in] BOOL BoundToPcr,
[in] DIGEST BoundTo[2],
[in] BOOL migrateable,
[in] DIGEST migrationAuthority,
[in] BOOL exportable,
[in] DIGEST exportAuthority,
[in] DIGEST SigNonce,
[out] BoundKey bound−key,
[out] PKPublickey newPubKey,
[out] PKSignature boundKeyQuoteBlob)
【0263】
パラメータ
GenBoundKey−Input ::= {
ordinal INTEGER,
key−type Bound−key−type,
bound−to−pcr BOOL,
bound−to DigestPair,
migrateable BOOL,
migrate−auth Digest,
exportable BOOL,
export−auth Digest,
sig−nonce Digest
}
GenBoundKey−output ::= {
ordinal INTEGER,
status INTEGER,
bound−blob PKCiphertext,
bound−pub RSAPublicKey,
sig−blob PKSignature }
【0264】
戻り値
SSP_SUCCESS
SSP_BAD_DATA_ERROR
【0265】
コメント
GenBoundKey動作では、SSPに、新たに生成された秘密鍵を含む新しいbound−key blobを生成させる。bound−key blobは、SSP自体の公開鍵を用いて暗号化される。
【0266】
GenBoundKeyでは、新たに生成された鍵対の公開鍵、SSPがその鍵を生成したことを示す引用署名、その特性、および鍵が生成された時のPCR値も出力される。
【0267】
GenBoundKeyを呼び出す側は、作成される束縛鍵のタイプすなわち、それが署名、引用、BoundPkUnsealを用いる封印解除、またはBoundPkDecryptを用いる暗号解読のどれに使用されるかも示す。呼出し側は、束縛鍵をPCRに束縛しなければならないかどうかと、そうである場合に、それが束縛されるPCR値も指定する。
【0268】
アクセスポリシ
Allowed = FeatureEnable.MainEnable &
(FeatureEnable.UsePrivKey==All |
FeatureEnable.UsePrivKey==AuthSL
& SLKnown & AuthPCR[CurrentSL].UsePrivKey )
【0269】
処置
GenBoundKey動作では、下記の処置を実施する。
1.SSPが、新しい公開秘密RSA鍵対を生成する。SSPは、任意選択として、そうでなければSSPがアイドルである場合に鍵対を生成し、即時検索用に不揮発性メモリ内の鍵の小さいキャッシュに保存することができる。
【0270】
2.SSPが、新たに生成された秘密鍵、および呼出し側によって供給された束縛鍵のタイプおよび他のパラメータを含む束縛鍵構造体を内部で生成する。
【0271】
3.SSPが、プラットフォーム公開暗号化鍵を用いて束縛鍵blobを暗号化する。
【0272】
4.SSPが、新たに作成された鍵のプロパティ、鍵作成時のPCR値、および供給されたナンスを含むBound−key−pub−infoの署名されたblobを生成する。
【0273】
5.SSPが、暗号化された束縛鍵blob、新たに生成された公開鍵、および引用された鍵blobを出力する。
【0274】
6.SSP_SUCCESSを返す。
【0275】
BoundKeyMigrate
定義
SSP_STATUS BoundKeyMigrate (
[in] PKCiphertext BoundKeyBlob,
[in] RSAPublicKey PubPartOfBoundKey,
[in] BOUND_MIGRATION_INFO MigrationInfo,
[in] RSA_SIG SigOnMigrationInfo)
【0276】
パラメータ
GenBoundKey−Input ::= {
ordinal INTEGER,
migration−info Bound−migration−info,
migration−pubkey RSAPublicKey,
migration−auth PKSignature}
GenBoundKey−output ::= {
ordinal INTEGER,
status INTEGER,
re−bound−blob PKCiphertext,}
【0277】
戻り値
SSP_SUCCESS
SSP_BAD_DATA_ERROR
【0278】
コメント
BoundKeyMigrate動作では、SSPに、制御された形で鍵を異なるPCR値に再束縛するように指示する。ローカルまたはリモートの元の鍵作成者が、移植許可実体の名前を指定する。移植可能とマークされた束縛鍵だけを移植することができ、これらの束縛鍵は、適当に署名されたBound−migration−info構造体がSSPに供給される場合に限って移植される。適当に署名されたとは、束縛鍵blobにそのダイジェストが含まれる公開鍵を用いる署名を意味する。他の束縛鍵属性は変更されない。
【0279】
アクセスポリシ
Allowed = FeatureEnable.MainEnable &
(FeatureEnable.UsePrivKey==All |
FeatureEnable.UsePrivKey==AuthSL
& SLKnown & AuthPCR[CurrentSL].UsePrivKey)
【0280】
処置
BoundKeyMigrate動作では、下記の処置を実施する。
1.SSPが、bound−key構造体を内部で暗号解読し、Bound−key−blobとして解釈する。復号に失敗する場合には、SSPがSSP_CRYPTO_ERRORを返す。
【0281】
2.SSPが、Bound−export−infoが同一の鍵を参照すること、署名が正しく形成されていること、および署名者の公開鍵のダイジェストが、Bound−key−blobの「migrateable」フィールドで名前を指定されていることを検証する。
【0282】
3.SSPが、鍵が移植可能であることを検査する。そうでない場合には、SSPがSSP_CRYPO_ERRORを返す。
【0283】
4.鍵がPCRに束縛される場合に、SSPが、現在のPCRが鍵blobで名前を指定されていることを検査する。
【0284】
5.SSPが、PCR値を、Bound−migration−infoのdest−PCRフィールドで名前を指定された物に置換する。
【0285】
6.SSPが、束縛鍵blobを再暗号化し、再暗号化された構造体をエクスポートする。
【0286】
7.SSP_SUCCESSを返す。
【0287】
BoundKeyExport
定義
SSP_STATUS BoundKeyExport (
[in] PKCiphertext BoundKeyBlob,
[in] RSAPublicKey PubPartOfBoundKey,
[in] BOUND_EXPORT_INFO ExportInfo,
[in] RSA_SIG SigOnExportInfoInfo,
[out] PKCipherText ReBoundBlob)
【0288】
パラメータ
BoundKeyExport−Input ::= {
ordinal INTEGER,
bound−key PKCipherText,
bound−pub−key RSAPublicKey,
export−info Bound−export−info,
export−auth PKSignature,
}
GenBoundKey−output ::= {
ordinal INTEGER,
status INTEGER,
re−bound−blob PKCiphertext,
}
【0289】
戻り値
SSP_SUCCESS
SSP_BAD_DATA_ERROR
【0290】
コメント
BoundKeyExport動作では、SSPに、束縛鍵の秘密部分を、制御された形で、ソースデバイスの束縛鍵との一貫性がある形でリモート実体にエクスポートするように指示する。ローカルまたはリモートの元の鍵作成者が、エクスポート許可実体の名前を指定する。エクスポート可能とマークされた束縛鍵だけをエクスポートすることができ、これらの束縛鍵は、適当に署名されたBound−export−info構造体がSSPに供給される場合に限ってエクスポートされる。適当に署名されたとは、元の束縛鍵blobにそのダイジェストが含まれる公開鍵を用いる署名を意味する。BoundKeyExportを用いると、適当に許可された呼出し側が、鍵をそれに再束縛しなければならないターゲット実体の公開鍵およびPCR値を指定できるようになる。外部実体がSSPであるという特別な要件はないが、新たに束縛されるblobは、リモートSSPがエクスポートされた束縛鍵を直接に消費できるようにするために、束縛鍵の慣習に従う。
【0291】
アクセスポリシ
Allowed = FeatureEnable.MainEnable &
(FeatureEnable.UsePrivKey==All |
FeatureEnable.UsePrivKey==AuthSL
& SLKnown & AuthPCR[CurrentSL].UsePrivKey)
【0292】
処置
BoundKeyExport動作では、下記の処置を実施する。
1.SSPが、bound−key構造体を内部で暗号解読し、Bound−key−blobとして解釈する。復号に失敗する場合には、SSPがSSP_CRYPTO_ERRORを返す。
【0293】
2.SSPが、Bound−export−infoが同一の鍵を参照すること、署名が正しく形成されていること、および署名者の公開鍵のダイジェストが、Bound−key−blobの「exportable」フィールドで名前を指定されていることを検証する。
【0294】
3.SSPが、鍵がエクスポート可能であることを検査する。そうでない場合には、SSPがSSP_CRYPO_ERRORを返す。
【0295】
4.鍵がPCRに束縛される場合に、SSPが、現在のPCRが鍵blobで名前を指定されていることを検査する。
【0296】
5.SSPが、元のBound−key−blob構造体のパラメータおよびBound−export−infoで供給された新しいPCR値を含む新しいBound−key−blob構造体を内部で生成する。他のすべてのパラメータは、同一のままになる。
【0297】
6.SSPが、Bound−export−infoで供給された公開暗号化鍵を用いて新しいBound−key−blobを暗号化する。
【0298】
7.新たに束縛された鍵をエクスポートする。
【0299】
8.SSP_SUCCESSを返す。
【0300】
一般的なコンピュータ環境
図12に、本明細書で説明する技法を実施するのに使用することができる、汎用コンピュータ環境400を示す。コンピュータ環境400は、コンピューティング環境の1つの例にすぎず、コンピュータアーキテクチャおよびネットワークアーキテクチャの使用の範囲または機能性に対する制限を暗示することを意図された物ではない。また、コンピュータ環境400を、例示的なコンピュータ環境400に示された構成要素の任意の1つまたは組合せに関する依存性または要件を有する物と解釈してはならない。
【0301】
コンピュータ環境400には、コンピュータ402の形の汎用コンピューティングデバイスが含まれる。コンピュータ402は、たとえば、図1のプリンシパル102およびガード104または図2の層を実施するのに使用することができる。コンピュータ402の構成要素には、1つまたは複数のプロセッサまたは処理ユニット404(任意選択として1つまたは複数のセキュリティプロセッサまたはセキュリティコロセッサ(SSPなど)および/または1つまたは複数の暗号プロセッサまたは暗号コプロセッサを含む)、システムメモリ406、プロセッサ404を含むさまざまなシステム構成要素をシステムメモリ406に結合するシステムバス408を含めることができるが、これらに制限はされない。
【0302】
システムバス408は、メモリバスまたはメモリコントローラ、周辺バス、accelerated graphics port、およびさまざまなバスアーキテクチャのいずれかを使用するプロセッサバスまたはローカルバスを含む、複数のタイプのバスアーキテクチャのいずれかの1つまたは複数を表す。たとえば、そのようなアーキテクチャに、Industry Standard Architecture(ISA)バス、マイクロチャネルアーキテクチャ(MCA)バス、Enhanced ISA(EISA)バス、Video Electronics Standards Association(VESA)ローカルバス、および、メザニンバスとも称するPeripheral Component Interconnects(PCI)バスを含めることができる。
【0303】
コンピュータ402には、通常は、さまざまなコンピュータ可読媒体が含まれる。そのような媒体は、コンピュータ402によってアクセス可能な任意の使用可能な媒体とすることができ、そのような媒体には、揮発性媒体および不揮発性媒体、取外し可能媒体および取外し不能媒体の両方が含まれる。
【0304】
システムメモリ406には、ランダムアクセスメモリ(RAM)410などの揮発性メモリ、および/または読取専用メモリ(ROM)412などの不揮発性メモリの形のコンピュータ可読媒体が含まれる。起動中などにコンピュータ402内の要素の間で情報を転送するのを助ける基本ルーチンを含む基本入出力システム(BIOS)414が、ROM412に保存される。RAM410には、通常は、プロセッサ404から即座にアクセス可能かつ/またはプロセッサ404によって現在操作されるデータおよび/またはプログラムモジュールが含まれる。
【0305】
コンピュータ402には、他の取外し可能/取外し不能、揮発性/不揮発性のコンピュータ記憶媒体も含めることができる。たとえば、図12に、取外し不能不揮発性磁気媒体(図示せず)から読み取り、それに書き込むハードディスクドライブ416、取外し可能不揮発性磁気ディスク420(たとえば「フロッピー(登録商標)ディスク」)から読み取り、それに書き込む磁気ディスクドライブ418、およびCD−ROM、DVD−ROM、または他の光学媒体などの取外し可能不揮発性光ディスク424から読み取り、および/またはそれに書き込む光ディスクドライブ422が示されている。ハードディスクドライブ416、磁気ディスクドライブ418、および光ディスクドライブ422は、それぞれ、1つまたは複数のデータ媒体インターフェース426によってシステムバス408に接続される。その代わりに、ハードディスクドライブ416、磁気ディスクドライブ418、および光ディスクドライブ422を、1つまたは複数のインターフェース(図示せず)によってシステムバス408に接続することができる。
【0306】
ディスクドライブおよびそれに関連するコンピュータ可読媒体によって、コンピュータ402の、コンピュータ可読命令、データ構造体、プログラムモジュール、および他のデータの不揮発性ストレージが提供される。この例には、ハードディスク416、取外し可能磁気ディスク420、および取外し可能光ディスク424が示されているが、磁気カセットまたは他の磁気記憶装置、フラッシュメモリカード、CD−ROM、ディジタル多用途ディスク(DVD)または他の光ストレージ、ランダムアクセスメモリ(RAM)、読取専用メモリ(ROM)、電気消去可能プログラマブル読取専用メモリ(EEPROM)、および類似物などの、コンピュータによってアクセス可能なデータを保存できる他のタイプのコンピュータ可読媒体を使用して、例示的なコンピューティングシステムおよび環境を実施することもできることを諒解されたい。
【0307】
たとえばオペレーティングシステム426、1つまたは複数のアプリケーションプログラム428、他のプログラムモジュール430、およびプログラムデータ432を含む、任意の数のプログラムモジュールを、ハードディスク416、磁気ディスク420、光ディスク424、ROM412、および/またはRAM410に保存することができる。そのようなオペレーティングシステム426、1つまたは複数のアプリケーションプログラム428、他のプログラムモジュール430、およびプログラムデータ432のそれぞれ(またはこれらのある組合せ)によって、分散ファイルシステムをサポートする常駐構成要素のすべてまたは一部を実施することができる。
【0308】
ユーザは、キーボード434およびポインティングデバイス436(たとえば「マウス」)などの入力装置を介してコンピュータ402にコマンドおよび情報を入力することができる。他の入力装置438(具体的には図示せず)に、マイクロホン、ジョイスティック、ゲームパッド、衛星放送送受信用パラボラアンテナ、シリアルポート、スキャナ、および/または類似物を含めることができる。これらおよび他の入力装置は、システムバス408に結合される入出力インターフェース440を介して処理ユニット404に接続されるが、パラレルポート、ゲームポート、またはuniversal serial bus(USB)などの他のインターフェースおよびバス構造によって接続することもできる。
【0309】
モニタ442または他のタイプの表示装置も、ビデオアダプタ444などのインターフェースを介してシステムバス408に接続することができる。モニタ442に加えて、他の出力周辺装置に、スピーカ(図示せず)およびプリンタ446など、入出力インターフェース440を介してコンピュータ402に接続することができる構成要素を含めることができる。
【0310】
コンピュータ402は、リモートコンピューティングデバイス448などの1つまたは複数のリモートコンピュータへの論理接続を使用して、ネットワーク化された環境で動作することができる。たとえば、リモートコンピューティングデバイス448を、パーソナルコンピュータ、ポータブルコンピュータ、サーバ、ルータ、ネットワークコンピュータ、ピアデバイスまたは他の一般的なネットワークノード、および類似物とすることができる。リモートコンピューティングデバイス448は、コンピュータ402に関して本明細書で説明する要素および特徴の多くまたはすべてを含めることができるポータブルコンピュータとして図示されている。
【0311】
コンピュータ402とリモートコンピュータ448の間の論理接続は、ローカルエリアネットワーク(LAN)450および一般的な広域ネットワーク(WAN)452として図示されている。そのようなネットワーキング環境は、オフィス、会社全体のコンピュータネットワーク、イントラネット、およびインターネットでありふれた物である。
【0312】
LANネットワーキング環境で実施される場合に、コンピュータ402は、ネットワークインターフェースまたはネットワークアダプタ454を介してローカルネットワーク450に接続される。WANネットワーキング環境で実施される場合に、コンピュータ402に、通常は、広域ネットワーク452を介する通信を確立するための、モデム456または他の手段が含まれる。モデム456は、コンピュータ402の内蔵または外付けとすることができるが、入出力インターフェース440または他の適当な機構を介してシステムバス408に接続することができる。図示されたネットワーク接続が、例示的であることと、コンピュータ402および448の間で通信リンクを確立する他の手段を使用できることを諒解されたい。
【0313】
コンピューティング環境400と共に図示された物などのネットワーク化された環境では、コンピュータ402に関して図示されたプログラムモジュールまたはその一部を、リモートメモリストレージデバイスに保存することができる。例として、リモートアプリケーションプログラム458が、リモートコンピュータ448の記憶装置に常駐する。例示のために、アプリケーションプログラムおよび、オペレーティングシステムなどの他の実行可能プログラムコンポーネントが、この図では別個のブロックとして図示されているが、そのようなプログラムおよびコンポーネントが、さまざまな時にコンピューティング装置402の異なるストレージ構成要素に常駐し、コンピュータのデータプロセッサによって実行されることを理解されたい。
【0314】
さまざまなモジュールおよび技法を、プログラムモジュールなど、1つまたは複数のコンピュータまたは他の装置によって実行されるコンピュータ実行可能命令の全般的な文脈で本明細書で説明することができる。一般に、プログラムモジュールには、特定の作業を実行するか特定の抽象データ型を実施する、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造体などが含まれる。通常、プログラムモジュールの機能性は、さまざまな実施形態で望みに応じて組み合わせるか分散させることができる。
【0315】
これらのモジュールおよび技法の実施形態を、何らかの形のコンピュータ可読媒体に保存するか、それを介して伝送することができる。コンピュータ可読媒体は、コンピュータによってアクセス可能なすべての使用可能な媒体とすることができる。制限ではなく例として、コンピュータ可読媒体に、「コンピュータ記憶媒体」および「通信媒体」を含めることができる。
【0316】
「コンピュータ記憶媒体」には、コンピュータ可読命令、データ構造体、プログラムモジュール、または他のデータなどの情報の記憶のためのあらゆる方法または技術で実施される、揮発性および不揮発性の、取外し可能および取外し不能の媒体が含まれる。コンピュータ可読媒体には、RAM、ROM、EEPROM、フラッシュメモリまたは他のメモリ技術、CD−ROM、ディジタル多用途ディスク(DVD)または他の光学記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置または他の磁気記憶装置、または、所望の情報を保存するのに使用でき、コンピュータによってアクセスすることができる他の媒体が含まれるが、これに制限はされない。
【0317】
「通信媒体」は、通常は、搬送波または他のトランスポート機構など、変調されたデータ信号内でコンピュータ可読命令、データ構造体、プログラムモジュール、または他のデータを実施する。通信媒体に、情報配送媒体も含まれる。用語「変調されたデータ信号」は、信号内に情報を符号化する形でその特性の1つまたは複数を設定または変更される信号を意味する。制限ではなく例として、通信媒体に、有線ネットワークまたは直接配線接続などの有線媒体と、音響、RF、赤外線、および他の無線媒体などの無線媒体が含まれる。上記の任意の組合せも、コンピュータ可読媒体の範囲に含まれる。
【0318】
上の説明では、構造的特徴および/または方法論的動作に固有の言語を使用したが、請求項で定義される発明が、記載された特定の特徴または動作に制限されないことを理解されたい。そうではなく、特定の特徴および動作は、本発明の実施の例示的形態として開示される。
【図面の簡単な説明】
【図1】例示的なアクセス制御モデルを示す図である。
【図2】4つの異なる階層層を使用する例示的なアクセス制御環境を示す図である。
【図3】Seal動作を実施する例示的なプロセスを示す流れ図である。
【図4】UnSeal動作を実施する例示的なプロセスを示す流れ図である。
【図5】Store動作を実施する例示的なプロセスを示す流れ図である。
【図6】Seal動作を実施する例示的なプロセスを示す流れ図である。
【図7】Quote動作を実施する例示的なプロセスを示す流れ図である。
【図8】Verify動作を実施する例示的なプロセスを示す流れ図である。
【図9】PKUnseal動作を実施する例示的なプロセスを示す流れ図である。
【図10】PKSeal動作を実施する例示的なプロセスを示す流れ図である。
【図11】GenSeal動作を実施する例示的なプロセスを示す流れ図である。
【図12】本明細書で説明する技法を実施するのに使用することができる、汎用コンピュータ環境を示す図である。
【符号の説明】
200 Seal動作を実施する例示的なプロセス
220 UnSeal動作を実施する例示的なプロセス
250 Store動作を実施する例示的なプロセス
270 Seal動作を実施する例示的なプロセス
300 Quote動作を実施する例示的なプロセス
320 Verify動作を実施する例示的なプロセス
340 PKUnseal動作を実施する例示的なプロセス
360 PKSeal動作を実施する例示的なプロセス
380 GenSeal動作を実施する例示的なプロセス
Claims (75)
- コンピューティングデバイス内で実施される方法であって、
呼出し側プログラムからデータを受け取るステップと、
公開鍵暗号化を使用して、前記データを含む暗号テキストを生成するステップであって、前記暗号テキストが、多数のターゲットプログラムのどれもが前記暗号テキストからデータを入手することができるようになる形で生成されるステップと
を含むことを特徴とする方法。 - 前記多数のターゲットプログラムが、前記呼出し側プログラムによって識別されることを特徴とする請求項1に記載の方法。
- さらに、前記呼出し側プログラムに前記暗号テキストを返すステップを含むことを特徴とする請求項1に記載の方法。
- 前記データは、暗号鍵を含むことを特徴とする請求項1に記載の方法。
- 前記多数のターゲットプログラムは、複数のターゲットプログラムを含むことを特徴とする請求項1に記載の方法。
- 前記多数のターゲットプログラムのそれぞれが、暗号ハッシュ関数を前記ターゲットプログラムに適用することによって生成されるダイジェスト値によって識別されることを特徴とする請求項1に記載の方法。
- 前記多数のターゲットプログラムは、前記呼出し側プログラムを含むことを特徴とする請求項1に記載の方法。
- 前記データを受け取るステップは、PKSeal動作の一部として前記データを受け取るステップを含むことを特徴とする請求項1に記載の方法。
- コンピューティングデバイスで実施される方法であって、
呼出し側プログラムからビットストリングを受け取るステップと、
前記呼出し側プログラムは前記ビットストリングの暗号テキストで暗号化されたデータにアクセスすることを許可される多数のプログラムの1つであるかどうかを判定するために前記呼出し側プログラムの識別子を検査するステップと、
前記呼出し側プログラムは前記データにアクセスすることを許可される多数のプログラムの1つである場合に限って、公開鍵暗号解読を使用して暗号解読された前記データを前記呼出し側プログラムに返すステップと
を含むことを特徴とする方法。 - 前記データは、暗号鍵を含むことを特徴とする請求項9に記載の方法。
- 前記検査するステップは、
前記ビットストリングから前記データへのアクセスを許可されるターゲットプログラムの識別子を入手するステップと、
前記ターゲットプログラムの前記識別子は前記呼出し側プログラムの前記識別子と同一であるかどうかを検査するステップと、
前記ターゲットプログラムの前記識別子は前記呼出し側プログラムの前記識別子と同一である場合に、前記呼出し側プログラムは前記データへのアクセスを許可される前記多数のターゲットプログラムの1つであると判定するステップと
を含むことを特徴とする請求項9に記載の方法。 - 前記検査するステップは、
前記データへのアクセスを許可される前記多数のターゲットプログラムの識別子を前記ビットストリングから入手するステップと、
前記呼出し側プログラムの前記識別子は前記多数のターゲットプログラムの前記識別子の少なくとも1つと同一であるかどうかを検査するステップと、
前記呼出し側プログラムの前記識別子は前記多数のターゲットプログラムの前記識別子の少なくとも1つと同一である場合に、前記呼出し側プログラムは前記データへのアクセスを許可されると判定するステップと、
前記呼出し側プログラムの前記識別子は前記多数のターゲットプログラムの前記識別子のいずれとも同一でない場合に、前記呼出し側プログラムは前記データへのアクセスを許可されないと判定するステップと
を含むことを特徴とする請求項9に記載の方法。 - 前記呼出し側プログラムの前記識別子は、暗号ハッシュ関数を前記ターゲットプログラムに適用することによって生成されたダイジェスト値を含むことを特徴とする請求項9に記載の方法。
- 前記ビットストリングを受け取るステップは、PKUnseal動作の一部として前記ビットストリングを受け取るステップを含むことを特徴とする請求項9に記載の方法。
- コンピューティングデバイスの1つまたは複数のプロセッサによって実行される場合に、前記1つまたは複数のプロセッサに、
呼出し側プログラムからデータを受け取るステップと、
公開鍵暗号化を使用して、データを含む暗号テキストを生成するステップであって、前記暗号テキストが、多数のターゲットプログラムのどれもが前記暗号テキストから前記データを入手することができるようになる形で生成されるステップと、
前記暗号テキストを生成した後に、別の呼出し側プログラムからビットストリングを受け取るステップと、
前記別の呼出し側プログラムは前記ビットストリングの前記暗号テキストで暗号化されたデータにアクセスすることを許可される前記多数のターゲットプログラムの1つであるかどうかを判定するために前記別の呼出し側プログラムの識別子を検査するステップと、
前記別の呼出し側プログラムは前記データにアクセスすることを許可される前記多数のターゲットプログラムの1つである場合に限って、公開鍵暗号解読を使用して暗号解読された前記データを前記別の呼出し側プログラムに返すステップと
を行わせる複数の命令をその上に保存することを特徴とする1つまたは複数のコンピュータ可読媒体。 - 前記呼出し側プログラムおよび前記別の呼出し側プログラムは同一プログラムであることを特徴とする請求項15に記載の1つまたは複数のコンピュータ可読媒体。
- 前記複数の命令は、さらに、前記1つまたは複数のプロセッサに、BoundSign動作、BoundQuote動作、BoundDecrypt動作、BoundPkUnseal動作、GenBoundKey動作、BoundKeyMigrate動作、およびBoundKeyExport動作を実施させることを特徴とする請求項15に記載の1つまたは複数のコンピュータ可読媒体。
- PKSeal動作を実施する複数の命令をその上に保存することを特徴とする1つまたは複数のコンピュータ可読媒体であって、前記複数の命令が、コンピューティングデバイスの1つまたは複数のプロセッサによって実行される場合に、前記1つまたは複数のプロセッサに、
暗号化されるデータを入手するステップと、
データおよび前記データを暗号解読できるようにするプログラムの識別子の組を公開鍵暗号化を使用して暗号化するステップと
を行わせることを特徴とする1つまたは複数のコンピュータ可読媒体。 - 前記プログラムの前記識別子は、暗号ハッシュ関数を使用して生成された前記プログラムのダイジェストを含むことを特徴とする請求項18に記載の1つまたは複数のコンピュータ可読媒体。
- 識別子の前記組は、前記PKSeal動作の呼出し側の識別子を含むことを特徴とする請求項18に記載の1つまたは複数のコンピュータ可読媒体。
- PKUnseal動作を実施する複数の命令をその上に保存することを特徴とする1つまたは複数のコンピュータ可読媒体であって、前記複数の命令が、コンピューティングデバイスの1つまたは複数のプロセッサによって実行される場合に、前記1つまたは複数のプロセッサに、
呼出し側プログラムから暗号テキストを含むビットストリングを受け取るステップと、
平文を生成するために、公開鍵暗号解読を使用して前記暗号テキストを暗号解読するステップと、
前記呼出し側プログラムはそれに対して前記平文データを明かすことができる識別されたプログラムの組の1つである場合に限って、前記呼出し側プログラムに前記平文データを返すステップと
を行わせることを特徴とする1つまたは複数のコンピュータ可読媒体。 - 前記命令が、さらに、前記1つまたは複数のプロセッサに、
暗号ハッシュ関数を使用して前記呼出し側プログラムのダイジェストを生成するステップと、
前記呼出し側プログラムの前記ダイジェストを前記ビットストリング内で識別されるダイジェストの組と比較するステップと、
前記呼出し側プログラムの前記ダイジェストは前記ビットストリング内で識別されるダイジェストの前記組の少なくとも1つと同一である場合に限って、前記呼出し側プログラムに前記平文テキストを返すステップと
を行わせることを特徴とする請求項21に記載の1つまたは複数のコンピュータ可読媒体。 - 前記ビットストリング内で識別される1つまたは複数のダイジェストは、前記暗号テキストの一部であることを特徴とする請求項22に記載の1つまたは複数のコンピュータ可読媒体。
- 呼出し側プログラムからデータを受け取る手段と、
公開鍵暗号化を使用して、前記データを含む暗号テキストを生成する手段であって、前記暗号テキストが、複数のターゲットプログラムのどれもが前記暗号テキストから前記データを入手することができるようになる形で生成される、生成する手段と
を含むことを特徴とするシステム。 - 呼出し側プログラムからビットストリングを受け取る手段と、
前記呼出し側プログラムは前記ビットストリングの暗号テキストで暗号化されたデータにアクセスすることを許可されるかどうかを判定するために、前記呼出し側プログラムの識別子を検査する手段と、
前記呼出し側プログラムは前記データにアクセスすることを許可される前記複数のプログラムの1つである場合に限って、公開鍵暗号解読を使用して暗号解読された前記データを前記呼出し側プログラムに返す手段と
を含むことを特徴とするシステム。 - コンピューティングデバイスの1つまたは複数のプロセッサによって実行される場合に、前記1つまたは複数のプロセッサに、
封印されるデータを識別するステップと、
PKSeal動作への入力として前記データを渡し、前記データを封印解除するために満足されなければならない条件を識別して、前記PKSeal動作を呼び出すステップと
を行わせる複数の命令をその上に保存することを特徴とする1つまたは複数のコンピュータ可読媒体。 - 前記命令は、さらに、前記1つまたは複数のプロセッサに、前記PKSeal動作に応答して、暗号化された形の前記データを含む暗号テキストを受け取るステップを行わせ、前記データが、公開鍵暗号化を使用して暗号化されることを特徴とする請求項26に記載の1つまたは複数のコンピュータ可読媒体。
- 前記条件は、前記データの封印解除を許可される多数のターゲットプログラムの識別子を含むことを特徴とする請求項26に記載の1つまたは複数のコンピュータ可読媒体。
- 前記命令は、さらに、前記1つまたは複数のプロセッサに、前記多数のターゲットプログラムの識別子を前記PKSeal動作へのもう1つの入力として渡すステップを行わせることを特徴とする請求項28に記載の1つまたは複数のコンピュータ可読媒体。
- 前記多数のターゲットプログラムのそれぞれについて、前記ターゲットプログラムの前記識別子は、前記ターゲットプログラムに暗号ハッシュ関数を適用することによって生成されるダイジェストを含むことを特徴とする請求項29に記載の1つまたは複数のコンピュータ可読媒体。
- 前記PKSeal動作を呼び出すプログラムは、前記多数のターゲットプログラムの1つであることを特徴とする請求項28に記載の1つまたは複数のコンピュータ可読媒体。
- 前記条件の1つは、前記データを封印解除できる場合の時間制約を含むことを特徴とする請求項26に記載の1つまたは複数のコンピュータ可読媒体。
- 前記条件の1つは、評価されなければならない論理式を含み、前記論理式が真と評価される場合に限って、前記データを封印解除することができることを特徴とする請求項26に記載の1つまたは複数のコンピュータ可読媒体。
- 前記条件の1つは、実行されなければならないプログラムを含み、前記プログラムの実行は真の表示を返す場合に限って、前記データを封印解除することができることを特徴とする請求項26に記載の1つまたは複数のコンピュータ可読媒体。
- コンピューティングデバイスの1つまたは複数のプロセッサによって実行される場合に、前記1つまたは複数のプロセッサに、
ビットストリングを暗号解読させるために、PKUnseal動作への入力として前記ビットストリングを渡して前記PKUnseal動作を呼び出すステップと、
複数の命令は前記ビットストリングの封印解除を許可される多数のプログラムの1つである場合に限って、前記PKUnseal動作の呼出しに応答して、前記暗号解読されたビットストリングの少なくとも一部を受け取るステップであって、前記データが、公開鍵暗号解読を使用して暗号解読されるステップと
を行わせる前記複数の命令をその上に保存することを特徴とする1つまたは複数のコンピュータ可読媒体。 - 前記複数の命令に暗号ハッシュ関数を適用することによって生成されるダイジェストは、前記ビットストリング内で暗号化されたデータが前にPKSeal動作を使用して封印された時に呼出し側プログラムによって識別された1つまたは複数のダイジェストと同一である場合に、前記複数の命令が、前記ビットストリングを封印解除することを許可されることを特徴とする請求項35に記載の1つまたは複数のコンピュータ可読媒体。
- 前記PKUnseal動作への前記入力は、前記ビットストリングへのポインタであることを特徴とする請求項35に記載の1つまたは複数のコンピュータ可読媒体。
- コンピューティングデバイスの1つまたは複数のプロセッサによって実行される場合に、前記1つまたは複数のプロセッサに、
PKSeal動作の呼出しに応答して封印されたビットストリングからデータを入手するために、PKUnseal動作を呼び出すステップと、
前記データを封印解除するために満足されなければならない条件が満足される場合に限って、前記封印解除動作の呼出しに応答して、前記封印されたビットストリングからの前記データを受け取るステップと
を行わせる複数の命令をその上に保存することを特徴とする1つまたは複数のコンピュータ可読媒体。 - 前記条件は、前記データの封印解除を許可されるプログラムの識別子を含むことを特徴とする請求項38に記載の1つまたは複数のコンピュータ可読媒体。
- 前記条件の1つは、前記データを封印解除できる場合の時間制約を含むことを特徴とする請求項38に記載の1つまたは複数のコンピュータ可読媒体。
- 前記条件の1つは、評価されなければならない論理式を含み、前記論理式が真と評価される場合に限って、前記データを封印解除することができることを特徴とする請求項38に記載の1つまたは複数のコンピュータ可読媒体。
- 前記条件の1つは、実行されなければならないプログラムを含み、前記プログラムの実行は真の表示を返す場合に限って、前記データを封印解除することができることを特徴とする請求項38に記載の1つまたは複数のコンピュータ可読媒体。
- ルートリソースを保護する最下層を含む複数の階層層
を含み、
前記複数の階層層は、さらに、次に下位の層に前記ルートリソースへのアクセスを要求するプリンシパルとして働き、次に上位の層のプリンシパルに対してルートリソースに対するガードとして働く、1つまたは複数の中間層を含み、
前記ルートリソースへのアクセスを許可されるプログラムだけに前記ルートリソースへのアクセスを許可し、前記許可は、前記ルートリソースを安全に封印するためのPKSeal動作および前記ルートリソースを検索するためのPKUnseal動作の使用を含む
ことを特徴とするシステム。 - 前記複数の階層層は、4つの層を含み、最下層は、セキュリティカーネル層を含み、次に下位の層は、基本入出力システム層を含み、次に下位の層は、オペレーティングシステム層を含み、最上層は、アプリケーション層を含むことを特徴とする請求項43に記載のシステム。
- 前記ルートリソースは、暗号鍵を含むことを特徴とする請求項43に記載のシステム。
- BoundSign動作を実施する複数の命令をその上に保存することを特徴とする1つまたは複数のコンピュータ可読媒体であって、前記複数の命令が、コンピューティングデバイスの1つまたは複数のプロセッサによって実行される場合に、前記1つまたは複数のプロセッサに、
署名されるデータおよび束縛鍵blobの両方を入力として受け取るステップであって、前記束縛鍵blobが、前記1つまたは複数のプロセッサに束縛されるステップと、
前記束縛鍵blobに関連する秘密鍵を前記束縛鍵blobから回復するステップと、
前記秘密鍵を使用して前記データに対するディジタル署名を生成するステップと、
前記ディジタル署名を出力するステップと
を行わせることを特徴とする1つまたは複数のコンピュータ可読媒体。 - 前記束縛鍵blobが、前記1つまたは複数のプロセッサの公開鍵を使用して前記束縛鍵blobを暗号化することによって前記1つまたは複数のプロセッサに束縛されることを特徴とする請求項46に記載の1つまたは複数のコンピュータ可読媒体。
- 前記秘密鍵が、前記束縛鍵blobの要素によって、前記BoundSign動作によって使用されることに制限されることを特徴とする請求項46に記載の1つまたは複数のコンピュータ可読媒体。
- BoundQuote動作を実施する複数の命令をその上に保存することを特徴とする1つまたは複数のコンピュータ可読媒体であって、前記複数の命令が、コンピューティングデバイスの1つまたは複数のプロセッサによって実行される場合に、前記1つまたは複数のプロセッサに、
署名されるデータおよび束縛鍵の両方を入力として受け取るステップであって、前記束縛鍵が、前記1つまたは複数のプロセッサに束縛されるステップと、
前記束縛鍵の少なくとも一部に基づいて、前記束縛鍵に関連する秘密鍵を再構成するステップと、
前記秘密鍵を使用して前記データに対するディジタル署名を生成するステップと、
前記ディジタル署名を出力するステップと
を行わせることを特徴とする1つまたは複数のコンピュータ可読媒体。 - 前記束縛鍵が、前記1つまたは複数のプロセッサの公開鍵を使用して前記束縛鍵を暗号化することによって前記1つまたは複数のプロセッサに束縛されることを特徴とする請求項49に記載の1つまたは複数のコンピュータ可読媒体。
- 前記束縛鍵が、前記BoundQuote動作によって使用されることに制限されることを特徴とする請求項49に記載の1つまたは複数のコンピュータ可読媒体。
- BoundDecrypt動作を実施する複数の命令をその上に保存することを特徴とする1つまたは複数のコンピュータ可読媒体であって、前記複数の命令が、コンピューティングデバイスの1つまたは複数のプロセッサによって実行される場合に、前記1つまたは複数のプロセッサに、
暗号テキストおよび束縛鍵構造体の両方を入力として受け取るステップであって、前記束縛鍵構造体が、前記1つまたは複数のプロセッサに束縛されるステップと、
前記束縛鍵構造体から、前記束縛鍵構造体に関連する秘密鍵を回復するステップと、
前記暗号テキストに対応する平文を生成するために前記秘密鍵を使用して前記暗号テキストを暗号解読するステップと、
前記平文を出力するステップと
を行わせることを特徴とする1つまたは複数のコンピュータ可読媒体。 - 前記束縛鍵構造体が、前記1つまたは複数のプロセッサの公開鍵を使用して前記束縛鍵構造体を暗号化することによって前記1つまたは複数のプロセッサに束縛されることを特徴とする請求項52に記載の1つまたは複数のコンピュータ可読媒体。
- 前記秘密鍵が、前記束縛鍵構造体の鍵使用法要素に基づいて、前記BoundDecrypt動作によって使用されることに制限されることを特徴とする請求項52に記載の1つまたは複数のコンピュータ可読媒体。
- BoundPkUnseal動作を実施する複数の命令をその上に保存することを特徴とする1つまたは複数のコンピュータ可読媒体であって、前記複数の命令が、コンピューティングデバイスの1つまたは複数のプロセッサによって実行される場合に、前記1つまたは複数のプロセッサに、
暗号テキストおよび束縛鍵の両方を入力として受け取るステップであって、前記束縛鍵が、前記1つまたは複数のプロセッサに束縛されるステップと、
前記束縛鍵の少なくとも一部に基づいて、前記束縛鍵に関連する秘密鍵を再構成するステップと、
前記暗号テキストに対応する平文を生成するために前記秘密鍵を使用して前記暗号テキストを暗号解読するステップと、
前記平文を出力するステップと
を行わせることを特徴とする1つまたは複数のコンピュータ可読媒体。 - 前記束縛鍵が、前記1つまたは複数のプロセッサの公開鍵を使用して前記束縛鍵を暗号化することによって前記1つまたは複数のプロセッサに束縛されることを特徴とする請求項55に記載の1つまたは複数のコンピュータ可読媒体。
- 前記束縛鍵が、前記BoundPkUnseal動作によって使用されることに制限されることを特徴とする請求項55に記載の1つまたは複数のコンピュータ可読媒体。
- GenBoundKey動作を実施する複数の命令をその上に保存することを特徴とする1つまたは複数のコンピュータ可読媒体であって、前記複数の命令が、コンピューティングデバイスの1つまたは複数のプロセッサによって実行される場合に、前記1つまたは複数のプロセッサに、
前記1つまたは複数のプロセッサに束縛されなければならない新しい束縛鍵のデータ構造体を生成するステップであって、前記新しい束縛鍵は、公開/秘密鍵対の秘密鍵を前記データ構造体から回復できるようにするデータを含むステップと、
前記データ構造体を暗号的に保護するステップと
を行わせることを特徴とする1つまたは複数のコンピュータ可読媒体。 - 前記1つまたは複数のプロセッサに前記データ構造体を暗号的に保護するステップを行わせる前記命令は、前記1つまたは複数のプロセッサに前記公開/秘密鍵対の公開鍵を使用して前記データ構造体を暗号化するステップを行わせる命令を含むことを特徴とする請求項58に記載の1つまたは複数のコンピュータ可読媒体。
- BoundKeyMigrate動作を実施する複数の命令をその上に保存することを特徴とする1つまたは複数のコンピュータ可読媒体であって、前記複数の命令が、コンピューティングデバイスの1つまたは複数のプロセッサによって実行される場合に、前記1つまたは複数のプロセッサに、
入力として束縛鍵を受け取るステップであって、前記束縛鍵が、プログラムに束縛されるステップと、
前記鍵に関連する使用条件を前記プログラムによって変更できることを検証するステップと、
前記検証が成功である場合に前記使用条件を変更するステップと
を行わせることを特徴とする1つまたは複数のコンピュータ可読媒体。 - 前記使用条件は、前記鍵がそれに束縛されるプログラムの識別子を含むことを特徴とする請求項60に記載の1つまたは複数のコンピュータ可読媒体。
- 前記1つまたは複数のプロセッサに前記鍵に関連する使用条件を前記プログラムによって変更できることを検証するステップを行わせる前記命令は、前記1つまたは複数のプロセッサに、前記束縛鍵が移植可能としてマークされていることを検証するステップを行わせる命令を含むとを特徴とする請求項60に記載の1つまたは複数のコンピュータ可読媒体。
- 前記1つまたは複数のプロセッサに前記鍵に関連する使用条件を前記プログラムによって変更できることを検証するステップを行わせる前記命令は、前記1つまたは複数のプロセッサに、前記BoundKeyMigrate動作を呼び出すプログラムが前記束縛鍵の移植を許可されることを検証するステップを行わせる命令を含むことを特徴とする請求項60に記載の1つまたは複数のコンピュータ可読媒体。
- 前記1つまたは複数のプロセッサに前記鍵に関連する使用条件を前記プログラムによって変更できることを検証するステップを行わせる前記命令は、前記1つまたは複数のプロセッサに、論理式が真と評価されることを検証するステップを行わせる命令を含むことを特徴とする請求項60に記載の1つまたは複数のコンピュータ可読媒体。
- 前記1つまたは複数のプロセッサに前記鍵に関連する使用条件を前記プログラムによって変更できることを検証するステップを行わせる前記命令は、前記1つまたは複数のプロセッサに、特定のプログラムの実行は真の表示を返すことを検証するステップを行わせる命令を含むことを特徴とする請求項60に記載の1つまたは複数のコンピュータ可読媒体。
- 前記1つまたは複数のプロセッサに前記鍵に関連する使用条件を前記プログラムによって変更できることを検証するステップを行わせる前記命令は、前記1つまたは複数のプロセッサに、時間制約が満足されることを検証するステップを行わせる命令を含むことを特徴とする請求項60に記載の1つまたは複数のコンピュータ可読媒体。
- 前記使用条件は、前記束縛鍵を含むデータ構造体の要素内にあることを特徴とする請求項60に記載の1つまたは複数のコンピュータ可読媒体。
- BoundKeyExport動作を実施する複数の命令をその上に保存することを特徴とする1つまたは複数のコンピュータ可読媒体であって、前記複数の命令が、コンピューティングデバイスのプロセッサによって実行される場合に、前記プロセッサに、
入力として束縛鍵を受け取るステップであって、前記束縛鍵が、ガードに束縛されるステップと、
前記鍵を異なるガードに再束縛できることを検証するステップと、
前記検証が成功である場合に前記鍵を前記異なるガードに再束縛するステップと
を行わせることを特徴とする1つまたは複数のコンピュータ可読媒体。 - 前記ガードは、前記プロセッサを含み、前記異なるガードは、別のプロセッサを含むことを特徴とする請求項68に記載の1つまたは複数のコンピュータ可読媒体。
- 前記異なるガードが、前記BoundKeyExport動作への入力として識別されることを特徴とする請求項68に記載の1つまたは複数のコンピュータ可読媒体。
- 前記プロセッサに前記鍵を異なるガードに再束縛できることを検証するステップを行わせる前記命令が、前記プロセッサに、前記束縛鍵がエクスポート可能としてマークされていることを検証するステップを行わせる命令を含むことを特徴とする請求項68に記載の1つまたは複数のコンピュータ可読媒体。
- 前記プロセッサに前記鍵を異なるガードに再束縛できることを検証するステップを行わせる前記命令が、前記プロセッサに、前記BoundKeyExport命令を呼び出すプログラムが前記束縛鍵をエクスポートすることを許可されることを検証するステップを行わせる命令を含むことを特徴とする請求項68に記載の1つまたは複数のコンピュータ可読媒体。
- 前記プロセッサに前記鍵を異なるガードに再束縛できることを検証するステップを行わせる前記命令が、前記プロセッサに、論理式が真と評価されることを検証するステップを行わせる命令を含むことを特徴とする請求項68に記載の1つまたは複数のコンピュータ可読媒体。
- 前記プロセッサに前記鍵を異なるガードに再束縛できることを検証するステップを行わせる前記命令が、前記プロセッサに、特定のプログラムの実行は真の表示を返すことを検証するステップを行わせる命令を含むことを特徴とする請求項68に記載の1つまたは複数のコンピュータ可読媒体。
- 前記プロセッサに前記鍵を異なるガードに再束縛できることを検証するステップを行わせる前記命令が、前記プロセッサに、時間制約が満足されること検証するステップを行わせる命令を含むことを特徴とする請求項68に記載の1つまたは複数のコンピュータ可読媒体。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US37350502P | 2002-04-17 | 2002-04-17 | |
US60/373,505 | 2002-04-17 | ||
US10/407117 | 2003-04-04 | ||
US10/407,117 US7890771B2 (en) | 2002-04-17 | 2003-04-04 | Saving and retrieving data based on public key encryption |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004005595A true JP2004005595A (ja) | 2004-01-08 |
JP4689945B2 JP4689945B2 (ja) | 2011-06-01 |
Family
ID=29218927
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003113502A Expired - Fee Related JP4689945B2 (ja) | 2002-04-17 | 2003-04-17 | リソースアクセス方法 |
Country Status (4)
Country | Link |
---|---|
US (7) | US7890771B2 (ja) |
EP (1) | EP1391801B1 (ja) |
JP (1) | JP4689945B2 (ja) |
KR (1) | KR100996784B1 (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005310122A (ja) * | 2004-04-23 | 2005-11-04 | Microsoft Corp | ファイルロッカー、およびファイルロッカーを提供し使用するための機構 |
US8479000B2 (en) | 2008-10-10 | 2013-07-02 | Panasonic Corporation | Information processing device, authentication system, authentication device, information processing method, information processing program, recording medium, and integrated circuit |
US8602707B2 (en) | 2008-05-30 | 2013-12-10 | Alta Devices, Inc. | Methods and apparatus for a chemical vapor deposition reactor |
Families Citing this family (80)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7194092B1 (en) * | 1998-10-26 | 2007-03-20 | Microsoft Corporation | Key-based secure storage |
US7174457B1 (en) | 1999-03-10 | 2007-02-06 | Microsoft Corporation | System and method for authenticating an operating system to a central processing unit, providing the CPU/OS with secure storage, and authenticating the CPU/OS to a third party |
US7487365B2 (en) * | 2002-04-17 | 2009-02-03 | Microsoft Corporation | Saving and retrieving data based on symmetric key encryption |
US7890771B2 (en) * | 2002-04-17 | 2011-02-15 | Microsoft Corporation | Saving and retrieving data based on public key encryption |
US20040127256A1 (en) * | 2002-07-30 | 2004-07-01 | Scott Goldthwaite | Mobile device equipped with a contactless smart card reader/writer |
US7188089B2 (en) * | 2002-07-26 | 2007-03-06 | Way Systems, Inc. | System and method for securely storing, generating, transferring and printing electronic prepaid vouchers |
US20040230489A1 (en) * | 2002-07-26 | 2004-11-18 | Scott Goldthwaite | System and method for mobile payment and fulfillment of digital goods |
US7702922B2 (en) * | 2004-08-17 | 2010-04-20 | Microsoft Corporation | Physical encryption key system |
US20060064391A1 (en) * | 2004-09-20 | 2006-03-23 | Andrew Petrov | System and method for a secure transaction module |
US20110071949A1 (en) * | 2004-09-20 | 2011-03-24 | Andrew Petrov | Secure pin entry device for mobile phones |
US8666900B1 (en) * | 2005-03-30 | 2014-03-04 | Intuit Inc. | Secure product enablement over channels with narrow bandwidth |
US9497172B2 (en) * | 2005-05-23 | 2016-11-15 | Litera Corp. | Method of encrypting and transferring data between a sender and a receiver using a network |
US7529946B2 (en) * | 2005-06-16 | 2009-05-05 | Microsoft Corporation | Enabling bits sealed to an enforceably-isolated environment |
US7783896B2 (en) * | 2005-09-06 | 2010-08-24 | Research In Motion Limited | System and method for management of plaintext data in a mobile data processing device |
US8560853B2 (en) * | 2005-09-09 | 2013-10-15 | Microsoft Corporation | Digital signing policy |
US8799680B2 (en) * | 2005-09-15 | 2014-08-05 | Microsoft Corporation | Transactional sealed storage |
KR100781531B1 (ko) | 2006-09-19 | 2007-12-03 | 삼성전자주식회사 | 컨텐츠 서비스 제공 방법 및 장치 |
US8438652B2 (en) * | 2007-03-23 | 2013-05-07 | Seagate Technology Llc | Restricted erase and unlock of data storage devices |
US8478988B2 (en) * | 2007-05-15 | 2013-07-02 | At&T Intellectual Property I, L.P. | System and method for authentication of a communication device |
US8433927B2 (en) * | 2007-05-29 | 2013-04-30 | International Business Machines Corporation | Cryptographically-enabled privileged mode execution |
US8422674B2 (en) * | 2007-05-29 | 2013-04-16 | International Business Machines Corporation | Application-specific secret generation |
US8332635B2 (en) * | 2007-05-29 | 2012-12-11 | International Business Machines Corporation | Updateable secure kernel extensions |
US8332636B2 (en) * | 2007-10-02 | 2012-12-11 | International Business Machines Corporation | Secure policy differentiation by secure kernel design |
EP3522580B1 (en) * | 2007-10-16 | 2021-01-20 | Nokia Technologies Oy | Credential provisioning |
CA2706182A1 (en) * | 2007-12-13 | 2009-06-18 | Pgp Corporation | Apparatus and method for processing fragmented cryptographic keys |
US20100199233A1 (en) * | 2009-01-30 | 2010-08-05 | Petunin Vladimir V | Uniquely Marking Products And Product Design Data |
WO2015012782A1 (en) * | 2009-12-16 | 2015-01-29 | Robert Kulakowski | Dynamic obfuscation processing |
PL2520041T3 (pl) * | 2009-12-30 | 2016-09-30 | Sposób generowania tabeli korelacji dla białej skrzynki kryptograficznej | |
GB201003296D0 (en) * | 2010-02-26 | 2010-04-14 | Omnifone Ltd | Acorn 1 |
KR101105095B1 (ko) * | 2010-10-26 | 2012-01-16 | 김찬한 | 물과 증기를 사용하지 않는 콘크리트 양생시스템과 전기양생장치 |
US10110380B2 (en) * | 2011-03-28 | 2018-10-23 | Nxp B.V. | Secure dynamic on chip key programming |
US8918907B2 (en) * | 2011-04-13 | 2014-12-23 | Phoenix Technologies Ltd. | Approaches for firmware to trust an application |
US9063776B2 (en) * | 2011-05-27 | 2015-06-23 | Microsoft Technology Licensing, Llc | Application activation framework |
US8661527B2 (en) | 2011-08-31 | 2014-02-25 | Kabushiki Kaisha Toshiba | Authenticator, authenticatee and authentication method |
CN104067218B (zh) * | 2011-12-28 | 2019-06-18 | 英特尔公司 | 分配存储器访问控制策略 |
US8739308B1 (en) | 2012-03-27 | 2014-05-27 | Amazon Technologies, Inc. | Source identification for unauthorized copies of content |
US8892865B1 (en) | 2012-03-27 | 2014-11-18 | Amazon Technologies, Inc. | Multiple authority key derivation |
US9215076B1 (en) * | 2012-03-27 | 2015-12-15 | Amazon Technologies, Inc. | Key generation for hierarchical data access |
CN104335220B (zh) * | 2012-03-30 | 2018-04-20 | 爱迪德技术有限公司 | 用于防止和检测安全威胁的方法和系统 |
US9286491B2 (en) | 2012-06-07 | 2016-03-15 | Amazon Technologies, Inc. | Virtual service provider zones |
US10084818B1 (en) | 2012-06-07 | 2018-09-25 | Amazon Technologies, Inc. | Flexibly configurable data modification services |
US10075471B2 (en) | 2012-06-07 | 2018-09-11 | Amazon Technologies, Inc. | Data loss prevention techniques |
US9590959B2 (en) | 2013-02-12 | 2017-03-07 | Amazon Technologies, Inc. | Data security service |
US8938796B2 (en) | 2012-09-20 | 2015-01-20 | Paul Case, SR. | Case secure computer architecture |
US8954546B2 (en) | 2013-01-25 | 2015-02-10 | Concurix Corporation | Tracing with a workload distributor |
US9021262B2 (en) | 2013-01-25 | 2015-04-28 | Concurix Corporation | Obfuscating trace data |
US9207969B2 (en) | 2013-01-25 | 2015-12-08 | Microsoft Technology Licensing, Llc | Parallel tracing for performance and detail |
US10210341B2 (en) | 2013-02-12 | 2019-02-19 | Amazon Technologies, Inc. | Delayed data access |
US8924941B2 (en) | 2013-02-12 | 2014-12-30 | Concurix Corporation | Optimization analysis using similar frequencies |
US9608813B1 (en) | 2013-06-13 | 2017-03-28 | Amazon Technologies, Inc. | Key rotation techniques |
US9300464B1 (en) | 2013-02-12 | 2016-03-29 | Amazon Technologies, Inc. | Probabilistic key rotation |
US9547771B2 (en) * | 2013-02-12 | 2017-01-17 | Amazon Technologies, Inc. | Policy enforcement with associated data |
US8997063B2 (en) | 2013-02-12 | 2015-03-31 | Concurix Corporation | Periodicity optimization in an automated tracing system |
US9367697B1 (en) | 2013-02-12 | 2016-06-14 | Amazon Technologies, Inc. | Data security with a security module |
US10467422B1 (en) | 2013-02-12 | 2019-11-05 | Amazon Technologies, Inc. | Automatic key rotation |
US10211977B1 (en) | 2013-02-12 | 2019-02-19 | Amazon Technologies, Inc. | Secure management of information using a security module |
US9705674B2 (en) | 2013-02-12 | 2017-07-11 | Amazon Technologies, Inc. | Federated key management |
US20130283281A1 (en) | 2013-02-12 | 2013-10-24 | Concurix Corporation | Deploying Trace Objectives using Cost Analyses |
US20140237258A1 (en) * | 2013-02-20 | 2014-08-21 | Kabushiki Kaisha Toshiba | Device and authentication method therefor |
US20130219372A1 (en) | 2013-03-15 | 2013-08-22 | Concurix Corporation | Runtime Settings Derived from Relationships Identified in Tracer Data |
US9575874B2 (en) | 2013-04-20 | 2017-02-21 | Microsoft Technology Licensing, Llc | Error list and bug report analysis for configuring an application tracer |
US9292415B2 (en) | 2013-09-04 | 2016-03-22 | Microsoft Technology Licensing, Llc | Module specific tracing in a shared module environment |
WO2015071778A1 (en) | 2013-11-13 | 2015-05-21 | Concurix Corporation | Application execution path tracing with configurable origin definition |
US9397835B1 (en) | 2014-05-21 | 2016-07-19 | Amazon Technologies, Inc. | Web of trust management in a distributed system |
CN106233292B (zh) * | 2014-06-24 | 2019-07-16 | 惠普发展公司有限责任合伙企业 | 合成文档访问 |
US9438421B1 (en) | 2014-06-27 | 2016-09-06 | Amazon Technologies, Inc. | Supporting a fixed transaction rate with a variably-backed logical cryptographic key |
US9866392B1 (en) | 2014-09-15 | 2018-01-09 | Amazon Technologies, Inc. | Distributed system web of trust provisioning |
US9710675B2 (en) | 2015-03-26 | 2017-07-18 | Intel Corporation | Providing enhanced replay protection for a memory |
US9792229B2 (en) * | 2015-03-27 | 2017-10-17 | Intel Corporation | Protecting a memory |
US10469477B2 (en) | 2015-03-31 | 2019-11-05 | Amazon Technologies, Inc. | Key export techniques |
US10650169B2 (en) * | 2015-09-14 | 2020-05-12 | Hewlett Packard Enterprise Development Lp | Secure memory systems |
US10225265B1 (en) | 2016-04-15 | 2019-03-05 | Snap Inc. | End to end encryption |
US10177910B2 (en) * | 2016-08-31 | 2019-01-08 | Microsoft Technology Licensing, Llc | Preserving protected secrets across a secure boot update |
BR112019003128A2 (pt) | 2016-09-15 | 2019-05-21 | Nuts Holdings, Llc | trânsito e armazenamento de dados de usuário criptografados |
CN110800252B (zh) * | 2019-03-18 | 2023-06-27 | 创新先进技术有限公司 | 防止安全多方计算中错误表示输入数据的方法和系统 |
CN109921902B (zh) | 2019-03-22 | 2020-10-23 | 创新先进技术有限公司 | 一种密钥管理方法、安全芯片、业务服务器及信息系统 |
EP3646216B1 (en) * | 2019-04-19 | 2021-04-14 | Advanced New Technologies Co., Ltd. | Methods and devices for executing trusted applications on processor with support for protected execution environments |
US11048802B2 (en) * | 2019-05-09 | 2021-06-29 | X Development Llc | Encrypted hard disk imaging process |
US11558192B2 (en) | 2020-04-09 | 2023-01-17 | Nuts Holdings, Llc | NUTS: flexible hierarchy object graphs |
US20230237155A1 (en) * | 2022-01-27 | 2023-07-27 | Hewlett Packard Enterprise Development Lp | Securing communications with security processors using platform keys |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06318167A (ja) * | 1993-03-09 | 1994-11-15 | Toshiba Corp | オブジェクト走査装置及び方法 |
JPH08137686A (ja) * | 1994-09-16 | 1996-05-31 | Toshiba Corp | 著作物データ管理方法及び著作物データ管理装置 |
JPH09251426A (ja) * | 1996-01-10 | 1997-09-22 | Hitachi Ltd | ファイル暗号化システム及びその制御方法ならびに暗号ファイル受信システム及びその制御方法 |
JPH11265317A (ja) * | 1998-03-16 | 1999-09-28 | Nippon Telegr & Teleph Corp <Ntt> | 著作権保護システム |
US5991406A (en) * | 1994-08-11 | 1999-11-23 | Network Associates, Inc. | System and method for data recovery |
JP2000260121A (ja) * | 1999-03-05 | 2000-09-22 | Toshiba Corp | 情報再生装置および情報記録装置 |
JP2000311114A (ja) * | 1999-04-28 | 2000-11-07 | Toshiba Corp | コンピュータシステムおよびコンテンツ保護方法 |
JP2001282375A (ja) * | 2000-03-15 | 2001-10-12 | Internatl Business Mach Corp <Ibm> | コンピュータ用のアクセス制御 |
JP2001318787A (ja) * | 2000-05-08 | 2001-11-16 | Toshiba Corp | マイクロプロセッサ、これを用いたマルチタスク実行方法、およびマルチレッド実行方法 |
JP2002049499A (ja) * | 2000-08-03 | 2002-02-15 | Sony Corp | Os上のセキュアなタスク間通信方法 |
JP2003271254A (ja) * | 2002-03-08 | 2003-09-26 | Internatl Business Mach Corp <Ibm> | 認証システム、ファームウェア装置、電気機器、及び認証方法 |
Family Cites Families (226)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5050213A (en) | 1986-10-14 | 1991-09-17 | Electronic Publishing Resources, Inc. | Database usage metering and protection system and method |
US4827508A (en) | 1986-10-14 | 1989-05-02 | Personal Library Software, Inc. | Database usage metering and protection system and method |
US4977594A (en) | 1986-10-14 | 1990-12-11 | Electronic Publishing Resources, Inc. | Database usage metering and protection system and method |
US4817140A (en) | 1986-11-05 | 1989-03-28 | International Business Machines Corp. | Software protection system using a single-key cryptosystem, a hardware-based authorization system and a secure coprocessor |
US4908861A (en) | 1987-08-28 | 1990-03-13 | International Business Machines Corporation | Data authentication using modification detection codes based on a public one way encryption function |
US5140634A (en) | 1987-09-07 | 1992-08-18 | U.S Philips Corporation | Method and apparatus for authenticating accreditations and for authenticating and signing messages |
US4969189A (en) | 1988-06-25 | 1990-11-06 | Nippon Telegraph & Telephone Corporation | Authentication system and apparatus therefor |
US5007082A (en) | 1988-08-03 | 1991-04-09 | Kelly Services, Inc. | Computer software encryption apparatus |
US5023907A (en) | 1988-09-30 | 1991-06-11 | Apollo Computer, Inc. | Network license server |
DE3906349A1 (de) | 1989-03-01 | 1990-09-13 | Hartmut Hennige | Verfahren und vorrichtung zur vereinfachung des gebrauchs einer vielzahl von kreditkarten u. dgl. |
US5038551A (en) * | 1989-11-30 | 1991-08-13 | Farmer Harold J | Saddle seat riser pad |
GB9010603D0 (en) * | 1990-05-11 | 1990-07-04 | Int Computers Ltd | Access control in a distributed computer system |
US5335334A (en) | 1990-08-31 | 1994-08-02 | Hitachi, Ltd. | Data processing apparatus having a real memory region with a corresponding fixed memory protection key value and method for allocating memories therefor |
US5404403A (en) * | 1990-09-17 | 1995-04-04 | Motorola, Inc. | Key management in encryption systems |
FR2673476B1 (fr) | 1991-01-18 | 1996-04-12 | Gemplus Card Int | Procede securise de chargement de plusieurs applications dans une carte a memoire a microprocesseur. |
US5940504A (en) * | 1991-07-01 | 1999-08-17 | Infologic Software, Inc. | Licensing management system and method in which datagrams including an address of a licensee and indicative of use of a licensed product are sent from the licensee's site |
GB2260629B (en) | 1991-10-16 | 1995-07-26 | Intel Corp | A segment descriptor cache for a microprocessor |
US5557518A (en) * | 1994-04-28 | 1996-09-17 | Citibank, N.A. | Trusted agents for open electronic commerce |
GB9126779D0 (en) | 1991-12-17 | 1992-02-12 | Int Computers Ltd | Security mechanism for a computer system |
US5365589A (en) | 1992-02-07 | 1994-11-15 | Gutowitz Howard A | Method and apparatus for encryption, decryption and authentication using dynamical systems |
JP3073590B2 (ja) * | 1992-03-16 | 2000-08-07 | 富士通株式会社 | 電子化データ保護システム、使用許諾者側装置および使用者側装置 |
US5421006A (en) | 1992-05-07 | 1995-05-30 | Compaq Computer Corp. | Method and apparatus for assessing integrity of computer system software |
US5448716A (en) | 1992-10-30 | 1995-09-05 | International Business Machines Corporation | Apparatus and method for booting a multiple processor system having a global/local memory architecture |
US5418947A (en) * | 1992-12-23 | 1995-05-23 | At&T Corp. | Locating information in an unsorted database utilizing a B-tree |
US5349643A (en) | 1993-05-10 | 1994-09-20 | International Business Machines Corporation | System and method for secure initial program load for diskless workstations |
US5860099A (en) * | 1993-05-12 | 1999-01-12 | Usar Systems, Inc. | Stored program system with protected memory and secure signature extraction |
US5375169A (en) * | 1993-05-28 | 1994-12-20 | Tecsec, Incorporated | Cryptographic key management method and apparatus |
US5544246A (en) | 1993-09-17 | 1996-08-06 | At&T Corp. | Smartcard adapted for a plurality of service providers and for remote installation of same |
AU1265195A (en) * | 1993-12-06 | 1995-06-27 | Telequip Corporation | Secure computer memory card |
FR2713803B1 (fr) * | 1993-12-07 | 1996-01-12 | Gemplus Card Int | Carte à mémoire et procédé de fonctionnement. |
US5491827A (en) | 1994-01-14 | 1996-02-13 | Bull Hn Information Systems Inc. | Secure application card for sharing application data and procedures among a plurality of microprocessors |
US5812980A (en) | 1994-02-22 | 1998-09-22 | Sega Enterprises, Ltd. | Program operating apparatus |
US5473692A (en) | 1994-09-07 | 1995-12-05 | Intel Corporation | Roving software license for a hardware agent |
US5530758A (en) * | 1994-06-03 | 1996-06-25 | Motorola, Inc. | Operational methods for a secure node in a computer network |
US5724425A (en) | 1994-06-10 | 1998-03-03 | Sun Microsystems, Inc. | Method and apparatus for enhancing software security and distributing software |
US5483649A (en) * | 1994-07-01 | 1996-01-09 | Ybm Technologies, Inc. | Personal computer security system |
US5999711A (en) | 1994-07-18 | 1999-12-07 | Microsoft Corporation | Method and system for providing certificates holding authentication and authorization information for users/machines |
US5530753A (en) | 1994-08-15 | 1996-06-25 | International Business Machines Corporation | Methods and apparatus for secure hardware configuration |
US5870467A (en) | 1994-09-16 | 1999-02-09 | Kabushiki Kaisha Toshiba | Method and apparatus for data input/output management suitable for protection of electronic writing data |
US5654746A (en) * | 1994-12-01 | 1997-08-05 | Scientific-Atlanta, Inc. | Secure authorization and control method and apparatus for a game delivery service |
US5615263A (en) | 1995-01-06 | 1997-03-25 | Vlsi Technology, Inc. | Dual purpose security architecture with protected internal operating system |
US5673319A (en) * | 1995-02-06 | 1997-09-30 | International Business Machines Corporation | Block cipher mode of operation for secure, length-preserving encryption |
US5892900A (en) * | 1996-08-30 | 1999-04-06 | Intertrust Technologies Corp. | Systems and methods for secure transaction management and electronic rights protection |
US5943422A (en) * | 1996-08-12 | 1999-08-24 | Intertrust Technologies Corp. | Steganographic techniques for securely delivering electronic digital rights management control information over insecure communication channels |
EP1526472A3 (en) * | 1995-02-13 | 2006-07-26 | Intertrust Technologies Corp. | Systems and methods for secure transaction management and electronic rights protection |
US6157721A (en) * | 1996-08-12 | 2000-12-05 | Intertrust Technologies Corp. | Systems and methods using cryptography to protect secure computing environments |
US5559957A (en) | 1995-05-31 | 1996-09-24 | Lucent Technologies Inc. | File system for a data storage device having a power fail recovery mechanism for write/replace operations |
US5745886A (en) * | 1995-06-07 | 1998-04-28 | Citibank, N.A. | Trusted agents for open distribution of electronic money |
US5664016A (en) * | 1995-06-27 | 1997-09-02 | Northern Telecom Limited | Method of building fast MACS from hash functions |
US6006328A (en) * | 1995-07-14 | 1999-12-21 | Christopher N. Drake | Computer software authentication, protection, and security system |
US5638446A (en) | 1995-08-28 | 1997-06-10 | Bell Communications Research, Inc. | Method for the secure distribution of electronic files in a distributed environment |
US5671280A (en) * | 1995-08-30 | 1997-09-23 | Citibank, N.A. | System and method for commercial payments using trusted agents |
US5721781A (en) * | 1995-09-13 | 1998-02-24 | Microsoft Corporation | Authentication system and method for smart card transactions |
US5825876A (en) * | 1995-12-04 | 1998-10-20 | Northern Telecom | Time based availability to content of a storage medium |
US5857020A (en) * | 1995-12-04 | 1999-01-05 | Northern Telecom Ltd. | Timed availability of secured content provisioned on a storage medium |
US5812662A (en) * | 1995-12-18 | 1998-09-22 | United Microelectronics Corporation | Method and apparatus to protect computer software |
US5724527A (en) | 1995-12-28 | 1998-03-03 | Intel Corporation | Fault-tolerant boot strap mechanism for a multiprocessor system |
CA2242596C (en) * | 1996-01-11 | 2012-06-19 | Mrj, Inc. | System for controlling access and distribution of digital property |
TW346571B (en) | 1996-02-06 | 1998-12-01 | Matsushita Electric Ind Co Ltd | Data reception apparatus, data transmission apparatus, information processing system, data reception method |
US6038551A (en) | 1996-03-11 | 2000-03-14 | Microsoft Corporation | System and method for configuring and managing resources on a multi-purpose integrated circuit card using a personal computer |
US5991876A (en) * | 1996-04-01 | 1999-11-23 | Copyright Clearance Center, Inc. | Electronic rights management and authorization system |
US5778069A (en) * | 1996-04-10 | 1998-07-07 | Microsoft Corporation | Non-biased pseudo random number generator |
US5978484A (en) * | 1996-04-25 | 1999-11-02 | Microsoft Corporation | System and method for safety distributing executable objects |
US5802592A (en) | 1996-05-31 | 1998-09-01 | International Business Machines Corporation | System and method for protecting integrity of alterable ROM using digital signatures |
US5944821A (en) * | 1996-07-11 | 1999-08-31 | Compaq Computer Corporation | Secure software registration and integrity assessment in a computer system |
US5872847A (en) * | 1996-07-30 | 1999-02-16 | Itt Industries, Inc. | Using trusted associations to establish trust in a computer network |
US5841869A (en) * | 1996-08-23 | 1998-11-24 | Cheyenne Property Trust | Method and apparatus for trusted processing |
US6745936B1 (en) | 1996-08-23 | 2004-06-08 | Orion Systems, Inc. | Method and apparatus for generating secure endorsed transactions |
US6148083A (en) | 1996-08-23 | 2000-11-14 | Hewlett-Packard Company | Application certification for an international cryptography framework |
US5892902A (en) * | 1996-09-05 | 1999-04-06 | Clark; Paul C. | Intelligent token protected system with network authentication |
US5958050A (en) * | 1996-09-24 | 1999-09-28 | Electric Communities | Trusted delegation system |
US5844986A (en) | 1996-09-30 | 1998-12-01 | Intel Corporation | Secure BIOS |
US5937063A (en) | 1996-09-30 | 1999-08-10 | Intel Corporation | Secure boot |
US6006332A (en) | 1996-10-21 | 1999-12-21 | Case Western Reserve University | Rights management system for digital media |
GB9622177D0 (en) * | 1996-10-24 | 1996-12-18 | Xaar Ltd | Passivation of ink jet print heads |
MY126363A (en) | 1996-10-25 | 2006-09-29 | Gemalto Sa | Using a high level programming language with a microcontroller |
JPH10133955A (ja) * | 1996-10-29 | 1998-05-22 | Matsushita Electric Ind Co Ltd | 可搬型メディア駆動装置とその方法、及び可搬型メディアとネットワークの連携装置とその方法 |
US6367012B1 (en) * | 1996-12-06 | 2002-04-02 | Microsoft Corporation | Embedding certifications in executable files for network transmission |
US5892904A (en) * | 1996-12-06 | 1999-04-06 | Microsoft Corporation | Code certification for network transmission |
US5757919A (en) * | 1996-12-12 | 1998-05-26 | Intel Corporation | Cryptographically protected paging subsystem |
US6009274A (en) | 1996-12-13 | 1999-12-28 | 3Com Corporation | Method and apparatus for automatically updating software components on end systems over a network |
US6381741B1 (en) * | 1998-05-18 | 2002-04-30 | Liberate Technologies | Secure data downloading, recovery and upgrading |
US6192473B1 (en) * | 1996-12-24 | 2001-02-20 | Pitney Bowes Inc. | System and method for mutual authentication and secure communications between a postage security device and a meter server |
US6073124A (en) * | 1997-01-29 | 2000-06-06 | Shopnow.Com Inc. | Method and system for securely incorporating electronic information into an online purchasing application |
US6542610B2 (en) * | 1997-01-30 | 2003-04-01 | Intel Corporation | Content protection for digital transmission systems |
US5953502A (en) * | 1997-02-13 | 1999-09-14 | Helbig, Sr.; Walter A | Method and apparatus for enhancing computer system security |
US5920861A (en) * | 1997-02-25 | 1999-07-06 | Intertrust Technologies Corp. | Techniques for defining using and manipulating rights management data structures |
US6477648B1 (en) | 1997-03-23 | 2002-11-05 | Novell, Inc. | Trusted workstation in a networked client/server computing system |
US5995625A (en) * | 1997-03-24 | 1999-11-30 | Certco, Llc | Electronic cryptographic packing |
US7079649B1 (en) | 1997-03-27 | 2006-07-18 | British Telecommunications Public Limited Company | Copy protection of data |
US6028933A (en) * | 1997-04-17 | 2000-02-22 | Lucent Technologies Inc. | Encrypting method and apparatus enabling multiple access for multiple services and multiple transmission modes over a broadband communication network |
US6212636B1 (en) * | 1997-05-01 | 2001-04-03 | Itt Manufacturing Enterprises | Method for establishing trust in a computer network via association |
US6557104B2 (en) | 1997-05-02 | 2003-04-29 | Phoenix Technologies Ltd. | Method and apparatus for secure processing of cryptographic keys |
US5974546A (en) | 1997-05-08 | 1999-10-26 | Micron Electronics, Inc. | Apparatus and method to determine cause of failed boot sequence to improve likelihood of successful subsequent boot attempt |
EP1653463A1 (en) * | 1997-05-13 | 2006-05-03 | Kabushiki Kaisha Toshiba | License information copying method and apparatus, license information moving method |
US6335972B1 (en) * | 1997-05-23 | 2002-01-01 | International Business Machines Corporation | Framework-based cryptographic key recovery system |
US6070243A (en) * | 1997-06-13 | 2000-05-30 | Xylan Corporation | Deterministic user authentication service for communication network |
US6453334B1 (en) | 1997-06-16 | 2002-09-17 | Streamtheory, Inc. | Method and apparatus to allow remotely located computer programs and/or data to be accessed on a local computer in a secure, time-limited manner, with persistent caching |
US6229894B1 (en) * | 1997-07-14 | 2001-05-08 | Entrust Technologies, Ltd. | Method and apparatus for access to user-specific encryption information |
JPH1145507A (ja) * | 1997-07-24 | 1999-02-16 | Toshiba Corp | 情報再生装置、認識装置、情報処理システム |
US5919257A (en) * | 1997-08-08 | 1999-07-06 | Novell, Inc. | Networked workstation intrusion detection system |
US6032257A (en) * | 1997-08-29 | 2000-02-29 | Compaq Computer Corporation | Hardware theft-protection architecture |
US6351536B1 (en) * | 1997-10-01 | 2002-02-26 | Minoru Sasaki | Encryption network system and method |
US6185678B1 (en) * | 1997-10-02 | 2001-02-06 | Trustees Of The University Of Pennsylvania | Secure and reliable bootstrap architecture |
US6148387A (en) * | 1997-10-09 | 2000-11-14 | Phoenix Technologies, Ltd. | System and method for securely utilizing basic input and output system (BIOS) services |
US6026166A (en) * | 1997-10-20 | 2000-02-15 | Cryptoworx Corporation | Digitally certifying a user identity and a computer system in combination |
US6112181A (en) * | 1997-11-06 | 2000-08-29 | Intertrust Technologies Corporation | Systems and methods for matching, selecting, narrowcasting, and/or classifying based on rights management and/or other information |
US5991399A (en) * | 1997-12-18 | 1999-11-23 | Intel Corporation | Method for securely distributing a conditional use private key to a trusted entity on a remote system |
US6560706B1 (en) * | 1998-01-26 | 2003-05-06 | Intel Corporation | Interface for ensuring system boot image integrity and authenticity |
US20010044901A1 (en) * | 1998-03-24 | 2001-11-22 | Symantec Corporation | Bubble-protected system for automatic decryption of file data on a per-use basis and automatic re-encryption |
US6148402A (en) | 1998-04-01 | 2000-11-14 | Hewlett-Packard Company | Apparatus and method for remotely executing commands using distributed computing environment remote procedure calls |
US6009401A (en) | 1998-04-06 | 1999-12-28 | Preview Systems, Inc. | Relicensing of electronically purchased software |
US6175917B1 (en) * | 1998-04-23 | 2001-01-16 | Vpnet Technologies, Inc. | Method and apparatus for swapping a computer operating system |
US6118873A (en) * | 1998-04-24 | 2000-09-12 | International Business Machines Corporation | System for encrypting broadcast programs in the presence of compromised receiver devices |
US6223284B1 (en) * | 1998-04-30 | 2001-04-24 | Compaq Computer Corporation | Method and apparatus for remote ROM flashing and security management for a computer system |
US6092189A (en) * | 1998-04-30 | 2000-07-18 | Compaq Computer Corporation | Channel configuration program server architecture |
US6363486B1 (en) * | 1998-06-05 | 2002-03-26 | Intel Corporation | Method of controlling usage of software components |
US6189100B1 (en) * | 1998-06-30 | 2001-02-13 | Microsoft Corporation | Ensuring the integrity of remote boot client data |
US6263445B1 (en) * | 1998-06-30 | 2001-07-17 | Emc Corporation | Method and apparatus for authenticating connections to a storage system coupled to a network |
US6105137A (en) * | 1998-07-02 | 2000-08-15 | Intel Corporation | Method and apparatus for integrity verification, authentication, and secure linkage of software modules |
US6401208B2 (en) | 1998-07-17 | 2002-06-04 | Intel Corporation | Method for BIOS authentication prior to BIOS execution |
US6189103B1 (en) | 1998-07-21 | 2001-02-13 | Novell, Inc. | Authority delegation with secure operating system queues |
JP3216607B2 (ja) * | 1998-07-29 | 2001-10-09 | 日本電気株式会社 | デジタル著作物流通システム及び方法、デジタル著作物再生装置及び方法、並びに記録媒体 |
US6983371B1 (en) * | 1998-10-22 | 2006-01-03 | International Business Machines Corporation | Super-distribution of protected digital content |
US7346580B2 (en) * | 1998-08-13 | 2008-03-18 | International Business Machines Corporation | Method and system of preventing unauthorized rerecording of multimedia content |
US6226618B1 (en) * | 1998-08-13 | 2001-05-01 | International Business Machines Corporation | Electronic content delivery system |
US6735696B1 (en) | 1998-08-14 | 2004-05-11 | Intel Corporation | Digital content protection using a secure booting method and apparatus |
US6230285B1 (en) * | 1998-09-08 | 2001-05-08 | Symantec Corporation | Boot failure recovery |
US6327660B1 (en) | 1998-09-18 | 2001-12-04 | Intel Corporation | Method for securing communications in a pre-boot environment |
KR100484209B1 (ko) * | 1998-09-24 | 2005-09-30 | 삼성전자주식회사 | 디지털컨텐트암호화/해독화장치및그방법 |
JP4410324B2 (ja) * | 1998-10-16 | 2010-02-03 | 富士通株式会社 | 資格管理方法および装置 |
US7194092B1 (en) * | 1998-10-26 | 2007-03-20 | Microsoft Corporation | Key-based secure storage |
US6609199B1 (en) | 1998-10-26 | 2003-08-19 | Microsoft Corporation | Method and apparatus for authenticating an open system application to a portable IC device |
US6327652B1 (en) | 1998-10-26 | 2001-12-04 | Microsoft Corporation | Loading and identifying a digital rights management operating system |
US7174457B1 (en) | 1999-03-10 | 2007-02-06 | Microsoft Corporation | System and method for authenticating an operating system to a central processing unit, providing the CPU/OS with secure storage, and authenticating the CPU/OS to a third party |
US6820063B1 (en) | 1998-10-26 | 2004-11-16 | Microsoft Corporation | Controlling access to content based on certificates and access predicates |
US7017188B1 (en) | 1998-11-16 | 2006-03-21 | Softricity, Inc. | Method and apparatus for secure content delivery over broadband access networks |
US6237785B1 (en) * | 1998-11-20 | 2001-05-29 | Westinghouse Air Brake Company | Retainer member for use in railway coupling devices |
US6330588B1 (en) | 1998-12-21 | 2001-12-11 | Philips Electronics North America Corporation | Verification of software agents and agent activities |
US6272629B1 (en) * | 1998-12-29 | 2001-08-07 | Intel Corporation | Method and apparatus for establishing network connection for a processor without an operating system boot |
US6263431B1 (en) * | 1998-12-31 | 2001-07-17 | Intle Corporation | Operating system bootstrap security mechanism |
US7130831B2 (en) * | 1999-02-08 | 2006-10-31 | Copyright Clearance Center, Inc. | Limited-use browser and security system |
JP2000236325A (ja) | 1999-02-09 | 2000-08-29 | Lg Electronics Inc | デジタルデータファイルの暗号化装置及びその方法 |
US6480961B2 (en) | 1999-03-02 | 2002-11-12 | Audible, Inc. | Secure streaming of digital audio/visual content |
US7103574B1 (en) * | 1999-03-27 | 2006-09-05 | Microsoft Corporation | Enforcement architecture and method for digital rights management |
US6389537B1 (en) * | 1999-04-23 | 2002-05-14 | Intel Corporation | Platform and method for assuring integrity of trusted agent communications |
US7421586B2 (en) * | 1999-05-12 | 2008-09-02 | Fraunhofer Gesselschaft | Protecting mobile code against malicious hosts |
US7263722B1 (en) * | 1999-05-12 | 2007-08-28 | Fraunhofer Crcg, Inc. | Obfuscation of executable code |
US6694025B1 (en) * | 1999-06-02 | 2004-02-17 | Koninklijke Philips Electronics N.V. | Method and apparatus for secure distribution of public/private key pairs |
US7062471B1 (en) | 1999-06-07 | 2006-06-13 | Nippon Telegraph And Telephone Corporation | Electronic rights information processing system, method and apparatus for carrying out same and recorded medium for program carrying out the method |
US7142676B1 (en) | 1999-06-08 | 2006-11-28 | Entrust Limited | Method and apparatus for secure communications using third-party key provider |
US6681214B1 (en) * | 1999-06-29 | 2004-01-20 | Assure Systems, Inc. | Secure system for printing authenticating digital signatures |
CN1967559A (zh) * | 1999-07-06 | 2007-05-23 | 索尼株式会社 | 数据提供系统、装置及其方法 |
US7188240B1 (en) | 1999-07-15 | 2007-03-06 | International Business Machines Corporation | Method and system for encryption of web browser cache |
US6675298B1 (en) * | 1999-08-18 | 2004-01-06 | Sun Microsystems, Inc. | Execution of instructions using op code lengths longer than standard op code lengths to encode data |
US6757831B1 (en) * | 1999-08-18 | 2004-06-29 | Sun Microsystems, Inc. | Logic block used to check instruction buffer configuration |
US6477252B1 (en) | 1999-08-29 | 2002-11-05 | Intel Corporation | Digital video content transmission ciphering and deciphering method and apparatus |
EP1132828A4 (en) | 1999-09-17 | 2007-10-10 | Sony Corp | DATA-DISPATCHING SYSTEM AND METHOD THEREFOR |
US20030014315A1 (en) * | 1999-12-03 | 2003-01-16 | Harri Jaalinoja | Method and a system for obtaining services using a cellular telecommunication system |
US6996720B1 (en) | 1999-12-17 | 2006-02-07 | Microsoft Corporation | System and method for accessing protected content in a rights-management architecture |
US7047411B1 (en) * | 1999-12-17 | 2006-05-16 | Microsoft Corporation | Server for an electronic distribution system and method of operating same |
JP2001209583A (ja) | 2000-01-26 | 2001-08-03 | Sony Corp | データ記録再生器およびセーブデータ処理方法、並びにプログラム提供媒体 |
ES2376158T3 (es) * | 2000-02-09 | 2012-03-09 | Swisscom Ag | Descodificador, procedimiento de descodificación y tarjeta de chip. |
US6901385B2 (en) * | 2000-02-17 | 2005-05-31 | Matsushita Electric Industrial Co., Ltd. | Semiconductor memory card that records contents for trial and purchase, recording apparatus, reproducing apparatus, and sales method |
WO2001074046A1 (fr) * | 2000-03-27 | 2001-10-04 | Sanyo Electric Co., Ltd. | Serveur et terminal de distribution de donnees, et systeme de distribution de donnees |
US6754815B1 (en) * | 2000-03-31 | 2004-06-22 | Intel Corporation | Method and system for scrubbing an isolated area of memory after reset of a processor operating in isolated execution mode if a cleanup flag is set |
US20020094111A1 (en) * | 2000-05-19 | 2002-07-18 | Puchek Daniel R. | Access control method and apparatus |
AU7593601A (en) * | 2000-07-14 | 2002-01-30 | Atabok Inc | Controlling and managing digital assets |
JP4503794B2 (ja) * | 2000-07-19 | 2010-07-14 | 株式会社日立製作所 | コンテンツ提供方法及び装置 |
AU2001283128A1 (en) | 2000-08-04 | 2002-02-18 | First Data Corporation | Trusted authentication digital signature (TADS) system |
WO2002019609A2 (en) | 2000-09-01 | 2002-03-07 | 724 Solutions International Srl | Public key infrastructure systems and methods |
JP4770012B2 (ja) * | 2000-10-06 | 2011-09-07 | ソニー株式会社 | メモリ装置 |
US20020042754A1 (en) * | 2000-10-10 | 2002-04-11 | Del Beccaro David J. | System and method for receiving broadcast audio/video works and for enabling a consumer to purchase the received audio/video works |
JP4470312B2 (ja) * | 2000-10-10 | 2010-06-02 | ソニー株式会社 | サーバ装置、再生装置、データ配信方法、データ再生方法、記憶媒体 |
WO2002096024A2 (en) | 2000-10-26 | 2002-11-28 | General Instrument Corporation | Initial free preview for multimedia multicast content |
US7143289B2 (en) * | 2000-10-30 | 2006-11-28 | Geocodex Llc | System and method for delivering encrypted information in a communication network using location identity and key tables |
US20020071565A1 (en) | 2000-12-11 | 2002-06-13 | Kurn David Michael | Software process pre-authorization scheme for applications on a computer system |
US6978376B2 (en) * | 2000-12-15 | 2005-12-20 | Authentica, Inc. | Information security architecture for encrypting documents for remote access while maintaining access control |
US6970562B2 (en) | 2000-12-19 | 2005-11-29 | Tricipher, Inc. | System and method for crypto-key generation and use in cryptosystem |
US7421082B2 (en) | 2000-12-28 | 2008-09-02 | Sony Corporation | Data delivery method and data delivery system using sets of passkeys generated by dividing an encryption key |
US20020094089A1 (en) | 2000-12-28 | 2002-07-18 | Shigeki Kamiya | Data delivery method and data delivery system |
CN1165049C (zh) * | 2000-12-28 | 2004-09-01 | 日本胜利株式会社 | 内容记录装置、重放装置、传送方法及接收方法 |
JP4281252B2 (ja) * | 2001-01-16 | 2009-06-17 | ソニー株式会社 | 情報記録装置、情報再生装置、情報記録方法、情報再生方法、および情報記録媒体、並びにプログラム記憶媒体 |
JP4098478B2 (ja) | 2001-01-31 | 2008-06-11 | 株式会社東芝 | マイクロプロセッサ |
US6882989B2 (en) * | 2001-02-23 | 2005-04-19 | Bbnt Solutions Llc | Genetic algorithm techniques and applications |
US6934389B2 (en) | 2001-03-02 | 2005-08-23 | Ati International Srl | Method and apparatus for providing bus-encrypted copy protection key to an unsecured bus |
DE10114157A1 (de) | 2001-03-22 | 2002-09-26 | Deutsche Telekom Ag | Verfahren zur rechnergestützten Erzeugung von öffentlichen Schlüsseln zur Verschlüsselung von Nachrichten und Vorrichtung zur Durchführung des Verfahrens |
JP2002288375A (ja) * | 2001-03-26 | 2002-10-04 | Sanyo Electric Co Ltd | コンテンツ提供装置、コンテンツ提供方法およびライセンスサーバ |
US7580988B2 (en) * | 2001-04-05 | 2009-08-25 | Intertrust Technologies Corporation | System and methods for managing the distribution of electronic content |
US7603703B2 (en) | 2001-04-12 | 2009-10-13 | International Business Machines Corporation | Method and system for controlled distribution of application code and content data within a computer network |
US6754854B2 (en) * | 2001-06-04 | 2004-06-22 | Motorola, Inc. | System and method for event monitoring and error detection |
US7007025B1 (en) * | 2001-06-08 | 2006-02-28 | Xsides Corporation | Method and system for maintaining secure data input and output |
US7237121B2 (en) * | 2001-09-17 | 2007-06-26 | Texas Instruments Incorporated | Secure bootloader for securing digital devices |
US20030009681A1 (en) * | 2001-07-09 | 2003-01-09 | Shunji Harada | Digital work protection system, recording medium apparatus, transmission apparatus, and playback apparatus |
US7111285B2 (en) * | 2001-07-17 | 2006-09-19 | Liquid Machines, Inc. | Method and system for protecting software applications against static and dynamic software piracy techniques |
US7188085B2 (en) * | 2001-07-20 | 2007-03-06 | International Business Machines Corporation | Method and system for delivering encrypted content with associated geographical-based advertisements |
CN1564980A (zh) * | 2001-08-03 | 2005-01-12 | 松下电器产业株式会社 | 备份恢复系统及权限管理服务器 |
US7983419B2 (en) * | 2001-08-09 | 2011-07-19 | Trimble Navigation Limited | Wireless device to network server encryption |
PE20030424A1 (es) * | 2001-09-12 | 2003-06-16 | Nagravision Sa | Metodo de difusion de datos entre un servidor local y perifericos locales |
US6983376B2 (en) * | 2001-10-16 | 2006-01-03 | Qualcomm Incorporated | Method and apparatus for providing privacy of user identity and characteristics in a communication system |
US20030079133A1 (en) * | 2001-10-18 | 2003-04-24 | International Business Machines Corporation | Method and system for digital rights management in content distribution application |
US7725490B2 (en) * | 2001-11-16 | 2010-05-25 | Crucian Global Services, Inc. | Collaborative file access management system |
US7260555B2 (en) * | 2001-12-12 | 2007-08-21 | Guardian Data Storage, Llc | Method and architecture for providing pervasive security to digital assets |
US7783765B2 (en) * | 2001-12-12 | 2010-08-24 | Hildebrand Hal S | System and method for providing distributed access control to secured documents |
US20030108202A1 (en) | 2001-12-12 | 2003-06-12 | Clapper Edward O. | Location dependent encryption and/or decryption |
US7103771B2 (en) | 2001-12-17 | 2006-09-05 | Intel Corporation | Connecting a virtual token to a physical token |
US20030126454A1 (en) | 2001-12-28 | 2003-07-03 | Glew Andrew F. | Authenticated code method and apparatus |
US7480806B2 (en) | 2002-02-22 | 2009-01-20 | Intel Corporation | Multi-token seal and unseal |
US20030174838A1 (en) * | 2002-03-14 | 2003-09-18 | Nokia Corporation | Method and apparatus for user-friendly peer-to-peer distribution of digital rights management protected content and mechanism for detecting illegal content distributors |
US7509687B2 (en) * | 2002-03-16 | 2009-03-24 | Trustedflow Systems, Inc. | Remotely authenticated operation method |
US7305704B2 (en) * | 2002-03-16 | 2007-12-04 | Trustedflow Systems, Inc. | Management of trusted flow system |
US7343493B2 (en) | 2002-03-28 | 2008-03-11 | Lenovo (Singapore) Pte. Ltd. | Encrypted file system using TCPA |
CA2778805C (en) | 2002-04-17 | 2015-01-20 | Microsoft Corporation | Saving and retrieving data based on public key encryption |
US7487365B2 (en) * | 2002-04-17 | 2009-02-03 | Microsoft Corporation | Saving and retrieving data based on symmetric key encryption |
US7890771B2 (en) * | 2002-04-17 | 2011-02-15 | Microsoft Corporation | Saving and retrieving data based on public key encryption |
US7333615B1 (en) * | 2002-06-26 | 2008-02-19 | At&T Delaware Intellectual Property, Inc. | Encryption between multiple devices |
US7392415B2 (en) | 2002-06-26 | 2008-06-24 | Intel Corporation | Sleep protection |
US7200868B2 (en) * | 2002-09-12 | 2007-04-03 | Scientific-Atlanta, Inc. | Apparatus for encryption key management |
US7283629B2 (en) | 2002-12-05 | 2007-10-16 | Microsoft Corporation | Deriving keys used to securely process electronic messages |
US7318235B2 (en) | 2002-12-16 | 2008-01-08 | Intel Corporation | Attestation using both fixed token and portable token |
US7493429B2 (en) * | 2003-07-08 | 2009-02-17 | Microsoft Corporation | Communication of information via a side-band channel, and use of same to verify positional relationship |
US6988842B2 (en) * | 2003-09-30 | 2006-01-24 | Pitney Bowes Inc. | Method and apparatus for continuous high speed digital metering using multiple print heads |
US7457872B2 (en) * | 2003-10-15 | 2008-11-25 | Microsoft Corporation | On-line service/application monitoring and reporting system |
US7125411B2 (en) * | 2003-11-14 | 2006-10-24 | Guanche Carlos A | Cannula delivery and support system |
US7551986B2 (en) * | 2004-02-24 | 2009-06-23 | Denso Corporation | Program distribution system, program distribution device, and in-vehicle gateway device |
US9542671B2 (en) | 2004-05-12 | 2017-01-10 | Paypal, Inc. | Method and system to facilitate securely processing a payment for an online transaction |
-
2003
- 2003-04-04 US US10/407,117 patent/US7890771B2/en not_active Expired - Fee Related
- 2003-04-15 EP EP03008702.7A patent/EP1391801B1/en not_active Expired - Lifetime
- 2003-04-17 JP JP2003113502A patent/JP4689945B2/ja not_active Expired - Fee Related
- 2003-04-17 KR KR1020030024374A patent/KR100996784B1/ko active IP Right Grant
-
2006
- 2006-11-08 US US11/557,581 patent/US7765397B2/en not_active Expired - Fee Related
-
2011
- 2011-01-24 US US13/012,573 patent/US9183406B2/en not_active Expired - Fee Related
- 2011-01-27 US US13/015,402 patent/US8621243B2/en not_active Expired - Fee Related
- 2011-01-27 US US13/015,403 patent/US8589701B2/en not_active Expired - Lifetime
- 2011-01-27 US US13/015,440 patent/US8601286B2/en not_active Expired - Fee Related
- 2011-01-27 US US13/015,360 patent/US8683230B2/en not_active Expired - Fee Related
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06318167A (ja) * | 1993-03-09 | 1994-11-15 | Toshiba Corp | オブジェクト走査装置及び方法 |
US5991406A (en) * | 1994-08-11 | 1999-11-23 | Network Associates, Inc. | System and method for data recovery |
JPH08137686A (ja) * | 1994-09-16 | 1996-05-31 | Toshiba Corp | 著作物データ管理方法及び著作物データ管理装置 |
JPH09251426A (ja) * | 1996-01-10 | 1997-09-22 | Hitachi Ltd | ファイル暗号化システム及びその制御方法ならびに暗号ファイル受信システム及びその制御方法 |
JPH11265317A (ja) * | 1998-03-16 | 1999-09-28 | Nippon Telegr & Teleph Corp <Ntt> | 著作権保護システム |
JP2000260121A (ja) * | 1999-03-05 | 2000-09-22 | Toshiba Corp | 情報再生装置および情報記録装置 |
JP2000311114A (ja) * | 1999-04-28 | 2000-11-07 | Toshiba Corp | コンピュータシステムおよびコンテンツ保護方法 |
JP2001282375A (ja) * | 2000-03-15 | 2001-10-12 | Internatl Business Mach Corp <Ibm> | コンピュータ用のアクセス制御 |
JP2001318787A (ja) * | 2000-05-08 | 2001-11-16 | Toshiba Corp | マイクロプロセッサ、これを用いたマルチタスク実行方法、およびマルチレッド実行方法 |
JP2002049499A (ja) * | 2000-08-03 | 2002-02-15 | Sony Corp | Os上のセキュアなタスク間通信方法 |
JP2003271254A (ja) * | 2002-03-08 | 2003-09-26 | Internatl Business Mach Corp <Ibm> | 認証システム、ファームウェア装置、電気機器、及び認証方法 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005310122A (ja) * | 2004-04-23 | 2005-11-04 | Microsoft Corp | ファイルロッカー、およびファイルロッカーを提供し使用するための機構 |
US8602707B2 (en) | 2008-05-30 | 2013-12-10 | Alta Devices, Inc. | Methods and apparatus for a chemical vapor deposition reactor |
US8479000B2 (en) | 2008-10-10 | 2013-07-02 | Panasonic Corporation | Information processing device, authentication system, authentication device, information processing method, information processing program, recording medium, and integrated circuit |
Also Published As
Publication number | Publication date |
---|---|
US20070088949A1 (en) | 2007-04-19 |
US7890771B2 (en) | 2011-02-15 |
US20110154057A1 (en) | 2011-06-23 |
US20110119505A1 (en) | 2011-05-19 |
US8621243B2 (en) | 2013-12-31 |
US8683230B2 (en) | 2014-03-25 |
KR20030082484A (ko) | 2003-10-22 |
US20110119500A1 (en) | 2011-05-19 |
US8589701B2 (en) | 2013-11-19 |
EP1391801A3 (en) | 2004-03-10 |
US8601286B2 (en) | 2013-12-03 |
US7765397B2 (en) | 2010-07-27 |
EP1391801A2 (en) | 2004-02-25 |
US9183406B2 (en) | 2015-11-10 |
EP1391801B1 (en) | 2020-02-12 |
US20030200450A1 (en) | 2003-10-23 |
JP4689945B2 (ja) | 2011-06-01 |
KR100996784B1 (ko) | 2010-11-25 |
US20110119502A1 (en) | 2011-05-19 |
US20110119501A1 (en) | 2011-05-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4808279B2 (ja) | ビットストリングの封印解除のためのコンピュータ可読媒体および方法 | |
JP4689945B2 (ja) | リソースアクセス方法 | |
US7529946B2 (en) | Enabling bits sealed to an enforceably-isolated environment | |
CA2425006C (en) | Saving and retrieving data based on symmetric key encryption | |
CN115580413B (zh) | 一种零信任的多方数据融合计算方法和装置 | |
Khan et al. | A protocol for preventing insider attacks in untrusted infrastructure-as-a-service clouds | |
Malipatlolla | SUSTAINABLE TRUSTED COMPUTING | |
Malipatlolla | Sustainable Trusted Computing: A Novel Approach for a Flexible and Secure Update of Cryptographic Engines on a Trusted Platform Module |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20060413 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20090915 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20091215 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20091218 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20100115 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20100120 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20100215 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20101026 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20110126 |
|
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: 20110215 |
|
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: 20110217 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 4689945 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140225 Year of fee payment: 3 |
|
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 |
|
LAPS | Cancellation because of no payment of annual fees |