(57)【要約】  ある実施例において、装置は１以上の暗号化ユニットを具備する。本装置は、１以上のデータ暗号化キーと、この１以上のデータ暗号化キーに関連するヘッダを格納するためのメモリも具備する。関連ヘッダは、１以上の暗号化ユニットのうち、どのユニットがデータ暗号化キーを使用するかを定義する。
2007512787.tif 000002
【特許請求の範囲】
【請求項１】
１以上の暗号化ユニットと、
１以上のデータ暗号化キーおよび前記１以上のデータ暗号化キーに関する関連ヘッダを格納するメモリであって、前記関連ヘッダは前記１以上の暗号化ユニットのうちどのユニットが前記データ暗号化キーを利用するかを定義する、メモリと、
を含むことを特徴とする装置。
【請求項２】
前記関連ヘッダは、前記データ暗号化キーの用途種別を定義することを特徴とする請求項１記載の装置。
【請求項３】
前記データ暗号化キーに関する前記関連ヘッダに基づき、前記１以上の暗号化ユニットのうち、前記データ暗号化キーを利用するユニットと、動作種別とを制限するコントローラをさらに含むことを特徴とする請求項２記載の装置。
【請求項４】
前記関連ヘッダは、前記１以上のデータ暗号化キーを暗号化するために用いるキー暗号化キーの識別子を定義することを特徴とする請求項１記載の装置。
【請求項５】
前記１以上の暗号化ユニットは、高度暗号化規格ユニットと、データ暗号化規格ユニットと、メッセージ・ダイジェスト・ユニットと、機密ハッシュ・アルゴリズム・ユニットまたは指数演算装置とからなる群から選択されることを特徴とする請求項１記載の装置。
【請求項６】
ワイヤレス装置内の暗号化プロセッサであって、前記暗号化プロセッサは、
第１動作の実行の中間結果を生成する第１暗号化ユニットと、
前記中間結果に基づき第２動作の実行の最終結果を生成する第２暗号化ユニットであって、前記中間結果は前記暗号化プロセッサの外部からアクセス不能である、第２暗号化ユニットと、
を含むことを特徴とする装置。
【請求項７】
前記第１暗号化ユニットおよび前記第２暗号化ユニットは、高度暗号化規格ユニットと、データ暗号化規格ユニットと、メッセージ・ダイジェスト・ユニットと、機密ハッシュ・アルゴリズム・ユニットまたは指数演算装置とからなる群から選択されることを特徴とする請求項６記載の装置。
【請求項８】
前記第１動作が暗号化キーの使用を含み、前記暗号化キーは、前記暗号化キーが認証されるまで、前記第１暗号化ユニット内にロードされないことを特徴とする請求項６記載の装置。
【請求項９】
通信を受信するためのダイポール・アンテナと、
前記通信に基づき暗号化キーを利用しようとする暗号化動作に対して基本命令を生成するためのアプリケーション・プロセッサと、
暗号化プロセッサであって、
前記暗号化キーを格納するためのメモリと、
複数の暗号化ユニットであって、前記複数の暗号化ユニットの１つは前記暗号化キーの使用に対する課題を生成するものであって、前記アプリケーション・プロセッサはその課題に対する応答を生成する、暗号化プロセッサと、
前記応答が正しい場合に、前記暗号化キーを前記複数の暗号化ユニットの１つにロードして、前記暗号化動作を実行するコントローラと、
を含むことを特徴とするシステム。
【請求項１０】
前記暗号化プロセッサは、複数のマイクロコード命令を格納する不揮発性メモリをさらに含み、前記複数のマイクロコード命令の少なくとも一部に基づき、前記コントローラは、前記暗号化キーを前記複数の暗号化ユニットの１つにロードすることを特徴とする請求項９記載のシステム。
【請求項１１】
前記応答が正しくない場合に、前記コントローラは、前記暗号化動作の実行を途中終了することを特徴とする請求項９記載のシステム。
【請求項１２】
前記応答は、前記暗号化キーに関連するパスワードのハッシュを含むことを特徴とする請求項９記載のシステム。
【請求項１３】
暗号化動作に関連する基本命令を生成するための、ワイヤレス装置内のアプリケーション・プロセッサと、
前記ワイヤレス装置内の暗号化プロセッサであって、
前記基本命令を受信するコントローラであって、前記暗号化プロセッサ内の不揮発性メモリから複数のマイクロコード命令を取り出すコントローラ、
前記複数のマイクロコード命令の第１の命令に基づき、第１動作の実行から中間結果を生成する第１機能ユニット、および、
前記複数のマイクロコード命令の第２の命令に基づく第２動作の実行から、前記中間結果に基づく前記暗号化動作の最終結果を生成する第２機能ユニットであって、前記中間結果は前記暗号化プロセッサの外部からはアクセス不能であることを特徴とする第２機能ユニット、を含む暗号化プロセッサと、
を含むことを特徴とするシステム。
【請求項１４】
前記暗号化プロセッサは、暗号化キーを格納する揮発性メモリをさらに含むことを特徴とする請求項１３記載のシステム。
【請求項１５】
前記第２機能ユニットが前記暗号化キーを用いて前記最終結果を生成し、前記アプリケーション・プロセッサが前記暗号化キーを認証するまで、前記コントローラは、前記第２機能ユニット内に前記暗号化キーをロードしないことを特徴とする請求項１４記載のシステム。
【請求項１６】
前記暗号化プロセッサ内で保護されるデータ暗号化キーを利用する暗号化動作を実行するための基本命令を暗号化プロセッサ内に受信する段階と、
前記データ暗号化キーおよび前記データ暗号化キーの関連ヘッダを取り出す段階であって、前記関連ヘッダは１以上の暗号化ユニットのうちどのユニットが前記データ暗号化キーを利用するかを定義する段階と、
前記関連ヘッダが前記１以上の暗号化ユニットの１つを定義する場合に、前記データ暗号化キーを用いて前記１以上の暗号化ユニット内で動作を実行する段階と、
を含むことを特徴とする方法。
【請求項１７】
前記関連ヘッダは、前記データ暗号化キーの用途種別を定義することを特徴とする請求項１６記載の方法。
【請求項１８】
前記データ暗号化キーを用いて前記１以上の暗号化ユニット内で前記動作を実行する段階は、前記動作の種別が前記用途種別により定義される場合に、前記データ暗号化キーを利用して前記１以上の暗号化ユニット内で前記動作を実行する段階を含むことを特徴とする請求項１７記載の方法。
【請求項１９】
前記暗号化プロセッサ内に保護される暗号化キーを利用する暗号化動作を実行するために、基本命令をアプリケーション・プロセッサ上で動作するアプリケーションから暗号化プロセッサに受信する段階と、
前記アプリケーションに対して、前記暗号化キーの利用に対する課題を作成する段階と、
前記アプリケーションから、前記暗号化プロセッサに前記課題に対する応答を受信する段階と、
前記応答が正しい場合に、以下の動作を実行する段階であって、前記段階は、
前記暗号化キーを前記暗号化プロセッサの機能ユニットにロードする段階、および
前記暗号化キーを用いて前記機能ユニット内で動作を実行する段階、を含む、段階と、
を含むことを特徴とする方法。
【請求項２０】
前記応答が正しくない場合に、前記基本命令の実行を途中終了する段階をさらに含むことを特徴とする請求項１９記載の方法。
【請求項２１】
前記アプリケーションから前記暗号化プロセッサに前記課題に対する前記応答を受信する段階は、前記暗号化キーに関連するパスワードのハッシュを受信する段階を含むことを特徴とする請求項１９記載の方法。
【請求項２２】
前記応答が正しい場合に、前記以下の動作を実行する段階は、前記パスワードの前記ハッシュが前記暗号化プロセッサ内で生成される前記パスワードのハッシュに等しければ、前記以下の動作を実行する段階を含むことを特徴とする請求項２１記載の方法。
【請求項２３】
機械によって実行されたときに、前記機械に以下の動作を実行させる命令を提供する機械的に読取り可能な媒体であって、
前記暗号化プロセッサ内で保護されるデータ暗号化キーを利用する暗号化動作を実行するための基本命令を暗号化プロセッサ内に受信し、
前記データ暗号化キーおよび前記データ暗号化キーの関連ヘッダを取り出す段階であって、前記関連ヘッダは１以上の暗号化ユニットのうちどのユニットが前記データ暗号化キーを利用するかを定義し、
前記関連ヘッダが前記１以上の暗号化ユニットの１つを定義する場合に、前記データ暗号化キーを用いて前記１以上の暗号化ユニット内で動作を実行する、
動作を実行する命令を与える機械的に読取り可能な媒体。
【請求項２４】
前記関連ヘッダが前記データ暗号化キーの用途種別を定義することを特徴とする請求項２３記載の機械的に読取り可能な媒体。
【請求項２５】
前記データ暗号化キーを用いて前記１以上の暗号化ユニット内で前記動作を実行することは、前記動作の種別が前記用途種別により定義される場合に、前記データ暗号化キーを利用して前記１以上の暗号化ユニット内で前記動作を実行することを含むことを特徴とする請求項２４記載の機械的に読取り可能な媒体。
【請求項２６】
機械によって実行されたときに、前記機械に以下の動作を実行させる命令を提供する機械的に読取り可能な媒体であって、
前記暗号化プロセッサ内に保護される暗号化キーを利用する暗号化動作を実行するために、基本命令をアプリケーション・プロセッサ上で動作するアプリケーションから暗号化プロセッサに受信し、
前記アプリケーションに対して、前記暗号化キーの利用に対する課題を作成し、
前記アプリケーションから、前記暗号化プロセッサに前記課題に対する応答を受信し、
前記応答が正しい場合に、以下の動作を実行し、前記動作は、
前記暗号化キーを前記暗号化プロセッサの機能ユニットにロードし、および
前記暗号化キーを用いて前記機能ユニット内で動作を実行する、
動作を実行する命令を与える機械的に読取り可能な媒体。
【請求項２７】
前記応答が正しくない場合に、前記基本命令の実行を途中終了することをさらに含むことを特徴とする請求項２６記載の機械的に読取り可能な媒体。
【請求項２８】
前記アプリケーションから前記暗号化プロセッサに前記課題に対する前記応答を受信することは、前記暗号化キーに関連するパスワードのハッシュを受信することを含むことを特徴とする請求項２６記載の機械的に読取り可能な媒体。
【請求項２９】
前記応答が正しい場合に、以下の動作を実行することは、前記パスワードの前記ハッシュが前記暗号化プロセッサ内に生成される前記パスワードのハッシュと等しい場合に、前記以下の動作を実行することを含むことを特徴とする請求項２８記載の機械的に読取り可能な媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願
本件は、２００３年１２月１１日に出願され、本件にその全明細書を参考文献として包含する米国暫定特許出願第６０／５２８，８９０号「トラステッド・モバイル・プラットフォーム・アーキテクチャ」に対する優先権を主張する。
本出願は、２００４年３月３１日に出願され、本件に開示される実施例の被譲渡人であるインテルに譲渡された係属中の米国特許出願第１０／８１５，４５４号(代理人文書番号８８４．Ｂ８９ＵＳ１）「トラスト・プロセッサのための方法および装置」に関連する。
【０００２】
本発明は、一般に電子データ処理に関し、さらに詳しくは、トラステッド・モバイル・プラットフォーム・アーキテクチャに関する。
【背景技術】
【０００３】
ワイヤレス・モバイル装置（携帯電話，携帯情報端末（ＰＤＡ）など）は、通常は小型でコードレスのために、紛失し易い。このような装置はなくしやすいがために、盗みやすい。盗難に遭いやすいという傾向があるために、これらの装置は不正使用を被ることが多い。さらに、低電力の装置を構築するという最低限の要求を満たすアプローチによって、内蔵されるシステムは（オペレーティング・システムおよびハードウェアの観点から）単純化されており、そのために、悪意のある使用者および／またはアプリケーションの支配の影響を受けやすい。使用者は、より価値の高い利用のためにこれらの装置に依存している。特に、このような装置内部には、使用者は領収書，クレジット・カード番号，住所，電話番号，機密文書などの機密情報を保存している。従って、この装置は、その攻撃の容易さのためにますます、窃盗の主要な標的になってきている。そのために、装置内に保存されるアプリケーションおよびデータを含めて、装置の統合性を確保する必要がある。
【発明の開示】
【０００４】
トラステッド・モバイル・プラットフォーム・アーキテクチャのための方法，装置およびシステムを説明する。以下の説明においては、多数の特定の詳細事項が記述される。しかし、本発明の実施例はこれら特定の詳細事項がなくとも、実現できることを理解頂きたい。他の場合には、本説明の理解を妨げないために、周知の回路，構造および技術を詳細に示さないことがある。
【０００５】
この詳細な説明は、３つのセクションに分かれる。第１のセクションにおいて、ハードウェアのアーキテクチャを提示する。第２のセクションにおいて、トラステッド暗号化動作を説明する。第３のセクションにおいて、システムの動作環境を説明する。
【０００６】
ハードウェア・アーキテクチャ
図１は、本発明のある実施例による、トラステッド・プラットフォーム・アーキテクチャを有するモバイル・コンピュータ装置の簡単な機能ブロック図である。詳しくは、図１は、トラステッド・モバイル・コンピュータ装置１００を示す。この装置は、複数の異なる種類のモバイル・コンピュータ装置(携帯電話，ＰＤＡなど）を代表するものとすることができる。トラステッド・モバイル・コンピュータ装置１００は、システムオンチップ１０２と、ディスプレイ１０３と、タッチ・パッド１０４と、アンテナ１０５とを備え、これらは共に結合される。ディスプレイは、液晶ディスプレイ（ＬＣＤ：liquid crystal display）スクリーンなど、種々の表示装置とすることができる。タッチ・パッド１０４は、トラステッド・モバイル・コンピュータ装置１００の使用者からの入力を受信するために利用することができる。たとえば、タッチ・パッド１０４は、数字タッチ・パッドやキーボードなどでよい。図示はされないが、トラステッド・モバイル・コンピュータ装置１００は、使用者からのオーディオ・データの入出力のための、オーディオ入力／出力(Ｉ／Ｏ）論理など、複数の他の周辺機器を具備することがある。
【０００７】
システムオンチップ１０２は、本明細書に説明される構成部品が、例えば、同一の半導体基板内に収められる単一のチップとすることができる。あるいは、システムオンチップ１０２は、複数のこのようなチップがエポキシ接着されたものの場合もある。
【０００８】
システムオンチップ１０２は、アプリケーション・プロセッサ１０６と、トラステッド・ブート読取り専用メモリ（ＲＯＭ）１０８と、通信論理１１０と、コントローラ１１２と、不揮発性メモリ・コントローラ１１４と、不揮発性メモリ１１６と、揮発性メモリ・コントローラ１１８と、揮発性メモリ１２０と、グラフィック論理１２２と、直接メモリ・アクセス（ＤＭＡ）論理１２４と、暗号化プロセッサ１２６と、周辺論理１２８と、ジョイント・テスト・アクセス・グループ（ＪＴＡＧ）インターフェース１５５と、バス１３０とを具備する。アプリケーション・プロセッサ１０６，トラステッド・ブートＲＯＭ１０８，通信論理１１０，コントローラ１１２，不揮発性メモリ・コントローラ１１４，不揮発性メモリ１１６，揮発性メモリ・コントローラ１１８，グラフィック論理１２２，ＪＴＡＧインターフェース１５５およびＤＭＡ論理１２４は、バス１３０に結合される。これにより、バス１３０は、これらの構成部品間の通信を行う。ディスプレイ１０３とタッチ・パッド１０４は、周辺論理１２８を通じてシステムオンチップ１０２に結合する。
【０００９】
アンテナ１０５は、通信論理１１０に結合する。通信論理１１０は、トラステッド・モバイル・コンピュータ装置１００とのＩ／Ｏの受信および送信を行う。例えば、通信論理１１０は、アンテナ１０５を利用してトラステッド・モバイル・コンピュータ装置１００とのワイヤレス通信の受信および送信を行う。アンテナ１０５は、特に、パッチ・アンテナ，モノポール・アンテナ，ダイポール・アンテナ，ビーム・アンテナ，アレイ・アンテナ，方向性アンテナとすることができる。下記にさらに詳しく述べるが、アンテナ１０５は通信を受信し、それによってアプリケーション・プロセッサ１０６が暗号化動作のための１以上の基本命令を生成することがある。このような基本命令を、暗号化プロセッサ１２６に送信し、実行することができる。また、アンテナ１０５は暗号化プロセッサ１２６により実行される暗号化動作に関連する通信を出力することがある。
【００１０】
実施例によっては、通信論理１１０は、トラステッド・モバイル・コンピュータ装置１００のための特定の通信基準を確立するベースバンド・プロセッサ（例えば、デジタル信号プロセッサ）を具備することがある。通信論理１１０は、ワイヤレス・インターフェイスとしてもよい。例えば、トラステッド・モバイル・コンピュータ装置１００が携帯電話である場合は、通信論理１１０は、トラステッド・モバイル・コンピュータ装置１００のためのセルラ・ネットワーク・インターフェイス，ワイヤレス・インターフェイスを提供する。このワイヤレス・インターフェイスに関して、ベースバンド・プロセッサは、少数の例としてあげるが、符号分割多重接続（ＣＤＭＡ）セルラ無線電話通信システムまたは広帯域ＣＤＭＡ（Ｗ−ＣＤＭＡ）無線電話通信システムを構築することができる。Ｗ−ＣＤＭＡは、特に、第３世代（「３Ｇ］）のソリューションとして欧州電気通信標準化機構（ＥＴＳＩ）により、国際電気通信連合（ＩＴＵ）に対し、第三世代携帯電話（ＦＰＬＭＴＳ）に関する世界共通次世代携帯電話システム（ＩＭＴ−２０００）に関する提案として、提出されている。ベースバンド・プロセッサは、グローバル・システム・フォー・モバイル・コミュニケーションズ（ＧＳＭ），ＥＴＳＩ，第５．０．０版（１９９５年１２月）；または汎用パケット無線システム（ＧＰＲＳ）  （ＧＳＭ０２．６０，第６．１版），ＥＴＳＩ１９９７年版などの他の電気通信の標準を構築することもある。
【００１１】
トラステッド・ブートＲＯＭ１０８は、アプリケーション・プロセッサ１０６内で動作実行するオペレーティング・システムに対し制御を転送する前に、アプリケーション・プロセッサ１０６が実行する符号を格納する。以下にさらに詳細に説明するが、このような符号により、オペレーティング・システムの統合性を確実にするための複数のトラスト動作が（暗号化プロセッサ１２６を利用して）実行される。トラステッド・ブート動作のより詳細な説明は、２００３年１２月２２日出願の同時係属出願され、共に譲渡された以下の米国特許出願「電子装置の安全確保(Securing an Electronic Device)」，第１０／７４５，４６９号に説明する。ＪＴＡＧインターフェース１５５は、トラステッド・モバイル・コンピュータ装置１００内へのデバッグ用インターフェースとなる。
【００１２】
不揮発性メモリ１１６は、フラッシュ・メモリなど複数の異なる種類の不揮発性書き込み可能メモリのうち任意のものとすることができる。揮発性メモリ１２０は、ランダム・アクセス・メモリ（ＲＡＭ）（例えば、同期型ＲＡＭ（ＳＤＲＡＭ），ＤＲＡＭ，ＤＤＲ−ＳＤＲＡＭなど）などの複数の異なる種類の揮発性書き込み可能メモリのうち任意のものとすることができる。
【００１３】
不揮発性メモリ・コントローラ１１４は、不揮発性メモリ１１６に結合する。揮発性メモリ・コントローラ１１８は、揮発性メモリ１２０に結合する。これにより、バス１３０に結合する構成部品は、それぞれ、不揮発性メモリ・コントローラ１１４および揮発性メモリ・コントローラ１１８を通じて、不揮発性メモリ１１６および揮発性メモリ１２０と通信を行うことができる。暗号化プロセッサ１２６および周辺論理１２８は、ＤＭＡ論理１２４を通じてバス１３０に結合する。バス１３０に結合される構成部品は、ＤＭＡ論理１２４を通じて暗号化プロセッサ１２６および周辺論理１２８と通信を行うことができる。
【００１４】
暗号化プロセッサ１２６は、プライベート・インターフェイスを介し、それぞれ不揮発性メモリ・コントローラ１１４および揮発性メモリ・コントローラ１１８を通じて、不揮発性メモリ１１６および揮発性メモリ１２０にも直接結合する。図示される如く、トラステッド・モバイル・コンピュータ装置１００内の他の構成部品（アプリケーション・プロセッサ１０６など）は、これらのプライベート・インターフェイスを介して不揮発性メモリ１１６および揮発性メモリ１２０にアクセスすることはできない。また、暗号化プロセッサ１２６とアプリケーション・プロセッサ１０６とは、バス１３０（パブリック・インターフェイス）を通じて、不揮発性メモリ１１６と揮発性メモリ１２０にアクセスすることができる。
【００１５】
暗号化プロセッサ１２６は、揮発性メモリ１２０を少なくとも２つの異なる部分（パブリック部分とプライベート部分）に分割することができる。これにより、暗号化プロセッサ１２６は、揮発性メモリ１２０のプライベート部分内のアドレス・スペースにアクセスすることができる。また、トラステッド・モバイル・コンピュータ装置１００内の異なる構成部品は、揮発性メモリ１２０のパブリック部分内にあるアドレス・スペースにアクセスすることができる。このようなコンフィギュレーションでは、プライベート部分を安全確保／トラステッド用途のために利用することができ、アプリケーション・プロセッサ１０６がこの部分にアクセスすることを妨げる。従って、ウィルスおよび／または有害な符号をアプリケーション・プロセッサ１０６上で実行しようとしても、このような符号が揮発性メモリ１２０のプライベート部分を破壊することはない。そのため、暗号化プロセッサ１２６は、その中で実行する動作で用いられる暗号化済みの暗号化キーなどを安全に格納するために、このプライベート部分を利用することができる。
【００１６】
下記にさらに詳しく説明するように、暗号化プロセッサ１２６は、保護された記憶部分と複数の異なる機能ユニットにより構成される。暗号化プロセッサ１２６は、トラステッド・モバイル・コンピュータ装置１００に関連する、あるいはその中で動作実行する、ソフトウェア，ハードウェア，コンフィギュレーション・データなどの認証を行うことができる。たとえば、トラステッド・モバイル・コンピュータ装置１００の初期化の一部として、暗号化プロセッサ１２６はアプリケーションの符号にまたがる暗号化ハッシュを実行し、このハッシュをトラステッド・モバイル・コンピュータ装置１００内に安全に格納される署名済み信任状と比較することができる。また、暗号化プロセッサ１２６は、トラステッド・モバイル・コンピュータ装置１００の動作中に異なる暗号化動作を行うこともできる。たとえば、暗号化プロセッサ１２６は、暗号化キーを生成し、異なる種類の暗号化および暗号解読を行い、ハッシュやデジタル署名を作成することなどができる。
【００１７】
アプリケーション・プロセッサ１０６が第１動作コンテクストにあり、暗号化プロセッサ１２６が第２動作コンテクストにある場合がある。第１動作コンテクストと第２動作コンテクストとは互いに独立している。以下に詳細に説明するが、アプリケーション・プロセッサ１０６は、（ＤＭＡ論理１２４を介して）アプリケーション・プロセッサ１０６と暗号化プロセッサ１２６上で動作実行するアプリケーション間のインターフェースとなる（暗号化プロセッサ１２６用の）ドライバを実行することができる。このドライバは、アプリケーション・プロセッサ１０６を制御するオペレーティング・システムから、異なるセキュリティ・サービス（認証，トラスト，暗号化，暗号解読など）に関するリクエストを受信する。ドライバは、セキュリティ・サービス・リクエストに基づき、１以上の基本命令を生成することができる。これらの基本命令は、次に暗号化プロセッサ１２６に送られて、実行される。さらに暗号化プロセッサ１２６は、基本命令に基づき動作実行が行われるデータを（不揮発性メモリ１１６および／または揮発性メモリ１２０からＤＭＡ論理１２４を介して）検索することができる。暗号化プロセッサ１２６は、基本命令に基づき、検索されたデータに関して暗号化動作を実行する。
【００１８】
トラステッド・モバイル・コンピュータ装置１００の動作の更なる詳細説明は、図４，５，６Ａないし６Ｂに関して述べる。
【００１９】
図２は、本発明のある実施例による、トラステッド・モバイル・コンピュータ装置内の暗号化プロセッサの簡単な機能ブロック図である。詳しくは、図２は、暗号化プロセッサ１２６の一実施例のより詳細なブロック図である。
【００２０】
暗号化プロセッサ１２６は、ＤＭＡインターフェース２０２と、命令シーケンス・バッファ２０４と、コントローラ２０６と、マイクロコード・メモリ２４０と、パッチ・フラッグ・メモリ２８１と、制御レジスタ・セット２０８と、コンテクスト記憶装置／プラットフォーム・コンフィギュレーション・レジスタ２１０と、ステータス・レジスタ２１２と、中間記憶装置２１４と、出力バッファ２１６と、入力バッファ２１８と、内部揮発性メモリ２２０と、演算論理装置（ＡＬＵ）２２２と、データ暗号化規格（ＤＥＳ）ユニット２２４と、メッセージ・ダイジェスト（ＭＤ）ユニット２２６と、乱数発生器（ＲＮＧ）ユニット２２８と、機密ハッシュ・アルゴリズム（ＳＨＡ：secure hash algorithm）ユニット２３０と、高度暗号化規格（ＡＥＳ）ユニット２３２と、指数演算装置２３４とを具備する。かくして、暗号化プロセッサ１２６は、複数の異なる機能ユニット（複数の異なる暗号化ユニットを含む）（ＡＬＵ２２２，ＤＥＳユニット２２４，ＭＤユニット２２６，ＲＮＧユニット２２８，ＳＨＡユニット２３０，ＡＥＳユニット２３２および指数演算装置２３４を含む）を具備する。
【００２１】
マイクロコード・メモリ２４０は、ある実施例では読取り専用メモリ（ＲＯＭ）であるが、他の種類のメモリでもよい。内部揮発性メモリ２２０は、ランダム・アクセス・メモリ（ＲＡＭ）（例えば、同期ＲＡＭ（ＳＤＲＡＭ），ＤＲＡＭ，ＤＲ−ＳＤＲＡＭなど）などの複数の異なる種類の揮発性書き込み可能メモリのうち、任意のものでよい。図示される如く、内部揮発性メモリ２２０は、キー・キャッシュ２２１，ルート暗号化キー２４１およびカウンタ２１５を格納する。キー・キャッシュ２２１は、複数の異なる被保護キーを格納し、これは暗号化キーおよび／または（データ暗号化キーを暗号化するために用いられる）キー暗号化キーでもよい。キー・キャッシュ２２１の一実施例を図３に関連して、以下にさらに詳細に説明する。
【００２２】
パッチ・フラッグ・メモリ２８１は、ランダム・アクセス・メモリ（ＲＡＭ）（例えば、同期ＲＡＭ（ＳＤＲＡＭ），ＤＲＡＭ，ＤＲ−ＳＤＲＡＭなど）などの複数の異なる種類の揮発性書き込み可能メモリのうち、任意のものでよい。下記にさらに詳細に説明するように、パッチ・フラッグ・メモリ２８１は、マイクロコード・メモリ２４０のセグメントに対応するパッチ・フラッグを格納することができる。あるパッチ・フラッグは、マイクロコード・メモリ２４０のあるセグメントにパッチが適用されたか否かを示す。パッチ・フラッグの使用の更なる詳細については、下記に詳述する。
【００２３】
ＤＭＡインターフェース２０２は、暗号化プロセッサ１２６とデータを受信および送信するように結合される。ＤＭＡインターフェース２０２は、命令シーケンス・バッファ２０４と、制御レジスタ・セット２０８と、コンテクスト記憶装置／ＰＣＲ２１０と、ステータス・レジスタ２１２と、出力バッファ２１６と、入力バッファ２１８とに結合する。
【００２４】
命令シーケンス・バッファ２０４は、アプリケーション・プロセッサ１０６から受信した基本命令を格納する。コントローラ２０６は、命令シーケンス・バッファ２０４から特定の基本命令を検索し、マイクロコード・メモリ２４０から関連のマイクロコード命令を検索することができる。これらのマイクロコード命令には、暗号化プロセッサ１２６内で実行される一連の動作が含まれることがある。例えば、ある命令によって、コントローラ２０６が揮発性メモリ１２０から暗号化済みデータ暗号化キーの検索することがある。異なる命令により、コントローラ２０６は、このキーを、機能ユニットの１つに送信し、暗号解読する場合もある。別の命令によって、暗号解読されたデータ暗号化キーを異なる機能ユニットに送信し、暗号化動作を実行することもできる。この一連のマイクロコード命令の出力を出力バッファ２１６に格納することができる。（暗号化プロセッサ１２６用の）ドライバは、この出力を検索することができる。このような動作のより詳細な説明を下記に行う。
【００２５】
ＳＨＡユニット２３０は、暗号化ハッシュの作成と認証に用いられることがある。ＳＨＡユニット２３０は、ＳＨＡ−１動作と、ＳＨＡに基づくＨＭＡＣ計算とを行うことができる。指数演算装置２３４は、複数の異なる演算動作の加速を実行するために用いることができる。たとえば、指数演算装置２３４は、異なる種類の暗号化規格（ＲＳＡ法など）のための非対称の暗号化および暗号解読，署名，署名の認証などを実行するために利用することができる。例証として、指数演算装置２３４は、モジュラー累乗法，モジュラー削減，乗算，減算などを実行することができる。
【００２６】
ＡＥＳユニット２３２は、複数の異なる種類の暗号化（対称，非対称）を行うことができる。ＡＥＳユニット２３２は、暗号化キーの長さにより可変数のラウンド数だけ暗号化を実行することがある。たとえば、ＡＥＳユニット２３２は、それぞれ１０ラウンド，１２ラウンドおよび１４ラウンドとなる、１２８ビット，１９２ビットおよび２５６ビットのキー長に対応することができる。ＡＥＳユニット２３２を用いて、異なるキーによるデータ暗号化キーの暗号化、即ちキー暗号化キーを暗号化することができる。
【００２７】
このような動作によって、揮発性メモリ２２０のキー・キャッシュ２２１内にデータ暗号化キーを安全に格納することが可能になる。暗号化プロセッサ１２６は、暗号化キーの階層を構築することができる。たとえば、ＡＥＳユニット２３２は、キー暗号化キーでデータ暗号化キーを暗号化することができる。ＡＥＳユニット２３２は、ルート暗号化キー２４１でキー暗号化キーを暗号化することができる。暗号化された形式で、データ暗号化キーとキー暗号化キーを暗号化プロセッサ１２６の外部にあるメモリ（揮発性メモリ１１６，不揮発性メモリ１２０など）に格納することができる。機密性を図るために、ルート暗号化キー２４１は暗号化プロセッサ１２６の外部に露出しない。
【００２８】
ＤＥＳユニット２２４は、複数の異なる種類の暗号化および暗号解読を実行することができる。たとえば、ＤＥＳユニット２２４は、６４ビット・キーに基づき６４ビット・ブロックのデータを暗号化および解読することができる。ＭＤユニット２２６は、複数の異なる規格に基づきハッシュ（メッセージ・ダイジェスト）を生成することができる。たとえば、ＭＤユニット２２６は、ＭＤ−５，ＭＤ−４などに基づきハッシュを作成することができる。ＭＤユニット２２６は、任意の長さのメッセージ・ブロックを受信し、１２８ビットのダイジェストを生成することができる。ＭＤユニット２２６は、キード・ハッシュ・メッセージ認証コード（ＨＭＡＣ）動作も実行することができる。
【００２９】
ＡＬＵ２２２は、複数の異なる演算および論理動作を行って、トラスト動作および暗号化動作を実行することができる。たとえば、ＡＬＵ２２２は、加算，減算，乗算，除算，ビット整合，シフト演算，異なる論理関数（論理積，論理和，排他的論理和など）などを実行することができる。
【００３０】
ＲＮＧユニット２２８は、異なる種類の乱数発生を行うことができる。ＲＮＧユニット２２８は、線形フィードバック・シフト・レジスタ（ＬＦＳＲ）を用いて、乱数ビットの数列を生成することができる。また、ＬＦＳＲの出力は、ＳＨＡユニット２３０を通じて送られ、さらに乱数化することができる。
【００３１】
制御レジスタ・セット２０８は、暗号化プロセッサ１２６を制御するために用いるデータを格納することができる。それにより、暗号化プロセッサ１２６の外部の構成部品は、暗号化プロセッサ１２６の制御およびコンフィギュレーションに関係する制御レジスタ・セット２０８内にデータを格納することができる。コンテクスト記憶装置／ＰＣＲ２１０は、トラステッド・モバイル・コンピュータ装置１００に関するコンテクストとコンフィギュレーションとを格納することができる。たとえば、コンテクスト記憶装置／ＰＣＲ２１０は、アプリケーション・プロセッサ１０６上で動作実行する異なるアプリケーションの認証に関するトラスト動作から、暗号化ハッシュを格納することができる。ステータス・レジスタ２１２は、暗号化プロセッサ１２６内の特定の動作に関するステータス，異なる機能ユニットのステータスなどを格納するために用いられる。中間記憶装置２１４は、ある機能ユニットから出力され、他の機能ユニットに入力される中間結果を格納するために用いることができる。
【００３２】
入力バッファ２１８は、特定の動作が行われるデータを格納することができる。たとえば、ある基本命令に関して暗号化ハッシュをアプリケーションのコードにまたがり実行しようとする場合に、そのコードは入力バッファ２１８内に格納される。
【００３３】
図示される如く、暗号化プロセッサ１２６は、複数の機能ユニット（複数の異なる暗号化ユニットを含む）と、異なる揮発性記憶装置とを具備する。また、暗号化プロセッサ１２６は、複数の異なる動作を実行し、その中間結果は機密性が守られる。以下にさらに説明するように、コントローラ２０６はこれらの異なる機能ユニットの動作と、それらの間のデータの流れとを制御することができる。
【００３４】
以下に説明するように、暗号化プロセッサ１２６は、その中の動作のアトミシティおよび／または統合性を図ることによって、安全な動作を可能にする。動作のアトミシティとは、その中で進行中の動作が先取りして阻止されることなく、完了するまで実行されることと定義される。動作の統合性とは、暗号化プロセッサ１２６が中間データおよび結果を不透明にすることと定義される。暗号化プロセッサ１２６は、より高レベルのセキュリティ・サービスを生成するためのトラステッド・モバイル・コンピュータ装置１００の中心として働く。このようなサービスには、安全な記憶装置，安全な、あるいは暗号化された通信を信頼性をもって実行促進すること，乱数発生などが含まれる。
【００３５】
暗号化プロセッサ１２６は、非保護モードと保護モードの両方で動作することができる。非保護モードにおいては、暗号化プロセッサ１２６は暗号化および暗号解読に関して安全でないハードウェア・アクセラレータとして働くことになる。たとえば、暗号化プロセッサ１２６は、アプリケーション・プロセッサ１０６上で動作実行中のアプリケーションに関するバルク暗号化動作の実行のリクエストを受信することがある。保護モードにおいては、暗号化プロセッサ１２６は、複数の異なる安全なアトミック動作を実行することができる。これらの動作に関する詳細は後述する。
【００３６】
図３は、本発明のある実施例による、トラステッド・モバイル・コンピュータ装置内の暗号化プロセッサのキー・キャッシュのエントリの一実施例を示す。詳しくは、図３は、揮発性メモリ２２０のキー・キャッシュ２２１内のエントリを示す。キー・キャッシュ２２１は、保護された暗号化キー３１２とヘッダ３００とからなる１ないし複数のエントリを含むことがある。ヘッダは、キーの用途に関して、複数の異なる識別ならびに制限を行う。
【００３７】
図示される如く、ヘッダ３００は識別子３０２と、保護識別子３０４と、複数のフラッグ３０６とを備える。複数のフラッグ３０６は、装置種別３０８と用途種別３１０とを含む。識別子３０２は、保護された暗号化キー３１２を識別する英数値とすることができる。暗号化プロセッサ１２６内の異なる機能ユニットおよび／またはコントローラ２０６は、識別子３０２を用いて保護された暗号化キー３１２にアクセスすることができる。保護識別子３０４は、この保護された暗号化キー３１２を暗号化するために用いられる暗号化キーを識別する英数値とすることができる。保護された暗号化キー３１２がデータ暗号化キーの場合は、保護識別子３０４は、１つのキー暗号化キーのための識別子となりうる。保護された暗号化キー３１２がキー暗号化キーの場合は、保護識別子３０４は、ルート暗号化キー２４１とすることができる。
【００３８】
装置種別３０８は、保護された暗号化キー３１２にアクセスできる暗号化プロセッサ１２６内の１以上の機能ユニットを識別する。そのため、装置種別３０８により識別されない特定の保護された暗号化キー３１２に機能ユニットをアクセスさせようとするマイクロコード命令が基本命令により発されると、そのアクセスは拒否されて、暗号化プロセッサ１２６は、このような命令の実施を要求したアプリケーションに対してエラーを返す。用途種別３１０は、保護された暗号化キー３１２を用いて実行することのできる１種類以上の動作を識別する。動作の種類には、署名，暗号化記憶，証明識別キー（ＡＩＫ：Attestation Identity Key）動作などがある。
【００３９】
トラステッド動作および暗号化動作
トラステッド動作および暗号化動作のより詳細な説明を行う。図４は、本発明のある実施例による、暗号化プロセッサとのインターフェース動作のフローチャートである。詳しくは、図４は、暗号化プロセッサ１２６とインターフェースを行うアプリケーション・プロセッサ１０６上で動作実行する（暗号化プロセッサ１２６のための）ドライバの動作に関するフローチャート４００である。
【００４０】
ブロック４０２において、トラステッド動作または暗号化動作に対するセキュリティ・サービス・リクエストが受信される。図１の実施例を参照して、アプリケーション・プロセッサ１０６上で動作実行するドライバは、トラステッド動作または暗号化動作に関するセキュリティ・サービス・リクエストを受信する。たとえば、このドライバは、オペレーティング・システムまたはアプリケーション・プロセッサ１０６上で動作実行する他のアプリケーションからセキュリティ・サービス・リクエストを受信する。セキュリティ・サービス・リクエストは、アプリケーション，ハードウェア，コンフィギュレーション情報などを認証するトラスト動作である。セキュリティ・サービス・リクエストは、暗号化動作（ハッシング，キー作成，暗号化，暗号解読など）に関するものである。制御は、ブロック４０４に続く。
【００４１】
ブロック４０４において、セキュリティ・サービス・リクエストに基づいて、少なくとも１つの基本命令が生成される。図１の実施例を参照して、暗号化プロセッサ１２６のドライバは、セキュリティ・サービス・リクエストに基づき、少なくとも１つの基本命令を生成する。たとえば、セキュリティ・サービス・リクエストは、１ないし複数の異なる暗号化動作を含むことがある。それにより、ドライバは、異なる動作に関する基本命令を生成することができる。制御はブロック４０６に続く。
【００４２】
ブロック４０６において、基本命令が暗号化プロセッサに送信される。図１の実施例を参照して、暗号化プロセッサ１２６のドライバが基本命令を、暗号化プロセッサ１２６に送信する。ドライバは、ＤＭＡ論理１２４を通じてこの送信を行う。制御は、ブロック４０８に続く。
【００４３】
ブロック４０８において、基本命令の結果が暗号化プロセッサから受信される。図１の実施例を参照して、暗号化プロセッサ１２６は、基本命令の結果を、出力バッファ２１６を通じて（ＤＭＡインターフェース２０２を利用して）暗号化プロセッサ１２６のドライバに送り返す。たとえば、基本命令が特定のアプリケーションの認証に関するトラスト動作に関するものである場合は、結果はそのアプリケーションが真正のものであるか否かを示すブール値となることがある。他の例では、基本命令が暗号解読動作に対する要求である場合は、結果は暗号解読動作が成功したか否かと、暗号解読の結果がどこに格納されているか、あるいはこの暗号解読の結果を示すブール値となることがある。別の例においては、基本命令が乱数に対する要求である場合は、その結果が乱数を含むこともある。フローチャート４００の動作はここで完了する。
【００４４】
暗号化プロセッサ１２６による基本命令の処理をさらに詳しく説明する。図５は、本発明のある実施例による、暗号化プロセッサの初期化のフローチャートである。詳しくは、ある実施例において、フローチャート５００は暗号化プロセッサ１２６内での動作の実行に先立って実施される動作を示す。フローチャート５００の動作の実行が成功すると、暗号化プロセッサ１２６はトラステッド状態になる。
【００４５】
ブロック５０２において、ＲＮＧユニット２２８が適切な乱数を発生していることを確認するための検証が行われる。図２の実施例を参照して、コントローラ２０６がこの検証を行う。このような検証は、ＲＮＧユニット２２８に対する乱数の一連のリクエストを含むことがある。コントローラ２０６は、そこから出力された異なる乱数が異なっていること、また、たとえば無作為性に関してＦＩＰＳ１４０から指定されたテストを用いた乱数であることを検証することができる。制御はブロック５０４に続く。
【００４６】
ブロック５０４において、カウンタが適切な状態にあることを確認するための検証が行われる。カウンタは、一方向のみ、たとえば増分だけ行うソフトウェア・カウンタまたはハードウェア・カウンタである単調カウンタとすることができる。カウンタはトランザクションや、メッセージが再生され２回以上利用されることを確認するための認証プロトコルに用いることができる。図２の実施例を参照して、コントローラ２０６が、カウンタ２１５のこのような検証を行う。カウンタ２１５の値は、不揮発性メモリ１１６の暗号化状態ファイル内に格納される。従って、このような検証は、不揮発性メモリ１１６から暗号化状態ファイルを読み出し、カウンタ２１５のこの値が減分していないことを確認することと、カウンタ２１５が上部範囲にないことを確認するための算術的チェックを含むことがある。制御はブロック５０６に続く。
【００４７】
ブロック５０６において、機能ユニットが適切な結果を生成していることを確認するための検証が行われる。図２の実施例を参照して、コントローラ２０６がこの検証を行う。このような検証は、異なる機能ユニット内で異なる動作の実行とこの動作の出力の検証とを含むことがある。たとえば、コントローラ２０６がＤＥＳユニット２２４に異なるデータに関して一連の暗号化を実行するよう命令することがある。コントローラ２０６は、次にＤＥＳユニット２２４に対してこれらのデータを解読するよう命令することができる。コントローラ２０６は、ＡＬＵ２２２に対して動作前のデータと動作後のデータとの比較を行うよう命令することができる。機能ユニットの他の種類の検証も行うことができる。たとえば、機能ユニットは標準テスト入力を受信し、そこからの出力を米国標準技術局（ＮＩＳＴ）が規定する連邦情報処理規格（ＦＩＰＳ）などの一定の規格により公的に発行される値と比較することができる。制御はブロック５０８に続く。
【００４８】
ブロック５０８において、揮発性メモリの検証が行われる。図２の実施例を参照して、コントローラ２０６は揮発性メモリ１２０および／または揮発性メモリ２２０を検証することができる。この検証は、揮発性メモリがその中に格納されたデータをもたないという判断を含むことがある。他の検証としては、その中のビットをトグル動作して、データがそこに適切に格納されることを検証する動作を含むことがある。フローチャート５００の動作はこれで終了する。
【００４９】
図６Ａは、本発明のある実施例による、暗号化プロセッサ内の機密保持動作のフローチャートを示す。
【００５０】
フローチャート６００のブロック６０２において、基本命令および／または関連データが受信される。図１の実施例を参照して、暗号化プロセッサ１２６は、暗号化プロセッサ１２６用の（アプリケーション・プロセッサ１０６上で動作実行中の）ドライバから基本命令を受信する。上記の如く、この基本命令はトラスト動作，暗号化動作などの異なる種類の機密保持動作に関するものであることがある。図２の実施例を参照して、暗号化プロセッサ１２６が、ＤＭＡインターフェース２０２を介して基本命令を受信し、この命令を命令シーケンス・バッファ２０４に格納する。
【００５１】
また、暗号化プロセッサ１２６は、複数のこのような命令に関する基本命令の関連データを受信することがある。図２の実施例を参照して、暗号化プロセッサ１２６が、ＤＭＡインターフェース２０２を介して入力バッファ２１８内に関連データを受信する。たとえば、基本命令がアプリケーション・プロセッサ１０６内で動作実行されるアプリケーション（たとえばアプリケーション・プロセッサ１０６のためのオペレーティング・システム）を認証するためのトラスト動作に関するものである場合、この関連データは不揮発性メモリ１１６から検索されるアプリケーション用のコードである。
【００５２】
さらに説明すると、暗号化プロセッサ１２６を、機密のあるいは改変されないように保護する必要のあるデータを暗号化するために用いることができる。これにより、このような動作をトラステッド・モバイル・コンピュータ装置１００により用いて、ファイルが変更されないようにする、あるいはトラステッド・モバイル・コンピュータ装置１００の他のアプリケーションまたは用途から見られないように保護することができる。さらに、暗号化プロセッサ１２６を、コンテンツおよびデジタル権利（許可）対象を保護するためのデジタル権利運動の一翼をになうトラステッド・モバイル・コンピュータ装置１００内で利用することができる。従って、暗号化プロセッサ１２６を用いて、デジタル権利運動に準拠してデジタル的に保護されているエムペグ−３（ＭＰＥＧ：Moving Picture Expert Group−ＭＰ３：Audio Layer 3）ファイルの暗号解読を行うこともできる。
【００５３】
このようなデータの他の例として、遠隔装置（異なるモバイル装置，サーバーなど）からトラステッド・モバイル・コンピュータ装置１００内にデータが受信されるバルク暗号解読動作のためのデータもある。関連データには、暗号解読動作を行うために用いるパブリック・キーにより暗号解読されるデータが含まれる。
【００５４】
暗号化プロセッサ１２６は、不揮発性メモリ１１６および／または揮発性メモリ１２０のパブリック・インターフェイスを介して基本命令に関する関連データを受信することができる。フローチャート６００に戻り、制御はブロック６０４に続く。
【００５５】
ブロック６０４において、基本命令のためのマイクロコード命令が検索される。図２の実施例を参照して、コントローラ２０６がマイクロコード・メモリ２４０から基本命令のためのマイクロコード命令を検索する。特定の基本命令は、１ないし複数の異なるマイクロコード命令を含むことがある。たとえば、その基本命令が、アプリケーションの署名済み信任状と暗号化ハッシュとの比較に基づいて、あるアプリケーションを認証しようとするものである場合、そのマイクロコード命令には不揮発性メモリ１１６から署名済み信任状を検索する命令が含まれることになる。別のマイクロコード命令は、暗号化ハッシュに用いられる暗号化キーの不揮発性メモリ１１６からの検索を含むことがある。別のマイクロコード命令は、暗号化キーのＳＨＡユニット２３０への移動動作を含むことがあり、また別のマイクロコード命令がＳＨＡユニット２３０に暗号化ハッシュを実行するよう命令する場合もある。別のマイクロコード命令は、暗号化ハッシュの結果と署名済み信任状のＡＬＵ２２２への移動動作を含むことがあり、また別のマイクロコード命令がＡＬＵ２２２にこれら２つの値を比較するよう命令する場合もある。別のマイクロコード命令では比較動作の結果を出力バッファ２１６に記憶させることもある（これはアプリケーション・プロセッサ１０６に送り返される）。
【００５６】
上記の如く、特定の基本命令には一連のマイクロコード命令が含まれることがある。このため、特定の基本命令の中間結果は、暗号化プロセッサ１２６外部の構成部品には不透明である。フローチャート６００に戻り、制御はブロック６０６に続く。
【００５７】
ブロック６０６において、基本命令に関するマイクロコード命令に基づき、暗号化プロセッサ内で機密情報に関わる動作を実行するか否かの判断が行われる。図２の実施例を参照して、コントローラ２０６がこの判断を行う。機密動作の例には、ルート暗号化キー２４１を用いる動作，（キー・キャッシュ２２１内の）被保護キーを用いる動作および／またはカウンタ２１５またはいずれかのプラットフォーム・コンフィギュレーション・レジスタ２１０にアクセスする動作がある。この基本命令に関するマイクロコード命令に基づいて暗号化プロセッサ１２６内で機密動作を実行しないと決定されると、制御はブロック６１０に続く。このブロックについては下記に詳述する。
【００５８】
ブロック６０８において、この基本命令に関するマイクロコード命令に基づいて暗号化プロセッサ１２６内で機密動作を実行すると決定されると、暗号化プロセッサがトラステッド状態にあるか否かの判断が行われる。図２の実施例を参照して、コントローラ２０６がこの判断を行う。ある実施例においては、暗号化プロセッサ１２６が適切に初期化されていない場合には（図４のフローチャート４００に関して上述されたように）、暗号化プロセッサ１２６はトラステッド状態にないことがある。不正な動作が実行された場合も、暗号化プロセッサ１２６がトラステッド状態にないことがある。不正動作の例としては、データがある場所から他の場所へと不適切に移動されようとした場合がある（データ移動の制限に関して本明細書内に説明される）。認証が失敗した場合や、キーが暗号化ユニット内に適切にロードされていない場合、または基本命令５０２に関連するパラメータが正しい範囲にない場合などにも、暗号化プロセッサ１２６がトラステッド状態にないことがある。認証はキーのロード中に用いられ、パスワードと２つの乱数、即ち暗号化プロセッサ１２６が生成した乱数とアプリケーションまたは使用者が生成した乱数の２つの乱数を用いるＨＭＡＣ−ＳＨＡ演算からなる。ＨＭＡＣ演算には、基本命令５０２の値またはロードしようとするキーの属性が含まれることがある。
【００５９】
ある実施例においては、暗号化キーを暗号化プロセッサ１２６の機能ユニットにロードして実行しようとするアプリケーションが、キーのパスワードを用いてＨＭＡＣを計算する。このアプリケーションは、パスワードを前もって知っていることがある。たとえば、キーが作成されたときに、アプリケーションがパスワードを設定することができる。アプリケーションは、ＨＭＡＣ演算の予測される結果を基本命令５０２のパラメータとして提供することができる。暗号化プロセッサ１２６は、ＨＭＡＣ演算を行い、その結果を基本命令５０２の予測される結果パラメータと比較する。この２つの結果が一致すると、認証は成功であり、キーがロードされる。結果が一致しないと、認証は失敗となり、キーはロードされない。
【００６０】
ブロック６０９において、基本命令が途中終了される。図２の実施例を参照して、コントローラ２０６が基本命令を途中終了する。コントローラ２０６は、追加のマイクロコード命令を全て終了し、アプリケーション・プロセッサ１０６上で実行動作中のドライバに失敗の通知を送る。フローチャート６００の動作はこれで終了する。
【００６１】
ブロック６１０において、暗号化プロセッサ１２６がトラステッド状態にあると判断すると、基本命令に関わる動作が実行される。図２の実施例を参照して、コントローラ２０６がマイクロコード動作に基づき異なる動作の実行順序を制御する。従って、コントローラ２０６は、暗号化プロセッサ１２６，不揮発性メモリ・コントローラ１１４または揮発性メモリ・コントローラ１１８内の適切な機能ユニットに対し、動作実行のための制御情報を送信することがある。暗号化プロセッサ１２６，不揮発性メモリ・コントローラ１１４または揮発性メモリ・コントローラ１１８内の適切な機能ユニットが、動作を実行する。基本命令動作実行中の不揮発性メモリ１１６または揮発性メモリ１２０へのアクセスに関して、暗号化プロセッサ１２６は、不揮発性メモリ１１６および揮発性メモリ１２０のためのプライベート・インターフェイスを通じてアクセスを行うことができる。たとえば、揮発性メモリ１２０に格納される暗号化されたデータ暗号化キーが、基本命令の暗号化動作のために用いられるとする。コントローラ２０６は、この被暗号化データ暗号化キーを揮発性メモリ１２０のプライベート・インターフェイスを通じて検索することができる。また、基本命令に関わる他の動作例は、ブロック６０４（上述）の説明内に示す。
【００６２】
コントローラ２０６は、異なる機能ユニット間でデータを移動することができる。しかし、暗号化プロセッサ１２６には、１以上のデータ移動の制約が構築されることがある。このような制約によって、不正なプロセスが暗号化プロセッサ１２６から機密情報を内密に読めないようにする。このような制約は、マイクロコード・メモリ２４０に格納することができる。たとえば、あるデータ制約により、キー記憶装置２２０に格納されるデータを出力バッファ２１６に書き込めないようにする。このような制約は、暗号化キーが、暗号化されない形式で暗号化プロセッサ１２６から読み取らることを防ぐ。
【００６３】
別の制約例では、入力バッファ２１８に格納されるデータがコンテクスト記憶装置／ＰＣＲ２１０に書き込まれることを防ぐことができる。このような制約は、暗号化プロセッサ１２６のプラットフォーム・コンフィギュレーションの上書きを阻止する。別の制約例では、入力バッファ２１８に格納されるデータをキー・キャッシュ２２１に書き込むことを阻止することができる。このような制約は、そこに格納される暗号化キーの上書きを防ぐ。フローチャート６００に戻り、制御はブロック６１２に続く。
【００６４】
ブロック６１２において、さらにマイクロコード命令を実行するか否かの判断がなされる。図２の実施例を参照して、コントローラ２０６がこの判断を行う。上記の如く、コントローラ２０６はマイクロコード・メモリ２４０から、特定の基本命令に関する１ないし複数個のマイクロコード命令を検索する。従って、コントローラ２０６は、これらの異なる命令が実行されたか否かを判断する。ある基本命令に関してさらにマイクロコード命令を実行することが決定されると、制御はブロック６０６に続き、異なるマイクロコード命令が実行される。ある基本命令に関して別のマイクロコード命令が実行されないと決定されると、マイクロコードは、クリーンアップ動作を行って、暗号化プロセッサ１２６が確実にトラステッド状態にあるようにする。クリーンアップ動作には、動作中に用いられた暗号化ユニットからキーを削除したり、中間記憶装置２１４内の中間結果をゼロまたは１に上書きしたり、暗号化プロセッサの状態フラッグをリセットして、動作が終了したことあるいはキーを利用できない状態になったことを示すことなどが含まれる。クリーンアップ動作が終了すると、フローチャート６００の動作は完了する。
【００６５】
フローチャート３００および６００の動作は、複数の異なるトラステッド動作および暗号化動作のために利用することができる。このような例の１つとして、不揮発性メモリ１１６に対する書き込みアクセスがある。不揮発性メモリ１１６は、複数の異なるブロックに分割することができる。たとえば、不揮発性メモリ１１６の大きさが８メガバイトの場合、不揮発性メモリ１１６は８個の１メガバイトのブロックを含むことができる。複数の異なるブロックは、そこに対する書き込みアクセスを制御を関連してイネーブルにすることができる。暗号化プロセッサ１２６は、特定のブロックに格納されるデータが認証されると、そのブロックに対するイネーブルのアサーションを許可する。これにより、暗号化プロセッサ１２６のドライバは、不揮発性メモリ１１６内の特定のブロックに対する書き込みアクセスを求めるセキュリティ・サービス・リクエストを受信する。ドライバは、次に、ブロック内に格納されるデータの認証を要求する基本命令を生成する。基本命令は、署名済み信任状およびデータと共に暗号化プロセッサ１２６に送信される。暗号化プロセッサ１２６は、次に複数の異なるマイクロコード命令を実行して、署名済み信任状と比較されるデータにまたがる暗号化ハッシュを作成する。暗号化プロセッサ１２６は、この比較に基づいてデータを認証することができる。このような実行例を、トラステッド・モバイル・コンピュータ装置１００内にダウンロードされる特定のアプリケーションの新しいパッチを認証するために用いることがある。
【００６６】
よって、上記の如く、本発明の実施例はトラステッド・モバイル・コンピュータ装置内のアプリケーション・プロセッサに関して実行可能なコンテクストとは別の実行可能なコンテクスト内にあるのと同一のプロセッサ内でトラステッド動作と暗号化動作の両方を行うことができる。従って、この暗号化プロセッサは、トラスト動作（アプリケーション・プロセッサのオペレーティング・システムを認証するためのトラステッド・ブート動作など）を実行するために用いることができ、なおかつ、トラステッド・ブート動作に続く異なる種類の暗号化動作を実行するために同じ機能ユニットを利用することができる。
【００６７】
さらに、上記の如く、暗号化プロセッサ１２６は、トラスト関連暗号化キーが外部に露出（非暗号化）されないようにすることができる。暗号化プロセッサ１２６は、暗号化動作の中間的な部分的結果も外部に露出されないようにすることができる。さらに、暗号化プロセッサ１２６は、暗号化動作が開始されると、外部にある構成部品から変更または不正変更されないようにすることができる。
【００６８】
暗号化キーの使用を含む暗号化動作の実行のより詳細な説明を次に行う。詳しくは、図６Ｂは、本発明のある実施例による、暗号化プロセッサ内の暗号化キーを用いた暗号化動作実行のフローチャートである。フローチャート６５０は、暗号化プロセッサ１２６内での動作実行において使用する前の暗号化キーの妥当性確認および認証動作を示す。
【００６９】
ブロック６５２において、基本命令が受信され、暗号化キーの使用を含む動作が暗号化プロセッサ内で実行される。図２の実施例を参照して、コントローラ２０６がこの基本命令を受信する。暗号化キーは、暗号化プロセッサ１２６の外部で生成することができる。このような暗号化キーは、基本命令の受信に先立って、暗号化プロセッサ１２６内のメモリにすでにロードされている。あるいは、暗号化キーは、基本命令と共に暗号化プロセッサ１２６内にロードされている場合もある。暗号化キーは、暗号化プロセッサ１２６内の機能ユニットにより内部で生成されることもある。暗号化キーは、保護暗号化キーにより暗号化することができる。また、暗号化キーの装置種別および／または用途種別（図３に関して上記に詳述される）を、暗号化キーと関連付けることもできる。制御はブロック６５４に続く。
【００７０】
ブロック６５４において、暗号化キーの装置種別および／または用途種別が許可されているか否かが判断される。図２の実施例を参照して、コントローラ２０６がこの判断を行う。説明を補足するために図３に戻り、コントローラ２０６は暗号化キーのヘッダ３００を検索することができる。コントローラ２０６は、暗号化キーを用いようとする機能ユニットが装置種別３０８の１つとして列挙されているか否かを判断することができる。また、コントローラ２０６は暗号化キーを用いて実行する動作が用途種別３１０の１つとして列挙されているか否かも判断することができる。暗号化キーの装置種別および／または用途種別が許可されていないと判断すると、制御はブロック６６４に続く。これについては、下記に詳述する。
【００７１】
ブロック６５６において、暗号化キーの装置種別および／または用途種別が判定された後、課題が作成される。図２の実施例を参照して、コントローラ２０６が課題を作成する。暗号化プロセッサ１２６内にロードされる暗号化キーは、関連のパスワードを含むことができる。関連パスワードは暗号化プロセッサ１２６内では周知のものであり、基本命令を発するアプリケーションにも既知である。コントローラ２０６は、アプリケーション・プロセッサ１０６上で動作実行中のアプリケーションに出力される課題を作成する。この課題は、関連パスワードのハッシュをアプリケーションから応答することを求めるものである。パスワードのハッシュは、複数の異なる種類のものであり、ある実施例においてはハッシュはＨＭＡＣ演算に基づくものである。制御はブロック６５８に続く。
【００７２】
ブロック６５８において、課題に対する応答が受信される。図１の実施例を参照して、アプリケーション・プロセッサ１０６上で動作実行中のアプリケーションが暗号化プロセッサ１２６に対して応答を返送する。コントローラ２０６は課題に対する応答を受信する。制御はブロック６６０に続く。
【００７３】
ブロック６６０において、応答が正しいか否かの判断がなされる。図２の実施例を参照して、コントローラ２０６がＳＨＡユニット２３０に対してパスワードのハッシュを作成することを命令する。たとえば、ＳＨＡユニット２３０は、ＨＭＡＣ演算に基づきハッシュを作成することができる。コントローラ２０６は、ＡＬＵユニット２２２に対して、アプリケーションから受信したハッシュをＳＨＡユニット２３０が作成したハッシュと比較することを命令することができる。これらのハッシュが等しければ、応答は正しいものと見なされる。応答が正しくないと判断されると、制御はブロック６６４に続く。これについては、下記に詳述する。
【００７４】
ブロック６６２において、応答が正しいと判断されると、暗号化キーが指定された機能ユニット内にロードされて実行される。図２の実施例を参照して、コントローラ２０６が暗号化キーを指定された機能ユニット内にロードさせて実行する。ここで、この機能ユニットは（フローチャート６００について上述したように）命令を実行することができる。フローチャート６５０の動作はここで終了する。
【００７５】
ブロック６６４において、基本命令が途中終了される。図２の実施例を参照して、コントローラ２０６が基本命令を途中終了する。コントローラ２０６は、いずれかの追加のマイクロコード命令を終了し、アプリケーション・プロセッサ１０６上で動作実行中のドライバに失敗の通知を送ることができる。フローチャート６５０の動作はここで終了する。
【００７６】
フローチャート６５０は、暗号化プロセッサ１２６内の暗号化キー使用の認可に関する課題／応答の一例を示す。詳しくは、フローチャート６５０は、暗号化キーに関連するパスワードのハッシュの利用の課題／応答を説明する。本発明の実施例では、他の種類の課題／応答動作を利用して認可を行うこともある。
【００７７】
マイクロコード・メモリ２４０に格納されるマイクロコード命令にパッチを適用したりアップデートしたりすることもできる。しかし、マイクロコード・メモリ２４０が読取り専用メモリであるとパッチは揮発性メモリ２２０に格納されるので、パッチ内の命令がマイクロコード・メモリ２４０内の命令の代わりに用いられる。暗号化プロセッサ１２６の機密性と信頼性とを維持するために、このようなパッチ／アップデートを、インストレーションに先立って認証することができる。マイクロコード命令に対するこのようなアップデートの一実施例を説明する。詳しくは、図７は、本発明のある実施例により暗号化プロセッサ内でのマイクロコードをアップデートするためのフローチャートである。
【００７８】
ブロック７０２において、暗号化プロセッサのためのトラステッド・ブート動作が始まる。図１の実施例を参照して、暗号化プロセッサ１２６は、トラステッド・ブートＲＯＭ１０８に格納される命令に基づき、起動される。トラステッド・ブート動作の一貫として、マイクロコード・メモリ２４０内の命令にパッチが適用されることもある（これについては、フローチャート７００にさらに詳細に説明する）。トラステッド・ブート動作のより詳細な説明は、２００３年１２月２２日に同時係属出願され、共通譲渡された以下の米国特許出願「電子装置の安全確保(Securing an Electronic Device)」，第１０／７４５，４６９号に説明する。制御はブロック７０４に続く。
【００７９】
ブロック７０４において、（トラステッド・ブート動作の一部として）マイクロコードのパッチの有無に関する判断がなされる。図２の実施例を参照して、福発性メモリ１１６は、マイクロコード命令に対するパッチを格納するために指定されたセグメントを含む。これにより、コントローラ２０６は、指定されたセグメント内のデータにパッチが含まれるか否かに基づき、パッチの有無を判断することができる。パッチがないと判断すると、フローチャート７００の動作は終了する。
【００８０】
ブロック７０６において、マイクロコードのためのパッチがあると判断すると、暗号化キーおよびパッチの署名に伴ってパッチもロードされる。図２の実施例を参照して、コントローラ２０６が、パッチと暗号化キーとパッチの署名とを揮発性メモリ１２０内にロードする。制御は７０８に続く。
【００８１】
ブロック７０８において、パッチの暗号化キーが正当であるか否かに関する判断が行われる。図２の実施例を参照して、不揮発性メモリ１１６には、「１回プログラム可能」と指定されるセグメントが含まれることがある。詳しくは、このセグメントは１回だけ書き込むことができ、それによって不正なあるいは悪意のある過程によりこのセグメントに格納されるデータが改変されることを防ぐ。このセグメントには、パッチの暗号化キーのハッシュが含まれることがある。従って、コントローラ２０６は、このハッシュと暗号化キーとをそれぞれ不揮発性メモリ１１６および揮発性メモリ１２０から検索することができる。コントローラ２０６は、ＳＨＡユニット２３０に対し、暗号化キーのハッシュを作成するよう命令することができる。次に、コントローラ２０６は、ＡＬＵ２２２に対し、このハッシュ結果と不揮発性メモリ１１６から検索したハッシュとを比較して、これら２つの値が同一であるか否かを判断するよう命令することができる。これら２つの値が等しければ、パッチの暗号化キーのハッシュは正当である。
【００８２】
ブロック７１０において、パッチの暗号化キーが正当でないと判断されると、パッチの暗号化キーと署名とが削除される。図２の実施例を参照して、コントローラ２０６がパッチと、暗号化キーと、パッチの署名とを揮発性メモリ１２０から削除する。それにより、パッチ内の命令は暗号化プロセッサ１２６にロードされない、すなわち実行されることはない。フローチャート７００の動作はこれで終了する。
【００８３】
ブロック７１２において、パッチの暗号化キーが正当であると判断されると、パッチの署名が正当であるか否かの判断がなされる。図２の実施例を参照して、コントローラ２０６がパッチをＳＨＡユニット２３０内にロードする。次にコントローラ２０６はＳＨＡユニット２３０に対し、パッチのダイジェストを作成するよう命令する。コントローラ２０６は、パッチに伴うデジタル署名を指数演算ユニット２３４内に、暗号化キーと共にロードする。次に、コントローラ２０６は、指数演算ユニット２３４に対し署名の暗号解読を命令することができる。コントローラ２０６は、指数演算ユニット２３４の出力を検証して、署名が適切に暗号解読されたか否かを判断することができる。署名が適切に解読されると、コントローラ２０６はＡＬＵ２２２に対し、暗号解読した署名をＳＨＡユニット２３０が作成したダイジェストと比較するよう命令する。この２つの値が等しければ、パッチの署名は正当であり、このパッチは、暗号化プロセッサ１２６に関して適切に認可されたパッチとなる。
【００８４】
ブロック７１４において、パッチの署名が正当であると判断されると、パッチ・フラッグとパッチを適用されたマイクロコードのタッグ・エントリとがロードされる。図２の実施例を参照して、パッチの一部である命令に加えて、パッチには、マイクロコード・メモリ２４０のどのセグメントにパッチが適用されたかを示すパッチ・フラッグの集合が含まれることがある。コントローラ２０６は、これらのパッチ・フラッグをパッチ・フラッグ・メモリ２８１にロードすることができる。このようなパッチ・フラッグは、マイクロコード・メモリ２４０の各セグメントの１ビット表現とすることができる。パッチ・フラッグ・メモリ２８１内のセット・ビットは、マイクロコード・メモリ２４０内の対応するセグメントがパッチをもつことを示す。たとえば、ビット５がパッチ・フラッグ・メモリ２４０内にセットされると、マイクロコード・メモリ２４０のセグメント５が対応するパッチを有することになる。従って、パッチを含むファイルがパッチ・フラッグと、パッチ・タッグおよびパッチ・フラッグのデジタル署名に続く一連のパッチ・セグメントと、一連のパッチ・セグメントおよびパッチ・タッグとを含むことがある。マイクロコード・メモリ２４０内のセグメントに関する特定のパッチ・フラッグは、マイクロコード・メモリ２４０のセグメントの代わりに実行されるパッチ内のセグメントの識別子を格納する。これにより、マイクロコード・メモリ２４０のセグメントにおける命令実行中に、フラッグがこのセグメントにパッチが適用されることを示すと、コントローラ２０６はパッチから（タッグ・エントリを用いて）命令を取り出し、マイクロコード・メモリ２４０からの命令の代わりに実行する。実施例によっては、パッチのセグメントは、その中の命令を実行する際に揮発性メモリ１２０から揮発性メモリ２２０内にロードされるに過ぎない。さらに、このセグメントが揮発性メモリ２２０に残る場合がある。このため、その中の命令を再実行しようとする場合は、コントローラ２０６はこのセグメントを揮発性メモリ１２０から再度取り出す必要がない。フローチャート７００の動作は終了する。
【００８５】
従って、上述の如く、暗号化プロセッサ１２６内のマイクロコードに、「１回プログラム可能」な記憶装置に格納されるハッシュに基づき認証される暗号化キーを含む認証動作に基づいてパッチを適用することができる。認証動作は、正当化された暗号化キーを用いてパッチ間の署名に基づいても、その正当性が認められる。
【００８６】
システム動作環境
このセクションでは、システムの概要を提示する。システムの概要は、本発明の実施例に関連して使用されるネットワーク・コンフィギュレーションを示す。システムの概要には、さらにネットワーク・コンフィギュレーションの一般的な機能も示す。
【００８７】
図８は、本発明のある実施例による、暗号化動作を有するトラステッド・モバイル通信装置が動作することのできる、システム・コンフィギュレーションの簡単な機能ブロック図である。図８は、ネットワーク８０４に共に結合される、複数のトラステッド・モバイル・コンピュータ装置１００Ａないし１００Ｎと、複数のサーバー８０６Ａないし８０６Ｎを含むシステム８００を示す。ネットワーク８０４は、広域ネットワークであっても、構内ネットワークであっても、あるいは複数のトラステッド・モバイル・コンピュータ装置１００Ａないし１００Ｎと複数のサーバー８０６Ａないし８０６Ｎの間に通信を行う異なるネットワークの組合せでもよい。たとえば、複数のトラステッド・モバイル・コンピュータ装置１００Ａないし１００Ｎは、異なる種類のワイヤレスコンピュータ装置でもよく、ネットワーク８０４の一部がワイヤレス通信を処理するように構築され、ネットワーク８０４の別の部分が複数のサーバー８０６Ａないし８０６Ｎとの有線通信を処理するよう構築することもできる。
【００８８】
複数のトラステッド・モバイル・コンピュータ装置１００Ａないし１００Ｎは、上記の如く、複数の異なるトラスト動作および暗号化動作を実行することができる。たとえば、複数のトラステッド・モバイル・コンピュータ装置１００Ａないし１００Ｎの使用者は、複数のサーバー８０６Ａないし８０６Ｎ上で動作実行する異なるアプリケーションとの異なる電子商取引を行うことができる。
【００８９】
説明において、論理実行装置，動作コード，オペランド特定手段，リソース分割／共有／複写装置，システム構成部品の種類と関連性および論理の分割／統合選択肢などの数多くの特定の詳細事項が、本発明のより完全な理解を図るために記述される。しかしながら、当業者には、本発明の実施例はこのような特定の詳細事項なしにも実践できることが理解いただけよう。場合によっては、制御構造，ゲート・レベルの回路および完全なソフトウェア命令シーケンスは、本発明の実施例を曖昧にしないために詳細には図示しない。当業者は、過度の実験をせずに機能性の適切な実現を図ることが可能であろう。
【００９０】
「一実施例」，「ある実施例」，「例示の実行例」などの本明細書内の引用は、記述される実施例が特定の特徴，構造または特性を包含する場合があるが、あらゆる実施例に特定の特徴，構造または特性が必ずしも含まれるとは限らない。また、このような文言は、必ずしも同じ実施例を言及するものでもない。さらに、１つの実施例に関連して特定の特徴，構造または特性が記述される場合、それは明示されようがされまいが、他の実施例に関連してこのような機能，構造または特性を実施するために当業者の知識に付託されるものである。
【００９１】
本発明の実施例は、機械的に読取り可能な媒体により提供される機械で実行可能な命令内に具現される機能，方法または過程を含む。機械的に読取り可能な媒体には、機械（たとえばコンピュータ，ネットワーク装置，携帯情報端末，製造用具１以上のプロセッサの集合を備える任意の装置など）によりアクセス可能な形式の情報を提供する（すなわち記憶および／または送信する）任意の機構が含まれる。ある実行例においては、機械的に読取り可能な媒体は、揮発性および／または不揮発性媒体（たとえば読取り専用メモリ（ＲＯＭ），ランダム・アクセス・メモリ（ＲＡＭ），磁気ディスク記憶媒体，光記憶媒体，フラッシュ・メモリ装置など）ならびに、電気的，光学的，音響またはその他の形式の伝播信号（たとえば搬送波，赤外線信号，デジタル信号など）を含む。
【００９２】
このような命令は、命令をプログラムされた汎用または特定用途プロセッサに、本発明の実施例の方法または過程を実行させるために利用される。あるいは、本発明の実施例の特徴または動作は、動作実行のためのハード配線論理を含む特定のハードウェア構成部品またはプログラムされたデータ処理を行う部品と特定のハードウェア部品との組合せにより実行される。本発明の実施例は、ソフトウェア，データ処理ハードウェア，データ処理システムを包含する方法および種々の処理動作など、以下にさらに詳細に説明するものを含む。
【００９３】
いくつかの図面では、本発明の実施例によるトラステッド・モバイル・プラットフォーム・アーキテクチャに関するシステムおよび装置のブロック図を示す。いくつかの図面は、本発明の実施例によるトラステッド・モバイル・プラットフォーム・アーキテクチャの動作を示すフローチャートである。しかし、フローチャートの動作は、ブロック図を参照して説明するもの以外のシステムおよび装置の実施例によっても実行可能であること、またシステム／装置を参照して説明実施例により、フローチャートを参照して説明するもの以外の異なる動作を実行することもできることを理解いただきたい。
【００９４】
本明細書に説明する実施例の広範囲にわたる変形に鑑みて、この詳細説明は、本発明の範囲のみを例証するものではなく、また範囲を限定するものでもない。例証のために、このような装置の使用者によるトラステッド・モバイル・コンピュータ装置１００実際の動作中のトラスト動作および暗号化動作に関して説明するが、本発明の実施例はそれに限定されない。たとえば、暗号化プロセッサ１２６を用いて、トラステッド・モバイル・コンピュータ装置１００のデバッグ動作中に装置に認証を行うこともできる。例証のために、図１に戻り、装置をＪＴＡＧインターフェース１５５を介して暗号化プロセッサ１２６に結合して、デバッグを行うこともできる。従って、暗号化プロセッサ１２６は、課題／応答動作を通じてこの装置を認証することができる。暗号化プロセッサ１２６は、課題を作成し、それをＪＴＡＧインターフェース１５５に結合する装置に送信することができる。この装置は、次に、課題に対する応答を行う。従って、暗号化プロセッサ１２６が応答に基づいてこの装置を認証すると、装置はＪＴＡＧインターフェース１５５を通じてトラステッド・モバイル・コンピュータ装置１００と通信を行うことができる。
【００９５】
本発明の実施例の変形をさらに例証するために、ある実施例において、基本命令が暗号化プロセッサ１２６内で連続して実行されると説明するが、異なる基本命令に関する複数の異なるマイクロコード動作を一部少なくとも同時に実行することもできる。従って、本発明に主張されるものは、請求項およびそれと同等の範囲および実現可能な等価項内に包含するものとする。従って、仕様書および図面は、制限的な意味ではなく説明のためと見なすべきものである。
【図面の簡単な説明】
【００９６】
本発明の実施例は、以下の説明と実施例を図示する添付図面とを参照することにより、よく理解頂けよう。本明細書に含まれる図面の番号は、図面内に与えられる参照番号の先頭の数値が、図面の番号と関連するように付される。例えば、トラステッド・モバイル・コンピュータ装置１００は、図１に見つけることができる。しかし、異なる図面間にまたがる同じ要素については、同一の参照番号となる。
【図１】本発明のある実施例による、トラステッド・プラットフォーム・アーキテクチャを有するモバイル・コンピュータ装置の簡単な機能ブロック図である。
【図２】本発明のある実施例による、トラステッド・モバイル・コンピュータ装置内の暗号化プロセッサの簡単な機能ブロック図である。
【図３】本発明のある実施例による、トラステッド・モバイル・コンピュータ装置内の暗号化プロセッサのキー・キャッシュのエントリの一実施例を示す。
【図４】本発明のある実施例による、暗号化プロセッサとのインターフェース動作のフローチャートである。
【図５】本発明のある実施例による、暗号化プロセッサの初期化のフローチャートである。
【図６Ａ】本発明のある実施例による、暗号化プロセッサ内の機密保持動作のフローチャートである。
【図６Ｂ】本発明のある実施例による、暗号化プロセッサ内の暗号化キーを用いた暗号化動作実行のフローチャートである。
【図７】本発明のある実施例による、暗号化プロセッサ内のマイクロコードをアップデートするためのフローチャートである。
【図８】本発明のある実施例による、暗号化動作を有するトラステッド・モバイル通信装置が動作することのできる、システム・コンフィギュレーションの簡単な機能ブロック図である。
【図１】
2007512787.tif 000003
【図２】
2007512787.tif 000004
【図３】
2007512787.tif 000005
【図４】
2007512787.tif 000006
【図５】
2007512787.tif 000007
【図６Ａ】
2007512787.tif 000008
【図６Ｂ】
2007512787.tif 000009
【図７】
2007512787.tif 000010
【図８】
2007512787.tif 000011
【国際調査報告】
2007512787.tif 000012
2007512787.tif 000013
2007512787.tif 000014
2007512787.tif 000015