JP2018508063A - セキュア素子 - Google Patents

セキュア素子 Download PDF

Info

Publication number
JP2018508063A
JP2018508063A JP2017534959A JP2017534959A JP2018508063A JP 2018508063 A JP2018508063 A JP 2018508063A JP 2017534959 A JP2017534959 A JP 2017534959A JP 2017534959 A JP2017534959 A JP 2017534959A JP 2018508063 A JP2018508063 A JP 2018508063A
Authority
JP
Japan
Prior art keywords
area
secure element
element device
program
pbl
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2017534959A
Other languages
English (en)
Other versions
JP6636028B2 (ja
Inventor
ルリミ,アラン
Original Assignee
ジエマルト・エス・アー
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ジエマルト・エス・アー filed Critical ジエマルト・エス・アー
Publication of JP2018508063A publication Critical patent/JP2018508063A/ja
Application granted granted Critical
Publication of JP6636028B2 publication Critical patent/JP6636028B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/77Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in smart cards
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/44Program or device authentication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/575Secure boot
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2143Clearing memory, e.g. to prevent the data from being stolen

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)

Abstract

本発明は、少なくとも1つのプロセッサ、少なくとも1つの通信インターフェイス、少なくとも1つのメモリRAMおよびNVM、および少なくとも1つのバスアクセスコントローラを備えた、セキュア素子デバイスに関する。バスアクセスコントローラは少なくとも、第1の領域PBL、第2の領域SBL、および安全な領域MZを定義する。第1の領域には、第2の領域にプログラムパッケージをロードすることが可能な、第1のローダプログラムが含まれる。安全な領域には、第2の領域にロードされたプログラムパッケージを認証することが可能な、認証キーが含まれる。第2の領域にロードされたプログラムパッケージの認証後、第1の領域内のプログラムは、第2の領域にそれ以上アクセスすることができなくなる。このようにして、第1のローダプログラムのアクセス権が変更される。

Description

