JP2024007617A - Processor circuit, version management method, and version management program - Google Patents

Processor circuit, version management method, and version management program Download PDF

Info

Publication number
JP2024007617A
JP2024007617A JP2022108795A JP2022108795A JP2024007617A JP 2024007617 A JP2024007617 A JP 2024007617A JP 2022108795 A JP2022108795 A JP 2022108795A JP 2022108795 A JP2022108795 A JP 2022108795A JP 2024007617 A JP2024007617 A JP 2024007617A
Authority
JP
Japan
Prior art keywords
version
counter
counter value
value
software
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.)
Pending
Application number
JP2022108795A
Other languages
Japanese (ja)
Inventor
昌男 吉川
Masao Yoshikawa
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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2022108795A priority Critical patent/JP2024007617A/en
Priority to US18/188,792 priority patent/US20240012640A1/en
Publication of JP2024007617A publication Critical patent/JP2024007617A/en
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/575Secure boot
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Stored Programmes (AREA)

Abstract

To reduce a capacity of a memory in which a counter for managing a version of software is provided.SOLUTION: A processor circuit for managing a version of software to be activated includes: a nonvolatile memory that holds a first counter value of a first counter and a second counter value of a second counter; and an activation control unit that updates the first counter value and maintains the second counter value when upgrading the version of the software, maintains the first counter value and updates the second counter value when downgrading the version of the software, and activates the software when the version of the software to be activated is equal to a check value for version confirmation indicated by a difference between the first counter value and the second counter value.SELECTED DRAWING: Figure 1

Description

本発明は、プロセッサ回路、バージョン管理方法およびバージョン管理プログラムに関する。 The present invention relates to a processor circuit, a version control method, and a version control program.

ファームウェアをロールバック攻撃から保護するために、ファームウェアのバージョンをOTP(One Time Programmable)メモリに格納し、バージョンを増加方向のみ更新可能にする手法が知られている。例えば、ファームウェアのバージョンは、OTPメモリにメジャーバージョンとして保持され、不揮発性メモリにマイナーバージョンとして保持される(例えば、特許文献1参照)。 In order to protect firmware from rollback attacks, a method is known in which a firmware version is stored in an OTP (One Time Programmable) memory and the version can only be updated in an upward direction. For example, firmware versions are held as major versions in OTP memory and as minor versions in nonvolatile memory (see, for example, Patent Document 1).

特開2021-179982号公報Japanese Patent Application Publication No. 2021-179982

しかしながら、OTPメモリを使用してファームウェアのバージョンを管理することで、ファームウェアをロールバック攻撃から保護する場合、ファームウェアを古いバージョンに戻すことは容易でない。このため、例えば、ファームウェアに問題が発生したときにバージョンを切り替えながら試験を実施することは容易でなく、ファームウェアのデバッグ効率が低下してしまう。 However, when managing firmware versions using OTP memory to protect firmware from rollback attacks, it is not easy to revert firmware to an older version. For this reason, for example, when a problem occurs in firmware, it is not easy to perform tests while switching versions, which reduces firmware debugging efficiency.

例えば、OTPメモリにバージョンを管理する複数のカウンタを設け、バージョンの管理に使用するカウンタを切り替えることで、ファームウェアを古いバージョンに容易に戻すことが可能になる。しかしながら、この場合、想定される切替え回数以上のカウンタを設けなくてはならず、OTPメモリの容量が増加してしまう。 For example, by providing a plurality of counters for version management in the OTP memory and switching the counters used for version management, it becomes possible to easily return the firmware to an older version. However, in this case, it is necessary to provide counters for more than the expected number of switchings, which increases the capacity of the OTP memory.

1つの側面では、本発明は、ソフトウェアのバージョンを管理するカウンタが設けられるメモリの容量を抑えることを目的とする。 In one aspect, the present invention aims to reduce the memory capacity in which a counter for managing software versions is provided.

一つの観点によれば、プロセッサ回路は、起動するソフトウェアのバージョンを管理するプロセッサ回路であって、第1カウンタの第1カウンタ値と第2カウンタの第2カウンタ値とを保持する不揮発性メモリと、前記ソフトウェアのバージョンを上げるときに前記第1カウンタ値を更新して前記第2カウンタ値を維持し、前記ソフトウェアのバージョンを下げるときに前記第1カウンタ値を維持して前記第2カウンタ値を更新し、起動する前記ソフトウェアのバージョンが前記第1カウンタ値と前記第2カウンタ値との差で示されるバージョン確認用のチェック値と等しいときに前記ソフトウェアを起動する起動制御部と、を有する。 According to one aspect, the processor circuit is a processor circuit that manages a version of software to be activated, and includes a non-volatile memory that retains a first counter value of a first counter and a second counter value of a second counter. , updating the first counter value and maintaining the second counter value when increasing the software version, and maintaining the first counter value and updating the second counter value when decreasing the software version. and an activation control unit that activates the software when the version of the software to be updated and activated is equal to a check value for version confirmation indicated by the difference between the first counter value and the second counter value.

ソフトウェアのバージョンを管理するカウンタが設けられるメモリの容量を抑えることができる。 It is possible to reduce the memory capacity in which a counter for managing software versions is provided.

一実施形態におけるプロセッサ回路が搭載されるマザーボートの一例を示すブロック図である。1 is a block diagram illustrating an example of a motherboard on which a processor circuit according to an embodiment is mounted. FIG. 図1のカウンタを使用してファームウェアのバージョンの更新を管理する例を示す説明図である。FIG. 2 is an explanatory diagram showing an example of managing firmware version updates using the counter in FIG. 1; 図1のプロセッサ回路によるファームウェアの更新動作の一例を示すフロー図である。2 is a flow diagram illustrating an example of a firmware update operation by the processor circuit of FIG. 1. FIG. 別の実施形態におけるプロセッサ回路が搭載されるマザーボートの一例を示すブロック図である。FIG. 3 is a block diagram illustrating an example of a motherboard on which a processor circuit according to another embodiment is mounted. 図4のカウンタを使用してファームウェアのバージョンの更新を管理する例を示す説明図である。5 is an explanatory diagram showing an example of managing firmware version updates using the counter of FIG. 4. FIG. 上述した実施形態におけるカウンタの別の例を示す構成図である。It is a block diagram which shows another example of the counter in the embodiment mentioned above. 別の一実施形態におけるプロセッサ回路が搭載されるマザーボートの一例を示すブロック図である。FIG. 3 is a block diagram illustrating an example of a motherboard on which a processor circuit according to another embodiment is mounted.

以下、図面を参照して、実施形態が説明される。 Embodiments will be described below with reference to the drawings.

図1は、一実施形態におけるプロセッサ回路が搭載されるマザーボートの一例を示す。図1に示すプロセッサ回路10は、例えば、CPU(Central Processing Unit)等である。プロセッサ回路10は、ファームウェア22が格納されるファームウェア格納領域20とともにマザーボード100に搭載される。ファームウェア22は、ソフトウェアの一例である。 FIG. 1 shows an example of a motherboard on which a processor circuit according to an embodiment is mounted. The processor circuit 10 shown in FIG. 1 is, for example, a CPU (Central Processing Unit). The processor circuit 10 is mounted on a motherboard 100 along with a firmware storage area 20 in which firmware 22 is stored. Firmware 22 is an example of software.

