(57)【特許請求の範囲】
【請求項１】
実行環境の間で情報をセキュアに転送する方法であって、
暗号エンジンにおいて、第1の実行環境からオリジナルの平文を受信するステップと、
前記暗号エンジンによって第1の暗号鍵を入手するステップであって、前記第1の暗号鍵は、前記第1の暗号鍵が前記第1の実行環境および前記第1の実行環境ではない第2の実行環境に関連付けられるようにメモリ内で保持され、前記第1の実行環境および前記第2の実行環境の各々は、情報を処理するように構成された仮想マシンである、入手するステップと、
暗号化された情報を生成するために前記第1の暗号鍵を使用して前記暗号エンジンによって前記オリジナルの平文を暗号化し、前記暗号化された情報を中間格納先内に記憶するステップと、
前記暗号エンジンにおいて、前記中間格納先から前記暗号化された情報を入手するステップと、
再構成された平文を生成するために前記第1の暗号鍵を使用して前記暗号エンジンによって前記暗号化された情報を暗号化解除するステップと、
前記暗号エンジンによって、前記再構成された平文を前記第2の実行環境にとって使用可能にするステップと
を含む、方法。
【請求項２】
前記暗号エンジンによって、前記平文に関連する宛先指示を前記第1の実行環境から受信するステップであって、前記宛先指示は、前記第2の実行環境を示す、受信するステップと、
前記暗号エンジンによって、前記暗号化された情報に関連するソース指示を前記第2の実行環境から受信するステップであって、前記ソース指示は、前記第1の実行環境を示す、受信するステップと
をさらに含む、請求項1に記載の方法。
【請求項３】
前記暗号エンジンにおいて、前記第1の実行環境から前記第1の暗号鍵を受信するステップと、
前記暗号エンジンにおいて、前記第1の暗号鍵が前記第2の実行環境からの暗号文を暗号化解除する際に使用され得ることを示す第1の使用法指示を前記第1の実行環境から受信するステップと、
前記暗号エンジンによって、前記第1の暗号鍵を前記メモリに書き込むステップと
をさらに含む、請求項1に記載の方法。
【請求項４】
前記第1の使用法指示は、前記第2の実行環境からの暗号文のソースが前記第1の実行環境である場合に、前記第1の暗号鍵が前記暗号文を暗号化解除する際に使用され得ることを示す、請求項3に記載の方法。
【請求項５】
書き込む前記ステップは、前記第1の実行環境の第1の指示および前記第2の実行環境の第2の指示とともに前記第1の暗号鍵を前記メモリ内に書き込むステップを含む、請求項3に記載の方法。
【請求項６】
前記暗号エンジンにおいて、前記第1の暗号鍵が第3の実行環境からの暗号文を暗号化解除する際に使用され得ることを示す別の使用法指示を前記第1の実行環境から受信するステップをさらに含み、前記第3の実行環境は、前記第1の実行環境でも前記第2の実行環境でもなく、書き込む前記ステップは、前記第3の実行環境の第3の指示とともに前記第1の暗号鍵を書き込むステップを含む、請求項5に記載の方法。
【請求項７】
前記暗号エンジンにおいて前記第1の実行環境から前記第1の暗号鍵を受信するステップは、前記第1の実行環境からの情報のみを提供すると前記暗号エンジンが信頼するリンクを介して前記第1の暗号鍵を受信するステップを含む、請求項3に記載の方法。
【請求項８】
前記暗号エンジンにおいて、前記第2の実行環境から第2の暗号鍵を受信するステップと、
前記暗号エンジンにおいて、前記第2の暗号鍵が前記第1の実行環境からの暗号文を暗号化解除する際に使用され得ることを示す第2の使用法指示を前記第2の実行環境から受信するステップと、
前記暗号エンジンによって、前記第2の暗号鍵を前記メモリに書き込むステップと、
前記第1の実行環境および前記第2の実行環境のうちの他方によって前記第1の実行環境および前記第2の実行環境の各々を認証するステップ、または
共通のセッション鍵を生成するステップ
のうちの少なくとも1つのために前記第1の暗号鍵および前記第2の暗号鍵を使用するステップと
をさらに含む、請求項3に記載の方法。
【請求項９】
使用する前記ステップは、前記第1の実行環境および前記第2の実行環境の各々を認証するステップを含み、前記第1の実行環境によって前記第2の実行環境を認証するステップは、
前記暗号エンジンにおいて、前記第1の実行環境から第1の平文認証子を受信するステップと、
前記暗号エンジンによって、第1の暗号文認証子を生成するために、前記第1の暗号鍵を使用して前記第1の平文認証子を暗号化するステップと、
前記暗号エンジンにおいて、前記第2の実行環境から前記第1の暗号文認証子を受信するステップと、
前記暗号エンジンにおいて、第1の再構成された平文認証子を生成するために、前記第1の暗号鍵を使用して前記第1の暗号文認証子を暗号化解除するステップと、
前記暗号エンジンにおいて、第2の暗号文認証子を生成するために、前記第2の暗号鍵を使用して前記第1の再構成された平文認証子を暗号化するステップと、
前記暗号エンジンにおいて、前記第1の実行環境から前記第2の暗号文認証子を受信するステップと、
前記暗号エンジンにおいて、第2の再構成された平文認証子を生成するために、前記第2の暗号鍵を使用して前記第2の暗号文認証子を暗号化解除するステップと、
前記暗号エンジンによって、前記第2の再構成された平文認証子を前記第1の実行環境にとって使用可能にするステップと
を含む、請求項8に記載の方法。
【請求項１０】
乱数を生成し、前記第1の平文認証子として前記乱数を使用するステップをさらに含む、請求項9に記載の方法。
【請求項１１】
前記暗号エンジンにおいて、前記第1の実行環境から前記第1の暗号鍵を受信するステップと、
前記暗号エンジンにおいて、前記第2の実行環境から第2の暗号鍵を受信するステップと
をさらに含み、前記暗号エンジンによって前記オリジナルの平文を暗号化するステップは、前記暗号化された情報を生成するために前記第1の暗号鍵および前記第2の暗号鍵を使用するステップを含む
請求項1に記載の方法。
【請求項１２】
メモリモジュールと、
前記メモリモジュールに通信可能に結合され、
第1の実行環境からオリジナルの平文を受信し、
前記メモリモジュールから第1の暗号鍵を入手し、前記第1の暗号鍵は、前記第1の暗号鍵が前記第1の実行環境および前記第1の実行環境ではない第2の実行環境に関連付けられるように前記メモリモジュールによって記憶され、前記第1の実行環境および前記第2の実行環境の各々は、情報を処理するように構成された仮想マシンであり、
暗号化された情報を生成するために前記第1の暗号鍵を使用して前記オリジナルの平文を暗号化し、前記暗号化された情報を中間格納先内に記憶し、
前記中間格納先から前記暗号化された情報を入手し、
再構成された平文を生成するために前記第1の暗号鍵を使用して前記暗号化された情報を暗号化解除し、
前記再構成された平文を前記第2の実行環境にとって使用可能にする
ように構成されたプロセッサモジュールと
を含む暗号エンジン。
【請求項１３】
前記プロセッサモジュールは、
前記平文に関連する宛先指示を前記第1の実行環境から受信し、前記宛先指示は、前記第2の実行環境を示し、
前記暗号化された情報に関連するソース指示を前記第2の実行環境から受信し、前記ソース指示は、前記第1の実行環境を示す
ようにさらに構成され、前記プロセッサモジュールは、前記第2の実行環境を示す前記宛先指示の受信に基づいて前記第1の暗号鍵を使用して前記オリジナルの平文を暗号化するように構成され、
前記プロセッサモジュールは、前記第1の実行環境を示す前記ソース指示の受信に基づいて前記第1の暗号鍵を使用して前記暗号化された情報を暗号化解除するように構成される
請求項12に記載の暗号エンジン。
【請求項１４】
前記プロセッサモジュールは、
前記プロセッサモジュールが前記第1の実行環境に関連付ける第1のポートにおいて、前記第1の実行環境から前記第1の暗号鍵を受信し、
前記第1の暗号鍵が前記第2の実行環境からの暗号文を暗号化解除する際に使用され得ることを示す第1の使用法指示を前記第1の実行環境から受信し、
前記第1の暗号鍵が、前記第1の暗号鍵および前記第1の使用法指示の受信に基づいて前記第1の実行環境および前記第2の実行環境に関連付けられるように、前記第1の暗号鍵をメモリ内に記憶する
ようにさらに構成される、請求項12に記載の暗号エンジン。
【請求項１５】
前記プロセッサモジュールは、前記第1の実行環境の第1の指示および前記第2の実行環境の第2の指示とともに前記第1の暗号鍵を前記メモリ内に記憶するように構成される、請求項14に記載の暗号エンジン。
【請求項１６】
前記プロセッサモジュールは、前記第1の暗号鍵が第3の実行環境からの暗号文を暗号化解除する際に使用され得ることを示す別の使用法指示を前記第1の実行環境から前記暗号エンジンにおいて受信するようにさらに構成され、前記第3の実行環境は、前記第1の実行環境でも前記第2の実行環境でもなく、前記プロセッサモジュールは、前記第3の実行環境の第3の指示とともに前記第1の暗号鍵を記憶するようにさらに構成される、請求項15に記載の暗号エンジン。
【請求項１７】
前記プロセッサモジュールは、
前記プロセッサモジュールが前記第2の実行環境に関連付ける第2のポートにおいて、前記第2の実行環境から第2の暗号鍵を受信し、
前記第2の暗号鍵が前記第1の実行環境からの暗号文を暗号化解除する際に使用され得ることを示す第2の使用法指示を前記第2の実行環境から受信し、
前記第2の使用法指示に関連して前記第2の暗号鍵を前記メモリ内に記憶する
ようにさらに構成される、請求項14に記載の暗号エンジン。
【請求項１８】
前記プロセッサモジュールは、
前記第1の実行環境から前記第1の暗号鍵を受信し、
前記暗号化された情報を生成するために前記第1の暗号鍵および前記第2の暗号鍵を使用して前記オリジナルの平文を暗号化する
ようにさらに構成される、請求項12に記載の暗号エンジン。
【請求項１９】
第1の実行環境からオリジナルの平文を受信するための手段と、
メモリから第1の暗号鍵を入手するための第1の入手手段であって、前記第1の暗号鍵は、前記第1の実行環境および前記第1の実行環境ではない第2の実行環境に関連付けられ、前記第1の実行環境および前記第2の実行環境の各々は、情報を処理するように構成された仮想マシンである、第1の入手手段と、
暗号化された情報を生成するために前記第1の暗号鍵を使用して前記オリジナルの平文を暗号化し、前記暗号化された情報を中間格納先内に記憶するための手段と、
前記中間格納先から前記暗号化された情報を入手するための第2の入手手段と、
再構成された平文を生成するために前記第1の暗号鍵を使用して前記暗号化された情報を暗号化解除するための手段と、
前記再構成された平文を前記第2の実行環境にとって使用可能にするための手段と
を含む暗号エンジン。
【請求項２０】
受信するための前記手段は、さらに、前記平文に関連する宛先指示を前記第1の実行環境から受信するためのものであり、前記宛先指示は、前記第2の実行環境を示し、
前記第2の入手するための手段は、さらに、前記暗号化された情報に関連するソース指示を前記第2の実行環境から受信するためのものであり、前記ソース指示は、前記第1の実行環境を示し、
暗号化するための前記手段は、前記第2の実行環境を示す前記宛先指示の受信に基づいて前記第1の暗号鍵を使用して前記オリジナルの平文を暗号化するためのものであり、
暗号化解除するための前記手段は、前記第1の実行環境を示す前記ソース指示の受信に基づいて前記第1の暗号鍵を使用して前記暗号化された情報を暗号化解除するためのものである
請求項19に記載の暗号エンジン。
【請求項２１】
受信するための前記手段は、さらに、前記第1の実行環境に関連する第1のポートにおいて、前記第1の実行環境から前記第1の暗号鍵を受信し、前記第1の暗号鍵が前記第2の実行環境からの暗号文を暗号化解除する際に使用され得ることを示す第1の使用法指示を前記第1の実行環境から受信するためのものであり、前記暗号エンジンは、前記第1の暗号鍵が、前記第1の暗号鍵および前記第1の使用法指示の受信に基づいて前記第1の実行環境および前記第2の実行環境に関連付けられるように、前記第1の暗号鍵を前記メモリ内に記憶するための手段をさらに含む、請求項19に記載の暗号エンジン。
【請求項２２】
記憶するための前記手段は、前記第1の実行環境の第1の指示および前記第2の実行環境の第2の指示とともに前記第1の暗号鍵を前記メモリ内に記憶するように構成される、請求項21に記載の暗号エンジン。
【請求項２３】
受信するための前記手段は、前記第1の暗号鍵が第3の実行環境からの暗号文を暗号化解除する際に使用され得ることを示す別の使用法指示を前記第1の実行環境から前記暗号エンジンにおいて受信するようにさらに構成され、前記第3の実行環境は、前記第1の実行環境でも前記第2の実行環境でもなく、記憶するための前記手段は、前記第3の実行環境の第3の指示とともに前記第1の暗号鍵を記憶するように構成される、請求項22に記載の暗号エンジン。
【請求項２４】
前記第2の入手手段は、さらに、
前記第2の実行環境に関連する第2のポートにおいて、前記第2の実行環境から第2の暗号鍵を受信し、
前記第2の暗号鍵が前記第1の実行環境からの暗号文を暗号化解除する際に使用され得ることを示す第2の使用法指示を前記第2の実行環境から受信する
ためのものであり、記憶するための前記手段は、さらに、前記第2の使用法指示に関連して前記第2の暗号鍵を前記メモリ内に記憶するためのものである
請求項21に記載の暗号エンジン。
【請求項２５】
プロセッサに、
第1の実行環境からオリジナルの平文を受信させるように構成されたプロセッサ可読命令と、
メモリから第1の暗号鍵を入手させるように構成されたプロセッサ可読命令であって、前記第1の暗号鍵は、前記第1の実行環境および前記第1の実行環境ではない第2の実行環境に関連付けられ、前記第1の実行環境および前記第2の実行環境の各々は、情報を処理するように構成された仮想マシンである、入手させるように構成されたプロセッサ可読命令と、
暗号化された情報を生成するために前記第1の暗号鍵を使用して前記オリジナルの平文を暗号化させ、前記暗号化された情報を中間格納先内に記憶させるように構成されたプロセッサ可読命令と、
前記中間格納先から前記暗号化された情報を入手させるように構成されたプロセッサ可読命令と、
再構成された平文を生成するために前記第1の暗号鍵を使用して前記暗号化された情報を暗号化解除させるように構成されたプロセッサ可読命令と、
前記再構成された平文を前記第2の実行環境にとって使用可能にさせるように構成されたプロセッサ可読命令と
を含むプロセッサ可読記憶媒体。
【請求項２６】
前記プロセッサに、
前記平文に関連する宛先指示を前記第1の実行環境から受信させるように構成された命令であって、前記宛先指示は、前記第2の実行環境を示す、受信させるように構成された命令と、
前記暗号化された情報に関連するソース指示を前記第2の実行環境から受信させるように構成された命令であって、前記ソース指示は、前記第1の実行環境を示す、受信させるように構成された命令と
をさらに含み、前記プロセッサに暗号化させるように構成された前記命令は、前記プロセッサに、前記第2の実行環境を示す前記宛先指示の受信に基づいて前記第1の暗号鍵を使用して前記オリジナルの平文を暗号化させるように構成され、
前記プロセッサに暗号化解除させるように構成された前記命令は、前記プロセッサに、前記第1の実行環境を示す前記ソース指示の受信に基づいて前記第1の暗号鍵を使用して前記暗号化された情報を暗号化解除させるように構成される
請求項25に記載の記憶媒体。
【請求項２７】
前記プロセッサに、
前記第1の実行環境から前記第1の暗号鍵を受信させるための命令と、
前記第1の暗号鍵が前記第2の実行環境からの暗号文を暗号化解除する際に使用され得ることを示す第1の使用法指示を前記第1の実行環境から受信させるための命令と、
前記第1の暗号鍵が、前記第1の暗号鍵および前記第1の使用法指示の受信に基づいて前記第1の実行環境および前記第2の実行環境に関連付けられるように、前記第1の暗号鍵を前記メモリ内に記憶させるための命令と
をさらに含む、請求項25に記載の記憶媒体。
【請求項２８】
前記プロセッサに記憶させるように構成された前記命令は、前記プロセッサに、前記第1の実行環境の第1の指示および前記第2の実行環境の第2の指示とともに前記第1の暗号鍵を前記メモリ内に記憶させるように構成される、請求項27に記載の記憶媒体。
【請求項２９】
前記プロセッサに、前記第1の暗号鍵が第3の実行環境からの暗号文を暗号化解除する際に使用され得ることを示す別の使用法指示を前記第1の実行環境から暗号エンジンにおいて受信させるように構成された命令をさらに含み、前記第3の実行環境は、前記第1の実行環境でも前記第2の実行環境でもなく、前記プロセッサに記憶させるように構成された前記命令は、前記プロセッサに、前記第3の実行環境の第3の指示とともに前記第1の暗号鍵を記憶させるように構成される、請求項28に記載の記憶媒体。
【請求項３０】
前記プロセッサに、
前記第2の実行環境から第2の暗号鍵を受信させるように構成された命令と、
前記第2の暗号鍵が前記第1の実行環境からの暗号文を暗号化解除する際に使用され得ることを示す第2の使用法指示を前記第2の実行環境から受信させるように構成された命令と、
前記第2の暗号鍵が前記第2の実行環境からの平文を暗号化するのに使用され得ることの指示および前記第2の暗号鍵が前記第1の実行環境からの暗号文を暗号化解除するのに使用され得ることの指示とともに前記第2の暗号鍵を前記メモリ内に記憶させるように構成された命令と
をさらに含む、請求項27に記載の記憶媒体。
【請求項３１】
前記暗号エンジンにおいて、前記中間格納先から前記暗号化された情報を入手するステップは、前記第2の実行環境を介して前記中間格納先から前記暗号化された情報を入手するステップを含む、請求項1に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
セキュア実行環境通信に関する。
【背景技術】
【０００２】
分散コンピューティングシステムは、処理容量に関する需要が増加するのでより優勢になりつつある。複数のコンピュータの処理容量の一部が共通のタスクのために割り振られるなど、様々な形の分散コンピューティングシステムが存在する。分散コンピューティングシステムは、異なる物理プロセッサ、異なる物理プロセッサの一部、複数のプロセッサに常駐する複数のオペレーティングシステム、単一のプロセッサに常駐する複数のオペレーティングシステム、これらのいずれかのうちの2つ以上の組合せ、またはさらなる他の構成を含むことができる。たとえば、処理アルゴリズムを含むそれら自体のプロセッサを含んでも含まなくてもよい異なるセンサが、多数の異なるタイプの情報、たとえば、識別のための目または網膜のスキャン、識別のための音声認識、心拍検出、呼吸検出、ジェスチャ検出、指紋認識などを提供するのに使用され得る。
【０００３】
分散コンピューティングシステムの多くのケースにおいて、異なる実行環境がお互いとセキュアに通信することは、望ましく、あるいは必要ですらある可能性がある。以前の集中化されたシステムにおいて、セキュア通信は簡単に管理されたが、分散システム内でのセキュア通信の提供は、それらのシステムが単一のデバイス内にある場合であっても、より挑戦的である。セキュア通信を提供する1つの形は、実行環境の間(すなわち、1つもしくは複数のプロセッサ、および/または1つもしくは複数のオペレーティングシステム、および/または1つもしくは複数の仮想マシン、その他、またはこれらのいずれかの組合せの間)でセキュアチャネルを確立することである。実行環境の間でのセキュアチャネルの確立は、重大な設計の取組みと、時にはキープロビジョニングおよびセキュアストレージとを使用し、伝統的に面倒であった。たとえば、各実行環境は、公開鍵を有し、この鍵を使用して、秘密鍵を使用する暗号化解除のために別の実行環境にその後に転送される情報を暗号化することができる。たとえば、Secure Sockets Layer(SSL)暗号プロトコルを使用することによって、実行環境は、セッション鍵を確立するために証明書を交換する(認証局および公開鍵インフラストラクチャを使用して)。このプロトコルは、多数のエンティティへの多数の鍵の複雑なキープロビジョニングを含む。代替案では、共有メモリが、情報を交換する実行環境の対ごとに確立され得る。これは、高価なメモリリソースを各対の専用にすること、スケーラビリティを抑制することを必然的に伴い、複雑で高コストなメモリ管理をも使用する可能性がある。さらに、メモリマネージャが、情報にアクセスする可能性があり、かつ/または情報に対する保護を除去する可能性がある。
【発明の概要】
【課題を解決するための手段】
【０００４】
実行環境の間で情報をセキュアに転送する方法の例は、暗号エンジンにおいて、第1の実行環境からオリジナルの平文を受信するステップと、暗号エンジンによって第1の暗号鍵を入手するステップであって、第1の暗号鍵は、第1の暗号鍵が第1の実行環境および第1の実行環境ではない第2の実行環境に関連付けられるようにメモリ内で保持される、入手するステップと、暗号化された情報を生成するために第1の暗号鍵を使用して暗号エンジンによってオリジナルの平文を暗号化し、暗号化された情報を中間格納先内に記憶するステップと、暗号エンジンにおいて、中間格納先から暗号化された情報を入手するステップと、再構成された平文を生成するために第1の暗号鍵を使用して暗号エンジンによって暗号化された情報を暗号化解除するステップと、暗号エンジンによって、再構成された平文を第2の実行環境にとって使用可能にするステップとを含む。
【０００５】
そのような方法の実施態様は、以下の特徴のうちの1つまたは複数を含むことができる。この方法は、暗号エンジンによって、平文に関連する宛先指示を第1の実行環境から受信するステップであって、宛先指示は、第2の実行環境を示す、受信するステップと、暗号エンジンによって、暗号化された情報に関連するソース指示を第2の実行環境から受信するステップであって、ソース指示は、第1の実行環境を示す、受信するステップとをさらに含む。この方法は、暗号エンジンにおいて、第1の実行環境から第1の暗号鍵を受信するステップと、暗号エンジンにおいて、第1の暗号鍵が第2の実行環境からの暗号文を暗号化解除する際に使用され得ることを示す第1の使用法指示を第1の実行環境から受信するステップと、暗号エンジンによって、第1の暗号鍵をメモリに書き込むステップとをさらに含む。第1の使用法指示は、第2の実行環境からの暗号文のソースが第1の実行環境である場合に、第1の暗号鍵が暗号文を暗号化解除する際に使用され得ることを示す。書き込むステップは、第1の実行環境の第1の指示および第2の実行環境の第2の指示とともに第1の暗号鍵をメモリ内に書き込むステップを含む。この方法は、暗号エンジンにおいて、第1の暗号鍵が第3の実行環境からの暗号文を暗号化解除する際に使用され得ることを示す別の使用法指示を第1の実行環境から受信するステップをさらに含み、第3の実行環境は、第1の実行環境でも第2の実行環境でもなく、書き込むステップは、第3の実行環境の第3の指示とともに第1の暗号鍵を書き込むステップを含む。暗号エンジンにおいて第1の実行環境から第1の暗号鍵を受信するステップは、第1の実行環境からの情報のみを提供すると暗号エンジンが信頼するリンクを介して第1の暗号鍵を受信するステップを含む。この方法は、暗号エンジンにおいて、第2の実行環境から第2の暗号鍵を受信するステップと、暗号エンジンにおいて、第2の暗号鍵が第1の実行環境からの暗号文を暗号化解除する際に使用され得ることを示す第2の使用法指示を第2の実行環境から受信するステップと、暗号エンジンによって、第2の暗号鍵をメモリに書き込むステップと、第1の実行環境および第2の実行環境のうちの他方によって第1の実行環境および第2の実行環境の各々を認証するステップ、または共通のセッション鍵を生成するステップのうちの少なくとも1つのために第1の暗号鍵および第2の暗号鍵を使用するステップとをさらに含む。使用するステップは、第1の実行環境および第2の実行環境の各々を認証するステップを含み、第1の実行環境によって第2の実行環境を認証するステップは、暗号エンジンにおいて、第1の実行環境から第1の平文認証子を受信するステップと、暗号エンジンによって、第1の暗号文認証子を生成するために、第1の暗号鍵を使用して第1の平文認証子を暗号化するステップと、暗号エンジンにおいて、第2の実行環境から第1の暗号文認証子を受信するステップと、暗号エンジンにおいて、第1の再構成された平文認証子を生成するために、第1の暗号鍵を使用して第1の暗号文認証子を暗号化解除するステップと、暗号エンジンにおいて、第2の暗号文認証子を生成するために、第2の暗号鍵を使用して第1の再構成された平文認証子を暗号化するステップと、暗号エンジンにおいて、第1の実行環境から第2の暗号文認証子を受信するステップと、暗号エンジンにおいて、第2の再構成された平文認証子を生成するために、第2の暗号鍵を使用して第2の暗号文認証子を暗号化解除するステップと、暗号エンジンによって、第2の再構成された平文認証子を第1の実行環境にとって使用可能にするステップとを含む。この方法は、乱数を生成し、第1の平文認証子として乱数を使用するステップをさらに含む。この方法は、暗号エンジンにおいて、第1の実行環境から第1の暗号鍵を受信するステップと、暗号エンジンにおいて、第2の実行環境から第2の暗号鍵を受信するステップとをさらに含み、暗号エンジンによってオリジナルの平文を暗号化するステップは、暗号化された情報を生成するために第1の暗号鍵および第2の暗号鍵を使用するステップを含む。
【０００６】
暗号エンジンの例は、メモリモジュールと、メモリモジュールに通信可能に結合され、第1の実行環境からオリジナルの平文を受信し、メモリモジュールから第1の暗号鍵を入手し、第1の暗号鍵は、第1の暗号鍵が第1の実行環境および第1の実行環境ではない第2の実行環境に関連付けられるようにメモリモジュールによって記憶され、暗号化された情報を生成するために第1の暗号鍵を使用してオリジナルの平文を暗号化し、暗号化された情報を中間格納先内に記憶し、中間格納先から暗号化された情報を入手し、再構成された平文を生成するために第1の暗号鍵を使用して暗号化された情報を暗号化解除し、再構成された平文を第2の実行環境にとって使用可能にするように構成されたプロセッサモジュールとを含む。
【０００７】
そのような暗号エンジンの実施態様は、以下の特徴のうちの1つまたは複数を含むことができる。プロセッサモジュールは、平文に関連する宛先指示を第1の実行環境から受信し、宛先指示は、第2の実行環境を示し、暗号化された情報に関連するソース指示を第2の実行環境から受信し、ソース指示は、第1の実行環境を示すようにさらに構成され、プロセッサモジュールは、第2の実行環境を示す宛先指示の受信に基づいて第1の暗号鍵を使用してオリジナルの平文を暗号化するように構成され、プロセッサモジュールは、第1の実行環境を示すソース指示の受信に基づいて第1の暗号鍵を使用して暗号化された情報を暗号化解除するように構成される。プロセッサモジュールは、プロセッサモジュールが第1の実行環境に関連付ける第1のポートにおいて、第1の実行環境から第1の暗号鍵を受信し、第1の暗号鍵が第2の実行環境からの暗号文を暗号化解除する際に使用され得ることを示す第1の使用法指示を第1の実行環境から受信し、第1の暗号鍵が、第1の暗号鍵および第1の使用法指示の受信に基づいて第1の実行環境および第2の実行環境に関連付けられるように、第1の暗号鍵をメモリ内に記憶するようにさらに構成される。プロセッサモジュールは、第1の実行環境の第1の指示および第2の実行環境の第2の指示とともに第1の暗号鍵をメモリ内に記憶するように構成される。プロセッサモジュールは、第1の暗号鍵が第3の実行環境からの暗号文を暗号化解除する際に使用され得ることを示す別の使用法指示を第1の実行環境から暗号エンジンにおいて受信するようにさらに構成され、第3の実行環境は、第1の実行環境でも第2の実行環境でもなく、プロセッサモジュールは、第3の実行環境の第3の指示とともに第1の暗号鍵を記憶するようにさらに構成される。プロセッサモジュールは、プロセッサモジュールが第2の実行環境に関連付ける第2のポートにおいて、第2の実行環境から第2の暗号鍵を受信し、第2の暗号鍵が第1の実行環境からの暗号文を暗号化解除する際に使用され得ることを示す第2の使用法指示を第2の実行環境から受信し、第2の使用法指示に関連して第2の暗号鍵をメモリ内に記憶するようにさらに構成される。プロセッサモジュールは、第1の実行環境から第1の暗号鍵を受信し、第2の実行環境から第2の暗号鍵を受信し、暗号化された情報を生成するために第1の暗号鍵および第2の暗号鍵を使用してオリジナルの平文を暗号化するようにさらに構成される。
【０００８】
暗号エンジンの別の例は、第1の実行環境からオリジナルの平文を受信するための手段と、メモリから第1の暗号鍵を入手するための第1の入手手段であって、第1の暗号鍵は、第1の実行環境および第1の実行環境ではない第2の実行環境に関連する、第1の入手手段と、暗号化された情報を生成するために第1の暗号鍵を使用してオリジナルの平文を暗号化し、暗号化された情報を中間格納先内に記憶するための手段と、中間格納先から暗号化された情報を入手するための第2の入手手段と、再構成された平文を生成するために第1の暗号鍵を使用して暗号化された情報を暗号化解除するための手段と、再構成された平文を第2の実行環境にとって使用可能にするための手段とを含む。
【０００９】
そのような暗号エンジンの実施態様は、以下の特徴のうちの1つまたは複数を含むことができる。受信するための手段は、さらに、平文に関連する宛先指示を第1の実行環境から受信するためのものであり、宛先指示は、第2の実行環境を示し、第2の入手手段は、さらに、暗号化された情報に関連するソース指示を第2の実行環境から受信するためのものであり、ソース指示は、第1の実行環境を示し、暗号化するための手段は、第2の実行環境を示す宛先指示の受信に基づいて第1の暗号鍵を使用してオリジナルの平文を暗号化するためのものであり、暗号化解除するための手段は、第1の実行環境を示すソース指示の受信に基づいて第1の暗号鍵を使用して暗号化された情報を暗号化解除するためのものである。受信するための手段は、さらに、第1の実行環境に関連する第1のポートにおいて、第1の実行環境から第1の暗号鍵を受信し、第1の暗号鍵が第2の実行環境からの暗号文を暗号化解除する際に使用され得ることを示す第1の使用法指示を第1の実行環境から受信するためのものであり、暗号エンジンは、第1の暗号鍵が、第1の暗号鍵および第1の使用法指示の受信に基づいて第1の実行環境および第2の実行環境に関連付けられるように、第1の暗号鍵をメモリ内に記憶するための手段をさらに含む。記憶するための手段は、第1の実行環境の第1の指示および第2の実行環境の第2の指示とともに第1の暗号鍵をメモリ内に記憶するように構成される。受信するための手段は、さらに第1の暗号鍵が第3の実行環境からの暗号文を暗号化解除する際に使用され得ることを示す別の使用法指示を第1の実行環境から暗号エンジンにおいて受信するためのものであり、第3の実行環境は、第1の実行環境でも第2の実行環境でもなく、記憶するための手段は、第3の実行環境の第3の指示とともに第1の暗号鍵を記憶するように構成される。第2の入手手段は、さらに、第2の実行環境に関連する第2のポートにおいて、第2の実行環境から第2の暗号鍵を受信し、第2の暗号鍵が第1の実行環境からの暗号文を暗号化解除する際に使用され得ることを示す第2の使用法指示を第2の実行環境から受信するためのものであり、記憶するための手段は、さらに、第2の使用法指示に関連して第2の暗号鍵をメモリ内に記憶するためのものである。
【００１０】
非一時的プロセッサ可読記憶媒体の例は、プロセッサに、第1の実行環境からオリジナルの平文を受信させるように構成されたプロセッサ可読命令と、メモリから第1の暗号鍵を入手させるように構成されたプロセッサ可読命令であって、第1の暗号鍵は、第1の実行環境および第1の実行環境ではない第2の実行環境に関連付けられる、入手させるように構成されたプロセッサ可読命令と、暗号化された情報を生成するために第1の暗号鍵を使用してオリジナルの平文を暗号化させ、暗号化された情報を中間格納先内に記憶させるように構成されたプロセッサ可読命令と、中間格納先から暗号化された情報を入手させるように構成されたプロセッサ可読命令と、再構成された平文を生成するために第1の暗号鍵を使用して暗号化された情報を暗号化解除させるように構成されたプロセッサ可読命令と、再構成された平文を第2の実行環境にとって使用可能にさせるように構成されたプロセッサ可読命令とを含む。
【００１１】
そのような記憶媒体の実施態様は、以下の特徴のうちの1つまたは複数を含むことができる。記憶媒体は、プロセッサに、平文に関連する宛先指示を第1の実行環境から受信させるように構成された命令であって、宛先指示は、第2の実行環境を示す、受信させるように構成された命令と、暗号化された情報に関連するソース指示を第2の実行環境から受信させるように構成された命令であって、ソース指示は、第1の実行環境を示す、受信させるように構成された命令とをさらに含み、プロセッサに暗号化させるように構成された命令は、プロセッサに、第2の実行環境を示す宛先指示の受信に基づいて第1の暗号鍵を使用してオリジナルの平文を暗号化させるように構成され、プロセッサに暗号化解除させるように構成された命令は、プロセッサに、第1の実行環境を示すソース指示の受信に基づいて第1の暗号鍵を使用して暗号化された情報を暗号化解除させるように構成される。記憶媒体は、プロセッサに、第1の実行環境から第1の暗号鍵を受信させるための命令と、第1の暗号鍵が第2の実行環境からの暗号文を暗号化解除する際に使用され得ることを示す第1の使用法指示を第1の実行環境から受信させるための命令と、第1の暗号鍵が、第1の暗号鍵および第1の使用法指示の受信に基づいて第1の実行環境および第2の実行環境に関連付けられるように、第1の暗号鍵をメモリ内に記憶させるための命令とをさらに含む。プロセッサに記憶させるように構成された命令は、プロセッサに、第1の実行環境の第1の指示および第2の実行環境の第2の指示とともに第1の暗号鍵をメモリ内に記憶させるように構成される。記憶媒体は、プロセッサに、第1の暗号鍵が第3の実行環境からの暗号文を暗号化解除する際に使用され得ることを示す別の使用法指示を第1の実行環境から暗号エンジンにおいて受信させるように構成された命令をさらに含み、第3の実行環境は、第1の実行環境でも第2の実行環境でもなく、プロセッサに記憶させるように構成された命令は、プロセッサに、第3の実行環境の第3の指示とともに第1の暗号鍵を記憶させるように構成される。記憶媒体は、プロセッサに、第2の実行環境から第2の暗号鍵を受信させるように構成された命令と、第2の暗号鍵が第1の実行環境からの暗号文を暗号化解除する際に使用され得ることを示す第2の使用法指示を第2の実行環境から受信させるように構成された命令と、第2の暗号鍵が第2の実行環境からの平文を暗号化するのに使用され得ることの指示および第2の暗号鍵が第1の実行環境からの暗号文を暗号化解除するのに使用され得ることの指示とともに第2の暗号鍵をメモリ内に記憶させるように構成された命令とをさらに含む。
【００１２】
本明細書で説明される項目および/または技法は、以下の能力および/または言及されない他の能力のうちの1つまたは複数を提供することができる。セキュアトンネルは、トンネルの両端の間で証明書を交換することなく提供され得る。セキュアトンネルを使用するエンティティは、たとえば証明書マネージャを使用せず、証明書を交換せずに、お互いを認証することができる。セキュア通信のためのアドホックトンネルが、確立され得る。セキュア情報交換のためのトンネルが、単一の暗号鍵を使用して、単一の情報ソースと複数の宛先との間で確立され得る。他の能力が提供され得、本開示による実施態様のすべてが、議論される能力のすべてではないにせよいずれかを提供しなければならないとは限らない。
【図面の簡単な説明】
【００１３】
【図１】分散コンピューティングシステムを示すブロック図である。
【図２】図1内に示されたシステムを実施するためのシステムオンアチップを示すブロック図である。
【図３】図1内に示された暗号エンジンを示すブロック図である。
【図４】図3内に示された鍵ストレージ内の鍵テーブルの一部を示す図である。
【図５】図1内に示されたシステムの例の実施態様を示すブロック図である。
【図６】図5内に示された実行環境の間で情報をセキュアに転送するプロセスを示すブロック流れ図である。
【発明を実施するための形態】
【００１４】
セキュア通信を提供するための技法が議論される。たとえば、分散コンピューティングシステムの実行環境の間のセキュア通信は、共有メモリ(複数の実行環境によってアクセス可能な位置を有するメモリ)を使用せず、実行環境の間で証明書を交換せずに提供され得る。暗号エンジンは、暗号エンジンのユーザ、たとえば暗号化されまたは暗号化解除される情報を求める実行環境をセキュアに識別することができ、ユーザは、たとえば実行環境によって変更不可能な、ハードウェアによって交付されるハードウェアアイデンティティまたは機械アイデンティティを用いて、セキュアに識別される。送る実行環境は、送る実行環境がたとえば信頼される通信リンクを介して送信される暗号鍵によって識別されるように、暗号エンジンに暗号鍵を提供することができ、暗号エンジンは、送る実行環境に関連する暗号鍵を記憶することができる。送る実行環境は、送る実行環境からのメッセージを暗号化解除するのに暗号鍵を使用することができる受信する実行環境を示すことができる。暗号鍵は、送る実行環境および受信する実行環境に関連して、たとえば、これらの実行環境の識別子に関連して、暗号エンジンによって記憶され得る。送る実行環境は、受信する実行環境が所期の受取側であることの指示(この指示は、たとえば、所期の受取側がそれに関して許可されたユーザである特定の鍵の指示とすることができる)とともに平文メッセージを暗号エンジンに提供することができる。暗号エンジンは、送る実行環境によって提供され、受信する実行環境によるアクセスおよび/または使用のために指定される暗号鍵を使用して平文メッセージを暗号化することができる。次いで、暗号化された平文メッセージは、暗号化されたメッセージすなわち暗号文メッセージであり、メッセージを移動することはできるが暗号鍵を使用できないのでメッセージを解読することはできない、高水準オペレーティングシステムなどの信頼されないブローカを介して、受信する実行環境に提供され得る。暗号文は、平文を表し、したがって、テキスト情報および/または写真、ビデオ、その他などの非テキスト情報を表すことができる。受信する実行環境は、暗号文メッセージのソースの指示(この指示は、たとえば、ソースがそれの所有者である特定の鍵の指示とすることができる)とともに受信された暗号文メッセージを暗号エンジンに提供することができる。暗号エンジンは、送る実行環境によって提供され、受信する実行環境によるアクセスまたは使用のために指定された暗号鍵を使用して、再構成された平文メッセージを生成するために、暗号文メッセージを暗号化解除することができる。暗号エンジンは、再構成された平文メッセージを受信する実行環境に提供することができる。下で議論される技法を含むがこれに限定されない他の技法が、使用され得る。
【００１５】
図1を参照すると、分散コンピューティングシステム10は、暗号化/暗号化解除エンジンすなわち暗号エンジン12と、モデム14、オーディオEE16、ビデオEE18、センサ/検出器EE20、エンタープライズEE22、トラストゾーンEE24、高水準オペレーティングシステム(HLOS)EE26、および1つまたは複数の他の実行環境28を含む複数の実行環境(EE)30とを含む。他のEE28は、図示のEEに似た1つまたは複数のEEを含むことができ、たとえば、別のセンサ/検出器EE、別のビデオEEなどを含むことができる。センサ/検出器EE20は、カメラ、衛星測位システム(SPS)受信器(たとえば、全地球測位システム(GPS)受信器)、マイクロホン、またはバイオメトリックセンサ、その他などの様々なセンサのいずれかとすることができる。バイオメトリックセンサは、指紋センサ、心電図(ECG)センサ、脳波(EEG)センサ、その他などの様々なセンサのいずれかとすることができる。単純さのために、「EE」は、図内の箱からは省略されている。さらに、実行環境は、モジュールと呼ばれる場合がある。実行環境30の各々は、ハードウェア、ファームウェア、1つまたは複数のプロセッサ、またはこれらのうちのいずれかの組合せによって実施され得る。複数のプロセッサが、実行環境を実施するのに使用され得、各実行環境は、1つまたは複数のプロセッサによって実施され、あるいは、実行環境30の1つまたは複数のグループ(すなわち、1グループあたり2つ以上の実行環境)のそれぞれが、単一のプロセッサによって実施される。単一のプロセッサが実行環境30のうちの複数(おそらくは実行環境30のすべて)を実施する場合に、実行環境30は、プロセッサによって実施される別個のオペレーティングシステムである。実行環境30は、オペレーティングシステムまたは仮想マシンと呼ばれる場合がある。実行環境30は、それぞれの情報を処理し、機密の形においてそれらの間で情報を共有することのできるモジュールである。図示の実行環境30は、実行環境の例であり、他の実行環境が提供され得、かつ/または実行環境14、16、18、20、22、24、26、28のうちの1つまたは複数が、システム10から省略され得る。システム10は、様々な目的のために使用され得、本明細書で説明される技法は、実行環境の間で情報をセキュアに渡すためにシステム10の様々なアプリケーションのいずれにも適用可能である。
【００１６】
図2をも参照すると、図1内に示されたシステム10を実施するためのシステムオンアチップ(SoC)50は、プロセッサ52、メモリ54、センサ56、および暗号エンジン12を含む。プロセッサ52は、複数のプロセッサを含むことができ、センサ56は、複数のセンサを含むことができる。センサ56は、オプションであり、たとえば、感知(たとえば、測定)されるべきオーディオ情報、ビデオ情報、バイオメトリック情報、または他の情報がない場合に、省略され得る。さらに、センサ56(たとえば、センサ56が複数のセンサを含む場合に、1つまたは複数のセンサ)は、SoC50の外部に(すなわち、離れて)配置され得る。プロセッサ52は、好ましくはインテリジェントハードウェアデバイス、たとえば、ARM(登録商標)、Intel(登録商標) Corporation、またはAMD(登録商標)によって製造されまたは設計されるものなどの中央処理装置(CPU)、マイクロコントローラ、特定用途向け集積回路(ASIC)、その他である。プロセッサ52は、SoC50内で分散され得る複数の別々の物理エンティティを含むことができる。メモリ54は、ランダムアクセスメモリ(RAM)および読取り専用メモリ(ROM)を含む。メモリ54は、実行された時に本明細書で説明される様々な機能をプロセッサ52に実行させるように構成された命令を含むプロセッサ可読プロセッサ実行可能ソフトウェアコードであるソフトウェア58を記憶する非一時的プロセッサ可読記憶媒体である(この説明は、機能を実行するプロセッサ52だけに言及する場合があるが)。代替案では、ソフトウェア58は、プロセッサ52によって直接に実行可能であるのではなく、たとえばコンパイルされ実行される時にプロセッサ52に機能を実行させるように構成され得る。プロセッサ52は、メモリ54に通信可能に結合される。暗号エンジン12は、下でより十分に議論されるように、暗号鍵を記憶し、平文を暗号文に暗号化し、暗号文を記憶し、暗号文を再構成された平文に暗号化解除し、再構成された平文を記憶するように構成されたハードウェアブロックである。
【００１７】
プロセッサ52は、メモリ54および適当な場合にセンサ56とともに、実行環境30を実施するように構成される。実行環境30のいずれもが、それ自体のプロセッサを有することができる。メモリ54は、実行環境30の各々のための1つまたは複数のメモリを含むメモリのコレクションとすることができる。さらに、図2内ではSoC50の一部として図示されているが、メモリ54は、部分的にまたは全体的に、SoC50の外部、たとえば、パッケージオンパッケージ(PoP)構成内でSoC50の上に配置され得る。
【００１８】
メモリ54は、実行環境30のうちの複数の実行環境によって使用されるジョイントメモリ(joint memory)を含むことができる。このジョイントメモリは、共有メモリではないものとすることができる、すなわち、複数の実行環境30が、単一のメモリ位置に書き込むことができず、1つの実行環境30が、あるメモリ位置に書き込むことができず、別の実行環境30が、そのメモリ位置に書き込むことができるように、異なる実行環境30が、同一のメモリ位置にアクセスできないものとすることができる。したがって、実行環境30が情報を受信しまたは情報を提供することの指示は、その情報が実行環境30によってジョイントメモリから読み取られることまたはその情報が実行環境30によってジョイントメモリに提供されることと同等とすることができ、これによって実施され得る。ジョイントメモリは、たとえばメモリ位置への情報の記憶および/またはメモリ位置からの情報の読取りのための、そのメモリ位置へのアクセスを制御するためのメモリ管理ユニットを含むことができる。
【００１９】
実行環境30は、たとえばオーディオ情報、ビデオ情報、バイオメトリック情報、および/または他の情報を提供するために、様々な情報を処理するオペレーティングシステムまたは仮想マシンである。実行環境30の各々は、暗号エンジン12が情報のソースをセキュアに識別できる形において暗号エンジン12に情報を提供するために暗号エンジン12に通信可能に結合され得る。たとえば、暗号エンジン12は、情報を提供する実行環境30をセキュアに変更不可能に識別するハードウェア信号もしくは識別子に基づいて、または、情報がそれを介して実行環境30のうちのそれぞれの実行環境から暗号エンジン12に来るプライベートリンクまたはポートを識別することによって、情報の所有者またはソースをたやすく識別することができる。実行環境30は、暗号鍵を含む情報を暗号エンジン12に提供し、または情報を暗号エンジン12から受信することができ、あるいは、実行環境30によって示される情報を暗号エンジン12に暗号化させまたは暗号化解除させるためにコマンドを提供することができる。好ましくは、実行環境は、暗号エンジン12から暗号鍵を受信することができない。
【００２０】
図1〜図2をさらに参照しながら図3を参照すると、暗号エンジン12は、プロセッサ62と、ソフトウェア(SW)66(オプション)および鍵ストレージ(KS)68とを含む内部メモリ64とを含むコンピュータシステムを備える。内部メモリ64は、実行環境30によってアクセス可能ではない。プロセッサ62は、好ましくは、平文を暗号文に暗号化し、暗号文を平文に暗号化解除するように構成されたインテリジェントハードウェア論理デバイスである。代替案では、プロセッサ62は、暗号化機能および/または暗号化解除機能を実施するために、プロセッサと、プロセッサ可読メモリ内に記憶されたソフトウェアとを含むことができる。したがって、たとえば、プロセッサ62は、ARM(登録商標)、Intel(登録商標)Corporation、またはAMD(登録商標)によって製造されまたは設計されるものなどの中央処理装置(CPU)、マイクロコントローラ、特定用途向け集積回路(ASIC)、その他を含むことができる。プロセッサ62は、暗号エンジン12内で分散され得る複数の別々の物理エンティティを含むことができる。メモリ64は、ランダムアクセスメモリ(RAM)および読取り専用メモリ(ROM)を含む。ソフトウェア66が含まれる場合に、ソフトウェア66を記憶するメモリ64は、非一時的プロセッサ可読記憶媒体であり、ソフトウェア66は、実行された時に本明細書で説明される様々な機能をプロセッサ62に実行させるように構成された命令を含むプロセッサ可読プロセッサ実行可能ソフトウェアコードである(この説明は、機能を実行するプロセッサ62だけに言及する場合があるが)。代替案では、ソフトウェア66は、プロセッサ62によって直接に実行可能であるのではなく、たとえばコンパイルされ実行される時にプロセッサ62に機能を実行させるように構成され得る。プロセッサ62は、たとえば鍵ストレージ68内に記憶された暗号鍵にアクセスするために、メモリ64に通信可能に結合される。プロセッサ62は、単独でまたはメモリ64と組み合わされてのいずれかで、本明細書で説明される機能、たとえば、実行環境30からの平文(暗号化されていない情報)または暗号文(暗号化された情報)の受信、要求する実行環境30が要求された暗号鍵を使用する(たとえば、プロセッサ62に、要求する実行環境の代わりに鍵を使用させる)ことを許可されることの検証、平文の暗号化、暗号文の暗号化解除、および実行環境30への暗号文または平文の提供を実行するための手段を提供する。プロセッサ62は、下で議論されるように着信情報を情報のソースに関連付けるように構成され、それを行うためのトランシーバ処理ユニットを含むことができる。
【００２１】
プロセッサ62は、たとえば直接メモリアクセスを使用して、メモリ54内の位置から情報(たとえば、暗号文または平文)を取り出し、メモリ54内の位置に情報(たとえば、暗号文または平文)を記憶するために、メモリ54と通信するためのメモリインターフェースを含む。プロセッサ62は、暗号化される平文および平文を暗号化するのに使用される鍵の指示または暗号化解除される暗号文および再構成された平文を生成するために暗号文を暗号化解除するのに使用される鍵の指示を含むコマンドなど、実行環境30からのコマンドを受信するために実行環境30と通信するコマンドインターフェースをさらに含む。平文または暗号文の指示は、平文または暗号文が記憶されているメモリ54内の位置の指示とすることができる。コマンドは、暗号化された暗号文または再構成された平文の1つまたは複数の宛先の1つまたは複数の指示をさらに含むことができる。宛先の指示は、実行環境30の指示および/または対応する実行環境30に関連するメモリ54内の位置の指示とすることができる。
【００２２】
メモリ64は、暗号鍵の指示、要求する実行環境30の指示、および/または暗号鍵の1つまたは複数の許可されたユーザの1つまたは複数の指示(そのような指示は、おそらくは、要求する実行環境30の指示である)を含むコマンドなど、実行環境30からのコマンドを受信するためのコマンドインターフェースを含む。そのようなコマンドは、暗号鍵を書き込むためのものまたは平文を暗号化しもしくは暗号文を暗号化解除するための暗号鍵の使用を要求するものとすることができる。プロセッサ62は、下で議論されるように、メモリ64に暗号鍵を記憶し、メモリ64から暗号鍵にアクセスするように構成される。
【００２３】
鍵ストレージ68は、暗号エンジン12の内部メモリ64のうちで、実行環境30からのメッセージを暗号化し暗号化解除する際の使用のために実行環境30によって提供される暗号鍵を記憶する部分である。鍵ストレージ68内の暗号鍵は、暗号鍵を書き込みまたは提供した実行環境30と実行環境30のうちの少なくとも1つの他の実行環境とに関連してプロセッサ62によって記憶される。すなわち、鍵ストレージ68内の各暗号鍵は、送る実行環境と受信する実行環境との両方に関連する。送る実行環境は、メッセージの暗号化および送出を制御/要求し、受信する実行環境は、メッセージを受信し、メッセージの暗号化解除を制御/要求する。プロセッサ62が、鍵を書き込んだ実行環境または鍵を使用しようとしている実行環境に基づいて、情報の暗号化または暗号化解除のために使用すべき適当な鍵を判定できるようにするために、鍵ストレージ68は、鍵を記憶する。プロセッサ62が、鍵のソースおよび鍵の承認された1つまたは複数のユーザを提供された後に、プロセッサ62が、適当な暗号鍵を突き止めることができるようにするために、鍵ストレージ68は、暗号鍵を記憶する。すなわち、プロセッサ62が、鍵の使用を要求する実行環境30と、要求する実行環境30とは異なる場合に鍵の作者とを知る場合に、プロセッサ62は、鍵ストレージ68内の適当な鍵を突き止めることができる。プロセッサ62は、鍵のソース(鍵の作者すなわち鍵を書き込んだ実行環境30)および鍵のユーザになるはずのものを知る、すなわち、それらに関する情報を与えられる。単一の暗号鍵が、複数の許可された鍵ユーザすなわち複数の受信する実行環境に関連する場合がある。したがって、プロセッサ62は、鍵ストレージ68内の適当な鍵を突き止めるために、鍵のユーザおよび鍵の作者だけではなく、鍵の任意の他の潜在的なユーザに関する情報をも使用することができる。たとえば、図1をも参照すると、プロセッサ62は、オーディオEE16からビデオEE18とトラストゾーンEE24との両方に送られたメッセージを暗号化解除するために、オーディオEE16からビデオEE18およびトラストゾーンEE24にメッセージを通信する際の使用のためにオーディオEE16によって書き込まれた鍵がトラストゾーンEE24によって使用されることを許可するが、オーディオEE16からトラストゾーンEE24のみへのメッセージは許可しないものとすることができる。たとえば、インデックスが、特定の鍵の許可されたユーザを示すことができ、プロセッサ62は、特定の鍵に関する実行環境30の許可されたリストが要求する実行環境30を含む場合に限って、要求する(呼び出す)実行環境30に対して特定の鍵の使用を許可することができる。
【００２４】
鍵ストレージ68は、様々な形をとることができる。たとえば、鍵は、そのストレージ位置が少なくとも鍵の作者を示す状態で、鍵ストレージ68内に記憶され得る。たとえば、特定のエリア、たとえばテーブルの特定の列(または行)内に記憶されるすべての鍵は、単一の特定の実行環境によって作成された鍵とすることができる。別の例として、鍵は、鍵の行および列が鍵の作者および許可されたユーザを示すように、テーブル内に記憶され得る。この場合に、たとえば、テーブルの第2の行、第4の列内に記憶された鍵は、第2の行に割り当てられた実行環境によって書き込まれ、第4の列に割り当てられた実行環境による使用のために使用可能な鍵を示すことができる。その場合に、たとえば鍵が複数の実行環境による使用のために使用可能である場合に、単一の鍵がテーブル内に複数回記憶される場合がある。さらに別の例として、ソースと暗号化解除のために鍵を使用することを許可された1つまたは複数の実行環境とを示す指示が、鍵に関連して記憶され得る。この例は、下で図4に関してより十分に議論される。さらに、鍵が、特定のエリア内またはテーブル内に記憶されていることの言明は、鍵が物理的にグループ化され、一緒にまたは物理的に編成されたフォーマットにおいて記憶されることを要求しない。記憶された鍵の編成は、情報を介するものとすることができ、鍵および関連する情報は、潜在的に物理的に別々の位置に記憶される。したがって、エリアのグループ化は、比喩的であり、必ずしも物理的に文字どおりではない。したがって、たとえば、テーブル内に記憶される情報は、単一のエントリを形成するために異なる情報を一緒にリンクする情報を有することができるが、単一のエントリを形成する情報は、メモリ内の物理的に別々の位置に配置されてもよい。
【００２５】
図4をも参照すると、鍵ストレージ68は、鍵テーブル70である。鍵テーブル70は、複数の暗号鍵エントリ72を含み、暗号鍵エントリ72の各々は、暗号化/暗号化解除鍵74、鍵所有者識別子76、および1つまたは複数の許可された鍵ユーザ識別子78を含む。鍵所有者識別子76は、鍵74の鍵所有者に対応し、許可された鍵ユーザ識別子78は、鍵74の許可されたユーザに対応する。鍵所有者が、送る実行環境またはソース実行環境と呼ばれる場合もあり、許可された鍵ユーザが、受信する実行環境または宛先実行環境と呼ばれる場合もある。エントリ72の各々は、実際の暗号鍵74ならびに鍵所有者の指示すなわち鍵所有者識別子76ならびにたとえば鍵所有者からのメッセージの暗号化解除のために対応する鍵74を使用することを許可される1つまたは複数の許可された鍵ユーザの1つまたは複数の指示すなわち許可された鍵ユーザ識別子78を含む。
【００２６】
図示の例において、テーブル70は、EE1〜EE6の速記ラベルを有する6つの実行環境と、鍵1、鍵2、鍵3、鍵4、鍵5、鍵6というラベルを付けられた6つの記憶された暗号鍵74とを有するシステムに関する。この例において、および他の実例において使用され得るように、実行環境30より少数の鍵74がある。たとえば、実行環境30が別の実行環境30に情報をセキュアに送らない場合に、鍵74をテーブル70に全く書き込まない1つまたは複数の実行環境30がある可能性がある。代替案では、たとえば実行環境30のうちの1つまたは複数が複数の暗号鍵74を記憶する場合に、テーブル70は、システム内の実行環境30より多数の暗号鍵74を含む可能性がある。これは、ある実行環境30が、異なるセキュア通信、たとえば、それ自体と他の実行環境30のうちの1つとの間の第1のセキュア通信ならびにそれ自体と実行環境30のうちの別の1つおよび/またはそれ自体と第1のセキュア通信の実行環境30を含んでも含まなくてもよい実行環境30のうちの1つまたは複数との間の第2のセキュア通信を有することを望む場合にあてはまる可能性がある。
【００２７】
鍵エントリ72は、それぞれ、鍵74と、対応する鍵74の鍵所有者および許可された鍵ユーザの指示とを含む。鍵所有者は、自動的に許可された鍵ユーザになる(テーブル70の場合と同様)ことができ、したがって、鍵ユーザ識別子78内にリストされてもされなくてもよく、あるいは、自動的には許可された鍵ユーザにならず、したがって、鍵所有者が許可されたユーザである場合に鍵ユーザ識別子78内にリストされ得る。図4内に示された例において、暗号鍵エントリ80は、その鍵所有者が実行環境EE1であり、EE3の指定された許可された鍵ユーザを有する暗号鍵74すなわち鍵1を含む。同様に、暗号鍵エントリ82は、その鍵所有者が実行環境EE1であり、EE2、EE3、およびEE6の指定された許可された鍵ユーザを有する暗号鍵74すなわち鍵2を含む。鍵エントリ84は、許可された鍵ユーザとして、鍵所有者EE6だけを有する。本明細書の説明は、鍵所有者識別子だけを有する鍵に言及する場合があり、鍵ユーザ識別子は暗黙である、すなわち、「鍵」という用語の中に含まれる。さらに、鍵74のうちの1つまたは複数への言及は、鍵がテーブル70または同様の配置内に記憶されることも、鍵が特定の形をとることも要求しない。
【００２８】
図1〜図4をさらに参照しながら図5を参照すると、暗号エンジン12および実行環境30は、お互いと通信し、お互いに情報をセキュアに渡すように構成される。暗号エンジン12のプロセッサ62およびメモリ64は、本明細書で議論される機能を実行するための様々な手段を含む、メモリモジュール110およびプロセッサ(またはエンジン)モジュール112を実施するように構成される。メモリモジュール110およびエンジンモジュール112は、適宜、お互いと通信し、暗号鍵を受信し、記憶し、データの暗号化および暗号化解除に暗号鍵を使用し、暗号化されたデータまたは暗号化解除されたデータを実行環境30に提供するように構成される。モジュール110および112は、プロセッサ62およびメモリ64(および、使用される場合にはソフトウェア66)によって実施される機能モジュールである。したがって、モジュール110および112のいずれかが機能を実行しまたは機能を実行するように構成されることへの言及は、プロセッサ62が機能を実行しまたは機能を実行する(適宜、ソフトウェア66および/またはファームウェアに従って)ように構成されることの速記である。同様に、プロセッサ62が機能を実行することへの言及は、モジュール110および/またはモジュール112が機能を実行することと同等である。複雑さを減らすために、図1内に示された実行環境30の一部は、図5内に示されていない。いくつかの通信が、図5内では、図6に関して下でさらに議論される例のために破線で示されている。
【００２９】
メモリモジュール110は、秘密鍵を含むことができる鍵バス118および/または通常のデータバスを介して実行環境30に結合される。鍵バス118は、暗号エンジン12に暗号鍵を伝えるのに使用され、この場合の鍵は、適宜、鍵所有者識別子および/または許可された鍵ユーザ識別子を含む。したがって、メモリモジュール110は、鍵バス118を介して実行環境30から暗号鍵を入手し、たとえば受信し、したがって、鍵バス118を介して実行環境30から暗号鍵を入手する(たとえば、受信する)ための手段を含むように構成される。鍵バス118の秘密鍵バスは、どの実行環境30が秘密鍵バスの特定の接続を介して受信された鍵を所有するのかをメモリモジュール110が知るように構成される。実行環境30とメモリモジュール110との間に秘密鍵バスを介する複数の接続があり、鍵モジュールが秘密鍵バスの特定の接続を介して受信された鍵を実行環境30のうちの関連する実行環境または対応する実行環境のうちの1つに関連付けるように、特定の信頼される接続が、実行環境30の各々に割り当てられる。通常のデータバスを介して受信される鍵に関して、メモリモジュール110は、鍵を含むコマンド内の所有者の指示によって、または、機械識別を提供する1つまたは複数のビットなど、メッセージに追加された識別情報によって、鍵所有者を判定することができる。メモリモジュール110は、暗号鍵を鍵ストレージ68内、たとえばテーブル70内に記憶するようにさらに構成され、したがって、暗号鍵を鍵ストレージ68内、たとえばテーブル70内に記憶するための手段を含む。メモリモジュール110は、鍵の記憶および鍵へのアクセスまたは鍵の提供を管理することを含む、鍵を管理するための手段を含む。メモリモジュール110は、特定の鍵に関するコマンドが特定の鍵の使用に関して許可される要求する実行環境30から発するかどうかを判定し、要求する実行環境30が特定の鍵の使用に関して許可される場合に限って要求する実行環境30の代わりに特定の鍵の使用を許可することができる。たとえば、メモリモジュール110は、許可された鍵ユーザ識別子78が要求する実行環境30を含むことを検証することができる。メモリモジュール110は、プロセッサモジュール112による鍵へのアクセスを提供するための手段を含む。鍵へのアクセスを提供するための手段は、プロセッサモジュール112に鍵を送るか送信するための手段とすることができ、かつ/またはプロセッサモジュール112が鍵ストレージ68内の鍵エントリ72にアクセスすることを許可するための手段とすることができる。
【００３０】
プロセッサモジュール112は、メモリモジュール110から鍵を入手し、実行環境30から暗号化解除コマンドを入手し、適宜、メモリモジュール110からの鍵のうちの1つまたは複数を使用してデータを暗号化し、暗号化解除するように構成される。プロセッサモジュール112は、暗号化モジュール114および暗号化解除モジュール116を実施する。暗号化モジュール114および暗号化解除モジュール116は、実行環境30のうちの1つから他の実行環境30のうちの1つまたは複数に情報をセキュアに転送するように構成される。プロセッサモジュール112、具体的には暗号化モジュール114は、暗号化される情報の指示(たとえば、メモリ位置)を含む暗号化コマンドを受信しまたは他の形で入手するように構成される。プロセッサモジュール112、具体的には暗号化解除モジュール116は、暗号化解除される情報の指示(たとえば、メモリ位置)を含む暗号化解除コマンドを受信しまたは他の形で入手するように構成される。暗号化モジュール114および/または暗号化解除モジュール116は、専用のプロセッサを含むことができる。
【００３１】
暗号化モジュール114は、実行環境30のうちの1つ(おそらくは任意の)から暗号化されていない情報を入手し、この情報を暗号化し、暗号化された情報を中間格納先に記憶することによって他の実行環境30のうちの1つまたは複数に暗号化された情報を提供するように構成される。暗号化モジュール114は、平文を暗号化するコマンド、情報の宛先実行環境または受取側実行環境、および暗号化される平文の位置をデータバス120を介して入手し、たとえば受信しまたはアクセスするように構成される。平文は、テキスト情報および/または写真、ビデオ、その他などの非テキスト情報を表すことができる。平文を暗号化するコマンドは、1つの実行環境すなわちソース実行環境と1つまたは複数の他の実行環境すなわち宛先実行環境または受取側実行環境との間で情報を転送するコマンドとすることができる。暗号化モジュール114は、メモリモジュール110から暗号化鍵を入手すること、たとえば、受信することまたはアクセスすることによって平文を暗号化するコマンドの受信に応答するように構成される(したがって、メモリモジュール110から暗号化鍵を入手するための手段、たとえば、受信するための手段またはアクセスするための手段を含む)。暗号化モジュール114によって入手される暗号鍵は、鍵作者としてのソース(要求する)実行環境および許可された鍵ユーザとしての暗号化コマンドから指示された宛先実行環境または受取側実行環境に対応する、鍵ストレージ68内に記憶された暗号鍵に対応する。すなわち、入手される鍵は、コマンドを送った実行環境およびコマンドを送った実行環境から転送される情報の宛先または受取側として示された1つまたは複数の実行環境に対応する鍵である。暗号化モジュール114は、実行環境30から平文と呼ばれる暗号化される情報を入手し、たとえば受信しまたはアクセスするようにさらに構成され、そのような情報を入手するための手段、たとえば受信するための手段またはアクセスするための手段を含む。たとえば、暗号化エンジン114は、実行環境30のうちの1つに関連するメモリ位置から平文を読み取ることができる。暗号化モジュール114は、たとえばハッシュ関数を適用することなどの周知の暗号化技法を使用して、暗号鍵を使用して平文を暗号化するようにさらに構成される。暗号化モジュール114は、暗号文と呼ばれる暗号化された情報を実行環境30に提供する(たとえば、送る、アクセスを提供する、アクセス可能にする、使用可能にする)ようにさらに構成される。したがって、暗号化モジュール114は、暗号化された情報を実行環境30に提供する(たとえば、記憶する、送る、アクセスを提供する、アクセス可能にする、使用可能にする)ための手段を含む。たとえば、暗号化エンジン114は、実行環境30のうちの1つに関連する、たとえば、宛先実行環境またはソース実行環境と宛先実行環境との間の媒介物として働くことができる別の実行環境に関連するメモリ位置である中間格納先内に暗号文を記憶する(書き込む)ことができる。暗号化エンジン114が暗号文を書き込む位置は、宛先実行環境または媒介物実行環境に対応する。
【００３２】
暗号化解除モジュール116は、実行環境30のうちの1つ(おそらくは任意の)から暗号文を入手し、再構成された平文を生成するために暗号文を暗号化解除し、暗号化解除を要求した実行環境30に再構成された平文を提供するように構成される。暗号化解除モジュール116は、実行環境30から暗号化解除コマンドを受信し、アクセスし、または他の形で入手するように構成される。したがって、暗号化解除モジュール116は、実行環境30から暗号化解除コマンドを入手するための手段、たとえば、受信するための手段またはアクセスするための手段を含む。たとえば、暗号化解除モジュール116は、暗号文を暗号化解除するコマンド、情報のソース実行環境、および暗号化解除される暗号文の位置を、データバス120を介して受信するように構成される。暗号文を暗号化解除するコマンドは、ソース実行環境から情報を受信するコマンドとすることができる(したがって、ソース実行環境の指示を含むことができる)。コマンドが、使用すべき特定の鍵を示すことができ、かつ/または暗号化解除モジュール116が、コマンドの送出側および示されたソース実行環境に基づいて鍵を判定することができる。コマンドは、情報の他の宛先実行環境を示すこともでき、暗号化解除モジュール116は、ソース実行環境と宛先実行環境の組とに基づいて使用する適当な鍵を判定するように構成される。暗号化解除コマンドは、暗号化解除される暗号文のメモリ内の位置の指示を含むこともできる。さらに、暗号化解除モジュール116は、実行環境30から、暗号化解除コマンドによって示された暗号文を受信し、アクセスし、または他の形で入手するように構成される。したがって、暗号化解除モジュール116は、暗号文を入手するための手段、たとえば、受信するための手段、またはアクセスするための手段を含む。暗号化解除モジュール116は、暗号化解除を要求し、暗号化解除コマンド内で識別される実行環境30に関連するメモリ位置から暗号文を読み取ることができる。暗号化解除モジュール116は、再構成された平文を生成するために暗号文を暗号化解除し、暗号化解除を要求した実行環境30に再構成された平文を提供する(たとえば、アクセスを提供する、アクセス可能にする、使用可能にする、送る)ように構成される。したがって、暗号化解除モジュール116は、実行環境30のうちの1つまたは複数に再構成された平文を提供するための手段(たとえば、アクセスを提供するための手段、アクセス可能にするための手段、使用可能にするための手段、送るための手段)を含む。たとえば、暗号化解除モジュール116は、暗号化解除を要求した実行環境30に関連する(たとえば、これによって所有される、これによって制御される、これから/これによってアクセス可能である)メモリ位置に再構成された平文を書き込むことができる。
【００３３】
図1〜図5をさらに参照しながら図6を参照すると、実行環境の間で情報をセキュアに転送するプロセス150は、図示のステージを含む。しかしながら、プロセス150は、例にすぎず、限定的ではない。プロセス150は、たとえば、ステージを追加すること、削除すること、再配置すること、組み合わせること、同時に実行すること、および/または単一のステージを複数のステージに分割することによって、変更され得る。プロセス150の例示を助けるために、HLOS実行環境26を介するビデオ実行環境18からトラストゾーン実行環境24への情報のセキュア転送の特定の例を、下で議論する。この例は、図6内に示されていない動作を含み、そのような動作は、プロセス150の一部として要求されない。この例において、ビデオ実行環境18は、トラストゾーン実行環境24に送られる平文を暗号化するのに暗号鍵を使用し、トラストゾーン実行環境24は、暗号文を平文に戻って暗号化解除するのに同一の暗号鍵を使用する。実行環境18および24は、暗号鍵を間接的に使用し、暗号鍵は、実行環境18および24の代わりに暗号化モジュール114および暗号化解除モジュール116によって直接に使用される。実行環境18および24は、実行環境18および24が、平文を暗号化し、暗号文を暗号化解除するのに暗号鍵を使用するようにモジュール114および116に指示するという意味において、暗号鍵を間接的に使用する。また、本明細書で議論される例は、例にすぎず、システム10について限定的ではない。情報は、実行環境30のうちの任意の実行環境の間で、たとえば、トラストゾーン実行環境24からビデオ実行環境18へまたは実行環境30のうちの任意の実行環境から他の実行環境30のうちの1つまたは複数へ送られ得る。
【００３４】
ビデオ実行環境18からトラストゾーン実行環境24へのセキュア転送の例の一部として、プロセス150内のオプションのステージであり、図6内には示されていないが、ビデオ実行環境18は、ビデオ実行環境18からトラストゾーン実行環境24へのセキュア通信を提供する際の使用のためにメモリモジュール110に暗号鍵を送ることができる。ビデオ実行環境18からメモリモジュール110への暗号鍵の転送は、図5内で通信130として示されている。通信130は、鍵バス118を介してメモリモジュール110に通信され得る。通信130は、たとえば、セキュア識別子を含めることによって、または所定の実行環境、この例においてはビデオ実行環境18からの情報のみを提供するとメモリモジュール110が信頼するリンク、たとえば鍵バス118の秘密鍵バスを介して伝えられることによって、暗号鍵を提供する実行環境30を識別する。通信130は、宛先実行環境30、ここではトラストゾーン実行環境24の使用法指示を含むことができる。使用法指示は、暗号文のソースが通信130を提供する実行環境30である場合に、関連する暗号鍵が、示された宛先実行環境からの暗号文を暗号解除する際に使用され得ることを示す。通信130のソースは、通信130がそれを介して受信されるリンクによって、または伝えられる暗号鍵に対応するソース実行環境30の指示を含む使用法指示によって、または別の手段によって判定され得る。暗号鍵ソースは、通信130の内容または通信130の配信手段内で示され、またはこれから導出可能とすることができ、1つまたは複数の許可された宛先実行環境は、使用法指示内で示され得る。暗号鍵を使用することのできる複数の実行環境30がある場合には、異なる実行環境30の指示が単一の通信130内で伝えられる場合であっても、複数の実行環境30の指示は、異なる使用法指示と考えられ得る。暗号鍵がビデオ実行環境18によって送られることに応答して、暗号エンジン12、具体的にはメモリモジュール110は、暗号鍵を受信し、メモリモジュール110のメモリに暗号鍵を書き込むことによって記憶する。メモリモジュール110は、鍵のソース、ここではビデオ実行環境18および鍵を使用する通信の宛先、ここではトラストゾーン実行環境24に関連して暗号鍵を記憶する。たとえば、メモリモジュール110は、鍵テーブル70内に鍵を記憶することができ、暗号鍵74は、暗号鍵エントリ72の一部を形成し、ソース暗号化環境、ここではビデオ実行環境18および宛先暗号化環境、ここではトラストゾーン実行環境24の指示と一緒に記憶される。通信130は、下で議論される通信132の前に、これと同時に、またはこれの後に発生することができる。
【００３５】
図6内に示されていない例の別の部分は、ビデオ実行環境18からプロセッサモジュール112、具体的には暗号化モジュール114への、平文を暗号化するコマンドの通信132である。通信132は、データバス120を介して、具体的には、暗号エンジン12が、具体的には暗号化モジュール114が、特定の実行環境、この例においてはビデオ実行環境18からのコマンドのみを伝えると信頼するデータバス120のリンクを介して伝えられ得る。通信132は、宛先実行環境、ここではトラストゾーン実行環境24の指示を含むことができる。
【００３６】
ステージ152では、プロセス150は、暗号エンジンにおいて、第1の実行環境からオリジナルの平文を受信するステップを含む。暗号エンジン12は、ソース実行環境から宛先実行環境への送信のためにオリジナルの平文を受信する。図5内に示された、ビデオ実行環境18とトラストゾーン実行環境24との間のセキュア転送の例に関して、暗号化モジュール114は、通信134を介してビデオ実行環境18からオリジナルの平文(O-PT)を受信する。暗号化モジュール114は、たとえば、メモリ54のうちでビデオ実行環境18が情報を書き込むことのできる部分内の、ビデオ実行環境18内のメモリ位置にアクセスすることによって、オリジナルの平文を受信することができる。具体的には、暗号化モジュール114は、たとえば通信132が使用される場合に通信132内で示される、宛先実行環境としてのトラストゾーン実行環境24に対応するビデオ実行環境18内のメモリ位置にアクセスする。暗号化モジュール114は、このメモリ位置からオリジナルの平文を読み取る。
【００３７】
ステージ154では、プロセス150は、暗号エンジンによって第1の暗号鍵を入手するステップであって、第1の暗号鍵は、第1の暗号鍵が第1の実行環境および第1の実行環境ではない第2の実行環境に関連付けられるようにメモリ内で保持される、入手するステップを含む。メモリモジュール110は、プロセッサモジュール112に暗号鍵を提供し、プロセッサモジュール112は、メモリモジュール110から暗号鍵を入手し、たとえば、受信しまたはアクセスする。暗号鍵の入手は、暗号化モジュール114がメモリモジュール110の鍵ストレージ68部分から暗号鍵を読み取ることを含むことができる。例示的な例を継続すると、暗号化エンジン114は、通信136内でメモリモジュール110から暗号鍵CKV-TZを入手する。暗号鍵CKV-TZは、ビデオ(V)実行環境18からトラストゾーン(TZ)実行環境24への通信の暗号化および暗号化解除における使用のためにビデオ実行環境18によって提供される暗号鍵(CK)である。
【００３８】
ステージ156では、プロセス150は、暗号化された情報(暗号文)を生成するために第1の暗号鍵を使用して暗号エンジンを使用してオリジナルの平文を暗号化し、暗号化された情報を中間格納先内に記憶するステップを含む。暗号化モジュール114は、平文を暗号文に変換する(すなわち、平文を暗号化する)ために、様々な暗号化技法のいずれかに従って暗号鍵を使用し、暗号文を中間格納先内に記憶する。中間格納先は、暗号文が記憶されるメモリ内の位置であり、暗号化解除される前の暗号文を記憶する(したがって、暗号化の後で暗号化解除の前の情報を記憶する)という意味において中間である。中間格納先は、必ずしも暗号文を記憶するための指定された位置または複数の指定された位置のうちの1つではなく、中間記憶だけのためのものではない場合がある、すなわち、暗号文は、暗号文を暗号化解除しないエンティティに提供されまたはこれによってアクセスされる場合がある。例示的な例を継続すると、暗号化モジュール114は、平文を暗号文に暗号化し、通信138内で暗号文(CT)をHLOS実行環境26に提供するが、この通信はオプションであり、この情報を提供するための他の機構が、使用され得る。たとえば、暗号化モジュール114は、たとえば暗号文がトラストゾーン実行環境24宛のビデオ実行環境18からのメッセージであることの指示と一緒に、HLOS実行環境26のメモリ位置に暗号文を書き込む。代替案では、暗号文は、メモリのうちで所期の宛先実行環境に関連する部分に書き込まれ得る。
【００３９】
図6内に示されていない例のさらなる別の部分は、媒介物実行環境30が使用される場合に、媒介物実行環境30が、暗号文を宛先実行環境30に提供できることである。この例において、HLOS実行環境26は、通信140内でトラストゾーン実行環境24に暗号文を提供する。たとえば、HLOS実行環境26は、暗号化モジュール114によって書き込まれるメモリ位置からトラストゾーン実行環境24のメモリ位置内に暗号文を転送することができる。代替案では、トラストゾーン実行環境24が、HLOS実行環境26内に記憶された暗号文をトラストゾーン実行環境24のメモリ位置内に読み取る。
【００４０】
代替案では、媒介物実行環境30は、宛先実行環境30に暗号文を提供しないものとすることができる。たとえば、暗号文は、暗号化解除のためにプロセッサモジュール112によって媒介物実行環境30から読み取られ得る。
【００４１】
図6内に示されていない例示的な例のさらなる別の部分は、宛先実行環境30が暗号文の暗号化解除を要求することである。図5内に示されているように、この例において宛先実行環境であるトラストゾーン実行環境24は、プロセッサモジュール112、具体的には暗号化解除モジュール116に通信142を送る。通信142は、暗号文の暗号化解除を要求し、ソース実行環境と、暗号化解除される暗号文を見つけることができるメモリ(たとえば、要求する実行環境30または中間実行環境30のいずれかの)内の位置(この例において、トラストゾーン実行環境24またはHLOS実行環境26のいずれか)との指示を含むことができる。通信142は、要求する実行環境30、ここではトラストゾーン実行環境24の指示を含むことができるが、プロセッサモジュール112が、所定の実行環境、ここではトラストゾーン実行環境24からの情報だけを含むとプロセッサモジュール112が信頼するデータバス120のリンクを介して通信142を受信する場合には、この指示は省略され得る。すなわち、暗号化解除モジュール116は、通信142を提供するデータバス120のリンク(すなわち、それを介して通信142が受信されるリンク)に基づいて、通信142がどの実行環境30から来るのかを知る。さらに、通信142は、暗号化解除を要求される暗号文をもたらす平文のソースを、したがって暗号文の(間接的な)ソースを示すソース指示を含む。
【００４２】
ステージ158では、プロセス150は、暗号エンジン12において、暗号化された情報を入手するステップを含む。暗号化された情報は、暗号化された情報が第2の実行環境30に転送される場合に、第2の実行環境30から入手され得、たとえば、受信されまたはアクセスされ得(たとえば、この例において図5内に示された通信144を介して)、あるいは、中間実行環境30から受信され得る(たとえば、この例において図5内に示された通信145を介して)。プロセッサモジュール112、具体的には暗号化解除モジュール116は、暗号化解除のために暗号文を入手し、宛先実行環境30に提供する。例示的な例を継続すると、暗号化解除モジュール116は、通信144を介して、HLOS実行環境26から読み取られた暗号文をトラストゾーン実行環境24から、または暗号文がHLOS実行環境26から読み取られなかった場合には通信145を介してHLOS実行環境26から入手する。暗号化解除モジュール116は、たとえば通信142が使用される場合に通信142によって示される、暗号文を含むメモリ位置を読み取ることによって、この情報を入手することができる。
【００４３】
ステージ160では、プロセス150は、再構成された平文を生成するために第1の暗号鍵を使用して暗号エンジンからの暗号化された情報を暗号化解除するステップを含む。プロセッサモジュール112、具体的には暗号化解除モジュール116は、ソース実行環境30によって提供され、宛先実行環境30への配信について許可された暗号文を暗号化解除するために通信146内で暗号鍵、ここでは第1の暗号鍵を入手する。暗号化解除モジュール116は、適当な暗号鍵を入手するためにメモリモジュール110にアクセスする。この例を継続し、通信142が使用されたものとして、暗号化解除モジュール116は、メモリモジュール110から、通信142によって示された暗号鍵にアクセスし、これを読み取る、すなわち、通信142によって示されたソース実行環境30およびたとえば通信142によって示され、かつ/または通信142がそれを介して受信されたリンクに関連する、通信142に関連する宛先実行環境30に関連して記憶された暗号鍵にアクセスし、これを読み取る(または、要求し、提供される)。適当な暗号鍵を入手したので、暗号化解除モジュール116は、その暗号鍵を使用して、暗号化された情報(すなわち、暗号文)を暗号化解除する。
【００４４】
ステージ162では、プロセス150は、暗号エンジンによって、再構成された平文を第2の実行環境にとって使用可能にするステップを含む。暗号エンジン12のプロセッサモジュール112、具体的には暗号化解除モジュール116は、たとえば再構成された平文を宛先実行環境30のメモリ内に記憶することによって、再構成された平文を使用可能にする。例示的な例を継続すると、暗号化解除モジュール116は、通信148を使用して、トラストゾーン実行環境24に再構成された平文(R-PT)を記憶する。
【００４５】
様々な追加、変更、および/または削除が、プロセス150に対して行われ得、プロセス150の様々な実施態様が可能である。たとえば、受信する実行環境30または宛先実行環境30は、ソース実行環境になることもできる。したがって、上で議論された例において、トラストゾーン実行環境24が、ソース実行環境30になることができ、ビデオ実行環境18が、トラストゾーン実行環境24からのメッセージに関する宛先実行環境になることができる。別の例として、実行環境30は、1つまたは複数の暗号鍵および暗号エンジン12を使用してお互いを認証することができる。さらに別の例として、お互いにメッセージを送る実行環境30の組(たとえば、対)は、実行環境30のうちの一方から他方の実行環境30に送られるメッセージごとに両方の暗号鍵を使用することができる。すなわち、各実行環境は、それ自体から他方の実行環境30にメッセージを送る際に使用するための暗号鍵を記憶することができ、各メッセージは、送る実行環境によって書き込まれた暗号鍵と受信する実行環境によって書き込まれた暗号鍵との両方を使用して暗号化され、暗号化解除され得る。さらに、実行環境30は、二重動作を回避するために共通のセッションを生成するのに暗号鍵を使用することができる。さらに、複数の実行環境が、複数の実行環境の間の通信を生成するのに本明細書で議論される技法を使用することができる。たとえば、実行環境が暗号化された情報を共有する掲示板が、実施され得る。別の例として、実行環境がグループ内の暗号化環境に暗号化されたメッセージをマルチキャストできる仮想バスが、実施され得る。
【００４６】
プロセス150の様々な実施態様は、それぞれ暗号エンジン12に暗号鍵を書き込むことによってメッセージを交換する実行環境を含む。たとえば、第1の実行環境および第2の実行環境が、メッセージを交換することができる。暗号エンジン12が、第1の実行環境からの第1の暗号鍵と、おそらくは第1の暗号鍵が第2の実行環境によって使用され得ることを示す第1の使用法指示とを受信することに加えて、プロセス150の実施態様は、第2の実行環境からの情報のみを提供すると暗号エンジン12が信頼するリンクを介して、暗号エンジン12において第2の実行環境から第2の暗号鍵を受信することを含むことができる。この実施態様は、第2の暗号鍵が第1の実行環境からの暗号文の暗号化解除において使用され得ることを示す第2の使用法指示を暗号エンジン12において第2の実行環境から受信することをさらに含むことができる。暗号エンジン12は、第2の暗号鍵をメモリに書き込むことができる。このプロセスは、第1の実行環境および第2の実行環境のうちの他方によって第1の実行環境および第2の実行環境の各々を認証すること、または共通のセッション鍵を生成することのうちの少なくとも1つのために第1の暗号鍵および第2の暗号鍵を使用することをさらに含むことができる。第1の実行環境によって第2の実行環境を認証することは、暗号エンジン12において、第1の実行環境から第1の平文認証子を受信するステップと、第1の暗号文認証子を生成するために、第1の暗号鍵を使用して第1の平文認証子を暗号化するステップと、第2の実行環境から第1の暗号文認証子を受信するステップと、第1の再構成された平文認証子を生成するために、第1の暗号鍵を使用して第1の暗号文認証子を暗号化解除するステップと、第2の暗号文認証子を生成するために、第2の暗号鍵を使用して第1の再構成された平文認証子を暗号化するステップと、第1の実行環境から第2の暗号文認証子を受信するステップと、第2の再構成された平文認証子を生成するために、第2の暗号鍵を使用して第2の暗号文認証子を暗号化解除するステップと、第2の再構成された平文認証子を第1の実行環境にとって使用可能にするステップとを含むことができる。第2の実行環境は、第2の再構成された平文認証子が第1の平文認証子と一致する場合に認証され得る。第1の平文認証子は、たとえば第1の実行環境によって生成される、乱数とすることができる。第1の実行環境は、同様の形において第2の実行環境によって認証され得る。
【００４７】
他の考慮事項
【００４８】
他の例および実施態様は、本開示および添付された特許請求の範囲の範囲および趣旨に含まれる。たとえば、ソフトウェアの性質に起因して、上で説明された機能は、プロセッサによって実行されるソフトウェア、ハードウェア、ファームウェア、ハードワイヤリング、またはそれらのいずれかの組合せを使用して実施され得る。機能を実施する特徴は、機能の部分が異なる物理的位置において実施されるように分散されることを含めて、様々な位置に物理的に配置されることも可能である。また、特許請求の範囲内を含めて、本明細書で使用される時に、「少なくとも1つの」が後に置かれた項目のリスト内で使用される時の「または」は、離接的なリストを示し、たとえば、「A、B、またはCのうちの少なくとも1つ」のリストは、Aのみ、Bのみ、もしくはCのみ、またはAB、またはAC、またはBC、またはABC(すなわち、AおよびBおよびC)、あるいは、複数の同一の特徴を有する組合せ(たとえば、AA、AAB、ABBCなど)を意味する。
【００４９】
特許請求の範囲内を含めて、本明細書で使用される時に、そうではないと述べられない限り、機能または動作が項目または条件「に基づく」ことの言明は、その機能または動作が述べられた項目または条件に基づき、述べられた項目または条件に加えて1つまたは複数の項目および/または条件に基づいてもよいことを意味する。
【００５０】
さらに、情報がエンティティ「に」送られもしくは送信されることの指示、または情報をエンティティ「に」送出もしくは送信することの言明は、通信の完了を要求しない。そのような指示または言明は、情報が送るエンティティから伝えられるが、情報の所期の受取側に達しないことを含む。所期の受取側は、情報を実際には受信しないにもかかわらず、それでも受信するエンティティ、たとえば受信する実行環境と呼ばれる場合がある。
【００５１】
実質的な変形形態が、特定の要件に従って作られ得る。たとえば、カスタマイズされたハードウェアが使用されることもあり、かつ/または特定の要素がハードウェア、ソフトウェア(アプレットなどのポータブルソフトウェアを含む)、もしくはその両方で実施されることがある。さらに、ネットワーク入出力デバイスなどの他のコンピューティングデバイスへの接続が使用されることがある。
【００５２】
「機械可読媒体」および「コンピュータ可読媒体」という用語は、本明細書で使用される時に、機械に特定の形において動作させるデータの提供に参加するすべての媒体を指す。コンピュータシステムを使用して、様々なコンピュータ可読媒体は、実行のためにプロセッサに命令/コードを提供する際に用いられ得、かつ/またはそのような命令/コードを記憶し、かつ/もしくは担持する(たとえば、信号として)のに使用され得る。多くの実施形態において、コンピュータ可読媒体は、物理的および/または有形の記憶媒体である。そのような媒体は、不揮発性媒体および揮発性媒体を含むがこれに限定されない、多数の形態をとり得る。不揮発性媒体は、たとえば、光学ディスクおよび/または磁気ディスクを含む。揮発性媒体は、限定なしにダイナミックメモリを含む。
【００５３】
物理的および/または有形のコンピュータ可読媒体の一般的な形は、たとえば、フロッピディスク、フレキシブルディスク、ハードディスク、磁気テープ、もしくは任意の他の磁気媒体、CD-ROM、任意の他の光学媒体、パンチカード、紙テープ、穴のパターンを有する任意の他の物理媒体、RAM、PROM、EPROM、フラッシュEPROM、任意の他のメモリチップもしくはメモリカートリッジ、本明細書で説明される搬送波、またはコンピュータがそれから命令および/もしくはコードを読み取ることができる任意の他の媒体を含む。
【００５４】
様々な形のコンピュータ可読媒体が、実行のために1つまたは複数のプロセッサに1つまたは複数の命令の1つまたは複数のシーケンスを搬送する際に用いられ得る。単に例として、命令は、当初に、リモートコンピュータの磁気ディスクおよび/または光学ディスク上で搬送され得る。リモートコンピュータは、命令をそれのダイナミックメモリ内にロードし、コンピュータシステムによって受信され、かつ/または実行されるべき命令を、送信媒体を介して信号として送ることができる。
【００５５】
上で議論された方法、システム、およびデバイスは、例である。様々な構成は、適宜、様々な手順または構成要素を省略し、置換し、または追加することができる。たとえば、代替構成において、方法は、説明された順序と異なる順序で実行されてよく、様々なステップが追加され、省略され、または結合されてよい。また、ある種の構成に関して説明された特徴は、様々な他の構成において組み合わせられてよい。構成の異なる態様および要素が、同様の形で組み合わされてよい。また、技術は進化し、したがって、要素の多くは例であり、本開示または特許請求の範囲の範囲を限定しない。
【００５６】
特定の詳細が、例の構成(実施態様を含む)の完全な理解を提供するためにこの説明の中で与えられる。しかしながら、構成は、これらの具体的な詳細なしに実践され得る。たとえば、周知の回路、プロセス、アルゴリズム、構造、および技法は、構成を不明瞭にすることを回避するために、不必要な詳細なしで示された。この説明は、例示的な構成のみを提供し、特許請求の範囲の範囲、適用可能性、または構成を限定しない。むしろ、構成の前述の説明は、説明された技法を実施するための説明を提供する。本開示の趣旨または範囲から逸脱することなく、要素の機能および配置において様々な変更が加えられてよい。
【００５７】
また、構成は、流れ図またはブロック図として示されるプロセスとして説明され得る。各々が順次プロセスとして動作を説明する場合があるが、動作の多くは並列にまたは同時に実行され得る。加えて、動作の順序は、並べ替えられてよい。プロセスは、図に含まれない追加のステージまたは機能を有してよい。さらに、方法の例は、ハードウェア、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、ハードウェア記述言語、またはこれらの任意の組合せによって実施され得る。ソフトウェア、ファームウェア、ミドルウェア、またはマイクロコードにおいて実施される時に、タスクを実行するためのプログラムコードまたはプログラムコードセグメントは、記憶媒体などの非一時的コンピュータ可読媒体内に記憶され得る。プロセッサは、説明されたタスクを実行することができる。
【００５８】
お互いに接続されまたは通信しているものとして図面内に示され、かつ/または本明細書で議論される機能構成要素または他の構成要素は、通信可能に結合される。すなわち、それらは、それらの間の通信を可能にするために、直接的または間接的に接続され得る。
【００５９】
複数の例の構成を説明したが、様々な修正形態、代替構成、および同等物が、本開示の趣旨から逸脱せずに使用され得る。たとえば、上記の要素は、より大きいシステムの構成要素であり得、他の規則が、本発明の応用例よりも優先してよく、または本発明の応用例を他の形で修正してよい。また、上記の要素が考慮される前に、その間に、またはその後に、複数の動作が行われてよい。したがって、上記の説明は特許請求の範囲の範囲を拘束しない。
【００６０】
さらに、複数の発明が開示され得る。
【符号の説明】
【００６１】
10  分散コンピューティングシステム
12  暗号エンジン
14  モデムEE
16  オーディオEE
18  ビデオEE
20  センサ/検出器EE
22  エンタープライズEE
24  トラストゾーンEE
26  高水準オペレーティングシステム(HLOS)EE
28  他の実行環境、他のEE
30  実行環境(EE)
50  SoC
52  プロセッサ
54  メモリ
56  センサ
58  ソフトウェア
62  プロセッサ
64  内部メモリ
66  ソフトウェア(SW)
68  鍵ストレージ(KS)
70  鍵テーブル
72  暗号鍵エントリ
74  暗号化/暗号化解除鍵
76  鍵所有者識別子
78  許可された鍵ユーザ識別子
80  暗号鍵エントリ
82  暗号鍵エントリ
84  鍵エントリ
110  メモリモジュール
112  プロセッサ(またはエンジン)モジュール
114  暗号化モジュール
116  暗号化解除モジュール
118  鍵バス
120  データバス
130  通信
132  通信
134  通信
136  通信
138  通信
140  通信
142  通信
144  通信
145  通信
146  通信
148  通信
150  プロセス
【要約】
実行環境の間で情報をセキュアに転送する方法は、暗号エンジンにおいて、第1の実行環境からオリジナルの平文を受信するステップと、暗号エンジンによって第1の暗号鍵を入手するステップであって、第1の暗号鍵は、第1の暗号鍵が第1の実行環境および第1の実行環境ではない第2の実行環境に関連付けられるようにメモリ内で保持される、入手するステップと、暗号化された情報を生成するために第1の暗号鍵を使用して暗号エンジンによってオリジナルの平文を暗号化し、暗号化された情報を中間格納先内に記憶するステップと、暗号エンジンにおいて、中間格納先から暗号化された情報を入手するステップと、再構成された平文を生成するために第1の暗号鍵を使用して暗号エンジンによって暗号化された情報を暗号化解除するステップと、暗号エンジンによって、再構成された平文を第2の実行環境にとって使用可能にするステップとを含む。【図１】
0006285616.tif 000002
【図２】
0006285616.tif 000003
【図３】
0006285616.tif 000004
【図４】
0006285616.tif 000005
【図５】
0006285616.tif 000006
【図６】
0006285616.tif 000007