JP6622360B2 - Information processing device - Google Patents

Information processing device Download PDF

Info

Publication number
JP6622360B2
JP6622360B2 JP2018136167A JP2018136167A JP6622360B2 JP 6622360 B2 JP6622360 B2 JP 6622360B2 JP 2018136167 A JP2018136167 A JP 2018136167A JP 2018136167 A JP2018136167 A JP 2018136167A JP 6622360 B2 JP6622360 B2 JP 6622360B2
Authority
JP
Japan
Prior art keywords
verification
program
flag
value
information processing
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
JP2018136167A
Other languages
Japanese (ja)
Other versions
JP2018195329A (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.)
Toshiba Corp
Toshiba Electronic Devices and Storage Corp
Original Assignee
Toshiba Corp
Toshiba Electronic Devices and Storage Corp
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 Toshiba Corp, Toshiba Electronic Devices and Storage Corp filed Critical Toshiba Corp
Priority to JP2018136167A priority Critical patent/JP6622360B2/en
Publication of JP2018195329A publication Critical patent/JP2018195329A/en
Application granted granted Critical
Publication of JP6622360B2 publication Critical patent/JP6622360B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本実施形態は、情報処理装置及び制御方法に関する。   The present embodiment relates to an information processing apparatus and a control method.

マイクロコントローラなどの情報処理装置は、起動されたプログラムに従って所定の動作を行う。このとき、プログラムを適正に且つ高速に起動することが望まれる。   An information processing apparatus such as a microcontroller performs a predetermined operation according to the activated program. At this time, it is desired to start the program appropriately and at high speed.

国際公開第2009/013831号International Publication No. 2009/013831 特開2003−216445号公報JP 2003-216445 A 国際公開第2010/021269号International Publication No. 2010/021269

Arbaugh, W.; Farber, D. & Smith, J., A secure and reliable bootstrap architecture, Security and Privacy, 1997. Proceedings., 1997 IEEE Symposium on, 1997, 65−71Arbaugh, W.H. Farber, D .; & Smith, J.A. , A secure and reliable bootstrap architecture, Security and Privacy, 1997. Proceedings. , 1997 IEEE Symposium on, 1997, 65-71.

一つの実施形態は、プログラムを適正に且つ高速に起動できる情報処理装置を提供することを目的とする。   An object of one embodiment is to provide an information processing apparatus capable of starting a program appropriately and at high speed.

一つの実施形態によれば、情報処理装置であって、不揮発性メモリと第1のフラグと切換回路と検証回路と第2のフラグとを有する情報処理装置が提供される。第1のフラグは、第1の値と第2の値とに設定可能である。第1の値は、不揮発性メモリにおける第1のメモリ領域に格納されたプログラムが未検証であることを示す。第2の値は、プログラムが検証済であることを示す。切換回路は、情報処理装置において実行されるプログラムの書換え許可要求に応じて、第1のフラグに第1の値を設定する。検証回路は、第1のメモリ領域に格納されたプログラムの検証に応じて第1のフラグに第2の値を設定する。検証回路は、情報処理装置の再起動に応じて、第1の値が第1のフラグに設定されている場合にプログラムに対する検証処理を行い、第2の値が第1のフラグに設定されている場合検証処理を行わずにプログラムを実行させる。第2のフラグは、第3の値と第4の値とに設定可能である。第3の値は、第1のメモリ領域に対する書換えが禁止されていることを示す値である。第4の値は、第1のメモリ領域に対する書換えが許可されていることを示す値である。第2のフラグの第3の値から第4の値への変更に応じて、第1の値が第1のフラグに設定される。検証処理の実行に先立って、第3の値が第2のフラグに設定される。 According to one embodiment, an information processing apparatus is provided that includes a nonvolatile memory, a first flag, a switching circuit, a verification circuit, and a second flag . The first flag can be set to a first value and a second value. The first value indicates that the program stored in the first memory area in the nonvolatile memory has not been verified. The second value indicates that the program has been verified. Switching circuit in response to the rewriting permission request of a program executed in an information processing apparatus, it sets the first value to the first flag. The verification circuit sets a second value in the first flag in accordance with verification of the program stored in the first memory area. The verification circuit performs a verification process on the program when the first value is set in the first flag in response to the restart of the information processing apparatus, and the second value is set in the first flag. If so, the program is executed without performing verification processing. The second flag can be set to a third value and a fourth value. The third value is a value indicating that rewriting to the first memory area is prohibited. The fourth value is a value indicating that rewriting to the first memory area is permitted. In response to the change of the second flag from the third value to the fourth value, the first value is set in the first flag. Prior to the execution of the verification process, the third value is set in the second flag.

実施形態にかかる情報処理装置の機能構成を示すブロック図。The block diagram which shows the function structure of the information processing apparatus concerning embodiment. 実施形態における書換え制御フラグ及び検証状態フラグの機能を示す図。The figure which shows the function of the rewriting control flag and verification status flag in embodiment. 実施形態にかかる情報処理装置のハードウェア構成を示すブロック図。The block diagram which shows the hardware constitutions of the information processing apparatus concerning embodiment. 実施形態にかかる情報処理装置の書換え許可要求に応じた動作を示すフローチャート。6 is an exemplary flowchart illustrating an operation in response to a rewrite permission request of the information processing apparatus according to the embodiment. 実施形態にかかる情報処理装置の動作を示すシーケンス図。FIG. 5 is a sequence diagram showing an operation of the information processing apparatus according to the embodiment. 実施形態にかかる情報処理装置の検証要求に応じた動作を示すフローチャート。6 is an exemplary flowchart illustrating an operation according to a verification request of the information processing apparatus according to the embodiment. 実施形態にかかる情報処理装置の再起動処理に応じた動作を示すフローチャート。6 is an exemplary flowchart illustrating an operation corresponding to a restart process of the information processing apparatus according to the embodiment. 実施形態にかかる情報処理装置の動作を示すシーケンス図。FIG. 5 is a sequence diagram showing an operation of the information processing apparatus according to the embodiment. 実施形態にかかる情報処理装置の動作を示すシーケンス図。FIG. 5 is a sequence diagram showing an operation of the information processing apparatus according to the embodiment. 実施形態にかかる情報処理装置の動作を示すシーケンス図。FIG. 5 is a sequence diagram showing an operation of the information processing apparatus according to the embodiment. 実施形態にかかる情報処理装置の動作を示すシーケンス図。FIG. 5 is a sequence diagram showing an operation of the information processing apparatus according to the embodiment. 実施形態にかかる情報処理装置の動作を示すシーケンス図。FIG. 5 is a sequence diagram showing an operation of the information processing apparatus according to the embodiment. 実施形態の変形例にかかる情報処理装置のハードウェア構成を示すブロック図。The block diagram which shows the hardware constitutions of the information processing apparatus concerning the modification of embodiment. 実施形態の変形例にかかる情報処理装置の書換え許可要求に応じた動作を示すフローチャート。9 is a flowchart showing an operation in response to a rewrite permission request of the information processing apparatus according to the modification of the embodiment. 実施形態の変形例にかかる情報処理装置の検証要求に応じた動作を示すフローチャート。10 is a flowchart showing an operation according to a verification request of the information processing apparatus according to the modification of the embodiment. 実施形態の他の変形例にかかる情報処理装置のハードウェア構成を示すブロック図。The block diagram which shows the hardware constitutions of the information processing apparatus concerning the other modification of embodiment. 実施形態の他の変形例にかかる情報処理装置の再起動処理に応じた動作を示すフローチャート。The flowchart which shows the operation | movement according to the restart process of the information processing apparatus concerning the other modification of embodiment.

以下に添付図面を参照して、実施形態にかかる情報処理装置を詳細に説明する。なお、この実施形態により本発明が限定されるものではない。
(実施形態)
実施形態にかかる情報処理装置について説明する。情報処理装置は、例えば、自動車の各部を電気的に制御するコントローラ(ECU)や、観測値を無線で送信するセンサノード(スマートメータ)の各部を制御するコントローラに適用され得る。これらのコントローラは小規模化・低コスト化が要求されるため、情報処理装置は、例えば1チップで構成されたマイクロコントローラ(組込みマイコン)として実装される。この情報処理装置は、起動されたシステムプログラムに従って所定の動作を行う。このとき、起動時にシステムプログラムの不正な改ざんを検出・防止するために、情報処理装置は、セキュアブートを実行可能とすべく構成されている。
Exemplary embodiments of an information processing apparatus will be explained below in detail with reference to the accompanying drawings. In addition, this invention is not limited by this embodiment.
(Embodiment)
An information processing apparatus according to an embodiment will be described. The information processing apparatus can be applied to, for example, a controller (ECU) that electrically controls each part of an automobile and a controller that controls each part of a sensor node (smart meter) that transmits observation values wirelessly. Since these controllers are required to be reduced in size and cost, the information processing apparatus is mounted as a microcontroller (embedded microcomputer) configured by one chip, for example. This information processing apparatus performs a predetermined operation according to the activated system program. At this time, in order to detect and prevent unauthorized alteration of the system program at the time of startup, the information processing apparatus is configured to be able to execute secure boot.

例えば、さまざまな機能がソフトウェアによって実現され、その範囲は社会インフラや自動車のような誤動作が重大な災害につながる機器の安全機能にまでおよびつつある。また、コンピュータシステムに対してさまざまなサイバー攻撃が行われ、手口の巧妙さが増すとともに電力システムを停止させるなど被害が広がりつつある。セキュアブートは、起動時にシステムプログラムの正当性を確認することにより、コンピュータシステムの信頼の基盤を確認する基本的なサイバー攻撃対策手段である。   For example, various functions are realized by software, and the scope of the functions extends to the safety functions of devices such as social infrastructure and automobiles that cause serious disasters. In addition, various cyber attacks have been conducted against computer systems, increasing the sophistication of techniques, and causing damage such as shutting down the power system. Secure boot is a basic cyber attack countermeasure means that confirms the trust base of a computer system by confirming the legitimacy of the system program at the time of startup.

一方で、ECUやセンサノード等に適用されることが想定された情報処理装置は、小規模化・低コスト化の要求を満たすためにその処理能力も限定されていることから、セキュアブートの実行頻度を必要最小限に抑えてシステムプログラムの起動処理を高速化する必要がある。すなわち、情報処理装置では、システムプログラムを適正に且つ高速に起動することが望まれる。   On the other hand, information processing devices that are assumed to be applied to ECUs, sensor nodes, etc. have limited processing capabilities in order to meet the demands for downsizing and cost reduction. It is necessary to speed up the startup process of the system program while minimizing the frequency. That is, the information processing apparatus is desired to start the system program appropriately and at high speed.

例えば、組込みマイコンでは不揮発性フラッシュメモリの内容をDRAMに展開することなく、そのまま実行するXIP (eXecute In Place)方式が用いられる。この場合、セキュアブートがなければ起動後ただちにフラッシュメモリ上のアプリケーションの実行を始められるが、セキュアブートを行う場合にはプログラムイメージの読出しとフィンガープリント計算がそのまま遅延となる。パーソナルコンピュータに実装された大規模で高速なプロセッサと比較して、組込みマイコンでは、メモリおよびフィンガープリント計算のスループットが低く、遅延が大きいため、セキュアブートの実行頻度を必要最小限に抑えてシステムプログラムの起動処理を高速化する必要性が高い。   For example, an embedded microcomputer employs an XIP (eXecut In Place) system in which the contents of a non-volatile flash memory are executed as they are without being expanded to DRAM. In this case, if there is no secure boot, the execution of the application on the flash memory can be started immediately after startup. However, when the secure boot is performed, the reading of the program image and the fingerprint calculation are delayed as they are. Compared to a large-scale, high-speed processor installed in a personal computer, embedded microcomputers have low memory and fingerprint calculation throughput and large delays, so the system program can be executed with the minimum number of secure boot executions required. There is a high need to speed up the startup process.

そこで、本実施形態では、以下の工夫を行いセキュアブートの実行頻度を適切に制御することで、プログラム(システムプログラム)の不正な改ざんを確実に検出・防止しつつプログラムの平均的な起動時間の短縮化を図る。   Therefore, in this embodiment, the following measures are taken and the execution frequency of the secure boot is appropriately controlled to reliably detect and prevent unauthorized alteration of the program (system program) and to reduce the average startup time of the program. Shorten.

