(57)【要約】【課題】機密処理のセクションのキャッシュ・アクセス動作情報が信頼されていない処理へ漏洩するのを妨害する方法。【解決手段】前記機密処理および信頼されていない処理はデータ処理装置内の一つのプロセッサにより遂行され、前記データ処理装置はさらに前記機密処理および信頼されていない処理を遂行中に前記プロセッサにより要求される情報を記憶するように動作可能な少なくとも１つのキャッシュを含み、前記方法は：  前記プロセッサにより前記機密処理の１セクションの処理を開始するのに先立って、前記少なくとも１つのキャッシュ内の前記機密処理の前記セクションにより要求され得る前記機密処理ローディング情報によりさもなければ立ち退かされる、前記少なくとも１つのキャッシュのロケーション内に記憶された情報を立ち退かせるステップを含む前記方法。【選択図】図３
2008276778.tif 000002
【特許請求の範囲】
【請求項１】
機密処理のセクションのキャッシュ・アクセス動作情報が信頼されていない処理へ漏洩するのを妨害する方法であって、前記機密処理および信頼されていない処理はデータ処理装置内の一つのプロセッサにより遂行され、前記データ処理装置はさらに前記機密処理および信頼されていない処理を遂行中に前記プロセッサにより要求される情報を記憶するように動作可能な少なくとも１つのキャッシュを含み、前記方法は：
前記プロセッサにより前記機密処理の１セクションの処理を開始するのに先立って、前記少なくとも１つのキャッシュ内の前記機密処理の前記セクションにより要求され得る前記機密処理ローディング情報によりさもなければ立ち退かされる、前記少なくとも１つのキャッシュのロケーション内に記憶された情報を立ち退かせるステップを含む前記方法。
【請求項２】
前記方法はさらに：
前記プロセッサにより前記機密処理の前記セクションの処理を開始するステップと：
切替え要求に応答して前記機密処理の前記セクションの処理中に前記プロセッサを前記信頼されていない処理へ切り替えるステップと：
前記信頼されていない処理から前記機密処理の前記セクションへのスイッチング・バックに際して、前記機密処理の前記セクションの処理を再開するのに先立って、前記少なくとも１つのキャッシュ内の前記機密処理の前記セクションにより要求されるかも知れない前記機密処理ローディング情報によりさもなければ立ち退かされる、前記少なくとも１つのロケーションに記憶された情報を立ち退かせるステップとを含む請求項１記載の方法。
【請求項３】
前記機密処理によりさもなければ立ち退かされる前記少なくとも１つのキャッシュのロケーションに記憶された情報を立ち退かせる前記ステップは、前記少なくとも１つのキャッシュ内の前記機密処理の前記セクションにより要求される前記情報を記憶することを含む請求項１記載の方法。
【請求項４】
前記プロセッサは、前記プロセッサがセキュア・ドメインおよびノン・セキュア・ドメインで動作可能であり、前記プロセッサは、セキュア・ドメインでプログラムを実行中に、前記プロセッサがノン・セキュア・ドメインで動作中にアクセスできないセキュア・データに対して前記プログラムがアクセスするように動作可能であり、前記機密処理は前記セキュア・ドメインで実行されるセキュア処理であり、また前記信頼されていない処理はノン・セキュア・ドメインで実行される処理である請求項１記載の方法。
【請求項５】
前記プロセッサは、複数の信頼されていない処理をノン・セキュア・ドメインで処理しまた複数の機密処理をセキュア・ドメインで処理するように動作可能であり、前記方法は少なくとも１つの前記機密処理の１つのセクションのキャッシュ・アクセス動作に関する情報を、前記複数の信頼されていない処理へ漏洩するのを妨害する請求項４記載の方法。
【請求項６】
前記セキュア・ドメインおよびノン・セキュア・ドメインの間の切り替えの前記のステップがモニタ・モードを介して遂行される請求項４記載の方法。
【請求項７】
ドメインの間の切り替えが前記機密処理の前記セクションへの切り替えを含むことを検出すると、前記機密処理の前記セクションによりさもなければ立ち退かされるであろう前記少なくとも１つのキャッシュのロケーションに記憶された情報の前記立退きを、前記モニタ・モードが開始する請求項６記載の方法。
【請求項８】
前記機密処理の前記セクションがセキュリティ・クリティカル・セクションである請求項４記載の方法。
【請求項９】
前記機密処理の前記セキュリティ・クリティカル・セクションが暗号処理を含む請求項８記載の方法。
【請求項１０】
前記セキュリティ・クリティカル・セクションの処理に先立って、前記少なくとも１つのキャッシュに記憶される前記情報は、前記セキュリティ・クリティカル・セクションがデータを要求する少なくとも１つのルックアップ・テーブルである請求項９記載の方法。
【請求項１１】
複数の機密処理が前記データ処理装置により処理され、各々暗号処理セクションを含み、前記暗号処理セクションは複数のルックアップ・テーブルからデータを要求し、前記データ処理装置はさらに前記複数のルックアップ・テーブルの各々に対応する複数のルックアップ・フラッグを含み、前記方法はさらに：
前記セキュア・モードで処理を開始するのに先立って、前記複数のルックアップ・フラッグを第１所定値に設定するステップと；
前記プロセッサにより前記複数のセキュア処理の１つのセキュリティ・クリティカル・セクションの処理を再開するのに先立って：
前記対応するルックアップ・フラッグが前記第１所定値にセットされるときに、前記少なくとも１つのキャッシュにおいて、前記機密処理の前記セキュリティ・クリティカル・セクションがデータを要求する前記複数のルックアップ・テーブルの少なくとも１つを記憶して、前記対応するルックアップ・フラグを第２所定値にセットするステップと；
前記対応するルックアップ・フラッグが前記第２所定値へセットされるならば、前記少なくとも１つのキャッシュへ前記情報を記憶しないステップとを含む請求項１０の記載の方法。
【請求項１２】
前記機密処理の前記セクションを実行するのに先立って、所定のステップが遂行されて前記セクションが実行されることを指示し、続いて前記セクションの更なるステップの完了が遂行されて前記セクションが完了済みであることを指示する請求項１記載の方法。
【請求項１３】
前記所定のステップの１つがインディケータ値をセットして前記処理の前記セクションが処理されていることを指示することを含み、また、前記更なるステップの１つが前記インディケータ値をリセットして前記処理の前記セクションがもはや処理されていないことを指示することを含む請求項１２記載の方法であって；
前記機密処理へスイチィング・バックするときに、前記セクションが前記インディケータ値から処理されるべきであるかどうかを決定して、もしそうであるならばハンドラ・ルーチンを開始し、前記ハンドラ・ルーチンは、前記機密処理の前記セクションを再開するのに先立って、前記少なくともキャッシュ内に前記機密処理の前記セクションにより要求されるであろう情報を記憶するステップを含む前記請求項１２の方法。
【請求項１４】
前記情報が命令を含む請求項１記載の方法。
【請求項１５】
前記情報がデータを含む請求項１記載の方法。
【請求項１６】
前記少なくとも１つのキャッシュの前記ロケーションがキャッシュ・ラインを含む請求項１記載の方法。
【請求項１７】
データ・プロセッサ上で実行するときにデータ・プロセッサを制御して、請求項１記載のステップを遂行するように動作できるコンピュータ・プログラム製品。
【請求項１８】
機密処理および信頼されていない処理を遂行するようにされた少なくとも１つのプロセッサと、前記機密処理および信頼されていない処理を遂行中にプロセッサに要求される情報を記憶するようにされた少なくとも１つのキャッシュとを含むデータ処理装置であって、前記データ処理装置はさらに
処理されるべき前記機密処理のセクションを検出するように構成された制御ロジックであって、また、前記セクションの検出に応答してまた前記セクションの処理を開始または再開するのに先立って、前記少なくとも１つのキャッシュ内の前記機密処理の前記セクションにより要求される前記機密処理ローディング情報によりさもなければ立ち退かされる、前記少なくともキャッシュのロケーションの記憶された情報を立ち退かせる前記制御ロジックが構成されている前記データ処理装置。
【請求項１９】
前記データ処理装置が更にインディケータ値ストアを含み、前記制御ロジックは、前記セクションの処理の開始に応答して、前記インディケータ値ストア内に所定の値を記憶し、また前記セクションの処理を完了するのに応答して、前記インディケータ値ストア内に異なった値を記憶するように構成されている請求項１８記載のデータ記憶装置。
【請求項２０】
前記データ処理装置は、さらに複数のルックアップ・フラッグを記憶するように構成するようにスコアボードを含み、前記制御ロジックが前記セキュア・モードで処理を開始するのに先立って、前記複数のルックアップ・フラッグを第１所定値へセットし、前記プロセッサにより前記複数のセキュア処理の１つのセキュリティ・クリティカル・セクションの処理を開始または再開するのに先立って：
前記対応するルックアップ・フラッグが前記第１所定値にセットされるときに、前記少なくとも１つのキャッシュにおいて、前記機密処理の前記セキュリティ・クリティカル・セクションがデータを要求する前記複数のルックアップ・テーブルの少なくとも１つに記憶して、前記対応するルックアップ・フラッグを第２所定値へセットし、
前記対応するルックアップ・フラッグが第２所定値へセットされるならば、前記少なくとも１つのキャッシュへ前記情報を記憶しない、請求項１８記載のデータ処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理システムの分野に関する。特に、本発明は、１つのキャッシュを共用する処理の間の情報漏洩を削減する分野に関する。
【０００２】
あるデータ処理装置上で実行中の１つのアプリケーションに関連するデータ値が、他のアプリケーションに対してアクセス可能であるべきでない機密データ値である場合が、多く起りえる。そうした状況において、そうした機密データが安全に保持されて、たとえばこの機密データへのアクセスを追及する目的でデータ処理装置へロードされるハッキング・アプリケーションなど、そのデータ処理装置へロードされているかもしれない他のアプリケーションによりアクセスできないようにすることが明らかに重要である。１つのキャッシュを複数のアプリケーションで共用する場合に、これは特別な問題になり得る。
【背景技術】
【０００３】
データ処理装置が複数の別々のドメインを備え、これらのドメインがハードウエア・レベルでセキュリティを取り扱うメカニズムを提供するシステムを提供することが知られている。そうしたシステムは、たとえば同一譲受人の同時係属米国特許出願No.１０／７１４，５６１に記述され、この出願はセキュア・ドメインとノン・セキュア・ドメインを有するシステムを記述している。そのシステムにおいては、ノン・セキュア・ドメインとセキュア・ドメインは実際別々な世界を確立し、セキュア・ドメインはハードウエアで強制された境界により他の実行空間から分離された高信頼性実行空間を提供し、また同様にノン・セキュア・ドメインは信頼されていない実行空間を提供する。
【０００４】
共用キャッシュを使用するマルチ処理システム上のソフトウエア暗号システムは、１つのキャッシュを両方の処理が共用するために、それら処理の間で情報の漏洩が起る可能性があるので、一般に安全でないと見られている。キャッシュはデータを記憶する場所をそれ自体決定することにおいて、プログラマに対してある程度トランスペアレントである。上述したような既知の安全システムは、キャッシュへデータを記憶するノン・セキュア処理がセキュア処理によりキャッシュへ記憶されたデータへアクセスするのを、防止できる。しかしながら、１つの処理のデータ・アクセス・パターンに関する情報が他の処理により引き出されるかも知れず、そしてこの情報はたとえば暗号システムの安全性を相殺できるのに充分であるかも知れない。
【０００５】
図１は、システムのセキュア部分で実行する暗号処理および、システムのノン・セキュア部分で実行する信頼されていない部分を図式的に示す。処理時間について各々競合するたびに、処理の間で切り替えが起る。信頼されていない処理は、暗号処理によりキャッシュ６０へ記憶されたデータへアクセスできない。しかしながら、キャッシュ６０を飽和させることにより、それは暗号処理のアクセス・パターンを引き出すことができ、それから暗号処理の一部分の実行に従ってキャッシュ６０へアクセスして、それがキャッシュ６０を飽和させたデータを読み取ることができる。このデータへのアクセス時間により、この信頼されていないまたはこの場合ハッキングの処理が暗号化処理であってもなくても、そのデータの一部を上書きしたかどうかを知ることができ、こうして暗号処理によりアクセスされた１組のキャッシュ・ラインをハッキング処理により識別することができる。暗号化処理がデータ・ルックアップ・テーブルを使用するものである場合は、これは暗号を破るのに充分な能力がある。これは、ＢｏｎｎｅａｕとＭｉｒｏｎｏｖによる「ＡＥＳに対するキャッシュ・コリージョン・タイミング攻撃」、http://www.stanford.edu/~jbonneau/ＡＥＳ_timing.ppt、およびＯｓｖｉｋ、ＳｈａｍｉｒおよびＴｒｏｍｅｒによる「キャッシュ攻撃と対策：ＡＥＳの場合」、http://www.wisdom.weizmann.ac.il/tromer/に詳述されている。
【０００６】
この問題に対しては可能な多くの解決法があり、そのいくつかはこれらの書類に記述されている。たとえば、安全な高信頼性を実行するためのセキュア・ドメインと信頼されていない処理を実行するためのノン・セキュア・ドメインを有するシステムにおいて、これらドメインの間の切り替えに際してキャッシュを一気に消去することができる。これは、明らかに性能と電力において不経済である。
【０００７】
代わりにキャッシュを分割して、キャッシュの一部分を性能に影響のある特定領域へ静的に割り当てることができる。代わりに、キャッシュを使用すべきでない場合には、キャッシュを全く使用せずに、その代わり緊密に結合されたメモリをルックアップ・テーブルとして使用できる。これの欠点は、これらのメモリは典型的に大きくないことである。テーブルが、緊密に結合されたメモリ内に永久的に記憶されている場合は、これは限られたメモリ空間の多くを使用するが、しかし必要なときにそれらがコピーされるならば、性能および電力において不経済なものになる。
【０００８】
もう１つの代替手段は、動作中にルックアップ・テーブルを計算することであるが、これはのろくて、かなりの電力コストを引き起こす。
【発明の開示】
【発明が解決しようとする課題】
【０００９】
大きすぎる電力または性能のオーバーヘッドを引き起こすことなしに、機密処理のセクションのキャッシュ・アクセス動作に関する情報が信頼されていない処理へ漏洩するのを防止することが望ましい。
【課題を解決するための手段】
【００１０】
本発明の第１の面は、機密処理のセクションのキャッシュ・アクセス動作に関する情報が信頼されていない処理に漏洩するのを防止する方法を提供し、前記機密処理および前記信頼されていない処理はデータ処理装置内のプロセッサにより遂行され、前記データ処理装置は更に、前記機密処理と前記信頼されていない処理を遂行しながら前記プロセッサにより要求される情報を記憶するように動作可能な少なくとも１つのキャッシュを含み、前記方法は：前記プロセッサにより前記機密処理のセクションの処理を開始するのに先立って、前記少なくとも１つのキャッシュ内の前記機密処理の前記セクションにより要求される前記機密処理ローディング情報により、さもなければ立ち退かされるであろう前記少なくとも１つのキャッシュのロケーションに記憶された情報を立ち退かせるステップを含む。
【００１１】
１つのプロセッサ上で実行されてキャッシュを共用する異なった処理ができるようにすることには多くの利点がある。いくつかの処理が機密処理であって、その他が信頼されていない処理である場合は、機密処理を操作中のデータに信頼されていない処理がアクセスするのを防止するように、機構が工夫されてきた。しかしながら、この方法によりデータを保護することが知られていても、それらが１つのキャッシュを共用するという事実は、機密処理のキャッシュ・アクセス動作のような他の情報が、注意しなければ信頼されていない処理により引き出され得ることを意味する。本発明の方法は、機密処理のセクションが必要とする情報をキャッシュがロードするときに、機密処理によりさもなければ立ち退かされるであろうキャッシュのロケーション内に記憶されたあらゆる情報を、機密処理のセクションの処理を開始するときに最初に立ち退かせることにより、この情報漏洩を防止する手段を提供する。機密セクションの処理の開始にあたりこの情報を立ち退かせることにより、機密処理のこのセクションがデータをロードするべき全てのキャッシュ・ロケーションが立退き済みであるので、機密処理のこのセクションのアクセス動作を信頼されていない処理が引き出すことはできない。こうして、機密処理が処理されたそれらのセクションをたどって、これらのロケーションが実際に機密処理によりアクセスされたかどうかを、これらのロケーションの各々に信頼されていない処理が記入することが必要であり、そしてそれだけで各キャッシュ・ロケーションについて、何の特定情報も引き出すことができない。キャッシュ・ライン立退き手順が割り込みされた場合でも、割り込みが起きたときにどれほど多くの立退きが完了したかについての情報を攻撃者が得られるとしても、これからどんな機密データを推論することもできないので、これはセキュリティ・リスクではない。
【００１２】
処理は、それ自体のメモリ・アドレッシングを有する一連の命令である。処理は、いくつかのオペレーションのスレッドを有し得る。
【００１３】
いくつかの実施例において、前記方法は更に：前記プロセッサにより前記機密処理の前記セクションの処理を開始するステップと；切り替え要求に応答して、前記機密処理の前記セクションの処理中に、前記信頼されていない処理へ前記プロセッサを切り替えるステップと；前記信頼されていない処理から前記機密処理の前記セクションへのスイッチ・バックに際して、前記機密処理の前記セクションの処理を再開するのに先立って、前記少なくとも１つのキャッシュ内の前記機密処理の前記処理によって要求される前記機密処理ローディング情報によりさもなければ立ち退かされる、前記少なくとも１つのキャッシュのロケーション内に記憶された情報を立ち退かせるステップとを含む。
【００１４】
さらに、このセクションの処理の開始における立退きを遂行することにより、このセクションから信頼されていない処理へ戻る切り替えを要求するあらゆる割り込みは、これら更なるステップを直ちに実行する必要がない。これら更なるステップは、信頼されていない処理からのスイッチ・バックが起っても必ずしも遂行される必要がないが、しかし機密の安全な処理へのスイッチ・バックまで、これらのステップを遅らせることができるという事実は、信頼されていない切り替えレイテンシイを削減することを可能にする。
【００１５】
いくつかの実施例において、前記機密処理によりさもなければ立ち退かされるかも知れない前記少なくとも１つのキャッシュのロケーションに記憶された情報を立ち退かせる前記ステップは、前記少なくとも１つのキャッシュ内の前記機密処理の前記セクションにより要求されるかも知れない前記情報を記憶することを含む。
【００１６】
重要なことは、これらロケーション内に記憶された信頼されていない情報を立ち退かせることであるが、それを実行する好ましい方法は、機密プロセッサのセクションにより要求されるかも知れない情報によりこの情報を立ち退かせ置き換えることである。これは、必要とされる情報がキャッシュへあらかじめロードされており、従って処理のそのセクションが実際にそれを要求してもキャッシュを利用可能である点において、性能上の利点を明らかに有する。こうして、この情報がこのセクションにより後に必要とされても、関連のロケーションを立ち退かせるステップを非常に僅かな追加コストにより遂行できる。
【００１７】
いくつかの実施例において、前記プロセッサはセキュア・ドメインおよびノン・セキュア・ドメインにおいて動作可能であり、前記プロセッサがノン・セキュア・ドメイン内で動作中にアクセスできないセキュア・データへのアクセスを、前記プログラムが前記プロセッサ・セキュア・ドメイン内でプログラムを実行中に有するように動作可能であり、前記機密処理は前記セキュア・ドメイン内で実行されるセキュア処理であり、また、前記信頼されていない処理はノン・セキュア・ドメイン内で実行される処理である。
【００１８】
機密処理および信頼されていない処理は、多数の異なった処理であり得るが、たとえばそれらが特定環境で実行する通常の処理であっても良く、いくつかの実施例ではそれらはさらに分離されて、機密処理がセキュア・ドメイン内で実施されるセキュア処理であり、また信頼されていない処理はノン・セキュア処理である。
【００１９】
いくつかの実施例において、前記プロセッサはノン・セキュア・ドメイン内で複数の信頼されていない処理を処理し、またセキュア・ドメイン内で複数の機密処理するように動作可能であり、前記方法は少なくとも１つの前記機密処理の１セクションのキャッシュ・アクセス動作に関する情報を前記複数の信頼されていない処理へ漏洩することを妨げる。
【００２０】
セキュア・ドメインおよびノン・セキュア・ドメインは、セキュア・ドメイン内で実行する全ての処理の信頼性があるように設定することができ、こうしてこの方法が関連するのが機密処理と信頼されていない処理の間の情報漏洩のみであり、複数のセキュア処理の間での情報漏洩は許容される。
【００２１】
いくつかの実施例において、前記セキュア・ドメインおよびノン・セキュア・ドメイン内での処理の間を切り替える前記ステップは、モニタ・モードを介して遂行され、前記モニタ・モードは、複数のドメインの間の切り替えが前記機密処理の前記セクションへの切り替えを含む事を検出すると、前記機密処理の前記セクションによりさもなければ立ち退かされる前記少なくとも１つのキャッシュのロケーション内に記憶された情報の前記立退きを開始する。
【００２２】
セキュア・ドメインとノン・セキュア・ドメインの間を切替える制御は、モニタ・モードにより有利に遂行できる。モニタ・モードは、ドメインの間のデータ漏洩を防止するように作用できて、情報の立退きを開始するために使用できる。
【００２３】
いくつかの実施例において、前記機密処理の前記セクションはセキュリティ・クリティカル・セクションである。
【００２４】
この方法によりキャッシュ・アクセス動作が保護される機密処理のセクションは、機密処理の全体であるか、または特にセキュリティがクリティカルなセクションである。これは、極度に機密なデータの処理が遂行されるセクションである。たとえば、それは暗号キーを含む処理である。
【００２５】
いくつかの実施例では、前記機密処理の前記セキュリティ・クリティカル・セクションは、暗号処理を含む。
【００２６】
暗号処理は、暗号キーを引き出すために、キャッシュ・アクセス・パターンが使用される計算を含む。こうして、そうした場合は信頼されていない処理によりこれらアクセス・パターンが引き出されないことが、極度に重要である。
【００２７】
いくつかの実施例において、前記セキュリティ・クリティカル・セクションの処理に先立って前記少なくとも１つのキャッシュ内に記憶された前記情報は、前記セキュリティ・クリティカル・セクションがデータから要求する少なくとも１つのルックアップ・テーブルである。
【００２８】
本発明の諸実施例は、暗号法で使用される種々なタイプの情報を記憶するキャッシュのために使用でき、たとえば、それは暗号命令を記憶する命令キャッシュのために使用できるが、しかし、それは特にデータ・ルックアップ・テーブルを使用する暗号処理に応用可能である。そうした暗号処理は、キャッシュ・アクセス・パターン攻撃に対して傷つきやすく、そこでは暗号キーがキャッシュ・アクセス・パターンの分析から引き出される。こうして、この技法はこれらルックアップ・テーブルを記憶するキャッシュに応用されるとき、特に有用である。
【００２９】
いくつかの実施例においては、１つだけの安全な機密処理が前記データ処理装置により処理されるが、他の実施例においては、複数の機密処理が前記データ処理装置により処理され、各々暗号処理セクションを含み、これら暗号処理セクションは複数のルックアップ・テーブルからデータを要求し、前記データ処理装置はさらに前記複数のルックアップ・テーブルの各々に対応する複数のルックアップ・フラッグを含み、そこで前記方法はさらに下記の諸ステップを含む：前記セキュア・モードにおける処理を開始するのに先立って、前記複数のルックアップ・フラッグを第１の所定値へセットするステップと；前記プロセッサにより前記複数のセキュア処理の１つのセキュリティ・クリティカル・セクションの処理を開始または再開するのに先立って：前記対応するルックアップ・フラッグが前記第１所定値へセットされるときに、前記少なくとも１つのキャッシュにおいて、前記機密処理の前記セキュリティ・クリティカル・セクションがそこからデータを要求する前記複数のルックアップ・テーブルの少なくとも１つを記憶して、前記対応するルックアップ・フラッグを第２の所定値へ設定するステップと；および前記対応するルックアップ・フラッグが前記第２の所定値セットされるならば、前記少なくとも１つのキャッシュへ前記情報を記憶しないステップとを含む。
【００３０】
遂行される複数の暗号処理があって、複数のルックアップ・テーブルを要求する場合は、どのルックアップ・テーブルが既にキャッシュ内に記憶済みであるかを記録するのが有利であり、それによりキャッシュ・アクセス・パターンの漏洩を防止するために、キャッシュにこのデータをロードする必要があるかどうか、または、このデータが既にキャッシュ内に存在するので、このデータをロードする必要があるかどうかを知ることができる。
【００３１】
いくつかの実施例においては、前記機密処理の前記セクションを実行するのに先立って、所定のステップが遂行されて前記セクションが実行されることを指示し、また前記セクションの完了に続いて更なるステップが遂行されて前記セクションが完了済みであることを指示する。
【００３２】
処理の間で切り替えるときに、機密処理の特定セクションが再開されるかどうかをデータ処理装置に知らせるために、この情報を記録するステップが取られて、必要な時間に処理装置に利用可能であるようにされる。これは、情報漏洩の削減を確実にするために取る必要があるステップを、プロセッサが能率的に制御するのを支援する。
【００３３】
いくつかの実施例において、前記所定のステップの１つは前記処理の前記セクションが実行されていることを示すインディケータ値を設定することを含み、また前記更なるステップの１つは、前記処理の前記セクションがもはや実施されていないことを示すために、前記インディケータ値をリセットすることを含む；前記機密処理へスイッチ・バックするに際して、前記インディケータ値から前記セクションが処理されるかどうかを決定して、もしそうならばハンドラ・ルーチンを開始して、前記ハンドラ・ルーチンは、前記機密処理の前記セクションを再開するのに先立って、前記少なくとも１つのキャッシュ内で前記機密処理の前記セクションにより要求されるであろう情報を記憶するステップを含む。
【００３４】
機密処理の特定セクションが処理されるかどうかを記録するのに便利な方法は、インディケータ値の使用により処理されることであり、インディケータ値は、セクションが開始されまたは完了されるときにセットおよびリセットされることができる。
【００３５】
いくつかの実施例において前記情報は命令を含み、一方他の実施例では前記情報はデータを含む。
【００３６】
機密処理のキャッシュ・アクセス動作の詳細は、データ・キャッシュ・アクセスと命令キャッシュ・アクセスの両方について、望ましくない情報漏洩へ導くかも知れない。したがって、本発明の諸実施例は両方の種類のキャッシュへ応用できる。
【００３７】
いくつかの実施例において、前記少なくとも１つのキャッシュの前記ロケーションは、キャッシュ・ラインを含む。
【００３８】
本発明のさらなる面は、データ・プロセッサ上で実行するときにデータ・プロセッサを制御して、本発明の第１の面による方法のステップを遂行するように動作できるコンピュータ・プログラム製品を含む。
【００３９】
本発明のなお更なる面は、機密処理および信頼されていない処理を遂行するようにされた少なくとも１つのプロセッサ、および前記機密処理および信頼されていない処理を遂行中に前記プロセッサ中により必要とされる情報を記憶するようにされた少なくとも１つのキャッシュとを含むデータ処理装置を提供し、前記データ処理装置はさらに：処理されるべき前記機密処理のセクションを検出するように構成された制御ロジックを含み、前記セクションの検出に応答しまた前記セクションの処理を開始または再開するのに先立って、前記制御ロジックは前記少なくとも１つのキャッシュ内の前記機密処理の前記セクションにより要求されるべき前記機密処理ローディング情報により、さもなければ立ち退かされるべき前記少なくとも１つのキャッシュのロケーションに記憶された情報を立ち退かせるように構成されている。
【００４０】
本発明の上記およびその他の目的、特徴および長所は、例示的な実施例の下記の詳細な説明を添付図面と共に読むことにより、明らかになるであろう。
【実施例】
【００４１】
図２は、ノン・セキュア・ドメイン内で実行される信頼されていない処理１０、およびセキュア・ドメイン内で実行される機密処理２０を、図式的に示す。機密処理２０は、たとえばルックアップ・テーブルを含む暗号処理であるセキュリティ・クリティカル・セクション２２を有する。このセクションに入るのに先立って、ハンドラ・ルーチン２４が遂行される。このハンドラ・ルーチン２４は、処理の間にクリティカル・セクションによりどの情報が必要とされようとしているかを分析し、たとえばそれが暗号処理であれば、そのときはどのルックアップ・テーブルが必要であるかを評価して、それからこのクリティカル・セクションの処理を開始するのに先立って、この情報をキャッシュへプレロードするように動作する。それから図は、セクション２２が割り込みされて信頼されていない処理１０が再開されるのを示す。セキュリティ・クリティカル・セクション２２により必要とされるかも知れないあらゆる情報をハンドラ・ルーチンがプレロードするので、機密処理のこの部分のアクセス・パターンに関する情報は、何も信頼されていない処理１０により引き出すことができず、それはそのときキャッシュの適当な部分は、部分２２に実行するのに先立って実際に飽和されているからである。機密処理２０が再開されると、セキュリティ・クリティカル・セクション２２が再開される。このセクションの処理を再開するのに先立って、ハンドラ・ルーチンがもう一度実行される。これは、クリティカルな機密部分のキャッシュ・アクセス動作に関する情報が信頼されていない処理１０により引き出すことができないことをもう一度確実にする。さらに、セキュリティ・クリティカル・セクションの処理から立ち去るのに際してでなくそこへ戻るのに際して、ハンドラ・ルーチンを実行することにより、割り込みＩＲＱのレイテンシイが影響されない。
【００４２】
図３は、プロセッサ１２上で図２に示したような、信頼されていない処理１０およびセキュア処理２０を処理するように動作できる本発明の実施例によるデータ処理装置を示す。このデータ処理装置は、ノン・セキュアすなわち信頼されていないドメイン３０とセキュア・ドメイン４０を含み、モニタ・モード５０により制御されて、これらドメインの間で切り替わる。ノン・セキュア・ドメイン３０は、プロセッサ１２上で、信頼されていない処理１０の実行を制御できるＯＳ３２を有する。信頼されていない処理１０（図２参照）が、機密処理２０（図２参照）へ切り替わるときには、この切替えはモニタ・モード５０を介して遂行される。
【００４３】
セキュア・ドメイン４０は、セキュリティ・クリティカル・セクション・インディケータ７２を有するセキュア・カーネル７０を含み、セキュリティ・クリティカル・セクション・インディケータ７２はコードのセキュリティ・クリティカル・セクションが処理されるときにセットされ、またそれが完了するときにリセットされる。こうして、ノン・セキュア・ドメインからセキュア・ドメインへの切替えに際して、それがセットされていれば、これはセキュリティ・クリティカル・セクションがまだ完了していないことを示し、したがって再開されることを示す。
【００４４】
セキュア・カーネル７０はまたハンドラ・ルーチン７４を含み、ハンドラ・ルーチン７４は、セキュリティ・クリティカル・セクションを開始または再開するときに実行されて、キャッシュ・アクセス・パターンに関する情報の漏洩を防止するのに必要なセキュリティ・ステップを遂行するように動作する。セキュア・ドメイン４０はまた、暗号ルックアップ・テーブルに関係するデータを記憶するように動作可能なスコアボード７６を含む。暗号ルックアップ・テーブルがキャッシュ６０に記憶されるたびに、スコアボード７６内の対応するインディケータ・ビットがセットされることにより、セキュリティ・クリティカル・セクションによりあるルックアップ・テーブルが要求されているとハンドラ・ルーチン７４が決定しても、このデータをロードする必要があるかどうかをスコアボードから知ることができる。データをロードする必要がない場合は、これを記録するためにスコアボード７６内に対応するインディケータ・ビットをセットするデータをロード済みである。モニタ・モードを介してノン・セキュア・ドメインへスイッチ・バックするときに、スコアボード７６内の値がリセットされ、代わりに、セキュア処理のセキュリティ・クリティカル・セクションを処理するのを先立ってそれらをリセットすることもできる。いずれの場合もノン・セキュア・ドメインの処理とセキュア・ドメインのセキュリティ・クリティカル・セクションにおける処理の再開の間でリセットしなければならない。
【００４５】
信頼されていない処理１９のモニタ５０を介して、セキュア処理２０へ切り替える際に、モニタ・モードはセキュア・カーネル７０へ処理の制御を切り替える。セキュア・カーネル７０はセキュリティ・クリティカル・セクション・インディケータ７２を注目して、機密処理２０がセキュリティ・クリティカル・セクション２２内に現在あるかどうかを調べる（図２参照）。これが該当することをセキュリティ・インディケータ７２が指示すれば、セキュリティ・カーネル７０が動作して、プログラムのこの部分が再開する以前に、ハンドリング・ルーチン７４を開始する。ハンドラ・ルーチン７４は、処理２０のセキュリティ・クリティカル・セクション２２がどのルックアップ・テーブルからデータを要求するかを監視する。それからこれらのルックアップ・テーブルをキャッシュ６０へプレロードして、対応するルックアップ・テーブル・インディケータ・ビットをスコア・ビット７６へセットして、これらルックアップがプレロード済みであることを指示する。この時点でセキュリティ・クリティカル・セクション２２を暗号ロジック８０により処理することができる。暗号ロジック８０がこのセクションを処理し終わると、それは制御をカーネル７０へ返して、セキュリティ・クリティカル・セクション・インディケータ・ビット７２がリセットされる。処理２０内に更なるセキュリティ・クリティカル・セクションがある場合は、もう一度ビット７２がセットされて、制御ロジック７４によりハンドラ機能が実行される。このハンドラ機能は次のセキュリティ・クリティカル・セクションに注目して、どのルックアップ・テーブルが必要かを監視する。それからそれはスコアボード７６に注目して、キャッシュ６０内にすでにプレロードされているかどうかを監視する。これが該当すると、それにプレロードする必要はない。以前のセクションにより要求されたものに対して追加のルックアップ・テーブルが要求される場合は、これらがキャッシュ６０へプレロードされ、スコアボード７６内の対応するルックアップ・テーブル・ビットがセットされる。その場合暗号ロジックが進行して、処理２０のこの部分を処理する。注意すべきは、これら種々のセキュリティ・クリティカル・セクションが、処理２０の単一スレッド内または別々のスレッド内に存在し得ることである。
【００４６】
プロセッサのノン・セキュア・セクションから割り込みが起って、処理１０を再開すべきことを指示する場合は、モニタ・モード５０が処理を処理１０へ返す。この時点で、スコアボード・ビットがリセットされる。これは処理を処理１０へ返すこととは独立に実行され、それにより割り込みのレイテンシイに影響しないようにされる。代わりに、セキュア処理への戻りで、それらをリセットしてもよい。
【００４７】
この実施例においては、どのセキュリティ・クリティカル・セクションが入力済みであるかに関連するキャッシュ内のルックアップ・テーブルのローディングを追跡するためにスコアボードが使用されるが、他の方法においてこれがなしうることは当業者が明らかである。たとえば、セキュア・カーネル７０内のロジックにどのルックアップ・テーブルをロード済みであるかを、セキュア・カーネル７０が追跡することができる。
【００４８】
図４は、図３に記述したようなデータ処理装置により遂行される１つの処理を図式的に示す。見られるとおり、処理１０は処理２０へ切り替わり、処理１０は信頼されていない処理であり、また処理２０が機密処理である。切り替えに際して、処理２０の処理がセキュリティ・クリティカル・セクション２２内にあることをインディケータ・ビット７２が指示すると、ハンドラ・ルーチン２４が呼ばれて実行される。ドメインの切替えに応答して、ハンドラ・ルーチン２４はスコアボード７６内の値をリセットする。
【００４９】
セキュリティ・クリティカル・セクション２２は処理２０のスレッドＴ１であって、ルックアップ・テープル１とルックアップ・テーブル２を要求する。ハンドラ・ルーチン２４はスレッドＴ１がルックアップ・テーブル１とルックアップ・テーブル２を必要とすることを評価して、スコアボード７６内にこれらのビット適当にセットして、このデータをこれらのテーブルからキャッシュへロードする。それからセキュリティ・クリティカル・セクション２２を処理することができる。割り込みＩＲＱに続いて、処理は処理１０へ戻る。処理がスイッチ・バックしてセクション２２を再開すると、インディケータ・ビット７２がセットされるのに応答して、ハンドラ・ルーチン２４がもう一度実行される。この例で示すようにハンドラ・ルーチンは、それ自体割り込みされることがあり、もしこれが起きるとプロセッサは単純に処理１０へスイッチ・バックするだけであるが、しかしインディケータ・ビットがセットされてハンドラが割り込み済みであることを指示する。処理２０へスイッチ・バックの際に、処理２を再開する以前にハンドラ・ルーチン２４をふたたび開始しなければならない。これはスコアボードをリセットして、それからルックアップ・テーブル１とルックアップ・テーブル２をロードすることによりＴ１を再開して、スコアボード７６に適当なビットをセットすることを含む。
【００５０】
これは、割り込みされたハンドラ・ルーチンを処理する１つの方法であるが、他の実施例においてハンドラを打ち切りまたは再始動できない場合、または再帰的に実行できない場合は、ハンドラ・ルーチンを実行中に割り込みが単純に動作不能にされる。これは、明らかに単純な解決であるが、しかしレイテンシイの欠点を有する。
【００５１】
このスレッドＴ１が完了済みになると、スレッドＴ２がそれから処理されて、これもまた機密処理であって、ルックアップ・テーブル１とルックアップ・テーブル３を必要とする。したがって、ハンドラ・ルーチン２４が遂行されてルックアップ・テーブル３がロードされ、またルックアップ・テーブル３のためのビットがスコアボード７６にセットされるが、その理由はルックアップ・テーブルがすでにキャッシュ内にロードされていることをスコアボード７６が指示済みであり、こうしてハンドラ・ルーチン２４はこのテーブルの再びのロードが不要であることを知っているからである。スレッドＴ２が完了すると、次はノン・セキュリティ・クリティカル・セクションであり、こうしてインディケータ・ビット７２がリセットされる。
【００５２】
上述の諸実施例において、セキュア・ドメインとノン・セキュア・ドメインの間の情報漏洩が制御され、また全てのセキュア処理が信頼できると仮定されている。これは常に該当するとは限らず、いくつかの実施例においてセキュア・ドメイン内のスレッドの切り替えもまたスコアボード７６の消去を引き起こすように動作して、それにより次の処理に必要な全てのルックアップ・テーブルをプレロードすることが必要になる。同様に２つの処理が異なったセキュリティ・ドメイン内にあるがしかし１つのキャッシュ・アクセス動作情報を他の処理により観察できないことが望ましい場合は、以前の例と同様に処理１から処理２への切り替えに際してハンドラ・ルーチンが実行される。
【００５３】
図５は、本発明の実施例が採用されるデータ処理システムのブロック図である。このシステム図は、２つのプロセッサ・コア１１０および１２０を含む。プロセッサコア１１０と１２０の各々は、その固有の関連レベル・ワン・キャッシュ１１２および１２２を有する。システム・バスを介して種々のデバイスが接続されている。詳しくは、システム・キャッシュ１３０が供給されて、これはプロセッサ・コア１１０またはプロセッサ・コア１２０によるアクセスのためにデータ値を記憶でき、従ってこれらのプロセッサ・コアはシステム・コア１３０へのアクセスを共有する。
【００５４】
さらにまた供給されるのは、１つまたはそれ以上の周辺デバイス（図示なし）であって、これらは周辺インターフェイス（図示なし）を介してアクセスされ、システム・バス９０を周辺バス（図示なし）に相互接続している。これら周辺デバイスは、オフ・チップで存在し得るし、またはオン・チップで供給され得る。
【００５５】
本発明の１つの実施例によれば、データ処理装置は複数のドメインを有し、これらドメイン内でデータ処理装置が動作できる。１つの特定の実施例において、複数のドメインは１つのセキュア・ドメインと１つのノン・セキュア・ドメインを含み、所定のアクセス権は各ドメインに関連している。詳しくは、１つの実施例において、ノン・セキュア・ドメインで動作中に、デバイスはそのノン・セキュア・ドメインに関連するノン・セキュア・データのみにアクセスできる。したがって、このノン・セキュア・ドメインで動作するあらゆるデバイスは、セキュア・ドメインに属するセキュア・データへアクセスすることができない。セキュア・ドメインに関連する所定のアクセス権は多様な形式を取り得るが、しかし典型的にセキュア・ドメイン内で動作中のデバイスが、セキュア・ドメインのセキュア・データおよびノン・セキュア・ドメインのノン・セキュア・データの両方へアクセスするのを許容する。
【００５６】
コア１１０および１２０の各々は、ひと時に１つのドメインにおいてのみ動作できるが、しかしいずれの時点でもそれら個別のプロセッサ・コアは、互いに対して別々のドメインにおいて動作できる。
【００５７】
データ処理装置内のキャッシュ１１２、１２２、１３０は、セキュア・データおよびノン・セキュア・データの両方に記憶するように配置することができ、また１つのビットを各キャッシュ・ラインに関連させて、そのキャッシュ・ライン内に記憶されたデータがセキュア・データまたはノン・セキュア・データであることを識別するようにすることができる。そうした方法で配置されたキャッシュの一層の詳細は、共通の譲受人である同時係属米国特許出願No.１０／７１４，４８１に記述され、その内容は本書に参考文献として組み込まれている。
【００５８】
本発明の実施例によれば、コア１１０、１２０の各々は、そのマスタ・デバイスがその中で現在動作中であるドメインを識別するドメインＩＤ信号を出力するように配置される。これは、キャッシュのドメインおよびセキュリティ・ステータスに応じて、キャッシュ内の一定のデータへのアクセスを許容しまたは拒否するために使用できる。こうして、コア１  １１０またはコア２  １２０上で動作するノン・セキュア処理によるセキュア・データへのアクセスを拒否することができる。しかしながら、無許可アクセスからセキュア・データを保護することができても、キャッシュ・アクセス・パターンが傷つく可能性があり、またセキュア・ドメインにより処理されているセキュア・データに関する情報が漏れる可能性がある。ある特定のコアに特有なＬ１キャッシュにアクセスする場合は、上記のようにハンドラ・ルーチンの使用によりアクセス・パターンを保護することができ、そこでセキュア・ルーチンによりアクセスされるかも知れないキャッシュ・ロケーションが、セキュア・ルーチンの実行に先立って立ち退かされ、または少なくともそのセキュア・ルーチンの特定のクリティカル・セクションの実行に先立って立ち退かされ、それによりキャッシュ・アクセス・パターンの観察から何のセキュア・データを引き出すこともできないようにされる。
【００５９】
しかしながら、コードのセキュリティ・クリティカル・セクションによるシステム・キャッシュ１３０の使用は、ひと時に二つ以上のプロセッサがキャッシュにアクセスするので問題を生ずる可能性があり、キャッシュ・アクセス・パターンを保護するのが困難である。この問題を処置するために、本発明の実施例は、コードのセキュリティ・クリティカル・セクションにおいて、ローカルＬ１キャッシュのみを使用することを確実にするように動作できる。代わりにそうすることにより付加的なリスクがあると評価される限り、システム・キャッシュを使用するように決定することができる。共用キャッシュのあらゆる使用は、リスク（恐らくは、受け入れ可能な）を追加するが、それは他の処理タスクがシステム・キャッシュ内のラインを立ち退かせるかも知れず、そしてその時にそれらが再ロードされる時をスポットするかも知れないからである。
【００６０】
ハンドラ・ルーチンに対する更なるオプションは、ある「セキュリティ・クリティカル・セクション」を実行中に、任意のセキュリティ制限を強制することである。単一のプロセッシング・コアの場合は、これらの制限はキャッシュのサイド・チャネルを閉じなければならないことだけである。これは、ある信頼されていない処理によりセキュア処理の機密セクションのキャッシュ・アクセス動作を観察する結果として、何の機密データも得られないことを確実にすることによって達成される。しかしながら、（図６に示すような）マルチ・コアの場合には、これはセキュリティ・クリティカル・セクションが完了するまで、他のコア内の全ての信頼されていない処理タスクを停止させることを含むかも知れない。そうした場合、１つのセキュリティ・クリティカル・セクションによりシステム・レベル・キャッシュを使用することを許容するのを受け入れるべきであろう。
【００６１】
図６は、本発明の１つの実施例に使用されるコードの例を示す。一つのセキュリティ・クリティカル・セクションＳＣＳが実行または再開される時（ノン・セキュア・ドメインへの切替えの後）、セキュリティ・クリティカル・セクションに先立って、そのセクションのためのハンドラ・ルーチンが実行される。こうして、ＥｎｔｅｒＳＣＳ命令に応答してＳＣＳが実行されると、ハンドラ１が最初に実行される。これは、データ・キャッシュ内へセキュリティ・クリティカル・セクションＳＣＳにより要求されるいずれかのルックアップ・テーブルのプレローディングを含み、それによりハッキング処理に対してこのデータのアクセス・パターンに関する情報利用を防止するようにされる。このセクションは、命令ＬｅａｖＳＣＳに応答して、それからそのままにして置かれる。
【００６２】
それから、ノン・セキュア処理が実行される。そのとき、ｅｎｔｅｒＳＣＳに応答して（ハンドラ２）、このセクションの実行に先立って次のセキュリティ・クリティカル・セクションに対するハンドラが実行される。このハンドラ・ルーチンは、Ｉキャッシュへのセキュリティ・セクションにより要求される命令シーケンスのプレローディングを含み、それにより信頼されていない処理がセキュリティ・クリティカル・セクションの命令アクセス・パターンに関する情報を引き出せるようになることを防止する。代わりに、実行されるＳＣＳによりアクセスされるかも知れないキャッシュの一部分を無効にすることだけを含むことも有り得る。注意すべきは、セキュリティ・クリティカル・セクションＳＣＳ２の処理中に、この処理がノン・セキュア・ドメインへドメインを切り替える場合には、セキュア・ドメイン内のセキュリティ・クリティカル・セクションＳＣＳを再開するのに先立って、ハンドラ・ルーチン（ハンドラ２）を再び実行する必要があることである。
【００６３】
添付図面を参照しながら本発明の例示的な実施例を本書に詳細に説明してきたが、理解すべきは、本発明はそれらの厳密な実施例に限定されるものではなく、添付の特許請求の範囲に定義される本発明の範囲と精神から離れることなく、当業者がそこに種々の変更と修正を実行し得ることである。
【図面の簡単な説明】
【００６４】
【図１】先行技術により１つのキャッシュを共有する信頼されていない処理とセキュア処理を図式的に示す。
【図２】本発明の実施例により実行されるノン・セキュア処理およびセキュア処理を図式的に示す。
【図３】本発明の実施例によるデータ処理装置を図式的に示す。
【図４】本発明の実施例により異なったスレッドを有するノン・セキュア処理とセキュア処理を図式的に示す。
【図５】本発明の諸実施例に採用され得るデータ処理システムのブロック図である。
【図６】例示的な暗号コードを示す。
【符号の説明】
【００６５】
１０  信頼されていない処理
２０  機密処理
２２  セキュリティ・クリティカル・セクション
２４  ハンドラ・ルーチン
３０  ノン・セキュア・ドメイン
３２  信頼されていない処理のＯＳ
４０  セキュア・ドメイン
５０  モニタ・モード
６０  キャッシュ
７０  セキュア・カーネル
７２  セキュリティ・クリティカル・セクション・インディケータ
７４  ハンドラ・ルーチン
７６  スコアボード
９０  システム・バス
１１０  プロセッサ・コア
１１２  レベル・ワン・キャッシュ
１２０  プロセッサ・コア
１２２  レベル・ワン・キャッシュ
１３０  システム・キャッシュ
Ｔ１  スレッド
Ｔ２  スレッド
【図１】
2008276778.tif 000003
【図２】
2008276778.tif 000004
【図３】
2008276778.tif 000005
【図４】
2008276778.tif 000006
【図５】
2008276778.tif 000007
【図６】
2008276778.tif 000008
【外国語明細書】
2008276778000001.pdf