(57)【要約】  現場で稼動中のクライアントコンピュータシステムに導入されるデバイスに直接証明秘密鍵を転送することが、デバイス内に大きな不揮発性記憶装置を必要とすることなく、安全に達成することができる。製造時に、固有の擬似ランダム値が生成され、デバイスに格納される。その擬似ランダム値を用いて、そのデバイスに関連付けられる直接証明秘密鍵及び秘密鍵ダイジェストを保持しているデータ構造を暗号化するための対称鍵が生成される。結果として生成される暗号化されたデータ構造は、クライアントコンピュータシステムによってアクセス可能な被保護オンラインサーバ上に格納される。デバイスがクライアントコンピュータシステムで初期化されるとき、システムは、局在する暗号化されたデータ構造がシステム内に存在するか否かを検査する。存在しない場合には、システムは、安全なプロトコルを用いて、被保護オンラインサーバから、関連する暗号化されたデータ構造を入手する。そのデバイスは、その格納された擬似ランダム値から生成し直される対称鍵を用いて、暗号化されたデータ構造を暗号解読し、直接証明秘密鍵を入手する。秘密鍵が有効である場合には、その鍵は、クライアントコンピュータシステム内のデバイスによって、後続の認証処理のために用いられることができる。
2008507205.tif 000002
【特許請求の範囲】
【請求項１】
クライアントコンピュータシステムからの鍵検索要求をサポートするために被保護オンラインサーバを配設すること、
安全な鍵検索処理において用いるための鍵サービス公開／秘密鍵ペアを生成すること、
デバイスの擬似ランダム値を生成すること、
前記デバイスに関連する暗号化されたデータ構造を生成することであって、該暗号化されたデータ構造は秘密鍵を含む、データ構造を生成すること、
前記擬似ランダム値に基づいて、前記暗号化されたデータ構造のための識別子を生成すること、
前記識別子及び前記暗号化されたデータ構造を前記被保護オンラインサーバに格納すること、並びに
前記擬似ランダム値と、前記鍵サービス公開鍵のハッシュ値とを前記デバイス内の不揮発性記憶装置に格納すること
を含む、方法。
【請求項２】
デバイスの種類毎に直接証明ファミリ鍵ペアを生成することをさらに含む、請求項１に記載の方法。
【請求項３】
前記秘密鍵は、前記直接証明ファミリ鍵ペアの公開鍵に関連付けられる直接証明秘密鍵を含み、前記方法は、該直接証明秘密鍵をハッシュすることであって、それによって、前記秘密鍵ダイジェストを生成する、ハッシュすることをさらに含む、請求項２に記載の方法。
【請求項４】
前記デバイスの前記擬似ランダム値に基づいて対称鍵を生成することをさらに含む、請求項１に記載の方法。
【請求項５】
前記識別子を生成することは、前記対称鍵を用いてデータ値を暗号化することを含む、請求項４に記載の方法。
【請求項６】
前記対称鍵を用いて前記データ構造を暗号化することをさらに含む、請求項４に記載の方法。
【請求項７】
前記鍵サービス公開鍵を製造用被保護システムに格納することをさらに含む、請求項１に記載の方法。
【請求項８】
前記デバイスの前記擬似ランダム値は固有である、請求項１に記載の方法。
【請求項９】
複数の機械読取り可能命令を有する第１の記憶媒体を含む製品であって、前記命令がプロセッサによって実行されるときに、前記命令は、
クライアントコンピュータシステムからの鍵検索要求をサポートするために被保護オンラインサーバを配設すること、
安全な鍵検索処理において用いるための鍵サービス公開／秘密鍵ペアを生成すること、
デバイスの擬似ランダム値を生成すること、
前記デバイスに関連する暗号化されたデータ構造を生成することであって、該暗号化されたデータ構造は秘密鍵を含む、データ構造を生成すること、
前記擬似ランダム値に基づいて、前記暗号化されたデータ構造のための識別子を生成すること、
前記識別子及び前記暗号化されたデータ構造を前記被保護オンラインサーバに格納すること、並びに
前記擬似ランダム値と、前記鍵サービス公開鍵のハッシュ値とを前記デバイス内の不揮発性記憶装置に格納すること
を提供する、複数の機械読取り可能命令を有する第１の記憶媒体を含む製品。
【請求項１０】
デバイスの種類毎に直接証明ファミリ鍵ペアを生成するための命令をさらに含む、請求項９に記載の複数の機械読取り可能命令を有する第１の記憶媒体を含む製品。
【請求項１１】
前記秘密鍵は、前記直接証明ファミリ鍵ペアの公開鍵に関連付けられる直接証明秘密鍵を含み、前記製品は、前記直接証明秘密鍵をハッシュして、前記秘密鍵ダイジェストを生成するための命令をさらに備える、請求項１０に記載の複数の機械読取り可能命令を有する第１の記憶媒体を含む製品。
【請求項１２】
前記デバイスの前記擬似ランダム値に基づいて対称鍵を生成するための命令をさらに備える、請求項９に記載の複数の機械読取り可能命令を有する第１の記憶媒体を含む製品。
【請求項１３】
前記識別子を生成するための命令は、前記対称鍵を用いてデータ値を暗号化するための命令を含む、請求項１２に記載の複数の機械読取り可能命令を有する第１の記憶媒体を含む製品。
【請求項１４】
前記対称鍵を用いて前記データ構造を暗号化するための命令をさらに備える、請求項１２に記載の複数の機械読取り可能命令を有する第１の記憶媒体を含む製品。
【請求項１５】
前記鍵サービス公開鍵を製造用被保護システムに格納するための命令をさらに備える、請求項９に記載の複数の機械読取り可能命令を有する第１の記憶媒体を含む製品。
【請求項１６】
前記デバイスの前記擬似ランダム値は固有である、請求項９に記載の複数の機械読取り可能命令を有する第１の記憶媒体を含む製品。
【請求項１７】
コンピュータシステムに導入されるデバイスに関連付けられる、秘密鍵を含む暗号化されたデータ構造が、該コンピュータシステム上のメモリに格納されているか否かを判定すること、及び
前記暗号化されたデータ構造が格納されていない場合には、前記コンピュータシステムによってアクセス可能な被保護オンラインサーバから、前記デバイスに関連付けられる前記暗号化されたデータ構造を入手することであって、前記サーバは複数の暗号化されたデータ構造のデータベースを格納している、入手すること
を含む、方法。
【請求項１８】
前記暗号化されたデータ構造を入手することは、前記デバイスに鍵獲得コマンドを発行することであって、それによって、秘密鍵獲得過程を開始する、発行することを含む、請求項１７に記載の方法。
【請求項１９】
前記秘密鍵は、１つのデバイスの種類につき１対の直接証明ファミリ鍵ペアの公開鍵に関連付けられる直接証明秘密鍵を含む、請求項１７に記載の方法。
【請求項２０】
前記秘密鍵獲得過程は、前記デバイスによって、前記被保護オンラインサーバから、対応する鍵サービス秘密鍵によって署名された鍵サービス公開鍵を入手することを含む、請求項１８に記載の方法。
【請求項２１】
前記秘密鍵獲得過程は、前記暗号化されたデータ構造のために、前記デバイスに格納されている固有の擬似ランダム値に基づいて対称鍵を生成するとともに、該擬似ランダム値に基づいてデバイス識別子を生成することをさらに含む、請求項２０に記載の方法。
【請求項２２】
前記秘密鍵獲得過程は、前記デバイスによって一時的な対称鍵を生成すること、前記デバイス識別子及び前記一時的な対称鍵を含む鍵検索メッセージを作成すること、前記鍵サービス公開鍵を用いて前記鍵検索メッセージを暗号化すること、並びに該暗号化された鍵検索メッセージを前記被保護オンラインサーバに送信することをさらに含む、請求項２１に記載の方法。
【請求項２３】
前記秘密鍵獲得過程は、前記鍵サービス秘密鍵を用いて、前記暗号化された鍵検索メッセージを暗号解読して、前記デバイス識別子を入手することをさらに含む、請求項２２に記載の方法。
【請求項２４】
前記秘密鍵獲得過程は、前記生成されたデバイス識別子と一致する識別子によって索引を付けられる暗号化されたデータ構造のデータベース内のエントリを得るために、前記被保護オンラインサーバを探索すること、前記エントリ内の前記暗号化されたデータ構造を含む鍵応答メッセージを作成すること、前記一時的な対称鍵で該鍵応答メッセージを暗号化すること、及び該鍵応答メッセージを前記デバイスに転送することをさらに含む、請求項２３に記載の方法。
【請求項２５】
前記秘密鍵獲得過程は、前記デバイスによって、前記一時的な対称鍵を用いて、前記暗号化された鍵応答メッセージを暗号解読することであって、それによって、前記暗号化されたデータ構造を入手する、鍵応答メッセージを暗号解読することをさらに含む、請求項２４に記載の方法。
【請求項２６】
前記秘密鍵獲得過程は、前記対称鍵を用いて、前記被保護オンラインサーバから受信された前記暗号化されたデータ構造を暗号解読することであって、それによって、前記秘密鍵及び前記秘密鍵ダイジェストを入手する、データ構造を暗号解読することをさらに含む、請求項２５に記載の方法。
【請求項２７】
前記秘密鍵獲得過程は、前記秘密鍵をハッシュすることであって、それによって、新たな秘密鍵ダイジェストを生成する、ハッシュすること、前記暗号解読されたデータ構造からの前記秘密鍵ダイジェストを前記新たな秘密鍵ダイジェストと比較すること、及び該２つのダイジェストが一致するときに、前記秘密鍵を前記デバイスのための有効鍵として受け取ることをさらに含む、請求項２５に記載の方法。
【請求項２８】
複数の機械読取り可能命令を有する記憶媒体を含む製品であって、前記命令がプロセッサによって実行されるときに、
コンピュータシステムに導入されるデバイスに関連付けられる、秘密鍵を含む暗号化されたデータ構造が、該コンピュータシステム上のメモリに格納されているか否かを判定すること、及び
前記暗号化されたデータ構造が格納されていない場合には、前記コンピュータシステムによってアクセス可能な被保護オンラインサーバから、前記デバイスに関連付けられる前記暗号化されたデータ構造を入手することであって、前記サーバは複数の暗号化されたデータ構造のデータベースを格納している、入手すること
によって、コンピュータシステムに導入されるデバイスのための秘密鍵を入手することを提供する、複数の機械読取り可能命令を有する記憶媒体を含む製品。
【請求項２９】
前記暗号化されたデータ構造を入手するための命令は、前記鍵獲得コマンドを前記デバイスに発行して、秘密鍵獲得過程を開始するための命令を含む、請求項２８に記載の複数の機械読取り可能命令を有する記憶媒体を含む製品。
【請求項３０】
前記秘密鍵は、１つのデバイスの種類につき１対の直接証明ファミリ鍵ペアの公開鍵に関連付けられる直接証明秘密鍵を含む、請求項２８に記載の複数の機械読取り可能命令を有する記憶媒体を含む製品。
【請求項３１】
前記秘密鍵獲得過程のための命令は、前記デバイスによって、前記被保護オンラインサーバから、対応する鍵サービス秘密鍵によって署名された鍵サービス公開鍵を入手するための命令を含む、請求項２９に記載の複数の機械読取り可能命令を有する記憶媒体を含む製品。
【請求項３２】
前記秘密鍵獲得過程のための命令は、前記暗号化されたデータ構造のために、前記デバイスに格納されている固有の擬似ランダム値に基づいて対称鍵を生成するとともに、該擬似ランダム値に基づいてデバイス識別子を生成するための命令をさらに含む、請求項３１に記載の複数の機械読取り可能命令を有する記憶媒体を含む製品。
【請求項３３】
前記秘密鍵獲得過程のための命令は、前記デバイスによって一時的な対称鍵を生成するための命令と、前記デバイス識別子及び前記一時的な対称鍵を含む鍵検索メッセージを作成するための命令と、前記鍵サービス公開鍵を用いて前記鍵検索メッセージを暗号化するための命令と、該暗号化された鍵検索メッセージを前記被保護オンラインサーバに送信するための命令とをさらに含む、請求項３２に記載の複数の機械読取り可能命令を有する記憶媒体を含む製品。
【請求項３４】
安全なプロトコルを用いて、クライアントコンピュータシステムに導入されるデバイスに秘密鍵を転送するためのシステムであって、
前記クライアントコンピュータシステムにアクセス可能な被保護オンラインサーバであって、鍵サービス公開／秘密鍵ペアを生成し、それぞれが選択されたデバイスに対応する１つの秘密鍵を含む、複数の暗号化されたデータ構造のデータベースを格納し、該暗号化されたデータ構造のうちの選択されたものを前記デバイスに安全に伝送するように構成される、被保護オンラインサーバと、
前記被保護サーバに接続される被保護システムであって、前記デバイスに関連付けられる前記暗号化されたデータ構造を生成し、前記被保護サーバから前記鍵サービス公開鍵を受信し、前記暗号化されたデータ構造を前記被保護オンラインサーバに送信するように構成される、被保護システムと、
前記被保護システムに接続される生産システムであって、前記被保護システムから、前記鍵サービス公開鍵のハッシュ値及び固有の擬似ランダム値を受信し、前記デバイスを前記クライアントコンピュータシステムに導入する前に、前記鍵サービス公開鍵の前記ハッシュ値及び前記固有の擬似ランダム値を前記デバイスの不揮発性記憶装置に格納するように構成される、生産システムと
を備える、安全なプロトコルを用いて、クライアントコンピュータシステムに導入されるデバイスに秘密鍵を割り当てるためのシステム。
【請求項３５】
前記秘密鍵は、前記直接証明ファミリ鍵ペアの公開鍵に関連付けられる直接証明秘密鍵を含む、請求項３４に記載の安全なプロトコルを用いて、クライアントコンピュータシステムに導入されるデバイスに秘密鍵を割り当てるためのシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は包括的には、コンピュータセキュリティに関し、より具体的には、処理システム内のデバイスに暗号鍵を安全に割り当てることに関する。
【背景技術】
【０００２】
内容保護及び／又はコンピュータセキュリティ機構をサポートするいくつかの処理システムアーキテクチャでは、特別に保護された、すなわち「信用できる」ソフトウエアモジュールが、その処理システム内の特別に保護された、すなわち「信用できる」ハードウエアデバイス（たとえば、グラフィックスコントローラカード等）との認証された暗号化通信セッションを生成できることが要求される。デバイスを特定するために、且つ同時に暗号化された通信セッションを確立するために用いられる１つの一般的な方法は、片側認証方式のディフィ・ヘルマン（ＤＨ）鍵交換過程を用いることである。この過程では、デバイスは、固有の公開／秘密リベスト、シャミル及びアデルマン（Rivest, Shamir and Adelman）（ＲＳＡ）アルゴリズム鍵ペア、又は固有の楕円曲線暗号（ＥＣＣ）鍵ペアを割り当てられる。しかしながら、この認証過程はＲＳＡ鍵又はＥＣＣ鍵を用いるので、その際、デバイスは、固有且つ証明可能な識別情報を有し、それによりプライバシーに対する懸念が生じる可能性がある。最悪の場合には、このような懸念がある結果として、この種のセキュリティを提供する信用できるデバイスを製造するための元の装置製造業者（ＯＥＭ）からの支援が不足することがある。
【０００３】
本発明の特徴及び利点は、本発明の以下に記載される詳細な説明から明らかになるであろう。
【発明を実施するための最良の形態】
【０００４】
［詳細な説明］
直接証明に基づくディフィ・ヘルマン（ＤＨ）鍵交換プロトコルを用いて、保護された／信用できるデバイスが自らを認証できるようにし、且つ信用できるソフトウエアモジュールとの暗号化された通信セッションを確立できるようにすることによって、処理システム内で任意の固有の識別情報が作成されるのが避けられ、それにより、プライバシーに対する懸念が生じるのが避けられる。しかしながら、製造ライン上でデバイス内に直接証明秘密鍵を直に埋め込むには、そのデバイス上に、他の手法よりも高度に保護された不揮発性記憶装置を必要とするので、デバイスコストが高くなる。本発明の一実施形態は、直接証明（ＤＰ）秘密鍵（たとえば、署名するために用いられる）が、オンラインサービスを用いてデバイスに安全に転送されるようにし、その後、デバイスそのものによってデバイスに導入されるようにするための方法である。本発明において提示される方法は、デバイスが導入過程のための識別情報を明らかにする必要がないように設計される。一実施形態では、この能力をサポートするために必要とされるデバイス記憶装置は、約３００〜７００バイトから約４０バイトまで削減することができる。デバイスのための直接証明に基づくディフィ・ヘルマン（ＤＨ）鍵交換を実施するために必要とされる不揮発性記憶装置の容量をこのように削減する結果として、この技法がさらに広く受け入れられるようになるであろう。
【０００５】
本発明の実施形態では、ＤＰ秘密署名鍵は、デバイス内に、又はデバイスとともに割り当てられることはない。代わりに、デバイスは、現場で稼動中のデバイスが、製造業者若しくは販売業者、又は代理人によって提供されるオンライン被保護サーバから、その秘密鍵を安全に検索することができるプロトコルをサポートする。このプロトコルは、デバイスとサーバとの間に信用できるチャネルを生成し、局在処理システム上にあるソフトウエアを含む、いかなる介在するソフトウエアにおいても信用を必要としない。
【０００６】
本明細書において本発明の「一（one）実施形態」又は「或る（an）実施形態」を参照することは、その実施形態に関連して記述される特定の特徴、構造又は特性が、本発明の少なくとも１つの実施形態に含まれることを意味する。したがって、本明細書の全体を通して種々の場所において「一実施形態では」という言い回しが現れても、必ずしも全てが同じ実施形態を参照しているとは限らない。
【０００７】
以下の説明では、本発明の複数可の実施形態のいくつかの特定の特徴を記述するために、いくつかの特定の専門用語が用いられる。たとえば、「プラットフォーム」は、情報を送信及び受信するようになっている任意のタイプの通信デバイスと定義される。種々のプラットフォームの例には、限定又は制限はしないが、コンピュータシステム、携帯情報端末、携帯電話、セットトップボックス、ファクシミリ装置、プリンタ、モデム、ルータ等が含まれる。「通信リンク」は、プラットフォームに適合する複数可の情報搬送媒体と広く定義される。通信リンクの種々のタイプの例には、限定又は制限はしないが、電線（複数可）、光ファイバ（複数可）、ケーブル（複数可）、バストレース（複数可）、或いはワイヤレスシグナリング技術が含まれる。
【０００８】
「チャレンジャ」は、別のエンティティからの何らかの信憑性の検証又は許可を要求する任意のエンティティ（たとえば、人、プラットフォーム、システム、ソフトウエア及び／又はデバイス）を指している。通常、これは、要求された情報を開示又は提供する前に実行される。「レスポンダ」は、その許可、妥当性及び／又は識別情報の証明を与えることを要求されている任意のエンティティを指している。「認証製造業者」と入替え可能に用いることができる「デバイス製造業者」は、プラットフォーム又はデバイスを製造又は構成する任意のエンティティを指している。
【０００９】
本明細書において用いられるときに、レスポンダが或る暗号情報（たとえば、デジタル署名、鍵のような秘密情報等）を所有しているか、又は知っていることを、チャレンジャに対して「証明する」か、又はチャレンジャに「確信させる」ということは、チャレンジャに対して開示される情報及び証明を基にすると、レスポンダがその暗号情報を有する確率が高いことを意味する。チャレンジャに対してその暗号情報を「明らかにする」か、又は「開示する」ことなく、このことをチャレンジャに対して証明するということは、チャレンジャに対して開示される情報を基にしても、チャレンジャが計算によって暗号情報を求めることができないことを意味する。
【００１０】
そのような証明は、これ以降、直接証明と呼ばれる。用語「直接証明」は、ゼロ知識証明を指しており、これらのタイプの証明は当該技術分野において一般的に知られている。詳細には、本明細書において参照されるような具体的な直接証明プロトコルは、２００２年１１月２７日に出願され、本出願の所有者に譲渡された「System and Method for Establishing Trust Without Revealing Identity」というタイトルの同時係属中の特許出願第１０／３０６，３３６号の発明の主題である。直接証明は、発行者が多数のメンバから成るファミリを定義するプロトコルを定義し、そのメンバは、発行者によって定義されるような共通の特徴を共有する。発行者は、ファミリ公開鍵及び秘密鍵ペア（Ｆｐｕｂ及びＦｐｒｉ）を生成し、その鍵ペアが全体としてファミリを表す。Ｆｐｒｉを用いて、発行者は、そのファミリ内の個々のメンバ毎に固有の直接証明秘密署名鍵（ＤＰｐｒｉ）も生成することができる。個々のＤＰｐｒｉによって署名された任意のメッセージを、ファミリ公開鍵Ｆｐｕｂを用いて検証することができる。しかしながら、そのような検証は、署名者がファミリのメンバであることしか特定しない。個々のメンバについての固有に特定する情報は明らかにされない。一実施形態では、発行者は、デバイス製造業者又は代理人であってもよい。すなわち、発行者は、共有される特徴に基づいてデバイスファミリを定義することができ、ファミリ公開鍵／秘密鍵ペアを生成することができ、さらにＤＰ秘密鍵を生成して、デバイスに導入することができるエンティティであってもよい。また発行者は、デバイスファミリの鍵及び特徴のソースを特定するファミリ公開鍵のための証明書を生成してもよい。
【００１１】
ここで、図１を参照すると、本発明の一実施形態に従って動作する、信用できるハードウエアデバイス（「トラステッドプラットフォームモジュール」又は「ＴＰＭ」と呼ばれる）で実施されるプラットフォームを特徴とするシステムの一実施形態が示される。第１のプラットフォーム１０２（チャレンジャ）が、第２のプラットフォーム１０４（レスポンダ）が自らについての情報を提供するという要求１０６を送信する。要求１０６に応答して、第２のプラットフォーム１０４は、要求された情報１０８を提供する。
【００１２】
さらに、セキュリティを高くするために、第１のプラットフォーム１０２は、要求された情報１０８が、選択されたデバイス製造業者又は選択されたデバイス製造業者グループ（これ以降、「デバイス製造業者（複数可）１１０」と呼ばれる）によって製造されたデバイスからもたらされたことを検証することが必要な場合もある。たとえば、本発明の一実施形態の場合、第１のプラットフォーム１０２は、第２のプラットフォーム１０４に対して、デバイス製造業者（複数可）１１０によって生成された暗号情報（たとえば、署名）を所有していることを示すように要求する。その要求は、要求１０６（図示される）、又は別個の送信のいずれかに組み込むことができる。第２のプラットフォーム１０４は、応答の形で、情報を提供することによってその要求に応答し、暗号情報を明らかにすることなく、第２のプラットフォーム１０４がデバイス製造業者（複数可）１１０によって生成される暗号情報を所有していることを第１のプラットフォーム１０２に確信させる。その応答は、要求された情報１０８（図示される）の一部であっても、別個の送信の一部であってもよい。
【００１３】
本発明の一実施形態では、第２のプラットフォーム１０４は、信用できるプラットフォームモジュール（ＴＰＭ）１１５を備える。ＴＰＭ１１５は、デバイス製造業者（複数可）１１０によって製造される暗号デバイスである。本発明の一実施形態では、ＴＰＭ１１５は、パッケージ内に封入される小さな容量のオンチップメモリを備えるプロセッサを含む。ＴＰＭ１１５は、或る応答が有効なＴＰＭから送信されたことを第１のプラットフォームが判定できるようにする情報を、第１のプラットフォーム１０２に与えるように構成される。用いられる情報は、ＴＰＭ又は第２のプラットフォームの識別情報を求めることができないようにする内容である。
【００１４】
図２は、ＴＰＭ１１５を備える第２のプラットフォーム１０４の第１の実施形態を示す。本発明のこの実施形態の場合、第２のプラットフォーム１０４は、ＴＰＭ１１５に接続されるプロセッサ２０２を備える。一般的に、プロセッサ２０２は、情報を処理するデバイスである。たとえば、本発明の一実施形態では、プロセッサ２０２は、マイクロプロセッサ、デジタルシグナルプロセッサ、マイクロコントローラ、又は状態機械として実施することができる。別法として、本発明の別の実施形態では、プロセッサ２０２は、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、トランジスタ−トランジスタロジック（ＴＴＬ）ロジック、又は特定用途向け集積回路（ＡＳＩＣ）のような、プログラマブルロジック又はハードコードロジックとして実現することができる。
【００１５】
ここで、第２のプラットフォーム１０４はさらに、記憶ユニット２０６を備え、鍵、ハッシュ値、署名、証明書等の複数可の情報のような暗号情報を記憶できるようにする。「Ｘ」のハッシュ値は、「Ｈａｓｈ（Ｘ）」として表すことができる。そのような情報は、図３に示されるように、記憶ユニット２０６の代わりに、ＴＰＭ１１５の内部メモリ２２０に格納することもできると考えられる。暗号情報は、ＴＰＭ１１５の外部に記憶される場合には特に、暗号化することができる。
【００１６】
図４は、図２のＴＰＭ１１５で実施されるコンピュータシステム３００を含むプラットフォームの一実施形態を示す。コンピュータシステム３００は、バス３０２と、バス３０２に接続されるプロセッサ３１０とを備える。コンピュータシステム３００はさらに、メインメモリユニット３０４と、スタティックメモリユニット３０６とを備える。
【００１７】
ここで、メインメモリユニット３０４は、情報、及びプロセッサ３１０によって実行される命令を格納する揮発性半導体メモリである。またメインメモリ３０４は、プロセッサ３１０による命令の実行中に時間的な変数又は他の中間情報を格納するためにも用いることができる。スタティックメモリユニット３０６は、さらに永久的に、情報及びプロセッサ３１０のための命令を格納するための不揮発性半導体メモリである。スタティックメモリ３０６の例には、限定又は制限はしないが、リードオンリーメモリ（ＲＯＭ）が含まれる。メインメモリユニット３０４及びスタティックメモリユニット３０６はいずれもバス３０２に接続される。
【００１８】
本発明の一実施形態では、コンピュータシステム３００はさらに、磁気ディスク又は光ディスクのようなデータ記憶デバイス３０８を備え、情報及び命令を格納するために、その対応するドライブもコンピュータシステム３００に接続することができる。
【００１９】
コンピュータシステム３００は、バス３０２を介して、グラフィックスコントローラデバイス３１４にも接続することができ、そのデバイスは、エンドユーザに対して情報を表示する、陰極線管（ＣＲＴ）、液晶ディスプレイ（ＬＣＤ）又は任意のフラットパネルディスプレイのようなディスプレイ（図示せず）を制御する。一実施形態では、グラフィックスコントローラは、プロセッサによって実行されるソフトウエアモジュールとの認証された暗号化通信セッションを確立できることが望ましい場合もある。
【００２０】
典型的には、プロセッサ３１０に情報及び／又はコマンド選択を伝達するために、文字数字入力デバイス３１６（たとえば、キーボード、キーパッド等）をバス３０２に接続することができる。別のタイプのユーザ入力デバイスは、プロセッサに方向情報及びコマンド選択を伝達し、且つディスプレイ３１４上でのカーソルの動きを制御するための、マウス、トラックボール、タッチパッド、スタイラス又はカーソル方向キー等のカーソル制御ユニット３１８である。
【００２１】
通信インターフェースユニット３２０もバス３０２に接続される。インターフェースユニット３２０の例には、モデム、ネットワークインターフェースカード、又はローカルエリアネットワーク若しくはワイドエリアネットワークの一部を形成する通信リンクに接続するために用いられる他の既知のインターフェースが含まれる。このようにして、コンピュータシステム３００は、たとえば、企業のイントラネット及び／又はインターネットのような、従来のネットワークインフラストラクチャを介して、多数のクライアント及び／又はサーバに接続することができる。一実施形態では、コンピュータシステムは、ネットワークを介して、被保護サーバにオンラインで接続することができる。
【００２２】
いくつかの実施態様の場合、これまでに記述された構成要素よりも少ないか、又は多い構成要素を備えるコンピュータシステムが望ましい場合もあることは理解されよう。それゆえ、コンピュータシステム３００の構成は、価格の制約、性能要件、技術的改善及び／又は他の事情のような数多くの要因に応じて、実施態様毎に異なるであろう。
【００２３】
少なくとも１つの実施形態では、コンピュータシステム３００は、システム内に他の好ましくないソフトウエアが存在する場合であっても、メインメモリ３０４及び／又は大容量記憶デバイス３０８に格納され、且つ特定の動作を成し遂げるためにプロセッサ３１０によって実行される、特別に保護された「信用できる」ソフトウエアモジュール（たとえば、改竄防止（tamper-resistant）ソフトウエア、又は保護されたプログラムを実行する能力を有するシステム）の使用をサポートすることができる。これらの信用できるソフトウエアモジュールの或るものは、他のプラットフォームに対してだけでなく、グラフィックスコントローラ３１４のような、同じプラットフォーム内の複数可の周辺デバイスに対しても、同等に「信用できる」保護されたアクセスを要求する。一般的に、そのようなアクセスでは、信用できるソフトウエアモジュールが、デバイスの能力及び／又は特定の識別情報を特定することができ、その後、デバイスとの暗号化されたセッションを確立して、データを交換できるようにするが、そのデータをシステム内の他のソフトウエアが詮索したり、妨害したりできないようにすることが要求される。
【００２４】
デバイスを特定し、同時に暗号化されたセッションを確立する１つの従来技術の方法は、片側認証方式のディフィ・ヘルマン（ＤＨ）鍵交換過程を用いることである。この過程では、デバイスは、固有の公開／秘密ＲＳＡ鍵又はＥＣＣ鍵のペアを割り当てられる。そのデバイスは、秘密鍵を保持及び保護し、一方、公開鍵は、認証用証明書とともに、ソフトウエアモジュールに公開される。ＤＨ鍵交換過程において、そのデバイスは、その秘密鍵を用いて、メッセージに署名し、ソフトウエアモジュールは対応する公開鍵を用いて秘密鍵を検証することができる。これにより、ソフトウエアモジュールは、そのメッセージが実際に対象のデバイスからもたらされたことを認証できるようになる。
【００２５】
しかしながら、この認証過程はＲＳＡ鍵又はＥＣＣ鍵を用いるので、そのデバイスは固有且つ証明可能な識別情報を有する。そのデバイスに、その秘密鍵を用いてメッセージに署名させることができる任意のソフトウエアモジュールが、この特定の固有のデバイスがコンピュータシステム内に存在することを証明することができる。デバイスがめったに処理システム間を移動しないものとすると、これは、証明可能な固有のコンピュータシステム識別情報も表す。さらに、そのデバイスの公開鍵そのものは、一定の固有の値、すなわち、実効的には永久的な「クッキー」を表す。いくつかの事例では、これらの特徴は、プライバシーに対する重大な問題と見なすことができる。
【００２６】
１つの代替の手法が、２００４年  月  日に出願され、本出願の所有者に譲渡された、「An Apparatus and Method for Establishing an Authenticated Encrypted Session with a Device Without Exposing Privacy-Sensitive Information」というタイトルの同時係属中の特許出願第１０／      ，      号に記述される。その手法では、片側認証方式のディフィ・ヘルマン過程においてＲＳＡ鍵又はＥＣＣ鍵を用いる代わりに、直接証明鍵が用いられる。この手法を用いるデバイスは、特定のデバイスファミリに属するものとして認証されることができ、デバイスファミリは、そのデバイスの挙動又は信用性についての保証を含むことができる。その手法は、いかなる固有に特定する情報も明らかにすることなく、その情報を用いて、処理システムを表す固有の識別情報を確立することができる。
【００２７】
この手法は良好に機能するが、ＲＳＡ鍵又はＥＣＣ鍵よりも大きい場合もある直接証明秘密鍵を保持するために、デバイス内に付加的な記憶容量を必要とする。この付加的な記憶容量の要件の負担を緩和するために、本発明の実施形態は、デバイス内に大きな付加的な記憶容量を必要とすることなく、デバイスが鍵を必要とするときに、そのデバイスが確実に直接証明秘密鍵を所有するようにするためのシステム及び過程を定義する。
【００２８】
本発明の少なくとも１つの実施形態では、デバイス製造業者が、製造ラインにおいて、１２８ビット擬似ランダム数をデバイスに格納し、はるかに大きな直接証明秘密鍵（ＤＰｐｒｉ）は、暗号化して、被保護サーバによって運用されるオンラインサービスを用いて、現場においてデバイスに転送することができる。他の実施形態は、１２８ビットよりも長いか、又は短い数をデバイスに格納することができる。この過程は、指定されたデバイスだけが暗号解読し、その割り当てられたＤＰｐｒｉ鍵を用いることができることを確実にする。図５は、本発明の一実施形態による、直接証明鍵を割り当てるためのシステム５００の図である。このシステム内には４つのエンティティ、すなわちデバイス製造用被保護システム５０２、デバイス製造用生産システム５０３、クライアントコンピュータシステム５０４及び被保護サーバ５２２が存在する。デバイス製造用被保護システムは、デバイス５０６の製造前に、セットアップ過程において用いられる処理システムを含む。製造用被保護システム５０２は、被保護システムがデバイス製造現場の外部のハッカーの攻撃から保護されるように、デバイス製造業者によって運用されることができる（たとえば、それは閉じたシステムである）。製造用生産システム５０３は、デバイスの製造時に用いることができる。一実施形態では、被保護システム及び生産システムは、同じシステムであってもよい。デバイス５０６は、クライアントコンピュータシステムに収容するための任意のハードウエアデバイス（たとえば、メモリコントローラ、グラフィックスコントローラのような周辺デバイス、Ｉ／Ｏデバイス等）を含む。本発明の一実施形態では、そのデバイスは、擬似ランダム値ＲＡＮＤ５０８と、鍵サービス公開鍵ハッシュ値５０９とを備え、それらの値は、そのデバイスの不揮発性記憶装置に格納される。
【００２９】
製造用被保護システムは、被保護データベース５１０、及び生成関数５１２を含む。被保護データベースは、以下に記述されるようにして、生成関数５１２によって生成される多数の擬似ランダム値（少なくとも、製造されるデバイス当たり１つの値）を格納するためのデータ構造を含む。生成関数は本明細書で鍵ブロブ５１４と呼ばれるデータ構造を生成するためのロジック（ソフトウエア又はハードウエアのいずれかで実施される）を含む。鍵ブロブ５１４は、少なくとも３つのデータ項目を備える。固有直接証明秘密鍵（ＤＰｐｒｉ）は、署名するためにデバイスが用いることができる暗号鍵を含む。ＤＰ秘密ダイジェスト５１６（ＤＰｐｒｉ  Ｄｉｇｅｓｔ）は、ＳＨＡ−１のような、安全なメッセージダイジェストを生成する任意の既知の方法に基づくＤＰｐｒｉのメッセージダイジェストを含む。いくつかの実施形態は、互換性を確保するために、鍵ブロブの一部としてビットストリームを含む擬似ランダム初期化ベクトル（ＩＶ）５１８を含むことができる。その暗号化のためにストリーム暗号が用いられる場合には、ストリーム暗号においてＩＶを用いるための既知の方法においてＩＶが用いられる。その暗号化のためにブロック暗号が用いられる場合には、ＩＶは、暗号化されるべきメッセージの一部として用いられることになり、それにより、暗号化の各インスタンスが異なるようにする。製造用被保護システムは、後にさらに詳細に説明されるように、オンラインプロトコルに用いられる鍵サービス公開鍵５０７も含む。
【００３０】
本発明の一実施形態では、製造用被保護システムは、複数可の鍵ブロブ（後に詳細に説明される）を生成し、その鍵ブロブを被保護サーバ５２２上の鍵ブロブデータベース５２０に格納する。一実施形態では、鍵ブロブデータベース内には多数の鍵ブロブが存在する場合がある。被保護サーバは、デバイス製造業者、デバイス販売者又は他の提携するエンティティによって運用することができる。被保護サーバは、たとえばインターネットのようなネットワークを用いて、クライアントコンピュータシステム５０４に通信可能に接続することができる。また被保護サーバは、被保護サーバとデバイスとの間のオンラインプロトコルにおいて用いるための鍵サービス秘密鍵５１１も含む。
【００３１】
システム５０４内に収容されるデバイス５０６との通信セッションの認証及び鍵交換のために直接証明プロトコルを使用することを望むクライアントコンピュータシステム５０４は、後にさらに詳細に説明される鍵サービス公開／秘密鍵ペア及びオンラインプロトコルを用いて、被保護サーバ上の鍵ブロブデータベース５２０から、選択された鍵ブロブ５１４を読み出すことができる。鍵ブロブデータは、直接証明プロトコルを実施する際に用いるための局在鍵ブロブ５２４（後に説明される）を生成するために、デバイスによって用いられることができる。デバイス５０６を初期化し、制御するために、クライアントコンピュータシステムによって、デバイスドライバソフトウエア５２６が実行される。
【００３２】
本発明の実施形態では、５つの別個の動作ステージが存在することができる。図６は、本発明の一実施形態による、直接証明鍵を割り当てる方法のステージを示す流れ図６００である。本発明の実施形態によれば、各ステージにおいて、いくつかの動作を実行することができる。デバイス製造業者の現場には、少なくとも３つのステージ、すなわち被保護サーバセットアップステージ６０１、デバイス製造業者セットアップステージ６０２及びデバイス製造業者生産ステージ６０４のステージが存在する。本明細書では、図７を参照しながら、被保護サーバセットアップステージが説明される。また本明細書では、図８を参照しながら、デバイス製造業者セットアップステージが説明される。さらに本明細書では、図９を参照しながら、デバイス製造業者生産ステージが説明される。クライアントコンピュータシステムを有するコンシューマの現場には、少なくとも２つのステージ、すなわち、クライアントコンピュータシステムセットアップステージ６０６及びクライアントコンピュータシステム使用ステージ６０８が存在する。本明細書では、図１０〜図１２を参照しながら、クライアントコンピュータシステムセットアップステージが説明される。また本明細書では、図１３を参照しながら、クライアントコンピュータシステム使用ステージが説明される。
【００３３】
図７は、本発明の一実施形態による、被保護サーバセットアップステージ処理を示す流れ図７００である。この処理は、デバイスの製造前にデバイス製造業者が実行することができる。ブロック７０２では、デバイス製造業者が、鍵検索要求をサポートするために、被保護サーバ５２２を配設する。一実施形態では、被保護サーバは、既知の態様でインターネットに通信可能に接続される。セキュリティを改善するために、被保護サーバは、製造用被保護システム又は製造用生産システムにおいて用いられるものと同じ処理システムにすべきではない。ブロック７０４では、デバイス製造業者が、鍵サービス公開／秘密鍵ペアを生成し、それは後に、被保護サーバによって提供される鍵検索サービスのために用いられる。一実施形態では、鍵サービス公開／秘密鍵ペアは、被保護サーバに格納することができる。この鍵ペアは、そのシステムによって実行される全ての処理に対して一度だけ生成してもよく、又はデバイスの種類毎に新たな鍵ペアを生成してもよい。ブロック７０６では、デバイス製造業者が、鍵サービス公開鍵５０７を製造用被保護システム５０２に転送する。
【００３４】
図８は、本発明の一実施形態による、デバイス製造セットアップ処理を示す流れ図８００である。一実施形態では、デバイス製造業者が、製造用被保護システム５０２を用いて、これらの動作を実行することができる。ブロック８０２では、デバイス製造業者が、製造されることになるデバイスの種類毎に直接証明ファミリ鍵ペア（Ｆｐｕｂ及びＦｐｒｉ）を生成する。固有のデバイスはそれぞれ、１つのＤＰｐｒｉ鍵を有することになり、ＤＰｐｒｉを用いて生成される署名がＦｐｕｂによって検証できるようにする。デバイスの種類は、選択された製造ライン（すなわち、デバイスのタイプ）若しくはバージョン番号に基づく製造ラインのサブセット、又はデバイスの他の特徴のような、デバイスの任意のセット又はサブセットを含むことができる。ファミリ鍵ペアは、そのデバイスの種類のために生成されたものであり、そのデバイスの種類によって用いられる。
【００３５】
製造されることになるデバイス毎に、製造用被保護システム５０２の生成関数５１２が、ブロック８０４〜８２０を実行する。最初に、ブロック８０４では、生成関数が、固有の擬似ランダム値（ＲＡＮＤ）５０８を生成する。一実施形態では、ＲＡＮＤの長さは１２８ビットである。他の実施形態では、他の長さの値を用いることができる。一実施形態では、複数のデバイスのための擬似ランダム値を予め生成しておくことができる。ブロック８０６では、デバイスによってサポートされる一方向関数ｆを用いて、生成関数が、固有のＲＡＮＤ値から対称暗号化鍵ＳＫＥＹを生成する（ＳＫＥＹ＝ｆ（ＲＡＮＤ））。一方向関数は、この目的を果たすのに相応しい任意の既知のアルゴリズムであってもよい（たとえば、ＳＨＡ−１、ＭＧＦ１、データ暗号化標準規格（ＤＥＳ）、トリプルＤＥＳ、次世代暗号化標準規格（ＡＥＳ）等）。ブロック８０８では、一実施形態において、生成関数が、ＳＫＥＹを用いて「ヌルエントリ」（たとえば、０バイトの小さな数）を暗号化することによって、被保護サーバ５２２上の鍵ブロブデータベース５２０内にある、このデバイスの鍵ブロブ５１４を参照するために用いられることになる識別子（ＩＤ）ラベルを生成する（ＤｅｖｉｃｅＩＤ＝Ｅｎｃｒｙｐｔ（０．．０）ｕｓｉｎｇＳＫＥＹ）。他の実施形態では、デバイスＩＤを生成する他の方法を用いてもよく、又はＳＫＥＹによって他の値を暗号化してもよい。
【００３６】
次に、ブロック８１０では、生成関数が、デバイスのファミリ公開鍵（Ｆｐｕｂ）と互いに関連するＤＰ秘密署名鍵ＤＰｐｒｉを生成する。ブロック８１２では、既知の方法を用いて、生成関数は、ＤＰｐｒｉをハッシュしてＤＰｐｒｉダイジェストを生成する（たとえば、ＳＨＡ−１又は別のハッシュアルゴリズムを用いる）。ブロック８１４では、生成関数は、そのデバイスのための鍵ブロブデータ構造を構成する。その鍵ブロブは、少なくともＤＰｐｒｉ及びＤＰｐｒｉダイジェストを含む。一実施形態では、鍵ブロブは、複数の擬似ランダムに生成されたビットを有するランダム初期化ベクトルも含む。これらの値は、ＳＫＥＹを用いて暗号化され、暗号化された鍵ブロブ５１４を生成することができる。ブロック８１６では、ブロック８０８において生成されたデバイスＩＤ及びブロック８１４において生成された暗号化された鍵ブロブ５１４を、１つのエントリとして、鍵ブロブデータベース５２０に格納することができる。一実施形態では、鍵ブロブデータベース内のエントリは、デバイスＩＤによって指示することができる。ブロック８１８では、現在のＲＡＮＤ値を、被保護データベース５１０に格納することができる。ＳＫＥＹ及びＤＰｐｒｉは現場にあるデバイスによって生成し直すことができるので、ブロック８２０において、それらを削除することができる。
【００３７】
ＤＰｐｒｉダイジェストの生成及びそれに続くＳＫＥＹによる暗号化は、ＳＫＥＹを所有していないいかなるエンティティもＤＰｐｒｉの内容を特定することができないように、また、ＳＫＥＹを所有しているエンティティによって後に検出されるまでは、ＳＫＥＹを所有していないエンティティによって鍵ブロブの内容を変更することができないように設計される。他の実施形態では、この秘密性及び保全性の保護を提供するための他の方法を用いることもできる。いくつかの実施形態では、保全性の保護は必要でない場合があり、秘密性だけを提供する方法を用いることができる。この場合、ＤＰｐｒｉダイジェストの値は不要であろう。
【００３８】
ブロック８２０後のいずれかの時点で、ブロック８２２において、ＲＡＮＤ値の被保護データベースが、製造工程中にデバイスにＲＡＮＤ値を格納することになる製造用生産システム５０３に安全にアップロードすることができる。このアップロードが検証されると、ＲＡＮＤ値は、製造用被保護システム５０２から安全に削除することができる。最後に、ブロック８２４において、複数の暗号化された鍵ブロブを有する鍵ブロブデータベース５２０が、デバイスＩＤフィールドによって索引を付けられるような、被保護サーバ５２２上に格納されることができ、デバイス毎に１つの鍵ブロブデータベースエントリが用いられることになる。
【００３９】
図９は、本発明の一実施形態による、デバイス製造時の生産処理を示す流れ図９００である。デバイスが生産ラインにおいて製造されているとき、ブロック９０２では、製造用生産システムが、被保護データベースから未使用のＲＡＮＤ値を選択する。その後、選択されたＲＡＮＤ値を、デバイス内の不揮発性記憶装置に格納することができる。一実施形態では、不揮発性記憶装置はＴＰＭを含む。一実施形態では、ＲＡＮＤ値は、不揮発性記憶装置の約１６バイトに格納することができる。ブロック９０４では、鍵サービス公開鍵５０７のハッシュ５０９を、そのデバイスの不揮発性記憶装置に格納することができる。ハッシュは、任意の既知のハッシュアルゴリズムを用いて生成することができる。一実施形態では、そのハッシュ値は、不揮発性記憶装置の約２０バイトに格納することができる。ブロック９０６では、ＲＡＮＤ値を格納することに成功すると、製造用生産システムは、被保護データベース５１０内のデバイスのそのＲＡＮＤ値のあらゆる記録を破壊する。この時点では、そのデバイス内にＲＡＮＤ値のただ１つのコピーが格納される。
【００４０】
代替の一実施形態では、ＲＡＮＤ値は、デバイスの製造中に生成することができ、その後、鍵ブロブを計算するために製造用被保護システムに送信することができる。
【００４１】
別の実施形態では、デバイスにおいてＲＡＮＤ値を生成することができ、デバイス及び製造用被保護システムは、そのデバイスの外部にはＤＰｐｒｉ鍵を明らかにしない方法を用いる、ＤＰｐｒｉ鍵を生成するためのプロトコルに従うことができる。その後、そのデバイスはデバイスＩＤ、ＳＫＥＹ及び鍵ブロブを生成することができる。そのデバイスは、デバイスＩＤ及び鍵ブロブを被保護データベース５１０に格納するために、製造システムに渡すであろう。この方法では、製造システムは最終的には、被保護データベース内に同じ情報（デバイスＩＤ、鍵ブロブ）を有することになるが、ＲＡＮＤ又はＤＰｐｒｉの値は知らない。
【００４２】
図１０〜図１２は、本発明の一実施形態による、クライアントコンピュータシステムセットアップ処理の流れ図である。クライアントコンピュータシステムは、システムを起動することの一部として、これらの動作を実行することができる。図１０のフロー１０００を開始すると、ブロック１００２では、クライアントコンピュータシステムを通常通りに起動することができ、そのデバイスのためのデバイスドライバソフトウエアモジュール５２６を、クライアントコンピュータシステムのメインメモリにロードすることができる。デバイスドライバが初期化され、実行し始めるとき、ブロック１００４において、デバイスドライバは、デバイス５０６のための大容量記憶デバイス３０８に格納されている暗号化された局在鍵ブロブ５２４が既に存在するか否かを判定する。存在する場合には、それ以上、セットアップ処理が実行される必要はなく、セットアップ処理はブロック１００６において終了する。存在しない場合には、その処理はブロック１００８で続けられる。ブロック１００８では、デバイスドライバが、デバイス５０６に対して鍵獲得コマンドを発行して、デバイスのＤＰ秘密鍵獲得過程を開始する。
【００４３】
ブロック１０１０では、デバイスドライバが、デバイスに、鍵サービス公開鍵５０７を送信する。ブロック１０１４では、デバイスが、受信された鍵サービス公開鍵を抽出し、その鍵サービス公開鍵のハッシュ値を生成し、受信された鍵サービス公開鍵のハッシュを、デバイス上の不揮発性記憶装置に格納されている鍵サービス公開鍵ハッシュ５０９と比較する。２つのハッシュが一致する場合には、受信された鍵サービス公開鍵が、デバイス製造業者の鍵検索サービスの公開鍵であることがわかり、クライアントコンピュータシステムセットアップ処理が続けられる。
【００４４】
別の実施形態では、デバイスは、証明された鍵サービス公開鍵の証明書を受信することができ、その証明書は、そのハッシュがデバイス上の不揮発性記憶装置に格納されている鍵サービス公開鍵ハッシュ５０９である鍵サービス公開鍵までの証明書チェーンを通して検証することができる。その後、証明された鍵サービス公開鍵を、後続のステップの鍵サービス公開鍵として用いることができる。
【００４５】
ブロック１０１８では、デバイスが、その一方向関数ｆを用いて、埋め込まれたＲＡＮＤ値５０８から、対称鍵ＳＫＥＹを生成し直す（ＳＫＥＹ＝ｆ（ＲＡＮＤ））。ブロック１０２０では、デバイスが、ＳＫＥＹを用いて「ヌルエントリ」（たとえば、０バイトの小さな数）を暗号化することによって、その固有のデバイスＩＤラベルを生成する（ＤｅｖｉｃｅＩＤ＝Ｅｎｃｒｙｐｔ（０．．０）ｕｓｉｎｇ  ＳＫＥＹ）。その処理は、図１１の流れ図１１００に続く。
【００４６】
図１１のブロック１１０２では、デバイスが、一時的な対称鍵Ｔｋｅｙを生成する。その鍵は、被保護サーバに送信されることになり、被保護サーバはその鍵を用いて、被保護サーバがデバイスに返送するメッセージを暗号化する。ブロック１１０４では、デバイスが、デバイスＩＤ及び一時的な対称鍵Ｔｋｅｙを含む鍵検索要求メッセージを作成し、ブロック１０１４においてデバイスドライバから受信された鍵サービス公開鍵を用いて、そのメッセージを暗号化し、鍵検索要求メッセージを、デバイスドライバを介して被保護サーバに送信する（Ｒｅｔｒｉｅｖｅ  Ｋｅｙ  Ｒｅｑｕｅｓｔ＝Ｅｎｃｒｙｐｔ（ＤｅｖｉｃｅＩＤ，Ｔｋｅｙ）ｗｉｔｈ  ｔｈｅ  ｋｅｙ  ｓｅｒｖｉｃｅ  ｐｕｂｌｉｃ  ｋｅｙ）。公開鍵でメッセージを暗号化するために、典型的には、対称暗号のためのセッション鍵（Ｓｋｅｙ）を作成し、公開鍵でセッション鍵を暗号化し、その後、セッション鍵でメッセージを暗号化することは当業者には理解されよう。ブロック１１０６では、被保護サーバが、鍵サービス秘密鍵５１１を用いて、受信された鍵要求メッセージを暗号解読し、その中に格納されているフィールドを抽出する。ここで、被保護サーバはデバイスＩＤを知っているので（鍵要求メッセージから得られる）、被保護サーバは、一致するデバイスＩＤ値を含む記録を得るために鍵ブロブデータベースを探索し、その記録から、デバイスの暗号化された鍵ブロブを抽出する。ブロック１１１０では、被保護サーバが、ファミリ公開鍵及び暗号化された鍵ブロブを含む第２の応答メッセージを作成し、そのデバイスによって供給される一時的な対称鍵Ｔｋｅｙを用いて、第２の応答メッセージを暗号化する。したがって、Ｋｅｙ  Ｒｅｓｐｏｎｓｅ＝（Ｆａｍｉｌｙ  ｐｕｂｌｉｃ  ｋｅｙ，Ｅｎｃｒｙｐｔｉｏｎ  ｏｆ（Ｅｎｃｒｙｐｔｅｄ  Ｋｅｙｂｌｏｂ）ｕｓｉｎｇ  Ｔｋｅｙ）である。暗号化された鍵ブロブをＴｋｅｙで暗号化することは、鍵ブロブを保護することではない。なぜなら、鍵ブロブは、そのデバイスだけが生成することができる対称鍵ＳＫＥＹで既に暗号化されているためである。むしろ、このようにしてメッセージを暗号化することにより、鍵獲得過程が実行される度に、返送される鍵ブロブが確実に変化し、それにより、鍵ブロブそのものを「クッキー」として用いることができないことが確実になる。ブロック１１１２において、その第２の応答メッセージを、クライアントコンピュータシステム上のデバイスドライバに返送することができ、デバイスドライバが、そのメッセージをデバイスに転送する。
【００４７】
ブロック１１１４では、デバイスが、第２の応答メッセージからファミリ公開鍵を抽出し、一時的な対称鍵Ｔｋｅｙを用いて、包まれた鍵ブロブを暗号解読し、暗号化された鍵ブロブをデバイスの揮発性メモリに格納する。その後、処理は、図１２の流れ図１２００において続けられる。
【００４８】
図１２のブロック１２１６では、デバイスが、ＤＰｐｒｉ及びＤＰｐｒｉダイジェストを生成するために、対称鍵ＳＫＥＹを用いて、暗号化された鍵ブロブを暗号解読し、これらの値をその不揮発性記憶装置に格納する（Ｄｅｃｒｙｐｔｅｄ  Ｋｅｙｂｌｏｂ＝Ｄｅｃｒｙｐｔ（ＩＶ，ＤＰｐｒｉ，ＤＰｐｒｉＤｉｇｅｓｔ）ｕｓｉｎｇ  ＳＫＥＹ）。初期化ベクトル（ＩＶ）は破棄することができる。ブロック１２１８では、デバイスが、ＤＰｐｒｉをハッシュし、その結果をＤＰｐｒｉダイジェストと比較することによって、ＤＰｐｒｉの保全性を検査する。その比較が良好である場合には、デバイスは、ＤＰｐｒｉをその有効鍵として受け取る。一実施形態では、デバイスは、鍵獲得済みフラグを真に設定し、ＤＰ秘密鍵の獲得に成功したことを指示することもできる。ブロック１２２０では、デバイスが新たなＩＶを選択し、その新たなＩＶを用いて、新たな暗号化された局在鍵ブロブを作成する（Ｌｏｃａｌｉｚｅｄ  Ｋｅｙｂｌｏｂ＝Ｅｎｃｒｙｐｔ（ＩＶ２，ＤＰｐｒｉ，ＤＰｐｒｉＤｉｇｅｓｔ）ｕｓｉｎｇ  ＳＫＥＹ）。一実施形態では、新たな暗号化された局在鍵ブロブを、クライアントコンピュータシステム上の鍵検索ユーティリティソフトウエアモジュール（図５に示されない）に返送することができる。ブロック１２２２では、鍵検索ユーティリティが、暗号化された局在鍵ブロブを、クライアントコンピュータシステム内の記憶装置（たとえば、大容量記憶デバイス３０８等）に格納する。この時点で、デバイスのＤＰｐｒｉは、クライアントコンピュータシステム内に安全に格納される。
【００４９】
デバイスがセットアップ処理中にＤＰｐｒｉを獲得すると、その後、デバイスはＤＰｐｒｉを用いることができる。図１３は、本発明の一実施形態による、クライアントコンピュータシステム処理の流れ図１３００である。クライアントコンピュータシステムは、セットアップが完了した後にいつでも、これらの動作を実行することができる。ステップ１３０２では、クライアントコンピュータシステムを通常通りに起動することができ、デバイスのためのデバイスドライバ５２６を、メインメモリにロードすることができる。デバイスドライバが初期化され、実行し始めるとき、デバイスドライバは、デバイス５０６のための大容量記憶デバイス３０８に格納された暗号化された局在鍵ブロブ５２４が既に存在するか否かを判定する。存在しない場合には、図１０〜図１２のセットアップ処理が実行される。このデバイスのために利用することができる暗号化された局在鍵ブロブが存在する場合には、処理はブロック１３０６で続けられる。ブロック１３０６では、デバイスドライバが、暗号化された局在鍵ブロブを検索し、その鍵ブロブをデバイスに転送する。一実施形態では、鍵ブロブの転送は、鍵ブロブロードコマンドを実行することによって達成することができる。
【００５０】
ブロック１３０８では、デバイスが、その一方向関数ｆを用いて、埋め込まれたＲＡＮＤ値５０８から、対称鍵ＳＫＥＹ（ここで暗号解読する際に用いられる）を生成し直す（ＳＫＥＹ＝ｆ（ＲＡＮＤ））。ブロック１３１０では、デバイスが、対称鍵ＳＫＥＹを用いて、暗号化された局在鍵ブロブを暗号解読し、ＤＰｐｒｉ及びＤＰｐｒｉダイジェストを生成し、これらの値を、その不揮発性記憶装置に格納する（Ｄｅｃｒｙｐｔｅｄ  Ｋｅｙｂｌｏｂ＝Ｄｅｃｒｙｐｔ（ＩＶ２，ＤＰｐｒｉ，ＤＰｐｒｉＤｉｇｅｓｔ）ｕｓｉｎｇ  ＳＫＥＹ）。第２の初期化ベクトル（ＩＶ２）は破棄することができる。ブロック１３１２では、デバイスが、ＤＰｐｒｉをハッシュし、その結果をＤＰｐｒｉダイジェストと比較することによって、ＤＰｐｒｉの保全性を検査する。その比較が良好である（すなわちダイジェストが一致する）場合には、デバイスは、ＤＰｐｒｉを、以前に獲得された有効鍵として受け取り、それを使用できるようにする。またデバイスは、鍵獲得済みフラグを真に設定し、ＤＰ秘密鍵の獲得に成功したことを指示することもできる。ブロック１３１４では、デバイスが、さらに別のＩＶを選択し、その新たなＩＶを用いて、新たな暗号化された局在鍵ブロブを作成する（Ｌｏｃａｌｉｚａｄ  Ｋｅｙｂｌｏｂ＝Ｅｎｃｒｙｐｔ（ＩＶ３，ＤＰｐｒｉ，ＤＰｐｒｉＤｉｇｅｓｔ）ｕｓｉｎｇ  ＳＫＥＹ）。新たな暗号化された局在鍵ブロブは、鍵検索ユーティリティに返送することができる。ブロック１３１６では、鍵検索ユーティリティが、暗号化された局在鍵ブロブを、クライアントコンピュータシステム内の記憶装置（たとえば、大容量記憶デバイス３０８等）に格納する。この時点で、デバイスのＤＰｐｒｉは、もう一度、クライアントコンピュータシステム内に安全に格納される。
【００５１】
本発明の一実施形態では、一度にデバイスＤＰ秘密鍵の全てを生成する必要はない。被保護サーバ上の鍵ブロブデータベースが定期的に更新されるものと仮定すると、デバイスＤＰ秘密鍵は、必要に応じて、１回分ずつ生成することができる。鍵ブロブデータベースが被保護サーバ上で更新される度に、それは、既に生成されているが、まだデバイスに割り当てられていないデバイス鍵を含む、これまでに生成されたような鍵ブロブデータベースを含むであろう。
【００５２】
別の実施形態では、デバイスのＤＰｐｒｉ鍵の生成を遅らせて、デバイス鍵を必要とするデバイスに対してだけ、これらの鍵が生成されるようにすることができる。デバイスから第１の鍵獲得要求を受信すると、被保護サーバは、依然としてデバイスのＲＡＮＤ値を保持する製造用被保護システムに対する要求を生成することができる。この時点で、製造用被保護システムは、そのデバイスのためのＤＰｐｒｉ鍵を生成し、その鍵を被保護サーバに返送し、そのときにだけＲＡＮＤ値を破壊する。
【００５３】
別の実施形態では、デバイスの不揮発性メモリに鍵サービス公開鍵のハッシュを格納する代わりに、デバイス製造業者が、ルート鍵のハッシュを格納し、その後、そのルート鍵で鍵サービス公開鍵のための証明書に署名することを選ぶこともできる。このようにして、同じルート鍵を、多数のデバイスのために用いることができる。
【００５４】
本明細書において説明される動作は、逐次的な過程として記述することができるが、それらの動作のうちのいくつかは、実際には、並列して、又は同時に実行することができる。さらに、いくつかの実施形態では、本発明の精神から逸脱することなく、それらの動作の順序を並べ替えることができる。
【００５５】
本明細書に記述される技法は、任意の特定のハードウエア構成又はソフトウエア構成には限定されない。それらは、任意のコンピューティング環境又は処理環境において適用できる見込みがある。それらの技法は、ハードウエア、ソフトウエア、又はその２つの組み合わせで実施することができる。それらの技法は、それぞれプロセッサと、プロセッサによって読み出すことができる記憶媒体（揮発性メモリ及び不揮発性メモリ及び／又は記憶素子を含む）と、少なくとも１つの入力デバイスと、複数可の出力デバイスとを含む、モバイルコンピュータ又は設置されたコンピュータ、携帯情報端末、セットトップボックス、携帯電話及びポケットベル、並びに他の電子デバイスのような、プログラミング可能な機械上で実行されるプログラムにおいて実施することができる。入力デバイスを用いて入力されるデータにプログラムコードが適用され、説明された機能が実行され、出力情報が生成される。その出力情報は、複数可の出力装置に適用することができる。本発明が、マルチプロセッサシステム、ミニコンピュータ、メインフレームコンピュータ等を含む、種々のコンピュータシステム構成で実施できることは当業者には理解されよう。また本発明は、分散型のコンピューティング環境でも実施することができ、その場合には、通信ネットワークを通してリンクされる遠隔処理デバイスによって、タスクを実行することができる。
【００５６】
各プログラムは、処理システムと通信するために、高度な手続き型プログラミング言語又はオブジェクト指向プログラミング言語で実施することができる。しかしながら、プログラムは、所望により、アセンブリ言語又は機械語で実施することもできる。いずれの場合でも、言語は、コンパイル又は翻訳することができる。
【００５７】
プログラム命令を用いて、複数の命令でプログラミングされる汎用処理システム又は特定用途の処理システムが、本明細書に記述される動作を実行することができる。別法では、それらの動作を実行するためのハードワイヤードロジックを含む特定のハードウエア構成要素によって、又はプログラミングされたコンピュータ構成要素及びカスタムハードウエア構成要素の任意の組み合わせによって、それらの動作を実行することができる。本明細書に記述される方法は、処理システム又は他の電子デバイスをプログラミングして、それらの方法を実行するために用いることができる命令を格納している機械読取り可能媒体を含むことができるコンピュータプログラム製品として提供することができる。本明細書において用いられる用語「機械読取り可能媒体」は、機械によって実行するための一連の命令を格納又は符号化することができる任意の媒体を含み、その一連の命令によって、その機械が本明細書に記述される方法のいずれか１つの方法を実行するであろう。したがって、用語「機械読取り可能媒体」は、限定はしないが、固体メモリ、光ディスク及び磁気ディスク、並びにデータ信号を符号化する搬送波を含むであろう。さらに、当該技術分野では、ソフトウエアについて述べるときに、１つの動作を行うか、又は１つの結果を生成するような種々の形態（たとえば、プログラム、手順、過程、アプリケーション、モジュール、ロジック等）で述べるのが一般的である。そのような表現は、処理システムによってソフトウエアを実行することにより、プロセッサが１つの動作を実行するか、又は１つの結果を生成することを省略して表現しているにすぎない。
【００５８】
本発明が、例示的な実施形態を参照しながら説明されてきたが、この説明は、限定する意味に解釈されることを意図していない。本発明が関連する技術分野の熟練者には明らかである、例示的な実施形態の種々の変更、及び本発明の他の実施形態は、本発明の精神及び範囲内にあると見なされる。
【図面の簡単な説明】
【００５９】
【図１】本発明の一実施形態に従って動作するトラステッドプラットフォームモジュール（ＴＰＭ）で実施されるプラットフォームを特徴とするシステムを示す図である。
【図２】図１のＴＰＭを含むプラットフォームの第１の実施形態を示す図である。
【図３】図１のＴＰＭを含むプラットフォームの第２の実施形態を示す図である。
【図４】図２のＴＰＭで実施されるコンピュータシステムの１つの例示的な実施形態を示す図である。
【図５】本発明の一実施形態による、オンラインサービスを用いて、直接証明鍵をデバイスに割り当てるためのシステムの図である。
【図６】本発明の一実施形態による、オンラインサービスを用いて、直接証明鍵を割り当てる方法のステージを示す流れ図である。
【図７】本発明の一実施形態による、被保護サーバセットアップ処理を示す流れ図である。
【図８】本発明の一実施形態による、デバイス製造業者セットアップ処理を示す流れ図である。
【図９】本発明の一実施形態による、デバイス製造業者生産処理を示す流れ図である。
【図１０】本発明の一実施形態による、クライアントコンピュータシステムセットアップ処理の流れ図である。
【図１１】本発明の一実施形態による、クライアントコンピュータシステムセットアップ処理の流れ図である。
【図１２】本発明の一実施形態による、クライアントコンピュータシステムセットアップ処理の流れ図である。
【図１３】本発明の一実施形態による、クライアントコンピュータシステム処理の流れ図である。
【図１】
2008507205.tif 000003
【図２】
2008507205.tif 000004
【図３】
2008507205.tif 000005
【図４】
2008507205.tif 000006
【図５】
2008507205.tif 000007
【図６】
2008507205.tif 000008
【図７】
2008507205.tif 000009
【図８】
2008507205.tif 000010
【図９】
2008507205.tif 000011
【図１０】
2008507205.tif 000012
【図１１】
2008507205.tif 000013
【図１２】
2008507205.tif 000014
【図１３】
2008507205.tif 000015
【国際調査報告】
2008507205.tif 000016
2008507205.tif 000017
2008507205.tif 000018