JP2021179982A - シリコンデバイスファームウェア上のロールバック攻撃を防止するセキュリティシステム、および、方法 - Google Patents
シリコンデバイスファームウェア上のロールバック攻撃を防止するセキュリティシステム、および、方法 Download PDFInfo
- Publication number
- JP2021179982A JP2021179982A JP2021075912A JP2021075912A JP2021179982A JP 2021179982 A JP2021179982 A JP 2021179982A JP 2021075912 A JP2021075912 A JP 2021075912A JP 2021075912 A JP2021075912 A JP 2021075912A JP 2021179982 A JP2021179982 A JP 2021179982A
- Authority
- JP
- Japan
- Prior art keywords
- nvm
- active
- version
- recovery
- firmware
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 86
- 229910052710 silicon Inorganic materials 0.000 title claims description 13
- 239000010703 silicon Substances 0.000 title claims description 13
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 title description 11
- 238000011084 recovery Methods 0.000 claims abstract description 117
- 230000015654 memory Effects 0.000 claims description 65
- 238000012360 testing method Methods 0.000 claims description 18
- 238000003860 storage Methods 0.000 claims description 17
- 230000008569 process Effects 0.000 claims description 14
- 238000013475 authorization Methods 0.000 claims description 3
- 230000000052 comparative effect Effects 0.000 claims description 2
- 230000000694 effects Effects 0.000 claims 1
- 239000004065 semiconductor Substances 0.000 abstract description 3
- 230000006870 function Effects 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 230000002265 prevention Effects 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 235000019800 disodium phosphate Nutrition 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 206010000210 abortion Diseases 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000001066 destructive effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000002427 irreversible effect Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000004886 process control Methods 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 230000000630 rising effect Effects 0.000 description 1
- 238000005096 rolling process Methods 0.000 description 1
- 230000035945 sensitivity Effects 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- 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
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/14—Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/24—Resetting means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1438—Restarting or rejuvenating
-
- 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/55—Detecting local intrusion or implementing counter-measures
- G06F21/554—Detecting local intrusion or implementing counter-measures involving event detection and direct action
-
- 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/572—Secure firmware programming, e.g. of basic input output system [BIOS]
-
- 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/577—Assessing vulnerabilities and evaluating computer system security
-
- 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/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/78—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
- G06F21/79—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Technology Law (AREA)
- Multimedia (AREA)
- Quality & Reliability (AREA)
- Stored Programmes (AREA)
- Storage Device Security (AREA)
- Supply And Distribution Of Alternating Current (AREA)
Abstract
Description
この技術システムのその他の状態は以下で記述されている:
US20140250290A1/en、
WO2014131652A1/en
US20170308705A1/en
https://www.intel.com/content/dam/www/public/us/en/documents/guides/
bootloader-security-features-programmers-guide.pdf
https://www.maximintegrated.com/en/design/technical-documents/app-notes/5/5042.html.
FW(ファームウェア)イメージ - 暗号化キー(たとえば、RSA、あるいは、ECC)で署名されるブート可能なFW。
用語"イメージ"は、所定のバージョン番号と関連付けられたファームウェアコードの状態を含むことを意図する。アップグレードにおいて、バージョン番号nと関連付けられた所定の"イメージ"は、バージョン番号n+1と関連する、後にインストールされる"イメージ"により代替される。アップグレードは、現在インストールされているバージョンより以降、ファームウェアイメージをインストールする動作を含む。
ブートアップ(Boot up) -チップの通電(あるいは、リセット)時から、ブートROMコードが、ファームウェアの実行を許可するまで。
ファームウェアバージョン(FWV) -一識別子、一般的に、増分数量計数器(逓増計数)で、特定バージョンのファームウェアに一意に割り当てられ、たとえば、1.0、あるいは、53.37で、一般的に、“メジャー番号”と“マイナー番号”を含み、表記法で、一ピリオド、あるいは、点で区別される。
アクティブNVM -ブートFWイメージのメインストレージで、このメモリは、ブート後、読み取り、書き込み可能になる。
リカバリーNVM -ロールバック攻撃からFWを保護するメモリ。このメモリは、ブート後、読み書き不可である。
メジャー番号 -ファームウェアバージョン(別称、メジャーアップデート)、ある実施形態は、ロールバック保護の対象を提供する。一般的に、各NVMはこのような番号を保存する(“リカバリーメジャー”)。
マイナー番号 -マイナー番号が用いられて、ファームウェアのアップデートに対するセキュリティの敏感度が低いことを示し、弱いロールバック保護の提供には十分である。たとえば、OTP番号により記録されない(“マイナーアップデート”)。各NVMはこのような番号を記録する(“リカバリーマイナー”)。
ヒューズビットアレイ(Fuse Bit Array) -OTPビットの一アレイ、各ビットは、単一のメジャー番号に対応する。
OTP番号 -プログラム化された最高のヒューズアレイビットは、最高メジャー番号に対応する。
ヒューズアレイ:OTP内の一領域が、最新のメジャー番号を保存するために保留される。
ファームウェアアップグレードバージョニング -特定バージョン名、あるいは、特定バージョン番号を、アップグレードされるファームウェアの個別特定状態に指定する。番号が用いられるとき、バージョン番号は、一般的に、メジャー、および、マイナー番号を有する。メジャー、および、マイナー番号は、一般的に、それぞれ、逓増順序で割り当てられて、以降のバージョンが、以前のバージョンよりも大きいメジャー番号、および/または、マイナー番号を有する。
不揮発性メモリ(NVM):一旦、プログラム化されると、メモリは、電力を失っても、その値を維持する。
OTP:ワンタイムプログラマブルメモリ。一種の不揮発性メモリ(NVM)で、データを一度だけ、メモリに書き込むことを許可する。データは一回だけ書き込むことができるので、OTPデバイスは、悪意のあるソフトウェアアップデートによりハッキングされない。
フラッシュメモリ:一種の消去可能な不揮発ストレージ、あるいは、メモリ(別称、NVM)。一般的に、フラッシュメモリは、マイクロプロセッサのプログラムを保存するのに用いられる。フラッシュは消去可能なので、プログラムされたアプリケーションは、除去、および、代替、あるいは、アップデート可能である。これは、装置が再プログラム化可能で、交換の必要がなく、開発コストを減少させることができることを意味する。また、フラッシュメモリは、フィールド内ソフトウェアアップデートをサポートする。
SPIインターフェース、あるいは、シリアルペリフェラルインターフェース:一インターフェースの非制限範例であり、遅い、あるいは、序列の周辺設備をインターフェースで接続し、簡単には、低コストで、チップ選択ラインを有し、アドレススキームではない。SPIは、シリアルプロトコルで、各種デバイスと通信することができ、シリアルフラッシュデバイスを有する。SPIインターフェースは、廉価な組込コントローラー代替品より速くできる(たとえば、133MHz)。あるSPIインターフェースは2ビット、および/または、4ビットデータバスをサポートし、シリアルインターフェースだけで達成されるものより高い転送速度を達成する。
SPIフラッシュ:外部不揮発性メモリを組み立てる費用効果が高い方法は、インターフェースで接続されてSPIをカバーするフラッシュモジュールを有する。低コストで、小さい占有空間なので、SPIフラッシュモジュールは優れている。たとえば、1個の32MBのチップは、数ドルしかかからない。
外部:回路板上で実体交換することができる。
チップ選択(CS)、別称、スレーブ選択(SS):デジタル電子装置中の制御線は、単一のコンピュータバスに接続される一組の集積回路(チップ)中から一サブセット(1、あるいは、さらに多く)を選択する。シリアルペリフェラルインターフェースバス(SPIバス)は、チップ/スレーブ選択線を用いるバスの例である。
(i)チップは、(a)ROMコード、および、(b)プログラム可能なヒューズアレイメモリを有する。
(a)ROMコードは、一般的に、チップシリコンに集積されるブートローダー(別称、ブートROMコード)を有し、ブートROMコードは、チップがオンになる、あるいは、リセットされるたびに作動する;および/または、
(b)プログラム可能なヒューズアレイメモリ(たとえば、ワンタイムプログラマブル(OTP)メモリ)は、メモリ中に、バージョン識別子(たとえば、バージョン番号)を保存する。
(ii)第一(別称、アクティブ)、および/または、第二(別称、リカバリー)不揮発性メモリ(別称、NVM)は、メモリ中のブータブルファームウェア(別称、ブート時にロードされるファームウェア)バージョンの第一、および/または、第二複製がそれぞれ保存される;
第一識別子は、一般的に、アクティブNVM中に保存され、この識別子は、保存時、前記バージョンを一意に識別し、この識別子の第一複製はアクティブNVM中に保存され、第一識別子は、一般的に、少なくとも一つのアクティブメジャー番号、および/または、アクティブマイナー番号を有し、両者は、一般的に、プライベートキーで署名される;
第二識別子は、たとえば、リカバリーNVM中に保存され、この識別子は、保存時、通常、前記バージョンを一意に識別し、識別子の第二複製は、一般的に、リカバリーNVM中に保存され、第二識別子は、一般的に、少なくとも一つのリカバリーメジャー番号、および/または、リカバリーマイナー番号を有し、両者は、プライベートキーで署名されてもよい;および
(iii)ハードウェアデバイスは、一般的に、第一指令にしたがい、第一指令は、ブートROMコードにより、ブートアップ後提供されて、たとえば、次のシステムリセットまでロックし(別称、少なくとも、書き込みを無効にする、書込保護を提供する)、少なくともリカバリーNVM(および、任意で、OTP)は、少なくともリカバリーNVM(および、任意で、OTP)が書き込み可能ではない(書き込みにアクセス可能ではない)ことを確保することを含み、一般的に、ブートローダーのブートを除外する、および/または、第二指令に従い、第二指令は、ブートROMコードにより提供され、一般的に、次のシステムリセット時、少なくともリカバリーNVM(および、任意で、OTP)の書き込み保護を解除し、これにより、一般的に、たとえば、新しいバージョンのファームウェアがすでに有効になると、古いバージョンのファームウェアがブートされるのを防止することができるシステムを提供する。
バージョンフィールドは、二個の番号、あるいは、数量により実施され、これらの番号、および、数量は、フラッシュ中でプログラムされる:OTPバージョン(OTP_VER)とフラッシュバージョン(FLASH_VER)中でプログラム化される。
逓増するバージョン番号がOTPバージョン(OTP_VER)である場合、OTP空間中のバージョンも同様に逓増し、且つ、Flash #1中のバージョンも、それにしたがってアップデートされる。
逓増するバージョン番号がフラッシュバージョン(FLASH_VER)である場合、Flash #1中のFLASH_VERだけがアップデートされ、OTPバージョンはアップデートされない。
このロジックは、このファームウェアアップデートが、任意の適当な位置、たとえば、セキュアコード(たとえば、ROMコード)中、および、ブートヒエラルキー全体に沿って保存されることを確保する。一般的に、ROMコードは、ユーザープロセスにおいて、最高のセキュリティレベルにあり、信頼性テストは、最低レベルのセキュリティレベルにある。
a.チップが通電するとき作動するブートローダーROMコードを有する埋め込みチップ
b.ブート時、ファームウェアを保存する二個の不揮発性メモリ(NVM)デバイス
c.チップに集積されて、バージョン番号ヒューズを保存するワンタイムプログラマブル(OTP)、あるいは、“ヒューズ”メモリ
d.NVMの一つの読み書きを無効にするハードウェア(HW)デバイス、あるいは、方法
第1実施形態:ロールバック攻撃から保護するコンピュータ制御システムで、ロールバック攻撃は、システムのファームウェアが変化するとき発生し、これにより、ファームウェアのバージョンを定義し、本システムは、以下の全て、あるいは、任意の集合を有する:
(i)チップは、(a)ROMコード、および、(b)プログラム可能なヒューズアレイメモリを有する。
(a)ROMコードは、一般的に、チップシリコンに集積されるブートローダー(別称、ブートROMコード)を有し、ブートROMコードは、チップがオンになる、あるいは、リセットされるときはいつでも作動する;および、
(b)プログラム可能なヒューズアレイメモリ(たとえば、ワンタイムプログラマブル(OTP)メモリ)は、メモリ中に、バージョン識別子(たとえば、バージョン番号)を保存する;
(ii)第一(別称、アクティブ)、および/または、第二(別称、リカバリー)不揮発性メモリ(別称、NVM)は、メモリ中のブータブルファームウェア(別称、ブート時にロードされるファームウェア)バージョンの第一および第二複製をそれぞれ保存する;
第一識別子は、アクティブNVM中に保存され、この識別子は、保存時、前記バージョンを一意に識別し、この識別子の第一複製はアクティブNVM中に保存され、第一識別子は、少なくとも一つのアクティブメジャー番号およびアクティブマイナー番号を有し、両者は、プライベートキーで署名される;
第二識別子は、リカバリーNVM中に保存され、識別子は、保存時、前記バージョンを一意に識別し、識別子の第二複製は、リカバリーNVM中に保存され、第二識別子は、少なくとも一つのリカバリーメジャー番号およびリカバリーマイナー番号を有し、両者は、プライベートキーで署名される;および
(iii)ハードウェアデバイスは、一般的に、第一指令にしたがい、第一指令は、ブートROMコードにより、ブートアップ後提供されて、次のシステムリセットまでロックし(別称、少なくとも、書き込みを無効にする、書込保護を提供する)、少なくともリカバリーNVM(および、任意で、OTP)は、少なくともリカバリーNVM(および、任意で、OTP)が書き込み可能ではない(書き込みにアクセス可能ではない)ことを確保することを含み、一般的に、ブートローダーを除外し、および、第二指令に従い、第二指令は、ブートROMコードにより提供され、次のシステムリセット時、少なくともリカバリーNVM(および、任意で、OTP)の書き込み保護を解除し、これにより、新しいバージョンのファームウェアが有効になると、古いバージョンのファームウェアがブートされるのを防止することができるシステムを提供する。
ファームウェアイメージは、両バージョンと関連し、且つ、
両識別子はプライベートキーで署名され、且つ、
ブートROMコードが設定されて、少なくとも一つのファームウェアイメージを認証する、および/または、第一、および/または、第二識別子を認証する。
(i)第1実施形態の全て、あるいは、任意の集合を有するシステムを提供する;
(ii)第一バージョンのブータブルファームウェア(別称、第一ファームウェアイメージ)の複製を、アクティブ、および、リカバリーNVM中に保存する;
少なくとも一つの第一バージョンのメジャー番号の第一、および、第二複製を、それぞれ、第一、および、第二不揮発性メモリデバイス中に保存する;および
OTPメモリ中の少なくとも一つのビットをプログラム化して、メジャー番号と等しく(適合)する;
(iii)少なくとも一回、ファームウェアのマイナーアップデートを実行し、アクティブNVM中に保存されるブータブルファームウェアのバージョンを、ブータブルファームウェア新しい"マイナー"バージョンで代替すること、および、アクティブNVM中に保存される識別子を、高いマイナー番号を有する新しい識別子で代替することを有する;および
(iv)ブートを必要とする少なくとも一つのリセット後、
a.ブートローダーに命令する:
すくなくとも、アクティブNVMのコンテンツが有効であるか、アクティブNVM中の識別子が、OTP番号より大きいか判断する;および
アクティブNVM中のメジャー番号がOTP番号より低い場合、ブートを中止する、および、
b.アクティブNVM中の識別子(別称、アクティブマイナー)が、リカバリーNVM中の識別子(別称、リカバリーマイナー)より大きい場合のみ、それぞれ、下記からなる操作b1、b2を実行する:
操作b1. ブータブルファームウェアの新しいバージョンが、リカバリーNVM中に現在書き込まれるブータブルファームウェアのバージョンに書き込まれる;および
操作b2. リカバリーNVM中の識別子がアップデートされ、アクティブNVM中の識別子の値に等しくなる。
OTP-Number(OTP番号)= Starting-Number(開始番号) + Counter(計数),
複数のビットは、nビットの一アレイを有し、これにより、それぞれ、nビットに関連するnビットインデックスを定義し、nビットは、値 "0"を有するビットの("第一")集合、および、1にヒューズされたビットの("第二")集合を有し、計数は、1にヒューズされたnビットの("第二")集合に関連する数個のビットインデックス中から、最高インデックスとして決定される。
例えば、値"75"(二進数、あるいは、十進数として、あるいは、その他の任意の効果的な方法を使用)が、OTP中の開始番号領域中に保存される:
たとえば、ブートローダーによりテストし、アクティブNVM中の有効な内容を解明する。
認証後、認証コードは、NVMからRAMにロードされる。
少なくとも一度、ファームウェアのメジャーアップデートを実行し、アクティブNVM中に保存されるブータブルファームウェアのバージョンを、ブータブルファームウェアの新しい"メジャー"バージョンで代替する、および、アクティブNVM中に保存される識別子を、高いメジャー番号を有する新しい識別子で代替すること;および
(vi)ブートが必要な少なくとも一つのリセット後、
a.ブートローダーに命令し:
アクティブNVM中のコンテンツの有効性をテストして、
アクティブNVMのコンテンツが有効でない場合、ブートを中止し、よって、ブートの失敗を生じ、
少なくとも、アクティブNVMのコンテンツが有効である場合、アクティブNVM中の識別子が、OTP番号より大きいか否か判断する;および、
アクティブNVM中のメジャー番号がOTP番号より小さい場合、ブートを中止し、および、
b.アクティブNVM中の識別子がOTP番号より大きい場合だけ、それぞれ、下記からなる操作b4、b5、b6を実行する:
操作b4. ブータブルファームウェアの新しいバージョンが、リカバリーNVM中に現在保存されるブータブルファームウェアのバージョンに書き込まれる;
操作b5. リカバリーNVM中の識別子がアップデートされ、アクティブNVM中の識別子の値に等しくなる;および
操作b6. ヒューズアレイ中のフリービットが、アクティブNVM中の識別子の値にプログラムされて、OTP番号がアクティブNVM中の識別子に等しく、さらに、リカバリーNVMの識別子に等しくなるように確保する、工程を有する。
工程401:第一ファームウェアイメージは、アクティブ、および、リカバリーNVM両方に、完全に同じように保存される。
OTP番号は、両NVM中に保存されるメジャー番号(アクティブバージョン番号=1.2,リカバリーバージョン番号=1.2,OTP番号=1)に適合する。
工程402:新しいファームウェアイメージはアクティブNVM(高いメジャー番号を有する、(2.0,1.2,1))にロードされる。
工程403:リセット後、ブートローダーは、アクティブNVM内容の有効性と信頼性を認証、および、テストする(ファームウェアが有効でない場合、ブートローダーは中止)。
工程404:ブートローダーが、アクティブメジャーがOTP番号より大きいと判断すると、新しいファームウェアイメージは、リカバリーNVM中の古いファームウェアイメージ上に書き込まれる。(2.0,2.0,1)。
工程405:ヒューズアレイ中の別のビットがプログラムされ、この時、OTP番号は、アクティブメジャー、および、リカバリーメジャー(2.0,2.0,2)と適合する。
工程406:リカバリーNVM、および、ヒューズアレイは、次のシステムリセットまでロックされる。メジャーアップデートが完了する。
工程501:第一ファームウェアイメージは、アクティブ、および、リカバリーNVM両方に、完全に同じように保存される。
工程502:OTP番号は、両NVM中に保存されるメジャー番号(アクティブバージョン番号=1.2,リカバリーバージョン番号=1.2,OTP番号=1)と適合する。
工程503:新しいファームウェアイメージは、アクティブNVM(高いマイナー番号を有する,(1.3,1.2,1))にロードされる。
工程504:リセット後、ブートローダーは、アクティブNVM内容の有効性と信頼性を認証、および、テストする(ファームウェアが有効でない場合、ブートローダーは中止)。
工程505:ブートローダーが、アクティブマイナーが、リカバリーマイナーより大きいと判断すると、新しいファームウェアイメージは、リカバリーNVM中の古いファームウェアイメージに書き込まれる。(1.3,1.3,1)。この場合、OTP番号は変化しない。
工程506:リカバリーNVM、および、ヒューズアレイは、次のシステムリセットまでロックされる。マイナーアップデートが完了する。
外部メモリデバイス中の二個のバージョンフィールドの提供は、古いファームウェアのロールバック攻撃を防止する。攻撃者はファームウェアイメージを改ざんすることができないので、たとえば、ファームウェアイメージに対する任意の変化は、RSA署名有効性を破壊するので、記述される抗ロールバックソリューションは特に優越している。リカバリーNVM上の(たとえば、ファームウェアの)保護は、アクティブNVMファームウェアイメージ上の任意の非実体攻撃を防止する。攻撃者が、古いサイン済みのファームウェアイメージで、ファームウェアイメージを完全に上書きしたくても、リカバリーNVMファームウェアイメージ、および、その大きいバージョン番号は、ブートローダーに、これが確実に、ロールバック攻撃であることを告知する。攻撃者が、古いファームウェアイメージ(元よりも低いバージョン番号を含む)で、物理的に、両NVM(アクティブ、および、リカバリー)を代替する事象において、OTP番号は、ブートローダーに、これが確実に、ロールバック攻撃であることを告知する。マイナーアップデートだけが実行された場合、上記のような両NVMの物理的代替は、たとえば、脅威を避けることができない。よって、OTPフィールドの提供は、(少なくとも)別の脅威を防止することができ、たとえば、新しいデバイス両方中、古いバージョンファームウェアにより、二個の外部メモリを代替することにより、二十のロールバック攻撃を実行する。
Claims (29)
- ロールバック攻撃を防止するコンピュータ制御システムであって、前記攻撃は、前記システムのファームウェアが変化するとき発生し、よって、前記ファームウェアのバージョンを定義し、前記システムは、(i)チップ、(ii)第一、および、第二不揮発性メモリ、および、(iii)ハードウェアデバイス、を有し、
(i)前記チップは、
a.前記チップシリコンに集積されるブートローダー(別称、ブートROMコード)を有し、前記ブートROMコードは、前記チップがオンになるときはいつでも作動するROMコード、および、
b.バージョン識別子(たとえば、バージョン番号)を保存するプログラム可能なヒューズアレイメモリ(たとえば、ワンタイムプログラマブル(OTP)メモリ)、を有し、
(ii)前記第一(別称、アクティブ)、および、第二(別称、リカバリー)不揮発性メモリ(別称、NVM)は、それぞれ、ブータブルファームウェア(別称、ブート上でロードされるファームウェア)のバージョンの第一、および、第二複製を保存し、
第一識別子は前記アクティブNVM中に保存され、且つ、保存時に、前記バージョンを一意に識別し、前記特別バージョンの第一複製は前記アクティブNVM中に保存され、前記第一識別子は、少なくとも一つのアクティブメジャー番号およびアクティブマイナー番号を有し、共に、プライベートキーで署名され、
第二識別子は前記リカバリーNVM中に保存され、且つ、保存時に、前記バージョンを一意に識別し、前記バージョンの前記第二複製は前記リカバリーNVM中に保存され、前記第二識別子は、少なくとも一つのリカバリーメジャー番号およびリカバリーマイナー番号を有し、共に、前記プライベートキーで署名され、
(iii)前記ハードウェアデバイスは、ブートアップ後(ブートローダー完了時)、前記ブートROMコードにより提供される第一指令にしたがって、次のシステムリセットまで、少なくとも前記リカバリーNVMをロックし(少なくとも書き込みを無効にする、書込保護を提供する)、前記リカバリーNVMのロックは、前記ブートローダー以外の少なくとも前記リカバリーNVMが書き込み可能ではない(書き込みにアクセス可能ではない)ことを確保するとともに、次のシステムリセット時、前記ブートROMコードにより提供される第二指令に従い、少なくとも前記リカバリーNVMの書き込み保護を解除し、
これにより、前記ファームウェアの新しいバージョンがすでに有効になると、前記ファームウェアの古いバージョンがブートされるのを防止し、
前記の新しいバージョンと古いバージョンに関連するファームウェアイメージ、および、前記第一、第二識別子を、前記プライベートキーで署名し、
前記ブートROMコードが設定されて、少なくとも一つのファームウェアイメージを認証するとともに、前記第一、および、前記第二識別子を認証することを特徴とするロールバック攻撃からシステムを保護する方法。 - ロールバック攻撃からシステムを保護する方法であって、前記攻撃は、前記システム中のファームウェアが変化するとき発生し、よって、バージョンを定義し、本方法は、以下の(I)〜(IV)の工程を有し、
(I)システムを提供する工程:
(i)チップはaとbを有し、
a.ROMコード:前記チップシリコンに集積されるブートローダー(別称、ブートROMコード)を有し、前記ブートROMコードは、前記チップがオンになるときはいつでも作動する;および、
b.プログラム可能なヒューズアレイメモリ(たとえば、ワンタイムプログラマブル(OTP)メモリ):バージョン識別子(たとえば、バージョン番号)を保存する;
(ii)第一(別称、アクティブ)、および、第二(別称、リカバリー)不揮発性メモリ(別称、NVM):ブータブルファームウェア(別称、ブート時ロードされるファームウェア)のバージョンの第一、および、第二複製がそれぞれ保存される;
第一識別子は前記アクティブNVM中に保存され、且つ、保存時に、前記バージョンを一意に識別し、前記バージョンの前記第一複製は前記アクティブNVM中に保存され、前記第一識別子は、少なくとも一つのアクティブメジャー番号およびアクティブマイナー番号を有し、両者は、プライベートキーで署名され、
第二識別子は前記リカバリーNVM中に保存され、且つ、保存時に、前記バージョンを一意に識別し、前記バージョンの前記第二複製は前記リカバリーNVM中に保存され、前記第二識別子は、少なくとも一つのリカバリーメジャー番号およびリカバリーマイナー番号を有し、両者は、前記プライベートキーで署名され、
(iii)ハードウェアデバイスは、ブートアップ後(ブートローダー完了時)、前記ブートROMコードにより提供される第一指令にしたがって、少なくとも前記リカバリーNVMを次のシステムリセットまでロックし(別称、少なくとも、書き込みを無効にする、書込保護を提供する)、前記リカバリーNVMのロックは、前記ブートローダー以外の少なくとも前記リカバリーNVMが書き込み可能ではない(書き込みにアクセス可能ではない)ことを確保するとともに、前記ブートローダー以外に、前記ブートROMコードにより提供される第二指令は、次のシステムリセット時、少なくとも前記リカバリーNVMの書き込み保護を解除し、これにより、前記新しいバージョンの前記ファームウェアがすでに有効になると、古いバージョンの前記ファームウェアがブートされるのを防止することができ、
(II)第一バージョンのブータブルファームウェアの複製(別称、第一ファームウェアイメージ)を、前記アクティブ、および、リカバリーNVM中に保存する工程:
前記第一バージョンの少なくとも一つのメジャー番号の第一、および、第二複製を、それぞれ、前記第一、および、第二不揮発性メモリデバイス中に保存し;および
前記OTPメモリの少なくとも一つのビットを前記メジャー番号に等しくなるように(適合するように)プログラムし;
(III)少なくとも一度、前記ファームウェアのマイナーアップデートを実行し、前記アクティブNVM中に保存されるブータブルファームウェアの前記バージョンを、前記ブータブルファームウェアの新しい"マイナー"バージョンで代替し、前記アクティブNVM中に保存される前記識別子を、高いマイナー番号を有する新しい識別子で代替する工程;および、
(IV)ブートが必要な少なくとも一つのリセット後、以下を実行する工程:
a.前記ブートローダーに命令し:
少なくとも、前記アクティブNVMのコンテンツが有効である場合、前記アクティブNVM中の前記識別子が、前記OTP番号より大きいか否か判断し;および
アクティブNVM中のメジャー番号が、前記OTP番号より低い場合、ブートを中止し、
b.前記アクティブNVM(別称、アクティブマイナー)中の前記識別子が、前記リカバリーNVM(別称、リカバリーマイナー)中の前記識別子より大きい場合のみ、それぞれ、操作b1、b2を実行する:
操作b1. 前記ブータブルファームウェアの前記新しいバージョンが、現在前記リカバリーNVM中に保存される前記ブータブルファームウェアの前記バージョンに書き込まれ;
操作b2. 前記リカバリーNVM中の前記識別子がアップデートされて、前記アクティブNVM中の前記識別子の前記値に等しくなる
ことを特徴とする方法。 - 前記OTPメモリは複数のヒューズを有し、これらのヒューズは、バージョン番号を表示することを特徴とする請求項1に記載のシステム。
- 前記OTP(別称、OTPビット)中の複数のビットが用いられて、OTP番号を表し、
OTP-Number = Starting-Number + Counter、
前記複数のビットは一個のnビットのアレイを有し、これにより、nビットインデックスを定義し、それぞれ、前記nビットと関連し、前記nビットは、値"0"を有するビットの("第一")集合、および、1にヒューズされたビットの("第二")集合を有し、計数は、1にヒューズされた前記nビットの("第二")集合に関連する数個のビットインデックス中から、最高インデックスとして決定されることを特徴とする請求項1に記載のシステム。 - 前記ハードウェアデバイスは、前記アクティブNVMの読み書きを無効にしないので、前記アクティブNVMはブート後、読み書き可能であることを特徴とする請求項1に記載のシステム。
- 前記第一ファームウェアイメージが、前記アクティブ、および、リカバリーNVM中に保存されるとき、前記OTP番号は、両NVM中に保存される前記メジャー番号と等しいことを特徴とする請求項4に記載のシステム。
- 前記ハードウェアデバイスによる前記リカバリーNVMのロックは、さらに、前記リカバリーNVMからの読み取りを無効にすることを有し、前記リカバリーNVMが読み取り可能ではないことを確保することを有することを特徴とする請求項2に記載の方法。
- 前記リカバリーNVMのロックは、前記リカバリーNVMを切断する工程を有することを特徴とする請求項2に記載の方法。
- 前記ハードウェアデバイスによる前記OTPのロックは、さらに、前記リカバリーNVMからの読み取りを無効にする工程を有し、前記OTPが可読でないことを確保する工程を有することを特徴とする請求項2に記載の方法。
- それぞれ、前記アクティブ、および、リカバリーNVM中に保存されるブータブルファームウェアの前記第一バージョン、および、少なくとも前記メジャー番号は、パブリックキーで共に署名され、これにより、署名を生成することを特徴とする請求項2に記載の方法。
- 前記ブートローダーの前記アクティブNVMのコンテンツに対する有効性のテストは、前記アクティブNVMのコンテンツと前記署名された暗号化認証(cryptographic authentication)を有することを特徴とする請求項10に記載の方法。
- 前記認証は、前記プライベートキーとペアであるパブリックキーを使用し、前記プライベートキーではなく、前記パブリックキーが前記OTP中に保存されることを特徴とする請求項11に記載の方法。
- 前記ブートローダーの前記アクティブNVMのコンテンツに対する有効性のテストは、アクティブNVM中のメジャー番号が、前記リカバリーNVM中の前記メジャー番号に等しいか、それより高くなるように確保することを有することを特徴とする請求項2に記載の方法。
- 前記ブートローダーの前記アクティブNVMのコンテンツに対する有効性のテストは、少なくとも一つのシステムレベルテストから指示を提供して、少なくとも一つの所定基準を確保することを有することを特徴とする請求項2に記載の方法。
- 前記基準は、前記新しいバージョンの前記ブータブルファームウェアが安定してブートされるという判定を有することを特徴とする請求項14に記載のシステム。
- 前記アクティブNVM中のメジャー番号が前記OTP番号に等しい;且つ、
前記ブートローダーにより、前記アクティブNVM中の有効な内容を検証する時かつその時に限り、
前記ブートローダーのブートが成功することを特徴とする請求項2に記載の方法。 - トラストチェーン(chain of trust)が、認証コードを用いて、少なくとも一回、繰り返して実行されて、追加メジャー、および/または、マイナーバージョン番号を有する追加コードレベルを認証し、さらに別のコードレベルを認証することができることを特徴とする請求項2に記載の方法。
- 前記アクティブ、および、リカバリーNVMは、二個の別々のメモリデバイスを有することを特徴とする請求項1に記載のシステム。
- 前記アクティブ、および、リカバリーNVMは、単一フラッシュデバイス上で、二個のメモリ範囲を有することを特徴とする請求項1に記載のシステム。
- 前記開始番号は書き込み保護されることを特徴とする請求項4に記載のシステム。
- さらに、前記アクティブNVMのコンテンツが有効でない場合、前記ブートローダーに、前記アクティブNVMのコンテンツの有効性をテストするように命令するとともに中止させ、これにより、前記ブートの失敗を生じることを有することを特徴とする請求項2に記載の方法。
- 前記ブートローダーが、前記アクティブNVM中の前記識別子が前記OTP番号より大きいか否か、あるいは、前記NVM、あるいは、前記アクティブNVM内容が有効であるかを判断する前、前記ブートローダーは、前記アクティブNVMのコンテンツの有効性をテストすることを特徴とする請求項21に記載の方法。
- 前記操作b1、b2は、認証コードにより実行されることを特徴とする請求項2に記載の方法。
- 前記操作b1、b2は、前記ブートローダーにより実行されることを特徴とする請求項2に記載の方法。
- 前記方法は、さらに、少なくとも一回、前記ファームウェアのメジャーアップデートを実行する工程を有し、前記アクティブNVM中に保存されるブータブルファームウェアの前記バージョンを、前記ブータブルファームウェアの新しい"メジャー"バージョンで代替するとともに、前記アクティブNVM中に保存される前記識別子を、高いメジャー番号を有する新しい識別子で代替することを有し;
(vi)ブートが必要な少なくとも一つのリセット後、
a.前記ブートローダーに命令し:
前記アクティブNVMのコンテンツの有効性をテストして、
前記アクティブNVMのコンテンツが有効でない場合、ブートを中止し、これにより、ブートの失敗を生じ、
少なくとも、前記アクティブNVMのコンテンツが有効である場合、前記アクティブNVM中の識別子が、前記OTP番号より大きいか否か判断する;および、
前記アクティブNVM中のメジャー番号が前記OTP番号より小さい場合、ブートを中止し、および、
b.前記アクティブNVM中の識別子が前記OTP番号より大きい場合だけ、それぞれ、下記からなる操作b4、b5、b6を実行する:
操作b4. 前記ブータブルファームウェアの新しいバージョンが、前記リカバリーNVM中に現在保存されるブータブルファームウェアのバージョンに書き込まれる;
操作b5. 前記リカバリーNVM中の前記第二識別子がアップデートされ、前記アクティブNVM中の識別子の値に等しくなる;および
操作b6. 前記ヒューズアレイ中のフリービットが、前記アクティブNVM中の識別子の値にプログラムされて、前記OTP番号が前記アクティブNVM中の識別子に等しく、さらに、前記リカバリーNVMの識別子に等しくなるように確保する、工程を有することを特徴とする請求項2に記載の方法。 - 前記操作b4、b5、b6は、認証コードにより実行されることを特徴とする請求項25に記載の方法。
- 前記操作b4、b5、b6は、前記ブートローダーにより実行されることを特徴とする請求項25に記載の方法。
- 前記OTP番号は、前記アクティブメジャー、および、前記リカバリーメジャー番号のそれぞれに、比較参照として用いられることを特徴とする請求項4に記載の方法。
- 前記認証は、前記プライベートキーと一対のパブリックキーを使用し、前記プライベートキーではなく、前記パブリックキーが、前記ROM中に保存されることを特徴とする請求項11に記載の方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/874,241 US11216597B2 (en) | 2020-05-14 | 2020-05-14 | Security system and method for preventing rollback attacks on silicon device firmware |
US16/874241 | 2020-05-14 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2021179982A true JP2021179982A (ja) | 2021-11-18 |
JP7113115B2 JP7113115B2 (ja) | 2022-08-04 |
Family
ID=78510326
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2021075912A Active JP7113115B2 (ja) | 2020-05-14 | 2021-04-28 | シリコンデバイスファームウェア上のロールバック攻撃を防止するセキュリティシステム、および、方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11216597B2 (ja) |
JP (1) | JP7113115B2 (ja) |
CN (1) | CN113672878B (ja) |
TW (1) | TWI775346B (ja) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20230109011A1 (en) * | 2021-10-04 | 2023-04-06 | Hewlett-Packard Development Company, L.P. | Placing a device in secure mode |
US20230198775A1 (en) * | 2021-12-17 | 2023-06-22 | Micron Technology, Inc. | Memory device with secure boot updates and self-recovery |
TWI793998B (zh) * | 2022-01-27 | 2023-02-21 | 飛捷科技股份有限公司 | 用於控制系統的韌體架構及開機方法 |
KR20230139262A (ko) * | 2022-03-25 | 2023-10-05 | 삼성전자주식회사 | 시스템 부팅을 위한 컨트롤러를 포함하는 전자 장치 및 그의 동작 방법 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2017021434A (ja) * | 2015-07-07 | 2017-01-26 | キヤノン株式会社 | 情報処理装置及びその制御方法 |
JP2017528037A (ja) * | 2014-07-25 | 2017-09-21 | クアルコム,インコーポレイテッド | 外部不揮発性メモリに記憶されたデータが有効かどうかを判定するための集積回路 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7461268B2 (en) | 2004-07-15 | 2008-12-02 | International Business Machines Corporation | E-fuses for storing security version data |
US8239688B2 (en) * | 2007-01-07 | 2012-08-07 | Apple Inc. | Securely recovering a computing device |
EP2294529B1 (en) * | 2008-06-23 | 2012-01-04 | ST-Ericsson SA | Electronic device and method of software or firmware updating of an electronic device |
US8205070B2 (en) * | 2009-09-08 | 2012-06-19 | Apple Inc. | Device bootup from a NAND-type non-volatile memory |
GB2499985A (en) * | 2012-02-29 | 2013-09-11 | Nds Ltd | Current state of OTP memory used with new received information to define new OTP state for computation of new digital signature in preventing playback attacks |
US9910659B2 (en) * | 2012-11-07 | 2018-03-06 | Qualcomm Incorporated | Methods for providing anti-rollback protection of a firmware version in a device which has no internal non-volatile memory |
US9230112B1 (en) * | 2013-02-23 | 2016-01-05 | Xilinx, Inc. | Secured booting of a field programmable system-on-chip including authentication of a first stage boot loader to mitigate against differential power analysis |
US20140250290A1 (en) * | 2013-03-01 | 2014-09-04 | St-Ericsson Sa | Method for Software Anti-Rollback Recovery |
US9165143B1 (en) * | 2013-03-15 | 2015-10-20 | Xilinx, Inc. | Image file generation and loading |
EP2854066B1 (en) * | 2013-08-21 | 2018-02-28 | Nxp B.V. | System and method for firmware integrity verification using multiple keys and OTP memory |
US20170090909A1 (en) * | 2015-09-25 | 2017-03-30 | Qualcomm Incorporated | Secure patch updates for programmable memories |
US20170308705A1 (en) | 2016-04-22 | 2017-10-26 | Qualcomm Incorporated | System, device and method for anti-rollback protection of over-the-air updated device images |
US10223531B2 (en) * | 2016-12-30 | 2019-03-05 | Google Llc | Secure device state apparatus and method and lifecycle management |
GB2578158B (en) * | 2018-10-19 | 2021-02-17 | Advanced Risc Mach Ltd | Parameter signature for realm security configuration parameters |
US10997297B1 (en) * | 2019-12-06 | 2021-05-04 | Western Digital Technologies, Inc. | Validating firmware for data storage devices |
-
2020
- 2020-05-14 US US16/874,241 patent/US11216597B2/en active Active
-
2021
- 2021-03-11 TW TW110108608A patent/TWI775346B/zh active
- 2021-04-28 JP JP2021075912A patent/JP7113115B2/ja active Active
- 2021-05-07 CN CN202110494281.0A patent/CN113672878B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2017528037A (ja) * | 2014-07-25 | 2017-09-21 | クアルコム,インコーポレイテッド | 外部不揮発性メモリに記憶されたデータが有効かどうかを判定するための集積回路 |
JP2017021434A (ja) * | 2015-07-07 | 2017-01-26 | キヤノン株式会社 | 情報処理装置及びその制御方法 |
Also Published As
Publication number | Publication date |
---|---|
JP7113115B2 (ja) | 2022-08-04 |
US11216597B2 (en) | 2022-01-04 |
TW202145014A (zh) | 2021-12-01 |
TWI775346B (zh) | 2022-08-21 |
CN113672878B (zh) | 2023-09-29 |
CN113672878A (zh) | 2021-11-19 |
US20210357537A1 (en) | 2021-11-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP2854066B1 (en) | System and method for firmware integrity verification using multiple keys and OTP memory | |
JP5767751B2 (ja) | Biosを検証する方法、コンピューティングプラットフォーム、およびプログラム | |
CN105122258B (zh) | 对系统进行配置的方法、计算系统以及物品 | |
JP2021179982A (ja) | シリコンデバイスファームウェア上のロールバック攻撃を防止するセキュリティシステム、および、方法 | |
US7461268B2 (en) | E-fuses for storing security version data | |
Kühn et al. | Realizing property-based attestation and sealing with commonly available hard-and software | |
EP2727040B1 (en) | A secure hosted execution architecture | |
Regenscheid | Platform firmware resiliency guidelines | |
TW201500960A (zh) | 在配有適用統一可延伸韌體介面(uefi)之韌體之計算裝置中的安全性變數變化檢測技術 | |
US8689318B2 (en) | Trusted computing entities | |
US10181956B2 (en) | Key revocation | |
US10776493B2 (en) | Secure management and execution of computing code including firmware | |
TWI570591B (zh) | 允許測試金鑰用於bios安裝之技術 | |
JP6518798B2 (ja) | 安全な集積回路状態を管理する装置およびその方法 | |
WO2017188976A1 (en) | Executing protected code | |
US11941159B2 (en) | Configuration data deletion based on tamper status | |
CN111695164B (zh) | 电子设备及其控制方法 | |
US20210103653A1 (en) | Memory system | |
Yao et al. | Configuration | |
CN117494079B (zh) | 一种镜像权转移方法、安全启动方法及相关装置 | |
CN116089967B (zh) | 数据防回滚方法和电子设备 | |
CN116415248A (zh) | 在一开盖窜改事件中使一安全启动失败的计算机系统 | |
Yao et al. | White Paper A Tour Beyond BIOS Implementing UEFI Authenticated Variables in SMM with EDKII | |
Beilke et al. | A Safe Update Mechanism for Smart Cards |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20210428 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20220322 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20220329 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20220620 |
|
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: 20220705 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20220725 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 7113115 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |