(57)【特許請求の範囲】
【請求項１】
ホストで動作されるアプリケーションプログラムからのセキュリティコマンドを受信するように設定されるホストインターフェースと、
専用デバイスドライバーを介して透過的に接続されるセキュリティデバイスの外部の不揮発性メモリ（ＮＶＭ）デバイスにアクセスすることにより、前記セキュリティコマンドを実行するように設定される回路と、
を備え、
前記専用デバイスドライバーは、前記ホストで動作され、前記不揮発性メモリデバイスと前記セキュリティデバイスとの間を媒介し、
前記回路は、前記ホストがマスターで前記セキュリティデバイスがスレーブであるインターフェースを介して前記アプリケーションプログラム及び前記専用デバイスドライバーの両方と、前記セキュリティデバイスとの間の通信を確立することにより前記セキュリティコマンドを実行するように設定され、前記回路が前記専用デバイスドライバーに、データを前記不揮発性メモリデバイスに書き込む、又は前記不揮発性メモリデバイスのデータを読み込むようにリクエストするように設定されることを特徴とする、セキュリティデバイス。
【請求項２】
前記セキュリティデバイスと、前記専用デバイスドライバーと、前記専用デバイスドライバー及び少なくとも一部の前記不揮発性メモリデバイスのストレージスペースと一緒に、トラステッド・コンピューティング・グループの仕様に基づいてトラステッド・プラットフォーム・モジュール（ＴＰＭ）として実行することを特徴とする、請求項１に記載のセキュリティデバイス。
【請求項３】
前記回路は、前記インターフェースを介して前記専用デバイスドライバーと前記不揮発性メモリデバイスとの間の通信を確立することにより前記セキュリティコマンドを実行するように設定されることを特徴とする、請求項１に記載のセキュリティデバイス。
【請求項４】
前記回路は、前記セキュリティデバイス用のリクエストを内部的に作成し、前記インターフェースを介して前記専用デバイスドライバーが前記リクエストを取得するように、前記回路が信号を生成して前記専用デバイスドライバーに送信することに設定されることを特徴とする、請求項１に記載のセキュリティデバイス。
【請求項５】
前記回路は、前記セキュリティコマンドの実行が完了する時のコマンド応答を準備し、前記アプリケーションプログラムで前記コマンド応答の読み込みが可能であることを前記アプリケーションプログラムに指示するように設定されることを特徴とする、請求項１に記載のセキュリティデバイス。
【請求項６】
ホストにセキュリティサービスを提供するセキュリティデバイスと、
前記ホストで動作される専用デバイスドライバーと、
を備え、
前記専用デバイスドライバーは、前記セキュリティデバイスと前記セキュリティデバイスの外部の不揮発性メモリ（ＮＶＭ）デバイスとの間を媒介するように設定され、前記セキュリティデバイスは、前記ホストで動作されるアプリケーションプログラムからのセキュリティコマンドを受信して、前記専用デバイスドライバーを介して前記アプリケーションプログラムに透過的に接続される前記不揮発性メモリデバイスにアクセスすることにより、前記セキュリティコマンドを実行するように設定され、前記ホストがマスターで前記セキュリティデバイスがスレーブであるインターフェースを介して前記アプリケーションプログラム及び前記専用デバイスドライバーの両方と、前記セキュリティデバイスと通信するように設定され、前記セキュリティデバイスが前記専用デバイスドライバーに、データを前記不揮発性メモリデバイスに書き込む、又は前記不揮発性メモリデバイスのデータを読み込むようにリクエストするように設定されることを特徴とする、セキュリティ設備。
【請求項７】
前記セキュリティデバイスと、前記専用デバイスドライバーと、前記不揮発性メモリデバイスとは、それぞれトラステッド・コンピューティング・グループ（ＴＣＧ）のセキュア標準に準拠されることを特徴とする、請求項６に記載のセキュリティ設備。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本出願は、２０１４年７月２４日に出願の米国仮特許出願第６２／０２８，３４５号の利益を主張し、その全開示を参照により本明細書に組み入れることとする。
【０００２】
本発明は、主に安全なコンピューティング環境に関し、特にトラステッド・コンピューティング（ｔｒｕｓｔｅｄ  ｃｏｍｐｕｔｉｎｇ）のための方法及びシステムに関するものである。
【背景技術】
【０００３】
トラステッド・コンピューティングは、コンピューティングシステムのセキュリティ技術の一種で、例えば、トラステッド・コンピューティング・グループ（Ｔｒｕｓｔｉｎｇ  Ｃｏｍｐｕｔｉｎｇ  Ｇｒｏｕｐ  ，ＴＣＧ）により開発及び促進されている。トラステッド・コンピューティングにより、コンピューターの挙動が暗号化及び他のセキュリティ技術の応用により実行されている。例えば、参照としてその全体が本明細書に組み込まれる米国特許公開第２００５／００２１９６８号において説明されているセキュアファームウェアアップデートの提供方法（ａ  ｍｅｔｈｏｄ  ｆｏｒ  ｐｒｏｖｉｄｉｎｇ  ａ  ｓｅｃｕｒｅ  ｆｉｒｍｗａｒｅ  ｕｐｄａｔｅ）において、第１認証クレデンシャルは、セキュアトークン、例えば、トラステッド・プラットフォーム・モジュール（ｔｒｕｓｔｅｄ  ｐｌａｔｆｏｒｍ  ｍｏｄｕｌｅ）（ＴＰＭ）により生成されたキーを用いて暗号化形式でプラットフォームに安全に格納されている。プラットフォームの設定がインプリントされて（ｉｍｐｒｉｎｔｅｄ）、例えば、同一の設定は、プラットフォーム設定に対するキーを封止することにより、第１認証クレデンシャルの復号化のためのキーにアクセスすることが必要である。次のファームウェアアップデートプロセスの期間では、第２認証クレデンシャルを有するファームウェアアップデートイメージがプラットフォームで受信されている。プラットフォーム設定はキーが封止されるときと同一である場合、キーが解除され且つ第１認証クレデンシャルの復号化に用いられる。続いて、第１認証クレデンシャルの公開鍵（ｐｕｂｌｉｃ  ｋｅｙ）は第２認証クレデンシャルを介してファームウェアアップデートイメージに使用されている。
【０００４】
もう一つの例として、コンピューターのデータを保護するための方法及びシステムは、参照としてその全体が本明細書に組み込まれる米国特許公開第２００３／００６１４９４号において説明されている。提供されるコンピューターは、プレオペレーティングシステム（ｐｒｅ−ｏｐｅｒａｔｉｎｇ  ｓｙｓｔｅｍ，ｐｒｅ−ＯＳ）スペース及び存在オペレーティングシステム（ｏｐｅｒａｔｉｎｇ  ｓｙｓｔｅｍ−ｐｒｅｓｅｎｔ，ＯＳ−ｐｒｅｓｅｎｔ）スペースを有する。保護ストレージはトラステッド・プラットフォーム・モジュール（ＴＰＭ）を介してｐｒｅ−ＯＳスペースからアクセスされている。同様に、保護ストレージはＴＰＭを介してＯＳ−ｐｒｅｓｅｎｔスペースからアクセスされている。これにより、コンピューターはｐｒｅ−ＯＳスペース及びＯＳ−ｐｒｅｓｅｎｔスペースによって保護ストレージに格納するデータが権限のないユーザーにアクセスされることを防止することができる。。
【発明の概要】
【０００５】
本発明の実施例では、ホストへのセキュリティサービスを提供するように、セキュリティデバイスのための方法を提供し、その方法は、ホストで動作されるアプリケーションプログラムからのセキュリティコマンドを受信することを含む。セキュリティコマンドは、専用デバイスドライバーを介してアプリケーションプログラムに透過的に（ｔｒａｎｓｐａｒｅｎｔｌｙ）接続されるように、セキュリティデバイスの外部の不揮発性メモリ（ＮＶＭ）デバイスにアクセスすることにより実行され、その専用デバイスドライバーはホストで動作され、ＮＶＭデバイスとセキュリティデバイスとの間を媒介する。
【０００６】
いくつかの実施例において、セキュリティデバイスと、専用デバイスドライバーと、ＮＶＭデバイスとは、それぞれトラステッド・コンピューティング・グループ（ＴＣＧ）のセキュア標準に準拠される。もう一つの実施例において、セキュリティデバイスは、前記専用デバイスドライバー及び少なくとも一部のＮＶＭデバイスのストレージスペースとともに、ＴＣＧの仕様に基づいてトラステッド・プラットフォーム・モジュール（ＴＰＭ）を実行する。
【０００７】
一実施例において、セキュリティコマンドの実行は、アプリケーションプログラムと専用デバイスドライバーとの間に通信して、ホストがマスターでセキュリティデバイスがスレーブであるインターフェースを介してセキュリティデバイスと通信することを含む。もう一つの実施例において、セキュリティコマンドの実行は、インターフェースを介して専用デバイスドライバーとＮＶＭデバイスとの間に通信することを含む。もう一つの実施例において、セキュリティコマンドの実行は、セキュリティデバイスでデバイスドライバーにリクエストすることにより、ＮＶＭデバイスからのデータを書き込む又は読み込むことを含む。
【０００８】
いくつかの実施例において、デバイスドライバーへのリクエストは、セキュリティデバイスでリクエストを内部的に作成し、インターフェースを介してデバイスドライバーに送信することにより、リクエストを取得することを含む。もう一つの実施例において、デバイスドライバーへのリクエストは、セキュリティデバイスのレジスタでリクエストを作成し、デバイスドライバーでレジスタをポーリングすることによりリクエストを取得することを待つことを含む。
【０００９】
もう一つの実施例において、セキュリティコマンドの実行は、セキュリティデバイスでセキュリティコマンドの実行が完了する時のコマンド応答を準備し、アプリケーションプログラムでのコマンド応答の読み込みが可能であることをアプリケーションプログラムに指示すること含む。
【００１０】
本発明の実施例により、さらに一種のセキュリティデバイスを提供し、そのセキュリティデバイスは、ホストインターフェース及び回路を備える。ホストインターフェースはホストで動作され、アプリケーションプログラムからのセキュリティコマンドを受信するように設定される。回路はデバイスドライバーを介してアプリケーションプログラムに対して透過的に接続されるように、セキュリティデバイスの外部の不揮発性メモリ（ＮＶＭ）デバイスにアクセスすることにより、セキュリティコマンドを実行するように設定される。デバイスドライバーは、ホストで動作され、ＮＶＭデバイスとセキュリティデバイスとの間を媒介する。
【００１１】
本発明の実施例によれば、一種のセキュリティ設備を提供し、その設備はホストにセキュリティサービスを提供するセキュリティデバイスと、ホストで動作される専用デバイスドライバーとを備える。デバイスドライバーは、セキュリティデバイスとセキュリティデバイスの外部の不揮発性メモリ（ＮＶＭ）デバイスとの間を媒介するように設定される。セキュリティデバイスはホストで動作されるアプリケーションプログラムからのセキュリティコマンドを受信して、専用デバイスドライバーを介してアプリケーションプログラムに透過的に接続されるＮＶＭデバイスにアクセスすることにより、セキュリティコマンドを実行するように設定される。
【００１２】
本発明の実施例によれば、一種のコンピュータソフトウェア製品を提供し、その製品はプログラム指示が格納される有形な非一過性のコンピュータ可読媒体（ｔａｎｇｉｂｌｅ  ｎｏｎ−ｔｒａｎｓｉｔｏｒｙ  ｃｏｍｐｕｔｅｒ−ｒｅａｄａｂｌｅ  ｍｅｄｉｕｍ）を備える。その指示がホストのプロセッサにより読み込まれる場合、プロセッサはセキュリティデバイスとセキュリティデバイスの外部の不揮発性メモリ（ＮＶＭ）デバイスとの間を媒介するための専用デバイスドライバーを動作させセキュリティデバイスはホストで動作されるアプリケーションプログラムにセキュリティサービスを提供し、ＮＶＭデバイスは、専用デバイスドライバーを介してアプリケーションプログラムに透過的に接続される。
【図面の簡単な説明】
【００１３】
本発明は、添付図面を参照して、実施例の以下の詳細な説明から明らかになる。
【図１】本明細書に記載の実施例に係るコンピューティングシステムを概略的に示すブロック図である。
【図２】本明細書に記載の実施例に係るコンピューティングシステムでセキュリティサービスを提供する方法を概略的に示す流れ図である。
【発明を実施するための形態】
【００１４】
本発明の実施例では、本明細書に記載するコンピューティングシステムのセキュリティのための改善方法及びシステムを提供する。本明細書に記載の実施例において、セキュリティデバイスはホストのための暗号化コプロセッサ（ｃｏ−ｐｒｏｃｅｓｓｏｒ）として使われている。ホストは、セキュリティデバイスを用いてセキュリティサービスを提供するため、本明細書中で「アプリケーションプログラム」とも称される、セキュリティアプリケーションを動作させる。セキュリティアプリケーションは、セキュリティデバイスへセキュリティコマンドを送信して、セキュリティデバイスからのコマンド応答をそれぞれ受信する。
【００１５】
セキュリティアプリケーションが動作する場合、セキュリティデバイスは時に外部不揮発性メモリ（ＮＶＭ）デバイスにアクセスする必要がある。本開示の記載及び特許請求の範囲において、用語「ＮＶＭデバイス」は、電源が入ってない場合でも、その格納情報を保持するマルチタイムプログラマブルストレージデバイス（ｍｕｌｔｉ−ｔｉｍｅ  ｐｒｏｇｒａｍｍａｂｌｅ  ｓｔｏｒａｇｅ  ｄｅｖｉｃｅ）を意味する。例のＮＶＭデバイスは、フラッシュデバイス及び電気的消去可能読出し専用メモリ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ，ＥＥＰＲＯＭ）デバイスを含む。
【００１６】
開示の技術において、ホストは、セキュリティアプリケーションに対して透過的にセキュリティデバイスと外部ＮＶＭデバイスとの間を媒介するように、本明細書中で「デバイスドライバー」とも称される、専用デバイスドライバーを動作させる。デバイスドライバーは、セキュリティデバイスをデバイスドライバーを間隔的に介して外部ＮＶＭにアクセスすることができる。
【００１７】
専用デバイスドライバーは、ホストがマスターでセキュリティデバイスがスレーブ（ｓｌａｖｅ）であるインターフェースを介してセキュリティデバイスと通信する。スレーブとして、セキュリティデバイスはインターフェースを介してトランザクションを開始する、例えば、外部ＮＶＭにアクセスすることができない。よって、本文には、この困難を克服するためのいくつかのメカニズムが提供されている、即ち、スレーブとしても、セキュリティデバイスによってトランザクションを開始することが可能である。
【００１８】
例示的な実施例において、セキュリティデバイスはホストのセキュリティアプリケーションからのセキュリティコマンドを受信する。コマンドを実行して外部ＮＶＭデバイスに書き込み又は読み込みアクセスする必要がある場合、セキュリティデバイスは、デバイスドライバーを外部ＮＶＭデバイスにアクセスするようにリクエストする。いくつかの実施例において、セキュリティデバイスは内部でリクエストを作成して、生成された割込み信号によりリクエストが準備完了であることをデバイスドライバーに通知する。もう一つの実施例において、デバイスドライバーはセキュリティデバイスに位置するレジスタ又はメモリのポーリングによりリクエストを取得し、第１インターフェースを介してセキュリティデバイスからのリクエストを読み込んで、リクエストに応じて外部ＮＶＭからのデータを書き込み又は読み込む。デバイスドライバーは外部ＮＶＭから受信されたデータをセキュリティデバイスに提供する。
【００１９】
セキュリティデバイスは、セキュリティコマンドを実行するように、デバイスドライバーを介して外部ＮＶＭデバイスに多重アクセスサイクルをリクエストすることができる。例えば、セキュリティデバイスは、単一のセキュリティコマンドを実行するため、一つ又は複数の読み込み操作及び／又は一つ又は複数の書き込み操作をリクエストをすることができる。コマンドの実行に従って、セキュリティデバイスはコマンド応答をセキュリティアプリケーションに返信する。コマンド応答は、暗号化操作、エラーレポートなどの結果を含むことができる。
【００２０】
いくつかの実施例において、外部ＮＶＭは、コンピューティングシステムで付加的な目的のために使用される従来のＮＶＭデバイスを備えることができる。よって、コストを低減するように、セキュリティデバイスは、安全なストレージのための少なくとも一部の既存の（通常、安価な）ＮＶＭデバイスの使用により、内部ＮＶＭを有しない、又は小型のＮＶＭデバイスしか有しないように設計されることができる。
【００２１】
ホストは、ホストがマスターでセキュリティデバイスがスレーブであるインターフェースを介してセキュリティデバイスに通信されるため、インターフェースはバスマスタリング（ｂｕｓ  ｍａｓｔｅｒｉｎｇ）及びアービトレーション（ａｒｂｉｔｒａｔｉｏｎ）機能が必要せず、複雑度を低下させることができる。また、インターフェースはバスマスタリングのサポートがなくても使用可能である。
【システムの説明】
【００２２】
図１は本明細書に記載の実施例に係るコンピューティングシステム２０を概略的に示すブロック図である。システム２０は、第１インターフェース３２を介してセキュリティデバイス２８と通信し、且つ第２インターフェース４０を介して不揮発性メモリ（ＮＶＭ）デバイス３６と通信するホスト２０を備える。セキュリティデバイス２８をホストのための暗号化コプロセッサとする。
【００２３】
ホスト２４は、セキュリティアプリケーション４８及び専用デバイスドライバー５２を動作させ、セキュリティデバイス２８と共にホスト２４にトラステッド・コンピューティング及び他のセキュリティ対策を行うための必要な機能を提供するＣＰＵ４４を備える。セキュリティアプリケーション４８は、ホストで動作するオペレーティングシステム（ＯＳ）及び他のアプリケーションプログラムのためのセキュリティデバイス２８に対するコマンドアプリケーションプログラミングインタフェース（ｃｏｍｍｏｎ  ａｐｐｌｉｃａｔｉｏｎ  ｐｒｏｇｒａｍｍｉｎｇ  ｉｎｔｅｒｆａｃｅ）を提供する。
【００２４】
いくつかの実施例において、システム２０はテッド・コンピューティング・グループ（ＴＣＧ）で開発された標準によりトラステッド・コンピューティング・システムを実行する。このような実施例において、セキュリティデバイス２８は専用デバイスドライバー５２及び少なくとも一部のＮＶＭデバイス３６のストレージスペースとともに、トラステッド・プラットフォーム・モジュール（ＴＰＭ）を備えることができる。また、セキュリティアプリケーション４８はＴＣＧソフトウェアスタック（ＴＣＧ  Ｓｏｆｔｗａｒｅ  Ｓｔａｃｋ，ＴＳＳ）を備えることができる。例えば、ＴＰＭは、参照としてその全体が本明細書に組み込まれる、Ｖｅｒｓｉｏｎ  １．２，  Ｌｅｖｅｌ  ２，  Ｒｅｖｉｓｉｏｎ  １１６，  Ｍａｒｃｈ  １，  ２０１１の３部構成のＴＰＭの主要な仕様（ｔｈｒｅｅ−ｐａｒｔ  ＴＰＭ  ｍａｉｎ  ｓｐｅｃｉｆｉｃａｔｉｏｎｓ）に規定される。３部構成のＴＰＭの主要な仕様は、「第１部：ＴＰＭ設計の原則（ＴＰＭ  Ｍａｉｎ  Ｐａｒｔ  １  Ｄｅｓｉｇｎ  Ｐｒｉｎｃｉｐｌｅｓ）」と、「第２部：ＴＰＭ構造（ＴＰＭ  Ｍａｉｎ  Ｐａｒｔ  ２  ＴＰＭ  Ｓｔｒｕｃｔｕｒｅｓ）」と、「第３部：コマンド（ＴＰＭ  Ｍａｉｎ  Ｐａｒｔ  ３  Ｃｏｍｍａｎｄｓ）」とを含む。例えば、ＴＳＳは、参照としてその全体が本明細書に組み込まれる、ＴＣＧ  Ｓｏｆｔｗａｒｅ  Ｓｔａｃｋ  （ＴＳＳ）  Ｓｐｅｃｉｆｉｃａｔｉｏｎ  Ｖｅｒｓｉｏｎ  １．２，  Ｌｅｖｅｌ  １，  Ｅｒｒａｔａ  Ａ，  Ｐａｒｔ１：  Ｃｏｍｍａｎｄｓ  ａｎｄ  Ｓｔｒｕｃｔｕｒｅｓ，"  Ｍａｒｃｈ  ７，  ２００７に記載される。
【００２５】
いくつかの実施例において、トラステッド・コンピューティングはパーソナルコンピュータ（ＰＣ）システムで実行される。例えば、ＰＣクライアントのためのＴＣＧ標準は、参照としてその全体が本明細書に組み込まれる、Ｖｅｒｓｉｏｎ  １．２１，  Ｅｒｒａｔａ  Ｒｅｖｉｓｉｏｎ  １．００，  Ｆｅｂｒｕａｒｙ  ２４，  ２０１２  （Ｆｏｒ  ＴＰＭ  Ｆａｍｉｌｙ  １．２；  Ｌｅｖｅｌ  ２）の「従来のＢＩＯＳのためのＴＣＧ  ＰＣクライアント特定の実行仕様（ＴＣＧ  ＰＣ  Ｃｌｉｅｎｔ  Ｓｐｅｃｉｆｉｃ  Ｉｍｐｌｅｍｅｎｔａｔｉｏｎ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ  ｆｏｒ  Ｃｏｎｖｅｎｔｉｏｎａｌ  ＢＩＯＳ）」及びＶｅｒｓｉｏｎ  １．３，  Ｍａｒｃｈ  ２１，  ２０１３の「ＴＣＧ  ＰＣ  クライアント特定のＴＰＭインターフェース仕様（ＴＣＧ  ＰＣ  Ｃｌｉｅｎｔ  Ｓｐｅｃｉｆｉｃ  ＴＰＭ  Ｉｎｔｅｒｆａｃｅ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ  （ＴＩＳ））」に記載される。
【００２６】
例えば、セキュリティアプリケーション４８は情報を格納するようにシステムリソースのアクセスを制御するセキュアストレージサービスなどを提供する。いくつかの実施例において、セキュアストレージは、一定の所定条件下でアクセス可能であり、一つ又は複数のセキュアストレージ領域を定義することにより実行される。当該条件は、例えば、アドレス空間、システム状態、アクセス許可、物理的な存在の許可（ｐｈｙｓｉｃａｌ  ｐｒｅｓｅｎｃｅ  ａｕｔｈｏｒｉｚａｔｉｏｎ）及び／又は読み込み／書き込み保護を含む。
【００２７】
以下の説明では、セキュリティアプリケーション４８が、例えば、上記で規定されるＴＣＧ仕様のようにインターフェースセキュリティデバイス２８に直接に設計されると仮定した。
【００２８】
いくつかの実施例において、セキュリティアプリケーション４８は、インターフェース３２を介してセキュリティデバイス２８へセキュリティコマンドをそれぞれ送信することにより、（例えば、ホストのＯＳのための）セキュリティサービスを提供する。セキュリティコマンドが受信された場合、セキュリティデバイス２８を復号して、コマンドを実行する。少なく一部のセキュリティコマンドの実行は、例えば、機密情報を格納又は取得するために、ＮＶＭデバイスにアクセスすることを含む。いくつかの実施例において、セキュリティデバイスは内部の（通常、小型な）ＮＶＭを備える。もう一つの実施例において、内部ＮＶＭに加えて、又はその代わりに、セキュリティデバイスは、外部ＮＶＭ、例えば、他の目的のためのシステムに使用されるＮＶＭ３６にアクセスする。上述したように、セキュリティアプリケーション４８の他、ＣＰＵ４４はセキュリティデバイス２８とＮＶＭデバイス３６との間を媒介する専用デバイスドライバー５２を動作させる。デバイスドライバー５２は、セキュリティアプリケーション４８に透過的に接続されるように、セキュリティデバイス２８を外部ＮＶＭ３６に間接的にアクセスすることを提供する。
【００２９】
セキュリティデバイス２８は様々な方法でデバイスドライバー５２がＮＶＭ３６へのアクセスをリクエストすることができる。一実施例において、セキュリティデバイス２８はリクエストを内部的に作成して、例えば、予め定義されたレジスタに作成し、そして割込み信号を生成することにより、インターフェース３２を介してリクエストを読み込むようにデバイスドライバーに通知する。もう一つの実施例において、デバイスドライバーはセキュリティデバイス内のレジスタをポーリングすることにより、保留中のリクエストがあるかどうかを識別する。もう一つの実施例において、デバイスドライバー５２はセキュリティデバイス内のレジスタ値を、例えば、セキュリティアプリケーションがセキュリティデバイスへセキュリティコマンドを送信することに応じで確認する。
【００３０】
デバイスドライバー５２がセキュリティデバイスからの書き込みリクエストが受信される場合、デバイスドライバーはインターフェース４０を介して外部ＮＶＭ内のそれぞれのデータを格納する。いくつかの実施例において、セキュリティデバイスは、書き込みリクエスが発行される前、データを暗号化及び／又はデータを署名する。デバイスドライバー５２がセキュリティデバイスからの読み込みリクエストが受信される場合、デバイスドライバーはインターフェース４０を介して外部ＮＶＭからのリクエストされたデータを読み込んで、検索されたデータをインターフェース３２を介してセキュリティデバイスへ受信する。検索されたデータが暗号化且つ署名された場合、セキュリティデバイスはデータを認証且つ暗号化することができる。
【００３１】
インターフェース３２及び４０は任意の適宜なインターフェースを備えることができる。インターフェース３２は、例えば、低ピン数バス（Ｌｏｗ  Ｐｉｎ  Ｃｏｕｎｔ  ｂｕｓ，ＬＰＣ）、シリアル・ペリフェラル・インタフェース（Ｓｅｒｉａｌ  ｐｅｒｉｐｈｅｒａｌ  Ｉｎｔｅｒｆａｃｅ，ＳＰＩ）又は集積回路間（Ｉｎｔｅｒ−Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ，Ｉ２ｃ）バスを備えることができる。インターフェース３２は、例えば、低ピン数バス（ＬＰＣ）、シリアル・ペリフェラル・インタフェースＳＰＩ）又は集積回路間バスを備えることができる。インターフェース４０は、例えば、ＳＰＩを備えることができる。いくつかの実施例において、インターフェース３２及び４０は独立した（同一又は異なる）インターフェースを備えることができる。もう一つの実施例において、インターフェース３２及び４０は同一インターフェース、或いは一つ又は複数のインターフェース信号を共有することを含むことができる。
【００３２】
図１の下部には、セキュリティデバイス２８のブロック図が示されている。この例では、セキュリティデバイス２８は、内部バス６２を介してセキュリティデバイスの複数の部材が相互に接続されるマイクロコントローラ６０を備える。マイクロコントローラ６０をセキュリティデバイスの主制御ユニットとする。セキュリティデバイス２８は、インターフェース３２を介してホストと通信するためのホスト・インターフェース・モジュール６４を備える。
【００３３】
マイクロコントローラ６０はホストインターフェース６４を介して受信されたセキュリティコマンドを受け付けて、必要に応じてセキュリティデバイス内の他の部材を適切に使用することによりそのコマンドを実行可能にする。システム管理モジュール６６はデバイス部材の操作、例えば、電源分配、クロック信号及び割込み信号のために必要なさまざまな信号を提供する。いくつかの実施例において、モジュール６６は例えば、タイムスタンプデータ（ｔｉｍｅ−ｓｔａｍｐｉｎｇ  ｄａｔａ）に使用可能である一つ又は複数のタイマーを備える。
【００３４】
セキュリティデバイス２８は一時データを格納し、マイクロコントローラ６０のための指示をコード化可能であるランダムアクセスメモリ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ，ＲＡＭ）６８を備える。リードオンリーメモリ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ，ＲＯＭ）モジュール７２はマイクロコントローラ６０のためのコード化指示を格納する。ＲＯＭ７２はさまざまな定数値を格納することができる。ワンタイムプログラマブル（Ｏｎｅ  Ｔｉｍｅ  Ｐｒｏｇｒａｍｍａｂｌｅ，ＯＴＰ）メモリ７６はセキュリティデバイス構成、及び製造時に決定され、各セキュリティデバイス毎に唯一のシークレットキーを格納する。いくつかの実施例において、セキュリティデバイスは、例えば、ＯＴＰメモリ７６の代わり、又はその他、内部機密の格納にも使用可能なＥＥＰＲＯＭ及び／又は物理的複製困難関数（Ｐｈｙｓｉｃａｌ  Ｕｎｃｌｏｎａｂｌｅ  Ｆｕｎｃｔｉｏｎ，ＰＵＦ）を備える。
【００３５】
セキュリティデバイス２８は、さまざまな暗号化関数及びアルゴリズムをサポートする暗号化エンジン８０をさらに備える。いくつかの実施例において、暗号化エンジン８０は暗号プリミティブ及びアルゴリズム、例えば、乱数生成（Ｒａｎｄｏｍ  Ｎｕｍｂｅｒ  Ｇｅｎｅｒａｔｉｏｎ，ＲＮＧ）、高度暗号化標準（Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ，ＡＥＳ）のような暗号化／復号化アルゴリズム（ｅｎｃｒｙｐｔｉｏｎ／ｄｅｃｒｙｐｔｉｏｎ  ａｌｇｏｒｉｔｈｍｓ）、公開鍵暗号（ｐｕｂｌｉｃ−ｋｅｙ  ｅｎｃｒｙｐｔｉｏｎ）のための非対称暗号（Ｒｉｖｅｓｔ−Ｓｈａｍｉｒ−Ａｄｌｅｍａｎ，ＲＳＡ）暗号システム、誤り訂正符号化／復号化（Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｏｎ  Ｃｏｄｉｎｇ／Ｄｅｃｏｄｉｎｇ）及びセキュアハッシュアルゴリズム（Ｓｅｃｕｒｅ  Ｈａｓｈ  Ａｌｇｏｒｉｔｈｍ）（ＳＨＡ−２５６）のような暗号ハッシュ関数（ｃｒｙｐｔｏｇｒａｐｈｉｃ  ｈａｓｈ  ｆｕｎｃｔｉｏｎｓ）をサポートする。暗号化エンジン８０はコア暗号化関数、例えば、暗号化／復号化、署名及び認証を提供する。
【ＰＣクライアントのトラステッド・コンピューティング】
【００３６】
いくつかの実施例において、図１のシステム２０はＰＣシステムを備える。下記の表１には、上記のＴＣＧ仕様に基づいて、システム２０の様々な部材とＰＣクライアントに対応する部材との間の関係が表示されている。
【００３７】
【表１】
0006538610.tif 000002
表１：ＴＣＧ仕様に基づいて、システム２０の部材とＰＣクライアントに対応する部材との間の関係
【００３８】
図１に示したシステム２０及びセキュリティデバイス２８の構成は、単に概念的な明確化のために示される例示的な構成である。代わりに、任意の適切なコンピューティングシステム及びセキュリティデバイスの構成も使用可能である。本発明の原理の理解に必要ではない部材、例えば、さまざまなインターフェース、制御回路、アドレス指定回路、タイミング且つシーケンス回路、デバッグ回路は、明確にするために図面から省略される。
【００３９】
図１に示した例のシステム構成では、ＣＰＵ４４、セキュリティデバイス２８及びＮＶＭデバイス３６は独立した集積回路（ＩＣｓ）として実行される。しかし、代替の実施例において、ＣＰＵ、セキュリティデバイスおよびＮＶＭデバイスの少なくとも２つは単一のマルチチップパッケージ（Ｍｕｌｔｉ−Ｃｈｉｐ  Ｐａｃｋａｇｅ，ＭＣＰ）又はシステムオンチップ（Ｓｙｓｔｅｍ  ｏｎ  Ｃｈｉｐ，ＳｏＣ）内の独立した半導体ダイ上に集積され、内部バスにより相互に接続されることができる。
【００４０】
セキュリティデバイス２８の異なる部材は任意の適切なハードウェア、例えば、特定用途向け集積回路（Ａｐｐｌｉｃａｔｉｏｎ−Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ，ＡＳＩＣ）又はフィールド・プログラマブル・  ゲート・アレイ（Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ，ＦＰＧＡ）により実行されることができる。いくつかの実施例において、セキュリティデバイスの一部の部材はソフトウェア又はハードウェアとソフトウェアとのコンビネーションにより実行される。例えば、本実施例において、暗号化エンジン８０及びシステム管理モジュール６６は専用ハードウェアモジュールとして実行される。もう一つの実施例として、署名計算及び暗号化／復号化関数は暗号化エンジン８０内のハードウェア、マイクロコントローラ６０で実行のソフトウェア、又はハードウェアとソフトウェアとのコンビネーションで実行される。
【００４１】
以下の説明および特許請求の範囲では、ホストインターフェース６４を含まない、セキュリティデバイスのさまざまな部材を集合的に称する。
【００４２】
通常には、ＣＰＵ４４及びホスト２４は本明細書に記載の機能を実行するようにソフトウェアでプログラムされる汎用プロセッサを備える。ソフトウェアは、例えば、ネットワークを介して電子の形式でプロセッサにダウンロードされ、又はそれを一時的でない有形の媒体（ｎｏｎ−ｔｒａｎｓｉｔｏｒｙ  ｔａｎｇｉｂｌｅ  ｍｅｄｉａ）、例えば、磁気メモリ、光メモリ又は電子メモリで代替的にまたは付加的に提供及び／又は格納されることができる。
【セキュリティデバイスによる実行の例示的な方法】
【００４３】
図２本明細書に記載の実施例に係るコンピューティングシステムでセキュリティサービスを提供する方法を概略的に示す流れ図である。その方法は、例えば、図１のセキュリティデバイス２８により実行されることができる。説明の方法において、セキュリティデバイスは、コンピューティングシステムの一部、例えば、（又は、類似した）図１のシステム２０であると仮定した。
【００４４】
その方法は、受信ステップ１００でセキュリティデバイス２８により（インターフェース３２を介してホストに接続する）ホスト・インターフェース・モジュール６４を介してセキュリティコマンドを受信するように始める。セキュリティコマンドはセキュリティアプリケーション４８から発信して、セキュリティデバイスにより提供される一つ又は複数の暗号化サービスを識別する。復号化ステップ１０４では、セキュリティデバイスがセキュリティコマンドを復号化することを事前実行の段階（ｐｒｅ−ｅｘｅｃｕｔｉｏｎ  ｐｈａｓｅ）とする。復号化の結果は、通常にリクエストされたサービスの形式及び一つ又は複数のパラメーター、例えば、それぞれの暗号化プリミティブを識別し、アドレス指定するパラメーター、サービスなどを適用するデータに関するサイズ情報を含む。
【００４５】
コマンドを実行するため、セキュリティデバイスは外部ＮＶＭにアクセスする必要がある場合がある。セキュリティデバイスはコマンドのパラメーターに基づいて外部ＮＶＭにアクセスを決定可能である。代替的にまたは付加的に、その決定は、外部ＮＶＭに保存される内部フラグ、変数及び他のデータに応じることができ、セキュリティデバイスへの要求により復元することができる。
【００４６】
書き込み確認ステップ１０６では、セキュリティデバイスは、実行したコマンドが外部ＮＶＭにアクセスする必要があるかどうかを確認する。セキュリティデバイスが外部ＮＶＭにデータを書き込む必要がある場合、この方法は暗号化及び署名のステップ１０８に移る。この例では、コマンドのパラメーターは平文データ（ｐｌａｉｎｔｅｘｔ  ｄａｔａ）を含み、且つセキュリティデバイスは、セキュリティコマンドで規定されるように、例えば、暗号化エンジン８０により平文データを暗号化及び／又は署名する。次のステップ１０８は、暗号化及び署名されたデータを外部ＮＶＭに格納する。
【００４７】
書き込みリクエストステップ１１２では、セキュリティデバイスはデバイスドライバー５２がステップ１０８のデータ結果を外部ＮＶＭに格納することをリクエストする。上述したように、セキュリティデバイスはインターフェース３２のスレーブとして操作し、且つ上述したように、さまざまな方式、例えば、ホストへの割込み信号の生成でストレージの操作をリクエストすることができる。そのリクエストに応じて、デバイスドライバーは、ステップ１０８でインターフェース３２を介してセキュリティデバイスからの暗号化及び署名されたデータを読み込んで、インターフェース４０を介して外部ＮＶＭにデータを格納する。
【００４８】
セキュリティデバイスがステップ１０６で外部ＮＶＭに書き込むことがリクエストされていない場合、この方法は読み込み確認ステップ１１４に移る。ステップ１１４は、実行したコマンドが外部ＮＶＭに読み込みアクセスする必要があるかどうかを確認する。必要がある場合、その方法は読み込みリクエストステップ１１６に移る。ステップ１１６において、セキュリティデバイスはデバイスドライバー５２にリクエストすることで外部ＮＶＭからのデータを読み込む。読み込むリクエストに応じて、デバイスドライバーはインターフェース４０を介して外部ＮＶＭ３６からリクエストされたデータを読み込んで、インターフェース３２を介してセキュリティデバイスへ検索されたデータを送信する。暗号化と認証ステップ１２０では、セキュリティデバイスは、例えば、暗号化エンジン８０により読み込みデータを認証及び暗号化する。
【００４９】
次のステップ１１２又は１２０は、又はステップ１１４で確認した結果が否定である場合、その方法は継続のコマンド実行ステップ１２４に移る。ステップ１２４では、セキュリティデバイスは、外部ＮＶＭから受信されたデータによりセキュリティコマンド、又はその一部をを実行することができる。ループ終了ステップ１２６において、セキュリティデバイスは、コマンドの実行が完了するように外部ＮＶＭにさらにアクセスする必要があるかどうかを確認する。さらにアクセスが必要である場合、その方法はステップ１０６にループバックする。必要はない場合、その方法は応答準備ステップ１２８に移る。
【００５０】
ステップ１２８では、セキュリティデバイスはコマンド応答を準備し、それは、例えば、暗号関数、エラーレポート等の結果を含む。応答通知ステップ１３２において、セキュリティデバイスは、コマンド応答の準備が完了することをセキュリティアプリケーションに通知する。上述したデバイスドライバーのリクエストのための方法のように、セキュリティデバイスは、例えば、割込み信号の生成によりセキュリティアプリケーションに通知し、又はセキュリティアプリケーションはセキュリティデバイス内の定義済みレジスタをポーリングすることができる。続いて、セキュリティアプリケーションはインターフェース３２を介してセキュリティデバイスからのコマンド応答を読み込んで、その方法が完了する。
【００５１】
図２の方法が例として与えられているが、他の適切な方法も適用することができる。例えば、いくつかの実施例において、セキュリティコマンドは外部ＮＶＭへの平文書き込み、又は外部ＮＶＭからの平文読み込みを指示することができる。その実施例において、ステップ１０８及び１２０を省略することができる。
【００５２】
上述した実施例はコンピューティングシステム、例えば、ＰＣを主に参照するが、同様の実施例は他のコンピューティングシステム、例えば、モバイルデバイス、モノのインターネット、スマートメータ（ｓｍａｒｔ  ｍｅｔｅｒｉｎｇ）、自動車用及び工業用システム／環境で行われることができる。
【００５３】
本願に開示された技術は、さまざまなセキュアストレージアプリケーション、例えば、セキュアブート又はトラステッドブートに使用されることができる。例えば、トラステッド・コンピューティング・グループ（ＴＣＧ）は、Ｗｉｎｄｏｗｓ  ８オペレーティングシステムに含まれるセキュアブート機能をサポートするユニファイド・エクステンシブル・ファームウェア・インタフェース（Ｕｎｉｆｉｅｄ  Ｅｘｔｅｎｓｉｂｌｅ  Ｆｉｒｍｗａｒｅ  Ｉｎｔｅｒｆａｃｅ，ＵＥＦＩ）を規定する。他の例として、Ｃｈｒｏｍｉｕｍオペレーティングシステムはトラステッドブート解決策とするベリファイドブート機能を含む。その機能は、本明細書に記載される方法及びシステムにより実行されることができる。
【００５４】
上述の実施形態は例示的に引用するものであり、本発明は、上述に具体的に示した又は説明した内容に制限的ではないと理解されるべきである。むしろ、本発明の範囲は、本明細書において上述したさまざまな特徴の組み合わせまたはサブコンビネーションの双方を含み、さらに、当業者が前述の説明を読むことによって想到し得る、先行技術において開示されていない変更及び修正を含む。本特許出願に参照により組み込まれる文献は、本出願の統合された一部とみなされるべきであるが、これらの組み込まれた文書で定義されている任意の用語が本明細書に明示的または暗黙的に使用される定義と矛盾する場合は、本明細書において使用される定義のみが考慮されるべきである。
【符号の説明】
【００５５】
２０：コンピューティングシステム
２４：ホスト
２８：セキュリティデバイス
３２、４０：インターフェース
３６：不揮発性メモリデバイス
４４：ＣＰＵ
４８：セキュリティアプリケーション
５２：専用デバイスドライバー
６０：マイクロコントローラ
６２：内部バス
６４：ホスト・インターフェース・モジュール
６６：システム管理モジュール
６８：ランダムアクセスメモリ
７２：ＲＯＭ
７６：ＯＴＰメモリ
８０：暗号化エンジン
１００、１０４、１０６、１０８、１１２、１１４、１１６、１２０、１２４、１２６、１２８、１３２：ステップ
【図１】
0006538610.tif 000003
【図２】
0006538610.tif 000004