(57)【要約】プログラムデータが更新された場合でも、更新したプログラムデータを元に戻すことなく、更新前の構成でシールされたデータの復号化を可能にする。情報端末であり、ＣＰＵ１０１が実行するプログラムデータの更新を証明する更新証明書を格納する更新証明書格納部１０２と、ＣＰＵ１０１がプログラムデータを実行する際に、プログラムデータの更新証明書が示す更新後のプログラムデータのダイジェストと実行されるプログラムデータのダイジェストが、同一のものであるか否かを検証し、同一である場合に更新証明書の中の更新前のプログラムデータのダイジェストを選択する選択部１０３と、を備え、ＣＰＵ１０１は、更新後のプログラムデータを実行し、選択部１０３の要求により、更新前のプログラムデータを実行した場合のプログラムデータのダイジェストの累積値を保持するセキュリティデバイスを備える。
2008081801.tif 000002
【特許請求の範囲】
【請求項１】
プログラムを実行する情報端末であって、
旧プログラムの特徴を示す旧特徴値と前記旧プログラムの更新版である新プログラムの特徴を示す新特徴値との組を含む更新証明書を取得する更新証明書取得手段と、
データを、前記データを使用していたプログラムである過去プログラムの特徴を示す過去特徴値と対応付けて保持している保持手段と、
前記新特徴値を用いて、前記情報端末で実行中のプログラムである現プログラムが前記新プログラムと一致するか否かを判定する判定手段と、
前記判定手段により一致すると判定された場合に、前記旧特徴値と前記過去特徴値とに基づいて前記データの使用可否を判断し、使用可と判断された場合に、前記実行中の現プログラムに対し前記データの使用を許可する許可手段と
を備えることを特徴とする情報端末。
【請求項２】
前記新プログラムのダイジェストに係る値は、前記新プログラムのダイジェストであり、
前記判定手段は、
前記現プログラムのダイジェストを生成するダイジェスト生成部と、
前記現プログラムのダイジェストと前記新プログラムのダイジェストとが一致する場合に、前記現プログラムが前記新プログラムと一致すると決定する決定部と
を含むことを特徴とする請求項１記載の情報端末。
【請求項３】
前記旧特徴値は、前記旧プログラムのダイジェストであり、
前記過去特徴値は、前記過去プログラムのダイジェストであり、
前記データは、前記過去プログラムのダイジェストに係る値である使用条件値と対応付けられており、
前記ダイジェスト生成部は、更に、前記現プログラムが実行されるより前に所定の実行順序に従い実行された１以上のプログラムそれぞれのダイジェストを生成し、
前記許可手段は、
前記１以上のプログラムそれぞれのダイジェストと、前記更新証明書に含まれる前記旧プログラムのダイジェストとを累積演算して更新前累積値を生成する累積値生成部と、
前記使用条件値と前記更新前累積値とが一致するか否かを判定する累積値判定部と、
前記累積値判定部により一致すると判定された場合に、前記現プログラムに対し前記データの使用を許可する使用許可部と
を備えることを特徴とする請求項２記載の情報端末。
【請求項４】
前記累積値生成部は、前記判定手段により一致すると判定された場合に前記更新前累積値を生成し、
前記判定手段により一致しないと判定された場合に、前記現プログラムのダイジェストと、前記１以上のプログラムそれぞれのダイジェストとを累積演算して現累積値を生成し、
前記累積値判定部は、
前記判定手段により一致すると判定された場合に、前記使用条件値と前記更新前累積値とが一致するか否かを判定し、
前記判定手段により一致しないと判定された場合に、前記使用条件値と前記現累積値とが一致するか否かを判定し、
前記使用許可部は、前記累積値判定部により一致すると判定された場合に、前記現プログラムに対し前記データを使用許可する
ことを特徴とする請求項３記載の情報端末。
【請求項５】
前記累積値生成部は、更に、前記更新前累積値、および、前記現プログラムのダイジェストと前記１以上のプログラムそれぞれのダイジェストとを累積演算した現累積値を生成し、
前記使用許可部は、前記使用条件値が、前記現累積値又は前記更新前累積値と一致するか否かを判定し、前記現累積値又は前記更新前累積値のいずれかと一致すると判定した場合に、実行中の前記現プログラムに対し前記データの使用を許可する
ことを特徴とする請求項３記載の情報端末。
【請求項６】
前記累積値生成部は、更に、
前記１以上のプログラムそれぞれのダイジェストと、前記現プログラムのダイジェストとを累積演算して現累積値を生成し、
前記許可手段は、更に、
前記データを使用可と判断した場合に、前記データに対応付けられている前記使用条件値の値を前記現累積値に更新する
ことを特徴とする請求項３記載の情報端末。
【請求項７】
前記情報端末において、前記データと前記使用条件値とは暗号化された後に保持されており、
前記許可手段は、更に、
前記使用許可部による判定の前に、前記データと前記使用条件値とを復号する復号部と、
前記現プログラムによる前記データの使用が終了した後に、前記データと前記使用条件値とを暗号化する暗号化部と
を備えることを特徴とする請求項３記載の情報端末。
【請求項８】
前記新特徴値は、前記情報端末において前記現プログラムより前に所定の実行順序に従い実行される１以上のプログラムそれぞれのダイジェストと、前記新プログラムのダイジェストとを累積演算した結果である更新後累積値であり、
前記判定手段は、
前記現プログラムが実行されるより前に所定の実行順序に従い実行された１以上のプログラムそれぞれのダイジェストと、前記現プログラムのダイジェストとを生成するダイジェスト生成部と、
前記ダイジェスト生成部により生成されたダイジェストを累積演算して現累積値を生成する累積値生成部と、
前記更新後累積値と前記現累積値とが一致する場合に、前記現プログラムが前記新プログラムと一致すると決定する決定部と
を含むことを特徴とする請求項１記載の情報端末。
【請求項９】
前記旧特徴値は、前記情報端末において前記現プログラムより前に所定の実行順序に従い実行される１以上のプログラムそれぞれのダイジェストと、前記旧プログラムのダイジェストとを累積演算した結果である更新前累積値であり、
前記過去特徴値は、前記情報端末において前記現プログラムより前に所定の実行順序に従い実行される１以上のプログラムそれぞれのダイジェストと、前記過去プログラムのダイジェストとを累積演算した結果である過去累積値であり、
前記データは前記過去特徴値と同一の値である使用条件値と対応付けられており、
前記許可手段は、
前記判定手段により一致すると判定された場合に、前記使用条件値と、前記更新前累積値とが一致するか否かを判定する累積値判定部と、
前記累積値判定部により一致すると判定された場合に、実行中の前記現プログラムに対し、前記データの使用を許可する使用許可部と
を備えることを特徴とする請求項８記載の情報端末。
【請求項１０】
前記許可手段は、更に、
前記使用許可部によりデータの使用が許可された場合に、前記データに対応付けられている前記使用条件値の値を、前記累積値生成部により生成された前記現累積値に更新する再シール部
を備えることを特徴とする請求項９記載の情報端末。
【請求項１１】
前記情報端末は、プログラムの特徴を示す特徴値である認証値に基づきサービスの提供可否を判定するサービス提供装置と共に用いられ、
前記サービス提供装置は、
プログラムの特徴を示す特徴値である照合値を記憶する記憶手段と、
前記情報端末から認証値を受信する受信手段と、
前記認証値と前記照合値とが一致する場合に、前記情報端末にサービスを提供する提供手段とを備え、
前記情報端末は、更に、
前記サービス提供装置に対し、前記現プログラムの特徴を示す認証値を送信し、前記認証値の送信に対する応答として前記サービスの提供が成されなかった場合に、前記旧プログラムの特徴を示す特徴値である認証値を送信する送信手段
を備えることを特徴とする請求項１記載の情報端末。
【請求項１２】
前記更新証明書取得手段は、
前記新プログラムを更新するための更新用プログラムを取得するプログラム取得部と、
前記更新用プログラムの特徴を示す更新用特徴値を生成する更新用ダイジェスト生成部と、
前記更新証明書に含まれる旧特徴値を、前記更新証明書に含まれる新特徴値で書き換え、前記更新証明書に含まれる新特徴値を、前記ダイジェスト生成部により生成された更新用特徴値で書き換える更新証明書更新部と
を含むことを特徴とする請求項１記載の情報端末。
【請求項１３】
プログラムを実行する情報端末に用いられるセキュリティデバイスであって、
前記情報端末は、
旧プログラムのダイジェストと、前記旧プログラムの更新版である新プログラムのダイジェストとの組を含む更新証明書を取得する更新証明書取得手段と、
データを、前記データを使用していたプログラムである過去プログラムのダイジェストである使用条件値と対応付けて保持している保持手段と、
実行中の現プログラムが実行されるより前に所定の実行順序に従い実行された１以上のプログラムそれぞれのダイジェストと、前記現プログラムのダイジェストとを生成するダイジェスト生成手段と、
前記現プログラムのダイジェストと前記新プログラムのダイジェストとが一致する場合に、前記現プログラムが前記新プログラムと一致すると決定する決定手段と
を備え、
前記セキュリティデバイスは、
前記判定手段により一致すると判定された場合に、前記１以上のプログラムそれぞれのダイジェストと、前記更新証明書に含まれる前記旧プログラムのダイジェストとを累積演算して累積値を生成する累積値生成部と、
前記使用条件値と、前記累積値生成部により生成された累積値とが一致するか否かを判定する累積値判定部と、
前記累積値判定部により一致すると判定された場合に、前記現プログラムに対し前記データの使用を許可する使用許可部と
を備えることを特徴とするセキュリティデバイス。
【請求項１４】
プログラムを実行する情報端末に用いられるセキュリティデバイスであって、
前記情報端末は、
実行中のプログラムである現プログラムより前に所定の実行順序に従い実行される１以上のプログラムそれぞれのダイジェストと旧プログラムのダイジェストとを累積演算した結果である更新前累積値と、前記現プログラム前に所定の実行順序に従い実行される１以上のプログラムそれぞれのダイジェストと前記旧プログラムの更新版である新プログラムのダイジェストとを累積演算した結果である更新後累積値との組を含む更新証明書を取得する更新証明書取得手段と、
データを、前記データを使用していたプログラムである過去プログラムのダイジェストに係る情報である使用条件値と対応付けて保持している保持手段と、
前記現プログラムが実行されるより前に所定の実行順序に従い実行された１以上のプログラムそれぞれのダイジェストと、前記現プログラムのダイジェストとを生成するダイジェスト生成手段と、
前記セキュリティデバイスから、現累積値を取得する現累積値取得手段と、
前記現累積値と前記更新後累積値とが一致する場合に、前記現プログラムが前記新プログラムと一致すると決定する決定手段とを備え、
前記セキュリティデバイスは、
前記ダイジェスト生成部により生成されたダイジェストを累積演算して前記現累積値を生成し、前記情報端末に出力する累積値生成手段と、
前記決定手段により一致すると決定された場合に、前記使用条件値と、前記更新前累積値とが一致するか否かを判定する累積値判定手段と、
前記累積値判定部により一致すると判定された場合に、実行中の前記現プログラムに対し、前記データの使用を許可する使用許可手段と
を備えることを特徴とするセキュリティデバイス。
【請求項１５】
プログラムを実行する情報端末に用いられるデータ保護方法であって、
旧プログラムの特徴を示す旧特徴値と前記旧プログラムの更新版である新プログラムの特徴を示す新特徴値との組を含む更新証明書を取得する更新証明書取得ステップと、
データを、前記データを使用していたプログラムである過去プログラムの特徴を示す過去特徴値と対応付けて保持している保持ステップと、
前記新特徴値を用いて、前記情報端末で実行中のプログラムである現プログラムが前記新プログラムと一致するか否かを判定する判定ステップと、
前記判定手段により一致すると判定された場合に、前記旧特徴値と前記過去特徴値とに基づいて前記データの使用可否を判断し、使用可と判断された場合に、前記実行中の現プログラムに対し前記データの使用を許可する許可ステップと
を備えることを特徴とするデータ保護方法。
【請求項１６】
プログラムを実行する情報端末に用いられるデータ保護プログラムであって、
旧プログラムの特徴を示す旧特徴値と前記旧プログラムの更新版である新プログラムの特徴を示す新特徴値との組を含む更新証明書を取得する更新証明書取得ステップと、
データを、前記データを使用していたプログラムである過去プログラムの特徴を示す過去特徴値と対応付けて保持している保持ステップと、
前記新特徴値を用いて、前記情報端末で実行中のプログラムである現プログラムが前記新プログラムと一致するか否かを判定する判定ステップと、
前記判定手段により一致すると判定された場合に、前記旧特徴値と前記過去特徴値とに基づいて前記データの使用可否を判断し、使用可と判断された場合に、前記実行中の現プログラムに対し前記データの使用を許可する許可ステップと
を含むことを特徴とするデータ保護プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パーソナルコンピュータや携帯電話機などの情報通信機器、インターネットアクセス機能を備えたテレビ受信装置などの情報家電機器等の情報端末と、その情報端末に内蔵されるセキュリティデバイスに関し、特に、情報端末において実行されているプログラムデータの認証処理や、情報端末において実行されるプログラムデータにバインドして暗号化されたデータの復号化処理を、プログラムデータが更新された場合においても可能にするものである。
【背景技術】
【０００２】
近年、ネットワークを介して提供されるサービスは、音楽や映像といった著作物の提供や、企業が保有する機密情報の閲覧、オンラインバンキングなど多岐に渡り、かつ、その中で扱われる情報の経済的価値も高いものになってきている。多岐に渡るサービスに対応するため、パーソナルコンピュータ、携帯端末、携帯電話、デジタル家電などの情報端末には、多くのクライアントソフトウェア（プログラムデータ）がインストールされる。また、それらのプログラムデータにはサービスを受ける機能そのものの他に、高価な情報を保護するための機能が実装されている。【０００３】
こうしたサービスで得られる価値が高まるにつれ、情報端末上のプログラムデータに不正な変更を加えるなどの方法でソフトウェアが課している制限を迂回されることによる被害が深刻化している。このため、サービスを提供しようとしているパーソナルコンピュータのクライアントソフトウェアおよびそれが動作するオペレーティングシステムを含んだ実行環境に、不正な変更が加えられていないかどうかを検証する必要性が増している。【０００４】
そうした必要性に応えるため、ＴＣＧ(Trusted Computing Group)などにより、パーソナルコンピュータにおいて実行されているプログラムデータの情報を正確に伝える技術が提案されている。
図１６は、ＴＣＧなどによって提案されている技術に基づき、パーソナルコンピュータ１６００が、保持するデータを暗号化して保護し、サービス提供サーバ１６１０がパーソナルコンピュータ１６００上で実行されているプログラムデータを認証して情報サービスを提供するシステムの一例を示している。パーソナルコンピュータ１６００には、ＴＰＭ(Trusted Platform Module)１６０２と呼ばれる耐タンパモジュールが実装されている。【０００５】
パーソナルコンピュータ１６００のＣＰＵ１６０１は、ＢＩＯＳ１６０５、ＯＳ１６０６、アプリケーション１６０７、およびプログラムデータのコードを実行する際に、それぞれのハッシュを計算し、計算したハッシュをＴＰＭ１６０２に送信する。ハッシュを受信したＴＰＭ１６０２は、ＰＣＲ（Platform Configuration Register）１６０４に既に格納されているハッシュと受信したハッシュとを連結し、その連結したデータに対して更にハッシュ演算を実行してその結果をＰＣＲ１６０４に格納する。ＰＣＲ１６０４には、ＣＰＵ１６０１が実行するプログラムデータを累積した情報が格納されることになるので、ＰＣＲ１６０４の値は、パーソナルコンピュータ１６００上でどのプログラムデータが実行されているかということを示す。【０００６】
パーソナルコンピュータ１６００で、データを秘匿化して安全に保持する場合には、ＴＰＭ１６０２は、データをＴＰＭ１６０２のＰＣＲ１６０４の値にバインドして暗号化してハードディスク１６０３に保存する。具体的には、ＴＰＭ１６０２は、そのデータをパーソナルコンピュータ１６００で閲覧または処理する場合にパーソナルコンピュータ１６００のＣＰＵ１６０１が実行していることが期待される正しいプログラムデータを実際にＣＰＵ１６０１が実行している場合のＰＣＲの値を復号化の際の照合値として含める形式でデータを暗号化する。暗号化は公開鍵暗号の公開鍵で暗号化され、その公開鍵に対応する秘密鍵はＴＰＭ１６０２が管理する。【０００７】
このようにデータをＴＰＭ１６０２のＰＣＲ１６０４の値にバインドして暗号化することをシール（Seal）と呼ぶ。逆に、シールされたデータ１６０８を復号化することをアンシール（Unseal）と呼ぶ。
シールされたデータ１６０８を復号化する場合、ＴＰＭ１６０２は、まず、暗号化に用いた公開鍵に対応する秘密鍵を用いてシールされたデータ１６０８の暗号を復号化する。次に、ＴＰＭ１６０２は、復号化したデータに含まれる照合値とＰＣＲ１６０４に格納されている値（ＰＣＲ値）とを照合する。照合の結果、一致した場合、ＴＰＭ１６０２は、パーソナルコンピュータ１６００上で正しいプログラムデータが実行されていることを認証して、復号化したデータをＴＰＭ１６０２からＣＰＵ１６０１へ出力する。照合の結果、一致しなかった場合、ＴＰＭ１６０２は、正しいプログラムデータが実行されていることを認証せず、復号化したデータをＴＰＭ１６０２から外部へ出力しない。【０００８】
また、パーソナルコンピュータ１６００がサービス提供サーバ１６１０から情報サービスの提供を受ける場合、パーソナルコンピュータ１６００は、ＰＣＲ１６０４に格納されている値（ＰＣＲ値）にＴＰＭ１６０２が電子署名を施したデータ１６２０をサービス提供サーバ１６１０へ送信する。この時のＰＣＲ１６０４に格納されている値（ＰＣＲ値１６２０ａ）に電子署名を施したデータ１６２０は、ＴＰＭ１６０２がＣＰＵ１６０１からの要求に基づいて、ＰＣＲ１６０４に格納されている値（ＰＣＲ値１６２０ａ）とサービス提供サーバ１６１０のクライアント認証部１６１１から受信したチャレンジ情報１６２０ｂ（サービス提供サーバ１６１０が生成した乱数など）とを連結したデータに対して署名を施したものである。【０００９】
サービス提供サーバ１６１０の照合値ＤＢ１６１２には、サービス提供サーバ１６１０側が期待する正しいプログラムデータをパーソナルコンピュータ１６００のＣＰＵ１６０１が実行している場合のＰＣＲの値（ＰＣＲ照合値）が格納されている。サービス提供サーバ１６１０のクライアント認証部１６１１は、まず、パーソナルコンピュータ１６００から受信したデータ１６２０に施された電子署名を検証する。次に、クライアント認証部１６１１は、データ１６２０に含まれるＰＣＲ値１６２０ａと照合値ＤＢ１６１２に格納されているＰＣＲ照合値とを照合し、さらにデータ１６２０に含まれるチャレンジ情報１６２０ｂとパーソナルコンピュータ１６００に対して送信したチャレンジ情報１６２０ｂとを照合して、それぞれが一致した場合に、パーソナルコンピュータ１６００上で正しいプログラムデータが実行されていることを認証する。そして、サービス提供サーバ１６１０のサービス提供部１６１３が、パーソナルコンピュータ１６００に情報サービスを提供する。照合の結果、一致しなかった場合は、サービス提供サーバ１６１０のサービス提供部１６１３は、パーソナルコンピュータ１６００へ情報サービスを提供しない。【００１０】
上記のＴＣＧなどによって提案されている技術は、例えば特許文献１や特許文献２において公開されている。
【特許文献１】米国特許出願公開第２００５／００２１９６８号明細書
【特許文献２】特表２００２−５３６７５７号公報
【発明の開示】
【発明が解決しようとする課題】
【００１１】
しかし、ＴＣＧなどによって提案されている技術では、プログラムデータのバージョンアップや、バグの改修、脆弱性の改善のためのアップデートによって、プログラムデータが更新された場合、ＴＰＭ１６０２は、更新前のＰＣＲ１６０４の値にバインドされてシールされたデータを復号化することができなくなってしまうという問題がある。
また、プログラムデータの更新に合わせて、サービス提供サーバ１６１０の照合値ＤＢ１６１２に格納されているＰＣＲ照合値が更新されていない場合には、パーソナルコンピュータ１６００は、情報サービスの提供を受けることが出来ないという問題がある。暫定的に、プログラムデータを更新前のものに戻すことによって、シールされたデータを復号化したり、サービス提供サーバ１６１０からの情報サービスの提供を受けたりできるようにする方法も考えられる。しかし、バグや脆弱性がある状態に戻すことになる場合があるので、安全上の問題がある。【００１２】
本発明は、かかる点に鑑みてなされたものであり、プログラムデータが更新された場合でも、更新したプログラムデータを元に戻すことなく、シールされたデータを復号化することができ、ＣＰＵが実行しているプログラムデータを認証するサービス提供サーバからの情報サービスの提供を受けることができる情報端末、およびセキュリティデバイスを提供することを目的とする。
【課題を解決するための手段】
【００１３】
上記課題を解決するために、本発明は、プログラムを実行する情報端末であって、旧プログラムの特徴を示す旧特徴値と前記旧プログラムの更新版である新プログラムの特徴を示す新特徴値との組を含む更新証明書を取得する更新証明書取得手段と、データを、前記データを使用していたプログラムである過去プログラムの特徴を示す過去特徴値と対応付けて保持している保持手段と、前記新特徴値を用いて、前記情報端末で実行中のプログラムである現プログラムが前記新プログラムと一致するか否かを判定する判定手段と、前記判定手段により一致すると判定された場合に、前記旧特徴値と前記過去特徴値とに基づいて前記データの使用可否を判断し、使用可と判断された場合に、前記実行中の現プログラムに対し前記データの使用を許可する許可手段とを備える。
【発明の効果】
【００１４】
本発明の情報端末は、上述の構成を備えることにより、プログラムの特徴値を用いて使用制限をかけるような情報端末において、データの使用制限開始時とデータの使用時との間にプログラムが更新されても、更新後のプログラムは前記データを継続して使用できる。従来は、古いプログラム（旧プログラム）と更新後プログラム（新プログラム）とで特徴値が異なることから、旧プログラムの特徴値を用いて使用制限がかけられたデータを新プログラムで使用することはできなかった。しかし、本発明によれば、更新証明書に含まれる旧プログラムの特徴値（旧特徴値）を用いて、前記データの使用制限を解除することができるので、新プログラムでもデータを継続して使用することができる。さらに、旧特徴値を用いて使用制限を解除するのは、情報端末で動作しているプログラムが新プログラムであることを確認した後である。そのため、本発明では、情報端末で動作している現プログラムが正常に更新されていることを確認した上で、使用制限を解除するよう制御することができる。【００１５】
また、前記新プログラムのダイジェストに係る値は、前記新プログラムのダイジェストであり、前記判定手段は、前記現プログラムのダイジェストを生成するダイジェスト生成部と、前記現プログラムのダイジェストと前記新プログラムのダイジェストとが一致する場合に、前記現プログラムが前記新プログラムと一致すると決定する決定部とを含んでもよい。【００１６】
この構成によれば、プログラムが正常に更新され、実行時点において改竄されていないことを確認した上で、データの使用を許可することができる。
また、前記旧特徴値は、前記旧プログラムのダイジェストであり、前記過去特徴値は、前記過去プログラムのダイジェストであり、前記データは、前記過去プログラムのダイジェストに係る値である使用条件値と対応付けられており、前記ダイジェスト生成部は、更に、前記現プログラムが実行されるより前に所定の実行順序に従い実行された１以上のプログラムそれぞれのダイジェストを生成し、前記許可手段は、前記１以上のプログラムそれぞれのダイジェストと、前記更新証明書に含まれる前記旧プログラムのダイジェストとを累積演算して更新前累積値を生成する累積値生成部と、前記使用条件値と前記更新前累積値とが一致するか否かを判定する累積値判定部と、前記累積値判定部により一致すると判定された場合に、前記現プログラムに対し前記データの使用を許可する使用許可部とを備えることとしてもよい。【００１７】
この構成によれば、ダイジェストを累積演算した累積値を用いて、使用制限を解除することができる。これにより、更新対象となったプログラムのみならず、そのプログラムの実行環境まで含めて正当性を確認した上で使用制限を解除することができる。
また、前記累積値生成部は、前記判定手段により一致すると判定された場合に前記更新前累積値を生成し、前記判定手段により一致しないと判定された場合に、前記現プログラムのダイジェストと、前記１以上のプログラムそれぞれのダイジェストとを累積演算して現累積値を生成し、前記累積値判定部は、前記判定手段により一致すると判定された場合に、前記使用条件値と前記更新前累積値とが一致するか否かを判定し、前記判定手段により一致しないと判定された場合に、前記使用条件値と前記現累積値とが一致するか否かを判定し、前記使用許可部は、前記累積値判定部により一致すると判定された場合に、前記現プログラムに対し前記データを使用許可することとしてもよい。【００１８】
また、前記累積値生成部は、更に、前記更新前累積値、および、前記現プログラムのダイジェストと前記１以上のプログラムそれぞれのダイジェストとを累積演算した現累積値を生成し、前記使用許可部は、前記使用条件値が、前記現累積値又は前記更新前累積値と一致するか否かを判定し、前記現累積値又は前記更新前累積値のいずれかと一致すると判定した場合に、実行中の前記現プログラムに対し前記データの使用を許可することとしてもよい。【００１９】
この構成によれば、情報端末において、プログラムが新プログラムに更新され、旧プログラムの旧特徴値を生成し得ない状態においても、更新証明書に含まれる旧特徴値を用いて前記使用条件値に一致する累積値を生成でき、当該累積値を用いてデータを使用許可し、更新後のプログラムにデータを継続して使用させることができる。
また、前記累積値生成部は、更に、前記１以上のプログラムそれぞれのダイジェストと、前記現プログラムのダイジェストとを累積演算して現累積値を生成し、前記許可手段は、更に、前記データを使用可と判断した場合に、前記データに対応付けられている前記使用条件値の値を前記現累積値に更新することとしてもよい。【００２０】
この構成によれば、前記データに係る前記使用条件値を置き換えた後は、新プログラムにおいて旧プログラムの旧特徴値を用いることなく前記データを使用することができる。
また、前記情報端末において、前記データと前記使用条件値とは暗号化された後に保持されており、前記許可手段は、更に、前記使用許可部による判定の前に、前記データと前記使用条件値とを復号する復号部と、前記現プログラムによる前記データの使用が終了した後に、前記データと前記使用条件値とを暗号化する暗号化部とを備えることとしてもよい。【００２１】
この構成によれば、データと使用条件値を暗号化によって保護することが出来る。
また、前記新特徴値は、前記情報端末において前記現プログラムより前に所定の実行順序に従い実行される１以上のプログラムそれぞれのダイジェストと、前記新プログラムのダイジェストとを累積演算した結果である更新後累積値であり、前記判定手段は、前記現プログラムが実行されるより前に所定の実行順序に従い実行された１以上のプログラムそれぞれのダイジェストと、前記現プログラムのダイジェストとを生成するダイジェスト生成部と、前記ダイジェスト生成部により生成されたダイジェストを累積演算して現累積値を生成する累積値生成部と、前記更新後累積値と前記現累積値とが一致する場合に、前記現プログラムが前記新プログラムと一致すると決定する決定部とを含むこととしてもよい。【００２２】
この構成によれば、情報端末において、更新対象のプログラムのみならず、そのプログラムの実行環境まで含めて正当性を確認した上で使用制限を解除することができる。
前記旧特徴値は、前記情報端末において前記現プログラムより前に所定の実行順序に従い実行される１以上のプログラムそれぞれのダイジェストと、前記旧プログラムのダイジェストとを累積演算した結果である更新前累積値であり、前記過去特徴値は、前記情報端末において前記現プログラムより前に所定の実行順序に従い実行される１以上のプログラムそれぞれのダイジェストと、前記過去プログラムのダイジェストとを累積演算した結果である過去累積値であり、前記データは前記過去特徴値と同一の値である使用条件値と対応付けられており、前記許可手段は、前記判定手段により一致すると判定された場合に、前記使用条件値と、前記更新前累積値とが一致するか否かを判定する累積値判定部と、前記累積値判定部により一致すると判定された場合に、実行中の前記現プログラムに対し、前記データの使用を許可する使用許可部とを備えてもよい。【００２３】
この構成によれば、情報端末において、プログラムが新プログラムに更新されて更新前累積値を生成し得ない状態においても、前記更新証明書に旧プログラムの更新前累積値が含まれており、前記使用条件値に一致する累積値を更新証明書から得ることができるので、更新後のプログラムにデータを継続して使用させることができる。
また、前記許可手段は、更に、前記使用許可部によりデータの使用が許可された場合に、前記データに対応付けられている前記使用条件値の値を、前記累積値生成部により生成された前記現累積値に更新する再シール部を備えてもよい。【００２４】
この構成によれば、前記データに係る前記使用条件値を置き換えた後は、新プログラムにおいて旧プログラムの更新前累積値を用いることなく前記データを使用することができる。
また、前記情報端末は、プログラムの特徴を示す特徴値である認証値に基づきサービスの提供可否を判定するサービス提供装置と共に用いられ、前記サービス提供装置は、プログラムの特徴を示す特徴値である照合値を記憶する記憶手段と、前記情報端末から認証値を受信する受信手段と、前記認証値と前記照合値とが一致する場合に、前記情報端末にサービスを提供する提供手段とを備え、前記情報端末は、更に、前記サービス提供装置に対し、前記現プログラムの特徴を示す認証値を送信し、前記認証値の送信に対する応答として前記サービスの提供が成されなかった場合に、前記旧プログラムの特徴を示す特徴値である認証値を送信する送信手段を備えることとしてもよい。【００２５】
この構成によれば、前記情報端末において、プログラムが旧プログラムから新プログラムへと更新されることによりデータを使用するプログラムが旧プログラムから新プログラムに変わり、それに伴いデータを使用するプログラムの特徴値が旧特徴値から新特徴値に変わってしまっても、新プログラムは、更新証明書に含まれる旧特徴値に基づいて前記サービス提供装置からサービスの提供を受けることができる。【００２６】
また、前記更新証明書取得手段は、前記新プログラムを更新するための更新用プログラムを取得するプログラム取得部と、前記更新用プログラムの特徴を示す更新用特徴値を生成する更新用ダイジェスト生成部と、前記更新証明書に含まれる旧特徴値を、前記更新証明書に含まれる新特徴値で書き換え、前記更新証明書に含まれる新特徴値を、前記ダイジェスト生成部により生成された更新用特徴値で書き換える更新証明書更新部とを含んでもよい。【００２７】
この構成によれば、情報端末は、自端末内で更新証明書を生成し使用することができる。
本発明は、プログラムを実行する情報端末に用いられるセキュリティデバイスであって、前記情報端末は、旧プログラムのダイジェストと、前記旧プログラムの更新版である新プログラムのダイジェストとの組を含む更新証明書を取得する更新証明書取得手段と、データを、前記データを使用していたプログラムである過去プログラムのダイジェストである使用条件値と対応付けて保持している保持手段と、実行中の現プログラムが実行されるより前に所定の実行順序に従い実行された１以上のプログラムそれぞれのダイジェストと、前記現プログラムのダイジェストとを生成するダイジェスト生成手段と、前記現プログラムのダイジェストと前記新プログラムのダイジェストとが一致する場合に、前記現プログラムが前記新プログラムと一致すると決定する決定手段とを備え、前記セキュリティデバイスは、前記判定手段により一致すると判定された場合に、前記１以上のプログラムそれぞれのダイジェストと、前記更新証明書に含まれる前記旧プログラムのダイジェストとを累積演算して累積値を生成する累積値生成部と、前記使用条件値と、前記累積値生成部により生成された累積値とが一致するか否かを判定する累積値判定部と、前記累積値判定部により一致すると判定された場合に、前記現プログラムに対し前記データの使用を許可する使用許可部とを備える。【００２８】
この構成によれば、累積値の生成及びデータの使用許可の判定をより安全に行うことができる。
本発明は、プログラムを実行する情報端末に用いられるセキュリティデバイスであって、前記情報端末は、実行中のプログラムである現プログラムより前に所定の実行順序に従い実行される１以上のプログラムそれぞれのダイジェストと旧プログラムのダイジェストとを累積演算した結果である更新前累積値と、前記現プログラム前に所定の実行順序に従い実行される１以上のプログラムそれぞれのダイジェストと前記旧プログラムの更新版である新プログラムのダイジェストとを累積演算した結果である更新後累積値との組を含む更新証明書を取得する更新証明書取得手段と、データを、前記データを使用していたプログラムである過去プログラムのダイジェストに係る情報である使用条件値と対応付けて保持している保持手段と、前記現プログラムが実行されるより前に所定の実行順序に従い実行された１以上のプログラムそれぞれのダイジェストと、前記現プログラムのダイジェストとを生成するダイジェスト生成手段と、前記セキュリティデバイスから、現累積値を取得する現累積値取得手段と、前記現累積値と前記更新後累積値とが一致する場合に、前記現プログラムが前記新プログラムと一致すると決定する決定手段とを備え、前記セキュリティデバイスは、前記ダイジェスト生成部により生成されたダイジェストを累積演算して前記現累積値を生成し、前記情報端末に出力する累積値生成手段と、前記決定手段により一致すると決定された場合に、前記使用条件値と、前記更新前累積値とが一致するか否かを判定する累積値判定手段と、前記累積値判定部により一致すると判定された場合に、実行中の前記現プログラムに対し、前記データの使用を許可する使用許可手段とを備える。【００２９】
本発明は、プログラムを実行する情報端末に用いられるデータ保護方法であって、旧プログラムの特徴を示す旧特徴値と前記旧プログラムの更新版である新プログラムの特徴を示す新特徴値との組を含む更新証明書を取得する更新証明書取得ステップと、データを、前記データを使用していたプログラムである過去プログラムの特徴を示す過去特徴値と対応付けて保持している保持ステップと、前記新特徴値を用いて、前記情報端末で実行中のプログラムである現プログラムが前記新プログラムと一致するか否かを判定する判定ステップと、前記判定手段により一致すると判定された場合に、前記旧特徴値と前記過去特徴値とに基づいて前記データの使用可否を判断し、使用可と判断された場合に、前記実行中の現プログラムに対し前記データを出力する許可ステップとを備える。【００３０】
本発明は、プログラムを実行する情報端末に用いられるデータ保護プログラムであって、旧プログラムの特徴を示す旧特徴値と前記旧プログラムの更新版である新プログラムの特徴を示す新特徴値との組を含む更新証明書を取得する更新証明書取得ステップと、データを、前記データを使用していたプログラムである過去プログラムの特徴を示す過去特徴値と対応付けて保持している保持ステップと、前記新特徴値を用いて、前記情報端末で実行中のプログラムである現プログラムが前記新プログラムと一致するか否かを判定する判定ステップと、前記判定手段により一致すると判定された場合に、前記旧特徴値と前記過去特徴値とに基づいて前記データの使用可否を判断し、使用可と判断された場合に、前記実行中の現プログラムに対し前記データの使用を許可する許可ステップとを含む。【００３１】
この構成によれば、プログラムの特徴値を用いて使用制限をかけるような情報端末において、データの使用制限開始時とデータの使用時との間にプログラムが更新されても、更新後のプログラムは前記データを継続して使用できる。従来は、古いプログラム（旧プログラム）と更新後プログラム（新プログラム）とで特徴値が異なることから、旧プログラムの特徴値を用いて使用制限がかけられたデータを新プログラムで使用することはできなかった。しかし、本発明によれば、更新証明書に含まれる旧プログラムの特徴値（旧特徴値）を用いて、前記データの使用制限を解除することができるので、新プログラムでもデータを継続して使用することができる。さらに、旧特徴値を用いて使用制限を解除するのは、情報端末で動作しているプログラムが新プログラムであることを確認した後である。そのため、本発明では、情報端末で動作している現プログラムが正常に更新されていることを確認した上で、使用制限を解除するよう制御することができる。
【図面の簡単な説明】
【００３２】
【図１】本発明の実施の形態１に係る情報端末の構成を示すブロック図
【図２】本発明の実施の形態１におけるセキュリティデバイスの構成を示すブロック図
【図３】図３（Ａ）は、本発明の実施の形態１から実施の形態４における更新証明書のデータ構造を示す図、図３（Ｂ）は、本発明の実施の形態１から実施の形態４における複数の世代のバージョンのプログラムデータのダイジェストが含まれる更新証明書のデータ構造を示す図
【図４】図４（Ａ）は、本発明の実施の形態１から実施の形態４におけるシールされたデータのデータ構造を示す図、図４（Ｂ）は、本発明の実施の形態１から実施の形態４における属性情報付きのシールされたデータのデータ構造を示す図
【図５】本発明の実施の形態１または実施の形態２における情報端末のＣＰＵが一つのプログラムデータを実行する際に行う処理のフロー図
【図６】本発明の実施の形態１から実施の形態３における情報端末がシールされたデータの暗号を復号化する処理のフロー図
【図７】本発明の実施の形態２に係る情報端末の構成を示すブロック図
【図８】本発明の実施の形態２におけるセキュリティデバイスの構成を示すブロック図
【図９】本発明の実施の形態３に係る情報端末の構成を示すブロック図
【図１０】本発明の実施の形態３におけるセキュリティデバイスの構成を示すブロック図
【図１１】本発明の実施の形態３または実施の形態４に係る情報端末のＣＰＵが一つのプログラムデータを実行する際に行う処理のフロー図
【図１２】本発明の実施の形態３におけるセキュリティデバイスが暗号化部を備える場合の構成を示すブロック図
【図１３】本発明の実施の形態３に係る情報端末がシールされたデータの暗号の復号化と復号化されたデータの再暗号化をする処理のフロー図
【図１４】本発明の実施の形態４に係る情報端末の構成を示すブロック図
【図１５】図１５（Ａ）は、本発明の実施の形態４におけるセキュリティデバイスの構成を示すブロック図、図１５（Ｂ）は、本発明の実施の形態４におけるセキュリティデバイスが暗号化部を備える場合のセキュリティデバイスの構成を示すブロック図
【図１６】従来の技術およびサービス提供サーバの構成を示すブロック図
【図１７】本発明の実施の形態５に係るプログラム更新システムの構成を示す図
【図１８】本発明の実施の形態５に係るプログラムデータ管理サーバの構成を示す図
【図１９】本発明の実施の形態５に係るプログラムデータＤＢの一例を示す図
【図２０】本発明の実施の形態５に係るサービス提供サーバの構成を示す図
【図２１】本発明の実施の形態５に係る照合値ＤＢの内容を示す図
【図２２】本発明の実施の形態５に係る情報端末の構成を示すブロック図
【図２３】本発明の実施の形態５に係るセキュリティデバイスの構成を示すブロック図
【図２４】図２４（Ａ）は、本発明の実施の形態５に係る２世代の累積値に係る更新証明書を示す図、図２４（Ｂ）本発明の実施の形態５に係る複数世代の累積値に係る更新証明書を示す図
【図２５】本発明の実施の形態５に係る更新証明書生成処理を示すフローチャート
【図２６】本発明の実施の形態５に係る累積値検証部による再シール処理を示すフローチャート
【符号の説明】
【００３３】
１００、７００、９００、１４００  情報端末
１０１、１６０１  ＣＰＵ
１０２  更新証明書格納部
１０３、７０３、９０３、１４０３  選択部
１０４  計測部
１０５  データ格納部
１０６、７０６、９０６、１４０６  セキュリティデバイス
１０７  プログラム格納部
２０１  累積演算部
２０２  累積値格納部
２０３  復号化部
２０４  復号化条件検証部
２０５  署名部
２０６  更新前累積値格納部
２０７  暗号化部
３００、３５０  更新証明書
４００  シールされたデータ
１６００  パーソナルコンピュータ
１６０１  ＣＰＵ
１６０２  ＴＰＭ
１６０３  ハードディスク
１６０４  ＰＣＲ
１６０５  ＢＩＯＳ
１６０６  ＯＳ
１６０７  アプリケーション
１６０８  シールされたデータ
１６１０  サービス提供サーバ
１６１１  クライアント認証部
１６１２  照合値ＤＢ
１６１３  サービス提供部
１６２０  データ
１６２０ａ  ＰＣＲ値
１６２０ｂ  チャレンジ情報
【発明を実施するための最良の形態】
【００３４】
以下、本発明の実施の形態について、図面を用いて詳細に説明する。
（実施の形態１）
始めに、本発明の実施の形態１に係る情報端末１００の構成について説明する。
図１は、本発明の実施の形態１に係る情報端末１００の構成を示すブロック図である。情報端末１００は、図１に示すように、ＣＰＵ１０１、ＣＰＵ１０１が実行するプログラムデータを格納するプログラム格納部１０７、プログラムデータの更新を証明する更新証明書を格納する更新証明書格納部１０２、ＣＰＵ１０１が実行するプログラムデータのダイジェストを生成する計測部１０４、プログラムデータのダイジェストの累積演算を行ってその結果を保持するセキュリティデバイス１０６、セキュリティデバイス１０６が累積演算を行うプログラムデータのダイジェストを選択する選択部１０３、および、ＣＰＵ１０１またはセキュリティデバイス１０６が処理したデータを格納するデータ格納部１０５とから構成される。ここで、データのダイジェストとは、具体的には、データに対するＳＨＡ−１（Secure Hash Algorithm 1）等のハッシュ演算の結果を指し、以下においてもダイジェストとは、ＳＨＡ−１等のハッシュ演算の結果を意味することとする。すなわち、ダイジェストを生成することは、ハッシュ値を計算する（「計測する」ともいう）ことを意味する。【００３５】
選択部１０３と計測部１０４は、以下においてそれぞれ詳しく説明する動作を行う専用ハードウェアまたはＣＰＵ１０１が実行するソフトウェアによって実現される。
また、更新証明書格納部１０２とデータ格納部１０５とプログラム格納部１０７は、具体的には不揮発性メモリやハードディスクその他の記憶装置によって実現される。データ格納部１０５は、図１６におけるハードディスク１６０３に相当する。【００３６】
プログラム格納部１０７は、更新されたプログラムデータ（更新後のプログラムデータ）を格納する。更新証明書格納部１０２は、プログラム格納部１０７に格納されている更新後のプログラムデータに対応する更新証明書を格納する。後述する更新証明書は、プログラムデータを更新する際にネットを介してダウンロードまたはＣＤ−ＲＯＭ等の記憶媒体を介してロードされ、更新証明書格納部１０２に格納される。通常、更新証明書は、更新後のプログラムデータと共に情報端末１００にロードされる。【００３７】
また、データ格納部１０５は、セキュリティデバイス１０６が保持するプログラムデータのダイジェストの累積演算の結果にバインドしてシールされたデータを格納する。その中には、更新前のプログラムデータを実行した場合の累積演算の結果にバインドしてシールされたデータも含まれている。
図２は、本発明の実施の形態１におけるセキュリティデバイス１０６の構成を示すブロック図である。セキュリティデバイス１０６は、図２に示すように、ＣＰＵ１０１から受信したダイジェストの累積演算を行う累積演算部２０１と、累積演算部２０１が行った累積演算の結果を保持する累積値格納部２０２と、ＣＰＵ１０１から受信した アンシールコマンドに基づいてシールされたデータの暗号を復号化する復号化部２０３と、シールされたデータに含まれる復号化条件を満たしているか否かを検証する復号化条件検証部２０４と、ＣＰＵ１０１からの要求に基づいて累積値格納部２０２が保持する累積演算の結果に署名を行う署名部２０５とから構成される。セキュリティデバイス１０６は、図１６におけるＴＰＭ１６０２に、累積値格納部２０２は、ＰＣＲ１６０４にそれぞれ相当する。【００３８】
累積値格納部２０２は、具体的には不揮発性メモリによって実現され、累積演算部２０１、復号化部２０３、復号化条件検証部２０４、および署名部２０５は、具体的にはセキュリティデバイス１０６が内蔵するＣＰＵ（不図示）と暗号コプロセッサ等の暗号処理アクセラレータ（不図示）と不揮発性メモリ（不図示）との組み合わせによって実現される。不揮発性メモリにはＣＰＵと暗号処理アクセラレータが実行するマイクロコードが格納される。【００３９】
また、セキュリティデバイス１０６は、耐タンパ性を有し、累積値格納部２０２に保持される値は、外部から不正に改ざんできないようになっている。
図３（Ａ）に示すように、更新証明書格納部１０２に格納されている更新証明書３００は、プログラムデータ提供者がプログラムデータの更新を保証する証明書である。この更新証明書３００は、プログラムデータの識別情報３０１、更新後のプログラムデータのバージョン３０２、更新後のプログラムデータのダイジェスト３０３、更新前のプログラムデータのバージョン３０４、更新前のプログラムデータのダイジェスト３０５、プログラムデータ提供者の識別情報３０６、およびプログラムデータ提供者の署名３０７から構成される。【００４０】
例えば、プログラムデータの識別情報３０１が、PROGRAM_A、更新後のプログラムデータのバージョン３０２がＶ２.０、更新前のプログラムデータのバージョン３０４がＶ１.０であった場合、更新証明書３３０は、プログラムデータPROGRAM_AがバージョンＶ１.０からバージョンＶ２.０に更新され、バージョンＶ１.０のプログラムデータのダイジェストは、更新前のプログラムデータのダイジェスト３０５であり、バージョンＶ２.０のプログラムデータのダイジェストは更新後のプログラムデータのダイジェスト３０５であることを証明する。【００４１】
更新証明書格納部１０２には、更新証明書３００の署名３０７の有効性が検証された更新証明書３００だけが格納されている。
データ格納部１０５に格納されているシールされたデータ４００は、図４（Ａ）に示すように、復号化の条件を示す復号化条件４０１とデータ４０２とを連結したデータに対して暗号化を施したデータ構成となっている。【００４２】
復号化条件４０１は、セキュリティデバイス１０６の復号化条件検証部２０４が復号化したデータを外部に出力するか否かの判定に用いる条件情報であり、プログラムデータのダイジェストの累積演算の結果を照合値とする条件情報を少なくとも一つ含む。復号化条件４０１には複数の条件情報が含まれていても良く、ユーザを認証するためのパスワード情報が含まれる場合もある。【００４３】
また、図４（Ｂ）に示すように、シールされたデータ４００ａには、さらに属性情報４０３が付加された形態でデータ格納部１０５に格納されていてもよい。この属性情報４０３は、暗号化されておらず、シールされたデータ４００ａの暗号を復号化する際の条件を示す情報が平文で含まれている。例えば、あるプログラムデータが起動されていることが条件の場合には、そのプログラムデータの識別情報とバージョン情報とが含まれる。【００４４】
次に、本実施の形態に係る情報端末１００の動作について説明する。
情報端末１００には、通常モードと復元モードの２つの動作モードがある。通常モードは情報端末１００が通常の動作を実行する動作モードであり、復元モードはプログラムデータの更新前の動作状態を擬似的に復元して動作を実行するモードである。
情報端末１００は、ユーザが情報端末１００の起動時に復元モードでの動作を指定した場合、および、前回の情報端末１００の起動中にユーザが次回の動作モードとして復元モードでの動作を指定していた場合に復元モードで動作し、それ以外の場合は通常モードで動作する。ＣＰＵ１０１は、どの動作モードで動作しているかという情報を保持する。【００４５】
情報端末１００は、データ格納部１０５に格納されているシールされたデータ４００の暗号の復号化に失敗した場合に、復元モードで情報端末１００を再起動することをユーザに促すメッセージを表示する。さらに、ユーザが復元モードでの起動を指定した場合、情報端末１００は、復元モードで再起動する。
また、図４（Ｂ）のように、シールされたデータ４００ａに属性情報４０３が付加されている場合には、ユーザがシールされたデータ４００ａへのアクセスを指示した段階で、情報端末１００は、属性情報４０３（例えば、あるプログラムデータの識別情報とバージョン情報）の内容と現在起動しているプログラムデータ（例えば、そのプログラムデータの識別情報とバージョン情報）とを照合する。属性情報４０３の内容と現在起動しているプログラムデータとが一致していない場合には、情報端末１００は、復元モードで情報端末１００を再起動することをユーザに促すメッセージを表示する。さらに、ユーザが復元モードでの起動を指定した場合、情報端末１００は、復元モードで再起動する。【００４６】
以下に、ＣＰＵ１０１が一つのプログラムデータを実行する際に行う処理について図５を参照して説明する。図５は、本発明の実施の形態１または後述する実施の形態２における情報端末のＣＰＵが一つのプログラムデータを実行する際に行う処理のフロー図である。情報端末１００のＣＰＵ１０１は、プログラム格納部１０７に格納されたプログラムデータを実行する。ＣＰＵ１０１は、プログラムデータを実行する際に、実行するプログラムデータのダイジェストを計測部１０４が生成するように計測部１０４に指示する。また、ＣＰＵ１０１は、セキュリティデバイス１０６にダイジェストの累積演算の結果を保持するように指示する。【００４７】
まず、計測部１０４が、実行されるプログラムデータのダイジェストを生成する（ステップＳ５０１）。具体的には、計測部１０４は、ＳＨＡ−１のハッシュ演算を行ってダイジェストを生成する。
次に、選択部１０３が、情報端末１００の動作モードが復元モードか否かを判定し（ステップＳ５０２）、復元モードの場合はステップＳ５０３へ進み、通常モードなど復元モード以外の動作モードの場合はステップＳ５１０へ進む。【００４８】
ステップＳ５０３では、選択部１０３は、実行されるプログラムデータに対応する更新証明書３００が存在するか否かを判定し、更新証明書３００が存在する場合にはステップＳ５０４へ進み、対応する更新証明書３００がない場合はステップＳ５１０へ進む。ステップＳ５０３では、選択部１０３は、具体的には、更新証明書格納部１０２に格納されている更新証明書を参照し、更新証明書の中のプログラムデータの識別情報３０１を照合して実行されるプログラムデータに対応する更新証明書３００が存在するか否かを判定する。なお、この時、実行されるプログラムデータに対応する更新証明書３００が存在すると判定された場合、その更新証明書３００の有効性を再度検証するようにしても良い。【００４９】
さらに、ステップＳ５０４では、更新証明書が示す更新後のプログラムデータと実行されるプログラムデータが同一のものであるか否かを検証するため、選択部１０３は、更新証明書の中の更新後のプログラムデータのダイジェスト３０３と生成したダイジェストとが一致するか否かを判定する。判定の結果、一致する場合、つまり、更新証明書が示す更新後のプログラムデータと実行されるプログラムデータが同一である場合はステップＳ５０５へ進み、一致しない場合、つまり、実行されるプログラムデータが、更新証明書が示す更新後のプログラムデータではない場合はステップＳ５１０へ進む。【００５０】
ステップＳ５０５では、選択部１０３は、セキュリティデバイス１０６が累積演算を行うデータとして、更新証明書の中の更新前のプログラムデータのダイジェスト３０５を選択し、セキュリティデバイス１０６に累積演算を要求する。
ステップＳ５１０では、選択部１０３は、セキュリティデバイス１０６が累積演算を行うデータとして、計測部１０４が生成したプログラムデータのダイジェストを選択し、セキュリティデバイス１０６に累積演算を要求する。【００５１】
累積演算を要求されたセキュリティデバイス１０６においては、累積演算部２０１が、要求されたプログラムデータのダイジェストの累積演算を行う。具体的には、累積演算部２０１は、累積値格納部２０２に保持されているデータと選択部１０３が選択したプログラムデータのダイジェストとを連結し、さらにそのダイジェストを生成して、生成したダイジェストをまた累積値格納部２０２に保存する（ステップＳ５０６）。ＣＰＵ１０１は、ステップＳ５０６のセキュリティデバイス１０６の累積演算が完了して初めてプログラムデータを実行する（ステップＳ５０７）。【００５２】
図５に示した処理は、ＣＰＵ１０１がプログラムデータを実行する度に実行される。この時、セキュリティデバイス１０６の累積値格納部２０２には、ＣＰＵ１０１が実行した複数のプログラムデータのダイジェストの累積演算の結果が保持されており、それはＣＰＵ１０１が実行したプログラムデータの組み合わせによって異なる値を示す。つまり、累積値格納部２０２に保持される値は、ＣＰＵ１０１が実行したプログラムデータの組み合わせを示す。【００５３】
但し、復元モードの場合には、ＣＰＵ１０１は、更新後のプログラムデータを実行しているが、累積値格納部２０２には更新前のプログラムデータを実行した場合の累積演算の結果が保持される。
情報端末１００は、図１６のサービス提供サーバ１６１０から情報サービスの提供を受ける場合、セキュリティデバイス１０６の累積値格納部２０２が保持する値にセキュリティデバイス１０６が署名を施したデータをサービス提供サーバ１６１０へ送信する。この時の累積値格納部２０２が保持する値に署名を施したデータは、署名部２０５がＣＰＵ１０１からの要求に基づいて、累積値格納部２０２が保持する値とサービス提供サーバ１６１０から受信したチャレンジ情報１６２０ｂ（サービス提供サーバ１６１０が生成した乱数など）とを連結したデータに対して署名を施したものである。【００５４】
情報端末１００が実行するプログラムデータの更新に合わせてサービス提供サーバ１６１０の照合値ＤＢ１６１２が更新されている場合には、情報端末１００は、通常モードで起動した状態において、セキュリティデバイス１０６の累積値格納部２０２が保持する値にセキュリティデバイス１０６が署名を施したデータをサービス提供サーバ１６１０へ送信する。これにより、情報端末１００は、サービス提供サーバ１６１０による認証をパスして情報サービスの提供を受けることができる。【００５５】
また、情報端末１００が実行するプログラムデータの更新に合わせてサービス提供サーバ１６１０の照合値ＤＢ１６１２が更新されていない場合には、ユーザが復元モードでの起動を指定する。そして、情報端末１００は、復元モードで起動した状態において、セキュリティデバイス１０６の累積値格納部２０２が保持する値にセキュリティデバイス１０６が署名を施したデータをサービス提供サーバ１６１０へ送信する。この場合、累積値格納部２０２には更新前のプログラムデータを実行した場合の累積演算の結果が保持されているので、サービス提供サーバ１６１０の照合値ＤＢ１６１２が更新されていない場合でも、情報端末１００は、サービス提供サーバ１６１０による認証をパスして情報サービスの提供を受けることができる。【００５６】
なお、この時、情報端末１００は、サービス提供サーバ１６１０に対して、実際に情報端末１００が実行しているプログラムデータは更新されていることを同時に通知するようにしても良い。この場合、情報端末１００は、セキュリティデバイス１０６の累積値格納部２０２が保持する値とプログラムデータの更新を示す情報（例えば、プログラムデータの更新を示すフラグ情報、更新されたプログラムデータの識別情報、および更新後のプログラムデータのバージョンなど）に対してセキュリティデバイス１０６が署名を施したデータをサービス提供サーバ１６１０へ送信する。【００５７】
この時の累積値格納部２０２が保持する値とプログラムデータの更新を示す情報に対して署名を施したデータは、セキュリティデバイス１０６の署名部２０５がＣＰＵ１０１からの要求に基づいて、累積値格納部２０２が保持する値とサービス提供サーバ１６１０から受信したチャレンジ情報１６２０ｂとプログラムデータの更新を示す情報とを連結したデータに対して署名を施したものである。この場合、ＣＰＵ１０１は、セキュリティデバイス１０６の署名部２０５に対してサービス提供サーバ１６１０から受信したチャレンジ情報１６２０ｂとプログラムデータの更新を示す情報を組み込んだ要求を送信する。ＣＰＵ１０１から要求を受信した署名部２０５は、累積値格納部２０２が保持する値とチャレンジ情報１６２０ｂとプログラムデータの更新を示す情報とを連結して、さらに連結したデータに対して署名を施す。【００５８】
情報端末１００から累積値格納部２０２が保持する値とプログラムデータの更新を示す情報に対して署名を施したデータを受信したサービス提供サーバ１６１０は、認証をパスした場合でも、実際に情報端末１００が実行しているプログラムデータは更新されている。このことから、サービス提供サーバ１６１０は、予め決められたセキュリティポリシーに基づいて、情報端末１００への一部の情報サービスの提供を制限するようにしても良く、また、更新されたプログラムデータの提供元にアクセスして、照合値ＤＢ１６１２を更新するようにしても良い。【００５９】
次に、本発明に係る情報端末１００がシールされたデータ４００、４００ａの暗号を復号化する処理を図６のフロー図を参照して説明する。図６は、本発明の実施の形態１、２、３における情報端末１００がシールされたデータ４００、４００ａの暗号を復号化する処理のフロー図である。この場合、図６に示す処理フローに基づいて、情報端末１００のセキュリティデバイス１０６が、データ格納部１０５に格納されているシールされたデータ４００、４００ａの暗号を復号化する。【００６０】
まず、ＣＰＵ１０１から受信したアンシールコマンドに基づいて、セキュリティデバイス１０６の復号化部２０３が、セキュリティデバイス１０６の内部でシールされたデータ４００、４００ａの暗号の復号化を行う（ステップＳ６０１）。この時の復号化には、復号化部２０３が管理する復号鍵が用いられる。復号化により、平文の復号化条件４０１とデータ４０２とが得られる。【００６１】
次に、復号化条件検証部２０４が、復号化条件４０１の中に含まれるプログラムデータのダイジェストの累積演算の結果の照合値と累積値格納部２０２が保持する値とが一致するか否かを判定する（ステップＳ６０２）。両者が一致する場合には、ステップＳ６０３へ進み、一致しない場合には、復号化条件４０１の中に含まれるプログラムデータのダイジェストの累積演算の結果の照合値と累積値格納部２０２が保持する値とが一致しないことを示すエラーを出力して復号化に失敗したことを示す（ステップＳ６０５）。【００６２】
ステップＳ６０３では、復号化条件検証部２０４が、復号化条件４０１の中に含まれるその他の条件（プログラムデータのダイジェストの累積演算の結果の照合以外）を満たしているか否かを判定する。この条件を満たしている場合には、復号化条件検証部２０４は、復号化されたデータ４０２をセキュリティデバイス１０６の外部に出力する（ステップＳ６０４）。この条件を満たしていない場合には、復号化されたデータ４０２を外部に出力せずに、復号化条件４０１の中に含まれるその他の条件（プログラムデータのダイジェストの累積演算の結果の照合以外）を満たしていないことを示すエラーを出力して復号化に失敗したことを示す（ステップＳ６０６）。【００６３】
シールされたデータが、更新後のプログラムデータを実行した場合のプログラムデータのダイジェストの累積演算の結果にバインドしてシールされている場合には、通常モードで起動した状態において、図６に示す処理フローに基づいて、情報端末１００のセキュリティデバイス１０６は、シールされたデータの暗号の復号化を行う。
また、シールされたデータが、更新前のプログラムデータを実行した場合のプログラムデータのダイジェストの累積演算の結果にバインドしてシールされている場合には、通常モードで起動した状態においては、図６に示す処理フローに基づいて、セキュリティデバイス１０６から復号化条件４０１の中に含まれるプログラムデータのダイジェストの累積演算の結果の照合値と累積値格納部２０２が保持する値とが一致しないことを示すエラーが外部に出力される（ステップＳ６０５）。そして、情報端末１００は、復元モードで情報端末１００を再起動することをユーザに促すメッセージを表示する。さらに、ユーザが復元モードでの起動を指定した場合、情報端末１００は、復元モードで再起動する。【００６４】
また、復元モードで起動した状態においては、情報端末１００は、図６に示す処理フローに基づいて、セキュリティデバイス１０６がシールされたデータの暗号の復号化を行う。
この場合、累積値格納部２０２には更新前のプログラムデータを実行した場合の累積演算の結果が保持されているので、ステップＳ６０２の判定において、復号化条件４０１の中に含まれるプログラムデータのダイジェストの累積演算の結果の照合値と累積値格納部２０２が保持する値とが一致するという判定が復号化条件検証部２０４によって行われ、シールされたデータを復号化することができる。【００６５】
以上のように、本実施の形態では、プログラムデータが更新された場合でも、更新したプログラムデータを元に戻すことなく、サービス提供サーバ１６１０のようにＣＰＵ１０１が実行しているプログラムデータを認証するサービス提供サーバからの情報サービスの提供や、シールされたデータの復号化が可能となる。
なお、プログラムデータの識別情報３０１が同じプログラムデータに関して複数回の更新が行われている場合には、プログラムデータの識別情報３０１が同じで、バージョンが異なる複数の更新証明書が更新証明書格納部１０２に格納されることになる。この場合、図５に示した処理フローのステップＳ５０３では、該当する複数の更新証明書が特定され、ステップＳ５０４では、バージョンが最新の更新証明書に関して、更新証明書の中の更新後のプログラムデータのダイジェストと生成したダイジェストとが一致するか否かが判定される。さらに、ステップＳ５０５では、ステップＳ５０３で特定された更新証明書のうち、どのバージョンのプログラムデータをＣＰＵ１０１が実行している状態を復元するかを情報端末１００のユーザが指定し、指定されたバージョンを更新前のプログラムデータとする更新証明書に関して、選択部１０３が更新証明書の中の更新前のプログラムデータのダイジェストを選択し、セキュリティデバイス１０６に累積演算を要求する。【００６６】
なお、更新証明書格納部１０２に格納される更新証明書は、図３（Ｂ）に示す更新証明書３５０のように、同一のプログラムデータの複数の世代のバージョンのプログラムデータのダイジェストが含まれているデータ構造になっていても良い。
図３（Ｂ）において、更新証明書３５０は、プログラムデータの識別情報３５１と、最新の第Ｎ世代のプログラムデータのバージョン３５２及びプログラムデータのダイジェスト３５３（Ｎは３以上の整数）と、第Ｎ−１世代のプログラムデータのバージョン３５４及びプログラムデータのダイジェスト３５５から第Ｎ−ｉ世代までのプログラムデータのバージョン３５６及びプログラムデータのダイジェスト３５７（ｉはＮよりも小さい１以上の整数）と、プログラムデータ提供者の識別情報３５８と、プログラムデータ提供者の署名３５９とから構成される。【００６７】
この場合、図５に示した処理フローのステップＳ５０４では、更新証明書３５０に関して、更新証明書の中の最新の第Ｎ世代のプログラムデータのダイジェストと生成したダイジェストとが一致するか否かを判定する。さらに、ステップＳ５０５では、更新証明書３５０に含まれる第Ｎ−１世代から第Ｎ−ｉ世代までの複数の世代のバージョンのうち、どのバージョンのプログラムデータをＣＰＵ１０１が実行している状態を復元するかを情報端末１００のユーザが指定する。この指定に基づき、選択部１０３が更新証明書の中の指定されたバージョンのプログラムデータのダイジェストを選択し、セキュリティデバイス１０６に累積演算を要求する。【００６８】
なお、上述のようにユーザが指定しなくても、シールしたデータに対しプログラムデータのバージョンを対応付けて記憶させておくこととしておけば、ＣＰＵは、当該データを復元する際にどの世代のプログラムデータを復元すべきかを、データに対応付けたバージョンに基づき判定することができる。
（実施の形態２）
本発明の実施の形態２における情報端末７００は、特に、セキュリティデバイスが累積演算を行うプログラムデータのダイジェストを選択する処理を、より正確に行えるように構成したものである。【００６９】
図７は、本発明の実施の形態２における情報端末７００のブロック図である。実施の形態２の場合には、プログラムデータのダイジェストの累積演算を行ってその結果を保持するセキュリティデバイス７０６の中に、さらに、セキュリティデバイス７０６が累積演算を行うプログラムデータのダイジェストを選択する選択部７０３が含まれる（図７および図８参照）。それ以外のＣＰＵ１０１、プログラム格納部１０７、更新証明書格納部１０２、計測部１０４、およびデータ格納部１０５は、実施の形態１における情報端末１００の場合と同じである。また、選択部７０３の動作および機能は、選択部１０３と同様である。【００７０】
選択部７０３、累積演算部２０１、復号化部２０３、復号化条件検証部２０４、および署名部２０５は、具体的にはセキュリティデバイス７０６が内蔵するＣＰＵ、暗号処理アクセラレータ、および不揮発性メモリとの組み合わせによって実現され、不揮発性メモリには、ＣＰＵと暗号処理アクセラレータが実行するマイクロコードが格納される。
情報端末７００の動作は実施の形態１における情報端末１００の場合と同じであり、プログラムデータが更新された場合でも、更新したプログラムデータを元に戻すことなく、サービス提供サーバ１６１０のようにＣＰＵ１０１が実行しているプログラムデータを認証するサービス提供サーバからの情報サービスの提供や、シールされたデータの復号化が可能となる。【００７１】
このように、本実施の形態では、耐タンパ性を有するセキュリティデバイス７０６に選択部７０３を内蔵することで、選択部７０３が行う処理に対するハッキング等を不正行為が防止され、図５の処理フローにおけるステップＳ５０２からステップＳ５０５の処理とステップＳ５１０の処理がより正確に実行することができる。
なお、セキュリティデバイス７０６に、さらに更新証明書格納部１０２を内蔵する構成にしてもよい。耐タンパ性を有するセキュリティデバイス７０６に更新証明書格納部１０２を内蔵することで、更新証明書への不正なアクセスを防止することができ、図５の処理フローにおけるステップＳ５０２からステップＳ５０４の処理がより正確に実行される。【００７２】
（実施の形態３）
本発明の実施の形態３に係る情報端末９００は、復元モードでの起動が不要になるように構成したものである。図９は、本発明の実施の形態３における情報端末９００のブロック図である。ＣＰＵ１０１、プログラム格納部１０７、更新証明書格納部１０２、計測部１０４、およびデータ格納部１０５は、実施の形態１における情報端末１００の場合と同じである。図１０を参照すると、実施の形態３の場合、プログラムデータのダイジェストの累積演算を行ってその結果を保持するセキュリティデバイス９０６の中に、さらに、ＣＰＵ１０１が更新前のプログラムデータを実行した場合のプログラムデータのダイジェストの累積演算の結果を少なくとも一つ以上保持する更新前累積値格納部２０６が含まれる。選択部９０３は、セキュリティデバイスが累積演算を行うプログラムデータのダイジェストを選択する。選択部９０３は、セキュリティデバイス９０６の更新前累積値格納部２０６が保持する少なくとも一つの累積演算の結果に更に累積演算を行うデータとして、更新証明書の中の更新前のプログラムデータのダイジェストを選択する。また、選択部９０３は、更新前累積値格納部２０６が保持するその他の累積演算の結果に更に累積演算を行うデータとして、計測部１０４が生成したプログラムデータのダイジェストを選択して、セキュリティデバイス９０６に累積演算を要求する。【００７３】
更新前累積値格納部２０６は、具体的には不揮発性メモリによって実現され、複数の累積演算の結果が保持可能な場合には、異なる組み合わせのプログラムデータのダイジェストの累積演算の結果が保持される。
次に、実施の形態３に係る情報端末９００の動作について説明する。情報端末９００の場合、復元モードのような動作モードはなく、通常モードで動作する。情報端末９００のＣＰＵ１０１は、プログラム格納部１０７に格納されたプログラムデータを実行する。ＣＰＵ１０１は、プログラムデータを実行する際に、実行するプログラムデータのダイジェストを計測部１０４が生成し、ダイジェストの累積演算の結果をセキュリティデバイス９０６が保持するように指示する。図１１は、ＣＰＵ１０１が一つのプログラムデータを実行する際に行われる処理のフローを示している。【００７４】
まず、計測部１０４が、実行されるプログラムデータのダイジェストを生成する（ステップＳ１１０１）。具体的には、ＳＨＡ−１のハッシュ演算を行ってダイジェストを生成する。
次に、セキュリティデバイス９０６の累積値格納部２０２が保持する値に累積演算を行うデータとして、計測部１０４が生成したプログラムデータのダイジェストを選択部９０３が選択し、セキュリティデバイス９０６に累積演算を要求する（Ｓ１１０２）。累積演算を要求されたセキュリティデバイス９０６では、累積演算部２０１が、要求されたプログラムデータのダイジェストの累積演算を行う。具体的には、累積演算部２０１は、累積値格納部２０２に保持されているデータと選択部９０３が選択したプログラムデータのダイジェストとを連結し、さらにそのダイジェストを生成して、生成したダイジェストをまた累積値格納部２０２に保存する（Ｓ１１０３）。【００７５】
次に、選択部９０３が実行されるプログラムデータに対応する更新証明書が存在するか否かを判定する（Ｓ１１０４）。対応する更新証明書が存在する場合にはステップＳ１１０５へ進み、対応する更新証明書がない場合はステップＳ１１１０へ進む。この時、選択部９０３は、具体的には、更新証明書格納部１０２に格納されている更新証明書を参照し、更新証明書の中のプログラムデータの識別情報３０１を照合して実行されるプログラムデータに対応する更新証明書が存在するか否かを判定する。なお、この時、実行されるプログラムデータに対応する更新証明書が存在すると判定された場合、その更新証明書の有効性を再度検証するようにしても良い。【００７６】
さらに、ステップＳ１１０５では、更新証明書が示す更新後のプログラムデータと実行されるプログラムデータが同一のものであるか否かを検証するため、選択部９０３が更新証明書の中の更新後のプログラムデータのダイジェストと生成したダイジェストとが一致するか否かを判定する。一致する場合、つまり、更新証明書が示す更新後のプログラムデータと実行されるプログラムデータが同一である場合は、ステップＳ１１０６へ進み、一致しない場合、つまり、実行されるプログラムデータは更新証明書が示す更新後のプログラムデータではない場合は、ステップＳ１１１０へ進む。【００７７】
ステップＳ１１０６では、セキュリティデバイス９０６の更新前累積値格納部２０６が保持する少なくとも一つの累積演算の結果に更に累積演算を行うデータとして、選択部９０３は、更新証明書の中の更新前のプログラムデータのダイジェストを選択する。また、選択部９０３は、更新前累積値格納部２０６が保持するその他の累積演算の結果に更に累積演算を行うデータとして、計測部１０４が生成したプログラムデータのダイジェストを選択して、セキュリティデバイス９０６に累積演算を要求する。【００７８】
ステップＳ１１１０では、選択部９０３は、セキュリティデバイス９０６の更新前累積値格納部２０６が保持する全ての累積演算の結果に更に累積演算を行うデータとして、計測部１０４が生成したプログラムデータのダイジェストを選択し、セキュリティデバイス９０６に累積演算を要求する。
累積演算を要求されたセキュリティデバイス９０６では、累積演算部２０１が、要求されたプログラムデータのダイジェストの累積演算を行う。具体的には、累積演算部２０１は、更新前累積値格納部２０６に保持されているデータと選択部９０３が選択したプログラムデータのダイジェストとを連結し、さらにそのダイジェストを生成して、生成したダイジェストをまた更新前累積値格納部２０６に保存する（Ｓ１１０７）。【００７９】
ＣＰＵ１０１は、ステップＳ１１０７のセキュリティデバイス９０６の累積演算が完了して初めてプログラムデータを実行する（Ｓ１１０８）。
図１１に示した処理は、ＣＰＵ１０１がプログラムデータを実行する度に実行される。この時、セキュリティデバイス９０６の累積値格納部２０２と更新前累積値格納部２０６には、ＣＰＵ１０１が実行した複数のプログラムデータのダイジェストの累積演算の結果が保持されており、それらは、ＣＰＵ１０１が実行したプログラムデータの組み合わせによって異なる値を示す。累積値格納部２０２に保持される値は、ＣＰＵ１０１が実行したプログラムデータの組み合わせを示し、更新前累積値格納部２０６に保持される値は、更新前のプログラムデータを実行した場合のＣＰＵ１０１が実行したプログラムデータの組み合わせを示す。【００８０】
情報端末９００が図１６のサービス提供サーバ１６１０から情報サービスの提供を受ける場合、情報端末９００は、セキュリティデバイス９０６の累積値格納部２０２または更新前累積値格納部２０６が保持する値にセキュリティデバイス９０６が署名を施したデータをサービス提供サーバ１６１０へ送信する。この時の署名を施したデータは、署名部２０５がＣＰＵ１０１からの要求に基づいて、累積値格納部２０２または更新前累積値格納部２０６が保持する値とサービス提供サーバ１６１０から受信したチャレンジ情報１６２０ｂ（サービス提供サーバ１６１０が生成した乱数など）とを連結したデータに対して署名を施したものである。【００８１】
まず、情報端末９００は、セキュリティデバイス９０６の累積値格納部２０２が保持する値にセキュリティデバイス９０６が署名を施したデータをサービス提供サーバ１６１０へ送信する。情報端末９００が実行するプログラムデータの更新に合わせてサービス提供サーバ１６１０の照合値ＤＢ１６１２が更新されている場合には、サービス提供サーバ１６１０による認証をパスして情報サービスの提供を受けることができる。また、情報端末９００が実行するプログラムデータの更新に合わせてサービス提供サーバ１６１０の照合値ＤＢ１６１２が更新されていない場合には、サービス提供サーバ１６１０による認証においてエラーとなり、サービス提供サーバ１６１０から情報端末９００に認証に失敗したことを示すエラーメッセージが送信される。エラーメッセージを受信した情報端末９００は、今度はセキュリティデバイス９０６の更新前累積値格納部２０６が保持する値にセキュリティデバイス９０６が署名を施したデータをサービス提供サーバ１６１０へ送信する。この場合、更新前累積値格納部２０６には更新前のプログラムデータを実行した場合の累積演算の結果が保持されているので、実施の形態１において必要な、ユーザが復元モードで起動する操作を行うことなしに、サービス提供サーバ１６１０の照合値ＤＢ１６１２が更新されていない場合でも、サービス提供サーバ１６１０による認証をパスして情報サービスの提供を受けることができる。【００８２】
なお、この時、情報端末９００は、サービス提供サーバ１６１０対して、実際に情報端末９００が実行しているプログラムデータは更新されていることを同時に通知するようにしても良い。この場合、情報端末９００は、セキュリティデバイス９０６の更新前累積値格納部２０６が保持する値とプログラムデータの更新を示す情報（例えば、プログラムデータの更新を示すフラグ情報、更新されたプログラムデータの識別情報、および更新後のプログラムデータのバージョンなど）に対してセキュリティデバイス９０６が署名を施したデータをサービス提供サーバ１６１０へ送信する。【００８３】
この時の更新前累積値格納部２０６が保持する値とプログラムデータの更新を示す情報に対して署名を施したデータは、セキュリティデバイス９０６の署名部２０５がＣＰＵ１０１からの要求に基づいて、更新前累積値格納部２０６が保持する値とサービス提供サーバ１６１０から受信したチャレンジ情報１６２０ｂとプログラムデータの更新を示す情報とを連結したデータに対して署名を施したものである。この場合、ＣＰＵ１０１は、セキュリティデバイス９０６の署名部２０５に対してサービス提供サーバ１６１０から受信したチャレンジ情報１６２０ｂとプログラムデータの更新を示す情報を組み込んだ要求を送信する。ＣＰＵ１０１から要求を受信した署名部２０５は、更新前累積値格納部２０６が保持する値とチャレンジ情報１６２０ｂとプログラムデータの更新を示す情報とを連結して、さらに連結したデータに対して署名を施す。【００８４】
情報端末９００から更新前累積値格納部２０６が保持する値とプログラムデータの更新を示す情報に対して署名を施したデータを受信したサービス提供サーバ１６１０は、認証をパスした場合でも、実際に情報端末９００が実行しているプログラムデータは更新されている。このことから、予め決められたセキュリティポリシーに基づいて、サービス提供サーバ１６１０は、情報端末９００への一部の情報サービスの提供を制限するようにしても良く、また、更新されたプログラムデータの提供元にアクセスして、照合値ＤＢ１６１２を更新するようにしても良い。【００８５】
また、データ格納部１０５に格納されていたシールされたデータの暗号を復号化する場合、情報端末９００は、実施の形態１の場合と同様に、図６に示す処理フローに基づいて、セキュリティデバイス９０６がシールされたデータの暗号の復号化を行う。
但し、実施の形態１の場合とは異なり、ステップＳ６０２では、復号化条件検証部２０４が、復号化条件４０１の中に含まれるプログラムデータのダイジェストの累積演算の結果の照合値と、累積値格納部２０２または更新前累積値格納部２０６が保持する値とが一致するか否かを判定する。いずれかが一致する場合には、ステップＳ６０３へ進み、いずれも一致しない場合には、復号化条件検証部２０４は、エラーを出力して復号化に失敗したことを示す動作を行う（ステップＳ６０５）。【００８６】
シールされたデータが、更新前のプログラムデータを実行した場合のプログラムデータのダイジェストの累積演算の結果にバインドしてシールされている場合であっても、更新前累積値格納部２０６には、更新前のプログラムデータを実行した場合の累積演算の結果が保持されている。このため、ステップＳ６０２の判定において、復号化条件４０１の中に含まれるプログラムデータのダイジェストの累積演算の結果の照合値と一致するという判定が、復号化条件検証部２０４によって行われ、セキュリティデバイス９０６は、シールされたデータを復号化することができる。【００８７】
このように本実施の形態では、プログラムデータが更新された場合でも、更新したプログラムデータを元に戻すことなく、サービス提供サーバ１６１０のように、ＣＰＵ１０１が実行しているプログラムデータを認証するサービス提供サーバからの情報サービスの提供や、シールされたデータの復号化が可能となる。これに加え、更新前累積値格納部２０６は、更新前のプログラムデータを実行した場合の累積演算の結果を保持しているので、情報端末装置９００は、実施の形態１において必要な、ユーザが復元モードで起動する操作を行うことなしに、サービス提供サーバ１６１０の照合値ＤＢ１６１２が更新されていない場合でも、サービス提供サーバ１６１０による認証をパスして情報サービスの提供を受けることができる。【００８８】
なお、以上の説明では、セキュリティデバイス９０６は、シールされたデータの暗号を復号化する場合、復号化されたデータを出力するだけであったが、ＣＰＵ１０１が実行している更新されたプログラムデータのダイジェストの累積演算の結果にバインドして復号化されたデータをシール、つまり復号化されたデータの再暗号化を行い、復号化されたデータと共にシールされたデータを出力するようにしても良い。その場合、図１２に示すように、セキュリティデバイス９０６は、さらにデータの暗号化を行う暗号化部２０７を備える。【００８９】
データ格納部１０５に格納されているシールされたデータの暗号を復号化と再暗号化を行う場合、情報端末９００は、図１３に示す処理フローに基づいて、セキュリティデバイス９０６がシールされたデータの暗号の復号化と再暗号化を行う。図１３は、本発明の実施の形態に係る情報端末９００がシールされたデータの暗号の復号化と復号化されたデータの再暗号化をする処理のフロー図である。【００９０】
まず、ＣＰＵ１０１から受信した アンシールコマンドに基づいて、セキュリティデバイス９０６の復号化部２０３が、セキュリティデバイス９０６の内部でシールされたデータの暗号の復号化を行う（ステップＳ１３０１）。この時の復号化には、復号化部２０３が管理する復号鍵が用いられる。復号化により、平文の復号化条件４０１とデータ４０２とが得られる。【００９１】
次に、復号化条件検証部２０４が、復号化条件４０１の中に含まれるプログラムデータのダイジェストの累積演算の結果の照合値と、累積値格納部２０２または更新前累積値格納部２０６が保持する値とが一致するか否かを判定し（ステップＳ１３０２）、いずれかが一致する場合には、ステップＳ１３０３へ進む。いずれも一致しない場合には、復号化条件４０１の中に含まれるプログラムデータのダイジェストの累積演算の結果の照合値と累積値格納部２０２または更新前累積値格納部２０６が保持する値とが一致しないことを示すエラーを外部に出力する動作を行う（ステップＳ１３０６）。このエラーは、復号化に失敗したことを示す。【００９２】
ステップＳ１３０３では、復号化条件検証部２０４は、復号化条件４０１の中に含まれるその他の条件（プログラムデータのダイジェストの累積演算の結果の照合以外）を満たしているか否かを判定する。条件を満たしている場合には、ステップＳ１３０４へ進み、条件を満たしていない場合には、復号化条件検証部２０４は、復号化条件４０１の中に含まれるその他の条件（プログラムデータのダイジェストの累積演算の結果の照合以外）を満たしていないことを示すエラーを外部に出力する（ステップＳ１３０７）。このエラーは、復号化に失敗したことを示す。【００９３】
ステップＳ１３０４では、暗号化部２０７が、復号化条件の照合値に累積値格納部２０２に保持されている値を設定して復号化したデータを再暗号化する。ステップＳ１３０５で、暗号化部２０７は、復号化されたデータ４０２と再暗号化されたデータをセキュリティデバイス９０６の外部に出力する。
この時、出力される再暗号化されたデータは、ＣＰＵ１０１が実行する更新されたプログラムデータのダイジェストの累積演算の結果にバインドしてシールされたデータである。【００９４】
なお、プログラムデータの識別情報３０１が同一であるプログラムデータに関して、複数回の更新が行われている場合には、プログラムデータの識別情報３０１が同じで、バージョンが異なる複数の更新証明書が、更新証明書格納部１０２に格納されることになる。この場合、図１１に示した処理フローのステップＳ１１０４では、該当する複数の更新証明書が特定され、ステップＳ１１０５では、選択部９０３が、バージョンが最新の更新証明書に関して、更新証明書の中の更新後のプログラムデータのダイジェストと生成したダイジェストとが一致するか否かを判定する。【００９５】
さらに、ステップＳ１１０６では、ステップＳ１１０４で特定された更新証明書のうち、どのバージョンのプログラムデータをＣＰＵ１０１が実行している状態を復元するかを情報端末９００のユーザが指定し、指定されたバージョンを更新前のプログラムデータとする更新証明書に関して、選択部９０３が、更新証明書の中の更新前のプログラムデータのダイジェストを選択し、セキュリティデバイス９０６に累積演算を要求する。【００９６】
また、以上の説明では、どのバージョンのプログラムデータをＣＰＵ１０１が実行している状態を復元するかを情報端末９００のユーザが指定するとした。しかし、更新前累積値格納部２０６が、複数の累積演算の結果を十分保持することができる場合には、ユーザは、指定することせずに、ステップＳ１１０６において、ステップＳ１１０４で特定されたそれぞれの更新証明書３５０に関して、選択部９０３が、更新証明書の中の更新前のプログラムデータのダイジェスト３５３を選択し、セキュリティデバイス９０６に累積演算を要求するようにしてもよい。【００９７】
また、更新証明書格納部１０２に格納される更新証明書が、図３（Ｂ）に示すような同一のプログラムデータの複数の世代のバージョンのプログラムデータのダイジェストが含まれている更新証明書３５０の場合には、情報端末９００の選択部９０３は、図１１に示した処理フローのステップＳ１１０５では、更新証明書３５０に関して、更新証明書の中の最新の第Ｎ世代のプログラムデータのダイジェストと生成したダイジェストとが一致するか否かを判定する。【００９８】
さらに、ステップＳ１１０６では、更新証明書３５０に含まれる第Ｎ−１世代から第Ｎ−ｉ世代までの複数の世代のバージョンのうち、どのバージョンのプログラムデータをＣＰＵ１０１が実行している状態を復元するかを情報端末１００のユーザが指定し、選択部９０３が更新証明書３５０の中の指定されたバージョンのプログラムデータのダイジェストを選択し、セキュリティデバイス９０６に累積演算を要求する。【００９９】
また、以上の説明では、どのバージョンのプログラムデータをＣＰＵ１０１が実行している状態を復元するかを情報端末９００のユーザが指定するとしたが、更新前累積値格納部２０６に複数の累積演算の結果を十分保持することができる場合には、ユーザが指定することせずに、ステップＳ１１０６では、選択部９０３が更新証明書３５０に含まれる第Ｎ−１世代から第Ｎ−ｉ世代までの複数の世代のプログラムデータのダイジェストをそれぞれ選択し、セキュリティデバイス９０６に累積演算を要求するようにしてもよい。【０１００】
（実施の形態４）
本発明の実施の形態４における情報端末１４００は、特に、セキュリティデバイスが累積演算を行うプログラムデータのダイジェストを選択する処理を、より正確に行えるように構成したものである。
図１４は、本発明の実施の形態４における情報端末１４００の構成を示すブロック図である。実施の形態２における情報端末７００と同様のブロック図となっているが、セキュリティデバイス１４０６の部分が実施の形態２と異なる。実施の形態４におけるセキュリティデバイス１４０６の構成は、実施の形態３におけるセキュリティデバイス９０６の構成と以下に述べる点で異なる。【０１０１】
図１５（Ａ）を参照すると、実施の形態４の場合には、プログラムデータのダイジェストの累積演算を行ってその結果を保持するセキュリティデバイス１４０６の中に、さらに、セキュリティデバイス１４０６が累積演算を行うプログラムデータのダイジェストを選択する選択部１４０３が含まれる。それ以外のＣＰＵ１０１、プログラム格納部１０７、更新証明書格納部１０２、計測部１０４、およびデータ格納部１０５は、実施の形態３における情報端末９００の場合と同じである。【０１０２】
選択部１４０３、累積演算部２０１、復号化部２０３、復号化条件検証部２０４、および署名部２０５は、具体的にはセキュリティデバイス１４０６が内蔵するＣＰＵと暗号処理アクセラレータと不揮発性メモリとの組み合わせによって実現される。不揮発性メモリには、ＣＰＵと暗号処理アクセラレータが実行するマイクロコードが格納される。
情報端末１４００の動作は、実施の形態３における情報端末９００の場合と同じであり、プログラムデータが更新された場合でも、更新したプログラムデータを元に戻すことなく、サービス提供サーバ１６１０のようにＣＰＵ１０１が実行しているプログラムデータを認証するサービス提供サーバからの情報サービスの提供や、シールされたデータの復号化が可能となる。【０１０３】
このように、本実施の形態によれば、耐タンパ性を有するセキュリティデバイス１４０６に選択部１４０３を内蔵することで、選択部１４０３が行う処理に対するハッキング等を不正行為が防止され、図１１の処理フローにおけるステップＳ１１０２と、ステップＳ１１１０の処理と、ステップＳ１１０４からステップＳ１１０６までの処理とがより正確に実行される。また、更新前累積値格納部２０６は、更新前のプログラムデータを実行した場合の累積演算の結果を保持しているので、情報端末装置１４００は、実施の形態１において必要な、ユーザが復元モードで起動する操作を行うことなしに、サービス提供サーバ１６１０の照合値ＤＢ１６１２が更新されていない場合でも、サービス提供サーバ１６１０による認証をパスして情報サービスの提供を受けることができる。【０１０４】
なお、実施の形態４の変形例として、セキュリティデバイス１４０６ａの構成を図１５（Ｂ）に示す。セキュリティデバイス１４０６ａは、図１５（Ａ）のセキュリティデバイス１４０６に、データの暗号化を行う暗号化部２０７をさらに備えて構成される。セキュリティデバイス１４０６ａが、シールされたデータの暗号を復号化する場合に、暗号化部２０７は、ＣＰＵ１０１が実行している更新されたプログラムデータのダイジェストの累積演算の結果にバインドして復号化されたデータをシール、つまり復号化されたデータの再暗号化を行う。そして、セキュリティデバイス１４０６ａは、復号化されたデータと共にシールされたデータを出力する。【０１０５】
また、セキュリティデバイス１４０６または１４０６ａに、さらに更新証明書格納部１０２を内蔵する構成にしてもよい。耐タンパ性を有するセキュリティデバイス１４０６または１４０６ａが、更新証明書格納部１０２を内蔵することで、更新証明書への不正なアクセスを防止することができ、図１１の処理フローにおけるステップＳ１１０４からステップＳ１１０６の処理がより正確に実行される。
（実施の形態５）
本実施の形態は、上述の実施の形態と比べ、（１）更新証明書にダイジェストではなく累積値が記録している点、（２）装置内で更新証明書の生成を行っている点、（３）古いプログラム構成に係る復号化条件を用いてシールされているデータを、更新後のプログラム構成に係る復号化条件を用いて再シールする点の３点で相違する。【０１０６】
（１）により、上述の実施の形態では行わざるを得ない更新前の累積値を計算するという処理が不要になる。また、更新前のプログラムデータに係る累積値を格納する更新前累積値格納部が不要となる。
（２）により、外部装置からの更新証明書の取得が不要となる。
（３）により、一度再シール処理を行えば、当該処理以降に、当該データの使用の度に古い復号化条件を用いて復号する必要がなくなる。【０１０７】
以下、本実施の形態について、上述の相違点を中心に説明する。
（構成）
図１７は、本発明の一実施形態に係るプログラム更新システムの構成を示す図である。
前記プログラム更新システムは、プログラムデータ管理サーバ１７０１、サービス提供サーバ１７０２及び情報端末１７０３を含んで構成される。【０１０８】
プログラムデータ管理サーバ１７０１、サービス提供サーバ１７０２及び情報端末１７０３は、ネットワーク１７０４を介して相互に通信する。
プログラムデータ管理サーバ１７０１は、情報端末１７０３により実行されるプログラムデータを管理するサーバである。
サービス提供サーバ１７０２は、サービスの要求を受け付けた装置の中で認証に成功したものに対しサービスの提供を行うサーバである。【０１０９】
情報端末１７０３は、プログラムデータが使用する機密データ等を保護しつつ、プログラムデータを実行する情報端末である。また、情報端末１７０３は、サービス提供サーバ１７０２に対しサービスの提供を要求してサービスの提供を受ける。
なお、以後の説明では、プログラムデータ管理サーバ１７０１、サービス提供サーバ１７０２及び情報端末１７０３の間の通信内容の保護については特に述べないが、装置間の通信内容を公知の暗号化方式を用いて暗号化、復号化することにより通信内容の保護を行ってももちろんよい。また、装置間において、通信に先立ち公知の認証方式を用いて認証を行い、認証に成功した後に通信を行うこととしてもよい。【０１１０】
（プログラムデータ管理サーバ１７０１）
プログラムデータ管理サーバ１７０１は、具体的には、マイクロプロセッサ、ＲＯＭ、ＲＡＭ、ハードディスクユニット、ディスプレイユニット、キーボード、マウスなどから構成されるコンピュータシステムである。前記ＲＯＭ又は前記ハードディスクユニットには、コンピュータプログラムが記憶されており、ＲＡＭ上に読み出されたコンピュータプログラムに従って前記マイクロプロセッサが動作することにより、プログラムデータ管理サーバ１７０１はその機能を達成する。【０１１１】
図１８は、プログラムデータ管理サーバ１７０１の構成を示す図である。
プログラムデータ管理サーバ１７０１は、通信部１８０１、プログラムデータ管理部１８０２及びプログラムデータＤＢ格納部１８０３を含んで構成される。
通信部１８０１は、ネットワーク１７０４を介して、サービス提供サーバ１７０２及び通信端末１８０３と通信する。【０１１２】
プログラムデータＤＢ格納部１８０３は、プログラムデータＤＢを格納するハードディスク、大容量メモリなどの蓄積デバイスである。
図１９は、プログラムデータＤＢの一例を示す図である。
プログラムデータＤＢは、ＢＩＯＳやＯＳ、アプリケーションプログラムなどの各プログラムデータについて、プログラムデータと、プログラムデータ識別情報及びプログラムデータバージョンを対応づけて記憶している。【０１１３】
プログラムデータ識別情報は、プログラムデータを識別する識別情報である。
プログラムデータバージョンは、プログラムデータのバージョン番号を示す。
図１９のプログラムデータＤＢは、一例として、プログラムデータ識別情報の値が「０００１」であり、プログラムデータバージョンが「ｖ１．５２」である「ムービープレーヤー」が記録されていることを示す。【０１１４】
プログラムデータ管理部１８０２は、プログラムデータＤＢ格納部１８０３に格納されているプログラムデータを管理する。
プログラムデータＤＢ中のプログラムデータが、例えば開発者等により更新された場合、その更新後のプログラムデータと、そのプログラムデータに係るプログラムデータ識別情報と、更新後のプログラムデータのプログラムデータバージョンとを、通信部１８０１を用いて情報端末１７０３に送信する。【０１１５】
なお、特に述べない限り、プログラムデータ管理サーバ１７０１における他装置との通信は、「通信部１８０１を用いて通信する」等の明示的な記載をしなくても通信部１８０１を用いて行っているものとする。
また、前述の更新があった場合、プログラムデータ管理部１８０２は、サービス提供サーバ１７０２に対して、情報端末１７０３におけるプログラムデータの構成を識別するプログラムデータ構成識別情報と、情報端末１７０３における当該更新後のプログラムデータのダイジェストを含む、ＢＩＯＳのダイジェストとＯＳのダイジェストとアプリケーションプログラムのダイジェストとを累積した累積値とを送信する。ここで、プログラムデータの構成とは、情報端末１７０３で動作するＢＩＯＳ、ＯＳ、アプリケーション等の全体または一部の組み合わせを意味する。【０１１６】
（サービス提供サーバ１７０２）
サービス提供サーバ１７０２は、具体的には、マイクロプロセッサ、ＲＯＭ、ＲＡＭ、ハードディスクユニット、ディスプレイユニット、キーボード、マウスなどから構成されるコンピュータシステムである。前記ＲＯＭ又は前記ハードディスクユニットには、コンピュータプログラムが記憶されており、ＲＡＭ上に読み出されたコンピュータプログラムに従って前記マイクロプロセッサが動作することによりサービス提供サーバ１７０２はその機能を達成する。【０１１７】
図２０は、サービス提供サーバ１７０２の構成を示す図である。
サービス提供サーバ１７０２は、通信部２００１、データ管理部２００２、照合値ＤＢ格納部２００３及びコンテンツ蓄積部２００４を含んで構成される。
通信部２００１は、ネットワーク１７０４を介して、プログラムデータ管理サーバ１７０１及び通信端末１７０３と通信する。【０１１８】
照合値ＤＢ格納部２００３は、照合値ＤＢを格納するハードディスク、大容量メモリなどの蓄積デバイスである。
図２１は、照合値ＤＢの内容を示す図である。
照合値ＤＢには、サービスの提供を要求する情報端末のプログラムデータの構成を識別するプログラムデータ構成識別情報と、そのプログラムデータの構成に対応する照合値とが対応づけて記録されている。【０１１９】
なお、照合値ＤＢにおける照合値は、情報端末におけるプログラムデータの累積値と同値を持つが、この点については後述する。
コンテンツ蓄積部２００４は、サービス提供の一例としてのコンテンツ配信サービスにおいて、配信するコンテンツと、そのコンテンツを識別するコンテンツ識別子とを対応付けて記憶しているハードディスク、大容量メモリ等の記憶デバイスである。【０１２０】
データ管理部２００２は、情報端末１７０３から、サービス提供を要求する情報端末のプログラムデータの構成を識別するプログラムデータ構成識別情報と、前記プログラムデータの構成に係る累積値と、サービス提供に関し配信を要求しているコンテンツに係るコンテンツ識別子とを、通信部２００１を介して受け取る。
なお、特に述べない限り、サービス提供サーバ１７０２における他装置との通信は、「通信部２００１を用いて通信する」等の明示的な記載をしなくても通信部２００１を用いて行っているものとする。【０１２１】
データ管理部２００２は、受け取ったプログラム識別情報に対応する照合値を照合値ＤＢから読み出して、照合値と累積値とを比較する。
照合値と累積値とが一致している場合、前記コンテンツ識別子により識別されるコンテンツをコンテンツ蓄積部２００４から読み出して、情報端末１７０３に送信する。
照合値と累積値とが一致しない場合、サービス提供ができない旨を示すエラー情報を情報端末１７０３に対して送信する。【０１２２】
また、公知の認証方式を用いてプログラムデータ管理サーバ１７０１の真正性を認証した上で、データ管理部２００２は、プログラムデータ管理サーバ１７０１からプログラムデータ構成識別情報と累積値とを受信した場合、照合値ＤＢにおける受信したプログラムデータ構成識別情報と同値のプログラムデータ構成識別情報に対応する照合値を前記受信した累積値で書き換える。【０１２３】
（情報端末１７０３）
情報端末１７０３は、具体的には、マイクロプロセッサ、ＲＯＭ、ＲＡＭ、ディスプレイユニット、キーボードなどから構成されるコンピュータシステムである。前記ＲＯＭには、コンピュータプログラムが記憶されており、ＲＡＭ上に読み出されたコンピュータプログラムに従って前記マイクロプロセッサが動作することにより、情報端末１７０３はその機能を達成する。【０１２４】
図２２は、情報端末１７０３の構成を示すブロック図である。
情報端末１７０３は、ＣＰＵ１０１、更新証明書格納部１０２、計測部１０４、データ格納部１０５、プログラム格納部１０７、通信部２２０１、更新証明書生成部２２０２及びセキュリティデバイス２２０３を含んで構成される。
ここで、本実施の形態において上述の実施の形態と同符号を付している構成については、上述の実施の形態とその機能等に特に変わりはないので説明は省略する。【０１２５】
（通信部２２０１）
通信部２２０１は、ネットワーク１７０４を介して、プログラムデータ管理サーバ１７０１、サービス提供サーバ１７０２その他の外部装置と通信するネットワーク通信デバイスである。
なお、特に述べない限り、情報端末１７０３における他装置との通信は、「通信部２２０１を用いて通信する」等の明示的な記載をしなくても通信部２２０１を用いて行っているものとする。【０１２６】
（更新証明書生成部２２０２）
更新証明書生成部２２０２は、更新証明書を生成するデバイスである。
以後、まず本実施の形態で用いられる更新証明書の内容について説明し、次いで更新証明書の生成処理について説明する。
図２４（Ａ）は、本実施の形態における更新証明書の一例である更新証明書２４０１の内容を示す図である。【０１２７】
更新証明書２４０１は、プログラムデータ構成識別情報、新構成バージョン、新構成累積値、旧構成バージョン、旧構成累積値及び提供者識別情報を含み、更新証明書の提供者による署名が施されたものである。実施の形態１〜４とは異なり、本実施の形態における更新証明書２４０１は、プログラムデータの構成に対して発行される。ここで、プログラムデータの構成とは、情報端末１７０３で動作するＢＩＯＳ、ＯＳ、アプリケーション等の全体または一部の組み合わせを意味する。更新証明書２４０１は、プログラムデータ個別の更新前後のダイジェストを含む実施の形態１〜４の更新証明書とは異なり、あるプログラムデータが更新される前後の累積値を含んでいる。そのため、更新証明書２４０１は、累積値に対応するＢＩＯＳ、ＯＳ、アプリケーション等の全体または一部の組み合わせ毎に発行される。【０１２８】
プログラムデータ構成識別情報は、自更新証明書が、内容の更新を証明する対象となっている、情報端末１７０３において実行されるＢＩＯＳ、ＯＳ、アプリケーションプログラム等のプログラムデータの構成を識別する識別情報である。
新構成バージョンは、自更新証明書が生成される時点で最新のプログラムデータの構成に含まれる全てのプログラムデータの識別情報と、各プログラムデータに係るバージョン番号のリストである。【０１２９】
新構成累積値は、前記最新のプログラムデータのダイジェストを含めた累積値である。
本実施の形態では、前記最新のプログラムデータのダイジェストを含む、ＢＩＯＳのダイジェストとＯＳのダイジェストとアプリケーションプログラムのダイジェストとを累積した値となる。
旧構成バージョンは、更新対象であるプログラムデータを更新する前の状態におけるプログラムデータの構成に含まれる全てのプログラムデータの識別情報と、各プログラムデータに係るバージョン番号のリストである。【０１３０】
旧構成累積値は、前記更新前の更新対象であるプログラムデータのダイジェストを含めた累積値である。
本実施の形態では、前記更新前の更新対象であるプログラムデータのダイジェストを含む、ＢＩＯＳのダイジェストとＯＳのダイジェストとアプリケーションプログラムのダイジェストとを累積した値となる。【０１３１】
提供者識別情報は、自更新証明書の提供者を識別する識別情報であり、この場合には情報端末１７０３が提供者となるので、提供者識別情報は情報端末１７０３の識別情報となる。
提供者署名は、更新証明書を構成するデータに対する自更新証明書の提供者による署名であり、提供者に固有の秘密鍵を用いて生成された署名である。この場合には情報端末１７０３が提供者となるので、提供者署名は情報端末１７０３に固有の秘密鍵による署名となる。【０１３２】
次に、更新証明書生成部２２０２が、更新証明書を生成する処理について説明する。
図２５は、更新証明書生成処理を示すフローチャートである。
更新証明書生成部２２０２は、更新対象のプログラムデータの識別情報と更新後のプログラムデータのバージョン番号を含む更新証明書生成指示をＣＰＵ１０１から取得する（ステップＳ２５０１）。【０１３３】
更新対象のプログラムデータの識別情報と更新後のプログラムデータのバージョン番号は、プログラムデータ管理サーバ１７０１により情報端末１７０３に対して送信されたものであり、公知の認証方式を用いてプログラムデータ管理サーバ１７０１の真正性を認証した上で、ＣＰＵ１０１が取得したものである。
そして、更新証明書格納部１０２に格納されている更新証明書（以下、現更新証明書という。）を読み出し、取得した更新後のプログラムデータのバージョン番号が現更新証明書中の新構成バージョンに含まれる更新対象のプログラムデータのバージョン番号よりも大きい場合（ステップＳ２５０２：ＹＥＳ）に、新たな更新証明書（以下、新更新証明書という。）を生成する（ステップＳ２５０３）。【０１３４】
ここで、新更新証明書の旧構成バージョンには、前記現更新証明書における新構成バージョンを格納する。
新更新証明書の旧構成累積値には、前記現更新証明書における新構成累積値を格納する。
新更新証明書の新構成バージョンには、現更新証明書中の新構成バージョンに含まれる更新対象のプログラムデータのバージョン番号を、前記取得した更新後のプログラムデータのバージョン番号に更新したものを格納する。【０１３５】
新更新証明書の新構成累積値には、累積値格納部２０２が格納している累積値、即ち、最新のプログラムデータのダイジェストを含めた累積値を格納する。
新更新証明書のプログラムデータ構成識別情報には、現更新証明書のプログラムデータ構成識別情報を格納する。
新更新証明書の提供者識別情報には、現更新証明書の提供者識別情報を格納する。【０１３６】
さらに、更新証明書を構成するデータ（プログラムデータ構成識別情報、新構成バージョン、新構成累積値、旧構成バージョン、旧構成累積値、提供者識別情報）に対する更新証明書の提供者による署名を生成する。この場合には情報端末による署名を生成する。
更新証明書生成部２２０２は、以上のようにして生成した新更新証明書を、更新証明書格納部１０２が格納している旧更新証明書に上書きすることで、更新証明書を更新する。【０１３７】
（セキュリティデバイス２２０３）
セキュリティデバイス２２０３は、既に説明したセキュリティデバイス１０６に対し、再シールの機能を付加したものである。
図２３は、セキュリティデバイスの構成を示すブロック図である。
セキュリティデバイス２２０３は、累積演算部２０１、累積値格納部２０２、復号化部２０３、復号化条件検証部２０４、累積値検証部２３０１及び暗号化部２３０２を含んで構成される。【０１３８】
セキュリティデバイス２２０３の構成中、上記実施の形態と同符号が付されたものについては、上記実施の形態におけるものと同様であるため、説明を省略する。
暗号化部２３０２は、暗号化鍵を保持しており、当該暗号化鍵を用いてデータを暗号化する。
なお、この暗号化鍵により暗号化されたデータを復号するための復号鍵は、復号化部２０３により保持されているものとする。【０１３９】
累積値検証部２３０１は、再シール処理についての制御を行う。
図２６は、累積値検証部２３０１による再シール処理を示すフローチャートである。
累積値検証部２３０１は、ＣＰＵ１０１から、更新に係るプログラムデータを識別するプログラムデータ識別情報を含むプログラムデータの更新通知を受け取る（ステップＳ２６０１）。【０１４０】
そして、累積値検証部２３０１は、前記更新通知に含まれるプログラムデータ識別情報に対応する暗号化データをデータ格納部１０５から読み出す。
そして、復号化部２０３に対し、前記暗号化データの復号を指示する。
ここで、復号化部２０３により前記復号鍵を用いて前記暗号化データが復号されると（ステップＳ２６０２）、復号化部２０３により復号化完了の通知が成されるので、累積値検証部２３０１はその通知を受け取る。【０１４１】
累積値検証部２３０１は、前記プログラムデータ識別情報に対応する更新証明書を更新証明書格納部１０２から読み出す。
そして、累積値検証部２３０１は、復号化部２０３による復号結果である復号化データに含まれる累積値が、読み出した前記更新証明書に含まれる旧構成累積値と一致するか否かを判定する（ステップＳ２６０３）。【０１４２】
ステップＳ２６０３において、一致しないと判定された場合（ステップＳ２６０３：ＮＯ）、復号化データは更新証明書に含まれている新構成累積値（最新の累積値）を用いてシールされているか、新構成累積値でも旧構成累積値とも異なる累積値を用いてシールされている。いずれの場合も、再シールの必要はないので処理を終了する。
ステップＳ２６０３において、一致すると判定された場合（ステップＳ２６０３：ＹＥＳ）、さらに、累積値格納部２０２に格納されている累積値が、前記更新証明書中の新構成累積値と一致するか否かを判定する（ステップＳ２６０４）。【０１４３】
ステップＳ２６０４において、一致しないと判定された場合（ステップＳ２６０４：ＮＯ）、情報端末１７０３上では更新後のプログラムデータの構成に基づくプログラムデータが実行されていない、つまり、更新前のプログラムデータの構成に基づくプログラムデータが実行されているか、不正なプログラムデータが実行されている可能性があるので、処理を終了する。【０１４４】
ステップＳ２６０４において、一致すると判定された場合（ステップＳ２６０４：ＹＥＳ）、プログラムデータが更新されているにも関わらず、前記暗号化データが以前のプログラムデータに対応する累積値（旧構成累積値）を使ってシールされていることが分かる。そのため、再シールの必要があるので前記復号化データ中の復号化条件を更新証明書中の新構成累積値で置き換える。【０１４５】
これにより、暗号化対象は、更新証明書中の新構成累積値を含む復号化条件と、暗号化対象のデータとが連結された連結データとなる。
そして、累積値検証部２３０１は、暗号化部２３０２に対して前記連結データの暗号化を指示する（ステップＳ２６０５）。
ここで、暗号化部２３０２により前記暗号鍵を用いて前記連結データが暗号化され（ステップＳ２６０６）、暗号化終了の通知が累積値検証部２３０１に対して行われる。【０１４６】
累積値検証部２３０１は、前記暗号化終了の通知を暗号化部２３０２から受け取る。
以上により、再シール処理についての制御が終了する。
なお、本実施の形態では、ＣＰＵ１０１は、プログラムデータ管理サーバ１７０１から更新に係るプログラムデータを識別するプログラムデータ識別情報を受け取る毎に、セキュリティデバイス２２０３に対してプログラムデータの更新通知を送信する。よって、セキュリティデバイス２２０３は、プログラムデータの更新が成されるごとに、再シール処理を要するデータに対して再シール処理を実行する。【０１４７】
すなわち、旧構成累積値を用いてシールされたデータについては、プログラムデータの更新が検出された時点で再シール処理が行われる。
従って、再シール処理の後は、更新後のプログラムデータは、新構成累積値を用いることで復号化条件を満たすことができるようになり、上記実施の形態において行われていたデータの使用における旧構成累積値の算出や、旧構成累積値を使用しての復号化条件の判断等は不要となる。【０１４８】
（その他変形例）
なお、本発明を上記の実施の形態に基づいて説明してきたが、本発明は、上記の実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々変更を加え得ることは勿論である。
（１）実施の形態５に係る更新証明書は、図２４（Ａ）のように、新構成に係るバージョンと累積値及び旧構成に係るバージョンと累積値といった２世代についての情報を記録するのに限らず、例えば図２４（Ｂ）に示すように複数世代のバージョンと累積値を記録することとしてもよい。【０１４９】
図２４（Ｂ）は、複数世代のバージョンと、そのバージョンに対応する累積値とを記録する更新証明書を示す。
これにより、情報端末１７０３において、プログラムデータの更新が頻繁に行われ、データに対応付けられている復号化条件に複数世代前のプログラムデータに係るダイジェストが含まれることとなっても、更新証明書に含まれる前記復号化条件に対応する複数世代前の累積値を用いて復号化条件を満たすことができるようになる。【０１５０】
（２）実施の形態５では、情報端末の内部で更新証明書を作っていたが、これに限られるものではない。例えば、情報端末の内部で更新証明書を作らずに、実施の形態１〜４と同様、外部のサーバや記録媒体を介して更新証明書を取得するとしてもよい。この場合、更新証明書の提供者識別情報は更新証明書を生成する外部機関の識別情報となり、更新証明書に施される署名は、更新証明書を生成する外部機関による署名となる。また、この場合、実施の形態１〜４とは異なり、提供される更新証明書には、更新前後のプログラムデータのダイジェストではなく、図２４（Ａ）もしくは図２４（Ｂ）に示した情報が含まれる。この場合も、累積値が外部から与えられることとなるので、実施の形態５と同様に、更新前の累積値を計算するという処理や、更新前のプログラムデータに係る累積値を格納する更新前累積値格納部が不要となる。【０１５１】
（３）実施の形態５では、更新証明書生成部２２０２は、更新対象のプログラムデータの識別情報と更新後のプログラムデータのバージョン番号を含む更新証明書生成指示をもとに更新証明書を生成していたが、実施の形態１〜４における個々のプログラムデータの更新証明書を含む更新証明書生成指示をもとに更新証明書を生成するようにしてもよい。この場合、個々のプログラムデータの更新証明書はプログラムデータの提供者による署名が施されたものであり、不正なプログラムデータの構成に基づく更新証明書が生成されてしまうことを防止することが出来る。【０１５２】
（４）上述した実施の形態およびその変形例では、更新証明書として、第Ｎ−１世代から第Ｎ−ｉ世代までのダイジェストまたは累積値を格納する構成を開示していたが、これに限られるものではない。例えば、ユーザから指定された世代のダイジェストまたは累積値と、最新の世代のダイジェストまたは累積値のみを格納するとしても良い。このような変形例が役に立つケースとしては、ユーザがプログラムデータの更新を忘れており、更新によってプログラムデータのバージョンが２世代以上一度に上がった場合が考えられる。この場合、情報端末の内部では、更新の前後の中間世代にあたるダイジェストまたは累積値を使ったシールが行われることはない。そのため、更新証明書に中間世代のダイジェストまたは累積値を含ませる意味は薄い。したがって、シールした情報のアンシールに必要なダイジェストまたは累積値のみを取得できるようにした方が、更新証明書の容量の削減に繋がる。【０１５３】
なお、この場合、古いプログラムデータの世代は、ユーザが指定するのではなく、ネットワーク等を介して自動的に更新証明書の発行機関に通知されるとしても良い。通知を行うタイミングとしては、プログラムデータの更新が指示された時などが考えられる。通知を受け取った発行機関は、受け取ったプログラムデータの世代に対応するダイジェストまたは累積値と、最新のプログラムデータに対応するダイジェストまたは累積値とを含んだ更新証明書を作成し、情報装置に送信する。これにより、ユーザは更新前のプログラムデータの世代を調べることなく、自動的に更新前のプログラムデータの世代に対応するダイジェストまたは累積値を含んだ更新証明書を得ることができる。【０１５４】
（５）上述した実施の形態、および、その変形例では、データのシールは、データと累積値とを対応付けた上で暗号化することによって実現していた。しかし、シールの仕方はこれに限られるものではない。例えば、累積値とデータを対応付けるのではなく、そのデータを使用するプログラムデータのダイジェストとデータとを対応付けても良い。また、データと累積値等を対応付けるのではなく、データを累積値やプログラムデータのダイジェストを鍵として用いて暗号化するとしてもよい。すなわち、データをプログラムデータと対応付けることができ、正しい対応関係が満たされなければデータを取得できない仕組みとなっていれば、シールの実現方法はどのようなものであってもよい。
（６）上述した実施の形態、および、その変形例では、データのシールは、データとプログラムデータのダイジェストの累積値とを対応付けた上で暗号化することによって実現していた。しかし、シールの仕方はこれに限られるものではない。例えば、プログラムデータのダイジェストだけの累積値とデータを対応付けるのではなく、プログラムデータのダイジェスト及び当該プログラムデータの実行中に起こるイベント情報のダイジェストの累積値とデータとを対応付けても良い。ここでプログラムデータの実行中に起こるイベント情報とは、当該プログラムデータが行う各種の処理の処理結果や他の機器とのデータ通信、外部からのデータ入力や情報端末の操作等を意味し、例えば、外部のサーバとの認証処理に成功したという結果や、情報端末１７０３のユーザにより適切なパスワードの入力が行われたといったイベントの情報である。すなわち、データをプログラムデータが行う各種の処理の処理結果や外部からのデータ入力等のイベント情報と対応付け、予め定められた正しいイベントが起きなければデータを取得できない仕組みとしてもよい。
（７）上述した実施の形態、および、その変形例では、シールを、データと累積値とを対応付けた上で暗号化することによって実現していた。しかし、シールの仕方はこれに限られるものではない。例えば、累積値とデータを対応付けるのではなく、累積値と情報端末での暗号処理に用いられる秘密鍵とを対応付けても良い。この場合、シールされた秘密鍵は、アンシールの際にはセキュリティデバイス内で復号されるので、平文の秘密鍵がセキュリティデバイスの外部にでることはない。【０１５５】
この場合、シールによって対応付けられた累積値とセキュリティデバイスの累積値格納部２０２が保持する累積値とが一致した場合にのみ、セキュリティデバイス内で復号された秘密鍵を用いた処理が可能となり、セキュリティデバイス内で暗復号処理や署名処理が行われる。
また、シールの対象とする情報は秘密鍵に限られるものではなく、共通鍵暗号における共通鍵など、情報端末で行う暗号処理に用いられる鍵の情報であればどのようなものであってもよい。【０１５６】
（８）上述した実施の形態、および、その変形例では、サービス提供サーバ１６１０の照合値ＤＢ１６１２が更新されていない場合に、情報端末９００は、サービス提供サーバ１６１０からエラーメッセージを受け取った上で更新前累積値格納部２０６が保持する値をサービス提供サーバ１６１０に送っていた。しかし、このような実装に限られるものではなく、照合値ＤＢ１６１２が更新されていないケースを想定して、最初から情報端末９００が、累積値格納部２０２が保持する値と更新前累積値格納部２０６が保持する値とを同時にサービス提供サーバ１６１０に送信するとしてもよい。この場合、サービス提供サーバ１６１０は、受け取った何れかの値と一致するのであれば、情報サービスの提供を行う。【０１５７】
（９）上記の各装置は、具体的には、マイクロプロセッサ、ＲＯＭ、ＲＡＭ、ハードディスクユニット、ディスプレイユニット、キーボード、マウスなどから構成されるコンピュータシステムである。前記ＲＡＭ又は前記ハードディスクユニットには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムに従って動作することにより、各装置は、その機能を達成する。ここで、コンピュータプログラムは、所定の機能を達成するために、コンピュータに対する指令を示す命令コードが複数個組み合わされて構成されたものである。【０１５８】
なお、各装置は、マイクロプロセッサ、ＲＯＭ、ＲＡＭ、ハードディスクユニット、ディスプレイユニット、キーボード、マウスなどの全てを含むコンピュータシステムに限らず、これらの一部から構成されているコンピュータシステムであってもよい。
（１０）上記の各装置を構成する構成要素の一部又は全部は、１個のシステムＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ：大規模集積回路）から構成されているとしてもよい。システムＬＳＩは、複数の構成部を１個のチップ上に集積して製造された超多機能ＬＳＩであり、具体的には、マイクロプロセッサ、ＲＯＭ、ＲＡＭなどを含んで構成されるコンピュータシステムである。前記ＲＡＭには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムに従って動作することにより、システムＬＳＩは、その機能を達成する。これらは個別に１チップ化されても良いし、一部又は全てを含むように１チップ化されても良い。【０１５９】
また、ここでは、システムＬＳＩとしたが、集積度の違いにより、ＩＣ、システムＬＳＩ、スーパーＬＳＩ、ウルトラＬＳＩと呼称されることもある。
また、集積回路化の手法はＬＳＩに限るものではなく、専用回路又は汎用プロセサで実現してもよい。ＬＳＩ製造後に、プログラムすることが可能なＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）や、ＬＳＩ内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサーを利用しても良い。【０１６０】
さらには、半導体技術の進歩又は派生する別技術によりＬＳＩに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。バイオ技術の適用等が可能性としてありえる。
（１１）上記の各装置を構成する構成要素の一部又は全部は、各装置に脱着可能なＩＣカード又は単体のモジュールから構成されているとしてもよい。前記ＩＣカード又は前記モジュールは、マイクロプロセッサ、ＲＯＭ、ＲＡＭ、などから構成されるコンピュータシステムである。前記ＩＣカード又は前記モジュールは、上記の超多機能ＬＳＩを含むとしてもよい。マイクロプロセッサが、コンピュータプログラムに従って動作することにより、前記ＩＣカード又は前記モジュールは、その機能を達成する。このＩＣカード又はこのモジュールは、耐タンパ性を有するとしてもよい。【０１６１】
（１２）本発明は、上記に示す方法であるとしてもよい。また、これらの方法をコンピュータにより実現するコンピュータプログラムであるとしてもよいし、前記コンピュータプログラムからなるデジタル信号であるとしてもよい。
また、本発明は、前記コンピュータプログラム又は前記デジタル信号をコンピュータ読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、ＣＤ―ＲＯＭ、ＭＯ、ＤＶＤ、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、ＢＤ（Ｂｌｕ−ｒａｙ  Ｄｉｓｃ）、半導体メモリなど、に記録したものとしてもよい。また、これらの記録媒体に記録されている前記コンピュータプログラム又は前記デジタル信号であるとしてもよい。【０１６２】
また、本発明は、前記コンピュータプログラム又は前記デジタル信号を、電気通信回線、無線又は有線通信回線、インターネットを代表とするネットワーク、データ放送等を経由して伝送するものとしてもよい。
また、前記プログラム又は前記デジタル信号を前記記録媒体に記録して移送することにより、又は前記プログラム又は前記デジタル信号を前記ネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしてもよい。【０１６３】
（１３）上記実施の形態及び上記変形例をそれぞれ組み合わせるとしてもよい。
【産業上の利用可能性】
【０１６４】
本発明は、本発明の情報端末に搭載されるセキュリティデバイスをそれらの機器に搭載し、情報端末と同様の構成にすることによって、プログラムデータが更新された場合でも、更新したプログラムデータを元に戻すことなく、シールされたデータの復号化や、ＣＰＵが実行しているプログラムデータを認証するサービス提供サーバからの情報サービスの提供を受けることができるという効果を有し、パーソナルコンピュータや携帯電話機、オーディオプレーヤ、テレビジョン受像機、ビデオレコーダなど、プログラムデータの更新を行う情報通信機器や家電機器に有用である。
【図１】
2008081801.tif 000003
【図２】
2008081801.tif 000004
【図３】
2008081801.tif 000005
【図４】
2008081801.tif 000006
【図５】
2008081801.tif 000007
【図６】
2008081801.tif 000008
【図７】
2008081801.tif 000009
【図８】
2008081801.tif 000010
【図９】
2008081801.tif 000011
【図１０】
2008081801.tif 000012
【図１１】
2008081801.tif 000013
【図１２】
2008081801.tif 000014
【図１３】
2008081801.tif 000015
【図１４】
2008081801.tif 000016
【図１５】
2008081801.tif 000017
【図１６】
2008081801.tif 000018
【図１７】
2008081801.tif 000019
【図１８】
2008081801.tif 000020
【図１９】
2008081801.tif 000021
【図２０】
2008081801.tif 000022
【図２１】
2008081801.tif 000023
【図２２】
2008081801.tif 000024
【図２３】
2008081801.tif 000025
【図２４】
2008081801.tif 000026
【図２５】
2008081801.tif 000027
【図２６】
2008081801.tif 000028
【手続補正書】
【提出日】平成20年12月11日(2008.12.11)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
プログラムを実行する情報端末であって、
旧プログラムの特徴を示す旧特徴値と前記旧プログラムの更新版である新プログラムの特徴を示す新特徴値との組を含む更新証明書を取得する更新証明書取得手段と、
データを、前記データを使用していたプログラムである過去プログラムの特徴を示す過去特徴値と対応付けて保持している保持手段と、
前記新特徴値を用いて、前記情報端末で実行中のプログラムである現プログラムが前記新プログラムと一致するか否かを判定する判定手段と、
前記判定手段により一致すると判定された場合に、前記旧特徴値と前記過去特徴値とに基づいて前記データの使用可否を判断し、使用可と判断された場合に、前記実行中の現プログラムに対し前記データの使用を許可する許可手段と
を備えることを特徴とする情報端末。
【請求項２】
前記新プログラムのダイジェストに係る値は、前記新プログラムのダイジェストであり、
前記判定手段は、
前記現プログラムのダイジェストを生成するダイジェスト生成部と、
前記現プログラムのダイジェストと前記新プログラムのダイジェストとが一致する場合に、前記現プログラムが前記新プログラムと一致すると決定する決定部と
を含むことを特徴とする請求項１記載の情報端末。
【請求項３】
前記旧特徴値は、前記旧プログラムのダイジェストであり、
前記過去特徴値は、前記過去プログラムのダイジェストであり、
前記データは、前記過去プログラムのダイジェストに係る値である使用条件値と対応付けられており、
前記ダイジェスト生成部は、更に、前記現プログラムが実行されるより前に所定の実行順序に従い実行された１以上のプログラムそれぞれのダイジェストを生成し、
前記許可手段は、
前記１以上のプログラムそれぞれのダイジェストと、前記更新証明書に含まれる前記旧プログラムのダイジェストとを累積演算して更新前累積値を生成する累積値生成部と、
前記使用条件値と前記更新前累積値とが一致するか否かを判定する累積値判定部と、
前記累積値判定部により一致すると判定された場合に、前記現プログラムに対し前記データの使用を許可する使用許可部と
を備えることを特徴とする請求項２記載の情報端末。
【請求項４】
前記累積値生成部は、前記判定手段により一致すると判定された場合に前記更新前累積値を生成し、
前記判定手段により一致しないと判定された場合に、前記現プログラムのダイジェストと、前記１以上のプログラムそれぞれのダイジェストとを累積演算して現累積値を生成し、
前記累積値判定部は、
前記判定手段により一致すると判定された場合に、前記使用条件値と前記更新前累積値とが一致するか否かを判定し、
前記判定手段により一致しないと判定された場合に、前記使用条件値と前記現累積値とが一致するか否かを判定し、
前記使用許可部は、前記累積値判定部により一致すると判定された場合に、前記現プログラムに対し前記データを使用許可する
ことを特徴とする請求項３記載の情報端末。
【請求項５】
前記累積値生成部は、更に、前記更新前累積値、および、前記現プログラムのダイジェストと前記１以上のプログラムそれぞれのダイジェストとを累積演算した現累積値を生成し、
前記使用許可部は、前記使用条件値が、前記現累積値又は前記更新前累積値と一致するか否かを判定し、前記現累積値又は前記更新前累積値のいずれかと一致すると判定した場合に、実行中の前記現プログラムに対し前記データの使用を許可する
ことを特徴とする請求項３記載の情報端末。
【請求項６】
前記累積値生成部は、更に、
前記１以上のプログラムそれぞれのダイジェストと、前記現プログラムのダイジェストとを累積演算して現累積値を生成し、
前記許可手段は、更に、
前記データを使用可と判断した場合に、前記データに対応付けられている前記使用条件値の値を前記現累積値に更新する
ことを特徴とする請求項３記載の情報端末。
【請求項７】
前記情報端末において、前記データと前記使用条件値とは暗号化された後に保持されており、
前記許可手段は、更に、
前記使用許可部による判定の前に、前記データと前記使用条件値とを復号する復号部と、
前記現プログラムによる前記データの使用が終了した後に、前記データと前記使用条件値とを暗号化する暗号化部と
を備えることを特徴とする請求項３記載の情報端末。
【請求項８】
前記新特徴値は、前記情報端末において前記現プログラムより前に所定の実行順序に従い実行される１以上のプログラムそれぞれのダイジェストと、前記新プログラムのダイジェストとを累積演算した結果である更新後累積値であり、
前記判定手段は、
前記現プログラムが実行されるより前に所定の実行順序に従い実行された１以上のプログラムそれぞれのダイジェストと、前記現プログラムのダイジェストとを生成するダイジェスト生成部と、
前記ダイジェスト生成部により生成されたダイジェストを累積演算して現累積値を生成する累積値生成部と、
前記更新後累積値と前記現累積値とが一致する場合に、前記現プログラムが前記新プログラムと一致すると決定する決定部と
を含むことを特徴とする請求項１記載の情報端末。
【請求項９】
前記旧特徴値は、前記情報端末において前記現プログラムより前に所定の実行順序に従い実行される１以上のプログラムそれぞれのダイジェストと、前記旧プログラムのダイジェストとを累積演算した結果である更新前累積値であり、
前記過去特徴値は、前記情報端末において前記現プログラムより前に所定の実行順序に従い実行される１以上のプログラムそれぞれのダイジェストと、前記過去プログラムのダイジェストとを累積演算した結果である過去累積値であり、
前記データは前記過去特徴値と同一の値である使用条件値と対応付けられており、
前記許可手段は、
前記判定手段により一致すると判定された場合に、前記使用条件値と、前記更新前累積値とが一致するか否かを判定する累積値判定部と、
前記累積値判定部により一致すると判定された場合に、実行中の前記現プログラムに対し、前記データの使用を許可する使用許可部と
を備えることを特徴とする請求項８記載の情報端末。
【請求項１０】
前記許可手段は、更に、
前記使用許可部によりデータの使用が許可された場合に、前記データに対応付けられている前記使用条件値の値を、前記累積値生成部により生成された前記現累積値に更新する再シール部
を備えることを特徴とする請求項９記載の情報端末。
【請求項１１】
前記情報端末は、プログラムの特徴を示す特徴値である認証値に基づきサービスの提供可否を判定するサービス提供装置と共に用いられ、
前記サービス提供装置は、
プログラムの特徴を示す特徴値である照合値を記憶する記憶手段と、
前記情報端末から認証値を受信する受信手段と、
前記認証値と前記照合値とが一致する場合に、前記情報端末にサービスを提供する提供手段とを備え、
前記情報端末は、更に、
前記サービス提供装置に対し、前記現プログラムの特徴を示す認証値を送信し、前記認証値の送信に対する応答として前記サービスの提供が成されなかった場合に、前記旧プログラムの特徴を示す特徴値である認証値を送信する送信手段
を備えることを特徴とする請求項１記載の情報端末。
【請求項１２】
前記更新証明書取得手段は、
前記新プログラムを更新するための更新用プログラムを取得するプログラム取得部と、
前記更新用プログラムの特徴を示す更新用特徴値を生成する更新用ダイジェスト生成部と、
前記更新証明書に含まれる旧特徴値を、前記更新証明書に含まれる新特徴値で書き換え、前記更新証明書に含まれる新特徴値を、前記ダイジェスト生成部により生成された更新用特徴値で書き換える更新証明書更新部と
を含むことを特徴とする請求項１記載の情報端末。
【請求項１３】
プログラムを実行する情報端末に用いられるセキュリティデバイスであって、
前記情報端末は、
旧プログラムのダイジェストと、前記旧プログラムの更新版である新プログラムのダイジェストとの組を含む更新証明書を取得する更新証明書取得手段と、
データを、前記データを使用していたプログラムである過去プログラムのダイジェストである使用条件値と対応付けて保持している保持手段と、
実行中の現プログラムが実行されるより前に所定の実行順序に従い実行された１以上のプログラムそれぞれのダイジェストと、前記現プログラムのダイジェストとを生成するダイジェスト生成手段と、
前記現プログラムのダイジェストと前記新プログラムのダイジェストとが一致する場合に、前記現プログラムが前記新プログラムと一致すると決定する決定手段と
を備え、
前記セキュリティデバイスは、
前記判定手段により一致すると判定された場合に、前記１以上のプログラムそれぞれのダイジェストと、前記更新証明書に含まれる前記旧プログラムのダイジェストとを累積演算して累積値を生成する累積値生成部と、
前記使用条件値と、前記累積値生成部により生成された累積値とが一致するか否かを判定する累積値判定部と、
前記累積値判定部により一致すると判定された場合に、前記現プログラムに対し前記データの使用を許可する使用許可部と
を備えることを特徴とするセキュリティデバイス。
【請求項１４】
プログラムを実行する情報端末に用いられるセキュリティデバイスであって、
前記情報端末は、
実行中のプログラムである現プログラムより前に所定の実行順序に従い実行される１以上のプログラムそれぞれのダイジェストと旧プログラムのダイジェストとを累積演算した結果である更新前累積値と、前記現プログラム前に所定の実行順序に従い実行される１以上のプログラムそれぞれのダイジェストと前記旧プログラムの更新版である新プログラムのダイジェストとを累積演算した結果である更新後累積値との組を含む更新証明書を取得する更新証明書取得手段と、
データを、前記データを使用していたプログラムである過去プログラムのダイジェストに係る情報である使用条件値と対応付けて保持している保持手段と、
前記現プログラムが実行されるより前に所定の実行順序に従い実行された１以上のプログラムそれぞれのダイジェストと、前記現プログラムのダイジェストとを生成するダイジェスト生成手段と、
前記セキュリティデバイスから、現累積値を取得する現累積値取得手段と、
前記現累積値と前記更新後累積値とが一致する場合に、前記現プログラムが前記新プログラムと一致すると決定する決定手段とを備え、
前記セキュリティデバイスは、
前記ダイジェスト生成部により生成されたダイジェストを累積演算して前記現累積値を生成し、前記情報端末に出力する累積値生成手段と、
前記決定手段により一致すると決定された場合に、前記使用条件値と、前記更新前累積値とが一致するか否かを判定する累積値判定手段と、
前記累積値判定部により一致すると判定された場合に、実行中の前記現プログラムに対し、前記データの使用を許可する使用許可手段と
を備えることを特徴とするセキュリティデバイス。
【請求項１５】
プログラムを実行する情報端末に用いられるデータ保護方法であって、
旧プログラムの特徴を示す旧特徴値と前記旧プログラムの更新版である新プログラムの特徴を示す新特徴値との組を含む更新証明書を取得する更新証明書取得ステップと、
データを、前記データを使用していたプログラムである過去プログラムの特徴を示す過去特徴値と対応付けて保持している保持ステップと、
前記新特徴値を用いて、前記情報端末で実行中のプログラムである現プログラムが前記新プログラムと一致するか否かを判定する判定ステップと、
前記判定手段により一致すると判定された場合に、前記旧特徴値と前記過去特徴値とに基づいて前記データの使用可否を判断し、使用可と判断された場合に、前記実行中の現プログラムに対し前記データの使用を許可する許可ステップと
を備えることを特徴とするデータ保護方法。
【請求項１６】
プログラムを実行する情報端末に用いられるデータ保護プログラムであって、
旧プログラムの特徴を示す旧特徴値と前記旧プログラムの更新版である新プログラムの特徴を示す新特徴値との組を含む更新証明書を取得する更新証明書取得ステップと、
データを、前記データを使用していたプログラムである過去プログラムの特徴を示す過去特徴値と対応付けて保持している保持ステップと、
前記新特徴値を用いて、前記情報端末で実行中のプログラムである現プログラムが前記新プログラムと一致するか否かを判定する判定ステップと、
前記判定手段により一致すると判定された場合に、前記旧特徴値と前記過去特徴値とに基づいて前記データの使用可否を判断し、使用可と判断された場合に、前記実行中の現プログラムに対し前記データの使用を許可する許可ステップと
を含むことを特徴とするデータ保護プログラム。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パーソナルコンピュータや携帯電話機などの情報通信機器、インターネットアクセス機能を備えたテレビ受信装置などの情報家電機器等の情報端末と、その情報端末に内蔵されるセキュリティデバイスに関し、特に、情報端末において実行されているプログラムデータの認証処理や、情報端末において実行されるプログラムデータにバインドして暗号化されたデータの復号化処理を、プログラムデータが更新された場合においても可能にするものである。
【背景技術】
【０００２】
近年、ネットワークを介して提供されるサービスは、音楽や映像といった著作物の提供や、企業が保有する機密情報の閲覧、オンラインバンキングなど多岐に渡り、かつ、その中で扱われる情報の経済的価値も高いものになってきている。多岐に渡るサービスに対応するため、パーソナルコンピュータ、携帯端末、携帯電話、デジタル家電などの情報端末には、多くのクライアントソフトウェア（プログラムデータ）がインストールされる。また、それらのプログラムデータにはサービスを受ける機能そのものの他に、高価な情報を保護するための機能が実装されている。
【０００３】
こうしたサービスで得られる価値が高まるにつれ、情報端末上のプログラムデータに不正な変更を加えるなどの方法でソフトウェアが課している制限を迂回されることによる被害が深刻化している。このため、サービスを提供しようとしているパーソナルコンピュータのクライアントソフトウェアおよびそれが動作するオペレーティングシステムを含んだ実行環境に、不正な変更が加えられていないかどうかを検証する必要性が増している。
【０００４】
そうした必要性に応えるため、ＴＣＧ(Trusted Computing Group)などにより、パーソナルコンピュータにおいて実行されているプログラムデータの情報を正確に伝える技術が提案されている。
図１６は、ＴＣＧなどによって提案されている技術に基づき、パーソナルコンピュータ１６００が、保持するデータを暗号化して保護し、サービス提供サーバ１６１０がパーソナルコンピュータ１６００上で実行されているプログラムデータを認証して情報サービスを提供するシステムの一例を示している。パーソナルコンピュータ１６００には、ＴＰＭ(TrustedPlatform Module)１６０２と呼ばれる耐タンパモジュールが実装されている。
【０００５】
パーソナルコンピュータ１６００のＣＰＵ１６０１は、ＢＩＯＳ１６０５、ＯＳ１６０６、アプリケーション１６０７、およびプログラムデータのコードを実行する際に、それぞれのハッシュを計算し、計算したハッシュをＴＰＭ１６０２に送信する。ハッシュを受信したＴＰＭ１６０２は、ＰＣＲ（PlatformConfiguration Register）１６０４に既に格納されているハッシュと受信したハッシュとを連結し、その連結したデータに対して更にハッシュ演算を実行してその結果をＰＣＲ１６０４に格納する。ＰＣＲ１６０４には、ＣＰＵ１６０１が実行するプログラムデータを累積した情報が格納されることになるので、ＰＣＲ１６０４の値は、パーソナルコンピュータ１６００上でどのプログラムデータが実行されているかということを示す。
【０００６】
パーソナルコンピュータ１６００で、データを秘匿化して安全に保持する場合には、ＴＰＭ１６０２は、データをＴＰＭ１６０２のＰＣＲ１６０４の値にバインドして暗号化してハードディスク１６０３に保存する。具体的には、ＴＰＭ１６０２は、そのデータをパーソナルコンピュータ１６００で閲覧または処理する場合にパーソナルコンピュータ１６００のＣＰＵ１６０１が実行していることが期待される正しいプログラムデータを実際にＣＰＵ１６０１が実行している場合のＰＣＲの値を復号化の際の照合値として含める形式でデータを暗号化する。暗号化は公開鍵暗号の公開鍵で暗号化され、その公開鍵に対応する秘密鍵はＴＰＭ１６０２が管理する。
【０００７】
このようにデータをＴＰＭ１６０２のＰＣＲ１６０４の値にバインドして暗号化することをシール（Seal）と呼ぶ。逆に、シールされたデータ１６０８を復号化することをアンシール（Unseal）と呼ぶ。
シールされたデータ１６０８を復号化する場合、ＴＰＭ１６０２は、まず、暗号化に用いた公開鍵に対応する秘密鍵を用いてシールされたデータ１６０８の暗号を復号化する。次に、ＴＰＭ１６０２は、復号化したデータに含まれる照合値とＰＣＲ１６０４に格納されている値（ＰＣＲ値）とを照合する。照合の結果、一致した場合、ＴＰＭ１６０２は、パーソナルコンピュータ１６００上で正しいプログラムデータが実行されていることを認証して、復号化したデータをＴＰＭ１６０２からＣＰＵ１６０１へ出力する。照合の結果、一致しなかった場合、ＴＰＭ１６０２は、正しいプログラムデータが実行されていることを認証せず、復号化したデータをＴＰＭ１６０２から外部へ出力しない。
【０００８】
また、パーソナルコンピュータ１６００がサービス提供サーバ１６１０から情報サービスの提供を受ける場合、パーソナルコンピュータ１６００は、ＰＣＲ１６０４に格納されている値（ＰＣＲ値）にＴＰＭ１６０２が電子署名を施したデータ１６２０をサービス提供サーバ１６１０へ送信する。この時のＰＣＲ１６０４に格納されている値（ＰＣＲ値１６２０ａ）に電子署名を施したデータ１６２０は、ＴＰＭ１６０２がＣＰＵ１６０１からの要求に基づいて、ＰＣＲ１６０４に格納されている値（ＰＣＲ値１６２０ａ）とサービス提供サーバ１６１０のクライアント認証部１６１１から受信したチャレンジ情報１６２０ｂ（サービス提供サーバ１６１０が生成した乱数など）とを連結したデータに対して署名を施したものである。
【０００９】
サービス提供サーバ１６１０の照合値ＤＢ１６１２には、サービス提供サーバ１６１０側が期待する正しいプログラムデータをパーソナルコンピュータ１６００のＣＰＵ１６０１が実行している場合のＰＣＲの値（ＰＣＲ照合値）が格納されている。サービス提供サーバ１６１０のクライアント認証部１６１１は、まず、パーソナルコンピュータ１６００から受信したデータ１６２０に施された電子署名を検証する。次に、クライアント認証部１６１１は、データ１６２０に含まれるＰＣＲ値１６２０ａと照合値ＤＢ１６１２に格納されているＰＣＲ照合値とを照合し、さらにデータ１６２０に含まれるチャレンジ情報１６２０ｂとパーソナルコンピュータ１６００に対して送信したチャレンジ情報１６２０ｂとを照合して、それぞれが一致した場合に、パーソナルコンピュータ１６００上で正しいプログラムデータが実行されていることを認証する。そして、サービス提供サーバ１６１０のサービス提供部１６１３が、パーソナルコンピュータ１６００に情報サービスを提供する。照合の結果、一致しなかった場合は、サービス提供サーバ１６１０のサービス提供部１６１３は、パーソナルコンピュータ１６００へ情報サービスを提供しない。
【００１０】
上記のＴＣＧなどによって提案されている技術は、例えば特許文献１や特許文献２において公開されている。
【特許文献１】米国特許出願公開第２００５／００２１９６８号明細書
【特許文献２】特表２００２−５３６７５７号公報
【発明の開示】
【発明が解決しようとする課題】
【００１１】
しかし、ＴＣＧなどによって提案されている技術では、プログラムデータのバージョンアップや、バグの改修、脆弱性の改善のためのアップデートによって、プログラムデータが更新された場合、ＴＰＭ１６０２は、更新前のＰＣＲ１６０４の値にバインドされてシールされたデータを復号化することができなくなってしまうという問題がある。
また、プログラムデータの更新に合わせて、サービス提供サーバ１６１０の照合値ＤＢ１６１２に格納されているＰＣＲ照合値が更新されていない場合には、パーソナルコンピュータ１６００は、情報サービスの提供を受けることが出来ないという問題がある。暫定的に、プログラムデータを更新前のものに戻すことによって、シールされたデータを復号化したり、サービス提供サーバ１６１０からの情報サービスの提供を受けたりできるようにする方法も考えられる。しかし、バグや脆弱性がある状態に戻すことになる場合があるので、安全上の問題がある。
【００１２】
本発明は、かかる点に鑑みてなされたものであり、プログラムデータが更新された場合でも、更新したプログラムデータを元に戻すことなく、シールされたデータを復号化することができ、ＣＰＵが実行しているプログラムデータを認証するサービス提供サーバからの情報サービスの提供を受けることができる情報端末、およびセキュリティデバイスを提供することを目的とする。
【課題を解決するための手段】
【００１３】
上記課題を解決するために、本発明は、プログラムを実行する情報端末であって、旧プログラムの特徴を示す旧特徴値と前記旧プログラムの更新版である新プログラムの特徴を示す新特徴値との組を含む更新証明書を取得する更新証明書取得手段と、データを、前記データを使用していたプログラムである過去プログラムの特徴を示す過去特徴値と対応付けて保持している保持手段と、前記新特徴値を用いて、前記情報端末で実行中のプログラムである現プログラムが前記新プログラムと一致するか否かを判定する判定手段と、前記判定手段により一致すると判定された場合に、前記旧特徴値と前記過去特徴値とに基づいて前記データの使用可否を判断し、使用可と判断された場合に、前記実行中の現プログラムに対し前記データの使用を許可する許可手段とを備える。
【発明の効果】
【００１４】
本発明の情報端末は、上述の構成を備えることにより、プログラムの特徴値を用いて使用制限をかけるような情報端末において、データの使用制限開始時とデータの使用時との間にプログラムが更新されても、更新後のプログラムは前記データを継続して使用できる。従来は、古いプログラム（旧プログラム）と更新後プログラム（新プログラム）とで特徴値が異なることから、旧プログラムの特徴値を用いて使用制限がかけられたデータを新プログラムで使用することはできなかった。しかし、本発明によれば、更新証明書に含まれる旧プログラムの特徴値（旧特徴値）を用いて、前記データの使用制限を解除することができるので、新プログラムでもデータを継続して使用することができる。さらに、旧特徴値を用いて使用制限を解除するのは、情報端末で動作しているプログラムが新プログラムであることを確認した後である。そのため、本発明では、情報端末で動作している現プログラムが正常に更新されていることを確認した上で、使用制限を解除するよう制御することができる。
【００１５】
また、前記新プログラムのダイジェストに係る値は、前記新プログラムのダイジェストであり、前記判定手段は、前記現プログラムのダイジェストを生成するダイジェスト生成部と、前記現プログラムのダイジェストと前記新プログラムのダイジェストとが一致する場合に、前記現プログラムが前記新プログラムと一致すると決定する決定部とを含んでもよい。
【００１６】
この構成によれば、プログラムが正常に更新され、実行時点において改竄されていないことを確認した上で、データの使用を許可することができる。
また、前記旧特徴値は、前記旧プログラムのダイジェストであり、前記過去特徴値は、前記過去プログラムのダイジェストであり、前記データは、前記過去プログラムのダイジェストに係る値である使用条件値と対応付けられており、前記ダイジェスト生成部は、更に、前記現プログラムが実行されるより前に所定の実行順序に従い実行された１以上のプログラムそれぞれのダイジェストを生成し、前記許可手段は、前記１以上のプログラムそれぞれのダイジェストと、前記更新証明書に含まれる前記旧プログラムのダイジェストとを累積演算して更新前累積値を生成する累積値生成部と、前記使用条件値と前記更新前累積値とが一致するか否かを判定する累積値判定部と、前記累積値判定部により一致すると判定された場合に、前記現プログラムに対し前記データの使用を許可する使用許可部とを備えることとしてもよい。
【００１７】
この構成によれば、ダイジェストを累積演算した累積値を用いて、使用制限を解除することができる。これにより、更新対象となったプログラムのみならず、そのプログラムの実行環境まで含めて正当性を確認した上で使用制限を解除することができる。
また、前記累積値生成部は、前記判定手段により一致すると判定された場合に前記更新前累積値を生成し、前記判定手段により一致しないと判定された場合に、前記現プログラムのダイジェストと、前記１以上のプログラムそれぞれのダイジェストとを累積演算して現累積値を生成し、前記累積値判定部は、前記判定手段により一致すると判定された場合に、前記使用条件値と前記更新前累積値とが一致するか否かを判定し、前記判定手段により一致しないと判定された場合に、前記使用条件値と前記現累積値とが一致するか否かを判定し、前記使用許可部は、前記累積値判定部により一致すると判定された場合に、前記現プログラムに対し前記データを使用許可することとしてもよい。
【００１８】
また、前記累積値生成部は、更に、前記更新前累積値、および、前記現プログラムのダイジェストと前記１以上のプログラムそれぞれのダイジェストとを累積演算した現累積値を生成し、前記使用許可部は、前記使用条件値が、前記現累積値又は前記更新前累積値と一致するか否かを判定し、前記現累積値又は前記更新前累積値のいずれかと一致すると判定した場合に、実行中の前記現プログラムに対し前記データの使用を許可することとしてもよい。
【００１９】
この構成によれば、情報端末において、プログラムが新プログラムに更新され、旧プログラムの旧特徴値を生成し得ない状態においても、更新証明書に含まれる旧特徴値を用いて前記使用条件値に一致する累積値を生成でき、当該累積値を用いてデータを使用許可し、更新後のプログラムにデータを継続して使用させることができる。
また、前記累積値生成部は、更に、前記１以上のプログラムそれぞれのダイジェストと、前記現プログラムのダイジェストとを累積演算して現累積値を生成し、前記許可手段は、更に、前記データを使用可と判断した場合に、前記データに対応付けられている前記使用条件値の値を前記現累積値に更新することとしてもよい。
【００２０】
この構成によれば、前記データに係る前記使用条件値を置き換えた後は、新プログラムにおいて旧プログラムの旧特徴値を用いることなく前記データを使用することができる。
また、前記情報端末において、前記データと前記使用条件値とは暗号化された後に保持されており、前記許可手段は、更に、前記使用許可部による判定の前に、前記データと前記使用条件値とを復号する復号部と、前記現プログラムによる前記データの使用が終了した後に、前記データと前記使用条件値とを暗号化する暗号化部とを備えることとしてもよい。
【００２１】
この構成によれば、データと使用条件値を暗号化によって保護することが出来る。
また、前記新特徴値は、前記情報端末において前記現プログラムより前に所定の実行順序に従い実行される１以上のプログラムそれぞれのダイジェストと、前記新プログラムのダイジェストとを累積演算した結果である更新後累積値であり、前記判定手段は、前記現プログラムが実行されるより前に所定の実行順序に従い実行された１以上のプログラムそれぞれのダイジェストと、前記現プログラムのダイジェストとを生成するダイジェスト生成部と、前記ダイジェスト生成部により生成されたダイジェストを累積演算して現累積値を生成する累積値生成部と、前記更新後累積値と前記現累積値とが一致する場合に、前記現プログラムが前記新プログラムと一致すると決定する決定部とを含むこととしてもよい。
【００２２】
この構成によれば、情報端末において、更新対象のプログラムのみならず、そのプログラムの実行環境まで含めて正当性を確認した上で使用制限を解除することができる。
前記旧特徴値は、前記情報端末において前記現プログラムより前に所定の実行順序に従い実行される１以上のプログラムそれぞれのダイジェストと、前記旧プログラムのダイジェストとを累積演算した結果である更新前累積値であり、前記過去特徴値は、前記情報端末において前記現プログラムより前に所定の実行順序に従い実行される１以上のプログラムそれぞれのダイジェストと、前記過去プログラムのダイジェストとを累積演算した結果である過去累積値であり、前記データは前記過去特徴値と同一の値である使用条件値と対応付けられており、前記許可手段は、前記判定手段により一致すると判定された場合に、前記使用条件値と、前記更新前累積値とが一致するか否かを判定する累積値判定部と、前記累積値判定部により一致すると判定された場合に、実行中の前記現プログラムに対し、前記データの使用を許可する使用許可部とを備えてもよい。
【００２３】
この構成によれば、情報端末において、プログラムが新プログラムに更新されて更新前累積値を生成し得ない状態においても、前記更新証明書に旧プログラムの更新前累積値が含まれており、前記使用条件値に一致する累積値を更新証明書から得ることができるので、更新後のプログラムにデータを継続して使用させることができる。
また、前記許可手段は、更に、前記使用許可部によりデータの使用が許可された場合に、前記データに対応付けられている前記使用条件値の値を、前記累積値生成部により生成された前記現累積値に更新する再シール部を備えてもよい。
【００２４】
この構成によれば、前記データに係る前記使用条件値を置き換えた後は、新プログラムにおいて旧プログラムの更新前累積値を用いることなく前記データを使用することができる。
また、前記情報端末は、プログラムの特徴を示す特徴値である認証値に基づきサービスの提供可否を判定するサービス提供装置と共に用いられ、前記サービス提供装置は、プログラムの特徴を示す特徴値である照合値を記憶する記憶手段と、前記情報端末から認証値を受信する受信手段と、前記認証値と前記照合値とが一致する場合に、前記情報端末にサービスを提供する提供手段とを備え、前記情報端末は、更に、前記サービス提供装置に対し、前記現プログラムの特徴を示す認証値を送信し、前記認証値の送信に対する応答として前記サービスの提供が成されなかった場合に、前記旧プログラムの特徴を示す特徴値である認証値を送信する送信手段を備えることとしてもよい。
【００２５】
この構成によれば、前記情報端末において、プログラムが旧プログラムから新プログラムへと更新されることによりデータを使用するプログラムが旧プログラムから新プログラムに変わり、それに伴いデータを使用するプログラムの特徴値が旧特徴値から新特徴値に変わってしまっても、新プログラムは、更新証明書に含まれる旧特徴値に基づいて前記サービス提供装置からサービスの提供を受けることができる。
【００２６】
また、前記更新証明書取得手段は、前記新プログラムを更新するための更新用プログラムを取得するプログラム取得部と、前記更新用プログラムの特徴を示す更新用特徴値を生成する更新用ダイジェスト生成部と、前記更新証明書に含まれる旧特徴値を、前記更新証明書に含まれる新特徴値で書き換え、前記更新証明書に含まれる新特徴値を、前記ダイジェスト生成部により生成された更新用特徴値で書き換える更新証明書更新部とを含んでもよい。
【００２７】
この構成によれば、情報端末は、自端末内で更新証明書を生成し使用することができる。
本発明は、プログラムを実行する情報端末に用いられるセキュリティデバイスであって、前記情報端末は、旧プログラムのダイジェストと、前記旧プログラムの更新版である新プログラムのダイジェストとの組を含む更新証明書を取得する更新証明書取得手段と、データを、前記データを使用していたプログラムである過去プログラムのダイジェストである使用条件値と対応付けて保持している保持手段と、実行中の現プログラムが実行されるより前に所定の実行順序に従い実行された１以上のプログラムそれぞれのダイジェストと、前記現プログラムのダイジェストとを生成するダイジェスト生成手段と、前記現プログラムのダイジェストと前記新プログラムのダイジェストとが一致する場合に、前記現プログラムが前記新プログラムと一致すると決定する決定手段とを備え、前記セキュリティデバイスは、前記判定手段により一致すると判定された場合に、前記１以上のプログラムそれぞれのダイジェストと、前記更新証明書に含まれる前記旧プログラムのダイジェストとを累積演算して累積値を生成する累積値生成部と、前記使用条件値と、前記累積値生成部により生成された累積値とが一致するか否かを判定する累積値判定部と、前記累積値判定部により一致すると判定された場合に、前記現プログラムに対し前記データの使用を許可する使用許可部とを備える。
【００２８】
この構成によれば、累積値の生成及びデータの使用許可の判定をより安全に行うことができる。
本発明は、プログラムを実行する情報端末に用いられるセキュリティデバイスであって、前記情報端末は、実行中のプログラムである現プログラムより前に所定の実行順序に従い実行される１以上のプログラムそれぞれのダイジェストと旧プログラムのダイジェストとを累積演算した結果である更新前累積値と、前記現プログラム前に所定の実行順序に従い実行される１以上のプログラムそれぞれのダイジェストと前記旧プログラムの更新版である新プログラムのダイジェストとを累積演算した結果である更新後累積値との組を含む更新証明書を取得する更新証明書取得手段と、データを、前記データを使用していたプログラムである過去プログラムのダイジェストに係る情報である使用条件値と対応付けて保持している保持手段と、前記現プログラムが実行されるより前に所定の実行順序に従い実行された１以上のプログラムそれぞれのダイジェストと、前記現プログラムのダイジェストとを生成するダイジェスト生成手段と、前記セキュリティデバイスから、現累積値を取得する現累積値取得手段と、前記現累積値と前記更新後累積値とが一致する場合に、前記現プログラムが前記新プログラムと一致すると決定する決定手段とを備え、前記セキュリティデバイスは、前記ダイジェスト生成部により生成されたダイジェストを累積演算して前記現累積値を生成し、前記情報端末に出力する累積値生成手段と、前記決定手段により一致すると決定された場合に、前記使用条件値と、前記更新前累積値とが一致するか否かを判定する累積値判定手段と、前記累積値判定部により一致すると判定された場合に、実行中の前記現プログラムに対し、前記データの使用を許可する使用許可手段とを備える。
【００２９】
本発明は、プログラムを実行する情報端末に用いられるデータ保護方法であって、旧プログラムの特徴を示す旧特徴値と前記旧プログラムの更新版である新プログラムの特徴を示す新特徴値との組を含む更新証明書を取得する更新証明書取得ステップと、データを、前記データを使用していたプログラムである過去プログラムの特徴を示す過去特徴値と対応付けて保持している保持ステップと、前記新特徴値を用いて、前記情報端末で実行中のプログラムである現プログラムが前記新プログラムと一致するか否かを判定する判定ステップと、前記判定手段により一致すると判定された場合に、前記旧特徴値と前記過去特徴値とに基づいて前記データの使用可否を判断し、使用可と判断された場合に、前記実行中の現プログラムに対し前記データを出力する許可ステップとを備える。
【００３０】
本発明は、プログラムを実行する情報端末に用いられるデータ保護プログラムであって、旧プログラムの特徴を示す旧特徴値と前記旧プログラムの更新版である新プログラムの特徴を示す新特徴値との組を含む更新証明書を取得する更新証明書取得ステップと、データを、前記データを使用していたプログラムである過去プログラムの特徴を示す過去特徴値と対応付けて保持している保持ステップと、前記新特徴値を用いて、前記情報端末で実行中のプログラムである現プログラムが前記新プログラムと一致するか否かを判定する判定ステップと、前記判定手段により一致すると判定された場合に、前記旧特徴値と前記過去特徴値とに基づいて前記データの使用可否を判断し、使用可と判断された場合に、前記実行中の現プログラムに対し前記データの使用を許可する許可ステップとを含む。
【００３１】
この構成によれば、プログラムの特徴値を用いて使用制限をかけるような情報端末において、データの使用制限開始時とデータの使用時との間にプログラムが更新されても、更新後のプログラムは前記データを継続して使用できる。従来は、古いプログラム（旧プログラム）と更新後プログラム（新プログラム）とで特徴値が異なることから、旧プログラムの特徴値を用いて使用制限がかけられたデータを新プログラムで使用することはできなかった。しかし、本発明によれば、更新証明書に含まれる旧プログラムの特徴値（旧特徴値）を用いて、前記データの使用制限を解除することができるので、新プログラムでもデータを継続して使用することができる。さらに、旧特徴値を用いて使用制限を解除するのは、情報端末で動作しているプログラムが新プログラムであることを確認した後である。そのため、本発明では、情報端末で動作している現プログラムが正常に更新されていることを確認した上で、使用制限を解除するよう制御することができる。
【発明を実施するための最良の形態】
【００３２】
以下、本発明の実施の形態について、図面を用いて詳細に説明する。
（実施の形態１）
始めに、本発明の実施の形態１に係る情報端末１００の構成について説明する。
図１は、本発明の実施の形態１に係る情報端末１００の構成を示すブロック図である。情報端末１００は、図１に示すように、ＣＰＵ１０１、ＣＰＵ１０１が実行するプログラムデータを格納するプログラム格納部１０７、プログラムデータの更新を証明する更新証明書を格納する更新証明書格納部１０２、ＣＰＵ１０１が実行するプログラムデータのダイジェストを生成する計測部１０４、プログラムデータのダイジェストの累積演算を行ってその結果を保持するセキュリティデバイス１０６、セキュリティデバイス１０６が累積演算を行うプログラムデータのダイジェストを選択する選択部１０３、および、ＣＰＵ１０１またはセキュリティデバイス１０６が処理したデータを格納するデータ格納部１０５とから構成される。ここで、データのダイジェストとは、具体的には、データに対するＳＨＡ−１（SecureHash Algorithm 1）等のハッシュ演算の結果を指し、以下においてもダイジェストとは、ＳＨＡ−１等のハッシュ演算の結果を意味することとする。すなわち、ダイジェストを生成することは、ハッシュ値を計算する（「計測する」ともいう）ことを意味する。
【００３３】
選択部１０３と計測部１０４は、以下においてそれぞれ詳しく説明する動作を行う専用ハードウェアまたはＣＰＵ１０１が実行するソフトウェアによって実現される。
また、更新証明書格納部１０２とデータ格納部１０５とプログラム格納部１０７は、具体的には不揮発性メモリやハードディスクその他の記憶装置によって実現される。データ格納部１０５は、図１６におけるハードディスク１６０３に相当する。
【００３４】
プログラム格納部１０７は、更新されたプログラムデータ（更新後のプログラムデータ）を格納する。更新証明書格納部１０２は、プログラム格納部１０７に格納されている更新後のプログラムデータに対応する更新証明書を格納する。後述する更新証明書は、プログラムデータを更新する際にネットを介してダウンロードまたはＣＤ−ＲＯＭ等の記憶媒体を介してロードされ、更新証明書格納部１０２に格納される。通常、更新証明書は、更新後のプログラムデータと共に情報端末１００にロードされる。
【００３５】
また、データ格納部１０５は、セキュリティデバイス１０６が保持するプログラムデータのダイジェストの累積演算の結果にバインドしてシールされたデータを格納する。その中には、更新前のプログラムデータを実行した場合の累積演算の結果にバインドしてシールされたデータも含まれている。
図２は、本発明の実施の形態１におけるセキュリティデバイス１０６の構成を示すブロック図である。セキュリティデバイス１０６は、図２に示すように、ＣＰＵ１０１から受信したダイジェストの累積演算を行う累積演算部２０１と、累積演算部２０１が行った累積演算の結果を保持する累積値格納部２０２と、ＣＰＵ１０１から受信したアンシールコマンドに基づいてシールされたデータの暗号を復号化する復号化部２０３と、シールされたデータに含まれる復号化条件を満たしているか否かを検証する復号化条件検証部２０４と、ＣＰＵ１０１からの要求に基づいて累積値格納部２０２が保持する累積演算の結果に署名を行う署名部２０５とから構成される。セキュリティデバイス１０６は、図１６におけるＴＰＭ１６０２に、累積値格納部２０２は、ＰＣＲ１６０４にそれぞれ相当する。
【００３６】
累積値格納部２０２は、具体的には不揮発性メモリによって実現され、累積演算部２０１、復号化部２０３、復号化条件検証部２０４、および署名部２０５は、具体的にはセキュリティデバイス１０６が内蔵するＣＰＵ（不図示）と暗号コプロセッサ等の暗号処理アクセラレータ（不図示）と不揮発性メモリ（不図示）との組み合わせによって実現される。不揮発性メモリにはＣＰＵと暗号処理アクセラレータが実行するマイクロコードが格納される。
【００３７】
また、セキュリティデバイス１０６は、耐タンパ性を有し、累積値格納部２０２に保持される値は、外部から不正に改ざんできないようになっている。
図３（Ａ）に示すように、更新証明書格納部１０２に格納されている更新証明書３００は、プログラムデータ提供者がプログラムデータの更新を保証する証明書である。この更新証明書３００は、プログラムデータの識別情報３０１、更新後のプログラムデータのバージョン３０２、更新後のプログラムデータのダイジェスト３０３、更新前のプログラムデータのバージョン３０４、更新前のプログラムデータのダイジェスト３０５、プログラムデータ提供者の識別情報３０６、およびプログラムデータ提供者の署名３０７から構成される。
【００３８】
例えば、プログラムデータの識別情報３０１が、PROGRAM_A、更新後のプログラムデータのバージョン３０２がＶ２.０、更新前のプログラムデータのバージョン３０４がＶ１.０であった場合、更新証明書３３０は、プログラムデータPROGRAM_AがバージョンＶ１.０からバージョンＶ２.０に更新され、バージョンＶ１.０のプログラムデータのダイジェストは、更新前のプログラムデータのダイジェスト３０５であり、バージョンＶ２.０のプログラムデータのダイジェストは更新後のプログラムデータのダイジェスト３０５であることを証明する。
【００３９】
更新証明書格納部１０２には、更新証明書３００の署名３０７の有効性が検証された更新証明書３００だけが格納されている。
データ格納部１０５に格納されているシールされたデータ４００は、図４（Ａ）に示すように、復号化の条件を示す復号化条件４０１とデータ４０２とを連結したデータに対して暗号化を施したデータ構成となっている。
【００４０】
復号化条件４０１は、セキュリティデバイス１０６の復号化条件検証部２０４が復号化したデータを外部に出力するか否かの判定に用いる条件情報であり、プログラムデータのダイジェストの累積演算の結果を照合値とする条件情報を少なくとも一つ含む。復号化条件４０１には複数の条件情報が含まれていても良く、ユーザを認証するためのパスワード情報が含まれる場合もある。
【００４１】
また、図４（Ｂ）に示すように、シールされたデータ４００ａには、さらに属性情報４０３が付加された形態でデータ格納部１０５に格納されていてもよい。この属性情報４０３は、暗号化されておらず、シールされたデータ４００ａの暗号を復号化する際の条件を示す情報が平文で含まれている。例えば、あるプログラムデータが起動されていることが条件の場合には、そのプログラムデータの識別情報とバージョン情報とが含まれる。
【００４２】
次に、本実施の形態に係る情報端末１００の動作について説明する。
情報端末１００には、通常モードと復元モードの２つの動作モードがある。通常モードは情報端末１００が通常の動作を実行する動作モードであり、復元モードはプログラムデータの更新前の動作状態を擬似的に復元して動作を実行するモードである。
情報端末１００は、ユーザが情報端末１００の起動時に復元モードでの動作を指定した場合、および、前回の情報端末１００の起動中にユーザが次回の動作モードとして復元モードでの動作を指定していた場合に復元モードで動作し、それ以外の場合は通常モードで動作する。ＣＰＵ１０１は、どの動作モードで動作しているかという情報を保持する。
【００４３】
情報端末１００は、データ格納部１０５に格納されているシールされたデータ４００の暗号の復号化に失敗した場合に、復元モードで情報端末１００を再起動することをユーザに促すメッセージを表示する。さらに、ユーザが復元モードでの起動を指定した場合、情報端末１００は、復元モードで再起動する。
また、図４（Ｂ）のように、シールされたデータ４００ａに属性情報４０３が付加されている場合には、ユーザがシールされたデータ４００ａへのアクセスを指示した段階で、情報端末１００は、属性情報４０３（例えば、あるプログラムデータの識別情報とバージョン情報）の内容と現在起動しているプログラムデータ（例えば、そのプログラムデータの識別情報とバージョン情報）とを照合する。属性情報４０３の内容と現在起動しているプログラムデータとが一致していない場合には、情報端末１００は、復元モードで情報端末１００を再起動することをユーザに促すメッセージを表示する。さらに、ユーザが復元モードでの起動を指定した場合、情報端末１００は、復元モードで再起動する。
【００４４】
以下に、ＣＰＵ１０１が一つのプログラムデータを実行する際に行う処理について図５を参照して説明する。図５は、本発明の実施の形態１または後述する実施の形態２における情報端末のＣＰＵが一つのプログラムデータを実行する際に行う処理のフロー図である。情報端末１００のＣＰＵ１０１は、プログラム格納部１０７に格納されたプログラムデータを実行する。ＣＰＵ１０１は、プログラムデータを実行する際に、実行するプログラムデータのダイジェストを計測部１０４が生成するように計測部１０４に指示する。また、ＣＰＵ１０１は、セキュリティデバイス１０６にダイジェストの累積演算の結果を保持するように指示する。
【００４５】
まず、計測部１０４が、実行されるプログラムデータのダイジェストを生成する（ステップＳ５０１）。具体的には、計測部１０４は、ＳＨＡ−１のハッシュ演算を行ってダイジェストを生成する。
次に、選択部１０３が、情報端末１００の動作モードが復元モードか否かを判定し（ステップＳ５０２）、復元モードの場合はステップＳ５０３へ進み、通常モードなど復元モード以外の動作モードの場合はステップＳ５１０へ進む。
【００４６】
ステップＳ５０３では、選択部１０３は、実行されるプログラムデータに対応する更新証明書３００が存在するか否かを判定し、更新証明書３００が存在する場合にはステップＳ５０４へ進み、対応する更新証明書３００がない場合はステップＳ５１０へ進む。ステップＳ５０３では、選択部１０３は、具体的には、更新証明書格納部１０２に格納されている更新証明書を参照し、更新証明書の中のプログラムデータの識別情報３０１を照合して実行されるプログラムデータに対応する更新証明書３００が存在するか否かを判定する。なお、この時、実行されるプログラムデータに対応する更新証明書３００が存在すると判定された場合、その更新証明書３００の有効性を再度検証するようにしても良い。
【００４７】
さらに、ステップＳ５０４では、更新証明書が示す更新後のプログラムデータと実行されるプログラムデータが同一のものであるか否かを検証するため、選択部１０３は、更新証明書の中の更新後のプログラムデータのダイジェスト３０３と生成したダイジェストとが一致するか否かを判定する。判定の結果、一致する場合、つまり、更新証明書が示す更新後のプログラムデータと実行されるプログラムデータが同一である場合はステップＳ５０５へ進み、一致しない場合、つまり、実行されるプログラムデータが、更新証明書が示す更新後のプログラムデータではない場合はステップＳ５１０へ進む。
【００４８】
ステップＳ５０５では、選択部１０３は、セキュリティデバイス１０６が累積演算を行うデータとして、更新証明書の中の更新前のプログラムデータのダイジェスト３０５を選択し、セキュリティデバイス１０６に累積演算を要求する。
ステップＳ５１０では、選択部１０３は、セキュリティデバイス１０６が累積演算を行うデータとして、計測部１０４が生成したプログラムデータのダイジェストを選択し、セキュリティデバイス１０６に累積演算を要求する。
【００４９】
累積演算を要求されたセキュリティデバイス１０６においては、累積演算部２０１が、要求されたプログラムデータのダイジェストの累積演算を行う。具体的には、累積演算部２０１は、累積値格納部２０２に保持されているデータと選択部１０３が選択したプログラムデータのダイジェストとを連結し、さらにそのダイジェストを生成して、生成したダイジェストをまた累積値格納部２０２に保存する（ステップＳ５０６）。ＣＰＵ１０１は、ステップＳ５０６のセキュリティデバイス１０６の累積演算が完了して初めてプログラムデータを実行する（ステップＳ５０７）。
【００５０】
図５に示した処理は、ＣＰＵ１０１がプログラムデータを実行する度に実行される。この時、セキュリティデバイス１０６の累積値格納部２０２には、ＣＰＵ１０１が実行した複数のプログラムデータのダイジェストの累積演算の結果が保持されており、それはＣＰＵ１０１が実行したプログラムデータの組み合わせによって異なる値を示す。つまり、累積値格納部２０２に保持される値は、ＣＰＵ１０１が実行したプログラムデータの組み合わせを示す。
【００５１】
但し、復元モードの場合には、ＣＰＵ１０１は、更新後のプログラムデータを実行しているが、累積値格納部２０２には更新前のプログラムデータを実行した場合の累積演算の結果が保持される。
情報端末１００は、図１６のサービス提供サーバ１６１０から情報サービスの提供を受ける場合、セキュリティデバイス１０６の累積値格納部２０２が保持する値にセキュリティデバイス１０６が署名を施したデータをサービス提供サーバ１６１０へ送信する。この時の累積値格納部２０２が保持する値に署名を施したデータは、署名部２０５がＣＰＵ１０１からの要求に基づいて、累積値格納部２０２が保持する値とサービス提供サーバ１６１０から受信したチャレンジ情報１６２０ｂ（サービス提供サーバ１６１０が生成した乱数など）とを連結したデータに対して署名を施したものである。
【００５２】
情報端末１００が実行するプログラムデータの更新に合わせてサービス提供サーバ１６１０の照合値ＤＢ１６１２が更新されている場合には、情報端末１００は、通常モードで起動した状態において、セキュリティデバイス１０６の累積値格納部２０２が保持する値にセキュリティデバイス１０６が署名を施したデータをサービス提供サーバ１６１０へ送信する。これにより、情報端末１００は、サービス提供サーバ１６１０による認証をパスして情報サービスの提供を受けることができる。
【００５３】
また、情報端末１００が実行するプログラムデータの更新に合わせてサービス提供サーバ１６１０の照合値ＤＢ１６１２が更新されていない場合には、ユーザが復元モードでの起動を指定する。そして、情報端末１００は、復元モードで起動した状態において、セキュリティデバイス１０６の累積値格納部２０２が保持する値にセキュリティデバイス１０６が署名を施したデータをサービス提供サーバ１６１０へ送信する。この場合、累積値格納部２０２には更新前のプログラムデータを実行した場合の累積演算の結果が保持されているので、サービス提供サーバ１６１０の照合値ＤＢ１６１２が更新されていない場合でも、情報端末１００は、サービス提供サーバ１６１０による認証をパスして情報サービスの提供を受けることができる。
【００５４】
なお、この時、情報端末１００は、サービス提供サーバ１６１０に対して、実際に情報端末１００が実行しているプログラムデータは更新されていることを同時に通知するようにしても良い。この場合、情報端末１００は、セキュリティデバイス１０６の累積値格納部２０２が保持する値とプログラムデータの更新を示す情報（例えば、プログラムデータの更新を示すフラグ情報、更新されたプログラムデータの識別情報、および更新後のプログラムデータのバージョンなど）に対してセキュリティデバイス１０６が署名を施したデータをサービス提供サーバ１６１０へ送信する。
【００５５】
この時の累積値格納部２０２が保持する値とプログラムデータの更新を示す情報に対して署名を施したデータは、セキュリティデバイス１０６の署名部２０５がＣＰＵ１０１からの要求に基づいて、累積値格納部２０２が保持する値とサービス提供サーバ１６１０から受信したチャレンジ情報１６２０ｂとプログラムデータの更新を示す情報とを連結したデータに対して署名を施したものである。この場合、ＣＰＵ１０１は、セキュリティデバイス１０６の署名部２０５に対してサービス提供サーバ１６１０から受信したチャレンジ情報１６２０ｂとプログラムデータの更新を示す情報を組み込んだ要求を送信する。ＣＰＵ１０１から要求を受信した署名部２０５は、累積値格納部２０２が保持する値とチャレンジ情報１６２０ｂとプログラムデータの更新を示す情報とを連結して、さらに連結したデータに対して署名を施す。
【００５６】
情報端末１００から累積値格納部２０２が保持する値とプログラムデータの更新を示す情報に対して署名を施したデータを受信したサービス提供サーバ１６１０は、認証をパスした場合でも、実際に情報端末１００が実行しているプログラムデータは更新されている。このことから、サービス提供サーバ１６１０は、予め決められたセキュリティポリシーに基づいて、情報端末１００への一部の情報サービスの提供を制限するようにしても良く、また、更新されたプログラムデータの提供元にアクセスして、照合値ＤＢ１６１２を更新するようにしても良い。
【００５７】
次に、本発明に係る情報端末１００がシールされたデータ４００、４００ａの暗号を復号化する処理を図６のフロー図を参照して説明する。図６は、本発明の実施の形態１、２、３における情報端末１００がシールされたデータ４００、４００ａの暗号を復号化する処理のフロー図である。この場合、図６に示す処理フローに基づいて、情報端末１００のセキュリティデバイス１０６が、データ格納部１０５に格納されているシールされたデータ４００、４００ａの暗号を復号化する。
【００５８】
まず、ＣＰＵ１０１から受信したアンシールコマンドに基づいて、セキュリティデバイス１０６の復号化部２０３が、セキュリティデバイス１０６の内部でシールされたデータ４００、４００ａの暗号の復号化を行う（ステップＳ６０１）。この時の復号化には、復号化部２０３が管理する復号鍵が用いられる。復号化により、平文の復号化条件４０１とデータ４０２とが得られる。
【００５９】
次に、復号化条件検証部２０４が、復号化条件４０１の中に含まれるプログラムデータのダイジェストの累積演算の結果の照合値と累積値格納部２０２が保持する値とが一致するか否かを判定する（ステップＳ６０２）。両者が一致する場合には、ステップＳ６０３へ進み、一致しない場合には、復号化条件４０１の中に含まれるプログラムデータのダイジェストの累積演算の結果の照合値と累積値格納部２０２が保持する値とが一致しないことを示すエラーを出力して復号化に失敗したことを示す（ステップＳ６０５）。
【００６０】
ステップＳ６０３では、復号化条件検証部２０４が、復号化条件４０１の中に含まれるその他の条件（プログラムデータのダイジェストの累積演算の結果の照合以外）を満たしているか否かを判定する。この条件を満たしている場合には、復号化条件検証部２０４は、復号化されたデータ４０２をセキュリティデバイス１０６の外部に出力する（ステップＳ６０４）。この条件を満たしていない場合には、復号化されたデータ４０２を外部に出力せずに、復号化条件４０１の中に含まれるその他の条件（プログラムデータのダイジェストの累積演算の結果の照合以外）を満たしていないことを示すエラーを出力して復号化に失敗したことを示す（ステップＳ６０６）。
【００６１】
シールされたデータが、更新後のプログラムデータを実行した場合のプログラムデータのダイジェストの累積演算の結果にバインドしてシールされている場合には、通常モードで起動した状態において、図６に示す処理フローに基づいて、情報端末１００のセキュリティデバイス１０６は、シールされたデータの暗号の復号化を行う。
また、シールされたデータが、更新前のプログラムデータを実行した場合のプログラムデータのダイジェストの累積演算の結果にバインドしてシールされている場合には、通常モードで起動した状態においては、図６に示す処理フローに基づいて、セキュリティデバイス１０６から復号化条件４０１の中に含まれるプログラムデータのダイジェストの累積演算の結果の照合値と累積値格納部２０２が保持する値とが一致しないことを示すエラーが外部に出力される（ステップＳ６０５）。そして、情報端末１００は、復元モードで情報端末１００を再起動することをユーザに促すメッセージを表示する。さらに、ユーザが復元モードでの起動を指定した場合、情報端末１００は、復元モードで再起動する。
【００６２】
また、復元モードで起動した状態においては、情報端末１００は、図６に示す処理フローに基づいて、セキュリティデバイス１０６がシールされたデータの暗号の復号化を行う。
この場合、累積値格納部２０２には更新前のプログラムデータを実行した場合の累積演算の結果が保持されているので、ステップＳ６０２の判定において、復号化条件４０１の中に含まれるプログラムデータのダイジェストの累積演算の結果の照合値と累積値格納部２０２が保持する値とが一致するという判定が復号化条件検証部２０４によって行われ、シールされたデータを復号化することができる。
【００６３】
以上のように、本実施の形態では、プログラムデータが更新された場合でも、更新したプログラムデータを元に戻すことなく、サービス提供サーバ１６１０のようにＣＰＵ１０１が実行しているプログラムデータを認証するサービス提供サーバからの情報サービスの提供や、シールされたデータの復号化が可能となる。
なお、プログラムデータの識別情報３０１が同じプログラムデータに関して複数回の更新が行われている場合には、プログラムデータの識別情報３０１が同じで、バージョンが異なる複数の更新証明書が更新証明書格納部１０２に格納されることになる。この場合、図５に示した処理フローのステップＳ５０３では、該当する複数の更新証明書が特定され、ステップＳ５０４では、バージョンが最新の更新証明書に関して、更新証明書の中の更新後のプログラムデータのダイジェストと生成したダイジェストとが一致するか否かが判定される。さらに、ステップＳ５０５では、ステップＳ５０３で特定された更新証明書のうち、どのバージョンのプログラムデータをＣＰＵ１０１が実行している状態を復元するかを情報端末１００のユーザが指定し、指定されたバージョンを更新前のプログラムデータとする更新証明書に関して、選択部１０３が更新証明書の中の更新前のプログラムデータのダイジェストを選択し、セキュリティデバイス１０６に累積演算を要求する。
【００６４】
なお、更新証明書格納部１０２に格納される更新証明書は、図３（Ｂ）に示す更新証明書３５０のように、同一のプログラムデータの複数の世代のバージョンのプログラムデータのダイジェストが含まれているデータ構造になっていても良い。
図３（Ｂ）において、更新証明書３５０は、プログラムデータの識別情報３５１と、最新の第Ｎ世代のプログラムデータのバージョン３５２及びプログラムデータのダイジェスト３５３（Ｎは３以上の整数）と、第Ｎ−１世代のプログラムデータのバージョン３５４及びプログラムデータのダイジェスト３５５から第Ｎ−ｉ世代までのプログラムデータのバージョン３５６及びプログラムデータのダイジェスト３５７（ｉはＮよりも小さい１以上の整数）と、プログラムデータ提供者の識別情報３５８と、プログラムデータ提供者の署名３５９とから構成される。
【００６５】
この場合、図５に示した処理フローのステップＳ５０４では、更新証明書３５０に関して、更新証明書の中の最新の第Ｎ世代のプログラムデータのダイジェストと生成したダイジェストとが一致するか否かを判定する。さらに、ステップＳ５０５では、更新証明書３５０に含まれる第Ｎ−１世代から第Ｎ−ｉ世代までの複数の世代のバージョンのうち、どのバージョンのプログラムデータをＣＰＵ１０１が実行している状態を復元するかを情報端末１００のユーザが指定する。この指定に基づき、選択部１０３が更新証明書の中の指定されたバージョンのプログラムデータのダイジェストを選択し、セキュリティデバイス１０６に累積演算を要求する。
【００６６】
なお、上述のようにユーザが指定しなくても、シールしたデータに対しプログラムデータのバージョンを対応付けて記憶させておくこととしておけば、ＣＰＵは、当該データを復元する際にどの世代のプログラムデータを復元すべきかを、データに対応付けたバージョンに基づき判定することができる。
（実施の形態２）
本発明の実施の形態２における情報端末７００は、特に、セキュリティデバイスが累積演算を行うプログラムデータのダイジェストを選択する処理を、より正確に行えるように構成したものである。
【００６７】
図７は、本発明の実施の形態２における情報端末７００のブロック図である。実施の形態２の場合には、プログラムデータのダイジェストの累積演算を行ってその結果を保持するセキュリティデバイス７０６の中に、さらに、セキュリティデバイス７０６が累積演算を行うプログラムデータのダイジェストを選択する選択部７０３が含まれる（図７および図８参照）。それ以外のＣＰＵ１０１、プログラム格納部１０７、更新証明書格納部１０２、計測部１０４、およびデータ格納部１０５は、実施の形態１における情報端末１００の場合と同じである。また、選択部７０３の動作および機能は、選択部１０３と同様である。
【００６８】
選択部７０３、累積演算部２０１、復号化部２０３、復号化条件検証部２０４、および署名部２０５は、具体的にはセキュリティデバイス７０６が内蔵するＣＰＵ、暗号処理アクセラレータ、および不揮発性メモリとの組み合わせによって実現され、不揮発性メモリには、ＣＰＵと暗号処理アクセラレータが実行するマイクロコードが格納される。
情報端末７００の動作は実施の形態１における情報端末１００の場合と同じであり、プログラムデータが更新された場合でも、更新したプログラムデータを元に戻すことなく、サービス提供サーバ１６１０のようにＣＰＵ１０１が実行しているプログラムデータを認証するサービス提供サーバからの情報サービスの提供や、シールされたデータの復号化が可能となる。
【００６９】
このように、本実施の形態では、耐タンパ性を有するセキュリティデバイス７０６に選択部７０３を内蔵することで、選択部７０３が行う処理に対するハッキング等を不正行為が防止され、図５の処理フローにおけるステップＳ５０２からステップＳ５０５の処理とステップＳ５１０の処理がより正確に実行することができる。
なお、セキュリティデバイス７０６に、さらに更新証明書格納部１０２を内蔵する構成にしてもよい。耐タンパ性を有するセキュリティデバイス７０６に更新証明書格納部１０２を内蔵することで、更新証明書への不正なアクセスを防止することができ、図５の処理フローにおけるステップＳ５０２からステップＳ５０４の処理がより正確に実行される。
【００７０】
（実施の形態３）
本発明の実施の形態３に係る情報端末９００は、復元モードでの起動が不要になるように構成したものである。図９は、本発明の実施の形態３における情報端末９００のブロック図である。ＣＰＵ１０１、プログラム格納部１０７、更新証明書格納部１０２、計測部１０４、およびデータ格納部１０５は、実施の形態１における情報端末１００の場合と同じである。図１０を参照すると、実施の形態３の場合、プログラムデータのダイジェストの累積演算を行ってその結果を保持するセキュリティデバイス９０６の中に、さらに、ＣＰＵ１０１が更新前のプログラムデータを実行した場合のプログラムデータのダイジェストの累積演算の結果を少なくとも一つ以上保持する更新前累積値格納部２０６が含まれる。選択部９０３は、セキュリティデバイスが累積演算を行うプログラムデータのダイジェストを選択する。選択部９０３は、セキュリティデバイス９０６の更新前累積値格納部２０６が保持する少なくとも一つの累積演算の結果に更に累積演算を行うデータとして、更新証明書の中の更新前のプログラムデータのダイジェストを選択する。また、選択部９０３は、更新前累積値格納部２０６が保持するその他の累積演算の結果に更に累積演算を行うデータとして、計測部１０４が生成したプログラムデータのダイジェストを選択して、セキュリティデバイス９０６に累積演算を要求する。
【００７１】
更新前累積値格納部２０６は、具体的には不揮発性メモリによって実現され、複数の累積演算の結果が保持可能な場合には、異なる組み合わせのプログラムデータのダイジェストの累積演算の結果が保持される。
次に、実施の形態３に係る情報端末９００の動作について説明する。情報端末９００の場合、復元モードのような動作モードはなく、通常モードで動作する。情報端末９００のＣＰＵ１０１は、プログラム格納部１０７に格納されたプログラムデータを実行する。ＣＰＵ１０１は、プログラムデータを実行する際に、実行するプログラムデータのダイジェストを計測部１０４が生成し、ダイジェストの累積演算の結果をセキュリティデバイス９０６が保持するように指示する。図１１は、ＣＰＵ１０１が一つのプログラムデータを実行する際に行われる処理のフローを示している。
【００７２】
まず、計測部１０４が、実行されるプログラムデータのダイジェストを生成する（ステップＳ１１０１）。具体的には、ＳＨＡ−１のハッシュ演算を行ってダイジェストを生成する。
次に、セキュリティデバイス９０６の累積値格納部２０２が保持する値に累積演算を行うデータとして、計測部１０４が生成したプログラムデータのダイジェストを選択部９０３が選択し、セキュリティデバイス９０６に累積演算を要求する（Ｓ１１０２）。累積演算を要求されたセキュリティデバイス９０６では、累積演算部２０１が、要求されたプログラムデータのダイジェストの累積演算を行う。具体的には、累積演算部２０１は、累積値格納部２０２に保持されているデータと選択部９０３が選択したプログラムデータのダイジェストとを連結し、さらにそのダイジェストを生成して、生成したダイジェストをまた累積値格納部２０２に保存する（Ｓ１１０３）。
【００７３】
次に、選択部９０３が実行されるプログラムデータに対応する更新証明書が存在するか否かを判定する（Ｓ１１０４）。対応する更新証明書が存在する場合にはステップＳ１１０５へ進み、対応する更新証明書がない場合はステップＳ１１１０へ進む。この時、選択部９０３は、具体的には、更新証明書格納部１０２に格納されている更新証明書を参照し、更新証明書の中のプログラムデータの識別情報３０１を照合して実行されるプログラムデータに対応する更新証明書が存在するか否かを判定する。なお、この時、実行されるプログラムデータに対応する更新証明書が存在すると判定された場合、その更新証明書の有効性を再度検証するようにしても良い。
【００７４】
さらに、ステップＳ１１０５では、更新証明書が示す更新後のプログラムデータと実行されるプログラムデータが同一のものであるか否かを検証するため、選択部９０３が更新証明書の中の更新後のプログラムデータのダイジェストと生成したダイジェストとが一致するか否かを判定する。一致する場合、つまり、更新証明書が示す更新後のプログラムデータと実行されるプログラムデータが同一である場合は、ステップＳ１１０６へ進み、一致しない場合、つまり、実行されるプログラムデータは更新証明書が示す更新後のプログラムデータではない場合は、ステップＳ１１１０へ進む。
【００７５】
ステップＳ１１０６では、セキュリティデバイス９０６の更新前累積値格納部２０６が保持する少なくとも一つの累積演算の結果に更に累積演算を行うデータとして、選択部９０３は、更新証明書の中の更新前のプログラムデータのダイジェストを選択する。また、選択部９０３は、更新前累積値格納部２０６が保持するその他の累積演算の結果に更に累積演算を行うデータとして、計測部１０４が生成したプログラムデータのダイジェストを選択して、セキュリティデバイス９０６に累積演算を要求する。
【００７６】
ステップＳ１１１０では、選択部９０３は、セキュリティデバイス９０６の更新前累積値格納部２０６が保持する全ての累積演算の結果に更に累積演算を行うデータとして、計測部１０４が生成したプログラムデータのダイジェストを選択し、セキュリティデバイス９０６に累積演算を要求する。
累積演算を要求されたセキュリティデバイス９０６では、累積演算部２０１が、要求されたプログラムデータのダイジェストの累積演算を行う。具体的には、累積演算部２０１は、更新前累積値格納部２０６に保持されているデータと選択部９０３が選択したプログラムデータのダイジェストとを連結し、さらにそのダイジェストを生成して、生成したダイジェストをまた更新前累積値格納部２０６に保存する（Ｓ１１０７）。
【００７７】
ＣＰＵ１０１は、ステップＳ１１０７のセキュリティデバイス９０６の累積演算が完了して初めてプログラムデータを実行する（Ｓ１１０８）。
図１１に示した処理は、ＣＰＵ１０１がプログラムデータを実行する度に実行される。この時、セキュリティデバイス９０６の累積値格納部２０２と更新前累積値格納部２０６には、ＣＰＵ１０１が実行した複数のプログラムデータのダイジェストの累積演算の結果が保持されており、それらは、ＣＰＵ１０１が実行したプログラムデータの組み合わせによって異なる値を示す。累積値格納部２０２に保持される値は、ＣＰＵ１０１が実行したプログラムデータの組み合わせを示し、更新前累積値格納部２０６に保持される値は、更新前のプログラムデータを実行した場合のＣＰＵ１０１が実行したプログラムデータの組み合わせを示す。
【００７８】
情報端末９００が図１６のサービス提供サーバ１６１０から情報サービスの提供を受ける場合、情報端末９００は、セキュリティデバイス９０６の累積値格納部２０２または更新前累積値格納部２０６が保持する値にセキュリティデバイス９０６が署名を施したデータをサービス提供サーバ１６１０へ送信する。この時の署名を施したデータは、署名部２０５がＣＰＵ１０１からの要求に基づいて、累積値格納部２０２または更新前累積値格納部２０６が保持する値とサービス提供サーバ１６１０から受信したチャレンジ情報１６２０ｂ（サービス提供サーバ１６１０が生成した乱数など）とを連結したデータに対して署名を施したものである。
【００７９】
まず、情報端末９００は、セキュリティデバイス９０６の累積値格納部２０２が保持する値にセキュリティデバイス９０６が署名を施したデータをサービス提供サーバ１６１０へ送信する。情報端末９００が実行するプログラムデータの更新に合わせてサービス提供サーバ１６１０の照合値ＤＢ１６１２が更新されている場合には、サービス提供サーバ１６１０による認証をパスして情報サービスの提供を受けることができる。また、情報端末９００が実行するプログラムデータの更新に合わせてサービス提供サーバ１６１０の照合値ＤＢ１６１２が更新されていない場合には、サービス提供サーバ１６１０による認証においてエラーとなり、サービス提供サーバ１６１０から情報端末９００に認証に失敗したことを示すエラーメッセージが送信される。エラーメッセージを受信した情報端末９００は、今度はセキュリティデバイス９０６の更新前累積値格納部２０６が保持する値にセキュリティデバイス９０６が署名を施したデータをサービス提供サーバ１６１０へ送信する。この場合、更新前累積値格納部２０６には更新前のプログラムデータを実行した場合の累積演算の結果が保持されているので、実施の形態１において必要な、ユーザが復元モードで起動する操作を行うことなしに、サービス提供サーバ１６１０の照合値ＤＢ１６１２が更新されていない場合でも、サービス提供サーバ１６１０による認証をパスして情報サービスの提供を受けることができる。
【００８０】
なお、この時、情報端末９００は、サービス提供サーバ１６１０対して、実際に情報端末９００が実行しているプログラムデータは更新されていることを同時に通知するようにしても良い。この場合、情報端末９００は、セキュリティデバイス９０６の更新前累積値格納部２０６が保持する値とプログラムデータの更新を示す情報（例えば、プログラムデータの更新を示すフラグ情報、更新されたプログラムデータの識別情報、および更新後のプログラムデータのバージョンなど）に対してセキュリティデバイス９０６が署名を施したデータをサービス提供サーバ１６１０へ送信する。
【００８１】
この時の更新前累積値格納部２０６が保持する値とプログラムデータの更新を示す情報に対して署名を施したデータは、セキュリティデバイス９０６の署名部２０５がＣＰＵ１０１からの要求に基づいて、更新前累積値格納部２０６が保持する値とサービス提供サーバ１６１０から受信したチャレンジ情報１６２０ｂとプログラムデータの更新を示す情報とを連結したデータに対して署名を施したものである。この場合、ＣＰＵ１０１は、セキュリティデバイス９０６の署名部２０５に対してサービス提供サーバ１６１０から受信したチャレンジ情報１６２０ｂとプログラムデータの更新を示す情報を組み込んだ要求を送信する。ＣＰＵ１０１から要求を受信した署名部２０５は、更新前累積値格納部２０６が保持する値とチャレンジ情報１６２０ｂとプログラムデータの更新を示す情報とを連結して、さらに連結したデータに対して署名を施す。
【００８２】
情報端末９００から更新前累積値格納部２０６が保持する値とプログラムデータの更新を示す情報に対して署名を施したデータを受信したサービス提供サーバ１６１０は、認証をパスした場合でも、実際に情報端末９００が実行しているプログラムデータは更新されている。このことから、予め決められたセキュリティポリシーに基づいて、サービス提供サーバ１６１０は、情報端末９００への一部の情報サービスの提供を制限するようにしても良く、また、更新されたプログラムデータの提供元にアクセスして、照合値ＤＢ１６１２を更新するようにしても良い。
【００８３】
また、データ格納部１０５に格納されていたシールされたデータの暗号を復号化する場合、情報端末９００は、実施の形態１の場合と同様に、図６に示す処理フローに基づいて、セキュリティデバイス９０６がシールされたデータの暗号の復号化を行う。
但し、実施の形態１の場合とは異なり、ステップＳ６０２では、復号化条件検証部２０４が、復号化条件４０１の中に含まれるプログラムデータのダイジェストの累積演算の結果の照合値と、累積値格納部２０２または更新前累積値格納部２０６が保持する値とが一致するか否かを判定する。いずれかが一致する場合には、ステップＳ６０３へ進み、いずれも一致しない場合には、復号化条件検証部２０４は、エラーを出力して復号化に失敗したことを示す動作を行う（ステップＳ６０５）。
【００８４】
シールされたデータが、更新前のプログラムデータを実行した場合のプログラムデータのダイジェストの累積演算の結果にバインドしてシールされている場合であっても、更新前累積値格納部２０６には、更新前のプログラムデータを実行した場合の累積演算の結果が保持されている。このため、ステップＳ６０２の判定において、復号化条件４０１の中に含まれるプログラムデータのダイジェストの累積演算の結果の照合値と一致するという判定が、復号化条件検証部２０４によって行われ、セキュリティデバイス９０６は、シールされたデータを復号化することができる。
【００８５】
このように本実施の形態では、プログラムデータが更新された場合でも、更新したプログラムデータを元に戻すことなく、サービス提供サーバ１６１０のように、ＣＰＵ１０１が実行しているプログラムデータを認証するサービス提供サーバからの情報サービスの提供や、シールされたデータの復号化が可能となる。これに加え、更新前累積値格納部２０６は、更新前のプログラムデータを実行した場合の累積演算の結果を保持しているので、情報端末装置９００は、実施の形態１において必要な、ユーザが復元モードで起動する操作を行うことなしに、サービス提供サーバ１６１０の照合値ＤＢ１６１２が更新されていない場合でも、サービス提供サーバ１６１０による認証をパスして情報サービスの提供を受けることができる。
【００８６】
なお、以上の説明では、セキュリティデバイス９０６は、シールされたデータの暗号を復号化する場合、復号化されたデータを出力するだけであったが、ＣＰＵ１０１が実行している更新されたプログラムデータのダイジェストの累積演算の結果にバインドして復号化されたデータをシール、つまり復号化されたデータの再暗号化を行い、復号化されたデータと共にシールされたデータを出力するようにしても良い。その場合、図１２に示すように、セキュリティデバイス９０６は、さらにデータの暗号化を行う暗号化部２０７を備える。
【００８７】
データ格納部１０５に格納されているシールされたデータの暗号を復号化と再暗号化を行う場合、情報端末９００は、図１３に示す処理フローに基づいて、セキュリティデバイス９０６がシールされたデータの暗号の復号化と再暗号化を行う。図１３は、本発明の実施の形態に係る情報端末９００がシールされたデータの暗号の復号化と復号化されたデータの再暗号化をする処理のフロー図である。
【００８８】
まず、ＣＰＵ１０１から受信した アンシールコマンドに基づいて、セキュリティデバイス９０６の復号化部２０３が、セキュリティデバイス９０６の内部でシールされたデータの暗号の復号化を行う（ステップＳ１３０１）。この時の復号化には、復号化部２０３が管理する復号鍵が用いられる。復号化により、平文の復号化条件４０１とデータ４０２とが得られる。
【００８９】
次に、復号化条件検証部２０４が、復号化条件４０１の中に含まれるプログラムデータのダイジェストの累積演算の結果の照合値と、累積値格納部２０２または更新前累積値格納部２０６が保持する値とが一致するか否かを判定し（ステップＳ１３０２）、いずれかが一致する場合には、ステップＳ１３０３へ進む。いずれも一致しない場合には、復号化条件４０１の中に含まれるプログラムデータのダイジェストの累積演算の結果の照合値と累積値格納部２０２または更新前累積値格納部２０６が保持する値とが一致しないことを示すエラーを外部に出力する動作を行う（ステップＳ１３０６）。このエラーは、復号化に失敗したことを示す。
【００９０】
ステップＳ１３０３では、復号化条件検証部２０４は、復号化条件４０１の中に含まれるその他の条件（プログラムデータのダイジェストの累積演算の結果の照合以外）を満たしているか否かを判定する。条件を満たしている場合には、ステップＳ１３０４へ進み、条件を満たしていない場合には、復号化条件検証部２０４は、復号化条件４０１の中に含まれるその他の条件（プログラムデータのダイジェストの累積演算の結果の照合以外）を満たしていないことを示すエラーを外部に出力する（ステップＳ１３０７）。このエラーは、復号化に失敗したことを示す。
【００９１】
ステップＳ１３０４では、暗号化部２０７が、復号化条件の照合値に累積値格納部２０２に保持されている値を設定して復号化したデータを再暗号化する。ステップＳ１３０５で、暗号化部２０７は、復号化されたデータ４０２と再暗号化されたデータをセキュリティデバイス９０６の外部に出力する。
この時、出力される再暗号化されたデータは、ＣＰＵ１０１が実行する更新されたプログラムデータのダイジェストの累積演算の結果にバインドしてシールされたデータである。
【００９２】
なお、プログラムデータの識別情報３０１が同一であるプログラムデータに関して、複数回の更新が行われている場合には、プログラムデータの識別情報３０１が同じで、バージョンが異なる複数の更新証明書が、更新証明書格納部１０２に格納されることになる。この場合、図１１に示した処理フローのステップＳ１１０４では、該当する複数の更新証明書が特定され、ステップＳ１１０５では、選択部９０３が、バージョンが最新の更新証明書に関して、更新証明書の中の更新後のプログラムデータのダイジェストと生成したダイジェストとが一致するか否かを判定する。
【００９３】
さらに、ステップＳ１１０６では、ステップＳ１１０４で特定された更新証明書のうち、どのバージョンのプログラムデータをＣＰＵ１０１が実行している状態を復元するかを情報端末９００のユーザが指定し、指定されたバージョンを更新前のプログラムデータとする更新証明書に関して、選択部９０３が、更新証明書の中の更新前のプログラムデータのダイジェストを選択し、セキュリティデバイス９０６に累積演算を要求する。
【００９４】
また、以上の説明では、どのバージョンのプログラムデータをＣＰＵ１０１が実行している状態を復元するかを情報端末９００のユーザが指定するとした。しかし、更新前累積値格納部２０６が、複数の累積演算の結果を十分保持することができる場合には、ユーザは、指定することせずに、ステップＳ１１０６において、ステップＳ１１０４で特定されたそれぞれの更新証明書３５０に関して、選択部９０３が、更新証明書の中の更新前のプログラムデータのダイジェスト３５３を選択し、セキュリティデバイス９０６に累積演算を要求するようにしてもよい。
【００９５】
また、更新証明書格納部１０２に格納される更新証明書が、図３（Ｂ）に示すような同一のプログラムデータの複数の世代のバージョンのプログラムデータのダイジェストが含まれている更新証明書３５０の場合には、情報端末９００の選択部９０３は、図１１に示した処理フローのステップＳ１１０５では、更新証明書３５０に関して、更新証明書の中の最新の第Ｎ世代のプログラムデータのダイジェストと生成したダイジェストとが一致するか否かを判定する。
【００９６】
さらに、ステップＳ１１０６では、更新証明書３５０に含まれる第Ｎ−１世代から第Ｎ−ｉ世代までの複数の世代のバージョンのうち、どのバージョンのプログラムデータをＣＰＵ１０１が実行している状態を復元するかを情報端末１００のユーザが指定し、選択部９０３が更新証明書３５０の中の指定されたバージョンのプログラムデータのダイジェストを選択し、セキュリティデバイス９０６に累積演算を要求する。
【００９７】
また、以上の説明では、どのバージョンのプログラムデータをＣＰＵ１０１が実行している状態を復元するかを情報端末９００のユーザが指定するとしたが、更新前累積値格納部２０６に複数の累積演算の結果を十分保持することができる場合には、ユーザが指定することせずに、ステップＳ１１０６では、選択部９０３が更新証明書３５０に含まれる第Ｎ−１世代から第Ｎ−ｉ世代までの複数の世代のプログラムデータのダイジェストをそれぞれ選択し、セキュリティデバイス９０６に累積演算を要求するようにしてもよい。
【００９８】
（実施の形態４）
本発明の実施の形態４における情報端末１４００は、特に、セキュリティデバイスが累積演算を行うプログラムデータのダイジェストを選択する処理を、より正確に行えるように構成したものである。
図１４は、本発明の実施の形態４における情報端末１４００の構成を示すブロック図である。実施の形態２における情報端末７００と同様のブロック図となっているが、セキュリティデバイス１４０６の部分が実施の形態２と異なる。実施の形態４におけるセキュリティデバイス１４０６の構成は、実施の形態３におけるセキュリティデバイス９０６の構成と以下に述べる点で異なる。
【００９９】
図１５（Ａ）を参照すると、実施の形態４の場合には、プログラムデータのダイジェストの累積演算を行ってその結果を保持するセキュリティデバイス１４０６の中に、さらに、セキュリティデバイス１４０６が累積演算を行うプログラムデータのダイジェストを選択する選択部１４０３が含まれる。それ以外のＣＰＵ１０１、プログラム格納部１０７、更新証明書格納部１０２、計測部１０４、およびデータ格納部１０５は、実施の形態３における情報端末９００の場合と同じである。
【０１００】
選択部１４０３、累積演算部２０１、復号化部２０３、復号化条件検証部２０４、および署名部２０５は、具体的にはセキュリティデバイス１４０６が内蔵するＣＰＵと暗号処理アクセラレータと不揮発性メモリとの組み合わせによって実現される。不揮発性メモリには、ＣＰＵと暗号処理アクセラレータが実行するマイクロコードが格納される。
情報端末１４００の動作は、実施の形態３における情報端末９００の場合と同じであり、プログラムデータが更新された場合でも、更新したプログラムデータを元に戻すことなく、サービス提供サーバ１６１０のようにＣＰＵ１０１が実行しているプログラムデータを認証するサービス提供サーバからの情報サービスの提供や、シールされたデータの復号化が可能となる。
【０１０１】
このように、本実施の形態によれば、耐タンパ性を有するセキュリティデバイス１４０６に選択部１４０３を内蔵することで、選択部１４０３が行う処理に対するハッキング等を不正行為が防止され、図１１の処理フローにおけるステップＳ１１０２と、ステップＳ１１１０の処理と、ステップＳ１１０４からステップＳ１１０６までの処理とがより正確に実行される。また、更新前累積値格納部２０６は、更新前のプログラムデータを実行した場合の累積演算の結果を保持しているので、情報端末装置１４００は、実施の形態１において必要な、ユーザが復元モードで起動する操作を行うことなしに、サービス提供サーバ１６１０の照合値ＤＢ１６１２が更新されていない場合でも、サービス提供サーバ１６１０による認証をパスして情報サービスの提供を受けることができる。
【０１０２】
なお、実施の形態４の変形例として、セキュリティデバイス１４０６ａの構成を図１５（Ｂ）に示す。セキュリティデバイス１４０６ａは、図１５（Ａ）のセキュリティデバイス１４０６に、データの暗号化を行う暗号化部２０７をさらに備えて構成される。セキュリティデバイス１４０６ａが、シールされたデータの暗号を復号化する場合に、暗号化部２０７は、ＣＰＵ１０１が実行している更新されたプログラムデータのダイジェストの累積演算の結果にバインドして復号化されたデータをシール、つまり復号化されたデータの再暗号化を行う。そして、セキュリティデバイス１４０６ａは、復号化されたデータと共にシールされたデータを出力する。
【０１０３】
また、セキュリティデバイス１４０６または１４０６ａに、さらに更新証明書格納部１０２を内蔵する構成にしてもよい。耐タンパ性を有するセキュリティデバイス１４０６または１４０６ａが、更新証明書格納部１０２を内蔵することで、更新証明書への不正なアクセスを防止することができ、図１１の処理フローにおけるステップＳ１１０４からステップＳ１１０６の処理がより正確に実行される。
（実施の形態５）
本実施の形態は、上述の実施の形態と比べ、（１）更新証明書にダイジェストではなく累積値が記録している点、（２）装置内で更新証明書の生成を行っている点、（３）古いプログラム構成に係る復号化条件を用いてシールされているデータを、更新後のプログラム構成に係る復号化条件を用いて再シールする点の３点で相違する。
【０１０４】
（１）により、上述の実施の形態では行わざるを得ない更新前の累積値を計算するという処理が不要になる。また、更新前のプログラムデータに係る累積値を格納する更新前累積値格納部が不要となる。
（２）により、外部装置からの更新証明書の取得が不要となる。
（３）により、一度再シール処理を行えば、当該処理以降に、当該データの使用の度に古い復号化条件を用いて復号する必要がなくなる。
【０１０５】
以下、本実施の形態について、上述の相違点を中心に説明する。
（構成）
図１７は、本発明の一実施形態に係るプログラム更新システムの構成を示す図である。
前記プログラム更新システムは、プログラムデータ管理サーバ１７０１、サービス提供サーバ１７０２及び情報端末１７０３を含んで構成される。
【０１０６】
プログラムデータ管理サーバ１７０１、サービス提供サーバ１７０２及び情報端末１７０３は、ネットワーク１７０４を介して相互に通信する。
プログラムデータ管理サーバ１７０１は、情報端末１７０３により実行されるプログラムデータを管理するサーバである。
サービス提供サーバ１７０２は、サービスの要求を受け付けた装置の中で認証に成功したものに対しサービスの提供を行うサーバである。
【０１０７】
情報端末１７０３は、プログラムデータが使用する機密データ等を保護しつつ、プログラムデータを実行する情報端末である。また、情報端末１７０３は、サービス提供サーバ１７０２に対しサービスの提供を要求してサービスの提供を受ける。
なお、以後の説明では、プログラムデータ管理サーバ１７０１、サービス提供サーバ１７０２及び情報端末１７０３の間の通信内容の保護については特に述べないが、装置間の通信内容を公知の暗号化方式を用いて暗号化、復号化することにより通信内容の保護を行ってももちろんよい。また、装置間において、通信に先立ち公知の認証方式を用いて認証を行い、認証に成功した後に通信を行うこととしてもよい。
【０１０８】
（プログラムデータ管理サーバ１７０１）
プログラムデータ管理サーバ１７０１は、具体的には、マイクロプロセッサ、ＲＯＭ、ＲＡＭ、ハードディスクユニット、ディスプレイユニット、キーボード、マウスなどから構成されるコンピュータシステムである。前記ＲＯＭ又は前記ハードディスクユニットには、コンピュータプログラムが記憶されており、ＲＡＭ上に読み出されたコンピュータプログラムに従って前記マイクロプロセッサが動作することにより、プログラムデータ管理サーバ１７０１はその機能を達成する。
【０１０９】
図１８は、プログラムデータ管理サーバ１７０１の構成を示す図である。
プログラムデータ管理サーバ１７０１は、通信部１８０１、プログラムデータ管理部１８０２及びプログラムデータＤＢ格納部１８０３を含んで構成される。
通信部１８０１は、ネットワーク１７０４を介して、サービス提供サーバ１７０２及び通信端末１８０３と通信する。
【０１１０】
プログラムデータＤＢ格納部１８０３は、プログラムデータＤＢを格納するハードディスク、大容量メモリなどの蓄積デバイスである。
図１９は、プログラムデータＤＢの一例を示す図である。
プログラムデータＤＢは、ＢＩＯＳやＯＳ、アプリケーションプログラムなどの各プログラムデータについて、プログラムデータと、プログラムデータ識別情報及びプログラムデータバージョンを対応づけて記憶している。
【０１１１】
プログラムデータ識別情報は、プログラムデータを識別する識別情報である。
プログラムデータバージョンは、プログラムデータのバージョン番号を示す。
図１９のプログラムデータＤＢは、一例として、プログラムデータ識別情報の値が「０００１」であり、プログラムデータバージョンが「ｖ１．５２」である「ムービープレーヤー」が記録されていることを示す。
【０１１２】
プログラムデータ管理部１８０２は、プログラムデータＤＢ格納部１８０３に格納されているプログラムデータを管理する。
プログラムデータＤＢ中のプログラムデータが、例えば開発者等により更新された場合、その更新後のプログラムデータと、そのプログラムデータに係るプログラムデータ識別情報と、更新後のプログラムデータのプログラムデータバージョンとを、通信部１８０１を用いて情報端末１７０３に送信する。
【０１１３】
なお、特に述べない限り、プログラムデータ管理サーバ１７０１における他装置との通信は、「通信部１８０１を用いて通信する」等の明示的な記載をしなくても通信部１８０１を用いて行っているものとする。
また、前述の更新があった場合、プログラムデータ管理部１８０２は、サービス提供サーバ１７０２に対して、情報端末１７０３におけるプログラムデータの構成を識別するプログラムデータ構成識別情報と、情報端末１７０３における当該更新後のプログラムデータのダイジェストを含む、ＢＩＯＳのダイジェストとＯＳのダイジェストとアプリケーションプログラムのダイジェストとを累積した累積値とを送信する。ここで、プログラムデータの構成とは、情報端末１７０３で動作するＢＩＯＳ、ＯＳ、アプリケーション等の全体または一部の組み合わせを意味する。
【０１１４】
（サービス提供サーバ１７０２）
サービス提供サーバ１７０２は、具体的には、マイクロプロセッサ、ＲＯＭ、ＲＡＭ、ハードディスクユニット、ディスプレイユニット、キーボード、マウスなどから構成されるコンピュータシステムである。前記ＲＯＭ又は前記ハードディスクユニットには、コンピュータプログラムが記憶されており、ＲＡＭ上に読み出されたコンピュータプログラムに従って前記マイクロプロセッサが動作することによりサービス提供サーバ１７０２はその機能を達成する。
【０１１５】
図２０は、サービス提供サーバ１７０２の構成を示す図である。
サービス提供サーバ１７０２は、通信部２００１、データ管理部２００２、照合値ＤＢ格納部２００３及びコンテンツ蓄積部２００４を含んで構成される。
通信部２００１は、ネットワーク１７０４を介して、プログラムデータ管理サーバ１７０１及び通信端末１７０３と通信する。
【０１１６】
照合値ＤＢ格納部２００３は、照合値ＤＢを格納するハードディスク、大容量メモリなどの蓄積デバイスである。
図２１は、照合値ＤＢの内容を示す図である。
照合値ＤＢには、サービスの提供を要求する情報端末のプログラムデータの構成を識別するプログラムデータ構成識別情報と、そのプログラムデータの構成に対応する照合値とが対応づけて記録されている。
【０１１７】
なお、照合値ＤＢにおける照合値は、情報端末におけるプログラムデータの累積値と同値を持つが、この点については後述する。
コンテンツ蓄積部２００４は、サービス提供の一例としてのコンテンツ配信サービスにおいて、配信するコンテンツと、そのコンテンツを識別するコンテンツ識別子とを対応付けて記憶しているハードディスク、大容量メモリ等の記憶デバイスである。
【０１１８】
データ管理部２００２は、情報端末１７０３から、サービス提供を要求する情報端末のプログラムデータの構成を識別するプログラムデータ構成識別情報と、前記プログラムデータの構成に係る累積値と、サービス提供に関し配信を要求しているコンテンツに係るコンテンツ識別子とを、通信部２００１を介して受け取る。
なお、特に述べない限り、サービス提供サーバ１７０２における他装置との通信は、「通信部２００１を用いて通信する」等の明示的な記載をしなくても通信部２００１を用いて行っているものとする。
【０１１９】
データ管理部２００２は、受け取ったプログラム識別情報に対応する照合値を照合値ＤＢから読み出して、照合値と累積値とを比較する。
照合値と累積値とが一致している場合、前記コンテンツ識別子により識別されるコンテンツをコンテンツ蓄積部２００４から読み出して、情報端末１７０３に送信する。
照合値と累積値とが一致しない場合、サービス提供ができない旨を示すエラー情報を情報端末１７０３に対して送信する。
【０１２０】
また、公知の認証方式を用いてプログラムデータ管理サーバ１７０１の真正性を認証した上で、データ管理部２００２は、プログラムデータ管理サーバ１７０１からプログラムデータ構成識別情報と累積値とを受信した場合、照合値ＤＢにおける受信したプログラムデータ構成識別情報と同値のプログラムデータ構成識別情報に対応する照合値を前記受信した累積値で書き換える。
【０１２１】
（情報端末１７０３）
情報端末１７０３は、具体的には、マイクロプロセッサ、ＲＯＭ、ＲＡＭ、ディスプレイユニット、キーボードなどから構成されるコンピュータシステムである。前記ＲＯＭには、コンピュータプログラムが記憶されており、ＲＡＭ上に読み出されたコンピュータプログラムに従って前記マイクロプロセッサが動作することにより、情報端末１７０３はその機能を達成する。
【０１２２】
図２２は、情報端末１７０３の構成を示すブロック図である。
情報端末１７０３は、ＣＰＵ１０１、更新証明書格納部１０２、計測部１０４、データ格納部１０５、プログラム格納部１０７、通信部２２０１、更新証明書生成部２２０２及びセキュリティデバイス２２０３を含んで構成される。
ここで、本実施の形態において上述の実施の形態と同符号を付している構成については、上述の実施の形態とその機能等に特に変わりはないので説明は省略する。
【０１２３】
（通信部２２０１）
通信部２２０１は、ネットワーク１７０４を介して、プログラムデータ管理サーバ１７０１、サービス提供サーバ１７０２その他の外部装置と通信するネットワーク通信デバイスである。
なお、特に述べない限り、情報端末１７０３における他装置との通信は、「通信部２２０１を用いて通信する」等の明示的な記載をしなくても通信部２２０１を用いて行っているものとする。
【０１２４】
（更新証明書生成部２２０２）
更新証明書生成部２２０２は、更新証明書を生成するデバイスである。
以後、まず本実施の形態で用いられる更新証明書の内容について説明し、次いで更新証明書の生成処理について説明する。
図２４（Ａ）は、本実施の形態における更新証明書の一例である更新証明書２４０１の内容を示す図である。
【０１２５】
更新証明書２４０１は、プログラムデータ構成識別情報、新構成バージョン、新構成累積値、旧構成バージョン、旧構成累積値及び提供者識別情報を含み、更新証明書の提供者による署名が施されたものである。実施の形態１〜４とは異なり、本実施の形態における更新証明書２４０１は、プログラムデータの構成に対して発行される。ここで、プログラムデータの構成とは、情報端末１７０３で動作するＢＩＯＳ、ＯＳ、アプリケーション等の全体または一部の組み合わせを意味する。更新証明書２４０１は、プログラムデータ個別の更新前後のダイジェストを含む実施の形態１〜４の更新証明書とは異なり、あるプログラムデータが更新される前後の累積値を含んでいる。そのため、更新証明書２４０１は、累積値に対応するＢＩＯＳ、ＯＳ、アプリケーション等の全体または一部の組み合わせ毎に発行される。
【０１２６】
プログラムデータ構成識別情報は、自更新証明書が、内容の更新を証明する対象となっている、情報端末１７０３において実行されるＢＩＯＳ、ＯＳ、アプリケーションプログラム等のプログラムデータの構成を識別する識別情報である。
新構成バージョンは、自更新証明書が生成される時点で最新のプログラムデータの構成に含まれる全てのプログラムデータの識別情報と、各プログラムデータに係るバージョン番号のリストである。
【０１２７】
新構成累積値は、前記最新のプログラムデータのダイジェストを含めた累積値である。
本実施の形態では、前記最新のプログラムデータのダイジェストを含む、ＢＩＯＳのダイジェストとＯＳのダイジェストとアプリケーションプログラムのダイジェストとを累積した値となる。
旧構成バージョンは、更新対象であるプログラムデータを更新する前の状態におけるプログラムデータの構成に含まれる全てのプログラムデータの識別情報と、各プログラムデータに係るバージョン番号のリストである。
【０１２８】
旧構成累積値は、前記更新前の更新対象であるプログラムデータのダイジェストを含めた累積値である。
本実施の形態では、前記更新前の更新対象であるプログラムデータのダイジェストを含む、ＢＩＯＳのダイジェストとＯＳのダイジェストとアプリケーションプログラムのダイジェストとを累積した値となる。
【０１２９】
提供者識別情報は、自更新証明書の提供者を識別する識別情報であり、この場合には情報端末１７０３が提供者となるので、提供者識別情報は情報端末１７０３の識別情報となる。
提供者署名は、更新証明書を構成するデータに対する自更新証明書の提供者による署名であり、提供者に固有の秘密鍵を用いて生成された署名である。この場合には情報端末１７０３が提供者となるので、提供者署名は情報端末１７０３に固有の秘密鍵による署名となる。
【０１３０】
次に、更新証明書生成部２２０２が、更新証明書を生成する処理について説明する。
図２５は、更新証明書生成処理を示すフローチャートである。
更新証明書生成部２２０２は、更新対象のプログラムデータの識別情報と更新後のプログラムデータのバージョン番号を含む更新証明書生成指示をＣＰＵ１０１から取得する（ステップＳ２５０１）。
【０１３１】
更新対象のプログラムデータの識別情報と更新後のプログラムデータのバージョン番号は、プログラムデータ管理サーバ１７０１により情報端末１７０３に対して送信されたものであり、公知の認証方式を用いてプログラムデータ管理サーバ１７０１の真正性を認証した上で、ＣＰＵ１０１が取得したものである。
そして、更新証明書格納部１０２に格納されている更新証明書（以下、現更新証明書という。）を読み出し、取得した更新後のプログラムデータのバージョン番号が現更新証明書中の新構成バージョンに含まれる更新対象のプログラムデータのバージョン番号よりも大きい場合（ステップＳ２５０２：ＹＥＳ）に、新たな更新証明書（以下、新更新証明書という。）を生成する（ステップＳ２５０３）。
【０１３２】
ここで、新更新証明書の旧構成バージョンには、前記現更新証明書における新構成バージョンを格納する。
新更新証明書の旧構成累積値には、前記現更新証明書における新構成累積値を格納する。
新更新証明書の新構成バージョンには、現更新証明書中の新構成バージョンに含まれる更新対象のプログラムデータのバージョン番号を、前記取得した更新後のプログラムデータのバージョン番号に更新したものを格納する。
【０１３３】
新更新証明書の新構成累積値には、累積値格納部２０２が格納している累積値、即ち、最新のプログラムデータのダイジェストを含めた累積値を格納する。
新更新証明書のプログラムデータ構成識別情報には、現更新証明書のプログラムデータ構成識別情報を格納する。
新更新証明書の提供者識別情報には、現更新証明書の提供者識別情報を格納する。
【０１３４】
さらに、更新証明書を構成するデータ（プログラムデータ構成識別情報、新構成バージョン、新構成累積値、旧構成バージョン、旧構成累積値、提供者識別情報）に対する更新証明書の提供者による署名を生成する。この場合には情報端末による署名を生成する。
更新証明書生成部２２０２は、以上のようにして生成した新更新証明書を、更新証明書格納部１０２が格納している旧更新証明書に上書きすることで、更新証明書を更新する。
【０１３５】
（セキュリティデバイス２２０３）
セキュリティデバイス２２０３は、既に説明したセキュリティデバイス１０６に対し、再シールの機能を付加したものである。
図２３は、セキュリティデバイスの構成を示すブロック図である。
セキュリティデバイス２２０３は、累積演算部２０１、累積値格納部２０２、復号化部２０３、復号化条件検証部２０４、累積値検証部２３０１及び暗号化部２３０２を含んで構成される。
【０１３６】
セキュリティデバイス２２０３の構成中、上記実施の形態と同符号が付されたものについては、上記実施の形態におけるものと同様であるため、説明を省略する。
暗号化部２３０２は、暗号化鍵を保持しており、当該暗号化鍵を用いてデータを暗号化する。
なお、この暗号化鍵により暗号化されたデータを復号するための復号鍵は、復号化部２０３により保持されているものとする。
【０１３７】
累積値検証部２３０１は、再シール処理についての制御を行う。
図２６は、累積値検証部２３０１による再シール処理を示すフローチャートである。
累積値検証部２３０１は、ＣＰＵ１０１から、更新に係るプログラムデータを識別するプログラムデータ識別情報を含むプログラムデータの更新通知を受け取る（ステップＳ２６０１）。
【０１３８】
そして、累積値検証部２３０１は、前記更新通知に含まれるプログラムデータ識別情報に対応する暗号化データをデータ格納部１０５から読み出す。
そして、復号化部２０３に対し、前記暗号化データの復号を指示する。
ここで、復号化部２０３により前記復号鍵を用いて前記暗号化データが復号されると（ステップＳ２６０２）、復号化部２０３により復号化完了の通知が成されるので、累積値検証部２３０１はその通知を受け取る。
【０１３９】
累積値検証部２３０１は、前記プログラムデータ識別情報に対応する更新証明書を更新証明書格納部１０２から読み出す。
そして、累積値検証部２３０１は、復号化部２０３による復号結果である復号化データに含まれる累積値が、読み出した前記更新証明書に含まれる旧構成累積値と一致するか否かを判定する（ステップＳ２６０３）。
【０１４０】
ステップＳ２６０３において、一致しないと判定された場合（ステップＳ２６０３：ＮＯ）、復号化データは更新証明書に含まれている新構成累積値（最新の累積値）を用いてシールされているか、新構成累積値でも旧構成累積値とも異なる累積値を用いてシールされている。いずれの場合も、再シールの必要はないので処理を終了する。
ステップＳ２６０３において、一致すると判定された場合（ステップＳ２６０３：ＹＥＳ）、さらに、累積値格納部２０２に格納されている累積値が、前記更新証明書中の新構成累積値と一致するか否かを判定する（ステップＳ２６０４）。
【０１４１】
ステップＳ２６０４において、一致しないと判定された場合（ステップＳ２６０４：ＮＯ）、情報端末１７０３上では更新後のプログラムデータの構成に基づくプログラムデータが実行されていない、つまり、更新前のプログラムデータの構成に基づくプログラムデータが実行されているか、不正なプログラムデータが実行されている可能性があるので、処理を終了する。
【０１４２】
ステップＳ２６０４において、一致すると判定された場合（ステップＳ２６０４：ＹＥＳ）、プログラムデータが更新されているにも関わらず、前記暗号化データが以前のプログラムデータに対応する累積値（旧構成累積値）を使ってシールされていることが分かる。そのため、再シールの必要があるので前記復号化データ中の復号化条件を更新証明書中の新構成累積値で置き換える。
【０１４３】
これにより、暗号化対象は、更新証明書中の新構成累積値を含む復号化条件と、暗号化対象のデータとが連結された連結データとなる。
そして、累積値検証部２３０１は、暗号化部２３０２に対して前記連結データの暗号化を指示する（ステップＳ２６０５）。
ここで、暗号化部２３０２により前記暗号鍵を用いて前記連結データが暗号化され（ステップＳ２６０６）、暗号化終了の通知が累積値検証部２３０１に対して行われる。
【０１４４】
累積値検証部２３０１は、前記暗号化終了の通知を暗号化部２３０２から受け取る。
以上により、再シール処理についての制御が終了する。
なお、本実施の形態では、ＣＰＵ１０１は、プログラムデータ管理サーバ１７０１から更新に係るプログラムデータを識別するプログラムデータ識別情報を受け取る毎に、セキュリティデバイス２２０３に対してプログラムデータの更新通知を送信する。よって、セキュリティデバイス２２０３は、プログラムデータの更新が成されるごとに、再シール処理を要するデータに対して再シール処理を実行する。
【０１４５】
すなわち、旧構成累積値を用いてシールされたデータについては、プログラムデータの更新が検出された時点で再シール処理が行われる。
従って、再シール処理の後は、更新後のプログラムデータは、新構成累積値を用いることで復号化条件を満たすことができるようになり、上記実施の形態において行われていたデータの使用における旧構成累積値の算出や、旧構成累積値を使用しての復号化条件の判断等は不要となる。
【０１４６】
（その他変形例）
なお、本発明を上記の実施の形態に基づいて説明してきたが、本発明は、上記の実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々変更を加え得ることは勿論である。
（１）実施の形態５に係る更新証明書は、図２４（Ａ）のように、新構成に係るバージョンと累積値及び旧構成に係るバージョンと累積値といった２世代についての情報を記録するのに限らず、例えば図２４（Ｂ）に示すように複数世代のバージョンと累積値を記録することとしてもよい。
【０１４７】
図２４（Ｂ）は、複数世代のバージョンと、そのバージョンに対応する累積値とを記録する更新証明書を示す。
これにより、情報端末１７０３において、プログラムデータの更新が頻繁に行われ、データに対応付けられている復号化条件に複数世代前のプログラムデータに係るダイジェストが含まれることとなっても、更新証明書に含まれる前記復号化条件に対応する複数世代前の累積値を用いて復号化条件を満たすことができるようになる。
【０１４８】
（２）実施の形態５では、情報端末の内部で更新証明書を作っていたが、これに限られるものではない。例えば、情報端末の内部で更新証明書を作らずに、実施の形態１〜４と同様、外部のサーバや記録媒体を介して更新証明書を取得するとしてもよい。この場合、更新証明書の提供者識別情報は更新証明書を生成する外部機関の識別情報となり、更新証明書に施される署名は、更新証明書を生成する外部機関による署名となる。また、この場合、実施の形態１〜４とは異なり、提供される更新証明書には、更新前後のプログラムデータのダイジェストではなく、図２４（Ａ）もしくは図２４（Ｂ）に示した情報が含まれる。この場合も、累積値が外部から与えられることとなるので、実施の形態５と同様に、更新前の累積値を計算するという処理や、更新前のプログラムデータに係る累積値を格納する更新前累積値格納部が不要となる。
【０１４９】
（３）実施の形態５では、更新証明書生成部２２０２は、更新対象のプログラムデータの識別情報と更新後のプログラムデータのバージョン番号を含む更新証明書生成指示をもとに更新証明書を生成していたが、実施の形態１〜４における個々のプログラムデータの更新証明書を含む更新証明書生成指示をもとに更新証明書を生成するようにしてもよい。この場合、個々のプログラムデータの更新証明書はプログラムデータの提供者による署名が施されたものであり、不正なプログラムデータの構成に基づく更新証明書が生成されてしまうことを防止することが出来る。
【０１５０】
（４）上述した実施の形態およびその変形例では、更新証明書として、第Ｎ−１世代から第Ｎ−ｉ世代までのダイジェストまたは累積値を格納する構成を開示していたが、これに限られるものではない。例えば、ユーザから指定された世代のダイジェストまたは累積値と、最新の世代のダイジェストまたは累積値のみを格納するとしても良い。このような変形例が役に立つケースとしては、ユーザがプログラムデータの更新を忘れており、更新によってプログラムデータのバージョンが２世代以上一度に上がった場合が考えられる。この場合、情報端末の内部では、更新の前後の中間世代にあたるダイジェストまたは累積値を使ったシールが行われることはない。そのため、更新証明書に中間世代のダイジェストまたは累積値を含ませる意味は薄い。したがって、シールした情報のアンシールに必要なダイジェストまたは累積値のみを取得できるようにした方が、更新証明書の容量の削減に繋がる。
【０１５１】
なお、この場合、古いプログラムデータの世代は、ユーザが指定するのではなく、ネットワーク等を介して自動的に更新証明書の発行機関に通知されるとしても良い。通知を行うタイミングとしては、プログラムデータの更新が指示された時などが考えられる。通知を受け取った発行機関は、受け取ったプログラムデータの世代に対応するダイジェストまたは累積値と、最新のプログラムデータに対応するダイジェストまたは累積値とを含んだ更新証明書を作成し、情報装置に送信する。これにより、ユーザは更新前のプログラムデータの世代を調べることなく、自動的に更新前のプログラムデータの世代に対応するダイジェストまたは累積値を含んだ更新証明書を得ることができる。
【０１５２】
（５）上述した実施の形態、および、その変形例では、データのシールは、データと累積値とを対応付けた上で暗号化することによって実現していた。しかし、シールの仕方はこれに限られるものではない。例えば、累積値とデータを対応付けるのではなく、そのデータを使用するプログラムデータのダイジェストとデータとを対応付けても良い。また、データと累積値等を対応付けるのではなく、データを累積値やプログラムデータのダイジェストを鍵として用いて暗号化するとしてもよい。すなわち、データをプログラムデータと対応付けることができ、正しい対応関係が満たされなければデータを取得できない仕組みとなっていれば、シールの実現方法はどのようなものであってもよい。
（６）上述した実施の形態、および、その変形例では、データのシールは、データとプログラムデータのダイジェストの累積値とを対応付けた上で暗号化することによって実現していた。しかし、シールの仕方はこれに限られるものではない。例えば、プログラムデータのダイジェストだけの累積値とデータを対応付けるのではなく、プログラムデータのダイジェスト及び当該プログラムデータの実行中に起こるイベント情報のダイジェストの累積値とデータとを対応付けても良い。ここでプログラムデータの実行中に起こるイベント情報とは、当該プログラムデータが行う各種の処理の処理結果や他の機器とのデータ通信、外部からのデータ入力や情報端末の操作等を意味し、例えば、外部のサーバとの認証処理に成功したという結果や、情報端末１７０３のユーザにより適切なパスワードの入力が行われたといったイベントの情報である。すなわち、データをプログラムデータが行う各種の処理の処理結果や外部からのデータ入力等のイベント情報と対応付け、予め定められた正しいイベントが起きなければデータを取得できない仕組みとしてもよい。
（７）上述した実施の形態、および、その変形例では、シールを、データと累積値とを対応付けた上で暗号化することによって実現していた。しかし、シールの仕方はこれに限られるものではない。例えば、累積値とデータを対応付けるのではなく、累積値と情報端末での暗号処理に用いられる秘密鍵とを対応付けても良い。この場合、シールされた秘密鍵は、アンシールの際にはセキュリティデバイス内で復号されるので、平文の秘密鍵がセキュリティデバイスの外部にでることはない。
【０１５３】
この場合、シールによって対応付けられた累積値とセキュリティデバイスの累積値格納部２０２が保持する累積値とが一致した場合にのみ、セキュリティデバイス内で復号された秘密鍵を用いた処理が可能となり、セキュリティデバイス内で暗復号処理や署名処理が行われる。
また、シールの対象とする情報は秘密鍵に限られるものではなく、共通鍵暗号における共通鍵など、情報端末で行う暗号処理に用いられる鍵の情報であればどのようなものであってもよい。
【０１５４】
（８）上述した実施の形態、および、その変形例では、サービス提供サーバ１６１０の照合値ＤＢ１６１２が更新されていない場合に、情報端末９００は、サービス提供サーバ１６１０からエラーメッセージを受け取った上で更新前累積値格納部２０６が保持する値をサービス提供サーバ１６１０に送っていた。しかし、このような実装に限られるものではなく、照合値ＤＢ１６１２が更新されていないケースを想定して、最初から情報端末９００が、累積値格納部２０２が保持する値と更新前累積値格納部２０６が保持する値とを同時にサービス提供サーバ１６１０に送信するとしてもよい。この場合、サービス提供サーバ１６１０は、受け取った何れかの値と一致するのであれば、情報サービスの提供を行う。
【０１５５】
（９）上記の各装置は、具体的には、マイクロプロセッサ、ＲＯＭ、ＲＡＭ、ハードディスクユニット、ディスプレイユニット、キーボード、マウスなどから構成されるコンピュータシステムである。前記ＲＡＭ又は前記ハードディスクユニットには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムに従って動作することにより、各装置は、その機能を達成する。ここで、コンピュータプログラムは、所定の機能を達成するために、コンピュータに対する指令を示す命令コードが複数個組み合わされて構成されたものである。
なお、各装置は、マイクロプロセッサ、ＲＯＭ、ＲＡＭ、ハードディスクユニット、ディスプレイユニット、キーボード、マウスなどの全てを含むコンピュータシステムに限らず、これらの一部から構成されているコンピュータシステムであってもよい。
【０１５６】
（１０）上記の各装置を構成する構成要素の一部又は全部は、１個のシステムＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ：大規模集積回路）から構成されているとしてもよい。システムＬＳＩは、複数の構成部を１個のチップ上に集積して製造された超多機能ＬＳＩであり、具体的には、マイクロプロセッサ、ＲＯＭ、ＲＡＭなどを含んで構成されるコンピュータシステムである。前記ＲＡＭには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムに従って動作することにより、システムＬＳＩは、その機能を達成する。これらは個別に１チップ化されても良いし、一部又は全てを含むように１チップ化されても良い。
【０１５７】
また、ここでは、システムＬＳＩとしたが、集積度の違いにより、ＩＣ、システムＬＳＩ、スーパーＬＳＩ、ウルトラＬＳＩと呼称されることもある。
また、集積回路化の手法はＬＳＩに限るものではなく、専用回路又は汎用プロセサで実現してもよい。ＬＳＩ製造後に、プログラムすることが可能なＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）や、ＬＳＩ内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサーを利用しても良い。
【０１５８】
さらには、半導体技術の進歩又は派生する別技術によりＬＳＩに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。バイオ技術の適用等が可能性としてありえる。
（１１）上記の各装置を構成する構成要素の一部又は全部は、各装置に脱着可能なＩＣカード又は単体のモジュールから構成されているとしてもよい。前記ＩＣカード又は前記モジュールは、マイクロプロセッサ、ＲＯＭ、ＲＡＭ、などから構成されるコンピュータシステムである。前記ＩＣカード又は前記モジュールは、上記の超多機能ＬＳＩを含むとしてもよい。マイクロプロセッサが、コンピュータプログラムに従って動作することにより、前記ＩＣカード又は前記モジュールは、その機能を達成する。このＩＣカード又はこのモジュールは、耐タンパ性を有するとしてもよい。
【０１５９】
（１２）本発明は、上記に示す方法であるとしてもよい。また、これらの方法をコンピュータにより実現するコンピュータプログラムであるとしてもよいし、前記コンピュータプログラムからなるデジタル信号であるとしてもよい。
また、本発明は、前記コンピュータプログラム又は前記デジタル信号をコンピュータ読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、ＣＤ―ＲＯＭ、ＭＯ、ＤＶＤ、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、ＢＤ（Ｂｌｕ−ｒａｙ  Ｄｉｓｃ）、半導体メモリなど、に記録したものとしてもよい。また、これらの記録媒体に記録されている前記コンピュータプログラム又は前記デジタル信号であるとしてもよい。
【０１６０】
また、本発明は、前記コンピュータプログラム又は前記デジタル信号を、電気通信回線、無線又は有線通信回線、インターネットを代表とするネットワーク、データ放送等を経由して伝送するものとしてもよい。
また、前記プログラム又は前記デジタル信号を前記記録媒体に記録して移送することにより、又は前記プログラム又は前記デジタル信号を前記ネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしてもよい。
【０１６１】
（１３）上記実施の形態及び上記変形例をそれぞれ組み合わせるとしてもよい。
【産業上の利用可能性】
【０１６２】
本発明は、本発明の情報端末に搭載されるセキュリティデバイスをそれらの機器に搭載し、情報端末と同様の構成にすることによって、プログラムデータが更新された場合でも、更新したプログラムデータを元に戻すことなく、シールされたデータの復号化や、ＣＰＵが実行しているプログラムデータを認証するサービス提供サーバからの情報サービスの提供を受けることができるという効果を有し、パーソナルコンピュータや携帯電話機、オーディオプレーヤ、テレビジョン受像機、ビデオレコーダなど、プログラムデータの更新を行う情報通信機器や家電機器に有用である。
【図面の簡単な説明】
【０１６３】
【図１】本発明の実施の形態１に係る情報端末の構成を示すブロック図
【図２】本発明の実施の形態１におけるセキュリティデバイスの構成を示すブロック図
【図３】図３（Ａ）は、本発明の実施の形態１から実施の形態４における更新証明書のデータ構造を示す図、図３（Ｂ）は、本発明の実施の形態１から実施の形態４における複数の世代のバージョンのプログラムデータのダイジェストが含まれる更新証明書のデータ構造を示す図
【図４】図４（Ａ）は、本発明の実施の形態１から実施の形態４におけるシールされたデータのデータ構造を示す図、図４（Ｂ）は、本発明の実施の形態１から実施の形態４における属性情報付きのシールされたデータのデータ構造を示す図
【図５】本発明の実施の形態１または実施の形態２における情報端末のＣＰＵが一つのプログラムデータを実行する際に行う処理のフロー図
【図６】本発明の実施の形態１から実施の形態３における情報端末がシールされたデータの暗号を復号化する処理のフロー図
【図７】本発明の実施の形態２に係る情報端末の構成を示すブロック図
【図８】本発明の実施の形態２におけるセキュリティデバイスの構成を示すブロック図
【図９】本発明の実施の形態３に係る情報端末の構成を示すブロック図
【図１０】本発明の実施の形態３におけるセキュリティデバイスの構成を示すブロック図
【図１１】本発明の実施の形態３または実施の形態４に係る情報端末のＣＰＵが一つのプログラムデータを実行する際に行う処理のフロー図
【図１２】本発明の実施の形態３におけるセキュリティデバイスが暗号化部を備える場合の構成を示すブロック図
【図１３】本発明の実施の形態３に係る情報端末がシールされたデータの暗号の復号化と復号化されたデータの再暗号化をする処理のフロー図
【図１４】本発明の実施の形態４に係る情報端末の構成を示すブロック図
【図１５】図１５（Ａ）は、本発明の実施の形態４におけるセキュリティデバイスの構成を示すブロック図、図１５（Ｂ）は、本発明の実施の形態４におけるセキュリティデバイスが暗号化部を備える場合のセキュリティデバイスの構成を示すブロック図
【図１６】従来の技術およびサービス提供サーバの構成を示すブロック図
【図１７】本発明の実施の形態５に係るプログラム更新システムの構成を示す図
【図１８】本発明の実施の形態５に係るプログラムデータ管理サーバの構成を示す図
【図１９】本発明の実施の形態５に係るプログラムデータＤＢの一例を示す図
【図２０】本発明の実施の形態５に係るサービス提供サーバの構成を示す図
【図２１】本発明の実施の形態５に係る照合値ＤＢの内容を示す図
【図２２】本発明の実施の形態５に係る情報端末の構成を示すブロック図
【図２３】本発明の実施の形態５に係るセキュリティデバイスの構成を示すブロック図
【図２４】図２４（Ａ）は、本発明の実施の形態５に係る２世代の累積値に係る更新証明書を示す図、図２４（Ｂ）本発明の実施の形態５に係る複数世代の累積値に係る更新証明書を示す図
【図２５】本発明の実施の形態５に係る更新証明書生成処理を示すフローチャート
【図２６】本発明の実施の形態５に係る累積値検証部による再シール処理を示すフローチャート
【符号の説明】
【０１６４】
１００、７００、９００、１４００  情報端末
１０１、１６０１  ＣＰＵ
１０２  更新証明書格納部
１０３、７０３、９０３、１４０３  選択部
１０４  計測部
１０５  データ格納部
１０６、７０６、９０６、１４０６  セキュリティデバイス
１０７  プログラム格納部
２０１  累積演算部
２０２  累積値格納部
２０３  復号化部
２０４  復号化条件検証部
２０５  署名部
２０６  更新前累積値格納部
２０７  暗号化部
３００、３５０  更新証明書
４００  シールされたデータ
１６００  パーソナルコンピュータ
１６０１  ＣＰＵ
１６０２  ＴＰＭ
１６０３  ハードディスク
１６０４  ＰＣＲ
１６０５  ＢＩＯＳ
１６０６  ＯＳ
１６０７  アプリケーション
１６０８  シールされたデータ
１６１０  サービス提供サーバ
１６１１  クライアント認証部
１６１２  照合値ＤＢ
１６１３  サービス提供部
１６２０  データ
１６２０ａ  ＰＣＲ値
１６２０ｂ  チャレンジ情報
【手続補正３】
【補正対象書類名】図面
【補正対象項目名】全図
【補正方法】変更
【補正の内容】
【図１】
2008081801.tif 000029
【図２】
2008081801.tif 000030
【図３】
2008081801.tif 000031
【図４】
2008081801.tif 000032
【図５】
2008081801.tif 000033
【図６】
2008081801.tif 000034
【図７】
2008081801.tif 000035
【図８】
2008081801.tif 000036
【図９】
2008081801.tif 000037
【図１０】
2008081801.tif 000038
【図１１】
2008081801.tif 000039
【図１２】
2008081801.tif 000040
【図１３】
2008081801.tif 000041
【図１４】
2008081801.tif 000042
【図１５】
2008081801.tif 000043
【図１６】
2008081801.tif 000044
【図１７】
2008081801.tif 000045
【図１８】
2008081801.tif 000046
【図１９】
2008081801.tif 000047
【図２０】
2008081801.tif 000048
【図２１】
2008081801.tif 000049
【図２２】
2008081801.tif 000050
【図２３】
2008081801.tif 000051
【図２４】
2008081801.tif 000052
【図２５】
2008081801.tif 000053
【図２６】
2008081801.tif 000054
【国際調査報告】
2008081801.tif 000055
2008081801.tif 000056