説明

プログラム実行装置、制御方法、制御プログラム及び集積回路

【課題】情報処理装置100は、暗号化などで秘匿性を確保し、暗号化に直接関連しない処理のオーバーヘッドを抑える。
【解決手段】鍵を用いる暗号化命令を含むアプリケーションプログラムA158、前記プログラムの改竄を検出する改竄検出部135x、命令に従って動作し、暗号化命令を検出すると暗号化指示を出力するCPU141、前記指示により保護モードへの切替えを制御するデータ暗復号機能部160、前記プログラムに対応付けて鍵を安全に記憶し、保護モードにおいて、前記鍵を出力し、通常モードへの切替えを制御する保護データ操作部155を備え、データ暗復号機能部160は、通常モードにおいて、受け取った前記鍵を用いて、暗号化を実行する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、安全なソフトウェア実行環境と通常のソフトウェア実行環境とを切り替えて、コンピュータプログラムを実行するプログラム実行装置において、データの暗号化、暗号化データの復号、デジタル署名の生成及びデジタル署名の検証などの情報セキュリティ処理を高速かつ安全に行う技術に関する。
【背景技術】
【0002】
近年、パーソナルコンピュータ(Personal Computer、PC)や携帯電話などの情報処理装置に格納された個人情報などのデータの盗難が問題となっている。
前述のデータの盗難は、不正なコンピュータプログラムによって行われることがある。このコンピュータプログラムは、インターネットなどのオープンなネットワークからPCや携帯電話などの情報処理装置に不正にダウンロードされたものである。このコンピュータプログラムは、この情報処理装置において、情報処理装置のユーザの意図に反して不正に動作する。例えば、このコンピュータプログラムは、PCや携帯電話の記憶装置に格納されているデータを読み取り、読み取ったデータを、ネットワークを介して、攻撃者などに送付する。こうして攻撃者は、データを盗むという目的を達成する。以下では、不正なコンピュータプログラムを悪意のあるコンピュータプログラムとも呼ぶ。
【0003】
このようなデータの盗難を防ぐために、特許文献1及び特許文献2(特許文献1(日本の公報)と特許文献2(米国の公報)とは、同一の内容を開示している。)は、ネットワークからの侵入者がいかなるユーザ権限を利用して不正なファイル読み出しや書き込みを試みても、該アクセスの抑止が可能なアクセス制御システムを提供することを目的として、次のような技術を開示している。
【0004】
サーバ情報処理装置上において、複数のOSが同時に動作する。そのOSの一つは、サービス用OSであり、他の一つは、セキュリティ用OSである。サーバ情報処理装置上で動作する複数OS制御プログラムは、サーバ情報処理装置上でサービス用OSとセキュリティ用OSとが動作するための各種の制御をする。また、サービス用OS上で、サーバプログラムが動作し、セキュリティ用OS上で、アクセス制御プログラムが動作する。また、サービス用OS内で、I/Oマネージャ及びファイルI/Oフックプログラムが動作する。複数OS制御プログラム内で、OS間通信処理部が動作する。
【0005】
サーバプログラムがファイルアクセスを要求すると、その要求がI/Oマネージャを経由してファイルI/Oフックプログラムに到達する。ファイルI/Oフックプログラムは、OS間通信処理部を介して、ファイルアクセス要求に関するアクセス権限のチェックなどをアクセス制御プログラムに対してリクエストする。アクセス制御プログラムは、受信したリクエストの内容を、ポリシーファイルの内容と照合し、その結果をレスポンスとして、OS間通信処理部を介して、ファイルI/Oフックプログラムに伝達する。ファイルI/Oフックプログラムは、受信したレスポンスの内容から当該アクセスの可否を判断し、アクセス不可であればエラーコードを設定する。エラーコードが設定されている場合、前記I/Oマネージャは、サーバプログラムにエラーを返す。
【0006】
このように、データへのアクセス許可・不許可の判定を、安全な実行環境であるセキュリティ用OS上で実行することにより、不正なデータアクセスを行うことを防止することができる。
次に、特許文献3は、コンピュータシステムと一体となって動作する暗号システムにおいて、キャッシュ上に暗号処理されていないデータが残ってしまうという問題を解決することを目的として、次の技術を開示している。
【0007】
オペレーティングシステムと記憶装置(ハードディスク)とを有するコンピュータシステムは、所定のフォルダに保存するファイルを自動的に暗号化する機能を備える。暗号処理機能のON−OFFの切り替えに伴い、前記コンピュータシステムが管理するキャッシュメモリ上に保持された暗号化対象のファイルに付帯するキャッシュデータを無効化し又は書き換える。
【0008】
こうして、暗号化されていないデータがキャッシュ上に残らないので、これらのデータの不正な使用を防止することができる。
【先行技術文献】
【特許文献】
【0009】
【特許文献1】日本国 特開2008−204468号公報
【特許文献2】US 2001/0025311 A1公報
【特許文献3】日本国 特開2004−240699号公報
【発明の概要】
【発明が解決しようとする課題】
【0010】
特許文献1及び特許文献2により開示されている技術では、データへのアクセスの度に、サービス用OSとセキュリティ用OSとの間でOS間通信処理が必要であり、そのオーバーヘッドが大きいという問題がある。
また、特許文献3により開示されている技術では、データ暗復号が終了した後に、再度データ暗復号を行う場合に、再度、鍵をキャッシュに読み込む必要がある。
【0011】
本発明は、上記の課題を解決するため、暗号化や復号などの情報セキュリティ処理において秘匿性を確保しつつ、情報セキュリティ処理に直接関連しない処理によるオーバーヘッドを抑えることのできるプログラム実行装置、制御方法、制御プログラム及び集積回路を提供することを目的とする。
【課題を解決するための手段】
【0012】
前記従来の課題を解決するために、本発明の一実施態様は、通常モードと保護モードとを切り替えて動作するプログラム実行装置であって、鍵を用いる情報セキュリティ処理を指示する命令を含むプログラムの改竄を検出する改竄検出手段と、通常モードにおいて、前記改竄が検出されない場合に、前記プログラムに従って動作し、前記プログラムの中から前記命令を検出すると情報セキュリティ処理の指示を出力する実行手段と、通常モードにおいて、前記指示を受けると、保護モードに切り替えるよう制御する通常セキュリティ処理手段と、前記プログラムに対応付けて鍵を安全に記憶しており、保護モードにおいて、前記鍵を読み出し、読み出した鍵を出力し、通常モードに切り替えるよう制御する保護セキュリティ処理手段とを備え、前記通常セキュリティ処理手段は、通常モードにおいて、前記鍵を受け取り、受け取った前記鍵を用いて前記情報セキュリティ処理を実行することを特徴とする。
【発明の効果】
【0013】
この構成によると、通常モードにおいて、保護モードから取得した鍵を用いて、改竄されていないと確認されたプログラムの命令に従って情報セキュリティ処理を実行するので、通常モードにおいて行われる情報セキュリティ処理において秘匿性を保つことができる。このように鍵を取得する際に通常モードから保護モードへさらに通常モードへの切替えが発生するものの、鍵を取得した後には、情報セキュリティ処理の実行中に再度保護モードに切り替える必要はなく、暗号化や復号などの情報セキュリティ処理に直接関連しない処理によるオーバーヘッドを抑えることができるという優れた効果を奏する。
【図面の簡単な説明】
【0014】
【図1】実施の形態1の情報処理システム1の構成を示す。
【図2】情報処理装置100の構成を示す。
【図3】情報処理装置100のソフトウェア構成を示す。
【図4】通常鍵テーブル128のデータ構造の一例を示す。
【図5】情報処理装置100による鍵削除の手順を説明する概念図である。
【図6】情報処理装置100の電源投入時の動作を示すフローチャートである。
【図7】アプリケーションプログラムによるデータの利用の一連の手順を示すフローチャートである。
【図8】データの暗号化の際の状態遷移を示す状態遷移図である。
【図9】アプリケーションプログラムの登録の手順を示すシーケンス図である。
【図10】保護モードから鍵を取得し、通常モードのデータ暗復号機能部を用いて暗号化する場合の動作を示すシーケンス図である。
【図11】通常モードのデータ暗復号機能部のみを用いて暗号化する場合の動作を示すシーケンス図である。
【図12】保護モードの保護データ操作部を用いて暗号化する場合の動作を示すシーケンス図である。
【図13】不正なアプリケーションプログラムから暗号化要求が行われた場合の動作を示すシーケンス図である。
【図14】暗号化データの復号の際の状態遷移を示す図である。
【図15】保護モードから鍵を取得し、通常モードのデータ暗復号機能部を用いて復号する場合の動作を示すシーケンス図である。
【図16】アプリケーションプログラムの検証の動作を示すフローチャートである。
【図17】情報処理装置100がセーフブートで起動する場合の動作を示すフローチャートである。
【図18】通常モードから保護モードへの遷移を行うモード切替Aの動作を示すフローチャートである。
【図19】アプリケーションプログラムのハッシュ値生成と検証Aの動作を示すフローチャートである。
【図20】サーバ情報の検証の動作を示すフローチャートである。
【図21】鍵生成と格納の動作を示すフローチャートである。
【図22】データ暗復号機能部を検証する動作を示すフローチャートである。
【図23】保護モードから通常モードへの遷移を行うモード切替Bの動作を示すフローチャートである。
【図24】アプリケーションプログラムのハッシュ値生成と検証Bの動作を示すフローチャートである。
【図25】他のアプリケーションプログラムの検証の動作を示すフローチャートである。
【図26】鍵の確認Aの動作を示すフローチャートである。
【図27】鍵の確認Bの動作を示すフローチャートである。
【図28】鍵の格納の動作を示すフローチャートである。
【図29】実施の形態2の情報処理装置100bのソフトウェア構成を示す。
【図30】実施の形態3の情報処理装置100cのソフトウェア構成を示す。
【図31】実施の形態3のアプリケーションプログラムの登録の動作を示すシーケンス図である。図32へ続く。
【図32】実施の形態3のアプリケーションプログラムの登録の動作を示すシーケンス図である。図31から続く。
【図33】実施の形態3のアプリケーションプログラムの検証と鍵テーブル更新の動作を示すフローチャートである。
【図34】実施の形態3の鍵テーブル更新の動作を示すフローチャートである。
【図35】実施の形態4の通常鍵テーブル128dのデータ構造を示す。
【図36】実施の形態4の鍵の確認Aの動作を示すフローチャートである。
【図37】実施の形態5の情報処理装置100eの構成を示す。
【図38】実施の形態5の通常鍵テーブル128eのデータ構造を示す。
【図39】実施の形態5の鍵の確認Aの動作を示すフローチャートである。
【図40】実施の形態6の情報処理装置100fのソフトウェア構成を示す。
【図41】実施の形態6の復号データ格納位置テーブル297のデータ構造を示す。
【図42】実施の形態6のアプリケーションプログラムのハッシュ値生成と検証Bの動作を示すフローチャートである。
【図43】実施の形態6の他のアプリケーションプログラムの確認の動作を示すシーケンス図である。
【発明を実施するための形態】
【0015】
本発明の一実施態様である通常モードと保護モードとを切り替えて動作するプログラム実行装置は、鍵を用いる情報セキュリティ処理を指示する命令を含むプログラムの改竄を検出する改竄検出手段と、通常モードにおいて、前記改竄が検出されない場合に、前記プログラムに従って動作し、前記プログラムの中から前記命令を検出すると情報セキュリティ処理の指示を出力する実行手段と、通常モードにおいて、前記指示を受けると、保護モードに切り替えるよう制御する通常セキュリティ処理手段と、前記プログラムに対応付けて鍵を安全に記憶しており、保護モードにおいて、前記鍵を読み出し、読み出した鍵を出力し、通常モードに切り替えるよう制御する保護セキュリティ処理手段とを備え、前記通常セキュリティ処理手段は、通常モードにおいて、前記鍵を受け取り、受け取った前記鍵を用いて前記情報セキュリティ処理を実行することを特徴とする。
【0016】
ここで、前記通常セキュリティ処理手段は、さらに、通常モードにおいて、受け取った前記鍵を記憶し、前記改竄検出手段は、さらに、前記プログラムの改竄を検出し、前記通常セキュリティ処理手段は、さらに、前記改竄が検出されなかった場合に、通常モードにおいて、記憶している前記鍵を用いて、前記情報セキュリティ処理を実行するとしてもよい。
【0017】
ここで、前記通常セキュリティ処理手段は、さらに、通常モードにおいて、受け取った前記鍵を記憶し、前記改竄検出手段は、さらに、前記プログラムの改竄を検出し、前記通常セキュリティ処理手段は、さらに、前記改竄が検出された場合に、通常モードにおいて、記憶している前記鍵を削除し、保護モードに切り替えるよう制御し、前記保護セキュリティ処理手段は、さらに、保護モードにおいて、記憶している前記鍵を用いて、前記情報セキュリティ処理を実行するとしてもよい。
【0018】
ここで、前記通常セキュリティ処理手段は、さらに、通常モードにおいて、受け取った前記鍵を記憶し、前記改竄検出手段は、さらに、通常モードで動作する他のプログラムの改竄を検出し、前記通常セキュリティ処理手段は、さらに、前記他のプログラムの改竄が検出された場合に、通常モードにおいて、記憶している前記鍵を削除し、保護モードに切り替えるよう制御し、前記保護セキュリティ処理手段は、さらに、保護モードにおいて、記憶している前記鍵を用いて、前記情報セキュリティ処理を実行するとしてもよい。
【0019】
ここで、前記通常セキュリティ処理手段は、さらに、前記プログラムの実行が要求されたとき、通常モードにおいて、当該プログラムの鍵の生成指示を出力し、保護モードに切り替えるよう制御し、前記保護セキュリティ処理手段は、さらに、保護モードにおいて、前記鍵の生成指示を受けると、当該プログラムの前記鍵を生成し、当該プログラムに対応付けて記憶してもよい。
【0020】
ここで、前記保護セキュリティ処理手段は、さらに、保護モードにおいて、前記プログラムのハッシュ値を生成し、生成したハッシュ値と生成した前記鍵とを対応付けて記憶してもよい。
ここで、前記保護セキュリティ処理手段は、さらに、保護モードにおいて、前記鍵とともに前記ハッシュ値を読み出し、前記鍵とともに前記ハッシュ値を出力し、前記通常セキュリティ処理手段は、さらに、通常モードにおいて、前記鍵とともに前記ハッシュ値を受け取り、前記ハッシュ値に対応付けて前記鍵を記憶してもよい。
【0021】
ここで、前記通常セキュリティ処理手段は、さらに、通常モードにおいて、他のプログラムから情報セキュリティ処理の指示を受け、当該他のプログラムのハッシュ値を算出し、算出したハッシュ値が記憶しているハッシュ値と一致しているか否かを判断し、一致していなければ、記憶している前記鍵を削除してもよい。
ここで、前記通常セキュリティ処理手段は、さらに、前記プログラムの実行が要求されたとき、通常モードにおいて、当該プログラムに対応する鍵を保持しているか否かを判断し、保持してないと判断する場合に、当該プログラムの鍵の生成指示を出力し、保護モードに切り替えるよう制御し、前記保護セキュリティ処理手段は、さらに、保護モードにおいて、前記鍵の生成指示を受けると、当該プログラムに対応する鍵を保持しているか否かを判断し、保持していると判断する場合に、前記鍵を読み出し、読み出した前記鍵を出力し、通常モードに切り替えるように制御してもよい。
【0022】
ここで、前記保護セキュリティ処理手段は、さらに、前記鍵に対応付けて、鍵の最大使用回数を安全に記憶しており、保護モードにおいて、前記最大使用回数を出力し、前記通常セキュリティ処理手段は、さらに、通常モードにおいて、前記鍵とともに、前記最大使用回数を受け取り、受け取った前記最大使用回数を記憶し、現在の使用回数が記憶している前記最大使用回数を超えているか否かを判断し、超えていると判断される場合に、新たな生成の指示を出力し、保護モードに切り替えるよう制御し、前記保護セキュリティ処理手段は、さらに、保護モードにおいて、新たな生成の指示を受け取ると、新たな鍵と新たな最大使用回数を生成し、生成した新たな鍵と新たな最大使用回数とを出力し、通常モードに切り替えるよう制御し、前記通常セキュリティ処理手段は、さらに、通常モードにおいて、新たな鍵と新たな最大使用回数とを受け取り、記憶している鍵と最大使用回数とを削除し、受け取った新たな鍵と新たな最大使用回数とを対応付けて記憶してもよい。
【0023】
ここで、前記保護セキュリティ処理手段は、さらに、前記鍵に対応付けて、鍵を使用することができる最終日時を安全に記憶しており、保護モードにおいて、前記最終日時を出力し、前記通常セキュリティ処理手段は、さらに、通常モードにおいて、前記鍵とともに、前記最終日時を受け取り、受け取った前記最終日時を記憶し、現在の日時が記憶している前記最終日時を超えているか否かを判断し、超えていると判断される場合に、新たな生成の指示を出力し、保護モードに切り替えるよう制御し、前記保護セキュリティ処理手段は、さらに、保護モードにおいて、新たな生成の指示を受け取ると、新たな鍵と新たな最終日時とを生成し、生成した新たな鍵と新たな最終日時とを出力し、通常モードに切り替えるよう制御し、前記通常セキュリティ処理手段は、さらに、通常モードにおいて、新たな鍵と新たな最終日時とを受け取り、記憶している鍵と最終日時とを削除し、受け取った新たな鍵と新たな最終日時とを対応付けて記憶してもよい。
【0024】
ここで、前記情報セキュリティ処理は、暗号化、復号、デジタル署名の生成、デジタル署名の検証、鍵付きハッシュの生成のいずれかであるとしてもよい。
また、本発明の一実施態様である通常モードと保護モードとを切り替えて動作するプログラム実行装置で用いられる制御方法は、鍵を用いる情報セキュリティ処理を指示する命令を含むプログラムの改竄を検出する改竄検出ステップと、通常モードにおいて、前記改竄が検出されない場合に、前記プログラムに従って動作し、前記プログラムの中から前記命令を検出すると情報セキュリティ処理の指示を出力する実行ステップと、通常モードにおいて、前記指示を受けると、保護モードに切り替えるよう制御する通常セキュリティ処理ステップと、前記プログラムに対応付けて鍵を安全に記憶しており、保護モードにおいて、前記鍵を読み出し、読み出した鍵を出力し、通常モードに切り替えるよう制御する保護セキュリティ処理ステップとを備え、前記通常セキュリティ処理ステップにおいて、通常モードにおいて、前記鍵を受け取り、受け取った前記鍵を用いて前記情報セキュリティ処理を実行することを特徴とする。
【0025】
また、本発明の一実施態様である通常モードと保護モードとを切り替えて動作するプログラム実行装置で用いられ、コンピュータ読み取り可能な記録媒体に記録されている制御プログラムは、コンピュータに、鍵を用いる情報セキュリティ処理を指示する命令を含むプログラムの改竄を検出する改竄検出ステップと、通常モードにおいて、前記改竄が検出されない場合に、前記プログラムに従って動作し、前記プログラムの中から前記命令を検出すると情報セキュリティ処理の指示を出力する実行ステップと、通常モードにおいて、前記指示を受けると、保護モードに切り替えるよう制御する通常セキュリティ処理ステップと、前記プログラムに対応付けて鍵を安全に記憶しており、保護モードにおいて、前記鍵を読み出し、読み出した鍵を出力し、通常モードに切り替えるよう制御する保護セキュリティ処理ステップとを実行させ、前記通常セキュリティ処理ステップにおいて、通常モードにおいて、前記鍵を受け取り、受け取った前記鍵を用いて前記情報セキュリティ処理を実行することを特徴とする。
【0026】
また、本発明の一実施態様である通常モードと保護モードとを切り替えて動作するプログラム実行のための集積回路は、鍵を用いる情報セキュリティ処理を指示する命令を含むプログラムの改竄を検出する改竄検出手段と、通常モードにおいて、前記改竄が検出されない場合に、前記プログラムに従って動作し、前記プログラムの中から前記命令を検出すると情報セキュリティ処理の指示を出力する実行手段と、通常モードにおいて、前記指示を受けると、保護モードに切り替えるよう制御する通常セキュリティ処理手段と、前記プログラムに対応付けて鍵を安全に記憶しており、保護モードにおいて、前記鍵を読み出し、読み出した鍵を出力し、通常モードに切り替えるよう制御する保護セキュリティ処理手段とを備え、前記通常セキュリティ処理手段は、通常モードにおいて、前記鍵を受け取り、受け取った前記鍵を用いて前記情報セキュリティ処理を実行することを特徴とする。
【0027】
以下に、本発明の実施の形態について、図面を参照しながら説明を行う。
1.実施の形態1
本発明に係る一の実施の形態としての情報処理システム1について説明する。
1.1 情報処理システム1の構成
情報処理システム1は、図1に示すように、情報処理装置100及びサーバ装置10から構成されており、情報処理装置100とサーバ装置10とは、ネットワーク20を介して接続されている。情報処理装置100は、ネットワーク20を介して、サーバ装置10との間でデータの送受信をする。
【0028】
情報処理装置100は、ユーザから入力されたデータを暗号化して内部に有する不揮発性記憶部102(後述する)に格納する。次に、必要に応じて、暗号化されたデータを復号し、ネットワーク20を介して、サーバ装置10にアップロードする。また、情報処理装置100は、サーバ装置10から、ネットワーク20を介して、データやプログラムをダウンロードし、ダウンロードしたデータやプログラムを暗号化して、不揮発性記憶部102に格納する。なお、データの暗号化及び復号に関しては、後述する。
【0029】
ここで、ネットワーク20は、インターネットなどの公衆通信網や、アドホックに構築された通信路であってもよい。
情報処理装置100は、一例として、パーソナルコンピュータ、携帯電話、携帯情報端末、ゲーム機、DVD再生装置、DVD記録装置、DVD再生記録装置、BD再生装置、BD記録装置、BD再生記録装置、デジタル放送受信装置、デジタル放送受信記録装置、デジタル放送再生装置である。
1.2 情報処理装置100の構成
情報処理装置100は、コンピュータシステムを構成しており、図2に示すように、システムLSI101、不揮発性記憶部102、メモリ部103、専用メモリ部104、システムバス105、図示していない入出力部及び図示していないその他の要素から構成されている。システムLSI101、不揮発性記憶部102、メモリ部103及び専用メモリ部104は、システムバス105を介して、相互に接続されている。
【0030】
情報処理装置100は、通常モードと保護モードとを切り替えて動作するプログラム実行装置である。
(1)システムLSI101
システムLSI101は、CPU141、周辺回路142、モード切替部143、内部保護メモリ部144、内部バス145及び専用バス146から構成されており、CPU141、周辺回路142及びモード切替部143は、内部バス145を介して、相互に接続されている。また、モード切替部143と内部保護メモリ部144とは、専用バス146を介して接続されている。システムLSI101は、通常モードと保護モードとを有し、通常モードと保護モードとを切替えて動作する。
【0031】
CPU141は、メモリ部103及び内部保護メモリ部144に格納されたプログラム等に含まれる命令コードに従って動作することにより、情報処理装置100全体の動作を制御する。CPU141は、ソフトウェアが利用する汎用レジスタ147、メモリ管理(Memory Managemenet Unit、MMU)や演算のアクセラレート機能などを制御する制御レジスタ148、キャッシュなどに用いられるバッファ領域149を含んでいる。
【0032】
メモリ部103又は内部保護メモリ部144に格納されたプログラムに含まれる命令コードに従って、CPU141が動作することにより、当該プログラムとCPU141とが、あたかも、一つのハードウェアユニットを構成し、このハードウェアユニットが動作しているようにみせることができる。
周辺回路142は、DMA(Direct Memory Access)などの固定的な機能を有し、ソフトウェアにより制御される。また、周辺回路142は、制御レジスタ150及びバッファ領域151を備える。制御レジスタ150及びバッファ領域151は、周辺回路142を制御するために、ソフトウェアにより利用される。
【0033】
モード切替部143は、システムLSI101の中で、通常モードと保護モードとを切り替える。また、モード切替部143は、専用メモリ部104を用いて、通常モードと保護モードとの間でデータ交換を行う。詳細については後述する。また、モード切替部143は、内部バス145と内部保護メモリ部144とを接続し、又は切り離す。つまり、保護モードの場合、モード切替部143は、内部保護メモリ部144と内部バス145とを接続する。通常モードの場合、モード切替部143は、内部保護メモリ部144と内部バス145とを切り離す。
【0034】
内部保護メモリ部144は、セキュアオペレーティングシステム152、動的改竄検出機能部153、セキュアブート部154、保護データ操作部155(保護セキュリティ処理部とも呼ぶ)及び保護切替データ156を格納している。セキュアオペレーティングシステム152、動的改竄検出機能部153、セキュアブート部154及び保護データ操作部155は、コンピュータプログラムであり、それぞれ、複数の命令を含んで構成されている。内部保護メモリ部144は、保護モードの場合のみ、CPU141からアクセス可能なメモリであり、アクセス可能及びアクセス不可能の切り替え制御は、モード切替部143によって行われる。
(2)不揮発性記憶部102
不揮発性記憶部102は、アプリケーションプログラムA用の暗号化されたデータ163及びアプリケーションプログラムB用の暗号化されたデータ164を格納するための領域を備えている。
(3)メモリ部103
メモリ部103は、汎用オペレーティングシステム157、アプリケーションプログラムA158、アプリケーションプログラムB159、データ暗復号機能部160(通常セキュリティ処理部とも呼ぶ)、暗号化された保護切替用データ161及び通常切替用データ162を格納するための領域を備えている。
【0035】
汎用オペレーティングシステム157、アプリケーションプログラムA158、アプリケーションプログラムB159及びデータ暗復号機能部160は、それぞれ、複数の命令を含んで構成されるコンピュータプログラムである。
また、保護切替用データは、保護モードから通常モードへの切替えの直前の時点において、CPU141の汎用レジスタ147、制御レジスタ148及びバッファ領域149にそれぞれ格納されているデータ、並びに周辺回路142の制御レジスタ150及びバッファ領域151にそれぞれ格納されているデータである。
【0036】
通常切替用データ162は、通常モードから保護モードへの切替えの直前の時点において、CPU141の汎用レジスタ147、制御レジスタ148及びバッファ領域149に格納されているデータ、並びに周辺回路142の制御レジスタ150及びバッファ領域151に格納されているデータである。
(4)専用メモリ部104
専用メモリ部104は、通常モードから保護モードへ、又は保護モードから通常モードへ、転送するためのデータを格納する。
1.3 情報処理装置100のソフトウェア構成
情報処理装置100のソフトウェア構成を図3に示す。
【0037】
情報処理装置100は、図3に示すように、通常モードであるソフトウェアの実行環境120と、保護モードである安全なソフトウェアの実行環境121とから構成される。情報処理装置100は、通常モードと保護モードとを切り替えて、各ソフトウェアを実行する。なお、通常モードと保護モードの切り替えの動作の詳細については、後述する。
(1)通常モードの実行環境120で動作するソフトウェアの構成要素の説明
通常モードの実行環境120は、汎用オペレーティングシステム157、データ暗復号機能部160、アプリケーションプログラムA158及びアプリケーションプログラムB159を含む。
(汎用オペレーティングシステム157)
汎用オペレーティングシステム157は、通常モードの場合に動作するオペレーティングシステムであり、ロード機能部129及び改竄検出部157xを含む。汎用オペレーティングシステム157は、ロード機能部129を用いて、アプリケーションプログラムをメモリ部103上にロードして実行させる。また、アプリケーションプログラムをメモリ部103上から削除(アンロード)する。改竄検出部157xは、改竄の検出を行う。
(アプリケーションプログラムA158及びアプリケーションプログラムB159)
アプリケーションプログラムA158及びアプリケーションプログラムB159は、それぞれ、ユーザに対して、Webブラウズ機能や電子メール機能などの機能を提供するソフトウェアである。アプリケーションプログラムA158及びアプリケーションプログラムB159は、データの暗号化又は復号をさせる。
【0038】
アプリケーションプログラムA158及びアプリケーションプログラムB159は、それぞれ、鍵を用いる情報セキュリティ処理を指示する命令及びその他の命令を含む。ここで、情報セキュリティ処理は、データの暗号化、暗号化されたデータの復号、デジタル署名の生成、デジタル署名の検証、鍵付きハッシュの演算などの処理である。また、鍵を用いる情報セキュリティ処理を指示する命令とは、鍵を用いてデータの暗号化を指示する命令、又は鍵を用いて暗号化されたデータの復号を指示する命令である。また、鍵を用いたデジタル署名の生成を指示する命令、鍵を用いたデジタル署名の検証を指示する命令、鍵を用いて鍵付きハッシュの演算を指示する命令なども、情報セキュリティ処理を指示する命令に含まれる。
【0039】
CPU141は、これらの命令を読み出し、読み出した命令を解読し、解読結果に従って動作する。CPU141が、アプリケーションプログラムの中から情報セキュリティ処理を指示する命令を検出すると、情報セキュリティ処理の指示をデータ暗復号機能部160へ出力する。このようにして、アプリケーションプログラムは、情報セキュリティ処理要求を、ここでは、データ暗復号要求をデータ暗復号機能部160に対して要求する。
【0040】
アプリケーションプログラムに含まれている命令コードに従って、CPU141が動作することにより、当該アプリケーションプログラムとCPU141とが、あたかも、一つのハードウェアユニットを構成し、このハードウェアユニットが動作しているようにみせることができる。このハードウェアユニットを実行手段と呼ぶこともある。
(データ暗復号機能部160)
データ暗復号機能部160(通常セキュリティ処理部とも呼ぶ)は、上位のアプリケーションプログラムからデータ暗復号要求を受け取り、受け取ったデータ暗復号要求に応じて、データを暗復号するコンピュータプログラムであり、複数の命令コードを含む。データ暗復号機能部160は、通常鍵テーブル128、通常暗復号部126及び通常操作部127を含む。
【0041】
データ暗復号機能部160に含まれている命令コードに従って、CPU141が動作することにより、データ暗復号機能部160とCPU141とが、あたかも、一つのハードウェアユニットを構成し、このハードウェアユニットが動作しているようにみせることができる。このハードウェアユニットを通常セキュリティ処理手段と呼ぶこともある。
通常操作部127は、アプリケーションプログラムAやアプリケーションプログラムBなど上位のアプリケーションプログラムからデータ暗復号の要求を受け付け、データ暗復号の鍵の有無、他アプリケーションプログラムの存在の有無を判定し、通常暗復号部126又は保護データ操作部155を用いて、データの暗復号を行う。通常操作部127は、改竄検出部127xを含む。改竄検出部127は、改竄の検出を行う。
【0042】
通常暗復号部126は、図示していない暗号部と復号部とを含み、通常鍵テーブル128に格納されている鍵を用いて、データの暗復号を行う。
通常鍵テーブル128は、上位のアプリケーションプログラムが利用するデータを暗号化又は復号する際に用いる鍵を一時的に格納するテーブルであり、図4に一例として示すように、1個以上の鍵情報を記憶するための領域を備えている。各鍵情報は、アプリケーションプログラムの参照ハッシュ値及び1個以上のサーバ鍵情報から構成され、各サーバ鍵情報は、サーバ情報及び鍵から構成されている。このように、通常鍵テーブル128は、アプリケーションプログラムの参照ハッシュ値とサーバ情報を用いて、一意の鍵が探索可能なように構成されたデータテーブルである。
【0043】
アプリケーションプログラムは、一例として、Webブラウズ機能を提供するブラウザプログラムである。このブラウザプログラムは、音楽配信サーバ装置及び映画配信サーバ装置から、それぞれ、暗号化された音楽及び暗号化された映画を受信する。それぞれのサーバ装置において、暗号化に用いられる鍵は異なり、復号に用いられる鍵も異なる。このように、アプリケーションプログラムは、音楽配信サーバ装置及び映画配信サーバ装置に関連している。
【0044】
アプリケーションプログラムの参照ハッシュ値は、当該アプリケーションプログラムの全体に対して、ハッシュを施して生成したハッシュ値である。ハッシュの一例は、SHA−1である。
サーバ鍵情報は、アプリケーションプログラムに関連するサーバ装置に対応している。
サーバ情報は、当該アプリケーションプログラムに関連するサーバ装置を識別するための識別情報である。サーバ情報は、IP(Internet Protocol)アドレスであってもよいし、URL(Universal Resource Location)であってもよいし、それ以外のサーバを一意に識別可能な識別子であってもよい。
【0045】
鍵は、当該アプリケーションプログラムに関連するサーバ装置からサービスの提供を受ける際に、データの暗号化又は復号のときに用いられる鍵である。
このようなデータ構造を有することにより、所定のアプリケーションプログラムのハッシュ値と対応する暗復号鍵とを対応させる管理が確実且つ簡易となる。そのため、暗復号鍵の秘密性の管理を確実且つ簡易なものとできる。
【0046】
さらに、このようなデータ構造を有することにより、一つのアプリケーションプログラムに対して複数のサーバ装置に応じて複数の暗復号鍵を生成する場合、サーバの識別情報、アプリケーションプログラムのハッシュ値及び対応する暗復号鍵を対応させる管理が確実且つ簡易となる。そのため、一つのアプリケーションプログラムについての複数の暗復号鍵の秘密性の管理を確実且つ簡易なものとできる。
(2)保護モードの実行環境121で動作するソフトウェアの構成要素の説明
保護モードの実行環境121は、セキュアオペレーティングシステム152、動的改竄検出機能部153、セキュアブート部154及び保護データ操作部155を含む。
(セキュアオペレーティングシステム152)
セキュアオペレーティングシステム152は、保護モードの場合に動作するオペレーティングシステムであり、保護モードで動作するソフトウェアを管理するソフトウェアである。
(動的改竄検出機能部153)
動的改竄検出機能部153は、通常モードのロード機能部129やデータ暗復号機能部160が改竄されていないか否かを検証するソフトウェアである。詳細については後述する。
(セキュアブート部154)
セキュアブート部154は、情報処理装置100の電源投入時に、セキュアブートを行う。詳細については後述する。セキュアブート部154は、改竄検出部154xを含む。改竄検出部154xは、改竄の検出を行う。
(保護データ操作部155)
保護データ操作部155(保護セキュリティ処理部とも呼ぶ)は、許可リスト133、保護暗復号部134、保護操作部135及び保護鍵テーブル136から構成され、データの暗復号鍵の生成及びデータの暗復号を行う。
【0047】
保護データ操作部155に含まれている命令コードに従って、CPU141が動作することにより、保護データ操作部155とCPU141とが、あたかも、一つのハードウェアユニットを構成し、このハードウェアユニットが動作しているようにみせることができる。このハードウェアユニットを保護セキュリティ処理手段と呼ぶこともある。
許可リスト133は、接続を許可すべきサーバ装置を識別するサーバ情報を1個以上含んで構成されている。サーバ情報は、当該アプリケーションプログラムに関連するサーバ装置を識別するための識別情報である。ここで、サーバ情報は、IPアドレスであってもよいし、URLであってもよいし、それ以外のサーバを一意に識別可能な識別子であってもよい。
【0048】
保護操作部135は、データの暗号化又は復号のために用いる鍵の生成を行う鍵生成部(図示していない)及び改竄検出部135xを含む。また、データの暗号化を行うように、保護暗復号部134に対して指示する。また、改竄検出部135xは、改竄の検出を行い、データの暗復号の要求を行ったアプリケーションプログラムが、不正なアプリケーションプログラムであるか否かを判定する。また、不正なアプリケーションプログラムであるか否かの判定方法については、後述する。
【0049】
また、不正なアプリケーションプログラムの場合には、保護操作部135は、データ暗復号機能部160が保持する鍵を削除する鍵削除部(図示していない)を含む。さらに、通常モードにおいて、不正なアプリケーションプログラムが存在していない場合には、保護操作部135は、保護鍵テーブル136に格納している鍵を読み出し、読み出した鍵を、モード切替部143及び専用メモリ部104を介して、データ暗復号機能部160に対して出力し、データ暗復号機能部160に鍵を格納させる鍵複製部(図示していない)を含む。つまり、保護操作部135は、保護鍵テーブル136に格納している鍵をデータ暗復号機能部160に複写する。なお、詳細については後述する。
【0050】
保護暗復号部134は、保護鍵テーブル136に格納されている鍵を用いて、データの暗号化を行う暗号化部及び暗号化されたデータの復号を行う復号部を含む。
保護鍵テーブル136は、上位のアプリケーションプログラムが利用するデータを暗号化する際に又は暗号化されたデータを復号する際に用いる鍵を格納するデータテーブルである。保護鍵テーブル136は、通常鍵テーブル128と同様のデータ構造を有しており、1個以上の鍵情報を記憶するための領域を備えている。各鍵情報は、アプリケーションプログラムの参照ハッシュ値及び1個以上のサーバ鍵情報から構成され、各サーバ鍵情報は、サーバ情報及び鍵から構成されている。これらの参照ハッシュ値、サーバ情報及び鍵については、通常鍵テーブル128に含まれるものと同じであるので、説明を省略する。
1.4 情報処理装置100における動作手順
(1)情報処理装置100による鍵削除の手順
情報処理装置100において、データの暗号化及び復号において使用する鍵の削除の手順について、図5を用いて説明する。
【0051】
アプリケーションプログラムA158がデータ暗復号機能部160に対して、データの暗号化又は復号の要求を出力すると(S11)、データ暗復号機能部160は、要求元のアプリケーションプログラムの全体をメモリ部103から読み出し、読み出したアプリケーションプログラムの全体に対して、ハッシュを施し、例えば、SHA−1を施して、当該アプリケーションプログラムのハッシュ値を生成する(S12)。次に、通常鍵テーブル128から、全ての鍵情報を読み出し、各鍵情報から参照ハッシュ値を抽出し、生成したハッシュ値と、抽出した全ての参照ハッシュ値とをそれぞれ比較する(S13)。生成したハッシュ値に一致する参照ハッシュ値が存在しない場合には、つまり、全ての参照ハッシュ値が生成したハッシュ値と一致しない場合には、通常鍵テーブル128に格納している全ての鍵情報を削除する(S14)。
(2)情報処理装置100によるセキュアブートの手順
情報処理装置100において、電源が投入されアプリケーションプログラムが動作可能な状態となるまでのセキュアブートの手順について、図6に示すフローチャート用いて説明する。
【0052】
情報処理装置100の電源が投入されると(S100)、次に、情報処理装置100は、保護モードで動作するソフトウェアであるセキュアブート部154を起動する(S101)。
次に、セキュアブート部154の改竄検出部154xは、汎用オペレーティングシステム157の検証を行う。具体的には、セキュアブート部154の改竄検出部154xは、メモリ部103に記憶されている汎用オペレーティングシステム157のハッシュ値を生成し、生成したハッシュ値とセキュアブート部154があらかじめ安全に格納している参照ハッシュ値とを比較することにより、汎用オペレーティングシステム157が改竄されていないか否かを検証する(S102)。その他、Trusted Computing Group(TCG)のMobile Phone WG(MPWG)において規定されているセキュアブートを用いて検証してもよい。
【0053】
汎用オペレーティングシステム157が改竄されていないと判定された場合には(S103でYES)、セキュアブート部154の改竄検出部154xは、メモリ部103に記憶されているデータ暗復号機能部160の検証を行う。具体的には、セキュアブート部154の改竄検出部154xは、データ暗復号機能部160のハッシュ値を生成し、生成したハッシュ値とセキュアブート部154があらかじめ安全に格納している参照ハッシュ値とを比較することにより、データ暗復号機能部160が改竄されていないか否かを検証する(S104)。その他、Trusted Computing Group(TCG)のMobile Phone WG(MPWG)において規定されているセキュアブートを用いて検証してもよい。なお、ステップS104の検証は、改竄されていないことが検証された汎用オペレーティングシステム157が行ってもよい。
【0054】
データ暗復号機能部160が改竄されていないと判定された場合には(S106でYES)、保護データ操作部155は、保護鍵テーブル136から全ての鍵情報を読み出し、モード切替部143及び専用メモリ部104を介して、読み出した鍵情報を通常鍵テーブル128へ書き込む。つまり、保護鍵テーブル136に格納している鍵情報を、通常鍵テーブル128へ複写する(S107)。次に、情報処理装置100は、アプリケーションプログラムが実行可能な状態へ遷移する(S108)。
【0055】
汎用オペレーティングシステム157が改竄されたと判定された場合には(S103でNO)、又は、データ暗復号機能部160が改竄されたと判定された場合には(S106でNO)、ユーザに警告メッセージを通知し、さらに、異常停止したことを示す情報を不揮発性記憶部102に格納し、その後、情報処理装置100の起動を停止する(S105)。
【0056】
なお、データ暗復号機能部160の通常鍵テーブル128に、図4に示す鍵情報のうち、あらかじめアプリケーションプログラムの参照ハッシュ値とサーバ情報とを格納しておいて、ステップS107において、鍵情報を複写する代わりに、参照ハッシュに対応付けて鍵のみを複写するとしてもよい。
(3)情報処理装置100のアプリケーションプログラムによるデータの利用の一連の手順
アプリケーションプログラムによるデータの利用の一連の手順について、図7に示すフローチャートを用いて説明する。アプリケーションプログラムがデータを利用する場合に、情報処理装置100は、以下に示す手順を実行する。
【0057】
アプリケーションプログラムの登録処理が行われ(S110)、次に、アプリケーションプログラムは、データを暗号化し(S111)、又は、暗号化データを復号し(S112)、次に、アプリケーションプログラムは、データの読み込み又は書き込みを行う(S113)。アプリケーションプログラムは、ステップS111〜S113を必要に応じて繰り返すことにより、データを暗復号しながら利用する。
【0058】
次に、ユーザがアプリケーションプログラムのアンインストールなどの処理を行うことにより、アプリケーションプログラムは削除され(S114)、次にデータの利用が終了する。
(4)データの暗号化の際の状態遷移
情報処理装置100においては、データの暗号化の際に、図8に示すように、4個の状態172、173、174及び175の間を遷移する。
【0059】
状態172は、情報処理装置100の電源投入直後に、不正なアプリケーションプログラムがメモリ部103に記憶されていることを検出した状態である。状態173は、データの暗号化をする際に、保護モードにおいて、保護データ操作部155により暗号化を行う状態である。状態174は、データの暗号化をする際に、通常モードにおいて、保護モードから鍵を取得し、取得した鍵を用いてデータ暗復号機能部160により暗号化を行う状態である。状態175は、データの暗号化をする際に、通常モードにおいて、通常鍵テーブル128の鍵を用い、データ暗復号機能部160により暗号化を行う状態である。
【0060】
情報処理装置100の電源が投入されると(171)、メモリ部103に不正なアプリケーションプログラムが格納されているか否かが判断され、不正なアプリケーションプログラムが検出されない場合に(181)、状態173に遷移する。一方、不正なアプリケーションプログラムが検出された場合に(182)、状態172に遷移する。
状態173において、アプリケーションプログラムからデータの暗号化の要求を受け取ると(184)、状態174に遷移する。
【0061】
状態174において、さらに、アプリケーションプログラムからデータの暗号化の要求を受け取ると(185)、状態175に遷移する。
状態175において、アプリケーションプログラムからデータの暗号化の要求を受け取ると(186)、再度、状態175に遷移する。一方、メモリ部103に不正なアプリケーションプログラムが格納されていることが検出されると(187)、状態173に遷移する。
【0062】
状態172において、メモリ部103に不正なアプリケーションプログラムが格納されているか否かが判断され、不正なアプリケーションプログラムが格納されていない場合に(183)、状態173に遷移する。一方、不正なアプリケーションプログラムが格納されている場合に(188)、再度、状態172に遷移する。
(5)情報処理装置100におけるアプリケーションプログラムの登録の手順
情報処理装置100におけるアプリケーションプログラムの登録の手順について、図9に示すシーケンス図を用いて説明する。
【0063】
ユーザからの要求により、アプリケーションプログラムの実行が指示されると、汎用オペレーティングシステム157に対して、当該アプリケーションプログラムの実行要求が出力される(S200)。このとき、汎用オペレーティングシステム157は、メモリ部103において、実行要求の対象である当該アプリケーションプログラムが格納されている位置を示すアドレスを、メモリ部103内の実行要求アドレス格納位置に格納する。実行要求アドレス格納位置は、予めメモリ部103内において定められた位置に存在する。各プログラムは、実行の対象である当該アプリケーションプログラムを読み出すとき、この実行要求アドレス格納位置を参照し、そこに格納されているアドレスからアプリケーションプログラムの格納位置を知ることができる。実行対象であるアプリケーションプログラムが複数存在する場合には、実行要求アドレス格納位置は、複数個存在する。
【0064】
汎用オペレーティングシステム157は、改竄検出部157xを用いて、当該アプリケーションプログラムの検証を行い(S201)、当該アプリケーションプログラムが正しいアプリケーションプログラムである場合、当該アプリケーションプログラムの実行を開始する(S202)。
アプリケーションプログラムは、サーバ情報を引数とするアプリケーション登録要求を、データ暗復号機能部160へ出力する(S203)。
【0065】
データ暗復号機能部160は、アプリケーション登録要求を受信すると(S203)、モード切替部143に、通常モードから保護モードに切り替えるように、モード切替Aを要求し(S204)、モード切替部143は、通常モードから保護モードに切り替えるモード切替Aを行う(S205)。
モード切替A(S205)によって、動的改竄検出機能部153が起動し、動的改竄検出機能部153は、アプリケーションプログラムのハッシュ値生成と検証Aとを行う(S206)。アプリケーションプログラムのハッシュ値生成と検証Aの詳細については、後述する。
【0066】
次に、動的改竄検出機能部153は、サーバ情報の検証を行う(S207)。サーバ情報検証の詳細については後述する。
次に、動的改竄検出機能部153は、保護データ操作部155に、ハッシュ値とサーバ情報を引数として、鍵生成要求を行う(S208)。
保護データ操作部155は、鍵生成と格納を行い、鍵を内部保護メモリ部144に格納する(S209)。鍵生成と格納の詳細については後述する。
【0067】
そして、保護データ操作部155は、動的改竄検出機能部153に、鍵の格納が終了したことを示す、つまりアプリケーションプログラムの登録が完了したことを示す結果を通知する(S210)。
動的改竄検出機能部153は、データ暗復号機能部160が改竄されているか否を検証する(S211)。なお、ステップS211に対応する操作は、ステップS205とステップS206の間で行ってもよい。
【0068】
そして、動的改竄検出機能部153は、モード切替部143に、保護モードから通常モードに切り替えるように、モード切替Bを要求し(S212)、モード切替部143は、保護モードから通常モードに切り替えるモード切替Bを行う(S213)。ここで、モード切替部143は、保護モードから通常モードに対して転送するデータ、ここでは、前記の結果を、専用メモリ部104に書き込み、通常モードに切り替えた後で、専用メモリ部104からデータを読み出し、読み出したデータを通常モード側に出力する。なお、モード切替Bの詳細については後述する。
【0069】
モード切替B(S213)によって、データ暗復号機能部160が起動し、データ暗復号機能部160は、モード切替部143から前記結果を受け取り、データ暗復号機能部160は、アプリケーションプログラムに対して、前記結果の通知を行う(S214)。これで、アプリケーションプログラムの登録処理が終了する。
(6)状態173から状態174への状態遷移についての動作
図8に示す状態173から状態174への状態遷移についての動作、つまり、保護モードから鍵を取得し、通常モードにおいてデータ暗復号機能部160を用いた暗号化を示す状態174への遷移の動作について、図10に示すシーケンス図を用いて説明する。
【0070】
図8に示す状態173の場合に、アプリケーションプログラムによりデータの暗号化要求がされ、かつメモリ部103に不正なアプリケーションプログラムが存在しない場合に、次に示す動作がされる。図10に示すシーケンスが終了した後には、図8に示す状態174へ遷移する。
アプリケーションプログラムは、データ暗復号機能部160に、平文データとサーバ情報を引数として、データ暗号化要求を行う(S220)。
【0071】
データ暗復号機能部160は、鍵の確認Aを行い、通常鍵テーブル128に鍵が格納されていないことを確認する(S221)。次に、データ暗復号機能部160は、平文データとサーバ情報をモード切替部143へ出力し、モード切替部143に、通常モードから保護モードに切り替えるように、モード切替Aを要求する(S222)。
モード切替部143は、モード切替Aを行う(S223)。ここで、モード切替部143は、通常モードから保護モードに対して転送するデータ、ここでは、平文データとサーバ情報を、専用メモリ部104に書き込み、保護モードに切り替えた後で、専用メモリ部104からデータを読み出し、読み出したデータを保護モード側に出力する。モード切替Aの詳細は後述する。モード切替A(S223)によって、保護データ操作部155が起動する。保護データ操作部155は、モード切替部143から平文データとサーバ情報を受け取る。
【0072】
保護データ操作部155の改竄検出部155xは、アプリケーションプログラムのハッシュ値生成と検証Bを行い、データ暗号化要求を行ったアプリケーションプログラムが不正なアプリケーションプログラムであるか否かを検証する(S224)。アプリケーションプログラムのハッシュ値生成と検証Bの詳細については後述する。
次に、保護データ操作部155の改竄検出部155xは、他のアプリケーションプログラムの検証を行う(S225)。ここでは、他のアプリケーションプログラムが起動されていなかったと判断されたものとする。なお、他のアプリケーションプログラムの検証の詳細については後述する。
【0073】
これにより、暗復号鍵を生成する際に用いられたハッシュ値に対応する所定のアプリケーションプログラム以外の他のアプリケーションプログラムが、起動を終了し、暗復号鍵を使用する危険性がなくなった場合に、次に示すようにして、アクセスが許可されている通常鍵テーブル128に暗復号鍵を再度複製する。そのため、所定のアプリケーションプログラム以外の他のアプリケーションプログラムが暗復号鍵を使用する危険性がなくなった以降は、再度、暗復号鍵を秘密に管理する場合に要求される暗号化の煩雑な処理を大幅に軽減しつつ、暗復号鍵の秘密を確保してデータの秘匿性を保証できる状態に回復できる。
【0074】
次に、保護データ操作部155は、鍵の確認Bを行う(S226)。鍵の確認Bの詳細については後述する。そして、内部保護メモリ部144の保護鍵テーブル136から鍵を読み取り(S227)、動的改竄検出機能部153に鍵を送信する(S228)。鍵の送信は、内部保護メモリ部144に存在する保護データ操作部155と動的改竄検出機能部153との共有メモリを介して行う。なお、それ以外の方法を用いて送信してもよい。それ以外の方法の一つとして、CPU141の汎用レジスタ147を用いてもよい。
【0075】
動的改竄検出機能部153は、データ暗復号機能部160の検証を行い、改竄されていないかを検証する(S229)。
そして、動的改竄検出機能部153は、保護データ操作部155から受け取った鍵を指定して、モード切替部143に、保護モードから通常モードに切り替えるように、モード切替Bを要求する(S230)。
【0076】
モード切替部143は、専用メモリ部104に動的改竄検出機能部153から指定された鍵を格納し、モード切替Bを行う(S231)。モード切替Bの詳細については後述する。
モード切替B(S231)によって、データ暗復号機能部160が起動する。また、モード切替部143は、専用メモリ部104から鍵を読み込んで、読み込んだ鍵をデータ暗復号機能部160に送信する。鍵の送信は、メモリ部103に存在する共有メモリを介して行う。なお、それ以外の方法を用いて送信してもよい。それ以外の方法として、CPU141の汎用レジスタ147を用いてもよい。
【0077】
データ暗復号機能部160は、送信された鍵を格納する(S232)。鍵の格納の詳細については後述する。
次に、データ暗復号機能部160は、メモリ部103の通常鍵テーブル128に格納されている鍵を用いて、平文データを暗号化する(S233)。ここで、暗号化アルゴリズムとして、AESアルゴリズム、Triple DESアルゴリズム、RSAアルゴリズム、楕円曲線暗号アルゴリズムを利用してもよい。
【0078】
次に、データ暗復号機能部160は、暗号化データに対して、一意な識別子であるデータIDを割り当て、管理を行う。さらに、上位のアプリケーションプログラムにデータIDを通知する(S234)。なお、暗号化データに対してデータIDを割り当てずに、暗号化データを上位のアプリケーションプログラムに全て通知し、上位のアプリケーションプログラムが暗号化データを管理してもよい。
【0079】
以上説明したように、暗復号鍵はアクセスが制限された保護モードの保護鍵テーブル136に格納され、保護データ操作部155が暗復号を用いて暗復号処理を行う1回目のときに、アクセスが制限された保護鍵テーブル136から暗復号鍵を取得するためにモードを切替える処理を行う。それ以降はアクセスが許可されている通常鍵テーブル128に暗復号鍵を複製し、この複製した暗復号鍵を用いて暗復号する。そのため、暗復号処理の毎に前記モードを切替える処理は不要となるので、暗復号鍵を秘密に管理する場合に要求される暗号化の煩雑な処理を大幅に軽減できる。
(7)状態175への遷移の動作
図8に示す状態175への遷移の動作について、図11に示すシーケンス図を用いて説明する。
【0080】
図8に示す状態174「保護モードから鍵を取得し、通常モードのデータ暗復号機能部を用いた暗号化」の場合、及び状態175「通常モードのデータ暗復号機能部のみを用いた暗号化」の場合に、データ暗号要求が行われ、かつ不正なアプリが存在しない場合に、図11に示す動作が行われる。図11に示す動作が完了した後には、図8の状態175へ遷移する。
【0081】
アプリケーションプログラムは、データ暗復号機能部160に、平文データとサーバ情報を引数として、データ暗号化要求を行う(S240)。
データ暗復号機能部160の改竄検出部127xは、アプリケーションプログラムのハッシュ値生成と検証Bとを行い、データ暗号化要求を行ったアプリケーションプログラムが不正なアプリケーションプログラムであるか否かを検証する(S241)。アプリのハッシュ値生成と検証Bの詳細については後述する。ここでは、データ暗号化要求を行ったアプリケーションプログラムが不正なアプリケーションプログラムでないと判断されたものとする。
【0082】
次に、アプリケーションプログラムが不正でない場合に、データ暗復号機能部160の改竄検出部127xは、他のアプリケーションプログラムの検証を行う(S242)。ここでは、他のアプリケーションプログラムが起動されていなかったと判断されたものとする。他のアプリケーションプログラムの検証の詳細については後述する。
次に、データ暗復号機能部160は、鍵の確認Aを行う(S243)。ここでは、鍵が存在していると判断されたものとする。鍵の確認Aの詳細については後述する。次に、データ暗復号機能部160は、メモリの通常鍵テーブル128に格納されている鍵を読み取り、読み取った鍵を用いて、平文データを暗号化する(S244)。ここで、暗号化アルゴリズムとして、AESアルゴリズム、Triple DESアルゴリズム、RSAアルゴリズム、楕円曲線暗号アルゴリズムを利用してもよい。
【0083】
次に、データ暗復号機能部160は、暗号化データに一意な識別子であるデータIDを割り当て、管理を行う。さらに、上位のアプリケーションプログラムにデータIDを通知する(S245)。なお、暗号化データに対してデータIDを割り当てずに、暗号化データを上位のアプリケーションプログラムに全て通知し、上位アプリケーションプログラムが暗号化データを管理してもよい。
【0084】
これによると、暗復号鍵はアクセスが制限された保護モードの保護鍵テーブル136に格納され、保護データ操作部155が暗復号を用いて暗復号処理を行う1回目のときに、アクセスが制限された保護鍵テーブル136から暗復号鍵を取得するためにモードを切替える処理を行うが、それ以降はアクセスが許可されている通常鍵テーブル128に暗復号鍵を複製し、この複製した暗復号鍵を用いて暗復号する。そのため、暗復号処理の毎に前記モードを切替える処理は不要となるので、暗復号鍵を秘密に管理する場合に要求される暗号化の煩雑な処理を大幅に軽減できる。
(8)状態173への遷移の動作
図8に示す状態173「保護モードの保護データ操作部を用いた暗号化」への遷移の動作について、図12に示すシーケンス図を用いて説明する。
【0085】
図8の状態175「通常モードのデータ暗復号機能部のみを用いた暗号化」の場合に、データ暗号要求が行われ、かつ不正なアプリが存在する場合に、図12に示す動作が行われる。図12に示す動作が完了した後には、再度、図8の状態173に遷移する。
アプリケーションプログラムがデータ暗復号機能部160に、平文データとサーバ情報を引数として、データ暗号化要求を行う(S250)。
【0086】
次に、データ暗復号機能部160の改竄検出部127xは、アプリケーションプログラムのハッシュ値生成と検証Bを行い、データ暗号化要求を行ったアプリケーションプログラムが不正なアプリケーションプログラムであるか否かを検証する(S251)。ここでは、当該アプリケーションプログラムが不正なプログラムではなかったと判断されたものとする。なお、アプリケーションプログラムのハッシュ値生成と検証Bの詳細については後述する。
【0087】
次に、データ暗復号機能部160の改竄検出部127xは、他のアプリケーションプログラムの検証を行う(S252)。ここでは、不正な他のアプリケーションプログラムが存在することを検知したものとする。なお、他のアプリケーションプログラムの検証の詳細については後述する。その場合に、データ暗復号機能部160は、通常鍵テーブル128に格納している鍵を全て削除する。削除する場合に、通常鍵テーブル128に格納している鍵に、「0」などの特定の値を上書きしてもよいし、乱数を発生させ、その乱数を上書きしてもよい。
【0088】
そして、データ暗復号機能部160は、鍵の確認Aを行う(S253)。ここでは、鍵がメモリ部103に存在しないことを確認したものとする。なお、鍵の確認Aの詳細については後述する。次に、モード切替部143に対して、モード切替要求を行う(S254)。モード切替部143は、モード切替Aを行う(S255)。なお、モード切替Aの詳細については後述する。
【0089】
モード切替A(S255)によって、保護データ操作部155が起動する。
保護データ操作部155の改竄検出部155xは、ステップS255とステップS257の間に、アプリケーションプログラムのハッシュ値生成と検証Bを行って、データ暗号化要求を行ったアプリケーションプログラムが不正なアプリケーションプログラムであるか否かを検証する(S256)。ここでは、データ暗号化要求を行ったアプリケーションプログラムが不正なアプリケーションプログラムでないと判断されたものとする。
【0090】
次に、保護データ操作部155は、鍵の確認Bを行う(S257)。ここでは、鍵が存在したと確認されたものとする。鍵の確認Bの詳細については後述する。次に、保護データ操作部155は、内部保護メモリ部144から鍵を読み取り、読み取った鍵を用いてデータの暗号化を行う(S258)。ここで、暗号化アルゴリズムとして、AESアルゴリズム、Triple DESアルゴリズム、RSAアルゴリズム、楕円曲線暗号アルゴリズムを利用してもよい。
【0091】
次に、保護データ操作部155は、動的改竄検出機能部153に、暗号化データの通知を行う(S259)。
動的改竄検出機能部153は、データ暗復号機能部160の検証を行い、改竄されていないかを検証する(S260)。次に、動的改竄検出機能部153は、モード切替部143に、暗号化データを通知し、保護モードから通常モードに切り替えるように、モード切替Bを要求する(S261)。
【0092】
モード切替部143は、受け取った暗号化データを専用メモリ部104に格納し、モード切替Bを行う(S262)。モード切替Bの詳細については後述する。モード切替B(S262)によって、データ暗復号機能部160が起動する。この場合に、モード切替部143は、専用メモリ部104から暗号化データを読み出し、データ暗復号機能部160に暗号化データを通知する。
【0093】
データ暗復号機能部160は、通知された暗号化データに一意な識別子であるデータIDを割り当て、管理を行う。さらに、上位のアプリケーションプログラムにデータIDを通知する(S263)。なお、暗号化データに対してデータIDを割り当てずに、暗号化データを上位のアプリケーションプログラムに全て通知し、上位のアプリケーションプログラムが暗号化データを管理してもよい。
【0094】
これにより、通常鍵テーブル128に複製された暗復号鍵が通常鍵テーブル128から消去された後は、通常モードの状態でデータ暗復号機能部160に暗復号処理を行なわせるのではなく、通常モードから保護モードに切替え、暗復号鍵が格納された保護鍵テーブル136へのアクセスが可能な保護データ操作部155に暗復号化処理を行わせる。そのため、通常鍵テーブル128に複製された暗復号鍵が通常鍵テーブル128から消去された後、モードの切替え処理が行われるものの、暗復号鍵の秘密を確保でき、その結果、データの秘匿性を保証できる。
(9)不正なアプリケーションプログラムから暗号化要求が行われた場合の動作
不正なアプリケーションプログラムから暗号化要求が行われた場合の動作について、図13に示すシーケンス図を用いて説明する。
【0095】
不正なアプリケーションプログラムから暗号化要求が行われた場合には、情報処理装置100の状態は、図8の状態173「保護モードの保護データ操作部を用いた暗号化」に遷移する。
アプリケーションプログラムがデータ暗復号機能部160に、平文データとサーバ情報を引数として、データ暗号化要求を行う(S270)。
【0096】
データ暗復号機能部160の改竄検出部127xは、アプリケーションプログラムのハッシュ値生成と検証Bを行い、データ暗号化要求を行ったアプリケーションプログラムが不正なアプリケーションプログラムであるか否かを検証する(S271)。ここでは、アプリケーションプログラムが不正であると判断されたものとする。不正なアプリケーションプログラムであると判断した場合には、データ暗復号機能部160は、通常鍵テーブル128に格納している鍵を全て削除する(S272)。鍵の削除の方法として、通常鍵テーブル128に格納している鍵に、特定の値を上書きしてもよいし、乱数を発生させ、乱数を上書きしてもよい。なお、アプリケーションプログラムのハッシュ値生成と検証Bの詳細については後述する。
【0097】
次に、データ暗復号機能部160は、アプリケーションプログラムに暗号化処理が失敗したことを通知する(S273)。
これにより、暗復号鍵を生成する際に用いられたハッシュ値(図21を用いて後述する)に対応するアプリケーションプログラム以外のアプリケーションプログラムが、アクセスが制限されていない通常鍵テーブル128に格納されている暗復号鍵を使用する危険性がある場合には、通常鍵テーブル128に格納されている暗復号鍵を消去するので、暗復号鍵の秘密を確保でき、その結果、データの秘匿性も保証できる。
【0098】
従って、暗復号鍵を秘密に管理する場合に要求される暗号化の煩雑な処理を大幅に軽減しつつ、暗復号鍵の秘密を確保してデータの秘匿性を保証できる。
(10)暗号化データの復号の状態遷移
情報処理装置100においては、暗号化データの復号の際に、図14に示すように、4個の状態192、193、194及び195の間を遷移する。
【0099】
状態192は、情報処理装置100の電源投入直後に、不正なアプリケーションプログラムがメモリ部103に記憶されていることが検出された状態である。状態193は、暗号化データの復号をする際に、保護モードにおいて、保護データ操作部155により復号を行う状態である。状態194は、暗号化データの復号をする際に、通常モードにおいて、保護モードから鍵を取得し、取得した鍵を用いてデータ暗復号機能部160により復号を行う状態である。状態195は、暗号化データの復号をする際に、通常モードにおいて、通常鍵テーブル128の鍵を用い、データ暗復号機能部160により復号を行う状態である。
【0100】
情報処理装置100の電源が投入されると(191)、メモリ部103に不正なアプリケーションプログラムが格納されているか否かが判断され、不正なアプリケーションプログラムが検出されない場合に(201)、状態193に遷移する。一方、不正なアプリケーションプログラムが検出された場合に(202)、状態192に遷移する。
状態193において、アプリケーションプログラムから暗号化データの復号の要求を受け取ると(204)、状態194に遷移する。
【0101】
状態194において、さらに、アプリケーションプログラムから暗号化データの復号の要求を受け取ると(205)、状態195に遷移する。
状態195において、アプリケーションプログラムから暗号化データの復号の要求を受け取ると(206)、再度、状態195に遷移する。一方、メモリ部103に不正なアプリケーションプログラムが格納されていることが検出されると(207)、状態193に遷移する。
【0102】
状態192において、メモリ部103に不正なアプリケーションプログラムが格納されているか否かが判断され、不正なアプリケーションプログラムが格納されていない場合に(203)、状態193に遷移する。一方、不正なアプリケーションプログラムが格納されている場合に(208)、再度、状態192に遷移する。
図8に示すデータの暗号化の状態遷移と、図14に示す暗号化データの復号の状態遷移とは、データを暗号化する、又は、暗号化データを復号するという点のみが異なっている。このため、以下の暗号化データの復号の説明においては、代表的な「保護モードから鍵を取得し、通常モードのデータ暗復号機能部160を用いた復号」のみを対象として行う。
(11)状態194へ遷移する際の情報処理装置100の動作
図14に示す状態194「保護モードから鍵を取得し、通常モードのデータ暗復号機能部160を用いた復号」へ遷移する際の情報処理装置100の動作について、図15に示すシーケンス図を用いて説明する。
【0103】
図14に示す状態193「保護モードの保護データ操作部を用いた復号」の場合に、暗号化データの復号要求が行われ、かつ不正なアプリが存在しない場合に、情報処理装置100は、図15に示すように動作する。図15に示すように動作が完了した後に、図14に示す状態194「保護モードから鍵を取得し、通常モードのデータ暗復号機能部160を用いた復号」に遷移する。
【0104】
アプリケーションプログラムは、データ暗復号機能部160に対して、暗号化データを示すデータIDとサーバ情報を引数として、データ復号要求を行う(S280)。
データ暗復号機能部160は、鍵の確認Aを行う(S281)。ここでは、通常鍵テーブル128に鍵が格納されていないことを確認したものとする。
次に、データ暗復号機能部160は、モード切替部143に、通常モードから保護モードに切り替えるように、モード切替Aを要求する(S282)。モード切替部143は、モード切替Aを行う(S283)。なお、モード切替Aの詳細については後述する。モード切替A(S283)によって、保護データ操作部155が起動する。
【0105】
保護データ操作部155の改竄検出部155xは、アプリケーションプログラムのハッシュ値生成と検証Bを行い、データ復号要求を行ったアプリケーションプログラムが不正なアプリケーションプログラムであるか否かを検証する(S284)。ここで、当該アプリケーションプログラムは、不正なプログラムではなかったと判断されたものとする。なお、アプリケーションプログラムのハッシュ値生成と検証Bの詳細については後述する。
【0106】
次に、保護データ操作部155の改竄検出部155xは、他のアプリケーションプログラムの検証を行う(S285)。ここでは、他のアプリケーションプログラムが起動されていなかったと判断されたものとする。なお、他のアプリケーションプログラムの検証の詳細については後述する。
次に、保護データ操作部155は、鍵の確認Bを行う(S286)。ここでは、鍵が存在すると判断されたものとする。なお、鍵の確認Bの詳細については後述する。さらに、保護データ操作部155は、内部保護メモリ部144の保護鍵テーブル136から鍵を読み取り(S287)、動的改竄検出機能部153に対して読み取った鍵を送信する(S288)。鍵の送信は、内部保護メモリ部144に存在する保護データ操作部155と動的改竄検出機能部153との共有メモリを介して行う。なお、それ以外の方法を用いて送信してもよい。それ以外の方法として、CPU141の汎用レジスタ147を用いてもよい。
【0107】
動的改竄検出機能部153は、データ暗復号機能部160の検証を行い、改竄されているか否かを検証する(S289)。ここでは、データ暗復号機能部160は改竄されていないと判断されたものとする。
次に、動的改竄検出機能部153は、鍵を指定して、モード切替部143に対して、保護モードから通常モードに切り替えるように、モード切替Bを要求する(S290)。
【0108】
モード切替部143は、専用メモリ部104に動的改竄検出機能部153から指定された鍵を格納し、モード切替Bを行う(S291)。なお、モード切替Bの詳細については後述する。モード切替B(S291)によって、データ暗復号機能部160が起動する。また、モード切替部143は、専用メモリ部104から鍵を読み込んで、読み込んだ鍵をデータ暗復号機能部160へ送信する。鍵の送信は、メモリに存在する共有メモリを介して行う。なお、それ以外の方法を用いて送信してもよい。それ以外の方法として、CPU141の汎用レジスタ147を用いてもよい。
【0109】
データ暗復号機能部160は、送信された鍵を通常鍵テーブル128に格納する(S292)。鍵の格納の詳細については後述する。次に、データ暗復号機能部160は、メモリ部103の通常鍵テーブル128に格納されている鍵を読み取り、読み取った鍵を用いて、暗号化データを復号する(S293)。ここで、復号アルゴリズムとして、AESアルゴリズム、Triple DESアルゴリズム、RSAアルゴリズム、楕円曲線暗号アルゴリズムを利用してもよい。
【0110】
次に、データ暗復号機能部160は、生成した平文データに一意な識別子であるデータIDを割り当て、管理を行う。さらに、上位のアプリケーションプログラムにデータIDを通知する(S294)。なお、平文データに対してデータIDを割り当てない場合には、データ暗復号機能部160は、データIDの代わりに、平文データを引数としてアプリケーションプログラムに渡す。
(12)アプリケーションプログラムの検証の動作
情報処理装置100によるアプリケーションプログラムの検証の動作について、図16に示すフローチャートを用いて説明する。
【0111】
ここで説明するアプリケーションプログラムの検証の動作は、図9のステップS201に示すアプリケーションプログラムの検証の詳細である。
汎用オペレーティングシステム157の改竄検出部157xは、メモリ部103からアプリケーションプログラムを読み出し、読み出したアプリケーションプログラムに対して、一例として、SHA−1などの一方向性関数を用いて、ハッシュ値を生成する(S401)。
【0112】
次に、汎用オペレーティングシステム157の改竄検出部157xは、生成したハッシュ値が、通常鍵テーブル128が保持するハッシュ値のいずれかと一致するか否かを判定する(S402)。
一致する場合には(S402でYES)、アプリケーションプログラムの検証は正常に終了する。一致しない場合には(S402でNO)、アプリケーションプログラムの検証は異常終了となる。
【0113】
異常終了の場合には、汎用オペレーティングシステム157は、アプリケーションプログラムを実行しない、つまり、実行を禁止する。また、不正なアプリケーションプログラムであることを示す情報をログとして不揮発性記憶部102に格納しておいてもよい。さらに、情報処理装置100の電源が切断され、次に電源が投入された場合に、不正なアプリケーションプログラムであることを示す情報のログを用いて、情報処理装置100はセーフモードで起動してもよい。なお、セーフモードによる起動に関しては、セーフブートとして後述する。
【0114】
また、ハッシュ値の生成において、SHA−1以外の一方向性関数を用いてもよい。例えば、MD5、SHA−256、AES、DESを用いても良い。
(13)セーフブートの動作
セーフブートの動作について、図17に示すフローチャートを用いて、説明する。
情報処理装置100に電源が投入されると(S680)、次に、保護モードのソフトウェアであるセキュアブート部154が起動される(S681)。
【0115】
次に、セキュアブート部154は、メモリ部103に格納されているアプリケーションプログラムが不正なアプリケーションプログラムであることを示す情報がログとして不揮発性記憶部102に格納されているか否かを判定する(S682)。
メモリ部103に格納されているアプリケーションプログラムが不正なアプリケーションプログラムであることを示す情報がログとして存在する場合には(S682でYES)、セーフモードへ移行する(S683)。セーフモードにおいて、セキュアブート部154は、保護データ操作部155に対して、以降の暗復号処理において、保護鍵テーブル136に格納している暗復号鍵を、通常モードの通常鍵テーブル128に複写せずに、保護データ操作部155が暗復号処理を行うように設定する。次に、ステップS684へ制御を移す。
【0116】
不正なアプリケーションプログラムが存在したことを示す情報がログとして存在しない場合には(S682でNO)、セキュアブート部154の改竄検出部154xは、汎用オペレーティングシステム157の検証を行う(S684)。具体的には、セキュアブート部154の改竄検出部154xは、汎用オペレーティングシステム157のハッシュ値を生成し、生成したハッシュ値とあらかじめ安全に格納してある参照ハッシュ値とを比較し、汎用オペレーティングシステム157が改竄されていないか否かを検証する。なお、Trusted Computing Group(TCG)のMobile Phone WG(MPWG)で規定するセキュアブートを用いて検証してもよい。
【0117】
汎用オペレーティングシステム157が改竄されていないと判定された場合には(S685でYES)、セキュアブート部154の改竄検出部154xは、データ暗復号機能部160の検証を行う。具体的には、セキュアブート部154の改竄検出部154xは、データ暗復号機能部160のハッシュ値を生成し、生成したハッシュ値とあらかじめ安全に格納してある参照ハッシュ値とを比較し、データ暗復号機能部160が改竄されていないか否かを検証する。なお、Trusted Computing Group(TCG)のMobile Phone WG(MPWG)で規定するセキュアブートを用いて検証してもよい。
【0118】
データ暗復号機能部160が改竄されていないと判定された場合には(S687でYES)、セーフモードか否かを判定し(S688)、セーフモードでない場合には(S688でNO)、保護データ操作部155は、データ暗復号機能部160の通常鍵テーブル128に、保護鍵テーブル136に格納しているハッシュ値を複写し(S689)、次に、アプリケーションプログラムが実行可能な状態に遷移する(S691)。
【0119】
セーフモードである場合には(S688でYES)、次に、アプリケーションプログラムが実行可能な状態に遷移する(S691)。
汎用オペレーティングシステム157が改竄されていると判定された場合には(S685でNO)、又は、データ暗復号機能部160が改竄されていると判定された場合には(S687でNO)、情報処理装置100の起動を停止する。さらにユーザに警告メッセージを通知してもよい(S690)。
【0120】
なお、ステップS686の検証は、改竄されていないことが検証された汎用オペレーティングシステム157が行ってもよい。
また、ステップS689でハッシュ値を複写する代わりに、あらかじめデータ暗復号機能部160の通常鍵テーブル128がハッシュ値を格納していてもよい。
(14)モード切替Aの動作
通常モードから保護モードへの遷移を行うモード切替Aの動作について、図18に示すフローチャートを用いて説明する。ここで説明する動作は、図9に示すステップS205、図10に示すステップS223、図12に示すステップS255、図15に示すステップS283の詳細である。
【0121】
モード切替部143は、システムLSI101のCPU141の汎用レジスタ147と制御レジスタ148とバッファ領域149とに記憶されているデータと、周辺回路142の制御レジスタ150とバッファ領域151とに記憶されているデータとをメモリ部103に、通常切替用データ162として格納する(S411)。
次に、モード切替部143が、システムLSI101のCPU141と周辺回路142をリセットし、内部保護メモリ部144をアクセス可能に設定する(S412)。
【0122】
次に、保護モードで利用するシステムLSI101のCPU141の汎用レジスタ147と制御レジスタ148とバッファ領域149とに記憶されているデータと、周辺回路142の制御レジスタ150とバッファ領域151とに記憶されているデータそれぞれが暗号化されてメモリ部103に格納されているか否か判定する(S413)。
格納されていると判定された場合には(S413でYES)、モード切替部143は、メモリ部103に格納されている暗号化された保護切替用データ161を復号する(S414)。ここで、保護切替用データ161の復号において用いられる復号アルゴリズムとして、AESアルゴリズム、Triple DESアルゴリズム、RSAアルゴリズム、楕円曲線暗号アルゴリズムを利用してもよい。また、保護切替用データ161を復号する際に、復号鍵として、内部保護メモリ部144に格納されている鍵を用いてもよいし、システムLSI101固有の鍵を用いてもよい。
【0123】
次に、モード切替部143は、復号により生成した保護切替用データをシステムLSI101のCPU141の汎用レジスタ147と制御レジスタ148とバッファ領域149と、周辺回路142の制御レジスタ150とバッファ領域151に設定する(S415)。こうして、モード切替Aが終了する。
暗号化された保護切替用データが格納されていないと判定された場合には(S413でNO)、次に、モード切替Aが終了する。
(15)アプリケーションプログラムのハッシュ値生成と検証Aの動作
アプリケーションプログラムのハッシュ値生成と検証Aの動作について、図19に示すフローチャートを用いて説明する。ここで説明するハッシュ値生成と検証Aの動作は、図9のステップS206の詳細である。
【0124】
動的改竄検出機能部153は、メモリ部103上に展開されているアプリケーションプログラムの実行イメージに対して、SHA−1などの一方向性関数を用いて、ハッシュ値を生成する(S421)。
次に、動的改竄検出機能部153は、生成したハッシュ値と一致する値が、保護鍵テーブル136が保持するハッシュ値に含まれるか否かを判定する(S422)。
【0125】
含まれると判定された場合には(S422でYES)、アプリのハッシュ値生成と検証Aは、正常に終了する。含まれないと判定された場合には(S422でNO)、アプリのハッシュ値生成と検証Aは、異常終了となる。
異常終了の場合には、セキュアオペレーティングシステム152は、アプリケーションプログラムの実行を禁止する。さらに、不正なアプリケーションプログラムであることを示す情報をログとして不揮発性記憶部102に格納しておいてもよい。
【0126】
なお、ハッシュ値の生成において、SHA−1以外の一方向性関数を用いてもよい。例えば、MD5、SHA−256、AES、DESを用いても良い。
(16)サーバ情報の検証の動作
サーバ情報の検証の動作について、図20に示すフローチャートを用いて説明する。なお、ここでは、説明するサーバ情報の検証の動作は、図9のステップS207の詳細である。
【0127】
動的改竄検出機能部153は、指定されたサーバ情報が、許可リスト133に含まれるか否かを判定する(S431)。
指定されたサーバ情報が許可リスト133に含まれているならば(S431でYES)、サーバ情報の検証は、正常終了し、サーバ情報は、正当と認められる。サーバ情報が許可リスト133に含まれていないならば(S431でNO)、サーバ情報の検証は、異常終了し、サーバ情報は、不当と認められる。異常終了時には、セキュアオペレーティングシステム152は、アプリケーションプログラムの実行を禁止する。さらに、不正なアプリケーションプログラムであることを示す情報をログとして不揮発性記憶部102に格納しておいてもよい。
【0128】
なお、許可リスト133に代えて、保護データ操作部155は、不許可リストを記憶しているとしてもよい。不許可リストは、許可されないサーバ装置を識別するサーバ情報を1個以上含んで構成されている。なお、不許可リストは、許可されないサーバ装置を識別するサーバ情報を含んでいなくてもよい。この場合に、動的改竄検出機能部153は、指定されたサーバ情報が、不許可リストに含まれるか否かを判定し、含まれない場合に、サーバ情報の検証は、正常終了し、含まれる場合に、サーバ情報の検証は、異常終了するとしてもよい。
【0129】
また、許可リスト133と不許可リストとを用いて、サーバ情報の検証を行うとしてもよい。
なお、許可リストや不許可リストには、改竄を検出するための電子署名が付いていてもよい。その電子署名の検証は保護モードで行い、検証鍵は端末製造メーカの鍵でもよい。
(17)鍵の生成と格納の動作
鍵の生成と格納の動作について、図21に示すフローチャートを用いて説明する。なお、ここで説明する鍵の生成と格納の動作は、図9のステップS209の詳細である。
【0130】
保護データ操作部155は、アプリケーションプログラムのハッシュ値とサーバ情報と端末固有情報とに基づいて、暗復号鍵を生成する(S441)。
具体的には、次の式により暗復号鍵を生成する。
暗復号鍵=Hash(ハッシュ値+サーバ情報+端末固有情報)
ここで、A=Hash(B)は、Bにハッシュを施してAが得られることを示し、演算子「+」は、結合を示す。つまり、ハッシュ値とサーバ情報と端末固有情報とをこの順序で結合し、その結合結果に対して、ハッシュを施して、暗復号鍵を得る。ここで、ハッシュは、一例として、SHA−1である。
【0131】
また、端末固有情報は、情報処理装置100を一意に識別する識別情報であり、保護データ操作部155内に予め記憶されている。
次に、保護データ操作部155は、生成した暗復号鍵を、保護鍵テーブル136内のハッシュ値及びサーバ情報に対応する鍵情報内に格納する(S442)。これで、鍵生成と格納の処理が終了する。
【0132】
なお、ステップS441の鍵生成で、端末固有情報を用いずに鍵を生成してもよい。
具体的には、次の式により暗復号鍵を生成する。
暗復号鍵=Hash(ハッシュ値+サーバ情報)
これにより、暗復号鍵が端末固有情報に依存しないので、別の情報処理装置へ暗号化データを移動しても、この別の情報処理装置において、端末固有情報に依存しない暗復号鍵を生成でき、生成した暗復号鍵を用いて、暗号化データを復号することができる。
【0133】
なお、ステップS411の鍵生成で、生成した暗復号鍵を、図示していない保護モードでのみアクセス可能な不揮発性記憶部に格納してもよい。これにより、情報処理装置の電源断が行われても、鍵を保持することが可能となる。
また、ステップS411の鍵生成で、アプリケーションプログラムのハッシュ値のみを用いて、暗復号鍵を生成してもよい。これにより、暗復号鍵をアプリケーションプログラムに固有とすることができる。
【0134】
具体的には、次の式により暗復号鍵を生成する。
暗復号鍵=Hash(ハッシュ値)
また、ステップS411の鍵生成で、サーバ情報のみを用いて、暗復号鍵を生成してもよい。これにより、暗復号鍵をサーバ固有とすることができる。
具体的には、次の式により暗復号鍵を生成する。
【0135】
暗復号鍵=Hash(サーバ情報)
また、ステップS411の鍵生成で、端末固有情報のみを用いて、暗復号鍵を生成してもよい。これにより、暗復号鍵を端末固有とすることができる。
具体的には、次の式により暗復号鍵を生成する。
暗復号鍵=Hash(端末固有情報)
また、ステップS411の鍵生成で、図示していないタイマーなどを用いて乱数を生成し、生成した乱数とアプリのハッシュ値とサーバ情報と端末固有情報を用いて、暗復号鍵を生成してもよい。これにより、暗復号鍵に乱数性が加わるため、鍵の値の推測を困難にすることができる。
【0136】
具体的には、次の式により暗復号鍵を生成する。
暗復号鍵=Hash(乱数+ハッシュ値+サーバ情報+端末固有情報)
これによると、一つのアプリケーションプログラムが複数のサーバ装置にデータを送信する場合には、一つのアプリケーションプログラムに対して、複数のサーバに応じて複数の暗号鍵を生成できる。
(18)データ暗復号機能部160を検証する動作
データ暗復号機能部160を検証する動作について、図22に示すフローチャートを用いて説明する。なお、ここで説明するデータ暗復号機能部160を検証する動作は、図9のステップS211、図10のステップS229、図12のステップS260及び図15のステップS289の詳細である。
【0137】
動的改竄検出機能部153は、メモリ部103に展開されているデータ暗復号機能部160の実行イメージに対して、SHA−1などの一方向性関数を用いて、データ暗復号機能部160のハッシュ値を生成する(S451)。
動的改竄検出機能部153は、生成したハッシュ値が、予め記憶しているデータ暗復号機能部160の通常鍵テーブル128の参照ハッシュ値と一致するか否かを判定する(S452)。
【0138】
一致すると判定された場合には(S452でYES)、データ暗復号機能部160の検証は正常に終了し、データ暗復号機能部160は正当と認められる。
一方、一致しないと判定された場合には(S452でNO)、データ暗復号機能部160の検証は異常終了となり、データ暗復号機能部160は不正と認められる。異常終了の場合には、情報処理装置100は動作を停止する。又は、セキュアオペレーティングシステム152は、データの暗復号を停止する。さらに、データ暗復号機能部160が改竄されていることを示す情報をログとして不揮発性記憶装置に格納しておいてもよい。さらに、データ暗復号機能部160の通常鍵テーブル128が鍵を保持するならば、この鍵を削除する。
【0139】
なお、ハッシュ値の生成において、SHA−1以外の一方向性関数を用いてもよい。例えば、MD5、SHA−256、AES、DESを用いても良い。
(19)モード切替Bの動作
保護モードから通常モードへの遷移を行うモード切替Bの動作について、図23に示すフローチャートを用いて説明する。なお、ここで説明するモード切替Bの動作は、図9のステップS213、図10のステップS231、図12のステップS262及び図15のステップS291の詳細である。
【0140】
モード切替部143は、システムLSI101のCPU141の汎用レジスタ147と制御レジスタ148とバッファ領域149とに記憶されているデータと、周辺回路142の制御レジスタ150とバッファ領域151とに記憶されているデータとを格納するために十分な空き領域が、内部保護メモリ部144に存在するか否かを判定する(S461)。
【0141】
十分な空き領域が存在しないと判定された場合には(S461でNO)、モード切替部143は、システムLSI101のCPU141の汎用レジスタ147と制御レジスタ148とバッファ領域149とに記憶されているデータと、周辺回路142の制御レジスタ150とバッファ領域151とに記憶されているデータとを暗号化し、暗号化された保護切替用データ161として、メモリ部103に格納する(S462)。
【0142】
次に、モード切替部143は、システムLSI101の構成要素をリセットし、内部保護メモリ部144をアクセス不可に設定する(S464)。
次に、モード切替部143は、メモリ部103に格納されている通常切替用データ162の内容を、システムLSI101の汎用レジスタ147と制御レジスタ148とバッファ領域149と、周辺回路142の制御レジスタ150とバッファ領域151とに設定する(S465)。これで、モード切替Bの動作が終了する。
【0143】
十分な空き領域が存在すると判定された場合には(S461でYES)、モード切替部143は、システムLSI101のCPU141の汎用レジスタ147と制御レジスタ148とバッファ領域149とに記憶されているデータと、周辺回路142の制御レジスタ150とバッファ領域151とに記憶されているデータとを、保護切替用データ156として、内部保護メモリ部144に格納する(S463)。次に、ステップS464に制御を移す。
(20)アプリケーションプログラムのハッシュ値生成と検証Bの動作
アプリケーションプログラムのハッシュ値生成と検証Bの動作について、図24に示すフローチャートを用いて説明する。なお、ここで説明するハッシュ値生成と検証Bの動作は、図10のステップS224、図11のステップS241、図12のステップS251、図12のステップS256、図13のステップS271及び図15のステップS284の詳細である。
【0144】
保護データ操作部155の改竄検出部155x(又はデータ暗復号機能部160の改竄検出部127x)は、メモリ部103に記憶されているアプリケーションプログラムの実行イメージに対して、SHA−1などの一方向性関数を用いて、ハッシュ値を生成する(S471)。
次に、保護データ操作部155の改竄検出部155x(又はデータ暗復号機能部160の改竄検出部127x)は、生成したハッシュ値が、保護鍵テーブル136(又はデータ暗復号機能部160の通常鍵テーブル128)が保持するハッシュ値に含まれるか否かを判定する(S472)。
【0145】
含まれる場合には(S472でYES)、検証Bは正常に終了し、アプリケーションプログラムは、正当と認められる。
一方、含まれない場合には(S472でNO)、保護データ操作部155(又はデータ暗復号機能部160)は、データ暗復号機能部160が保持する鍵を削除し、検証Bは、異常終了し、アプリケーションプログラムは、不当と認められる。異常終了の場合には、セキュアオペレーティングシステム152は、アプリケーションプログラムの実行を禁止する。また、不正なアプリケーションプログラムであることを示す情報をログとして不揮発性記憶部102に格納しておいてもよい。
【0146】
なお、ハッシュ値の生成において、SHA−1以外の一方向性関数を用いてもよい。例えば、MD5、SHA−256、AES、DESを用いても良い。
(21)他のアプリケーションプログラムの検証の動作
他のアプリケーションプログラムの検証の動作について、図25に示すフローチャートを用いて説明する。なお、ここで説明する他のアプリケーションプログラムの検証の動作は、図10のステップS225、図11のステップS242、図12のステップS252及び図15のステップS285の詳細である。
【0147】
保護データ操作部155の改竄検出部155x(又はデータ暗復号機能部160の改竄検出部127x)は、現在、起動中のアプリケーションプログラムのうち、保護鍵テーブル136(又は通常鍵テーブル128)に保持するハッシュ値に対応しないアプリケーションプログラムが存在するか否かを確認する(S481)。なお、この確認は、ロード機能部129がロードしたアプリケーションプログラムのハッシュ値を保持しており、ロード機能部129が保持しているハッシュ値と、起動中のアプリケーションプログラムに対してハッシュを施して得られたハッシュ値とを比較することにより、行う。
【0148】
他のアプリケーションプログラムが存在しない場合には(S481でNO)、他のアプリケーションプログラムの検証の動作は、終了する。
一方、他のアプリケーションプログラムが存在する場合には(S481でYES)、保護データ操作部155(又はデータ暗復号機能部160)は、保護鍵テーブル136(又は通常鍵テーブル128)に保持する鍵を削除し(S483)、他のアプリケーションプログラムの検証の動作は、終了する。
(22)鍵の確認Aの動作
鍵の確認Aの動作について、図26に示すフローチャートを用いて、説明する。なお、ここで説明する鍵の確認Aの動作は、図10のステップS221、図11のステップS243、図12のステップS253及び図15のステップS281の詳細である。
【0149】
データ暗復号機能部160は、生成したハッシュ値とサーバ情報に対応する鍵を、通常鍵テーブル128が保持しているか否かを確認する(S491)。通常鍵テーブル128が対応する鍵を保持しているならば(S491でYES)、鍵の確認Aの動作は、終了する。
一方、対応する鍵を保持していないならば(S491でNO)、モード切替部143に鍵を取得するように、モード切替要求を行い、保護モードから鍵を取得し、再度、モード切替部143にモード切替要求が行われ、通常モードに切り替わる(S492)。こうして、鍵の確認Aの動作は、終了する。
(23)鍵の確認Bの動作
鍵の確認Bの動作について、図27に示すフローチャートを用いて説明する。なお、ここで説明する鍵の確認Bの動作は、図10のステップS226、図12のステップS257及び図15のステップS286の詳細である。
【0150】
保護データ操作部155は、ハッシュ値とサーバ情報に対応する鍵を、保護鍵テーブル136が保持しているか否かを確認する(S501)。
保護鍵テーブル136が対応する鍵を保持しているならば(S501でYES)、保護データ操作部155は、保護鍵テーブル136から対応する鍵を取得し(S502)、 鍵の確認Bの動作は、正常終了する。
【0151】
一方、保護鍵テーブル136が対応する鍵を保持していないならば(S501でNO)、
鍵の確認Bは、異常終了する。異常終了の場合には、セキュアオペレーティングシステム152は、アプリケーションプログラムの実行を禁止する。また、不正なアプリケーションプログラムであることを示す情報をログとして不揮発性記憶部102に格納してもよい。
【0152】
なお、不正なアプリケーションプログラムであることを示す情報に代えて、不正なアプリケーションプログラムが存在したことを示すフラグを不揮発性記憶部102に格納してもよい。また、不正なアプリケーションプログラムであることを示す情報は、不正な当該アプリケーションプログラムから生成されたハッシュ値であってもよい。
なお、不正なアプリケーションプログラムであることを示す情報のログを用いて、セーフブートを行ってもよい。
(24)鍵の格納の動作
鍵の格納の動作について、図28に示すフローチャートを用いて説明する。なお、ここで説明する鍵の格納の動作は、図10のステップS232及び図15のステップS292の詳細である。
【0153】
データ暗復号機能部160は、ハッシュ値及びサーバ情報に対応付けて、通常鍵テーブル128に鍵を格納する(S511)。こうして、鍵の格納の動作は、終了する。
1.5 まとめ
本実施の形態によると、暗号鍵をアクセスが制限された内部保護メモリ部144に格納し、データ暗復号機能部160が前記暗号鍵を用いて暗号処理を行う1回目のときに、前記アクセスが制限された内部保護メモリ部144から暗号鍵を取得するためにモードを切替える処理を行う。それ以降については、前記アクセスが許可されているメモリ部103に暗号鍵を複製し、通常モードにおいて、メモリ部103に複製された暗号鍵を用いる。このように通常モードを保護モードに切り替えない。
【0154】
これにより、暗号処理の毎に前記モードを切替える処理は不要となり、前記暗号鍵を秘密に管理する場合に要求される暗号化の煩雑な処理を大幅に軽減できる。
一方、保護操作部135の鍵生成部は、所定のアプリケーションプログラムのハッシュ値に基づいて前記暗号鍵を生成し、生成した暗号鍵を内部保護メモリ部144に格納し、前記暗号鍵の生成に用いたハッシュ値をメモリ部103に格納し、データ暗復号機能部160は、メモリ部103に格納された所定のデータを暗号化する処理要求があると、前記処理要求を行ったアプリケーションプログラムのハッシュ値を演算し、前記演算したハッシュ値とメモリ部103に格納されたハッシュ値とが不一致の場合、メモリ部103に複製された暗号鍵を消去する。
【0155】
これにより、前記暗号鍵を生成する際に用いられたハッシュ値に対応するアプリケーションプログラム以外のアプリケーションプログラムが、データ暗復号機能部160によるアクセスが制限されていないメモリ部103に格納されている暗号鍵を使用する危険性がある場合には、メモリ部103に格納されている暗号鍵を消去するので、前記暗号鍵の秘密を確保でき、その結果、データの秘匿性も保証できる。
【0156】
従って、前記暗号鍵を秘密に管理する場合に要求される暗号化の煩雑な処理を大幅に軽減しつつ、前記暗号鍵の秘密を確保してデータの秘匿性を保証できる。
2.実施の形態2
本発明に係る別の実施の形態としての情報処理装置100b(図示していない)について説明する。情報処理装置100bは、情報処理装置100と同様の構成を有している。
【0157】
以下において、情報処理装置100との相違点を中心として説明する。
情報処理装置100bのソフトウェア構成を図29に示す。
情報処理装置100bは、通常モードであるソフトウェアの実行環境120bと、保護モードである安全なソフトウェアの実行環境121とから構成される。情報処理装置100bは、情報処理装置100と同様に、通常モードと保護モードとを切り替えて、各ソフトウェアを実行する。
【0158】
情報処理装置100bは、情報処理装置100とは異なり、仮想マシン自体を制御する中間言語アプリケーションプログラムの制御も行う。中間言語アプリケーションプログラムは、仮想マシンの制御に使われるため、一般的にはアプリケーションプログラムの管理するデータの暗復号は行わないと考えられる。そのため、情報処理装置100bは、暗復号の要求が中間言語アプリケーションプログラムからあった場合は、その要求を常に拒否する。また、暗復号の要求元が中間言語アプリケーションプログラムであると分かった場合は、ハッシュ値の生成と検証を行わない。このため、保持するハッシュ値の数を削減することができる。
【0159】
情報処理装置100bの実行環境121は、実施の形態1の実行環境121と同一である。
これに対して、情報処理装置100bの実行環境120bは、実施の形態1の実行環境120が有する構成要素に加えて、さらに、中間言語マシン205と中間言語アプリケーションプログラム206を含む。上述の通り、情報処理装置100bでは、汎用オペレーティングシステム157上で動作するアプリケーションプログラムがデータの暗復号を行い、中間言語アプリケーションプログラムは、データの暗復号を行わない。
【0160】
また、中間言語マシン205は、中間言語ロード機能部218を備える。
中間言語マシン205は、中間言語アプリケーションプログラム206からの命令によって動作する仮想マシンである。
中間言語ロード機能部218は、中間言語アプリケーションプログラム206をロードする機能を有する。
【0161】
中間言語アプリケーションプログラム206は、仮想マシンを動作させるためのプログラム言語を用いて記述されたアプリケーションプログラムである。
実施の形態2では、実施の形態1のアプリケーションプログラムのハッシュ値生成と検証A(図9のステップS206)及びアプリケーションプログラムのハッシュ値生成と検証B(図10のステップS224、図12のステップS251及びS256、図13のS271)において、中間言語アプリケーションプログラム271による中間言語マシン205からの要求では、異常終了する。
【0162】
また、アプリケーションプログラムのハッシュ値生成と検証A、及び、アプリケーションプログラムのハッシュ値生成と検証Bにおける、アプリケーションプログラムの検証と判断方法は、実施の形態1と同様である。
このように中間言語アプリケーションプログラム206と、アプリケーションプログラム(ネイティブ言語アプリケーションプログラム)158と区別して判断することによって、保持するハッシュ値の数を削減することができる。また、中間言語アプリケーションプログラムの場合は、ハッシュ値の生成と検証が失敗するので、中間言語アプリケーションプログラムからデータの暗復号が要求されてもデータの暗復号が行われることはない。
【0163】
なお、実施の形態2の構成は、中間言語マシン205と中間言語アプリケーションプログラム206以外は、実施の形態1の構成と同一である。
3.実施の形態3
本発明に係る別の実施の形態としての情報処理装置100c(図示していない)について説明する。情報処理装置100cは、情報処理装置100と同様の構成を有している。
【0164】
以下において、情報処理装置100との相違点を中心として説明する。
情報処理装置100cのソフトウェア構成を図30に示す。
情報処理装置100cは、通常モードであるソフトウェアの実行環境120と、保護モードである安全なソフトウェアの実行環境121cとから構成される。情報処理装置100cは、情報処理装置100と同様に、通常モードと保護モードとを切り替えて、各ソフトウェアを実行する。
【0165】
情報処理装置100cは、データ暗復号を行うアプリを追加することができる情報処理装置である。情報処理装置100cの実行環境121cは、実施の形態1の実行環境121と同様の構成を有しており、保護データ操作部155が、さらに、保護鍵テーブル更新部237を備える。情報処理装置100cは、保護鍵テーブル136で管理するアプリケーションプログラムを新たに追加する。情報処理装置100cの実行環境120は、実施の形態1の実行環境120と同一である。
【0166】
次に、保護鍵テーブル136で管理するアプリケーションプログラムを追加する方法について、図31〜図34を用いて、説明する。
(1)アプリケーションプログラムの登録の手順
アプリケーションプログラムの登録の手順について、図31及び図32を用いて、説明する。
【0167】
実施の形態3のアプリケーションプログラムの登録の手順は、実施の形態1の図9に示す手順と類似している。以下において、その相違点を中心として、説明する。
実施の形態1のアプリケーションプログラムの登録との相違は2つある。
1つは、実施の形態1のアプリケーションプログラムのハッシュ値生成と検証A(図9のステップS206)に代えて、実施の形態3のアプリケーションプログラムの登録では、図31に示すように、テーブル更新要求(S605)とアプリケーションプログラムの検証と鍵テーブル更新(S606)と通知(S607)を行うことである。
【0168】
もう1つは、実施の形態3のアプリケーションプログラムの登録では、図32に示すように、モード切替B(S213)の後に、データ暗復号機能部160が、鍵テーブル更新(S615)を行うことである。
その他の点については、実施の形態1の図9に示す動作と同じである。
(2)アプリケーションプログラムの検証と鍵テーブルの更新の動作
アプリケーションプログラムの検証と鍵テーブルの更新の動作について、図33に示すフローチャートを用いて説明する。なお、ここで説明するアプリケーションプログラムの検証と鍵テーブルの更新の動作は、図31のステップS606の詳細である。
【0169】
保護鍵テーブル更新部237は、アプリケーションプログラムのハッシュ値を生成する(S621)。
次に、保護鍵テーブル更新部237は、アプリケーションプログラムに対応する電子署名の検証を行う(S622)。電子署名の検証で利用する検証鍵は、保護鍵テーブル更新部237が保持し、情報処理装置100cの製造者から提供されている鍵である。また、電子署名の検証に用いるアルゴリズムは、RSAや楕円曲線暗号を用いたデジタル署名の検証アルゴリズムである。
【0170】
検証が正常終了した場合には(S623でYES)、保護鍵テーブル更新部237は、ステップS621で生成したハッシュ値が、保護鍵テーブル136に格納されているハッシュ値であるか否かを判定する(S624)。
生成したハッシュ値が、保護鍵テーブル136に格納されているハッシュ値である場合には(S624でYES)、アプリケーションプログラムの検証と鍵テーブルの更新を終了する。
【0171】
生成したハッシュ値が、保護鍵テーブル136に格納されているハッシュ値でない場合(S624でNO)、保護鍵テーブル136に新たなエントリとしての鍵情報を作成し、新たな鍵情報のアプリケーションプログラムの参照ハッシュ値のフィールドに、ステップS621で生成したハッシュ値を格納し(S626)、アプリケーションプログラムの検証と鍵テーブルの更新を終了する。
【0172】
さらに、保護鍵テーブル136に新たなエントリとして鍵情報を追加し、生成したハッシュ値をこの鍵情報内に格納した場合には、ステップS210の通知と、ステップS212のモード切替要求と、ステップS213のモード切替Bとでは、生成したハッシュ値も通知する。
(3)通常鍵テーブル128の更新の動作
通常鍵テーブル128の更新の動作について、図34に示すフローチャートを用いて説明する。なお、ここで説明する通常鍵テーブル128の更新の動作は、図32のステップS615の詳細である。
【0173】
データ暗復号機能部160は、通常鍵テーブル128に新たなエントリとしての鍵情報を追加して、新たな鍵情報内に、保護モードから通知されたハッシュ値を格納する(S631)。これで、通常鍵テーブル128の更新の動作は、終了する。
このように、通常鍵テーブル128で管理するアプリケーションプログラムを追加することによって、新規に追加されたアプリケーションプログラムのデータを保護することができる。
【0174】
なお、ステップ622のアプリケーションプログラムの検証で利用する鍵は、情報処理装置100cの製造者から提供されている鍵以外の鍵を利用してもよい。情報処理装置100cの製造者から提供されている鍵以外の鍵としては、例えば、サーバを運営するサービス会社から提供されている鍵であってもよいし、コンテンツを提供するコンテンツ会社から提供される鍵であってもよい。
4.実施の形態4
本発明に係る別の実施の形態としての情報処理装置100d(図示していない)について説明する。情報処理装置100dは、情報処理装置100と同様の構成を有している。
【0175】
以下において、情報処理装置100との相違点を中心として説明する。
情報処理装置100dは、データの暗復号に際に用いる鍵の利用回数を制御する。以下、図35と図36を用いて、情報処理装置100dにより、鍵の利用回数を制御する技術について説明する。
(1)通常鍵テーブル128dのデータ構造
情報処理装置100dの保護データ操作部155は、情報処理装置100の保護鍵テーブル136に代えて、保護鍵テーブル136d(図示してない)を記憶している。また、データ暗復号機能部160は、情報処理装置100の通常鍵テーブル128に代えて、図35に一例として示す通常鍵テーブル128dを記憶している。
【0176】
通常鍵テーブル128dは、保護鍵テーブル136dと同一のデータ構造を有している。ここでは、通常鍵テーブル128dのデータ構造について説明し、保護鍵テーブル136dのデータ構造の説明を省略する。
通常鍵テーブル128dは、アプリケーションプログラムが利用するデータを暗号化又は復号する際に用いる鍵を一時的に格納するテーブルであり、図35に一例として示すように、1個以上の鍵情報を記憶するための領域を備えている。各鍵情報は、アプリケーションプログラムの参照ハッシュ値及び1個以上のサーバ鍵情報から構成され、各サーバ鍵情報は、サーバ情報、鍵、最大使用回数及び現在の使用回数から構成されている。アプリケーションプログラムの参照ハッシュ値及びサーバ情報については、上述した通りであるので、説明を省略する。
【0177】
最大使用回数は、対応するアプリケーションプログラムが対応する鍵を使用することができる最大の回数であり、現在の使用回数は、対応するアプリケーションプログラムが対応する鍵を今までに実際に使用した回数である。
通常鍵テーブル128dが最大使用回数と現在の使用回数を含む点において、情報処理装置100の鍵テーブルと異なっている。
(2)鍵の確認Aの動作
情報処理装置100dによる鍵の確認Aの動作について、図36に示すフローチャートを用いて説明する。情報処理装置100dのデータ暗復号機能部160は、情報処理装置100の鍵の確認Aの動作(図26に示す)に代えて、以下に示す手順に従って、鍵の確認Aを行う。
【0178】
なお、ここで説明する鍵の確認Aの動作は、図10のステップS221、図11のステップS243、図12のステップS253及び図15のステップS281の詳細である。
データ暗復号機能部160は、生成したハッシュ値及びサーバ情報に対応する鍵を、通常鍵テーブル128dが保持しているか否かの判定を行う(S641)。
生成したハッシュ値及びサーバ情報に対応する鍵を、通常鍵テーブル128dが保持しているならば(S641でYES)、データ暗復号機能部160は、通常鍵テーブル128dから、生成したハッシュ値及びサーバ情報に対応する最大使用回数及び現在の使用回数を読み出し、読み出した現在の使用回数が、読み出した最大使用回数を越えているか否かを判定する(S642)。
【0179】
現在の使用回数が最大使用回数を超えていない場合(S642でNO)、データ暗復号機能部160は、生成したハッシュ値及びサーバ情報に対応する現在の使用回数に「1」を加算し、「1」が加算された現在の使用回数を通常鍵テーブル128dにおいて上書きし(S643)、鍵の確認Aの動作を終了する。
現在の使用回数が最大使用回数を超えている場合(S642でYES)、データ暗復号機能部160は、モード切替部143に対して、モード切替Aをし、新たな鍵及び新たな最大使用回数を取得するように要求し、保護モードにおいて新たな鍵及び最大使用回数が生成され、新たな鍵及び最大使用回数が通常モードに対して出力され、再度、通常モードに切り替えられた後に、データ暗復号機能部160は、新たな鍵及び新たな最大使用回数を取得する(S644)。なお、新たな鍵は、実行環境121において、図示していないタイマーなどを用いて乱数を生成し、生成した乱数、アプリケーションプログラムのハッシュ値、サーバ情報及び端末固有情報を用いて、生成したものであってもよい。
【0180】
次に、データ暗復号機能部160は、暗号化データを更新前の鍵を用いて復号し、得られたデータを保護モードから通知された新たな鍵を用いて再暗号化する(S645)。
次に、データ暗復号機能部160は、通常鍵テーブル128dにおいて、生成したハッシュ値及びサーバ情報に対応する更新前の鍵を削除し、生成したハッシュ値及びサーバ情報に対応する現在の使用回数に「0」を設定し、保護モードから通知された最大使用回数を、生成したハッシュ値及びサーバ情報に対応する最大使用回数のフィールドに設定し、保護モードから通知された新たな鍵を、生成したハッシュ値及びサーバ情報に対応する鍵のフィールドに設定し(S646)、鍵の確認Aの動作を終了する。
【0181】
生成したハッシュ値及びサーバ情報に対応する鍵を、通常鍵テーブル128dが保持していないならば(S641でNO)、データ暗復号機能部160は、モード切替部143に対して、モード切替Aを要求し(S647)、鍵の確認Aの動作を終了する。
(3)以上説明したように、情報処理装置100dによると、データの暗復号に利用する鍵の利用回数を制限することができ、最大利用回数を超えて、同じ暗復号鍵を使い続けることがないので、暗復号鍵の漏洩の可能性を低減できる。また、最大利用回数を超えた場合に、鍵を新たに更新するので、攻撃者が予想される暗復号鍵のパターンを全て生成して一つ一つ試して攻撃する総当たり攻撃からの保護を強化できる。
5.実施の形態5
本発明に係る別の実施の形態としての情報処理装置100eについて説明する。情報処理装置100eは、情報処理装置100と同様の構成を有している。以下において、情報処理装置100との相違点を中心として説明する。
【0182】
情報処理装置100eは、データの暗復号の際に用いる鍵の利用時間を制御する。以下、情報処理装置100eにより、データの暗復号に利用する鍵の利用時間を制御する技術について、図37〜図39を用いて説明する。
(1)情報処理装置100eの構成
情報処理装置100eは、図37に示すように、情報処理装置100と類似の構成を有している。
【0183】
情報処理装置100eは、システムLSI101eがクロック265を新たに備える点において、情報処理装置100と相違している。また、情報処理装置100eの保護データ操作部155は、情報処理装置100の保護鍵テーブル136に代えて、保護鍵テーブル136e(図示してない)を記憶している。また、データ暗復号機能部160は、情報処理装置100の通常鍵テーブル128に代えて、図38に一例として示す通常鍵テーブル128eを記憶している。その他の構成については、情報処理装置100と同一である。
(1)クロック265
クロック265は、時刻を計測する計時部であり、現時点の時刻を示す時間情報を保持している。クロック265は、内部バス145を介して、CPU141、周辺回路142及びモード切替部143と接続されている。さらに、クロック265は、モード切替部143と専用線266を介して接続されている。
【0184】
CPU141は、モード切替部143によって、クロック265に保持する時間情報へのアクセスが制限されている。
モード切替部143は、システムLSI101eが保護モードの場合には、クロック265に格納されている時間情報に対して、読み込み及び変更が可能となるように、専用線266を介して制御する。また、モード切替部143は、システムLSI101eが通常モードの場合には、クロック265に格納されている時間情報に対して、読み込みのみ可能となるように、専用線266を介して制御する。
(2)鍵テーブルのデータ構造
通常鍵テーブル128eは、保護鍵テーブル136eと同一のデータ構造を有している。ここでは、通常鍵テーブル128eのデータ構造について説明し、保護鍵テーブル136eのデータ構造の説明を省略する。
【0185】
通常鍵テーブル128eは、アプリケーションプログラムが利用するデータを暗号化又は復号する際に用いる鍵を一時的に格納するテーブルであり、図38に一例として示すように、1個以上の鍵情報を記憶するための領域を備えている。各鍵情報は、アプリケーションプログラムの参照ハッシュ値及び1個以上のサーバ鍵情報から構成され、各サーバ鍵情報は、サーバ情報、鍵及び最終日時から構成されている。アプリケーションプログラムの参照ハッシュ値及びサーバ情報については、上述した通りであるので、説明を省略する。
【0186】
最終日時は、対応するアプリケーションプログラムが対応する鍵を使用することができる最後の日時であり、一例として、年月日時分秒から構成されている。
通常鍵テーブル128eが最終日時を含む点において、情報処理装置100の鍵テーブルと異なっている。
(3)鍵の確認Aの動作
情報処理装置100eによる鍵の確認Aの動作について、図39に示すフローチャートを用いて説明する。情報処理装置100eのデータ暗復号機能部160は、情報処理装置100の鍵の確認Aの動作(図26に示す)に代えて、以下に示す手順に従って、鍵の確認Aを行う。
【0187】
なお、ここで説明する鍵の確認Aの動作は、図10のステップS221、図11のステップS243、図12のステップS253及び図15のステップS281の詳細である。
データ暗復号機能部160は、生成したハッシュ値及びサーバ情報に対応する鍵を、通常鍵テーブル128eが保持しているか否かの判定を行う(S651)。
生成したハッシュ値及びサーバ情報に対応する鍵を、通常鍵テーブル128eが保持しているならば(S651でYES)、データ暗復号機能部160は、クロック265から時間情報を取得し、通常鍵テーブル128eから生成したハッシュ値及びサーバ情報に対応する最終日時を読み出し、取得した時間情報により示される現在の日時が、取得した最終日時を越えているか否かを判定する(S652)。
【0188】
現在の日時が最終日時を超えていない場合(S652でNO)、鍵の確認Aの処理を終了する。
現在の日時が最終日時を超えている場合(S652でYES)、データ暗復号機能部160は、モード切替部143に対して、モード切替Aをし、新たな鍵及び新たな最終日時を取得するように要求し、保護モードにおいて新たな鍵及び最終日時が生成され、新たな鍵及び最終日時が通常モードに対して出力され、再度、通常モードに切り替えられた後に、データ暗復号機能部160は、新たな鍵及び新たな最終日時を取得する(S653)。なお、新たな鍵は、クロック265や図示していないタイマーなどを用いて乱数を生成し、生成した乱数、アプリケーションプログラムハッシュ値、サーバ情報及び端末固有情報を用いて、生成したものであってもよい。
【0189】
次に、データ暗復号機能部160は、暗号化データを更新前の鍵を用いて復号し、得られたデータを保護モードから通知された新たな鍵を用いて再暗号化する(S654)。
次に、データ暗復号機能部160は、通常鍵テーブル128eにおいて、生成したハッシュ値及びサーバ情報に対応する鍵を削除する。また、通常鍵テーブル128eにおいて、保護モードから通知された最終日時を、生成したハッシュ値及びサーバ情報に対応する最終日時のフィールドに設定する。さらに、通常鍵テーブル128eにおいて、保護モードから通知された新たな鍵を、生成したハッシュ値とサーバ情報に対応する鍵のフィールドに設定する(S655)。次に、鍵の確認Aの処理を終了する。
【0190】
生成したハッシュ値及びサーバ情報に対応する鍵を、通常鍵テーブル128eが保持していないならば(S651でNO)、データ暗復号機能部160は、モード切替部143にモード切替Aの要求を行う(S656)。次に、鍵の確認Aの処理を終了する。
(3)これにより、データの暗復号に利用する鍵の利用日時を制限することができ、最終日時を超えて、同じ暗復号鍵を使い続けることがないので、暗復号鍵の漏洩の可能性を低減できる。また、最終日時を超えた場合に、鍵を新たに更新するので、攻撃者が予想される暗復号鍵のパターンを全て生成して一つ一つ試して攻撃する総当たり攻撃からの保護を強化できる。
6.実施の形態6
本発明に係る別の実施の形態としての情報処理装置100fについて説明する。情報処理装置100fは、情報処理装置100と同様の構成を有している。以下において、情報処理装置100との相違点を中心として説明する。
【0191】
情報処理装置100fは、不正なアプリケーションプログラムを検知した場合に、暗号化データを復号して生成した平文データを削除する。
以下、図40〜図43を用いて、不正なアプリケーションプログラムを検知した場合に、暗号化データを復号して生成した平文データを削除する技術について説明する。
(1)情報処理装置100fのソフトウェア構成
情報処理装置100fのソフトウェア構成を図40に示す。
【0192】
情報処理装置100fは、通常モードであるソフトウェアの実行環境120fと、保護モードである安全なソフトウェアの実行環境121とから構成される。情報処理装置100fは、通常モードと保護モードとを切り替えて、各ソフトウェアを実行する。
実行環境120fは、情報処理装置100の実行環境120と類似しており、情報処理装置100のデータ暗復号機能部160に代えて、データ暗復号機能部160fを含んでいる。データ暗復号機能部160fは、情報処理装置100のデータ暗復号機能部160と類似しており、データ暗復号機能部160が有する構成要素に加えて、さらに、復号データ格納位置テーブル297を有している。
【0193】
情報処理装置100fの実行環境120は、情報処理装置100の実行環境120と同一である。
このように、情報処理装置100fの実行環境120fは、データ暗復号機能部160fがさらに復号データ格納位置テーブル297を備える点において、情報処理装置100の実行環境120と相違している。
(2)復号データ格納位置テーブル297のデータ構造
復号データ格納位置テーブル297は、図41に示すように、複数の復号情報を含んで構成されているデータテーブルである。各復号情報は、情報処理装置100f上で動作するアプリケーションプログラムにおいて暗号化又は復号の対象となるデータに対応している。各復号情報は、データID、暗号化データ格納ファイル名、提供アプリケーションプログラムのハッシュ値、復号データ格納アドレス及び復号データサイズから構成されている。
【0194】
データIDは、暗号化されたデータを一意に判別する識別子である。
暗号化データ格納ファイル名は、暗号化されたデータが格納されているファイル名である。
提供アプリケーションプログラムのハッシュ値は、暗号化データを復号して平文データとして提供したアプリケーションプログラムのハッシュ値であり、当該アプリケーションプログラムを識別する識別子である。
【0195】
復号データ格納アドレスは、暗号化データを復号して得られた平文データを格納しているメモリの先頭アドレスである。ここには、暗号化データを復号して得られた平文データをアプリケーションプログラムに提供する際にそのアドレスが格納される。
復号データサイズは、暗号化データを復号して得られた平文データのサイズである。ここには、暗号化データを復号してアプリケーションプログラムに提供する際にサイズが格納される。
(3)アプリケーションプログラムのハッシュ値生成と検証Bの動作
アプリケーションプログラムのハッシュ値生成と検証Bの動作について、図42に示すフローチャートを用いて説明する。
【0196】
情報処理装置100fのデータ暗復号機能部160f(又は保護データ操作部155)は、情報処理装置100のアプリケーションプログラムのハッシュ値生成と検証Bの動作(図24に示す)に代えて、以下に示す手順に従って、アプリケーションプログラムのハッシュ値生成と検証Bを行う。なお、ここで説明するハッシュ値生成と検証Bの動作は、図10のステップS224、図11のステップS241、図12のステップS251、図12のステップS256、図13のステップS271及び図15のステップS284の詳細である。
【0197】
データ暗復号機能部160fの改竄検出部127x(又は保護データ操作部155の改竄検出部155x)は、メモリ部103上に記憶され展開されているアプリケーションプログラムの実行イメージに対して、SHA−1などの一方向性関数を用いて、ハッシュ値を生成する(S661)。ここで、ハッシュ値の生成において、SHA−1以外の一方向性関数を用いてもよい。例えば、MD5、SHA−256、AES、DESを用いても良い。
【0198】
次に、データ暗復号機能部160fの改竄検出部127x(又は保護データ操作部155の改竄検出部155x)は、生成したハッシュ値が、通常鍵テーブル128(又は保護鍵テーブル136)が保持するハッシュ値に含まれるか否かを判定する(S662)。
含まれると判定された場合には(S662でYES)、アプリケーションプログラムのハッシュ値生成と検証Bの処理は、正常に終了する。
【0199】
含まれないと判定された場合には(S662でNO)、データ暗復号機能部160f(又は保護データ操作部155)は、通常鍵テーブル128(又は保護鍵テーブル136)が保持する鍵を削除し(S664)、次に、復号データ格納位置テーブル297から、復号されたデータを格納するアドレスとサイズを読み出し、読み出したアドレスとサイズに基づいて、復号されたデータを削除する(S665)。削除は、特定の値を上書きすることにより行ってもよいし、乱数を発生させ、その乱数を上書きすることにより行ってもよい。こうして、アプリケーションプログラムのハッシュ値生成と検証Bの処理は、異常終了する。異常終了の場合には、アプリケーションプログラムの実行を禁止する。また、不正なアプリケーションプログラムであることを示す情報をログとして不揮発性記憶部102に格納しておいてもよい。
(4)以上説明したように、復号鍵だけではなく、暗復号鍵を用いて過去に復号された平文データをも消去するので、将来生成される平文データのみならず、過去に生成された平文データをも不正なアプリケーションプログラムから保護できる。
(5)他のアプリケーションプログラムの検証の動作
他のアプリケーションプログラムの検証の動作について、図43に示すフローチャートを用いて、説明する。
【0200】
情報処理装置100fのデータ暗復号機能部160f(又は保護データ操作部155)は、情報処理装置100の他のアプリケーションプログラムの検証の動作(図25に示す)に代えて、以下に示す手順に従って、他のアプリケーションプログラムの検証の動作を行う。なお、ここで説明する他のアプリケーションプログラムの検証の動作は、図10のステップS225、図11のステップS242、図12のステップS252及び図15のステップS285の詳細である。
【0201】
データ暗復号機能部160fの改竄検出部127x(又は保護データ操作部155の改竄検出部155x)は、現在、起動中のアプリケーションプログラムのうち、通常鍵テーブル128f(又は保護鍵テーブル136f)に保持するハッシュ値に対応しないアプリケーションプログラムが存在するか否かを確認する(S671)。なお、この確認は、ロード機能部129がロードしたアプリケーションプログラムのハッシュ値を保持しており、その値を確認してもよい。
【0202】
対応しないアプリケーションプログラムが存在しない場合には(S671でNO)、他のアプリケーションプログラムの検証の動作は、正常に終了する。
対応しないアプリケーションプログラムが存在する場合には(S671でYES)、データ暗復号機能部160f(又は保護データ操作部155)は、通常鍵テーブル128f(又は保護鍵テーブル136f)が保持する鍵を削除し(S672)、復号データ格納位置テーブル297から、復号されたデータを格納するアドレス及びサイズを探して読み出し、読み出したアドレス及びサイズに基づいて、復号されたデータを削除する(S673)。これで、他のアプリケーションプログラムの確認の動作が終了する。なお、復元されたデータに対して特定の値を上書きすることにより、削除を実現してもよい。また、乱数を発生させ、復元されたデータに対してこの乱数を上書きすることにより削除を実現してもよい。
(6)なお、情報処理装置100fの動作のうち、アプリケーションプログラムのハッシュ値生成及び検証B、並びに他のアプリケーションプログラムの検証については、上述した通りであり、その他の動作については、情報処理装置100と同一である。
【0203】
以上説明したように、情報処理装置100fにおいては、暗号鍵をアクセスが制限された内部保護メモリ部144に格納し、データ暗復号機能部160fが前記暗号鍵を用いて暗号処理を行う例えば1回目のときに、前記アクセスが制限された内部保護メモリ部144から暗号鍵を取得するために、通常モードから保護モードに切り替えられる。それ以降は前記アクセスが許可されているメモリ部103に暗号鍵を複製し、再度、保護モードに切替える処理は不要である。これにより、暗号処理の毎にモードを切替える処理は不要となるので、前記暗号鍵を秘密に管理する場合に要求される暗号化の煩雑な処理を大幅に軽減できる。
【0204】
一方、保護操作部135の鍵生成部は、所定のアプリケーションのハッシュ値に基づいて前記暗号鍵を生成し、生成した暗号鍵を内部保護メモリ144に格納し、前記暗号鍵の生成に用いたハッシュ値をメモリ部103に格納し、データ暗復号機能部160fは、メモリ部103に格納された所定のデータを暗号化する処理要求があると、前記処理要求を行ったアプリケーションのハッシュ値を演算し、前記演算したハッシュ値とメモリ部103に格納されたハッシュ値とが不一致の場合、メモリ部103に複製された暗号鍵を消去する。これにより、前記暗号鍵を生成する際に用いられたハッシュ値に対応するアプリケーション以外のアプリケーションが、データ暗復号機能部160fによるアクセスが制限されていないメモリ部103に格納されている暗号鍵を使用する危険性がある場合には、メモリ部103に格納されている暗号鍵を消去するので、前記暗号鍵の秘密を確保でき、その結果、データの秘匿性も保証できる。
【0205】
従って、前記暗号鍵を秘密に管理する場合に要求される暗号化の煩雑な処理を大幅に軽減しつつ、前記暗号鍵の秘密を確保してデータの秘匿性を保証できる。
7.その他
本発明の第1の態様に関する情報処理装置は、所定のデータを格納する第1メモリと、暗号鍵を格納する第2メモリと、所定のアプリケーションを格納する格納部と、前記所定のアプリケーションのハッシュ値に基づいて前記暗号鍵を生成し前記第2メモリに格納し、前記暗号鍵の生成に用いたハッシュ値を前記第1メモリに格納する鍵生成部と、前記第1メモリへのアクセスは許可され且つ前記第2メモリへのアクセスが禁止され、前記第1メモリから前記所定のデータを読み出して前記所定のデータを暗号化する暗号部と前記所定のアプリケーションによる前記第1メモリへのアクセスを許可し且つ前記第2メモリへのアクセスを禁止する第1モードを設定して前記所定のアプリケーションを起動し、前記第1メモリに格納された所定のデータを暗号化する処理要求を前記所定のアプリケーションから受け且つ前記第1メモリに前記暗号鍵が格納されていない場合、前記鍵生成部による前記第1メモリ及び前記第2メモリへのアクセスを許可する第2モードに切り替え、前記鍵生成部に対して前記第2メモリに格納された暗号鍵を前記第1メモリに複製させ、前記第1モードに切り替え、前記暗号部に前記第1メモリに複製された暗号鍵を用いて前記所定のデータを暗号化させる制御部と、を具備し、前記暗号部は、前記処理要求に応じて、前記処理要求を行ったアプリケーションのハッシュ値を演算し、前記演算したハッシュ値と前記第1メモリに格納されたハッシュ値とが不一致の場合、前記第1メモリに複製された暗号鍵を消去するものである。
【0206】
本態様によると、前記暗号鍵を秘密に管理する場合に要求される暗号化の煩雑な処理を大幅に軽減しつつ、前記暗号鍵の秘密を確保してデータの秘匿性を保証できる。
データの秘匿性を保護するには、データを暗号化する際の暗号鍵を秘密に管理する必要がある。前記暗号鍵を秘密に管理するには前記暗号鍵を格納するメモリへのアクセスを制限する必要がある。一方、前記暗号鍵を格納するメモリへのアクセスを制限すると、前記暗号鍵を用いた暗号処理が煩雑となる。即ち、暗号処理の毎に前記アクセスが制限されたメモリから暗号鍵を取得するための処理を行う必要がある。
【0207】
そこで、この態様によると、情報処理装置は、暗号鍵をアクセスが制限された第2メモリに格納し、暗号部が前記暗号鍵を用いて暗号処理を行う例えば1回目のときに、前記アクセスが制限された第2メモリから暗号鍵を取得するためにモードを切替える処理を行う
が、それ以降は前記アクセスが許可されている第1メモリに暗号鍵を複製し、前記モードを切替える処理を不要とした。これにより、暗号処理の毎に前記モードを切替える処理は不要となるので、前記暗号鍵を秘密に管理する場合に要求される暗号化の煩雑な処理を大幅に軽減できる。
【0208】
さらに、この構成によると、情報処理装置の鍵生成部は、所定のアプリケーションのハッシュ値に基づいて前記暗号鍵を生成し前記第2メモリに格納し、前記暗号鍵の生成に用いたハッシュ値を前記第1メモリに格納し、前記暗号部は、前記第1メモリに格納された所定のデータを暗号化する処理要求があると、前記処理要求を行ったアプリケーションのハッシュ値を演算し、前記演算したハッシュ値と前記第1メモリに格納されたハッシュ値とが不一致の場合、前記第1メモリに複製された暗号鍵を消去する。これにより、前記暗号鍵を生成する際に用いられたハッシュ値に対応するアプリケーション以外のアプリケーションが、前記暗号部によるアクセスが制限されていない第1メモリに格納されている暗号鍵を使用する危険性がある場合には、第1メモリに格納されている暗号鍵を消去するので、前記暗号鍵の秘密を確保でき、その結果、データの秘匿性も保証できる。
【0209】
従って、前記暗号鍵を秘密に管理する場合に要求される暗号化の煩雑な処理を大幅に軽減しつつ、前記暗号鍵の秘密を確保してデータの秘匿性を保証できる。
また、本発明の第2の態様に関する情報処理装置は、さらに、前記制御部は、前記処理要求を前記所定のアプリケーションから受けた場合であって、前記第1メモリに前記暗号鍵が格納されている場合、前記第2モードに切り替えることなく、前記暗号部に前記第1メモリに複製された暗号鍵を用いて前記所定のデータを暗号化させるものである。
【0210】
この態様によると、前記処理要求を前記所定のアプリケーションから受けた場合であって、前記第1メモリに前記暗号鍵が格納されている場合、前記第2モードに切り替えることなく、前記暗号部に前記第1メモリに複製された暗号鍵を用いて前記所定のデータを暗号化する。これによると、前記暗号鍵はアクセスが制限された第2メモリに格納され、前記暗号部が前記暗号鍵を用いて暗号処理を行う例えば1回目のときに、前記アクセスが制限された第2メモリから暗号鍵を取得するためにモードを切替える処理を行うが、それ以降は前記アクセスが許可されている第1メモリに暗号鍵を複製し、この複製した暗号鍵を用いて暗号化する。そのため、暗号処理の毎に前記モードを切替える処理は不要となるので、前記暗号鍵を秘密に管理する場合に要求される暗号化の煩雑な処理を大幅に軽減できる。
【0211】
また、本発明の第3の態様に関する情報処理装置において、前記所定のアプリケーションは、外部装置にデータを送信すべきデータを前記第1メモリへ格納するアプリケーションであり、前記鍵生成部は、前記外部装置の識別情報及び前記所定のアプリケーションのハッシュ値に基づいて前記暗号鍵を生成し、前記制御部は、前記外部装置へ送信すべきデータを、前記暗号鍵で暗号化し、第3メモリに格納するものである。
【0212】
この態様によると、前記所定のアプリケーションは、外部装置にデータを送信すべきデータを前記第1メモリへ格納するアプリケーションである場合、前記鍵生成部は、前記外部装置の識別情報及び前記所定のアプリケーションのハッシュ値に基づいて前記暗号鍵を生成する。これによると、一つのアプリケーションが複数の外部装置にデータを送信すべきデータを保存する場合には、一つのアプリケーションに対して、複数の外部端末に応じて複数の暗号鍵を生成できる。
【0213】
また、本発明の第4の態様に関する情報処理装置は、さらに、前記鍵生成部は、前記第1メモリから前記所定のデータを読み出して、前記第2メモリから前記暗号鍵を読み出して、前記所定のデータを暗号化する第2暗号部を有し、前記制御部は、前記第1メモリに
複製された暗号鍵が前記第1メモリから消去された後、前記第1モードにおいて前記処理要求を前記所定のアプリケーションから受けた場合、前記鍵生成部による前記第1メモリ及び前記第2メモリへのアクセスを許可する第2モードに切り替え、前記第2暗号部に対して第2メモリに格納された前記暗号鍵を用いて前記第1メモリに格納された前記所定のデータを暗号化させるものである。
【0214】
この態様によると、前記鍵生成部は、前記第1メモリから前記所定のデータを読み出して、前記第2メモリから前記暗号鍵を読み出して、前記所定のデータを暗号化する第2暗号部を有する。また、前記制御部は、前記第1メモリに複製された暗号鍵が前記第1メモリから消去された後、前記処理要求を前記所定のアプリケーションから受けた場合、前記鍵生成部による前記第1メモリ及び前記第2メモリへのアクセスを許可する第2モードに切り替え、前記第2暗号部に対して第2メモリに格納された前記暗号鍵を用いて前記第1メモリに格納された前記所定のデータを暗号化させる。これにより、前記第1メモリに複製された暗号鍵が前記第1メモリから消去された後は、前記第1モードの状態で前記暗号部に暗号処理を行なわせるのではなく、前記第1モードから前記第2モードに切替えて前記暗号鍵が格納された第2メモリへのアクセスが可能な前記鍵生成部に暗号化処理を行わせる。そのため、前記第1メモリに複製された暗号鍵が前記第1メモリから消去された後、モードの切替え処理は入るものの、前記暗号鍵の秘密を確保でき、その結果、データの秘匿性は保証できる。
【0215】
また、本発明の第5の態様に関する情報処理装置は、さらに、アプリケーションが起動中か否かを監視する監視部を設け、前記監視部が、前記第1メモリに複製された暗号鍵が消去された後、前記処理要求を行ったアプリケーションであって前記第1メモリに格納されたハッシュ値と不一致のハッシュ値に対応するアプリケーションの起動が終了したと判断した場合、前記制御部は、前記第1モードにおいて前記処理要求を前記所定のアプリケーションから受け且つ前記第1メモリに前記暗号鍵が格納されていない場合、前記鍵生成部による前記第1メモリ及び前記第2メモリへのアクセスを許可する第2モードに切り替え、前記第1暗号部に対して前記第2メモリに格納された暗号鍵を前記第1メモリに複製させるものである。
【0216】
この態様によると、前記第1メモリに複製された暗号鍵が消去された後、前記処理要求を行ったアプリケーションであって前記第1メモリに格納されたハッシュ値と不一致のハッシュ値に対応するアプリケーションの起動が終了したと判断した場合、前記第2メモリに格納された暗号鍵を前記第1メモリに再度、複製させる。これにより、前記暗号鍵を生成する際に用いられたハッシュ値に対応する所定のアプリケーション以外のアプリケーションが、起動を終了し、前記暗号鍵を使用する危険性がなくなった場合に、前記暗号部によるアクセスが許可されている第1メモリに前記暗号鍵を再度複製する。そのため、前記所定のアプリケーション以外のアプリケーションが前記暗号鍵を使用する危険性がなくなった以降は、再度、前記暗号鍵を秘密に管理する場合に要求される暗号化の煩雑な処理を大幅に軽減しつつ、前記暗号鍵の秘密を確保してデータの秘匿性を保証できる状態に回復できる。
【0217】
また、本発明の第6の態様に関する情報処理装置は、さらに、前記鍵生成部は、前記所定のアプリケーションの初期設定時に前記所定のアプリケーションのハッシュ値に基づいて前記所定のアプリケーションに対応する暗号鍵を生成して前記第2メモリに格納し、前記所定のアプリケーションのハッシュ値と前記対応する暗号鍵とを対応させる鍵生成リストを生成して前記第2メモリに格納し、前記鍵生成リストに存在するハッシュ値を前記第1メモリに格納するものである。
【0218】
この態様によると、前記鍵生成部は、前記所定のアプリケーションのハッシュ値と前記
対応する暗号鍵とを対応させる鍵生成リストを生成する。これにより、前記所定のアプリケーションのハッシュ値と前記対応する暗号鍵とを対応させる管理が確実且つ簡易となる。そのため、前記暗号鍵の秘密性の管理を確実且つ簡易なものとできる。
また、本発明の第7の態様に関する情報処理装置は、さらに、前記所定のアプリケーションの初期設定時に前記所定のアプリケーションがデータを送信する外部装置の識別情報を、前記所定のアプリーションを介して取得し、前記外部装置の識別情報及び前記所定のアプリケーションのハッシュ値に基づいて前記所定のアプリケーションに対応する暗号鍵を生成して前記第2メモリに格納し、前記外部装置の識別情報、前記所定のアプリケーションのハッシュ値及び前記対応する暗号鍵を対応させる第2鍵生成リストを生成して前記第2メモリに格納し、前記第2鍵生成リストに存在するハッシュ値を前記第1メモリに格納するものである。
【0219】
この態様によると、前記鍵生成部は、前記外部装置の識別情報、前記所定のアプリケーションのハッシュ値及び前記対応する暗号鍵を対応させる第2鍵生成リストを生成する。これにより、一つのアプリケーションに対して複数の外部端末に応じて複数の暗号鍵を生成する場合、前記外部装置の識別情報、前記所定のアプリケーションのハッシュ値及び前記対応する暗号鍵を対応させる管理が確実且つ簡易となる。そのため、一つのアプリケーションについての複数の暗号鍵の秘密性の管理を確実且つ簡易なものとできる。
【0220】
また、本発明の第8の態様に関する情報処理装置は、さらに、前記鍵生成部は、前記暗号鍵を前記第1メモリに複製する際、前記暗号鍵の使用回数を示す情報を前記第1メモリに記憶し、前記暗号部は、前記情報が示す使用回数を前記暗号鍵の使用回数が超えた場合、前記第1メモリに複製された暗号鍵を消去し、前記制御部に新たな暗号鍵の複製を要求し、前記制御部は、前記第2モードに切り替え、前記鍵生成部に新たな暗号鍵を生成させ前記第1メモリに複写させるものである。
【0221】
この態様によると、同じ暗号鍵を使い続けないので、暗号鍵の漏洩の可能性を低減できると共に、攻撃者が予想される暗号鍵のパターンを全て生成して一つ一つ試して攻撃する総当たり攻撃からの保護を強化できる。
また、本発明の第9の態様に関する情報処理装置は、さらに、日及び時刻を計時する計時部を設け、前記鍵生成部は、前記暗号鍵を前記第1メモリに複製する際、前記暗号鍵の使用が許可された最終日及び最終時刻を示す時間情報を前記第1メモリに記憶し、前記暗号部は、前記時間情報が示す最終日及び最終時刻を前記計時部が計時する日及び時刻が超えた場合、前記第1メモリに複製された暗号鍵を消去し、前記制御部に新たな暗号鍵の複製を要求し、前記制御部は、前記第2モードに切り替え、前記鍵生成部に新たな暗号鍵を生成させ前記第1メモリに複写させるものである。
【0222】
この態様によると、同じ暗号鍵を使い続けないので、暗号鍵の漏洩の可能性を低減できると共に、攻撃者が予想する暗号鍵のパターンを全て生成して一つ一つ試して攻撃する総当たり攻撃からの保護を強化できる。
本発明の第10の態様に関する情報処理装置は、所定の暗号データを格納する第1メモリと、復号鍵を格納する第2メモリと、所定のアプリケーションを格納する格納部と、前記所定のアプリケーションのハッシュ値に基づいて前記復号鍵を生成し前記第2メモリに格納し、前記復号鍵の生成に用いたハッシュ値を前記第1メモリに格納する鍵生成部と、前記第1メモリへのアクセスは許可され且つ前記第2メモリへのアクセスが禁止され、前記第1メモリから前記所定の暗号データを読み出して前記所定の暗号データを復号する復号部と、前記所定のアプリケーションによる前記第1メモリへのアクセスを許可し且つ前記第2メモリへのアクセスを禁止する第1モードを設定して前記所定のアプリケーションを起動し、前記第1メモリに格納された所定の暗号データを復号する処理要求を前記所定のアプリケーションから受け且つ前記第1メモリに前記復号鍵が格納されていない場合、
前記鍵生成部による前記第1メモリ及び前記第2メモリへのアクセスを許可する第2モードに切り替え、前記鍵生成部に対して前記第2メモリに格納された復号鍵を前記第1メモリに複製させ、前記第1モードに切り替え、前記復号部に前記第1メモリに複製された復号鍵を用いて前記所定の暗号データを復号させる制御部と、を具備し、前記復号部は、前記処理要求に応じて、前記処理要求を行ったアプリケーションのハッシュ値を演算し、前記演算したハッシュ値と前記第1メモリに格納されたハッシュ値とが不一致の場合、前記第1メモリに複製された復号鍵を消去し、さらに、前記復号部が前記復号鍵を用いて前記所定の暗号化テータを復号した平文データを格納する第4メモリを設け、前記復号部は、前記処理要求に応じて、前記処理要求を行ったアプリケーションのハッシュ値を演算し、前記演算したハッシュ値と前記第1メモリに格納されたハッシュ値とが不一致の場合、前記第4メモリに格納した平文データを消去するものである。
【0223】
この態様によると、復号鍵だけではなく、前記復号鍵を用いて過去に復号された平文データをも消去するので、将来生成される平文データのみならず、過去に生成された平文データをも不正なアプリケーションから保護できる。
8.その他変形例
(1)上記の各実施の形態では、アプリケーションプログラムの検証を行うロード機能部129を、汎用オペレーティングシステム157が備えている。しかし、それ以外のソフトウェアモジュールで実現してもよい。それ以外のモジュールとは、例えば、アプリケーションプログラムをネットワークからダウンロードして情報処理装置に格納するダウンロードソフトウェアであってもよい。
【0224】
(2)上記の各実施の形態では、不正なアプリケーションプログラムを検知した場合に、通常鍵テーブルに格納されている鍵を削除する。しかし、それ以外のデータを削除してもよい。それ以外のデータとは、例えば、復号された平文データである。また、それ以外のデータとは、不正なアプリケーションプログラムが格納されているファイルである。
(3)上記の各実施の形態では、不正なアプリケーションプログラムを検知した場合に、通常鍵テーブルに格納されている鍵を削除する。しかし、それ以外の操作を行ってもよい。例えば、復号された平文データを保持しているアプリケーションプログラムに対して警告メッセージを通知してもよい。また、不正なアプリケーションプログラムを検知したことを示す検知情報を不揮発性記憶部102に格納しておき、情報処理装置100の次の起動時に、不揮発性記憶部102に検知情報が格納されているか否かを判断し、格納されている場合には、当該起動時に動的改竄チェックの頻度を多くするなどの制御をしてもよい。
【0225】
(4)上記の各実施の形態では、ハッシュ値をSHA−1アルゴリズムを用いて生成するとしたが、それ以外の方法を用いてもよい。例えば、SHA−256アルゴリズムやMD5アルゴリズムなどを用いるとしてもよい。
(5)上記の各実施の形態では、データ暗復号機能部160が、「保護モードから鍵を取得し、通常モードのデータ暗復号機能部を用いた暗号化」(図10)において、「アプリケーションプログラムのハッシュ値生成及び検証B、並びに他のアプリケーションプログラムの検証」を、鍵の確認A(S221)の前に行っていない。
【0226】
しかし、データ暗号化要求(S220)の後、かつ、鍵の確認A(S221)の前に、「アプリケーションプログラムのハッシュ値生成及び検証B、並びに他のアプリケーションプログラムの検証」を行ってもよい。
これにより、「通常モードのデータ暗復号機能部のみを用いた暗号化」(図11)と、「保護モードの保護データ操作部を用いた暗号化」(図12)とで、処理を統一することができ、データ暗復号機能部160の処理を共通化し、プログラム中の命令コードの削減ができる。
【0227】
(6)上記の各実施の形態では、データ暗復号機能部160が、「保護モードから鍵を取得し、通常モードのデータ暗復号機能部を用いた復号」(図15)において、「アプリケーションプログラムのハッシュ値生成及び検証B、並びに他のアプリケーションプログラムの検証」を、鍵の確認A(S281)の前に行っていない。
しかし、データ復号要求(S280)の後、かつ、鍵の確認A(S281)の前に、「アプリケーションプログラムのハッシュ値生成及び検証B、並びに他のアプリケーションプログラムの検証」を行ってもよい。
【0228】
これにより、「通常モードのデータ暗復号機能部のみを用いた復号」(図15)と、「保護モードの保護データ操作部を用いた復号」(図示していない)とで、処理を統一することができ、データ暗復号機能部160の処理を共通化し、プログラム中の命令コードの削減ができる。
(7)上記の各実施の形態では、図10のステップS224の後に、サーバ情報の検証を行っていない。
【0229】
しかし、ステップS224の後に、サーバ情報の検証を行ってもよい。
これにより、不正なサーバ情報が指定されている場合には、以降の処理を行う必要がなくなり、異常発生時の処理を高速に行うことができる。
(8)上記の各実施の形態では、図11のステップS241の後に、サーバ情報の検証を行っていない。
【0230】
しかし、ステップS241の後に、サーバ情報の検証を行ってもよい。
これにより、不正なサーバ情報が指定されている場合には、以降の処理を行う必要がなくなり、異常発生時の処理を高速に行うことができる。
(9)上記の各実施の形態では、図12のステップS256の後に、サーバ情報の検証を行っていない。
【0231】
しかし、ステップS256の後に、サーバ情報の検証を行ってもよい。
これにより、不正なサーバ情報が指定されている場合には、以降の処理を行う必要がなくなり、異常発生時の処理を高速に行うことができる。
(10)上記の各実施の形態では、「アプリケーションプログラムのハッシュ値生成及び検証B」において、アプリケーションプログラムのハッシュ値を生成している。
【0232】
しかし、「アプリケーションプログラムのハッシュ値生成及び検証B」において、「アプリケーションプログラムのハッシュ値生成及び検証A」で生成したハッシュ値を利用してもよい。
これにより、ハッシュ値生成の回数を削減することが可能となり、高速に処理をおこなうことができる。
【0233】
(11)上記の各実施の形態では、通常モードと保護モードのモード切替を利用したが、それ以外の方法を利用してもよい。
例えば、オペレーティングシステム仮想化技術を用いて、2つのソフトウェア実行環境を構築し、特定のソフトウェア実行環境へのアクセス制御を行ってもよい。これにより、オペレーティングシステム仮想化技術を備える情報処理装置で、安全に、かつ高速なデータ暗復号処理をおこなうことができる。
【0234】
(12)上記の各実施の形態では、ステップS224の「アプリケーションプログラムのハッシュ値生成及び検証B」において、データ暗号化要求を行ったアプリケーションプログラムの認証をする際に、生成したハッシュ値と参照ハッシュ値との比較を用いたが、それ以外の方法を用いてもよい。
例えば、アプリケーションプログラムの署名検証を用いてもよい。また、アプリケーションプログラムの署名検証を用いる場合には、ハッシュ値を新たに生成してデータ暗復号機能部に通知してもよい。
【0235】
なお、アプリの署名検証とハッシュ値の生成及び通知は、以下のステップを行うことで実現することができる。
(i)保護データ操作部155は、あらかじめ署名検証鍵を保持しており、当該署名検証鍵を用いて、電子署名されたアプリケーションプログラムの電子証明書を検証する。
(ii)アプリケーションプログラムの電子証明書が改竄されていないことを検証した後に、アプリケーションプログラムのハッシュ値を生成し、生成したハッシュ値と、アプリケーションプログラムの電子証明書に格納されている参照ハッシュ値とを比較する。
【0236】
(iii )生成したハッシュ値と参照ハッシュ値が一致する場合には、保護データ操作部155は、動的改竄検出機能部153及びモード切替部143を介して、データ暗復号機能部160にハッシュ値を通知する。
また、上記の電子署名されたアプリケーションプログラムの電子証明書の検証では、RSAアルゴリズムを用いてもよいし、楕円曲線暗号アルゴリズムを用いてもよい。
【0237】
また、上記の(i)、(ii)、(iii )において、検証が失敗し、改竄を検出し、又はハッシュ値の不一致を検出した場合には、保護データ操作部155は、ステップS224の「アプリケーションプログラムのハッシュ値生成及び検証B」の異常終了と同様の操作を行う。これにより、保護データ操作部155の保持する保護鍵テーブル136に記憶すべきデータ量を削減することができる。
【0238】
(13)上記の各実施の形態では、アプリケーションプログラムの登録の際に、データ暗復号鍵を生成しているが、それ以外のタイミングで、データ暗復号鍵を生成してもよい。
例えば、情報処理装置の電源投入後に、アプリケーションプログラムが初めてデータ暗復号を要求するタイミングであってもよい。
【0239】
情報処理装置の電源投入後に、アプリケーションプログラムが初めてデータ暗復号を要求するタイミングに鍵を生成する場合には、図10のステップS226の「鍵の確認B」とステップS227の「鍵の読み取り」の代わりに、図9のステップS209の「鍵生成と格納」を行うことで実現することができる。
これにより、図示していない不正なアクセスから保護されている不揮発性記憶部に、データ暗復号鍵を格納する必要がなくなり、不正なアクセスから保護されている不揮発性記憶部を削減することができる。
【0240】
(14)上位の各実施の形態では、暗号鍵を用いるデータの暗号化及び復号鍵を用いる暗号化データの復号の操作に関して説明したが、それ以外の操作を行ってもよい。
例えば、Keyed Hash演算であってもよい。ここで、Keyed Hash演算は、情報セキュリティ処理である。Keyed Hash演算の場合には、上記の各実施の形態の暗復号操作を、Keyed Hash演算に置き換えればよい。上記の各実施の形態の暗復号操作のデータ暗復号鍵は、Keyed Hash演算のIV(Initial Vector)値に置き換わる。これにより、データ暗復号以外にも、安全にかつ高速に操作を行うことができる。
【0241】
また、データの暗号化及び暗号化データの復号に代えて、鍵を用いるデジタル署名及び鍵を用いるデジタル署名の検証を行うとしてもよい。ここで、デジタル署名及びデジタル署名の検出は、情報セキュリティ処理である。
このように、鍵を用いる暗号化、復号、Keyed Hash演算、鍵を用いるデジタル署名、デジタル署名の検証などの、鍵を用いる情報セキュリティ処理を行うとしてもよい。
【0242】
(15)上記の各実施の形態で述べた構成要素については、その一部または全てを実現可能な範囲でソフトウェアとして実装してもよい。この場合、集積回路上に乗せなくてはならないハードウェアの量を抑えることができるので、より集積度を向上させることができる。
(16)上記の各実施の形態の各装置は、マイクロプロセッサ、ROM、RAM、ハードディスクユニット、ディスプレィユニット、入力ユニット、通信ユニットなどから構成されるコンピュータシステムである。前記RAM又は前記ハードディスクユニットには、コンピュータプログラムが記憶されている。ここで、コンピュータプログラムは、所定の機能を達成するために、コンピュータに対する指令を示す命令コードが複数個組み合わされて構成されたものである。前記マイクロプロセッサが、前記コンピュータプログラムに従って動作することにより、各装置は、その機能を達成する。つまり、前記マイクロプロセッサは、前記コンピュータプログラムに含まれる各命令を1個ずつ読み出し、読み出した命令を解読し、解読結果に従って動作する。
【0243】
なお、各装置は、マイクロプロセッサ、ROM、RAM、ハードディスクユニット、ディスプレイユニット、などの全てを含むコンピュータシステムに限らず、これらの一部から構成されているコンピュータシステムであってもよい。
また、RAM又はハードディスクユニットに記憶されているコンピュータプログラムに含まれる命令に従って、マイクロプロセッサが動作することにより、当該コンピュータプログラムとマイクロプロセッサとが、あたかも、一つのハードウェア回路を構成し、このハードウェア回路が動作しているようにみせることができる。
【0244】
(17)上記の実施の形態で述べた構成要素については、1個のシステムLSI(Large Scale Integration:大規模集積回路)から構成されているとしてもよい。システムLSIは、複数の構成部を1個のチップ上に集積して製造された超多機能LSIであり、具体的には、マイクロプロセッサ、ROM、RAMなどを含んで構成されるコンピュータシステムである。前記RAMには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムにしたがって動作することにより、システムLSIは、その機能を達成する。
【0245】
また、上記の各装置を構成する構成要素の各部は、個別に1チップ化されていても良いし、一部又は全てを含むように1チップ化されてもよい。この場合、上記の構成要素をソフトウェアで実装するよりも処理を高速化することができる。
(18)システムLSIは集積度の違いにより、IC、LSI、スーパーLSI、ウルトラLSIと呼称されることもあるが、システムLSI101を上記のいずれの集積度で実現した場合も本発明に含まれることは言うまでもない。また、LSI製造後に、プログラムすることが可能なFPGA(Field Programmable Gate Array)や、LSI内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサを利用しても良い。
【0246】
さらには、半導体技術の進歩または派生する別技術によりLSIに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて構成要素の集積化を行ってもよい。バイオ技術の適応等が可能性としてありえる。
(19)上記の各装置を構成する構成要素の一部または全部は、各装置に脱着可能なICカードまたは単体のモジュールから構成されているとしてもよい。前記ICカードまたは前記モジュールは、マイクロプロセッサ、ROM、RAMなどから構成されるコンピュータシステムである。前記ICカードまたは前記モジュールは、上記の超多機能LSIを含むとしてもよい。マイクロプロセッサが、コンピュータプログラムにしたがって動作することにより、前記ICカードまたは前記モジュールは、その機能を達成する。このICカードまたはこのモジュールは、耐タンパ性を有するとしてもよい。
【0247】
(20)また、本発明は、前記コンピュータプログラムまたは前記デジタル信号をコンピュータ読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、CD−ROM、MO、DVD、DVD−ROM、DVD−RAM、BD(Blu−rayDisc)、半導体メモリなどに記録したものとしてもよい。また、これらの記録媒体に記録されている前記デジタル信号であるとしてもよい。
【0248】
また、本発明は、前記コンピュータプログラムまたは前記デジタル信号を、電気通信回線、無線または有線通信回線、インターネットを代表とするネットワーク、データ放送等を経由して伝送するものとしてもよい。
また、本発明は、マイクロプロセッサとメモリを備えたコンピュータシステムであって、前記メモリは、上記コンピュータプログラムを記憶しており、前記マイクロプロセッサは、前記コンピュータプログラムにしたがって動作するとしてもよい。
【0249】
また、前記プログラムまたは前記デジタル信号を前記記録媒体に記録して移送することにより、または前記プログラムまたは前記デジタル信号を前記ネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしてもよい。
(21)これらの実施の形態および変形例の組合せであってもよい。
【産業上の利用可能性】
【0250】
本発明にかかるデータ暗復号方法は、データを暗復号する際に、データ暗復号機能部が鍵を保持しているか確認し、保持している場合には、実行環境の切り替えを行わずに暗復号処理を行う。さらに、不正なアプリケーションプログラムの場合には、データ暗復号機能部が保持している鍵を削除し、不正なアプリケーションプログラムが存在しなくなるまで、安全な実行環境でデータの暗復号を行うため、鍵の漏洩を防止して、安全な実行環境への切り替え回数を削減するという効果を有する。そのため、高速なデータ暗復号を行う機器等の分野で特に有効である。
【符号の説明】
【0251】
1 情報処理システム
10 サーバ装置
20 ネットワーク
100、100b、100c、100d、100e、100f 情報処理装置
101、101e システムLSI
102 不揮発性記憶部
103 メモリ部
104 専用メモリ部
105 システムバス
120、120b、120f 実行環境
121、121c 実行環境
126 通常暗復号部
127 通常操作部
128、128d、128e、128f 通常鍵テーブル
129 ロード機能部
133 許可リスト
134 保護暗復号部
135 保護操作部
136、136d、136e、136f 保護鍵テーブル
141 CPU
142 周辺回路
143 モード切替部
144 内部保護メモリ部
145 内部バス
146 専用バス
147 汎用レジスタ
148 制御レジスタ
149 バッファ領域
150 制御レジスタ
151 バッファ領域
152 セキュアオペレーティングシステム
153 動的改竄検出機能部
154 セキュアブート部
155 保護データ操作部
157 汎用オペレーティングシステム
158 アプリケーションプログラムA
159 アプリケーションプログラムB
160 データ暗復号機能部
160f データ暗復号機能部
205 中間言語マシン
206 中間言語アプリケーションプログラム
218 中間言語ロード機能部
237 保護鍵テーブル更新部
265 クロック
266 専用線
297 復号データ格納位置テーブル

