(57)【要約】【課題】  マルチタスク環境を提供する現代的なオペレーティングシステムにおいて、各タスクの重要情報を、少ないメモリ資源で効率的に保護する。【解決手段】  本発明に係るマルチタスク実行システムは、複数のタスクよりも少ない数の鍵データと、各タスクを識別するためのタスクＩＤと、値が減少することなく増加し続けるように構成された単調増加カウンタからの各タスクの生成時の出力値とを用いて、各タスクにユニークな鍵ストリームを生成して、生成した当該鍵ストリームを用いて、各タスク用メモリ空間内の保護領域に記憶されるデータを暗号化する暗号化処理機能２０３を具備する。【選択図】  図３
2006018685.tif 000002
【特許請求の範囲】
【請求項１】
複数のタスクを並列に実行するマルチタスク実行システムであって、
前記複数のタスクよりも少ない数の鍵データと、各タスクを識別するためのタスクＩＤと、値が減少することなく増加し続けるように構成された単調増加カウンタからの各タスクの生成時の出力値とを用いて、各タスクにユニークな鍵ストリームを生成して、生成した該鍵ストリームを用いて、各タスク用メモリ空間内の保護領域に記憶されるデータを暗号化する暗号化処理機能を具備することを特徴とするマルチタスク実行システム。
【請求項２】
前記暗号化機能は、
前記タスクＩＤと前記出力値とを含むカウンタ値を、前記鍵データを用いた所定の暗号化方式で暗号化することによって前記鍵ストリームを生成する鍵ストリーム生成機能と、
前記保護領域に記憶されるデータを所定ブロックに分割するブロック化機能と、
生成した前記鍵ストリームのビット列と分割した前記所定ブロックのビット列との間で排他的論理和を算出し、算出した該排他的論理和を前記保護領域に格納する排他的論理和算出機能とを具備することを特徴とする請求項１に記載のマルチタスク実行システム。
【請求項３】
所定のタイミングで、前記保護領域に記憶されるデータを、前記鍵ストリームを用いて復号する復号処理機能を具備し、
前記暗号化処理機能は、前記復号処理機能によって復号された前記保護領域に記憶されるデータを、更新した前記鍵データを用いて生成された前記鍵ストリームを用いて暗号化することを特徴とする請求項１に記載のマルチタスク実行システム。
【請求項４】
前記復号処理機能は、有効期間を経過した前記鍵データを用いて生成された鍵ストリームを用いて、前記保護領域に記憶されるデータを復号し、
前記暗号化処理機能は、有効期間を経過した前記鍵データとは別の鍵データを用いて生成された前記鍵ストリームを用いて、前記復号処理機能によって復号された前記保護領域に記憶されるデータを暗号化することを特徴とする請求項３に記載のマルチタスク実行システム。
【請求項５】
前記単調増加カウンタからの出力値は、オペレーティングシステムによって提供される時刻値であり、
前記オペレーティングシステムにおいて、前記時刻値を過去に戻すような操作が禁止されるように構成されることを特徴とする請求項１に記載のマルチタスク実行システム。
【請求項６】
前記単調増加カウンタは、ハードウエアとして提供されることを特徴とする請求項１に記載のマルチタスク実行システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のタスクを並列に実行するマルチタスク実行システムに関する。
【背景技術】
【０００２】
近年、個人の使用するパーソナルコンピュータ（ＰＣ）から、電子商取引（ＥＣ）等のサービスを提供するサーバコンピュータ、さらにはスーパーコンピュータまで、事実上、あらゆる計算機が、マルチタスク環境を提供するものとなっている。ここで、マルチタスク環境とは、計算機が扱う処理の単位である『タスク』を複数個同時に実行させることを可能とする環境である。
【０００３】
近い将来には、携帯電話のような資源の限られたプラットフォームにおいても、かかるマルチタスク環境が実現されることが期待されている。
【０００４】
一般に、オペレーティングシステムは、仮想アドレッシングと呼ばれる技術を用いて、各タスクに対して独立したメモリ空間（各タスク用メモリ空間）を割り当てることで、タスク間の干渉を防ぐという機能を提供する。
【０００５】
しかしながら、プログラムのデバッグ等のように、あるタスクが他のタスク用メモリ空間にアクセスすることが必要となる場合が存在するため、各タスクは、完全に独立しているわけではない。
【０００６】
そのため、タスクを管理するために必要となるデータ等の重要情報は、各タスク用メモリ空間ではなく、オペレーティングシステムが自らのために割り当てたメモリ空間（オペレーティングシステム用メモリ空間）に置かれるのが一般的である。
【０００７】
しかしながら、オペレーティングシステム用メモリ空間は、各タスク用メモリ空間と比較すると、ページング（メモリ空間上のデータをハードディスク等の二次記憶装置に一時的に退避させることで、実装メモリ容量以上の大きさのメモリ空間を利用可能とする技術）を行うことが困難である等の柔軟性に欠けたものであり、そのような性質を持つオペレーティングシステム用メモリ領域に多くの情報を置くことは性能的な影響をもたらすことにも繋がりかねない。
【０００８】
かかる問題点を解決するために、安全に上述の重要情報を各タスク用メモリ空間に置く方法として現在最も有望とされている手法は、当該重要情報を暗号化することで、他のタスクからのアクセスを防止するというものである。
【０００９】
かかる手法の１つとして、例えば、特許文献１には、外部記憶及びメモリ上において、データ及びコードを暗号化した形で保存し、かかるデータ及びコードを中央演算装置（ＣＰＵ）内の物理的に安全な領域に置かれたキャッシュ領域に読み込む際に復号することで、他のタスクからの不正なアクセスを排除する技術が開示されている。
【００１０】
かかる技術では、暗号化されたデータ及びコードを復号するための鍵も同じく物理的に安全な領域内に置くことによって、他のタスクからの不正なアクセスを排除する。
【００１１】
また、かかる技術では、復号された平文データが、物理的に安全な領域に位置するキャッシュ領域のみに置かれており、ＣＰＵのキャッシュ・ライトバックによりメモリに書き戻される際に、自動的に暗号化されることで、機密性が確保される。
【００１２】
また、かかる手法の１つとして、特許文献２には、メモリ上のデータをキャッシュに読み出す際に復号処理を行い、キャッシュに書き込む際に暗号化処理を行うことに加えて、「コンテクスト切り替え」と呼ばれるオペレーティングシステムの一機能の実施時に、実行レジスタ等のタスクの固有情報をも暗号化することで、デバッガを利用した攻撃をも未然に防ぐ技術が開示されている。
【００１３】
しかしながら、上述の従来技術は、基本的に、タスク毎に異なる暗号化鍵を用いて暗号化処理を行う必要があるため、同時に稼動し得るタスク数と同じ個数の鍵を保持するメモリ領域が必要となる。
【００１４】
さらに、上述の従来技術では、暗号化アルゴリズムとして、高速実行可能な共通鍵暗号化アルゴリズムが用いられるが、共通鍵暗号化アルゴリズムとして一般的な「ＣＢＣ（Ｃｉｐｈｅｒ  Ｂｌｏｃｋ  Ｃｈａｉｎｉｎｇ）モード」を利用する場合、「ＩＶ（Ｉｎｉｔｉａｌｉｚａｔｉｏｎ  Ｖｅｃｔｏｒ）」と呼ばれるデータが必要となる。
【００１５】
しかしながら、暗号技術における最近の研究の結果、「ＩＶ」というデータにも予測不能性が求められることが指摘されているため（例えば、非特許文献１参照）、このような暗号化アルゴリズムを安全に利用するには、さらに多くのメモリ領域が要求される。
【００１６】
このようなメモリに対する要求は、昨今のＰＣやサーバコンピュータやスーパーコンピュータ等のように十分なメモリ資源を持つプラットフォームでは問題ないとしても、ＰＤＡや携帯電話等のようにメモリ資源の限定されたプラットフォームでは大きな問題となり得る。
【００１７】
かかる問題点を解決するために、特許文献３には、マイクロプロセッサのリセット処理時に乱数データとして生成される単一の鍵を用いて、コンテキストデータの暗号化処理を行うことで、当該コンテキストデータを保護するという技術が開示されている。
【特許文献１】米国特許第５,２２４,１６６号明細書
【特許文献２】特開２００１-３１８７８７号公報
【特許文献３】特開２００１-５１８１９号公報
【非特許文献１】「ＳＰ  ８００-３８Ａ  Ｒｅｃｏｍｍｅｎｄａｔｉｏｎ  ｆｏｒ  Ｂｌｏｃｋ  Ｃｉｐｈｅｒ  Ｍｏｄｅｓ  ｏｆ  Ｏｐｅｒａｔｉｏｎ  −  Ｍｅｔｈｏｄｓ  ａｎｄ  Ｔｅｃｈｎｉｑｕｅ」、米商務省技術標準局、２００１年１２月
【発明の開示】
【発明が解決しようとする課題】
【００１８】
しかしながら、特許文献３に開示されている技術のように、個々のタスク中の重要情報を保護する手段として、単純に単一鍵を用いて暗号化処理を行うという方式には、次に述べるような欠点があり、一般的なマルチタスク環境では安全ではあり得ないという問題点があった。
【００１９】
すなわち、単一鍵を用いた暗号化処理によってタスク上の重要情報を保護した場合、図１１（ａ）及び（ｂ）に示すように、攻撃者は、２つのタスクＢ及びＣを用いて、以下のような操作を行うことで、攻撃対象のタスクＡの重要情報を読み出すことができる。
【００２０】
第１に、実行中であるタスクＢは、オペレーティングシステムが提供するインターフェースによって、タスクＡ及びタスクＣの実行を停止する。
【００２１】
第２に、タスクＢは、タスクＡの重要情報を記憶している保護領域（この時点では、オペレーティングシステムにより暗号化処理済みである）を、タスクＣの保護領域（同じく、この時点では、オペレーティングシステムにより暗号化処理済みである）に複写する（図１１（ａ）参照）。
【００２２】
第３に、タスクＢは、タスクＣの実行を再開して、タスクＣ自身に保護領域に記憶されている重要情報を出力させる（図１１（ｂ）参照）。かかる操作は、タスクＣの下で実行されるため、保護領域に記憶されている重要情報は、オペレーティングシステムにより復号され、結果として、タスクＡの重要情報が出力されることになる。
【００２３】
そこで、本発明は、以上の点に鑑みてなされたもので、マルチタスク環境を提供する現代的なオペレーティングシステムにおいて、各タスクの重要情報を、少ないメモリ資源で効率的に保護することができるマルチタスク実行システムを提供することを目的とする。
【課題を解決するための手段】
【００２４】
本発明の第１の特徴は、複数のタスクを並列に実行するマルチタスク実行システムであって、前記複数のタスクよりも少ない数の鍵データと、各タスクを識別するためのタスクＩＤと、値が減少することなく増加し続けるように構成された単調増加カウンタからの各タスクの生成時の出力値とを用いて、各タスクにユニークな鍵ストリームを生成して、生成した該鍵ストリームを用いて、各タスク用メモリ空間内の保護領域に記憶されるデータを暗号化する暗号化処理機能を具備することを要旨とする。
【００２５】
かかる発明によれば、複数のタスクよりも少ない数の鍵データを用いて、各タスクにユニークな鍵ストリームを生成することができるため、特定のタスクの重要情報が他のタスクに複写されたとしても、複写先のタスク上では、かかる重要情報が正しく復号されず、各タスクの重要情報を少ないメモリ資源で効率的に保護することができる。
【００２６】
本発明の第１の特徴において、前記暗号化機能が、前記タスクＩＤと前記出力値とを含むカウンタ値を、前記鍵データを用いた所定の暗号化方式で暗号化することによって前記鍵ストリームを生成する鍵ストリーム生成機能と、前記保護領域に記憶されるデータを所定ブロックに分割するブロック化機能と、生成した前記鍵ストリームのビット列と分割した前記所定ブロックのビット列との間で排他的論理和を算出し、算出した該排他的論理和を前記保護領域に格納する排他的論理和算出機能とを具備するように構成されていてもよい。
【００２７】
本発明の第１の特徴において、所定のタイミングで、前記保護領域に記憶されるデータを、前記鍵ストリームを用いて復号する復号処理機能を具備し、前記暗号化処理機能が、前記復号処理機能によって復号された前記保護領域に記憶されるデータを、更新した前記鍵データを用いて生成された前記鍵ストリームを用いて暗号化するように構成されていてもよい。
【００２８】
本発明の第１の特徴において、前記復号処理機能が、有効期間を経過した前記鍵データを用いて生成された鍵ストリームを用いて、前記保護領域に記憶されるデータを復号し、前記暗号化処理機能が、有効期間を経過した前記鍵データとは別の鍵データを用いて生成された前記鍵ストリームを用いて、前記復号処理機能によって復号された前記保護領域に記憶されるデータを暗号化するように構成されていてもよい。
【００２９】
本発明の第１の特徴において、前記単調増加カウンタからの出力値が、オペレーティングシステムによって提供される時刻値であり、前記オペレーティングシステムにおいて、前記時刻値を過去に戻すような操作が禁止されるように構成されていてもよい。
【００３０】
本発明の第１の特徴において、前記単調増加カウンタが、ハードウエアとして提供されていてもよい。
【発明の効果】
【００３１】
以上説明したように、本発明によれば、マルチタスク環境を提供する現代的なオペレーティングシステムにおいて、各タスクの重要情報を、少ないメモリ資源で効率的に保護することができるマルチタスク実行システムを提供することができる。
【発明を実施するための最良の形態】
【００３２】
（本発明の第１の実施形態に係るマルチタスク実行システム）
図１乃至図５を参照して、本発明の第１の実施形態に係るマルチタスク実行システムについて説明する。
【００３３】
本実施形態に係るマルチタスク実行システムは、複数のタスクを並列に実行することができる現代的なオペレーティングシステム（ＯＳ）において実装されるものであり、メモリ資源の限定された計算環境においても、各タスクの重要情報に対する保護を提供可能とするように構成されている。
【００３４】
図１は、本実施形態に係るマルチタスク実行システムが、オペレーティングシステム用メモリ空間にロードされた状態を示す。
【００３５】
図１に示すように、本実施形態に係るマルチタスク実行システムは、鍵生成機能２０１と、鍵記憶機能２０２と、単調増加カウンタ機能２０３と、タスク情報記憶機能２０４と、暗号化/復号処理機能２０５とを具備している。
【００３６】
鍵生成機能２０１は、各タスクの保護領域内に記憶されるデータ（重要情報）を暗号化するための単一の鍵データを生成するものである。
【００３７】
例えば、鍵生成機能２０１は、ハードウエア的な乱数発生器等の安全な擬似乱数生成機能を用いて、攻撃者によって予測できない鍵データ（利用アルゴリズムによって異なるが、一般的には１２８ビット〜２５６ビット程度）を生成する。
【００３８】
また、鍵生成機能２０１は、所定のタイミングで（例えば、システム起動時や鍵データ生成時から所定期間経過後等に）、上述の鍵データを更新するように構成されている。
【００３９】
鍵記憶機能２０２は、鍵生成機能２０１によって生成された単一の鍵データを保持して利用状況を管理するものである。
【００４０】
単調増加カウンタ機能２０３は、値が減少されることなく増加し続けるように設定されたカウンタである。
【００４１】
また、単調増加カウンタ機能２０３からの出力値が、オペレーティングシステムによって提供される時刻値であるように構成されていてもよい。かかる場合、オペレーティングシステムの時刻合わせ機能において、かかる時刻値を過去に戻すような操作が禁止されるように構成されていることが必要である。
【００４２】
したがって、オペレーティングシステムの時刻合わせ機能において、時刻値を過去に戻す方向に時刻合わせを行う必要がある場合は、時刻値そのものを変更するのではなく、時刻間隔を調整することで、漸近的に時刻合わせを行うような仕組みを取る必要がある。
【００４３】
また、単調増加カウンタ機能２０３は、オペレーティングシステム内に実装されるものに限らず、ハードウエアとして提供されるように構成されていてもよい。
【００４４】
なお、単調増加カウンタ機能２０３における単調増加カウンタ値の増加間隔は、後述のように、攻撃者による攻撃が成功しない条件を満たすように維持される。
【００４５】
タスク情報記憶機能２０４は、各タスクを識別するためのタスクＩＤと、各タスクの生成時の単調増加カウンタ機能２０３からの出力値（単調増加カウンタ値）とを関連付けて記録するものである。
【００４６】
暗号化/復号処理機能２０５は、適切なタイミングで、同時に稼働している複数のタスクよりも少ない数の鍵データと、タスクＩＤと、各タスクの生成時の単調増加カウンタ値とを用いて、各タスクにユニークな鍵ストリームを生成して、生成した当該鍵ストリームを用いて、各タスク用メモリ空間内の保護領域に記憶されるデータを暗号化するものである。
【００４７】
本実施形態において、暗号化/復号処理機能２０５は、１つのタスク用メモリ空間内の保護領域内に暗号化されて記憶されている重要情報が他のタスク用メモリ空間内の保護領域に複写された場合に、両保護領域における暗号化処理に利用される鍵データが同一であったとしても、複写先のタスクによって正しく復号されないという性質を実現するために、暗号化方式として、上述の非特許文献１等で開示されているブロック暗号のＣＴＲ（Ｃｏｕｎｔｅｒ）モードを利用している。
【００４８】
かかるＣＴＲモードは、近年になって提唱されているブロック暗号の操作モードの一種である。図２を参照して、かかるＣＴＲモードについて簡単に説明する。
【００４９】
図２に示すように、第１に、ＣＴＲモードでは、決して同一の値を取らないように維持されるカウンタ値３０１が、利用する暗号化アルゴリズムに応じた暗号化処理器３０２に入力される。
【００５０】
第２に、暗号化処理器３０２によって暗号化された各カウンタ値（鍵ストリーム）の各ビットと、平文データを構成する各ブロックの各ビットとの間の排他的論理和を算出することによって、当該平文データの暗号化が行われる。
【００５１】
なお、ＣＴＲモードでは、鍵ストリームの各ビットと、暗号文データを構成する各ブロックの各ビットとの間の排他的論理和を算出することによって、当該暗号化データを復号することができる。
【００５２】
図２の例では、カウンタ値３０１の上位部分を固定値とし、カウンタ値３０１の下位部分を変動値Ｘとしている。なお、変動値Ｘは、各ブロックに対応して、０から順番に１ずつ増加するような値である。
【００５３】
ここで、カウンタ値３０１は、対応するブロック毎に重複しないことが保証されるのであれば、下位部分に関してはどのような変動値を用いてもよい。
【００５４】
なお、利用する暗号化アルゴリズムが十分安全なものであり、カウンタ値３０１を暗号化した鍵ストリームがランダムとみなせるならば、ＣＴＲモードによる暗号化結果は、同じ鍵データを利用した場合であっても、カウンタ値の初期値が完全に一致していない限り、全く異なったものとなる。
【００５５】
かかるＣＴＲモードを利用した暗号化/復号処理機能２０５の構成を、図３に示す。図３に示すように、かかる暗号化/復号処理機能２０５は、鍵ストリーム生成機能２０５ａと、ブロック化機能２０５ｂと、ＸＯＲ算出機能２０５ｃとを具備している。
【００５６】
鍵ストリーム生成機能２０５ａは、タスクＩＤと当該タスク生成時の単調増加カウンタ値とを含むカウンタ値３０１を、鍵データを用いた所定の暗号化方式で暗号化することによって鍵ストリームを生成するものである。
【００５７】
具体的には、鍵ストリーム生成機能２０５ａは、上述のＣＴＲモードのカウンタ値３０１における固定値として、タスクＩＤ及び当該タスク生成時の単調増加カウンタ値を用いる。
【００５８】
ここで用いられる固定値が、システムで生成される可能性のある全てのタスクに関して異なる値となるように運用できるのであれば、特定のタスク用メモリ空間内の保護領域内に暗号化されて記憶されている重要情報を、他のタスク用メモリ空間内の保護領域に複写しても、他のタスクが当該重要情報を正しく復号することは不可能とすることができる。
【００５９】
上述のように運用することができる条件は、複数のタスクに関して、タスクＩＤ及び当該タスク生成時の単調増加カウンタ値の両方が、一致することはないということである。
【００６０】
一般に、タスクＩＤとしては、固定サイズの値が用いられるため、多数のタスクの生成及び消滅が繰り返されて行くうちに、特定のタスクＩＤは、異なるタスクに使い回されるという性質を持つ。
【００６１】
したがって、上述の条件を満たすには、単調増加カウンタ値が同じ値を示している間に、同一のタスクＩＤが２回以上使われることがないようになっていれば良いことが分かる。
【００６２】
例えば、ＵＮＩＸ（登録商標）系オペレーティングシステムとしての一般的な構成である「１５ビット整数（最大３２７６８）のタスクＩＤ」及び「１０ミリ秒毎に更新される時刻値である単調増加カウンタ値」を仮定した場合、攻撃者が、システムに対して同一のＣＴＲモードのカウンタ値における固定値を、複数のタスクに対して割り当てるように仕向けるためには、単調増加カウンタ値が同一の値を維持している１０ミリ秒の間に、３０,０００個程度のタスクを生成又は消滅させる必要がある。
【００６３】
すなわち、かかる条件を満たさない限り、攻撃者による攻撃は成功しないことを意味している。
【００６４】
一般に、タスクの生成及び消滅には、オペレーティングシステムの介在が必要とされるため、十分な回数のタスク生成処理及び消滅処理をそのように高速に実行することは、現在の一般的なハードウエア環境ではほぼ不可能である。
【００６５】
ブロック化機能２０５ｂは、保護領域に記憶されるデータ（平文データ又は暗号化文データ）を所定ブロックに分割するものである。
【００６６】
ＸＯＲ算出機能２０５ｃは、生成した鍵ストリームのビット列と分割した所定ブロックのビット列との間で排他的論理和（ＸＯＲ）を算出し、算出した当該排他的論理和を保護領域に格納するものである。
【００６７】
また、暗号化/復号処理機能２０５は、所定のタイミングで（例えば、鍵データが更新された場合等に）、全てのタスク用メモリ空間内の保護領域に記憶されているデータを、上述の鍵ストリームを用いて復号するように構成されている。
【００６８】
かかる場合、暗号化/復号処理機能２０５は、上述のように復号された保護領域に記憶されるデータを、更新された鍵データを用いて生成された鍵ストリームを用いて再び暗号化するように構成されている。
【００６９】
次に、図４及び図５を参照して、本実施形態に係るマルチタスク実行システムの動作について説明する。
【００７０】
第１に、図４を参照して、本実施形態に係るマルチタスク実行システムにおいて、各タスク用メモリ空間内の保護領域に記憶されるデータを暗号化する動作について説明する。
【００７１】
図４に示すように、ステップＳ１０１において、オペレーティングシステムが、新しいタスクを生成して、当該タスクに対してタスク用メモリ空間を割り当てる。ここで、タスク情報記憶機能２０４は、当該タスク用メモリ空間内の保護領域に係る情報や、タスクＩＤや、当該タスク生成時の単調増加カウンタ機能２０３からの出力値（単調増加カウンタ値）を記憶する。
【００７２】
ステップＳ１０２において、暗号化/復号処理機能２０５の鍵ストリーム生成機能２０５ａは、タスク情報記憶機能２０４に記憶されているタスクＩＤと当該タスク生成時の単調増加カウンタ値と変動値Ｘとから構成されるカウンタ値３０１を生成する。
【００７３】
そして、鍵ストリーム生成機能２０５ａは、鍵記憶機能２０２に記憶されている鍵データを用いて、所定の暗号化方式で、カウンタ値３０１を暗号化することによって、鍵ストリームを生成する。
【００７４】
ここで、鍵ストリーム生成機能２０５ａは、変動値Ｘを０から順番に１ずつ増加させることによって、上述の保護領域に記憶されるデータ（平文データ）を分割した所定のブロックの数に対応する長さの鍵ストリームを生成する。
【００７５】
ステップＳ１０３において、ＸＯＲ算出機能２０５ｃは、鍵ストリームのビット列と平文データのビット列との間で排他的論理和を算出して、算出した排他的論理和を暗号化データとして保護領域に格納する。
【００７６】
第２に、図５を参照して、本実施形態に係るマルチタスク実行システムにおいて、鍵データを更新する動作について説明する。
【００７７】
一般的に、比較的短期間（１日以内程度）でシステムの再起動が行なわれるような運用環境では、単一鍵が更新されること無く利用され続けていても安全性は損なわれない。
【００７８】
かかる場合、鍵記憶機能２０２は、システム立ち上げ時や最初に鍵データが必要となった時点で、鍵生成機能２０１によって生成される鍵データを記憶するという機能のみを持てばよい。
【００７９】
しかしながら、サーバコンピュータのように長期間連続運転が行われる運用環境では、単一鍵が更新されること無く利用され続けることは、著しい安全性の低下をもたらす可能性があるため、適切なタイミングで、利用する鍵データの更新処理を行うことが必要となる。
【００８０】
したがって、ステップＳ２０１において、暗号化/復号処理機能２０５は、適切なタイミングで、暗号化されている全ての保護領域内のデータを、現在利用されている鍵データを用いて生成された鍵ストリームを用いて復号する。
【００８１】
ステップＳ２０２において、鍵生成機能２０１が、利用する鍵データを更新し、鍵記憶機能２０２が、更新された鍵データを記憶する。
【００８２】
ステップＳ２０３において、暗号化/復号処理機能２０５は、更新された鍵データを用いて生成した鍵ストリームを用いて、全ての保護領域内のデータを暗号化する。
【００８３】
本実施形態に係るマルチタスク実行システムによれば、単一の鍵データを用いて、各タスクにユニークな鍵ストリームを生成することができるため、特定のタスクの重要情報が他のタスクに複写されたとしても、複写先のタスク上では、かかる重要情報が正しく復号されず、各タスクの重要情報を少ないメモリ資源で効率的に保護することができる。
【００８４】
すなわち、本実施形態に係るマルチタスク実行システムによれば、オペレーティングシステム用メモリ空間に置かなければならないデータを単一の鍵データ等の最小限のものとすることができるため、ＰＤＡや携帯電話等のようにメモリ資源の限定されたプラットフォームにおいても、各タスクの重要情報を保護可能なマルチタスク環境を実現することができる。
【００８５】
（本発明の第２の実施形態に係るマルチタスク実行システム）
図６乃至図８を参照して、本発明の第２の実施形態に係るマルチタスク実行システムについて説明する。以下、本実施形態に係るマルチタスク実行システムについて、上述の第１の実施形態に係るマルチタスク実行システムとの相違点を主として説明する。
【００８６】
一般的に、各タスクが多数の重要情報を持っている場合、かかる重要情報の一部は、ハードディスク等の二次記憶装置に退避されている可能性がある。
【００８７】
したがって、本実施形態に係るマルチタスク実行システムは、かかる場合であっても、効率的な鍵更新の実現を可能とすることを目的とするものである。
【００８８】
本実施形態では、図６に示すように、鍵記憶機能２０２が、複数の鍵データを記憶している。具体的には、鍵記憶機能２０２は、各鍵データに関して、当該鍵データを識別するための鍵番号と、当該鍵データと、当該鍵データの生成日時と、現行フラグと、参照数とを関連付けて記憶している。
【００８９】
ここで、現行フラグは、当該鍵データが現行鍵データであるか否かを示すフラグである。複数の鍵データのうちの１つだけが、新たな暗号化処理を行うために用いられる現行鍵データであるように設定される。その他の鍵データは、「未使用」又は「過去に当該鍵データを用いて暗号化したデータが現存する」というどちらかの属性を持つ。
【００９０】
また、参照数は、現行鍵データ及び「過去に当該鍵データを用いて暗号化したデータが現存する」という属性の鍵データに対して、当該鍵データがいくつの保護領域を暗号化するのに用いられたかについて示すものである。
【００９１】
ここで、過去に当該鍵データを用いて暗号化したデータが現存する」という属性の鍵データは、当該鍵データによって保護領域に記憶されている重要情報を復号した結果、参照数が０となった時に未使用状態となる。
【００９２】
また、現行鍵データは、生成時から所定時間（例えば、１時間）が経過した時点で無効となる。そして、次に、重要情報の暗号化処理が必要となった時には、鍵記憶機能２０２は、鍵生成機能２０１によって生成される新しい鍵データを現行鍵データとして設定する。
【００９３】
また、本実施形態では、タスク情報記憶機能２０４は、図７に示すように、各保護領域に関して、当該保護領域を識別する保護領域番号と、当該保護領域の各タスク用アドレス空間内の開始アドレスと、当該保護領域のサイズと、当該保護領域内に記憶されているデータ（重要情報）が暗号文であるか平文であるかについて示す状態情報と、当該保護領域内のデータ（重要情報）の暗号化処理に用いた鍵データを識別する利用鍵データ番号とを関連付けて記憶している。
【００９４】
ここで、図８を参照して、本実施形態に係るマルチタスク実行システムにおいて、鍵データを更新する動作について説明する。
【００９５】
ステップＳ３０１において、暗号化/復号処理機能２０５は、現在利用している鍵データの有効期間が経過したか否かについて判断する。
【００９６】
有効期間が経過したと判断した場合、ステップＳ３０２において、暗号化/復号処理機能２０５は、有効期間を経過した鍵データを用いて生成された鍵ストリームを用いて、暗号化されている全ての保護領域に記憶されるデータを復号する。
【００９７】
ステップＳ３０３において、鍵記憶機能２０２は、鍵生成機能２０１によって生成された鍵データの中から、利用する鍵データを現行鍵データとして設定して記憶する。
【００９８】
ステップＳ３０４において、暗号化/復号処理機能２０５は、有効期間を経過した鍵データとは別の鍵データ（すなわち、現行鍵データとして設定された鍵データ）を用いて生成された鍵ストリームを用いて、全ての保護領域に記憶されるデータを暗号化する。
【００９９】
本実施形態に係るマルチタスク実行システムによれば、複数の鍵データを鍵記憶機能２０２に保持しておくことにより、鍵データの更新時に必要となる処理を最小限とすることができる。
【０１００】
（変更例１）
図９を参照して、本発明の変更例１について説明する。
【０１０１】
図９に示すように、本変更例では、オペレーティングシステムは、コンテキストスイッチにより休止させられるタスク用メモリ空間７０２-１〜７０２-Ｎに記憶されている重要情報を、オペレーティングシステム用メモリ空間７００に置かれた単一の暗号化鍵（鍵データ）７０１を用いて暗号化する。
【０１０２】
一方、本変更例では、オペレーティングシステムは、コンテキストスイッチにより実行を再開させられるタスク用メモリ空間７０３に記憶されている重要情報を、オペレーティングシステム用メモリ空間７００に置かれた単一の暗号化鍵（鍵データ）７０１を用いて復号する。
【０１０３】
本変更例に係るマルチタスク実行システムによれば、暗号化方式として、タスクＩＤ及び当該タスク生成時の単調増加カウンタ値に基づくＣＴＲモードを用いることで、単一の暗号化鍵７０１による複数のタスクの重要情報の暗号化による保護が安全に実現されている。
【０１０４】
なお、本変更例に係るマルチタスク実行システムは、比較的頻繁に停止や起動を繰り返すような運用形態のシステムに向いたものである。
【０１０５】
（変更例２）
図１０を参照して、本発明の変更例２について説明する。本変更例では、上述の変更例１の場合と異なり、単一の暗号化鍵ではなく、全タスクの数より少ない数の暗号化鍵が用いられる。
【０１０６】
図１０に示すように、本変更例では、オペレーティングシステムは、コンテキストスイッチにより休止させられるタスク用メモリ空間８０２-２〜８０２-Ｎに記憶されている重要情報を、オペレーティングシステム用メモリ空間８００に置かれた複数の暗号化鍵のうち、現行の暗号化鍵（現行鍵データ）８０１-３を用いて暗号化する。
【０１０７】
ここで、休止中タスク８０２-１は、現行の暗号化鍵が有効になる前に、暗号化されたままの状態で実行を中断させられているため、オペレーティングシステムは、タスク８０２-１の実行再開時には、過去の暗号化鍵８０１-１を用いて、当該タスク８０２-１用メモリ空間に記憶されているデータを復号されなければならない。
【０１０８】
本変更例に係るマルチタスク実行システムは、暗号化鍵の更新処理を比較的低コストで実現することが可能であるため、長期間起動状態に置かれるような運用環境にも適用可能である。
【図面の簡単な説明】
【０１０９】
【図１】本発明の第１の実施形態に係るマルチタスク実行システムの機能ブロック図である。
【図２】ブロック暗号アルゴリズムの一種であるＣＴＲモードの概念を説明するための図である。
【図３】本発明の第１の実施形態に係るマルチタスク実行システムの暗号化/復号処理機能を説明するための図である。
【図４】本発明の第１の実施形態に係るマルチタスク実行システムにおいて、保護領域に記憶されるデータを暗号化する動作を説明するためのフローチャートである。
【図５】本発明の第１の実施形態に係るマルチタスク実行システムにおいて、鍵データを更新する動作を説明するためのフローチャートである。
【図６】本発明の第２の実施形態に係るマルチタスク実行システムの暗号化/復号処理機能における管理内容の一例を示す図である。
【図７】本発明の第２の実施形態に係るマルチタスク実行システムのタスク情報記憶機能における管理内容の一例を示す図である。
【図８】本発明の第２の実施形態に係るマルチタスク実行システムにおいて、鍵データを更新する動作を説明するためのフローチャートである。
【図９】本発明の変更例１に係るマルチタスク実行システムを説明するための図である。
【図１０】本発明の変更例２に係るマルチタスク実行システムを説明するための図である。
【図１１】従来技術に係るマルチタスク実行システムの問題点を説明するための図である。
【符号の説明】
【０１１０】
２０１…鍵生成機能
２０２…鍵記憶機能
２０３…単調増加カウンタ機能
２０４…タスク情報記憶機能
２０５…暗号化/復号処理機能
２０５ａ…鍵ストリーム生成機能
２０５ｂ…ブロック化機能
２０５ｃ…ＸＯＲ算出機能
【図１】
2006018685.tif 000003
【図２】
2006018685.tif 000004
【図３】
2006018685.tif 000005
【図４】
2006018685.tif 000006
【図５】
2006018685.tif 000007
【図６】
2006018685.tif 000008
【図７】
2006018685.tif 000009
【図８】
2006018685.tif 000010
【図９】
2006018685.tif 000011
【図１０】
2006018685.tif 000012
【図１１】
2006018685.tif 000013