(57)【要約】【課題】マルチタスク環境をサポートする現代的な計算機オペレーティングシステムにおいて、同時並列的に実行される複数のタスクが他のタスクから重要な情報を読み出されることなしに実行できる環境を実現する。【解決手段】単一のＣＰＵによって複数のタスクを順次実行し、複数のタスクを仮想的に並列処理するマルチタスク実行システムであって、各タスク毎に対応付けられる機密情報保持領域２０２〜２０４と、各機密情報保持領域２０２〜２０４に固有に設定され、各機密情報保持領域２０２〜２０４を暗号化するための鍵情報を格納する暗号化鍵記憶領域２０１と、オペレーティングシステムによるタスク切り替え時に停止状態となるタスクに関連付けられた機密情報保持領域２０２〜２０４を、当該タスク切り替え時に、鍵情報により暗号化する暗号エンジン１０３とを備える。【選択図】      図１
2004272816.tif 000002
【特許請求の範囲】
【請求項１】
単一のＣＰＵによって複数のタスクを順次実行し、該複数のタスクを仮想的に並列処理するマルチタスク実行システムであって、
各タスク毎に対応付けられる機密情報保持領域と、
前記各機密情報保持領域に固有に設定され、各機密情報保持領域を暗号化するための鍵情報を格納する暗号化鍵記憶領域と、
オペレーティングシステムによるタスク切り替え時に停止状態となるタスクに関連付けられた機密情報保持領域を、当該タスク切り替え時に、前記鍵情報により暗号化する暗号処理部と
を備えることを特徴とするマルチタスク実行システム。
【請求項２】
複数のＣＰＵにより複数のタスクを並列処理するマルチタスク実行システムであって、
各タスク毎に対応付けられる機密情報保持領域と、
前記各機密情報保持領域に固有に設定され、各機密情報保持領域を暗号化するための鍵情報を格納する暗号化鍵記憶領域と、
オペレーティングシステムによるタスク切り替え時に停止状態となるタスクに関連付けられた機密情報保持領域を、当該タスク切り替え時に、前記鍵情報により暗号化する暗号処理部と、
前記機密情報保持領域毎にアクセス権を設定し、該機密情報保持領域に対するアクセス制限を行うアクセス制御部と
を備えることを特徴とするマルチタスク実行システム。
【請求項３】
前記暗号処理部は、前記ＣＰＵとは別途独立に設けられたハードウェアであることを特徴とする請求項１又は２に記載のマルチタスク実行システム。
【請求項４】
前記暗号処理部により暗号化された機密情報保持領域を、タスク切り替え時に、前記鍵情報により復号する復号処理部を有することを特徴とする請求項１又は２に記載のマルチタスク実行システム。
【請求項５】
前記復号処理部は、前記ＣＰＵとは別途独立に設けられたハードウェアであることを特徴とする請求項４に記載のマルチタスク実行システム。
【請求項６】
前記機密情報保持領域に格納されるデータ及び格納先の機密情報保持領域は、前記オペレーティングシステム上で実行されるアプリケーション内で指定されることを特徴とする請求項１又は２に記載のマルチタスク実行システム。
【請求項７】
前記機密情報保持領域は、仮想アドレスと物理アドレスとをマッピングすることにより確保され、このマッピングに際し、前記暗号化鍵記憶領域に対するアクセス制限を行うマッピング管理部を備えることを特徴とする請求項１又は２に記載のマルチタスク実行システム。
【請求項８】
前記鍵情報は、前記タスクの生成処理時に生成されるものであることを特徴とする請求項１又は２に記載のマルチタスク実行システム。
【請求項９】
前記鍵情報は、前記オペレーティングシステムの起動時に生成されるものであることを特徴とする請求項１又は２に記載のマルチタスク実行システム。
【請求項１０】
新規なタスクの生成処理時に、既存のタスクから複製され、前記新規なタスクと該既存のタスクとで共有される機密情報保持領域に格納される情報について、当該新規なタスクに対し、前記既存のタスクに対応付けられた鍵情報とは別途独立な鍵情報を生成することを特徴とする請求項１又は２に記載のマルチタスク実行システム。
【請求項１１】
タスクの仮想メモリ中の機密情報がスワップファイル等の二次記憶領域に保存されたか否かを判断する退避判定手段を備え、
前記暗号処理部は、前記保存が実行されていない場合に、前記暗号化処理を実行することを特徴とする請求項１又は２に記載のマルチタスク実行システム。
【請求項１２】
単一のＣＰＵによって複数のタスクを順次実行し、該複数のタスクを仮想的に並列処理するマルチタスク実行方法であって、
各タスク毎に対応付けられる機密情報保持領域を確保するステップ（１）と、
前記各機密情報保持領域に固有に設定され、各機密情報保持領域を暗号化するための鍵情報を生成するステップ（２）と、
オペレーティングシステムによるタスク切り替え時に停止状態となるタスクに関連付けられた機密情報保持領域を、当該タスク切り替え時に、前記鍵情報により暗号化するステップ（３）と
を備えることを特徴とするマルチタスク実行方法。
【請求項１３】
複数のＣＰＵにより複数のタスクを並列処理するマルチタスク実行方法であって、
各タスク毎に対応付けられる機密情報保持領域を確保するステップ（１）と、
前記各機密情報保持領域に固有に設定され、各機密情報保持領域を暗号化するための鍵情報を生成するステップ（２）と、
オペレーティングシステムによるタスク切り替え時に停止状態となるタスクに関連付けられた機密情報保持領域を、当該タスク切り替え時に、前記鍵情報により暗号化するステップ（３）と、
前記機密情報保持領域毎にアクセス権を設定し、該機密情報保持領域に対するアクセス制限を行うステップ（４）と
を備えることを特徴とするマルチタスク実行方法。
【請求項１４】
暗号化された前記機密情報保持領域を、タスク切り替え時に、前記鍵情報により復号するステップをさらに有することを特徴とする請求項１２又は１３に記載のマルチタスク実行方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、コンピュータにおけるセキュリティ技術に係り、擬似的（ＴＳＳ環境）もしくは実際に（ＳＭＰ環境）複数のタスクを同時並列に実行することができるマルチタスク実行システム及びマルチタスク実行方法に関する。
【０００２】
【従来の技術】
近年、個人の使用するパーソナルコンピュータ（ＰＣ）から電子商取引（ＥＣ）等のサービスを提供するサーバコンピュータ、さらにはスーパーコンピュータまで、事実上あらゆる計算機がマルチタスク環境を提供するものとなっている。
【０００３】
ここでいうマルチタスク環境とは、計算機が扱う処理の単位である『タスク』を複数個同時に実行させることを可能とする環境であり、それらのタスクは、単一の中央演算装置（ＣＰＵ）を用いた計算機では、ＴＳＳ（Ｔｉｍｅ  Ｓｈａｒｉｎｇ  Ｓｙｓｔｅｍ，時分割型）による擬似的な並列実行を、複数のＣＰＵを実装した計算機ではＳＭＰ（Ｓｙｍｍｅｔｒｉｃ  Ｍｕｌｔｉ  Ｐｒｏｃｅｓｓｏｒ）構成を取ることで、真に同時並列的な実行を実現している。
【０００４】
このようなマルチタスク環境では、どのようにして個々のタスクが保持する機密データを他のタスクから保護するのかが問題となる。これは電子商取引に用いるサーバなど重要な情報を扱わなければならない計算機では特に影響が大きいと考えられる。
【０００５】
例えば、インターネットを利用して電子商取引を行う場合、ＳＳＬ（Ｓｅｃｕｒｅ  Ｓｏｃｋｅｔｓ  Ｌａｙｅｒ、米国特許第５，８２５，８９０号。Ｅｌｇａｍａｌ，  ｅｔ  ａｌ．  ”Ｓｅｃｕｒｅ  ｓｏｃｋｅｔ  ｌａｙｅｒ  ａｐｐｌｉｃａｔｉｏｎ  ｐｒｏｇｒａｍ  ａｐｐａｒａｔｕｓ  ａｎｄ  ｍｅｔｈｏｄ”，Ｏｃｔｏｂｅｒ  ２０，１９９８）と呼ばれる仕組みでブラウザ／ウェブサーバ間の通信を保護するというのが一般的となっている。
【０００６】
ところが、このＳＳＬを安全に機能させるためには、ウェブサーバに当該サーバ以外には知ることのできない固有の秘密鍵をインストールする必要がある。サーバはアクセスしたユーザに対してその秘密鍵を利用して自らの身元を証明するが、万一この秘密鍵が他者の知るところになれば、当該他者は
１．当該秘密鍵を利用して当該サーバへのなりすまし
２．当該秘密鍵に対応した公開鍵によって暗号化されるブラウザ／サーバの通信セッション開始時のやり取りを傍受することにより、そこで交換された共通鍵によって暗号化される実際の通信の復号及び内容の傍受
といった攻撃が可能となってしまう。
【０００７】
このような危険を避けるため、従来では、当該秘密鍵は一般的には暗号化処理を受けた上でファイル等に保管されるような運用がなされている。これにより、ディスク上に保管されている状態では秘密鍵の安全性は保護のために利用される暗号技術の強度の範囲内で保証されるが、ウェブサーバプログラムが実行されるときには、当該秘密鍵はファイルから読み出され、復号された上で当該アプリケーションプログラムのために確保されたメモリ上に平文（非暗号文）のままで保存されることになる。
【０００８】
このとき、同じサーバ計算機上で同時に実行される他のタスクが当該秘密鍵情報の保存されているメモリ領域にアクセスし、平文状態のデータを読み出すことができれば、容易にウェブサーバの秘密鍵を知ることができてしまうため、上に述べたような攻撃の実施が可能となる。このように、機密情報を保持するメモリを同時実行される他のタスクから保護することは、マルチタスクが一般的となっている現代的な計算機環境では特に重要性を増している。
【０００９】
マルチタスク環境をサポートする多くのオペレーティングシステムでは、タスク毎に仮想記憶空間を割り当て、各タスクがアクセスする仮想的なメモリ領域と物理的なメモリ領域とのマッピングを管理することにより、一つのタスクが保持するメモリ上のデータに対して他のタスクがアクセスすることはできないような配慮がなされている。
【００１０】
しかしながら、実際には、稼動中のタスクに関してデバッグが必要な場合等のために実行中のタスクに対してデバッガを接続し、当該タスクのメモリ領域や実行状態をモニタリングする機能が提供されているため、このモニタリング機能を悪用した精査、いわゆるハッキングが可能となることから、上述したようなオペレーティングシステムによる保護は完全ではない。特に悪意を持った計算機の管理者権限を持つユーザが存在する場合、上記モニタリング機能を利用して、秘匿情報の読み出しが可能となる。
【００１１】
なお、ここでいう『管理者権限を持つユーザ』は、必ずしも正規の計算機管理者であるとは限らない。近年の計算機環境に対して大きな脅威となっているのは、管理者権限下で実行することが要請されるタスクのプログラムコード中に存在するセキュリティ・ホールを利用して、”シェル”と呼ばれるコマンド実行環境を奪取するというものであり、管理者権限の下で動作するそのようなシェルを入手した攻撃者は、管理者として事実上任意の操作を行えることになる。そのような操作としては、先に述べたデバッガによる実行中タスクの精査の他に
・タスクのメモリ空間に存在する全情報のファイルへの書き出し
・実メモリ容量の枯渇に伴いスワップファイルと呼ばれるハードディスク等の二次記憶領域に待避されたタスクメモリの精査
等の攻撃が考えられる。
【００１２】
また、前述したＳＳＬを始めとして暗号技術を利用した通信データの保護を提供する仕組みは各種考案されているが、それらは事実上すべて秘密鍵をメモリに読みこんだ形でタスクが実行されるようになっているため、ネットワーク上ではなくその実行環境である計算機自体に対して攻撃が加えられる場合、いずれも大きな脆弱性を持つことが知られている。
【００１３】
このような問題を解決するための従来技術としては、大別して二種類の解決策が考案されいる。一つは管理者権限の細分化という主としてソフトウェア的な解決策であり、もう一つは機密情報を物理的／論理的に隔離するという手立てである。
【００１４】
前者に属する技術としては、いわゆる”トラステッドＯＳ”として知られるオペレーティングシステムが該当する。これらのオペレーティングシステムは、基本的には管理者権限を細分化することで絶対的な権限を持ったタスクの実行を可能な限り減らすという戦略を採っている。また、アクセスコントロールリストと呼ばれる機能を用いることで、ファイル等のデータに対するアクセス管理も従来のオペレーティングシステムより詳細に設定可能となっており、あるタスクが同時並列的に実行される他のタスクの情報にアクセスすることが非常に困難であるように図られている。
【００１５】
この種のトラステッドＯＳが採用している権限及びアクセス管理手法の詳細化による保護強化という方針は、基本的にはオペレーティングシステムというソフトウェアのみで実現できるため、特別なハードウェアを必要とせず比較的低コストで済むという利点がある。一方、オペレーティングシステムの保護機能によって他のタスクから隔離されているとはいえ、タスクのメモリ上ではデータは平文のまま保持されているため、同メモリ上のデータに攻撃者がアクセスする手段が開発された場合、機密情報が漏洩する可能性がある。
【００１６】
一方、後者の対策に関してはさらに
ａ）機密情報を扱う部分を計算機から物理的に分離することによる隔離
ｂ）機密情報を含むデータを単一のタスクのみが復号できる形で暗号化することによる保護
という二つの方向性がある。
【００１７】
ａ）はいわゆる”耐タンパー性デバイス”、すなわち、内部に保持されているデータを読み出すことが困難であるような機器に機密データを保持することで他者からの干渉を排除しようというものである。耐タンパー性デバイスは一般にデータの保存領域の他に独自の演算処理装置も装備されているため、機密情報を外部に洩らすことなく処理することを可能とする。
【００１８】
このような耐タンパー性デバイスによって機密情報の防御を行う例としては、個人の秘密情報を保護するためのスマート・カードや、公開鍵暗号技術を利用してデジタル証明書を発行する認証機関の秘密鍵を保護するために主として使われるＨＳＭ（ハードウェア・セキュリティ・モジュール）等がある。また、暗号関連処理の高速化を主目的とするＳＳＬアクセラレータ等のハードウェア製品のなかにも、秘密鍵等の機密情報を外から読み出すことができないような構成となっているものが存在するが、そのような製品もこのａ）に相当する対策とみなすことができる。
【００１９】
しかしながら、このような耐タンパー性デバイスを用いる対策には本質的に柔軟性に欠けるという欠点が存在する。大半の耐タンパー性デバイスは例えば『入力として与えられた暗号化済みデータを秘密鍵によって復号する』といった特定の機能しか持っていないため、当該デバイスがサポートしている以外の形で機密情報を保護することは困難となる。
【００２０】
耐タンパー性デバイスのなかにはＪａｖａ（登録商標）アプレット等の形で任意のアプリケーションをインストールすることにより、機能を拡張できるようになっているものも存在するが、そのような形で柔軟性を得ようとすると、今度はインストールされるアプリケーション自体がウイルス等の悪意あるものではないことを保証することが難しくなる。
【００２１】
また、大半の機密情報というものはその値そのものを知られないことが重要である他、実際にはその機密情報を用いた処理を権限者以外に行われてしまうという状況も防がなければならない。攻撃者にとっては秘密鍵そのものを知ることとその秘密鍵を用いて任意のデータに対して電子署名をすることとはほとんど差異がないからである。耐タンパー性デバイスによって秘密情報そのものを他者に知られる可能性自体は低く抑えられるとしても、当該デバイスが権限を持たない者による指示に基づいて当該秘密情報を用いた操作（例えば秘密鍵による暗号化済みデータの復号処理）を行い、その結果を返してしまうときには、所期の目的は達成されないことになる。
【００２２】
一般に、計算機に接続される耐タンパー性デバイス等の外部デバイスへのアクセスはオペレーティングシステムにより管理されることになるが、そのアクセス管理機能が侵された場合、マルチタスク環境では権限を持たないユーザにより当該耐タンパー性デバイスを濫用される可能性が排除できない。
【００２３】
一方、上記ｂ）は、タスクのメモリ中に存在するデータを暗号化することによって他のタスクによる干渉から回避するものである。この方法では、メモリに保存されたデータをそのタスクでしか復号できないような形で暗号化しておくことにより、他のタスクが当該タスクのメモリにアクセスしたとしても、そのデータは解読できない暗号データとしてしか認識されないため、機密データに対してａ）の方策よりも強力な保護を提供することが可能となる。
【００２４】
例えば、従来技術である米国特許第５，２２４，１６６号（Ｈａｒｔｍａｎ，Ｊｒ．”Ｓｙｓｔｅｍ  ｆｏｒ  ｓｅａｍｌｅｓｓ  ｐｒｏｃｅｓｓｉｎｇ  ｏｆ  ｅｎｃｒｙｐｔｅｄ  ａｎｄ  ｎｏｎ−ｅｎｃｒｙｐｔｅｄ  ｄａｔａ  ａｎｄ  ｉｎｓｔｒｕｃｔｉｏｎｓ”，Ｊｕｎｅ  ２９，１９９３）では、外部記憶及びメモリ上ではデータ領域／コード領域ともに暗号化された形で保存され、それらのデータ／コードを中央演算装置内の物理的に安全な領域に置かれたキャッシュ領域に読み込む際に復号することで他のタスクからの不正なアクセスを排除するシステムが提案されている。
【００２５】
暗号化されたデータを復号するための鍵も同じく物理的に安全な領域中に置かれ、不正な利用が不可能となるように管理される。このシステムでは復号された平文データは物理的に安全な領域に位置するキャッシュ領域のみに置かれ、それらがＣＰＵのキャッシュ・ライトバックによりメモリに書き戻される際には自動的に暗号化されることで機密性が確保される。
【００２６】
また、別の従来技術である日本国特許、特開２００１−３１８７８７号（橋本幹生他，”マイクロプロセッサ、これを用いたマルチタスク実行方法、及びマルチスレッド実行方法”，平成１２年５月８日出願）（特許文献２）では、同様にメモリ上のデータをキャッシュに読み出す、もしくは逆方向に書き出す際に復号処理／暗号化処理を行うことに加えて、コンテクスト切り替えと呼ばれるオペレーティングシステム機能実施時に実行レジスタ等のタスクの固有情報をも暗号化することで、前述したデバッガ利用等による攻撃をも未然に防ぐシステムが提案されている。
【００２７】
【特許文献１】
米国特許第５，２２４，１６６号明細書
【００２８】
【特許文献２】
特開２００１−３１８７８７号公報
【００２９】
【発明が解決しようとする課題】
上述した、二例の従来技術は、基本的にはマイクロプロセッサに対する追加機能としてデータもしくはコードの暗号化／復号を行うためのハードウェアモジュールをプロセッサ内部（プロセッサ内キャッシュとシステムバスとの間）に実装するというものである。
【００３０】
これらの従来技術では、ハードウェア的にマイクロプロセッサを拡張するという手法は最大限のパフォーマンス的な利益を得ることをできるため、これら従来技術のようにメモリ中に置かれるデータ領域及びコード領域すべてを暗号化し、実行の過程でそれらをリアルタイムに復号／再暗号化するというようなシステムを実現するためには、最適なものと考えられる。
【００３１】
しかしながら、近年の最先端のマイクロプロセッサは高度な研究開発力及び技術的ノウハウの集積物であり、そのような既存のマイクロプロセッサシステムのなかに新たなハードウェアを追加することで全体的な複雑性を増大させることは実用的ではない。
【００３２】
また、すべてのデータをメモリからキャッシュへの読み出し、もしくは書き出しというタイミングで動的に復号／暗号化処理を行うという仕組みは、実行性能に関して大きな悪影響を与えることが考えられる。例えば、メモリアクセスに関して現在の最新テクノロジーでは数ＧＢ／ｓｅｃという最大性能が得られるが、ハードウェアによる暗号化処理性能は高々Ｇｂ／ｓｅｃレベルであるため、それだけでも純粋なメモリアクセス性能が１／１０以下に落ちる可能性がある。
【００３３】
近年のマイクロプロセッサでは、基本的により高速なプロセッサをより低コストで提供する要請が大きいため、このような性能に対して負の影響を与えるような機能追加は妥当ではないといえる。このため、マルチタスク環境での機密保護という仕組みも、マイクロプロセッサ本体の機能とは分離して実現することが望まれる。
【００３４】
そこで、本発明は、以上の点に鑑みてなされたもので、マルチタスク環境をサポートする現代的な計算機オペレーティングシステムにおいて、同時並列的に実行される複数のタスクが他のタスクから重要な情報を読み出されることなしに実行できる環境を実現することのできるマルチタスク実行システム及びマルチタスク実行方法を提供することを目的とする。
【００３５】
【課題を解決するための手段】
上記課題を解決するために、本発明は、単一のＣＰＵによって複数のタスクを順次実行し、複数のタスクを仮想的に並列処理するマルチタスク実行システムであって、各タスク毎に対応付けられる機密情報保持領域と、各機密情報保持領域に固有に設定され、各機密情報保持領域を暗号化するための鍵情報を格納する暗号化鍵記憶領域と、オペレーティングシステムによるタスク切り替え時に停止状態となるタスクに関連付けられた機密情報保持領域を、当該タスク切り替え時に、鍵情報により暗号化する暗号処理部とを備える。
【００３６】
また、本発明は、複数のＣＰＵにより複数のタスクを並列処理するマルチタスク実行システムであって、各タスク毎に対応付けられる機密情報保持領域と、各機密情報保持領域に固有に設定され、各機密情報保持領域を暗号化するための鍵情報を格納する暗号化鍵記憶領域と、オペレーティングシステムによるタスク切り替え時に停止状態となるタスクに関連付けられた機密情報保持領域を、当該タスク切り替え時に、鍵情報により暗号化する暗号処理部と、機密情報保持領域毎にアクセス権を設定し、機密情報保持領域に対するアクセス制限を行うアクセス制御部とを備える。
【００３７】
上記発明においては、暗号処理部により暗号化された機密情報保持領域を、当該タスク切り替え時に、前記鍵情報により復号する復号処理部を有することが好ましい。なお、上記暗号処理部及び復号処理部は、ＣＰＵとは別途独立に設けられたハードウェアとすることができる。
【００３８】
上記発明においては、鍵情報は、タスクの生成処理時や、オペレーティングシステムの起動時に生成することができる。この場合、新規なタスクの生成処理時に、既存のタスクから複製され、新規なタスクと既存のタスクとで共有される機密情報保持領域に格納される情報について、当該新規なタスクに対し、既存のタスクに対応付けられた鍵情報とは別途独立な鍵情報を生成することが好ましい。
【００３９】
このような上記発明では、タスクの切り替え、すなわちコンテクストスイッチを行うオペレーティングシステムのカーネルの動作に基づいて、コンテクストスイッチが実行されるタイミングで機密情報の暗号化及び復号処理を行う。詳述すると、あるタスクに割り当てられたＣＰＵ利用時間が終了した、或いは入出力待ち等で実行が中断する等の原因で発生するコンテクストスイッチ処理では、レジスタ上のデータも含めて当該タスクの実行に必要なすべての情報が当該タスク専用に割り当てられる領域に保存された上で、同様に保存されている別のタスクの情報をレジスタにロードし実行が再開される、という処理が行われる。
【００４０】
すなわち、本発明においてカーネルは、コンテクストスイッチに際し、
（１）実行状態から休止状態に移行させられるタスクに関しては当該タスクが保持する機密情報をそのタスク専用の鍵で暗号化する
（２）休止状態から実行状態に復帰させられるタスクに関しては、前回休止状態に移行される際に暗号化されている機密情報を当該タスク専用の鍵で復号する
といった処理を実行する。
【００４１】
また、本発明によれば、システムコールを利用するアプリケーションプログラムのプログラミング時において、機密性が必要とされるデータ及び当該データを格納する機密情報保持領域を明示的に指定し、その特定領域のみを、リアルタイムにではなく必要に応じた特定のタイミング、すなわちタスクの切り替え時に秘匿処理を行うことができる。なお、ここでいうデータの秘匿処理には、従来より利用されているような各種暗号技術利用したものの他、情報隠蔽技術（Ｓｔｅｇａｎｏｇｒａｐｈｙ）を用いることができる。
【００４２】
さらに、本発明によれば、プログラム実行中にリアルタイムでの秘匿処理を実施する必要はなくなるため、マイクロプロセッサ内部に特別な機構を加える必要がなく、チップセットや拡張ボード等のハードウェアを追加するという形態や、さらにはソフトウェアのみによる形態で実現することが可能となり、既存のシステム及び装置を有効に利用することができる。
【００４３】
また、上記発明においては、タスクの仮想メモリ中の機密情報がスワップファイル等の二次記憶領域に保存されたか否かを判断する退避判定手段を備え、暗号処理部は、保存が実行されていない場合に、暗号化処理を実行することが好ましい。
【００４４】
この場合には、二次記憶上のスワップファイルに退避させられたデータを精査し、タスクのメモリ上に存在する重要な機密データがハッキングされる可能性を回避することができる。すなわち、複数のタスクが仮想的に同時並列的に実行されるマルチタスク実行環境において、一つのタスクが実行されている場合に、それ以外のすべてのタスクが停止状態となり、実行継続に必要となる情報を保存するシステムであっても、デバッガによる実行中のタスク内部状態を精査し、保存された情報を解析し、秘匿情報が漏洩することを回避することができる。
【００４５】
また、本発明では、スワップファイルへの書き出しの時点における暗号化処理を要することなく、退避が必要なデータを保護することができる。詳述すると、スワップファイルへのメモリデータの書き出しという処理が発生するのは、実行中のタスクからのメモリ要求が満たせなかった場合であり、この書き出し処理はカーネルの機能によって行われる。カーネルが動作する際には通常のユーザタスクはすべて休止状態にあるため、本発明を適用されたシステムの場合、それらタスクが保持する機密情報は既に暗号化された状態となっており、メモリ上に存在する任意のデータがスワップファイルに書き出され、さらにそのスワップファイルの中身が攻撃者によって精査されたとしても、機密情報の漏洩を回避することができる。。
【００４６】
さらに、本発明によれば、複数のＣＰＵを搭載するいわゆるＳＭＰ（Ｓｙｍｍｅｔｒｉｃ  Ｍｕｌｔｉ  Ｐｒｏｃｅｓｓｏｒ）構成の計算機において、同時に複数のタスクがそれぞれ別個のＣＰＵを占有することにより、真に同時並列的に実行が行うシステムであっても、あるタスクの実行中に、機密データ保持領域が平文のままという状態で存在するのを回避し、他のタスクからの操作により、当該領域が漏出するのを防止することができる。
【００４７】
すなわち、本発明では、他のタスクによって機密データが漏出するのを防止するために、ＳＭＰ構成の計算機で用いる場合には、単にコンテクストスイッチ時に暗号化／復号化を行うだけではなく、実行中の機密情報を保持するメモリ領域が他のタスクからアクセスできないように制限することができる。
【００４８】
具体的には、メモリ領域に対して特定のタスクのみからしか参照できないという属性の付与するとともに、機密情報保持用メモリ領域には同属性を付与する、といった機能をＳＭＰ対応オペレーティングシステムカーネルに追加する。
【００４９】
なお、メモリデータにも一般的なファイルと同じく書き込み権限、読み出し権限、実行権限等の各種属性が存在し、これらの各属性の設定をサポートするために通常オペレーティングシステムにはあるメモリ領域がどのような属性を持っているのかを管理する機能が備えられていることから、既存のオペレーティングシステムの構成を大幅に変更することなく、上記属性を追加することは可能である。
【００５０】
【発明の実施の形態】
［第１実施形態］
本発明の第１実施形態について説明する。図１は、本発明のマルチタスク実行システムを単一ＣＰＵシステムに適用した場合を例示するブロック図である。
【００５１】
同図に示すように、本実施形態の情報秘匿システムは、ハードウェア１００と、メモリ空間２００とから構成されている。ハードウェア１００は、マイクロプロセッサ１０１と、メモリ１０２と、暗号処理エンジン１０３とがシステムバス１０４によって結合されている構成される。
【００５２】
なお、暗号処理エンジン１０３は、システムバス１０４ではなくＰＣＩのような、Ｉ／Ｏコントローラ１０５を介して、ハードウェア１００の外部に接続された外部バス１０７に実装される増設ボード１０６など、メモリ１０２との間でのＤＭＡ転送が可能な装置を採用することができる。また、暗号処理エンジン１０３としては、上述した１０３や１０６のように、ハードウェアを用いずに、オペレーティングシステム自身がソフトウェア的に暗号化処理を実施するようにしてもよい。すなわち、本実施形態に係るマルチタスク実行システムでは、特定のハードウェア形態に捕らわれずに情報秘匿を実施できるという柔軟性を確保することができる。
【００５３】
上記メモリ空間２００は、ハードウェア１００の上で動作するオペレーティングシステムで確保される仮想メモリ領域であり、各タスクに対応付けられた機密情報保持領域２０２〜２０４と、オペレーティングシステムカーネルメモリ内に設けられ、前記機密情報保持領域２０２〜２０４に対応付けられた鍵を保持する暗号化鍵保持用配列２０１を有する。
【００５４】
機密情報保持領域２０２〜２０４は、実行中のタスクが、オペレーティングシステムカーネルによって休止状態に遷移させられる際に、当該タスクに対応する鍵によって暗号化され、休止状態のタスクが実行状態に遷移させられる際に、当該タスクに対応する鍵によって復号化される記憶領域である。
【００５５】
暗号化鍵保持用配列２０１は、当該オペレーティングシステムがサポートする最大タスク数（例えば、一般的なＵＮＩＸ（登録商標）系オペレーティングシステムであれば６５５３６個）に等しい要素数を持つ暗号化鍵を保持するための記憶領域であり、この暗号化鍵保持用配列２０１は、オペレーティングシステムカーネルのみからアクセス可能とするようにアクセス権が設定されている。このアクセス権については、後述する。
【００５６】
そして、暗号化鍵保持用配列２０１に保持される個々の鍵は、対応するタスク番号を持つタスクのメモリ中でプログラミング時に指定される機密情報保持領域２０２〜２０４を処理するために用いられる。具体的には、実行中のタスクがオペレーティングシステムカーネルによって休止状態に遷移させられる際に、当該タスクに対応付けられた機密情報保持領域（２０２，２０３，２０４等）が当該タスクに対応する鍵によって暗号化される。
【００５７】
逆に、休止状態から実行状態に遷移させられるタスクに関しては、当該タスクの休止処理時に暗号化された機密情報保持領域２０５を当該タスクに対応する鍵によって復号した上で、実行が再開されることになる。
【００５８】
図２は、本実施形態において、オペレーティングシステム起動時に必要とされる処理を示すフローチャート図である。ここでは具体例として４．４ＢＳＤオペレーティングシステムで行われる処理を挙げるが、本発明はこれに限定されるものではなく、他の方式のオペレーティングシステムでも利用することが可能である。
【００５９】
同図に示すように、オペレーティングシステム起動時にあっては、先ずブートプログラムと呼ばれる小規模なプログラムが起動され（Ｓ１０１）、そのブートプログラムによってオペレーティングシステム本体がメモリ上にロードされる。次いで、ＣＰＵの種類の同定や搭載メモリ容量の検査等のアセンブリ言語によって記述されたスタートアップルーチンが実行され（Ｓ１０２）、Ｃ言語で記述されたオペレーティングシステム主要部分の実行準備が行われる。
【００６０】
その後、実行される機種に依存する初期化処理により、オペレーティングシステムが利用する各種システムデータの準備が行われる（Ｓ１０３）、これにより、暗号化鍵保持用の暗号化鍵保持用配列２０１が占めるメモリ領域は、この部分で割り当てられることになる。その後、機種に依存しない初期化処理を（Ｓ１０４）を行う。
【００６１】
ここで、オペレーティングシステムが実行されるマイクロプロセッサ１０１のメモリ管理ユニットが適切な機能（例えば、後述するＭＩＰＳ等）を持っている場合について説明する。
【００６２】
本実施形態において、暗号化鍵保持用配列２０１は、カーネル中の、機密情報保持に関連する部分が実行されている期間のみ当該領域を読み書きできる状態に設定する機能を備え、管理者権限で実行されるタスクであっても当該領域に対してアクセスできないように制限されている。
【００６３】
これにより、オペレーティングシステムがデバッグ等の目的で物理メモリに対するアクセスを可能とするようなインターフェースを備えている環境であっても、機密情報を保持することができる。例えば、４ＢＳＤではファイルシステム中に／ｄｅｖ／ｍｅｍという名前で物理メモリを読み書きするためのインターフェースが提供され、管理者権限をもったユーザタスクであれば、このインターフェースを利用して暗号化鍵保持用配列部分を読み出せるような場合であっても、本実施形態のように、暗号化鍵保持用配列２０１に対する読み書きについて制限を設けることで、機密情報が漏出のを回避することができる。
【００６４】
なお、上述した適切なメモリ管理ユニットを持つハードウェアの例としては、図３に示すような、マイクロプロセッサのひとつであるＭＩＰＳが挙げられる。
【００６５】
すなわち、同図に示すように、このＭＩＰＳアーキテクチャでは、マイクロプロセッサ１０１中に存在するハードウェアであるＴＬＢ（Ｔｒａｎｓｌａｔｉｏｎ  Ｌｏｏｋ−ａｓｉｄｅ  Ｂｕｆｆｅｒ）１０１ａにより仮想アドレスと物理アドレスとの対応付けが行われる。この対応付けの際、具体的にどの仮想アドレスをどの物理アドレスにマッピングするかという決定はオペレーティングシステムカーネルによってなされる。
【００６６】
本実施形態では、このようなマッピングを管理するため、オペレーティングシステムカーネルは自らの管理するメモリ中にＴＬＢ管理領域２０６を確保し、維持する。このようなハードウェア上で本実施形態を用いる場合にはＴＬＢ管理領域２０６及びマイクロプロセッサ中のＴＬＢ１０１ａにおいて、秘密情報保持処理が実行されている間以外は暗号化鍵保持用の暗号化鍵保持用配列２０１に対してアクセスできないように設定しておく。これについて本実施形態におけるＭＩＰＳアーキテクチャの場合では、当該ページに対応するＴＬＢエントリのＶａｌｉｄ（Ｖ）ビットをｏｆｆにすることで実現できる。
【００６７】
なお、本実施形態では、ＭＩＰＳマイクロプロセッサのアーキテクチャを具体例として挙げたが、本発明は、このような個別のマイクロプロセッサのみを対象とするものではなく、既存及び将来のマイクロプロセッサ全般に対して適用可能である。
【００６８】
一般に、仮想アドレス及び物理アドレス間のマッピングは、メモリ管理ユニットがサポートするページ単位で行われるため、このようなハードウェアによるアクセス管理を適用する場合、暗号化鍵保持用配列２０１は、ページ単位で確保する。
【００６９】
なお、本実施形態では、オペレーティングシステム起動時に行われるのは暗号化鍵保持用配列２０１に相当する領域の確保及びそのアクセス権設定操作のみであり、実際の暗号化鍵の生成は、タスク生成処理まで遅延される。
【００７０】
これにより重要な機密情報である当該暗号鍵の生成を真に必要となるまで遅らせることで最大限の安全性を確保することができ、また、タスク番号は再利用され得るデータであるため、個々の鍵の寿命をひとつのタスク限りとすることで長期間同じ鍵を使い続けることによる機密情報漏洩の可能性を低減させることが可能となる。なお、タスク番号の再利用を考慮する必要がない環境ではオペレーティングシステム起動時に必要な鍵を生成するようにしてもよい。
【００７１】
次いで、タスク生成処理時における暗号化鍵の生成処理について説明する。ここでは、システムコールに応じてタスクを生成する。新しくタスクを生成するための処理を図４に示す。
【００７２】
本実施形態では、４．４ＢＳＤを含むＵＮＩＸ（登録商標）系オペレーティングシステムを前提とし、このＵＮＩＸ（登録商標）系オペレーティングシステムにおけるタスクの生成は、ｆｏｒｋシステムコールの実行によって実現される。ｆｏｒｋシステムコールは新しく生成されるタスクのための管理用データをオペレーティングシステム内に割り当て、さらに同システムコールを実行したタスクの仮想メモリ空間の完全な複製を、新規タスク用のメモリ空間として確保することで新しいタスクの実行環境を構築する。
【００７３】
なお、本実施形態においてメモリ空間の複製の確保については、コピーオンライトとして知られるテクニックを用いることにより、古いタスクから複製された新しいタスクがメモリ領域に対してデータを書き込むまでは、実際に専用の物理メモリの確保は実行されない。一般に、ｆｏｒｋシステムコールで生成された新しいタスクでは、続けてそれまで実行していたものとは異なる新しいプログラムコードをロードした上でゼロから実行を開始するため、このコピーオンライトのメカニズムを有効に実行することができる。
【００７４】
図４では、タスクｘが実行中にｆｏｒｋシステムコールを呼び出した結果として、新たにタスクｙが生成された状態を表している。同図に示すように、この状態においては、タスクｙ用の管理データ２１０が新しく生成され、当該管理データ２１０は、ｆｏｒｋシステムコール呼び出し元であるタスクｘ管理データ２０９の機密情報保持領域２０８を、コピーオンライト型参照で共有している。
【００７５】
このようなタスク関連データ構造の他に、オペレーティングシステムカーネルメモリ中の暗号化鍵保持用配列２０１中には、新しいタスク番号ｙに相当する要素位置にタスクｙのメモリ中の機密情報保護のための鍵を新規に設定する。この鍵は、タスクｘのための鍵とは別途独立な異なる値であり、安全な擬似乱数データとしてｆｏｒｋシステムコール処理のなかで生成される。
【００７６】
この結果、機密情報保持領域２０８は、タスクｘとｙ双方によって共有されることになるが、当該領域を正しく復号できる鍵は同領域を生成したタスクｘの鍵のみであるため、ｆｏｒｋシステムコールの結果生成されたタスクｙが同情報の内容を知ることはできない。このように親子関係にあるようなタスク間であっても、機密情報は当該情報を生成したタスクのみしかアクセスできないように規制される。
【００７７】
また、タスク管理データ２０９や２１０中にはタスクの実行コンテクストの一部として、コンテクスト切り替え時にハードウェア資源の一部である各種レジスタに保存されていた値を退避するレジスタ退避領域２０９ａや２１０ａが確保されている。
【００７８】
コンテクスト切り替え処理が発生した時点で機密情報の一部もしくは全部がこれらレジスタに格納されている可能性が存在するため、タスク管理データ中のレジスタ退避領域２０９ａや２１０ａに対しても、同様にタスク専用暗号化鍵で暗号化を行う。この場合、新しいタスクｙのレジスタ退避領域２１０ａに関してはタスクｘのレジスタ退避領域をコピーした後、当該領域をタスクｘの鍵で復号し、さらにタスクｙの鍵で暗号化する処理を行う。
【００７９】
さらに、本実施形態では、プログラマに対して機密情報保持領域を確保するために提供されるインターフェースが設けられている。図５はプログラマに対して機密情報保持領域を確保するために提供されるインターフェースの説明図である。
【００８０】
この機能は、基本的に、Ｃ言語において動的なメモリ領域割り当てを提供するライブラリ関数ｍａｌｌｏｃ（）と同等のインターフェースを持つｓａｌｌｏｃシステムコールによって実現される。
【００８１】
すなわち、図５に示すように、このｓａｌｌｏｃシステムコールは、引数で与えられるサイズの連続したメモリ領域を新たにタスクのメモリ空間に割り付け（Ｓ２０１）、この割付けが成功したかを判断し（Ｓ２０２）、成功した場合には（図中ステップＳ２０２における”Ｙ”）、その部分が機密情報保持領域に関する情報（先頭アドレス及びサイズ）をカーネルメモリ空間中に記録する（Ｓ２０４）。その後、確保されたアドレス空間の次の領域のアドレスを返却する（Ｓ２０５）。ステップＳ２０２において、割付けが成功しなかった場合（図中ステップＳ２０２における”Ｎ”）、ＮＵＬＬ値を返却し（Ｓ２０３）、ステップＳ２０４以降の処理は実行しない。
【００８２】
そして、このように確保されたメモリ空間に対して暗号化及び復号化を実行する処理は、以下の手順により行う。図６及び図７は、コンテクストスイッチ処理発生時に行われる暗号化及び復号化処理の概要を示す説明図である。
【００８３】
先ず、暗号化を行う場合は、図６に示すように、コンテクストスイッチ処理により実行が中断させられ休止状態に遷移させられるタスクに関し、当該タスク用の機密情報暗号化鍵により退避されたレジスタ情報の暗号化を行った後（Ｓ３０１）、当該タスクの機密情報保持領域が存在するか否かについて判断を行い（Ｓ３０２）、機密保持領域が存在する場合（図中ステップＳ３０２における”Ｙ”）、その存在する機密保持領域がスワップファイルに退避されているか否かについて判断を行う（Ｓ３０４）。ステップＳ３０２において、機密保持領域が存在しないと判断した場合（図中ステップＳ３０２における”Ｎ”）は、そのまま処理を終了する（Ｓ３０３）。
【００８４】
ステップＳ３０４において、退避されていない領域が存在すると判断した場合（図中ステップＳ３０４における”Ｎ”）には、その領域を機密情報暗号化鍵によって暗号化する（Ｓ３０５）。一方、ステップＳ３０４において、当該領域がスワップファイルに退避されていると判断した場合（図中ステップＳ３０４における”Ｙ”）、上記ステップＳ３０２に戻り、上記同様の処理を繰り返す。
【００８５】
なお、ステップＳ３０４で、スワップファイルに退避されているかどうかを判定しているのは、最適化を図るためである。すなわち、このように判定することにより、機密情報保持領域すべて、一律に暗号化されるのを回避し、スワップファイルに退避されている情報を一時的に実メモリに読み込んだ上で暗号化処理を行うという重い処理を不要とすることができる。
【００８６】
なお、本実施形態において、当該データ部分をスワップファイルに退避する処理は、カーネルにしか行えないことから、当該タスクがまさに実行されているコンテクストの途中でスワップ退避処理が行われることはなく、当該タスクが休止状態になった後に、スワップ退避処理が実行される。
【００８７】
従って、本実施形態では、スワップ退避処理が実行される時点において、機密情報保持領域に対する暗号化による保護は実施されていることとなり、スワップファイルに退避される時点で機密情報保持領域は既に安全な状態となっており、そのようなスワップファイルに退避された機密情報保持領域に対しては、当該タスクの休止処理時における機密保持処理は、不要となる。
【００８８】
次いで、休止状態から実行状態へと遷移させられるタスクに関する復号処理について説明する。
【００８９】
図７に示すように、先ず、機密保持領域が存在するか否かについて判断を行い（Ｓ４０１）、機密保持領域が存在すると判断した場合（図中ステップＳ４０１における”Ｙ”）には、当該領域がスワップファイルに退避されているか否かについて判断を行う（Ｓ４０２）。当該ステップＳ４０２において、等が要ろう域がスワップファイルへ退避されている場合には、ステップＳ４０１に戻り、ステップ４０１以降の処理を繰り返す。
【００９０】
このステップＳ４０２において、スワップファイルに退避されていない領域が存在すると判断した場合（図中ステップＳ４０２における”Ｎ”）、当該タスクの機密情報保持領域のうち、先頭アドレスから、当該領域のサイズ分、機密情報暗号化鍵によって復号化を行う（Ｓ４０３）。
【００９１】
一方、ステップＳ４０１において、機密保持領域が存在しないと判断した場合（図中ステップＳ４０１における”Ｎ”）、当該タスク用の機密情報暗号化鍵により退避されたレジスタ情報の復号処理を行い（Ｓ４０４）、実行状態への遷移処理を終了する。
【００９２】
この復号処理においても、ステップＳ４０２において、機密情報保持領域中でスワップファイルへの退避が行われているかどうかの判定を行っているが、これも休止処理時の場合と同様に、最適化を図るためである。すなわち、上述した通り、スワップファイル上では機密情報保持領域は既に暗号化によって保護されているので安全性は問題ない。
【００９３】
また、既にスワップファイル上への退避処理が行われている場合には、当該領域に対するアクセスが比較的長期間行われていなかったこととなり、ここでタスクの実行が再開されたとしても当該領域に対するアクセスが行われるとは限らず、この時点でスワップファイルから実メモリに当該領域を読み込み、それを復号して当該タスクが利用できるように準備したとしても無駄となる可能性が高いのである。
【００９４】
実際に当該タスクがスワップファイルに退避させられている当該領域へのアクセスを行った場合には、ページフォールトが発生してオペレーティングシステムにより当該領域の実メモリへの読み込みが行われる。しかも、その処理自体は当然当該タスクを再度休止状態にした上で実施されることになるため、オペレーティングシステムによるスワップファイルから実メモリへのデータの読み込みが終了して改めて当該タスクが実行させられる時点になって再度コンテクストスイッチが発生し、その時点では当該機密情報保持領域はスワップファイルではなく実メモリに存在することとなり、ステップＳ４０４において、データの復号が行われることになる。
【００９５】
以上の結果、スワップファイル上に退避された機密情報保持領域の処置という例外的な事象も、特別扱いすることもなくきわめて自然に処理できることになるのである。
【００９６】
［第２実施形態］
次いで、本発明の第５の実施形態について説明する。図８は、本実施形態に係るシステムの構成を示すブロック図である。本実施形態では、複数ＣＰＵのＳＭＰシステムに本発明を適用することを前提とする。すなわち、ＳＭＰシステムでは、複数のタスクが実際に同時並列的に実行することになるため、前述した第１実施形態における機能に加えて、機密情報保持領域に対して同時に動く他のタスクからのアクセスを禁止する機構を備えることを特徴とする。
【００９７】
なお、図８では、実際にタスク３とタスク４が同時に動いている状態を示している。この状態にあっては、機密情報保持領域２０５と２０６は復号されて平文状態であることから、本実施形態では、それぞれ他タスクからのアクセスが行えないようにアクセスを規制する。
【００９８】
具体的には、図９に示すように、このｓａｌｌｏｃシステムコールは、引数で与えられるサイズの連続したメモリ領域を新たにタスクのメモリ空間に割り付け（Ｓ５０１）、この割付けが成功したかを判断し（Ｓ５０２）、成功した場合には（図中ステップＳ５０２における”Ｙ”）、その部分が機密情報保持領域に関する情報（先頭アドレス及びサイズ）をカーネルメモリ空間中に記録する（Ｓ５０４）。ステップＳ５０２において、割付けが成功しなかった場合（図中ステップＳ５０２における”Ｎ”）、ＮＵＬＬ値を返却し（Ｓ５０３）、ステップＳ５０４以降の処理は実行しない。
【００９９】
ステップＳ５０４の後、実行環境がＳＭＰシステムであるかどうかを判定し（Ｓ５０５）、ＳＭＰである場合（図中ステップＳ５０６における”Ｙ”）には、割り当てた領域に対して、当該タスクが専有的に利用するような指定を行う（Ｓ５０６）。なお、このステップＳ５０６において、このような指定がハードウェア的なメモリ管理機構を用いて実現できる場合には、機密情報保持領域の割り当てを同メモリ管理機構が扱うページ単位とする。
【０１００】
一方、ステップＳ５０５において、実行環境がＳＭＰシステムでないと判断した場合（図中ステップＳ５０５における”Ｎ”）、或いは、ステップＳ５０６の後、確保されたアドレス空間の次の領域のアドレスを返却する（Ｓ５０７）。
【０１０１】
このような本実施形態に係るマルチタスク実行システムによれば、複数のＣＰＵを搭載するいわゆるＳＭＰ（Ｓｙｍｍｅｔｒｉｃ  Ｍｕｌｔｉ  Ｐｒｏｃｅｓｓｏｒ）構成の計算機において、同時に複数のタスクがそれぞれ別個のＣＰＵを占有することにより、真に同時並列的に実行が行うシステムであっても、あるタスクの実行中に、機密データ保持領域が平文のままという状態で存在するのを回避し、他のタスクからの操作により、当該領域が漏出するのを防止することができる。
【０１０２】
すなわち、本実施形態では、他のタスクによって機密データが漏出するのを防止するために、ＳＭＰ構成の計算機で用いる場合には、単にコンテクストスイッチ時に暗号化／復号化を行うだけではなく、実行中の機密情報を保持するメモリ領域が他のタスクからアクセスできないように制限することができる。
【０１０３】
具体的には、メモリ領域に対して特定のタスクのみからしか参照できないという属性の付与するとともに、機密情報保持用メモリ領域には同属性を付与する、といった機能をＳＭＰ対応オペレーティングシステムカーネルに追加する。
【０１０４】
なお、メモリデータにも一般的なファイルと同じく書き込み権限、読み出し権限、実行権限等の各種属性が存在し、そういった属性をサポートするために通常オペレーティングシステムにはあるメモリ領域がどのような属性を持っているのかを管理する機能が備えられていることから、既存のオペレーティングシステムの構成を大幅に変更することなく、上記属性を追加することは可能である。
【０１０５】
【発明の効果】
以上述べたように、この発明によれば、プログラマによって指定される機密情報保持領域を、当該プログラムが実行されているタスク以外のタスクからは読み出すことができないよう保護することが可能となり、機密情報を保持しながら実行するタスクをマルチタスク環境下で安全に実行させることができる。
【０１０６】
また、本発明によれば、保護機構は管理者権限を備えた悪意あるタスクに対してもアクセス制限を行うことができるため、管理者権限の漏洩や盗用という攻撃にも耐え得ることができる。
【図面の簡単な説明】
【図１】第１実施形態に係るマルチタスク実行システムの構成を示すブロック図である。
【図２】第１実施形態における起動時の処理を示すフローチャート図である。
【図３】第１実施形態において、適切なメモリ管理ユニットを持つハードウェア構成を備えた例を示す説明図である。
【図４】第１実施形態において、システムコールに応じて新しくタスクを生成するための処理を示す説明図である。
【図５】第１実施形態において、プログラマに対して機密情報保持領域を確保するために提供されるインターフェースの説明図である。
【図６】第１実施形態における、コンテクストスイッチ処理発生時に行われる暗号化処理の概要を示す説明図である。
【図７】第１実施形態における、コンテクストスイッチ処理発生時に行われる復号化処理の概要を示す説明図である。
【図８】第２実施形態に係るシステムの構成を示すブロック図である。
【図９】第２実施形態における、マルチタスク実行システムの動作を示す説明図である。
【符号の説明】
１００…ハードウェア
１０１…マイクロプロセッサ
１０１ａ…ＴＬＢ
１０２…メモリ
１０３…暗号処理エンジン
１０４…システムバス
１０５…コントローラ
１０６…増設ボード
１０７…外部バス
２００…メモリ空間
２０１…暗号化鍵保持用配列
２０２〜２０５，２０８…機密情報保持領域
２０６…ＴＬＢ管理領域
２０９…タスク管理データ
２０９ａ…レジスタ退避領域
２１０…管理データ
２１０ａ…レジスタ退避領域
【図１】
2004272816.tif 000003
【図２】
2004272816.tif 000004
【図３】
2004272816.tif 000005
【図４】
2004272816.tif 000006
【図５】
2004272816.tif 000007
【図６】
2004272816.tif 000008
【図７】
2004272816.tif 000009
【図８】
2004272816.tif 000010
【図９】
2004272816.tif 000011