オンラインサービスを用いてデバイスに直接証明秘密鍵を転送する方法
現場で稼動中のクライアントコンピュータシステムに導入されるデバイスに直接証明秘密鍵を転送することが、デバイス内に大きな不揮発性記憶装置を必要とすることなく、安全に達成することができる。製造時に、固有の擬似ランダム値が生成され、デバイスに格納される。その擬似ランダム値を用いて、そのデバイスに関連付けられる直接証明秘密鍵及び秘密鍵ダイジェストを保持しているデータ構造を暗号化するための対称鍵が生成される。結果として生成される暗号化されたデータ構造は、クライアントコンピュータシステムによってアクセス可能な被保護オンラインサーバ上に格納される。デバイスがクライアントコンピュータシステムで初期化されるとき、システムは、局在する暗号化されたデータ構造がシステム内に存在するか否かを検査する。存在しない場合には、システムは、安全なプロトコルを用いて、被保護オンラインサーバから、関連する暗号化されたデータ構造を入手する。そのデバイスは、その格納された擬似ランダム値から生成し直される対称鍵を用いて、暗号化されたデータ構造を暗号解読し、直接証明秘密鍵を入手する。秘密鍵が有効である場合には、その鍵は、クライアントコンピュータシステム内のデバイスによって、後続の認証処理のために用いられることができる。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は包括的には、コンピュータセキュリティに関し、より具体的には、処理システム内のデバイスに暗号鍵を安全に割り当てることに関する。
【背景技術】
【0002】
内容保護及び/又はコンピュータセキュリティ機構をサポートするいくつかの処理システムアーキテクチャでは、特別に保護された、すなわち「信用できる」ソフトウエアモジュールが、その処理システム内の特別に保護された、すなわち「信用できる」ハードウエアデバイス(たとえば、グラフィックスコントローラカード等)との認証された暗号化通信セッションを生成できることが要求される。デバイスを特定するために、且つ同時に暗号化された通信セッションを確立するために用いられる1つの一般的な方法は、片側認証方式のディフィ・ヘルマン(DH)鍵交換過程を用いることである。この過程では、デバイスは、固有の公開/秘密リベスト、シャミル及びアデルマン(Rivest, Shamir and Adelman)(RSA)アルゴリズム鍵ペア、又は固有の楕円曲線暗号(ECC)鍵ペアを割り当てられる。しかしながら、この認証過程はRSA鍵又はECC鍵を用いるので、その際、デバイスは、固有且つ証明可能な識別情報を有し、それによりプライバシーに対する懸念が生じる可能性がある。最悪の場合には、このような懸念がある結果として、この種のセキュリティを提供する信用できるデバイスを製造するための元の装置製造業者(OEM)からの支援が不足することがある。
【0003】
本発明の特徴及び利点は、本発明の以下に記載される詳細な説明から明らかになるであろう。
【発明を実施するための最良の形態】
【0004】
[詳細な説明]
直接証明に基づくディフィ・ヘルマン(DH)鍵交換プロトコルを用いて、保護された/信用できるデバイスが自らを認証できるようにし、且つ信用できるソフトウエアモジュールとの暗号化された通信セッションを確立できるようにすることによって、処理システム内で任意の固有の識別情報が作成されるのが避けられ、それにより、プライバシーに対する懸念が生じるのが避けられる。しかしながら、製造ライン上でデバイス内に直接証明秘密鍵を直に埋め込むには、そのデバイス上に、他の手法よりも高度に保護された不揮発性記憶装置を必要とするので、デバイスコストが高くなる。本発明の一実施形態は、直接証明(DP)秘密鍵(たとえば、署名するために用いられる)が、オンラインサービスを用いてデバイスに安全に転送されるようにし、その後、デバイスそのものによってデバイスに導入されるようにするための方法である。本発明において提示される方法は、デバイスが導入過程のための識別情報を明らかにする必要がないように設計される。一実施形態では、この能力をサポートするために必要とされるデバイス記憶装置は、約300〜700バイトから約40バイトまで削減することができる。デバイスのための直接証明に基づくディフィ・ヘルマン(DH)鍵交換を実施するために必要とされる不揮発性記憶装置の容量をこのように削減する結果として、この技法がさらに広く受け入れられるようになるであろう。
【0005】
本発明の実施形態では、DP秘密署名鍵は、デバイス内に、又はデバイスとともに割り当てられることはない。代わりに、デバイスは、現場で稼動中のデバイスが、製造業者若しくは販売業者、又は代理人によって提供されるオンライン被保護サーバから、その秘密鍵を安全に検索することができるプロトコルをサポートする。このプロトコルは、デバイスとサーバとの間に信用できるチャネルを生成し、局在処理システム上にあるソフトウエアを含む、いかなる介在するソフトウエアにおいても信用を必要としない。
【0006】
本明細書において本発明の「一(one)実施形態」又は「或る(an)実施形態」を参照することは、その実施形態に関連して記述される特定の特徴、構造又は特性が、本発明の少なくとも1つの実施形態に含まれることを意味する。したがって、本明細書の全体を通して種々の場所において「一実施形態では」という言い回しが現れても、必ずしも全てが同じ実施形態を参照しているとは限らない。
【0007】
以下の説明では、本発明の複数可の実施形態のいくつかの特定の特徴を記述するために、いくつかの特定の専門用語が用いられる。たとえば、「プラットフォーム」は、情報を送信及び受信するようになっている任意のタイプの通信デバイスと定義される。種々のプラットフォームの例には、限定又は制限はしないが、コンピュータシステム、携帯情報端末、携帯電話、セットトップボックス、ファクシミリ装置、プリンタ、モデム、ルータ等が含まれる。「通信リンク」は、プラットフォームに適合する複数可の情報搬送媒体と広く定義される。通信リンクの種々のタイプの例には、限定又は制限はしないが、電線(複数可)、光ファイバ(複数可)、ケーブル(複数可)、バストレース(複数可)、或いはワイヤレスシグナリング技術が含まれる。
【0008】
「チャレンジャ」は、別のエンティティからの何らかの信憑性の検証又は許可を要求する任意のエンティティ(たとえば、人、プラットフォーム、システム、ソフトウエア及び/又はデバイス)を指している。通常、これは、要求された情報を開示又は提供する前に実行される。「レスポンダ」は、その許可、妥当性及び/又は識別情報の証明を与えることを要求されている任意のエンティティを指している。「認証製造業者」と入替え可能に用いることができる「デバイス製造業者」は、プラットフォーム又はデバイスを製造又は構成する任意のエンティティを指している。
【0009】
本明細書において用いられるときに、レスポンダが或る暗号情報(たとえば、デジタル署名、鍵のような秘密情報等)を所有しているか、又は知っていることを、チャレンジャに対して「証明する」か、又はチャレンジャに「確信させる」ということは、チャレンジャに対して開示される情報及び証明を基にすると、レスポンダがその暗号情報を有する確率が高いことを意味する。チャレンジャに対してその暗号情報を「明らかにする」か、又は「開示する」ことなく、このことをチャレンジャに対して証明するということは、チャレンジャに対して開示される情報を基にしても、チャレンジャが計算によって暗号情報を求めることができないことを意味する。
【0010】
そのような証明は、これ以降、直接証明と呼ばれる。用語「直接証明」は、ゼロ知識証明を指しており、これらのタイプの証明は当該技術分野において一般的に知られている。詳細には、本明細書において参照されるような具体的な直接証明プロトコルは、2002年11月27日に出願され、本出願の所有者に譲渡された「System and Method for Establishing Trust Without Revealing Identity」というタイトルの同時係属中の特許出願第10/306,336号の発明の主題である。直接証明は、発行者が多数のメンバから成るファミリを定義するプロトコルを定義し、そのメンバは、発行者によって定義されるような共通の特徴を共有する。発行者は、ファミリ公開鍵及び秘密鍵ペア(Fpub及びFpri)を生成し、その鍵ペアが全体としてファミリを表す。Fpriを用いて、発行者は、そのファミリ内の個々のメンバ毎に固有の直接証明秘密署名鍵(DPpri)も生成することができる。個々のDPpriによって署名された任意のメッセージを、ファミリ公開鍵Fpubを用いて検証することができる。しかしながら、そのような検証は、署名者がファミリのメンバであることしか特定しない。個々のメンバについての固有に特定する情報は明らかにされない。一実施形態では、発行者は、デバイス製造業者又は代理人であってもよい。すなわち、発行者は、共有される特徴に基づいてデバイスファミリを定義することができ、ファミリ公開鍵/秘密鍵ペアを生成することができ、さらにDP秘密鍵を生成して、デバイスに導入することができるエンティティであってもよい。また発行者は、デバイスファミリの鍵及び特徴のソースを特定するファミリ公開鍵のための証明書を生成してもよい。
【0011】
ここで、図1を参照すると、本発明の一実施形態に従って動作する、信用できるハードウエアデバイス(「トラステッドプラットフォームモジュール」又は「TPM」と呼ばれる)で実施されるプラットフォームを特徴とするシステムの一実施形態が示される。第1のプラットフォーム102(チャレンジャ)が、第2のプラットフォーム104(レスポンダ)が自らについての情報を提供するという要求106を送信する。要求106に応答して、第2のプラットフォーム104は、要求された情報108を提供する。
【0012】
さらに、セキュリティを高くするために、第1のプラットフォーム102は、要求された情報108が、選択されたデバイス製造業者又は選択されたデバイス製造業者グループ(これ以降、「デバイス製造業者(複数可)110」と呼ばれる)によって製造されたデバイスからもたらされたことを検証することが必要な場合もある。たとえば、本発明の一実施形態の場合、第1のプラットフォーム102は、第2のプラットフォーム104に対して、デバイス製造業者(複数可)110によって生成された暗号情報(たとえば、署名)を所有していることを示すように要求する。その要求は、要求106(図示される)、又は別個の送信のいずれかに組み込むことができる。第2のプラットフォーム104は、応答の形で、情報を提供することによってその要求に応答し、暗号情報を明らかにすることなく、第2のプラットフォーム104がデバイス製造業者(複数可)110によって生成される暗号情報を所有していることを第1のプラットフォーム102に確信させる。その応答は、要求された情報108(図示される)の一部であっても、別個の送信の一部であってもよい。
【0013】
本発明の一実施形態では、第2のプラットフォーム104は、信用できるプラットフォームモジュール(TPM)115を備える。TPM115は、デバイス製造業者(複数可)110によって製造される暗号デバイスである。本発明の一実施形態では、TPM115は、パッケージ内に封入される小さな容量のオンチップメモリを備えるプロセッサを含む。TPM115は、或る応答が有効なTPMから送信されたことを第1のプラットフォームが判定できるようにする情報を、第1のプラットフォーム102に与えるように構成される。用いられる情報は、TPM又は第2のプラットフォームの識別情報を求めることができないようにする内容である。
【0014】
図2は、TPM115を備える第2のプラットフォーム104の第1の実施形態を示す。本発明のこの実施形態の場合、第2のプラットフォーム104は、TPM115に接続されるプロセッサ202を備える。一般的に、プロセッサ202は、情報を処理するデバイスである。たとえば、本発明の一実施形態では、プロセッサ202は、マイクロプロセッサ、デジタルシグナルプロセッサ、マイクロコントローラ、又は状態機械として実施することができる。別法として、本発明の別の実施形態では、プロセッサ202は、フィールドプログラマブルゲートアレイ(FPGA)、トランジスタ−トランジスタロジック(TTL)ロジック、又は特定用途向け集積回路(ASIC)のような、プログラマブルロジック又はハードコードロジックとして実現することができる。
【0015】
ここで、第2のプラットフォーム104はさらに、記憶ユニット206を備え、鍵、ハッシュ値、署名、証明書等の複数可の情報のような暗号情報を記憶できるようにする。「X」のハッシュ値は、「Hash(X)」として表すことができる。そのような情報は、図3に示されるように、記憶ユニット206の代わりに、TPM115の内部メモリ220に格納することもできると考えられる。暗号情報は、TPM115の外部に記憶される場合には特に、暗号化することができる。
【0016】
図4は、図2のTPM115で実施されるコンピュータシステム300を含むプラットフォームの一実施形態を示す。コンピュータシステム300は、バス302と、バス302に接続されるプロセッサ310とを備える。コンピュータシステム300はさらに、メインメモリユニット304と、スタティックメモリユニット306とを備える。
【0017】
ここで、メインメモリユニット304は、情報、及びプロセッサ310によって実行される命令を格納する揮発性半導体メモリである。またメインメモリ304は、プロセッサ310による命令の実行中に時間的な変数又は他の中間情報を格納するためにも用いることができる。スタティックメモリユニット306は、さらに永久的に、情報及びプロセッサ310のための命令を格納するための不揮発性半導体メモリである。スタティックメモリ306の例には、限定又は制限はしないが、リードオンリーメモリ(ROM)が含まれる。メインメモリユニット304及びスタティックメモリユニット306はいずれもバス302に接続される。
【0018】
本発明の一実施形態では、コンピュータシステム300はさらに、磁気ディスク又は光ディスクのようなデータ記憶デバイス308を備え、情報及び命令を格納するために、その対応するドライブもコンピュータシステム300に接続することができる。
【0019】
コンピュータシステム300は、バス302を介して、グラフィックスコントローラデバイス314にも接続することができ、そのデバイスは、エンドユーザに対して情報を表示する、陰極線管(CRT)、液晶ディスプレイ(LCD)又は任意のフラットパネルディスプレイのようなディスプレイ(図示せず)を制御する。一実施形態では、グラフィックスコントローラは、プロセッサによって実行されるソフトウエアモジュールとの認証された暗号化通信セッションを確立できることが望ましい場合もある。
【0020】
典型的には、プロセッサ310に情報及び/又はコマンド選択を伝達するために、文字数字入力デバイス316(たとえば、キーボード、キーパッド等)をバス302に接続することができる。別のタイプのユーザ入力デバイスは、プロセッサに方向情報及びコマンド選択を伝達し、且つディスプレイ314上でのカーソルの動きを制御するための、マウス、トラックボール、タッチパッド、スタイラス又はカーソル方向キー等のカーソル制御ユニット318である。
【0021】
通信インターフェースユニット320もバス302に接続される。インターフェースユニット320の例には、モデム、ネットワークインターフェースカード、又はローカルエリアネットワーク若しくはワイドエリアネットワークの一部を形成する通信リンクに接続するために用いられる他の既知のインターフェースが含まれる。このようにして、コンピュータシステム300は、たとえば、企業のイントラネット及び/又はインターネットのような、従来のネットワークインフラストラクチャを介して、多数のクライアント及び/又はサーバに接続することができる。一実施形態では、コンピュータシステムは、ネットワークを介して、被保護サーバにオンラインで接続することができる。
【0022】
いくつかの実施態様の場合、これまでに記述された構成要素よりも少ないか、又は多い構成要素を備えるコンピュータシステムが望ましい場合もあることは理解されよう。それゆえ、コンピュータシステム300の構成は、価格の制約、性能要件、技術的改善及び/又は他の事情のような数多くの要因に応じて、実施態様毎に異なるであろう。
【0023】
少なくとも1つの実施形態では、コンピュータシステム300は、システム内に他の好ましくないソフトウエアが存在する場合であっても、メインメモリ304及び/又は大容量記憶デバイス308に格納され、且つ特定の動作を成し遂げるためにプロセッサ310によって実行される、特別に保護された「信用できる」ソフトウエアモジュール(たとえば、改竄防止(tamper-resistant)ソフトウエア、又は保護されたプログラムを実行する能力を有するシステム)の使用をサポートすることができる。これらの信用できるソフトウエアモジュールの或るものは、他のプラットフォームに対してだけでなく、グラフィックスコントローラ314のような、同じプラットフォーム内の複数可の周辺デバイスに対しても、同等に「信用できる」保護されたアクセスを要求する。一般的に、そのようなアクセスでは、信用できるソフトウエアモジュールが、デバイスの能力及び/又は特定の識別情報を特定することができ、その後、デバイスとの暗号化されたセッションを確立して、データを交換できるようにするが、そのデータをシステム内の他のソフトウエアが詮索したり、妨害したりできないようにすることが要求される。
【0024】
デバイスを特定し、同時に暗号化されたセッションを確立する1つの従来技術の方法は、片側認証方式のディフィ・ヘルマン(DH)鍵交換過程を用いることである。この過程では、デバイスは、固有の公開/秘密RSA鍵又はECC鍵のペアを割り当てられる。そのデバイスは、秘密鍵を保持及び保護し、一方、公開鍵は、認証用証明書とともに、ソフトウエアモジュールに公開される。DH鍵交換過程において、そのデバイスは、その秘密鍵を用いて、メッセージに署名し、ソフトウエアモジュールは対応する公開鍵を用いて秘密鍵を検証することができる。これにより、ソフトウエアモジュールは、そのメッセージが実際に対象のデバイスからもたらされたことを認証できるようになる。
【0025】
しかしながら、この認証過程はRSA鍵又はECC鍵を用いるので、そのデバイスは固有且つ証明可能な識別情報を有する。そのデバイスに、その秘密鍵を用いてメッセージに署名させることができる任意のソフトウエアモジュールが、この特定の固有のデバイスがコンピュータシステム内に存在することを証明することができる。デバイスがめったに処理システム間を移動しないものとすると、これは、証明可能な固有のコンピュータシステム識別情報も表す。さらに、そのデバイスの公開鍵そのものは、一定の固有の値、すなわち、実効的には永久的な「クッキー」を表す。いくつかの事例では、これらの特徴は、プライバシーに対する重大な問題と見なすことができる。
【0026】
1つの代替の手法が、2004年 月 日に出願され、本出願の所有者に譲渡された、「An Apparatus and Method for Establishing an Authenticated Encrypted Session with a Device Without Exposing Privacy-Sensitive Information」というタイトルの同時係属中の特許出願第10/ , 号に記述される。その手法では、片側認証方式のディフィ・ヘルマン過程においてRSA鍵又はECC鍵を用いる代わりに、直接証明鍵が用いられる。この手法を用いるデバイスは、特定のデバイスファミリに属するものとして認証されることができ、デバイスファミリは、そのデバイスの挙動又は信用性についての保証を含むことができる。その手法は、いかなる固有に特定する情報も明らかにすることなく、その情報を用いて、処理システムを表す固有の識別情報を確立することができる。
【0027】
この手法は良好に機能するが、RSA鍵又はECC鍵よりも大きい場合もある直接証明秘密鍵を保持するために、デバイス内に付加的な記憶容量を必要とする。この付加的な記憶容量の要件の負担を緩和するために、本発明の実施形態は、デバイス内に大きな付加的な記憶容量を必要とすることなく、デバイスが鍵を必要とするときに、そのデバイスが確実に直接証明秘密鍵を所有するようにするためのシステム及び過程を定義する。
【0028】
本発明の少なくとも1つの実施形態では、デバイス製造業者が、製造ラインにおいて、128ビット擬似ランダム数をデバイスに格納し、はるかに大きな直接証明秘密鍵(DPpri)は、暗号化して、被保護サーバによって運用されるオンラインサービスを用いて、現場においてデバイスに転送することができる。他の実施形態は、128ビットよりも長いか、又は短い数をデバイスに格納することができる。この過程は、指定されたデバイスだけが暗号解読し、その割り当てられたDPpri鍵を用いることができることを確実にする。図5は、本発明の一実施形態による、直接証明鍵を割り当てるためのシステム500の図である。このシステム内には4つのエンティティ、すなわちデバイス製造用被保護システム502、デバイス製造用生産システム503、クライアントコンピュータシステム504及び被保護サーバ522が存在する。デバイス製造用被保護システムは、デバイス506の製造前に、セットアップ過程において用いられる処理システムを含む。製造用被保護システム502は、被保護システムがデバイス製造現場の外部のハッカーの攻撃から保護されるように、デバイス製造業者によって運用されることができる(たとえば、それは閉じたシステムである)。製造用生産システム503は、デバイスの製造時に用いることができる。一実施形態では、被保護システム及び生産システムは、同じシステムであってもよい。デバイス506は、クライアントコンピュータシステムに収容するための任意のハードウエアデバイス(たとえば、メモリコントローラ、グラフィックスコントローラのような周辺デバイス、I/Oデバイス等)を含む。本発明の一実施形態では、そのデバイスは、擬似ランダム値RAND508と、鍵サービス公開鍵ハッシュ値509とを備え、それらの値は、そのデバイスの不揮発性記憶装置に格納される。
【0029】
製造用被保護システムは、被保護データベース510、及び生成関数512を含む。被保護データベースは、以下に記述されるようにして、生成関数512によって生成される多数の擬似ランダム値(少なくとも、製造されるデバイス当たり1つの値)を格納するためのデータ構造を含む。生成関数は本明細書で鍵ブロブ514と呼ばれるデータ構造を生成するためのロジック(ソフトウエア又はハードウエアのいずれかで実施される)を含む。鍵ブロブ514は、少なくとも3つのデータ項目を備える。固有直接証明秘密鍵(DPpri)は、署名するためにデバイスが用いることができる暗号鍵を含む。DP秘密ダイジェスト516(DPpri Digest)は、SHA−1のような、安全なメッセージダイジェストを生成する任意の既知の方法に基づくDPpriのメッセージダイジェストを含む。いくつかの実施形態は、互換性を確保するために、鍵ブロブの一部としてビットストリームを含む擬似ランダム初期化ベクトル(IV)518を含むことができる。その暗号化のためにストリーム暗号が用いられる場合には、ストリーム暗号においてIVを用いるための既知の方法においてIVが用いられる。その暗号化のためにブロック暗号が用いられる場合には、IVは、暗号化されるべきメッセージの一部として用いられることになり、それにより、暗号化の各インスタンスが異なるようにする。製造用被保護システムは、後にさらに詳細に説明されるように、オンラインプロトコルに用いられる鍵サービス公開鍵507も含む。
【0030】
本発明の一実施形態では、製造用被保護システムは、複数可の鍵ブロブ(後に詳細に説明される)を生成し、その鍵ブロブを被保護サーバ522上の鍵ブロブデータベース520に格納する。一実施形態では、鍵ブロブデータベース内には多数の鍵ブロブが存在する場合がある。被保護サーバは、デバイス製造業者、デバイス販売者又は他の提携するエンティティによって運用することができる。被保護サーバは、たとえばインターネットのようなネットワークを用いて、クライアントコンピュータシステム504に通信可能に接続することができる。また被保護サーバは、被保護サーバとデバイスとの間のオンラインプロトコルにおいて用いるための鍵サービス秘密鍵511も含む。
【0031】
システム504内に収容されるデバイス506との通信セッションの認証及び鍵交換のために直接証明プロトコルを使用することを望むクライアントコンピュータシステム504は、後にさらに詳細に説明される鍵サービス公開/秘密鍵ペア及びオンラインプロトコルを用いて、被保護サーバ上の鍵ブロブデータベース520から、選択された鍵ブロブ514を読み出すことができる。鍵ブロブデータは、直接証明プロトコルを実施する際に用いるための局在鍵ブロブ524(後に説明される)を生成するために、デバイスによって用いられることができる。デバイス506を初期化し、制御するために、クライアントコンピュータシステムによって、デバイスドライバソフトウエア526が実行される。
【0032】
本発明の実施形態では、5つの別個の動作ステージが存在することができる。図6は、本発明の一実施形態による、直接証明鍵を割り当てる方法のステージを示す流れ図600である。本発明の実施形態によれば、各ステージにおいて、いくつかの動作を実行することができる。デバイス製造業者の現場には、少なくとも3つのステージ、すなわち被保護サーバセットアップステージ601、デバイス製造業者セットアップステージ602及びデバイス製造業者生産ステージ604のステージが存在する。本明細書では、図7を参照しながら、被保護サーバセットアップステージが説明される。また本明細書では、図8を参照しながら、デバイス製造業者セットアップステージが説明される。さらに本明細書では、図9を参照しながら、デバイス製造業者生産ステージが説明される。クライアントコンピュータシステムを有するコンシューマの現場には、少なくとも2つのステージ、すなわち、クライアントコンピュータシステムセットアップステージ606及びクライアントコンピュータシステム使用ステージ608が存在する。本明細書では、図10〜図12を参照しながら、クライアントコンピュータシステムセットアップステージが説明される。また本明細書では、図13を参照しながら、クライアントコンピュータシステム使用ステージが説明される。
【0033】
図7は、本発明の一実施形態による、被保護サーバセットアップステージ処理を示す流れ図700である。この処理は、デバイスの製造前にデバイス製造業者が実行することができる。ブロック702では、デバイス製造業者が、鍵検索要求をサポートするために、被保護サーバ522を配設する。一実施形態では、被保護サーバは、既知の態様でインターネットに通信可能に接続される。セキュリティを改善するために、被保護サーバは、製造用被保護システム又は製造用生産システムにおいて用いられるものと同じ処理システムにすべきではない。ブロック704では、デバイス製造業者が、鍵サービス公開/秘密鍵ペアを生成し、それは後に、被保護サーバによって提供される鍵検索サービスのために用いられる。一実施形態では、鍵サービス公開/秘密鍵ペアは、被保護サーバに格納することができる。この鍵ペアは、そのシステムによって実行される全ての処理に対して一度だけ生成してもよく、又はデバイスの種類毎に新たな鍵ペアを生成してもよい。ブロック706では、デバイス製造業者が、鍵サービス公開鍵507を製造用被保護システム502に転送する。
【0034】
図8は、本発明の一実施形態による、デバイス製造セットアップ処理を示す流れ図800である。一実施形態では、デバイス製造業者が、製造用被保護システム502を用いて、これらの動作を実行することができる。ブロック802では、デバイス製造業者が、製造されることになるデバイスの種類毎に直接証明ファミリ鍵ペア(Fpub及びFpri)を生成する。固有のデバイスはそれぞれ、1つのDPpri鍵を有することになり、DPpriを用いて生成される署名がFpubによって検証できるようにする。デバイスの種類は、選択された製造ライン(すなわち、デバイスのタイプ)若しくはバージョン番号に基づく製造ラインのサブセット、又はデバイスの他の特徴のような、デバイスの任意のセット又はサブセットを含むことができる。ファミリ鍵ペアは、そのデバイスの種類のために生成されたものであり、そのデバイスの種類によって用いられる。
【0035】
製造されることになるデバイス毎に、製造用被保護システム502の生成関数512が、ブロック804〜820を実行する。最初に、ブロック804では、生成関数が、固有の擬似ランダム値(RAND)508を生成する。一実施形態では、RANDの長さは128ビットである。他の実施形態では、他の長さの値を用いることができる。一実施形態では、複数のデバイスのための擬似ランダム値を予め生成しておくことができる。ブロック806では、デバイスによってサポートされる一方向関数fを用いて、生成関数が、固有のRAND値から対称暗号化鍵SKEYを生成する(SKEY=f(RAND))。一方向関数は、この目的を果たすのに相応しい任意の既知のアルゴリズムであってもよい(たとえば、SHA−1、MGF1、データ暗号化標準規格(DES)、トリプルDES、次世代暗号化標準規格(AES)等)。ブロック808では、一実施形態において、生成関数が、SKEYを用いて「ヌルエントリ」(たとえば、0バイトの小さな数)を暗号化することによって、被保護サーバ522上の鍵ブロブデータベース520内にある、このデバイスの鍵ブロブ514を参照するために用いられることになる識別子(ID)ラベルを生成する(DeviceID=Encrypt(0..0)usingSKEY)。他の実施形態では、デバイスIDを生成する他の方法を用いてもよく、又はSKEYによって他の値を暗号化してもよい。
【0036】
次に、ブロック810では、生成関数が、デバイスのファミリ公開鍵(Fpub)と互いに関連するDP秘密署名鍵DPpriを生成する。ブロック812では、既知の方法を用いて、生成関数は、DPpriをハッシュしてDPpriダイジェストを生成する(たとえば、SHA−1又は別のハッシュアルゴリズムを用いる)。ブロック814では、生成関数は、そのデバイスのための鍵ブロブデータ構造を構成する。その鍵ブロブは、少なくともDPpri及びDPpriダイジェストを含む。一実施形態では、鍵ブロブは、複数の擬似ランダムに生成されたビットを有するランダム初期化ベクトルも含む。これらの値は、SKEYを用いて暗号化され、暗号化された鍵ブロブ514を生成することができる。ブロック816では、ブロック808において生成されたデバイスID及びブロック814において生成された暗号化された鍵ブロブ514を、1つのエントリとして、鍵ブロブデータベース520に格納することができる。一実施形態では、鍵ブロブデータベース内のエントリは、デバイスIDによって指示することができる。ブロック818では、現在のRAND値を、被保護データベース510に格納することができる。SKEY及びDPpriは現場にあるデバイスによって生成し直すことができるので、ブロック820において、それらを削除することができる。
【0037】
DPpriダイジェストの生成及びそれに続くSKEYによる暗号化は、SKEYを所有していないいかなるエンティティもDPpriの内容を特定することができないように、また、SKEYを所有しているエンティティによって後に検出されるまでは、SKEYを所有していないエンティティによって鍵ブロブの内容を変更することができないように設計される。他の実施形態では、この秘密性及び保全性の保護を提供するための他の方法を用いることもできる。いくつかの実施形態では、保全性の保護は必要でない場合があり、秘密性だけを提供する方法を用いることができる。この場合、DPpriダイジェストの値は不要であろう。
【0038】
ブロック820後のいずれかの時点で、ブロック822において、RAND値の被保護データベースが、製造工程中にデバイスにRAND値を格納することになる製造用生産システム503に安全にアップロードすることができる。このアップロードが検証されると、RAND値は、製造用被保護システム502から安全に削除することができる。最後に、ブロック824において、複数の暗号化された鍵ブロブを有する鍵ブロブデータベース520が、デバイスIDフィールドによって索引を付けられるような、被保護サーバ522上に格納されることができ、デバイス毎に1つの鍵ブロブデータベースエントリが用いられることになる。
【0039】
図9は、本発明の一実施形態による、デバイス製造時の生産処理を示す流れ図900である。デバイスが生産ラインにおいて製造されているとき、ブロック902では、製造用生産システムが、被保護データベースから未使用のRAND値を選択する。その後、選択されたRAND値を、デバイス内の不揮発性記憶装置に格納することができる。一実施形態では、不揮発性記憶装置はTPMを含む。一実施形態では、RAND値は、不揮発性記憶装置の約16バイトに格納することができる。ブロック904では、鍵サービス公開鍵507のハッシュ509を、そのデバイスの不揮発性記憶装置に格納することができる。ハッシュは、任意の既知のハッシュアルゴリズムを用いて生成することができる。一実施形態では、そのハッシュ値は、不揮発性記憶装置の約20バイトに格納することができる。ブロック906では、RAND値を格納することに成功すると、製造用生産システムは、被保護データベース510内のデバイスのそのRAND値のあらゆる記録を破壊する。この時点では、そのデバイス内にRAND値のただ1つのコピーが格納される。
【0040】
代替の一実施形態では、RAND値は、デバイスの製造中に生成することができ、その後、鍵ブロブを計算するために製造用被保護システムに送信することができる。
【0041】
別の実施形態では、デバイスにおいてRAND値を生成することができ、デバイス及び製造用被保護システムは、そのデバイスの外部にはDPpri鍵を明らかにしない方法を用いる、DPpri鍵を生成するためのプロトコルに従うことができる。その後、そのデバイスはデバイスID、SKEY及び鍵ブロブを生成することができる。そのデバイスは、デバイスID及び鍵ブロブを被保護データベース510に格納するために、製造システムに渡すであろう。この方法では、製造システムは最終的には、被保護データベース内に同じ情報(デバイスID、鍵ブロブ)を有することになるが、RAND又はDPpriの値は知らない。
【0042】
図10〜図12は、本発明の一実施形態による、クライアントコンピュータシステムセットアップ処理の流れ図である。クライアントコンピュータシステムは、システムを起動することの一部として、これらの動作を実行することができる。図10のフロー1000を開始すると、ブロック1002では、クライアントコンピュータシステムを通常通りに起動することができ、そのデバイスのためのデバイスドライバソフトウエアモジュール526を、クライアントコンピュータシステムのメインメモリにロードすることができる。デバイスドライバが初期化され、実行し始めるとき、ブロック1004において、デバイスドライバは、デバイス506のための大容量記憶デバイス308に格納されている暗号化された局在鍵ブロブ524が既に存在するか否かを判定する。存在する場合には、それ以上、セットアップ処理が実行される必要はなく、セットアップ処理はブロック1006において終了する。存在しない場合には、その処理はブロック1008で続けられる。ブロック1008では、デバイスドライバが、デバイス506に対して鍵獲得コマンドを発行して、デバイスのDP秘密鍵獲得過程を開始する。
【0043】
ブロック1010では、デバイスドライバが、デバイスに、鍵サービス公開鍵507を送信する。ブロック1014では、デバイスが、受信された鍵サービス公開鍵を抽出し、その鍵サービス公開鍵のハッシュ値を生成し、受信された鍵サービス公開鍵のハッシュを、デバイス上の不揮発性記憶装置に格納されている鍵サービス公開鍵ハッシュ509と比較する。2つのハッシュが一致する場合には、受信された鍵サービス公開鍵が、デバイス製造業者の鍵検索サービスの公開鍵であることがわかり、クライアントコンピュータシステムセットアップ処理が続けられる。
【0044】
別の実施形態では、デバイスは、証明された鍵サービス公開鍵の証明書を受信することができ、その証明書は、そのハッシュがデバイス上の不揮発性記憶装置に格納されている鍵サービス公開鍵ハッシュ509である鍵サービス公開鍵までの証明書チェーンを通して検証することができる。その後、証明された鍵サービス公開鍵を、後続のステップの鍵サービス公開鍵として用いることができる。
【0045】
ブロック1018では、デバイスが、その一方向関数fを用いて、埋め込まれたRAND値508から、対称鍵SKEYを生成し直す(SKEY=f(RAND))。ブロック1020では、デバイスが、SKEYを用いて「ヌルエントリ」(たとえば、0バイトの小さな数)を暗号化することによって、その固有のデバイスIDラベルを生成する(DeviceID=Encrypt(0..0)using SKEY)。その処理は、図11の流れ図1100に続く。
【0046】
図11のブロック1102では、デバイスが、一時的な対称鍵Tkeyを生成する。その鍵は、被保護サーバに送信されることになり、被保護サーバはその鍵を用いて、被保護サーバがデバイスに返送するメッセージを暗号化する。ブロック1104では、デバイスが、デバイスID及び一時的な対称鍵Tkeyを含む鍵検索要求メッセージを作成し、ブロック1014においてデバイスドライバから受信された鍵サービス公開鍵を用いて、そのメッセージを暗号化し、鍵検索要求メッセージを、デバイスドライバを介して被保護サーバに送信する(Retrieve Key Request=Encrypt(DeviceID,Tkey)with the key service public key)。公開鍵でメッセージを暗号化するために、典型的には、対称暗号のためのセッション鍵(Skey)を作成し、公開鍵でセッション鍵を暗号化し、その後、セッション鍵でメッセージを暗号化することは当業者には理解されよう。ブロック1106では、被保護サーバが、鍵サービス秘密鍵511を用いて、受信された鍵要求メッセージを暗号解読し、その中に格納されているフィールドを抽出する。ここで、被保護サーバはデバイスIDを知っているので(鍵要求メッセージから得られる)、被保護サーバは、一致するデバイスID値を含む記録を得るために鍵ブロブデータベースを探索し、その記録から、デバイスの暗号化された鍵ブロブを抽出する。ブロック1110では、被保護サーバが、ファミリ公開鍵及び暗号化された鍵ブロブを含む第2の応答メッセージを作成し、そのデバイスによって供給される一時的な対称鍵Tkeyを用いて、第2の応答メッセージを暗号化する。したがって、Key Response=(Family public key,Encryption of(Encrypted Keyblob)using Tkey)である。暗号化された鍵ブロブをTkeyで暗号化することは、鍵ブロブを保護することではない。なぜなら、鍵ブロブは、そのデバイスだけが生成することができる対称鍵SKEYで既に暗号化されているためである。むしろ、このようにしてメッセージを暗号化することにより、鍵獲得過程が実行される度に、返送される鍵ブロブが確実に変化し、それにより、鍵ブロブそのものを「クッキー」として用いることができないことが確実になる。ブロック1112において、その第2の応答メッセージを、クライアントコンピュータシステム上のデバイスドライバに返送することができ、デバイスドライバが、そのメッセージをデバイスに転送する。
【0047】
ブロック1114では、デバイスが、第2の応答メッセージからファミリ公開鍵を抽出し、一時的な対称鍵Tkeyを用いて、包まれた鍵ブロブを暗号解読し、暗号化された鍵ブロブをデバイスの揮発性メモリに格納する。その後、処理は、図12の流れ図1200において続けられる。
【0048】
図12のブロック1216では、デバイスが、DPpri及びDPpriダイジェストを生成するために、対称鍵SKEYを用いて、暗号化された鍵ブロブを暗号解読し、これらの値をその不揮発性記憶装置に格納する(Decrypted Keyblob=Decrypt(IV,DPpri,DPpriDigest)using SKEY)。初期化ベクトル(IV)は破棄することができる。ブロック1218では、デバイスが、DPpriをハッシュし、その結果をDPpriダイジェストと比較することによって、DPpriの保全性を検査する。その比較が良好である場合には、デバイスは、DPpriをその有効鍵として受け取る。一実施形態では、デバイスは、鍵獲得済みフラグを真に設定し、DP秘密鍵の獲得に成功したことを指示することもできる。ブロック1220では、デバイスが新たなIVを選択し、その新たなIVを用いて、新たな暗号化された局在鍵ブロブを作成する(Localized Keyblob=Encrypt(IV2,DPpri,DPpriDigest)using SKEY)。一実施形態では、新たな暗号化された局在鍵ブロブを、クライアントコンピュータシステム上の鍵検索ユーティリティソフトウエアモジュール(図5に示されない)に返送することができる。ブロック1222では、鍵検索ユーティリティが、暗号化された局在鍵ブロブを、クライアントコンピュータシステム内の記憶装置(たとえば、大容量記憶デバイス308等)に格納する。この時点で、デバイスのDPpriは、クライアントコンピュータシステム内に安全に格納される。
【0049】
デバイスがセットアップ処理中にDPpriを獲得すると、その後、デバイスはDPpriを用いることができる。図13は、本発明の一実施形態による、クライアントコンピュータシステム処理の流れ図1300である。クライアントコンピュータシステムは、セットアップが完了した後にいつでも、これらの動作を実行することができる。ステップ1302では、クライアントコンピュータシステムを通常通りに起動することができ、デバイスのためのデバイスドライバ526を、メインメモリにロードすることができる。デバイスドライバが初期化され、実行し始めるとき、デバイスドライバは、デバイス506のための大容量記憶デバイス308に格納された暗号化された局在鍵ブロブ524が既に存在するか否かを判定する。存在しない場合には、図10〜図12のセットアップ処理が実行される。このデバイスのために利用することができる暗号化された局在鍵ブロブが存在する場合には、処理はブロック1306で続けられる。ブロック1306では、デバイスドライバが、暗号化された局在鍵ブロブを検索し、その鍵ブロブをデバイスに転送する。一実施形態では、鍵ブロブの転送は、鍵ブロブロードコマンドを実行することによって達成することができる。
【0050】
ブロック1308では、デバイスが、その一方向関数fを用いて、埋め込まれたRAND値508から、対称鍵SKEY(ここで暗号解読する際に用いられる)を生成し直す(SKEY=f(RAND))。ブロック1310では、デバイスが、対称鍵SKEYを用いて、暗号化された局在鍵ブロブを暗号解読し、DPpri及びDPpriダイジェストを生成し、これらの値を、その不揮発性記憶装置に格納する(Decrypted Keyblob=Decrypt(IV2,DPpri,DPpriDigest)using SKEY)。第2の初期化ベクトル(IV2)は破棄することができる。ブロック1312では、デバイスが、DPpriをハッシュし、その結果をDPpriダイジェストと比較することによって、DPpriの保全性を検査する。その比較が良好である(すなわちダイジェストが一致する)場合には、デバイスは、DPpriを、以前に獲得された有効鍵として受け取り、それを使用できるようにする。またデバイスは、鍵獲得済みフラグを真に設定し、DP秘密鍵の獲得に成功したことを指示することもできる。ブロック1314では、デバイスが、さらに別のIVを選択し、その新たなIVを用いて、新たな暗号化された局在鍵ブロブを作成する(Localizad Keyblob=Encrypt(IV3,DPpri,DPpriDigest)using SKEY)。新たな暗号化された局在鍵ブロブは、鍵検索ユーティリティに返送することができる。ブロック1316では、鍵検索ユーティリティが、暗号化された局在鍵ブロブを、クライアントコンピュータシステム内の記憶装置(たとえば、大容量記憶デバイス308等)に格納する。この時点で、デバイスのDPpriは、もう一度、クライアントコンピュータシステム内に安全に格納される。
【0051】
本発明の一実施形態では、一度にデバイスDP秘密鍵の全てを生成する必要はない。被保護サーバ上の鍵ブロブデータベースが定期的に更新されるものと仮定すると、デバイスDP秘密鍵は、必要に応じて、1回分ずつ生成することができる。鍵ブロブデータベースが被保護サーバ上で更新される度に、それは、既に生成されているが、まだデバイスに割り当てられていないデバイス鍵を含む、これまでに生成されたような鍵ブロブデータベースを含むであろう。
【0052】
別の実施形態では、デバイスのDPpri鍵の生成を遅らせて、デバイス鍵を必要とするデバイスに対してだけ、これらの鍵が生成されるようにすることができる。デバイスから第1の鍵獲得要求を受信すると、被保護サーバは、依然としてデバイスのRAND値を保持する製造用被保護システムに対する要求を生成することができる。この時点で、製造用被保護システムは、そのデバイスのためのDPpri鍵を生成し、その鍵を被保護サーバに返送し、そのときにだけRAND値を破壊する。
【0053】
別の実施形態では、デバイスの不揮発性メモリに鍵サービス公開鍵のハッシュを格納する代わりに、デバイス製造業者が、ルート鍵のハッシュを格納し、その後、そのルート鍵で鍵サービス公開鍵のための証明書に署名することを選ぶこともできる。このようにして、同じルート鍵を、多数のデバイスのために用いることができる。
【0054】
本明細書において説明される動作は、逐次的な過程として記述することができるが、それらの動作のうちのいくつかは、実際には、並列して、又は同時に実行することができる。さらに、いくつかの実施形態では、本発明の精神から逸脱することなく、それらの動作の順序を並べ替えることができる。
【0055】
本明細書に記述される技法は、任意の特定のハードウエア構成又はソフトウエア構成には限定されない。それらは、任意のコンピューティング環境又は処理環境において適用できる見込みがある。それらの技法は、ハードウエア、ソフトウエア、又はその2つの組み合わせで実施することができる。それらの技法は、それぞれプロセッサと、プロセッサによって読み出すことができる記憶媒体(揮発性メモリ及び不揮発性メモリ及び/又は記憶素子を含む)と、少なくとも1つの入力デバイスと、複数可の出力デバイスとを含む、モバイルコンピュータ又は設置されたコンピュータ、携帯情報端末、セットトップボックス、携帯電話及びポケットベル、並びに他の電子デバイスのような、プログラミング可能な機械上で実行されるプログラムにおいて実施することができる。入力デバイスを用いて入力されるデータにプログラムコードが適用され、説明された機能が実行され、出力情報が生成される。その出力情報は、複数可の出力装置に適用することができる。本発明が、マルチプロセッサシステム、ミニコンピュータ、メインフレームコンピュータ等を含む、種々のコンピュータシステム構成で実施できることは当業者には理解されよう。また本発明は、分散型のコンピューティング環境でも実施することができ、その場合には、通信ネットワークを通してリンクされる遠隔処理デバイスによって、タスクを実行することができる。
【0056】
各プログラムは、処理システムと通信するために、高度な手続き型プログラミング言語又はオブジェクト指向プログラミング言語で実施することができる。しかしながら、プログラムは、所望により、アセンブリ言語又は機械語で実施することもできる。いずれの場合でも、言語は、コンパイル又は翻訳することができる。
【0057】
プログラム命令を用いて、複数の命令でプログラミングされる汎用処理システム又は特定用途の処理システムが、本明細書に記述される動作を実行することができる。別法では、それらの動作を実行するためのハードワイヤードロジックを含む特定のハードウエア構成要素によって、又はプログラミングされたコンピュータ構成要素及びカスタムハードウエア構成要素の任意の組み合わせによって、それらの動作を実行することができる。本明細書に記述される方法は、処理システム又は他の電子デバイスをプログラミングして、それらの方法を実行するために用いることができる命令を格納している機械読取り可能媒体を含むことができるコンピュータプログラム製品として提供することができる。本明細書において用いられる用語「機械読取り可能媒体」は、機械によって実行するための一連の命令を格納又は符号化することができる任意の媒体を含み、その一連の命令によって、その機械が本明細書に記述される方法のいずれか1つの方法を実行するであろう。したがって、用語「機械読取り可能媒体」は、限定はしないが、固体メモリ、光ディスク及び磁気ディスク、並びにデータ信号を符号化する搬送波を含むであろう。さらに、当該技術分野では、ソフトウエアについて述べるときに、1つの動作を行うか、又は1つの結果を生成するような種々の形態(たとえば、プログラム、手順、過程、アプリケーション、モジュール、ロジック等)で述べるのが一般的である。そのような表現は、処理システムによってソフトウエアを実行することにより、プロセッサが1つの動作を実行するか、又は1つの結果を生成することを省略して表現しているにすぎない。
【0058】
本発明が、例示的な実施形態を参照しながら説明されてきたが、この説明は、限定する意味に解釈されることを意図していない。本発明が関連する技術分野の熟練者には明らかである、例示的な実施形態の種々の変更、及び本発明の他の実施形態は、本発明の精神及び範囲内にあると見なされる。
【図面の簡単な説明】
【0059】
【図1】本発明の一実施形態に従って動作するトラステッドプラットフォームモジュール(TPM)で実施されるプラットフォームを特徴とするシステムを示す図である。
【図2】図1のTPMを含むプラットフォームの第1の実施形態を示す図である。
【図3】図1のTPMを含むプラットフォームの第2の実施形態を示す図である。
【図4】図2のTPMで実施されるコンピュータシステムの1つの例示的な実施形態を示す図である。
【図5】本発明の一実施形態による、オンラインサービスを用いて、直接証明鍵をデバイスに割り当てるためのシステムの図である。
【図6】本発明の一実施形態による、オンラインサービスを用いて、直接証明鍵を割り当てる方法のステージを示す流れ図である。
【図7】本発明の一実施形態による、被保護サーバセットアップ処理を示す流れ図である。
【図8】本発明の一実施形態による、デバイス製造業者セットアップ処理を示す流れ図である。
【図9】本発明の一実施形態による、デバイス製造業者生産処理を示す流れ図である。
【図10】本発明の一実施形態による、クライアントコンピュータシステムセットアップ処理の流れ図である。
【図11】本発明の一実施形態による、クライアントコンピュータシステムセットアップ処理の流れ図である。
【図12】本発明の一実施形態による、クライアントコンピュータシステムセットアップ処理の流れ図である。
【図13】本発明の一実施形態による、クライアントコンピュータシステム処理の流れ図である。
【技術分野】
【0001】
本発明は包括的には、コンピュータセキュリティに関し、より具体的には、処理システム内のデバイスに暗号鍵を安全に割り当てることに関する。
【背景技術】
【0002】
内容保護及び/又はコンピュータセキュリティ機構をサポートするいくつかの処理システムアーキテクチャでは、特別に保護された、すなわち「信用できる」ソフトウエアモジュールが、その処理システム内の特別に保護された、すなわち「信用できる」ハードウエアデバイス(たとえば、グラフィックスコントローラカード等)との認証された暗号化通信セッションを生成できることが要求される。デバイスを特定するために、且つ同時に暗号化された通信セッションを確立するために用いられる1つの一般的な方法は、片側認証方式のディフィ・ヘルマン(DH)鍵交換過程を用いることである。この過程では、デバイスは、固有の公開/秘密リベスト、シャミル及びアデルマン(Rivest, Shamir and Adelman)(RSA)アルゴリズム鍵ペア、又は固有の楕円曲線暗号(ECC)鍵ペアを割り当てられる。しかしながら、この認証過程はRSA鍵又はECC鍵を用いるので、その際、デバイスは、固有且つ証明可能な識別情報を有し、それによりプライバシーに対する懸念が生じる可能性がある。最悪の場合には、このような懸念がある結果として、この種のセキュリティを提供する信用できるデバイスを製造するための元の装置製造業者(OEM)からの支援が不足することがある。
【0003】
本発明の特徴及び利点は、本発明の以下に記載される詳細な説明から明らかになるであろう。
【発明を実施するための最良の形態】
【0004】
[詳細な説明]
直接証明に基づくディフィ・ヘルマン(DH)鍵交換プロトコルを用いて、保護された/信用できるデバイスが自らを認証できるようにし、且つ信用できるソフトウエアモジュールとの暗号化された通信セッションを確立できるようにすることによって、処理システム内で任意の固有の識別情報が作成されるのが避けられ、それにより、プライバシーに対する懸念が生じるのが避けられる。しかしながら、製造ライン上でデバイス内に直接証明秘密鍵を直に埋め込むには、そのデバイス上に、他の手法よりも高度に保護された不揮発性記憶装置を必要とするので、デバイスコストが高くなる。本発明の一実施形態は、直接証明(DP)秘密鍵(たとえば、署名するために用いられる)が、オンラインサービスを用いてデバイスに安全に転送されるようにし、その後、デバイスそのものによってデバイスに導入されるようにするための方法である。本発明において提示される方法は、デバイスが導入過程のための識別情報を明らかにする必要がないように設計される。一実施形態では、この能力をサポートするために必要とされるデバイス記憶装置は、約300〜700バイトから約40バイトまで削減することができる。デバイスのための直接証明に基づくディフィ・ヘルマン(DH)鍵交換を実施するために必要とされる不揮発性記憶装置の容量をこのように削減する結果として、この技法がさらに広く受け入れられるようになるであろう。
【0005】
本発明の実施形態では、DP秘密署名鍵は、デバイス内に、又はデバイスとともに割り当てられることはない。代わりに、デバイスは、現場で稼動中のデバイスが、製造業者若しくは販売業者、又は代理人によって提供されるオンライン被保護サーバから、その秘密鍵を安全に検索することができるプロトコルをサポートする。このプロトコルは、デバイスとサーバとの間に信用できるチャネルを生成し、局在処理システム上にあるソフトウエアを含む、いかなる介在するソフトウエアにおいても信用を必要としない。
【0006】
本明細書において本発明の「一(one)実施形態」又は「或る(an)実施形態」を参照することは、その実施形態に関連して記述される特定の特徴、構造又は特性が、本発明の少なくとも1つの実施形態に含まれることを意味する。したがって、本明細書の全体を通して種々の場所において「一実施形態では」という言い回しが現れても、必ずしも全てが同じ実施形態を参照しているとは限らない。
【0007】
以下の説明では、本発明の複数可の実施形態のいくつかの特定の特徴を記述するために、いくつかの特定の専門用語が用いられる。たとえば、「プラットフォーム」は、情報を送信及び受信するようになっている任意のタイプの通信デバイスと定義される。種々のプラットフォームの例には、限定又は制限はしないが、コンピュータシステム、携帯情報端末、携帯電話、セットトップボックス、ファクシミリ装置、プリンタ、モデム、ルータ等が含まれる。「通信リンク」は、プラットフォームに適合する複数可の情報搬送媒体と広く定義される。通信リンクの種々のタイプの例には、限定又は制限はしないが、電線(複数可)、光ファイバ(複数可)、ケーブル(複数可)、バストレース(複数可)、或いはワイヤレスシグナリング技術が含まれる。
【0008】
「チャレンジャ」は、別のエンティティからの何らかの信憑性の検証又は許可を要求する任意のエンティティ(たとえば、人、プラットフォーム、システム、ソフトウエア及び/又はデバイス)を指している。通常、これは、要求された情報を開示又は提供する前に実行される。「レスポンダ」は、その許可、妥当性及び/又は識別情報の証明を与えることを要求されている任意のエンティティを指している。「認証製造業者」と入替え可能に用いることができる「デバイス製造業者」は、プラットフォーム又はデバイスを製造又は構成する任意のエンティティを指している。
【0009】
本明細書において用いられるときに、レスポンダが或る暗号情報(たとえば、デジタル署名、鍵のような秘密情報等)を所有しているか、又は知っていることを、チャレンジャに対して「証明する」か、又はチャレンジャに「確信させる」ということは、チャレンジャに対して開示される情報及び証明を基にすると、レスポンダがその暗号情報を有する確率が高いことを意味する。チャレンジャに対してその暗号情報を「明らかにする」か、又は「開示する」ことなく、このことをチャレンジャに対して証明するということは、チャレンジャに対して開示される情報を基にしても、チャレンジャが計算によって暗号情報を求めることができないことを意味する。
【0010】
そのような証明は、これ以降、直接証明と呼ばれる。用語「直接証明」は、ゼロ知識証明を指しており、これらのタイプの証明は当該技術分野において一般的に知られている。詳細には、本明細書において参照されるような具体的な直接証明プロトコルは、2002年11月27日に出願され、本出願の所有者に譲渡された「System and Method for Establishing Trust Without Revealing Identity」というタイトルの同時係属中の特許出願第10/306,336号の発明の主題である。直接証明は、発行者が多数のメンバから成るファミリを定義するプロトコルを定義し、そのメンバは、発行者によって定義されるような共通の特徴を共有する。発行者は、ファミリ公開鍵及び秘密鍵ペア(Fpub及びFpri)を生成し、その鍵ペアが全体としてファミリを表す。Fpriを用いて、発行者は、そのファミリ内の個々のメンバ毎に固有の直接証明秘密署名鍵(DPpri)も生成することができる。個々のDPpriによって署名された任意のメッセージを、ファミリ公開鍵Fpubを用いて検証することができる。しかしながら、そのような検証は、署名者がファミリのメンバであることしか特定しない。個々のメンバについての固有に特定する情報は明らかにされない。一実施形態では、発行者は、デバイス製造業者又は代理人であってもよい。すなわち、発行者は、共有される特徴に基づいてデバイスファミリを定義することができ、ファミリ公開鍵/秘密鍵ペアを生成することができ、さらにDP秘密鍵を生成して、デバイスに導入することができるエンティティであってもよい。また発行者は、デバイスファミリの鍵及び特徴のソースを特定するファミリ公開鍵のための証明書を生成してもよい。
【0011】
ここで、図1を参照すると、本発明の一実施形態に従って動作する、信用できるハードウエアデバイス(「トラステッドプラットフォームモジュール」又は「TPM」と呼ばれる)で実施されるプラットフォームを特徴とするシステムの一実施形態が示される。第1のプラットフォーム102(チャレンジャ)が、第2のプラットフォーム104(レスポンダ)が自らについての情報を提供するという要求106を送信する。要求106に応答して、第2のプラットフォーム104は、要求された情報108を提供する。
【0012】
さらに、セキュリティを高くするために、第1のプラットフォーム102は、要求された情報108が、選択されたデバイス製造業者又は選択されたデバイス製造業者グループ(これ以降、「デバイス製造業者(複数可)110」と呼ばれる)によって製造されたデバイスからもたらされたことを検証することが必要な場合もある。たとえば、本発明の一実施形態の場合、第1のプラットフォーム102は、第2のプラットフォーム104に対して、デバイス製造業者(複数可)110によって生成された暗号情報(たとえば、署名)を所有していることを示すように要求する。その要求は、要求106(図示される)、又は別個の送信のいずれかに組み込むことができる。第2のプラットフォーム104は、応答の形で、情報を提供することによってその要求に応答し、暗号情報を明らかにすることなく、第2のプラットフォーム104がデバイス製造業者(複数可)110によって生成される暗号情報を所有していることを第1のプラットフォーム102に確信させる。その応答は、要求された情報108(図示される)の一部であっても、別個の送信の一部であってもよい。
【0013】
本発明の一実施形態では、第2のプラットフォーム104は、信用できるプラットフォームモジュール(TPM)115を備える。TPM115は、デバイス製造業者(複数可)110によって製造される暗号デバイスである。本発明の一実施形態では、TPM115は、パッケージ内に封入される小さな容量のオンチップメモリを備えるプロセッサを含む。TPM115は、或る応答が有効なTPMから送信されたことを第1のプラットフォームが判定できるようにする情報を、第1のプラットフォーム102に与えるように構成される。用いられる情報は、TPM又は第2のプラットフォームの識別情報を求めることができないようにする内容である。
【0014】
図2は、TPM115を備える第2のプラットフォーム104の第1の実施形態を示す。本発明のこの実施形態の場合、第2のプラットフォーム104は、TPM115に接続されるプロセッサ202を備える。一般的に、プロセッサ202は、情報を処理するデバイスである。たとえば、本発明の一実施形態では、プロセッサ202は、マイクロプロセッサ、デジタルシグナルプロセッサ、マイクロコントローラ、又は状態機械として実施することができる。別法として、本発明の別の実施形態では、プロセッサ202は、フィールドプログラマブルゲートアレイ(FPGA)、トランジスタ−トランジスタロジック(TTL)ロジック、又は特定用途向け集積回路(ASIC)のような、プログラマブルロジック又はハードコードロジックとして実現することができる。
【0015】
ここで、第2のプラットフォーム104はさらに、記憶ユニット206を備え、鍵、ハッシュ値、署名、証明書等の複数可の情報のような暗号情報を記憶できるようにする。「X」のハッシュ値は、「Hash(X)」として表すことができる。そのような情報は、図3に示されるように、記憶ユニット206の代わりに、TPM115の内部メモリ220に格納することもできると考えられる。暗号情報は、TPM115の外部に記憶される場合には特に、暗号化することができる。
【0016】
図4は、図2のTPM115で実施されるコンピュータシステム300を含むプラットフォームの一実施形態を示す。コンピュータシステム300は、バス302と、バス302に接続されるプロセッサ310とを備える。コンピュータシステム300はさらに、メインメモリユニット304と、スタティックメモリユニット306とを備える。
【0017】
ここで、メインメモリユニット304は、情報、及びプロセッサ310によって実行される命令を格納する揮発性半導体メモリである。またメインメモリ304は、プロセッサ310による命令の実行中に時間的な変数又は他の中間情報を格納するためにも用いることができる。スタティックメモリユニット306は、さらに永久的に、情報及びプロセッサ310のための命令を格納するための不揮発性半導体メモリである。スタティックメモリ306の例には、限定又は制限はしないが、リードオンリーメモリ(ROM)が含まれる。メインメモリユニット304及びスタティックメモリユニット306はいずれもバス302に接続される。
【0018】
本発明の一実施形態では、コンピュータシステム300はさらに、磁気ディスク又は光ディスクのようなデータ記憶デバイス308を備え、情報及び命令を格納するために、その対応するドライブもコンピュータシステム300に接続することができる。
【0019】
コンピュータシステム300は、バス302を介して、グラフィックスコントローラデバイス314にも接続することができ、そのデバイスは、エンドユーザに対して情報を表示する、陰極線管(CRT)、液晶ディスプレイ(LCD)又は任意のフラットパネルディスプレイのようなディスプレイ(図示せず)を制御する。一実施形態では、グラフィックスコントローラは、プロセッサによって実行されるソフトウエアモジュールとの認証された暗号化通信セッションを確立できることが望ましい場合もある。
【0020】
典型的には、プロセッサ310に情報及び/又はコマンド選択を伝達するために、文字数字入力デバイス316(たとえば、キーボード、キーパッド等)をバス302に接続することができる。別のタイプのユーザ入力デバイスは、プロセッサに方向情報及びコマンド選択を伝達し、且つディスプレイ314上でのカーソルの動きを制御するための、マウス、トラックボール、タッチパッド、スタイラス又はカーソル方向キー等のカーソル制御ユニット318である。
【0021】
通信インターフェースユニット320もバス302に接続される。インターフェースユニット320の例には、モデム、ネットワークインターフェースカード、又はローカルエリアネットワーク若しくはワイドエリアネットワークの一部を形成する通信リンクに接続するために用いられる他の既知のインターフェースが含まれる。このようにして、コンピュータシステム300は、たとえば、企業のイントラネット及び/又はインターネットのような、従来のネットワークインフラストラクチャを介して、多数のクライアント及び/又はサーバに接続することができる。一実施形態では、コンピュータシステムは、ネットワークを介して、被保護サーバにオンラインで接続することができる。
【0022】
いくつかの実施態様の場合、これまでに記述された構成要素よりも少ないか、又は多い構成要素を備えるコンピュータシステムが望ましい場合もあることは理解されよう。それゆえ、コンピュータシステム300の構成は、価格の制約、性能要件、技術的改善及び/又は他の事情のような数多くの要因に応じて、実施態様毎に異なるであろう。
【0023】
少なくとも1つの実施形態では、コンピュータシステム300は、システム内に他の好ましくないソフトウエアが存在する場合であっても、メインメモリ304及び/又は大容量記憶デバイス308に格納され、且つ特定の動作を成し遂げるためにプロセッサ310によって実行される、特別に保護された「信用できる」ソフトウエアモジュール(たとえば、改竄防止(tamper-resistant)ソフトウエア、又は保護されたプログラムを実行する能力を有するシステム)の使用をサポートすることができる。これらの信用できるソフトウエアモジュールの或るものは、他のプラットフォームに対してだけでなく、グラフィックスコントローラ314のような、同じプラットフォーム内の複数可の周辺デバイスに対しても、同等に「信用できる」保護されたアクセスを要求する。一般的に、そのようなアクセスでは、信用できるソフトウエアモジュールが、デバイスの能力及び/又は特定の識別情報を特定することができ、その後、デバイスとの暗号化されたセッションを確立して、データを交換できるようにするが、そのデータをシステム内の他のソフトウエアが詮索したり、妨害したりできないようにすることが要求される。
【0024】
デバイスを特定し、同時に暗号化されたセッションを確立する1つの従来技術の方法は、片側認証方式のディフィ・ヘルマン(DH)鍵交換過程を用いることである。この過程では、デバイスは、固有の公開/秘密RSA鍵又はECC鍵のペアを割り当てられる。そのデバイスは、秘密鍵を保持及び保護し、一方、公開鍵は、認証用証明書とともに、ソフトウエアモジュールに公開される。DH鍵交換過程において、そのデバイスは、その秘密鍵を用いて、メッセージに署名し、ソフトウエアモジュールは対応する公開鍵を用いて秘密鍵を検証することができる。これにより、ソフトウエアモジュールは、そのメッセージが実際に対象のデバイスからもたらされたことを認証できるようになる。
【0025】
しかしながら、この認証過程はRSA鍵又はECC鍵を用いるので、そのデバイスは固有且つ証明可能な識別情報を有する。そのデバイスに、その秘密鍵を用いてメッセージに署名させることができる任意のソフトウエアモジュールが、この特定の固有のデバイスがコンピュータシステム内に存在することを証明することができる。デバイスがめったに処理システム間を移動しないものとすると、これは、証明可能な固有のコンピュータシステム識別情報も表す。さらに、そのデバイスの公開鍵そのものは、一定の固有の値、すなわち、実効的には永久的な「クッキー」を表す。いくつかの事例では、これらの特徴は、プライバシーに対する重大な問題と見なすことができる。
【0026】
1つの代替の手法が、2004年 月 日に出願され、本出願の所有者に譲渡された、「An Apparatus and Method for Establishing an Authenticated Encrypted Session with a Device Without Exposing Privacy-Sensitive Information」というタイトルの同時係属中の特許出願第10/ , 号に記述される。その手法では、片側認証方式のディフィ・ヘルマン過程においてRSA鍵又はECC鍵を用いる代わりに、直接証明鍵が用いられる。この手法を用いるデバイスは、特定のデバイスファミリに属するものとして認証されることができ、デバイスファミリは、そのデバイスの挙動又は信用性についての保証を含むことができる。その手法は、いかなる固有に特定する情報も明らかにすることなく、その情報を用いて、処理システムを表す固有の識別情報を確立することができる。
【0027】
この手法は良好に機能するが、RSA鍵又はECC鍵よりも大きい場合もある直接証明秘密鍵を保持するために、デバイス内に付加的な記憶容量を必要とする。この付加的な記憶容量の要件の負担を緩和するために、本発明の実施形態は、デバイス内に大きな付加的な記憶容量を必要とすることなく、デバイスが鍵を必要とするときに、そのデバイスが確実に直接証明秘密鍵を所有するようにするためのシステム及び過程を定義する。
【0028】
本発明の少なくとも1つの実施形態では、デバイス製造業者が、製造ラインにおいて、128ビット擬似ランダム数をデバイスに格納し、はるかに大きな直接証明秘密鍵(DPpri)は、暗号化して、被保護サーバによって運用されるオンラインサービスを用いて、現場においてデバイスに転送することができる。他の実施形態は、128ビットよりも長いか、又は短い数をデバイスに格納することができる。この過程は、指定されたデバイスだけが暗号解読し、その割り当てられたDPpri鍵を用いることができることを確実にする。図5は、本発明の一実施形態による、直接証明鍵を割り当てるためのシステム500の図である。このシステム内には4つのエンティティ、すなわちデバイス製造用被保護システム502、デバイス製造用生産システム503、クライアントコンピュータシステム504及び被保護サーバ522が存在する。デバイス製造用被保護システムは、デバイス506の製造前に、セットアップ過程において用いられる処理システムを含む。製造用被保護システム502は、被保護システムがデバイス製造現場の外部のハッカーの攻撃から保護されるように、デバイス製造業者によって運用されることができる(たとえば、それは閉じたシステムである)。製造用生産システム503は、デバイスの製造時に用いることができる。一実施形態では、被保護システム及び生産システムは、同じシステムであってもよい。デバイス506は、クライアントコンピュータシステムに収容するための任意のハードウエアデバイス(たとえば、メモリコントローラ、グラフィックスコントローラのような周辺デバイス、I/Oデバイス等)を含む。本発明の一実施形態では、そのデバイスは、擬似ランダム値RAND508と、鍵サービス公開鍵ハッシュ値509とを備え、それらの値は、そのデバイスの不揮発性記憶装置に格納される。
【0029】
製造用被保護システムは、被保護データベース510、及び生成関数512を含む。被保護データベースは、以下に記述されるようにして、生成関数512によって生成される多数の擬似ランダム値(少なくとも、製造されるデバイス当たり1つの値)を格納するためのデータ構造を含む。生成関数は本明細書で鍵ブロブ514と呼ばれるデータ構造を生成するためのロジック(ソフトウエア又はハードウエアのいずれかで実施される)を含む。鍵ブロブ514は、少なくとも3つのデータ項目を備える。固有直接証明秘密鍵(DPpri)は、署名するためにデバイスが用いることができる暗号鍵を含む。DP秘密ダイジェスト516(DPpri Digest)は、SHA−1のような、安全なメッセージダイジェストを生成する任意の既知の方法に基づくDPpriのメッセージダイジェストを含む。いくつかの実施形態は、互換性を確保するために、鍵ブロブの一部としてビットストリームを含む擬似ランダム初期化ベクトル(IV)518を含むことができる。その暗号化のためにストリーム暗号が用いられる場合には、ストリーム暗号においてIVを用いるための既知の方法においてIVが用いられる。その暗号化のためにブロック暗号が用いられる場合には、IVは、暗号化されるべきメッセージの一部として用いられることになり、それにより、暗号化の各インスタンスが異なるようにする。製造用被保護システムは、後にさらに詳細に説明されるように、オンラインプロトコルに用いられる鍵サービス公開鍵507も含む。
【0030】
本発明の一実施形態では、製造用被保護システムは、複数可の鍵ブロブ(後に詳細に説明される)を生成し、その鍵ブロブを被保護サーバ522上の鍵ブロブデータベース520に格納する。一実施形態では、鍵ブロブデータベース内には多数の鍵ブロブが存在する場合がある。被保護サーバは、デバイス製造業者、デバイス販売者又は他の提携するエンティティによって運用することができる。被保護サーバは、たとえばインターネットのようなネットワークを用いて、クライアントコンピュータシステム504に通信可能に接続することができる。また被保護サーバは、被保護サーバとデバイスとの間のオンラインプロトコルにおいて用いるための鍵サービス秘密鍵511も含む。
【0031】
システム504内に収容されるデバイス506との通信セッションの認証及び鍵交換のために直接証明プロトコルを使用することを望むクライアントコンピュータシステム504は、後にさらに詳細に説明される鍵サービス公開/秘密鍵ペア及びオンラインプロトコルを用いて、被保護サーバ上の鍵ブロブデータベース520から、選択された鍵ブロブ514を読み出すことができる。鍵ブロブデータは、直接証明プロトコルを実施する際に用いるための局在鍵ブロブ524(後に説明される)を生成するために、デバイスによって用いられることができる。デバイス506を初期化し、制御するために、クライアントコンピュータシステムによって、デバイスドライバソフトウエア526が実行される。
【0032】
本発明の実施形態では、5つの別個の動作ステージが存在することができる。図6は、本発明の一実施形態による、直接証明鍵を割り当てる方法のステージを示す流れ図600である。本発明の実施形態によれば、各ステージにおいて、いくつかの動作を実行することができる。デバイス製造業者の現場には、少なくとも3つのステージ、すなわち被保護サーバセットアップステージ601、デバイス製造業者セットアップステージ602及びデバイス製造業者生産ステージ604のステージが存在する。本明細書では、図7を参照しながら、被保護サーバセットアップステージが説明される。また本明細書では、図8を参照しながら、デバイス製造業者セットアップステージが説明される。さらに本明細書では、図9を参照しながら、デバイス製造業者生産ステージが説明される。クライアントコンピュータシステムを有するコンシューマの現場には、少なくとも2つのステージ、すなわち、クライアントコンピュータシステムセットアップステージ606及びクライアントコンピュータシステム使用ステージ608が存在する。本明細書では、図10〜図12を参照しながら、クライアントコンピュータシステムセットアップステージが説明される。また本明細書では、図13を参照しながら、クライアントコンピュータシステム使用ステージが説明される。
【0033】
図7は、本発明の一実施形態による、被保護サーバセットアップステージ処理を示す流れ図700である。この処理は、デバイスの製造前にデバイス製造業者が実行することができる。ブロック702では、デバイス製造業者が、鍵検索要求をサポートするために、被保護サーバ522を配設する。一実施形態では、被保護サーバは、既知の態様でインターネットに通信可能に接続される。セキュリティを改善するために、被保護サーバは、製造用被保護システム又は製造用生産システムにおいて用いられるものと同じ処理システムにすべきではない。ブロック704では、デバイス製造業者が、鍵サービス公開/秘密鍵ペアを生成し、それは後に、被保護サーバによって提供される鍵検索サービスのために用いられる。一実施形態では、鍵サービス公開/秘密鍵ペアは、被保護サーバに格納することができる。この鍵ペアは、そのシステムによって実行される全ての処理に対して一度だけ生成してもよく、又はデバイスの種類毎に新たな鍵ペアを生成してもよい。ブロック706では、デバイス製造業者が、鍵サービス公開鍵507を製造用被保護システム502に転送する。
【0034】
図8は、本発明の一実施形態による、デバイス製造セットアップ処理を示す流れ図800である。一実施形態では、デバイス製造業者が、製造用被保護システム502を用いて、これらの動作を実行することができる。ブロック802では、デバイス製造業者が、製造されることになるデバイスの種類毎に直接証明ファミリ鍵ペア(Fpub及びFpri)を生成する。固有のデバイスはそれぞれ、1つのDPpri鍵を有することになり、DPpriを用いて生成される署名がFpubによって検証できるようにする。デバイスの種類は、選択された製造ライン(すなわち、デバイスのタイプ)若しくはバージョン番号に基づく製造ラインのサブセット、又はデバイスの他の特徴のような、デバイスの任意のセット又はサブセットを含むことができる。ファミリ鍵ペアは、そのデバイスの種類のために生成されたものであり、そのデバイスの種類によって用いられる。
【0035】
製造されることになるデバイス毎に、製造用被保護システム502の生成関数512が、ブロック804〜820を実行する。最初に、ブロック804では、生成関数が、固有の擬似ランダム値(RAND)508を生成する。一実施形態では、RANDの長さは128ビットである。他の実施形態では、他の長さの値を用いることができる。一実施形態では、複数のデバイスのための擬似ランダム値を予め生成しておくことができる。ブロック806では、デバイスによってサポートされる一方向関数fを用いて、生成関数が、固有のRAND値から対称暗号化鍵SKEYを生成する(SKEY=f(RAND))。一方向関数は、この目的を果たすのに相応しい任意の既知のアルゴリズムであってもよい(たとえば、SHA−1、MGF1、データ暗号化標準規格(DES)、トリプルDES、次世代暗号化標準規格(AES)等)。ブロック808では、一実施形態において、生成関数が、SKEYを用いて「ヌルエントリ」(たとえば、0バイトの小さな数)を暗号化することによって、被保護サーバ522上の鍵ブロブデータベース520内にある、このデバイスの鍵ブロブ514を参照するために用いられることになる識別子(ID)ラベルを生成する(DeviceID=Encrypt(0..0)usingSKEY)。他の実施形態では、デバイスIDを生成する他の方法を用いてもよく、又はSKEYによって他の値を暗号化してもよい。
【0036】
次に、ブロック810では、生成関数が、デバイスのファミリ公開鍵(Fpub)と互いに関連するDP秘密署名鍵DPpriを生成する。ブロック812では、既知の方法を用いて、生成関数は、DPpriをハッシュしてDPpriダイジェストを生成する(たとえば、SHA−1又は別のハッシュアルゴリズムを用いる)。ブロック814では、生成関数は、そのデバイスのための鍵ブロブデータ構造を構成する。その鍵ブロブは、少なくともDPpri及びDPpriダイジェストを含む。一実施形態では、鍵ブロブは、複数の擬似ランダムに生成されたビットを有するランダム初期化ベクトルも含む。これらの値は、SKEYを用いて暗号化され、暗号化された鍵ブロブ514を生成することができる。ブロック816では、ブロック808において生成されたデバイスID及びブロック814において生成された暗号化された鍵ブロブ514を、1つのエントリとして、鍵ブロブデータベース520に格納することができる。一実施形態では、鍵ブロブデータベース内のエントリは、デバイスIDによって指示することができる。ブロック818では、現在のRAND値を、被保護データベース510に格納することができる。SKEY及びDPpriは現場にあるデバイスによって生成し直すことができるので、ブロック820において、それらを削除することができる。
【0037】
DPpriダイジェストの生成及びそれに続くSKEYによる暗号化は、SKEYを所有していないいかなるエンティティもDPpriの内容を特定することができないように、また、SKEYを所有しているエンティティによって後に検出されるまでは、SKEYを所有していないエンティティによって鍵ブロブの内容を変更することができないように設計される。他の実施形態では、この秘密性及び保全性の保護を提供するための他の方法を用いることもできる。いくつかの実施形態では、保全性の保護は必要でない場合があり、秘密性だけを提供する方法を用いることができる。この場合、DPpriダイジェストの値は不要であろう。
【0038】
ブロック820後のいずれかの時点で、ブロック822において、RAND値の被保護データベースが、製造工程中にデバイスにRAND値を格納することになる製造用生産システム503に安全にアップロードすることができる。このアップロードが検証されると、RAND値は、製造用被保護システム502から安全に削除することができる。最後に、ブロック824において、複数の暗号化された鍵ブロブを有する鍵ブロブデータベース520が、デバイスIDフィールドによって索引を付けられるような、被保護サーバ522上に格納されることができ、デバイス毎に1つの鍵ブロブデータベースエントリが用いられることになる。
【0039】
図9は、本発明の一実施形態による、デバイス製造時の生産処理を示す流れ図900である。デバイスが生産ラインにおいて製造されているとき、ブロック902では、製造用生産システムが、被保護データベースから未使用のRAND値を選択する。その後、選択されたRAND値を、デバイス内の不揮発性記憶装置に格納することができる。一実施形態では、不揮発性記憶装置はTPMを含む。一実施形態では、RAND値は、不揮発性記憶装置の約16バイトに格納することができる。ブロック904では、鍵サービス公開鍵507のハッシュ509を、そのデバイスの不揮発性記憶装置に格納することができる。ハッシュは、任意の既知のハッシュアルゴリズムを用いて生成することができる。一実施形態では、そのハッシュ値は、不揮発性記憶装置の約20バイトに格納することができる。ブロック906では、RAND値を格納することに成功すると、製造用生産システムは、被保護データベース510内のデバイスのそのRAND値のあらゆる記録を破壊する。この時点では、そのデバイス内にRAND値のただ1つのコピーが格納される。
【0040】
代替の一実施形態では、RAND値は、デバイスの製造中に生成することができ、その後、鍵ブロブを計算するために製造用被保護システムに送信することができる。
【0041】
別の実施形態では、デバイスにおいてRAND値を生成することができ、デバイス及び製造用被保護システムは、そのデバイスの外部にはDPpri鍵を明らかにしない方法を用いる、DPpri鍵を生成するためのプロトコルに従うことができる。その後、そのデバイスはデバイスID、SKEY及び鍵ブロブを生成することができる。そのデバイスは、デバイスID及び鍵ブロブを被保護データベース510に格納するために、製造システムに渡すであろう。この方法では、製造システムは最終的には、被保護データベース内に同じ情報(デバイスID、鍵ブロブ)を有することになるが、RAND又はDPpriの値は知らない。
【0042】
図10〜図12は、本発明の一実施形態による、クライアントコンピュータシステムセットアップ処理の流れ図である。クライアントコンピュータシステムは、システムを起動することの一部として、これらの動作を実行することができる。図10のフロー1000を開始すると、ブロック1002では、クライアントコンピュータシステムを通常通りに起動することができ、そのデバイスのためのデバイスドライバソフトウエアモジュール526を、クライアントコンピュータシステムのメインメモリにロードすることができる。デバイスドライバが初期化され、実行し始めるとき、ブロック1004において、デバイスドライバは、デバイス506のための大容量記憶デバイス308に格納されている暗号化された局在鍵ブロブ524が既に存在するか否かを判定する。存在する場合には、それ以上、セットアップ処理が実行される必要はなく、セットアップ処理はブロック1006において終了する。存在しない場合には、その処理はブロック1008で続けられる。ブロック1008では、デバイスドライバが、デバイス506に対して鍵獲得コマンドを発行して、デバイスのDP秘密鍵獲得過程を開始する。
【0043】
ブロック1010では、デバイスドライバが、デバイスに、鍵サービス公開鍵507を送信する。ブロック1014では、デバイスが、受信された鍵サービス公開鍵を抽出し、その鍵サービス公開鍵のハッシュ値を生成し、受信された鍵サービス公開鍵のハッシュを、デバイス上の不揮発性記憶装置に格納されている鍵サービス公開鍵ハッシュ509と比較する。2つのハッシュが一致する場合には、受信された鍵サービス公開鍵が、デバイス製造業者の鍵検索サービスの公開鍵であることがわかり、クライアントコンピュータシステムセットアップ処理が続けられる。
【0044】
別の実施形態では、デバイスは、証明された鍵サービス公開鍵の証明書を受信することができ、その証明書は、そのハッシュがデバイス上の不揮発性記憶装置に格納されている鍵サービス公開鍵ハッシュ509である鍵サービス公開鍵までの証明書チェーンを通して検証することができる。その後、証明された鍵サービス公開鍵を、後続のステップの鍵サービス公開鍵として用いることができる。
【0045】
ブロック1018では、デバイスが、その一方向関数fを用いて、埋め込まれたRAND値508から、対称鍵SKEYを生成し直す(SKEY=f(RAND))。ブロック1020では、デバイスが、SKEYを用いて「ヌルエントリ」(たとえば、0バイトの小さな数)を暗号化することによって、その固有のデバイスIDラベルを生成する(DeviceID=Encrypt(0..0)using SKEY)。その処理は、図11の流れ図1100に続く。
【0046】
図11のブロック1102では、デバイスが、一時的な対称鍵Tkeyを生成する。その鍵は、被保護サーバに送信されることになり、被保護サーバはその鍵を用いて、被保護サーバがデバイスに返送するメッセージを暗号化する。ブロック1104では、デバイスが、デバイスID及び一時的な対称鍵Tkeyを含む鍵検索要求メッセージを作成し、ブロック1014においてデバイスドライバから受信された鍵サービス公開鍵を用いて、そのメッセージを暗号化し、鍵検索要求メッセージを、デバイスドライバを介して被保護サーバに送信する(Retrieve Key Request=Encrypt(DeviceID,Tkey)with the key service public key)。公開鍵でメッセージを暗号化するために、典型的には、対称暗号のためのセッション鍵(Skey)を作成し、公開鍵でセッション鍵を暗号化し、その後、セッション鍵でメッセージを暗号化することは当業者には理解されよう。ブロック1106では、被保護サーバが、鍵サービス秘密鍵511を用いて、受信された鍵要求メッセージを暗号解読し、その中に格納されているフィールドを抽出する。ここで、被保護サーバはデバイスIDを知っているので(鍵要求メッセージから得られる)、被保護サーバは、一致するデバイスID値を含む記録を得るために鍵ブロブデータベースを探索し、その記録から、デバイスの暗号化された鍵ブロブを抽出する。ブロック1110では、被保護サーバが、ファミリ公開鍵及び暗号化された鍵ブロブを含む第2の応答メッセージを作成し、そのデバイスによって供給される一時的な対称鍵Tkeyを用いて、第2の応答メッセージを暗号化する。したがって、Key Response=(Family public key,Encryption of(Encrypted Keyblob)using Tkey)である。暗号化された鍵ブロブをTkeyで暗号化することは、鍵ブロブを保護することではない。なぜなら、鍵ブロブは、そのデバイスだけが生成することができる対称鍵SKEYで既に暗号化されているためである。むしろ、このようにしてメッセージを暗号化することにより、鍵獲得過程が実行される度に、返送される鍵ブロブが確実に変化し、それにより、鍵ブロブそのものを「クッキー」として用いることができないことが確実になる。ブロック1112において、その第2の応答メッセージを、クライアントコンピュータシステム上のデバイスドライバに返送することができ、デバイスドライバが、そのメッセージをデバイスに転送する。
【0047】
ブロック1114では、デバイスが、第2の応答メッセージからファミリ公開鍵を抽出し、一時的な対称鍵Tkeyを用いて、包まれた鍵ブロブを暗号解読し、暗号化された鍵ブロブをデバイスの揮発性メモリに格納する。その後、処理は、図12の流れ図1200において続けられる。
【0048】
図12のブロック1216では、デバイスが、DPpri及びDPpriダイジェストを生成するために、対称鍵SKEYを用いて、暗号化された鍵ブロブを暗号解読し、これらの値をその不揮発性記憶装置に格納する(Decrypted Keyblob=Decrypt(IV,DPpri,DPpriDigest)using SKEY)。初期化ベクトル(IV)は破棄することができる。ブロック1218では、デバイスが、DPpriをハッシュし、その結果をDPpriダイジェストと比較することによって、DPpriの保全性を検査する。その比較が良好である場合には、デバイスは、DPpriをその有効鍵として受け取る。一実施形態では、デバイスは、鍵獲得済みフラグを真に設定し、DP秘密鍵の獲得に成功したことを指示することもできる。ブロック1220では、デバイスが新たなIVを選択し、その新たなIVを用いて、新たな暗号化された局在鍵ブロブを作成する(Localized Keyblob=Encrypt(IV2,DPpri,DPpriDigest)using SKEY)。一実施形態では、新たな暗号化された局在鍵ブロブを、クライアントコンピュータシステム上の鍵検索ユーティリティソフトウエアモジュール(図5に示されない)に返送することができる。ブロック1222では、鍵検索ユーティリティが、暗号化された局在鍵ブロブを、クライアントコンピュータシステム内の記憶装置(たとえば、大容量記憶デバイス308等)に格納する。この時点で、デバイスのDPpriは、クライアントコンピュータシステム内に安全に格納される。
【0049】
デバイスがセットアップ処理中にDPpriを獲得すると、その後、デバイスはDPpriを用いることができる。図13は、本発明の一実施形態による、クライアントコンピュータシステム処理の流れ図1300である。クライアントコンピュータシステムは、セットアップが完了した後にいつでも、これらの動作を実行することができる。ステップ1302では、クライアントコンピュータシステムを通常通りに起動することができ、デバイスのためのデバイスドライバ526を、メインメモリにロードすることができる。デバイスドライバが初期化され、実行し始めるとき、デバイスドライバは、デバイス506のための大容量記憶デバイス308に格納された暗号化された局在鍵ブロブ524が既に存在するか否かを判定する。存在しない場合には、図10〜図12のセットアップ処理が実行される。このデバイスのために利用することができる暗号化された局在鍵ブロブが存在する場合には、処理はブロック1306で続けられる。ブロック1306では、デバイスドライバが、暗号化された局在鍵ブロブを検索し、その鍵ブロブをデバイスに転送する。一実施形態では、鍵ブロブの転送は、鍵ブロブロードコマンドを実行することによって達成することができる。
【0050】
ブロック1308では、デバイスが、その一方向関数fを用いて、埋め込まれたRAND値508から、対称鍵SKEY(ここで暗号解読する際に用いられる)を生成し直す(SKEY=f(RAND))。ブロック1310では、デバイスが、対称鍵SKEYを用いて、暗号化された局在鍵ブロブを暗号解読し、DPpri及びDPpriダイジェストを生成し、これらの値を、その不揮発性記憶装置に格納する(Decrypted Keyblob=Decrypt(IV2,DPpri,DPpriDigest)using SKEY)。第2の初期化ベクトル(IV2)は破棄することができる。ブロック1312では、デバイスが、DPpriをハッシュし、その結果をDPpriダイジェストと比較することによって、DPpriの保全性を検査する。その比較が良好である(すなわちダイジェストが一致する)場合には、デバイスは、DPpriを、以前に獲得された有効鍵として受け取り、それを使用できるようにする。またデバイスは、鍵獲得済みフラグを真に設定し、DP秘密鍵の獲得に成功したことを指示することもできる。ブロック1314では、デバイスが、さらに別のIVを選択し、その新たなIVを用いて、新たな暗号化された局在鍵ブロブを作成する(Localizad Keyblob=Encrypt(IV3,DPpri,DPpriDigest)using SKEY)。新たな暗号化された局在鍵ブロブは、鍵検索ユーティリティに返送することができる。ブロック1316では、鍵検索ユーティリティが、暗号化された局在鍵ブロブを、クライアントコンピュータシステム内の記憶装置(たとえば、大容量記憶デバイス308等)に格納する。この時点で、デバイスのDPpriは、もう一度、クライアントコンピュータシステム内に安全に格納される。
【0051】
本発明の一実施形態では、一度にデバイスDP秘密鍵の全てを生成する必要はない。被保護サーバ上の鍵ブロブデータベースが定期的に更新されるものと仮定すると、デバイスDP秘密鍵は、必要に応じて、1回分ずつ生成することができる。鍵ブロブデータベースが被保護サーバ上で更新される度に、それは、既に生成されているが、まだデバイスに割り当てられていないデバイス鍵を含む、これまでに生成されたような鍵ブロブデータベースを含むであろう。
【0052】
別の実施形態では、デバイスのDPpri鍵の生成を遅らせて、デバイス鍵を必要とするデバイスに対してだけ、これらの鍵が生成されるようにすることができる。デバイスから第1の鍵獲得要求を受信すると、被保護サーバは、依然としてデバイスのRAND値を保持する製造用被保護システムに対する要求を生成することができる。この時点で、製造用被保護システムは、そのデバイスのためのDPpri鍵を生成し、その鍵を被保護サーバに返送し、そのときにだけRAND値を破壊する。
【0053】
別の実施形態では、デバイスの不揮発性メモリに鍵サービス公開鍵のハッシュを格納する代わりに、デバイス製造業者が、ルート鍵のハッシュを格納し、その後、そのルート鍵で鍵サービス公開鍵のための証明書に署名することを選ぶこともできる。このようにして、同じルート鍵を、多数のデバイスのために用いることができる。
【0054】
本明細書において説明される動作は、逐次的な過程として記述することができるが、それらの動作のうちのいくつかは、実際には、並列して、又は同時に実行することができる。さらに、いくつかの実施形態では、本発明の精神から逸脱することなく、それらの動作の順序を並べ替えることができる。
【0055】
本明細書に記述される技法は、任意の特定のハードウエア構成又はソフトウエア構成には限定されない。それらは、任意のコンピューティング環境又は処理環境において適用できる見込みがある。それらの技法は、ハードウエア、ソフトウエア、又はその2つの組み合わせで実施することができる。それらの技法は、それぞれプロセッサと、プロセッサによって読み出すことができる記憶媒体(揮発性メモリ及び不揮発性メモリ及び/又は記憶素子を含む)と、少なくとも1つの入力デバイスと、複数可の出力デバイスとを含む、モバイルコンピュータ又は設置されたコンピュータ、携帯情報端末、セットトップボックス、携帯電話及びポケットベル、並びに他の電子デバイスのような、プログラミング可能な機械上で実行されるプログラムにおいて実施することができる。入力デバイスを用いて入力されるデータにプログラムコードが適用され、説明された機能が実行され、出力情報が生成される。その出力情報は、複数可の出力装置に適用することができる。本発明が、マルチプロセッサシステム、ミニコンピュータ、メインフレームコンピュータ等を含む、種々のコンピュータシステム構成で実施できることは当業者には理解されよう。また本発明は、分散型のコンピューティング環境でも実施することができ、その場合には、通信ネットワークを通してリンクされる遠隔処理デバイスによって、タスクを実行することができる。
【0056】
各プログラムは、処理システムと通信するために、高度な手続き型プログラミング言語又はオブジェクト指向プログラミング言語で実施することができる。しかしながら、プログラムは、所望により、アセンブリ言語又は機械語で実施することもできる。いずれの場合でも、言語は、コンパイル又は翻訳することができる。
【0057】
プログラム命令を用いて、複数の命令でプログラミングされる汎用処理システム又は特定用途の処理システムが、本明細書に記述される動作を実行することができる。別法では、それらの動作を実行するためのハードワイヤードロジックを含む特定のハードウエア構成要素によって、又はプログラミングされたコンピュータ構成要素及びカスタムハードウエア構成要素の任意の組み合わせによって、それらの動作を実行することができる。本明細書に記述される方法は、処理システム又は他の電子デバイスをプログラミングして、それらの方法を実行するために用いることができる命令を格納している機械読取り可能媒体を含むことができるコンピュータプログラム製品として提供することができる。本明細書において用いられる用語「機械読取り可能媒体」は、機械によって実行するための一連の命令を格納又は符号化することができる任意の媒体を含み、その一連の命令によって、その機械が本明細書に記述される方法のいずれか1つの方法を実行するであろう。したがって、用語「機械読取り可能媒体」は、限定はしないが、固体メモリ、光ディスク及び磁気ディスク、並びにデータ信号を符号化する搬送波を含むであろう。さらに、当該技術分野では、ソフトウエアについて述べるときに、1つの動作を行うか、又は1つの結果を生成するような種々の形態(たとえば、プログラム、手順、過程、アプリケーション、モジュール、ロジック等)で述べるのが一般的である。そのような表現は、処理システムによってソフトウエアを実行することにより、プロセッサが1つの動作を実行するか、又は1つの結果を生成することを省略して表現しているにすぎない。
【0058】
本発明が、例示的な実施形態を参照しながら説明されてきたが、この説明は、限定する意味に解釈されることを意図していない。本発明が関連する技術分野の熟練者には明らかである、例示的な実施形態の種々の変更、及び本発明の他の実施形態は、本発明の精神及び範囲内にあると見なされる。
【図面の簡単な説明】
【0059】
【図1】本発明の一実施形態に従って動作するトラステッドプラットフォームモジュール(TPM)で実施されるプラットフォームを特徴とするシステムを示す図である。
【図2】図1のTPMを含むプラットフォームの第1の実施形態を示す図である。
【図3】図1のTPMを含むプラットフォームの第2の実施形態を示す図である。
【図4】図2のTPMで実施されるコンピュータシステムの1つの例示的な実施形態を示す図である。
【図5】本発明の一実施形態による、オンラインサービスを用いて、直接証明鍵をデバイスに割り当てるためのシステムの図である。
【図6】本発明の一実施形態による、オンラインサービスを用いて、直接証明鍵を割り当てる方法のステージを示す流れ図である。
【図7】本発明の一実施形態による、被保護サーバセットアップ処理を示す流れ図である。
【図8】本発明の一実施形態による、デバイス製造業者セットアップ処理を示す流れ図である。
【図9】本発明の一実施形態による、デバイス製造業者生産処理を示す流れ図である。
【図10】本発明の一実施形態による、クライアントコンピュータシステムセットアップ処理の流れ図である。
【図11】本発明の一実施形態による、クライアントコンピュータシステムセットアップ処理の流れ図である。
【図12】本発明の一実施形態による、クライアントコンピュータシステムセットアップ処理の流れ図である。
【図13】本発明の一実施形態による、クライアントコンピュータシステム処理の流れ図である。
【特許請求の範囲】
【請求項1】
クライアントコンピュータシステムからの鍵検索要求をサポートするために被保護オンラインサーバを配設すること、
安全な鍵検索処理において用いるための鍵サービス公開/秘密鍵ペアを生成すること、
デバイスの擬似ランダム値を生成すること、
前記デバイスに関連する暗号化されたデータ構造を生成することであって、該暗号化されたデータ構造は秘密鍵を含む、データ構造を生成すること、
前記擬似ランダム値に基づいて、前記暗号化されたデータ構造のための識別子を生成すること、
前記識別子及び前記暗号化されたデータ構造を前記被保護オンラインサーバに格納すること、並びに
前記擬似ランダム値と、前記鍵サービス公開鍵のハッシュ値とを前記デバイス内の不揮発性記憶装置に格納すること
を含む、方法。
【請求項2】
デバイスの種類毎に直接証明ファミリ鍵ペアを生成することをさらに含む、請求項1に記載の方法。
【請求項3】
前記秘密鍵は、前記直接証明ファミリ鍵ペアの公開鍵に関連付けられる直接証明秘密鍵を含み、前記方法は、該直接証明秘密鍵をハッシュすることであって、それによって、前記秘密鍵ダイジェストを生成する、ハッシュすることをさらに含む、請求項2に記載の方法。
【請求項4】
前記デバイスの前記擬似ランダム値に基づいて対称鍵を生成することをさらに含む、請求項1に記載の方法。
【請求項5】
前記識別子を生成することは、前記対称鍵を用いてデータ値を暗号化することを含む、請求項4に記載の方法。
【請求項6】
前記対称鍵を用いて前記データ構造を暗号化することをさらに含む、請求項4に記載の方法。
【請求項7】
前記鍵サービス公開鍵を製造用被保護システムに格納することをさらに含む、請求項1に記載の方法。
【請求項8】
前記デバイスの前記擬似ランダム値は固有である、請求項1に記載の方法。
【請求項9】
複数の機械読取り可能命令を有する第1の記憶媒体を含む製品であって、前記命令がプロセッサによって実行されるときに、前記命令は、
クライアントコンピュータシステムからの鍵検索要求をサポートするために被保護オンラインサーバを配設すること、
安全な鍵検索処理において用いるための鍵サービス公開/秘密鍵ペアを生成すること、
デバイスの擬似ランダム値を生成すること、
前記デバイスに関連する暗号化されたデータ構造を生成することであって、該暗号化されたデータ構造は秘密鍵を含む、データ構造を生成すること、
前記擬似ランダム値に基づいて、前記暗号化されたデータ構造のための識別子を生成すること、
前記識別子及び前記暗号化されたデータ構造を前記被保護オンラインサーバに格納すること、並びに
前記擬似ランダム値と、前記鍵サービス公開鍵のハッシュ値とを前記デバイス内の不揮発性記憶装置に格納すること
を提供する、複数の機械読取り可能命令を有する第1の記憶媒体を含む製品。
【請求項10】
デバイスの種類毎に直接証明ファミリ鍵ペアを生成するための命令をさらに含む、請求項9に記載の複数の機械読取り可能命令を有する第1の記憶媒体を含む製品。
【請求項11】
前記秘密鍵は、前記直接証明ファミリ鍵ペアの公開鍵に関連付けられる直接証明秘密鍵を含み、前記製品は、前記直接証明秘密鍵をハッシュして、前記秘密鍵ダイジェストを生成するための命令をさらに備える、請求項10に記載の複数の機械読取り可能命令を有する第1の記憶媒体を含む製品。
【請求項12】
前記デバイスの前記擬似ランダム値に基づいて対称鍵を生成するための命令をさらに備える、請求項9に記載の複数の機械読取り可能命令を有する第1の記憶媒体を含む製品。
【請求項13】
前記識別子を生成するための命令は、前記対称鍵を用いてデータ値を暗号化するための命令を含む、請求項12に記載の複数の機械読取り可能命令を有する第1の記憶媒体を含む製品。
【請求項14】
前記対称鍵を用いて前記データ構造を暗号化するための命令をさらに備える、請求項12に記載の複数の機械読取り可能命令を有する第1の記憶媒体を含む製品。
【請求項15】
前記鍵サービス公開鍵を製造用被保護システムに格納するための命令をさらに備える、請求項9に記載の複数の機械読取り可能命令を有する第1の記憶媒体を含む製品。
【請求項16】
前記デバイスの前記擬似ランダム値は固有である、請求項9に記載の複数の機械読取り可能命令を有する第1の記憶媒体を含む製品。
【請求項17】
コンピュータシステムに導入されるデバイスに関連付けられる、秘密鍵を含む暗号化されたデータ構造が、該コンピュータシステム上のメモリに格納されているか否かを判定すること、及び
前記暗号化されたデータ構造が格納されていない場合には、前記コンピュータシステムによってアクセス可能な被保護オンラインサーバから、前記デバイスに関連付けられる前記暗号化されたデータ構造を入手することであって、前記サーバは複数の暗号化されたデータ構造のデータベースを格納している、入手すること
を含む、方法。
【請求項18】
前記暗号化されたデータ構造を入手することは、前記デバイスに鍵獲得コマンドを発行することであって、それによって、秘密鍵獲得過程を開始する、発行することを含む、請求項17に記載の方法。
【請求項19】
前記秘密鍵は、1つのデバイスの種類につき1対の直接証明ファミリ鍵ペアの公開鍵に関連付けられる直接証明秘密鍵を含む、請求項17に記載の方法。
【請求項20】
前記秘密鍵獲得過程は、前記デバイスによって、前記被保護オンラインサーバから、対応する鍵サービス秘密鍵によって署名された鍵サービス公開鍵を入手することを含む、請求項18に記載の方法。
【請求項21】
前記秘密鍵獲得過程は、前記暗号化されたデータ構造のために、前記デバイスに格納されている固有の擬似ランダム値に基づいて対称鍵を生成するとともに、該擬似ランダム値に基づいてデバイス識別子を生成することをさらに含む、請求項20に記載の方法。
【請求項22】
前記秘密鍵獲得過程は、前記デバイスによって一時的な対称鍵を生成すること、前記デバイス識別子及び前記一時的な対称鍵を含む鍵検索メッセージを作成すること、前記鍵サービス公開鍵を用いて前記鍵検索メッセージを暗号化すること、並びに該暗号化された鍵検索メッセージを前記被保護オンラインサーバに送信することをさらに含む、請求項21に記載の方法。
【請求項23】
前記秘密鍵獲得過程は、前記鍵サービス秘密鍵を用いて、前記暗号化された鍵検索メッセージを暗号解読して、前記デバイス識別子を入手することをさらに含む、請求項22に記載の方法。
【請求項24】
前記秘密鍵獲得過程は、前記生成されたデバイス識別子と一致する識別子によって索引を付けられる暗号化されたデータ構造のデータベース内のエントリを得るために、前記被保護オンラインサーバを探索すること、前記エントリ内の前記暗号化されたデータ構造を含む鍵応答メッセージを作成すること、前記一時的な対称鍵で該鍵応答メッセージを暗号化すること、及び該鍵応答メッセージを前記デバイスに転送することをさらに含む、請求項23に記載の方法。
【請求項25】
前記秘密鍵獲得過程は、前記デバイスによって、前記一時的な対称鍵を用いて、前記暗号化された鍵応答メッセージを暗号解読することであって、それによって、前記暗号化されたデータ構造を入手する、鍵応答メッセージを暗号解読することをさらに含む、請求項24に記載の方法。
【請求項26】
前記秘密鍵獲得過程は、前記対称鍵を用いて、前記被保護オンラインサーバから受信された前記暗号化されたデータ構造を暗号解読することであって、それによって、前記秘密鍵及び前記秘密鍵ダイジェストを入手する、データ構造を暗号解読することをさらに含む、請求項25に記載の方法。
【請求項27】
前記秘密鍵獲得過程は、前記秘密鍵をハッシュすることであって、それによって、新たな秘密鍵ダイジェストを生成する、ハッシュすること、前記暗号解読されたデータ構造からの前記秘密鍵ダイジェストを前記新たな秘密鍵ダイジェストと比較すること、及び該2つのダイジェストが一致するときに、前記秘密鍵を前記デバイスのための有効鍵として受け取ることをさらに含む、請求項25に記載の方法。
【請求項28】
複数の機械読取り可能命令を有する記憶媒体を含む製品であって、前記命令がプロセッサによって実行されるときに、
コンピュータシステムに導入されるデバイスに関連付けられる、秘密鍵を含む暗号化されたデータ構造が、該コンピュータシステム上のメモリに格納されているか否かを判定すること、及び
前記暗号化されたデータ構造が格納されていない場合には、前記コンピュータシステムによってアクセス可能な被保護オンラインサーバから、前記デバイスに関連付けられる前記暗号化されたデータ構造を入手することであって、前記サーバは複数の暗号化されたデータ構造のデータベースを格納している、入手すること
によって、コンピュータシステムに導入されるデバイスのための秘密鍵を入手することを提供する、複数の機械読取り可能命令を有する記憶媒体を含む製品。
【請求項29】
前記暗号化されたデータ構造を入手するための命令は、前記鍵獲得コマンドを前記デバイスに発行して、秘密鍵獲得過程を開始するための命令を含む、請求項28に記載の複数の機械読取り可能命令を有する記憶媒体を含む製品。
【請求項30】
前記秘密鍵は、1つのデバイスの種類につき1対の直接証明ファミリ鍵ペアの公開鍵に関連付けられる直接証明秘密鍵を含む、請求項28に記載の複数の機械読取り可能命令を有する記憶媒体を含む製品。
【請求項31】
前記秘密鍵獲得過程のための命令は、前記デバイスによって、前記被保護オンラインサーバから、対応する鍵サービス秘密鍵によって署名された鍵サービス公開鍵を入手するための命令を含む、請求項29に記載の複数の機械読取り可能命令を有する記憶媒体を含む製品。
【請求項32】
前記秘密鍵獲得過程のための命令は、前記暗号化されたデータ構造のために、前記デバイスに格納されている固有の擬似ランダム値に基づいて対称鍵を生成するとともに、該擬似ランダム値に基づいてデバイス識別子を生成するための命令をさらに含む、請求項31に記載の複数の機械読取り可能命令を有する記憶媒体を含む製品。
【請求項33】
前記秘密鍵獲得過程のための命令は、前記デバイスによって一時的な対称鍵を生成するための命令と、前記デバイス識別子及び前記一時的な対称鍵を含む鍵検索メッセージを作成するための命令と、前記鍵サービス公開鍵を用いて前記鍵検索メッセージを暗号化するための命令と、該暗号化された鍵検索メッセージを前記被保護オンラインサーバに送信するための命令とをさらに含む、請求項32に記載の複数の機械読取り可能命令を有する記憶媒体を含む製品。
【請求項34】
安全なプロトコルを用いて、クライアントコンピュータシステムに導入されるデバイスに秘密鍵を転送するためのシステムであって、
前記クライアントコンピュータシステムにアクセス可能な被保護オンラインサーバであって、鍵サービス公開/秘密鍵ペアを生成し、それぞれが選択されたデバイスに対応する1つの秘密鍵を含む、複数の暗号化されたデータ構造のデータベースを格納し、該暗号化されたデータ構造のうちの選択されたものを前記デバイスに安全に伝送するように構成される、被保護オンラインサーバと、
前記被保護サーバに接続される被保護システムであって、前記デバイスに関連付けられる前記暗号化されたデータ構造を生成し、前記被保護サーバから前記鍵サービス公開鍵を受信し、前記暗号化されたデータ構造を前記被保護オンラインサーバに送信するように構成される、被保護システムと、
前記被保護システムに接続される生産システムであって、前記被保護システムから、前記鍵サービス公開鍵のハッシュ値及び固有の擬似ランダム値を受信し、前記デバイスを前記クライアントコンピュータシステムに導入する前に、前記鍵サービス公開鍵の前記ハッシュ値及び前記固有の擬似ランダム値を前記デバイスの不揮発性記憶装置に格納するように構成される、生産システムと
を備える、安全なプロトコルを用いて、クライアントコンピュータシステムに導入されるデバイスに秘密鍵を割り当てるためのシステム。
【請求項35】
前記秘密鍵は、前記直接証明ファミリ鍵ペアの公開鍵に関連付けられる直接証明秘密鍵を含む、請求項34に記載の安全なプロトコルを用いて、クライアントコンピュータシステムに導入されるデバイスに秘密鍵を割り当てるためのシステム。
【請求項1】
クライアントコンピュータシステムからの鍵検索要求をサポートするために被保護オンラインサーバを配設すること、
安全な鍵検索処理において用いるための鍵サービス公開/秘密鍵ペアを生成すること、
デバイスの擬似ランダム値を生成すること、
前記デバイスに関連する暗号化されたデータ構造を生成することであって、該暗号化されたデータ構造は秘密鍵を含む、データ構造を生成すること、
前記擬似ランダム値に基づいて、前記暗号化されたデータ構造のための識別子を生成すること、
前記識別子及び前記暗号化されたデータ構造を前記被保護オンラインサーバに格納すること、並びに
前記擬似ランダム値と、前記鍵サービス公開鍵のハッシュ値とを前記デバイス内の不揮発性記憶装置に格納すること
を含む、方法。
【請求項2】
デバイスの種類毎に直接証明ファミリ鍵ペアを生成することをさらに含む、請求項1に記載の方法。
【請求項3】
前記秘密鍵は、前記直接証明ファミリ鍵ペアの公開鍵に関連付けられる直接証明秘密鍵を含み、前記方法は、該直接証明秘密鍵をハッシュすることであって、それによって、前記秘密鍵ダイジェストを生成する、ハッシュすることをさらに含む、請求項2に記載の方法。
【請求項4】
前記デバイスの前記擬似ランダム値に基づいて対称鍵を生成することをさらに含む、請求項1に記載の方法。
【請求項5】
前記識別子を生成することは、前記対称鍵を用いてデータ値を暗号化することを含む、請求項4に記載の方法。
【請求項6】
前記対称鍵を用いて前記データ構造を暗号化することをさらに含む、請求項4に記載の方法。
【請求項7】
前記鍵サービス公開鍵を製造用被保護システムに格納することをさらに含む、請求項1に記載の方法。
【請求項8】
前記デバイスの前記擬似ランダム値は固有である、請求項1に記載の方法。
【請求項9】
複数の機械読取り可能命令を有する第1の記憶媒体を含む製品であって、前記命令がプロセッサによって実行されるときに、前記命令は、
クライアントコンピュータシステムからの鍵検索要求をサポートするために被保護オンラインサーバを配設すること、
安全な鍵検索処理において用いるための鍵サービス公開/秘密鍵ペアを生成すること、
デバイスの擬似ランダム値を生成すること、
前記デバイスに関連する暗号化されたデータ構造を生成することであって、該暗号化されたデータ構造は秘密鍵を含む、データ構造を生成すること、
前記擬似ランダム値に基づいて、前記暗号化されたデータ構造のための識別子を生成すること、
前記識別子及び前記暗号化されたデータ構造を前記被保護オンラインサーバに格納すること、並びに
前記擬似ランダム値と、前記鍵サービス公開鍵のハッシュ値とを前記デバイス内の不揮発性記憶装置に格納すること
を提供する、複数の機械読取り可能命令を有する第1の記憶媒体を含む製品。
【請求項10】
デバイスの種類毎に直接証明ファミリ鍵ペアを生成するための命令をさらに含む、請求項9に記載の複数の機械読取り可能命令を有する第1の記憶媒体を含む製品。
【請求項11】
前記秘密鍵は、前記直接証明ファミリ鍵ペアの公開鍵に関連付けられる直接証明秘密鍵を含み、前記製品は、前記直接証明秘密鍵をハッシュして、前記秘密鍵ダイジェストを生成するための命令をさらに備える、請求項10に記載の複数の機械読取り可能命令を有する第1の記憶媒体を含む製品。
【請求項12】
前記デバイスの前記擬似ランダム値に基づいて対称鍵を生成するための命令をさらに備える、請求項9に記載の複数の機械読取り可能命令を有する第1の記憶媒体を含む製品。
【請求項13】
前記識別子を生成するための命令は、前記対称鍵を用いてデータ値を暗号化するための命令を含む、請求項12に記載の複数の機械読取り可能命令を有する第1の記憶媒体を含む製品。
【請求項14】
前記対称鍵を用いて前記データ構造を暗号化するための命令をさらに備える、請求項12に記載の複数の機械読取り可能命令を有する第1の記憶媒体を含む製品。
【請求項15】
前記鍵サービス公開鍵を製造用被保護システムに格納するための命令をさらに備える、請求項9に記載の複数の機械読取り可能命令を有する第1の記憶媒体を含む製品。
【請求項16】
前記デバイスの前記擬似ランダム値は固有である、請求項9に記載の複数の機械読取り可能命令を有する第1の記憶媒体を含む製品。
【請求項17】
コンピュータシステムに導入されるデバイスに関連付けられる、秘密鍵を含む暗号化されたデータ構造が、該コンピュータシステム上のメモリに格納されているか否かを判定すること、及び
前記暗号化されたデータ構造が格納されていない場合には、前記コンピュータシステムによってアクセス可能な被保護オンラインサーバから、前記デバイスに関連付けられる前記暗号化されたデータ構造を入手することであって、前記サーバは複数の暗号化されたデータ構造のデータベースを格納している、入手すること
を含む、方法。
【請求項18】
前記暗号化されたデータ構造を入手することは、前記デバイスに鍵獲得コマンドを発行することであって、それによって、秘密鍵獲得過程を開始する、発行することを含む、請求項17に記載の方法。
【請求項19】
前記秘密鍵は、1つのデバイスの種類につき1対の直接証明ファミリ鍵ペアの公開鍵に関連付けられる直接証明秘密鍵を含む、請求項17に記載の方法。
【請求項20】
前記秘密鍵獲得過程は、前記デバイスによって、前記被保護オンラインサーバから、対応する鍵サービス秘密鍵によって署名された鍵サービス公開鍵を入手することを含む、請求項18に記載の方法。
【請求項21】
前記秘密鍵獲得過程は、前記暗号化されたデータ構造のために、前記デバイスに格納されている固有の擬似ランダム値に基づいて対称鍵を生成するとともに、該擬似ランダム値に基づいてデバイス識別子を生成することをさらに含む、請求項20に記載の方法。
【請求項22】
前記秘密鍵獲得過程は、前記デバイスによって一時的な対称鍵を生成すること、前記デバイス識別子及び前記一時的な対称鍵を含む鍵検索メッセージを作成すること、前記鍵サービス公開鍵を用いて前記鍵検索メッセージを暗号化すること、並びに該暗号化された鍵検索メッセージを前記被保護オンラインサーバに送信することをさらに含む、請求項21に記載の方法。
【請求項23】
前記秘密鍵獲得過程は、前記鍵サービス秘密鍵を用いて、前記暗号化された鍵検索メッセージを暗号解読して、前記デバイス識別子を入手することをさらに含む、請求項22に記載の方法。
【請求項24】
前記秘密鍵獲得過程は、前記生成されたデバイス識別子と一致する識別子によって索引を付けられる暗号化されたデータ構造のデータベース内のエントリを得るために、前記被保護オンラインサーバを探索すること、前記エントリ内の前記暗号化されたデータ構造を含む鍵応答メッセージを作成すること、前記一時的な対称鍵で該鍵応答メッセージを暗号化すること、及び該鍵応答メッセージを前記デバイスに転送することをさらに含む、請求項23に記載の方法。
【請求項25】
前記秘密鍵獲得過程は、前記デバイスによって、前記一時的な対称鍵を用いて、前記暗号化された鍵応答メッセージを暗号解読することであって、それによって、前記暗号化されたデータ構造を入手する、鍵応答メッセージを暗号解読することをさらに含む、請求項24に記載の方法。
【請求項26】
前記秘密鍵獲得過程は、前記対称鍵を用いて、前記被保護オンラインサーバから受信された前記暗号化されたデータ構造を暗号解読することであって、それによって、前記秘密鍵及び前記秘密鍵ダイジェストを入手する、データ構造を暗号解読することをさらに含む、請求項25に記載の方法。
【請求項27】
前記秘密鍵獲得過程は、前記秘密鍵をハッシュすることであって、それによって、新たな秘密鍵ダイジェストを生成する、ハッシュすること、前記暗号解読されたデータ構造からの前記秘密鍵ダイジェストを前記新たな秘密鍵ダイジェストと比較すること、及び該2つのダイジェストが一致するときに、前記秘密鍵を前記デバイスのための有効鍵として受け取ることをさらに含む、請求項25に記載の方法。
【請求項28】
複数の機械読取り可能命令を有する記憶媒体を含む製品であって、前記命令がプロセッサによって実行されるときに、
コンピュータシステムに導入されるデバイスに関連付けられる、秘密鍵を含む暗号化されたデータ構造が、該コンピュータシステム上のメモリに格納されているか否かを判定すること、及び
前記暗号化されたデータ構造が格納されていない場合には、前記コンピュータシステムによってアクセス可能な被保護オンラインサーバから、前記デバイスに関連付けられる前記暗号化されたデータ構造を入手することであって、前記サーバは複数の暗号化されたデータ構造のデータベースを格納している、入手すること
によって、コンピュータシステムに導入されるデバイスのための秘密鍵を入手することを提供する、複数の機械読取り可能命令を有する記憶媒体を含む製品。
【請求項29】
前記暗号化されたデータ構造を入手するための命令は、前記鍵獲得コマンドを前記デバイスに発行して、秘密鍵獲得過程を開始するための命令を含む、請求項28に記載の複数の機械読取り可能命令を有する記憶媒体を含む製品。
【請求項30】
前記秘密鍵は、1つのデバイスの種類につき1対の直接証明ファミリ鍵ペアの公開鍵に関連付けられる直接証明秘密鍵を含む、請求項28に記載の複数の機械読取り可能命令を有する記憶媒体を含む製品。
【請求項31】
前記秘密鍵獲得過程のための命令は、前記デバイスによって、前記被保護オンラインサーバから、対応する鍵サービス秘密鍵によって署名された鍵サービス公開鍵を入手するための命令を含む、請求項29に記載の複数の機械読取り可能命令を有する記憶媒体を含む製品。
【請求項32】
前記秘密鍵獲得過程のための命令は、前記暗号化されたデータ構造のために、前記デバイスに格納されている固有の擬似ランダム値に基づいて対称鍵を生成するとともに、該擬似ランダム値に基づいてデバイス識別子を生成するための命令をさらに含む、請求項31に記載の複数の機械読取り可能命令を有する記憶媒体を含む製品。
【請求項33】
前記秘密鍵獲得過程のための命令は、前記デバイスによって一時的な対称鍵を生成するための命令と、前記デバイス識別子及び前記一時的な対称鍵を含む鍵検索メッセージを作成するための命令と、前記鍵サービス公開鍵を用いて前記鍵検索メッセージを暗号化するための命令と、該暗号化された鍵検索メッセージを前記被保護オンラインサーバに送信するための命令とをさらに含む、請求項32に記載の複数の機械読取り可能命令を有する記憶媒体を含む製品。
【請求項34】
安全なプロトコルを用いて、クライアントコンピュータシステムに導入されるデバイスに秘密鍵を転送するためのシステムであって、
前記クライアントコンピュータシステムにアクセス可能な被保護オンラインサーバであって、鍵サービス公開/秘密鍵ペアを生成し、それぞれが選択されたデバイスに対応する1つの秘密鍵を含む、複数の暗号化されたデータ構造のデータベースを格納し、該暗号化されたデータ構造のうちの選択されたものを前記デバイスに安全に伝送するように構成される、被保護オンラインサーバと、
前記被保護サーバに接続される被保護システムであって、前記デバイスに関連付けられる前記暗号化されたデータ構造を生成し、前記被保護サーバから前記鍵サービス公開鍵を受信し、前記暗号化されたデータ構造を前記被保護オンラインサーバに送信するように構成される、被保護システムと、
前記被保護システムに接続される生産システムであって、前記被保護システムから、前記鍵サービス公開鍵のハッシュ値及び固有の擬似ランダム値を受信し、前記デバイスを前記クライアントコンピュータシステムに導入する前に、前記鍵サービス公開鍵の前記ハッシュ値及び前記固有の擬似ランダム値を前記デバイスの不揮発性記憶装置に格納するように構成される、生産システムと
を備える、安全なプロトコルを用いて、クライアントコンピュータシステムに導入されるデバイスに秘密鍵を割り当てるためのシステム。
【請求項35】
前記秘密鍵は、前記直接証明ファミリ鍵ペアの公開鍵に関連付けられる直接証明秘密鍵を含む、請求項34に記載の安全なプロトコルを用いて、クライアントコンピュータシステムに導入されるデバイスに秘密鍵を割り当てるためのシステム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【公表番号】特表2008−507205(P2008−507205A)
【公表日】平成20年3月6日(2008.3.6)
【国際特許分類】
【出願番号】特願2007−521519(P2007−521519)
【出願日】平成17年7月8日(2005.7.8)
【国際出願番号】PCT/US2005/024374
【国際公開番号】WO2006/023151
【国際公開日】平成18年3月2日(2006.3.2)
【出願人】(591003943)インテル・コーポレーション (1,101)
【Fターム(参考)】
【公表日】平成20年3月6日(2008.3.6)
【国際特許分類】
【出願日】平成17年7月8日(2005.7.8)
【国際出願番号】PCT/US2005/024374
【国際公開番号】WO2006/023151
【国際公開日】平成18年3月2日(2006.3.2)
【出願人】(591003943)インテル・コーポレーション (1,101)
【Fターム(参考)】
[ Back to top ]