JP7428049B2 - Devices, secure elements and device secure boot methods - Google Patents

Devices, secure elements and device secure boot methods Download PDF

Info

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
Application number
JP2020061466A
Other languages
Japanese (ja)
Other versions
JP2021164009A (en
Inventor
正徳 浅野
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Dai Nippon Printing Co Ltd
Original Assignee
Dai Nippon Printing Co Ltd
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 Dai Nippon Printing Co Ltd filed Critical Dai Nippon Printing Co Ltd
Priority to JP2020061466A priority Critical patent/JP7428049B2/en
Publication of JP2021164009A publication Critical patent/JP2021164009A/en
Application granted granted Critical
Publication of JP7428049B2 publication Critical patent/JP7428049B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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.

特開2015-201091号公報Japanese Patent Application Publication No. 2015-201091

しかし、従来のセキュアブートの技術には、以下のような問題が残存する。鍵による検証や復号を行わせて実行コードの正当性を検証する場合、別々の媒体に保持されている鍵と実行コードに強い関連性が発生し、更新する場合には、両者の更新が必要となる。また、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.

本実施の形態の鍵、証明書及び署名のトラストチェーン(Trust Chain)を示す模式図である。FIG. 2 is a schematic diagram showing a trust chain of keys, certificates, and signatures according to the present embodiment. IoTデバイスの構成の一例を示す模式図である。FIG. 1 is a schematic diagram showing an example of the configuration of an IoT device. 基本的なブートプロセスの一例を示す説明図である。FIG. 2 is an explanatory diagram showing an example of a basic boot process. ブートローダによる実行イメージの検証の一例を示す説明図である。FIG. 2 is an explanatory diagram illustrating an example of verification of an execution image by a boot loader. ブートローダ読み出し前の認証の一例を示す説明図である。FIG. 3 is an explanatory diagram showing an example of authentication before reading a boot loader. ブートローダ情報の遠隔管理の一例を示す説明図である。FIG. 2 is an explanatory diagram showing an example of remote management of boot loader information. ブートローダ情報の更新の一例を示す説明図である。FIG. 3 is an explanatory diagram showing an example of updating boot loader information.

以下、本発明をその実施の形態を示す図面に基づいて説明する。図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 boot loader 11 and the IoT device OS 12. The boot loader 11 is software that executes boot processing on the IoT device, and is code for starting the OS from a specific process (boot loader execution function) of the IoT device.

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 bootloader 11 and the IoT device OS 12 may be implemented by an IoT device manufacturer and an IoT device OS vendor, respectively, or both the bootloader 11 and the IoT device OS 12 may be implemented by one of the parties. The bootloader 11 needs to be provided to the secure element manufacturer.

次に、鍵について説明する。鍵には、例えば、セキュアエレメントCA公開鍵21、セキュアエレメントCA秘密鍵22、ブートローダ検証鍵(公開鍵)23、ブートローダ署名生成鍵(秘密鍵)24、OS検証鍵(公開鍵)25、及びOS署名生成鍵(秘密鍵)26が含まれる。 Next, keys will be explained. The keys include, for example, a secure element CA public key 21, a secure element CA private key 22, a boot loader verification key (public key) 23, a boot loader signature generation key (private key) 24, an OS verification key (public key) 25, and an OS verification key (public key) 25. A signature generation key (private key) 26 is included.

セキュアエレメントCA公開鍵21は、セキュアエレメント製造者が、セキュアエレメント個々の鍵の正当性を証明(署名検証)するための公開鍵である。セキュアエレメントCA秘密鍵22は、セキュアエレメント製造者が、セキュアエレメント個々の鍵に署名を付与するための鍵である。 The secure element CA public key 21 is a public key used by the secure element manufacturer to prove the validity (signature verification) of each key of the secure element. The secure element CA private key 22 is a key used by the secure element manufacturer to add a signature to each key of the secure element.

ブートローダ検証鍵(公開鍵)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 digital signature 31, a boot loader verification key certificate 32, an OS digital signature 33, and an OS verification key certificate 34.

ブートローダデジタル署名31は、ブートローダ11に対し、ブートローダ署名生成鍵(秘密鍵)24によって生成された署名である。例えば、ブートローダ11(バイナリ列)のハッシュ値をブートローダ署名生成鍵(秘密鍵)24で暗号化した値を署名とすることができる。ブートローダ検証鍵証明書32は、ブートローダ検証鍵(公開鍵)23に対し、セキュアエレメントCA秘密鍵22によって生成された署名である。例えば、ブートローダ検証鍵(公開鍵)23のハッシュ値をセキュアエレメントCA秘密鍵22で暗号化した値を署名とすることができる。 The bootloader digital signature 31 is a signature generated for the bootloader 11 using the bootloader signature generation key (private key) 24. For example, a value obtained by encrypting a hash value of the boot loader 11 (binary string) using the boot loader signature generation key (private key) 24 can be used as the signature. The bootloader verification key certificate 32 is a signature generated by the secure element CA private key 22 for the bootloader verification key (public key) 23. For example, a value obtained by encrypting a hash value of the boot loader verification key (public key) 23 using the secure element CA private key 22 can be used as the signature.

OSデジタル署名33は、IoTデバイスOSのイメージに対し、OS署名生成鍵(秘密鍵)26によって生成された署名である。例えば、IoTデバイスOS(バイナリ列)のハッシュ値をOS署名生成鍵(秘密鍵)26で暗号化した値を署名とすることができる。OS検証鍵証明書34は、OS検証鍵(公開鍵)25に対し、セキュアエレメントCA秘密鍵22によって生成された署名である。例えば、OS検証鍵(公開鍵)25のハッシュ値をセキュアエレメントCA秘密鍵22で暗号化した値を署名とすることができる。 The OS digital signature 33 is a signature generated for the image of the IoT device OS using the OS signature generation key (private key) 26. For example, a value obtained by encrypting a hash value of the IoT device OS (binary string) using the OS signature generation key (private key) 26 can be used as the signature. The OS verification key certificate 34 is a signature generated for the OS verification key (public key) 25 using the secure element CA private key 22. For example, a value obtained by encrypting a hash value of the OS verification key (public key) 25 using the secure element CA private key 22 can be used as the signature.

本実施の形態では、署名対象のハッシュ値に対して署名生成鍵で暗号化を行うという方法で署名を生成しているが、署名生成アルゴリズムは、これに限定されるものではなく、対象鍵暗号に依拠する署名生成、検証方法であれば、いずれの方法を用いてもよい。 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 digital signature 31 using the boot loader verification key (public key) 23 (proof that the boot loader 11 has not been tampered with); (2) verification of the boot loader verification key using the secure element CA public key 21; Two signature verifications are performed: verification of the (public key) 23 (proof that the bootloader verification key (public key) 23 has not been tampered with). This ensures that the bootloader 11 is signed by the secure element manufacturer and has not been tampered with, and that the verification process itself has not been tampered with (verification is performed using a valid verification key). It is possible to ensure legitimacy and realize secure boot.

また、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 digital signature 33 using the OS verification key (public key) 25 (proof that the OS has not been tampered with), (2) secure element CA public key 21 Validation of the OS verification key (public key) 25 (proof that the OS verification key (public key) 25 has not been tampered with) is ensured by the Trust Chain. This makes it possible to ensure that the OS has been signed by the OS manufacturer (vendor) and has not been tampered with, and that the key used for the verification has been verified by the secure element manufacturer.

図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 IoT device 100. The IoT device 100 is a device to which secure boot is implemented, and includes, for example, an embedded board that runs RTOS, Linux, or the like. The IoT device 100 includes an SoC (System on Chip) 50 and a secure element 60 inside. IoT device 100 may include a user authentication input device. The user authentication input device is a device for accepting input of authentication information from the user when user authentication is required when the IoT device 100 is activated, and includes, for example, a PIN pad, a fingerprint sensor, and the like.

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 SoC 50 is an IC chip that retains the main functions of the IoT device 100. The SoC 50 includes a ROM 51, an NVM 52, a RAM (REE) 53, and a RAM (TEE) 54 as non-volatile memories that cannot be rewritten. Note that in this specification, a ROM will be described as an example of a non-rewritable non-volatile memory, but specifically, a non-rewritable non-volatile memory includes a mask ROM, a programmable ROM, Programmable ROMs include OTP (One Time Programmable)-ROM, EEPROM (Electronically Erasable and Programmable Read Only Memory), flash memory protected against rewritability, and the like. Any of these may be used as the ROM 51. The secure element 60 is a security chip with tamper resistance, and has a CPU, NVM (Non-volatile memory), and secure non-volatile memory inside. The secure element 60 communicates with the SoC 50 using a standard communication path (eg, ISO7816/SPI/I2C, etc.).

ブート管理サーバ200は、外部のサーバとしての機能を有し、IoTデバイス100のセキュアブートに関連する情報を保持し、IoTデバイス100のブート状態を取得し、個別管理を行う。 The boot management server 200 has a function as an external server, holds information related to secure boot of the IoT device 100, acquires the boot state of the IoT device 100, and performs individual management.

ROM51内には、起動前ユーザ認証機能41、ブートローダ情報読出機能42、ブートローダ検証機能43、ブートローダ実行機能44、及びセキュアエレメントCA公開鍵21が保持されている。 The ROM 51 holds a pre-boot user authentication function 41, a boot loader information reading function 42, a boot loader verification function 43, a boot loader execution function 44, and a secure element CA public key 21.

起動前ユーザ認証機能41は、ユーザ認証入力デバイスからユーザ認証情報を受け取り、セキュアエレメント60との通信路を開設し、セキュアエレメント60に対してユーザ認証を求める処理を行う。 The pre-boot user authentication function 41 receives user authentication information from the user authentication input device, opens a communication path with the secure element 60, and performs processing to request user authentication from the secure element 60.

ブートローダ情報読出機能42は、セキュアエレメント60との通信路を開設し、セキュアエレメント60からブートに必要な情報(ブートローダ情報)を取得する処理を行う。 The bootloader information reading function 42 establishes a communication path with the secure element 60 and performs a process of acquiring information necessary for booting (bootloader information) from the secure element 60.

ブートローダ検証機能43は、ブートローダデジタル署名31を利用して、復号したブートローダ11の正当性を検証する処理を行う。 The bootloader verification function 43 uses the bootloader digital signature 31 to perform a process of verifying the authenticity of the decrypted bootloader 11.

ブートローダ実行機能44は、復号したブートローダ11に制御を渡し、ブートローダ11を実行するための処理を行う。起動前ユーザ認証機能41、ブートローダ情報読出機能42、ブートローダ検証機能43、及びブートローダ実行機能44の処理、データはIoTデバイス製造者によってROM51内に固定的に保持(格納)されている。工場出荷後は、処理の実行順序も含め、これらの処理手順、処理内容を書き換えることはできない(セキュアな状態で保持されている)。 The bootloader execution function 44 passes control to the decrypted bootloader 11 and performs processing for executing the bootloader 11. The processing and data of the pre-boot user authentication function 41, bootloader information reading function 42, bootloader verification function 43, and bootloader execution function 44 are fixedly held (stored) in the ROM 51 by the IoT device manufacturer. After shipment from the factory, these processing procedures and processing contents, including the processing execution order, cannot be rewritten (they are kept in a secure state).

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 SoC 50, such as an SD card or an embedded Multi Media Card (eMMC), may be used.

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 SoC 50 is divided into two areas: an unsecure normal memory area (REE: Rich Execution Environment) 53 and a secure area (TEE: Trusted Execution Environment) 54. In this embodiment, the boot loader information of the secure element 60 is loaded into the RAM (TEE) 54, but in the case of an SoC that does not have the RAM (TEE) 54 and only has the RAM (REE) 53, , the boot loader information of the secure element 60 may be read into the RAM (REE) 53.

セキュアエレメント60は、ブートローダ情報の他に、SEID、ユーザ認証情報(PIN等)を保持する。SEIDは、セキュアエレメント60を一意に識別するIDである。ブート管理サーバ200からセキュアエレメント60を特定するための値として用いることができる。ユーザ認証情報は、セキュアエレメント60がIoTデバイス100のユーザ認証を行うためにセキュアエレメント60に保持している情報であり、例えば、ユーザPINや指紋認証等の生体認証情報を保持している。 The secure element 60 holds SEID and user authentication information (PIN, etc.) in addition to bootloader information. SEID is an ID that uniquely identifies the secure element 60. It can be used as a value for identifying the secure element 60 from the boot management server 200. The user authentication information is information held in the secure element 60 in order for the secure element 60 to authenticate the user of the IoT device 100, and holds, for example, biometric authentication information such as a user PIN and fingerprint authentication.

ブート管理サーバ200は、SEIDごとに、当該SEIDのセキュアエレメント60に保持されているブートローダのバージョンを保持するブートローダ管理テーブル、及び現時点におけるブートローダの最新バージョンなどを有する。 The boot management server 200 has, for each SEID, a boot loader management table that holds the version of the boot loader held in the secure element 60 of the SEID, and the latest version of the boot loader at the current time.

次に、本実施の形態のセキュアブートについて説明する。以下では、基本的なブートプロセス、ブートローダによる実行イメージの検証、ブートローダ読み出し前の認証、ブートローダ情報の遠隔管理、及びブートローダ情報の更新について説明する。 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 IoT device 100 powers on the IoT device 100. Note that depending on the IoT device, an operation such as restarting may be performed in addition to turning on the power.

P2(ブートローダ情報読出機能の実行):IoTデバイス100の電源が投入されると、初期実行コードであるブートローダ情報読出機能42の実行を開始する。 P2 (Execution of bootloader information reading function): When the power of the IoT device 100 is turned on, execution of the bootloader information reading function 42, which is the initial execution code, is started.

P3(ブートローダ情報取得指示):ブートローダ情報読出機能42は、セキュアエレメント60との通信機能を有効化し、セキュアエレメント60に情報取得用コマンドを送出する。 P3 (Bootloader information acquisition instruction): The bootloader information reading function 42 enables the communication function with the secure element 60 and sends an information acquisition command to the secure element 60.

P4(ブートローダ情報取得):セキュアエレメント60は、レスポンスとして、ブートローダ11、ブートローダ検証鍵(公開鍵)23、ブートローダデジタル署名31、ブートローダ検証鍵証明書32、OS検証鍵(公開鍵)25、及びOS検証鍵証明書34(これらを纏めてブートローダ情報ともいう)を返送する。ブートローダ情報読出機能42は、ブートローダ情報をSoC50内のRAM上の指定された領域(ここでは、RAM(TEE)54)に配置する。 P4 (Bootloader information acquisition): The secure element 60 receives the bootloader 11, bootloader verification key (public key) 23, bootloader digital signature 31, bootloader verification key certificate 32, OS verification key (public key) 25, and OS as a response. The verification key certificate 34 (collectively referred to as boot loader information) is returned. The bootloader information reading function 42 places the bootloader information in a designated area on the RAM in the SoC 50 (in this case, the RAM (TEE) 54).

P5(ブートローダ検証機能の実行):ブートローダ情報読出機能42の末尾で、ブートローダ検証機能43へ制御を移行し、ブートローダ情報読出機能42を実行する。 P5 (Execution of bootloader verification function): At the end of the bootloader information reading function 42, control is transferred to the bootloader verification function 43, and the bootloader information reading function 42 is executed.

P6(ブートローダ検証鍵の正当性検証):ブートローダ検証機能43は、ブートローダ11自身の検証に先立って、ブートローダ検証鍵(公開鍵)23の正当性を検証する。具体的には、IoTデバイス100がROM51に保持しているセキュアエレメントCA公開鍵21を用いて、ブートローダ検証鍵証明書32内の署名を復号し、ブートローダ検証鍵(公開鍵)23との比較を行う。両者が一致した場合のみ検証が成功したとみなす。両者が不一致等、検証が失敗した場合は、ここでコードの実行を停止し、IoTデバイス100の電源を切る。 P6 (Verification of validity of bootloader verification key): The bootloader verification function 43 verifies the validity of the bootloader verification key (public key) 23 prior to verification of the bootloader 11 itself. Specifically, the IoT device 100 uses the secure element CA public key 21 held in the ROM 51 to decrypt the signature in the bootloader verification key certificate 32 and compare it with the bootloader verification key (public key) 23. conduct. Verification is considered successful only if both match. If the verification fails, such as when the two do not match, execution of the code is stopped and the power of the IoT device 100 is turned off.

P7(デジタル署名によるブートローダの検証):ブートローダ検証機能43は、RAM(TEE)54の所定位置に配置されたブートローダデジタル署名31を使って、復号したブートローダ11を検証する。ここでは、ブートローダデジタル署名31をブートローダ検証鍵(公開鍵)23により復号するとともに、ブートローダ11のハッシュ値を求め、両者が一致するか否かに応じて検証する。両者が一致した場合のみ検証が成功したとみなす。両者が不一致等、検証が失敗した場合は、ここでコードの実行を停止し、IoTデバイス100の電源を切る。 P7 (Verification of bootloader using digital signature): The bootloader verification function 43 verifies the decrypted bootloader 11 using the bootloader digital signature 31 placed at a predetermined location in the RAM (TEE) 54. Here, the boot loader digital signature 31 is decrypted using the boot loader verification key (public key) 23, the hash value of the boot loader 11 is obtained, and verification is performed depending on whether the two match. Verification is considered successful only if both match. If the verification fails, such as when the two do not match, execution of the code is stopped and the power of the IoT device 100 is turned off.

P8(ブートローダ実行機能の実行):検証が成功した場合、ブートローダ検証機能43の末尾で、ブートローダ実行機能44へ制御を移行し、ブートローダ実行機能44を実行する。 P8 (Execution of bootloader execution function): If the verification is successful, control is transferred to the bootloader execution function 44 at the end of the bootloader verification function 43, and the bootloader execution function 44 is executed.

P9(ブートローダの実行):ブートローダ実行機能44は、RAM(TEE)54の所定の場所に配置された検証済のブートローダ11を実行する。 P9 (bootloader execution): The bootloader execution function 44 executes the verified bootloader 11 placed at a predetermined location in the RAM (TEE) 54.

上述の例において、電源投入時における初期実行コードの設定は、IoTデバイス製造者によってROM51上に設定され、以降第三者によって変更することはできない。また、初期実行コードは、ブートローダ情報読出機能42であり、この設定はROM51上に焼き付けられた固定値になっている。また、ブートローダ11の検証処理は、対象鍵(公開鍵)による署名検証を実行しているが、署名生成に関するアルゴリズムと同様、当該アルゴリズムに対応した検証方法であれば、いずれの方法でもよい。 In the above example, the initial execution code settings at power-on are set on the ROM 51 by the IoT device manufacturer and cannot be changed by a third party thereafter. Further, the initial execution code is the boot loader information reading function 42, and this setting is a fixed value burned into the ROM 51. Further, the verification process of the boot loader 11 executes signature verification using a target key (public key), but as with the algorithm related to signature generation, any verification method that is compatible with the algorithm may be used.

図3に例示した処理は、ブートローダ11の正当性を検証するための処理であるが、基本的にブートローダ11はそれ単体ではIoTデバイス100の機能を実現することができない。IoTデバイスの機能を実現するためには、ブートローダ11はOS等の後続のソフトウェア(ブートローダ11以降のソフトウェア)を起動させる必要がある。 The process illustrated in FIG. 3 is a process for verifying the validity of the bootloader 11, but basically the bootloader 11 alone cannot realize the functions of the IoT device 100. In order to realize the functions of the IoT device, the boot loader 11 needs to start subsequent software such as an OS (software after the boot loader 11).

本実施の形態では、後続のソフトウェアは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 IoT device 100 in advance (not retained in the secure element 60), but it is deployed directly on the IoT device 100 from the boot loader 11. Simply running the software cannot detect that the software has been tampered with, leaving security vulnerabilities. In the following, by holding a key for verifying subsequent software in the secure element 60 and executing logic for verifying subsequent software from the boot loader 11, three parties: the secure element 60, the boot loader 11, and the subsequent software We will explain the process by which a trust chain can be connected to the software to ensure the validity of subsequent software.

図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 boot loader 11 verifies the validity of the OS verification key (public key) 25 before verifying the IoT device 100 itself. Specifically, the IoT device 100 uses the secure element CA public key 21 held in the ROM 51 to decrypt the signature in the OS verification key certificate 34 and compare it with the OS verification key (public key) 25. conduct. Verification is considered successful only if both match. If the verification fails, such as when the two do not match, execution of the code is stopped and the power of the IoT device 100 is turned off.

P11(IoTデバイスOSの検証):ブートローダ11は、OS検証鍵(公開鍵)25を用いてNVM52上のIoTデバイスOS12の検証を行う。ブートローダ11自身の検証と同様、OSデジタル署名33をOS検証鍵(公開鍵)25で復号するとともに、ブートローダ11のハッシュ値を求め、両者が一致するか否かに応じて検証する。両者が一致した場合のみ検証が成功したとみなす。両者が不一致等、検証が失敗した場合は、ここでコードの実行を停止し、IoTデバイス100の電源を切る。 P11 (Verification of IoT device OS): The boot loader 11 verifies the IoT device OS 12 on the NVM 52 using the OS verification key (public key) 25. Similar to the verification of the boot loader 11 itself, the OS digital signature 33 is decrypted using the OS verification key (public key) 25, the hash value of the boot loader 11 is obtained, and verification is performed depending on whether the two match. Verification is considered successful only if both match. If the verification fails, such as when the two do not match, execution of the code is stopped and the power of the IoT device 100 is turned off.

P12(OSの実行):ブートローダ11は、NVM52上の所定の場所に配置された検証済のIoTデバイスOS12を実行する。 P12 (OS execution): The boot loader 11 executes the verified IoT device OS 12 placed at a predetermined location on the NVM 52.

セキュアエレメント60内にブートに必要な情報を保持することにおり、セキュアエレメント60は、ブートに必要な情報の提供可否を選択できるようになる。このことを利用して、IoTデバイス100の電源を投入した際、セキュアエレメント60内の情報を元にユーザ認証を行うことで、不正なユーザによるブートを抑止することができる。以下では、起動時にユーザ認証を行う場合について説明する。 By holding the information necessary for booting in the secure element 60, the secure element 60 can select whether to provide the information necessary for booting. Taking advantage of this, when the IoT device 100 is powered on, user authentication is performed based on the information in the secure element 60, thereby preventing booting by an unauthorized user. In the following, a case will be described in which user authentication is performed at startup.

図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 IoT device 100 powers on the IoT device 100.

P22(ユーザ認証情報の入力):IoTデバイス100は、電源を投入されると、初期実行コードである起動前ユーザ認証機能41を実行する。起動前ユーザ認証機能41は、セキュアエレメント60との通信機能を有効化し、PINや指紋等のユーザ認証情報の入力を待ち受ける。 P22 (Input of user authentication information): When the power is turned on, the IoT device 100 executes the pre-boot user authentication function 41, which is an initial execution code. The pre-boot user authentication function 41 enables a communication function with the secure element 60 and waits for input of user authentication information such as a PIN or fingerprint.

P23(ユーザ認証):ユーザ認証情報が入力された場合、起動前ユーザ認証機能41は、入力されたユーザ認証情報をセキュアエレメント60に送出する。セキュアエレメント60は、受信したユーザ認証情報と、セキュアエレメント60内のユーザ認証情報とを比較しユーザ認証を行い、認証可否を返送する。認証が失敗した場合、ここでコードの実行を停止し、IoTデバイス100の電源を切る。 P23 (user authentication): When user authentication information is input, the pre-boot user authentication function 41 sends the input user authentication information to the secure element 60. The secure element 60 performs user authentication by comparing the received user authentication information with the user authentication information within the secure element 60, and returns whether or not authentication is possible. If the authentication fails, the code execution is stopped and the IoT device 100 is powered off.

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 secure element 60 has a function of opening a secret communication path with the outside using itself as an endpoint, it becomes possible to securely manage the boot loader information of the IoT device 100 from the outside. When it becomes necessary to update the bootloader itself to add functionality or prevent security vulnerabilities, the person managing the IoT device 100 can identify the IoT device running the old bootloader and replace the old bootloader with the new bootloader. is required. In this embodiment, the boot loader can be updated securely. In the following, first, a case will be described in which the secure element 60 notifies the server of boot loader information.

図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 boot loader 11 enables the network communication function of the IoT device 100 and opens a secret communication path with the boot management server 200 for the secure element 60. Here, only the network communication function (Ethernet (trademark) / Wi-Fi (trademark), etc.) is used as the function of the IoT device 100, and TLS (Transport Layer Security) etc. is used between the secure element 60 and the boot management server 200. Although a secure channel is established, if the secure element 60 is capable of independent network communication, it may communicate alone.

P42(セキュアエレメントへのバージョン情報送信指示):ブートローダ11は、セキュアエレメント60に対して、現在保持しているブートローダのバージョン情報を送信するように指示する。このとき、ブートローダ11は、自身が保持しているバージョン情報をセキュアエレメント60に送信する。なお、本明細書では、ブートローダのバージョン情報そのものを使用する例を挙げて説明しているが、バージョン情報に限定されるものではない。例えば、ブートローダのバージョンを一意に特定可能な特定情報であればよい。特定情報は、バージョン情報そのものだけでなく、例えば、ブートローダのハッシュ値など、ブートローダそのもののバイナリ列に対して所定の演算を行って得られた値などでもよい。 P42 (Instruction to transmit version information to secure element): The boot loader 11 instructs the secure element 60 to transmit the currently held version information of the boot loader. At this time, the boot loader 11 transmits the version information it holds to the secure element 60. Note that although this specification describes an example in which the version information of the boot loader itself is used, the present invention is not limited to the version information. For example, any specific information that can uniquely identify the version of the boot loader may be used. The specific information may be not only the version information itself, but also 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.

P43(バージョン情報の比較):セキュアエレメント60は、ブートローダ11から受信したバージョン情報と、自身が保持しているブートローダのバージョン情報とを比較し、一致可否を判定する。 P43 (Comparison of version information): The secure element 60 compares the version information received from the boot loader 11 with the version information of the boot loader that it holds, and determines whether they match.

P44(サーバへのバージョン情報送信):セキュアエレメント60は、ブート管理サーバ200に対して比較結果を自身のIDとともに送信する。両者が一致している場合は、一致したバージョン情報を送信する。両者が不一致の場合、IoTデバイス100は、セキュアエレメント60が保持しているブートローダのバージョンとは異なるバージョンのブートローダ11で動作していることになるため、ブートローダ11側のバージョン番号と、バージョン番号が不一致である旨をブート管理サーバ200に通知する。 P44 (transmission of version information to server): The secure element 60 transmits the comparison result along with its own ID to the boot management server 200. If the two match, the matching version information is sent. If the two do not match, the IoT device 100 is operating with a version of the bootloader 11 that is different from the version of the bootloader held by the secure element 60, so the version number on the bootloader 11 side and the version number are different. The boot management server 200 is notified of the mismatch.

上述の例では、ブートローダ11から処理を開始しているが、処理開始タイミングは、ブートローダ実行時である必要は必ずしもなく、OS等の後続のソフトウェアが動作しているタイミングで処理を開始してもよい。また、上述の例では、取得したバージョン情報と保持したバージョン情報との比較結果をブート管理サーバ200へ送信する構成であるが、これに限定されるものではない。例えば、セキュアエレメント60は、自身が開設した秘匿通信路を経由して、取得したバージョン情報及び保持したバージョン情報をブート管理サーバ200へ送信してもよい。この場合、ブート管理サーバ200において、両者の比較検証を行うことができる。 In the above example, the process is started from the bootloader 11, but the timing to start the process does not necessarily have to be when the bootloader is executed. good. Further, in the above example, the configuration is such that the comparison result between the acquired version information and the held version information is sent to the boot management server 200, but the configuration is not limited to this. For example, the secure element 60 may transmit the acquired version information and the held version information to the boot management server 200 via a secret communication path established by itself. In this case, the boot management server 200 can compare and verify the two.

ブートローダ11自身のバージョンと、セキュアエレメント60内のブートローダのバージョンが不一致の場合、セキュアエレメント60指定のバージョンと異なるバージョンでブートされているため、ブートローダ11の改ざんが行われている可能性が想定される。ブート管理サーバ200が不一致である旨の通知を受信した際の動作については、IoTデバイス100のセキュリティポリシーに依存する事項であるが、例えば、IoTデバイス100に対して遠隔で再起動指示を出力する、あるいは、セキュリティアタックとみなしてアラートを通知する等、種々の選択肢がある。 If the version of the boot loader 11 itself and the version of the boot loader in the secure element 60 do not match, it is assumed that the boot loader 11 may have been tampered with because it has been booted with a version different from the version specified by the secure element 60. Ru. The operation when the boot management server 200 receives a notification of mismatch depends on the security policy of the IoT device 100, but for example, the boot management server 200 remotely outputs a reboot instruction to the IoT device 100. There are various options, such as treating the attack as a security attack and notifying an alert.

上述のように、ブート管理サーバ200は、ブートローダのバージョン情報をIoTデバイス100から収集することで、各IoTデバイス100上で稼働しているブートローダのバージョンを収集可能となる。ブート管理サーバ200は、古いブートローダを持つセキュアエレメント60と通信することで、古いブートローダを新しいものに置き換えることが可能になる。以下では、ブートローダ情報の更新について説明する。 As described above, by collecting boot loader version information from the IoT devices 100, the boot management server 200 can collect the versions of the boot loaders running on each IoT device 100. By communicating with the secure element 60 that has an old boot loader, the boot management server 200 can replace the old boot loader with a new one. Updating the bootloader information will be described below.

図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 boot management server 200 identifies the secure element 60 that is the target of the update instruction from the version of the boot loader of each secure element 60. For example, various methods can be used for update determination, such as checking the version corresponding to the ID of each secure element 60 and, if different from the latest version, specifying the secure element 60 as an update target.

P52(更新対象ブートローダ特定):ブート管理サーバ200は、セキュアエレメント60に送信するバージョンのブートローダ情報(ブートローダを含む)を特定する。ここでは、単純に最新バージョンのブートローダに更新することとしている。 P52 (Identification of boot loader to be updated): The boot management server 200 specifies the version of boot loader information (including the boot loader) to be sent to the secure element 60. Here, we will simply update to the latest version of the bootloader.

P53(セキュアエレメントへのブートローダコピー):ブート管理サーバ200は、P52で特定したブートローダ情報を、秘匿通信路経由でセキュアエレメント60に送信する。セキュアエレメント60は、受信したブートローダで既存のブートローダを上書きし、保持しているバージョン情報を更新する。 P53 (bootloader copy to secure element): The boot management server 200 transmits the bootloader information specified in P52 to the secure element 60 via the secret communication path. The secure element 60 overwrites the existing boot loader with the received boot loader and updates the version information it holds.

P54(更新後のバージョン通知):セキュアエレメント60は、ブートローダ更新後、更新後のブートローダのバージョンをブート管理サーバ200に送信する。 P54 (Notification of updated version): After updating the boot loader, the secure element 60 transmits the updated version of the boot loader to the boot management server 200.

P55(ブートローダ管理テーブルの更新):ブート管理サーバ200は、ブートローダ管理テーブルの対応箇所(更新後のバージョンを受信したセキュアエレメントの行)をセキュアエレメント60から受信したブートローダのバージョンで更新する。図の例では、バージョン1.0.0が、1.0.1に更新されている。 P55 (update of boot loader management table): The boot management server 200 updates the corresponding part of the boot loader management table (the row of the secure element that received the updated version) with the version of the boot loader received from the secure element 60. In the illustrated example, version 1.0.0 has been updated to 1.0.1.

IoTデバイス100がすでにOS起動中の場合、セキュアエレメント60内のブートローダを更新するだけでは、デバイス側で実際に稼動しているソフトウェアは更新されておらず、再起動の必要がある。再起動に関する対応については、ブート管理サーバ200や他のサーバからIoTデバイス100に対し遠隔で再起動を指示すればよい。再起動の指示は、例えば、表示画面などに再起動を促す旨の文字や画像を表示してもよく、既存の技術を組み合わせてもよい。 If the IoT device 100 is already running the OS, simply updating the boot loader in the secure element 60 does not update the software actually running on the device, and requires rebooting. As for measures related to rebooting, rebooting may be instructed to the IoT device 100 remotely from the boot management server 200 or another server. The restart instruction may be given by, for example, displaying text or images on a display screen or the like to urge restart, or by combining existing techniques.

本実施の形態のデバイスは、セキュアブート機能を有するデバイスであって、ブートローダ、ブートローダ検証鍵、及びブートローダの署名を含むブートローダ情報を保持するセキュアエレメントと、初期実行コードとして、ブートローダ情報読出処理、ブートローダ検証処理、及びブートローダ実行処理を実行順序も含めて保持する書き換え不可能な不揮発性メモリとを備え、デバイス起動時に、前記ブートローダ情報読出処理を実行して、前記セキュアエレメントから前記ブートローダ情報を読み出し、前記ブートローダ検証処理は、前記ブートローダ検証鍵、及び前記ブートローダの署名を用いて前記ブートローダを検証し、検証が成功した場合、前記ブートローダ実行処理は、前記ブートローダを実行する。 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 secret communication path 11 Bootloader 12 IoT device OS
21 Secure element CA public key 22 Secure element CA private key 23 Bootloader verification key (public key)
24 Bootloader signature generation key (private key)
25 OS verification key (public key)
26 OS signature generation key (private key)
31 Bootloader digital signature 32 Bootloader verification key certificate 33 OS digital signature 34 OS verification key certificate 40 Communication path with secure element 41 Pre-boot user authentication function 42 Bootloader information reading function 43 Bootloader verification function 44 Bootloader execution function 50 SoC
51 ROM
52 NVM
53 RAM (REE)
54 RAM (TEE)
60 Secure element 100 IoT device 200 Boot management server

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.
前記セキュアエレメントから読み出されたブートローダ情報を保持するセキュアな領域を有するSoCを備える、
請求項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.
JP2020061466A 2020-03-30 2020-03-30 Devices, secure elements and device secure boot methods Active JP7428049B2 (en)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (6)

* Cited by examiner, † Cited by third party
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