図1は、情報処理装置1の機能構成を示すブロック図である。情報処理装置1(マイクロコントローラ)は、セキュアブートを実行可能とすべく構成されている。情報処理装置1は、不揮発性メモリ10、不揮発性メモリ20、書換え許可部30、プログラム検証要否判定部40、プログラム検証部50、及び命令実行部60を有する。セキュアブートに関連した機能は、書換え許可部30、プログラム検証要否判定部40、プログラム検証部50により実現可能である。   FIG. 1 is a block diagram illustrating a functional configuration of the information processing apparatus 1. The information processing apparatus 1 (microcontroller) is configured to be able to execute secure boot. The information processing apparatus 1 includes a nonvolatile memory 10, a nonvolatile memory 20, a rewrite permission unit 30, a program verification necessity determination unit 40, a program verification unit 50, and an instruction execution unit 60. Functions related to secure boot can be realized by the rewrite permission unit 30, the program verification necessity determination unit 40, and the program verification unit 50.

なお、書換え許可部30、プログラム検証要否判定部40、プログラム検証部50、及び命令実行部60の各機能は、情報処理装置1においてハードウェア的に(例えば、回路として)実装されていてよいし、ソフトウェア的に(例えば、不揮発性メモリ20に格納され一括して又は処理の進行に応じて順次に読み出される機能モジュールとして)実装されていてよい。あるいは、一部の機能が情報処理装置1においてハードウェア的に実装され、残りの機能が情報処理装置1においてソフトウェア的に実装されていてもよい。   The functions of the rewrite permission unit 30, the program verification necessity determination unit 40, the program verification unit 50, and the instruction execution unit 60 may be implemented in hardware (for example, as a circuit) in the information processing apparatus 1. However, it may be implemented in software (for example, as a functional module stored in the nonvolatile memory 20 and read in a batch or sequentially in accordance with the progress of processing). Alternatively, some functions may be implemented in hardware in the information processing apparatus 1, and the remaining functions may be implemented in software in the information processing apparatus 1.

不揮発性メモリ20は、情報を不揮発的に且つ書換え不可能に格納するメモリであり、例えば、製造工程で情報が書き込まれるマスクROMである。不揮発性メモリ20は、情報処理装置1におけるプラットフォームとなるシステムプログラムが予め格納されている。システムプログラムは、情報処理装置1の起動時等において、不揮発性メモリ20から命令実行部60へ(例えばバイト単位で)読み出される。   The nonvolatile memory 20 is a memory that stores information in a nonvolatile manner and cannot be rewritten, and is, for example, a mask ROM in which information is written in a manufacturing process. The nonvolatile memory 20 stores in advance a system program serving as a platform in the information processing apparatus 1. The system program is read from the nonvolatile memory 20 to the instruction execution unit 60 (for example, in units of bytes) when the information processing apparatus 1 is activated.

不揮発性メモリ10は、情報を不揮発的に且つ書換え可能に格納するメモリであり、例えば、フラッシュメモリである。命令実行部60がバイト単位で不揮発性メモリ10にアクセスする場合、不揮発性メモリ10を例えばNOR型フラッシュメモリとすることができる。不揮発性メモリ10は、第1の不揮発性メモリ領域11及び第2の不揮発性メモリ領域12を含む。   The nonvolatile memory 10 is a memory that stores information in a nonvolatile and rewritable manner, and is, for example, a flash memory. When the instruction execution unit 60 accesses the nonvolatile memory 10 in byte units, the nonvolatile memory 10 can be a NOR flash memory, for example. The nonvolatile memory 10 includes a first nonvolatile memory area 11 and a second nonvolatile memory area 12.

第1の不揮発性メモリ領域11は、プログラムメモリブロック11aを含む。プログラムメモリブロック11aは、プログラム11a1が不揮発的に格納されている。プログラム11a1は、プログラム検証部50により検証される。プログラム11a1は、システムプログラムの更新部分の機能モジュールであってもよいし、更新後のシステムプログラム自体であってもよい。   The first nonvolatile memory area 11 includes a program memory block 11a. The program memory block 11a stores the program 11a1 in a nonvolatile manner. The program 11a1 is verified by the program verification unit 50. The program 11a1 may be a functional module in an updated part of the system program, or may be the system program itself after the update.

第2の不揮発性メモリ領域12は、検証状態フラグ(第1のフラグ)12aが不揮発的に格納されている。検証状態フラグ12aは、第1の値又は第2の値を有する。第1の値は、プログラム11a1が未検証であることを示す(以下、「未検証」又は「×」で表す)。第2の値は、プログラム11a1が検証済であることを示す(以下、「検証済」又は「○」で表す)。検証状態フラグ12aは、冗長化されていてもよく、例えば、未検証/検証済を示す制御ビットと制御ビットの誤り訂正を行うための符号ビットとを含んでいてもよい。   The second nonvolatile memory area 12 stores a verification state flag (first flag) 12a in a nonvolatile manner. The verification state flag 12a has a first value or a second value. The first value indicates that the program 11a1 has not been verified (hereinafter referred to as “unverified” or “x”). The second value indicates that the program 11a1 has been verified (hereinafter referred to as “verified” or “◯”). The verification state flag 12a may be made redundant, and may include, for example, a control bit indicating unverified / verified and a code bit for performing error correction of the control bit.

書換え許可部30は、第1の不揮発性メモリ領域11に対する書き込みを許可したり禁止したりする。書換え許可部30は、記憶装置31を含む。記憶装置31は、書換え制御フラグ(第2のフラグ)31aを揮発的に格納する。書換え制御フラグ31aは、第3の値又は第4の値を有する。第3の値は、第1の不揮発性メモリ領域11に対する書換えが禁止であることを示す(以下、「禁止」又は「○」で表す)。第4の値は、第1の不揮発性メモリ領域11に対する書換えが許可であることを示す(以下、「許可」又は「×」で表す)。   The rewrite permission unit 30 permits or prohibits writing to the first nonvolatile memory area 11. The rewrite permission unit 30 includes a storage device 31. The storage device 31 stores the rewrite control flag (second flag) 31a in a volatile manner. The rewrite control flag 31a has a third value or a fourth value. The third value indicates that rewriting to the first nonvolatile memory area 11 is prohibited (hereinafter, represented by “prohibited” or “◯”). The fourth value indicates that rewriting to the first nonvolatile memory area 11 is permitted (hereinafter, expressed as “permitted” or “x”).

書換え許可部30は、書換え制御フラグ31aの値を「禁止」にすることで第1の不揮発性メモリ領域11に対する書き込みを禁止でき、書換え制御フラグ31aの値を「許可」にすることで第1の不揮発性メモリ領域11に対する書き込みを許可することができる。   The rewrite permission unit 30 can prohibit writing to the first nonvolatile memory area 11 by setting the value of the rewrite control flag 31 a to “prohibited”, and can set the first value by setting the value of the rewrite control flag 31 a to “permitted”. Writing to the non-volatile memory area 11 can be permitted.

例えば、書換え許可部30は、書換え許可要求を命令実行部60から受け且つ検証状態フラグ12aが「検証済」である場合、検証状態フラグ12aの値を「検証済」から「未検証」に変更する。書換え許可部30は、検証状態フラグ12aが「未検証」に変更されたことに応じて、書換え制御フラグ31aを「禁止」から「許可」に変更する。これにより、命令実行部60からの第1の不揮発性メモリ領域11への書き込みが許可された状態になる。   For example, when the rewrite permission unit 30 receives a rewrite permission request from the instruction execution unit 60 and the verification state flag 12a is “verified”, the value of the verification state flag 12a is changed from “verified” to “unverified”. To do. The rewrite permission unit 30 changes the rewrite control flag 31a from “prohibited” to “permitted” in response to the verification state flag 12a being changed to “unverified”. As a result, writing to the first nonvolatile memory area 11 from the instruction execution unit 60 is permitted.

プログラム検証要否判定部40は、情報処理装置1の起動時(例えば、再起動処理が行われたとき)に、検証状態フラグ12aの値に応じてプログラム11a1の検証の要否について判定する。プログラム検証要否判定部40は、情報処理装置1の起動時に、検証状態フラグ12aが「未検証」である場合、プログラム11a1の検証が必要であると判定する。プログラム検証要否判定部40は、情報処理装置1の起動時に、検証状態フラグ12aが「検証済」である場合、プログラム11a1の検証が不要であると判定し、正常起動許可通知を命令実行部60へ供給する。   The program verification necessity determination unit 40 determines whether or not the program 11a1 needs to be verified according to the value of the verification state flag 12a when the information processing apparatus 1 is activated (for example, when a restart process is performed). The program verification necessity determination unit 40 determines that the verification of the program 11a1 is necessary when the verification state flag 12a is “unverified” when the information processing apparatus 1 is activated. The program verification necessity determination unit 40 determines that the verification of the program 11a1 is unnecessary when the verification state flag 12a is “verified” when the information processing apparatus 1 is started, and sends a normal activation permission notification to the command execution unit. 60.

プログラム検証部50は、プログラム11a1に対する検証を行うことができる。   The program verification unit 50 can verify the program 11a1.

例えば、プログラム検証部50は、検証要求を命令実行部60から受けた場合、書換え制御フラグ31aを「許可」から「禁止」に変更するように書換え許可部30を制御する。あるいは、プログラム検証部50は、プログラム11a1の検証が必要である場合、書換え制御フラグ31aを「許可」から「禁止」に変更するように書換え許可部30を制御する。   For example, when receiving a verification request from the instruction execution unit 60, the program verification unit 50 controls the rewrite permission unit 30 to change the rewrite control flag 31a from “permitted” to “prohibited”. Alternatively, the program verification unit 50 controls the rewrite permission unit 30 to change the rewrite control flag 31a from “permitted” to “prohibited” when the program 11a1 needs to be verified.

この制御に応じて、書換え許可部30は、書換え制御フラグ31aを「許可」から「禁止」に変更する。これにより、命令実行部60からの第1の不揮発性メモリ領域11への書き込みが禁止された状態になる。プログラム検証部50は、この変更に応じて、プログラム11a1に対する検証を行う。プログラム検証部50は、検証に成功すると、検証状態フラグ12aを「未検証」から「検証済」に変更して、検証成功通知を命令実行部60へ供給する。プログラム検証部50は、検証に失敗すると、検証状態フラグ12aを「未検証」のまま変更せず、検証失敗通知を命令実行部60へ供給する。   In accordance with this control, the rewrite permission unit 30 changes the rewrite control flag 31a from “permitted” to “prohibited”. As a result, writing to the first nonvolatile memory area 11 from the instruction execution unit 60 is prohibited. The program verification unit 50 verifies the program 11a1 according to this change. When the verification is successful, the program verification unit 50 changes the verification status flag 12 a from “unverified” to “verified”, and supplies a verification success notification to the instruction execution unit 60. If the verification fails, the program verification unit 50 supplies a verification failure notification to the instruction execution unit 60 without changing the verification status flag 12a as “unverified”.

あるいは、プログラム検証部50は、プログラム11a1の検証が不要である場合、プログラム11a1に対する検証をスキップする。このとき、検証状態フラグ12aは「検証済」になっている。   Or the program verification part 50 skips verification with respect to the program 11a1, when the verification of the program 11a1 is unnecessary. At this time, the verification state flag 12a is “verified”.

命令実行部60は、検証に失敗したプログラム11a1を実行しないが、検証に成功したプログラム11a1を実行する。命令実行部60は、プログラム11a1に従って、各部を統括的に制御することができる。例えば、命令実行部60は、外部(上位のコントローラ等)からプログラム11a1の更新コマンドを受けた場合、実行中のプログラム11a1に従い、更新コマンドに応じて書換え許可要求を発行して書換え許可部30に供給する。命令実行部60は、外部からのコマンドに応じて又は自律的な判断に応じてプログラム11a1を起動すべきであると判断し且つ所定の時間内に正常起動許可通知を受けなかった場合、実行中のプログラム11a1に従い、検証要求を発行してプログラム検証部50へ供給する。そして、命令実行部60は、検証成功通知を受けた場合、プログラムメモリブロック11aから読み出された更新後のプログラム11a1の実行を開始する。命令実行部60は、検証失敗通知をプログラム検証部50から受けた場合、プログラム11a1の実行を停止する(更新後のプログラム11a1をプログラムメモリブロック11aから読み出しても実行しない)。あるいは、命令実行部60は、外部からのコマンドに応じて又は自律的な判断に応じてプログラム11a1を起動すべきであると判断し且つ所定の時間内に正常起動許可通知をプログラム検証要否判定部40から受けた場合、検証要求を発行することなく、プログラムメモリブロック11aから読み出された更新後のプログラム11a1の実行を開始する。   The instruction execution unit 60 does not execute the program 11a1 that has failed verification, but executes the program 11a1 that has been verified successfully. The instruction execution unit 60 can comprehensively control each unit in accordance with the program 11a1. For example, when the instruction execution unit 60 receives an update command for the program 11a1 from the outside (higher-order controller or the like), the instruction execution unit 60 issues a rewrite permission request according to the update command according to the program 11a1 being executed and Supply. If the instruction execution unit 60 determines that the program 11a1 should be started according to an external command or according to an autonomous determination and does not receive a normal activation permission notification within a predetermined period of time, it is being executed. In accordance with the program 11a1, the verification request is issued and supplied to the program verification unit 50. Then, when receiving the verification success notification, the instruction execution unit 60 starts executing the updated program 11a1 read from the program memory block 11a. When the instruction execution unit 60 receives the verification failure notification from the program verification unit 50, the instruction execution unit 60 stops the execution of the program 11a1 (the updated program 11a1 is not executed even if it is read from the program memory block 11a). Alternatively, the instruction execution unit 60 determines that the program 11a1 should be started according to a command from the outside or according to an autonomous determination, and determines whether the program verification is necessary or not within a predetermined time. When received from the unit 40, execution of the updated program 11a1 read from the program memory block 11a is started without issuing a verification request.