本発明は、セキュア素子に関する。セキュア素子とは、耐タンパ性を有する処理回路である。
今日、セキュア素子は、最も大きい電子デバイスのマザーボード上で着脱やはんだ付けがなされる、独立したチップとなっている。通例、セキュア素子は、揮発性のメモリと不揮発性のメモリを有するマイクロプロセッサ(暗号プロセッサである場合が多い)と、セキュリティを確保するための何らかの専用ハードウェア回路とを備えるのが一般的である。スマートカードチップに関する先行技術は、セキュリティの面で、およびかかるセキュア素子の応用の点で可能であることの重要な部分を占めている。
とはいえ、セキュア素子内でロードされるソフトウェアは、安全(セキュア)なものであり、かつセキュア素子内で安全にロードされなくてはならない。通例、チップの製造業者は、ブランク状態のセキュア素子を部品の構築業者に提供することが可能であり、その構築業者は、信頼する部品が本当にブランク状態であるという当該部品の製造業者による保証のもと、セキュア素子に信頼するソフトウェアをロードすることになる。部品の構築業者は、一般的に、安全なオペレーティングシステム(OS)を、チップの内部にロードする。その後、OSを備えたチップは、携帯可能なカード状デバイスに搭載される場合もあれば、別のデバイス製造業者に届けられて、スマートフォン、コンピュータ、自動車、測定機器など、より大きな電子デバイスに含まれる場合もある。
OSの受信後であれば、セキュア素子は、リモートかつ安全にアプリケーションをロードすることができる。ロードが安全であることの信頼性は、そのセキュア素子のアクセスキーを扱う、部品の構築業者によって保証される。オペレーティングシステムは最終的なアプリケーションを受信するように構成される必要があるため、いくつかの問題が発生し得る。別の問題として、この電子デバイスの最終的な利用者は、アプリケーションのセキュリティを保証する部品の構築業者を選択することができない。
理想としては、電子デバイスの購入後に完全なカスタマイズが可能となるように、セキュア素子が完全にブランクな状態で電子デバイスに組み込まれることが最も好ましい。しかし、主要な問題として、そのセキュア素子が本当にブランクであるということを、特にその電子デバイスが度重なる再販を経た後で、どのようにして最終的な利用者に保証するかという問題がある。
本発明は、その部品が本当にブランクであることを保証するためのいくつかのハードウェア機能を備えた、新たな構造の搭載回路を提案するものである。より詳細に記すと、本発明は、少なくとも1つのプロセッサ、少なくとも1つの通信インターフェイス、少なくとも1つのメモリ、および少なくとも1つのバスアクセスコントローラを備えた、セキュア素子である。バスアクセスコントローラは少なくとも、第1の領域、第2の領域、および安全な領域を定義する。第1の領域には、第2の領域内でプログラムパッケージをロードすることが可能な、第1のローダプログラムが含まれる。安全な領域には、第2の領域にロードされたプログラムパッケージを認証することが可能な、認証キーが含まれる。第2の領域にロードされたプログラムパッケージの認証後、第1の領域内のプログラムは、第2の領域にそれ以上アクセスすることができなくなる。このようにして、第1のローダプログラムのアクセス権が変更される。
アクセス権がプログラム証明書のロード後に変更される第1のローダプログラムを使用することにより、その第1のローダを通じて行われ得る攻撃の手段が断たれる。
第2の領域にロードされたプログラムパッケージには、優先的に、認証キーによって認証可能なロードされたプログラムパッケージの署名を含む、認証トークンが含まれ得る。ロードされたプログラムパッケージには、認証キーを用いて暗号化された第2のキーが含まれ得る。この第2のキーは、プログラムパッケージの少なくとも一部を復号するために使用される。
第2の領域にロードされたプログラムパッケージには、第2のローダプログラムが含まれ得る。この第2のローダパッケージがOSメーカによって作成されたものであれば、この第2のローダに対する制御の信頼性は高まり、すべての環境が制御下にあるとき、当分野でよく知られている、より複雑な保護メカニズムの利用が可能となる。第2のローダプログラムによって行われる後続のロードは、第2のキーを用いて復号がなされる、暗号化された様式で実行されてよい。
セキュリティの改善は、ハードウェアファイアウォールを追加することで実現可能となる。バスアクセスコントローラは、たとえば、オペレーティングシステム専用となる、第2のローダプログラムによってのみロード可能な第3の領域を定義することができる。セキュリティに関するもう1つの改善は、第2のキーを第2の領域に記憶することによって成り立つ。バスアクセスコントローラは、別の領域で動作する任意のプログラムから読み取りおよび書き込みモードでアクセス可能な中立領域を定義することができ、前記中立領域は領域間でデータを渡すために使用される。このとき、バスアクセスコントローラによってアクセス権の違反が検出された場合、中立領域内のすべてのデータが消去される。安全な領域は、別の領域から起動可能であるが、実行は安全な領域においてのみなされる、暗号化および復号に関するいくつかの安全な機能を含み得る。
再利用を目的として、第2の領域の消去の完了後、第1のローダプログラムが、第2の領域に再度アクセスしてもよい。そのようなメカニズムにより、消去されることによって機密データが開示されるリスクなく、チップを再利用することが可能となる。その場合、第3の領域が存在していれば、第3の領域は、第2の領域と同時に消去されるべきである。不測の消去を防止するために、第2の領域の消去は、通信インターフェイスに接続されたホストデバイスからの消去に関する認証の後にだけ実行されるべきである。
本発明について、以下の添付図面を参照しながら、より詳細に説明する。
セキュア素子を示すブロック図である。 本発明によるセキュア素子のセキュリティドメインを示す図である。 本発明によるセキュリティドメインによって定義されるメモリマップを示す図である。 セキュリティドメインに則ったメモリのアクセステーブルを示す図である。 セキュリティドメインに則ったメモリのアクセステーブルを示す図である。 キー管理テーブルを示す図である。 セカンダリブートローダのインストールに関するフローチャートである。
図1は、セキュア素子100の例示的なアーキテクチャを示す図である。セキュア素子100は、バスアクセスコントローラ103が監視する中央バス102に接続される、処理ユニット101を備える。中央バスは、通信インターフェイス104、揮発性メモリ(RAM)105、不揮発性メモリ106、および暗号コプロセッサ107とも接続される。セキュア素子のアーキテクチャは、これ以外のものを本発明に適応させてもよい。このようなセキュア素子100は、集積回路の中に作成される。しかし、セキュア素子がソフトウェア構成となることを考慮すれば、1つのチップと見ることも可能である。換言すれば、セキュア素子はシステムオンチップ内に組み込むことが可能であり、その内部でセキュア素子は、自身の通信インターフェイス104を通じて通信するモジュールとなる。
システムオンチップ(SOC)内にセキュア素子100が搭載される場合、通信インターフェイス104は、SOCの中央バスに接続されたパラレルインターフェイスとなり得る。この場合、セキュア素子100のホストはSOCである。通信インターフェイス104は、コマンドおよびデータをホストから受信するためのバッファを主に備える。
セキュア素子100が集積回路内に単体で設けられる場合、通信インターフェイス104には、1つまたは複数のよく知られているプロトコルに則った1つまたは複数のインターフェイスが含まれ得る。優先的には、ISO 7816、ISO、USB、I2C、SPI、SWPなどのシリアルインターフェイス、または2つのチップ間で通信するために広く使用される、任意のシリアルインターフェイスが使用される。ISO 14443、ZigBee、Bluetooth(登録商標)など、アンテナとチップを直接連結する、非接触型インターフェイスを備えることも可能である。
暗号コプロセッサ107は、一部の暗号演算を処理ユニット101よりも高速なものとするために実装される。暗号コプロセッサ107の使用が必須ではなくとも、処理ユニット101のような汎用プロセッサでは処理時間が長引く可能性もある、強力な暗号化機能を実行するために、1つの暗号コプロセッサを設けることが推奨される。
不揮発性メモリ106としては、ROM、PROM、E2PROM、またはフラッシュE2PROMなど、数タイプのメモリが挙げられる。典型的には、ICの製造業者が直接プログラミングすることのできるメモリの一部に、プログラミングが一度だけ行われる。ICの製造業者によって提供されるすべてのデータおよびプログラムは、消去不能な技術を利用することができる。揮発性メモリ105および不揮発性メモリ106は、各々のアドレスによって容易に識別可能な異なる領域において、分離可能となるように構成される。
中央バス102は、アドレス用の部分、データ用の部分、および制御信号用の部分という3つの部分を含む、並列マイクロプロセッサバスである。バスアクセスコントローラ103は、中央バス102のアドレスと制御信号を監視する。いくつかの領域にメモリを分離させるために、ハードウェアによってアドレスマップが定義される。各領域は、後に詳述するセキュリティドメインに相当する。制御信号により、バスアクセスコントローラは、メモリアクセスが読み取り(Read)、書き込み(Write)、およびフェッチ(Fetch)のいずれの動作であるかを把握することができる。フェッチが命令の実行用に存在することを考えれば、アクセスバスコントローラは、どのアドレスから次のアクセスがなされるかを把握するものとなる。優先的には、監視されるセキュア素子100のアドレスマッピングに対する修正ができないように、バスコントローラ103はハードワイヤードなものとなる。バスアクセスコントローラ103は、1つのアクセス規則を変更するためにプログラミング可能な、少なくとも1つの不揮発性タイプのビットを備える。当業者であれば、以下で詳述される、実装に向けた規則に依存したバスアクセスコントローラを、容易に作成することができる。
図2は、本発明を用いて実装可能な、異なるセキュリティドメインを示す図である。第1のドメイン201は、ICの製造業者に関するドメインである。第1のドメイン201は、後続のソフトウェアを安全にロードするのに使用される、プライマリブートローダを主として含む。第2のドメイン202は、OSメーカの制御下にある。第2のドメイン202は、セカンダリブートローダを含む。セカンダリブートローダは、プライマリブートローダによってロードされ、オペレーティングシステムをロードするのに使用される。第3のドメイン203は、OSメーカの制御下にある。第3のドメインは、オペレーティングシステムを含む。第4のドメインは、カスタマのためのドメインであり、アプリケーションが含まれる。一方のドメインのソフトウェアが他方のドメインのデータにアクセスしないように、すべてのドメインは、ファイアウォールによって隔てられている。
本発明の好ましい実装形態では、第1および第2のドメインの間、ならびに第2および第3のドメインの間のファイアウォールがハードウェアファイアウォールであり、第3および第4のドメインの間のファイアウォールがOSのソフトウェアによって作成されたものとなる。一変形形態では、第2のドメインおよび第3のドメインが、ファイアウォールのない単一のドメインとして構成されてもよい。第1および第2のドメインの間のハードウェアファイアウォールは、ICの製造業者とOSメーカの間の秘密性を保証する。
図3は、ハードウェアセキュリティの確保方法を説明するために、異なるドメインに対応するメモリマップを詳細に示す図である。図3において、第1のドメイン201は、2つのメモリ領域で共有される。一方はプライマリブートローダ専用のメモリ領域(PBL領域)であり、他方はセキュリティ機能のためのメモリ領域(MZ領域)である。MZ領域にはセキュリティ機能が含まれ、この領域にはPBL領域からアクセスすることはできない。第2のドメイン202には、セカンダリブートローダが含まれ、SBL領域を構成している。第2および第3のドメイン203および204は、1つの領域(OS領域)内に位置している。この4つの領域(PBL領域、MZ領域、SBL領域、およびOS領域)は、バスアクセスコントローラ103によって管理される、ハードウェアファイアウォールFW1、FW2、およびFW3によって互いに隔てられている。第5の領域は、すべての領域に関する書き込みと読み取りが自由な、共有領域に相当する。共有領域は、隔てられた領域間での安全な情報交換を可能にするために使用される。
これらの領域に関する特有のハードウェアファイアウォールの目的は、プライマリブートローダ(PBL)とセカンダリブートローダ(SBL)の間で秘密が漏洩するのを防止することであり、第1のドメインと第2のドメインの間では、ファイアウォールがネイティブに実施される。PBLにソフトウェアの機能不全が発生するか、悪意のあるプログラムが入り込んだとしても、保証済みのハードウェアにより、対応するドメインの外側への秘密漏洩は阻止される。要約すると、PBLはSBLの秘密を開示することができず、その逆も同様である。
バスアクセスコントローラのアクセス規則に関し、さらに詳述するために図4および図5を参照する。図4は、セカンダリブートローダのロード前のアクセス規則に対応する図であり、図5は、セカンダリブートローダのロードおよび認証後のアクセス規則に対応する図である。これらの図4および図5は、構成部品の耐用寿命が尽きるまで規則が封印されるように、バスアクセスコントローラ内でハードワイヤードにすることによって実装される。先に示したように、バスアクセスコントローラ103は、バスおよび処理された命令を監視する。バスアクセスコントローラ103は、現在実行されている命令がどの領域からのものかを常に把握している。命令元の領域に応じて、他の領域に何らかの権限が付与される。表において、Rは、読み取り動作に関するアクセス権が認められていることを示し、Wは、書き込み動作に関するアクセス権が認められていることを示し、Xは、将来の実行という観点でのフェッチ動作が認められていることを示す。
見て取れるように、図4および図5を定義している権限は、その領域内においてのみ命令の実行を許可するものである。両図面の唯一の相違は、PBL領域からSBL領域へのアクセス権のみである。図4において、PBL領域は、SBL領域にプログラムパッケージをダウンロードし、ロードが実行されたことを確認するために、読み取りと書き込みに関する、SBL領域にアクセスする権限を有する。パッケージはダウンロード後に認証が行われ、認証に成功すれば、バスアクセスコントローラの不揮発性ビットが変更され、図5に示すように、PBL領域からSBL領域へのアクセスが禁止される。
このようなメモリマッピングは、当業者であれば、セキュリティのレベルや何らかの選択に応じて修正することが可能である。本明細書の例では、OS領域はSBL領域から隔てられている。SBL領域は、OS領域での読み取りと書き込みに関するアクセス権を有する。これは、OSのすべてのアップデートは、セカンダリブートローダを通じて行う必要があるためである。OS領域に関しても、特に、ソフトウェアアプリケーションをロードするのに必要となり得るSBL領域からの何らかの情報を使用するために、SBL領域に対するアクセス権が付与されている。これら2つの対応するドメインが同一ドメインとなり得ることを考えれば、SBL領域とOS領域の両方を1つの領域として定めることも可能である。このようなことが可能である理由は、全く同じブートローダソフトウェアによってオペレーティングシステムが安全にロードされることをOSメーカへ保証するために、セカンダリブートローダがOSメーカによって作成されたものとなるからである。オペレーティングシステムとセカンダリブートローダの間のファイアウォールは、ソフトウェアによって作成され得る。
理解されるように、何らかのデータを、ある領域から別の領域に共有領域を経由して渡すことが可能である。このようなメカニズムを用いることにより、データだけがある領域から別の領域へと正しく転送される。加えて、データを受信する領域は、受信したデータに対する完全な制御権を有する。なぜなら、受信したデータは、通常、前記領域のプログラムによって読み取られるからである。とはいえ、バスアクセスコントローラ103が権限違反を検出するか、処理ユニットに障害が検出された場合、共有メモリは完全に消去される。セキュア素子100は、このようなセキュア素子用として既に知られているものに倣った、物理的攻撃を検出するためのいくつかのセキュリティセンサを任意で備えてもよい。セキュリティセンサが潜在的な攻撃を検出した場合も、やはり共有メモリは消去される。
ある領域から別の領域への切り換えを行うために、2つのメカニズムが考えられる。第1のメカニズムは、最終的には共有メモリ内に何らかのデータとともに機能を起動することに対応するポインタをロードし、次いで、選択された領域への切り換えを示す割り込みをアクティブ化するというものである。領域のアクティブ化により、ポインタと最終データの読み取りが可能となる。読み取りの後、その領域において、指定された機能を起動するためにポインタの検証が行われる。
もう1つのメカニズムは、各領域に1つまたは複数のエントリポイントを定義するというものである。これらのエントリポイントは、一般的なアクセス規則に対する認可された例外となるように、バスアクセスコントローラによって識別される、特定のアドレスに相当し得る。当然ながら、補完データは共有メモリを通過することになる。
先に触れたように、MZ領域には、チップのセキュリティ機能が含まれる。MZ領域には、1つまたは複数の暗号化機能のコードとともに、セキュア素子によって使用されるキーが含まれる。同様に、暗号コプロセッサは、通常、MZドメインの中だけで動作する。また、SBLドメインにロードされたコードの認証、SBL領域の消去、バスアクセスコントローラの不揮発性ビットのロックおよびロック解除など、いくつかの他の機能もMZドメイン専用となる。MZ領域は、完全にICの製造業者の制御下にあり、同業者のソフトウェアを用いて保証される、保証されたドメインとなるべきである。コードが修正されることはないため、不揮発性メモリの一部をROMタイプとすることができる。あるいは、MZに含み入れられる何らかの機能が、いくつかの機能を実行するために、処理ユニットの代わりに動作する何らかのハードワイヤードなステートマシンを起動させてもよい。
暗号処理はすべてMZ領域内で行われ、MZ領域はすべてのキーをアクセス権の表とともに記憶する。一例として、図6は、以下で説明するインストール処理中に使用される、3つのキーに関する表である。第1のキーKPBLは、ロードされるプログラムパッケージがロードされる権限を有するということを認証し、PBL領域が修正されていないということを認証し、さらにセカンダリブートローダを暗号化するためのキーである第2のキーKSBLを復号するために、プライマリブートローダに割り当てられるキーである。優先的には、第3のキーKOEMは、メモリ消去など、何らかの機能の起動用に使用される。2つの異なるアルゴリズムを使用する可能性のある、2つの異なる機能に対する管理能力の分離を認可するという形で、第1のキーおよび第3のキーは独立したキーとされ、これらの2つのキーKPBLおよびKOEMは、ICの製造業者によって直接ロードされる。一変形形態では、第1および第3のキーの代わりとして、1つのキーを持つことも可能である。
図6に示すように、各キーはいくつかのドメインに対して利用可能であり、他のドメインには利用不可となっている。すべての暗号処理がMZ領域内で行われることを考慮し、キーは常時MZ領域内に残存しているが、それらのキーが使用できるのは、認可された領域から処理が起動された場合だけである。どのような場合であっても、MZ領域内で登録されたキーがMZ領域外に行くことはなく、キーの使用はすべて、MZ領域内で実行されなくてはならない。第1のキーKPBLは、SBL領域から、またはMZ領域から要求された処理に対して利用可能であるが、この第1のキーKPBLは、これら以外の領域からの要求では使用することはできない。第2のキーKSBLは、SBL領域、MZ領域、およびOS領域に対して利用可能であり、他の領域には利用できない。第3のキーKOEMは、PBL領域とMZ領域に対して利用可能となる。
インストール処理について、図7のアルゴリズムを参照しつつ説明する。処理は、ステップ700において、セキュア素子に電源が投入された後に開始する。電圧が作動レベルに達したとみなされたとき、ステップ701において、初期化が実行される。このステップは、主に、部品のすべてのバッファをリセットし、テスト702に相当する命令に、PBL領域内のプログラムポインタを位置合わせするものである。テスト702は、セカンダリブートローダ(SBL)がアクティブか否かを示す、不揮発性メモリ内のフラグを確認するものである。SBLがアクティブでなければ、セキュア素子100は、待機状態703に移行する。待機状態はアイドル状態であり、この状態において、通信インターフェイス104からの割り込みは、次のステップであるテスト704に移行してよいというコマンドを受信したことを意味する。テスト704は、受信したコマンドが消去(Erase)コマンドかどうかを検証する。コマンドが消去コマンドでなければ、テスト705が、そのコマンドがロード(Load)コマンドかどうかを検証する。コマンドがロードコマンドでなければ、テスト706が、そのコマンドがインストール(Install)コマンドかどうかを検証する。コマンドがインストールコマンドでなければ、次のコマンドを受信するまで、処理はアイドルステップ703に戻る。
当業者であれば、ホストから到来する3つのコマンドにだけ、プライマリブートローダが反応することに留意し得る。これら3つのコマンドは、プログラムのロードに必要な最小限のコマンドセットである。攻撃の潜在的なリスクを減らすために、PBLは、コマンドの数を最小に抑え、考えられる最小サイズにすることが不可欠である。
受信したコマンドが消去コマンドである場合、消去ステップ707が実行される。この消去ステップ707の間、PBLは、認証トークンを検証することになる。一例として、認証トークンは、第3のキーKOEMを用いて暗号化された乱数を含み得る。暗号化の方法は、たとえば、AESアルゴリズムとすることができる。PBL領域は、MZ領域に対し、第3のキーKOEMを用いた番号についてのAESの計算、または暗号化された数字の復号のいずれかを一時的に要求する。次いで、結果がトークンの他の部分と比較される。トークンが認証された場合、SBL領域およびOS領域のすべての不揮発性メモリは消去される。ステップ707を終了するために、2つの不揮発性フラグが上書きされ、一方はSBLはアクティブではないと示し、もう一方は不揮発性メモリは消去されたと示すものとなる。その後、処理はアイドルステップ703に戻ることができる。
受信したコマンドがロードコマンドである場合、テスト708が実行される。テスト708は、メモリが正しく消去されたか否かを示す、フラグの状態の検証のみを行う。メモリが正しく消去されていない場合、処理はアイドルステップ703に戻る。メモリが消去されていれば、ロードステップ709が開始され、そのステップにおいて、不揮発性フラグにより、メモリがそれ以上消去されないことが示され、通信インターフェイスから到来するプログラムパッケージのロード分がSBL領域にロードされる。当業者であれば、このステップ709の間、SBLがアクティブではないことから、PBL領域はSBL領域にアクセス可能であることに留意し得る。
プログラムパッケージには、暗号化されたSBLのコード、認証トークン、および第2のキーKSBLが含まれる。このようなプログラムパッケージの作成には多数の代替形態が存在するが、主に1つの例だけを詳述するものとする。暗号化されたコードは、たとえば、第2のキーKSBLを用いてAESアルゴリズムによって暗号化されたものである。認証トークンに関しては、コードの完全性を検証可能なトークンを定義し、またコードがロード可能なものであることが重要である。第2のキーKOEMを暗号化するために、やはり第1のキーKPBLを使用するべきであるが、OSの製造業者にキーKPBLが知れてはならない。このようなメカニズムを可能にするためには、ICの製造業者は、2つの情報から成る対で構成される識別情報を提供しなくてはならない。このとき、情報の一方は、番号RPBLであり、他方は、第1のキーKPBLを用いてAESアルゴリズムで暗号化されたRPBLに相当する暗号化された番号CPBLである。第2のキーKSBLを暗号化する1つの方法は、情報RPBL、すなわち、パッケージ内に渡された情報CPBLを用いて暗号文を作成することである。次いで、情報CPBLに置き換わる情報RPBLも併せたパッケージ全体のハッシング関数を作成する、パッケージの署名を作成することができる。
この例を、式を用いて明瞭にするために、ICの製造業者は、OSの製造業者に対し、以下の情報の対を供与する。
{CPBL;RPBL
このとき、
PBL=AES[KPBL](RPBL
PBL=AES−1[KPBL](CPBL
パッケージは、以下の情報の群に相当する。
{EC;CPBL;CKSBL;XSBL
このとき、
− ECは暗号化されたコードであり、
EC=AES[KSBL](コード)
− CKSBLは第2のキーKSBLの暗号文であり、
CKSBL=KSBL XOR RPBL
− XSBLはパッケージの署名である。
SBL=SHA256(EC;RPBL;CKSBL
SHA256は、256ビットの安全なハッシュ値であり、当業者によく知られたものである。
この場合の認証トークンは、パッケージ内部に送信された対{CPBL;XSBL}である。
当然ながら、将来的に実現し得る他の暗号化がなされてもよい。対称鍵であるAESの代わりに、RSAを用いた公開鍵基盤を利用することも可能である。OSの製造業者に第1のキーKPBLを与えることなくキーKPBLを用いて、コードの認証および第2のキーKSBLの暗号化を可能とすることに意義がある。
SBL領域にロードされたプログラムパッケージの開示後は、図7の処理の開示を継続することはより容易となる。インストールコマンドを受信すると、プライマリブートローダは、MZ領域によって実行される、認証ステップ710を起動する。認証ステップ710は、パッケージの完全性および認証のチェックを目的としたものであるが、PBL領域の完全性の検証、PBL領域のSBL領域に対するアクセスのロック、および最後にコードの復号も行わなくてはならない。
情報の対{CPBL;RPBL}およびパッケージ{EC;CPBL;CKSBL;XSBL}を考慮に入れ、MZ領域は、KPBLを用いてRPBLを計算するために、CPBLを読み取る。次いで、署名XSBLが正しいことを検証するために、署名が計算される。署名XSBLが正しくなければ、エラーメッセージが通信インターフェイス104に送信され、SBL領域およびOS領域のメモリは消去される。署名XSBLが正しいということは、パッケージが認証されるという意味であり、その場合、PBL領域からSBL領域にアクセスがなされないように、SBLが認証されたことを示す不揮発性フラグが立てられる。コードを復号するに先立ち、PBL領域の完全性の検証についてもチェックされる。このチェックは、たとえば、すべてのPBL領域に対してSHA256を実行し、MZ領域に事前に記録された署名を用いて比較を行うことによって実行される。部品の完全性は確かなものであるため、第2のキーKSBLはCKSBLから抽出され、MZ領域に記憶される。
最後に、MZは、第2のキーKSBLを用いてコードを復号する復号ステップ711に向けて、SBL領域への切り換えを行う。
SBLがアクティブになると、処理はテスト712の実行に向けて継続される。テスト712は、オペレーティングシステムがインストールされているか否かを検証するものである。セカンダリブートローダのコード機能は、主に、オペレーティングシステム用の安全なブートローダを提供するためのものである。よって、OSがロードされていなければ、OS領域にOSをロードするために、ロードステップ713が実行される。セカンダリブートローダによるOSのインストールは、OSメーカによって実行され、保証されるものであるため、OSのロードはさらに複雑なものとなる可能性もあり、アプリケーションに対するソフトウェアファイアウォールを定義することも可能である。OSがセカンダリブートローダによってのみロードされ得るという事実は、OSのロードをより安全なものにする。特に、同一のキーKSBLを、オペレーティングシステムのパッケージの復号のために使用することも可能である。OSのロード後、OSはアクティブとなり、OSおよびインストールされたアプリケーションを実行することが可能となる。
本発明のさらなる利点の1つは、本発明のセキュア素子を含むデバイスは、異なるソースに由来し、同一のOSを必ずしも使用する必要のない、異なるアプリケーションを実装可能であるという点である。その場合、アプリケーションと、OSと、ブートローダとの暗号化されたバックアップをホスト上で実行することができ、メモリは、そのOSおよびそのアプリケーションを用いて別のセカンダリブートローダを受信するために、完全に消去され得るものとなる。
当業者であれば、添付される特許請求の範囲において定義される本発明の範囲を変更することなしに、例示した実施形態に修正を加えることが可能であることを理解されよう。

Claims (14)

  1. 少なくとも1つのプロセッサ(101)と、少なくとも1つの通信インターフェイス(104)と、少なくとも1つのメモリ(105、106、RAM、NVM)と、少なくとも1つのバスアクセスコントローラ(103)とを備える、セキュア素子デバイス(100)であって、バスアクセスコントローラ(103)が、少なくとも、第1の領域(PBL領域)、第2の領域(SBL領域)、および安全な領域(MZ領域)を定義し、
    − 第1の領域が、第2の領域にプログラムパッケージをロードすることが可能な、第1のローダプログラムを含み、
    − 安全な領域が、第2の領域にロードされたプログラムパッケージを認証することが可能な、認証キー(KPBL)を含み、
    − 第2の領域にロードされたプログラムパッケージの認証後、第1の領域内のプログラムが第2の領域にそれ以上アクセスすることができなくなるように、第1のローダプログラムのアクセス権が変更される
    ことを特徴とする、セキュア素子デバイス(100)。
  2. 第2の領域にロードされたプログラムパッケージが、認証キー(KPBL)によって認証可能なロードされたプログラムパッケージの署名を含む、認証トークン(CPBL、XSBL)を含む、請求項1に記載のセキュア素子デバイス。
  3. ロードされたプログラムパッケージが、認証キーを用いて暗号化される第2のキー(KSBL)を含み、第2のキーが、プログラムパッケージ(EC)の少なくとも一部を復号するために使用される、請求項1に記載のセキュア素子デバイス。
  4. 第2の領域にロードされたプログラムパッケージが、第2のローダプログラムを含む、請求項1に記載のセキュア素子デバイス。
  5. バスアクセスコントローラ(104)が、第2のローダプログラムによってのみロード可能な、第3の領域(OS領域)を定義する、請求項4に記載のセキュア素子デバイス。
  6. 第2のローダプログラムによって行われる後続のロードが、第2のキーを用いて復号がなされる、暗号化された様式で実行される、請求項3および4に記載のセキュア素子デバイス。
  7. 第2のキーが、安全な領域に記憶される、請求項3に記載のセキュア素子デバイス。
  8. バスアクセスコントローラが、別の領域で動作する任意のプログラムから読み取りおよび書き込みモードでアクセス可能な中立領域(共有領域)を定義し、前記中立領域が、領域間でデータを渡すために使用され、バスアクセスコントローラによってアクセス権の違反が検出された場合、中立領域内のすべてのデータが消去される、請求項1に記載のセキュア素子デバイス。
  9. 安全な領域が、別の領域から起動可能であるが、実行は安全な領域においてのみなされる、暗号化および復号に関する安全な機能を含む、請求項1に記載のセキュア素子デバイス。
  10. 第2の領域の消去の完了後、第1のローダプログラムが、再度第2の領域にアクセス可能となる、請求項1に記載のセキュア素子デバイス。
  11. 第3の領域が、第2の領域と同時に消去される、請求項5および10に記載のセキュア素子デバイス。
  12. 第2の領域の消去が、通信インターフェイスに接続されたホストデバイスからの消去に関する認証の後にだけ実行可能である、請求項10に記載のセキュア素子デバイス。
  13. 請求項1から12のいずれか一項に記載のセキュア素子デバイスを備えることを特徴とする、集積回路。
  14. いくつかの回路を備えるシステムオンチップであり、回路のうちの1つがセキュア素子デバイスである、請求項13に記載の集積回路。
JP2017534959A 2014-12-30 2015-12-16 セキュア素子 Active JP6636028B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP14307208.0 2014-12-30
EP14307208.0A EP3040896A1 (en) 2014-12-30 2014-12-30 Secure element
PCT/EP2015/080104 WO2016107749A1 (en) 2014-12-30 2015-12-16 Secure element

Publications (2)

Publication Number Publication Date
JP2018508063A true JP2018508063A (ja) 2018-03-22
JP6636028B2 JP6636028B2 (ja) 2020-01-29

Family

ID=52394064

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017534959A Active JP6636028B2 (ja) 2014-12-30 2015-12-16 セキュア素子

Country Status (6)

Country Link
US (1) US11481523B2 (ja)
EP (2) EP3040896A1 (ja)
JP (1) JP6636028B2 (ja)
KR (1) KR102324328B1 (ja)
CN (1) CN107223252B (ja)
WO (1) WO2016107749A1 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10909248B2 (en) 2017-06-29 2021-02-02 Microsoft Technology Licensing, Llc Executing encrypted boot loaders
US10819680B1 (en) * 2018-03-08 2020-10-27 Xilinx, Inc. Interface firewall for an integrated circuit of an expansion card
GB2579034B (en) * 2018-11-15 2021-05-05 Trustonic Ltd Software installation method
CN109886035B (zh) * 2019-05-06 2019-08-13 上海燧原智能科技有限公司 芯片访问安全的控制装置及芯片系统
CN117610089B (zh) * 2024-01-23 2024-03-26 上海励驰半导体有限公司 多核异构芯片的加密方法、系统、设备和存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005523537A (ja) * 2002-04-18 2005-08-04 インターナショナル・ビジネス・マシーンズ・コーポレーション データ・アクセス制御機能を使用した、統合システム内でのセキュア動作の初期化、維持、更新および回復
JP2006323814A (ja) * 2005-01-07 2006-11-30 Microsoft Corp 信頼できる処理モジュールを有するコンピュータを安全にブートするためのシステムおよび方法
WO2013190598A1 (ja) * 2012-06-21 2013-12-27 パイオニア株式会社 放送受信装置のプログラム書き換え方法、放送受信装置およびプログラム
JP2014098951A (ja) * 2012-11-13 2014-05-29 Kddi Corp 端末装置、完全性検証システム、およびプログラム

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004199138A (ja) * 2002-12-16 2004-07-15 Matsushita Electric Ind Co Ltd メモリデバイスとそれを使用する電子機器
CN1574370A (zh) * 2003-05-30 2005-02-02 松下电器产业株式会社 固体摄像器件
US6961852B2 (en) * 2003-06-19 2005-11-01 International Business Machines Corporation System and method for authenticating software using hidden intermediate keys
JP4625341B2 (ja) 2005-01-31 2011-02-02 新日本製鐵株式会社 再生セラミックファイバーを用いた施工方法及びこれを用いた成形体並びにその積層方法
WO2006137073A2 (en) * 2005-06-22 2006-12-28 Discretix Technologies Ltd. System, device, and method of selectively allowing a host processor to access host-executable code
JPWO2007011001A1 (ja) * 2005-07-22 2009-02-05 パナソニック株式会社 実行装置
US7734827B2 (en) * 2005-09-27 2010-06-08 Sony Computer Entertainment, Inc. Operation of cell processors
JP4740926B2 (ja) * 2007-11-27 2011-08-03 フェリカネットワークス株式会社 サービス提供システム、サービス提供サーバ、及び情報端末装置
US20090199014A1 (en) * 2008-02-04 2009-08-06 Honeywell International Inc. System and method for securing and executing a flash routine
KR101288700B1 (ko) * 2008-03-14 2013-08-23 미쓰비시덴키 가부시키가이샤 멀티 오퍼레이팅 시스템(os) 기동 장치, 컴퓨터 판독 가능한 기록 매체 및 멀티 os 기동 방법
US8219772B2 (en) * 2009-07-02 2012-07-10 Stmicroelectronics (Research & Development) Limited Loading secure code into a memory
US9177152B2 (en) * 2010-03-26 2015-11-03 Maxlinear, Inc. Firmware authentication and deciphering for secure TV receiver
US8983870B2 (en) * 2010-08-18 2015-03-17 Snap-On Incorporated Apparatus and method for managing software applications using partitioned data storage devices
JP5824977B2 (ja) * 2011-08-31 2015-12-02 株式会社リコー 鍵ペア管理プログラム、鍵ペア管理方法及び画像形成装置
EP2618266A4 (en) * 2011-11-04 2015-08-05 Sk Planet Co Ltd PROCESS FOR COOPERATION BETWEEN A SAFE REGION AND AN UNCERTAIN REGION, METHOD, SERVER AND DEVICE FOR CONTROLLING THE DOWNLOAD OF SAFE APPLICATIONS AND CONTROL SYSTEM FOR USING THIS METHOD
US9413538B2 (en) * 2011-12-12 2016-08-09 Microsoft Technology Licensing, Llc Cryptographic certification of secure hosted execution environments
KR101859646B1 (ko) * 2011-12-16 2018-05-18 삼성전자주식회사 보안 데이터를 보호하는 메모리 장치 및 보안 데이터를 이용한 데이터 보호 방법
US8925098B2 (en) * 2012-11-15 2014-12-30 Elwha Llc Data security and access tracking in memory
US9223942B2 (en) * 2013-10-31 2015-12-29 Sony Corporation Automatically presenting rights protected content on previously unauthorized device
US9213653B2 (en) * 2013-12-05 2015-12-15 Intel Corporation Memory integrity
TW201530344A (zh) * 2014-01-21 2015-08-01 hong-jian Zhou 應用程式存取保護方法及應用程式存取保護裝置
US9755831B2 (en) * 2014-01-22 2017-09-05 Qualcomm Incorporated Key extraction during secure boot
TWI533160B (zh) * 2014-11-26 2016-05-11 緯創資通股份有限公司 電子系統、電子裝置及其存取認證方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005523537A (ja) * 2002-04-18 2005-08-04 インターナショナル・ビジネス・マシーンズ・コーポレーション データ・アクセス制御機能を使用した、統合システム内でのセキュア動作の初期化、維持、更新および回復
JP2009032282A (ja) * 2002-04-18 2009-02-12 Internatl Business Mach Corp <Ibm> データ・アクセス制御機能を使用した、統合システム内でのセキュア動作の初期化、維持、更新および回復
JP2006323814A (ja) * 2005-01-07 2006-11-30 Microsoft Corp 信頼できる処理モジュールを有するコンピュータを安全にブートするためのシステムおよび方法
WO2013190598A1 (ja) * 2012-06-21 2013-12-27 パイオニア株式会社 放送受信装置のプログラム書き換え方法、放送受信装置およびプログラム
JP2014098951A (ja) * 2012-11-13 2014-05-29 Kddi Corp 端末装置、完全性検証システム、およびプログラム

Also Published As

Publication number Publication date
CN107223252A (zh) 2017-09-29
EP3241143B1 (en) 2022-09-21
EP3040896A1 (en) 2016-07-06
US11481523B2 (en) 2022-10-25
KR20170102285A (ko) 2017-09-08
EP3241143A1 (en) 2017-11-08
US20170364711A1 (en) 2017-12-21
CN107223252B (zh) 2021-01-12
WO2016107749A1 (en) 2016-07-07
KR102324328B1 (ko) 2021-11-09
JP6636028B2 (ja) 2020-01-29

Similar Documents

Publication Publication Date Title
US11562075B2 (en) Secure booting method, apparatus, device for embedded program, and storage medium
TWI524275B (zh) 儲存裝置及操作一儲存裝置之方法
TWI391864B (zh) 臨界保全參數之產生及用於智慧卡記憶體模組的交換系統與方法
TWI438686B (zh) 用於使用狀態確認來保護作業系統啟動過程的系統及方法
US11455397B2 (en) Secure boot assist for devices, and related systems, methods and devices
JP6636028B2 (ja) セキュア素子
US8060925B2 (en) Processor, memory, computer system, and method of authentication
CN102063591B (zh) 基于可信平台的平台配置寄存器参考值的更新方法
WO2019185125A1 (en) Trusted execution environment instances licenses management
US20070162964A1 (en) Embedded system insuring security and integrity, and method of increasing security thereof
US20090285390A1 (en) Integrated circuit with secured software image and method therefor
JP4791250B2 (ja) マイクロコンピュータおよびそのソフトウェア改竄防止方法
JP2016146618A (ja) 情報処理装置
KR101954439B1 (ko) 이중보안기능을 가지는 SoC 및 SoC의 이중보안방법
WO2019059148A1 (ja) Bios管理装置、bios管理システム、bios管理方法、及び、bios管理プログラムが格納された記録媒体
CN113094720A (zh) 安全地管理密钥的设备和方法
CN111695164A (zh) 电子设备及其控制方法
KR101711926B1 (ko) 보안기능을 가지는 SoC 및 SoC의 보안방법
CN110059489B (zh) 安全电子设备
CN116257839A (zh) 升级签名固件的方法、电子设备和存储介质

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20181002

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190729

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190820

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20191108

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20191119

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20191217

R150 Certificate of patent or registration of utility model

Ref document number: 6636028

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250