(57)【要約】  提供者間の独立性を維持した上で複数の提供者が提供するモジュール群間を跨るセキュアブートを継続的に行うことが可能な情報処理装置を提供する。  セキュアブートを行う第１のモジュール群の累積ハッシュ値を示す第1の構成照合値５０３と、セキュアブートを行う第２のモジュール群の先頭モジュールのハッシュ値を示すモジュール測定値５０５とを含む連携証明書を備え、第１のモジュール群のセキュアブートの後、第1の構成照合値５０３との照合により第１のモジュール群が起動されていることを検証し、さらにモジュール測定値５０５との照合により完全性が検証された第２のモジュール群の先頭モジュールを起動して第２のモジュール群のセキュアブートを行い、第１のモジュール群のモジュールが更新された場合に、連携証明書更新部１３５が連携証明書を更新する。
2009157133.tif 000002
【特許請求の範囲】
【請求項１】
第１ステークホルダーに対応する第１の複数のモジュールと、前記第１の複数のモジュールの各モジュールについて、前記各モジュールのハッシュ値から生成される第１照合値及び前記第１の複数のモジュールに含まれるモジュールのハッシュ値を累積した場合の累積値から生成される第１累積照合値を含む証明書とを格納する第１記憶部と、
第２ステークホルダーに対応し前記第１の複数のモジュールと依存関係にある第２の複数のモジュールと、前記第２の複数のモジュールの各モジュールについて、前記各モジュールのハッシュ値から生成される第２照合値及び前記第２の複数のモジュールに含まれるモジュールのハッシュ値を累積した場合の累積値から生成される第２累積照合値を含む証明書とを格納する第２記憶部と、
前記第１の複数のモジュールの各モジュールの実際のハッシュ値と前記第１照合値とを比較して、前記第１の複数のモジュールの正当性を検証し、前記検証された第１の複数のモジュールを起動する第１制御部と、
前記第１の複数のモジュールの正当性が検証された場合、前記第２の複数のモジュールの各モジュールの実際のハッシュ値と前記第２照合値とを比較して、前記第２の複数のモジュールの正当性を検証し、前記検証された第２の複数のモジュールを起動する第２制御部と、
前記第２の複数のモジュールの先頭モジュールの正当性を検証する第３照合値及び前記第１の複数のモジュールに含まれるモジュールのハッシュ値を累積した場合の累積値から生成される第３累積照合値を含む連携証明書の保持部と、を具備し、
前記第１制御部は、前記第１の複数のモジュールを更新した場合、更新後の第１の複数のモジュールの証明書について前記証明書の署名を検証すると、前記検証された証明書の中の第１照合値を用いて前記連携証明書に含まれる第３累積照合値を更新し、
前記第１制御部は、前記第１の複数のモジュールを起動した後、
前記連携証明書に含まれる第３累積照合値を用いて正当な第１の複数のモジュールが起動していることを検証し、かつ、前記第２の複数のモジュールの先頭モジュールの正当性を、前記連携証明書に含まれる第３照合値を用いて検証した場合に、前記第２の複数のモジュールの先頭モジュールを起動し、
前記第２制御部は、前記第２の複数のモジュールの正当性を検証して、前記第２の複数のモジュールを起動させることを特徴とする情報処理装置。
【請求項２】
前記第２制御部によって管理され起動済みの前記第２の複数のモジュールに含まれるモジュールのハッシュ値を累積した場合の累積値を格納する第３記憶部を有し、
前記連携証明書は、さらに、前記第２の複数のモジュールが起動されていないことを示す第４累積照合値を含み、
前記第１制御部は、さらに、
第２の複数のモジュールの先頭モジュールの正当性を検証すると、
前記第２制御部から前記第３記憶部に格納された第２の複数のモジュールの検証値を取得し、この取得した検証値と前記連携証明書に含まれる第４累積値とを比較して前記第２の複数のモジュールを起動する前に前記第２制御部が起動したモジュールがないことを検証した場合、前記第２の複数のモジュールの先頭モジュールを起動し、
前記第２制御部は、前記第２の複数のモジュールの正当性を検証して、前記第２の複数のモジュールを起動することを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記保持部は、前記第１記憶部に含まれることを特徴とする請求項１記載の情報処理装置。
【請求項４】
前記第１制御部は、前記第２の複数のモジュールの先頭モジュールが更新された場合、前記連携証明書に含まれる第３照合値を更新することを特徴とする請求項３記載の情報処理装置。
【請求項５】
前記第２制御部は、前記第２の複数のモジュールの先頭モジュールを更新した場合、前記第１制御部にその旨を通知し、
第１制御部は、前記通知を受信すると、前記連携証明書の前記第３照合値を前記更新された第２の複数のモジュールの先頭モジュールの第２照合値に更新することを特徴とする請求項１記載の情報処理装置。
【請求項６】
第１ステークホルダーに対応する第１の複数のモジュールと、前記第１の複数のモジュールの各モジュールについて、前記各モジュールのハッシュ値から生成される第１照合値及び前記第１の複数のモジュールに含まれるモジュールのハッシュ値を累積した場合の累積値から生成される第１累積照合値を含む証明書とを格納し、
第２ステークホルダーに対応し前記第１の複数のモジュールと依存関係にある第２の複数のモジュールと、前記第２の複数のモジュールの各モジュールについて、前記各モジュールのハッシュ値から生成される第２照合値及び前記第２の複数のモジュールに含まれるモジュールのハッシュ値を累積した場合の累積値から生成される第２累積照合値を含む証明書とを格納し、
前記第１の複数のモジュールの各モジュールの実際のハッシュ値と前記第１照合値とを比較して、前記第１の複数のモジュールの正当性を検証し、前記検証された第１の複数のモジュールを起動し、
前記第１の複数のモジュールの正当性が検証された場合、前記第２の複数のモジュールの各モジュールの実際のハッシュ値と前記第２照合値とを比較して、前記第２の複数のモジュールの正当性を検証し、前記検証された第２の複数のモジュールを起動する情報処理方法であって、
前記第２の複数のモジュールの先頭モジュールの正当性を検証する第３照合値及び前記第１の複数のモジュールに含まれるモジュールのハッシュ値を累積した場合の累積値から生成される第３累積照合値を含む連携証明書の保持し、
前記第１の複数のモジュールを更新した場合、更新後の第１の複数のモジュールの証明書について前記証明書の署名を検証すると、前記検証された証明書の中の第１照合値を用いて前記連携証明書に含まれる第３累積照合値を更新し、
前記第１の複数のモジュールを起動した後、
前記連携証明書に含まれる第３累積照合値を用いて正当な第１の複数のモジュールが起動していることを検証し、かつ、前記第２の複数のモジュールの先頭モジュールの正当性を、前記連携証明書に含まれる第３照合値を用いて検証した場合に、前記第２の複数のモジュールの正当性を検証して、前記第２の複数のモジュールを起動することを特徴とする情報処理方法。
【請求項７】
コンピュータに対し、
第１ステークホルダーに対応する第１の複数のモジュールと、前記第１の複数のモジュールの各モジュールについて、前記各モジュールのハッシュ値から生成される第１照合値及び前記第１の複数のモジュールに含まれるモジュールのハッシュ値を累積した場合の累積値から生成される第１累積照合値を含む証明書とを第１記憶部に格納する第１処理と、
第２ステークホルダーに対応し前記第１の複数のモジュールと依存関係にある第２の複数のモジュールと、前記第２の複数のモジュールの各モジュールについて、前記各モジュールのハッシュ値から生成される第２照合値及び前記第２の複数のモジュールに含まれるモジュールのハッシュ値を累積した場合の累積値から生成される第２累積照合値を含む証明書とを第２記憶部に格納する第２処理と、
前記第１の複数のモジュールの各モジュールの実際のハッシュ値と前記第１照合値とを比較して、前記第１の複数のモジュールの正当性を検証し、前記検証された第１の複数のモジュールを起動する第３処理と、
前記第１の複数のモジュールの正当性が検証された場合、前記第２の複数のモジュールの各モジュールの実際のハッシュ値と前記第２照合値とを比較して、前記第２の複数のモジュールの正当性を検証し、前記検証された第２の複数のモジュールを起動する第４処理と、を実行させるコンピュータプログラムであって、
前記第２の複数のモジュールの先頭モジュールの正当性を検証する第３照合値及び前記第１の複数のモジュールに含まれるモジュールのハッシュ値を累積した場合の累積値から生成される第３累積照合値を含む連携証明書を保持部に格納する第５処理を実行させ、
前記第３処理は、前記第１の複数のモジュールを更新した場合、更新後の第１の複数のモジュールの証明書について前記証明書の署名を検証すると、前記検証された証明書の中の第１照合値を用いて前記連携証明書に含まれる第３累積照合値を更新し、
前記第３処理は、前記第１の複数のモジュールを起動した後、
前記連携証明書に含まれる第３累積照合値を用いて正当な第１の複数のモジュールが起動していることを検証し、かつ、前記第２の複数のモジュールの先頭モジュールの正当性を、前記連携証明書に含まれる第３照合値を用いて検証した場合に、前記第４処理を起動して前記第２の複数のモジュールの正当性を検証して、前記第２の複数のモジュールを起動することを特徴とするコンピュータプログラム。
【請求項８】
第１ステークホルダーに対応する第１の複数のモジュールと、前記第１の複数のモジュールの各モジュールについて、前記各モジュールのハッシュ値から生成される第１照合値及び前記第１の複数のモジュールに含まれるモジュールのハッシュ値を累積した場合の累積値から生成される第１累積照合値を含む証明書とを格納する第１記憶部と、
第２ステークホルダーに対応し前記第１の複数のモジュールと依存関係にある第２の複数のモジュールと、前記第２の複数のモジュールの各モジュールについて、前記各モジュールのハッシュ値から生成される第２照合値及び前記第２の複数のモジュールに含まれるモジュールのハッシュ値を累積した場合の累積値から生成される第２累積照合値を含む証明書とを格納する第２記憶部と、
前記第１の複数のモジュールの各モジュールの実際のハッシュ値と前記第１照合値とを比較して、前記第１の複数のモジュールの正当性を検証し、前記検証された第１の複数のモジュールを起動する第１制御部と、
前記第１の複数のモジュールの正当性が検証された場合、前記第２の複数のモジュールの各モジュールの実際のハッシュ値と前記第２照合値とを比較して、前記第２の複数のモジュールの正当性を検証し、前記検証された第２の複数のモジュールを起動する第２制御部と、
前記第２の複数のモジュールの先頭モジュールの正当性を検証する第３照合値及び前記第１の複数のモジュールに含まれるモジュールのハッシュ値を累積した場合の累積値から生成される第３累積照合値を含む連携証明書の保持部と、を具備した集積回路であって、
前記第１制御部は、前記第１の複数のモジュールを更新した場合、更新後の第１の複数のモジュールの証明書について前記証明書の署名を検証すると、前記検証された証明書の中の第１照合値を用いて前記連携証明書に含まれる第３累積照合値を更新し、
前記第１制御部は、前記第１の複数のモジュールを起動した後、
前記連携証明書に含まれる第３累積照合値を用いて正当な第１の複数のモジュールが起動していることを検証し、かつ、前記第２の複数のモジュールの先頭モジュールの正当性を、前記連携証明書に含まれる第３照合値を用いて検証した場合に、前記第２の複数のモジュールの先頭モジュールを起動し、
前記第２制御部は、前記第２の複数のモジュールの正当性を検証して、前記第２の複数のモジュールを起動させることを特徴とする集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パーソナルコンピュータや携帯電話などの情報通信機器、インターネットアクセス機能を備えたテレビ受信装置などの情報家電機器等の情報処理装置、情報処理方法、これらを実現するコンピュータプログラム及び集積回路に関するものである。【０００２】
特に、端末のソフトウェアが複数の提供者から提供される複数のモジュール群から構成される場合において、新しいソフトウェアモジュールを各提供者から個別にダウンロードすることでソフトウェアモジュールの更新を可能にしつつ、不正な動作をするモジュールにすり替えたり、不正にソフトウェアを古いバージョンに戻したりするといった不正行為を防止し、安定して確実に正しいソフトウェア構成で起動することを可能にするものである。
【背景技術】
【０００３】
近年、ネットワークを介して提供されるサービスは、音楽や映像といった著作物の提供や、企業が保有する機密情報の閲覧、オンラインバンキングなど多岐に渡り、かつ、その中で扱われる情報の価値も高価なものになってきている。多岐に渡るサービスに対応するため、パーソナルコンピュータ、携帯端末、携帯電話、デジタル家電などの端末には、複数の提供者から提供された複数のソフトウェアがインストールされている。【０００４】
例えば、携帯電話の場合、携帯電話の端末メーカーが提供する携帯電話の基本機能に関するモジュール群と、携帯電話のオペレータが提供する携帯通信機能に関するモジュール群と、ＩＳＰ（Ｉｎｔｅｒｎｅｔ  Ｓｅｒｖｉｃｅ  Ｐｒｏｖｉｄｅｒ）が提供する携帯電話上で動作するサービス・アプリケーションを構成するモジュール群がインストールされている場合がある。【０００５】
また、高価な価値を持つ情報を安全に扱うために、パーソナルコンピュータ、携帯端末、携帯電話、デジタル家電などの端末には、ソフトウェアモジュールの改ざん等の不正行為を防止する仕組みがモジュール群ごとに組み込まれている。例えば、各ソフトウェアモジュールに対して提供者が証明書を発行し、各ソフトウェアモジュールの起動時に、その証明書を用いてソフトウェアモジュールの完全性を検証するといった仕組もその一つである。この仕組は、モジュール群を構成するソフトウェアモジュールをモジュール単位で更新する場合にも有効であり、モジュール群の提供者が新しいソフトウェアモジュールと共に、その新しいソフトウェアモジュールの証明書を提供することにより、端末側で提供者側から受信した新しいソフトウェアモジュールの完全性を検証することが可能となる。【０００６】
上記の証明書を用いて不正行為を防止する仕組みと同様の技術は、例えば特許文献１において公開されている。【０００７】
また、セキュアなコンピュータプラットフォームを開発、普及させることを目的として、Ｔｒｕｓｔｅｄ  Ｃｏｍｐｕｔｉｎｇ  Ｇｒｏｕｐ（ＴＣＧ）が設立されている。ＴＣＧでは、Ｔｒｕｓｔｅｄ  Ｐｌａｔｆｏｒｍ  Ｍｏｄｕｌｅ（ＴＰＭ）と呼ばれるセキュリティモジュールを利用し、ソフトウェアモジュールの完全性だけでなく、ソフトウェアモジュールを起動する順番が正しいことを検証しながらソフトウェアモジュールを起動するセキュアブートと呼ばれる起動処理を端末が行うことで、安全な端末環境を実現している（非特許文献１〜５参照）。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】ＵＳ２００５／００２１９６８
【非特許文献】
【０００９】
【非特許文献１】ＴＰＭ  Ｍａｉｎ，Ｐａｒｔ１  Ｄｅｓｉｇｎ  Ｐｒｉｎｃｉｐｌｅｓ，Ｓｐｅｃｉｆｉｃａｔｉｏｎ  ｖｅｒｓｉｏｎ  １．２  Ｌｅｖｅｌ２  Ｒｉｖｉｓｉｏｎ１０３（９  Ｊｕｌｙ  ２００７）
【非特許文献２】ＴＰＭ  Ｍａｉｎ，Ｐａｒｔ２  ＴＰＭ  Ｓｔｒｕｃｔｕｒｅｓ，Ｓｐｅｃｉｆｉｃａｔｉｏｎ  ｖｅｒｉｏｎ１．２  Ｌｅｖｅｌ２  Ｒｉｖｉｓｉｏｎ１０３（９  Ｊｕｌｙ  ２００７）
【非特許文献３】ＴＰＭ  Ｍａｉｎ  Ｐａｒｔ３  Ｃｏｍｍａｎｄｓ，Ｓｐｅｃｉｆｉｃａｔｉｏｎ  ｖｅｒｉｏｎ  １．２  Ｌｅｖｅｌ２  Ｒｉｖｉｓｉｏｎ１０３（９  Ｊｕｌｙ  ２００７）
【非特許文献４】ＴＣＧ  Ｍｏｂｉｌｅ  Ｔｒｕｓｔｅｄ  Ｍｏｄｕｌｅ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ  ｖｅｒｓｉｏｎ  １．０  Ｒｅｖｉｓｉｏｎ  １（１２  Ｊｕｎｅ  ２００７）
【非特許文献５】ＴＣＧ  Ｍｏｂｉｌｅ  Ｒｅｆｅｒｅｎｃｅ  Ａｒｃｈｉｔｅｃｔｕｒｅ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ  ｖｅｒｓｉｏｎ１．０  Ｒｅｖｉｓｉｏｎ１（１２  Ｊｕｎｅ  ２００７）
【発明の概要】
【発明が解決しようとする課題】
【００１０】
しかし、従来提案されている技術では、図１６に示すように、端末のソフトウェアを構成するモジュール群が複数の提供者（ステークホルダー）から提供され、それらのモジュール群に対してＴＣＧのセキュアブートを行うように構成された端末において、1つのモジュールを新しいモジュールに更新する場合に課題がある。【００１１】
例えば、従来提案されている技術によれば、セキュアブートでは、第２の提供者（第２ステークホルダー）が提供するモジュール＃２１が、第１の提供者（第１ステークホルダー）が提供するモジュール群であるモジュール＃１１、＃１２、＃１３を利用する場合には、モジュール＃１１、＃１２、＃１３は事前に起動されている必要があるため、モジュール＃２１を起動する前に、正規のモジュール＃１１、＃１２、＃１３が起動されていることを次のような方法で検証する。【００１２】
この場合、第２の提供者がモジュール＃２１と共に提供する証明書＃２１の中には、モジュール＃２１のハッシュ値と共に、第１のモジュール群のそれぞれのモジュールのハッシュ値を累積的にハッシュ演算した場合の累積ハッシュ値が含まれる。【００１３】
モジュール＃２１を起動する前に、証明書＃２１に含まれるモジュール＃２１のハッシュ値と実際のモジュール＃２１から算出したハッシュ値とを照合することで、モジュール＃２１が改ざんされていないことを検証すると同時に、起動されているモジュールの累積ハッシュ値を格納するレジスタであるＰＣＲ（Ｐｌａｔｆｏｒｍ Ｃｏｎｆｉｇｕｒａｔｉｏｎ Ｒｅｇｉｓｔｅｒ）と証明書＃２１に含まれる累積ハッシュ値とを照合することで、モジュール＃２１を起動する前に正規のモジュール＃１１、＃１２、＃１３が起動されていることを検証する。【００１４】
しかし、第２の提供者が提供する証明書＃２１が、第１の提供者が提供する第１のモジュール群に依存することになるため、仮に、モジュール＃１３を新しいモジュールに更新する場合には、モジュール＃１３に対応する証明書＃１３と共に証明書＃２１も同時に更新する必要がある。これを実現するためには、第１のモジュール群のモジュールを更新する度に、第１の提供者がモジュールの更新情報を事前に第２の提供者側に通知して、証明書＃２１も同時に更新するメカニズムが必要となり、提供者間の独立性が損なわれるという問題がある。具体的には、第１の提供者側が緊急にモジュール＃１３を新しいモジュール＃１３に更新する必要があっても、第２の提供者側で新しいモジュール＃１３に対応する証明書＃２１の準備ができるまでは、モジュール＃１３を更新することができず、緊急を要する更新には対応できないといった問題がある。また、第２の提供者側は、第１の提供者が提供するモジュール群の更新のために、証明書＃２１を生成して、それを配信するというコストを払う必要があるといった問題がある。【００１５】
本発明は、こうした従来の問題点を解決するものであり、端末のソフトウェアが、複数の提供者が提供するモジュール群から構成される場合において、提供者間の独立性を維持した上で、モジュール群間を跨るセキュアブートを継続的に行うことが可能な情報処理装置、情報処理方法、これらを実現するコンピュータプログラム及び集積回路を提供することを目的としている。
【課題を解決するための手段】
【００１６】
上記課題を解決するために、本発明の一実施態様である情報処理装置は、第１ステークホルダーに対応する第１の複数のモジュールと、前記第１の複数のモジュールの各モジュールについて、前記各モジュールのハッシュ値から生成される第１照合値及び前記第１の複数のモジュールに含まれるモジュールのハッシュ値を累積した場合の累積値から生成される第１累積照合値を含む証明書とを格納する第１記憶部と、第２ステークホルダーに対応し前記第１の複数のモジュールと依存関係にある第２の複数のモジュールと、前記第２の複数のモジュールの各モジュールについて、前記各モジュールのハッシュ値から生成される第２照合値及び前記第２の複数のモジュールに含まれるモジュールのハッシュ値を累積した場合の累積値から生成される第２累積照合値を含む証明書とを格納する第２記憶部と、前記第１の複数のモジュールの各モジュールの実際のハッシュ値と前記第１照合値とを比較して、前記第１の複数のモジュールの正当性を検証し、前記検証された第１の複数のモジュールを起動する第１制御部と、前記第１の複数のモジュールの正当性が検証された場合、前記第２の複数のモジュールの各モジュールの実際のハッシュ値と前記第２照合値とを比較して、前記第２の複数のモジュールの正当性を検証し、前記検証された第２の複数のモジュールを起動する第２制御部と、前記第２の複数のモジュールの先頭モジュールの正当性を検証する第３照合値及び前記第１の複数のモジュールに含まれるモジュールのハッシュ値を累積した場合の累積値から生成される第３累積照合値を含む連携証明書の保持部と、を具備し、前記第１制御部は、前記第１の複数のモジュールを更新した場合、更新後の第１の複数のモジュールの証明書について前記証明書の署名を検証すると、前記検証された証明書の中の第１照合値を用いて前記連携証明書に含まれる第３累積照合値を更新し、前記第１制御部は、前記第１の複数のモジュールを起動した後、前記連携証明書に含まれる第３累積照合値を用いて正当な第１の複数のモジュールが起動していることを検証し、かつ、前記第２の複数のモジュールの先頭モジュールの正当性を、前記連携証明書に含まれる第３照合値を用いて検証した場合に、前記第２の複数のモジュールの先頭モジュールを起動し、前記第２制御部は、前記第２の複数のモジュールの正当性を検証して、前記第２の複数のモジュールを起動させることを特徴とする。
【発明の効果】
【００１７】
上記態様によると、端末のソフトウェアが、複数のソフトウェアモジュールから構成される場合において、ソフトウェアモジュールを古いソフトウェアモジュールにすりかえるといった不正行為を防止し、各ソフトウェアモジュールの更新処理を個別に行うことが可能となる。【００１８】
また、証明書の更新の際に電源断が起こり、ソフトウェアモジュールのコードイメージや証明書間に不整合が生じてしまった場合でも、セキュアブート処理時に構成情報累積部と代替仮想構成情報累積部の両方を参照して検証をすることで、古いソフトウェアモジュールを実行することなく、セキュアブート処理を完了させ、証明書の更新処理を再開することが出来る。
【図面の簡単な説明】
【００１９】
【図１】本発明の実施の形態１に係る端末の構成を示すブロック図
【図２】図２（ａ）は、本発明の実施の形態１に係る端末の第１のセキュリティモジュールの構成を示すブロック図、図２（ｂ）は、本発明の実施の形態１に係る端末の第２のセキュリティモジュールの構成を示すブロック図
【図３】図３（ａ）は、本発明の実施の形態１に係る端末の第１の記憶部に格納されるモジュールと証明書の一例を示す図、図３（ｂ）は、本発明の実施の形態１に係る端末の第２の記憶部に格納されるモジュールと証明書の一例を示す図、図３（ｃ）は、本発明の実施の形態１に係る端末の連携証明書記憶部に格納される連携証明書の一例を示す図、図３（ｄ）は、本発明の実施の形態２に係る端末の連携証明書記憶部に格納される連携証明書の一例を示す図
【図４】本発明の実施の形態１におけるソフトウェアモジュールの証明書のデータ構造を示す図
【図５】本発明の実施の形態１における連携証明書のデータ構造を示す図
【図６】本発明の実施の形態１におけるセキュアブート処理のフロー図
【図７】本発明の実施の形態１における連携証明書の更新処理の途中までのフロー図
【図８】本発明の実施の形態１における連携証明書の更新処理のフロー図であり、図７の続きの処理を示す
【図９】本発明の実施の形態１における連携証明書の依存リストの一例を示す図
【図１０】本発明の実施の形態２におけるセキュアブート及びソフトウェアモジュールの更新を説明するための模式図
【図１１】本発明の実施の形態２におけるソフトウェアモジュールの証明書のデータ構造を示す図
【図１２】本発明の実施の形態２における連携証明書のデータ構造を示す図
【図１３】本発明の実施の形態２におけるセキュアブート処理のフロー図
【図１４】本発明の実施の形態２における連携証明書の更新処理の途中までのフロー図
【図１５】本発明の実施の形態２における連携証明書の更新処理のフロー図であり、図１４の続きの処理を示す
【図１６】従来技術に基づくセキュアブート処理の一例を説明する図
【発明を実施するための形態】
【００２０】
請求項１記載の態様の情報処理装置は、第１ステークホルダーに対応する第１の複数のモジュールと、前記第１の複数のモジュールの各モジュールについて、前記各モジュールのハッシュ値から生成される第１照合値及び前記第１の複数のモジュールに含まれるモジュールのハッシュ値を累積した場合の累積値から生成される第１累積照合値を含む証明書とを格納する第１記憶部と、第２ステークホルダーに対応し前記第１の複数のモジュールと依存関係にある第２の複数のモジュールと、前記第２の複数のモジュールの各モジュールについて、前記各モジュールのハッシュ値から生成される第２照合値及び前記第２の複数のモジュールに含まれるモジュールのハッシュ値を累積した場合の累積値から生成される第２累積照合値を含む証明書とを格納する第２記憶部と、前記第１の複数のモジュールの各モジュールの実際のハッシュ値と前記第１照合値とを比較して、前記第１の複数のモジュールの正当性を検証し、前記検証された第１の複数のモジュールを起動する第１制御部と、前記第１の複数のモジュールの正当性が検証された場合、前記第２の複数のモジュールの各モジュールの実際のハッシュ値と前記第２照合値とを比較して、前記第２の複数のモジュールの正当性を検証し、前記検証された第２の複数のモジュールを起動する第２制御部と、前記第２の複数のモジュールの先頭モジュールの正当性を検証する第３照合値及び前記第１の複数のモジュールに含まれるモジュールのハッシュ値を累積した場合の累積値から生成される第３累積照合値を含む連携証明書の保持部と、を具備し、前記第１制御部は、前記第１の複数のモジュールを更新した場合、更新後の第１の複数のモジュールの証明書について前記証明書の署名を検証すると、前記検証された証明書の中の第１照合値を用いて前記連携証明書に含まれる第３累積照合値を更新し、前記第１制御部は、前記第１の複数のモジュールを起動した後、前記連携証明書に含まれる第３累積照合値を用いて正当な第１の複数のモジュールが起動していることを検証し、かつ、前記第２の複数のモジュールの先頭モジュールの正当性を、前記連携証明書に含まれる第３照合値を用いて検証した場合に、前記第２制御部を起動して前記第２の複数のモジュールの正当性を検証させることを特徴とする。
【００２１】
本態様によると、前記第２の複数のモジュールの先頭モジュールの正当性を検証する第３照合値及び前記第１の複数のモジュールに含まれるモジュールのハッシュ値を累積した場合の累積値から生成される第３累積照合値を含む連携証明書を保持する。
【００２２】
また、前記第１制御部は、前記第１の複数のモジュールを更新した場合、更新後の第１の複数のモジュールの証明書について前記証明書の署名を検証すると、前記検証された証明書の中の第１照合値を用いて前記連携証明書に含まれる第３累積照合値を更新し、一方、前記第１制御部は、前記第１の複数のモジュールを起動した後、前記連携証明書に含まれる第３累積照合値を用いて正当な第１の複数のモジュールが起動していることを検証し、かつ、前記第２の複数のモジュールの先頭モジュールの正当性を、前記連携証明書に含まれる第３照合値を用いて検証した場合に、前記第２の複数のモジュールの先頭モジュールを起動し、前記第２制御部は、前記第２の複数のモジュールの正当性を検証して、前記第２の複数のモジュールを起動するものである。
【００２３】
これにより、前記第１の複数のモジュールの正当性が検証されたことを前提に、前記第２の複数のモジュールの正当性を検証する場合において、前記第１の複数のモジュールの更新があった場合に、前記第１の複数のモジュールの更新があったために変更が必要となる第２制御部での処理を前記第１制御部で行う。そのため、前記第１の複数のモジュールの更新があった場合でも、前記第２制御部においては前記第１の複数のモジュールの更新前と同一の処理を行うだけよく、前記第１の複数のモジュールの更新に連動して処理を変更する負荷を回避できる。
【００２４】
即ち、従来では、前記第２の複数のモジュールの検証は前記第１の複数のモジュールに依存するので、前記第１の複数のモジュールの更新があった場合、前記第２の複数のモジュールの先頭モジュールの証明書に含まれる、前記第２の複数のモジュールの先頭モジュールの正当性を検証する第３照合値及び前記第１の複数のモジュールに含まれるモジュールのハッシュ値を累積した場合の累積値から生成される第３累積照合値を、前記第２制御部が更新する必要があった。換言すれば、従来では、前記第１の複数のモジュールの更新があった場合に、前記第２の複数のモジュールの先頭モジュールに対応する証明書を前記第２制御部が更新するためには、前記第２の複数のモジュールの検証は前記第１の複数のモジュールに依存するので、更新後の前記第１の複数のモジュールに含まれるモジュールのハッシュ値を累積した場合の累積値から生成される第３累積照合値を、前記第１制御部から前記第２制御部に通知する必要があった。従って、更新後の前記第３累積照合値を前記第２制御部が有しない場合は、前記第２制御部は前記第１の複数のモジュールを依存した状態での前記第２の複数のモジュールの検証ができなかった。
【００２５】
しかし、本態様によると、前記第２の複数のモジュールの先頭モジュールの正当性を検証する第３照合値及び前記第１の複数のモジュールに含まれるモジュールのハッシュ値を累積した場合の累積値から生成される第３累積照合値を含む連携証明書を別途設け、この連携証明書を用いて前記第１制御部が、正当な第１の複数のモジュールが起動していることを検証した上で、前記第２の複数のモジュールの先頭モジュールの正当性を検証する。
【００２６】
一方、前記第２制御部では、前記第１の複数のモジュールの更新があった場合でも、正当な第１の複数のモジュールが起動していること検証せずに、前記第１の複数のモジュールの更新前と同一の処理を行って、前記第２の複数のモジュールの正当性を検証する。
【００２７】
この場合、前記第２制御部では、前記第１の複数のモジュールの更新があった場合でも、正当な第１の複数のモジュールが起動していること検証しないため、前記第１の複数のモジュールと前記第２の複数のモジュールとは独立性を確保することができ、連携証明書を用いて前記第１制御部が、前記第１の複数のモジュールの更新があった場合でも、正当な第１の複数のモジュールが起動していること検証した上で、前記第２の複数のモジュールの先頭モジュールの正当性を検証するため、連携証明書を媒体として前記第１の複数のモジュールと前記第２の複数のモジュールとは連携されることになる。
【００２８】
従って、前記１の複数のモジュールの更新後も、前記第２の複数のモジュールを前記１の複数のモジュールに依存させつつ、前記第１の複数のモジュールの更新に連動して前記第２制御部における処理を変更する負荷を回避できる。
【００２９】
請求項２記載の態様の情報処理装置は、さらに、前記第２制御部によって管理され起動済みの前記第２の複数のモジュールに含まれるモジュールのハッシュ値を累積した場合の累積値を格納する第３記憶部を有し、前記連携証明書は、さらに、前記第２の複数のモジュールが起動されていないことを示す第４累積値を含み、前記第１制御部は、さらに、第２の複数のモジュールの先頭モジュールの正当性を検証すると、前記第２制御部から前記第３記憶部に格納された第２の複数のモジュールの検証値を取得し、この取得した検証値と前記連携証明書に含まれる第４累積値とを比較して前記第２の複数のモジュールを起動する前に前記第２制御部が起動したモジュールがないことを検証した場合、前記第２の複数のモジュールの先頭モジュールを起動し、前記第２制御部は、前記第２の複数のモジュールの正当性を検証して、前記第２の複数のモジュールを起動することを特徴とする。
【００３０】
本態様によると、前記第２制御部によって管理され前記第２の複数のモジュールの検証値を格納する第３記憶部を有し、前記連携証明書は、さらに前記第２の複数のモジュールが起動されていないことを示す第４累積値を含み、前記第１制御部は、前記第２制御部から前記第３記憶部に格納された第２の複数のモジュールの検証値を取得し、この取得した検証値と前記第２の所定の照合値を比較して、前記第２制御部が前記第２の複数のモジュールを起動する前に前記第２制御部が起動したモジュールがないことを検証した場合、前記第２制御部に対して前記第２の複数のモジュールの正当性を検証させる。
【００３１】
即ち、前記第２制御部が前記第２の複数のモジュールを起動する前に前記第２制御部が起動したモジュールがない場合には、前記第３記憶部には、前記第２の複数のモジュールの検証値として例えばゼロが格納されている。そのため、前記第２の複数のモジュールが起動されていないことを示す第４累積値、即ち、例えばゼロと比較すると、両者は一致して、前記第２制御部が前記第２の複数のモジュールを起動する前に前記第２制御部が起動したモジュールがないことを前記第１制御部で検証できる。
【００３２】
これにより、前記第１制御部が前記第２の複数のモジュールの先頭モジュールの正当性を検証するだけではなく、前記先頭モジュールを含む第２の複数のモジュールを起動する前に前記第２制御部によって起動されたモジュールがないことを確認して前記第２制御部を起動させる。そのため、前記第２の複数のモジュールを起動させる前に前記第２制御部においてウィルス等が起動していないことを前記第１制御部が確認した上で前記第１制御部は前記第２制御部を起動させることができる。その結果、前記第１制御部が前記第２制御部の安全性を確認した上で前記第２制御部を起動させることができる。
【００３３】
請求項３記載の態様の情報処理装置は、さらに、前記保持部は、前記第１記憶部に含まれることを特徴とする。
【００３４】
本態様によると、前記連携証明書を格納するために必要な記憶領域を前記第１記憶部の記憶領域に中に確保することにより、情報処理装置において連携証明書を格納する記憶領域を確保するための分の新たなコストアップを回避できる。
【００３５】
請求項４記載の態様の情報処理装置は、さらに、前記第１制御部は、前記第２の複数の先頭モジュールがのモジュールを更新された場合、前記連携証明書に含まれる第３照合値を更新することを特徴とする。
【００３６】
本態様によると、前記第１制御部は、前記第２の複数のモジュールを更新した場合、前記連携証明書に含まれる第３照合値を更新することにより、前記第１制御部が更新後の第３照合値を格納した連携証明書を用いて、前記第２の複数のモジュールの正当性を検証するので、前記第１の複数のモジュールに依存する第２の複数のモジュールの正当性を検証するために用いる第３照合値を、前記第２制御部が更新する負荷を回避できる。
【００３７】
請求項５記載の態様の情報処理装置は、さらに、前記第２制御部は、前記第２の複数のモジュールの先頭モジュールを更新した場合、前記第１制御部にその旨を通知し、第１制御部は、前記通知を受信すると、前記連携証明書の前記第３照合値を前記更新された第２の複数のモジュールの先頭モジュールの第２照合値に更新することを特徴とする。
本態様によると、前記第２の複数のモジュールの更新があった場合、前記第２制御部は、第１制御部に通知し、前記通知を受信した第１制御部は、前記連携証明書の前記第３照合値を前記更新された第２の複数のモジュールの先頭モジュールの第２照合値に更新するので、前記第２の複数の先頭モジュールの更新後も、前記第１制御部は前記第２の複数のモジュールの先頭モジュールの正当性を適正に検証できる。
【００３８】
請求項６記載の態様の情報処理方法は、さらに、第１ステークホルダーに対応する第１の複数のモジュールと、前記第１の複数のモジュールの各モジュールについて、前記各モジュールのハッシュ値から生成される第１照合値及び前記第１の複数のモジュールに含まれるモジュールのハッシュ値を累積した場合の累積値から生成される第１累積照合値を含む証明書とを格納し、第２ステークホルダーに対応し前記第１の複数のモジュールと依存関係にある第２の複数のモジュールと、前記第２の複数のモジュールの各モジュールについて、前記各モジュールのハッシュ値から生成される第２照合値及び前記第２の複数のモジュールに含まれるモジュールのハッシュ値を累積した場合の累積値から生成される第２累積照合値を含む証明書とを格納し、前記第１の複数のモジュールの各モジュールの実際のハッシュ値と前記第１照合値とを比較して、前記第１の複数のモジュールの正当性を検証し、前記検証された第１の複数のモジュールを起動し、前記第１の複数のモジュールの正当性が検証された場合、前記第２の複数のモジュールの各モジュールの実際のハッシュ値と前記第２照合値とを比較して、前記第２の複数のモジュールの正当性を検証し、前記検証された第２の複数のモジュールを起動する情報処理方法であって、前記第２の複数のモジュールの先頭モジュールの正当性を検証する第３照合値及び前記第１の複数のモジュールに含まれるモジュールのハッシュ値を累積した場合の累積値から生成される第３累積照合値を含む連携証明書の保持し、前記第１の複数のモジュールを更新した場合、更新後の第１の複数のモジュールの証明書について前記証明書の署名を検証すると、前記検証された証明書の中の第１照合値を用いて前記連携証明書に含まれる第３累積照合値を更新し、前記第１の複数のモジュールを起動した後、前記連携証明書に含まれる第３累積照合値を用いて正当な第１の複数のモジュールが起動していることを検証し、かつ、前記第２の複数のモジュールの先頭モジュールの正当性を、前記連携証明書に含まれる第３照合値を用いて検証した場合に、前記第２の複数のモジュールの正当性を検証して、前記第２の複数のモジュールを起動させることを特徴とする。
【００３９】
請求項７記載の態様のコンピュータプログラムは、コンピュータに対し、第１ステークホルダーに対応する第１の複数のモジュールと、前記第１の複数のモジュールの各モジュールについて、前記各モジュールのハッシュ値から生成される第１照合値及び前記第１の複数のモジュールに含まれるモジュールのハッシュ値を累積した場合の累積値から生成される第１累積照合値を含む証明書とを第１記憶部に格納する第１処理と、第２ステークホルダーに対応し前記第１の複数のモジュールと依存関係にある第２の複数のモジュールと、前記第２の複数のモジュールの各モジュールについて、前記各モジュールのハッシュ値から生成される第２照合値及び前記第２の複数のモジュールに含まれるモジュールのハッシュ値を累積した場合の累積値から生成される第２累積照合値を含む証明書とを第２記憶部に格納する第２処理と、前記第１の複数のモジュールの各モジュールの実際のハッシュ値と前記第１照合値とを比較して、前記第１の複数のモジュールの正当性を検証し、前記検証された第１の複数のモジュールを起動する第３処理と、前記第１の複数のモジュールの正当性が検証された場合、前記第２の複数のモジュールの各モジュールの実際のハッシュ値と前記第２照合値とを比較して、前記第２の複数のモジュールの正当性を検証し、前記検証された第２の複数のモジュールを起動する第４処理と、を実行させるコンピュータプログラムであって、前記第２の複数のモジュールの先頭モジュールの正当性を検証する第３照合値及び前記第１の複数のモジュールに含まれるモジュールのハッシュ値を累積した場合の累積値から生成される第３累積照合値を含む連携証明書を保持部に格納する第５処理を実行させ、前記第３処理は、前記第１の複数のモジュールを更新した場合、更新後の第１の複数のモジュールの証明書について前記証明書の署名を検証すると、前記検証された証明書の中の第１照合値を用いて前記連携証明書に含まれる第３累積照合値を更新し、前記第３処理は、前記第１の複数のモジュールを起動した後、前記連携証明書に含まれる第３累積照合値を用いて正当な第１の複数のモジュールが起動していることを検証し、かつ、前記第２の複数のモジュールの先頭モジュールの正当性を、前記連携証明書に含まれる第３照合値を用いて検証した場合に、前記第４処理を起動して前記第２の複数のモジュールの正当性を検証して、前記第２の複数のモジュールを起動させることを特徴とする。
【００４０】
請求項８記載の態様の集積回路は、第１ステークホルダーに対応する第１の複数のモジュールと、前記第１の複数のモジュールの各モジュールについて、前記各モジュールのハッシュ値から生成される第１照合値及び前記第１の複数のモジュールに含まれるモジュールのハッシュ値を累積した場合の累積値から生成される第１累積照合値を含む証明書とを格納する第１記憶部と、第２ステークホルダーに対応し前記第１の複数のモジュールと依存関係にある第２の複数のモジュールと、前記第２の複数のモジュールの各モジュールについて、前記各モジュールのハッシュ値から生成される第２照合値及び前記第２の複数のモジュールに含まれるモジュールのハッシュ値を累積した場合の累積値から生成される第２累積照合値を含む証明書とを格納する第２記憶部と、前記第１の複数のモジュールの各モジュールの実際のハッシュ値と前記第１照合値とを比較して、前記第１の複数のモジュールの正当性を検証し、前記検証された第１の複数のモジュールを起動する第１制御部と、前記第１の複数のモジュールの正当性が検証された場合、前記第２の複数のモジュールの各モジュールの実際のハッシュ値と前記第２照合値とを比較して、前記第２の複数のモジュールの正当性を検証し、前記検証された第２の複数のモジュールを起動する第２制御部と、前記第２の複数のモジュールの先頭モジュールの正当性を検証する第３照合値及び前記第１の複数のモジュールに含まれるモジュールのハッシュ値を累積した場合の累積値から生成される第３累積照合値を含む連携証明書の保持部と、を具備した集積回路であって、前記第１制御部は、前記第１の複数のモジュールを更新した場合、更新後の第１の複数のモジュールの証明書について前記証明書の署名を検証すると、前記検証された証明書の中の第１照合値を用いて前記連携証明書に含まれる第３累積照合値を更新し、前記第１制御部は、前記第１の複数のモジュールを起動した後、前記連携証明書に含まれる第３累積照合値を用いて正当な第１の複数のモジュールが起動していることを検証し、かつ、前記第２の複数のモジュールの先頭モジュールの正当性を、前記連携証明書に含まれる第３照合値を用いて検証した場合に、前記第２の複数のモジュールの先頭モジュールを起動し、前記第２制御部は、前記第２の複数のモジュールの正当性を検証して、前記第２の複数のモジュールを起動することを特徴とする。
【００４１】
（第１の実施形態）
本発明の第１の実施形態における端末１００の構成について説明する。
【００４２】
端末１００は、図１に示すように、ＣＰＵ１０１と、第１の提供者（第１のステークホルダー）から提供されるソフトウェアモジュールに関する処理を行う第1の情報処理部１１０と、第２の提供者（第１のステークホルダー）から提供されるソフトウェアモジュールに関する処理を行う第２の情報処理部１２０と、第1の情報処理部１１０のセキュアブートと第２の情報処理部１２０のセキュアブートとを繋ぐセキュアブート処理に用いられる連携証明書の保持・更新を行う連携処理部１３０とから構成される。
【００４３】
ここで、第1の情報処理部１１０のセキュアブートと第２の情報処理部１２０のセキュアブートとを繋ぐセキュアブート処理とは、第1の情報処理部１１０のセキュアブート処理から第２の情報処理部１２０のセキュアブート処理に移行する際に行う処理である。
【００４４】
第1の情報処理部１１０は、第1の提供者が提供するソフトウェアのモジュール群である第1のモジュール群を格納する第１の記憶部１１１と、第1のモジュール群のセキュアブート処理を制御する第1のセキュアブート制御部１１２と、耐タンパ性を備える第1のセキュリティモジュール１１３と、第1のモジュール群のモジュールを第1の提供者のサーバ（不図示）からネットワークを通じてダウンロードし、第１の記憶部１１１に保持されているモジュールを更新する第1のダウンロード更新部１１４とから構成される。
【００４５】
第２の情報処理部１１０は、第２の提供者が提供するソフトウェアのモジュール群である第２のモジュール群を格納する第２の記憶部１２１と、第２のモジュール群のセキュアブート処理を制御する第２のセキュアブート制御部１２２と、耐タンパ性を備える第２のセキュリティモジュール１２３と、第２のモジュール群のモジュールを第２の提供者のサーバ（不図示）からネットワークを通じてダウンロードし、第２の記憶部１２１に保持されているモジュールを更新する第２のダウンロード更新部１２４とから構成される。
【００４６】
連携処理部１３０は、連携証明書を格納する連携証明書記憶部１３１と、連携証明書を更新する連携証明書更新部１３５とから構成される。
【００４７】
第１のセキュアブート制御部１１２と第２のセキュアブート制御部１２２、第１のダウンロード更新部１１４と第２のダウンロード更新部１２４、連携証明書更新部１３５は、一般的にはＣＰＵ１０１が実行するソフトウェアによって実現されるが、一部もしくは全部をハードウェアによって実現されてもよい。
【００４８】
また、第１のセキュリティモジュール１１３と第２のセキュリティモジュール１２３は、耐タンパ性を備えるハードウェアまたはＣＰＵ１０１が実行する耐タンパ化されたソフトウェアによって実現される。
【００４９】
第１の記憶部１１１と第２の記憶部１２１と連携証明書記憶部１３１は、具体的には不揮発性メモリやハードディスクその他の記憶装置によって実現される。
【００５０】
さらに、第１のセキュリティモジュール１１３は、図２（ａ）に示すように、ＣＰＵ１０１が実際に実行するソフトウェアモジュールの構成を示す構成情報を保持する構成情報累積部２１１と、ソフトウェアモジュールの証明書の有効性を検証する証明書検証部２１２と、構成情報累積部２１１が保持する構成情報を証明書の中の構成照合値と照合する照合部２１３と、ソフトウェアモジュールの有効なバージョンの下限を示すカウンタ値を保持するカウンタ部２１４と、データの暗復号及び署名生成や署名検証を行う暗復号部２１５と、を備える。また、構成情報累積部２１１は、第1の情報処理部で起動されたソフトウェアモジュールのハッシュ値の累積ハッシュ演算を行なう累積部２１６と、累積部２１６が算出した累積値（以下、累積演算の結果をこのように呼ぶ）を保持する構成情報保持部２１７と、を備えている。ここで構成情報保持部２１７は、ＴＣＧにおけるセキュリティモジュールであるＴＰＭのＰＣＲ（Ｐｌａｔｆｏｒｍ Ｃｏｎｆｉｇｕｒａｔｉｏｎ Ｒｅｇｉｓｔｅｒ）に相当するものであり、構成情報保持部２１７に保持される値は、第1の情報処理部で起動されているモジュールの構成を示す。
構成情報保持部２１７は、複数のレジスタから構成され、累積部２１６がどのレジスタに対して累積ハッシュ演算を行うかはレジスタ番号によって指定される。
【００５１】
暗復号部２１５は、データの暗復号処理や署名生成や署名検証を行うための複数の鍵データを保持している。また、第１の記憶部には、暗復号部２１５が保持している鍵データで暗号化された別の鍵データが格納されており（不図示）、その暗号化された鍵データを、第１のセキュリティモジュールにロードして、暗復号部２１５が保持している鍵データで復号することで、暗復号部２１５はその復号した鍵データを用いて暗復号処理や署名生成や署名検証を行う。
【００５２】
累積部２１６は、構成情報保持部２１７の１つのレジスタが保持する値のバイト列とソフトウェアモジュールのハッシュ演算の結果のバイト列とを連結し、さらに連結したバイト列に対してハッシュ演算を行い、その結果をそのレジスタに再格納する。
【００５３】
第２のセキュリティモジュール１２３は、第１のセキュリティモジュール１１３と同様の構成を備えており、図２（ｂ）に示すように、ＣＰＵ１０１が実際に実行するソフトウェアモジュールの構成を示す構成情報を保持する構成情報累積部２２１と、ソフトウェアモジュールの証明書の有効性を検証する証明書検証部２２２と、構成情報累積部２２１が保持する構成情報を証明書の中の構成照合値と照合する照合部２２３と、ソフトウェアモジュールの有効なバージョンの下限を示すカウンタ値を保持するカウンタ部２２４と、データの暗復号及び署名生成や署名検証を行う暗復号部２２５と、を備える。また、構成情報累積部２２１は、第２の情報処理部で起動されたソフトウェアモジュールのハッシュ値の累積ハッシュ演算を行なう累積部２２６と、複数のレジスタから構成され、累積部２２６が算出した累積値（以下、累積演算の結果をこのように呼ぶ）を保持する構成情報保持部２２７と、を備えている。ここで構成情報保持部２２７は、ＴＣＧにおけるセキュリティモジュールであるＴＰＭのＰＣＲ（Ｐｌａｔｆｏｒｍ Ｃｏｎｆｉｇｕｒａｔｉｏｎ Ｒｅｇｉｓｔｅｒ）に相当するものであり、構成情報保持部２２７に保持される値は、第２の情報処理部で起動されているモジュールの構成を示す。
構成情報保持部２２７は、複数のレジスタから構成され、累積部２２６がどのレジスタに対して累積ハッシュ演算を行うかはレジスタ番号によって指定される。
【００５４】
暗復号部２２５は、データの暗復号処理や署名生成や署名検証を行うための複数の鍵データを保持している。また、第２の記憶部には、暗復号部２２５が保持している鍵データで暗号化された別の鍵データが格納されており（不図示）、その暗号化された鍵データを、第２のセキュリティモジュールにロードして、暗復号部２２５が保持している鍵データで復号することで、暗復号部２２５はその復号した鍵データを用いて暗復号処理や署名生成や署名検証を行う。
【００５５】
累積部２２６は、構成情報保持部２２７の１つのレジスタが保持する値のバイト列とソフトウェアモジュールのハッシュ演算の結果のバイト列とを連結し、さらに連結したバイト列に対してハッシュ演算を行い、その結果をそのレジスタに再格納する。
【００５６】
図３（ａ）は、第１の記憶部に格納されるモジュールと証明書の一例を示し、この場合、第1のモジュール群は、モジュール＃１１、モジュール＃１２、モジュール＃１３の３つのモジュールから構成され、モジュール＃１１、モジュール＃１２、モジュール＃１３にそれぞれ対応する証明書＃１１、証明書＃１２、証明書＃１３が保持されている。
【００５７】
第１のセキュアブート制御部１１２は、証明書＃１１、証明書＃１２、証明書＃１３を用いて、モジュール＃１１、モジュール＃１２、モジュール＃１３に関して、非特許文献４及び非特許文献５に示されている方式に基づくセキュアブートを行い、モジュール＃１１、モジュール＃１２、モジュール＃１３の順番でモジュールを起動する。
【００５８】
図３（ｂ）は、第２の記憶部に格納されるモジュールと証明書の一例を示し、この場合、第２のモジュール群は、モジュール＃２１、モジュール＃２２、モジュール＃２３の３つのモジュールから構成され、モジュール＃２１、モジュール＃２２、モジュール＃２３にそれぞれ対応する証明書＃２１、証明書＃２２、証明書＃２３が保持されている。
【００５９】
第２のセキュアブート制御部１２２は、証明書＃２１、証明書＃２２、証明書＃２３を用いて、モジュール＃２１、モジュール＃２２、モジュール＃２３に関して、非特許文献４及び非特許文献５に示されている方式に基づくセキュアブートを行い、モジュール＃２１、モジュール＃２２、モジュール＃２３の順番でモジュールを起動する。
【００６０】
図４は、これらのソフトウェアモジュールに対応する証明書のデータ構造を示しており、証明書４００は、その証明書が対応付けられたソフトウェアモジュールを識別する情報であるラベル４０１と、ソフトウェアモジュールのバージョンを示す参照カウンタ値４０２と、ソフトウェアモジュールが実行される前の端末１００の状態においてセキュリティモジュールの構成情報保持部（２１７、２２７）に保持されるべき累積ハッシュ値を示す構成照合値４０３と、ソフトウェアモジュールのダイジェストとしてモジュールのコードイメージをハッシュ演算した場合の値を示すモジュール計測値４０５と、モジュール計測値４０５が示す値を累積ハッシュ演算する構成情報保持部（２１７、２２７）のレジスタ番号を指定するレジスタインデックス４０４と、証明書の署名を検証する鍵を示す検証鍵ＩＤ４０６と、検証鍵ＩＤ４０６が示す鍵に対応する秘密鍵によるラベル４０１から検証鍵ＩＤ４０６までのデータに対する電子署名４０７と、から構成される。
【００６１】
モジュール計測値４０５は、正当なソフトウェアモジュールのコードイメージのハッシュ値であり、実際のソフトウェアモジュールのコードイメージのハッシュ演算の結果と照合することで、そのソフトウェアモジュールが改ざんされていないことを検証することが可能となる。
【００６２】
また、セキュリティモジュールのカウンタ部は、ソフトウェアモジュールの有効なバージョンの下限を示すので、参照カウンタ値４０２は、セキュリティモジュールのカウンタ部に格納されるカウンタ値以上であることを検証することで、リボークされた古いモジュールの証明書ではないこと、つまり、そのモジュールが有効なソフトウェアモジュールであることを検証することが可能となる。
【００６３】
また、構成照合値４０３は、セキュリティモジュールの構成情報保持部に格納される累積ハッシュ値と照合することで、ソフトウェアモジュールを実行する前の状態として正しい状態（その前に実行されているソフトウェアモジュールが有効なソフトウェアモジュールであり、正しい順番で実行されている）であることを検証するために用いられる。
また、電子署名５０７は、公開鍵暗号方式の署名鍵による電子署名であり、署名鍵は、１０２４ビット以上の鍵長の鍵であることが望ましい。
【００６４】
図３（ｃ）は、連携証明書記憶部に格納される連携証明書の一例を示し、この場合、第１のモジュール群のセキュアブートと第２のモジュール群のセキュアブートを繋ぐセキュアブートに用いられる１つの連携証明書が保持されている。具体的には、第１のモジュール群のモジュール＃１３を起動した後に、第２のモジュール群のモジュール＃２１を起動する際のセキュアブートに用いられる連携証明書が保持されている。
【００６５】
図５は、この連携証明書のデータ構造を示しており、連携証明書５００は、その証明書が対応付けられたソフトウェアモジュールを識別する情報であるラベル５０１と、ソフトウェアモジュールのバージョンを示す参照カウンタ値５０２と、ソフトウェアモジュールが実行される前の端末１００の状態において、第1のセキュリティモジュール１１３の構成情報保持部に保持されるべき累積ハッシュ値を示す第1の構成照合値５０３と、第２のセキュリティモジュール１２３の構成情報保持部に保持されるべき累積ハッシュ値を示す第２の構成照合値５０４と、第２のモジュール群の先頭のモジュールのコードイメージをハッシュした場合の値を示すモジュール計測値５０５と、第２のモジュール群が依存する第１のモジュール群の中のモジュールを示す依存リスト５０７と、証明書の署名を検証する鍵を示す検証鍵ＩＤ５０６と、検証鍵ＩＤ５０６が示す鍵に対応する秘密鍵によるラベル５０１から検証鍵ＩＤ５０６までのデータに対する電子署名５０８と、から構成される。
【００６６】
この場合、ラベル５０１は、第２のモジュール群のモジュール＃２１を識別するラベルであり、モジュール計測値５０５は、正当なモジュール＃２１のコードイメージのハッシュ値であり、実際のモジュール＃２１のコードイメージのハッシュ演算の結果と照合することで、モジュール＃２１が改ざんされていないことを検証することが可能となる。
【００６７】
また、参照カウンタ値５０２は、セキュリティモジュールのカウンタ部に格納されるカウンタ値以上であることを検証することで、連携証明書がリボークされた古い連携証明書ではないことを検証することが可能となる。
【００６８】
また、第1の構成照合値５０３は、第1のセキュリティモジュールの構成情報保持部に格納される累積値と照合することで、モジュール＃２１を実行する前の状態として正しい状態（その前に実行されているモジュール＃１１、＃１２、＃１３が有効なソフトウェアモジュールであり、正しい順番で実行されている）であることを検証するために用いられる。
【００６９】
また、第２の構成照合値５０４は、第２のセキュリティモジュールの構成情報保持部に格納される累積値と照合することで、モジュール＃２１を実行する前の状態として正しい状態（第２のモジュール群のモジュールが起動されていない状態）であることを検証するために用いられる。
【００７０】
また、依存リスト５０７は、図９に示すように、連携証明書更新部１３５が第1の構成照合値５０３を算出する際に行う累積ハッシュ演算の順番と、第２のモジュール群が依存するモジュールの証明書のラベルと、が示されている。図９の場合には、モジュール＃２１が、証明書＃１１（ＭＯＤＵＬＥ１１）と、証明書＃１２（ＭＯＤＵＬＥ１２）と、証明書＃１３（ＭＯＤＵＬＥ１３）と、に依存し、証明書＃１１、証明書＃１２、証明書＃１３の順番で、それぞれのモジュール計測値を用いて累積ハッシュ演算を行うことで第1の構成照合値５０３が算出されることを示している。
【００７１】
また、電子署名５０８は、公開鍵暗号方式の署名鍵による電子署名であり、署名鍵は、１０２４ビット以上の鍵長の鍵であることが望ましい。
【００７２】
次に、図１０は、第１の記憶部に図３（ａ）に示すモジュールと証明書が、第２の記憶部に図３（ｂ）に示すモジュールと証明書がそれぞれ格納される場合の端末１００におけるセキュアブート及びソフトウェアモジュールの更新を模式的に示している。
【００７３】
端末１００におけるセキュアブートでは、まず、第１のセキュアブート制御部１１２が証明書＃１１、証明書＃１２、証明書＃１３を用いてモジュール＃１１、モジュール＃１２、モジュール＃１３の順にセキュアブートを行い、さらに、連携証明書を用いてモジュール＃１３からモジュール＃２１へのセキュアブートを行い、次に、第２のセキュアブート制御部１２２が証明書＃２１、証明書＃２２、証明書＃２３を用いてモジュール＃２１、モジュール＃２２、モジュール＃２３の順にセキュアブートをおこなって、モジュール＃１１、モジュール＃１２、モジュール＃１３、モジュール＃２１、モジュール＃２２、モジュール＃２３の順での一連のセキュアブートが行われる。
【００７４】
また、ソフトウェアモジュールの更新では、第１のサーバまたは第２のサーバから個別にソフトウェアモジュールと対応する証明書とが第１のダウンロード更新部１１４または第２のダウンロード更新部１２４によってダウンロードされ、第１の記憶部または第２の記憶部に格納されているソフトウェアモジュールと証明書とが更新される。その後、連携証明書更新部１３５が第１の記憶部または第２の記憶部に格納されている証明書を参照して連携証明書を更新する。
【００７５】
次に、端末１００の詳細な動作を、第１の記憶部に図３（ａ）に示すモジュールと証明書が、第２の記憶部に図３（ｂ）に示すモジュールと証明書がそれぞれ格納される場合について説明する。
【００７６】
まず、図６を用いて、第１のモジュール群のセキュアブートと第２のモジュール群のセキュアブートとの間に実行することで、この２つのセキュアブートを一連のセキュアブートとして繋ぐセキュアブートの動作について説明する。具体的には、第１のモジュール群のモジュール＃１１、モジュール＃１２、モジュール＃１３を順次起動した後に、第２のモジュール群のモジュール＃２１を起動する際に行うセキュアブートの動作について説明する。
【００７７】
まず、第1のセキュアブート制御部１１２は、第１のモジュール群の非特許文献４及び非特許文献５に示されている方式に基づくセキュアブートを実行し、モジュール＃１１、モジュール＃１２、モジュール＃１３を順次起動した後、連携証明書記憶部１３１から連携証明書５００を読み出し（Ｓ６０１）、第1のセキュリティモジュールに読み出した連携証明書５００の検証を要求する検証要求を送信する（Ｓ６０２）。
検証要求を受信した第１のセキュリティモジュール１１３は、証明書検証部が受信した連携証明書を検証する（Ｓ６０３）。
【００７８】
この連携証明書の検証では、まず、第１のセキュリティモジュールが保持する連携証明書５００の検証鍵ＩＤ５０６が示す鍵を用いて電子署名５０８が検証される。
【００７９】
さらに、連携証明書５００の参照カウンタ値５０２が、カウンタ部２１４が保持するカウンタ値以上であることを判定し、連携証明書５００がリボークされた古い連携証明書ではないことが検証される。
【００８０】
次に、照合部２１３が、構成情報保持部２１７が保持する累積ハッシュ値と連携証明書５００の中の第1の構成照合値５０３とを照合し、モジュール＃２１を実行する前の状態として第１の情報処理部側が正しい状態（その前に実行されているモジュール＃１１、＃１２、＃１３が有効なソフトウェアモジュールであり、正しい順番で実行されている）であることを検証する。
【００８１】
照合部２１３による検証結果を受信した証明書検証部は、この検証結果を第1のセキュアブート制御部１１２に送信する（Ｓ６０４）。
【００８２】
検証結果を受信した第1のセキュアブート制御部１１２は、何れかの検証処理でエラーが検出された場合にはセキュアブートを中止し、すべての検証処理の結果が成功であった場合に、第２の記憶部１２１から第２のモジュール群のモジュール＃２１を読み出す（Ｓ６０５）。
【００８３】
第1のセキュアブート制御部１１２は、読み出したモジュール＃２１のコードイメージのハッシュ演算を行い、その結果と連携証明書５００のモジュール計測値５０５とを照合することで読み出したモジュール＃２１が連携証明書５００に対応する正当なモジュール＃２１であることを検証する（Ｓ６０６）。
【００８４】
第1のセキュアブート制御部１１２は、このモジュール＃２１の検証の結果、エラーが検出された場合には、セキュアブートを中止し、検証の結果が成功であった場合に、第２のセキュリティモジュール１２３に第２の情報処理部側で起動されているソフトウェアモジュールの構成を示す構成情報を要求する構成情報要求を送信する（Ｓ６０７）。
【００８５】
構成情報要求を受信した第２のセキュリティモジュール１２３は、暗復号部２２５が保持する署名鍵を用いて構成情報保持部２２７が保持する累積ハッシュ値に電子署名を施して構成情報を生成し（Ｓ６０８）、第1のセキュアブート制御部１１２に送信する（Ｓ６０９）。
【００８６】
構成情報を受信した第1のセキュアブート制御部１１２は、まず、受信した構成情報に施されている電子署名を第２のセキュリティモジュール１２３の署名鍵に対応する署名検証鍵を用いて検証し、さらに、構成情報が示す累積ハッシュ値と連携証明書５００の中の第２の構成照合値とを照合し、モジュール＃２１を実行する前の状態として第２の情報処理部側が正しい状態（第２のモジュール群のモジュールが起動されていない状態）であることを検証する（Ｓ６１０）。
【００８７】
第1のセキュアブート制御部１１２は、この検証の結果、エラーが検出された場合には、セキュアブートを中止し、検証の結果が成功であった場合に、モジュール＃２１を起動し、ＣＰＵ１０１がモジュール＃２１のコードイメージを実行する（Ｓ６１１）。
この後、第２のセキュアブート制御部１２２により第２のモジュール群のセキュアブートが開始される。
【００８８】
以上のように、連携証明書を用いて、セキュアブートを行うことで、２つのセキュアブートを一連のセキュアブートとして実行することが出来る。
【００８９】
次に、図７、８を用いて、連携証明書５００の更新処理の動作について説明する。
【００９０】
連携証明書５００の更新処理は、第２のモジュール群において最初に起動されるべきモジュール＃２１の証明書＃２１が更新された場合、または、連携証明書５００の依存リスト５０７に示されているモジュール＃１１、＃１２、＃１３の何れかが更新された場合に開始される。
【００９１】
証明書＃２１が更新された場合には、ダウンロード更新部１２４から連携証明書更新部１３５に証明書＃２１が更新されたことが通知され、モジュール＃１１、＃１２、＃１３の何れかが更新された場合には、ダウンロード更新部１１４から連携証明書更新部１３５に更新されたことが通知される。
【００９２】
まず、更新の通知を受信した連携証明書更新部１３５は、連携証明書記憶部１３１から連携証明書５００を読み出し（Ｓ７０１）、第1のセキュリティモジュールに読み出した連携証明書５００の検証を要求する検証要求を送信する（Ｓ７０２）。
【００９３】
検証要求を受信した第１のセキュリティモジュール１１３は、証明書検証部が受信した連携証明書を検証する（Ｓ７０３）。
【００９４】
この連携証明書の検証では、まず、連携証明書５００の電子署名５０８が検証され、さらに、連携証明書５００の参照カウンタ値５０２が、カウンタ部２１４が保持するカウンタ値以上であることを判定し、連携証明書５００がリボークされた古い連携証明書ではないことが検証される。
【００９５】
証明書検証部は、この検証結果を第1のセキュアブート制御部１１２に送信する（Ｓ７０４）。
【００９６】
検証結果を受信した連携証明書更新部１３５は、検証処理でエラーが検出された場合には、エラーが検出された連携証明書をもとに連携証明書の更新処理を行うことは出来ないので更新処理を中止し、検証処理の結果が成功であった場合に、第２の記憶部１２１からモジュール＃２１に対応する証明書＃２１を読み出し（Ｓ７０５）、第２のセキュリティモジュールに読み出した証明書＃２１の検証を要求する検証要求を送信する（Ｓ７０６）。
検証要求を受信した第２のセキュリティモジュール１２３は、証明書検証部が受信した証明書＃２１を検証する（Ｓ７０７）。
【００９７】
この証明書＃２１の検証では、まず、証明書＃２１の電子署名４０７が検証され、さらに、証明書＃２１の参照カウンタ値４０２が、カウンタ部２２４が保持するカウンタ値以上であることを判定し、証明書＃２１がリボークされた古い証明書ではないことが検証される。
【００９８】
証明書検証部は、この検証結果を連携証明書更新部１３５に送信する（Ｓ７０８）。
【００９９】
検証結果を受信した連携証明書更新部１３５は、検証処理でエラーが検出された場合には更新処理を中止し、検証処理の結果が成功であった場合に、第１の記憶部１１１から連携証明書５００の依存リスト５０７が示す全ての証明書を読み出し（Ｓ７０９）、第１のセキュリティモジュールに読み出した証明書の検証を要求する検証要求を送信する（Ｓ７１０）。
【０１００】
検証要求を受信した第１のセキュリティモジュール１１３は、証明書検証部が受信した証明書を検証する（Ｓ７１１）。
【０１０１】
この証明書の検証では、まず、証明書の電子署名４０７が検証され、さらに、証明書の参照カウンタ値４０２が、カウンタ部２１４が保持するカウンタ値以上であることを判定し、証明書がリボークされた古い証明書ではないことが検証される。
【０１０２】
証明書検証部は、この検証結果を連携証明書更新部１３５に送信する（Ｓ７１２）。
【０１０３】
検証結果を受信した連携証明書更新部１３５は、検証処理でエラーが検出された場合には更新処理を中止し、検証処理の結果が成功であった場合に、連携証明書５００の依存リスト５０７をもとに新しい連携証明書の第1の構成照合値５０３を算出する（Ｓ７１３）。具体的には、依存リスト５０７が示す各証明書のモジュール計測値を、依存リスト５０７が示す順番で、各証明書のレジスタインデックスが示すレジスタに対して累積ハッシュ演算を仮想的に実行した場合の累積ハッシュ値を算出する。
【０１０４】
次に、連携証明書更新部１３５は、証明書＃２１の構成照合値４０３を新しい連携証明書の第２の構成照合値５０４に設定し（Ｓ７１４）、さらに、証明書＃２１のモジュール計測値４０５を新しい連携証明書のモジュール計測値５０５に設定し（Ｓ７１５）、第１のセキュリティモジュール１１３に電子署名の生成を要求する署名要求を送信する（Ｓ７１６）。
【０１０５】
署名要求を受信した第１のセキュリティモジュール１１３は、電子署名を生成し（Ｓ７１７）、生成した電子署名を連携証明書更新部１３５に送信する（Ｓ７１８）。
【０１０６】
連携証明書更新部１３５は、受信した電子署名を新しい連携証明書の電子署名５０８に設定し、連携証明書記憶部１３１に保持されている連携証明書を新しい連携証明書に更新して、更新処理を完了する（Ｓ７１９）。
【０１０７】
この後、端末１００は、新しい連携証明書を用いて、第１のモジュール群と第２のモジュール群の２つのセキュアブートを一連のセキュアブートとして実行することが出来る。
以上のように、連携証明書の依存リストに基づき、証明書を参照して構成照合値を算出することで、新しい連携証明書を端末１００の内部で生成することができる。
【０１０８】
これにより、第１のモジュール群のソフトウェアモジュールを提供する第1の提供者、及び、第２のモジュール群のソフトウェアモジュールを提供する第２の提供者は、提供するソフトウェアモジュールを新しいソフトウェアモジュールに更新する際に、更新情報を事前に通知する必要がなく、提供者間の独立性を維持した上で個別に新しいフトウェアモジュールを提供することが出来る。
【０１０９】
なお、上記で説明した連携証明書の更新において連携証明書更新部１３５が行っている処理の一部を、第１のセキュリティモジュールが行うようにしても良い。具体的には、第１の構成照合値の算出（Ｓ７１３）、証明書＃２１の構成照合値を第２の構成照合値に設定（Ｓ７１４）、証明書＃２１のモジュール計測値をモジュール計測値に設定（Ｓ７１５）の何れかまたはすべての処理を第１のセキュリティモジュールが行う。
【０１１０】
この場合、これらの処理を、耐タンパ化された第１のセキュリティモジュールが行うことで、連携証明書に不正な照合値が設定されるといった改竄行為を防止することができ、安全性が向上する。
【０１１１】
なお、連携証明書を格納する連携証明書記憶部１３１を、第１の記憶部１１１の中に設け、連携証明書更新部１３５を第１の情報処理部１１０の中に設けるようにしてもよい。
【０１１２】
この場合、連携証明書を格納するために必要な記憶領域を第１の記憶部の中に確保することで、連携証明書を格納する記憶領域を確保するための分の新たなコストアップを回避できる。
【０１１３】
また、連携証明書を格納する連携証明書記憶部１３１を、第２の記憶部１２１の中に設け、連携証明書更新部１３５を第２の情報処理部１２０の中に設けるようにしてもよい。
【０１１４】
この場合、連携証明書を格納するために必要な記憶領域を第２の記憶部の中に確保することで、連携証明書を格納する記憶領域を確保するための分の新たなコストアップを回避できる。また、この場合には、連携証明書の電子証明５０８は、第２のセキュリティモジュールが生成する。
【０１１５】
なおまた、連携処理部１３０に第３のセキュアブート制御部、第３のセキュリティモジュールを設けて、上記において、図６を用いて説明したセキュアブートを第１のセキュアブート制御部の代わりに第３のセキュアブート制御部を用いて行うようにしてよい。
（第２の実施形態）
本発明の第２の実施形態は、ソフトウェアモジュールの証明書と連携証明書のデータ構造を共通化して、セキュリティモジュールにおいて証明書の検証処理と連携証明書の検証処理を共通化できるように構成したものである。
【０１１６】
本発明の第２の実施形態における端末１００の構成は、第１の実施形態と同じであり、説明を省略する。
【０１１７】
図１１は、本発明の第２の実施形態におけるソフトウェアモジュールに対応する証明書１１００のデータ構造を示している。拡張データダイジェスト１１０７のフィールドが追加されている以外は、本発明の第１の実施形態のソフトウェアモジュールに対応する証明書４００と同じである。
【０１１８】
証明書１１００は、その証明書が対応付けられたソフトウェアモジュールを識別する情報であるラベル１１０１と、ソフトウェアモジュールのバージョンを示す参照カウンタ値１１０２と、ソフトウェアモジュールが実行される前の端末１００の状態においてセキュリティモジュールの構成情報保持部（２１７、２２７）に保持されるべき累積ハッシュ値を示す構成照合値１１０３と、ソフトウェアモジュールのダイジェストとしてモジュールのコードイメージをハッシュ演算した場合の値を示すモジュール計測値１１０５と、モジュール計測値１１０５が示す値を累積ハッシュ演算する構成情報保持部（２１７、２２７）のレジスタ番号を指定するレジスタインデックス１１０４と、証明書の署名を検証する鍵を示す検証鍵ＩＤ１１０６と、拡張データダイジェスト１１０７と、検証鍵ＩＤ１１０６が示す鍵に対応する秘密鍵によるラベル１１０１から拡張データダイジェスト１１０７までのデータに対する電子署名１１０８と、から構成される。
【０１１９】
この拡張データダイジェスト１１０７には、証明書の拡張データのハッシュ値が設定される。この証明書に複数の拡張データを対応付ける場合には、複数の拡張データを連結したデータに対するハッシュ値が拡張データダイジェスト１１０７に設定される。
【０１２０】
本発明の第２の実施形態における連携証明書のデータ構造は、図１１に示したソフトウェアモジュールに対応する証明書のデータ構造と同じであり、この拡張データダイジェスト１１０７に連携証明書の拡張データのハッシュ値が設定されることにより、連携証明書となる。
【０１２１】
図１２は、本発明の第２の実施形態における連携証明書１２００のデータ構造と連携証明書の拡張データを模式的に示している。
【０１２２】
拡張データには、拡張データの種類を示す拡張データ名が含まれ、拡張データのデータ構造は、拡張データの種類によって決まる。
【０１２３】
連携証明書の拡張データの場合は、連携証明書の拡張データであることを示す拡張データ名１２０１と、連携証明書によるセキュアブートにおいて起動されるモジュールの証明書のハッシュ値を示す証明書ダイジェスト１２０２と、依存リストのハッシュ値を示す依存リストダイジェスト１２０３から構成される。
【０１２４】
第１の記憶部に図３（ａ）に示すモジュールと証明書が、第２の記憶部に図３（ｂ）に示すモジュールと証明書がそれぞれ格納される場合、証明書ダイジェスト１２０２には証明書＃２１のハッシュ値（Ｈａｓｈ（証明書＃２１））が、依存リストダイジェスト１２０３には、図９に示した依存リストのハッシュ値（Ｈａｓｈ（依存リスト））がそれぞれ設定される。
【０１２５】
図３（ｄ）に示すように、本発明の第２の実施形態の場合、拡張データは連携証明書と共に連携証明書記憶部１３１に保持されている。
【０１２６】
また、連携証明書のラベル１１０１には、第２のモジュール群の先頭のモジュールであるモジュール＃２１を識別するラベルが設定される。
【０１２７】
参照カウンタ値１１０２は、第１のセキュリティモジュールのカウンタ部に格納されるカウンタ値以上の値が設定される。
【０１２８】
構成照合値１１０３には、第1のセキュリティモジュール１１３の構成情報保持部に保持されるべき累積ハッシュ値が設定される。
【０１２９】
レジスタインデックス１１０４には、証明書＃２１が示すレジスタインデックスが設定される。
【０１３０】
モジュール計測値１１０５には、証明書＃２１が示すモジュール計測値が設定される。
【０１３１】
次に、本発明の第２の実施形態の端末１００の詳細な動作を、第１の記憶部に図３（ａ）に示すモジュールと証明書が、第２の記憶部に図３（ｂ）に示すモジュールと証明書がそれぞれ格納される場合について説明する。
【０１３２】
まず、図１３を用いて、本発明の第２の実施形態における連携証明書を用いたセキュアブートの動作について説明する。
【０１３３】
まず、第1のセキュアブート制御部１１２は、第１のモジュール群の非特許文献４及び非特許文献５に示されている方式に基づくセキュアブートを実行し、モジュール＃１１、モジュール＃１２、モジュール＃１３を順次起動した後、連携証明書記憶部１３１から連携証明書１２００及び連携証明書拡張データを読み出し（Ｓ１３０１）、第1のセキュリティモジュールに読み出した連携証明書１２００の検証を要求する検証要求を送信する（Ｓ１３０２）。
【０１３４】
検証要求を受信した第１のセキュリティモジュール１１３は、証明書検証部が受信した連携証明書を検証する（Ｓ１３０３）。
【０１３５】
この場合、証明書と連携証明書のデータ構造は同じなので、第１のセキュリティモジュール１１３は、証明書を検証する場合と同じ機能を用いて連携証明書を検証する。
この連携証明書の検証では、まず、第１のセキュリティモジュールが保持する連携証明書１２００の検証鍵ＩＤ１１０６が示す鍵を用いて電子署名１１０８が検証される。
さらに、連携証明書１２００の参照カウンタ値１１０２が、カウンタ部２１４が保持するカウンタ値以上であることを判定し、連携証明書１２００がリボークされた古い連携証明書ではないことが検証される。
【０１３６】
次に、照合部２１３が、構成情報保持部２１７が保持する累積ハッシュ値と連携証明書１２００の中の構成照合値１１０３とを照合し、モジュール＃２１を実行する前の状態として第１の情報処理部側が正しい状態（その前に実行されているモジュール＃１１、＃１２、＃１３が有効なソフトウェアモジュールであり、正しい順番で実行されている）であることを検証する。
【０１３７】
照合部２１３による検証結果を受信した証明書検証部は、この検証結果を第1のセキュアブート制御部１１２に送信する（Ｓ１３０４）。
検証結果を受信した第1のセキュアブート制御部１１２は、何れかの検証処理でエラーが検出された場合にはセキュアブートを中止し、すべての検証処理の結果が成功であった場合に、第２の記憶部１２１から第２のモジュール群のモジュール＃２１を読み出す（Ｓ１３０５）。
【０１３８】
第1のセキュアブート制御部１１２は、読み出したモジュール＃２１のコードイメージのハッシュ演算を行い、その結果と連携証明書１２００のモジュール計測値１１０５とを照合することで読み出したモジュール＃２１が連携証明書１２００に対応する正当なモジュール＃２１であることを検証する（Ｓ１３０６）。
【０１３９】
第1のセキュアブート制御部１１２は、このモジュール＃２１の検証の結果、エラーが検出された場合には、セキュアブートを中止し、検証の結果が成功であった場合に、第２の記憶部１２１からモジュール＃２１に対応する証明書＃２１を読み出す（Ｓ１３０７）。
【０１４０】
第1のセキュアブート制御部１１２は、読み出した証明書＃２１のハッシュ演算を行い、その結果と連携証明書拡張データの証明書ダイジェスト１２０１とを照合し、さらに、連携証明書拡張データのハッシュ演算を行い、その結果と連携証明書１２００の拡張データダイジェスト１１０７と照合することで連携証明書拡張データが改竄されていないことを検証する（Ｓ１３０８）。
【０１４１】
第1のセキュアブート制御部１１２は、この連携証明書拡張データの検証の結果、エラーが検出された場合には、セキュアブートを中止し、検証の結果が成功であった場合に、第２のセキュリティモジュールに読み出した証明書＃２１の検証を要求する検証要求を送信する（Ｓ１３０９）。
【０１４２】
検証要求を受信した第２のセキュリティモジュール１２３は、証明書検証部が受信した証明書を検証する（Ｓ１３１０）。
【０１４３】
この証明書の検証では、まず、第２のセキュリティモジュールが保持する証明書＃２１の検証鍵ＩＤ１１０６が示す鍵を用いて電子署名１１０８が検証される。
【０１４４】
さらに、証明書＃２１の参照カウンタ値１１０２が、カウンタ部２２４が保持するカウンタ値以上であることを判定し、証明書＃２１がリボークされた古い証明書ではないことが検証される。
【０１４５】
次に、照合部２２３が、構成情報保持部２２７が保持する累積ハッシュ値と証明書＃２１の中の構成照合値１１０３とを照合し、モジュール＃２１を実行する前の状態として第２の情報処理部側が正しい状態（第２のモジュール群のモジュールが起動されていない状態）であることを検証する。
【０１４６】
照合部２２３による検証結果を受信した証明書検証部は、この検証結果を第1のセキュアブート制御部１１２に送信する（Ｓ１３１１）。
【０１４７】
検証結果を受信した第1のセキュアブート制御部１１２は、何れかの検証処理でエラーが検出された場合にはセキュアブートを中止し、すべての検証処理の結果が成功であった場合に、モジュール＃２１を起動し、ＣＰＵ１０１がモジュール＃２１のコードイメージを実行する（Ｓ１３１２）。
【０１４８】
この後、第２のセキュアブート制御部１２２により第２のモジュール群のセキュアブートが開始される。
【０１４９】
以上のように、連携証明書を用いて、セキュアブートを行うことで、２つのセキュアブートを一連のセキュアブートとして実行することが出来る。
【０１５０】
次に、図１４、１５を用いて、連携証明書１２００の更新処理の動作について説明する。
【０１５１】
連携証明書１２００の更新処理は、第２のモジュール群において最初に起動されるべきモジュール＃２１の証明書＃２１が更新された場合、または、連携証明書１２００の依存リスト５０７に示されているモジュール＃１１、＃１２、＃１３の何れかが更新された場合に開始される。
【０１５２】
証明書＃２１が更新された場合には、ダウンロード更新部１２４から連携証明書更新部１３５に証明書＃２１が更新されたことが通知され、モジュール＃１１、＃１２、＃１３の何れかが更新された場合には、ダウンロード更新部１１４から連携証明書更新部１３５に更新されたことが通知される。
【０１５３】
まず、更新の通知を受信した連携証明書更新部１３５は、連携証明書記憶部１３１から連携証明書１２００と連携証明書拡張データを読み出し（Ｓ１４０１）、第1のセキュリティモジュールに読み出した連携証明書１２００の検証を要求する検証要求を送信する（Ｓ１４０２）。
【０１５４】
検証要求を受信した第１のセキュリティモジュール１１３は、証明書検証部が受信した連携証明書を検証する（Ｓ１４０３）。
【０１５５】
この連携証明書の検証では、まず、連携証明書１２００の電子署名１１０８が検証され、さらに、連携証明書１２００の参照カウンタ値１１０２が、カウンタ部２１４が保持するカウンタ値以上であることを判定し、連携証明書１２００がリボークされた古い連携証明書ではないことが検証される。
【０１５６】
証明書検証部は、この検証結果を第1のセキュアブート制御部１１２に送信する（Ｓ１４０４）。
【０１５７】
検証結果を受信した連携証明書更新部１３５は、検証処理でエラーが検出された場合には、エラーが検出された連携証明書をもとに連携証明書の更新処理を行うことは出来ないので更新処理を中止し、検証処理の結果が成功であった場合に、第２の記憶部１２１からモジュール＃２１に対応する証明書＃２１を読み出す（Ｓ１４０５）。
【０１５８】
連携証明書更新部１３５は、連携証明書拡張データのハッシュ演算を行い、その結果と連携証明書１２００の拡張データダイジェスト１１０７と照合することで連携証明書拡張データが改竄されていないことを検証する（Ｓ１４０６）。
【０１５９】
連携証明書更新部１３５は、この連携証明書拡張データの検証の結果、エラーが検出された場合には、セキュアブートを中止し、検証の結果が成功であった場合に、第２のセキュリティモジュールに読み出した証明書＃２１の検証を要求する検証要求を送信する（Ｓ１４０７）。
【０１６０】
検証要求を受信した第２のセキュリティモジュール１２３は、証明書検証部が受信した証明書＃２１を検証する（Ｓ１４０８）。
【０１６１】
この証明書＃２１の検証では、まず、証明書＃２１の電子署名１１０８が検証され、さらに、証明書＃２１の参照カウンタ値１１０２が、カウンタ部２２４が保持するカウンタ値以上であることを判定し、証明書＃２１がリボークされた古い証明書ではないことが検証される。
【０１６２】
証明書検証部は、この検証結果を連携証明書更新部１３５に送信する（Ｓ１４０９）。
【０１６３】
検証結果を受信した連携証明書更新部１３５は、検証処理でエラーが検出された場合には更新処理を中止し、検証処理の結果が成功であった場合に、第１の記憶部１１１から連携証明書拡張データの依存リストが示す全ての証明書を読み出し（Ｓ１４１０）、第１のセキュリティモジュールに読み出した証明書の検証を要求する検証要求を送信する（Ｓ１４１１）。
【０１６４】
検証要求を受信した第１のセキュリティモジュール１１３は、証明書検証部が受信した証明書を検証する（Ｓ１４１２）。
【０１６５】
この証明書の検証では、まず、証明書の電子署名１１０８が検証され、さらに、証明書の参照カウンタ値１１０２が、カウンタ部２１４が保持するカウンタ値以上であることを判定し、証明書がリボークされた古い証明書ではないことが検証される。
【０１６６】
証明書検証部は、この検証結果を連携証明書更新部１３５に送信する（Ｓ１４１３）。
【０１６７】
検証結果を受信した連携証明書更新部１３５は、検証処理でエラーが検出された場合には更新処理を中止し、検証処理の結果が成功であった場合に、連携証明書拡張データの依存リストをもとに新しい連携証明書の構成照合値１１０３を算出する（Ｓ１４１４）。具体的には、連携証明書拡張データの依存リストが示す各証明書のモジュール計測値を、依存リストが示す順番で、各証明書のレジスタインデックスが示すレジスタに対して累積ハッシュ演算を仮想的に実行した場合の累積ハッシュ値を算出する。
【０１６８】
次に、連携証明書更新部１３５は、証明書＃２１のハッシュ演算を行い、連携証明書拡張データの証明書ダイジェストを更新し、さらに、連携証明書拡張データのハッシュ演算を行い連携証明書の拡張データダイジェスト１１０７を算出する（Ｓ１４１５）。
【０１６９】
さらに、連携証明書更新部１３５は、証明書＃２１のモジュール計測値１１０５を新しい連携証明書のモジュール計測値５０５に設定し（Ｓ１４１６）、第１のセキュリティモジュール１１３に電子署名の生成を要求する署名要求を送信する（Ｓ１４１７）。
【０１７０】
署名要求を受信した第１のセキュリティモジュール１１３は、電子署名を生成し（Ｓ１４１８）、生成した電子署名を連携証明書更新部１３５に送信する（Ｓ１４１９）。
【０１７１】
連携証明書更新部１３５は、受信した電子署名を新しい連携証明書の電子署名１１０８に設定し、連携証明書記憶部１３１に保持されている連携証明書と連携証明書拡張データをそれぞれ新しい連携証明書と連携証明書拡張データに更新して、更新処理を完了する（Ｓ１４２０）。
【０１７２】
この後、端末１００は、新しい連携証明書を用いて、第１のモジュール群と第２のモジュール群の２つのセキュアブートを一連のセキュアブートとして実行することが出来る。
【０１７３】
以上のように、連携証明書の依存リストに基づき、証明書を参照して構成照合値を算出することで、新しい連携証明書を端末１００の内部で生成することができる。
【０１７４】
これにより、第１のモジュール群のソフトウェアモジュールを提供する第1の提供者、及び、第２のモジュール群のソフトウェアモジュールを提供する第２の提供者は、提供するソフトウェアモジュールを新しいソフトウェアモジュールに更新する際に、更新情報を事前に通知する必要がなく、提供者間の独立性を維持した上で個別に新しいソフトウェアモジュールを提供することが出来る。
【０１７５】
本発明の第２の実施形態の場合、セキュリティモジュールにおける証明書の検証処理と連携証明書の検証処理を共通化できるため、メモリ等のセキュリティモジュールにおいて必要となるリソースを削減できるため、セキュリティモジュールを低コストで提供できるというメリットがある。
【０１７６】
なお、上記で説明した連携証明書の更新において連携証明書更新部１３５が行っている処理の一部を、第１のセキュリティモジュールが行うようにしても良い。具体的には、構成照合値の算出（Ｓ１４１３）、証明書＃２１の構成照合値を第２の構成照合値に設定（Ｓ１４１４）、拡張データダイジェストの算出（Ｓ１４１５）、証明書＃２１のモジュール計測値をモジュール計測値に設定（Ｓ１４１６）の何れかまたはすべての処理を第１のセキュリティモジュールが行う。
【０１７７】
この場合、これらの処理を、耐タンパ化された第１のセキュリティモジュールが行うことで、連携証明書に不正な照合値が設定されるといった改竄行為を防止することができ、安全性が向上する。
【０１７８】
なお、連携証明書を格納する連携証明書記憶部１３１を、第１の記憶部１１１の中に設け、連携証明書更新部１３５を第１の情報処理部１１０の中に設けるようにしてもよい。
【０１７９】
この場合、連携証明書を格納するために必要な記憶領域を第１の記憶部の中に確保することで、連携証明書を格納する記憶領域を確保するための分の新たなコストアップを回避できる。
【０１８０】
また、連携証明書を格納する連携証明書記憶部１３１を、第２の記憶部１２１の中に設け、連携証明書更新部１３５を第２の情報処理部１２０の中に設けるようにしてもよい。
【０１８１】
この場合、連携証明書を格納するために必要な記憶領域を第２の記憶部の中に確保することで、連携証明書を格納する記憶領域を確保するための分の新たなコストアップを回避できる。また、この場合には、連携証明書の電子証明５０８は、第２のセキュリティモジュールが生成する。
【０１８２】
なおまた、連携処理部１３０に第３のセキュアブート制御部、第３のセキュリティモジュールを設けて、上記において、図６を用いて説明したセキュアブートを第１のセキュアブート制御部の代わりに第３のセキュアブート制御部を用いて行うようにしてよい。
【０１８３】
（実施の形態３）
本発明の実施の形態３では、上述してきた実施の形態１をＴｒｕｓｔｅｄ  Ｃｏｍｐｕｔｉｎｇ  Ｇｒｏｕｐ（ＴＣＧ）で規定している仕様に基づいて実現してもよい。
【０１８４】
この場合、セキュリティモジュールは、ＴＣＧで規定しているＴＰＭモジュールまたはＭＴＭモジュールであり（以降のＴＰＭとは、ＴＰＭあるいはＭＴＭを意味するものとする）、構成情報保持部は、ＴＰＭが備えるＰＣＲであり、カウンタ部は、ＴＰＭが備えるＭｏｎｏｔｏｎｉｃ  Ｃｏｕｎｔｅｒであり、累積部、証明書検証部、照合部は、ＴＰＭコマンド処理を含んだＴＣＧ機能を実現する部であり、証明書＃１１、＃１２、＃１３、証明書＃２１、＃２２、＃２３は、Ｅｘｔｅｒｎａｌ  ＲＩＭ＿Ｃｅｒｔ、もしくはＩｎｔｅｒｎａｌ  ＲＩＭ＿Ｃｅｒｔである。これによって、ＴＣＧ仕様に基づいて安全にソフトウェアの更新が可能となる。
（その他変形例）
なお、本発明を上記実施の形態に基づいて説明してきたが、本発明は、上記の実施の形態に限定されないのはもちろんである。以下のような場合も本発明に含まれる。
【０１８５】
（１）上記の各装置は、具体的には、マイクロプロセッサ、ＲＯＭ、ＲＡＭ、ハードディスクユニット、ディスプレイユニット、キーボード、マウスなどから構成されるコンピュータシステムである。前記ＲＡＭまたはハードディスクユニットには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムにしたがって動作することにより、各装置は、その機能を達成する。ここでコンピュータプログラムは、所定の機能を達成するために、コンピュータに対する指令を示す命令コードが複数個組み合わされて構成されたものである。なお、各装置は、マイクロプロセッサ、ＲＯＭ、ＲＡＭ、ハードディスクユニット、ディスプレイユニット、キーボード、マウスなどの全てを含むコンピュータシステムには限らず、これらの一部から構成されているコンピュータシステムであってもよい。
【０１８６】
（２）上記の各装置を構成する構成要素の一部または全部は、１個のシステムＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ：大規模集積回路）から構成されているとしてもよい。システムＬＳＩは、複数の構成部を１個のチップ上に集積して製造された超多機能ＬＳＩであり、具体的には、マイクロプロセッサ、ＲＯＭ、ＲＡＭなどを含んで構成されるコンピュータシステムである。前記ＲＡＭには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムにしたがって動作することにより、システムＬＳＩは、その機能を達成する。
【０１８７】
また、上記の各装置を構成する構成要素の各部は、個別に１チップ化されていても良いし、一部又は全てを含むように１チップ化されてもよい。
【０１８８】
また、ここでは、システムＬＳＩとしたが、集積度の違いにより、ＩＣ、ＬＳＩ、スーパーＬＳＩ、ウルトラＬＳＩと呼称されることもある。また、集積回路化の手法はＬＳＩに限るものではなく、専用回路又は汎用プロセッサで実現してもよい。ＬＳＩ製造後に、プログラムすることが可能なＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）や、ＬＳＩ内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサーを利用しても良い。
【０１８９】
さらには、半導体技術の進歩又は派生する別技術によりＬＳＩに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。バイオ技術の適用等が可能性としてありえる。
【０１９０】
（３）上記の各装置を構成する構成要素の一部または全部は、各装置に脱着可能なＩＣカードまたは単体のモジュールから構成されているとしてもよい。前記ＩＣカードまたは前記モジュールは、マイクロプロセッサ、ＲＯＭ、ＲＡＭなどから構成されるコンピュータシステムである。前記ＩＣカードまたは前記モジュールは、上記の超多機能ＬＳＩを含むとしてもよい。マイクロプロセッサが、コンピュータプログラムにしたがって動作することにより、前記ＩＣカードまたは前記モジュールは、その機能を達成する。このＩＣカードまたはこのモジュールは、耐タンパ性を有するとしてもよい。
【０１９１】
（４）本発明は、上記に示す方法であるとしてもよい。また、これらの方法をコンピュータにより実現するコンピュータプログラムであるとしてもよいし、前記コンピュータプログラムからなるデジタル信号であるとしてもよい。
【０１９２】
また、本発明は、前記コンピュータプログラムまたは前記デジタル信号をコンピュータ読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、ＢＤ（Ｂｌｕ−ｒａｙ  Ｄｉｓｃ）、半導体メモリなどに記録したものとしてもよい。また、これらの記録媒体に記録されている前記デジタル信号であるとしてもよい。
【０１９３】
また、本発明は、前記コンピュータプログラムまたは前記デジタル信号を、電気通信回線、無線または有線通信回線、インターネットを代表とするネットワーク、データ放送等を経由して伝送するものとしてもよい。
【０１９４】
また、本発明は、マイクロプロセッサとメモリを備えたコンピュータシステムであって、前記メモリは、上記コンピュータプログラムを記憶しており、前記マイクロプロセッサは、前記コンピュータプログラムにしたがって動作するとしてもよい。
【０１９５】
また、前記プログラムまたは前記デジタル信号を前記記録媒体に記録して移送することにより、または前記プログラムまたは前記デジタル信号を前記ネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしてもよい。
【０１９６】
（５）セキュリティモジュールは、耐タンパソフトウェアまたはソフトウェア及びハードウェアにより実施されるとしてもよい。
【０１９７】
（６）ＣＰＵは特別な動作モード（セキュアモードなど）を備え、ＣＰＵによって実行されるソフトウェアはその特別な動作モード（セキュアモードなど）で動作することで安全に実行されるとしてもよい。
【０１９８】
（７）上記実施の形態及び上記変形例をそれぞれ組み合わせるとしてもよい。
【産業上の利用可能性】
【０１９９】
本発明は、パーソナルコンピュータや携帯電話、オーディオプレーヤ、テレビ受像機、ビデオレコーダなど、プログラムデータの更新を行う情報通信機器や家電機器に広く利用することができる。【０２００】
本発明の端末と同様の構成にすることによって、端末のソフトウェアが、複数の提供者が提供するモジュール群から構成される場合において、モジュール及び証明書を、提供者間の依存関係がない形態で各提供者から個別に提供することが可能となり、提供者間の独立性を維持した上で、モジュール群間を跨るセキュアブートを継続的に行うことが可能となる。
【符号の説明】
【０２０１】
１００    端末
１０１    ＣＰＵ
１１０    第1の情報処理部
１１１    第1の記憶部
１１２    第1のセキュアブート制御部
１１３    第1のセキュリティモジュール
１１４    第１のダウンロード更新部
１２０    第２の情報処理部
１２１    第２の記憶部
１２２    第２のセキュアブート制御部
１２３    第２のセキュリティモジュール
１２４    第２のダウンロード更新部
１３０    連携処理部
１３１    連携証明書記憶部
１３５    連携証明書更新部
【図１】
2009157133.tif 000003
【図２】
2009157133.tif 000004
【図３】
2009157133.tif 000005
【図４】
2009157133.tif 000006
【図５】
2009157133.tif 000007
【図６】
2009157133.tif 000008
【図７】
2009157133.tif 000009
【図８】
2009157133.tif 000010
【図９】
2009157133.tif 000011
【図１０】
2009157133.tif 000012
【図１１】
2009157133.tif 000013
【図１２】
2009157133.tif 000014
【図１３】
2009157133.tif 000015
【図１４】
2009157133.tif 000016
【図１５】
2009157133.tif 000017
【図１６】
2009157133.tif 000018
【手続補正書】
【提出日】平成22年11月17日(2010.11.17)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パーソナルコンピュータや携帯電話などの情報通信機器、インターネットアクセス機能を備えたテレビ受信装置などの情報家電機器等の情報処理装置、情報処理方法、これらを実現するコンピュータプログラム及び集積回路に関するものである。
【０００２】
特に、端末のソフトウェアが複数の提供者から提供される複数のモジュール群から構成される場合において、新しいソフトウェアモジュールを各提供者から個別にダウンロードすることでソフトウェアモジュールの更新を可能にしつつ、不正な動作をするモジュールにすり替えたり、不正にソフトウェアを古いバージョンに戻したりするといった不正行為を防止し、安定して確実に正しいソフトウェア構成で起動することを可能にするものである。
【背景技術】
【０００３】
近年、ネットワークを介して提供されるサービスは、音楽や映像といった著作物の提供や、企業が保有する機密情報の閲覧、オンラインバンキングなど多岐に渡り、かつ、その中で扱われる情報の価値も高価なものになってきている。多岐に渡るサービスに対応するため、パーソナルコンピュータ、携帯端末、携帯電話、デジタル家電などの端末には、複数の提供者から提供された複数のソフトウェアがインストールされている。
【０００４】
例えば、携帯電話の場合、携帯電話の端末メーカーが提供する携帯電話の基本機能に関するモジュール群と、携帯電話のオペレータが提供する携帯通信機能に関するモジュール群と、ＩＳＰ（Ｉｎｔｅｒｎｅｔ  Ｓｅｒｖｉｃｅ  Ｐｒｏｖｉｄｅｒ）が提供する携帯電話上で動作するサービス・アプリケーションを構成するモジュール群がインストールされている場合がある。
【０００５】
また、高価な価値を持つ情報を安全に扱うために、パーソナルコンピュータ、携帯端末、携帯電話、デジタル家電などの端末には、ソフトウェアモジュールの改ざん等の不正行為を防止する仕組みがモジュール群ごとに組み込まれている。例えば、各ソフトウェアモジュールに対して提供者が証明書を発行し、各ソフトウェアモジュールの起動時に、その証明書を用いてソフトウェアモジュールの完全性を検証するといった仕組もその一つである。この仕組は、モジュール群を構成するソフトウェアモジュールをモジュール単位で更新する場合にも有効であり、モジュール群の提供者が新しいソフトウェアモジュールと共に、その新しいソフトウェアモジュールの証明書を提供することにより、端末側で提供者側から受信した新しいソフトウェアモジュールの完全性を検証することが可能となる。
【０００６】
上記の証明書を用いて不正行為を防止する仕組みと同様の技術は、例えば特許文献１において公開されている。
また、セキュアなコンピュータプラットフォームを開発、普及させることを目的として、Ｔｒｕｓｔｅｄ  Ｃｏｍｐｕｔｉｎｇ  Ｇｒｏｕｐ（ＴＣＧ）が設立されている。ＴＣＧでは、Ｔｒｕｓｔｅｄ  Ｐｌａｔｆｏｒｍ  Ｍｏｄｕｌｅ（ＴＰＭ）と呼ばれるセキュリティモジュールを利用し、ソフトウェアモジュールの完全性だけでなく、ソフトウェアモジュールを起動する順番が正しいことを検証しながらソフトウェアモジュールを起動するセキュアブートと呼ばれる起動処理を端末が行うことで、安全な端末環境を実現している（非特許文献１〜５参照）。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】ＵＳ２００５／００２１９６８
【非特許文献】
【０００８】
【非特許文献１】ＴＰＭ  Ｍａｉｎ，Ｐａｒｔ１  Ｄｅｓｉｇｎ  Ｐｒｉｎｃｉｐｌｅｓ，Ｓｐｅｃｉｆｉｃａｔｉｏｎ  ｖｅｒｓｉｏｎ  １．２  Ｌｅｖｅｌ２  Ｒｉｖｉｓｉｏｎ１０３（９  Ｊｕｌｙ  ２００７）
【非特許文献２】ＴＰＭ  Ｍａｉｎ，Ｐａｒｔ２  ＴＰＭ  Ｓｔｒｕｃｔｕｒｅｓ，Ｓｐｅｃｉｆｉｃａｔｉｏｎ  ｖｅｒｉｏｎ１．２  Ｌｅｖｅｌ２  Ｒｉｖｉｓｉｏｎ１０３（９  Ｊｕｌｙ  ２００７）
【非特許文献３】ＴＰＭ  Ｍａｉｎ  Ｐａｒｔ３  Ｃｏｍｍａｎｄｓ，Ｓｐｅｃｉｆｉｃａｔｉｏｎ  ｖｅｒｉｏｎ  １．２  Ｌｅｖｅｌ２  Ｒｉｖｉｓｉｏｎ１０３（９  Ｊｕｌｙ  ２００７）
【非特許文献４】ＴＣＧ  Ｍｏｂｉｌｅ  Ｔｒｕｓｔｅｄ  Ｍｏｄｕｌｅ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ  ｖｅｒｓｉｏｎ  １．０  Ｒｅｖｉｓｉｏｎ  １（１２  Ｊｕｎｅ  ２００７）
【非特許文献５】ＴＣＧ  Ｍｏｂｉｌｅ  Ｒｅｆｅｒｅｎｃｅ  Ａｒｃｈｉｔｅｃｔｕｒｅ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ  ｖｅｒｓｉｏｎ１．０  Ｒｅｖｉｓｉｏｎ１（１２  Ｊｕｎｅ  ２００７）
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかし、従来提案されている技術では、図１６に示すように、端末のソフトウェアを構成するモジュール群が複数の提供者（ステークホルダー）から提供され、それらのモジュール群に対してＴＣＧのセキュアブートを行うように構成された端末において、1つのモジュールを新しいモジュールに更新する場合に課題がある。
【００１０】
例えば、従来提案されている技術によれば、セキュアブートでは、第２の提供者（第２ステークホルダー）が提供するモジュール＃２１が、第１の提供者（第１ステークホルダー）が提供するモジュール群であるモジュール＃１１、＃１２、＃１３を利用する場合には、モジュール＃１１、＃１２、＃１３は事前に起動されている必要があるため、モジュール＃２１を起動する前に、正規のモジュール＃１１、＃１２、＃１３が起動されていることを次のような方法で検証する。
【００１１】
この場合、第２の提供者がモジュール＃２１と共に提供する証明書＃２１の中には、モジュール＃２１のハッシュ値と共に、第１のモジュール群のそれぞれのモジュールのハッシュ値を累積的にハッシュ演算した場合の累積ハッシュ値が含まれる。
【００１２】
モジュール＃２１を起動する前に、証明書＃２１に含まれるモジュール＃２１のハッシュ値と実際のモジュール＃２１から算出したハッシュ値とを照合することで、モジュール＃２１が改ざんされていないことを検証すると同時に、起動されているモジュールの累積ハッシュ値を格納するレジスタであるＰＣＲ（Ｐｌａｔｆｏｒｍ Ｃｏｎｆｉｇｕｒａｔｉｏｎ Ｒｅｇｉｓｔｅｒ）と証明書＃２１に含まれる累積ハッシュ値とを照合することで、モジュール＃２１を起動する前に正規のモジュール＃１１、＃１２、＃１３が起動されていることを検証する。
【００１３】
しかし、第２の提供者が提供する証明書＃２１が、第１の提供者が提供する第１のモジュール群に依存することになるため、仮に、モジュール＃１３を新しいモジュールに更新する場合には、モジュール＃１３に対応する証明書＃１３と共に証明書＃２１も同時に更新する必要がある。これを実現するためには、第１のモジュール群のモジュールを更新する度に、第１の提供者がモジュールの更新情報を事前に第２の提供者側に通知して、証明書＃２１も同時に更新するメカニズムが必要となり、提供者間の独立性が損なわれるという問題がある。具体的には、第１の提供者側が緊急にモジュール＃１３を新しいモジュール＃１３に更新する必要があっても、第２の提供者側で新しいモジュール＃１３に対応する証明書＃２１の準備ができるまでは、モジュール＃１３を更新することができず、緊急を要する更新には対応できないといった問題がある。また、第２の提供者側は、第１の提供者が提供するモジュール群の更新のために、証明書＃２１を生成して、それを配信するというコストを払う必要があるといった問題がある。
【００１４】
本発明は、こうした従来の問題点を解決するものであり、端末のソフトウェアが、複数の提供者が提供するモジュール群から構成される場合において、提供者間の独立性を維持した上で、モジュール群間を跨るセキュアブートを継続的に行うことが可能な情報処理装置、情報処理方法、これらを実現するコンピュータプログラム及び集積回路を提供することを目的としている。
【課題を解決するための手段】
【００１５】
上記課題を解決するために、本発明の一実施態様である情報処理装置は、第１ステークホルダーに対応する第１の複数のモジュールと、前記第１の複数のモジュールの各モジュールについて、前記各モジュールのハッシュ値から生成される第１照合値及び前記第１の複数のモジュールに含まれるモジュールのハッシュ値を累積した場合の累積値から生成される第１累積照合値を含む証明書とを格納する第１記憶部と、第２ステークホルダーに対応し前記第１の複数のモジュールと依存関係にある第２の複数のモジュールと、前記第２の複数のモジュールの各モジュールについて、前記各モジュールのハッシュ値から生成される第２照合値及び前記第２の複数のモジュールに含まれるモジュールのハッシュ値を累積した場合の累積値から生成される第２累積照合値を含む証明書とを格納する第２記憶部と、前記第１の複数のモジュールの各モジュールの実際のハッシュ値と前記第１照合値とを比較して、前記第１の複数のモジュールの正当性を検証し、前記検証された第１の複数のモジュールを起動する第１制御部と、前記第１の複数のモジュールの正当性が検証された場合、前記第２の複数のモジュールの各モジュールの実際のハッシュ値と前記第２照合値とを比較して、前記第２の複数のモジュールの正当性を検証し、前記検証された第２の複数のモジュールを起動する第２制御部と、前記第２の複数のモジュールの先頭モジュールの正当性を検証する第３照合値及び前記第１の複数のモジュールに含まれるモジュールのハッシュ値を累積した場合の累積値から生成される第３累積照合値を含む連携証明書の保持部と、を具備し、前記第１制御部は、前記第１の複数のモジュールを更新した場合、更新後の第１の複数のモジュールの証明書について前記証明書の署名を検証すると、前記検証された証明書の中の第１照合値を用いて前記連携証明書に含まれる第３累積照合値を更新し、前記第１制御部は、前記第１の複数のモジュールを起動した後、前記連携証明書に含まれる第３累積照合値を用いて正当な第１の複数のモジュールが起動していることを検証し、かつ、前記第２の複数のモジュールの先頭モジュールの正当性を、前記連携証明書に含まれる第３照合値を用いて検証した場合に、前記第２の複数のモジュールの先頭モジュールを起動し、前記第２制御部は、前記第２の複数のモジュールの正当性を検証して、前記第２の複数のモジュールを起動させることを特徴とする。
【発明の効果】
【００１６】
上記態様によると、端末のソフトウェアが、複数のソフトウェアモジュールから構成される場合において、ソフトウェアモジュールを古いソフトウェアモジュールにすりかえるといった不正行為を防止し、各ソフトウェアモジュールの更新処理を個別に行うことが可能となる。
【００１７】
また、証明書の更新の際に電源断が起こり、ソフトウェアモジュールのコードイメージや証明書間に不整合が生じてしまった場合でも、セキュアブート処理時に構成情報累積部と代替仮想構成情報累積部の両方を参照して検証をすることで、古いソフトウェアモジュールを実行することなく、セキュアブート処理を完了させ、証明書の更新処理を再開することが出来る。
【図面の簡単な説明】
【００１８】
【図１】本発明の実施の形態１に係る端末の構成を示すブロック図
【図２】図２（ａ）は、本発明の実施の形態１に係る端末の第１のセキュリティモジュールの構成を示すブロック図、図２（ｂ）は、本発明の実施の形態１に係る端末の第２のセキュリティモジュールの構成を示すブロック図
【図３】図３（ａ）は、本発明の実施の形態１に係る端末の第１の記憶部に格納されるモジュールと証明書の一例を示す図、図３（ｂ）は、本発明の実施の形態１に係る端末の第２の記憶部に格納されるモジュールと証明書の一例を示す図、図３（ｃ）は、本発明の実施の形態１に係る端末の連携証明書記憶部に格納される連携証明書の一例を示す図、図３（ｄ）は、本発明の実施の形態２に係る端末の連携証明書記憶部に格納される連携証明書の一例を示す図
【図４】本発明の実施の形態１におけるソフトウェアモジュールの証明書のデータ構造を示す図
【図５】本発明の実施の形態１における連携証明書のデータ構造を示す図
【図６】本発明の実施の形態１におけるセキュアブート処理のフロー図
【図７】本発明の実施の形態１における連携証明書の更新処理の途中までのフロー図
【図８】本発明の実施の形態１における連携証明書の更新処理のフロー図であり、図７の続きの処理を示す
【図９】本発明の実施の形態１における連携証明書の依存リストの一例を示す図
【図１０】本発明の実施の形態２におけるセキュアブート及びソフトウェアモジュールの更新を説明するための模式図
【図１１】本発明の実施の形態２におけるソフトウェアモジュールの証明書のデータ構造を示す図
【図１２】本発明の実施の形態２における連携証明書のデータ構造を示す図
【図１３】本発明の実施の形態２におけるセキュアブート処理のフロー図
【図１４】本発明の実施の形態２における連携証明書の更新処理の途中までのフロー図
【図１５】本発明の実施の形態２における連携証明書の更新処理のフロー図であり、図１４の続きの処理を示す
【図１６】従来技術に基づくセキュアブート処理の一例を説明する図
【発明を実施するための形態】
【００１９】
請求項１記載の態様の情報処理装置は、第１ステークホルダーに対応する第１の複数のモジュールと、前記第１の複数のモジュールの各モジュールについて、前記各モジュールのハッシュ値から生成される第１照合値及び前記第１の複数のモジュールに含まれるモジュールのハッシュ値を累積した場合の累積値から生成される第１累積照合値を含む証明書とを格納する第１記憶部と、第２ステークホルダーに対応し前記第１の複数のモジュールと依存関係にある第２の複数のモジュールと、前記第２の複数のモジュールの各モジュールについて、前記各モジュールのハッシュ値から生成される第２照合値及び前記第２の複数のモジュールに含まれるモジュールのハッシュ値を累積した場合の累積値から生成される第２累積照合値を含む証明書とを格納する第２記憶部と、前記第１の複数のモジュールの各モジュールの実際のハッシュ値と前記第１照合値とを比較して、前記第１の複数のモジュールの正当性を検証し、前記検証された第１の複数のモジュールを起動する第１制御部と、前記第１の複数のモジュールの正当性が検証された場合、前記第２の複数のモジュールの各モジュールの実際のハッシュ値と前記第２照合値とを比較して、前記第２の複数のモジュールの正当性を検証し、前記検証された第２の複数のモジュールを起動する第２制御部と、前記第２の複数のモジュールの先頭モジュールの正当性を検証する第３照合値及び前記第１の複数のモジュールに含まれるモジュールのハッシュ値を累積した場合の累積値から生成される第３累積照合値を含む連携証明書の保持部と、を具備し、前記第１制御部は、前記第１の複数のモジュールを更新した場合、更新後の第１の複数のモジュールの証明書について前記証明書の署名を検証すると、前記検証された証明書の中の第１照合値を用いて前記連携証明書に含まれる第３累積照合値を更新し、前記第１制御部は、前記第１の複数のモジュールを起動した後、前記連携証明書に含まれる第３累積照合値を用いて正当な第１の複数のモジュールが起動していることを検証し、かつ、前記第２の複数のモジュールの先頭モジュールの正当性を、前記連携証明書に含まれる第３照合値を用いて検証した場合に、前記第２制御部を起動して前記第２の複数のモジュールの正当性を検証させることを特徴とする。
【００２０】
本態様によると、前記第２の複数のモジュールの先頭モジュールの正当性を検証する第３照合値及び前記第１の複数のモジュールに含まれるモジュールのハッシュ値を累積した場合の累積値から生成される第３累積照合値を含む連携証明書を保持する。
【００２１】
また、前記第１制御部は、前記第１の複数のモジュールを更新した場合、更新後の第１の複数のモジュールの証明書について前記証明書の署名を検証すると、前記検証された証明書の中の第１照合値を用いて前記連携証明書に含まれる第３累積照合値を更新し、一方、前記第１制御部は、前記第１の複数のモジュールを起動した後、前記連携証明書に含まれる第３累積照合値を用いて正当な第１の複数のモジュールが起動していることを検証し、かつ、前記第２の複数のモジュールの先頭モジュールの正当性を、前記連携証明書に含まれる第３照合値を用いて検証した場合に、前記第２の複数のモジュールの先頭モジュールを起動し、前記第２制御部は、前記第２の複数のモジュールの正当性を検証して、前記第２の複数のモジュールを起動するものである。
【００２２】
これにより、前記第１の複数のモジュールの正当性が検証されたことを前提に、前記第２の複数のモジュールの正当性を検証する場合において、前記第１の複数のモジュールの更新があった場合に、前記第１の複数のモジュールの更新があったために変更が必要となる第２制御部での処理を前記第１制御部で行う。そのため、前記第１の複数のモジュールの更新があった場合でも、前記第２制御部においては前記第１の複数のモジュールの更新前と同一の処理を行うだけよく、前記第１の複数のモジュールの更新に連動して処理を変更する負荷を回避できる。
【００２３】
即ち、従来では、前記第２の複数のモジュールの検証は前記第１の複数のモジュールに依存するので、前記第１の複数のモジュールの更新があった場合、前記第２の複数のモジュールの先頭モジュールの証明書に含まれる、前記第２の複数のモジュールの先頭モジュールの正当性を検証する第３照合値及び前記第１の複数のモジュールに含まれるモジュールのハッシュ値を累積した場合の累積値から生成される第３累積照合値を、前記第２制御部が更新する必要があった。換言すれば、従来では、前記第１の複数のモジュールの更新があった場合に、前記第２の複数のモジュールの先頭モジュールに対応する証明書を前記第２制御部が更新するためには、前記第２の複数のモジュールの検証は前記第１の複数のモジュールに依存するので、更新後の前記第１の複数のモジュールに含まれるモジュールのハッシュ値を累積した場合の累積値から生成される第３累積照合値を、前記第１制御部から前記第２制御部に通知する必要があった。従って、更新後の前記第３累積照合値を前記第２制御部が有しない場合は、前記第２制御部は前記第１の複数のモジュールを依存した状態での前記第２の複数のモジュールの検証ができなかった。
【００２４】
しかし、本態様によると、前記第２の複数のモジュールの先頭モジュールの正当性を検証する第３照合値及び前記第１の複数のモジュールに含まれるモジュールのハッシュ値を累積した場合の累積値から生成される第３累積照合値を含む連携証明書を別途設け、この連携証明書を用いて前記第１制御部が、正当な第１の複数のモジュールが起動していることを検証した上で、前記第２の複数のモジュールの先頭モジュールの正当性を検証する。
【００２５】
一方、前記第２制御部では、前記第１の複数のモジュールの更新があった場合でも、正当な第１の複数のモジュールが起動していること検証せずに、前記第１の複数のモジュールの更新前と同一の処理を行って、前記第２の複数のモジュールの正当性を検証する。
【００２６】
この場合、前記第２制御部では、前記第１の複数のモジュールの更新があった場合でも、正当な第１の複数のモジュールが起動していること検証しないため、前記第１の複数のモジュールと前記第２の複数のモジュールとは独立性を確保することができ、連携証明書を用いて前記第１制御部が、前記第１の複数のモジュールの更新があった場合でも、正当な第１の複数のモジュールが起動していること検証した上で、前記第２の複数のモジュールの先頭モジュールの正当性を検証するため、連携証明書を媒体として前記第１の複数のモジュールと前記第２の複数のモジュールとは連携されることになる。
【００２７】
従って、前記１の複数のモジュールの更新後も、前記第２の複数のモジュールを前記１の複数のモジュールに依存させつつ、前記第１の複数のモジュールの更新に連動して前記第２制御部における処理を変更する負荷を回避できる。
【００２８】
請求項２記載の態様の情報処理装置は、さらに、前記第２制御部によって管理され起動済みの前記第２の複数のモジュールに含まれるモジュールのハッシュ値を累積した場合の累積値を格納する第３記憶部を有し、前記連携証明書は、さらに、前記第２の複数のモジュールが起動されていないことを示す第４累積値を含み、前記第１制御部は、さらに、第２の複数のモジュールの先頭モジュールの正当性を検証すると、前記第２制御部から前記第３記憶部に格納された第２の複数のモジュールの検証値を取得し、この取得した検証値と前記連携証明書に含まれる第４累積値とを比較して前記第２の複数のモジュールを起動する前に前記第２制御部が起動したモジュールがないことを検証した場合、前記第２の複数のモジュールの先頭モジュールを起動し、前記第２制御部は、前記第２の複数のモジュールの正当性を検証して、前記第２の複数のモジュールを起動することを特徴とする。
【００２９】
本態様によると、前記第２制御部によって管理され前記第２の複数のモジュールの検証値を格納する第３記憶部を有し、前記連携証明書は、さらに前記第２の複数のモジュールが起動されていないことを示す第４累積値を含み、前記第１制御部は、前記第２制御部から前記第３記憶部に格納された第２の複数のモジュールの検証値を取得し、この取得した検証値と前記第２の所定の照合値を比較して、前記第２制御部が前記第２の複数のモジュールを起動する前に前記第２制御部が起動したモジュールがないことを検証した場合、前記第２制御部に対して前記第２の複数のモジュールの正当性を検証させる。
【００３０】
即ち、前記第２制御部が前記第２の複数のモジュールを起動する前に前記第２制御部が起動したモジュールがない場合には、前記第３記憶部には、前記第２の複数のモジュールの検証値として例えばゼロが格納されている。そのため、前記第２の複数のモジュールが起動されていないことを示す第４累積値、即ち、例えばゼロと比較すると、両者は一致して、前記第２制御部が前記第２の複数のモジュールを起動する前に前記第２制御部が起動したモジュールがないことを前記第１制御部で検証できる。
【００３１】
これにより、前記第１制御部が前記第２の複数のモジュールの先頭モジュールの正当性を検証するだけではなく、前記先頭モジュールを含む第２の複数のモジュールを起動する前に前記第２制御部によって起動されたモジュールがないことを確認して前記第２制御部を起動させる。そのため、前記第２の複数のモジュールを起動させる前に前記第２制御部においてウィルス等が起動していないことを前記第１制御部が確認した上で前記第１制御部は前記第２制御部を起動させることができる。その結果、前記第１制御部が前記第２制御部の安全性を確認した上で前記第２制御部を起動させることができる。
【００３２】
請求項３記載の態様の情報処理装置は、さらに、前記保持部は、前記第１記憶部に含まれることを特徴とする。
本態様によると、前記連携証明書を格納するために必要な記憶領域を前記第１記憶部の記憶領域に中に確保することにより、情報処理装置において連携証明書を格納する記憶領域を確保するための分の新たなコストアップを回避できる。
【００３３】
請求項４記載の態様の情報処理装置は、さらに、前記第１制御部は、前記第２の複数の先頭モジュールがのモジュールを更新された場合、前記連携証明書に含まれる第３照合値を更新することを特徴とする。
【００３４】
本態様によると、前記第１制御部は、前記第２の複数のモジュールを更新した場合、前記連携証明書に含まれる第３照合値を更新することにより、前記第１制御部が更新後の第３照合値を格納した連携証明書を用いて、前記第２の複数のモジュールの正当性を検証するので、前記第１の複数のモジュールに依存する第２の複数のモジュールの正当性を検証するために用いる第３照合値を、前記第２制御部が更新する負荷を回避できる。
【００３５】
請求項５記載の態様の情報処理装置は、さらに、前記第２制御部は、前記第２の複数のモジュールの先頭モジュールを更新した場合、前記第１制御部にその旨を通知し、第１制御部は、前記通知を受信すると、前記連携証明書の前記第３照合値を前記更新された第２の複数のモジュールの先頭モジュールの第２照合値に更新することを特徴とする。
本態様によると、前記第２の複数のモジュールの更新があった場合、前記第２制御部は、第１制御部に通知し、前記通知を受信した第１制御部は、前記連携証明書の前記第３照合値を前記更新された第２の複数のモジュールの先頭モジュールの第２照合値に更新するので、前記第２の複数の先頭モジュールの更新後も、前記第１制御部は前記第２の複数のモジュールの先頭モジュールの正当性を適正に検証できる。
【００３６】
請求項６記載の態様の情報処理方法は、さらに、第１ステークホルダーに対応する第１の複数のモジュールと、前記第１の複数のモジュールの各モジュールについて、前記各モジュールのハッシュ値から生成される第１照合値及び前記第１の複数のモジュールに含まれるモジュールのハッシュ値を累積した場合の累積値から生成される第１累積照合値を含む証明書とを格納し、第２ステークホルダーに対応し前記第１の複数のモジュールと依存関係にある第２の複数のモジュールと、前記第２の複数のモジュールの各モジュールについて、前記各モジュールのハッシュ値から生成される第２照合値及び前記第２の複数のモジュールに含まれるモジュールのハッシュ値を累積した場合の累積値から生成される第２累積照合値を含む証明書とを格納し、前記第１の複数のモジュールの各モジュールの実際のハッシュ値と前記第１照合値とを比較して、前記第１の複数のモジュールの正当性を検証し、前記検証された第１の複数のモジュールを起動し、前記第１の複数のモジュールの正当性が検証された場合、前記第２の複数のモジュールの各モジュールの実際のハッシュ値と前記第２照合値とを比較して、前記第２の複数のモジュールの正当性を検証し、前記検証された第２の複数のモジュールを起動する情報処理方法であって、前記第２の複数のモジュールの先頭モジュールの正当性を検証する第３照合値及び前記第１の複数のモジュールに含まれるモジュールのハッシュ値を累積した場合の累積値から生成される第３累積照合値を含む連携証明書の保持し、前記第１の複数のモジュールを更新した場合、更新後の第１の複数のモジュールの証明書について前記証明書の署名を検証すると、前記検証された証明書の中の第１照合値を用いて前記連携証明書に含まれる第３累積照合値を更新し、前記第１の複数のモジュールを起動した後、前記連携証明書に含まれる第３累積照合値を用いて正当な第１の複数のモジュールが起動していることを検証し、かつ、前記第２の複数のモジュールの先頭モジュールの正当性を、前記連携証明書に含まれる第３照合値を用いて検証した場合に、前記第２の複数のモジュールの正当性を検証して、前記第２の複数のモジュールを起動させることを特徴とする。
【００３７】
請求項７記載の態様のコンピュータプログラムは、コンピュータに対し、第１ステークホルダーに対応する第１の複数のモジュールと、前記第１の複数のモジュールの各モジュールについて、前記各モジュールのハッシュ値から生成される第１照合値及び前記第１の複数のモジュールに含まれるモジュールのハッシュ値を累積した場合の累積値から生成される第１累積照合値を含む証明書とを第１記憶部に格納する第１処理と、第２ステークホルダーに対応し前記第１の複数のモジュールと依存関係にある第２の複数のモジュールと、前記第２の複数のモジュールの各モジュールについて、前記各モジュールのハッシュ値から生成される第２照合値及び前記第２の複数のモジュールに含まれるモジュールのハッシュ値を累積した場合の累積値から生成される第２累積照合値を含む証明書とを第２記憶部に格納する第２処理と、前記第１の複数のモジュールの各モジュールの実際のハッシュ値と前記第１照合値とを比較して、前記第１の複数のモジュールの正当性を検証し、前記検証された第１の複数のモジュールを起動する第３処理と、前記第１の複数のモジュールの正当性が検証された場合、前記第２の複数のモジュールの各モジュールの実際のハッシュ値と前記第２照合値とを比較して、前記第２の複数のモジュールの正当性を検証し、前記検証された第２の複数のモジュールを起動する第４処理と、を実行させるコンピュータプログラムであって、前記第２の複数のモジュールの先頭モジュールの正当性を検証する第３照合値及び前記第１の複数のモジュールに含まれるモジュールのハッシュ値を累積した場合の累積値から生成される第３累積照合値を含む連携証明書を保持部に格納する第５処理を実行させ、前記第３処理は、前記第１の複数のモジュールを更新した場合、更新後の第１の複数のモジュールの証明書について前記証明書の署名を検証すると、前記検証された証明書の中の第１照合値を用いて前記連携証明書に含まれる第３累積照合値を更新し、前記第３処理は、前記第１の複数のモジュールを起動した後、前記連携証明書に含まれる第３累積照合値を用いて正当な第１の複数のモジュールが起動していることを検証し、かつ、前記第２の複数のモジュールの先頭モジュールの正当性を、前記連携証明書に含まれる第３照合値を用いて検証した場合に、前記第４処理を起動して前記第２の複数のモジュールの正当性を検証して、前記第２の複数のモジュールを起動させることを特徴とする。
【００３８】
請求項８記載の態様の集積回路は、第１ステークホルダーに対応する第１の複数のモジュールと、前記第１の複数のモジュールの各モジュールについて、前記各モジュールのハッシュ値から生成される第１照合値及び前記第１の複数のモジュールに含まれるモジュールのハッシュ値を累積した場合の累積値から生成される第１累積照合値を含む証明書とを格納する第１記憶部と、第２ステークホルダーに対応し前記第１の複数のモジュールと依存関係にある第２の複数のモジュールと、前記第２の複数のモジュールの各モジュールについて、前記各モジュールのハッシュ値から生成される第２照合値及び前記第２の複数のモジュールに含まれるモジュールのハッシュ値を累積した場合の累積値から生成される第２累積照合値を含む証明書とを格納する第２記憶部と、前記第１の複数のモジュールの各モジュールの実際のハッシュ値と前記第１照合値とを比較して、前記第１の複数のモジュールの正当性を検証し、前記検証された第１の複数のモジュールを起動する第１制御部と、前記第１の複数のモジュールの正当性が検証された場合、前記第２の複数のモジュールの各モジュールの実際のハッシュ値と前記第２照合値とを比較して、前記第２の複数のモジュールの正当性を検証し、前記検証された第２の複数のモジュールを起動する第２制御部と、前記第２の複数のモジュールの先頭モジュールの正当性を検証する第３照合値及び前記第１の複数のモジュールに含まれるモジュールのハッシュ値を累積した場合の累積値から生成される第３累積照合値を含む連携証明書の保持部と、を具備した集積回路であって、前記第１制御部は、前記第１の複数のモジュールを更新した場合、更新後の第１の複数のモジュールの証明書について前記証明書の署名を検証すると、前記検証された証明書の中の第１照合値を用いて前記連携証明書に含まれる第３累積照合値を更新し、前記第１制御部は、前記第１の複数のモジュールを起動した後、前記連携証明書に含まれる第３累積照合値を用いて正当な第１の複数のモジュールが起動していることを検証し、かつ、前記第２の複数のモジュールの先頭モジュールの正当性を、前記連携証明書に含まれる第３照合値を用いて検証した場合に、前記第２の複数のモジュールの先頭モジュールを起動し、前記第２制御部は、前記第２の複数のモジュールの正当性を検証して、前記第２の複数のモジュールを起動することを特徴とする。
【００３９】
（第１の実施形態）
本発明の第１の実施形態における端末１００の構成について説明する。
端末１００は、図１に示すように、ＣＰＵ１０１と、第１の提供者（第１のステークホルダー）から提供されるソフトウェアモジュールに関する処理を行う第1の情報処理部１１０と、第２の提供者（第１のステークホルダー）から提供されるソフトウェアモジュールに関する処理を行う第２の情報処理部１２０と、第1の情報処理部１１０のセキュアブートと第２の情報処理部１２０のセキュアブートとを繋ぐセキュアブート処理に用いられる連携証明書の保持・更新を行う連携処理部１３０とから構成される。
【００４０】
ここで、第1の情報処理部１１０のセキュアブートと第２の情報処理部１２０のセキュアブートとを繋ぐセキュアブート処理とは、第1の情報処理部１１０のセキュアブート処理から第２の情報処理部１２０のセキュアブート処理に移行する際に行う処理である。
【００４１】
第1の情報処理部１１０は、第1の提供者が提供するソフトウェアのモジュール群である第1のモジュール群を格納する第１の記憶部１１１と、第1のモジュール群のセキュアブート処理を制御する第1のセキュアブート制御部１１２と、耐タンパ性を備える第1のセキュリティモジュール１１３と、第1のモジュール群のモジュールを第1の提供者のサーバ（不図示）からネットワークを通じてダウンロードし、第１の記憶部１１１に保持されているモジュールを更新する第1のダウンロード更新部１１４とから構成される。
【００４２】
第２の情報処理部１１０は、第２の提供者が提供するソフトウェアのモジュール群である第２のモジュール群を格納する第２の記憶部１２１と、第２のモジュール群のセキュアブート処理を制御する第２のセキュアブート制御部１２２と、耐タンパ性を備える第２のセキュリティモジュール１２３と、第２のモジュール群のモジュールを第２の提供者のサーバ（不図示）からネットワークを通じてダウンロードし、第２の記憶部１２１に保持されているモジュールを更新する第２のダウンロード更新部１２４とから構成される。
【００４３】
連携処理部１３０は、連携証明書を格納する連携証明書記憶部１３１と、連携証明書を更新する連携証明書更新部１３５とから構成される。
第１のセキュアブート制御部１１２と第２のセキュアブート制御部１２２、第１のダウンロード更新部１１４と第２のダウンロード更新部１２４、連携証明書更新部１３５は、一般的にはＣＰＵ１０１が実行するソフトウェアによって実現されるが、一部もしくは全部をハードウェアによって実現されてもよい。
【００４４】
また、第１のセキュリティモジュール１１３と第２のセキュリティモジュール１２３は、耐タンパ性を備えるハードウェアまたはＣＰＵ１０１が実行する耐タンパ化されたソフトウェアによって実現される。
【００４５】
第１の記憶部１１１と第２の記憶部１２１と連携証明書記憶部１３１は、具体的には不揮発性メモリやハードディスクその他の記憶装置によって実現される。
さらに、第１のセキュリティモジュール１１３は、図２（ａ）に示すように、ＣＰＵ１０１が実際に実行するソフトウェアモジュールの構成を示す構成情報を保持する構成情報累積部２１１と、ソフトウェアモジュールの証明書の有効性を検証する証明書検証部２１２と、構成情報累積部２１１が保持する構成情報を証明書の中の構成照合値と照合する照合部２１３と、ソフトウェアモジュールの有効なバージョンの下限を示すカウンタ値を保持するカウンタ部２１４と、データの暗復号及び署名生成や署名検証を行う暗復号部２１５と、を備える。また、構成情報累積部２１１は、第1の情報処理部で起動されたソフトウェアモジュールのハッシュ値の累積ハッシュ演算を行なう累積部２１６と、累積部２１６が算出した累積値（以下、累積演算の結果をこのように呼ぶ）を保持する構成情報保持部２１７と、を備えている。ここで構成情報保持部２１７は、ＴＣＧにおけるセキュリティモジュールであるＴＰＭのＰＣＲ（Ｐｌａｔｆｏｒｍ Ｃｏｎｆｉｇｕｒａｔｉｏｎ Ｒｅｇｉｓｔｅｒ）に相当するものであり、構成情報保持部２１７に保持される値は、第1の情報処理部で起動されているモジュールの構成を示す。
構成情報保持部２１７は、複数のレジスタから構成され、累積部２１６がどのレジスタに対して累積ハッシュ演算を行うかはレジスタ番号によって指定される。
【００４６】
暗復号部２１５は、データの暗復号処理や署名生成や署名検証を行うための複数の鍵データを保持している。また、第１の記憶部には、暗復号部２１５が保持している鍵データで暗号化された別の鍵データが格納されており（不図示）、その暗号化された鍵データを、第１のセキュリティモジュールにロードして、暗復号部２１５が保持している鍵データで復号することで、暗復号部２１５はその復号した鍵データを用いて暗復号処理や署名生成や署名検証を行う。
【００４７】
累積部２１６は、構成情報保持部２１７の１つのレジスタが保持する値のバイト列とソフトウェアモジュールのハッシュ演算の結果のバイト列とを連結し、さらに連結したバイト列に対してハッシュ演算を行い、その結果をそのレジスタに再格納する。
【００４８】
第２のセキュリティモジュール１２３は、第１のセキュリティモジュール１１３と同様の構成を備えており、図２（ｂ）に示すように、ＣＰＵ１０１が実際に実行するソフトウェアモジュールの構成を示す構成情報を保持する構成情報累積部２２１と、ソフトウェアモジュールの証明書の有効性を検証する証明書検証部２２２と、構成情報累積部２２１が保持する構成情報を証明書の中の構成照合値と照合する照合部２２３と、ソフトウェアモジュールの有効なバージョンの下限を示すカウンタ値を保持するカウンタ部２２４と、データの暗復号及び署名生成や署名検証を行う暗復号部２２５と、を備える。また、構成情報累積部２２１は、第２の情報処理部で起動されたソフトウェアモジュールのハッシュ値の累積ハッシュ演算を行なう累積部２２６と、複数のレジスタから構成され、累積部２２６が算出した累積値（以下、累積演算の結果をこのように呼ぶ）を保持する構成情報保持部２２７と、を備えている。ここで構成情報保持部２２７は、ＴＣＧにおけるセキュリティモジュールであるＴＰＭのＰＣＲ（Ｐｌａｔｆｏｒｍ Ｃｏｎｆｉｇｕｒａｔｉｏｎ Ｒｅｇｉｓｔｅｒ）に相当するものであり、構成情報保持部２２７に保持される値は、第２の情報処理部で起動されているモジュールの構成を示す。
構成情報保持部２２７は、複数のレジスタから構成され、累積部２２６がどのレジスタに対して累積ハッシュ演算を行うかはレジスタ番号によって指定される。
【００４９】
暗復号部２２５は、データの暗復号処理や署名生成や署名検証を行うための複数の鍵データを保持している。また、第２の記憶部には、暗復号部２２５が保持している鍵データで暗号化された別の鍵データが格納されており（不図示）、その暗号化された鍵データを、第２のセキュリティモジュールにロードして、暗復号部２２５が保持している鍵データで復号することで、暗復号部２２５はその復号した鍵データを用いて暗復号処理や署名生成や署名検証を行う。
【００５０】
累積部２２６は、構成情報保持部２２７の１つのレジスタが保持する値のバイト列とソフトウェアモジュールのハッシュ演算の結果のバイト列とを連結し、さらに連結したバイト列に対してハッシュ演算を行い、その結果をそのレジスタに再格納する。
【００５１】
図３（ａ）は、第１の記憶部に格納されるモジュールと証明書の一例を示し、この場合、第1のモジュール群は、モジュール＃１１、モジュール＃１２、モジュール＃１３の３つのモジュールから構成され、モジュール＃１１、モジュール＃１２、モジュール＃１３にそれぞれ対応する証明書＃１１、証明書＃１２、証明書＃１３が保持されている。
【００５２】
第１のセキュアブート制御部１１２は、証明書＃１１、証明書＃１２、証明書＃１３を用いて、モジュール＃１１、モジュール＃１２、モジュール＃１３に関して、非特許文献４及び非特許文献５に示されている方式に基づくセキュアブートを行い、モジュール＃１１、モジュール＃１２、モジュール＃１３の順番でモジュールを起動する。
【００５３】
図３（ｂ）は、第２の記憶部に格納されるモジュールと証明書の一例を示し、この場合、第２のモジュール群は、モジュール＃２１、モジュール＃２２、モジュール＃２３の３つのモジュールから構成され、モジュール＃２１、モジュール＃２２、モジュール＃２３にそれぞれ対応する証明書＃２１、証明書＃２２、証明書＃２３が保持されている。
【００５４】
第２のセキュアブート制御部１２２は、証明書＃２１、証明書＃２２、証明書＃２３を用いて、モジュール＃２１、モジュール＃２２、モジュール＃２３に関して、非特許文献４及び非特許文献５に示されている方式に基づくセキュアブートを行い、モジュール＃２１、モジュール＃２２、モジュール＃２３の順番でモジュールを起動する。
【００５５】
図４は、これらのソフトウェアモジュールに対応する証明書のデータ構造を示しており、証明書４００は、その証明書が対応付けられたソフトウェアモジュールを識別する情報であるラベル４０１と、ソフトウェアモジュールのバージョンを示す参照カウンタ値４０２と、ソフトウェアモジュールが実行される前の端末１００の状態においてセキュリティモジュールの構成情報保持部（２１７、２２７）に保持されるべき累積ハッシュ値を示す構成照合値４０３と、ソフトウェアモジュールのダイジェストとしてモジュールのコードイメージをハッシュ演算した場合の値を示すモジュール計測値４０５と、モジュール計測値４０５が示す値を累積ハッシュ演算する構成情報保持部（２１７、２２７）のレジスタ番号を指定するレジスタインデックス４０４と、証明書の署名を検証する鍵を示す検証鍵ＩＤ４０６と、検証鍵ＩＤ４０６が示す鍵に対応する秘密鍵によるラベル４０１から検証鍵ＩＤ４０６までのデータに対する電子署名４０７と、から構成される。
【００５６】
モジュール計測値４０５は、正当なソフトウェアモジュールのコードイメージのハッシュ値であり、実際のソフトウェアモジュールのコードイメージのハッシュ演算の結果と照合することで、そのソフトウェアモジュールが改ざんされていないことを検証することが可能となる。
【００５７】
また、セキュリティモジュールのカウンタ部は、ソフトウェアモジュールの有効なバージョンの下限を示すので、参照カウンタ値４０２は、セキュリティモジュールのカウンタ部に格納されるカウンタ値以上であることを検証することで、リボークされた古いモジュールの証明書ではないこと、つまり、そのモジュールが有効なソフトウェアモジュールであることを検証することが可能となる。
【００５８】
また、構成照合値４０３は、セキュリティモジュールの構成情報保持部に格納される累積ハッシュ値と照合することで、ソフトウェアモジュールを実行する前の状態として正しい状態（その前に実行されているソフトウェアモジュールが有効なソフトウェアモジュールであり、正しい順番で実行されている）であることを検証するために用いられる。
また、電子署名５０７は、公開鍵暗号方式の署名鍵による電子署名であり、署名鍵は、１０２４ビット以上の鍵長の鍵であることが望ましい。
【００５９】
図３（ｃ）は、連携証明書記憶部に格納される連携証明書の一例を示し、この場合、第１のモジュール群のセキュアブートと第２のモジュール群のセキュアブートを繋ぐセキュアブートに用いられる１つの連携証明書が保持されている。具体的には、第１のモジュール群のモジュール＃１３を起動した後に、第２のモジュール群のモジュール＃２１を起動する際のセキュアブートに用いられる連携証明書が保持されている。
【００６０】
図５は、この連携証明書のデータ構造を示しており、連携証明書５００は、その証明書が対応付けられたソフトウェアモジュールを識別する情報であるラベル５０１と、ソフトウェアモジュールのバージョンを示す参照カウンタ値５０２と、ソフトウェアモジュールが実行される前の端末１００の状態において、第1のセキュリティモジュール１１３の構成情報保持部に保持されるべき累積ハッシュ値を示す第1の構成照合値５０３と、第２のセキュリティモジュール１２３の構成情報保持部に保持されるべき累積ハッシュ値を示す第２の構成照合値５０４と、第２のモジュール群の先頭のモジュールのコードイメージをハッシュした場合の値を示すモジュール計測値５０５と、第２のモジュール群が依存する第１のモジュール群の中のモジュールを示す依存リスト５０７と、証明書の署名を検証する鍵を示す検証鍵ＩＤ５０６と、検証鍵ＩＤ５０６が示す鍵に対応する秘密鍵によるラベル５０１から検証鍵ＩＤ５０６までのデータに対する電子署名５０８と、から構成される。
【００６１】
この場合、ラベル５０１は、第２のモジュール群のモジュール＃２１を識別するラベルであり、モジュール計測値５０５は、正当なモジュール＃２１のコードイメージのハッシュ値であり、実際のモジュール＃２１のコードイメージのハッシュ演算の結果と照合することで、モジュール＃２１が改ざんされていないことを検証することが可能となる。
【００６２】
また、参照カウンタ値５０２は、セキュリティモジュールのカウンタ部に格納されるカウンタ値以上であることを検証することで、連携証明書がリボークされた古い連携証明書ではないことを検証することが可能となる。
【００６３】
また、第1の構成照合値５０３は、第1のセキュリティモジュールの構成情報保持部に格納される累積値と照合することで、モジュール＃２１を実行する前の状態として正しい状態（その前に実行されているモジュール＃１１、＃１２、＃１３が有効なソフトウェアモジュールであり、正しい順番で実行されている）であることを検証するために用いられる。
【００６４】
また、第２の構成照合値５０４は、第２のセキュリティモジュールの構成情報保持部に格納される累積値と照合することで、モジュール＃２１を実行する前の状態として正しい状態（第２のモジュール群のモジュールが起動されていない状態）であることを検証するために用いられる。
【００６５】
また、依存リスト５０７は、図９に示すように、連携証明書更新部１３５が第1の構成照合値５０３を算出する際に行う累積ハッシュ演算の順番と、第２のモジュール群が依存するモジュールの証明書のラベルと、が示されている。図９の場合には、モジュール＃２１が、証明書＃１１（ＭＯＤＵＬＥ１１）と、証明書＃１２（ＭＯＤＵＬＥ１２）と、証明書＃１３（ＭＯＤＵＬＥ１３）と、に依存し、証明書＃１１、証明書＃１２、証明書＃１３の順番で、それぞれのモジュール計測値を用いて累積ハッシュ演算を行うことで第1の構成照合値５０３が算出されることを示している。
【００６６】
また、電子署名５０８は、公開鍵暗号方式の署名鍵による電子署名であり、署名鍵は、１０２４ビット以上の鍵長の鍵であることが望ましい。
次に、図１０は、第１の記憶部に図３（ａ）に示すモジュールと証明書が、第２の記憶部に図３（ｂ）に示すモジュールと証明書がそれぞれ格納される場合の端末１００におけるセキュアブート及びソフトウェアモジュールの更新を模式的に示している。
【００６７】
端末１００におけるセキュアブートでは、まず、第１のセキュアブート制御部１１２が証明書＃１１、証明書＃１２、証明書＃１３を用いてモジュール＃１１、モジュール＃１２、モジュール＃１３の順にセキュアブートを行い、さらに、連携証明書を用いてモジュール＃１３からモジュール＃２１へのセキュアブートを行い、次に、第２のセキュアブート制御部１２２が証明書＃２１、証明書＃２２、証明書＃２３を用いてモジュール＃２１、モジュール＃２２、モジュール＃２３の順にセキュアブートをおこなって、モジュール＃１１、モジュール＃１２、モジュール＃１３、モジュール＃２１、モジュール＃２２、モジュール＃２３の順での一連のセキュアブートが行われる。
【００６８】
また、ソフトウェアモジュールの更新では、第１のサーバまたは第２のサーバから個別にソフトウェアモジュールと対応する証明書とが第１のダウンロード更新部１１４または第２のダウンロード更新部１２４によってダウンロードされ、第１の記憶部または第２の記憶部に格納されているソフトウェアモジュールと証明書とが更新される。その後、連携証明書更新部１３５が第１の記憶部または第２の記憶部に格納されている証明書を参照して連携証明書を更新する。
【００６９】
次に、端末１００の詳細な動作を、第１の記憶部に図３（ａ）に示すモジュールと証明書が、第２の記憶部に図３（ｂ）に示すモジュールと証明書がそれぞれ格納される場合について説明する。
【００７０】
まず、図６を用いて、第１のモジュール群のセキュアブートと第２のモジュール群のセキュアブートとの間に実行することで、この２つのセキュアブートを一連のセキュアブートとして繋ぐセキュアブートの動作について説明する。具体的には、第１のモジュール群のモジュール＃１１、モジュール＃１２、モジュール＃１３を順次起動した後に、第２のモジュール群のモジュール＃２１を起動する際に行うセキュアブートの動作について説明する。
【００７１】
まず、第1のセキュアブート制御部１１２は、第１のモジュール群の非特許文献４及び非特許文献５に示されている方式に基づくセキュアブートを実行し、モジュール＃１１、モジュール＃１２、モジュール＃１３を順次起動した後、連携証明書記憶部１３１から連携証明書５００を読み出し（Ｓ６０１）、第1のセキュリティモジュールに読み出した連携証明書５００の検証を要求する検証要求を送信する（Ｓ６０２）。
検証要求を受信した第１のセキュリティモジュール１１３は、証明書検証部が受信した連携証明書を検証する（Ｓ６０３）。
【００７２】
この連携証明書の検証では、まず、第１のセキュリティモジュールが保持する連携証明書５００の検証鍵ＩＤ５０６が示す鍵を用いて電子署名５０８が検証される。
さらに、連携証明書５００の参照カウンタ値５０２が、カウンタ部２１４が保持するカウンタ値以上であることを判定し、連携証明書５００がリボークされた古い連携証明書ではないことが検証される。
【００７３】
次に、照合部２１３が、構成情報保持部２１７が保持する累積ハッシュ値と連携証明書５００の中の第1の構成照合値５０３とを照合し、モジュール＃２１を実行する前の状態として第１の情報処理部側が正しい状態（その前に実行されているモジュール＃１１、＃１２、＃１３が有効なソフトウェアモジュールであり、正しい順番で実行されている）であることを検証する。
【００７４】
照合部２１３による検証結果を受信した証明書検証部は、この検証結果を第1のセキュアブート制御部１１２に送信する（Ｓ６０４）。
検証結果を受信した第1のセキュアブート制御部１１２は、何れかの検証処理でエラーが検出された場合にはセキュアブートを中止し、すべての検証処理の結果が成功であった場合に、第２の記憶部１２１から第２のモジュール群のモジュール＃２１を読み出す（Ｓ６０５）。
【００７５】
第1のセキュアブート制御部１１２は、読み出したモジュール＃２１のコードイメージのハッシュ演算を行い、その結果と連携証明書５００のモジュール計測値５０５とを照合することで読み出したモジュール＃２１が連携証明書５００に対応する正当なモジュール＃２１であることを検証する（Ｓ６０６）。
【００７６】
第1のセキュアブート制御部１１２は、このモジュール＃２１の検証の結果、エラーが検出された場合には、セキュアブートを中止し、検証の結果が成功であった場合に、第２のセキュリティモジュール１２３に第２の情報処理部側で起動されているソフトウェアモジュールの構成を示す構成情報を要求する構成情報要求を送信する（Ｓ６０７）。
【００７７】
構成情報要求を受信した第２のセキュリティモジュール１２３は、暗復号部２２５が保持する署名鍵を用いて構成情報保持部２２７が保持する累積ハッシュ値に電子署名を施して構成情報を生成し（Ｓ６０８）、第1のセキュアブート制御部１１２に送信する（Ｓ６０９）。
【００７８】
構成情報を受信した第1のセキュアブート制御部１１２は、まず、受信した構成情報に施されている電子署名を第２のセキュリティモジュール１２３の署名鍵に対応する署名検証鍵を用いて検証し、さらに、構成情報が示す累積ハッシュ値と連携証明書５００の中の第２の構成照合値とを照合し、モジュール＃２１を実行する前の状態として第２の情報処理部側が正しい状態（第２のモジュール群のモジュールが起動されていない状態）であることを検証する（Ｓ６１０）。
【００７９】
第1のセキュアブート制御部１１２は、この検証の結果、エラーが検出された場合には、セキュアブートを中止し、検証の結果が成功であった場合に、モジュール＃２１を起動し、ＣＰＵ１０１がモジュール＃２１のコードイメージを実行する（Ｓ６１１）。
この後、第２のセキュアブート制御部１２２により第２のモジュール群のセキュアブートが開始される。
【００８０】
以上のように、連携証明書を用いて、セキュアブートを行うことで、２つのセキュアブートを一連のセキュアブートとして実行することが出来る。
次に、図７、８を用いて、連携証明書５００の更新処理の動作について説明する。
【００８１】
連携証明書５００の更新処理は、第２のモジュール群において最初に起動されるべきモジュール＃２１の証明書＃２１が更新された場合、または、連携証明書５００の依存リスト５０７に示されているモジュール＃１１、＃１２、＃１３の何れかが更新された場合に開始される。
【００８２】
証明書＃２１が更新された場合には、ダウンロード更新部１２４から連携証明書更新部１３５に証明書＃２１が更新されたことが通知され、モジュール＃１１、＃１２、＃１３の何れかが更新された場合には、ダウンロード更新部１１４から連携証明書更新部１３５に更新されたことが通知される。
【００８３】
まず、更新の通知を受信した連携証明書更新部１３５は、連携証明書記憶部１３１から連携証明書５００を読み出し（Ｓ７０１）、第1のセキュリティモジュールに読み出した連携証明書５００の検証を要求する検証要求を送信する（Ｓ７０２）。
【００８４】
検証要求を受信した第１のセキュリティモジュール１１３は、証明書検証部が受信した連携証明書を検証する（Ｓ７０３）。
この連携証明書の検証では、まず、連携証明書５００の電子署名５０８が検証され、さらに、連携証明書５００の参照カウンタ値５０２が、カウンタ部２１４が保持するカウンタ値以上であることを判定し、連携証明書５００がリボークされた古い連携証明書ではないことが検証される。
【００８５】
証明書検証部は、この検証結果を第1のセキュアブート制御部１１２に送信する（Ｓ７０４）。
検証結果を受信した連携証明書更新部１３５は、検証処理でエラーが検出された場合には、エラーが検出された連携証明書をもとに連携証明書の更新処理を行うことは出来ないので更新処理を中止し、検証処理の結果が成功であった場合に、第２の記憶部１２１からモジュール＃２１に対応する証明書＃２１を読み出し（Ｓ７０５）、第２のセキュリティモジュールに読み出した証明書＃２１の検証を要求する検証要求を送信する（Ｓ７０６）。
検証要求を受信した第２のセキュリティモジュール１２３は、証明書検証部が受信した証明書＃２１を検証する（Ｓ７０７）。
【００８６】
この証明書＃２１の検証では、まず、証明書＃２１の電子署名４０７が検証され、さらに、証明書＃２１の参照カウンタ値４０２が、カウンタ部２２４が保持するカウンタ値以上であることを判定し、証明書＃２１がリボークされた古い証明書ではないことが検証される。
【００８７】
証明書検証部は、この検証結果を連携証明書更新部１３５に送信する（Ｓ７０８）。
検証結果を受信した連携証明書更新部１３５は、検証処理でエラーが検出された場合には更新処理を中止し、検証処理の結果が成功であった場合に、第１の記憶部１１１から連携証明書５００の依存リスト５０７が示す全ての証明書を読み出し（Ｓ７０９）、第１のセキュリティモジュールに読み出した証明書の検証を要求する検証要求を送信する（Ｓ７１０）。
【００８８】
検証要求を受信した第１のセキュリティモジュール１１３は、証明書検証部が受信した証明書を検証する（Ｓ７１１）。
この証明書の検証では、まず、証明書の電子署名４０７が検証され、さらに、証明書の参照カウンタ値４０２が、カウンタ部２１４が保持するカウンタ値以上であることを判定し、証明書がリボークされた古い証明書ではないことが検証される。
【００８９】
証明書検証部は、この検証結果を連携証明書更新部１３５に送信する（Ｓ７１２）。
検証結果を受信した連携証明書更新部１３５は、検証処理でエラーが検出された場合には更新処理を中止し、検証処理の結果が成功であった場合に、連携証明書５００の依存リスト５０７をもとに新しい連携証明書の第1の構成照合値５０３を算出する（Ｓ７１３）。具体的には、依存リスト５０７が示す各証明書のモジュール計測値を、依存リスト５０７が示す順番で、各証明書のレジスタインデックスが示すレジスタに対して累積ハッシュ演算を仮想的に実行した場合の累積ハッシュ値を算出する。
【００９０】
次に、連携証明書更新部１３５は、証明書＃２１の構成照合値４０３を新しい連携証明書の第２の構成照合値５０４に設定し（Ｓ７１４）、さらに、証明書＃２１のモジュール計測値４０５を新しい連携証明書のモジュール計測値５０５に設定し（Ｓ７１５）、第１のセキュリティモジュール１１３に電子署名の生成を要求する署名要求を送信する（Ｓ７１６）。
【００９１】
署名要求を受信した第１のセキュリティモジュール１１３は、電子署名を生成し（Ｓ７１７）、生成した電子署名を連携証明書更新部１３５に送信する（Ｓ７１８）。
連携証明書更新部１３５は、受信した電子署名を新しい連携証明書の電子署名５０８に設定し、連携証明書記憶部１３１に保持されている連携証明書を新しい連携証明書に更新して、更新処理を完了する（Ｓ７１９）。
【００９２】
この後、端末１００は、新しい連携証明書を用いて、第１のモジュール群と第２のモジュール群の２つのセキュアブートを一連のセキュアブートとして実行することが出来る。
以上のように、連携証明書の依存リストに基づき、証明書を参照して構成照合値を算出することで、新しい連携証明書を端末１００の内部で生成することができる。
【００９３】
これにより、第１のモジュール群のソフトウェアモジュールを提供する第1の提供者、及び、第２のモジュール群のソフトウェアモジュールを提供する第２の提供者は、提供するソフトウェアモジュールを新しいソフトウェアモジュールに更新する際に、更新情報を事前に通知する必要がなく、提供者間の独立性を維持した上で個別に新しいフトウェアモジュールを提供することが出来る。
【００９４】
なお、上記で説明した連携証明書の更新において連携証明書更新部１３５が行っている処理の一部を、第１のセキュリティモジュールが行うようにしても良い。具体的には、第１の構成照合値の算出（Ｓ７１３）、証明書＃２１の構成照合値を第２の構成照合値に設定（Ｓ７１４）、証明書＃２１のモジュール計測値をモジュール計測値に設定（Ｓ７１５）の何れかまたはすべての処理を第１のセキュリティモジュールが行う。
【００９５】
この場合、これらの処理を、耐タンパ化された第１のセキュリティモジュールが行うことで、連携証明書に不正な照合値が設定されるといった改竄行為を防止することができ、安全性が向上する。
【００９６】
なお、連携証明書を格納する連携証明書記憶部１３１を、第１の記憶部１１１の中に設け、連携証明書更新部１３５を第１の情報処理部１１０の中に設けるようにしてもよい。
この場合、連携証明書を格納するために必要な記憶領域を第１の記憶部の中に確保することで、連携証明書を格納する記憶領域を確保するための分の新たなコストアップを回避できる。
【００９７】
また、連携証明書を格納する連携証明書記憶部１３１を、第２の記憶部１２１の中に設け、連携証明書更新部１３５を第２の情報処理部１２０の中に設けるようにしてもよい。
この場合、連携証明書を格納するために必要な記憶領域を第２の記憶部の中に確保することで、連携証明書を格納する記憶領域を確保するための分の新たなコストアップを回避できる。また、この場合には、連携証明書の電子証明５０８は、第２のセキュリティモジュールが生成する。
【００９８】
なおまた、連携処理部１３０に第３のセキュアブート制御部、第３のセキュリティモジュールを設けて、上記において、図６を用いて説明したセキュアブートを第１のセキュアブート制御部の代わりに第３のセキュアブート制御部を用いて行うようにしてよい。
（第２の実施形態）
本発明の第２の実施形態は、ソフトウェアモジュールの証明書と連携証明書のデータ構造を共通化して、セキュリティモジュールにおいて証明書の検証処理と連携証明書の検証処理を共通化できるように構成したものである。
【００９９】
本発明の第２の実施形態における端末１００の構成は、第１の実施形態と同じであり、説明を省略する。
図１１は、本発明の第２の実施形態におけるソフトウェアモジュールに対応する証明書１１００のデータ構造を示している。拡張データダイジェスト１１０７のフィールドが追加されている以外は、本発明の第１の実施形態のソフトウェアモジュールに対応する証明書４００と同じである。
【０１００】
証明書１１００は、その証明書が対応付けられたソフトウェアモジュールを識別する情報であるラベル１１０１と、ソフトウェアモジュールのバージョンを示す参照カウンタ値１１０２と、ソフトウェアモジュールが実行される前の端末１００の状態においてセキュリティモジュールの構成情報保持部（２１７、２２７）に保持されるべき累積ハッシュ値を示す構成照合値１１０３と、ソフトウェアモジュールのダイジェストとしてモジュールのコードイメージをハッシュ演算した場合の値を示すモジュール計測値１１０５と、モジュール計測値１１０５が示す値を累積ハッシュ演算する構成情報保持部（２１７、２２７）のレジスタ番号を指定するレジスタインデックス１１０４と、証明書の署名を検証する鍵を示す検証鍵ＩＤ１１０６と、拡張データダイジェスト１１０７と、検証鍵ＩＤ１１０６が示す鍵に対応する秘密鍵によるラベル１１０１から拡張データダイジェスト１１０７までのデータに対する電子署名１１０８と、から構成される。
【０１０１】
この拡張データダイジェスト１１０７には、証明書の拡張データのハッシュ値が設定される。この証明書に複数の拡張データを対応付ける場合には、複数の拡張データを連結したデータに対するハッシュ値が拡張データダイジェスト１１０７に設定される。
【０１０２】
本発明の第２の実施形態における連携証明書のデータ構造は、図１１に示したソフトウェアモジュールに対応する証明書のデータ構造と同じであり、この拡張データダイジェスト１１０７に連携証明書の拡張データのハッシュ値が設定されることにより、連携証明書となる。
【０１０３】
図１２は、本発明の第２の実施形態における連携証明書１２００のデータ構造と連携証明書の拡張データを模式的に示している。
拡張データには、拡張データの種類を示す拡張データ名が含まれ、拡張データのデータ構造は、拡張データの種類によって決まる。
【０１０４】
連携証明書の拡張データの場合は、連携証明書の拡張データであることを示す拡張データ名１２０１と、連携証明書によるセキュアブートにおいて起動されるモジュールの証明書のハッシュ値を示す証明書ダイジェスト１２０２と、依存リストのハッシュ値を示す依存リストダイジェスト１２０３から構成される。
【０１０５】
第１の記憶部に図３（ａ）に示すモジュールと証明書が、第２の記憶部に図３（ｂ）に示すモジュールと証明書がそれぞれ格納される場合、証明書ダイジェスト１２０２には証明書＃２１のハッシュ値（Ｈａｓｈ（証明書＃２１））が、依存リストダイジェスト１２０３には、図９に示した依存リストのハッシュ値（Ｈａｓｈ（依存リスト））がそれぞれ設定される。
【０１０６】
図３（ｄ）に示すように、本発明の第２の実施形態の場合、拡張データは連携証明書と共に連携証明書記憶部１３１に保持されている。
また、連携証明書のラベル１１０１には、第２のモジュール群の先頭のモジュールであるモジュール＃２１を識別するラベルが設定される。
【０１０７】
参照カウンタ値１１０２は、第１のセキュリティモジュールのカウンタ部に格納されるカウンタ値以上の値が設定される。
構成照合値１１０３には、第1のセキュリティモジュール１１３の構成情報保持部に保持されるべき累積ハッシュ値が設定される。
【０１０８】
レジスタインデックス１１０４には、証明書＃２１が示すレジスタインデックスが設定される。
モジュール計測値１１０５には、証明書＃２１が示すモジュール計測値が設定される。
【０１０９】
次に、本発明の第２の実施形態の端末１００の詳細な動作を、第１の記憶部に図３（ａ）に示すモジュールと証明書が、第２の記憶部に図３（ｂ）に示すモジュールと証明書がそれぞれ格納される場合について説明する。
【０１１０】
まず、図１３を用いて、本発明の第２の実施形態における連携証明書を用いたセキュアブートの動作について説明する。
まず、第1のセキュアブート制御部１１２は、第１のモジュール群の非特許文献４及び非特許文献５に示されている方式に基づくセキュアブートを実行し、モジュール＃１１、モジュール＃１２、モジュール＃１３を順次起動した後、連携証明書記憶部１３１から連携証明書１２００及び連携証明書拡張データを読み出し（Ｓ１３０１）、第1のセキュリティモジュールに読み出した連携証明書１２００の検証を要求する検証要求を送信する（Ｓ１３０２）。
【０１１１】
検証要求を受信した第１のセキュリティモジュール１１３は、証明書検証部が受信した連携証明書を検証する（Ｓ１３０３）。
この場合、証明書と連携証明書のデータ構造は同じなので、第１のセキュリティモジュール１１３は、証明書を検証する場合と同じ機能を用いて連携証明書を検証する。
この連携証明書の検証では、まず、第１のセキュリティモジュールが保持する連携証明書１２００の検証鍵ＩＤ１１０６が示す鍵を用いて電子署名１１０８が検証される。
さらに、連携証明書１２００の参照カウンタ値１１０２が、カウンタ部２１４が保持するカウンタ値以上であることを判定し、連携証明書１２００がリボークされた古い連携証明書ではないことが検証される。
【０１１２】
次に、照合部２１３が、構成情報保持部２１７が保持する累積ハッシュ値と連携証明書１２００の中の構成照合値１１０３とを照合し、モジュール＃２１を実行する前の状態として第１の情報処理部側が正しい状態（その前に実行されているモジュール＃１１、＃１２、＃１３が有効なソフトウェアモジュールであり、正しい順番で実行されている）であることを検証する。
【０１１３】
照合部２１３による検証結果を受信した証明書検証部は、この検証結果を第1のセキュアブート制御部１１２に送信する（Ｓ１３０４）。
検証結果を受信した第1のセキュアブート制御部１１２は、何れかの検証処理でエラーが検出された場合にはセキュアブートを中止し、すべての検証処理の結果が成功であった場合に、第２の記憶部１２１から第２のモジュール群のモジュール＃２１を読み出す（Ｓ１３０５）。
【０１１４】
第1のセキュアブート制御部１１２は、読み出したモジュール＃２１のコードイメージのハッシュ演算を行い、その結果と連携証明書１２００のモジュール計測値１１０５とを照合することで読み出したモジュール＃２１が連携証明書１２００に対応する正当なモジュール＃２１であることを検証する（Ｓ１３０６）。
【０１１５】
第1のセキュアブート制御部１１２は、このモジュール＃２１の検証の結果、エラーが検出された場合には、セキュアブートを中止し、検証の結果が成功であった場合に、第２の記憶部１２１からモジュール＃２１に対応する証明書＃２１を読み出す（Ｓ１３０７）。
【０１１６】
第1のセキュアブート制御部１１２は、読み出した証明書＃２１のハッシュ演算を行い、その結果と連携証明書拡張データの証明書ダイジェスト１２０１とを照合し、さらに、連携証明書拡張データのハッシュ演算を行い、その結果と連携証明書１２００の拡張データダイジェスト１１０７と照合することで連携証明書拡張データが改竄されていないことを検証する（Ｓ１３０８）。
【０１１７】
第1のセキュアブート制御部１１２は、この連携証明書拡張データの検証の結果、エラーが検出された場合には、セキュアブートを中止し、検証の結果が成功であった場合に、第２のセキュリティモジュールに読み出した証明書＃２１の検証を要求する検証要求を送信する（Ｓ１３０９）。
【０１１８】
検証要求を受信した第２のセキュリティモジュール１２３は、証明書検証部が受信した証明書を検証する（Ｓ１３１０）。
この証明書の検証では、まず、第２のセキュリティモジュールが保持する証明書＃２１の検証鍵ＩＤ１１０６が示す鍵を用いて電子署名１１０８が検証される。
【０１１９】
さらに、証明書＃２１の参照カウンタ値１１０２が、カウンタ部２２４が保持するカウンタ値以上であることを判定し、証明書＃２１がリボークされた古い証明書ではないことが検証される。
【０１２０】
次に、照合部２２３が、構成情報保持部２２７が保持する累積ハッシュ値と証明書＃２１の中の構成照合値１１０３とを照合し、モジュール＃２１を実行する前の状態として第２の情報処理部側が正しい状態（第２のモジュール群のモジュールが起動されていない状態）であることを検証する。
【０１２１】
照合部２２３による検証結果を受信した証明書検証部は、この検証結果を第1のセキュアブート制御部１１２に送信する（Ｓ１３１１）。
検証結果を受信した第1のセキュアブート制御部１１２は、何れかの検証処理でエラーが検出された場合にはセキュアブートを中止し、すべての検証処理の結果が成功であった場合に、モジュール＃２１を起動し、ＣＰＵ１０１がモジュール＃２１のコードイメージを実行する（Ｓ１３１２）。
【０１２２】
この後、第２のセキュアブート制御部１２２により第２のモジュール群のセキュアブートが開始される。
以上のように、連携証明書を用いて、セキュアブートを行うことで、２つのセキュアブートを一連のセキュアブートとして実行することが出来る。
【０１２３】
次に、図１４、１５を用いて、連携証明書１２００の更新処理の動作について説明する。
連携証明書１２００の更新処理は、第２のモジュール群において最初に起動されるべきモジュール＃２１の証明書＃２１が更新された場合、または、連携証明書１２００の依存リスト５０７に示されているモジュール＃１１、＃１２、＃１３の何れかが更新された場合に開始される。
【０１２４】
証明書＃２１が更新された場合には、ダウンロード更新部１２４から連携証明書更新部１３５に証明書＃２１が更新されたことが通知され、モジュール＃１１、＃１２、＃１３の何れかが更新された場合には、ダウンロード更新部１１４から連携証明書更新部１３５に更新されたことが通知される。
【０１２５】
まず、更新の通知を受信した連携証明書更新部１３５は、連携証明書記憶部１３１から連携証明書１２００と連携証明書拡張データを読み出し（Ｓ１４０１）、第1のセキュリティモジュールに読み出した連携証明書１２００の検証を要求する検証要求を送信する（Ｓ１４０２）。
【０１２６】
検証要求を受信した第１のセキュリティモジュール１１３は、証明書検証部が受信した連携証明書を検証する（Ｓ１４０３）。
この連携証明書の検証では、まず、連携証明書１２００の電子署名１１０８が検証され、さらに、連携証明書１２００の参照カウンタ値１１０２が、カウンタ部２１４が保持するカウンタ値以上であることを判定し、連携証明書１２００がリボークされた古い連携証明書ではないことが検証される。
【０１２７】
証明書検証部は、この検証結果を第1のセキュアブート制御部１１２に送信する（Ｓ１４０４）。
検証結果を受信した連携証明書更新部１３５は、検証処理でエラーが検出された場合には、エラーが検出された連携証明書をもとに連携証明書の更新処理を行うことは出来ないので更新処理を中止し、検証処理の結果が成功であった場合に、第２の記憶部１２１からモジュール＃２１に対応する証明書＃２１を読み出す（Ｓ１４０５）。
【０１２８】
連携証明書更新部１３５は、連携証明書拡張データのハッシュ演算を行い、その結果と連携証明書１２００の拡張データダイジェスト１１０７と照合することで連携証明書拡張データが改竄されていないことを検証する（Ｓ１４０６）。
【０１２９】
連携証明書更新部１３５は、この連携証明書拡張データの検証の結果、エラーが検出された場合には、セキュアブートを中止し、検証の結果が成功であった場合に、第２のセキュリティモジュールに読み出した証明書＃２１の検証を要求する検証要求を送信する（Ｓ１４０７）。
【０１３０】
検証要求を受信した第２のセキュリティモジュール１２３は、証明書検証部が受信した証明書＃２１を検証する（Ｓ１４０８）。
この証明書＃２１の検証では、まず、証明書＃２１の電子署名１１０８が検証され、さらに、証明書＃２１の参照カウンタ値１１０２が、カウンタ部２２４が保持するカウンタ値以上であることを判定し、証明書＃２１がリボークされた古い証明書ではないことが検証される。
【０１３１】
証明書検証部は、この検証結果を連携証明書更新部１３５に送信する（Ｓ１４０９）。
検証結果を受信した連携証明書更新部１３５は、検証処理でエラーが検出された場合には更新処理を中止し、検証処理の結果が成功であった場合に、第１の記憶部１１１から連携証明書拡張データの依存リストが示す全ての証明書を読み出し（Ｓ１４１０）、第１のセキュリティモジュールに読み出した証明書の検証を要求する検証要求を送信する（Ｓ１４１１）。
【０１３２】
検証要求を受信した第１のセキュリティモジュール１１３は、証明書検証部が受信した証明書を検証する（Ｓ１４１２）。
この証明書の検証では、まず、証明書の電子署名１１０８が検証され、さらに、証明書の参照カウンタ値１１０２が、カウンタ部２１４が保持するカウンタ値以上であることを判定し、証明書がリボークされた古い証明書ではないことが検証される。
【０１３３】
証明書検証部は、この検証結果を連携証明書更新部１３５に送信する（Ｓ１４１３）。
検証結果を受信した連携証明書更新部１３５は、検証処理でエラーが検出された場合には更新処理を中止し、検証処理の結果が成功であった場合に、連携証明書拡張データの依存リストをもとに新しい連携証明書の構成照合値１１０３を算出する（Ｓ１４１４）。具体的には、連携証明書拡張データの依存リストが示す各証明書のモジュール計測値を、依存リストが示す順番で、各証明書のレジスタインデックスが示すレジスタに対して累積ハッシュ演算を仮想的に実行した場合の累積ハッシュ値を算出する。
【０１３４】
次に、連携証明書更新部１３５は、証明書＃２１のハッシュ演算を行い、連携証明書拡張データの証明書ダイジェストを更新し、さらに、連携証明書拡張データのハッシュ演算を行い連携証明書の拡張データダイジェスト１１０７を算出する（Ｓ１４１５）。
【０１３５】
さらに、連携証明書更新部１３５は、証明書＃２１のモジュール計測値１１０５を新しい連携証明書のモジュール計測値５０５に設定し（Ｓ１４１６）、第１のセキュリティモジュール１１３に電子署名の生成を要求する署名要求を送信する（Ｓ１４１７）。
【０１３６】
署名要求を受信した第１のセキュリティモジュール１１３は、電子署名を生成し（Ｓ１４１８）、生成した電子署名を連携証明書更新部１３５に送信する（Ｓ１４１９）。
連携証明書更新部１３５は、受信した電子署名を新しい連携証明書の電子署名１１０８に設定し、連携証明書記憶部１３１に保持されている連携証明書と連携証明書拡張データをそれぞれ新しい連携証明書と連携証明書拡張データに更新して、更新処理を完了する（Ｓ１４２０）。
【０１３７】
この後、端末１００は、新しい連携証明書を用いて、第１のモジュール群と第２のモジュール群の２つのセキュアブートを一連のセキュアブートとして実行することが出来る。
以上のように、連携証明書の依存リストに基づき、証明書を参照して構成照合値を算出することで、新しい連携証明書を端末１００の内部で生成することができる。
【０１３８】
これにより、第１のモジュール群のソフトウェアモジュールを提供する第1の提供者、及び、第２のモジュール群のソフトウェアモジュールを提供する第２の提供者は、提供するソフトウェアモジュールを新しいソフトウェアモジュールに更新する際に、更新情報を事前に通知する必要がなく、提供者間の独立性を維持した上で個別に新しいソフトウェアモジュールを提供することが出来る。
【０１３９】
本発明の第２の実施形態の場合、セキュリティモジュールにおける証明書の検証処理と連携証明書の検証処理を共通化できるため、メモリ等のセキュリティモジュールにおいて必要となるリソースを削減できるため、セキュリティモジュールを低コストで提供できるというメリットがある。
【０１４０】
なお、上記で説明した連携証明書の更新において連携証明書更新部１３５が行っている処理の一部を、第１のセキュリティモジュールが行うようにしても良い。具体的には、構成照合値の算出（Ｓ１４１３）、証明書＃２１の構成照合値を第２の構成照合値に設定（Ｓ１４１４）、拡張データダイジェストの算出（Ｓ１４１５）、証明書＃２１のモジュール計測値をモジュール計測値に設定（Ｓ１４１６）の何れかまたはすべての処理を第１のセキュリティモジュールが行う。
【０１４１】
この場合、これらの処理を、耐タンパ化された第１のセキュリティモジュールが行うことで、連携証明書に不正な照合値が設定されるといった改竄行為を防止することができ、安全性が向上する。
【０１４２】
なお、連携証明書を格納する連携証明書記憶部１３１を、第１の記憶部１１１の中に設け、連携証明書更新部１３５を第１の情報処理部１１０の中に設けるようにしてもよい。
この場合、連携証明書を格納するために必要な記憶領域を第１の記憶部の中に確保することで、連携証明書を格納する記憶領域を確保するための分の新たなコストアップを回避できる。
【０１４３】
また、連携証明書を格納する連携証明書記憶部１３１を、第２の記憶部１２１の中に設け、連携証明書更新部１３５を第２の情報処理部１２０の中に設けるようにしてもよい。
この場合、連携証明書を格納するために必要な記憶領域を第２の記憶部の中に確保することで、連携証明書を格納する記憶領域を確保するための分の新たなコストアップを回避できる。また、この場合には、連携証明書の電子証明５０８は、第２のセキュリティモジュールが生成する。
【０１４４】
なおまた、連携処理部１３０に第３のセキュアブート制御部、第３のセキュリティモジュールを設けて、上記において、図６を用いて説明したセキュアブートを第１のセキュアブート制御部の代わりに第３のセキュアブート制御部を用いて行うようにしてよい。
【０１４５】
（実施の形態３）
本発明の実施の形態３では、上述してきた実施の形態１をＴｒｕｓｔｅｄ  Ｃｏｍｐｕｔｉｎｇ  Ｇｒｏｕｐ（ＴＣＧ）で規定している仕様に基づいて実現してもよい。
【０１４６】
この場合、セキュリティモジュールは、ＴＣＧで規定しているＴＰＭモジュールまたはＭＴＭモジュールであり（以降のＴＰＭとは、ＴＰＭあるいはＭＴＭを意味するものとする）、構成情報保持部は、ＴＰＭが備えるＰＣＲであり、カウンタ部は、ＴＰＭが備えるＭｏｎｏｔｏｎｉｃ  Ｃｏｕｎｔｅｒであり、累積部、証明書検証部、照合部は、ＴＰＭコマンド処理を含んだＴＣＧ機能を実現する部であり、証明書＃１１、＃１２、＃１３、証明書＃２１、＃２２、＃２３は、Ｅｘｔｅｒｎａｌ  ＲＩＭ＿Ｃｅｒｔ、もしくはＩｎｔｅｒｎａｌ  ＲＩＭ＿Ｃｅｒｔである。これによって、ＴＣＧ仕様に基づいて安全にソフトウェアの更新が可能となる。
（その他変形例）
なお、本発明を上記実施の形態に基づいて説明してきたが、本発明は、上記の実施の形態に限定されないのはもちろんである。以下のような場合も本発明に含まれる。
【０１４７】
（１）上記の各装置は、具体的には、マイクロプロセッサ、ＲＯＭ、ＲＡＭ、ハードディスクユニット、ディスプレイユニット、キーボード、マウスなどから構成されるコンピュータシステムである。前記ＲＡＭまたはハードディスクユニットには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムにしたがって動作することにより、各装置は、その機能を達成する。ここでコンピュータプログラムは、所定の機能を達成するために、コンピュータに対する指令を示す命令コードが複数個組み合わされて構成されたものである。なお、各装置は、マイクロプロセッサ、ＲＯＭ、ＲＡＭ、ハードディスクユニット、ディスプレイユニット、キーボード、マウスなどの全てを含むコンピュータシステムには限らず、これらの一部から構成されているコンピュータシステムであってもよい。
【０１４８】
（２）上記の各装置を構成する構成要素の一部または全部は、１個のシステムＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ：大規模集積回路）から構成されているとしてもよい。システムＬＳＩは、複数の構成部を１個のチップ上に集積して製造された超多機能ＬＳＩであり、具体的には、マイクロプロセッサ、ＲＯＭ、ＲＡＭなどを含んで構成されるコンピュータシステムである。前記ＲＡＭには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムにしたがって動作することにより、システムＬＳＩは、その機能を達成する。
【０１４９】
また、上記の各装置を構成する構成要素の各部は、個別に１チップ化されていても良いし、一部又は全てを含むように１チップ化されてもよい。
また、ここでは、システムＬＳＩとしたが、集積度の違いにより、ＩＣ、ＬＳＩ、スーパーＬＳＩ、ウルトラＬＳＩと呼称されることもある。また、集積回路化の手法はＬＳＩに限るものではなく、専用回路又は汎用プロセッサで実現してもよい。ＬＳＩ製造後に、プログラムすることが可能なＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）や、ＬＳＩ内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサーを利用しても良い。
【０１５０】
さらには、半導体技術の進歩又は派生する別技術によりＬＳＩに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。バイオ技術の適用等が可能性としてありえる。
【０１５１】
（３）上記の各装置を構成する構成要素の一部または全部は、各装置に脱着可能なＩＣカードまたは単体のモジュールから構成されているとしてもよい。前記ＩＣカードまたは前記モジュールは、マイクロプロセッサ、ＲＯＭ、ＲＡＭなどから構成されるコンピュータシステムである。前記ＩＣカードまたは前記モジュールは、上記の超多機能ＬＳＩを含むとしてもよい。マイクロプロセッサが、コンピュータプログラムにしたがって動作することにより、前記ＩＣカードまたは前記モジュールは、その機能を達成する。このＩＣカードまたはこのモジュールは、耐タンパ性を有するとしてもよい。
【０１５２】
（４）本発明は、上記に示す方法であるとしてもよい。また、これらの方法をコンピュータにより実現するコンピュータプログラムであるとしてもよいし、前記コンピュータプログラムからなるデジタル信号であるとしてもよい。
【０１５３】
また、本発明は、前記コンピュータプログラムまたは前記デジタル信号をコンピュータ読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、ＢＤ（Ｂｌｕ−ｒａｙ  Ｄｉｓｃ）、半導体メモリなどに記録したものとしてもよい。また、これらの記録媒体に記録されている前記デジタル信号であるとしてもよい。
【０１５４】
また、本発明は、前記コンピュータプログラムまたは前記デジタル信号を、電気通信回線、無線または有線通信回線、インターネットを代表とするネットワーク、データ放送等を経由して伝送するものとしてもよい。
【０１５５】
また、本発明は、マイクロプロセッサとメモリを備えたコンピュータシステムであって、前記メモリは、上記コンピュータプログラムを記憶しており、前記マイクロプロセッサは、前記コンピュータプログラムにしたがって動作するとしてもよい。
【０１５６】
また、前記プログラムまたは前記デジタル信号を前記記録媒体に記録して移送することにより、または前記プログラムまたは前記デジタル信号を前記ネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしてもよい。
【０１５７】
（５）セキュリティモジュールは、耐タンパソフトウェアまたはソフトウェア及びハードウェアにより実施されるとしてもよい。
（６）ＣＰＵは特別な動作モード（セキュアモードなど）を備え、ＣＰＵによって実行されるソフトウェアはその特別な動作モード（セキュアモードなど）で動作することで安全に実行されるとしてもよい。
【０１５８】
（７）上記実施の形態及び上記変形例をそれぞれ組み合わせるとしてもよい。
【産業上の利用可能性】
【０１５９】
本発明は、パーソナルコンピュータや携帯電話、オーディオプレーヤ、テレビ受像機、ビデオレコーダなど、プログラムデータの更新を行う情報通信機器や家電機器に広く利用することができる。
【０１６０】
本発明の端末と同様の構成にすることによって、端末のソフトウェアが、複数の提供者が提供するモジュール群から構成される場合において、モジュール及び証明書を、提供者間の依存関係がない形態で各提供者から個別に提供することが可能となり、提供者間の独立性を維持した上で、モジュール群間を跨るセキュアブートを継続的に行うことが可能となる。
【符号の説明】
【０１６１】
１００    端末
１０１    ＣＰＵ
１１０    第1の情報処理部
１１１    第1の記憶部
１１２    第1のセキュアブート制御部
１１３    第1のセキュリティモジュール
１１４    第１のダウンロード更新部
１２０    第２の情報処理部
１２１    第２の記憶部
１２２    第２のセキュアブート制御部
１２３    第２のセキュリティモジュール
１２４    第２のダウンロード更新部
１３０    連携処理部
１３１    連携証明書記憶部
１３５    連携証明書更新部
【手続補正２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
第１ステークホルダーに対応する第１の複数のモジュールと、前記第１の複数のモジュールの各モジュールについて、前記各モジュールのハッシュ値から生成される第１照合値及び前記第１の複数のモジュールに含まれるモジュールのハッシュ値を累積した場合の累積値から生成される第１累積照合値を含む証明書とを格納する第１記憶部と、
第２ステークホルダーに対応し前記第１の複数のモジュールと依存関係にある第２の複数のモジュールと、前記第２の複数のモジュールの各モジュールについて、前記各モジュールのハッシュ値から生成される第２照合値及び前記第２の複数のモジュールに含まれるモジュールのハッシュ値を累積した場合の累積値から生成される第２累積照合値を含む証明書とを格納する第２記憶部と、
前記第１の複数のモジュールの各モジュールの実際のハッシュ値と前記第１照合値とを比較して、前記第１の複数のモジュールの正当性を検証し、前記検証された第１の複数のモジュールを起動する第１制御部と、
前記第１の複数のモジュールの正当性が検証された場合、前記第２の複数のモジュールの各モジュールの実際のハッシュ値と前記第２照合値とを比較して、前記第２の複数のモジュールの正当性を検証し、前記検証された第２の複数のモジュールを起動する第２制御部と、
前記第２の複数のモジュールの先頭モジュールの正当性を検証する第３照合値及び前記第１の複数のモジュールに含まれるモジュールのハッシュ値を累積した場合の累積値から生成される第３累積照合値を含む連携証明書の保持部と、を具備し、
前記第１制御部は、前記第１の複数のモジュールを更新した場合、更新後の第１の複数のモジュールの証明書について前記証明書の署名を検証すると、前記検証された証明書の中の第１照合値を用いて前記連携証明書に含まれる第３累積照合値を更新し、
前記第１制御部は、前記第１の複数のモジュールを起動した後、
前記連携証明書に含まれる第３累積照合値を用いて正当な第１の複数のモジュールが起動していることを検証し、かつ、前記第２の複数のモジュールの先頭モジュールの正当性を、前記連携証明書に含まれる第３照合値を用いて検証した場合に、前記第２の複数のモジュールの先頭モジュールを起動し、
前記第２制御部は、前記第２の複数のモジュールの正当性を検証して、前記第２の複数のモジュールを起動させることを特徴とする情報処理装置。
【請求項２】
前記第２制御部によって管理され起動済みの前記第２の複数のモジュールに含まれるモジュールのハッシュ値を累積した場合の累積値を格納する第３記憶部を有し、
前記連携証明書は、さらに、前記第２の複数のモジュールが起動されていないことを示す第４累積照合値を含み、
前記第１制御部は、さらに、
第２の複数のモジュールの先頭モジュールの正当性を検証すると、
前記第２制御部から前記第３記憶部に格納された第２の複数のモジュールの検証値を取得し、この取得した検証値と前記連携証明書に含まれる第４累積値とを比較して前記第２の複数のモジュールを起動する前に前記第２制御部が起動したモジュールがないことを検証した場合、前記第２の複数のモジュールの先頭モジュールを起動し、
前記第２制御部は、前記第２の複数のモジュールの正当性を検証して、前記第２の複数のモジュールを起動することを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記保持部は、前記第１記憶部に含まれることを特徴とする請求項１記載の情報処理装置。
【請求項４】
前記第１制御部は、前記第２の複数のモジュールの先頭モジュールが更新された場合、前記連携証明書に含まれる第３照合値を更新することを特徴とする請求項３記載の情報処理装置。
【請求項５】
前記第２制御部は、前記第２の複数のモジュールの先頭モジュールを更新した場合、前記第１制御部にその旨を通知し、
第１制御部は、前記通知を受信すると、前記連携証明書の前記第３照合値を前記更新された第２の複数のモジュールの先頭モジュールの第２照合値に更新することを特徴とする請求項１記載の情報処理装置。
【請求項６】
第１ステークホルダーに対応する第１の複数のモジュールと、前記第１の複数のモジュールの各モジュールについて、前記各モジュールのハッシュ値から生成される第１照合値及び前記第１の複数のモジュールに含まれるモジュールのハッシュ値を累積した場合の累積値から生成される第１累積照合値を含む証明書とを格納し、
第２ステークホルダーに対応し前記第１の複数のモジュールと依存関係にある第２の複数のモジュールと、前記第２の複数のモジュールの各モジュールについて、前記各モジュールのハッシュ値から生成される第２照合値及び前記第２の複数のモジュールに含まれるモジュールのハッシュ値を累積した場合の累積値から生成される第２累積照合値を含む証明書とを格納し、
前記第１の複数のモジュールの各モジュールの実際のハッシュ値と前記第１照合値とを比較して、前記第１の複数のモジュールの正当性を検証し、前記検証された第１の複数のモジュールを起動し、
前記第１の複数のモジュールの正当性が検証された場合、前記第２の複数のモジュールの各モジュールの実際のハッシュ値と前記第２照合値とを比較して、前記第２の複数のモジュールの正当性を検証し、前記検証された第２の複数のモジュールを起動する情報処理方法であって、
前記第２の複数のモジュールの先頭モジュールの正当性を検証する第３照合値及び前記第１の複数のモジュールに含まれるモジュールのハッシュ値を累積した場合の累積値から生成される第３累積照合値を含む連携証明書の保持し、
前記第１の複数のモジュールを更新した場合、更新後の第１の複数のモジュールの証明書について前記証明書の署名を検証すると、前記検証された証明書の中の第１照合値を用いて前記連携証明書に含まれる第３累積照合値を更新し、
前記第１の複数のモジュールを起動した後、
前記連携証明書に含まれる第３累積照合値を用いて正当な第１の複数のモジュールが起動していることを検証し、かつ、前記第２の複数のモジュールの先頭モジュールの正当性を、前記連携証明書に含まれる第３照合値を用いて検証した場合に、前記第２の複数のモジュールの正当性を検証して、前記第２の複数のモジュールを起動することを特徴とする情報処理方法。
【請求項７】
コンピュータに対し、
第１ステークホルダーに対応する第１の複数のモジュールと、前記第１の複数のモジュールの各モジュールについて、前記各モジュールのハッシュ値から生成される第１照合値及び前記第１の複数のモジュールに含まれるモジュールのハッシュ値を累積した場合の累積値から生成される第１累積照合値を含む証明書とを第１記憶部に格納する第１処理と、
第２ステークホルダーに対応し前記第１の複数のモジュールと依存関係にある第２の複数のモジュールと、前記第２の複数のモジュールの各モジュールについて、前記各モジュールのハッシュ値から生成される第２照合値及び前記第２の複数のモジュールに含まれるモジュールのハッシュ値を累積した場合の累積値から生成される第２累積照合値を含む証明書とを第２記憶部に格納する第２処理と、
前記第１の複数のモジュールの各モジュールの実際のハッシュ値と前記第１照合値とを比較して、前記第１の複数のモジュールの正当性を検証し、前記検証された第１の複数のモジュールを起動する第３処理と、
前記第１の複数のモジュールの正当性が検証された場合、前記第２の複数のモジュールの各モジュールの実際のハッシュ値と前記第２照合値とを比較して、前記第２の複数のモジュールの正当性を検証し、前記検証された第２の複数のモジュールを起動する第４処理と、を実行させるコンピュータプログラムであって、
前記第２の複数のモジュールの先頭モジュールの正当性を検証する第３照合値及び前記第１の複数のモジュールに含まれるモジュールのハッシュ値を累積した場合の累積値から生成される第３累積照合値を含む連携証明書を保持部に格納する第５処理を実行させ、
前記第３処理は、前記第１の複数のモジュールを更新した場合、更新後の第１の複数のモジュールの証明書について前記証明書の署名を検証すると、前記検証された証明書の中の第１照合値を用いて前記連携証明書に含まれる第３累積照合値を更新し、
前記第３処理は、前記第１の複数のモジュールを起動した後、
前記連携証明書に含まれる第３累積照合値を用いて正当な第１の複数のモジュールが起動していることを検証し、かつ、前記第２の複数のモジュールの先頭モジュールの正当性を、前記連携証明書に含まれる第３照合値を用いて検証した場合に、前記第４処理を起動して前記第２の複数のモジュールの正当性を検証して、前記第２の複数のモジュールを起動することを特徴とするコンピュータプログラム。
【請求項８】
第１ステークホルダーに対応する第１の複数のモジュールと、前記第１の複数のモジュールの各モジュールについて、前記各モジュールのハッシュ値から生成される第１照合値及び前記第１の複数のモジュールに含まれるモジュールのハッシュ値を累積した場合の累積値から生成される第１累積照合値を含む証明書とを格納する第１記憶部と、
第２ステークホルダーに対応し前記第１の複数のモジュールと依存関係にある第２の複数のモジュールと、前記第２の複数のモジュールの各モジュールについて、前記各モジュールのハッシュ値から生成される第２照合値及び前記第２の複数のモジュールに含まれるモジュールのハッシュ値を累積した場合の累積値から生成される第２累積照合値を含む証明書とを格納する第２記憶部と、
前記第１の複数のモジュールの各モジュールの実際のハッシュ値と前記第１照合値とを比較して、前記第１の複数のモジュールの正当性を検証し、前記検証された第１の複数のモジュールを起動する第１制御部と、
前記第１の複数のモジュールの正当性が検証された場合、前記第２の複数のモジュールの各モジュールの実際のハッシュ値と前記第２照合値とを比較して、前記第２の複数のモジュールの正当性を検証し、前記検証された第２の複数のモジュールを起動する第２制御部と、
前記第２の複数のモジュールの先頭モジュールの正当性を検証する第３照合値及び前記第１の複数のモジュールに含まれるモジュールのハッシュ値を累積した場合の累積値から生成される第３累積照合値を含む連携証明書の保持部と、を具備した集積回路であって、
前記第１制御部は、前記第１の複数のモジュールを更新した場合、更新後の第１の複数のモジュールの証明書について前記証明書の署名を検証すると、前記検証された証明書の中の第１照合値を用いて前記連携証明書に含まれる第３累積照合値を更新し、
前記第１制御部は、前記第１の複数のモジュールを起動した後、
前記連携証明書に含まれる第３累積照合値を用いて正当な第１の複数のモジュールが起動していることを検証し、かつ、前記第２の複数のモジュールの先頭モジュールの正当性を、前記連携証明書に含まれる第３照合値を用いて検証した場合に、前記第２の複数のモジュールの先頭モジュールを起動し、
前記第２制御部は、前記第２の複数のモジュールの正当性を検証して、前記第２の複数のモジュールを起動させることを特徴とする集積回路。
【手続補正３】
【補正対象書類名】図面
【補正対象項目名】全図
【補正方法】変更
【補正の内容】
【図１】
2009157133.tif 000019
【図２】
2009157133.tif 000020
【図３】
2009157133.tif 000021
【図４】
2009157133.tif 000022
【図５】
2009157133.tif 000023
【図６】
2009157133.tif 000024
【図７】
2009157133.tif 000025
【図８】
2009157133.tif 000026
【図９】
2009157133.tif 000027
【図１０】
2009157133.tif 000028
【図１１】
2009157133.tif 000029
【図１２】
2009157133.tif 000030
【図１３】
2009157133.tif 000031
【図１４】
2009157133.tif 000032
【図１５】
2009157133.tif 000033
【図１６】
2009157133.tif 000034
【国際調査報告】
2009157133.tif 000035
2009157133.tif 000036
2009157133.tif 000037
2009157133.tif 000038