(57)【要約】【課題】  複数のタスクを同時並列的に実行することができる現代的なオペレーティングシステムにおいて、複数のタスクが柔軟かつ安全に協調動作を行う環境を実現する。【解決手段】  本発明に係るマルチタスク実行システム１は、タスク２０１からの鍵要求システムコールに応じて鍵を生成してタスク２０１に対して付与するように構成されている鍵生成付与機能１０４と、生成された鍵を記憶するように構成されている鍵記憶機能１０５と、タスク２０１によって鍵を用いて暗号化されているシステムコールの暗号化対象引数を鍵記憶機能１０５に記憶されている鍵を用いて復号するように構成されている復号機能１０６と、復号した暗号化対象引数を用いてシステムコールを処理するように構成されているシステムコール処理機能１０２とを具備する。【選択図】  図１
2006190051.tif 000002
【特許請求の範囲】
【請求項１】
タスクからの鍵要求システムコールに応じて鍵を生成して前記タスクに対して付与するように構成されている鍵生成付与機能と、
生成された前記鍵を記憶するように構成されている鍵記憶機能と、
前記タスクによって前記鍵を用いて暗号化されているシステムコールの暗号化対象引数を、前記鍵記憶機能に記憶されている該鍵を用いて復号するように構成されている復号機能と、
復号した前記暗号化対象引数を用いて前記システムコールを実行するように構成されているシステムコール処理機能とを具備することを特徴とするマルチタスク実行システム。
【請求項２】
前記鍵生成付与機能は、前記マルチタスク実行システム内で前記鍵を一意に識別するための鍵ＩＤを前記タスクに対して付与するように構成されており、
前記鍵記憶機能は、前記鍵と前記鍵ＩＤとを関連付けて記憶するように構成されており、
前記タスクは、前記システムコールの第１の引数として前記鍵ＩＤを設定すると共に、前記鍵ＩＤによって識別される鍵を用いて前記暗号化対象引数を暗号化するように構成されており、
前記復号機能は、前記第１の引数として設定されている前記鍵ＩＤによって識別される前記鍵を用いて前記暗号化対象引数を復号するように構成されていることを特徴とする請求項１に記載のマルチタスク実行システム。
【請求項３】
前記鍵生成付与機能は、前記鍵として、共通鍵暗号アルゴリズムで用いられる共通鍵を生成するように構成されている請求項１又は２に記載のマルチタスク実行システム。
【請求項４】
前記鍵生成付与機能は、前記鍵として、公開鍵暗号アルゴリズムで用いられる公開鍵及び秘密鍵のペアを生成するように構成されている請求項１又は２に記載のマルチタスク実行システム。
【請求項５】
前記鍵生成付与機能は、経過時間及び暗号化した前記暗号化対象引数のデータ量に基づいて、前記鍵を更新するように構成されている請求項１乃至４のいずれか一項に記載のマルチタスク実行システム。
【請求項６】
前記鍵生成付与機能は、前記鍵の用途を指定するように構成されていることを特徴とする請求項１乃至５のいずれか一項に記載のマルチタスク実行システム。
【請求項７】
送信側タスクからの鍵要求システムコールに応じて鍵を生成して前記送信側タスクに対して付与し、受信側タスクからの鍵要求システムコールに応じて前記鍵を前記受信側タスクに対して付与するように構成されている鍵生成付与機能と、
前記受信側タスクからのシステムコールに応じて、前記送信側タスクによって前記鍵を用いて暗号化されているシステムコールの暗号化対象引数を復号することなく、前記受信側タスクに対して送信するように構成されているシステムコール処理機能とを具備し、
前記受信側タスクは、前記鍵を用いて前記暗号化対象引数を復号するように構成されていることを特徴とするマルチタスク実行システム。
【請求項８】
タスクからの鍵要求システムコールに応じて鍵を生成して前記タスクに対して付与する工程と、
生成された前記鍵を記憶する工程と、
前記タスクによって前記鍵を用いて暗号化されているシステムコールの暗号化対象引数を、前記鍵記憶機能に記憶されている該鍵を用いて復号する工程と、
復号した前記暗号化対象引数を用いて前記システムコールを実行する工程とを有することを特徴とするマルチタスク実行方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、同時に複数のタスクを並列的に実行することが可能な現代的なオペレーティングシステム（ＯＳ：Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）を用いたマルチタスク実行システム及びマルチタスク実行方法に関する。
【背景技術】
【０００２】
近年、個人の使用するパーソナルコンピュータ（ＰＣ：Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）から、電子商取引（ＥＣ：Ｅｌｅｃｔｒｉｃ  Ｃｏｍｍｅｒｃｅ）等のサービスを提供するサーバコンピュータ、さらにはスーパーコンピュータまで、事実上あらゆるコンピュータ（計算機）が「マルチタスク環境」を提供するものとなっている。
【０００３】
ここでいう「マルチタスク環境」とは、コンピュータが扱う処理の単位である「タスク」を複数個同時に実行できる環境であり、近い将来には、携帯電話のようなリソースの限られたプラットフォームにおいてもこのようなマルチタスク環境を提供することが期待されている。
【０００４】
一般に、このようなマルチタスク環境を管理するオペレーティングシステムでは、複数のタスクが安全にそれぞれの仕事を行うことが可能な環境を実現するために、個々のタスクが周辺機器等のコンピュータハードウェアに対する操作等の潜在的にコンピュータに害を与える可能性を持つ操作を直接行うことを許すという形態ではなく、当該オペレーティングシステムが独占的に当該操作を実行するという形態が採られている。
【０００５】
このようなマルチタスク環境では、ユーザによって起動されたタスクは、オペレーティングシステムによって提供されるサービスを呼び出すことによって、上述の操作を実現するように構成されている。このようにオペレーティングシステムによって提供されるサービスを呼び出すことを、一般的に「システムコール呼出」という。
【０００６】
システムコール呼出を利用する上述の操作の例としては、「ファイル操作（オープン、読み書き、クローズ等）」や「タスク間通信（ソケット操作）」や「ネットワーク通信」や「時刻情報の取得／設定」等が該当する。
【０００７】
システムコール呼出が実行されると、タスク中で通常行われる計算処理とは異なり、タスクとオペレーティングシステムとの間で「実行コンテキストの切り替え」という特徴的な処理が発生することになる。
【０００８】
そして、同一計算機上で動作する適切な権限を持つタスクは、そのような処理の発生を容易に検出することができるため、同一計算機上で動作する他のタスクのシステムコール呼出及び当該システムコール呼出に用いられた引数の内容を知り、かつ、それらの履歴を記録することが可能である。
【０００９】
例えば、代表的なマルチタスクオペレーティングシステムである「Ｌｉｎｕｘ」では「ｓｔｒａｃｅ」というプログラムを用いることで、上述の処理の発生を検出することができる。
【００１０】
前述のとおり、システムコール呼出は、タスク間通信手段としても用いられるため、その際に引数として渡されるデータを「ｓｔｒａｃｅ」等により観察されてしまうと、かかるタスク間通信における通信内容に守秘性の必要な場合であっても、かかる通信内容が他者に知られてしまう可能性があるという問題点があった。
【００１１】
このような問題点を解決するための手段として、マルチタスクオペレーティングシステムにおいて、実行されたタスクの所有者の識別子に基づいてアクセス制御を行うアクセス権限管理機構が知られている。
【特許文献１】特開２００４-３８３９４号公報
【発明の開示】
【発明が解決しようとする課題】
【００１２】
しかしながら、従来のマルチタスクオペレーティングシステムでは、かかる所有者の識別子に基づくアクセス制御は、非常に粗粒度であるユーザやグループ等ごとに行なわれるため、柔軟性に乏しいという問題点があった。
【００１３】
また、従来のマルチタスクオペレーティングシステムでは、管理者権限という特別な権限を持ったタスクに対しては、いかなる制限も加えられないため、任意のタスクに対するシステムコール呼出の観察が行えてしまうという問題点があった。
【００１４】
また、従来のマルチタスクオペレーティングシステムにおいて、「ｓｔｒａｃｅ」等のプログラム自体をコンピュータから削除するという手段もあるが、コンピュータへの侵入に成功した攻撃者が同様のプログラムを改めてインストールするという可能性もあるため、かかる手段は完全な解決手段とはなり得ない。
【００１５】
なお、近年のコンピュータに関するセキュリティ侵害事件の大半は、管理者権限で動作するタスクが攻撃者によって乗っ取られることによって発生している。このような「管理者権限の奪取」という事象を完全に防ぐことは困難と考えられているため、このような事象が発生したとしても被害を最小限に食い止めることが可能なシステムというのは重要な課題と考えられる。
【００１６】
また、このような課題が存在するのは、あるタスクが他のタスクとの間でタスク間通信を行う際に、システムコール呼出という第三者のタスクにも容易に検出される虞の高い処理を行い、かつ、かかるタスク間通信における通信内容を表わすために用いられる引数を何の保護もなく平文のまま渡しているという状況が存在するからである。
【００１７】
そこで、本発明は、以上の点に鑑みてなされたもので、複数のタスクを同時並列的に実行することができる現代的なオペレーティングシステムにおいて、複数のタスクが柔軟かつ安全に協調動作を行う環境を実現するためのマルチタスク実行システム及びマルチタスク実行方法を提供することを目的とする。
【課題を解決するための手段】
【００１８】
本発明の第１の特徴は、タスクからの鍵要求システムコールに応じて鍵を生成して前記タスクに対して付与するように構成されている鍵生成付与機能と、生成された前記鍵を記憶するように構成されている鍵記憶機能と、前記タスクによって前記鍵を用いて暗号化されているシステムコールの暗号化対象引数を、前記鍵記憶機能に記憶されている該鍵を用いて復号するように構成されている復号機能と、復号した前記暗号化対象引数を用いて前記システムコールを実行するように構成されているシステムコール処理機能とを具備することを要旨とする。
【００１９】
かかる発明によれば、タスクが、鍵生成付与機能によって付与された鍵を用いてシステムコールの暗号化対象引数を暗号化し、オペレーティングシステムに設けられた復号機能が、鍵記憶機能に記憶されている鍵を用いて当該暗号化対象引数を復号するため、管理者権限の下で動作するタスクが、かかるシステムコール呼出を観察して通信内容を自由に知ることを回避することができる。
【００２０】
また、かかる発明によれば、システムコール呼出における通信内容を知らせてよいタスクにのみ当該システムコールを実行するタスクの鍵を知らせることによって柔軟なアクセス制御を行うことができる。
【００２１】
本発明の第１の特徴において、前記鍵生成付与機能が、前記マルチタスク実行システム内で前記鍵を一意に識別するための鍵ＩＤを前記タスクに対して付与するように構成されており、前記鍵記憶機能が、前記鍵と前記鍵ＩＤとを関連付けて記憶するように構成されており、前記タスクが、前記システムコールの第１の引数として前記鍵ＩＤを設定すると共に、前記鍵ＩＤによって識別される鍵を用いて前記暗号化対象引数を暗号化するように構成されており、前記復号機能が、前記第１の引数として設定されている前記鍵ＩＤによって識別される前記鍵を用いて前記暗号化対象引数を復号するように構成されていてもよい。
【００２２】
本発明の第１の特徴において、前記鍵生成付与機能が、前記鍵として、共通鍵暗号アルゴリズムで用いられる共通鍵を生成するように構成されていてもよい。また、本発明の第１の特徴において、前記鍵生成付与機能が、前記鍵として、公開鍵暗号アルゴリズムで用いられる公開鍵及び秘密鍵のペアを生成するように構成されていてもよい。
【００２３】
本発明の第１の特徴において、前記鍵生成付与機能が、経過時間及び暗号化した前記暗号化対象引数のデータ量に基づいて、前記鍵を更新するように構成されていてもよい。また、本発明の第１の特徴において、前記鍵生成付与機能が、前記鍵の用途を指定するように構成されていてもよい。
【００２４】
本発明の第２の特徴は、送信側タスクからの鍵要求システムコールに応じて鍵を生成して前記送信側タスクに対して付与し、受信側タスクからの鍵要求システムコールに応じて前記鍵を前記受信側タスクに対して付与するように構成されている鍵生成付与機能と、前記受信側タスクからのシステムコールに応じて、前記送信側タスクによって前記鍵を用いて暗号化されているシステムコールの暗号化対象引数を復号することなく、前記受信側タスクに対して送信するように構成されているシステムコール処理機能とを具備し、前記受信側タスクが、前記鍵を用いて前記暗号化対象引数を復号するように構成されていることを要旨とする。
【００２５】
本発明の第３の特徴は、タスクからの鍵要求システムコールに応じて鍵を生成して前記タスクに対して付与する工程と、生成された前記鍵を記憶する工程と、前記タスクによって前記鍵を用いて暗号化されているシステムコールの暗号化対象引数を、前記鍵記憶機能に記憶されている該鍵を用いて復号する工程と、復号した前記暗号化対象引数を用いて前記システムコールを実行する工程とを有することを要旨とする。
【発明の効果】
【００２６】
以上説明したように、本発明によれば、複数のタスクを同時並列的に実行することができる現代的なオペレーティングシステムにおいて、複数のタスクが柔軟かつ安全に協調動作を行う環境を実現するためのマルチタスク実行システム及びマルチタスク実行方法を提供することができる。
【発明を実施するための最良の形態】
【００２７】
（本発明の第１の実施形態に係るマルチタスク実行システムの構成）
図１乃至図４を参照して、本発明の第１の実施形態に係るマルチタスク実行システムの構成について説明する。
【００２８】
図１に示すように、本実施形態に係るマルチタスク実行システム１は、オペレーティングシステム１０１と、当該オペレーティングシステム１０１の管理下で動作しており本発明が適用されているタスク２０１-１乃至２０１-３等（以下、特定タスク２０１-Ｘ）とによって構成されている。
【００２９】
オペレーティングシステム１０１は、システムコール処理機能１０２と、擬似乱数生成機能１０３と、鍵生成付与機能１０４と、鍵記憶機能１０５と、暗号化・復号機能１０６とを具備している。
【００３０】
システムコール処理機能１０２は、特定タスク２０１-Ｘによって呼び出されたシステムコールを実行するように構成されている。
【００３１】
例えば、システムコール処理機能１０２は、特定タスク２０１-Ｘによって呼び出された鍵要求システムコールを受信した場合、鍵生成付与機能１０４に対して、当該特定タスク２０１-Ｘ用の鍵を生成して当該特定タスク２０１-Ｘに対して付与するように指示することができる。
【００３２】
また、システムコール処理機能１０２は、特定タスク２０１-Ｘによって呼び出されたシステムコールに、特定タスク２０１-Ｘ用の鍵によって暗号化されている暗号化対象引数が含まれている場合、暗号化・復号機能１０６に対して、当該暗号化対象引数を復号するように指示することができる。かかる場合、システムコール処理機能１０２は、暗号化・復号機能１０６によって復号されたシステムコールの暗号化対象引数を用いて、システムコールを実行するように構成されている。
【００３３】
また、システムコール処理機能１０２は、システムコールの実行結果に基づいて、当該システムコールを呼び出した特定タスク２０１-Ｘにデータを提供する必要がある場合、暗号化・復号機能１０６に対して、かかるデータを暗号化するように指示することができる。かかる場合、特定タスク２０１-Ｘが、オペレーティングシステム１０１から提供された当該データを、当該特定のタスク用の鍵によって復号するように構成されている。
【００３４】
擬似乱数生成機能１０３は、鍵生成付与機能１０４が鍵を生成する際に用いる擬似乱数を生成するように構成されている。具体的には、図２に示すように、擬似乱数生成機能１０３は、キー入力やマウス入力や各種割込や熱雑音や乱数生成ハードウェア等のエントロピー源を元データとして、暗号学的に強い擬似乱数（乱数ビット列）を生成するように構成されている。
【００３５】
鍵生成付与機能１０４は、特定タスク２０１-Ｘからの鍵要求システムコールに応じて、当該特定タスク２０１-Ｘ用の鍵を生成して当該特定タスク２０１-ＸＣに対して付与するように構成されている。
【００３６】
具体的には、図２に示すように、鍵生成付与機能１０４は、擬似乱数生成機能１０３によって生成された擬似乱数に基づいて、特定タスク２０１-Ｘ用の鍵及び当該鍵をマルチタスク実行システム１内で一意に識別可能な鍵ＩＤを生成するように構成されている。
【００３７】
ここで、鍵生成付与機能１０４は、当該特定タスク２０１-Ｘ用の鍵として、共通鍵暗号アルゴリズムで用いられる共通鍵を生成するように構成されていてもよいし、公開鍵暗号アルゴリズムで用いられる公開鍵及び秘密鍵のペアを生成するように構成されていてもよい。
【００３８】
また、鍵ＩＤは、上述のとおり、マルチタスク実行システム１内でユニークな値（例えば、鍵生成付与機能１０４によって鍵が生成される毎に「０」から１ずつ順番に増加していく値等）であれば、任意のものでよい。
【００３９】
鍵生成付与機能１０４は、生成した鍵（共通鍵又は公開鍵及び秘密鍵のペア）と当該鍵を識別する鍵ＩＤとを、鍵記憶機能１０５及び特定タスク２０１-Ｘのメモリ空間上に設けられている鍵情報記憶領域２０２-Ｘに提供するように構成されている。
【００４０】
また、鍵生成付与機能１０４は、経過時間及び暗号化した暗号化対象引数のデータ量に基づいて、特定タスク２０１-Ｘ用の鍵を自動的に更新するように構成されていてもよい。具体的には、鍵生成付与機能１０４は、当該経過時間及び当該データ量のいずれかが予め定められた閾値を越えたときに、特定タスク２０１-Ｘ用の鍵の更新処理を行う。
【００４１】
また、鍵生成付与機能１０４は、特定タスク２０１-Ｘ用の鍵の用途を指定するように構成されていてもよい。
【００４２】
鍵記憶機能１０５は、鍵生成付与機能１０４から提供された鍵（共通鍵又は公開鍵及び秘密鍵のペア）と当該鍵を識別する鍵ＩＤとを関連付けて記憶するように構成されている。
【００４３】
具体的には、鍵記憶機能１０５は、図３に示すように、「鍵ＩＤ」と、「鍵」と、「用途」と、「生成時間」と、「データ量」とを関連付けて記憶するように構成されている。
【００４４】
ここで、「用途」は、当該鍵を用いることができる用途を示すものである。例えば、「用途」としては、ｘｘｘシステムコールに用いることや、タスクＸとの通信に用いること等が考えられる。
【００４５】
「生成時間」は、当該鍵が生成された時刻、又は、当該鍵が生成されてからの経過時間を示すものである。「データ量」は、当該鍵を用いて暗号化した暗号化対象引数のデータ量（すなわち、当該鍵を用いて処理されたデータ量）を示すものである。
【００４６】
図３の例では、鍵ＩＤ＝３によって識別される鍵は、ｘｘｘシステムコールで用いるための共通鍵であり、鍵ＩＤ＝５によって識別される鍵は、ｙｙｙシステムコールで用いるための公開鍵及び秘密鍵のペアであり、鍵ＩＤ＝３３によって識別される鍵は、タスクＸとの通信で用いるための共通鍵である。
【００４７】
暗号化・復号機能１０６は、システムコール処理機能１０２からの指示に応じて、特定タスク２０１-Ｘ用の鍵で暗号化されているシステムコールの暗号化対象引数を、鍵記憶機能１０５に記憶されている当該特定タスク２０１-Ｘ用の鍵を用いて復号するように構成されている。
【００４８】
具体的には、暗号化・復号機能１０６は、システムコールの第１の引数として設定されている鍵ＩＤによって識別される鍵を用いて、当該システムコールの暗号化対象引数を復号するように構成されている。
【００４９】
また、暗号化・復号機能１０６は、システムコール処理機能１０２からの指示に応じて、特定タスク２０１-Ｘに提供されるべきデータを、特定タスク２０１-Ｘ用の鍵で暗号化するように構成されている。
【００５０】
特定タスク２０１-Ｘは、オペレーティングシステム１０１に対して、システムコール（鍵要求システムコールを含む）を呼び出すように構成されている。
【００５１】
また、特定タスク２０１-Ｘは、システムコールを呼び出すにあたって、当該システムコールの第１の引数として、当該システムコール用の鍵として当該特定タスク２０１-Ｘに付与されている鍵を識別するための鍵ＩＤを設定すると共に、当該鍵を用いて暗号化対象引数を暗号化するように構成されている。特定タスク２０１-Ｘは、どの引数を暗号化対象引数とするかについて、任意の規則に基づいて決定することができる。
【００５２】
また、特定タスク２０１-Ｘは、他のタスクから読み出すことができないように構成されている鍵情報記憶領域２０２-Ｘを、当該特定タスクのメモリ空間上に設けている。特定タスク２０１-Ｘは、オペレーティングシステム１０１によって付与された特定タスク用の鍵を鍵情報記憶領域２０２-Ｘ内に保存するように構成されている。
【００５３】
オペレーティングシステム１０１の保護範囲外に存在する特定タスク２０１-Ｘのメモリ空間上に、このような重要データを安全に保管するための方式としては、例えば、特願２００３-６５６８５号「マルチタスク実行システム及びマルチタスク実行方法」で開示されている保持タスク以外からのメモリへのアクセスを防止する技術等が利用可能である。
【００５４】
鍵情報記憶領域２０２-Ｘは、図４に示すように、「鍵ＩＤ」と、「鍵」と、「用途」とを関連付けて記憶するように構成されている。
【００５５】
（本発明の第１の実施形態に係るマルチタスク実行システムの動作）
図５乃至図７を参照して、本発明の第１の実施形態に係るマルチタスク実行システムの動作について説明する。
【００５６】
第１に、図５を参照して、本実施形態に係るマルチタスク実行システム１において、特定タスク２０１-Ｘによって鍵要求システムコールが呼び出された場合の動作について説明する。
【００５７】
特定タスク２０１-Ｘによって鍵要求システムコールが呼び出された場合、ステップＳ１０１において、オペレーティングシステム１０１のシステムコール処理機能１０２は、システムコール処理機能１０２からの指示に応じて、当該鍵要求システムコールを呼び出した特定タスク（発行元タスク）２０１-Ｘが、鍵情報記憶領域２０２-Ｘを所有しているか否かについて判断する。
【００５８】
特定タスク２０１-Ｘが鍵情報記憶領域２０２-Ｘを所有していないと判断された場合（すなわち、鍵情報記憶領域２０２-Ｘが存在しないと判断された場合）、本動作はステップＳ１０２に進み、特定タスク２０１-Ｘが鍵情報記憶領域２０２-Ｘを所有していると判断された場合、本動作はステップＳ１０３に進む。
【００５９】
ステップＳ１０２において、システムコール処理機能１０２は、特定タスク２０１-Ｘのメモリ空間上に、鍵情報記憶領域２０２-Ｘを新たに割り当てる処理を行う。
【００６０】
ステップＳ１０３において、システムコール処理機能１０２は、特定タスク２０１-Ｘが、鍵情報記憶領域２０２-Ｘのサイズが特定タスク２０１-Ｘ用の鍵及び鍵ＩＤを保存するのに十分なサイズであるか否かについて判断する。
【００６１】
十分なサイズでないと判断された場合、本動作はステップＳ１０４に進み、十分なサイズであると判断された場合、本動作はステップＳ１０５に進む。
【００６２】
ステップＳ１０４において、システムコール処理機能１０２は、特定タスク２０１-Ｘに割り当てられている鍵情報記憶領域２０２-Ｘを増加させる処理を行う。
【００６３】
その後、鍵生成付与機能１０４は、ステップＳ１０５において、特定タスク２０１-Ｘ用の鍵及び当該鍵を一意に識別するための鍵ＩＤを生成し、ステップＳ１０６において、生成した鍵及び鍵ＩＤを鍵情報記憶領域２０２-Ｘに保存し、ステップＳ１０７において、生成した鍵及び鍵ＩＤを鍵記憶機能１０５に保存する。
【００６４】
ステップＳ１０８において、システムコール処理機能１０２は、鍵要求システムコールの返り値として、生成した鍵ＩＤを特定タスク２０１-Ｘに返信する。ここで、鍵ＩＤは、オペレーティングシステム１０１によって生成されるデータであり、セキュリティ的に特別の要求がないため、マルチタスク実行システム１上で一意となりさえすれば任意の値で構わない。
【００６５】
なお、一つの鍵で全ての操作が賄えるわけではないため、特定タスク２０１-Ｘは、鍵要求システムコールを呼び出すことによって鍵を得た後、鍵情報記憶領域２０２-Ｘに、当該鍵及び鍵ＩＤに加えて、当該鍵の用途も保存するように構成されていてもよい。
【００６６】
第２に、図６を参照して、本実施形態に係るマルチタスク実行システム１において、特定タスク２０１-Ｘがシステムコールを呼び出す動作について説明する。
【００６７】
ステップＳ２０１において、特定タスク２０１-Ｘは、呼び出そうとしているシステムコールの引数を保護する必要があるか否かについて任意の方法で判断する。保護する必要があると判断された場合、本動作はステップＳ２０２に進み、保護する必要がないと判断された場合、本動作はステップＳ２０８に進む。
【００６８】
なお、どのシステムコールを保護するか、すなわち、どのシステムコールを安全な形で実行するかは、マルチタスク実行システム１のポリシーに基づいて決定される。
【００６９】
ステップＳ２０２において、特定タスク２０１-Ｘは、鍵情報記録機能２０２-Ｘに、当該システムコールで用いるための鍵が保持されているか否かについて判断する。保持されていないと判断された場合、本動作はステップＳ２０３に進み、保持されていると判断された場合、本動作はステップＳ２０４に進む。
【００７０】
ステップＳ２０３において、特定タスク２０１-Ｘは、上述の鍵要求システムコールを呼び出すことによって、有効な当該システムコールで用いるための鍵を取得する。
【００７１】
その後、特定タスク２０１-Ｘは、ステップＳ２０４において、呼び出そうとしているシステムコールの第１引数として鍵ＩＤを設定し、ステップＳ２０５において、保護の必要な全ての引数に対して、当該鍵ＩＤによって識別される鍵（共通鍵若しくは公開鍵）を用いて暗号化処理を実施し、ステップＳ２０６において、かかる引数を含むシステムコールを呼び出す。
【００７２】
なお、どの引数を保護するかに関しては、システムコールの性質に応じて予めマルチタスク実行システム１で定められるポリシーに基づいて決定される。
【００７３】
オペレーティングシステム１０１において当該システムコールが実行された場合、所定データが特定タスク２０１-Ｘに提供されることがある。ここで、かかる所定データの保護が必要である場合、オペレーティングシステム１０１によって当該所定データは暗号化される。
【００７４】
かかる場合、ステップＳ２０７において、特定タスク２０１-Ｘは、システムコールから返信された所定データに対して、上述の鍵ＩＤによって識別される鍵を用いて復号する。
【００７５】
一方、ステップＳ２０８において、特定タスク２０１-Ｘは、直ちに、通常のシステムコール呼出処理を開始する。
【００７６】
第３に、図７を参照して、本実施形態に係るマルチタスク実行システム１において、オペレーティングシステム１０１が呼び出されたシステムコールを実行する動作を説明する。
【００７７】
ステップＳ３０１において、オペレーティングシステム１０１のシステムコール処理機能１０２は、呼び出されたシステムコールが引数保護を適用したものであるか否かについて判断する。
【００７８】
引数保護が適用されていると判断された場合、本動作はステップＳ３０２に進み、引数保護が適用されていないと判断された場合、本動作はステップＳ３０６に進む。
【００７９】
暗号化・復号機能１０６は、ステップＳ３０２において、第１引数に設定されている鍵ＩＤによって識別される鍵を鍵記憶機能１０５から取得し、ステップＳ３０３において、暗号化されている（すなわち、保護されている）全ての引数を当該鍵で復号する。
【００８０】
システムコール処理機能１０２は、ステップＳ３０４において、復号された引数を含むシステムコールを実行する。
【００８１】
特定タスク２０１-Ｘに提供すべきデータがある場合、ステップＳ３０５において、暗号化・復号機能１０６が、上述の鍵を用いて当該データを暗号化し、システムコール処理機能１０２が、暗号化されたデータを特定タスク２０１-Ｘに対して提供する。
【００８２】
一方、ステップＳ３０６において、システムコール処理機能１０２は、通常のシステムコール実行処理を行う。
【００８３】
（本発明の第１の実施形態に係るマルチタスク実行システムの作用・効果）
本発明の第１の実施形態に係るマルチタスク実行システム１によれば、特定タスク２０１-Ｘが、鍵生成付与機能１０４によって付与された鍵を用いてシステムコールの暗号化対象引数を暗号化し、オペレーティングシステム１０１に設けられた暗号化・復号機能１０６が、鍵記憶機能１０５に記憶されている鍵を用いて当該暗号化対象引数を復号するため、管理者権限の下で動作するタスクが、かかるシステムコール呼出を観察して通信内容を自由に知ることを回避することができる。
【００８４】
また、本発明の第１の実施形態に係るマルチタスク実行システム１によれば、システムコール呼出における通信内容を知らせてよいタスクにのみ当該システムコールを実行する特定タスク２０１-Ｘの鍵を知らせることによって柔軟なアクセス制御を行うことができる。
【００８５】
また、本発明の第１の実施形態に係るマルチタスク実行システム１によれば、Ｌｉｎｕｘにおける「ｓｔｒａｃｅ」のようなプログラム（システムコール実行監視ツール）が存在する環境であっても、当該システムコールにおける通信内容（引数）を観察者に知られることなく、当該システムコールを実行することができる。
【００８６】
また、本発明の第１の実施形態に係るマルチタスク実行システム１によれば、タスクの中で閉じた形で実行される処理を導入することによって、かかる処理を他のタスクが観察することが困難であるため、システムとしてのセキュリティレベルは向上すると考えられる。
【００８７】
（変更例１）
図８及び図９を参照して、本発明の変更例１に係るマルチタスク実行システム１について説明する。以下、本変更例１に係るマルチタスク実行システム１について、上述の第１の実施形態に係るマルチタスク実行システムとの相違点を主として説明する。
【００８８】
一般的なオペレーティングシステムでは、システムコールを用いて行われるタスク間通信は、様々な方法で提供される。例えば、マルチタスクオペレーティングシステムの典型例である「ＵＮＩＸ（登録商標）」では、タスク間通信は、パイプやソケットや共有メモリ等の機構を利用して提供される。
【００８９】
なお、本変更例では、「ＵＮＩＸ（登録商標）」が提供するパイプやソケットのように、ファイル操作で用いられるのと同じ「ｒｅａｄ」や「ｗｒｉｔｅ」のようなシステムコールを用いるタスク間通信を想定することとする。
【００９０】
かかるタスク間通信では、一方のタスクによる「ｗｒｉｔｅ」システムコールで書き込まれたデータは、他方のタスクによる「ｒｅａｄ」システムコールで読み込まれることになる。
【００９１】
上述の第１の実施形態を用いることによっても、かかるタスク間通信を安全に行うことは可能である。しかしながら、かかる場合、「ｒｅａｄ」システムコール及び「ｗｒｉｔｅ」システムコールのそれぞれを実施する度に、暗号化処理及び復号処理を実施することになるため、効率が悪くなる。
【００９２】
そこで、本変更例１に係るマルチタスク実行システム１は、上述のようなタスク間通信を、安全にかつ効率的に実現することを目的とする。
【００９３】
図８の例では、タスクＡ（２０１-１）とタスクＢ（２０１-Ｂ）との間で、「ｒｅａｄ」システムコール及び「ｗｒｉｔｅ」システムコールを用いたタスク間通信が行われることを想定している。
【００９４】
図８に示すように、本変更例１に係るマルチタスク実行システム１のオペレーティングシステム１０１は、システムコール処理機能１０２と、擬似乱数生成機能１０３と、鍵生成付与機能１０４とを具備している。すなわち、本変更例１に係るマルチタスク実行システム１のオペレーティングシステム１０１は、上述の第１の実施形態に係るマルチタスク実行システム１で具備されていた鍵記憶機能１０５及び暗号化・復号機能１０６を必要としない。
【００９５】
鍵生成付与機能１０３は、送信側タスク（例えば、タスクＡ）からの鍵要求システムコールに応じて、送信側タスク用の鍵を生成して送信側タスクに対して付与し、受信側タスク（例えば、タスクＢ）からの鍵要求システムコールに応じて、当該送信側タスク用の鍵を受信側タスクに対して付与するように構成されている。
【００９６】
システムコール処理機能１０２は、受信側タスクからのシステムコールに応じて、送信側タスクによって送信側タスク用の鍵を用いて暗号化されているシステムコールの暗号化対象引数を復号することなく、受信側タスクに対して送信するように構成されている。
【００９７】
受信側タスクは、オペレーティングシステム１０１から取得した送信側タスク用の鍵を用いて、受信側タスクからのシステムコールの暗号化対象引数（「ｒｅａｄ」システムコールによって取得しようとするデータ）を復号するように構成されている。
【００９８】
図９を参照して、本変更例１に係るマルチタスク実行システム１において、タスクＡとタスクＢとの間のタスク間通信を行う際のタスクＡの動作について説明する。なお、かかるタスク間通信では、タスクＢも同様の動作を行う。
【００９９】
図９に示すように、ステップＳ４０１において、タスクＡは、タスクＢとの間のタスク間通信用の鍵を保有しているか否かについて判断する。タスクＡが送信側タスク（「ｗｒｉｔｅ」システムコールを呼び出すタスク）である場合、かかるタスク間通信用の鍵は、タスクＡに対して付与されたタスク通信用の鍵ＫＡであり、タスクＡが受信側タスク（「ｒｅａｄ」システムコールを呼び出すタスク）である場合、かかるタスク間通信用の鍵は、タスクＢに対して付与されたタスク通信用の鍵ＫＢである。
【０１００】
ステップＳ４０２において、タスクＡは、鍵要求システムコールを呼び出すことによって、タスクＢとの間のタスク間通信用の鍵を取得する。この結果、タスクＡとタスクＢとの間で、タスク間通信で用いるための鍵が共有されることになる。
【０１０１】
ステップＳ４０３において、タスクＡは、「ｗｒｉｔｅ」システムコールを呼び出す予定であるか否かについて判断する。「ＹＥＳ」の場合、本動作はステップＳ４０６に進み、「ＮＯ」の場合、本動作はステップＳ４０４に進む。
【０１０２】
ステップＳ４０４において、タスクＡが、「ｒｅａｄ」システムコールを呼び出すと、オペレーティングシステム１０１が、タスク通信用の鍵ＫＢで「ｒｅａｄ」システムコールの対象データを暗号化してタスクＡに対して送信する。
【０１０３】
ステップＳ４０５において、タスクＡは、鍵要求システムコールを用いて取得したタスク通信用の鍵ＫＢで、オペレーティングシステム１０１からのシステムコールの引数を復号することによって、対象データを取得する。
【０１０４】
一方、タスクＡは、ステップＳ４０６において、通信内容である暗号化対象引数（「ｗｒｉｔｅ」システムコールの対象データ）を上述のタスク間通信用の鍵で暗号化した後に、ステップＳ４０７において、「ｗｒｉｔｅ」システムコールを呼び出す。
【０１０５】
本変更例に係るマルチタスク実行システム１によれば、タスク間通信における通信内容は、オペレーティングシステム１０１の介在により、暗号化されたままの状態でタスクＡ（送信側タスク）からタスクＢ（受信側タスク）に届けられるため、安全なタスク間通信を実現することができる。
【０１０６】
また、本変更例に係るマルチタスク実行システム１によれば、オペレーティングシステム１０１は、タスク間通信に係る通信内容に対して、暗号化・復号処理を行う必要がないため、効率的なタスク間通信を実現することができる。
【図面の簡単な説明】
【０１０７】
【図１】本発明の第１の実施形態に係るマルチタスク実行システムの全体構成図である。
【図２】本発明の第１の実施形態に係るマルチタスク実行システムにおける鍵の生成方法の一例を説明するための図である。
【図３】本発明の第１の実施形態に係るマルチタスク実行システムの鍵情報記憶機能における記憶内容の一例を示す図である。
【図４】本発明の第１の実施形態に係るマルチタスク実行システムのタスクにおける鍵情報記憶領域における記憶内容の一例を示す図である。
【図５】本発明の第１の実施形態に係るマルチタスク実行システムにおいて、タスクによって鍵要求システムコールが呼び出された場合の動作を示すフローチャートである。
【図６】本発明の第１の実施形態に係るマルチタスク実行システムにおいて、タスクがシステムコールを呼び出す動作を示すフローチャートである。
【図７】本発明の第１の実施形態に係るマルチタスク実行システムにおいて、オペレーションシステムが呼び出されたシステムコールを処理する動作を示すフローチャートである。
【図８】本発明の変更例１に係るマルチタスク実行システムの全体構成図である。
【図９】本発明の変更例１に係るマルチタスク実行システムの動作を示すフローチャートである。
【符号の説明】
【０１０８】
１…マルチタスク実行システム
１０１…オペレーティングシステム
１０２…システムコール処理機能
１０３…擬似乱数生成機能
１０４…鍵生成付与機能
１０５…鍵記憶機能
１０６…暗号化・復号機能
２０１…タスク
２０２…鍵情報記憶領域
【図１】
2006190051.tif 000003
【図２】
2006190051.tif 000004
【図３】
2006190051.tif 000005
【図４】
2006190051.tif 000006
【図５】
2006190051.tif 000007
【図６】
2006190051.tif 000008
【図７】
2006190051.tif 000009
【図８】
2006190051.tif 000010
【図９】
2006190051.tif 000011