プロセッサ回路10およびファームウェア格納領域20は、それぞれがチップの形態でマザーボード100に搭載されてもよく、1チップに集積された形態でマザーボード100に搭載されてもよい。例えば、マザーボード100は、サーバ、スーパーコンピュータまたはPC(Personal Computer)等の情報処理装置に搭載され、情報処理装置の機能を実現する。 The processor circuit 10 and the firmware storage area 20 may each be mounted on the motherboard 100 in the form of a chip, or may be mounted on the motherboard 100 in the form of an integrated chip. For example, the motherboard 100 is installed in an information processing device such as a server, a supercomputer, or a PC (Personal Computer), and realizes the functions of the information processing device.

ファームウェア格納領域20に保持されるファームウェア22は、プロセッサ回路10に搭載されるCPUコア等により実行される。特に限定されないが、例えば、ファームウェア格納領域20は、フラッシュメモリ等の電気的に書き換え可能なメモリ内に割り当てられ、更新するファームウェアを上書き可能である。なお、ファームウェア格納領域20は、プロセッサ回路10が実行するOS(Operating System)およびアプリケーションプログラムの一方または両方が格納されるメモリ内に割り当てられてもよい。 The firmware 22 held in the firmware storage area 20 is executed by a CPU core installed in the processor circuit 10 or the like. Although not particularly limited, for example, the firmware storage area 20 is allocated in an electrically rewritable memory such as a flash memory, and can be overwritten with firmware to be updated. Note that the firmware storage area 20 may be allocated within a memory in which one or both of an OS (Operating System) and an application program executed by the processor circuit 10 are stored.

プロセッサ回路10は、バージョン格納部12、バージョン検証部14および書き込み制御部16を有する。バージョン検証部14および書き込み制御部16は、起動制御部の一例である。バージョン格納部12は、ファームウェア22のバージョンの管理に使用されるカウンタ12a、12bを有する。例えば、バージョン格納部12は、オンチップのOTP(One Time Programmable)メモリ内に設けられる。バージョン格納部12は、不揮発性メモリの一例である。カウンタ12aは、第1カウンタの一例であり、カウンタ12bは、第2カウンタの一例である。 The processor circuit 10 includes a version storage section 12, a version verification section 14, and a write control section 16. The version verification unit 14 and the write control unit 16 are examples of a startup control unit. The version storage unit 12 has counters 12a and 12b used to manage the version of the firmware 22. For example, the version storage unit 12 is provided in an on-chip OTP (One Time Programmable) memory. The version storage unit 12 is an example of nonvolatile memory. The counter 12a is an example of a first counter, and the counter 12b is an example of a second counter.

例えば、OTPメモリは、複数のE-fuseの各々にビット情報を記憶するため、OTPメモリの各ビット(E-fuse)に書き込んだ情報を書き換えることができない。すなわち、OTPメモリは、複数ビットの各々の値を一度のみ書き込み可能である。この実施形態のOTPメモリは、"1"が書き込まれたビットの値を"0"に戻すことができない。このため、例えば、カウンタ12aでは、バージョンが増加される毎に、"1"を保持するビットの数が増加される。 For example, since OTP memory stores bit information in each of a plurality of E-fuses, information written in each bit (E-fuse) of the OTP memory cannot be rewritten. That is, the OTP memory allows each value of multiple bits to be written only once. The OTP memory of this embodiment cannot return the value of a bit to which "1" has been written to "0". Therefore, for example, in the counter 12a, the number of bits holding "1" is increased each time the version is increased.

そして、カウンタ12aのカウンタ値CNTaおよびカウンタ12bのカウンタ値CNTbは、"1"にセットされているビットの数により示される。また、バージョン確認用のチェック値は、カウンタ値CNTa、CNTbの差(CNTa-CNTb)により示される。チェック値は、起動可能なファームウェア22のバージョンを示す。カウンタ12a、12bの使用例については、図2で説明される。カウンタ値CNTaは、第1カウンタ値の一例であり、カウンタ値CNTbは、第2カウンタ値の一例である。 The counter value CNTa of the counter 12a and the counter value CNTb of the counter 12b are indicated by the number of bits set to "1". Further, the check value for version confirmation is indicated by the difference (CNTa-CNTb) between the counter values CNTa and CNTb. The check value indicates the version of firmware 22 that can be activated. An example of the use of counters 12a, 12b is illustrated in FIG. Counter value CNTa is an example of a first counter value, and counter value CNTb is an example of a second counter value.

バージョン検証部14は、ファームウェア格納領域20に保持されているファームウェア22の起動時に、起動するファームウェア22のバージョンとバージョン格納部12に保持されているバージョンのチェック値とを比較する。そして、バージョン検証部14は、ファームウェア22のバージョンとカウンタ値CNTa、CNTbの差との比較に基づいて、ファームウェアの通常の起動処理、バージョンアップ処理、またはエラー処理(起動の停止)のいずれを実施するかを判定する。 When the firmware 22 held in the firmware storage area 20 is activated, the version verification unit 14 compares the version of the firmware 22 to be activated with the check value of the version held in the version storage area 12 . The version verification unit 14 then performs normal startup processing, version upgrade processing, or error processing (stopping startup) of the firmware based on the comparison between the version of the firmware 22 and the difference between the counter values CNTa and CNTb. Determine whether to do so.

バージョン検証部14は、起動するファームウェア22のバージョンがカウンタ値CNTa、CNTbの差より大きい場合、カウンタ12aのカウンタ値CNTaを増加させる指示を書き込み制御部16に発行する。バージョン検証部14は、起動するファームウェア22のバージョンがカウンタ値CNTa、CNTbの差に等しい場合、ファームウェア22の起動処理をプロセッサ回路10に実施させる。バージョン検証部14は、起動するファームウェア22のバージョンがカウンタ値CNTa、CNTbの差より小さい場合、エラーの発生をプロセッサ回路10のエラー処理部等に通知する。 If the version of the firmware 22 to be activated is greater than the difference between the counter values CNTa and CNTb, the version verification unit 14 issues an instruction to the write control unit 16 to increase the counter value CNTa of the counter 12a. If the version of the firmware 22 to be activated is equal to the difference between the counter values CNTa and CNTb, the version verification unit 14 causes the processor circuit 10 to execute the process of starting the firmware 22. If the version of the firmware 22 to be activated is smaller than the difference between the counter values CNTa and CNTb, the version verification unit 14 notifies the error processing unit of the processor circuit 10 of the occurrence of an error.

書き込み制御部16は、カウンタ12a、12bの書き込み動作を制御する。書き込み制御部16は、バージョン検証部14からの指示に基づいて、カウンタ12aのカウンタ値CNTaを更新する書き込み動作を実施する。また、書き込み制御部16は、ファームウェア22のバージョンを下げるロールバック処理を実施する場合、カウンタ12bの書き込み用の専用の手順に基づいて、カウンタ12bの書き込み動作を実施し、カウンタ値CNTaを更新する。例えば、カウンタ12bの書き込み用の専用の手順は、パスワード認証または公開鍵認証等である。なお、カウンタ12bの書き込み用の専用の手順は、パスワード認証または公開鍵認証等に限定されず、生体認証等でもよい。カウンタ12bの書き込み用の専用の手順を採用することで、ファームウェア22のロールバックに対するセキュリティを担保することができる。 The write control unit 16 controls write operations of the counters 12a and 12b. The write control unit 16 performs a write operation to update the counter value CNTa of the counter 12a based on instructions from the version verification unit 14. Further, when performing a rollback process to lower the version of the firmware 22, the write control unit 16 performs a write operation of the counter 12b based on a dedicated procedure for writing to the counter 12b, and updates the counter value CNTa. . For example, a dedicated procedure for writing to the counter 12b may be password authentication or public key authentication. Note that the dedicated procedure for writing to the counter 12b is not limited to password authentication or public key authentication, but may also be biometric authentication or the like. By employing a dedicated procedure for writing to the counter 12b, security against rollback of the firmware 22 can be ensured.

