(57)【特許請求の範囲】
【請求項１】
複数のプログラムをそれぞれの完全性を検証しながら予め定めた順番で起動するセキュアブートを実行する情報処理装置であって、
前記複数のプログラムを実行する実行手段と、
プログラムが起動される毎に、起動されたプログラムの特徴情報を生成して累積し、得られた累積値を保持する累積手段と、
特定のプログラムが起動に使用する起動用データを、当該プログラムの起動直前に前記累積手段により保持されている累積値の期待値とともに保護した第１の保護化データと、前記起動用データを、セキュアブート後に前記累積手段により保持されている累積値の期待値とともに保護した第２の保護化データとを保持する記憶手段と、
セキュアブート後に、前記特定のプログラムより起動順が先のプログラムの更新を行う場合に、前記第２の保護化データの保護を解除し、前記第２の保護化データに係る期待値と、セキュアブート後に前記累積手段により保持されている累積値とが一致するか否か判定し、一致する場合にのみ前記第２の保護化データに係る前記起動用データを出力する保護解除手段と、
前記起動用データが出力された場合に、前記第１の保護化データについて、前記起動用データを、前記更新後における前記特定のプログラムの起動直前に前記累積手段により保持されている累積値の期待値とともに再保護する再保護手段と
を備えることを特徴とする情報処理装置。
【請求項２】
前記再保護手段は、前記起動用データが出力された場合に、さらに、前記第２の保護化データについて、前記起動用データを、前記更新がされ、さらにセキュアブートされた後に前記累積手段により保持される累積値の期待値とともに再保護する
ことを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記保護解除手段は、さらに、
前記特定のプログラムを実行中の前記実行手段によって前記起動用データの取得要求がされた場合に、前記第１の保護化データの保護を解除し、前記第１の保護化データに係る期待値と、前記累積手段により保持されている累積値とが一致するか否か判定し、一致する場合にのみ前記起動用データを前記実行手段に出力する
ことを特徴とする請求項２記載の情報処理装置。
【請求項４】
前記再保護手段は、さらに、
前記特定のプログラムを実行中の前記実行手段によって、前記起動用データが変更された場合に、前記変更された起動用データを、当該プログラムの起動直前に前記累積手段により保持されている累積値の期待値とともに保護した新たな第１の保護化データを生成し、生成した第１の保護化データで前記記憶手段に保持されている第１の保護化データを置き換え、前記変更された起動用データを、セキュアブート後に前記累積手段により保持されている累積値の期待値とともに保護した新たな第２の保護化データを生成し、生成した第２の保護化データで前記記憶手段に保持されている第２の保護化データを置き換える
ことを特徴とする請求項３記載の情報処理装置。
【請求項５】
前記保護解除手段は、さらに、保護解除指示を受け付けて、前記第１の保護化データの保護を解除し、前記第１の保護化データに係る期待値と、前記累積手段により保持されている累積値とが一致するか否か判定し、一致する場合にのみ前記第１の保護化データに係る前記起動用データを出力し、
前記情報処理装置は、さらに、
前記複数のプログラムそれぞれが起動される毎に、前記保護解除手段に前記保護解除指示を出力し、前記保護解除手段により前記起動用データが出力された場合、当該起動されたプログラムを前記特定のプログラムとして前記第１保護化データと対応付けた管理情報を生成する管理情報生成手段と、
前記管理情報を記録する管理情報記録手段とを備え、
前記実行手段は、前記管理情報記録手段により前記管理情報が記録されている状態で前記複数のプログラムそれぞれを起動するときに、前記管理情報に基づいて当該起動するプログラムが前記特定のプログラムであるか否かを判断する
ことを特徴とする請求項３に記載の情報処理装置。
【請求項６】
前記第１及び第２の保護化データの保護は、暗号化による保護であり、
前記保護解除手段は、前記第２の保護化データの保護を解除する場合、前記第２の保護化データを復号し、
前記再保護手段は、前記再保護として、前記起動用データを前記累積手段により前記更新後における特定のプログラムの起動直前の累積値の期待値とともに暗号化する
ことを特徴とする請求項１記載の情報処理装置。
【請求項７】
前記特徴情報は、起動したプログラムのハッシュ値である
ことを特徴とする請求項１記載の情報処理装置。
【請求項８】
前記特徴情報は、前記プログラムが正常に起動した状態を示す状態情報である
ことを特徴とする請求項１記載の情報処理装置。
【請求項９】
前記状態情報は、前記プログラムが起動したことを示す文字列のハッシュ値である
ことを特徴とする請求項８に記載の情報処理装置。
【請求項１０】
前記再保護手段は、さらに、再保護前の第１の保護化データを前記記憶手段にバックアップし、
前記情報処理装置は、さらに、
前記更新されたプログラムを更新前のプログラムに戻すよう指示された場合に、再保護された第１の保護化データを、前記第１の保護化データのバックアップで置き換えるロールバック手段
を備えることを特徴とする請求項１記載の情報処理装置。
【請求項１１】
複数のプログラムをそれぞれの完全性を検証しながら予め定めた順番で起動するセキュアブートを実行する情報処理装置に用いられる情報処理方法であって、
前記情報処理装置は、
前記複数のプログラムを実行する実行手段と、
プログラムが起動される毎に、起動されたプログラムの特徴情報を生成して累積し、得られた累積値を保持する累積手段と、
特定のプログラムが起動に使用する起動用データを、当該プログラムの起動直前に前記累積手段により保持されている累積値の期待値とともに保護した第１の保護化データと、前記起動用データを、セキュアブート後に前記累積手段により保持されている累積値の期待値とともに保護した第２の保護化データとを保持する記憶手段とを備えており、
前記情報処理方法は、
セキュアブート後に、前記特定のプログラムより起動順が先のプログラムの更新を行う場合に、前記第２の保護化データの保護を解除し、前記第２の保護化データに係る期待値と、セキュアブート後に前記累積手段により保持されている累積値とが一致するか否か判定し、一致する場合にのみ前記第２の保護化データに係る前記起動用データを出力する保護解除ステップと、
前記起動用データが出力された場合に、前記第１の保護化データについて、前記起動用データを、前記更新後における前記特定のプログラムの起動直前に前記累積手段により保持されている累積値の期待値とともに再保護する再保護ステップと
を含むことを特徴とする情報処理方法。
【請求項１２】
複数のプログラムをそれぞれの完全性を検証しながら予め定めた順番で起動するセキュアブートを実行する情報処理装置に用いられる情報処理プログラムであって、
前記情報処理装置は、
前記複数のプログラムを実行する実行手段と、
プログラムが起動される毎に、起動されたプログラムの特徴情報を生成して累積し、得られた累積値を保持する累積手段と、
特定のプログラムが起動に使用する起動用データを、当該プログラムの起動直前に前記累積手段により保持されている累積値の期待値とともに保護した第１の保護化データと、前記起動用データを、セキュアブート後に前記累積手段により保持されている累積値の期待値とともに保護した第２の保護化データとを保持する記憶手段とを備えており、
前記情報処理プログラムは、
セキュアブート後に、前記特定のプログラムより起動順が先のプログラムの更新を行う場合に、前記第２の保護化データの保護を解除し、前記第２の保護化データに係る期待値と、セキュアブート後に前記累積手段により保持されている累積値とが一致するか否か判定し、一致する場合にのみ前記第２の保護化データに係る前記起動用データを出力する保護解除ステップと、
前記起動用データが出力された場合に、前記第１の保護化データについて、前記起動用データを、前記更新後における前記特定のプログラムの起動直前に前記累積手段により保持されている累積値の期待値とともに再保護する再保護ステップと
をコンピュータに実行させることを特徴とする情報処理プログラム。
【請求項１３】
複数のプログラムをそれぞれの完全性を検証しながら予め定めた順番で起動するセキュアブートを実行する情報処理装置に用いられる情報処理プログラムを記憶するコンピュータ読み取り可能な記録媒体であって、
前記情報処理装置は、
前記複数のプログラムを実行する実行手段と、
プログラムが起動される毎に、起動されたプログラムの特徴情報を生成して累積し、得られた累積値を保持する累積手段と、
特定のプログラムが起動に使用する起動用データを、当該プログラムの起動直前に前記累積手段により保持されている累積値の期待値とともに保護した第１の保護化データと、前記起動用データを、セキュアブート後に前記累積手段により保持されている累積値の期待値とともに保護した第２の保護化データとを保持する記憶手段とを備えており、
前記情報処理プログラムは、
セキュアブート後に、前記特定のプログラムより起動順が先のプログラムの更新を行う場合に、前記第２の保護化データの保護を解除し、前記第２の保護化データに係る期待値と、セキュアブート後に前記累積手段により保持されている累積値とが一致するか否か判定し、一致する場合にのみ前記第２の保護化データに係る前記起動用データを出力する保護解除ステップと、
前記起動用データが出力された場合に、前記第１の保護化データについて、前記起動用データを、前記更新後における前記特定のプログラムの起動直前に前記累積手段により保持されている累積値の期待値とともに再保護する再保護ステップと
をコンピュータに実行させることを特徴とする記録媒体。
【請求項１４】
複数のプログラムをそれぞれの完全性を検証しながら予め定めた順番で起動するセキュアブートを実行する情報処理装置に用いられる集積回路であって、
前記複数のプログラムを実行する実行手段と、
プログラムが起動される毎に、起動されたプログラムの特徴情報を生成して累積し、得られた累積値を保持する累積手段と、
特定のプログラムが起動に使用する起動用データを、当該プログラムの起動直前に前記累積手段により保持されている累積値の期待値とともに保護した第１の保護化データと、前記起動用データを、セキュアブート後に前記累積手段により保持されている累積値の期待値とともに保護した第２の保護化データとを保持する記憶手段と、
セキュアブート後に、前記特定のプログラムより起動順が先のプログラムの更新を行う場合に、前記第２の保護化データの保護を解除し、前記第２の保護化データに係る期待値と、セキュアブート後に前記累積手段により保持されている累積値とが一致するか否か判定し、一致する場合にのみ前記第２の保護化データに係る前記起動用データを出力する保護解除手段と、
前記起動用データが出力された場合に、前記第１の保護化データについて、前記起動用データを、前記更新後における前記特定のプログラムの起動直前に前記累積手段により保持されている累積値の期待値とともに再保護する再保護手段と
を備えることを特徴とする集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、保持するプログラムをセキュアにブートする情報処理装置に関し、特に、プログラムを更新する必要が生じた場合でもセキュアな状態を維持する技術に関する。
【背景技術】
【０００２】
近年、携帯電話機などの端末装置において、セキュアなプラットフォームを実現するため、端末装置の起動開始後、ＯＳやアプリケーション等の各プログラムを起動する際に各プログラムのハッシュ値を計測し、計測された値やその累積値が期待される値であるか否かに基づき装置全体の完全性を検証しながら起動するセキュアブートが行われている（非特許文献１〜５参照）。このセキュアブートにおいては、起動中の特定のプログラムが、特定のデータを用いることがある。例えば、端末装置において、プログラムＢが暗号化されており、プログラムＡ（特定のプログラムに相当）が起動してから、復号鍵（特定のデータに相当）を用いてプログラムＢを復号し、復号したプログラムＢを起動する場合などがこれに該当する。この場合、復号鍵は、プログラムＡのみが、プログラムＡ起動直前においてプラットフォームがセキュアである場合のみ使用できるよう制限される必要がある。
【０００３】
セキュアブート中に、特定のプログラムが特定のデータをセキュアに扱う技術として、セキュアなデータをＴＣＧ（Ｔｒｕｓｔｅｄ  Ｃｏｍｐｕｔｉｎｇ  Ｇｒｏｕｐ）で規定されるＴＰＭ（Ｔｒｕｓｔｅｄ  Ｐｌａｔｆｏｒｍ  Ｍｏｄｕｌｅ）のシール（Ｓｅａｌ）処理することでシールデータとして保護し、セキュアブート過程でそのシールデータをシール解除条件に従ってシール解除（ＵｎＳｅａｌ）して安全に利用する方法が特許文献１に開示されている。特許文献１によれば、端末装置は、シール処理として、ＴＰＭにて管理される公開鍵暗号の鍵ペアの公開鍵で保護対象データを暗号化して保護する（以下、シール保護という。）。この場合、保護対象データは、暗号化プログラムＢを復号するための復号鍵であり、シール解除条件は、プログラムＡのハッシュ値がＥｘｔｅｎｄ処理されたＰＣＲ（Ｐｌａｔｆｏｒｍ  Ｃｏｎｆｉｇｕｒａｔｉｏｎ  Ｒｅｇｉｓｔｅｒｓ）に格納されているべき期待値（以下、ＰＣＲ期待値という。）の期待値である。そして、端末装置は、シール解除処理として、シールデータの復号要求をし、ＴＰＭ内にて復号する時点のＴＰＭに蓄積されているＰＣＲの値と、シール解除条件に設定されているＰＣＲ期待値とが等しいときのみ、復号された平文の保護対象データを出力する。以上のように、シール解除条件を用いることで、保護対象データの平文データを得るのを所定のプログラムが正しく起動している場合のみに制限することができる。一方、プログラムの改ざんがあった場合など端末装置が不正な状態となっている場合は、シールデータ内の保護対象データから平文データを抽出することができずセキュアブートは成功しない。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００６−３２３８１４号公報
【非特許文献】
【０００５】
【非特許文献１】ＴＰＭ  Ｍａｉｎ、Ｐａｒｔ１  Ｄｅｓｉｇｎ  Ｐｒｉｎｃｉｐｌｅｓ、Ｓｐｅｃｉｆｉｃａｔｉｏｎ  ｖｅｒｓｉｏｎ  １．２  Ｌｅｖｅｌ２  Ｒｅｖｉｓｉｏｎ１０３（９  Ｊｕｌｙ  ２００７）
【非特許文献２】ＴＰＭ  Ｍａｉｎ、Ｐａｒｔ２  ＴＰＭ  Ｓｔｒｕｃｔｕｒｅｓ、Ｓｐｅｃｉｆｉｃａｔｉｏｎ  ｖｅｒｓｉｏｎ１．２  Ｌｅｖｅｌ２  Ｒｅｖｉｓｉｏｎ１０３（９  Ｊｕｌｙ  ２００７）
【非特許文献３】ＴＰＭ  Ｍａｉｎ、Ｐａｒｔ３  Ｃｏｍｍａｎｄｓ、Ｓｐｅｃｉｆｉｃａｔｉｏｎ  ｖｅｒｓｉｏｎ  １．２  Ｌｅｖｅｌ２  Ｒｅｖｉｓｉｏｎ１０３（９  Ｊｕｌｙ  ２００７）
【非特許文献４】ＴＣＧ  Ｍｏｂｉｌｅ  Ｔｒｕｓｔｅｄ  Ｍｏｄｕｌｅ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ  ｖｅｒｓｉｏｎ  １．０  Ｒｅｖｉｓｉｏｎ  １（１２  Ｊｕｎｅ  ２００７）
【非特許文献５】ＴＣＧ  Ｍｏｂｉｌｅ  Ｒｅｆｅｒｅｎｃｅ  Ａｒｃｈｉｔｅｃｔｕｒｅ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ  ｖｅｒｓｉｏｎ１．０  Ｒｅｖｉｓｉｏｎ１（１２  Ｊｕｎｅ  ２００７）
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１の技術によると、上述のように保護対象データに係る平文データを得るのを所定のプログラムが正しく起動した場合に制限できるものの、プログラムＡが更新されてしまうと、プログラムＡのハッシュ値も変わるため、このままでは更新前のプログラムＡのハッシュ値がＥｘｔｅｎｄ処理されたＰＣＲをシール解除条件とするシールデータを復元できなくなってしまう。シールデータを復元可能とするには、端末装置を一旦リブートし、リブート過程で更新前のシール解除条件に合致するＰＣＲ値を得て、このＰＣＲ値をもってシール解除を行い、更新後のＰＣＲ期待値をもって再シールする必要がある。すなわち、プログラムＡを更新すれば、必ず、端末装置をリブートする必要が生じてしまうという問題がある。
【課題を解決するための手段】
【０００７】
上記の課題を解決するために、本発明の一実施態様である情報処理装置は、複数のプログラムをそれぞれの完全性を検証しながら予め定めた順番で起動するセキュアブートを実行する情報処理装置であって、前記複数のプログラムを実行する実行手段と、プログラムが起動される毎に、起動されたプログラムの特徴情報を生成して累積し、得られた累積値を保持する累積手段と、特定のプログラムが起動に使用する起動用データを、当該プログラムの起動直前に前記累積手段により保持されている累積値の期待値とともに保護した第１の保護化データと、前記起動用データを、セキュアブート後に前記累積手段により保持されている累積値の期待値とともに保護した第２の保護化データとを保持する記憶手段と、セキュアブート後に、前記特定のプログラムより起動順が先のプログラムの更新を行う場合に、前記第２の保護化データの保護を解除し、前記第２の保護化データに係る期待値と、セキュアブート後に前記累積手段により保持されている累積値とが一致するか否か判定し、一致する場合にのみ前記第２の保護化データに係る前記起動用データを出力する保護解除手段と、前記起動用データが出力された場合に、前記第１の保護化データについて、前記起動用データを、前記更新後における前記特定のプログラムの起動直前に前記累積手段により保持されている累積値の期待値とともに再保護する再保護手段とを備える。
【発明の効果】
【０００８】
本発明の一実施態様である情報処理装置は、上述の構成を備えることにより、セキュアブート完了後に保護化データを使用するプログラムが更新される場合であっても、保護解除手段による、第２の保護化データに係る起動用データの出力は、セキュアブート後の累積値と、期待値との一致を条件としているので、保護解除手段は、セキュアブート完了後に第２の保護化データの保護を解除して起動用データを出力することができ、前記情報処理装置はリブートすることなく、起動用データの更新、再保護をすることができる。
【図面の簡単な説明】
【０００９】
【図１】本発明の実施の形態１における情報処理システム１の構成の概略を示す図
【図２】本発明の実施の形態１におけるセキュアブートについて説明するための図
【図３】本発明の実施の形態１における情報処理端末の構成を示す図
【図４】本発明の実施の形態１におけるプログラム証明書のデータ構造を示す図
【図５】本発明の実施の形態１におけるプログラム証明書の具体例を示す図である。
【図６】本発明の実施の形態１におけるシールデータのデータ構造を示す図
【図７】本発明の実施の形態１におけるシールデータの具体例を示す図。図７（ａ）は、通常用シールデータ、図７（ｂ）は、更新用シールデータの具体例を示す。
【図８】本発明の実施の形態１におけるセキュアブート完了状態の期待値をシール解除条件とした更新用シールデータの例を示す図。
【図９】本発明の実施の形態１におけるシールデータ依存リストを示す図
【図１０】本発明の実施の形態１におけるシールデータ鍵ペアを示す図
【図１１】本発明の実施の形態１におけるシール処理のフロー図
【図１２】本発明の実施の形態１におけるシール解除処理のフロー図
【図１３】本発明の実施の形態１におけるセキュアブート完了状態の期待値の生成フロー図
【図１４】本発明の実施の形態１におけるシールデータ依存リストの生成フロー図
【図１５】本発明の実施の形態１におけるセキュアブートのシーケンスを示す図
【図１６】本発明の実施の形態１におけるセキュアブートのシーケンスを示す図（図１５の続き）
【図１７】本発明の実施の形態１におけるセキュアブートのシーケンスを示す図（図１６の続き）
【図１８】本発明の実施の形態１におけるセキュアブート中の各ステージにおける環境情報レジスタの値を示す模式図
【図１９】本発明の実施の形態１におけるセキュアブート完了状態の環境情報レジスタに格納されるべき値の期待値の生成のイメージを示した図
【図２０】本発明の実施の形態１における更新用シールデータ生成のフロー図
【図２１】本発明の実施の形態１におけるセキュアブート対象のプログラム更新時の処理のフロー図
【図２２】本発明の実施の形態１におけるセキュアブート対象のプログラム更新時の処理のフロー図（図２１の続き）
【図２３】本発明の実施の形態１におけるセキュアブート対象のプログラム更新時の処理のフロー図（図２２の続き）
【図２４】本発明の実施の形態２におけるロールバック対応した際のシールデータ格納部を示した図
【図２５】本発明の実施の形態２におけるプログラム更新要求時のフロー図
【図２６】本発明の実施の形態２におけるプログラムロールバック要求時のフロー図
【図２７】本発明の実施の形態２におけるプログラムロールバック要求時のフロー図（図２６の続き）
【発明を実施するための形態】
【００１０】
本発明の一実施態様である情報処理装置は、複数のプログラムをそれぞれの完全性を検証しながら予め定めた順番で起動するセキュアブートを実行する情報処理装置であって、前記複数のプログラムを実行する実行手段と、プログラムが起動される毎に、起動されたプログラムの特徴情報を生成して累積し、得られた累積値を保持する累積手段と、特定のプログラムが起動に使用する起動用データを、当該プログラムの起動直前に前記累積手段により保持されている累積値の期待値とともに保護した第１の保護化データと、前記起動用データを、セキュアブート後に前記累積手段により保持されている累積値の期待値とともに保護した第２の保護化データとを保持する記憶手段と、セキュアブート後に、前記特定のプログラムより起動順が先のプログラムの更新を行う場合に、前記第２の保護化データの保護を解除し、前記第２の保護化データに係る期待値と、セキュアブート後に前記累積手段により保持されている累積値とが一致するか否か判定し、一致する場合にのみ前記第２の保護化データに係る前記起動用データを出力する保護解除手段と、前記起動用データが出力された場合に、前記第１の保護化データについて、前記起動用データを、前記更新後における前記特定のプログラムの起動直前に前記累積手段により保持されている累積値の期待値とともに再保護する再保護手段とを備える。
【００１１】
また、前記再保護手段は、前記起動用データが出力された場合に、さらに、前記第２の保護化データについて、前記起動用データを、前記更新がされ、さらにセキュアブートされた後に前記累積手段により保持される累積値の期待値とともに再保護するとしてもよい。
【００１２】
この態様によれば、情報処理装置は、第２の保護化データについて、セキュアブート完了後に前記特定のプログラムが更新される場合でもリブートなく再保護しうる状態にすることができる。
【００１３】
また、前記保護解除手段は、さらに、前記特定のプログラムを実行中の前記実行手段によって前記起動用データの取得要求がされた場合に、前記第１の保護化データの保護を解除し、前記第１の保護化データに係る期待値と、前記累積手段により保持されている累積値とが一致するか否か判定し、一致する場合にのみ前記起動用データを前記実行手段に出力するとしてもよい。
【００１４】
この態様によれば、前記起動用データを、前記特定のプログラムの起動直前における装置全体の完全性を維持した上で、前記特定のプログラムについてのみ使用させることができる。
【００１５】
また、前記再保護手段は、さらに、前記特定のプログラムを実行中の前記実行手段によって、前記起動用データが変更された場合に、前記変更された起動用データを、当該プログラムの起動直前に前記累積手段により保持されている累積値の期待値とともに保護した新たな第１の保護化データを生成し、生成した第１の保護化データで前記記憶手段に保持されている第１の保護化データを置き換え、前記変更された起動用データを、セキュアブート後に前記累積手段により保持されている累積値の期待値とともに保護した新たな第２の保護化データを生成し、生成した第２の保護化データで前記記憶手段に保持されている第２の保護化データを置き換えることとしてもよい。
【００１６】
この態様によれば、情報処理装置は、前記特定のプログラムの実行により、起動用データの内容が変更された場合であっても、変更後の起動用データを、セキュアブート完了後に前記特定のプログラムが更新される場合でもリブートなく再保護しうる状態にすることができる。
【００１７】
また、前記保護解除手段は、さらに、保護解除指示を受け付けて、前記第１の保護化データの保護を解除し、前記第１の保護化データに係る期待値と、前記累積手段により保持されている累積値とが一致するか否か判定し、一致する場合にのみ前記第１の保護化データに係る前記起動用データを出力し、前記情報処理装置は、さらに、前記複数のプログラムそれぞれが起動される毎に、前記保護解除装置に前記保護解除指示を出力し、前記保護解除手段により前記起動用データが出力された場合、当該起動されたプログラムを前記特定のプログラムとして前記第１保護化データと対応付けた管理情報を生成する管理情報生成手段と、前記管理情報を記録する管理情報記録手段とを備え、前記実行手段は、前記管理情報記録手段により前記管理情報が記録されている状態で前記複数のプログラムそれぞれを起動するときに、前記管理情報に基づいて当該起動するプログラムが前記特定のプログラムであるか否かを判断することとしてもよい。
【００１８】
この態様によれば、情報処理装置は、前記複数のプログラムそれぞれを起動する毎に、起動済みのプログラムの特徴情報を用いて前記第１保護化データを復号できるか否かを確認し、前記第１保護化データが復号できれば、次に起動するプログラムを前記特定のプログラムとして前記第１保護化データと対応付けた管理情報を生成するので、これにより、どの第１保護化データがどのプログラムに対応するのかを、逐一第１保護化データを調べることなく管理することができる。
【００１９】
また、前記第１及び第２の保護化データの保護は、暗号化による保護であり、前記保護解除手段は、前記第２の保護化データの保護を解除する場合、前記第２の保護化データを復号し、前記再保護手段は、前記再保護として、前記起動用データを前記累積手段により前記更新後における特定のプログラムの起動直前の累積値の期待値とともに暗号化することとしてもよい。
【００２０】
この態様によれば、前記起動用データは、暗号化により保護されているので、前記起動用データが前記特定のプログラム以外のプログラム等により使用されるのを防ぐことができるとともに、前記特定のプログラムが前記起動用データを使用するのを、前記特定のプログラムよりも先に起動する各プログラムの完全性が維持されている場合のみに制限することができる。
【００２１】
また、前記特徴情報は、起動したプログラムのハッシュ値であるとしてもよい。
この態様によれば、前記特徴情報は、起動したプログラムのハッシュ値であるので、起動したプログラムに改ざんがあれば、特徴情報は期待値と一致しなくなる。このとき、保護解除手段から起動用データが出力されることはない。よって、改ざんされたプログラムが動作している環境では、起動用データが使用されるのを防ぐことができる。
【００２２】
また、前記特徴情報は、前記プログラムが正常に起動した状態を示す状態情報であることとしてもよい。
また、前記状態情報は、前記プログラムが起動したことを示す文字列のハッシュ値であることとしてもよい。
【００２３】
この態様によれば、特徴情報は、前記プログラムが正常に起動した状態を示す状態情報であり、特に文字列のハッシュ値である。状態情報および文字列は「プログラムが起動した」ことを示す情報であり、プログラムの実体とは関わりがないので、特定のプログラムが更新された場合であっても特徴情報自体は変化しない。したがって、特定のプログラムが更新された場合であっても、そのプログラムより後に起動するプログラムに係る起動用データを、新たな特徴情報を使って再保護する必要がなくなり、プログラムの更新頻度を低減することができる。
【００２４】
また、前記再保護手段は、さらに、再保護前の第１の保護化データを前記記憶手段にバックアップし、前記情報処理装置は、さらに、前記更新されたプログラムを更新前のプログラムに戻すよう指示された場合に、再保護された第１の保護化データを、前記第１の保護化データのバックアップで置き換えるロールバック手段を備えることとしてもよい。
【００２５】
この態様によれば、情報処理装置は、前記データ更新部は、更新前の第１保護化データを上書きしないように、前記保護されたデータを前記第１データ格納部に記録し、前記情報処理装置は、さらに、前記更新版に更新されたソフトウェアモジュールを更新前のソフトウェアモジュールに戻すと共に、更新前の前記第１保護化データを新たな第１保護化データとする。これにより、ソフトウェアモジュールを前のバージョンに戻す必要ができた場合、消去せずに残しておいた保護化データを第１保護化データとすることで、第１保護化データを新しく作り直す手間を省くことができる。
【００２６】
本発明の一実施態様である情報処理方法は、複数のプログラムをそれぞれの完全性を検証しながら予め定めた順番で起動するセキュアブートを実行する情報処理装置に用いられる情報処理方法であって、前記情報処理装置は、前記複数のプログラムを実行する実行手段と、プログラムが起動される毎に、起動されたプログラムの特徴情報を生成して累積し、得られた累積値を保持する累積手段と、特定のプログラムが起動に使用する起動用データを、当該プログラムの起動直前に前記累積手段により保持されている累積値の期待値とともに保護した第１の保護化データと、前記起動用データを、セキュアブート後に前記累積手段により保持されている累積値の期待値とともに保護した第２の保護化データとを保持する記憶手段とを備えており、前記情報処理方法は、セキュアブート後に、前記特定のプログラムより起動順が先のプログラムの更新を行う場合に、前記第２の保護化データの保護を解除し、前記第２の保護化データに係る期待値と、セキュアブート後に前記累積手段により保持されている累積値とが一致するか否か判定し、一致する場合にのみ前記第２の保護化データに係る前記起動用データを出力する保護解除ステップと、前記起動用データが出力された場合に、前記第１の保護化データについて、前記起動用データを、前記更新後における前記特定のプログラムの起動直前に前記累積手段により保持されている累積値の期待値とともに再保護する再保護ステップとを含む。
【００２７】
本発明の一実施態様である情報処理プログラムは、複数のプログラムをそれぞれの完全性を検証しながら予め定めた順番で起動するセキュアブートを実行する情報処理装置に用いられる情報処理プログラムであって、前記情報処理装置は、前記複数のプログラムを実行する実行手段と、プログラムが起動される毎に、起動されたプログラムの特徴情報を生成して累積し、得られた累積値を保持する累積手段と、特定のプログラムが起動に使用する起動用データを、当該プログラムの起動直前に前記累積手段により保持されている累積値の期待値とともに保護した第１の保護化データと、前記起動用データを、セキュアブート後に前記累積手段により保持されている累積値の期待値とともに保護した第２の保護化データとを保持する記憶手段とを備えており、前記情報処理プログラムは、セキュアブート後に、前記特定のプログラムより起動順が先のプログラムの更新を行う場合に、前記第２の保護化データの保護を解除し、前記第２の保護化データに係る期待値と、セキュアブート後に前記累積手段により保持されている累積値とが一致するか否か判定し、一致する場合にのみ前記第２の保護化データに係る前記起動用データを出力する保護解除ステップと、前記起動用データが出力された場合に、前記第１の保護化データについて、前記起動用データを、前記更新後における前記特定のプログラムの起動直前に前記累積手段により保持されている累積値の期待値とともに再保護する再保護ステップとをコンピュータに実行させる。
【００２８】
本発明の一実施態様である記録媒体は、複数のプログラムをそれぞれの完全性を検証しながら予め定めた順番で起動するセキュアブートを実行する情報処理装置に用いられる情報処理プログラムを記憶するコンピュータ読み取り可能な記録媒体であって、前記情報処理装置は、前記複数のプログラムを実行する実行手段と、プログラムが起動される毎に、起動されたプログラムの特徴情報を生成して累積し、得られた累積値を保持する累積手段と、特定のプログラムが起動に使用する起動用データを、当該プログラムの起動直前に前記累積手段により保持されている累積値の期待値とともに保護した第１の保護化データと、前記起動用データを、セキュアブート後に前記累積手段により保持されている累積値の期待値とともに保護した第２の保護化データとを保持する記憶手段とを備えており、前記情報処理プログラムは、セキュアブート後に、前記特定のプログラムより起動順が先のプログラムの更新を行う場合に、前記第２の保護化データの保護を解除し、前記第２の保護化データに係る期待値と、セキュアブート後に前記累積手段により保持されている累積値とが一致するか否か判定し、一致する場合にのみ前記第２の保護化データに係る前記起動用データを出力する保護解除ステップと、前記起動用データが出力された場合に、前記第１の保護化データについて、前記起動用データを、前記更新後における前記特定のプログラムの起動直前に前記累積手段により保持されている累積値の期待値とともに再保護する再保護ステップとをコンピュータに実行させる。
【００２９】
この態様によれば、セキュアブート完了後に保護化データを使用するプログラムが更新される場合であっても、保護解除ステップによる、第２の保護化データに係る起動用データの出力は、セキュアブート後の累積値と期待値との一致を条件としているので、保護解除ステップは、セキュアブート完了後に第２の保護化データの保護を解除して起動用データを出力することができ、前記情報処理装置はリブートすることなく、起動用データの更新、再保護をすることができる。
【００３０】
本発明の一実施態様である集積回路は、複数のプログラムをそれぞれの完全性を検証しながら予め定めた順番で起動するセキュアブートを実行する情報処理装置に用いられる集積回路であって、前記複数のプログラムを実行する実行手段と、プログラムが起動される毎に、起動されたプログラムの特徴情報を生成して累積し、得られた累積値を保持する累積手段と、特定のプログラムが起動に使用する起動用データを、当該プログラムの起動直前に前記累積手段により保持されている累積値の期待値とともに保護した第１の保護化データと、前記起動用データを、セキュアブート後に前記累積手段により保持されている累積値の期待値とともに保護した第２の保護化データとを保持する記憶手段と、セキュアブート後に、前記特定のプログラムより起動順が先のプログラムの更新を行う場合に、前記第２の保護化データの保護を解除し、前記第２の保護化データに係る期待値と、セキュアブート後に前記累積手段により保持されている累積値とが一致するか否か判定し、一致する場合にのみ前記第２の保護化データに係る前記起動用データを出力する保護解除手段と、前記起動用データが出力された場合に、前記第１の保護化データについて、前記起動用データを、前記更新後における前記特定のプログラムの起動直前に前記累積手段により保持されている累積値の期待値とともに再保護する再保護手段とを備える。
【００３１】
この態様によれば、セキュアブート完了後に保護化データを使用するプログラムが更新される場合であっても、保護解除手段による、第２の保護化データに係る起動用データの出力は、セキュアブート後の累積値と、期待値との一致を条件としているので、保護解除手段は、セキュアブート完了後に第２の保護化データの保護を解除して起動用データを出力することができ、前記情報処理装置はリブートすることなく、起動用データの更新、再保護をすることができる。
以下、本発明の実施の形態について、図面を参照しながら説明する。
１．実施の形態１
１．１．システム概要
図１は、実施の形態１に係る情報処理システム１の構成の概略を示す図である。
【００３２】
情報処理システム１は、情報処理端末１０と更新プログラム配信サーバ１１とが、ネットワーク１５を介して接続されて成る。本実施の形態では、情報処理端末１０及び更新プログラム配信サーバ１１は、具体的にはパーソナルコンピュータである。また、ネットワーク１５は具体的にはインターネットである。
【００３３】
情報処理端末１０は、ＩＰＬ（Ｉｎｉｔｉａｌ  Ｐｒｏｇｒａｍ  Ｌｏａｄｅｒ）１０１、ＯＳローダ１０２、ＯＳ１０３の各プログラム、及びプログラムそれぞれに対応するプログラム証明書を保持しており、電源ＯＮの後、ＩＰＬ１０１、ＯＳローダ１０２、ＯＳ１０３の順にセキュアブートする。セキュアブートにおいては、各プログラムの完全性、情報処理端末１０全体の完全性を、対応するプログラム証明書を用いて検証しつつブートする。完全性が維持できている場合には、情報処理端末１０は、具備するセキュアモジュール内の環境情報レジスタに、ブートするプログラムのハッシュ値を累積処理（以下、Ｅｘｔｅｎｄ処理という。）する。
【００３４】
ここで、ＩＰＬ、ＯＳローダ、ＯＳ等は、プログラム上の不具合等を改修するために更新されることがある。更新用のＩＰＬ、ＯＳローダ、ＯＳ等は、更新プログラム配信サーバ１１によって、更新用のプログラムに対応するプログラム証明書と共に情報処理端末１０に送信される。
【００３５】
更新プログラム配信サーバ１１は、期待値データベース１２と、証明書データベース１３と、更新プログラムデータベース１４を有している。
更新プログラムデータベース１４には、情報処理端末１０についての更新用プログラムが記録されている。証明書データベース１３には、更新用プログラムと共に配布されるプログラム証明書が記録されている。期待値データベース１２には、セキュアブートにおいてプログラムが起動したときに環境情報レジスタが保持しているものと期待されるハッシュ値（期待値）が記録されている。更新モジュール配信サーバ１１は、情報処理端末１０に対し、環境情報レジスタが保持しているハッシュ値（環境情報）の送信を要求し、その応答として情報処理端末１０から送信される環境情報を得る。そして環境情報と、期待値データベース１２に登録されている期待値とを比較し、比較結果が等しければ情報処理端末１０が正規の端末であると判断する。更新プログラム配信サーバ１１は、正規の端末であると判断できた端末にのみ、更新プログラムや、コンテンツ等を送信する。この機能は、ＴＣＧにおけるＡｔｔｅｓｔａｔｉｏｎ処理に相当する。
【００３６】
次に、情報処理端末１０によるセキュアブートについて、図２を用いてより具体的に説明する。
図２に示すように、本実施の形態では、セキュアブートの過程を環境情報レジスタの値が更新されるまでの区間を１つのステージとした６つのステージ（図２中のステージ０〜５）に分けている。この各ステージにおいて、情報処理端末１０全体の完全性が検証される。
【００３７】
ステージ０〜２ではＩＰＬ１０１がブート処理を実行し、ステージ３、４ではＯＳローダ１０２がブート処理を実行し、ステージ５ではＯＳ１０３がブート処理を実行する。ブート処理において、ＩＰＬ１０１、ＯＳローダ１０２、ＯＳ１０３のそれぞれは、暗号化（シール）されている各プログラムに固有のデータを復号（シール解除）して用いる。具体的には、ＩＰＬ１０１は、ステージ１のブート処理においてデータ１（３１１）を使用する。ステージ１のブート処理が終了すれば、ＩＰＬ１０１はデータ１を破棄する。また、ＯＳローダ１０２は、ステージ３のブート処理においてデータ２（３２１）を使用する。そしてステージ３のブート処理が終了すれば、ＯＳローダ１０２はデータ２を破棄する。また、ＯＳ１０３は、ステージ５のブート処理においてデータ３（３３１）を使用する。そしてステージ５のブート処理が終了すれば、ＯＳ１０３はデータ３を破棄する。
【００３８】
ここで、データ１は、通常用シールデータ３１０、更新用シールデータ３４０の２種類のシールデータとしてシールされている。
そして、通常用シールデータ３１０は、シール解除条件として、ステージ１の環境情報レジスタ期待値３１２を含んでいる。
【００３９】
セキュアモジュールは、現に環境情報レジスタに保持されている値と、シール解除条件に設定された値とが一致する場合に、シール解除されたデータを出力するよう構成されている。よって、ＩＰＬ１０１は、環境情報レジスタに保持されている値と、シール解除条件として設定されたステージ１の環境情報レジスタ期待値３１２とが一致する場合に、シール解除された固有のデータ１（３１１）を得ることができる。
【００４０】
ここで、固有のデータに対し、２種類のシールデータを保持しているのは、セキュアブート完了後には、ＩＰＬ１０１に対する環境情報レジスタの値が、ＩＰＬ１０１のブート以後にブートするＯＳローダ１０２、ＯＳ１０３等によるＥｘｔｅｎｄで変更されてしまい、ＩＰＬ１０１に対する環境情報レジスタの値を得ることができなくなり得るからである。この場合、通常用シールデータ３１０のみ保持していては、ＩＰＬが使うシールデータをシール解除することはできない。そのため、情報処理端末１０は、通常用シールデータ１（３１０）と共に、通常用シールデータ１に対応する更新用シールデータ１（３４０）を保持している。更新用シールデータは、シール解除条件に、セキュアブート完了後のハッシュ値を設定したものである。通常用シールデータと更新用シールデータとは、シール解除条件以外のデータに違いはない。
【００４１】
更新用シールデータに設定されているシール解除条件の値は、セキュアブート完了後であっても得ることができるので、情報処理端末１０は、セキュアブート完了後であっても、ＩＰＬが使うシールデータをシール解除することができることになる。
【００４２】
また、ＯＳローダ１０２は、ステージ３の環境情報レジスタ期待値３２２をシール解除条件としてデータ２（３２１）をシール処理した通常用シールデータ２（３２０）をセキュアブート中に利用する。ＯＳ１０３は、ステージ５の環境情報レジスタ期待値３３２をシール解除条件としてデータ３（３３１）をシール処理した通常用シールデータ３（３３０）をセキュアブート中に利用することを示している。
【００４３】
情報処理端末１０は、ＯＳローダ１０２について通常用シールデータ３２０、更新用シールデータ３５０を保持しており、ＯＳ１０３について通常用シールデータ３３０、更新用シールデータ３６０を保持しており、ＯＳローダ１０２、ＯＳ１０３についてもＩＰＬ１０１の場合と同様に処理する。
【００４４】
次に、本実施の形態についてより詳細に説明する。
１．２．構成
図３は、情報処理端末１０の構成を示すブロック図である。
【００４５】
情報処理端末１０は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１００、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１１０、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１２０、プログラム格納部１３０、プログラム更新制御部１４０、シールデータ制御部１５０、シールデータ依存リスト格納部１６０、シールデータ格納部１７０、シール鍵格納部１８０、証明書格納部１９０、セキュアモジュール２０を含んで構成され、これらはバス１０５で接続されている。
【００４６】
ＲＯＭ１２０は、ＩＰＬ１０１を格納している。
プログラム格納部１３０は、Ｆｌａｓｈメモリ等の不揮発性メモリであり、ＯＳローダ１０２、ＯＳ１０３、アプリケーション１０４などのプログラムを格納している。
【００４７】
証明書格納部１９０は、ＩＰＬ１０１、ＯＳローダ１０２、ＯＳ１０３等のプログラムに対応するプログラム証明書を格納している。
図４は、プログラム証明書のデータ構造を示す図である。
【００４８】
プログラム証明書は、証明書識別子９０１、環境情報期待値９０２、Ｅｘｔｅｎｄ先レジスタ番号９０３、Ｅｘｔｅｎｄ値９０４、及び署名９０５を含んで構成される。証明書識別子９０１は、自プログラム証明書が、どのプログラムの証明書であるかを識別するための識別情報である。環境情報期待値９０２は、セキュアブート処理において、自プログラムが起動する直前に、セキュアモジュール２０における環境情報レジスタに記録されているべき値を示す。本実施の形態では、セキュアモジュールは、詳細は後述するがＮ個の環境情報レジスタ１〜Ｎを具備しているので、環境情報期待値９０２は、各環境情報レジスタに対応する環境情報期待値１〜Ｎを含んでいる。Ｅｘｔｅｎｄ値９０４は、Ｅｘｔｅｎｄ処理時に、環境情報レジスタ２７１にＥｘｔｅｎｄする値を示す。Ｅｘｔｅｎｄ先レジスタ番号９０３は、Ｅｘｔｅｎｄ値９０４に記載されている値をＥｘｔｅｎｄ処理すべき環境情報レジスタを示す。例えば、Ｅｘｔｅｎｄ先番号９０３の値が１であれば、セキュアモジュールは、Ｅｘｔｅｎｄ処理において環境情報レジスタ１にＥｘｔｅｎｄ値９０４をＥｘｔｅｎｄすることになる。署名９０５は、証明書識別子９０１、環境情報期待値９０２、Ｅｘｔｅｎｄ先レジスタ番号９０３及びＥｘｔｅｎｄ値９０４に対するデジタル署名である。署名９０５は、一例としてＲＳＡや楕円暗号の公開鍵暗号系の秘密鍵を利用して生成することができる。
【００４９】
図５は、プログラム証明書の具体例を示す図である。図５（ａ）は、ＩＰＬ１０１に対応するプログラム証明書であるＩＰＬ証明書（１０１０、１０１１）を示す。図５（ｂ）は、ＯＳローダ１０２に対応するプログラム証明書であるＯＳローダ証明書（１０２０、１０２１）を示す。図５（ｃ）は、ＯＳ１０３に対応するプログラム証明書であるＯＳ証明書（１０３０、１０３１）を示す。図中のプログラム証明書間の矢印は、セキュアブート処理において証明書が利用される順を示す。例えば、ＩＰＬ証明書についてみると、矢印はＩＰＬ証明書１０１０からＩＰＬ証明書１０１１へと向いており、これは、ＩＰＬ証明書１０１０が用いられた後にＩＰＬ証明書１０１１が用いられることを示す。
【００５０】
ＩＰＬ証明書１０１０には、証明書識別子としてＩＰＬ＿ＣＥＲＴ１が設定されている。また、環境情報期待値として、ステージ０の環境情報期待値が設定されている。また、Ｅｘｔｅｎｄ先レジスタ番号として値１が設定されている。また、Ｅｘｔｅｎｄ値として、ＳＨＡ１（ＩＰＬ）が設定されている。ここで「ＳＨＡ１（ＸＸ）」の記載は、モジュールＸＸのＳＨＡ１のハッシュ値を示すものとする。ＳＨＡ１（ＩＰＬ）は、ＩＰＬ１０１のＳＨＡ１のハッシュ値を示す。また、署名には、「ＩＰＬ＿ＣＥＲＴ１」、「ステージ０の環境情報期待値」、「１」、「ＳＨＡ１（ＩＰＬ）」に対するデジタル署名が設定されている。ＩＰＬ証明書１０１１、ＯＳローダ証明書１０２０、１０２１、ＯＳ証明書１０３０、１０３１の内容については、ＩＰＬ証明書１０１０の同様であるので、説明を省略する。
【００５１】
プログラム更新制御部１４０は、プログラム格納部１３０に記憶されるプログラムの更新を制御する。
プログラム更新制御部１４０は、更新プログラム配信サーバ１１からプログラムの更新要求を受け付ける。次に、プログラム更新制御部１４０は、更新プログラム配信サーバ１１から更新用のプログラム、更新用のプログラムに対応するプログラム証明書を受け取る。そして、受け取った更新用のプログラムをプログラム格納部１３０に記憶させ、プログラム証明書を証明書格納部１９０に記憶させる。プログラムの更新を行った場合、プログラム更新制御部１４０は、シールデータ制御部１５０にシールデータの更新を要求する。
【００５２】
シールデータ制御部１５０は、シールデータに対する処理を制御する。例えば、シールデータ制御部１５０は、シールデータの更新要求を受け付けるとシールデータの更新処理を行う。
【００５３】
シールデータ格納部１７０は、シール処理されたデータ（以降、シールデータと略す）を格納する。ここで、シールデータについて詳細に説明する。
図６は、シールデータのデータ構造を示したものである。
【００５４】
シールデータは、期待値１から期待値Ｎ（５０２）と、期待値５０２のサイズを示す環境情報サイズ５０１と、シール対象データ５０４と、シール対象データ５０４のデータサイズ５０３と、認証情報期待値５０５とを含んで構成される。期待値５０２は、シール解除されたデータの使用を許可する条件を示す。具体的には、シール解除されたデータの使用を許可するために各環境情報レジスタに格納されているべき値の期待値である。例えば、セキュアモジュール２０は、シールデータをシール解除した後、環境情報レジスタ１〜Ｎに現に格納されている値と期待値１〜Ｎ（５０２）とが一致する場合にシール解除されたデータをセキュアモジュール２０外に出力することでシール解除されたデータの使用を許可する。認証情報期待値５０５は、環境情報サイズ５０１と期待値５０２とシール対象データサイズ５０３とシール対象データ５０４とから生成されている。認証情報値５０５は、ＨＭＡＣ−ＳＨＡ１の値とする。ＨＭＡＣ−ＳＨＡ１の計算に使うＨＭＡＣ鍵の値は、ユーザーから入力されたパスワードから生成した値としてもよいし、予めシール鍵格納部１７０にルート鍵などで暗号化して保持しておいてもよい。また、環境情報サイズ５０１と期待値５０２とシール対象データサイズ５０３とシール対象データ５０４は、シールデータ公開鍵（４１１、４２１、４３１）で暗号化されている。なお、図６には図示していないが、各シールデータを識別するための情報としてシールデータ識別情報を持たせても良い。
【００５５】
図７は、シールデータの具体例を示す図である。
図７（ａ）は通常用シールデータ３１０、図７（ｂ）は更新用シールデータ３４０を示している。通常用シールデータ３１０と更新用シールデータ３４０の違いは、環境情報格納情報レジスタ５０４に格納される値である。通常用シールデータの環境情報レジスタの期待値３１２（図６の５０２に対応）は、シール解除条件として「セキュアブート途中の環境情報レジスタに格納されるべき期待値」が設定され、更新用シールデータの環境情報レジスタの期待値３４２（図６の５０２に対応）は、シール解除条件として「セキュアブート完了状態の環境情報レジスタに格納されるべき期待値」が設定される。また、通常用シールデータ３１０のシールデータ対象データ３１２（図６の５０４に対応）と、更新用シールデータ３４０のシールデータ対象データ３４２（図６の５０４に対応）は同一のデータが格納されている。通常用シールデータ（３２０、３３０）は、通常用シールデータ３１０と同様のデータであり、更新用シールデータ（３５０、３６０）も、更新用シールデータ３４０と同様のデータであるため、これらの詳細説明は省略する。
【００５６】
ここで、シールデータの期待値５０２は、全レジスタに対応する期待値を保持してもよいし、一部のレジスタについての期待値を保持してもよい。
図８は、セキュアブート完了状態の期待値１３００をシール解除条件とした更新用シールデータの例である。
【００５７】
図８（ａ）は、セキュアブート完了状態の期待値１３００の全てのレジスタをシール解除条件とした場合の更新シールデータの例を示している。更新シールデータ１５１０の期待値１５１２（図６の５０２に相当）には、セキュアブートが完了したときの期待値であるＲｅｇ１３、Ｒｅｇ２３、Ｒｅｇ３０が設定されている。また、図８（ｂ）はセキュアブート完了状態の期待値１３００の一部のレジスタをシール解除条件とした場合の例を示している。更新シールデータ１５２０の期待値１５２２（図６の５０２に相当）には、環境情報レジスタＲｅｇ２２のみが設定されている。このようにセキュアブート完了状態の環境格納レジスタ期待値１３００の少なくとも１つ以上のレジスタを更新用シールデータのシール解除条件としてもよい。この場合セキュアブートが正常に完了した環境でのみシール解除ができる。したがって、データの使用を正しい実行環境下のみに制限し、データが改ざんされたプログラム等によって不正に使用されるのを防ぐことができる。
【００５８】
また、プログラムのハッシュ値は、プログラムが更新されると変化してしまう。したがって、更新されたプログラム以降にブートするプログラムのハッシュ値の期待値をシール解除条件としている全てのデータを新しいハッシュ値の期待値を使ってシールし直さなくてはならない。これに対し、図８（ｂ）のＲｅｇ２３に例えば図５のＯＳ証明書１０３１のＥｘｔｅｎｄ値であるＳＨＡ１（”ＯＳ  ｄｏｎｅ”）のような文字列のハッシュ値を設定しておけば、プログラムが更新されてもＲｅｇ２３のハッシュ値を変更する必要はない。したがって、データを、新しいハッシュ値を使ってシールし直す必要がなくなる。これにより、プログラムの更新にかかる手間を大きく省略することができる。
【００５９】
シールデータ依存リスト格納部１６０は、シールデータと証明書の関係を示す情報であるシールデータ依存リストを格納する。
シールデータ依存リストは、セキュアブート対象のプログラムが更新される場合に、この更新処理に伴っていずれのシールデータを更新すべきかを判断するために利用される。
【００６０】
図９は、シールデータ依存リスト１６００を示す図である。
シールデータ依存リスト１６００は、シールデータ識別情報１６０１と、プログラム証明書識別情報１６０２とを含んで構成される。シールデータ識別情報１６０１は、シールデータを識別するための情報である。本実施の形態では、シールデータ識別情報１６０１は、シールデータにおける認証情報期待値５０５と同等の情報が用いられている。証明書識別情報１６０２は、プログラム証明書を識別するための情報である。本実施の形態では、一例として、プログラム証明書中に記載されている証明書識別子９０１を用いている。セキュアブート対象のプログラムが更新される場合、更新対象のプログラムと、そのプログラム更新に伴い、そのプログラムに対応するプログラム証明書も同時に更新する必要がある。さらに、その更新対象のプログラムのハッシュ値に依存した期待値を保有している証明書も同時に更新する必要がある。
ここで、図５の例で説明すると、ＩＰＬ１０１が更新される場合は、ＩＰＬ１０１のモジュールのＳＨＡ１（ＩＰＬ）の値が変わるので、ＩＰＬ証明書１０１１が利用されるセキュアブート処理以降に利用されるプログラム証明書で、かつ期待値９０２に環境情報期待値レジスタ１（１２０１）に依存する値を保有する証明書を更新する必要がある。したがって、更新プログラム配信サーバ１１は、更新対象のプログラムと共に更新により必要となるプログラム証明書も同時に配布する。
【００６１】
ここで、図９に示す更新されるプログラムと、それに伴い更新すべきシールデータの関係について補足説明する。
ＩＰＬ証明書１０１０が更新されるときには、ステージ１の期待値（３１２）も更新されなければならないので、ステージ１の期待値（３１２）がシール解除条件となっている通常用シールデータ１（３１０）は更新される必要があることを示している。
【００６２】
また、ＯＳローダ証明書１０２０が更新されるときには、ステージ３の期待値（３２２）も更新されなければならないので、ステージ３の期待値（３２２）がシール解除条件となっている通常用シールデータ２（３２０）は更新される必要があることを示している。
【００６３】
また、ＯＳ証明書１０３０が更新されるときには、ステージ５の期待値（３３２）も更新されなければならないので、ステージ５の期待値（３３２）がシール解除条件となっている通常用シールデータ３（３３０）は更新される必要があることを示している。
【００６４】
以上で、シールデータ依存リストの説明を終える。
シール鍵格納部１８０は、シールデータの暗復号に利用する鍵を記憶する。
図１０は、図２における通常用シールデータと更新用シールデータを生成する処理（シール処理）または、シール解除する処理に利用するシールデータ鍵ペアを示す模式図である。
【００６５】
セキュアモジュール２０内の鍵格納部２６０には、ルート鍵ペア４００が格納される。
ルート鍵ペア４００は、ルート秘密鍵４０１とルート公開鍵４０２から成る。ここで、ルート公開鍵４０２は、鍵格納部２６０に格納されているものとしているが、一般に公開鍵は秘匿性を要求されないので、セキュアモジュール２０外のシール鍵格納部２６０に格納してもよい。
【００６６】
シール鍵格納部１８０は、シールデータ格納部１７０の通常用シールデータ（３１０、３２０、３３０）と更新用シールデータ（３４０、３５０、３６０）のシール処理やシール解除処理に利用する鍵を格納する。
【００６７】
シールデータ１鍵ペア（４１０）は、通常用シールデータ１（３１０）と更新用シールデータ１（３４０）をシールデータ生成処理およびシール解除処理に利用する鍵ペアであり、シールデータ秘密鍵４１１とシールデータ公開鍵４１２ペアからなる。シールデータ公開鍵４１１は、通常用シールデータ１（３１０）と更新用シールデータ１（３４０）を生成する際に利用される。また、シールデータ秘密鍵４１２は、通常用シールデータ１（３１０）と更新用シールデータ１（３４０）をシール解除する際に利用される。
【００６８】
シールデータ２鍵ペア（４２０）は、通常用シールデータ２（３２０）と更新用シールデータ２（３５０）をシールデータ生成処理およびシール解除処理に利用する鍵ペアであり、シールデータ秘密鍵４２１とシールデータ公開鍵４２２ペアからなる。シールデータ公開鍵４２１は、通常用シールデータ２（３２０）と更新用シールデータ２（３５０）を生成する際に利用される。また、シールデータ秘密鍵４２２は、通常用シールデータ２（３２０）、更新用シールデータ２（３５０）をシール解除する際に利用される。
【００６９】
シールデータ３鍵ペア（４３０）は、通常用シールデータ３（３３０）と更新用シールデータ３（３６０）をシールデータ生成処理およびシール解除処理に利用する鍵ペアであり、シールデータ秘密鍵４３１とシールデータ公開鍵４３２ペアからなる。シールデータ公開鍵４３１は、通常用シールデータ３（３３０）、更新用シールデータ３（３６０）を生成する際に利用される。また、シールデータ秘密鍵４３２は、通常用シールデータ３（３３０）、更新用シールデータ３（３６０）をシール解除する際に利用される。
【００７０】
ここで、シールデータ秘密鍵（４１２、４２２、４３２）は、ルート秘密鍵４０２で暗号化された状態でシール鍵格納部１８０に格納される。シール解除処理する際には、セキュアモジュール２０に暗号化されたシールデータ秘密鍵（４１２、４２２、４３２）を復号するように要求し、復号された平文のシールデータ秘密鍵（４１２、４２２、４３２）は、セキュアモジュール２０の鍵格納部１７０にセットされる。
【００７１】
このようにすることで、平文のシールデータ秘密鍵は、セキュアモジュール内で利用されるため、安全性が高まることになる。また、この仕組みはセキュアモジュール２０がＴＰＭ機能を備えるのであれば、ＴＣＧのＰｒｏｔｅｃｔｅｄ  Ｓｔｏｒａｇｅ機能として実現してもよい。
【００７２】
セキュアモジュール２０は、耐タンパ性を有するモジュールであり、コマンドＩ／Ｏ（２１０）と、測定処理部２３０と、暗号処理部２４０と、鍵格納部２６０と、検証処理部２２０と、環境情報格納部２７０と、シール処理部２５０から構成される。
【００７３】
コマンドＩ／Ｏ（２１０）は、セキュアモジュール２０に対するコマンドの受付けやコマンド結果の出力を行う。
測定処理部２３０は、ＳＨＡ１、ＳＨＡ２５６やＨＭＡＣ−ＳＨＡ１などの鍵付きハッシュ演算を行う。また、測定処理部２３０は、Ｅｘｔｅｎｄ処理を実行する。
【００７４】
暗号処理部２４０は、ＲＳＡや楕円暗号などの公開鍵暗号処理や、ＡＥＳなど共通鍵暗号処理を行う。
鍵格納部２６０は、暗号処理部２４０の暗復号に利用する鍵や、測定処理部２３０の鍵付きハッシュ関数などで利用する鍵を格納する。
【００７５】
検証処理部２２０は、測定処理部２３０にて得られた値を利用して測定対象データの完全性を検証する。
環境情報格納部２７０は、環境情報を格納するＮ個の環境情報レジスタ１（２７１）〜環境情報レジスタＮ（２７２）を備え、起動されたプログラムの環境情報を記憶する。本実施の形態では、Ｎ＝３であり、環境情報格納部２７０は、環境情報レジスタ１（１２０１）、環境情報レジスタ２（１２０２）、環境情報レジスタ３（１２０３）を備えるものとする。
【００７６】
シール処理部２５０は、シール処理（Ｓｅａｌ）やシール解除処理（Ｕｎｓｅａｌ）を行う。シール処理とは、保護対象データを端末の環境情報期待値と共にセキュアモジュール２０に対しシール処理として指示されたシール公開鍵で暗号化し、シールデータを生成する処理である。一方、シール解除処理とは、シールデータをシールデータ秘密鍵で復号し、復号により得られたシール解除条件として設定されている環境情報値と、セキュアモジュール２０内の環境情報レジスタ２７０に格納されている値とを比較し、等しければシール解除処理が成功したとして復号により得られた平文の保護対象データを出力する処理である。また、シール解除処理で利用する秘密鍵は、通常、セキュアモジュール２０内の鍵格納部２６０に記憶されているルート鍵ペア４００のルート公開鍵４０１で暗号化された状態で、セキュアモジュール２０外のシール鍵格納部１８０に記憶されている。したがって、シール解除処理の前に、シールデータ制御部１５０は、セキュアモジュール２０に対しシール鍵格納部１８０に格納されており暗号化された状態のシールデータ秘密鍵の復号処理要求をする。復号処理要求を受け付けると、暗号処理部２４０がルート鍵秘密鍵４０２を用いて暗号化シールデータ秘密鍵を復号し、復号されたシールデータ秘密鍵が鍵格納部２６０にロードされるものとする。ここで、シール処理、シール解除処理の詳細について、図１１、図１２を用いて説明する。
【００７７】
図１１は、シールデータを生成するためのシール処理を示すフローチャートである。
シール要求元のプログラムは、セキュアモジュール２０に対し、自プログラムのプログラム証明書に含まれる期待値と、シール対象データと、シールデータ公開鍵とを入力パラメータとして、コマンドＩ／Ｏ（２１０）を介して、シール処理コマンドを要求する（Ｓ６０１）。セキュアモジュール２０のシール処理部２５０は、入力された期待値を、シールデータにおける期待値５０２としてセットし、入力されたシール対象データをシールデータにおけるシール対象データ５０４としてセットする。そして、シール処理部２５０は、環境情報サイズと、シール対象データとを算出して、それぞれの算出結果をシールデータにおける環境情報サイズ５０１、シール対象データ５０４にセットする。そして、測定処理部２３０を利用して認証情報期待値５０５を生成する（Ｓ６０２）。次に、シール処理部２５０は、暗号処理部２４０を利用して、シールデータにおける環境情報サイズ５０１、期待値５０２、シール対象データサイズ５０３、及びシール対象データ５０４の部分を、Ｓ６０１で入力されたシールデータ公開鍵で暗号化する（Ｓ６０３）。次に、セキュアモジュール２０は、コマンドＩ／Ｏ（２１０）を介して、シールデータを出力する（Ｓ６０４）。なお、セキュアモジュール２０がＴＣＧで規定されるＴＰＭもしくはＭＴＭで実現されている場合、シール生成処理のコマンドはＴＰＭ＿Ｓｅａｌとして実現される。
【００７８】
図１２は、シールデータを解除するためのシール解除処理を示すフローチャートである。
図１２中に、図示してはいないが、シール解除の前処理として、セキュアモジュール２０は、シール解除する対象データに対応する暗号化されたシールデータ秘密鍵（４１２、４２２、４３２）をルート秘密鍵４０２により復号し、復号された結果である平文の鍵を、セキュアモジュール２０の鍵格納部１７０にセットしておくものとする。その後、シール要求元のプログラムは、セキュアモジュール２０のコマンドＩ／Ｏ（２１０）を介して、セキュアモジュール２０に対しシールデータの解除コマンドを要求する（Ｓ７０１）。次に、セキュアモジュール２０のシール処理部２５０は、シールデータの環境情報サイズ５０１、期待値５０２、シール対象データサイズ５０３、及びシール対象データ５０４の領域をシールデータ秘密鍵で復号する（Ｓ７０２）。次に、Ｓ７０２で復号されたシールデータ構造の５０１から５０４のデータから認証情報を算出する。ここで算出された認証情報と、認証情報期待値５０５が等しいかを比較する（Ｓ７０３）。Ｓ７０３において「等しくない」と判定されれば、セキュアモジュール２０がエラーを出力する（Ｓ７０６）。一方、Ｓ７０３において「等しい」と判定されれば、Ｓ７０４へ処理を移す。次に、シール処理部２５０は、復号された期待値５０２と、セキュアモジュール２０内の環境情報レジスタに格納されている現時点の値を比較する（Ｓ７０４）。Ｓ７０４において「等しくない」と判定されれば、セキュアモジュール２０がエラーを出力する（Ｓ７０６）。一方、Ｓ７０４において「等しい」と判定されれば、Ｓ７０５へ処理を移す。次に、セキュアモジュール２０は、コマンドＩ／Ｏ（２１０）を介して、復号された平文のシール対象データ５０４を出力してシール解除処理が終了する（Ｓ７０５）。
【００７９】
なお、セキュアモジュール２０がＴＣＧで規定されるＴＰＭもしくはＭＴＭで実現されている場合、シール解除処理のコマンドはＴＰＭ＿ＵｎＳｅａｌとして実現される。
１．３．動作
上述の様に構成された情報処理システム１の動作について、特に情報処理端末１０における処理を中心としてフローチャートを用いて説明する。
【００８０】
情報処理端末１０の処理は、（１）セキュアブート処理と、セキュアブート後にプログラムが更新された場合に行われる（２）プログラム更新時の処理に大別される。また、セキュアブート処理は、（ａ）セキュアブート完了時の期待値生成処理と、（ｂ）シールデータ依存リストの作成処理と、（ｃ）シール更新処理とを含む。セキュアブート完了時の期待値生成処理は、シール更新処理に用いられるセキュアブート完了時の期待値を生成する処理である。シール更新処理は、セキュアブートにおいて、シールデータを各プログラムがシール解除して用い、そのシール解除されたデータが更新された場合に、シールデータ等を更新する処理である。
【００８１】
以下では、まず、（ａ）セキュアブート完了時の期待値生成処理と、（ｂ）シールデータ依存リストの作成処理とについて説明し、次に、（１）セキュアブート処理とともに（ｃ）シール更新処理について説明し、最後にプログラム更新処理について説明する。
１．３．１．セキュアブート完了状態の期待値の生成
図１３は、セキュアブート完了状態における期待値１３００を生成するための手順を示すフローチャートである。
【００８２】
この処理により生成される期待値は、後述の更新用シールデータの生成に用いられる。
測定処理部２３０は、まず、セキュアブート完了状態の期待値１３００を０で初期化し、ステージの番号を示す内部変数ｉを０でセットする（Ｓ１４０１）。
【００８３】
測定処理部２３０は、ステージｉの期待値が設定されているプログラム証明書を探索し、発見したプログラム証明書中の期待値９０２の値を参照し、現在記憶している期待値１３００の値と異なっていれば、期待値９０２の値で期待値１３００の値を更新する（Ｓ１４０２）。次に、Ｓ１４０２で参照したプログラム証明書がセキュアブートの最後に利用される証明書か否かを判断する（Ｓ１４０３）。Ｓ１４０３において、セキュアブートの最後に利用される証明書であると判断した場合（Ｓ１４０３：ＹＥＳ）、Ｓ１４０５へ処理を移し、セキュアブートの最後に利用されるプログラム証明書でないと判断した場合（Ｓ１４０３：ＮＯ）、Ｓ１４０４処理を移す。ここで、各プログラム証明書がどのステージで利用されるかについては、プログラム証明書とその証明書が利用されるステージの対応関係を示す証明書リスト（不図示）を証明書格納部１９０に格納しておくものとする。例えば、この証明書リストは、証明書の識別情報と、ステージ番号から構成されるリストとして実現される。Ｓ１４０２、Ｓ１４０３では、この証明書リストを参照することで証明書の判断が可能となる。次に、ステージ番号を示すｉをインクリメントし（Ｓ１４０４）、Ｓ１４０２の処理へ移る（Ｓ１４０５）。Ｓ１４０３の結果、セキュアブートで最終利用される証明書（図５の例におけるＯＳ証明書１０３１）であるならば、セキュアブート最終利用される証明書のＥｘｔｅｎｄ値９０４を用いて、Ｅｘｔｅｎｄ先レジスタ番号９０３のセキュアブート完了時期待値を更新して終了する（Ｓ１４０５）。
【００８４】
ここで、セキュアブート完了状態の期待値１３００を生成する際に、セキュアブートの最後に利用される証明書であるＯＳ証明書１０３１のみでなく、全ての証明書を利用して生成する理由は、以下の通りである。各証明書に設定されている各ステージの期待値９０２には、全てのレジスタの期待値が記載されるとは限らない。仮にセキュアブート対象の最後に利用されるＯＳ証明書１０３１のステージ５の環境情報レジスタとして、全てのレジスタの期待値が列挙されていれば、ＯＳ証明書１０３１のみから、セキュアブート完了状態の期待値１３００を生成することができる。しかし、セキュアブート対象の最後に利用されるＯＳ証明書１０３１のステージ５の環境情報レジスタとして、全てのレジスタの期待値が列挙されていない場合には、ＯＳ証明書１０３１のみから、セキュアブート完了状態の期待値１３００を生成することはできない。よって、ここでは全ての証明書を参照して、セキュアブート完了状態の期待値１３００を生成することとしている。
【００８５】
証明書は、ステージによらずアクセス可能であるので、このように、証明書に設定されている各ステージの期待値９０２を利用して、セキュアブート完了状態の期待値１３００を計算することで、最終ステージに到達する前であっても、セキュアブート完了状態の期待値１３００を計算することができる。ここで、生成したセキュアブート完了状態の期待値１３００をシール解除条件として、更新用シールデータを生成することで、セキュアブートの完了前であっても、セキュアブート完了状態の期待値１３００をシール解除条件としたステージデータを生成することができる。
【００８６】
１．３．２．シールデータ依存リストの生成
シールデータ制御部１５０は、セキュアブート処理時にコールされるシール解除処理を検知し、シール解除が成功した場合に、そのステージで利用した証明書と、シール解除に成功したシールデータとを関連づけて、シールデータ依存リスト１６００に登録する。
【００８７】
以下に、シールデータ依存リストの生成について、図１４を用いて説明する。
図１４は、シールデータ依存リスト１６００を生成するためのフローチャートである。
シールデータ制御部１５０は、情報処理端末１０の電源ＯＮ時に、ＣＰＵ１００により起動指示されて起動し、現在実行中のステージを把握するために用いる内部変数ｉを０で初期化する（Ｓ１７０１）。次に、シールデータ制御部１５０は、ステージｉの処理が開始された旨の通知をＣＰＵ１００から受けとる（Ｓ１７０２）。シールデータ制御部１５０は、ステージｉにおいて、セキュアモジュール２０に対するシール解除処理の要求を検出する（Ｓ１７０３）。ここで、シール解除処理の要求の検出は、シール解除コマンドをフッキングすることで検出する。ステージｉにおいて、シール解除処理が要求されなかった場合（Ｓ１７０３：ＮＯ）は、Ｓ１７０７に処理を移す。一方、Ｓ１７０３の結果、シール解除処理が要求された場合（Ｓ１７０３：ＹＥＳ）は、Ｓ１７０４へ処理を移す。Ｓ１７０４では、セキュアモジュール２０は、図１２で説明したシール解除処理を行う（Ｓ１７０４）。シールデータ制御部１５０は、Ｓ１７０４のシール解除処理が正常に終了したか否かを判断し（Ｓ１７０５）、正常に終了しなかった場合（Ｓ１７０５：ＮＯ）は、Ｓ１７０６へ処理を移し、正常に終了した場合（Ｓ１７０５：ＹＥＳ）は、Ｓ１７０６へ処理を移す。次に、シールデータ制御部１５０は、シール解除処理に成功したシールデータを識別するシールデータ識別情報１６０１と、現在のステージで利用したプログラム証明書の証明書識別情報１６０２をシールデータ依存リストに追加する（Ｓ１７０６）。この後、シールデータ制御部１５０は、ＣＰＵ１００から、ステージｉの処理の完了を示す通知を受け取り、この通知に基づき、セキュアブートが終了したか否かを判定する（Ｓ１７０７）。完了していないと判定した場合（Ｓ１７０７：ＮＯ）、ｉを１インクリメントし（Ｓ１７０８）、Ｓ１７０２へ処理を移す。完了したと判定した場合（Ｓ１７０７：ＹＥＳ）、シールデータ依存リスト１６００の生成は終了する。
【００８８】
このように、各ステージ毎に、シール解除処理に成功したシールデータがあるか否かを確認し、シールデータ依存リスト１６００を生成する。シールデータ依存リスト１６００を参照することで、シールデータがどのステージに対応するのかを確実に管理することができる。
１．３．３．セキュアブート
以下、セキュアブートのシーケンスについて、図１５〜１７を用いて説明する。このセキュアブートシーケンスでは、図５のプログラム証明書を用いるものとする。また、セキュアブート途中で、通常用シールデータの一例として、通常用シールデータ（３１０、３２０、３３０）を利用している。
（１）ステージ０
まず、情報処理装置１０の電源がＯＮされると、セキュアモジュール２０が、セキュアブート完了時の期待値生成処理を行う（Ｓ１１０１）。
【００８９】
ＩＰＬ１０１は、セキュアモジュール２０に対し初期化を要求する（Ｓ１１０２）。
ここで、ＣＰＵ１００により実行されるＩＰＬ１０１はプログラムであり、能動的に動作するものではないが、都度、ＣＰＵ１００によりＩＰＬ１０１に含まれるＸＸ処理に係るプログラムが実行される等の受動的な表記を行うとすると説明が非常に煩雑になる。よって、以下、便宜上「ＩＰＬ１０１が、ＸＸ処理を実行する」などのように能動的に記載する。
【００９０】
初期化が要求されると、セキュアモジュール２０は、環境情報レジスタ２７１を０で初期化し（Ｓ１１０３）、ＩＰＬ１０１へ初期化処理の結果（正常終了／異常終了）を返す（Ｓ１１０４）。
【００９１】
ここで図示してはいないが、ＩＰＬ１０１は、要求した処理の結果が正常終了を示している場合に次の処理へ移る。
次に、ＩＰＬ１０１は、ＩＰＬ１０１自身のＳＨＡ１によるハッシュ値を算出し、算出したハッシュ値と、ＩＰＬ証明書１０１０のＥｘｔｅｎｄ値であるＳＨＡ１（ＩＰＬ）とを比較することでＩＰＬ１０１の完全性をチェックする（Ｓ１１０５）。比較（Ｓ１１０６）の結果、一致した場合は（Ｓ１１０６：ＹＥＳ）、完全性が維持されていると判断して次の処理に進み、一致しなかった場合（Ｓ１１０６：ＮＯ）、完全性が損なわれていると判断し、処理を終了する。
【００９２】
ＩＰＬ１０１は、セキュアモジュール２０に対し、Ｅｘｔｅｎｄ処理を要求する（Ｓ１１０７）。
Ｓ１１０７のＥｘｔｅｎｄ要求は、ステージ０の環境情報レジスタの値が期待値であるかどうかの判断処理の要求も兼ねるものとする。
【００９３】
セキュアモジュール２０は、ステージ０の環境情報レジスタの値が期待値であるかどうかの判断を、プログラム証明書１０１０内のステージ０の環境情報期待値と、Ｓ１１０４の要求を受け付けた時点の環境情報レジスタ２７１に格納されている値とを比較することで行う（Ｓ１１０８）。「両値が等しい」と判断した場合には（Ｓ１１０８：ＹＥＳ）、セキュアブートを継続する。「両値が等しくない」と判断した場合には（Ｓ１１０８：ＮＯ）、不正なモジュールが起動されているものとみなしてブート処理を中断する。
【００９４】
次に、セキュアモジュール２０は、Ｅｘｔｅｎｄ処理として、プログラム証明書１０１０内のＥｘｔｅｎｄ先レジスタ番号の値１で示される環境情報レジスタに、ＩＰＬ証明書１０１０のＥｘｔｅｎｄ値であるＳＨＡ１（ＩＰＬ）の値を累積処理する（Ｓ１１０９）。セキュアモジュール２０は、累積処理として、ＳＨＡ１のハッシュ値を連鎖処理する。このような処理をすることで、次のステージに移行する前に、現時点のステージの環境の正当性を検証することが可能となる。そして、セキュアモジュール２０は、ＩＰＬ１０１に対し、Ｅｘｔｅｎｄ完了を通知する（Ｓ１１１０）。
【００９５】
Ｅｘｔｅｎｄ完了通知は、Ｅｘｔｅｎｄ処理が完了したことを通知するとともに、環境情報レジスタ２７１の値が期待値であるか否かの判断結果の通知を兼ねている。そして、セキュアモジュール２０は、次のステージ１の状態へ移る。
【００９６】
このときＩＰＬ１０１（ＣＰＵ１００）は、次のステージへ移る旨を、シールデータ制御部１５０に通知するものとする。以下、明記しなくても、ステージが移る場合には、セキュアモジュールによるＣＰＵ１００への次のステージに移る旨の通知、ＣＰＵ１００によるシールデータ制御部１５０への次のステージに移る旨の通知は行うものとする。なお、シールデータ制御部１５０は、この通知を受けてシールデータ依存リストの作成を行っている。
（２）ステージ１
ＩＰＬ１０１は、通常用シールデータ１（３１０）のシール解除をセキュアモジュール２０に要求する（Ｓ１１１１）。セキュアモジュール２０は、シール解除が必要か否かを判定する（Ｓ１１１２）。ここで、本実施の形態では、シール解除が必要か否かの判定は、セキュアモジュール２０が、シールデータ依存リストを参照して、シール解除すべきシールデータが存在するか否かにより判定するものとする。シール解除が必要であった場合（Ｓ１１１２：ＹＥＳ）、シール解除処理を行う（Ｓ１１１３）。シール解除処理については、説明済みである。セキュアモジュール２０は、シール解除したデータをＩＰＬ１０１に送信する（Ｓ１１１４）。ＩＰＬ１０１は、セキュアモジュール２０から受け取ったデータを用いて、ＩＰＬ処理（ブート処理）を実行する（Ｓ１１１５）。ブート処理実行後、ＩＰＬ１０１は、セキュアモジュール２０に対し、Ｅｘｔｅｎｄ処理を要求する（Ｓ１１１６）。Ｓ１１１６のＥｘｔｅｎｄ要求は、ステージ１の環境情報レジスタの値が期待値であるかどうかの判断処理の要求も兼ねるものとする。
【００９７】
セキュアモジュール２０は、ステージ１の環境情報レジスタの値が期待値であるかどうかの判断を、プログラム証明書１０１０内のステージ１の環境情報期待値と、環境情報レジスタ２７１に格納されている値とを比較することで行う（Ｓ１１１７）。「両値が等しい」と判断した場合には（Ｓ１１１７：ＹＥＳ）、セキュアブートを継続する。「両値が等しくない」と判断した場合には（Ｓ１１１７：ＮＯ）、不正なモジュールが起動されているものとみなしてブート処理を中断する。
【００９８】
次に、セキュアモジュール２０は、Ｅｘｔｅｎｄ処理として、プログラム証明書１０１０内のＥｘｔｅｎｄ先レジスタ番号の値２で示される環境情報レジスタに、ステージ１のＩＰＬ証明書１０１１のＥｘｔｅｎｄ値であるＳＨＡ１（”ＩＰＬ  ｄｏｎｅ”）の値を累積処理する（Ｓ１１１８）。このような処理をすることで、次のステージに移行する前に、現時点のステージの環境の正当性を検証することが可能となる。また、ＳＨＡ１（“ＩＰＬ  ｄｏｎｅ”）は、“ＩＰＬ  ｄｏｎｅ”という文字列のＳＨＡ１ハッシュ値を示しており、ＩＰＬ１０１の処理が終了することを示すステータス情報として利用する。この値がＥｘｔｅｎｄされるということは、ＩＰＬ１０１の処理が終了したという状態をセキュアモジュール２０に残すことを意味する。
【００９９】
次に、セキュアモジュール２０は、シール更新処理を実行し（Ｓ１１１９）、Ｅｘｔｅｎｄ完了を通知する（Ｓ１１２１）。ＩＰＬ１０１は、ステージ１の完了前に、シール解除され、ブート処理に用いていたデータを破棄する（Ｓ１１２０）。なお、Ｓ１１２１と、Ｓ１１２０の順番は、入れ替わっても問題はない。そして、セキュアモジュール２０は、次のステージ２の状態へ移る。シール更新処理の詳細については、後述する。
（３）ステージ２
ＩＰＬ１０１は、ＯＳローダチェックを行う（Ｓ１１３１）。ＩＰＬ１０１は、Ｓ１１３１において具体的には、ＯＳローダ１０２のＳＨＡ１によるハッシュ値を算出する。そして、算出したハッシュ値と、ＯＳローダ証明書１０２０のＥｘｔｅｎｄ値であるＳＨＡ１（ＯＳローダ）の値と比較することでＯＳローダ１０２の完全性をチェックする。比較（Ｓ１１３２）の結果、一致した場合は（Ｓ１１３２：ＹＥＳ）、完全性が維持されていると判断して次の処理に進み、一致しなかった場合（Ｓ１１３２：ＮＯ）、完全性が損なわれていると判断し、処理を終了する。ＩＰＬ１０１は、セキュアモジュール２０に対し、Ｅｘｔｅｎｄ処理を要求する（Ｓ１１３３）。Ｓ１１３３のＥｘｔｅｎｄ要求は、ステージ２の環境情報レジスタの値が期待値であるかどうかの判断処理の要求も兼ねるものとする。セキュアモジュール２０は、ステージ２の環境情報レジスタの値が期待値であるかどうかの判断を、ＯＳローダ証明書１０２０内のステージ２の環境情報期待値と、環境情報レジスタ２７１に格納されている値とを比較することで行う（Ｓ１１３４）。「両値が等しい」と判断した場合には（Ｓ１１３４：ＹＥＳ）、セキュアブートを継続する。「両値が等しくない」と判断した場合には（Ｓ１１３４：ＮＯ）、不正なモジュールが起動されているものとみなしてブート処理を中断する。
【０１００】
次に、セキュアモジュール２０は、Ｅｘｔｅｎｄ処理として、プログラム証明書１０２０内のＥｘｔｅｎｄ先レジスタ番号の値１で示される環境情報レジスタに、ＩＰＬ証明書１０２０のＥｘｔｅｎｄ値であるＳＨＡ１（ＯＳローダ）の値を累積処理する（Ｓ１１３５）。セキュアモジュール２０は、累積処理として、ＳＨＡ１のハッシュ値を連鎖処理する。このような処理をすることで、次のステージに移行する前に、現時点のステージの環境の正当性を検証することが可能となる。そして、セキュアモジュール２０は、ＩＰＬ１０１に対し、Ｅｘｔｅｎｄ完了を通知する（Ｓ１１３６）。Ｅｘｔｅｎｄ完了通知は、Ｅｘｔｅｎｄ処理が完了したことを通知するとともに、環境情報レジスタ２７１の値が期待値であるか否かの判断結果の通知を兼ねている。ＩＰＬ１０１は、ＯＳローダ１０２に対し実行指示を送信する（Ｓ１１３７）。そして、セキュアモジュール２０は、次のステージ３の状態へ移る。
（４）ステージ３
実行指示に従い、ＯＳローダ１０２は動作を開始する。ＯＳローダ１０２は、通常用シールデータ２（３２０）のシール解除処理をセキュアモジュール２０に要求する（Ｓ１１４１）。セキュアモジュール２０は、シール解除が必要か否かを判定する（Ｓ１１４２）。ここで、本実施の形態では、シール解除が必要か否かの判定は、セキュアモジュール２０が、シールデータ依存リストを参照して、シール解除すべきシールデータが存在するか否かにより判定するものとする。シール解除が必要であった場合（Ｓ１１４２：ＹＥＳ）、シール解除処理を行う（Ｓ１１４３）。そして、セキュアモジュール２０は、シール解除したデータをＯＳローダ１０２に送信する（Ｓ１１４４）。ＯＳローダ１０２は、セキュアモジュール２０から受け取ったデータを用いて、ＯＳローダ処理（ブート処理）を実行する（Ｓ１１４５）。
【０１０１】
ブート処理実行後、ＯＳローダ１０２は、セキュアモジュール２０に対し、Ｅｘｔｅｎｄ処理を要求する（Ｓ１１４６）。Ｓ１１４６のＥｘｔｅｎｄ要求は、ステージの環境情報レジスタの値が期待値であるかどうかの判断処理の要求も兼ねるものとする。セキュアモジュール２０は、ステージ３の環境情報レジスタの値が期待値であるかどうかの判断を、ＯＳローダ証明書１０２１内のステージ３の環境情報期待値と、環境情報レジスタ２７１に格納されている値とを比較することで行う（Ｓ１１４７）。「両値が等しい」と判断した場合には（Ｓ１１４７：ＹＥＳ）、セキュアブートを継続する。「両値が等しくない」と判断した場合には（Ｓ１１４７：ＮＯ）、不正なモジュールが起動されているものとみなしてブート処理を中断する。
【０１０２】
次に、セキュアモジュール２０は、Ｅｘｔｅｎｄ処理として、ＯＳローダ証明書１０２１内のＥｘｔｅｎｄ先レジスタ番号の値２で示される環境情報レジスタに、ステージ３のＯＳローダ証明書１０２１のＥｘｔｅｎｄ値であるＳＨＡ１（”ＯＳローダ  ｄｏｎｅ”）の値を累積処理する（Ｓ１１１８）。このような処理をすることで、次のステージに移行する前に、現時点のステージの環境の正当性を検証することが可能となる。また、ＳＨＡ１（“ＯＳローダ  ｄｏｎｅ”）は、“ＯＳローダ  ｄｏｎｅ”という文字列のＳＨＡ１ハッシュ値を示しており、ＯＳローダ１０２の処理が終了することを示すステータス情報として利用する。この値がＥｘｔｅｎｄされるということは、ＯＳローダ１０２の処理が終了したという状態をセキュアモジュール２０に残すことを意味する。
【０１０３】
次に、セキュアモジュール２０は、シール更新処理を実行し（Ｓ１１４９）、Ｅｘｔｅｎｄ完了を通知する（Ｓ１１５０）。ＯＳローダ１０２は、ステージ３の完了前に、シール解除され、ブート処理に用いていたデータを破棄する（Ｓ１１５１）。なお、Ｓ１１５１と、Ｓ１１５０の順番は、前後しても問題はない。
【０１０４】
そして、セキュアモジュール２０は、次のステージ４の状態へ移る。
（５）ステージ４
ＯＳローダ１０２は、ＯＳチェックを行う（Ｓ１１６１）。ＯＳチェックは、具体的には、ＯＳローダ１０２が、ＯＳ１０３のＳＨＡ１によるハッシュ値を算出する。そして、算出したハッシュ値と、ＯＳ証明書１０３０のＥｘｔｅｎｄ値であるＳＨＡ１（ＯＳ）の値と比較することでＯＳ１０３の完全性をチェックする。比較（Ｓ１１６２）の結果、一致した場合は（Ｓ１１６２：ＹＥＳ）、完全性が維持されていると判断して次の処理に進み、一致しなかった場合（Ｓ１１６２：ＮＯ）、完全性が損なわれていると判断し、処理を終了する。ＯＳローダ１０２は、セキュアモジュール２０に対し、Ｅｘｔｅｎｄ処理を要求する（Ｓ１１６３）。Ｓ１１６３のＥｘｔｅｎｄ要求は、ステージ４の環境情報レジスタの値が期待値であるかどうかの判断処理の要求も兼ねるものとする。
【０１０５】
セキュアモジュール２０は、ステージ４の環境情報レジスタの値が期待値であるかどうかの判断を、ＯＳローダ証明書１０２１内のステージ４の環境情報期待値と、環境情報レジスタ２７１に格納されている値とを比較することで行う（Ｓ１１６４）。「両値が等しい」と判断した場合には（Ｓ１１６４：ＹＥＳ）、セキュアブートを継続する。「両値が等しくない」と判断した場合には（Ｓ１１６４：ＮＯ）、不正なモジュールが起動されているものとみなしてブート処理を中断する。
【０１０６】
次に、セキュアモジュール２０は、Ｅｘｔｅｎｄ処理として、ＯＳ証明書１０３０内のＥｘｔｅｎｄ先レジスタ番号の値１で示される環境情報レジスタに、ＯＳ証明書１０３０のＥｘｔｅｎｄ値であるＳＨＡ１（ＯＳ）の値を累積処理する（Ｓ１１６５）。セキュアモジュール２０は、累積処理として、ＳＨＡ１のハッシュ値を連鎖処理する。このような処理をすることで、次のステージに移行する前に、現時点のステージの環境の正当性を検証することが可能となる。そして、セキュアモジュール２０は、ＯＳ１０３に対し、Ｅｘｔｅｎｄ完了を通知する（Ｓ１１６６）。Ｅｘｔｅｎｄ完了通知は、Ｅｘｔｅｎｄ処理が完了したことを通知するとともに、環境情報レジスタ２７１の値が期待値であるか否かの判断結果の通知を兼ねている。ＯＳローダ１０２は、ＯＳ１０３に対し実行指示を送信する（Ｓ１１６７）。そして、セキュアモジュール２０は、次のステージ５の状態へ移る。
（６）ステージ５
実行指示に従い、ＯＳ１０３は動作を開始する。ＯＳ１０３は、通常用シールデータ３（３３０）のシール解除処理をセキュアモジュール２０に要求する（Ｓ１１８１）。
【０１０７】
セキュアモジュール２０は、シール解除が必要か否かを判定する（Ｓ１１８２）。ここで、本実施の形態では、シール解除が必要か否かの判定は、セキュアモジュール２０が、シールデータ依存リストを参照して、シール解除すべきシールデータが存在するか否かにより判定するものとする。シール解除が必要であった場合（Ｓ１１８２：ＹＥＳ）、シール解除処理を行う（Ｓ１１８３）。そして、セキュアモジュール２０は、シール解除したデータをＯＳ１０３に送信する（Ｓ１１８４）。
【０１０８】
ＯＳ１０３は、セキュアモジュール２０から受け取ったデータを用いて、ＯＳ処理（ブート処理）を実行する（Ｓ１１８５）。ブート処理実行後、ＯＳ１０３は、セキュアモジュール２０に対し、Ｅｘｔｅｎｄ処理を要求する（Ｓ１１８６）。Ｓ１１８６のＥｘｔｅｎｄ要求は、ステージの環境情報レジスタの値が期待値であるかどうかの判断処理の要求も兼ねるものとする。セキュアモジュール２０は、ステージ５の環境情報レジスタの値が期待値であるかどうかの判断を、ＯＳ証明書１０３１内のステージ５の環境情報期待値と、環境情報レジスタ２７１に格納されている値とを比較することで行う（Ｓ１１８７）。「両値が等しい」と判断した場合には（Ｓ１１８７：ＹＥＳ）、セキュアブートを継続する。「両値が等しくない」と判断した場合には（Ｓ１１８７：ＮＯ）、不正なモジュールが起動されているものとみなしてブート処理を中断する。
【０１０９】
次に、セキュアモジュール２０は、Ｅｘｔｅｎｄ処理として、ＯＳ証明書１０３１内のＥｘｔｅｎｄ先レジスタ番号の値２で示される環境情報レジスタに、ステージ５のＯＳ証明書１０３１のＥｘｔｅｎｄ値であるＳＨＡ１（”ＯＳ  ｄｏｎｅ”）の値を累積処理する（Ｓ１１８８）。このような処理をすることで、次のステージに移行する前に、現時点のステージの環境の正当性を検証することが可能となる。また、ＳＨＡ１（“ＯＳ  ｄｏｎｅ”）は、“ＯＳ  ｄｏｎｅ”という文字列のＳＨＡ１ハッシュ値を示しており、ＯＳ１０３の処理が終了することを示すステータス情報として利用する。この値がＥｘｔｅｎｄされるということは、ＯＳ１０３の処理が終了したという状態をセキュアモジュール２０に残すことを意味する。
【０１１０】
次に、セキュアモジュール２０は、シール更新処理を実行し（Ｓ１１８９）、Ｅｘｔｅｎｄ完了を通知する（Ｓ１１９０）。ＯＳ１０８は、ステージ５の完了前に、シール解除され、ブート処理に用いていたデータを破棄する（Ｓ１１９１）。なお、Ｓ１１９１と、Ｓ１１９０の順番は、前後しても問題はない。そして、セキュアモジュール２０は、セキュアブート完了状態に移る。以上で、図１５〜１７の説明を終了する。
【０１１１】
ここで、上述のセキュアブートにおける各ステージにおける環境情報レジスタの値について補足説明する。
図１８は、セキュアブート中の各ステージにおける環境情報レジスタの値を示す模式図である。
【０１１２】
まず、ステージ０では、環境情報レジスタ１２０１の値Ｒｅｇ１０、環境情報レジスタ１２０２の値Ｒｅｇ２０、環境情報レジスタ１２０３の値Ｒｅｇ３０は、全て０である。
次に、ステージ１では、環境情報レジスタ１（１２０１）の値Ｒｅｇ２１は、ＳＨＡ１（Ｒｅｇ１０||ＳＨＡ１（ＩＰＬ））となる。なお、上述の記号「Ａ||Ｂ」は、ＡとＢとを連結していることを示している。環境情報レジスタ２（１２０２）と環境情報レジスタ３（１２０３）の値は、ステージ０のときと変わらない。
【０１１３】
次にステージ２では、環境情報レジスタ１（１２０１）の値は、ステージ１と変わらずＲｅｇ１１のままであり、環境情報レジスタ３（１２０３）の値は、ステージ０と変わらずＲｅｇ３０のままである。そして、環境情報レジスタ２（１２０２）の値Ｒｅｇ２１は、ＳＨＡ１（Ｒｅｇ２０||ＳＨＡ１（"ＩＰＬ  ｄｏｎｅ"））となる。
【０１１４】
ステージ３、４、５、セキュアブート完了状態のレジスタの内容については図示の通りであり、上述と同様の説明となるので、これらについての説明は省略する。
次に、セキュアブート完了状態の環境情報レジスタ２７１に格納されるべき値の期待値１３００について、補足説明する。
【０１１５】
図１９は、セキュアブート完了状態の環境情報レジスタ２７１に格納されるべき値の期待値１３００の生成のイメージを示した図である。具体的に、図１９に示すセキュアブート完了状態の環境情報レジスタ１３００を生成するイメージを表している。ＩＰＬ証明書（１０１０、１０１１）、ＯＳローダ証明書（１０２１、１０２２）、ＯＳ証明書（１０３１、１０３２）の証明書内に記載される各ステージの環境情報期待値から生成する。
１．３．４．シールデータ更新処理
次に、シールデータ更新処理について説明する。この処理は、上述のＳ１１１９、Ｓ１１４９、Ｓ１１８９を詳細に説明するものである。
【０１１６】
なお、本処理の前提として、セキュアブート完了状態の期待値１３００が既に生成済みであるものとする。
シールデータ制御部１５０は、シール更新が必要か否かを判定する（Ｓ１８０１）。
【０１１７】
本実施形態では、現ステージにおいて、シールデータ５０４の値が更新され、その更新後の値を保持する必要があれば、シール更新が必要であると判断する。
更新の必要がないと判断した場合（Ｓ１８０１：ＮＯ）、シール更新処理を終了する。
【０１１８】
シール更新処理が必要であると判断した場合（Ｓ１８０１：ＹＥＳ）、
平文のシール対象データ５０４に対して、現在の環境情報レジスタ期待値２７１でシール処理する（Ｓ１８０２）。
【０１１９】
また、平文のシール対象データ５０４に対して、セキュアブート完了状態の期待値１３００でシール処理し、シール処理により得られたシールデータを更新用シールデータとしてシールデータ格納部１７０の更新用シールデータ格納領域３２に記録し（Ｓ１８０３）、シール更新処理を終了する。
【０１２０】
シールデータの更新が必要なユースケースの一例には、起動回数制限を有するセキュアブート対象ソフトがあり、起動回数の制限情報をシールで保護するような場合がある。この場合、起動回数を保持する起動回数データは、電源ＯＮがされるごとに更新することとなり、なおかつ更新後の起動回数データを記憶しておく必要がある。よって、起動回数データについては、シール更新が必要であると判断される。シール更新処理が必要か否かの判断については、例えば、扱うデータに属性を付加することとしてもよく、更新属性が付加されたデータについて起動する毎に再シール処理を行うこととしてもよい。
【０１２１】
以上で、図２０の更新用シールデータ生成フローの説明を終了する。
１．３．５．プログラム更新時の処理
セキュアブート対象のプログラム更新時の処理について、図２１、図２２、図２３を用いて説明する。なお、以下、情報処理装置１０が、更新用シールデータを予め保持していることを前提に説明をする。
【０１２２】
本シーケンスは、セキュアブートが完了した後に実行される（Ｓ１９０１）。プログラムの更新が発生した場合、更新プログラム配信サーバ１１が、情報処理端末１０に対して、プログラムの更新要求を送信する。情報処理端末１０におけるプログラム更新制御部１４０は、更新プログラム配信サーバ１１により送信されたプログラムの更新要求を受信する（Ｓ１９０２）。次に、プログラム更新制御部１４０は、更新プログラム配信サーバ１１から更新用のプログラムと、更新用のプログラムに対応するプログラム証明書を受信する（Ｓ１９０３）。次に、プログラム更新制御部１４０は、セキュアブート完了状態の期待値１３００を利用して、セキュアブートが正常に完了しているかを確認する（Ｓ１９０４）。プログラム更新制御部１４０は、Ｓ１９０４の結果、セキュアブートが正常に完了していなければ、更新処理を終了し、セキュアブートが正常に完了していれば、Ｓ１９０５へ処理を移す。次に、プログラム更新制御部１４０は、シールデータ制御部１５０に対してプログラムの更新要求を行う（Ｓ１９０５）。次に、プログラムの更新要求を受けたシールデータ制御部１５０は、シールデータ依存リスト１６００を参照し、Ｓ１９０３で受信したプログラム証明書に対応した更新すべき通常用シールデータが存在するかを判断する（Ｓ１９０６）。Ｓ１９０６にて、「更新すべきデータが存在しない」という判断結果（Ｓ１９０６：ＮＯ）であれば、Ｓ１９１６へ処理を移す。Ｓ１９０６にて、「更新すべきデータが存在する」という判断結果（Ｓ１９０６：ＹＥＳ）であればＳ１９０７へ処理を移す。
【０１２３】
次に、シールデータ制御部１５０は、「更新すべきデータが存在する」と判断された通常用シールデータに対応する更新用シールデータをシールデータ格納部１７０から読み出す（Ｓ１９０７）。次に、シールデータ制御部１５０は、セキュアモジュール２０に対して、Ｓ１９０７で読み出した更新用シールデータのシール解除処理の要求を行う（Ｓ１９０８）。
【０１２４】
シール解除処理の要求を受け取ったセキュアモジュール２０は、図７に示したフローチャートの手順に基いて、Ｓ１９０８で要求された更新用シールデータのシール解除処理を行う（Ｓ１９０９）。次に、シールデータ制御部１５０は、シール解除された平文のシール対象データを取得する（Ｓ１９１０）。次に、シールデータ制御部１５０は、Ｓ１９０３で取得しているプログラム証明書を参照して、更新すべき通常用シールデータの新しいシール解除条件である期待値を取得する（Ｓ１９１１）。次に、シールデータ制御部１５０は、セキュアモジュール２０に対して、Ｓ１９１０で得た平文のシール対象データを、Ｓ１９１１で取得した新しいシール解除条件である期待値とシールデータ公開鍵を入力としてシール処理要求をする（Ｓ１９１２）。次に、セキュアモジュール２０は、Ｓ１９１２で要求されたデータに対して既に説明したシール処理を行う（Ｓ１９１３）。次に、シールデータ制御部１５０は、Ｓ１９１１で取得した期待値をシール解除条件としたシールデータをセキュアモジュール２０から取得する（Ｓ１９１４）。次に、シールデータ制御部１５０は、Ｓ１９０７でリードした通常用シールデータを通常用シールデータ格納領域３１から削除し、Ｓ１９１４で取得したシールデータを更新された通常用シールデータとして、通常用シールデータ格納領域３１に格納する（Ｓ１９１５）。これにより、更新すべき通常用シールデータは、更新されたことになる。図中ではループ処理とはなっていないが、実際には、更新すべき通常用シールデータが複数存在すれば、その個数分だけ、Ｓ１９０５からＳ１９１５の処理が実行される。
【０１２５】
続いて、Ｓ１９１６からＳ１９２３の更新用シールデータの更新処理について説明する。
セキュアブート対象のプログラムが更新されれば、当然、セキュアブート完了状態の期待値１３００も変わることになるため、更新用シールデータも更新する必要がある。
【０１２６】
まず、セキュアブート完了状態の期待値１３００を更新する（Ｓ１９１６）。本ステップの処理については、既に説明済みである。
次に、シールデータ制御部１５０が、全ての更新用シールデータのシール解除要求する（Ｓ１９１７）。情報処理端末１０は、現在、セキュアブート完了状態であるので、本シール解除処理が可能となる。次に、セキュアモジュール２０に、図７のフローに基いて、Ｓ１９１７で要求された更新用シールデータのシール解除処理を行う（Ｓ１９１８）。
【０１２７】
次に、シールデータ制御部１５０は、セキュアモジュール２０から更新用シールデータのシール解除された、平文のシール対象データを取得する（Ｓ１９１９）。次に、更新用シールデータを、Ｓ１９１６で生成したプログラム更新後のセキュアブート完了状態の期待値１３００で、シール処理を要求する（Ｓ１９２０）。次に、セキュアモジュール２０が、図６のフローに基いて、更新後のセキュアブート完了状態の期待値１３００でシール処理する（Ｓ１９２１）。次に、シールデータ制御部１５０が、セキュアモジュール２０から、Ｓ１９２１でシールされた更新用シールデータを取得する（Ｓ１９２２）。次に、シールデータ制御部１５０は、Ｓ１９１２でシール解除要求した更新用シールデータを更新用シールデータ格納領域３２から削除し、Ｓ１９２２で取得したシールデータを更新された更新用シールデータとして、更新用シールデータ格納領域３２に格納する。これにより、更新用シールデータも、プログラム更新後のセキュアブート完了状態の期待値をシール解除条件としたシールデータで更新されたことになる。図中はループ処理とはなっていないが、実際には、更新用シールデータの個数分だけ、Ｓ１９１７からＳ１９２３の処理が実行される。続いて、Ｓ１９２４からＳ１９２５で更新すべきプログラムとプログラム証明書を更新する。プログラム更新制御部１４０が、Ｓ１９０３で受信したプログラム証明書で、証明書格納部１９０にある古い証明書を更新する（Ｓ１９２４）。次に、プログラム更新制御部１４０が、Ｓ１９０３で受信した更新プログラムで更新する（Ｓ１９２４）。
【０１２８】
このようにすることで、セキュアブート途中の期待値をシール解除条件としたシールデータの更新処理を、セキュアブートが完了した状態で行うことができる。そのため、情報処理端末１０のリブート処理をする必要がなくなり、プログラム更新時の利便性が高まる。
【０１２９】
以上で、実施の形態１の説明を終わる。
２．実施の形態２
続いて、実施の形態２について説明する。本実施の形態は、ロールバックに対応するものである。ロールバックとは、プログラムを前のバージョンに戻すことをいう。上述した実施の形態１では、通常用シールデータを更新する際に、シールデータ格納部１７０の通常用シールデータ格納領域３１から古い通常用シールデータを削除してから、新しい更新後の新しい通常用シールデータを、通常用シールデータ格納領域３１へ書き込むようにしていた。これに対し、本実施の形態では、シールデータ格納部１７０の通常用シールデータ格納領域３１から古い通常用シールデータを削除せずに退避する。退避する通常用シールデータは、シールデータ格納部１７０の中のロールバック用シールデータ格納領域２２００に格納される。
【０１３０】
なお、以後、実施の形態１と同じ構成要素について説明は省略する。
２．１．ロールバック対応のシールデータ格納部
図２４は、ロールバック対応した際のシールデータ格納部１７０を示した図である。実施の形態１との差異は、ロールバック用シールデータ格納領域２２００が追加された点である。ロールバック用シールデータ格納領域２２００は、通常用シールデータを更新する際に、通常用シールデータ格納領域３１から古い通常用シールデータを削除せずに、退避しておくための領域である。ロールバック用シールデータ（２２１０、２２２０、２２３０）のデータ構造は、実施の形態１の図５と同様である。
【０１３１】
図２４のロールバック用シールデータ１（２２１０）は、通常用シールデータ１（３１０）に対してロールバックするためのシールデータであり、ロールバック用シールデータ２（２２２０）は、通常用シールデータ２（３２０）に対してロールバックするためのシールデータであり、ロールバック用シールデータ３（２２３０）は、通常用シールデータ１（３３０）に対してロールバックするためのシールデータである。
２．２．更新要求時のシーケンス
図２５は、実施の形態２において、セキュアブート対象プログラムの更新要求があった場合シーケンス図である。
【０１３２】
まず、情報処理端末１０は、セキュアブート完了状態であるものとする（Ｓ２３０１）。次に、プログラム更新制御部１４０が、更新プログラム配信サーバ１１から、更新プログラムの更新の要求通知を受け取る（Ｓ２３０２）。次に、プログラム更新制御部１４０が、更新プログラム配信サーバ１１から、更新プログラム配信サーバ１１から更新対象のプログラムと、更新に必要なプログラム証明書を受信する（Ｓ２３０３）。次に、プログラム更新制御部１４０は、シールデータ制御部１５０に対してプログラムの更新要求を行う（Ｓ２３０４）。次に、プログラムの更新要求を受けたシールデータ制御部１５０は、シールデータ依存リスト１６００を参照し、Ｓ２３０３で受信したプログラム証明書に対応した更新すべき通常用シールデータが存在するかを判断する（Ｓ２３０５）。Ｓ２３０５にて、「更新すべきデータが存在しない」という判断結果（図中のＮＯ）であれば、Ｓ２３０７へ処理を移し終了する。Ｓ２３０５にて、「更新すべきデータが存在する」という判断結果（図中のＹＥＳ）であればＳ２３０６へ処理を移す。次にシールデータ制御部１５０は、「更新すべきデータが存在する」と判断された通常用シールデータを、ロールバック用シールデータ領域２２００へ退避する（Ｓ２３０６）。
２．３．ロールバック時のシーケンス
図２６、図２７は、ロールバック要求時のシーケンスである。
【０１３３】
まず、情報処理端末１０は、セキュアブート完了状態であるものとする（Ｓ２４０１）。次に、プログラム更新制御部１４０が、更新プログラム配信サーバ１１から、更新プログラムのロールバックの要求通知を受け取る（Ｓ２４０２）。次に、プログラム更新制御部１４０が、ロールバック用の更新プログラムと、ロールバックに必要なプログラム証明書を受信する（Ｓ２４０３）。次に、プログラム更新制御部１４０が、シールデータ制御部１５０にロールバックを要求する（Ｓ２４０４）。次に、プログラムのロールバック要求を受けたシールデータ制御部１５０は、シールデータ依存リスト１６００を参照し、Ｓ２４０３で受信したプログラム証明書に対応したロールバックすべき通常用シールデータが存在するかを判断する（Ｓ２４０５）。Ｓ２４０５にて、「更新すべきデータが存在しない」という判断結果（Ｓ２４０５：ＮＯ）であれば、Ｓ２４０７へ処理を移し終了する。Ｓ２４０５にて、「更新すべきデータが存在する」という判断結果（Ｓ２４０５：ＹＥＳ）であればＳ２４０６へ処理を移す。次にシールデータ制御部１５０は、ロールバック用シールデータ格納領域２２００にアクセスし、「ロールバックすべきシールデータが存在する」と判断された通常用シールデータに対応するロールバック用シールデータが存在するか判断する（Ｓ２４０６）。Ｓ２４０６にて、「ロールバック用シールデータが存在しない」という判断結果（Ｓ２４０６：ＮＯ）であれば、Ｓ２４０８へ処理を移し、実施の形態１にて説明した通常用シールデータの更新処理を行う。Ｓ２４０８において、Ｓ２４０３にて受信したロールバック用プログラム証明書を用いて更新処理することは、ロールバック処理することに等しいので、説明済みの処理フローにより実現できる。また、Ｓ２４０６にて、「ロールバック用シールデータが存在する」という判断結果（Ｓ２４０６：ＹＥＳ）であれば、Ｓ２４０９へ処理を移す。次に、シールデータ制御部１５０が、ロールバックすべき通常用シールデータに対応するロールバック用データを、ロールバック用シールデータ格納領域２２００からリードする（Ｓ２４０９）。次に、シールデータ制御部１５０が、通常用シールデータ格納領域３１内のロールバックすべき通常用シールデータをＳ２４１０でリードしたロールバック用データで更新する（Ｓ２４１０）。次に、シールデータ制御部１５０が、Ｓ２４１０でリードしたロールバック用データをロールバック用シールデータ格納領域２２００から消去する（Ｓ２４１１）。次に、シールデータ制御部１５０が、Ｓ２４１０でリードしたロールバック用データをロールバック用シールデータ格納領域２２００から消去する（Ｓ２４１１）。プログラム更新制御部１４０が、Ｓ２４０３で受信したプログラム証明書で証明書格納部１９０にある古い証明書を更新する（Ｓ２４１２）。次に、プログラム更新制御部１４０が、Ｓ２４０４で受信した更新プログラムで更新する（Ｓ２４１３）。
【０１３４】
以上で、実施の形態２の説明を終わる。
３．変形例その他
なお、本発明を上記実施の形態に基づいて説明してきたが、本発明は、上記の実施の形態に限定されないのはもちろんである。以下のような場合も本発明に含まれる。
（１）上述の実施形態では、情報処理端末１０は、一例としてパーソナルコンピュータである例で説明したがこれに限らず、携帯電話やＰＤＡなどのモバイル機器でもよい。さらには、ＴＶやＳＴＢやＤＶＤ／ＢＤプレイヤーなどの据え置き型電子機器でもよい。
【０１３５】
また、ネットワーク１５は、一例としてインターネットである例で説明したが、これに限らない。その他の公衆ネットワークであってもよいし、携帯電話ネットワークの電話網であってもよい。また、有線でもよいし、無線でもよく、ネットワークの種類は限定されないものとする。
（２）署名９０５は、実施形態では、公開鍵暗号系であるＲＳＡの秘密鍵を利用して生成することとしたが、これに限らない。例えば、公開鍵暗号として、楕円暗号を用いてもよい。また、図９に図示していないが、Ｘ．５０９の証明書に記載される発行者名、アルゴリズム識別子、有効期間等のデータのフィールドを有してもよいし、ＴＣＧ  Ｍｏｂｉｌｅ  Ｔｒｕｓｔｅｄ  Ｍｏｄｕｌｅ  Ｓｐｅｃｉｆｉｃａｔｉｏｎに記載されるＲＩＭ証明書を用いてもよい。
（３）上述の実施形態では、シールデータ識別情報１６０１は、図５記載のシールデータ構造の認証情報期待値５０５であるとして説明したが、シールデータが識別できるような情報であればよい。
（４）上述の実施形態では、ハッシュアルゴリズムとして、ＳＨＡ１を用いる例で説明したがこれに限らない。ＳＨＡ２５６やＳＨＡ３８４やＳＨＡ５１２を利用してもよいし、他のアルゴリズムを利用してもよい。また、ハッシュアルゴリズムに限らず、プログラムを一意に識別出来る情報が生成できるアルゴリズムであれば、ハッシュアルゴリズム以外を用いて情報を生成してもよい。
（５）上述の実施形態では、セキュアブート完了状態の期待値１３００を、セキュアブート対象のプログラム証明書から生成するものとしているが、セキュアブート完了状態の期待値１３００が設定されたプログラム証明書を予め情報処理端末１０に持たせるようにしてもよい。この場合、セキュアブート完了状態の期待値１３００が設定されたプログラム証明書のＥｘｔｅｎｄ先レジスタ番号９０３とＥｘｔｅｎｄ値９０４にはＮＵＬＬを設定するものとする。ＮＵＬＬが設定されているということは、このプログラム証明書を利用した場合に、環境情報レジスタ２７１に対してＥｘｔｅｎｄ処理が行われないことを意味する。この証明書を利用することで、図１３の処理フローを省くことができる。
（６）上述の実施形態では、通常用シールデータ（３１０、３２０、３４０）からブート処理を行いながら更新用シールデータ（３４０、３５０、３６０）を生成するようにしているが、更新用シールデータ格納領域３２に、予め更新用シールデータ（３４０、３５０、３６０）を格納させるようにしてもよい。このように、通常用シールデータを解除して得たデータを、必要であれば更新した上で、シールし直すことで更新用シールデータを生成することで、外部からの情報を使わなくとも更新用データを生成することができる。
（７）シール解除要求の検出は、シール解除コマンドの発行をフッキングすることで行ったが、これに限らない。また、シール解除コマンドの要求を検出フッキングする以外にも、セキュアブート対象プログラムからのシール解除コマンドの要求前に、セキュアブート対象プログラム内にシール解除コマンド要求の前に、シールデータ制御部１５０へ処理を分岐させるような命令を予め挿入しておいてもよい。
（８）上述の実施形態のシール処理は、シール対象のデータを、シール解除条件と共に公開鍵で暗号化するようにしているが、これに限定される必要はなく、シール解除条件の期待値と合致している環境の時のみ、シール対象データに対するアクセスを行えるようなアクセス制限を実現できる処理であればよい。例えば、シール対象データを、期待値を鍵にして暗号化するといったことで実現できる。または、耐タンパ領域にシール対象データをとシール解除条件の期待値とをセットで暗号化せずに入れておいて、シール解除条件の期待値と、シール解除する環境の環境情報レジスタの値が合致している環境の時のみ、耐タンパ領域外に出すというようにしてもよい。
【０１３６】
また、本実施の形態１では、プログラム更新部１４０とシールデータ制御部１５０をセキュアブート対象プログラムとして説明していないが、プログラム更新部１４０とシールデータ制御部１５０をセキュアブート対象プログラムとしてもよいことは言うまでもない。
（９）セキュアモジュール２０は、ハードウェアで実現されてもよく、ソフトウェア実現されてもよい。より具体的には、ＴＣＧで規定されるＴＰＭやＭＴＭで実現されてもよい。この場合、環境情報レジスタ２７１、２７２は、Ｐｌａｔｆｏｒｍ  Ｃｏｎｆｉｇｕｒａｔｉｏｎ  Ｒｅｇｉｓｔｅｒ（ＰＣＲ）として実現される。
【０１３７】
また、本実施の形態では、シール処理をセキュアモジュール２０内で行うようにしているが、セキュアモジュール２０の外部で行うようにしてもよい。
（１０）上述の実施形態では、シールデータ制御部１５０は、シール更新処理において、シール更新が必要か否かを判断しているが（Ｓ１８０１）、これに限らず、現ステージでシールデータを使用するプログラムからシールデータの更新が必要である旨の通知を受け、その通知を受けたときにシール更新を行うこととしてもよい。
（１１）上述の実施形態において、プログラムのロールバックを行うと、セキュアブート完了状態の環境情報期待値レジスタも変わるため、更新用シールデータもロールバックする必要がある。更新用シールデータのロールバックについては、実施の形態１で説明したフローを用いて実現してもよいし、実施の形態２の通常用シールデータのロールバック処理のように、ロールバック用格納領域２２００にロールバック処理時に利用するための更新用シールデータを保持するような仕組みとしてもよい。このようにすることで、更新用シールデータの更新処理も簡易化される。
【０１３８】
また、ロールバック用シールデータは、ロールバックが完了後にロールバック用シールデータ格納領域２２００から削除するようにしているが、そのまま保持しておいてもよい。さらに複数の世代のロールバックを、ロールバック用シールデータ格納領域２２００に保持しておいてもよい。このようにすることで、セキュアブート完了状態で、複数世代にわたる通常用シールデータのロールバックが可能となる。
（１２）上記の実施の形態では、シールで保護対象となるデータを、ブートに利用する情報のみとしているが、これに限定されない。セキュアブート中にシール解除し、シール解除したデータをセキュアブート完了後に利用するようにしてもよい。例えば、携帯電話の固有情報であるＩＭＥＩデータをセキュアブート途中の環境情報でシール保護しておき、セキュアブート過程でシールが解除され、シール解除されたＩＭＥＩデータをセキュアブート完了後に利用するようにしてもよい。
（１３）上記実施の形態では、各プログラムのハッシュ値または各プログラムが起動したことを示す文字列のハッシュ値を計算していた。しかし、この値はハッシュ値に限られるものではなく、各プログラムまたは各文字列の特徴に依存して変化する値を広く使用することができる。例えば、チェックサムなど他の情報を使用することもできる。また、多少精度は低下するが、各プログラムや文字列の最初の所定ビット数の値などであっても構わない。
（１４）上記実施の形態では、ブートの対象はプログラムであった。しかし、この対象はプログラムに限られるものではない。例えば、プログラムと各プログラムに対するプラグインも含んだソフトウェアモジュールであってもよい。
（１５）上記の各装置は、具体的には、マイクロプロセッサ、ＲＯＭ、ＲＡＭ、ハードディスクユニット、ディスプレイユニット、キーボード、マウスなどから構成されるコンピュータシステムである。前記ＲＡＭまたはハードディスクユニットには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムにしたがって動作することにより、各装置は、その機能を達成する。ここでコンピュータプログラムは、所定の機能を達成するために、コンピュータに対する指令を示す命令コードが複数個組み合わされて構成されたものである。また、各装置は、マイクロプロセッサ、ＲＯＭ、ＲＡＭ、ハードディスクユニット、ディスプレイユニット、キーボード、マウスなどの全てを含むものではなく、これらの一部から構成されているとしてもよい。
（１６）上記の各装置を構成する構成要素の一部または全部は、１個のシステムＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ：大規模集積回路）から構成されているとしてもよい。システムＬＳＩは、複数の構成部を１個のチップ上に集積して製造された超多機能ＬＳＩであり、具体的には、マイクロプロセッサ、ＲＯＭ、ＲＡＭなどを含んで構成されるコンピュータシステムである。前記ＲＡＭには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムにしたがって動作することにより、システムＬＳＩは、その機能を達成する。
【０１３９】
また、上記の各装置を構成する構成要素の各部は、個別に１チップ化されていても良いし、一部又は全てを含むように１チップ化されてもよい。
また、ここでは、システムＬＳＩとしたが、集積度の違いにより、ＩＣ、ＬＳＩ、スーパーＬＳＩ、ウルトラＬＳＩと呼称されることもある。また、集積回路化の手法はＬＳＩに限るものではなく、専用回路又は汎用プロセッサで実現してもよい。ＬＳＩ製造後に、プログラムすることが可能なＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）や、ＬＳＩ内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサーを利用しても良い。
【０１４０】
さらには、半導体技術の進歩又は派生する別技術によりＬＳＩに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。バイオ技術の適用等が可能性としてありえる。
（１７）上記の各装置を構成する構成要素の一部または全部は、各装置に脱着可能なＩＣカードまたは単体のモジュールから構成されているとしてもよい。前記ＩＣカードまたは前記モジュールは、マイクロプロセッサ、ＲＯＭ、ＲＡＭなどから構成されるコンピュータシステムである。前記ＩＣカードまたは前記モジュールは、上記の超多機能ＬＳＩを含むとしてもよい。マイクロプロセッサが、コンピュータプログラムにしたがって動作することにより、前記ＩＣカードまたは前記モジュールは、その機能を達成する。このＩＣカードまたはこのモジュールは、耐タンパ性を有するとしてもよい。
（１８）本発明は、上記に示す方法であるとしてもよい。また、これらの方法をコンピュータにより実現するコンピュータプログラムであるとしてもよいし、前記コンピュータプログラムからなるデジタル信号であるとしてもよい。
【０１４１】
また、本発明は、前記コンピュータプログラムまたは前記デジタル信号をコンピュータ読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、ＢＤ（Ｂｌｕ−ｒａｙ  Ｄｉｓｃ）、半導体メモリなどに記録したものとしてもよい。また、これらの記録媒体に記録されている前記デジタル信号であるとしてもよい。
【０１４２】
また、本発明は、前記コンピュータプログラムまたは前記デジタル信号を、電気通信回線、無線または有線通信回線、インターネットを代表とするネットワーク、データ放送等を経由して伝送するものとしてもよい。
【０１４３】
また、本発明は、マイクロプロセッサとメモリを備えたコンピュータシステムであって、前記メモリは、上記コンピュータプログラムを記憶しており、前記マイクロプロセッサは、前記コンピュータプログラムにしたがって動作するとしてもよい。
【０１４４】
また、前記プログラムまたは前記デジタル信号を前記記録媒体に記録して移送することにより、または前記プログラムまたは前記デジタル信号を前記ネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしてもよい。
（１９）上記実施の形態及び上記変形例をそれぞれ組み合わせるとしてもよい。
【産業上の利用可能性】
【０１４５】
本発明に係る情報処理装置は、実行するプログラムが更新され、更新された場合にも装置全体の完全性を保証しつつセキュアブートすることが必要な携帯電話機、電子計算機などの電子機器等に適用するのに好適であり、これら電子機器の製造業者等により製造、販売等がされる。
【符号の説明】
【０１４６】
１  情報処理システム
１０  情報処理端末
１１  更新プログラム配信サーバ
１２  期待値データベース
１３  プログラム証明書データベース
１４  更新プログラムデータベース
１５  ネットワーク
１００  ＣＰＵ
１０１  ＩＰＬ
１０２  ＯＳローダ
１０３  ＯＳ
１０４  アプリケーション
１１０  ＲＡＭ
１２０  ＲＯＭ
１３０  プログラム格納部
１４０  プログラム更新制御部
１５０  シールデータ制御部
１６０  シールデータ依存リスト格納部
１７０  シールデータ格納部
１８０  シール鍵格納部
１９０  証明書格納部
２０  セキュアモジュール
２１０  コマンドＩ／Ｏ
２２０  検証処理部
２３０  測定処理部
２４０  暗号処理部
２５０  シール処理部
２７０  環境情報格納部
２７１、２７２、１２０１、１２０２、１２０３  環境情報レジスタ
３１  通常用シールデータ格納領域
３２  更新用シールデータ格納領域
３１０、３２０、３３０  通常用シールデータ
３４０、３５０、３６０  更新用シールデータ
４００  ルート鍵ペア
４０１  ルート秘密鍵
４０２  ルート公開鍵
４１０、４２０、４３０  シールデータ鍵ペア
４１１、４２１、４３１  シールデータ公開鍵
４１２、４２２、４３２  シールデータ秘密鍵
５０１、１５１１、１５２１  環境情報サイズ
５０２、９０２、１５１２、１５２２  期待値
５０３、１５１３、１５２３  シール対象データサイズ
５０４、１５１４、１５２４  シール対象データ
５０５、１５１５、１５２５  認証情報期待値
９０１  証明書識別子
９０３  Ｅｘｔｅｎｄ先レジスタ番号
９０４  Ｅｘｔｅｎｄ値
９０５  署名
１０１０、１０１１  ＩＰＬ証明書
１０２０、１０２１  ＯＳローダ証明書
１０３０、１０３１  ＯＳ証明書
１３００  セキュアブート完了状態の期待値
１６００  シールデータ依存リスト
１６０１  シールデータ識別情報
１６０２  証明書識別情報
２２００  ロールバック用シールデータ格納領域
２２１０、２２２０、２２３０  ロールバック用シールデータ
【図１】
0005457362.tif 000002
【図２】
0005457362.tif 000003
【図３】
0005457362.tif 000004
【図４】
0005457362.tif 000005
【図５】
0005457362.tif 000006
【図６】
0005457362.tif 000007
【図７】
0005457362.tif 000008
【図８】
0005457362.tif 000009
【図９】
0005457362.tif 000010
【図１０】
0005457362.tif 000011
【図１１】
0005457362.tif 000012
【図１２】
0005457362.tif 000013
【図１３】
0005457362.tif 000014
【図１４】
0005457362.tif 000015
【図１５】
0005457362.tif 000016
【図１６】
0005457362.tif 000017
【図１７】
0005457362.tif 000018
【図１８】
0005457362.tif 000019
【図１９】
0005457362.tif 000020
【図２０】
0005457362.tif 000021
【図２１】
0005457362.tif 000022
【図２２】
0005457362.tif 000023
【図２３】
0005457362.tif 000024
【図２４】
0005457362.tif 000025
【図２５】
0005457362.tif 000026
【図２６】
0005457362.tif 000027
【図２７】
0005457362.tif 000028