説明

トラステッド・モバイル・プラットフォーム・アーキテクチャ

ある実施例において、装置は1以上の暗号化ユニットを具備する。本装置は、1以上のデータ暗号化キーと、この1以上のデータ暗号化キーに関連するヘッダを格納するためのメモリも具備する。関連ヘッダは、1以上の暗号化ユニットのうち、どのユニットがデータ暗号化キーを使用するかを定義する。

【発明の詳細な説明】
【技術分野】
【0001】
関連出願
本件は、2003年12月11日に出願され、本件にその全明細書を参考文献として包含する米国暫定特許出願第60/528,890号「トラステッド・モバイル・プラットフォーム・アーキテクチャ」に対する優先権を主張する。
本出願は、2004年3月31日に出願され、本件に開示される実施例の被譲渡人であるインテルに譲渡された係属中の米国特許出願第10/815,454号(代理人文書番号884.B89US1)「トラスト・プロセッサのための方法および装置」に関連する。
【0002】
本発明は、一般に電子データ処理に関し、さらに詳しくは、トラステッド・モバイル・プラットフォーム・アーキテクチャに関する。
【背景技術】
【0003】
ワイヤレス・モバイル装置(携帯電話,携帯情報端末(PDA)など)は、通常は小型でコードレスのために、紛失し易い。このような装置はなくしやすいがために、盗みやすい。盗難に遭いやすいという傾向があるために、これらの装置は不正使用を被ることが多い。さらに、低電力の装置を構築するという最低限の要求を満たすアプローチによって、内蔵されるシステムは(オペレーティング・システムおよびハードウェアの観点から)単純化されており、そのために、悪意のある使用者および/またはアプリケーションの支配の影響を受けやすい。使用者は、より価値の高い利用のためにこれらの装置に依存している。特に、このような装置内部には、使用者は領収書,クレジット・カード番号,住所,電話番号,機密文書などの機密情報を保存している。従って、この装置は、その攻撃の容易さのためにますます、窃盗の主要な標的になってきている。そのために、装置内に保存されるアプリケーションおよびデータを含めて、装置の統合性を確保する必要がある。
【発明の開示】
【0004】
トラステッド・モバイル・プラットフォーム・アーキテクチャのための方法,装置およびシステムを説明する。以下の説明においては、多数の特定の詳細事項が記述される。しかし、本発明の実施例はこれら特定の詳細事項がなくとも、実現できることを理解頂きたい。他の場合には、本説明の理解を妨げないために、周知の回路,構造および技術を詳細に示さないことがある。
【0005】
この詳細な説明は、3つのセクションに分かれる。第1のセクションにおいて、ハードウェアのアーキテクチャを提示する。第2のセクションにおいて、トラステッド暗号化動作を説明する。第3のセクションにおいて、システムの動作環境を説明する。
【0006】
ハードウェア・アーキテクチャ
図1は、本発明のある実施例による、トラステッド・プラットフォーム・アーキテクチャを有するモバイル・コンピュータ装置の簡単な機能ブロック図である。詳しくは、図1は、トラステッド・モバイル・コンピュータ装置100を示す。この装置は、複数の異なる種類のモバイル・コンピュータ装置(携帯電話,PDAなど)を代表するものとすることができる。トラステッド・モバイル・コンピュータ装置100は、システムオンチップ102と、ディスプレイ103と、タッチ・パッド104と、アンテナ105とを備え、これらは共に結合される。ディスプレイは、液晶ディスプレイ(LCD:liquid crystal display)スクリーンなど、種々の表示装置とすることができる。タッチ・パッド104は、トラステッド・モバイル・コンピュータ装置100の使用者からの入力を受信するために利用することができる。たとえば、タッチ・パッド104は、数字タッチ・パッドやキーボードなどでよい。図示はされないが、トラステッド・モバイル・コンピュータ装置100は、使用者からのオーディオ・データの入出力のための、オーディオ入力/出力(I/O)論理など、複数の他の周辺機器を具備することがある。
【0007】
システムオンチップ102は、本明細書に説明される構成部品が、例えば、同一の半導体基板内に収められる単一のチップとすることができる。あるいは、システムオンチップ102は、複数のこのようなチップがエポキシ接着されたものの場合もある。
【0008】
システムオンチップ102は、アプリケーション・プロセッサ106と、トラステッド・ブート読取り専用メモリ(ROM)108と、通信論理110と、コントローラ112と、不揮発性メモリ・コントローラ114と、不揮発性メモリ116と、揮発性メモリ・コントローラ118と、揮発性メモリ120と、グラフィック論理122と、直接メモリ・アクセス(DMA)論理124と、暗号化プロセッサ126と、周辺論理128と、ジョイント・テスト・アクセス・グループ(JTAG)インターフェース155と、バス130とを具備する。アプリケーション・プロセッサ106,トラステッド・ブートROM108,通信論理110,コントローラ112,不揮発性メモリ・コントローラ114,不揮発性メモリ116,揮発性メモリ・コントローラ118,グラフィック論理122,JTAGインターフェース155およびDMA論理124は、バス130に結合される。これにより、バス130は、これらの構成部品間の通信を行う。ディスプレイ103とタッチ・パッド104は、周辺論理128を通じてシステムオンチップ102に結合する。
【0009】
アンテナ105は、通信論理110に結合する。通信論理110は、トラステッド・モバイル・コンピュータ装置100とのI/Oの受信および送信を行う。例えば、通信論理110は、アンテナ105を利用してトラステッド・モバイル・コンピュータ装置100とのワイヤレス通信の受信および送信を行う。アンテナ105は、特に、パッチ・アンテナ,モノポール・アンテナ,ダイポール・アンテナ,ビーム・アンテナ,アレイ・アンテナ,方向性アンテナとすることができる。下記にさらに詳しく述べるが、アンテナ105は通信を受信し、それによってアプリケーション・プロセッサ106が暗号化動作のための1以上の基本命令を生成することがある。このような基本命令を、暗号化プロセッサ126に送信し、実行することができる。また、アンテナ105は暗号化プロセッサ126により実行される暗号化動作に関連する通信を出力することがある。
【0010】
実施例によっては、通信論理110は、トラステッド・モバイル・コンピュータ装置100のための特定の通信基準を確立するベースバンド・プロセッサ(例えば、デジタル信号プロセッサ)を具備することがある。通信論理110は、ワイヤレス・インターフェイスとしてもよい。例えば、トラステッド・モバイル・コンピュータ装置100が携帯電話である場合は、通信論理110は、トラステッド・モバイル・コンピュータ装置100のためのセルラ・ネットワーク・インターフェイス,ワイヤレス・インターフェイスを提供する。このワイヤレス・インターフェイスに関して、ベースバンド・プロセッサは、少数の例としてあげるが、符号分割多重接続(CDMA)セルラ無線電話通信システムまたは広帯域CDMA(W−CDMA)無線電話通信システムを構築することができる。W−CDMAは、特に、第3世代(「3G])のソリューションとして欧州電気通信標準化機構(ETSI)により、国際電気通信連合(ITU)に対し、第三世代携帯電話(FPLMTS)に関する世界共通次世代携帯電話システム(IMT−2000)に関する提案として、提出されている。ベースバンド・プロセッサは、グローバル・システム・フォー・モバイル・コミュニケーションズ(GSM),ETSI,第5.0.0版(1995年12月);または汎用パケット無線システム(GPRS) (GSM02.60,第6.1版),ETSI1997年版などの他の電気通信の標準を構築することもある。
【0011】
トラステッド・ブートROM108は、アプリケーション・プロセッサ106内で動作実行するオペレーティング・システムに対し制御を転送する前に、アプリケーション・プロセッサ106が実行する符号を格納する。以下にさらに詳細に説明するが、このような符号により、オペレーティング・システムの統合性を確実にするための複数のトラスト動作が(暗号化プロセッサ126を利用して)実行される。トラステッド・ブート動作のより詳細な説明は、2003年12月22日出願の同時係属出願され、共に譲渡された以下の米国特許出願「電子装置の安全確保(Securing an Electronic Device)」,第10/745,469号に説明する。JTAGインターフェース155は、トラステッド・モバイル・コンピュータ装置100内へのデバッグ用インターフェースとなる。
【0012】
不揮発性メモリ116は、フラッシュ・メモリなど複数の異なる種類の不揮発性書き込み可能メモリのうち任意のものとすることができる。揮発性メモリ120は、ランダム・アクセス・メモリ(RAM)(例えば、同期型RAM(SDRAM),DRAM,DDR−SDRAMなど)などの複数の異なる種類の揮発性書き込み可能メモリのうち任意のものとすることができる。
【0013】
不揮発性メモリ・コントローラ114は、不揮発性メモリ116に結合する。揮発性メモリ・コントローラ118は、揮発性メモリ120に結合する。これにより、バス130に結合する構成部品は、それぞれ、不揮発性メモリ・コントローラ114および揮発性メモリ・コントローラ118を通じて、不揮発性メモリ116および揮発性メモリ120と通信を行うことができる。暗号化プロセッサ126および周辺論理128は、DMA論理124を通じてバス130に結合する。バス130に結合される構成部品は、DMA論理124を通じて暗号化プロセッサ126および周辺論理128と通信を行うことができる。
【0014】
暗号化プロセッサ126は、プライベート・インターフェイスを介し、それぞれ不揮発性メモリ・コントローラ114および揮発性メモリ・コントローラ118を通じて、不揮発性メモリ116および揮発性メモリ120にも直接結合する。図示される如く、トラステッド・モバイル・コンピュータ装置100内の他の構成部品(アプリケーション・プロセッサ106など)は、これらのプライベート・インターフェイスを介して不揮発性メモリ116および揮発性メモリ120にアクセスすることはできない。また、暗号化プロセッサ126とアプリケーション・プロセッサ106とは、バス130(パブリック・インターフェイス)を通じて、不揮発性メモリ116と揮発性メモリ120にアクセスすることができる。
【0015】
暗号化プロセッサ126は、揮発性メモリ120を少なくとも2つの異なる部分(パブリック部分とプライベート部分)に分割することができる。これにより、暗号化プロセッサ126は、揮発性メモリ120のプライベート部分内のアドレス・スペースにアクセスすることができる。また、トラステッド・モバイル・コンピュータ装置100内の異なる構成部品は、揮発性メモリ120のパブリック部分内にあるアドレス・スペースにアクセスすることができる。このようなコンフィギュレーションでは、プライベート部分を安全確保/トラステッド用途のために利用することができ、アプリケーション・プロセッサ106がこの部分にアクセスすることを妨げる。従って、ウィルスおよび/または有害な符号をアプリケーション・プロセッサ106上で実行しようとしても、このような符号が揮発性メモリ120のプライベート部分を破壊することはない。そのため、暗号化プロセッサ126は、その中で実行する動作で用いられる暗号化済みの暗号化キーなどを安全に格納するために、このプライベート部分を利用することができる。
【0016】
下記にさらに詳しく説明するように、暗号化プロセッサ126は、保護された記憶部分と複数の異なる機能ユニットにより構成される。暗号化プロセッサ126は、トラステッド・モバイル・コンピュータ装置100に関連する、あるいはその中で動作実行する、ソフトウェア,ハードウェア,コンフィギュレーション・データなどの認証を行うことができる。たとえば、トラステッド・モバイル・コンピュータ装置100の初期化の一部として、暗号化プロセッサ126はアプリケーションの符号にまたがる暗号化ハッシュを実行し、このハッシュをトラステッド・モバイル・コンピュータ装置100内に安全に格納される署名済み信任状と比較することができる。また、暗号化プロセッサ126は、トラステッド・モバイル・コンピュータ装置100の動作中に異なる暗号化動作を行うこともできる。たとえば、暗号化プロセッサ126は、暗号化キーを生成し、異なる種類の暗号化および暗号解読を行い、ハッシュやデジタル署名を作成することなどができる。
【0017】
アプリケーション・プロセッサ106が第1動作コンテクストにあり、暗号化プロセッサ126が第2動作コンテクストにある場合がある。第1動作コンテクストと第2動作コンテクストとは互いに独立している。以下に詳細に説明するが、アプリケーション・プロセッサ106は、(DMA論理124を介して)アプリケーション・プロセッサ106と暗号化プロセッサ126上で動作実行するアプリケーション間のインターフェースとなる(暗号化プロセッサ126用の)ドライバを実行することができる。このドライバは、アプリケーション・プロセッサ106を制御するオペレーティング・システムから、異なるセキュリティ・サービス(認証,トラスト,暗号化,暗号解読など)に関するリクエストを受信する。ドライバは、セキュリティ・サービス・リクエストに基づき、1以上の基本命令を生成することができる。これらの基本命令は、次に暗号化プロセッサ126に送られて、実行される。さらに暗号化プロセッサ126は、基本命令に基づき動作実行が行われるデータを(不揮発性メモリ116および/または揮発性メモリ120からDMA論理124を介して)検索することができる。暗号化プロセッサ126は、基本命令に基づき、検索されたデータに関して暗号化動作を実行する。
【0018】
トラステッド・モバイル・コンピュータ装置100の動作の更なる詳細説明は、図4,5,6Aないし6Bに関して述べる。
【0019】
図2は、本発明のある実施例による、トラステッド・モバイル・コンピュータ装置内の暗号化プロセッサの簡単な機能ブロック図である。詳しくは、図2は、暗号化プロセッサ126の一実施例のより詳細なブロック図である。
【0020】
暗号化プロセッサ126は、DMAインターフェース202と、命令シーケンス・バッファ204と、コントローラ206と、マイクロコード・メモリ240と、パッチ・フラッグ・メモリ281と、制御レジスタ・セット208と、コンテクスト記憶装置/プラットフォーム・コンフィギュレーション・レジスタ210と、ステータス・レジスタ212と、中間記憶装置214と、出力バッファ216と、入力バッファ218と、内部揮発性メモリ220と、演算論理装置(ALU)222と、データ暗号化規格(DES)ユニット224と、メッセージ・ダイジェスト(MD)ユニット226と、乱数発生器(RNG)ユニット228と、機密ハッシュ・アルゴリズム(SHA:secure hash algorithm)ユニット230と、高度暗号化規格(AES)ユニット232と、指数演算装置234とを具備する。かくして、暗号化プロセッサ126は、複数の異なる機能ユニット(複数の異なる暗号化ユニットを含む)(ALU222,DESユニット224,MDユニット226,RNGユニット228,SHAユニット230,AESユニット232および指数演算装置234を含む)を具備する。
【0021】
マイクロコード・メモリ240は、ある実施例では読取り専用メモリ(ROM)であるが、他の種類のメモリでもよい。内部揮発性メモリ220は、ランダム・アクセス・メモリ(RAM)(例えば、同期RAM(SDRAM),DRAM,DR−SDRAMなど)などの複数の異なる種類の揮発性書き込み可能メモリのうち、任意のものでよい。図示される如く、内部揮発性メモリ220は、キー・キャッシュ221,ルート暗号化キー241およびカウンタ215を格納する。キー・キャッシュ221は、複数の異なる被保護キーを格納し、これは暗号化キーおよび/または(データ暗号化キーを暗号化するために用いられる)キー暗号化キーでもよい。キー・キャッシュ221の一実施例を図3に関連して、以下にさらに詳細に説明する。
【0022】
パッチ・フラッグ・メモリ281は、ランダム・アクセス・メモリ(RAM)(例えば、同期RAM(SDRAM),DRAM,DR−SDRAMなど)などの複数の異なる種類の揮発性書き込み可能メモリのうち、任意のものでよい。下記にさらに詳細に説明するように、パッチ・フラッグ・メモリ281は、マイクロコード・メモリ240のセグメントに対応するパッチ・フラッグを格納することができる。あるパッチ・フラッグは、マイクロコード・メモリ240のあるセグメントにパッチが適用されたか否かを示す。パッチ・フラッグの使用の更なる詳細については、下記に詳述する。
【0023】
DMAインターフェース202は、暗号化プロセッサ126とデータを受信および送信するように結合される。DMAインターフェース202は、命令シーケンス・バッファ204と、制御レジスタ・セット208と、コンテクスト記憶装置/PCR210と、ステータス・レジスタ212と、出力バッファ216と、入力バッファ218とに結合する。
【0024】
命令シーケンス・バッファ204は、アプリケーション・プロセッサ106から受信した基本命令を格納する。コントローラ206は、命令シーケンス・バッファ204から特定の基本命令を検索し、マイクロコード・メモリ240から関連のマイクロコード命令を検索することができる。これらのマイクロコード命令には、暗号化プロセッサ126内で実行される一連の動作が含まれることがある。例えば、ある命令によって、コントローラ206が揮発性メモリ120から暗号化済みデータ暗号化キーの検索することがある。異なる命令により、コントローラ206は、このキーを、機能ユニットの1つに送信し、暗号解読する場合もある。別の命令によって、暗号解読されたデータ暗号化キーを異なる機能ユニットに送信し、暗号化動作を実行することもできる。この一連のマイクロコード命令の出力を出力バッファ216に格納することができる。(暗号化プロセッサ126用の)ドライバは、この出力を検索することができる。このような動作のより詳細な説明を下記に行う。
【0025】
SHAユニット230は、暗号化ハッシュの作成と認証に用いられることがある。SHAユニット230は、SHA−1動作と、SHAに基づくHMAC計算とを行うことができる。指数演算装置234は、複数の異なる演算動作の加速を実行するために用いることができる。たとえば、指数演算装置234は、異なる種類の暗号化規格(RSA法など)のための非対称の暗号化および暗号解読,署名,署名の認証などを実行するために利用することができる。例証として、指数演算装置234は、モジュラー累乗法,モジュラー削減,乗算,減算などを実行することができる。
【0026】
AESユニット232は、複数の異なる種類の暗号化(対称,非対称)を行うことができる。AESユニット232は、暗号化キーの長さにより可変数のラウンド数だけ暗号化を実行することがある。たとえば、AESユニット232は、それぞれ10ラウンド,12ラウンドおよび14ラウンドとなる、128ビット,192ビットおよび256ビットのキー長に対応することができる。AESユニット232を用いて、異なるキーによるデータ暗号化キーの暗号化、即ちキー暗号化キーを暗号化することができる。
【0027】
このような動作によって、揮発性メモリ220のキー・キャッシュ221内にデータ暗号化キーを安全に格納することが可能になる。暗号化プロセッサ126は、暗号化キーの階層を構築することができる。たとえば、AESユニット232は、キー暗号化キーでデータ暗号化キーを暗号化することができる。AESユニット232は、ルート暗号化キー241でキー暗号化キーを暗号化することができる。暗号化された形式で、データ暗号化キーとキー暗号化キーを暗号化プロセッサ126の外部にあるメモリ(揮発性メモリ116,不揮発性メモリ120など)に格納することができる。機密性を図るために、ルート暗号化キー241は暗号化プロセッサ126の外部に露出しない。
【0028】
DESユニット224は、複数の異なる種類の暗号化および暗号解読を実行することができる。たとえば、DESユニット224は、64ビット・キーに基づき64ビット・ブロックのデータを暗号化および解読することができる。MDユニット226は、複数の異なる規格に基づきハッシュ(メッセージ・ダイジェスト)を生成することができる。たとえば、MDユニット226は、MD−5,MD−4などに基づきハッシュを作成することができる。MDユニット226は、任意の長さのメッセージ・ブロックを受信し、128ビットのダイジェストを生成することができる。MDユニット226は、キード・ハッシュ・メッセージ認証コード(HMAC)動作も実行することができる。
【0029】
ALU222は、複数の異なる演算および論理動作を行って、トラスト動作および暗号化動作を実行することができる。たとえば、ALU222は、加算,減算,乗算,除算,ビット整合,シフト演算,異なる論理関数(論理積,論理和,排他的論理和など)などを実行することができる。
【0030】
RNGユニット228は、異なる種類の乱数発生を行うことができる。RNGユニット228は、線形フィードバック・シフト・レジスタ(LFSR)を用いて、乱数ビットの数列を生成することができる。また、LFSRの出力は、SHAユニット230を通じて送られ、さらに乱数化することができる。
【0031】
制御レジスタ・セット208は、暗号化プロセッサ126を制御するために用いるデータを格納することができる。それにより、暗号化プロセッサ126の外部の構成部品は、暗号化プロセッサ126の制御およびコンフィギュレーションに関係する制御レジスタ・セット208内にデータを格納することができる。コンテクスト記憶装置/PCR210は、トラステッド・モバイル・コンピュータ装置100に関するコンテクストとコンフィギュレーションとを格納することができる。たとえば、コンテクスト記憶装置/PCR210は、アプリケーション・プロセッサ106上で動作実行する異なるアプリケーションの認証に関するトラスト動作から、暗号化ハッシュを格納することができる。ステータス・レジスタ212は、暗号化プロセッサ126内の特定の動作に関するステータス,異なる機能ユニットのステータスなどを格納するために用いられる。中間記憶装置214は、ある機能ユニットから出力され、他の機能ユニットに入力される中間結果を格納するために用いることができる。
【0032】
入力バッファ218は、特定の動作が行われるデータを格納することができる。たとえば、ある基本命令に関して暗号化ハッシュをアプリケーションのコードにまたがり実行しようとする場合に、そのコードは入力バッファ218内に格納される。
【0033】
図示される如く、暗号化プロセッサ126は、複数の機能ユニット(複数の異なる暗号化ユニットを含む)と、異なる揮発性記憶装置とを具備する。また、暗号化プロセッサ126は、複数の異なる動作を実行し、その中間結果は機密性が守られる。以下にさらに説明するように、コントローラ206はこれらの異なる機能ユニットの動作と、それらの間のデータの流れとを制御することができる。
【0034】
以下に説明するように、暗号化プロセッサ126は、その中の動作のアトミシティおよび/または統合性を図ることによって、安全な動作を可能にする。動作のアトミシティとは、その中で進行中の動作が先取りして阻止されることなく、完了するまで実行されることと定義される。動作の統合性とは、暗号化プロセッサ126が中間データおよび結果を不透明にすることと定義される。暗号化プロセッサ126は、より高レベルのセキュリティ・サービスを生成するためのトラステッド・モバイル・コンピュータ装置100の中心として働く。このようなサービスには、安全な記憶装置,安全な、あるいは暗号化された通信を信頼性をもって実行促進すること,乱数発生などが含まれる。
【0035】
暗号化プロセッサ126は、非保護モードと保護モードの両方で動作することができる。非保護モードにおいては、暗号化プロセッサ126は暗号化および暗号解読に関して安全でないハードウェア・アクセラレータとして働くことになる。たとえば、暗号化プロセッサ126は、アプリケーション・プロセッサ106上で動作実行中のアプリケーションに関するバルク暗号化動作の実行のリクエストを受信することがある。保護モードにおいては、暗号化プロセッサ126は、複数の異なる安全なアトミック動作を実行することができる。これらの動作に関する詳細は後述する。
【0036】
図3は、本発明のある実施例による、トラステッド・モバイル・コンピュータ装置内の暗号化プロセッサのキー・キャッシュのエントリの一実施例を示す。詳しくは、図3は、揮発性メモリ220のキー・キャッシュ221内のエントリを示す。キー・キャッシュ221は、保護された暗号化キー312とヘッダ300とからなる1ないし複数のエントリを含むことがある。ヘッダは、キーの用途に関して、複数の異なる識別ならびに制限を行う。
【0037】
図示される如く、ヘッダ300は識別子302と、保護識別子304と、複数のフラッグ306とを備える。複数のフラッグ306は、装置種別308と用途種別310とを含む。識別子302は、保護された暗号化キー312を識別する英数値とすることができる。暗号化プロセッサ126内の異なる機能ユニットおよび/またはコントローラ206は、識別子302を用いて保護された暗号化キー312にアクセスすることができる。保護識別子304は、この保護された暗号化キー312を暗号化するために用いられる暗号化キーを識別する英数値とすることができる。保護された暗号化キー312がデータ暗号化キーの場合は、保護識別子304は、1つのキー暗号化キーのための識別子となりうる。保護された暗号化キー312がキー暗号化キーの場合は、保護識別子304は、ルート暗号化キー241とすることができる。
【0038】
装置種別308は、保護された暗号化キー312にアクセスできる暗号化プロセッサ126内の1以上の機能ユニットを識別する。そのため、装置種別308により識別されない特定の保護された暗号化キー312に機能ユニットをアクセスさせようとするマイクロコード命令が基本命令により発されると、そのアクセスは拒否されて、暗号化プロセッサ126は、このような命令の実施を要求したアプリケーションに対してエラーを返す。用途種別310は、保護された暗号化キー312を用いて実行することのできる1種類以上の動作を識別する。動作の種類には、署名,暗号化記憶,証明識別キー(AIK:Attestation Identity Key)動作などがある。
【0039】
トラステッド動作および暗号化動作
トラステッド動作および暗号化動作のより詳細な説明を行う。図4は、本発明のある実施例による、暗号化プロセッサとのインターフェース動作のフローチャートである。詳しくは、図4は、暗号化プロセッサ126とインターフェースを行うアプリケーション・プロセッサ106上で動作実行する(暗号化プロセッサ126のための)ドライバの動作に関するフローチャート400である。
【0040】
ブロック402において、トラステッド動作または暗号化動作に対するセキュリティ・サービス・リクエストが受信される。図1の実施例を参照して、アプリケーション・プロセッサ106上で動作実行するドライバは、トラステッド動作または暗号化動作に関するセキュリティ・サービス・リクエストを受信する。たとえば、このドライバは、オペレーティング・システムまたはアプリケーション・プロセッサ106上で動作実行する他のアプリケーションからセキュリティ・サービス・リクエストを受信する。セキュリティ・サービス・リクエストは、アプリケーション,ハードウェア,コンフィギュレーション情報などを認証するトラスト動作である。セキュリティ・サービス・リクエストは、暗号化動作(ハッシング,キー作成,暗号化,暗号解読など)に関するものである。制御は、ブロック404に続く。
【0041】
ブロック404において、セキュリティ・サービス・リクエストに基づいて、少なくとも1つの基本命令が生成される。図1の実施例を参照して、暗号化プロセッサ126のドライバは、セキュリティ・サービス・リクエストに基づき、少なくとも1つの基本命令を生成する。たとえば、セキュリティ・サービス・リクエストは、1ないし複数の異なる暗号化動作を含むことがある。それにより、ドライバは、異なる動作に関する基本命令を生成することができる。制御はブロック406に続く。
【0042】
ブロック406において、基本命令が暗号化プロセッサに送信される。図1の実施例を参照して、暗号化プロセッサ126のドライバが基本命令を、暗号化プロセッサ126に送信する。ドライバは、DMA論理124を通じてこの送信を行う。制御は、ブロック408に続く。
【0043】
ブロック408において、基本命令の結果が暗号化プロセッサから受信される。図1の実施例を参照して、暗号化プロセッサ126は、基本命令の結果を、出力バッファ216を通じて(DMAインターフェース202を利用して)暗号化プロセッサ126のドライバに送り返す。たとえば、基本命令が特定のアプリケーションの認証に関するトラスト動作に関するものである場合は、結果はそのアプリケーションが真正のものであるか否かを示すブール値となることがある。他の例では、基本命令が暗号解読動作に対する要求である場合は、結果は暗号解読動作が成功したか否かと、暗号解読の結果がどこに格納されているか、あるいはこの暗号解読の結果を示すブール値となることがある。別の例においては、基本命令が乱数に対する要求である場合は、その結果が乱数を含むこともある。フローチャート400の動作はここで完了する。
【0044】
暗号化プロセッサ126による基本命令の処理をさらに詳しく説明する。図5は、本発明のある実施例による、暗号化プロセッサの初期化のフローチャートである。詳しくは、ある実施例において、フローチャート500は暗号化プロセッサ126内での動作の実行に先立って実施される動作を示す。フローチャート500の動作の実行が成功すると、暗号化プロセッサ126はトラステッド状態になる。
【0045】
ブロック502において、RNGユニット228が適切な乱数を発生していることを確認するための検証が行われる。図2の実施例を参照して、コントローラ206がこの検証を行う。このような検証は、RNGユニット228に対する乱数の一連のリクエストを含むことがある。コントローラ206は、そこから出力された異なる乱数が異なっていること、また、たとえば無作為性に関してFIPS140から指定されたテストを用いた乱数であることを検証することができる。制御はブロック504に続く。
【0046】
ブロック504において、カウンタが適切な状態にあることを確認するための検証が行われる。カウンタは、一方向のみ、たとえば増分だけ行うソフトウェア・カウンタまたはハードウェア・カウンタである単調カウンタとすることができる。カウンタはトランザクションや、メッセージが再生され2回以上利用されることを確認するための認証プロトコルに用いることができる。図2の実施例を参照して、コントローラ206が、カウンタ215のこのような検証を行う。カウンタ215の値は、不揮発性メモリ116の暗号化状態ファイル内に格納される。従って、このような検証は、不揮発性メモリ116から暗号化状態ファイルを読み出し、カウンタ215のこの値が減分していないことを確認することと、カウンタ215が上部範囲にないことを確認するための算術的チェックを含むことがある。制御はブロック506に続く。
【0047】
ブロック506において、機能ユニットが適切な結果を生成していることを確認するための検証が行われる。図2の実施例を参照して、コントローラ206がこの検証を行う。このような検証は、異なる機能ユニット内で異なる動作の実行とこの動作の出力の検証とを含むことがある。たとえば、コントローラ206がDESユニット224に異なるデータに関して一連の暗号化を実行するよう命令することがある。コントローラ206は、次にDESユニット224に対してこれらのデータを解読するよう命令することができる。コントローラ206は、ALU222に対して動作前のデータと動作後のデータとの比較を行うよう命令することができる。機能ユニットの他の種類の検証も行うことができる。たとえば、機能ユニットは標準テスト入力を受信し、そこからの出力を米国標準技術局(NIST)が規定する連邦情報処理規格(FIPS)などの一定の規格により公的に発行される値と比較することができる。制御はブロック508に続く。
【0048】
ブロック508において、揮発性メモリの検証が行われる。図2の実施例を参照して、コントローラ206は揮発性メモリ120および/または揮発性メモリ220を検証することができる。この検証は、揮発性メモリがその中に格納されたデータをもたないという判断を含むことがある。他の検証としては、その中のビットをトグル動作して、データがそこに適切に格納されることを検証する動作を含むことがある。フローチャート500の動作はこれで終了する。
【0049】
図6Aは、本発明のある実施例による、暗号化プロセッサ内の機密保持動作のフローチャートを示す。
【0050】
フローチャート600のブロック602において、基本命令および/または関連データが受信される。図1の実施例を参照して、暗号化プロセッサ126は、暗号化プロセッサ126用の(アプリケーション・プロセッサ106上で動作実行中の)ドライバから基本命令を受信する。上記の如く、この基本命令はトラスト動作,暗号化動作などの異なる種類の機密保持動作に関するものであることがある。図2の実施例を参照して、暗号化プロセッサ126が、DMAインターフェース202を介して基本命令を受信し、この命令を命令シーケンス・バッファ204に格納する。
【0051】
また、暗号化プロセッサ126は、複数のこのような命令に関する基本命令の関連データを受信することがある。図2の実施例を参照して、暗号化プロセッサ126が、DMAインターフェース202を介して入力バッファ218内に関連データを受信する。たとえば、基本命令がアプリケーション・プロセッサ106内で動作実行されるアプリケーション(たとえばアプリケーション・プロセッサ106のためのオペレーティング・システム)を認証するためのトラスト動作に関するものである場合、この関連データは不揮発性メモリ116から検索されるアプリケーション用のコードである。
【0052】
さらに説明すると、暗号化プロセッサ126を、機密のあるいは改変されないように保護する必要のあるデータを暗号化するために用いることができる。これにより、このような動作をトラステッド・モバイル・コンピュータ装置100により用いて、ファイルが変更されないようにする、あるいはトラステッド・モバイル・コンピュータ装置100の他のアプリケーションまたは用途から見られないように保護することができる。さらに、暗号化プロセッサ126を、コンテンツおよびデジタル権利(許可)対象を保護するためのデジタル権利運動の一翼をになうトラステッド・モバイル・コンピュータ装置100内で利用することができる。従って、暗号化プロセッサ126を用いて、デジタル権利運動に準拠してデジタル的に保護されているエムペグ−3(MPEG:Moving Picture Expert Group−MP3:Audio Layer 3)ファイルの暗号解読を行うこともできる。
【0053】
このようなデータの他の例として、遠隔装置(異なるモバイル装置,サーバーなど)からトラステッド・モバイル・コンピュータ装置100内にデータが受信されるバルク暗号解読動作のためのデータもある。関連データには、暗号解読動作を行うために用いるパブリック・キーにより暗号解読されるデータが含まれる。
【0054】
暗号化プロセッサ126は、不揮発性メモリ116および/または揮発性メモリ120のパブリック・インターフェイスを介して基本命令に関する関連データを受信することができる。フローチャート600に戻り、制御はブロック604に続く。
【0055】
ブロック604において、基本命令のためのマイクロコード命令が検索される。図2の実施例を参照して、コントローラ206がマイクロコード・メモリ240から基本命令のためのマイクロコード命令を検索する。特定の基本命令は、1ないし複数の異なるマイクロコード命令を含むことがある。たとえば、その基本命令が、アプリケーションの署名済み信任状と暗号化ハッシュとの比較に基づいて、あるアプリケーションを認証しようとするものである場合、そのマイクロコード命令には不揮発性メモリ116から署名済み信任状を検索する命令が含まれることになる。別のマイクロコード命令は、暗号化ハッシュに用いられる暗号化キーの不揮発性メモリ116からの検索を含むことがある。別のマイクロコード命令は、暗号化キーのSHAユニット230への移動動作を含むことがあり、また別のマイクロコード命令がSHAユニット230に暗号化ハッシュを実行するよう命令する場合もある。別のマイクロコード命令は、暗号化ハッシュの結果と署名済み信任状のALU222への移動動作を含むことがあり、また別のマイクロコード命令がALU222にこれら2つの値を比較するよう命令する場合もある。別のマイクロコード命令では比較動作の結果を出力バッファ216に記憶させることもある(これはアプリケーション・プロセッサ106に送り返される)。
【0056】
上記の如く、特定の基本命令には一連のマイクロコード命令が含まれることがある。このため、特定の基本命令の中間結果は、暗号化プロセッサ126外部の構成部品には不透明である。フローチャート600に戻り、制御はブロック606に続く。
【0057】
ブロック606において、基本命令に関するマイクロコード命令に基づき、暗号化プロセッサ内で機密情報に関わる動作を実行するか否かの判断が行われる。図2の実施例を参照して、コントローラ206がこの判断を行う。機密動作の例には、ルート暗号化キー241を用いる動作,(キー・キャッシュ221内の)被保護キーを用いる動作および/またはカウンタ215またはいずれかのプラットフォーム・コンフィギュレーション・レジスタ210にアクセスする動作がある。この基本命令に関するマイクロコード命令に基づいて暗号化プロセッサ126内で機密動作を実行しないと決定されると、制御はブロック610に続く。このブロックについては下記に詳述する。
【0058】
ブロック608において、この基本命令に関するマイクロコード命令に基づいて暗号化プロセッサ126内で機密動作を実行すると決定されると、暗号化プロセッサがトラステッド状態にあるか否かの判断が行われる。図2の実施例を参照して、コントローラ206がこの判断を行う。ある実施例においては、暗号化プロセッサ126が適切に初期化されていない場合には(図4のフローチャート400に関して上述されたように)、暗号化プロセッサ126はトラステッド状態にないことがある。不正な動作が実行された場合も、暗号化プロセッサ126がトラステッド状態にないことがある。不正動作の例としては、データがある場所から他の場所へと不適切に移動されようとした場合がある(データ移動の制限に関して本明細書内に説明される)。認証が失敗した場合や、キーが暗号化ユニット内に適切にロードされていない場合、または基本命令502に関連するパラメータが正しい範囲にない場合などにも、暗号化プロセッサ126がトラステッド状態にないことがある。認証はキーのロード中に用いられ、パスワードと2つの乱数、即ち暗号化プロセッサ126が生成した乱数とアプリケーションまたは使用者が生成した乱数の2つの乱数を用いるHMAC−SHA演算からなる。HMAC演算には、基本命令502の値またはロードしようとするキーの属性が含まれることがある。
【0059】
ある実施例においては、暗号化キーを暗号化プロセッサ126の機能ユニットにロードして実行しようとするアプリケーションが、キーのパスワードを用いてHMACを計算する。このアプリケーションは、パスワードを前もって知っていることがある。たとえば、キーが作成されたときに、アプリケーションがパスワードを設定することができる。アプリケーションは、HMAC演算の予測される結果を基本命令502のパラメータとして提供することができる。暗号化プロセッサ126は、HMAC演算を行い、その結果を基本命令502の予測される結果パラメータと比較する。この2つの結果が一致すると、認証は成功であり、キーがロードされる。結果が一致しないと、認証は失敗となり、キーはロードされない。
【0060】
ブロック609において、基本命令が途中終了される。図2の実施例を参照して、コントローラ206が基本命令を途中終了する。コントローラ206は、追加のマイクロコード命令を全て終了し、アプリケーション・プロセッサ106上で実行動作中のドライバに失敗の通知を送る。フローチャート600の動作はこれで終了する。
【0061】
ブロック610において、暗号化プロセッサ126がトラステッド状態にあると判断すると、基本命令に関わる動作が実行される。図2の実施例を参照して、コントローラ206がマイクロコード動作に基づき異なる動作の実行順序を制御する。従って、コントローラ206は、暗号化プロセッサ126,不揮発性メモリ・コントローラ114または揮発性メモリ・コントローラ118内の適切な機能ユニットに対し、動作実行のための制御情報を送信することがある。暗号化プロセッサ126,不揮発性メモリ・コントローラ114または揮発性メモリ・コントローラ118内の適切な機能ユニットが、動作を実行する。基本命令動作実行中の不揮発性メモリ116または揮発性メモリ120へのアクセスに関して、暗号化プロセッサ126は、不揮発性メモリ116および揮発性メモリ120のためのプライベート・インターフェイスを通じてアクセスを行うことができる。たとえば、揮発性メモリ120に格納される暗号化されたデータ暗号化キーが、基本命令の暗号化動作のために用いられるとする。コントローラ206は、この被暗号化データ暗号化キーを揮発性メモリ120のプライベート・インターフェイスを通じて検索することができる。また、基本命令に関わる他の動作例は、ブロック604(上述)の説明内に示す。
【0062】
コントローラ206は、異なる機能ユニット間でデータを移動することができる。しかし、暗号化プロセッサ126には、1以上のデータ移動の制約が構築されることがある。このような制約によって、不正なプロセスが暗号化プロセッサ126から機密情報を内密に読めないようにする。このような制約は、マイクロコード・メモリ240に格納することができる。たとえば、あるデータ制約により、キー記憶装置220に格納されるデータを出力バッファ216に書き込めないようにする。このような制約は、暗号化キーが、暗号化されない形式で暗号化プロセッサ126から読み取らることを防ぐ。
【0063】
別の制約例では、入力バッファ218に格納されるデータがコンテクスト記憶装置/PCR210に書き込まれることを防ぐことができる。このような制約は、暗号化プロセッサ126のプラットフォーム・コンフィギュレーションの上書きを阻止する。別の制約例では、入力バッファ218に格納されるデータをキー・キャッシュ221に書き込むことを阻止することができる。このような制約は、そこに格納される暗号化キーの上書きを防ぐ。フローチャート600に戻り、制御はブロック612に続く。
【0064】
ブロック612において、さらにマイクロコード命令を実行するか否かの判断がなされる。図2の実施例を参照して、コントローラ206がこの判断を行う。上記の如く、コントローラ206はマイクロコード・メモリ240から、特定の基本命令に関する1ないし複数個のマイクロコード命令を検索する。従って、コントローラ206は、これらの異なる命令が実行されたか否かを判断する。ある基本命令に関してさらにマイクロコード命令を実行することが決定されると、制御はブロック606に続き、異なるマイクロコード命令が実行される。ある基本命令に関して別のマイクロコード命令が実行されないと決定されると、マイクロコードは、クリーンアップ動作を行って、暗号化プロセッサ126が確実にトラステッド状態にあるようにする。クリーンアップ動作には、動作中に用いられた暗号化ユニットからキーを削除したり、中間記憶装置214内の中間結果をゼロまたは1に上書きしたり、暗号化プロセッサの状態フラッグをリセットして、動作が終了したことあるいはキーを利用できない状態になったことを示すことなどが含まれる。クリーンアップ動作が終了すると、フローチャート600の動作は完了する。
【0065】
フローチャート300および600の動作は、複数の異なるトラステッド動作および暗号化動作のために利用することができる。このような例の1つとして、不揮発性メモリ116に対する書き込みアクセスがある。不揮発性メモリ116は、複数の異なるブロックに分割することができる。たとえば、不揮発性メモリ116の大きさが8メガバイトの場合、不揮発性メモリ116は8個の1メガバイトのブロックを含むことができる。複数の異なるブロックは、そこに対する書き込みアクセスを制御を関連してイネーブルにすることができる。暗号化プロセッサ126は、特定のブロックに格納されるデータが認証されると、そのブロックに対するイネーブルのアサーションを許可する。これにより、暗号化プロセッサ126のドライバは、不揮発性メモリ116内の特定のブロックに対する書き込みアクセスを求めるセキュリティ・サービス・リクエストを受信する。ドライバは、次に、ブロック内に格納されるデータの認証を要求する基本命令を生成する。基本命令は、署名済み信任状およびデータと共に暗号化プロセッサ126に送信される。暗号化プロセッサ126は、次に複数の異なるマイクロコード命令を実行して、署名済み信任状と比較されるデータにまたがる暗号化ハッシュを作成する。暗号化プロセッサ126は、この比較に基づいてデータを認証することができる。このような実行例を、トラステッド・モバイル・コンピュータ装置100内にダウンロードされる特定のアプリケーションの新しいパッチを認証するために用いることがある。
【0066】
よって、上記の如く、本発明の実施例はトラステッド・モバイル・コンピュータ装置内のアプリケーション・プロセッサに関して実行可能なコンテクストとは別の実行可能なコンテクスト内にあるのと同一のプロセッサ内でトラステッド動作と暗号化動作の両方を行うことができる。従って、この暗号化プロセッサは、トラスト動作(アプリケーション・プロセッサのオペレーティング・システムを認証するためのトラステッド・ブート動作など)を実行するために用いることができ、なおかつ、トラステッド・ブート動作に続く異なる種類の暗号化動作を実行するために同じ機能ユニットを利用することができる。
【0067】
さらに、上記の如く、暗号化プロセッサ126は、トラスト関連暗号化キーが外部に露出(非暗号化)されないようにすることができる。暗号化プロセッサ126は、暗号化動作の中間的な部分的結果も外部に露出されないようにすることができる。さらに、暗号化プロセッサ126は、暗号化動作が開始されると、外部にある構成部品から変更または不正変更されないようにすることができる。
【0068】
暗号化キーの使用を含む暗号化動作の実行のより詳細な説明を次に行う。詳しくは、図6Bは、本発明のある実施例による、暗号化プロセッサ内の暗号化キーを用いた暗号化動作実行のフローチャートである。フローチャート650は、暗号化プロセッサ126内での動作実行において使用する前の暗号化キーの妥当性確認および認証動作を示す。
【0069】
ブロック652において、基本命令が受信され、暗号化キーの使用を含む動作が暗号化プロセッサ内で実行される。図2の実施例を参照して、コントローラ206がこの基本命令を受信する。暗号化キーは、暗号化プロセッサ126の外部で生成することができる。このような暗号化キーは、基本命令の受信に先立って、暗号化プロセッサ126内のメモリにすでにロードされている。あるいは、暗号化キーは、基本命令と共に暗号化プロセッサ126内にロードされている場合もある。暗号化キーは、暗号化プロセッサ126内の機能ユニットにより内部で生成されることもある。暗号化キーは、保護暗号化キーにより暗号化することができる。また、暗号化キーの装置種別および/または用途種別(図3に関して上記に詳述される)を、暗号化キーと関連付けることもできる。制御はブロック654に続く。
【0070】
ブロック654において、暗号化キーの装置種別および/または用途種別が許可されているか否かが判断される。図2の実施例を参照して、コントローラ206がこの判断を行う。説明を補足するために図3に戻り、コントローラ206は暗号化キーのヘッダ300を検索することができる。コントローラ206は、暗号化キーを用いようとする機能ユニットが装置種別308の1つとして列挙されているか否かを判断することができる。また、コントローラ206は暗号化キーを用いて実行する動作が用途種別310の1つとして列挙されているか否かも判断することができる。暗号化キーの装置種別および/または用途種別が許可されていないと判断すると、制御はブロック664に続く。これについては、下記に詳述する。
【0071】
ブロック656において、暗号化キーの装置種別および/または用途種別が判定された後、課題が作成される。図2の実施例を参照して、コントローラ206が課題を作成する。暗号化プロセッサ126内にロードされる暗号化キーは、関連のパスワードを含むことができる。関連パスワードは暗号化プロセッサ126内では周知のものであり、基本命令を発するアプリケーションにも既知である。コントローラ206は、アプリケーション・プロセッサ106上で動作実行中のアプリケーションに出力される課題を作成する。この課題は、関連パスワードのハッシュをアプリケーションから応答することを求めるものである。パスワードのハッシュは、複数の異なる種類のものであり、ある実施例においてはハッシュはHMAC演算に基づくものである。制御はブロック658に続く。
【0072】
ブロック658において、課題に対する応答が受信される。図1の実施例を参照して、アプリケーション・プロセッサ106上で動作実行中のアプリケーションが暗号化プロセッサ126に対して応答を返送する。コントローラ206は課題に対する応答を受信する。制御はブロック660に続く。
【0073】
ブロック660において、応答が正しいか否かの判断がなされる。図2の実施例を参照して、コントローラ206がSHAユニット230に対してパスワードのハッシュを作成することを命令する。たとえば、SHAユニット230は、HMAC演算に基づきハッシュを作成することができる。コントローラ206は、ALUユニット222に対して、アプリケーションから受信したハッシュをSHAユニット230が作成したハッシュと比較することを命令することができる。これらのハッシュが等しければ、応答は正しいものと見なされる。応答が正しくないと判断されると、制御はブロック664に続く。これについては、下記に詳述する。
【0074】
ブロック662において、応答が正しいと判断されると、暗号化キーが指定された機能ユニット内にロードされて実行される。図2の実施例を参照して、コントローラ206が暗号化キーを指定された機能ユニット内にロードさせて実行する。ここで、この機能ユニットは(フローチャート600について上述したように)命令を実行することができる。フローチャート650の動作はここで終了する。
【0075】
ブロック664において、基本命令が途中終了される。図2の実施例を参照して、コントローラ206が基本命令を途中終了する。コントローラ206は、いずれかの追加のマイクロコード命令を終了し、アプリケーション・プロセッサ106上で動作実行中のドライバに失敗の通知を送ることができる。フローチャート650の動作はここで終了する。
【0076】
フローチャート650は、暗号化プロセッサ126内の暗号化キー使用の認可に関する課題/応答の一例を示す。詳しくは、フローチャート650は、暗号化キーに関連するパスワードのハッシュの利用の課題/応答を説明する。本発明の実施例では、他の種類の課題/応答動作を利用して認可を行うこともある。
【0077】
マイクロコード・メモリ240に格納されるマイクロコード命令にパッチを適用したりアップデートしたりすることもできる。しかし、マイクロコード・メモリ240が読取り専用メモリであるとパッチは揮発性メモリ220に格納されるので、パッチ内の命令がマイクロコード・メモリ240内の命令の代わりに用いられる。暗号化プロセッサ126の機密性と信頼性とを維持するために、このようなパッチ/アップデートを、インストレーションに先立って認証することができる。マイクロコード命令に対するこのようなアップデートの一実施例を説明する。詳しくは、図7は、本発明のある実施例により暗号化プロセッサ内でのマイクロコードをアップデートするためのフローチャートである。
【0078】
ブロック702において、暗号化プロセッサのためのトラステッド・ブート動作が始まる。図1の実施例を参照して、暗号化プロセッサ126は、トラステッド・ブートROM108に格納される命令に基づき、起動される。トラステッド・ブート動作の一貫として、マイクロコード・メモリ240内の命令にパッチが適用されることもある(これについては、フローチャート700にさらに詳細に説明する)。トラステッド・ブート動作のより詳細な説明は、2003年12月22日に同時係属出願され、共通譲渡された以下の米国特許出願「電子装置の安全確保(Securing an Electronic Device)」,第10/745,469号に説明する。制御はブロック704に続く。
【0079】
ブロック704において、(トラステッド・ブート動作の一部として)マイクロコードのパッチの有無に関する判断がなされる。図2の実施例を参照して、福発性メモリ116は、マイクロコード命令に対するパッチを格納するために指定されたセグメントを含む。これにより、コントローラ206は、指定されたセグメント内のデータにパッチが含まれるか否かに基づき、パッチの有無を判断することができる。パッチがないと判断すると、フローチャート700の動作は終了する。
【0080】
ブロック706において、マイクロコードのためのパッチがあると判断すると、暗号化キーおよびパッチの署名に伴ってパッチもロードされる。図2の実施例を参照して、コントローラ206が、パッチと暗号化キーとパッチの署名とを揮発性メモリ120内にロードする。制御は708に続く。
【0081】
ブロック708において、パッチの暗号化キーが正当であるか否かに関する判断が行われる。図2の実施例を参照して、不揮発性メモリ116には、「1回プログラム可能」と指定されるセグメントが含まれることがある。詳しくは、このセグメントは1回だけ書き込むことができ、それによって不正なあるいは悪意のある過程によりこのセグメントに格納されるデータが改変されることを防ぐ。このセグメントには、パッチの暗号化キーのハッシュが含まれることがある。従って、コントローラ206は、このハッシュと暗号化キーとをそれぞれ不揮発性メモリ116および揮発性メモリ120から検索することができる。コントローラ206は、SHAユニット230に対し、暗号化キーのハッシュを作成するよう命令することができる。次に、コントローラ206は、ALU222に対し、このハッシュ結果と不揮発性メモリ116から検索したハッシュとを比較して、これら2つの値が同一であるか否かを判断するよう命令することができる。これら2つの値が等しければ、パッチの暗号化キーのハッシュは正当である。
【0082】
ブロック710において、パッチの暗号化キーが正当でないと判断されると、パッチの暗号化キーと署名とが削除される。図2の実施例を参照して、コントローラ206がパッチと、暗号化キーと、パッチの署名とを揮発性メモリ120から削除する。それにより、パッチ内の命令は暗号化プロセッサ126にロードされない、すなわち実行されることはない。フローチャート700の動作はこれで終了する。
【0083】
ブロック712において、パッチの暗号化キーが正当であると判断されると、パッチの署名が正当であるか否かの判断がなされる。図2の実施例を参照して、コントローラ206がパッチをSHAユニット230内にロードする。次にコントローラ206はSHAユニット230に対し、パッチのダイジェストを作成するよう命令する。コントローラ206は、パッチに伴うデジタル署名を指数演算ユニット234内に、暗号化キーと共にロードする。次に、コントローラ206は、指数演算ユニット234に対し署名の暗号解読を命令することができる。コントローラ206は、指数演算ユニット234の出力を検証して、署名が適切に暗号解読されたか否かを判断することができる。署名が適切に解読されると、コントローラ206はALU222に対し、暗号解読した署名をSHAユニット230が作成したダイジェストと比較するよう命令する。この2つの値が等しければ、パッチの署名は正当であり、このパッチは、暗号化プロセッサ126に関して適切に認可されたパッチとなる。
【0084】
ブロック714において、パッチの署名が正当であると判断されると、パッチ・フラッグとパッチを適用されたマイクロコードのタッグ・エントリとがロードされる。図2の実施例を参照して、パッチの一部である命令に加えて、パッチには、マイクロコード・メモリ240のどのセグメントにパッチが適用されたかを示すパッチ・フラッグの集合が含まれることがある。コントローラ206は、これらのパッチ・フラッグをパッチ・フラッグ・メモリ281にロードすることができる。このようなパッチ・フラッグは、マイクロコード・メモリ240の各セグメントの1ビット表現とすることができる。パッチ・フラッグ・メモリ281内のセット・ビットは、マイクロコード・メモリ240内の対応するセグメントがパッチをもつことを示す。たとえば、ビット5がパッチ・フラッグ・メモリ240内にセットされると、マイクロコード・メモリ240のセグメント5が対応するパッチを有することになる。従って、パッチを含むファイルがパッチ・フラッグと、パッチ・タッグおよびパッチ・フラッグのデジタル署名に続く一連のパッチ・セグメントと、一連のパッチ・セグメントおよびパッチ・タッグとを含むことがある。マイクロコード・メモリ240内のセグメントに関する特定のパッチ・フラッグは、マイクロコード・メモリ240のセグメントの代わりに実行されるパッチ内のセグメントの識別子を格納する。これにより、マイクロコード・メモリ240のセグメントにおける命令実行中に、フラッグがこのセグメントにパッチが適用されることを示すと、コントローラ206はパッチから(タッグ・エントリを用いて)命令を取り出し、マイクロコード・メモリ240からの命令の代わりに実行する。実施例によっては、パッチのセグメントは、その中の命令を実行する際に揮発性メモリ120から揮発性メモリ220内にロードされるに過ぎない。さらに、このセグメントが揮発性メモリ220に残る場合がある。このため、その中の命令を再実行しようとする場合は、コントローラ206はこのセグメントを揮発性メモリ120から再度取り出す必要がない。フローチャート700の動作は終了する。
【0085】
従って、上述の如く、暗号化プロセッサ126内のマイクロコードに、「1回プログラム可能」な記憶装置に格納されるハッシュに基づき認証される暗号化キーを含む認証動作に基づいてパッチを適用することができる。認証動作は、正当化された暗号化キーを用いてパッチ間の署名に基づいても、その正当性が認められる。
【0086】
システム動作環境
このセクションでは、システムの概要を提示する。システムの概要は、本発明の実施例に関連して使用されるネットワーク・コンフィギュレーションを示す。システムの概要には、さらにネットワーク・コンフィギュレーションの一般的な機能も示す。
【0087】
図8は、本発明のある実施例による、暗号化動作を有するトラステッド・モバイル通信装置が動作することのできる、システム・コンフィギュレーションの簡単な機能ブロック図である。図8は、ネットワーク804に共に結合される、複数のトラステッド・モバイル・コンピュータ装置100Aないし100Nと、複数のサーバー806Aないし806Nを含むシステム800を示す。ネットワーク804は、広域ネットワークであっても、構内ネットワークであっても、あるいは複数のトラステッド・モバイル・コンピュータ装置100Aないし100Nと複数のサーバー806Aないし806Nの間に通信を行う異なるネットワークの組合せでもよい。たとえば、複数のトラステッド・モバイル・コンピュータ装置100Aないし100Nは、異なる種類のワイヤレスコンピュータ装置でもよく、ネットワーク804の一部がワイヤレス通信を処理するように構築され、ネットワーク804の別の部分が複数のサーバー806Aないし806Nとの有線通信を処理するよう構築することもできる。
【0088】
複数のトラステッド・モバイル・コンピュータ装置100Aないし100Nは、上記の如く、複数の異なるトラスト動作および暗号化動作を実行することができる。たとえば、複数のトラステッド・モバイル・コンピュータ装置100Aないし100Nの使用者は、複数のサーバー806Aないし806N上で動作実行する異なるアプリケーションとの異なる電子商取引を行うことができる。
【0089】
説明において、論理実行装置,動作コード,オペランド特定手段,リソース分割/共有/複写装置,システム構成部品の種類と関連性および論理の分割/統合選択肢などの数多くの特定の詳細事項が、本発明のより完全な理解を図るために記述される。しかしながら、当業者には、本発明の実施例はこのような特定の詳細事項なしにも実践できることが理解いただけよう。場合によっては、制御構造,ゲート・レベルの回路および完全なソフトウェア命令シーケンスは、本発明の実施例を曖昧にしないために詳細には図示しない。当業者は、過度の実験をせずに機能性の適切な実現を図ることが可能であろう。
【0090】
「一実施例」,「ある実施例」,「例示の実行例」などの本明細書内の引用は、記述される実施例が特定の特徴,構造または特性を包含する場合があるが、あらゆる実施例に特定の特徴,構造または特性が必ずしも含まれるとは限らない。また、このような文言は、必ずしも同じ実施例を言及するものでもない。さらに、1つの実施例に関連して特定の特徴,構造または特性が記述される場合、それは明示されようがされまいが、他の実施例に関連してこのような機能,構造または特性を実施するために当業者の知識に付託されるものである。
【0091】
本発明の実施例は、機械的に読取り可能な媒体により提供される機械で実行可能な命令内に具現される機能,方法または過程を含む。機械的に読取り可能な媒体には、機械(たとえばコンピュータ,ネットワーク装置,携帯情報端末,製造用具1以上のプロセッサの集合を備える任意の装置など)によりアクセス可能な形式の情報を提供する(すなわち記憶および/または送信する)任意の機構が含まれる。ある実行例においては、機械的に読取り可能な媒体は、揮発性および/または不揮発性媒体(たとえば読取り専用メモリ(ROM),ランダム・アクセス・メモリ(RAM),磁気ディスク記憶媒体,光記憶媒体,フラッシュ・メモリ装置など)ならびに、電気的,光学的,音響またはその他の形式の伝播信号(たとえば搬送波,赤外線信号,デジタル信号など)を含む。
【0092】
このような命令は、命令をプログラムされた汎用または特定用途プロセッサに、本発明の実施例の方法または過程を実行させるために利用される。あるいは、本発明の実施例の特徴または動作は、動作実行のためのハード配線論理を含む特定のハードウェア構成部品またはプログラムされたデータ処理を行う部品と特定のハードウェア部品との組合せにより実行される。本発明の実施例は、ソフトウェア,データ処理ハードウェア,データ処理システムを包含する方法および種々の処理動作など、以下にさらに詳細に説明するものを含む。
【0093】
いくつかの図面では、本発明の実施例によるトラステッド・モバイル・プラットフォーム・アーキテクチャに関するシステムおよび装置のブロック図を示す。いくつかの図面は、本発明の実施例によるトラステッド・モバイル・プラットフォーム・アーキテクチャの動作を示すフローチャートである。しかし、フローチャートの動作は、ブロック図を参照して説明するもの以外のシステムおよび装置の実施例によっても実行可能であること、またシステム/装置を参照して説明実施例により、フローチャートを参照して説明するもの以外の異なる動作を実行することもできることを理解いただきたい。
【0094】
本明細書に説明する実施例の広範囲にわたる変形に鑑みて、この詳細説明は、本発明の範囲のみを例証するものではなく、また範囲を限定するものでもない。例証のために、このような装置の使用者によるトラステッド・モバイル・コンピュータ装置100実際の動作中のトラスト動作および暗号化動作に関して説明するが、本発明の実施例はそれに限定されない。たとえば、暗号化プロセッサ126を用いて、トラステッド・モバイル・コンピュータ装置100のデバッグ動作中に装置に認証を行うこともできる。例証のために、図1に戻り、装置をJTAGインターフェース155を介して暗号化プロセッサ126に結合して、デバッグを行うこともできる。従って、暗号化プロセッサ126は、課題/応答動作を通じてこの装置を認証することができる。暗号化プロセッサ126は、課題を作成し、それをJTAGインターフェース155に結合する装置に送信することができる。この装置は、次に、課題に対する応答を行う。従って、暗号化プロセッサ126が応答に基づいてこの装置を認証すると、装置はJTAGインターフェース155を通じてトラステッド・モバイル・コンピュータ装置100と通信を行うことができる。
【0095】
本発明の実施例の変形をさらに例証するために、ある実施例において、基本命令が暗号化プロセッサ126内で連続して実行されると説明するが、異なる基本命令に関する複数の異なるマイクロコード動作を一部少なくとも同時に実行することもできる。従って、本発明に主張されるものは、請求項およびそれと同等の範囲および実現可能な等価項内に包含するものとする。従って、仕様書および図面は、制限的な意味ではなく説明のためと見なすべきものである。
【図面の簡単な説明】
【0096】
本発明の実施例は、以下の説明と実施例を図示する添付図面とを参照することにより、よく理解頂けよう。本明細書に含まれる図面の番号は、図面内に与えられる参照番号の先頭の数値が、図面の番号と関連するように付される。例えば、トラステッド・モバイル・コンピュータ装置100は、図1に見つけることができる。しかし、異なる図面間にまたがる同じ要素については、同一の参照番号となる。
【図1】本発明のある実施例による、トラステッド・プラットフォーム・アーキテクチャを有するモバイル・コンピュータ装置の簡単な機能ブロック図である。
【図2】本発明のある実施例による、トラステッド・モバイル・コンピュータ装置内の暗号化プロセッサの簡単な機能ブロック図である。
【図3】本発明のある実施例による、トラステッド・モバイル・コンピュータ装置内の暗号化プロセッサのキー・キャッシュのエントリの一実施例を示す。
【図4】本発明のある実施例による、暗号化プロセッサとのインターフェース動作のフローチャートである。
【図5】本発明のある実施例による、暗号化プロセッサの初期化のフローチャートである。
【図6A】本発明のある実施例による、暗号化プロセッサ内の機密保持動作のフローチャートである。
【図6B】本発明のある実施例による、暗号化プロセッサ内の暗号化キーを用いた暗号化動作実行のフローチャートである。
【図7】本発明のある実施例による、暗号化プロセッサ内のマイクロコードをアップデートするためのフローチャートである。
【図8】本発明のある実施例による、暗号化動作を有するトラステッド・モバイル通信装置が動作することのできる、システム・コンフィギュレーションの簡単な機能ブロック図である。

