JP2024007617A - Processor circuit, version management method, and version management program - Google Patents
Processor circuit, version management method, and version management program Download PDFInfo
- 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
Links
- 238000007726 management method Methods 0.000 title claims description 7
- 230000004913 activation Effects 0.000 claims abstract description 8
- 238000012790 confirmation Methods 0.000 claims abstract description 6
- 238000000034 method Methods 0.000 claims description 33
- 230000008569 process Effects 0.000 claims description 15
- 230000003247 decreasing effect Effects 0.000 claims description 5
- 230000006870 function Effects 0.000 claims description 4
- 230000003213 activating effect Effects 0.000 claims 1
- 238000012795 verification Methods 0.000 description 27
- 238000012545 processing Methods 0.000 description 14
- 238000010586 diagram Methods 0.000 description 7
- 238000001994 activation Methods 0.000 description 5
- 230000007423 decrease Effects 0.000 description 4
- 238000012360 testing method Methods 0.000 description 3
- 230000004888 barrier function Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000010365 information processing Effects 0.000 description 2
- 241000700605 Viruses Species 0.000 description 1
- 230000007257 malfunction Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005096 rolling process Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/575—Secure boot
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
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
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).
しかしながら、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.
以下、図面を参照して、実施形態が説明される。 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
プロセッサ回路10およびファームウェア格納領域20は、それぞれがチップの形態でマザーボード100に搭載されてもよく、1チップに集積された形態でマザーボード100に搭載されてもよい。例えば、マザーボード100は、サーバ、スーパーコンピュータまたはPC(Personal Computer)等の情報処理装置に搭載され、情報処理装置の機能を実現する。
The processor circuit 10 and the
ファームウェア格納領域20に保持されるファームウェア22は、プロセッサ回路10に搭載されるCPUコア等により実行される。特に限定されないが、例えば、ファームウェア格納領域20は、フラッシュメモリ等の電気的に書き換え可能なメモリ内に割り当てられ、更新するファームウェアを上書き可能である。なお、ファームウェア格納領域20は、プロセッサ回路10が実行するOS(Operating System)およびアプリケーションプログラムの一方または両方が格納されるメモリ内に割り当てられてもよい。
The
プロセッサ回路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
例えば、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
そして、カウンタ12aのカウンタ値CNTaおよびカウンタ12bのカウンタ値CNTbは、"1"にセットされているビットの数により示される。また、バージョン確認用のチェック値は、カウンタ値CNTa、CNTbの差(CNTa-CNTb)により示される。チェック値は、起動可能なファームウェア22のバージョンを示す。カウンタ12a、12bの使用例については、図2で説明される。カウンタ値CNTaは、第1カウンタ値の一例であり、カウンタ値CNTbは、第2カウンタ値の一例である。
The counter value CNTa of the
バージョン検証部14は、ファームウェア格納領域20に保持されているファームウェア22の起動時に、起動するファームウェア22のバージョンとバージョン格納部12に保持されているバージョンのチェック値とを比較する。そして、バージョン検証部14は、ファームウェア22のバージョンとカウンタ値CNTa、CNTbの差との比較に基づいて、ファームウェアの通常の起動処理、バージョンアップ処理、またはエラー処理(起動の停止)のいずれを実施するかを判定する。
When the
バージョン検証部14は、起動するファームウェア22のバージョンがカウンタ値CNTa、CNTbの差より大きい場合、カウンタ12aのカウンタ値CNTaを増加させる指示を書き込み制御部16に発行する。バージョン検証部14は、起動するファームウェア22のバージョンがカウンタ値CNTa、CNTbの差に等しい場合、ファームウェア22の起動処理をプロセッサ回路10に実施させる。バージョン検証部14は、起動するファームウェア22のバージョンがカウンタ値CNTa、CNTbの差より小さい場合、エラーの発生をプロセッサ回路10のエラー処理部等に通知する。
If the version of the
書き込み制御部16は、カウンタ12a、12bの書き込み動作を制御する。書き込み制御部16は、バージョン検証部14からの指示に基づいて、カウンタ12aのカウンタ値CNTaを更新する書き込み動作を実施する。また、書き込み制御部16は、ファームウェア22のバージョンを下げるロールバック処理を実施する場合、カウンタ12bの書き込み用の専用の手順に基づいて、カウンタ12bの書き込み動作を実施し、カウンタ値CNTaを更新する。例えば、カウンタ12bの書き込み用の専用の手順は、パスワード認証または公開鍵認証等である。なお、カウンタ12bの書き込み用の専用の手順は、パスワード認証または公開鍵認証等に限定されず、生体認証等でもよい。カウンタ12bの書き込み用の専用の手順を採用することで、ファームウェア22のロールバックに対するセキュリティを担保することができる。
The
例えば、バージョン検証部14および書き込み制御部16の動作は、プロセッサ回路10が実行するバージョン管理プログラムにより実現される。そして、バージョン管理プログラムの実行によりバージョン管理方法が実現される。また、エラー処理部は、プロセッサ回路10が実行するエラー処理プログラムにより実現されてもよい。なお、バージョン検証部14、書き込み制御部16およびエラー処理部の1つまたは複数は、ハードウェアにより実現されてもよい。
For example, the operations of the
図2は、図1のカウンタ12a、12bを使用してファームウェアのバージョンの更新を管理する例を示す。図2に示す動作は、バージョン検証部14および書き込み制御部16により実施されるバージョン管理方法の例を示す。また、図2に示す動作は、プロセッサ回路10が実行するバージョン管理プログラムによる動作の例を示す。
FIG. 2 shows an example of managing firmware version updates using the
カウンタ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
図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
図2(B)は、ファームウェア22のバージョンのアップ後に問題が発生し、バージョン(チェック値)を1つ前にロールバックする場合のカウンタ12a、12bの動作の例が示される。バージョン(チェック値)を戻す場合、ファームウェア22を起動する前に、現在のバージョンと戻した後のバージョンとの差の分の値だけカウンタ12bのカウンタ値CNTbが加算される。
FIG. 2B shows an example of the operation of the
なお、図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
上述したように、カウンタ値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
図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
なお、バージョン(チェック値)を戻した場合、カウンタ値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
図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
まず、ステップS10において、書き込み制御部16は、カウンタ12bの書き込み用の専用の手順を受信したか否かを判定する。書き込み制御部16は、専用の手順を受信した場合、処理をステップS12に移行し、専用の手順を受信しない場合、通常のファームウェアの起動処理を実施するために、処理をステップS14に移行する。
First, in step S10, the
ステップS12において、書き込み制御部16は、専用の手順により認証処理等を行い、認証処理が成功したことに基づいてカウンタ12bのカウンタ値CNTbを指示された値に更新し、図3に示す処理を終了する。なお、カウンタ12bが更新された後、マザーボード100が搭載される装置は再起動される。これにより、カウンタ12bの更新後に図3に示す処理が再び、実施される。
In step S12, the
ステップS14において、バージョン検証部14は、起動するファームウェア22のバージョンをファームウェア格納領域20から読み出す。次に、ステップS16において、バージョン検証部14は、読み出したバージョンとカウンタ12a、カウンタ12bから読み出したカウンタ値CNTa、CNTbの差(CNTa-CNTb;チェック値)とを比較する。
In step S14, the
次に、ステップ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
ステップ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
ステップS24において、バージョン検証部14は、プロセッサ回路10にファームウェア22の起動を停止させる。また、バージョン検証部14は、エラーの発生と、マザーボード100が搭載される装置の起動を停止する指示とをプロセッサ回路10のエラー処理部等に出力し、図3に示す処理が終了する(起動の失敗)。これにより、不正なバージョンのファームウェア22が起動されることを抑止することができる。
In step S24, the
以上、この実施形態では、書き込み制御部16は、不揮発性メモリであるバージョン格納部12に設けられた2つのカウンタCNTa、CNTbの一方をバージョンを上げるときに更新し、他方をバージョンを下げるときに更新する。これにより、2つのカウンタCNTa、CNTbによりバージョンの上げ下げを複数回実施することができる。この結果、ファームウェア等のソフトウェアのバージョンを管理するメモリの容量を抑えることができる。
As described above, in this embodiment, the
カウンタ値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
バージョン検証部14は、起動するファームウェア22のバージョンが差(CNTa-CNTb)より小さい場合、ファームウェア22の起動処理のエラーを検出し、ファームウェア22の起動を停止させる。これにより、不正なバージョンのファームウェア22が起動されることを抑止することができる。
If the version of the
バージョンをロールバックするときに使用するカウンタ値CNTbは、認証処理等のカウンタ12bの書き込み用の専用の手順に基づいて更新されるため、ファームウェアのバージョン管理におけるセキュリティの担保と運用性とを両立することができる。ここで、運用性とは、例えば、ファームウェアに問題が発生したときに迅速にバージョンをロールバックして試験を実施できること、それにより、ファームウェアのデバッグ効率の低下が抑制できることなどを含む。これに対して、ファームウェアのロールバックを実施するために、装置の交換が発生する場合、迅速なロールバックは困難である。
The counter value CNTb used when rolling back the version is updated based on a dedicated procedure for writing to the
なお、マザーボード100が搭載されるサーバ等の装置は、ネットワークに接続されることが多く、ネットワークを介してサイバー攻撃を受けるおそれがある。このような場合にも、ファームウェア22の不正なロールバック等を抑止することができ、装置がコンピュータウイルスに感染するなどの不具合の発生の可能性を低減することができる。この結果、マザーボード100が搭載されるサーバ等の装置の信頼性が低下することを抑制することができる。
Note that a device such as a server on which the
図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
マザーボード100Aは、図1のプロセッサ回路10の代わりにプロセッサ回路10Aが搭載されることを除き、図1のマザーボード100の構成と同様である。プロセッサ回路10Aは、図1のバージョン格納部12の代わりにバージョン格納部12Aを有することを除き、図1のプロセッサ回路10の構成と同様である。
The
バージョン格納部12Aは、図1のカウンタ12bの代わりにカウンタ12cが搭載されることを除き、図1のバージョン格納部12と同様である。カウンタ12cは、カウンタ値CNTcを生成する。バージョン格納部12Aは、不揮発性メモリの一例である。カウンタ値CNTaを保持するカウンタ12aは、第1不揮発性メモリの一例である。カウンタ値CNTcを保持するカウンタ12cは、第2不揮発性メモリの一例である。
The
例えば、カウンタ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
カウンタ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
図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
この例では、バージョンを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
図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
この後、バージョン="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
図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
図6(B)は、図4のカウンタ12a(OTP)のビット数を96ビットとし、図4のカウンタ12c(フラッシュメモリ)のビット数を6ビットとしている。カウンタ12cは、カウンタ値CNTcが2進数で表現されるため、カウンタ12bで実現可能なロールバックと同等、あるいはそれ以上の"0"~"63"まで設定することができる。このため、メモリ資源を削減することが可能になる。
In FIG. 6B, the number of bits of the
以上、この実施形態においても、上述した実施形態と同様の効果を得ることができる。例えば、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
さらに、この実施形態では、カウンタ12cが、通常の2進カウンタとして動作可能なフラッシュメモリ等の不揮発性メモリを使用して設けられるため、図1のカウンタ12bに比べて、使用するビット数を節約することができる。この結果、カウンタ12cに使用するメモリ資源を、図1に比べてさらに低減することができる。
Furthermore, in this embodiment, the
図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
CPU10Bは、図1のバージョン格納部12の代わりにバージョン格納部12Bを有することを除き、図1のプロセッサ回路10と同様である。バージョン格納部12Bは、カウンタ値CNTbを生成するカウンタ12b(オンチップのOTPメモリ)のみが搭載される。バージョン格納部12Bは、不揮発性メモリの一例である。
The
この実施形態では、カウンタ12aは、セキュリティ機能を含むセキュリティチップであるTPM30に搭載される。このため、バージョン検証部14は、ファームウェア格納領域20に保持されているファームウェア22の起動時に、TMP30内のカウンタ12aに保持されたカウンタ値CNTaとバージョン格納部12のカウンタ12bに保持されたカウンタ値CNTbとを読み出して比較する。図7のCPU10Bによるファームウェアの更新動作は、図2および図3と同じである。
In this embodiment, the
図7に示すように、例えば、TPM30がマザーボード100Bに搭載済みの場合、TPM30を利用してカウンタ12aを実現できるため、カウンタ12aを設ける資源を削減することができる。このように、カウンタ12a(OTP)をバージョン検証部14からアクセス可能な任意の場所に搭載することができるため、ファームウェア22のバージョンの検証方法をマザーボード100Bに組み込む障壁を低くすることができる。
As shown in FIG. 7, for example, if the
以上、この実施形態においても、上述した実施形態と同様の効果を得ることができる。例えば、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
さらに、この実施形態では、TPM30がマザーボード100Bに搭載済みの場合、TPM30を利用してカウンタ12aを実現でき、カウンタ12aを設ける資源を削減することができる。カウンタ12a(OTP)をバージョン検証部14からアクセス可能な任意の場所に搭載することができるため、ファームウェア22のバージョンの検証方法をマザーボード100Bに組み込む障壁を低くすることができる。
Furthermore, in this embodiment, if the
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずである。したがって、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。 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,
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つ上げるときに、前記第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または請求項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.
請求項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不揮発性メモリは、複数のビットの各々の値を一度のみ書き込み可能であり、
前記第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または請求項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カウンタ値を更新して前記第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カウンタ値を更新して前記第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; .
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) |
-
2022
- 2022-07-06 JP JP2022108795A patent/JP2024007617A/en active Pending
-
2023
- 2023-03-23 US US18/188,792 patent/US20240012640A1/en active Pending
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 |