(57)【要約】      （修正有）【課題】ホストにセキュリティサービスを提供し、スレーブとしてもトランザクションを開始ができるセキュリティデバイス及びその方法を提供する。【解決手段】ホスト２０で動作されるアプリケーションプログラム４８からのセキュリティコマンドを受信する。セキュリティコマンドは専用デバイスドライバー５２を介してアプリケーションプログラム４８に透過的に接続されるように、セキュリティデバイス２８の外部の不揮発性メモリ（ＮＶＭ）デバイス３６にアクセスすることにより実行される。【選択図】図１
2017033537.tif 000002
【特許請求の範囲】
【請求項１】
ホストへのセキュリティサービスを提供するセキュリティデバイスに、前記ホストで動作されるアプリケーションプログラムからのセキュリティコマンドを受信するステップと、
専用デバイスドライバーを介して前記アプリケーションプログラムに透過的に接続されるように、前記セキュリティデバイスの外部の不揮発性メモリ（ＮＶＭ）デバイスにアクセスすることにより、前記セキュリティコマンドを実行するステップと、
を含み、
前記専用デバイスドライバーは、前記ホストで動作され、前記不揮発性メモリデバイスと前記セキュリティデバイスとの間を媒介することを特徴とする、
方法。
【請求項２】
前記セキュリティデバイスと、前記専用デバイスドライバーと、前記不揮発性メモリデバイスとは、それぞれトラステッド・コンピューティング・グループ（ＴＣＧ）のセキュア標準に準拠されることを特徴とする、請求項１に記載の方法。
【請求項３】
前記セキュリティデバイスは、前記専用デバイスドライバー及び少なくとも一部の前記不揮発性メモリデバイスのストレージスペースとともに、前記トラステッド・コンピューティング・グループの仕様に基づいてトラステッド・プラットフォーム・モジュール（ＴＰＭ）を実行することを特徴とする、請求項１に記載の方法。
【請求項４】
前記セキュリティコマンドの実行は、前記アプリケーションプログラムと前記専用デバイスドライバーとの両方と、前記ホストがマスターで前記セキュリティデバイスがスレーブであるインターフェースを介して前記セキュリティデバイスとの間に通信することを含むことを特徴とする、請求項１に記載の方法。
【請求項５】
前記セキュリティコマンドの実行は、前記インターフェースを介して前記専用デバイスドライバーと前記不揮発性メモリデバイスとの間に通信することを含むことを特徴とする、請求項４に記載の方法。
【請求項６】
前記セキュリティコマンドの実行は、前記セキュリティデバイスで前記専用デバイスドライバーに、前記不揮発性メモリデバイスからのデータを書き込む又は読み込むようにリクエストすることを含むことを特徴とする、請求項４に記載の方法。
【請求項７】
前記専用デバイスドライバーへのリクエストは、前記セキュリティデバイスでリクエストを内部的に作成し、前記インターフェースを介して前記専用デバイスドライバーに前記リクエストを取得するように送信することを含むことを特徴とする、請求項６に記載の方法。
【請求項８】
前記専用デバイスドライバーへのリクエストは、前記セキュリティデバイスのレジスタでリクエストを作成し、前記専用デバイスドライバーが前記レジスタをポーリングすることにより前記リクエストを取得することを待つことを含むことを特徴とする、請求項６に記載の方法。
【請求項９】
前記セキュリティコマンドの実行は、前記セキュリティデバイスで、前記セキュリティコマンドの実行が完了する時のコマンド応答を準備し、前記アプリケーションプログラムで前記コマンド応答の読み込みが可能であることを前記アプリケーションプログラムに指示すること含むことを特徴とする、請求項１に記載の方法。
【請求項１０】
ホストで動作されるアプリケーションプログラムからのセキュリティコマンドを受信するように設定されるホストインターフェースと、
専用デバイスドライバーを介して前記アプリケーションプログラムに対して透過的に接続されるように、セキュリティデバイスの外部の不揮発性メモリ（ＮＶＭ）デバイスにアクセスすることにより、前記セキュリティコマンドを実行するように設定される回路と、
を備え、
前記専用デバイスドライバーは、前記ホストで動作され、前記不揮発性メモリデバイスと前記セキュリティデバイスとの間を媒介することを特徴とする、セキュリティデバイス。
【請求項１１】
前記セキュリティデバイスは、前記専用デバイスドライバーと、前記専用デバイスドライバー及び少なくとも一部の前記不揮発性メモリデバイスのストレージスペースとともに、トラステッド・コンピューティング・グループの仕様に基づいてトラステッド・プラットフォーム・モジュール（ＴＰＭ）を実行することを特徴とする、請求項１０に記載のセキュリティデバイス。
【請求項１２】
前記回路は、前記アプリケーションプログラムと前記専用デバイスドライバーとの両方と、前記ホストがマスターで前記セキュリティデバイスがスレーブであるインターフェースを介して前記セキュリティデバイスとの間に通信することにより前記セキュリティコマンドを実行するように設定されることを特徴とする、請求項１０に記載のセキュリティデバイス。
【請求項１３】
前記回路は、前記インターフェースを介して前記専用デバイスドライバーと前記不揮発性メモリデバイスとの間に通信することにより前記セキュリティコマンドを実行するように設定されることを特徴とする、請求項１２に記載のセキュリティデバイス。
【請求項１４】
前記回路は、前記専用デバイスドライバーに、前記不揮発性メモリデバイスからのデータを書き込む又は読み込むようにリクエストするように設定されることを特徴とする、請求項１２に記載のセキュリティデバイス。
【請求項１５】
前記回路は、前記セキュリティデバイス用のリクエストを内部的に作成し、前記インターフェースを介して前記専用デバイスドライバーに前記リクエストを取得するように送信することに設定されることを特徴とする、請求項１４に記載のセキュリティデバイス。
【請求項１６】
前記回路は、前記セキュリティコマンドの実行が完了する時のコマンド応答を準備し、前記アプリケーションプログラムで前記コマンド応答の読み込みが可能であることを前記アプリケーションプログラムに指示するように設定されることを特徴とする、請求項１０に記載のセキュリティデバイス。
【請求項１７】
ホストにセキュリティサービスを提供するセキュリティデバイスと、
前記ホストで動作される専用デバイスドライバーと、
を備え、
前記専用デバイスドライバーは、前記セキュリティデバイスと前記セキュリティデバイスの外部の不揮発性メモリ（ＮＶＭ）デバイスとの間を媒介するように設定され、前記セキュリティデバイスは、前記ホストで動作されるアプリケーションプログラムからのセキュリティコマンドを受信して、前記専用デバイスドライバーを介して前記アプリケーションプログラムに透過的に接続される前記不揮発性メモリデバイスにアクセスすることにより、前記セキュリティコマンドを実行するように設定されることを特徴とする、セキュリティ設備。
【請求項１８】
前記セキュリティデバイスと、前記専用デバイスドライバーと、前記不揮発性メモリデバイスとは、それぞれにトラステッド・コンピューティング・グループ（ＴＣＧ）のセキュア標準に準拠されることを特徴とする、請求項１７に記載のセキュリティ設備。
【請求項１９】
前記アプリケーションプログラムと、前記セキュリティデバイスとの両方は、前記ホストがマスターで前記セキュリティデバイスがスレーブであるインターフェースを介して前記セキュリティデバイスと通信するように設定されることを特徴とする、請求項１７に記載のセキュリティ設備。
【請求項２０】
プログラム指示が格納される有形な非一過性のコンピュータ可読媒体を備え、
前記プログラム指示がホストのプロセッサにより読み込まれる場合、前記プロセッサはセキュリティデバイスと前記セキュリティデバイスの外部の不揮発性メモリ（ＮＶＭ）デバイスとの間を媒介するための専用デバイスドライバーを動作させ、前記セキュリティデバイスは前記ホストで動作されるアプリケーションプログラムにセキュリティサービスを提供し、前記不揮発性メモリデバイスは、前記専用デバイスドライバーを介して前記アプリケーションプログラムに透過的に接続されることを特徴とする、コンピュータソフトウェア製品。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本出願は、２０１４年７月２４日に出願の米国仮特許出願第６２／０２８，３４５号の利益を主張し、その全開示を参照により本明細書に組み入れることとする。
【０００２】
本発明は、主に安全なコンピューティング環境に関し、特にトラステッド・コンピューティング（ｔｒｕｓｔｅｄ  ｃｏｍｐｕｔｉｎｇ）のための方法及びシステムに関するものである。
【背景技術】
【０００３】
トラステッド・コンピューティングは、コンピューティングシステムのセキュリティ技術の一種で、例えば、トラステッド・コンピューティング・グループ（Ｔｒｕｓｔｉｎｇ  Ｃｏｍｐｕｔｉｎｇ  Ｇｒｏｕｐ  ，ＴＣＧ）により開発及び促進されている。トラステッド・コンピューティングにより、コンピューターの挙動が暗号化及び他のセキュリティ技術の応用により実行されている。例えば、参照としてその全体が本明細書に組み込まれる米国特許公開第２００５／００２１９６８号において説明されているセキュアファームウェアアップデートの提供方法（ａ  ｍｅｔｈｏｄ  ｆｏｒ  ｐｒｏｖｉｄｉｎｇ  ａ  ｓｅｃｕｒｅ  ｆｉｒｍｗａｒｅ  ｕｐｄａｔｅ）において、第１認証クレデンシャルは、セキュアトークン、例えば、トラステッド・プラットフォーム・モジュール（ｔｒｕｓｔｅｄ  ｐｌａｔｆｏｒｍ  ｍｏｄｕｌｅ）（ＴＰＭ）により生成されたキーを用いて暗号化形式でプラットフォームに安全に格納されている。プラットフォームの設定がインプリントされて（ｉｍｐｒｉｎｔｅｄ）、例えば、同一の設定は、プラットフォーム設定に対するキーを封止することにより、第１認証クレデンシャルの復号化のためのキーにアクセスすることが必要である。次のファームウェアアップデートプロセスの期間では、第２認証クレデンシャルを有するファームウェアアップデートイメージがプラットフォームで受信されている。プラットフォーム設定はキーが封止されるときと同一である場合、キーが解除され且つ第１認証クレデンシャルの復号化に用いられる。続いて、第１認証クレデンシャルの公開鍵（ｐｕｂｌｉｃ  ｋｅｙ）は第２認証クレデンシャルを介してファームウェアアップデートイメージに使用されている。
【０００４】
もう一つの例として、コンピューターのデータを保護するための方法及びシステムは、参照としてその全体が本明細書に組み込まれる米国特許公開第２００３／００６１４９４号において説明されている。提供されるコンピューターは、プレオペレーティングシステム（ｐｒｅ−ｏｐｅｒａｔｉｎｇ  ｓｙｓｔｅｍ，ｐｒｅ−ＯＳ）スペース及び存在オペレーティングシステム（ｏｐｅｒａｔｉｎｇ  ｓｙｓｔｅｍ−ｐｒｅｓｅｎｔ，ＯＳ−ｐｒｅｓｅｎｔ）スペースを有する。保護ストレージはトラステッド・プラットフォーム・モジュール（ＴＰＭ）を介してｐｒｅ−ＯＳスペースからアクセスされている。同様に、保護ストレージはＴＰＭを介してＯＳ−ｐｒｅｓｅｎｔスペースからアクセスされている。これにより、コンピューターはｐｒｅ−ＯＳスペース及びＯＳ−ｐｒｅｓｅｎｔスペースによって保護ストレージに格納するデータが権限のないユーザーにアクセスされることを防止することができる。。
【発明の概要】
【０００５】
本発明の実施例では、ホストへのセキュリティサービスを提供するように、セキュリティデバイスのための方法を提供し、その方法は、ホストで動作されるアプリケーションプログラムからのセキュリティコマンドを受信することを含む。セキュリティコマンドは、専用デバイスドライバーを介してアプリケーションプログラムに透過的に（ｔｒａｎｓｐａｒｅｎｔｌｙ）接続されるように、セキュリティデバイスの外部の不揮発性メモリ（ＮＶＭ）デバイスにアクセスすることにより実行され、その専用デバイスドライバーはホストで動作され、ＮＶＭデバイスとセキュリティデバイスとの間を媒介する。
【０００６】
いくつかの実施例において、セキュリティデバイスと、専用デバイスドライバーと、ＮＶＭデバイスとは、それぞれトラステッド・コンピューティング・グループ（ＴＣＧ）のセキュア標準に準拠される。もう一つの実施例において、セキュリティデバイスは、前記専用デバイスドライバー及び少なくとも一部のＮＶＭデバイスのストレージスペースとともに、ＴＣＧの仕様に基づいてトラステッド・プラットフォーム・モジュール（ＴＰＭ）を実行する。
【０００７】
一実施例において、セキュリティコマンドの実行は、アプリケーションプログラムと専用デバイスドライバーとの間に通信して、ホストがマスターでセキュリティデバイスがスレーブであるインターフェースを介してセキュリティデバイスと通信することを含む。もう一つの実施例において、セキュリティコマンドの実行は、インターフェースを介して専用デバイスドライバーとＮＶＭデバイスとの間に通信することを含む。もう一つの実施例において、セキュリティコマンドの実行は、セキュリティデバイスでデバイスドライバーにリクエストすることにより、ＮＶＭデバイスからのデータを書き込む又は読み込むことを含む。
【０００８】
いくつかの実施例において、デバイスドライバーへのリクエストは、セキュリティデバイスでリクエストを内部的に作成し、インターフェースを介してデバイスドライバーに送信することにより、リクエストを取得することを含む。もう一つの実施例において、デバイスドライバーへのリクエストは、セキュリティデバイスのレジスタでリクエストを作成し、デバイスドライバーでレジスタをポーリングすることによりリクエストを取得することを待つことを含む。
【０００９】
もう一つの実施例において、セキュリティコマンドの実行は、セキュリティデバイスでセキュリティコマンドの実行が完了する時のコマンド応答を準備し、アプリケーションプログラムでのコマンド応答の読み込みが可能であることをアプリケーションプログラムに指示すること含む。
【００１０】
本発明の実施例により、さらに一種のセキュリティデバイスを提供し、そのセキュリティデバイスは、ホストインターフェース及び回路を備える。ホストインターフェースはホストで動作され、アプリケーションプログラムからのセキュリティコマンドを受信するように設定される。回路はデバイスドライバーを介してアプリケーションプログラムに対して透過的に接続されるように、セキュリティデバイスの外部の不揮発性メモリ（ＮＶＭ）デバイスにアクセスすることにより、セキュリティコマンドを実行するように設定される。デバイスドライバーは、ホストで動作され、ＮＶＭデバイスとセキュリティデバイスとの間を媒介する。
【００１１】
本発明の実施例によれば、一種のセキュリティ設備を提供し、その設備はホストにセキュリティサービスを提供するセキュリティデバイスと、ホストで動作される専用デバイスドライバーとを備える。デバイスドライバーは、セキュリティデバイスとセキュリティデバイスの外部の不揮発性メモリ（ＮＶＭ）デバイスとの間を媒介するように設定される。セキュリティデバイスはホストで動作されるアプリケーションプログラムからのセキュリティコマンドを受信して、専用デバイスドライバーを介してアプリケーションプログラムに透過的に接続されるＮＶＭデバイスにアクセスすることにより、セキュリティコマンドを実行するように設定される。
【００１２】
本発明の実施例によれば、一種のコンピュータソフトウェア製品を提供し、その製品はプログラム指示が格納される有形な非一過性のコンピュータ可読媒体（ｔａｎｇｉｂｌｅ  ｎｏｎ−ｔｒａｎｓｉｔｏｒｙ  ｃｏｍｐｕｔｅｒ−ｒｅａｄａｂｌｅ  ｍｅｄｉｕｍ）を備える。その指示がホストのプロセッサにより読み込まれる場合、プロセッサはセキュリティデバイスとセキュリティデバイスの外部の不揮発性メモリ（ＮＶＭ）デバイスとの間を媒介するための専用デバイスドライバーを動作させセキュリティデバイスはホストで動作されるアプリケーションプログラムにセキュリティサービスを提供し、ＮＶＭデバイスは、専用デバイスドライバーを介してアプリケーションプログラムに透過的に接続される。
【図面の簡単な説明】
【００１３】
本発明は、添付図面を参照して、実施例の以下の詳細な説明から明らかになる。
【図１】本明細書に記載の実施例に係るコンピューティングシステムを概略的に示すブロック図である。
【図２】本明細書に記載の実施例に係るコンピューティングシステムでセキュリティサービスを提供する方法を概略的に示す流れ図である。
【発明を実施するための形態】
【００１４】
本発明の実施例では、本明細書に記載するコンピューティングシステムのセキュリティのための改善方法及びシステムを提供する。本明細書に記載の実施例において、セキュリティデバイスはホストのための暗号化コプロセッサ（ｃｏ−ｐｒｏｃｅｓｓｏｒ）として使われている。ホストは、セキュリティデバイスを用いてセキュリティサービスを提供するため、本明細書中で「アプリケーションプログラム」とも称される、セキュリティアプリケーションを動作させる。セキュリティアプリケーションは、セキュリティデバイスへセキュリティコマンドを送信して、セキュリティデバイスからのコマンド応答をそれぞれ受信する。
【００１５】
セキュリティアプリケーションが動作する場合、セキュリティデバイスは時に外部不揮発性メモリ（ＮＶＭ）デバイスにアクセスする必要がある。本開示の記載及び特許請求の範囲において、用語「ＮＶＭデバイス」は、電源が入ってない場合でも、その格納情報を保持するマルチタイムプログラマブルストレージデバイス（ｍｕｌｔｉ−ｔｉｍｅ  ｐｒｏｇｒａｍｍａｂｌｅ  ｓｔｏｒａｇｅ  ｄｅｖｉｃｅ）を意味する。例のＮＶＭデバイスは、フラッシュデバイス及び電気的消去可能読出し専用メモリ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ，ＥＥＰＲＯＭ）デバイスを含む。
【００１６】
開示の技術において、ホストは、セキュリティアプリケーションに対して透過的にセキュリティデバイスと外部ＮＶＭデバイスとの間を媒介するように、本明細書中で「デバイスドライバー」とも称される、専用デバイスドライバーを動作させる。デバイスドライバーは、セキュリティデバイスをデバイスドライバーを間隔的に介して外部ＮＶＭにアクセスすることができる。
【００１７】
専用デバイスドライバーは、ホストがマスターでセキュリティデバイスがスレーブ（ｓｌａｖｅ）であるインターフェースを介してセキュリティデバイスと通信する。スレーブとして、セキュリティデバイスはインターフェースを介してトランザクションを開始する、例えば、外部ＮＶＭにアクセスすることができない。よって、本文には、この困難を克服するためのいくつかのメカニズムが提供されている、即ち、スレーブとしても、セキュリティデバイスによってトランザクションを開始することが可能である。
【００１８】
例示的な実施例において、セキュリティデバイスはホストのセキュリティアプリケーションからのセキュリティコマンドを受信する。コマンドを実行して外部ＮＶＭデバイスに書き込み又は読み込みアクセスする必要がある場合、セキュリティデバイスは、デバイスドライバーを外部ＮＶＭデバイスにアクセスするようにリクエストする。いくつかの実施例において、セキュリティデバイスは内部でリクエストを作成して、生成された割込み信号によりリクエストが準備完了であることをデバイスドライバーに通知する。もう一つの実施例において、デバイスドライバーはセキュリティデバイスに位置するレジスタ又はメモリのポーリングによりリクエストを取得し、第１インターフェースを介してセキュリティデバイスからのリクエストを読み込んで、リクエストに応じて外部ＮＶＭからのデータを書き込み又は読み込む。デバイスドライバーは外部ＮＶＭから受信されたデータをセキュリティデバイスに提供する。
【００１９】
セキュリティデバイスは、セキュリティコマンドを実行するように、デバイスドライバーを介して外部ＮＶＭデバイスに多重アクセスサイクルをリクエストすることができる。例えば、セキュリティデバイスは、単一のセキュリティコマンドを実行するため、一つ又は複数の読み込み操作及び／又は一つ又は複数の書き込み操作をリクエストをすることができる。コマンドの実行に従って、セキュリティデバイスはコマンド応答をセキュリティアプリケーションに返信する。コマンド応答は、暗号化操作、エラーレポートなどの結果を含むことができる。
【００２０】
いくつかの実施例において、外部ＮＶＭは、コンピューティングシステムで付加的な目的のために使用される従来のＮＶＭデバイスを備えることができる。よって、コストを低減するように、セキュリティデバイスは、安全なストレージのための少なくとも一部の既存の（通常、安価な）ＮＶＭデバイスの使用により、内部ＮＶＭを有しない、又は小型のＮＶＭデバイスしか有しないように設計されることができる。
【００２１】
ホストは、ホストがマスターでセキュリティデバイスがスレーブであるインターフェースを介してセキュリティデバイスに通信されるため、インターフェースはバスマスタリング（ｂｕｓ  ｍａｓｔｅｒｉｎｇ）及びアービトレーション（ａｒｂｉｔｒａｔｉｏｎ）機能が必要せず、複雑度を低下させることができる。また、インターフェースはバスマスタリングのサポートがなくても使用可能である。
【システムの説明】
【００２２】
図１は本明細書に記載の実施例に係るコンピューティングシステム２０を概略的に示すブロック図である。システム２０は、第１インターフェース３２を介してセキュリティデバイス２８と通信し、且つ第２インターフェース４０を介して不揮発性メモリ（ＮＶＭ）デバイス３６と通信するホスト２０を備える。セキュリティデバイス２８をホストのための暗号化コプロセッサとする。
【００２３】
ホスト２４は、セキュリティアプリケーション４８及び専用デバイスドライバー５２を動作させ、セキュリティデバイス２８と共にホスト２４にトラステッド・コンピューティング及び他のセキュリティ対策を行うための必要な機能を提供するＣＰＵ４４を備える。セキュリティアプリケーション４８は、ホストで動作するオペレーティングシステム（ＯＳ）及び他のアプリケーションプログラムのためのセキュリティデバイス２８に対するコマンドアプリケーションプログラミングインタフェース（ｃｏｍｍｏｎ  ａｐｐｌｉｃａｔｉｏｎ  ｐｒｏｇｒａｍｍｉｎｇ  ｉｎｔｅｒｆａｃｅ）を提供する。
【００２４】
いくつかの実施例において、システム２０はテッド・コンピューティング・グループ（ＴＣＧ）で開発された標準によりトラステッド・コンピューティング・システムを実行する。このような実施例において、セキュリティデバイス２８は専用デバイスドライバー５２及び少なくとも一部のＮＶＭデバイス３６のストレージスペースとともに、トラステッド・プラットフォーム・モジュール（ＴＰＭ）を備えることができる。また、セキュリティアプリケーション４８はＴＣＧソフトウェアスタック（ＴＣＧ  Ｓｏｆｔｗａｒｅ  Ｓｔａｃｋ，ＴＳＳ）を備えることができる。例えば、ＴＰＭは、参照としてその全体が本明細書に組み込まれる、Ｖｅｒｓｉｏｎ  １．２，  Ｌｅｖｅｌ  ２，  Ｒｅｖｉｓｉｏｎ  １１６，  Ｍａｒｃｈ  １，  ２０１１の３部構成のＴＰＭの主要な仕様（ｔｈｒｅｅ−ｐａｒｔ  ＴＰＭ  ｍａｉｎ  ｓｐｅｃｉｆｉｃａｔｉｏｎｓ）に規定される。３部構成のＴＰＭの主要な仕様は、「第１部：ＴＰＭ設計の原則（ＴＰＭ  Ｍａｉｎ  Ｐａｒｔ  １  Ｄｅｓｉｇｎ  Ｐｒｉｎｃｉｐｌｅｓ）」と、「第２部：ＴＰＭ構造（ＴＰＭ  Ｍａｉｎ  Ｐａｒｔ  ２  ＴＰＭ  Ｓｔｒｕｃｔｕｒｅｓ）」と、「第３部：コマンド（ＴＰＭ  Ｍａｉｎ  Ｐａｒｔ  ３  Ｃｏｍｍａｎｄｓ）」とを含む。例えば、ＴＳＳは、参照としてその全体が本明細書に組み込まれる、ＴＣＧ  Ｓｏｆｔｗａｒｅ  Ｓｔａｃｋ  （ＴＳＳ）  Ｓｐｅｃｉｆｉｃａｔｉｏｎ  Ｖｅｒｓｉｏｎ  １．２，  Ｌｅｖｅｌ  １，  Ｅｒｒａｔａ  Ａ，  Ｐａｒｔ１：  Ｃｏｍｍａｎｄｓ  ａｎｄ  Ｓｔｒｕｃｔｕｒｅｓ，"  Ｍａｒｃｈ  ７，  ２００７に記載される。
【００２５】
いくつかの実施例において、トラステッド・コンピューティングはパーソナルコンピュータ（ＰＣ）システムで実行される。例えば、ＰＣクライアントのためのＴＣＧ標準は、参照としてその全体が本明細書に組み込まれる、Ｖｅｒｓｉｏｎ  １．２１，  Ｅｒｒａｔａ  Ｒｅｖｉｓｉｏｎ  １．００，  Ｆｅｂｒｕａｒｙ  ２４，  ２０１２  （Ｆｏｒ  ＴＰＭ  Ｆａｍｉｌｙ  １．２；  Ｌｅｖｅｌ  ２）の「従来のＢＩＯＳのためのＴＣＧ  ＰＣクライアント特定の実行仕様（ＴＣＧ  ＰＣ  Ｃｌｉｅｎｔ  Ｓｐｅｃｉｆｉｃ  Ｉｍｐｌｅｍｅｎｔａｔｉｏｎ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ  ｆｏｒ  Ｃｏｎｖｅｎｔｉｏｎａｌ  ＢＩＯＳ）」及びＶｅｒｓｉｏｎ  １．３，  Ｍａｒｃｈ  ２１，  ２０１３の「ＴＣＧ  ＰＣ  クライアント特定のＴＰＭインターフェース仕様（ＴＣＧ  ＰＣ  Ｃｌｉｅｎｔ  Ｓｐｅｃｉｆｉｃ  ＴＰＭ  Ｉｎｔｅｒｆａｃｅ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ  （ＴＩＳ））」に記載される。
【００２６】
例えば、セキュリティアプリケーション４８は情報を格納するようにシステムリソースのアクセスを制御するセキュアストレージサービスなどを提供する。いくつかの実施例において、セキュアストレージは、一定の所定条件下でアクセス可能であり、一つ又は複数のセキュアストレージ領域を定義することにより実行される。当該条件は、例えば、アドレス空間、システム状態、アクセス許可、物理的な存在の許可（ｐｈｙｓｉｃａｌ  ｐｒｅｓｅｎｃｅ  ａｕｔｈｏｒｉｚａｔｉｏｎ）及び／又は読み込み／書き込み保護を含む。
【００２７】
以下の説明では、セキュリティアプリケーション４８が、例えば、上記で規定されるＴＣＧ仕様のようにインターフェースセキュリティデバイス２８に直接に設計されると仮定した。
【００２８】
いくつかの実施例において、セキュリティアプリケーション４８は、インターフェース３２を介してセキュリティデバイス２８へセキュリティコマンドをそれぞれ送信することにより、（例えば、ホストのＯＳのための）セキュリティサービスを提供する。セキュリティコマンドが受信された場合、セキュリティデバイス２８を復号して、コマンドを実行する。少なく一部のセキュリティコマンドの実行は、例えば、機密情報を格納又は取得するために、ＮＶＭデバイスにアクセスすることを含む。いくつかの実施例において、セキュリティデバイスは内部の（通常、小型な）ＮＶＭを備える。もう一つの実施例において、内部ＮＶＭに加えて、又はその代わりに、セキュリティデバイスは、外部ＮＶＭ、例えば、他の目的のためのシステムに使用されるＮＶＭ３６にアクセスする。上述したように、セキュリティアプリケーション４８の他、ＣＰＵ４４はセキュリティデバイス２８とＮＶＭデバイス３６との間を媒介する専用デバイスドライバー５２を動作させる。デバイスドライバー５２は、セキュリティアプリケーション４８に透過的に接続されるように、セキュリティデバイス２８を外部ＮＶＭ３６に間接的にアクセスすることを提供する。
【００２９】
セキュリティデバイス２８は様々な方法でデバイスドライバー５２がＮＶＭ３６へのアクセスをリクエストすることができる。一実施例において、セキュリティデバイス２８はリクエストを内部的に作成して、例えば、予め定義されたレジスタに作成し、そして割込み信号を生成することにより、インターフェース３２を介してリクエストを読み込むようにデバイスドライバーに通知する。もう一つの実施例において、デバイスドライバーはセキュリティデバイス内のレジスタをポーリングすることにより、保留中のリクエストがあるかどうかを識別する。もう一つの実施例において、デバイスドライバー５２はセキュリティデバイス内のレジスタ値を、例えば、セキュリティアプリケーションがセキュリティデバイスへセキュリティコマンドを送信することに応じで確認する。
【００３０】
デバイスドライバー５２がセキュリティデバイスからの書き込みリクエストが受信される場合、デバイスドライバーはインターフェース４０を介して外部ＮＶＭ内のそれぞれのデータを格納する。いくつかの実施例において、セキュリティデバイスは、書き込みリクエスが発行される前、データを暗号化及び／又はデータを署名する。デバイスドライバー５２がセキュリティデバイスからの読み込みリクエストが受信される場合、デバイスドライバーはインターフェース４０を介して外部ＮＶＭからのリクエストされたデータを読み込んで、検索されたデータをインターフェース３２を介してセキュリティデバイスへ受信する。検索されたデータが暗号化且つ署名された場合、セキュリティデバイスはデータを認証且つ暗号化することができる。
【００３１】
インターフェース３２及び４０は任意の適宜なインターフェースを備えることができる。インターフェース３２は、例えば、低ピン数バス（Ｌｏｗ  Ｐｉｎ  Ｃｏｕｎｔ  ｂｕｓ，ＬＰＣ）、シリアル・ペリフェラル・インタフェース（Ｓｅｒｉａｌ  ｐｅｒｉｐｈｅｒａｌ  Ｉｎｔｅｒｆａｃｅ，ＳＰＩ）又は集積回路間（Ｉｎｔｅｒ−Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ，Ｉ２ｃ）バスを備えることができる。インターフェース３２は、例えば、低ピン数バス（ＬＰＣ）、シリアル・ペリフェラル・インタフェースＳＰＩ）又は集積回路間バスを備えることができる。インターフェース４０は、例えば、ＳＰＩを備えることができる。いくつかの実施例において、インターフェース３２及び４０は独立した（同一又は異なる）インターフェースを備えることができる。もう一つの実施例において、インターフェース３２及び４０は同一インターフェース、或いは一つ又は複数のインターフェース信号を共有することを含むことができる。
【００３２】
図１の下部には、セキュリティデバイス２８のブロック図が示されている。この例では、セキュリティデバイス２８は、内部バス６２を介してセキュリティデバイスの複数の部材が相互に接続されるマイクロコントローラ６０を備える。マイクロコントローラ６０をセキュリティデバイスの主制御ユニットとする。セキュリティデバイス２８は、インターフェース３２を介してホストと通信するためのホスト・インターフェース・モジュール６４を備える。
【００３３】
マイクロコントローラ６０はホストインターフェース６４を介して受信されたセキュリティコマンドを受け付けて、必要に応じてセキュリティデバイス内の他の部材を適切に使用することによりそのコマンドを実行可能にする。システム管理モジュール６６はデバイス部材の操作、例えば、電源分配、クロック信号及び割込み信号のために必要なさまざまな信号を提供する。いくつかの実施例において、モジュール６６は例えば、タイムスタンプデータ（ｔｉｍｅ−ｓｔａｍｐｉｎｇ  ｄａｔａ）に使用可能である一つ又は複数のタイマーを備える。
【００３４】
セキュリティデバイス２８は一時データを格納し、マイクロコントローラ６０のための指示をコード化可能であるランダムアクセスメモリ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ，ＲＡＭ）６８を備える。リードオンリーメモリ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ，ＲＯＭ）モジュール７２はマイクロコントローラ６０のためのコード化指示を格納する。ＲＯＭ７２はさまざまな定数値を格納することができる。ワンタイムプログラマブル（Ｏｎｅ  Ｔｉｍｅ  Ｐｒｏｇｒａｍｍａｂｌｅ，ＯＴＰ）メモリ７６はセキュリティデバイス構成、及び製造時に決定され、各セキュリティデバイス毎に唯一のシークレットキーを格納する。いくつかの実施例において、セキュリティデバイスは、例えば、ＯＴＰメモリ７６の代わり、又はその他、内部機密の格納にも使用可能なＥＥＰＲＯＭ及び／又は物理的複製困難関数（Ｐｈｙｓｉｃａｌ  Ｕｎｃｌｏｎａｂｌｅ  Ｆｕｎｃｔｉｏｎ，ＰＵＦ）を備える。
【００３５】
セキュリティデバイス２８は、さまざまな暗号化関数及びアルゴリズムをサポートする暗号化エンジン８０をさらに備える。いくつかの実施例において、暗号化エンジン８０は暗号プリミティブ及びアルゴリズム、例えば、乱数生成（Ｒａｎｄｏｍ  Ｎｕｍｂｅｒ  Ｇｅｎｅｒａｔｉｏｎ，ＲＮＧ）、高度暗号化標準（Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ，ＡＥＳ）のような暗号化／復号化アルゴリズム（ｅｎｃｒｙｐｔｉｏｎ／ｄｅｃｒｙｐｔｉｏｎ  ａｌｇｏｒｉｔｈｍｓ）、公開鍵暗号（ｐｕｂｌｉｃ−ｋｅｙ  ｅｎｃｒｙｐｔｉｏｎ）のための非対称暗号（Ｒｉｖｅｓｔ−Ｓｈａｍｉｒ−Ａｄｌｅｍａｎ，ＲＳＡ）暗号システム、誤り訂正符号化／復号化（Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｏｎ  Ｃｏｄｉｎｇ／Ｄｅｃｏｄｉｎｇ）及びセキュアハッシュアルゴリズム（Ｓｅｃｕｒｅ  Ｈａｓｈ  Ａｌｇｏｒｉｔｈｍ）（ＳＨＡ−２５６）のような暗号ハッシュ関数（ｃｒｙｐｔｏｇｒａｐｈｉｃ  ｈａｓｈ  ｆｕｎｃｔｉｏｎｓ）をサポートする。暗号化エンジン８０はコア暗号化関数、例えば、暗号化／復号化、署名及び認証を提供する。
【ＰＣクライアントのトラステッド・コンピューティング】
【００３６】
いくつかの実施例において、図１のシステム２０はＰＣシステムを備える。下記の表１には、上記のＴＣＧ仕様に基づいて、システム２０の様々な部材とＰＣクライアントに対応する部材との間の関係が表示されている。
【００３７】
【表１】
2017033537.tif 000003
表１：ＴＣＧ仕様に基づいて、システム２０の部材とＰＣクライアントに対応する部材との間の関係
【００３８】
図１に示したシステム２０及びセキュリティデバイス２８の構成は、単に概念的な明確化のために示される例示的な構成である。代わりに、任意の適切なコンピューティングシステム及びセキュリティデバイスの構成も使用可能である。本発明の原理の理解に必要ではない部材、例えば、さまざまなインターフェース、制御回路、アドレス指定回路、タイミング且つシーケンス回路、デバッグ回路は、明確にするために図面から省略される。
【００３９】
図１に示した例のシステム構成では、ＣＰＵ４４、セキュリティデバイス２８及びＮＶＭデバイス３６は独立した集積回路（ＩＣｓ）として実行される。しかし、代替の実施例において、ＣＰＵ、セキュリティデバイスおよびＮＶＭデバイスの少なくとも２つは単一のマルチチップパッケージ（Ｍｕｌｔｉ−Ｃｈｉｐ  Ｐａｃｋａｇｅ，ＭＣＰ）又はシステムオンチップ（Ｓｙｓｔｅｍ  ｏｎ  Ｃｈｉｐ，ＳｏＣ）内の独立した半導体ダイ上に集積され、内部バスにより相互に接続されることができる。
【００４０】
セキュリティデバイス２８の異なる部材は任意の適切なハードウェア、例えば、特定用途向け集積回路（Ａｐｐｌｉｃａｔｉｏｎ−Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ，ＡＳＩＣ）又はフィールド・プログラマブル・  ゲート・アレイ（Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ，ＦＰＧＡ）により実行されることができる。いくつかの実施例において、セキュリティデバイスの一部の部材はソフトウェア又はハードウェアとソフトウェアとのコンビネーションにより実行される。例えば、本実施例において、暗号化エンジン８０及びシステム管理モジュール６６は専用ハードウェアモジュールとして実行される。もう一つの実施例として、署名計算及び暗号化／復号化関数は暗号化エンジン８０内のハードウェア、マイクロコントローラ６０で実行のソフトウェア、又はハードウェアとソフトウェアとのコンビネーションで実行される。
【００４１】
以下の説明および特許請求の範囲では、ホストインターフェース６４を含まない、セキュリティデバイスのさまざまな部材を集合的に称する。
【００４２】
通常には、ＣＰＵ４４及びホスト２４は本明細書に記載の機能を実行するようにソフトウェアでプログラムされる汎用プロセッサを備える。ソフトウェアは、例えば、ネットワークを介して電子の形式でプロセッサにダウンロードされ、又はそれを一時的でない有形の媒体（ｎｏｎ−ｔｒａｎｓｉｔｏｒｙ  ｔａｎｇｉｂｌｅ  ｍｅｄｉａ）、例えば、磁気メモリ、光メモリ又は電子メモリで代替的にまたは付加的に提供及び／又は格納されることができる。
【セキュリティデバイスによる実行の例示的な方法】
【００４３】
図２本明細書に記載の実施例に係るコンピューティングシステムでセキュリティサービスを提供する方法を概略的に示す流れ図である。その方法は、例えば、図１のセキュリティデバイス２８により実行されることができる。説明の方法において、セキュリティデバイスは、コンピューティングシステムの一部、例えば、（又は、類似した）図１のシステム２０であると仮定した。
【００４４】
その方法は、受信ステップ１００でセキュリティデバイス２８により（インターフェース３２を介してホストに接続する）ホスト・インターフェース・モジュール６４を介してセキュリティコマンドを受信するように始める。セキュリティコマンドはセキュリティアプリケーション４８から発信して、セキュリティデバイスにより提供される一つ又は複数の暗号化サービスを識別する。復号化ステップ１０４では、セキュリティデバイスがセキュリティコマンドを復号化することを事前実行の段階（ｐｒｅ−ｅｘｅｃｕｔｉｏｎ  ｐｈａｓｅ）とする。復号化の結果は、通常にリクエストされたサービスの形式及び一つ又は複数のパラメーター、例えば、それぞれの暗号化プリミティブを識別し、アドレス指定するパラメーター、サービスなどを適用するデータに関するサイズ情報を含む。
【００４５】
コマンドを実行するため、セキュリティデバイスは外部ＮＶＭにアクセスする必要がある場合がある。セキュリティデバイスはコマンドのパラメーターに基づいて外部ＮＶＭにアクセスを決定可能である。代替的にまたは付加的に、その決定は、外部ＮＶＭに保存される内部フラグ、変数及び他のデータに応じることができ、セキュリティデバイスへの要求により復元することができる。
【００４６】
書き込み確認ステップ１０６では、セキュリティデバイスは、実行したコマンドが外部ＮＶＭにアクセスする必要があるかどうかを確認する。セキュリティデバイスが外部ＮＶＭにデータを書き込む必要がある場合、この方法は暗号化及び署名のステップ１０８に移る。この例では、コマンドのパラメーターは平文データ（ｐｌａｉｎｔｅｘｔ  ｄａｔａ）を含み、且つセキュリティデバイスは、セキュリティコマンドで規定されるように、例えば、暗号化エンジン８０により平文データを暗号化及び／又は署名する。次のステップ１０８は、暗号化及び署名されたデータを外部ＮＶＭに格納する。
【００４７】
書き込みリクエストステップ１１２では、セキュリティデバイスはデバイスドライバー５２がステップ１０８のデータ結果を外部ＮＶＭに格納することをリクエストする。上述したように、セキュリティデバイスはインターフェース３２のスレーブとして操作し、且つ上述したように、さまざまな方式、例えば、ホストへの割込み信号の生成でストレージの操作をリクエストすることができる。そのリクエストに応じて、デバイスドライバーは、ステップ１０８でインターフェース３２を介してセキュリティデバイスからの暗号化及び署名されたデータを読み込んで、インターフェース４０を介して外部ＮＶＭにデータを格納する。
【００４８】
セキュリティデバイスがステップ１０６で外部ＮＶＭに書き込むことがリクエストされていない場合、この方法は読み込み確認ステップ１１４に移る。ステップ１１４は、実行したコマンドが外部ＮＶＭに読み込みアクセスする必要があるかどうかを確認する。必要がある場合、その方法は読み込みリクエストステップ１１６に移る。ステップ１１６において、セキュリティデバイスはデバイスドライバー５２にリクエストすることで外部ＮＶＭからのデータを読み込む。読み込むリクエストに応じて、デバイスドライバーはインターフェース４０を介して外部ＮＶＭ３６からリクエストされたデータを読み込んで、インターフェース３２を介してセキュリティデバイスへ検索されたデータを送信する。暗号化と認証ステップ１２０では、セキュリティデバイスは、例えば、暗号化エンジン８０により読み込みデータを認証及び暗号化する。
【００４９】
次のステップ１１２又は１２０は、又はステップ１１４で確認した結果が否定である場合、その方法は継続のコマンド実行ステップ１２４に移る。ステップ１２４では、セキュリティデバイスは、外部ＮＶＭから受信されたデータによりセキュリティコマンド、又はその一部をを実行することができる。ループ終了ステップ１２６において、セキュリティデバイスは、コマンドの実行が完了するように外部ＮＶＭにさらにアクセスする必要があるかどうかを確認する。さらにアクセスが必要である場合、その方法はステップ１０６にループバックする。必要はない場合、その方法は応答準備ステップ１２８に移る。
【００５０】
ステップ１２８では、セキュリティデバイスはコマンド応答を準備し、それは、例えば、暗号関数、エラーレポート等の結果を含む。応答通知ステップ１３２において、セキュリティデバイスは、コマンド応答の準備が完了することをセキュリティアプリケーションに通知する。上述したデバイスドライバーのリクエストのための方法のように、セキュリティデバイスは、例えば、割込み信号の生成によりセキュリティアプリケーションに通知し、又はセキュリティアプリケーションはセキュリティデバイス内の定義済みレジスタをポーリングすることができる。続いて、セキュリティアプリケーションはインターフェース３２を介してセキュリティデバイスからのコマンド応答を読み込んで、その方法が完了する。
【００５１】
図２の方法が例として与えられているが、他の適切な方法も適用することができる。例えば、いくつかの実施例において、セキュリティコマンドは外部ＮＶＭへの平文書き込み、又は外部ＮＶＭからの平文読み込みを指示することができる。その実施例において、ステップ１０８及び１２０を省略することができる。
【００５２】
上述した実施例はコンピューティングシステム、例えば、ＰＣを主に参照するが、同様の実施例は他のコンピューティングシステム、例えば、モバイルデバイス、モノのインターネット、スマートメータ（ｓｍａｒｔ  ｍｅｔｅｒｉｎｇ）、自動車用及び工業用システム／環境で行われることができる。
【００５３】
本願に開示された技術は、さまざまなセキュアストレージアプリケーション、例えば、セキュアブート又はトラステッドブートに使用されることができる。例えば、トラステッド・コンピューティング・グループ（ＴＣＧ）は、Ｗｉｎｄｏｗｓ  ８オペレーティングシステムに含まれるセキュアブート機能をサポートするユニファイド・エクステンシブル・ファームウェア・インタフェース（Ｕｎｉｆｉｅｄ  Ｅｘｔｅｎｓｉｂｌｅ  Ｆｉｒｍｗａｒｅ  Ｉｎｔｅｒｆａｃｅ，ＵＥＦＩ）を規定する。他の例として、Ｃｈｒｏｍｉｕｍオペレーティングシステムはトラステッドブート解決策とするベリファイドブート機能を含む。その機能は、本明細書に記載される方法及びシステムにより実行されることができる。
【００５４】
上述の実施形態は例示的に引用するものであり、本発明は、上述に具体的に示した又は説明した内容に制限的ではないと理解されるべきである。むしろ、本発明の範囲は、本明細書において上述したさまざまな特徴の組み合わせまたはサブコンビネーションの双方を含み、さらに、当業者が前述の説明を読むことによって想到し得る、先行技術において開示されていない変更及び修正を含む。本特許出願に参照により組み込まれる文献は、本出願の統合された一部とみなされるべきであるが、これらの組み込まれた文書で定義されている任意の用語が本明細書に明示的または暗黙的に使用される定義と矛盾する場合は、本明細書において使用される定義のみが考慮されるべきである。
【符号の説明】
【００５５】
２０：コンピューティングシステム
２４：ホスト
２８：セキュリティデバイス
３２、４０：インターフェース
３６：不揮発性メモリデバイス
４４：ＣＰＵ
４８：セキュリティアプリケーション
５２：専用デバイスドライバー
６０：マイクロコントローラ
６２：内部バス
６４：ホスト・インターフェース・モジュール
６６：システム管理モジュール
６８：ランダムアクセスメモリ
７２：ＲＯＭ
７６：ＯＴＰメモリ
８０：暗号化エンジン
１００、１０４、１０６、１０８、１１２、１１４、１１６、１２０、１２４、１２６、１２８、１３２：ステップ
【図１】
2017033537.tif 000004
【図２】
2017033537.tif 000005
【外国語明細書】
SECURITY DEVICE HAVING INDIRECT ACCESS TO EXTERNAL NON-VOLATILE MEMORY
CROSS-REFERENCE TO RELATED APPLICATIONS
This application claims the benefit of U.S. Provisional Patent Application 62/028,345, filed July 24, 2014, whose disclosure is incorporated herein by reference.
FIELD OF THE INVENTION
The present invention relates generally to secured computing environments, and particularly to methods and systems for trusted computing.
BACKGROUND OF THE INVENTION
Trusted Computing is a security technology in computing systems, developed and promoted, for example, by the Trusted Computing Group (TCG). With trusted computing, the behavior of a computer is enforced by applying cryptographic and other security techniques. For example, U.S. Patent Application Publication 2005/0021968, whose disclosure is incorporated herein by reference, describes a method for providing a secure firmware update. A first authentication credential is securely stored on a platform in an encrypted form using a key generated by a secure token, such as a trusted platform module (TPM). A configuration of the platform is "imprinted" such that an identical configuration is required to access the key used to decrypt the first authentication credential by sealing the key against the platform configuration. During a subsequent firmware update process, a firmware update image containing a second authentication credential is received at the platform. If the platform configuration is the same as when the key was sealed, the key can be unsealed and used for decrypting the first authentication credential. A public key in the first authentication credential can then be used to authenticate the firmware update image via the second authentication credential.
As another example, U.S. Patent Application Publication 2003/0061494, whose disclosure is incorporated herein by reference, describes a method and system for protecting data on a computer. A computer is provided that has a pre-operating system (pre-OS) space and an operating system-present (OS-present) space. Protected storage is accessed from pre-OS space via a trusted platform module (TPM). Similarly, protected storage is accessed from OS-present space via the TPM. As such, from both pre-OS space and OS-present space, a computer may prevent unauthorized users from gaining access to data stored in protected storage.
SUMMARY OF THE INVENTION
An embodiment of the present invention that is described herein provides a method in a security device that provides a security service to a host, including receiving a security command from an application program running on the host. The security command is executed by accessing a Non-Volatile Memory (NVM) device external to the security device transparently to the application program via a dedicated device driver, which runs on the host and mediates between the NVM device and the security device.
In some embodiments, the security device, the dedicated device driver and the NVM device are compliant with respective security standards of the Trusting Computing Group (TCG). In other embodiments, the security device, together with the dedicated device driver and at least a portion of the NVM device storage space, implements a Trusted Platform Module (TPM) in accordance with specifications of the TCG.
In an embodiment, executing the security command includes communicating between both the application program and the dedicated device driver, and the security device over an interface in which the host serves as a master and the security device serves as a slave. In another embodiment, executing the security command includes communicating between the dedicated device driver and the NVM device over the interface. In yet another embodiment, executing the security command includes requesting the device driver, by the security device, to write data to or read data from the NVM device.
In some embodiments, requesting the device driver includes preparing a request internally in the security device, and signaling to the device driver to obtain the request via the interface. In other embodiments, requesting the device driver includes preparing a request in a register of the security device, and waiting for the device driver to obtain the request by polling the register by the device driver. In yet other embodiments, executing the security command includes preparing, in the security device, a command response upon completing execution of the security command, and indicating to the application program that the command response is ready to be read by the application program.
There is additionally provided, in accordance with an embodiment of the present invention, a security device including a host interface and circuitry. The host interface is configured to receive a security command from an application program running on a host. The circuitry is configured to execute the security command by accessing a Non-Volatile Memory (NVM) device external to the security device transparently to the application program via a dedicated device driver, which runs on the host and mediates between the NVM device and the security device.
There is additionally provided, in accordance with an embodiment of the present invention, a security apparatus, including a security device that provides a security service to a host, and a dedicated device driver running on the host. The device driver is configured to mediate between the security device and a Non-Volatile Memory (NVM) device external to the security device. The security device is configured to receive a security command from an application program running on the host, and to execute the security command by accessing the NVM device transparently to the application program via the dedicated device driver.
There is additionally provided, in accordance with an embodiment of the present invention, a computer software product, the product includes a tangible non-transitory computer-readable medium in which program instructions are stored, which instructions, when read by a processor of a host, cause the processor to run a dedicated device driver for mediating between a security device that provides a security service for an application program running on the host and a Non-Volatile Memory (NVM) device external to the security device transparently to the application program via the dedicated device driver.
The present invention will be more fully understood from the following detailed description of the embodiments thereof, taken together with the drawings in which:
BRIEF DESCRIPTION OF THE DRAWINGS
Fig. 1 is a block diagram that schematically illustrates a computing system, in accordance with an embodiment that is described herein; and
Fig. 2 is a flow chart that schematically illustrates a method for providing security services in a computing system, in accordance with an embodiment that is described herein. 
DETAILED DESCRIPTION OF EMBODIMENTS
OVERVIEW
Embodiments of the present invention that are described herein provide improved methods and systems for security in a computing system. In the embodiments that are disclosed herein, a security device serves as a cryptographic co-processor for a host. The host runs a security application, also referred to herein as "application program", that provides security services with the aid of the security device. The security application sends security commands to the security device and receives respective command responses from the security device.
When serving the security application, the security device is sometimes required to access an external Non-Volatile Memory (NVM) device. In the context of the present disclosure and in the claims, the term "NVM device" refers to a multi-time programmable storage device that retains its stored information even when not powered. Example NVM devices include Flash devices and Electrically Erasable Programmable Read-Only Memory (EEPROM) devices.
In the disclosed techniques, the host runs a dedicated device driver, also referred to herein as "device driver" that mediates between the security device and the external NVM device transparently to the security application. The device driver enables the security device to access the external NVM indirectly via the device driver. 
The dedicated device driver communicates with the security device over an interface in which the host serves as a master and the security device as a slave. Being a slave, the security device is unable to initiate transactions directly over the interface, for example for accessing the external NVM. Several mechanisms for overcoming this difficulty, i.e., for initiating transactions by the security device in spite of its being a slave, are described herein.
In an example embodiment, the security device receives a security command from the security application of the host. When executing the command requires a write or read access to the external NVM device, the security device requests the device driver to access the external NVM device accordingly. In some embodiments, the security device prepares the request internally and notifies the device driver that the request is ready by generating an interrupt signal. In other embodiments, the device driver obtains the request by polling a register or a memory location in the security device. The device driver reads the request from the security device via the first interface, and writes or reads data from the external NVM as requested. The device driver provides data retrieved from the external NVM to the security device. 
The security device may request multiple access cycles to the external NVM device, via the device driver, to execute the security command. For example, the security device may request one or more read operations and/or one or more write operations for executing a single security command. Following the command execution, the security device returns a command response to the security application. The command response may comprise an outcome of a cryptographic operation, error reports and the like.
In some embodiments, the external NVM may comprise a conventional NVM device that is used for additional purposes in the computing system. By using at least part of an existing (typically low cost) NVM device for secure storage, the security device can be designed with no internal NVM or with only a small sized NVM device, thus reducing costs.
Since the host communicates with the security device over an interface in which the host serves as a master and the security device as a slave, the interface needs no bus mastering and arbitration capabilities, which reduces the interface complexity. In addition, interfaces that have no bus mastering support can also be used.
SYSTEM DESCRIPTION
Fig. 1 is a block diagram that schematically illustrates a computing system 20, in accordance with an embodiment that is described herein. System 20 comprises a host 24, which communicates with a security device 28 via a first interface 32, and with a Non-Volatile Memory (NVM) device 36 via a second interface 40. Security device 28 serves as a cryptographic co-processor for the host.
Host 24 comprises a CPU 44 running a security application 48 and a dedicated device driver 52, which together with security device 28 provide host 24 with functionalities required for implementing trusted computing and other security policies. Security application 48 provides a common application programming interface (API) toward security device 28 for the operating system (OS) and other application programs running on the host.
In some embodiments, system 20 implements a trusted computing system in accordance with standards developed by the Trusted Computing Group (TCG). In such embodiments, security device 28, together with dedicated device driver 52 and at least a portion of the storage space of NVM device 36 may comprise the Trusted Platform Module (TPM). Additionally, security application 48 may comprise the TCG Software Stack (TSS). TPM is specified, for example, in the three-part TPM main specifications, Version 1.2, Level 2, Revision 116, March 1, 2011, which is incorporated herein by reference. The three parts of the TPM main specifications include: "TPM Main Part 1 Design Principles," "TPM Main Part 2 TPM Structures," and "TPM Main Part 3 Commands." The TSS is described, for example, in "TCG Software Stack (TSS) Specification Version 1.2, Level 1, Errata A, Part1: Commands and Structures," March 7, 2007, which is incorporated herein by reference.
In some embodiments, trusted computing is implemented in a Personal Computer (PC) system. TCG standards for a PC client are described, for example, in "TCG PC Client Specific Implementation Specification for Conventional BIOS," Version 1.21, Errata Revision 1.00, February 24, 2012 (For TPM Family 1.2; Level 2) and in "TCG PC Client Specific TPM Interface Specification (TIS)," Version 1.3, March 21, 2013, which are incorporated herein by reference.
For example, security application 48 provides secure storage services, e.g., controlled access of system resources to stored information. In some embodiments, secure storage is implemented by defining one or more secure storage zones that are accessible under certain predefined conditions. Such conditions may include, for example, address spaces, system state, accessing authorization, physical presence authorization and read/write protection.
In the description that follows we assume that security application 48 is designed to interface security device 28 directly, for example, as specified in the TCG specifications cited above.
In some embodiments, security application 48 provides security services (e.g., for the OS of the host) by sending respective security commands to security device 28 via interface 32. When receiving a security command, security device 28 decodes the command and executes the command accordingly.
The execution of at least some of the security commands, involves accessing a NVM device, for example, to store and retrieve secret information. In some embodiments, the security device comprises an internal (typically small) NVM. In other embodiments, instead of, or in addition to an internal NVM, the security device accesses an external NVM such as NVM 36 that may be used in the system for additional purposes. As noted above, in addition to security application 48, CPU 44 runs dedicated device driver 52 that mediates between security device 28 and NVM device 36. Device driver 52 provides security device 28 with indirect access to external NVM 36, transparently to security application 48.
Security device 28 may request from device driver 52 to access NVM 36 in various ways. In one embodiment, security device 28 prepares the request internally, e.g., in a predefined register, and generates an interrupt signal to notify the device driver to read the request via interface 32. In another embodiment, the device driver polls a register within the security device to identify whether there is a pending request. In yet another embodiment, device driver 52 checks the register value in the security device conditionally, for example, in response to the security application sending a security command to the security device.
When device driver 52 receives a write request from the security device, the device driver stores the respective data in the external NVM via interface 40. In some embodiments, the security device encrypts and/or signs the data before issuing the write request. When device driver 52 receives a read request from the security device, the device driver reads the requested data from the external NVM via interface 40 and delivers the retrieved data to the security device via interface 32. When the retrieved data is encrypted and signed, the security device may authenticate and decrypt the data. 
Interfaces 32 and 40 may comprise any suitable interfaces. Interface 32, may comprise, for example, the Low Pin Count bus (LPC), Serial peripheral Interface (SPI) or the Inter-Integrated Circuit (I2c) bus. Interface 40 may comprise, for example, the SPI. In some embodiments interfaces 32 and 40 comprise separate (same or different) interfaces. In other embodiments, interfaces 32 and 40 may comprise the same interface, or share one or more interface signals.
The lower part of Fig. 1 depicts a block diagram of security device 28. In the present example, security device 28 comprises a microcontroller 60, which interconnects with multiple components of the security device via an internal bus 62. Microcontroller 60 serves as the main control unit of the security device. Security device 28 comprises a host interface module 64 for communicating with the host via interface 32.
Microcontroller 60 accepts security commands received via a host interface 64 and executes these commands possibly using other components within the security device, as appropriate. A system management module 66 provides various signals required for operating the device components, such as, for example, power distribution, clock signals and interrupt signals. In some embodiments, module 66 comprises one or more timers that can be used, for example, for time-stamping data. 
Security device 28 comprises a Random Access Memory (RAM) 68 that stores temporary data, and possibly code instructions for microcontroller 60. A Read Only Memory (ROM) module 72 stores code instructions for microcontroller 60. ROM 72 may additionally store various constant values. A One Time Programmable (OTP) memory 76 stores the security device configuration, as well as secret keys that are determined at production and are unique per each security device. In some embodiments, the security device comprises, instead of or in addition to OTP memory 76, a EEPROM and/or a Physical Unclonable Function (PUF), which can also be used for storing an internal secret.
Security device 28 further comprises a cryptographic engine 80, which supports various cryptographic functions and algorithms. In some embodiments, cryptographic engine 80 supports crypto primitives and algorithms such as a Random Number Generation (RNG), encryption/decryption algorithms such as the Advanced Encryption Standard (AES), the Rivest-Shamir-Adleman (RSA) cryptosystem for public-key encryption, Error Correction Coding/Decoding and cryptographic hash functions such as the Secure Hash Algorithm (SHA-256). Cryptographic engine 80 provides core cryptographic functions such as encryption/decryption and sign and authentication.
TRUSTED COMPUTING IN A PC CLIENT
In some embodiments, system 20 of Fig. 1 comprises a PC system. Table 1 below summarizes the relationships between various elements of system 20 and corresponding elements of a PC client in accordance with the TCG specifications cited above.
2017033537.tif 000006
Table1: Elements of system 20 with relation to corresponding PC client elements in accordance with the TCG specifications.
The configuration of system 20 and of security device 28 shown in Fig. 1 are example configurations, which are shown purely for the sake of conceptual clarity. Alternatively, any other suitable computing system and security device configurations can also be used. Elements that are not necessary for understanding the principles of the present invention, such as various interfaces, control circuits, addressing circuits, timing and sequencing circuits and debugging circuits, have been omitted from the figure for clarity.
In the example system configuration shown in Fig. 1, CPU 44, security device 28 and NVM device 36 are implemented as separate Integrated Circuits (ICs). In alternative embodiments, however, at least two of the CPU, security device, and NVM device may be integrated on separate semiconductor dies in a single Multi-Chip Package (MCP) or System on Chip (SoC), and may be interconnected by an internal bus.
The different elements of security device 28 may be implemented using any suitable hardware, such as in an Application-Specific Integrated Circuit (ASIC) or Field-Programmable Gate Array (FPGA). In some embodiments, some elements of the security device can be implemented using software, or using a combination of hardware and software elements. For example, in the present embodiment, cryptographic engine 80 and system management module 66 can be implemented as dedicated hardware modules. As another example, signature calculations as well as encryption/decryption functions can be implemented in hardware in cryptographic engine 80, in software to be executed by microcontroller 60, or in a combination of hardware and software.
In the description that follows and in the claims, the various elements of the security device, not including host interface 64, are collectively referred to as circuitry.
Typically, CPU 44 in host 24 comprises a general-purpose processor, which is programmed in software to carry out the functions described herein. The software may be downloaded to the processor in electronic form, over a network, for example, or it may, alternatively or additionally, be provided and/or stored on non-transitory tangible media, such as magnetic, optical, or electronic memory.
EXAMPLE METHOD CARRIED OUT BY THE SECURITY DEVICE
Fig. 2 is a flow chart that schematically illustrates a method for providing security services in a computing system, in accordance with an embodiment that is described herein. The method can be executed, for example, by security device 28 of Fig. 1. In describing the method we assume that the security device is part of a computing system such as (or similar to) system 20 of Fig. 1.
The method begins by security device 28 receiving a security command via host interface module 64 (that connects to the host via interface 32), at a reception step 100. The security command originates from security application 48 and identifies one or more cryptographic services to be provided by the security device. At a decoding step 104, the security device decodes the security command as a pre-execution phase. The decoding outcome typically comprises the types of the requested services and possibly one or more parameters, such as, for example, parameters identifying the respective cryptographic primitives, addressing and size information regarding the data on which to apply the services and the like.
To execute the command, the security device may need to access the external NVM. The security device may decide to access the external NVM based on the command parameters. Alternatively or additionally, the decision can depend on internal flags, variables and other data saved on the external NVM and restored, on demand, by the security device.
At a write checking step 106, the security device checks whether executing the command requires an access to the external NVM. When the security device requires to write data to the external NVM the method proceeds to an encrypt and sign step 108. In the present example, the command parameters include plaintext data, and the security device encrypts and/or signs the plaintext data, for example, using cryptographic engine 80, as specified by the security command. Following step 108, the encrypted and signed data is ready to be stored in the external NVM.
At a write requesting step 112, the security device requests from device driver 52 to store the data outcome of step 108 in the external NVM. As noted above, the security device operates as a slave of interface 32, and may request the storage operation in various ways, as described above, for example, by generating an interrupt signal to the host. In response to the request, the device driver reads the data that was encrypted and signed at step 108 from the security device via interface 32 and stores the data in the external NVM via interface 40.
When at step 106 the security device does not require writing to the external NVM, the method proceeds to a read checking step 114, in which the security device checks whether executing the command requires a read access to the external NVM. If so, the method proceeds to a read requesting step 116, in which the security device requests from device driver 52 to read data from the external NVM. In response to the read request, the device driver reads the requested data from external NVM 36 via interface 40 and delivers the retrieved data to the security device via interface 32. At a decryption and authentication step 120, the security device authenticates and decrypts the read data, e.g., using cryptographic engine 80.
Following step 112 or 120, or when the check result at step 114 is negative, the method proceeds to a continue command execution step 124. At step 124 the security device executes the security command, or part thereof, possibly using data retrieved from the external NVM. At a loop termination step 126, the security device checks whether additional accesses to the external NVM are needed to complete executing the command. When additional accesses are required, the method loops back to step 106. Otherwise, the method proceeds to a response preparation step 128.
At step 128, the security device prepares a command response, which may comprise, for example, an outcome of a cryptographic function, error reports and the like. At a response notification step 132, the security device notifies the security application that the command response is ready. The security device may notify the security application, for example by generating an interrupt signal, or the security application may poll a predefined register in the security device, similarly to the methods described above for requesting the device driver. The security application then reads the command response from the security device via interface 32, and the method terminates.
The method of Fig. 2 is given by way of example, and other suitable methods can also be used. For example, in some embodiments, the security command may indicate writing plaintext to or reading plaintext from the external NVM. In such embodiments, steps 108 and 120 may be skipped.
Although the embodiments described above refer mainly to a computing system such as a PC, similar embodiments can be implemented in other computing systems such as mobile devices, internet of things, smart metering, automotive and industrial systems/environments.
The disclosed techniques can be used for various secure storage applications, such as, for example, secured or trusted booting. For example, the Trusted computing Group (TCG) specifies the Unified Extensible Firmware Interface (UEFI) supporting the Secure Boot feature that is included in the Windows 8 operating system. As another example, the Chromium operating system includes the Verified Boot feature as a trusted booting solution. These features may be implemented using the methods and systems described herein.
It will be appreciated that the embodiments described above are cited by way of example, and that the present invention is not limited to what has been particularly shown and described hereinabove. Rather, the scope of the present invention includes both combinations and sub-combinations of the various features described hereinabove, as well as variations and modifications thereof which would occur to persons skilled in the art upon reading the foregoing description and which are not disclosed in the prior art. Documents incorporated by reference in the present patent application are to be considered an integral part of the application except that to the extent any terms are defined in these incorporated documents in a manner that conflicts with the definitions made explicitly or implicitly in the present specification, only the definitions in the present specification should be considered.
1.A method, comprising:
in a security device that provides a security service to a host, receiving a security command from an application program running on the host; and
executing the security command by accessing a Non-Volatile Memory (NVM) device external to the security device transparently to the application program via a dedicated device driver, which runs on the host and mediates between the NVM device and the security device.
2.The method according to claim 1, wherein the security device, the dedicated device driver and the NVM device are compliant with respective security standards of the Trusting Computing Group (TCG).
3.The method according to claim 1, wherein the security device, together with the dedicated device driver and at least a portion of the NVM device storage space, implements a Trusted Platform Module (TPM) in accordance with specifications of the TCG.
4.The method according to claim 1, wherein executing the security command comprises communicating between both the application program and the dedicated device driver, and the security device over an interface in which the host serves as a master and the security device serves as a slave.
5.The method according to claim 4, wherein executing the security command comprises communicating between the dedicated device driver and the NVM device over the interface.
6.The method according to claim 4, wherein executing the security command comprises requesting the device driver, by the security device, to write data to or read data from the NVM device.
7.The method according to claim 6, wherein requesting the device driver comprises preparing a request internally in the security device, and signaling to the device driver to obtain the request via the interface.
8.The method according to claim 6, wherein requesting the device driver comprises preparing a request in a register of the security device, and waiting for the device driver to obtain the request by polling the register by the device driver.
9.The method according to claim 1, wherein executing the security command comprises preparing, in the security device, a command response upon completing execution of the security command, and indicating to the application program that the command response is ready to be read by the application program.
10.A security device, comprising:
a host interface, which is configured to receive a security command from an application program running on a host; and
circuitry, which is configured to execute the security command by accessing a Non-Volatile Memory (NVM) device external to the security device transparently to the application program via a dedicated device driver, which runs on the host and mediates between the NVM device and the security device.
11.The security device according to claim 10, wherein the security device, together with the dedicated device driver and at least a portion of the NVM device storage space, implements a Trusted Platform Module (TPM) in accordance with specifications of the TCG.
12.The security device according to claim 10, wherein the circuitry is configured to execute the security command by communicating between both the application program and the dedicated device driver, and the security device over an interface in which the host serves as a master and the security device serves as a slave.
13.The security device according to claim 12, wherein the circuitry is configured to execute the security command by communicating between the dedicated device driver and the NVM device over the interface.
14.The security device according to claim 12, wherein the circuitry is configured to request the device driver to write data to or read data from the NVM device.
15.The security device according to claim 14, wherein the circuitry in configured to internally prepare a request for the security device and to signal the device driver, to obtain the request via the interface.
16.The security device according to claim 10, wherein the circuitry is configured to prepare a command response upon completing execution of the security command, and to indicate to the application program that the command response is ready to be read by the application program.
17.A security apparatus, comprising:
a security device that provides a security service to a host; and
a dedicated device driver running on the host,
wherein the device driver is configured to mediate between the security device and a Non-Volatile Memory (NVM) device external to the security device, and wherein the security device is configured to receive a security command from an application program running on the host, and to execute the security command by accessing the NVM device transparently to the application program via the dedicated device driver.
18.The security apparatus according to claim 17, wherein the security device, dedicated device driver and NVM device are compliant with respective security standards of the Trusting Computing Group (TCG).
19.The security apparatus according to claim 17, wherein both the application program and the security device are configured to communicate with the device driver over an interface in which the host serves as a master and the security device serves as a slave.
20.A computer software product, the product comprising a tangible non-transitory computer-readable medium in which program instructions are stored, which instructions, when read by a processor of a host, cause the processor to run a dedicated device driver for mediating between a security device that provides a security service for an application program running on the host and a Non-Volatile Memory (NVM) device external to the security device transparently to the application program via the dedicated device driver.
１．  Abstract
A method in a security device that provides a security service to a host includes receiving a security command from an application program running on the host. The security command is executed by accessing a Non-Volatile Memory (NVM) device external to the security device transparently to the application program via a dedicated device driver, which runs on the host and mediates between the NVM device and the security device.
２．  Representative  Drawing
Ｆｉｇ１
Ｆｉｇ１
2017033537.tif 000007
Ｆｉｇ２
2017033537.tif 000008