JP2021164009A - Device, secure element and secure boot method for device - Google Patents

Device, secure element and secure boot method for device Download PDF

Info

Publication number
JP2021164009A
JP2021164009A JP2020061466A JP2020061466A JP2021164009A JP 2021164009 A JP2021164009 A JP 2021164009A JP 2020061466 A JP2020061466 A JP 2020061466A JP 2020061466 A JP2020061466 A JP 2020061466A JP 2021164009 A JP2021164009 A JP 2021164009A
Authority
JP
Japan
Prior art keywords
boot loader
secure element
verification
information
boot
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2020061466A
Other languages
Japanese (ja)
Other versions
JP7428049B2 (en
Inventor
正徳 浅野
Masanori Asano
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

Abstract

To provide a device, secure element, and secure boot method for the device that enable a secure boot with enhanced security.SOLUTION: A device having a secure boot function comprises: a secure element that retains boot loader information including a boot loader, a boot loader verification key, and a signature of the boot loader; and a non-rewritable non-volatile memory that statically carries an initial execution code such as a boot loader information readout process, a boot loader verification process, and a boot loader execution process including a sequence of execution. At the startup of the device, the boot loader information readout process is executed to read out the boot loader information from the secure element, the boot loader verification process verifies the boot loader using the boot loader verification key and the signature of the boot loader, and the boot loader execution process executes the boot loader in response to the successful verification.SELECTED DRAWING: Figure 3

Description

本発明は、デバイス、セキュアエレメント及びデバイスのセキュアブート方法に関する。 The present invention relates to devices, secure elements and secure boot methods for devices.

IoTデバイスにおけるセキュリティ確保の技術として、セキュアブートと呼ばれる技術が普及し始めている。セキュアブートとは、PC等のデバイス起動時に、予めデジタル署名が施されたソフトウェアしか実行できないようにすることで、不正なソフトウェアによるデバイスの起動を防止するための技術である。 As a technology for ensuring security in IoT devices, a technology called secure boot has begun to spread. Secure boot is a technique for preventing unauthorized software from booting a device by allowing only software with a digital signature to be executed in advance when the device such as a PC is booted.

特許文献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, at power up, the boot loader is the Root of Trust in secure boot. In such a secure boot, for example, the bootloader validates the Root of Trust code and, if successful, executes the Root of Trust code. The Root of Trust code verifies the execution image of the OS, and if the verification is successful, the OS is executed, and the boot is completed when the OS startup process is completed.

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

しかし、従来のセキュアブートの技術には、以下のような問題が残存する。鍵による検証や復号を行わせて実行コードの正当性を検証する場合、別々の媒体に保持されている鍵と実行コードに強い関連性が発生し、更新する場合には、両者の更新が必要となる。また、IoTデバイスは、一般に長期間、場合によっては無人で連続稼働することもあり、鍵を保持するには耐タンパ性が求められる。また、公開鍵に基づくソフトウェア検証を行う場合、鍵とソフトウェアの両方を改ざんして正当な検証が行われたように見せかけることが可能となる。さらに、ブートローダを信頼できるRoot of Trustをベースとして更新させることが難しく、更新のタイミングで不正に書き換えられる余地がある。 However, the following problems remain in the conventional secure boot technology. When verifying the validity of the executable code by performing verification or decryption with the key, there is a strong relationship between the key held in different media and the executable code, and when updating, it is necessary to update both. It becomes. Further, the IoT device generally operates continuously for a long period of time without any person, and tamper resistance is required to hold the key. In addition, when software verification is performed based on a public key, it is possible to tamper with both the key and the software to make it appear that valid verification has been performed. Furthermore, it is difficult to update the boot loader based on the reliable Root of Trust, and there is room for unauthorized rewriting at the timing of the update.

本発明は、斯かる事情に鑑みてなされたものであり、より安全性の高いセキュアブートを実現できるデバイス、セキュアエレメント及びデバイスのセキュアブート方法を提供することを目的とする。 The present invention has been made in view of such circumstances, and an object of the present invention is to provide a device, a secure element, and a secure boot method for a device capable of realizing a more secure secure boot.

本発明の実施の形態に係るデバイスは、セキュアブート機能を有するデバイスであって、ブートローダ、ブートローダ検証鍵、及びブートローダの署名を含むブートローダ情報を保持するセキュアエレメントと、初期実行コードとして、ブートローダ情報読出処理、ブートローダ検証処理、及びブートローダ実行処理を実行順序も含めて保持する書き換え不可能な不揮発性メモリとを備え、デバイス起動時に、前記ブートローダ情報読出処理を実行して、前記セキュアエレメントから前記ブートローダ情報を読み出し、前記ブートローダ検証処理は、前記ブートローダ検証鍵、及び前記ブートローダの署名を用いて前記ブートローダを検証し、検証が成功した場合、前記ブートローダ実行処理は、前記ブートローダを実行する。 The device according to the embodiment of the present invention is a device having a secure boot function, which is a secure element that holds boot loader information including a boot loader, a boot loader verification key, and a boot loader signature, and reads boot loader information as an initial execution code. It is provided with a non-rewritable non-volatile memory that holds the process, boot loader verification process, and boot loader execution process including the execution order. When the device is started, the boot loader information read process is executed, and the boot loader information is transmitted from the secure element. Is read, the boot loader verification process verifies the boot loader using the boot loader verification key and the boot loader signature, and if the verification is successful, the boot loader execution process executes the boot loader.

本発明の実施の形態に係るセキュアエレメントは、セキュアブート機能を有するデバイスに実装されるセキュアエレメントであって、ブートローダ、ブートローダ検証鍵、及びブートローダの署名を含むブートローダ情報を保持し、デバイス起動時に、前記ブートローダの検証のために前記ブートローダ情報を前記デバイスへ出力する。 The secure element according to the embodiment of the present invention is a secure element implemented in a device having a secure boot function, and holds boot loader information including a boot loader, a boot loader verification key, and a boot loader signature. The boot loader information is output to the device for verification of the boot loader.

本発明の実施の形態に係るデバイスのセキュアブート方法は、初期実行コードとして、ブートローダ情報読出処理、ブートローダ検証処理、及びブートローダ実行処理を実行順序も含めて書き換え不可能な不揮発性メモリに保持しておき、デバイス起動時に、前記ブートローダ情報読出処理を実行して、セキュアエレメントから、ブートローダ、ブートローダ検証鍵、及びブートローダの署名を含むブートローダ情報を読み出し、前記ブートローダ検証処理は、前記ブートローダ検証鍵、及び前記ブートローダの署名を用いて前記ブートローダを検証し、検証が成功した場合、前記ブートローダ実行処理は、前記ブートローダを実行する。 In the secure boot method of the device according to the embodiment of the present invention, the boot loader information reading process, the boot loader verification process, and the boot loader execution process are held in a non-rewritable non-volatile memory including the execution order as the initial execution code. When the device is started, the boot loader information read process is executed to read the boot loader information including the boot loader, the boot loader verification key, and the boot loader signature from the secure element, and the boot loader verification process is performed on the boot loader verification key and the boot loader verification key. The boot loader is verified using the boot loader signature, and if the verification is successful, the boot loader execution process executes the boot loader.

本発明によれば、より安全性の高いセキュアブートを実現できる。 According to the present invention, a more secure secure boot can be realized.

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

以下、本発明をその実施の形態を示す図面に基づいて説明する。図1は本実施の形態の鍵、証明書及び署名のトラストチェーン(Trust Chain)を示す模式図である。本実施の形態では、IoTデバイス製造者、セキュアエレメント製造者、ブートローダ以降に実行されるソフトウェア製造者の3者がそれぞれ必要なデータを保持しつつ、対象鍵ペアを各製造者が適切に管理することで、複数のソフトウェア実装主体が協力してセキュアなブートを実現する。IoTデバイスは、例えば、OSを搭載して独立動作をすることができるデバイス(電子デバイスとも称する)であり、「モノのインターネット」(IoT)でいうところの「モノ」に該当するデバイスである。 Hereinafter, the present invention will be described with reference to the drawings showing the embodiments thereof. FIG. 1 is a schematic diagram showing a trust chain of a key, a certificate, and a signature according to the present embodiment. In the present embodiment, the IoT device manufacturer, the secure element manufacturer, and the software manufacturer executed after the boot loader hold the necessary data, and each manufacturer appropriately manages the target key pair. As a result, multiple software implementers work together to achieve a secure boot. The IoT device is, for example, a device (also referred to as an electronic device) capable of independently operating by mounting an OS, and is a device corresponding to "things" in the "Internet of Things" (IoT).

なお、本実施の形態では、説明を容易にするため、ブートローダ以降に実行されるソフトウェアとしてIoTデバイスOS(例えば、RTOS:Real Time Operating System、Linux(登録商標)等)を想定しているが、これらに限定されるものではなく、Dockerイメージ等のソフトウェアコンテンツ等も含め、ブートローダ以降に実行されるソフトウェアイメージ全てが含まれる。 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 software executed after the boot loader. The present invention is not limited to these, and includes all software images executed after the boot loader, including software contents such as a Docker image.

データは、大別して、実行可能なソフトウェア、鍵、署名(証明書)の3つに分類される。まず、実行可能なソフトウェアについて説明する。 Data is roughly classified into three categories: executable software, keys, and signatures (certificates). First, the executable software will be described.

実行可能なソフトウェアには、例えば、ブートローダ11、及びIoTデバイスOS12が含まれる。ブートローダ11は、IoTデバイス上でブート処理を実行するソフトウェアであり、IoTデバイスの特定の処理(ブートローダ実行機能)からOSの起動を行うためのコードである。 Executable software includes, for example, a boot loader 11 and an IoT device OS 12. The boot loader 11 is software that executes a boot process on the IoT device, and is a code for booting 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 an RTOS or a Rich OS (Linux, etc.). The boot loader 11 and the IoT device OS 12 may be implemented by the IoT device manufacturer and the IoT device OS vendor, respectively, or both the boot loader 11 and the IoT device OS 12 may be implemented by either main body. The boot loader 11 needs to be provided to the secure element manufacturer.

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

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

ブートローダ検証鍵(公開鍵)23は、セキュアエレメント製造者によって生成されたブートローダに対する署名を検証するための鍵である。ブートローダ署名生成鍵(秘密鍵)24は、セキュアエレメント製造者がブートローダに対する署名を生成するための鍵である。 The boot loader verification key (public key) 23 is a key for verifying the signature of the boot loader generated by the secure element manufacturer. The boot loader signature generation key (private key) 24 is a key for the secure element manufacturer to generate a signature for the boot loader.

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 of the IoT device OS generated by the IoT device OS vendor. The OS signature generation key (private key) 26 is a key for 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, the signature will be described. Signature is a technique that allows the recipient to know that the transmitted content has been tampered with when it has been tampered with. Generally, the sender hashes the data to generate a digest, and encrypts the generated digest with a private key to generate a signature. The sender sends the signature along with the data. The recipient receives the data and the signature and hashes the data to generate a digest. The recipient decrypts the signature with the public key to get the digest. The two digests are compared and a match / mismatch is determined. If they match, you can be sure that the data has not been tampered with.

署名には、例えば、ブートローダデジタル署名31、ブートローダ検証鍵証明書32、OSデジタル署名33、及びOS検証鍵証明書34が含まれる。 The signature includes, 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 boot loader digital signature 31 is a signature generated by the boot loader signature generation key (private key) 24 for the boot loader 11. For example, the hash value of the boot loader 11 (binary string) can be encrypted with the boot loader signature generation key (private key) 24 as the signature. The boot loader verification key certificate 32 is a signature generated by the secure element CA private key 22 for the boot loader verification key (public key) 23. For example, the hash value of the boot loader verification key (public key) 23 can be encrypted with the secure element CA private key 22 as a 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 by the OS signature generation key (private key) 26 for the image of the IoT device OS. For example, the hash value of the IoT device OS (binary string) can be encrypted with the OS signature generation key (private key) 26 as the signature. The OS verification key certificate 34 is a signature generated by the secure element CA private key 22 for the OS verification key (public key) 25. For example, the hash value of the OS verification key (public key) 25 can be encrypted with the secure element CA private key 22 as a signature.

本実施の形態では、署名対象のハッシュ値に対して署名生成鍵で暗号化を行うという方法で署名を生成しているが、署名生成アルゴリズムは、これに限定されるものではなく、対象鍵暗号に依拠する署名生成、検証方法であれば、いずれの方法を用いてもよい。 In the present embodiment, the signature is generated by encrypting the hash value of the signature target with the signature generation key, but the signature generation algorithm is not limited to this, and the target key encryption is used. Any method may be used as long as it is a signature generation and verification method that relies on.

署名検証は、検証鍵によって署名を復号し、署名対象と比較することで行われる。検証鍵は署名生成鍵と対向した鍵でなればならず、かつ署名生成は対向する秘密鍵を持っていなければ不可能である。よって、署名対象の検証に成功した場合、署名対象は秘密鍵を有する主体によって署名が行われ、かつ署名時点から改ざんされていないことを証明したことになる。 Signature verification is performed by decrypting the signature with the verification key and comparing it with the signature target. The verification key must be the key opposite to the signature generation key, and signature generation is impossible without the opposite private key. Therefore, if the verification of the signature target is successful, it is proved that the signature target has been signed by the entity having the private key and has not been tampered with since the time of signature.

本実施の形態では、(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 by the boot loader verification key (public key) 23 (proof that the boot loader 11 has not been tampered with), and (2) boot loader verification key by the secure element CA public key 21. Two signature verifications are performed: verification of the (public key) 23 (proof that the boot loader verification key (public key) 23 has not been tampered with). As a result, the boot loader 11 is signed by the secure element manufacturer and has not been tampered with, and the verification process itself has not been tampered with (verification is performed with a valid verification key) by the Trust Chain. The legitimacy can be ensured and secure boot can be realized.

また、OSに対して検証する場合は、(1)OS検証鍵(公開鍵)25によるOSデジタル署名33の検証(OSが改ざんされていないことの証明)、(2)セキュアエレメントCA公開鍵21によるOS検証鍵(公開鍵)25の検証(OS検証鍵(公開鍵)25が改ざんされていないことの証明)、というTrust Chainによって正当性を確保する。これにより、OSはOS製造者(ベンダ)が署名を施し、改ざんされていないものであり、当該検証に用いた鍵はセキュアエレメント製造者によって検証されたことを確保することができる。 When verifying the OS, (1) verification of the OS digital signature 33 by the OS verification key (public key) 25 (proof that the OS has not been tampered with), (2) secure element CA public key 21 The validity is ensured by the Trust Chain of verification of the OS verification key (public key) 25 by (proof that the OS verification key (public key) 25 has not been tampered with). As a result, it can be ensured that the OS is 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 view showing an example of the configuration of the IoT device 100. The IoT device 100 is a device for which secure boot is implemented, and includes, for example, an embedded board on which an RTOS, Linux, or the like operates. The IoT device 100 has a SoC (System on Chip) 50 and a secure element 60 inside. The IoT device 100 may include a user authentication input device. The user authentication input device is a device for receiving input of authentication information from a user when user authentication is required at the time of starting the IoT device 100, 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 SoC50 is an IC chip that holds the main functions of the IoT device 100. The SoC50 has a ROM 51, an NVM 52, a RAM (REE) 53, and a RAM (TEE) 54 as non-rewritable non-volatile memory. In this specification, ROM is given as an example of a non-rewritable non-volatile memory. Specifically, the non-rewritable non-volatile memory includes a mask ROM and a programmable ROM. Programmable ROM includes OTP (One Time Programmable) -ROM, EEPROM (Electronically Erasable and Programmable Read Only Memory), non-rewritable protected flash memory, and the like. Any of these may be used as the ROM 51. The secure element 60 is a security chip having tamper resistance, has a CPU and NVM (Non-volatile memory) inside, and has a secure non-volatile memory. The secure element 60 communicates with the SoC50 on a standard communication path (for example, 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 pre-boot user authentication function 41, the boot loader information read function 42, the boot loader verification function 43, the boot loader execution function 44, and the secure element CA public key 21 are held in the ROM 51.

起動前ユーザ認証機能41は、ユーザ認証入力デバイスからユーザ認証情報を受け取り、セキュアエレメント60との通信路を開設し、セキュアエレメント60に対してユーザ認証を求める処理を行う。 The pre-launch 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 a process of requesting user authentication from the secure element 60.

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

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

ブートローダ実行機能44は、復号したブートローダ11に制御を渡し、ブートローダ11を実行するための処理を行う。起動前ユーザ認証機能41、ブートローダ情報読出機能42、ブートローダ検証機能43、及びブートローダ実行機能44の処理、データはIoTデバイス製造者によってROM51内に固定的に保持(格納)されている。工場出荷後は、処理の実行順序も含め、これらの処理手順、処理内容を書き換えることはできない(セキュアな状態で保持されている)。 The boot loader execution function 44 passes control to the decrypted boot loader 11 and performs a process for executing the boot loader 11. The processing and data of the pre-boot user authentication function 41, the boot loader information reading function 42, the boot loader verification function 43, and the boot loader 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 (maintained 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 the NVM (Non-volatile memory) 52 is rewritable and can be rewritten by the user after shipment from the factory. In addition, instead of NVM (Non-volatile memory) 52, or together with NVM 52, a recording medium such as an SD card or eMMC (embedded Multi Media Card) that can be stored outside the SoC50 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 SoC50 is divided into a normal memory area (REE: Rich Execution Environment) 53 that is not secure and a secure area (TEE: Trusted Execution Environment) 54. In the present embodiment, the boot loader information of the secure element 60 is read into the RAM (TEE) 54, but in the case of the SoC which does not have the RAM (TEE) 54 and has only 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 SIDE, user authentication information (PIN, etc.) in addition to boot loader information. The SEI D is an ID that uniquely identifies the secure element 60. It can be used as a value for specifying the secure element 60 from the boot management server 200. The user authentication information is information that the secure element 60 holds in the secure element 60 in order to perform user authentication of the IoT device 100, and holds biometric authentication information such as a user PIN and fingerprint authentication, for example.

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

次に、本実施の形態のセキュアブートについて説明する。以下では、基本的なブートプロセス、ブートローダによる実行イメージの検証、ブートローダ読み出し前の認証、ブートローダ情報の遠隔管理、及びブートローダ情報の更新について説明する。 Next, the secure boot of the present embodiment will be described. The following describes the basic boot process, verification of the execution image by the boot loader, authentication before reading the boot loader, remote management of the boot loader information, and update of the boot loader information.

図3は基本的なブートプロセスの一例を示す説明図である。以下、符号P1〜P9で示す処理について説明する。 FIG. 3 is an explanatory diagram showing an example of a basic boot process. Hereinafter, the processes represented by the reference numerals P1 to P9 will be described.

P1(電源の投入):IoTデバイス100のユーザは、IoTデバイス100の電源を投入する。なお、IoTデバイスによっては、電源の投入の他に、再起動などの動作でもよい。 P1 (Power on): The user of the IoT device 100 turns on the power of the IoT device 100. Depending on the IoT device, in addition to turning on the power, an operation such as restarting may be performed.

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

P3(ブートローダ情報取得指示):ブートローダ情報読出機能42は、セキュアエレメント60との通信機能を有効化し、セキュアエレメント60に情報取得用コマンドを送出する。 P3 (boot loader information acquisition instruction): The boot loader information reading function 42 activates 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 (boot loader information acquisition): As a response, the secure element 60 includes a boot loader 11, a boot loader verification key (public key) 23, a boot loader digital signature 31, a boot loader verification key certificate 32, an OS verification key (public key) 25, and an OS. The verification key certificate 34 (collectively referred to as boot loader information) is returned. The boot loader information read function 42 arranges the boot loader information in a designated area (here, RAM (TEE) 54) on the RAM in the SoC 50.

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

P6(ブートローダ検証鍵の正当性検証):ブートローダ検証機能43は、ブートローダ11自身の検証に先立って、ブートローダ検証鍵(公開鍵)23の正当性を検証する。具体的には、IoTデバイス100がROM51に保持しているセキュアエレメントCA公開鍵21を用いて、ブートローダ検証鍵証明書32内の署名を復号し、ブートローダ検証鍵(公開鍵)23との比較を行う。両者が一致した場合のみ検証が成功したとみなす。両者が不一致等、検証が失敗した場合は、ここでコードの実行を停止し、IoTデバイス100の電源を切る。 P6 (validity verification of boot loader verification key): The boot loader verification function 43 verifies the validity of the boot loader verification key (public key) 23 prior to verification of the boot loader 11 itself. Specifically, the secure element CA public key 21 held in the ROM 51 by the IoT device 100 is used to decrypt the signature in the boot loader verification key certificate 32, and the comparison with the boot loader verification key (public key) 23 is performed. conduct. Verification is considered successful only if the two match. If the verification fails, such as a mismatch between the two, the code execution is stopped here 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 boot loader by digital signature): The boot loader verification function 43 verifies the decrypted boot loader 11 by using the boot loader digital signature 31 arranged at a predetermined position of the RAM (TEE) 54. Here, the boot loader digital signature 31 is decrypted by the boot loader verification key (public key) 23, the hash value of the boot loader 11 is obtained, and verification is performed according to whether or not the two match. Verification is considered successful only if the two match. If the verification fails, such as a mismatch between the two, the code execution is stopped here and the power of the IoT device 100 is turned off.

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

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

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

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

本実施の形態では、後続のソフトウェアはIoTデバイス100上に予めデプロイしておく(セキュアエレメント60には保持しない)ことを前提としているが、ブートローダ11から、そのままIoTデバイス100上にデプロイされているソフトウェアを実行するだけでは、当該ソフトウェアが改ざんされていることを検知できず、セキュリティ上の脆弱性が残る。以下では、セキュアエレメント60内に後続のソフトウェアを検証する鍵を保持しつつ、ブートローダ11から後続のソフトウェアを検証するロジックを実行することで、セキュアエレメント60、ブートローダ11、及び後続のソフトウェアの3者にTrust Chainを繋ぎ、後続のソフトウェアの正当性を確保することができる処理について説明する。 In the present embodiment, it is assumed that the subsequent software is deployed on the IoT device 100 in advance (it is not held in the secure element 60), but it is deployed on the IoT device 100 as it is from the boot loader 11. Just by executing the software, it is not possible to detect that the software has been tampered with, and security vulnerabilities remain. In the following, the secure element 60, the boot loader 11, and the subsequent software are executed by executing the logic for verifying the subsequent software from the boot loader 11 while holding the key for verifying the subsequent software in the secure element 60. The process that can secure the validity of the subsequent software by connecting the Trust Chain to is explained.

図4はブートローダによる実行イメージの検証の一例を示す説明図である。以下、符号P1〜P12で示す処理について説明する。なお、P1からP9までの処理は、図3の場合と同様であるので、説明は省略し、P10からP12について説明する。 FIG. 4 is an explanatory diagram showing an example of verification of the execution image by the boot loader. Hereinafter, the processes represented by the reference numerals P1 to P12 will be described. Since the processes from P1 to P9 are the same as those in FIG. 3, the description thereof will be omitted, and P10 to P12 will be described.

P10(OS検証鍵の正当性検証):ブートローダ11は、IoTデバイス100自身の検証に先立って、OS検証鍵(公開鍵)25の正当性を検証する。具体的には、IoTデバイス100がROM51に保持しているセキュアエレメントCA公開鍵21を用いて、OS検証鍵証明書34内の署名を復号し、OS検証鍵(公開鍵)25との比較を行う。両者が一致した場合のみ検証が成功したとみなす。両者が不一致等、検証が失敗した場合は、ここでコードの実行を停止し、IoTデバイス100の電源を切る。 P10 (validation of OS verification key): The boot loader 11 verifies the validity of the OS verification key (public key) 25 prior to verification of 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 compares it with the OS verification key (public key) 25. conduct. Verification is considered successful only if the two match. If the verification fails, such as a mismatch between the two, the code execution is stopped here 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 with the OS verification key (public key) 25, the hash value of the boot loader 11 is obtained, and verification is performed according to whether or not the two match. Verification is considered successful only if the two match. If the verification fails, such as a mismatch between the two, the code execution is stopped here and the power of the IoT device 100 is turned off.

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

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

図5はブートローダ読み出し前の認証の一例を示す説明図である。以下、符号P21〜P31で示す処理について説明する。 FIG. 5 is an explanatory diagram showing an example of authentication before reading the boot loader. Hereinafter, the processes represented by the reference numerals P21 to P31 will be described.

P21(電源の投入):IoTデバイス100のユーザは、IoTデバイス100の電源を投入する。 P21 (Power on): The user of the IoT device 100 turns on the power of 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-start user authentication function 41 which is the initial execution code. The pre-launch user authentication function 41 activates the communication function with the secure element 60 and waits for the input of user authentication information such as PIN and fingerprint.

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

P24からP31までの処理は、図3に例示したP2からP9の処理と同様であるので、説明は省略する。 Since the processes from P24 to P31 are the same as the processes from P2 to P9 illustrated in FIG. 3, the description thereof will be omitted.

セキュアエレメント60に、自信をエンドポイントとして外部との秘匿通信路を開設する機能がある場合、IoTデバイス100のブートローダ情報を外部からセキュアに管理することが可能になる。機能追加やセキュリティ脆弱性対策のため、ブートローダ自身の更新が必要になった場合、IoTデバイス100を管理する側として、古いブートローダが動いているIoTデバイスを特定し、古いブートローダを新しいブートローダに置き換えることが必要になる。本実施の形態では、ブートローダの更新をセキュアに実現することができる。以下では、まず、セキュアエレメント60からブートローダの情報をサーバに通知する場合について説明する。 When the secure element 60 has a function of opening a secret communication path with the outside using self-confidence as an endpoint, the boot loader information of the IoT device 100 can be securely managed from the outside. When it is necessary to update the boot loader itself to add functions or prevent security vulnerabilities, as the management side of the IoT device 100, identify the IoT device on which the old boot loader is running and replace the old boot loader with the new boot loader. Is required. In this embodiment, the boot loader can be updated securely. In the following, first, the case where the secure element 60 notifies the server of the boot loader information will be described.

図6はブートローダ情報の遠隔管理の一例を示す説明図である。以下、符号P41〜P44で示す処理について説明する。 FIG. 6 is an explanatory diagram showing an example of remote management of boot loader information. Hereinafter, the processes represented by the reference numerals P41 to P44 will be described.

P41(通信路の開設):ブートローダ11は、IoTデバイス100のネットワーク通信機能を有効化するとともに、セキュアエレメント60に対しブート管理サーバ200との秘匿通信路を開設する。ここでは、ネットワーク通信機能(Ethernet(商標)/Wi-Fi(商標)等)のみIoTデバイス100の機能を利用し、セキュアエレメント60とブート管理サーバ200との間でTLS(Transport Layer Security)等のセキュアチャネルを開設しているが、セキュアエレメント60が独立してネットワーク通信可能であれば、単体で通信を実施してもよい。 P41 (Opening of 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.) uses 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 can independently perform network communication, communication may be performed independently.

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

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

上述の例では、ブートローダ11から処理を開始しているが、処理開始タイミングは、ブートローダ実行時である必要は必ずしもなく、OS等の後続のソフトウェアが動作しているタイミングで処理を開始してもよい。また、上述の例では、取得したバージョン情報と保持したバージョン情報との比較結果をブート管理サーバ200へ送信する構成であるが、これに限定されるものではない。例えば、セキュアエレメント60は、自身が開設した秘匿通信路を経由して、取得したバージョン情報及び保持したバージョン情報をブート管理サーバ200へ送信してもよい。この場合、ブート管理サーバ200において、両者の比較検証を行うことができる。 In the above example, the processing is started from the boot loader 11, but the processing start timing does not necessarily have to be when the boot loader is executed, and even if the processing is started at the timing when the subsequent software such as the OS is operating. good. Further, in the above example, the comparison result between the acquired version information and the retained version information is transmitted to the boot management server 200, but the present invention is not limited to this. For example, the secure element 60 may transmit the acquired version information and the retained version information to the boot management server 200 via the secret communication path established by the secure element 60. In this case, the boot management server 200 can perform comparative verification of 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 has been tampered with because the version booted is different from the version specified by the secure element 60. NS. The operation when the boot management server 200 receives the notification that there is a mismatch depends on the security policy of the IoT device 100. For example, a restart instruction is remotely output to the IoT device 100. Alternatively, there are various options such as notifying an alert as a security attack.

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

図7はブートローダ情報の更新の一例を示す説明図である。以下、符号P51〜P55で示す処理について説明する。 FIG. 7 is an explanatory diagram showing an example of updating the boot loader information. Hereinafter, the processes represented by the reference numerals P51 to P55 will be described.

P51(ブートローダ更新判定):ブート管理サーバ200は、各セキュアエレメント60のブートローダのバージョンから、更新指示の対象となるセキュアエレメント60を特定する。例えば、各セキュアエレメント60のIDに対応したバージョンを調べ、最新バージョンと異なる場合は、当該セキュアエレメント60を更新対象として特定するなど、更新判定には種々の方法を用いることができる。 P51 (Boot loader update determination): The boot management server 200 identifies the secure element 60 to be updated from the boot loader version of each secure element 60. For example, various methods can be used for the update determination, such as checking the version corresponding to the ID of each secure element 60 and specifying the secure element 60 as an update target if it is different from the latest version.

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

P53(セキュアエレメントへのブートローダコピー):ブート管理サーバ200は、P52で特定したブートローダ情報を、秘匿通信路経由でセキュアエレメント60に送信する。セキュアエレメント60は、受信したブートローダで既存のブートローダを上書きし、保持しているバージョン情報を更新する。 P53 (boot loader copy to secure element): The boot management server 200 transmits the boot loader information specified on 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 held version information.

P54(更新後のバージョン通知):セキュアエレメント60は、ブートローダ更新後、更新後のブートローダのバージョンをブート管理サーバ200に送信する。 P54 (version notification after update): After updating the boot loader, the secure element 60 transmits the updated boot loader version 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 example shown, version 1.0.0 has been updated to 1.0.1.

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

本実施の形態のデバイスは、セキュアブート機能を有するデバイスであって、ブートローダ、ブートローダ検証鍵、及びブートローダの署名を含むブートローダ情報を保持するセキュアエレメントと、初期実行コードとして、ブートローダ情報読出処理、ブートローダ検証処理、及びブートローダ実行処理を実行順序も含めて保持する書き換え不可能な不揮発性メモリとを備え、デバイス起動時に、前記ブートローダ情報読出処理を実行して、前記セキュアエレメントから前記ブートローダ情報を読み出し、前記ブートローダ検証処理は、前記ブートローダ検証鍵、及び前記ブートローダの署名を用いて前記ブートローダを検証し、検証が成功した場合、前記ブートローダ実行処理は、前記ブートローダを実行する。 The device of this embodiment is a device having a secure boot function, and has a secure element that holds boot loader information including a boot loader, a boot loader verification key, and a boot loader signature, and boot loader information read processing and boot loader as initial execution code. It is provided with a non-rewritable non-volatile memory that holds the verification process and the boot loader execution process including the execution order. When the device is started, the boot loader information read process is executed to read the boot loader information from the secure element. The boot loader verification process verifies the boot loader by using the boot loader verification key and the signature of the boot loader, and when the verification is successful, the boot loader execution process executes the boot loader.

本実施の形態のセキュアエレメントは、セキュアブート機能を有するデバイスに実装されるセキュアエレメントであって、ブートローダ、ブートローダ検証鍵、及びブートローダの署名を含むブートローダ情報を保持し、デバイス起動時に、前記ブートローダの検証のために前記ブートローダ情報を前記デバイスへ出力する。 The secure element of the present embodiment 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 boot loader signature, and at the time of device startup, the boot loader The boot loader information is output to the device for verification.

本実施の形態のデバイスのセキュアブート方法は、初期実行コードとして、ブートローダ情報読出処理、ブートローダ検証処理、及びブートローダ実行処理を実行順序も含めて書き換え不可能な不揮発性メモリに保持しておき、デバイス起動時に、前記ブートローダ情報読出処理を実行して、セキュアエレメントから、ブートローダ、ブートローダ検証鍵、及びブートローダの署名を含むブートローダ情報を読み出し、前記ブートローダ検証処理は、前記ブートローダ検証鍵、及び前記ブートローダの署名を用いて前記ブートローダを検証し、検証が成功した場合、前記ブートローダ実行処理は、前記ブートローダを実行する。 In the secure boot method of the device of the present embodiment, the boot loader information reading process, the boot loader verification process, and the boot loader execution process are held in a non-rewritable non-volatile memory including the execution order as the initial execution code, and the device. At startup, the boot loader information read process is executed to read the boot loader information including the boot loader, the boot loader verification key, and the boot loader signature from the secure element, and the boot loader verification process is performed on the boot loader verification key and the boot loader signature. The boot loader is verified using the above, and if the verification is successful, the boot loader execution process executes the boot loader.

セキュアエレメントは、ブートローダ、ブートローダ検証鍵、及びブートローダの署名を含むブートローダ情報を保持する。ブートローダと検証用鍵の両方を改ざん不可能、及び更新不可能なセキュアエレメントに保持することにより、ブートローダと鍵の改ざんを防止しつつ鍵とコードの対応関係をセキュアエレメント内に限定する。これにより、鍵及びブートローダそれぞれの管理をセキュアエレメント側に纏めることができ、デバイス側から鍵管理の負荷を取り除くことができる。IoTデバイス製造者は、ブートローダのみをセキュアエレメント製造者に供給することで、セキュリティの管理をセキュアアレメント製造者に委任することができる。 The secure element holds the boot loader information, including the boot loader, boot loader verification key, and boot loader signature. By holding both the boot loader and the verification key in a secure element that cannot be tampered with and cannot be updated, the correspondence between the key and the code is limited within the secure element while preventing tampering with the boot loader and the key. As a result, the management of each key and boot loader can be integrated on the secure element side, and the load of key management can be removed from the device side. The IoT device manufacturer can delegate security management to the secure array manufacturer by supplying only the boot loader to the secure element manufacturer.

書き換え不可能な不揮発性メモリは、初期実行コードとして、ブートローダ情報読出処理、ブートローダ検証処理、及びブートローダ実行処理を実行順序も含めて保持する。書き換え不可能な不揮発性メモリに保持するとは、例えば、工場出荷後は、各処理の実行準備も含め、これらの処理手順、内容を書き換えることができないことを意味する。すなわち、IoTデバイスの初期実行コードを固定シーケンス化する。鍵の値に依存しない初期実行コードの実行内容と順序を、IoTデバイス側に更新不可能な形態で保持することができる。これにより、初期実行コードの改ざんを防止しつつ、鍵やブートローダなどの個別情報をセキュアエレメント側に持たせることで、安全かつ柔軟にセキュリティ管理を行うことができる。 The non-rewritable non-volatile memory holds the boot loader information read process, the boot loader verification process, and the boot loader execution process as the initial execution code, including the execution order. Holding in a non-rewritable non-volatile memory means that, for example, after shipment from the factory, these processing procedures and contents, including preparation for execution of each processing, cannot be rewritten. That is, the initial execution code of the IoT device is fixedly sequenced. The execution content and order of the initial execution code that does not depend on the key value can be retained on the IoT device side in a non-updatable form. As a result, security management can be performed safely and flexibly by having individual information such as a key and a boot loader on the secure element side while preventing falsification of the initial execution code.

デバイス起動時に、ブートローダ情報読出処理を実行して、セキュアエレメントからブートローダ情報を読み出す。ブートローダ検証処理は、ブートローダ検証鍵、及びブートローダの署名を用いてブートローダを検証する。検証が成功した場合、ブートローダ実行処理は、ブートローダを実行する。これにより、より安全性の高いセキュアブートを実現できる。 When the device starts up, the boot loader information read process is executed to read the boot loader information from the secure element. The boot loader verification process verifies the boot loader by using the boot loader verification key and the boot loader signature. If the verification is successful, the boot loader execution process executes the boot loader. As a result, a more secure secure boot can be realized.

本実施の形態のデバイスにおいて、前記セキュアエレメントは、さらに、ブートローダ検証鍵証明書を保持し、前記書き換え不可能な不揮発性メモリは、セキュアエレメントCA公開鍵を保持し、デバイス起動時に、前記ブートローダ情報読出処理を実行して、前記セキュアエレメントから前記ブートローダ検証鍵証明書を読み出し、前記ブートローダ検証処理は、前記セキュアエレメントCA公開鍵、及び読み出された前記ブートローダ検証鍵証明書を用いて前記ブートローダ検証鍵を検証し、検証が成功した場合、前記ブートローダを検証する。 In the device of the present embodiment, the secure element further holds a boot loader verification key certificate, the non-rewritable non-volatile memory holds the secure element CA public key, and the boot loader information at the time of device startup. The read process is executed to read the boot loader verification key certificate from the secure element, and the boot loader verification process uses the secure element CA public key and the read boot loader verification key certificate to perform the boot loader verification. The key is verified, and if the verification is successful, the boot loader is verified.

本実施の形態のセキュアエレメントにおいて、前記ブートローダ情報は、前記ブートローダ検証鍵を検証するためのブートローダ検証鍵証明書を含み、デバイス起動時に、前記ブートローダ検証鍵証明書を前記デバイスへ出力する。 In the secure element of the present embodiment, the boot loader information includes a boot loader verification key certificate for verifying the boot loader verification key, and outputs the boot loader verification key certificate to the device when the device is started.

セキュアエレメントは、さらに、ブートローダ検証鍵証明書を保持し、書き換え不可能な不揮発性メモリは、セキュアエレメントCA公開鍵を保持する。デバイス起動時に、ブートローダ情報読出処理を実行して、セキュアエレメントからブートローダ検証鍵証明書を読み出す。ブートローダ検証処理は、セキュアエレメントCA公開鍵、及び読み出されたブートローダ検証鍵証明書を用いてブートローダ検証鍵を検証する。検証が成功した場合、ブートローダを検証する。すなわち、ブートローダの検証に先立って、セキュアエレメントCA公開鍵によってブートローダ検証鍵に対する検証を行う。 The secure element further holds the bootloader verification key certificate, and the non-rewritable non-volatile memory holds the secure element CA public key. When the device starts up, the boot loader information read process is executed to read the boot loader verification key certificate from the secure element. The boot loader verification process verifies the boot loader verification key using the secure element CA public key and the read boot loader verification key certificate. If the verification is successful, verify the bootloader. That is, prior to the verification of the boot loader, the boot loader verification key is verified by the secure element CA public key.

IoTデバイス内の書き換え不可能な不揮発性メモリに保持されたセキュアエレメントCA公開鍵を使用してブートローダ検証鍵の署名検証を行い、ブートローダ検証鍵の正当性の検証を行う。これにより、鍵を改ざんすることで不正なブートローダ起動を試みる攻撃を防止できる。 The signature verification of the boot loader verification key is performed using the secure element CA public key held in the non-rewritable non-volatile memory in the IoT device, and the validity of the boot loader verification key is verified. As a result, it is possible to prevent an attack that attempts to start an unauthorized boot loader 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 read process at device startup, reads the software verification key from the secure element, and the boot loader , The software verification key is used to verify the software image executed after the boot loader.

本実施の形態のセキュアエレメントにおいて、前記ブートローダ情報は、前記ブートローダ以降に実行されるソフトウェアイメージを検証するためのソフトウェア検証鍵を含み、デバイス起動時に、前記ソフトウェア検証鍵を前記デバイスへ出力する。 In the secure element of the present embodiment, the boot loader information includes a software verification key for verifying a software image executed after the boot loader, and outputs the software verification key to the device when the device is started.

セキュアエレメントは、さらに、ソフトウェア検証鍵を保持する。デバイス起動時に、ブートローダ情報読出処理を実行して、セキュアエレメントからソフトウェア検証鍵を読み出す。ブートローダは、ソフトウェア検証鍵を用いてブートローダ以降に実行されるソフトウェア(例えば、OSなど)イメージを検証する。 The secure element also holds the software verification key. When the device starts up, the 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 the image of software (for example, OS) executed after the boot loader.

セキュアエレメント内に、ブートローダ以降に実行されるソフトウェアイメージの検証用鍵を保持しておく。これにより、セキュアエレメントをRoot of Trustとした、鍵に基づくTrust Chainを容易に構成することができる。 The key for verifying the software image 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 the software verification key certificate, executes the boot loader information read process at device startup, and reads the software verification key certificate from the secure element. The boot loader verifies the 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 the present embodiment, the boot loader information includes a software verification key certificate for verifying the software verification key, and outputs the software verification key certificate to the device when the device is started.

セキュアエレメントは、さらに、ソフトウェア検証鍵証明書を保持する。デバイス起動時に、ブートローダ情報読出処理を実行して、セキュアエレメントからソフトウェア検証鍵証明書を読み出す。ブートローダは、セキュアエレメントCA公開鍵、及びソフトウェア検証鍵証明書を用いてソフトウェア検証鍵を検証する。検証が成功した場合、ソフトウェアイメージを検証する。すなわち、ソフトウェアイメージの検証に先立って、セキュアエレメントCA公開鍵及びソフトウェア検証鍵証明書によってソフトウェア検証鍵に対する検証を行う。 The secure element also holds a software verification key certificate. When the device starts up, the boot loader information read 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 the verification is successful, verify the software image. That is, prior to the verification of the software image, the software verification key is verified by the secure element CA public key and the software verification key certificate.

IoTデバイス内の書き換え不可能な不揮発性メモリに保持されたソフトウェア検証鍵証明書を使用してソフトウェア検証鍵の検証を行い、ソフトウェア検証鍵の正当性の検証を行う。これにより、鍵を改ざんすることで不正なソフトウェアの実行を試みる攻撃を防止できる。 The software verification key is verified using the software verification key certificate held in the non-rewritable non-volatile memory in the IoT device, and the validity of the software verification key is verified. This makes it possible to prevent attacks that attempt to execute malicious software by tampering with the key.

本実施の形態のデバイスは、前記セキュアエレメントから読み出されたブートローダ情報を保持するセキュアな領域を有するSoCを備える。 The device of this embodiment includes a SoC having a secure area for holding the boot loader information read from the secure element.

SoC(System on Chip)は、セキュアな領域(例えば、TEE:Trusted Execution Environmentなど)を有し、セキュアな領域にセキュアエレメントから読み出されたブートローダ情報を保持する。例えば、暗号化ブートローダの読み出しや復号をSoC内のセキュアな領域で行う。これにより、ブートローダの検証処理を狙った攻撃を防止できる。 The SoC (System on Chip) has a secure area (for example, TEE: Trusted Execution Environment), and holds the boot loader information read from the secure element in the secure area. For example, the encrypted boot loader is read and decrypted in a secure area in the SoC. As a result, it is possible to prevent an attack aimed at the verification process of the boot loader.

本実施の形態のデバイスにおいて、前記セキュアエレメントは、ユーザ認証情報を保持し、デバイス起動時に、入力されたユーザ認証情報と保持したユーザ認証情報とに基づいてユーザ認証を行い、ユーザ認証が成功した場合、前記ブートローダ情報読出処理を行う。 In the device of the present embodiment, the secure element holds the user authentication information, and when the device is started, the user authentication is performed based on the input user authentication information and the held user authentication information, and the user authentication is successful. In this case, the boot loader information reading process is performed.

本実施の形態のセキュアエレメントは、ユーザ認証情報を保持し、デバイス起動時に、入力されたユーザ認証情報と保持したユーザ認証情報とに基づいてユーザ認証を行い、ユーザ認証が成功した場合、前記ブートローダ情報を前記デバイスへ出力する。 The secure element of the present embodiment holds the user authentication information, performs user authentication based on the input user authentication information and the held user authentication information at the time of device startup, and when the user authentication is successful, the boot loader. Information is output to the device.

セキュアエレメントは、ユーザ認証情報を保持する。デバイス起動時に、入力されたユーザ認証情報と保持したユーザ認証情報とに基づいてユーザ認証を行う。ユーザ認証が成功した場合、ブートローダ情報読出処理を行う。 The secure element holds the 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 the user authentication is successful, the boot loader information is read.

ブートローダや鍵読み出しに先立って、セキュアエレメントが外部認証を求め、認証に成功した場合に、ブートローダ情報を読み出す(デバイス側へ、ブートローダ情報を出力する)。これにより、IoTデバイスに対するセキュリティニーズに応じて、生体認証やPIN(Personal Identification Number)認証等、デバイス起動そのものに強固な認証を導入し、かつ当該認証のバイパスを防止できる。 Prior to reading the boot loader and key, the secure element requests external authentication, and if the authentication is successful, the boot loader information is read (the boot loader information is output to the device side). As a result, strong authentication such as biometric authentication and PIN (Personal Identification Number) authentication can be introduced into the device activation itself and bypass of the authentication can be prevented according to the security needs for the IoT device.

本実施の形態のセキュアエレメントは、ブートローダのバージョンを特定する特定情報を保持し、前記デバイスからブートローダの特定情報を取得し、取得した特定情報及び保持した特定情報、あるいは、取得した特定情報と保持した特定情報との比較結果を、秘匿通信路を介して外部のサーバへ送信する。 The secure element of the present embodiment holds specific information that identifies the version of the boot loader, acquires specific information of the boot loader from the device, and obtains and holds the specific information, or holds the acquired specific information and the specific information. The comparison result with the specified specific information is transmitted to an external server via a secret communication path.

特定情報は、ブートローダのバージョンを一意に特定可能な情報であればよい。特定情報には、例えば、バージョン情報そのものでもよく、ブートローダのハッシュ値など、ブートローダそのもののバイナリ列に対して所定の演算を行って得られた値などでもよい。セキュアエレメントは、自身が開設した秘匿通信路を経由して、取得した特定情報及び保持した特定情報を外部のサーバへ送信してもよく、あるいは、取得した特定情報と保持した特定情報との比較結果を外部のサーバへ送信してもよい。これにより、セキュアエレメントが開設した秘匿通信路を経由して、セキュアエレメント内部及びIoTデバイスにロードされたブートローダそれぞれのバージョンを確認することができる。 The specific information may be any information that can uniquely identify the boot loader version. 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 transmit the acquired specific information and the retained specific information to an external server via the secret communication path established by the secure element, or compare the acquired specific information with the retained specific information. The result may be sent to an external server. This makes it possible to check the versions of the boot loaders loaded inside the secure element and in the IoT device via the secret communication path established by the secure element.

本実施の形態のセキュアエレメントは、秘匿通信路を介して外部のサーバからの指令に基づいて、保持された、ブートローダ、ブートローダ検証鍵、ブートローダの署名、ブートローダ検証鍵証明書、ソフトウェア検証鍵、及びソフトウェア検証鍵証明書の全部又は一部を更新する。 The secure element of the present embodiment is a boot loader, a boot loader verification key, a boot loader signature, a boot loader verification key certificate, a software verification key, and a hold, based on a command from an external server via a secret communication path. Update all or part of the software verification key certificate.

秘匿通信路を介して外部のサーバからの指令に基づいて、保持された、ブートローダ、ブートローダ検証鍵、ブートローダの署名、ブートローダ検証鍵証明書、ソフトウェア検証鍵、及びソフトウェア検証鍵証明書の全部又は一部を更新する。セキュアエレメントが開設した秘匿通信路を経由して、セキュアエレメント内のブートローダや鍵を外部から更新することができる。これにより、安全確実にブートローダを更新できるだけでなく、デバイスのブート可否をセキュアエレメント(強固なRoot of Trust)経由で外部制御することもできる。後続のソフトウェアも検証対象とする場合は、当該ソフトウェアの起動可否をセキュアエレメント経由で外部制御することができる。 All or one of the boot loader, boot loader verification key, boot loader signature, boot loader verification key certificate, software verification key, and software verification key certificate held based on a command from an external server via a secret communication path. Update the department. The boot loader and key in the secure element can be updated from the outside via the secret communication path established by the secure element. This not only allows the bootloader to be updated safely and reliably, but also allows external control of device bootability via a secure element (strong Root of Trust). When the subsequent software is also subject to verification, it is possible to externally control whether or not the software can be started 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 Boot loader 12 IoT device OS
21 Secure element CA public key 22 Secure element CA private key 23 Boot loader verification key (public key)
24 Boot loader signature generation key (private key)
25 OS verification key (public key)
26 OS signature generation key (private key)
31 Boot loader digital signature 32 Boot loader 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 Boot loader information read function 43 Boot loader verification function 44 Boot loader 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 with a secure boot function
A secure element that holds boot loader information, including the boot loader, boot loader verification key, and boot loader signature.
The initial execution code includes a boot loader information read process, a boot loader verification process, and a non-rewritable non-volatile memory that holds the boot loader execution process including the execution order.
When the device is started, the boot loader information read process is executed to read the boot loader information from the secure element.
The boot loader verification process
The boot loader is verified by using the boot loader verification key and the signature of the boot loader.
If the verification is successful, the boot loader execution process executes the boot loader.
device.
前記セキュアエレメントは、さらに、ブートローダ検証鍵証明書を保持し、
前記書き換え不可能な不揮発性メモリは、セキュアエレメントCA公開鍵を保持し、
デバイス起動時に、前記ブートローダ情報読出処理を実行して、前記セキュアエレメントから前記ブートローダ検証鍵証明書を読み出し、
前記ブートローダ検証処理は、
前記セキュアエレメントCA公開鍵、及び読み出された前記ブートローダ検証鍵証明書を用いて前記ブートローダ検証鍵を検証し、
検証が成功した場合、前記ブートローダを検証する、
請求項1に記載のデバイス。
The secure element also holds the bootloader verification key certificate.
The non-rewritable non-volatile memory holds the secure element CA public key.
When the device is started, the boot loader information read process is executed to read the boot loader verification key certificate from the secure element.
The boot loader verification process
The boot loader verification key is verified using the secure element CA public key and the read boot loader verification key certificate.
If the verification is successful, the boot loader is verified.
The device according to claim 1.
前記セキュアエレメントは、さらに、ソフトウェア検証鍵を保持し、
デバイス起動時に、前記ブートローダ情報読出処理を実行して、前記セキュアエレメントから前記ソフトウェア検証鍵を読み出し、
前記ブートローダは、
前記ソフトウェア検証鍵を用いて前記ブートローダ以降に実行されるソフトウェアイメージを検証する、
請求項1又は請求項2に記載のデバイス。
The secure element further holds the software verification key and
When the device is started, the boot loader information read process is executed to read the software verification key from the secure element.
The boot loader is
The software image executed after the boot loader is verified by using the software verification key.
The device according to claim 1 or 2.
前記セキュアエレメントは、さらに、ソフトウェア検証鍵証明書を保持し、
デバイス起動時に、前記ブートローダ情報読出処理を実行して、前記セキュアエレメントから前記ソフトウェア検証鍵証明書を読み出し、
前記ブートローダは、
前記セキュアエレメントCA公開鍵、及び前記ソフトウェア検証鍵証明書を用いてソフトウェア検証鍵を検証し、
検証が成功した場合、前記ソフトウェアイメージを検証する、
請求項3に記載のデバイス。
The secure element further holds a software verification key certificate.
When the device is started, the boot loader information reading process is executed to read the software verification key certificate from the secure element.
The boot loader is
The software verification key is verified using the secure element CA public key and the software verification key certificate.
If the verification is successful, the software image is verified.
The device according to claim 3.
前記セキュアエレメントから読み出されたブートローダ情報を保持するセキュアな領域を有するSoCを備える、
請求項1から請求項4のいずれか一項に記載のデバイス。
A SoC having a secure area for holding boot loader information read from the secure element.
The device according to any one of claims 1 to 4.
前記セキュアエレメントは、ユーザ認証情報を保持し、
デバイス起動時に、入力されたユーザ認証情報と保持したユーザ認証情報とに基づいてユーザ認証を行い、
ユーザ認証が成功した場合、前記ブートローダ情報読出処理を行う、
請求項1から請求項5のいずれか一項に記載のデバイス。
The secure element holds user authentication information and
When the device starts up, user authentication is performed based on the entered user authentication information and the retained user authentication information.
If the user authentication is successful, the boot loader information reading process is performed.
The device according to any one of claims 1 to 5.
セキュアブート機能を有するデバイスに実装されるセキュアエレメントであって、
ブートローダ、ブートローダ検証鍵、及びブートローダの署名を含むブートローダ情報を保持し、
デバイス起動時に、前記ブートローダの検証のために前記ブートローダ情報を前記デバイスへ出力する、
セキュアエレメント。
A secure element implemented in a device that has a secure boot function.
Holds boot loader information, including the boot loader, boot loader verification key, and boot loader signature.
When the device is started, the boot loader information is output to the device for verification of the boot loader.
Secure element.
前記ブートローダ情報は、前記ブートローダ検証鍵を検証するためのブートローダ検証鍵証明書を含み、
デバイス起動時に、前記ブートローダ検証鍵証明書を前記デバイスへ出力する、
請求項7に記載のセキュアエレメント。
The boot loader information includes a boot loader verification key certificate for verifying the boot loader verification key.
When the device is started, the boot loader verification key certificate is output to the device.
The secure element according to claim 7.
前記ブートローダ情報は、前記ブートローダ以降に実行されるソフトウェアイメージを検証するためのソフトウェア検証鍵を含み、
デバイス起動時に、前記ソフトウェア検証鍵を前記デバイスへ出力する、
請求項7又は請求項8に記載のセキュアエレメント。
The boot loader information includes a software verification key for verifying a software image executed after the boot loader.
When the device is started, the software verification key is output to the device.
The secure element according to claim 7 or 8.
前記ブートローダ情報は、前記ソフトウェア検証鍵を検証するためのソフトウェア検証鍵証明書を含み、
デバイス起動時に、前記ソフトウェア検証鍵証明書を前記デバイスへ出力する、
請求項9に記載のセキュアエレメント。
The boot loader information includes a software verification key certificate for verifying the software verification key.
When the device is started, the software verification key certificate is output to the device.
The secure element according to claim 9.
ユーザ認証情報を保持し、
デバイス起動時に、入力されたユーザ認証情報と保持したユーザ認証情報とに基づいてユーザ認証を行い、
ユーザ認証が成功した場合、前記ブートローダ情報を前記デバイスへ出力する、
請求項7から請求項10のいずれか一項に記載のセキュアエレメント。
Hold user credentials and
When the device starts up, user authentication is performed based on the entered user authentication information and the retained user authentication information.
If the user authentication is successful, the boot loader information is output to the device.
The secure element according to any one of claims 7 to 10.
ブートローダのバージョンを特定する特定情報を保持し、
前記デバイスからブートローダの特定情報を取得し、
取得した特定情報及び保持した特定情報、あるいは、取得した特定情報と保持した特定情報との比較結果を、秘匿通信路を介して外部のサーバへ送信する、
請求項7から請求項11のいずれか一項に記載のセキュアエレメント。
Holds specific information that identifies the bootloader version,
Obtain the boot loader specific information from the device and
The acquired specific information and the retained specific information, or the comparison result between the acquired specific information and the retained specific information are transmitted to an external server via a secret communication path.
The secure element according to any one of claims 7 to 11.
秘匿通信路を介して外部のサーバからの指令に基づいて、保持された、ブートローダ、ブートローダ検証鍵、ブートローダの署名、ブートローダ検証鍵証明書、ソフトウェア検証鍵、及びソフトウェア検証鍵証明書の全部又は一部を更新する、
請求項7から請求項12のいずれか一項に記載のセキュアエレメント。
All or one of the boot loader, boot loader verification key, boot loader signature, boot loader verification key certificate, software verification key, and software verification key certificate held based on a command from an external server via a secret communication path. Update the department,
The secure element according to any one of claims 7 to 12.
初期実行コードとして、ブートローダ情報読出処理、ブートローダ検証処理、及びブートローダ実行処理を実行順序も含めて書き換え不可能な不揮発性メモリに保持しておき、
デバイス起動時に、前記ブートローダ情報読出処理を実行して、セキュアエレメントから、ブートローダ、ブートローダ検証鍵、及びブートローダの署名を含むブートローダ情報を読み出し、
前記ブートローダ検証処理は、
前記ブートローダ検証鍵、及び前記ブートローダの署名を用いて前記ブートローダを検証し、
検証が成功した場合、前記ブートローダ実行処理は、前記ブートローダを実行する、
デバイスのセキュアブート方法。
As the initial execution code, the boot loader information read process, boot loader verification process, and boot loader execution process, including the execution order, are stored in a non-rewritable non-volatile memory.
When the device is started, the boot loader information read process is executed to read the boot loader information including the boot loader, the boot loader verification key, and the boot loader signature from the secure element.
The boot loader verification process
The boot loader is verified by using the boot loader verification key and the signature of the boot loader.
If the verification is successful, the boot loader execution process executes the boot loader.
How to secure boot the 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 true JP2021164009A (en) 2021-10-11
JP7428049B2 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)

Cited By (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

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7711942B2 (en) 2004-09-23 2010-05-04 Hewlett-Packard Development Company, L.P. Computer security system and method
JP4950195B2 (en) 2006-07-03 2012-06-13 パナソニック株式会社 Proof device, verification device, verification system, computer program, and integrated circuit
AU2011314086A1 (en) 2010-09-28 2013-04-04 Headwater Partners I Llc Secure device data records
WO2012160760A1 (en) 2011-05-25 2012-11-29 パナソニック株式会社 Information processing device and information processing method
GB2508895A (en) 2012-12-14 2014-06-18 Ibm Bootloader for booting a computer into a second operating system that is hidden from a first host operating system
US20170286084A1 (en) 2016-03-30 2017-10-05 Motorola Mobility Llc Rfid-based device wireless updates

Cited By (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

Also Published As

Publication number Publication date
JP7428049B2 (en) 2024-02-06

Similar Documents

Publication Publication Date Title
KR101795457B1 (en) Method of initializing device and method of updating firmware of device having enhanced security function
JP5116325B2 (en) Information processing apparatus, software update method, and image processing apparatus
US9830456B2 (en) Trust transference from a trusted processor to an untrusted processor
JP5690412B2 (en) Hardware device key provisioning method and apparatus
JP4912879B2 (en) Security protection method for access to protected resources of processor
US8019994B2 (en) Authentication of a request to alter at least one of a BIOS and a setting associated with the BIOS
JP4890309B2 (en) Information processing apparatus and information protection method
US20170230185A1 (en) Dual-signed executable images for customer-provided integrity
US20090285390A1 (en) Integrated circuit with secured software image and method therefor
JP2004265026A (en) Application authentication system and device
JP2007512787A (en) Trusted mobile platform architecture
WO2020076408A2 (en) Trusted booting by hardware root of trust (hrot) device
TW202141321A (en) Method and electronic devices for securely storing and loading firmware
JP2016146618A (en) Information processing device
CN116070217A (en) Safe starting system and method for chip module
US20120204254A1 (en) Method and apparatus for managing security state transitions
KR102256249B1 (en) SECURE FIRMWARE UPDATE METHOD OF IoT DEVICE USING AN INTEGRATED SECURITY SoC
JP7019976B2 (en) Secure element, computer program, device, OS boot system and OS boot method
JP7428049B2 (en) Devices, secure elements and device secure boot methods
US20210240833A1 (en) Security device, electronic device, secure boot management system, method for generating boot image, and method for executing boot chain
KR20190036779A (en) Method and system for secure firmware update
JP5582231B2 (en) Information processing apparatus, authenticity confirmation method, and recording medium
JP2012058803A (en) Thin client system and method for updating operating system
JP5574007B2 (en) Information processing apparatus and information protection method
JP5278520B2 (en) Information processing apparatus and information protection method

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