例えば、バージョン検証部14および書き込み制御部16の動作は、プロセッサ回路10が実行するバージョン管理プログラムにより実現される。そして、バージョン管理プログラムの実行によりバージョン管理方法が実現される。また、エラー処理部は、プロセッサ回路10が実行するエラー処理プログラムにより実現されてもよい。なお、バージョン検証部14、書き込み制御部16およびエラー処理部の1つまたは複数は、ハードウェアにより実現されてもよい。 For example, the operations of the version verification unit 14 and the write control unit 16 are realized by a version management program executed by the processor circuit 10. Then, the version control method is realized by executing the version control program. Further, the error processing section may be realized by an error processing program executed by the processor circuit 10. Note that one or more of the version verification section 14, the write control section 16, and the error processing section may be realized by hardware.

図2は、図1のカウンタ12a、12bを使用してファームウェアのバージョンの更新を管理する例を示す。図2に示す動作は、バージョン検証部14および書き込み制御部16により実施されるバージョン管理方法の例を示す。また、図2に示す動作は、プロセッサ回路10が実行するバージョン管理プログラムによる動作の例を示す。 FIG. 2 shows an example of managing firmware version updates using the counters 12a and 12b of FIG. The operation shown in FIG. 2 shows an example of a version management method implemented by the version verification unit 14 and the write control unit 16. Moreover, the operation shown in FIG. 2 shows an example of the operation by the version control program executed by the processor circuit 10.

カウンタ12a、12bのカウンタ値CNTa、CNTbは、最下位ビットから上位ビットに向けてビット値が"1"ずつセットすることで増加される。ビット値の"1"から"0"への書き換えはできない。バージョン格納部12に設定されたファームウェアのバージョンのチェック値は、カウンタ値CNTa、CNTbの差(CNTa-CNTb)で示される。カウンタ値CNTa、CNTbの先頭に示す「4'b」または「5'b」は、2進数の4ビットまたは2進数の5ビットをそれぞれ示す。 The counter values CNTa and CNTb of the counters 12a and 12b are incremented by setting bit values to "1" from the least significant bit to the most significant bit. It is not possible to rewrite the bit value from "1" to "0". The check value of the firmware version set in the version storage unit 12 is indicated by the difference (CNTa−CNTb) between the counter values CNTa and CNTb. "4'b" or "5'b" shown at the beginning of the counter values CNTa, CNTb indicates 4 bits of binary number or 5 bits of binary number, respectively.

図2(A)は、ファームウェアのバージョン(チェック値)を増加させる場合のカウンタ12a、12bの動作の例が示される。図2(A)では、ファームウェア22のバージョンは、状態A0から状態A4にかけて、"0"から"4"に順次更新される。カウンタ12bのカウンタ値CNTbが"0"に維持されるため、カウンタ値CNTaはチェック値を示す。そして、カウンタ値CNTaと、起動するファームウェア22とが一致した場合、ファームウェア22が起動される。 FIG. 2A shows an example of the operation of the counters 12a and 12b when increasing the firmware version (check value). In FIG. 2A, the version of the firmware 22 is sequentially updated from "0" to "4" from state A0 to state A4. Since the counter value CNTb of the counter 12b is maintained at "0", the counter value CNTa indicates the check value. If the counter value CNTa matches the firmware 22 to be activated, the firmware 22 is activated.

図2(B)は、ファームウェア22のバージョンのアップ後に問題が発生し、バージョン(チェック値)を1つ前にロールバックする場合のカウンタ12a、12bの動作の例が示される。バージョン(チェック値)を戻す場合、ファームウェア22を起動する前に、現在のバージョンと戻した後のバージョンとの差の分の値だけカウンタ12bのカウンタ値CNTbが加算される。 FIG. 2B shows an example of the operation of the counters 12a and 12b when a problem occurs after the version of the firmware 22 is updated and the version (check value) is rolled back to the previous version. When returning the version (check value), before starting the firmware 22, the counter value CNTb of the counter 12b is incremented by the difference between the current version and the version after returning.

なお、図2(B)の初期状態B0では、カウンタ値CNTaは、「4'b0111=3」であるため、起動可能なファームウェア22のバージョンは"3"である。この例では、バージョンを1つ前に戻すため、カウンタ値CNTbは、状態B0の「4'b0000」から状態B1の「4'b0001」に"1"増加される。カウンタ値CNTbが"1"増加することにより、起動可能なファームウェア22のバージョンは"2"になる。 Note that in the initial state B0 of FIG. 2(B), the counter value CNTa is "4'b0111=3", so the version of the bootable firmware 22 is "3". In this example, in order to return the version to the previous version, the counter value CNTb is increased by "1" from "4'b0000" in state B0 to "4'b0001" in state B1. By increasing the counter value CNTb by "1", the version of the bootable firmware 22 becomes "2".

上述したように、カウンタ値CNTbの更新は、セキュリティを担保するためにパスワード認証または公開鍵認証方式等を使用して、ロールバック専用の状態に遷移させて行われる。なお、セキュリティが担保された試験または装置のデバッグを目的とする専用の状態が用意されている場合、その手順に従ってカウンタ値CNTbが更新されてもよい。 As described above, the counter value CNTb is updated by transitioning to a rollback-only state using password authentication, public key authentication, or the like to ensure security. Note that if a dedicated state is prepared for the purpose of testing or debugging the device with guaranteed security, the counter value CNTb may be updated according to the procedure.

この後、バージョン="3"のファームウェア22を起動する場合、カウンタ値CNTaは、状態B1の「4'b0111」から"1"増加され、状態B2の「4'b1111」に更新される。これにより、バージョン格納部12に保持されるチェック値は"3"に戻り、バージョン="3"のファームウェア22が起動可能になる。 After this, when starting the firmware 22 with version="3", the counter value CNTa is incremented by "1" from "4'b0111" in state B1 and updated to "4'b1111" in state B2. As a result, the check value held in the version storage section 12 returns to "3", and the firmware 22 with version="3" can be activated.

図2(C)は、カウンタ12a、12bのビット数が図2(B)より1ビット多い場合のカウンタ12a、12bの動作の例が示される。図2(C)の状態C0~C2は、カウンタ12a、12bのビット数が異なることを除き、図2(B)の状態B0~B2と同様である。カウンタ12a、12bのビット数を1ビット増やすことで、バージョンを1つ前に戻す場合にも、起動可能なファームウェア22のバージョンは、その後"4"まで更新可能になる。 FIG. 2C shows an example of the operation of the counters 12a and 12b when the number of bits in the counters 12a and 12b is one bit larger than that in FIG. 2B. States C0 to C2 in FIG. 2(C) are similar to states B0 to B2 in FIG. 2(B), except that the number of bits of the counters 12a and 12b are different. By increasing the number of bits of the counters 12a and 12b by 1 bit, even if the version is returned to the previous version, the version of the bootable firmware 22 can be updated to "4" thereafter.