図2は、書換え制御フラグ31a及び検証状態フラグ12aの機能を示す図である。情報処理装置1では、不揮発性の検証状態フラグ12aと揮発性の書換え制御フラグ31aとを操作することで、プログラム11a1の検証を行わなくても安全な状態であるか否かを判断できるようにしている。すなわち、書換え許可部30による書換え許可機能により、検証状態フラグ12aが「×」になっている状態で書換え制御フラグ31aが「○」から「×」に変更される。そして、プログラム検証部50による検証機能により、検証状態フラグ12aが「×」になっている状態で書換え制御フラグ31aが「×」から「○」に変更される。これにより、検証状態フラグ12aが「○」になっているときは、書換え制御フラグ31aが「○」になっていることが担保される。このことは、検証状態フラグ12aが第2の不揮発性メモリ領域12に不揮発的に格納されているので、情報処理装置1の再起動処理が行われたときにも担保できる。   FIG. 2 is a diagram illustrating the functions of the rewrite control flag 31a and the verification status flag 12a. In the information processing apparatus 1, by operating the nonvolatile verification state flag 12a and the volatile rewrite control flag 31a, it is possible to determine whether or not the program 11a1 is in a safe state without performing verification. ing. In other words, the rewrite permission function by the rewrite permission unit 30 changes the rewrite control flag 31a from “◯” to “×” while the verification state flag 12a is “×”. Then, the rewrite control flag 31a is changed from “×” to “◯” with the verification state flag 12a being “×” by the verification function of the program verification unit 50. Thereby, when the verification state flag 12a is “◯”, it is ensured that the rewrite control flag 31a is “◯”. This can be ensured even when the information processing apparatus 1 is restarted because the verification state flag 12a is stored in the second nonvolatile memory area 12 in a nonvolatile manner.

これにより、検証状態フラグ12aが「○」であり第1の不揮発性メモリ領域11に対する書換えが行われていない(すなわち、プログラム11a1に対する書換えが行われていない)と予想できる場合に、セキュアブートの実行をスキップさせることができる。この結果、セキュアブートの実行頻度を必要最小限(検証状態フラグ12aが「×」になっている場合)に抑えることができ、プログラム11a1の起動処理を高速化することができる。したがって、プログラム11a1の不正な改ざんを確実に検出・防止できるとともに、プログラム11a1の平均的な起動時間の短縮化を図ることができる。また、セキュアブートの実行頻度を必要最小限に抑えることができるので、情報処理装置1の平均的な消費電力を低減できる。   As a result, when the verification state flag 12a is “◯” and it can be predicted that the first nonvolatile memory area 11 has not been rewritten (that is, the program 11a1 has not been rewritten), Execution can be skipped. As a result, the execution frequency of the secure boot can be suppressed to a necessary minimum (when the verification status flag 12a is “x”), and the startup process of the program 11a1 can be speeded up. Therefore, unauthorized alteration of the program 11a1 can be reliably detected and prevented, and the average startup time of the program 11a1 can be shortened. In addition, since the execution frequency of the secure boot can be minimized, the average power consumption of the information processing apparatus 1 can be reduced.

図3は、情報処理装置1のハードウェア構成を示すブロック図である。図3では、情報処理装置1としてマイクロコントローラチップ101が例示されている。   FIG. 3 is a block diagram illustrating a hardware configuration of the information processing apparatus 1. In FIG. 3, a microcontroller chip 101 is illustrated as the information processing apparatus 1.

マイクロコントローラチップ101は、CPUコア102、SRAM103、マスクROM104、バス105、不揮発性メモリ111、書換え許可回路121、プログラム検証回路141、プログラム検証要否判定回路161、及びリセット制御回路106を有する。CPUコア102、SRAM103、マスクROM104、不揮発性メモリ111、書換え許可回路121、プログラム検証回路141、及びプログラム検証要否判定回路161は、バス105を介して互いに接続されている。   The microcontroller chip 101 includes a CPU core 102, SRAM 103, mask ROM 104, bus 105, nonvolatile memory 111, rewrite permission circuit 121, program verification circuit 141, program verification necessity determination circuit 161, and reset control circuit 106. The CPU core 102, SRAM 103, mask ROM 104, nonvolatile memory 111, rewrite permission circuit 121, program verification circuit 141, and program verification necessity determination circuit 161 are connected to each other via the bus 105.

CPUコア102及びSRAM103は、機能構成(図1参照)における命令実行部60に対応する。マスクROM104は、書換え不能な不揮発性メモリ20に対応する。不揮発性メモリ111は、書換え可能な不揮発性メモリ10に対応する。書換え許可回路121は、書換え許可部30に対応する。プログラム検証回路141は、プログラム検証部50に対応する。プログラム検証要否判定回路161は、プログラム検証要否判定部40に対応する。   The CPU core 102 and the SRAM 103 correspond to the instruction execution unit 60 in the functional configuration (see FIG. 1). The mask ROM 104 corresponds to the non-rewritable nonvolatile memory 20. The nonvolatile memory 111 corresponds to the rewritable nonvolatile memory 10. The rewrite permission circuit 121 corresponds to the rewrite permission unit 30. The program verification circuit 141 corresponds to the program verification unit 50. The program verification necessity determination circuit 161 corresponds to the program verification necessity determination unit 40.

SRAM103は、CPUコア102による作業領域を含む。例えば、CPUコア102は、マスクROM104に格納されたシステムプログラムをワード単位でSRAM103に読み出して実行可能である。   The SRAM 103 includes a work area for the CPU core 102. For example, the CPU core 102 can read and execute a system program stored in the mask ROM 104 to the SRAM 103 in units of words.

不揮発性メモリ111は、複数の論理ブロックに分割されている。複数の論理ブロックは論理ブロック112,113を含む。論理ブロック112は、第1の不揮発性メモリ領域11に対応する。論理ブロック112は、プログラムメモリブロック11aを含む。プログラムメモリブロック11aには、プログラム11a1が不揮発的に格納されている。論理ブロック113は、第2の不揮発性メモリ領域12に対応する。論理ブロック113は、検証状態フラグ12aが不揮発的に格納されている。   The nonvolatile memory 111 is divided into a plurality of logical blocks. The plurality of logical blocks include logical blocks 112 and 113. The logical block 112 corresponds to the first nonvolatile memory area 11. The logic block 112 includes a program memory block 11a. The program memory block 11a stores the program 11a1 in a nonvolatile manner. The logical block 113 corresponds to the second nonvolatile memory area 12. The logical block 113 stores the verification state flag 12a in a nonvolatile manner.

不揮発性メモリ111はバス105に接続されているが、複数の論理ブロックの中で、バス105を経由してCPUコア102から直接アクセス可能な領域は論理ブロック112に限定され、ここにシステムプログラムとしてのプログラム11a1が格納され得る。検証状態フラグ12aは、書換え許可回路121、プログラム検証回路141、プログラム検証要否判定回路161を経由して間接的に参照・更新され、プログラムが直接値を操作することはできない。リセット制御回路106がプログラム検証要否判定回路161に接続されている。   The non-volatile memory 111 is connected to the bus 105, but the area that can be directly accessed from the CPU core 102 via the bus 105 is limited to the logical block 112 among the plurality of logical blocks. A program 11a1 may be stored. The verification status flag 12a is indirectly referenced / updated via the rewrite permission circuit 121, the program verification circuit 141, and the program verification necessity determination circuit 161, and the program cannot directly manipulate the value. The reset control circuit 106 is connected to the program verification necessity determination circuit 161.

書換え許可回路121は、レジスタ122、未検証状態設定機能123、検証状態読出し機能124、書換え許可設定機能125、及び書込み機能126を有する。レジスタ122は、記憶装置31に対応する。書込み機能126は、書換え制御フラグ31aが「許可」になっている状態ではCPUコア102から制御に従い、プログラムメモリブロック11aに対するプログラム等の情報の書き換えを行ったり、プログラムメモリブロック11aに格納された情報を消去したりする。プログラム検証回路141は、フィンガープリント値計算機能142、フィンガープリント期待値検証機能143、フィンガープリント値照合機能144、及び書換え禁止設定機能145を有する。プログラム検証要否判定回路161は、検証要否判定機能162を有する。   The rewrite permission circuit 121 includes a register 122, an unverified state setting function 123, a verification state reading function 124, a rewrite permission setting function 125, and a writing function 126. The register 122 corresponds to the storage device 31. In the state where the rewrite control flag 31a is “permitted”, the write function 126 rewrites information such as a program for the program memory block 11a according to control from the CPU core 102, and information stored in the program memory block 11a. Or delete. The program verification circuit 141 has a fingerprint value calculation function 142, a fingerprint expected value verification function 143, a fingerprint value verification function 144, and a rewrite prohibition setting function 145. The program verification necessity determination circuit 161 has a verification necessity determination function 162.

マイクロコントローラチップ101で実行可能であるセキュアブートが想定する脅威は大きく2つある。ひとつは、マイクロコントローラチップ101の外部に接続される汎用メモリや汎用メモリをマイクロコントローラチップ101から外して、もしくは並列にアクセスしてシステムプログラムを不正に書換える外部攻撃(物理攻撃)である。もうひとつは、システムの実行中に外部から侵入した不正プログラムが、正規のプログラム更新のために備えられているメモリまたはストレージ書換え機能を利用して、システムプログラムを不正に書換える内部攻撃である。故障注入などのサイドチャネル攻撃はここでは対象外とする。   There are two major threats assumed by secure boot that can be executed by the microcontroller chip 101. One is an external attack (physical attack) in which a general-purpose memory connected to the outside of the microcontroller chip 101 or a general-purpose memory is removed from the microcontroller chip 101 or accessed in parallel to illegally rewrite the system program. The other is an internal attack in which a malicious program that has entered from the outside during system execution illegally rewrites a system program by using a memory or storage rewriting function provided for regular program update. Side channel attacks such as fault injection are excluded here.

オンチップメモリ(不揮発性メモリ111)を持つマイクロコントローラチップ101では、その構成から、基本的には外部攻撃は考慮の対象外としてよいことが有利な点である。すなわち、マイクロコントローラチップ101がシステムオンチップで構成されている場合、マイクロコントローラチップ101は、不揮発性メモリ111へ直接的にアクセス可能な外部端子を有さない仕様とすることができる。図示は省略されているが、初期プログラム書込みのため、マイクロコントローラチップ101は、工場からの出荷前の段階ではJTAG端子などの不揮発性メモリ用の書込み端子を持ってもよい。プログラムを書きこみ後に上記JTAG端子を工場内で無効化後、出荷する。出荷後は上記JTAG端子を通じたプログラム書込みはできない。その後のプログラム更新は、書きこまれた初期プログラムの動作によりネットワーク経由で取得したプログラムをCPUコア102から不揮発メモリ111に書きこむことによって行われる。   In the microcontroller chip 101 having the on-chip memory (non-volatile memory 111), it is advantageous that the external attack may be basically excluded from consideration due to its configuration. In other words, when the microcontroller chip 101 is configured as a system-on-chip, the microcontroller chip 101 can be configured to have no external terminal that can directly access the nonvolatile memory 111. Although not shown, for initial program writing, the microcontroller chip 101 may have a write terminal for a nonvolatile memory such as a JTAG terminal in a stage before shipment from the factory. After writing the program, invalidate the JTAG terminal in the factory and ship it. After shipment, the program cannot be written through the JTAG terminal. The subsequent program update is performed by writing the program acquired via the network by the operation of the written initial program from the CPU core 102 to the nonvolatile memory 111.

本実施形態では、攻撃を内部攻撃に限定できる利点を活用してセキュアブートの安全性を担保しつつ、わずかなハードウェアの追加・変更で起動時間を短縮可能な構成を開示する。主な要求条件は以下の通りである。   In the present embodiment, a configuration is disclosed in which the startup time can be shortened by adding or changing a small amount of hardware while ensuring the safety of secure boot by utilizing the advantage that an attack can be limited to an internal attack. The main requirements are as follows.

(要求1):一度システムプログラム(プログラム11a1)のフィンガープリント検証を行っておけば、検証に成功した場合にマイクロコントローラチップ101内部の不揮発性メモリ111に「検証済」の検証状態フラグ12aを保持することにより、次項の場合を除いて、次回からの起動ではフィンガープリント検証を行わず高速に起動できる。   (Request 1): Once the fingerprint verification of the system program (program 11a1) is performed, the verification status flag 12a of “verified” is held in the nonvolatile memory 111 inside the microcontroller chip 101 when the verification is successful. By doing so, except for the case of the next item, the next time activation can be performed at high speed without performing fingerprint verification.

(要求2):電源断をまたいでも検証状態は保持され高速化の効果が維持される。
(要求3):ただし、システムプログラム(プログラム11a1)が書換えられた場合には再起動時に検証が行われ、検証に成功した場合に「検証済」の検証状態フラグ12aが保持される。次回の起動では書換えがなければフィンガープリント検証を行わず高速に起動できる。
(Request 2): Even if the power is cut off, the verification state is maintained and the effect of speeding up is maintained.
(Request 3): However, when the system program (program 11a1) is rewritten, the verification is performed at the time of restart, and when the verification is successful, the verification state flag 12a of “verified” is held. If there is no rewriting at the next activation, it can be activated at high speed without performing fingerprint verification.

(要求4):次回起動時のシステムプログラム(プログラム11a1)の書換え検出においては、正規の手順による書換えに限定せず、悪意のプログラムを含む任意のプログラム実行によって行われるものを検出可能であること。実際に書換えが行われたかどうかは問わず、書換え途中に電源断が発生して書換えが中断されるようなケースなどの、書換えが行われた可能性がある場合を含めて広く検出可能であること。   (Request 4): Rewriting detection of the system program (program 11a1) at the next start-up is not limited to rewriting by a regular procedure, and can be performed by executing arbitrary programs including malicious programs. . Regardless of whether or not rewriting has actually been performed, it is possible to detect a wide range of cases, including cases where rewriting may have been performed, such as cases where the power is interrupted during rewriting and the rewriting is interrupted. thing.

(要求5):実現にあたってのハードウェア規模が小さいこと。たとえばプログラムメモリブロック11aへの書込み全てのログをセキュアメモリに保存することは、保存のためのセキュアメモリのコストや消費電力の増加が大きく好ましくない。   (Requirement 5): The hardware scale for implementation is small. For example, saving all logs written to the program memory block 11a in the secure memory is not preferable because the cost of the secure memory for saving and the increase in power consumption are large.

(要求6):不揮発性メモリ111への更新プログラムの書き込みは、更新プログラムの配布方式に依存するため、システムプログラム側が行うこと。システムプログラムはネットワーク通信と受信した更新プログラム断片の管理を含む複雑な機能を実行するため、潜在的な脆弱性を持ち、ネットワークからの攻撃を受け一時的に不正プログラムが実行され、さらにフラッシュメモリに当該もしくは別の不正プログラムが書きこまれてしまうおそれがあるが、その際でも検証と再起動を行うことにより不正プログラムの排除が可能であること。   (Request 6): The writing of the update program to the nonvolatile memory 111 depends on the distribution method of the update program, and therefore must be performed by the system program side. The system program performs complex functions including network communication and management of received update fragment, so it has potential vulnerabilities, and malicious programs are temporarily executed by attacks from the network, and further to flash memory There is a risk that this or another malicious program may be written, but even in that case, it is possible to eliminate the malicious program by performing verification and restart.

要求1〜要求6を満たすため、マイクロコントローラチップ101には、ハードウェアエンジン(プログラム検証回路141)による検証の完了後に不揮発性メモリ111が一度も書換え可能な状態になっていないことを、電源断をまたいで担保するハードウェアロジックが実装されている。   In order to satisfy the requirements 1 to 6, the microcontroller chip 101 indicates that the nonvolatile memory 111 has not been rewritable once after the verification by the hardware engine (program verification circuit 141) is completed. Hardware logic that secures the security across the network is implemented.

図4は、情報処理装置1(マイクロコントローラチップ101)の書換え許可要求に応じた動作を示すフローチャートである。   FIG. 4 is a flowchart showing the operation of the information processing apparatus 1 (microcontroller chip 101) in response to the rewrite permission request.

書換え許可回路121は、マイクロコントローラチップ101が起動時等に、書換え制御フラグ31aにデフォルトの値として「禁止」を設定する。システムプログラム(プログラム11a1)は、プログラムメモリブロック11aへの書き込みに先だってCPUコア102で発行させた書換え許可要求を書換え許可回路121に供給させる(S1)。書換え許可回路121は、不揮発性メモリ111上の検証状態フラグ12aの書込み権を取得し(S2)、検証状態フラグ12aに「未検証」の値を書きこむ(S3)。書換え許可回路121は、検証状態フラグ12aに値が適切に書き込まれたか確認するために、検証状態フラグ12aを不揮発性メモリ111から読み出す(S4)。このとき、読み出された情報に符号ビットが含まれていれば誤り訂正を行ってもよい。書換え許可回路121は、読み出された検証状態フラグ12aが「未検証」である場合(S5で「成功」)、書換え制御フラグ31aに「許可」を書きこみ(S6)、検証状態フラグ12aの書込み権を開放する(S7)。例えば、検証状態フラグ12aの「未検証」と書換え制御フラグ31aの「許可」の値を同一値に定義しておくことで、S6の操作を、読みだした検証状態フラグ12aの値を書換え制御フラグ31aに複写する操作として単純化することもできる。なお、書換え許可回路121は、誤り訂正に失敗するなど検証状態フラグ12aの値が適正に読み出されなかった(読出しがエラーになった)場合(S5で「失敗」)、書換え許可設定(S6)を行わずに検証状態フラグ12aの書込み権を開放する(S7)。   The rewrite permission circuit 121 sets “prohibited” as a default value in the rewrite control flag 31 a when the microcontroller chip 101 is activated. The system program (program 11a1) supplies the rewrite permission circuit 121 with the rewrite permission request issued by the CPU core 102 prior to writing to the program memory block 11a (S1). The rewrite permission circuit 121 acquires the right to write the verification status flag 12a on the nonvolatile memory 111 (S2), and writes a value of “unverified” in the verification status flag 12a (S3). The rewrite permission circuit 121 reads the verification state flag 12a from the nonvolatile memory 111 in order to confirm whether or not the value is properly written in the verification state flag 12a (S4). At this time, if the read information includes a code bit, error correction may be performed. When the read verification status flag 12a is “unverified” (“success” in S5), the rewrite permission circuit 121 writes “permitted” in the rewrite control flag 31a (S6), and the verification status flag 12a The write right is released (S7). For example, the value of “unverified” in the verification status flag 12a and the “permitted” value in the rewrite control flag 31a are defined to be the same value, so that the operation in S6 can be performed to rewrite the value of the read verification status flag 12a. It can be simplified as an operation for copying to the flag 31a. When the value of the verification status flag 12a is not properly read (ie, reading has failed) (eg, “failure” in S5), the rewrite permission circuit 121 sets the rewrite permission (S6). The right to write the verification status flag 12a is released (S7).

ここまでの操作により、書換え許可要求に対応する処理は完了し(S8)、書換え制御フラグ31aに「許可」が設定されることで、プログラムメモリブロック11aへの書き込みが可能となる。書換え制御フラグ31aに「許可」が設定されるのは書換え許可要求に基づく上記の手順だけであるため、書換え制御フラグ31aが「許可」の状態では、検証状態フラグ12aが「未検証」となっていることが担保される。この時点でマイクロコントローラチップ101の再起動処理が行われても次回のリスタート時には検証処理が行われる。   With the operations so far, the processing corresponding to the rewrite permission request is completed (S8), and “permitted” is set in the rewrite control flag 31a, thereby enabling writing to the program memory block 11a. Since “permitted” is set in the rewrite control flag 31a only in the above procedure based on the rewrite permission request, when the rewrite control flag 31a is “permitted”, the verification state flag 12a becomes “unverified”. Is guaranteed. Even if the microcontroller chip 101 is restarted at this time, the verification process is performed at the next restart.

さらに、上記の通常手順に加えてこの手順のどの時点で電源断による中断や検証状態フラグ12aへの書込み失敗があったとしても、書換え許可状態(書換え制御フラグ31aが「許可」の状態)になった場合には、未検証状態(検証状態フラグ12aが「未検証」の状態)が担保される。本実施形態では、プログラムメモリブロック11aへの書込み履歴を保存するのではなく、書換え制御フラグ31aを「許可」に設定する際の前処理として検証状態フラグ12aを「未検証」に設定する。これにより、検証状態フラグ12aが「検証済」の状態であれば、前回の検証完了から、プログラムメモリブロック11aへの書き込みが一切行われていないことが担保できる。   Furthermore, in addition to the normal procedure described above, even if there is an interruption due to a power interruption or a failure to write to the verification status flag 12a at any point in this procedure, the rewrite permission state (the rewrite control flag 31a is “permitted” state) In such a case, the unverified state (the state where the verification state flag 12a is “unverified”) is secured. In the present embodiment, the history of writing to the program memory block 11a is not saved, but the verification status flag 12a is set to “unverified” as preprocessing when the rewrite control flag 31a is set to “permitted”. Thus, if the verification status flag 12a is in the “verified” state, it can be ensured that no writing to the program memory block 11a has been performed since the previous verification was completed.

図5は、情報処理装置1(マイクロコントローラチップ101)の動作を示すシーケンス図であり、図4のフローチャートと対応する処理を同じ番号で示している。プログラムメモリブロック11aへの書き込みが許可されると、CPUコア102は、システムプログラム(プログラム11a1としての「Prog1」)に従い、外部サーバ201からネットワーク202およびネットワークインタフェース199を経由して更新プログラムイメージを逐次取得し、プログラムメモリブロック11aに書きこむ。このとき、どのような順序で書込みが行われてもよい。ネットワーク202経由で更新プログラムイメージ(例えば、「Prog2」)を取得する際には、パケット順序の逆転などが発生するが、本実施形態では以下で説明する検証開始の時点で正しいプログラムイメージが書きこまれてさえいれば、それ以前にはどのような順序でプログラムメモリブロック11aに書込みが行われてもよい。もし受信した更新プログラムが不正なものであったとしても後述の検証処理で検出できる。さらにこの更新処理がネットワーク202経由で感染する不正プログラムに乗っ取られてしまい、プログラムメモリブロック11aに不正プログラムが書きこまれてしまったとしても、検証処理で不正プログラムの存在を検出し、次回再起動時にプログラムメモリブロック11a上の不正プログラムが実行されてしまうことを防止できる。   FIG. 5 is a sequence diagram showing the operation of the information processing apparatus 1 (microcontroller chip 101), and the processes corresponding to those in the flowchart of FIG. When the writing to the program memory block 11a is permitted, the CPU core 102 sequentially transmits the update program image from the external server 201 via the network 202 and the network interface 199 according to the system program (“Prog1” as the program 11a1). Obtain and write to the program memory block 11a. At this time, writing may be performed in any order. When an update program image (for example, “Prog2”) is acquired via the network 202, a packet order reversal or the like occurs. In this embodiment, a correct program image is written at the start of verification described below. As long as it is rare, the program memory block 11a may be written in any order before that. Even if the received update program is illegal, it can be detected by the verification process described later. Further, even if this update process is hijacked by a malicious program that is infected via the network 202, and the malicious program is written in the program memory block 11a, the presence of the malicious program is detected by the verification process and restarted next time. Sometimes, it is possible to prevent an unauthorized program on the program memory block 11a from being executed.

CPUコア102は、プログラムメモリブロック11a上における「Prog1」から「Prog2」への書換えを行う。プログラムメモリブロック11a上において、「Prog1」が存在している状態から「Prog1」と「Prog2」とが混在している状態(Prog1/2」)を経て、「Prog2」が存在している状態に至る。CPUコア102は、「Prog1」から「Prog2」への書換えが完了すると、書換え後の「Prog2」の検証要求を発行する。   The CPU core 102 rewrites “Prog1” to “Prog2” on the program memory block 11a. On the program memory block 11a, from the state where “Prog1” is present to the state where “Prog1” and “Prog2” are mixed (Prog1 / 2 ”),“ Prog2 ”is present. It reaches. When the rewriting from “Prog1” to “Prog2” is completed, the CPU core 102 issues a verification request for “Prog2” after the rewriting.

