(57)【要約】【課題】情報処理装置１００は、暗号化などで秘匿性を確保し、暗号化に直接関連しない処理のオーバーヘッドを抑える。【解決手段】鍵を用いる暗号化命令を含むアプリケーションプログラムＡ１５８、前記プログラムの改竄を検出する改竄検出部１３５ｘ、命令に従って動作し、暗号化命令を検出すると暗号化指示を出力するＣＰＵ１４１、前記指示により保護モードへの切替えを制御するデータ暗復号機能部１６０、前記プログラムに対応付けて鍵を安全に記憶し、保護モードにおいて、前記鍵を出力し、通常モードへの切替えを制御する保護データ操作部１５５を備え、データ暗復号機能部１６０は、通常モードにおいて、受け取った前記鍵を用いて、暗号化を実行する。【選択図】図３
2010182296.tif 000002
【特許請求の範囲】
【請求項１】
通常モードと保護モードとを切り替えて動作するプログラム実行装置であって、
鍵を用いる情報セキュリティ処理を指示する命令を含むプログラムの改竄を検出する改竄検出手段と、
通常モードにおいて、前記改竄が検出されない場合に、前記プログラムに従って動作し、前記プログラムの中から前記命令を検出すると情報セキュリティ処理の指示を出力する実行手段と、
通常モードにおいて、前記指示を受けると、保護モードに切り替えるよう制御する通常セキュリティ処理手段と、
前記プログラムに対応付けて鍵を安全に記憶しており、保護モードにおいて、前記鍵を読み出し、読み出した鍵を出力し、通常モードに切り替えるよう制御する保護セキュリティ処理手段とを備え、
前記通常セキュリティ処理手段は、通常モードにおいて、前記鍵を受け取り、受け取った前記鍵を用いて前記情報セキュリティ処理を実行する
ことを特徴とするプログラム実行装置。
【請求項２】
前記通常セキュリティ処理手段は、さらに、通常モードにおいて、受け取った前記鍵を記憶し、
前記改竄検出手段は、さらに、前記プログラムの改竄を検出し、
前記通常セキュリティ処理手段は、さらに、前記改竄が検出されなかった場合に、通常モードにおいて、記憶している前記鍵を用いて、前記情報セキュリティ処理を実行する
ことを特徴とする請求項１に記載のプログラム実行装置。
【請求項３】
前記通常セキュリティ処理手段は、さらに、通常モードにおいて、受け取った前記鍵を記憶し、
前記改竄検出手段は、さらに、前記プログラムの改竄を検出し、
前記通常セキュリティ処理手段は、さらに、前記改竄が検出された場合に、通常モードにおいて、記憶している前記鍵を削除し、保護モードに切り替えるよう制御し、
前記保護セキュリティ処理手段は、さらに、保護モードにおいて、記憶している前記鍵を用いて、前記情報セキュリティ処理を実行する
ことを特徴とする請求項１に記載のプログラム実行装置。
【請求項４】
前記通常セキュリティ処理手段は、さらに、通常モードにおいて、受け取った前記鍵を記憶し、
前記改竄検出手段は、さらに、通常モードで動作する他のプログラムの改竄を検出し、
前記通常セキュリティ処理手段は、さらに、前記他のプログラムの改竄が検出された場合に、通常モードにおいて、記憶している前記鍵を削除し、保護モードに切り替えるよう制御し、
前記保護セキュリティ処理手段は、さらに、保護モードにおいて、記憶している前記鍵を用いて、前記情報セキュリティ処理を実行する
ことを特徴とする請求項１に記載のプログラム実行装置。
【請求項５】
前記通常セキュリティ処理手段は、さらに、前記プログラムの実行が要求されたとき、通常モードにおいて、当該プログラムの鍵の生成指示を出力し、保護モードに切り替えるよう制御し、
前記保護セキュリティ処理手段は、さらに、保護モードにおいて、前記鍵の生成指示を受けると、当該プログラムの前記鍵を生成し、当該プログラムに対応付けて記憶する
ことを特徴とする請求項１に記載のプログラム実行装置。
【請求項６】
前記保護セキュリティ処理手段は、さらに、保護モードにおいて、前記プログラムのハッシュ値を生成し、生成したハッシュ値と生成した前記鍵とを対応付けて記憶する
ことを特徴とする請求項５に記載のプログラム実行装置。
【請求項７】
前記保護セキュリティ処理手段は、さらに、保護モードにおいて、前記鍵とともに前記ハッシュ値を読み出し、前記鍵とともに前記ハッシュ値を出力し、
前記通常セキュリティ処理手段は、さらに、通常モードにおいて、前記鍵とともに前記ハッシュ値を受け取り、前記ハッシュ値に対応付けて前記鍵を記憶する
ことを特徴とする請求項６に記載のプログラム実行装置。
【請求項８】
前記通常セキュリティ処理手段は、さらに、通常モードにおいて、他のプログラムから情報セキュリティ処理の指示を受け、当該他のプログラムのハッシュ値を算出し、算出したハッシュ値が記憶しているハッシュ値と一致しているか否かを判断し、一致していなければ、記憶している前記鍵を削除する
ことを特徴とする請求項７に記載のプログラム実行装置。
【請求項９】
前記通常セキュリティ処理手段は、さらに、前記プログラムの実行が要求されたとき、通常モードにおいて、当該プログラムに対応する鍵を保持しているか否かを判断し、保持してないと判断する場合に、当該プログラムの鍵の生成指示を出力し、保護モードに切り替えるよう制御し、
前記保護セキュリティ処理手段は、さらに、保護モードにおいて、前記鍵の生成指示を受けると、当該プログラムに対応する鍵を保持しているか否かを判断し、保持していると判断する場合に、前記鍵を読み出し、読み出した前記鍵を出力し、通常モードに切り替えるように制御する
ことを特徴とする請求項５に記載のプログラム実行装置。
【請求項１０】
前記保護セキュリティ処理手段は、さらに、前記鍵に対応付けて、鍵の最大使用回数を安全に記憶しており、保護モードにおいて、前記最大使用回数を出力し、
前記通常セキュリティ処理手段は、さらに、通常モードにおいて、前記鍵とともに、前記最大使用回数を受け取り、受け取った前記最大使用回数を記憶し、現在の使用回数が記憶している前記最大使用回数を超えているか否かを判断し、超えていると判断される場合に、新たな生成の指示を出力し、保護モードに切り替えるよう制御し、
前記保護セキュリティ処理手段は、さらに、保護モードにおいて、新たな生成の指示を受け取ると、新たな鍵と新たな最大使用回数を生成し、生成した新たな鍵と新たな最大使用回数とを出力し、通常モードに切り替えるよう制御し、
前記通常セキュリティ処理手段は、さらに、通常モードにおいて、新たな鍵と新たな最大使用回数とを受け取り、記憶している鍵と最大使用回数とを削除し、受け取った新たな鍵と新たな最大使用回数とを対応付けて記憶する
ことを特徴とする請求項１に記載のプログラム実行装置。
【請求項１１】
前記保護セキュリティ処理手段は、さらに、前記鍵に対応付けて、鍵を使用することができる最終日時を安全に記憶しており、保護モードにおいて、前記最終日時を出力し、
前記通常セキュリティ処理手段は、さらに、通常モードにおいて、前記鍵とともに、前記最終日時を受け取り、受け取った前記最終日時を記憶し、現在の日時が記憶している前記最終日時を超えているか否かを判断し、超えていると判断される場合に、新たな生成の指示を出力し、保護モードに切り替えるよう制御し、
前記保護セキュリティ処理手段は、さらに、保護モードにおいて、新たな生成の指示を受け取ると、新たな鍵と新たな最終日時とを生成し、生成した新たな鍵と新たな最終日時とを出力し、通常モードに切り替えるよう制御し、
前記通常セキュリティ処理手段は、さらに、通常モードにおいて、新たな鍵と新たな最終日時とを受け取り、記憶している鍵と最終日時とを削除し、受け取った新たな鍵と新たな最終日時とを対応付けて記憶する
ことを特徴とする請求項１に記載のプログラム実行装置。
【請求項１２】
前記情報セキュリティ処理は、暗号化、復号、デジタル署名の生成、デジタル署名の検証、鍵付きハッシュの生成のいずれかである
ことを特徴とする請求項１に記載のプログラム実行装置。
【請求項１３】
通常モードと保護モードとを切り替えて動作するプログラム実行装置で用いられる制御方法であって、
鍵を用いる情報セキュリティ処理を指示する命令を含むプログラムの改竄を検出する改竄検出ステップと、
通常モードにおいて、前記改竄が検出されない場合に、前記プログラムに従って動作し、前記プログラムの中から前記命令を検出すると情報セキュリティ処理の指示を出力する実行ステップと、
通常モードにおいて、前記指示を受けると、保護モードに切り替えるよう制御する通常セキュリティ処理ステップと、
前記プログラムに対応付けて鍵を安全に記憶しており、保護モードにおいて、前記鍵を読み出し、読み出した鍵を出力し、通常モードに切り替えるよう制御する保護セキュリティ処理ステップとを備え、
前記通常セキュリティ処理ステップにおいて、通常モードにおいて、前記鍵を受け取り、受け取った前記鍵を用いて前記情報セキュリティ処理を実行する
ことを特徴とする制御方法。
【請求項１４】
通常モードと保護モードとを切り替えて動作するプログラム実行装置で用いられ、コンピュータ読み取り可能な記録媒体に記録されている制御プログラムであって、
コンピュータに、
鍵を用いる情報セキュリティ処理を指示する命令を含むプログラムの改竄を検出する改竄検出ステップと、
通常モードにおいて、前記改竄が検出されない場合に、前記プログラムに従って動作し、前記プログラムの中から前記命令を検出すると情報セキュリティ処理の指示を出力する実行ステップと、
通常モードにおいて、前記指示を受けると、保護モードに切り替えるよう制御する通常セキュリティ処理ステップと、
前記プログラムに対応付けて鍵を安全に記憶しており、保護モードにおいて、前記鍵を読み出し、読み出した鍵を出力し、通常モードに切り替えるよう制御する保護セキュリティ処理ステップとを実行させ、
前記通常セキュリティ処理ステップにおいて、通常モードにおいて、前記鍵を受け取り、受け取った前記鍵を用いて前記情報セキュリティ処理を実行する
ための制御プログラム。
【請求項１５】
通常モードと保護モードとを切り替えて動作するプログラム実行のための集積回路であって、
鍵を用いる情報セキュリティ処理を指示する命令を含むプログラムの改竄を検出する改竄検出手段と、
通常モードにおいて、前記改竄が検出されない場合に、前記プログラムに従って動作し、前記プログラムの中から前記命令を検出すると情報セキュリティ処理の指示を出力する実行手段と、
通常モードにおいて、前記指示を受けると、保護モードに切り替えるよう制御する通常セキュリティ処理手段と、
前記プログラムに対応付けて鍵を安全に記憶しており、保護モードにおいて、前記鍵を読み出し、読み出した鍵を出力し、通常モードに切り替えるよう制御する保護セキュリティ処理手段とを備え、
前記通常セキュリティ処理手段は、通常モードにおいて、前記鍵を受け取り、受け取った前記鍵を用いて前記情報セキュリティ処理を実行する
ことを特徴とする集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、安全なソフトウェア実行環境と通常のソフトウェア実行環境とを切り替えて、コンピュータプログラムを実行するプログラム実行装置において、データの暗号化、暗号化データの復号、デジタル署名の生成及びデジタル署名の検証などの情報セキュリティ処理を高速かつ安全に行う技術に関する。
【背景技術】
【０００２】
近年、パーソナルコンピュータ（Personal Computer、ＰＣ）や携帯電話などの情報処理装置に格納された個人情報などのデータの盗難が問題となっている。
前述のデータの盗難は、不正なコンピュータプログラムによって行われることがある。このコンピュータプログラムは、インターネットなどのオープンなネットワークからＰＣや携帯電話などの情報処理装置に不正にダウンロードされたものである。このコンピュータプログラムは、この情報処理装置において、情報処理装置のユーザの意図に反して不正に動作する。例えば、このコンピュータプログラムは、ＰＣや携帯電話の記憶装置に格納されているデータを読み取り、読み取ったデータを、ネットワークを介して、攻撃者などに送付する。こうして攻撃者は、データを盗むという目的を達成する。以下では、不正なコンピュータプログラムを悪意のあるコンピュータプログラムとも呼ぶ。
【０００３】
このようなデータの盗難を防ぐために、特許文献１及び特許文献２（特許文献１（日本の公報）と特許文献２（米国の公報）とは、同一の内容を開示している。）は、ネットワークからの侵入者がいかなるユーザ権限を利用して不正なファイル読み出しや書き込みを試みても、該アクセスの抑止が可能なアクセス制御システムを提供することを目的として、次のような技術を開示している。
【０００４】
サーバ情報処理装置上において、複数のＯＳが同時に動作する。そのＯＳの一つは、サービス用ＯＳであり、他の一つは、セキュリティ用ＯＳである。サーバ情報処理装置上で動作する複数ＯＳ制御プログラムは、サーバ情報処理装置上でサービス用ＯＳとセキュリティ用ＯＳとが動作するための各種の制御をする。また、サービス用ＯＳ上で、サーバプログラムが動作し、セキュリティ用ＯＳ上で、アクセス制御プログラムが動作する。また、サービス用ＯＳ内で、Ｉ／Ｏマネージャ及びファイルＩ／Ｏフックプログラムが動作する。複数ＯＳ制御プログラム内で、ＯＳ間通信処理部が動作する。
【０００５】
サーバプログラムがファイルアクセスを要求すると、その要求がＩ／Ｏマネージャを経由してファイルＩ／Ｏフックプログラムに到達する。ファイルＩ／Ｏフックプログラムは、ＯＳ間通信処理部を介して、ファイルアクセス要求に関するアクセス権限のチェックなどをアクセス制御プログラムに対してリクエストする。アクセス制御プログラムは、受信したリクエストの内容を、ポリシーファイルの内容と照合し、その結果をレスポンスとして、ＯＳ間通信処理部を介して、ファイルＩ／Ｏフックプログラムに伝達する。ファイルＩ／Ｏフックプログラムは、受信したレスポンスの内容から当該アクセスの可否を判断し、アクセス不可であればエラーコードを設定する。エラーコードが設定されている場合、前記Ｉ／Ｏマネージャは、サーバプログラムにエラーを返す。
【０００６】
このように、データへのアクセス許可・不許可の判定を、安全な実行環境であるセキュリティ用ＯＳ上で実行することにより、不正なデータアクセスを行うことを防止することができる。
次に、特許文献３は、コンピュータシステムと一体となって動作する暗号システムにおいて、キャッシュ上に暗号処理されていないデータが残ってしまうという問題を解決することを目的として、次の技術を開示している。
【０００７】
オペレーティングシステムと記憶装置（ハードディスク）とを有するコンピュータシステムは、所定のフォルダに保存するファイルを自動的に暗号化する機能を備える。暗号処理機能のＯＮ−ＯＦＦの切り替えに伴い、前記コンピュータシステムが管理するキャッシュメモリ上に保持された暗号化対象のファイルに付帯するキャッシュデータを無効化し又は書き換える。
【０００８】
こうして、暗号化されていないデータがキャッシュ上に残らないので、これらのデータの不正な使用を防止することができる。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】日本国  特開２００８−２０４４６８号公報
【特許文献２】ＵＳ  ２００１／００２５３１１  Ａ１公報
【特許文献３】日本国  特開２００４−２４０６９９号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
特許文献１及び特許文献２により開示されている技術では、データへのアクセスの度に、サービス用ＯＳとセキュリティ用ＯＳとの間でＯＳ間通信処理が必要であり、そのオーバーヘッドが大きいという問題がある。
また、特許文献３により開示されている技術では、データ暗復号が終了した後に、再度データ暗復号を行う場合に、再度、鍵をキャッシュに読み込む必要がある。
【００１１】
本発明は、上記の課題を解決するため、暗号化や復号などの情報セキュリティ処理において秘匿性を確保しつつ、情報セキュリティ処理に直接関連しない処理によるオーバーヘッドを抑えることのできるプログラム実行装置、制御方法、制御プログラム及び集積回路を提供することを目的とする。
【課題を解決するための手段】
【００１２】
前記従来の課題を解決するために、本発明の一実施態様は、通常モードと保護モードとを切り替えて動作するプログラム実行装置であって、鍵を用いる情報セキュリティ処理を指示する命令を含むプログラムの改竄を検出する改竄検出手段と、通常モードにおいて、前記改竄が検出されない場合に、前記プログラムに従って動作し、前記プログラムの中から前記命令を検出すると情報セキュリティ処理の指示を出力する実行手段と、通常モードにおいて、前記指示を受けると、保護モードに切り替えるよう制御する通常セキュリティ処理手段と、前記プログラムに対応付けて鍵を安全に記憶しており、保護モードにおいて、前記鍵を読み出し、読み出した鍵を出力し、通常モードに切り替えるよう制御する保護セキュリティ処理手段とを備え、前記通常セキュリティ処理手段は、通常モードにおいて、前記鍵を受け取り、受け取った前記鍵を用いて前記情報セキュリティ処理を実行することを特徴とする。
【発明の効果】
【００１３】
この構成によると、通常モードにおいて、保護モードから取得した鍵を用いて、改竄されていないと確認されたプログラムの命令に従って情報セキュリティ処理を実行するので、通常モードにおいて行われる情報セキュリティ処理において秘匿性を保つことができる。このように鍵を取得する際に通常モードから保護モードへさらに通常モードへの切替えが発生するものの、鍵を取得した後には、情報セキュリティ処理の実行中に再度保護モードに切り替える必要はなく、暗号化や復号などの情報セキュリティ処理に直接関連しない処理によるオーバーヘッドを抑えることができるという優れた効果を奏する。
【図面の簡単な説明】
【００１４】
【図１】実施の形態１の情報処理システム１の構成を示す。
【図２】情報処理装置１００の構成を示す。
【図３】情報処理装置１００のソフトウェア構成を示す。
【図４】通常鍵テーブル１２８のデータ構造の一例を示す。
【図５】情報処理装置１００による鍵削除の手順を説明する概念図である。
【図６】情報処理装置１００の電源投入時の動作を示すフローチャートである。
【図７】アプリケーションプログラムによるデータの利用の一連の手順を示すフローチャートである。
【図８】データの暗号化の際の状態遷移を示す状態遷移図である。
【図９】アプリケーションプログラムの登録の手順を示すシーケンス図である。
【図１０】保護モードから鍵を取得し、通常モードのデータ暗復号機能部を用いて暗号化する場合の動作を示すシーケンス図である。
【図１１】通常モードのデータ暗復号機能部のみを用いて暗号化する場合の動作を示すシーケンス図である。
【図１２】保護モードの保護データ操作部を用いて暗号化する場合の動作を示すシーケンス図である。
【図１３】不正なアプリケーションプログラムから暗号化要求が行われた場合の動作を示すシーケンス図である。
【図１４】暗号化データの復号の際の状態遷移を示す図である。
【図１５】保護モードから鍵を取得し、通常モードのデータ暗復号機能部を用いて復号する場合の動作を示すシーケンス図である。
【図１６】アプリケーションプログラムの検証の動作を示すフローチャートである。
【図１７】情報処理装置１００がセーフブートで起動する場合の動作を示すフローチャートである。
【図１８】通常モードから保護モードへの遷移を行うモード切替Ａの動作を示すフローチャートである。
【図１９】アプリケーションプログラムのハッシュ値生成と検証Ａの動作を示すフローチャートである。
【図２０】サーバ情報の検証の動作を示すフローチャートである。
【図２１】鍵生成と格納の動作を示すフローチャートである。
【図２２】データ暗復号機能部を検証する動作を示すフローチャートである。
【図２３】保護モードから通常モードへの遷移を行うモード切替Ｂの動作を示すフローチャートである。
【図２４】アプリケーションプログラムのハッシュ値生成と検証Ｂの動作を示すフローチャートである。
【図２５】他のアプリケーションプログラムの検証の動作を示すフローチャートである。
【図２６】鍵の確認Ａの動作を示すフローチャートである。
【図２７】鍵の確認Ｂの動作を示すフローチャートである。
【図２８】鍵の格納の動作を示すフローチャートである。
【図２９】実施の形態２の情報処理装置１００ｂのソフトウェア構成を示す。
【図３０】実施の形態３の情報処理装置１００ｃのソフトウェア構成を示す。
【図３１】実施の形態３のアプリケーションプログラムの登録の動作を示すシーケンス図である。図３２へ続く。
【図３２】実施の形態３のアプリケーションプログラムの登録の動作を示すシーケンス図である。図３１から続く。
【図３３】実施の形態３のアプリケーションプログラムの検証と鍵テーブル更新の動作を示すフローチャートである。
【図３４】実施の形態３の鍵テーブル更新の動作を示すフローチャートである。
【図３５】実施の形態４の通常鍵テーブル１２８ｄのデータ構造を示す。
【図３６】実施の形態４の鍵の確認Ａの動作を示すフローチャートである。
【図３７】実施の形態５の情報処理装置１００ｅの構成を示す。
【図３８】実施の形態５の通常鍵テーブル１２８ｅのデータ構造を示す。
【図３９】実施の形態５の鍵の確認Ａの動作を示すフローチャートである。
【図４０】実施の形態６の情報処理装置１００ｆのソフトウェア構成を示す。
【図４１】実施の形態６の復号データ格納位置テーブル２９７のデータ構造を示す。
【図４２】実施の形態６のアプリケーションプログラムのハッシュ値生成と検証Ｂの動作を示すフローチャートである。
【図４３】実施の形態６の他のアプリケーションプログラムの確認の動作を示すシーケンス図である。
【発明を実施するための形態】
【００１５】
本発明の一実施態様である通常モードと保護モードとを切り替えて動作するプログラム実行装置は、鍵を用いる情報セキュリティ処理を指示する命令を含むプログラムの改竄を検出する改竄検出手段と、通常モードにおいて、前記改竄が検出されない場合に、前記プログラムに従って動作し、前記プログラムの中から前記命令を検出すると情報セキュリティ処理の指示を出力する実行手段と、通常モードにおいて、前記指示を受けると、保護モードに切り替えるよう制御する通常セキュリティ処理手段と、前記プログラムに対応付けて鍵を安全に記憶しており、保護モードにおいて、前記鍵を読み出し、読み出した鍵を出力し、通常モードに切り替えるよう制御する保護セキュリティ処理手段とを備え、前記通常セキュリティ処理手段は、通常モードにおいて、前記鍵を受け取り、受け取った前記鍵を用いて前記情報セキュリティ処理を実行することを特徴とする。
【００１６】
ここで、前記通常セキュリティ処理手段は、さらに、通常モードにおいて、受け取った前記鍵を記憶し、前記改竄検出手段は、さらに、前記プログラムの改竄を検出し、前記通常セキュリティ処理手段は、さらに、前記改竄が検出されなかった場合に、通常モードにおいて、記憶している前記鍵を用いて、前記情報セキュリティ処理を実行するとしてもよい。
【００１７】
ここで、前記通常セキュリティ処理手段は、さらに、通常モードにおいて、受け取った前記鍵を記憶し、前記改竄検出手段は、さらに、前記プログラムの改竄を検出し、前記通常セキュリティ処理手段は、さらに、前記改竄が検出された場合に、通常モードにおいて、記憶している前記鍵を削除し、保護モードに切り替えるよう制御し、前記保護セキュリティ処理手段は、さらに、保護モードにおいて、記憶している前記鍵を用いて、前記情報セキュリティ処理を実行するとしてもよい。
【００１８】
ここで、前記通常セキュリティ処理手段は、さらに、通常モードにおいて、受け取った前記鍵を記憶し、前記改竄検出手段は、さらに、通常モードで動作する他のプログラムの改竄を検出し、前記通常セキュリティ処理手段は、さらに、前記他のプログラムの改竄が検出された場合に、通常モードにおいて、記憶している前記鍵を削除し、保護モードに切り替えるよう制御し、前記保護セキュリティ処理手段は、さらに、保護モードにおいて、記憶している前記鍵を用いて、前記情報セキュリティ処理を実行するとしてもよい。
【００１９】
ここで、前記通常セキュリティ処理手段は、さらに、前記プログラムの実行が要求されたとき、通常モードにおいて、当該プログラムの鍵の生成指示を出力し、保護モードに切り替えるよう制御し、前記保護セキュリティ処理手段は、さらに、保護モードにおいて、前記鍵の生成指示を受けると、当該プログラムの前記鍵を生成し、当該プログラムに対応付けて記憶してもよい。
【００２０】
ここで、前記保護セキュリティ処理手段は、さらに、保護モードにおいて、前記プログラムのハッシュ値を生成し、生成したハッシュ値と生成した前記鍵とを対応付けて記憶してもよい。
ここで、前記保護セキュリティ処理手段は、さらに、保護モードにおいて、前記鍵とともに前記ハッシュ値を読み出し、前記鍵とともに前記ハッシュ値を出力し、前記通常セキュリティ処理手段は、さらに、通常モードにおいて、前記鍵とともに前記ハッシュ値を受け取り、前記ハッシュ値に対応付けて前記鍵を記憶してもよい。
【００２１】
ここで、前記通常セキュリティ処理手段は、さらに、通常モードにおいて、他のプログラムから情報セキュリティ処理の指示を受け、当該他のプログラムのハッシュ値を算出し、算出したハッシュ値が記憶しているハッシュ値と一致しているか否かを判断し、一致していなければ、記憶している前記鍵を削除してもよい。
ここで、前記通常セキュリティ処理手段は、さらに、前記プログラムの実行が要求されたとき、通常モードにおいて、当該プログラムに対応する鍵を保持しているか否かを判断し、保持してないと判断する場合に、当該プログラムの鍵の生成指示を出力し、保護モードに切り替えるよう制御し、前記保護セキュリティ処理手段は、さらに、保護モードにおいて、前記鍵の生成指示を受けると、当該プログラムに対応する鍵を保持しているか否かを判断し、保持していると判断する場合に、前記鍵を読み出し、読み出した前記鍵を出力し、通常モードに切り替えるように制御してもよい。
【００２２】
ここで、前記保護セキュリティ処理手段は、さらに、前記鍵に対応付けて、鍵の最大使用回数を安全に記憶しており、保護モードにおいて、前記最大使用回数を出力し、前記通常セキュリティ処理手段は、さらに、通常モードにおいて、前記鍵とともに、前記最大使用回数を受け取り、受け取った前記最大使用回数を記憶し、現在の使用回数が記憶している前記最大使用回数を超えているか否かを判断し、超えていると判断される場合に、新たな生成の指示を出力し、保護モードに切り替えるよう制御し、前記保護セキュリティ処理手段は、さらに、保護モードにおいて、新たな生成の指示を受け取ると、新たな鍵と新たな最大使用回数を生成し、生成した新たな鍵と新たな最大使用回数とを出力し、通常モードに切り替えるよう制御し、前記通常セキュリティ処理手段は、さらに、通常モードにおいて、新たな鍵と新たな最大使用回数とを受け取り、記憶している鍵と最大使用回数とを削除し、受け取った新たな鍵と新たな最大使用回数とを対応付けて記憶してもよい。
【００２３】
ここで、前記保護セキュリティ処理手段は、さらに、前記鍵に対応付けて、鍵を使用することができる最終日時を安全に記憶しており、保護モードにおいて、前記最終日時を出力し、前記通常セキュリティ処理手段は、さらに、通常モードにおいて、前記鍵とともに、前記最終日時を受け取り、受け取った前記最終日時を記憶し、現在の日時が記憶している前記最終日時を超えているか否かを判断し、超えていると判断される場合に、新たな生成の指示を出力し、保護モードに切り替えるよう制御し、前記保護セキュリティ処理手段は、さらに、保護モードにおいて、新たな生成の指示を受け取ると、新たな鍵と新たな最終日時とを生成し、生成した新たな鍵と新たな最終日時とを出力し、通常モードに切り替えるよう制御し、前記通常セキュリティ処理手段は、さらに、通常モードにおいて、新たな鍵と新たな最終日時とを受け取り、記憶している鍵と最終日時とを削除し、受け取った新たな鍵と新たな最終日時とを対応付けて記憶してもよい。
【００２４】
ここで、前記情報セキュリティ処理は、暗号化、復号、デジタル署名の生成、デジタル署名の検証、鍵付きハッシュの生成のいずれかであるとしてもよい。
また、本発明の一実施態様である通常モードと保護モードとを切り替えて動作するプログラム実行装置で用いられる制御方法は、鍵を用いる情報セキュリティ処理を指示する命令を含むプログラムの改竄を検出する改竄検出ステップと、通常モードにおいて、前記改竄が検出されない場合に、前記プログラムに従って動作し、前記プログラムの中から前記命令を検出すると情報セキュリティ処理の指示を出力する実行ステップと、通常モードにおいて、前記指示を受けると、保護モードに切り替えるよう制御する通常セキュリティ処理ステップと、前記プログラムに対応付けて鍵を安全に記憶しており、保護モードにおいて、前記鍵を読み出し、読み出した鍵を出力し、通常モードに切り替えるよう制御する保護セキュリティ処理ステップとを備え、前記通常セキュリティ処理ステップにおいて、通常モードにおいて、前記鍵を受け取り、受け取った前記鍵を用いて前記情報セキュリティ処理を実行することを特徴とする。
【００２５】
また、本発明の一実施態様である通常モードと保護モードとを切り替えて動作するプログラム実行装置で用いられ、コンピュータ読み取り可能な記録媒体に記録されている制御プログラムは、コンピュータに、鍵を用いる情報セキュリティ処理を指示する命令を含むプログラムの改竄を検出する改竄検出ステップと、通常モードにおいて、前記改竄が検出されない場合に、前記プログラムに従って動作し、前記プログラムの中から前記命令を検出すると情報セキュリティ処理の指示を出力する実行ステップと、通常モードにおいて、前記指示を受けると、保護モードに切り替えるよう制御する通常セキュリティ処理ステップと、前記プログラムに対応付けて鍵を安全に記憶しており、保護モードにおいて、前記鍵を読み出し、読み出した鍵を出力し、通常モードに切り替えるよう制御する保護セキュリティ処理ステップとを実行させ、前記通常セキュリティ処理ステップにおいて、通常モードにおいて、前記鍵を受け取り、受け取った前記鍵を用いて前記情報セキュリティ処理を実行することを特徴とする。
【００２６】
また、本発明の一実施態様である通常モードと保護モードとを切り替えて動作するプログラム実行のための集積回路は、鍵を用いる情報セキュリティ処理を指示する命令を含むプログラムの改竄を検出する改竄検出手段と、通常モードにおいて、前記改竄が検出されない場合に、前記プログラムに従って動作し、前記プログラムの中から前記命令を検出すると情報セキュリティ処理の指示を出力する実行手段と、通常モードにおいて、前記指示を受けると、保護モードに切り替えるよう制御する通常セキュリティ処理手段と、前記プログラムに対応付けて鍵を安全に記憶しており、保護モードにおいて、前記鍵を読み出し、読み出した鍵を出力し、通常モードに切り替えるよう制御する保護セキュリティ処理手段とを備え、前記通常セキュリティ処理手段は、通常モードにおいて、前記鍵を受け取り、受け取った前記鍵を用いて前記情報セキュリティ処理を実行することを特徴とする。
【００２７】
以下に、本発明の実施の形態について、図面を参照しながら説明を行う。
１．実施の形態１
本発明に係る一の実施の形態としての情報処理システム１について説明する。
１．１  情報処理システム１の構成
情報処理システム１は、図１に示すように、情報処理装置１００及びサーバ装置１０から構成されており、情報処理装置１００とサーバ装置１０とは、ネットワーク２０を介して接続されている。情報処理装置１００は、ネットワーク２０を介して、サーバ装置１０との間でデータの送受信をする。
【００２８】
情報処理装置１００は、ユーザから入力されたデータを暗号化して内部に有する不揮発性記憶部１０２（後述する）に格納する。次に、必要に応じて、暗号化されたデータを復号し、ネットワーク２０を介して、サーバ装置１０にアップロードする。また、情報処理装置１００は、サーバ装置１０から、ネットワーク２０を介して、データやプログラムをダウンロードし、ダウンロードしたデータやプログラムを暗号化して、不揮発性記憶部１０２に格納する。なお、データの暗号化及び復号に関しては、後述する。
【００２９】
ここで、ネットワーク２０は、インターネットなどの公衆通信網や、アドホックに構築された通信路であってもよい。
情報処理装置１００は、一例として、パーソナルコンピュータ、携帯電話、携帯情報端末、ゲーム機、ＤＶＤ再生装置、ＤＶＤ記録装置、ＤＶＤ再生記録装置、ＢＤ再生装置、ＢＤ記録装置、ＢＤ再生記録装置、デジタル放送受信装置、デジタル放送受信記録装置、デジタル放送再生装置である。
１．２  情報処理装置１００の構成
情報処理装置１００は、コンピュータシステムを構成しており、図２に示すように、システムＬＳＩ１０１、不揮発性記憶部１０２、メモリ部１０３、専用メモリ部１０４、システムバス１０５、図示していない入出力部及び図示していないその他の要素から構成されている。システムＬＳＩ１０１、不揮発性記憶部１０２、メモリ部１０３及び専用メモリ部１０４は、システムバス１０５を介して、相互に接続されている。
【００３０】
情報処理装置１００は、通常モードと保護モードとを切り替えて動作するプログラム実行装置である。
（１）システムＬＳＩ１０１
システムＬＳＩ１０１は、ＣＰＵ１４１、周辺回路１４２、モード切替部１４３、内部保護メモリ部１４４、内部バス１４５及び専用バス１４６から構成されており、ＣＰＵ１４１、周辺回路１４２及びモード切替部１４３は、内部バス１４５を介して、相互に接続されている。また、モード切替部１４３と内部保護メモリ部１４４とは、専用バス１４６を介して接続されている。システムＬＳＩ１０１は、通常モードと保護モードとを有し、通常モードと保護モードとを切替えて動作する。
【００３１】
ＣＰＵ１４１は、メモリ部１０３及び内部保護メモリ部１４４に格納されたプログラム等に含まれる命令コードに従って動作することにより、情報処理装置１００全体の動作を制御する。ＣＰＵ１４１は、ソフトウェアが利用する汎用レジスタ１４７、メモリ管理（Memory Managemenet Unit、ＭＭＵ）や演算のアクセラレート機能などを制御する制御レジスタ１４８、キャッシュなどに用いられるバッファ領域１４９を含んでいる。
【００３２】
メモリ部１０３又は内部保護メモリ部１４４に格納されたプログラムに含まれる命令コードに従って、ＣＰＵ１４１が動作することにより、当該プログラムとＣＰＵ１４１とが、あたかも、一つのハードウェアユニットを構成し、このハードウェアユニットが動作しているようにみせることができる。
周辺回路１４２は、ＤＭＡ（Direct Memory Access）などの固定的な機能を有し、ソフトウェアにより制御される。また、周辺回路１４２は、制御レジスタ１５０及びバッファ領域１５１を備える。制御レジスタ１５０及びバッファ領域１５１は、周辺回路１４２を制御するために、ソフトウェアにより利用される。
【００３３】
モード切替部１４３は、システムＬＳＩ１０１の中で、通常モードと保護モードとを切り替える。また、モード切替部１４３は、専用メモリ部１０４を用いて、通常モードと保護モードとの間でデータ交換を行う。詳細については後述する。また、モード切替部１４３は、内部バス１４５と内部保護メモリ部１４４とを接続し、又は切り離す。つまり、保護モードの場合、モード切替部１４３は、内部保護メモリ部１４４と内部バス１４５とを接続する。通常モードの場合、モード切替部１４３は、内部保護メモリ部１４４と内部バス１４５とを切り離す。
【００３４】
内部保護メモリ部１４４は、セキュアオペレーティングシステム１５２、動的改竄検出機能部１５３、セキュアブート部１５４、保護データ操作部１５５（保護セキュリティ処理部とも呼ぶ）及び保護切替データ１５６を格納している。セキュアオペレーティングシステム１５２、動的改竄検出機能部１５３、セキュアブート部１５４及び保護データ操作部１５５は、コンピュータプログラムであり、それぞれ、複数の命令を含んで構成されている。内部保護メモリ部１４４は、保護モードの場合のみ、ＣＰＵ１４１からアクセス可能なメモリであり、アクセス可能及びアクセス不可能の切り替え制御は、モード切替部１４３によって行われる。
（２）不揮発性記憶部１０２
不揮発性記憶部１０２は、アプリケーションプログラムＡ用の暗号化されたデータ１６３及びアプリケーションプログラムＢ用の暗号化されたデータ１６４を格納するための領域を備えている。
（３）メモリ部１０３
メモリ部１０３は、汎用オペレーティングシステム１５７、アプリケーションプログラムＡ１５８、アプリケーションプログラムＢ１５９、データ暗復号機能部１６０（通常セキュリティ処理部とも呼ぶ）、暗号化された保護切替用データ１６１及び通常切替用データ１６２を格納するための領域を備えている。
【００３５】
汎用オペレーティングシステム１５７、アプリケーションプログラムＡ１５８、アプリケーションプログラムＢ１５９及びデータ暗復号機能部１６０は、それぞれ、複数の命令を含んで構成されるコンピュータプログラムである。
また、保護切替用データは、保護モードから通常モードへの切替えの直前の時点において、ＣＰＵ１４１の汎用レジスタ１４７、制御レジスタ１４８及びバッファ領域１４９にそれぞれ格納されているデータ、並びに周辺回路１４２の制御レジスタ１５０及びバッファ領域１５１にそれぞれ格納されているデータである。
【００３６】
通常切替用データ１６２は、通常モードから保護モードへの切替えの直前の時点において、ＣＰＵ１４１の汎用レジスタ１４７、制御レジスタ１４８及びバッファ領域１４９に格納されているデータ、並びに周辺回路１４２の制御レジスタ１５０及びバッファ領域１５１に格納されているデータである。
（４）専用メモリ部１０４
専用メモリ部１０４は、通常モードから保護モードへ、又は保護モードから通常モードへ、転送するためのデータを格納する。
１．３  情報処理装置１００のソフトウェア構成
情報処理装置１００のソフトウェア構成を図３に示す。
【００３７】
情報処理装置１００は、図３に示すように、通常モードであるソフトウェアの実行環境１２０と、保護モードである安全なソフトウェアの実行環境１２１とから構成される。情報処理装置１００は、通常モードと保護モードとを切り替えて、各ソフトウェアを実行する。なお、通常モードと保護モードの切り替えの動作の詳細については、後述する。
（１）通常モードの実行環境１２０で動作するソフトウェアの構成要素の説明
通常モードの実行環境１２０は、汎用オペレーティングシステム１５７、データ暗復号機能部１６０、アプリケーションプログラムＡ１５８及びアプリケーションプログラムＢ１５９を含む。
（汎用オペレーティングシステム１５７）
汎用オペレーティングシステム１５７は、通常モードの場合に動作するオペレーティングシステムであり、ロード機能部１２９及び改竄検出部１５７ｘを含む。汎用オペレーティングシステム１５７は、ロード機能部１２９を用いて、アプリケーションプログラムをメモリ部１０３上にロードして実行させる。また、アプリケーションプログラムをメモリ部１０３上から削除（アンロード）する。改竄検出部１５７ｘは、改竄の検出を行う。
（アプリケーションプログラムＡ１５８及びアプリケーションプログラムＢ１５９）
アプリケーションプログラムＡ１５８及びアプリケーションプログラムＢ１５９は、それぞれ、ユーザに対して、Ｗｅｂブラウズ機能や電子メール機能などの機能を提供するソフトウェアである。アプリケーションプログラムＡ１５８及びアプリケーションプログラムＢ１５９は、データの暗号化又は復号をさせる。
【００３８】
アプリケーションプログラムＡ１５８及びアプリケーションプログラムＢ１５９は、それぞれ、鍵を用いる情報セキュリティ処理を指示する命令及びその他の命令を含む。ここで、情報セキュリティ処理は、データの暗号化、暗号化されたデータの復号、デジタル署名の生成、デジタル署名の検証、鍵付きハッシュの演算などの処理である。また、鍵を用いる情報セキュリティ処理を指示する命令とは、鍵を用いてデータの暗号化を指示する命令、又は鍵を用いて暗号化されたデータの復号を指示する命令である。また、鍵を用いたデジタル署名の生成を指示する命令、鍵を用いたデジタル署名の検証を指示する命令、鍵を用いて鍵付きハッシュの演算を指示する命令なども、情報セキュリティ処理を指示する命令に含まれる。
【００３９】
ＣＰＵ１４１は、これらの命令を読み出し、読み出した命令を解読し、解読結果に従って動作する。ＣＰＵ１４１が、アプリケーションプログラムの中から情報セキュリティ処理を指示する命令を検出すると、情報セキュリティ処理の指示をデータ暗復号機能部１６０へ出力する。このようにして、アプリケーションプログラムは、情報セキュリティ処理要求を、ここでは、データ暗復号要求をデータ暗復号機能部１６０に対して要求する。
【００４０】
アプリケーションプログラムに含まれている命令コードに従って、ＣＰＵ１４１が動作することにより、当該アプリケーションプログラムとＣＰＵ１４１とが、あたかも、一つのハードウェアユニットを構成し、このハードウェアユニットが動作しているようにみせることができる。このハードウェアユニットを実行手段と呼ぶこともある。
（データ暗復号機能部１６０）
データ暗復号機能部１６０（通常セキュリティ処理部とも呼ぶ）は、上位のアプリケーションプログラムからデータ暗復号要求を受け取り、受け取ったデータ暗復号要求に応じて、データを暗復号するコンピュータプログラムであり、複数の命令コードを含む。データ暗復号機能部１６０は、通常鍵テーブル１２８、通常暗復号部１２６及び通常操作部１２７を含む。
【００４１】
データ暗復号機能部１６０に含まれている命令コードに従って、ＣＰＵ１４１が動作することにより、データ暗復号機能部１６０とＣＰＵ１４１とが、あたかも、一つのハードウェアユニットを構成し、このハードウェアユニットが動作しているようにみせることができる。このハードウェアユニットを通常セキュリティ処理手段と呼ぶこともある。
通常操作部１２７は、アプリケーションプログラムＡやアプリケーションプログラムＢなど上位のアプリケーションプログラムからデータ暗復号の要求を受け付け、データ暗復号の鍵の有無、他アプリケーションプログラムの存在の有無を判定し、通常暗復号部１２６又は保護データ操作部１５５を用いて、データの暗復号を行う。通常操作部１２７は、改竄検出部１２７ｘを含む。改竄検出部１２７は、改竄の検出を行う。
【００４２】
通常暗復号部１２６は、図示していない暗号部と復号部とを含み、通常鍵テーブル１２８に格納されている鍵を用いて、データの暗復号を行う。
通常鍵テーブル１２８は、上位のアプリケーションプログラムが利用するデータを暗号化又は復号する際に用いる鍵を一時的に格納するテーブルであり、図４に一例として示すように、１個以上の鍵情報を記憶するための領域を備えている。各鍵情報は、アプリケーションプログラムの参照ハッシュ値及び１個以上のサーバ鍵情報から構成され、各サーバ鍵情報は、サーバ情報及び鍵から構成されている。このように、通常鍵テーブル１２８は、アプリケーションプログラムの参照ハッシュ値とサーバ情報を用いて、一意の鍵が探索可能なように構成されたデータテーブルである。
【００４３】
アプリケーションプログラムは、一例として、Ｗｅｂブラウズ機能を提供するブラウザプログラムである。このブラウザプログラムは、音楽配信サーバ装置及び映画配信サーバ装置から、それぞれ、暗号化された音楽及び暗号化された映画を受信する。それぞれのサーバ装置において、暗号化に用いられる鍵は異なり、復号に用いられる鍵も異なる。このように、アプリケーションプログラムは、音楽配信サーバ装置及び映画配信サーバ装置に関連している。
【００４４】
アプリケーションプログラムの参照ハッシュ値は、当該アプリケーションプログラムの全体に対して、ハッシュを施して生成したハッシュ値である。ハッシュの一例は、ＳＨＡ−１である。
サーバ鍵情報は、アプリケーションプログラムに関連するサーバ装置に対応している。
サーバ情報は、当該アプリケーションプログラムに関連するサーバ装置を識別するための識別情報である。サーバ情報は、ＩＰ（Internet Protocol）アドレスであってもよいし、ＵＲＬ（Universal Resource Location）であってもよいし、それ以外のサーバを一意に識別可能な識別子であってもよい。
【００４５】
鍵は、当該アプリケーションプログラムに関連するサーバ装置からサービスの提供を受ける際に、データの暗号化又は復号のときに用いられる鍵である。
このようなデータ構造を有することにより、所定のアプリケーションプログラムのハッシュ値と対応する暗復号鍵とを対応させる管理が確実且つ簡易となる。そのため、暗復号鍵の秘密性の管理を確実且つ簡易なものとできる。
【００４６】
さらに、このようなデータ構造を有することにより、一つのアプリケーションプログラムに対して複数のサーバ装置に応じて複数の暗復号鍵を生成する場合、サーバの識別情報、アプリケーションプログラムのハッシュ値及び対応する暗復号鍵を対応させる管理が確実且つ簡易となる。そのため、一つのアプリケーションプログラムについての複数の暗復号鍵の秘密性の管理を確実且つ簡易なものとできる。
（２）保護モードの実行環境１２１で動作するソフトウェアの構成要素の説明
保護モードの実行環境１２１は、セキュアオペレーティングシステム１５２、動的改竄検出機能部１５３、セキュアブート部１５４及び保護データ操作部１５５を含む。
（セキュアオペレーティングシステム１５２）
セキュアオペレーティングシステム１５２は、保護モードの場合に動作するオペレーティングシステムであり、保護モードで動作するソフトウェアを管理するソフトウェアである。
（動的改竄検出機能部１５３）
動的改竄検出機能部１５３は、通常モードのロード機能部１２９やデータ暗復号機能部１６０が改竄されていないか否かを検証するソフトウェアである。詳細については後述する。
（セキュアブート部１５４）
セキュアブート部１５４は、情報処理装置１００の電源投入時に、セキュアブートを行う。詳細については後述する。セキュアブート部１５４は、改竄検出部１５４ｘを含む。改竄検出部１５４ｘは、改竄の検出を行う。
（保護データ操作部１５５）
保護データ操作部１５５（保護セキュリティ処理部とも呼ぶ）は、許可リスト１３３、保護暗復号部１３４、保護操作部１３５及び保護鍵テーブル１３６から構成され、データの暗復号鍵の生成及びデータの暗復号を行う。
【００４７】
保護データ操作部１５５に含まれている命令コードに従って、ＣＰＵ１４１が動作することにより、保護データ操作部１５５とＣＰＵ１４１とが、あたかも、一つのハードウェアユニットを構成し、このハードウェアユニットが動作しているようにみせることができる。このハードウェアユニットを保護セキュリティ処理手段と呼ぶこともある。
許可リスト１３３は、接続を許可すべきサーバ装置を識別するサーバ情報を１個以上含んで構成されている。サーバ情報は、当該アプリケーションプログラムに関連するサーバ装置を識別するための識別情報である。ここで、サーバ情報は、ＩＰアドレスであってもよいし、ＵＲＬであってもよいし、それ以外のサーバを一意に識別可能な識別子であってもよい。
【００４８】
保護操作部１３５は、データの暗号化又は復号のために用いる鍵の生成を行う鍵生成部（図示していない）及び改竄検出部１３５ｘを含む。また、データの暗号化を行うように、保護暗復号部１３４に対して指示する。また、改竄検出部１３５ｘは、改竄の検出を行い、データの暗復号の要求を行ったアプリケーションプログラムが、不正なアプリケーションプログラムであるか否かを判定する。また、不正なアプリケーションプログラムであるか否かの判定方法については、後述する。
【００４９】
また、不正なアプリケーションプログラムの場合には、保護操作部１３５は、データ暗復号機能部１６０が保持する鍵を削除する鍵削除部（図示していない）を含む。さらに、通常モードにおいて、不正なアプリケーションプログラムが存在していない場合には、保護操作部１３５は、保護鍵テーブル１３６に格納している鍵を読み出し、読み出した鍵を、モード切替部１４３及び専用メモリ部１０４を介して、データ暗復号機能部１６０に対して出力し、データ暗復号機能部１６０に鍵を格納させる鍵複製部（図示していない）を含む。つまり、保護操作部１３５は、保護鍵テーブル１３６に格納している鍵をデータ暗復号機能部１６０に複写する。なお、詳細については後述する。
【００５０】
保護暗復号部１３４は、保護鍵テーブル１３６に格納されている鍵を用いて、データの暗号化を行う暗号化部及び暗号化されたデータの復号を行う復号部を含む。
保護鍵テーブル１３６は、上位のアプリケーションプログラムが利用するデータを暗号化する際に又は暗号化されたデータを復号する際に用いる鍵を格納するデータテーブルである。保護鍵テーブル１３６は、通常鍵テーブル１２８と同様のデータ構造を有しており、１個以上の鍵情報を記憶するための領域を備えている。各鍵情報は、アプリケーションプログラムの参照ハッシュ値及び１個以上のサーバ鍵情報から構成され、各サーバ鍵情報は、サーバ情報及び鍵から構成されている。これらの参照ハッシュ値、サーバ情報及び鍵については、通常鍵テーブル１２８に含まれるものと同じであるので、説明を省略する。
１．４  情報処理装置１００における動作手順
（１）情報処理装置１００による鍵削除の手順
情報処理装置１００において、データの暗号化及び復号において使用する鍵の削除の手順について、図５を用いて説明する。
【００５１】
アプリケーションプログラムＡ１５８がデータ暗復号機能部１６０に対して、データの暗号化又は復号の要求を出力すると（Ｓ１１）、データ暗復号機能部１６０は、要求元のアプリケーションプログラムの全体をメモリ部１０３から読み出し、読み出したアプリケーションプログラムの全体に対して、ハッシュを施し、例えば、ＳＨＡ−１を施して、当該アプリケーションプログラムのハッシュ値を生成する（Ｓ１２）。次に、通常鍵テーブル１２８から、全ての鍵情報を読み出し、各鍵情報から参照ハッシュ値を抽出し、生成したハッシュ値と、抽出した全ての参照ハッシュ値とをそれぞれ比較する（Ｓ１３）。生成したハッシュ値に一致する参照ハッシュ値が存在しない場合には、つまり、全ての参照ハッシュ値が生成したハッシュ値と一致しない場合には、通常鍵テーブル１２８に格納している全ての鍵情報を削除する（Ｓ１４）。
（２）情報処理装置１００によるセキュアブートの手順
情報処理装置１００において、電源が投入されアプリケーションプログラムが動作可能な状態となるまでのセキュアブートの手順について、図６に示すフローチャート用いて説明する。
【００５２】
情報処理装置１００の電源が投入されると（Ｓ１００）、次に、情報処理装置１００は、保護モードで動作するソフトウェアであるセキュアブート部１５４を起動する（Ｓ１０１）。
次に、セキュアブート部１５４の改竄検出部１５４ｘは、汎用オペレーティングシステム１５７の検証を行う。具体的には、セキュアブート部１５４の改竄検出部１５４ｘは、メモリ部１０３に記憶されている汎用オペレーティングシステム１５７のハッシュ値を生成し、生成したハッシュ値とセキュアブート部１５４があらかじめ安全に格納している参照ハッシュ値とを比較することにより、汎用オペレーティングシステム１５７が改竄されていないか否かを検証する（Ｓ１０２）。その他、Trusted Computing Group（ＴＣＧ）のMobile Phone WG（ＭＰＷＧ）において規定されているセキュアブートを用いて検証してもよい。
【００５３】
汎用オペレーティングシステム１５７が改竄されていないと判定された場合には（Ｓ１０３でＹＥＳ）、セキュアブート部１５４の改竄検出部１５４ｘは、メモリ部１０３に記憶されているデータ暗復号機能部１６０の検証を行う。具体的には、セキュアブート部１５４の改竄検出部１５４ｘは、データ暗復号機能部１６０のハッシュ値を生成し、生成したハッシュ値とセキュアブート部１５４があらかじめ安全に格納している参照ハッシュ値とを比較することにより、データ暗復号機能部１６０が改竄されていないか否かを検証する（Ｓ１０４）。その他、Trusted Computing Group（ＴＣＧ）のMobile Phone WG（ＭＰＷＧ）において規定されているセキュアブートを用いて検証してもよい。なお、ステップＳ１０４の検証は、改竄されていないことが検証された汎用オペレーティングシステム１５７が行ってもよい。
【００５４】
データ暗復号機能部１６０が改竄されていないと判定された場合には（Ｓ１０６でＹＥＳ）、保護データ操作部１５５は、保護鍵テーブル１３６から全ての鍵情報を読み出し、モード切替部１４３及び専用メモリ部１０４を介して、読み出した鍵情報を通常鍵テーブル１２８へ書き込む。つまり、保護鍵テーブル１３６に格納している鍵情報を、通常鍵テーブル１２８へ複写する（Ｓ１０７）。次に、情報処理装置１００は、アプリケーションプログラムが実行可能な状態へ遷移する（Ｓ１０８）。
【００５５】
汎用オペレーティングシステム１５７が改竄されたと判定された場合には（Ｓ１０３でＮＯ）、又は、データ暗復号機能部１６０が改竄されたと判定された場合には（Ｓ１０６でＮＯ）、ユーザに警告メッセージを通知し、さらに、異常停止したことを示す情報を不揮発性記憶部１０２に格納し、その後、情報処理装置１００の起動を停止する（Ｓ１０５）。
【００５６】
なお、データ暗復号機能部１６０の通常鍵テーブル１２８に、図４に示す鍵情報のうち、あらかじめアプリケーションプログラムの参照ハッシュ値とサーバ情報とを格納しておいて、ステップＳ１０７において、鍵情報を複写する代わりに、参照ハッシュに対応付けて鍵のみを複写するとしてもよい。
（３）情報処理装置１００のアプリケーションプログラムによるデータの利用の一連の手順
アプリケーションプログラムによるデータの利用の一連の手順について、図７に示すフローチャートを用いて説明する。アプリケーションプログラムがデータを利用する場合に、情報処理装置１００は、以下に示す手順を実行する。
【００５７】
アプリケーションプログラムの登録処理が行われ（Ｓ１１０）、次に、アプリケーションプログラムは、データを暗号化し（Ｓ１１１）、又は、暗号化データを復号し（Ｓ１１２）、次に、アプリケーションプログラムは、データの読み込み又は書き込みを行う（Ｓ１１３）。アプリケーションプログラムは、ステップＳ１１１〜Ｓ１１３を必要に応じて繰り返すことにより、データを暗復号しながら利用する。
【００５８】
次に、ユーザがアプリケーションプログラムのアンインストールなどの処理を行うことにより、アプリケーションプログラムは削除され（Ｓ１１４）、次にデータの利用が終了する。
（４）データの暗号化の際の状態遷移
情報処理装置１００においては、データの暗号化の際に、図８に示すように、４個の状態１７２、１７３、１７４及び１７５の間を遷移する。
【００５９】
状態１７２は、情報処理装置１００の電源投入直後に、不正なアプリケーションプログラムがメモリ部１０３に記憶されていることを検出した状態である。状態１７３は、データの暗号化をする際に、保護モードにおいて、保護データ操作部１５５により暗号化を行う状態である。状態１７４は、データの暗号化をする際に、通常モードにおいて、保護モードから鍵を取得し、取得した鍵を用いてデータ暗復号機能部１６０により暗号化を行う状態である。状態１７５は、データの暗号化をする際に、通常モードにおいて、通常鍵テーブル１２８の鍵を用い、データ暗復号機能部１６０により暗号化を行う状態である。
【００６０】
情報処理装置１００の電源が投入されると（１７１）、メモリ部１０３に不正なアプリケーションプログラムが格納されているか否かが判断され、不正なアプリケーションプログラムが検出されない場合に（１８１）、状態１７３に遷移する。一方、不正なアプリケーションプログラムが検出された場合に（１８２）、状態１７２に遷移する。
状態１７３において、アプリケーションプログラムからデータの暗号化の要求を受け取ると（１８４）、状態１７４に遷移する。
【００６１】
状態１７４において、さらに、アプリケーションプログラムからデータの暗号化の要求を受け取ると（１８５）、状態１７５に遷移する。
状態１７５において、アプリケーションプログラムからデータの暗号化の要求を受け取ると（１８６）、再度、状態１７５に遷移する。一方、メモリ部１０３に不正なアプリケーションプログラムが格納されていることが検出されると（１８７）、状態１７３に遷移する。
【００６２】
状態１７２において、メモリ部１０３に不正なアプリケーションプログラムが格納されているか否かが判断され、不正なアプリケーションプログラムが格納されていない場合に（１８３）、状態１７３に遷移する。一方、不正なアプリケーションプログラムが格納されている場合に（１８８）、再度、状態１７２に遷移する。
（５）情報処理装置１００におけるアプリケーションプログラムの登録の手順
情報処理装置１００におけるアプリケーションプログラムの登録の手順について、図９に示すシーケンス図を用いて説明する。
【００６３】
ユーザからの要求により、アプリケーションプログラムの実行が指示されると、汎用オペレーティングシステム１５７に対して、当該アプリケーションプログラムの実行要求が出力される（Ｓ２００）。このとき、汎用オペレーティングシステム１５７は、メモリ部１０３において、実行要求の対象である当該アプリケーションプログラムが格納されている位置を示すアドレスを、メモリ部１０３内の実行要求アドレス格納位置に格納する。実行要求アドレス格納位置は、予めメモリ部１０３内において定められた位置に存在する。各プログラムは、実行の対象である当該アプリケーションプログラムを読み出すとき、この実行要求アドレス格納位置を参照し、そこに格納されているアドレスからアプリケーションプログラムの格納位置を知ることができる。実行対象であるアプリケーションプログラムが複数存在する場合には、実行要求アドレス格納位置は、複数個存在する。
【００６４】
汎用オペレーティングシステム１５７は、改竄検出部１５７ｘを用いて、当該アプリケーションプログラムの検証を行い（Ｓ２０１）、当該アプリケーションプログラムが正しいアプリケーションプログラムである場合、当該アプリケーションプログラムの実行を開始する（Ｓ２０２）。
アプリケーションプログラムは、サーバ情報を引数とするアプリケーション登録要求を、データ暗復号機能部１６０へ出力する（Ｓ２０３）。
【００６５】
データ暗復号機能部１６０は、アプリケーション登録要求を受信すると（Ｓ２０３）、モード切替部１４３に、通常モードから保護モードに切り替えるように、モード切替Ａを要求し（Ｓ２０４）、モード切替部１４３は、通常モードから保護モードに切り替えるモード切替Ａを行う（Ｓ２０５）。
モード切替Ａ（Ｓ２０５）によって、動的改竄検出機能部１５３が起動し、動的改竄検出機能部１５３は、アプリケーションプログラムのハッシュ値生成と検証Ａとを行う（Ｓ２０６）。アプリケーションプログラムのハッシュ値生成と検証Ａの詳細については、後述する。
【００６６】
次に、動的改竄検出機能部１５３は、サーバ情報の検証を行う（Ｓ２０７）。サーバ情報検証の詳細については後述する。
次に、動的改竄検出機能部１５３は、保護データ操作部１５５に、ハッシュ値とサーバ情報を引数として、鍵生成要求を行う（Ｓ２０８）。
保護データ操作部１５５は、鍵生成と格納を行い、鍵を内部保護メモリ部１４４に格納する（Ｓ２０９）。鍵生成と格納の詳細については後述する。
【００６７】
そして、保護データ操作部１５５は、動的改竄検出機能部１５３に、鍵の格納が終了したことを示す、つまりアプリケーションプログラムの登録が完了したことを示す結果を通知する（Ｓ２１０）。
動的改竄検出機能部１５３は、データ暗復号機能部１６０が改竄されているか否を検証する（Ｓ２１１）。なお、ステップＳ２１１に対応する操作は、ステップＳ２０５とステップＳ２０６の間で行ってもよい。
【００６８】
そして、動的改竄検出機能部１５３は、モード切替部１４３に、保護モードから通常モードに切り替えるように、モード切替Ｂを要求し（Ｓ２１２）、モード切替部１４３は、保護モードから通常モードに切り替えるモード切替Ｂを行う（Ｓ２１３）。ここで、モード切替部１４３は、保護モードから通常モードに対して転送するデータ、ここでは、前記の結果を、専用メモリ部１０４に書き込み、通常モードに切り替えた後で、専用メモリ部１０４からデータを読み出し、読み出したデータを通常モード側に出力する。なお、モード切替Ｂの詳細については後述する。
【００６９】
モード切替Ｂ（Ｓ２１３）によって、データ暗復号機能部１６０が起動し、データ暗復号機能部１６０は、モード切替部１４３から前記結果を受け取り、データ暗復号機能部１６０は、アプリケーションプログラムに対して、前記結果の通知を行う（Ｓ２１４）。これで、アプリケーションプログラムの登録処理が終了する。
（６）状態１７３から状態１７４への状態遷移についての動作
図８に示す状態１７３から状態１７４への状態遷移についての動作、つまり、保護モードから鍵を取得し、通常モードにおいてデータ暗復号機能部１６０を用いた暗号化を示す状態１７４への遷移の動作について、図１０に示すシーケンス図を用いて説明する。
【００７０】
図８に示す状態１７３の場合に、アプリケーションプログラムによりデータの暗号化要求がされ、かつメモリ部１０３に不正なアプリケーションプログラムが存在しない場合に、次に示す動作がされる。図１０に示すシーケンスが終了した後には、図８に示す状態１７４へ遷移する。
アプリケーションプログラムは、データ暗復号機能部１６０に、平文データとサーバ情報を引数として、データ暗号化要求を行う（Ｓ２２０）。
【００７１】
データ暗復号機能部１６０は、鍵の確認Ａを行い、通常鍵テーブル１２８に鍵が格納されていないことを確認する（Ｓ２２１）。次に、データ暗復号機能部１６０は、平文データとサーバ情報をモード切替部１４３へ出力し、モード切替部１４３に、通常モードから保護モードに切り替えるように、モード切替Ａを要求する（Ｓ２２２）。
モード切替部１４３は、モード切替Ａを行う（Ｓ２２３）。ここで、モード切替部１４３は、通常モードから保護モードに対して転送するデータ、ここでは、平文データとサーバ情報を、専用メモリ部１０４に書き込み、保護モードに切り替えた後で、専用メモリ部１０４からデータを読み出し、読み出したデータを保護モード側に出力する。モード切替Ａの詳細は後述する。モード切替Ａ（Ｓ２２３）によって、保護データ操作部１５５が起動する。保護データ操作部１５５は、モード切替部１４３から平文データとサーバ情報を受け取る。
【００７２】
保護データ操作部１５５の改竄検出部１５５ｘは、アプリケーションプログラムのハッシュ値生成と検証Ｂを行い、データ暗号化要求を行ったアプリケーションプログラムが不正なアプリケーションプログラムであるか否かを検証する（Ｓ２２４）。アプリケーションプログラムのハッシュ値生成と検証Ｂの詳細については後述する。
次に、保護データ操作部１５５の改竄検出部１５５ｘは、他のアプリケーションプログラムの検証を行う（Ｓ２２５）。ここでは、他のアプリケーションプログラムが起動されていなかったと判断されたものとする。なお、他のアプリケーションプログラムの検証の詳細については後述する。
【００７３】
これにより、暗復号鍵を生成する際に用いられたハッシュ値に対応する所定のアプリケーションプログラム以外の他のアプリケーションプログラムが、起動を終了し、暗復号鍵を使用する危険性がなくなった場合に、次に示すようにして、アクセスが許可されている通常鍵テーブル１２８に暗復号鍵を再度複製する。そのため、所定のアプリケーションプログラム以外の他のアプリケーションプログラムが暗復号鍵を使用する危険性がなくなった以降は、再度、暗復号鍵を秘密に管理する場合に要求される暗号化の煩雑な処理を大幅に軽減しつつ、暗復号鍵の秘密を確保してデータの秘匿性を保証できる状態に回復できる。
【００７４】
次に、保護データ操作部１５５は、鍵の確認Ｂを行う（Ｓ２２６）。鍵の確認Ｂの詳細については後述する。そして、内部保護メモリ部１４４の保護鍵テーブル１３６から鍵を読み取り（Ｓ２２７）、動的改竄検出機能部１５３に鍵を送信する（Ｓ２２８）。鍵の送信は、内部保護メモリ部１４４に存在する保護データ操作部１５５と動的改竄検出機能部１５３との共有メモリを介して行う。なお、それ以外の方法を用いて送信してもよい。それ以外の方法の一つとして、ＣＰＵ１４１の汎用レジスタ１４７を用いてもよい。
【００７５】
動的改竄検出機能部１５３は、データ暗復号機能部１６０の検証を行い、改竄されていないかを検証する（Ｓ２２９）。
そして、動的改竄検出機能部１５３は、保護データ操作部１５５から受け取った鍵を指定して、モード切替部１４３に、保護モードから通常モードに切り替えるように、モード切替Ｂを要求する（Ｓ２３０）。
【００７６】
モード切替部１４３は、専用メモリ部１０４に動的改竄検出機能部１５３から指定された鍵を格納し、モード切替Ｂを行う（Ｓ２３１）。モード切替Ｂの詳細については後述する。
モード切替Ｂ（Ｓ２３１）によって、データ暗復号機能部１６０が起動する。また、モード切替部１４３は、専用メモリ部１０４から鍵を読み込んで、読み込んだ鍵をデータ暗復号機能部１６０に送信する。鍵の送信は、メモリ部１０３に存在する共有メモリを介して行う。なお、それ以外の方法を用いて送信してもよい。それ以外の方法として、ＣＰＵ１４１の汎用レジスタ１４７を用いてもよい。
【００７７】
データ暗復号機能部１６０は、送信された鍵を格納する（Ｓ２３２）。鍵の格納の詳細については後述する。
次に、データ暗復号機能部１６０は、メモリ部１０３の通常鍵テーブル１２８に格納されている鍵を用いて、平文データを暗号化する（Ｓ２３３）。ここで、暗号化アルゴリズムとして、ＡＥＳアルゴリズム、Ｔｒｉｐｌｅ  ＤＥＳアルゴリズム、ＲＳＡアルゴリズム、楕円曲線暗号アルゴリズムを利用してもよい。
【００７８】
次に、データ暗復号機能部１６０は、暗号化データに対して、一意な識別子であるデータＩＤを割り当て、管理を行う。さらに、上位のアプリケーションプログラムにデータＩＤを通知する（Ｓ２３４）。なお、暗号化データに対してデータＩＤを割り当てずに、暗号化データを上位のアプリケーションプログラムに全て通知し、上位のアプリケーションプログラムが暗号化データを管理してもよい。
【００７９】
以上説明したように、暗復号鍵はアクセスが制限された保護モードの保護鍵テーブル１３６に格納され、保護データ操作部１５５が暗復号を用いて暗復号処理を行う１回目のときに、アクセスが制限された保護鍵テーブル１３６から暗復号鍵を取得するためにモードを切替える処理を行う。それ以降はアクセスが許可されている通常鍵テーブル１２８に暗復号鍵を複製し、この複製した暗復号鍵を用いて暗復号する。そのため、暗復号処理の毎に前記モードを切替える処理は不要となるので、暗復号鍵を秘密に管理する場合に要求される暗号化の煩雑な処理を大幅に軽減できる。
（７）状態１７５への遷移の動作
図８に示す状態１７５への遷移の動作について、図１１に示すシーケンス図を用いて説明する。
【００８０】
図８に示す状態１７４「保護モードから鍵を取得し、通常モードのデータ暗復号機能部を用いた暗号化」の場合、及び状態１７５「通常モードのデータ暗復号機能部のみを用いた暗号化」の場合に、データ暗号要求が行われ、かつ不正なアプリが存在しない場合に、図１１に示す動作が行われる。図１１に示す動作が完了した後には、図８の状態１７５へ遷移する。
【００８１】
アプリケーションプログラムは、データ暗復号機能部１６０に、平文データとサーバ情報を引数として、データ暗号化要求を行う（Ｓ２４０）。
データ暗復号機能部１６０の改竄検出部１２７ｘは、アプリケーションプログラムのハッシュ値生成と検証Ｂとを行い、データ暗号化要求を行ったアプリケーションプログラムが不正なアプリケーションプログラムであるか否かを検証する（Ｓ２４１）。アプリのハッシュ値生成と検証Ｂの詳細については後述する。ここでは、データ暗号化要求を行ったアプリケーションプログラムが不正なアプリケーションプログラムでないと判断されたものとする。
【００８２】
次に、アプリケーションプログラムが不正でない場合に、データ暗復号機能部１６０の改竄検出部１２７ｘは、他のアプリケーションプログラムの検証を行う（Ｓ２４２）。ここでは、他のアプリケーションプログラムが起動されていなかったと判断されたものとする。他のアプリケーションプログラムの検証の詳細については後述する。
次に、データ暗復号機能部１６０は、鍵の確認Ａを行う（Ｓ２４３）。ここでは、鍵が存在していると判断されたものとする。鍵の確認Ａの詳細については後述する。次に、データ暗復号機能部１６０は、メモリの通常鍵テーブル１２８に格納されている鍵を読み取り、読み取った鍵を用いて、平文データを暗号化する（Ｓ２４４）。ここで、暗号化アルゴリズムとして、ＡＥＳアルゴリズム、Ｔｒｉｐｌｅ  ＤＥＳアルゴリズム、ＲＳＡアルゴリズム、楕円曲線暗号アルゴリズムを利用してもよい。
【００８３】
次に、データ暗復号機能部１６０は、暗号化データに一意な識別子であるデータＩＤを割り当て、管理を行う。さらに、上位のアプリケーションプログラムにデータＩＤを通知する（Ｓ２４５）。なお、暗号化データに対してデータＩＤを割り当てずに、暗号化データを上位のアプリケーションプログラムに全て通知し、上位アプリケーションプログラムが暗号化データを管理してもよい。
【００８４】
これによると、暗復号鍵はアクセスが制限された保護モードの保護鍵テーブル１３６に格納され、保護データ操作部１５５が暗復号を用いて暗復号処理を行う１回目のときに、アクセスが制限された保護鍵テーブル１３６から暗復号鍵を取得するためにモードを切替える処理を行うが、それ以降はアクセスが許可されている通常鍵テーブル１２８に暗復号鍵を複製し、この複製した暗復号鍵を用いて暗復号する。そのため、暗復号処理の毎に前記モードを切替える処理は不要となるので、暗復号鍵を秘密に管理する場合に要求される暗号化の煩雑な処理を大幅に軽減できる。
（８）状態１７３への遷移の動作
図８に示す状態１７３「保護モードの保護データ操作部を用いた暗号化」への遷移の動作について、図１２に示すシーケンス図を用いて説明する。
【００８５】
図８の状態１７５「通常モードのデータ暗復号機能部のみを用いた暗号化」の場合に、データ暗号要求が行われ、かつ不正なアプリが存在する場合に、図１２に示す動作が行われる。図１２に示す動作が完了した後には、再度、図８の状態１７３に遷移する。
アプリケーションプログラムがデータ暗復号機能部１６０に、平文データとサーバ情報を引数として、データ暗号化要求を行う（Ｓ２５０）。
【００８６】
次に、データ暗復号機能部１６０の改竄検出部１２７ｘは、アプリケーションプログラムのハッシュ値生成と検証Ｂを行い、データ暗号化要求を行ったアプリケーションプログラムが不正なアプリケーションプログラムであるか否かを検証する（Ｓ２５１）。ここでは、当該アプリケーションプログラムが不正なプログラムではなかったと判断されたものとする。なお、アプリケーションプログラムのハッシュ値生成と検証Ｂの詳細については後述する。
【００８７】
次に、データ暗復号機能部１６０の改竄検出部１２７ｘは、他のアプリケーションプログラムの検証を行う（Ｓ２５２）。ここでは、不正な他のアプリケーションプログラムが存在することを検知したものとする。なお、他のアプリケーションプログラムの検証の詳細については後述する。その場合に、データ暗復号機能部１６０は、通常鍵テーブル１２８に格納している鍵を全て削除する。削除する場合に、通常鍵テーブル１２８に格納している鍵に、「０」などの特定の値を上書きしてもよいし、乱数を発生させ、その乱数を上書きしてもよい。
【００８８】
そして、データ暗復号機能部１６０は、鍵の確認Ａを行う（Ｓ２５３）。ここでは、鍵がメモリ部１０３に存在しないことを確認したものとする。なお、鍵の確認Ａの詳細については後述する。次に、モード切替部１４３に対して、モード切替要求を行う（Ｓ２５４）。モード切替部１４３は、モード切替Ａを行う（Ｓ２５５）。なお、モード切替Ａの詳細については後述する。
【００８９】
モード切替Ａ（Ｓ２５５）によって、保護データ操作部１５５が起動する。
保護データ操作部１５５の改竄検出部１５５ｘは、ステップＳ２５５とステップＳ２５７の間に、アプリケーションプログラムのハッシュ値生成と検証Ｂを行って、データ暗号化要求を行ったアプリケーションプログラムが不正なアプリケーションプログラムであるか否かを検証する（Ｓ２５６）。ここでは、データ暗号化要求を行ったアプリケーションプログラムが不正なアプリケーションプログラムでないと判断されたものとする。
【００９０】
次に、保護データ操作部１５５は、鍵の確認Ｂを行う（Ｓ２５７）。ここでは、鍵が存在したと確認されたものとする。鍵の確認Ｂの詳細については後述する。次に、保護データ操作部１５５は、内部保護メモリ部１４４から鍵を読み取り、読み取った鍵を用いてデータの暗号化を行う（Ｓ２５８）。ここで、暗号化アルゴリズムとして、ＡＥＳアルゴリズム、Ｔｒｉｐｌｅ  ＤＥＳアルゴリズム、ＲＳＡアルゴリズム、楕円曲線暗号アルゴリズムを利用してもよい。
【００９１】
次に、保護データ操作部１５５は、動的改竄検出機能部１５３に、暗号化データの通知を行う（Ｓ２５９）。
動的改竄検出機能部１５３は、データ暗復号機能部１６０の検証を行い、改竄されていないかを検証する（Ｓ２６０）。次に、動的改竄検出機能部１５３は、モード切替部１４３に、暗号化データを通知し、保護モードから通常モードに切り替えるように、モード切替Ｂを要求する（Ｓ２６１）。
【００９２】
モード切替部１４３は、受け取った暗号化データを専用メモリ部１０４に格納し、モード切替Ｂを行う（Ｓ２６２）。モード切替Ｂの詳細については後述する。モード切替Ｂ（Ｓ２６２）によって、データ暗復号機能部１６０が起動する。この場合に、モード切替部１４３は、専用メモリ部１０４から暗号化データを読み出し、データ暗復号機能部１６０に暗号化データを通知する。
【００９３】
データ暗復号機能部１６０は、通知された暗号化データに一意な識別子であるデータＩＤを割り当て、管理を行う。さらに、上位のアプリケーションプログラムにデータＩＤを通知する（Ｓ２６３）。なお、暗号化データに対してデータＩＤを割り当てずに、暗号化データを上位のアプリケーションプログラムに全て通知し、上位のアプリケーションプログラムが暗号化データを管理してもよい。
【００９４】
これにより、通常鍵テーブル１２８に複製された暗復号鍵が通常鍵テーブル１２８から消去された後は、通常モードの状態でデータ暗復号機能部１６０に暗復号処理を行なわせるのではなく、通常モードから保護モードに切替え、暗復号鍵が格納された保護鍵テーブル１３６へのアクセスが可能な保護データ操作部１５５に暗復号化処理を行わせる。そのため、通常鍵テーブル１２８に複製された暗復号鍵が通常鍵テーブル１２８から消去された後、モードの切替え処理が行われるものの、暗復号鍵の秘密を確保でき、その結果、データの秘匿性を保証できる。
（９）不正なアプリケーションプログラムから暗号化要求が行われた場合の動作
不正なアプリケーションプログラムから暗号化要求が行われた場合の動作について、図１３に示すシーケンス図を用いて説明する。
【００９５】
不正なアプリケーションプログラムから暗号化要求が行われた場合には、情報処理装置１００の状態は、図８の状態１７３「保護モードの保護データ操作部を用いた暗号化」に遷移する。
アプリケーションプログラムがデータ暗復号機能部１６０に、平文データとサーバ情報を引数として、データ暗号化要求を行う（Ｓ２７０）。
【００９６】
データ暗復号機能部１６０の改竄検出部１２７ｘは、アプリケーションプログラムのハッシュ値生成と検証Ｂを行い、データ暗号化要求を行ったアプリケーションプログラムが不正なアプリケーションプログラムであるか否かを検証する（Ｓ２７１）。ここでは、アプリケーションプログラムが不正であると判断されたものとする。不正なアプリケーションプログラムであると判断した場合には、データ暗復号機能部１６０は、通常鍵テーブル１２８に格納している鍵を全て削除する（Ｓ２７２）。鍵の削除の方法として、通常鍵テーブル１２８に格納している鍵に、特定の値を上書きしてもよいし、乱数を発生させ、乱数を上書きしてもよい。なお、アプリケーションプログラムのハッシュ値生成と検証Ｂの詳細については後述する。
【００９７】
次に、データ暗復号機能部１６０は、アプリケーションプログラムに暗号化処理が失敗したことを通知する（Ｓ２７３）。
これにより、暗復号鍵を生成する際に用いられたハッシュ値（図２１を用いて後述する）に対応するアプリケーションプログラム以外のアプリケーションプログラムが、アクセスが制限されていない通常鍵テーブル１２８に格納されている暗復号鍵を使用する危険性がある場合には、通常鍵テーブル１２８に格納されている暗復号鍵を消去するので、暗復号鍵の秘密を確保でき、その結果、データの秘匿性も保証できる。
【００９８】
従って、暗復号鍵を秘密に管理する場合に要求される暗号化の煩雑な処理を大幅に軽減しつつ、暗復号鍵の秘密を確保してデータの秘匿性を保証できる。
（１０）暗号化データの復号の状態遷移
情報処理装置１００においては、暗号化データの復号の際に、図１４に示すように、４個の状態１９２、１９３、１９４及び１９５の間を遷移する。
【００９９】
状態１９２は、情報処理装置１００の電源投入直後に、不正なアプリケーションプログラムがメモリ部１０３に記憶されていることが検出された状態である。状態１９３は、暗号化データの復号をする際に、保護モードにおいて、保護データ操作部１５５により復号を行う状態である。状態１９４は、暗号化データの復号をする際に、通常モードにおいて、保護モードから鍵を取得し、取得した鍵を用いてデータ暗復号機能部１６０により復号を行う状態である。状態１９５は、暗号化データの復号をする際に、通常モードにおいて、通常鍵テーブル１２８の鍵を用い、データ暗復号機能部１６０により復号を行う状態である。
【０１００】
情報処理装置１００の電源が投入されると（１９１）、メモリ部１０３に不正なアプリケーションプログラムが格納されているか否かが判断され、不正なアプリケーションプログラムが検出されない場合に（２０１）、状態１９３に遷移する。一方、不正なアプリケーションプログラムが検出された場合に（２０２）、状態１９２に遷移する。
状態１９３において、アプリケーションプログラムから暗号化データの復号の要求を受け取ると（２０４）、状態１９４に遷移する。
【０１０１】
状態１９４において、さらに、アプリケーションプログラムから暗号化データの復号の要求を受け取ると（２０５）、状態１９５に遷移する。
状態１９５において、アプリケーションプログラムから暗号化データの復号の要求を受け取ると（２０６）、再度、状態１９５に遷移する。一方、メモリ部１０３に不正なアプリケーションプログラムが格納されていることが検出されると（２０７）、状態１９３に遷移する。
【０１０２】
状態１９２において、メモリ部１０３に不正なアプリケーションプログラムが格納されているか否かが判断され、不正なアプリケーションプログラムが格納されていない場合に（２０３）、状態１９３に遷移する。一方、不正なアプリケーションプログラムが格納されている場合に（２０８）、再度、状態１９２に遷移する。
図８に示すデータの暗号化の状態遷移と、図１４に示す暗号化データの復号の状態遷移とは、データを暗号化する、又は、暗号化データを復号するという点のみが異なっている。このため、以下の暗号化データの復号の説明においては、代表的な「保護モードから鍵を取得し、通常モードのデータ暗復号機能部１６０を用いた復号」のみを対象として行う。
（１１）状態１９４へ遷移する際の情報処理装置１００の動作
図１４に示す状態１９４「保護モードから鍵を取得し、通常モードのデータ暗復号機能部１６０を用いた復号」へ遷移する際の情報処理装置１００の動作について、図１５に示すシーケンス図を用いて説明する。
【０１０３】
図１４に示す状態１９３「保護モードの保護データ操作部を用いた復号」の場合に、暗号化データの復号要求が行われ、かつ不正なアプリが存在しない場合に、情報処理装置１００は、図１５に示すように動作する。図１５に示すように動作が完了した後に、図１４に示す状態１９４「保護モードから鍵を取得し、通常モードのデータ暗復号機能部１６０を用いた復号」に遷移する。
【０１０４】
アプリケーションプログラムは、データ暗復号機能部１６０に対して、暗号化データを示すデータＩＤとサーバ情報を引数として、データ復号要求を行う（Ｓ２８０）。
データ暗復号機能部１６０は、鍵の確認Ａを行う（Ｓ２８１）。ここでは、通常鍵テーブル１２８に鍵が格納されていないことを確認したものとする。
次に、データ暗復号機能部１６０は、モード切替部１４３に、通常モードから保護モードに切り替えるように、モード切替Ａを要求する（Ｓ２８２）。モード切替部１４３は、モード切替Ａを行う（Ｓ２８３）。なお、モード切替Ａの詳細については後述する。モード切替Ａ（Ｓ２８３）によって、保護データ操作部１５５が起動する。
【０１０５】
保護データ操作部１５５の改竄検出部１５５ｘは、アプリケーションプログラムのハッシュ値生成と検証Ｂを行い、データ復号要求を行ったアプリケーションプログラムが不正なアプリケーションプログラムであるか否かを検証する（Ｓ２８４）。ここで、当該アプリケーションプログラムは、不正なプログラムではなかったと判断されたものとする。なお、アプリケーションプログラムのハッシュ値生成と検証Ｂの詳細については後述する。
【０１０６】
次に、保護データ操作部１５５の改竄検出部１５５ｘは、他のアプリケーションプログラムの検証を行う（Ｓ２８５）。ここでは、他のアプリケーションプログラムが起動されていなかったと判断されたものとする。なお、他のアプリケーションプログラムの検証の詳細については後述する。
次に、保護データ操作部１５５は、鍵の確認Ｂを行う（Ｓ２８６）。ここでは、鍵が存在すると判断されたものとする。なお、鍵の確認Ｂの詳細については後述する。さらに、保護データ操作部１５５は、内部保護メモリ部１４４の保護鍵テーブル１３６から鍵を読み取り（Ｓ２８７）、動的改竄検出機能部１５３に対して読み取った鍵を送信する（Ｓ２８８）。鍵の送信は、内部保護メモリ部１４４に存在する保護データ操作部１５５と動的改竄検出機能部１５３との共有メモリを介して行う。なお、それ以外の方法を用いて送信してもよい。それ以外の方法として、ＣＰＵ１４１の汎用レジスタ１４７を用いてもよい。
【０１０７】
動的改竄検出機能部１５３は、データ暗復号機能部１６０の検証を行い、改竄されているか否かを検証する（Ｓ２８９）。ここでは、データ暗復号機能部１６０は改竄されていないと判断されたものとする。
次に、動的改竄検出機能部１５３は、鍵を指定して、モード切替部１４３に対して、保護モードから通常モードに切り替えるように、モード切替Ｂを要求する（Ｓ２９０）。
【０１０８】
モード切替部１４３は、専用メモリ部１０４に動的改竄検出機能部１５３から指定された鍵を格納し、モード切替Ｂを行う（Ｓ２９１）。なお、モード切替Ｂの詳細については後述する。モード切替Ｂ（Ｓ２９１）によって、データ暗復号機能部１６０が起動する。また、モード切替部１４３は、専用メモリ部１０４から鍵を読み込んで、読み込んだ鍵をデータ暗復号機能部１６０へ送信する。鍵の送信は、メモリに存在する共有メモリを介して行う。なお、それ以外の方法を用いて送信してもよい。それ以外の方法として、ＣＰＵ１４１の汎用レジスタ１４７を用いてもよい。
【０１０９】
データ暗復号機能部１６０は、送信された鍵を通常鍵テーブル１２８に格納する（Ｓ２９２）。鍵の格納の詳細については後述する。次に、データ暗復号機能部１６０は、メモリ部１０３の通常鍵テーブル１２８に格納されている鍵を読み取り、読み取った鍵を用いて、暗号化データを復号する（Ｓ２９３）。ここで、復号アルゴリズムとして、ＡＥＳアルゴリズム、Ｔｒｉｐｌｅ  ＤＥＳアルゴリズム、ＲＳＡアルゴリズム、楕円曲線暗号アルゴリズムを利用してもよい。
【０１１０】
次に、データ暗復号機能部１６０は、生成した平文データに一意な識別子であるデータＩＤを割り当て、管理を行う。さらに、上位のアプリケーションプログラムにデータＩＤを通知する（Ｓ２９４）。なお、平文データに対してデータＩＤを割り当てない場合には、データ暗復号機能部１６０は、データＩＤの代わりに、平文データを引数としてアプリケーションプログラムに渡す。
（１２）アプリケーションプログラムの検証の動作
情報処理装置１００によるアプリケーションプログラムの検証の動作について、図１６に示すフローチャートを用いて説明する。
【０１１１】
ここで説明するアプリケーションプログラムの検証の動作は、図９のステップＳ２０１に示すアプリケーションプログラムの検証の詳細である。
汎用オペレーティングシステム１５７の改竄検出部１５７ｘは、メモリ部１０３からアプリケーションプログラムを読み出し、読み出したアプリケーションプログラムに対して、一例として、ＳＨＡ−１などの一方向性関数を用いて、ハッシュ値を生成する（Ｓ４０１）。
【０１１２】
次に、汎用オペレーティングシステム１５７の改竄検出部１５７ｘは、生成したハッシュ値が、通常鍵テーブル１２８が保持するハッシュ値のいずれかと一致するか否かを判定する（Ｓ４０２）。
一致する場合には（Ｓ４０２でＹＥＳ）、アプリケーションプログラムの検証は正常に終了する。一致しない場合には（Ｓ４０２でＮＯ）、アプリケーションプログラムの検証は異常終了となる。
【０１１３】
異常終了の場合には、汎用オペレーティングシステム１５７は、アプリケーションプログラムを実行しない、つまり、実行を禁止する。また、不正なアプリケーションプログラムであることを示す情報をログとして不揮発性記憶部１０２に格納しておいてもよい。さらに、情報処理装置１００の電源が切断され、次に電源が投入された場合に、不正なアプリケーションプログラムであることを示す情報のログを用いて、情報処理装置１００はセーフモードで起動してもよい。なお、セーフモードによる起動に関しては、セーフブートとして後述する。
【０１１４】
また、ハッシュ値の生成において、ＳＨＡ−１以外の一方向性関数を用いてもよい。例えば、ＭＤ５、ＳＨＡ−２５６、ＡＥＳ、ＤＥＳを用いても良い。
（１３）セーフブートの動作
セーフブートの動作について、図１７に示すフローチャートを用いて、説明する。
情報処理装置１００に電源が投入されると（Ｓ６８０）、次に、保護モードのソフトウェアであるセキュアブート部１５４が起動される（Ｓ６８１）。
【０１１５】
次に、セキュアブート部１５４は、メモリ部１０３に格納されているアプリケーションプログラムが不正なアプリケーションプログラムであることを示す情報がログとして不揮発性記憶部１０２に格納されているか否かを判定する（Ｓ６８２）。
メモリ部１０３に格納されているアプリケーションプログラムが不正なアプリケーションプログラムであることを示す情報がログとして存在する場合には（Ｓ６８２でＹＥＳ）、セーフモードへ移行する（Ｓ６８３）。セーフモードにおいて、セキュアブート部１５４は、保護データ操作部１５５に対して、以降の暗復号処理において、保護鍵テーブル１３６に格納している暗復号鍵を、通常モードの通常鍵テーブル１２８に複写せずに、保護データ操作部１５５が暗復号処理を行うように設定する。次に、ステップＳ６８４へ制御を移す。
【０１１６】
不正なアプリケーションプログラムが存在したことを示す情報がログとして存在しない場合には（Ｓ６８２でＮＯ）、セキュアブート部１５４の改竄検出部１５４ｘは、汎用オペレーティングシステム１５７の検証を行う（Ｓ６８４）。具体的には、セキュアブート部１５４の改竄検出部１５４ｘは、汎用オペレーティングシステム１５７のハッシュ値を生成し、生成したハッシュ値とあらかじめ安全に格納してある参照ハッシュ値とを比較し、汎用オペレーティングシステム１５７が改竄されていないか否かを検証する。なお、Trusted Computing Group（ＴＣＧ）のMobile Phone WG（ＭＰＷＧ）で規定するセキュアブートを用いて検証してもよい。
【０１１７】
汎用オペレーティングシステム１５７が改竄されていないと判定された場合には（Ｓ６８５でＹＥＳ）、セキュアブート部１５４の改竄検出部１５４ｘは、データ暗復号機能部１６０の検証を行う。具体的には、セキュアブート部１５４の改竄検出部１５４ｘは、データ暗復号機能部１６０のハッシュ値を生成し、生成したハッシュ値とあらかじめ安全に格納してある参照ハッシュ値とを比較し、データ暗復号機能部１６０が改竄されていないか否かを検証する。なお、Trusted Computing Group（ＴＣＧ）のMobile Phone WG（ＭＰＷＧ）で規定するセキュアブートを用いて検証してもよい。
【０１１８】
データ暗復号機能部１６０が改竄されていないと判定された場合には（Ｓ６８７でＹＥＳ）、セーフモードか否かを判定し（Ｓ６８８）、セーフモードでない場合には（Ｓ６８８でＮＯ）、保護データ操作部１５５は、データ暗復号機能部１６０の通常鍵テーブル１２８に、保護鍵テーブル１３６に格納しているハッシュ値を複写し（Ｓ６８９）、次に、アプリケーションプログラムが実行可能な状態に遷移する（Ｓ６９１）。
【０１１９】
セーフモードである場合には（Ｓ６８８でＹＥＳ）、次に、アプリケーションプログラムが実行可能な状態に遷移する（Ｓ６９１）。
汎用オペレーティングシステム１５７が改竄されていると判定された場合には（Ｓ６８５でＮＯ）、又は、データ暗復号機能部１６０が改竄されていると判定された場合には（Ｓ６８７でＮＯ）、情報処理装置１００の起動を停止する。さらにユーザに警告メッセージを通知してもよい（Ｓ６９０）。
【０１２０】
なお、ステップＳ６８６の検証は、改竄されていないことが検証された汎用オペレーティングシステム１５７が行ってもよい。
また、ステップＳ６８９でハッシュ値を複写する代わりに、あらかじめデータ暗復号機能部１６０の通常鍵テーブル１２８がハッシュ値を格納していてもよい。
（１４）モード切替Ａの動作
通常モードから保護モードへの遷移を行うモード切替Ａの動作について、図１８に示すフローチャートを用いて説明する。ここで説明する動作は、図９に示すステップＳ２０５、図１０に示すステップＳ２２３、図１２に示すステップＳ２５５、図１５に示すステップＳ２８３の詳細である。
【０１２１】
モード切替部１４３は、システムＬＳＩ１０１のＣＰＵ１４１の汎用レジスタ１４７と制御レジスタ１４８とバッファ領域１４９とに記憶されているデータと、周辺回路１４２の制御レジスタ１５０とバッファ領域１５１とに記憶されているデータとをメモリ部１０３に、通常切替用データ１６２として格納する（Ｓ４１１）。
次に、モード切替部１４３が、システムＬＳＩ１０１のＣＰＵ１４１と周辺回路１４２をリセットし、内部保護メモリ部１４４をアクセス可能に設定する（Ｓ４１２）。
【０１２２】
次に、保護モードで利用するシステムＬＳＩ１０１のＣＰＵ１４１の汎用レジスタ１４７と制御レジスタ１４８とバッファ領域１４９とに記憶されているデータと、周辺回路１４２の制御レジスタ１５０とバッファ領域１５１とに記憶されているデータそれぞれが暗号化されてメモリ部１０３に格納されているか否か判定する（Ｓ４１３）。
格納されていると判定された場合には（Ｓ４１３でＹＥＳ）、モード切替部１４３は、メモリ部１０３に格納されている暗号化された保護切替用データ１６１を復号する（Ｓ４１４）。ここで、保護切替用データ１６１の復号において用いられる復号アルゴリズムとして、ＡＥＳアルゴリズム、Ｔｒｉｐｌｅ  ＤＥＳアルゴリズム、ＲＳＡアルゴリズム、楕円曲線暗号アルゴリズムを利用してもよい。また、保護切替用データ１６１を復号する際に、復号鍵として、内部保護メモリ部１４４に格納されている鍵を用いてもよいし、システムＬＳＩ１０１固有の鍵を用いてもよい。
【０１２３】
次に、モード切替部１４３は、復号により生成した保護切替用データをシステムＬＳＩ１０１のＣＰＵ１４１の汎用レジスタ１４７と制御レジスタ１４８とバッファ領域１４９と、周辺回路１４２の制御レジスタ１５０とバッファ領域１５１に設定する（Ｓ４１５）。こうして、モード切替Ａが終了する。
暗号化された保護切替用データが格納されていないと判定された場合には（Ｓ４１３でＮＯ）、次に、モード切替Ａが終了する。
（１５）アプリケーションプログラムのハッシュ値生成と検証Ａの動作
アプリケーションプログラムのハッシュ値生成と検証Ａの動作について、図１９に示すフローチャートを用いて説明する。ここで説明するハッシュ値生成と検証Ａの動作は、図９のステップＳ２０６の詳細である。
【０１２４】
動的改竄検出機能部１５３は、メモリ部１０３上に展開されているアプリケーションプログラムの実行イメージに対して、ＳＨＡ−１などの一方向性関数を用いて、ハッシュ値を生成する（Ｓ４２１）。
次に、動的改竄検出機能部１５３は、生成したハッシュ値と一致する値が、保護鍵テーブル１３６が保持するハッシュ値に含まれるか否かを判定する（Ｓ４２２）。
【０１２５】
含まれると判定された場合には（Ｓ４２２でＹＥＳ）、アプリのハッシュ値生成と検証Ａは、正常に終了する。含まれないと判定された場合には（Ｓ４２２でＮＯ）、アプリのハッシュ値生成と検証Ａは、異常終了となる。
異常終了の場合には、セキュアオペレーティングシステム１５２は、アプリケーションプログラムの実行を禁止する。さらに、不正なアプリケーションプログラムであることを示す情報をログとして不揮発性記憶部１０２に格納しておいてもよい。
【０１２６】
なお、ハッシュ値の生成において、ＳＨＡ−１以外の一方向性関数を用いてもよい。例えば、ＭＤ５、ＳＨＡ−２５６、ＡＥＳ、ＤＥＳを用いても良い。
（１６）サーバ情報の検証の動作
サーバ情報の検証の動作について、図２０に示すフローチャートを用いて説明する。なお、ここでは、説明するサーバ情報の検証の動作は、図９のステップＳ２０７の詳細である。
【０１２７】
動的改竄検出機能部１５３は、指定されたサーバ情報が、許可リスト１３３に含まれるか否かを判定する（Ｓ４３１）。
指定されたサーバ情報が許可リスト１３３に含まれているならば（Ｓ４３１でＹＥＳ）、サーバ情報の検証は、正常終了し、サーバ情報は、正当と認められる。サーバ情報が許可リスト１３３に含まれていないならば（Ｓ４３１でＮＯ）、サーバ情報の検証は、異常終了し、サーバ情報は、不当と認められる。異常終了時には、セキュアオペレーティングシステム１５２は、アプリケーションプログラムの実行を禁止する。さらに、不正なアプリケーションプログラムであることを示す情報をログとして不揮発性記憶部１０２に格納しておいてもよい。
【０１２８】
なお、許可リスト１３３に代えて、保護データ操作部１５５は、不許可リストを記憶しているとしてもよい。不許可リストは、許可されないサーバ装置を識別するサーバ情報を１個以上含んで構成されている。なお、不許可リストは、許可されないサーバ装置を識別するサーバ情報を含んでいなくてもよい。この場合に、動的改竄検出機能部１５３は、指定されたサーバ情報が、不許可リストに含まれるか否かを判定し、含まれない場合に、サーバ情報の検証は、正常終了し、含まれる場合に、サーバ情報の検証は、異常終了するとしてもよい。
【０１２９】
また、許可リスト１３３と不許可リストとを用いて、サーバ情報の検証を行うとしてもよい。
なお、許可リストや不許可リストには、改竄を検出するための電子署名が付いていてもよい。その電子署名の検証は保護モードで行い、検証鍵は端末製造メーカの鍵でもよい。
（１７）鍵の生成と格納の動作
鍵の生成と格納の動作について、図２１に示すフローチャートを用いて説明する。なお、ここで説明する鍵の生成と格納の動作は、図９のステップＳ２０９の詳細である。
【０１３０】
保護データ操作部１５５は、アプリケーションプログラムのハッシュ値とサーバ情報と端末固有情報とに基づいて、暗復号鍵を生成する（Ｓ４４１）。
具体的には、次の式により暗復号鍵を生成する。
暗復号鍵＝Ｈａｓｈ（ハッシュ値＋サーバ情報＋端末固有情報）
ここで、Ａ＝Ｈａｓｈ（Ｂ）は、Ｂにハッシュを施してＡが得られることを示し、演算子「＋」は、結合を示す。つまり、ハッシュ値とサーバ情報と端末固有情報とをこの順序で結合し、その結合結果に対して、ハッシュを施して、暗復号鍵を得る。ここで、ハッシュは、一例として、ＳＨＡ−１である。
【０１３１】
また、端末固有情報は、情報処理装置１００を一意に識別する識別情報であり、保護データ操作部１５５内に予め記憶されている。
次に、保護データ操作部１５５は、生成した暗復号鍵を、保護鍵テーブル１３６内のハッシュ値及びサーバ情報に対応する鍵情報内に格納する（Ｓ４４２）。これで、鍵生成と格納の処理が終了する。
【０１３２】
なお、ステップＳ４４１の鍵生成で、端末固有情報を用いずに鍵を生成してもよい。
具体的には、次の式により暗復号鍵を生成する。
暗復号鍵＝Ｈａｓｈ（ハッシュ値＋サーバ情報）
これにより、暗復号鍵が端末固有情報に依存しないので、別の情報処理装置へ暗号化データを移動しても、この別の情報処理装置において、端末固有情報に依存しない暗復号鍵を生成でき、生成した暗復号鍵を用いて、暗号化データを復号することができる。
【０１３３】
なお、ステップＳ４１１の鍵生成で、生成した暗復号鍵を、図示していない保護モードでのみアクセス可能な不揮発性記憶部に格納してもよい。これにより、情報処理装置の電源断が行われても、鍵を保持することが可能となる。
また、ステップＳ４１１の鍵生成で、アプリケーションプログラムのハッシュ値のみを用いて、暗復号鍵を生成してもよい。これにより、暗復号鍵をアプリケーションプログラムに固有とすることができる。
【０１３４】
具体的には、次の式により暗復号鍵を生成する。
暗復号鍵＝Ｈａｓｈ（ハッシュ値）
また、ステップＳ４１１の鍵生成で、サーバ情報のみを用いて、暗復号鍵を生成してもよい。これにより、暗復号鍵をサーバ固有とすることができる。
具体的には、次の式により暗復号鍵を生成する。
【０１３５】
暗復号鍵＝Ｈａｓｈ（サーバ情報）
また、ステップＳ４１１の鍵生成で、端末固有情報のみを用いて、暗復号鍵を生成してもよい。これにより、暗復号鍵を端末固有とすることができる。
具体的には、次の式により暗復号鍵を生成する。
暗復号鍵＝Ｈａｓｈ（端末固有情報）
また、ステップＳ４１１の鍵生成で、図示していないタイマーなどを用いて乱数を生成し、生成した乱数とアプリのハッシュ値とサーバ情報と端末固有情報を用いて、暗復号鍵を生成してもよい。これにより、暗復号鍵に乱数性が加わるため、鍵の値の推測を困難にすることができる。
【０１３６】
具体的には、次の式により暗復号鍵を生成する。
暗復号鍵＝Ｈａｓｈ（乱数＋ハッシュ値＋サーバ情報＋端末固有情報）
これによると、一つのアプリケーションプログラムが複数のサーバ装置にデータを送信する場合には、一つのアプリケーションプログラムに対して、複数のサーバに応じて複数の暗号鍵を生成できる。
（１８）データ暗復号機能部１６０を検証する動作
データ暗復号機能部１６０を検証する動作について、図２２に示すフローチャートを用いて説明する。なお、ここで説明するデータ暗復号機能部１６０を検証する動作は、図９のステップＳ２１１、図１０のステップＳ２２９、図１２のステップＳ２６０及び図１５のステップＳ２８９の詳細である。
【０１３７】
動的改竄検出機能部１５３は、メモリ部１０３に展開されているデータ暗復号機能部１６０の実行イメージに対して、ＳＨＡ−１などの一方向性関数を用いて、データ暗復号機能部１６０のハッシュ値を生成する（Ｓ４５１）。
動的改竄検出機能部１５３は、生成したハッシュ値が、予め記憶しているデータ暗復号機能部１６０の通常鍵テーブル１２８の参照ハッシュ値と一致するか否かを判定する（Ｓ４５２）。
【０１３８】
一致すると判定された場合には（Ｓ４５２でＹＥＳ）、データ暗復号機能部１６０の検証は正常に終了し、データ暗復号機能部１６０は正当と認められる。
一方、一致しないと判定された場合には（Ｓ４５２でＮＯ）、データ暗復号機能部１６０の検証は異常終了となり、データ暗復号機能部１６０は不正と認められる。異常終了の場合には、情報処理装置１００は動作を停止する。又は、セキュアオペレーティングシステム１５２は、データの暗復号を停止する。さらに、データ暗復号機能部１６０が改竄されていることを示す情報をログとして不揮発性記憶装置に格納しておいてもよい。さらに、データ暗復号機能部１６０の通常鍵テーブル１２８が鍵を保持するならば、この鍵を削除する。
【０１３９】
なお、ハッシュ値の生成において、ＳＨＡ−１以外の一方向性関数を用いてもよい。例えば、ＭＤ５、ＳＨＡ−２５６、ＡＥＳ、ＤＥＳを用いても良い。
（１９）モード切替Ｂの動作
保護モードから通常モードへの遷移を行うモード切替Ｂの動作について、図２３に示すフローチャートを用いて説明する。なお、ここで説明するモード切替Ｂの動作は、図９のステップＳ２１３、図１０のステップＳ２３１、図１２のステップＳ２６２及び図１５のステップＳ２９１の詳細である。
【０１４０】
モード切替部１４３は、システムＬＳＩ１０１のＣＰＵ１４１の汎用レジスタ１４７と制御レジスタ１４８とバッファ領域１４９とに記憶されているデータと、周辺回路１４２の制御レジスタ１５０とバッファ領域１５１とに記憶されているデータとを格納するために十分な空き領域が、内部保護メモリ部１４４に存在するか否かを判定する（Ｓ４６１）。
【０１４１】
十分な空き領域が存在しないと判定された場合には（Ｓ４６１でＮＯ）、モード切替部１４３は、システムＬＳＩ１０１のＣＰＵ１４１の汎用レジスタ１４７と制御レジスタ１４８とバッファ領域１４９とに記憶されているデータと、周辺回路１４２の制御レジスタ１５０とバッファ領域１５１とに記憶されているデータとを暗号化し、暗号化された保護切替用データ１６１として、メモリ部１０３に格納する（Ｓ４６２）。
【０１４２】
次に、モード切替部１４３は、システムＬＳＩ１０１の構成要素をリセットし、内部保護メモリ部１４４をアクセス不可に設定する（Ｓ４６４）。
次に、モード切替部１４３は、メモリ部１０３に格納されている通常切替用データ１６２の内容を、システムＬＳＩ１０１の汎用レジスタ１４７と制御レジスタ１４８とバッファ領域１４９と、周辺回路１４２の制御レジスタ１５０とバッファ領域１５１とに設定する（Ｓ４６５）。これで、モード切替Ｂの動作が終了する。
【０１４３】
十分な空き領域が存在すると判定された場合には（Ｓ４６１でＹＥＳ）、モード切替部１４３は、システムＬＳＩ１０１のＣＰＵ１４１の汎用レジスタ１４７と制御レジスタ１４８とバッファ領域１４９とに記憶されているデータと、周辺回路１４２の制御レジスタ１５０とバッファ領域１５１とに記憶されているデータとを、保護切替用データ１５６として、内部保護メモリ部１４４に格納する（Ｓ４６３）。次に、ステップＳ４６４に制御を移す。
（２０）アプリケーションプログラムのハッシュ値生成と検証Ｂの動作
アプリケーションプログラムのハッシュ値生成と検証Ｂの動作について、図２４に示すフローチャートを用いて説明する。なお、ここで説明するハッシュ値生成と検証Ｂの動作は、図１０のステップＳ２２４、図１１のステップＳ２４１、図１２のステップＳ２５１、図１２のステップＳ２５６、図１３のステップＳ２７１及び図１５のステップＳ２８４の詳細である。
【０１４４】
保護データ操作部１５５の改竄検出部１５５ｘ（又はデータ暗復号機能部１６０の改竄検出部１２７ｘ）は、メモリ部１０３に記憶されているアプリケーションプログラムの実行イメージに対して、ＳＨＡ−１などの一方向性関数を用いて、ハッシュ値を生成する（Ｓ４７１）。
次に、保護データ操作部１５５の改竄検出部１５５ｘ（又はデータ暗復号機能部１６０の改竄検出部１２７ｘ）は、生成したハッシュ値が、保護鍵テーブル１３６（又はデータ暗復号機能部１６０の通常鍵テーブル１２８）が保持するハッシュ値に含まれるか否かを判定する（Ｓ４７２）。
【０１４５】
含まれる場合には（Ｓ４７２でＹＥＳ）、検証Ｂは正常に終了し、アプリケーションプログラムは、正当と認められる。
一方、含まれない場合には（Ｓ４７２でＮＯ）、保護データ操作部１５５（又はデータ暗復号機能部１６０）は、データ暗復号機能部１６０が保持する鍵を削除し、検証Ｂは、異常終了し、アプリケーションプログラムは、不当と認められる。異常終了の場合には、セキュアオペレーティングシステム１５２は、アプリケーションプログラムの実行を禁止する。また、不正なアプリケーションプログラムであることを示す情報をログとして不揮発性記憶部１０２に格納しておいてもよい。
【０１４６】
なお、ハッシュ値の生成において、ＳＨＡ−１以外の一方向性関数を用いてもよい。例えば、ＭＤ５、ＳＨＡ−２５６、ＡＥＳ、ＤＥＳを用いても良い。
（２１）他のアプリケーションプログラムの検証の動作
他のアプリケーションプログラムの検証の動作について、図２５に示すフローチャートを用いて説明する。なお、ここで説明する他のアプリケーションプログラムの検証の動作は、図１０のステップＳ２２５、図１１のステップＳ２４２、図１２のステップＳ２５２及び図１５のステップＳ２８５の詳細である。
【０１４７】
保護データ操作部１５５の改竄検出部１５５ｘ（又はデータ暗復号機能部１６０の改竄検出部１２７ｘ）は、現在、起動中のアプリケーションプログラムのうち、保護鍵テーブル１３６（又は通常鍵テーブル１２８）に保持するハッシュ値に対応しないアプリケーションプログラムが存在するか否かを確認する（Ｓ４８１）。なお、この確認は、ロード機能部１２９がロードしたアプリケーションプログラムのハッシュ値を保持しており、ロード機能部１２９が保持しているハッシュ値と、起動中のアプリケーションプログラムに対してハッシュを施して得られたハッシュ値とを比較することにより、行う。
【０１４８】
他のアプリケーションプログラムが存在しない場合には（Ｓ４８１でＮＯ）、他のアプリケーションプログラムの検証の動作は、終了する。
一方、他のアプリケーションプログラムが存在する場合には（Ｓ４８１でＹＥＳ）、保護データ操作部１５５（又はデータ暗復号機能部１６０）は、保護鍵テーブル１３６（又は通常鍵テーブル１２８）に保持する鍵を削除し（Ｓ４８３）、他のアプリケーションプログラムの検証の動作は、終了する。
（２２）鍵の確認Ａの動作
鍵の確認Ａの動作について、図２６に示すフローチャートを用いて、説明する。なお、ここで説明する鍵の確認Ａの動作は、図１０のステップＳ２２１、図１１のステップＳ２４３、図１２のステップＳ２５３及び図１５のステップＳ２８１の詳細である。
【０１４９】
データ暗復号機能部１６０は、生成したハッシュ値とサーバ情報に対応する鍵を、通常鍵テーブル１２８が保持しているか否かを確認する（Ｓ４９１）。通常鍵テーブル１２８が対応する鍵を保持しているならば（Ｓ４９１でＹＥＳ）、鍵の確認Ａの動作は、終了する。
一方、対応する鍵を保持していないならば（Ｓ４９１でＮＯ）、モード切替部１４３に鍵を取得するように、モード切替要求を行い、保護モードから鍵を取得し、再度、モード切替部１４３にモード切替要求が行われ、通常モードに切り替わる（Ｓ４９２）。こうして、鍵の確認Ａの動作は、終了する。
（２３）鍵の確認Ｂの動作
鍵の確認Ｂの動作について、図２７に示すフローチャートを用いて説明する。なお、ここで説明する鍵の確認Ｂの動作は、図１０のステップＳ２２６、図１２のステップＳ２５７及び図１５のステップＳ２８６の詳細である。
【０１５０】
保護データ操作部１５５は、ハッシュ値とサーバ情報に対応する鍵を、保護鍵テーブル１３６が保持しているか否かを確認する（Ｓ５０１）。
保護鍵テーブル１３６が対応する鍵を保持しているならば（Ｓ５０１でＹＥＳ）、保護データ操作部１５５は、保護鍵テーブル１３６から対応する鍵を取得し（Ｓ５０２）、  鍵の確認Ｂの動作は、正常終了する。
【０１５１】
一方、保護鍵テーブル１３６が対応する鍵を保持していないならば（Ｓ５０１でＮＯ）、
鍵の確認Ｂは、異常終了する。異常終了の場合には、セキュアオペレーティングシステム１５２は、アプリケーションプログラムの実行を禁止する。また、不正なアプリケーションプログラムであることを示す情報をログとして不揮発性記憶部１０２に格納してもよい。
【０１５２】
なお、不正なアプリケーションプログラムであることを示す情報に代えて、不正なアプリケーションプログラムが存在したことを示すフラグを不揮発性記憶部１０２に格納してもよい。また、不正なアプリケーションプログラムであることを示す情報は、不正な当該アプリケーションプログラムから生成されたハッシュ値であってもよい。
なお、不正なアプリケーションプログラムであることを示す情報のログを用いて、セーフブートを行ってもよい。
（２４）鍵の格納の動作
鍵の格納の動作について、図２８に示すフローチャートを用いて説明する。なお、ここで説明する鍵の格納の動作は、図１０のステップＳ２３２及び図１５のステップＳ２９２の詳細である。
【０１５３】
データ暗復号機能部１６０は、ハッシュ値及びサーバ情報に対応付けて、通常鍵テーブル１２８に鍵を格納する（Ｓ５１１）。こうして、鍵の格納の動作は、終了する。
１．５  まとめ
本実施の形態によると、暗号鍵をアクセスが制限された内部保護メモリ部１４４に格納し、データ暗復号機能部１６０が前記暗号鍵を用いて暗号処理を行う１回目のときに、前記アクセスが制限された内部保護メモリ部１４４から暗号鍵を取得するためにモードを切替える処理を行う。それ以降については、前記アクセスが許可されているメモリ部１０３に暗号鍵を複製し、通常モードにおいて、メモリ部１０３に複製された暗号鍵を用いる。このように通常モードを保護モードに切り替えない。
【０１５４】
これにより、暗号処理の毎に前記モードを切替える処理は不要となり、前記暗号鍵を秘密に管理する場合に要求される暗号化の煩雑な処理を大幅に軽減できる。
一方、保護操作部１３５の鍵生成部は、所定のアプリケーションプログラムのハッシュ値に基づいて前記暗号鍵を生成し、生成した暗号鍵を内部保護メモリ部１４４に格納し、前記暗号鍵の生成に用いたハッシュ値をメモリ部１０３に格納し、データ暗復号機能部１６０は、メモリ部１０３に格納された所定のデータを暗号化する処理要求があると、前記処理要求を行ったアプリケーションプログラムのハッシュ値を演算し、前記演算したハッシュ値とメモリ部１０３に格納されたハッシュ値とが不一致の場合、メモリ部１０３に複製された暗号鍵を消去する。
【０１５５】
これにより、前記暗号鍵を生成する際に用いられたハッシュ値に対応するアプリケーションプログラム以外のアプリケーションプログラムが、データ暗復号機能部１６０によるアクセスが制限されていないメモリ部１０３に格納されている暗号鍵を使用する危険性がある場合には、メモリ部１０３に格納されている暗号鍵を消去するので、前記暗号鍵の秘密を確保でき、その結果、データの秘匿性も保証できる。
【０１５６】
従って、前記暗号鍵を秘密に管理する場合に要求される暗号化の煩雑な処理を大幅に軽減しつつ、前記暗号鍵の秘密を確保してデータの秘匿性を保証できる。
２．実施の形態２
本発明に係る別の実施の形態としての情報処理装置１００ｂ（図示していない）について説明する。情報処理装置１００ｂは、情報処理装置１００と同様の構成を有している。
【０１５７】
以下において、情報処理装置１００との相違点を中心として説明する。
情報処理装置１００ｂのソフトウェア構成を図２９に示す。
情報処理装置１００ｂは、通常モードであるソフトウェアの実行環境１２０ｂと、保護モードである安全なソフトウェアの実行環境１２１とから構成される。情報処理装置１００ｂは、情報処理装置１００と同様に、通常モードと保護モードとを切り替えて、各ソフトウェアを実行する。
【０１５８】
情報処理装置１００ｂは、情報処理装置１００とは異なり、仮想マシン自体を制御する中間言語アプリケーションプログラムの制御も行う。中間言語アプリケーションプログラムは、仮想マシンの制御に使われるため、一般的にはアプリケーションプログラムの管理するデータの暗復号は行わないと考えられる。そのため、情報処理装置１００ｂは、暗復号の要求が中間言語アプリケーションプログラムからあった場合は、その要求を常に拒否する。また、暗復号の要求元が中間言語アプリケーションプログラムであると分かった場合は、ハッシュ値の生成と検証を行わない。このため、保持するハッシュ値の数を削減することができる。
【０１５９】
情報処理装置１００ｂの実行環境１２１は、実施の形態１の実行環境１２１と同一である。
これに対して、情報処理装置１００ｂの実行環境１２０ｂは、実施の形態１の実行環境１２０が有する構成要素に加えて、さらに、中間言語マシン２０５と中間言語アプリケーションプログラム２０６を含む。上述の通り、情報処理装置１００ｂでは、汎用オペレーティングシステム１５７上で動作するアプリケーションプログラムがデータの暗復号を行い、中間言語アプリケーションプログラムは、データの暗復号を行わない。
【０１６０】
また、中間言語マシン２０５は、中間言語ロード機能部２１８を備える。
中間言語マシン２０５は、中間言語アプリケーションプログラム２０６からの命令によって動作する仮想マシンである。
中間言語ロード機能部２１８は、中間言語アプリケーションプログラム２０６をロードする機能を有する。
【０１６１】
中間言語アプリケーションプログラム２０６は、仮想マシンを動作させるためのプログラム言語を用いて記述されたアプリケーションプログラムである。
実施の形態２では、実施の形態１のアプリケーションプログラムのハッシュ値生成と検証Ａ（図９のステップＳ２０６）及びアプリケーションプログラムのハッシュ値生成と検証Ｂ（図１０のステップＳ２２４、図１２のステップＳ２５１及びＳ２５６、図１３のＳ２７１）において、中間言語アプリケーションプログラム２７１による中間言語マシン２０５からの要求では、異常終了する。
【０１６２】
また、アプリケーションプログラムのハッシュ値生成と検証Ａ、及び、アプリケーションプログラムのハッシュ値生成と検証Ｂにおける、アプリケーションプログラムの検証と判断方法は、実施の形態１と同様である。
このように中間言語アプリケーションプログラム２０６と、アプリケーションプログラム（ネイティブ言語アプリケーションプログラム）１５８と区別して判断することによって、保持するハッシュ値の数を削減することができる。また、中間言語アプリケーションプログラムの場合は、ハッシュ値の生成と検証が失敗するので、中間言語アプリケーションプログラムからデータの暗復号が要求されてもデータの暗復号が行われることはない。
【０１６３】
なお、実施の形態２の構成は、中間言語マシン２０５と中間言語アプリケーションプログラム２０６以外は、実施の形態１の構成と同一である。
３．実施の形態３
本発明に係る別の実施の形態としての情報処理装置１００ｃ（図示していない）について説明する。情報処理装置１００ｃは、情報処理装置１００と同様の構成を有している。
【０１６４】
以下において、情報処理装置１００との相違点を中心として説明する。
情報処理装置１００ｃのソフトウェア構成を図３０に示す。
情報処理装置１００ｃは、通常モードであるソフトウェアの実行環境１２０と、保護モードである安全なソフトウェアの実行環境１２１ｃとから構成される。情報処理装置１００ｃは、情報処理装置１００と同様に、通常モードと保護モードとを切り替えて、各ソフトウェアを実行する。
【０１６５】
情報処理装置１００ｃは、データ暗復号を行うアプリを追加することができる情報処理装置である。情報処理装置１００ｃの実行環境１２１ｃは、実施の形態１の実行環境１２１と同様の構成を有しており、保護データ操作部１５５が、さらに、保護鍵テーブル更新部２３７を備える。情報処理装置１００ｃは、保護鍵テーブル１３６で管理するアプリケーションプログラムを新たに追加する。情報処理装置１００ｃの実行環境１２０は、実施の形態１の実行環境１２０と同一である。
【０１６６】
次に、保護鍵テーブル１３６で管理するアプリケーションプログラムを追加する方法について、図３１〜図３４を用いて、説明する。
（１）アプリケーションプログラムの登録の手順
アプリケーションプログラムの登録の手順について、図３１及び図３２を用いて、説明する。
【０１６７】
実施の形態３のアプリケーションプログラムの登録の手順は、実施の形態１の図９に示す手順と類似している。以下において、その相違点を中心として、説明する。
実施の形態１のアプリケーションプログラムの登録との相違は２つある。
１つは、実施の形態１のアプリケーションプログラムのハッシュ値生成と検証Ａ（図９のステップＳ２０６）に代えて、実施の形態３のアプリケーションプログラムの登録では、図３１に示すように、テーブル更新要求（Ｓ６０５）とアプリケーションプログラムの検証と鍵テーブル更新（Ｓ６０６）と通知（Ｓ６０７）を行うことである。
【０１６８】
もう１つは、実施の形態３のアプリケーションプログラムの登録では、図３２に示すように、モード切替Ｂ（Ｓ２１３）の後に、データ暗復号機能部１６０が、鍵テーブル更新（Ｓ６１５）を行うことである。
その他の点については、実施の形態１の図９に示す動作と同じである。
（２）アプリケーションプログラムの検証と鍵テーブルの更新の動作
アプリケーションプログラムの検証と鍵テーブルの更新の動作について、図３３に示すフローチャートを用いて説明する。なお、ここで説明するアプリケーションプログラムの検証と鍵テーブルの更新の動作は、図３１のステップＳ６０６の詳細である。
【０１６９】
保護鍵テーブル更新部２３７は、アプリケーションプログラムのハッシュ値を生成する（Ｓ６２１）。
次に、保護鍵テーブル更新部２３７は、アプリケーションプログラムに対応する電子署名の検証を行う（Ｓ６２２）。電子署名の検証で利用する検証鍵は、保護鍵テーブル更新部２３７が保持し、情報処理装置１００ｃの製造者から提供されている鍵である。また、電子署名の検証に用いるアルゴリズムは、ＲＳＡや楕円曲線暗号を用いたデジタル署名の検証アルゴリズムである。
【０１７０】
検証が正常終了した場合には（Ｓ６２３でＹＥＳ）、保護鍵テーブル更新部２３７は、ステップＳ６２１で生成したハッシュ値が、保護鍵テーブル１３６に格納されているハッシュ値であるか否かを判定する（Ｓ６２４）。
生成したハッシュ値が、保護鍵テーブル１３６に格納されているハッシュ値である場合には（Ｓ６２４でＹＥＳ）、アプリケーションプログラムの検証と鍵テーブルの更新を終了する。
【０１７１】
生成したハッシュ値が、保護鍵テーブル１３６に格納されているハッシュ値でない場合（Ｓ６２４でＮＯ）、保護鍵テーブル１３６に新たなエントリとしての鍵情報を作成し、新たな鍵情報のアプリケーションプログラムの参照ハッシュ値のフィールドに、ステップＳ６２１で生成したハッシュ値を格納し（Ｓ６２６）、アプリケーションプログラムの検証と鍵テーブルの更新を終了する。
【０１７２】
さらに、保護鍵テーブル１３６に新たなエントリとして鍵情報を追加し、生成したハッシュ値をこの鍵情報内に格納した場合には、ステップＳ２１０の通知と、ステップＳ２１２のモード切替要求と、ステップＳ２１３のモード切替Ｂとでは、生成したハッシュ値も通知する。
（３）通常鍵テーブル１２８の更新の動作
通常鍵テーブル１２８の更新の動作について、図３４に示すフローチャートを用いて説明する。なお、ここで説明する通常鍵テーブル１２８の更新の動作は、図３２のステップＳ６１５の詳細である。
【０１７３】
データ暗復号機能部１６０は、通常鍵テーブル１２８に新たなエントリとしての鍵情報を追加して、新たな鍵情報内に、保護モードから通知されたハッシュ値を格納する（Ｓ６３１）。これで、通常鍵テーブル１２８の更新の動作は、終了する。
このように、通常鍵テーブル１２８で管理するアプリケーションプログラムを追加することによって、新規に追加されたアプリケーションプログラムのデータを保護することができる。
【０１７４】
なお、ステップ６２２のアプリケーションプログラムの検証で利用する鍵は、情報処理装置１００ｃの製造者から提供されている鍵以外の鍵を利用してもよい。情報処理装置１００ｃの製造者から提供されている鍵以外の鍵としては、例えば、サーバを運営するサービス会社から提供されている鍵であってもよいし、コンテンツを提供するコンテンツ会社から提供される鍵であってもよい。
４．実施の形態４
本発明に係る別の実施の形態としての情報処理装置１００ｄ（図示していない）について説明する。情報処理装置１００ｄは、情報処理装置１００と同様の構成を有している。
【０１７５】
以下において、情報処理装置１００との相違点を中心として説明する。
情報処理装置１００ｄは、データの暗復号に際に用いる鍵の利用回数を制御する。以下、図３５と図３６を用いて、情報処理装置１００ｄにより、鍵の利用回数を制御する技術について説明する。
（１）通常鍵テーブル１２８ｄのデータ構造
情報処理装置１００ｄの保護データ操作部１５５は、情報処理装置１００の保護鍵テーブル１３６に代えて、保護鍵テーブル１３６ｄ（図示してない）を記憶している。また、データ暗復号機能部１６０は、情報処理装置１００の通常鍵テーブル１２８に代えて、図３５に一例として示す通常鍵テーブル１２８ｄを記憶している。
【０１７６】
通常鍵テーブル１２８ｄは、保護鍵テーブル１３６ｄと同一のデータ構造を有している。ここでは、通常鍵テーブル１２８ｄのデータ構造について説明し、保護鍵テーブル１３６ｄのデータ構造の説明を省略する。
通常鍵テーブル１２８ｄは、アプリケーションプログラムが利用するデータを暗号化又は復号する際に用いる鍵を一時的に格納するテーブルであり、図３５に一例として示すように、１個以上の鍵情報を記憶するための領域を備えている。各鍵情報は、アプリケーションプログラムの参照ハッシュ値及び１個以上のサーバ鍵情報から構成され、各サーバ鍵情報は、サーバ情報、鍵、最大使用回数及び現在の使用回数から構成されている。アプリケーションプログラムの参照ハッシュ値及びサーバ情報については、上述した通りであるので、説明を省略する。
【０１７７】
最大使用回数は、対応するアプリケーションプログラムが対応する鍵を使用することができる最大の回数であり、現在の使用回数は、対応するアプリケーションプログラムが対応する鍵を今までに実際に使用した回数である。
通常鍵テーブル１２８ｄが最大使用回数と現在の使用回数を含む点において、情報処理装置１００の鍵テーブルと異なっている。
（２）鍵の確認Ａの動作
情報処理装置１００ｄによる鍵の確認Ａの動作について、図３６に示すフローチャートを用いて説明する。情報処理装置１００ｄのデータ暗復号機能部１６０は、情報処理装置１００の鍵の確認Ａの動作（図２６に示す）に代えて、以下に示す手順に従って、鍵の確認Ａを行う。
【０１７８】
なお、ここで説明する鍵の確認Ａの動作は、図１０のステップＳ２２１、図１１のステップＳ２４３、図１２のステップＳ２５３及び図１５のステップＳ２８１の詳細である。
データ暗復号機能部１６０は、生成したハッシュ値及びサーバ情報に対応する鍵を、通常鍵テーブル１２８ｄが保持しているか否かの判定を行う（Ｓ６４１）。
生成したハッシュ値及びサーバ情報に対応する鍵を、通常鍵テーブル１２８ｄが保持しているならば（Ｓ６４１でＹＥＳ）、データ暗復号機能部１６０は、通常鍵テーブル１２８ｄから、生成したハッシュ値及びサーバ情報に対応する最大使用回数及び現在の使用回数を読み出し、読み出した現在の使用回数が、読み出した最大使用回数を越えているか否かを判定する（Ｓ６４２）。
【０１７９】
現在の使用回数が最大使用回数を超えていない場合（Ｓ６４２でＮＯ）、データ暗復号機能部１６０は、生成したハッシュ値及びサーバ情報に対応する現在の使用回数に「１」を加算し、「１」が加算された現在の使用回数を通常鍵テーブル１２８ｄにおいて上書きし（Ｓ６４３）、鍵の確認Ａの動作を終了する。
現在の使用回数が最大使用回数を超えている場合（Ｓ６４２でＹＥＳ）、データ暗復号機能部１６０は、モード切替部１４３に対して、モード切替Ａをし、新たな鍵及び新たな最大使用回数を取得するように要求し、保護モードにおいて新たな鍵及び最大使用回数が生成され、新たな鍵及び最大使用回数が通常モードに対して出力され、再度、通常モードに切り替えられた後に、データ暗復号機能部１６０は、新たな鍵及び新たな最大使用回数を取得する（Ｓ６４４）。なお、新たな鍵は、実行環境１２１において、図示していないタイマーなどを用いて乱数を生成し、生成した乱数、アプリケーションプログラムのハッシュ値、サーバ情報及び端末固有情報を用いて、生成したものであってもよい。
【０１８０】
次に、データ暗復号機能部１６０は、暗号化データを更新前の鍵を用いて復号し、得られたデータを保護モードから通知された新たな鍵を用いて再暗号化する（Ｓ６４５）。
次に、データ暗復号機能部１６０は、通常鍵テーブル１２８ｄにおいて、生成したハッシュ値及びサーバ情報に対応する更新前の鍵を削除し、生成したハッシュ値及びサーバ情報に対応する現在の使用回数に「０」を設定し、保護モードから通知された最大使用回数を、生成したハッシュ値及びサーバ情報に対応する最大使用回数のフィールドに設定し、保護モードから通知された新たな鍵を、生成したハッシュ値及びサーバ情報に対応する鍵のフィールドに設定し（Ｓ６４６）、鍵の確認Ａの動作を終了する。
【０１８１】
生成したハッシュ値及びサーバ情報に対応する鍵を、通常鍵テーブル１２８ｄが保持していないならば（Ｓ６４１でＮＯ）、データ暗復号機能部１６０は、モード切替部１４３に対して、モード切替Ａを要求し（Ｓ６４７）、鍵の確認Ａの動作を終了する。
（３）以上説明したように、情報処理装置１００ｄによると、データの暗復号に利用する鍵の利用回数を制限することができ、最大利用回数を超えて、同じ暗復号鍵を使い続けることがないので、暗復号鍵の漏洩の可能性を低減できる。また、最大利用回数を超えた場合に、鍵を新たに更新するので、攻撃者が予想される暗復号鍵のパターンを全て生成して一つ一つ試して攻撃する総当たり攻撃からの保護を強化できる。
５．実施の形態５
本発明に係る別の実施の形態としての情報処理装置１００ｅについて説明する。情報処理装置１００ｅは、情報処理装置１００と同様の構成を有している。以下において、情報処理装置１００との相違点を中心として説明する。
【０１８２】
情報処理装置１００ｅは、データの暗復号の際に用いる鍵の利用時間を制御する。以下、情報処理装置１００ｅにより、データの暗復号に利用する鍵の利用時間を制御する技術について、図３７〜図３９を用いて説明する。
（１）情報処理装置１００ｅの構成
情報処理装置１００ｅは、図３７に示すように、情報処理装置１００と類似の構成を有している。
【０１８３】
情報処理装置１００ｅは、システムＬＳＩ１０１ｅがクロック２６５を新たに備える点において、情報処理装置１００と相違している。また、情報処理装置１００ｅの保護データ操作部１５５は、情報処理装置１００の保護鍵テーブル１３６に代えて、保護鍵テーブル１３６ｅ（図示してない）を記憶している。また、データ暗復号機能部１６０は、情報処理装置１００の通常鍵テーブル１２８に代えて、図３８に一例として示す通常鍵テーブル１２８ｅを記憶している。その他の構成については、情報処理装置１００と同一である。
（１）クロック２６５
クロック２６５は、時刻を計測する計時部であり、現時点の時刻を示す時間情報を保持している。クロック２６５は、内部バス１４５を介して、ＣＰＵ１４１、周辺回路１４２及びモード切替部１４３と接続されている。さらに、クロック２６５は、モード切替部１４３と専用線２６６を介して接続されている。
【０１８４】
ＣＰＵ１４１は、モード切替部１４３によって、クロック２６５に保持する時間情報へのアクセスが制限されている。
モード切替部１４３は、システムＬＳＩ１０１ｅが保護モードの場合には、クロック２６５に格納されている時間情報に対して、読み込み及び変更が可能となるように、専用線２６６を介して制御する。また、モード切替部１４３は、システムＬＳＩ１０１ｅが通常モードの場合には、クロック２６５に格納されている時間情報に対して、読み込みのみ可能となるように、専用線２６６を介して制御する。
（２）鍵テーブルのデータ構造
通常鍵テーブル１２８ｅは、保護鍵テーブル１３６ｅと同一のデータ構造を有している。ここでは、通常鍵テーブル１２８ｅのデータ構造について説明し、保護鍵テーブル１３６ｅのデータ構造の説明を省略する。
【０１８５】
通常鍵テーブル１２８ｅは、アプリケーションプログラムが利用するデータを暗号化又は復号する際に用いる鍵を一時的に格納するテーブルであり、図３８に一例として示すように、１個以上の鍵情報を記憶するための領域を備えている。各鍵情報は、アプリケーションプログラムの参照ハッシュ値及び１個以上のサーバ鍵情報から構成され、各サーバ鍵情報は、サーバ情報、鍵及び最終日時から構成されている。アプリケーションプログラムの参照ハッシュ値及びサーバ情報については、上述した通りであるので、説明を省略する。
【０１８６】
最終日時は、対応するアプリケーションプログラムが対応する鍵を使用することができる最後の日時であり、一例として、年月日時分秒から構成されている。
通常鍵テーブル１２８ｅが最終日時を含む点において、情報処理装置１００の鍵テーブルと異なっている。
（３）鍵の確認Ａの動作
情報処理装置１００ｅによる鍵の確認Ａの動作について、図３９に示すフローチャートを用いて説明する。情報処理装置１００ｅのデータ暗復号機能部１６０は、情報処理装置１００の鍵の確認Ａの動作（図２６に示す）に代えて、以下に示す手順に従って、鍵の確認Ａを行う。
【０１８７】
なお、ここで説明する鍵の確認Ａの動作は、図１０のステップＳ２２１、図１１のステップＳ２４３、図１２のステップＳ２５３及び図１５のステップＳ２８１の詳細である。
データ暗復号機能部１６０は、生成したハッシュ値及びサーバ情報に対応する鍵を、通常鍵テーブル１２８ｅが保持しているか否かの判定を行う（Ｓ６５１）。
生成したハッシュ値及びサーバ情報に対応する鍵を、通常鍵テーブル１２８ｅが保持しているならば（Ｓ６５１でＹＥＳ）、データ暗復号機能部１６０は、クロック２６５から時間情報を取得し、通常鍵テーブル１２８ｅから生成したハッシュ値及びサーバ情報に対応する最終日時を読み出し、取得した時間情報により示される現在の日時が、取得した最終日時を越えているか否かを判定する（Ｓ６５２）。
【０１８８】
現在の日時が最終日時を超えていない場合（Ｓ６５２でＮＯ）、鍵の確認Ａの処理を終了する。
現在の日時が最終日時を超えている場合（Ｓ６５２でＹＥＳ）、データ暗復号機能部１６０は、モード切替部１４３に対して、モード切替Ａをし、新たな鍵及び新たな最終日時を取得するように要求し、保護モードにおいて新たな鍵及び最終日時が生成され、新たな鍵及び最終日時が通常モードに対して出力され、再度、通常モードに切り替えられた後に、データ暗復号機能部１６０は、新たな鍵及び新たな最終日時を取得する（Ｓ６５３）。なお、新たな鍵は、クロック２６５や図示していないタイマーなどを用いて乱数を生成し、生成した乱数、アプリケーションプログラムハッシュ値、サーバ情報及び端末固有情報を用いて、生成したものであってもよい。
【０１８９】
次に、データ暗復号機能部１６０は、暗号化データを更新前の鍵を用いて復号し、得られたデータを保護モードから通知された新たな鍵を用いて再暗号化する（Ｓ６５４）。
次に、データ暗復号機能部１６０は、通常鍵テーブル１２８ｅにおいて、生成したハッシュ値及びサーバ情報に対応する鍵を削除する。また、通常鍵テーブル１２８ｅにおいて、保護モードから通知された最終日時を、生成したハッシュ値及びサーバ情報に対応する最終日時のフィールドに設定する。さらに、通常鍵テーブル１２８ｅにおいて、保護モードから通知された新たな鍵を、生成したハッシュ値とサーバ情報に対応する鍵のフィールドに設定する（Ｓ６５５）。次に、鍵の確認Ａの処理を終了する。
【０１９０】
生成したハッシュ値及びサーバ情報に対応する鍵を、通常鍵テーブル１２８ｅが保持していないならば（Ｓ６５１でＮＯ）、データ暗復号機能部１６０は、モード切替部１４３にモード切替Ａの要求を行う（Ｓ６５６）。次に、鍵の確認Ａの処理を終了する。
（３）これにより、データの暗復号に利用する鍵の利用日時を制限することができ、最終日時を超えて、同じ暗復号鍵を使い続けることがないので、暗復号鍵の漏洩の可能性を低減できる。また、最終日時を超えた場合に、鍵を新たに更新するので、攻撃者が予想される暗復号鍵のパターンを全て生成して一つ一つ試して攻撃する総当たり攻撃からの保護を強化できる。
６．実施の形態６
本発明に係る別の実施の形態としての情報処理装置１００ｆについて説明する。情報処理装置１００ｆは、情報処理装置１００と同様の構成を有している。以下において、情報処理装置１００との相違点を中心として説明する。
【０１９１】
情報処理装置１００ｆは、不正なアプリケーションプログラムを検知した場合に、暗号化データを復号して生成した平文データを削除する。
以下、図４０〜図４３を用いて、不正なアプリケーションプログラムを検知した場合に、暗号化データを復号して生成した平文データを削除する技術について説明する。
（１）情報処理装置１００ｆのソフトウェア構成
情報処理装置１００ｆのソフトウェア構成を図４０に示す。
【０１９２】
情報処理装置１００ｆは、通常モードであるソフトウェアの実行環境１２０ｆと、保護モードである安全なソフトウェアの実行環境１２１とから構成される。情報処理装置１００ｆは、通常モードと保護モードとを切り替えて、各ソフトウェアを実行する。
実行環境１２０ｆは、情報処理装置１００の実行環境１２０と類似しており、情報処理装置１００のデータ暗復号機能部１６０に代えて、データ暗復号機能部１６０ｆを含んでいる。データ暗復号機能部１６０ｆは、情報処理装置１００のデータ暗復号機能部１６０と類似しており、データ暗復号機能部１６０が有する構成要素に加えて、さらに、復号データ格納位置テーブル２９７を有している。
【０１９３】
情報処理装置１００ｆの実行環境１２０は、情報処理装置１００の実行環境１２０と同一である。
このように、情報処理装置１００ｆの実行環境１２０ｆは、データ暗復号機能部１６０ｆがさらに復号データ格納位置テーブル２９７を備える点において、情報処理装置１００の実行環境１２０と相違している。
（２）復号データ格納位置テーブル２９７のデータ構造
復号データ格納位置テーブル２９７は、図４１に示すように、複数の復号情報を含んで構成されているデータテーブルである。各復号情報は、情報処理装置１００ｆ上で動作するアプリケーションプログラムにおいて暗号化又は復号の対象となるデータに対応している。各復号情報は、データＩＤ、暗号化データ格納ファイル名、提供アプリケーションプログラムのハッシュ値、復号データ格納アドレス及び復号データサイズから構成されている。
【０１９４】
データＩＤは、暗号化されたデータを一意に判別する識別子である。
暗号化データ格納ファイル名は、暗号化されたデータが格納されているファイル名である。
提供アプリケーションプログラムのハッシュ値は、暗号化データを復号して平文データとして提供したアプリケーションプログラムのハッシュ値であり、当該アプリケーションプログラムを識別する識別子である。  
【０１９５】
復号データ格納アドレスは、暗号化データを復号して得られた平文データを格納しているメモリの先頭アドレスである。ここには、暗号化データを復号して得られた平文データをアプリケーションプログラムに提供する際にそのアドレスが格納される。
復号データサイズは、暗号化データを復号して得られた平文データのサイズである。ここには、暗号化データを復号してアプリケーションプログラムに提供する際にサイズが格納される。
（３）アプリケーションプログラムのハッシュ値生成と検証Ｂの動作
アプリケーションプログラムのハッシュ値生成と検証Ｂの動作について、図４２に示すフローチャートを用いて説明する。
【０１９６】
情報処理装置１００ｆのデータ暗復号機能部１６０ｆ（又は保護データ操作部１５５）は、情報処理装置１００のアプリケーションプログラムのハッシュ値生成と検証Ｂの動作（図２４に示す）に代えて、以下に示す手順に従って、アプリケーションプログラムのハッシュ値生成と検証Ｂを行う。なお、ここで説明するハッシュ値生成と検証Ｂの動作は、図１０のステップＳ２２４、図１１のステップＳ２４１、図１２のステップＳ２５１、図１２のステップＳ２５６、図１３のステップＳ２７１及び図１５のステップＳ２８４の詳細である。
【０１９７】
データ暗復号機能部１６０ｆの改竄検出部１２７ｘ（又は保護データ操作部１５５の改竄検出部１５５ｘ）は、メモリ部１０３上に記憶され展開されているアプリケーションプログラムの実行イメージに対して、ＳＨＡ−１などの一方向性関数を用いて、ハッシュ値を生成する（Ｓ６６１）。ここで、ハッシュ値の生成において、ＳＨＡ−１以外の一方向性関数を用いてもよい。例えば、ＭＤ５、ＳＨＡ−２５６、ＡＥＳ、ＤＥＳを用いても良い。
【０１９８】
次に、データ暗復号機能部１６０ｆの改竄検出部１２７ｘ（又は保護データ操作部１５５の改竄検出部１５５ｘ）は、生成したハッシュ値が、通常鍵テーブル１２８（又は保護鍵テーブル１３６）が保持するハッシュ値に含まれるか否かを判定する（Ｓ６６２）。
含まれると判定された場合には（Ｓ６６２でＹＥＳ）、アプリケーションプログラムのハッシュ値生成と検証Ｂの処理は、正常に終了する。
【０１９９】
含まれないと判定された場合には（Ｓ６６２でＮＯ）、データ暗復号機能部１６０ｆ（又は保護データ操作部１５５）は、通常鍵テーブル１２８（又は保護鍵テーブル１３６）が保持する鍵を削除し（Ｓ６６４）、次に、復号データ格納位置テーブル２９７から、復号されたデータを格納するアドレスとサイズを読み出し、読み出したアドレスとサイズに基づいて、復号されたデータを削除する（Ｓ６６５）。削除は、特定の値を上書きすることにより行ってもよいし、乱数を発生させ、その乱数を上書きすることにより行ってもよい。こうして、アプリケーションプログラムのハッシュ値生成と検証Ｂの処理は、異常終了する。異常終了の場合には、アプリケーションプログラムの実行を禁止する。また、不正なアプリケーションプログラムであることを示す情報をログとして不揮発性記憶部１０２に格納しておいてもよい。
（４）以上説明したように、復号鍵だけではなく、暗復号鍵を用いて過去に復号された平文データをも消去するので、将来生成される平文データのみならず、過去に生成された平文データをも不正なアプリケーションプログラムから保護できる。
（５）他のアプリケーションプログラムの検証の動作
他のアプリケーションプログラムの検証の動作について、図４３に示すフローチャートを用いて、説明する。
【０２００】
情報処理装置１００ｆのデータ暗復号機能部１６０ｆ（又は保護データ操作部１５５）は、情報処理装置１００の他のアプリケーションプログラムの検証の動作（図２５に示す）に代えて、以下に示す手順に従って、他のアプリケーションプログラムの検証の動作を行う。なお、ここで説明する他のアプリケーションプログラムの検証の動作は、図１０のステップＳ２２５、図１１のステップＳ２４２、図１２のステップＳ２５２及び図１５のステップＳ２８５の詳細である。
【０２０１】
データ暗復号機能部１６０ｆの改竄検出部１２７ｘ（又は保護データ操作部１５５の改竄検出部１５５ｘ）は、現在、起動中のアプリケーションプログラムのうち、通常鍵テーブル１２８ｆ（又は保護鍵テーブル１３６ｆ）に保持するハッシュ値に対応しないアプリケーションプログラムが存在するか否かを確認する（Ｓ６７１）。なお、この確認は、ロード機能部１２９がロードしたアプリケーションプログラムのハッシュ値を保持しており、その値を確認してもよい。
【０２０２】
対応しないアプリケーションプログラムが存在しない場合には（Ｓ６７１でＮＯ）、他のアプリケーションプログラムの検証の動作は、正常に終了する。
対応しないアプリケーションプログラムが存在する場合には（Ｓ６７１でＹＥＳ）、データ暗復号機能部１６０ｆ（又は保護データ操作部１５５）は、通常鍵テーブル１２８ｆ（又は保護鍵テーブル１３６ｆ）が保持する鍵を削除し（Ｓ６７２）、復号データ格納位置テーブル２９７から、復号されたデータを格納するアドレス及びサイズを探して読み出し、読み出したアドレス及びサイズに基づいて、復号されたデータを削除する（Ｓ６７３）。これで、他のアプリケーションプログラムの確認の動作が終了する。なお、復元されたデータに対して特定の値を上書きすることにより、削除を実現してもよい。また、乱数を発生させ、復元されたデータに対してこの乱数を上書きすることにより削除を実現してもよい。
（６）なお、情報処理装置１００ｆの動作のうち、アプリケーションプログラムのハッシュ値生成及び検証Ｂ、並びに他のアプリケーションプログラムの検証については、上述した通りであり、その他の動作については、情報処理装置１００と同一である。
【０２０３】
以上説明したように、情報処理装置１００ｆにおいては、暗号鍵をアクセスが制限された内部保護メモリ部１４４に格納し、データ暗復号機能部１６０ｆが前記暗号鍵を用いて暗号処理を行う例えば１回目のときに、前記アクセスが制限された内部保護メモリ部１４４から暗号鍵を取得するために、通常モードから保護モードに切り替えられる。それ以降は前記アクセスが許可されているメモリ部１０３に暗号鍵を複製し、再度、保護モードに切替える処理は不要である。これにより、暗号処理の毎にモードを切替える処理は不要となるので、前記暗号鍵を秘密に管理する場合に要求される暗号化の煩雑な処理を大幅に軽減できる。
【０２０４】
一方、保護操作部１３５の鍵生成部は、所定のアプリケーションのハッシュ値に基づいて前記暗号鍵を生成し、生成した暗号鍵を内部保護メモリ１４４に格納し、前記暗号鍵の生成に用いたハッシュ値をメモリ部１０３に格納し、データ暗復号機能部１６０ｆは、メモリ部１０３に格納された所定のデータを暗号化する処理要求があると、前記処理要求を行ったアプリケーションのハッシュ値を演算し、前記演算したハッシュ値とメモリ部１０３に格納されたハッシュ値とが不一致の場合、メモリ部１０３に複製された暗号鍵を消去する。これにより、前記暗号鍵を生成する際に用いられたハッシュ値に対応するアプリケーション以外のアプリケーションが、データ暗復号機能部１６０ｆによるアクセスが制限されていないメモリ部１０３に格納されている暗号鍵を使用する危険性がある場合には、メモリ部１０３に格納されている暗号鍵を消去するので、前記暗号鍵の秘密を確保でき、その結果、データの秘匿性も保証できる。
【０２０５】
従って、前記暗号鍵を秘密に管理する場合に要求される暗号化の煩雑な処理を大幅に軽減しつつ、前記暗号鍵の秘密を確保してデータの秘匿性を保証できる。
７．その他
本発明の第１の態様に関する情報処理装置は、所定のデータを格納する第１メモリと、暗号鍵を格納する第２メモリと、所定のアプリケーションを格納する格納部と、前記所定のアプリケーションのハッシュ値に基づいて前記暗号鍵を生成し前記第２メモリに格納し、前記暗号鍵の生成に用いたハッシュ値を前記第１メモリに格納する鍵生成部と、前記第１メモリへのアクセスは許可され且つ前記第２メモリへのアクセスが禁止され、前記第１メモリから前記所定のデータを読み出して前記所定のデータを暗号化する暗号部と前記所定のアプリケーションによる前記第１メモリへのアクセスを許可し且つ前記第２メモリへのアクセスを禁止する第１モードを設定して前記所定のアプリケーションを起動し、前記第１メモリに格納された所定のデータを暗号化する処理要求を前記所定のアプリケーションから受け且つ前記第１メモリに前記暗号鍵が格納されていない場合、前記鍵生成部による前記第１メモリ及び前記第２メモリへのアクセスを許可する第２モードに切り替え、前記鍵生成部に対して前記第２メモリに格納された暗号鍵を前記第１メモリに複製させ、前記第１モードに切り替え、前記暗号部に前記第１メモリに複製された暗号鍵を用いて前記所定のデータを暗号化させる制御部と、を具備し、前記暗号部は、前記処理要求に応じて、前記処理要求を行ったアプリケーションのハッシュ値を演算し、前記演算したハッシュ値と前記第１メモリに格納されたハッシュ値とが不一致の場合、前記第１メモリに複製された暗号鍵を消去するものである。
【０２０６】
本態様によると、前記暗号鍵を秘密に管理する場合に要求される暗号化の煩雑な処理を大幅に軽減しつつ、前記暗号鍵の秘密を確保してデータの秘匿性を保証できる。
データの秘匿性を保護するには、データを暗号化する際の暗号鍵を秘密に管理する必要がある。前記暗号鍵を秘密に管理するには前記暗号鍵を格納するメモリへのアクセスを制限する必要がある。一方、前記暗号鍵を格納するメモリへのアクセスを制限すると、前記暗号鍵を用いた暗号処理が煩雑となる。即ち、暗号処理の毎に前記アクセスが制限されたメモリから暗号鍵を取得するための処理を行う必要がある。
【０２０７】
そこで、この態様によると、情報処理装置は、暗号鍵をアクセスが制限された第２メモリに格納し、暗号部が前記暗号鍵を用いて暗号処理を行う例えば１回目のときに、前記アクセスが制限された第２メモリから暗号鍵を取得するためにモードを切替える処理を行う
が、それ以降は前記アクセスが許可されている第１メモリに暗号鍵を複製し、前記モードを切替える処理を不要とした。これにより、暗号処理の毎に前記モードを切替える処理は不要となるので、前記暗号鍵を秘密に管理する場合に要求される暗号化の煩雑な処理を大幅に軽減できる。
【０２０８】
さらに、この構成によると、情報処理装置の鍵生成部は、所定のアプリケーションのハッシュ値に基づいて前記暗号鍵を生成し前記第２メモリに格納し、前記暗号鍵の生成に用いたハッシュ値を前記第１メモリに格納し、前記暗号部は、前記第１メモリに格納された所定のデータを暗号化する処理要求があると、前記処理要求を行ったアプリケーションのハッシュ値を演算し、前記演算したハッシュ値と前記第１メモリに格納されたハッシュ値とが不一致の場合、前記第１メモリに複製された暗号鍵を消去する。これにより、前記暗号鍵を生成する際に用いられたハッシュ値に対応するアプリケーション以外のアプリケーションが、前記暗号部によるアクセスが制限されていない第１メモリに格納されている暗号鍵を使用する危険性がある場合には、第１メモリに格納されている暗号鍵を消去するので、前記暗号鍵の秘密を確保でき、その結果、データの秘匿性も保証できる。
【０２０９】
従って、前記暗号鍵を秘密に管理する場合に要求される暗号化の煩雑な処理を大幅に軽減しつつ、前記暗号鍵の秘密を確保してデータの秘匿性を保証できる。
また、本発明の第２の態様に関する情報処理装置は、さらに、前記制御部は、前記処理要求を前記所定のアプリケーションから受けた場合であって、前記第１メモリに前記暗号鍵が格納されている場合、前記第２モードに切り替えることなく、前記暗号部に前記第１メモリに複製された暗号鍵を用いて前記所定のデータを暗号化させるものである。
【０２１０】
この態様によると、前記処理要求を前記所定のアプリケーションから受けた場合であって、前記第１メモリに前記暗号鍵が格納されている場合、前記第２モードに切り替えることなく、前記暗号部に前記第１メモリに複製された暗号鍵を用いて前記所定のデータを暗号化する。これによると、前記暗号鍵はアクセスが制限された第２メモリに格納され、前記暗号部が前記暗号鍵を用いて暗号処理を行う例えば１回目のときに、前記アクセスが制限された第２メモリから暗号鍵を取得するためにモードを切替える処理を行うが、それ以降は前記アクセスが許可されている第１メモリに暗号鍵を複製し、この複製した暗号鍵を用いて暗号化する。そのため、暗号処理の毎に前記モードを切替える処理は不要となるので、前記暗号鍵を秘密に管理する場合に要求される暗号化の煩雑な処理を大幅に軽減できる。
【０２１１】
また、本発明の第３の態様に関する情報処理装置において、前記所定のアプリケーションは、外部装置にデータを送信すべきデータを前記第１メモリへ格納するアプリケーションであり、前記鍵生成部は、前記外部装置の識別情報及び前記所定のアプリケーションのハッシュ値に基づいて前記暗号鍵を生成し、前記制御部は、前記外部装置へ送信すべきデータを、前記暗号鍵で暗号化し、第３メモリに格納するものである。
【０２１２】
この態様によると、前記所定のアプリケーションは、外部装置にデータを送信すべきデータを前記第１メモリへ格納するアプリケーションである場合、前記鍵生成部は、前記外部装置の識別情報及び前記所定のアプリケーションのハッシュ値に基づいて前記暗号鍵を生成する。これによると、一つのアプリケーションが複数の外部装置にデータを送信すべきデータを保存する場合には、一つのアプリケーションに対して、複数の外部端末に応じて複数の暗号鍵を生成できる。
【０２１３】
また、本発明の第４の態様に関する情報処理装置は、さらに、前記鍵生成部は、前記第１メモリから前記所定のデータを読み出して、前記第２メモリから前記暗号鍵を読み出して、前記所定のデータを暗号化する第２暗号部を有し、前記制御部は、前記第１メモリに
複製された暗号鍵が前記第１メモリから消去された後、前記第１モードにおいて前記処理要求を前記所定のアプリケーションから受けた場合、前記鍵生成部による前記第１メモリ及び前記第２メモリへのアクセスを許可する第２モードに切り替え、前記第２暗号部に対して第２メモリに格納された前記暗号鍵を用いて前記第１メモリに格納された前記所定のデータを暗号化させるものである。
【０２１４】
この態様によると、前記鍵生成部は、前記第１メモリから前記所定のデータを読み出して、前記第２メモリから前記暗号鍵を読み出して、前記所定のデータを暗号化する第２暗号部を有する。また、前記制御部は、前記第１メモリに複製された暗号鍵が前記第１メモリから消去された後、前記処理要求を前記所定のアプリケーションから受けた場合、前記鍵生成部による前記第１メモリ及び前記第２メモリへのアクセスを許可する第２モードに切り替え、前記第２暗号部に対して第２メモリに格納された前記暗号鍵を用いて前記第１メモリに格納された前記所定のデータを暗号化させる。これにより、前記第１メモリに複製された暗号鍵が前記第１メモリから消去された後は、前記第１モードの状態で前記暗号部に暗号処理を行なわせるのではなく、前記第１モードから前記第２モードに切替えて前記暗号鍵が格納された第２メモリへのアクセスが可能な前記鍵生成部に暗号化処理を行わせる。そのため、前記第１メモリに複製された暗号鍵が前記第１メモリから消去された後、モードの切替え処理は入るものの、前記暗号鍵の秘密を確保でき、その結果、データの秘匿性は保証できる。
【０２１５】
また、本発明の第５の態様に関する情報処理装置は、さらに、アプリケーションが起動中か否かを監視する監視部を設け、前記監視部が、前記第１メモリに複製された暗号鍵が消去された後、前記処理要求を行ったアプリケーションであって前記第１メモリに格納されたハッシュ値と不一致のハッシュ値に対応するアプリケーションの起動が終了したと判断した場合、前記制御部は、前記第１モードにおいて前記処理要求を前記所定のアプリケーションから受け且つ前記第１メモリに前記暗号鍵が格納されていない場合、前記鍵生成部による前記第１メモリ及び前記第２メモリへのアクセスを許可する第２モードに切り替え、前記第１暗号部に対して前記第２メモリに格納された暗号鍵を前記第１メモリに複製させるものである。
【０２１６】
この態様によると、前記第１メモリに複製された暗号鍵が消去された後、前記処理要求を行ったアプリケーションであって前記第１メモリに格納されたハッシュ値と不一致のハッシュ値に対応するアプリケーションの起動が終了したと判断した場合、前記第２メモリに格納された暗号鍵を前記第１メモリに再度、複製させる。これにより、前記暗号鍵を生成する際に用いられたハッシュ値に対応する所定のアプリケーション以外のアプリケーションが、起動を終了し、前記暗号鍵を使用する危険性がなくなった場合に、前記暗号部によるアクセスが許可されている第１メモリに前記暗号鍵を再度複製する。そのため、前記所定のアプリケーション以外のアプリケーションが前記暗号鍵を使用する危険性がなくなった以降は、再度、前記暗号鍵を秘密に管理する場合に要求される暗号化の煩雑な処理を大幅に軽減しつつ、前記暗号鍵の秘密を確保してデータの秘匿性を保証できる状態に回復できる。
【０２１７】
また、本発明の第６の態様に関する情報処理装置は、さらに、前記鍵生成部は、前記所定のアプリケーションの初期設定時に前記所定のアプリケーションのハッシュ値に基づいて前記所定のアプリケーションに対応する暗号鍵を生成して前記第２メモリに格納し、前記所定のアプリケーションのハッシュ値と前記対応する暗号鍵とを対応させる鍵生成リストを生成して前記第２メモリに格納し、前記鍵生成リストに存在するハッシュ値を前記第１メモリに格納するものである。
【０２１８】
この態様によると、前記鍵生成部は、前記所定のアプリケーションのハッシュ値と前記
対応する暗号鍵とを対応させる鍵生成リストを生成する。これにより、前記所定のアプリケーションのハッシュ値と前記対応する暗号鍵とを対応させる管理が確実且つ簡易となる。そのため、前記暗号鍵の秘密性の管理を確実且つ簡易なものとできる。
また、本発明の第７の態様に関する情報処理装置は、さらに、前記所定のアプリケーションの初期設定時に前記所定のアプリケーションがデータを送信する外部装置の識別情報を、前記所定のアプリーションを介して取得し、前記外部装置の識別情報及び前記所定のアプリケーションのハッシュ値に基づいて前記所定のアプリケーションに対応する暗号鍵を生成して前記第２メモリに格納し、前記外部装置の識別情報、前記所定のアプリケーションのハッシュ値及び前記対応する暗号鍵を対応させる第２鍵生成リストを生成して前記第２メモリに格納し、前記第２鍵生成リストに存在するハッシュ値を前記第１メモリに格納するものである。
【０２１９】
この態様によると、前記鍵生成部は、前記外部装置の識別情報、前記所定のアプリケーションのハッシュ値及び前記対応する暗号鍵を対応させる第２鍵生成リストを生成する。これにより、一つのアプリケーションに対して複数の外部端末に応じて複数の暗号鍵を生成する場合、前記外部装置の識別情報、前記所定のアプリケーションのハッシュ値及び前記対応する暗号鍵を対応させる管理が確実且つ簡易となる。そのため、一つのアプリケーションについての複数の暗号鍵の秘密性の管理を確実且つ簡易なものとできる。
【０２２０】
また、本発明の第８の態様に関する情報処理装置は、さらに、前記鍵生成部は、前記暗号鍵を前記第１メモリに複製する際、前記暗号鍵の使用回数を示す情報を前記第１メモリに記憶し、前記暗号部は、前記情報が示す使用回数を前記暗号鍵の使用回数が超えた場合、前記第１メモリに複製された暗号鍵を消去し、前記制御部に新たな暗号鍵の複製を要求し、前記制御部は、前記第２モードに切り替え、前記鍵生成部に新たな暗号鍵を生成させ前記第１メモリに複写させるものである。
【０２２１】
この態様によると、同じ暗号鍵を使い続けないので、暗号鍵の漏洩の可能性を低減できると共に、攻撃者が予想される暗号鍵のパターンを全て生成して一つ一つ試して攻撃する総当たり攻撃からの保護を強化できる。
また、本発明の第９の態様に関する情報処理装置は、さらに、日及び時刻を計時する計時部を設け、前記鍵生成部は、前記暗号鍵を前記第１メモリに複製する際、前記暗号鍵の使用が許可された最終日及び最終時刻を示す時間情報を前記第１メモリに記憶し、前記暗号部は、前記時間情報が示す最終日及び最終時刻を前記計時部が計時する日及び時刻が超えた場合、前記第１メモリに複製された暗号鍵を消去し、前記制御部に新たな暗号鍵の複製を要求し、前記制御部は、前記第２モードに切り替え、前記鍵生成部に新たな暗号鍵を生成させ前記第１メモリに複写させるものである。
【０２２２】
この態様によると、同じ暗号鍵を使い続けないので、暗号鍵の漏洩の可能性を低減できると共に、攻撃者が予想する暗号鍵のパターンを全て生成して一つ一つ試して攻撃する総当たり攻撃からの保護を強化できる。
本発明の第１０の態様に関する情報処理装置は、所定の暗号データを格納する第１メモリと、復号鍵を格納する第２メモリと、所定のアプリケーションを格納する格納部と、前記所定のアプリケーションのハッシュ値に基づいて前記復号鍵を生成し前記第２メモリに格納し、前記復号鍵の生成に用いたハッシュ値を前記第１メモリに格納する鍵生成部と、前記第１メモリへのアクセスは許可され且つ前記第２メモリへのアクセスが禁止され、前記第１メモリから前記所定の暗号データを読み出して前記所定の暗号データを復号する復号部と、前記所定のアプリケーションによる前記第１メモリへのアクセスを許可し且つ前記第２メモリへのアクセスを禁止する第１モードを設定して前記所定のアプリケーションを起動し、前記第１メモリに格納された所定の暗号データを復号する処理要求を前記所定のアプリケーションから受け且つ前記第１メモリに前記復号鍵が格納されていない場合、
前記鍵生成部による前記第１メモリ及び前記第２メモリへのアクセスを許可する第２モードに切り替え、前記鍵生成部に対して前記第２メモリに格納された復号鍵を前記第１メモリに複製させ、前記第１モードに切り替え、前記復号部に前記第１メモリに複製された復号鍵を用いて前記所定の暗号データを復号させる制御部と、を具備し、前記復号部は、前記処理要求に応じて、前記処理要求を行ったアプリケーションのハッシュ値を演算し、前記演算したハッシュ値と前記第１メモリに格納されたハッシュ値とが不一致の場合、前記第１メモリに複製された復号鍵を消去し、さらに、前記復号部が前記復号鍵を用いて前記所定の暗号化テータを復号した平文データを格納する第４メモリを設け、前記復号部は、前記処理要求に応じて、前記処理要求を行ったアプリケーションのハッシュ値を演算し、前記演算したハッシュ値と前記第１メモリに格納されたハッシュ値とが不一致の場合、前記第４メモリに格納した平文データを消去するものである。
【０２２３】
この態様によると、復号鍵だけではなく、前記復号鍵を用いて過去に復号された平文データをも消去するので、将来生成される平文データのみならず、過去に生成された平文データをも不正なアプリケーションから保護できる。
８．その他変形例
（１）上記の各実施の形態では、アプリケーションプログラムの検証を行うロード機能部１２９を、汎用オペレーティングシステム１５７が備えている。しかし、それ以外のソフトウェアモジュールで実現してもよい。それ以外のモジュールとは、例えば、アプリケーションプログラムをネットワークからダウンロードして情報処理装置に格納するダウンロードソフトウェアであってもよい。
【０２２４】
（２）上記の各実施の形態では、不正なアプリケーションプログラムを検知した場合に、通常鍵テーブルに格納されている鍵を削除する。しかし、それ以外のデータを削除してもよい。それ以外のデータとは、例えば、復号された平文データである。また、それ以外のデータとは、不正なアプリケーションプログラムが格納されているファイルである。
（３）上記の各実施の形態では、不正なアプリケーションプログラムを検知した場合に、通常鍵テーブルに格納されている鍵を削除する。しかし、それ以外の操作を行ってもよい。例えば、復号された平文データを保持しているアプリケーションプログラムに対して警告メッセージを通知してもよい。また、不正なアプリケーションプログラムを検知したことを示す検知情報を不揮発性記憶部１０２に格納しておき、情報処理装置１００の次の起動時に、不揮発性記憶部１０２に検知情報が格納されているか否かを判断し、格納されている場合には、当該起動時に動的改竄チェックの頻度を多くするなどの制御をしてもよい。
【０２２５】
（４）上記の各実施の形態では、ハッシュ値をＳＨＡ−１アルゴリズムを用いて生成するとしたが、それ以外の方法を用いてもよい。例えば、ＳＨＡ−２５６アルゴリズムやＭＤ５アルゴリズムなどを用いるとしてもよい。
（５）上記の各実施の形態では、データ暗復号機能部１６０が、「保護モードから鍵を取得し、通常モードのデータ暗復号機能部を用いた暗号化」（図１０）において、「アプリケーションプログラムのハッシュ値生成及び検証Ｂ、並びに他のアプリケーションプログラムの検証」を、鍵の確認Ａ（Ｓ２２１）の前に行っていない。
【０２２６】
しかし、データ暗号化要求（Ｓ２２０）の後、かつ、鍵の確認Ａ（Ｓ２２１）の前に、「アプリケーションプログラムのハッシュ値生成及び検証Ｂ、並びに他のアプリケーションプログラムの検証」を行ってもよい。
これにより、「通常モードのデータ暗復号機能部のみを用いた暗号化」（図１１）と、「保護モードの保護データ操作部を用いた暗号化」（図１２）とで、処理を統一することができ、データ暗復号機能部１６０の処理を共通化し、プログラム中の命令コードの削減ができる。
【０２２７】
（６）上記の各実施の形態では、データ暗復号機能部１６０が、「保護モードから鍵を取得し、通常モードのデータ暗復号機能部を用いた復号」（図１５）において、「アプリケーションプログラムのハッシュ値生成及び検証Ｂ、並びに他のアプリケーションプログラムの検証」を、鍵の確認Ａ（Ｓ２８１）の前に行っていない。
しかし、データ復号要求（Ｓ２８０）の後、かつ、鍵の確認Ａ（Ｓ２８１）の前に、「アプリケーションプログラムのハッシュ値生成及び検証Ｂ、並びに他のアプリケーションプログラムの検証」を行ってもよい。
【０２２８】
これにより、「通常モードのデータ暗復号機能部のみを用いた復号」（図１５）と、「保護モードの保護データ操作部を用いた復号」（図示していない）とで、処理を統一することができ、データ暗復号機能部１６０の処理を共通化し、プログラム中の命令コードの削減ができる。
（７）上記の各実施の形態では、図１０のステップＳ２２４の後に、サーバ情報の検証を行っていない。
【０２２９】
しかし、ステップＳ２２４の後に、サーバ情報の検証を行ってもよい。
これにより、不正なサーバ情報が指定されている場合には、以降の処理を行う必要がなくなり、異常発生時の処理を高速に行うことができる。
（８）上記の各実施の形態では、図１１のステップＳ２４１の後に、サーバ情報の検証を行っていない。
【０２３０】
しかし、ステップＳ２４１の後に、サーバ情報の検証を行ってもよい。
これにより、不正なサーバ情報が指定されている場合には、以降の処理を行う必要がなくなり、異常発生時の処理を高速に行うことができる。
（９）上記の各実施の形態では、図１２のステップＳ２５６の後に、サーバ情報の検証を行っていない。
【０２３１】
しかし、ステップＳ２５６の後に、サーバ情報の検証を行ってもよい。
これにより、不正なサーバ情報が指定されている場合には、以降の処理を行う必要がなくなり、異常発生時の処理を高速に行うことができる。
（１０）上記の各実施の形態では、「アプリケーションプログラムのハッシュ値生成及び検証Ｂ」において、アプリケーションプログラムのハッシュ値を生成している。
【０２３２】
しかし、「アプリケーションプログラムのハッシュ値生成及び検証Ｂ」において、「アプリケーションプログラムのハッシュ値生成及び検証Ａ」で生成したハッシュ値を利用してもよい。
これにより、ハッシュ値生成の回数を削減することが可能となり、高速に処理をおこなうことができる。
【０２３３】
（１１）上記の各実施の形態では、通常モードと保護モードのモード切替を利用したが、それ以外の方法を利用してもよい。
例えば、オペレーティングシステム仮想化技術を用いて、２つのソフトウェア実行環境を構築し、特定のソフトウェア実行環境へのアクセス制御を行ってもよい。これにより、オペレーティングシステム仮想化技術を備える情報処理装置で、安全に、かつ高速なデータ暗復号処理をおこなうことができる。
【０２３４】
（１２）上記の各実施の形態では、ステップＳ２２４の「アプリケーションプログラムのハッシュ値生成及び検証Ｂ」において、データ暗号化要求を行ったアプリケーションプログラムの認証をする際に、生成したハッシュ値と参照ハッシュ値との比較を用いたが、それ以外の方法を用いてもよい。
例えば、アプリケーションプログラムの署名検証を用いてもよい。また、アプリケーションプログラムの署名検証を用いる場合には、ハッシュ値を新たに生成してデータ暗復号機能部に通知してもよい。
【０２３５】
なお、アプリの署名検証とハッシュ値の生成及び通知は、以下のステップを行うことで実現することができる。
（ｉ）保護データ操作部１５５は、あらかじめ署名検証鍵を保持しており、当該署名検証鍵を用いて、電子署名されたアプリケーションプログラムの電子証明書を検証する。
（ii）アプリケーションプログラムの電子証明書が改竄されていないことを検証した後に、アプリケーションプログラムのハッシュ値を生成し、生成したハッシュ値と、アプリケーションプログラムの電子証明書に格納されている参照ハッシュ値とを比較する。
【０２３６】
（iii ）生成したハッシュ値と参照ハッシュ値が一致する場合には、保護データ操作部１５５は、動的改竄検出機能部１５３及びモード切替部１４３を介して、データ暗復号機能部１６０にハッシュ値を通知する。
また、上記の電子署名されたアプリケーションプログラムの電子証明書の検証では、ＲＳＡアルゴリズムを用いてもよいし、楕円曲線暗号アルゴリズムを用いてもよい。
【０２３７】
また、上記の（ｉ）、（ii）、（iii ）において、検証が失敗し、改竄を検出し、又はハッシュ値の不一致を検出した場合には、保護データ操作部１５５は、ステップＳ２２４の「アプリケーションプログラムのハッシュ値生成及び検証Ｂ」の異常終了と同様の操作を行う。これにより、保護データ操作部１５５の保持する保護鍵テーブル１３６に記憶すべきデータ量を削減することができる。
【０２３８】
（１３）上記の各実施の形態では、アプリケーションプログラムの登録の際に、データ暗復号鍵を生成しているが、それ以外のタイミングで、データ暗復号鍵を生成してもよい。
例えば、情報処理装置の電源投入後に、アプリケーションプログラムが初めてデータ暗復号を要求するタイミングであってもよい。
【０２３９】
情報処理装置の電源投入後に、アプリケーションプログラムが初めてデータ暗復号を要求するタイミングに鍵を生成する場合には、図１０のステップＳ２２６の「鍵の確認Ｂ」とステップＳ２２７の「鍵の読み取り」の代わりに、図９のステップＳ２０９の「鍵生成と格納」を行うことで実現することができる。
これにより、図示していない不正なアクセスから保護されている不揮発性記憶部に、データ暗復号鍵を格納する必要がなくなり、不正なアクセスから保護されている不揮発性記憶部を削減することができる。
【０２４０】
（１４）上位の各実施の形態では、暗号鍵を用いるデータの暗号化及び復号鍵を用いる暗号化データの復号の操作に関して説明したが、それ以外の操作を行ってもよい。
例えば、Ｋｅｙｅｄ  Ｈａｓｈ演算であってもよい。ここで、Ｋｅｙｅｄ  Ｈａｓｈ演算は、情報セキュリティ処理である。Ｋｅｙｅｄ  Ｈａｓｈ演算の場合には、上記の各実施の形態の暗復号操作を、Ｋｅｙｅｄ  Ｈａｓｈ演算に置き換えればよい。上記の各実施の形態の暗復号操作のデータ暗復号鍵は、Ｋｅｙｅｄ  Ｈａｓｈ演算のＩＶ（Ｉｎｉｔｉａｌ  Ｖｅｃｔｏｒ）値に置き換わる。これにより、データ暗復号以外にも、安全にかつ高速に操作を行うことができる。
【０２４１】
また、データの暗号化及び暗号化データの復号に代えて、鍵を用いるデジタル署名及び鍵を用いるデジタル署名の検証を行うとしてもよい。ここで、デジタル署名及びデジタル署名の検出は、情報セキュリティ処理である。
このように、鍵を用いる暗号化、復号、Ｋｅｙｅｄ  Ｈａｓｈ演算、鍵を用いるデジタル署名、デジタル署名の検証などの、鍵を用いる情報セキュリティ処理を行うとしてもよい。
【０２４２】
（１５）上記の各実施の形態で述べた構成要素については、その一部または全てを実現可能な範囲でソフトウェアとして実装してもよい。この場合、集積回路上に乗せなくてはならないハードウェアの量を抑えることができるので、より集積度を向上させることができる。
（１６）上記の各実施の形態の各装置は、マイクロプロセッサ、ＲＯＭ、ＲＡＭ、ハードディスクユニット、ディスプレィユニット、入力ユニット、通信ユニットなどから構成されるコンピュータシステムである。前記ＲＡＭ又は前記ハードディスクユニットには、コンピュータプログラムが記憶されている。ここで、コンピュータプログラムは、所定の機能を達成するために、コンピュータに対する指令を示す命令コードが複数個組み合わされて構成されたものである。前記マイクロプロセッサが、前記コンピュータプログラムに従って動作することにより、各装置は、その機能を達成する。つまり、前記マイクロプロセッサは、前記コンピュータプログラムに含まれる各命令を１個ずつ読み出し、読み出した命令を解読し、解読結果に従って動作する。
【０２４３】
なお、各装置は、マイクロプロセッサ、ＲＯＭ、ＲＡＭ、ハードディスクユニット、ディスプレイユニット、などの全てを含むコンピュータシステムに限らず、これらの一部から構成されているコンピュータシステムであってもよい。
また、ＲＡＭ又はハードディスクユニットに記憶されているコンピュータプログラムに含まれる命令に従って、マイクロプロセッサが動作することにより、当該コンピュータプログラムとマイクロプロセッサとが、あたかも、一つのハードウェア回路を構成し、このハードウェア回路が動作しているようにみせることができる。
【０２４４】
（１７）上記の実施の形態で述べた構成要素については、１個のシステムＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ：大規模集積回路）から構成されているとしてもよい。システムＬＳＩは、複数の構成部を１個のチップ上に集積して製造された超多機能ＬＳＩであり、具体的には、マイクロプロセッサ、ＲＯＭ、ＲＡＭなどを含んで構成されるコンピュータシステムである。前記ＲＡＭには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムにしたがって動作することにより、システムＬＳＩは、その機能を達成する。
【０２４５】
また、上記の各装置を構成する構成要素の各部は、個別に１チップ化されていても良いし、一部又は全てを含むように１チップ化されてもよい。この場合、上記の構成要素をソフトウェアで実装するよりも処理を高速化することができる。
（１８）システムＬＳＩは集積度の違いにより、ＩＣ、ＬＳＩ、スーパーＬＳＩ、ウルトラＬＳＩと呼称されることもあるが、システムＬＳＩ１０１を上記のいずれの集積度で実現した場合も本発明に含まれることは言うまでもない。また、ＬＳＩ製造後に、プログラムすることが可能なＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）や、ＬＳＩ内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサを利用しても良い。
【０２４６】
さらには、半導体技術の進歩または派生する別技術によりＬＳＩに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて構成要素の集積化を行ってもよい。バイオ技術の適応等が可能性としてありえる。
（１９）上記の各装置を構成する構成要素の一部または全部は、各装置に脱着可能なＩＣカードまたは単体のモジュールから構成されているとしてもよい。前記ＩＣカードまたは前記モジュールは、マイクロプロセッサ、ＲＯＭ、ＲＡＭなどから構成されるコンピュータシステムである。前記ＩＣカードまたは前記モジュールは、上記の超多機能ＬＳＩを含むとしてもよい。マイクロプロセッサが、コンピュータプログラムにしたがって動作することにより、前記ＩＣカードまたは前記モジュールは、その機能を達成する。このＩＣカードまたはこのモジュールは、耐タンパ性を有するとしてもよい。
【０２４７】
（２０）また、本発明は、前記コンピュータプログラムまたは前記デジタル信号をコンピュータ読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、ＢＤ（Ｂｌｕ−ｒａｙＤｉｓｃ）、半導体メモリなどに記録したものとしてもよい。また、これらの記録媒体に記録されている前記デジタル信号であるとしてもよい。
【０２４８】
また、本発明は、前記コンピュータプログラムまたは前記デジタル信号を、電気通信回線、無線または有線通信回線、インターネットを代表とするネットワーク、データ放送等を経由して伝送するものとしてもよい。
また、本発明は、マイクロプロセッサとメモリを備えたコンピュータシステムであって、前記メモリは、上記コンピュータプログラムを記憶しており、前記マイクロプロセッサは、前記コンピュータプログラムにしたがって動作するとしてもよい。
【０２４９】
また、前記プログラムまたは前記デジタル信号を前記記録媒体に記録して移送することにより、または前記プログラムまたは前記デジタル信号を前記ネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしてもよい。
（２１）これらの実施の形態および変形例の組合せであってもよい。
【産業上の利用可能性】
【０２５０】
本発明にかかるデータ暗復号方法は、データを暗復号する際に、データ暗復号機能部が鍵を保持しているか確認し、保持している場合には、実行環境の切り替えを行わずに暗復号処理を行う。さらに、不正なアプリケーションプログラムの場合には、データ暗復号機能部が保持している鍵を削除し、不正なアプリケーションプログラムが存在しなくなるまで、安全な実行環境でデータの暗復号を行うため、鍵の漏洩を防止して、安全な実行環境への切り替え回数を削減するという効果を有する。そのため、高速なデータ暗復号を行う機器等の分野で特に有効である。
【符号の説明】
【０２５１】
１    情報処理システム
１０    サーバ装置
２０    ネットワーク
１００、１００ｂ、１００ｃ、１００ｄ、１００ｅ、１００ｆ  情報処理装置
１０１、１０１ｅ  システムＬＳＩ
１０２    不揮発性記憶部
１０３    メモリ部
１０４    専用メモリ部
１０５    システムバス
１２０、１２０ｂ、１２０ｆ  実行環境
１２１、１２１ｃ    実行環境
１２６    通常暗復号部
１２７    通常操作部
１２８、１２８ｄ、１２８ｅ、１２８ｆ    通常鍵テーブル
１２９    ロード機能部
１３３    許可リスト
１３４    保護暗復号部
１３５    保護操作部
１３６、１３６ｄ、１３６ｅ、１３６ｆ    保護鍵テーブル
１４１    ＣＰＵ
１４２    周辺回路
１４３    モード切替部
１４４    内部保護メモリ部
１４５    内部バス
１４６    専用バス
１４７    汎用レジスタ
１４８    制御レジスタ
１４９    バッファ領域
１５０    制御レジスタ
１５１    バッファ領域
１５２    セキュアオペレーティングシステム
１５３    動的改竄検出機能部
１５４    セキュアブート部
１５５    保護データ操作部
１５７    汎用オペレーティングシステム
１５８    アプリケーションプログラムＡ
１５９    アプリケーションプログラムＢ
１６０    データ暗復号機能部
１６０ｆ  データ暗復号機能部
２０５    中間言語マシン
２０６    中間言語アプリケーションプログラム
２１８    中間言語ロード機能部
２３７    保護鍵テーブル更新部
２６５    クロック
２６６    専用線
２９７    復号データ格納位置テーブル
【図１】
2010182296.tif 000003
【図２】
2010182296.tif 000004
【図３】
2010182296.tif 000005
【図４】
2010182296.tif 000006
【図５】
2010182296.tif 000007
【図６】
2010182296.tif 000008
【図７】
2010182296.tif 000009
【図８】
2010182296.tif 000010
【図９】
2010182296.tif 000011
【図１０】
2010182296.tif 000012
【図１１】
2010182296.tif 000013
【図１２】
2010182296.tif 000014
【図１３】
2010182296.tif 000015
【図１４】
2010182296.tif 000016
【図１５】
2010182296.tif 000017
【図１６】
2010182296.tif 000018
【図１７】
2010182296.tif 000019
【図１８】
2010182296.tif 000020
【図１９】
2010182296.tif 000021
【図２０】
2010182296.tif 000022
【図２１】
2010182296.tif 000023
【図２２】
2010182296.tif 000024
【図２３】
2010182296.tif 000025
【図２４】
2010182296.tif 000026
【図２５】
2010182296.tif 000027
【図２６】
2010182296.tif 000028
【図２７】
2010182296.tif 000029
【図２８】
2010182296.tif 000030
【図２９】
2010182296.tif 000031
【図３０】
2010182296.tif 000032
【図３１】
2010182296.tif 000033
【図３２】
2010182296.tif 000034
【図３３】
2010182296.tif 000035
【図３４】
2010182296.tif 000036
【図３５】
2010182296.tif 000037
【図３６】
2010182296.tif 000038
【図３７】
2010182296.tif 000039
【図３８】
2010182296.tif 000040
【図３９】
2010182296.tif 000041
【図４０】
2010182296.tif 000042
【図４１】
2010182296.tif 000043
【図４２】
2010182296.tif 000044
【図４３】
2010182296.tif 000045