なお、バージョン(チェック値)を戻した場合、カウンタ値CNTa、CNTbで表現可能なチェック値の最大値は小さくなる。例えば、図2(B)に示す4ビットのカウンタ12aでは、バージョンを"4"に設定することはできない。図2(C)に示す4ビットのカウンタ12aでは、バージョンを"5"に設定することはできない。このため、カウンタ12a、12bのビット数は、想定されるファームウェアの運用状況を考慮して、最大のバージョン数および最大のロールバック数に合わせて設計される。図2では、カウンタ12a、12bのビット数を4ビットまたは5ビットとしているが、カウンタ12a、12bのビット数は、ファームウェア22のバージョンの最大の更新数に応じた任意の値に設定することができる。 Note that when the version (check value) is returned, the maximum value of the check value that can be expressed by the counter values CNTa and CNTb becomes smaller. For example, in the 4-bit counter 12a shown in FIG. 2(B), the version cannot be set to "4". In the 4-bit counter 12a shown in FIG. 2(C), the version cannot be set to "5". For this reason, the number of bits of the counters 12a and 12b is designed in accordance with the maximum number of versions and the maximum number of rollbacks, taking into consideration the assumed operating status of the firmware. In FIG. 2, the number of bits of the counters 12a and 12b is set to 4 bits or 5 bits, but the number of bits of the counters 12a and 12b can be set to any value depending on the maximum number of updates of the firmware 22 version. can.

図3は、図1のプロセッサ回路10によるファームウェアの更新動作のフローの一例を示す。プロセッサ回路10は、マザーボード100が搭載される装置が起動されたことに基づいて、図3に示すファームウェアの起動処理を開始する。 FIG. 3 shows an example of a flow of a firmware update operation by the processor circuit 10 of FIG. 1. The processor circuit 10 starts the firmware activation process shown in FIG. 3 based on the activation of the device on which the motherboard 100 is installed.

まず、ステップS10において、書き込み制御部16は、カウンタ12bの書き込み用の専用の手順を受信したか否かを判定する。書き込み制御部16は、専用の手順を受信した場合、処理をステップS12に移行し、専用の手順を受信しない場合、通常のファームウェアの起動処理を実施するために、処理をステップS14に移行する。 First, in step S10, the write control unit 16 determines whether or not a dedicated procedure for writing to the counter 12b has been received. When the write control unit 16 receives the dedicated procedure, the process moves to step S12, and when the dedicated procedure is not received, the write control unit 16 moves the process to step S14 in order to perform normal firmware startup processing.

ステップS12において、書き込み制御部16は、専用の手順により認証処理等を行い、認証処理が成功したことに基づいてカウンタ12bのカウンタ値CNTbを指示された値に更新し、図3に示す処理を終了する。なお、カウンタ12bが更新された後、マザーボード100が搭載される装置は再起動される。これにより、カウンタ12bの更新後に図3に示す処理が再び、実施される。 In step S12, the write control unit 16 performs authentication processing etc. according to a dedicated procedure, updates the counter value CNTb of the counter 12b to the instructed value based on the success of the authentication processing, and performs the processing shown in FIG. finish. Note that after the counter 12b is updated, the device on which the motherboard 100 is mounted is restarted. As a result, the process shown in FIG. 3 is performed again after updating the counter 12b.

ステップS14において、バージョン検証部14は、起動するファームウェア22のバージョンをファームウェア格納領域20から読み出す。次に、ステップS16において、バージョン検証部14は、読み出したバージョンとカウンタ12a、カウンタ12bから読み出したカウンタ値CNTa、CNTbの差(CNTa-CNTb;チェック値)とを比較する。 In step S14, the version verification unit 14 reads the version of the firmware 22 to be activated from the firmware storage area 20. Next, in step S16, the version verification unit 14 compares the read version with the difference (CNTa−CNTb; check value) between the counter values CNTa and CNTb read from the counter 12a and the counter 12b.

次に、ステップS18において、バージョン検証部14は、読み出したバージョンが差(CNTa-CNTb)より大きい場合、バージョン格納部12に保持されるチェック値を起動するファームウェア22のバージョンに合わせるため、処理をステップS20に移行する。バージョン検証部14は、読み出したバージョンが差(CNTa-CNTb)と等しい場合、ファームウェア格納領域20から読み出されるファームウェア22が起動可能であるため、処理をステップS22に移行する。バージョン検証部14は、読み出したバージョンが差(CNTa-CNTb)より小さい場合、ファームウェア22の起動処理のエラーを検出し、ファームウェア22の起動を停止させるために、処理をステップS24に移行する。 Next, in step S18, if the read version is larger than the difference (CNTa-CNTb), the version verification unit 14 performs processing to match the check value held in the version storage unit 12 with the version of the firmware 22 to be activated. The process moves to step S20. If the read version is equal to the difference (CNTa−CNTb), the version verification unit 14 moves the process to step S22 because the firmware 22 read from the firmware storage area 20 can be activated. If the read version is smaller than the difference (CNTa-CNTb), the version verification unit 14 detects an error in the startup process of the firmware 22, and moves the process to step S24 to stop the startup of the firmware 22.

ステップS20において、バージョン検証部14は、起動するファームウェア22のバージョンとチェック値(CNTa-CNTb)との差を書き込み制御部16に通知する。書き込み制御部16は、受信した差に基づいて、チェック値(CNTa-CNTb)がファームウェア22のバージョンと等しくなるまでカウンタ12aのカウンタ値CNTaを増加させる。ステップS20の後、処理はステップS22に移行される。ステップS22において、バージョン検証部14は、バージョンの管理処理を完了し、ファームウェア22の起動をプロセッサ回路10に指示し、図3に示す処理を終了する。そして、ファームウェア22が起動された後、例えば、OSが起動される。 In step S20, the version verification section 14 notifies the write control section 16 of the difference between the version of the firmware 22 to be activated and the check value (CNTa-CNTb). The write control unit 16 increases the counter value CNTa of the counter 12a based on the received difference until the check value (CNTa−CNTb) becomes equal to the version of the firmware 22. After step S20, the process moves to step S22. In step S22, the version verification unit 14 completes the version management process, instructs the processor circuit 10 to start the firmware 22, and ends the process shown in FIG. 3. After the firmware 22 is started, for example, the OS is started.

ステップS24において、バージョン検証部14は、プロセッサ回路10にファームウェア22の起動を停止させる。また、バージョン検証部14は、エラーの発生と、マザーボード100が搭載される装置の起動を停止する指示とをプロセッサ回路10のエラー処理部等に出力し、図3に示す処理が終了する(起動の失敗)。これにより、不正なバージョンのファームウェア22が起動されることを抑止することができる。 In step S24, the version verification unit 14 causes the processor circuit 10 to stop starting the firmware 22. The version verification unit 14 also outputs the occurrence of an error and an instruction to stop the startup of the device in which the motherboard 100 is installed to the error processing unit of the processor circuit 10, and the process shown in FIG. 3 ends (startup failure). This makes it possible to prevent an incorrect version of the firmware 22 from being activated.

以上、この実施形態では、書き込み制御部16は、不揮発性メモリであるバージョン格納部12に設けられた2つのカウンタCNTa、CNTbの一方をバージョンを上げるときに更新し、他方をバージョンを下げるときに更新する。これにより、2つのカウンタCNTa、CNTbによりバージョンの上げ下げを複数回実施することができる。この結果、ファームウェア等のソフトウェアのバージョンを管理するメモリの容量を抑えることができる。 As described above, in this embodiment, the write control unit 16 updates one of the two counters CNTa and CNTb provided in the version storage unit 12, which is a non-volatile memory, when increasing the version, and updates the other when decreasing the version. Update. Thereby, the version can be increased or decreased multiple times using the two counters CNTa and CNTb. As a result, the memory capacity for managing versions of software such as firmware can be reduced.

