JP5457362B2 - 情報処理装置、情報処理方法、情報処理プログラム及び集積回路 - Google Patents

情報処理装置、情報処理方法、情報処理プログラム及び集積回路 Download PDF

Info

Publication number
JP5457362B2
JP5457362B2 JP2010532825A JP2010532825A JP5457362B2 JP 5457362 B2 JP5457362 B2 JP 5457362B2 JP 2010532825 A JP2010532825 A JP 2010532825A JP 2010532825 A JP2010532825 A JP 2010532825A JP 5457362 B2 JP5457362 B2 JP 5457362B2
Authority
JP
Japan
Prior art keywords
data
program
seal
value
information processing
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.)
Expired - Fee Related
Application number
JP2010532825A
Other languages
English (en)
Other versions
JPWO2010041462A1 (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 JP2010532825A priority Critical patent/JP5457362B2/ja
Publication of JPWO2010041462A1 publication Critical patent/JPWO2010041462A1/ja
Application granted granted Critical
Publication of JP5457362B2 publication Critical patent/JP5457362B2/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

Description

本発明は、保持するプログラムをセキュアにブートする情報処理装置に関し、特に、プログラムを更新する必要が生じた場合でもセキュアな状態を維持する技術に関する。
近年、携帯電話機などの端末装置において、セキュアなプラットフォームを実現するため、端末装置の起動開始後、OSやアプリケーション等の各プログラムを起動する際に各プログラムのハッシュ値を計測し、計測された値やその累積値が期待される値であるか否かに基づき装置全体の完全性を検証しながら起動するセキュアブートが行われている(非特許文献1〜5参照)。このセキュアブートにおいては、起動中の特定のプログラムが、特定のデータを用いることがある。例えば、端末装置において、プログラムBが暗号化されており、プログラムA(特定のプログラムに相当)が起動してから、復号鍵(特定のデータに相当)を用いてプログラムBを復号し、復号したプログラムBを起動する場合などがこれに該当する。この場合、復号鍵は、プログラムAのみが、プログラムA起動直前においてプラットフォームがセキュアである場合のみ使用できるよう制限される必要がある。
セキュアブート中に、特定のプログラムが特定のデータをセキュアに扱う技術として、セキュアなデータをTCG(Trusted Computing Group)で規定されるTPM(Trusted Platform Module)のシール(Seal)処理することでシールデータとして保護し、セキュアブート過程でそのシールデータをシール解除条件に従ってシール解除(UnSeal)して安全に利用する方法が特許文献1に開示されている。特許文献1によれば、端末装置は、シール処理として、TPMにて管理される公開鍵暗号の鍵ペアの公開鍵で保護対象データを暗号化して保護する(以下、シール保護という。)。この場合、保護対象データは、暗号化プログラムBを復号するための復号鍵であり、シール解除条件は、プログラムAのハッシュ値がExtend処理されたPCR(Platform Configuration Registers)に格納されているべき期待値(以下、PCR期待値という。)の期待値である。そして、端末装置は、シール解除処理として、シールデータの復号要求をし、TPM内にて復号する時点のTPMに蓄積されているPCRの値と、シール解除条件に設定されているPCR期待値とが等しいときのみ、復号された平文の保護対象データを出力する。以上のように、シール解除条件を用いることで、保護対象データの平文データを得るのを所定のプログラムが正しく起動している場合のみに制限することができる。一方、プログラムの改ざんがあった場合など端末装置が不正な状態となっている場合は、シールデータ内の保護対象データから平文データを抽出することができずセキュアブートは成功しない。
特開2006−323814号公報
TPM Main、Part1 Design Principles、Specification version 1.2 Level2 Revision103(9 July 2007) TPM Main、Part2 TPM Structures、Specification version1.2 Level2 Revision103(9 July 2007) TPM Main、Part3 Commands、Specification version 1.2 Level2 Revision103(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)
しかしながら、特許文献1の技術によると、上述のように保護対象データに係る平文データを得るのを所定のプログラムが正しく起動した場合に制限できるものの、プログラムAが更新されてしまうと、プログラムAのハッシュ値も変わるため、このままでは更新前のプログラムAのハッシュ値がExtend処理されたPCRをシール解除条件とするシールデータを復元できなくなってしまう。シールデータを復元可能とするには、端末装置を一旦リブートし、リブート過程で更新前のシール解除条件に合致するPCR値を得て、このPCR値をもってシール解除を行い、更新後のPCR期待値をもって再シールする必要がある。すなわち、プログラムAを更新すれば、必ず、端末装置をリブートする必要が生じてしまうという問題がある。
上記の課題を解決するために、本発明の一実施態様である情報処理装置は、複数のプログラムをそれぞれの完全性を検証しながら予め定めた順番で起動するセキュアブートを実行する情報処理装置であって、前記複数のプログラムを実行する実行手段と、プログラムが起動される毎に、起動されたプログラムの特徴情報を生成して累積し、得られた累積値を保持する累積手段と、特定のプログラムが起動に使用する起動用データを、当該プログラムの起動直前に前記累積手段により保持されている累積値の期待値とともに保護した第1の保護化データと、前記起動用データを、セキュアブート後に前記累積手段により保持されている累積値の期待値とともに保護した第2の保護化データとを保持する記憶手段と、セキュアブート後に、前記特定のプログラムより起動順が先のプログラムの更新を行う場合に、前記第2の保護化データの保護を解除し、前記第2の保護化データに係る期待値と、セキュアブート後に前記累積手段により保持されている累積値とが一致するか否か判定し、一致する場合にのみ前記第2の保護化データに係る前記起動用データを出力する保護解除手段と、前記起動用データが出力された場合に、前記第1の保護化データについて、前記起動用データを、前記更新後における前記特定のプログラムの起動直前に前記累積手段により保持されている累積値の期待値とともに再保護する再保護手段とを備える。
本発明の一実施態様である情報処理装置は、上述の構成を備えることにより、セキュアブート完了後に保護化データを使用するプログラムが更新される場合であっても、保護解除手段による、第2の保護化データに係る起動用データの出力は、セキュアブート後の累積値と、期待値との一致を条件としているので、保護解除手段は、セキュアブート完了後に第2の保護化データの保護を解除して起動用データを出力することができ、前記情報処理装置はリブートすることなく、起動用データの更新、再保護をすることができる。
本発明の実施の形態1における情報処理システム1の構成の概略を示す図 本発明の実施の形態1におけるセキュアブートについて説明するための図 本発明の実施の形態1における情報処理端末の構成を示す図 本発明の実施の形態1におけるプログラム証明書のデータ構造を示す図 本発明の実施の形態1におけるプログラム証明書の具体例を示す図である。 本発明の実施の形態1におけるシールデータのデータ構造を示す図 本発明の実施の形態1におけるシールデータの具体例を示す図。図7(a)は、通常用シールデータ、図7(b)は、更新用シールデータの具体例を示す。 本発明の実施の形態1におけるセキュアブート完了状態の期待値をシール解除条件とした更新用シールデータの例を示す図。 本発明の実施の形態1におけるシールデータ依存リストを示す図 本発明の実施の形態1におけるシールデータ鍵ペアを示す図 本発明の実施の形態1におけるシール処理のフロー図 本発明の実施の形態1におけるシール解除処理のフロー図 本発明の実施の形態1におけるセキュアブート完了状態の期待値の生成フロー図 本発明の実施の形態1におけるシールデータ依存リストの生成フロー図 本発明の実施の形態1におけるセキュアブートのシーケンスを示す図 本発明の実施の形態1におけるセキュアブートのシーケンスを示す図(図15の続き) 本発明の実施の形態1におけるセキュアブートのシーケンスを示す図(図16の続き) 本発明の実施の形態1におけるセキュアブート中の各ステージにおける環境情報レジスタの値を示す模式図 本発明の実施の形態1におけるセキュアブート完了状態の環境情報レジスタに格納されるべき値の期待値の生成のイメージを示した図 本発明の実施の形態1における更新用シールデータ生成のフロー図 本発明の実施の形態1におけるセキュアブート対象のプログラム更新時の処理のフロー図 本発明の実施の形態1におけるセキュアブート対象のプログラム更新時の処理のフロー図(図21の続き) 本発明の実施の形態1におけるセキュアブート対象のプログラム更新時の処理のフロー図(図22の続き) 本発明の実施の形態2におけるロールバック対応した際のシールデータ格納部を示した図 本発明の実施の形態2におけるプログラム更新要求時のフロー図 本発明の実施の形態2におけるプログラムロールバック要求時のフロー図 本発明の実施の形態2におけるプログラムロールバック要求時のフロー図(図26の続き)
本発明の一実施態様である情報処理装置は、複数のプログラムをそれぞれの完全性を検証しながら予め定めた順番で起動するセキュアブートを実行する情報処理装置であって、前記複数のプログラムを実行する実行手段と、プログラムが起動される毎に、起動されたプログラムの特徴情報を生成して累積し、得られた累積値を保持する累積手段と、特定のプログラムが起動に使用する起動用データを、当該プログラムの起動直前に前記累積手段により保持されている累積値の期待値とともに保護した第1の保護化データと、前記起動用データを、セキュアブート後に前記累積手段により保持されている累積値の期待値とともに保護した第2の保護化データとを保持する記憶手段と、セキュアブート後に、前記特定のプログラムより起動順が先のプログラムの更新を行う場合に、前記第2の保護化データの保護を解除し、前記第2の保護化データに係る期待値と、セキュアブート後に前記累積手段により保持されている累積値とが一致するか否か判定し、一致する場合にのみ前記第2の保護化データに係る前記起動用データを出力する保護解除手段と、前記起動用データが出力された場合に、前記第1の保護化データについて、前記起動用データを、前記更新後における前記特定のプログラムの起動直前に前記累積手段により保持されている累積値の期待値とともに再保護する再保護手段とを備える。
また、前記再保護手段は、前記起動用データが出力された場合に、さらに、前記第2の保護化データについて、前記起動用データを、前記更新がされ、さらにセキュアブートされた後に前記累積手段により保持される累積値の期待値とともに再保護するとしてもよい。
この態様によれば、情報処理装置は、第2の保護化データについて、セキュアブート完了後に前記特定のプログラムが更新される場合でもリブートなく再保護しうる状態にすることができる。
また、前記保護解除手段は、さらに、前記特定のプログラムを実行中の前記実行手段によって前記起動用データの取得要求がされた場合に、前記第1の保護化データの保護を解除し、前記第1の保護化データに係る期待値と、前記累積手段により保持されている累積値とが一致するか否か判定し、一致する場合にのみ前記起動用データを前記実行手段に出力するとしてもよい。
この態様によれば、前記起動用データを、前記特定のプログラムの起動直前における装置全体の完全性を維持した上で、前記特定のプログラムについてのみ使用させることができる。
また、前記再保護手段は、さらに、前記特定のプログラムを実行中の前記実行手段によって、前記起動用データが変更された場合に、前記変更された起動用データを、当該プログラムの起動直前に前記累積手段により保持されている累積値の期待値とともに保護した新たな第1の保護化データを生成し、生成した第1の保護化データで前記記憶手段に保持されている第1の保護化データを置き換え、前記変更された起動用データを、セキュアブート後に前記累積手段により保持されている累積値の期待値とともに保護した新たな第2の保護化データを生成し、生成した第2の保護化データで前記記憶手段に保持されている第2の保護化データを置き換えることとしてもよい。
この態様によれば、情報処理装置は、前記特定のプログラムの実行により、起動用データの内容が変更された場合であっても、変更後の起動用データを、セキュアブート完了後に前記特定のプログラムが更新される場合でもリブートなく再保護しうる状態にすることができる。
また、前記保護解除手段は、さらに、保護解除指示を受け付けて、前記第1の保護化データの保護を解除し、前記第1の保護化データに係る期待値と、前記累積手段により保持されている累積値とが一致するか否か判定し、一致する場合にのみ前記第1の保護化データに係る前記起動用データを出力し、前記情報処理装置は、さらに、前記複数のプログラムそれぞれが起動される毎に、前記保護解除装置に前記保護解除指示を出力し、前記保護解除手段により前記起動用データが出力された場合、当該起動されたプログラムを前記特定のプログラムとして前記第1保護化データと対応付けた管理情報を生成する管理情報生成手段と、前記管理情報を記録する管理情報記録手段とを備え、前記実行手段は、前記管理情報記録手段により前記管理情報が記録されている状態で前記複数のプログラムそれぞれを起動するときに、前記管理情報に基づいて当該起動するプログラムが前記特定のプログラムであるか否かを判断することとしてもよい。
この態様によれば、情報処理装置は、前記複数のプログラムそれぞれを起動する毎に、起動済みのプログラムの特徴情報を用いて前記第1保護化データを復号できるか否かを確認し、前記第1保護化データが復号できれば、次に起動するプログラムを前記特定のプログラムとして前記第1保護化データと対応付けた管理情報を生成するので、これにより、どの第1保護化データがどのプログラムに対応するのかを、逐一第1保護化データを調べることなく管理することができる。
また、前記第1及び第2の保護化データの保護は、暗号化による保護であり、前記保護解除手段は、前記第2の保護化データの保護を解除する場合、前記第2の保護化データを復号し、前記再保護手段は、前記再保護として、前記起動用データを前記累積手段により前記更新後における特定のプログラムの起動直前の累積値の期待値とともに暗号化することとしてもよい。
この態様によれば、前記起動用データは、暗号化により保護されているので、前記起動用データが前記特定のプログラム以外のプログラム等により使用されるのを防ぐことができるとともに、前記特定のプログラムが前記起動用データを使用するのを、前記特定のプログラムよりも先に起動する各プログラムの完全性が維持されている場合のみに制限することができる。
また、前記特徴情報は、起動したプログラムのハッシュ値であるとしてもよい。
この態様によれば、前記特徴情報は、起動したプログラムのハッシュ値であるので、起動したプログラムに改ざんがあれば、特徴情報は期待値と一致しなくなる。このとき、保護解除手段から起動用データが出力されることはない。よって、改ざんされたプログラムが動作している環境では、起動用データが使用されるのを防ぐことができる。
また、前記特徴情報は、前記プログラムが正常に起動した状態を示す状態情報であることとしてもよい。
また、前記状態情報は、前記プログラムが起動したことを示す文字列のハッシュ値であることとしてもよい。
この態様によれば、特徴情報は、前記プログラムが正常に起動した状態を示す状態情報であり、特に文字列のハッシュ値である。状態情報および文字列は「プログラムが起動した」ことを示す情報であり、プログラムの実体とは関わりがないので、特定のプログラムが更新された場合であっても特徴情報自体は変化しない。したがって、特定のプログラムが更新された場合であっても、そのプログラムより後に起動するプログラムに係る起動用データを、新たな特徴情報を使って再保護する必要がなくなり、プログラムの更新頻度を低減することができる。
また、前記再保護手段は、さらに、再保護前の第1の保護化データを前記記憶手段にバックアップし、前記情報処理装置は、さらに、前記更新されたプログラムを更新前のプログラムに戻すよう指示された場合に、再保護された第1の保護化データを、前記第1の保護化データのバックアップで置き換えるロールバック手段を備えることとしてもよい。
この態様によれば、情報処理装置は、前記データ更新部は、更新前の第1保護化データを上書きしないように、前記保護されたデータを前記第1データ格納部に記録し、前記情報処理装置は、さらに、前記更新版に更新されたソフトウェアモジュールを更新前のソフトウェアモジュールに戻すと共に、更新前の前記第1保護化データを新たな第1保護化データとする。これにより、ソフトウェアモジュールを前のバージョンに戻す必要ができた場合、消去せずに残しておいた保護化データを第1保護化データとすることで、第1保護化データを新しく作り直す手間を省くことができる。
本発明の一実施態様である情報処理方法は、複数のプログラムをそれぞれの完全性を検証しながら予め定めた順番で起動するセキュアブートを実行する情報処理装置に用いられる情報処理方法であって、前記情報処理装置は、前記複数のプログラムを実行する実行手段と、プログラムが起動される毎に、起動されたプログラムの特徴情報を生成して累積し、得られた累積値を保持する累積手段と、特定のプログラムが起動に使用する起動用データを、当該プログラムの起動直前に前記累積手段により保持されている累積値の期待値とともに保護した第1の保護化データと、前記起動用データを、セキュアブート後に前記累積手段により保持されている累積値の期待値とともに保護した第2の保護化データとを保持する記憶手段とを備えており、前記情報処理方法は、セキュアブート後に、前記特定のプログラムより起動順が先のプログラムの更新を行う場合に、前記第2の保護化データの保護を解除し、前記第2の保護化データに係る期待値と、セキュアブート後に前記累積手段により保持されている累積値とが一致するか否か判定し、一致する場合にのみ前記第2の保護化データに係る前記起動用データを出力する保護解除ステップと、前記起動用データが出力された場合に、前記第1の保護化データについて、前記起動用データを、前記更新後における前記特定のプログラムの起動直前に前記累積手段により保持されている累積値の期待値とともに再保護する再保護ステップとを含む。
本発明の一実施態様である情報処理プログラムは、複数のプログラムをそれぞれの完全性を検証しながら予め定めた順番で起動するセキュアブートを実行する情報処理装置に用いられる情報処理プログラムであって、前記情報処理装置は、前記複数のプログラムを実行する実行手段と、プログラムが起動される毎に、起動されたプログラムの特徴情報を生成して累積し、得られた累積値を保持する累積手段と、特定のプログラムが起動に使用する起動用データを、当該プログラムの起動直前に前記累積手段により保持されている累積値の期待値とともに保護した第1の保護化データと、前記起動用データを、セキュアブート後に前記累積手段により保持されている累積値の期待値とともに保護した第2の保護化データとを保持する記憶手段とを備えており、前記情報処理プログラムは、セキュアブート後に、前記特定のプログラムより起動順が先のプログラムの更新を行う場合に、前記第2の保護化データの保護を解除し、前記第2の保護化データに係る期待値と、セキュアブート後に前記累積手段により保持されている累積値とが一致するか否か判定し、一致する場合にのみ前記第2の保護化データに係る前記起動用データを出力する保護解除ステップと、前記起動用データが出力された場合に、前記第1の保護化データについて、前記起動用データを、前記更新後における前記特定のプログラムの起動直前に前記累積手段により保持されている累積値の期待値とともに再保護する再保護ステップとをコンピュータに実行させる。
本発明の一実施態様である記録媒体は、複数のプログラムをそれぞれの完全性を検証しながら予め定めた順番で起動するセキュアブートを実行する情報処理装置に用いられる情報処理プログラムを記憶するコンピュータ読み取り可能な記録媒体であって、前記情報処理装置は、前記複数のプログラムを実行する実行手段と、プログラムが起動される毎に、起動されたプログラムの特徴情報を生成して累積し、得られた累積値を保持する累積手段と、特定のプログラムが起動に使用する起動用データを、当該プログラムの起動直前に前記累積手段により保持されている累積値の期待値とともに保護した第1の保護化データと、前記起動用データを、セキュアブート後に前記累積手段により保持されている累積値の期待値とともに保護した第2の保護化データとを保持する記憶手段とを備えており、前記情報処理プログラムは、セキュアブート後に、前記特定のプログラムより起動順が先のプログラムの更新を行う場合に、前記第2の保護化データの保護を解除し、前記第2の保護化データに係る期待値と、セキュアブート後に前記累積手段により保持されている累積値とが一致するか否か判定し、一致する場合にのみ前記第2の保護化データに係る前記起動用データを出力する保護解除ステップと、前記起動用データが出力された場合に、前記第1の保護化データについて、前記起動用データを、前記更新後における前記特定のプログラムの起動直前に前記累積手段により保持されている累積値の期待値とともに再保護する再保護ステップとをコンピュータに実行させる。
この態様によれば、セキュアブート完了後に保護化データを使用するプログラムが更新される場合であっても、保護解除ステップによる、第2の保護化データに係る起動用データの出力は、セキュアブート後の累積値と期待値との一致を条件としているので、保護解除ステップは、セキュアブート完了後に第2の保護化データの保護を解除して起動用データを出力することができ、前記情報処理装置はリブートすることなく、起動用データの更新、再保護をすることができる。
本発明の一実施態様である集積回路は、複数のプログラムをそれぞれの完全性を検証しながら予め定めた順番で起動するセキュアブートを実行する情報処理装置に用いられる集積回路であって、前記複数のプログラムを実行する実行手段と、プログラムが起動される毎に、起動されたプログラムの特徴情報を生成して累積し、得られた累積値を保持する累積手段と、特定のプログラムが起動に使用する起動用データを、当該プログラムの起動直前に前記累積手段により保持されている累積値の期待値とともに保護した第1の保護化データと、前記起動用データを、セキュアブート後に前記累積手段により保持されている累積値の期待値とともに保護した第2の保護化データとを保持する記憶手段と、セキュアブート後に、前記特定のプログラムより起動順が先のプログラムの更新を行う場合に、前記第2の保護化データの保護を解除し、前記第2の保護化データに係る期待値と、セキュアブート後に前記累積手段により保持されている累積値とが一致するか否か判定し、一致する場合にのみ前記第2の保護化データに係る前記起動用データを出力する保護解除手段と、前記起動用データが出力された場合に、前記第1の保護化データについて、前記起動用データを、前記更新後における前記特定のプログラムの起動直前に前記累積手段により保持されている累積値の期待値とともに再保護する再保護手段とを備える。
この態様によれば、セキュアブート完了後に保護化データを使用するプログラムが更新される場合であっても、保護解除手段による、第2の保護化データに係る起動用データの出力は、セキュアブート後の累積値と、期待値との一致を条件としているので、保護解除手段は、セキュアブート完了後に第2の保護化データの保護を解除して起動用データを出力することができ、前記情報処理装置はリブートすることなく、起動用データの更新、再保護をすることができる。

以下、本発明の実施の形態について、図面を参照しながら説明する。
1.実施の形態1
1.1.システム概要
図1は、実施の形態1に係る情報処理システム1の構成の概略を示す図である。
情報処理システム1は、情報処理端末10と更新プログラム配信サーバ11とが、ネットワーク15を介して接続されて成る。本実施の形態では、情報処理端末10及び更新プログラム配信サーバ11は、具体的にはパーソナルコンピュータである。また、ネットワーク15は具体的にはインターネットである。
情報処理端末10は、IPL(Initial Program Loader)101、OSローダ102、OS103の各プログラム、及びプログラムそれぞれに対応するプログラム証明書を保持しており、電源ONの後、IPL101、OSローダ102、OS103の順にセキュアブートする。セキュアブートにおいては、各プログラムの完全性、情報処理端末10全体の完全性を、対応するプログラム証明書を用いて検証しつつブートする。完全性が維持できている場合には、情報処理端末10は、具備するセキュアモジュール内の環境情報レジスタに、ブートするプログラムのハッシュ値を累積処理(以下、Extend処理という。)する。
ここで、IPL、OSローダ、OS等は、プログラム上の不具合等を改修するために更新されることがある。更新用のIPL、OSローダ、OS等は、更新プログラム配信サーバ11によって、更新用のプログラムに対応するプログラム証明書と共に情報処理端末10に送信される。
更新プログラム配信サーバ11は、期待値データベース12と、証明書データベース13と、更新プログラムデータベース14を有している。
更新プログラムデータベース14には、情報処理端末10についての更新用プログラムが記録されている。証明書データベース13には、更新用プログラムと共に配布されるプログラム証明書が記録されている。期待値データベース12には、セキュアブートにおいてプログラムが起動したときに環境情報レジスタが保持しているものと期待されるハッシュ値(期待値)が記録されている。更新モジュール配信サーバ11は、情報処理端末10に対し、環境情報レジスタが保持しているハッシュ値(環境情報)の送信を要求し、その応答として情報処理端末10から送信される環境情報を得る。そして環境情報と、期待値データベース12に登録されている期待値とを比較し、比較結果が等しければ情報処理端末10が正規の端末であると判断する。更新プログラム配信サーバ11は、正規の端末であると判断できた端末にのみ、更新プログラムや、コンテンツ等を送信する。この機能は、TCGにおけるAttestation処理に相当する。
次に、情報処理端末10によるセキュアブートについて、図2を用いてより具体的に説明する。
図2に示すように、本実施の形態では、セキュアブートの過程を環境情報レジスタの値が更新されるまでの区間を1つのステージとした6つのステージ(図2中のステージ0〜5)に分けている。この各ステージにおいて、情報処理端末10全体の完全性が検証される。
ステージ0〜2ではIPL101がブート処理を実行し、ステージ3、4ではOSローダ102がブート処理を実行し、ステージ5ではOS103がブート処理を実行する。ブート処理において、IPL101、OSローダ102、OS103のそれぞれは、暗号化(シール)されている各プログラムに固有のデータを復号(シール解除)して用いる。具体的には、IPL101は、ステージ1のブート処理においてデータ1(311)を使用する。ステージ1のブート処理が終了すれば、IPL101はデータ1を破棄する。また、OSローダ102は、ステージ3のブート処理においてデータ2(321)を使用する。そしてステージ3のブート処理が終了すれば、OSローダ102はデータ2を破棄する。また、OS103は、ステージ5のブート処理においてデータ3(331)を使用する。そしてステージ5のブート処理が終了すれば、OS103はデータ3を破棄する。
ここで、データ1は、通常用シールデータ310、更新用シールデータ340の2種類のシールデータとしてシールされている。
そして、通常用シールデータ310は、シール解除条件として、ステージ1の環境情報レジスタ期待値312を含んでいる。
セキュアモジュールは、現に環境情報レジスタに保持されている値と、シール解除条件に設定された値とが一致する場合に、シール解除されたデータを出力するよう構成されている。よって、IPL101は、環境情報レジスタに保持されている値と、シール解除条件として設定されたステージ1の環境情報レジスタ期待値312とが一致する場合に、シール解除された固有のデータ1(311)を得ることができる。
ここで、固有のデータに対し、2種類のシールデータを保持しているのは、セキュアブート完了後には、IPL101に対する環境情報レジスタの値が、IPL101のブート以後にブートするOSローダ102、OS103等によるExtendで変更されてしまい、IPL101に対する環境情報レジスタの値を得ることができなくなり得るからである。この場合、通常用シールデータ310のみ保持していては、IPLが使うシールデータをシール解除することはできない。そのため、情報処理端末10は、通常用シールデータ1(310)と共に、通常用シールデータ1に対応する更新用シールデータ1(340)を保持している。更新用シールデータは、シール解除条件に、セキュアブート完了後のハッシュ値を設定したものである。通常用シールデータと更新用シールデータとは、シール解除条件以外のデータに違いはない。
更新用シールデータに設定されているシール解除条件の値は、セキュアブート完了後であっても得ることができるので、情報処理端末10は、セキュアブート完了後であっても、IPLが使うシールデータをシール解除することができることになる。
また、OSローダ102は、ステージ3の環境情報レジスタ期待値322をシール解除条件としてデータ2(321)をシール処理した通常用シールデータ2(320)をセキュアブート中に利用する。OS103は、ステージ5の環境情報レジスタ期待値332をシール解除条件としてデータ3(331)をシール処理した通常用シールデータ3(330)をセキュアブート中に利用することを示している。
情報処理端末10は、OSローダ102について通常用シールデータ320、更新用シールデータ350を保持しており、OS103について通常用シールデータ330、更新用シールデータ360を保持しており、OSローダ102、OS103についてもIPL101の場合と同様に処理する。
次に、本実施の形態についてより詳細に説明する。
1.2.構成
図3は、情報処理端末10の構成を示すブロック図である。
情報処理端末10は、CPU(Central Processing Unit)100、RAM(Random Access Memory)110、ROM(Read Only Memory)120、プログラム格納部130、プログラム更新制御部140、シールデータ制御部150、シールデータ依存リスト格納部160、シールデータ格納部170、シール鍵格納部180、証明書格納部190、セキュアモジュール20を含んで構成され、これらはバス105で接続されている。
ROM120は、IPL101を格納している。
プログラム格納部130は、Flashメモリ等の不揮発性メモリであり、OSローダ102、OS103、アプリケーション104などのプログラムを格納している。
証明書格納部190は、IPL101、OSローダ102、OS103等のプログラムに対応するプログラム証明書を格納している。
図4は、プログラム証明書のデータ構造を示す図である。
プログラム証明書は、証明書識別子901、環境情報期待値902、Extend先レジスタ番号903、Extend値904、及び署名905を含んで構成される。証明書識別子901は、自プログラム証明書が、どのプログラムの証明書であるかを識別するための識別情報である。環境情報期待値902は、セキュアブート処理において、自プログラムが起動する直前に、セキュアモジュール20における環境情報レジスタに記録されているべき値を示す。本実施の形態では、セキュアモジュールは、詳細は後述するがN個の環境情報レジスタ1〜Nを具備しているので、環境情報期待値902は、各環境情報レジスタに対応する環境情報期待値1〜Nを含んでいる。Extend値904は、Extend処理時に、環境情報レジスタ271にExtendする値を示す。Extend先レジスタ番号903は、Extend値904に記載されている値をExtend処理すべき環境情報レジスタを示す。例えば、Extend先番号903の値が1であれば、セキュアモジュールは、Extend処理において環境情報レジスタ1にExtend値904をExtendすることになる。署名905は、証明書識別子901、環境情報期待値902、Extend先レジスタ番号903及びExtend値904に対するデジタル署名である。署名905は、一例としてRSAや楕円暗号の公開鍵暗号系の秘密鍵を利用して生成することができる。
図5は、プログラム証明書の具体例を示す図である。図5(a)は、IPL101に対応するプログラム証明書であるIPL証明書(1010、1011)を示す。図5(b)は、OSローダ102に対応するプログラム証明書であるOSローダ証明書(1020、1021)を示す。図5(c)は、OS103に対応するプログラム証明書であるOS証明書(1030、1031)を示す。図中のプログラム証明書間の矢印は、セキュアブート処理において証明書が利用される順を示す。例えば、IPL証明書についてみると、矢印はIPL証明書1010からIPL証明書1011へと向いており、これは、IPL証明書1010が用いられた後にIPL証明書1011が用いられることを示す。
IPL証明書1010には、証明書識別子としてIPL_CERT1が設定されている。また、環境情報期待値として、ステージ0の環境情報期待値が設定されている。また、Extend先レジスタ番号として値1が設定されている。また、Extend値として、SHA1(IPL)が設定されている。ここで「SHA1(XX)」の記載は、モジュールXXのSHA1のハッシュ値を示すものとする。SHA1(IPL)は、IPL101のSHA1のハッシュ値を示す。また、署名には、「IPL_CERT1」、「ステージ0の環境情報期待値」、「1」、「SHA1(IPL)」に対するデジタル署名が設定されている。IPL証明書1011、OSローダ証明書1020、1021、OS証明書1030、1031の内容については、IPL証明書1010の同様であるので、説明を省略する。
プログラム更新制御部140は、プログラム格納部130に記憶されるプログラムの更新を制御する。
プログラム更新制御部140は、更新プログラム配信サーバ11からプログラムの更新要求を受け付ける。次に、プログラム更新制御部140は、更新プログラム配信サーバ11から更新用のプログラム、更新用のプログラムに対応するプログラム証明書を受け取る。そして、受け取った更新用のプログラムをプログラム格納部130に記憶させ、プログラム証明書を証明書格納部190に記憶させる。プログラムの更新を行った場合、プログラム更新制御部140は、シールデータ制御部150にシールデータの更新を要求する。
シールデータ制御部150は、シールデータに対する処理を制御する。例えば、シールデータ制御部150は、シールデータの更新要求を受け付けるとシールデータの更新処理を行う。
シールデータ格納部170は、シール処理されたデータ(以降、シールデータと略す)を格納する。ここで、シールデータについて詳細に説明する。
図6は、シールデータのデータ構造を示したものである。
シールデータは、期待値1から期待値N(502)と、期待値502のサイズを示す環境情報サイズ501と、シール対象データ504と、シール対象データ504のデータサイズ503と、認証情報期待値505とを含んで構成される。期待値502は、シール解除されたデータの使用を許可する条件を示す。具体的には、シール解除されたデータの使用を許可するために各環境情報レジスタに格納されているべき値の期待値である。例えば、セキュアモジュール20は、シールデータをシール解除した後、環境情報レジスタ1〜Nに現に格納されている値と期待値1〜N(502)とが一致する場合にシール解除されたデータをセキュアモジュール20外に出力することでシール解除されたデータの使用を許可する。認証情報期待値505は、環境情報サイズ501と期待値502とシール対象データサイズ503とシール対象データ504とから生成されている。認証情報値505は、HMAC−SHA1の値とする。HMAC−SHA1の計算に使うHMAC鍵の値は、ユーザーから入力されたパスワードから生成した値としてもよいし、予めシール鍵格納部170にルート鍵などで暗号化して保持しておいてもよい。また、環境情報サイズ501と期待値502とシール対象データサイズ503とシール対象データ504は、シールデータ公開鍵(411、421、431)で暗号化されている。なお、図6には図示していないが、各シールデータを識別するための情報としてシールデータ識別情報を持たせても良い。
図7は、シールデータの具体例を示す図である。
図7(a)は通常用シールデータ310、図7(b)は更新用シールデータ340を示している。通常用シールデータ310と更新用シールデータ340の違いは、環境情報格納情報レジスタ504に格納される値である。通常用シールデータの環境情報レジスタの期待値312(図6の502に対応)は、シール解除条件として「セキュアブート途中の環境情報レジスタに格納されるべき期待値」が設定され、更新用シールデータの環境情報レジスタの期待値342(図6の502に対応)は、シール解除条件として「セキュアブート完了状態の環境情報レジスタに格納されるべき期待値」が設定される。また、通常用シールデータ310のシールデータ対象データ312(図6の504に対応)と、更新用シールデータ340のシールデータ対象データ342(図6の504に対応)は同一のデータが格納されている。通常用シールデータ(320、330)は、通常用シールデータ310と同様のデータであり、更新用シールデータ(350、360)も、更新用シールデータ340と同様のデータであるため、これらの詳細説明は省略する。
ここで、シールデータの期待値502は、全レジスタに対応する期待値を保持してもよいし、一部のレジスタについての期待値を保持してもよい。
図8は、セキュアブート完了状態の期待値1300をシール解除条件とした更新用シールデータの例である。
図8(a)は、セキュアブート完了状態の期待値1300の全てのレジスタをシール解除条件とした場合の更新シールデータの例を示している。更新シールデータ1510の期待値1512(図6の502に相当)には、セキュアブートが完了したときの期待値であるReg13、Reg23、Reg30が設定されている。また、図8(b)はセキュアブート完了状態の期待値1300の一部のレジスタをシール解除条件とした場合の例を示している。更新シールデータ1520の期待値1522(図6の502に相当)には、環境情報レジスタReg22のみが設定されている。このようにセキュアブート完了状態の環境格納レジスタ期待値1300の少なくとも1つ以上のレジスタを更新用シールデータのシール解除条件としてもよい。この場合セキュアブートが正常に完了した環境でのみシール解除ができる。したがって、データの使用を正しい実行環境下のみに制限し、データが改ざんされたプログラム等によって不正に使用されるのを防ぐことができる。
また、プログラムのハッシュ値は、プログラムが更新されると変化してしまう。したがって、更新されたプログラム以降にブートするプログラムのハッシュ値の期待値をシール解除条件としている全てのデータを新しいハッシュ値の期待値を使ってシールし直さなくてはならない。これに対し、図8(b)のReg23に例えば図5のOS証明書1031のExtend値であるSHA1(”OS done”)のような文字列のハッシュ値を設定しておけば、プログラムが更新されてもReg23のハッシュ値を変更する必要はない。したがって、データを、新しいハッシュ値を使ってシールし直す必要がなくなる。これにより、プログラムの更新にかかる手間を大きく省略することができる。
シールデータ依存リスト格納部160は、シールデータと証明書の関係を示す情報であるシールデータ依存リストを格納する。
シールデータ依存リストは、セキュアブート対象のプログラムが更新される場合に、この更新処理に伴っていずれのシールデータを更新すべきかを判断するために利用される。
図9は、シールデータ依存リスト1600を示す図である。
シールデータ依存リスト1600は、シールデータ識別情報1601と、プログラム証明書識別情報1602とを含んで構成される。シールデータ識別情報1601は、シールデータを識別するための情報である。本実施の形態では、シールデータ識別情報1601は、シールデータにおける認証情報期待値505と同等の情報が用いられている。証明書識別情報1602は、プログラム証明書を識別するための情報である。本実施の形態では、一例として、プログラム証明書中に記載されている証明書識別子901を用いている。セキュアブート対象のプログラムが更新される場合、更新対象のプログラムと、そのプログラム更新に伴い、そのプログラムに対応するプログラム証明書も同時に更新する必要がある。さらに、その更新対象のプログラムのハッシュ値に依存した期待値を保有している証明書も同時に更新する必要がある。
ここで、図5の例で説明すると、IPL101が更新される場合は、IPL101のモジュールのSHA1(IPL)の値が変わるので、IPL証明書1011が利用されるセキュアブート処理以降に利用されるプログラム証明書で、かつ期待値902に環境情報期待値レジスタ1(1201)に依存する値を保有する証明書を更新する必要がある。したがって、更新プログラム配信サーバ11は、更新対象のプログラムと共に更新により必要となるプログラム証明書も同時に配布する。
ここで、図9に示す更新されるプログラムと、それに伴い更新すべきシールデータの関係について補足説明する。
IPL証明書1010が更新されるときには、ステージ1の期待値(312)も更新されなければならないので、ステージ1の期待値(312)がシール解除条件となっている通常用シールデータ1(310)は更新される必要があることを示している。
また、OSローダ証明書1020が更新されるときには、ステージ3の期待値(322)も更新されなければならないので、ステージ3の期待値(322)がシール解除条件となっている通常用シールデータ2(320)は更新される必要があることを示している。
また、OS証明書1030が更新されるときには、ステージ5の期待値(332)も更新されなければならないので、ステージ5の期待値(332)がシール解除条件となっている通常用シールデータ3(330)は更新される必要があることを示している。
以上で、シールデータ依存リストの説明を終える。
シール鍵格納部180は、シールデータの暗復号に利用する鍵を記憶する。
図10は、図2における通常用シールデータと更新用シールデータを生成する処理(シール処理)または、シール解除する処理に利用するシールデータ鍵ペアを示す模式図である。
セキュアモジュール20内の鍵格納部260には、ルート鍵ペア400が格納される。
ルート鍵ペア400は、ルート秘密鍵401とルート公開鍵402から成る。ここで、ルート公開鍵402は、鍵格納部260に格納されているものとしているが、一般に公開鍵は秘匿性を要求されないので、セキュアモジュール20外のシール鍵格納部260に格納してもよい。
シール鍵格納部180は、シールデータ格納部170の通常用シールデータ(310、320、330)と更新用シールデータ(340、350、360)のシール処理やシール解除処理に利用する鍵を格納する。
シールデータ1鍵ペア(410)は、通常用シールデータ1(310)と更新用シールデータ1(340)をシールデータ生成処理およびシール解除処理に利用する鍵ペアであり、シールデータ秘密鍵411とシールデータ公開鍵412ペアからなる。シールデータ公開鍵411は、通常用シールデータ1(310)と更新用シールデータ1(340)を生成する際に利用される。また、シールデータ秘密鍵412は、通常用シールデータ1(310)と更新用シールデータ1(340)をシール解除する際に利用される。
シールデータ2鍵ペア(420)は、通常用シールデータ2(320)と更新用シールデータ2(350)をシールデータ生成処理およびシール解除処理に利用する鍵ペアであり、シールデータ秘密鍵421とシールデータ公開鍵422ペアからなる。シールデータ公開鍵421は、通常用シールデータ2(320)と更新用シールデータ2(350)を生成する際に利用される。また、シールデータ秘密鍵422は、通常用シールデータ2(320)、更新用シールデータ2(350)をシール解除する際に利用される。
シールデータ3鍵ペア(430)は、通常用シールデータ3(330)と更新用シールデータ3(360)をシールデータ生成処理およびシール解除処理に利用する鍵ペアであり、シールデータ秘密鍵431とシールデータ公開鍵432ペアからなる。シールデータ公開鍵431は、通常用シールデータ3(330)、更新用シールデータ3(360)を生成する際に利用される。また、シールデータ秘密鍵432は、通常用シールデータ3(330)、更新用シールデータ3(360)をシール解除する際に利用される。
ここで、シールデータ秘密鍵(412、422、432)は、ルート秘密鍵402で暗号化された状態でシール鍵格納部180に格納される。シール解除処理する際には、セキュアモジュール20に暗号化されたシールデータ秘密鍵(412、422、432)を復号するように要求し、復号された平文のシールデータ秘密鍵(412、422、432)は、セキュアモジュール20の鍵格納部170にセットされる。
このようにすることで、平文のシールデータ秘密鍵は、セキュアモジュール内で利用されるため、安全性が高まることになる。また、この仕組みはセキュアモジュール20がTPM機能を備えるのであれば、TCGのProtected Storage機能として実現してもよい。
セキュアモジュール20は、耐タンパ性を有するモジュールであり、コマンドI/O(210)と、測定処理部230と、暗号処理部240と、鍵格納部260と、検証処理部220と、環境情報格納部270と、シール処理部250から構成される。
コマンドI/O(210)は、セキュアモジュール20に対するコマンドの受付けやコマンド結果の出力を行う。
測定処理部230は、SHA1、SHA256やHMAC−SHA1などの鍵付きハッシュ演算を行う。また、測定処理部230は、Extend処理を実行する。
暗号処理部240は、RSAや楕円暗号などの公開鍵暗号処理や、AESなど共通鍵暗号処理を行う。
鍵格納部260は、暗号処理部240の暗復号に利用する鍵や、測定処理部230の鍵付きハッシュ関数などで利用する鍵を格納する。
検証処理部220は、測定処理部230にて得られた値を利用して測定対象データの完全性を検証する。
環境情報格納部270は、環境情報を格納するN個の環境情報レジスタ1(271)〜環境情報レジスタN(272)を備え、起動されたプログラムの環境情報を記憶する。本実施の形態では、N=3であり、環境情報格納部270は、環境情報レジスタ1(1201)、環境情報レジスタ2(1202)、環境情報レジスタ3(1203)を備えるものとする。
シール処理部250は、シール処理(Seal)やシール解除処理(Unseal)を行う。シール処理とは、保護対象データを端末の環境情報期待値と共にセキュアモジュール20に対しシール処理として指示されたシール公開鍵で暗号化し、シールデータを生成する処理である。一方、シール解除処理とは、シールデータをシールデータ秘密鍵で復号し、復号により得られたシール解除条件として設定されている環境情報値と、セキュアモジュール20内の環境情報レジスタ270に格納されている値とを比較し、等しければシール解除処理が成功したとして復号により得られた平文の保護対象データを出力する処理である。また、シール解除処理で利用する秘密鍵は、通常、セキュアモジュール20内の鍵格納部260に記憶されているルート鍵ペア400のルート公開鍵401で暗号化された状態で、セキュアモジュール20外のシール鍵格納部180に記憶されている。したがって、シール解除処理の前に、シールデータ制御部150は、セキュアモジュール20に対しシール鍵格納部180に格納されており暗号化された状態のシールデータ秘密鍵の復号処理要求をする。復号処理要求を受け付けると、暗号処理部240がルート鍵秘密鍵402を用いて暗号化シールデータ秘密鍵を復号し、復号されたシールデータ秘密鍵が鍵格納部260にロードされるものとする。ここで、シール処理、シール解除処理の詳細について、図11、図12を用いて説明する。
図11は、シールデータを生成するためのシール処理を示すフローチャートである。
シール要求元のプログラムは、セキュアモジュール20に対し、自プログラムのプログラム証明書に含まれる期待値と、シール対象データと、シールデータ公開鍵とを入力パラメータとして、コマンドI/O(210)を介して、シール処理コマンドを要求する(S601)。セキュアモジュール20のシール処理部250は、入力された期待値を、シールデータにおける期待値502としてセットし、入力されたシール対象データをシールデータにおけるシール対象データ504としてセットする。そして、シール処理部250は、環境情報サイズと、シール対象データとを算出して、それぞれの算出結果をシールデータにおける環境情報サイズ501、シール対象データ504にセットする。そして、測定処理部230を利用して認証情報期待値505を生成する(S602)。次に、シール処理部250は、暗号処理部240を利用して、シールデータにおける環境情報サイズ501、期待値502、シール対象データサイズ503、及びシール対象データ504の部分を、S601で入力されたシールデータ公開鍵で暗号化する(S603)。次に、セキュアモジュール20は、コマンドI/O(210)を介して、シールデータを出力する(S604)。なお、セキュアモジュール20がTCGで規定されるTPMもしくはMTMで実現されている場合、シール生成処理のコマンドはTPM_Sealとして実現される。
図12は、シールデータを解除するためのシール解除処理を示すフローチャートである。
図12中に、図示してはいないが、シール解除の前処理として、セキュアモジュール20は、シール解除する対象データに対応する暗号化されたシールデータ秘密鍵(412、422、432)をルート秘密鍵402により復号し、復号された結果である平文の鍵を、セキュアモジュール20の鍵格納部170にセットしておくものとする。その後、シール要求元のプログラムは、セキュアモジュール20のコマンドI/O(210)を介して、セキュアモジュール20に対しシールデータの解除コマンドを要求する(S701)。次に、セキュアモジュール20のシール処理部250は、シールデータの環境情報サイズ501、期待値502、シール対象データサイズ503、及びシール対象データ504の領域をシールデータ秘密鍵で復号する(S702)。次に、S702で復号されたシールデータ構造の501から504のデータから認証情報を算出する。ここで算出された認証情報と、認証情報期待値505が等しいかを比較する(S703)。S703において「等しくない」と判定されれば、セキュアモジュール20がエラーを出力する(S706)。一方、S703において「等しい」と判定されれば、S704へ処理を移す。次に、シール処理部250は、復号された期待値502と、セキュアモジュール20内の環境情報レジスタに格納されている現時点の値を比較する(S704)。S704において「等しくない」と判定されれば、セキュアモジュール20がエラーを出力する(S706)。一方、S704において「等しい」と判定されれば、S705へ処理を移す。次に、セキュアモジュール20は、コマンドI/O(210)を介して、復号された平文のシール対象データ504を出力してシール解除処理が終了する(S705)。
なお、セキュアモジュール20がTCGで規定されるTPMもしくはMTMで実現されている場合、シール解除処理のコマンドはTPM_UnSealとして実現される。
1.3.動作
上述の様に構成された情報処理システム1の動作について、特に情報処理端末10における処理を中心としてフローチャートを用いて説明する。
情報処理端末10の処理は、(1)セキュアブート処理と、セキュアブート後にプログラムが更新された場合に行われる(2)プログラム更新時の処理に大別される。また、セキュアブート処理は、(a)セキュアブート完了時の期待値生成処理と、(b)シールデータ依存リストの作成処理と、(c)シール更新処理とを含む。セキュアブート完了時の期待値生成処理は、シール更新処理に用いられるセキュアブート完了時の期待値を生成する処理である。シール更新処理は、セキュアブートにおいて、シールデータを各プログラムがシール解除して用い、そのシール解除されたデータが更新された場合に、シールデータ等を更新する処理である。
以下では、まず、(a)セキュアブート完了時の期待値生成処理と、(b)シールデータ依存リストの作成処理とについて説明し、次に、(1)セキュアブート処理とともに(c)シール更新処理について説明し、最後にプログラム更新処理について説明する。
1.3.1.セキュアブート完了状態の期待値の生成
図13は、セキュアブート完了状態における期待値1300を生成するための手順を示すフローチャートである。
この処理により生成される期待値は、後述の更新用シールデータの生成に用いられる。
測定処理部230は、まず、セキュアブート完了状態の期待値1300を0で初期化し、ステージの番号を示す内部変数iを0でセットする(S1401)。
測定処理部230は、ステージiの期待値が設定されているプログラム証明書を探索し、発見したプログラム証明書中の期待値902の値を参照し、現在記憶している期待値1300の値と異なっていれば、期待値902の値で期待値1300の値を更新する(S1402)。次に、S1402で参照したプログラム証明書がセキュアブートの最後に利用される証明書か否かを判断する(S1403)。S1403において、セキュアブートの最後に利用される証明書であると判断した場合(S1403:YES)、S1405へ処理を移し、セキュアブートの最後に利用されるプログラム証明書でないと判断した場合(S1403:NO)、S1404処理を移す。ここで、各プログラム証明書がどのステージで利用されるかについては、プログラム証明書とその証明書が利用されるステージの対応関係を示す証明書リスト(不図示)を証明書格納部190に格納しておくものとする。例えば、この証明書リストは、証明書の識別情報と、ステージ番号から構成されるリストとして実現される。S1402、S1403では、この証明書リストを参照することで証明書の判断が可能となる。次に、ステージ番号を示すiをインクリメントし(S1404)、S1402の処理へ移る(S1405)。S1403の結果、セキュアブートで最終利用される証明書(図5の例におけるOS証明書1031)であるならば、セキュアブート最終利用される証明書のExtend値904を用いて、Extend先レジスタ番号903のセキュアブート完了時期待値を更新して終了する(S1405)。
ここで、セキュアブート完了状態の期待値1300を生成する際に、セキュアブートの最後に利用される証明書であるOS証明書1031のみでなく、全ての証明書を利用して生成する理由は、以下の通りである。各証明書に設定されている各ステージの期待値902には、全てのレジスタの期待値が記載されるとは限らない。仮にセキュアブート対象の最後に利用されるOS証明書1031のステージ5の環境情報レジスタとして、全てのレジスタの期待値が列挙されていれば、OS証明書1031のみから、セキュアブート完了状態の期待値1300を生成することができる。しかし、セキュアブート対象の最後に利用されるOS証明書1031のステージ5の環境情報レジスタとして、全てのレジスタの期待値が列挙されていない場合には、OS証明書1031のみから、セキュアブート完了状態の期待値1300を生成することはできない。よって、ここでは全ての証明書を参照して、セキュアブート完了状態の期待値1300を生成することとしている。
証明書は、ステージによらずアクセス可能であるので、このように、証明書に設定されている各ステージの期待値902を利用して、セキュアブート完了状態の期待値1300を計算することで、最終ステージに到達する前であっても、セキュアブート完了状態の期待値1300を計算することができる。ここで、生成したセキュアブート完了状態の期待値1300をシール解除条件として、更新用シールデータを生成することで、セキュアブートの完了前であっても、セキュアブート完了状態の期待値1300をシール解除条件としたステージデータを生成することができる。
1.3.2.シールデータ依存リストの生成
シールデータ制御部150は、セキュアブート処理時にコールされるシール解除処理を検知し、シール解除が成功した場合に、そのステージで利用した証明書と、シール解除に成功したシールデータとを関連づけて、シールデータ依存リスト1600に登録する。
以下に、シールデータ依存リストの生成について、図14を用いて説明する。
図14は、シールデータ依存リスト1600を生成するためのフローチャートである。
シールデータ制御部150は、情報処理端末10の電源ON時に、CPU100により起動指示されて起動し、現在実行中のステージを把握するために用いる内部変数iを0で初期化する(S1701)。次に、シールデータ制御部150は、ステージiの処理が開始された旨の通知をCPU100から受けとる(S1702)。シールデータ制御部150は、ステージiにおいて、セキュアモジュール20に対するシール解除処理の要求を検出する(S1703)。ここで、シール解除処理の要求の検出は、シール解除コマンドをフッキングすることで検出する。ステージiにおいて、シール解除処理が要求されなかった場合(S1703:NO)は、S1707に処理を移す。一方、S1703の結果、シール解除処理が要求された場合(S1703:YES)は、S1704へ処理を移す。S1704では、セキュアモジュール20は、図12で説明したシール解除処理を行う(S1704)。シールデータ制御部150は、S1704のシール解除処理が正常に終了したか否かを判断し(S1705)、正常に終了しなかった場合(S1705:NO)は、S1706へ処理を移し、正常に終了した場合(S1705:YES)は、S1706へ処理を移す。次に、シールデータ制御部150は、シール解除処理に成功したシールデータを識別するシールデータ識別情報1601と、現在のステージで利用したプログラム証明書の証明書識別情報1602をシールデータ依存リストに追加する(S1706)。この後、シールデータ制御部150は、CPU100から、ステージiの処理の完了を示す通知を受け取り、この通知に基づき、セキュアブートが終了したか否かを判定する(S1707)。完了していないと判定した場合(S1707:NO)、iを1インクリメントし(S1708)、S1702へ処理を移す。完了したと判定した場合(S1707:YES)、シールデータ依存リスト1600の生成は終了する。
このように、各ステージ毎に、シール解除処理に成功したシールデータがあるか否かを確認し、シールデータ依存リスト1600を生成する。シールデータ依存リスト1600を参照することで、シールデータがどのステージに対応するのかを確実に管理することができる。
1.3.3.セキュアブート
以下、セキュアブートのシーケンスについて、図15〜17を用いて説明する。このセキュアブートシーケンスでは、図5のプログラム証明書を用いるものとする。また、セキュアブート途中で、通常用シールデータの一例として、通常用シールデータ(310、320、330)を利用している。
(1)ステージ0
まず、情報処理装置10の電源がONされると、セキュアモジュール20が、セキュアブート完了時の期待値生成処理を行う(S1101)。
IPL101は、セキュアモジュール20に対し初期化を要求する(S1102)。
ここで、CPU100により実行されるIPL101はプログラムであり、能動的に動作するものではないが、都度、CPU100によりIPL101に含まれるXX処理に係るプログラムが実行される等の受動的な表記を行うとすると説明が非常に煩雑になる。よって、以下、便宜上「IPL101が、XX処理を実行する」などのように能動的に記載する。
初期化が要求されると、セキュアモジュール20は、環境情報レジスタ271を0で初期化し(S1103)、IPL101へ初期化処理の結果(正常終了/異常終了)を返す(S1104)。
ここで図示してはいないが、IPL101は、要求した処理の結果が正常終了を示している場合に次の処理へ移る。
次に、IPL101は、IPL101自身のSHA1によるハッシュ値を算出し、算出したハッシュ値と、IPL証明書1010のExtend値であるSHA1(IPL)とを比較することでIPL101の完全性をチェックする(S1105)。比較(S1106)の結果、一致した場合は(S1106:YES)、完全性が維持されていると判断して次の処理に進み、一致しなかった場合(S1106:NO)、完全性が損なわれていると判断し、処理を終了する。
IPL101は、セキュアモジュール20に対し、Extend処理を要求する(S1107)。
S1107のExtend要求は、ステージ0の環境情報レジスタの値が期待値であるかどうかの判断処理の要求も兼ねるものとする。
セキュアモジュール20は、ステージ0の環境情報レジスタの値が期待値であるかどうかの判断を、プログラム証明書1010内のステージ0の環境情報期待値と、S1104の要求を受け付けた時点の環境情報レジスタ271に格納されている値とを比較することで行う(S1108)。「両値が等しい」と判断した場合には(S1108:YES)、セキュアブートを継続する。「両値が等しくない」と判断した場合には(S1108:NO)、不正なモジュールが起動されているものとみなしてブート処理を中断する。
次に、セキュアモジュール20は、Extend処理として、プログラム証明書1010内のExtend先レジスタ番号の値1で示される環境情報レジスタに、IPL証明書1010のExtend値であるSHA1(IPL)の値を累積処理する(S1109)。セキュアモジュール20は、累積処理として、SHA1のハッシュ値を連鎖処理する。このような処理をすることで、次のステージに移行する前に、現時点のステージの環境の正当性を検証することが可能となる。そして、セキュアモジュール20は、IPL101に対し、Extend完了を通知する(S1110)。
Extend完了通知は、Extend処理が完了したことを通知するとともに、環境情報レジスタ271の値が期待値であるか否かの判断結果の通知を兼ねている。そして、セキュアモジュール20は、次のステージ1の状態へ移る。
このときIPL101(CPU100)は、次のステージへ移る旨を、シールデータ制御部150に通知するものとする。以下、明記しなくても、ステージが移る場合には、セキュアモジュールによるCPU100への次のステージに移る旨の通知、CPU100によるシールデータ制御部150への次のステージに移る旨の通知は行うものとする。なお、シールデータ制御部150は、この通知を受けてシールデータ依存リストの作成を行っている。
(2)ステージ1
IPL101は、通常用シールデータ1(310)のシール解除をセキュアモジュール20に要求する(S1111)。セキュアモジュール20は、シール解除が必要か否かを判定する(S1112)。ここで、本実施の形態では、シール解除が必要か否かの判定は、セキュアモジュール20が、シールデータ依存リストを参照して、シール解除すべきシールデータが存在するか否かにより判定するものとする。シール解除が必要であった場合(S1112:YES)、シール解除処理を行う(S1113)。シール解除処理については、説明済みである。セキュアモジュール20は、シール解除したデータをIPL101に送信する(S1114)。IPL101は、セキュアモジュール20から受け取ったデータを用いて、IPL処理(ブート処理)を実行する(S1115)。ブート処理実行後、IPL101は、セキュアモジュール20に対し、Extend処理を要求する(S1116)。S1116のExtend要求は、ステージ1の環境情報レジスタの値が期待値であるかどうかの判断処理の要求も兼ねるものとする。
セキュアモジュール20は、ステージ1の環境情報レジスタの値が期待値であるかどうかの判断を、プログラム証明書1010内のステージ1の環境情報期待値と、環境情報レジスタ271に格納されている値とを比較することで行う(S1117)。「両値が等しい」と判断した場合には(S1117:YES)、セキュアブートを継続する。「両値が等しくない」と判断した場合には(S1117:NO)、不正なモジュールが起動されているものとみなしてブート処理を中断する。
次に、セキュアモジュール20は、Extend処理として、プログラム証明書1010内のExtend先レジスタ番号の値2で示される環境情報レジスタに、ステージ1のIPL証明書1011のExtend値であるSHA1(”IPL done”)の値を累積処理する(S1118)。このような処理をすることで、次のステージに移行する前に、現時点のステージの環境の正当性を検証することが可能となる。また、SHA1(“IPL done”)は、“IPL done”という文字列のSHA1ハッシュ値を示しており、IPL101の処理が終了することを示すステータス情報として利用する。この値がExtendされるということは、IPL101の処理が終了したという状態をセキュアモジュール20に残すことを意味する。
次に、セキュアモジュール20は、シール更新処理を実行し(S1119)、Extend完了を通知する(S1121)。IPL101は、ステージ1の完了前に、シール解除され、ブート処理に用いていたデータを破棄する(S1120)。なお、S1121と、S1120の順番は、入れ替わっても問題はない。そして、セキュアモジュール20は、次のステージ2の状態へ移る。シール更新処理の詳細については、後述する。
(3)ステージ2
IPL101は、OSローダチェックを行う(S1131)。IPL101は、S1131において具体的には、OSローダ102のSHA1によるハッシュ値を算出する。そして、算出したハッシュ値と、OSローダ証明書1020のExtend値であるSHA1(OSローダ)の値と比較することでOSローダ102の完全性をチェックする。比較(S1132)の結果、一致した場合は(S1132:YES)、完全性が維持されていると判断して次の処理に進み、一致しなかった場合(S1132:NO)、完全性が損なわれていると判断し、処理を終了する。IPL101は、セキュアモジュール20に対し、Extend処理を要求する(S1133)。S1133のExtend要求は、ステージ2の環境情報レジスタの値が期待値であるかどうかの判断処理の要求も兼ねるものとする。セキュアモジュール20は、ステージ2の環境情報レジスタの値が期待値であるかどうかの判断を、OSローダ証明書1020内のステージ2の環境情報期待値と、環境情報レジスタ271に格納されている値とを比較することで行う(S1134)。「両値が等しい」と判断した場合には(S1134:YES)、セキュアブートを継続する。「両値が等しくない」と判断した場合には(S1134:NO)、不正なモジュールが起動されているものとみなしてブート処理を中断する。
次に、セキュアモジュール20は、Extend処理として、プログラム証明書1020内のExtend先レジスタ番号の値1で示される環境情報レジスタに、IPL証明書1020のExtend値であるSHA1(OSローダ)の値を累積処理する(S1135)。セキュアモジュール20は、累積処理として、SHA1のハッシュ値を連鎖処理する。このような処理をすることで、次のステージに移行する前に、現時点のステージの環境の正当性を検証することが可能となる。そして、セキュアモジュール20は、IPL101に対し、Extend完了を通知する(S1136)。Extend完了通知は、Extend処理が完了したことを通知するとともに、環境情報レジスタ271の値が期待値であるか否かの判断結果の通知を兼ねている。IPL101は、OSローダ102に対し実行指示を送信する(S1137)。そして、セキュアモジュール20は、次のステージ3の状態へ移る。
(4)ステージ3
実行指示に従い、OSローダ102は動作を開始する。OSローダ102は、通常用シールデータ2(320)のシール解除処理をセキュアモジュール20に要求する(S1141)。セキュアモジュール20は、シール解除が必要か否かを判定する(S1142)。ここで、本実施の形態では、シール解除が必要か否かの判定は、セキュアモジュール20が、シールデータ依存リストを参照して、シール解除すべきシールデータが存在するか否かにより判定するものとする。シール解除が必要であった場合(S1142:YES)、シール解除処理を行う(S1143)。そして、セキュアモジュール20は、シール解除したデータをOSローダ102に送信する(S1144)。OSローダ102は、セキュアモジュール20から受け取ったデータを用いて、OSローダ処理(ブート処理)を実行する(S1145)。
ブート処理実行後、OSローダ102は、セキュアモジュール20に対し、Extend処理を要求する(S1146)。S1146のExtend要求は、ステージの環境情報レジスタの値が期待値であるかどうかの判断処理の要求も兼ねるものとする。セキュアモジュール20は、ステージ3の環境情報レジスタの値が期待値であるかどうかの判断を、OSローダ証明書1021内のステージ3の環境情報期待値と、環境情報レジスタ271に格納されている値とを比較することで行う(S1147)。「両値が等しい」と判断した場合には(S1147:YES)、セキュアブートを継続する。「両値が等しくない」と判断した場合には(S1147:NO)、不正なモジュールが起動されているものとみなしてブート処理を中断する。
次に、セキュアモジュール20は、Extend処理として、OSローダ証明書1021内のExtend先レジスタ番号の値2で示される環境情報レジスタに、ステージ3のOSローダ証明書1021のExtend値であるSHA1(”OSローダ done”)の値を累積処理する(S1118)。このような処理をすることで、次のステージに移行する前に、現時点のステージの環境の正当性を検証することが可能となる。また、SHA1(“OSローダ done”)は、“OSローダ done”という文字列のSHA1ハッシュ値を示しており、OSローダ102の処理が終了することを示すステータス情報として利用する。この値がExtendされるということは、OSローダ102の処理が終了したという状態をセキュアモジュール20に残すことを意味する。
次に、セキュアモジュール20は、シール更新処理を実行し(S1149)、Extend完了を通知する(S1150)。OSローダ102は、ステージ3の完了前に、シール解除され、ブート処理に用いていたデータを破棄する(S1151)。なお、S1151と、S1150の順番は、前後しても問題はない。
そして、セキュアモジュール20は、次のステージ4の状態へ移る。
(5)ステージ4
OSローダ102は、OSチェックを行う(S1161)。OSチェックは、具体的には、OSローダ102が、OS103のSHA1によるハッシュ値を算出する。そして、算出したハッシュ値と、OS証明書1030のExtend値であるSHA1(OS)の値と比較することでOS103の完全性をチェックする。比較(S1162)の結果、一致した場合は(S1162:YES)、完全性が維持されていると判断して次の処理に進み、一致しなかった場合(S1162:NO)、完全性が損なわれていると判断し、処理を終了する。OSローダ102は、セキュアモジュール20に対し、Extend処理を要求する(S1163)。S1163のExtend要求は、ステージ4の環境情報レジスタの値が期待値であるかどうかの判断処理の要求も兼ねるものとする。
セキュアモジュール20は、ステージ4の環境情報レジスタの値が期待値であるかどうかの判断を、OSローダ証明書1021内のステージ4の環境情報期待値と、環境情報レジスタ271に格納されている値とを比較することで行う(S1164)。「両値が等しい」と判断した場合には(S1164:YES)、セキュアブートを継続する。「両値が等しくない」と判断した場合には(S1164:NO)、不正なモジュールが起動されているものとみなしてブート処理を中断する。
次に、セキュアモジュール20は、Extend処理として、OS証明書1030内のExtend先レジスタ番号の値1で示される環境情報レジスタに、OS証明書1030のExtend値であるSHA1(OS)の値を累積処理する(S1165)。セキュアモジュール20は、累積処理として、SHA1のハッシュ値を連鎖処理する。このような処理をすることで、次のステージに移行する前に、現時点のステージの環境の正当性を検証することが可能となる。そして、セキュアモジュール20は、OS103に対し、Extend完了を通知する(S1166)。Extend完了通知は、Extend処理が完了したことを通知するとともに、環境情報レジスタ271の値が期待値であるか否かの判断結果の通知を兼ねている。OSローダ102は、OS103に対し実行指示を送信する(S1167)。そして、セキュアモジュール20は、次のステージ5の状態へ移る。
(6)ステージ5
実行指示に従い、OS103は動作を開始する。OS103は、通常用シールデータ3(330)のシール解除処理をセキュアモジュール20に要求する(S1181)。
セキュアモジュール20は、シール解除が必要か否かを判定する(S1182)。ここで、本実施の形態では、シール解除が必要か否かの判定は、セキュアモジュール20が、シールデータ依存リストを参照して、シール解除すべきシールデータが存在するか否かにより判定するものとする。シール解除が必要であった場合(S1182:YES)、シール解除処理を行う(S1183)。そして、セキュアモジュール20は、シール解除したデータをOS103に送信する(S1184)。
OS103は、セキュアモジュール20から受け取ったデータを用いて、OS処理(ブート処理)を実行する(S1185)。ブート処理実行後、OS103は、セキュアモジュール20に対し、Extend処理を要求する(S1186)。S1186のExtend要求は、ステージの環境情報レジスタの値が期待値であるかどうかの判断処理の要求も兼ねるものとする。セキュアモジュール20は、ステージ5の環境情報レジスタの値が期待値であるかどうかの判断を、OS証明書1031内のステージ5の環境情報期待値と、環境情報レジスタ271に格納されている値とを比較することで行う(S1187)。「両値が等しい」と判断した場合には(S1187:YES)、セキュアブートを継続する。「両値が等しくない」と判断した場合には(S1187:NO)、不正なモジュールが起動されているものとみなしてブート処理を中断する。
次に、セキュアモジュール20は、Extend処理として、OS証明書1031内のExtend先レジスタ番号の値2で示される環境情報レジスタに、ステージ5のOS証明書1031のExtend値であるSHA1(”OS done”)の値を累積処理する(S1188)。このような処理をすることで、次のステージに移行する前に、現時点のステージの環境の正当性を検証することが可能となる。また、SHA1(“OS done”)は、“OS done”という文字列のSHA1ハッシュ値を示しており、OS103の処理が終了することを示すステータス情報として利用する。この値がExtendされるということは、OS103の処理が終了したという状態をセキュアモジュール20に残すことを意味する。
次に、セキュアモジュール20は、シール更新処理を実行し(S1189)、Extend完了を通知する(S1190)。OS108は、ステージ5の完了前に、シール解除され、ブート処理に用いていたデータを破棄する(S1191)。なお、S1191と、S1190の順番は、前後しても問題はない。そして、セキュアモジュール20は、セキュアブート完了状態に移る。以上で、図15〜17の説明を終了する。
ここで、上述のセキュアブートにおける各ステージにおける環境情報レジスタの値について補足説明する。
図18は、セキュアブート中の各ステージにおける環境情報レジスタの値を示す模式図である。
まず、ステージ0では、環境情報レジスタ1201の値Reg10、環境情報レジスタ1202の値Reg20、環境情報レジスタ1203の値Reg30は、全て0である。
次に、ステージ1では、環境情報レジスタ1(1201)の値Reg21は、SHA1(Reg10||SHA1(IPL))となる。なお、上述の記号「A||B」は、AとBとを連結していることを示している。環境情報レジスタ2(1202)と環境情報レジスタ3(1203)の値は、ステージ0のときと変わらない。
次にステージ2では、環境情報レジスタ1(1201)の値は、ステージ1と変わらずReg11のままであり、環境情報レジスタ3(1203)の値は、ステージ0と変わらずReg30のままである。そして、環境情報レジスタ2(1202)の値Reg21は、SHA1(Reg20||SHA1("IPL done"))となる。
ステージ3、4、5、セキュアブート完了状態のレジスタの内容については図示の通りであり、上述と同様の説明となるので、これらについての説明は省略する。
次に、セキュアブート完了状態の環境情報レジスタ271に格納されるべき値の期待値1300について、補足説明する。
図19は、セキュアブート完了状態の環境情報レジスタ271に格納されるべき値の期待値1300の生成のイメージを示した図である。具体的に、図19に示すセキュアブート完了状態の環境情報レジスタ1300を生成するイメージを表している。IPL証明書(1010、1011)、OSローダ証明書(1021、1022)、OS証明書(1031、1032)の証明書内に記載される各ステージの環境情報期待値から生成する。
1.3.4.シールデータ更新処理
次に、シールデータ更新処理について説明する。この処理は、上述のS1119、S1149、S1189を詳細に説明するものである。
なお、本処理の前提として、セキュアブート完了状態の期待値1300が既に生成済みであるものとする。
シールデータ制御部150は、シール更新が必要か否かを判定する(S1801)。
本実施形態では、現ステージにおいて、シールデータ504の値が更新され、その更新後の値を保持する必要があれば、シール更新が必要であると判断する。
更新の必要がないと判断した場合(S1801:NO)、シール更新処理を終了する。
シール更新処理が必要であると判断した場合(S1801:YES)、
平文のシール対象データ504に対して、現在の環境情報レジスタ期待値271でシール処理する(S1802)。
また、平文のシール対象データ504に対して、セキュアブート完了状態の期待値1300でシール処理し、シール処理により得られたシールデータを更新用シールデータとしてシールデータ格納部170の更新用シールデータ格納領域32に記録し(S1803)、シール更新処理を終了する。
シールデータの更新が必要なユースケースの一例には、起動回数制限を有するセキュアブート対象ソフトがあり、起動回数の制限情報をシールで保護するような場合がある。この場合、起動回数を保持する起動回数データは、電源ONがされるごとに更新することとなり、なおかつ更新後の起動回数データを記憶しておく必要がある。よって、起動回数データについては、シール更新が必要であると判断される。シール更新処理が必要か否かの判断については、例えば、扱うデータに属性を付加することとしてもよく、更新属性が付加されたデータについて起動する毎に再シール処理を行うこととしてもよい。
以上で、図20の更新用シールデータ生成フローの説明を終了する。
1.3.5.プログラム更新時の処理
セキュアブート対象のプログラム更新時の処理について、図21、図22、図23を用いて説明する。なお、以下、情報処理装置10が、更新用シールデータを予め保持していることを前提に説明をする。
本シーケンスは、セキュアブートが完了した後に実行される(S1901)。プログラムの更新が発生した場合、更新プログラム配信サーバ11が、情報処理端末10に対して、プログラムの更新要求を送信する。情報処理端末10におけるプログラム更新制御部140は、更新プログラム配信サーバ11により送信されたプログラムの更新要求を受信する(S1902)。次に、プログラム更新制御部140は、更新プログラム配信サーバ11から更新用のプログラムと、更新用のプログラムに対応するプログラム証明書を受信する(S1903)。次に、プログラム更新制御部140は、セキュアブート完了状態の期待値1300を利用して、セキュアブートが正常に完了しているかを確認する(S1904)。プログラム更新制御部140は、S1904の結果、セキュアブートが正常に完了していなければ、更新処理を終了し、セキュアブートが正常に完了していれば、S1905へ処理を移す。次に、プログラム更新制御部140は、シールデータ制御部150に対してプログラムの更新要求を行う(S1905)。次に、プログラムの更新要求を受けたシールデータ制御部150は、シールデータ依存リスト1600を参照し、S1903で受信したプログラム証明書に対応した更新すべき通常用シールデータが存在するかを判断する(S1906)。S1906にて、「更新すべきデータが存在しない」という判断結果(S1906:NO)であれば、S1916へ処理を移す。S1906にて、「更新すべきデータが存在する」という判断結果(S1906:YES)であればS1907へ処理を移す。
次に、シールデータ制御部150は、「更新すべきデータが存在する」と判断された通常用シールデータに対応する更新用シールデータをシールデータ格納部170から読み出す(S1907)。次に、シールデータ制御部150は、セキュアモジュール20に対して、S1907で読み出した更新用シールデータのシール解除処理の要求を行う(S1908)。
シール解除処理の要求を受け取ったセキュアモジュール20は、図7に示したフローチャートの手順に基いて、S1908で要求された更新用シールデータのシール解除処理を行う(S1909)。次に、シールデータ制御部150は、シール解除された平文のシール対象データを取得する(S1910)。次に、シールデータ制御部150は、S1903で取得しているプログラム証明書を参照して、更新すべき通常用シールデータの新しいシール解除条件である期待値を取得する(S1911)。次に、シールデータ制御部150は、セキュアモジュール20に対して、S1910で得た平文のシール対象データを、S1911で取得した新しいシール解除条件である期待値とシールデータ公開鍵を入力としてシール処理要求をする(S1912)。次に、セキュアモジュール20は、S1912で要求されたデータに対して既に説明したシール処理を行う(S1913)。次に、シールデータ制御部150は、S1911で取得した期待値をシール解除条件としたシールデータをセキュアモジュール20から取得する(S1914)。次に、シールデータ制御部150は、S1907でリードした通常用シールデータを通常用シールデータ格納領域31から削除し、S1914で取得したシールデータを更新された通常用シールデータとして、通常用シールデータ格納領域31に格納する(S1915)。これにより、更新すべき通常用シールデータは、更新されたことになる。図中ではループ処理とはなっていないが、実際には、更新すべき通常用シールデータが複数存在すれば、その個数分だけ、S1905からS1915の処理が実行される。
続いて、S1916からS1923の更新用シールデータの更新処理について説明する。
セキュアブート対象のプログラムが更新されれば、当然、セキュアブート完了状態の期待値1300も変わることになるため、更新用シールデータも更新する必要がある。
まず、セキュアブート完了状態の期待値1300を更新する(S1916)。本ステップの処理については、既に説明済みである。
次に、シールデータ制御部150が、全ての更新用シールデータのシール解除要求する(S1917)。情報処理端末10は、現在、セキュアブート完了状態であるので、本シール解除処理が可能となる。次に、セキュアモジュール20に、図7のフローに基いて、S1917で要求された更新用シールデータのシール解除処理を行う(S1918)。
次に、シールデータ制御部150は、セキュアモジュール20から更新用シールデータのシール解除された、平文のシール対象データを取得する(S1919)。次に、更新用シールデータを、S1916で生成したプログラム更新後のセキュアブート完了状態の期待値1300で、シール処理を要求する(S1920)。次に、セキュアモジュール20が、図6のフローに基いて、更新後のセキュアブート完了状態の期待値1300でシール処理する(S1921)。次に、シールデータ制御部150が、セキュアモジュール20から、S1921でシールされた更新用シールデータを取得する(S1922)。次に、シールデータ制御部150は、S1912でシール解除要求した更新用シールデータを更新用シールデータ格納領域32から削除し、S1922で取得したシールデータを更新された更新用シールデータとして、更新用シールデータ格納領域32に格納する。これにより、更新用シールデータも、プログラム更新後のセキュアブート完了状態の期待値をシール解除条件としたシールデータで更新されたことになる。図中はループ処理とはなっていないが、実際には、更新用シールデータの個数分だけ、S1917からS1923の処理が実行される。続いて、S1924からS1925で更新すべきプログラムとプログラム証明書を更新する。プログラム更新制御部140が、S1903で受信したプログラム証明書で、証明書格納部190にある古い証明書を更新する(S1924)。次に、プログラム更新制御部140が、S1903で受信した更新プログラムで更新する(S1924)。
このようにすることで、セキュアブート途中の期待値をシール解除条件としたシールデータの更新処理を、セキュアブートが完了した状態で行うことができる。そのため、情報処理端末10のリブート処理をする必要がなくなり、プログラム更新時の利便性が高まる。
以上で、実施の形態1の説明を終わる。
2.実施の形態2
続いて、実施の形態2について説明する。本実施の形態は、ロールバックに対応するものである。ロールバックとは、プログラムを前のバージョンに戻すことをいう。上述した実施の形態1では、通常用シールデータを更新する際に、シールデータ格納部170の通常用シールデータ格納領域31から古い通常用シールデータを削除してから、新しい更新後の新しい通常用シールデータを、通常用シールデータ格納領域31へ書き込むようにしていた。これに対し、本実施の形態では、シールデータ格納部170の通常用シールデータ格納領域31から古い通常用シールデータを削除せずに退避する。退避する通常用シールデータは、シールデータ格納部170の中のロールバック用シールデータ格納領域2200に格納される。
なお、以後、実施の形態1と同じ構成要素について説明は省略する。
2.1.ロールバック対応のシールデータ格納部
図24は、ロールバック対応した際のシールデータ格納部170を示した図である。実施の形態1との差異は、ロールバック用シールデータ格納領域2200が追加された点である。ロールバック用シールデータ格納領域2200は、通常用シールデータを更新する際に、通常用シールデータ格納領域31から古い通常用シールデータを削除せずに、退避しておくための領域である。ロールバック用シールデータ(2210、2220、2230)のデータ構造は、実施の形態1の図5と同様である。
図24のロールバック用シールデータ1(2210)は、通常用シールデータ1(310)に対してロールバックするためのシールデータであり、ロールバック用シールデータ2(2220)は、通常用シールデータ2(320)に対してロールバックするためのシールデータであり、ロールバック用シールデータ3(2230)は、通常用シールデータ1(330)に対してロールバックするためのシールデータである。
2.2.更新要求時のシーケンス
図25は、実施の形態2において、セキュアブート対象プログラムの更新要求があった場合シーケンス図である。
まず、情報処理端末10は、セキュアブート完了状態であるものとする(S2301)。次に、プログラム更新制御部140が、更新プログラム配信サーバ11から、更新プログラムの更新の要求通知を受け取る(S2302)。次に、プログラム更新制御部140が、更新プログラム配信サーバ11から、更新プログラム配信サーバ11から更新対象のプログラムと、更新に必要なプログラム証明書を受信する(S2303)。次に、プログラム更新制御部140は、シールデータ制御部150に対してプログラムの更新要求を行う(S2304)。次に、プログラムの更新要求を受けたシールデータ制御部150は、シールデータ依存リスト1600を参照し、S2303で受信したプログラム証明書に対応した更新すべき通常用シールデータが存在するかを判断する(S2305)。S2305にて、「更新すべきデータが存在しない」という判断結果(図中のNO)であれば、S2307へ処理を移し終了する。S2305にて、「更新すべきデータが存在する」という判断結果(図中のYES)であればS2306へ処理を移す。次にシールデータ制御部150は、「更新すべきデータが存在する」と判断された通常用シールデータを、ロールバック用シールデータ領域2200へ退避する(S2306)。
2.3.ロールバック時のシーケンス
図26、図27は、ロールバック要求時のシーケンスである。
まず、情報処理端末10は、セキュアブート完了状態であるものとする(S2401)。次に、プログラム更新制御部140が、更新プログラム配信サーバ11から、更新プログラムのロールバックの要求通知を受け取る(S2402)。次に、プログラム更新制御部140が、ロールバック用の更新プログラムと、ロールバックに必要なプログラム証明書を受信する(S2403)。次に、プログラム更新制御部140が、シールデータ制御部150にロールバックを要求する(S2404)。次に、プログラムのロールバック要求を受けたシールデータ制御部150は、シールデータ依存リスト1600を参照し、S2403で受信したプログラム証明書に対応したロールバックすべき通常用シールデータが存在するかを判断する(S2405)。S2405にて、「更新すべきデータが存在しない」という判断結果(S2405:NO)であれば、S2407へ処理を移し終了する。S2405にて、「更新すべきデータが存在する」という判断結果(S2405:YES)であればS2406へ処理を移す。次にシールデータ制御部150は、ロールバック用シールデータ格納領域2200にアクセスし、「ロールバックすべきシールデータが存在する」と判断された通常用シールデータに対応するロールバック用シールデータが存在するか判断する(S2406)。S2406にて、「ロールバック用シールデータが存在しない」という判断結果(S2406:NO)であれば、S2408へ処理を移し、実施の形態1にて説明した通常用シールデータの更新処理を行う。S2408において、S2403にて受信したロールバック用プログラム証明書を用いて更新処理することは、ロールバック処理することに等しいので、説明済みの処理フローにより実現できる。また、S2406にて、「ロールバック用シールデータが存在する」という判断結果(S2406:YES)であれば、S2409へ処理を移す。次に、シールデータ制御部150が、ロールバックすべき通常用シールデータに対応するロールバック用データを、ロールバック用シールデータ格納領域2200からリードする(S2409)。次に、シールデータ制御部150が、通常用シールデータ格納領域31内のロールバックすべき通常用シールデータをS2410でリードしたロールバック用データで更新する(S2410)。次に、シールデータ制御部150が、S2410でリードしたロールバック用データをロールバック用シールデータ格納領域2200から消去する(S2411)。次に、シールデータ制御部150が、S2410でリードしたロールバック用データをロールバック用シールデータ格納領域2200から消去する(S2411)。プログラム更新制御部140が、S2403で受信したプログラム証明書で証明書格納部190にある古い証明書を更新する(S2412)。次に、プログラム更新制御部140が、S2404で受信した更新プログラムで更新する(S2413)。
以上で、実施の形態2の説明を終わる。
3.変形例その他
なお、本発明を上記実施の形態に基づいて説明してきたが、本発明は、上記の実施の形態に限定されないのはもちろんである。以下のような場合も本発明に含まれる。
(1)上述の実施形態では、情報処理端末10は、一例としてパーソナルコンピュータである例で説明したがこれに限らず、携帯電話やPDAなどのモバイル機器でもよい。さらには、TVやSTBやDVD/BDプレイヤーなどの据え置き型電子機器でもよい。
また、ネットワーク15は、一例としてインターネットである例で説明したが、これに限らない。その他の公衆ネットワークであってもよいし、携帯電話ネットワークの電話網であってもよい。また、有線でもよいし、無線でもよく、ネットワークの種類は限定されないものとする。
(2)署名905は、実施形態では、公開鍵暗号系であるRSAの秘密鍵を利用して生成することとしたが、これに限らない。例えば、公開鍵暗号として、楕円暗号を用いてもよい。また、図9に図示していないが、X.509の証明書に記載される発行者名、アルゴリズム識別子、有効期間等のデータのフィールドを有してもよいし、TCG Mobile Trusted Module Specificationに記載されるRIM証明書を用いてもよい。
(3)上述の実施形態では、シールデータ識別情報1601は、図5記載のシールデータ構造の認証情報期待値505であるとして説明したが、シールデータが識別できるような情報であればよい。
(4)上述の実施形態では、ハッシュアルゴリズムとして、SHA1を用いる例で説明したがこれに限らない。SHA256やSHA384やSHA512を利用してもよいし、他のアルゴリズムを利用してもよい。また、ハッシュアルゴリズムに限らず、プログラムを一意に識別出来る情報が生成できるアルゴリズムであれば、ハッシュアルゴリズム以外を用いて情報を生成してもよい。
(5)上述の実施形態では、セキュアブート完了状態の期待値1300を、セキュアブート対象のプログラム証明書から生成するものとしているが、セキュアブート完了状態の期待値1300が設定されたプログラム証明書を予め情報処理端末10に持たせるようにしてもよい。この場合、セキュアブート完了状態の期待値1300が設定されたプログラム証明書のExtend先レジスタ番号903とExtend値904にはNULLを設定するものとする。NULLが設定されているということは、このプログラム証明書を利用した場合に、環境情報レジスタ271に対してExtend処理が行われないことを意味する。この証明書を利用することで、図13の処理フローを省くことができる。
(6)上述の実施形態では、通常用シールデータ(310、320、340)からブート処理を行いながら更新用シールデータ(340、350、360)を生成するようにしているが、更新用シールデータ格納領域32に、予め更新用シールデータ(340、350、360)を格納させるようにしてもよい。このように、通常用シールデータを解除して得たデータを、必要であれば更新した上で、シールし直すことで更新用シールデータを生成することで、外部からの情報を使わなくとも更新用データを生成することができる。
(7)シール解除要求の検出は、シール解除コマンドの発行をフッキングすることで行ったが、これに限らない。また、シール解除コマンドの要求を検出フッキングする以外にも、セキュアブート対象プログラムからのシール解除コマンドの要求前に、セキュアブート対象プログラム内にシール解除コマンド要求の前に、シールデータ制御部150へ処理を分岐させるような命令を予め挿入しておいてもよい。
(8)上述の実施形態のシール処理は、シール対象のデータを、シール解除条件と共に公開鍵で暗号化するようにしているが、これに限定される必要はなく、シール解除条件の期待値と合致している環境の時のみ、シール対象データに対するアクセスを行えるようなアクセス制限を実現できる処理であればよい。例えば、シール対象データを、期待値を鍵にして暗号化するといったことで実現できる。または、耐タンパ領域にシール対象データをとシール解除条件の期待値とをセットで暗号化せずに入れておいて、シール解除条件の期待値と、シール解除する環境の環境情報レジスタの値が合致している環境の時のみ、耐タンパ領域外に出すというようにしてもよい。
また、本実施の形態1では、プログラム更新部140とシールデータ制御部150をセキュアブート対象プログラムとして説明していないが、プログラム更新部140とシールデータ制御部150をセキュアブート対象プログラムとしてもよいことは言うまでもない。
(9)セキュアモジュール20は、ハードウェアで実現されてもよく、ソフトウェア実現されてもよい。より具体的には、TCGで規定されるTPMやMTMで実現されてもよい。この場合、環境情報レジスタ271、272は、Platform Configuration Register(PCR)として実現される。
また、本実施の形態では、シール処理をセキュアモジュール20内で行うようにしているが、セキュアモジュール20の外部で行うようにしてもよい。
(10)上述の実施形態では、シールデータ制御部150は、シール更新処理において、シール更新が必要か否かを判断しているが(S1801)、これに限らず、現ステージでシールデータを使用するプログラムからシールデータの更新が必要である旨の通知を受け、その通知を受けたときにシール更新を行うこととしてもよい。
(11)上述の実施形態において、プログラムのロールバックを行うと、セキュアブート完了状態の環境情報期待値レジスタも変わるため、更新用シールデータもロールバックする必要がある。更新用シールデータのロールバックについては、実施の形態1で説明したフローを用いて実現してもよいし、実施の形態2の通常用シールデータのロールバック処理のように、ロールバック用格納領域2200にロールバック処理時に利用するための更新用シールデータを保持するような仕組みとしてもよい。このようにすることで、更新用シールデータの更新処理も簡易化される。
また、ロールバック用シールデータは、ロールバックが完了後にロールバック用シールデータ格納領域2200から削除するようにしているが、そのまま保持しておいてもよい。さらに複数の世代のロールバックを、ロールバック用シールデータ格納領域2200に保持しておいてもよい。このようにすることで、セキュアブート完了状態で、複数世代にわたる通常用シールデータのロールバックが可能となる。
(12)上記の実施の形態では、シールで保護対象となるデータを、ブートに利用する情報のみとしているが、これに限定されない。セキュアブート中にシール解除し、シール解除したデータをセキュアブート完了後に利用するようにしてもよい。例えば、携帯電話の固有情報であるIMEIデータをセキュアブート途中の環境情報でシール保護しておき、セキュアブート過程でシールが解除され、シール解除されたIMEIデータをセキュアブート完了後に利用するようにしてもよい。
(13)上記実施の形態では、各プログラムのハッシュ値または各プログラムが起動したことを示す文字列のハッシュ値を計算していた。しかし、この値はハッシュ値に限られるものではなく、各プログラムまたは各文字列の特徴に依存して変化する値を広く使用することができる。例えば、チェックサムなど他の情報を使用することもできる。また、多少精度は低下するが、各プログラムや文字列の最初の所定ビット数の値などであっても構わない。
(14)上記実施の形態では、ブートの対象はプログラムであった。しかし、この対象はプログラムに限られるものではない。例えば、プログラムと各プログラムに対するプラグインも含んだソフトウェアモジュールであってもよい。
(15)上記の各装置は、具体的には、マイクロプロセッサ、ROM、RAM、ハードディスクユニット、ディスプレイユニット、キーボード、マウスなどから構成されるコンピュータシステムである。前記RAMまたはハードディスクユニットには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムにしたがって動作することにより、各装置は、その機能を達成する。ここでコンピュータプログラムは、所定の機能を達成するために、コンピュータに対する指令を示す命令コードが複数個組み合わされて構成されたものである。また、各装置は、マイクロプロセッサ、ROM、RAM、ハードディスクユニット、ディスプレイユニット、キーボード、マウスなどの全てを含むものではなく、これらの一部から構成されているとしてもよい。
(16)上記の各装置を構成する構成要素の一部または全部は、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に置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。バイオ技術の適用等が可能性としてありえる。
(17)上記の各装置を構成する構成要素の一部または全部は、各装置に脱着可能なICカードまたは単体のモジュールから構成されているとしてもよい。前記ICカードまたは前記モジュールは、マイクロプロセッサ、ROM、RAMなどから構成されるコンピュータシステムである。前記ICカードまたは前記モジュールは、上記の超多機能LSIを含むとしてもよい。マイクロプロセッサが、コンピュータプログラムにしたがって動作することにより、前記ICカードまたは前記モジュールは、その機能を達成する。このICカードまたはこのモジュールは、耐タンパ性を有するとしてもよい。
(18)本発明は、上記に示す方法であるとしてもよい。また、これらの方法をコンピュータにより実現するコンピュータプログラムであるとしてもよいし、前記コンピュータプログラムからなるデジタル信号であるとしてもよい。
また、本発明は、前記コンピュータプログラムまたは前記デジタル信号をコンピュータ読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、CD−ROM、MO、DVD、DVD−ROM、DVD−RAM、BD(Blu−ray Disc)、半導体メモリなどに記録したものとしてもよい。また、これらの記録媒体に記録されている前記デジタル信号であるとしてもよい。
また、本発明は、前記コンピュータプログラムまたは前記デジタル信号を、電気通信回線、無線または有線通信回線、インターネットを代表とするネットワーク、データ放送等を経由して伝送するものとしてもよい。
また、本発明は、マイクロプロセッサとメモリを備えたコンピュータシステムであって、前記メモリは、上記コンピュータプログラムを記憶しており、前記マイクロプロセッサは、前記コンピュータプログラムにしたがって動作するとしてもよい。
また、前記プログラムまたは前記デジタル信号を前記記録媒体に記録して移送することにより、または前記プログラムまたは前記デジタル信号を前記ネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしてもよい。
(19)上記実施の形態及び上記変形例をそれぞれ組み合わせるとしてもよい。
本発明に係る情報処理装置は、実行するプログラムが更新され、更新された場合にも装置全体の完全性を保証しつつセキュアブートすることが必要な携帯電話機、電子計算機などの電子機器等に適用するのに好適であり、これら電子機器の製造業者等により製造、販売等がされる。
1 情報処理システム
10 情報処理端末
11 更新プログラム配信サーバ
12 期待値データベース
13 プログラム証明書データベース
14 更新プログラムデータベース
15 ネットワーク
100 CPU
101 IPL
102 OSローダ
103 OS
104 アプリケーション
110 RAM
120 ROM
130 プログラム格納部
140 プログラム更新制御部
150 シールデータ制御部
160 シールデータ依存リスト格納部
170 シールデータ格納部
180 シール鍵格納部
190 証明書格納部
20 セキュアモジュール
210 コマンドI/O
220 検証処理部
230 測定処理部
240 暗号処理部
250 シール処理部
270 環境情報格納部
271、272、1201、1202、1203 環境情報レジスタ
31 通常用シールデータ格納領域
32 更新用シールデータ格納領域
310、320、330 通常用シールデータ
340、350、360 更新用シールデータ
400 ルート鍵ペア
401 ルート秘密鍵
402 ルート公開鍵
410、420、430 シールデータ鍵ペア
411、421、431 シールデータ公開鍵
412、422、432 シールデータ秘密鍵
501、1511、1521 環境情報サイズ
502、902、1512、1522 期待値
503、1513、1523 シール対象データサイズ
504、1514、1524 シール対象データ
505、1515、1525 認証情報期待値
901 証明書識別子
903 Extend先レジスタ番号
904 Extend値
905 署名
1010、1011 IPL証明書
1020、1021 OSローダ証明書
1030、1031 OS証明書
1300 セキュアブート完了状態の期待値
1600 シールデータ依存リスト
1601 シールデータ識別情報
1602 証明書識別情報
2200 ロールバック用シールデータ格納領域
2210、2220、2230 ロールバック用シールデータ

Claims (14)

  1. 複数のプログラムをそれぞれの完全性を検証しながら予め定めた順番で起動するセキュアブートを実行する情報処理装置であって、
    前記複数のプログラムを実行する実行手段と、
    プログラムが起動される毎に、起動されたプログラムの特徴情報を生成して累積し、得られた累積値を保持する累積手段と、
    特定のプログラムが起動に使用する起動用データを、当該プログラムの起動直前に前記累積手段により保持されている累積値の期待値とともに保護した第1の保護化データと、前記起動用データを、セキュアブート後に前記累積手段により保持されている累積値の期待値とともに保護した第2の保護化データとを保持する記憶手段と、
    セキュアブート後に、前記特定のプログラムより起動順が先のプログラムの更新を行う場合に、前記第2の保護化データの保護を解除し、前記第2の保護化データに係る期待値と、セキュアブート後に前記累積手段により保持されている累積値とが一致するか否か判定し、一致する場合にのみ前記第2の保護化データに係る前記起動用データを出力する保護解除手段と、
    前記起動用データが出力された場合に、前記第1の保護化データについて、前記起動用データを、前記更新後における前記特定のプログラムの起動直前に前記累積手段により保持されている累積値の期待値とともに再保護する再保護手段と
    を備えることを特徴とする情報処理装置。
  2. 前記再保護手段は、前記起動用データが出力された場合に、さらに、前記第2の保護化データについて、前記起動用データを、前記更新がされ、さらにセキュアブートされた後に前記累積手段により保持される累積値の期待値とともに再保護する
    ことを特徴とする請求項1記載の情報処理装置。
  3. 前記保護解除手段は、さらに、
    前記特定のプログラムを実行中の前記実行手段によって前記起動用データの取得要求がされた場合に、前記第1の保護化データの保護を解除し、前記第1の保護化データに係る期待値と、前記累積手段により保持されている累積値とが一致するか否か判定し、一致する場合にのみ前記起動用データを前記実行手段に出力する
    ことを特徴とする請求項2記載の情報処理装置。
  4. 前記再保護手段は、さらに、
    前記特定のプログラムを実行中の前記実行手段によって、前記起動用データが変更された場合に、前記変更された起動用データを、当該プログラムの起動直前に前記累積手段により保持されている累積値の期待値とともに保護した新たな第1の保護化データを生成し、生成した第1の保護化データで前記記憶手段に保持されている第1の保護化データを置き換え、前記変更された起動用データを、セキュアブート後に前記累積手段により保持されている累積値の期待値とともに保護した新たな第2の保護化データを生成し、生成した第2の保護化データで前記記憶手段に保持されている第2の保護化データを置き換える
    ことを特徴とする請求項3記載の情報処理装置。
  5. 前記保護解除手段は、さらに、保護解除指示を受け付けて、前記第1の保護化データの保護を解除し、前記第1の保護化データに係る期待値と、前記累積手段により保持されている累積値とが一致するか否か判定し、一致する場合にのみ前記第1の保護化データに係る前記起動用データを出力し、
    前記情報処理装置は、さらに、
    前記複数のプログラムそれぞれが起動される毎に、前記保護解除手段に前記保護解除指示を出力し、前記保護解除手段により前記起動用データが出力された場合、当該起動されたプログラムを前記特定のプログラムとして前記第1保護化データと対応付けた管理情報を生成する管理情報生成手段と、
    前記管理情報を記録する管理情報記録手段とを備え、
    前記実行手段は、前記管理情報記録手段により前記管理情報が記録されている状態で前記複数のプログラムそれぞれを起動するときに、前記管理情報に基づいて当該起動するプログラムが前記特定のプログラムであるか否かを判断する
    ことを特徴とする請求項3に記載の情報処理装置。
  6. 前記第1及び第2の保護化データの保護は、暗号化による保護であり、
    前記保護解除手段は、前記第2の保護化データの保護を解除する場合、前記第2の保護化データを復号し、
    前記再保護手段は、前記再保護として、前記起動用データを前記累積手段により前記更新後における特定のプログラムの起動直前の累積値の期待値とともに暗号化する
    ことを特徴とする請求項1記載の情報処理装置。
  7. 前記特徴情報は、起動したプログラムのハッシュ値である
    ことを特徴とする請求項1記載の情報処理装置。
  8. 前記特徴情報は、前記プログラムが正常に起動した状態を示す状態情報である
    ことを特徴とする請求項1記載の情報処理装置。
  9. 前記状態情報は、前記プログラムが起動したことを示す文字列のハッシュ値である
    ことを特徴とする請求項8に記載の情報処理装置。
  10. 前記再保護手段は、さらに、再保護前の第1の保護化データを前記記憶手段にバックアップし、
    前記情報処理装置は、さらに、
    前記更新されたプログラムを更新前のプログラムに戻すよう指示された場合に、再保護された第1の保護化データを、前記第1の保護化データのバックアップで置き換えるロールバック手段
    を備えることを特徴とする請求項1記載の情報処理装置。
  11. 複数のプログラムをそれぞれの完全性を検証しながら予め定めた順番で起動するセキュアブートを実行する情報処理装置に用いられる情報処理方法であって、
    前記情報処理装置は、
    前記複数のプログラムを実行する実行手段と、
    プログラムが起動される毎に、起動されたプログラムの特徴情報を生成して累積し、得られた累積値を保持する累積手段と、
    特定のプログラムが起動に使用する起動用データを、当該プログラムの起動直前に前記累積手段により保持されている累積値の期待値とともに保護した第1の保護化データと、前記起動用データを、セキュアブート後に前記累積手段により保持されている累積値の期待値とともに保護した第2の保護化データとを保持する記憶手段とを備えており、
    前記情報処理方法は、
    セキュアブート後に、前記特定のプログラムより起動順が先のプログラムの更新を行う場合に、前記第2の保護化データの保護を解除し、前記第2の保護化データに係る期待値と、セキュアブート後に前記累積手段により保持されている累積値とが一致するか否か判定し、一致する場合にのみ前記第2の保護化データに係る前記起動用データを出力する保護解除ステップと、
    前記起動用データが出力された場合に、前記第1の保護化データについて、前記起動用データを、前記更新後における前記特定のプログラムの起動直前に前記累積手段により保持されている累積値の期待値とともに再保護する再保護ステップと
    を含むことを特徴とする情報処理方法。
  12. 複数のプログラムをそれぞれの完全性を検証しながら予め定めた順番で起動するセキュアブートを実行する情報処理装置に用いられる情報処理プログラムであって、
    前記情報処理装置は、
    前記複数のプログラムを実行する実行手段と、
    プログラムが起動される毎に、起動されたプログラムの特徴情報を生成して累積し、得られた累積値を保持する累積手段と、
    特定のプログラムが起動に使用する起動用データを、当該プログラムの起動直前に前記累積手段により保持されている累積値の期待値とともに保護した第1の保護化データと、前記起動用データを、セキュアブート後に前記累積手段により保持されている累積値の期待値とともに保護した第2の保護化データとを保持する記憶手段とを備えており、
    前記情報処理プログラムは、
    セキュアブート後に、前記特定のプログラムより起動順が先のプログラムの更新を行う場合に、前記第2の保護化データの保護を解除し、前記第2の保護化データに係る期待値と、セキュアブート後に前記累積手段により保持されている累積値とが一致するか否か判定し、一致する場合にのみ前記第2の保護化データに係る前記起動用データを出力する保護解除ステップと、
    前記起動用データが出力された場合に、前記第1の保護化データについて、前記起動用データを、前記更新後における前記特定のプログラムの起動直前に前記累積手段により保持されている累積値の期待値とともに再保護する再保護ステップと
    をコンピュータに実行させることを特徴とする情報処理プログラム。
  13. 複数のプログラムをそれぞれの完全性を検証しながら予め定めた順番で起動するセキュアブートを実行する情報処理装置に用いられる情報処理プログラムを記憶するコンピュータ読み取り可能な記録媒体であって、
    前記情報処理装置は、
    前記複数のプログラムを実行する実行手段と、
    プログラムが起動される毎に、起動されたプログラムの特徴情報を生成して累積し、得られた累積値を保持する累積手段と、
    特定のプログラムが起動に使用する起動用データを、当該プログラムの起動直前に前記累積手段により保持されている累積値の期待値とともに保護した第1の保護化データと、前記起動用データを、セキュアブート後に前記累積手段により保持されている累積値の期待値とともに保護した第2の保護化データとを保持する記憶手段とを備えており、
    前記情報処理プログラムは、
    セキュアブート後に、前記特定のプログラムより起動順が先のプログラムの更新を行う場合に、前記第2の保護化データの保護を解除し、前記第2の保護化データに係る期待値と、セキュアブート後に前記累積手段により保持されている累積値とが一致するか否か判定し、一致する場合にのみ前記第2の保護化データに係る前記起動用データを出力する保護解除ステップと、
    前記起動用データが出力された場合に、前記第1の保護化データについて、前記起動用データを、前記更新後における前記特定のプログラムの起動直前に前記累積手段により保持されている累積値の期待値とともに再保護する再保護ステップと
    をコンピュータに実行させることを特徴とする記録媒体。
  14. 複数のプログラムをそれぞれの完全性を検証しながら予め定めた順番で起動するセキュアブートを実行する情報処理装置に用いられる集積回路であって、
    前記複数のプログラムを実行する実行手段と、
    プログラムが起動される毎に、起動されたプログラムの特徴情報を生成して累積し、得られた累積値を保持する累積手段と、
    特定のプログラムが起動に使用する起動用データを、当該プログラムの起動直前に前記累積手段により保持されている累積値の期待値とともに保護した第1の保護化データと、前記起動用データを、セキュアブート後に前記累積手段により保持されている累積値の期待値とともに保護した第2の保護化データとを保持する記憶手段と、
    セキュアブート後に、前記特定のプログラムより起動順が先のプログラムの更新を行う場合に、前記第2の保護化データの保護を解除し、前記第2の保護化データに係る期待値と、セキュアブート後に前記累積手段により保持されている累積値とが一致するか否か判定し、一致する場合にのみ前記第2の保護化データに係る前記起動用データを出力する保護解除手段と、
    前記起動用データが出力された場合に、前記第1の保護化データについて、前記起動用データを、前記更新後における前記特定のプログラムの起動直前に前記累積手段により保持されている累積値の期待値とともに再保護する再保護手段と
    を備えることを特徴とする集積回路。
JP2010532825A 2008-10-10 2009-10-09 情報処理装置、情報処理方法、情報処理プログラム及び集積回路 Expired - Fee Related JP5457362B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2010532825A JP5457362B2 (ja) 2008-10-10 2009-10-09 情報処理装置、情報処理方法、情報処理プログラム及び集積回路

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2008263679 2008-10-10
JP2008263679 2008-10-10
PCT/JP2009/005274 WO2010041462A1 (ja) 2008-10-10 2009-10-09 情報処理装置、情報処理方法、情報処理プログラム及び集積回路
JP2010532825A JP5457362B2 (ja) 2008-10-10 2009-10-09 情報処理装置、情報処理方法、情報処理プログラム及び集積回路

Publications (2)

Publication Number Publication Date
JPWO2010041462A1 JPWO2010041462A1 (ja) 2012-03-08
JP5457362B2 true JP5457362B2 (ja) 2014-04-02

Family

ID=42100423

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010532825A Expired - Fee Related JP5457362B2 (ja) 2008-10-10 2009-10-09 情報処理装置、情報処理方法、情報処理プログラム及び集積回路

Country Status (3)

Country Link
US (1) US8732445B2 (ja)
JP (1) JP5457362B2 (ja)
WO (1) WO2010041462A1 (ja)

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101760778B1 (ko) * 2011-01-17 2017-07-26 에스프린팅솔루션 주식회사 컴퓨터시스템 및 그 프로그램 업데이트 방법
WO2013012435A1 (en) * 2011-07-18 2013-01-24 Hewlett-Packard Development Company, L.P. Security parameter zeroization
US8812830B2 (en) 2011-08-31 2014-08-19 Microsoft Corporation Attestation protocol for securely booting a guest operating system
JP5969845B2 (ja) * 2012-07-18 2016-08-17 キヤノン株式会社 情報処理装置及びその制御方法
US20140026228A1 (en) * 2012-07-23 2014-01-23 Kabushiki Kaisha Toshiba Information processing apparatus and control method
US9135446B2 (en) * 2012-09-28 2015-09-15 Intel Corporation Systems and methods to provide secure storage
US10678225B2 (en) 2013-03-04 2020-06-09 Fisher-Rosemount Systems, Inc. Data analytic services for distributed industrial performance monitoring
US10649424B2 (en) 2013-03-04 2020-05-12 Fisher-Rosemount Systems, Inc. Distributed industrial performance monitoring and analytics
US9665088B2 (en) 2014-01-31 2017-05-30 Fisher-Rosemount Systems, Inc. Managing big data in process control systems
US9558220B2 (en) 2013-03-04 2017-01-31 Fisher-Rosemount Systems, Inc. Big data in process control systems
US10909137B2 (en) 2014-10-06 2021-02-02 Fisher-Rosemount Systems, Inc. Streaming data for analytics in process control systems
US9397836B2 (en) * 2014-08-11 2016-07-19 Fisher-Rosemount Systems, Inc. Securing devices to process control systems
US10866952B2 (en) 2013-03-04 2020-12-15 Fisher-Rosemount Systems, Inc. Source-independent queries in distributed industrial system
US10649449B2 (en) 2013-03-04 2020-05-12 Fisher-Rosemount Systems, Inc. Distributed industrial performance monitoring and analytics
US11573672B2 (en) 2013-03-15 2023-02-07 Fisher-Rosemount Systems, Inc. Method for initiating or resuming a mobile control session in a process plant
WO2014198340A1 (en) * 2013-06-14 2014-12-18 Nec Europe Ltd. Method for performing a secure boot of a computing system and computing system
US10013565B2 (en) * 2014-08-18 2018-07-03 Dell Products, Lp System and method for secure transport of data from an operating system to a pre-operating system environment
EP3221996B1 (en) * 2014-11-17 2019-07-24 Intel Corporation Symmetric keying and chain of trust
JP6197000B2 (ja) * 2015-07-03 2017-09-13 Kddi株式会社 システム、車両及びソフトウェア配布処理方法
KR101816022B1 (ko) * 2015-11-19 2018-01-31 시큐리티플랫폼 주식회사 장치 및 이의 제어 방법
US10503483B2 (en) 2016-02-12 2019-12-10 Fisher-Rosemount Systems, Inc. Rule builder in a process control network
US10177910B2 (en) 2016-08-31 2019-01-08 Microsoft Technology Licensing, Llc Preserving protected secrets across a secure boot update
US10802878B2 (en) * 2017-03-31 2020-10-13 Bmc Software, Inc. Phased start and stop of resources in a mainframe environment
US11074348B2 (en) * 2017-08-24 2021-07-27 International Business Machines Corporation Securing and changing immutable data in secure bootup
US11374745B1 (en) * 2017-11-29 2022-06-28 Amazon Technologies, Inc. Key usage tracking using TPM
US11481381B2 (en) * 2019-09-30 2022-10-25 EMC IP Holding Company, LLC System and method for non-disruptive in-memory certificate management

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060161784A1 (en) * 2005-01-14 2006-07-20 Microsoft Corporation Systems and methods for updating a secure boot process on a computer with a hardware security module
WO2007124091A1 (en) * 2006-04-21 2007-11-01 Interdigital Technology Corporation Apparatus and methods for performing trusted computing integrity measurement reporting
WO2008081801A1 (ja) * 2006-12-27 2008-07-10 Panasonic Corporation 情報端末、セキュリティデバイス、データ保護方法及びデータ保護プログラム
JP2008535049A (ja) * 2005-03-22 2008-08-28 ヒューレット−パッカード デベロップメント カンパニー エル.ピー. トラステッドデータのための方法、デバイス、およびデータ構造体

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7725703B2 (en) 2005-01-07 2010-05-25 Microsoft Corporation Systems and methods for securely booting a computer with a trusted processing module

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060161784A1 (en) * 2005-01-14 2006-07-20 Microsoft Corporation Systems and methods for updating a secure boot process on a computer with a hardware security module
JP2008535049A (ja) * 2005-03-22 2008-08-28 ヒューレット−パッカード デベロップメント カンパニー エル.ピー. トラステッドデータのための方法、デバイス、およびデータ構造体
WO2007124091A1 (en) * 2006-04-21 2007-11-01 Interdigital Technology Corporation Apparatus and methods for performing trusted computing integrity measurement reporting
WO2008081801A1 (ja) * 2006-12-27 2008-07-10 Panasonic Corporation 情報端末、セキュリティデバイス、データ保護方法及びデータ保護プログラム

Also Published As

Publication number Publication date
US20110185165A1 (en) 2011-07-28
US8732445B2 (en) 2014-05-20
WO2010041462A1 (ja) 2010-04-15
JPWO2010041462A1 (ja) 2012-03-08

Similar Documents

Publication Publication Date Title
JP5457362B2 (ja) 情報処理装置、情報処理方法、情報処理プログラム及び集積回路
EP3458999B1 (en) Self-contained cryptographic boot policy validation
US11829479B2 (en) Firmware security verification method and device
CN101657792B (zh) 可信部件更新系统和方法
JP5631334B2 (ja) 情報処理装置
US8560823B1 (en) Trusted modular firmware update using digital certificate
CN1645288B (zh) 确保软件更新仅在特定设备或设备类上安装或运行
TWI384381B (zh) 升級記憶卡使其具有防止安全內容及應用之複製之安全性機制
US8844049B2 (en) Method for generating a cryptographic key for a protected digital data object on the basis of current components of a computer
US8296579B2 (en) System and method for updating a basic input/output system (BIOS)
WO2009118801A1 (ja) ソフトウェア更新装置、ソフトウェア更新システム、無効化方法、及び無効化プログラム
JP2008537224A (ja) 安全な起動方法およびシステム
CN102057618A (zh) 信息处理装置、加密密钥的管理方法、计算机程序及集成电路
WO2011142095A1 (ja) 情報処理装置および情報処理方法
EP2051181A1 (en) Information terminal, security device, data protection method, and data protection program
CN111382397B (zh) 升级软件包配置方法、软件升级方法、设备及存储装置
KR102256249B1 (ko) 통합 보안 SoC를 이용한 IoT 디바이스의 안전한 펌웨어 업데이트 방법
JP6930884B2 (ja) Bios管理装置、bios管理システム、bios管理方法、及び、bios管理プログラム
JP2007316944A (ja) データ処理装置、データ処理方法、およびデータ処理プログラム
WO2019142307A1 (ja) 半導体装置、更新データ提供方法、更新データ受取方法およびプログラム
KR102089435B1 (ko) 안전한 usb 장치를 보장하는 부트 방법
CN111291389B (zh) 一种计算机核心程序全生命周期的保护方法及系统
US20230394152A1 (en) Establishing a chain of ownership of a device
JP2018182398A (ja) 情報処理装置、機器、機器管理システム及び情報処理方法
JP2012039390A (ja) フレキシブル認証ルールの修正

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120622

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131015

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131126

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140109

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 5457362

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees