(57)【特許請求の範囲】
【請求項１】
少なくとも１つのプロセッサ（１０１）と、少なくとも１つの通信インターフェイス（１０４）と、少なくとも１つのメモリ（１０５、１０６、ＲＡＭ、ＮＶＭ）と、少なくとも１つのバスアクセスコントローラ（１０３）とを備える、セキュア素子デバイス（１００）であって、バスアクセスコントローラ（１０３）が、少なくとも、第１の領域（ＰＢＬ領域）、第２の領域（ＳＢＬ領域）、および安全な領域（ＭＺ領域）を定義し、
−  第１の領域が、第２の領域にプログラムパッケージをロードすることが可能な、第１のローダプログラムを含み、
−  安全な領域が、第２の領域にロードされたプログラムパッケージを認証することが可能な、認証キー（ＫＰＢＬ）を含み、
−  第２の領域にロードされたプログラムパッケージの認証後、第１の領域内のプログラムが第２の領域にそれ以上アクセスすることができなくなるように、第１のローダプログラムのアクセス権が変更される
ことを特徴とする、セキュア素子デバイス（１００）。
【請求項２】
第２の領域にロードされたプログラムパッケージが、認証キー（ＫＰＢＬ）によって認証可能なロードされたプログラムパッケージの署名を含む、認証トークン（ＣＰＢＬ、ＸＳＢＬ）を含む、請求項１に記載のセキュア素子デバイス。
【請求項３】
ロードされたプログラムパッケージが、認証キーを用いて暗号化される第２のキー（ＫＳＢＬ）を含み、第２のキーが、プログラムパッケージ（ＥＣ）の少なくとも一部を復号するために使用される、請求項１に記載のセキュア素子デバイス。
【請求項４】
第２の領域にロードされたプログラムパッケージが、第２のローダプログラムを含む、請求項１に記載のセキュア素子デバイス。
【請求項５】
バスアクセスコントローラ（１０４）が、第２のローダプログラムによってのみロード可能な、第３の領域（ＯＳ領域）を定義する、請求項４に記載のセキュア素子デバイス。
【請求項６】
第２の領域にロードされたプログラムパッケージが、第２のローダプログラムを含み、第２のローダプログラムによって行われる後続のロードが、第２のキーを用いて復号がなされる、暗号化された様式で実行される、請求項３に記載のセキュア素子デバイス。
【請求項７】
第２のキーが、安全な領域に記憶される、請求項３に記載のセキュア素子デバイス。
【請求項８】
バスアクセスコントローラが、別の領域で動作する任意のプログラムから読み取りおよび書き込みモードでアクセス可能な中立領域（共有領域）を定義し、前記中立領域が、領域間でデータを渡すために使用され、バスアクセスコントローラによってアクセス権の違反が検出された場合、中立領域内のすべてのデータが消去される、請求項１に記載のセキュア素子デバイス。
【請求項９】
安全な領域が、別の領域から起動可能であるが、実行は安全な領域においてのみなされる、暗号化および復号に関する安全な機能を含む、請求項１に記載のセキュア素子デバイス。
【請求項１０】
第２の領域の消去の完了後、第１のローダプログラムが、再度第２の領域にアクセス可能となる、請求項１に記載のセキュア素子デバイス。
【請求項１１】
第２の領域の消去の完了後、第１のローダプログラムが、再度第２の領域にアクセス可能となり、第３の領域が、第２の領域と同時に消去される、請求項５に記載のセキュア素子デバイス。
【請求項１２】
第２の領域の消去が、通信インターフェイスに接続されたホストデバイスからの消去に関する認証の後にだけ実行可能である、請求項１０に記載のセキュア素子デバイス。
【請求項１３】
請求項１から１２のいずれか一項に記載のセキュア素子デバイスを備えることを特徴とする、集積回路。
【請求項１４】
いくつかの回路を備えるシステムオンチップであり、回路のうちの１つがセキュア素子デバイスである、請求項１３に記載の集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、セキュア素子に関する。セキュア素子とは、耐タンパ性を有する処理回路である。
【背景技術】
【０００２】
今日、セキュア素子は、最も大きい電子デバイスのマザーボード上で着脱やはんだ付けがなされる、独立したチップとなっている。通例、セキュア素子は、揮発性のメモリと不揮発性のメモリを有するマイクロプロセッサ（暗号プロセッサである場合が多い）と、セキュリティを確保するための何らかの専用ハードウェア回路とを備えるのが一般的である。スマートカードチップに関する先行技術は、セキュリティの面で、およびかかるセキュア素子の応用の点で可能であることの重要な部分を占めている。
【０００３】
とはいえ、セキュア素子内でロードされるソフトウェアは、安全（セキュア）なものであり、かつセキュア素子内で安全にロードされなくてはならない。通例、チップの製造業者は、ブランク状態のセキュア素子を部品の構築業者に提供することが可能であり、その構築業者は、信頼する部品が本当にブランク状態であるという当該部品の製造業者による保証のもと、セキュア素子に信頼するソフトウェアをロードすることになる。部品の構築業者は、一般的に、安全なオペレーティングシステム（ＯＳ）を、チップの内部にロードする。その後、ＯＳを備えたチップは、携帯可能なカード状デバイスに搭載される場合もあれば、別のデバイス製造業者に届けられて、スマートフォン、コンピュータ、自動車、測定機器など、より大きな電子デバイスに含まれる場合もある。
【０００４】
ＯＳの受信後であれば、セキュア素子は、リモートかつ安全にアプリケーションをロードすることができる。ロードが安全であることの信頼性は、そのセキュア素子のアクセスキーを扱う、部品の構築業者によって保証される。オペレーティングシステムは最終的なアプリケーションを受信するように構成される必要があるため、いくつかの問題が発生し得る。別の問題として、この電子デバイスの最終的な利用者は、アプリケーションのセキュリティを保証する部品の構築業者を選択することができない。
【発明の概要】
【課題を解決するための手段】
【０００５】
理想としては、電子デバイスの購入後に完全なカスタマイズが可能となるように、セキュア素子が完全にブランクな状態で電子デバイスに組み込まれることが最も好ましい。しかし、主要な問題として、そのセキュア素子が本当にブランクであるということを、特にその電子デバイスが度重なる再販を経た後で、どのようにして最終的な利用者に保証するかという問題がある。
【０００６】
本発明は、その部品が本当にブランクであることを保証するためのいくつかのハードウェア機能を備えた、新たな構造の搭載回路を提案するものである。より詳細に記すと、本発明は、少なくとも１つのプロセッサ、少なくとも１つの通信インターフェイス、少なくとも１つのメモリ、および少なくとも１つのバスアクセスコントローラを備えた、セキュア素子である。バスアクセスコントローラは少なくとも、第１の領域、第２の領域、および安全な領域を定義する。第１の領域には、第２の領域内でプログラムパッケージをロードすることが可能な、第１のローダプログラムが含まれる。安全な領域には、第２の領域にロードされたプログラムパッケージを認証することが可能な、認証キーが含まれる。第２の領域にロードされたプログラムパッケージの認証後、第１の領域内のプログラムは、第２の領域にそれ以上アクセスすることができなくなる。このようにして、第１のローダプログラムのアクセス権が変更される。
【０００７】
アクセス権がプログラム証明書のロード後に変更される第１のローダプログラムを使用することにより、その第１のローダを通じて行われ得る攻撃の手段が断たれる。
【０００８】
第２の領域にロードされたプログラムパッケージには、優先的に、認証キーによって認証可能なロードされたプログラムパッケージの署名を含む、認証トークンが含まれ得る。ロードされたプログラムパッケージには、認証キーを用いて暗号化された第２のキーが含まれ得る。この第２のキーは、プログラムパッケージの少なくとも一部を復号するために使用される。
【０００９】
第２の領域にロードされたプログラムパッケージには、第２のローダプログラムが含まれ得る。この第２のローダパッケージがＯＳメーカによって作成されたものであれば、この第２のローダに対する制御の信頼性は高まり、すべての環境が制御下にあるとき、当分野でよく知られている、より複雑な保護メカニズムの利用が可能となる。第２のローダプログラムによって行われる後続のロードは、第２のキーを用いて復号がなされる、暗号化された様式で実行されてよい。
【００１０】
セキュリティの改善は、ハードウェアファイアウォールを追加することで実現可能となる。バスアクセスコントローラは、たとえば、オペレーティングシステム専用となる、第２のローダプログラムによってのみロード可能な第３の領域を定義することができる。セキュリティに関するもう１つの改善は、第２のキーを第２の領域に記憶することによって成り立つ。バスアクセスコントローラは、別の領域で動作する任意のプログラムから読み取りおよび書き込みモードでアクセス可能な中立領域を定義することができ、前記中立領域は領域間でデータを渡すために使用される。このとき、バスアクセスコントローラによってアクセス権の違反が検出された場合、中立領域内のすべてのデータが消去される。安全な領域は、別の領域から起動可能であるが、実行は安全な領域においてのみなされる、暗号化および復号に関するいくつかの安全な機能を含み得る。
【００１１】
再利用を目的として、第２の領域の消去の完了後、第１のローダプログラムが、第２の領域に再度アクセスしてもよい。そのようなメカニズムにより、消去されることによって機密データが開示されるリスクなく、チップを再利用することが可能となる。その場合、第３の領域が存在していれば、第３の領域は、第２の領域と同時に消去されるべきである。不測の消去を防止するために、第２の領域の消去は、通信インターフェイスに接続されたホストデバイスからの消去に関する認証の後にだけ実行されるべきである。
【００１２】
本発明について、以下の添付図面を参照しながら、より詳細に説明する。
【図面の簡単な説明】
【００１３】
【図１】セキュア素子を示すブロック図である。
【図２】本発明によるセキュア素子のセキュリティドメインを示す図である。
【図３】本発明によるセキュリティドメインによって定義されるメモリマップを示す図である。
【図４】セキュリティドメインに則ったメモリのアクセステーブルを示す図である。
【図５】セキュリティドメインに則ったメモリのアクセステーブルを示す図である。
【図６】キー管理テーブルを示す図である。
【図７】セカンダリブートローダのインストールに関するフローチャートである。
【発明を実施するための形態】
【００１４】
図１は、セキュア素子１００の例示的なアーキテクチャを示す図である。セキュア素子１００は、バスアクセスコントローラ１０３が監視する中央バス１０２に接続される、処理ユニット１０１を備える。中央バスは、通信インターフェイス１０４、揮発性メモリ（ＲＡＭ）１０５、不揮発性メモリ１０６、および暗号コプロセッサ１０７とも接続される。セキュア素子のアーキテクチャは、これ以外のものを本発明に適応させてもよい。このようなセキュア素子１００は、集積回路の中に作成される。しかし、セキュア素子がソフトウェア構成となることを考慮すれば、１つのチップと見ることも可能である。換言すれば、セキュア素子はシステムオンチップ内に組み込むことが可能であり、その内部でセキュア素子は、自身の通信インターフェイス１０４を通じて通信するモジュールとなる。
【００１５】
システムオンチップ（ＳＯＣ）内にセキュア素子１００が搭載される場合、通信インターフェイス１０４は、ＳＯＣの中央バスに接続されたパラレルインターフェイスとなり得る。この場合、セキュア素子１００のホストはＳＯＣである。通信インターフェイス１０４は、コマンドおよびデータをホストから受信するためのバッファを主に備える。
【００１６】
セキュア素子１００が集積回路内に単体で設けられる場合、通信インターフェイス１０４には、１つまたは複数のよく知られているプロトコルに則った１つまたは複数のインターフェイスが含まれ得る。優先的には、ＩＳＯ  ７８１６、ＩＳＯ、ＵＳＢ、Ｉ２Ｃ、ＳＰＩ、ＳＷＰなどのシリアルインターフェイス、または２つのチップ間で通信するために広く使用される、任意のシリアルインターフェイスが使用される。ＩＳＯ  １４４４３、ＺｉｇＢｅｅ、Ｂｌｕｅｔｏｏｔｈ（登録商標）など、アンテナとチップを直接連結する、非接触型インターフェイスを備えることも可能である。
【００１７】
暗号コプロセッサ１０７は、一部の暗号演算を処理ユニット１０１よりも高速なものとするために実装される。暗号コプロセッサ１０７の使用が必須ではなくとも、処理ユニット１０１のような汎用プロセッサでは処理時間が長引く可能性もある、強力な暗号化機能を実行するために、１つの暗号コプロセッサを設けることが推奨される。
【００１８】
不揮発性メモリ１０６としては、ＲＯＭ、ＰＲＯＭ、Ｅ２ＰＲＯＭ、またはフラッシュＥ２ＰＲＯＭなど、数タイプのメモリが挙げられる。典型的には、ＩＣの製造業者が直接プログラミングすることのできるメモリの一部に、プログラミングが一度だけ行われる。ＩＣの製造業者によって提供されるすべてのデータおよびプログラムは、消去不能な技術を利用することができる。揮発性メモリ１０５および不揮発性メモリ１０６は、各々のアドレスによって容易に識別可能な異なる領域において、分離可能となるように構成される。
【００１９】
中央バス１０２は、アドレス用の部分、データ用の部分、および制御信号用の部分という３つの部分を含む、並列マイクロプロセッサバスである。バスアクセスコントローラ１０３は、中央バス１０２のアドレスと制御信号を監視する。いくつかの領域にメモリを分離させるために、ハードウェアによってアドレスマップが定義される。各領域は、後に詳述するセキュリティドメインに相当する。制御信号により、バスアクセスコントローラは、メモリアクセスが読み取り（Ｒｅａｄ）、書き込み（Ｗｒｉｔｅ）、およびフェッチ（Ｆｅｔｃｈ）のいずれの動作であるかを把握することができる。フェッチが命令の実行用に存在することを考えれば、アクセスバスコントローラは、どのアドレスから次のアクセスがなされるかを把握するものとなる。優先的には、監視されるセキュア素子１００のアドレスマッピングに対する修正ができないように、バスコントローラ１０３はハードワイヤードなものとなる。バスアクセスコントローラ１０３は、１つのアクセス規則を変更するためにプログラミング可能な、少なくとも１つの不揮発性タイプのビットを備える。当業者であれば、以下で詳述される、実装に向けた規則に依存したバスアクセスコントローラを、容易に作成することができる。
【００２０】
図２は、本発明を用いて実装可能な、異なるセキュリティドメインを示す図である。第１のドメイン２０１は、ＩＣの製造業者に関するドメインである。第１のドメイン２０１は、後続のソフトウェアを安全にロードするのに使用される、プライマリブートローダを主として含む。第２のドメイン２０２は、ＯＳメーカの制御下にある。第２のドメイン２０２は、セカンダリブートローダを含む。セカンダリブートローダは、プライマリブートローダによってロードされ、オペレーティングシステムをロードするのに使用される。第３のドメイン２０３は、ＯＳメーカの制御下にある。第３のドメインは、オペレーティングシステムを含む。第４のドメインは、カスタマのためのドメインであり、アプリケーションが含まれる。一方のドメインのソフトウェアが他方のドメインのデータにアクセスしないように、すべてのドメインは、ファイアウォールによって隔てられている。
【００２１】
本発明の好ましい実装形態では、第１および第２のドメインの間、ならびに第２および第３のドメインの間のファイアウォールがハードウェアファイアウォールであり、第３および第４のドメインの間のファイアウォールがＯＳのソフトウェアによって作成されたものとなる。一変形形態では、第２のドメインおよび第３のドメインが、ファイアウォールのない単一のドメインとして構成されてもよい。第１および第２のドメインの間のハードウェアファイアウォールは、ＩＣの製造業者とＯＳメーカの間の秘密性を保証する。
【００２２】
図３は、ハードウェアセキュリティの確保方法を説明するために、異なるドメインに対応するメモリマップを詳細に示す図である。図３において、第１のドメイン２０１は、２つのメモリ領域で共有される。一方はプライマリブートローダ専用のメモリ領域（ＰＢＬ領域）であり、他方はセキュリティ機能のためのメモリ領域（ＭＺ領域）である。ＭＺ領域にはセキュリティ機能が含まれ、この領域にはＰＢＬ領域からアクセスすることはできない。第２のドメイン２０２には、セカンダリブートローダが含まれ、ＳＢＬ領域を構成している。第２および第３のドメイン２０３および２０４は、１つの領域（ＯＳ領域）内に位置している。この４つの領域（ＰＢＬ領域、ＭＺ領域、ＳＢＬ領域、およびＯＳ領域）は、バスアクセスコントローラ１０３によって管理される、ハードウェアファイアウォールＦＷ１、ＦＷ２、およびＦＷ３によって互いに隔てられている。第５の領域は、すべての領域に関する書き込みと読み取りが自由な、共有領域に相当する。共有領域は、隔てられた領域間での安全な情報交換を可能にするために使用される。
【００２３】
これらの領域に関する特有のハードウェアファイアウォールの目的は、プライマリブートローダ（ＰＢＬ）とセカンダリブートローダ（ＳＢＬ）の間で秘密が漏洩するのを防止することであり、第１のドメインと第２のドメインの間では、ファイアウォールがネイティブに実施される。ＰＢＬにソフトウェアの機能不全が発生するか、悪意のあるプログラムが入り込んだとしても、保証済みのハードウェアにより、対応するドメインの外側への秘密漏洩は阻止される。要約すると、ＰＢＬはＳＢＬの秘密を開示することができず、その逆も同様である。
【００２４】
バスアクセスコントローラのアクセス規則に関し、さらに詳述するために図４および図５を参照する。図４は、セカンダリブートローダのロード前のアクセス規則に対応する図であり、図５は、セカンダリブートローダのロードおよび認証後のアクセス規則に対応する図である。これらの図４および図５は、構成部品の耐用寿命が尽きるまで規則が封印されるように、バスアクセスコントローラ内でハードワイヤードにすることによって実装される。先に示したように、バスアクセスコントローラ１０３は、バスおよび処理された命令を監視する。バスアクセスコントローラ１０３は、現在実行されている命令がどの領域からのものかを常に把握している。命令元の領域に応じて、他の領域に何らかの権限が付与される。表において、Ｒは、読み取り動作に関するアクセス権が認められていることを示し、Ｗは、書き込み動作に関するアクセス権が認められていることを示し、Ｘは、将来の実行という観点でのフェッチ動作が認められていることを示す。
【００２５】
見て取れるように、図４および図５を定義している権限は、その領域内においてのみ命令の実行を許可するものである。両図面の唯一の相違は、ＰＢＬ領域からＳＢＬ領域へのアクセス権のみである。図４において、ＰＢＬ領域は、ＳＢＬ領域にプログラムパッケージをダウンロードし、ロードが実行されたことを確認するために、読み取りと書き込みに関する、ＳＢＬ領域にアクセスする権限を有する。パッケージはダウンロード後に認証が行われ、認証に成功すれば、バスアクセスコントローラの不揮発性ビットが変更され、図５に示すように、ＰＢＬ領域からＳＢＬ領域へのアクセスが禁止される。
【００２６】
このようなメモリマッピングは、当業者であれば、セキュリティのレベルや何らかの選択に応じて修正することが可能である。本明細書の例では、ＯＳ領域はＳＢＬ領域から隔てられている。ＳＢＬ領域は、ＯＳ領域での読み取りと書き込みに関するアクセス権を有する。これは、ＯＳのすべてのアップデートは、セカンダリブートローダを通じて行う必要があるためである。ＯＳ領域に関しても、特に、ソフトウェアアプリケーションをロードするのに必要となり得るＳＢＬ領域からの何らかの情報を使用するために、ＳＢＬ領域に対するアクセス権が付与されている。これら２つの対応するドメインが同一ドメインとなり得ることを考えれば、ＳＢＬ領域とＯＳ領域の両方を１つの領域として定めることも可能である。このようなことが可能である理由は、全く同じブートローダソフトウェアによってオペレーティングシステムが安全にロードされることをＯＳメーカへ保証するために、セカンダリブートローダがＯＳメーカによって作成されたものとなるからである。オペレーティングシステムとセカンダリブートローダの間のファイアウォールは、ソフトウェアによって作成され得る。
【００２７】
理解されるように、何らかのデータを、ある領域から別の領域に共有領域を経由して渡すことが可能である。このようなメカニズムを用いることにより、データだけがある領域から別の領域へと正しく転送される。加えて、データを受信する領域は、受信したデータに対する完全な制御権を有する。なぜなら、受信したデータは、通常、前記領域のプログラムによって読み取られるからである。とはいえ、バスアクセスコントローラ１０３が権限違反を検出するか、処理ユニットに障害が検出された場合、共有メモリは完全に消去される。セキュア素子１００は、このようなセキュア素子用として既に知られているものに倣った、物理的攻撃を検出するためのいくつかのセキュリティセンサを任意で備えてもよい。セキュリティセンサが潜在的な攻撃を検出した場合も、やはり共有メモリは消去される。
【００２８】
ある領域から別の領域への切り換えを行うために、２つのメカニズムが考えられる。第１のメカニズムは、最終的には共有メモリ内に何らかのデータとともに機能を起動することに対応するポインタをロードし、次いで、選択された領域への切り換えを示す割り込みをアクティブ化するというものである。領域のアクティブ化により、ポインタと最終データの読み取りが可能となる。読み取りの後、その領域において、指定された機能を起動するためにポインタの検証が行われる。
【００２９】
もう１つのメカニズムは、各領域に１つまたは複数のエントリポイントを定義するというものである。これらのエントリポイントは、一般的なアクセス規則に対する認可された例外となるように、バスアクセスコントローラによって識別される、特定のアドレスに相当し得る。当然ながら、補完データは共有メモリを通過することになる。
【００３０】
先に触れたように、ＭＺ領域には、チップのセキュリティ機能が含まれる。ＭＺ領域には、１つまたは複数の暗号化機能のコードとともに、セキュア素子によって使用されるキーが含まれる。同様に、暗号コプロセッサは、通常、ＭＺドメインの中だけで動作する。また、ＳＢＬドメインにロードされたコードの認証、ＳＢＬ領域の消去、バスアクセスコントローラの不揮発性ビットのロックおよびロック解除など、いくつかの他の機能もＭＺドメイン専用となる。ＭＺ領域は、完全にＩＣの製造業者の制御下にあり、同業者のソフトウェアを用いて保証される、保証されたドメインとなるべきである。コードが修正されることはないため、不揮発性メモリの一部をＲＯＭタイプとすることができる。あるいは、ＭＺに含み入れられる何らかの機能が、いくつかの機能を実行するために、処理ユニットの代わりに動作する何らかのハードワイヤードなステートマシンを起動させてもよい。
【００３１】
暗号処理はすべてＭＺ領域内で行われ、ＭＺ領域はすべてのキーをアクセス権の表とともに記憶する。一例として、図６は、以下で説明するインストール処理中に使用される、３つのキーに関する表である。第１のキーＫＰＢＬは、ロードされるプログラムパッケージがロードされる権限を有するということを認証し、ＰＢＬ領域が修正されていないということを認証し、さらにセカンダリブートローダを暗号化するためのキーである第２のキーＫＳＢＬを復号するために、プライマリブートローダに割り当てられるキーである。優先的には、第３のキーＫＯＥＭは、メモリ消去など、何らかの機能の起動用に使用される。２つの異なるアルゴリズムを使用する可能性のある、２つの異なる機能に対する管理能力の分離を認可するという形で、第１のキーおよび第３のキーは独立したキーとされ、これらの２つのキーＫＰＢＬおよびＫＯＥＭは、ＩＣの製造業者によって直接ロードされる。一変形形態では、第１および第３のキーの代わりとして、１つのキーを持つことも可能である。
【００３２】
図６に示すように、各キーはいくつかのドメインに対して利用可能であり、他のドメインには利用不可となっている。すべての暗号処理がＭＺ領域内で行われることを考慮し、キーは常時ＭＺ領域内に残存しているが、それらのキーが使用できるのは、認可された領域から処理が起動された場合だけである。どのような場合であっても、ＭＺ領域内で登録されたキーがＭＺ領域外に行くことはなく、キーの使用はすべて、ＭＺ領域内で実行されなくてはならない。第１のキーＫＰＢＬは、ＳＢＬ領域から、またはＭＺ領域から要求された処理に対して利用可能であるが、この第１のキーＫＰＢＬは、これら以外の領域からの要求では使用することはできない。第２のキーＫＳＢＬは、ＳＢＬ領域、ＭＺ領域、およびＯＳ領域に対して利用可能であり、他の領域には利用できない。第３のキーＫＯＥＭは、ＰＢＬ領域とＭＺ領域に対して利用可能となる。
【００３３】
インストール処理について、図７のアルゴリズムを参照しつつ説明する。処理は、ステップ７００において、セキュア素子に電源が投入された後に開始する。電圧が作動レベルに達したとみなされたとき、ステップ７０１において、初期化が実行される。このステップは、主に、部品のすべてのバッファをリセットし、テスト７０２に相当する命令に、ＰＢＬ領域内のプログラムポインタを位置合わせするものである。テスト７０２は、セカンダリブートローダ（ＳＢＬ）がアクティブか否かを示す、不揮発性メモリ内のフラグを確認するものである。ＳＢＬがアクティブでなければ、セキュア素子１００は、待機状態７０３に移行する。待機状態はアイドル状態であり、この状態において、通信インターフェイス１０４からの割り込みは、次のステップであるテスト７０４に移行してよいというコマンドを受信したことを意味する。テスト７０４は、受信したコマンドが消去（Ｅｒａｓｅ）コマンドかどうかを検証する。コマンドが消去コマンドでなければ、テスト７０５が、そのコマンドがロード（Ｌｏａｄ）コマンドかどうかを検証する。コマンドがロードコマンドでなければ、テスト７０６が、そのコマンドがインストール（Ｉｎｓｔａｌｌ）コマンドかどうかを検証する。コマンドがインストールコマンドでなければ、次のコマンドを受信するまで、処理はアイドルステップ７０３に戻る。
【００３４】
当業者であれば、ホストから到来する３つのコマンドにだけ、プライマリブートローダが反応することに留意し得る。これら３つのコマンドは、プログラムのロードに必要な最小限のコマンドセットである。攻撃の潜在的なリスクを減らすために、ＰＢＬは、コマンドの数を最小に抑え、考えられる最小サイズにすることが不可欠である。
【００３５】
受信したコマンドが消去コマンドである場合、消去ステップ７０７が実行される。この消去ステップ７０７の間、ＰＢＬは、認証トークンを検証することになる。一例として、認証トークンは、第３のキーＫＯＥＭを用いて暗号化された乱数を含み得る。暗号化の方法は、たとえば、ＡＥＳアルゴリズムとすることができる。ＰＢＬ領域は、ＭＺ領域に対し、第３のキーＫＯＥＭを用いた番号についてのＡＥＳの計算、または暗号化された数字の復号のいずれかを一時的に要求する。次いで、結果がトークンの他の部分と比較される。トークンが認証された場合、ＳＢＬ領域およびＯＳ領域のすべての不揮発性メモリは消去される。ステップ７０７を終了するために、２つの不揮発性フラグが上書きされ、一方はＳＢＬはアクティブではないと示し、もう一方は不揮発性メモリは消去されたと示すものとなる。その後、処理はアイドルステップ７０３に戻ることができる。
【００３６】
受信したコマンドがロードコマンドである場合、テスト７０８が実行される。テスト７０８は、メモリが正しく消去されたか否かを示す、フラグの状態の検証のみを行う。メモリが正しく消去されていない場合、処理はアイドルステップ７０３に戻る。メモリが消去されていれば、ロードステップ７０９が開始され、そのステップにおいて、不揮発性フラグにより、メモリがそれ以上消去されないことが示され、通信インターフェイスから到来するプログラムパッケージのロード分がＳＢＬ領域にロードされる。当業者であれば、このステップ７０９の間、ＳＢＬがアクティブではないことから、ＰＢＬ領域はＳＢＬ領域にアクセス可能であることに留意し得る。
【００３７】
プログラムパッケージには、暗号化されたＳＢＬのコード、認証トークン、および第２のキーＫＳＢＬが含まれる。このようなプログラムパッケージの作成には多数の代替形態が存在するが、主に１つの例だけを詳述するものとする。暗号化されたコードは、たとえば、第２のキーＫＳＢＬを用いてＡＥＳアルゴリズムによって暗号化されたものである。認証トークンに関しては、コードの完全性を検証可能なトークンを定義し、またコードがロード可能なものであることが重要である。第２のキーＫＯＥＭを暗号化するために、やはり第１のキーＫＰＢＬを使用するべきであるが、ＯＳの製造業者にキーＫＰＢＬが知れてはならない。このようなメカニズムを可能にするためには、ＩＣの製造業者は、２つの情報から成る対で構成される識別情報を提供しなくてはならない。このとき、情報の一方は、番号ＲＰＢＬであり、他方は、第１のキーＫＰＢＬを用いてＡＥＳアルゴリズムで暗号化されたＲＰＢＬに相当する暗号化された番号ＣＰＢＬである。第２のキーＫＳＢＬを暗号化する１つの方法は、情報ＲＰＢＬ、すなわち、パッケージ内に渡された情報ＣＰＢＬを用いて暗号文を作成することである。次いで、情報ＣＰＢＬに置き換わる情報ＲＰＢＬも併せたパッケージ全体のハッシング関数を作成する、パッケージの署名を作成することができる。
【００３８】
この例を、式を用いて明瞭にするために、ＩＣの製造業者は、ＯＳの製造業者に対し、以下の情報の対を供与する。
【００３９】
｛ＣＰＢＬ；ＲＰＢＬ｝
このとき、
ＣＰＢＬ＝ＡＥＳ［ＫＰＢＬ］（ＲＰＢＬ）
ＲＰＢＬ＝ＡＥＳ−１［ＫＰＢＬ］（ＣＰＢＬ）
パッケージは、以下の情報の群に相当する。
｛ＥＣ；ＣＰＢＬ；ＣＫＳＢＬ；ＸＳＢＬ｝
このとき、
−  ＥＣは暗号化されたコードであり、
ＥＣ＝ＡＥＳ［ＫＳＢＬ］（コード）
−  ＣＫＳＢＬは第２のキーＫＳＢＬの暗号文であり、
ＣＫＳＢＬ＝ＫＳＢＬ  ＸＯＲ  ＲＰＢＬ
−  ＸＳＢＬはパッケージの署名である。
ＸＳＢＬ＝ＳＨＡ２５６（ＥＣ；ＲＰＢＬ；ＣＫＳＢＬ）
ＳＨＡ２５６は、２５６ビットの安全なハッシュ値であり、当業者によく知られたものである。
【００４０】
この場合の認証トークンは、パッケージ内部に送信された対｛ＣＰＢＬ；ＸＳＢＬ｝である。
【００４１】
当然ながら、将来的に実現し得る他の暗号化がなされてもよい。対称鍵であるＡＥＳの代わりに、ＲＳＡを用いた公開鍵基盤を利用することも可能である。ＯＳの製造業者に第１のキーＫＰＢＬを与えることなくキーＫＰＢＬを用いて、コードの認証および第２のキーＫＳＢＬの暗号化を可能とすることに意義がある。
【００４２】
ＳＢＬ領域にロードされたプログラムパッケージの開示後は、図７の処理の開示を継続することはより容易となる。インストールコマンドを受信すると、プライマリブートローダは、ＭＺ領域によって実行される、認証ステップ７１０を起動する。認証ステップ７１０は、パッケージの完全性および認証のチェックを目的としたものであるが、ＰＢＬ領域の完全性の検証、ＰＢＬ領域のＳＢＬ領域に対するアクセスのロック、および最後にコードの復号も行わなくてはならない。
【００４３】
情報の対｛ＣＰＢＬ；ＲＰＢＬ｝およびパッケージ｛ＥＣ；ＣＰＢＬ；ＣＫＳＢＬ；ＸＳＢＬ｝を考慮に入れ、ＭＺ領域は、ＫＰＢＬを用いてＲＰＢＬを計算するために、ＣＰＢＬを読み取る。次いで、署名ＸＳＢＬが正しいことを検証するために、署名が計算される。署名ＸＳＢＬが正しくなければ、エラーメッセージが通信インターフェイス１０４に送信され、ＳＢＬ領域およびＯＳ領域のメモリは消去される。署名ＸＳＢＬが正しいということは、パッケージが認証されるという意味であり、その場合、ＰＢＬ領域からＳＢＬ領域にアクセスがなされないように、ＳＢＬが認証されたことを示す不揮発性フラグが立てられる。コードを復号するに先立ち、ＰＢＬ領域の完全性の検証についてもチェックされる。このチェックは、たとえば、すべてのＰＢＬ領域に対してＳＨＡ２５６を実行し、ＭＺ領域に事前に記録された署名を用いて比較を行うことによって実行される。部品の完全性は確かなものであるため、第２のキーＫＳＢＬはＣＫＳＢＬから抽出され、ＭＺ領域に記憶される。
【００４４】
最後に、ＭＺは、第２のキーＫＳＢＬを用いてコードを復号する復号ステップ７１１に向けて、ＳＢＬ領域への切り換えを行う。
【００４５】
ＳＢＬがアクティブになると、処理はテスト７１２の実行に向けて継続される。テスト７１２は、オペレーティングシステムがインストールされているか否かを検証するものである。セカンダリブートローダのコード機能は、主に、オペレーティングシステム用の安全なブートローダを提供するためのものである。よって、ＯＳがロードされていなければ、ＯＳ領域にＯＳをロードするために、ロードステップ７１３が実行される。セカンダリブートローダによるＯＳのインストールは、ＯＳメーカによって実行され、保証されるものであるため、ＯＳのロードはさらに複雑なものとなる可能性もあり、アプリケーションに対するソフトウェアファイアウォールを定義することも可能である。ＯＳがセカンダリブートローダによってのみロードされ得るという事実は、ＯＳのロードをより安全なものにする。特に、同一のキーＫＳＢＬを、オペレーティングシステムのパッケージの復号のために使用することも可能である。ＯＳのロード後、ＯＳはアクティブとなり、ＯＳおよびインストールされたアプリケーションを実行することが可能となる。
【００４６】
本発明のさらなる利点の１つは、本発明のセキュア素子を含むデバイスは、異なるソースに由来し、同一のＯＳを必ずしも使用する必要のない、異なるアプリケーションを実装可能であるという点である。その場合、アプリケーションと、ＯＳと、ブートローダとの暗号化されたバックアップをホスト上で実行することができ、メモリは、そのＯＳおよびそのアプリケーションを用いて別のセカンダリブートローダを受信するために、完全に消去され得るものとなる。
【００４７】
当業者であれば、添付される特許請求の範囲において定義される本発明の範囲を変更することなしに、例示した実施形態に修正を加えることが可能であることを理解されよう。
【図１】
0006636028.tif 000002
【図２】
0006636028.tif 000003
【図３】
0006636028.tif 000004
【図４】
0006636028.tif 000005
【図５】
0006636028.tif 000006
【図６】
0006636028.tif 000007
【図７】
0006636028.tif 000008