【特許請求の範囲】
【請求項1】
通常モードと保護モードとを切り替えて動作するプログラム実行装置であって、
鍵を用いる情報セキュリティ処理を指示する命令を含むプログラムの改竄を検出する改竄検出手段と、
通常モードにおいて、前記改竄が検出されない場合に、前記プログラムに従って動作し、前記プログラムの中から前記命令を検出すると情報セキュリティ処理の指示を出力する実行手段と、
通常モードにおいて、前記指示を受けると、保護モードに切り替えるよう制御する通常セキュリティ処理手段と、
前記プログラムに対応付けて鍵を安全に記憶しており、保護モードにおいて、前記鍵を読み出し、読み出した鍵を出力し、通常モードに切り替えるよう制御する保護セキュリティ処理手段とを備え、
前記通常セキュリティ処理手段は、通常モードにおいて、前記鍵を受け取り、受け取った前記鍵を用いて前記情報セキュリティ処理を実行する
ことを特徴とするプログラム実行装置。
【請求項2】
前記通常セキュリティ処理手段は、さらに、通常モードにおいて、受け取った前記鍵を記憶し、
前記改竄検出手段は、さらに、前記プログラムの改竄を検出し、
前記通常セキュリティ処理手段は、さらに、前記改竄が検出されなかった場合に、通常モードにおいて、記憶している前記鍵を用いて、前記情報セキュリティ処理を実行する
ことを特徴とする請求項1に記載のプログラム実行装置。
【請求項3】
前記通常セキュリティ処理手段は、さらに、通常モードにおいて、受け取った前記鍵を記憶し、
前記改竄検出手段は、さらに、前記プログラムの改竄を検出し、
前記通常セキュリティ処理手段は、さらに、前記改竄が検出された場合に、通常モードにおいて、記憶している前記鍵を削除し、保護モードに切り替えるよう制御し、
前記保護セキュリティ処理手段は、さらに、保護モードにおいて、記憶している前記鍵を用いて、前記情報セキュリティ処理を実行する
ことを特徴とする請求項1に記載のプログラム実行装置。
【請求項4】
前記通常セキュリティ処理手段は、さらに、通常モードにおいて、受け取った前記鍵を記憶し、
前記改竄検出手段は、さらに、通常モードで動作する他のプログラムの改竄を検出し、
前記通常セキュリティ処理手段は、さらに、前記他のプログラムの改竄が検出された場合に、通常モードにおいて、記憶している前記鍵を削除し、保護モードに切り替えるよう制御し、
前記保護セキュリティ処理手段は、さらに、保護モードにおいて、記憶している前記鍵を用いて、前記情報セキュリティ処理を実行する
ことを特徴とする請求項1に記載のプログラム実行装置。
【請求項5】
前記通常セキュリティ処理手段は、さらに、前記プログラムの実行が要求されたとき、通常モードにおいて、当該プログラムの鍵の生成指示を出力し、保護モードに切り替えるよう制御し、
前記保護セキュリティ処理手段は、さらに、保護モードにおいて、前記鍵の生成指示を受けると、当該プログラムの前記鍵を生成し、当該プログラムに対応付けて記憶する
ことを特徴とする請求項1に記載のプログラム実行装置。
【請求項6】
前記保護セキュリティ処理手段は、さらに、保護モードにおいて、前記プログラムのハッシュ値を生成し、生成したハッシュ値と生成した前記鍵とを対応付けて記憶する
ことを特徴とする請求項5に記載のプログラム実行装置。
【請求項7】
前記保護セキュリティ処理手段は、さらに、保護モードにおいて、前記鍵とともに前記ハッシュ値を読み出し、前記鍵とともに前記ハッシュ値を出力し、
前記通常セキュリティ処理手段は、さらに、通常モードにおいて、前記鍵とともに前記ハッシュ値を受け取り、前記ハッシュ値に対応付けて前記鍵を記憶する
ことを特徴とする請求項6に記載のプログラム実行装置。
【請求項8】
前記通常セキュリティ処理手段は、さらに、通常モードにおいて、他のプログラムから情報セキュリティ処理の指示を受け、当該他のプログラムのハッシュ値を算出し、算出したハッシュ値が記憶しているハッシュ値と一致しているか否かを判断し、一致していなければ、記憶している前記鍵を削除する
ことを特徴とする請求項7に記載のプログラム実行装置。
【請求項9】
前記通常セキュリティ処理手段は、さらに、前記プログラムの実行が要求されたとき、通常モードにおいて、当該プログラムに対応する鍵を保持しているか否かを判断し、保持してないと判断する場合に、当該プログラムの鍵の生成指示を出力し、保護モードに切り替えるよう制御し、
前記保護セキュリティ処理手段は、さらに、保護モードにおいて、前記鍵の生成指示を受けると、当該プログラムに対応する鍵を保持しているか否かを判断し、保持していると判断する場合に、前記鍵を読み出し、読み出した前記鍵を出力し、通常モードに切り替えるように制御する
ことを特徴とする請求項5に記載のプログラム実行装置。
【請求項10】
前記保護セキュリティ処理手段は、さらに、前記鍵に対応付けて、鍵の最大使用回数を安全に記憶しており、保護モードにおいて、前記最大使用回数を出力し、
前記通常セキュリティ処理手段は、さらに、通常モードにおいて、前記鍵とともに、前記最大使用回数を受け取り、受け取った前記最大使用回数を記憶し、現在の使用回数が記憶している前記最大使用回数を超えているか否かを判断し、超えていると判断される場合に、新たな生成の指示を出力し、保護モードに切り替えるよう制御し、
前記保護セキュリティ処理手段は、さらに、保護モードにおいて、新たな生成の指示を受け取ると、新たな鍵と新たな最大使用回数を生成し、生成した新たな鍵と新たな最大使用回数とを出力し、通常モードに切り替えるよう制御し、
前記通常セキュリティ処理手段は、さらに、通常モードにおいて、新たな鍵と新たな最大使用回数とを受け取り、記憶している鍵と最大使用回数とを削除し、受け取った新たな鍵と新たな最大使用回数とを対応付けて記憶する
ことを特徴とする請求項1に記載のプログラム実行装置。
【請求項11】
前記保護セキュリティ処理手段は、さらに、前記鍵に対応付けて、鍵を使用することができる最終日時を安全に記憶しており、保護モードにおいて、前記最終日時を出力し、
前記通常セキュリティ処理手段は、さらに、通常モードにおいて、前記鍵とともに、前記最終日時を受け取り、受け取った前記最終日時を記憶し、現在の日時が記憶している前記最終日時を超えているか否かを判断し、超えていると判断される場合に、新たな生成の指示を出力し、保護モードに切り替えるよう制御し、
前記保護セキュリティ処理手段は、さらに、保護モードにおいて、新たな生成の指示を受け取ると、新たな鍵と新たな最終日時とを生成し、生成した新たな鍵と新たな最終日時とを出力し、通常モードに切り替えるよう制御し、
前記通常セキュリティ処理手段は、さらに、通常モードにおいて、新たな鍵と新たな最終日時とを受け取り、記憶している鍵と最終日時とを削除し、受け取った新たな鍵と新たな最終日時とを対応付けて記憶する
ことを特徴とする請求項1に記載のプログラム実行装置。
【請求項12】
前記情報セキュリティ処理は、暗号化、復号、デジタル署名の生成、デジタル署名の検証、鍵付きハッシュの生成のいずれかである
ことを特徴とする請求項1に記載のプログラム実行装置。
【請求項13】
通常モードと保護モードとを切り替えて動作するプログラム実行装置で用いられる制御方法であって、
鍵を用いる情報セキュリティ処理を指示する命令を含むプログラムの改竄を検出する改竄検出ステップと、
通常モードにおいて、前記改竄が検出されない場合に、前記プログラムに従って動作し、前記プログラムの中から前記命令を検出すると情報セキュリティ処理の指示を出力する実行ステップと、
通常モードにおいて、前記指示を受けると、保護モードに切り替えるよう制御する通常セキュリティ処理ステップと、
前記プログラムに対応付けて鍵を安全に記憶しており、保護モードにおいて、前記鍵を読み出し、読み出した鍵を出力し、通常モードに切り替えるよう制御する保護セキュリティ処理ステップとを備え、
前記通常セキュリティ処理ステップにおいて、通常モードにおいて、前記鍵を受け取り、受け取った前記鍵を用いて前記情報セキュリティ処理を実行する
ことを特徴とする制御方法。
【請求項14】
通常モードと保護モードとを切り替えて動作するプログラム実行装置で用いられ、コンピュータ読み取り可能な記録媒体に記録されている制御プログラムであって、
コンピュータに、
鍵を用いる情報セキュリティ処理を指示する命令を含むプログラムの改竄を検出する改竄検出ステップと、
通常モードにおいて、前記改竄が検出されない場合に、前記プログラムに従って動作し、前記プログラムの中から前記命令を検出すると情報セキュリティ処理の指示を出力する実行ステップと、
通常モードにおいて、前記指示を受けると、保護モードに切り替えるよう制御する通常セキュリティ処理ステップと、
前記プログラムに対応付けて鍵を安全に記憶しており、保護モードにおいて、前記鍵を読み出し、読み出した鍵を出力し、通常モードに切り替えるよう制御する保護セキュリティ処理ステップとを実行させ、
前記通常セキュリティ処理ステップにおいて、通常モードにおいて、前記鍵を受け取り、受け取った前記鍵を用いて前記情報セキュリティ処理を実行する
ための制御プログラム。
【請求項15】
通常モードと保護モードとを切り替えて動作するプログラム実行のための集積回路であって、
鍵を用いる情報セキュリティ処理を指示する命令を含むプログラムの改竄を検出する改竄検出手段と、
通常モードにおいて、前記改竄が検出されない場合に、前記プログラムに従って動作し、前記プログラムの中から前記命令を検出すると情報セキュリティ処理の指示を出力する実行手段と、
通常モードにおいて、前記指示を受けると、保護モードに切り替えるよう制御する通常セキュリティ処理手段と、
前記プログラムに対応付けて鍵を安全に記憶しており、保護モードにおいて、前記鍵を読み出し、読み出した鍵を出力し、通常モードに切り替えるよう制御する保護セキュリティ処理手段とを備え、
前記通常セキュリティ処理手段は、通常モードにおいて、前記鍵を受け取り、受け取った前記鍵を用いて前記情報セキュリティ処理を実行する
ことを特徴とする集積回路。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate

【図24】
image rotate

【図25】
image rotate

【図26】
image rotate

【図27】
image rotate

【図28】
image rotate

【図29】
image rotate

【図30】
image rotate

【図31】
image rotate

【図32】
image rotate

【図33】
image rotate

【図34】
image rotate

【図35】
image rotate

【図36】
image rotate

【図37】
image rotate

【図38】
image rotate

【図39】
image rotate

【図40】
image rotate

【図41】
image rotate

【図42】
image rotate

【図43】
image rotate


【公開番号】特開2010−182296(P2010−182296A)
【公開日】平成22年8月19日(2010.8.19)
【国際特許分類】
【出願番号】特願2010−1120(P2010−1120)
【出願日】平成22年1月6日(2010.1.6)
【出願人】(000005821)パナソニック株式会社 (73,050)
【Fターム(参考)】