カウンタ値CNTaを増加させることでバージョンを上げることができ、カウンタ値CNTbを増加させることでバージョンを下げることができる。このため、例えば、OTPメモリに設けたカウンタ12a、12bのカウンタ値CNTa、CNTbの差であるチェック値を利用して、バージョンアップとバージョンダウンとを容易に管理することができる。例えば、起動するファームウェア22のバージョンがチェック値より大きいとき、チェック値と起動するファームウェア22のバージョンとが等しくなるまで、カウンタ値CNTaを更新することで、容易にバージョンアップすることができる。 The version can be increased by increasing the counter value CNTa, and the version can be decreased by increasing the counter value CNTb. Therefore, for example, version upgrades and version downs can be easily managed using a check value that is the difference between the counter values CNTa and CNTb of the counters 12a and 12b provided in the OTP memory. For example, when the version of the firmware 22 to be activated is greater than the check value, the version can be easily upgraded by updating the counter value CNTa until the check value and the version of the firmware 22 to be activated become equal.

バージョン検証部14は、起動するファームウェア22のバージョンが差(CNTa-CNTb)より小さい場合、ファームウェア22の起動処理のエラーを検出し、ファームウェア22の起動を停止させる。これにより、不正なバージョンのファームウェア22が起動されることを抑止することができる。 If the version of the firmware 22 to be activated is smaller than the difference (CNTa-CNTb), the version verification unit 14 detects an error in the activation process of the firmware 22 and stops the activation of the firmware 22. This makes it possible to prevent an incorrect version of the firmware 22 from being activated.

バージョンをロールバックするときに使用するカウンタ値CNTbは、認証処理等のカウンタ12bの書き込み用の専用の手順に基づいて更新されるため、ファームウェアのバージョン管理におけるセキュリティの担保と運用性とを両立することができる。ここで、運用性とは、例えば、ファームウェアに問題が発生したときに迅速にバージョンをロールバックして試験を実施できること、それにより、ファームウェアのデバッグ効率の低下が抑制できることなどを含む。これに対して、ファームウェアのロールバックを実施するために、装置の交換が発生する場合、迅速なロールバックは困難である。 The counter value CNTb used when rolling back the version is updated based on a dedicated procedure for writing to the counter 12b, such as during authentication processing, thereby ensuring both security and operability in firmware version management. be able to. Here, operability includes, for example, the ability to quickly roll back a version and conduct a test when a problem occurs with firmware, and thereby suppress a decline in firmware debugging efficiency. On the other hand, if a device needs to be replaced in order to perform a firmware rollback, a quick rollback is difficult.

なお、マザーボード100が搭載されるサーバ等の装置は、ネットワークに接続されることが多く、ネットワークを介してサイバー攻撃を受けるおそれがある。このような場合にも、ファームウェア22の不正なロールバック等を抑止することができ、装置がコンピュータウイルスに感染するなどの不具合の発生の可能性を低減することができる。この結果、マザーボード100が搭載されるサーバ等の装置の信頼性が低下することを抑制することができる。 Note that a device such as a server on which the motherboard 100 is mounted is often connected to a network, and there is a risk that it will be subjected to a cyber attack via the network. Even in such a case, it is possible to prevent unauthorized rollback of the firmware 22, and it is possible to reduce the possibility of malfunctions such as the device being infected with a computer virus. As a result, it is possible to suppress a decrease in reliability of a device such as a server on which the motherboard 100 is mounted.

図4は、別の実施形態におけるプロセッサ回路が搭載されるマザーボートの一例を示す。図1と同様の要素については、同じ符号を付し、詳細な説明は省略する。図4に示すプロセッサ回路10Aは、例えば、CPU等であり、ファームウェア22が格納されるファームウェア格納領域20とともにマザーボード100Aに搭載される。 FIG. 4 shows an example of a motherboard on which a processor circuit according to another embodiment is mounted. Elements similar to those in FIG. 1 are denoted by the same reference numerals, and detailed description thereof will be omitted. The processor circuit 10A shown in FIG. 4 is, for example, a CPU, and is mounted on the motherboard 100A together with a firmware storage area 20 in which firmware 22 is stored.

マザーボード100Aは、図1のプロセッサ回路10の代わりにプロセッサ回路10Aが搭載されることを除き、図1のマザーボード100の構成と同様である。プロセッサ回路10Aは、図1のバージョン格納部12の代わりにバージョン格納部12Aを有することを除き、図1のプロセッサ回路10の構成と同様である。 The motherboard 100A has the same configuration as the motherboard 100 in FIG. 1 except that a processor circuit 10A is mounted in place of the processor circuit 10 in FIG. The processor circuit 10A has the same configuration as the processor circuit 10 in FIG. 1 except that it has a version storage section 12A instead of the version storage section 12 in FIG.

バージョン格納部12Aは、図1のカウンタ12bの代わりにカウンタ12cが搭載されることを除き、図1のバージョン格納部12と同様である。カウンタ12cは、カウンタ値CNTcを生成する。バージョン格納部12Aは、不揮発性メモリの一例である。カウンタ値CNTaを保持するカウンタ12aは、第1不揮発性メモリの一例である。カウンタ値CNTcを保持するカウンタ12cは、第2不揮発性メモリの一例である。 The version storage unit 12A is the same as the version storage unit 12 in FIG. 1, except that a counter 12c is installed instead of the counter 12b in FIG. The counter 12c generates a counter value CNTc. The version storage unit 12A is an example of nonvolatile memory. The counter 12a that holds the counter value CNTa is an example of a first nonvolatile memory. The counter 12c that holds the counter value CNTc is an example of a second nonvolatile memory.

例えば、カウンタ12cは、複数のビットの各々の値を複数回書き換え可能なフラッシュメモリ等の不揮発性メモリを使用して設けられる。このため、カウンタ12cは、通常の2進カウンタとして動作可能であり、カウンタ値CNTcは2進数で示される。したがって、"1"にセットされているビットの数によりカウンタ値CNTbが示される図1のカウンタ12bに比べて、使用するビット数を節約することができる。すなわち、カウンタ12cに使用するメモリ資源を、図1に比べてさらに低減することができる。例えば、"0"から"4"までをカウントする場合、図1のカウンタ12bは4ビットを使用するが、カウンタ12cは、3ビットの使用で済む。また、カウンタ12cは、4ビットを有する場合、"0"から"15"までカウント可能である。 For example, the counter 12c is provided using a nonvolatile memory such as a flash memory in which each value of a plurality of bits can be rewritten multiple times. Therefore, the counter 12c can operate as a normal binary counter, and the counter value CNTc is expressed in binary. Therefore, the number of bits used can be saved compared to the counter 12b of FIG. 1 in which the counter value CNTb is indicated by the number of bits set to "1". That is, the memory resources used for the counter 12c can be further reduced compared to FIG. For example, when counting from "0" to "4", the counter 12b in FIG. 1 uses 4 bits, but the counter 12c only needs to use 3 bits. Further, when the counter 12c has 4 bits, it can count from "0" to "15".

カウンタ12cにフラッシュメモリ等の不揮発性メモリを使用する場合、"1"が書き込まれたビットの値を"0"に戻すことができる。しかしながら、カウンタ12cへの書き込みは、書き込み制御部16により、パスワード認証または公開鍵認証等のカウンタ12cの書き込み用の専用の手順を使用して実施される。このため、不正な値がカウンタ12cに書き込まれることを抑止することができ、ファームウェアの不正なロールバックを抑止することができる。なお、カウンタ12cの書き込み用の専用の手順は、パスワード認証または公開鍵認証等に限定されない。 If a non-volatile memory such as a flash memory is used for the counter 12c, the value of the bit to which "1" has been written can be returned to "0". However, writing to the counter 12c is performed by the write control unit 16 using a dedicated procedure for writing to the counter 12c, such as password authentication or public key authentication. Therefore, it is possible to prevent an incorrect value from being written to the counter 12c, and it is possible to prevent an incorrect rollback of the firmware. Note that the dedicated procedure for writing to the counter 12c is not limited to password authentication, public key authentication, or the like.

