(57)【特許請求の範囲】
【請求項１】
複数のソフトウェアモジュールを予め定められた順番で起動するセキュアブート端末であって、
前記複数のソフトウェアモジュールそれぞれについて、当該ソフトウェアモジュールからハッシュ値として算出されるべき参照計測値と、当該ソフトウェアモジュールより先に起動される他のソフトウェアモジュールそれぞれの参照計測値を累積演算した場合に得られるべき参照累積値とを含むデジタル証明書を格納している第１格納手段と、
起動の順番に達したソフトウェアモジュールについて、当該ソフトウェアモジュールより先に起動される他のソフトウェアモジュールそれぞれのハッシュ値を累積演算した実累積値と、当該ソフトウェアモジュールに対応するデジタル証明書に含まれる参照累積値とを比較して、当該ソフトウェアモジュールより先に起動されるソフトウェアモジュールの有効性を検証する検証手段と、
前記複数のソフトウェアモジュールのうち１つのソフトウェアモジュール、及び前記１つのソフトウェアモジュールに係るデジタル証明書を更新する更新手段と、
前記他のソフトウェアモジュールそれぞれについて、デジタル証明書が最新に更新されている場合は、更新前に最新だったデジタル証明書に含まれる参照計測値を累積演算し、前記他のソフトウェアモジュールのデジタル証明書が最新に更新されていない場合は、当該デジタル証明書に含まれる参照計測値を累積演算した代替累積値を格納する第２格納手段と、
（ａ）前記検証手段による有効性の検証が成功した場合、前記起動の順番に達したソフトウェアモジュールを起動し、（ｂ）前記検証手段による有効性の検証が失敗した場合、前記代替累積値と前記起動の順番に達したソフトウェアモジュールに係るデジタル証明書に含まれる参照累積値とを比較し、前記参照累積値と前記代替累積値が一致すれば、前記起動の順番に達したソフトウェアモジュールを起動するブート制御手段と
を備えることを特徴とするセキュアブート端末。
【請求項２】
前記更新手段は、更に、
全ソフトウェアモジュールが起動した後に、前記検証手段による検証に失敗したソフトウェアモジュールについて、当該ソフトウェアモジュールに対応するデジタル証明書を更新する
ことを特徴とする請求項１記載のセキュアブート端末。
【請求項３】
前記セキュアブート端末は、更に、
前記他のソフトウェアモジュールそれぞれについて更新があったか否かを判定する更新判定手段と、
更新があったソフトウェアモジュールについては、当該ソフトウェアモジュールに係る更新前に最新だったデジタル証明書に含まれる参照計測値を累積演算し、更新がなかったソフトウェアモジュールについては、当該ソフトウェアモジュールに係るデジタル証明書に含まれる参照計測値を累積演算して前記代替累積値を算出し、前記第２格納手段に記録する代替累積手段と
を備えることを特徴とする請求項２記載のセキュアブート端末。
【請求項４】
前記代替累積手段は、更に、
前記更新があったソフトウェアモジュールについては、前記ソフトウェアモジュールから算出されるハッシュ値が、前記ソフトウェアモジュールに係るデジタル証明書に含まれる参照計測値と一致するか否かを確認し、一致する場合に、前記更新前に最新だったデジタル証明書に含まれる参照計測値を累積演算する
ことを特徴とする請求項３記載のセキュアブート端末。
【請求項５】
前記代替累積手段は、前記代替累積値を暗号化して前記第２格納手段に格納する
ことを特徴とする請求項３記載のセキュアブート端末。
【請求項６】
前記セキュアブート端末は、更に、
前記検証手段による有効性の検証が失敗したソフトウェアモジュールが前記ブート制御手段によって起動された場合、当該ソフトウェアモジュールに対応するデジタル証明書の更新が必要である旨を通知する通知手段
を備えることを特徴とする請求項１記載のセキュアブート端末。
【請求項７】
前記デジタル証明書は、対応するソフトウェアモジュールについて、前記検証手段による検証が失敗した場合に制限すべき機能を示す制限情報を含み、
前記ブート制御手段は、前記検証手段による検証が失敗したソフトウェアモジュールを起動する場合、前記制限情報により示される機能を制限した状態で前記ソフトウェアモジュールを起動する
ことを特徴とする請求項１記載のセキュアブート端末。
【請求項８】
前記セキュアブート端末は、更に、
前記複数のソフトウェアモジュールのそれぞれについて、
前記ソフトウェアモジュールを示す情報と、前記ソフトウェアモジュールに係る現在のデジタル証明書を示す情報と、前記ソフトウェアモジュールに係る更新前に最新だったデジタル証明書を示す情報とを格納する領域を持つ複数の構造体、及び、前記複数の構造体のうち１つの構造体を使用中の現構造体として指し示す現構造体ポインタを記憶する構造体格納手段を備え、
前記更新手段は、
前記１つのソフトウェアモジュールの更新版及び前記１つのソフトウェアモジュールに係るデジタル証明書の更新版を取得する取得部と、
前記１つのソフトウェアモジュールに対応する構造体のうち、現構造体ポインタによって示されていない構造体である更新用構造体について、
（ａ）前記更新用構造体の前記ソフトウェアモジュールを示す情報として、前記１つのソフトウェアモジュールの更新版を示す情報を格納し、（ｂ）前記更新用構造体の前記現在のデジタル証明書を示す情報として、前記１つのソフトウェアモジュールに係るデジタル証明書の更新版を示す情報を格納し、（ｃ）前記更新用構造体の前記更新前のデジタル証明書を示す情報として、前記現構造体ポインタの示す構造体の前記現在のデジタル証明書を示す情報を格納する構造体更新部と、
前記現構造体ポインタを、前記更新用構造体を示すよう更新するポインタ変更部と
を備えることを特徴とする請求項１記載のセキュアブート端末。
【請求項９】
前記セキュアブート端末は、更に、
前記複数のソフトウェアモジュールのうち１つのソフトウェアモジュールについてデジタル証明書の更新版を取得する取得手段と、
前記１つのソフトウェアモジュールより起動の順番が前の他のソフトウェアモジュールそれぞれに対応する参照計測値を累積演算して事前累積値を生成する事前累積値生成手段と、
前記事前累積値と、前記デジタル証明書の更新版に含まれる目標累積値とを比較して、前記１つのソフトウェアモジュールよりも起動の順番が前のソフトウェアモジュールの有効性を検証する事前検証手段とを備え、
前記更新手段は、更に、前記事前検証手段による検証に成功した場合に、前記デジタル証明書の更新版で、前記１つのソフトウェアモジュールに係るデジタル証明書を更新する
ことを特徴とする請求項１記載のセキュアブート端末。
【請求項１０】
複数のソフトウェアモジュールを予め定められた順番で起動するセキュアブート端末が実行するセキュアブート方法であって、
前記複数のソフトウェアモジュールそれぞれについて、当該ソフトウェアモジュールからハッシュ値として算出されるべき参照計測値と、当該ソフトウェアモジュールより先に起動される他のソフトウェアモジュールそれぞれの参照計測値を累積演算した場合に得られるべき参照累積値とを含むデジタル証明書を格納する第１格納ステップと、
起動の順番に達したソフトウェアモジュールについて、当該ソフトウェアモジュールより先に起動される他のソフトウェアモジュールそれぞれのハッシュ値を累積演算した実累積値と、当該ソフトウェアモジュールに対応するデジタル証明書に含まれる参照累積値とを比較して、当該ソフトウェアモジュールより先に起動されるソフトウェアモジュールの有効性を検証する検証ステップと、
前記複数のソフトウェアモジュールのうち１つのソフトウェアモジュール、及び前記１つのソフトウェアモジュールに係るデジタル証明書を更新する更新ステップと、
前記他のソフトウェアモジュールそれぞれについて、デジタル証明書が最新に更新されている場合は、更新前に最新だったデジタル証明書に含まれる参照計測値を累積演算し、前記他のソフトウェアモジュールのデジタル証明書が最新に更新されていない場合は、当該デジタル証明書に含まれる参照計測値を累積演算した代替累積値を格納する第２格納ステップと、
（ａ）前記検証手段による有効性の検証が成功した場合、前記起動の順番に達したソフトウェアモジュールを起動し、（ｂ）前記検証手段による有効性の検証が失敗した場合、前記代替累積値と前記起動の順番に達したソフトウェアモジュールに係るデジタル証明書に含まれる参照累積値とを比較し、前記参照累積値と前記代替累積値が一致すれば、前記起動の順番に達したソフトウェアモジュールを起動するブート制御ステップと
を含むことを特徴とするセキュアブート方法。
【請求項１１】
コンピュータを、複数のソフトウェアモジュールを予め定められた順番で起動するセキュアブート端末として機能させるためのセキュアブートプログラムであって、
前記コンピュータを、
前記複数のソフトウェアモジュールそれぞれについて、当該ソフトウェアモジュールからハッシュ値として算出されるべき参照計測値と、当該ソフトウェアモジュールより先に起動される他のソフトウェアモジュールそれぞれの参照計測値を累積演算した場合に得られるべき参照累積値とを含むデジタル証明書を格納している第１格納手段と、
起動の順番に達したソフトウェアモジュールについて、当該ソフトウェアモジュールより先に起動される他のソフトウェアモジュールそれぞれのハッシュ値を累積演算した実累積値と、当該ソフトウェアモジュールに対応するデジタル証明書に含まれる参照累積値とを比較して、当該ソフトウェアモジュールより先に起動されるソフトウェアモジュールの有効性を検証する検証手段と、
前記複数のソフトウェアモジュールのうち１つのソフトウェアモジュール、及び前記１つのソフトウェアモジュールに係るデジタル証明書を更新する更新手段と、
前記他のソフトウェアモジュールそれぞれについて、デジタル証明書が最新に更新されている場合は、更新前に最新だったデジタル証明書に含まれる参照計測値を累積演算し、前記他のソフトウェアモジュールのデジタル証明書が最新に更新されていない場合は、当該デジタル証明書に含まれる参照計測値を累積演算した代替累積値を格納する第２格納手段と、
（ａ）前記検証手段による有効性の検証が成功した場合、前記起動の順番に達したソフトウェアモジュールを起動し、（ｂ）前記検証手段による有効性の検証が失敗した場合、前記代替累積値と前記起動の順番に達したソフトウェアモジュールに係るデジタル証明書に含まれる参照累積値とを比較し、前記参照累積値と前記代替累積値が一致すれば、前記起動の順番に達したソフトウェアモジュールを起動するブート制御手段
として機能させることを特徴とするセキュアブートプログラム。
【請求項１２】
コンピュータを、複数のソフトウェアモジュールを予め定められた順番で起動するセキュアブート端末として機能させるためのセキュアブートプログラムを記録する記録媒体であって、
前記セキュアブートプログラムは、前記コンピュータを、
前記複数のソフトウェアモジュールそれぞれについて、当該ソフトウェアモジュールからハッシュ値として算出されるべき参照計測値と、当該ソフトウェアモジュールより先に起動される他のソフトウェアモジュールそれぞれの参照計測値を累積演算した場合に得られるべき参照累積値とを含むデジタル証明書を格納している第１格納手段と、
起動の順番に達したソフトウェアモジュールについて、当該ソフトウェアモジュールより先に起動される他のソフトウェアモジュールそれぞれのハッシュ値を累積演算した実累積値と、当該ソフトウェアモジュールに対応するデジタル証明書に含まれる参照累積値とを比較して、当該ソフトウェアモジュールより先に起動されるソフトウェアモジュールの有効性を検証する検証手段と、
前記複数のソフトウェアモジュールのうち１つのソフトウェアモジュール、及び前記１つのソフトウェアモジュールに係るデジタル証明書を更新する更新手段と、
前記他のソフトウェアモジュールそれぞれについて、デジタル証明書が最新に更新されている場合は、更新前に最新だったデジタル証明書に含まれる参照計測値を累積演算し、前記他のソフトウェアモジュールのデジタル証明書が最新に更新されていない場合は、当該デジタル証明書に含まれる参照計測値を累積演算した代替累積値を格納する第２格納手段と、
（ａ）前記検証手段による有効性の検証が成功した場合、前記起動の順番に達したソフトウェアモジュールを起動し、（ｂ）前記検証手段による有効性の検証が失敗した場合、前記代替累積値と前記起動の順番に達したソフトウェアモジュールに係るデジタル証明書に含まれる参照累積値とを比較し、前記参照累積値と前記代替累積値が一致すれば、前記起動の順番に達したソフトウェアモジュールを起動するブート制御手段
として機能させることを特徴とする記録媒体。
【請求項１３】
複数のソフトウェアモジュールを予め定められた順番で起動する集積回路であって、
前記複数のソフトウェアモジュールそれぞれについて、当該ソフトウェアモジュールからハッシュ値として算出されるべき参照計測値と、当該ソフトウェアモジュールより先に起動される他のソフトウェアモジュールそれぞれの参照計測値を累積演算した場合に得られるべき参照累積値とを含むデジタル証明書を格納している第１格納手段と、
起動の順番に達したソフトウェアモジュールについて、当該ソフトウェアモジュールより先に起動される他のソフトウェアモジュールそれぞれのハッシュ値を累積演算した実累積値と、当該ソフトウェアモジュールに対応するデジタル証明書に含まれる参照累積値とを比較して、当該ソフトウェアモジュールより先に起動されるソフトウェアモジュールの有効性を検証する検証手段と、
前記複数のソフトウェアモジュールのうち１つのソフトウェアモジュール、及び前記１つのソフトウェアモジュールに係るデジタル証明書を更新する更新手段と、
前記他のソフトウェアモジュールそれぞれについて、デジタル証明書が最新に更新されている場合は、更新前に最新だったデジタル証明書に含まれる参照計測値を累積演算し、前記他のソフトウェアモジュールのデジタル証明書が最新に更新されていない場合は、当該デジタル証明書に含まれる参照計測値を累積演算した代替累積値を格納する第２格納手段と、
（ａ）前記検証手段による有効性の検証が成功した場合、前記起動の順番に達したソフトウェアモジュールを起動し、（ｂ）前記検証手段による有効性の検証が失敗した場合、前記代替累積値と前記起動の順番に達したソフトウェアモジュールに係るデジタル証明書に含まれる参照累積値とを比較し、前記参照累積値と前記代替累積値が一致すれば、前記起動の順番に達したソフトウェアモジュールを起動するブート制御手段と
を備えることを特徴とする集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パーソナルコンピュータや携帯電話などの情報通信機器、インターネットアクセス機能を備えたテレビ受信装置などの情報家電機器等の端末と、その端末に内蔵されるセキュリティモジュールに関するものである。特に、端末のソフトウェアが複数のソフトウェアモジュールから構成され、それらのソフトウェアモジュールが更新可能な場合において、不正な動作をするモジュールにすり替えたり、不正にソフトウェアを古いバージョンに戻したりするといった不正行為を防止し、安定して確実に正しいソフトウェア構成で起動することを可能にするものである。
【背景技術】
【０００２】
近年、ネットワークを介して提供されるサービスは、音楽や映像といった著作物の提供や、企業が保有する機密情報の閲覧、オンラインバンキングなど多岐に渡り、かつ、その中で扱われる情報の価値も高価なものになってきている。多岐に渡るサービスに対応するため、パーソナルコンピュータ、携帯端末、携帯電話、デジタル家電などの端末には、複数のソフトウェアモジュールがインストールされている。例えば、ＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ／Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）やＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）、ＴＣＰ／ＩＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ／Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）等の通信プロトコルで外部との通信を可能とする通信モジュール、さらにはアプリケーションなどがそれである。
【０００３】
これらは、正規のソフトウェアモジュールが定められた順番で起動される必要があり、端末にはソフトウェアモジュールの改ざん等の不正行為を防止する仕組みが組み込まれている。例えば、各ソフトウェアモジュールに対して提供者が証明書を発行し、各ソフトウェアモジュールの起動時に、その証明書を用いてソフトウェアモジュールの完全性を検証するといった仕組もその一つである。この仕組は、ソフトウェアモジュールをモジュール単位で更新する場合にも有効であり、ソフトウェアモジュールの提供者が新しいソフトウェアモジュールと共に、その新しいソフトウェアモジュールの証明書を提供することにより、新しいソフトウェアモジュールの完全性を検証することが可能となる。
【０００４】
上記の証明書を用いて不正行為を防止する仕組みと同様の技術は、例えば特許文献１において公開されている。
また、セキュアなコンピュータプラットフォームを開発、普及させることを目的として、Ｔｒｕｓｔｅｄ  Ｃｏｍｐｕｔｉｎｇ  Ｇｒｏｕｐ（ＴＣＧ）が設立されている。ＴＣＧでは、Ｔｒｕｓｔｅｄ  Ｐｌａｔｆｏｒｍ  Ｍｏｄｕｌｅ（ＴＰＭ）と呼ばれるセキュリティコアモジュールを利用し、安全な端末環境を実現している（非特許文献１〜５参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】ＵＳ２００５／００２１９６８
【非特許文献】
【０００６】
【非特許文献１】ＴＰＭ  Ｍａｉｎ，Ｐａｒｔ１  Ｄｅｓｉｇｎ  Ｐｒｉｎｃｉｐｌｅｓ，Ｓｐｅｃｉｆｉｃａｔｉｏｎ  ｖｅｒｓｉｏｎ  １．２  Ｌｅｖｅｌ２  Ｒｉｖｉｓｉｏｎ１０３（９  Ｊｕｌｙ  ２００７）
【非特許文献２】ＴＰＭ  Ｍａｉｎ，Ｐａｒｔ２  ＴＰＭ  Ｓｔｒｕｃｔｕｒｅｓ，Ｓｐｅｃｉｆｉｃａｔｉｏｎ  ｖｅｒｉｏｎ１．２  Ｌｅｖｅｌ２  Ｒｉｖｉｓｉｏｎ１０３（９  Ｊｕｌｙ  ２００７）
【非特許文献３】ＴＰＭ  Ｍａｉｎ  Ｐａｒｔ３  Ｃｏｍｍａｎｄｓ，Ｓｐｅｃｉｆｉｃａｔｉｏｎ  ｖｅｒｉｏｎ  １．２  Ｌｅｖｅｌ２  Ｒｉｖｉｓｉｏｎ１０３（９  Ｊｕｌｙ  ２００７）
【非特許文献４】ＴＣＧ  Ｍｏｂｉｌｅ  Ｔｒｕｓｔｅｄ  Ｍｏｄｕｌｅ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ  ｖｅｒｓｉｏｎ  １．０  Ｒｅｖｉｓｉｏｎ  １（１２  Ｊｕｎｅ  ２００７）
【非特許文献５】ＴＣＧ  Ｍｏｂｉｌｅ  Ｒｅｆｅｒｅｎｃｅ  Ａｒｃｈｉｔｅｃｔｕｒｅ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ  ｖｅｒｓｉｏｎ１．０  Ｒｅｖｉｓｉｏｎ１（１２  Ｊｕｎｅ  ２００７）
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかし、図１７に示すように、従来提案されている技術では、端末のソフトウェアが、複数のソフトウェアモジュールから構成される場合に課題がある。
図１７において、本来は、それぞれのモジュールにおいて検証と起動とを行ない、ＢＩＯＳの検証、ＢＩＯＳの起動、ＯＳの検証、ＯＳの起動、通信モジュールの検証、通信モジュールの起動といった図１７に示す番号の順番で検証と起動を行うことでブート処理が行なわれる。
【０００８】
しかし、ＯＳが何らかの問題がある古いＯＳと古い証明書にすり替えられてしまった場合、ＯＳの証明書は古いというだけで証明書に施されている署名等は正しいものであるため、問題がある古いモジュールであることが検出されず、その後の通信モジュールも起動されて、正常にブート処理を完了してしまう。
また、ソフトウェアモジュールの更新では、ソフトウェアモジュールのコードイメージと、それに対応する証明書の両方を更新する必要があるため、証明書の更新を完了し、コードイメージの更新を完了する前に電源断等が起こった場合に課題がある。更新された証明書と更新されなかったコードイメージとは整合性が取れていないため検証がエラーとなり、端末はブート処理を正しく完了できす、起動できない状態となってしまう。
【０００９】
本発明は、こうした従来の問題点を解決するものであり、端末のソフトウェアが、複数のソフトウェアモジュールから構成される場合における古いモジュールにすりかえるといった不正行為を防止し、各モジュールの更新処理を個別に行うことが可能であり、さらに、更新処理の途中で電源断等が起こっても、安定して確実にブート処理が行なえる端末と、その端末に内蔵されるセキュリティモジュールを提供することを目的としている。
【課題を解決するための手段】
【００１０】
上記課題を解決するために、本発明の一実施態様であるセキュアブート端末は、複数のソフトウェアモジュールを予め定められた順番で起動するセキュアブート端末であって、前記複数のソフトウェアモジュールそれぞれについて、当該ソフトウェアモジュールから要約値として算出されるべき目標要約値と、当該ソフトウェアモジュールより先に起動される他のソフトウェアモジュールそれぞれの目標要約値を累積演算した場合に得られるべき目標累積値とを含むデジタル証明書を格納している第１格納手段と、起動の順番に達したソフトウェアモジュールについて、当該ソフトウェアモジュールより先に起動される他のソフトウェアモジュールそれぞれの要約値を累積演算した実累積値と、当該ソフトウェアモジュールに対応するデジタル証明書に含まれる目標累積値とを比較して、当該ソフトウェアモジュールより先に起動されるソフトウェアモジュールの有効性を検証する検証手段と、前記複数のソフトウェアモジュールのうち１つのソフトウェアモジュール、及び前記１つのソフトウェアモジュールに係るデジタル証明書を更新する更新手段と、前記他のソフトウェアモジュールそれぞれについて、デジタル証明書が更新されている場合は更新前のデジタル証明書に含まれる目標要約値を累積演算し、更新されていない場合は当該デジタル証明書に含まれる目標要約値を累積演算した代替累積値を格納する第２格納手段と、（ａ）前記検証手段による有効性の検証が成功した場合、前記起動の順番に達したソフトウェアモジュールを起動し、（ｂ）前記検証手段による有効性の検証が失敗した場合、前記代替累積値と前記起動の順番に達したソフトウェアモジュールに係るデジタル証明書に含まれる目標累積値とを比較し、前記目標累積値と前記代替累積値が一致すれば、前記起動の順番に達したソフトウェアモジュールを起動するブート制御手段とを備える。
【発明の効果】
【００１１】
本発明の一実施態様であるセキュアブート端末は、上述の構成を備えることにより、デジタル証明書やソフトウェアモジュールの更新の際に電源断が起こるなどによって、ソフトウェアモジュールのコードイメージやデジタル証明書間に不整合が生じてしまった場合でも、古いソフトウェアモジュールを実行して累積値を計算することなく前記代替累積値を用いて整合性を確保しブート処理を完了させることが出来る。
【図面の簡単な説明】
【００１２】
【図１】本発明の実施の形態１に係る端末の構成を示すブロック図
【図２】図２（ａ）は、本発明の実施の形態１に係る端末のセキュリティデバイスの構成を示すブロック図、図２（ｂ）は、本発明の実施の形態１に係る端末の代替構成情報累積部の構成を示すブロック図
【図３】本発明の実施の形態１におけるソフトウェアモジュールの証明書のデータ構造を示す図
【図４】本発明の実施の形態１または実施の形態２におけるセキュアブート処理のフロー図
【図５】本発明の実施の形態１または実施の形態２における通常セキュアブート処理のフロー図
【図６】本発明の実施の形態１または実施の形態２における更新時セキュアブート処理のフロー図
【図７】本発明の実施の形態２に係る端末の構成を示すブロック図
【図８】本発明の実施の形態３におけるソフトウェアモジュールの証明書のデータ構造を示す図
【図９】本発明の実施の形態４におけるソフトウェアモジュールの証明書のデータ構造を示す図
【図１０】本発明の実施の形態４における更新時セキュアブート処理のフロー図
【図１１】本発明の実施の形態５に係る端末の構成を示すブロック図
【図１２】本発明の実施の形態１、２、３、４、５における更新処理のフロー図
【図１３】本発明の実施の形態５におけるサイレントブート処理のフロー図
【図１４】本発明の実施の形態６における更新処理のフロー図
【図１５】図１５（ａ）は、端末の更新前のプログラムモジュールの証明書の構成の一例を示す図、図１５（ｂ）は、端末のソフトウェアモジュールの更新を完了した場合のプログラムモジュールと証明書の構成の一例を示す図、図１５（ｃ）は、端末のソフトウェアモジュールの更新の途中の状態にけるプログラムモジュールと証明書の構成の一例を示す図
【図１６】本発明の実施の形態１、２、３、４、５、６におけるブート制御手段の内部に保持されるデータの一例を示す模式図
【図１７】従来技術に基づくブート処理の一例を説明する図
【発明を実施するための形態】
【００１３】
本発明の一実施態様であるセキュアブート端末は、複数のソフトウェアモジュールを予め定められた順番で起動するセキュアブート端末であって、前記複数のソフトウェアモジュールそれぞれについて、当該ソフトウェアモジュールから要約値として算出されるべき目標要約値と、当該ソフトウェアモジュールより先に起動される他のソフトウェアモジュールそれぞれの目標要約値を累積演算した場合に得られるべき目標累積値とを含むデジタル証明書を格納している第１格納手段と、起動の順番に達したソフトウェアモジュールについて、当該ソフトウェアモジュールより先に起動される他のソフトウェアモジュールそれぞれの要約値を累積演算した実累積値と、当該ソフトウェアモジュールに対応するデジタル証明書に含まれる目標累積値とを比較して、当該ソフトウェアモジュールより先に起動されるソフトウェアモジュールの有効性を検証する検証手段と、前記複数のソフトウェアモジュールのうち１つのソフトウェアモジュール、及び前記１つのソフトウェアモジュールに係るデジタル証明書を更新する更新手段と、前記他のソフトウェアモジュールそれぞれについて、デジタル証明書が更新されている場合は更新前のデジタル証明書に含まれる目標要約値を累積演算し、更新されていない場合は当該デジタル証明書に含まれる目標要約値を累積演算した代替累積値を格納する第２格納手段と、（ａ）前記検証手段による有効性の検証が成功した場合、前記起動の順番に達したソフトウェアモジュールを起動し、（ｂ）前記検証手段による有効性の検証が失敗した場合、前記代替累積値と前記起動の順番に達したソフトウェアモジュールに係るデジタル証明書に含まれる目標累積値とを比較し、前記目標累積値と前記代替累積値が一致すれば、前記起動の順番に達したソフトウェアモジュールを起動するブート制御手段とを備える。
【００１４】
前記更新手段は、更に、全ソフトウェアモジュールが起動した後に、前記検証手段による検証に失敗したソフトウェアモジュールについて、当該ソフトウェアモジュールに対応するデジタル証明書を更新する。
この構成によれば、デジタル証明書やソフトウェアモジュールの更新の際に電源断が起こるなどによって、ソフトウェアモジュールのコードイメージや証明書間に不整合が生じてしまった場合でも、ブート処理を完了させその後に、デジタル証明書、ソフトウェアモジュールの更新処理を再開することが出来る。
【００１５】
また、前記セキュアブート端末は、更に、前記他のソフトウェアモジュールそれぞれについて更新があったか否かを判定する更新判定手段と、更新があったソフトウェアモジュールについては、当該ソフトウェアモジュールに係る更新前のデジタル証明書に含まれる目標要約値を累積演算し、更新がなかったソフトウェアモジュールについては、当該ソフトウェアモジュールに係るデジタル証明書に含まれる目標要約値を累積演算して前記代替累積値を算出し、前記第２格納手段に記録する代替累積手段とを備えることとしてもよい。
【００１６】
この構成によれば、各ソフトウェアモジュールが改ざん、不完全な更新等がない場合における実累積値と一致する代替累積値を演算でき、この代替累積値を用いブート処理を中断させず完了することができる。
また、前記代替累積手段は、更に、前記更新があったソフトウェアモジュールについては、前記ソフトウェアモジュールから算出される要約値が、前記ソフトウェアモジュールに係るデジタル証明書に含まれる目標要約値と一致するか否かを確認し、一致する場合に、前記更新前のデジタル証明書に含まれる目標要約値を累積演算することとしてもよい。
【００１７】
この構成によれば、起動の順番に達したソフトウェアモジュールについて、当該ソフトウェアモジュールより先に起動される他のソフトウェアモジュールそれぞれに改ざんがなく、かつ、更新の完了を確認した上で当該ソフトウェアモジュールを起動することができ、より安全性を高めることができる。
また、前記代替累積手段は、前記代替累積値を暗号化して前記第２格納手段に格納することとしてもよい。
【００１８】
この構成によれば、代替累積値が暴露されるのを防ぐことができる。
また、前記セキュアブート端末は、更に、前記検証手段による有効性の検証が失敗したソフトウェアモジュールが前記ブート制御手段によって起動された場合、当該ソフトウェアモジュールに対応するデジタル証明書の更新が必要である旨を通知する通知手段を備えることとしてもよい。
【００１９】
この構成によれば、ユーザに対して証明書の更新が必要であることを明示的に通知し、更新処理の実行をユーザに促すことで、更新処理を完了させることが出来る確度を上げることができる。
また、前記デジタル証明書は、対応するソフトウェアモジュールについて、前記検証手段による検証が失敗した場合に制限すべき機能を示す制限情報を含み、前記ブート制御手段は、前記検証手段による検証が失敗したソフトウェアモジュールを起動する場合、前記制限情報により示される機能を制限した状態で前記ソフトウェアモジュールを起動することとしてもよい。
【００２０】
この構成によれば、更新処理が正常終了していない状態でブート処理が行われた場合、ブート処理の後に実行できる処理を制限するので、更新処理が未完了なソフトウェアモジュールによって不当な機能が実行させる危険性を回避することができる。
例えば、制限情報に「検証手段による検証が失敗した場合に、更新処理の再開以外の処理を制限する」という内容を規定した場合、更新処理が正常終了していない状態でブート処理が行われると、ブート処理の後、更新処理の再開以外の処理が制限されるため、更新処理が優先的に実行され、より高い確度で更新処理を完了させるとともに、更新処理以外の処理が行われるのを防ぐことができる。
【００２１】
また、前記セキュアブート端末は、更に、前記複数のソフトウェアモジュールのそれぞれについて、前記ソフトウェアモジュールを示す情報と、前記ソフトウェアモジュールに係る現在のデジタル証明書を示す情報と、前記ソフトウェアモジュールに係る更新前のデジタル証明書を示す情報とを格納する領域を持つ複数の構造体、及び、前記複数の構造体のうち１つの構造体を使用中の現構造体として指し示す現構造体ポインタを記憶する構造体格納手段を備え、前記更新手段は、前記１つのソフトウェアモジュールの更新版及び前記１つのソフトウェアモジュールに係るデジタル証明書の更新版を取得する取得部と、前記１つのソフトウェアモジュールに対応する構造体のうち、現構造体ポインタによって示されていない構造体である更新用構造体について、（ａ）前記更新用構造体の前記ソフトウェアモジュールを示す情報として、前記１つのソフトウェアモジュールの更新版を示す情報を格納し、（ｂ）前記更新用構造体の前記現在のデジタル証明書を示す情報として、前記１つのソフトウェアモジュールに係るデジタル証明書の更新版を示す情報を格納し、（ｃ）前記更新用構造体中の前記更新前のデジタル証明書を示す情報として、前記現構造体ポインタの示す構造体の前記現在のデジタル証明書を示す情報を格納する構造体更新部と、前記現構造体ポインタを、前記更新用構造体を示すように更新するポインタ変更部とを備えることとしてもよい。
【００２２】
この構成によれば、ソフトウェアモジュール、又はデジタル証明書の格納場所を構造体で一括管理し、更新を要するソフトウェアモジュール、又はデジタル証明書について更新が完了してから、現構造体ポインタをソフトウェアモジュールの更新版、又はデジタル証明書の更新版の格納場所を管理する構造体に切り替える。実行するソフトウェアモジュール、使用するデジタル証明書を一括変更するので、これらを個別に変更する場合に生じるような変更処理間のタイムラグが無くなり、安全確実に更新後のソフトウェアモジュール、又はデジタル証明書を使用することができる。
【００２３】
また、前記セキュアブート端末は、更に、前記複数のソフトウェアモジュールのうち１つのソフトウェアモジュールについてデジタル証明書の更新版を取得する取得手段と、前記１つのソフトウェアモジュールより起動の順番が前の他のソフトウェアモジュールそれぞれに対応する目標要約値を累積演算して事前累積値を生成する事前累積値生成手段と、前記事前累積値と、前記デジタル証明書の更新版に含まれる目標累積値とを比較して、前記１つのソフトウェアモジュールよりも起動の順番が前のソフトウェアモジュールの有効性を検証する事前検証手段とを備え、前記更新手段は、更に、前記事前検証手段による検証に成功した場合に、前記デジタル証明書の更新版で、前記１つのソフトウェアモジュールに係るデジタル証明書を更新することとしてもよい。
【００２４】
この構成によれば、更新処理を開始する前に、入手したソフトウェアモジュールのコードイメージと証明書と更新対象ではない証明書との整合性を検証するので、誤って整合性がない構成に更新されてしまうことを防止し、確実にソフトウェアモジュールのコードイメージと証明書との間に不整合がないソフトウェア構成へと更新することが出来る。
本発明の一実施態様であるセキュアブート方法は、複数のソフトウェアモジュールを予め定められた順番で起動するセキュアブート端末に用いられるセキュアブート方法であって、前記複数のソフトウェアモジュールそれぞれについて、当該ソフトウェアモジュールから要約値として算出されるべき目標要約値と、当該ソフトウェアモジュールより先に起動される他のソフトウェアモジュールそれぞれの目標要約値を累積演算した場合に得られるべき目標累積値とを含むデジタル証明書を格納する第１格納ステップと、起動の順番に達したソフトウェアモジュールについて、当該ソフトウェアモジュールより先に起動される他のソフトウェアモジュールそれぞれの要約値を累積演算した実累積値と、当該ソフトウェアモジュールに対応するデジタル証明書に含まれる目標累積値とを比較して、当該ソフトウェアモジュールより先に起動されるソフトウェアモジュールの有効性を検証する検証ステップと、前記複数のソフトウェアモジュールのうち１つのソフトウェアモジュール、及び前記１つのソフトウェアモジュールに係るデジタル証明書を更新する更新ステップと、前記他のソフトウェアモジュールそれぞれについて、デジタル証明書が更新されている場合は更新前のデジタル証明書に含まれる目標要約値を累積演算し、更新されていない場合は当該デジタル証明書に含まれる目標要約値を累積演算した代替累積値を格納する第２格納ステップと、（ａ）前記検証手段による有効性の検証が成功した場合、前記起動の順番に達したソフトウェアモジュールを起動し、（ｂ）前記検証手段による有効性の検証が失敗した場合、前記代替累積値と前記起動の順番に達したソフトウェアモジュールに係るデジタル証明書に含まれる目標累積値とを比較し、前記目標累積値と前記代替累積値が一致すれば、前記起動の順番に達したソフトウェアモジュールを起動するブート制御ステップとを含む。
【００２５】
本発明の一実施態様であるセキュアブートプログラムは、複数のソフトウェアモジュールを予め定められた順番で起動するセキュアブート端末に用いられるセキュアブートプログラムであって、前記複数のソフトウェアモジュールそれぞれについて、当該ソフトウェアモジュールから要約値として算出されるべき目標要約値と、当該ソフトウェアモジュールより先に起動される他のソフトウェアモジュールそれぞれの目標要約値を累積演算した場合に得られるべき目標累積値とを含むデジタル証明書を格納する第１格納ステップと、起動の順番に達したソフトウェアモジュールについて、当該ソフトウェアモジュールより先に起動される他のソフトウェアモジュールそれぞれの要約値を累積演算した実累積値と、当該ソフトウェアモジュールに対応するデジタル証明書に含まれる目標累積値とを比較して、当該ソフトウェアモジュールより先に起動されるソフトウェアモジュールの有効性を検証する検証ステップと、前記複数のソフトウェアモジュールのうち１つのソフトウェアモジュール、及び前記１つのソフトウェアモジュールに係るデジタル証明書を更新する更新ステップと、前記他のソフトウェアモジュールそれぞれについて、デジタル証明書が更新されている場合は更新前のデジタル証明書に含まれる目標要約値を累積演算し、更新されていない場合は当該デジタル証明書に含まれる目標要約値を累積演算した代替累積値を格納する第２格納ステップと、（ａ）前記検証手段による有効性の検証が成功した場合、前記起動の順番に達したソフトウェアモジュールを起動し、（ｂ）前記検証手段による有効性の検証が失敗した場合、前記代替累積値と前記起動の順番に達したソフトウェアモジュールに係るデジタル証明書に含まれる目標累積値とを比較し、前記目標累積値と前記代替累積値が一致すれば、前記起動の順番に達したソフトウェアモジュールを起動するブート制御ステップとを含む。
【００２６】
本発明の一実施態様である記録媒体は、複数のソフトウェアモジュールを予め定められた順番で起動するセキュアブート端末に用いられるセキュアブートプログラムを記録する記録媒体であって、前記セキュアブートプログラムは、前記複数のソフトウェアモジュールそれぞれについて、当該ソフトウェアモジュールから要約値として算出されるべき目標要約値と、当該ソフトウェアモジュールより先に起動される他のソフトウェアモジュールそれぞれの目標要約値を累積演算した場合に得られるべき目標累積値とを含むデジタル証明書を格納する第１格納ステップと、起動の順番に達したソフトウェアモジュールについて、当該ソフトウェアモジュールより先に起動される他のソフトウェアモジュールそれぞれの要約値を累積演算した実累積値と、当該ソフトウェアモジュールに対応するデジタル証明書に含まれる目標累積値とを比較して、当該ソフトウェアモジュールより先に起動されるソフトウェアモジュールの有効性を検証する検証ステップと、前記複数のソフトウェアモジュールのうち１つのソフトウェアモジュール、及び前記１つのソフトウェアモジュールに係るデジタル証明書を更新する更新ステップと、前記他のソフトウェアモジュールそれぞれについて、デジタル証明書が更新されている場合は更新前のデジタル証明書に含まれる目標要約値を累積演算し、更新されていない場合は当該デジタル証明書に含まれる目標要約値を累積演算した代替累積値を格納する第２格納ステップと、（ａ）前記検証手段による有効性の検証が成功した場合、前記起動の順番に達したソフトウェアモジュールを起動し、（ｂ）前記検証手段による有効性の検証が失敗した場合、前記代替累積値と前記起動の順番に達したソフトウェアモジュールに係るデジタル証明書に含まれる目標累積値とを比較し、前記目標累積値と前記代替累積値が一致すれば、前記起動の順番に達したソフトウェアモジュールを起動するブート制御ステップとを含む。
【００２７】
本発明の一実施態様である集積回路は、複数のソフトウェアモジュールを予め定められた順番で起動する集積回路であって、前記複数のソフトウェアモジュールそれぞれについて、当該ソフトウェアモジュールから要約値として算出されるべき目標要約値と、当該ソフトウェアモジュールより先に起動される他のソフトウェアモジュールそれぞれの目標要約値を累積演算した場合に得られるべき目標累積値とを含むデジタル証明書を格納している第１格納手段と、起動の順番に達したソフトウェアモジュールについて、当該ソフトウェアモジュールより先に起動される他のソフトウェアモジュールそれぞれの要約値を累積演算した実累積値と、当該ソフトウェアモジュールに対応するデジタル証明書に含まれる目標累積値とを比較して、当該ソフトウェアモジュールより先に起動されるソフトウェアモジュールの有効性を検証する検証手段と、前記複数のソフトウェアモジュールのうち１つのソフトウェアモジュール、及び前記１つのソフトウェアモジュールに係るデジタル証明書を更新する更新手段と、前記他のソフトウェアモジュールそれぞれについて、デジタル証明書が更新されている場合は更新前のデジタル証明書に含まれる目標要約値を累積演算し、更新されていない場合は当該デジタル証明書に含まれる目標要約値を累積演算した代替累積値を格納する第２格納手段と、（ａ）前記検証手段による有効性の検証が成功した場合、前記起動の順番に達したソフトウェアモジュールを起動し、（ｂ）前記検証手段による有効性の検証が失敗した場合、前記代替累積値と前記起動の順番に達したソフトウェアモジュールに係るデジタル証明書に含まれる目標累積値とを比較し、前記目標累積値と前記代替累積値が一致すれば、前記起動の順番に達したソフトウェアモジュールを起動するブート制御手段とを備える。
【００２８】
この構成によれば、デジタル証明書やソフトウェアモジュールの更新の際に電源断が起こるなどによって、ソフトウェアモジュールのコードイメージやデジタル証明書間に不整合が生じてしまった場合でも、古いソフトウェアモジュールを実行して累積値を計算することなく前記代替累積値を用いて整合性を確保しブート処理を完了させることが出来る。
以下本発明の実施の形態について、図面を参照しながら説明する。
【００２９】
（第１の実施形態）
本発明の第１の実施形態における端末１００の構成について説明する。
端末１００は、図１に示すように、ＣＰＵ１０１と、耐タンパ性を備えるセキュリティデバイス１０２と、ＣＰＵ１０１が実行するソフトウェアモジュールのコードイメージを格納するソフトウェアモジュール格納部１０６と、ソフトウェアモジュールの証明書を格納する証明書格納手段１０７と、ソフトウェアモジュール格納部１０６に格納されるソフトウェアモジュールと証明書格納手段１０７に格納される証明書とを更新する更新手段と１０４と、ソフトウェアモジュールの更新前のソフトウェア構成における構成情報を示す代替構成情報累積部１０３と、端末１００のブート処理を制御するブート制御手段１０５と、端末１００のユーザにブート処理の状況を通知する通知手段１０８と、から構成される。
【００３０】
ブート制御手段１０５は、証明書ごとの更新状況を示す更新フラグを保持する更新フラグ保持部１１１と、セキュアブート処理における実際の処理シーケンスを制御するセキュアブート制御部１１２とを備えている。
代替構成情報累積部１０３と更新手段１０４とブート制御手段１０５は、具体的には、以下において詳しく説明する動作を行う専用ハードウェアまたはＣＰＵ１０１が実行するソフトウェアによって実現され、ソフトウェアによって実現される場合には、端末１００上のメモリ（不図示）にソフトウェア・オブジェクトデータとして生成される。この場合、特に更新フラグ保持部１１１は、不揮発性のメモリ上に実現される。
【００３１】
ソフトウェアモジュール格納部１０６と証明書格納手段１０７は、具体的には不揮発性メモリやハードディスクその他の記憶装置によって実現される。
通知手段１０８は、具体的にはディスプレイやスピーカ、ＬＥＤ等のインジケータ等によって実現される。
さらに、セキュリティデバイス１０２は、図２（ａ）に示すように、ＣＰＵ１０１が実際に実行するソフトウェアモジュールの構成を示す構成情報を保持する構成情報累積部２０１と、ソフトウェアモジュールの証明書の有効性を検証する証明書検証部２０２と、構成情報累積部２０１が保持する構成情報を証明書の中の照合値と照合する照合部２０３と、ソフトウェアモジュールの有効なバージョンの下限を示すカウンタ値を保持するカウンタ部２０４と、データの暗復号及び署名生成や署名検証を行う暗復号部２０５と、を備える。また、構成情報累積部２０１は、ソフトウェアモジュールのハッシュ値の累積演算を行なう累積部２１１と、累積部２１１が算出した累積値（以下、累積演算の結果をこのように呼ぶ）を保持する構成情報保持部２１２と、を備えている。
【００３２】
暗復号部２０５は、データの暗復号処理や署名生成や署名検証を行うための複数の鍵データを保持しており、代替構成情報累積部１０３は、暗復号部２０５が保持する鍵データによって暗号化され、不正な改ざんがされないようになっている。
累積部２１１は、構成情報保持部２１２が保持する値のバイト列とソフトウェアモジュールのハッシュ演算の結果のバイト列とを連結し、さらに連結したバイト列に対してハッシュ演算を行い、その結果を構成情報保持部２１２に格納する。
【００３３】
また、代替構成情報累積部１０３は、構成情報累積部２０１と同様の構成を備え、図２（ｂ）に示すように、更新前のソフトウェア構成におけるソフトウェアモジュールのハッシュ値の累積演算を行なう累積部２２１と、累積部２２１が算出した累積値を保持する代替構成情報保持部２２２と、を備えている。
累積部２２１は、代替構成情報保持部２２２が保持する値のバイト列とソフトウェアモジュールのハッシュ演算の結果のバイト列とを連結し、さらに連結したバイト列（この場合、例えば、代替構成情報保持部２２２が保持する値が２０バイト、ソフトウェアモジュールのハッシュ演算の結果が２０バイトの場合、連結したバイト列は４０バイトのバイト列となる）に対してハッシュ演算を行い、その結果を代替構成情報保持部２２２に格納する。
【００３４】
図３は、証明書のデータ構造を示しており、証明書は、その証明書が対応付けられたソフトウェアモジュールの識別情報３０１と、ソフトウェアモジュールのバージョン３０２と、ソフトウェアモジュールのダイジェストとしてモジュールのコードイメージをハッシュした場合の値を示す参照計測値３０３と、ソフトウェアモジュールが実行される前の端末１００の状態においてセキュリティデバイス１０２の構成情報累積部２０１に保持されるべき累積値を示す参照累積値３０４と、ソフトウェアモジュールのバージョンを示す参照カウンタ値３０５と、証明書を検証する鍵を示す検証鍵ＩＤ３０６と、検証鍵ＩＤ３０６が示す鍵に対応する秘密鍵による電子署名３０７と、から構成される。
【００３５】
参照計測値３０３は、正当なソフトウェアモジュールのコードイメージのハッシュ値であり、実際のソフトウェアモジュールのコードイメージのハッシュ演算の結果と照合することで、証明書とソフトウェアモジュールとの対応関係を検証することが可能となる。また、参照累積値３０４は、セキュリティデバイス１０２の構成情報累積部２０１に格納される構成情報と照合することで、ソフトウェアモジュールを実行する前の状態として正しい状態（その前に実行されているソフトウェアモジュールが有効なソフトウェアモジュールであり、正しい順番で実行されている）であることを検証するために用いられる。
【００３６】
次に、端末１００の動作について説明する。
まず、図１２を用いて、ソフトウェアモジュール格納手段１０６に格納されるソフトウェアモジュールのコードイメージと証明書格納手段１０７に格納される証明書とを更新する端末１００の更新処理における動作について説明する。
最新のソフトウェアモジュールのコードイメージと証明書は、更新処理を行うソフトウェアモジュールのコードイメージと証明書の一覧を示す更新リストファイルと共に、ネットワーク通信手段（不図示）を介してダウンロードまたは蓄積媒体（不図示）を介して更新手段１０４の内部の記憶領域に一時的に保持されるものとする。また、具体的には、１つの更新されるソフトウェアモジュールに関して、そのソフトウェアモジュールのコードイメージと証明書、さらには、参照累積値３０４が更新されるソフトウェアモジュールに依存している証明書と更新リストファイルとが更新手段１０４の内部の記憶領域に保持される。
【００３７】
更新リストファイルは、ソフトウェアモジュールの提供者によって、ソフトウェアモジュールのコードイメージおよび証明書と共に提供されるファイルである。
更新リストファイルには、更新処理を行う順番でソフトウェアモジュールの証明書の識別情報とコードイメージの識別情報とが順番に記載されている。この順番は、セキュアブート処理の際に先に実行されるソフトウェアモジュールの順番に従っており、先に実行されるソフトウェアモジュールほど、そのソフトウェアモジュールの証明書とコードイメージの更新処理が先に行われるように記載されている。
【００３８】
なお、更新されるソフトウェアモジュールが複数ある場合には、更新リストファイルと、それぞれのソフトウェアモジュールに関して、そのソフトウェアモジュールのコードイメージと証明書、さらには、参照累積値３０４が更新されるソフトウェアモジュールに依存している証明書と、が更新手段１０４の内部の記憶領域に保持される。
また、証明書の参照累積値３０４が更新されるソフトウェアモジュールに依存していない場合には、更新リストファイルと、それぞれのソフトウェアモジュールのコードイメージと証明書とが更新手段１０４の内部の記憶領域に保持される。
【００３９】
最新のソフトウェアモジュールのコードイメージと証明書のダウンロードは、以下のようにして行われる。まず、更新手段１０４がソフトウェアモジュールの提供者のサイトに定期的にアクセスし、最新のソフトウェアモジュールのコードイメージや証明書が登録されているかどうかを確認する。登録されていた場合には、自動的にダウンロードが行われる。なお、端末のユーザが自らソフトウェアモジュールの提供者のサイトにアクセスしてダウンロードを行うようにしても良い。
【００４０】
図１２は、更新されるべき最新のソフトウェアモジュールのコードイメージと証明書とが更新手段１０４の内部に保持された状態における端末１００が行なう更新処理のフローを示している。更新処理は、最新のソフトウェアモジュールのコードイメージと証明書とが更新手段１０４の内部に格納された時に、更新手段１０４が自動的に開始するようにしても良いし、ユーザの更新処理の開始操作に基づいて更新処理を開始するようにしても良い。
【００４１】
また、図１６は、ブート制御手段１０５の内部に保持されるデータの一例を示している。本実施の形態では、各ソフトウェアモジュールに関して、更新フラグと、コードイメージと証明書と旧証明書（更新処理をする前の古い証明書）のそれぞれの実体へのポインタを管理するモジュール構造体Ａとモジュール構造体Ｂと、モジュール構造体へのポインタが保持される。図１６は、ＢＩＯＳとＯＳと通信モジュールの３つのソフトウェアモジュールに関して、ブート制御手段１０５の内部に保持されるデータを示している。
【００４２】
モジュール構造体へのポインタには、モジュール構造体Ａへのポインタまたはモジュール構造体Ｂへのポインタが設定される。
本実施の形態では、モジュール構造体を使って、各ソフトウェアモジュール（ＢＩＯＳ、ＯＳ、通信モジュール）について、最新の証明書と旧証明書を管理している。本実施の形態ではモジュール構造体は２つあるが、一方は更新用に用いる構造体である。また、もう一方は現在のソフトウェア構成におけるソフトウェアモジュールの実体や証明書へのポインタを含む構造体であり、ソフトウェアモジュールの起動に用いる。本実施の形態では、ソフトウェアモジュールの更新があった場合は、更新用の構造体（すなわち、現在使用していない方の構造体）について、新しいソフトウェアモジュールのコードイメージや証明書の実体へのポインタを格納する。その上で、現在使用している方の構造体から、更新用の構造体へ各モジュール構造体へのポインタを切り替えることで、モジュール構造体の更新を完了する。すなわち、使用中のモジュール構造体と更新用のモジュール構造体と入れ替わるので、更新用のモジュール構造体の方が、新しく現在使用中のモジュール構造体となる。
【００４３】
また、各モジュール構造体の対応するソフトウェアモジュールよりも先に起動するモジュールについてのみ更新があった場合は、コードイメージの実体は変更されないが、証明書を更新する必要があることがある。これは、各ソフトウェアモジュールの証明書は自身が対応するソフトウェアモジュールよりも先に起動するモジュールの影響を受けることがあるためである。そのため、この場合も更新用のモジュール構造体について、更新前と同じコードイメージと、更新後の証明書と、更新前に最新だった証明書（更新後の旧証明書）とのそれぞれの実体を指すようポインタを設定する。その後、更新用のモジュール構造体と現在使用中のモジュール構造体とを入れ替えることで、モジュール構造体の更新を完了する。これらの動作については、以下の動作説明で詳細を述べる。
【００４４】
図１２において、まず、更新手段１０４が更新するソフトウェアモジュールに対応する更新フラグをセットする（ステップＳ１２０１）。
次に、更新手段１０４は、ソフトウェアモジュールの証明書の更新を行う（ステップＳ１２０２）。この時、証明書格納手段１０７に格納される更新前の証明書は証明書格納手段１０７からは消去されず、ブート制御手段１０５において旧証明書として管理されるようになる。
【００４５】
また、古い証明書への差し替えを防止するため、更新手段１０４がセキュリティデバイス１０２に命令を送信する。命令を受けたセキュリティデバイス１０２は、証明書を更新する際に、証明書の参照カウンタ値３０５にセキュリティデバイス１０２のカウンタ部２０４に保持されているカウンタ値に１を加算した値を設定し、セキュリティデバイス１０２の暗復号部２０５に保持されている暗号鍵によって署名を生成して、電子署名３０７のフィールドに設定する。
【００４６】
また、この時、ブート制御手段１０５では、更新手段１０４からの要求に基づいて、モジュール構造体へのポインタが示しているモジュール構造体とは逆のモジュール構造体（ここで「逆のモジュール構造体」とはモジュール構造体へのポインタがモジュール構造体Ａを示している場合はモジュール構造体Ｂ、モジュール構造体へのポインタがモジュール構造体Ｂを示している場合はモジュール構造体Ａという意味）の証明書へのポインタに証明書格納手段１０７上の更新した証明書へのポインタを設定する。また、同じ逆のモジュール構造体の旧証明書へのポインタに、現在、モジュール構造体へのポインタが示しているモジュール構造体の証明書へのポインタと同じポインタを設定する。
【００４７】
次に、更新手段１０４は、ソフトウェアモジュール格納手段１０６に格納されているソフトウェアモジュールのコードイメージを更新する（ステップＳ１２０３）。この時、ブート制御手段１０５では、更新手段１０４からの要求に基づいて、モジュール構造体へのポインタが示しているモジュール構造体とは逆のモジュール構造体のコードイメージへのポインタにソフトウェアモジュール格納手段１０６上の更新したコードイメージへのポインタを設定する。さらに、モジュール構造体へのポインタに逆のモジュール構造体へのポインタを設定して、更新した証明書とコードイメージとがセキュアブート処理において使用されるように切り替える。
【００４８】
次に、更新手段１０４は、更新リストファイルに記載されている順番で、次に更新をすべきソフトウェアモジュールが存在するか否かを判定し（ステップＳ１２０４）、存在しない場合には、ステップＳ１２０５へ進み、他に更新をすべきソフトウェアモジュールが存在する場合には、ステップＳ１２０１に戻り、各ソフトウェアモジュールに関してステップＳ１２０１からステップＳ１２０４の処理を繰り返す。
【００４９】
ステップＳ１２０５では、更新手段１０４は、ソフトウェアモジュールのコードイメージを更新する必要はないが、証明書の内容が更新されたソフトウェアモジュールに依存しているために更新が必要な証明書が存在する場合に、それらの証明書を更新して、更新処理を終了する。この時、ブート制御手段１０５では、更新手段１０４からの要求に基づいて、モジュール構造体へのポインタが示しているモジュール構造体とは逆のモジュール構造体の証明書へのポインタに証明書格納手段１０７上の更新した証明書へのポインタを設定する。また、同じ逆のモジュール構造体のコードイメージへのポインタに、現在、モジュール構造体へのポインタが示しているモジュール構造体のコードイメージへのポインタと同じポインタを設定する。さらに、同じ逆のモジュール構造体の旧証明書へのポインタに、現在、モジュール構造体へのポインタが示しているモジュール構造体の証明書へのポインタと同じポインタを設定する。さらに、モジュール構造体へのポインタに逆のモジュール構造体へのポインタを設定して、更新した証明書がセキュアブート処理において使用されるように切り替える。
【００５０】
ステップＳ１２０５での証明書の更新の処理は、更新手段１０４は、ステップＳ１２０２での処理と同様の処理を行う。
次に、図４、５、６を用いて、端末１００のセキュアブート処理における動作について説明する。
図４は、端末１００が行なうセキュアブート処理のフローの概要を示している。
【００５１】
まず、ステップＳ４０１においてセキュアブート制御部１１２が更新フラグ保持部１１１の更新フラグを参照し、何れかの更新フラグが有効になっている場合には、更新時セキュアブート処理（ステップＳ４０３）へ進み、それ以外の場合は、通常セキュアブート処理（ステップＳ４０２）へ進む。
通常セキュアブート処理（ステップＳ４０２）へ進んだ場合、セキュアブート制御部１１２は図５に示すフローに基づいてセキュアブート処理を行なう。
【００５２】
また、更新時セキュアブート処理（ステップＳ４０３）へ進んだ場合、セキュアブート制御部１１２は図６に示すフローに基づいてセキュアブート処理を行なう。
まず、通常セキュアブート処理（ステップＳ４０２）における端末１００の動作について説明する。
通常セキュアブート処理では、まず、セキュアブート制御部１１２がソフトウェアモジュールと証明書との照合を行いソフトウェアモジュールに対応する証明書が存在することを検証する（ステップＳ５０１）。具体的には、ソフトウェアモジュールのコードイメージのハッシュ演算（例えば、ＳＨＡ−１などのハッシュ演算）を行い、その結果と証明書の参照計測値３０３とを照合する。照合の結果、参照計測値３０３と一致した場合には、セキュリティデバイス１０２に証明書の検証を要求してステップＳ５０２へ進む。
【００５３】
また、参照計測値３０３と一致しなかった場合にはエラーとなりセキュアブート処理を完了せずに終了する。この際、セキュアブート制御部１１２が通知手段１０８にユーザへの通知を要求し、通知手段１０８によって、ソフトウェアモジュールのコードイメージと証明書との整合性が取れていないことがユーザに通知される（不図示）。
ステップＳ５０２では、セキュリティデバイス１０２の証明書検証部２０２が、証明書のバージョンの検証を行い、証明書が古い無効化された証明書でないこと検証する（ステップＳ５０２）。具体的には、セキュリティデバイスのカウンタ部２０４が保持するカウンタ値と証明書の参照カウンタ値３０５とを比較する。カウンタ部２０４には、ソフトウェアモジュールの有効なバージョンの下限を示すカウンタ値が保持されており、カウンタ値の比較の結果、参照カウンタ値３０５が、カウンタ部２０４が保持するカウンタ値以上であった場合には、ステップＳ５０３へ進む。
【００５４】
また、それ以外の場合にはエラーとなりセキュアブート処理を完了せずに終了する。この際、セキュアブート制御部１１２が通知手段１０８にユーザへの通知を要求し、通知手段１０８によって、ソフトウェアモジュールのコードイメージと証明書が古いものであることがユーザに通知される（不図示）。
ステップＳ５０３では、セキュリティデバイス１０２の証明書検証部２０２が、さらに、証明書の署名の検証を行い、有効な電子署名が施された証明書であることを検証する（ステップＳ５０３）。署名検証の結果、電子署名が有効であった場合には、ステップＳ５０４へ進む。
【００５５】
また、電子署名が無効であった場合にはエラーとなりセキュアブート処理を完了せずに終了する。この際、セキュアブート制御部１１２が通知手段１０８にユーザへの通知を要求し、通知手段１０８によって、証明書の署名検証においてエラーが検出されたことがユーザに通知される（不図示）。
ステップＳ５０１、Ｓ５０２、Ｓ５０３の検証により、ソフトウェアモジュールと証明書とは対応関係にあり、かつ、その証明書の有効性が検証されることにより、ソフトウェアモジュール自体の有効性が検証される。
【００５６】
ステップＳ５０４では、セキュリティデバイス１０２の照合部２０３が、証明書の参照累積値と構成情報保持部２１２が保持する構成情報とを照合し、ソフトウェアモジュールを実行する前の状態として正しい状態（その前に実行されているソフトウェアモジュールが有効なソフトウェアモジュールであり、正しい順番で実行されている）であることが検証される。証明書の参照累積値と構成情報保持部２１２が保持する構成情報とが一致した場合には、ステップＳ５０５へ進む。
【００５７】
また、それ以外の場合には、エラーとなりセキュアブート処理を完了せずに終了する。この際、セキュアブート制御部１１２が通知手段１０８にユーザへの通知を要求し、通知手段１０８によって、ソフトウェアモジュールのコードイメージ及び証明書との間の整合性が取れていないことがユーザに通知される（不図示）。
ステップＳ５０５では、セキュリティデバイス１０２の構成情報累積部２０１の累積部２１１が、構成情報保持部２１２が保持する値のバイト列と証明書の参照累積値のフィールドに設定されている参照累積値のバイト列とを連結し、さらに連結したバイト列に対してハッシュ演算（例えば、ＳＨＡ−１のハッシュ演算）を行い、その結果を構成情報保持部２１２に格納する（ステップＳ５０５）。
【００５８】
次に、ステップＳ５０６において、セキュアブート制御部１１２がソフトウェアモジュールを実行し、ステップＳ５０７へ進む。
ステップＳ５０７では、セキュアブート処理を完了したか否かを判定する。
セキュアブート処理において実行されるべき全てのソフトウェアモジュールの実行を完了した場合には、通常セキュアブート処理（ステップＳ４０２）を完了し、
セキュアブート処理を完了していないと判定した場合には、ステップＳ５０１に戻り、次に実行するソフトウェアモジュールと証明書に関してステップＳ５０１からステップＳ５０７までの処理を繰り返す。
【００５９】
次に、更新時セキュアブート処理（ステップＳ４０３）における端末１００の動作について説明する。セキュアブート制御部１１２は図６に示すフローに基づいてセキュアブート処理を行なう。
更新時セキュアブート処理では、まず、セキュアブート制御部１１２がソフトウェアモジュールと証明書との照合を行いソフトウェアモジュールに対応する証明書が存在することを検証する（ステップＳ６０１）。具体的には、ソフトウェアモジュールのコードイメージのハッシュ演算（例えば、ＳＨＡ−１などのハッシュ演算）を行い、その結果と証明書の参照計測値３０３とを照合する。照合の結果、参照計測値３０３と一致した場合には、セキュリティデバイス１０２に証明書の検証を要求してステップＳ６０２へ進む。
【００６０】
また、参照計測値３０３と一致しなかった場合にはエラーとなりセキュアブート処理を完了せずに終了する。この際、セキュアブート制御部１１２が通知手段１０８にユーザへの通知を要求し、通知手段１０８によって、ソフトウェアモジュールのコードイメージと証明書との整合性が取れていないことがユーザに通知される（不図示）。
ステップＳ６０２では、セキュリティデバイス１０２の証明書検証部２０２が、証明書のバージョンの検証を行い、証明書が古い無効化された証明書でないこと検証する（ステップＳ６０２）。具体的には、セキュリティデバイスのカウンタ部２０４が保持するカウンタ値と証明書の参照カウンタ値３０５とを比較する。カウンタ部２０４には、ソフトウェアモジュールの有効なバージョンの下限を示すカウンタ値が保持されており、カウンタ値の比較の結果、参照カウンタ値３０５が、カウンタ部２０４が保持するカウンタ値以上であった場合には、ステップＳ６０３へ進む。
【００６１】
また、それ以外の場合にはエラーとなりセキュアブート処理を完了せずに終了する。この際、セキュアブート制御部１１２が通知手段１０８にユーザへの通知を要求し、通知手段１０８によって、ソフトウェアモジュールのコードイメージと証明書が古いものであることがユーザに通知される（不図示）。
ステップＳ６０３では、セキュリティデバイス１０２の証明書検証部２０２が、さらに、証明書の署名の検証を行い、有効な電子署名が施された証明書であることを検証する（ステップＳ６０３）。署名検証の結果、電子署名が有効であった場合には、ステップＳ６０４へ進む。
【００６２】
また、電子署名が無効であった場合にはエラーとなりセキュアブート処理を完了せずに終了する。この際、セキュアブート制御部１１２が通知手段１０８にユーザへの通知を要求し、通知手段１０８によって、証明書の署名検証においてエラーが検出されたことがユーザに通知される（不図示）。
ステップＳ６０１、Ｓ６０２、Ｓ６０３の検証により、ソフトウェアモジュールとそれに対応する証明書との対応関係が正しいことが検証され、かつ、その証明書の有効性が検証されることにより、ソフトウェアモジュール自体の有効性が検証される。
【００６３】
ステップＳ６０４では、セキュリティデバイス１０２の照合部２０３が、証明書の参照累積値と構成情報保持部２１２が保持する構成情報とを照合し、ソフトウェアモジュールを実行する前の状態として正しい状態（その前に実行されているソフトウェアモジュールが有効なソフトウェアモジュールであり、正しい順番で実行されている）であることが検証される。
【００６４】
次のステップＳ６０５では、ステップＳ６０４における証明書の参照累積値と構成情報保持部２１２が保持する構成情報との照合に成功したか否かを判定する。
照合に成功した場合、つまり、証明書の参照累積値と構成情報保持部２１２が保持する構成情報とが一致し、ソフトウェアモジュールを実行する前の状態として正しい状態であることが検証された場合には、ステップＳ６０８へ進む。
【００６５】
また、照合に成功しなかった場合、つまり、証明書の参照累積値と構成情報保持部２１２が保持する構成情報とが一致しなかった場合には、ステップＳ６０７へ進み、証明書の参照累積値と代替構成情報保持部２２２が保持する構成情報との照合を行い、更新処理の途中の状態であることを要因とする証明書の不整合によるエラーであるか否かを検証する。
【００６６】
ステップＳ６０７では、セキュアブート制御部１１２が、証明書の参照累積値と代替構成情報保持部２２２が保持する構成情報とを照合し、ソフトウェアモジュールの更新処理を行う前のソフトウェア構成において、ソフトウェアモジュールを実行する前の状態として正しい状態（但し、厳密には、ソフトウェアプログラムのコードイメージと証明書との整合性が取れていない状態）であることが検証される。証明書の参照累積値と代替構成情報保持部２２２が保持する構成情報とが一致した場合には、ステップＳ６０８へ進む。
【００６７】
また、それ以外の場合には、エラーとなりセキュアブート処理を完了せずに終了する。この際、セキュアブート制御部１１２が通知手段１０８にユーザへの通知を要求し、通知手段１０８によって、ソフトウェアモジュールのコードイメージ及び証明書との間の整合性が取れていないことがユーザに通知される（不図示）。
ステップＳ６０８では、セキュリティデバイス１０２の構成情報累積部２０１の累積部２１１が、構成情報保持部２１２が保持する値のバイト列と証明書の参照累積値のフィールドに設定されている参照累積値のバイト列とを連結し、さらに連結したバイト列に対してハッシュ演算（例えば、ＳＨＡ−１のハッシュ演算）を行い、その結果を構成情報保持部２１２に格納する（ステップＳ６０８）。
【００６８】
次に、ステップＳ６０９において、更新フラグが有効になっているソフトウェアモジュールであるか否かを判定し、更新フラグが有効になっているソフトウェアモジュールである場合、つまり、更新処理中または更新処理を完了したソフトウェアモジュールである場合には、ステップＳ６１０へ進み、それ以外の更新されていないソフトウェアモジュールである場合には、ステップＳ６１３へ進む。
【００６９】
ステップＳ６１３では、代替構成情報累積部１０３の累積部２２１が、代替構成情報保持部２２２が保持する値のバイト列と証明書の参照累積値のフィールドに設定されている参照累積値のバイト列とを連結し、さらに連結したバイト列に対してハッシュ演算を行い、その結果を代替構成情報保持部２２２に格納する（ステップＳ６１３）。
ステップＳ６１０では、セキュアブート制御部１１２が、更新前の旧証明書のバージョンの検証を行い、旧証明書が更新処理を行う前のバージョンの証明書であること検証する（ステップＳ６１０）。具体的には、セキュリティデバイスのカウンタ部２０４が保持するカウンタ値と証明書の参照カウンタ値３０５とを照合する。カウンタ部２０４には、ソフトウェアモジュールの有効なバージョンの下限を示すカウンタ値が保持されており、カウンタ値の照合の結果、参照カウンタ値３０５が、カウンタ部２０４が保持するカウンタ値以上であった場合には、ステップＳ６１１へ進む。
【００７０】
また、それ以外の場合にはエラーとなりセキュアブート処理を完了せずに終了する。この際、セキュアブート制御部１１２が通知手段１０８にユーザへの通知を要求し、通知手段１０８によって、証明書のバージョン検証においてエラーが検出されたことがユーザに通知される（不図示）
ステップＳ６１１では、セキュアブート制御部１１２が、さらに、更新前の旧証明書の署名の検証を行い、有効な電子署名が施された証明書であることを検証する（ステップＳ６１１）。署名検証の結果、電子署名が有効であった場合には、ステップＳ６１２へ進む。
【００７１】
また、電子署名が無効であった場合にはエラーとなりセキュアブート処理を完了せずに終了する。この際、セキュアブート制御部１１２が通知手段１０８にユーザへの通知を要求し、通知手段１０８によって、証明書の署名検証においてエラーが検出されたことがユーザに通知される（不図示）。
ステップＳ６１０、Ｓ６１１の検証により、旧証明書が更新処理を行う前のバージョンの有効な証明書であることが検証される。
【００７２】
次に、ステップＳ６１２では、代替構成情報累積部１０３の累積部２２１が、代替構成情報保持部２２２が保持する値のバイト列と旧証明書の参照累積値のフィールドに設定されている参照累積値のバイト列とを連結し、さらに連結したバイト列に対してハッシュ演算を行い、その結果を代替構成情報保持部２２２に格納する（ステップＳ６１２）。これにより、代替構成情報保持部２２２には、更新処理を行う前のソフトウェア構成での構成情報が保持されることになる。
【００７３】
次に、ステップＳ６１４において、セキュアブート制御部１１２がソフトウェアモジュールを実行し、ステップＳ６１５へ進む。このとき実行されるソフトウェアモジュールのコードイメージには、ステップＳ６０１からステップ６０３で検証した証明書に対応する最新のコードイメージが用いられる。
ステップＳ６１５では、セキュアブート制御部１１２がセキュアブート処理を完了したか否かを判定する。
【００７４】
セキュアブート処理において実行されるべき全てのソフトウェアモジュールの実行を完了した場合には、更新時セキュアブート処理（ステップＳ４０３）を完了し、ステップＳ４０４へ進む。
セキュアブート処理を完了していないと判定した場合には、ステップＳ６０１に戻り、次に実行するソフトウェアモジュールと証明書に関してステップＳ６０１からステップＳ６１５までの処理を繰り返す。
【００７５】
ステップＳ４０４では、セキュアブート制御部１１２が、証明書の参照累積値の照合に代替構成情報累積部を用いたか否か、つまり、ステップＳ６０７の処理をしたか否かを判定する。
ステップＳ６０７の処理をした場合には、更新処理においてソフトウェアモジュール及び証明書との間に不整合があり、更新処理が完了していないということであり、ステップＳ４０５へ進む。
【００７６】
ステップＳ４０５では、セキュアブート制御部１１２が通知手段１０８にユーザへの通知を要求し、通知手段１０８によって、ユーザに更新処理が完了していないことを通知され、セキュアブート処理を終了する。この後、自動的に更新処理を再開する。
ステップＳ６０７の処理をしなかった場合には、ソフトウェアモジュール及び証明書との間に不整合がなく更新されていることを意味し、ステップＳ４０６へ進み、セキュアブート制御部は更新フラグをリセットし、更新前の旧証明書を消去する。
【００７７】
次に、ステップＳ４０７では、セキュアブート制御部１１２が全ての証明書が更新されたか否かを判定する。具体的には、セキュアブート処理において実行される全てのソフトウェアモジュールに関して、証明書格納手段１０７に格納されている、それらの証明書の参照カウンタ値３０５が、セキュリティデバイス１０２のカウンタ部２０４に保持されているカウンタ値よりも大きな値を示すようになったか否かを判定する。
【００７８】
全ての証明書が更新された場合には、古い証明書への差し替えを防止するために、セキュアブート制御部１１２は、セキュリティデバイス１０２にカウンタのインクリメントを要求し、セキュリティデバイス１０２がカウンタ部２０４に保持されているカウンタ値を１インクリメントして、セキュアブート処理を終了する（ステップＳ４０８）。それ以外の場合には、そのまま、セキュアブート処理を終了する。
【００７９】
以上のようなセキュアブート処理を行うことにより、端末１００のソフトウェアが、複数のソフトウェアモジュールから構成される場合において、ソフトウェアモジュールを古いソフトウェアモジュールにすりかえるといった不正行為を防止し、各ソフトウェアモジュールの更新処理を個別に行うことが可能となる。また、証明書の更新の際に電源断が起こり、ソフトウェアモジュールのコードイメージや証明書間に不整合が生じてしまった場合でも、古いソフトウェアモジュールを実行することなく、セキュアブート処理を完了させ、証明書の更新処理を再開することが出来る。
【００８０】
具体的な例として、端末１００の更新前のソフトウェアが図１５（ａ）に示すようにＢＩＯＳとＯＳと通信モジュールから構成され、ＯＳが更新されて、本来、図１５（ｂ）に示すような構成に更新される場合を考える。この場合、ＯＳのコードイメージとＯＳ証明書が更新されるだけでなく、その参照累積値がＯＳのコードイメージに依存している通信モジュール証明書も更新される（この場合、通信モジュールのコードイメージは更新されない）。
【００８１】
この更新処理において、例えば、ＯＳのコードイメージとＯＳ証明書の更新処理が完了して、通信モジュール証明書の更新を完了する前に電源断等のトラブルが起こった場合、図１５（ｃ）に示すような構成になる。この状態での通信モジュール証明書の参照累積値は、図１５（ａ）の更新前のソフトウェア構成を想定した値となっており、更新されたＯＳのコードイメージ（Ｎｅｗ＿ＯＳ）及びＯＳ証明書´と通信モジュール証明書との間には不整合が生じる。
【００８２】
しかし、端末１００の場合には、図４、５、６に示したセキュアブート処理を行うことにより、セキュアブート処理を完了させ、通信モジュール証明書の更新処理を再開することが出来る。
なお、以上では、更新フラグ保持部１１１をブート制御手段１０５の内部に設けたが、セキュリティデバイス１０２の内部に設けるようにしても良い。セキュリティデバイス１０２は、耐タンパ性を備えているため、更新フラグの改ざんを防止することができ、端末１００の安全性が向上する。
【００８３】
また、なお、ソフトウェアモジュールの証明書をセキュリティデバイスの暗復号部が保持する鍵によって暗号化して証明書格納手段に格納するようにしても良い。
また、なお、ソフトウェアモジュールのコードイメージのハッシュ演算のアルゴリズムとしてＳＨＡ２５６を用いるようにしてもよい。
また、なお、セキュアブート処理を開始する前に、ブート制御手段が改ざんされていないことをセキュリティデバイス１０２が検証するようにしてもよい。
【００８４】
また、なお、最新のソフトウェアモジュールのコードイメージと証明書と更新リストファイルは、端末を専用ツールに接続し、専用ツールを介して更新手段の内部の記憶領域に保持されるようにしてもよい。
また、なお、証明書に施される電子署名のアルゴリズムとして、ＲＳＡ暗号または楕円曲線暗号またはＨＭＡＣを使用するようにしてもよい。
【００８５】
また、なお、以上では、証明書の参照カウンタ値に１を加算し、セキュリティデバイスのカウンタ部が示すカウンタ値を１インクリメントするとしたが、証明書の参照カウンタ値１以外の数値Ａを加算し、セキュリティデバイスのカウンタ部が示すカウンタ値を数値Ａだけインクリメントするようにしてもよい。
（実施の形態２）
図７を用いて本発明の実施の形態２について説明する。
【００８６】
本発明の実施の形態２における端末７００は、代替構成情報累積部１０３を必要に応じて生成し、端末７００のリソースが効率的に使用されるように構成したものである。代替構成情報累積部１０３は、実際には、ＣＰＵ１０１が実行するソフトウェアによって実現され、端末７００上のメモリ（不図示）にソフトウェア・オブジェクトデータとして生成される。
【００８７】
図７は、本発明の実施の形態２における端末７００のブロック構成を示している。第２の実施形態の場合には、ブート制御手段７０５にの中に、さらに、代替構成情報累積部１０３を必要に応じて生成する代替構成情報生成部７１３を備えている。代替構成情報累積部１０３は、通常時には存在せず、更新時セキュアブート処理（ステップＳ４０３）を行う際に、代替構成情報生成部７１３によって必要に応じて生成される。
【００８８】
それ以外の構成要素は、第１の実施形態における端末１００の場合と同じである。
本実施の形態の場合、更新時セキュアブート処理（ステップＳ４０３）を開始する際に、代替構成情報生成部７１３が、セキュリティデバイス１０２の構成情報保持部２１２に保持されている値を読み出し、代替構成情報保持部２２２に設定することで、代替構成情報累積部１０３を生成する。それ以外の動作に関しては、第１の実施形態における端末１００の場合と同じである。
【００８９】
本実施の形態の場合、代替構成情報累積部１０３を必要になった時にだけ、代替構成情報生成部７１３によって、ソフトウェア・オブジェクトデータとして生成し、それ以外の時は、端末７００のメモリを占有することが無く、通常セキュアブート処理の際にはより多くのメモリを利用して処理を高速化することが出来るなど、端末７００のリソースを効率的に使用することが出来る。
【００９０】
なお、生成される代替構成情報累積部１０３の代替構成情報保持部２２２は、耐タンパ化されたメモリ上に生成するようにしてもよい。
（実施の形態３）
本発明の実施の形態３では、更新時セキュアブート処理を行って起動した場合の端末１００の動作モードを、更新時セキュアブート処理の際に行った照合処理に結果に応じて一部の機能を制限するなどの制御できるように構成したものについて説明する。
【００９１】
図８は、本発明の実施の形態３におけるソフトウェアモジュールの証明書８００のデータ構造を示しており、機能制御の内容を規定する機能制御定義８０７というフィールドが追加されている以外は、実施の形態１の場合の証明書と同じである。
機能制御定義８０７には、機能制御の条件と機能制御の内容が、例えば、ＸＭＬ等の形式で記述される。
【００９２】
機能制御の条件としては、「更新時セキュアブート処理を行って起動した場合に常に適用」や「証明書の参照累積値の照合において代替構成情報累積部と照合を行った場合に適用」などの条件が規定される。
また、機能制御の内容としては、「更新処理の再開以外の処理が制限される緊急モード」や「外部との通信が制限される通信不可モード」、「セキュリティデバイス１０２を利用する暗号処理などのセキュリティサービスを利用不可とする制限モード」、「特定の外部通信（緊急電話など）のみ使用可能とする通報モード」などが規定される。
【００９３】
端末１００の構成は、実施の形態１の場合と基本的には同じであり、更新時セキュアブート処理のステップＳ６１４において、ソフトウェアモジュールのコードイメージを実行する際に、ブート制御手段が各証明書８００の機能制御定義８０７が規定する内容に基づいて各ソフトウェアモジュールの内部パラメータを設定して機能制御を行う。それ以外の動作は、実施の形態１の場合と同じである。
【００９４】
本実施の形態の場合、例えば、機能制御の条件として「証明書の参照累積値の照合において代替構成情報累積部と照合を行った場合に適用」という条件を、機能制御の内容として「更新処理の再開以外の処理が制限される緊急モード」という制御内容を、それぞれ定義することにより、更新処理が完了していない状態でセキュアブート処理が行われた場合、ブート処理の後、更新処理の再開以外の処理が制限されるため、更新処理が優先的に実行され、より高い確度で更新処理を完了させることが出来る。また、機能制御として、「通信不可モード」や「制限モード」といったモードを定義することで、更新処理が完了していない状態でセキュアブート処理が行われた場合に、端末の機能を制限するような動作モードを設ける。これにより安全性の低下した状態の端末のソフトウェアの更新を促し、システム全体としてのリスクを低減させることが出来る。
【００９５】
（実施の形態４）
実施の形態１では、更新処理の際、旧証明書を消去せずに保持しておく必要があったが、
本発明の実施の形態４では、それを不要とするように構成したものについて説明する。
【００９６】
図９は、本発明の実施の形態４におけるソフトウェアモジュールの証明書９００のデータ構造を示している。図９に示すデータ構造は、更新前のソフトウェアモジュールのコードイメージのハッシュ値を示す旧参照計測値９０７というフィールドが追加されている以外は、実施の形態１の場合の証明書と同じである。
旧参照計測値９０７には、ソフトウェアモジュールを更新する前に、ソフトウェアモジュール格納手段１０６に格納されていたソフトウェアモジュールのコードイメージのハッシュ演算の結果が設定される。これは、証明書を更新する前に、証明書格納手段１０７に格納されていた証明書の参照計測値３０３に設定されている値と同じである。
【００９７】
端末１００の構成は、実施の形態１の場合と基本的には同じであり、また、次に示す３つの相違点以外は、動作に関しても実施の形態１の場合と同じである。
動作における１つ目の相違点は、実施の形態４の場合、更新処理のステップＳ１２０２において旧証明書を保持せずに消去する点である。
２つ目の相違点は、実施の形態４の場合、図１０に示すように、更新時セキュアブート処理のステップＳ６０９において、更新フラグが有効になっているソフトウェアモジュールである場合（つまり、更新処理中または更新処理を完了したソフトウェアモジュールである場合）には、ステップＳ１０１２へ進み、代替構成情報累積部１０３の累積部２２１が、代替構成情報保持部２２２が保持する値のバイト列と証明書の旧参照累積値９０７のフィールドに設定されている旧参照累積値のバイト列とを連結し、さらに連結したバイト列に対してハッシュ演算を行い、その結果を代替構成情報保持部２２２に格納する（ステップＳ１０１２）点である。
【００９８】
３つ目の相違点は、実施の形態４の場合、セキュアブート処理のステップＳ４０６の処理において、更新フラグのリセットのみを行う点である。
本実施の形態の場合、旧証明書を保持しておくために必要であったメモリが不要となり、携帯電話等のリソースに制限がある端末においても適用することが容易になる。
（実施の形態５）
図１１、１３を用いて本発明の実施の形態５について説明する。
【００９９】
本発明の実施の形態５における端末１１００は、更新処理を開始する前に、入手した最新のソフトウェアモジュールのコードイメージと証明書、さらには、更新対象ではない証明書との整合性を検証することで、誤って整合性がない構成に更新されてしまうことを防止し、ソフトウェアモジュールのコードイメージ及び証明書との間に不整合がないソフトウェア構成に更新されるように構成したものである。
【０１００】
図１１は、本発明の実施の形態５における端末１１００のブロック構成を示している。第５の実施形態の場合には、更新手段１１０４の中に、さらに、最新のソフトウェアモジュールのコードイメージと証明書と更新対象ではない証明書との整合性を検証するサイレントブート部１１２１を備えている。それ以外の構成要素は、第１の実施形態における端末１００の場合と同じである。
【０１０１】
本実施の形態の場合、更新処理を開始する前に、サイレントブート部１１２１が図１３に示す処理フローに基づいてサイレントブート処理を行い、サイレントブート処理においてエラーが検出されなかった場合に、更新処理を開始する。それ以外の動作に関しては、第１の実施形態における端末１００の場合と同じである。
サイレントブート処理は、具体的には、最新のソフトウェアモジュールのコードイメージと証明書とをダウンロードした直後等のタイミングでおこなわれるとする。ただし、端末処理負荷が低いタイミングで行うなどとしてもよく、このタイミングに限定するものではない。
【０１０２】
サイレントブート処理では、まず、サイレントブート部１１２１がソフトウェアモジュールと証明書との照合を行いソフトウェアモジュールに対応する証明書が存在することを検証する（ステップＳ１３０１）。具体的には、ソフトウェアモジュールのコードイメージのハッシュ演算（例えば、ＳＨＡ−１などのハッシュ演算）を行い、その結果と証明書の参照計測値３０３とを照合する。照合の結果、参照計測値３０３と一致した場合には、セキュリティデバイス１０２に証明書の検証を要求してステップＳ１３０２へ進み、一致しなかった場合にはエラーとなりサイレントブート処理を完了せずに終了する。
【０１０３】
ステップＳ１３０２では、セキュリティデバイス１０２の証明書検証部２０２が、証明書のバージョンの検証を行い、証明書が古い無効化された証明書でないこと検証する（ステップＳ１３０２）。具体的には、セキュリティデバイスのカウンタ部２０４が保持するカウンタ値と証明書の参照カウンタ値３０５とを比較する。カウンタ部２０４には、ソフトウェアモジュールの有効なバージョンの下限を示すカウンタ値が保持されており、カウンタ値の比較の結果、参照カウンタ値３０５が、カウンタ部２０４が保持するカウンタ値以上であった場合には、ステップＳ１３０３へ進み、それ以外の場合にはエラーとなりサイレントブート処理を完了せずに終了する。
【０１０４】
ステップＳ１３０３では、セキュリティデバイス１０２の証明書検証部２０２が、さらに、証明書の署名の検証を行い、有効な電子署名が施された証明書であることを検証する（ステップＳ１３０３）。署名検証の結果、電子署名が有効であった場合には、ステップＳ１３０４へ進み、無効であった場合にはエラーとなりサイレントブート処理を完了せずに終了する。
【０１０５】
ステップＳ１３０１、Ｓ１３０２、Ｓ１３０３の検証により、ソフトウェアモジュールと証明書とは対応関係にあり、かつ、その証明書の有効であることが検証されることにより、ソフトウェアモジュール自体の有効であることが検証される。
ステップＳ１３０４では、サイレントブート部１１２１が、証明書の参照累積値と代替構成情報保持部２２２が保持する構成情報とを照合し、ソフトウェアモジュールを実行する前の状態として正しい状態（その前に実行されているソフトウェアモジュールが有効なソフトウェアモジュールであり、正しい順番で実行されている）であることが検証される。証明書の参照累積値と代替構成情報保持部２２２が保持する構成情報とが一致した場合には、ステップＳ１３０５へ進み、それ以外の場合には、エラーとなりサイレントブート部１１２１を完了せずに終了する。
【０１０６】
ステップＳ１３０５では、サイレントブート部１１２１が、代替構成情報保持部２２２が保持する値のバイト列と証明書の参照累積値のフィールドに設定されている参照累積値のバイト列とを連結し、さらに連結したバイト列に対してハッシュ演算（例えば、ＳＨＡ−１のハッシュ演算）を行い、その結果を代替構成情報保持部２２２に格納する（ステップＳ１３０５）。
【０１０７】
サイレントブート処理では、実際にソフトウェアモジュールのコードイメージを実行することはせず、次に、ステップＳ１３０６において、サイレントブート処理を完了したか否かを判定する。
サイレントブート処理において実行されるべき全てのソフトウェアモジュールの実行を完了した場合には、サイレントブート処理を完了し、セキュアブート処理を完了していないと判定した場合には、ステップＳ１３０１に戻り、次に実行されるべきソフトウェアモジュールと証明書に関してステップＳ１３０１からステップＳ５０７までの処理を繰り返す。
【０１０８】
サイレントブート処理においてエラーが検出されなかった場合に、更新手段１１０４が更新処理を開始する。
本実施の形態の場合、更新処理を開始する前に、入手したソフトウェアモジュールのコードイメージと証明書と更新対象ではない証明書との整合性を検証する。これにより、誤って整合性がない構成に更新されてしまうことを防止し、確実にソフトウェアモジュールのコードイメージ及び証明書との間に不整合がないソフトウェア構成に更新することが出来る。
【０１０９】
（実施の形態６）
本発明の実施の形態６では、古いソフトウェアモジュールが実行されることを、より確実に防止し、端末１００のソフトウェア構成が常に最新のソフトウェア構成となるように構成したものについて説明する。
【０１１０】
図１４は、本発明の実施の形態６におけるセキュアブート処理のフローを示しており、この図１４のセキュアブート処理を行うことにより、古いソフトウェアモジュールが実行されることを防止することが出来る。
端末１００の構成は、実施の形態１の場合と基本的には同じであり、ステップＳ４０６の後の処理以外は、動作に関しても実施の形態１の場合と同じである。
【０１１１】
本発明の実施の形態６におけるセキュアブート処理では、ステップＳ４０１からステップＳ４０６に関しては実施の形態１と同じ動作を行う。
ステップＳ４０６の後、つまり、更新時セキュアブート処理においてソフトウェアモジュール及び証明書との間に不整合がなく、ステップＳ４０６において、更新フラグをリセットし、更新前の旧証明書を消去した後、処理はステップＳ１４０７へ進む。ステップＳ１４０７では、証明書格納手段１０７に格納されている証明書の内、セキュリティデバイス１０２のカウンタ部２０４が示す値と参照カウンタ値が同じ証明書（つまり、更新されていない証明書）に関して、証明書格納手段に格納されている既存の証明書を用いて更新する。この時、セキュアブート制御部１１２は、更新手段１０４に証明書の更新処理を要求する。また、更新手段１０４がセキュアブート制御部１１２からの要求に基づきセキュリティデバイス１０２に命令を送信する。セキュリティデバイス１０２は、証明書の参照カウンタ値３０５にセキュリティデバイス１０２のカウンタ部２０４に保持されているカウンタ値に１を加算した値を設定し、セキュリティデバイス１０２の暗復号部２０５に保持されている暗号鍵によって署名を生成して、電子署名３０７のフィールドに設定する。なお、証明書の更新は、証明書格納手段に格納されている証明書を用いて行われるので、実質的には、この処理によって、証明書の参照カウンタ値３０５と電子署名３０７のフィールドのみが更新され、その他のフィールドの値は変わらない。
【０１１２】
次に、ステップＳ１４０８において、更新手段１０４がセキュリティデバイス１０２のカウンタ部に保持されているカウンタ値のインクリメントを要求し、セキュリティデバイス１０２がカウンタ部に保持されているカウンタ値を１インクリメントして更新処理を終了する。
ステップＳ１４０７、ステップＳ１４０８の処理により、すべての証明書の参照カウンタ値３０５とセキュリティデバイス１０２のカウンタ部に保持されているカウンタ値とが常に同じ値に設定されることになる。
【０１１３】
本実施の形態の図４、５、６の処理フローに基づくセキュアブート処理では、すべてのソフトウェアモジュールに関して、コードイメージを実行する前に、証明書のバージョンの検証が行われる。また、証明書のバージョンの検証では、証明書の参照カウンタ値３０５が、カウンタ部２０４が保持するカウンタ値以上であることが検証され、証明書の参照カウンタ値３０５が、カウンタ部２０４が保持するカウンタ値よりも小さい場合には、そのソフトウェアモジュールのコードイメージは実行されない。
【０１１４】
したがって、本実施の形態では、古いソフトウェアモジュールが実行されることが確実に防止され、端末１００のソフトウェア構成が常に最新のソフトウェア構成となる。
（実施の形態７）
本発明の実施の形態７では、上述してきた実施の形態１から実施の形態６をＴｒｕｓｔｅｄ  Ｃｏｍｐｕｔｉｎｇ  Ｇｒｏｕｐ（ＴＣＧ）で規定している仕様に基づいて実現してもよい。
【０１１５】
この場合、セキュリティデバイス１０２は、ＴＣＧで規定しているＴＰＭモジュールまたはＭＴＭモジュールであり（以降のＴＰＭとは、ＴＰＭあるいはＭＴＭを意味するものとする）、構成情報保持部２０１は、ＴＰＭが備えるＰＣＲであり、カウンタ部は、ＴＰＭが備えるＭｏｎｏｔｏｎｉｃ  Ｃｏｕｎｔｅｒであり、累積部２１１は、証明書検証部２０２、照合部２０３は、ＴＰＭコマンド処理を含んだＴＣＧ機能を実現する部であり、証明書３００、８００、９００は、Ｅｘｔｅｒｎａｌ  ＲＩＭ＿Ｃｅｒｔ、もしくはＩｎｔｅｒｎａｌ  ＲＩＭ＿Ｃｅｒｔであり、代替構成情報保持部１０３は、ＴＰＭ内のＰＣＲの機能を仮想的に実現するためのもの（ここでは代替ＰＣＲと呼ぶ）であり、累積部２２１は、代替ＰＣＲを利用してＴＣＧのＥｘｔｅｎｄ処理をする部である。これによって、ＴＣＧ仕様に基づいて安全にソフトウェアの更新が可能となる。
【０１１６】
（その他変形例）
なお、本発明を上記実施の形態に基づいて説明してきたが、本発明は、上記の実施の形態に限定されないのはもちろんである。以下のような場合も本発明に含まれる。
（１）上記の各装置は、具体的には、マイクロプロセッサ、ＲＯＭ、ＲＡＭ、ハードディスクユニット、ディスプレイユニット、キーボード、マウスなどから構成されるコンピュータシステムである。前記ＲＡＭまたはハードディスクユニットには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムにしたがって動作することにより、各装置は、その機能を達成する。ここでコンピュータプログラムは、所定の機能を達成するために、コンピュータに対する指令を示す命令コードが複数個組み合わされて構成されたものである。なお、各装置は、マイクロプロセッサ、ＲＯＭ、ＲＡＭ、ハードディスクユニット、ディスプレイユニット、キーボード、マウスなどの全てを含むコンピュータシステムには限らず、これらの一部から構成されているコンピュータシステムであってもよい。
【０１１７】
（２）上記の各装置を構成する構成要素の一部または全部は、１個のシステムＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ：大規模集積回路）から構成されているとしてもよい。システムＬＳＩは、複数の構成部を１個のチップ上に集積して製造された超多機能ＬＳＩであり、具体的には、マイクロプロセッサ、ＲＯＭ、ＲＡＭなどを含んで構成されるコンピュータシステムである。前記ＲＡＭには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムにしたがって動作することにより、システムＬＳＩは、その機能を達成する。
【０１１８】
また、上記の各装置を構成する構成要素の各部は、個別に１チップ化されていても良いし、一部又は全てを含むように１チップ化されてもよい。
また、ここでは、システムＬＳＩとしたが、集積度の違いにより、ＩＣ、ＬＳＩ、スーパーＬＳＩ、ウルトラＬＳＩと呼称されることもある。また、集積回路化の手法はＬＳＩに限るものではなく、専用回路又は汎用プロセッサで実現してもよい。ＬＳＩ製造後に、プログラムすることが可能なＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）や、ＬＳＩ内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサーを利用しても良い。
【０１１９】
さらには、半導体技術の進歩又は派生する別技術によりＬＳＩに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。バイオ技術の適用等が可能性としてありえる。
（３）上記の各装置を構成する構成要素の一部または全部は、各装置に脱着可能なＩＣカードまたは単体のモジュールから構成されているとしてもよい。前記ＩＣカードまたは前記モジュールは、マイクロプロセッサ、ＲＯＭ、ＲＡＭなどから構成されるコンピュータシステムである。前記ＩＣカードまたは前記モジュールは、上記の超多機能ＬＳＩを含むとしてもよい。マイクロプロセッサが、コンピュータプログラムにしたがって動作することにより、前記ＩＣカードまたは前記モジュールは、その機能を達成する。このＩＣカードまたはこのモジュールは、耐タンパ性を有するとしてもよい。
【０１２０】
（４）本発明は、上記に示す方法であるとしてもよい。また、これらの方法をコンピュータにより実現するコンピュータプログラムであるとしてもよいし、前記コンピュータプログラムからなるデジタル信号であるとしてもよい。
また、本発明は、前記コンピュータプログラムまたは前記デジタル信号をコンピュータ読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、ＢＤ（Ｂｌｕ−ｒａｙ  Ｄｉｓｃ）、半導体メモリなどに記録したものとしてもよい。また、これらの記録媒体に記録されている前記デジタル信号であるとしてもよい。
【０１２１】
また、本発明は、前記コンピュータプログラムまたは前記デジタル信号を、電気通信回線、無線または有線通信回線、インターネットを代表とするネットワーク、データ放送等を経由して伝送するものとしてもよい。
また、本発明は、マイクロプロセッサとメモリを備えたコンピュータシステムであって、前記メモリは、上記コンピュータプログラムを記憶しており、前記マイクロプロセッサは、前記コンピュータプログラムにしたがって動作するとしてもよい。
【０１２２】
また、前記プログラムまたは前記デジタル信号を前記記録媒体に記録して移送することにより、または前記プログラムまたは前記デジタル信号を前記ネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしてもよい。
（５）セキュリティデバイスは、耐タンパソフトウェアまたはソフトウェアと及びハードウェアにより実施されるよしてもよい。
【０１２３】
（６）ＣＰＵは特別な動作モード（セキュアモードなど）を備え、ＣＰＵによって実行されるソフトウェアはその特別な動作モード（セキュアモードなど）で動作することで安全に実行されるとしてもよい。
（７）上記実施の形態及び上記変形例をそれぞれ組み合わせるとしてもよい。
【産業上の利用可能性】
【０１２４】
本発明は、パーソナルコンピュータや携帯電話、オーディオプレーヤ、テレビ受像機、ビデオレコーダなど、プログラムデータの更新を行う情報通信機器や家電機器に広く利用することができる。
本発明の端末に搭載されるセキュリティモジュールをそれらの機器に搭載し、本発明の端末と同様の構成にすることによって、機器のソフトウェアが複数のソフトウェアモジュールから構成される場合において、古いソフトウェアモジュールにすりかえるといった不正行為を防止し、各ソフトウェアモジュールの更新処理を個別に行うことが可能となる。
【０１２５】
また、証明書の更新の際に電源断が起こり、ソフトウェアモジュールのコードイメージや証明書間に不整合が生じてしまった場合でも、ブート処理時に構成情報累積部と代替仮想構成情報累積部の両方を参照して検証をすることで、古いソフトウェアモジュールを実行することなく、セキュアブート処理を完了させ、証明書の更新処理を再開することが出来る。
【符号の説明】
【０１２６】
１００    端末
１０１    ＣＰＵ
１０２    セキュリティデバイス
１０３    代替構成情報累積部
１０４    更新手段
１０５    ブート制御手段
１０６    ソフトウェアモジュール格納手段
１０７    証明書格納手段
１０８    通知手段
【図１】
0005385148.tif 000002
【図２】
0005385148.tif 000003
【図３】
0005385148.tif 000004
【図４】
0005385148.tif 000005
【図５】
0005385148.tif 000006
【図６】
0005385148.tif 000007
【図７】
0005385148.tif 000008
【図８】
0005385148.tif 000009
【図９】
0005385148.tif 000010
【図１０】
0005385148.tif 000011
【図１１】
0005385148.tif 000012
【図１２】
0005385148.tif 000013
【図１３】
0005385148.tif 000014
【図１４】
0005385148.tif 000015
【図１５】
0005385148.tif 000016
【図１６】
0005385148.tif 000017
【図１７】
0005385148.tif 000018