【特許請求の範囲】
【請求項1】
1以上の暗号化ユニットと、
1以上のデータ暗号化キーおよび前記1以上のデータ暗号化キーに関する関連ヘッダを格納するメモリであって、前記関連ヘッダは前記1以上の暗号化ユニットのうちどのユニットが前記データ暗号化キーを利用するかを定義する、メモリと、
を含むことを特徴とする装置。
【請求項2】
前記関連ヘッダは、前記データ暗号化キーの用途種別を定義することを特徴とする請求項1記載の装置。
【請求項3】
前記データ暗号化キーに関する前記関連ヘッダに基づき、前記1以上の暗号化ユニットのうち、前記データ暗号化キーを利用するユニットと、動作種別とを制限するコントローラをさらに含むことを特徴とする請求項2記載の装置。
【請求項4】
前記関連ヘッダは、前記1以上のデータ暗号化キーを暗号化するために用いるキー暗号化キーの識別子を定義することを特徴とする請求項1記載の装置。
【請求項5】
前記1以上の暗号化ユニットは、高度暗号化規格ユニットと、データ暗号化規格ユニットと、メッセージ・ダイジェスト・ユニットと、機密ハッシュ・アルゴリズム・ユニットまたは指数演算装置とからなる群から選択されることを特徴とする請求項1記載の装置。
【請求項6】
ワイヤレス装置内の暗号化プロセッサであって、前記暗号化プロセッサは、
第1動作の実行の中間結果を生成する第1暗号化ユニットと、
前記中間結果に基づき第2動作の実行の最終結果を生成する第2暗号化ユニットであって、前記中間結果は前記暗号化プロセッサの外部からアクセス不能である、第2暗号化ユニットと、
を含むことを特徴とする装置。
【請求項7】
前記第1暗号化ユニットおよび前記第2暗号化ユニットは、高度暗号化規格ユニットと、データ暗号化規格ユニットと、メッセージ・ダイジェスト・ユニットと、機密ハッシュ・アルゴリズム・ユニットまたは指数演算装置とからなる群から選択されることを特徴とする請求項6記載の装置。
【請求項8】
前記第1動作が暗号化キーの使用を含み、前記暗号化キーは、前記暗号化キーが認証されるまで、前記第1暗号化ユニット内にロードされないことを特徴とする請求項6記載の装置。
【請求項9】
通信を受信するためのダイポール・アンテナと、
前記通信に基づき暗号化キーを利用しようとする暗号化動作に対して基本命令を生成するためのアプリケーション・プロセッサと、
暗号化プロセッサであって、
前記暗号化キーを格納するためのメモリと、
複数の暗号化ユニットであって、前記複数の暗号化ユニットの1つは前記暗号化キーの使用に対する課題を生成するものであって、前記アプリケーション・プロセッサはその課題に対する応答を生成する、暗号化プロセッサと、
前記応答が正しい場合に、前記暗号化キーを前記複数の暗号化ユニットの1つにロードして、前記暗号化動作を実行するコントローラと、
を含むことを特徴とするシステム。
【請求項10】
前記暗号化プロセッサは、複数のマイクロコード命令を格納する不揮発性メモリをさらに含み、前記複数のマイクロコード命令の少なくとも一部に基づき、前記コントローラは、前記暗号化キーを前記複数の暗号化ユニットの1つにロードすることを特徴とする請求項9記載のシステム。
【請求項11】
前記応答が正しくない場合に、前記コントローラは、前記暗号化動作の実行を途中終了することを特徴とする請求項9記載のシステム。
【請求項12】
前記応答は、前記暗号化キーに関連するパスワードのハッシュを含むことを特徴とする請求項9記載のシステム。

