JP5097130B2 - 情報端末、セキュリティデバイス、データ保護方法及びデータ保護プログラム - Google Patents

情報端末、セキュリティデバイス、データ保護方法及びデータ保護プログラム Download PDF

Info

Publication number
JP5097130B2
JP5097130B2 JP2008552115A JP2008552115A JP5097130B2 JP 5097130 B2 JP5097130 B2 JP 5097130B2 JP 2008552115 A JP2008552115 A JP 2008552115A JP 2008552115 A JP2008552115 A JP 2008552115A JP 5097130 B2 JP5097130 B2 JP 5097130B2
Authority
JP
Japan
Prior art keywords
program
data
value
digest
update
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2008552115A
Other languages
English (en)
Other versions
JPWO2008081801A1 (ja
Inventor
久 高山
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Panasonic Corp
Panasonic Holdings Corp
Original Assignee
Panasonic Corp
Matsushita Electric Industrial Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Panasonic Corp, Matsushita Electric Industrial Co Ltd filed Critical Panasonic Corp
Priority to JP2008552115A priority Critical patent/JP5097130B2/ja
Publication of JPWO2008081801A1 publication Critical patent/JPWO2008081801A1/ja
Application granted granted Critical
Publication of JP5097130B2 publication Critical patent/JP5097130B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/572Secure firmware programming, e.g. of basic input output system [BIOS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)

Description

本発明は、パーソナルコンピュータや携帯電話機などの情報通信機器、インターネットアクセス機能を備えたテレビ受信装置などの情報家電機器等の情報端末と、その情報端末に内蔵されるセキュリティデバイスに関し、特に、情報端末において実行されているプログラムデータの認証処理や、情報端末において実行されるプログラムデータにバインドして暗号化されたデータの復号化処理を、プログラムデータが更新された場合においても可能にするものである。
近年、ネットワークを介して提供されるサービスは、音楽や映像といった著作物の提供や、企業が保有する機密情報の閲覧、オンラインバンキングなど多岐に渡り、かつ、その中で扱われる情報の経済的価値も高いものになってきている。多岐に渡るサービスに対応するため、パーソナルコンピュータ、携帯端末、携帯電話、デジタル家電などの情報端末には、多くのクライアントソフトウェア(プログラムデータ)がインストールされる。また、それらのプログラムデータにはサービスを受ける機能そのものの他に、高価な情報を保護するための機能が実装されている。
こうしたサービスで得られる価値が高まるにつれ、情報端末上のプログラムデータに不正な変更を加えるなどの方法でソフトウェアが課している制限を迂回されることによる被害が深刻化している。このため、サービスを提供しようとしているパーソナルコンピュータのクライアントソフトウェアおよびそれが動作するオペレーティングシステムを含んだ実行環境に、不正な変更が加えられていないかどうかを検証する必要性が増している。
そうした必要性に応えるため、TCG(Trusted Computing Group)などにより、パーソナルコンピュータにおいて実行されているプログラムデータの情報を正確に伝える技術が提案されている。
図16は、TCGなどによって提案されている技術に基づき、パーソナルコンピュータ1600が、保持するデータを暗号化して保護し、サービス提供サーバ1610がパーソナルコンピュータ1600上で実行されているプログラムデータを認証して情報サービスを提供するシステムの一例を示している。パーソナルコンピュータ1600には、TPM(TrustedPlatform Module)1602と呼ばれる耐タンパモジュールが実装されている。
パーソナルコンピュータ1600のCPU1601は、BIOS1605、OS1606、アプリケーション1607、およびプログラムデータのコードを実行する際に、それぞれのハッシュを計算し、計算したハッシュをTPM1602に送信する。ハッシュを受信したTPM1602は、PCR(PlatformConfiguration Register)1604に既に格納されているハッシュと受信したハッシュとを連結し、その連結したデータに対して更にハッシュ演算を実行してその結果をPCR1604に格納する。PCR1604には、CPU1601が実行するプログラムデータを累積した情報が格納されることになるので、PCR1604の値は、パーソナルコンピュータ1600上でどのプログラムデータが実行されているかということを示す。
パーソナルコンピュータ1600で、データを秘匿化して安全に保持する場合には、TPM1602は、データをTPM1602のPCR1604の値にバインドして暗号化してハードディスク1603に保存する。具体的には、TPM1602は、そのデータをパーソナルコンピュータ1600で閲覧または処理する場合にパーソナルコンピュータ1600のCPU1601が実行していることが期待される正しいプログラムデータを実際にCPU1601が実行している場合のPCRの値を復号化の際の照合値として含める形式でデータを暗号化する。暗号化は公開鍵暗号の公開鍵で暗号化され、その公開鍵に対応する秘密鍵はTPM1602が管理する。
このようにデータをTPM1602のPCR1604の値にバインドして暗号化することをシール(Seal)と呼ぶ。逆に、シールされたデータ1608を復号化することをアンシール(Unseal)と呼ぶ。
シールされたデータ1608を復号化する場合、TPM1602は、まず、暗号化に用いた公開鍵に対応する秘密鍵を用いてシールされたデータ1608の暗号を復号化する。次に、TPM1602は、復号化したデータに含まれる照合値とPCR1604に格納されている値(PCR値)とを照合する。照合の結果、一致した場合、TPM1602は、パーソナルコンピュータ1600上で正しいプログラムデータが実行されていることを認証して、復号化したデータをTPM1602からCPU1601へ出力する。照合の結果、一致しなかった場合、TPM1602は、正しいプログラムデータが実行されていることを認証せず、復号化したデータをTPM1602から外部へ出力しない。
また、パーソナルコンピュータ1600がサービス提供サーバ1610から情報サービスの提供を受ける場合、パーソナルコンピュータ1600は、PCR1604に格納されている値(PCR値)にTPM1602が電子署名を施したデータ1620をサービス提供サーバ1610へ送信する。この時のPCR1604に格納されている値(PCR値1620a)に電子署名を施したデータ1620は、TPM1602がCPU1601からの要求に基づいて、PCR1604に格納されている値(PCR値1620a)とサービス提供サーバ1610のクライアント認証部1611から受信したチャレンジ情報1620b(サービス提供サーバ1610が生成した乱数など)とを連結したデータに対して署名を施したものである。
サービス提供サーバ1610の照合値DB1612には、サービス提供サーバ1610側が期待する正しいプログラムデータをパーソナルコンピュータ1600のCPU1601が実行している場合のPCRの値(PCR照合値)が格納されている。サービス提供サーバ1610のクライアント認証部1611は、まず、パーソナルコンピュータ1600から受信したデータ1620に施された電子署名を検証する。次に、クライアント認証部1611は、データ1620に含まれるPCR値1620aと照合値DB1612に格納されているPCR照合値とを照合し、さらにデータ1620に含まれるチャレンジ情報1620bとパーソナルコンピュータ1600に対して送信したチャレンジ情報1620bとを照合して、それぞれが一致した場合に、パーソナルコンピュータ1600上で正しいプログラムデータが実行されていることを認証する。そして、サービス提供サーバ1610のサービス提供部1613が、パーソナルコンピュータ1600に情報サービスを提供する。照合の結果、一致しなかった場合は、サービス提供サーバ1610のサービス提供部1613は、パーソナルコンピュータ1600へ情報サービスを提供しない。
上記のTCGなどによって提案されている技術は、例えば特許文献1や特許文献2において公開されている。
米国特許出願公開第2005/0021968号明細書 特表2002−536757号公報
しかし、TCGなどによって提案されている技術では、プログラムデータのバージョンアップや、バグの改修、脆弱性の改善のためのアップデートによって、プログラムデータが更新された場合、TPM1602は、更新前のPCR1604の値にバインドされてシールされたデータを復号化することができなくなってしまうという問題がある。
また、プログラムデータの更新に合わせて、サービス提供サーバ1610の照合値DB1612に格納されているPCR照合値が更新されていない場合には、パーソナルコンピュータ1600は、情報サービスの提供を受けることが出来ないという問題がある。暫定的に、プログラムデータを更新前のものに戻すことによって、シールされたデータを復号化したり、サービス提供サーバ1610からの情報サービスの提供を受けたりできるようにする方法も考えられる。しかし、バグや脆弱性がある状態に戻すことになる場合があるので、安全上の問題がある。
本発明は、かかる点に鑑みてなされたものであり、プログラムデータが更新された場合でも、更新したプログラムデータを元に戻すことなく、シールされたデータを復号化することができ、CPUが実行しているプログラムデータを認証するサービス提供サーバからの情報サービスの提供を受けることができる情報端末、およびセキュリティデバイスを提供することを目的とする。
上記課題を解決するために、本発明は、プログラムを実行する情報端末であって、旧プログラムの特徴を示す旧特徴値と前記旧プログラムの更新版である新プログラムの特徴を示す新特徴値との組を含む更新証明書を取得する更新証明書取得手段と、データを、前記データを使用していたプログラムである過去プログラムの特徴を示す過去特徴値と対応付けて保持している保持手段と、前記新特徴値を用いて、前記情報端末で実行中のプログラムである現プログラムが前記新プログラムと一致するか否かを判定する判定手段と、前記判定手段により一致すると判定された場合に、前記旧特徴値と前記過去特徴値とに基づいて前記データの使用可否を判断し、使用可と判断された場合に、前記実行中の現プログラムに対し前記データの使用を許可する許可手段とを備える。
本発明の情報端末は、上述の構成を備えることにより、プログラムの特徴値を用いて使用制限をかけるような情報端末において、データの使用制限開始時とデータの使用時との間にプログラムが更新されても、更新後のプログラムは前記データを継続して使用できる。従来は、古いプログラム(旧プログラム)と更新後プログラム(新プログラム)とで特徴値が異なることから、旧プログラムの特徴値を用いて使用制限がかけられたデータを新プログラムで使用することはできなかった。しかし、本発明によれば、更新証明書に含まれる旧プログラムの特徴値(旧特徴値)を用いて、前記データの使用制限を解除することができるので、新プログラムでもデータを継続して使用することができる。さらに、旧特徴値を用いて使用制限を解除するのは、情報端末で動作しているプログラムが新プログラムであることを確認した後である。そのため、本発明では、情報端末で動作している現プログラムが正常に更新されていることを確認した上で、使用制限を解除するよう制御することができる。
また、前記新プログラムのダイジェストに係る値は、前記新プログラムのダイジェストであり、前記判定手段は、前記現プログラムのダイジェストを生成するダイジェスト生成部と、前記現プログラムのダイジェストと前記新プログラムのダイジェストとが一致する場合に、前記現プログラムが前記新プログラムと一致すると決定する決定部とを含んでもよい。
この構成によれば、プログラムが正常に更新され、実行時点において改竄されていないことを確認した上で、データの使用を許可することができる。
また、前記旧特徴値は、前記旧プログラムのダイジェストであり、前記過去特徴値は、前記過去プログラムのダイジェストであり、前記データは、前記過去プログラムのダイジェストに係る値である使用条件値と対応付けられており、前記ダイジェスト生成部は、更に、前記現プログラムが実行されるより前に所定の実行順序に従い実行された1以上のプログラムそれぞれのダイジェストを生成し、前記許可手段は、前記1以上のプログラムそれぞれのダイジェストと、前記更新証明書に含まれる前記旧プログラムのダイジェストとを累積演算して更新前累積値を生成する累積値生成部と、前記使用条件値と前記更新前累積値とが一致するか否かを判定する累積値判定部と、前記累積値判定部により一致すると判定された場合に、前記現プログラムに対し前記データの使用を許可する使用許可部とを備えることとしてもよい。
この構成によれば、ダイジェストを累積演算した累積値を用いて、使用制限を解除することができる。これにより、更新対象となったプログラムのみならず、そのプログラムの実行環境まで含めて正当性を確認した上で使用制限を解除することができる。
また、前記累積値生成部は、前記判定手段により一致すると判定された場合に前記更新前累積値を生成し、前記判定手段により一致しないと判定された場合に、前記現プログラムのダイジェストと、前記1以上のプログラムそれぞれのダイジェストとを累積演算して現累積値を生成し、前記累積値判定部は、前記判定手段により一致すると判定された場合に、前記使用条件値と前記更新前累積値とが一致するか否かを判定し、前記判定手段により一致しないと判定された場合に、前記使用条件値と前記現累積値とが一致するか否かを判定し、前記使用許可部は、前記累積値判定部により一致すると判定された場合に、前記現プログラムに対し前記データを使用許可することとしてもよい。
また、前記累積値生成部は、更に、前記更新前累積値、および、前記現プログラムのダイジェストと前記1以上のプログラムそれぞれのダイジェストとを累積演算した現累積値を生成し、前記使用許可部は、前記使用条件値が、前記現累積値又は前記更新前累積値と一致するか否かを判定し、前記現累積値又は前記更新前累積値のいずれかと一致すると判定した場合に、実行中の前記現プログラムに対し前記データの使用を許可することとしてもよい。
この構成によれば、情報端末において、プログラムが新プログラムに更新され、旧プログラムの旧特徴値を生成し得ない状態においても、更新証明書に含まれる旧特徴値を用いて前記使用条件値に一致する累積値を生成でき、当該累積値を用いてデータを使用許可し、更新後のプログラムにデータを継続して使用させることができる。
また、前記累積値生成部は、更に、前記1以上のプログラムそれぞれのダイジェストと、前記現プログラムのダイジェストとを累積演算して現累積値を生成し、前記許可手段は、更に、前記データを使用可と判断した場合に、前記データに対応付けられている前記使用条件値の値を前記現累積値に更新することとしてもよい。
この構成によれば、前記データに係る前記使用条件値を置き換えた後は、新プログラムにおいて旧プログラムの旧特徴値を用いることなく前記データを使用することができる。
また、前記情報端末において、前記データと前記使用条件値とは暗号化された後に保持されており、前記許可手段は、更に、前記使用許可部による判定の前に、前記データと前記使用条件値とを復号する復号部と、前記現プログラムによる前記データの使用が終了した後に、前記データと前記使用条件値とを暗号化する暗号化部とを備えることとしてもよい。
この構成によれば、データと使用条件値を暗号化によって保護することが出来る。
また、前記新特徴値は、前記情報端末において前記現プログラムより前に所定の実行順序に従い実行される1以上のプログラムそれぞれのダイジェストと、前記新プログラムのダイジェストとを累積演算した結果である更新後累積値であり、前記判定手段は、前記現プログラムが実行されるより前に所定の実行順序に従い実行された1以上のプログラムそれぞれのダイジェストと、前記現プログラムのダイジェストとを生成するダイジェスト生成部と、前記ダイジェスト生成部により生成されたダイジェストを累積演算して現累積値を生成する累積値生成部と、前記更新後累積値と前記現累積値とが一致する場合に、前記現プログラムが前記新プログラムと一致すると決定する決定部とを含むこととしてもよい。
この構成によれば、情報端末において、更新対象のプログラムのみならず、そのプログラムの実行環境まで含めて正当性を確認した上で使用制限を解除することができる。
前記旧特徴値は、前記情報端末において前記現プログラムより前に所定の実行順序に従い実行される1以上のプログラムそれぞれのダイジェストと、前記旧プログラムのダイジェストとを累積演算した結果である更新前累積値であり、前記過去特徴値は、前記情報端末において前記現プログラムより前に所定の実行順序に従い実行される1以上のプログラムそれぞれのダイジェストと、前記過去プログラムのダイジェストとを累積演算した結果である過去累積値であり、前記データは前記過去特徴値と同一の値である使用条件値と対応付けられており、前記許可手段は、前記判定手段により一致すると判定された場合に、前記使用条件値と、前記更新前累積値とが一致するか否かを判定する累積値判定部と、前記累積値判定部により一致すると判定された場合に、実行中の前記現プログラムに対し、前記データの使用を許可する使用許可部とを備えてもよい。
この構成によれば、情報端末において、プログラムが新プログラムに更新されて更新前累積値を生成し得ない状態においても、前記更新証明書に旧プログラムの更新前累積値が含まれており、前記使用条件値に一致する累積値を更新証明書から得ることができるので、更新後のプログラムにデータを継続して使用させることができる。
また、前記許可手段は、更に、前記使用許可部によりデータの使用が許可された場合に、前記データに対応付けられている前記使用条件値の値を、前記累積値生成部により生成された前記現累積値に更新する再シール部を備えてもよい。
この構成によれば、前記データに係る前記使用条件値を置き換えた後は、新プログラムにおいて旧プログラムの更新前累積値を用いることなく前記データを使用することができる。
また、前記情報端末は、プログラムの特徴を示す特徴値である認証値に基づきサービスの提供可否を判定するサービス提供装置と共に用いられ、前記サービス提供装置は、プログラムの特徴を示す特徴値である照合値を記憶する記憶手段と、前記情報端末から認証値を受信する受信手段と、前記認証値と前記照合値とが一致する場合に、前記情報端末にサービスを提供する提供手段とを備え、前記情報端末は、更に、前記サービス提供装置に対し、前記現プログラムの特徴を示す認証値を送信し、前記認証値の送信に対する応答として前記サービスの提供が成されなかった場合に、前記旧プログラムの特徴を示す特徴値である認証値を送信する送信手段を備えることとしてもよい。
この構成によれば、前記情報端末において、プログラムが旧プログラムから新プログラムへと更新されることによりデータを使用するプログラムが旧プログラムから新プログラムに変わり、それに伴いデータを使用するプログラムの特徴値が旧特徴値から新特徴値に変わってしまっても、新プログラムは、更新証明書に含まれる旧特徴値に基づいて前記サービス提供装置からサービスの提供を受けることができる。
また、前記更新証明書取得手段は、前記新プログラムを更新するための更新用プログラムを取得するプログラム取得部と、前記更新用プログラムの特徴を示す更新用特徴値を生成する更新用ダイジェスト生成部と、前記更新証明書に含まれる旧特徴値を、前記更新証明書に含まれる新特徴値で書き換え、前記更新証明書に含まれる新特徴値を、前記ダイジェスト生成部により生成された更新用特徴値で書き換える更新証明書更新部とを含んでもよい。
この構成によれば、情報端末は、自端末内で更新証明書を生成し使用することができる。
本発明は、プログラムを実行する情報端末に用いられるセキュリティデバイスであって、前記情報端末は、旧プログラムのダイジェストと、前記旧プログラムの更新版である新プログラムのダイジェストとの組を含む更新証明書を取得する更新証明書取得手段と、データを、前記データを使用していたプログラムである過去プログラムのダイジェストである使用条件値と対応付けて保持している保持手段と、実行中の現プログラムが実行されるより前に所定の実行順序に従い実行された1以上のプログラムそれぞれのダイジェストと、前記現プログラムのダイジェストとを生成するダイジェスト生成手段と、前記現プログラムのダイジェストと前記新プログラムのダイジェストとが一致する場合に、前記現プログラムが前記新プログラムと一致すると決定する決定手段とを備え、前記セキュリティデバイスは、前記判定手段により一致すると判定された場合に、前記1以上のプログラムそれぞれのダイジェストと、前記更新証明書に含まれる前記旧プログラムのダイジェストとを累積演算して累積値を生成する累積値生成部と、前記使用条件値と、前記累積値生成部により生成された累積値とが一致するか否かを判定する累積値判定部と、前記累積値判定部により一致すると判定された場合に、前記現プログラムに対し前記データの使用を許可する使用許可部とを備える。
この構成によれば、累積値の生成及びデータの使用許可の判定をより安全に行うことができる。
本発明は、プログラムを実行する情報端末に用いられるセキュリティデバイスであって、前記情報端末は、実行中のプログラムである現プログラムより前に所定の実行順序に従い実行される1以上のプログラムそれぞれのダイジェストと旧プログラムのダイジェストとを累積演算した結果である更新前累積値と、前記現プログラム前に所定の実行順序に従い実行される1以上のプログラムそれぞれのダイジェストと前記旧プログラムの更新版である新プログラムのダイジェストとを累積演算した結果である更新後累積値との組を含む更新証明書を取得する更新証明書取得手段と、データを、前記データを使用していたプログラムである過去プログラムのダイジェストに係る情報である使用条件値と対応付けて保持している保持手段と、前記現プログラムが実行されるより前に所定の実行順序に従い実行された1以上のプログラムそれぞれのダイジェストと、前記現プログラムのダイジェストとを生成するダイジェスト生成手段と、前記セキュリティデバイスから、現累積値を取得する現累積値取得手段と、前記現累積値と前記更新後累積値とが一致する場合に、前記現プログラムが前記新プログラムと一致すると決定する決定手段とを備え、前記セキュリティデバイスは、前記ダイジェスト生成部により生成されたダイジェストを累積演算して前記現累積値を生成し、前記情報端末に出力する累積値生成手段と、前記決定手段により一致すると決定された場合に、前記使用条件値と、前記更新前累積値とが一致するか否かを判定する累積値判定手段と、前記累積値判定部により一致すると判定された場合に、実行中の前記現プログラムに対し、前記データの使用を許可する使用許可手段とを備える。
本発明は、プログラムを実行する情報端末に用いられるデータ保護方法であって、旧プログラムの特徴を示す旧特徴値と前記旧プログラムの更新版である新プログラムの特徴を示す新特徴値との組を含む更新証明書を取得する更新証明書取得ステップと、データを、前記データを使用していたプログラムである過去プログラムの特徴を示す過去特徴値と対応付けて保持している保持ステップと、前記新特徴値を用いて、前記情報端末で実行中のプログラムである現プログラムが前記新プログラムと一致するか否かを判定する判定ステップと、前記判定手段により一致すると判定された場合に、前記旧特徴値と前記過去特徴値とに基づいて前記データの使用可否を判断し、使用可と判断された場合に、前記実行中の現プログラムに対し前記データを出力する許可ステップとを備える。
本発明は、プログラムを実行する情報端末に用いられるデータ保護プログラムであって、旧プログラムの特徴を示す旧特徴値と前記旧プログラムの更新版である新プログラムの特徴を示す新特徴値との組を含む更新証明書を取得する更新証明書取得ステップと、データを、前記データを使用していたプログラムである過去プログラムの特徴を示す過去特徴値と対応付けて保持している保持ステップと、前記新特徴値を用いて、前記情報端末で実行中のプログラムである現プログラムが前記新プログラムと一致するか否かを判定する判定ステップと、前記判定手段により一致すると判定された場合に、前記旧特徴値と前記過去特徴値とに基づいて前記データの使用可否を判断し、使用可と判断された場合に、前記実行中の現プログラムに対し前記データの使用を許可する許可ステップとを含む。
この構成によれば、プログラムの特徴値を用いて使用制限をかけるような情報端末において、データの使用制限開始時とデータの使用時との間にプログラムが更新されても、更新後のプログラムは前記データを継続して使用できる。従来は、古いプログラム(旧プログラム)と更新後プログラム(新プログラム)とで特徴値が異なることから、旧プログラムの特徴値を用いて使用制限がかけられたデータを新プログラムで使用することはできなかった。しかし、本発明によれば、更新証明書に含まれる旧プログラムの特徴値(旧特徴値)を用いて、前記データの使用制限を解除することができるので、新プログラムでもデータを継続して使用することができる。さらに、旧特徴値を用いて使用制限を解除するのは、情報端末で動作しているプログラムが新プログラムであることを確認した後である。そのため、本発明では、情報端末で動作している現プログラムが正常に更新されていることを確認した上で、使用制限を解除するよう制御することができる。
以下、本発明の実施の形態について、図面を用いて詳細に説明する。
(実施の形態1)
始めに、本発明の実施の形態1に係る情報端末100の構成について説明する。
図1は、本発明の実施の形態1に係る情報端末100の構成を示すブロック図である。情報端末100は、図1に示すように、CPU101、CPU101が実行するプログラムデータを格納するプログラム格納部107、プログラムデータの更新を証明する更新証明書を格納する更新証明書格納部102、CPU101が実行するプログラムデータのダイジェストを生成する計測部104、プログラムデータのダイジェストの累積演算を行ってその結果を保持するセキュリティデバイス106、セキュリティデバイス106が累積演算を行うプログラムデータのダイジェストを選択する選択部103、および、CPU101またはセキュリティデバイス106が処理したデータを格納するデータ格納部105とから構成される。ここで、データのダイジェストとは、具体的には、データに対するSHA−1(SecureHash Algorithm 1)等のハッシュ演算の結果を指し、以下においてもダイジェストとは、SHA−1等のハッシュ演算の結果を意味することとする。すなわち、ダイジェストを生成することは、ハッシュ値を計算する(「計測する」ともいう)ことを意味する。
選択部103と計測部104は、以下においてそれぞれ詳しく説明する動作を行う専用ハードウェアまたはCPU101が実行するソフトウェアによって実現される。
また、更新証明書格納部102とデータ格納部105とプログラム格納部107は、具体的には不揮発性メモリやハードディスクその他の記憶装置によって実現される。データ格納部105は、図16におけるハードディスク1603に相当する。
プログラム格納部107は、更新されたプログラムデータ(更新後のプログラムデータ)を格納する。更新証明書格納部102は、プログラム格納部107に格納されている更新後のプログラムデータに対応する更新証明書を格納する。後述する更新証明書は、プログラムデータを更新する際にネットを介してダウンロードまたはCD−ROM等の記憶媒体を介してロードされ、更新証明書格納部102に格納される。通常、更新証明書は、更新後のプログラムデータと共に情報端末100にロードされる。
また、データ格納部105は、セキュリティデバイス106が保持するプログラムデータのダイジェストの累積演算の結果にバインドしてシールされたデータを格納する。その中には、更新前のプログラムデータを実行した場合の累積演算の結果にバインドしてシールされたデータも含まれている。
図2は、本発明の実施の形態1におけるセキュリティデバイス106の構成を示すブロック図である。セキュリティデバイス106は、図2に示すように、CPU101から受信したダイジェストの累積演算を行う累積演算部201と、累積演算部201が行った累積演算の結果を保持する累積値格納部202と、CPU101から受信したアンシールコマンドに基づいてシールされたデータの暗号を復号化する復号化部203と、シールされたデータに含まれる復号化条件を満たしているか否かを検証する復号化条件検証部204と、CPU101からの要求に基づいて累積値格納部202が保持する累積演算の結果に署名を行う署名部205とから構成される。セキュリティデバイス106は、図16におけるTPM1602に、累積値格納部202は、PCR1604にそれぞれ相当する。
累積値格納部202は、具体的には不揮発性メモリによって実現され、累積演算部201、復号化部203、復号化条件検証部204、および署名部205は、具体的にはセキュリティデバイス106が内蔵するCPU(不図示)と暗号コプロセッサ等の暗号処理アクセラレータ(不図示)と不揮発性メモリ(不図示)との組み合わせによって実現される。不揮発性メモリにはCPUと暗号処理アクセラレータが実行するマイクロコードが格納される。
また、セキュリティデバイス106は、耐タンパ性を有し、累積値格納部202に保持される値は、外部から不正に改ざんできないようになっている。
図3(A)に示すように、更新証明書格納部102に格納されている更新証明書300は、プログラムデータ提供者がプログラムデータの更新を保証する証明書である。この更新証明書300は、プログラムデータの識別情報301、更新後のプログラムデータのバージョン302、更新後のプログラムデータのダイジェスト303、更新前のプログラムデータのバージョン304、更新前のプログラムデータのダイジェスト305、プログラムデータ提供者の識別情報306、およびプログラムデータ提供者の署名307から構成される。
例えば、プログラムデータの識別情報301が、PROGRAM_A、更新後のプログラムデータのバージョン302がV2.0、更新前のプログラムデータのバージョン304がV1.0であった場合、更新証明書330は、プログラムデータPROGRAM_AがバージョンV1.0からバージョンV2.0に更新され、バージョンV1.0のプログラムデータのダイジェストは、更新前のプログラムデータのダイジェスト305であり、バージョンV2.0のプログラムデータのダイジェストは更新後のプログラムデータのダイジェスト305であることを証明する。
更新証明書格納部102には、更新証明書300の署名307の有効性が検証された更新証明書300だけが格納されている。
データ格納部105に格納されているシールされたデータ400は、図4(A)に示すように、復号化の条件を示す復号化条件401とデータ402とを連結したデータに対して暗号化を施したデータ構成となっている。
復号化条件401は、セキュリティデバイス106の復号化条件検証部204が復号化したデータを外部に出力するか否かの判定に用いる条件情報であり、プログラムデータのダイジェストの累積演算の結果を照合値とする条件情報を少なくとも一つ含む。復号化条件401には複数の条件情報が含まれていても良く、ユーザを認証するためのパスワード情報が含まれる場合もある。
また、図4(B)に示すように、シールされたデータ400aには、さらに属性情報403が付加された形態でデータ格納部105に格納されていてもよい。この属性情報403は、暗号化されておらず、シールされたデータ400aの暗号を復号化する際の条件を示す情報が平文で含まれている。例えば、あるプログラムデータが起動されていることが条件の場合には、そのプログラムデータの識別情報とバージョン情報とが含まれる。
次に、本実施の形態に係る情報端末100の動作について説明する。
情報端末100には、通常モードと復元モードの2つの動作モードがある。通常モードは情報端末100が通常の動作を実行する動作モードであり、復元モードはプログラムデータの更新前の動作状態を擬似的に復元して動作を実行するモードである。
情報端末100は、ユーザが情報端末100の起動時に復元モードでの動作を指定した場合、および、前回の情報端末100の起動中にユーザが次回の動作モードとして復元モードでの動作を指定していた場合に復元モードで動作し、それ以外の場合は通常モードで動作する。CPU101は、どの動作モードで動作しているかという情報を保持する。
情報端末100は、データ格納部105に格納されているシールされたデータ400の暗号の復号化に失敗した場合に、復元モードで情報端末100を再起動することをユーザに促すメッセージを表示する。さらに、ユーザが復元モードでの起動を指定した場合、情報端末100は、復元モードで再起動する。
また、図4(B)のように、シールされたデータ400aに属性情報403が付加されている場合には、ユーザがシールされたデータ400aへのアクセスを指示した段階で、情報端末100は、属性情報403(例えば、あるプログラムデータの識別情報とバージョン情報)の内容と現在起動しているプログラムデータ(例えば、そのプログラムデータの識別情報とバージョン情報)とを照合する。属性情報403の内容と現在起動しているプログラムデータとが一致していない場合には、情報端末100は、復元モードで情報端末100を再起動することをユーザに促すメッセージを表示する。さらに、ユーザが復元モードでの起動を指定した場合、情報端末100は、復元モードで再起動する。
以下に、CPU101が一つのプログラムデータを実行する際に行う処理について図5を参照して説明する。図5は、本発明の実施の形態1または後述する実施の形態2における情報端末のCPUが一つのプログラムデータを実行する際に行う処理のフロー図である。情報端末100のCPU101は、プログラム格納部107に格納されたプログラムデータを実行する。CPU101は、プログラムデータを実行する際に、実行するプログラムデータのダイジェストを計測部104が生成するように計測部104に指示する。また、CPU101は、セキュリティデバイス106にダイジェストの累積演算の結果を保持するように指示する。
まず、計測部104が、実行されるプログラムデータのダイジェストを生成する(ステップS501)。具体的には、計測部104は、SHA−1のハッシュ演算を行ってダイジェストを生成する。
次に、選択部103が、情報端末100の動作モードが復元モードか否かを判定し(ステップS502)、復元モードの場合はステップS503へ進み、通常モードなど復元モード以外の動作モードの場合はステップS510へ進む。
ステップS503では、選択部103は、実行されるプログラムデータに対応する更新証明書300が存在するか否かを判定し、更新証明書300が存在する場合にはステップS504へ進み、対応する更新証明書300がない場合はステップS510へ進む。ステップS503では、選択部103は、具体的には、更新証明書格納部102に格納されている更新証明書を参照し、更新証明書の中のプログラムデータの識別情報301を照合して実行されるプログラムデータに対応する更新証明書300が存在するか否かを判定する。なお、この時、実行されるプログラムデータに対応する更新証明書300が存在すると判定された場合、その更新証明書300の有効性を再度検証するようにしても良い。
さらに、ステップS504では、更新証明書が示す更新後のプログラムデータと実行されるプログラムデータが同一のものであるか否かを検証するため、選択部103は、更新証明書の中の更新後のプログラムデータのダイジェスト303と生成したダイジェストとが一致するか否かを判定する。判定の結果、一致する場合、つまり、更新証明書が示す更新後のプログラムデータと実行されるプログラムデータが同一である場合はステップS505へ進み、一致しない場合、つまり、実行されるプログラムデータが、更新証明書が示す更新後のプログラムデータではない場合はステップS510へ進む。
ステップS505では、選択部103は、セキュリティデバイス106が累積演算を行うデータとして、更新証明書の中の更新前のプログラムデータのダイジェスト305を選択し、セキュリティデバイス106に累積演算を要求する。
ステップS510では、選択部103は、セキュリティデバイス106が累積演算を行うデータとして、計測部104が生成したプログラムデータのダイジェストを選択し、セキュリティデバイス106に累積演算を要求する。
累積演算を要求されたセキュリティデバイス106においては、累積演算部201が、要求されたプログラムデータのダイジェストの累積演算を行う。具体的には、累積演算部201は、累積値格納部202に保持されているデータと選択部103が選択したプログラムデータのダイジェストとを連結し、さらにそのダイジェストを生成して、生成したダイジェストをまた累積値格納部202に保存する(ステップS506)。CPU101は、ステップS506のセキュリティデバイス106の累積演算が完了して初めてプログラムデータを実行する(ステップS507)。
図5に示した処理は、CPU101がプログラムデータを実行する度に実行される。この時、セキュリティデバイス106の累積値格納部202には、CPU101が実行した複数のプログラムデータのダイジェストの累積演算の結果が保持されており、それはCPU101が実行したプログラムデータの組み合わせによって異なる値を示す。つまり、累積値格納部202に保持される値は、CPU101が実行したプログラムデータの組み合わせを示す。
但し、復元モードの場合には、CPU101は、更新後のプログラムデータを実行しているが、累積値格納部202には更新前のプログラムデータを実行した場合の累積演算の結果が保持される。
情報端末100は、図16のサービス提供サーバ1610から情報サービスの提供を受ける場合、セキュリティデバイス106の累積値格納部202が保持する値にセキュリティデバイス106が署名を施したデータをサービス提供サーバ1610へ送信する。この時の累積値格納部202が保持する値に署名を施したデータは、署名部205がCPU101からの要求に基づいて、累積値格納部202が保持する値とサービス提供サーバ1610から受信したチャレンジ情報1620b(サービス提供サーバ1610が生成した乱数など)とを連結したデータに対して署名を施したものである。
情報端末100が実行するプログラムデータの更新に合わせてサービス提供サーバ1610の照合値DB1612が更新されている場合には、情報端末100は、通常モードで起動した状態において、セキュリティデバイス106の累積値格納部202が保持する値にセキュリティデバイス106が署名を施したデータをサービス提供サーバ1610へ送信する。これにより、情報端末100は、サービス提供サーバ1610による認証をパスして情報サービスの提供を受けることができる。
また、情報端末100が実行するプログラムデータの更新に合わせてサービス提供サーバ1610の照合値DB1612が更新されていない場合には、ユーザが復元モードでの起動を指定する。そして、情報端末100は、復元モードで起動した状態において、セキュリティデバイス106の累積値格納部202が保持する値にセキュリティデバイス106が署名を施したデータをサービス提供サーバ1610へ送信する。この場合、累積値格納部202には更新前のプログラムデータを実行した場合の累積演算の結果が保持されているので、サービス提供サーバ1610の照合値DB1612が更新されていない場合でも、情報端末100は、サービス提供サーバ1610による認証をパスして情報サービスの提供を受けることができる。
なお、この時、情報端末100は、サービス提供サーバ1610に対して、実際に情報端末100が実行しているプログラムデータは更新されていることを同時に通知するようにしても良い。この場合、情報端末100は、セキュリティデバイス106の累積値格納部202が保持する値とプログラムデータの更新を示す情報(例えば、プログラムデータの更新を示すフラグ情報、更新されたプログラムデータの識別情報、および更新後のプログラムデータのバージョンなど)に対してセキュリティデバイス106が署名を施したデータをサービス提供サーバ1610へ送信する。
この時の累積値格納部202が保持する値とプログラムデータの更新を示す情報に対して署名を施したデータは、セキュリティデバイス106の署名部205がCPU101からの要求に基づいて、累積値格納部202が保持する値とサービス提供サーバ1610から受信したチャレンジ情報1620bとプログラムデータの更新を示す情報とを連結したデータに対して署名を施したものである。この場合、CPU101は、セキュリティデバイス106の署名部205に対してサービス提供サーバ1610から受信したチャレンジ情報1620bとプログラムデータの更新を示す情報を組み込んだ要求を送信する。CPU101から要求を受信した署名部205は、累積値格納部202が保持する値とチャレンジ情報1620bとプログラムデータの更新を示す情報とを連結して、さらに連結したデータに対して署名を施す。
情報端末100から累積値格納部202が保持する値とプログラムデータの更新を示す情報に対して署名を施したデータを受信したサービス提供サーバ1610は、認証をパスした場合でも、実際に情報端末100が実行しているプログラムデータは更新されている。このことから、サービス提供サーバ1610は、予め決められたセキュリティポリシーに基づいて、情報端末100への一部の情報サービスの提供を制限するようにしても良く、また、更新されたプログラムデータの提供元にアクセスして、照合値DB1612を更新するようにしても良い。
次に、本発明に係る情報端末100がシールされたデータ400、400aの暗号を復号化する処理を図6のフロー図を参照して説明する。図6は、本発明の実施の形態1、2、3における情報端末100がシールされたデータ400、400aの暗号を復号化する処理のフロー図である。この場合、図6に示す処理フローに基づいて、情報端末100のセキュリティデバイス106が、データ格納部105に格納されているシールされたデータ400、400aの暗号を復号化する。
まず、CPU101から受信したアンシールコマンドに基づいて、セキュリティデバイス106の復号化部203が、セキュリティデバイス106の内部でシールされたデータ400、400aの暗号の復号化を行う(ステップS601)。この時の復号化には、復号化部203が管理する復号鍵が用いられる。復号化により、平文の復号化条件401とデータ402とが得られる。
次に、復号化条件検証部204が、復号化条件401の中に含まれるプログラムデータのダイジェストの累積演算の結果の照合値と累積値格納部202が保持する値とが一致するか否かを判定する(ステップS602)。両者が一致する場合には、ステップS603へ進み、一致しない場合には、復号化条件401の中に含まれるプログラムデータのダイジェストの累積演算の結果の照合値と累積値格納部202が保持する値とが一致しないことを示すエラーを出力して復号化に失敗したことを示す(ステップS605)。
ステップS603では、復号化条件検証部204が、復号化条件401の中に含まれるその他の条件(プログラムデータのダイジェストの累積演算の結果の照合以外)を満たしているか否かを判定する。この条件を満たしている場合には、復号化条件検証部204は、復号化されたデータ402をセキュリティデバイス106の外部に出力する(ステップS604)。この条件を満たしていない場合には、復号化されたデータ402を外部に出力せずに、復号化条件401の中に含まれるその他の条件(プログラムデータのダイジェストの累積演算の結果の照合以外)を満たしていないことを示すエラーを出力して復号化に失敗したことを示す(ステップS606)。
シールされたデータが、更新後のプログラムデータを実行した場合のプログラムデータのダイジェストの累積演算の結果にバインドしてシールされている場合には、通常モードで起動した状態において、図6に示す処理フローに基づいて、情報端末100のセキュリティデバイス106は、シールされたデータの暗号の復号化を行う。
また、シールされたデータが、更新前のプログラムデータを実行した場合のプログラムデータのダイジェストの累積演算の結果にバインドしてシールされている場合には、通常モードで起動した状態においては、図6に示す処理フローに基づいて、セキュリティデバイス106から復号化条件401の中に含まれるプログラムデータのダイジェストの累積演算の結果の照合値と累積値格納部202が保持する値とが一致しないことを示すエラーが外部に出力される(ステップS605)。そして、情報端末100は、復元モードで情報端末100を再起動することをユーザに促すメッセージを表示する。さらに、ユーザが復元モードでの起動を指定した場合、情報端末100は、復元モードで再起動する。
また、復元モードで起動した状態においては、情報端末100は、図6に示す処理フローに基づいて、セキュリティデバイス106がシールされたデータの暗号の復号化を行う。
この場合、累積値格納部202には更新前のプログラムデータを実行した場合の累積演算の結果が保持されているので、ステップS602の判定において、復号化条件401の中に含まれるプログラムデータのダイジェストの累積演算の結果の照合値と累積値格納部202が保持する値とが一致するという判定が復号化条件検証部204によって行われ、シールされたデータを復号化することができる。
以上のように、本実施の形態では、プログラムデータが更新された場合でも、更新したプログラムデータを元に戻すことなく、サービス提供サーバ1610のようにCPU101が実行しているプログラムデータを認証するサービス提供サーバからの情報サービスの提供や、シールされたデータの復号化が可能となる。
なお、プログラムデータの識別情報301が同じプログラムデータに関して複数回の更新が行われている場合には、プログラムデータの識別情報301が同じで、バージョンが異なる複数の更新証明書が更新証明書格納部102に格納されることになる。この場合、図5に示した処理フローのステップS503では、該当する複数の更新証明書が特定され、ステップS504では、バージョンが最新の更新証明書に関して、更新証明書の中の更新後のプログラムデータのダイジェストと生成したダイジェストとが一致するか否かが判定される。さらに、ステップS505では、ステップS503で特定された更新証明書のうち、どのバージョンのプログラムデータをCPU101が実行している状態を復元するかを情報端末100のユーザが指定し、指定されたバージョンを更新前のプログラムデータとする更新証明書に関して、選択部103が更新証明書の中の更新前のプログラムデータのダイジェストを選択し、セキュリティデバイス106に累積演算を要求する。
なお、更新証明書格納部102に格納される更新証明書は、図3(B)に示す更新証明書350のように、同一のプログラムデータの複数の世代のバージョンのプログラムデータのダイジェストが含まれているデータ構造になっていても良い。
図3(B)において、更新証明書350は、プログラムデータの識別情報351と、最新の第N世代のプログラムデータのバージョン352及びプログラムデータのダイジェスト353(Nは3以上の整数)と、第N−1世代のプログラムデータのバージョン354及びプログラムデータのダイジェスト355から第N−i世代までのプログラムデータのバージョン356及びプログラムデータのダイジェスト357(iはNよりも小さい1以上の整数)と、プログラムデータ提供者の識別情報358と、プログラムデータ提供者の署名359とから構成される。
この場合、図5に示した処理フローのステップS504では、更新証明書350に関して、更新証明書の中の最新の第N世代のプログラムデータのダイジェストと生成したダイジェストとが一致するか否かを判定する。さらに、ステップS505では、更新証明書350に含まれる第N−1世代から第N−i世代までの複数の世代のバージョンのうち、どのバージョンのプログラムデータをCPU101が実行している状態を復元するかを情報端末100のユーザが指定する。この指定に基づき、選択部103が更新証明書の中の指定されたバージョンのプログラムデータのダイジェストを選択し、セキュリティデバイス106に累積演算を要求する。
なお、上述のようにユーザが指定しなくても、シールしたデータに対しプログラムデータのバージョンを対応付けて記憶させておくこととしておけば、CPUは、当該データを復元する際にどの世代のプログラムデータを復元すべきかを、データに対応付けたバージョンに基づき判定することができる。
(実施の形態2)
本発明の実施の形態2における情報端末700は、特に、セキュリティデバイスが累積演算を行うプログラムデータのダイジェストを選択する処理を、より正確に行えるように構成したものである。
図7は、本発明の実施の形態2における情報端末700のブロック図である。実施の形態2の場合には、プログラムデータのダイジェストの累積演算を行ってその結果を保持するセキュリティデバイス706の中に、さらに、セキュリティデバイス706が累積演算を行うプログラムデータのダイジェストを選択する選択部703が含まれる(図7および図8参照)。それ以外のCPU101、プログラム格納部107、更新証明書格納部102、計測部104、およびデータ格納部105は、実施の形態1における情報端末100の場合と同じである。また、選択部703の動作および機能は、選択部103と同様である。
選択部703、累積演算部201、復号化部203、復号化条件検証部204、および署名部205は、具体的にはセキュリティデバイス706が内蔵するCPU、暗号処理アクセラレータ、および不揮発性メモリとの組み合わせによって実現され、不揮発性メモリには、CPUと暗号処理アクセラレータが実行するマイクロコードが格納される。
情報端末700の動作は実施の形態1における情報端末100の場合と同じであり、プログラムデータが更新された場合でも、更新したプログラムデータを元に戻すことなく、サービス提供サーバ1610のようにCPU101が実行しているプログラムデータを認証するサービス提供サーバからの情報サービスの提供や、シールされたデータの復号化が可能となる。
このように、本実施の形態では、耐タンパ性を有するセキュリティデバイス706に選択部703を内蔵することで、選択部703が行う処理に対するハッキング等を不正行為が防止され、図5の処理フローにおけるステップS502からステップS505の処理とステップS510の処理がより正確に実行することができる。
なお、セキュリティデバイス706に、さらに更新証明書格納部102を内蔵する構成にしてもよい。耐タンパ性を有するセキュリティデバイス706に更新証明書格納部102を内蔵することで、更新証明書への不正なアクセスを防止することができ、図5の処理フローにおけるステップS502からステップS504の処理がより正確に実行される。
(実施の形態3)
本発明の実施の形態3に係る情報端末900は、復元モードでの起動が不要になるように構成したものである。図9は、本発明の実施の形態3における情報端末900のブロック図である。CPU101、プログラム格納部107、更新証明書格納部102、計測部104、およびデータ格納部105は、実施の形態1における情報端末100の場合と同じである。図10を参照すると、実施の形態3の場合、プログラムデータのダイジェストの累積演算を行ってその結果を保持するセキュリティデバイス906の中に、さらに、CPU101が更新前のプログラムデータを実行した場合のプログラムデータのダイジェストの累積演算の結果を少なくとも一つ以上保持する更新前累積値格納部206が含まれる。選択部903は、セキュリティデバイスが累積演算を行うプログラムデータのダイジェストを選択する。選択部903は、セキュリティデバイス906の更新前累積値格納部206が保持する少なくとも一つの累積演算の結果に更に累積演算を行うデータとして、更新証明書の中の更新前のプログラムデータのダイジェストを選択する。また、選択部903は、更新前累積値格納部206が保持するその他の累積演算の結果に更に累積演算を行うデータとして、計測部104が生成したプログラムデータのダイジェストを選択して、セキュリティデバイス906に累積演算を要求する。
更新前累積値格納部206は、具体的には不揮発性メモリによって実現され、複数の累積演算の結果が保持可能な場合には、異なる組み合わせのプログラムデータのダイジェストの累積演算の結果が保持される。
次に、実施の形態3に係る情報端末900の動作について説明する。情報端末900の場合、復元モードのような動作モードはなく、通常モードで動作する。情報端末900のCPU101は、プログラム格納部107に格納されたプログラムデータを実行する。CPU101は、プログラムデータを実行する際に、実行するプログラムデータのダイジェストを計測部104が生成し、ダイジェストの累積演算の結果をセキュリティデバイス906が保持するように指示する。図11は、CPU101が一つのプログラムデータを実行する際に行われる処理のフローを示している。
まず、計測部104が、実行されるプログラムデータのダイジェストを生成する(ステップS1101)。具体的には、SHA−1のハッシュ演算を行ってダイジェストを生成する。
次に、セキュリティデバイス906の累積値格納部202が保持する値に累積演算を行うデータとして、計測部104が生成したプログラムデータのダイジェストを選択部903が選択し、セキュリティデバイス906に累積演算を要求する(S1102)。累積演算を要求されたセキュリティデバイス906では、累積演算部201が、要求されたプログラムデータのダイジェストの累積演算を行う。具体的には、累積演算部201は、累積値格納部202に保持されているデータと選択部903が選択したプログラムデータのダイジェストとを連結し、さらにそのダイジェストを生成して、生成したダイジェストをまた累積値格納部202に保存する(S1103)。
次に、選択部903が実行されるプログラムデータに対応する更新証明書が存在するか否かを判定する(S1104)。対応する更新証明書が存在する場合にはステップS1105へ進み、対応する更新証明書がない場合はステップS1110へ進む。この時、選択部903は、具体的には、更新証明書格納部102に格納されている更新証明書を参照し、更新証明書の中のプログラムデータの識別情報301を照合して実行されるプログラムデータに対応する更新証明書が存在するか否かを判定する。なお、この時、実行されるプログラムデータに対応する更新証明書が存在すると判定された場合、その更新証明書の有効性を再度検証するようにしても良い。
さらに、ステップS1105では、更新証明書が示す更新後のプログラムデータと実行されるプログラムデータが同一のものであるか否かを検証するため、選択部903が更新証明書の中の更新後のプログラムデータのダイジェストと生成したダイジェストとが一致するか否かを判定する。一致する場合、つまり、更新証明書が示す更新後のプログラムデータと実行されるプログラムデータが同一である場合は、ステップS1106へ進み、一致しない場合、つまり、実行されるプログラムデータは更新証明書が示す更新後のプログラムデータではない場合は、ステップS1110へ進む。
ステップS1106では、セキュリティデバイス906の更新前累積値格納部206が保持する少なくとも一つの累積演算の結果に更に累積演算を行うデータとして、選択部903は、更新証明書の中の更新前のプログラムデータのダイジェストを選択する。また、選択部903は、更新前累積値格納部206が保持するその他の累積演算の結果に更に累積演算を行うデータとして、計測部104が生成したプログラムデータのダイジェストを選択して、セキュリティデバイス906に累積演算を要求する。
ステップS1110では、選択部903は、セキュリティデバイス906の更新前累積値格納部206が保持する全ての累積演算の結果に更に累積演算を行うデータとして、計測部104が生成したプログラムデータのダイジェストを選択し、セキュリティデバイス906に累積演算を要求する。
累積演算を要求されたセキュリティデバイス906では、累積演算部201が、要求されたプログラムデータのダイジェストの累積演算を行う。具体的には、累積演算部201は、更新前累積値格納部206に保持されているデータと選択部903が選択したプログラムデータのダイジェストとを連結し、さらにそのダイジェストを生成して、生成したダイジェストをまた更新前累積値格納部206に保存する(S1107)。
CPU101は、ステップS1107のセキュリティデバイス906の累積演算が完了して初めてプログラムデータを実行する(S1108)。
図11に示した処理は、CPU101がプログラムデータを実行する度に実行される。この時、セキュリティデバイス906の累積値格納部202と更新前累積値格納部206には、CPU101が実行した複数のプログラムデータのダイジェストの累積演算の結果が保持されており、それらは、CPU101が実行したプログラムデータの組み合わせによって異なる値を示す。累積値格納部202に保持される値は、CPU101が実行したプログラムデータの組み合わせを示し、更新前累積値格納部206に保持される値は、更新前のプログラムデータを実行した場合のCPU101が実行したプログラムデータの組み合わせを示す。
情報端末900が図16のサービス提供サーバ1610から情報サービスの提供を受ける場合、情報端末900は、セキュリティデバイス906の累積値格納部202または更新前累積値格納部206が保持する値にセキュリティデバイス906が署名を施したデータをサービス提供サーバ1610へ送信する。この時の署名を施したデータは、署名部205がCPU101からの要求に基づいて、累積値格納部202または更新前累積値格納部206が保持する値とサービス提供サーバ1610から受信したチャレンジ情報1620b(サービス提供サーバ1610が生成した乱数など)とを連結したデータに対して署名を施したものである。
まず、情報端末900は、セキュリティデバイス906の累積値格納部202が保持する値にセキュリティデバイス906が署名を施したデータをサービス提供サーバ1610へ送信する。情報端末900が実行するプログラムデータの更新に合わせてサービス提供サーバ1610の照合値DB1612が更新されている場合には、サービス提供サーバ1610による認証をパスして情報サービスの提供を受けることができる。また、情報端末900が実行するプログラムデータの更新に合わせてサービス提供サーバ1610の照合値DB1612が更新されていない場合には、サービス提供サーバ1610による認証においてエラーとなり、サービス提供サーバ1610から情報端末900に認証に失敗したことを示すエラーメッセージが送信される。エラーメッセージを受信した情報端末900は、今度はセキュリティデバイス906の更新前累積値格納部206が保持する値にセキュリティデバイス906が署名を施したデータをサービス提供サーバ1610へ送信する。この場合、更新前累積値格納部206には更新前のプログラムデータを実行した場合の累積演算の結果が保持されているので、実施の形態1において必要な、ユーザが復元モードで起動する操作を行うことなしに、サービス提供サーバ1610の照合値DB1612が更新されていない場合でも、サービス提供サーバ1610による認証をパスして情報サービスの提供を受けることができる。
なお、この時、情報端末900は、サービス提供サーバ1610対して、実際に情報端末900が実行しているプログラムデータは更新されていることを同時に通知するようにしても良い。この場合、情報端末900は、セキュリティデバイス906の更新前累積値格納部206が保持する値とプログラムデータの更新を示す情報(例えば、プログラムデータの更新を示すフラグ情報、更新されたプログラムデータの識別情報、および更新後のプログラムデータのバージョンなど)に対してセキュリティデバイス906が署名を施したデータをサービス提供サーバ1610へ送信する。
この時の更新前累積値格納部206が保持する値とプログラムデータの更新を示す情報に対して署名を施したデータは、セキュリティデバイス906の署名部205がCPU101からの要求に基づいて、更新前累積値格納部206が保持する値とサービス提供サーバ1610から受信したチャレンジ情報1620bとプログラムデータの更新を示す情報とを連結したデータに対して署名を施したものである。この場合、CPU101は、セキュリティデバイス906の署名部205に対してサービス提供サーバ1610から受信したチャレンジ情報1620bとプログラムデータの更新を示す情報を組み込んだ要求を送信する。CPU101から要求を受信した署名部205は、更新前累積値格納部206が保持する値とチャレンジ情報1620bとプログラムデータの更新を示す情報とを連結して、さらに連結したデータに対して署名を施す。
情報端末900から更新前累積値格納部206が保持する値とプログラムデータの更新を示す情報に対して署名を施したデータを受信したサービス提供サーバ1610は、認証をパスした場合でも、実際に情報端末900が実行しているプログラムデータは更新されている。このことから、予め決められたセキュリティポリシーに基づいて、サービス提供サーバ1610は、情報端末900への一部の情報サービスの提供を制限するようにしても良く、また、更新されたプログラムデータの提供元にアクセスして、照合値DB1612を更新するようにしても良い。
また、データ格納部105に格納されていたシールされたデータの暗号を復号化する場合、情報端末900は、実施の形態1の場合と同様に、図6に示す処理フローに基づいて、セキュリティデバイス906がシールされたデータの暗号の復号化を行う。
但し、実施の形態1の場合とは異なり、ステップS602では、復号化条件検証部204が、復号化条件401の中に含まれるプログラムデータのダイジェストの累積演算の結果の照合値と、累積値格納部202または更新前累積値格納部206が保持する値とが一致するか否かを判定する。いずれかが一致する場合には、ステップS603へ進み、いずれも一致しない場合には、復号化条件検証部204は、エラーを出力して復号化に失敗したことを示す動作を行う(ステップS605)。
シールされたデータが、更新前のプログラムデータを実行した場合のプログラムデータのダイジェストの累積演算の結果にバインドしてシールされている場合であっても、更新前累積値格納部206には、更新前のプログラムデータを実行した場合の累積演算の結果が保持されている。このため、ステップS602の判定において、復号化条件401の中に含まれるプログラムデータのダイジェストの累積演算の結果の照合値と一致するという判定が、復号化条件検証部204によって行われ、セキュリティデバイス906は、シールされたデータを復号化することができる。
このように本実施の形態では、プログラムデータが更新された場合でも、更新したプログラムデータを元に戻すことなく、サービス提供サーバ1610のように、CPU101が実行しているプログラムデータを認証するサービス提供サーバからの情報サービスの提供や、シールされたデータの復号化が可能となる。これに加え、更新前累積値格納部206は、更新前のプログラムデータを実行した場合の累積演算の結果を保持しているので、情報端末装置900は、実施の形態1において必要な、ユーザが復元モードで起動する操作を行うことなしに、サービス提供サーバ1610の照合値DB1612が更新されていない場合でも、サービス提供サーバ1610による認証をパスして情報サービスの提供を受けることができる。
なお、以上の説明では、セキュリティデバイス906は、シールされたデータの暗号を復号化する場合、復号化されたデータを出力するだけであったが、CPU101が実行している更新されたプログラムデータのダイジェストの累積演算の結果にバインドして復号化されたデータをシール、つまり復号化されたデータの再暗号化を行い、復号化されたデータと共にシールされたデータを出力するようにしても良い。その場合、図12に示すように、セキュリティデバイス906は、さらにデータの暗号化を行う暗号化部207を備える。
データ格納部105に格納されているシールされたデータの暗号を復号化と再暗号化を行う場合、情報端末900は、図13に示す処理フローに基づいて、セキュリティデバイス906がシールされたデータの暗号の復号化と再暗号化を行う。図13は、本発明の実施の形態に係る情報端末900がシールされたデータの暗号の復号化と復号化されたデータの再暗号化をする処理のフロー図である。
まず、CPU101から受信した アンシールコマンドに基づいて、セキュリティデバイス906の復号化部203が、セキュリティデバイス906の内部でシールされたデータの暗号の復号化を行う(ステップS1301)。この時の復号化には、復号化部203が管理する復号鍵が用いられる。復号化により、平文の復号化条件401とデータ402とが得られる。
次に、復号化条件検証部204が、復号化条件401の中に含まれるプログラムデータのダイジェストの累積演算の結果の照合値と、累積値格納部202または更新前累積値格納部206が保持する値とが一致するか否かを判定し(ステップS1302)、いずれかが一致する場合には、ステップS1303へ進む。いずれも一致しない場合には、復号化条件401の中に含まれるプログラムデータのダイジェストの累積演算の結果の照合値と累積値格納部202または更新前累積値格納部206が保持する値とが一致しないことを示すエラーを外部に出力する動作を行う(ステップS1306)。このエラーは、復号化に失敗したことを示す。
ステップS1303では、復号化条件検証部204は、復号化条件401の中に含まれるその他の条件(プログラムデータのダイジェストの累積演算の結果の照合以外)を満たしているか否かを判定する。条件を満たしている場合には、ステップS1304へ進み、条件を満たしていない場合には、復号化条件検証部204は、復号化条件401の中に含まれるその他の条件(プログラムデータのダイジェストの累積演算の結果の照合以外)を満たしていないことを示すエラーを外部に出力する(ステップS1307)。このエラーは、復号化に失敗したことを示す。
ステップS1304では、暗号化部207が、復号化条件の照合値に累積値格納部202に保持されている値を設定して復号化したデータを再暗号化する。ステップS1305で、暗号化部207は、復号化されたデータ402と再暗号化されたデータをセキュリティデバイス906の外部に出力する。
この時、出力される再暗号化されたデータは、CPU101が実行する更新されたプログラムデータのダイジェストの累積演算の結果にバインドしてシールされたデータである。
なお、プログラムデータの識別情報301が同一であるプログラムデータに関して、複数回の更新が行われている場合には、プログラムデータの識別情報301が同じで、バージョンが異なる複数の更新証明書が、更新証明書格納部102に格納されることになる。この場合、図11に示した処理フローのステップS1104では、該当する複数の更新証明書が特定され、ステップS1105では、選択部903が、バージョンが最新の更新証明書に関して、更新証明書の中の更新後のプログラムデータのダイジェストと生成したダイジェストとが一致するか否かを判定する。
さらに、ステップS1106では、ステップS1104で特定された更新証明書のうち、どのバージョンのプログラムデータをCPU101が実行している状態を復元するかを情報端末900のユーザが指定し、指定されたバージョンを更新前のプログラムデータとする更新証明書に関して、選択部903が、更新証明書の中の更新前のプログラムデータのダイジェストを選択し、セキュリティデバイス906に累積演算を要求する。
また、以上の説明では、どのバージョンのプログラムデータをCPU101が実行している状態を復元するかを情報端末900のユーザが指定するとした。しかし、更新前累積値格納部206が、複数の累積演算の結果を十分保持することができる場合には、ユーザは、指定することせずに、ステップS1106において、ステップS1104で特定されたそれぞれの更新証明書350に関して、選択部903が、更新証明書の中の更新前のプログラムデータのダイジェスト353を選択し、セキュリティデバイス906に累積演算を要求するようにしてもよい。
また、更新証明書格納部102に格納される更新証明書が、図3(B)に示すような同一のプログラムデータの複数の世代のバージョンのプログラムデータのダイジェストが含まれている更新証明書350の場合には、情報端末900の選択部903は、図11に示した処理フローのステップS1105では、更新証明書350に関して、更新証明書の中の最新の第N世代のプログラムデータのダイジェストと生成したダイジェストとが一致するか否かを判定する。
さらに、ステップS1106では、更新証明書350に含まれる第N−1世代から第N−i世代までの複数の世代のバージョンのうち、どのバージョンのプログラムデータをCPU101が実行している状態を復元するかを情報端末100のユーザが指定し、選択部903が更新証明書350の中の指定されたバージョンのプログラムデータのダイジェストを選択し、セキュリティデバイス906に累積演算を要求する。
また、以上の説明では、どのバージョンのプログラムデータをCPU101が実行している状態を復元するかを情報端末900のユーザが指定するとしたが、更新前累積値格納部206に複数の累積演算の結果を十分保持することができる場合には、ユーザが指定することせずに、ステップS1106では、選択部903が更新証明書350に含まれる第N−1世代から第N−i世代までの複数の世代のプログラムデータのダイジェストをそれぞれ選択し、セキュリティデバイス906に累積演算を要求するようにしてもよい。
(実施の形態4)
本発明の実施の形態4における情報端末1400は、特に、セキュリティデバイスが累積演算を行うプログラムデータのダイジェストを選択する処理を、より正確に行えるように構成したものである。
図14は、本発明の実施の形態4における情報端末1400の構成を示すブロック図である。実施の形態2における情報端末700と同様のブロック図となっているが、セキュリティデバイス1406の部分が実施の形態2と異なる。実施の形態4におけるセキュリティデバイス1406の構成は、実施の形態3におけるセキュリティデバイス906の構成と以下に述べる点で異なる。
図15(A)を参照すると、実施の形態4の場合には、プログラムデータのダイジェストの累積演算を行ってその結果を保持するセキュリティデバイス1406の中に、さらに、セキュリティデバイス1406が累積演算を行うプログラムデータのダイジェストを選択する選択部1403が含まれる。それ以外のCPU101、プログラム格納部107、更新証明書格納部102、計測部104、およびデータ格納部105は、実施の形態3における情報端末900の場合と同じである。
選択部1403、累積演算部201、復号化部203、復号化条件検証部204、および署名部205は、具体的にはセキュリティデバイス1406が内蔵するCPUと暗号処理アクセラレータと不揮発性メモリとの組み合わせによって実現される。不揮発性メモリには、CPUと暗号処理アクセラレータが実行するマイクロコードが格納される。
情報端末1400の動作は、実施の形態3における情報端末900の場合と同じであり、プログラムデータが更新された場合でも、更新したプログラムデータを元に戻すことなく、サービス提供サーバ1610のようにCPU101が実行しているプログラムデータを認証するサービス提供サーバからの情報サービスの提供や、シールされたデータの復号化が可能となる。
このように、本実施の形態によれば、耐タンパ性を有するセキュリティデバイス1406に選択部1403を内蔵することで、選択部1403が行う処理に対するハッキング等を不正行為が防止され、図11の処理フローにおけるステップS1102と、ステップS1110の処理と、ステップS1104からステップS1106までの処理とがより正確に実行される。また、更新前累積値格納部206は、更新前のプログラムデータを実行した場合の累積演算の結果を保持しているので、情報端末装置1400は、実施の形態1において必要な、ユーザが復元モードで起動する操作を行うことなしに、サービス提供サーバ1610の照合値DB1612が更新されていない場合でも、サービス提供サーバ1610による認証をパスして情報サービスの提供を受けることができる。
なお、実施の形態4の変形例として、セキュリティデバイス1406aの構成を図15(B)に示す。セキュリティデバイス1406aは、図15(A)のセキュリティデバイス1406に、データの暗号化を行う暗号化部207をさらに備えて構成される。セキュリティデバイス1406aが、シールされたデータの暗号を復号化する場合に、暗号化部207は、CPU101が実行している更新されたプログラムデータのダイジェストの累積演算の結果にバインドして復号化されたデータをシール、つまり復号化されたデータの再暗号化を行う。そして、セキュリティデバイス1406aは、復号化されたデータと共にシールされたデータを出力する。
また、セキュリティデバイス1406または1406aに、さらに更新証明書格納部102を内蔵する構成にしてもよい。耐タンパ性を有するセキュリティデバイス1406または1406aが、更新証明書格納部102を内蔵することで、更新証明書への不正なアクセスを防止することができ、図11の処理フローにおけるステップS1104からステップS1106の処理がより正確に実行される。
(実施の形態5)
本実施の形態は、上述の実施の形態と比べ、(1)更新証明書にダイジェストではなく累積値が記録している点、(2)装置内で更新証明書の生成を行っている点、(3)古いプログラム構成に係る復号化条件を用いてシールされているデータを、更新後のプログラム構成に係る復号化条件を用いて再シールする点の3点で相違する。
(1)により、上述の実施の形態では行わざるを得ない更新前の累積値を計算するという処理が不要になる。また、更新前のプログラムデータに係る累積値を格納する更新前累積値格納部が不要となる。
(2)により、外部装置からの更新証明書の取得が不要となる。
(3)により、一度再シール処理を行えば、当該処理以降に、当該データの使用の度に古い復号化条件を用いて復号する必要がなくなる。
以下、本実施の形態について、上述の相違点を中心に説明する。
(構成)
図17は、本発明の一実施形態に係るプログラム更新システムの構成を示す図である。
前記プログラム更新システムは、プログラムデータ管理サーバ1701、サービス提供サーバ1702及び情報端末1703を含んで構成される。
プログラムデータ管理サーバ1701、サービス提供サーバ1702及び情報端末1703は、ネットワーク1704を介して相互に通信する。
プログラムデータ管理サーバ1701は、情報端末1703により実行されるプログラムデータを管理するサーバである。
サービス提供サーバ1702は、サービスの要求を受け付けた装置の中で認証に成功したものに対しサービスの提供を行うサーバである。
情報端末1703は、プログラムデータが使用する機密データ等を保護しつつ、プログラムデータを実行する情報端末である。また、情報端末1703は、サービス提供サーバ1702に対しサービスの提供を要求してサービスの提供を受ける。
なお、以後の説明では、プログラムデータ管理サーバ1701、サービス提供サーバ1702及び情報端末1703の間の通信内容の保護については特に述べないが、装置間の通信内容を公知の暗号化方式を用いて暗号化、復号化することにより通信内容の保護を行ってももちろんよい。また、装置間において、通信に先立ち公知の認証方式を用いて認証を行い、認証に成功した後に通信を行うこととしてもよい。
(プログラムデータ管理サーバ1701)
プログラムデータ管理サーバ1701は、具体的には、マイクロプロセッサ、ROM、RAM、ハードディスクユニット、ディスプレイユニット、キーボード、マウスなどから構成されるコンピュータシステムである。前記ROM又は前記ハードディスクユニットには、コンピュータプログラムが記憶されており、RAM上に読み出されたコンピュータプログラムに従って前記マイクロプロセッサが動作することにより、プログラムデータ管理サーバ1701はその機能を達成する。
図18は、プログラムデータ管理サーバ1701の構成を示す図である。
プログラムデータ管理サーバ1701は、通信部1801、プログラムデータ管理部1802及びプログラムデータDB格納部1803を含んで構成される。
通信部1801は、ネットワーク1704を介して、サービス提供サーバ1702及び通信端末1803と通信する。
プログラムデータDB格納部1803は、プログラムデータDBを格納するハードディスク、大容量メモリなどの蓄積デバイスである。
図19は、プログラムデータDBの一例を示す図である。
プログラムデータDBは、BIOSやOS、アプリケーションプログラムなどの各プログラムデータについて、プログラムデータと、プログラムデータ識別情報及びプログラムデータバージョンを対応づけて記憶している。
プログラムデータ識別情報は、プログラムデータを識別する識別情報である。
プログラムデータバージョンは、プログラムデータのバージョン番号を示す。
図19のプログラムデータDBは、一例として、プログラムデータ識別情報の値が「0001」であり、プログラムデータバージョンが「v1.52」である「ムービープレーヤー」が記録されていることを示す。
プログラムデータ管理部1802は、プログラムデータDB格納部1803に格納されているプログラムデータを管理する。
プログラムデータDB中のプログラムデータが、例えば開発者等により更新された場合、その更新後のプログラムデータと、そのプログラムデータに係るプログラムデータ識別情報と、更新後のプログラムデータのプログラムデータバージョンとを、通信部1801を用いて情報端末1703に送信する。
なお、特に述べない限り、プログラムデータ管理サーバ1701における他装置との通信は、「通信部1801を用いて通信する」等の明示的な記載をしなくても通信部1801を用いて行っているものとする。
また、前述の更新があった場合、プログラムデータ管理部1802は、サービス提供サーバ1702に対して、情報端末1703におけるプログラムデータの構成を識別するプログラムデータ構成識別情報と、情報端末1703における当該更新後のプログラムデータのダイジェストを含む、BIOSのダイジェストとOSのダイジェストとアプリケーションプログラムのダイジェストとを累積した累積値とを送信する。ここで、プログラムデータの構成とは、情報端末1703で動作するBIOS、OS、アプリケーション等の全体または一部の組み合わせを意味する。
(サービス提供サーバ1702)
サービス提供サーバ1702は、具体的には、マイクロプロセッサ、ROM、RAM、ハードディスクユニット、ディスプレイユニット、キーボード、マウスなどから構成されるコンピュータシステムである。前記ROM又は前記ハードディスクユニットには、コンピュータプログラムが記憶されており、RAM上に読み出されたコンピュータプログラムに従って前記マイクロプロセッサが動作することによりサービス提供サーバ1702はその機能を達成する。
図20は、サービス提供サーバ1702の構成を示す図である。
サービス提供サーバ1702は、通信部2001、データ管理部2002、照合値DB格納部2003及びコンテンツ蓄積部2004を含んで構成される。
通信部2001は、ネットワーク1704を介して、プログラムデータ管理サーバ1701及び通信端末1703と通信する。
照合値DB格納部2003は、照合値DBを格納するハードディスク、大容量メモリなどの蓄積デバイスである。
図21は、照合値DBの内容を示す図である。
照合値DBには、サービスの提供を要求する情報端末のプログラムデータの構成を識別するプログラムデータ構成識別情報と、そのプログラムデータの構成に対応する照合値とが対応づけて記録されている。
なお、照合値DBにおける照合値は、情報端末におけるプログラムデータの累積値と同値を持つが、この点については後述する。
コンテンツ蓄積部2004は、サービス提供の一例としてのコンテンツ配信サービスにおいて、配信するコンテンツと、そのコンテンツを識別するコンテンツ識別子とを対応付けて記憶しているハードディスク、大容量メモリ等の記憶デバイスである。
データ管理部2002は、情報端末1703から、サービス提供を要求する情報端末のプログラムデータの構成を識別するプログラムデータ構成識別情報と、前記プログラムデータの構成に係る累積値と、サービス提供に関し配信を要求しているコンテンツに係るコンテンツ識別子とを、通信部2001を介して受け取る。
なお、特に述べない限り、サービス提供サーバ1702における他装置との通信は、「通信部2001を用いて通信する」等の明示的な記載をしなくても通信部2001を用いて行っているものとする。
データ管理部2002は、受け取ったプログラム識別情報に対応する照合値を照合値DBから読み出して、照合値と累積値とを比較する。
照合値と累積値とが一致している場合、前記コンテンツ識別子により識別されるコンテンツをコンテンツ蓄積部2004から読み出して、情報端末1703に送信する。
照合値と累積値とが一致しない場合、サービス提供ができない旨を示すエラー情報を情報端末1703に対して送信する。
また、公知の認証方式を用いてプログラムデータ管理サーバ1701の真正性を認証した上で、データ管理部2002は、プログラムデータ管理サーバ1701からプログラムデータ構成識別情報と累積値とを受信した場合、照合値DBにおける受信したプログラムデータ構成識別情報と同値のプログラムデータ構成識別情報に対応する照合値を前記受信した累積値で書き換える。
(情報端末1703)
情報端末1703は、具体的には、マイクロプロセッサ、ROM、RAM、ディスプレイユニット、キーボードなどから構成されるコンピュータシステムである。前記ROMには、コンピュータプログラムが記憶されており、RAM上に読み出されたコンピュータプログラムに従って前記マイクロプロセッサが動作することにより、情報端末1703はその機能を達成する。
図22は、情報端末1703の構成を示すブロック図である。
情報端末1703は、CPU101、更新証明書格納部102、計測部104、データ格納部105、プログラム格納部107、通信部2201、更新証明書生成部2202及びセキュリティデバイス2203を含んで構成される。
ここで、本実施の形態において上述の実施の形態と同符号を付している構成については、上述の実施の形態とその機能等に特に変わりはないので説明は省略する。
(通信部2201)
通信部2201は、ネットワーク1704を介して、プログラムデータ管理サーバ1701、サービス提供サーバ1702その他の外部装置と通信するネットワーク通信デバイスである。
なお、特に述べない限り、情報端末1703における他装置との通信は、「通信部2201を用いて通信する」等の明示的な記載をしなくても通信部2201を用いて行っているものとする。
(更新証明書生成部2202)
更新証明書生成部2202は、更新証明書を生成するデバイスである。
以後、まず本実施の形態で用いられる更新証明書の内容について説明し、次いで更新証明書の生成処理について説明する。
図24(A)は、本実施の形態における更新証明書の一例である更新証明書2401の内容を示す図である。
更新証明書2401は、プログラムデータ構成識別情報、新構成バージョン、新構成累積値、旧構成バージョン、旧構成累積値及び提供者識別情報を含み、更新証明書の提供者による署名が施されたものである。実施の形態1〜4とは異なり、本実施の形態における更新証明書2401は、プログラムデータの構成に対して発行される。ここで、プログラムデータの構成とは、情報端末1703で動作するBIOS、OS、アプリケーション等の全体または一部の組み合わせを意味する。更新証明書2401は、プログラムデータ個別の更新前後のダイジェストを含む実施の形態1〜4の更新証明書とは異なり、あるプログラムデータが更新される前後の累積値を含んでいる。そのため、更新証明書2401は、累積値に対応するBIOS、OS、アプリケーション等の全体または一部の組み合わせ毎に発行される。
プログラムデータ構成識別情報は、自更新証明書が、内容の更新を証明する対象となっている、情報端末1703において実行されるBIOS、OS、アプリケーションプログラム等のプログラムデータの構成を識別する識別情報である。
新構成バージョンは、自更新証明書が生成される時点で最新のプログラムデータの構成に含まれる全てのプログラムデータの識別情報と、各プログラムデータに係るバージョン番号のリストである。
新構成累積値は、前記最新のプログラムデータのダイジェストを含めた累積値である。
本実施の形態では、前記最新のプログラムデータのダイジェストを含む、BIOSのダイジェストとOSのダイジェストとアプリケーションプログラムのダイジェストとを累積した値となる。
旧構成バージョンは、更新対象であるプログラムデータを更新する前の状態におけるプログラムデータの構成に含まれる全てのプログラムデータの識別情報と、各プログラムデータに係るバージョン番号のリストである。
旧構成累積値は、前記更新前の更新対象であるプログラムデータのダイジェストを含めた累積値である。
本実施の形態では、前記更新前の更新対象であるプログラムデータのダイジェストを含む、BIOSのダイジェストとOSのダイジェストとアプリケーションプログラムのダイジェストとを累積した値となる。
提供者識別情報は、自更新証明書の提供者を識別する識別情報であり、この場合には情報端末1703が提供者となるので、提供者識別情報は情報端末1703の識別情報となる。
提供者署名は、更新証明書を構成するデータに対する自更新証明書の提供者による署名であり、提供者に固有の秘密鍵を用いて生成された署名である。この場合には情報端末1703が提供者となるので、提供者署名は情報端末1703に固有の秘密鍵による署名となる。
次に、更新証明書生成部2202が、更新証明書を生成する処理について説明する。
図25は、更新証明書生成処理を示すフローチャートである。
更新証明書生成部2202は、更新対象のプログラムデータの識別情報と更新後のプログラムデータのバージョン番号を含む更新証明書生成指示をCPU101から取得する(ステップS2501)。
更新対象のプログラムデータの識別情報と更新後のプログラムデータのバージョン番号は、プログラムデータ管理サーバ1701により情報端末1703に対して送信されたものであり、公知の認証方式を用いてプログラムデータ管理サーバ1701の真正性を認証した上で、CPU101が取得したものである。
そして、更新証明書格納部102に格納されている更新証明書(以下、現更新証明書という。)を読み出し、取得した更新後のプログラムデータのバージョン番号が現更新証明書中の新構成バージョンに含まれる更新対象のプログラムデータのバージョン番号よりも大きい場合(ステップS2502:YES)に、新たな更新証明書(以下、新更新証明書という。)を生成する(ステップS2503)。
ここで、新更新証明書の旧構成バージョンには、前記現更新証明書における新構成バージョンを格納する。
新更新証明書の旧構成累積値には、前記現更新証明書における新構成累積値を格納する。
新更新証明書の新構成バージョンには、現更新証明書中の新構成バージョンに含まれる更新対象のプログラムデータのバージョン番号を、前記取得した更新後のプログラムデータのバージョン番号に更新したものを格納する。
新更新証明書の新構成累積値には、累積値格納部202が格納している累積値、即ち、最新のプログラムデータのダイジェストを含めた累積値を格納する。
新更新証明書のプログラムデータ構成識別情報には、現更新証明書のプログラムデータ構成識別情報を格納する。
新更新証明書の提供者識別情報には、現更新証明書の提供者識別情報を格納する。
さらに、更新証明書を構成するデータ(プログラムデータ構成識別情報、新構成バージョン、新構成累積値、旧構成バージョン、旧構成累積値、提供者識別情報)に対する更新証明書の提供者による署名を生成する。この場合には情報端末による署名を生成する。
更新証明書生成部2202は、以上のようにして生成した新更新証明書を、更新証明書格納部102が格納している旧更新証明書に上書きすることで、更新証明書を更新する。
(セキュリティデバイス2203)
セキュリティデバイス2203は、既に説明したセキュリティデバイス106に対し、再シールの機能を付加したものである。
図23は、セキュリティデバイスの構成を示すブロック図である。
セキュリティデバイス2203は、累積演算部201、累積値格納部202、復号化部203、復号化条件検証部204、累積値検証部2301及び暗号化部2302を含んで構成される。
セキュリティデバイス2203の構成中、上記実施の形態と同符号が付されたものについては、上記実施の形態におけるものと同様であるため、説明を省略する。
暗号化部2302は、暗号化鍵を保持しており、当該暗号化鍵を用いてデータを暗号化する。
なお、この暗号化鍵により暗号化されたデータを復号するための復号鍵は、復号化部203により保持されているものとする。
累積値検証部2301は、再シール処理についての制御を行う。
図26は、累積値検証部2301による再シール処理を示すフローチャートである。
累積値検証部2301は、CPU101から、更新に係るプログラムデータを識別するプログラムデータ識別情報を含むプログラムデータの更新通知を受け取る(ステップS2601)。
そして、累積値検証部2301は、前記更新通知に含まれるプログラムデータ識別情報に対応する暗号化データをデータ格納部105から読み出す。
そして、復号化部203に対し、前記暗号化データの復号を指示する。
ここで、復号化部203により前記復号鍵を用いて前記暗号化データが復号されると(ステップS2602)、復号化部203により復号化完了の通知が成されるので、累積値検証部2301はその通知を受け取る。
累積値検証部2301は、前記プログラムデータ識別情報に対応する更新証明書を更新証明書格納部102から読み出す。
そして、累積値検証部2301は、復号化部203による復号結果である復号化データに含まれる累積値が、読み出した前記更新証明書に含まれる旧構成累積値と一致するか否かを判定する(ステップS2603)。
ステップS2603において、一致しないと判定された場合(ステップS2603:NO)、復号化データは更新証明書に含まれている新構成累積値(最新の累積値)を用いてシールされているか、新構成累積値でも旧構成累積値とも異なる累積値を用いてシールされている。いずれの場合も、再シールの必要はないので処理を終了する。
ステップS2603において、一致すると判定された場合(ステップS2603:YES)、さらに、累積値格納部202に格納されている累積値が、前記更新証明書中の新構成累積値と一致するか否かを判定する(ステップS2604)。
ステップS2604において、一致しないと判定された場合(ステップS2604:NO)、情報端末1703上では更新後のプログラムデータの構成に基づくプログラムデータが実行されていない、つまり、更新前のプログラムデータの構成に基づくプログラムデータが実行されているか、不正なプログラムデータが実行されている可能性があるので、処理を終了する。
ステップS2604において、一致すると判定された場合(ステップS2604:YES)、プログラムデータが更新されているにも関わらず、前記暗号化データが以前のプログラムデータに対応する累積値(旧構成累積値)を使ってシールされていることが分かる。そのため、再シールの必要があるので前記復号化データ中の復号化条件を更新証明書中の新構成累積値で置き換える。
これにより、暗号化対象は、更新証明書中の新構成累積値を含む復号化条件と、暗号化対象のデータとが連結された連結データとなる。
そして、累積値検証部2301は、暗号化部2302に対して前記連結データの暗号化を指示する(ステップS2605)。
ここで、暗号化部2302により前記暗号鍵を用いて前記連結データが暗号化され(ステップS2606)、暗号化終了の通知が累積値検証部2301に対して行われる。
累積値検証部2301は、前記暗号化終了の通知を暗号化部2302から受け取る。
以上により、再シール処理についての制御が終了する。
なお、本実施の形態では、CPU101は、プログラムデータ管理サーバ1701から更新に係るプログラムデータを識別するプログラムデータ識別情報を受け取る毎に、セキュリティデバイス2203に対してプログラムデータの更新通知を送信する。よって、セキュリティデバイス2203は、プログラムデータの更新が成されるごとに、再シール処理を要するデータに対して再シール処理を実行する。
すなわち、旧構成累積値を用いてシールされたデータについては、プログラムデータの更新が検出された時点で再シール処理が行われる。
従って、再シール処理の後は、更新後のプログラムデータは、新構成累積値を用いることで復号化条件を満たすことができるようになり、上記実施の形態において行われていたデータの使用における旧構成累積値の算出や、旧構成累積値を使用しての復号化条件の判断等は不要となる。
(その他変形例)
なお、本発明を上記の実施の形態に基づいて説明してきたが、本発明は、上記の実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々変更を加え得ることは勿論である。
(1)実施の形態5に係る更新証明書は、図24(A)のように、新構成に係るバージョンと累積値及び旧構成に係るバージョンと累積値といった2世代についての情報を記録するのに限らず、例えば図24(B)に示すように複数世代のバージョンと累積値を記録することとしてもよい。
図24(B)は、複数世代のバージョンと、そのバージョンに対応する累積値とを記録する更新証明書を示す。
これにより、情報端末1703において、プログラムデータの更新が頻繁に行われ、データに対応付けられている復号化条件に複数世代前のプログラムデータに係るダイジェストが含まれることとなっても、更新証明書に含まれる前記復号化条件に対応する複数世代前の累積値を用いて復号化条件を満たすことができるようになる。
(2)実施の形態5では、情報端末の内部で更新証明書を作っていたが、これに限られるものではない。例えば、情報端末の内部で更新証明書を作らずに、実施の形態1〜4と同様、外部のサーバや記録媒体を介して更新証明書を取得するとしてもよい。この場合、更新証明書の提供者識別情報は更新証明書を生成する外部機関の識別情報となり、更新証明書に施される署名は、更新証明書を生成する外部機関による署名となる。また、この場合、実施の形態1〜4とは異なり、提供される更新証明書には、更新前後のプログラムデータのダイジェストではなく、図24(A)もしくは図24(B)に示した情報が含まれる。この場合も、累積値が外部から与えられることとなるので、実施の形態5と同様に、更新前の累積値を計算するという処理や、更新前のプログラムデータに係る累積値を格納する更新前累積値格納部が不要となる。
(3)実施の形態5では、更新証明書生成部2202は、更新対象のプログラムデータの識別情報と更新後のプログラムデータのバージョン番号を含む更新証明書生成指示をもとに更新証明書を生成していたが、実施の形態1〜4における個々のプログラムデータの更新証明書を含む更新証明書生成指示をもとに更新証明書を生成するようにしてもよい。この場合、個々のプログラムデータの更新証明書はプログラムデータの提供者による署名が施されたものであり、不正なプログラムデータの構成に基づく更新証明書が生成されてしまうことを防止することが出来る。
(4)上述した実施の形態およびその変形例では、更新証明書として、第N−1世代から第N−i世代までのダイジェストまたは累積値を格納する構成を開示していたが、これに限られるものではない。例えば、ユーザから指定された世代のダイジェストまたは累積値と、最新の世代のダイジェストまたは累積値のみを格納するとしても良い。このような変形例が役に立つケースとしては、ユーザがプログラムデータの更新を忘れており、更新によってプログラムデータのバージョンが2世代以上一度に上がった場合が考えられる。この場合、情報端末の内部では、更新の前後の中間世代にあたるダイジェストまたは累積値を使ったシールが行われることはない。そのため、更新証明書に中間世代のダイジェストまたは累積値を含ませる意味は薄い。したがって、シールした情報のアンシールに必要なダイジェストまたは累積値のみを取得できるようにした方が、更新証明書の容量の削減に繋がる。
なお、この場合、古いプログラムデータの世代は、ユーザが指定するのではなく、ネットワーク等を介して自動的に更新証明書の発行機関に通知されるとしても良い。通知を行うタイミングとしては、プログラムデータの更新が指示された時などが考えられる。通知を受け取った発行機関は、受け取ったプログラムデータの世代に対応するダイジェストまたは累積値と、最新のプログラムデータに対応するダイジェストまたは累積値とを含んだ更新証明書を作成し、情報装置に送信する。これにより、ユーザは更新前のプログラムデータの世代を調べることなく、自動的に更新前のプログラムデータの世代に対応するダイジェストまたは累積値を含んだ更新証明書を得ることができる。
(5)上述した実施の形態、および、その変形例では、データのシールは、データと累積値とを対応付けた上で暗号化することによって実現していた。しかし、シールの仕方はこれに限られるものではない。例えば、累積値とデータを対応付けるのではなく、そのデータを使用するプログラムデータのダイジェストとデータとを対応付けても良い。また、データと累積値等を対応付けるのではなく、データを累積値やプログラムデータのダイジェストを鍵として用いて暗号化するとしてもよい。すなわち、データをプログラムデータと対応付けることができ、正しい対応関係が満たされなければデータを取得できない仕組みとなっていれば、シールの実現方法はどのようなものであってもよい。
(6)上述した実施の形態、および、その変形例では、データのシールは、データとプログラムデータのダイジェストの累積値とを対応付けた上で暗号化することによって実現していた。しかし、シールの仕方はこれに限られるものではない。例えば、プログラムデータのダイジェストだけの累積値とデータを対応付けるのではなく、プログラムデータのダイジェスト及び当該プログラムデータの実行中に起こるイベント情報のダイジェストの累積値とデータとを対応付けても良い。ここでプログラムデータの実行中に起こるイベント情報とは、当該プログラムデータが行う各種の処理の処理結果や他の機器とのデータ通信、外部からのデータ入力や情報端末の操作等を意味し、例えば、外部のサーバとの認証処理に成功したという結果や、情報端末1703のユーザにより適切なパスワードの入力が行われたといったイベントの情報である。すなわち、データをプログラムデータが行う各種の処理の処理結果や外部からのデータ入力等のイベント情報と対応付け、予め定められた正しいイベントが起きなければデータを取得できない仕組みとしてもよい。
(7)上述した実施の形態、および、その変形例では、シールを、データと累積値とを対応付けた上で暗号化することによって実現していた。しかし、シールの仕方はこれに限られるものではない。例えば、累積値とデータを対応付けるのではなく、累積値と情報端末での暗号処理に用いられる秘密鍵とを対応付けても良い。この場合、シールされた秘密鍵は、アンシールの際にはセキュリティデバイス内で復号されるので、平文の秘密鍵がセキュリティデバイスの外部にでることはない。
この場合、シールによって対応付けられた累積値とセキュリティデバイスの累積値格納部202が保持する累積値とが一致した場合にのみ、セキュリティデバイス内で復号された秘密鍵を用いた処理が可能となり、セキュリティデバイス内で暗復号処理や署名処理が行われる。
また、シールの対象とする情報は秘密鍵に限られるものではなく、共通鍵暗号における共通鍵など、情報端末で行う暗号処理に用いられる鍵の情報であればどのようなものであってもよい。
(8)上述した実施の形態、および、その変形例では、サービス提供サーバ1610の照合値DB1612が更新されていない場合に、情報端末900は、サービス提供サーバ1610からエラーメッセージを受け取った上で更新前累積値格納部206が保持する値をサービス提供サーバ1610に送っていた。しかし、このような実装に限られるものではなく、照合値DB1612が更新されていないケースを想定して、最初から情報端末900が、累積値格納部202が保持する値と更新前累積値格納部206が保持する値とを同時にサービス提供サーバ1610に送信するとしてもよい。この場合、サービス提供サーバ1610は、受け取った何れかの値と一致するのであれば、情報サービスの提供を行う。
(9)上記の各装置は、具体的には、マイクロプロセッサ、ROM、RAM、ハードディスクユニット、ディスプレイユニット、キーボード、マウスなどから構成されるコンピュータシステムである。前記RAM又は前記ハードディスクユニットには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムに従って動作することにより、各装置は、その機能を達成する。ここで、コンピュータプログラムは、所定の機能を達成するために、コンピュータに対する指令を示す命令コードが複数個組み合わされて構成されたものである。
なお、各装置は、マイクロプロセッサ、ROM、RAM、ハードディスクユニット、ディスプレイユニット、キーボード、マウスなどの全てを含むコンピュータシステムに限らず、これらの一部から構成されているコンピュータシステムであってもよい。
(10)上記の各装置を構成する構成要素の一部又は全部は、1個のシステムLSI(Large Scale Integration:大規模集積回路)から構成されているとしてもよい。システムLSIは、複数の構成部を1個のチップ上に集積して製造された超多機能LSIであり、具体的には、マイクロプロセッサ、ROM、RAMなどを含んで構成されるコンピュータシステムである。前記RAMには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムに従って動作することにより、システムLSIは、その機能を達成する。これらは個別に1チップ化されても良いし、一部又は全てを含むように1チップ化されても良い。
また、ここでは、システムLSIとしたが、集積度の違いにより、IC、システムLSI、スーパーLSI、ウルトラLSIと呼称されることもある。
また、集積回路化の手法はLSIに限るものではなく、専用回路又は汎用プロセサで実現してもよい。LSI製造後に、プログラムすることが可能なFPGA(Field Programmable Gate Array)や、LSI内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサーを利用しても良い。
さらには、半導体技術の進歩又は派生する別技術によりLSIに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。バイオ技術の適用等が可能性としてありえる。
(11)上記の各装置を構成する構成要素の一部又は全部は、各装置に脱着可能なICカード又は単体のモジュールから構成されているとしてもよい。前記ICカード又は前記モジュールは、マイクロプロセッサ、ROM、RAM、などから構成されるコンピュータシステムである。前記ICカード又は前記モジュールは、上記の超多機能LSIを含むとしてもよい。マイクロプロセッサが、コンピュータプログラムに従って動作することにより、前記ICカード又は前記モジュールは、その機能を達成する。このICカード又はこのモジュールは、耐タンパ性を有するとしてもよい。
(12)本発明は、上記に示す方法であるとしてもよい。また、これらの方法をコンピュータにより実現するコンピュータプログラムであるとしてもよいし、前記コンピュータプログラムからなるデジタル信号であるとしてもよい。
また、本発明は、前記コンピュータプログラム又は前記デジタル信号をコンピュータ読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、CD―ROM、MO、DVD、DVD−ROM、DVD−RAM、BD(Blu−ray Disc)、半導体メモリなど、に記録したものとしてもよい。また、これらの記録媒体に記録されている前記コンピュータプログラム又は前記デジタル信号であるとしてもよい。
また、本発明は、前記コンピュータプログラム又は前記デジタル信号を、電気通信回線、無線又は有線通信回線、インターネットを代表とするネットワーク、データ放送等を経由して伝送するものとしてもよい。
また、前記プログラム又は前記デジタル信号を前記記録媒体に記録して移送することにより、又は前記プログラム又は前記デジタル信号を前記ネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしてもよい。
(13)上記実施の形態及び上記変形例をそれぞれ組み合わせるとしてもよい。
本発明は、本発明の情報端末に搭載されるセキュリティデバイスをそれらの機器に搭載し、情報端末と同様の構成にすることによって、プログラムデータが更新された場合でも、更新したプログラムデータを元に戻すことなく、シールされたデータの復号化や、CPUが実行しているプログラムデータを認証するサービス提供サーバからの情報サービスの提供を受けることができるという効果を有し、パーソナルコンピュータや携帯電話機、オーディオプレーヤ、テレビジョン受像機、ビデオレコーダなど、プログラムデータの更新を行う情報通信機器や家電機器に有用である。
本発明の実施の形態1に係る情報端末の構成を示すブロック図 本発明の実施の形態1におけるセキュリティデバイスの構成を示すブロック図 図3(A)は、本発明の実施の形態1から実施の形態4における更新証明書のデータ構造を示す図、図3(B)は、本発明の実施の形態1から実施の形態4における複数の世代のバージョンのプログラムデータのダイジェストが含まれる更新証明書のデータ構造を示す図 図4(A)は、本発明の実施の形態1から実施の形態4におけるシールされたデータのデータ構造を示す図、図4(B)は、本発明の実施の形態1から実施の形態4における属性情報付きのシールされたデータのデータ構造を示す図 本発明の実施の形態1または実施の形態2における情報端末のCPUが一つのプログラムデータを実行する際に行う処理のフロー図 本発明の実施の形態1から実施の形態3における情報端末がシールされたデータの暗号を復号化する処理のフロー図 本発明の実施の形態2に係る情報端末の構成を示すブロック図 本発明の実施の形態2におけるセキュリティデバイスの構成を示すブロック図 本発明の実施の形態3に係る情報端末の構成を示すブロック図 本発明の実施の形態3におけるセキュリティデバイスの構成を示すブロック図 本発明の実施の形態3または実施の形態4に係る情報端末のCPUが一つのプログラムデータを実行する際に行う処理のフロー図 本発明の実施の形態3におけるセキュリティデバイスが暗号化部を備える場合の構成を示すブロック図 本発明の実施の形態3に係る情報端末がシールされたデータの暗号の復号化と復号化されたデータの再暗号化をする処理のフロー図 本発明の実施の形態4に係る情報端末の構成を示すブロック図 図15(A)は、本発明の実施の形態4におけるセキュリティデバイスの構成を示すブロック図、図15(B)は、本発明の実施の形態4におけるセキュリティデバイスが暗号化部を備える場合のセキュリティデバイスの構成を示すブロック図 従来の技術およびサービス提供サーバの構成を示すブロック図 本発明の実施の形態5に係るプログラム更新システムの構成を示す図 本発明の実施の形態5に係るプログラムデータ管理サーバの構成を示す図 本発明の実施の形態5に係るプログラムデータDBの一例を示す図 本発明の実施の形態5に係るサービス提供サーバの構成を示す図 本発明の実施の形態5に係る照合値DBの内容を示す図 本発明の実施の形態5に係る情報端末の構成を示すブロック図 本発明の実施の形態5に係るセキュリティデバイスの構成を示すブロック図 図24(A)は、本発明の実施の形態5に係る2世代の累積値に係る更新証明書を示す図、図24(B)本発明の実施の形態5に係る複数世代の累積値に係る更新証明書を示す図 本発明の実施の形態5に係る更新証明書生成処理を示すフローチャート 本発明の実施の形態5に係る累積値検証部による再シール処理を示すフローチャート
符号の説明
100、700、900、1400 情報端末
101、1601 CPU
102 更新証明書格納部
103、703、903、1403 選択部
104 計測部
105 データ格納部
106、706、906、1406 セキュリティデバイス
107 プログラム格納部
201 累積演算部
202 累積値格納部
203 復号化部
204 復号化条件検証部
205 署名部
206 更新前累積値格納部
207 暗号化部
300、350 更新証明書
400 シールされたデータ
1600 パーソナルコンピュータ
1601 CPU
1602 TPM
1603 ハードディスク
1604 PCR
1605 BIOS
1606 OS
1607 アプリケーション
1608 シールされたデータ
1610 サービス提供サーバ
1611 クライアント認証部
1612 照合値DB
1613 サービス提供部
1620 データ
1620a PCR値
1620b チャレンジ情報

Claims (16)

  1. プログラムを実行する情報端末であって、
    旧プログラムの特徴を示す旧特徴値と前記旧プログラムの更新版である新プログラムの特徴を示す新特徴値との組を含む更新証明書を取得する更新証明書取得手段と、
    データを、前記データを使用していたプログラムである過去プログラムの特徴を示す過去特徴値と対応付けて保持している保持手段と、
    前記新特徴値を用いて、前記情報端末で実行中のプログラムである現プログラムが前記新プログラムと一致するか否かを判定する判定手段と、
    前記判定手段により一致すると判定された場合に、前記旧特徴値と前記過去特徴値とに基づいて前記データの使用可否を判断し、使用可と判断された場合に、前記実行中の現プログラムに対し前記データの使用を許可する許可手段と
    を備えることを特徴とする情報端末。
  2. 前記新プログラムのダイジェストに係る値は、前記新プログラムのダイジェストであり、
    前記判定手段は、
    前記現プログラムのダイジェストを生成するダイジェスト生成部と、
    前記現プログラムのダイジェストと前記新プログラムのダイジェストとが一致する場合に、前記現プログラムが前記新プログラムと一致すると決定する決定部と
    を含むことを特徴とする請求項1記載の情報端末。
  3. 前記旧特徴値は、前記旧プログラムのダイジェストであり、
    前記過去特徴値は、前記過去プログラムのダイジェストであり、
    前記データは、前記過去プログラムのダイジェストに係る値である使用条件値と対応付けられており、
    前記ダイジェスト生成部は、更に、前記現プログラムが実行されるより前に所定の実行順序に従い実行された1以上のプログラムそれぞれのダイジェストを生成し、
    前記許可手段は、
    前記1以上のプログラムそれぞれのダイジェストと、前記更新証明書に含まれる前記旧プログラムのダイジェストとを累積演算して更新前累積値を生成する累積値生成部と、
    前記使用条件値と前記更新前累積値とが一致するか否かを判定する累積値判定部と、
    前記累積値判定部により一致すると判定された場合に、前記現プログラムに対し前記データの使用を許可する使用許可部と
    を備えることを特徴とする請求項2記載の情報端末。
  4. 前記累積値生成部は、前記判定手段により一致すると判定された場合に前記更新前累積値を生成し、
    前記判定手段により一致しないと判定された場合に、前記現プログラムのダイジェストと、前記1以上のプログラムそれぞれのダイジェストとを累積演算して現累積値を生成し、
    前記累積値判定部は、
    前記判定手段により一致すると判定された場合に、前記使用条件値と前記更新前累積値とが一致するか否かを判定し、
    前記判定手段により一致しないと判定された場合に、前記使用条件値と前記現累積値とが一致するか否かを判定し、
    前記使用許可部は、前記累積値判定部により一致すると判定された場合に、前記現プログラムに対し前記データを使用許可する
    ことを特徴とする請求項3記載の情報端末。
  5. 前記累積値生成部は、更に、前記更新前累積値、および、前記現プログラムのダイジェストと前記1以上のプログラムそれぞれのダイジェストとを累積演算した現累積値を生成し、
    前記使用許可部は、前記使用条件値が、前記現累積値又は前記更新前累積値と一致するか否かを判定し、前記現累積値又は前記更新前累積値のいずれかと一致すると判定した場合に、実行中の前記現プログラムに対し前記データの使用を許可する
    ことを特徴とする請求項3記載の情報端末。
  6. 前記累積値生成部は、更に、
    前記1以上のプログラムそれぞれのダイジェストと、前記現プログラムのダイジェストとを累積演算して現累積値を生成し、
    前記許可手段は、更に、
    前記データを使用可と判断した場合に、前記データに対応付けられている前記使用条件値の値を前記現累積値に更新する
    ことを特徴とする請求項3記載の情報端末。
  7. 前記情報端末において、前記データと前記使用条件値とは暗号化された後に保持されており、
    前記許可手段は、更に、
    前記使用許可部による判定の前に、前記データと前記使用条件値とを復号する復号部と、
    前記現プログラムによる前記データの使用が終了した後に、前記データと前記使用条件値とを暗号化する暗号化部と
    を備えることを特徴とする請求項3記載の情報端末。
  8. 前記新特徴値は、前記情報端末において前記現プログラムより前に所定の実行順序に従い実行される1以上のプログラムそれぞれのダイジェストと、前記新プログラムのダイジェストとを累積演算した結果である更新後累積値であり、
    前記判定手段は、
    前記現プログラムが実行されるより前に所定の実行順序に従い実行された1以上のプログラムそれぞれのダイジェストと、前記現プログラムのダイジェストとを生成するダイジェスト生成部と、
    前記ダイジェスト生成部により生成されたダイジェストを累積演算して現累積値を生成する累積値生成部と、
    前記更新後累積値と前記現累積値とが一致する場合に、前記現プログラムが前記新プログラムと一致すると決定する決定部と
    を含むことを特徴とする請求項1記載の情報端末。
  9. 前記旧特徴値は、前記情報端末において前記現プログラムより前に所定の実行順序に従い実行される1以上のプログラムそれぞれのダイジェストと、前記旧プログラムのダイジェストとを累積演算した結果である更新前累積値であり、
    前記過去特徴値は、前記情報端末において前記現プログラムより前に所定の実行順序に従い実行される1以上のプログラムそれぞれのダイジェストと、前記過去プログラムのダイジェストとを累積演算した結果である過去累積値であり、
    前記データは前記過去特徴値と同一の値である使用条件値と対応付けられており、
    前記許可手段は、
    前記判定手段により一致すると判定された場合に、前記使用条件値と、前記更新前累積値とが一致するか否かを判定する累積値判定部と、
    前記累積値判定部により一致すると判定された場合に、実行中の前記現プログラムに対し、前記データの使用を許可する使用許可部と
    を備えることを特徴とする請求項8記載の情報端末。
  10. 前記許可手段は、更に、
    前記使用許可部によりデータの使用が許可された場合に、前記データに対応付けられている前記使用条件値の値を、前記累積値生成部により生成された前記現累積値に更新する再シール部
    を備えることを特徴とする請求項9記載の情報端末。
  11. 前記情報端末は、プログラムの特徴を示す特徴値である認証値に基づきサービスの提供可否を判定するサービス提供装置と共に用いられ、
    前記サービス提供装置は、
    プログラムの特徴を示す特徴値である照合値を記憶する記憶手段と、
    前記情報端末から認証値を受信する受信手段と、
    前記認証値と前記照合値とが一致する場合に、前記情報端末にサービスを提供する提供手段とを備え、
    前記情報端末は、更に、
    前記サービス提供装置に対し、前記現プログラムの特徴を示す認証値を送信し、前記認証値の送信に対する応答として前記サービスの提供が成されなかった場合に、前記旧プログラムの特徴を示す特徴値である認証値を送信する送信手段
    を備えることを特徴とする請求項1記載の情報端末。
  12. 前記更新証明書取得手段は、
    前記新プログラムを更新するための更新用プログラムを取得するプログラム取得部と、
    前記更新用プログラムの特徴を示す更新用特徴値を生成する更新用ダイジェスト生成部と、
    前記更新証明書に含まれる旧特徴値を、前記更新証明書に含まれる新特徴値で書き換え、前記更新証明書に含まれる新特徴値を、前記ダイジェスト生成部により生成された更新用特徴値で書き換える更新証明書更新部と
    を含むことを特徴とする請求項1記載の情報端末。
  13. プログラムを実行する情報端末に用いられるセキュリティデバイスであって、
    前記情報端末は、
    旧プログラムのダイジェストと、前記旧プログラムの更新版である新プログラムのダイジェストとの組を含む更新証明書を取得する更新証明書取得手段と、
    データを、前記データを使用していたプログラムである過去プログラムのダイジェストである使用条件値と対応付けて保持している保持手段と、
    実行中の現プログラムが実行されるより前に所定の実行順序に従い実行された1以上のプログラムそれぞれのダイジェストと、前記現プログラムのダイジェストとを生成するダイジェスト生成手段と、
    前記現プログラムのダイジェストと前記新プログラムのダイジェストとが一致する場合に、前記現プログラムが前記新プログラムと一致すると決定する決定手段と
    を備え、
    前記セキュリティデバイスは、
    前記判定手段により一致すると判定された場合に、前記1以上のプログラムそれぞれのダイジェストと、前記更新証明書に含まれる前記旧プログラムのダイジェストとを累積演算して累積値を生成する累積値生成部と、
    前記使用条件値と、前記累積値生成部により生成された累積値とが一致するか否かを判定する累積値判定部と、
    前記累積値判定部により一致すると判定された場合に、前記現プログラムに対し前記データの使用を許可する使用許可部と
    を備えることを特徴とするセキュリティデバイス。
  14. プログラムを実行する情報端末に用いられるセキュリティデバイスであって、
    前記情報端末は、
    実行中のプログラムである現プログラムより前に所定の実行順序に従い実行される1以上のプログラムそれぞれのダイジェストと旧プログラムのダイジェストとを累積演算した結果である更新前累積値と、前記現プログラム前に所定の実行順序に従い実行される1以上のプログラムそれぞれのダイジェストと前記旧プログラムの更新版である新プログラムのダイジェストとを累積演算した結果である更新後累積値との組を含む更新証明書を取得する更新証明書取得手段と、
    データを、前記データを使用していたプログラムである過去プログラムのダイジェストに係る情報である使用条件値と対応付けて保持している保持手段と、
    前記現プログラムが実行されるより前に所定の実行順序に従い実行された1以上のプログラムそれぞれのダイジェストと、前記現プログラムのダイジェストとを生成するダイジェスト生成手段と、
    前記セキュリティデバイスから、現累積値を取得する現累積値取得手段と、
    前記現累積値と前記更新後累積値とが一致する場合に、前記現プログラムが前記新プログラムと一致すると決定する決定手段とを備え、
    前記セキュリティデバイスは、
    前記ダイジェスト生成部により生成されたダイジェストを累積演算して前記現累積値を生成し、前記情報端末に出力する累積値生成手段と、
    前記決定手段により一致すると決定された場合に、前記使用条件値と、前記更新前累積値とが一致するか否かを判定する累積値判定手段と、
    前記累積値判定部により一致すると判定された場合に、実行中の前記現プログラムに対し、前記データの使用を許可する使用許可手段と
    を備えることを特徴とするセキュリティデバイス。
  15. プログラムを実行する情報端末が実行するデータ保護方法であって、
    旧プログラムの特徴を示す旧特徴値と前記旧プログラムの更新版である新プログラムの特徴を示す新特徴値との組を含む更新証明書を取得する更新証明書取得ステップと、
    データを、前記データを使用していたプログラムである過去プログラムの特徴を示す過去特徴値と対応付けて保持している保持ステップと、
    前記新特徴値を用いて、前記情報端末で実行中のプログラムである現プログラムが前記新プログラムと一致するか否かを判定する判定ステップと、
    前記判定ステップにより一致すると判定された場合に、前記旧特徴値と前記過去特徴値とに基づいて前記データの使用可否を判断し、使用可と判断された場合に、前記実行中の現プログラムに対し前記データの使用を許可する許可ステップと
    を備えることを特徴とするデータ保護方法。
  16. プログラムを実行する情報端末に用いられるデータ保護プログラムであって、
    旧プログラムの特徴を示す旧特徴値と前記旧プログラムの更新版である新プログラムの特徴を示す新特徴値との組を含む更新証明書を取得する更新証明書取得ステップと、
    データを、前記データを使用していたプログラムである過去プログラムの特徴を示す過去特徴値と対応付けて保持している保持ステップと、
    前記新特徴値を用いて、前記情報端末で実行中のプログラムである現プログラムが前記新プログラムと一致するか否かを判定する判定ステップと、
    前記判定ステップにより一致すると判定された場合に、前記旧特徴値と前記過去特徴値とに基づいて前記データの使用可否を判断し、使用可と判断された場合に、前記実行中の現プログラムに対し前記データの使用を許可する許可ステップと
    前記情報端末に実行させることを特徴とするデータ保護プログラム。
JP2008552115A 2006-12-27 2007-12-26 情報端末、セキュリティデバイス、データ保護方法及びデータ保護プログラム Active JP5097130B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008552115A JP5097130B2 (ja) 2006-12-27 2007-12-26 情報端末、セキュリティデバイス、データ保護方法及びデータ保護プログラム

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2006353093 2006-12-27
JP2006353093 2006-12-27
JP2008552115A JP5097130B2 (ja) 2006-12-27 2007-12-26 情報端末、セキュリティデバイス、データ保護方法及びデータ保護プログラム
PCT/JP2007/074914 WO2008081801A1 (ja) 2006-12-27 2007-12-26 情報端末、セキュリティデバイス、データ保護方法及びデータ保護プログラム

Publications (2)

Publication Number Publication Date
JPWO2008081801A1 JPWO2008081801A1 (ja) 2010-04-30
JP5097130B2 true JP5097130B2 (ja) 2012-12-12

Family

ID=39588484

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008552115A Active JP5097130B2 (ja) 2006-12-27 2007-12-26 情報端末、セキュリティデバイス、データ保護方法及びデータ保護プログラム

Country Status (4)

Country Link
US (1) US8392724B2 (ja)
EP (1) EP2051181A1 (ja)
JP (1) JP5097130B2 (ja)
WO (1) WO2008081801A1 (ja)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5457362B2 (ja) * 2008-10-10 2014-04-02 パナソニック株式会社 情報処理装置、情報処理方法、情報処理プログラム及び集積回路
US8479000B2 (en) * 2008-10-10 2013-07-02 Panasonic Corporation Information processing device, authentication system, authentication device, information processing method, information processing program, recording medium, and integrated circuit
US8516232B2 (en) * 2009-06-30 2013-08-20 Sandisk Technologies Inc. Method and memory device for performing an operation on data
EP2449499B1 (en) * 2009-07-01 2014-11-26 Panasonic Corporation Secure boot method and secure boot apparatus
JP5355351B2 (ja) * 2009-11-06 2013-11-27 株式会社日立ソリューションズ コンピュータ
US20110225425A1 (en) * 2010-03-11 2011-09-15 Microsoft Corporation Preventing causality violations in decentralized distributed systems
JP5969845B2 (ja) * 2012-07-18 2016-08-17 キヤノン株式会社 情報処理装置及びその制御方法
DE102013205051A1 (de) * 2013-03-21 2014-09-25 Siemens Aktiengesellschaft Aktualisieren eines digitalen Geräte-Zertifikats eines Automatisierungsgeräts
JP2015090548A (ja) * 2013-11-05 2015-05-11 オムロン株式会社 制御装置
JP2017022654A (ja) * 2015-07-14 2017-01-26 株式会社東芝 記憶装置及び方法
JP6921487B2 (ja) * 2016-06-07 2021-08-18 キヤノン株式会社 画像形成装置、画像形成装置の制御方法、及びプログラム
CN107645533A (zh) * 2016-07-22 2018-01-30 阿里巴巴集团控股有限公司 数据处理方法、数据发送方法、风险识别方法及设备
JP7115429B2 (ja) * 2018-08-10 2022-08-09 株式会社デンソー 車両用マスタ装置、ロールバックの実行制御方法及びロールバックの実行制御プログラム

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001337864A (ja) * 2000-03-22 2001-12-07 Hitachi Ltd アクセス制御システム
JP2005141413A (ja) * 2003-11-05 2005-06-02 Sony Corp 情報処理装置及びその情報処理方法、並びにデータ通信システム及びデータ通信方法

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4812168B2 (ja) 1999-02-15 2011-11-09 ヒューレット・パッカード・カンパニー 信用コンピューティング・プラットフォーム
DE60044844D1 (de) * 1999-02-15 2010-09-30 Hewlett Packard Co Kommunikation zwischen modulen in einer rechenvorrichtung
GB9905056D0 (en) * 1999-03-05 1999-04-28 Hewlett Packard Co Computing apparatus & methods of operating computer apparatus
US7430668B1 (en) * 1999-02-15 2008-09-30 Hewlett-Packard Development Company, L.P. Protection of the configuration of modules in computing apparatus
US7035850B2 (en) * 2000-03-22 2006-04-25 Hitachi, Ltd. Access control system
EP1202168A3 (en) * 2000-10-30 2006-08-23 Microsoft Corporation System and method for dynamically veryfying the compatibility of a user interface resource
GB2382177B (en) * 2001-11-20 2005-09-14 Hewlett Packard Co Digital certificate verification
US20050021968A1 (en) 2003-06-25 2005-01-27 Zimmer Vincent J. Method for performing a trusted firmware/bios update
US7568195B2 (en) * 2003-12-16 2009-07-28 Microsoft Corporation Determining a maximal set of dependent software updates valid for installation
US20080077801A1 (en) * 2006-09-25 2008-03-27 Nokia Corporation Protecting interfaces on processor architectures

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001337864A (ja) * 2000-03-22 2001-12-07 Hitachi Ltd アクセス制御システム
JP2005141413A (ja) * 2003-11-05 2005-06-02 Sony Corp 情報処理装置及びその情報処理方法、並びにデータ通信システム及びデータ通信方法

Also Published As

Publication number Publication date
US20100011225A1 (en) 2010-01-14
JPWO2008081801A1 (ja) 2010-04-30
EP2051181A1 (en) 2009-04-22
US8392724B2 (en) 2013-03-05
WO2008081801A1 (ja) 2008-07-10

Similar Documents

Publication Publication Date Title
JP5097130B2 (ja) 情報端末、セキュリティデバイス、データ保護方法及びデータ保護プログラム
EP3458999B1 (en) Self-contained cryptographic boot policy validation
JP4906854B2 (ja) 情報処理装置、情報記録装置、情報処理システム、プログラムアップデート方法、プログラムおよび集積回路
JP5314016B2 (ja) 情報処理装置、暗号鍵の管理方法、コンピュータプログラム及び集積回路
JP4680564B2 (ja) 携帯用メディア上のコンテンツの暗号化およびデータ保護
US9626513B1 (en) Trusted modular firmware update using digital certificate
US7949877B2 (en) Rights enforcement and usage reporting on a client device
US8464043B2 (en) Information security device and information security system
US20060168580A1 (en) Software-management system, recording medium, and information-processing device
US20080250403A1 (en) Method and apparatus for generating firmware update file and updating firmware by using the firmware update file
US7647646B2 (en) Information input/output system, key management device, and user device
US20080025503A1 (en) Security method using self-generated encryption key, and security apparatus using the same
JP2004280284A (ja) 制御プロセッサ、電子機器及び電子機器のプログラム起動方法、並びに電子機器のシステムモジュール更新方法
US8452985B2 (en) Circuit building device
US8538890B2 (en) Encrypting a unique cryptographic entity
WO2009157133A1 (ja) 情報処理装置、情報処理方法、これらを実現するコンピュータプログラム及び集積回路
JP6146476B2 (ja) 情報処理装置及び情報処理方法
JPH1131105A (ja) データカプセル生成装置および方法
CN115509587B (zh) 固件升级方法、装置、电子设备及计算机可读存储介质
KR101054075B1 (ko) 보호키 사용 제한 방법 및 장치
JP4702596B2 (ja) 復号回路、復号装置、復号方法及び復号プログラム
JP5180264B2 (ja) 装置鍵
JP2004240719A (ja) ソフトウェア実行制御方法
JPH10274928A (ja) ユーザ認証装置および方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100906

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120724

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120807

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120828

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120921

R150 Certificate of patent or registration of utility model

Ref document number: 5097130

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150928

Year of fee payment: 3