図6は、情報処理装置1の検証要求に応じた動作を示すフローチャートである。プログラム検証回路141は、CPUコア102から検証要求を受け(S11)、プログラムメモリブロック11aの内容を検証する。以下、公開鍵署名に基づく検証の説明を記載するが、共通鍵に基づくMAC(Message Authentication Code)なども適用可能である。   FIG. 6 is a flowchart showing an operation of the information processing apparatus 1 in response to the verification request. The program verification circuit 141 receives a verification request from the CPU core 102 (S11), and verifies the contents of the program memory block 11a. Hereinafter, description of verification based on a public key signature will be described, but a MAC (Message Authentication Code) based on a common key is also applicable.

プログラムメモリブロック11a内に検証対象プログラム「Prog2」とそれに対する公開鍵署名「Cert」が置かれているものとする。署名「Cert」は、プログラムの配布元が持つ公開鍵系の秘密鍵「Ks」により検証対象プログラムのハッシュ値に署名がなされたものである。プログラム検証回路はKsに対応する公開鍵「Kp」を持つ。   It is assumed that a verification target program “Prog2” and a public key signature “Cert” for the verification target program are placed in the program memory block 11a. The signature “Cert” is obtained by signing the hash value of the verification target program with the public key private key “Ks” possessed by the program distribution source. The program verification circuit has a public key “Kp” corresponding to Ks.

検証要求を受けたプログラム検証回路141は、検証状態フラグ12aの書込み権を取得し(S12)、書換え禁止設定機能145により、書換え制御フラグ31aを「禁止」に設定する(S13)。   Receiving the verification request, the program verification circuit 141 acquires the right to write the verification status flag 12a (S12), and sets the rewrite control flag 31a to “prohibited” by the rewrite prohibition setting function 145 (S13).

次に、プログラム検証回路141は、フィンガープリント値計算機能142により検証対象プログラム「Prog2」のフィンガープリント値を計算し、フィンガープリント期待値検証機能143によりフィンガープリント期待値を取得する(S14)。すなわち、フィンガープリント期待値検証機能143は、第1の検証処理(例えば、署名検証)を行い、第1の検証処理に成功した場合にフィンガープリント期待値を取得でき、第1の検証処理に失敗した場合、フィンガープリント期待値を取得できない。第1の検証処理が成功した場合、プログラム検証回路141は、第2の検証処理(例えば、フィンガープリント検証)を行う。すなわち、プログラム検証回路141は、フィンガープリント値照合機能144によりフィンガープリント値とフィンガープリント期待値(検証期待値)との照合を行う。ここではプログラムのハッシュ値がフィンガープリント値に相当し、公開鍵署名から抽出したハッシュ値がフィンガープリント期待値に相当する。なお、第1の検証処理が失敗した場合、プログラム検証回路141は、第2の検証処理を行わない。   Next, the program verification circuit 141 calculates the fingerprint value of the verification target program “Prog2” using the fingerprint value calculation function 142, and acquires the fingerprint expected value using the fingerprint expected value verification function 143 (S14). That is, the fingerprint expected value verification function 143 performs the first verification process (for example, signature verification), and can acquire the fingerprint expected value when the first verification process is successful, and the first verification process fails. If it does, the expected fingerprint value cannot be acquired. When the first verification process is successful, the program verification circuit 141 performs a second verification process (for example, fingerprint verification). That is, the program verification circuit 141 compares the fingerprint value with the fingerprint expected value (verification expected value) by the fingerprint value verification function 144. Here, the hash value of the program corresponds to the fingerprint value, and the hash value extracted from the public key signature corresponds to the expected fingerprint value. Note that if the first verification process fails, the program verification circuit 141 does not perform the second verification process.

フィンガープリント値とフィンガープリント期待値とが合致しなかった場合(S15で「失敗」)、検証は失敗となり、プログラム検証回路141は、検証状態フラグ12aの書込み権を開放し(S17)、検証を完了させる(S18)。   If the fingerprint value does not match the expected fingerprint value (“failed” in S15), the verification fails, and the program verification circuit 141 releases the write right of the verification status flag 12a (S17), and performs verification. Complete (S18).

フィンガープリント値とフィンガープリント期待値とが合致した場合(S15で「成功」)、検証は成功となり、フィンガープリント値照合機能144により、検証状態フラグ12aに「検証済」が設定される(S16)。プログラム検証回路141は、検証状態フラグ12aの書込み権を開放し(S17)、検証を完了させる(S18)。   If the fingerprint value matches the fingerprint expected value (“success” in S15), the verification is successful, and the fingerprint value matching function 144 sets “verified” in the verification status flag 12a (S16). . The program verification circuit 141 releases the right to write the verification status flag 12a (S17) and completes the verification (S18).

図7は、検証状態フラグ12aに「検証済」が設定されている状態で再起動処理が行われた場合、情報処理装置1の動作を示すフローチャートである。   FIG. 7 is a flowchart showing the operation of the information processing apparatus 1 when the restart process is performed in a state where “verified” is set in the verification status flag 12a.

マイクロコントローラチップ101の再起動処理(S21)が行われた後に、プログラム検証要否判定回路161は、リセット制御回路106からの起動信号を受信し、起動信号をトリガーとして検証状態フラグ12aを不揮発性メモリ111から読み出す(S22)。検証状態フラグ12aが「検証済」であるため(S23で「検証済」)、プログラム検証要否判定回路161は、検証の実行が不要であると判定し、CPUコア102に正常起動許可を通知する(S26)。これに応じて、CPUコア102は、格納されたプログラム11a1を所定のアドレスから実行する。図8は、情報処理装置1の動作を示すシーケンス図であり、図7のフローチャートと対応する処理を同じ番号で示している。   After the restart process (S21) of the microcontroller chip 101 is performed, the program verification necessity determination circuit 161 receives the activation signal from the reset control circuit 106, and uses the activation signal as a trigger to set the verification state flag 12a to nonvolatile. Read from the memory 111 (S22). Since the verification status flag 12a is “verified” (“verified” in S23), the program verification necessity determination circuit 161 determines that the execution of verification is unnecessary and notifies the CPU core 102 of the normal activation permission. (S26). In response to this, the CPU core 102 executes the stored program 11a1 from a predetermined address. FIG. 8 is a sequence diagram illustrating the operation of the information processing apparatus 1, and processes corresponding to those in the flowchart of FIG.

本実施形態の方式は、書換え許可と検証処理とにおいて、書換え制御フラグ31aと検証状態フラグ12aとの操作を組み合わせることにより、検証が電源断などにより中断したとしても、再起動処理後に検証が行われるようにすることができる。   In the method of the present embodiment, the combination of the operation of the rewrite control flag 31a and the verification status flag 12a in the rewrite permission and the verification process allows the verification to be performed after the restart process even if the verification is interrupted due to a power failure or the like. It can be made to be.

図7と図9にしたがってそのときの動作を説明する。図9は、情報処理装置1の動作を示すシーケンス図である。検証実行までは図5のシーケンスと同一である。検証計算が未完了もしくは検証計算に基づく検証状態を示す値が検証状態フラグ12aに書きこまれない状態で再起動処理(S21)が発生している。   The operation at that time will be described with reference to FIGS. FIG. 9 is a sequence diagram illustrating the operation of the information processing apparatus 1. The sequence until the verification execution is the same as the sequence of FIG. The restart process (S21) occurs when the verification calculation is not completed or a value indicating the verification status based on the verification calculation is not written in the verification status flag 12a.

再起動処理において検証状態フラグ12aは「未検証」となっている。プログラム検証要否判定回路161は、検証状態フラグ12aが「未検証」である(S23で「未検証」)ことに応じて、検証が必要であると判定し、プログラム検証回路141に検証の実行を要求する。プログラム検証回路141は、書換え制御フラグ31aを「禁止」に変更し、検証を行う(S24)。この場合、正しい更新プログラムがプログラムメモリブロック11aに書きこまれているため、プログラム検証回路141は、検証に成功し(S25で「成功」)、検証状態フラグ12aに「検証済」が設定され、検証成功がプログラム検証要否判定回路161に通知される。これをもってプログラム検証要否判定回路161は、CPUコア102に正常起動許可を通知して(S26)、更新されたプログラム11a1が実行される(S27)。   In the restart process, the verification status flag 12a is “unverified”. The program verification necessity determination circuit 161 determines that the verification is necessary in response to the verification status flag 12a being “unverified” (“not verified” in S23), and executes the verification to the program verification circuit 141. Request. The program verification circuit 141 changes the rewrite control flag 31a to “prohibited” and performs verification (S24). In this case, since the correct update program is written in the program memory block 11a, the program verification circuit 141 succeeds in verification (“success” in S25), and “verified” is set in the verification status flag 12a. Successful verification is notified to the program verification necessity determination circuit 161. With this, the program verification necessity determination circuit 161 notifies the CPU core 102 of the normal activation permission (S26), and the updated program 11a1 is executed (S27).

このように、検証動作が中断された場合でも、再起動処理後に検証が行われるようにすることができる。ただし、再起動処理後に検証が行われるため、プログラム11a1の起動時間は長くなる。   Thus, even when the verification operation is interrupted, verification can be performed after the restart process. However, since the verification is performed after the restart process, the startup time of the program 11a1 becomes long.

次に、不正が検出された場合の動作を説明する。図10は、例えばシステムプログラムの脆弱性を利用するなどの方法により、SRAM103に侵入して実行されている不正プログラムが、プログラムメモリブロック11aに不正プログラムの書き込みを試みた場合のシーケンス図である。図10は、不正プログラムが自発的に検証処理を発行した場合には再起動処理時に再び検証が行われて不正プログラムが起動しない例である。   Next, an operation when fraud is detected will be described. FIG. 10 is a sequence diagram when a malicious program that has entered the SRAM 103 and executed by, for example, using a vulnerability of the system program attempts to write the malicious program into the program memory block 11a. FIG. 10 shows an example in which when a malicious program voluntarily issues a verification process, verification is performed again during the restart process and the malicious program does not start.

SRAM103上の不正プログラムは、正規のプログラム書込みと同じように書換え許可要求を発行し、プログラムメモリブロック11aに書込みを行い、検証要求を発行する。違うのは書きこまれるのが不正プログラムである点である。この場合においても、検証処理(S14)が実行され、検証に失敗し(S15で「失敗」)、検証が完了しても検証状態フラグ12aは「未検証」のままとなる。   The unauthorized program on the SRAM 103 issues a rewrite permission request in the same way as regular program writing, writes to the program memory block 11a, and issues a verification request. The difference is that what is written is a malicious program. Also in this case, the verification process (S14) is executed, the verification fails (“failure” in S15), and the verification status flag 12a remains “unverified” even if the verification is completed.

不正プログラムは再起動処理(S21)まで動作し続けるが、再起動処理後は、検証状態フラグ12aが「未検証」であるため(S23で「未検証」)、検証処理(S24)が実行され、検証結果は失敗(S25で「失敗」)となるため、CPUコア102には停止指示が発行されCPUコア102に通知される(S28)。したがって、不正プログラムは実行されない(S27)。SRAM103上の不正プログラムも電源が切られれば消失する。   The malicious program continues to operate until the restart process (S21). However, after the restart process, the verification status flag 12a is “unverified” (“unverified” in S23), so the verification process (S24) is executed. Since the verification result is failure (“failure” in S25), a stop instruction is issued to the CPU core 102 and notified to the CPU core 102 (S28). Therefore, the malicious program is not executed (S27). The malicious program on the SRAM 103 disappears when the power is turned off.

なお、SRAM103上で実行される不正プログラムと、プログラムメモリブロック11aに書きこまれる不正プログラムとは、同じプログラムである必要はない。   Note that the malicious program executed on the SRAM 103 and the malicious program written in the program memory block 11a do not have to be the same program.

図11に、プログラムメモリブロック11aに不正プログラムが書きまれた後に検証要求を発行しない場合のシーケンスを示す。検証要求を発行しないため、検証状態フラグ12aは「未検証」のままであり、図5の場合と同様に再起動での検証に失敗するため不正プログラムは実行されない。   FIG. 11 shows a sequence when a verification request is not issued after an illegal program is written in the program memory block 11a. Since the verification request is not issued, the verification status flag 12a remains “unverified”, and since the verification at the restart fails as in the case of FIG. 5, the malicious program is not executed.

図12に、書換え許可要求に応じた処理の途中に電源断等による処理中断と再起動処理とが発生した場合のシーケンスを示す。   FIG. 12 shows a sequence when a process interruption and a restart process occur due to a power interruption or the like in the middle of the process according to the rewrite permission request.