図5は、図4のカウンタ12a、12cを使用してファームウェアのバージョンの更新を管理する例を示す。図2と同様の動作については、詳細な説明は省略する。図5(A)は、ファームウェア22のバージョンのアップ後に問題が発生し、バージョンを2つ前にロールバックする場合のカウンタ12a、12cの動作の例が示される。図2(B)と同様に、バージョンを戻す場合、ファームウェア22を起動する前に、現在のバージョンと戻すバージョンとの差の分の値だけカウンタ12cのカウンタ値CNTcが加算される。 FIG. 5 shows an example of managing firmware version updates using the counters 12a and 12c shown in FIG. Detailed description of operations similar to those in FIG. 2 will be omitted. FIG. 5A shows an example of the operation of the counters 12a and 12c when a problem occurs after the version of the firmware 22 is updated and the version is rolled back two versions. Similarly to FIG. 2B, when returning the version, before starting the firmware 22, the counter value CNTc of the counter 12c is incremented by the difference between the current version and the version to be returned.

この例では、バージョンを2つ前に戻すため、カウンタ値CNTcは、状態A0の「4'b0000」から状態A1の「4'b0010」に"2"増加される。これにより、カウンタ値CNTa、CNTcの差は、"1"になり、バージョン="1"のファームウェア22の起動が可能になる。なお、初期状態A0では、カウンタ値CNTaは、「5'b00111」="3"であるため、起動可能なファームウェア22のバージョンは"3"である。 In this example, the counter value CNTc is increased by "2" from "4'b0000" in state A0 to "4'b0010" in state A1 in order to return the version two versions earlier. As a result, the difference between the counter values CNTa and CNTc becomes "1", and it becomes possible to start the firmware 22 whose version is "1". Note that in the initial state A0, the counter value CNTa is "5'b00111" = "3", so the version of the bootable firmware 22 is "3".

図4のプロセッサ回路10Aによるファームウェアの更新動作のフローは、図3と同じである。このため、カウンタ12aのカウンタ値CNTaは、ファームウェア22の通常の起動時において、ファームウェア22のバージョンがカウンタ値CNTa、CNTcの差であるチェック値より大きい場合、更新される。また、カウンタ12aは、OTPメモリが使用されるため、増加方向のみしか更新されない。このため、例えば、悪意を持ってカウンタ12aが更新された場合にも、現在のバージョンより大きな値への更新のみであり、更新後に装置は起動できなくなる。さらに、カウンタ値CNTcは、図3のステップS12でのみ更新可能であるため、カウンタ12cのカウンタ値CNTcは、ファームウェア22の通常の起動時にいかなる条件においても更新が禁止される。したがって、ファームウェアのバージョンに関する装置のセキュリティを担保することができる。 The flow of the firmware update operation by the processor circuit 10A in FIG. 4 is the same as that in FIG. 3. Therefore, the counter value CNTa of the counter 12a is updated if the version of the firmware 22 is larger than the check value that is the difference between the counter values CNTa and CNTc during normal startup of the firmware 22. Further, since the OTP memory is used for the counter 12a, it is updated only in the increasing direction. Therefore, for example, even if the counter 12a is maliciously updated, the update will only be to a value larger than the current version, and the device will not be able to start up after the update. Further, since the counter value CNTc can be updated only in step S12 of FIG. 3, updating of the counter value CNTc of the counter 12c is prohibited under any conditions during normal startup of the firmware 22. Therefore, the security of the device regarding the firmware version can be ensured.

この後、バージョン="2"のファームウェア22を再度起動する場合、カウンタ値CNTaは、状態A1の「5'b00111」から状態A2の「5'b01111」に更新される。これにより、バージョン格納部12に保持されるバージョンは"2"に設定される。さらに、バージョン="3"のファームウェア22を再度起動する場合、カウンタ値CNTaは、状態A2の「5'b01111」から状態A3の「5'b11111」に更新される。これにより、バージョン格納部12に保持されるバージョンは"3"に設定される。図5においても、カウンタ12a、12cのビット数は、想定されるファームウェアの運用状況を考慮して、最大のバージョンおよび最大のロールバック数に合わせて設計される。 After this, when the firmware 22 with version="2" is started again, the counter value CNTa is updated from "5'b00111" in state A1 to "5'b01111" in state A2. As a result, the version held in the version storage unit 12 is set to "2". Further, when the firmware 22 with version="3" is restarted, the counter value CNTa is updated from "5'b01111" in state A2 to "5'b11111" in state A3. As a result, the version held in the version storage unit 12 is set to "3". In FIG. 5 as well, the number of bits of the counters 12a and 12c is designed in accordance with the maximum version and the maximum number of rollbacks, taking into account the assumed operating status of the firmware.

図6は、上述した実施形態におけるカウンタの別の例を示す。図6(A)は、図1のカウンタ12a(OTP)のビット数を96ビットとし、図1のカウンタ12b(OTP)のビット数を32ビットとしている。これにより、ロールバック可能なバージョンを最大で"32"にすることができる。また、最大数のロールバックを実施した場合にも、"64"までのバージョンに対応させることができる。 FIG. 6 shows another example of the counter in the embodiment described above. In FIG. 6A, the number of bits of the counter 12a (OTP) in FIG. 1 is 96 bits, and the number of bits of the counter 12b (OTP) in FIG. 1 is 32 bits. As a result, the number of versions that can be rolled back can be increased to "32" at most. Furthermore, even when the maximum number of rollbacks is performed, it is possible to support versions up to "64".

図6(B)は、図4のカウンタ12a(OTP)のビット数を96ビットとし、図4のカウンタ12c(フラッシュメモリ)のビット数を6ビットとしている。カウンタ12cは、カウンタ値CNTcが2進数で表現されるため、カウンタ12bで実現可能なロールバックと同等、あるいはそれ以上の"0"~"63"まで設定することができる。このため、メモリ資源を削減することが可能になる。
In FIG. 6B, the number of bits of the counter 12a (OTP) in FIG. 4 is 96 bits, and the number of bits of the counter 12c (flash memory) in FIG. 4 is 6 bits. Since the counter value CNTc of the counter 12c is expressed in binary, it can be set to a value from "0" to "63" that is equal to or greater than the rollback that can be realized by the counter 12b. Therefore, memory resources can be reduced.

以上、この実施形態においても、上述した実施形態と同様の効果を得ることができる。例えば、2つのカウンタCNTa、CNTcによりバージョンの上げ下げを複数回実施することができ、ファームウェア等のソフトウェアのバージョンを管理するメモリの容量を抑えることができる。カウンタ12a、12cのカウンタ値CNTa、CNTcの差であるチェック値を利用して、バージョンアップとバージョンダウンとを容易に管理することができる。 As described above, in this embodiment as well, the same effects as in the above-described embodiment can be obtained. For example, the two counters CNTa and CNTc can increase or decrease the version multiple times, and the memory capacity for managing versions of software such as firmware can be reduced. By using a check value that is the difference between the counter values CNTa and CNTc of the counters 12a and 12c, version upgrades and version downs can be easily managed.

さらに、この実施形態では、カウンタ12cが、通常の2進カウンタとして動作可能なフラッシュメモリ等の不揮発性メモリを使用して設けられるため、図1のカウンタ12bに比べて、使用するビット数を節約することができる。この結果、カウンタ12cに使用するメモリ資源を、図1に比べてさらに低減することができる。 Furthermore, in this embodiment, the counter 12c is provided using a non-volatile memory such as a flash memory that can operate as a normal binary counter, so the number of bits used is reduced compared to the counter 12b of FIG. can do. As a result, the memory resources used for the counter 12c can be further reduced compared to FIG.

