(57)【特許請求の範囲】
【請求項１】
安全および非安全モードでデータを処理するデータ・プロセッサを含むデータ処理装置であって、前記データ・プロセッサは前記非安全モードでデータを処理する前記データ・プロセッサがアクセスできない安全なデータへのアクセスを有する前記安全なモードでデータを処理し、かつ、
前記非安全モードから発行された前記データ・プロセッサからの要求に応答してタスクを実施するさらなるデータ処理装置であって、前記タスクは少なくともそのいくつかは安全なデータであるデータの処理を含み、前記さらなるデータ処理装置は安全なデータ・ストアを含み、前記安全なデータ・ストアは非安全モードの前記データ・プロセッサで実行しているプロセスにはアクセスできない前記さらなるデータ処理装置を含み、
前記要求のいずれかを発行する前に、前記データ・プロセッサは前記さらなるデータ処理装置上でセットアップ操作を実施するようにされており、前記セットアップ操作は前記安全モードで作動している前記データ・プロセッサにより実施されて前記さらなるデータ処理装置上の前記安全なデータ・ストア内に安全なデータを格納することを含み、前記安全なデータは前記タスクを実施するために前記さらなるデータ処理装置により要求された安全なデータであり、
前記非安全モードで作動している前記データ・プロセッサからの前記要求の受信に応答して、前記さらなるデータ処理装置は前記安全なデータ・ストア内に格納されたデータを使用して前記タスクを実施し必要な任意の安全なデータにアクセスするデータ処理装置。
【請求項２】
請求項１に記載のデータ処理装置であって、前記格納された安全なデータはメモリの安全な部分内に少なくとも１つのアドレスを有し、前記さらなるデータ処理装置は前記タスクを実施しながら前記少なくとも１つのアドレスに格納された安全なデータにアクセスするデータ処理装置。
【請求項３】
請求項２に記載のデータ処理装置であって、前記さらなるデータ処理装置は前記タスクを実施しながら発生された少なくともいくつかのデータを前記メモリの安全な部分内で前記少なくとも１つのアドレスにより指示された場所に格納するようにされているデータ処理装置。
【請求項４】
請求項１に記載のデータ処理装置であって、前記データ・プロセッサは複数のアプリケーションを処理するようにされており、かつ、処理中に前記要求を発行する前記複数のアプリケーションのいずれか１つへのコンテキスト・スイッチに応答して前記セットアップ操作を実施するようにされているデータ処理装置。
【請求項５】
請求項１に記載のデータ処理装置であって、前記データ・プロセッサは複数のアプリケーションを処理するようにされており、かつ、前記複数のアプリケーションの少なくともいくつかに対するリセットに続いて前記セットアップ操作を実施するようにされており、かつ、さらなるアプリケーションへのコンテキスト・スイッチの検出に応答して予めセットアップされていない前記さらなるアプリケーションに対して前記セットアップ操作を追加実施するようにされているデータ処理装置。
【請求項６】
請求項１に記載のデータ処理装置であって、前記データ・プロセッサは複数のアプリケーションを処理するようにされており、かつ、前記複数のアプリケーションに対するリセットに続いて前記セットアップ操作を実施し前記セットアップ操作を再度実施しないようにされているデータ処理装置。
【請求項７】
請求項１に記載のデータ処理装置であって、前記データ・プロセッサは、さらに、モニタ・モードを含み、前記安全および非安全モード間での処理の切り替えは前記モニタ・モードを介して実施されるデータ処理装置。
【請求項８】
請求項７に記載のデータ処理装置であって、前記さらなるデータ処理装置は前記要求の受信に応答して前記データ・プロセッサへの安全な割込みを発行し、前記安全な割込みにより前記データ・プロセッサは前記モニタ・モードに切り替えられて前記要求を発行する前記アプリケーションの完全性チェックを実施し、前記さらなるデータ処理装置は肯定的な完全性チェックを示す前記データ・プロセッサからの信号の受信に続いて前記タスクを実施するデータ処理装置。
【請求項９】
請求項７に記載のデータ処理装置であって、前記さらなるデータ処理装置は前記データ・プロセッサにより発生された複数の前記要求に関して予め定められた挙動を検出するようにされており、かつ、前記予め定められた挙動の検出に応答して安全な割込みを発生するようにされており、前記安全な割込みにより前記データ・プロセッサは前記モニタ・モードに切り替えられるデータ処理装置。
【請求項１０】
請求項９に記載のデータ処理装置であって、前記予め定められた挙動は同じ鍵と異なるデータを有する複数の要求の受信を含むデータ処理装置。
【請求項１１】
請求項１に記載のデータ処理装置であって、前記さらなるデータ処理装置の前記安全なデータ・ストアは安全なデータ・アイテムのテーブルおよび前記テーブル内の各データ・アイテムに関連するハッシュ値を格納するようにされており、前記テーブルは前記セットアップ操作中に埋められ、前記データ・プロセッサから発行された前記要求は前記テーブルからのアイテムを要求しかつ前記要求を有する対応するハッシュ値を供給し、前記さらなるデータ処理装置は供給された前記ハッシュ値と前記要求されたアイテムに関連して格納された前記ハッシュ値との一致に応答してのみ前記要求されたアイテムの使用を許すデータ処理装置。
【請求項１２】
請求項１１に記載のデータ処理装置であって、前記さらなるデータ処理装置は、さらに、安全なレジスタを含み、前記安全なレジスタは前記メモリの安全な部分内のアドレスで埋められ、前記テーブルは前記セットアップ操作中に前記アドレスへのオフセット値および対応するハッシュ値で埋められるデータ処理装置。
【請求項１３】
請求項１に記載のデータ処理装置であって、前記さらなるデータ処理装置は暗号処理装置を含み、前記格納された安全なデータは暗号鍵の少なくとも１つのアドレスを含むデータ処理装置。
【請求項１４】
請求項１に記載のデータ処理装置であって、前記さらなるデータ処理装置は非プログラマブル・ハードウェア装置を含むデータ処理装置。
【請求項１５】
請求項２に記載のデータ処理装置であって、前記さらなるデータ処理装置は前記少なくとも１つのアドレスが前記安全なメモリ部分の予め定められた部分内にあり、前記安全なメモリ部分の他の部分へのアクセスは許されないように抑制されるデータ処理装置。
【請求項１６】
安全および非安全モードでデータを処理するデータ・プロセッサを含むデータ処理装置上でデータを処理する方法であって、前記データ・プロセッサは前記非安全モードでデータを処理する前記データ・プロセッサがアクセスできない安全なデータへのアクセスを有する前記安全なモードでデータを処理し、かつ、
さらなるデータ処理装置が安全なデータ・ストアを含み、前記方法は、
前記安全モードで作動している前記データ・プロセッサが、前記さらなるデータ処理装置上の前記安全なデータ・ストア内に安全なデータを格納することを含むセットアップ操作を前記さらなるデータ処理装置上で実施するステップであって、前記安全なデータはタスクを実施するために前記さらなるデータ処理装置により要求された安全なデータであり、前記タスクは少なくともそのいくつかは安全なデータであるデータの処理を含むステップと、
前記データ・プロセッサが非安全モードに切り替るステップと、
前記データ・プロセッサがアプリケーションを処理し、前記アプリケーションを処理しながら前記タスクを実施する要求を前記さらなるデータ処理装置へ発行するステップと、
前記要求の受信に応答して、前記さらなるデータ処理装置が前記安全なデータ・ストア内に格納されたデータを使用して前記タスクを実施し必要な任意の安全なデータにアクセスするステップと、
を含む方法。
【請求項１７】
請求項１６に記載の方法であって、前記格納された安全なデータはメモリの安全な部分内に少なくとも１つのアドレスを含み、前記さらなるデータ処理装置は前記タスクを実施しながら前記少なくとも１つのアドレスに格納された安全なデータにアクセスする方法。
【請求項１８】
請求項１７に記載の方法であって、前記さらなるデータ処理装置は前記タスクを実施しながら発生された少なくともいくつかのデータを前記メモリの前記安全な部分内で前記少なくとも１つのアドレスにより指示された場所に格納する方法。
【請求項１９】
請求項１６に記載の方法であって、前記データ・プロセッサは複数のアプリケーションを処理するようにされており、かつ、前記方法は新しいアプリケーションへのコンテキスト・スイッチの検出に応答して前記セットアップ操作を実施することを含む方法。
【請求項２０】
安全および非安全モードでデータを処理する処理手段を含むデータ処理装置であって、前記処理手段は前記非安全モードでデータを処理する前記処理手段がアクセスできない安全なデータへのアクセスを有する前記安全なモードでデータを処理し、かつ、
前記非安全モードから発行された前記処理手段からの要求に応答してタスクを実施するさらなるデータ処理手段であって、前記タスクは少なくともそのいくつかは安全なデータであるデータの処理を含み、前記さらなるデータ処理手段は安全なデータ・ストアを含み、前記安全なデータ・ストアは非安全モードの前記処理手段で実行しているプロセスにはアクセスできない前記さらなるデータ処理手段を含み、
前記いずれかの要求を発行する前に、前記処理手段は前記さらなるデータ処理手段上でセットアップ操作を実施するようにされており、前記セットアップ操作は前記安全モードで作動している前記処理手段により実施されて前記さらなるデータ処理手段上の前記安全なデータ・ストア内に安全なデータを格納することを含み、前記安全なデータは前記タスクを実施するために前記さらなるデータ処理手段により要求された安全なデータであり、
前記非安全モードで作動している前記処理手段からの前記要求の受信に応答して、前記さらなるデータ処理手段は前記安全なデータ・ストア内に格納されたデータを使用して前記タスクを実施し必要な任意の安全なデータにアクセスするデータ処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータ処理に関するものであり、特に、追加処理装置を使用して安全（ｓｅｃｕｒｅ）および非安全（ｎｏｎ−ｓｅｃｕｒｅ）データを処理し第１のデータ・プロセッサの制御下でタスクを実施することに関するものである。
【背景技術】
【０００２】
安全なデータを処理することができるデータ処理装置が知られており、一般的に安全なデータが処理されている時にプロセッサは安全モードで作動しているようにされる。安全モードで作動している時に、データ処理装置は非安全モードではアクセスできない安全なデータにアクセスすることができる。モード間で切り替わる非安全プロセスから安全なデータを分離し続けるには、さまざまな処理ルーチンを実行して安全および非安全側間で安全なデータの漏洩が無いことを保証する必要がある。このように、一般的には実施される暗号プロセス等の安全サービスに対する要求に応答して、システムはオペレーティング・システムに特権モードを呼び出させそれに入らせる。そこから安全モードへの呼出しが行われ、正しく安全モードに入ることを保証する処理ルーチンが実施される。次に、安全サービスを実施することができ、その後、システムはさらに処理ルーチンを実施する必要がある非安全モードへ切り替わる。このように、安全サービスが小さなタスクにすぎなければ、切替えは性能における非常に大きなオーバヘッドとなることがある。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
本発明の第１の側面は、安全および非安全モードでデータを処理するデータ・プロセッを含むデータ処理装置であって、前記データ・プロセッサは前記非安全モードでデータを処理する前記データ・プロセッサにはアクセスできない安全なデータへのアクセスを有する前記安全モードでデータを処理し、かつ、前記非安全モードから発行された前記データ・プロセッサからの要求に応答してタスクを実施するさらなる処理装置を含み、前記タスクは少なくともいくつかは安全なデータである処理データを含み、前記さらなる処理装置は安全なデータ・ストアを含み、前記安全なデータ・ストアは非安全モードで前記データ・プロセッサ上で実行しているプロセスにはアクセスできず、前記要求のいずれかを発行する前に前記データ・プロセッサは前記さらなるデータ処理装置上でセットアップ操作を実施するようにされており、前記セットアップ操作は前記安全モードで作動する前記データ・プロセッサにより実施され前記さらなる処理装置上の前記安全なデータ・ストア内に安全なデータを格納することを含み、前記安全なデータは前記タスクを実施するために前記さらなる処理装置により要求された安全なデータであり、前記非安全モードで作動している前記データ・プロセッサからの前記要求の受信に応答して、前記さらなるデータ処理装置は前記安全なデータ・ストア内に格納されたデータを使用して前記タスクを実施し、必要な任意の安全なデータにアクセスする。
【０００４】
本発明は安全および非安全データの両方を安全モードで処理することができ、かつ非安全データを非安全モードで処理できるデータ・プロセッサを含んでいる。それはさらなる処理装置も有し、それを使用してこのさらなる処理装置が効率的に実施するように設計されている特定のタスクを実施して全体装置の性能を高めることができる。本発明は安全なデータを非安全側から分離するのに慎重な処理が必要であるため、一方側から他方側への切替えに数百サイクルかかることがあることを認識している。このように、アプリケーションがデータ・プロセッサ上の非安全側で実行されており、ある安全なデータの処理を実施するのにさらなる処理装置が必要であれば、一般的な処理タスクの実施には命令される度に非安全側から安全側への切替えが伴い、さらなる処理装置は多くのサイクルを要する操作を実施していたのではない限り性能に否定的影響を及ぼす。本発明は安全なデータ・ストアを有するさらなる処理装置を提供し、データ・プロセッサを安全モードからセットアップ操作を実施し、その安全なタスクを実施するのに必要な任意の安全なデータをその安全なデータ・ストアに格納することによりさらなる処理装置をセットアップするように構成してこの問題に取り組む。このように、安全なデータ・ストアを有するさらなる処理装置を提供し、データ・プロセッサがそれを安全モードでセットアップできるようにすることにより、モードを切り替えることなくこの非安全モードで作動しているデータ・プロセッサからの要求に応答して安全なデータを使用するタスクを実施することができる。これは処理時間の多くのサイクルを節減することができ、全体デバイスの効率を改善しながら小さく安全なタスクをさらなる処理装置により実施することができる。
【課題を解決するための手段】
【０００５】
一実施例では、前記格納された安全なデータはメモリの安全な部分の少なくとも１つのアドレスを含み、前記さらなるデータ処理装置は前記タスクを実施しながら前記少なくとも１つのアドレスに格納された安全なデータにアクセスする。
【０００６】
安全なデータはいくつかの事を含むことができるが、メモリの安全な部分内の場所を示す１つ以上のアドレスを含むことができる。この情報を有するさらなるデータ処理手段を提供することにより、それはメモリの安全な部分にアクセスすることができ、したがって、そこに格納された安全なデータをこのタスクで使用することができる。
【０００７】
ある実施例では、前記さらなるデータ処理装置は前記少なくとも１つのアドレスの少なくとも１つにより指示される場所において、前記メモリの前記安全な部分内で前記タスクを実施しながら発生された少なくともあるデータを格納するようにされている。
【０００８】
さらに、さらなる処理装置からメモリの安全な部分への実質的にポインタを提供することにより、そこへの予め定められた場所であってもさらなる処理装置にメモリの安全な部分へのアクセスが許され、さらなる処理装置はそれを使用してその処理中に発生できる任意の機密（ｓｅｎｓｉｔｉｖｅ）データを格納することができる。それによりシステムの完全性が維持されることを保証することができる。
【０００９】
ある実施例では、前記データ・プロセッサは複数のアプリケーションを処理するようにされ、かつ処理中に前記要求を発行する前記複数のアプリケーションの任意の１つへのコンテキスト・スイッチに応答して前記セットアップ操作を実施するようにされている。
【００１０】
データ・プロセッサはさらなる処理装置がさまざまな異なる時間にそのタスクを実施できるようにセットアップ操作を実施することができるが、ある実施例では、特定のアプリケーションへのコンテキスト・スイッチに応答してそれを実施する。特定のアプリケーションにより要求されるタスクを実施するようにさらなる処理装置をセットアップするのが簡便となることがある。タスクが何回も実施されることを要求するような特定のアプリケーションである場合、アプリケーションが実際に実行されている間にセットアップ操作をアプリケーションの始めにだけ実施して再度実施しなければ、その特定のアプリケーションが要求するタスクに関する安全なデータだけがさらなる処理装置内に格納されることを許しながら、セットアップ操作はこのアプリケーションに対して１回しか実施しなくてよく処理時間が節減される。これはセキュリティと性能改善との間の良好な妥協を提供する。
【００１１】
ある実施例では、前記データ・プロセッサは複数のアプリケーションを処理するようにされ、かつ前記複数のアプリケーションの少なくともいくつかに対するリセットに続いて前記セットアップ操作を実施するようにされ、かつ前記さらなるアプリケーションへのコンテキスト・スイッチの検出に応答して予めセットアップされていないさらなるアプリケーションに対する前記セットアップ操作を追加実施するようにされている。
【００１２】
あるいは、データ・プロセッサが処理するようにされているいくつかまたは全てのアプリケーションが実施するタスクに対してセットアップ操作を実施することができる。これにはセットアップ操作を頻繁に実施する必要がないという利点があるが、さらなる処理装置内により安全な情報を格納する必要がある。
【００１３】
データ・プロセッサが実施するようにされている複数のアプリケーションのいくつかに対してセットアップ操作が実施される場合、さらなる処理装置からタスクを要求することがありさらなる処理装置が実施する安全なデータでセットアップされていない新しいアプリケーションへのコンテキスト・スイッチをデータ・プロセッサが実施するまで、これらのアプリケーションは処理されかつタスクが要求されて実施される。このコンテキスト・スイッチに応答して、データ・プロセッサは安全モードに切り替り、このアプリケーションを処理するのに必要な安全なデータをさらなる処理装置へ送る。次に、それは非安全モードに切り替り、処理を続ける。次に、それは元々処理するようにセットアップされたアプリケーションおよびこのさらなるアプリケーションを処理し続けることができる。もう１つのアプリケーションがそれに切り替えられると、さらなる処理装置は処理するようにセットアップされておらず再度安全モードに切り替る必要がある。こうして、多数の安全な処理タスクを実施することなくいくつかのアプリケーションを処理することができる。
【００１４】
データ処理セキュリティはいくつかの方法で制御することができるが、ある実施例では、前記データ・プロセッサは、さらに、モニタ・モードを含み、前記安全および非安全モード間の処理の切り替りは前記モニタ・モードを介して実施される。
【００１５】
データ処理装置の最も特権的で安全モードであるモニタ・モードを安全および非安全モード間の切替えに使用することは簡便で効率的なセキュリティ制御方法である。
【００１６】
ある実施例では、前記さらなる処理装置は前記要求の受信に応答して前記データ・プロセッサへ安全な割込みを発行し、前記安全な割込みにより前記データ・プロセッサは前記モニタ・モードへ切り替って前記要求を発行する前記アプリケーションの完全性（ｉｎｔｅｇｒｉｔｙ）チェックを実施し、前記さらなる処理装置は肯定的な完全性チェックを示す前記データ・プロセッサからの信号の受信に続いて前記タスクを実施する。
【００１７】
ある実施例では、さらなる処理装置が要求される時にデータ処理装置は安全な割込みを発行することができる。さらなる処理装置がデータ・プロセッサに安全な割込みを発行できるようにすることにより、モニタ・モードへの切替えはより多くのサイクルを要するソフトウェア介入を必要とせずに効率的に実施することができる。モニタ・モードにおいてさらなるデータ処理装置を要求したアプリケーションの完全性を一度チェックすることができる。それにより、さらにセキュリティが与えられる。さらなる処理装置は非安全アプリケーションにセキュリティ・サービスを提供している。このように、安全なタスクを実施するさらなる処理装置を呼び出したアプリケーションの完全性をチェックできることは有利となることがある。
【００１８】
ある実施例では、前記さらなる処理装置は前記データ・プロセッサにより発行された複数の前記要求に関して予め定められた挙動を検出し、前記予め定められた挙動の検出に応答して安全な割込みを発生するように適合されており、前記安全な割込みにより前記データ・プロセッサは前記モニタ・モードに切り替る。
【００１９】
さらなるセキュリティ改善はさらなる処理装置にそのタスクを実施するためにそれが受信する要求に関連する予め定められた挙動を検出できるようにする論理を提供することによって作られる。ある挙動が検出されると、それは安全な割込みを発行することができ、それによりデータ・プロセッサはモニタ・モードに切り替ってアプリケーションを解析することができる。
【００２０】
予め定められた挙動は、たとえば、同じキーと異なるデータを有する複数の要求とすることができる。これはハッカーが安全鍵（ｓｅｃｕｒｅ  ｋｅｙ）に関する情報を得る典型的な方法であり、したがって、さらなる処理装置がこの挙動を検出してデータ・プロセッサに知らせられるようにし、システムのセキュリティを攻撃するこのような既知の方法を迎え撃つ助けとする。別の疑わしい挙動は同じデータと異なる鍵を有する複数の要求かもしれない。
【００２１】
ある実施例では、前記さらなるデータ処理装置の前記安全なデータ・ストアは安全なデータ・アイテムのテーブルと前記テーブル内の各データ・アイテムに関連するハッシュ値を格納するように構成され、前記テーブルは前記セットアップ操作中に埋められ、前記データ処理装置から発行された前記要求は前記テーブルからのアイテムを要求しかつ前記要求を有する対応するハッシュ値を供給し、前記さらなるデータ処理装置は前記要求されたアイテムに関連して格納された前記ハッシュ値と一致する供給された前記ハッシュ値に応答して前記要求されたアイテムの使用を許すだけである。
【００２２】
さらなるデータ処理装置に格納された安全なデータはテーブルの形とすることができ、セキュリティを増すためにテーブル内に格納された各データ・アイテムに関連するハッシュ値を有する。さらなる処理装置は対応するハッシュ値を有する要求に応答してテーブル内の要求されたデータ・アイテムしか使用できないように構成することができる。それにより、安全サービスを要求するユーザ・アプリケーションとさらなる処理装置により格納された安全なデータ間のさらなるセキュリティ・チェックが提供される。
【００２３】
ある実施例では、前記さらなる処理装置は、さらに、安全なレジスタを含み、前記安全なレジスタは前記メモリの安全な部分内のアドレスで埋められ、前記テーブルは前記アドレスへのオフセット値および前記セットアップ操作中の対応するハッシュ値で埋められる。
【００２４】
安全なデータをいくつかの形で格納することができるが、ある実施例では、さらなる処理装置内の安全なレジスタ内に格納されたメモリの安全な部分内の場所を示すアドレス、およびこのアドレスからのオフセットを示す値のテーブルがある。要求されたハッシュ値を有する要求しか情報を使用できないようなオフセットに関連する対応するハッシュ値がある。
【００２５】
ある実施例では、前記さらなる処理装置は暗号処理装置を含み、前記格納された安全なデータは暗号鍵の少なくとも１つのアドレスを含んでいる。
【００２６】
さらなる処理装置はいくつかの機能を実施するデバイスとすることができるが、ある実施例では、それは暗号処理装置である。暗号処理装置は鍵の形の安全なデータを使用する必要がある。さらに、暗号機能を実施したい多くのユーザ・アプリケーションがある。このように、暗号機能をさらなる処理装置に提供すると、それはデータ・プロセッサ上の非安全アプリケーションから要求されることがあり、しかもこれらの暗号機能を非安全アプリケーションから効率的に実施できるようにするデータ・プロセッサの正規の安全な処理ルーチンを通ることなく安全な方法で安全な鍵を処理することができる。
【００２７】
さらなる処理装置はいくつかの形をとることができるが、ある実施例では、それは非プログラマブル・ハードウェア・デバイスを含むことができる。
【００２８】
ハードウェア・デバイスは選出されたタスクを特に効率的に実施できるだけでなく、ユーザ・ソフトウェアにより攻撃されることがないため極端に安全である。このように、安全なタスクを実施するこのようなデバイスの提供により、これらの安全なタスクはセキュリティを過度に妥協することなく非安全アプリケーションからの要求があり次第実施することができる。
【００２９】
ある実施例では、前記さらなるデータ処理装置は前記少なくとも１つのアドレスが前記安全なメモリ部分の予め定められた部分にあり、前記安全なメモリ部の他の部分へのアクセスは許されないように抑制される。
【００３０】
安全なメモリのある部分にしかアクセスできないようにさらなる処理装置を抑制するのが有利となることがある。さらなる処理装置は安全なデータ・ストアを有し侵入するのが困難となることがあるため、安全なメモリのある部分にしかアクセスできないようにしてセキュリティを改善し、あるデータがこのデバイスを介してアクセスされることは決してないという信頼を与えることが有利である。
【００３１】
本発明のさらなる側面は安全および非安全モードでデータを処理するデータ・プロセッサを含むデータ処理装置上でデータを処理する方法を提供し、前記データ・プロセッサは前記非安全モードでデータを処理している前記データ・プロセッサにはアクセスできない安全なデータへのアクセスを有する前記安全なモードでデータを処理し、さらに、
安全なデータ・ストアを含むさらなる処理装置を含み、前記方法は、
前記安全なモードで作動する前記データ・プロセッサが前記さらなる処理装置上の前記安全なデータ・ストア内に安全なデータを格納することを含むセットアップ操作を前記さらなる処理装置上で実施するステップであって、前記安全なデータはタスクを実施するために前記さらなる処理装置により要求された安全なデータであり、前記タスクは少なくともそのいくつかは安全なデータであるデータの処理を含むステップと、
前記データ・プロセッサが非安全モードへ切り替るステップと、
前記データ・プロセッサがアプリケーションを処理して前記アプリケーションを処理しながら前記タスクを実施する要求を前記さらなる処理装置へ発行するステップと、
前記要求の受信に応答して、前記さらなるデータ処理装置が前記安全なデータ・ストア内に格納されたデータを使用して前記タスクを実施し必要な任意の安全なデータにアクセスするステップと、
を含んでいる。
【００３２】
本発明のさらにもう１つの側面は安全および非安全モードでデータを処理する処理手段を含むデータ処理装置を提供し、前記処理手段は前記非安全モードでデータを処理している前記処理手段にはアクセスできない安全なデータへのアクセスを有する前記安全なモードでデータを処理し、かつ、
前記非安全モードから発行された前記処理手段からの要求に応答してタスクを実施するさらなる処理手段を有し、前記タスクは少なくともいくつかは安全なデータであるデータを処理することを含み、前記さらなる処理手段は安全なデータ・ストアを含み、前記安全なデータ・ストアは非安全モードで前記処理手段上で実行しているプロセスにアクセスすることができず、
任意の前記要求を発行する前に、前記処理手段は前記さらなるデータ処理手段上でセットアップ操作を実施するように構成され、前記セットアップ操作は前記安全なモードで作動している前記処理手段により実施され、前記さらなる処理手段上の前記安全なデータ・ストア内に安全なデータを格納することを含み、前記安全なデータは前記タスクを実施するために前記さらなる処理手段により要求された安全なデータであり、
前記非安全モードで作動している前記処理手段からの前記要求の受信に応答して、前記さらなる処理手段は前記安全なデータ・ストア内に格納されたデータを使用して前記タスクを実施し、必要な任意の安全なデータにアクセスする。
【００３３】
本発明の前記した、およびその他の、特徴および利点は添付図と共に以下の実施例の詳細な説明を読めば自明である。
【実施例】
【００３４】
図１は安全および非安全モードで作動できるコア１０を有するデータ処理装置５を示す。このシステムには少なくとも部分的にモニタ・モードで実行するモニタ・プログラム１２が設けられている。セキュリティ状態フラグはモニタ・モード内でしかアクセスできないライト（ｗｒｉｔｅ）であり、モニタ・プログラムにより書き込むことができる。モニタ・プログラムは安全なドメインおよび非安全ドメイン間のいずれかの方向における全ての変化を管理する責任がある。コア外部から見てモニタ・モードは常に安全でありモニタ・プログラムは安全なメモリ内にある。セキュリティ状態フラグはこのモードで変化することができるため、モニタ・モード１２は安全な処理モードと見なすことができ、モニタ・モード１２のモニタ・プログラムはそれ自体にセキュリティ状態フラグを設定する能力があり、それはシステム内の究極のセキュリティ・レベルを全体として有効に提供する。
【００３５】
モニタ・モードはシステム内で最高のセキュリティ・アクセス・レベルを有し、システムを非安全ドメインおよび安全ドメイン間でいずれかの方向に切り替える権利を与えられた唯一のモードである。このように、全てのドメイン切り替えがモニタ・モードへの切り替えおよびモニタ・モード内でのモニタ・プログラムの実行を介して行われる。
【００３６】
非安全ドメイン内に、非安全オペレーティング・システムと協力して実行する複数の非安全アプリケーション・プログラムを実行する非安全オペレーティング・システムが設けられる。安全なドメイン内に、安全なカーネル・プログラムが設けられる。安全なカーネル・プログラムは安全なオペレーティング・システムを形成すると考えられる。典型的に、このような安全なカーネル・プログラムは、より安全にする傾向があるため安全なカーネルをできるだけ小さくかつ単純にできるように安全なドメイン内に設けなければならないアクティビティを処理するのに不可欠な機能だけを提供するように設計される。
【００３７】
安全および非安全モード間で切り替る時に、データのセキュリティを制御し安全なデータは非安全側で決して利用できないことを保証するためにモニタ・モードが常に呼び出される。モニタ・モードに入るために、最初に安全な特権モードに入る。安全な割込みに応答する時以外は、非特権安全モードからモニタ・モードに入ることはできない。
【００３８】
このように、非安全モードから安全モードに切り替りたい時に、コアは最初に特権非安全モードへ切り替り、次に安全モードが呼び出されてデバイスはモニタ・モードに切り替りそこでさまざまな処理ルーチンが実行されその後コア１０が安全モードへ切り替る。
【００３９】
データ処理装置５は非安全メモリ管理ユニット２２および安全メモリ管理ユニット２４も含んでいる。安全モードにおいて、コア１０は安全メモリ管理ユニット２４を介してメモリを調べ、非安全メモリ管理ユニット２２を介してメモリを調べる時に非安全モードにおいて有するものとは異なるメモリ３０のビュー（ｖｉｅｗ）を有する。他の実施例では、安全側および非安全側を有する単一のＭＭＵがあることもあり、安全側はメモリの安全な部分へのアクセスを管理することができる。安全側２２および非安全側２４を有するこのようなＭＭＵ２１の例が図２に示されている。
【００４０】
メモリ３０は安全部分および非安全部分を有し、一般的に、安全部分は安全ビットおよびアドレスを設定して指示され、安全ビット設定は安全モードから安全メモリ管理ユニット２４を介してしか見ることができない。
【００４１】
本実施例では、データ処理装置５はＡＥＳ符号化等の暗号タスクを実施するように設計されたハードウェア・デバイスである暗号アクセラレータ４０も有する。これらの暗号タスクを実施するのに暗号鍵を使用する必要があることがお判りであろう。これらの鍵はデータ・プロセッサの非安全側では決して利用可能としてはならず、さもなくばシステムのセキュリティは脅かされる。
【００４２】
従来、暗号プロセスが実施される時は、コア１０は安全なデータにアクセスして機能を実施する前に安全モードに切り替えられている。しかしながら、安全から非安全モードへの切替えにはさまざまな処理ルーチンを実行して、安全なプロセスにより処理される任意のデータがその時非安全プロセスでは利用不能であることを保証する必要がある。これは性能に関して高くつく。
【００４３】
本発明のこの実施例では、データ・プロセッサ１０は安全モードである時にセットアップ・ルーチンを実施して、その暗号タスクを実施できるようにそれが必要とするデータで暗号デバイス４０をセットアップする。これは特定のアプリケーションに対して行うことができる。このように、実施される暗号機能を必要とする特定のアプリケーションをコアが処理する場合、典型的にこのアプリケーションは実行中にこれらの機能を数回実施するよう暗号デバイス４０を指令する。この実施例では、アプリケーションを実行する前に、コア１０は安全モードに切り替ってセットアップ・ルーチンを実行する。このセットアップ・ルーチンは暗号デバイス４０上の安全なデータ・ストア４２内に１つ以上のアドレスを格納して、メモリの安全な部分内のどこに暗号プロセスを実施するのに必要な鍵が格納されるかを示す。暗号デバイス４０内にこの情報が格納されると、データ・プロセッサ１０は非安全モードに切り替って実施される暗号プロセスを呼び出すユーザ・アプリケーションを実行することができる。このように、アプリケーションが実行される間に暗号機能が実施されることを希望する時はいつでも暗号デバイス４０にタスク要求を発行する。暗号デバイス４０はデータ・ストア４２内に格納された少なくとも１つの安全なアドレスを有し、したがって、安全なメモリ３０内のこの安全なアドレスにアクセスすることができる。このように、それはそのアドレスに格納された暗号鍵を使用して暗号機能を実施することができる。暗号デバイス４０はハードウェア非プログラマブル・デバイスであるため、無許可アクセスに対して非常に安全である。
【００４４】
この実施例では、セットアップ操作は特定のアプリケーションに対して実施され、データ・プロセッサ・コア１０が異なるアプリケーションにコンテキスト・スイッチする時は、新しいアプリケーションが暗号タスクが実施されることを必要とする場合、新しいアプリケーションに対してさらなるセットアップ・プロセスが実施される。
【００４５】
代替実施例では、プロセッサ・コアはリセットされると安全モードからセットアップ操作を実施して、コア１０が実行できるいくつかのアプリケーションから呼び出されたタスクを実施できるように暗号デバイスをセットアップする。これは暗号デバイス４０内により多くの安全なデータを格納することを含む。このデータは、たとえば、レジスタ値４４およびこのレジスタ値へのオフセット値の対応するテーブル４２の形で格納することができる（図２参照）。これらのオフセット値はハッシュ値と関連付けて格納することができる。オフセット値はレジスタ４４内に格納されたアドレスへのオフセットに関連し、異なる鍵の安全なメモリ内の格納場所へのポインタを提供する。このように、鍵２を必要とするタスク１が実施されることをアプリケーション１が必要とする場合、それはテーブル４２内の格納場所２から鍵を要求する。この鍵を使用できるようにするために、それはこの格納場所に対応するハッシュ値を与える必要がある。これはあたかもアプリケーションに正しいハッシュ値が与えられていないような特別なセキュリティを提供し、さらなる処理装置はテーブルのエレメント２内に格納されたオフセットにより示される格納場所にアクセスすることができずこのタスクを実施しない。
【００４６】
テーブル４２内の追加データ格納場所は暗号デバイス４０がデータを格納することができるメモリ３０の安全な部分内のアドレスに関連することができる。これは、たとえば、暗号デバイスがビデオデータを暗号化するために非安全ユーザ・アプリケーションにより使用されるところで有用である。復号されたら、このビデオデータはまだ安全に格納されて、システムの安全側の制御下にある場合を除き、その非暗号化形式でコピーできないようにすることが重要である。このように、メモリの安全な部分にポインタを与えることにより暗号デバイス４０はこの機密データをメモリ３０の安全な部分内に格納してそのアクセスを制御することができる。
【００４７】
暗号デバイス４０はリセットでいくつかのアプリケーションを処理するようにセットアップされたが、新しいアプリケーションは暗号デバイスが実施するようにセットアップされないコア１０により処理されることがある。このようなケースでは、このアプリケーションへのコンテキスト・スイッチによりプロセッサ・コアはモニタ・モードに切り替わって暗号デバイスへのさらなるセットアップ・ルーチンを実施し、他のアプリケーションだけでなくこのアプリケーションにより要求されたタスクを実施できるようにされる。
【００４８】
図２は暗号デバイス４０を詳細に示す。暗号デバイス４０は暗号機能を実施する回路４１を含み、さらに、ハッシュ・コンパレタ回路４５と共に疑わしい挙動を検出する回路を含んでいる。特定のタスクを実施する要求がコア１０から受信され、この要求は機能を実施して適切なハッシュを与えるのにどの鍵が必要であるかを示す。ハッシュ・コンパレタ４５はハッシュが正しいかをチェックし、正しければアドレス４４およびオフセット２により示される場所におけるメモリの安全な部分からＭＭＵ２１の安全な部分２２を介して鍵がアクセスされ、回路４１により暗号機能が実施される。安全ではない暗号機能中に必要な任意のデータが非安全メモリ管理ユニット２４を介してこの回路によりアクセスされる。
【００４９】
同じ鍵を使用するが異なるデータを使用するいくつかの要求がコア１０から受信されると疑わしい挙動検出器回路４３が決定すると、安全な割込みがトリガされてコア１０に送られ、それは即座にモニタ・モードに切り替ってアプリケーションの解析を実施する。
【００５０】
デバイス４０がそれをやるようにセットアップされれば、任意の非安全要求に応答して安全な割込みを自動的に発生することもできる。非安全ユーザ・アプリケーションからの暗号機能を使用する任意の指令によりコア１０の安全モードによりテストされる非安全ユーザ・アプリケーションが完全な状態となる特に安全なシステムをこれは提供する。さらなる処理装置により発生された安全な割込みによりモニタ・モードが開始されると、ユーザ・アプリケーション自体内のソフトウェアに応答して呼び出された場合よりも遥かに少ないサイクルで安全モードへの切替えが実施される。データ・ストア４２は鍵の格納場所には関連せずメモリの安全な部分内に復号されたデータを格納するために暗号デバイス４０が使用できるメモリの安全な部分内の格納場所に関連するオフセット・アドレスをさらに含むことができる。
【００５１】
デバイス４０はそれがアクセスできるメモリ３０の安全な部分内のアドレスがある値内に制限されるようにセットアップできることに注目しなければならない。これは追加セキュリティを提供しメモリのある部分をこのデバイスからアクセスできないようにすることができる。
【００５２】
このデバイスは機能を実施する回路を含み、実際上、それが実施するように構成される機能をソフトウェアを介在させずに極端に効率的に実施するハードウェア・デバイスであることに注目しなければならない。これはそれを効率的にするだけでなく安全にする。
【００５３】
図３は本発明の実施例に従ってデータ・プロセッサにより実施される方法ステップを示す。この実施例において、コアはそれが処理する各アプリケーションに対してアクセラレータを別々にセットアップするように構成される。
【００５４】
このように、新しいアプリケーションへの切替えを示すコンテキスト・スイッチの受信に応答してそれは安全モードに入り、アクセラレータがその機能を実施するのに必要な安全なデータをこのアクセラレータの安全なデータ・ストア内に格納することにより、本実施例では暗号エンジンである、アクセラレータのセットアップ操作を実施する。次に、それは安全モードを出てアプリケーションの処理を開始する。アプリケーションの処理中に、それはタスクを実施する要求を暗号エンジンへ発行しかつ暗号エンジンからデータを受信する。それに対する機能を実施することを暗号エンジンに要求する新しいアプリケーションへコンテキスト・スイッチするさらなる要求があれば、それは再度安全モードに入りこの新しいアプリケーションに対するさらなるセットアップ・タスクを実施する。
【００５５】
図４はアクセラレータ自体により実施されるステップを示すフロー図である。それはデータ・プロセッサからの要求が受信されるかどうかを調べる入力をポーリングする。要求が受信されると、それは要求により示された安全なデータ・ストア内のデータ・アイテムにアクセスする。これらの安全なデータ・アイテムはメモリの安全側内でのアドレスとすることができ、それは次にこれらのアドレスにアクセスしてそのタスクを処理するのに必要な安全なデータを検索する。それは次にアクセスしたデータ・アイテムを使用してそのタスクを実施する。
【００５６】
それは次にそれが発生する機密データを安全なデータ・ストア内に示されたアドレスにおいて安全なメモリ内に格納する。そのタスクを完了すると、それはタスクが完了される表示をデータ・プロセッサに送り、さらにタスクを実施する要求を再度データ・プロセッサにポーリングする。
【００５７】
前記した技術は出願中の米国特許出願第１２／０００，００５号および第１２／００２，８５８号“Ｐｒｏｔｅｃｔｉｎｇ  ｔｈｅ  ｓｅｃｕｒｉｔｙ  ｏｆｓｅｃｕｒｅ  ｄａｔａ  ｓｅｎｔ  ｆｒｏｍ  ａ  ｃｅｎｔｒａｌ  ｐｒｏｃｅｓｓｏｒ  ｆｏｒ  ｐｒｏｃｅｓｓｉｎｇ  ｂｙ  ａ  ｆｕｒｔｈｅｒ  ｐｒｏｃｅｓｓｉｎｇ  ｄｅｃｉｖｅ”および“Ｃｏｎｔｒｏｌｌｉｎｇ  Ｃｌｅａｎｉｎｇ  Ｏｆ  Ｄａｔａ  Ｖａｌｕｅｓ  Ｗｉｔｈｉｎ  Ａ  ＨａｒｄｗａｒｅＡｃｃｅｌｅｒａｔｏｒ”に記述されている技術に関連している。これら２つの出願中の特許出願の開示はその全体がここに組み入れられている。
【００５８】
さらなる処理装置またはＡＲＭ（登録商標）データ処理装置内のハードウェア（ＨＷ）アシストにより使用される異なる技術のさらなる詳細が以下に開示される。
【００５９】
安全側データにアクセスしたいユーザ・モードＨＷアシストに対する一般的な実行モデルはＨＷアシストが安全側へアクセスを試みる前に安全側またはトラストゾーン（ＴＺ）ソフトウェアにより安全セッションが既に確立されていることである。
【００６０】
安全側からのデータにアクセスする必要があるＨＷアシストに対して安全なセッションを管理する４つの潜在的方法がある。
【００６１】
ソフトウェア（ＳＷ）内の全セキュリティを有する安全側へのソフトウェア（ＳＷ）エントリのデフォルト。安全なサービスが要求される度に、特権モードが入力され次にＳＭＣ（安全側への呼出し）が実行されて安全モニタに入る。次に、安全サービスが提供されプログラムはユーザ・モード・アプリケーションへ戻る。
【００６２】
安全なモニタへのエントリに直接ＨＷアシストへのアクセスを試行。このモードにおいて、ＨＷアシストが呼び出される度に安全側へ入り安全なセッションを安全側で直接管理することができる。また、安全側ＳＷは完全性が要求される物は何でも実行しＨＷにタスクを実施するよう指令することができる。これはＨＷアシストへの非安全アクセスを出来なくして実現することができる。
【００６３】
グローバル安全セッションをセットアップし安全なアクセスを必要とする各プロセスに非安全側で利用可能な安全値のテーブルへの予め定義されたインデクスを提供。各テーブル値はハッシュ値と対とされて正しいハッシュ値を有するプロセスしか特定のテーブル・エントリへできないことを保証する。安全セッションは利用可能なテーブル・エントリおよび保護ハッシュ値が計算されるプロセス生成時間にセットアップされる。安全側はＨＷアシスト内の安全モードだけのレジスタへの安全ベース・テーブルのアドレスおよび有効テーブル範囲の書き込みも行う。アプリケーション・プログラムから安全なアイテムへアクセスするために、ＨＷアシストはオフセットおよびハッシュ値によりユーザ・プログラミングされる。次に、ＨＷアシスト・モジュールはこれらの値を使用して安全な情報にアクセスしハッシュをチェックする。このモデルでは、安全セッションはまだグローバル・ビューであり安全なモニタは正規のオペレーティング・システム・コンテキスト・スイッチ時に呼び出される必要はなく−オフセットおよびハッシュはコンテキスト・スイッチ時にプロセス・アプリケーション・スペース内に格納することができる。
【００６４】
プロセス当たり１つの安全セッションをセットアップ。このモデルにおいて、各プロセスは有効にそれ自体の安全なセッションを有する。安全なセッションはプロセスがコンテキスト・スイッチ・インされコンテキストの終わりにセッションが閉じられる時にセットアップされる。ＨＷアシストへのアクセスの度に安全なモニタへアクセスするのではなく、安全なモニタはコンテキストの始めと終りにしかアクセスされない。このモデルの利点はＨＷアシスト内に格納される任意の安全な状態も安全なモニタにより直接またはＣＡ＿ＳＴＡＴＵＳレジスタの安全なシャドーを有することによりコンテキスト・スイッチ時に保存できることである。ＣＡ＿ＳＴＡＴＵＳレジスタはＨＷアシスト・モジュールに対する状態を提供するレジスタであり、特権アクセスを有する。
【００６５】
ＨＷアシストはタスクが完了する前の実行中に割り込まれ、後で必要に応じて再開することができる。ＨＷアシストの実行中に割込みが受信されると、割込みはＨＷアシストをなんら変更することなく通常のＡＲＭ（登録商標）方法で入力される。割込ハンドラ内で、プログラマは次のオプションを有する。
１．  ＨＷアシストには何もせずに実行を続けさせる。コアのシステム・プログラミングはＨＷアシストがまだメモリのその正しいビューを見る（すなわち、ページ・テーブルはまだ変化されていない）ことを保証しなければならないことに注目願いたい。
２．  ＨＷアシストを一時的にサスペンドするが、他のためには使用しない。（ＭＳＵＳＰＥＮＤ）
３．  ＨＷアシストをサスペンドし任意のダーティ状態をメモリに保存し戻してＨＷアシストが何か他で使用できるようにする。（ＭＳＵＳＰＥＮＤＣ）
【００６６】
（２）および（３）のケースでは、割込ハンドラが完了するとＨＷアシストはレジューム・コマンドにより再開される。（２）に対しては、実行は終わったところから再開され、（３）では実行を続ける前に最初にＨＷアシストへ中間状態をリロードしなければならない。図５はこれら両方のケースに対する制御フローを示す。この図において、ＣＡ＿ＳＴＡＴＥレジスタはＨＷアシスト・モジュールに対する記述子へのポインタを含むレジスタであり、特権またはユーザ・アクセスを有する。
【００６７】
ジェネリック割込ハンドラに対して、ＭＳＵＳＰＥＮＤおよびＭＲＥＳＵＭＥのブロードキャスト形式を使用して全てのＨＷアシストをサスペンドおよびレジュームすることができる。より多くの特殊化されたアプリケーションに対して、個別のＨＷアシスト・モジュールを独立してサスペンドおよびレジュームすることができる（ＨＷアシストの論理アドレスをコントロールへ供給して）。処理する必要のある例外の３つの基本的クラスがある。
・ユーザ・エラー−ユーザ・モードＳＷにより処理される
・特権システム・エラー−処理するためにオペレーティング・システムへ知らされるシステム・エラー
・安全エラー−安全なモニタに知らされた安全側へアクセスして生じたエラー
【００６８】
特権およびセキュリティをデフォルトすることにより、エラーはさらに処理するために割込みを介してコアへ知らされる。ユーザ・モード・エラーはＨＷアシスト・レジスタ内の状態エラー・ビット（たとえば、ＣＡ＿ＳｔａｔｕｓレジスタのＩＵＥビット）をチェックするユーザ・アプリケーション・ソフトウェアにより処理される。アーキテクチュアは必要ならばユーザ・モード・エラーをコアに知らせて割り込むことができるようサポートするが、これはオペレーティング・システムに対処するコストがかかる。
【００６９】
多数の例外が異なる特権レベルからアクティブとなることがあるケースでは、例外情報を格納するためにシャドー制御レジスタが設けられる。たとえば、安全でユーザ・メモリ故障が生じることがあれば、ＦＡＲおよびＣＡ＿ＳＴＡＴＵＳレジスタは安全側にシャドーを持たなければならない。ＦＡＲレジスタは特権アクセスを有し故障したメモリ・アドレスを与える。
【００７０】
コンテキスト・スイッチングをサポートするのに必要な基本操作は基本割込処理と同様である、すなわち、ＨＷアシスト操作をサスペンドおよびレジュームしてＨＷアシスト・モジュールからのダーティ状態をきれいにする。コンテキスト・スイッチングは２部分に分けることができる。
・古いプロセスをスイッチング・アウトする
・新しいプロセスをスイッチング・インする
これらの各々に２つの可能性がある
・ストリクト（Ｓｔｒｉｃｔ）−即座にスイッチする
・レージー（Ｌａｚｙ）−他の誰かが実際にＨＷアシストを使用したい時だけ状態を保存する
【００７１】
後者は必要時に状態を保存するだけなのでロー・パワーであるが実現するのはより困難である。
【００７２】
注記：従来のレージー・コンテキスト・スイッチ（たとえば、ＶＦＰ内で使用される）は新しいプロセスによりＨＷがアクセスされるまで新しいコンテキストにスイッチ・インしない。この技術において、新しいコンテキストがサスペンドされたＨＷアシストを有するならば、新しいコンテキスト内のＨＷへの最初の新しいアクセスまで待たずにコンテキストが回復されたらすぐに再開する必要がある。
【００７３】
図６はＨＷアシスト・モジュール（ＣＨＡ）に対してコンテキストをスイッチングするための一般的なフローを示す図である。コンテキスト・スイッチがレージーではなければ、ＨＷアシストはサスペンドされＭＳＵＳＰＥＮＤおよび記述子へのポインタを使用してきれいにされ、各イネーブルされたＨＷアシストに対するステータス・レジスタおよびＦＡＲが保存される。レージー・コンテキスト・スイッチの場合、ＨＷアシストはいかなる状態も保存せずにサスペンドされるだけである。いずれのケースでも、オペレーティング・システムは次にＨＷアシストが停止する（また、潜在的にはきれいにする）のを待ちながら、他のコンテキスト・スイッチ・クリーンアップをするように進むことができる。ページ・テーブル・エントリを変える必要が生じる直前に、オペレーティング・システムはデータ・アクセラレータ・バリア（ＤＡＮ）を実行して全てのＨＷアシストがサスペンディングを終了したことを保証し、次に、全てのＨＷアシストはＨＡＣＲ内でディセーブルされる。次に、コンテキスト・スイッチ・アウトが正常に継続する。
【００７４】
オペレーティング・システムによりさらに解析を行ってジェネリック・コンテキスト・スイッチ・アウトを洗練することができる。たとえば、
【００７５】
ＨＷアシスト・モジュールが現在イネーブルされていなければ、保存するプロセス・コンテキストは無く、なにもする必要がない。
【００７６】
ＨＷアシストはイネーブルされるが実行していなければ−潜在的に保存する必要のあるダーティ状態は無い。
【００７７】
ＨＷアシストがそれをサスペンドするのではなく完了できるように選択することができる−これは全てのダーティ・データがメモリ内に戻っていることも保証する。
【００７８】
新しいプロセスをＨＷアシストへ切替える時の最初のステップはＨＷアシスト・モジュールをイネーブルすることである。その後、記述子およびステータス・レジスタがＨＷアシスト・モジュール内にリロードされ、リジューム・オール・コマンドが発行されて全てのイネーブルされたＨＷアシスト・モジュールの実行を再開する。これは図７に示されている。
【００７９】
レージー・スキームが採用されると（すなわち、古いプロセスの状態がまだスイッチ・アウトされていない）、オペレーティング・システムは新しいプロセスがＨＷアシスト・モジュールをサスペンドしているかどうかを決定しなければならない。新しいコンテキストがＨＷアシストを使用しておれば、コンテキスト・スイッチ時にＨＷアシストの古い状態をきれいにしなければならない（後でアクセスされるまで遅延させるのではなく）。
【００８０】
遅延コンテキスト・スイッチ・イン
遅延プロセス状態スイッチは、新しいプロセスが任意の状態を保存する前にＨＷアシスト・モジュールへのアクセスを試みるまで待機する。新しいプロセスがＨＷアシスト・モジュールを使用しない場合、状態を保存する必要はない。
【００８１】
新しいプロセスがいつＨＷアシスト・モジュールへのアクセスを試みるかを検出するために、モジュールはコンテキスト・スイッチ時にディセーブルされ、それを使用する試みにより要求された状態を保存し回復することができるオペレーション・システム内のイベントがトリガされるようにする（定義されない命令トラップ）。古い状態が保存され新しい状態がロードされると、ＨＷアシストにアクセスするコマンドを再実行することができる。この手順は図８に示されている。サスペンドされたＨＷアシストはコンテキスト・スイッチに遅れずに検出され、それらにアクセスするコマンドを待たずに自動的に再開されるものとする。
【００８２】
オペレーティング・システムは前のＨＷアシスト・コンテキストのユーザ・スペース記述子へアクセスしてＨＷアシスト状態を正しい場所に保存できなければならないことに注目願いたい。
【００８３】
添付図に関して本発明の実施例を詳細に説明してきたが、本発明はこれらの精密な実施例に限定はされず、当業者ならば添付された特許請求の範囲に明記された本発明の範囲および精神から逸脱することなくさまざまな変更および修正を行えることが理解される。
【図面の簡単な説明】
【００８４】
【図１】本発明の実施例に従ったデータ処理装置を示す図である。
【図２】図１の暗号装置を詳細に示す図である。
【図３】本発明の実施例に従ったデータ・プロセッサにより実施される方法を示す図である。
【図４】本発明の実施例に従ったアクセラレータにより実施される方法のステップを示す図である。
【図５】割込みのハードウェア・アシストをサスペンドしレジュームする制御フローを示す図である。
【図６】コンテキスト・スイッチング・アウトに対するフロー図である。
【図７】プロセスをハードウェア・アシスト・モジュールへコンテキスト・スイッチングするフロー図である。
【図８】最初の新しいプロセス・アクセスまでハードウェア・アシスト状態セーブを延期するフロー図である。
【符号の説明】
【００８５】
５  データ処理装置
１０  データ・プロセッサ
１２  モニタ・プログラム
２２  非安全メモリ管理ユニット
２４  安全メモリ管理ユニット
３０  メモリ
４０  暗号デバイス
４１  暗号機能実施回路
４２  テーブル
４３  挙動検出器回路
４４  レジスタ
４５  ハッシュ・コンパレタ
【図１】
0005068737.tif 000002
【図２】
0005068737.tif 000003
【図３】
0005068737.tif 000004
【図４】
0005068737.tif 000005
【図５】
0005068737.tif 000006
【図６】
0005068737.tif 000007
【図７】
0005068737.tif 000008
【図８】
0005068737.tif 000009