CPUコア102による書換え許可要求の発行後、検証状態フラグ12aが「未検証」に書換えられたものの、その結果が書換え制御フラグ31aに反映される前に電源断により処理が中断し再起動している。電源断までの間、書換え制御フラグ31aは「禁止」の状態を維持しているため、CPUコア102以外のDMAC107なども含めてプログラムメモリブック11aに対していかなる書込みも行われることはない。   After the issuance of a rewrite permission request by the CPU core 102, the verification status flag 12a is rewritten to “unverified”, but the process is interrupted due to a power interruption and restarted before the result is reflected in the rewrite control flag 31a. Yes. Until the power is turned off, the rewrite control flag 31a is kept in the “prohibited” state, and therefore any writing to the program memory book 11a including the DMAC 107 other than the CPU core 102 is not performed.

再起動処理(S21)後は、検証状態フラグ12aが「未検証」に設定されているため、再度検証(S24)が行われるが、プログラムメモリブロック11aは書換えられていないため検証に成功し(S25で「成功」)、CPUコア102に正常起動許可が通知され(S26)、プログラム11a1が実行される。   After the restart process (S21), since the verification status flag 12a is set to “unverified”, verification (S24) is performed again. However, since the program memory block 11a has not been rewritten, the verification succeeds ( “Success” in S25), normal activation permission is notified to the CPU core 102 (S26), and the program 11a1 is executed.

ここで、仮に、書換え許可の操作において、ふたつの状態フラグ操作の順序を入れ替えた場合を考える。この場合、CPUコア102により書換え許可要求が発行されると、書換え制御フラグ31aが「許可」に設定された後に、検証状態フラグ12aが「未検証」に設定されることになる。   Here, let us consider a case where the order of the two state flag operations is changed in the rewrite permission operation. In this case, when a rewrite permission request is issued by the CPU core 102, the verification state flag 12a is set to “unverified” after the rewrite control flag 31a is set to “permitted”.

このとき、書換え制御フラグ31aが「許可」に設定された直後からプログラムメモリブロック11aへの書き込みが可能になる。そして、不揮発性の検証状態フラグ12aへの「未検証」の書きこみ完了前に再起動が発生した場合、プログラムメモリブロック11aの書換えが発生したにもかかわらず、検証状態フラグ12aは「検証済」であるため、再起動処理後の検証はスキップされてしまう。この書込みで不正プログラムが書きこまれている場合、不正プログラムの実行が成功してしまう。   At this time, writing to the program memory block 11a becomes possible immediately after the rewrite control flag 31a is set to “permitted”. If a restart occurs before the completion of writing “unverified” to the nonvolatile verification status flag 12a, the verification status flag 12a is set to “verified” even though the program memory block 11a has been rewritten. Therefore, the verification after the restart process is skipped. If a malicious program is written by this writing, the malicious program is successfully executed.

それに対して、図12の例では検証状態フラグ12aの変更後に電源断が発生しているため、再起動処理後に検証が行われている。検証状態フラグ12aの変更前に電源断が発生した場合は、検証状態フラグ12aは「検証済」のままであるため、再起動処理後に検証は行われない。このとき、書換え制御フラグ31aの設定が検証状態フラグ12aの後に行われるため、この場合でもプログラムメモリブロック11aへの書き込みは行われないことが担保されており、再起動処理後に検証を行わなくても検証済みのプログラム11a1が書換えられてしまう可能性を排除できるため安全である。   On the other hand, in the example of FIG. 12, since the power interruption has occurred after the change of the verification state flag 12a, the verification is performed after the restart process. If the power interruption occurs before the verification status flag 12a is changed, the verification status flag 12a remains “verified”, so that the verification is not performed after the restart process. At this time, since the setting of the rewrite control flag 31a is performed after the verification state flag 12a, it is ensured that writing to the program memory block 11a is not performed even in this case, and verification is not performed after the restart process. Is also safe because the possibility of rewriting the verified program 11a1 can be eliminated.

すなわち、本実施形態では、検証状態を示す検証状態フラグ12aと、実行中の不揮発性メモリへの書き込みを制御する書換え制御フラグ31aとで、非同期の電源断を含む検証状態管理を安全に行うことができる。また、本実施形態では、既存のマイクロコントローラチップに対する回路の増加はわずかであり野外に配置されるフィールド機器やセンサ機器などセキュリティと低価格との両方が求められる機器に適している。   That is, in this embodiment, verification state management including asynchronous power-off is safely performed by the verification state flag 12a indicating the verification state and the rewrite control flag 31a that controls writing to the nonvolatile memory being executed. Can do. Further, in the present embodiment, the increase in the number of circuits with respect to the existing microcontroller chip is slight, and this embodiment is suitable for devices that require both security and low cost, such as field devices and sensor devices arranged outdoors.

なお、本実施形態では、システムプログラムが書込み許可要求と検証要求とを個別に発行することを想定している。この理由は、組込みマイクロコントローラのメモリ構成と書換え手順を想定したものである。この手順の他に、書込み許可要求と書込み、そして検証要求を一体としてハードウェア処理する構成も論理的には考えられるが、組込みマイクロコントローラには適していない。この手順の場合、書込み先のプログラムメモリが書込み可能となる以前に、検証対象のプログラム11a1がすべて別のバッファメモリに格納されている必要がある。バッファメモリとしてもっとも一般的なのはSRAMだがSRAMはフラッシュメモリよりビット単価が高いため、一般に容量はフラッシュメモリより小さい。したがってフラッシュメモリの書込みと検証を複数回に分割して行う必要が生じてしまう。これは、ハードウェア側の検証機能を複雑化することになる。   In the present embodiment, it is assumed that the system program issues a write permission request and a verification request individually. This is because the memory configuration of the embedded microcontroller and the rewrite procedure are assumed. In addition to this procedure, a configuration in which a write permission request, a write, and a verification request are integrally processed by hardware is logically conceivable, but is not suitable for an embedded microcontroller. In the case of this procedure, it is necessary that all of the verification target programs 11a1 are stored in another buffer memory before the write destination program memory can be written. The most common buffer memory is SRAM, but SRAM has a higher bit unit price than flash memory, and therefore generally has a smaller capacity than flash memory. Therefore, it becomes necessary to divide and write the flash memory into a plurality of times. This complicates the verification function on the hardware side.

たとえば、更新プログラムが分割して配信される場合でも、それがメモリ上の配列にそった順序で受信されるとは限らない。プログラムを分割してピアツーピアにより配送する方式が知られているが、このような場合、分割した断片の受信順序がばらばらになるのがふつうである。   For example, even when an update program is distributed and distributed, it is not always received in the order according to the arrangement on the memory. A method of dividing a program and delivering it by peer-to-peer is known, but in such a case, the reception order of the divided fragments is usually scattered.

本実施形態では、システムプログラムが書込み許可要求と検証要求とを個別に発行することで、システムプログラムがプログラムメモリブロック11aに更新プログラムを任意の順序で書込み、全ての更新プログラムがそろった段階でシステムプログラムが検証要求を発行する手順とすることで、更新プログラム配信の自由度を高めると同時に検証機能のハードウェアを単純化できる。   In this embodiment, the system program issues a write permission request and a verification request individually, so that the system program writes the update program in the program memory block 11a in an arbitrary order, and the system is in a stage where all the update programs are ready. By adopting a procedure in which the program issues a verification request, it is possible to increase the degree of freedom in distributing update programs and at the same time simplify the verification function hardware.

以上のように、実施形態では、情報処理装置1において、書換え許可要求が発行され且つ検証状態フラグ12aが「検証済」である場合、「未検証」に変更され、検証状態フラグ12aの変更に応じて書換え制御フラグ31aが「禁止」から「許可」に変更される。また、検証要求が発行された場合、又は、検証状態フラグ12aが「未検証」でプログラム11a1の検証が必要である場合、書換え制御フラグ31aが「禁止」に変更され、書換え制御フラグ31aの変更に応じてプログラム11a1に対する検証が行われる。そして、検証状態フラグ12aは、検証に成功すれば「検証済」に設定され、検証に失敗すれば「未検証」のままに維持される。これにより、検証状態フラグ12aが「検証済」であり第1の不揮発性メモリ領域11に対する書換えが行われていないと予想できる場合に、セキュアブートの実行をスキップさせることができる。この結果、セキュアブートの実行頻度を必要最小限(検証状態フラグ12aが「未検証」になっている場合)に抑えることができる。したがって、プログラム11a1の不正な改ざんを確実に検出・防止できるとともに、プログラム11a1の平均的な起動時間の短縮化を図ることができる。また、情報処理装置1の平均的な消費電力を低減できる。   As described above, in the embodiment, when a rewrite permission request is issued and the verification status flag 12a is “verified” in the information processing apparatus 1, the information processing device 1 is changed to “unverified” and the verification status flag 12a is changed. Accordingly, the rewrite control flag 31a is changed from “prohibited” to “permitted”. When a verification request is issued, or when the verification status flag 12a is “unverified” and the program 11a1 needs to be verified, the rewrite control flag 31a is changed to “prohibited” and the rewrite control flag 31a is changed. In response to this, the program 11a1 is verified. The verification status flag 12a is set to “verified” if the verification is successful, and is maintained as “unverified” if the verification fails. As a result, when the verification status flag 12a is “verified” and it can be predicted that the first nonvolatile memory area 11 has not been rewritten, execution of secure boot can be skipped. As a result, the execution frequency of the secure boot can be suppressed to a necessary minimum (when the verification status flag 12a is “unverified”). Therefore, unauthorized alteration of the program 11a1 can be reliably detected and prevented, and the average startup time of the program 11a1 can be shortened. Moreover, the average power consumption of the information processing apparatus 1 can be reduced.

なお、上記の実施形態では、検証状態フラグ12aと書換え制御フラグ31aとから検証の成功・失敗に関して直接的に推定することが困難である。そのため、不揮発の検証成否フラグを追加で設けて、検証成否フラグを参照することで検証に成功したのか失敗したのかを把握できるようにしてもよい。   In the above embodiment, it is difficult to directly estimate the success / failure of the verification from the verification status flag 12a and the rewrite control flag 31a. For this reason, a non-volatile verification success / failure flag may be additionally provided so that the verification success or failure can be grasped by referring to the verification success / failure flag.

上記の実施形態では、書換え禁止を書換え制御フラグ31aにより制御している。論理回路による実現の場合、書換え禁止の状態では、メモリに対する書込み制御信号を有効にしない回路を設けることで書換えを禁止する。これに加えて、フラッシュメモリのように、消去、書込みに論理回路とは異なる高電圧を必要とする場合は、それらの電源電圧供給を停止することで書換え禁止の担保をより厳格にできる。   In the above embodiment, the rewrite prohibition is controlled by the rewrite control flag 31a. In the case of realization by a logic circuit, in a state where rewriting is prohibited, rewriting is prohibited by providing a circuit that does not validate the write control signal for the memory. In addition to this, when a high voltage different from that of the logic circuit is required for erasing and writing as in the case of a flash memory, it is possible to more strictly guarantee rewriting prohibition by stopping supply of these power supply voltages.

また、上述のように検証状態フラグ12a及び書換え制御フラグ31aは電源断などの中断に対して安全に動作するが、ノイズによるビット反転についてはこのかぎりではない。これらフラグについては、誤り訂正もしくは多数決論理を用いて冗長化してもよい。   Further, as described above, the verification status flag 12a and the rewrite control flag 31a operate safely against interruption such as power interruption, but this is not limited to bit inversion due to noise. These flags may be made redundant using error correction or majority logic.

上記の実施形態では、検証失敗した場合は停止するとされている。これに代わって、暗号鍵や重要入出力へのアクセスを禁止した条件で未検証のプログラム11a1を実行することもできる。目的として、不正プログラム以外のメモリ故障などによる検証失敗が発生した場合に、原因を記録・通知することなどが期待できる。   In the above embodiment, it is assumed that the verification is stopped when the verification fails. Alternatively, the unverified program 11a1 can be executed under the condition that prohibits access to the encryption key and important input / output. The purpose can be expected to record and notify the cause when a verification failure occurs due to a memory failure other than an illegal program.

また、書換え許可回路121とプログラム検証回路141との間で検証状態フラグ12aの書換え競合を防止するため、適切な書込み権取得管理を例えばCPUコア102等が行うことができる。   Further, in order to prevent rewrite conflict of the verification status flag 12a between the rewrite permission circuit 121 and the program verification circuit 141, for example, the CPU core 102 can perform appropriate write right acquisition management.