【請求項13】
暗号化動作に関連する基本命令を生成するための、ワイヤレス装置内のアプリケーション・プロセッサと、
前記ワイヤレス装置内の暗号化プロセッサであって、
前記基本命令を受信するコントローラであって、前記暗号化プロセッサ内の不揮発性メモリから複数のマイクロコード命令を取り出すコントローラ、
前記複数のマイクロコード命令の第1の命令に基づき、第1動作の実行から中間結果を生成する第1機能ユニット、および、
前記複数のマイクロコード命令の第2の命令に基づく第2動作の実行から、前記中間結果に基づく前記暗号化動作の最終結果を生成する第2機能ユニットであって、前記中間結果は前記暗号化プロセッサの外部からはアクセス不能であることを特徴とする第2機能ユニット、を含む暗号化プロセッサと、
を含むことを特徴とするシステム。
【請求項14】
前記暗号化プロセッサは、暗号化キーを格納する揮発性メモリをさらに含むことを特徴とする請求項13記載のシステム。
【請求項15】
前記第2機能ユニットが前記暗号化キーを用いて前記最終結果を生成し、前記アプリケーション・プロセッサが前記暗号化キーを認証するまで、前記コントローラは、前記第2機能ユニット内に前記暗号化キーをロードしないことを特徴とする請求項14記載のシステム。
【請求項16】
前記暗号化プロセッサ内で保護されるデータ暗号化キーを利用する暗号化動作を実行するための基本命令を暗号化プロセッサ内に受信する段階と、
前記データ暗号化キーおよび前記データ暗号化キーの関連ヘッダを取り出す段階であって、前記関連ヘッダは1以上の暗号化ユニットのうちどのユニットが前記データ暗号化キーを利用するかを定義する段階と、
前記関連ヘッダが前記1以上の暗号化ユニットの1つを定義する場合に、前記データ暗号化キーを用いて前記1以上の暗号化ユニット内で動作を実行する段階と、
を含むことを特徴とする方法。
【請求項17】
前記関連ヘッダは、前記データ暗号化キーの用途種別を定義することを特徴とする請求項16記載の方法。
【請求項18】
前記データ暗号化キーを用いて前記1以上の暗号化ユニット内で前記動作を実行する段階は、前記動作の種別が前記用途種別により定義される場合に、前記データ暗号化キーを利用して前記1以上の暗号化ユニット内で前記動作を実行する段階を含むことを特徴とする請求項17記載の方法。
【請求項19】
前記暗号化プロセッサ内に保護される暗号化キーを利用する暗号化動作を実行するために、基本命令をアプリケーション・プロセッサ上で動作するアプリケーションから暗号化プロセッサに受信する段階と、
前記アプリケーションに対して、前記暗号化キーの利用に対する課題を作成する段階と、
前記アプリケーションから、前記暗号化プロセッサに前記課題に対する応答を受信する段階と、
前記応答が正しい場合に、以下の動作を実行する段階であって、前記段階は、
前記暗号化キーを前記暗号化プロセッサの機能ユニットにロードする段階、および
前記暗号化キーを用いて前記機能ユニット内で動作を実行する段階、を含む、段階と、
を含むことを特徴とする方法。
【請求項20】
前記応答が正しくない場合に、前記基本命令の実行を途中終了する段階をさらに含むことを特徴とする請求項19記載の方法。
【請求項21】
前記アプリケーションから前記暗号化プロセッサに前記課題に対する前記応答を受信する段階は、前記暗号化キーに関連するパスワードのハッシュを受信する段階を含むことを特徴とする請求項19記載の方法。
【請求項22】
前記応答が正しい場合に、前記以下の動作を実行する段階は、前記パスワードの前記ハッシュが前記暗号化プロセッサ内で生成される前記パスワードのハッシュに等しければ、前記以下の動作を実行する段階を含むことを特徴とする請求項21記載の方法。
【請求項23】
機械によって実行されたときに、前記機械に以下の動作を実行させる命令を提供する機械的に読取り可能な媒体であって、
前記暗号化プロセッサ内で保護されるデータ暗号化キーを利用する暗号化動作を実行するための基本命令を暗号化プロセッサ内に受信し、
前記データ暗号化キーおよび前記データ暗号化キーの関連ヘッダを取り出す段階であって、前記関連ヘッダは1以上の暗号化ユニットのうちどのユニットが前記データ暗号化キーを利用するかを定義し、
前記関連ヘッダが前記1以上の暗号化ユニットの1つを定義する場合に、前記データ暗号化キーを用いて前記1以上の暗号化ユニット内で動作を実行する、
動作を実行する命令を与える機械的に読取り可能な媒体。
【請求項24】
前記関連ヘッダが前記データ暗号化キーの用途種別を定義することを特徴とする請求項23記載の機械的に読取り可能な媒体。
【請求項25】
前記データ暗号化キーを用いて前記1以上の暗号化ユニット内で前記動作を実行することは、前記動作の種別が前記用途種別により定義される場合に、前記データ暗号化キーを利用して前記1以上の暗号化ユニット内で前記動作を実行することを含むことを特徴とする請求項24記載の機械的に読取り可能な媒体。
【請求項26】
機械によって実行されたときに、前記機械に以下の動作を実行させる命令を提供する機械的に読取り可能な媒体であって、
前記暗号化プロセッサ内に保護される暗号化キーを利用する暗号化動作を実行するために、基本命令をアプリケーション・プロセッサ上で動作するアプリケーションから暗号化プロセッサに受信し、
前記アプリケーションに対して、前記暗号化キーの利用に対する課題を作成し、
前記アプリケーションから、前記暗号化プロセッサに前記課題に対する応答を受信し、
前記応答が正しい場合に、以下の動作を実行し、前記動作は、
前記暗号化キーを前記暗号化プロセッサの機能ユニットにロードし、および
前記暗号化キーを用いて前記機能ユニット内で動作を実行する、
動作を実行する命令を与える機械的に読取り可能な媒体。
【請求項27】
前記応答が正しくない場合に、前記基本命令の実行を途中終了することをさらに含むことを特徴とする請求項26記載の機械的に読取り可能な媒体。
【請求項28】
前記アプリケーションから前記暗号化プロセッサに前記課題に対する前記応答を受信することは、前記暗号化キーに関連するパスワードのハッシュを受信することを含むことを特徴とする請求項26記載の機械的に読取り可能な媒体。
【請求項29】
前記応答が正しい場合に、以下の動作を実行することは、前記パスワードの前記ハッシュが前記暗号化プロセッサ内に生成される前記パスワードのハッシュと等しい場合に、前記以下の動作を実行することを含むことを特徴とする請求項28記載の機械的に読取り可能な媒体。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6A】
image rotate

【図6B】
image rotate

【図7】
image rotate

【図8】
image rotate


【公表番号】特表2007−512787(P2007−512787A)
【公表日】平成19年5月17日(2007.5.17)
【国際特許分類】
【出願番号】特願2006−541517(P2006−541517)
【出願日】平成16年12月13日(2004.12.13)
【国際出願番号】PCT/US2004/041909
【国際公開番号】WO2005/060151
【国際公開日】平成17年6月30日(2005.6.30)
【出願人】(591003943)インテル・コーポレーション (1,101)
【Fターム(参考)】