JP7428049B2 - Devices, secure elements and device secure boot methods - Google Patents
Devices, secure elements and device secure boot methods Download PDFInfo
- Publication number
- JP7428049B2 JP7428049B2 JP2020061466A JP2020061466A JP7428049B2 JP 7428049 B2 JP7428049 B2 JP 7428049B2 JP 2020061466 A JP2020061466 A JP 2020061466A JP 2020061466 A JP2020061466 A JP 2020061466A JP 7428049 B2 JP7428049 B2 JP 7428049B2
- Authority
- JP
- Japan
- Prior art keywords
- bootloader
- secure element
- information
- verification
- verification key
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims description 66
- 238000012795 verification Methods 0.000 claims description 166
- 230000006870 function Effects 0.000 claims description 54
- 230000008569 process Effects 0.000 claims description 54
- 230000015654 memory Effects 0.000 claims description 23
- 238000004891 communication Methods 0.000 claims description 22
- 230000000717 retained effect Effects 0.000 claims description 12
- 238000010586 diagram Methods 0.000 description 14
- 238000005516 engineering process Methods 0.000 description 6
- 230000004913 activation Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000008685 targeting Effects 0.000 description 1
- 238000010200 validation analysis Methods 0.000 description 1
Images
Description
本発明は、デバイス、セキュアエレメント及びデバイスのセキュアブート方法に関する。 The present invention relates to a device, a secure element, and a secure boot method for a device.
IoTデバイスにおけるセキュリティ確保の技術として、セキュアブートと呼ばれる技術が普及し始めている。セキュアブートとは、PC等のデバイス起動時に、予めデジタル署名が施されたソフトウェアしか実行できないようにすることで、不正なソフトウェアによるデバイスの起動を防止するための技術である。 A technology called secure boot is beginning to become popular as a technology for ensuring security in IoT devices. Secure boot is a technology that prevents unauthorized software from starting a device by only allowing software that has been digitally signed in advance to be executed when a device such as a PC is started.
特許文献1には、ブートローダによるセキュアブートの技術の一例が開示されている。セキュアブートの技術では、電源投入時、ブートローダは、セキュアブートにおける信頼の基点(Root of Trust)となっている。このようなセキュアブートでは、例えば、ブートローダは、Root of Trustコードを検証し、検証が成功した場合、Root of Trustコードを実行する。Root of Trustコードは、OSの実行イメージを検証し、検証が成功した場合、OSを実行し、OSの起動処理が完了した時点でブート完了となる。 Patent Document 1 discloses an example of a secure boot technique using a boot loader. In secure boot technology, when power is turned on, the boot loader serves as the root of trust in secure boot. In such a secure boot, for example, the bootloader verifies the Root of Trust code and executes the Root of Trust code if the verification is successful. The Root of Trust code verifies the execution image of the OS, and if the verification is successful, executes the OS, and the boot is completed when the OS startup process is completed.
しかし、従来のセキュアブートの技術には、以下のような問題が残存する。鍵による検証や復号を行わせて実行コードの正当性を検証する場合、別々の媒体に保持されている鍵と実行コードに強い関連性が発生し、更新する場合には、両者の更新が必要となる。また、IoTデバイスは、一般に長期間、場合によっては無人で連続稼働することもあり、鍵を保持するには耐タンパ性が求められる。また、公開鍵に基づくソフトウェア検証を行う場合、鍵とソフトウェアの両方を改ざんして正当な検証が行われたように見せかけることが可能となる。さらに、ブートローダを信頼できるRoot of Trustをベースとして更新させることが難しく、更新のタイミングで不正に書き換えられる余地がある。 However, the following problems remain in the conventional secure boot technology. When verifying the validity of executable code by performing verification and decryption using a key, there is a strong relationship between the key and the executable code that are stored in separate media, and when updating, it is necessary to update both. becomes. Additionally, IoT devices generally operate continuously for long periods of time, sometimes unattended, and are required to be tamper-resistant in order to retain keys. Furthermore, when performing software verification based on a public key, it is possible to falsify both the key and the software to make it appear that legitimate verification has been performed. Furthermore, it is difficult to update the bootloader based on a reliable root of trust, and there is room for unauthorized rewriting at the time of update.
本発明は、斯かる事情に鑑みてなされたものであり、より安全性の高いセキュアブートを実現できるデバイス、セキュアエレメント及びデバイスのセキュアブート方法を提供することを目的とする。 The present invention has been made in view of the above circumstances, and an object of the present invention is to provide a device, a secure element, and a secure boot method for a device that can realize a secure boot with higher safety.
本発明の実施の形態に係るデバイスは、セキュアブート機能を有するデバイスであって、ブートローダ、ブートローダ検証鍵、及びブートローダの署名を含むブートローダ情報を保持するセキュアエレメントと、初期実行コードとして、ブートローダ情報読出処理、ブートローダ検証処理、及びブートローダ実行処理を実行順序も含めて保持する書き換え不可能な不揮発性メモリとを備え、デバイス起動時に、前記ブートローダ情報読出処理を実行して、前記セキュアエレメントから前記ブートローダ情報を読み出し、前記ブートローダ検証処理は、前記ブートローダ検証鍵、及び前記ブートローダの署名を用いて前記ブートローダを検証し、検証が成功した場合、前記ブートローダ実行処理は、前記ブートローダを実行する。 A device according to an embodiment of the present invention has a secure boot function, and includes a secure element that holds boot loader information including a boot loader, a boot loader verification key, and a signature of the boot loader, and a boot loader information readout function as an initial execution code. and a non-rewritable non-volatile memory that stores processing, boot loader verification processing, and boot loader execution processing including the execution order, and executes the boot loader information read processing at the time of device startup to read the boot loader information from the secure element. The bootloader verification process verifies the bootloader using the bootloader verification key and the bootloader signature, and if the verification is successful, the bootloader execution process executes the bootloader.
本発明の実施の形態に係るセキュアエレメントは、セキュアブート機能を有するデバイスに実装されるセキュアエレメントであって、ブートローダ、ブートローダ検証鍵、及びブートローダの署名を含むブートローダ情報を保持し、デバイス起動時に、前記ブートローダの検証のために前記ブートローダ情報を前記デバイスへ出力する。 A secure element according to an embodiment of the present invention is a secure element implemented in a device having a secure boot function, holds boot loader information including a boot loader, a boot loader verification key, and a signature of the boot loader, and when the device is started, The bootloader information is output to the device for verification of the bootloader.
本発明の実施の形態に係るデバイスのセキュアブート方法は、初期実行コードとして、ブートローダ情報読出処理、ブートローダ検証処理、及びブートローダ実行処理を実行順序も含めて書き換え不可能な不揮発性メモリに保持しておき、デバイス起動時に、前記ブートローダ情報読出処理を実行して、セキュアエレメントから、ブートローダ、ブートローダ検証鍵、及びブートローダの署名を含むブートローダ情報を読み出し、前記ブートローダ検証処理は、前記ブートローダ検証鍵、及び前記ブートローダの署名を用いて前記ブートローダを検証し、検証が成功した場合、前記ブートローダ実行処理は、前記ブートローダを実行する。 A secure boot method for a device according to an embodiment of the present invention stores bootloader information read processing, bootloader verification processing, and bootloader execution processing, including the execution order, in a non-volatile memory that cannot be rewritten as initial execution code. and when the device is started, the boot loader information reading process is executed to read the boot loader information including the boot loader, the boot loader verification key, and the signature of the boot loader from the secure element; The bootloader execution process verifies the bootloader using the signature of the bootloader, and if the verification is successful, executes the bootloader.
本発明によれば、より安全性の高いセキュアブートを実現できる。 According to the present invention, secure boot with higher safety can be realized.
以下、本発明をその実施の形態を示す図面に基づいて説明する。図1は本実施の形態の鍵、証明書及び署名のトラストチェーン(Trust Chain)を示す模式図である。本実施の形態では、IoTデバイス製造者、セキュアエレメント製造者、ブートローダ以降に実行されるソフトウェア製造者の3者がそれぞれ必要なデータを保持しつつ、対象鍵ペアを各製造者が適切に管理することで、複数のソフトウェア実装主体が協力してセキュアなブートを実現する。IoTデバイスは、例えば、OSを搭載して独立動作をすることができるデバイス(電子デバイスとも称する)であり、「モノのインターネット」(IoT)でいうところの「モノ」に該当するデバイスである。 DESCRIPTION OF THE PREFERRED EMBODIMENTS The present invention will be described below based on drawings showing embodiments thereof. FIG. 1 is a schematic diagram showing a trust chain of keys, certificates, and signatures according to this embodiment. In this embodiment, three parties, the IoT device manufacturer, the secure element manufacturer, and the software manufacturer executed after the bootloader, each maintain the necessary data, and each manufacturer appropriately manages the target key pair. This allows multiple software implementation entities to work together to achieve secure booting. An IoT device is, for example, a device (also referred to as an electronic device) that is equipped with an OS and can operate independently, and is a device that corresponds to a "thing" in the "Internet of Things" (IoT).
なお、本実施の形態では、説明を容易にするため、ブートローダ以降に実行されるソフトウェアとしてIoTデバイスOS(例えば、RTOS:Real Time Operating System、Linux(登録商標)等)を想定しているが、これらに限定されるものではなく、Dockerイメージ等のソフトウェアコンテンツ等も含め、ブートローダ以降に実行されるソフトウェアイメージ全てが含まれる。 Note that in this embodiment, for ease of explanation, an IoT device OS (for example, RTOS: Real Time Operating System, Linux (registered trademark), etc.) is assumed as the software executed after the boot loader. It is not limited to these, and includes all software images executed after the boot loader, including software contents such as Docker images.
データは、大別して、実行可能なソフトウェア、鍵、署名(証明書)の3つに分類される。まず、実行可能なソフトウェアについて説明する。 Data is broadly classified into three types: executable software, keys, and signatures (certificates). First, executable software will be explained.
実行可能なソフトウェアには、例えば、ブートローダ11、及びIoTデバイスOS12が含まれる。ブートローダ11は、IoTデバイス上でブート処理を実行するソフトウェアであり、IoTデバイスの特定の処理(ブートローダ実行機能)からOSの起動を行うためのコードである。
The executable software includes, for example, the
IoTデバイスOS12は、IoTデバイス上で実際に動作するOSであり、RTOSやRich OS(Linux等)の実行イメージに相当する。ブートローダ11、IoTデバイスOS12は、それぞれIoTデバイス製造者、IoTデバイスOSベンダが実装してもよく、ブートローダ11、IoTデバイスOS12の両方をいずれか一方の主体が実装してもよい。ブートローダ11は、セキュアエレメント製造者に提供される必要がある。
The IoT device OS 12 is an OS that actually operates on the IoT device, and corresponds to an execution image of RTOS or Rich OS (Linux, etc.). The
次に、鍵について説明する。鍵には、例えば、セキュアエレメントCA公開鍵21、セキュアエレメントCA秘密鍵22、ブートローダ検証鍵(公開鍵)23、ブートローダ署名生成鍵(秘密鍵)24、OS検証鍵(公開鍵)25、及びOS署名生成鍵(秘密鍵)26が含まれる。
Next, keys will be explained. The keys include, for example, a secure element CA
セキュアエレメントCA公開鍵21は、セキュアエレメント製造者が、セキュアエレメント個々の鍵の正当性を証明(署名検証)するための公開鍵である。セキュアエレメントCA秘密鍵22は、セキュアエレメント製造者が、セキュアエレメント個々の鍵に署名を付与するための鍵である。
The secure element CA
ブートローダ検証鍵(公開鍵)23は、セキュアエレメント製造者によって生成されたブートローダに対する署名を検証するための鍵である。ブートローダ署名生成鍵(秘密鍵)24は、セキュアエレメント製造者がブートローダに対する署名を生成するための鍵である。 The bootloader verification key (public key) 23 is a key for verifying the signature for the bootloader generated by the secure element manufacturer. The bootloader signature generation key (private key) 24 is a key used by the secure element manufacturer to generate a signature for the bootloader.
OS検証鍵(公開鍵)25は、IoTデバイスOSベンダによって生成されたIoTデバイスOSに対する署名を検証するための鍵である。OS署名生成鍵(秘密鍵)26は、IoTデバイスOSベンダがIoTデバイスOSに対する署名を生成するための鍵である。OS検証鍵(公開鍵)25は、セキュアエレメント製造者に提供される必要がある。 The OS verification key (public key) 25 is a key for verifying the signature for the IoT device OS generated by the IoT device OS vendor. The OS signature generation key (private key) 26 is a key used by the IoT device OS vendor to generate a signature for the IoT device OS. The OS verification key (public key) 25 needs to be provided to the secure element manufacturer.
次に、署名について説明する。署名は、送信内容が改ざんされたとき、受信者が改ざんされたことを分かるようにする技術である。一般的には、送信者は、データをハッシュ化してダイジェストを生成し、生成したダイジェストを秘密鍵で暗号化することで署名を生成する。送信者はデータと一緒に署名を送信する。受信者は、データと署名を受信し、データをハッシュ化してダイジェストを生成する。受信者は署名を公開鍵で復号してダイジェストを得る。2つのダイジェストを比較して一致・不一致を判定する。両者が一致していれば、データが改ざんされていないことを確認できる。 Next, signatures will be explained. A signature is a technology that allows the recipient to know that the transmitted content has been tampered with. Generally, a sender generates a signature by hashing data to generate a digest, and encrypting the generated digest with a private key. The sender sends the signature along with the data. The recipient receives the data and signature and hashes the data to generate a digest. The recipient decrypts the signature with the public key to obtain the digest. Compare the two digests to determine whether they match or do not match. If the two match, it can be confirmed that the data has not been tampered with.
署名には、例えば、ブートローダデジタル署名31、ブートローダ検証鍵証明書32、OSデジタル署名33、及びOS検証鍵証明書34が含まれる。
The signatures include, for example, a boot loader
ブートローダデジタル署名31は、ブートローダ11に対し、ブートローダ署名生成鍵(秘密鍵)24によって生成された署名である。例えば、ブートローダ11(バイナリ列)のハッシュ値をブートローダ署名生成鍵(秘密鍵)24で暗号化した値を署名とすることができる。ブートローダ検証鍵証明書32は、ブートローダ検証鍵(公開鍵)23に対し、セキュアエレメントCA秘密鍵22によって生成された署名である。例えば、ブートローダ検証鍵(公開鍵)23のハッシュ値をセキュアエレメントCA秘密鍵22で暗号化した値を署名とすることができる。
The bootloader
OSデジタル署名33は、IoTデバイスOSのイメージに対し、OS署名生成鍵(秘密鍵)26によって生成された署名である。例えば、IoTデバイスOS(バイナリ列)のハッシュ値をOS署名生成鍵(秘密鍵)26で暗号化した値を署名とすることができる。OS検証鍵証明書34は、OS検証鍵(公開鍵)25に対し、セキュアエレメントCA秘密鍵22によって生成された署名である。例えば、OS検証鍵(公開鍵)25のハッシュ値をセキュアエレメントCA秘密鍵22で暗号化した値を署名とすることができる。
The OS
本実施の形態では、署名対象のハッシュ値に対して署名生成鍵で暗号化を行うという方法で署名を生成しているが、署名生成アルゴリズムは、これに限定されるものではなく、対象鍵暗号に依拠する署名生成、検証方法であれば、いずれの方法を用いてもよい。 In this embodiment, a signature is generated by encrypting a hash value to be signed using a signature generation key, but the signature generation algorithm is not limited to this, and the signature generation algorithm is not limited to this. Any signature generation and verification method that relies on the above may be used.
署名検証は、検証鍵によって署名を復号し、署名対象と比較することで行われる。検証鍵は署名生成鍵と対向した鍵でなればならず、かつ署名生成は対向する秘密鍵を持っていなければ不可能である。よって、署名対象の検証に成功した場合、署名対象は秘密鍵を有する主体によって署名が行われ、かつ署名時点から改ざんされていないことを証明したことになる。 Signature verification is performed by decrypting the signature using a verification key and comparing it with the signature target. The verification key must be the opposite key to the signature generation key, and signature generation is impossible unless you have the opposite private key. Therefore, if the signature target is successfully verified, it is proven that the signature was signed by a subject who has a private key and that the signature target has not been tampered with since the time of signing.
本実施の形態では、(1)ブートローダ検証鍵(公開鍵)23によるブートローダデジタル署名31の検証(ブートローダ11が改ざんされていないことの証明)、(2)セキュアエレメントCA公開鍵21によるブートローダ検証鍵(公開鍵)23の検証(ブートローダ検証鍵(公開鍵)23が改ざんされていないことの証明)の2つの署名検証が実施される。これにより、ブートローダ11は、セキュアエレメント製造者が署名を施し、改ざんされていないものであり、当該検証プロセス自体も改ざんされていない(正当な検証鍵によって検証を行っている)、というTrust Chainによって正当性を確保し、セキュアブートを実現することができる。
In this embodiment, (1) verification of the boot loader
また、OSに対して検証する場合は、(1)OS検証鍵(公開鍵)25によるOSデジタル署名33の検証(OSが改ざんされていないことの証明)、(2)セキュアエレメントCA公開鍵21によるOS検証鍵(公開鍵)25の検証(OS検証鍵(公開鍵)25が改ざんされていないことの証明)、というTrust Chainによって正当性を確保する。これにより、OSはOS製造者(ベンダ)が署名を施し、改ざんされていないものであり、当該検証に用いた鍵はセキュアエレメント製造者によって検証されたことを確保することができる。
In addition, when verifying against the OS, (1) verification of the OS
図2はIoTデバイス100の構成の一例を示す模式図である。IoTデバイス100は、セキュアブートの実装対象となっているデバイスであり、例えば、RTOSやLinux等が動作する組み込みボードなどを含む。IoTデバイス100は、内部にSoC(System on Chip)50、及びセキュアエレメント60を有する。IoTデバイス100は、ユーザ認証入力デバイスを備えていてもよい。ユーザ認証入力デバイスは、IoTデバイス100の起動時、ユーザ認証を必要とする場合に、ユーザから認証情報の入力を受け付けるためのデバイスであり、例えば、PINパッド、指紋センサ等が含まれる。
FIG. 2 is a schematic diagram showing an example of the configuration of the
SoC50は、IoTデバイス100の主要な機能を保持するICチップである。SoC50は、書き換え不可能な不揮発性メモリとしてのROM51、NVM52、RAM(REE)53、及びRAM(TEE)54を有する。なお、本明細書では、書き換え不可能な不揮発性メモリの一例として、ROMを挙げて説明するが、具体的には、書き換え不可能な不揮発性メモリには、マスクROM、プログラマブルROMが含まれ、プログラマブルROMには、OTP(One Time Programmable)-ROM、EEPROM(Electronically Erasable and Programmable Read Only Memory)、書き換え不可のプロテクトを行ったフラッシュメモリなどが含まれる。ROM51として、これらのいずれを使用してもよい。セキュアエレメント60は、耐タンパ性を有するセキュリティチップであり、内部にCPU、NVM(Non-volatile memory)を有し、セキュアな不揮発性メモリを有する。セキュアエレメント60は、SoC50との間で、標準的な通信路(例えば、ISO7816/SPI/I2C等)で通信を行う。
The
ブート管理サーバ200は、外部のサーバとしての機能を有し、IoTデバイス100のセキュアブートに関連する情報を保持し、IoTデバイス100のブート状態を取得し、個別管理を行う。
The
ROM51内には、起動前ユーザ認証機能41、ブートローダ情報読出機能42、ブートローダ検証機能43、ブートローダ実行機能44、及びセキュアエレメントCA公開鍵21が保持されている。
The
起動前ユーザ認証機能41は、ユーザ認証入力デバイスからユーザ認証情報を受け取り、セキュアエレメント60との通信路を開設し、セキュアエレメント60に対してユーザ認証を求める処理を行う。
The pre-boot
ブートローダ情報読出機能42は、セキュアエレメント60との通信路を開設し、セキュアエレメント60からブートに必要な情報(ブートローダ情報)を取得する処理を行う。
The bootloader
ブートローダ検証機能43は、ブートローダデジタル署名31を利用して、復号したブートローダ11の正当性を検証する処理を行う。
The
ブートローダ実行機能44は、復号したブートローダ11に制御を渡し、ブートローダ11を実行するための処理を行う。起動前ユーザ認証機能41、ブートローダ情報読出機能42、ブートローダ検証機能43、及びブートローダ実行機能44の処理、データはIoTデバイス製造者によってROM51内に固定的に保持(格納)されている。工場出荷後は、処理の実行順序も含め、これらの処理手順、処理内容を書き換えることはできない(セキュアな状態で保持されている)。
The
NVM(Non-volatile memory)52内の情報は書き換え可能であり、工場出荷後、ユーザによって書き換えることができる。なお、NVM(Non-volatile memory)52に代えて、あるいはNVM52とともに、SDカード、eMMC(embedded Multi Media Card)等、SoC50外に保存できる記録媒体を用いてもよい。
The information in NVM (Non-volatile memory) 52 is rewritable and can be rewritten by the user after shipment from the factory. Note that instead of or together with the NVM (Non-volatile memory) 52, a recording medium that can be stored outside the
SoC50のRAMは、セキュアでない通常のメモリ領域(REE:Rich Execution Environment)53とセキュアな領域(TEE:Trusted Execution Environment)54の2つに分かれている。なお、本実施の形態では、セキュアエレメント60のブートローダ情報をRAM(TEE)54に読み込む構成としているが、RAM(TEE)54を有さず、RAM(REE)53しか有しないSoCの場合には、セキュアエレメント60のブートローダ情報をRAM(REE)53に読み込めばよい。
The RAM of the
セキュアエレメント60は、ブートローダ情報の他に、SEID、ユーザ認証情報(PIN等)を保持する。SEIDは、セキュアエレメント60を一意に識別するIDである。ブート管理サーバ200からセキュアエレメント60を特定するための値として用いることができる。ユーザ認証情報は、セキュアエレメント60がIoTデバイス100のユーザ認証を行うためにセキュアエレメント60に保持している情報であり、例えば、ユーザPINや指紋認証等の生体認証情報を保持している。
The
ブート管理サーバ200は、SEIDごとに、当該SEIDのセキュアエレメント60に保持されているブートローダのバージョンを保持するブートローダ管理テーブル、及び現時点におけるブートローダの最新バージョンなどを有する。
The
次に、本実施の形態のセキュアブートについて説明する。以下では、基本的なブートプロセス、ブートローダによる実行イメージの検証、ブートローダ読み出し前の認証、ブートローダ情報の遠隔管理、及びブートローダ情報の更新について説明する。 Next, secure boot according to this embodiment will be explained. Below, a basic boot process, verification of an executable image by the boot loader, authentication before reading the boot loader, remote management of boot loader information, and updating of the boot loader information will be explained.
図3は基本的なブートプロセスの一例を示す説明図である。以下、符号P1~P9で示す処理について説明する。 FIG. 3 is an explanatory diagram showing an example of a basic boot process. The processes indicated by symbols P1 to P9 will be described below.
P1(電源の投入):IoTデバイス100のユーザは、IoTデバイス100の電源を投入する。なお、IoTデバイスによっては、電源の投入の他に、再起動などの動作でもよい。
P1 (power on): The user of the
P2(ブートローダ情報読出機能の実行):IoTデバイス100の電源が投入されると、初期実行コードであるブートローダ情報読出機能42の実行を開始する。
P2 (Execution of bootloader information reading function): When the power of the
P3(ブートローダ情報取得指示):ブートローダ情報読出機能42は、セキュアエレメント60との通信機能を有効化し、セキュアエレメント60に情報取得用コマンドを送出する。
P3 (Bootloader information acquisition instruction): The bootloader
P4(ブートローダ情報取得):セキュアエレメント60は、レスポンスとして、ブートローダ11、ブートローダ検証鍵(公開鍵)23、ブートローダデジタル署名31、ブートローダ検証鍵証明書32、OS検証鍵(公開鍵)25、及びOS検証鍵証明書34(これらを纏めてブートローダ情報ともいう)を返送する。ブートローダ情報読出機能42は、ブートローダ情報をSoC50内のRAM上の指定された領域(ここでは、RAM(TEE)54)に配置する。
P4 (Bootloader information acquisition): The
P5(ブートローダ検証機能の実行):ブートローダ情報読出機能42の末尾で、ブートローダ検証機能43へ制御を移行し、ブートローダ情報読出機能42を実行する。
P5 (Execution of bootloader verification function): At the end of the bootloader
P6(ブートローダ検証鍵の正当性検証):ブートローダ検証機能43は、ブートローダ11自身の検証に先立って、ブートローダ検証鍵(公開鍵)23の正当性を検証する。具体的には、IoTデバイス100がROM51に保持しているセキュアエレメントCA公開鍵21を用いて、ブートローダ検証鍵証明書32内の署名を復号し、ブートローダ検証鍵(公開鍵)23との比較を行う。両者が一致した場合のみ検証が成功したとみなす。両者が不一致等、検証が失敗した場合は、ここでコードの実行を停止し、IoTデバイス100の電源を切る。
P6 (Verification of validity of bootloader verification key): The
P7(デジタル署名によるブートローダの検証):ブートローダ検証機能43は、RAM(TEE)54の所定位置に配置されたブートローダデジタル署名31を使って、復号したブートローダ11を検証する。ここでは、ブートローダデジタル署名31をブートローダ検証鍵(公開鍵)23により復号するとともに、ブートローダ11のハッシュ値を求め、両者が一致するか否かに応じて検証する。両者が一致した場合のみ検証が成功したとみなす。両者が不一致等、検証が失敗した場合は、ここでコードの実行を停止し、IoTデバイス100の電源を切る。
P7 (Verification of bootloader using digital signature): The
P8(ブートローダ実行機能の実行):検証が成功した場合、ブートローダ検証機能43の末尾で、ブートローダ実行機能44へ制御を移行し、ブートローダ実行機能44を実行する。
P8 (Execution of bootloader execution function): If the verification is successful, control is transferred to the
P9(ブートローダの実行):ブートローダ実行機能44は、RAM(TEE)54の所定の場所に配置された検証済のブートローダ11を実行する。
P9 (bootloader execution): The
上述の例において、電源投入時における初期実行コードの設定は、IoTデバイス製造者によってROM51上に設定され、以降第三者によって変更することはできない。また、初期実行コードは、ブートローダ情報読出機能42であり、この設定はROM51上に焼き付けられた固定値になっている。また、ブートローダ11の検証処理は、対象鍵(公開鍵)による署名検証を実行しているが、署名生成に関するアルゴリズムと同様、当該アルゴリズムに対応した検証方法であれば、いずれの方法でもよい。
In the above example, the initial execution code settings at power-on are set on the
図3に例示した処理は、ブートローダ11の正当性を検証するための処理であるが、基本的にブートローダ11はそれ単体ではIoTデバイス100の機能を実現することができない。IoTデバイスの機能を実現するためには、ブートローダ11はOS等の後続のソフトウェア(ブートローダ11以降のソフトウェア)を起動させる必要がある。
The process illustrated in FIG. 3 is a process for verifying the validity of the
本実施の形態では、後続のソフトウェアはIoTデバイス100上に予めデプロイしておく(セキュアエレメント60には保持しない)ことを前提としているが、ブートローダ11から、そのままIoTデバイス100上にデプロイされているソフトウェアを実行するだけでは、当該ソフトウェアが改ざんされていることを検知できず、セキュリティ上の脆弱性が残る。以下では、セキュアエレメント60内に後続のソフトウェアを検証する鍵を保持しつつ、ブートローダ11から後続のソフトウェアを検証するロジックを実行することで、セキュアエレメント60、ブートローダ11、及び後続のソフトウェアの3者にTrust Chainを繋ぎ、後続のソフトウェアの正当性を確保することができる処理について説明する。
In this embodiment, it is assumed that the subsequent software is deployed on the
図4はブートローダによる実行イメージの検証の一例を示す説明図である。以下、符号P1~P12で示す処理について説明する。なお、P1からP9までの処理は、図3の場合と同様であるので、説明は省略し、P10からP12について説明する。 FIG. 4 is an explanatory diagram showing an example of verification of an execution image by a boot loader. The processes indicated by symbols P1 to P12 will be explained below. Note that since the processing from P1 to P9 is the same as that in the case of FIG. 3, the explanation will be omitted, and the processing from P10 to P12 will be explained.
P10(OS検証鍵の正当性検証):ブートローダ11は、IoTデバイス100自身の検証に先立って、OS検証鍵(公開鍵)25の正当性を検証する。具体的には、IoTデバイス100がROM51に保持しているセキュアエレメントCA公開鍵21を用いて、OS検証鍵証明書34内の署名を復号し、OS検証鍵(公開鍵)25との比較を行う。両者が一致した場合のみ検証が成功したとみなす。両者が不一致等、検証が失敗した場合は、ここでコードの実行を停止し、IoTデバイス100の電源を切る。
P10 (Verification of validity of OS verification key): The
P11(IoTデバイスOSの検証):ブートローダ11は、OS検証鍵(公開鍵)25を用いてNVM52上のIoTデバイスOS12の検証を行う。ブートローダ11自身の検証と同様、OSデジタル署名33をOS検証鍵(公開鍵)25で復号するとともに、ブートローダ11のハッシュ値を求め、両者が一致するか否かに応じて検証する。両者が一致した場合のみ検証が成功したとみなす。両者が不一致等、検証が失敗した場合は、ここでコードの実行を停止し、IoTデバイス100の電源を切る。
P11 (Verification of IoT device OS): The
P12(OSの実行):ブートローダ11は、NVM52上の所定の場所に配置された検証済のIoTデバイスOS12を実行する。
P12 (OS execution): The
セキュアエレメント60内にブートに必要な情報を保持することにおり、セキュアエレメント60は、ブートに必要な情報の提供可否を選択できるようになる。このことを利用して、IoTデバイス100の電源を投入した際、セキュアエレメント60内の情報を元にユーザ認証を行うことで、不正なユーザによるブートを抑止することができる。以下では、起動時にユーザ認証を行う場合について説明する。
By holding the information necessary for booting in the
図5はブートローダ読み出し前の認証の一例を示す説明図である。以下、符号P21~P31で示す処理について説明する。 FIG. 5 is an explanatory diagram showing an example of authentication before reading the boot loader. The processes indicated by symbols P21 to P31 will be described below.
P21(電源の投入):IoTデバイス100のユーザは、IoTデバイス100の電源を投入する。
P21 (power on): The user of the
P22(ユーザ認証情報の入力):IoTデバイス100は、電源を投入されると、初期実行コードである起動前ユーザ認証機能41を実行する。起動前ユーザ認証機能41は、セキュアエレメント60との通信機能を有効化し、PINや指紋等のユーザ認証情報の入力を待ち受ける。
P22 (Input of user authentication information): When the power is turned on, the
P23(ユーザ認証):ユーザ認証情報が入力された場合、起動前ユーザ認証機能41は、入力されたユーザ認証情報をセキュアエレメント60に送出する。セキュアエレメント60は、受信したユーザ認証情報と、セキュアエレメント60内のユーザ認証情報とを比較しユーザ認証を行い、認証可否を返送する。認証が失敗した場合、ここでコードの実行を停止し、IoTデバイス100の電源を切る。
P23 (user authentication): When user authentication information is input, the pre-boot
P24からP31までの処理は、図3に例示したP2からP9の処理と同様であるので、説明は省略する。 The processing from P24 to P31 is the same as the processing from P2 to P9 illustrated in FIG. 3, so a description thereof will be omitted.
セキュアエレメント60に、自信をエンドポイントとして外部との秘匿通信路を開設する機能がある場合、IoTデバイス100のブートローダ情報を外部からセキュアに管理することが可能になる。機能追加やセキュリティ脆弱性対策のため、ブートローダ自身の更新が必要になった場合、IoTデバイス100を管理する側として、古いブートローダが動いているIoTデバイスを特定し、古いブートローダを新しいブートローダに置き換えることが必要になる。本実施の形態では、ブートローダの更新をセキュアに実現することができる。以下では、まず、セキュアエレメント60からブートローダの情報をサーバに通知する場合について説明する。
If the
図6はブートローダ情報の遠隔管理の一例を示す説明図である。以下、符号P41~P44で示す処理について説明する。 FIG. 6 is an explanatory diagram showing an example of remote management of boot loader information. The processes indicated by symbols P41 to P44 will be explained below.
P41(通信路の開設):ブートローダ11は、IoTデバイス100のネットワーク通信機能を有効化するとともに、セキュアエレメント60に対しブート管理サーバ200との秘匿通信路を開設する。ここでは、ネットワーク通信機能(Ethernet(商標)/Wi-Fi(商標)等)のみIoTデバイス100の機能を利用し、セキュアエレメント60とブート管理サーバ200との間でTLS(Transport Layer Security)等のセキュアチャネルを開設しているが、セキュアエレメント60が独立してネットワーク通信可能であれば、単体で通信を実施してもよい。
P41 (Establishing a communication path): The
P42(セキュアエレメントへのバージョン情報送信指示):ブートローダ11は、セキュアエレメント60に対して、現在保持しているブートローダのバージョン情報を送信するように指示する。このとき、ブートローダ11は、自身が保持しているバージョン情報をセキュアエレメント60に送信する。なお、本明細書では、ブートローダのバージョン情報そのものを使用する例を挙げて説明しているが、バージョン情報に限定されるものではない。例えば、ブートローダのバージョンを一意に特定可能な特定情報であればよい。特定情報は、バージョン情報そのものだけでなく、例えば、ブートローダのハッシュ値など、ブートローダそのもののバイナリ列に対して所定の演算を行って得られた値などでもよい。
P42 (Instruction to transmit version information to secure element): The
P43(バージョン情報の比較):セキュアエレメント60は、ブートローダ11から受信したバージョン情報と、自身が保持しているブートローダのバージョン情報とを比較し、一致可否を判定する。
P43 (Comparison of version information): The
P44(サーバへのバージョン情報送信):セキュアエレメント60は、ブート管理サーバ200に対して比較結果を自身のIDとともに送信する。両者が一致している場合は、一致したバージョン情報を送信する。両者が不一致の場合、IoTデバイス100は、セキュアエレメント60が保持しているブートローダのバージョンとは異なるバージョンのブートローダ11で動作していることになるため、ブートローダ11側のバージョン番号と、バージョン番号が不一致である旨をブート管理サーバ200に通知する。
P44 (transmission of version information to server): The
上述の例では、ブートローダ11から処理を開始しているが、処理開始タイミングは、ブートローダ実行時である必要は必ずしもなく、OS等の後続のソフトウェアが動作しているタイミングで処理を開始してもよい。また、上述の例では、取得したバージョン情報と保持したバージョン情報との比較結果をブート管理サーバ200へ送信する構成であるが、これに限定されるものではない。例えば、セキュアエレメント60は、自身が開設した秘匿通信路を経由して、取得したバージョン情報及び保持したバージョン情報をブート管理サーバ200へ送信してもよい。この場合、ブート管理サーバ200において、両者の比較検証を行うことができる。
In the above example, the process is started from the
ブートローダ11自身のバージョンと、セキュアエレメント60内のブートローダのバージョンが不一致の場合、セキュアエレメント60指定のバージョンと異なるバージョンでブートされているため、ブートローダ11の改ざんが行われている可能性が想定される。ブート管理サーバ200が不一致である旨の通知を受信した際の動作については、IoTデバイス100のセキュリティポリシーに依存する事項であるが、例えば、IoTデバイス100に対して遠隔で再起動指示を出力する、あるいは、セキュリティアタックとみなしてアラートを通知する等、種々の選択肢がある。
If the version of the
上述のように、ブート管理サーバ200は、ブートローダのバージョン情報をIoTデバイス100から収集することで、各IoTデバイス100上で稼働しているブートローダのバージョンを収集可能となる。ブート管理サーバ200は、古いブートローダを持つセキュアエレメント60と通信することで、古いブートローダを新しいものに置き換えることが可能になる。以下では、ブートローダ情報の更新について説明する。
As described above, by collecting boot loader version information from the
図7はブートローダ情報の更新の一例を示す説明図である。以下、符号P51~P55で示す処理について説明する。 FIG. 7 is an explanatory diagram showing an example of updating boot loader information. The processes indicated by symbols P51 to P55 will be described below.
P51(ブートローダ更新判定):ブート管理サーバ200は、各セキュアエレメント60のブートローダのバージョンから、更新指示の対象となるセキュアエレメント60を特定する。例えば、各セキュアエレメント60のIDに対応したバージョンを調べ、最新バージョンと異なる場合は、当該セキュアエレメント60を更新対象として特定するなど、更新判定には種々の方法を用いることができる。
P51 (Boot loader update determination): The
P52(更新対象ブートローダ特定):ブート管理サーバ200は、セキュアエレメント60に送信するバージョンのブートローダ情報(ブートローダを含む)を特定する。ここでは、単純に最新バージョンのブートローダに更新することとしている。
P52 (Identification of boot loader to be updated): The
P53(セキュアエレメントへのブートローダコピー):ブート管理サーバ200は、P52で特定したブートローダ情報を、秘匿通信路経由でセキュアエレメント60に送信する。セキュアエレメント60は、受信したブートローダで既存のブートローダを上書きし、保持しているバージョン情報を更新する。
P53 (bootloader copy to secure element): The
P54(更新後のバージョン通知):セキュアエレメント60は、ブートローダ更新後、更新後のブートローダのバージョンをブート管理サーバ200に送信する。
P54 (Notification of updated version): After updating the boot loader, the
P55(ブートローダ管理テーブルの更新):ブート管理サーバ200は、ブートローダ管理テーブルの対応箇所(更新後のバージョンを受信したセキュアエレメントの行)をセキュアエレメント60から受信したブートローダのバージョンで更新する。図の例では、バージョン1.0.0が、1.0.1に更新されている。
P55 (update of boot loader management table): The
IoTデバイス100がすでにOS起動中の場合、セキュアエレメント60内のブートローダを更新するだけでは、デバイス側で実際に稼動しているソフトウェアは更新されておらず、再起動の必要がある。再起動に関する対応については、ブート管理サーバ200や他のサーバからIoTデバイス100に対し遠隔で再起動を指示すればよい。再起動の指示は、例えば、表示画面などに再起動を促す旨の文字や画像を表示してもよく、既存の技術を組み合わせてもよい。
If the
本実施の形態のデバイスは、セキュアブート機能を有するデバイスであって、ブートローダ、ブートローダ検証鍵、及びブートローダの署名を含むブートローダ情報を保持するセキュアエレメントと、初期実行コードとして、ブートローダ情報読出処理、ブートローダ検証処理、及びブートローダ実行処理を実行順序も含めて保持する書き換え不可能な不揮発性メモリとを備え、デバイス起動時に、前記ブートローダ情報読出処理を実行して、前記セキュアエレメントから前記ブートローダ情報を読み出し、前記ブートローダ検証処理は、前記ブートローダ検証鍵、及び前記ブートローダの署名を用いて前記ブートローダを検証し、検証が成功した場合、前記ブートローダ実行処理は、前記ブートローダを実行する。 The device of this embodiment is a device having a secure boot function, and includes a secure element that holds boot loader information including a boot loader, a boot loader verification key, and a boot loader signature, and a boot loader information reading process and a boot loader function as an initial execution code. comprising a non-rewritable non-volatile memory that holds verification processing and bootloader execution processing including the execution order, and when the device is started, executes the bootloader information reading processing to read the bootloader information from the secure element; The bootloader verification process verifies the bootloader using the bootloader verification key and the signature of the bootloader, and if the verification is successful, the bootloader execution process executes the bootloader.
本実施の形態のセキュアエレメントは、セキュアブート機能を有するデバイスに実装されるセキュアエレメントであって、ブートローダ、ブートローダ検証鍵、及びブートローダの署名を含むブートローダ情報を保持し、デバイス起動時に、前記ブートローダの検証のために前記ブートローダ情報を前記デバイスへ出力する。 The secure element of this embodiment is a secure element that is installed in a device having a secure boot function, holds boot loader information including a boot loader, a boot loader verification key, and a signature of the boot loader, and secures the boot loader at the time of device startup. The bootloader information is output to the device for verification.
本実施の形態のデバイスのセキュアブート方法は、初期実行コードとして、ブートローダ情報読出処理、ブートローダ検証処理、及びブートローダ実行処理を実行順序も含めて書き換え不可能な不揮発性メモリに保持しておき、デバイス起動時に、前記ブートローダ情報読出処理を実行して、セキュアエレメントから、ブートローダ、ブートローダ検証鍵、及びブートローダの署名を含むブートローダ情報を読み出し、前記ブートローダ検証処理は、前記ブートローダ検証鍵、及び前記ブートローダの署名を用いて前記ブートローダを検証し、検証が成功した場合、前記ブートローダ実行処理は、前記ブートローダを実行する。 The device secure boot method of this embodiment stores bootloader information read processing, bootloader verification processing, and bootloader execution processing, including the execution order, as initial execution code in non-volatile memory that cannot be rewritten. At startup, the boot loader information read process is executed to read boot loader information including a boot loader, a boot loader verification key, and a signature of the boot loader from the secure element, and the boot loader verification process is performed to read the boot loader information including the boot loader verification key and the boot loader signature. The boot loader is verified using the above boot loader, and if the verification is successful, the boot loader execution process executes the boot loader.
セキュアエレメントは、ブートローダ、ブートローダ検証鍵、及びブートローダの署名を含むブートローダ情報を保持する。ブートローダと検証用鍵の両方を改ざん不可能、及び更新不可能なセキュアエレメントに保持することにより、ブートローダと鍵の改ざんを防止しつつ鍵とコードの対応関係をセキュアエレメント内に限定する。これにより、鍵及びブートローダそれぞれの管理をセキュアエレメント側に纏めることができ、デバイス側から鍵管理の負荷を取り除くことができる。IoTデバイス製造者は、ブートローダのみをセキュアエレメント製造者に供給することで、セキュリティの管理をセキュアアレメント製造者に委任することができる。 The secure element holds bootloader information including the bootloader, a bootloader verification key, and a signature of the bootloader. By holding both the boot loader and the verification key in a secure element that cannot be tampered with or updated, the correspondence between the key and the code is limited to the secure element while preventing tampering with the boot loader and the key. As a result, the management of keys and boot loaders can be consolidated on the secure element side, and the burden of key management can be removed from the device side. The IoT device manufacturer can delegate security management to the secure element manufacturer by providing only the bootloader to the secure element manufacturer.
書き換え不可能な不揮発性メモリは、初期実行コードとして、ブートローダ情報読出処理、ブートローダ検証処理、及びブートローダ実行処理を実行順序も含めて保持する。書き換え不可能な不揮発性メモリに保持するとは、例えば、工場出荷後は、各処理の実行準備も含め、これらの処理手順、内容を書き換えることができないことを意味する。すなわち、IoTデバイスの初期実行コードを固定シーケンス化する。鍵の値に依存しない初期実行コードの実行内容と順序を、IoTデバイス側に更新不可能な形態で保持することができる。これにより、初期実行コードの改ざんを防止しつつ、鍵やブートローダなどの個別情報をセキュアエレメント側に持たせることで、安全かつ柔軟にセキュリティ管理を行うことができる。 The non-rewritable nonvolatile memory holds bootloader information read processing, bootloader verification processing, and bootloader execution processing, including the execution order, as initial execution codes. Holding in a non-volatile memory that cannot be rewritten means that, for example, after shipment from the factory, these processing procedures and contents, including preparation for execution of each process, cannot be rewritten. That is, the initial execution code of the IoT device is made into a fixed sequence. The execution content and order of the initial execution code, which does not depend on the key value, can be held in an unupdateable form on the IoT device side. This allows security management to be performed safely and flexibly by allowing the secure element to hold individual information such as keys and boot loaders while preventing tampering with the initial execution code.
デバイス起動時に、ブートローダ情報読出処理を実行して、セキュアエレメントからブートローダ情報を読み出す。ブートローダ検証処理は、ブートローダ検証鍵、及びブートローダの署名を用いてブートローダを検証する。検証が成功した場合、ブートローダ実行処理は、ブートローダを実行する。これにより、より安全性の高いセキュアブートを実現できる。 When the device is started, a bootloader information reading process is executed to read the bootloader information from the secure element. The bootloader verification process verifies the bootloader using the bootloader verification key and the signature of the bootloader. If the verification is successful, the bootloader execution process executes the bootloader. This makes it possible to achieve a more secure secure boot.
本実施の形態のデバイスにおいて、前記セキュアエレメントは、さらに、ブートローダ検証鍵証明書を保持し、前記書き換え不可能な不揮発性メモリは、セキュアエレメントCA公開鍵を保持し、デバイス起動時に、前記ブートローダ情報読出処理を実行して、前記セキュアエレメントから前記ブートローダ検証鍵証明書を読み出し、前記ブートローダ検証処理は、前記セキュアエレメントCA公開鍵、及び読み出された前記ブートローダ検証鍵証明書を用いて前記ブートローダ検証鍵を検証し、検証が成功した場合、前記ブートローダを検証する。 In the device of this embodiment, the secure element further holds a bootloader verification key certificate, the non-rewritable non-volatile memory holds a secure element CA public key, and the bootloader information is stored at the time of device startup. A read process is executed to read the boot loader verification key certificate from the secure element, and the boot loader verification process verifies the boot loader using the secure element CA public key and the read boot loader verification key certificate. Verify the key, and if verification is successful, verify the bootloader.
本実施の形態のセキュアエレメントにおいて、前記ブートローダ情報は、前記ブートローダ検証鍵を検証するためのブートローダ検証鍵証明書を含み、デバイス起動時に、前記ブートローダ検証鍵証明書を前記デバイスへ出力する。 In the secure element of this embodiment, the boot loader information includes a boot loader verification key certificate for verifying the boot loader verification key, and the boot loader verification key certificate is output to the device when the device is started.
セキュアエレメントは、さらに、ブートローダ検証鍵証明書を保持し、書き換え不可能な不揮発性メモリは、セキュアエレメントCA公開鍵を保持する。デバイス起動時に、ブートローダ情報読出処理を実行して、セキュアエレメントからブートローダ検証鍵証明書を読み出す。ブートローダ検証処理は、セキュアエレメントCA公開鍵、及び読み出されたブートローダ検証鍵証明書を用いてブートローダ検証鍵を検証する。検証が成功した場合、ブートローダを検証する。すなわち、ブートローダの検証に先立って、セキュアエレメントCA公開鍵によってブートローダ検証鍵に対する検証を行う。 The secure element further holds a bootloader verification key certificate, and the non-rewritable non-volatile memory holds the secure element CA public key. When the device is started, a bootloader information reading process is executed to read the bootloader verification key certificate from the secure element. The bootloader verification process verifies the bootloader verification key using the secure element CA public key and the read bootloader verification key certificate. If verification is successful, verify the bootloader. That is, prior to verifying the boot loader, the boot loader verification key is verified using the secure element CA public key.
IoTデバイス内の書き換え不可能な不揮発性メモリに保持されたセキュアエレメントCA公開鍵を使用してブートローダ検証鍵の署名検証を行い、ブートローダ検証鍵の正当性の検証を行う。これにより、鍵を改ざんすることで不正なブートローダ起動を試みる攻撃を防止できる。 The signature of the bootloader verification key is verified using the secure element CA public key held in the non-volatile memory that cannot be rewritten within the IoT device, and the validity of the bootloader verification key is verified. This can prevent attacks that attempt to launch the bootloader illegally by tampering with the key.
本実施の形態のデバイスにおいて、前記セキュアエレメントは、さらに、ソフトウェア検証鍵を保持し、デバイス起動時に、前記ブートローダ情報読出処理を実行して、前記セキュアエレメントから前記ソフトウェア検証鍵を読み出し、前記ブートローダは、前記ソフトウェア検証鍵を用いて前記ブートローダ以降に実行されるソフトウェアイメージを検証する。 In the device of the present embodiment, the secure element further holds a software verification key, executes the boot loader information reading process to read the software verification key from the secure element when the device is started, and the boot loader reads the software verification key from the secure element. , verifying a software image executed after the boot loader using the software verification key;
本実施の形態のセキュアエレメントにおいて、前記ブートローダ情報は、前記ブートローダ以降に実行されるソフトウェアイメージを検証するためのソフトウェア検証鍵を含み、デバイス起動時に、前記ソフトウェア検証鍵を前記デバイスへ出力する。 In the secure element of this embodiment, the bootloader information includes a software verification key for verifying a software image executed after the bootloader, and the software verification key is output to the device when the device is started.
セキュアエレメントは、さらに、ソフトウェア検証鍵を保持する。デバイス起動時に、ブートローダ情報読出処理を実行して、セキュアエレメントからソフトウェア検証鍵を読み出す。ブートローダは、ソフトウェア検証鍵を用いてブートローダ以降に実行されるソフトウェア(例えば、OSなど)イメージを検証する。 The secure element also holds a software verification key. When the device is started, a boot loader information read process is executed to read the software verification key from the secure element. The boot loader uses the software verification key to verify software (eg, OS, etc.) images that are executed after the boot loader.
セキュアエレメント内に、ブートローダ以降に実行されるソフトウェアイメージの検証用鍵を保持しておく。これにより、セキュアエレメントをRoot of Trustとした、鍵に基づくTrust Chainを容易に構成することができる。 A key for verifying software images executed after the boot loader is stored in the secure element. This makes it possible to easily configure a key-based trust chain with the secure element as the root of trust.
本実施の形態のデバイスにおいて、前記セキュアエレメントは、さらに、ソフトウェア検証鍵証明書を保持し、デバイス起動時に、前記ブートローダ情報読出処理を実行して、前記セキュアエレメントから前記ソフトウェア検証鍵証明書を読み出し、前記ブートローダは、前記セキュアエレメントCA公開鍵、及び前記ソフトウェア検証鍵証明書を用いてソフトウェア検証鍵を検証し、検証が成功した場合、前記ソフトウェアイメージを検証する。 In the device of the present embodiment, the secure element further holds a software verification key certificate, and executes the boot loader information reading process at the time of device startup to read the software verification key certificate from the secure element. , the boot loader verifies a software verification key using the secure element CA public key and the software verification key certificate, and if the verification is successful, verifies the software image.
本実施の形態のセキュアエレメントにおいて、前記ブートローダ情報は、前記ソフトウェア検証鍵を検証するためのソフトウェア検証鍵証明書を含み、デバイス起動時に、前記ソフトウェア検証鍵証明書を前記デバイスへ出力する。 In the secure element of this embodiment, the boot loader information includes a software verification key certificate for verifying the software verification key, and the software verification key certificate is output to the device when the device is started.
セキュアエレメントは、さらに、ソフトウェア検証鍵証明書を保持する。デバイス起動時に、ブートローダ情報読出処理を実行して、セキュアエレメントからソフトウェア検証鍵証明書を読み出す。ブートローダは、セキュアエレメントCA公開鍵、及びソフトウェア検証鍵証明書を用いてソフトウェア検証鍵を検証する。検証が成功した場合、ソフトウェアイメージを検証する。すなわち、ソフトウェアイメージの検証に先立って、セキュアエレメントCA公開鍵及びソフトウェア検証鍵証明書によってソフトウェア検証鍵に対する検証を行う。 The secure element also holds a software verification key certificate. When the device is started, a boot loader information reading process is executed to read the software verification key certificate from the secure element. The bootloader verifies the software verification key using the secure element CA public key and the software verification key certificate. If verification is successful, verify the software image. That is, prior to verifying the software image, the software verification key is verified using the secure element CA public key and the software verification key certificate.
IoTデバイス内の書き換え不可能な不揮発性メモリに保持されたソフトウェア検証鍵証明書を使用してソフトウェア検証鍵の検証を行い、ソフトウェア検証鍵の正当性の検証を行う。これにより、鍵を改ざんすることで不正なソフトウェアの実行を試みる攻撃を防止できる。 A software verification key certificate held in a non-volatile memory that cannot be rewritten within an IoT device is used to verify a software verification key, thereby verifying the validity of the software verification key. This prevents attacks that attempt to execute unauthorized software by tampering with keys.
本実施の形態のデバイスは、前記セキュアエレメントから読み出されたブートローダ情報を保持するセキュアな領域を有するSoCを備える。 The device of this embodiment includes an SoC having a secure area that holds bootloader information read from the secure element.
SoC(System on Chip)は、セキュアな領域(例えば、TEE:Trusted Execution Environmentなど)を有し、セキュアな領域にセキュアエレメントから読み出されたブートローダ情報を保持する。例えば、暗号化ブートローダの読み出しや復号をSoC内のセキュアな領域で行う。これにより、ブートローダの検証処理を狙った攻撃を防止できる。 An SoC (System on Chip) has a secure area (for example, TEE: Trusted Execution Environment), and stores boot loader information read from a secure element in the secure area. For example, the encrypted boot loader is read and decrypted in a secure area within the SoC. This can prevent attacks targeting the bootloader verification process.
本実施の形態のデバイスにおいて、前記セキュアエレメントは、ユーザ認証情報を保持し、デバイス起動時に、入力されたユーザ認証情報と保持したユーザ認証情報とに基づいてユーザ認証を行い、ユーザ認証が成功した場合、前記ブートローダ情報読出処理を行う。 In the device of this embodiment, the secure element holds user authentication information, performs user authentication based on the input user authentication information and the held user authentication information when the device is started, and determines whether the user authentication is successful. In this case, the boot loader information reading process is performed.
本実施の形態のセキュアエレメントは、ユーザ認証情報を保持し、デバイス起動時に、入力されたユーザ認証情報と保持したユーザ認証情報とに基づいてユーザ認証を行い、ユーザ認証が成功した場合、前記ブートローダ情報を前記デバイスへ出力する。 The secure element of this embodiment holds user authentication information, performs user authentication based on the input user authentication information and the held user authentication information when the device is started, and if the user authentication is successful, the boot loader Output information to the device.
セキュアエレメントは、ユーザ認証情報を保持する。デバイス起動時に、入力されたユーザ認証情報と保持したユーザ認証情報とに基づいてユーザ認証を行う。ユーザ認証が成功した場合、ブートローダ情報読出処理を行う。 The secure element holds user authentication information. When the device is started, user authentication is performed based on the input user authentication information and the retained user authentication information. If user authentication is successful, bootloader information reading processing is performed.
ブートローダや鍵読み出しに先立って、セキュアエレメントが外部認証を求め、認証に成功した場合に、ブートローダ情報を読み出す(デバイス側へ、ブートローダ情報を出力する)。これにより、IoTデバイスに対するセキュリティニーズに応じて、生体認証やPIN(Personal Identification Number)認証等、デバイス起動そのものに強固な認証を導入し、かつ当該認証のバイパスを防止できる。 Prior to reading the bootloader and key, the secure element requests external authentication, and if authentication is successful, reads the bootloader information (outputs the bootloader information to the device side). This makes it possible to introduce strong authentication, such as biometric authentication or PIN (Personal Identification Number) authentication, to the device activation itself in accordance with security needs for IoT devices, and to prevent bypassing of the authentication.
本実施の形態のセキュアエレメントは、ブートローダのバージョンを特定する特定情報を保持し、前記デバイスからブートローダの特定情報を取得し、取得した特定情報及び保持した特定情報、あるいは、取得した特定情報と保持した特定情報との比較結果を、秘匿通信路を介して外部のサーバへ送信する。 The secure element of this embodiment retains specific information that specifies the version of the boot loader, acquires the boot loader specific information from the device, and stores the acquired specific information and the retained specific information, or the acquired specific information and the retained specific information. The results of the comparison with the identified specific information are sent to an external server via a secret communication channel.
特定情報は、ブートローダのバージョンを一意に特定可能な情報であればよい。特定情報には、例えば、バージョン情報そのものでもよく、ブートローダのハッシュ値など、ブートローダそのもののバイナリ列に対して所定の演算を行って得られた値などでもよい。セキュアエレメントは、自身が開設した秘匿通信路を経由して、取得した特定情報及び保持した特定情報を外部のサーバへ送信してもよく、あるいは、取得した特定情報と保持した特定情報との比較結果を外部のサーバへ送信してもよい。これにより、セキュアエレメントが開設した秘匿通信路を経由して、セキュアエレメント内部及びIoTデバイスにロードされたブートローダそれぞれのバージョンを確認することができる。 The specific information may be any information that can uniquely identify the version of the boot loader. The specific information may be, for example, version information itself, or a value obtained by performing a predetermined operation on a binary string of the boot loader itself, such as a hash value of the boot loader. The secure element may send the acquired specific information and retained specific information to an external server via a confidential communication channel established by itself, or may compare the acquired specific information with the retained specific information. Results may be sent to an external server. Thereby, the versions of the boot loaders loaded inside the secure element and on the IoT device can be confirmed via the secret communication path opened by the secure element.
本実施の形態のセキュアエレメントは、秘匿通信路を介して外部のサーバからの指令に基づいて、保持された、ブートローダ、ブートローダ検証鍵、ブートローダの署名、ブートローダ検証鍵証明書、ソフトウェア検証鍵、及びソフトウェア検証鍵証明書の全部又は一部を更新する。 The secure element of this embodiment secures the stored boot loader, boot loader verification key, boot loader signature, boot loader verification key certificate, software verification key, and Update all or part of the software verification key certificate.
秘匿通信路を介して外部のサーバからの指令に基づいて、保持された、ブートローダ、ブートローダ検証鍵、ブートローダの署名、ブートローダ検証鍵証明書、ソフトウェア検証鍵、及びソフトウェア検証鍵証明書の全部又は一部を更新する。セキュアエレメントが開設した秘匿通信路を経由して、セキュアエレメント内のブートローダや鍵を外部から更新することができる。これにより、安全確実にブートローダを更新できるだけでなく、デバイスのブート可否をセキュアエレメント(強固なRoot of Trust)経由で外部制御することもできる。後続のソフトウェアも検証対象とする場合は、当該ソフトウェアの起動可否をセキュアエレメント経由で外部制御することができる。 Based on instructions from an external server via a secret communication path, all or one of the retained boot loader, boot loader verification key, boot loader signature, boot loader verification key certificate, software verification key, and software verification key certificate is Update the section. The boot loader and keys in the secure element can be updated from the outside via the secret communication channel established by the secure element. This not only allows you to update the bootloader safely and reliably, but also allows you to externally control whether or not the device can be booted via a secure element (strong root of trust). If subsequent software is also subject to verification, whether or not the software can be activated can be externally controlled via the secure element.
1 ネットワーク秘匿通信路
11 ブートローダ
12 IoTデバイスOS
21 セキュアエレメントCA公開鍵
22 セキュアエレメントCA秘密鍵
23 ブートローダ検証鍵(公開鍵)
24 ブートローダ署名生成鍵(秘密鍵)
25 OS検証鍵(公開鍵)
26 OS署名生成鍵(秘密鍵)
31 ブートローダデジタル署名
32 ブートローダ検証鍵証明書
33 OSデジタル署名
34 OS検証鍵証明書
40 セキュアエレメントとの通信路
41 起動前ユーザ認証機能
42 ブートローダ情報読出機能
43 ブートローダ検証機能
44 ブートローダ実行機能
50 SoC
51 ROM
52 NVM
53 RAM(REE)
54 RAM(TEE)
60 セキュアエレメント
100 IoTデバイス
200 ブート管理サーバ
1 Network
21 Secure element CA
24 Bootloader signature generation key (private key)
25 OS verification key (public key)
26 OS signature generation key (private key)
31 Bootloader
51 ROM
52 NVM
53 RAM (REE)
54 RAM (TEE)
60
Claims (14)
ブートローダ、ブートローダ検証鍵、及びブートローダの署名を含むブートローダ情報を保持するセキュアエレメントと、
初期実行コードとして、ブートローダ情報読出処理、ブートローダ検証処理、及びブートローダ実行処理を実行順序も含めて保持する書き換え不可能な不揮発性メモリと
を備え、
デバイス起動時に、前記ブートローダ情報読出処理を実行して、前記セキュアエレメントから前記ブートローダ情報を読み出し、
前記ブートローダ検証処理は、
前記ブートローダ検証鍵、及び前記ブートローダの署名を用いて前記ブートローダを検証し、
検証が成功した場合、前記ブートローダ実行処理は、前記ブートローダを実行する、
デバイス。 A device having a secure boot function,
a secure element that holds bootloader information including a bootloader, a bootloader verification key, and a signature of the bootloader;
and a non-rewritable nonvolatile memory that holds bootloader information read processing, bootloader verification processing, and bootloader execution processing, including the execution order, as initial execution code;
executing the bootloader information reading process at device startup to read the bootloader information from the secure element;
The bootloader verification process includes:
verifying the bootloader using the bootloader verification key and the bootloader signature;
If the verification is successful, the bootloader execution process executes the bootloader;
device.
前記書き換え不可能な不揮発性メモリは、セキュアエレメントCA公開鍵を保持し、
デバイス起動時に、前記ブートローダ情報読出処理を実行して、前記セキュアエレメントから前記ブートローダ検証鍵証明書を読み出し、
前記ブートローダ検証処理は、
前記セキュアエレメントCA公開鍵、及び読み出された前記ブートローダ検証鍵証明書を用いて前記ブートローダ検証鍵を検証し、
検証が成功した場合、前記ブートローダを検証する、
請求項1に記載のデバイス。 The secure element further holds a bootloader verification key certificate;
The non-rewritable non-volatile memory holds a secure element CA public key,
When the device is started, executing the bootloader information reading process to read the bootloader verification key certificate from the secure element;
The bootloader verification process includes:
verifying the bootloader verification key using the secure element CA public key and the read bootloader verification key certificate;
if the verification is successful, verifying the bootloader;
A device according to claim 1.
デバイス起動時に、前記ブートローダ情報読出処理を実行して、前記セキュアエレメントから前記ソフトウェア検証鍵を読み出し、
前記ブートローダは、
前記ソフトウェア検証鍵を用いて前記ブートローダ以降に実行されるソフトウェアイメージを検証する、
請求項2に記載のデバイス。 The secure element further holds a software verification key;
executing the bootloader information reading process at device startup to read the software verification key from the secure element;
The bootloader is
verifying a software image executed after the bootloader using the software verification key;
A device according to claim 2.
デバイス起動時に、前記ブートローダ情報読出処理を実行して、前記セキュアエレメントから前記ソフトウェア検証鍵証明書を読み出し、
前記ブートローダは、
前記セキュアエレメントCA公開鍵、及び前記ソフトウェア検証鍵証明書を用いてソフトウェア検証鍵を検証し、
検証が成功した場合、前記ソフトウェアイメージを検証する、
請求項3に記載のデバイス。 The secure element further holds a software verification key certificate;
executing the boot loader information reading process at device startup to read the software verification key certificate from the secure element;
The bootloader is
verifying a software verification key using the secure element CA public key and the software verification key certificate;
if verification is successful, verifying the software image;
4. A device according to claim 3.
請求項1から請求項4のいずれか一項に記載のデバイス。 comprising an SoC having a secure area that holds bootloader information read from the secure element;
A device according to any one of claims 1 to 4.
デバイス起動時に、入力されたユーザ認証情報と保持したユーザ認証情報とに基づいてユーザ認証を行い、
ユーザ認証が成功した場合、前記ブートローダ情報読出処理を行う、
請求項1から請求項5のいずれか一項に記載のデバイス。 The secure element holds user authentication information, and
When the device is started, user authentication is performed based on the entered user authentication information and the retained user authentication information,
If the user authentication is successful, performing the bootloader information reading process;
A device according to any one of claims 1 to 5.
ブートローダ、ブートローダ検証鍵、及びブートローダの署名を含むブートローダ情報を保持し、
デバイス起動時に、前記ブートローダの検証のために前記ブートローダ情報を前記デバイスへ出力する、
セキュアエレメント。 A secure element implemented in a device having a secure boot function,
maintains bootloader information including a bootloader, a bootloader verification key, and a bootloader signature;
outputting the bootloader information to the device for verification of the bootloader when the device boots;
secure element.
デバイス起動時に、前記ブートローダ検証鍵証明書を前記デバイスへ出力する、
請求項7に記載のセキュアエレメント。 The bootloader information includes a bootloader verification key certificate for verifying the bootloader verification key,
outputting the bootloader verification key certificate to the device when the device boots;
Secure element according to claim 7.
デバイス起動時に、前記ソフトウェア検証鍵を前記デバイスへ出力する、
請求項7又は請求項8に記載のセキュアエレメント。 The bootloader information includes a software verification key for verifying a software image executed after the bootloader,
outputting the software verification key to the device when the device starts up;
The secure element according to claim 7 or claim 8.
デバイス起動時に、前記ソフトウェア検証鍵証明書を前記デバイスへ出力する、
請求項9に記載のセキュアエレメント。 The boot loader information includes a software verification key certificate for verifying the software verification key,
outputting the software verification key certificate to the device when the device starts;
Secure element according to claim 9.
デバイス起動時に、入力されたユーザ認証情報と保持したユーザ認証情報とに基づいてユーザ認証を行い、
ユーザ認証が成功した場合、前記ブートローダ情報を前記デバイスへ出力する、
請求項7から請求項10のいずれか一項に記載のセキュアエレメント。 retain user credentials;
When the device is started, user authentication is performed based on the entered user authentication information and the retained user authentication information,
outputting the bootloader information to the device if the user authentication is successful;
Secure element according to any one of claims 7 to 10.
前記デバイスからブートローダの特定情報を取得し、
取得した特定情報及び保持した特定情報、あるいは、取得した特定情報と保持した特定情報との比較結果を、秘匿通信路を介して外部のサーバへ送信する、
請求項7から請求項11のいずれか一項に記載のセキュアエレメント。 Contains specific information that identifies the bootloader version,
obtaining bootloader specific information from the device;
Sending the acquired specific information and retained specific information, or the comparison result between the acquired specific information and the retained specific information, to an external server via a confidential communication channel;
A secure element according to any one of claims 7 to 11.
請求項7から請求項12のいずれか一項に記載のセキュアエレメント。 Based on instructions from an external server via a secret communication path, all or one of the retained boot loader, boot loader verification key, boot loader signature, boot loader verification key certificate, software verification key, and software verification key certificate is update the section,
Secure element according to any one of claims 7 to 12.
デバイス起動時に、前記ブートローダ情報読出処理を実行して、セキュアエレメントから、ブートローダ、ブートローダ検証鍵、及びブートローダの署名を含むブートローダ情報を読み出し、
前記ブートローダ検証処理は、
前記ブートローダ検証鍵、及び前記ブートローダの署名を用いて前記ブートローダを検証し、
検証が成功した場合、前記ブートローダ実行処理は、前記ブートローダを実行する、
デバイスのセキュアブート方法。 As initial execution code, bootloader information read processing, bootloader verification processing, and bootloader execution processing, including the execution order, are held in non-volatile memory that cannot be rewritten.
When the device is started, the bootloader information reading process is executed to read bootloader information including a bootloader, a bootloader verification key, and a signature of the bootloader from the secure element;
The bootloader verification process includes:
verifying the bootloader using the bootloader verification key and the bootloader signature;
If the verification is successful, the bootloader execution process executes the bootloader;
How to securely boot your device.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2020061466A JP7428049B2 (en) | 2020-03-30 | 2020-03-30 | Devices, secure elements and device secure boot methods |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2020061466A JP7428049B2 (en) | 2020-03-30 | 2020-03-30 | Devices, secure elements and device secure boot methods |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2021164009A JP2021164009A (en) | 2021-10-11 |
JP7428049B2 true JP7428049B2 (en) | 2024-02-06 |
Family
ID=78003841
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2020061466A Active JP7428049B2 (en) | 2020-03-30 | 2020-03-30 | Devices, secure elements and device secure boot methods |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP7428049B2 (en) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102540451B1 (en) * | 2022-02-24 | 2023-06-08 | 유비벨록스(주) | Secure Booting Ssystem for IoT Device and Secure Booting Method for IoT Device Using the Same |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006092533A (en) | 2004-09-23 | 2006-04-06 | Hewlett-Packard Development Co Lp | Computer security system and method |
WO2008004524A1 (en) | 2006-07-03 | 2008-01-10 | Panasonic Corporation | Certifying device, verifying device, verifying system, computer program and integrated circuit |
WO2012160760A1 (en) | 2011-05-25 | 2012-11-29 | パナソニック株式会社 | Information processing device and information processing method |
JP2014500989A (en) | 2010-09-28 | 2014-01-16 | ヘッドウォーター パートナーズ I エルエルシー | Secure device data record |
JP2015537323A (en) | 2012-12-14 | 2015-12-24 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | Activation mechanism for "Bring Your Own" management |
JP2017182808A (en) | 2016-03-30 | 2017-10-05 | モトローラ モビリティ エルエルシーMotorola Mobility Llc | Rfid-based device wireless updates |
-
2020
- 2020-03-30 JP JP2020061466A patent/JP7428049B2/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006092533A (en) | 2004-09-23 | 2006-04-06 | Hewlett-Packard Development Co Lp | Computer security system and method |
WO2008004524A1 (en) | 2006-07-03 | 2008-01-10 | Panasonic Corporation | Certifying device, verifying device, verifying system, computer program and integrated circuit |
JP2014500989A (en) | 2010-09-28 | 2014-01-16 | ヘッドウォーター パートナーズ I エルエルシー | Secure device data record |
WO2012160760A1 (en) | 2011-05-25 | 2012-11-29 | パナソニック株式会社 | Information processing device and information processing method |
JP2015537323A (en) | 2012-12-14 | 2015-12-24 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | Activation mechanism for "Bring Your Own" management |
JP2017182808A (en) | 2016-03-30 | 2017-10-05 | モトローラ モビリティ エルエルシーMotorola Mobility Llc | Rfid-based device wireless updates |
Also Published As
Publication number | Publication date |
---|---|
JP2021164009A (en) | 2021-10-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101795457B1 (en) | Method of initializing device and method of updating firmware of device having enhanced security function | |
JP6595822B2 (en) | Information processing apparatus and control method thereof | |
US6009524A (en) | Method for the secure remote flashing of a BIOS memory | |
JP4067985B2 (en) | Application authentication system and device | |
US9830456B2 (en) | Trust transference from a trusted processor to an untrusted processor | |
JP5690412B2 (en) | Hardware device key provisioning method and apparatus | |
ES2236530T3 (en) | SECURITY METHOD FOR AN ELECTRONIC DEVICE, A SECURITY SYSTEM AND AN ELECTRONIC DEVICE. | |
JP5116325B2 (en) | Information processing apparatus, software update method, and image processing apparatus | |
US8019994B2 (en) | Authentication of a request to alter at least one of a BIOS and a setting associated with the BIOS | |
JP4912879B2 (en) | Security protection method for access to protected resources of processor | |
JP4890309B2 (en) | Information processing apparatus and information protection method | |
JP6720581B2 (en) | Information processing apparatus, information processing method, and information processing program | |
US20160267273A1 (en) | Software update apparatus and computer-readable storage medium storing software update program | |
JP2002507307A (en) | Apparatus and method for loading a program into a processor | |
TW202141321A (en) | Method and electronic devices for securely storing and loading firmware | |
US10282549B2 (en) | Modifying service operating system of baseboard management controller | |
JP2009253783A (en) | Mobile terminal, data protection method and program for data protection | |
JP2016146618A (en) | Information processing device | |
CN116070217A (en) | Safe starting system and method for chip module | |
KR102256249B1 (en) | SECURE FIRMWARE UPDATE METHOD OF IoT DEVICE USING AN INTEGRATED SECURITY SoC | |
TW202145007A (en) | System for accelerating verification procedure for image file | |
JP7428049B2 (en) | Devices, secure elements and device secure boot methods | |
CN110532777B (en) | Secure start system and method, terminal equipment and core system thereof | |
JP7019976B2 (en) | Secure element, computer program, device, OS boot system and OS boot method | |
KR20190036779A (en) | Method and system for secure firmware update |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20230127 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20230929 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20231031 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20231213 |
|
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: 20231226 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20240108 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 7428049 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |