(57)【要約】【課題】レジスタの値に関連付けてデータ保護を行う際に、複数の異なるアプリケーションの間における使用レジスタの衝突を回避する。【解決手段】ハードTPM102は、複数のレジスタを有し、複数のレジスタの何れかの値に関連付けたデータの暗号化によりデータ保護を行う。レジスタ番号管理部105は、データ保護に利用するレジスタ番号をアプリケーションごとに管理する。アプリ実行部106は、アプリケーションの実行中に、アプリケーションに予め設定されたレジスタ番号を指定するデータ保護の要求を発行する。ソフトTPM107は、データ保護の要求に指定されたレジスタ番号をレジスタ番号管理部105が管理するレジスタ番号に置き換えたデータ保護の要求をハードTPM102に転送する。【選択図】図1
2014048725.tif 000002
【特許請求の範囲】
【請求項１】
複数のレジスタを有し、前記複数のレジスタの何れかの値に関連付けたデータの暗号化によりデータ保護を行うトラステッドデバイスと、
前記データ保護に利用するレジスタ番号をアプリケーションごとに管理する管理手段と、
アプリケーションの実行中に、前記アプリケーションに予め設定されたレジスタ番号を指定するデータ保護の要求を発行するアプリ実行手段と、
前記データ保護の要求に指定されたレジスタ番号を前記管理手段が管理する前記アプリケーションのレジスタ番号に置き換えたデータ保護の要求を前記トラステッドデバイスに転送する保護手段とを有することを特徴とする情報処理装置。
【請求項２】
さらに、ユーザ指示に従いアプリケーションをメモリにロードし、前記アプリケーションのレジスタ番号を前記管理手段から取得して、前記レジスタ番号のレジスタが初期値の場合は前記レジスタ番号を指定する前記アプリケーションのハッシュ値の登録要求を発行するロード手段を有することを特徴とする請求項1に記載された情報処理装置。
【請求項３】
前記ロード手段は、前記レジスタ番号のレジスタの値が前記初期値と異なる場合、前記レジスタの値と前記ハッシュ値を比較して前記アプリケーションの起動または起動の中止を制御することを特徴とする請求項2に記載された情報処理装置。
【請求項４】
前記保護手段は、前記トラステッドデバイスとは別に複数のレジスタを有し、前記管理手段が管理する前記アプリケーションのレジスタ番号が前記トラステッドデバイスが有する前記複数のレジスタの範囲を超える場合、前記保護手段が有する複数のレジスタの何れかの値に関連付けて前記要求されたデータ保護を実行することを特徴とする請求項1から請求項3の何れか一項に記載された情報処理装置。
【請求項５】
前記アプリ実行手段は、アプリケーションの実行中に、前記データ保護されたデータの保護解除要求を発行し、
前記トラステッドデバイスまたは前記保護手段は、前記データ保護されたデータが含むレジスタ番号のレジスタ値が、前記レジスタ番号に対応するレジスタの値と一致する場合は前記データのデータ保護を解除することを特徴とする請求項4に記載された情報処理装置。
【請求項６】
前記保護手段が前記データ保護に使用する鍵は前記トラステッドデバイスによってデータ保護されていることを特徴とする請求項4または請求項5に記載された情報処理装置。
【請求項７】
前記管理手段は、アプリケーションのファイルパス、ハッシュ値、ユーザ権限、および、ユニフォームリソースロケータの少なくとも一つに対応付けたレジスタ番号を管理することを特徴とする請求項1から請求項6の何れか一項に記載された情報処理装置。
【請求項８】
複数のレジスタを有し、前記複数のレジスタの何れかの値に関連付けたデータの暗号化によりデータ保護を行うトラステッドデバイス、管理手段、アプリ実行手段、保護手段を有する情報処理装置の制御方法であって、
前記管理手段が、前記データ保護に利用するレジスタ番号をアプリケーションごとに管理し、
前記アプリ実行手段が、アプリケーションの実行中に、前記アプリケーションに予め設定されたレジスタ番号を指定するデータ保護の要求を発行し、
前記保護手段が、前記データ保護の要求に指定されたレジスタ番号を前記管理手段が管理する前記アプリケーションのレジスタ番号に置き換えたデータ保護の要求を前記トラステッドデバイスに転送することを特徴とする制御方法。
【請求項９】
コンピュータを請求項1から請求項7の何れか一項に記載された情報処理装置の各手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、
【０００２】
情報処理装置におけるトラステッドデバイスを用いたデータ保護に関するものである。
【背景技術】
【０００３】
TPM (trusted platform module)などのセキュリティチップを情報処理装置に搭載し、情報処理装置に記憶された秘密情報を保護する技術がある。
【０００４】
TPMは、安全に管理された鍵ペア、暗号処理機能、情報処理装置内のモジュール（バイナリデータ）のハッシュ値を記憶するPCR (platform configuration register)と呼ばれるレジスタを有する。情報処理装置は、BIOSやブートローダなどのシステムモジュールのハッシュ値をPCRに保持して、TPMに秘密情報の保護(seal)を要求する。TPMは、秘密情報をPCRのレジスタ値（PCR値）に関連付けた上で秘密情報を暗号化する（保護）。TPMによって保護された秘密情報（保護データ）は、保護時に関連付けられたPCR値が正しい場合のみ、TPMによって保護解除(unseal)される。
【０００５】
情報処理装置が不正に改竄されると、正しいPCR値が保持されず保護データの保護解除ができず、秘密情報が不正に利用される脅威に対抗することが可能である。
【０００６】
TCG (Trusted Computing Group)は、トラステッドブート(trusted boot)処理を規格化した。トラステッドブート処理によれば、システムが秘密情報の保護に利用するために、BIOS、ブートローダ、カーネルなどのシステムモジュールのハッシュ値をそれぞれ所定のPCRに登録する。しかし、システムの起動後に実行される個々のアプリケーションのハッシュ値を異なるPCRに登録し、アプリケーションが対応するPCR値を用いてデータを保護する場合、以下の問題が生じる。
【０００７】
TCGの規格は、個々のアプリケーションが利用するPCRを規定しないため、複数のアプリケーションが同一のPCRを利用する可能性がある。この場合、データ保護が正しく行われない。
【０００８】
例えば、あるPCRにアプリケーションApp1のハッシュ値が登録され、App1は当該PCRをデータ保護に利用している状態で、別のアプリケーションApp2のハッシュ値が意図せず当該PCRに登録されたとする。この場合、当該PCR値は不正な値になり、App1による保護データの保護解除が不可能になる。
【先行技術文献】
【非特許文献】
【０００９】
【非特許文献１】Trusted Computing Group (TCG) TPM Specification Version1.2 (http://www.trustedcomputinggroup.org/)
【発明の概要】
【発明が解決しようとする課題】
【００１０】
本発明は、レジスタの値に関連付けてデータ保護を行う際に、複数の異なるアプリケーションの間における使用レジスタの衝突を回避することを目的とする。
【課題を解決するための手段】
【００１１】
本発明は、前記の目的を達成する一手段として、以下の構成を備える。
【００１２】
本発明にかかる情報処理装置は、複数のレジスタを有し、前記複数のレジスタの何れかの値に関連付けたデータの暗号化によりデータ保護を行うトラステッドデバイスと、前記データ保護に利用するレジスタ番号をアプリケーションごとに管理する管理手段と、アプリケーションの実行中に、前記アプリケーションに予め設定されたレジスタ番号を指定するデータ保護の要求を発行するアプリ実行手段と、前記データ保護の要求に指定されたレジスタ番号を前記管理手段が管理する前記アプリケーションのレジスタ番号に置き換えたデータ保護の要求を前記トラステッドデバイスに転送する保護手段とを有することを特徴とする。
【発明の効果】
【００１３】
本発明によれば、レジスタの値に関連付けてデータ保護を行う際に、複数の異なるアプリケーションの間における使用レジスタの衝突を回避することを目的とする。
【図面の簡単な説明】
【００１４】
【図１】実施例の情報処理装置の機能構成例を示すブロック図。
【図２】情報処理装置におけるデータ保護処理を説明する図。
【図３】ブート処理部の構成例を説明するブロック図。
【図４】ブート処理部が実行するトラステッドブート処理を説明するフローチャート。
【図５】レジスタ番号管理部のPCRテーブルの一例を示す図。
【図６】アプリローダ実行部の処理を説明するフローチャート。
【図７】ソフトTPMの構成例を示すブロック図。
【図８】アプリケーションが発行する秘密情報の保護要求処理を説明するフローチャート。
【図９】秘密情報の保護処理を説明するフローチャート。
【図１０】秘密情報の保護解除処理を説明するフローチャート。
【図１１】実施例2の情報処理装置におけるデータ保護処理を説明する図。
【図１２】ハードTPMとソフトTPMのPCR値の変化の一例を示す図。
【図１３】ハードTPMによって保護されたソフトTPMの鍵ペアのデータ構造例を示す図。
【図１４】ソフトTPMの構成例を示すブロック図。
【図１５】秘密情報の保護処理を説明するフローチャート。
【図１６】保護データのデータ構造例を説明する図。
【図１７】秘密情報の保護解除処理を説明するフローチャート。
【発明を実施するための形態】
【００１５】
以下、本発明にかかる実施例の情報処理を図面を参照して詳細に説明する。
【００１６】
以下に説明するトラステッドデバイス（例えばセキュリティチップ）は、鍵ペアを保持する鍵ペア記憶部、ハッシュ値を格納する複数のレジスタとその値に応じて鍵ペアを用いる暗号化または復号を制御する暗号処理部を有する。つまり、暗号処理部は、保護すべきデータをレジスタ番号とその値に関連付けた上で当該データを公開鍵により暗号化し（データ保護）、保護データに関連付けられたレジスタの値が正しい場合に保護データを秘密鍵により復号する（保護解除）。
【００１７】
以下では、トラステッドデバイスがTPM、レジスタがPCRであるとして説明を行う。さらに、TPMに対する要求の表現に次の用語を用いる。つまり、ハッシュ値の登録要求を「エクステンド(extend)要求」、PCRの値（PCR値）に対応付けたデータの暗号化要求を「シール(seal)要求」、保護データの保護解除要求を「アンシール(unseal)要求」と呼ぶ。なお、エクステンド要求は、PCR番号（レジスタ番号）と、当該PCR番号のPCRに登録するデータ（ハッシュ値）を含む。
【００１８】
また、PCR番号（レジスタ番号）の割り当ては、下記に説明する割当方法に限らず、様々な割当方法が適用可能である。
【実施例１】
【００１９】
実施例1では、複数のアプリケーションが同一のPCRを用いるデータ保護を要求する場合に、正常なデータ保護を行う例を説明する。言い換えれば、実施例1の情報処理装置は、アプリケーションごとに異なるPCR番号を管理し、個々のアプリケーションにそのPCR番号を利用させる制御を行う。
【００２０】
［機能構成］
図1のブロック図により実施例の情報処理装置11の機能構成例を示す。情報処理装置11は、情報処理部101およびハードTPM処理部102を有する。
【００２１】
情報処理部101は、ブート処理部103、アプリローダ実行部104、レジスタ番号管理部105、アプリ実行部106、および、ソフトTPM処理部107を有する。情報処理部101の構成は、例えば、RAM、ROM、ハードディスクドライブ(HDD)などのメモリを用いてCPUが実行するソフトウェアにより実現される。また、以下では、ハードTPM処理部102を「ハードTPM」、ソフトTPM処理部107を「ソフトTPM」と表現する場合がある。
【００２２】
ハードTPM102は、N個のPCR（以下、ハードPCR）、ハードTPM102の鍵ペアであるSRK (strage root key)を安全に保持するハードTPM鍵記憶部、鍵ペアによる暗号化または復号を行うハードTPM暗号処理部を有する。なお、PCRおよびハードTPM鍵記憶部は不揮発性のメモリである。例えば、1番〜16番のPCR番号が割り当てられた16個のPCRがあり、PCR番号Nが割り当てられたPCRを「PCRN」と表現する。つまり、1番のPCRはPCR1、2番のPCRはPCR2、…、16番のPCRはPCR16である。
【００２３】
ハードTPM102は、エクステンド要求に対してPCRにハッシュ値を登録し、シール要求またはアンシール要求に対してSRKによる秘密情報の保護(seal)または保護データの保護解除(unseal)を行う。
【００２４】
ブート処理部103は、後述するトラステッドブート(trusted boot)処理を実行して情報処理装置11を起動し、システムモジュールのハッシュ値を計算し、エクステンド要求によりハッシュ値を所定のハードPCRに登録する。さらに、必要に応じて、ソフトTPM107の鍵ペアの復号をハードTPM102に要求し、復号された鍵ペアをソフトTPM107に供給する。
【００２５】
アプリローダ実行部104は、ユーザのアプリケーションの実行指示に従い、図示しないHDDなどの記憶媒体から当該アプリケーションのバイナリデータを読み込み、当該アプリケーションの処理をアプリ実行部106に開始させる。さらに、アプリローダ実行部104は、アプリケーションのハッシュ値を計算し、エクステンド要求によりハッシュ値をレジスタ番号管理部105から取得したPCR番号に対応するハードPCRに登録する。
【００２６】
なお、アプリローダ実行部104は、実行ファイルを起動するプログラムとして実現されてもよいし、JavaScript（登録商標）やHTML5によって記述されたウィジェットを処理する実行環境によって実現されてもよい。さらに、Java（登録商標）やPythonなどのプログラム言語によって実装されたアプリケーションを実行する仮想マシンとして実現することも可能である。
【００２７】
レジスタ番号管理部105は、アプリローダ実行部104およびソフトTPM107から受信したPCR番号の解決要求（以下、PCR解決要求）に応答してPCR番号を返す。レジスタ番号管理部105は、詳細は後述するが、メモリに格納した、アプリケーションとPCR番号の対応を示すテーブル（以下、PCRテーブル）によってPCR番号を管理する。また、PCRテーブルを利用せずに、PCR解決要求に応じた演算によりPCR番号を動的に生成してもよい。
【００２８】
アプリ実行部106は、アプリローダ実行部104が起動したアプリケーションを実行し、秘密情報の保護または保護データの保護解除をソフトTPM107に要求する。秘密情報とは、アプリケーションが使う鍵情報やアプリケーションが管理する個人情報や設定情報などである。
【００２９】
秘密情報を保護する場合、アプリ実行部106は、PCR番号を指定してソフトTPM107に秘密情報の保護を要求し、保護された秘密情報（保護データ）を受信する。例えば、アプリ実行部106は、ハードPCR6とその値を条件として鍵情報を保護するシール要求をソフトTPM107に出力し、ソフトTPM107から鍵情報の保護データを受信する。また、保護データの保護を解除する場合、アプリ実行部106は、保護データのアンシール要求をソフトTPM107に出力し、ソフトTPM107から保護が解除された秘密情報を受信する。
【００３０】
なお、複数のPCRとそれらの値を指定するシール要求も可能である。そのようなシール要求によって保護された保護データのアンシール要求に対して、ソフトTPM107は、それらのPCR値が正しい場合にのみ当該保護データの保護解除を行う。
【００３１】
ソフトTPM107は、エクステンド要求に基づきPCRにハッシュ値を登録する。また、シール要求またはアンシール要求に基づき、ソフトTPM107の鍵ペアによる秘密情報の保護または保護データの保護解除を行う。さらに、ソフトTPM107は、エクステンド要求、シール要求、アンシール要求の処理を加え、ハードTPM102に処理させる処理要求をハードTPM102に転送する。
【００３２】
［処理手順］
図2により情報処理装置11におけるデータ保護処理を説明する。なお、図2(b)〜図2(d)は、図2(a)に示す各処理ステップにおけるハードPCR値の変化例を示す。図2(b)は情報処理装置11のブート時のハードPCR値を示し、情報処理装置11のブート時は初期値として0x00000000が設定される。
【００３３】
ブート処理部103は、システム起動処理としてトラステッドブート処理を実行する(S201)。ステップS201において、ブート処理部103のエクステンド要求により、BIOSやブートローダなどのシステムのハッシュ値がハードPCRに設定され、ハードPCR値は図2(c)に示す状態（一例）になる。つまり、PCR1〜PCR4にそれぞれBIOS、ブートローダ、カーネル、ソフトTPM107のハッシュ値が設定される。
【００３４】
その後、ユーザ指示に従い、情報処理装置11はアプリケーションを起動し、ソフトTPM107またはハードTPM102によるデータ保護が実行される(S202)。つまり、アプリケーションのハッシュ値が後述する方法によってハードPCRに設定され、PCRとその値によってアプリケーションの秘密情報の保護または保護データの保護解除が行われる。
【００３５】
図2(d)は複数のアプリケーションApp1、App2、App3が起動された後のハードPCR値の状態（一例）を示す。つまり、エクステンド要求により、PCR6、PCR7、PCR8にそれぞれApp1、App2、App3のハッシュ値が設定される。また、PCR5には、エクステンド要求により、それら複数のアプリケーションAppsのハッシュ値から生成されたハッシュ値が設定される。
【００３６】
新しいハッシュ値の登録がエクステンド要求された場合、例えば次式により、エクステンド要求が指定するPCRの現在のPCR値と、新しいハッシュ値を連結したデータのハッシュ値が当該PCRに格納される。
VN = SHA1(VN + digest)      …(1)
ここで、VNはPCRNのPCR値、
SHA1はハッシュ関数、
digestは新しいハッシュ値、
+は連結。
【００３７】
このため、PCR5には、Apps（この例ではApp1、App2、App3）のハッシュ値から生成されたハッシュ値V5が格納されるが、当該ハッシュ値V5はそれらアプリケーションの起動順によって変化する。
【００３８】
また、情報処理装置11は、アテステーション(attestation)要求を受信した場合、ハードPCR値のみを使ってアテステーション応答してもよい。また、ソフトTPM107のPCR値（後述する仮想PCR値）を含めてアテステーション応答してもよい。なお、アテステーションとは、外部装置から情報処理装置11のシステム構成を検証して機器認証するためのプロトコルであり、外部装置からの要求に対してTPMが管理するPCR値にディジタル署名を付加して応答する。外部装置は応答に含まれるディジタル署名の検証と、PCR値の検査によって情報処理装置11の構成を認証する。
【００３９】
［ブート処理部］
図3のブロック図によりブート処理部103の構成例を説明する。
【００４０】
モジュール記憶部501は、情報処理装置11のメモリ（ROMやHDDなど）に相当し、BIOSやブートローダ、カーネルなどのシステムのソフトウェアモジュールを格納する。これらのソフトウェアモジュールは必要に応じて、RAMなどのワークエリアにロードされ、CPUによって実行される。
【００４１】
CRTM処理部502は、情報処理装置11の起動時にモジュール記憶部501からCRTM (core root of trust for measurement)プログラムを読み込んで実行する。そして、モジュール記憶部501からBIOSのプログラムを読み込んでハッシュ値を演算し、ハッシュ値をハードPCR1に登録し、BIOSのモジュールをワークエリアにロードしてBIOSの実行を開始する。なお、CRTMプログラムのハッシュ値を演算して、当該ハッシュ値をハードPCRに設定してもよい。
【００４２】
BIOS処理部503は、CRTM処理部502によって起動され、モジュール記憶部501からブートローダプログラムを読み込んで実行する。さらに、ブートローダのハッシュ値を計算し、当該ハッシュ値をハードPCR2に登録する。
【００４３】
ブートローダ処理部504は、BIOS処理部503によって起動され、モジュール記憶部501からカーネルプログラムを読み込んで実行する。さらにカーネルのハッシュ値を計算し、当該ハッシュ値をハードPCR3に登録する。
【００４４】
カーネル処理部505は、ブートローダ処理部504によって起動され、モジュール記憶部501から情報処理装置11のオペレーティングシステム(OS)のカーネルを読み込んで実行する。さらに、モジュール記憶部501からソフトTPM107のソフトウェアを読み込んでハッシュ値を計算し、当該ハッシュ値をハードPCR4に登録する。
【００４５】
図4のフローチャートによりブート処理部103が実行するトラステッドブート処理を説明する。
【００４６】
情報処理装置11の起動が指示されると、ブート処理部103は、CRTM処理部502を起動する(S601)。CRTM処理部502は、ブートシーケンスにおいて次に実行されるモジュールであるBIOSのハッシュ値を計算し、当該ハッシュ値をハードPCR1に登録し、BIOS処理部503を起動する(S602)。
【００４７】
BIOS処理部503は、ブートシーケンスにおいて次に実行されるモジュールであるブートローダのハッシュ値を計算し、当該ハッシュ値をハードPCR2に登録し、ブートローダ処理部504を起動する(S603)。
【００４８】
ブートローダ処理部504は、ブートシーケンスにおいて次に実行されるモジュールであるカーネルのハッシュ値を計算し、当該ハッシュ値をハードPCR3に登録し、カーネル処理部505を起動する(S604)。
【００４９】
カーネル処理部505は、ブートシーケンスにおいて次に実行されるモジュールであるソフトTPM107のハッシュ値を計算し、当該ハッシュ値をハードPCR4に登録し、ハードTPM107を起動する(S605)。
【００５０】
上記のトラステッドブート処理により、情報処理装置11が起動され、ブートプロセスの過程で実行されるソフトウェアモジュールのハッシュ値がハードPCRに設定される。つまり、情報処理装置11の起動時のPCR値（図2(b)）は、トラステッドブート処理により図2(c)に示すPCR値に書き換えられる。
【００５１】
［レジスタ番号管理部］
図5によりレジスタ番号管理部105のPCRテーブルの一例を示す。
【００５２】
図5(a)はアプリケーションのファイルシステム上のパスに応じてPCR番号を管理するPCRテーブル例を示し、一列目はアプリケーションのファイルパス、二列目はそのアプリケーションが利用するPCR番号である。例えば、パス/usr/local/bin/appli1で識別されるアプリケーションはハードPCR6を利用する。同様に、パス/usr/local/bin/appli2で識別されるアプリケーションはハードPCR7を、パス/usr/local/bin/appli3で識別されるアプリケーションはハードPCR8をそれぞれ利用する。
【００５３】
レジスタ番号管理部105は、アプリローダ実行部104およびソフトTPM107から受信したPCR解決要求に含まれるアプリケーションのパスに対応するPCR番号を返す。なお、PCR解決要求は、要求元のアプリケーションから情報を受信して、当該アプリケーションに割り当てられたPCR番号を返す処理要求である。
【００５４】
また、PCR解決要求には、アプリケーションのパス、実行ユーザハッシュ値、プロセスIDなどの要求元のアプリケーションに関連する情報が含まれる。従って、アプリケーションのパスだけでなく、その他の要素を使用してPCR番号を管理することが可能である。
【００５５】
図5(b)は、アプリケーションのパスとアプリケーションを実行するユーザ権限に応じてPCR番号を管理するためのPCRテーブルを示す。図5(b)において、二列目はアプリケーションを起動したユーザであり、三列目は、一列目の情報と二列目の情報の組み合わせに対して利用するPCR番号を表す。パス/usr/local/bin/appli1で識別されるアプリケーションをルート権限のユーザが起動した場合、当該アプリケーションはハードPCR6を利用する。一方、同じプログラムをユーザ権限のユーザが起動した場合、当該アプリケーションはハードPCR7を利用する。
【００５６】
また、図5(c)は、アプリケーションのハッシュ値に基づきPCR番号を管理するためのPCRテーブルを示す。図5(c)において、一列目は起動されるアプリケーションのハッシュ値、二列目はそのハッシュ値で識別されるアプリケーションが利用するPCR番号である。例えば、一行目に示すように、ハッシュ値0x12345678で識別されるアプリケーションはハードPCR6を利用する。
【００５７】
また、アプリケーションがURL（ユニフォームリソースロケータ）で識別されるウィジェットである場合は、図5(d)に示すURLに対応付けてPCR番号を管理するPCRテーブルを使用することができる。図5(d)において、一列目はウィジェットのURL、二列目はそのURLに対応するPCR番号である。例えば、一行目に示すように、URLがhttp://example.org/appli1のウィジェットはハードPCR6を利用する。
【００５８】
レジスタ番号管理部105のPCRテーブルは、アプリケーションのインストール時に生成してもよいし、アプリケーションの起動時にアプリローダ実行部104が生成してもよい。また、PCRテーブルは、OSなどによって安全に保護されることが望ましい。
【００５９】
高いセキュリティ権限が必要なアプリケーション、または、早く起動されたアプリケーションがハードPCRを優先的に利用するようにしてもよい。言い換えれば、ルート権限が必要なアプリケーションや、ルートユーザが起動したアプリケーションをハードPCRに割り当てる。ハードPCRすべてが割当済み（言い換えれば、初期値0x00000000のハードPCRがない）になった後、かつ、情報処理装置11の起動後初めて起動されたアプリケーションにはソフトTPM107のPCR（後述する仮想PCR）を割り当てる。これにより、高いセキュリティ権限が必要なアプリケーションなどにハードPCRを割り当てて、秘密情報をより安全に保護することができる。
【００６０】
［アプリローダ実行部］
図6のフローチャートによりアプリローダ実行部104の処理を説明する。なお、図6に示す処理は、ユーザがアプリケーションの実行を指示した場合に実行される。
【００６１】
アプリローダ実行部104は、ユーザ指示に従い、アプリケーションApp1の起動処理を開始する(S801)。そして、モジュール記憶部501からApp1のバイナリデータを読み込み、バイナリデータのハッシュ値を計算し(S802)、レジスタ番号管理部105にPCR解決要求を送信してApp1のPCR番号を取得する(S803)。
【００６２】
レジスタ番号管理部105は、図5に示すPCRテーブルを用いて、PCR解決要求に含まれるApp1のパスやハッシュ値に対応するPCR番号Xを返す。もし、App1のPCR番号が未登録の場合、レジスタ番号管理部105は、App1のPCR番号をPCRテーブルに登録し、そのPCR番号を返す。あるいは、アプリローダ実行部104が、App1のPCR番号をレジスタ番号管理部105に登録させてもよい。
【００６３】
アプリローダ実行部104は、現在のハードPCRX値を取得し、ハードPCRの初期値に等しいか否かを判定する(S804)。つまり、本実施例におけるPCRの初期値は、図2(b)に示すように、0x00000000であり、現在のハードPCRX値が0x00000000か否かを判定する。
【００６４】
ハードPCRX値が初期値に等しい場合、アプリローダ実行部104は、App1のハッシュ値をハードPCRXに設定するエクステンド要求をソフトTPM107に出力する(S805)。言い換えれば、情報処理装置11の起動後、初めてApp1を実行する場合、処理はステップS805に進む。その後、アプリローダ実行部104は、App1をRAMのワークエリアにロードしてApp1を起動する(S806)。起動されたApp1は、後述する方法によりソフトTPM107に秘密情報の保護および保護データの保護解除を要求する(S807)。
【００６５】
他方、ステップS804の判定において、現在のハードPCRX値が初期値ではない場合、処理をステップS808へ進める。つまり、情報処理装置11の起動後、二回目以降のApp1の起動の場合、処理はステップS808に進む。そして、アプリローダ実行部104は、現在のハードPCRX値とApp1のハッシュ値を比較して両者が等しいか否かを判定する(S808)。現在のハードPCRX値とApp1のハッシュ値が等しい場合、アプリローダ実行部104は、ハードPCRXに対するエクステンド要求を発行せずにApp1を起動する(S806)。
【００６６】
一方、ステップS808の判定において、現在のハードPCRX値とApp1のハッシュ値が異なる場合、異なるアプリケーションによる同一PCRの利用などが考えられ、アプリローダ実行部104は異常処理を行う(S809)。異常処理としては、例えば、App1の実行に関してPCRの利用に不具合がある旨のエラーメッセージをユーザに通知してもよいし、エラー状態をログに記録してもよい。また、異常処理の後、App1を起動してもよいし、App1の起動を中止してもよい。
【００６７】
［ソフトTPM］
図7のブロック図によりソフトTPM107の構成例を示す。
【００６８】
ハードTPM制御部904は、エクステンド要求、シール要求、アンシール要求を受信すると、要求元のアプリケーションのPCR番号をPCR番号解決部902に問い合わせる。
【００６９】
PCR番号解決部902は、要求元のアプリケーションのPCR番号を取得するためにPCR番号解決要求をレジスタ番号管理部105に送信し、返されたPCR番号をハードTPM制御部904に出力する。
【００７０】
ハードTPM制御部904は、受信した要求が指定するPCR番号をPCR番号解決部902から取得したPCR番号に書き換えて、当該要求をハードTPM102に転送する。そして、ハードTPM102から返されるデータ（秘密情報や保護データを含む）を要求元のアプリケーションに返す。
【００７１】
［アプリ実行部］
●保護要求処理
図8のフローチャートによりアプリケーションが発行する秘密情報の保護要求処理を説明する。なお、図8に示す処理は、図6のステップS807の処理に相当する。また、保護要求とは、秘密情報のシール要求および保護データのアンシール要求に相当する。
【００７２】
例えばアプリケーションApp1は、秘密情報がTPMによって保護済みか否かを判定し、判定結果に応じて秘密情報のシール要求または保護データのアンシール要求を切り替える。
【００７３】
つまり、図8(a)において、App1を実行するアプリ実行部106は、秘密情報の利用時に秘密情報がTPMによって保護されているか否かを判定する(S1001)。秘密情報が保護されていない場合、アプリ実行部106は、後述する方法により秘密情報のシール要求をソフトTPM107に送信する(S1002)。そして、App1は、保護された秘密情報を取得する。
【００７４】
また、秘密情報が保護済みであれば、アプリ実行部106は、後述する方法により、保護データのアンシール要求をソフトTPM107に送信する(S1003)。そして、App1は、保護が解除された秘密情報を利用してデータ処理を行う。このように、図8(a)に示す処理は、App1が保護された秘密情報を既にもつ場合に有効である。
【００７５】
また、例えばアプリケーションApp1の実行が、アプリケーションのインストールに関する処理か否かに応じて、秘密情報のシール要求または保護データのアンシール要求を切り替えることができる。
【００７６】
つまり、図8(b)において、アプリ実行部106は、実行中の処理がアプリケーションをインストールする処理か否かを判定する(S1011)。インストール処理であれば、アプリ実行部106は、後述する方法により秘密情報のシール要求をソフトTPM107に送信する(S1012)。そして、App1は、保護された秘密情報を取得する。
【００７７】
また、インストール処理ではない場合、アプリ実行部106は、後述する方法により、保護データのアンシール要求をソフトTPM107に送信する(S1013)。そして、App1は、保護が解除された秘密情報を利用してデータ処理を行う。
【００７８】
このように、図8(b)に示す処理によれば、アプリケーションの秘密情報がインストール時に保護され、秘密情報をより安全に管理することが可能になる。あるいは、図8(b)に示す処理をApp1のアップデート（例えばバージョンアップ時のインストール）時に実行すれば、アップデート後のApp1のハッシュ値によって秘密情報を適切に保護することができる。言い換えれば、アップデート時における秘密情報の移行をよりスムーズに行うことができる。なお、アップデートの場合、ステップS1012の処理は、アップデート前のApp1のハッシュ値を使って保護されている秘密情報を、アップデート後のApp1のハッシュ値を使って保護する処理になる。
【００７９】
また、ユーザの要求に応じて秘密情報のシール要求またはアンシール要求を切り替えることができる。
【００８０】
つまり、図8(c)において、アプリ実行部106は、ユーザの要求を判定する(S1021)。例えば、ユーザが例えば平文の秘密情報の保護を要求する場合、アプリ実行部106は、後述する方法により秘密情報のシール要求をソフトTPM107に送信する(S1022)。そして、ユーザは、保護された秘密情報を取得する。
【００８１】
また、ユーザが保護データの保護解除を要求する場合、後述する方法により、保護データのアンシール要求をソフトTPM107に送信する(S1023)。そして、ユーザは、保護が解除された秘密情報を利用してデータ処理を行う。このように、図8(c)に示す処理は、ユーザの要求に従い、任意のタイミングで秘密情報の保護および保護データの保護解除を行うことができる。
【００８２】
なお、ステップS1002、S1012、S1022において、保護すべき暗号鍵などの秘密情報を生成してもよい。また、図8(a)(b)(c)に示す処理は、独立に実装されてもよいし、組み合わせて実装されてもよい。例えば、アプリケーションのインストール時は図8(b)の処理により秘密情報を保護し、インストール後、当該アプリケーションが起動された場合は図8(a)(b)の処理を行うことができる。
【００８３】
●秘密情報の保護処理
図9のフローチャートにより秘密情報の保護処理を説明する。なお、図9に示す処理は、図8のステップS1002、S1012、S1022の処理に相当する。
【００８４】
アプリケーションApp1を実行するアプリ実行部106は、PCRNを指定する秘密情報のシール要求をソフトTPM107に送信する(S1101)。ここで指定するPCR番号Nは、例えば、App1の実装時に開発者が決定したPCR番号であり、ステップS804においてアプリローダ実行部104がApp1について取得したPCR番号Xと同値である必要はない。言い換えれば、App1は、ステップS805においてApp1のハッシュ値が登録されたハードPCRXを認識する必要はなく、指定するPCR番号にかかわらず所望するPCRを利用することができる。
【００８５】
次に、ソフトTPM107は、PCR番号解決部902によってシール要求元のApp1に対応するPCR番号Xを解決する(S1102)。そして、ハードTPM制御部904によってアプリ実行部106から受信したシール要求のPCR番号NをPCR番号Xに置き換える(S1103)。つまり、ソフトTPM107は、App1によってPCR番号Nが指定されたシール要求を受信するが、当該PCR番号をPCR番号解決部902が解決したPCR番号Xに置換する。これにより、App1とApp2が同じPCR番号Nを指定して秘密情報のシール要求を行ったとしても、App1とApp2には異なるPCR番号が割り当てられ、秘密情報を適切に保護することができる。
【００８６】
次に、ソフトTPM107は、ハードTPM制御部904によって、PCR番号を書き換えたシール要求をハードTPM102に転送する。従って、秘密情報は、ハードTPM102により、ハードPCRXを条件としてハードTPM102の公開鍵により暗号化（保護）される(S1104)。そして、アプリ実行部106（App1）は、保護された秘密情報をHDDなどのメモリや半導体メモリカードなど記憶媒体に保存する(S1105)。
【００８７】
●秘密情報の保護解除
図10のフローチャートにより秘密情報の保護解除処理を説明する。なお、図10に示す処理は、図8のステップS1003、S1013、S1023の処理に相当する。
【００８８】
アプリケーションApp1を実行するアプリ実行部106は、保護データのアンシール要求をソフトTPM107に送信する(S1301)。なお、保護データには、保護時に指定されたPCR番号Xと保護時のPCRX値が含まれる。
【００８９】
次に、ソフトTPM107は、PCR番号解決部902によってアンシール要求元のApp1に対応するPCR番号Xを解決し(S1302)、PCR番号Xが保護データが含むPCR番号に一致するか否かを判定する(S1303)。PCR番号Xと保護データが含むPCR番号が異なる場合、ソフトTPM107は、不正なアプリケーションからのアンシール要求と判断して保護解除を中止する(S1304)。これにより、App1が動作中に、別のアプリケーションがApp1に割り当てられたPCRを使用して保護データの保護を解除する不正な処理を防ぐことができる。
【００９０】
一方、ステップS1303の判定において、PCR番号Xが保護データが含むPCR番号に一致する場合、ソフトTPM107は、ハードTPM制御部904を介して、ハードTPM102に保護データの保護を解除させる(S1305)。つまり、保護データは、ハードPCRXを条件として、ハードTPM102の秘密鍵によって保護解除（復号）される。
【００９１】
このように、ハードTPM107は、保護データに条件として設定されたPCR番号とApp1に割り当てられたPCR番号が一致する場合のみ当該保護データの保護解除を行う。また、PCR番号が一致していても、ハードTPM102における保護解除時に、ハードPCRX値と保護データが含むPCR値が一致しない場合は保護解除は中止される。
【００９２】
このように、ソフトTPM107は、レジスタ番号管理部105が管理するアプリケーションごとのPCR番号を解決し、ハードTPM102が実行する処理に利用されるPCR番号とする。これにより、複数の異なるアプリケーションが同一のPCR番号を利用するように実装されている場合も、各アプリケーションはTPMにより秘密情報を適切に保護することができる。
【実施例２】
【００９３】
以下、本発明にかかる実施例2の情報処理を説明する。なお、実施例2において、実施例1と略同様の構成については、同一符号を付して、その詳細説明を省略する。
【００９４】
実施例1では、複数の異なるアプリケーションが同一のPCR番号を使うように実装された場合に、PCRの利用に関する衝突を回避する方法を説明した。しかし、一般的なセキュリティチップのPCR数は例えば16個などに限られている。このため、秘密情報の保護にハードTPM102を利用するアプリケーションが増加して未使用のPCRがなくなると、ハードTPM102によって秘密情報を保護することが困難になる。実施例2では、ソフトTPM107により仮想的なPCR（仮想PCR）を使用して、この問題を解決する方法を説明する。
【００９５】
［処理手順］
図11により実施例2の情報処理装置11におけるデータ保護処理を説明する。また、図12によりハードTPM102とソフトTPM107のPCR値の変化の一例を示す。図12(a)は情報処理装置11のブート時のハードTPM102とソフトTPM107のPCR値を示し、情報処理装置11のブート時は初期値として0x00000000が設定される。
【００９６】
ブート処理部103は、システム起動処理としてトラステッドブート処理を実行する(S211)。ステップS211において、ブート処理部103のエクステンド要求により、BIOSやブートローダなどのシステムのハッシュ値がハードPCRに設定され、ハードPCR値は図12(b)に示す状態（一例）になる。つまり、PCR1〜PCR4にそれぞれBIOS、ブートローダ、カーネル、ソフトTPM107のハッシュ値が設定される。また、この時点で、仮想PCR値は初期値のままである。
【００９７】
次に、ソフトTPM107は、ハードTPM102によって保護されたソフトTPM107の鍵ペアのアンシール要求をハードTPM102に送信する(S212)。
【００９８】
図13によりハードTPM102によって保護されたソフトTPM107の鍵ペアのデータ構造例を示す。図13において、保護済みの鍵ペアである保護データ401はハードTPM102の公開鍵によって暗号化されたソフトTPM107の鍵ペアであり、データ402は鍵ペアの保護時に指定されたPCR番号とその時点の当該PCRのレジスタ値を表す。つまり、ハードTPM102は、保護データ401のアンシール要求時点で、ハードPCR1値〜ハードPCR4値がデータ402の各値に一致すれば、保護データ401の保護を解除する。
【００９９】
ハードTPM102は、保護された鍵ペア401が含むPCR値と、現在のハードPCR値が一致するか否かを判定し(S213)、一致しない場合は鍵ペアの保護解除を中止し、情報処理装置11のシステムを制限する(S214)。また、ステップ213において、保護された鍵ペア401が含むPCR値と、現在のハードPCR値が一致する場合、ハードTPM102は鍵ペア401の保護を解除する(S215)。
【０１００】
その後、ユーザ指示に従い、情報処理装置11はアプリケーションを起動し、ソフトTPM107またはハードTPM102によるデータ保護が実行される(S216)。つまり、アプリケーションのハッシュ値が後述する方法によってハードPCRまたは仮想PCRに登録され、PCRとその値によってアプリケーションに関するデータ保護または保護解除が行われる。
【０１０１】
図12(c)は複数のアプリケーションApp1、App2、App3が起動された後のハードPCR値および仮想PCR値の一例を示す。つまり、エクステンド要求により、仮想PCR101、仮想PCR102、仮想PCR103にそれぞれApp1、App2、App3のハッシュ値が設定される。また、ハードPCR5には、エクステンド要求により、それら複数のアプリケーションAppsのハッシュ値から生成されたハッシュ値が設定される。なお、前述したように、ハードPCR5のハッシュ値は、それらアプリケーションの起動順によって変化する。
【０１０２】
［ソフトTPM］
図14のブロック図によりソフトTPM107の構成例を示す。なお、図7に示す実施例1のソフトTPM107の構成と異なる部分を主に説明する。
【０１０３】
TPM切替部901は、エクステンド要求、シール要求、アンシール要求が指定するPCR番号に基づき、それら要求をソフトTPM107が処理するかハードTPM102に処理させるかを判定する。例えば、アプリローダ実行部104のエクステンド要求に指定されたPCR番号がハードPCRの範囲（例えば1番から16番）であれば、当該要求に含まれるハッシュ値をハードPCRに登録する。また、PCR番号がハードPCRの範囲外（例えば17番以降）であれば、当該要求に含まれるハッシュ値を仮想PCRに登録する。
【０１０４】
また、アプリケーションが共通に利用する所定のPCR（例えばハードPCR10）が指定された場合、ハードPCR10を指定するエクステンド要求を発行し、PCR番号解決部902が解決したPCRXを指定するエクステンド要求を発行してもよい。これにより、アプリケーションが共有するハードPCR10には、起動されたアプリケーションのハッシュ値を連結したハッシュ値が登録され、PCRXには個々のアプリケーションのハッシュ値が登録される。
【０１０５】
また、アプリ実行部106のシール要求に指定されたPCR番号が仮想PCRを示せば、ソフトTPM107の暗号処理部905によって秘密情報を保護する。勿論、アンシール要求された保護データが含むPCR番号が仮想PCRを示せば、ソフトTPM107の暗号処理部905によって保護データの保護解除を行う。一方、シール要求、アンシール要求をソフトTPM107が処理しない場合、その要求は、ハードTPM制御部904に転送される。
【０１０６】
仮想PCR記憶部903は、例えば、図12に示すようにPCR100〜PCR999をテーブル（仮想PCRテーブル）として記憶する。なお、仮想PCRテーブルは、OSなどによって安全に管理されることが好ましい。
【０１０７】
暗号処理部905は、TPM切替部901から入力されるシール要求、アンシール要求を仮想PCRを用いて処理する。つまり、シール要求については、秘密情報を指定された仮想PCRと対応付けて鍵ペア記憶部906が管理する公開鍵で暗号化（保護）した保護データをシール要求元に返す。一方、アンシール要求については、保護データが含むPCR番号とその値が仮想PCR番号とその値に一致するか否かを判定する。そして、一致する場合は、保護データを鍵ペア記憶部906が管理する秘密鍵で復号（保護解除）した秘密情報をアンシール要求元に返す。勿論、一致が得られない場合は保護データの保護解除を中止する。
【０１０８】
鍵ペア記憶部906は、ハードTPM102が復号したソフトTPM107の鍵ペア（公開鍵と秘密鍵）を記憶する。鍵ペア記憶部906は、OSなどによって安全に保護されることが望ましい。
【０１０９】
なお、上記では、暗号処理部905がRSA暗号アルゴリズムに代表される非対称鍵型の暗号アルゴリズムを利用するとして説明を行ったが、AESのような対称鍵型の暗号アルゴリズムを用いることもできる。その場合、鍵ペア記憶部906は秘密鍵と公開鍵のペアではなく、一つの秘密鍵を記憶すればよい。
【０１１０】
［アプリ実行部］
●秘密情報の保護処理
図15のフローチャートにより秘密情報の保護処理を説明する。なお、図15に示す処理は、図8のステップS1002、S1012、S1022の処理に相当する。また、ステップS1101〜S1103、S1105の処理は、図9に示す処理と同様であり、その詳細説明を省略する。
【０１１１】
ソフトTPM107は、PCR番号解決部902によって解決したPCR番号Xは仮想PCRに対応するか否かを判定する(S1111)。例えば、PCR番号XがハードPCRの数よりも大きければ、PCRXが仮想PCRと判定する。
【０１１２】
PCRXが仮想PCRの場合、ソフトTPM107により、秘密情報は仮想PCRXに対応付けられて鍵ペア記憶部906の公開鍵を用いる暗号処理部905によって暗号化（保護）される(S1112)。一方、PCRXがハードPCRの場合、ソフトTPM107は、ハードTPM制御部904を介してハードTPM102にシール要求を処理させる(S1113)。つまり、秘密情報はハードPCRXに対応付けられてハードTPM102の公開鍵によって暗号化（保護）される(S1113)。
【０１１３】
なお、秘密情報は、一つのPCRに対応付けて保護するだけでなく、複数のPCRに対応付けて保護することが可能である。少なくとも一つのPCRが仮想PCRの場合、ソフトTPM107は、暗号処理部905によって秘密情報を保護する。その際、必要があれば、ハードPCR値を当該PCRから読み込んで保護データに組み込む。
【０１１４】
図16により保護データのデータ構造の一例を説明する。図16(a)は一つのPCRを条件として秘密情報を保護した場合のデータ構造例を示し、保護データ1201は暗号化された秘密情報であり、データ1202はPCR番号とその値を示す。保護データ1201のアンシール要求に対して、ソフトTPM107は、データ1202のPCR100値と、現在の仮想PCR100値が一致する場合にのみ保護データ1201の保護を解除する。
【０１１５】
図16(b)は複数のPCRを条件として秘密情報を保護した場合のデータ構造の一例を示し、保護データ1203は暗号化された秘密情報であり、データ1204は複数のPCR番号とそれらの値を示す。保護データ1203のアンシール要求に対して、ソフトTPM107は、データ1204のPCR100値、PCR101値と、現在の仮想PCR100値、仮想PCR101値が一致する場合にのみ保護データ1203の保護を解除する。
【０１１６】
●秘密情報の保護解除
図17のフローチャートにより秘密情報の保護解除処理を説明する。なお、図17に示す処理は、図8のステップS1003、S1013、S1023の処理に相当する。また、ステップS1301〜S1304の処理は、図10に示す処理と同様であり、その詳細説明を省略する。
【０１１７】
ステップS1303の判定において、PCR番号Xが保護データが含むPCR番号に一致する場合、ソフトTPM107は、PCRXが仮想PCRか否かを判定する(S1311)。
【０１１８】
PCRXが仮想PCRの場合、ソフトTPM107により、保護データは、仮想PCRXを条件として、鍵ペア記憶部906の秘密鍵を用いる暗号処理部905によって復号（保護解除）される(S1312)。
【０１１９】
一方、PCRXがハードPCRの場合、ソフトTPM107は、ハードTPM制御部904を介して、ハードTPM102に保護データの保護を解除させる。つまり、保護データは、ハードPCRXを条件として、ハードTPM102の秘密鍵によって復号（保護解除）される(S1313)。
【０１２０】
また、図16(b)に示す保護データ1203において、複数のPCRにハードPCRが含まれる場合、ソフトTPM107は、ハードPCR値を読み込んで、判定(S1311)および保護解除(S1312)を行う。ただし、複数のPCRすべてがハードPCRの場合は、ハードTPM102が保護解除(S1313)を行う。
【０１２１】
このように、起動されたアプリケーションの数に対してハードPCRの数が不足する場合も、秘密情報の保護および保護データの保護解除を適切に行うことができる。
【０１２２】
［その他の実施例］
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステムあるいは装置のコンピュータ（又はCPUやMPU等）がプログラムを読み出して実行する処理である。
【図１】
2014048725.tif 000003
【図２】
2014048725.tif 000004
【図３】
2014048725.tif 000005
【図４】
2014048725.tif 000006
【図５】
2014048725.tif 000007
【図６】
2014048725.tif 000008
【図７】
2014048725.tif 000009
【図８】
2014048725.tif 000010
【図９】
2014048725.tif 000011
【図１０】
2014048725.tif 000012
【図１１】
2014048725.tif 000013
【図１２】
2014048725.tif 000014
【図１３】
2014048725.tif 000015
【図１４】
2014048725.tif 000016
【図１５】
2014048725.tif 000017
【図１６】
2014048725.tif 000018
【図１７】
2014048725.tif 000019