(57)【要約】【課題】２以上の半導体集積回路を搭載した半導体デバイスにおいて、各半導体集積回路に接続するそれぞれのプログラム格納デバイス（記憶デバイス）のうちの一部の記憶デバイスのみを高セキュリティにするだけで、これらの全ての記憶デバイスについて、記憶デバイスの入れ替え脅威を高いセキュリティレベルで排除することを可能にする。【解決手段】少なくとも１つの半導体集積回路（Ｍａｉｎ  ＳｏＣ１１で例示）は、他の半導体集積回路（Ｓｕｂ  ＳｏＣ１２で例示）の起動プログラムより信頼性が確保された起動プログラムで起動し、起動した起動プログラムにより上記他の半導体集積回路（Ｓｕｂ  ＳｏＣ１２で例示）の起動プログラムの認証を行う。【選択図】図２
2012252667.tif 000002
【特許請求の範囲】
【請求項１】
２以上の半導体集積回路を搭載した半導体デバイスであって、少なくとも１つの半導体集積回路は、他の半導体集積回路の起動プログラムより信頼性が確保された起動プログラムで起動し、該起動した起動プログラムにより前記他の半導体集積回路の起動プログラムの認証を行うことを特徴とする半導体デバイス。
【請求項２】
前記少なくとも１つの半導体集積回路は、前記他の半導体集積回路の起動プログラムの認証が不可であった場合、不可であった前記他の半導体集積回路の起動プログラムに、リセットの命令を行うことを特徴とする請求項１に記載の半導体デバイス。
【請求項３】
前記少なくとも１つの半導体集積回路は、前記他の半導体集積回路の起動プログラムの認証が不可であった場合、少なくとも不可であった前記他の半導体集積回路に電源を供給するための電源管理デバイスに、電源オフの命令を行うことを特徴とする請求項２に記載の半導体デバイス。
【請求項４】
前記少なくとも１つの半導体集積回路は、オンボードタイプのメモリにアクセスするためのインターフェースを有し、前記他の半導体集積回路は、前記メモリより低セキュリティで且つ非オンボードタイプの外部記憶装置にアクセスするためのインターフェースを有することを特徴とする請求項１〜３のいずれか１項に記載の半導体デバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体デバイスに関し、より詳細には、２以上の半導体集積回路を搭載した半導体デバイスに関する。
【背景技術】
【０００２】
近年のＬＳＩ（Large Scale Integration）のプロセス微細化により、ＬＳＩに搭載可能な回路規模はどんどん増加し、ＬＳＩが処理する機能や性能は加速度的に向上している。なお、回路規模によっては、その半導体集積回路をＶＬＳＩ（Very LSI）、ＵＬＳＩ（Ultra-LSI）などと呼ぶこともある。
【０００３】
機能向上の１つとして、プロセッサ機能をＬＳＩの中に取り込むと、ＬＳＩ内部のプロセッサがＬＳＩ全体を内部から制御することが可能となり、ＬＳＩ内部にあたかも一つのシステムを構築できる。このように、半導体集積回路であって、その内部にプロセッサを内蔵してシステムを構築するデバイスは、ＳｏＣ（System on a Chip）と呼ばれている。
【０００４】
ＳｏＣと呼ばれる半導体集積回路には、様々なデバイスがある。非常に高性能なプロセッサを搭載し、ＳｏＣの外部に接続される全てのデバイスを統合的に管理できるものや、複数のプロセッサを内蔵し、さらに処理能力や演算能力を高めたもの、また、外部デバイスの制御は他のプロセッサに任せて、自身はＳｏＣ内部の制御のみを行うものなど様々である。
【０００５】
ところで、ＳｏＣにおいて、ＣＰＵ（Central Processing Unit）等のプロセッサを安全に立ち上げることは非常に重要であり、特にセキュリティを重視した製品では確実に信頼できるプログラムデータからプロセッサ（以下、ＣＰＵで例示）を起動する必要がある。プログラムが悪意ある者によって差し替えられた状態で起動を許してしまうと、ＳｏＣ内外の記憶装置に暗号化して保存したデータが読み出される危険性や、暗号化データの復号化ができなかったとして消去されてしまう恐れもある。また、ユーザがプログラムを差し替えられたことに気付かずに利用すると、差し替えられた後に生成したデータは、悪意ある者によって搾取されてしまう。
【０００６】
このような危険性を排除するために、ＣＰＵを安全且つ確実に立ち上げることは重要である。実現方法として、例えばプログラムデータを暗号化した上で記憶デバイスに保存しておき、起動時に復号化してからＲＡＭ（Random Access Memory）上に展開して起動する方法や、ＴＰＭ（Trusted Platform Module）などのＳｏＣとは別に外部にセキュリティデバイスを利用する方法などがある。
【０００７】
さらに、ＨＤＤ（Hard Disk Drive）やＳＤカード、ＵＳＢ（Universal Serial Bus）メモリなど一般的に広く利用され汎用性の高い記憶デバイスにプログラムデータを保存するのではなく、基板にオンボードで直接実装するタイプの記憶デバイスに保存することもセキュリティ性を高める方法の一つである。独自のＩ／Ｆ（Interface）プロトコルで動作するデバイスの採用や、Ｆｌａｓｈ  ＤＩＭＭ（Dual Inline Memory Module）など一般的にはユーザが入手しにくいデバイスを採用する方法もある。オンボードタイプデバイスやユーザが入手しにくいデバイスなどの場合、第三者によってデバイスの入れ替えを行うのは難しいばかりではなく、基板に実装したまま外部から書き換えることは非常に専門的な知識が必要となるため、セキュリティ性が高くなる。
【０００８】
複合機（ＭＦＰ）を例に挙げ具体的に説明すると、次のようになる。一般的なモデル（製品）とセキュリティを重視したモデルの２種類ある場合、セキュリティを重視したモデルではデータの暗号化や、動作時に一次的に保存したメモリデータ、ＨＤＤデータの消去などといったセキュリティ機能が付加される。ここで脅威となる一例は、一般的なモデルのプログラムデータ格納デバイスをセキュリティを重視したモデルのデバイスと置き換えることが挙げられる。置き換え後にＣＰＵの起動が可能であると、それまでに蓄積されたデータの消去がなされず、また今後利用する際に生成されるデータは暗号化されていないため、非常に危険な状態となってしまう。従って、ＣＰＵを安全に起動することは、セキュリティ上、非常に重要な要素となる。
【０００９】
一方、近年、ＭＦＰに限らず様々なシステムは、大規模化・複雑化に伴って複数のＣＰＵによってシステム全体を制御することが多くなってきた。例えば、特許文献１には、上述したようなＳｏＣで代表される半導体集積回路を、同じ回路基板などに２以上搭載した半導体デバイスが開示されている。この半導体デバイスも複数のＣＰＵをもつことになる。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２００１−１３２１５号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
そして、このように複数のＣＰＵを搭載する半導体デバイスの場合、全てのＣＰＵに対して安全に起動することが求められる。プログラム格納デバイスの入れ替え脅威を排除するためには、全ての記憶デバイスを交換リスクがなく安全性の高いデバイスにする必要が生じる。従って、図６で示す半導体デバイスのように、Ｍａｉｎ ＳｏＣ１１とＳｕｂ ＳｏＣ１２に対してプログラム格納デバイスとしてそれぞれ接続する外部記憶装置５０ａ，５０ｂは、いずれも高セキュリティの装置を採用する必要が生じる。
【００１２】
しかしながら、一般的にＨＤＤなど先に挙げた汎用性の高い記憶デバイスに比べ、セキュリティ性の高い記憶デバイスは技術的に高度であったり、販売数量が少ないなどといった理由によりコストが高くなる傾向にある。
【００１３】
本発明は、上述のような実状に鑑みてなされたものであり、その目的は、２以上の半導体集積回路を搭載した半導体デバイスにおいて、各半導体集積回路に接続するそれぞれのプログラム格納デバイス（記憶デバイス）のうちの一部の記憶デバイスのみを高セキュリティにするだけで、これらの全ての記憶デバイスについて、記憶デバイスの入れ替え脅威を高いセキュリティレベルで排除することを可能にすることにある。
【課題を解決するための手段】
【００１４】
上記課題を解決するために、本発明の第１の技術手段は、２以上の半導体集積回路を搭載した半導体デバイスであって、少なくとも１つの半導体集積回路は、他の半導体集積回路の起動プログラムより信頼性が確保された起動プログラムで起動し、該起動した起動プログラムにより前記他の半導体集積回路の起動プログラムの認証を行うことを特徴としたものである。
【００１５】
第２の技術手段は、第１の技術手段において、前記少なくとも１つの半導体集積回路は、前記他の半導体集積回路の起動プログラムの認証が不可であった場合、不可であった前記他の半導体集積回路の起動プログラムに、リセットの命令を行うことを特徴としたものである。
【００１６】
第３の技術手段は、第２の技術手段において、前記少なくとも１つの半導体集積回路は、前記他の半導体集積回路の起動プログラムの認証が不可であった場合、少なくとも不可であった前記他の半導体集積回路に電源を供給するための電源管理デバイスに、電源オフの命令を行うことを特徴としたものである。
【００１７】
第４の技術手段は、第１〜第３のいずれか１の技術手段において、前記少なくとも１つの半導体集積回路は、オンボードタイプのメモリにアクセスするためのインターフェースを有し、前記他の半導体集積回路は、前記メモリより低セキュリティで且つ非オンボードタイプの外部記憶装置にアクセスするためのインターフェースを有することを特徴としたものである。
【発明の効果】
【００１８】
本発明に係る半導体デバイスによれば、各半導体集積回路に接続するそれぞれのプログラム格納デバイス（記憶デバイス）のうちの一部の記憶デバイスのみを高セキュリティにするだけで、これらの全ての記憶デバイスについて、記憶デバイスの入れ替え脅威を高いセキュリティレベルで排除することを可能にする。
【図面の簡単な説明】
【００１９】
【図１】ＳｏＣ及びそれに接続されたデバイスでなるシステムの構成例を示す図である。
【図２】本発明に係る、複数のＳｏＣが接続されてなる半導体デバイスの一構成例を示す図である。
【図３】図２の半導体デバイスにおけるＭａｉｎ ＳｏＣの起動処理例を説明するためのフロー図である。
【図４】図２の半導体デバイスにおけるＳｕｂ ＳｏＣの起動処理例を説明するためのフロー図である。
【図５】本発明に係る、複数のＳｏＣが接続されてなる半導体デバイスの他の構成例を示す図である。
【図６】従来技術による、複数のＳｏＣが接続されてなる半導体デバイスの構成例を示す図である。
【発明を実施するための形態】
【００２０】
本発明に係る半導体デバイスは、２以上の半導体集積回路が搭載されており、複合半導体集積回路装置やハイブリッド集積回路などとも呼ぶこともある。これら半導体集積回路は一般的には基板上に搭載されている。個々の半導体集積回路は、プロセッサ（内部プロセッサ）をはじめ、メインメモリ用のメモリＩ／Ｆ、プロセッサを有する他の半導体集積回路用の外部Ｉ／Ｆ、及びレジスタを備えたＬＳＩ等の回路であり、以下、プロセッサを有することからＳｏＣとして説明する。
【００２１】
図１は、ＳｏＣ及びそれに接続されたデバイスでなるシステムの構成例を示す図で、図２は、本発明に係る、複数のＳｏＣが接続されてなる半導体デバイスの一構成例を示す図である。図２では、半導体デバイスに搭載されるＳｏＣの数が２つである場合を例示するが、２以上であれば適用できる。
【００２２】
図１で例示するＳｏＣ１はプロセッサ（以下、ＣＰＵ１０ｂで例示）を備えると共に、タイマ１０ａ、外部Ｉ／Ｆ１０ｃ、メモリコントロール１０ｄ、及び外部記憶装置Ｉ／Ｆ１０ｅを備え、これらがシステムバスに接続されている。そして、ＳｏＣ１には、メモリコントロール１０ｄにメインメモリとしてのメモリ２が、外部記憶装置Ｉ／Ｆ１０ｅに外部記憶装置３がそれぞれ接続できるようになっている。
【００２３】
ＣＰＵ１０ｂは、ＳｏＣ１の全体を制御するモジュールである。起動時、外部記憶装置３に保存しているプログラムデータを読み出し、内部のＲＡＭ上に展開することで動作を開始する。なお、このプロセッサとしては、ＣＰＵの他に、例えばＤＳＰ（Digital Signal Processor）、ＧＰＵ（Graphics Processor Unit）など、様々なプロセッサが適用できる。また、タイマ１０ａは、ＣＰＵ１０ｂから指示された時間を計測し、計測完了後、ＣＰＵ１０ｂに対してインターラプトを発行するモジュールである。
【００２４】
メモリコントロール（メモリコントローラ）１０ｄは、メインメモリであるメモリ２を接続するためのメモリＩ／Ｆの一例であって、ＳＤＲＡＭ（Synchronous Dynamic RAM）やＤＤＲ  ＳＤＲＡＭ（Double-Data-Rate SDRAM）など、基板上で接続されたメモリ２とのデータ送受信を行うモジュールである。メモリコントロール１０ｄは、ＣＰＵ１０ｂなどからのデータ送受信要求をバス経由で受け付け、指示に従ってメインメモリであるメモリ２に対してデータ送受信要求を行う。また、その結果を、指示元であるＣＰＵ１０ｂなどに対して戻す。
【００２５】
外部記憶装置Ｉ／Ｆ１０ｅは、外部記憶装置３内に保存されたデータの読み出し、書き込みを行うモジュールである。外部記憶装置Ｉ／Ｆ１０ｅは、ＣＰＵ１０ｂの指示に従って外部記憶装置３内のデータにアクセスし、主にメモリコントロール１０ｄとの間でデータ送受信を行う。
【００２６】
外部Ｉ／Ｆ１０ｃは、ＳｏＣ１に接続される外部デバイスとデータ転送やメッセージ転送を行うためのＩ／Ｆモジュールである。外部デバイスとは、例えば基板上で接続された他のＳｏＣやＡＳＩＣ（Application Specific Integrated Circuit）などである。また、このインターフェース規格としては、ＰＣＩ（Peripheral Component Interconnect）やＰＣＩ  Ｅｘｐｒｅｓｓなどがある。
【００２７】
このように、ＳｏＣ１では、外部Ｉ／Ｆ１０ｃにより他のＳｏＣを接続することが可能となっており、本発明に係る半導体デバイスは、上記外部デバイスとして他のＳｏＣが接続したようなシステム構成をもつ。ここで、ＳｏＣ１に外部Ｉ／Ｆ１０ｃを介して接続したＳｏＣは、ＳｏＣ１と同様に、ＣＰＵ等のプロセッサ、外部Ｉ／Ｆ、メモリコントロール、外部記憶装置Ｉ／Ｆなどを備える。
【００２８】
また、ＳｏＣ１内のプロセッサと他のＳｏＣ内のプロセッサの両方が、システムを制御するためのレジスタ群やメインメモリにアクセス可能となっている。つまり、半導体デバイスでは、双方のプロセッサがいずれのＳｏＣを制御することも可能になっている。
【００２９】
そして、本発明に係る半導体デバイスは、このようなＳｏＣ１及び他のＳｏＣといった２以上のＳｏＣを搭載し、その主たる特徴として次の特徴を有する。
すなわち、その少なくとも１つのＳｏＣの起動プログラムは、高セキュリティデバイスに保存されるなどによって、他のＳｏＣの起動プログラムより信頼性が確保されているものとする。つまり、その少なくとも１つのＳｏＣの起動プログラムが格納された外部記憶装置３は、他のＳｏＣの起動プログラムが格納された外部記憶装置３に比べて、高セキュリティとする。
【００３０】
そして、その少なくとも１つのＳｏＣは、その信頼性が確保された起動プログラムで起動すると共に、その起動した起動プログラムにより上記他のＳｏＣの起動プログラムの認証を行う。換言すれば、上記少なくとも１つのＳｏＣは、上記他のＳｏＣが単独で起動した場合よりも起動プログラムの信頼性を確保可能な方法で起動され、起動後（なお、起動開始後であれば起動途中であってもよい）にＳｏＣ間の通信をすることによって、上記他のＳｏＣの起動プログラムを認証する。これにより、起動プログラムの信頼性を確保するＳｏＣは１つのみで済むため、システムのセキュリティ性を維持しつつ、低コスト化が実現可能となる。
【００３１】
以下、図２を併せて参照しながら、上記少なくとも１つのＳｏＣがＭａｉｎ ＳｏＣ１１で例示し、上記他のＳｏＣがＳｕｂ ＳｏＣ１２で例示して、本発明に係る半導体デバイスについて説明するが、これに限ったものではない。この例では、図１のＳｏＣ１、それに外部Ｉ／Ｆ１０ｃを介して接続したＳｏＣが、それぞれ図２のＭａｉｎ ＳｏＣ１１、Ｓｕｂ ＳｏＣ１２であることを前提にしている。しかし、上述したようにＭａｉｎ ＳｏＣ１１とＳｕｂ ＳｏＣ１２とは同様であり、特に基本的なハードウェア構成は同様であり、主に起動プログラムが相違している。但し、上記少なくとも１つのＳｏＣの例であるＭａｉｎ ＳｏＣは高セキュリティであることを前提とするため、ハードウェア構成にて、Ｓｕｂ ＳｏＣ１２に比べＭａｉｎ ＳｏＣ１１の方に耐タンパー性をもたせるように構成してもよい。以下、区別のために、Ｍａｉｎ ＳｏＣ１１の起動プログラムを起動プログラムＭとし、Ｓｕｂ ＳｏＣ１２の起動プログラムを起動プログラムＳとして説明する。
【００３２】
Ｍａｉｎ ＳｏＣ１１とＳｕｂ ＳｏＣ１２は、図１で説明するとお互いの外部Ｉ／Ｆ１０ｃによって接続する。従来技術では、起動するプログラムの信頼性を確保するために、図６で説明したように、各々のＳｏＣ１１，１２が高セキュリティ性の外部記憶装置を利用してＣＰＵを起動させる必要があった。
【００３３】
これに対して本発明に係る半導体デバイスにおいては、Ｓｕｂ ＳｏＣ１２の起動プログラムＳは低セキュリティで済むため、Ｓｕｂ ＳｏＣ１２に接続する外部記憶装置１４は低セキュリティの装置で済む。従って、起動に関して、Ｍａｉｎ ＳｏＣ１１とＳｕｂ ＳｏＣ１２における違いは、基本的に図１で説明すると外部記憶装置Ｉ／Ｆ１０ｅのみとなる。より具体的には、Ｍａｉｎ ＳｏＣ１１は外部記憶装置Ｉ／Ｆとして、セキュリティ性が高い外部記憶装置１３にアクセスするＩ／Ｆを有し、Ｓｕｂ ＳｏＣ１２は外部記憶装置Ｉ／Ｆとして外部記憶装置１３より低セキュリティの外部記憶装置１４にアクセスするためのＩ／Ｆを有する。
【００３４】
つまり、Ｍａｉｎ ＳｏＣ１１の起動プログラムＭは、Ｍａｉｎ ＳｏＣ１１のプログラム格納デバイスの例である高セキュリティ外部記憶装置１３に記憶され、Ｓｕｂ ＳｏＣ１２の起動プログラムＳは、Ｓｕｂ ＳｏＣ１２のプログラム格納デバイスの例である低セキュリティ外部記憶装置１４に記憶されていることになる。
【００３５】
特に、Ｍａｉｎ ＳｏＣ１１は外部記憶装置Ｉ／Ｆとして、セキュリティ性が高く且つオンボードタイプのメモリにアクセスするＩ／Ｆを有することが好ましい。そして、Ｓｕｂ ＳｏＣ１２は外部記憶装置Ｉ／Ｆとして上記メモリより低セキュリティで且つ非オンボードタイプの外部記憶装置（ＨＤＤやＳＤカードなどの汎用的な外部記憶装置）にアクセスするためのＩ／Ｆを有することが好ましい。図１で説明すると、図１における外部記憶装置３としては、Ｍａｉｎ ＳｏＣ１１に接続する外部記憶装置１３としては高セキュリティでオンボードタイプのメモリなどが採用でき、Ｓｕｂ ＳｏＣ１２に接続する外部記憶装置１４としては低セキュリティのＨＤＤやＳＤカードなどの汎用的な外部記憶装置が採用できる。但し、外部記憶装置１４は、非オンボードタイプで無くても外部記憶装置１３より低セキュリティであれば、コストを減らす効果が得られる。
【００３６】
また、Ｍａｉｎ ＳｏＣ１１の起動プログラムＭは、乱数やハッシュなどで起動プログラムＳの認証処理が可能な構成、つまりＭａｉｎ ＳｏＣ１１内部のＣＰＵによって処理可能な構成とすることが好ましい。これにより、ＴＰＭ等の専用のセキュリティデバイスを利用せずに構成可能になり、専用デバイスが無いため低コストで済み、また乱数利用によりハッシュ値そのものがＳｕｂ ＳｏＣ１２が搭載された基板上に電送されずに済む。
【００３７】
次に、図２で例示した半導体デバイスにおける起動処理の一例を、図３及び図４を参照しながら説明する。図３は、図２の半導体デバイスにおけるＭａｉｎ ＳｏＣの起動処理例を説明するためのフロー図で、図４は、図２の半導体デバイスにおけるＳｕｂ ＳｏＣの起動処理例を説明するためのフロー図である。
【００３８】
まず、図３を参照しながらＭａｉｎ ＳｏＣ１１の起動処理例を説明する。Ｍａｉｎ ＳｏＣ１１のＣＰＵは、高セキュリティ外部記憶装置１３から起動プログラムＭのデータを読み出し、ＲＡＭ上に展開した後、この起動プログラムＭにより起動する（ステップＳ１）。ステップＳ１では、高セキュリティデバイスからの起動であるため、起動プログラムＭは改竄などされていない。
【００３９】
次に、上記ＣＰＵは乱数データを生成し（ステップＳ２）、Ｓｕｂ ＳｏＣ１２と外部Ｉ／Ｆで接続を行う（ステップＳ３）。接続後、Ｍａｉｎ ＳｏＣ１１はＳｕｂ ＳｏＣ１２とデータ転送や通信などを行うことが可能となる。
【００４０】
Ｍａｉｎ ＳｏＣ１１のＣＰＵは、Ｓｕｂ ＳｏＣ１２に対して外部Ｉ／Ｆを介して乱数データ送信を行う（ステップＳ４）。乱数のデータ長は２５６ｂｉｔや５１２ｂｉｔなど、製品のセキュリティ要件やハッシュアルゴリズムに応じて決定すればよい。そして、上記ＣＰＵは、乱数データ送信と同時若しくは送信前にタイマを起動する（ステップＳ５）。このタイマは、乱数データ送信からＳｕｂ ＳｏＣ１２からのハッシュ値が返信されるまでの時間とタイムアウト時間を計測するためのものである。
【００４１】
次に、予めＭａｉｎ ＳｏＣ１１側（高セキュリティ外部記憶装置１３でもよい）に保持しているＳｕｂ ＳｏＣ１２の起動プログラムデータハッシュ値（起動プログラムＳのデータを元に計算されたハッシュ値）と、自身がステップＳ２で生成した乱数データを使って、再度ハッシュ演算を行う（ステップＳ６）。このハッシュ計算の結果を期待値として利用することになる。
【００４２】
ステップＳ６の処理後、又は処理中に、上記ＣＰＵはＳｕｂ ＳｏＣ１２からの返信データを受信したか否かを判定し（ステップＳ７）、受信していなければタイマで設定されている乱数データ送信時からの指定時間（例えば６０秒など）が経過したか否かを判定して（ステップＳ１０）、その指定期間だけ待つ。
【００４３】
上記ＣＰＵは、Ｓｕｂ ＳｏＣ１２から返信データを受信した場合（ステップＳ７でＹＥＳの場合）、その返信データをステップＳ６で計算した期待値のデータと比較し、一致したか否かを判定する（ステップＳ８）。一致した場合（ステップＳ８でＹＥＳの場合）には、Ｓｕｂ ＳｏＣ１２に対してその結果を通知し（ステップＳ９）、Ｍａｉｎ ＳｏＣ１１の正常起動を完了する。
【００４４】
一方で、不一致の場合（ステップＳ８でＮＯの場合）には、結果を通知せずに、まずＳｕｂ ＳｏＣ１２に対してソフトウェアリセット通知を発行する（ステップＳ１１）。これにより、Ｓｕｂ ＳｏＣ１２はそのＣＰＵがリセット状態となるため全ての機能が停止することになる。次に、上記ＣＰＵは、Ｓｕｂ ＳｏＣ１２との接続に用いている外部Ｉ／Ｆでの接続を遮断する（ステップＳ１２）。ＰＣＩ  Ｅｘｐｒｅｓｓであればリンク接続を停止、リンクのないＩ／Ｆであれば、Ｓｕｂ ＳｏＣ１２からの要求には一切応じないように動作する。
【００４５】
また、Ｓｕｂ ＳｏＣ１２から指定時間が経過しても返信データが送信されない場合、つまりＭａｉｎ ＳｏＣ１１で指定時間が経過しても返信データが受信できない場合（ステップＳ１０でＮＯの場合）には、Ｓｕｂ ＳｏＣ１２は信頼できる起動プログラムからの起動ではない可能性があるため、指定時間経過の時点で、期待値が不一致であった場合と同様にステップＳ１１へ進みソフトウェアリセットを通知する。
【００４６】
次に、図４を参照しながらＳｕｂ ＳｏＣ１２の起動処理例を説明する。この起動プログラムは、Ｓｕｂ ＳｏＣ１２のプログラム格納デバイスの例である低セキュリティ外部記憶装置１４に記憶されているものとする。
【００４７】
Ｓｕｂ ＳｏＣ１２のＣＰＵは、低セキュリティデバイスである外部記憶装置１４から起動プログラムＳのデータを読み出し、ＲＡＭ上に展開した後、この起動プログラムＳにより起動する（ステップＳ２１）。上記ＣＰＵは、起動後、若しくは起動時に読み出した起動プログラムＳのデータのハッシュ値を計算する（ステップＳ２２）。
【００４８】
次に、上記ＣＰＵは、Ｍａｉｎ ＳｏＣ１１と外部Ｉ／Ｆで接続を行う（ステップＳ２３）。この処理は、図３のステップＳ３からの接続要求をトリガとして実行すればよい。接続後、Ｓｕｂ ＳｏＣ１２はＭａｉｎ ＳｏＣ１１とデータ転送や通信などを行うことが可能となる。
【００４９】
そして、上記ＣＰＵは、起動プログラムＳの認証（換言すると起動プログラムＳが格納された低セキュリティ外部記憶装置１４がその格納部分で書き換えられていないかの認証）を行うために、Ｍａｉｎ ＳｏＣ１１から乱数データを受信する（ステップＳ２４）。次に、上記ＣＰＵは、既にステップＳ２２で算出している起動プログラムＳのデータのハッシュ値と、Ｍａｉｎ ＳｏＣ１１から受信した乱数データからさらにハッシュ演算を行い、認証用のハッシュデータを生成する（ステップＳ２５）。そして、上記ＣＰＵは、生成したハッシュデータをＭａｉｎ ＳｏＣ１１へ外部Ｉ／Ｆを介して送信する（ステップＳ２６）。
【００５０】
その後、Ｍａｉｎ ＳｏＣ１１から認証完了通知を受信したとき（ステップＳ２７でＹＥＳの場合）、Ｓｕｂ ＳｏＣ１２の起動は完了する。一方、認証完了通知が受信されない場合（ステップＳ２７でＮＯの場合）、認証完了通知待ちのまま待機状態を継続する。
【００５１】
また、ステップＳ１１で説明したように、Ｍａｉｎ ＳｏＣ１１は、Ｓｕｂ ＳｏＣ１２の起動プログラムＳの認証が不可であった場合、不可であったＳｕｂ ＳｏＣ１２の起動プログラムＳに、リセットの命令を行う。これにより、Ｓｕｂ ＳｏＣ１２のＣＰＵを停止状態にすることができる。
【００５２】
このように、もし、低セキュリティ外部記憶装置１４内の起動プログラムが不正に書き換えられて、その不正プログラムなどによって動作しようとしても、Ｍａｉｎ ＳｏＣ１１がソフトウェアリセットによってＳｕｂ ＳｏＣ１２を強制的に停止することで、システム全体のセキュリティ性を高めることができる。
【００５３】
以上のように、Ｍａｉｎ ＳｏＣ１１は従来同様に高セキュリティ性の外部記憶装置１３を利用してＣＰＵを起動するが、Ｓｕｂ ＳｏＣ１２は低セキュリティの外部記憶装置１４を利用して起動することが可能であり、セキュリティ性を維持しつつ、外部記憶装置にかかるコストを低減することが可能である。Ｓｕｂ ＳｏＣ１２は起動後にＭａｉｎ ＳｏＣ１１から起動プログラムＳの認証を受けることによって起動プログラムＳの信頼性を確認する。また、Ｓｕｂ ＳｏＣ１２の起動プログラムＳが認証不可の場合にはソフトウェアリセットによりＳｕｂ ＳｏＣ１２を停止させることで、さらにセキュリティ向上が図れる。
【００５４】
すなわち、本発明に係る半導体デバイスによれば、各ＳｏＣに接続するそれぞれのプログラム格納デバイス（記憶デバイス）のうちの一部（少なくとも１つ）の記憶デバイスのみを高セキュリティにするだけで、これらの全ての記憶デバイスについて、記憶デバイスの入れ替え脅威を高いセキュリティレベルで排除することが可能になる。なお、図３及び図４では、起動プログラムＳの認証を行う方法としてハッシュ計算を用いた例を挙げたが、これに限らず、例えば公開鍵暗号方式を利用して認証を行ってもよい。
【００５５】
図５は、本発明に係る、複数のＳｏＣが接続されてなる半導体デバイスの他の構成例を示す図である。図５で例示する構成例は、図２の構成例において、Ｍａｉｎ ＳｏＣ１１に電源管理デバイス１５が接続されてなる。Ｍａｉｎ ＳｏＣ１１と電源管理デバイス１５は低速通信ライン、例えばＵＡＲＴ（Universal Asynchronous Receiver Transmitter）、ＵＳＡＲＴ(Universal Synchronous Asynchronous Receiver Transmitter)やＩ２Ｃ（Inter-Integrated Circuit）やＳＭＢｕｓ（System Management Bus）などのシリアル通信で接続されることが多い。
【００５６】
図３及び図４で説明した流れでは、異常終了の場合にＭａｉｎ ＳｏＣ１１がＳｕｂ ＳｏＣ１２に対してソフトウェアリセットを実施することでＳｕｂ ＳｏＣ１２を停止させている。しかし、さらに確実にＳｕｂ ＳｏＣ１２及びＭａｉｎ ＳｏＣ１１を備えたシステム全体を停止するために、次のような制御を付加することが好ましい。
【００５７】
つまり、Ｍａｉｎ ＳｏＣ１１は、Ｓｕｂ ＳｏＣ１２の起動プログラムＳの認証が不可であった場合、電源管理デバイス１５に電源オフの命令を行う。より具体的には、Ｍａｉｎ ＳｏＣ１１はソフトウェアリセット発行後、図３のステップＳ１２の前後で、電源管理デバイス１５に対して電源停止を促す停止通知信号を発行する。電源管理デバイス１５は、上記通信ラインを利用してＭａｉｎ ＳｏＣ１１からの電源停止命令を受信すると、システム全体への電源供給を停止する（シャットダウン状態に移行する）。
【００５８】
ここで、半導体デバイスに設けられた電源管理デバイス１５が、一度にＭａｉｎ ＳｏＣ１１とＳｕｂ ＳｏＣ１２を含むシステムの電源をオン／オフするような制御を行うデバイスであることを前提に説明したが、Ｓｕｂ ＳｏＣ１２とＭａｉｎ ＳｏＣ１１との電源を個別に制御できるデバイスであるか、Ｓｕｂ ＳｏＣ１２用の電源管理デバイスとＭａｉｎ ＳｏＣ１１用の電源管理デバイスなどといった具合に個別の電源管理デバイスであってもよい。その場合、Ｍａｉｎ ＳｏＣ１１からの電源オフ命令は、少なくとも不可であったＳｕｂ ＳｏＣ１２に電源をオフする命令であってもよく、この命令により少なくともこのＳｕｂ ＳｏＣ１２の電源がオフできる。
【００５９】
図５を参照して説明した構成例によれば、ソフトウェアリセットに加え電源を停止させるため、さらに確実な高セキュリティ性を得ることが可能となる。
【符号の説明】
【００６０】
１…ＳｏＣ、２…メモリ、３…外部記憶装置、１０ａ…タイマ、１０ｂ…ＣＰＵ、１０ｃ…外部Ｉ／Ｆ、１０ｄ…メモリコントロール、１０ｅ…外部記憶装置Ｉ／Ｆ、１１…Ｍａｉｎ ＳｏＣ、１２…Ｓｕｂ ＳｏＣ、１３…高セキュリティ外部記憶装置、１４…低セキュリティ外部記憶装置、１５…電源管理デバイス。
【図１】
2012252667.tif 000003
【図２】
2012252667.tif 000004
【図３】
2012252667.tif 000005
【図４】
2012252667.tif 000006
【図５】
2012252667.tif 000007
【図６】
2012252667.tif 000008