また、図13は、実施形態の第1の変形例として、情報処理装置1(マイクロコントローラチップ101)のハードウェア構成を示すブロック図である。図13に示すように、プログラム検証回路141で取得されたフィンガープリント期待値は、論理ブロック(第3の不揮発性メモリ領域)114に不揮発に記憶されてもよい。   FIG. 13 is a block diagram illustrating a hardware configuration of the information processing apparatus 1 (microcontroller chip 101) as a first modification of the embodiment. As shown in FIG. 13, the expected fingerprint value acquired by the program verification circuit 141 may be stored in the logic block (third nonvolatile memory area) 114 in a nonvolatile manner.

上記の実施形態との構成上の差異は、フィンガープリント期待値メモリ114aが論理ブロック114に設けられている点である。最初のプログラム11a1の検証時、もしくは別途設けられたフィンガープリント期待値設定手順において、検証された期待値がフィンガープリント期待値メモリ114aに書きこまれる。   A difference in configuration from the above embodiment is that a fingerprint expected value memory 114 a is provided in the logical block 114. At the time of verification of the first program 11a1, or in a fingerprint expected value setting procedure provided separately, the verified expected value is written in the fingerprint expected value memory 114a.

例えば図14に示すように、書換え許可要求に応じた処理において、検証状態フラグ12aに「未検証」が設定される際にフィンガープリント期待値メモリ114aがクリアされ(S43)、確認のために検証状態フラグ12aの値が読み出される際にフィンガープリント期待値が適正にクリアされているか確認される(S44)。また、図15に示すように、検証要求に応じた処理において、書換え制御フラグ31aに「禁止」が設定(S13)された後に、プログラム検証回路141は、フィンガープリント期待値メモリ114aを参照して、フィンガープリント期待値がクリアされていれば(S54aで「クリア状態」)、フィンガープリント値の計算とフィンガープリント期待値の取得とをそれぞれ行った後に、両者の照合を行う(S54c)。プログラム検証回路141は、フィンガープリント期待値メモリ114aにフィンガープリント期待値が格納されていれば(S54aで「設定済み」)、フィンガープリント期待値の取得をスキップして、フィンガープリント値の計算の後に両者の照合を行う(S54b)。したがって、フィンガープリント期待値が設定済みである場合に、プログラム11a1の検証処理の時間を短縮できる。   For example, as shown in FIG. 14, in the process in response to the rewrite permission request, when “unverified” is set in the verification status flag 12a, the fingerprint expected value memory 114a is cleared (S43) and verified for confirmation. When the value of the status flag 12a is read, it is confirmed whether the expected fingerprint value is properly cleared (S44). Further, as shown in FIG. 15, in the process in response to the verification request, after “inhibited” is set in the rewrite control flag 31a (S13), the program verification circuit 141 refers to the fingerprint expected value memory 114a. If the expected fingerprint value has been cleared (“cleared state” in S54a), the fingerprint value is calculated and the expected fingerprint value is obtained, and then both are compared (S54c). If the fingerprint expected value is stored in the fingerprint expected value memory 114a ("set" in S54a), the program verification circuit 141 skips the acquisition of the fingerprint expected value, and after calculating the fingerprint value Both are collated (S54b). Therefore, when the fingerprint expected value has been set, the time required for the verification process of the program 11a1 can be shortened.

上記の実施形態ではフィンガープリント期待値は、第3者による偽造防止のため秘密鍵に基づいて作られた署名又はMACの形で与えられている。秘密鍵に基づかないハッシュ値では第3者が偽造可能なため、上記の実施形態には適用できない。   In the above-described embodiment, the expected fingerprint value is given in the form of a signature or MAC created based on the secret key to prevent forgery by a third party. Since a third party can forge a hash value that is not based on a secret key, it cannot be applied to the above embodiment.

第1の変形例では、フィンガープリント期待値を一般のプログラムによるアクセスから保護された不揮発性メモリ111に保持するため、フィンガープリント期待値をハッシュ値とすることもできる。その場合、フィンガープリント期待値検証機能143は、CPUコア102内で実行されるプログラムもしくは装置外との通信において認証された通信路を経由してハッシュ値を受信し、フィンガープリント期待値メモリ114aに書きこむことができる。例えば、TCG(Trusted Computing Group)の仕様に基づくセキュアブートでは安全なストレージに保存されたハッシュ値との比較が行われるため、第1の変形例の使用が適している。   In the first modification, since the fingerprint expected value is held in the nonvolatile memory 111 protected from access by a general program, the fingerprint expected value can be a hash value. In that case, the fingerprint expected value verification function 143 receives a hash value via a program executed in the CPU core 102 or a communication path authenticated in communication with the outside of the apparatus, and stores it in the fingerprint expected value memory 114a. Can be written. For example, in the secure boot based on the specification of TCG (Trusted Computing Group), since the comparison with the hash value stored in the secure storage is performed, the use of the first modification is suitable.

また、上記の実施形態は、セキュアブートにおいて起動時の応答悪化と電力消費を増やす検証処理を省略できる点で、無線センサや無線カードなどに特に適している。無線センサは間歇的に動作することが多いが、その都度大きな電力を消費するセキュアブートを実施することは、電池駆動の端末では電池交換の頻度が増えてしまう。無線給電の無線カードなどでは、大電力を供給できないことにより起動時間はさらに長くなる。   In addition, the above-described embodiment is particularly suitable for a wireless sensor, a wireless card, or the like in that a verification process that increases response deterioration and power consumption at startup can be omitted in secure boot. Wireless sensors often operate intermittently, but performing a secure boot that consumes a large amount of power each time increases the frequency of battery replacement in battery-powered terminals. In a wirelessly powered wireless card or the like, the startup time is further increased due to the inability to supply large power.

これらの端末は同時に低コストが求められるが、実施形態及び第1の変形例では、ハードウェアを前提とした構成を示している。ハードウェアで実現した場合、チップ面積の増加はコスト増に直結する。特にセキュアブート機能はセンサ信号処理などと比較して使用頻度が低いため、これを汎用CPUのソフトで実現することはチップ面積の縮小に直結し利点となる。これらの機能は基本的にはソフトウェアとしても処理時間がかかることを除けば、ソフトウェアでも同様の処理を実現可能である。ただし、端末に不正プログラムが侵入することを前提として考えると、書換え許可機能、プログラム検証機能、そして起動時のプログラム検証要否判定機能は不正プログラムの干渉を受けてはならない機能である。   Although these terminals are required to be low in cost at the same time, in the embodiment and the first modification, a configuration based on hardware is shown. When implemented in hardware, an increase in chip area directly leads to an increase in cost. In particular, since the secure boot function is used less frequently than sensor signal processing or the like, realizing this with software of a general-purpose CPU is directly linked to the reduction of the chip area and is an advantage. These functions can be realized in the same way by software except that the processing basically takes time for the software. However, if it is assumed that a malicious program enters the terminal, the rewrite permission function, the program verification function, and the program verification necessity determination function at the time of activation are functions that should not be interfered with by a malicious program.

以下では、実施形態の第2の変形例として、検証機能および起動時の検証要否判定機能についてソフトウェア処理とし、不正プログラムが端末に侵入した状態でもその影響を排除して安全にこれら機能を実行する手順を説明する。   In the following, as a second modification of the embodiment, the verification function and the verification necessity determination function at the time of activation are assumed to be software processing, and even when a malicious program has entered the terminal, the influence is eliminated and the functions are executed safely The procedure to do is explained.

第2の変形例では、実施形態においてハードウェアで実現されていたプログラム検証機能及びプログラム検証要否判定機能を、書換え不能なマスクROM104上の機能モジュールであるプログラム検証モジュール141a、検証要否判定モジュール161aで代替する。図16は、第2の変形例における情報処理装置1のハードウェア構成を示すブロック図である。プログラム検証モジュール141a、検証要否判定モジュール161aは、予めマスクROM104に格納されている。このとき、フラグをCPUコア102上の命令発行によって直接操作する。そのためにフラグ操作機能を担うフラグ操作回路181が設けられている。不正プログラムによるフラグ操作機能の利用を防ぐため、命令発行によるフラグ操作が可能な期間を、CPUコア102の再起動処理からマスクROM104上の機能モジュールの実行後、マスクROM104上の機能モジュールがフラグアクセスを無効化するまでの期間に限定する。このためにフラグアクセス有効化/無効化機能を担うフラグアクセス設定回路191を設ける。マスクROM104上のプログラムは検証なしで実行され得ることになるが、これはハードウェア的に改変不能であるため検証を省略しても差し支えない。   In the second modification, the program verification function and the program verification necessity determination function realized by hardware in the embodiment are replaced with a program verification module 141a that is a functional module on the mask ROM 104 that cannot be rewritten, and a verification necessity determination module. Substitute with 161a. FIG. 16 is a block diagram illustrating a hardware configuration of the information processing apparatus 1 according to the second modification. The program verification module 141a and the verification necessity determination module 161a are stored in the mask ROM 104 in advance. At this time, the flag is directly manipulated by issuing an instruction on the CPU core 102. For this purpose, a flag operation circuit 181 having a flag operation function is provided. In order to prevent the use of the flag operation function by an illegal program, the function module on the mask ROM 104 performs flag access after the execution of the function module on the mask ROM 104 from the restart processing of the CPU core 102 during the period in which the flag operation can be performed by issuing an instruction Limited to the period until is invalidated. For this purpose, a flag access setting circuit 191 responsible for the flag access validation / invalidation function is provided. The program on the mask ROM 104 can be executed without verification, but since this cannot be modified by hardware, the verification may be omitted.

フラグ操作回路181は、フラグアクセス制御機能182、検証状態フラグ操作機能183、検証状態フラグ操作機能184、及び書換え制御フラグ操作機能185を有する。フラグアクセス設定回路191は、フラグアクセス有効化機能192及びフラグアクセス無効化機能193を有する。   The flag operation circuit 181 includes a flag access control function 182, a verification state flag operation function 183, a verification state flag operation function 184, and a rewrite control flag operation function 185. The flag access setting circuit 191 has a flag access validation function 192 and a flag access invalidation function 193.

これらの機能は、書換え制御フラグ31aおよび検証状態フラグ12a、そしてフラグアクセス機能に対するインタフェースと許可を制御するだけであり、検証計算を実行するハードウェアと比較して非常に小規模の回路で実現可能である。   These functions only control the interface and permission for the rewrite control flag 31a, the verification status flag 12a, and the flag access function, and can be realized with a very small circuit compared to hardware that executes verification calculation. It is.

汎用CPUによるハッシュ値や署名などの暗号演算は専用ハードウェアと比較して一般に長い時間がかかり、消費電力効率も悪い。しかしながら、第2の変形例ではセキュアブートの検証処理はプログラムメモリブロック11aの書換えがない限り発生しないため、通常の運用では電力効率に与える影響はほとんどない。   Cryptographic operations such as hash values and signatures by a general-purpose CPU generally take a long time compared to dedicated hardware, and power consumption efficiency is poor. However, in the second modified example, the secure boot verification process does not occur unless the program memory block 11a is rewritten, so that there is almost no influence on the power efficiency in normal operation.

図17は、第2の変形例における再起動処理に応じた情報処理装置1の動作を示すフローチャートである。再起動処理(S21)後、フラグアクセス設定回路191によりフラグアクセスを有効化、すなわちフラグ操作回路181によるフラグ操作機能が有効(S61)になった状態でマスクROM104上のプログラム検証モジュール141a及びプログラム検証要否判定モジュール161aを実行する(S62)。同機能モジュールはフラグ操作回路181を通じて検証状態フラグ12aを読出し(S22)、「検証済」であれば(S23で「検証済」)、フラグアクセスを無効化して(S65)、検証済みプログラム11a1を実行する(S66)。「未検証」の場合は(S23で「未検証」)、ソフトウェアによるプログラムメモリブロック11aの検証処理(S64)を行い、検証に成功(S25で「成功」)した場合はやはりフラグアクセスを無効化して(S65)、検証済みプログラム11a1を実行する(S66)。検証に失敗した場合は(S25で「失敗」)、フラグアクセスを無効化して(S67)、プログラム11a1の起動を停止する(S68)。   FIG. 17 is a flowchart illustrating the operation of the information processing apparatus 1 according to the restart process in the second modification. After the restart process (S21), the flag access setting circuit 191 validates the flag access, that is, the flag verification function by the flag manipulation circuit 181 is valid (S61), and the program verification module 141a and program verification on the mask ROM 104 The necessity determination module 161a is executed (S62). The function module reads the verification status flag 12a through the flag operation circuit 181 (S22), and if it is “verified” (“verified” in S23), invalidates the flag access (S65) and loads the verified program 11a1. Execute (S66). If it is “unverified” (“not verified” in S23), the program memory block 11a is verified by software (S64). If the verification is successful (“success” in S25), the flag access is also invalidated. (S65), the verified program 11a1 is executed (S66). If the verification fails (“failure” in S25), the flag access is invalidated (S67), and the activation of the program 11a1 is stopped (S68).