図7は、別の一実施形態におけるプロセッサ回路が搭載されるマザーボートの一例を示す。図1と同様の要素については、同じ符号を付し、詳細な説明は省略する。図7に示すマザーボード100Bは、CPU10Bと、ファームウェア格納領域20と、セキュリティに関する各種機能を含むTPM(Trusted Platform Module)30とを有する。マザーボード100Aは、図1のプロセッサ回路10の代わりにCPU10Bが搭載され、新たにTPM30が搭載されることを除き、図1のマザーボード100と同様である。なお、この実施形態では、マザーボード100Bは、プロセッサ回路として動作する。以下では、マザーボード100Bは、プロセッサ回路100Bとも称される。 FIG. 7 shows an example of a motherboard on which a processor circuit according to another embodiment is mounted. Elements similar to those in FIG. 1 are denoted by the same reference numerals, and detailed description thereof will be omitted. The motherboard 100B shown in FIG. 7 includes a CPU 10B, a firmware storage area 20, and a TPM (Trusted Platform Module) 30 including various functions related to security. The motherboard 100A is the same as the motherboard 100 in FIG. 1, except that a CPU 10B is mounted in place of the processor circuit 10 in FIG. 1, and a TPM 30 is newly mounted. Note that in this embodiment, the motherboard 100B operates as a processor circuit. In the following, the motherboard 100B is also referred to as the processor circuit 100B.

CPU10Bは、図1のバージョン格納部12の代わりにバージョン格納部12Bを有することを除き、図1のプロセッサ回路10と同様である。バージョン格納部12Bは、カウンタ値CNTbを生成するカウンタ12b(オンチップのOTPメモリ)のみが搭載される。バージョン格納部12Bは、不揮発性メモリの一例である。 The CPU 10B is similar to the processor circuit 10 in FIG. 1 except that it has a version storage section 12B instead of the version storage section 12 in FIG. The version storage unit 12B is equipped with only a counter 12b (on-chip OTP memory) that generates a counter value CNTb. The version storage unit 12B is an example of nonvolatile memory.

この実施形態では、カウンタ12aは、セキュリティ機能を含むセキュリティチップであるTPM30に搭載される。このため、バージョン検証部14は、ファームウェア格納領域20に保持されているファームウェア22の起動時に、TMP30内のカウンタ12aに保持されたカウンタ値CNTaとバージョン格納部12のカウンタ12bに保持されたカウンタ値CNTbとを読み出して比較する。図7のCPU10Bによるファームウェアの更新動作は、図2および図3と同じである。 In this embodiment, the counter 12a is mounted on the TPM 30, which is a security chip including a security function. Therefore, when the firmware 22 held in the firmware storage area 20 is activated, the version verification unit 14 checks the counter value CNTa held in the counter 12a in the TMP 30 and the counter value held in the counter 12b of the version storage unit 12. CNTb is read out and compared. The firmware update operation by the CPU 10B in FIG. 7 is the same as in FIGS. 2 and 3.

図7に示すように、例えば、TPM30がマザーボード100Bに搭載済みの場合、TPM30を利用してカウンタ12aを実現できるため、カウンタ12aを設ける資源を削減することができる。このように、カウンタ12a(OTP)をバージョン検証部14からアクセス可能な任意の場所に搭載することができるため、ファームウェア22のバージョンの検証方法をマザーボード100Bに組み込む障壁を低くすることができる。 As shown in FIG. 7, for example, if the TPM 30 is already mounted on the motherboard 100B, the counter 12a can be realized using the TPM 30, so that the resources for providing the counter 12a can be reduced. In this way, since the counter 12a (OTP) can be mounted at any location accessible from the version verification unit 14, the barrier to incorporating the version verification method of the firmware 22 into the motherboard 100B can be lowered.

以上、この実施形態においても、上述した実施形態と同様の効果を得ることができる。例えば、2つのカウンタCNTa、CNTbによりバージョンの上げ下げを複数回実施することができ、ファームウェア等のソフトウェアのバージョンを管理するメモリの容量を抑えることができる。カウンタ12a、12bのカウンタ値CNTa、CNTbの差であるチェック値を利用して、バージョンアップとバージョンダウンとを容易に管理することができる。 As described above, in this embodiment as well, the same effects as in the above-described embodiment can be obtained. For example, the two counters CNTa and CNTb can be used to increase or decrease the version multiple times, and the memory capacity for managing versions of software such as firmware can be reduced. Using the check value, which is the difference between the counter values CNTa and CNTb of the counters 12a and 12b, version upgrades and version downs can be easily managed.

さらに、この実施形態では、TPM30がマザーボード100Bに搭載済みの場合、TPM30を利用してカウンタ12aを実現でき、カウンタ12aを設ける資源を削減することができる。カウンタ12a(OTP)をバージョン検証部14からアクセス可能な任意の場所に搭載することができるため、ファームウェア22のバージョンの検証方法をマザーボード100Bに組み込む障壁を低くすることができる。 Furthermore, in this embodiment, if the TPM 30 is already mounted on the motherboard 100B, the counter 12a can be realized using the TPM 30, and the resources for providing the counter 12a can be reduced. Since the counter 12a (OTP) can be mounted at any location accessible from the version verification unit 14, it is possible to lower the barrier to incorporating the version verification method of the firmware 22 into the motherboard 100B.

以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずである。したがって、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。 The features and advantages of the embodiments will become apparent from the above detailed description. It is intended that the appended claims extend to the features and advantages of such embodiments without departing from the spirit and scope thereof. Additionally, all improvements and changes will be readily apparent to those having ordinary knowledge in the relevant technical field. Therefore, it is not intended that the scope of the inventive embodiments be limited to those described above, but suitable modifications and equivalents may be made within the scope disclosed in the embodiments.

10、10A、10B プロセッサ回路
12、12A、12B バージョン格納部
12a、12b、12c カウンタ
14 バージョン検証部
16 書き込み制御部
20 ファームウェア格納領域
22 ファームウェア
30 TPM
100、100A、100B マザーボード
CNTa、CNTb、CNTc カウンタ値
10, 10A, 10B Processor circuit 12, 12A, 12B Version storage section 12a, 12b, 12c Counter 14 Version verification section 16 Write control section 20 Firmware storage area 22 Firmware 30 TPM
100, 100A, 100B Motherboard CNTa, CNTb, CNTc Counter value

Claims (9)

