JPWO2009044533A1 - セキュアブート端末、セキュアブート方法、セキュアブートプログラム、記録媒体及び集積回路 - Google Patents

セキュアブート端末、セキュアブート方法、セキュアブートプログラム、記録媒体及び集積回路 Download PDF

Info

Publication number
JPWO2009044533A1
JPWO2009044533A1 JP2009535966A JP2009535966A JPWO2009044533A1 JP WO2009044533 A1 JPWO2009044533 A1 JP WO2009044533A1 JP 2009535966 A JP2009535966 A JP 2009535966A JP 2009535966 A JP2009535966 A JP 2009535966A JP WO2009044533 A1 JPWO2009044533 A1 JP WO2009044533A1
Authority
JP
Japan
Prior art keywords
software module
certificate
software
value
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.)
Granted
Application number
JP2009535966A
Other languages
English (en)
Other versions
JP5385148B2 (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 JP2009535966A priority Critical patent/JP5385148B2/ja
Publication of JPWO2009044533A1 publication Critical patent/JPWO2009044533A1/ja
Application granted granted Critical
Publication of JP5385148B2 publication Critical patent/JP5385148B2/ja
Expired - Fee Related 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
    • G06F21/575Secure boot

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Storage Device Security (AREA)

Abstract

起動時にセキュアブート処理を行う端末において、ソフトウェアモジュールの更新の途中で電源断等が起こった場合でも、確実に起動することを可能にする。CPUとソフトウェアモジュール格納手段と証明書格納手段と、ソフトウェアモジュール及び証明書を更新する更新手段とソフトウェアモジュールの構成情報を格納する構成情報格納手段を備えるセキュリティデバイスと更新前の構成でのソフトウェアモジュールの構成情報を格納する代替構成情報格納手段と証明書を用いてソフトウェアモジュールを検証して実行するブート制御手段とを備える端末であり、構成情報格納手段が格納する構成情報と代替構成情報格納手段が格納する構成情報とを参照してソフトウェアモジュールの証明書の検証を行う。

Description

本発明は、パーソナルコンピュータや携帯電話などの情報通信機器、インターネットアクセス機能を備えたテレビ受信装置などの情報家電機器等の端末と、その端末に内蔵されるセキュリティモジュールに関するものである。特に、端末のソフトウェアが複数のソフトウェアモジュールから構成され、それらのソフトウェアモジュールが更新可能な場合において、不正な動作をするモジュールにすり替えたり、不正にソフトウェアを古いバージョンに戻したりするといった不正行為を防止し、安定して確実に正しいソフトウェア構成で起動することを可能にするものである。
近年、ネットワークを介して提供されるサービスは、音楽や映像といった著作物の提供や、企業が保有する機密情報の閲覧、オンラインバンキングなど多岐に渡り、かつ、その中で扱われる情報の価値も高価なものになってきている。多岐に渡るサービスに対応するため、パーソナルコンピュータ、携帯端末、携帯電話、デジタル家電などの端末には、複数のソフトウェアモジュールがインストールされている。例えば、BIOS(Basic Input/Output System)やOS(Operating System)、TCP/IP(Transmission Control Protocol/Internet Protocol)等の通信プロトコルで外部との通信を可能とする通信モジュール、さらにはアプリケーションなどがそれである。
これらは、正規のソフトウェアモジュールが定められた順番で起動される必要があり、端末にはソフトウェアモジュールの改ざん等の不正行為を防止する仕組みが組み込まれている。例えば、各ソフトウェアモジュールに対して提供者が証明書を発行し、各ソフトウェアモジュールの起動時に、その証明書を用いてソフトウェアモジュールの完全性を検証するといった仕組もその一つである。この仕組は、ソフトウェアモジュールをモジュール単位で更新する場合にも有効であり、ソフトウェアモジュールの提供者が新しいソフトウェアモジュールと共に、その新しいソフトウェアモジュールの証明書を提供することにより、新しいソフトウェアモジュールの完全性を検証することが可能となる。
上記の証明書を用いて不正行為を防止する仕組みと同様の技術は、例えば特許文献1において公開されている。
また、セキュアなコンピュータプラットフォームを開発、普及させることを目的として、Trusted Computing Group(TCG)が設立されている。TCGでは、Trusted Platform Module(TPM)と呼ばれるセキュリティコアモジュールを利用し、安全な端末環境を実現している(非特許文献1〜5参照)。
US2005/0021968 TPM Main,Part1 Design Principles,Specification version 1.2 Level2 Rivision103(9 July 2007) TPM Main,Part2 TPM Structures,Specification verion1.2 Level2 Rivision103(9 July 2007) TPM Main Part3 Commands,Specification verion 1.2 Level2 Rivision103(9 July 2007) TCG Mobile Trusted Module Specification version 1.0 Revision 1(12 June 2007) TCG Mobile Reference Architecture Specification version1.0 Revision1(12 June 2007)
しかし、図17に示すように、従来提案されている技術では、端末のソフトウェアが、複数のソフトウェアモジュールから構成される場合に課題がある。
図17において、本来は、それぞれのモジュールにおいて検証と起動とを行ない、BIOSの検証、BIOSの起動、OSの検証、OSの起動、通信モジュールの検証、通信モジュールの起動といった図17に示す番号の順番で検証と起動を行うことでブート処理が行なわれる。
しかし、OSが何らかの問題がある古いOSと古い証明書にすり替えられてしまった場合、OSの証明書は古いというだけで証明書に施されている署名等は正しいものであるため、問題がある古いモジュールであることが検出されず、その後の通信モジュールも起動されて、正常にブート処理を完了してしまう。
また、ソフトウェアモジュールの更新では、ソフトウェアモジュールのコードイメージと、それに対応する証明書の両方を更新する必要があるため、証明書の更新を完了し、コードイメージの更新を完了する前に電源断等が起こった場合に課題がある。更新された証明書と更新されなかったコードイメージとは整合性が取れていないため検証がエラーとなり、端末はブート処理を正しく完了できす、起動できない状態となってしまう。
本発明は、こうした従来の問題点を解決するものであり、端末のソフトウェアが、複数のソフトウェアモジュールから構成される場合における古いモジュールにすりかえるといった不正行為を防止し、各モジュールの更新処理を個別に行うことが可能であり、さらに、更新処理の途中で電源断等が起こっても、安定して確実にブート処理が行なえる端末と、その端末に内蔵されるセキュリティモジュールを提供することを目的としている。
上記課題を解決するために、本発明の一実施態様であるセキュアブート端末は、複数のソフトウェアモジュールを予め定められた順番で起動するセキュアブート端末であって、前記複数のソフトウェアモジュールそれぞれについて、当該ソフトウェアモジュールから要約値として算出されるべき目標要約値と、当該ソフトウェアモジュールより先に起動される他のソフトウェアモジュールそれぞれの目標要約値を累積演算した場合に得られるべき目標累積値とを含むデジタル証明書を格納している第1格納手段と、起動の順番に達したソフトウェアモジュールについて、当該ソフトウェアモジュールより先に起動される他のソフトウェアモジュールそれぞれの要約値を累積演算した実累積値と、当該ソフトウェアモジュールに対応するデジタル証明書に含まれる目標累積値とを比較して、当該ソフトウェアモジュールより先に起動されるソフトウェアモジュールの有効性を検証する検証手段と、前記複数のソフトウェアモジュールのうち1つのソフトウェアモジュール、及び前記1つのソフトウェアモジュールに係るデジタル証明書を更新する更新手段と、前記他のソフトウェアモジュールそれぞれについて、デジタル証明書が更新されている場合は更新前のデジタル証明書に含まれる目標要約値を累積演算し、更新されていない場合は当該デジタル証明書に含まれる目標要約値を累積演算した代替累積値を格納する第2格納手段と、(a)前記検証手段による有効性の検証が成功した場合、前記起動の順番に達したソフトウェアモジュールを起動し、(b)前記検証手段による有効性の検証が失敗した場合、前記代替累積値と前記起動の順番に達したソフトウェアモジュールに係るデジタル証明書に含まれる目標累積値とを比較し、前記目標累積値と前記代替累積値が一致すれば、前記起動の順番に達したソフトウェアモジュールを起動するブート制御手段とを備える。
本発明の一実施態様であるセキュアブート端末は、上述の構成を備えることにより、デジタル証明書やソフトウェアモジュールの更新の際に電源断が起こるなどによって、ソフトウェアモジュールのコードイメージやデジタル証明書間に不整合が生じてしまった場合でも、古いソフトウェアモジュールを実行して累積値を計算することなく前記代替累積値を用いて整合性を確保しブート処理を完了させることが出来る。
本発明の実施の形態1に係る端末の構成を示すブロック図 図2(a)は、本発明の実施の形態1に係る端末のセキュリティデバイスの構成を示すブロック図、図2(b)は、本発明の実施の形態1に係る端末の代替構成情報累積部の構成を示すブロック図 本発明の実施の形態1におけるソフトウェアモジュールの証明書のデータ構造を示す図 本発明の実施の形態1または実施の形態2におけるセキュアブート処理のフロー図 本発明の実施の形態1または実施の形態2における通常セキュアブート処理のフロー図 本発明の実施の形態1または実施の形態2における更新時セキュアブート処理のフロー図 本発明の実施の形態2に係る端末の構成を示すブロック図 本発明の実施の形態3におけるソフトウェアモジュールの証明書のデータ構造を示す図 本発明の実施の形態4におけるソフトウェアモジュールの証明書のデータ構造を示す図 本発明の実施の形態4における更新時セキュアブート処理のフロー図 本発明の実施の形態5に係る端末の構成を示すブロック図 本発明の実施の形態1、2、3、4、5における更新処理のフロー図 本発明の実施の形態5におけるサイレントブート処理のフロー図 本発明の実施の形態6における更新処理のフロー図 図15(a)は、端末の更新前のプログラムモジュールの証明書の構成の一例を示す図、図15(b)は、端末のソフトウェアモジュールの更新を完了した場合のプログラムモジュールと証明書の構成の一例を示す図、図15(c)は、端末のソフトウェアモジュールの更新の途中の状態にけるプログラムモジュールと証明書の構成の一例を示す図 本発明の実施の形態1、2、3、4、5、6におけるブート制御手段の内部に保持されるデータの一例を示す模式図 従来技術に基づくブート処理の一例を説明する図
符号の説明
100 端末
101 CPU
102 セキュリティデバイス
103 代替構成情報累積部
104 更新手段
105 ブート制御手段
106 ソフトウェアモジュール格納手段
107 証明書格納手段
108 通知手段
本発明の一実施態様であるセキュアブート端末は、複数のソフトウェアモジュールを予め定められた順番で起動するセキュアブート端末であって、前記複数のソフトウェアモジュールそれぞれについて、当該ソフトウェアモジュールから要約値として算出されるべき目標要約値と、当該ソフトウェアモジュールより先に起動される他のソフトウェアモジュールそれぞれの目標要約値を累積演算した場合に得られるべき目標累積値とを含むデジタル証明書を格納している第1格納手段と、起動の順番に達したソフトウェアモジュールについて、当該ソフトウェアモジュールより先に起動される他のソフトウェアモジュールそれぞれの要約値を累積演算した実累積値と、当該ソフトウェアモジュールに対応するデジタル証明書に含まれる目標累積値とを比較して、当該ソフトウェアモジュールより先に起動されるソフトウェアモジュールの有効性を検証する検証手段と、前記複数のソフトウェアモジュールのうち1つのソフトウェアモジュール、及び前記1つのソフトウェアモジュールに係るデジタル証明書を更新する更新手段と、前記他のソフトウェアモジュールそれぞれについて、デジタル証明書が更新されている場合は更新前のデジタル証明書に含まれる目標要約値を累積演算し、更新されていない場合は当該デジタル証明書に含まれる目標要約値を累積演算した代替累積値を格納する第2格納手段と、(a)前記検証手段による有効性の検証が成功した場合、前記起動の順番に達したソフトウェアモジュールを起動し、(b)前記検証手段による有効性の検証が失敗した場合、前記代替累積値と前記起動の順番に達したソフトウェアモジュールに係るデジタル証明書に含まれる目標累積値とを比較し、前記目標累積値と前記代替累積値が一致すれば、前記起動の順番に達したソフトウェアモジュールを起動するブート制御手段とを備える。
前記更新手段は、更に、全ソフトウェアモジュールが起動した後に、前記検証手段による検証に失敗したソフトウェアモジュールについて、当該ソフトウェアモジュールに対応するデジタル証明書を更新する。
この構成によれば、デジタル証明書やソフトウェアモジュールの更新の際に電源断が起こるなどによって、ソフトウェアモジュールのコードイメージや証明書間に不整合が生じてしまった場合でも、ブート処理を完了させその後に、デジタル証明書、ソフトウェアモジュールの更新処理を再開することが出来る。
また、前記セキュアブート端末は、更に、前記他のソフトウェアモジュールそれぞれについて更新があったか否かを判定する更新判定手段と、更新があったソフトウェアモジュールについては、当該ソフトウェアモジュールに係る更新前のデジタル証明書に含まれる目標要約値を累積演算し、更新がなかったソフトウェアモジュールについては、当該ソフトウェアモジュールに係るデジタル証明書に含まれる目標要約値を累積演算して前記代替累積値を算出し、前記第2格納手段に記録する代替累積手段とを備えることとしてもよい。
この構成によれば、各ソフトウェアモジュールが改ざん、不完全な更新等がない場合における実累積値と一致する代替累積値を演算でき、この代替累積値を用いブート処理を中断させず完了することができる。
また、前記代替累積手段は、更に、前記更新があったソフトウェアモジュールについては、前記ソフトウェアモジュールから算出される要約値が、前記ソフトウェアモジュールに係るデジタル証明書に含まれる目標要約値と一致するか否かを確認し、一致する場合に、前記更新前のデジタル証明書に含まれる目標要約値を累積演算することとしてもよい。
この構成によれば、起動の順番に達したソフトウェアモジュールについて、当該ソフトウェアモジュールより先に起動される他のソフトウェアモジュールそれぞれに改ざんがなく、かつ、更新の完了を確認した上で当該ソフトウェアモジュールを起動することができ、より安全性を高めることができる。
また、前記代替累積手段は、前記代替累積値を暗号化して前記第2格納手段に格納することとしてもよい。
この構成によれば、代替累積値が暴露されるのを防ぐことができる。
また、前記セキュアブート端末は、更に、前記検証手段による有効性の検証が失敗したソフトウェアモジュールが前記ブート制御手段によって起動された場合、当該ソフトウェアモジュールに対応するデジタル証明書の更新が必要である旨を通知する通知手段を備えることとしてもよい。
この構成によれば、ユーザに対して証明書の更新が必要であることを明示的に通知し、更新処理の実行をユーザに促すことで、更新処理を完了させることが出来る確度を上げることができる。
また、前記デジタル証明書は、対応するソフトウェアモジュールについて、前記検証手段による検証が失敗した場合に制限すべき機能を示す制限情報を含み、前記ブート制御手段は、前記検証手段による検証が失敗したソフトウェアモジュールを起動する場合、前記制限情報により示される機能を制限した状態で前記ソフトウェアモジュールを起動することとしてもよい。
この構成によれば、更新処理が正常終了していない状態でブート処理が行われた場合、ブート処理の後に実行できる処理を制限するので、更新処理が未完了なソフトウェアモジュールによって不当な機能が実行させる危険性を回避することができる。
例えば、制限情報に「検証手段による検証が失敗した場合に、更新処理の再開以外の処理を制限する」という内容を規定した場合、更新処理が正常終了していない状態でブート処理が行われると、ブート処理の後、更新処理の再開以外の処理が制限されるため、更新処理が優先的に実行され、より高い確度で更新処理を完了させるとともに、更新処理以外の処理が行われるのを防ぐことができる。
また、前記セキュアブート端末は、更に、前記複数のソフトウェアモジュールのそれぞれについて、前記ソフトウェアモジュールを示す情報と、前記ソフトウェアモジュールに係る現在のデジタル証明書を示す情報と、前記ソフトウェアモジュールに係る更新前のデジタル証明書を示す情報とを格納する領域を持つ複数の構造体、及び、前記複数の構造体のうち1つの構造体を使用中の現構造体として指し示す現構造体ポインタを記憶する構造体格納手段を備え、前記更新手段は、前記1つのソフトウェアモジュールの更新版及び前記1つのソフトウェアモジュールに係るデジタル証明書の更新版を取得する取得部と、前記1つのソフトウェアモジュールに対応する構造体のうち、現構造体ポインタによって示されていない構造体である更新用構造体について、(a)前記更新用構造体の前記ソフトウェアモジュールを示す情報として、前記1つのソフトウェアモジュールの更新版を示す情報を格納し、(b)前記更新用構造体の前記現在のデジタル証明書を示す情報として、前記1つのソフトウェアモジュールに係るデジタル証明書の更新版を示す情報を格納し、(c)前記更新用構造体中の前記更新前のデジタル証明書を示す情報として、前記現構造体ポインタの示す構造体の前記現在のデジタル証明書を示す情報を格納する構造体更新部と、前記現構造体ポインタを、前記更新用構造体を示すように更新するポインタ変更部とを備えることとしてもよい。
この構成によれば、ソフトウェアモジュール、又はデジタル証明書の格納場所を構造体で一括管理し、更新を要するソフトウェアモジュール、又はデジタル証明書について更新が完了してから、現構造体ポインタをソフトウェアモジュールの更新版、又はデジタル証明書の更新版の格納場所を管理する構造体に切り替える。実行するソフトウェアモジュール、使用するデジタル証明書を一括変更するので、これらを個別に変更する場合に生じるような変更処理間のタイムラグが無くなり、安全確実に更新後のソフトウェアモジュール、又はデジタル証明書を使用することができる。
また、前記セキュアブート端末は、更に、前記複数のソフトウェアモジュールのうち1つのソフトウェアモジュールについてデジタル証明書の更新版を取得する取得手段と、前記1つのソフトウェアモジュールより起動の順番が前の他のソフトウェアモジュールそれぞれに対応する目標要約値を累積演算して事前累積値を生成する事前累積値生成手段と、前記事前累積値と、前記デジタル証明書の更新版に含まれる目標累積値とを比較して、前記1つのソフトウェアモジュールよりも起動の順番が前のソフトウェアモジュールの有効性を検証する事前検証手段とを備え、前記更新手段は、更に、前記事前検証手段による検証に成功した場合に、前記デジタル証明書の更新版で、前記1つのソフトウェアモジュールに係るデジタル証明書を更新することとしてもよい。
この構成によれば、更新処理を開始する前に、入手したソフトウェアモジュールのコードイメージと証明書と更新対象ではない証明書との整合性を検証するので、誤って整合性がない構成に更新されてしまうことを防止し、確実にソフトウェアモジュールのコードイメージと証明書との間に不整合がないソフトウェア構成へと更新することが出来る。
本発明の一実施態様であるセキュアブート方法は、複数のソフトウェアモジュールを予め定められた順番で起動するセキュアブート端末に用いられるセキュアブート方法であって、前記複数のソフトウェアモジュールそれぞれについて、当該ソフトウェアモジュールから要約値として算出されるべき目標要約値と、当該ソフトウェアモジュールより先に起動される他のソフトウェアモジュールそれぞれの目標要約値を累積演算した場合に得られるべき目標累積値とを含むデジタル証明書を格納する第1格納ステップと、起動の順番に達したソフトウェアモジュールについて、当該ソフトウェアモジュールより先に起動される他のソフトウェアモジュールそれぞれの要約値を累積演算した実累積値と、当該ソフトウェアモジュールに対応するデジタル証明書に含まれる目標累積値とを比較して、当該ソフトウェアモジュールより先に起動されるソフトウェアモジュールの有効性を検証する検証ステップと、前記複数のソフトウェアモジュールのうち1つのソフトウェアモジュール、及び前記1つのソフトウェアモジュールに係るデジタル証明書を更新する更新ステップと、前記他のソフトウェアモジュールそれぞれについて、デジタル証明書が更新されている場合は更新前のデジタル証明書に含まれる目標要約値を累積演算し、更新されていない場合は当該デジタル証明書に含まれる目標要約値を累積演算した代替累積値を格納する第2格納ステップと、(a)前記検証手段による有効性の検証が成功した場合、前記起動の順番に達したソフトウェアモジュールを起動し、(b)前記検証手段による有効性の検証が失敗した場合、前記代替累積値と前記起動の順番に達したソフトウェアモジュールに係るデジタル証明書に含まれる目標累積値とを比較し、前記目標累積値と前記代替累積値が一致すれば、前記起動の順番に達したソフトウェアモジュールを起動するブート制御ステップとを含む。
本発明の一実施態様であるセキュアブートプログラムは、複数のソフトウェアモジュールを予め定められた順番で起動するセキュアブート端末に用いられるセキュアブートプログラムであって、前記複数のソフトウェアモジュールそれぞれについて、当該ソフトウェアモジュールから要約値として算出されるべき目標要約値と、当該ソフトウェアモジュールより先に起動される他のソフトウェアモジュールそれぞれの目標要約値を累積演算した場合に得られるべき目標累積値とを含むデジタル証明書を格納する第1格納ステップと、起動の順番に達したソフトウェアモジュールについて、当該ソフトウェアモジュールより先に起動される他のソフトウェアモジュールそれぞれの要約値を累積演算した実累積値と、当該ソフトウェアモジュールに対応するデジタル証明書に含まれる目標累積値とを比較して、当該ソフトウェアモジュールより先に起動されるソフトウェアモジュールの有効性を検証する検証ステップと、前記複数のソフトウェアモジュールのうち1つのソフトウェアモジュール、及び前記1つのソフトウェアモジュールに係るデジタル証明書を更新する更新ステップと、前記他のソフトウェアモジュールそれぞれについて、デジタル証明書が更新されている場合は更新前のデジタル証明書に含まれる目標要約値を累積演算し、更新されていない場合は当該デジタル証明書に含まれる目標要約値を累積演算した代替累積値を格納する第2格納ステップと、(a)前記検証手段による有効性の検証が成功した場合、前記起動の順番に達したソフトウェアモジュールを起動し、(b)前記検証手段による有効性の検証が失敗した場合、前記代替累積値と前記起動の順番に達したソフトウェアモジュールに係るデジタル証明書に含まれる目標累積値とを比較し、前記目標累積値と前記代替累積値が一致すれば、前記起動の順番に達したソフトウェアモジュールを起動するブート制御ステップとを含む。
本発明の一実施態様である記録媒体は、複数のソフトウェアモジュールを予め定められた順番で起動するセキュアブート端末に用いられるセキュアブートプログラムを記録する記録媒体であって、前記セキュアブートプログラムは、前記複数のソフトウェアモジュールそれぞれについて、当該ソフトウェアモジュールから要約値として算出されるべき目標要約値と、当該ソフトウェアモジュールより先に起動される他のソフトウェアモジュールそれぞれの目標要約値を累積演算した場合に得られるべき目標累積値とを含むデジタル証明書を格納する第1格納ステップと、起動の順番に達したソフトウェアモジュールについて、当該ソフトウェアモジュールより先に起動される他のソフトウェアモジュールそれぞれの要約値を累積演算した実累積値と、当該ソフトウェアモジュールに対応するデジタル証明書に含まれる目標累積値とを比較して、当該ソフトウェアモジュールより先に起動されるソフトウェアモジュールの有効性を検証する検証ステップと、前記複数のソフトウェアモジュールのうち1つのソフトウェアモジュール、及び前記1つのソフトウェアモジュールに係るデジタル証明書を更新する更新ステップと、前記他のソフトウェアモジュールそれぞれについて、デジタル証明書が更新されている場合は更新前のデジタル証明書に含まれる目標要約値を累積演算し、更新されていない場合は当該デジタル証明書に含まれる目標要約値を累積演算した代替累積値を格納する第2格納ステップと、(a)前記検証手段による有効性の検証が成功した場合、前記起動の順番に達したソフトウェアモジュールを起動し、(b)前記検証手段による有効性の検証が失敗した場合、前記代替累積値と前記起動の順番に達したソフトウェアモジュールに係るデジタル証明書に含まれる目標累積値とを比較し、前記目標累積値と前記代替累積値が一致すれば、前記起動の順番に達したソフトウェアモジュールを起動するブート制御ステップとを含む。
本発明の一実施態様である集積回路は、複数のソフトウェアモジュールを予め定められた順番で起動する集積回路であって、前記複数のソフトウェアモジュールそれぞれについて、当該ソフトウェアモジュールから要約値として算出されるべき目標要約値と、当該ソフトウェアモジュールより先に起動される他のソフトウェアモジュールそれぞれの目標要約値を累積演算した場合に得られるべき目標累積値とを含むデジタル証明書を格納している第1格納手段と、起動の順番に達したソフトウェアモジュールについて、当該ソフトウェアモジュールより先に起動される他のソフトウェアモジュールそれぞれの要約値を累積演算した実累積値と、当該ソフトウェアモジュールに対応するデジタル証明書に含まれる目標累積値とを比較して、当該ソフトウェアモジュールより先に起動されるソフトウェアモジュールの有効性を検証する検証手段と、前記複数のソフトウェアモジュールのうち1つのソフトウェアモジュール、及び前記1つのソフトウェアモジュールに係るデジタル証明書を更新する更新手段と、前記他のソフトウェアモジュールそれぞれについて、デジタル証明書が更新されている場合は更新前のデジタル証明書に含まれる目標要約値を累積演算し、更新されていない場合は当該デジタル証明書に含まれる目標要約値を累積演算した代替累積値を格納する第2格納手段と、(a)前記検証手段による有効性の検証が成功した場合、前記起動の順番に達したソフトウェアモジュールを起動し、(b)前記検証手段による有効性の検証が失敗した場合、前記代替累積値と前記起動の順番に達したソフトウェアモジュールに係るデジタル証明書に含まれる目標累積値とを比較し、前記目標累積値と前記代替累積値が一致すれば、前記起動の順番に達したソフトウェアモジュールを起動するブート制御手段とを備える。
この構成によれば、デジタル証明書やソフトウェアモジュールの更新の際に電源断が起こるなどによって、ソフトウェアモジュールのコードイメージやデジタル証明書間に不整合が生じてしまった場合でも、古いソフトウェアモジュールを実行して累積値を計算することなく前記代替累積値を用いて整合性を確保しブート処理を完了させることが出来る。

以下本発明の実施の形態について、図面を参照しながら説明する。
(第1の実施形態)
本発明の第1の実施形態における端末100の構成について説明する。
端末100は、図1に示すように、CPU101と、耐タンパ性を備えるセキュリティデバイス102と、CPU101が実行するソフトウェアモジュールのコードイメージを格納するソフトウェアモジュール格納部106と、ソフトウェアモジュールの証明書を格納する証明書格納手段107と、ソフトウェアモジュール格納部106に格納されるソフトウェアモジュールと証明書格納手段107に格納される証明書とを更新する更新手段と104と、ソフトウェアモジュールの更新前のソフトウェア構成における構成情報を示す代替構成情報累積部103と、端末100のブート処理を制御するブート制御手段105と、端末100のユーザにブート処理の状況を通知する通知手段108と、から構成される。
ブート制御手段105は、証明書ごとの更新状況を示す更新フラグを保持する更新フラグ保持部111と、セキュアブート処理における実際の処理シーケンスを制御するセキュアブート制御部112とを備えている。
代替構成情報累積部103と更新手段104とブート制御手段105は、具体的には、以下において詳しく説明する動作を行う専用ハードウェアまたはCPU101が実行するソフトウェアによって実現され、ソフトウェアによって実現される場合には、端末100上のメモリ(不図示)にソフトウェア・オブジェクトデータとして生成される。この場合、特に更新フラグ保持部111は、不揮発性のメモリ上に実現される。
ソフトウェアモジュール格納部106と証明書格納手段107は、具体的には不揮発性メモリやハードディスクその他の記憶装置によって実現される。
通知手段108は、具体的にはディスプレイやスピーカ、LED等のインジケータ等によって実現される。
さらに、セキュリティデバイス102は、図2(a)に示すように、CPU101が実際に実行するソフトウェアモジュールの構成を示す構成情報を保持する構成情報累積部201と、ソフトウェアモジュールの証明書の有効性を検証する証明書検証部202と、構成情報累積部201が保持する構成情報を証明書の中の照合値と照合する照合部203と、ソフトウェアモジュールの有効なバージョンの下限を示すカウンタ値を保持するカウンタ部204と、データの暗復号及び署名生成や署名検証を行う暗復号部205と、を備える。また、構成情報累積部201は、ソフトウェアモジュールのハッシュ値の累積演算を行なう累積部211と、累積部211が算出した累積値(以下、累積演算の結果をこのように呼ぶ)を保持する構成情報保持部212と、を備えている。
暗復号部205は、データの暗復号処理や署名生成や署名検証を行うための複数の鍵データを保持しており、代替構成情報累積部103は、暗復号部205が保持する鍵データによって暗号化され、不正な改ざんがされないようになっている。
累積部211は、構成情報保持部212が保持する値のバイト列とソフトウェアモジュールのハッシュ演算の結果のバイト列とを連結し、さらに連結したバイト列に対してハッシュ演算を行い、その結果を構成情報保持部212に格納する。
また、代替構成情報累積部103は、構成情報累積部201と同様の構成を備え、図2(b)に示すように、更新前のソフトウェア構成におけるソフトウェアモジュールのハッシュ値の累積演算を行なう累積部221と、累積部221が算出した累積値を保持する代替構成情報保持部222と、を備えている。
累積部221は、代替構成情報保持部222が保持する値のバイト列とソフトウェアモジュールのハッシュ演算の結果のバイト列とを連結し、さらに連結したバイト列(この場合、例えば、代替構成情報保持部222が保持する値が20バイト、ソフトウェアモジュールのハッシュ演算の結果が20バイトの場合、連結したバイト列は40バイトのバイト列となる)に対してハッシュ演算を行い、その結果を代替構成情報保持部222に格納する。
図3は、証明書のデータ構造を示しており、証明書は、その証明書が対応付けられたソフトウェアモジュールの識別情報301と、ソフトウェアモジュールのバージョン302と、ソフトウェアモジュールのダイジェストとしてモジュールのコードイメージをハッシュした場合の値を示す参照計測値303と、ソフトウェアモジュールが実行される前の端末100の状態においてセキュリティデバイス102の構成情報累積部201に保持されるべき累積値を示す参照累積値304と、ソフトウェアモジュールのバージョンを示す参照カウンタ値305と、証明書を検証する鍵を示す検証鍵ID306と、検証鍵ID306が示す鍵に対応する秘密鍵による電子署名307と、から構成される。
参照計測値303は、正当なソフトウェアモジュールのコードイメージのハッシュ値であり、実際のソフトウェアモジュールのコードイメージのハッシュ演算の結果と照合することで、証明書とソフトウェアモジュールとの対応関係を検証することが可能となる。また、参照累積値304は、セキュリティデバイス102の構成情報累積部201に格納される構成情報と照合することで、ソフトウェアモジュールを実行する前の状態として正しい状態(その前に実行されているソフトウェアモジュールが有効なソフトウェアモジュールであり、正しい順番で実行されている)であることを検証するために用いられる。
次に、端末100の動作について説明する。
まず、図12を用いて、ソフトウェアモジュール格納手段106に格納されるソフトウェアモジュールのコードイメージと証明書格納手段107に格納される証明書とを更新する端末100の更新処理における動作について説明する。
最新のソフトウェアモジュールのコードイメージと証明書は、更新処理を行うソフトウェアモジュールのコードイメージと証明書の一覧を示す更新リストファイルと共に、ネットワーク通信手段(不図示)を介してダウンロードまたは蓄積媒体(不図示)を介して更新手段104の内部の記憶領域に一時的に保持されるものとする。また、具体的には、1つの更新されるソフトウェアモジュールに関して、そのソフトウェアモジュールのコードイメージと証明書、さらには、参照累積値304が更新されるソフトウェアモジュールに依存している証明書と更新リストファイルとが更新手段104の内部の記憶領域に保持される。
更新リストファイルは、ソフトウェアモジュールの提供者によって、ソフトウェアモジュールのコードイメージおよび証明書と共に提供されるファイルである。
更新リストファイルには、更新処理を行う順番でソフトウェアモジュールの証明書の識別情報とコードイメージの識別情報とが順番に記載されている。この順番は、セキュアブート処理の際に先に実行されるソフトウェアモジュールの順番に従っており、先に実行されるソフトウェアモジュールほど、そのソフトウェアモジュールの証明書とコードイメージの更新処理が先に行われるように記載されている。
なお、更新されるソフトウェアモジュールが複数ある場合には、更新リストファイルと、それぞれのソフトウェアモジュールに関して、そのソフトウェアモジュールのコードイメージと証明書、さらには、参照累積値304が更新されるソフトウェアモジュールに依存している証明書と、が更新手段104の内部の記憶領域に保持される。
また、証明書の参照累積値304が更新されるソフトウェアモジュールに依存していない場合には、更新リストファイルと、それぞれのソフトウェアモジュールのコードイメージと証明書とが更新手段104の内部の記憶領域に保持される。
最新のソフトウェアモジュールのコードイメージと証明書のダウンロードは、以下のようにして行われる。まず、更新手段104がソフトウェアモジュールの提供者のサイトに定期的にアクセスし、最新のソフトウェアモジュールのコードイメージや証明書が登録されているかどうかを確認する。登録されていた場合には、自動的にダウンロードが行われる。なお、端末のユーザが自らソフトウェアモジュールの提供者のサイトにアクセスしてダウンロードを行うようにしても良い。
図12は、更新されるべき最新のソフトウェアモジュールのコードイメージと証明書とが更新手段104の内部に保持された状態における端末100が行なう更新処理のフローを示している。更新処理は、最新のソフトウェアモジュールのコードイメージと証明書とが更新手段104の内部に格納された時に、更新手段104が自動的に開始するようにしても良いし、ユーザの更新処理の開始操作に基づいて更新処理を開始するようにしても良い。
また、図16は、ブート制御手段105の内部に保持されるデータの一例を示している。本実施の形態では、各ソフトウェアモジュールに関して、更新フラグと、コードイメージと証明書と旧証明書(更新処理をする前の古い証明書)のそれぞれの実体へのポインタを管理するモジュール構造体Aとモジュール構造体Bと、モジュール構造体へのポインタが保持される。図16は、BIOSとOSと通信モジュールの3つのソフトウェアモジュールに関して、ブート制御手段105の内部に保持されるデータを示している。
モジュール構造体へのポインタには、モジュール構造体Aへのポインタまたはモジュール構造体Bへのポインタが設定される。
本実施の形態では、モジュール構造体を使って、各ソフトウェアモジュール(BIOS、OS、通信モジュール)について、最新の証明書と旧証明書を管理している。本実施の形態ではモジュール構造体は2つあるが、一方は更新用に用いる構造体である。また、もう一方は現在のソフトウェア構成におけるソフトウェアモジュールの実体や証明書へのポインタを含む構造体であり、ソフトウェアモジュールの起動に用いる。本実施の形態では、ソフトウェアモジュールの更新があった場合は、更新用の構造体(すなわち、現在使用していない方の構造体)について、新しいソフトウェアモジュールのコードイメージや証明書の実体へのポインタを格納する。その上で、現在使用している方の構造体から、更新用の構造体へ各モジュール構造体へのポインタを切り替えることで、モジュール構造体の更新を完了する。すなわち、使用中のモジュール構造体と更新用のモジュール構造体と入れ替わるので、更新用のモジュール構造体の方が、新しく現在使用中のモジュール構造体となる。
また、各モジュール構造体の対応するソフトウェアモジュールよりも先に起動するモジュールについてのみ更新があった場合は、コードイメージの実体は変更されないが、証明書を更新する必要があることがある。これは、各ソフトウェアモジュールの証明書は自身が対応するソフトウェアモジュールよりも先に起動するモジュールの影響を受けることがあるためである。そのため、この場合も更新用のモジュール構造体について、更新前と同じコードイメージと、更新後の証明書と、更新前に最新だった証明書(更新後の旧証明書)とのそれぞれの実体を指すようポインタを設定する。その後、更新用のモジュール構造体と現在使用中のモジュール構造体とを入れ替えることで、モジュール構造体の更新を完了する。これらの動作については、以下の動作説明で詳細を述べる。
図12において、まず、更新手段104が更新するソフトウェアモジュールに対応する更新フラグをセットする(ステップS1201)。
次に、更新手段104は、ソフトウェアモジュールの証明書の更新を行う(ステップS1202)。この時、証明書格納手段107に格納される更新前の証明書は証明書格納手段107からは消去されず、ブート制御手段105において旧証明書として管理されるようになる。
また、古い証明書への差し替えを防止するため、更新手段104がセキュリティデバイス102に命令を送信する。命令を受けたセキュリティデバイス102は、証明書を更新する際に、証明書の参照カウンタ値305にセキュリティデバイス102のカウンタ部204に保持されているカウンタ値に1を加算した値を設定し、セキュリティデバイス102の暗復号部205に保持されている暗号鍵によって署名を生成して、電子署名307のフィールドに設定する。
また、この時、ブート制御手段105では、更新手段104からの要求に基づいて、モジュール構造体へのポインタが示しているモジュール構造体とは逆のモジュール構造体(ここで「逆のモジュール構造体」とはモジュール構造体へのポインタがモジュール構造体Aを示している場合はモジュール構造体B、モジュール構造体へのポインタがモジュール構造体Bを示している場合はモジュール構造体Aという意味)の証明書へのポインタに証明書格納手段107上の更新した証明書へのポインタを設定する。また、同じ逆のモジュール構造体の旧証明書へのポインタに、現在、モジュール構造体へのポインタが示しているモジュール構造体の証明書へのポインタと同じポインタを設定する。
次に、更新手段104は、ソフトウェアモジュール格納手段106に格納されているソフトウェアモジュールのコードイメージを更新する(ステップS1203)。この時、ブート制御手段105では、更新手段104からの要求に基づいて、モジュール構造体へのポインタが示しているモジュール構造体とは逆のモジュール構造体のコードイメージへのポインタにソフトウェアモジュール格納手段106上の更新したコードイメージへのポインタを設定する。さらに、モジュール構造体へのポインタに逆のモジュール構造体へのポインタを設定して、更新した証明書とコードイメージとがセキュアブート処理において使用されるように切り替える。
次に、更新手段104は、更新リストファイルに記載されている順番で、次に更新をすべきソフトウェアモジュールが存在するか否かを判定し(ステップS1204)、存在しない場合には、ステップS1205へ進み、他に更新をすべきソフトウェアモジュールが存在する場合には、ステップS1201に戻り、各ソフトウェアモジュールに関してステップS1201からステップS1204の処理を繰り返す。
ステップS1205では、更新手段104は、ソフトウェアモジュールのコードイメージを更新する必要はないが、証明書の内容が更新されたソフトウェアモジュールに依存しているために更新が必要な証明書が存在する場合に、それらの証明書を更新して、更新処理を終了する。この時、ブート制御手段105では、更新手段104からの要求に基づいて、モジュール構造体へのポインタが示しているモジュール構造体とは逆のモジュール構造体の証明書へのポインタに証明書格納手段107上の更新した証明書へのポインタを設定する。また、同じ逆のモジュール構造体のコードイメージへのポインタに、現在、モジュール構造体へのポインタが示しているモジュール構造体のコードイメージへのポインタと同じポインタを設定する。さらに、同じ逆のモジュール構造体の旧証明書へのポインタに、現在、モジュール構造体へのポインタが示しているモジュール構造体の証明書へのポインタと同じポインタを設定する。さらに、モジュール構造体へのポインタに逆のモジュール構造体へのポインタを設定して、更新した証明書がセキュアブート処理において使用されるように切り替える。
ステップS1205での証明書の更新の処理は、更新手段104は、ステップS1202での処理と同様の処理を行う。
次に、図4、5、6を用いて、端末100のセキュアブート処理における動作について説明する。
図4は、端末100が行なうセキュアブート処理のフローの概要を示している。
まず、ステップS401においてセキュアブート制御部112が更新フラグ保持部111の更新フラグを参照し、何れかの更新フラグが有効になっている場合には、更新時セキュアブート処理(ステップS403)へ進み、それ以外の場合は、通常セキュアブート処理(ステップS402)へ進む。
通常セキュアブート処理(ステップS402)へ進んだ場合、セキュアブート制御部112は図5に示すフローに基づいてセキュアブート処理を行なう。
また、更新時セキュアブート処理(ステップS403)へ進んだ場合、セキュアブート制御部112は図6に示すフローに基づいてセキュアブート処理を行なう。
まず、通常セキュアブート処理(ステップS402)における端末100の動作について説明する。
通常セキュアブート処理では、まず、セキュアブート制御部112がソフトウェアモジュールと証明書との照合を行いソフトウェアモジュールに対応する証明書が存在することを検証する(ステップS501)。具体的には、ソフトウェアモジュールのコードイメージのハッシュ演算(例えば、SHA−1などのハッシュ演算)を行い、その結果と証明書の参照計測値303とを照合する。照合の結果、参照計測値303と一致した場合には、セキュリティデバイス102に証明書の検証を要求してステップS502へ進む。
また、参照計測値303と一致しなかった場合にはエラーとなりセキュアブート処理を完了せずに終了する。この際、セキュアブート制御部112が通知手段108にユーザへの通知を要求し、通知手段108によって、ソフトウェアモジュールのコードイメージと証明書との整合性が取れていないことがユーザに通知される(不図示)。
ステップS502では、セキュリティデバイス102の証明書検証部202が、証明書のバージョンの検証を行い、証明書が古い無効化された証明書でないこと検証する(ステップS502)。具体的には、セキュリティデバイスのカウンタ部204が保持するカウンタ値と証明書の参照カウンタ値305とを比較する。カウンタ部204には、ソフトウェアモジュールの有効なバージョンの下限を示すカウンタ値が保持されており、カウンタ値の比較の結果、参照カウンタ値305が、カウンタ部204が保持するカウンタ値以上であった場合には、ステップS503へ進む。
また、それ以外の場合にはエラーとなりセキュアブート処理を完了せずに終了する。この際、セキュアブート制御部112が通知手段108にユーザへの通知を要求し、通知手段108によって、ソフトウェアモジュールのコードイメージと証明書が古いものであることがユーザに通知される(不図示)。
ステップS503では、セキュリティデバイス102の証明書検証部202が、さらに、証明書の署名の検証を行い、有効な電子署名が施された証明書であることを検証する(ステップS503)。署名検証の結果、電子署名が有効であった場合には、ステップS504へ進む。
また、電子署名が無効であった場合にはエラーとなりセキュアブート処理を完了せずに終了する。この際、セキュアブート制御部112が通知手段108にユーザへの通知を要求し、通知手段108によって、証明書の署名検証においてエラーが検出されたことがユーザに通知される(不図示)。
ステップS501、S502、S503の検証により、ソフトウェアモジュールと証明書とは対応関係にあり、かつ、その証明書の有効性が検証されることにより、ソフトウェアモジュール自体の有効性が検証される。
ステップS504では、セキュリティデバイス102の照合部203が、証明書の参照累積値と構成情報保持部212が保持する構成情報とを照合し、ソフトウェアモジュールを実行する前の状態として正しい状態(その前に実行されているソフトウェアモジュールが有効なソフトウェアモジュールであり、正しい順番で実行されている)であることが検証される。証明書の参照累積値と構成情報保持部212が保持する構成情報とが一致した場合には、ステップS505へ進む。
また、それ以外の場合には、エラーとなりセキュアブート処理を完了せずに終了する。この際、セキュアブート制御部112が通知手段108にユーザへの通知を要求し、通知手段108によって、ソフトウェアモジュールのコードイメージ及び証明書との間の整合性が取れていないことがユーザに通知される(不図示)。
ステップS505では、セキュリティデバイス102の構成情報累積部201の累積部211が、構成情報保持部212が保持する値のバイト列と証明書の参照累積値のフィールドに設定されている参照累積値のバイト列とを連結し、さらに連結したバイト列に対してハッシュ演算(例えば、SHA−1のハッシュ演算)を行い、その結果を構成情報保持部212に格納する(ステップS505)。
次に、ステップS506において、セキュアブート制御部112がソフトウェアモジュールを実行し、ステップS507へ進む。
ステップS507では、セキュアブート処理を完了したか否かを判定する。
セキュアブート処理において実行されるべき全てのソフトウェアモジュールの実行を完了した場合には、通常セキュアブート処理(ステップS402)を完了し、
セキュアブート処理を完了していないと判定した場合には、ステップS501に戻り、次に実行するソフトウェアモジュールと証明書に関してステップS501からステップS507までの処理を繰り返す。
次に、更新時セキュアブート処理(ステップS403)における端末100の動作について説明する。セキュアブート制御部112は図6に示すフローに基づいてセキュアブート処理を行なう。
更新時セキュアブート処理では、まず、セキュアブート制御部112がソフトウェアモジュールと証明書との照合を行いソフトウェアモジュールに対応する証明書が存在することを検証する(ステップS601)。具体的には、ソフトウェアモジュールのコードイメージのハッシュ演算(例えば、SHA−1などのハッシュ演算)を行い、その結果と証明書の参照計測値303とを照合する。照合の結果、参照計測値303と一致した場合には、セキュリティデバイス102に証明書の検証を要求してステップS602へ進む。
また、参照計測値303と一致しなかった場合にはエラーとなりセキュアブート処理を完了せずに終了する。この際、セキュアブート制御部112が通知手段108にユーザへの通知を要求し、通知手段108によって、ソフトウェアモジュールのコードイメージと証明書との整合性が取れていないことがユーザに通知される(不図示)。
ステップS602では、セキュリティデバイス102の証明書検証部202が、証明書のバージョンの検証を行い、証明書が古い無効化された証明書でないこと検証する(ステップS602)。具体的には、セキュリティデバイスのカウンタ部204が保持するカウンタ値と証明書の参照カウンタ値305とを比較する。カウンタ部204には、ソフトウェアモジュールの有効なバージョンの下限を示すカウンタ値が保持されており、カウンタ値の比較の結果、参照カウンタ値305が、カウンタ部204が保持するカウンタ値以上であった場合には、ステップS603へ進む。
また、それ以外の場合にはエラーとなりセキュアブート処理を完了せずに終了する。この際、セキュアブート制御部112が通知手段108にユーザへの通知を要求し、通知手段108によって、ソフトウェアモジュールのコードイメージと証明書が古いものであることがユーザに通知される(不図示)。
ステップS603では、セキュリティデバイス102の証明書検証部202が、さらに、証明書の署名の検証を行い、有効な電子署名が施された証明書であることを検証する(ステップS603)。署名検証の結果、電子署名が有効であった場合には、ステップS604へ進む。
また、電子署名が無効であった場合にはエラーとなりセキュアブート処理を完了せずに終了する。この際、セキュアブート制御部112が通知手段108にユーザへの通知を要求し、通知手段108によって、証明書の署名検証においてエラーが検出されたことがユーザに通知される(不図示)。
ステップS601、S602、S603の検証により、ソフトウェアモジュールとそれに対応する証明書との対応関係が正しいことが検証され、かつ、その証明書の有効性が検証されることにより、ソフトウェアモジュール自体の有効性が検証される。
ステップS604では、セキュリティデバイス102の照合部203が、証明書の参照累積値と構成情報保持部212が保持する構成情報とを照合し、ソフトウェアモジュールを実行する前の状態として正しい状態(その前に実行されているソフトウェアモジュールが有効なソフトウェアモジュールであり、正しい順番で実行されている)であることが検証される。
次のステップS605では、ステップS604における証明書の参照累積値と構成情報保持部212が保持する構成情報との照合に成功したか否かを判定する。
照合に成功した場合、つまり、証明書の参照累積値と構成情報保持部212が保持する構成情報とが一致し、ソフトウェアモジュールを実行する前の状態として正しい状態であることが検証された場合には、ステップS608へ進む。
また、照合に成功しなかった場合、つまり、証明書の参照累積値と構成情報保持部212が保持する構成情報とが一致しなかった場合には、ステップS607へ進み、証明書の参照累積値と代替構成情報保持部222が保持する構成情報との照合を行い、更新処理の途中の状態であることを要因とする証明書の不整合によるエラーであるか否かを検証する。
ステップS607では、セキュアブート制御部112が、証明書の参照累積値と代替構成情報保持部222が保持する構成情報とを照合し、ソフトウェアモジュールの更新処理を行う前のソフトウェア構成において、ソフトウェアモジュールを実行する前の状態として正しい状態(但し、厳密には、ソフトウェアプログラムのコードイメージと証明書との整合性が取れていない状態)であることが検証される。証明書の参照累積値と代替構成情報保持部222が保持する構成情報とが一致した場合には、ステップS608へ進む。
また、それ以外の場合には、エラーとなりセキュアブート処理を完了せずに終了する。この際、セキュアブート制御部112が通知手段108にユーザへの通知を要求し、通知手段108によって、ソフトウェアモジュールのコードイメージ及び証明書との間の整合性が取れていないことがユーザに通知される(不図示)。
ステップS608では、セキュリティデバイス102の構成情報累積部201の累積部211が、構成情報保持部212が保持する値のバイト列と証明書の参照累積値のフィールドに設定されている参照累積値のバイト列とを連結し、さらに連結したバイト列に対してハッシュ演算(例えば、SHA−1のハッシュ演算)を行い、その結果を構成情報保持部212に格納する(ステップS608)。
次に、ステップS609において、更新フラグが有効になっているソフトウェアモジュールであるか否かを判定し、更新フラグが有効になっているソフトウェアモジュールである場合、つまり、更新処理中または更新処理を完了したソフトウェアモジュールである場合には、ステップS610へ進み、それ以外の更新されていないソフトウェアモジュールである場合には、ステップS613へ進む。
ステップS613では、代替構成情報累積部103の累積部221が、代替構成情報保持部222が保持する値のバイト列と証明書の参照累積値のフィールドに設定されている参照累積値のバイト列とを連結し、さらに連結したバイト列に対してハッシュ演算を行い、その結果を代替構成情報保持部222に格納する(ステップS613)。
ステップS610では、セキュアブート制御部112が、更新前の旧証明書のバージョンの検証を行い、旧証明書が更新処理を行う前のバージョンの証明書であること検証する(ステップS610)。具体的には、セキュリティデバイスのカウンタ部204が保持するカウンタ値と証明書の参照カウンタ値305とを照合する。カウンタ部204には、ソフトウェアモジュールの有効なバージョンの下限を示すカウンタ値が保持されており、カウンタ値の照合の結果、参照カウンタ値305が、カウンタ部204が保持するカウンタ値以上であった場合には、ステップS611へ進む。
また、それ以外の場合にはエラーとなりセキュアブート処理を完了せずに終了する。この際、セキュアブート制御部112が通知手段108にユーザへの通知を要求し、通知手段108によって、証明書のバージョン検証においてエラーが検出されたことがユーザに通知される(不図示)
ステップS611では、セキュアブート制御部112が、さらに、更新前の旧証明書の署名の検証を行い、有効な電子署名が施された証明書であることを検証する(ステップS611)。署名検証の結果、電子署名が有効であった場合には、ステップS612へ進む。
また、電子署名が無効であった場合にはエラーとなりセキュアブート処理を完了せずに終了する。この際、セキュアブート制御部112が通知手段108にユーザへの通知を要求し、通知手段108によって、証明書の署名検証においてエラーが検出されたことがユーザに通知される(不図示)。
ステップS610、S611の検証により、旧証明書が更新処理を行う前のバージョンの有効な証明書であることが検証される。
次に、ステップS612では、代替構成情報累積部103の累積部221が、代替構成情報保持部222が保持する値のバイト列と旧証明書の参照累積値のフィールドに設定されている参照累積値のバイト列とを連結し、さらに連結したバイト列に対してハッシュ演算を行い、その結果を代替構成情報保持部222に格納する(ステップS612)。これにより、代替構成情報保持部222には、更新処理を行う前のソフトウェア構成での構成情報が保持されることになる。
次に、ステップS614において、セキュアブート制御部112がソフトウェアモジュールを実行し、ステップS615へ進む。このとき実行されるソフトウェアモジュールのコードイメージには、ステップS601からステップ603で検証した証明書に対応する最新のコードイメージが用いられる。
ステップS615では、セキュアブート制御部112がセキュアブート処理を完了したか否かを判定する。
セキュアブート処理において実行されるべき全てのソフトウェアモジュールの実行を完了した場合には、更新時セキュアブート処理(ステップS403)を完了し、ステップS404へ進む。
セキュアブート処理を完了していないと判定した場合には、ステップS601に戻り、次に実行するソフトウェアモジュールと証明書に関してステップS601からステップS615までの処理を繰り返す。
ステップS404では、セキュアブート制御部112が、証明書の参照累積値の照合に代替構成情報累積部を用いたか否か、つまり、ステップS607の処理をしたか否かを判定する。
ステップS607の処理をした場合には、更新処理においてソフトウェアモジュール及び証明書との間に不整合があり、更新処理が完了していないということであり、ステップS405へ進む。
ステップS405では、セキュアブート制御部112が通知手段108にユーザへの通知を要求し、通知手段108によって、ユーザに更新処理が完了していないことを通知され、セキュアブート処理を終了する。この後、自動的に更新処理を再開する。
ステップS607の処理をしなかった場合には、ソフトウェアモジュール及び証明書との間に不整合がなく更新されていることを意味し、ステップS406へ進み、セキュアブート制御部は更新フラグをリセットし、更新前の旧証明書を消去する。
次に、ステップS407では、セキュアブート制御部112が全ての証明書が更新されたか否かを判定する。具体的には、セキュアブート処理において実行される全てのソフトウェアモジュールに関して、証明書格納手段107に格納されている、それらの証明書の参照カウンタ値305が、セキュリティデバイス102のカウンタ部204に保持されているカウンタ値よりも大きな値を示すようになったか否かを判定する。
全ての証明書が更新された場合には、古い証明書への差し替えを防止するために、セキュアブート制御部112は、セキュリティデバイス102にカウンタのインクリメントを要求し、セキュリティデバイス102がカウンタ部204に保持されているカウンタ値を1インクリメントして、セキュアブート処理を終了する(ステップS408)。それ以外の場合には、そのまま、セキュアブート処理を終了する。
以上のようなセキュアブート処理を行うことにより、端末100のソフトウェアが、複数のソフトウェアモジュールから構成される場合において、ソフトウェアモジュールを古いソフトウェアモジュールにすりかえるといった不正行為を防止し、各ソフトウェアモジュールの更新処理を個別に行うことが可能となる。また、証明書の更新の際に電源断が起こり、ソフトウェアモジュールのコードイメージや証明書間に不整合が生じてしまった場合でも、古いソフトウェアモジュールを実行することなく、セキュアブート処理を完了させ、証明書の更新処理を再開することが出来る。
具体的な例として、端末100の更新前のソフトウェアが図15(a)に示すようにBIOSとOSと通信モジュールから構成され、OSが更新されて、本来、図15(b)に示すような構成に更新される場合を考える。この場合、OSのコードイメージとOS証明書が更新されるだけでなく、その参照累積値がOSのコードイメージに依存している通信モジュール証明書も更新される(この場合、通信モジュールのコードイメージは更新されない)。
この更新処理において、例えば、OSのコードイメージとOS証明書の更新処理が完了して、通信モジュール証明書の更新を完了する前に電源断等のトラブルが起こった場合、図15(c)に示すような構成になる。この状態での通信モジュール証明書の参照累積値は、図15(a)の更新前のソフトウェア構成を想定した値となっており、更新されたOSのコードイメージ(New_OS)及びOS証明書´と通信モジュール証明書との間には不整合が生じる。
しかし、端末100の場合には、図4、5、6に示したセキュアブート処理を行うことにより、セキュアブート処理を完了させ、通信モジュール証明書の更新処理を再開することが出来る。
なお、以上では、更新フラグ保持部111をブート制御手段105の内部に設けたが、セキュリティデバイス102の内部に設けるようにしても良い。セキュリティデバイス102は、耐タンパ性を備えているため、更新フラグの改ざんを防止することができ、端末100の安全性が向上する。
また、なお、ソフトウェアモジュールの証明書をセキュリティデバイスの暗復号部が保持する鍵によって暗号化して証明書格納手段に格納するようにしても良い。
また、なお、ソフトウェアモジュールのコードイメージのハッシュ演算のアルゴリズムとしてSHA256を用いるようにしてもよい。
また、なお、セキュアブート処理を開始する前に、ブート制御手段が改ざんされていないことをセキュリティデバイス102が検証するようにしてもよい。
また、なお、最新のソフトウェアモジュールのコードイメージと証明書と更新リストファイルは、端末を専用ツールに接続し、専用ツールを介して更新手段の内部の記憶領域に保持されるようにしてもよい。
また、なお、証明書に施される電子署名のアルゴリズムとして、RSA暗号または楕円曲線暗号またはHMACを使用するようにしてもよい。
また、なお、以上では、証明書の参照カウンタ値に1を加算し、セキュリティデバイスのカウンタ部が示すカウンタ値を1インクリメントするとしたが、証明書の参照カウンタ値1以外の数値Aを加算し、セキュリティデバイスのカウンタ部が示すカウンタ値を数値Aだけインクリメントするようにしてもよい。

(実施の形態2)
図7を用いて本発明の実施の形態2について説明する。
本発明の実施の形態2における端末700は、代替構成情報累積部103を必要に応じて生成し、端末700のリソースが効率的に使用されるように構成したものである。代替構成情報累積部103は、実際には、CPU101が実行するソフトウェアによって実現され、端末700上のメモリ(不図示)にソフトウェア・オブジェクトデータとして生成される。
図7は、本発明の実施の形態2における端末700のブロック構成を示している。第2の実施形態の場合には、ブート制御手段705にの中に、さらに、代替構成情報累積部103を必要に応じて生成する代替構成情報生成部713を備えている。代替構成情報累積部103は、通常時には存在せず、更新時セキュアブート処理(ステップS403)を行う際に、代替構成情報生成部713によって必要に応じて生成される。
それ以外の構成要素は、第1の実施形態における端末100の場合と同じである。
本実施の形態の場合、更新時セキュアブート処理(ステップS403)を開始する際に、代替構成情報生成部713が、セキュリティデバイス102の構成情報保持部212に保持されている値を読み出し、代替構成情報保持部222に設定することで、代替構成情報累積部103を生成する。それ以外の動作に関しては、第1の実施形態における端末100の場合と同じである。
本実施の形態の場合、代替構成情報累積部103を必要になった時にだけ、代替構成情報生成部713によって、ソフトウェア・オブジェクトデータとして生成し、それ以外の時は、端末700のメモリを占有することが無く、通常セキュアブート処理の際にはより多くのメモリを利用して処理を高速化することが出来るなど、端末700のリソースを効率的に使用することが出来る。
なお、生成される代替構成情報累積部103の代替構成情報保持部222は、耐タンパ化されたメモリ上に生成するようにしてもよい。

(実施の形態3)
本発明の実施の形態3では、更新時セキュアブート処理を行って起動した場合の端末100の動作モードを、更新時セキュアブート処理の際に行った照合処理に結果に応じて一部の機能を制限するなどの制御できるように構成したものについて説明する。
図8は、本発明の実施の形態3におけるソフトウェアモジュールの証明書800のデータ構造を示しており、機能制御の内容を規定する機能制御定義807というフィールドが追加されている以外は、実施の形態1の場合の証明書と同じである。
機能制御定義807には、機能制御の条件と機能制御の内容が、例えば、XML等の形式で記述される。
機能制御の条件としては、「更新時セキュアブート処理を行って起動した場合に常に適用」や「証明書の参照累積値の照合において代替構成情報累積部と照合を行った場合に適用」などの条件が規定される。
また、機能制御の内容としては、「更新処理の再開以外の処理が制限される緊急モード」や「外部との通信が制限される通信不可モード」、「セキュリティデバイス102を利用する暗号処理などのセキュリティサービスを利用不可とする制限モード」、「特定の外部通信(緊急電話など)のみ使用可能とする通報モード」などが規定される。
端末100の構成は、実施の形態1の場合と基本的には同じであり、更新時セキュアブート処理のステップS614において、ソフトウェアモジュールのコードイメージを実行する際に、ブート制御手段が各証明書800の機能制御定義807が規定する内容に基づいて各ソフトウェアモジュールの内部パラメータを設定して機能制御を行う。それ以外の動作は、実施の形態1の場合と同じである。
本実施の形態の場合、例えば、機能制御の条件として「証明書の参照累積値の照合において代替構成情報累積部と照合を行った場合に適用」という条件を、機能制御の内容として「更新処理の再開以外の処理が制限される緊急モード」という制御内容を、それぞれ定義することにより、更新処理が完了していない状態でセキュアブート処理が行われた場合、ブート処理の後、更新処理の再開以外の処理が制限されるため、更新処理が優先的に実行され、より高い確度で更新処理を完了させることが出来る。また、機能制御として、「通信不可モード」や「制限モード」といったモードを定義することで、更新処理が完了していない状態でセキュアブート処理が行われた場合に、端末の機能を制限するような動作モードを設ける。これにより安全性の低下した状態の端末のソフトウェアの更新を促し、システム全体としてのリスクを低減させることが出来る。

(実施の形態4)
実施の形態1では、更新処理の際、旧証明書を消去せずに保持しておく必要があったが、
本発明の実施の形態4では、それを不要とするように構成したものについて説明する。
図9は、本発明の実施の形態4におけるソフトウェアモジュールの証明書900のデータ構造を示している。図9に示すデータ構造は、更新前のソフトウェアモジュールのコードイメージのハッシュ値を示す旧参照計測値907というフィールドが追加されている以外は、実施の形態1の場合の証明書と同じである。
旧参照計測値907には、ソフトウェアモジュールを更新する前に、ソフトウェアモジュール格納手段106に格納されていたソフトウェアモジュールのコードイメージのハッシュ演算の結果が設定される。これは、証明書を更新する前に、証明書格納手段107に格納されていた証明書の参照計測値303に設定されている値と同じである。
端末100の構成は、実施の形態1の場合と基本的には同じであり、また、次に示す3つの相違点以外は、動作に関しても実施の形態1の場合と同じである。
動作における1つ目の相違点は、実施の形態4の場合、更新処理のステップS1202において旧証明書を保持せずに消去する点である。
2つ目の相違点は、実施の形態4の場合、図10に示すように、更新時セキュアブート処理のステップS609において、更新フラグが有効になっているソフトウェアモジュールである場合(つまり、更新処理中または更新処理を完了したソフトウェアモジュールである場合)には、ステップS1012へ進み、代替構成情報累積部103の累積部221が、代替構成情報保持部222が保持する値のバイト列と証明書の旧参照累積値907のフィールドに設定されている旧参照累積値のバイト列とを連結し、さらに連結したバイト列に対してハッシュ演算を行い、その結果を代替構成情報保持部222に格納する(ステップS1012)点である。
3つ目の相違点は、実施の形態4の場合、セキュアブート処理のステップS406の処理において、更新フラグのリセットのみを行う点である。
本実施の形態の場合、旧証明書を保持しておくために必要であったメモリが不要となり、携帯電話等のリソースに制限がある端末においても適用することが容易になる。

(実施の形態5)
図11、13を用いて本発明の実施の形態5について説明する。
本発明の実施の形態5における端末1100は、更新処理を開始する前に、入手した最新のソフトウェアモジュールのコードイメージと証明書、さらには、更新対象ではない証明書との整合性を検証することで、誤って整合性がない構成に更新されてしまうことを防止し、ソフトウェアモジュールのコードイメージ及び証明書との間に不整合がないソフトウェア構成に更新されるように構成したものである。
図11は、本発明の実施の形態5における端末1100のブロック構成を示している。第5の実施形態の場合には、更新手段1104の中に、さらに、最新のソフトウェアモジュールのコードイメージと証明書と更新対象ではない証明書との整合性を検証するサイレントブート部1121を備えている。それ以外の構成要素は、第1の実施形態における端末100の場合と同じである。
本実施の形態の場合、更新処理を開始する前に、サイレントブート部1121が図13に示す処理フローに基づいてサイレントブート処理を行い、サイレントブート処理においてエラーが検出されなかった場合に、更新処理を開始する。それ以外の動作に関しては、第1の実施形態における端末100の場合と同じである。
サイレントブート処理は、具体的には、最新のソフトウェアモジュールのコードイメージと証明書とをダウンロードした直後等のタイミングでおこなわれるとする。ただし、端末処理負荷が低いタイミングで行うなどとしてもよく、このタイミングに限定するものではない。
サイレントブート処理では、まず、サイレントブート部1121がソフトウェアモジュールと証明書との照合を行いソフトウェアモジュールに対応する証明書が存在することを検証する(ステップS1301)。具体的には、ソフトウェアモジュールのコードイメージのハッシュ演算(例えば、SHA−1などのハッシュ演算)を行い、その結果と証明書の参照計測値303とを照合する。照合の結果、参照計測値303と一致した場合には、セキュリティデバイス102に証明書の検証を要求してステップS1302へ進み、一致しなかった場合にはエラーとなりサイレントブート処理を完了せずに終了する。
ステップS1302では、セキュリティデバイス102の証明書検証部202が、証明書のバージョンの検証を行い、証明書が古い無効化された証明書でないこと検証する(ステップS1302)。具体的には、セキュリティデバイスのカウンタ部204が保持するカウンタ値と証明書の参照カウンタ値305とを比較する。カウンタ部204には、ソフトウェアモジュールの有効なバージョンの下限を示すカウンタ値が保持されており、カウンタ値の比較の結果、参照カウンタ値305が、カウンタ部204が保持するカウンタ値以上であった場合には、ステップS1303へ進み、それ以外の場合にはエラーとなりサイレントブート処理を完了せずに終了する。
ステップS1303では、セキュリティデバイス102の証明書検証部202が、さらに、証明書の署名の検証を行い、有効な電子署名が施された証明書であることを検証する(ステップS1303)。署名検証の結果、電子署名が有効であった場合には、ステップS1304へ進み、無効であった場合にはエラーとなりサイレントブート処理を完了せずに終了する。
ステップS1301、S1302、S1303の検証により、ソフトウェアモジュールと証明書とは対応関係にあり、かつ、その証明書の有効であることが検証されることにより、ソフトウェアモジュール自体の有効であることが検証される。
ステップS1304では、サイレントブート部1121が、証明書の参照累積値と代替構成情報保持部222が保持する構成情報とを照合し、ソフトウェアモジュールを実行する前の状態として正しい状態(その前に実行されているソフトウェアモジュールが有効なソフトウェアモジュールであり、正しい順番で実行されている)であることが検証される。証明書の参照累積値と代替構成情報保持部222が保持する構成情報とが一致した場合には、ステップS1305へ進み、それ以外の場合には、エラーとなりサイレントブート部1121を完了せずに終了する。
ステップS1305では、サイレントブート部1121が、代替構成情報保持部222が保持する値のバイト列と証明書の参照累積値のフィールドに設定されている参照累積値のバイト列とを連結し、さらに連結したバイト列に対してハッシュ演算(例えば、SHA−1のハッシュ演算)を行い、その結果を代替構成情報保持部222に格納する(ステップS1305)。
サイレントブート処理では、実際にソフトウェアモジュールのコードイメージを実行することはせず、次に、ステップS1306において、サイレントブート処理を完了したか否かを判定する。
サイレントブート処理において実行されるべき全てのソフトウェアモジュールの実行を完了した場合には、サイレントブート処理を完了し、セキュアブート処理を完了していないと判定した場合には、ステップS1301に戻り、次に実行されるべきソフトウェアモジュールと証明書に関してステップS1301からステップS507までの処理を繰り返す。
サイレントブート処理においてエラーが検出されなかった場合に、更新手段1104が更新処理を開始する。
本実施の形態の場合、更新処理を開始する前に、入手したソフトウェアモジュールのコードイメージと証明書と更新対象ではない証明書との整合性を検証する。これにより、誤って整合性がない構成に更新されてしまうことを防止し、確実にソフトウェアモジュールのコードイメージ及び証明書との間に不整合がないソフトウェア構成に更新することが出来る。

(実施の形態6)
本発明の実施の形態6では、古いソフトウェアモジュールが実行されることを、より確実に防止し、端末100のソフトウェア構成が常に最新のソフトウェア構成となるように構成したものについて説明する。
図14は、本発明の実施の形態6におけるセキュアブート処理のフローを示しており、この図14のセキュアブート処理を行うことにより、古いソフトウェアモジュールが実行されることを防止することが出来る。
端末100の構成は、実施の形態1の場合と基本的には同じであり、ステップS406の後の処理以外は、動作に関しても実施の形態1の場合と同じである。
本発明の実施の形態6におけるセキュアブート処理では、ステップS401からステップS406に関しては実施の形態1と同じ動作を行う。
ステップS406の後、つまり、更新時セキュアブート処理においてソフトウェアモジュール及び証明書との間に不整合がなく、ステップS406において、更新フラグをリセットし、更新前の旧証明書を消去した後、処理はステップS1407へ進む。ステップS1407では、証明書格納手段107に格納されている証明書の内、セキュリティデバイス102のカウンタ部204が示す値と参照カウンタ値が同じ証明書(つまり、更新されていない証明書)に関して、証明書格納手段に格納されている既存の証明書を用いて更新する。この時、セキュアブート制御部112は、更新手段104に証明書の更新処理を要求する。また、更新手段104がセキュアブート制御部112からの要求に基づきセキュリティデバイス102に命令を送信する。セキュリティデバイス102は、証明書の参照カウンタ値305にセキュリティデバイス102のカウンタ部204に保持されているカウンタ値に1を加算した値を設定し、セキュリティデバイス102の暗復号部205に保持されている暗号鍵によって署名を生成して、電子署名307のフィールドに設定する。なお、証明書の更新は、証明書格納手段に格納されている証明書を用いて行われるので、実質的には、この処理によって、証明書の参照カウンタ値305と電子署名307のフィールドのみが更新され、その他のフィールドの値は変わらない。
次に、ステップS1408において、更新手段104がセキュリティデバイス102のカウンタ部に保持されているカウンタ値のインクリメントを要求し、セキュリティデバイス102がカウンタ部に保持されているカウンタ値を1インクリメントして更新処理を終了する。
ステップS1407、ステップS1408の処理により、すべての証明書の参照カウンタ値305とセキュリティデバイス102のカウンタ部に保持されているカウンタ値とが常に同じ値に設定されることになる。
本実施の形態の図4、5、6の処理フローに基づくセキュアブート処理では、すべてのソフトウェアモジュールに関して、コードイメージを実行する前に、証明書のバージョンの検証が行われる。また、証明書のバージョンの検証では、証明書の参照カウンタ値305が、カウンタ部204が保持するカウンタ値以上であることが検証され、証明書の参照カウンタ値305が、カウンタ部204が保持するカウンタ値よりも小さい場合には、そのソフトウェアモジュールのコードイメージは実行されない。
したがって、本実施の形態では、古いソフトウェアモジュールが実行されることが確実に防止され、端末100のソフトウェア構成が常に最新のソフトウェア構成となる。

(実施の形態7)
本発明の実施の形態7では、上述してきた実施の形態1から実施の形態6をTrusted Computing Group(TCG)で規定している仕様に基づいて実現してもよい。
この場合、セキュリティデバイス102は、TCGで規定しているTPMモジュールまたはMTMモジュールであり(以降のTPMとは、TPMあるいはMTMを意味するものとする)、構成情報保持部201は、TPMが備えるPCRであり、カウンタ部は、TPMが備えるMonotonic Counterであり、累積部211は、証明書検証部202、照合部203は、TPMコマンド処理を含んだTCG機能を実現する部であり、証明書300、800、900は、External RIM_Cert、もしくはInternal RIM_Certであり、代替構成情報保持部103は、TPM内のPCRの機能を仮想的に実現するためのもの(ここでは代替PCRと呼ぶ)であり、累積部221は、代替PCRを利用してTCGのExtend処理をする部である。これによって、TCG仕様に基づいて安全にソフトウェアの更新が可能となる。

(その他変形例)
なお、本発明を上記実施の形態に基づいて説明してきたが、本発明は、上記の実施の形態に限定されないのはもちろんである。以下のような場合も本発明に含まれる。
(1)上記の各装置は、具体的には、マイクロプロセッサ、ROM、RAM、ハードディスクユニット、ディスプレイユニット、キーボード、マウスなどから構成されるコンピュータシステムである。前記RAMまたはハードディスクユニットには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムにしたがって動作することにより、各装置は、その機能を達成する。ここでコンピュータプログラムは、所定の機能を達成するために、コンピュータに対する指令を示す命令コードが複数個組み合わされて構成されたものである。なお、各装置は、マイクロプロセッサ、ROM、RAM、ハードディスクユニット、ディスプレイユニット、キーボード、マウスなどの全てを含むコンピュータシステムには限らず、これらの一部から構成されているコンピュータシステムであってもよい。
(2)上記の各装置を構成する構成要素の一部または全部は、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に置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。バイオ技術の適用等が可能性としてありえる。
(3)上記の各装置を構成する構成要素の一部または全部は、各装置に脱着可能なICカードまたは単体のモジュールから構成されているとしてもよい。前記ICカードまたは前記モジュールは、マイクロプロセッサ、ROM、RAMなどから構成されるコンピュータシステムである。前記ICカードまたは前記モジュールは、上記の超多機能LSIを含むとしてもよい。マイクロプロセッサが、コンピュータプログラムにしたがって動作することにより、前記ICカードまたは前記モジュールは、その機能を達成する。このICカードまたはこのモジュールは、耐タンパ性を有するとしてもよい。
(4)本発明は、上記に示す方法であるとしてもよい。また、これらの方法をコンピュータにより実現するコンピュータプログラムであるとしてもよいし、前記コンピュータプログラムからなるデジタル信号であるとしてもよい。
また、本発明は、前記コンピュータプログラムまたは前記デジタル信号をコンピュータ読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、CD−ROM、MO、DVD、DVD−ROM、DVD−RAM、BD(Blu−ray Disc)、半導体メモリなどに記録したものとしてもよい。また、これらの記録媒体に記録されている前記デジタル信号であるとしてもよい。
また、本発明は、前記コンピュータプログラムまたは前記デジタル信号を、電気通信回線、無線または有線通信回線、インターネットを代表とするネットワーク、データ放送等を経由して伝送するものとしてもよい。
また、本発明は、マイクロプロセッサとメモリを備えたコンピュータシステムであって、前記メモリは、上記コンピュータプログラムを記憶しており、前記マイクロプロセッサは、前記コンピュータプログラムにしたがって動作するとしてもよい。
また、前記プログラムまたは前記デジタル信号を前記記録媒体に記録して移送することにより、または前記プログラムまたは前記デジタル信号を前記ネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしてもよい。
(5)セキュリティデバイスは、耐タンパソフトウェアまたはソフトウェアと及びハードウェアにより実施されるよしてもよい。
(6)CPUは特別な動作モード(セキュアモードなど)を備え、CPUによって実行されるソフトウェアはその特別な動作モード(セキュアモードなど)で動作することで安全に実行されるとしてもよい。
(7)上記実施の形態及び上記変形例をそれぞれ組み合わせるとしてもよい。
本発明は、パーソナルコンピュータや携帯電話、オーディオプレーヤ、テレビ受像機、ビデオレコーダなど、プログラムデータの更新を行う情報通信機器や家電機器に広く利用することができる。
本発明の端末に搭載されるセキュリティモジュールをそれらの機器に搭載し、本発明の端末と同様の構成にすることによって、機器のソフトウェアが複数のソフトウェアモジュールから構成される場合において、古いソフトウェアモジュールにすりかえるといった不正行為を防止し、各ソフトウェアモジュールの更新処理を個別に行うことが可能となる。
また、証明書の更新の際に電源断が起こり、ソフトウェアモジュールのコードイメージや証明書間に不整合が生じてしまった場合でも、ブート処理時に構成情報累積部と代替仮想構成情報累積部の両方を参照して検証をすることで、古いソフトウェアモジュールを実行することなく、セキュアブート処理を完了させ、証明書の更新処理を再開することが出来る。
本発明は、パーソナルコンピュータや携帯電話などの情報通信機器、インターネットアクセス機能を備えたテレビ受信装置などの情報家電機器等の端末と、その端末に内蔵されるセキュリティモジュールに関するものである。特に、端末のソフトウェアが複数のソフトウェアモジュールから構成され、それらのソフトウェアモジュールが更新可能な場合において、不正な動作をするモジュールにすり替えたり、不正にソフトウェアを古いバージョンに戻したりするといった不正行為を防止し、安定して確実に正しいソフトウェア構成で起動することを可能にするものである。
近年、ネットワークを介して提供されるサービスは、音楽や映像といった著作物の提供や、企業が保有する機密情報の閲覧、オンラインバンキングなど多岐に渡り、かつ、その中で扱われる情報の価値も高価なものになってきている。多岐に渡るサービスに対応するため、パーソナルコンピュータ、携帯端末、携帯電話、デジタル家電などの端末には、複数のソフトウェアモジュールがインストールされている。例えば、BIOS(Basic Input/Output System)やOS(Operating System)、TCP/IP(Transmission Control Protocol/Internet Protocol)等の通信プロトコルで外部との通信を可能とする通信モジュール、さらにはアプリケーションなどがそれである。
これらは、正規のソフトウェアモジュールが定められた順番で起動される必要があり、端末にはソフトウェアモジュールの改ざん等の不正行為を防止する仕組みが組み込まれている。例えば、各ソフトウェアモジュールに対して提供者が証明書を発行し、各ソフトウェアモジュールの起動時に、その証明書を用いてソフトウェアモジュールの完全性を検証するといった仕組もその一つである。この仕組は、ソフトウェアモジュールをモジュール単位で更新する場合にも有効であり、ソフトウェアモジュールの提供者が新しいソフトウェアモジュールと共に、その新しいソフトウェアモジュールの証明書を提供することにより、新しいソフトウェアモジュールの完全性を検証することが可能となる。
上記の証明書を用いて不正行為を防止する仕組みと同様の技術は、例えば特許文献1において公開されている。
また、セキュアなコンピュータプラットフォームを開発、普及させることを目的として、Trusted Computing Group(TCG)が設立されている。TCGでは、Trusted Platform Module(TPM)と呼ばれるセキュリティコアモジュールを利用し、安全な端末環境を実現している(非特許文献1〜5参照)。
US2005/0021968
TPM Main,Part1 Design Principles,Specification version 1.2 Level2 Rivision103(9 July 2007) TPM Main,Part2 TPM Structures,Specification verion1.2 Level2 Rivision103(9 July 2007) TPM Main Part3 Commands,Specification verion 1.2 Level2 Rivision103(9 July 2007) TCG Mobile Trusted Module Specification version 1.0 Revision 1(12 June 2007) TCG Mobile Reference Architecture Specification version1.0 Revision1(12 June 2007)
しかし、図17に示すように、従来提案されている技術では、端末のソフトウェアが、複数のソフトウェアモジュールから構成される場合に課題がある。
図17において、本来は、それぞれのモジュールにおいて検証と起動とを行ない、BIOSの検証、BIOSの起動、OSの検証、OSの起動、通信モジュールの検証、通信モジュールの起動といった図17に示す番号の順番で検証と起動を行うことでブート処理が行なわれる。
しかし、OSが何らかの問題がある古いOSと古い証明書にすり替えられてしまった場合、OSの証明書は古いというだけで証明書に施されている署名等は正しいものであるため、問題がある古いモジュールであることが検出されず、その後の通信モジュールも起動されて、正常にブート処理を完了してしまう。
また、ソフトウェアモジュールの更新では、ソフトウェアモジュールのコードイメージと、それに対応する証明書の両方を更新する必要があるため、証明書の更新を完了し、コードイメージの更新を完了する前に電源断等が起こった場合に課題がある。更新された証明書と更新されなかったコードイメージとは整合性が取れていないため検証がエラーとなり、端末はブート処理を正しく完了できす、起動できない状態となってしまう。
本発明は、こうした従来の問題点を解決するものであり、端末のソフトウェアが、複数のソフトウェアモジュールから構成される場合における古いモジュールにすりかえるといった不正行為を防止し、各モジュールの更新処理を個別に行うことが可能であり、さらに、更新処理の途中で電源断等が起こっても、安定して確実にブート処理が行なえる端末と、その端末に内蔵されるセキュリティモジュールを提供することを目的としている。
上記課題を解決するために、本発明の一実施態様であるセキュアブート端末は、複数のソフトウェアモジュールを予め定められた順番で起動するセキュアブート端末であって、前記複数のソフトウェアモジュールそれぞれについて、当該ソフトウェアモジュールから要約値として算出されるべき目標要約値と、当該ソフトウェアモジュールより先に起動される他のソフトウェアモジュールそれぞれの目標要約値を累積演算した場合に得られるべき目標累積値とを含むデジタル証明書を格納している第1格納手段と、起動の順番に達したソフトウェアモジュールについて、当該ソフトウェアモジュールより先に起動される他のソフトウェアモジュールそれぞれの要約値を累積演算した実累積値と、当該ソフトウェアモジュールに対応するデジタル証明書に含まれる目標累積値とを比較して、当該ソフトウェアモジュールより先に起動されるソフトウェアモジュールの有効性を検証する検証手段と、前記複数のソフトウェアモジュールのうち1つのソフトウェアモジュール、及び前記1つのソフトウェアモジュールに係るデジタル証明書を更新する更新手段と、前記他のソフトウェアモジュールそれぞれについて、デジタル証明書が更新されている場合は更新前のデジタル証明書に含まれる目標要約値を累積演算し、更新されていない場合は当該デジタル証明書に含まれる目標要約値を累積演算した代替累積値を格納する第2格納手段と、(a)前記検証手段による有効性の検証が成功した場合、前記起動の順番に達したソフトウェアモジュールを起動し、(b)前記検証手段による有効性の検証が失敗した場合、前記代替累積値と前記起動の順番に達したソフトウェアモジュールに係るデジタル証明書に含まれる目標累積値とを比較し、前記目標累積値と前記代替累積値が一致すれば、前記起動の順番に達したソフトウェアモジュールを起動するブート制御手段とを備える。
本発明の一実施態様であるセキュアブート端末は、上述の構成を備えることにより、デジタル証明書やソフトウェアモジュールの更新の際に電源断が起こるなどによって、ソフトウェアモジュールのコードイメージやデジタル証明書間に不整合が生じてしまった場合でも、古いソフトウェアモジュールを実行して累積値を計算することなく前記代替累積値を用いて整合性を確保しブート処理を完了させることが出来る。
本発明の実施の形態1に係る端末の構成を示すブロック図 図2(a)は、本発明の実施の形態1に係る端末のセキュリティデバイスの構成を示すブロック図、図2(b)は、本発明の実施の形態1に係る端末の代替構成情報累積部の構成を示すブロック図 本発明の実施の形態1におけるソフトウェアモジュールの証明書のデータ構造を示す図 本発明の実施の形態1または実施の形態2におけるセキュアブート処理のフロー図 本発明の実施の形態1または実施の形態2における通常セキュアブート処理のフロー図 本発明の実施の形態1または実施の形態2における更新時セキュアブート処理のフロー図 本発明の実施の形態2に係る端末の構成を示すブロック図 本発明の実施の形態3におけるソフトウェアモジュールの証明書のデータ構造を示す図 本発明の実施の形態4におけるソフトウェアモジュールの証明書のデータ構造を示す図 本発明の実施の形態4における更新時セキュアブート処理のフロー図 本発明の実施の形態5に係る端末の構成を示すブロック図 本発明の実施の形態1、2、3、4、5における更新処理のフロー図 本発明の実施の形態5におけるサイレントブート処理のフロー図 本発明の実施の形態6における更新処理のフロー図 図15(a)は、端末の更新前のプログラムモジュールの証明書の構成の一例を示す図、図15(b)は、端末のソフトウェアモジュールの更新を完了した場合のプログラムモジュールと証明書の構成の一例を示す図、図15(c)は、端末のソフトウェアモジュールの更新の途中の状態にけるプログラムモジュールと証明書の構成の一例を示す図 本発明の実施の形態1、2、3、4、5、6におけるブート制御手段の内部に保持されるデータの一例を示す模式図 従来技術に基づくブート処理の一例を説明する図
本発明の一実施態様であるセキュアブート端末は、複数のソフトウェアモジュールを予め定められた順番で起動するセキュアブート端末であって、前記複数のソフトウェアモジュールそれぞれについて、当該ソフトウェアモジュールから要約値として算出されるべき目標要約値と、当該ソフトウェアモジュールより先に起動される他のソフトウェアモジュールそれぞれの目標要約値を累積演算した場合に得られるべき目標累積値とを含むデジタル証明書を格納している第1格納手段と、起動の順番に達したソフトウェアモジュールについて、当該ソフトウェアモジュールより先に起動される他のソフトウェアモジュールそれぞれの要約値を累積演算した実累積値と、当該ソフトウェアモジュールに対応するデジタル証明書に含まれる目標累積値とを比較して、当該ソフトウェアモジュールより先に起動されるソフトウェアモジュールの有効性を検証する検証手段と、前記複数のソフトウェアモジュールのうち1つのソフトウェアモジュール、及び前記1つのソフトウェアモジュールに係るデジタル証明書を更新する更新手段と、前記他のソフトウェアモジュールそれぞれについて、デジタル証明書が更新されている場合は更新前のデジタル証明書に含まれる目標要約値を累積演算し、更新されていない場合は当該デジタル証明書に含まれる目標要約値を累積演算した代替累積値を格納する第2格納手段と、(a)前記検証手段による有効性の検証が成功した場合、前記起動の順番に達したソフトウェアモジュールを起動し、(b)前記検証手段による有効性の検証が失敗した場合、前記代替累積値と前記起動の順番に達したソフトウェアモジュールに係るデジタル証明書に含まれる目標累積値とを比較し、前記目標累積値と前記代替累積値が一致すれば、前記起動の順番に達したソフトウェアモジュールを起動するブート制御手段とを備える。
前記更新手段は、更に、全ソフトウェアモジュールが起動した後に、前記検証手段による検証に失敗したソフトウェアモジュールについて、当該ソフトウェアモジュールに対応するデジタル証明書を更新する。
この構成によれば、デジタル証明書やソフトウェアモジュールの更新の際に電源断が起こるなどによって、ソフトウェアモジュールのコードイメージや証明書間に不整合が生じてしまった場合でも、ブート処理を完了させその後に、デジタル証明書、ソフトウェアモジュールの更新処理を再開することが出来る。
また、前記セキュアブート端末は、更に、前記他のソフトウェアモジュールそれぞれについて更新があったか否かを判定する更新判定手段と、更新があったソフトウェアモジュールについては、当該ソフトウェアモジュールに係る更新前のデジタル証明書に含まれる目標要約値を累積演算し、更新がなかったソフトウェアモジュールについては、当該ソフトウェアモジュールに係るデジタル証明書に含まれる目標要約値を累積演算して前記代替累積値を算出し、前記第2格納手段に記録する代替累積手段とを備えることとしてもよい。
この構成によれば、各ソフトウェアモジュールが改ざん、不完全な更新等がない場合における実累積値と一致する代替累積値を演算でき、この代替累積値を用いブート処理を中断させず完了することができる。
また、前記代替累積手段は、更に、前記更新があったソフトウェアモジュールについては、前記ソフトウェアモジュールから算出される要約値が、前記ソフトウェアモジュールに係るデジタル証明書に含まれる目標要約値と一致するか否かを確認し、一致する場合に、前記更新前のデジタル証明書に含まれる目標要約値を累積演算することとしてもよい。
この構成によれば、起動の順番に達したソフトウェアモジュールについて、当該ソフトウェアモジュールより先に起動される他のソフトウェアモジュールそれぞれに改ざんがなく、かつ、更新の完了を確認した上で当該ソフトウェアモジュールを起動することができ、より安全性を高めることができる。
また、前記代替累積手段は、前記代替累積値を暗号化して前記第2格納手段に格納することとしてもよい。
この構成によれば、代替累積値が暴露されるのを防ぐことができる。
また、前記セキュアブート端末は、更に、前記検証手段による有効性の検証が失敗したソフトウェアモジュールが前記ブート制御手段によって起動された場合、当該ソフトウェアモジュールに対応するデジタル証明書の更新が必要である旨を通知する通知手段を備えることとしてもよい。
この構成によれば、ユーザに対して証明書の更新が必要であることを明示的に通知し、更新処理の実行をユーザに促すことで、更新処理を完了させることが出来る確度を上げることができる。
また、前記デジタル証明書は、対応するソフトウェアモジュールについて、前記検証手段による検証が失敗した場合に制限すべき機能を示す制限情報を含み、前記ブート制御手段は、前記検証手段による検証が失敗したソフトウェアモジュールを起動する場合、前記制限情報により示される機能を制限した状態で前記ソフトウェアモジュールを起動することとしてもよい。
この構成によれば、更新処理が正常終了していない状態でブート処理が行われた場合、ブート処理の後に実行できる処理を制限するので、更新処理が未完了なソフトウェアモジュールによって不当な機能が実行させる危険性を回避することができる。
例えば、制限情報に「検証手段による検証が失敗した場合に、更新処理の再開以外の処理を制限する」という内容を規定した場合、更新処理が正常終了していない状態でブート処理が行われると、ブート処理の後、更新処理の再開以外の処理が制限されるため、更新処理が優先的に実行され、より高い確度で更新処理を完了させるとともに、更新処理以外の処理が行われるのを防ぐことができる。
また、前記セキュアブート端末は、更に、前記複数のソフトウェアモジュールのそれぞれについて、前記ソフトウェアモジュールを示す情報と、前記ソフトウェアモジュールに係る現在のデジタル証明書を示す情報と、前記ソフトウェアモジュールに係る更新前のデジタル証明書を示す情報とを格納する領域を持つ複数の構造体、及び、前記複数の構造体のうち1つの構造体を使用中の現構造体として指し示す現構造体ポインタを記憶する構造体格納手段を備え、前記更新手段は、前記1つのソフトウェアモジュールの更新版及び前記1つのソフトウェアモジュールに係るデジタル証明書の更新版を取得する取得部と、前記1つのソフトウェアモジュールに対応する構造体のうち、現構造体ポインタによって示されていない構造体である更新用構造体について、(a)前記更新用構造体の前記ソフトウェアモジュールを示す情報として、前記1つのソフトウェアモジュールの更新版を示す情報を格納し、(b)前記更新用構造体の前記現在のデジタル証明書を示す情報として、前記1つのソフトウェアモジュールに係るデジタル証明書の更新版を示す情報を格納し、(c)前記更新用構造体中の前記更新前のデジタル証明書を示す情報として、前記現構造体ポインタの示す構造体の前記現在のデジタル証明書を示す情報を格納する構造体更新部と、前記現構造体ポインタを、前記更新用構造体を示すように更新するポインタ変更部とを備えることとしてもよい。
この構成によれば、ソフトウェアモジュール、又はデジタル証明書の格納場所を構造体で一括管理し、更新を要するソフトウェアモジュール、又はデジタル証明書について更新が完了してから、現構造体ポインタをソフトウェアモジュールの更新版、又はデジタル証明書の更新版の格納場所を管理する構造体に切り替える。実行するソフトウェアモジュール、使用するデジタル証明書を一括変更するので、これらを個別に変更する場合に生じるような変更処理間のタイムラグが無くなり、安全確実に更新後のソフトウェアモジュール、又はデジタル証明書を使用することができる。
また、前記セキュアブート端末は、更に、前記複数のソフトウェアモジュールのうち1つのソフトウェアモジュールについてデジタル証明書の更新版を取得する取得手段と、前記1つのソフトウェアモジュールより起動の順番が前の他のソフトウェアモジュールそれぞれに対応する目標要約値を累積演算して事前累積値を生成する事前累積値生成手段と、前記事前累積値と、前記デジタル証明書の更新版に含まれる目標累積値とを比較して、前記1つのソフトウェアモジュールよりも起動の順番が前のソフトウェアモジュールの有効性を検証する事前検証手段とを備え、前記更新手段は、更に、前記事前検証手段による検証に成功した場合に、前記デジタル証明書の更新版で、前記1つのソフトウェアモジュールに係るデジタル証明書を更新することとしてもよい。
この構成によれば、更新処理を開始する前に、入手したソフトウェアモジュールのコードイメージと証明書と更新対象ではない証明書との整合性を検証するので、誤って整合性がない構成に更新されてしまうことを防止し、確実にソフトウェアモジュールのコードイメージと証明書との間に不整合がないソフトウェア構成へと更新することが出来る。
本発明の一実施態様であるセキュアブート方法は、複数のソフトウェアモジュールを予め定められた順番で起動するセキュアブート端末に用いられるセキュアブート方法であって、前記複数のソフトウェアモジュールそれぞれについて、当該ソフトウェアモジュールから要約値として算出されるべき目標要約値と、当該ソフトウェアモジュールより先に起動される他のソフトウェアモジュールそれぞれの目標要約値を累積演算した場合に得られるべき目標累積値とを含むデジタル証明書を格納する第1格納ステップと、起動の順番に達したソフトウェアモジュールについて、当該ソフトウェアモジュールより先に起動される他のソフトウェアモジュールそれぞれの要約値を累積演算した実累積値と、当該ソフトウェアモジュールに対応するデジタル証明書に含まれる目標累積値とを比較して、当該ソフトウェアモジュールより先に起動されるソフトウェアモジュールの有効性を検証する検証ステップと、前記複数のソフトウェアモジュールのうち1つのソフトウェアモジュール、及び前記1つのソフトウェアモジュールに係るデジタル証明書を更新する更新ステップと、前記他のソフトウェアモジュールそれぞれについて、デジタル証明書が更新されている場合は更新前のデジタル証明書に含まれる目標要約値を累積演算し、更新されていない場合は当該デジタル証明書に含まれる目標要約値を累積演算した代替累積値を格納する第2格納ステップと、(a)前記検証手段による有効性の検証が成功した場合、前記起動の順番に達したソフトウェアモジュールを起動し、(b)前記検証手段による有効性の検証が失敗した場合、前記代替累積値と前記起動の順番に達したソフトウェアモジュールに係るデジタル証明書に含まれる目標累積値とを比較し、前記目標累積値と前記代替累積値が一致すれば、前記起動の順番に達したソフトウェアモジュールを起動するブート制御ステップとを含む。
本発明の一実施態様であるセキュアブートプログラムは、複数のソフトウェアモジュールを予め定められた順番で起動するセキュアブート端末に用いられるセキュアブートプログラムであって、前記複数のソフトウェアモジュールそれぞれについて、当該ソフトウェアモジュールから要約値として算出されるべき目標要約値と、当該ソフトウェアモジュールより先に起動される他のソフトウェアモジュールそれぞれの目標要約値を累積演算した場合に得られるべき目標累積値とを含むデジタル証明書を格納する第1格納ステップと、起動の順番に達したソフトウェアモジュールについて、当該ソフトウェアモジュールより先に起動される他のソフトウェアモジュールそれぞれの要約値を累積演算した実累積値と、当該ソフトウェアモジュールに対応するデジタル証明書に含まれる目標累積値とを比較して、当該ソフトウェアモジュールより先に起動されるソフトウェアモジュールの有効性を検証する検証ステップと、前記複数のソフトウェアモジュールのうち1つのソフトウェアモジュール、及び前記1つのソフトウェアモジュールに係るデジタル証明書を更新する更新ステップと、前記他のソフトウェアモジュールそれぞれについて、デジタル証明書が更新されている場合は更新前のデジタル証明書に含まれる目標要約値を累積演算し、更新されていない場合は当該デジタル証明書に含まれる目標要約値を累積演算した代替累積値を格納する第2格納ステップと、(a)前記検証手段による有効性の検証が成功した場合、前記起動の順番に達したソフトウェアモジュールを起動し、(b)前記検証手段による有効性の検証が失敗した場合、前記代替累積値と前記起動の順番に達したソフトウェアモジュールに係るデジタル証明書に含まれる目標累積値とを比較し、前記目標累積値と前記代替累積値が一致すれば、前記起動の順番に達したソフトウェアモジュールを起動するブート制御ステップとを含む。
本発明の一実施態様である記録媒体は、複数のソフトウェアモジュールを予め定められた順番で起動するセキュアブート端末に用いられるセキュアブートプログラムを記録する記録媒体であって、前記セキュアブートプログラムは、前記複数のソフトウェアモジュールそれぞれについて、当該ソフトウェアモジュールから要約値として算出されるべき目標要約値と、当該ソフトウェアモジュールより先に起動される他のソフトウェアモジュールそれぞれの目標要約値を累積演算した場合に得られるべき目標累積値とを含むデジタル証明書を格納する第1格納ステップと、起動の順番に達したソフトウェアモジュールについて、当該ソフトウェアモジュールより先に起動される他のソフトウェアモジュールそれぞれの要約値を累積演算した実累積値と、当該ソフトウェアモジュールに対応するデジタル証明書に含まれる目標累積値とを比較して、当該ソフトウェアモジュールより先に起動されるソフトウェアモジュールの有効性を検証する検証ステップと、前記複数のソフトウェアモジュールのうち1つのソフトウェアモジュール、及び前記1つのソフトウェアモジュールに係るデジタル証明書を更新する更新ステップと、前記他のソフトウェアモジュールそれぞれについて、デジタル証明書が更新されている場合は更新前のデジタル証明書に含まれる目標要約値を累積演算し、更新されていない場合は当該デジタル証明書に含まれる目標要約値を累積演算した代替累積値を格納する第2格納ステップと、(a)前記検証手段による有効性の検証が成功した場合、前記起動の順番に達したソフトウェアモジュールを起動し、(b)前記検証手段による有効性の検証が失敗した場合、前記代替累積値と前記起動の順番に達したソフトウェアモジュールに係るデジタル証明書に含まれる目標累積値とを比較し、前記目標累積値と前記代替累積値が一致すれば、前記起動の順番に達したソフトウェアモジュールを起動するブート制御ステップとを含む。
本発明の一実施態様である集積回路は、複数のソフトウェアモジュールを予め定められた順番で起動する集積回路であって、前記複数のソフトウェアモジュールそれぞれについて、当該ソフトウェアモジュールから要約値として算出されるべき目標要約値と、当該ソフトウェアモジュールより先に起動される他のソフトウェアモジュールそれぞれの目標要約値を累積演算した場合に得られるべき目標累積値とを含むデジタル証明書を格納している第1格納手段と、起動の順番に達したソフトウェアモジュールについて、当該ソフトウェアモジュールより先に起動される他のソフトウェアモジュールそれぞれの要約値を累積演算した実累積値と、当該ソフトウェアモジュールに対応するデジタル証明書に含まれる目標累積値とを比較して、当該ソフトウェアモジュールより先に起動されるソフトウェアモジュールの有効性を検証する検証手段と、前記複数のソフトウェアモジュールのうち1つのソフトウェアモジュール、及び前記1つのソフトウェアモジュールに係るデジタル証明書を更新する更新手段と、前記他のソフトウェアモジュールそれぞれについて、デジタル証明書が更新されている場合は更新前のデジタル証明書に含まれる目標要約値を累積演算し、更新されていない場合は当該デジタル証明書に含まれる目標要約値を累積演算した代替累積値を格納する第2格納手段と、(a)前記検証手段による有効性の検証が成功した場合、前記起動の順番に達したソフトウェアモジュールを起動し、(b)前記検証手段による有効性の検証が失敗した場合、前記代替累積値と前記起動の順番に達したソフトウェアモジュールに係るデジタル証明書に含まれる目標累積値とを比較し、前記目標累積値と前記代替累積値が一致すれば、前記起動の順番に達したソフトウェアモジュールを起動するブート制御手段とを備える。
この構成によれば、デジタル証明書やソフトウェアモジュールの更新の際に電源断が起こるなどによって、ソフトウェアモジュールのコードイメージやデジタル証明書間に不整合が生じてしまった場合でも、古いソフトウェアモジュールを実行して累積値を計算することなく前記代替累積値を用いて整合性を確保しブート処理を完了させることが出来る。

以下本発明の実施の形態について、図面を参照しながら説明する。
(第1の実施形態)
本発明の第1の実施形態における端末100の構成について説明する。
端末100は、図1に示すように、CPU101と、耐タンパ性を備えるセキュリティデバイス102と、CPU101が実行するソフトウェアモジュールのコードイメージを格納するソフトウェアモジュール格納部106と、ソフトウェアモジュールの証明書を格納する証明書格納手段107と、ソフトウェアモジュール格納部106に格納されるソフトウェアモジュールと証明書格納手段107に格納される証明書とを更新する更新手段と104と、ソフトウェアモジュールの更新前のソフトウェア構成における構成情報を示す代替構成情報累積部103と、端末100のブート処理を制御するブート制御手段105と、端末100のユーザにブート処理の状況を通知する通知手段108と、から構成される。
ブート制御手段105は、証明書ごとの更新状況を示す更新フラグを保持する更新フラグ保持部111と、セキュアブート処理における実際の処理シーケンスを制御するセキュアブート制御部112とを備えている。
代替構成情報累積部103と更新手段104とブート制御手段105は、具体的には、以下において詳しく説明する動作を行う専用ハードウェアまたはCPU101が実行するソフトウェアによって実現され、ソフトウェアによって実現される場合には、端末100上のメモリ(不図示)にソフトウェア・オブジェクトデータとして生成される。この場合、特に更新フラグ保持部111は、不揮発性のメモリ上に実現される。
ソフトウェアモジュール格納部106と証明書格納手段107は、具体的には不揮発性メモリやハードディスクその他の記憶装置によって実現される。
通知手段108は、具体的にはディスプレイやスピーカ、LED等のインジケータ等によって実現される。
さらに、セキュリティデバイス102は、図2(a)に示すように、CPU101が実際に実行するソフトウェアモジュールの構成を示す構成情報を保持する構成情報累積部201と、ソフトウェアモジュールの証明書の有効性を検証する証明書検証部202と、構成情報累積部201が保持する構成情報を証明書の中の照合値と照合する照合部203と、ソフトウェアモジュールの有効なバージョンの下限を示すカウンタ値を保持するカウンタ部204と、データの暗復号及び署名生成や署名検証を行う暗復号部205と、を備える。また、構成情報累積部201は、ソフトウェアモジュールのハッシュ値の累積演算を行なう累積部211と、累積部211が算出した累積値(以下、累積演算の結果をこのように呼ぶ)を保持する構成情報保持部212と、を備えている。
暗復号部205は、データの暗復号処理や署名生成や署名検証を行うための複数の鍵データを保持しており、代替構成情報累積部103は、暗復号部205が保持する鍵データによって暗号化され、不正な改ざんがされないようになっている。
累積部211は、構成情報保持部212が保持する値のバイト列とソフトウェアモジュールのハッシュ演算の結果のバイト列とを連結し、さらに連結したバイト列に対してハッシュ演算を行い、その結果を構成情報保持部212に格納する。
また、代替構成情報累積部103は、構成情報累積部201と同様の構成を備え、図2(b)に示すように、更新前のソフトウェア構成におけるソフトウェアモジュールのハッシュ値の累積演算を行なう累積部221と、累積部221が算出した累積値を保持する代替構成情報保持部222と、を備えている。
累積部221は、代替構成情報保持部222が保持する値のバイト列とソフトウェアモジュールのハッシュ演算の結果のバイト列とを連結し、さらに連結したバイト列(この場合、例えば、代替構成情報保持部222が保持する値が20バイト、ソフトウェアモジュールのハッシュ演算の結果が20バイトの場合、連結したバイト列は40バイトのバイト列となる)に対してハッシュ演算を行い、その結果を代替構成情報保持部222に格納する。
図3は、証明書のデータ構造を示しており、証明書は、その証明書が対応付けられたソフトウェアモジュールの識別情報301と、ソフトウェアモジュールのバージョン302と、ソフトウェアモジュールのダイジェストとしてモジュールのコードイメージをハッシュした場合の値を示す参照計測値303と、ソフトウェアモジュールが実行される前の端末100の状態においてセキュリティデバイス102の構成情報累積部201に保持されるべき累積値を示す参照累積値304と、ソフトウェアモジュールのバージョンを示す参照カウンタ値305と、証明書を検証する鍵を示す検証鍵ID306と、検証鍵ID306が示す鍵に対応する秘密鍵による電子署名307と、から構成される。
参照計測値303は、正当なソフトウェアモジュールのコードイメージのハッシュ値であり、実際のソフトウェアモジュールのコードイメージのハッシュ演算の結果と照合することで、証明書とソフトウェアモジュールとの対応関係を検証することが可能となる。また、参照累積値304は、セキュリティデバイス102の構成情報累積部201に格納される構成情報と照合することで、ソフトウェアモジュールを実行する前の状態として正しい状態(その前に実行されているソフトウェアモジュールが有効なソフトウェアモジュールであり、正しい順番で実行されている)であることを検証するために用いられる。
次に、端末100の動作について説明する。
まず、図12を用いて、ソフトウェアモジュール格納手段106に格納されるソフトウェアモジュールのコードイメージと証明書格納手段107に格納される証明書とを更新する端末100の更新処理における動作について説明する。
最新のソフトウェアモジュールのコードイメージと証明書は、更新処理を行うソフトウェアモジュールのコードイメージと証明書の一覧を示す更新リストファイルと共に、ネットワーク通信手段(不図示)を介してダウンロードまたは蓄積媒体(不図示)を介して更新手段104の内部の記憶領域に一時的に保持されるものとする。また、具体的には、1つの更新されるソフトウェアモジュールに関して、そのソフトウェアモジュールのコードイメージと証明書、さらには、参照累積値304が更新されるソフトウェアモジュールに依存している証明書と更新リストファイルとが更新手段104の内部の記憶領域に保持される。
更新リストファイルは、ソフトウェアモジュールの提供者によって、ソフトウェアモジュールのコードイメージおよび証明書と共に提供されるファイルである。
更新リストファイルには、更新処理を行う順番でソフトウェアモジュールの証明書の識別情報とコードイメージの識別情報とが順番に記載されている。この順番は、セキュアブート処理の際に先に実行されるソフトウェアモジュールの順番に従っており、先に実行されるソフトウェアモジュールほど、そのソフトウェアモジュールの証明書とコードイメージの更新処理が先に行われるように記載されている。
なお、更新されるソフトウェアモジュールが複数ある場合には、更新リストファイルと、それぞれのソフトウェアモジュールに関して、そのソフトウェアモジュールのコードイメージと証明書、さらには、参照累積値304が更新されるソフトウェアモジュールに依存している証明書と、が更新手段104の内部の記憶領域に保持される。
また、証明書の参照累積値304が更新されるソフトウェアモジュールに依存していない場合には、更新リストファイルと、それぞれのソフトウェアモジュールのコードイメージと証明書とが更新手段104の内部の記憶領域に保持される。
最新のソフトウェアモジュールのコードイメージと証明書のダウンロードは、以下のようにして行われる。まず、更新手段104がソフトウェアモジュールの提供者のサイトに定期的にアクセスし、最新のソフトウェアモジュールのコードイメージや証明書が登録されているかどうかを確認する。登録されていた場合には、自動的にダウンロードが行われる。なお、端末のユーザが自らソフトウェアモジュールの提供者のサイトにアクセスしてダウンロードを行うようにしても良い。
図12は、更新されるべき最新のソフトウェアモジュールのコードイメージと証明書とが更新手段104の内部に保持された状態における端末100が行なう更新処理のフローを示している。更新処理は、最新のソフトウェアモジュールのコードイメージと証明書とが更新手段104の内部に格納された時に、更新手段104が自動的に開始するようにしても良いし、ユーザの更新処理の開始操作に基づいて更新処理を開始するようにしても良い。
また、図16は、ブート制御手段105の内部に保持されるデータの一例を示している。本実施の形態では、各ソフトウェアモジュールに関して、更新フラグと、コードイメージと証明書と旧証明書(更新処理をする前の古い証明書)のそれぞれの実体へのポインタを管理するモジュール構造体Aとモジュール構造体Bと、モジュール構造体へのポインタが保持される。図16は、BIOSとOSと通信モジュールの3つのソフトウェアモジュールに関して、ブート制御手段105の内部に保持されるデータを示している。
モジュール構造体へのポインタには、モジュール構造体Aへのポインタまたはモジュール構造体Bへのポインタが設定される。
本実施の形態では、モジュール構造体を使って、各ソフトウェアモジュール(BIOS、OS、通信モジュール)について、最新の証明書と旧証明書を管理している。本実施の形態ではモジュール構造体は2つあるが、一方は更新用に用いる構造体である。また、もう一方は現在のソフトウェア構成におけるソフトウェアモジュールの実体や証明書へのポインタを含む構造体であり、ソフトウェアモジュールの起動に用いる。本実施の形態では、ソフトウェアモジュールの更新があった場合は、更新用の構造体(すなわち、現在使用していない方の構造体)について、新しいソフトウェアモジュールのコードイメージや証明書の実体へのポインタを格納する。その上で、現在使用している方の構造体から、更新用の構造体へ各モジュール構造体へのポインタを切り替えることで、モジュール構造体の更新を完了する。すなわち、使用中のモジュール構造体と更新用のモジュール構造体と入れ替わるので、更新用のモジュール構造体の方が、新しく現在使用中のモジュール構造体となる。
また、各モジュール構造体の対応するソフトウェアモジュールよりも先に起動するモジュールについてのみ更新があった場合は、コードイメージの実体は変更されないが、証明書を更新する必要があることがある。これは、各ソフトウェアモジュールの証明書は自身が対応するソフトウェアモジュールよりも先に起動するモジュールの影響を受けることがあるためである。そのため、この場合も更新用のモジュール構造体について、更新前と同じコードイメージと、更新後の証明書と、更新前に最新だった証明書(更新後の旧証明書)とのそれぞれの実体を指すようポインタを設定する。その後、更新用のモジュール構造体と現在使用中のモジュール構造体とを入れ替えることで、モジュール構造体の更新を完了する。これらの動作については、以下の動作説明で詳細を述べる。
図12において、まず、更新手段104が更新するソフトウェアモジュールに対応する更新フラグをセットする(ステップS1201)。
次に、更新手段104は、ソフトウェアモジュールの証明書の更新を行う(ステップS1202)。この時、証明書格納手段107に格納される更新前の証明書は証明書格納手段107からは消去されず、ブート制御手段105において旧証明書として管理されるようになる。
また、古い証明書への差し替えを防止するため、更新手段104がセキュリティデバイス102に命令を送信する。命令を受けたセキュリティデバイス102は、証明書を更新する際に、証明書の参照カウンタ値305にセキュリティデバイス102のカウンタ部204に保持されているカウンタ値に1を加算した値を設定し、セキュリティデバイス102の暗復号部205に保持されている暗号鍵によって署名を生成して、電子署名307のフィールドに設定する。
また、この時、ブート制御手段105では、更新手段104からの要求に基づいて、モジュール構造体へのポインタが示しているモジュール構造体とは逆のモジュール構造体(ここで「逆のモジュール構造体」とはモジュール構造体へのポインタがモジュール構造体Aを示している場合はモジュール構造体B、モジュール構造体へのポインタがモジュール構造体Bを示している場合はモジュール構造体Aという意味)の証明書へのポインタに証明書格納手段107上の更新した証明書へのポインタを設定する。また、同じ逆のモジュール構造体の旧証明書へのポインタに、現在、モジュール構造体へのポインタが示しているモジュール構造体の証明書へのポインタと同じポインタを設定する。
次に、更新手段104は、ソフトウェアモジュール格納手段106に格納されているソフトウェアモジュールのコードイメージを更新する(ステップS1203)。この時、ブート制御手段105では、更新手段104からの要求に基づいて、モジュール構造体へのポインタが示しているモジュール構造体とは逆のモジュール構造体のコードイメージへのポインタにソフトウェアモジュール格納手段106上の更新したコードイメージへのポインタを設定する。さらに、モジュール構造体へのポインタに逆のモジュール構造体へのポインタを設定して、更新した証明書とコードイメージとがセキュアブート処理において使用されるように切り替える。
次に、更新手段104は、更新リストファイルに記載されている順番で、次に更新をすべきソフトウェアモジュールが存在するか否かを判定し(ステップS1204)、存在しない場合には、ステップS1205へ進み、他に更新をすべきソフトウェアモジュールが存在する場合には、ステップS1201に戻り、各ソフトウェアモジュールに関してステップS1201からステップS1204の処理を繰り返す。
ステップS1205では、更新手段104は、ソフトウェアモジュールのコードイメージを更新する必要はないが、証明書の内容が更新されたソフトウェアモジュールに依存しているために更新が必要な証明書が存在する場合に、それらの証明書を更新して、更新処理を終了する。この時、ブート制御手段105では、更新手段104からの要求に基づいて、モジュール構造体へのポインタが示しているモジュール構造体とは逆のモジュール構造体の証明書へのポインタに証明書格納手段107上の更新した証明書へのポインタを設定する。また、同じ逆のモジュール構造体のコードイメージへのポインタに、現在、モジュール構造体へのポインタが示しているモジュール構造体のコードイメージへのポインタと同じポインタを設定する。さらに、同じ逆のモジュール構造体の旧証明書へのポインタに、現在、モジュール構造体へのポインタが示しているモジュール構造体の証明書へのポインタと同じポインタを設定する。さらに、モジュール構造体へのポインタに逆のモジュール構造体へのポインタを設定して、更新した証明書がセキュアブート処理において使用されるように切り替える。
ステップS1205での証明書の更新の処理は、更新手段104は、ステップS1202での処理と同様の処理を行う。
次に、図4、5、6を用いて、端末100のセキュアブート処理における動作について説明する。
図4は、端末100が行なうセキュアブート処理のフローの概要を示している。
まず、ステップS401においてセキュアブート制御部112が更新フラグ保持部111の更新フラグを参照し、何れかの更新フラグが有効になっている場合には、更新時セキュアブート処理(ステップS403)へ進み、それ以外の場合は、通常セキュアブート処理(ステップS402)へ進む。
通常セキュアブート処理(ステップS402)へ進んだ場合、セキュアブート制御部112は図5に示すフローに基づいてセキュアブート処理を行なう。
また、更新時セキュアブート処理(ステップS403)へ進んだ場合、セキュアブート制御部112は図6に示すフローに基づいてセキュアブート処理を行なう。
まず、通常セキュアブート処理(ステップS402)における端末100の動作について説明する。
通常セキュアブート処理では、まず、セキュアブート制御部112がソフトウェアモジュールと証明書との照合を行いソフトウェアモジュールに対応する証明書が存在することを検証する(ステップS501)。具体的には、ソフトウェアモジュールのコードイメージのハッシュ演算(例えば、SHA−1などのハッシュ演算)を行い、その結果と証明書の参照計測値303とを照合する。照合の結果、参照計測値303と一致した場合には、セキュリティデバイス102に証明書の検証を要求してステップS502へ進む。
また、参照計測値303と一致しなかった場合にはエラーとなりセキュアブート処理を完了せずに終了する。この際、セキュアブート制御部112が通知手段108にユーザへの通知を要求し、通知手段108によって、ソフトウェアモジュールのコードイメージと証明書との整合性が取れていないことがユーザに通知される(不図示)。
ステップS502では、セキュリティデバイス102の証明書検証部202が、証明書のバージョンの検証を行い、証明書が古い無効化された証明書でないこと検証する(ステップS502)。具体的には、セキュリティデバイスのカウンタ部204が保持するカウンタ値と証明書の参照カウンタ値305とを比較する。カウンタ部204には、ソフトウェアモジュールの有効なバージョンの下限を示すカウンタ値が保持されており、カウンタ値の比較の結果、参照カウンタ値305が、カウンタ部204が保持するカウンタ値以上であった場合には、ステップS503へ進む。
また、それ以外の場合にはエラーとなりセキュアブート処理を完了せずに終了する。この際、セキュアブート制御部112が通知手段108にユーザへの通知を要求し、通知手段108によって、ソフトウェアモジュールのコードイメージと証明書が古いものであることがユーザに通知される(不図示)。
ステップS503では、セキュリティデバイス102の証明書検証部202が、さらに、証明書の署名の検証を行い、有効な電子署名が施された証明書であることを検証する(ステップS503)。署名検証の結果、電子署名が有効であった場合には、ステップS504へ進む。
また、電子署名が無効であった場合にはエラーとなりセキュアブート処理を完了せずに終了する。この際、セキュアブート制御部112が通知手段108にユーザへの通知を要求し、通知手段108によって、証明書の署名検証においてエラーが検出されたことがユーザに通知される(不図示)。
ステップS501、S502、S503の検証により、ソフトウェアモジュールと証明書とは対応関係にあり、かつ、その証明書の有効性が検証されることにより、ソフトウェアモジュール自体の有効性が検証される。
ステップS504では、セキュリティデバイス102の照合部203が、証明書の参照累積値と構成情報保持部212が保持する構成情報とを照合し、ソフトウェアモジュールを実行する前の状態として正しい状態(その前に実行されているソフトウェアモジュールが有効なソフトウェアモジュールであり、正しい順番で実行されている)であることが検証される。証明書の参照累積値と構成情報保持部212が保持する構成情報とが一致した場合には、ステップS505へ進む。
また、それ以外の場合には、エラーとなりセキュアブート処理を完了せずに終了する。この際、セキュアブート制御部112が通知手段108にユーザへの通知を要求し、通知手段108によって、ソフトウェアモジュールのコードイメージ及び証明書との間の整合性が取れていないことがユーザに通知される(不図示)。
ステップS505では、セキュリティデバイス102の構成情報累積部201の累積部211が、構成情報保持部212が保持する値のバイト列と証明書の参照累積値のフィールドに設定されている参照累積値のバイト列とを連結し、さらに連結したバイト列に対してハッシュ演算(例えば、SHA−1のハッシュ演算)を行い、その結果を構成情報保持部212に格納する(ステップS505)。
次に、ステップS506において、セキュアブート制御部112がソフトウェアモジュールを実行し、ステップS507へ進む。
ステップS507では、セキュアブート処理を完了したか否かを判定する。
セキュアブート処理において実行されるべき全てのソフトウェアモジュールの実行を完了した場合には、通常セキュアブート処理(ステップS402)を完了し、
セキュアブート処理を完了していないと判定した場合には、ステップS501に戻り、次に実行するソフトウェアモジュールと証明書に関してステップS501からステップS507までの処理を繰り返す。
次に、更新時セキュアブート処理(ステップS403)における端末100の動作について説明する。セキュアブート制御部112は図6に示すフローに基づいてセキュアブート処理を行なう。
更新時セキュアブート処理では、まず、セキュアブート制御部112がソフトウェアモジュールと証明書との照合を行いソフトウェアモジュールに対応する証明書が存在することを検証する(ステップS601)。具体的には、ソフトウェアモジュールのコードイメージのハッシュ演算(例えば、SHA−1などのハッシュ演算)を行い、その結果と証明書の参照計測値303とを照合する。照合の結果、参照計測値303と一致した場合には、セキュリティデバイス102に証明書の検証を要求してステップS602へ進む。
また、参照計測値303と一致しなかった場合にはエラーとなりセキュアブート処理を完了せずに終了する。この際、セキュアブート制御部112が通知手段108にユーザへの通知を要求し、通知手段108によって、ソフトウェアモジュールのコードイメージと証明書との整合性が取れていないことがユーザに通知される(不図示)。
ステップS602では、セキュリティデバイス102の証明書検証部202が、証明書のバージョンの検証を行い、証明書が古い無効化された証明書でないこと検証する(ステップS602)。具体的には、セキュリティデバイスのカウンタ部204が保持するカウンタ値と証明書の参照カウンタ値305とを比較する。カウンタ部204には、ソフトウェアモジュールの有効なバージョンの下限を示すカウンタ値が保持されており、カウンタ値の比較の結果、参照カウンタ値305が、カウンタ部204が保持するカウンタ値以上であった場合には、ステップS603へ進む。
また、それ以外の場合にはエラーとなりセキュアブート処理を完了せずに終了する。この際、セキュアブート制御部112が通知手段108にユーザへの通知を要求し、通知手段108によって、ソフトウェアモジュールのコードイメージと証明書が古いものであることがユーザに通知される(不図示)。
ステップS603では、セキュリティデバイス102の証明書検証部202が、さらに、証明書の署名の検証を行い、有効な電子署名が施された証明書であることを検証する(ステップS603)。署名検証の結果、電子署名が有効であった場合には、ステップS604へ進む。
また、電子署名が無効であった場合にはエラーとなりセキュアブート処理を完了せずに終了する。この際、セキュアブート制御部112が通知手段108にユーザへの通知を要求し、通知手段108によって、証明書の署名検証においてエラーが検出されたことがユーザに通知される(不図示)。
ステップS601、S602、S603の検証により、ソフトウェアモジュールとそれに対応する証明書との対応関係が正しいことが検証され、かつ、その証明書の有効性が検証されることにより、ソフトウェアモジュール自体の有効性が検証される。
ステップS604では、セキュリティデバイス102の照合部203が、証明書の参照累積値と構成情報保持部212が保持する構成情報とを照合し、ソフトウェアモジュールを実行する前の状態として正しい状態(その前に実行されているソフトウェアモジュールが有効なソフトウェアモジュールであり、正しい順番で実行されている)であることが検証される。
次のステップS605では、ステップS604における証明書の参照累積値と構成情報保持部212が保持する構成情報との照合に成功したか否かを判定する。
照合に成功した場合、つまり、証明書の参照累積値と構成情報保持部212が保持する構成情報とが一致し、ソフトウェアモジュールを実行する前の状態として正しい状態であることが検証された場合には、ステップS608へ進む。
また、照合に成功しなかった場合、つまり、証明書の参照累積値と構成情報保持部212が保持する構成情報とが一致しなかった場合には、ステップS607へ進み、証明書の参照累積値と代替構成情報保持部222が保持する構成情報との照合を行い、更新処理の途中の状態であることを要因とする証明書の不整合によるエラーであるか否かを検証する。
ステップS607では、セキュアブート制御部112が、証明書の参照累積値と代替構成情報保持部222が保持する構成情報とを照合し、ソフトウェアモジュールの更新処理を行う前のソフトウェア構成において、ソフトウェアモジュールを実行する前の状態として正しい状態(但し、厳密には、ソフトウェアプログラムのコードイメージと証明書との整合性が取れていない状態)であることが検証される。証明書の参照累積値と代替構成情報保持部222が保持する構成情報とが一致した場合には、ステップS608へ進む。
また、それ以外の場合には、エラーとなりセキュアブート処理を完了せずに終了する。この際、セキュアブート制御部112が通知手段108にユーザへの通知を要求し、通知手段108によって、ソフトウェアモジュールのコードイメージ及び証明書との間の整合性が取れていないことがユーザに通知される(不図示)。
ステップS608では、セキュリティデバイス102の構成情報累積部201の累積部211が、構成情報保持部212が保持する値のバイト列と証明書の参照累積値のフィールドに設定されている参照累積値のバイト列とを連結し、さらに連結したバイト列に対してハッシュ演算(例えば、SHA−1のハッシュ演算)を行い、その結果を構成情報保持部212に格納する(ステップS608)。
次に、ステップS609において、更新フラグが有効になっているソフトウェアモジュールであるか否かを判定し、更新フラグが有効になっているソフトウェアモジュールである場合、つまり、更新処理中または更新処理を完了したソフトウェアモジュールである場合には、ステップS610へ進み、それ以外の更新されていないソフトウェアモジュールである場合には、ステップS613へ進む。
ステップS613では、代替構成情報累積部103の累積部221が、代替構成情報保持部222が保持する値のバイト列と証明書の参照累積値のフィールドに設定されている参照累積値のバイト列とを連結し、さらに連結したバイト列に対してハッシュ演算を行い、その結果を代替構成情報保持部222に格納する(ステップS613)。
ステップS610では、セキュアブート制御部112が、更新前の旧証明書のバージョンの検証を行い、旧証明書が更新処理を行う前のバージョンの証明書であること検証する(ステップS610)。具体的には、セキュリティデバイスのカウンタ部204が保持するカウンタ値と証明書の参照カウンタ値305とを照合する。カウンタ部204には、ソフトウェアモジュールの有効なバージョンの下限を示すカウンタ値が保持されており、カウンタ値の照合の結果、参照カウンタ値305が、カウンタ部204が保持するカウンタ値以上であった場合には、ステップS611へ進む。
また、それ以外の場合にはエラーとなりセキュアブート処理を完了せずに終了する。この際、セキュアブート制御部112が通知手段108にユーザへの通知を要求し、通知手段108によって、証明書のバージョン検証においてエラーが検出されたことがユーザに通知される(不図示)
ステップS611では、セキュアブート制御部112が、さらに、更新前の旧証明書の署名の検証を行い、有効な電子署名が施された証明書であることを検証する(ステップS611)。署名検証の結果、電子署名が有効であった場合には、ステップS612へ進む。
また、電子署名が無効であった場合にはエラーとなりセキュアブート処理を完了せずに終了する。この際、セキュアブート制御部112が通知手段108にユーザへの通知を要求し、通知手段108によって、証明書の署名検証においてエラーが検出されたことがユーザに通知される(不図示)。
ステップS610、S611の検証により、旧証明書が更新処理を行う前のバージョンの有効な証明書であることが検証される。
次に、ステップS612では、代替構成情報累積部103の累積部221が、代替構成情報保持部222が保持する値のバイト列と旧証明書の参照累積値のフィールドに設定されている参照累積値のバイト列とを連結し、さらに連結したバイト列に対してハッシュ演算を行い、その結果を代替構成情報保持部222に格納する(ステップS612)。これにより、代替構成情報保持部222には、更新処理を行う前のソフトウェア構成での構成情報が保持されることになる。
次に、ステップS614において、セキュアブート制御部112がソフトウェアモジュールを実行し、ステップS615へ進む。このとき実行されるソフトウェアモジュールのコードイメージには、ステップS601からステップ603で検証した証明書に対応する最新のコードイメージが用いられる。
ステップS615では、セキュアブート制御部112がセキュアブート処理を完了したか否かを判定する。
セキュアブート処理において実行されるべき全てのソフトウェアモジュールの実行を完了した場合には、更新時セキュアブート処理(ステップS403)を完了し、ステップS404へ進む。
セキュアブート処理を完了していないと判定した場合には、ステップS601に戻り、次に実行するソフトウェアモジュールと証明書に関してステップS601からステップS615までの処理を繰り返す。
ステップS404では、セキュアブート制御部112が、証明書の参照累積値の照合に代替構成情報累積部を用いたか否か、つまり、ステップS607の処理をしたか否かを判定する。
ステップS607の処理をした場合には、更新処理においてソフトウェアモジュール及び証明書との間に不整合があり、更新処理が完了していないということであり、ステップS405へ進む。
ステップS405では、セキュアブート制御部112が通知手段108にユーザへの通知を要求し、通知手段108によって、ユーザに更新処理が完了していないことを通知され、セキュアブート処理を終了する。この後、自動的に更新処理を再開する。
ステップS607の処理をしなかった場合には、ソフトウェアモジュール及び証明書との間に不整合がなく更新されていることを意味し、ステップS406へ進み、セキュアブート制御部は更新フラグをリセットし、更新前の旧証明書を消去する。
次に、ステップS407では、セキュアブート制御部112が全ての証明書が更新されたか否かを判定する。具体的には、セキュアブート処理において実行される全てのソフトウェアモジュールに関して、証明書格納手段107に格納されている、それらの証明書の参照カウンタ値305が、セキュリティデバイス102のカウンタ部204に保持されているカウンタ値よりも大きな値を示すようになったか否かを判定する。
全ての証明書が更新された場合には、古い証明書への差し替えを防止するために、セキュアブート制御部112は、セキュリティデバイス102にカウンタのインクリメントを要求し、セキュリティデバイス102がカウンタ部204に保持されているカウンタ値を1インクリメントして、セキュアブート処理を終了する(ステップS408)。それ以外の場合には、そのまま、セキュアブート処理を終了する。
以上のようなセキュアブート処理を行うことにより、端末100のソフトウェアが、複数のソフトウェアモジュールから構成される場合において、ソフトウェアモジュールを古いソフトウェアモジュールにすりかえるといった不正行為を防止し、各ソフトウェアモジュールの更新処理を個別に行うことが可能となる。また、証明書の更新の際に電源断が起こり、ソフトウェアモジュールのコードイメージや証明書間に不整合が生じてしまった場合でも、古いソフトウェアモジュールを実行することなく、セキュアブート処理を完了させ、証明書の更新処理を再開することが出来る。
具体的な例として、端末100の更新前のソフトウェアが図15(a)に示すようにBIOSとOSと通信モジュールから構成され、OSが更新されて、本来、図15(b)に示すような構成に更新される場合を考える。この場合、OSのコードイメージとOS証明書が更新されるだけでなく、その参照累積値がOSのコードイメージに依存している通信モジュール証明書も更新される(この場合、通信モジュールのコードイメージは更新されない)。
この更新処理において、例えば、OSのコードイメージとOS証明書の更新処理が完了して、通信モジュール証明書の更新を完了する前に電源断等のトラブルが起こった場合、図15(c)に示すような構成になる。この状態での通信モジュール証明書の参照累積値は、図15(a)の更新前のソフトウェア構成を想定した値となっており、更新されたOSのコードイメージ(New_OS)及びOS証明書´と通信モジュール証明書との間には不整合が生じる。
しかし、端末100の場合には、図4、5、6に示したセキュアブート処理を行うことにより、セキュアブート処理を完了させ、通信モジュール証明書の更新処理を再開することが出来る。
なお、以上では、更新フラグ保持部111をブート制御手段105の内部に設けたが、セキュリティデバイス102の内部に設けるようにしても良い。セキュリティデバイス102は、耐タンパ性を備えているため、更新フラグの改ざんを防止することができ、端末100の安全性が向上する。
また、なお、ソフトウェアモジュールの証明書をセキュリティデバイスの暗復号部が保持する鍵によって暗号化して証明書格納手段に格納するようにしても良い。
また、なお、ソフトウェアモジュールのコードイメージのハッシュ演算のアルゴリズムとしてSHA256を用いるようにしてもよい。
また、なお、セキュアブート処理を開始する前に、ブート制御手段が改ざんされていないことをセキュリティデバイス102が検証するようにしてもよい。
また、なお、最新のソフトウェアモジュールのコードイメージと証明書と更新リストファイルは、端末を専用ツールに接続し、専用ツールを介して更新手段の内部の記憶領域に保持されるようにしてもよい。
また、なお、証明書に施される電子署名のアルゴリズムとして、RSA暗号または楕円曲線暗号またはHMACを使用するようにしてもよい。
また、なお、以上では、証明書の参照カウンタ値に1を加算し、セキュリティデバイスのカウンタ部が示すカウンタ値を1インクリメントするとしたが、証明書の参照カウンタ値1以外の数値Aを加算し、セキュリティデバイスのカウンタ部が示すカウンタ値を数値Aだけインクリメントするようにしてもよい。

(実施の形態2)
図7を用いて本発明の実施の形態2について説明する。
本発明の実施の形態2における端末700は、代替構成情報累積部103を必要に応じて生成し、端末700のリソースが効率的に使用されるように構成したものである。代替構成情報累積部103は、実際には、CPU101が実行するソフトウェアによって実現され、端末700上のメモリ(不図示)にソフトウェア・オブジェクトデータとして生成される。
図7は、本発明の実施の形態2における端末700のブロック構成を示している。第2の実施形態の場合には、ブート制御手段705にの中に、さらに、代替構成情報累積部103を必要に応じて生成する代替構成情報生成部713を備えている。代替構成情報累積部103は、通常時には存在せず、更新時セキュアブート処理(ステップS403)を行う際に、代替構成情報生成部713によって必要に応じて生成される。
それ以外の構成要素は、第1の実施形態における端末100の場合と同じである。
本実施の形態の場合、更新時セキュアブート処理(ステップS403)を開始する際に、代替構成情報生成部713が、セキュリティデバイス102の構成情報保持部212に保持されている値を読み出し、代替構成情報保持部222に設定することで、代替構成情報累積部103を生成する。それ以外の動作に関しては、第1の実施形態における端末100の場合と同じである。
本実施の形態の場合、代替構成情報累積部103を必要になった時にだけ、代替構成情報生成部713によって、ソフトウェア・オブジェクトデータとして生成し、それ以外の時は、端末700のメモリを占有することが無く、通常セキュアブート処理の際にはより多くのメモリを利用して処理を高速化することが出来るなど、端末700のリソースを効率的に使用することが出来る。
なお、生成される代替構成情報累積部103の代替構成情報保持部222は、耐タンパ化されたメモリ上に生成するようにしてもよい。

(実施の形態3)
本発明の実施の形態3では、更新時セキュアブート処理を行って起動した場合の端末100の動作モードを、更新時セキュアブート処理の際に行った照合処理に結果に応じて一部の機能を制限するなどの制御できるように構成したものについて説明する。
図8は、本発明の実施の形態3におけるソフトウェアモジュールの証明書800のデータ構造を示しており、機能制御の内容を規定する機能制御定義807というフィールドが追加されている以外は、実施の形態1の場合の証明書と同じである。
機能制御定義807には、機能制御の条件と機能制御の内容が、例えば、XML等の形式で記述される。
機能制御の条件としては、「更新時セキュアブート処理を行って起動した場合に常に適用」や「証明書の参照累積値の照合において代替構成情報累積部と照合を行った場合に適用」などの条件が規定される。
また、機能制御の内容としては、「更新処理の再開以外の処理が制限される緊急モード」や「外部との通信が制限される通信不可モード」、「セキュリティデバイス102を利用する暗号処理などのセキュリティサービスを利用不可とする制限モード」、「特定の外部通信(緊急電話など)のみ使用可能とする通報モード」などが規定される。
端末100の構成は、実施の形態1の場合と基本的には同じであり、更新時セキュアブート処理のステップS614において、ソフトウェアモジュールのコードイメージを実行する際に、ブート制御手段が各証明書800の機能制御定義807が規定する内容に基づいて各ソフトウェアモジュールの内部パラメータを設定して機能制御を行う。それ以外の動作は、実施の形態1の場合と同じである。
本実施の形態の場合、例えば、機能制御の条件として「証明書の参照累積値の照合において代替構成情報累積部と照合を行った場合に適用」という条件を、機能制御の内容として「更新処理の再開以外の処理が制限される緊急モード」という制御内容を、それぞれ定義することにより、更新処理が完了していない状態でセキュアブート処理が行われた場合、ブート処理の後、更新処理の再開以外の処理が制限されるため、更新処理が優先的に実行され、より高い確度で更新処理を完了させることが出来る。また、機能制御として、「通信不可モード」や「制限モード」といったモードを定義することで、更新処理が完了していない状態でセキュアブート処理が行われた場合に、端末の機能を制限するような動作モードを設ける。これにより安全性の低下した状態の端末のソフトウェアの更新を促し、システム全体としてのリスクを低減させることが出来る。

(実施の形態4)
実施の形態1では、更新処理の際、旧証明書を消去せずに保持しておく必要があったが、
本発明の実施の形態4では、それを不要とするように構成したものについて説明する。
図9は、本発明の実施の形態4におけるソフトウェアモジュールの証明書900のデータ構造を示している。図9に示すデータ構造は、更新前のソフトウェアモジュールのコードイメージのハッシュ値を示す旧参照計測値907というフィールドが追加されている以外は、実施の形態1の場合の証明書と同じである。
旧参照計測値907には、ソフトウェアモジュールを更新する前に、ソフトウェアモジュール格納手段106に格納されていたソフトウェアモジュールのコードイメージのハッシュ演算の結果が設定される。これは、証明書を更新する前に、証明書格納手段107に格納されていた証明書の参照計測値303に設定されている値と同じである。
端末100の構成は、実施の形態1の場合と基本的には同じであり、また、次に示す3つの相違点以外は、動作に関しても実施の形態1の場合と同じである。
動作における1つ目の相違点は、実施の形態4の場合、更新処理のステップS1202において旧証明書を保持せずに消去する点である。
2つ目の相違点は、実施の形態4の場合、図10に示すように、更新時セキュアブート処理のステップS609において、更新フラグが有効になっているソフトウェアモジュールである場合(つまり、更新処理中または更新処理を完了したソフトウェアモジュールである場合)には、ステップS1012へ進み、代替構成情報累積部103の累積部221が、代替構成情報保持部222が保持する値のバイト列と証明書の旧参照累積値907のフィールドに設定されている旧参照累積値のバイト列とを連結し、さらに連結したバイト列に対してハッシュ演算を行い、その結果を代替構成情報保持部222に格納する(ステップS1012)点である。
3つ目の相違点は、実施の形態4の場合、セキュアブート処理のステップS406の処理において、更新フラグのリセットのみを行う点である。
本実施の形態の場合、旧証明書を保持しておくために必要であったメモリが不要となり、携帯電話等のリソースに制限がある端末においても適用することが容易になる。

(実施の形態5)
図11、13を用いて本発明の実施の形態5について説明する。
本発明の実施の形態5における端末1100は、更新処理を開始する前に、入手した最新のソフトウェアモジュールのコードイメージと証明書、さらには、更新対象ではない証明書との整合性を検証することで、誤って整合性がない構成に更新されてしまうことを防止し、ソフトウェアモジュールのコードイメージ及び証明書との間に不整合がないソフトウェア構成に更新されるように構成したものである。
図11は、本発明の実施の形態5における端末1100のブロック構成を示している。第5の実施形態の場合には、更新手段1104の中に、さらに、最新のソフトウェアモジュールのコードイメージと証明書と更新対象ではない証明書との整合性を検証するサイレントブート部1121を備えている。それ以外の構成要素は、第1の実施形態における端末100の場合と同じである。
本実施の形態の場合、更新処理を開始する前に、サイレントブート部1121が図13に示す処理フローに基づいてサイレントブート処理を行い、サイレントブート処理においてエラーが検出されなかった場合に、更新処理を開始する。それ以外の動作に関しては、第1の実施形態における端末100の場合と同じである。
サイレントブート処理は、具体的には、最新のソフトウェアモジュールのコードイメージと証明書とをダウンロードした直後等のタイミングでおこなわれるとする。ただし、端末処理負荷が低いタイミングで行うなどとしてもよく、このタイミングに限定するものではない。
サイレントブート処理では、まず、サイレントブート部1121がソフトウェアモジュールと証明書との照合を行いソフトウェアモジュールに対応する証明書が存在することを検証する(ステップS1301)。具体的には、ソフトウェアモジュールのコードイメージのハッシュ演算(例えば、SHA−1などのハッシュ演算)を行い、その結果と証明書の参照計測値303とを照合する。照合の結果、参照計測値303と一致した場合には、セキュリティデバイス102に証明書の検証を要求してステップS1302へ進み、一致しなかった場合にはエラーとなりサイレントブート処理を完了せずに終了する。
ステップS1302では、セキュリティデバイス102の証明書検証部202が、証明書のバージョンの検証を行い、証明書が古い無効化された証明書でないこと検証する(ステップS1302)。具体的には、セキュリティデバイスのカウンタ部204が保持するカウンタ値と証明書の参照カウンタ値305とを比較する。カウンタ部204には、ソフトウェアモジュールの有効なバージョンの下限を示すカウンタ値が保持されており、カウンタ値の比較の結果、参照カウンタ値305が、カウンタ部204が保持するカウンタ値以上であった場合には、ステップS1303へ進み、それ以外の場合にはエラーとなりサイレントブート処理を完了せずに終了する。
ステップS1303では、セキュリティデバイス102の証明書検証部202が、さらに、証明書の署名の検証を行い、有効な電子署名が施された証明書であることを検証する(ステップS1303)。署名検証の結果、電子署名が有効であった場合には、ステップS1304へ進み、無効であった場合にはエラーとなりサイレントブート処理を完了せずに終了する。
ステップS1301、S1302、S1303の検証により、ソフトウェアモジュールと証明書とは対応関係にあり、かつ、その証明書の有効であることが検証されることにより、ソフトウェアモジュール自体の有効であることが検証される。
ステップS1304では、サイレントブート部1121が、証明書の参照累積値と代替構成情報保持部222が保持する構成情報とを照合し、ソフトウェアモジュールを実行する前の状態として正しい状態(その前に実行されているソフトウェアモジュールが有効なソフトウェアモジュールであり、正しい順番で実行されている)であることが検証される。証明書の参照累積値と代替構成情報保持部222が保持する構成情報とが一致した場合には、ステップS1305へ進み、それ以外の場合には、エラーとなりサイレントブート部1121を完了せずに終了する。
ステップS1305では、サイレントブート部1121が、代替構成情報保持部222が保持する値のバイト列と証明書の参照累積値のフィールドに設定されている参照累積値のバイト列とを連結し、さらに連結したバイト列に対してハッシュ演算(例えば、SHA−1のハッシュ演算)を行い、その結果を代替構成情報保持部222に格納する(ステップS1305)。
サイレントブート処理では、実際にソフトウェアモジュールのコードイメージを実行することはせず、次に、ステップS1306において、サイレントブート処理を完了したか否かを判定する。
サイレントブート処理において実行されるべき全てのソフトウェアモジュールの実行を完了した場合には、サイレントブート処理を完了し、セキュアブート処理を完了していないと判定した場合には、ステップS1301に戻り、次に実行されるべきソフトウェアモジュールと証明書に関してステップS1301からステップS507までの処理を繰り返す。
サイレントブート処理においてエラーが検出されなかった場合に、更新手段1104が更新処理を開始する。
本実施の形態の場合、更新処理を開始する前に、入手したソフトウェアモジュールのコードイメージと証明書と更新対象ではない証明書との整合性を検証する。これにより、誤って整合性がない構成に更新されてしまうことを防止し、確実にソフトウェアモジュールのコードイメージ及び証明書との間に不整合がないソフトウェア構成に更新することが出来る。

(実施の形態6)
本発明の実施の形態6では、古いソフトウェアモジュールが実行されることを、より確実に防止し、端末100のソフトウェア構成が常に最新のソフトウェア構成となるように構成したものについて説明する。
図14は、本発明の実施の形態6におけるセキュアブート処理のフローを示しており、この図14のセキュアブート処理を行うことにより、古いソフトウェアモジュールが実行されることを防止することが出来る。
端末100の構成は、実施の形態1の場合と基本的には同じであり、ステップS406の後の処理以外は、動作に関しても実施の形態1の場合と同じである。
本発明の実施の形態6におけるセキュアブート処理では、ステップS401からステップS406に関しては実施の形態1と同じ動作を行う。
ステップS406の後、つまり、更新時セキュアブート処理においてソフトウェアモジュール及び証明書との間に不整合がなく、ステップS406において、更新フラグをリセットし、更新前の旧証明書を消去した後、処理はステップS1407へ進む。ステップS1407では、証明書格納手段107に格納されている証明書の内、セキュリティデバイス102のカウンタ部204が示す値と参照カウンタ値が同じ証明書(つまり、更新されていない証明書)に関して、証明書格納手段に格納されている既存の証明書を用いて更新する。この時、セキュアブート制御部112は、更新手段104に証明書の更新処理を要求する。また、更新手段104がセキュアブート制御部112からの要求に基づきセキュリティデバイス102に命令を送信する。セキュリティデバイス102は、証明書の参照カウンタ値305にセキュリティデバイス102のカウンタ部204に保持されているカウンタ値に1を加算した値を設定し、セキュリティデバイス102の暗復号部205に保持されている暗号鍵によって署名を生成して、電子署名307のフィールドに設定する。なお、証明書の更新は、証明書格納手段に格納されている証明書を用いて行われるので、実質的には、この処理によって、証明書の参照カウンタ値305と電子署名307のフィールドのみが更新され、その他のフィールドの値は変わらない。
次に、ステップS1408において、更新手段104がセキュリティデバイス102のカウンタ部に保持されているカウンタ値のインクリメントを要求し、セキュリティデバイス102がカウンタ部に保持されているカウンタ値を1インクリメントして更新処理を終了する。
ステップS1407、ステップS1408の処理により、すべての証明書の参照カウンタ値305とセキュリティデバイス102のカウンタ部に保持されているカウンタ値とが常に同じ値に設定されることになる。
本実施の形態の図4、5、6の処理フローに基づくセキュアブート処理では、すべてのソフトウェアモジュールに関して、コードイメージを実行する前に、証明書のバージョンの検証が行われる。また、証明書のバージョンの検証では、証明書の参照カウンタ値305が、カウンタ部204が保持するカウンタ値以上であることが検証され、証明書の参照カウンタ値305が、カウンタ部204が保持するカウンタ値よりも小さい場合には、そのソフトウェアモジュールのコードイメージは実行されない。
したがって、本実施の形態では、古いソフトウェアモジュールが実行されることが確実に防止され、端末100のソフトウェア構成が常に最新のソフトウェア構成となる。

(実施の形態7)
本発明の実施の形態7では、上述してきた実施の形態1から実施の形態6をTrusted Computing Group(TCG)で規定している仕様に基づいて実現してもよい。
この場合、セキュリティデバイス102は、TCGで規定しているTPMモジュールまたはMTMモジュールであり(以降のTPMとは、TPMあるいはMTMを意味するものとする)、構成情報保持部201は、TPMが備えるPCRであり、カウンタ部は、TPMが備えるMonotonic Counterであり、累積部211は、証明書検証部202、照合部203は、TPMコマンド処理を含んだTCG機能を実現する部であり、証明書300、800、900は、External RIM_Cert、もしくはInternal RIM_Certであり、代替構成情報保持部103は、TPM内のPCRの機能を仮想的に実現するためのもの(ここでは代替PCRと呼ぶ)であり、累積部221は、代替PCRを利用してTCGのExtend処理をする部である。これによって、TCG仕様に基づいて安全にソフトウェアの更新が可能となる。

(その他変形例)
なお、本発明を上記実施の形態に基づいて説明してきたが、本発明は、上記の実施の形態に限定されないのはもちろんである。以下のような場合も本発明に含まれる。
(1)上記の各装置は、具体的には、マイクロプロセッサ、ROM、RAM、ハードディスクユニット、ディスプレイユニット、キーボード、マウスなどから構成されるコンピュータシステムである。前記RAMまたはハードディスクユニットには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムにしたがって動作することにより、各装置は、その機能を達成する。ここでコンピュータプログラムは、所定の機能を達成するために、コンピュータに対する指令を示す命令コードが複数個組み合わされて構成されたものである。なお、各装置は、マイクロプロセッサ、ROM、RAM、ハードディスクユニット、ディスプレイユニット、キーボード、マウスなどの全てを含むコンピュータシステムには限らず、これらの一部から構成されているコンピュータシステムであってもよい。
(2)上記の各装置を構成する構成要素の一部または全部は、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に置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。バイオ技術の適用等が可能性としてありえる。
(3)上記の各装置を構成する構成要素の一部または全部は、各装置に脱着可能なICカードまたは単体のモジュールから構成されているとしてもよい。前記ICカードまたは前記モジュールは、マイクロプロセッサ、ROM、RAMなどから構成されるコンピュータシステムである。前記ICカードまたは前記モジュールは、上記の超多機能LSIを含むとしてもよい。マイクロプロセッサが、コンピュータプログラムにしたがって動作することにより、前記ICカードまたは前記モジュールは、その機能を達成する。このICカードまたはこのモジュールは、耐タンパ性を有するとしてもよい。
(4)本発明は、上記に示す方法であるとしてもよい。また、これらの方法をコンピュータにより実現するコンピュータプログラムであるとしてもよいし、前記コンピュータプログラムからなるデジタル信号であるとしてもよい。
また、本発明は、前記コンピュータプログラムまたは前記デジタル信号をコンピュータ読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、CD−ROM、MO、DVD、DVD−ROM、DVD−RAM、BD(Blu−ray Disc)、半導体メモリなどに記録したものとしてもよい。また、これらの記録媒体に記録されている前記デジタル信号であるとしてもよい。
また、本発明は、前記コンピュータプログラムまたは前記デジタル信号を、電気通信回線、無線または有線通信回線、インターネットを代表とするネットワーク、データ放送等を経由して伝送するものとしてもよい。
また、本発明は、マイクロプロセッサとメモリを備えたコンピュータシステムであって、前記メモリは、上記コンピュータプログラムを記憶しており、前記マイクロプロセッサは、前記コンピュータプログラムにしたがって動作するとしてもよい。
また、前記プログラムまたは前記デジタル信号を前記記録媒体に記録して移送することにより、または前記プログラムまたは前記デジタル信号を前記ネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしてもよい。
(5)セキュリティデバイスは、耐タンパソフトウェアまたはソフトウェアと及びハードウェアにより実施されるよしてもよい。
(6)CPUは特別な動作モード(セキュアモードなど)を備え、CPUによって実行されるソフトウェアはその特別な動作モード(セキュアモードなど)で動作することで安全に実行されるとしてもよい。
(7)上記実施の形態及び上記変形例をそれぞれ組み合わせるとしてもよい。
本発明は、パーソナルコンピュータや携帯電話、オーディオプレーヤ、テレビ受像機、ビデオレコーダなど、プログラムデータの更新を行う情報通信機器や家電機器に広く利用することができる。
本発明の端末に搭載されるセキュリティモジュールをそれらの機器に搭載し、本発明の端末と同様の構成にすることによって、機器のソフトウェアが複数のソフトウェアモジュールから構成される場合において、古いソフトウェアモジュールにすりかえるといった不正行為を防止し、各ソフトウェアモジュールの更新処理を個別に行うことが可能となる。
また、証明書の更新の際に電源断が起こり、ソフトウェアモジュールのコードイメージや証明書間に不整合が生じてしまった場合でも、ブート処理時に構成情報累積部と代替仮想構成情報累積部の両方を参照して検証をすることで、古いソフトウェアモジュールを実行することなく、セキュアブート処理を完了させ、証明書の更新処理を再開することが出来る。
100 端末
101 CPU
102 セキュリティデバイス
103 代替構成情報累積部
104 更新手段
105 ブート制御手段
106 ソフトウェアモジュール格納手段
107 証明書格納手段
108 通知手段

Claims (13)

  1. 複数のソフトウェアモジュールを予め定められた順番で起動するセキュアブート端末であって、
    前記複数のソフトウェアモジュールそれぞれについて、当該ソフトウェアモジュールから要約値として算出されるべき目標要約値と、当該ソフトウェアモジュールより先に起動される他のソフトウェアモジュールそれぞれの目標要約値を累積演算した場合に得られるべき目標累積値とを含むデジタル証明書を格納している第1格納手段と、
    起動の順番に達したソフトウェアモジュールについて、当該ソフトウェアモジュールより先に起動される他のソフトウェアモジュールそれぞれの要約値を累積演算した実累積値と、当該ソフトウェアモジュールに対応するデジタル証明書に含まれる目標累積値とを比較して、当該ソフトウェアモジュールより先に起動されるソフトウェアモジュールの有効性を検証する検証手段と、
    前記複数のソフトウェアモジュールのうち1つのソフトウェアモジュール、及び前記1つのソフトウェアモジュールに係るデジタル証明書を更新する更新手段と、
    前記他のソフトウェアモジュールそれぞれについて、デジタル証明書が更新されている場合は更新前のデジタル証明書に含まれる目標要約値を累積演算し、更新されていない場合は当該デジタル証明書に含まれる目標要約値を累積演算した代替累積値を格納する第2格納手段と、
    (a)前記検証手段による有効性の検証が成功した場合、前記起動の順番に達したソフトウェアモジュールを起動し、(b)前記検証手段による有効性の検証が失敗した場合、前記代替累積値と前記起動の順番に達したソフトウェアモジュールに係るデジタル証明書に含まれる目標累積値とを比較し、前記目標累積値と前記代替累積値が一致すれば、前記起動の順番に達したソフトウェアモジュールを起動するブート制御手段と
    を備えることを特徴とするセキュアブート端末。
  2. 前記更新手段は、更に、
    全ソフトウェアモジュールが起動した後に、前記検証手段による検証に失敗したソフトウェアモジュールについて、当該ソフトウェアモジュールに対応するデジタル証明書を更新する
    ことを特徴とする請求項1記載のセキュアブート端末。
  3. 前記セキュアブート端末は、更に、
    前記他のソフトウェアモジュールそれぞれについて更新があったか否かを判定する更新判定手段と、
    更新があったソフトウェアモジュールについては、当該ソフトウェアモジュールに係る更新前のデジタル証明書に含まれる目標要約値を累積演算し、更新がなかったソフトウェアモジュールについては、当該ソフトウェアモジュールに係るデジタル証明書に含まれる目標要約値を累積演算して前記代替累積値を算出し、前記第2格納手段に記録する代替累積手段と
    を備えることを特徴とする請求項2記載のセキュアブート端末。
  4. 前記代替累積手段は、更に、
    前記更新があったソフトウェアモジュールについては、前記ソフトウェアモジュールから算出される要約値が、前記ソフトウェアモジュールに係るデジタル証明書に含まれる目標要約値と一致するか否かを確認し、一致する場合に、前記更新前のデジタル証明書に含まれる目標要約値を累積演算する
    ことを特徴とする請求項3記載のセキュアブート端末。
  5. 前記代替累積手段は、前記代替累積値を暗号化して前記第2格納手段に格納する
    ことを特徴とする請求項3記載のセキュアブート端末。
  6. 前記セキュアブート端末は、更に、
    前記検証手段による有効性の検証が失敗したソフトウェアモジュールが前記ブート制御手段によって起動された場合、当該ソフトウェアモジュールに対応するデジタル証明書の更新が必要である旨を通知する通知手段
    を備えることを特徴とする請求項1記載のセキュアブート端末。
  7. 前記デジタル証明書は、対応するソフトウェアモジュールについて、前記検証手段による検証が失敗した場合に制限すべき機能を示す制限情報を含み、
    前記ブート制御手段は、前記検証手段による検証が失敗したソフトウェアモジュールを起動する場合、前記制限情報により示される機能を制限した状態で前記ソフトウェアモジュールを起動する
    ことを特徴とする請求項1記載のセキュアブート端末。
  8. 前記セキュアブート端末は、更に、
    前記複数のソフトウェアモジュールのそれぞれについて、
    前記ソフトウェアモジュールを示す情報と、前記ソフトウェアモジュールに係る現在のデジタル証明書を示す情報と、前記ソフトウェアモジュールに係る更新前のデジタル証明書を示す情報とを格納する領域を持つ複数の構造体、及び、前記複数の構造体のうち1つの構造体を使用中の現構造体として指し示す現構造体ポインタを記憶する構造体格納手段を備え、
    前記更新手段は、
    前記1つのソフトウェアモジュールの更新版及び前記1つのソフトウェアモジュールに係るデジタル証明書の更新版を取得する取得部と、
    前記1つのソフトウェアモジュールに対応する構造体のうち、現構造体ポインタによって示されていない構造体である更新用構造体について、
    (a)前記更新用構造体の前記ソフトウェアモジュールを示す情報として、前記1つのソフトウェアモジュールの更新版を示す情報を格納し、(b)前記更新用構造体の前記現在のデジタル証明書を示す情報として、前記1つのソフトウェアモジュールに係るデジタル証明書の更新版を示す情報を格納し、(c)前記更新用構造体の前記更新前のデジタル証明書を示す情報として、前記現構造体ポインタの示す構造体の前記現在のデジタル証明書を示す情報を格納する構造体更新部と、
    前記現構造体ポインタを、前記更新用構造体を示すよう更新するポインタ変更部と
    を備えることを特徴とする請求項1記載のセキュアブート端末。
  9. 前記セキュアブート端末は、更に、
    前記複数のソフトウェアモジュールのうち1つのソフトウェアモジュールについてデジタル証明書の更新版を取得する取得手段と、
    前記1つのソフトウェアモジュールより起動の順番が前の他のソフトウェアモジュールそれぞれに対応する目標要約値を累積演算して事前累積値を生成する事前累積値生成手段と、
    前記事前累積値と、前記デジタル証明書の更新版に含まれる目標累積値とを比較して、前記1つのソフトウェアモジュールよりも起動の順番が前のソフトウェアモジュールの有効性を検証する事前検証手段とを備え、
    前記更新手段は、更に、前記事前検証手段による検証に成功した場合に、前記デジタル証明書の更新版で、前記1つのソフトウェアモジュールに係るデジタル証明書を更新する
    ことを特徴とする請求項1記載のセキュアブート端末。
  10. 複数のソフトウェアモジュールを予め定められた順番で起動するセキュアブート端末に用いられるセキュアブート方法であって、
    前記複数のソフトウェアモジュールそれぞれについて、当該ソフトウェアモジュールから要約値として算出されるべき目標要約値と、当該ソフトウェアモジュールより先に起動される他のソフトウェアモジュールそれぞれの目標要約値を累積演算した場合に得られるべき目標累積値とを含むデジタル証明書を格納する第1格納ステップと、
    起動の順番に達したソフトウェアモジュールについて、当該ソフトウェアモジュールより先に起動される他のソフトウェアモジュールそれぞれの要約値を累積演算した実累積値と、当該ソフトウェアモジュールに対応するデジタル証明書に含まれる目標累積値とを比較して、当該ソフトウェアモジュールより先に起動されるソフトウェアモジュールの有効性を検証する検証ステップと、
    前記複数のソフトウェアモジュールのうち1つのソフトウェアモジュール、及び前記1つのソフトウェアモジュールに係るデジタル証明書を更新する更新ステップと、
    前記他のソフトウェアモジュールそれぞれについて、デジタル証明書が更新されている場合は更新前のデジタル証明書に含まれる目標要約値を累積演算し、更新されていない場合は当該デジタル証明書に含まれる目標要約値を累積演算した代替累積値を格納する第2格納ステップと、
    (a)前記検証手段による有効性の検証が成功した場合、前記起動の順番に達したソフトウェアモジュールを起動し、(b)前記検証手段による有効性の検証が失敗した場合、前記代替累積値と前記起動の順番に達したソフトウェアモジュールに係るデジタル証明書に含まれる目標累積値とを比較し、前記目標累積値と前記代替累積値が一致すれば、前記起動の順番に達したソフトウェアモジュールを起動するブート制御ステップと
    を含むことを特徴とするセキュアブート方法。
  11. 複数のソフトウェアモジュールを予め定められた順番で起動するセキュアブート端末に用いられるセキュアブートプログラムであって、
    前記複数のソフトウェアモジュールそれぞれについて、当該ソフトウェアモジュールから要約値として算出されるべき目標要約値と、当該ソフトウェアモジュールより先に起動される他のソフトウェアモジュールそれぞれの目標要約値を累積演算した場合に得られるべき目標累積値とを含むデジタル証明書を格納する第1格納ステップと、
    起動の順番に達したソフトウェアモジュールについて、当該ソフトウェアモジュールより先に起動される他のソフトウェアモジュールそれぞれの要約値を累積演算した実累積値と、当該ソフトウェアモジュールに対応するデジタル証明書に含まれる目標累積値とを比較して、当該ソフトウェアモジュールより先に起動されるソフトウェアモジュールの有効性を検証する検証ステップと、
    前記複数のソフトウェアモジュールのうち1つのソフトウェアモジュール、及び前記1つのソフトウェアモジュールに係るデジタル証明書を更新する更新ステップと、
    前記他のソフトウェアモジュールそれぞれについて、デジタル証明書が更新されている場合は更新前のデジタル証明書に含まれる目標要約値を累積演算し、更新されていない場合は当該デジタル証明書に含まれる目標要約値を累積演算した代替累積値を格納する第2格納ステップと、
    (a)前記検証手段による有効性の検証が成功した場合、前記起動の順番に達したソフトウェアモジュールを起動し、(b)前記検証手段による有効性の検証が失敗した場合、前記代替累積値と前記起動の順番に達したソフトウェアモジュールに係るデジタル証明書に含まれる目標累積値とを比較し、前記目標累積値と前記代替累積値が一致すれば、前記起動の順番に達したソフトウェアモジュールを起動するブート制御ステップと
    を含むことを特徴とするセキュアブートプログラム。
  12. 複数のソフトウェアモジュールを予め定められた順番で起動するセキュアブート端末に用いられるセキュアブートプログラムを記録する記録媒体であって、
    前記セキュアブートプログラムは、
    前記複数のソフトウェアモジュールそれぞれについて、当該ソフトウェアモジュールから要約値として算出されるべき目標要約値と、当該ソフトウェアモジュールより先に起動される他のソフトウェアモジュールそれぞれの目標要約値を累積演算した場合に得られるべき目標累積値とを含むデジタル証明書を格納する第1格納ステップと、
    起動の順番に達したソフトウェアモジュールについて、当該ソフトウェアモジュールより先に起動される他のソフトウェアモジュールそれぞれの要約値を累積演算した実累積値と、当該ソフトウェアモジュールに対応するデジタル証明書に含まれる目標累積値とを比較して、当該ソフトウェアモジュールより先に起動されるソフトウェアモジュールの有効性を検証する検証ステップと、
    前記複数のソフトウェアモジュールのうち1つのソフトウェアモジュール、及び前記1つのソフトウェアモジュールに係るデジタル証明書を更新する更新ステップと、
    前記他のソフトウェアモジュールそれぞれについて、デジタル証明書が更新されている場合は更新前のデジタル証明書に含まれる目標要約値を累積演算し、更新されていない場合は当該デジタル証明書に含まれる目標要約値を累積演算した代替累積値を格納する第2格納ステップと、
    (a)前記検証手段による有効性の検証が成功した場合、前記起動の順番に達したソフトウェアモジュールを起動し、(b)前記検証手段による有効性の検証が失敗した場合、前記代替累積値と前記起動の順番に達したソフトウェアモジュールに係るデジタル証明書に含まれる目標累積値とを比較し、前記目標累積値と前記代替累積値が一致すれば、前記起動の順番に達したソフトウェアモジュールを起動するブート制御ステップと
    を含む
    ことを特徴とする記録媒体。
  13. 複数のソフトウェアモジュールを予め定められた順番で起動する集積回路であって、
    前記複数のソフトウェアモジュールそれぞれについて、当該ソフトウェアモジュールから要約値として算出されるべき目標要約値と、当該ソフトウェアモジュールより先に起動される他のソフトウェアモジュールそれぞれの目標要約値を累積演算した場合に得られるべき目標累積値とを含むデジタル証明書を格納している第1格納手段と、
    起動の順番に達したソフトウェアモジュールについて、当該ソフトウェアモジュールより先に起動される他のソフトウェアモジュールそれぞれの要約値を累積演算した実累積値と、当該ソフトウェアモジュールに対応するデジタル証明書に含まれる目標累積値とを比較して、当該ソフトウェアモジュールより先に起動されるソフトウェアモジュールの有効性を検証する検証手段と、
    前記複数のソフトウェアモジュールのうち1つのソフトウェアモジュール、及び前記1つのソフトウェアモジュールに係るデジタル証明書を更新する更新手段と、
    前記他のソフトウェアモジュールそれぞれについて、デジタル証明書が更新されている場合は更新前のデジタル証明書に含まれる目標要約値を累積演算し、更新されていない場合は当該デジタル証明書に含まれる目標要約値を累積演算した代替累積値を格納する第2格納手段と、
    (a)前記検証手段による有効性の検証が成功した場合、前記起動の順番に達したソフトウェアモジュールを起動し、(b)前記検証手段による有効性の検証が失敗した場合、前記代替累積値と前記起動の順番に達したソフトウェアモジュールに係るデジタル証明書に含まれる目標累積値とを比較し、前記目標累積値と前記代替累積値が一致すれば、前記起動の順番に達したソフトウェアモジュールを起動するブート制御手段と
    を備えることを特徴とする集積回路。
JP2009535966A 2007-10-05 2008-09-30 セキュアブート端末、セキュアブート方法、セキュアブートプログラム、記録媒体及び集積回路 Expired - Fee Related JP5385148B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009535966A JP5385148B2 (ja) 2007-10-05 2008-09-30 セキュアブート端末、セキュアブート方法、セキュアブートプログラム、記録媒体及び集積回路

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2007261977 2007-10-05
JP2007261977 2007-10-05
PCT/JP2008/002728 WO2009044533A1 (ja) 2007-10-05 2008-09-30 セキュアブート端末、セキュアブート方法、セキュアブートプログラム、記録媒体及び集積回路
JP2009535966A JP5385148B2 (ja) 2007-10-05 2008-09-30 セキュアブート端末、セキュアブート方法、セキュアブートプログラム、記録媒体及び集積回路

Publications (2)

Publication Number Publication Date
JPWO2009044533A1 true JPWO2009044533A1 (ja) 2011-02-03
JP5385148B2 JP5385148B2 (ja) 2014-01-08

Family

ID=40525965

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009535966A Expired - Fee Related JP5385148B2 (ja) 2007-10-05 2008-09-30 セキュアブート端末、セキュアブート方法、セキュアブートプログラム、記録媒体及び集積回路

Country Status (4)

Country Link
US (1) US8555049B2 (ja)
EP (1) EP2196936A4 (ja)
JP (1) JP5385148B2 (ja)
WO (1) WO2009044533A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017517028A (ja) * 2014-04-17 2017-06-22 ソフトバンク・ロボティクス・ヨーロッパSoftbank Robotics Europe ロボットとの対話を取り扱う方法とシステム

Families Citing this family (50)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9069990B2 (en) * 2007-11-28 2015-06-30 Nvidia Corporation Secure information storage system and method
US9158896B2 (en) * 2008-02-11 2015-10-13 Nvidia Corporation Method and system for generating a secure key
US20090204801A1 (en) * 2008-02-11 2009-08-13 Nvidia Corporation Mechanism for secure download of code to a locked system
US9069706B2 (en) * 2008-02-11 2015-06-30 Nvidia Corporation Confidential information protection system and method
US9613215B2 (en) 2008-04-10 2017-04-04 Nvidia Corporation Method and system for implementing a secure chain of trust
JP5178341B2 (ja) * 2008-06-23 2013-04-10 パナソニック株式会社 オプショナルなコンポーネントを伴うセキュアブートの方法
EP2293216A1 (en) * 2008-06-23 2011-03-09 Panasonic Corporation Information processing device, information processing method, and computer program and integrated circuit for the realization thereof
US8375211B2 (en) * 2009-04-21 2013-02-12 International Business Machines Corporation Optimization of signing soap body element
RU2011148523A (ru) * 2009-07-01 2013-08-20 Панасоник Корпорэйшн Способ защищенной загрузки и устройство защищенной загрузки
US8205257B1 (en) * 2009-07-28 2012-06-19 Symantec Corporation Systems and methods for preventing threats originating from a non-process based component hosted by a trusted process
EP2558972A1 (en) * 2010-04-12 2013-02-20 InterDigital Patent Holdings, Inc. Staged control release in boot process
US20120084562A1 (en) * 2010-10-04 2012-04-05 Ralph Rabert Farina Methods and systems for updating a secure boot device using cryptographically secured communications across unsecured networks
KR101649115B1 (ko) * 2010-11-11 2016-08-19 삼성전자주식회사 디스플레이 장치 및 이에 적용되는 마이컴 코드 업데이트 방법
KR20130114672A (ko) 2011-01-19 2013-10-17 인터내셔널 비지네스 머신즈 코포레이션 소프트웨어를 업데이트하는 장치 및 방법
US9015455B2 (en) * 2011-07-07 2015-04-21 Intel Corporation Processsor integral technologies for BIOS flash attack protection and notification
US8812830B2 (en) 2011-08-31 2014-08-19 Microsoft Corporation Attestation protocol for securely booting a guest operating system
CN103136019A (zh) * 2011-11-29 2013-06-05 国际商业机器公司 用于加载配置信息的方法和装置
US9262637B2 (en) * 2012-03-29 2016-02-16 Cisco Technology, Inc. System and method for verifying integrity of platform object using locally stored measurement
US9489924B2 (en) 2012-04-19 2016-11-08 Nvidia Corporation Boot display device detection and selection techniques in multi-GPU devices
EP2973156B1 (en) * 2013-03-15 2018-04-25 Intel Corporation Key revocation in system on chip devices
CN103338450A (zh) * 2013-06-26 2013-10-02 华为技术有限公司 一种验证方法及设备
CN105981326B (zh) * 2014-02-26 2019-05-14 三菱电机株式会社 证书管理装置和证书管理方法
US9438627B2 (en) 2014-06-11 2016-09-06 International Business Machines Corporation Shared security utility appliance for secure application and data processing
US10552827B2 (en) * 2014-09-02 2020-02-04 Google Llc Dynamic digital certificate updating
US9916451B2 (en) * 2015-02-09 2018-03-13 Dell Products L.P. Information handling system boot pre-validation
AT517154B1 (de) * 2015-03-05 2018-07-15 Siemens Ag Oesterreich Überwachung des Startvorgangs einer integrierten Schaltung
US9674162B1 (en) 2015-03-13 2017-06-06 Amazon Technologies, Inc. Updating encrypted cryptographic key pair
US9893885B1 (en) 2015-03-13 2018-02-13 Amazon Technologies, Inc. Updating cryptographic key pair
US9479340B1 (en) 2015-03-30 2016-10-25 Amazon Technologies, Inc. Controlling use of encryption keys
US10003467B1 (en) * 2015-03-30 2018-06-19 Amazon Technologies, Inc. Controlling digital certificate use
JP6601491B2 (ja) * 2015-05-20 2019-11-06 富士通株式会社 プログラム検証方法、検証プログラム、及び情報処理装置
JP6595822B2 (ja) * 2015-07-07 2019-10-23 キヤノン株式会社 情報処理装置及びその制御方法
US10503931B2 (en) * 2016-05-09 2019-12-10 Arris Enterprises Llc Method and apparatus for dynamic executable verification
EP3333748A1 (de) * 2016-12-08 2018-06-13 Siemens Aktiengesellschaft Geräteeinheit geeignet für den betrieb im geschützten und/oder offenen betriebszustand sowie zugehöriges verfahren
EP3542298B1 (en) 2017-01-12 2022-08-03 Google LLC Verified boot and key rotation
EP3382590B1 (en) * 2017-03-31 2019-10-16 OMRON Corporation Method for initializing a computerized system and computerized system against rollback attacks
JP2018194879A (ja) 2017-05-12 2018-12-06 ルネサスエレクトロニクス株式会社 半導体装置、ブート方法、およびブートプログラム
WO2019036795A1 (en) 2017-08-22 2019-02-28 Absolute Software Corporation MONITORING INTEGRITY OF A FIRMWARE USING "SILVER" MEASURES
EP3489853B1 (en) 2017-11-27 2021-02-24 Schneider Electric Industries SAS A method for providing a firmware update of a device
US11068600B2 (en) * 2018-05-21 2021-07-20 Kct Holdings, Llc Apparatus and method for secure router with layered encryption
US11120137B2 (en) 2018-06-19 2021-09-14 Netgear, Inc. Secure transfer of registered network access devices
US11347879B2 (en) * 2018-09-07 2022-05-31 Truist Bank Determining the relative risk for using an originating IP address as an identifying factor
JP7182966B2 (ja) * 2018-09-12 2022-12-05 キヤノン株式会社 情報処理装置、情報処理装置の起動方法、及びプログラム
US10771264B2 (en) 2018-10-10 2020-09-08 Hewlett Packard Enterprise Development Lp Securing firmware
US11861011B2 (en) * 2019-06-25 2024-01-02 ZPE Systems, Inc. Secure boot process
JP7289739B2 (ja) * 2019-06-27 2023-06-12 キヤノン株式会社 情報処理装置、情報処理方法およびプログラム
KR20210091585A (ko) * 2020-01-14 2021-07-22 삼성전자주식회사 사용자 인증에 기반한 펌웨어 업데이트를 수행하는 전자 장치 및 이의 동작방법
US11431510B1 (en) * 2020-04-30 2022-08-30 Wells Fargo Bank, N.A. Code-sign white listing (CSWL)
US11681513B2 (en) * 2020-05-14 2023-06-20 Texas Instmments Incorporated Controlled scope of authentication key for software update
FR3122749B1 (fr) 2021-05-10 2023-10-27 Marbeuf Conseil Et Rech Procédé pour sécuriser l’utilisation d’un logiciel

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6157721A (en) * 1996-08-12 2000-12-05 Intertrust Technologies Corp. Systems and methods using cryptography to protect secure computing environments
US7194092B1 (en) * 1998-10-26 2007-03-20 Microsoft Corporation Key-based secure storage
US6263431B1 (en) * 1998-12-31 2001-07-17 Intle Corporation Operating system bootstrap security mechanism
US6757824B1 (en) * 1999-12-10 2004-06-29 Microsoft Corporation Client-side boot domains and boot rules
US6715085B2 (en) * 2002-04-18 2004-03-30 International Business Machines Corporation Initializing, maintaining, updating and recovering secure operation within an integrated system employing a data access control function
JP2004013477A (ja) 2002-06-06 2004-01-15 Nec Viewtechnology Ltd ブートプログラム選択及び更新方法並びにこれを用いたフラッシュメモリ
US7216369B2 (en) * 2002-06-28 2007-05-08 Intel Corporation Trusted platform apparatus, system, and method
US20050021968A1 (en) 2003-06-25 2005-01-27 Zimmer Vincent J. Method for performing a trusted firmware/bios update
US7533274B2 (en) * 2003-11-13 2009-05-12 International Business Machines Corporation Reducing the boot time of a TCPA based computing system when the core root of trust measurement is embedded in the boot block code
US7318150B2 (en) * 2004-02-25 2008-01-08 Intel Corporation System and method to support platform firmware as a trusted process
US20060136705A1 (en) * 2004-12-21 2006-06-22 Motorola, Inc. Multiple stage software verification
JP4093494B2 (ja) * 2005-09-08 2008-06-04 インターナショナル・ビジネス・マシーンズ・コーポレーション 秘密情報へのアクセスを制御するシステムおよびその方法
KR100746012B1 (ko) * 2005-11-07 2007-08-06 삼성전자주식회사 코드 이미지를 안전하게 갱신하고 부팅하는 방법 및 장치
JP4769608B2 (ja) * 2006-03-22 2011-09-07 富士通株式会社 起動検証機能を有する情報処理装置
US7827397B2 (en) * 2006-07-13 2010-11-02 Aristocrat Technologies Australia Pty, Ltd. Gaming machine having a secure boot chain and method of use
US7743422B2 (en) * 2006-08-21 2010-06-22 International Business Machines Corporation System and method for validating a computer platform when booting from an external device
US8117429B2 (en) * 2006-11-01 2012-02-14 Nokia Corporation System and method for a distributed and flexible configuration of a TCG TPM-based local verifier
US8254568B2 (en) * 2007-01-07 2012-08-28 Apple Inc. Secure booting a computing device
US20080178257A1 (en) * 2007-01-20 2008-07-24 Takuya Mishina Method for integrity metrics management
US8621191B2 (en) * 2007-12-26 2013-12-31 Nokia Corporation Methods, apparatuses, and computer program products for providing a secure predefined boot sequence

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017517028A (ja) * 2014-04-17 2017-06-22 ソフトバンク・ロボティクス・ヨーロッパSoftbank Robotics Europe ロボットとの対話を取り扱う方法とシステム

Also Published As

Publication number Publication date
WO2009044533A1 (ja) 2009-04-09
US8555049B2 (en) 2013-10-08
EP2196936A4 (en) 2012-05-02
EP2196936A1 (en) 2010-06-16
JP5385148B2 (ja) 2014-01-08
US20100185845A1 (en) 2010-07-22

Similar Documents

Publication Publication Date Title
JP5385148B2 (ja) セキュアブート端末、セキュアブート方法、セキュアブートプログラム、記録媒体及び集積回路
US9626513B1 (en) Trusted modular firmware update using digital certificate
JP5357152B2 (ja) 情報処理装置、情報処理方法、これらを実現するコンピュータプログラム及び集積回路
US8479000B2 (en) Information processing device, authentication system, authentication device, information processing method, information processing program, recording medium, and integrated circuit
US9680648B2 (en) Securely recovering a computing device
JP5178341B2 (ja) オプショナルなコンポーネントを伴うセキュアブートの方法
JP5411122B2 (ja) 情報処理装置
US8732445B2 (en) Information processing device, information processing method, information processing program, and integrated circuit
KR100998344B1 (ko) 신뢰되는 모바일 전화들을 위한 크기조절 가능하고 구성가능한 간단한 보안 부트
CN101578609B (zh) 安全启动计算设备
JP5530460B2 (ja) セキュアブート方法およびセキュアブート装置
US8392724B2 (en) Information terminal, security device, data protection method, and data protection program
KR20110050488A (ko) 티켓 인증 보안 설치 및 부트
JP2009003853A (ja) 複数のソフトウェアを正しい順番で起動する情報端末およびセキュリティモジュール
JP2012039390A (ja) フレキシブル認証ルールの修正
WO2020027159A1 (ja) 情報処理装置、検証方法および検証プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110613

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130702

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130821

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: 20130910

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20131003

R150 Certificate of patent or registration of utility model

Ref document number: 5385148

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees