特許第6538610号(P6538610)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ヌヴォトン テクノロジー コーポレーションの特許一覧

特許6538610外部不揮発性メモリに間接アクセスするセキュリティデバイス
<>
  • 特許6538610-外部不揮発性メモリに間接アクセスするセキュリティデバイス 図000003
  • 特許6538610-外部不揮発性メモリに間接アクセスするセキュリティデバイス 図000004
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6538610
(24)【登録日】2019年6月14日
(45)【発行日】2019年7月3日
(54)【発明の名称】外部不揮発性メモリに間接アクセスするセキュリティデバイス
(51)【国際特許分類】
   G06F 21/57 20130101AFI20190625BHJP
   G06F 21/60 20130101ALI20190625BHJP
【FI】
   G06F21/57 320
   G06F21/60
【請求項の数】7
【外国語出願】
【全頁数】14
(21)【出願番号】特願2016-99154(P2016-99154)
(22)【出願日】2016年5月17日
(65)【公開番号】特開2017-33537(P2017-33537A)
(43)【公開日】2017年2月9日
【審査請求日】2016年5月17日
(31)【優先権主張番号】14/714,298
(32)【優先日】2015年5月17日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】508236572
【氏名又は名称】ヌヴォトン テクノロジー コーポレーション
(74)【代理人】
【識別番号】100089026
【弁理士】
【氏名又は名称】木村 高明
(74)【代理人】
【識別番号】516145758
【氏名又は名称】中村 恒幸
(72)【発明者】
【氏名】ジヴ ハーシュマン
(72)【発明者】
【氏名】ダン モラヴ
【審査官】 行田 悦資
(56)【参考文献】
【文献】 特開2008−234217(JP,A)
【文献】 特開2005−317025(JP,A)
【文献】 特開2006−338615(JP,A)
【文献】 特開平05−314013(JP,A)
【文献】 国際公開第2014/139162(WO,A1)
【文献】 特開2006−054895(JP,A)
【文献】 特開2014−153822(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/57
G06F 21/60
(57)【特許請求の範囲】
【請求項1】
ホストで動作されるアプリケーションプログラムからのセキュリティコマンドを受信するように設定されるホストインターフェースと、
専用デバイスドライバーを介して透過的に接続されるセキュリティデバイスの外部の不揮発性メモリ(NVM)デバイスにアクセスすることにより、前記セキュリティコマンドを実行するように設定される回路と、
を備え、
前記専用デバイスドライバーは、前記ホストで動作され、前記不揮発性メモリデバイスと前記セキュリティデバイスとの間を媒介し、
前記回路は、前記ホストがマスターで前記セキュリティデバイスがスレーブであるインターフェースを介して前記アプリケーションプログラム及び前記専用デバイスドライバーの両方と、前記セキュリティデバイスとの間の通信を確立することにより前記セキュリティコマンドを実行するように設定され、前記回路が前記専用デバイスドライバーに、データを前記不揮発性メモリデバイスに書き込む、又は前記不揮発性メモリデバイスのデータを読み込むようにリクエストするように設定されることを特徴とする、セキュリティデバイス。
【請求項2】
前記セキュリティデバイスと、前記専用デバイスドライバーと、前記専用デバイスドライバー及び少なくとも一部の前記不揮発性メモリデバイスのストレージスペースと一緒に、トラステッド・コンピューティング・グループの仕様に基づいてトラステッド・プラットフォーム・モジュール(TPM)として実行することを特徴とする、請求項1に記載のセキュリティデバイス。
【請求項3】
前記回路は、前記インターフェースを介して前記専用デバイスドライバーと前記不揮発性メモリデバイスとの間の通信を確立することにより前記セキュリティコマンドを実行するように設定されることを特徴とする、請求項1に記載のセキュリティデバイス。
【請求項4】
前記回路は、前記セキュリティデバイス用のリクエストを内部的に作成し、前記インターフェースを介して前記専用デバイスドライバーが前記リクエストを取得するように、前記回路が信号を生成して前記専用デバイスドライバーに送信することに設定されることを特徴とする、請求項1に記載のセキュリティデバイス。
【請求項5】
前記回路は、前記セキュリティコマンドの実行が完了する時のコマンド応答を準備し、前記アプリケーションプログラムで前記コマンド応答の読み込みが可能であることを前記アプリケーションプログラムに指示するように設定されることを特徴とする、請求項1に記載のセキュリティデバイス。
【請求項6】
ホストにセキュリティサービスを提供するセキュリティデバイスと、
前記ホストで動作される専用デバイスドライバーと、
を備え、
前記専用デバイスドライバーは、前記セキュリティデバイスと前記セキュリティデバイスの外部の不揮発性メモリ(NVM)デバイスとの間を媒介するように設定され、前記セキュリティデバイスは、前記ホストで動作されるアプリケーションプログラムからのセキュリティコマンドを受信して、前記専用デバイスドライバーを介して前記アプリケーションプログラムに透過的に接続される前記不揮発性メモリデバイスにアクセスすることにより、前記セキュリティコマンドを実行するように設定され、前記ホストがマスターで前記セキュリティデバイスがスレーブであるインターフェースを介して前記アプリケーションプログラム及び前記専用デバイスドライバーの両方と、前記セキュリティデバイスと通信するように設定され、前記セキュリティデバイスが前記専用デバイスドライバーに、データを前記不揮発性メモリデバイスに書き込む、又は前記不揮発性メモリデバイスのデータを読み込むようにリクエストするように設定されることを特徴とする、セキュリティ設備。
【請求項7】
前記セキュリティデバイスと、前記専用デバイスドライバーと、前記不揮発性メモリデバイスとは、それぞれトラステッド・コンピューティング・グループ(TCG)のセキュア標準に準拠されることを特徴とする、請求項6に記載のセキュリティ設備
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
本出願は、2014年7月24日に出願の米国仮特許出願第62/028,345号の利益を主張し、その全開示を参照により本明細書に組み入れることとする。
【0002】
本発明は、主に安全なコンピューティング環境に関し、特にトラステッド・コンピューティング(trusted computing)のための方法及びシステムに関するものである。
【背景技術】
【0003】
トラステッド・コンピューティングは、コンピューティングシステムのセキュリティ技術の一種で、例えば、トラステッド・コンピューティング・グループ(Trusting Computing Group ,TCG)により開発及び促進されている。トラステッド・コンピューティングにより、コンピューターの挙動が暗号化及び他のセキュリティ技術の応用により実行されている。例えば、参照としてその全体が本明細書に組み込まれる米国特許公開第2005/0021968号において説明されているセキュアファームウェアアップデートの提供方法(a method for providing a secure firmware update)において、第1認証クレデンシャルは、セキュアトークン、例えば、トラステッド・プラットフォーム・モジュール(trusted platform module)(TPM)により生成されたキーを用いて暗号化形式でプラットフォームに安全に格納されている。プラットフォームの設定がインプリントされて(imprinted)、例えば、同一の設定は、プラットフォーム設定に対するキーを封止することにより、第1認証クレデンシャルの復号化のためのキーにアクセスすることが必要である。次のファームウェアアップデートプロセスの期間では、第2認証クレデンシャルを有するファームウェアアップデートイメージがプラットフォームで受信されている。プラットフォーム設定はキーが封止されるときと同一である場合、キーが解除され且つ第1認証クレデンシャルの復号化に用いられる。続いて、第1認証クレデンシャルの公開鍵(public key)は第2認証クレデンシャルを介してファームウェアアップデートイメージに使用されている。
【0004】
もう一つの例として、コンピューターのデータを保護するための方法及びシステムは、参照としてその全体が本明細書に組み込まれる米国特許公開第2003/0061494号において説明されている。提供されるコンピューターは、プレオペレーティングシステム(pre−operating system,pre−OS)スペース及び存在オペレーティングシステム(operating system−present,OS−present)スペースを有する。保護ストレージはトラステッド・プラットフォーム・モジュール(TPM)を介してpre−OSスペースからアクセスされている。同様に、保護ストレージはTPMを介してOS−presentスペースからアクセスされている。これにより、コンピューターはpre−OSスペース及びOS−presentスペースによって保護ストレージに格納するデータが権限のないユーザーにアクセスされることを防止することができる。。
【発明の概要】
【0005】
本発明の実施例では、ホストへのセキュリティサービスを提供するように、セキュリティデバイスのための方法を提供し、その方法は、ホストで動作されるアプリケーションプログラムからのセキュリティコマンドを受信することを含む。セキュリティコマンドは、専用デバイスドライバーを介してアプリケーションプログラムに透過的に(transparently)接続されるように、セキュリティデバイスの外部の不揮発性メモリ(NVM)デバイスにアクセスすることにより実行され、その専用デバイスドライバーはホストで動作され、NVMデバイスとセキュリティデバイスとの間を媒介する。
【0006】
いくつかの実施例において、セキュリティデバイスと、専用デバイスドライバーと、NVMデバイスとは、それぞれトラステッド・コンピューティング・グループ(TCG)のセキュア標準に準拠される。もう一つの実施例において、セキュリティデバイスは、前記専用デバイスドライバー及び少なくとも一部のNVMデバイスのストレージスペースとともに、TCGの仕様に基づいてトラステッド・プラットフォーム・モジュール(TPM)を実行する。
【0007】
一実施例において、セキュリティコマンドの実行は、アプリケーションプログラムと専用デバイスドライバーとの間に通信して、ホストがマスターでセキュリティデバイスがスレーブであるインターフェースを介してセキュリティデバイスと通信することを含む。もう一つの実施例において、セキュリティコマンドの実行は、インターフェースを介して専用デバイスドライバーとNVMデバイスとの間に通信することを含む。もう一つの実施例において、セキュリティコマンドの実行は、セキュリティデバイスでデバイスドライバーにリクエストすることにより、NVMデバイスからのデータを書き込む又は読み込むことを含む。
【0008】
いくつかの実施例において、デバイスドライバーへのリクエストは、セキュリティデバイスでリクエストを内部的に作成し、インターフェースを介してデバイスドライバーに送信することにより、リクエストを取得することを含む。もう一つの実施例において、デバイスドライバーへのリクエストは、セキュリティデバイスのレジスタでリクエストを作成し、デバイスドライバーでレジスタをポーリングすることによりリクエストを取得することを待つことを含む。
【0009】
もう一つの実施例において、セキュリティコマンドの実行は、セキュリティデバイスでセキュリティコマンドの実行が完了する時のコマンド応答を準備し、アプリケーションプログラムでのコマンド応答の読み込みが可能であることをアプリケーションプログラムに指示すること含む。
【0010】
本発明の実施例により、さらに一種のセキュリティデバイスを提供し、そのセキュリティデバイスは、ホストインターフェース及び回路を備える。ホストインターフェースはホストで動作され、アプリケーションプログラムからのセキュリティコマンドを受信するように設定される。回路はデバイスドライバーを介してアプリケーションプログラムに対して透過的に接続されるように、セキュリティデバイスの外部の不揮発性メモリ(NVM)デバイスにアクセスすることにより、セキュリティコマンドを実行するように設定される。デバイスドライバーは、ホストで動作され、NVMデバイスとセキュリティデバイスとの間を媒介する。
【0011】
本発明の実施例によれば、一種のセキュリティ設備を提供し、その設備はホストにセキュリティサービスを提供するセキュリティデバイスと、ホストで動作される専用デバイスドライバーとを備える。デバイスドライバーは、セキュリティデバイスとセキュリティデバイスの外部の不揮発性メモリ(NVM)デバイスとの間を媒介するように設定される。セキュリティデバイスはホストで動作されるアプリケーションプログラムからのセキュリティコマンドを受信して、専用デバイスドライバーを介してアプリケーションプログラムに透過的に接続されるNVMデバイスにアクセスすることにより、セキュリティコマンドを実行するように設定される。
【0012】
本発明の実施例によれば、一種のコンピュータソフトウェア製品を提供し、その製品はプログラム指示が格納される有形な非一過性のコンピュータ可読媒体(tangible non−transitory computer−readable medium)を備える。その指示がホストのプロセッサにより読み込まれる場合、プロセッサはセキュリティデバイスとセキュリティデバイスの外部の不揮発性メモリ(NVM)デバイスとの間を媒介するための専用デバイスドライバーを動作させセキュリティデバイスはホストで動作されるアプリケーションプログラムにセキュリティサービスを提供し、NVMデバイスは、専用デバイスドライバーを介してアプリケーションプログラムに透過的に接続される。
【図面の簡単な説明】
【0013】
本発明は、添付図面を参照して、実施例の以下の詳細な説明から明らかになる。
図1】本明細書に記載の実施例に係るコンピューティングシステムを概略的に示すブロック図である。
図2】本明細書に記載の実施例に係るコンピューティングシステムでセキュリティサービスを提供する方法を概略的に示す流れ図である。
【発明を実施するための形態】
【0014】
本発明の実施例では、本明細書に記載するコンピューティングシステムのセキュリティのための改善方法及びシステムを提供する。本明細書に記載の実施例において、セキュリティデバイスはホストのための暗号化コプロセッサ(co−processor)として使われている。ホストは、セキュリティデバイスを用いてセキュリティサービスを提供するため、本明細書中で「アプリケーションプログラム」とも称される、セキュリティアプリケーションを動作させる。セキュリティアプリケーションは、セキュリティデバイスへセキュリティコマンドを送信して、セキュリティデバイスからのコマンド応答をそれぞれ受信する。
【0015】
セキュリティアプリケーションが動作する場合、セキュリティデバイスは時に外部不揮発性メモリ(NVM)デバイスにアクセスする必要がある。本開示の記載及び特許請求の範囲において、用語「NVMデバイス」は、電源が入ってない場合でも、その格納情報を保持するマルチタイムプログラマブルストレージデバイス(multi−time programmable storage device)を意味する。例のNVMデバイスは、フラッシュデバイス及び電気的消去可能読出し専用メモリ(Electrically Erasable Programmable Read−Only Memory,EEPROM)デバイスを含む。
【0016】
開示の技術において、ホストは、セキュリティアプリケーションに対して透過的にセキュリティデバイスと外部NVMデバイスとの間を媒介するように、本明細書中で「デバイスドライバー」とも称される、専用デバイスドライバーを動作させる。デバイスドライバーは、セキュリティデバイスをデバイスドライバーを間隔的に介して外部NVMにアクセスすることができる。
【0017】
専用デバイスドライバーは、ホストがマスターでセキュリティデバイスがスレーブ(slave)であるインターフェースを介してセキュリティデバイスと通信する。スレーブとして、セキュリティデバイスはインターフェースを介してトランザクションを開始する、例えば、外部NVMにアクセスすることができない。よって、本文には、この困難を克服するためのいくつかのメカニズムが提供されている、即ち、スレーブとしても、セキュリティデバイスによってトランザクションを開始することが可能である。
【0018】
例示的な実施例において、セキュリティデバイスはホストのセキュリティアプリケーションからのセキュリティコマンドを受信する。コマンドを実行して外部NVMデバイスに書き込み又は読み込みアクセスする必要がある場合、セキュリティデバイスは、デバイスドライバーを外部NVMデバイスにアクセスするようにリクエストする。いくつかの実施例において、セキュリティデバイスは内部でリクエストを作成して、生成された割込み信号によりリクエストが準備完了であることをデバイスドライバーに通知する。もう一つの実施例において、デバイスドライバーはセキュリティデバイスに位置するレジスタ又はメモリのポーリングによりリクエストを取得し、第1インターフェースを介してセキュリティデバイスからのリクエストを読み込んで、リクエストに応じて外部NVMからのデータを書き込み又は読み込む。デバイスドライバーは外部NVMから受信されたデータをセキュリティデバイスに提供する。
【0019】
セキュリティデバイスは、セキュリティコマンドを実行するように、デバイスドライバーを介して外部NVMデバイスに多重アクセスサイクルをリクエストすることができる。例えば、セキュリティデバイスは、単一のセキュリティコマンドを実行するため、一つ又は複数の読み込み操作及び/又は一つ又は複数の書き込み操作をリクエストをすることができる。コマンドの実行に従って、セキュリティデバイスはコマンド応答をセキュリティアプリケーションに返信する。コマンド応答は、暗号化操作、エラーレポートなどの結果を含むことができる。
【0020】
いくつかの実施例において、外部NVMは、コンピューティングシステムで付加的な目的のために使用される従来のNVMデバイスを備えることができる。よって、コストを低減するように、セキュリティデバイスは、安全なストレージのための少なくとも一部の既存の(通常、安価な)NVMデバイスの使用により、内部NVMを有しない、又は小型のNVMデバイスしか有しないように設計されることができる。
【0021】
ホストは、ホストがマスターでセキュリティデバイスがスレーブであるインターフェースを介してセキュリティデバイスに通信されるため、インターフェースはバスマスタリング(bus mastering)及びアービトレーション(arbitration)機能が必要せず、複雑度を低下させることができる。また、インターフェースはバスマスタリングのサポートがなくても使用可能である。
【システムの説明】
【0022】
図1は本明細書に記載の実施例に係るコンピューティングシステム20を概略的に示すブロック図である。システム20は、第1インターフェース32を介してセキュリティデバイス28と通信し、且つ第2インターフェース40を介して不揮発性メモリ(NVM)デバイス36と通信するホスト20を備える。セキュリティデバイス28をホストのための暗号化コプロセッサとする。
【0023】
ホスト24は、セキュリティアプリケーション48及び専用デバイスドライバー52を動作させ、セキュリティデバイス28と共にホスト24にトラステッド・コンピューティング及び他のセキュリティ対策を行うための必要な機能を提供するCPU44を備える。セキュリティアプリケーション48は、ホストで動作するオペレーティングシステム(OS)及び他のアプリケーションプログラムのためのセキュリティデバイス28に対するコマンドアプリケーションプログラミングインタフェース(common application programming interface)を提供する。
【0024】
いくつかの実施例において、システム20はテッド・コンピューティング・グループ(TCG)で開発された標準によりトラステッド・コンピューティング・システムを実行する。このような実施例において、セキュリティデバイス28は専用デバイスドライバー52及び少なくとも一部のNVMデバイス36のストレージスペースとともに、トラステッド・プラットフォーム・モジュール(TPM)を備えることができる。また、セキュリティアプリケーション48はTCGソフトウェアスタック(TCG Software Stack,TSS)を備えることができる。例えば、TPMは、参照としてその全体が本明細書に組み込まれる、Version 1.2, Level 2, Revision 116, March 1, 2011の3部構成のTPMの主要な仕様(three−part TPM main specifications)に規定される。3部構成のTPMの主要な仕様は、「第1部:TPM設計の原則(TPM Main Part 1 Design Principles)」と、「第2部:TPM構造(TPM Main Part 2 TPM Structures)」と、「第3部:コマンド(TPM Main Part 3 Commands)」とを含む。例えば、TSSは、参照としてその全体が本明細書に組み込まれる、TCG Software Stack (TSS) Specification Version 1.2, Level 1, Errata A, Part1: Commands and Structures," March 7, 2007に記載される。
【0025】
いくつかの実施例において、トラステッド・コンピューティングはパーソナルコンピュータ(PC)システムで実行される。例えば、PCクライアントのためのTCG標準は、参照としてその全体が本明細書に組み込まれる、Version 1.21, Errata Revision 1.00, February 24, 2012 (For TPM Family 1.2; Level 2)の「従来のBIOSのためのTCG PCクライアント特定の実行仕様(TCG PC Client Specific Implementation Specification for Conventional BIOS)」及びVersion 1.3, March 21, 2013の「TCG PC クライアント特定のTPMインターフェース仕様(TCG PC Client Specific TPM Interface Specification (TIS))」に記載される。
【0026】
例えば、セキュリティアプリケーション48は情報を格納するようにシステムリソースのアクセスを制御するセキュアストレージサービスなどを提供する。いくつかの実施例において、セキュアストレージは、一定の所定条件下でアクセス可能であり、一つ又は複数のセキュアストレージ領域を定義することにより実行される。当該条件は、例えば、アドレス空間、システム状態、アクセス許可、物理的な存在の許可(physical presence authorization)及び/又は読み込み/書き込み保護を含む。
【0027】
以下の説明では、セキュリティアプリケーション48が、例えば、上記で規定されるTCG仕様のようにインターフェースセキュリティデバイス28に直接に設計されると仮定した。
【0028】
いくつかの実施例において、セキュリティアプリケーション48は、インターフェース32を介してセキュリティデバイス28へセキュリティコマンドをそれぞれ送信することにより、(例えば、ホストのOSのための)セキュリティサービスを提供する。セキュリティコマンドが受信された場合、セキュリティデバイス28を復号して、コマンドを実行する。少なく一部のセキュリティコマンドの実行は、例えば、機密情報を格納又は取得するために、NVMデバイスにアクセスすることを含む。いくつかの実施例において、セキュリティデバイスは内部の(通常、小型な)NVMを備える。もう一つの実施例において、内部NVMに加えて、又はその代わりに、セキュリティデバイスは、外部NVM、例えば、他の目的のためのシステムに使用されるNVM36にアクセスする。上述したように、セキュリティアプリケーション48の他、CPU44はセキュリティデバイス28とNVMデバイス36との間を媒介する専用デバイスドライバー52を動作させる。デバイスドライバー52は、セキュリティアプリケーション48に透過的に接続されるように、セキュリティデバイス28を外部NVM36に間接的にアクセスすることを提供する。
【0029】
セキュリティデバイス28は様々な方法でデバイスドライバー52がNVM36へのアクセスをリクエストすることができる。一実施例において、セキュリティデバイス28はリクエストを内部的に作成して、例えば、予め定義されたレジスタに作成し、そして割込み信号を生成することにより、インターフェース32を介してリクエストを読み込むようにデバイスドライバーに通知する。もう一つの実施例において、デバイスドライバーはセキュリティデバイス内のレジスタをポーリングすることにより、保留中のリクエストがあるかどうかを識別する。もう一つの実施例において、デバイスドライバー52はセキュリティデバイス内のレジスタ値を、例えば、セキュリティアプリケーションがセキュリティデバイスへセキュリティコマンドを送信することに応じで確認する。
【0030】
デバイスドライバー52がセキュリティデバイスからの書き込みリクエストが受信される場合、デバイスドライバーはインターフェース40を介して外部NVM内のそれぞれのデータを格納する。いくつかの実施例において、セキュリティデバイスは、書き込みリクエスが発行される前、データを暗号化及び/又はデータを署名する。デバイスドライバー52がセキュリティデバイスからの読み込みリクエストが受信される場合、デバイスドライバーはインターフェース40を介して外部NVMからのリクエストされたデータを読み込んで、検索されたデータをインターフェース32を介してセキュリティデバイスへ受信する。検索されたデータが暗号化且つ署名された場合、セキュリティデバイスはデータを認証且つ暗号化することができる。
【0031】
インターフェース32及び40は任意の適宜なインターフェースを備えることができる。インターフェース32は、例えば、低ピン数バス(Low Pin Count bus,LPC)、シリアル・ペリフェラル・インタフェース(Serial peripheral Interface,SPI)又は集積回路間(Inter−Integrated Circuit,I2c)バスを備えることができる。インターフェース32は、例えば、低ピン数バス(LPC)、シリアル・ペリフェラル・インタフェースSPI)又は集積回路間バスを備えることができる。インターフェース40は、例えば、SPIを備えることができる。いくつかの実施例において、インターフェース32及び40は独立した(同一又は異なる)インターフェースを備えることができる。もう一つの実施例において、インターフェース32及び40は同一インターフェース、或いは一つ又は複数のインターフェース信号を共有することを含むことができる。
【0032】
図1の下部には、セキュリティデバイス28のブロック図が示されている。この例では、セキュリティデバイス28は、内部バス62を介してセキュリティデバイスの複数の部材が相互に接続されるマイクロコントローラ60を備える。マイクロコントローラ60をセキュリティデバイスの主制御ユニットとする。セキュリティデバイス28は、インターフェース32を介してホストと通信するためのホスト・インターフェース・モジュール64を備える。
【0033】
マイクロコントローラ60はホストインターフェース64を介して受信されたセキュリティコマンドを受け付けて、必要に応じてセキュリティデバイス内の他の部材を適切に使用することによりそのコマンドを実行可能にする。システム管理モジュール66はデバイス部材の操作、例えば、電源分配、クロック信号及び割込み信号のために必要なさまざまな信号を提供する。いくつかの実施例において、モジュール66は例えば、タイムスタンプデータ(time−stamping data)に使用可能である一つ又は複数のタイマーを備える。
【0034】
セキュリティデバイス28は一時データを格納し、マイクロコントローラ60のための指示をコード化可能であるランダムアクセスメモリ(Random Access Memory,RAM)68を備える。リードオンリーメモリ(Read Only Memory,ROM)モジュール72はマイクロコントローラ60のためのコード化指示を格納する。ROM72はさまざまな定数値を格納することができる。ワンタイムプログラマブル(One Time Programmable,OTP)メモリ76はセキュリティデバイス構成、及び製造時に決定され、各セキュリティデバイス毎に唯一のシークレットキーを格納する。いくつかの実施例において、セキュリティデバイスは、例えば、OTPメモリ76の代わり、又はその他、内部機密の格納にも使用可能なEEPROM及び/又は物理的複製困難関数(Physical Unclonable Function,PUF)を備える。
【0035】
セキュリティデバイス28は、さまざまな暗号化関数及びアルゴリズムをサポートする暗号化エンジン80をさらに備える。いくつかの実施例において、暗号化エンジン80は暗号プリミティブ及びアルゴリズム、例えば、乱数生成(Random Number Generation,RNG)、高度暗号化標準(Advanced Encryption Standard,AES)のような暗号化/復号化アルゴリズム(encryption/decryption algorithms)、公開鍵暗号(public−key encryption)のための非対称暗号(Rivest−Shamir−Adleman,RSA)暗号システム、誤り訂正符号化/復号化(Error Correction Coding/Decoding)及びセキュアハッシュアルゴリズム(Secure Hash Algorithm)(SHA−256)のような暗号ハッシュ関数(cryptographic hash functions)をサポートする。暗号化エンジン80はコア暗号化関数、例えば、暗号化/復号化、署名及び認証を提供する。
【PCクライアントのトラステッド・コンピューティング】
【0036】
いくつかの実施例において、図1のシステム20はPCシステムを備える。下記の表1には、上記のTCG仕様に基づいて、システム20の様々な部材とPCクライアントに対応する部材との間の関係が表示されている。
【0037】
【表1】
表1:TCG仕様に基づいて、システム20の部材とPCクライアントに対応する部材との間の関係
【0038】
図1に示したシステム20及びセキュリティデバイス28の構成は、単に概念的な明確化のために示される例示的な構成である。代わりに、任意の適切なコンピューティングシステム及びセキュリティデバイスの構成も使用可能である。本発明の原理の理解に必要ではない部材、例えば、さまざまなインターフェース、制御回路、アドレス指定回路、タイミング且つシーケンス回路、デバッグ回路は、明確にするために図面から省略される。
【0039】
図1に示した例のシステム構成では、CPU44、セキュリティデバイス28及びNVMデバイス36は独立した集積回路(ICs)として実行される。しかし、代替の実施例において、CPU、セキュリティデバイスおよびNVMデバイスの少なくとも2つは単一のマルチチップパッケージ(Multi−Chip Package,MCP)又はシステムオンチップ(System on Chip,SoC)内の独立した半導体ダイ上に集積され、内部バスにより相互に接続されることができる。
【0040】
セキュリティデバイス28の異なる部材は任意の適切なハードウェア、例えば、特定用途向け集積回路(Application−Specific Integrated Circuit,ASIC)又はフィールド・プログラマブル・ ゲート・アレイ(Field−Programmable Gate Array,FPGA)により実行されることができる。いくつかの実施例において、セキュリティデバイスの一部の部材はソフトウェア又はハードウェアとソフトウェアとのコンビネーションにより実行される。例えば、本実施例において、暗号化エンジン80及びシステム管理モジュール66は専用ハードウェアモジュールとして実行される。もう一つの実施例として、署名計算及び暗号化/復号化関数は暗号化エンジン80内のハードウェア、マイクロコントローラ60で実行のソフトウェア、又はハードウェアとソフトウェアとのコンビネーションで実行される。
【0041】
以下の説明および特許請求の範囲では、ホストインターフェース64を含まない、セキュリティデバイスのさまざまな部材を集合的に称する。
【0042】
通常には、CPU44及びホスト24は本明細書に記載の機能を実行するようにソフトウェアでプログラムされる汎用プロセッサを備える。ソフトウェアは、例えば、ネットワークを介して電子の形式でプロセッサにダウンロードされ、又はそれを一時的でない有形の媒体(non−transitory tangible media)、例えば、磁気メモリ、光メモリ又は電子メモリで代替的にまたは付加的に提供及び/又は格納されることができる。
【セキュリティデバイスによる実行の例示的な方法】
【0043】
図2本明細書に記載の実施例に係るコンピューティングシステムでセキュリティサービスを提供する方法を概略的に示す流れ図である。その方法は、例えば、図1のセキュリティデバイス28により実行されることができる。説明の方法において、セキュリティデバイスは、コンピューティングシステムの一部、例えば、(又は、類似した)図1のシステム20であると仮定した。
【0044】
その方法は、受信ステップ100でセキュリティデバイス28により(インターフェース32を介してホストに接続する)ホスト・インターフェース・モジュール64を介してセキュリティコマンドを受信するように始める。セキュリティコマンドはセキュリティアプリケーション48から発信して、セキュリティデバイスにより提供される一つ又は複数の暗号化サービスを識別する。復号化ステップ104では、セキュリティデバイスがセキュリティコマンドを復号化することを事前実行の段階(pre−execution phase)とする。復号化の結果は、通常にリクエストされたサービスの形式及び一つ又は複数のパラメーター、例えば、それぞれの暗号化プリミティブを識別し、アドレス指定するパラメーター、サービスなどを適用するデータに関するサイズ情報を含む。
【0045】
コマンドを実行するため、セキュリティデバイスは外部NVMにアクセスする必要がある場合がある。セキュリティデバイスはコマンドのパラメーターに基づいて外部NVMにアクセスを決定可能である。代替的にまたは付加的に、その決定は、外部NVMに保存される内部フラグ、変数及び他のデータに応じることができ、セキュリティデバイスへの要求により復元することができる。
【0046】
書き込み確認ステップ106では、セキュリティデバイスは、実行したコマンドが外部NVMにアクセスする必要があるかどうかを確認する。セキュリティデバイスが外部NVMにデータを書き込む必要がある場合、この方法は暗号化及び署名のステップ108に移る。この例では、コマンドのパラメーターは平文データ(plaintext data)を含み、且つセキュリティデバイスは、セキュリティコマンドで規定されるように、例えば、暗号化エンジン80により平文データを暗号化及び/又は署名する。次のステップ108は、暗号化及び署名されたデータを外部NVMに格納する。
【0047】
書き込みリクエストステップ112では、セキュリティデバイスはデバイスドライバー52がステップ108のデータ結果を外部NVMに格納することをリクエストする。上述したように、セキュリティデバイスはインターフェース32のスレーブとして操作し、且つ上述したように、さまざまな方式、例えば、ホストへの割込み信号の生成でストレージの操作をリクエストすることができる。そのリクエストに応じて、デバイスドライバーは、ステップ108でインターフェース32を介してセキュリティデバイスからの暗号化及び署名されたデータを読み込んで、インターフェース40を介して外部NVMにデータを格納する。
【0048】
セキュリティデバイスがステップ106で外部NVMに書き込むことがリクエストされていない場合、この方法は読み込み確認ステップ114に移る。ステップ114は、実行したコマンドが外部NVMに読み込みアクセスする必要があるかどうかを確認する。必要がある場合、その方法は読み込みリクエストステップ116に移る。ステップ116において、セキュリティデバイスはデバイスドライバー52にリクエストすることで外部NVMからのデータを読み込む。読み込むリクエストに応じて、デバイスドライバーはインターフェース40を介して外部NVM36からリクエストされたデータを読み込んで、インターフェース32を介してセキュリティデバイスへ検索されたデータを送信する。暗号化と認証ステップ120では、セキュリティデバイスは、例えば、暗号化エンジン80により読み込みデータを認証及び暗号化する。
【0049】
次のステップ112又は120は、又はステップ114で確認した結果が否定である場合、その方法は継続のコマンド実行ステップ124に移る。ステップ124では、セキュリティデバイスは、外部NVMから受信されたデータによりセキュリティコマンド、又はその一部をを実行することができる。ループ終了ステップ126において、セキュリティデバイスは、コマンドの実行が完了するように外部NVMにさらにアクセスする必要があるかどうかを確認する。さらにアクセスが必要である場合、その方法はステップ106にループバックする。必要はない場合、その方法は応答準備ステップ128に移る。
【0050】
ステップ128では、セキュリティデバイスはコマンド応答を準備し、それは、例えば、暗号関数、エラーレポート等の結果を含む。応答通知ステップ132において、セキュリティデバイスは、コマンド応答の準備が完了することをセキュリティアプリケーションに通知する。上述したデバイスドライバーのリクエストのための方法のように、セキュリティデバイスは、例えば、割込み信号の生成によりセキュリティアプリケーションに通知し、又はセキュリティアプリケーションはセキュリティデバイス内の定義済みレジスタをポーリングすることができる。続いて、セキュリティアプリケーションはインターフェース32を介してセキュリティデバイスからのコマンド応答を読み込んで、その方法が完了する。
【0051】
図2の方法が例として与えられているが、他の適切な方法も適用することができる。例えば、いくつかの実施例において、セキュリティコマンドは外部NVMへの平文書き込み、又は外部NVMからの平文読み込みを指示することができる。その実施例において、ステップ108及び120を省略することができる。
【0052】
上述した実施例はコンピューティングシステム、例えば、PCを主に参照するが、同様の実施例は他のコンピューティングシステム、例えば、モバイルデバイス、モノのインターネット、スマートメータ(smart metering)、自動車用及び工業用システム/環境で行われることができる。
【0053】
本願に開示された技術は、さまざまなセキュアストレージアプリケーション、例えば、セキュアブート又はトラステッドブートに使用されることができる。例えば、トラステッド・コンピューティング・グループ(TCG)は、Windows 8オペレーティングシステムに含まれるセキュアブート機能をサポートするユニファイド・エクステンシブル・ファームウェア・インタフェース(Unified Extensible Firmware Interface,UEFI)を規定する。他の例として、Chromiumオペレーティングシステムはトラステッドブート解決策とするベリファイドブート機能を含む。その機能は、本明細書に記載される方法及びシステムにより実行されることができる。
【0054】
上述の実施形態は例示的に引用するものであり、本発明は、上述に具体的に示した又は説明した内容に制限的ではないと理解されるべきである。むしろ、本発明の範囲は、本明細書において上述したさまざまな特徴の組み合わせまたはサブコンビネーションの双方を含み、さらに、当業者が前述の説明を読むことによって想到し得る、先行技術において開示されていない変更及び修正を含む。本特許出願に参照により組み込まれる文献は、本出願の統合された一部とみなされるべきであるが、これらの組み込まれた文書で定義されている任意の用語が本明細書に明示的または暗黙的に使用される定義と矛盾する場合は、本明細書において使用される定義のみが考慮されるべきである。
【符号の説明】
【0055】
20:コンピューティングシステム
24:ホスト
28:セキュリティデバイス
32、40:インターフェース
36:不揮発性メモリデバイス
44:CPU
48:セキュリティアプリケーション
52:専用デバイスドライバー
60:マイクロコントローラ
62:内部バス
64:ホスト・インターフェース・モジュール
66:システム管理モジュール
68:ランダムアクセスメモリ
72:ROM
76:OTPメモリ
80:暗号化エンジン
100、104、106、108、112、114、116、120、124、126、128、132:ステップ
図1
図2