起動するソフトウェアのバージョンを管理するプロセッサ回路であって、
第1カウンタの第1カウンタ値と第2カウンタの第2カウンタ値とを保持する不揮発性メモリと、
前記ソフトウェアのバージョンを上げるときに前記第1カウンタ値を更新して前記第2カウンタ値を維持し、前記ソフトウェアのバージョンを下げるときに前記第1カウンタ値を維持して前記第2カウンタ値を更新し、起動する前記ソフトウェアのバージョンが前記第1カウンタ値と前記第2カウンタ値との差で示されるバージョン確認用のチェック値と等しいときに前記ソフトウェアを起動する起動制御部と、を有する
プロセッサ回路。
A processor circuit that manages the version of software to be started,
a non-volatile memory that retains a first counter value of a first counter and a second counter value of a second counter;
When increasing the software version, the first counter value is updated and the second counter value is maintained; when the software version is decreasing, the first counter value is maintained and the second counter value is updated. and a startup control unit that starts the software when the version of the software to be started is equal to a check value for version confirmation indicated by the difference between the first counter value and the second counter value. .
前記第1カウンタ値および前記第2カウンタ値を保持する前記不揮発性メモリは、複数ビットの各々の値を一度のみ書き込み可能であり、
前記起動制御部は、前記ソフトウェアのバージョンを1つ上げるときに、前記第1カウンタの複数ビットの1つに値を書き込み、
前記チェック値は、前記第1カウンタにおいて値が書き込まれたビット数と前記第2カウンタにおいて値が書き込まれたビット数との差で示される
請求項1に記載のプロセッサ回路。
The nonvolatile memory that holds the first counter value and the second counter value is capable of writing each value of a plurality of bits only once,
The startup control unit writes a value to one of the plurality of bits of the first counter when incrementing the software version by one;
The processor circuit according to claim 1, wherein the check value is indicated by the difference between the number of bits in which a value is written in the first counter and the number of bits in which a value is written in the second counter.
前記起動制御部は、起動する前記ソフトウェアのバージョンが前記チェック値より大きいとき、前記チェック値と起動する前記ソフトウェアのバージョンとが等しくなるまで、前記第1カウンタ値を更新する
請求項1または請求項2に記載のプロセッサ回路。
The activation control unit updates the first counter value when the version of the software to be activated is greater than the check value, until the check value and the version of the software to be activated become equal. 2. The processor circuit according to 2.
前記起動制御部は、起動する前記ソフトウェアのバージョンが、前記チェック値より小さいとき、前記ソフトウェアの起動を停止する
請求項1または請求項2に記載のプロセッサ回路。
The processor circuit according to claim 1 or 2, wherein the activation control unit stops activation of the software when a version of the software to be activated is smaller than the check value.
前記起動制御部は、前記第2カウンタのカウンタ値を、認証処理が成功したことに基づいて更新する
請求項1または請求項2に記載のプロセッサ回路。
The processor circuit according to claim 1 or 2, wherein the activation control unit updates the counter value of the second counter based on a successful authentication process.
前記不揮発性メモリは、前記第1カウンタ値を保持する第1不揮発性メモリと前記第2カウンタ値を保持する第2不揮発性メモリとを含み、
前記第1不揮発性メモリは、複数のビットの各々の値を一度のみ書き込み可能であり、
前記第2不揮発性メモリは、複数のビットの各々の値を複数回書き換え可能である
請求項1に記載のプロセッサ回路。
The non-volatile memory includes a first non-volatile memory that holds the first counter value and a second non-volatile memory that holds the second counter value,
The first nonvolatile memory is capable of writing each value of a plurality of bits only once,
The processor circuit according to claim 1, wherein the second nonvolatile memory is capable of rewriting each value of a plurality of bits multiple times.
前記第1カウンタは、セキュリティ機能を含むセキュリティチップに搭載される
請求項1または請求項2に記載のプロセッサ回路。
The processor circuit according to claim 1 or 2, wherein the first counter is mounted on a security chip including a security function.
第1カウンタの第1カウンタ値と第2カウンタの第2カウンタ値とを保持する不揮発性メモリを有し、起動するソフトウェアのバージョンを管理するプロセッサ回路によるバージョン管理方法であって、
前記ソフトウェアのバージョンを上げるときに前記第1カウンタ値を更新して前記第2カウンタ値を維持し、
前記ソフトウェアのバージョンを下げるときに前記第1カウンタ値を維持して前記第2カウンタ値を更新し、
起動する前記ソフトウェアのバージョンが前記第1カウンタ値と前記第2カウンタ値との差で示されるバージョン確認用のチェック値と等しいときに前記ソフトウェアを起動する
バージョン管理方法。
A version management method using a processor circuit that has a nonvolatile memory that holds a first counter value of a first counter and a second counter value of a second counter, and manages a version of software to be activated,
updating the first counter value and maintaining the second counter value when upgrading the software version;
maintaining the first counter value and updating the second counter value when lowering the version of the software;
The version control method includes starting the software when the version of the software to be started is equal to a check value for version confirmation indicated by the difference between the first counter value and the second counter value.
第1カウンタの第1カウンタ値と第2カウンタの第2カウンタ値とを保持する不揮発性メモリを有し、起動するソフトウェアのバージョンを管理するプロセッサ回路が実行するバージョン管理プログラムであって、
前記ソフトウェアのバージョンを上げるときに前記第1カウンタ値を更新して前記第2カウンタ値を維持し、
前記ソフトウェアのバージョンを下げるときに前記第1カウンタ値を維持して前記第2カウンタ値を更新し、
起動する前記ソフトウェアのバージョンが前記第1カウンタ値と前記第2カウンタ値との差で示されるバージョン確認用のチェック値と等しいときに前記ソフトウェアを起動する
処理を前記プロセッサ回路に実行させるバージョン管理プログラム。
A version management program that is executed by a processor circuit that has a nonvolatile memory that holds a first counter value of a first counter and a second counter value of a second counter, and that manages a version of software to be activated,
updating the first counter value and maintaining the second counter value when upgrading the software version;
maintaining the first counter value and updating the second counter value when lowering the version of the software;
a version control program that causes the processor circuit to execute a process of activating the software when the version of the software to be activated is equal to a check value for version confirmation indicated by the difference between the first counter value and the second counter value; .
JP2022108795A 2022-07-06 2022-07-06 Processor circuit, version management method, and version management program Pending JP2024007617A (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2022108795A JP2024007617A (en) 2022-07-06 2022-07-06 Processor circuit, version management method, and version management program
US18/188,792 US20240012640A1 (en) 2022-07-06 2023-03-23 Processor circuit, method of managing version, and computer-readable recording medium storing version managing program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2022108795A JP2024007617A (en) 2022-07-06 2022-07-06 Processor circuit, version management method, and version management program

Publications (1)

Publication Number Publication Date
JP2024007617A true JP2024007617A (en) 2024-01-19

Family

ID=89431459

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022108795A Pending JP2024007617A (en) 2022-07-06 2022-07-06 Processor circuit, version management method, and version management program

Country Status (2)

Country Link
US (1) US20240012640A1 (en)
JP (1) JP2024007617A (en)

Also Published As

Publication number Publication date
US20240012640A1 (en) 2024-01-11

Similar Documents

Publication Publication Date Title
US10701084B2 (en) Reliable and secure firmware update with a dynamic validation for internet of things (IoT) devices
US9836606B2 (en) Secure recovery apparatus and method
US9880908B2 (en) Recovering from compromised system boot code
US9852298B2 (en) Configuring a system
US8281229B2 (en) Firmware verification using system memory error check logic
EP3028147B1 (en) Updating boot code
US11163886B2 (en) Information handling system firmware bit error detection and correction
TWI768544B (en) Computer system and its secure management method and computer software product
CN113672878B (en) System and method for preventing rollback attack
JP2012198878A (en) Refresh operation start method and system for semiconductor nonvolatile memory device
US20030105968A1 (en) System and method for migration of a version of a bootable program
US10885196B2 (en) Executing protected code
US20130124845A1 (en) Embedded device and control method thereof
JP2024007617A (en) Processor circuit, version management method, and version management program
EP3440585B1 (en) System and method for establishing a securely updatable core root of trust for measurement
US20230129942A1 (en) Method for locking a rewritable non-volatile memory and electronic device implementing said method
CN112817619B (en) Computer system, safety management method thereof and computer software product
JP6204555B1 (en) Method, system firmware, and computer for protecting variables stored in non-volatile memory
CN117894362A (en) One-time programmable memory modification method and device and electronic equipment
CN117743200A (en) TCG byte table processing method and storage device