(57)【特許請求の範囲】
【請求項１】
データ処理装置であって、
セキュア・モードおよびノン・セキュア・モードにおいてデータを処理するデータ・プロセッサであって、前記データ・プロセッサは、前記ノン・セキュア・モードにおいて前記データ・プロセッサがアクセスできないセキュア・データに対してアクセス権を有する前記セキュア・モードにおいてデータを処理し、また前記セキュア・モードでのデータ処理は、セキュア・オペレーティング・システムの制御下で実行され、また前記ノン・セキュア・モードでのデータ処理は、ノン・セキュア・オペレーティング・システムの制御下で実行されるデータ・プロセッサと、
前記データ・プロセッサからの要求に応答してタスクを実行する別の処理デバイスであって、前記タスクは、少なくともいくつかがセキュア・データであるデータの処理を含んでいる別の処理デバイスと、
を含み、
前記別の処理デバイスは、前記タスクを一時停止させる信号の受信に応答して、
セキュア・キーを使用した前記セキュア・データの処理および
前記処理されたセキュア・データのノン・セキュア・データ記憶への保存
を開始し、また前記タスクを再開させる信号の受信に応答して、
前記処理されたセキュア・データの前記ノン・セキュア・データ記憶からの取出しおよび
前記セキュア・キーを使用した前記処理されたセキュア・データの復元
を開始し、ここで前記セキュア・キーは、安全に保管されているため、前記ノン・セキュア・モードで動作する他のプロセスがアクセスできない、
データ処理装置。
【請求項２】
請求項１記載のデータ処理装置であって、前記セキュア・データの前記処理は、前記セキュア・キーを使用した前記セキュア・データの暗号化を含み、前記処理されたセキュア・データの前記復元は、前記セキュア・キーを使用した前記暗号化されたセキュア・データの復号化を含み、前記セキュア・キーは、前記暗号化および復号化を実行するデバイス中に安全に保管される、
前記データ処理装置。
【請求項３】
請求項２記載のデータ処理装置であって、前記データの暗号化を開始する前に、前記別の処理デバイスは、前記データからのセキュア署名の生成を開始し、また前記セキュア署名の暗号化および前記セキュア署名を前記セキュア・データと一緒に保存することを開始し、
前記タスクを再開させる前記信号の受信に応答して、前記別の処理デバイスは、前記暗号化されたセキュア署名の取出しおよび前記暗号化されたセキュア署名の復号化を開始し、前記暗号化されたセキュア・データの復号化のあと、前記復号化された暗号化データからの前記セキュア署名の生成および前記生成されたセキュア署名と前記復号化されたセキュア署名との比較を開始し、
前記生成されたセキュア署名が前記復号化されたセキュア署名と一致しない場合、前記別の処理デバイスは、前記データ・プロセッサに対して信号を発行して、前記データが改ざんされていることを伝え、
前記生成されたセキュア署名が前記復号化されたセキュア署名と一致する場合、前記別の処理デバイスは、前記復号化されたデータを使用して前記タスクを再開する、
前記データ処理装置。
【請求項４】
請求項２記載のデータ処理装置であって、前記データの暗号化のあと、前記別の処理デバイスは、前記暗号化されたデータからのセキュア署名の生成を開始し、また前記セキュア署名を前記暗号化されたセキュア・データと一緒に保存することを開始し、
前記タスクを再開させる前記信号の受信に応答して、前記別の処理デバイスは、前記暗号化されたセキュア署名の取出しおよび前記暗号化されたセキュア署名の復号化を開始し、また前記暗号化されたデータからの前記セキュア署名の生成および前記生成されたセキュア署名と前記復号化されたセキュア署名との比較を開始し、
前記生成されたセキュア署名が前記復号化されたセキュア署名と一致しない場合、前記別の処理デバイスは、前記データ・プロセッサに対して信号を発行して、前記データが改ざんされていることを伝え、また
前記生成されたセキュア署名が前記復号化されたセキュア署名と一致する場合、前記別の処理デバイスは、前記暗号化されたデータを復号化し、前記復号化されたデータを用いて前記タスクを再開させる、
前記データ処理装置。
【請求項５】
請求項１記載のデータ処理装置であって、前記セキュア・データの前記処理は、前記データからのセキュア署名の生成および前記セキュア・キーを使用した前記セキュア署名の暗号化を含み、また前記処理されたセキュア・データの前記復元は、前記暗号化されたセキュア署名の復号化と、前記取り出されたデータからの前記セキュア署名の生成および前記生成されたセキュア署名と前記復号化されたセキュア署名との比較を含み、
前記生成されたセキュア署名が前記復号化されたセキュア署名と一致しない場合、前記別の処理デバイスは、前記データ・プロセッサに対して信号を発行して、前記データが改ざんされていることを伝え、また
前記生成されたセキュア署名が前記復号化されたセキュア署名と一致する場合、前記別の処理デバイスは、前記取り出されたデータを使用して、前記タスクを再開させる、
前記データ処理装置。
【請求項６】
請求項３記載のデータ処理装置であって、前記セキュア・データの前記暗号化および前記署名の前記生成が同じアルゴリズムを使用して実行される前記データ処理装置。
【請求項７】
請求項２記載のデータ処理装置であって、前記暗号化および復号化を実行する前記デバイスが前記別の処理デバイスである前記データ処理装置。
【請求項８】
請求項７記載のデータ処理装置であって、前記別の処理デバイスは、暗号化処理デバイスを含み、前記暗号化処理デバイスは、少なくとも１つのキーを使用してデータの暗号化処理を実行し、前記セキュア・データは、前記少なくとも１つのキーを含む前記セキュア・キーを使用して暗号化される前記データ処理装置。
【請求項９】
請求項２記載のデータ処理装置であって、前記暗号化および復号化を実行する前記デバイスは、他のデバイスがアクセスできない専用のデータ通信経路で前記別の処理デバイスに接続された暗号化処理デバイスである前記データ処理装置。
【請求項１０】
請求項２記載のデータ処理装置であって、前記別の処理デバイスは、暗号化以外の機能を実行する回路を含み、前記別の処理デバイスは、前記セキュア・データを暗号化および復号化する付加的な暗号化回路を含み、前記別の処理デバイスは、前記セキュア・キーのためのセキュア記憶場所を含む前記データ処理装置。
【請求項１１】
請求項７記載のデータ処理装置であって、前記別の処理デバイスは、前記セキュア・キーのための書込み専用の記憶場所を含む前記データ処理装置。
【請求項１２】
請求項１記載のデータ処理装置であって、前記セキュア・キーは、セキュア・モードで動作する前記データ・プロセッサの制御下で前記データ処理装置に保存されるため、それは、セキュア・モードで動作する前記データ・プロセッサのみがアクセスできる前記データ処理装置。
【請求項１３】
請求項１記載のデータ処理装置であって、前記セキュア・キーは、製造時に設定され、前記セキュア・データの前記暗号化および復号化を実行する前記デバイス中に永久的に安全に保管されることによって他のデバイスがアクセスできない前記データ処理装置。
【請求項１４】
請求項２記載のデータ処理装置であって、前記セキュア・データの前記暗号化および復号化を実行する前記デバイスは、乱数発生器を含み、前記セキュア・キーは、リセット時に前記乱数発生器によって生成される前記データ処理装置。
【請求項１５】
請求項１記載のデータ処理装置であって、前記ノン・セキュア・データ記憶は、メモリのノン・セキュア部分を含む前記データ処理装置。
【請求項１６】
請求項１記載のデータ処理装置であって、前記タスクを一時停止させる前記信号は、割込み又は例外に応答して前記データ・プロセッサによって生成される前記データ処理装置。
【請求項１７】
請求項１記載のデータ処理装置であって、前記タスクを一時停止させる前記信号は、前記セキュア・モード又はノン・セキュア・モードの１つから前記セキュア・モード又はノン・セキュア・モードの他方へ前記データ・プロセッサの動作のコンテキストをスイッチさせる信号に応答して前記データ・プロセッサによって生成される前記データ処理装置。
【請求項１８】
請求項１記載のデータ処理装置であって、前記タスクを実行させる前記要求は、前記ノン・セキュア・モードで動作する前記データ・プロセッサから発行される前記データ処理装置。
【請求項１９】
請求項１８記載のデータ処理装置であって、前記データ・プロセッサは、前記データ・プロセッサがノン・セキュア・モードで実行するプログラム・コードに応答して、前記タスクを実行させる要求を前記別の処理デバイスに対して発行するように構成される前記データ処理装置。
【請求項２０】
請求項１記載のデータ処理装置であって、前記別の処理デバイスは、ノン・プログラマブル・ハードウエアを含む前記データ処理装置。
【請求項２１】
請求項１記載のデータ処理装置であって、前記別の処理デバイスは、オペレーティング・システムに制御されずにプログラム・コードを処理するように構成される前記データ処理装置。
【請求項２２】
セキュア・モードおよびノン・セキュア・モードでデータを処理するデータ・プロセッサを含むデータ処理装置上でデータを処理する方法であって、前記データ・プロセッサは、前記ノン・セキュア・モードにある前記データ・プロセッサがアクセスできないセキュア・データに対してアクセス権を有する前記セキュア・モードでデータを処理し、また前記セキュア・モードでのデータ処理は、セキュア・オペレーティング・システムの制御下で実行され、また前記ノン・セキュア・モードでのデータ処理は、ノン・セキュア・オペレーティング・システムの制御下で実行され、更に前記データ・プロセッサは、前記データ・プロセッサからの要求に応答してタスクを実行する別の処理デバイスを含み、前記タスクは、少なくともいくつかがセキュア・データであるデータの処理を含み、前記方法は、
前記データ・プロセッサ上でのデータ処理工程と、
前記データ・プロセッサから前記別の処理デバイスへのタスクを実行させる要求の送信工程であって、前記タスクは、少なくともいくつかがセキュア・データであるデータの処理を含む送信工程と、
前記別の処理デバイス上での前記タスクの開始工程と、
前記タスクを一時停止させる信号の前記別の処理デバイスへの送信工程と、
前記別の処理デバイスが、前記タスクを一時停止させて、セキュア・キーを使用した前記セキュア・データの処理および前記タスクを一時停止させる前記信号の受信に応答した前記処理されたセキュア・データのノン・セキュア・データ記憶への保存を開始させる工程と、
前記別の処理デバイスに前記タスクの再開を命令する信号を前記データ・プロセッサから生成する工程と、
前記別の処理デバイスが、前記ノン・セキュア・データ記憶から前記処理されたセキュア・データを取り出して、前記信号に応答して前記セキュア・キーを使用して前記取り出されたデータを復元する工程であって、前記セキュア・キーは、安全に保管されるため他のデバイスがアクセスできない工程と、
を含む方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の分野は、データ処理に関するものであり、詳細には、第１のデータ・プロセッサの制御下でタスクを実行する付加的な処理デバイスを使用して、セキュア・データおよびノン・セキュア・データを処理することに関する。
【背景技術】
【０００２】
メイン・プロセッサと組み合わせてアクセラレータ又はコ・プロセッサを使用して性能を向上させることは、知られている。この際、アクセラレータ又はコ・プロセッサは、メイン・プロセッサによって要求されるタスクを実行する。付加的な処理パワーを備えることで性能を向上できることは、明らかであるが、そのようなシステムの考え得る問題点は、プロセッサとアクセラレータとの間の通信に付随するオーバヘッドである。例えば、セキュア・オペレーティング・システムおよびノン・セキュア・オペレーティング・システムの制御下でセキュアおよびノン・セキュアの両データを処理する場合、プロセッサとアクセラレータとの間で転送されるデータのセキュリティ状態を管理するための通信オーバヘッドは、非常に高い。そのようなケースでは、数十ないし数百のサイクルしか要しないタスクが獲得する処理能力と比べてずっと大きい通信オーバヘッドをそれらに付随して有することから、アクセラレータに送って処理させるタスクを大きいものに限定することしか有効な方法はない（Ｉｎ  ｓｕｃｈ  ｃａｓｅｓ  ｉｔ  ｍａｙ  ｏｎｌｙ  ｂｅ  ａｄｖａｎｔａｇｅｏｕｓ  ｔｏ  ｓｅｎｄ  ｌａｒｇｅ  ｔａｓｋｓ  ｔｏ  ｔｈｅ  ａｃｃｅｌｅｒａｔｏｒ  ｔｏ  ｂｅ  ｐｅｒｆｏｒｍｅｄ，  ｔａｓｋｓ  ｔｈａｔ  ｔａｋｅ  ｏｎｌｙ  ａ  ｆｅｗ  ｔｅｎｓ  ｏｒ  ｅｖｅｎ  ｈｕｎｄｒｅｄｓ  ｏｆ  ｃｙｃｌｅｓ  ｈａｖｉｎｇ  ａｓ  ｍｕｃｈ  ｏｒ  ｍｏｒｅ  ｃｏｍｍｕｎｉｃａｔｉｏｎ  ｏｖｅｒｈｅａｄ  ａｓｓｏｃｉａｔｅｄ  ｗｉｔｈ  ｔｈｅｍ  ａｓ  ｔｈｅｙ  ｗｏｕｌｄ  ｈａｖｅ  ｐｒｏｃｅｓｓｉｎｇ  ｐｅｒｆｏｒｍａｎｃｅ  ｇａｉｎｅｄ．）。
【０００３】
本発明の第１の態様で提供されるデータ処理装置は、セキュア・モードおよびノン・セキュア・モードでデータを処理するデータ・プロセッサを含み、前記データ・プロセッサは、前記ノン・セキュア・モードにおいて前記データ・プロセッサがアクセスできないセキュア・データに対してアクセス権を有する前記セキュア・モードでデータを処理し、また前記セキュア・モードでのデータ処理は、セキュア・オペレーティング・システムの制御下で実行され、前記ノン・セキュア・モードでのデータ処理は、ノン・セキュア・オペレーティング・システムの制御下で実行される。データ処理装置は、更に前記データ・プロセッサからの要求に応じてタスクを実行する更に別の処理デバイスを含み、前記タスクは、少なくともいくつかがセキュア・データであるデータの処理を含み、ここで前記別の処理デバイスは、前記タスクを一時停止させる信号の受信に応答して、セキュア・キーを使用した前記セキュア・データの処理および前記処理されたセキュア・データのノン・セキュア・データ記憶への保存を開始し、また前記タスクを再開させる信号の受信に応答して、前記ノン・セキュア・データ記憶からの前記処理されたセキュア・データの取出し、および前記セキュア・キーを使用した前記処理されたセキュア・データの復元を開始する。ここで前記セキュア・キーは、前記ノン・セキュア・モードで動作する他の処理がアクセスできないように安全に保管される。
【０００４】
本発明は、セキュア・モード又はノン・セキュア・モードのいずれかで動作できるデータ・プロセッサのための特別なタスクを実行するために別の処理デバイスを使用することが、別の処理デバイスによって処理されるデータがセキュア・データを含む場合に、大きな通信オーバヘッドをもたらす可能性があることを認識している。これは、このセキュア・データをデータ・プロセッサのノン・セキュア・モードから切離しておかなければならず、セキュア・データの管理が一般にデータ・プロセッサのセキュア・オペレーティング・システムによって実行されるためである。しかし、別の処理デバイスによって実行されているタスクがインタラプトされ、一時停止させなければならないときに常に別の処理デバイスによって処理されているセキュア・データを管理するためにセキュア・オペレーティング・システムを呼び出すことは、多くのオペレーティング・サイクルを費やし、従って性能上非常にコスト高となる。本発明は、それ自身処理しているセキュア・データがデータ・プロセッサがアクセス可能なノン・セキュア・データ記憶に保存される前に処理されるようにできる機能を備えた別の処理デバイスを提供することによってこの問題に対処する。この処理は、他のノン・セキュア処理がアクセスできないキーを使用して行なわれる。それ自身がこの機能を備えた別の処理デバイスを提供することによって、セキュア・オペレーティング・システムの介入なしに、セキュア・データの安全性を維持する可能性が生まれる。更に、別の処理デバイスが実行していたタスクを再開すべき場合、セキュア・データは、他のノン・セキュア処理がアクセスできないセキュア・キーを使用して、別の処理デバイスの制御下で復元でき、次に別の処理デバイスの状態が復元できて、それ自身セキュア・データに対して制御されたアクセス権のみを有するノン・セキュア・モードで動作するデータ・プロセッサでタスクを再開できる。
【０００５】
このように、別の処理デバイスによって処理されるデータの安全性は、別の処理デバイス自身によって効果的に維持され、別の処理デバイスにタスクを送信するオーバヘッドは、低減される。すなわち、より小さいタスクを送ることができ、性能向上のメリットがある。
【０００６】
いくつかの実施の形態で、前記セキュア・データの前記処理は、前記セキュア・キーを使用した前記セキュア・データの暗号化を含み、また前記処理されたセキュア・データの前記復元は、前記セキュア・キーを使用した前記暗号化されたセキュア・データの復号化を含む。前記セキュア・キーは、前記暗号化および復号化を実行するデバイス中に安全に保管される。
【０００７】
セキュア・データを守る効率的な方法は、それをノン・セキュア記憶に保存する前に、別の処理デバイスの制御下で暗号化することである。このようにすれば、データ・プロセッサ自身もこのセキュア・データにアクセスできない。
【０００８】
いくつかの実施の形態で、前記データの暗号化を開始する前に、前記別の処理デバイスは、前記データからセキュア署名（ｓｅｃｕｒｅ  ｓｉｇｎａｔｕｒｅ）を生成することを開始し、前記セキュア署名の暗号化を開始し、また前記セキュア・データと一緒に前記セキュア署名を保存する。また前記タスクを再開させる前記信号の受信に応答して、前記別の処理デバイスは、前記暗号化されたセキュア署名の取出しと前記暗号化されたセキュア署名の復号化を開始し、前記暗号化されたセキュア・データの復号化のあとで前記復号化された暗号化データから前記セキュア署名の生成を開始し、前記生成されたセキュア署名と前記復号化されたセキュア署名とを比較する。そして前記生成されたセキュア署名が前記復号化されたセキュア署名と一致しない場合、前記別の処理デバイスは、前記データ・プロセッサに対して信号を発行して、前記データが改ざんされていることを伝える。あるいは、前記生成されたセキュア署名が前記復号化されたセキュア署名と一致する場合は、前記別の処理デバイスは、前記復号化されたデータを使用して前記タスクを再開する。
【０００９】
セキュア・データは、ノン・セキュア処理によるアクセスからこれを守るために単に暗号化するだけでよいが、データからセキュア署名を発生させて、このセキュア署名をデータで暗号化することが有利である。この署名は、後に復号化の段階でこれを用いて保存されている暗号化されたデータが改ざんされたか否かを判断するために利用できる。復号化のあとで生成されたセキュア署名が、保存されている暗号化されたセキュア署名と一致しない場合、データ・プロセッサに対してアボート信号を発行してデータが改ざんされたことを伝えることができる。セキュア署名が一致する場合には、処理を続けることができる。このように、セキュア・データを安全に保存することができるだけでなく、処理を中断したときも、その完全性が保障される。
【００１０】
他の実施の形態では、セキュア署名は、次のように、未暗号化データからではなく暗号化データから生成される。前記データの暗号化のあとで、前記別の処理デバイスは、前記暗号化されたデータからセキュア署名を生成する作業を開始し、前記暗号化されたセキュア・データと一緒に、前記セキュア署名の暗号化および保存を開始する。また前記タスクを再開させる前記信号の受信に応答して、前記別の処理デバイスは、前記暗号化されたセキュア署名の取出しおよび前記暗号化されたセキュア署名の復号化を開始し、また前記暗号化されたデータからの前記セキュア署名の生成および前記生成されたセキュア署名と前記復号化されたセキュア署名との比較を開始し、更に前記生成されたセキュア署名が前記復号化されたセキュア署名と一致しない場合、前記別の処理デバイスは、前記データ・プロセッサに信号を発行して前記データが改ざんされていることを伝え、また前記生成されたセキュア署名が前記復号化されたセキュア署名と一致する場合は、前記別の処理デバイスは、前記暗号化されたデータを復号化し、前記復号化されたデータを用いて前記タスクを再開する。
【００１１】
いくつかの実施の形態で、前記セキュア・データの前記処理は、前記データからのセキュア署名の生成および前記セキュア・キーを用いた前記セキュア署名の暗号化を含み、また前記処理されたセキュア・データの前記復元は、前記暗号化されたセキュア署名の復号化と、前記取り出されたデータからの前記セキュア署名の生成および前記生成されたセキュア署名と前記復号化されたセキュア署名との比較を含み、また前記生成されたセキュア署名が前記復号化されたセキュア署名と一致しない場合、前記別の処理デバイスは、前記データ・プロセッサに信号を発行して、前記データが改ざんされていることを伝え、また前記生成されたセキュア署名が前記復号化されたセキュア署名と一致する場合は、前記別の処理デバイスは、前記取り出されたデータを用いて前記タスクを再開する。
【００１２】
処理されるセキュア・データをそれ自身を見ることから守る必要がないことは、それが別の処理デバイスの外で理解できないことから当然であろう。しかし、改ざんは、セキュア情報にアクセスしようとする試みの１つであるので、改ざんされないことは、重要である。そのようなケースでは、データそれ自身が暗号化されることはないが、セキュア署名を生成し、これを用いてデータが改ざんされていないことをチェックすることはできる。
【００１３】
いくつかの実施の形態で、前記セキュア・データの前記暗号化および前記署名の前記生成は、同じアルゴリズムを用いて実行される。
【００１４】
セキュア・データの暗号化が特にこの目的で生成されたクリプト・エンジン（ｃｒｙｐｔｏ−ｅｎｇｉｎｅ）を用いて行なわれる場合は、このエンジンを追加することのオーバヘッドを減らすために、セキュア・データを暗号化するために使用されるのと同じアルゴリズムを用いて署名（例えば、ハッシュ）を生成するのが有利である。
【００１５】
いくつかの実施の形態で、前記暗号化および復号化を実行する前記デバイスは、前記別の処理デバイスである。
【００１６】
別の処理デバイスが自分自身で暗号化および復号化を実行する場合、セキュア・データがそれ自身暗号化されるまでこのデバイスを離れることがないので、セキュア・データの安全性は、強化され、従ってセキュア・データへのアクセス制御は、容易である。
【００１７】
いくつかの実施の形態で、前記別の処理デバイスは、暗号化処理デバイスを含み、前記暗号化処理デバイスは、少なくとも１つのキーを用いてデータの暗号化処理を実行し、前記セキュア・データは、前記少なくとも１つのキーを含む前記セキュア・キーによって暗号化される。
【００１８】
この方法は、暗号化処理デバイスに適用する場合に特に有用である。これらは、データを暗号化および復号化するためにキーを使用し、従ってこれらのキーにノン・セキュア・モードがアクセスできないことが重要であることは、明らかである。このように、これらの別の処理デバイスにとってこれらの暗号化キーを含むセキュア・データが安全に守られることが重要である。更に、これらのデバイスは、既に暗号化機能を含んでいるので、セキュア・データの暗号化（処理の間にデータを暗号化するために使用される暗号化キー）は、これらのデバイスを使用して実行でき、また別の処理デバイスがこの機能のために使用するセキュア・キーを用いて実行できる。このように、別の処理デバイス自身の機能を使用してセキュア・データを暗号化および復号化することができる。従ってこの機能を導入することに付随するエリア・オーバヘッドは、少ない。
【００１９】
いくつかの実施の形態で、前記暗号化および復号化を実行する前記デバイスは、他のデバイスがアクセスできない専用のデータ通信経路で前記別の処理デバイスに接続された暗号化処理デバイスである。
【００２０】
いくつかの実施の形態で、別の処理デバイス自身が暗号化機能を実行するが、他の場合には、別の暗号化デバイスによってそれを実行することもできる。そのようなケースでは、セキュア・データをこの暗号化デバイスに送信するためのデータ経路は、この目的のために専用とされ、他のプロセッサがアクセスできないセキュア・データ経路でなければならない。
【００２１】
いくつかの実施の形態で、前記別の処理デバイスは、暗号化以外の機能を実行するための回路を含み、前記別の処理デバイスは、前記セキュア・データを暗号化および復号化するための付加的な暗号化回路を含み、前記別の処理デバイスは、前記セキュア・キーのためのセキュア記憶場所を含む。
【００２２】
別の処理デバイスが暗号化処理デバイスでない場合、それは、上で述べたような別の暗号化処理デバイスを使用するか、あるいは、付加的な暗号化回路を与えられて、暗号化された状態以外でセキュア・データが別の処理デバイスを離れることなしに、セキュア・データの暗号化および復号化を実行できるようにされる。そのようなケースで、別の処理デバイスは、セキュア・キーのための記憶場所を含み、それによってこのセキュア・キーは、デバイス内部で暗号化および復号化のために使用できるようにされるが、任意の他のデバイスには利用できない。
【００２３】
いくつかの実施の形態で、前記別の処理デバイスは、前記セキュア・キーのための書込み専用の記憶場所を含む。
【００２４】
別の処理デバイスに関するセキュア・キーを書込み専用の記憶場所に記憶させることは、有利である。こうすれば、それを他のデバイスが更新できるが、それらによって読み出すことは、できない。
【００２５】
いくつかの実施の形態で、前記セキュア・キーは、セキュア・モードで動作する前記データ・プロセッサの制御下で前記データ処理装置に記憶され、それによってそれは、セキュア・モードで動作する前記データ・プロセッサにのみアクセス可能となる。
【００２６】
セキュア・キーは、例えば、セキュア・モードで動作しているデータ・プロセッサの制御下で、データ処理装置のセキュア・メモリから取り出される。これは、たびたびセキュア・キーを更新することが望ましい場合に有利である。これは、セキュリティの観点から、それが安全な記憶場所に保存されて、セキュア・モードにおいてのみ他のデバイスによって操作できる限り許容できる。いくつかの実施の形態で、それは、安全な特権モードにおいてのみアクセス可能であり、これによって更に高い安全性が提供される。
【００２７】
いくつかの実施の形態で、前記セキュア・キーは、製造段階で設定され、前記セキュア・データの前記暗号化および復号化を実行する前記デバイス中に永久的に安全に保存されるので、他のデバイスがアクセスできない。
【００２８】
セキュア・モードでキーにアクセスする代わりに、セキュア・データを暗号化するデバイス内部に永久的に保存して、それが他のデバイスがアクセスできないようにすることができる。これは、セキュア・キーがデバイス内部で安全に保たれることを保障し、外部からアクセスできないようにする簡便な方法である。しかし、これは、キーを決して変更または更新できないことを意味する。
【００２９】
セキュア・キーを生成および保存する別の方法は、暗号化および復号化デバイス内部に乱数発生器を備えるものであり、乱数発生器は、リセット時にセキュア・キーを発生および保存する。他の実施の形態では、既存の信号または値の秘密の組を組み合わせて、この組合せから数を発生させるようになった擬似乱数発生器が使用される。
【００３０】
ノン・セキュア・データ記憶は、複数の異なるものを含むことができるが、いくつかの実施の形態で、それは、メモリのノン・セキュア部分を含む。
【００３１】
いくつかの実施の形態で、前記タスクを一時停止させる前記信号は、割込み又は例外（ａｎ  ｉｎｔｅｒｒｕｐｔ  ｏｒ  ａｎ  ｅｘｃｅｐｔｉｏｎ）に応答して前記データ・プロセッサによって生成される。
【００３２】
タスクを一時停止させる信号は、複数のものに応答して（ｉｎ  ｒｅｓｐｏｎｓｅ  ｔｏ  ａ  ｎｕｍｂｅｒ  ｏｆ  ｔｈｉｎｇｓ）生成できるが、いくつかの実施の形態で、それは、割込み又は例外に応答して生成される。
【００３３】
いくつかの実施の形態で、前記タスクを一時停止させる前記信号は、前記データ・プロセッサのコンテキストを前記セキュア・モード又はノン・セキュア・モードの１つの動作から前記セキュア・モード又はノン・セキュア・モードの他方に切り替えること、即ち、データ・プロセッサのコンテキスト・スイッチ（ａ  ｓｗｉｔｃｈ  ｏｆ  ｃｏｎｔｅｘｔ  ｏｆ  ｓａｉｄ  ｄａｔａ  ｐｒｏｃｅｓｓｏｒ）を指示する信号に応答して、前記データ・プロセッサによって生成される。
【００３４】
データ・プロセッサのコンテキストをセキュア・モードからノン・セキュア・モードに切り替えること、即ち、コンテキスト・スイッチング（ｃｏｎｔｅｘｔ  ｓｗｉｔｃｈｉｎｇ  ｏｆ  ｔｈｅ  ｄａｔａ  ｐｒｏｃｅｓｓｏｒ）は、他のデータ処理手段が別の処理手段の処理を一時停止して、それの状態をメモリに記憶することによって、データ・プロセッサがそれが元あったモードに切り替えて戻ったときに（ｗｈｅｎ  ｔｈｅ  ｄａｔａ  ｐｒｏｃｅｓｓｏｒ  ｓｗｉｔｃｈｅｓ  ｂａｃｋ  ｔｏ  ｔｈｅ  ｍｏｄｅ  ｉｔ  ｗａｓ  ｉｎ）処理を再開できるようにすることを含む。
【００３５】
そのようなケースで、それが処理していたセキュア・データの安全性が維持されることが重要である。このことは、データ・プロセッサのセキュア・オペレーティング・システムを使用することなく、別の処理手段自身によって制御される暗号化および復号化手段を使用することによって行われる。このように、データの安全性は、別の処理デバイス自身によって維持され、データの安全性を制御するために、性能に関して高価であるセキュア・オペレーティング・システムの呼出しは、必要でなくなる。
【００３６】
いくつかの実施の形態で、前記タスクを実行させる前記要求は、前記ノン・セキュア・モードで動作する前記データ・プロセッサから発行される。
【００３７】
ノン・セキュア・モードのデータ・プロセッサからタスクを実行させる要求が発行されると、別の処理デバイスによるセキュア・データの処理は、データ・プロセッサ自身から明瞭に切り離されなければならない。これは、データ・プロセッサ自身がノン・セキュア・モードで動作しているためである。そのようなケースでは、処理を一時停止させる要求に応答して別の処理手段の外部に記憶される前に、セキュア・データの暗号化は、データ・プロセッサ自身を巻き込むことなく安全性を維持するために重要である。
【００３８】
いくつかの実施の形態で、前記データ・プロセッサは、前記データ・プロセッサがノン・セキュア・モードで実行しているプログラム・コードに応答して、前記別の処理デバイスに対して前記タスクを実行させる前記要求を発行するように構成される。
【００３９】
本発明の実施の形態は、セキュア・オペレーティング・システムを巻き込む必要なしにセキュア・データを含むコードを実行するために別の処理手段自身を呼び出すため、ノン・セキュアユーザ・モードのようなノン・セキュア・モードにあるデータ・プロセッサによって実行されているユーザ・コードなどのコードを許容する。このことは、セキュア・データを効率的に処理させる点で非常に有利である。これは、例えばセキュア・オペレーティング・システムを巻き込む必要なしにセキュア・キーを使用してデータを暗号化処理する場合に使用される。
【００４０】
いくつかの実施の形態で、前記別の処理デバイスは、ノン・プログラマブル・ハードウエアを含む。
【００４１】
別の処理手段は、単純なノン・プログラマブル・ハードウエア・デバイスを含むことができ、そうすればそれがユーザ・ソフトウエアによってハッキングできないことから特に安全性の高いものとなる。このように、セキュア・データがこのデバイス内部に留まっていて、暗号化された形でしかそこを離れない限り、それの安全性は、保障される。
【００４２】
いくつかの実施の形態で、前記別の処理手段は、オペレーティング・システムに制御されずにプログラム・コードを処理するように構成される。
【００４３】
別の処理デバイスは、オペレーティング・システムを含まない単純なデバイスでよく、このことは、その内部でのセキュア・データの制御を直接的なものとする。これは、またそれを予め定められた処理工程を非常に効率的に実行できる効率的デバイスとする。
【００４４】
本発明の別の態様は、データ処理装置上でデータを処理する方法を提供する。データ処理装置は、セキュア・モードおよびノン・セキュア・モードでデータを処理するデータ・プロセッサを含み、前記データ・プロセッサは、前記ノン・セキュア・モードで前記データ・プロセッサにアクセスできないセキュア・データへのアクセス権を有する前記セキュア・モードでデータを処理し、また前記セキュア・モードでのデータ処理は、セキュア・オペレーティング・システムの制御下で実行され、また前記ノン・セキュア・モードでのデータ処理は、ノン・セキュア・オペレーティング・システムの制御下で実行される。データ処理装置は、また前記データ・プロセッサからの要求に応答してタスクを実行する別の処理デバイスを含み、前記タスクは、少なくともいくつかがセキュア・データであるデータの処理を含む。前記方法は、前記データ・プロセッサ上でのデータ処理工程および前記データ・プロセッサから前記別の処理デバイスへのタスクを実行させる要求の送信を含み、前記タスクは、少なくともいくつかがセキュア・データであるデータの処理を含む。前記方法は、更に前記別の処理デバイス上での前記タスクの開始、前記別の処理デバイスへの前記タスクを一時停止させる信号の送信、前記別の処理デバイスが前記タスクを一時停止して、セキュア・キーを使用した前記セキュア・データの暗号化および前記タスクを一時停止させる信号の受信に応答した前記暗号化されたセキュア・データのノン・セキュア・データ記憶への保存を開始させること、前記別の処理デバイスに対して前記データ・プロセッサからの前記タスクを再開させる信号の生成、前記別の処理デバイスが前記ノン・セキュア・データ記憶から前記暗号化されたセキュア・データを取り出し、前記信号に応答して前記セキュア・キーを使用して前記暗号化されたセキュア・データを復号化することを含み、前記セキュア・キーは、前記暗号化および復号化を実行する前記デバイス内部に安全に保管されることでそれに対して他のデバイスがアクセスできない。
この発明の上記、およびその他の目的、特徴および利点は、添付図面と併せて参照すべき例示的な実施の形態についての以下の詳細な説明から明らかになろう。
【図面の簡単な説明】
【００４５】
【図１】本発明の１つの実施の形態に従うデータ処理装置の模式図。
【図２】本発明の１つの実施の形態に従い、プロセッサ、アクセラレータおよび分離した暗号化デバイスを有するデータ処理装置の模式図。
【図３】本発明の別の１つの実施の形態に従うデータ処理装置の模式図。
【図４】本発明の１つの実施の形態に従う方法を示すフロー図。
【図５】割込み時にハードウエア・アシストを一時停止および再開させる制御フローを示す図。
【図６】コンテキストをスイッチ・アウトするためのフロー図。
【図７】プロセスのコンテキストをハードウエア・アシスト・モジュールにスイッチするフロー図。
【図８】第１の新しいプロセスのアクセスまで、ハードウエア・アシスト状態の保存を延期するフロー図。
【実施例】
【００４６】
図１は、プロセッサ・コア１０およびアクセラレータ２０を模式的に示す。システムは、少なくとも部分的にモニタ・モードで動作するモニタ・プログラム１２を備える。セキュリティ・ステータス・フラグは、モニタ・モードにおいてのみ書込みアクセス可能であり、モニタ・プログラムによって書き込まれる。モニタ・プログラムは、セキュア・ドメインとノン・セキュア・ドメインとの間で双方向のすべての変更を管理する。コアの外部から見ると、モニタ・モードは、常に安全であり、モニタ・プログラムは、セキュア・メモリにある。モニタ・モード１２は、セキュア処理モードと考えることができる。これは、セキュア・ステータス・フラグがこのモードで変更され、モニタ・モード１２にあるモニタ・プログラムがそれ自身セキュリティ・ステータス・フラグを設定する能力を有し、事実上それがシステム内部の全体としての最終的な安全性レベルを提供するからである。
【００４７】
モニタ・モードは、システム中で最も高い安全度レベルのアクセス権を有し、ノン・セキュア・ドメインとセキュア・ドメインとの間で双方向にシステムを切り替える（ｓｗｉｔｃｈ）資格を有する唯一のモードである。従って、ドメインの切替えはすべてモニタ・モードへの切替え（ａｌｌ  ｄｏｍａｉｎ  ｓｗｉｔｃｈｅｓ  ｔａｋｅ  ｐｌａｃｅ  ｖｉａ  ａ  ｓｗｉｔｃｈ  ｔｏ  ｔｈｅ  ｍｏｎｉｔｏｒ  ｍｏｄｅ）およびモニタ・モード内でのモニタ・プログラムの実行は、スイッチを介して行われる。
【００４８】
ノン・セキュア・ドメインには、ノン・セキュア・オペレーティング・システム１６が備わっており、これがノン・セキュア・オペレーティング・システム１６と共同して動作する複数のノン・セキュア・アプリケーション・プログラムを実行させる。セキュア・ドメインには、セキュア・カーネル・プログラムが備えられている。セキュア・カーネル・プログラム１４は、セキュア・オペレーティング・システムを構成すると考えることができる。典型的には、そのようなセキュア・カーネル・プログラム１４は、セキュア・ドメインに設けられるべき処理活動に本質的に重要なそれらの機能のみを提供するように設計され、それによって安全性は、高まり、セキュア・カーネル１４は、可能な限り小型で簡素なものとすることができる。
【００４９】
セキュア・モードとノン・セキュア・モードとの間で切替えを行う場合、常にデータの安全性を制御するためにモニタ・モードが呼び出され、保護すべきデータがノン・セキュア・サイドによって決して利用されないことが保証される。モニタ・モードに入るには、まずセキュア特権モードに入る。モニタ・モードは、セキュア割込みに応答する場合以外には、非特権的なセキュア・モードから入ることができない。
【００５０】
図１は、またコア１０にリンクされ、この実施の形態では、クリプト・エンジンを含むアクセラレータ２０を示している。クリプト・エンジン２０は、コア１０によって呼び出されて、それのための暗号化機能を実行する。ノン・セキュア・モードで動作している場合でも、何らかのデータを暗号化することが望ましい。そのようなケースでは、これを行うためにクリプト・エンジンが呼び出され、それは、セキュア・キーを使用して暗号化機能を実行する。明らかなように、これらのセキュア・キーは、ノン・セキュア・サイドが利用できないものでなければならず、またクリプト・エンジンは、何らかの理由で暗号化プロセスに割込みがなされた場合、それを非常に安全なものとするノン・プログラマブル・ハードウエア・デバイスであるかもしれないが、処理を再開できるように暗号化エンジンから状態を保存すべき場合、ノン・セキュア・オペレーティング・システムがコアを制御しているときにこれが実行されると、暗号化プロセスの状態を外部に保存することに関してノン・セキュア・サイドが利用できるようになるという安全上の問題が生ずる。しかし、データの安全性を管理するためにセキュア・オペレーティング・システムを呼び出す必要があれば、このアプリケーションに割込みを行うための大きな待ち時間が発生する。本実施の形態で、クリプト・エンジンの機能性は、クリプト・エンジン２０内部に保存されたセッション・キー２２を用いたそれの処理の間に使用されるキーと同じように、セキュア・データの暗号化のために利用される。この実施の形態で、コアがクリプト・エンジンに命令してメモリ３０内部のメモリのセキュア部分からセッション・キーをロードさせるとすぐに、セッション・キー２２は、プロセッサ・コアがセキュア・オペレーティング・システム１４の制御下のセキュア・モードで動作している場合、クリプト・エンジン２０の内部に保存される。セッション・キー２２は、書込み専用場所に保存されるため、クリプト・エンジン２０にハッキングしようとする外部プロセスは、それを読むことができない。
【００５１】
このように、クリプト・エンジンが処理しているアプリケーションを一時停止すべきであることを示すコア１０からの割込みに応答して、クリプト・エンジン２０は、それのデータの処理を一時停止し、それの暗号化機能を利用して、それがセッション・キー２２を使用して処理していたセキュア・データを暗号化する。クリプト・エンジンの状態は、暗号化されたセキュア・データおよび未暗号化ノン・セキュア・データと一緒に、ポインタ２４が指す場所においてメモリ３０のノン・セキュア部分に外部保存される。
【００５２】
コアは、それがクリプト・エンジン２０に実行を課したアプリケーションを再開しようとするとき、ポインタ２４によって示された場所にクリプト・エンジン２０がアクセスしてメモリ３０に記憶されたデータおよびそれの状態を残すことができ次第、クリプト・エンジン２０に信号を送ってこのことを伝える。コアは、次にセッション・キー２２を使用して暗号化されたデータを復号化し、そのあとで処理を再開できる。このように、コア１０のノン・セキュア・オペレーティング・システムの制御下で走っているノン・セキュア・アプリケーションは、クリプト・エンジンにタスクを課してセキュア・キーを用いた暗号化を実行させることができ、またセキュア・データのセキュリティ・ステータスを制御するためにモニタ・モードを起動する必要なしにこのアプリケーションへの割込みを許容することができる。
【００５３】
図２は、代替の実施の形態を示し、ここでは、コア１０がアクセラレータ２０にタスクを課して、この場合には、暗号化関数（ｃｒｙｐｔｏｇｒａｐｈｉｃ  ｆｕｎｃｔｉｏｎ）ではない関数を実行させる。このようなケースで、コア１０がコンテキストを、例えばセキュア・モードからノン・セキュア・モードにスイッチする（切り替えられる）と、それがアクセラレータ２０に処理を課したセキュア・データは、このコンテキスト・スイッチによって中断されたタスクは、後で再開できるように保存する必要がある。このケースでは、アクセラレータ２０は、クリプト・エンジンでない。すなわち、それは、専用の通信ライン５２によってリンクされている別の暗号化ユニット５０に命令して、それが処理していたセキュア・データを暗号化させる。暗号化ユニット５０は、暗号化ユニットによってリセット時に乱数を発生させるために使用される乱数発生器５２を含む。この乱数は、セッション・キー５４として保存され、アクセラレータ２０がそれに対して送信するセキュア・データを暗号化するために使用される。この実施の形態で、暗号化ユニットは、更にそれを暗号化する前に未暗号化データからハッシュ値を生成し、このハッシュ値は、暗号化されたデータと一緒にセッション・キー５４を使用して暗号化ユニットを介して暗号化される。いくつかの実施の形態では、真の乱数発生器というオーバヘッドの代わりに、擬似乱数発生器が使用される。これは、１組の既存の信号を選び、信号の組合せから１つの数を発生させる。信号の組合せは、もちろん秘密の組合せでなければならない。
【００５４】
次にこの暗号化されたデータは、暗号化されたハッシュ値と一緒に、図１に関して発生したのとほとんど同じように、アクセラレータ２０の状態およびノン・セキュア・データと一緒にメモリに外部保存される。
【００５５】
これらの実施の形態で、セキュア・データは、それを保存する前に暗号化されたが、いくつかの実施の形態では、ハッシュを発生させて暗号化することができ、データは、暗号化されたハッシュと一緒に未暗号化のまま保存される。これは、データが改ざんされたか否かをユーザが知ることを可能にする。そのようなケースで、セキュア・データは、ノン・セキュア・サイドからアクセス可能であるが、システムが知らないままにそれを変更することはできない。これは、別の処理デバイスで改ざんされたセキュア・データを単に見るだけなら問題ないが、それを使用することによってシステムの安全性が脅かされる場合に有用である。
【００５６】
コアは、切り替わって元のセキュア状態に戻ると（ｗｈｅｎ  ｔｈｅ  ｃｏｒｅ  ｓｗｉｔｃｈｅｓ  ｂａｃｋ  ｔｏ  ｓｅｃｕｒｅ  ｓｔａｔｅ）、それが実行していたタスクを再開すべきことをアクセラレータ２０に信号で伝える。この時点で、保存されていた状態およびデータがメモリ３０から取り出されて、暗号化されたデータおよびハッシュ値が暗号化ユニット５０に送られる。次に、暗号化されたデータは、ハッシュ値と一緒に復号化され、復号化されたデータから新しいハッシュ値が生成される。もしこの新しいハッシュ値が復号化されたハッシュ値と一致すれば、暗号化ユニット５０は、データが改ざんされていないことを確信でき、復号化されたデータは、次にアクセラレータ２０に送信される。もしハッシュ値が一致しなければ、それは、データが改ざんされていることを意味するので、コア１０に対してその旨の信号が発行されて、プロセスが停止する。
【００５７】
図３は、代替の実施の形態を示しているが、ここでもアクセラレータ２０は、暗号化ユニットではない。このケースで、分離した暗号化ユニットを使用する代わりに、アクセラレータ２０に暗号化回路２５が追加されて、これによりコア１０がアクセラレータ２０に対してそれが何らかのセキュア・データの処理を一時停止しなければならないことを伝えると、暗号化回路２５を使用してセキュア・データを暗号化できる。これは、またこの実施の形態において、未暗号化データからハッシュ値を生成し、このハッシュ値を暗号化するためにも使用される。このケースで、暗号化回路２５は、比較的単純なものであり、ハッシュ値と暗号化とで同じアルゴリズムが使用される。この暗号化のセッション・キー２２は、製造時にアクセラレータ２０内部に永久的に保存される。
【００５８】
他の態様では、このシステムは、図１および２のそれらと非常に似たやり方で動作する。
【００５９】
図４は、本発明の１つの実施の形態に従う方法の工程を示すフロー図を示す。この方法で、タスクを実行させる要求がメイン・プロセッサ・コアからアクセラレータに受信される。アクセラレータは、これに従ってセキュア・データおよびノン・セキュア・データの両方の処理を含むタスクを実行する。これを実行している間に、それは、割込みを調べて、もし１つでも受信されていれば、それは、タスクの処理を一時停止して、セキュア・データからハッシュ値を生成する。それは、次にアクセラレータに保存されているセッション・キーを使用して、セキュア・データおよびハッシュ値を暗号化する。注目すべきことは、この実施の形態では、未暗号化セキュア・データからハッシュ値が生成されるが、他の実施の形態では、まずセキュア・データを暗号化し、暗号化されたデータからハッシュ値を生成することもできる。
【００６０】
次にプロセッサの状態、暗号化されたセキュア・データ、ハッシュ値および任意のノン・セキュア・データがメモリに保存されて、アクセラレータは、割込みによって指示された別のタスクを実行する。これが完了して、割込みされたタスクの再開を指示する信号が受信されると、メモリ中でそれが保存されていた１つのアドレスからプロセッサの状態と一緒にデータが取り出され、次に暗号化されたデータおよびハッシュが復号化される。次に復号化されたデータからハッシュ値が生成されて、保存されていた復号化ハッシュとそれらが一致するかを調べるための比較が行われる。それらが一致すれば、プロセッサの状態が復元されて、処理が再開され、またそうでなければ、タスクは、停止され、エラー信号が発せられる。
【００６１】
上の方法は、米国特許出願１２／００３，８５７および１２／０００，００５である「ノン・セキュア・アプリケーションに対する特権的セキュア・サービス提供（Ｐｒｏｖｉｄｉｎｇ  Ｓｅｃｕｒｅ  Ｓｅｒｖｉｃｅｓ  ｔｏ  Ａ  Ｎｏｎ−Ｓｅｃｕｒｅ  Ａｐｐｌｉｃａｔｉｏｎ）」および「ハードウエア・アクセラレータ内部でのデータ値のクリーニング制御（Ｃｏｎｔｒｏｌｌｉｎｇ  Ｃｌｅａｎｉｎｇ  Ｏｆ  Ｄａｔａ  Ｖａｌｕｅｓ  Ｗｉｔｈｉｎ  Ａ  Ｈａｒｄｗａｒｅ  Ａｃｃｅｌｅｒａｔｏｒ）」と題する同時係属米国特許出願に述べられた方法に関連する。これら２つの同時係属出願の開示を全部ここに取り込む。
【００６２】
ＡＲＭ（登録商標）データ処理装置に使用される別の処理デバイス又はハードウエア（ＨＷ）アシストで使用される異なる方法のこれ以上の詳細について以下に述べる。
【００６３】
セキュア・サイドのデータにアクセスしようとする、ユーザ・モードにあるＨＷアシストに関する一般的な実行モデルは、ＨＷアシストがセキュア・サイドにアクセスしようとする前に、セキュア・サイド又はトラストゾーン（ｔｒｕｓｔｚｏｎｅ）（ＴＺ）ソフトウエアによってセキュア・セッションが既に確立されているというものである。
【００６４】
セキュア・サイドからデータにアクセスする必要のあるＨＷアシストのセキュア・セッションを管理する４つの可能な方法がある。
【００６５】
ソフトウエア（ＳＷ）にあらゆる安全性を備えたセキュア・サイドへのデフォルトＳＷエントリ（Ｄｅｆａｕｌｔ  ｓｏｆｔｗａｒｅ  （ＳＷ）  ｅｎｔｒｙ  ｔｏ  ｓｅｃｕｒｅ  ｓｉｄｅ  ｗｉｔｈ  ａｌｌ  ｓｅｃｕｒｉｔｙ  ｉｎ  ＳＷ．）。セキュア・サービスを必要とする場合は、常に特権モードに入り、次にセキュア・モニタに入るためにＳＭＣ（セキュア・サイド呼出し）が実行される。次にセキュア・サービスが提供されて、プログラムは、ユーザ・モード・アプリケーションに戻る。
【００６６】
ＨＷアシストにアクセスする試みに関して直接的なセキュア・モニタのエントリ引起こし（Ｃａｕｓｅ  ａｎ  ｅｎｔｒｙ  ｉｎ  ｔｈｅ  ｓｅｃｕｒｅ  ｍｏｎｉｔｏｒ  ｄｉｒｅｃｔｌｙ  ｏｎ  ａｎ  ａｔｔｅｍｐｔ  ｔｏ  ａｃｃｅｓｓ  ｔｈｅ  ＨＷ  ａｓｓｉｓｔ．）。このモードでは、ＨＷアシストが呼び出されるたびにセキュア・サイドに入って、セキュア・セッションは、セキュア・サイドによって直接的に管理される。完全性チェックが必要とされるときは、常にセキュア・サイドＳＷを実行でき、タスクを実行させるためにＨＷが呼び出される。このことは、ＨＷアシストへのノン・セキュア・アクセスを禁止することによって実現される。
【００６７】
グローバル・セキュア・セッションのセットアップと、セキュア・アクセスを要求する各プロセスに対する、ノン・セキュア・サイドで利用可能なセキュア値テーブルへの予め定義されたインデックスの提供（Ｓｅｔ  ｕｐ  ａ  ｇｌｏｂａｌ  ｓｅｃｕｒｅ  ｓｅｓｓｉｏｎ  ａｎｄ  ｐｒｏｖｉｄｅ  ｅａｃｈ  ｐｒｏｃｅｓｓ  ｔｈａｔ  ｒｅｑｕｉｒｅｓ  ｓｅｃｕｒｅ  ａｃｃｅｓｓ  ｗｉｔｈ  ａ  ｐｒｅ−ｄｅｆｉｎｅｄ  ｉｎｄｅｘ  ｉｎｔｏ  ａ  ｔａｂｌｅ  ｏｆ  ｓｅｃｕｒｅ  ｖａｌｕｅｓ  ｔｈａｔ  ａｒｅ  ａｖａｉｌａｂｌｅ  ｔｏ  ｔｈｅ  ｎｏｎ−ｓｅｃｕｒｅ  ｓｉｄｅ．）。各テーブル値は、ハッシュ値と対になっており、正しいハッシュを備えたプロセスのみが特定のテーブル・エントリにアクセスできることを保証する。セキュア・セッションは、プロセス生成時にセットアップされ、そこで利用可能なテーブル・エントリおよびセキュア・ハッシュ値が計算される。セキュア・サイドは、またセキュア・ベース・テーブルのアドレスおよび有効なテーブル範囲をＨＷアシスト中のセキュア・モード専用レジスタに書き込む。アプリケーション・プログラムからセキュア・アイテムにアクセスするために、オフセットおよびハッシュ値を使用してユーザがＨＷアシストをプログラムする。ＨＷアシスト・モジュールは、次にこれらの値を使用してセキュア情報にアクセスし、ハッシュをチェックする。このモデルで、セキュア・セッションは、依然としてグローバル・ビューであるため、セキュア・モニタは、通常のオペレーティング・システムのコンテキスト・スイッチで呼び出される必要がない−オフセットおよびハッシュは、コンテキスト・スイッチに関するプロセス・アプリケーション・スペースに保存できる（ｔｈｅ  ｓｅｃｕｒｅ  ｍｏｎｉｔｏｒ  ｄｏｅｓ  ｎｏｔ  ｎｅｅｄ  ｔｏ  ｂｅ  ｃａｌｌｅｄ  ｏｎ  ａ  ｒｅｇｕｌａｒ  ｏｐｅｒａｔｉｎｇ  ｓｙｓｔｅｍ  ｃｏｎｔｅｘｔ  ｓｗｉｔｃｈ−ｔｈｅ  ｏｆｆｓｅｔ  ａｎｄ  ｈａｓｈ  ｃａｎ  ｂｅ  ｓｔｏｒｅｄ  ｉｎ  ｔｈｅ  ｐｒｏｃｅｓｓｅｓ  ａｐｐｌｉｃａｔｉｏｎ  ｓｐａｃｅ  ｏｎ  ｃｏｎｔｅｘｔ  ｓｗｉｔｃｈ）。
【００６８】
プロセスごとのセキュア・セッションのセットアップ（Ｓｅｔ  ｕｐ  ａ  ｓｅｃｕｒｅ  ｓｅｓｓｉｏｎ  ｐｅｒ  ｐｒｏｃｅｓｓ）。このモデルで、各プロセスは、等価的にそれ自身のセキュア・セッションを有する。セキュア・セッションは、プロセスがコンテキスト・スイッチ・インされ（ｔｈｅ  ｐｒｏｃｅｓｓ  ｉｓ  ｃｏｎｔｅｘｔ  ｓｗｉｔｃｈｅｄ  ｉｎ）、コンテキストの終わりにセッションがクローズされるときにセットアップされる。ＨＷアシストへのアクセスごとにセキュア・モニタにアクセスする代わりに、セキュア・モニタは、コンテキストの最初と終わりのみアクセスされる。このモデルの利点は、ＨＷアシストに保存されている任意のセキュア状態が、コンテキスト・スイッチ時にもセキュア・モニタによって直接的に、あるいはＣＡ＿ＳＴＡＴＵＳレジスタのセキュア・シャドウ（ｓｅｃｕｒｅ  ｓｈａｄｏｗ）を有することによって保存できるということである。ＣＡ＿ＳＴＡＴＵＳレジスタは、ＨＷアシスト・モジュールに関するステータスを提供し、特権的アクセスを有するレジスタである。
【００６９】
ＨＷアシストは、タスクが完了する前の実行中に割り込みすることでき、次に必要とされる後の時点に再開できる。ＨＷアシストの動作中に割込みが受信されると、ＨＷアシストに対してなんら変更を行うことなしに、通常のＡＲＭのやり方で割込みに入る。割込みハンドラでは、プログラマは、次のオプションを有する。
１．ＨＷアシストに対して何もせずに、それが走るままにさせる。コアのシステム・プログラミングは、ＨＷアシストがメモリの正しいビュー（すなわち、ページ・テーブルが変更されていないこと）を見ていることを保証しなければならないことに注意すべきである。
２．一時的にＨＷアシストを一時停止させるが、その他の目的でＨＷアシストを使用しない。（ＭＳＵＳＰＥＮＤ）
３．ＨＷアシストを一時停止して、任意のダーティ状態（ｄｉｒｔｙ  ｓｔａｔｅ）をメモリに戻して保存し、何かほかのものでＨＷアシストを利用できるようにする。（ＭＳＵＳＰＥＮＤＣ）
【００７０】
（２）および（３）のケースで、一旦割込みハンドラが終了すると、ＨＷアシストは、再開コマンドで再スタートする。（２）に関して、実行は、それが中止された場所から再スタートするのに対して、（３）では、実行を継続する前にまずＨＷアシストに中間状態を再ロードして戻してやる必要がある。図５は、これらの両方のケースに関する制御フローを示す。この図で、ＣＡ＿ＳＴＡＴＥレジスタは、ＨＷアシスト・モジュールに関する記述子へのポインタを含むレジスタであり、特権的又はユーザ・アクセスを有する。
【００７１】
汎用的な割込みハンドラ（ｇｅｎｅｒｉｃ  ｉｎｔｅｒｒｕｐｔ  ｈａｎｄｌｅｒ）に関して、ＭＳＵＳＰＥＮＤおよびＭＲＥＳＵＭＥのブロードキャスト形態（ｂｒｏａｄｃａｓｔ  ｆｏｒｍｓ）は、すべてのＨＷアシストを一時停止および再開させるために使用できる。より特殊化されたアプリケーションに関して、個々のＨＷアシスト・モジュールは、独立して一時停止および再開できる（制御するためのＨＷアシストの論理アドレスを供給することによって）。
【００７２】
ハンドリングすべき３つの基本的な例外クラス（ｃｌａｓｓｅｓ  ｏｆ  ｅｘｃｅｐｔｉｏｎｓ）がある。
●ユーザ・エラー−これは、ユーザ・モードＳＷによってハンドリングされる。
●特権的システム・エラー−ハンドリングのためにオペレーティング・システムに信号で伝えられるシステム・エラー。
●セキュア・エラー−セキュア・モニタに信号で伝えられたセキュア・サイドにアクセスすることによって引き起こされるエラー。
【００７３】
デフォルトでは、特権およびセキュリティ・エラーは、更なるハンドリングのために、割込みを介して信号でコアに伝えられる。ユーザ・モード・エラーは、ＨＷアシスト・レジスタ中の状態エラー・ビット（例えば、ＣＡ＿ＳｔａｔｕｓレジスタのＩＵＥビット）をチェックするユーザ・アプリケーション・ソフトウエアによってハンドリングされる。このアーキテクチャは、またユーザ・モード・エラーの送信をサポートし、必要であればコアに割込みをかけるが、これは、オペレーティング・システムとのやり取りによるコストを招く。
【００７４】
異なる特権レベルから複数の例外がアクティブになる場合に、例外情報を保存するためにシャドウ制御レジスタ（ｓｈａｄｏｗ  ｃｏｎｔｒｏｌ  ｒｅｇｉｓｔｅｒｓ）が設けられる。例えば、セキュアおよびユーザ・メモリの故障が発生し得る場合、ＦＡＲおよびＣＡ＿ＳＴＡＴＵＳレジスタは、セキュア・サイドにシャドウを有しなければならない。ＦＡＲレジスタは、特権的アクセスを有し、故障を起こしたメモリ・アドレスを提供する。
【００７５】
コンテキスト・スイッチングをサポートするために必要な基本的オペレーションは、基本的な割込みハンドリングに類似している。すなわち、ＨＷアシスト・オペレーションの一時停止および再開と、ＨＷアシスト・モジュールからのダーティ状態のクリーニングである。コンテキスト・スイッチングは、２つの部分に分割できる。
●古いプロセスをスイッチング・アウトすること（Ｓｗｉｔｃｈｉｎｇ  ａ  ｏｌｄ  Ｐｒｏｃｅｓｓ  ｏｕｔ）。
●新しいプロセスをスイッチング・インすること（Ｓｗｉｔｃｈｉｎｇ  ａ  ｎｅｗ  Ｐｒｏｃｅｓｓ  ｏｕｔ）。
【００７６】
これらの各々に対して次の２つが可能である。
●ストリクト−直ちにスイッチングを行う。
●レイジー−実際に誰かがＨＷアシストを使用したい場合にのみ状態を保存する（ｓａｖｅ  ｔｈｅ  ｓｔａｔｅ）。
【００７７】
後者は、それが必要な場合にのみ状態を保存するのでより低消費電力であるが、実施は、より複雑である。
【００７８】
注記：伝統的なレイジー・コンテキスト・スイッチ（例えば、ＶＦＰで使用されるようなもの）は、ＨＷが新しいプロセスによってアクセスされるまで、新しいコンテキストにスイッチしない。この方法では、新しいコンテキストが一時停止されたＨＷアシストを有する場合、それは、コンテキストが復元され次第、新しいコンテキスト中のＨＷへの最初の新しいアクセスまで待つことなく復元される必要がある。
【００７９】
図６は、ＨＷアシスト・モジュール（ＣＨＡ）に関するコンテキスト・スイッチングの汎用的なフロー図を示す。もしコンテキスト・スイッチがレイジーでなければ、ＨＷアシストは、ＭＳＵＳＰＥＮＤＣおよび記述子へのポインタを使用して一時停止およびクリーニングされ、各々の許可されたＨＷアシストに関するステータス・レジスタおよびＦＡＲが保存される。レイジー・コンテキスト・スイッチの場合には、ＨＷアシストは、何も状態を保存することなく一時停止されるのみである。両ケースで、オペレーティング・システムは、ＨＷアシストが停止する（そして多分クリーニングする）のを待つ間、他のコンテキスト・スイッチのクリーン・アップを行うように進行する。変更する必要があるページ・テーブル・エントリの直前で、オペレーティング・システムは、データ・アクセラレータ・バリア（Ｄａｔａ  ａｃｃｅｌｅｒａｔｏｒ  ｂａｒｒｉｅｒ）（ＤＡＮ）を実行して、すべてのＨＷアシストが一時停止を完了していること、従ってすべてのＨＷアシストがＨＡＣＲで禁止されていることを確認する。その後のコンテキスト・スイッチ・アウトは、通常のように続く。
【００８０】
オペレーティング・システムによる一層複雑な解析という犠牲を払えば、汎用的コンテキスト・スイッチ・アウト（ｇｅｎｅｒｉｃ  ｃｏｎｔｅｘｔ  ｓｗｉｔｃｈ  ｏｕｔ）を洗練されたものとすることができる。例えば、
【００８１】
ＨＷアシスト・モジュールが現時点で許可されていなければ、保存すべきプロセスは存在せず、何もする必要がない。
【００８２】
ＨＷアシストが許可されていても実行されていなければ、ダーティ状態の保存は、もしかすると必要ない。
【００８３】
ＨＷアシストを一時停止させるのよりもむしろそれを完了させる選択がある。これは、すべてのダーティ・データがメモリに戻されていることを保証する。
【００８４】
新しいプロセスをＨＷアシスト・モジュールにスイッチ・インするとき、第１の工程は、ＨＷアシスト・モジュールを許可することである。このあと、記述子およびステータス・レジスタがＨＷアシスト・モジュールに再ロードされ、すべてを再開するコマンドが発行されて、すべての許可されたＨＷアシスト・モジュールの実行が再開される。このことが図７に示されている。
【００８５】
レイジー・スキームが採用された場合（すなわち、古いプロセスの状態がまだスイッチ・アウトされていない）、オペレーティング・システムは、新しいプロセスがＨＷアシスト・モジュールを一時停止させたか否かを判断すべきである。新しいコンテキストがＨＷアシストを使用していれば、コンテキスト・スイッチ時に（それが後にアクセスされるまで延期する代わりに）アウトされた古い状態からＨＷアシストを一掃すべきである。
【００８６】
延期されたコンテキスト・スイッチ・イン
延期されたプロセス状態のスイッチは、任意の状態の保存の前に新しいプロセスがＨＷアシスト・モジュールにアクセスしようとするまで待つ。新しいプロセスがＨＷアシスト・モジュールを使用しなければ、状態を保存する必要はない。
【００８７】
新しいプロセスがＨＷアシスト・モジュールにアクセスしようとする時点を検出するために、モジュールは、コンテキスト・スイッチ時に禁止されて、それを使用しようとすればオペレーティング・システムのイベントがトリガーされて、要求される状態（未定義のインストラクション・トラップ）が保存および復元されるようにする。古い状態が保存されて、新しい状態がロードされてしまえば、ＨＷアシストにアクセスするコマンドを再実行できる。この手順は、図８に示されている。一時停止されたＨＷアシストは、時間的に、コンテキスト・スイッチ時に検出され、コマンドがそれらにアクセスするのを待つのではなく、自動的に再スタートされることを仮定している。
【００８８】
オペレーティング・システムは、ＨＷアシストの状態を正しい場所に保存するために、前のＨＷアシストのユーザ・スペース記述子にアクセスできなければならないことに注意されたい。
【００８９】
発明の例示的実施の形態についてここに添付図面を参照しながら詳細に説明してきたが、発明がこれらの実施の形態に正確に限定されることはなく、添付の請求項によって定義される発明の範囲および精神から外れることなく当業者によってこれらにおいて各種の変更および修正が実行可能であることを理解すべきである。
【符号の説明】
【００９０】
１０  プロセッサ・コア
１２  モニタ・プログラム
１４  ノン・セキュア・オペレーティング・システム
１６  セキュア・カーネル・プログラム
２０  アクセラレータ（クリプト・エンジン）
２２  セッション・キー
２４  ポインタ
２５  暗号化回路
３０  メモリ
５０  暗号化ユニット
５２  乱数発生器
５４  セッション・キー
【図１】
0005091877.tif 000002
【図２】
0005091877.tif 000003
【図３】
0005091877.tif 000004
【図４】
0005091877.tif 000005
【図５】
0005091877.tif 000006
【図６】
0005091877.tif 000007
【図７】
0005091877.tif 000008
【図８】
0005091877.tif 000009