また、あるリスクが人命や資産に損害を与える可能性を、機械や装置の働きによって低減する機能安全と呼ばれる手法が知られている。複雑なシステムの構成要素が故障した場合にリスクを軽減する機能の実現にはソフトウェアが広く用いられる。機能安全ではソフトウェアが正しいものであることが、その性質上極めて重要である。セキュアブートは、機能安全の基盤となるソフトウェアの正しさを、悪意の攻撃から保護する手段ともなりえる。セキュアブートをこのように位置付けた場合、セキュアブート機構の故障による誤動作、特にセキュアブートの要否判断が誤動作すると、改ざんされたプログラムの実行を許容してしまうことにつながってしまう。したがって、セキュアブートスキップ機構についても機能安全に置いて一般的に用いられる故障検出の手法により事前に排除しておくことが望ましい。   In addition, a technique called functional safety is known in which the possibility that a certain risk causes damage to human life or assets is reduced by the action of a machine or device. Software is widely used to implement functions that reduce risk when complex system components fail. In functional safety, it is extremely important for software to be correct. Secure boot can also be a means to protect the correctness of the software that is the basis of functional safety from malicious attacks. When secure boot is positioned in this way, if a malfunction occurs due to a failure of the secure boot mechanism, particularly when the necessity of secure boot malfunctions, the execution of a falsified program is allowed. Therefore, it is desirable to eliminate the secure boot skip mechanism in advance by a failure detection method generally used for functional safety.

たとえば、本実施形態においては、検証状態フラグが検証済みとなっていないにも関わらず書換えが可能な状態になってしまう誤動作が上記にあたるため、書換え制御フラグの禁止状態がプログラムメモリブロックの書込み禁止に正しく反映されることを確認するためのBIST(Built In Self Test)機能により担保しておくことが挙げられる。なお、検証状態フラグを格納する不揮発性メモリのうち、フラッシュメモリは書込みを繰り返すと書込み・読出しが不安定になる劣化が発生することが知られている。本実施形態では、検証状態フラグにいったん書きこんだ値を読み出してその正しさを検証、もしくは書換え制御フラグにコピーしている。そのため、仮にフラッシュメモリの劣化により書込みに失敗したとしても、書換え制御フラグの値も書込み許可の状態とならないため、本実施形態の機構自体が機能安全に必要な機能の一部を提供することができる。   For example, in the present embodiment, the above-mentioned malfunction occurs in which the rewrite is enabled even though the verification status flag has not been verified. Therefore, the rewrite control flag is prohibited from being written to the program memory block. It is mentioned that the security is ensured by a BIST (Built In Self Test) function for confirming that it is correctly reflected in the system. It is known that, among the nonvolatile memories storing the verification state flag, the flash memory is deteriorated when writing is repeated and writing / reading becomes unstable. In this embodiment, the value once written in the verification status flag is read and the correctness is verified or copied to the rewrite control flag. For this reason, even if writing fails due to deterioration of the flash memory, the value of the rewrite control flag does not become a write-permitted state, so the mechanism of this embodiment itself may provide a part of the functions necessary for functional safety. it can.

また、上記の実施形態において検証対象を一つのプログラムとした例を示したが、書換え制御フラグおよび検証状態フラグを備えることにより複数のプログラムを検証対象とすることも可能である。   In the above embodiment, an example in which the verification target is a single program has been described. However, a plurality of programs can be set as verification targets by including a rewrite control flag and a verification status flag.

本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。   Although several embodiments of the present invention have been described, these embodiments are presented by way of example and are not intended to limit the scope of the invention. These novel embodiments can be implemented in various other forms, and various omissions, replacements, and changes can be made without departing from the scope of the invention. These embodiments and modifications thereof are included in the scope and gist of the invention, and are included in the invention described in the claims and the equivalents thereof.

1 情報処理装置、10 不揮発性メモリ、20 不揮発性メモリ、30 書換え許可部、40 プログラム検証要否判定部、50 プログラム検証部、60 命令実行部。   DESCRIPTION OF SYMBOLS 1 Information processing apparatus, 10 Non-volatile memory, 20 Non-volatile memory, 30 Rewriting permission part, 40 Program verification necessity determination part, 50 Program verification part, 60 Instruction execution part

Claims (9)

情報処理装置であって、
不揮発性メモリと、
前記不揮発性メモリにおける第1のメモリ領域に格納されたプログラムが未検証であることを示す第1の値と前記プログラムが検証済であることを示す第2の値とに設定可能である第1のフラグと、
前記情報処理装置において実行されるプログラムの書換え許可要求に応じて、前記第1のフラグに前記第1の値を設定する切換回路と、
前記第1のメモリ領域に格納されたプログラムの検証に応じて前記第1のフラグに前記第2の値を設定し、前記情報処理装置の再起動に応じて、前記第1の値が前記第1のフラグに設定されている場合に前記プログラムに対する検証処理を行い、前記第2の値が前記第1のフラグに設定されている場合前記検証処理を行わずに前記プログラムを実行させる検証回路と、
前記第1のメモリ領域に対する書換えが禁止されていることを示す第3の値と前記第1のメモリ領域に対する書換えが許可されていることを示す第4の値とに設定可能である第2のフラグと、
を備え
前記第2のフラグの前記第3の値から前記第4の値への変更に応じて、前記第1の値が前記第1のフラグに設定され、
前記検証処理の実行に先立って、前記第3の値が前記第2のフラグに設定される
情報処理装置。
An information processing apparatus,
Non-volatile memory;
A first value indicating that the program stored in the first memory area of the nonvolatile memory is unverified and a second value indicating that the program has been verified can be set to a first value . With the flag
Depending on the rewriting permission request of a program executed in the information processing apparatus, a switching circuit for setting the first value to the first flag,
The second value is set in the first flag in response to verification of the program stored in the first memory area, and the first value is set in the first flag in response to restart of the information processing apparatus . A verification circuit that performs a verification process on the program when the flag is set to 1, and executes the program without performing the verification process when the second value is set in the first flag; ,
The second value can be set to a third value indicating that rewriting to the first memory area is prohibited and a fourth value indicating that rewriting to the first memory area is permitted. Flags and
Equipped with a,
In response to the change of the second flag from the third value to the fourth value, the first value is set in the first flag;
The information processing apparatus , wherein the third value is set in the second flag prior to the execution of the verification process .
前記第1のフラグは、前記不揮発性メモリにおける第2のメモリ領域に格納されている
請求項1に記載の情報処理装置。
The information processing apparatus according to claim 1, wherein the first flag is stored in a second memory area in the nonvolatile memory.
前記第2のフラグは、揮発性メモリに格納される
請求項に記載の情報処理装置。
The information processing apparatus according to claim 1 , wherein the second flag is stored in a volatile memory.
前記第2のフラグに前記第3の値を設定するための前記検証処理に先立って、前記第1のメモリ領域が書込み禁止となり、
前記第4の値が前記第2のフラグに設定された場合、前記第1のメモリ領域が書込み許可となる
請求項1に記載の情報処理装置。
Prior to the verification process for setting the third value in the second flag, the first memory area is write-protected,
The information processing apparatus according to claim 1, wherein when the fourth value is set in the second flag, writing to the first memory area is permitted.
前記検証処理が成功した場合に前記プログラムが実行可能となり、
前記検証処理が失敗した場合に前記プログラムが実行不可能となる
請求項1に記載の情報処理装置。
When the verification process is successful, the program can be executed,
The information processing apparatus according to claim 1, wherein the program cannot be executed when the verification process fails.
前記検証処理において、前記検証回路は、前記第1のメモリ領域に格納された前記プログラムのハッシュ値を計算し、前記プログラムの公開鍵署名からハッシュ値を抽出し、前記計算されたハッシュ値と前記抽出されたハッシュ値とを比較する
請求項1に記載の情報処理装置。
In the verification process, the verification circuit calculates a hash value of the program stored in the first memory area, extracts a hash value from the public key signature of the program, and calculates the calculated hash value and the The information processing apparatus according to claim 1, wherein the information processing apparatus compares the extracted hash value.
前記第1のメモリ領域に格納された前記プログラムの公開鍵署名から抽出されたハッシュ値は、前記不揮発性メモリにおける第3のメモリ領域に格納されている
請求項1に記載の情報処理装置。
The information processing apparatus according to claim 1, wherein a hash value extracted from a public key signature of the program stored in the first memory area is stored in a third memory area in the nonvolatile memory.
前記検証回路とは別に設けられた処理部をさらに備え、
前記検証回路は、前記処理部からの検証要求に応じて、前記検証処理を実行する
請求項1に記載の情報処理装置。
A processing unit provided separately from the verification circuit;
The information processing apparatus according to claim 1, wherein the verification circuit executes the verification process in response to a verification request from the processing unit.
書換え不能であり、検証プログラムを格納する第2の不揮発性メモリをさらに備え、
前記検証回路は、前記検証プログラムに応じて、前記検証処理を実行する
請求項1に記載の情報処理装置。
A second non-volatile memory that is non-rewritable and stores a verification program;
The information processing apparatus according to claim 1, wherein the verification circuit executes the verification process according to the verification program.
JP2018136167A 2018-07-19 2018-07-19 Information processing device Active JP6622360B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2018136167A JP6622360B2 (en) 2018-07-19 2018-07-19 Information processing device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018136167A JP6622360B2 (en) 2018-07-19 2018-07-19 Information processing device

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2016038991A Division JP6373888B2 (en) 2016-03-01 2016-03-01 Information processing apparatus and control method

Publications (2)

Publication Number Publication Date
JP2018195329A JP2018195329A (en) 2018-12-06
JP6622360B2 true JP6622360B2 (en) 2019-12-18

Family

ID=64570449

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018136167A Active JP6622360B2 (en) 2018-07-19 2018-07-19 Information processing device

Country Status (1)

Country Link
JP (1) JP6622360B2 (en)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7249968B2 (en) 2020-03-09 2023-03-31 株式会社東芝 Information processing equipment and storage
JP7354074B2 (en) 2020-09-18 2023-10-02 株式会社東芝 Information processing device, information processing method and program

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004192529A (en) * 2002-12-13 2004-07-08 Sharp Corp Information processor and computer software
WO2009013831A1 (en) * 2007-07-26 2009-01-29 Panasonic Corporation Information processing terminal and falsification verification method
JP5466645B2 (en) * 2008-08-22 2014-04-09 インターナショナル・ビジネス・マシーンズ・コーポレーション Storage device, information processing device, and program

Also Published As

Publication number Publication date
JP2018195329A (en) 2018-12-06

Similar Documents

Publication Publication Date Title
JP6373888B2 (en) Information processing apparatus and control method
JP4708414B2 (en) Autonomous memory checker for runtime security assurance
US7461268B2 (en) E-fuses for storing security version data
JP5767751B2 (en) Method, computing platform, and program for verifying BIOS
US11803366B2 (en) Firmware updating system and method
US20210149681A1 (en) Secure Firmware Management with Hierarchical Boot Sequence using Last Known Good Firmware
JP2021179982A (en) Security system and method for preventing roll-back attack on silicon device firmware
JP6659180B2 (en) Control device and control method
JP6518798B2 (en) Device and method for managing secure integrated circuit conditions
JP6622360B2 (en) Information processing device
KR101954439B1 (en) Soc having double security features, and double security method for soc
WO2017188976A1 (en) Executing protected code
JP6930884B2 (en) BIOS management device, BIOS management system, BIOS management method, and BIOS management program
KR101988404B1 (en) Soc having double security features, and double security method for soc
JP2019020872A (en) Electronic control apparatus and program falsification detection method
CN113486360B (en) RISC-V based safe starting method and system
TWI467408B (en) Embedded devices and control methods thereof
CN111695164B (en) Electronic apparatus and control method thereof
CN112015582B (en) Self-correcting memory system and method for providing error correction to memory content
JP7341376B2 (en) Information processing device, information processing method, and information processing program
JP7438924B2 (en) Information processing device, method and program
JP7097407B2 (en) Systems and methods for prioritizing bit error correction trial and error
CN115221527A (en) Electronic device and control method thereof
JP2002055725A (en) Bios chip for managing code and method for managing the same code
JP2004220296A (en) Semiconductor device and method for controlling same

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180813

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180813

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190627

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190709

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190909

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: 20191023

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20191121

R150 Certificate of patent or registration of utility model

Ref document number: 6622360

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150