JP7500400B2 - 情報処理装置、情報処理装置の制御方法及びプログラム - Google Patents

情報処理装置、情報処理装置の制御方法及びプログラム Download PDF

Info

Publication number
JP7500400B2
JP7500400B2 JP2020191893A JP2020191893A JP7500400B2 JP 7500400 B2 JP7500400 B2 JP 7500400B2 JP 2020191893 A JP2020191893 A JP 2020191893A JP 2020191893 A JP2020191893 A JP 2020191893A JP 7500400 B2 JP7500400 B2 JP 7500400B2
Authority
JP
Japan
Prior art keywords
verification
boot code
setting area
range setting
tampered
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2020191893A
Other languages
English (en)
Other versions
JP2022080687A (ja
Inventor
貴巳 江口
信博 田頭
鮎太 河津
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
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 Canon Inc filed Critical Canon Inc
Priority to JP2020191893A priority Critical patent/JP7500400B2/ja
Priority to US17/528,452 priority patent/US11928217B2/en
Publication of JP2022080687A publication Critical patent/JP2022080687A/ja
Application granted granted Critical
Publication of JP7500400B2 publication Critical patent/JP7500400B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • 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/51Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/034Test or assess a computer or a system

Landscapes

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

Description

本発明は、情報処理装置、情報処理装置の制御方法及びプログラムに関するものである。
情報処理装置を制御するソフトウェアを第三者が不正な方法で改ざんし、情報処理装置内の情報資産を盗む攻撃や、ソフトウェアが改ざんされた情報処理装置を踏み台にする攻撃が問題になっている。このような攻撃を防止するために、情報処理装置内のソフトウェアが第三者によって改ざんされていないことを検証する方法が考案されている。さらに、ソフトウェアの改ざんを検出した際に、当該ソフトウェアを復旧する方法も考案されている。特に機器の最初に起動するソフトウェアであるBIOSやUEFIは、起動初期の段階ということもあり、ネットワーク機能等の基本機能が使えないため、復旧方法が限られる。BIOSはBasic Input Output Systemの略であり、UEFIはUnified Extensible Firmware Interfaceの略である。なお、BIOSは機器の起動に関わるソフトウェアのため、ブートコードと呼称される場合がある。
特許文献1では、組み込みコントローラが第1のメモリに保持しているsystem firmware(BIOS)の改ざんを検知する。そして、改ざんされていると判断したとき、第2のメモリに予め保持している復旧用のsystem firmware(BIOSゴールデンコピー)で上書きし、復旧する。以下、組み込みコントローラをEC(Embedded Controller)と呼称する場合がある。復旧処理により、第1のメモリに保持している起動用のBIOSが改ざんされていない状態に戻るため、機器が正常起動可能となる。
なお、第1のメモリはCPUからアクセス可能だが、BIOSゴールデンコピーの不正書き換えを防止するため、第2のメモリは組み込みコントローラのみがアクセス可能なバス構成となっている。また、特許文献1では、第1のメモリ内のBIOSと第2のメモリ内のBIOSゴールデンコピーとが同一となるようにポリシーで制御している。例えば、ポリシーがBIOSゴールデンコピーの書き換えを許可する設定の場合、第1のメモリ内のBIOSと第2のメモリ内のBIOSゴールデンコピーのハッシュ値を比較する。そして、ハッシュ値が異なる場合、第1のメモリ内のBIOSで第2のメモリ内のBIOSゴールデンコピーを上書きすることで両者を同一にする。
米国特許第9880908号明細書
しかしながら、特許文献1は、BIOSの検証範囲について言及していない。BIOSは設定値等、起動後に書き変わる領域があるため、BIOSのすべての範囲を検証範囲にすると、署名値生成後、特定の領域が書き換わった時、検証時に署名検証に失敗してしまうという課題がある。
本発明は、上記の課題に鑑みてなされたものであり、ソフトウェアの改ざんの有無の検証及び復旧処理を行う際に、当該ソフトウェアのブートコードの設定値等が書き換わっても検証を実現するための技術を提供することを目的とする。
上記の目的を達成する本発明に係る情報処理装置は、
第1のブートコードを保持する第1の保存媒体と、前記第1のブートコードの復旧に用いる第2のブートコードを保持する第2の保存媒体とを備える情報処理装置であって、
前記第1のブートコードの検証範囲を指定する第1の検証範囲設定領域および前記第2のブートコードの検証範囲を指定する第2の検証範囲設定領域の改ざんの有無を検証する第1の検証手段と、
前記第1の検証範囲設定領域が改ざんされていない場合、前記第1のブートコードの改ざんの有無を検証する第2の検証手段と、
前記第1のブートコードが改ざんされており且つ前記第2の検証範囲設定領域が改ざんされていない場合、前記第2のブートコードの改ざんの有無を検証する第3の検証手段と、
前記第2のブートコードが改ざんされていない場合、前記第2のブートコードを用いて前記第1のブートコードを復旧する復旧手段と、
を備えることを特徴とする。
本発明によれば、ソフトウェアの改ざんの有無の検証及び復旧処理を行う際に、当該ソフトウェアのブートコードの設定値等が書き換わっても検証を実行することが可能となる。
一実施形態に係るMFPとPCの接続形態を示すブロック構成図。 一実施形態に係るMFPのコントローラ部の内部構成図。 一実施形態に係るMFPのコントローラ内で実行されるソフトウェアのブロック構成図。 一実施形態に係るSPI-Flashに配置されるデータの一例を示す図。 一実施形態に係る検証範囲設定領域のフォーマットの一例を示す図。 一実施形態に係る各検証結果と後続処理の関係を示す図。 一実施形態に係る処理を実施する手順を示すフローチャート。
以下、添付図面を参照して実施形態を詳しく説明する。尚、以下の実施形態は特許請求の範囲に係る発明を限定するものでない。実施形態には複数の特徴が記載されているが、これらの複数の特徴の全てが発明に必須のものとは限らず、また、複数の特徴は任意に組み合わせられてもよい。さらに、添付図面においては、同一若しくは同様の構成に同一の参照番号を付し、重複した説明は省略する。
本実施形態では、情報処理装置がブートコードの検証および復旧用のソフトウェアであるゴールデンコピーの更新、およびブートコードの検証に失敗したときの復旧処理について説明する。本実施形態では、情報処理装置の例として画像形成装置であるMFP (Multi-Function Peripheral:複合機)について記述するが、本実施形態は複合機以外の情報処理装置にも適用可能な技術である。また、ソフトウェアの例としてBIOSを用いて説明するが、例えばNIC(Network Interface Card)のファームウェアの検証にも適用することができる。
<システム構成>
図1のブロック図を参照して、本実施形態に係る情報処理装置(MFP)とクライアントPCとの接続形態を説明する。
MFP100とクライアントPC110とは、LAN120を介して接続されている。MFP100は、コントローラ部101と、操作部102と、プリンタ部103と、スキャナ部104とを備えている。
コントローラ部101は、操作部102は、ユーザとの間で入出力を行うための操作部である。プリンタ部103は、電子データを紙媒体に出力する。スキャナ部104は、紙媒体を読み込み電子データに変換する。操作部102とプリンタ部103とスキャナ部104とは、コントローラ部101に接続されており、コントローラ部101の制御に従い複合機としての機能を実現する。
クライアントPC110はMFP100に対してプリントジョブの送信といった処理を行う。
<コントローラ部のハードウェア構成>
図2は、本実施形態に係るMFP100のコントローラ部101の詳細を示すブロック図である。CPU201は、コントローラ部101内の主な演算処理を行う。なお、後述する組み込みコントローラ212が具備するCPUと区別するために、本実施形態ではCPU201を「メインCPU」と呼称する場合がある。CPU201はバスを介してDRAM202と接続される。DRAM202は、CPU201が演算する過程で演算命令を表すプログラムデータや、処理対象のデータを一時的に配置するための作業メモリとして、CPU201によって使用される。CPU201は、バスを介してI/Oコントローラ203と接続される。I/Oコントローラ203は、CPU201の指示に従い各種デバイスに対する入出力を行う。I/Oコントローラ203にはSATA(Serial Advanced Technology Attachment)I/F205が接続され、その先にFlashROM211が接続される。CPU201は、FlashROM211をMFP100の機能を実現するためのプログラム、およびドキュメントファイルを永続的に記憶するために使用する。I/Oコントローラ203には、ネットワークI/F204が接続され、ネットワークI/F204の先には、有線LANデバイス210が接続される。
CPU201は、ネットワークI/F204を介して有線LANデバイス210を制御することで、LAN120上の通信を実現する。I/Oコントローラ203にはパネルI/F206が接続され、CPU201は、パネルI/F206を介して操作部102に対するユーザ向けの入出力を実現する。I/Oコントローラ203にはプリンタI/F207が接続され、CPU201は、プリンタI/F207を介してプリンタ部103を利用した紙媒体の出力処理を実現する。I/Oコントローラ203にはスキャナI/F208が接続され、CPU201はスキャナI/F208を介してスキャナ部104を利用した原稿の読み込み処理を実現する。I/Oコントローラ203にはUSB I/F209が接続され、USB I/F209に接続された任意の機器の制御を行う。SPI-Flash1 213は、CPU203とバスで接続されていて、図3及び図4を参照して後述するBIOS360を実現する制御プログラムを記憶している。SPI-Flash2 214 は図4を参照して後述する BIOS360復旧用のバイナリデータであるBIOSゴールデンコピー404(以下、BIOS GCと呼称する場合がある)を記憶している。ここでSPIは、Serial Peripheral Interfaceの略であり、SPI-Flashはフラッシュメモリの一種である。本実施形態では、第1の保存媒体としてSPI-Flash1 213、第2の保存媒体としてSPI-Flash2 214を例示して説明するが、SPI-Flashである必要はなく、同様の機能を持つ別種のフラッシュメモリや保存媒体を用いてもよい。
組み込みコントローラ212は、MFP100の電源投入後、最初に起動するハードウェアチップであり、後述するBIOS360の改ざん検知、BIOS GC404を用いたBIOS360の復旧、及びBIOS GC404のアップデート処理を行う。組み込みコントローラ212は、CPU201とは独立して動作可能なマイクロコントローラであり、内部にCPUやROM・RAMなどのメモリを別途具備しているため、独自で演算処理が可能である。組み込みコントローラ212は、SPI-Flash1 213、SPI-Flash2 214、及び CPU201とバスで接続されている。組み込みコントローラ212は、BIOS360の改ざん検知やBIOS GC404のアップデート処理等の完了後にCPU201にリセット信号を送ることでCPU201を起動させ、制御を渡す。CPU201に制御を渡した後は、組み込みコントローラ212はスリープ状態に入る。
[コピー機能]
コピー機能を実施する場合、CPU201は、SATA I/F205を介してFlashROM211からプログラムデータ(モジュールデータ)をDRAM202に読み込む。CPU201は、DRAM202に読み込まれたプログラム(モジュール)に従いパネルI/F206を介して操作部102に対するユーザからのコピー指示を検出する。CPU201は、コピー指示を検出するとスキャナI/F208を介してスキャナ部104から原稿を電子データとして受け取りDRAM202に格納する。CPU201は、DRAM202に格納した画像データに対して出力に適した色変換処理などを実施する。CPU201は、DRAM202に格納した画像データをプリンタI/F207を介してプリンタ部103に転送し、紙媒体への出力処理を実施する。
[PDL印刷]
PDL印刷を実施する場合、クライアントPC110は、LAN120を介して印刷指示を行う。CPU201は、SATA I/F205を介してFlashROM211からプログラムデータ(モジュールデータ)をDRAM202に読み込む。そして、DRAM202に読み込まれたプログラム(モジュール)に従いネットワークI/F204を介して印刷指示を検出する。CPU201は、PDL送信指示を検出するとネットワークI/F204を介して印刷データを受信し、SATA I/F205を介してFlashROM211に印刷データを保存する。CPU201は、印刷データの保存が完了すると、FlashROM211に保存した印刷データをDRAM202に画像データとして展開する。CPU201は、DRAM202に格納した画像データに対して出力に適した色変換処理などを実施する。CPU201は、DRAM202に格納した画像データをプリンタI/F207を介してプリンタ部103に転送し、紙媒体への出力処理を実施する。
<コントローラ部の機能構成>
続いて、図3のブロック図を参照して、本実施形態に係るMFP100のコントローラ部101で実行されるソフトウェアが実現する機能構成の一例を説明する。なお、コントローラ部101で実行されるソフトウェアのうち、組み込みコントローラソフト350だけは組み込みコントローラ212が実行し、それ以外は全てCPU201が実行する。
組み込みコントローラ212は、組み込みコントローラソフト350を実行する。なお、組み込みコントローラソフト350の保存場所は、組み込みコントローラ212が読み出し、実行できる場所であればよい。例えば、組み込みコントローラ212が具備するROM(不図示)に組み込みコントローラソフト350を保存してもよいし、SPI-Flash1 213、SPI-Flash2 214に保存してもよい。最初に、組み込みコントローラソフト350の機能について説明する。組み込みコントローラソフト350は、改ざん検知部351、復旧部352、設定領域読み込み部353、バージョン比較部354、及び第1のアップデート部355を含む。
改ざん検知部351は、SPI-Flash1 213が保持する図4を参照して後述する第1のBIOS署名値401を用いて、BIOS360の改ざん有無を検証する。署名検証方法としては、例えば、公知技術であるRSA公開鍵暗号方式を用いた署名検証アルゴリズムや、楕円曲線公開鍵暗号方式を用いたECDSA署名検証アルゴリズムを利用することができる。署名検証に用いる公開鍵は、組み込みコントローラ212が具備するROM(不図示)内に保持してもよいし、SPI-Flash1 213、SPI-Flash2 214内に保持してもよい。
また、改ざん検知部351は、SPI-Flash2 214が保持する図4を参照して後述する第2のBIOS署名値406を用いて、BIOS GC404の改ざん有無を検証する機能も具備する。
さらに、改ざん検知部351は、SPI-Flash1 213が保持する図4を参照して後述する第1の検証範囲設定領域の署名値402を用い、第1の検証範囲設定領域403の改ざん有無を検証する機能も具備する。さらに、改ざん検知部351は、SPI-Flash2 214が保持する図4を参照して後述する第2の検証範囲設定領域の署名値407を用い、第2の検証範囲設定領域408の改ざん有無を検証する機能も具備する。
復旧部352は、改ざん検知部351でBIOS360の改ざんを検知した際に、SPI-Flash2 214が保持するBIOS GC404を用い、BIOS360を復旧する機能を持つ。復旧方法としては、例えば、SPI-Flash1 213のBIOS360を消去し、空いた領域にSPI-Flash2 214から読み出したBIOS GC404を書き込むことで実現できる。
BIOS GC404は、BIOS360のコピーデータであるため、このように改ざんされたBIOS360をBIOS GC404で上書きすることで、BIOS360を正常な状態に復旧できる。その際、同様にして第2のBIOS署名値406で第1のBIOS署名値401の上書きも行う。さらに、後述する第2の検証範囲設定領域408および第2の検証範囲設定領域の署名値407で、それぞれ第1の検証範囲設定領域403および第1の検証範囲設定領域の署名値402の上書きも行う。
設定領域読み込み部353は、図4および図5を参照して後述するSPI-Flash1 213が保持する第1の検証範囲設定領域403もしくはSPI-Flash2 214が保持する第2の検証範囲設定領域408を読み込む。設定領域読み込み部353は、図7で後述するように、改ざん検知部351によって第1の検証範囲設定領域403もしくは第2の検証範囲設定領域408が改ざんされていないことを確認した後に動作する。第1の検証範囲設定領域403もしくは第2の検証範囲設定領域408は、検証範囲を指定するための領域である。それらのフォーマットは一例として図5に示すように、BIOS360のバージョン情報であるバージョン識別子、BIOSの検証範囲の数を示す検証対象数、検証対象数に応じた複数の検証範囲の開始アドレスおよび検証範囲のサイズで構成されている。図示の例では検証範囲の開始アドレス1、検証範囲のサイズ1が示されているが、以降同様にして、検証範囲の開始アドレス2、検証範囲のサイズ2…と続く。
BIOS360内で設定値等書き換わる領域を除外して非連続な領域を対象としてハッシュ値を算出し、電子署名を生成した場合、検証範囲は複数となり、検証対象数が2以上となる。
バージョン比較部354は、BIOS360のバージョン情報である第1の検証範囲設定領域403のバージョン情報と、BIOS GC404のバージョン情報である第2の検証範囲設定領域408のバージョン情報とを比較する。バージョン情報としては、一般に用いられているバージョン情報を適用することができ、例えば時系列順にソフトウェアの更新・リリース履歴を表す増加値として表現することができる。
具体的には、BIOSの現在のバージョン情報を「1.0」とした場合、バグや機能追加、脆弱性修正等で更新・リリースしたBIOSのバージョン情報を「1.1」とインクリメントした数値で表現することができる。この場合、バージョン情報を比較した結果、「1.1」>「1.0」となるため、バージョン情報「1.1」を持つBIOSのほうが新しいBIOSであると判断できる。バージョン比較部354は、BIOS360のバージョン情報とBIOS GC404のバージョン情報とを比較することで、BIOS360及びBIOS GC404のどちらのバージョンのほうが新しいかを判断できる。
なお、上述のバージョン情報はあくまで一例であり、数値とアルファベットを混ぜ合わせてもよい。例えば、現バージョンを「1.0a」、新バージョンを「1.0b」とすることで、アルファベットの順序(a<b<c<・・・・<zの大小関係) を時系列の更新履歴の表現として用いることもできる。
第1のアップデート部355は、バージョン比較部354でBIOS GC404よりBIOS360のほうが新しいバージョンだと判断した場合、BIOS360を用いて、BIOS GC404をアップデートする。具体的なアップデート方法としては、例えば、SPI-Flash2 214内のBIOS GC404を消去し、消去で空いた領域にSPI-Flash1 213から読みだしたBIOS360を書き込むことで実現できる。また、第1のアップデート部355は、同様にして、第2のBIOS署名値406を第1のBIOS署名値401で上書きすることで、アップデートされたBIOS GC404に対応した署名値に書き換える。同様に、第2の検証範囲設定領域408および第2の検証範囲設定領域の署名値407も、それぞれ第1の検証範囲設定領域403および第1の検証範囲設定領域の署名値407で書き換える。
なお、本実施形態において、図4で示すようにBIOS360は、第1の検証範囲設定領域403、第1の検証範囲設定領域の署名値402、第1のBIOS署名値401、第1の組み込みコントローラソフト350を含む。また、BIOS GC404は、第2の検証範囲設定領域408、第2の検証範囲設定領域の署名値407、第2のBIOS署名値406、第2の組み込みコントローラソフト405を含む。そのため、BIOS GC404の書き換えと同時に、その他の情報も一括で書き換わる。
組み込みコントローラソフト350は、上述した機能の処理完了後、CPU201に制御を移すためにCPU201にリセット信号を送信し、スリープ状態に入る。
次に、CPU201により実行される機能について説明する。CPU201は、SPI-Flash1 213に記憶されたBIOS360を実行する。CPU201は、FlashROM211に記憶された、ローダ370、initrd380、カーネル390をDRAM202に読み込んだ後に実行する。CPU201は、FlashROM211に記憶されたコントローラソフト300をDRAM202に読み込んだ後に実行する。BIOS360は、I/Oコントローラ203やDRAM202をCPU201が制御するための基本処理を実行する。さらにBIOS360は、FlashROM211からローダ370を読み込み、開始する処理を含む。ローダ370は、FlashROM211からOSのカーネル390、initrd380を読み込み、開始する処理を実行する。initrd380は、FlashROM211からコントローラソフト300を読み込み、開始する処理を実行する。
操作制御部301は、操作部102にユーザ向けの画面イメージを表示し、およびユーザ操作の検知と画面上に表示したボタン等の画面部品に紐づけられた処理を実行する。データ記憶部302は、他の制御部からの要求でデータをFlashROM211に記憶したり、FlashROM211から読み出したりする。例えば、ユーザが何らかの機器設定を変更したい場合は、操作部102にユーザが入力した内容を操作制御部301が検知し、操作制御部301からの要求に応じて、データ記憶部302が、変更された設定値をFlashROM211に保存する。
ジョブ制御部303は、他の制御部からの指示に従って、ジョブ実行の制御を行う。
画像処理部304は、ジョブ制御部303からの指示に従って、画像データを用途ごとに適した形式に加工する。印刷処理部305は、ジョブ制御部303からの指示に従い、プリンタI/F207を介して、紙媒体に画像を印刷し出力する。読み取り処理部306は、ジョブ制御部303からの指示時に従い、スキャナI/F208を介して、設置された原稿を読み込む。
ネットワーク制御部307は、データ記憶部302に記憶された設定値に従い、システム起動時や、設定変更検出時にIPアドレスなどのネットワーク設定をTCP/IP制御部308に対して行う。TCP/IP制御部308は、他の制御部からの指示に従い、ネットワークI/F204を介して、ネットワークパケットの送受信処理を行う。USB制御部309は、USB I/F209を制御し、USB接続された任意の機器の制御を行う。
第2のアップデート部310は、SPI-Flash1 213が保持するBIOS360を更新する。具体的な更新方法としては、例えば、ネットワーク経由やUSBメモリ経由で取得した更新用BIOSで、SPI-Flash1 213内のBIOS360を上書きすることで実現できる。同様に更新用BIOSに付随する更新用BIOSのバージョン情報及び署名値で、SPI-Flash1 213内の第1のバージョン情報及び第1の署名値402も更新される。第2のアップデート部310は、BIOSの更新処理完了後、前述した第1のアップデート部355でBIOS GC404を更新するために、再起動を要求する。
以上、本実施形態における機能構成について説明した。
<データの一例>
ここで、図4に、第1の保存媒体であるSPI-Flash1 213及び第2の保存媒体であるSPI-Flash2 214に配置されるデータを例示する。
SPI-Flash1 213は、CPU201及び組み込みコントローラ212からアクセス可能である。SPI-Flash1 213は、BIOS360、第1の検証範囲設定領域403、第1の検証範囲設定領域の署名値402、第1のBIOS署名値401、第1の組み込みコントローラソフト350を保持する。第1の検証範囲設定領域403は、情報処理装置の起動後に書き換わらない領域である。
本実施形態では、BIOS360の検証範囲設定領域を第1の検証範囲設定領域403としてBIOS360に内包する構成で説明するが、これはあくまで例示である。BIOS360に包含させず、BIOS360とは分ける形で第1の検証範囲設定領域403および第1の検証範囲設定領域の署名値402をSPI-Flash1 213内に保持してもよい。第1のBIOS署名値401は、BIOS360に関するデジタル署名値であり、前述したように、改ざん検知部351でBIOS360の改ざん有無を検証するために用いられる。
一方、SPI-Flash2 214は、組み込みコントローラ212からのみアクセス可能である。SPI-Flash2 214は、BIOS GC404、第2の検証範囲設定領域408、第2の検証範囲設定領域の署名値407、第2のBIOS署名値406、第2の組み込みコントローラソフト405を保持する。第2の検証範囲設定領域408は、情報処理装置の起動後に書き換わらない領域である。本実施形態では、上述同様、BIOS GC404の検証範囲設定領域を第2の検証範囲設定領域408としてBIOS GC404に内包する構成で説明する。同様に第2のBIOS署名値406は、BIOS GC404に対するデジタル署名値となる。
ここで、BIOS GC404は、前述したように復旧部352でBIOS360を正常状態に復旧するために用いるバイナリデータである。改ざんやデータ損失、BIOS360更新直後の起動でない限り、通常、BIOS GC404、第2の検証範囲設定領域408、第2の検証範囲設定領域の署名値407、第2のBIOS署名値406、第2の組み込みコントローラソフト405は、それぞれSPI-Flash1 213内のBIOS360、第1の検証範囲設定領域403、第1の検証範囲設定領域の署名値402、第1のBIOS署名値401、第1の組み込みコントローラソフト350と同じバイナリデータ(コピーデータ)となる。
<処理>
続いて、図7のフローチャートを参照して、本実施形態に係るソフトウェアの改ざん検知、改ざんされたソフトウェアの復旧および復旧用ソフトウェアのアップデート処理を説明する。本処理は主に組み込みコントローラ212により実行される。
MFP100の電源投入後、まず組み込みコントローラ212が組み込みコントローラソフト350を起動する(S701)。改ざん検知部351は、署名検証により第1のブートコード(BIOS360)の第1の検証範囲設定領域403および第2のブートコード(BIOS GC404)第2の検証範囲設定領域408の改ざん有無をそれぞれ検証する(S702)。検証には第1の検証範囲設定領域の署名値402および第2の検証範囲設定領域の署名値407を使用する。
第1の検証範囲設定領域403および第2の検証範囲設定領域408両方の署名検証に失敗した場合(S702で失敗)、MFP100の起動処理を中止して起動失敗を通知する(S716)。通知は、ログを残したり、操作部102を介したエラー通知や、MFP100及び組み込みコントローラ212が具備するLEDや電源ランプの点滅等でユーザにエラー発生を通知したりしてもよい。
一方、第1の検証範囲設定領域403および第2の検証範囲設定領域408の少なくとも一方の署名検証に成功した場合(S702で少なくともどちらか成功)、設定領域読み込み部353が検証成功の有無を記憶する。
その後、設定領域読み込み部353は、検証に成功した第1の検証範囲設定領域403および/または第2の検証範囲設定領域408を読み込む(S703)。
設定領域読み込み部353は、第1の検証範囲設定領域403の検証に成功した(読み込みに成功した)か否かを判定する(S704)。
第1の検証範囲設定領域403の検証に成功しかつ情報の読み込みに成功した場合(S704でYES)、改ざん検知部351は、BIOS360の改ざん有無を検証する(S705)。検証の際、S703で読み込んだ第1の検証範囲設定領域403の検証範囲数、検証範囲開始アドレス、検証範囲サイズを用いてハッシュ値を算出する。SPI-Flash1 213の検証範囲開始アドレスから検証範囲サイズの範囲までを読み込んでハッシュ関数のUpdate処理を実行すること検証範囲数分繰り返す。最後にハッシュ関数のFinalize処理を実行してハッシュ値を算出し、検証処理に使用する。
一方、第1の検証範囲設定領域403の検証に失敗した場合もしくは情報の読み込みに失敗した場合(S704で失敗)、S706に進む。
そして、BIOS360の検証に失敗した場合(S705で失敗)、S710に進む。BIOS360の検証に成功した場合、S706に進む。
S710では、設定領域読み込み部353は、S702で実施した第2の検証範囲設定領域408の署名検証結果が失敗か成功かを判定する。そして、失敗の場合(S710で失敗)、MFP100の起動処理を中止して起動失敗を通知する(S716)。
一方、第2の検証範囲設定領域408の署名検証結果が成功の場合(S710で成功)、BIOS GC404の真正性を確認するために改ざん検知部351がBIOS GC404を署名検証する(S711)。検証には、S703で読み込んだ第2の検証範囲設定領域408の検証範囲数、検証範囲開始アドレス、検証範囲サイズを用いる。
検証に失敗した場合(S711で失敗)、MFP100の起動処理を中止して起動失敗を通知する(S716)。一方、検証に成功した場合(S711で成功)、S712へ進む。復旧部352がBIOS360の復旧処理を行う(S712)。復旧後、復旧が正しく実行されたことを確認するためにBIOS360を署名検証する(S713)。その際、第1の検証範囲設定領域403を再度検証し、読み込み直し、読み込んだ第1の検証範囲設定領域403の検証範囲数、検証範囲開始アドレス、検証範囲サイズを用いて検証する。検証に失敗した場合(S713で失敗)、MFP100の起動処理を中止して起動失敗を通知する(S716)。一方、検証に成功した場合(S713で成功)、S707へ進む。
そして、組み込みコントローラ212は、CPU201に制御を移すためにCPU201にリセット信号を送信する(S707)。その後、組み込みコントローラ212はスリープ状態に入る(S708)。リセット信号を受け、CPU201が起動し、CPU201はSPI-Flash1 213のBIOS360を読み出し、起動する。その後、CPU201は、FlashROM211に記憶された、ローダ370、initrd380、カーネル390をDRAM202に読み込んだ後に実行しOSを起動する。その後、CPU201は、FlashROM211に記憶されたコントローラソフト300をDRAM202に読み込んだ後に実行する(S709)。
また、S706では、所定のディシジョンテーブル(例えば後述する図6)に応じて処理が分岐する。組み込みコントローラソフト350は、第1の検証範囲設定領域403と第2の検証範囲設定領域408のバージョン情報比較結果で後続の処理を決定する。あるいは、S702で実施した第1の検証範囲設定領域403の署名検証結果もしくは第2の検証範囲設定領域408の署名検証結果に応じて後続の処理を決定する。
例えば、(1)第1の検証範囲設定領域403の署名検証結果が失敗の場合、BIOS360が改ざんされていると判断する。改ざん検知部351がBIOS GC404を署名検証(S711)し、コピー元の真正性を確認してから復旧部352がBIOS360の復旧を行う(S712)。
(2)バージョン情報が異なる時、もしくは第2の検証範囲設定領域408の署名検証結果が失敗の場合、第1のアップデート部354がBIOS GC404を更新する(S714)。更新後、更新が正しく実行されたことを確認するために改ざん検知部351がBIOS GC404を署名検証する(S715)。その際、第2の検証範囲設定領域408を再度検証し、読み込み直し、読み込んだ第2の検証範囲設定領域408の検証範囲数、検証範囲開始アドレス、検証範囲サイズを用いて検証する。失敗したら起動失敗を通知する(S716)。成功したら、リセット信号送信処理(S707)に進む。
(3)バージョン情報が等しいとき、BIOS GC404をアップデートする必要はないと判断し、そのままリセット信号送信処理(S707)に進む。
図6の表は、第1の検証範囲設定領域403(BIOS)と第2の検証範囲設定領域408(BIOS GC)のバージョン情報比較結果、第1の検証範囲設定領域403の署名検証結果、第2の検証範囲設定領域408の署名検証結果、BIOS360の検証結果に応じた後続の処理の一例を示す。
図6に示すように、第1の検証範囲設定領域403(BIOS)の署名検証結果が成功、第2の検証範囲設定領域408(BIOS GC)の署名検証結果が成功、BIOS360の検証結果が成功の場合、第1の検証範囲設定領域403(BIOS)と第2の検証範囲設定領域408(BIOS GC)のバージョン情報が異なるとき、BIOS GC404を更新する。
第1の検証範囲設定領域403(BIOS)の署名検証結果が成功、第2の検証範囲設定領域408(BIOS GC)の署名検証結果が失敗、BIOS360の検証結果が成功の場合、BIOS GC404を更新する。第1の検証範囲設定領域403(BIOS)の署名検証結果が成功、第2の検証範囲設定領域408(BIOS GC)の署名検証結果が成功、BIOS360の検証結果が失敗の場合、BIOS360の復旧を行う。
第1の検証範囲設定領域403(BIOS)の署名検証結果が成功、第2の検証範囲設定領域408(BIOS GC)の署名検証結果が失敗、BIOS360の検証結果が失敗の場合、起動失敗を通知する。第1の検証範囲設定領域403(BIOS)の署名検証結果が失敗、第2の検証範囲設定領域408(BIOS GC)の署名検証結果が成功の場合、BIOS360の復旧を行う。
第1の検証範囲設定領域403(BIOS)の署名検証結果が失敗、第2の検証範囲設定領域408(BIOS GC)の署名検証結果が失敗の場合、起動失敗を通知する。以上が図7の一連の処理である。
以上説明したように、本実施形態では、非連続な検証範囲を記述可能な検証範囲設定領域(ブートコードの設定値が書き換わっても影響を受けない領域)を設ける。そして、検証範囲設定領域の署名検証が成功したら検証範囲設定領域を読み込み、その検証範囲を用いてBIOSを署名検証する。
これにより、ソフトウェアの改ざんの有無の検証及び復旧処理を行う際に、当該ソフトウェアのブートコードの設定値が書き換わっても検証を実行することが可能となる。
[変形例1]
上記実施形態では、改ざん検知部351で第1の検証範囲設定領域403を検証した後、第1の検証範囲設定領域403の検証範囲数、検証範囲開始アドレス、検証範囲サイズを用いてBIOS360の改ざん有無を検証した。本変形例では、さらに、検証範囲設定領域で指定する検証範囲に検証範囲設定領域そのものを含めることとする。
例えば、第1の検証範囲設定領域403により指定される検証範囲は、第1の検証範囲設定領域403それ自体を含み、第2の検証範囲設定領域408により指定される検証範囲は、第2の検証範囲設定領域それ自体を含んでもよい。
この変形により、別バージョンのBIOS用に生成した、異なる検証範囲を持つ検証範囲設定領域および検証範囲設定領域の署名値に書き換えて署名検証を失敗させる攻撃を検知することができる。さらに、別バージョンのBIOS用に生成した、検証範囲が狭い検証範囲設定領域および検証範囲設定領域の署名値で置き換えて改ざんBIOSで検証成功させる攻撃も防ぐことができる。生成した署名値を利用した処理フローは図7の処理と同様である。
[変形例2]
さらに、検証範囲設定領域で指定する検証範囲に第1の組み込みコントローラソフト350を含めることによって、別バージョンの組み込みコントローラソフト350で置き換えるロールバック攻撃を防ぐことができる。
例えば、組み込みコントローラ212は、上記実施形態に係る情報処理装置(MFP100)の各処理を実行する組み込みコントローラソフト350に従って動作する。第1の検証範囲設定領域403により指定される検証範囲および第2の検証範囲設定領域408により指定される検証範囲は、当該組み込みコントローラソフト350を含んでもよい。生成した署名値を利用した処理フローは図7の処理と同様である。
[変形例3]
上記実施形態では非連続な検証範囲に対してハッシュ関数を実行して生成した1つのハッシュ値から生成した署名値を用いて改ざん検知を実行していた。そのほかの実現方法としては、分割した検証範囲ごとにハッシュ値および署名値を生成し、検証に使用することも可能である。
なお、上記実施形態及び各変形例では、BIOSを例に挙げ説明したが、BIOS以外のファームウェア及びソフトウェア(プログラム)にも本発明を適用可能である。例えば、MFP100がNICを具備する場合、組み込みコントローラ212がNICのファームウェアにアクセスできるようにバスを繋げる。そして、NICファームウェアのゴールデンコピーを組み込みコントローラ212からのみアクセス可能なSPI-Flashに格納するように構成する。これにより、NICファームウェアの復旧及びNICファームウェアのゴールデンコピーのアップデートを実現できる。
また、上記実施形態およびその変形例では、組み込みコントローラ212が直接組み込みコントローラソフト350を起動する例で説明したが、多段に起動するようにしてもよい。例えば、組み込みコントローラソフト350の改ざん検知(署名検証)、及びその起動を行う起動用ソフトウェアを組み込みコントローラ212のROM内に保存することで多段にできる。このようにすることで、最初に組み込みコントローラ212のROM内に保存された起動用ソフトウェアが立ち上がり、SPI-Flashに保存された組み込みコントローラソフト350の改ざん有無を検証する。そして、改ざんがない場合に限り、組み込みコントローラソフト350を起動するように制御できる。なお、この場合別途組み込みコントローラソフト350のデジタル署名値をSPI-Flash内に保持することとなる。
(その他の実施形態)
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
発明は上記実施形態に制限されるものではなく、発明の精神及び範囲から離脱することなく、様々な変更及び変形が可能である。従って、発明の範囲を公にするために請求項を添付する。
100:MFP、101:コントローラ部、201:CPU、212:組み込みコントローラ、300:コントローラソフト、350:組み込みコントローラソフト、351:改ざん検知部、352:復旧部、353:設定領域読み込み部、354:バージョン比較部、355:第1のアップデート部

Claims (12)

  1. 第1のブートコードを保持する第1の保存媒体と、前記第1のブートコードの復旧に用いる第2のブートコードを保持する第2の保存媒体とを備える情報処理装置であって、
    前記第1のブートコードの検証範囲を指定する第1の検証範囲設定領域および前記第2のブートコードの検証範囲を指定する第2の検証範囲設定領域の改ざんの有無を検証する第1の検証手段と、
    前記第1の検証範囲設定領域が改ざんされていない場合、前記第1のブートコードの改ざんの有無を検証する第2の検証手段と、
    前記第1のブートコードが改ざんされており且つ前記第2の検証範囲設定領域が改ざんされていない場合、前記第2のブートコードの改ざんの有無を検証する第3の検証手段と、
    前記第2のブートコードが改ざんされていない場合、前記第2のブートコードを用いて前記第1のブートコードを復旧する復旧手段と、を備え、
    前記第1の検証範囲設定領域および第2の検証範囲設定領域は、前記情報処理装置の起動後に書き換わらない領域であることを特徴とする情報処理装置。
  2. 前記第3の検証手段は、さらに、前記第1の検証範囲設定領域が改ざんされている場合、前記第2のブートコードの改ざんの有無を検証し、
    前記復旧手段は、前記第2のブートコードが改ざんされていない場合、前記第2のブートコードを用いて前記第1のブートコードを復旧することを特徴とする請求項1に記載の情報処理装置。
  3. 前記第1のブートコードを用いて前記第2のブートコードを更新する更新手段をさらに備え、
    前記更新手段は、前記第1の検証範囲設定領域が改ざんされておらず、前記第1のブートコードが改ざんされておらず、且つ前記第2の検証範囲設定領域が改ざんされている場合、更新を行うことを特徴とする請求項1又は2に記載の情報処理装置。
  4. 前記第1の検証範囲設定領域に含まれる前記第1のブートコードのバージョン情報と、前記第2の検証範囲設定領域に含まれる前記第2のブートコードのバージョン情報とを比較する比較手段と、
    前記第1のブートコードのバージョン情報と前記第2のブートコードのバージョン情報とが異なる場合、前記第1のブートコードを用いて前記第2のブートコードを更新する更新手段と、をさらに備え、
    前記比較手段は、前記第1の検証範囲設定領域が改ざんされておらず、前記第1のブートコードが改ざんされておらず、且つ前記第2の検証範囲設定領域が改ざんされていない場合、比較を行うことを特徴とする請求項1又は2に記載の情報処理装置。
  5. 前記第1の検証範囲設定領域および前記第2の検証範囲設定領域の両方が改ざんされている場合、前記情報処理装置の起動処理を中止する中止手段をさらに備えることを特徴とする請求項1乃至4の何れか1項に記載の情報処理装置。
  6. 前記復旧手段により前記第2のブートコードを用いて前記第1のブートコードを復旧する処理を実行した後、前記第1のブートコードの改ざんの有無を検証する第4の検証手段と、
    前記第4の検証手段により前記第1のブートコードが改ざんされていることが検証された場合、前記情報処理装置の起動処理を中止する中止手段と、
    をさらに備えることを特徴とする請求項1乃至4の何れか1項に記載の情報処理装置。
  7. 前記第2の検証手段は、前記第1の保存媒体に記憶された第1の署名値を使用して前記第1のブートコードの改ざんの有無を検証し、
    前記第3の検証手段は、前記第2の保存媒体に記憶された第2の署名値を使用して前記第2のブートコードの改ざんの有無を検証することを特徴とする請求項1乃至6の何れか1項に記載の情報処理装置。
  8. 前記第1のブートコードはBIOSであり、前記第2のブートコードはBIOSゴールデンコピーであることを特徴とする請求項1乃至7の何れか1項に記載の情報処理装置。
  9. 前記第1の検証範囲設定領域により指定される検証範囲は、前記第1の検証範囲設定領域それ自体を含み、
    前記第2の検証範囲設定領域により指定される検証範囲は、前記第2の検証範囲設定領域それ自体を含むことを特徴とする請求項1乃至8の何れか1項に記載の情報処理装置。
  10. 前記情報処理装置は、前記情報処理装置の各手段として機能する組み込みコントローラソフトに従って動作する組み込みコントローラを備えており、
    前記第1の検証範囲設定領域により指定される検証範囲および前記第2の検証範囲設定領域により指定される検証範囲は、前記組み込みコントローラソフトを含むことを特徴とする請求項1乃至8の何れか1項に記載の情報処理装置。
  11. 第1のブートコードを保持する第1の保存媒体と、前記第1のブートコードの復旧に用いる第2のブートコードを保持する第2の保存媒体とを備える情報処理装置の制御方法であって、
    前記第1のブートコードの検証範囲を指定する第1の検証範囲設定領域および前記第2のブートコードの検証範囲を指定する第2の検証範囲設定領域の改ざんの有無を検証する第1の検証工程と、
    前記第1の検証範囲設定領域が改ざんされていない場合、前記第1のブートコードの改ざんの有無を検証する第2の検証工程と、
    前記第1のブートコードが改ざんされており且つ前記第2の検証範囲設定領域が改ざんされていない場合、前記第2のブートコードの改ざんの有無を検証する第3の検証工程と、
    前記第2のブートコードが改ざんされていない場合、前記第2のブートコードを用いて前記第1のブートコードを復旧する復旧工程と、を有し、
    前記第1の検証範囲設定領域および第2の検証範囲設定領域は、前記情報処理装置の起動後に書き換わらない領域であることを特徴とする情報処理装置の制御方法。
  12. コンピュータを、請求項1乃至10の何れか1項に記載の情報処理装置として機能させるためのプログラム。
JP2020191893A 2020-11-18 2020-11-18 情報処理装置、情報処理装置の制御方法及びプログラム Active JP7500400B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2020191893A JP7500400B2 (ja) 2020-11-18 2020-11-18 情報処理装置、情報処理装置の制御方法及びプログラム
US17/528,452 US11928217B2 (en) 2020-11-18 2021-11-17 Information processing apparatus, control method of information processing apparatus, and storage medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2020191893A JP7500400B2 (ja) 2020-11-18 2020-11-18 情報処理装置、情報処理装置の制御方法及びプログラム

Publications (2)

Publication Number Publication Date
JP2022080687A JP2022080687A (ja) 2022-05-30
JP7500400B2 true JP7500400B2 (ja) 2024-06-17

Family

ID=81587608

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020191893A Active JP7500400B2 (ja) 2020-11-18 2020-11-18 情報処理装置、情報処理装置の制御方法及びプログラム

Country Status (2)

Country Link
US (1) US11928217B2 (ja)
JP (1) JP7500400B2 (ja)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010102579A (ja) 2008-10-24 2010-05-06 Hitachi Ltd 情報処理装置、及びコンピュータプログラム
JP2011253408A (ja) 2010-06-03 2011-12-15 Nec Corp サーバシステム及びそのbios復旧方法
JP2020126576A (ja) 2019-01-31 2020-08-20 廣達電腦股▲ふん▼有限公司Quanta Computer Inc. Biosの復旧と更新の方法およびシステム
JP2020160747A (ja) 2019-03-26 2020-10-01 キヤノン株式会社 情報処理装置、その制御方法、及びプログラム

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7464256B2 (en) * 2003-09-18 2008-12-09 Aristocrat Technologies Australia Pty. Limited Bios protection device preventing execution of a boot program stored in the bios memory until the boot program is authenticated
WO2014175861A1 (en) 2013-04-23 2014-10-30 Hewlett-Packard Development Company, L.P. Recovering from compromised system boot code
CN104252419B (zh) * 2014-09-16 2017-09-19 华为技术有限公司 一种内存分配的方法及装置
US10474823B2 (en) * 2016-02-16 2019-11-12 Atmel Corporation Controlled secure code authentication
US11144631B2 (en) * 2018-09-11 2021-10-12 Apple Inc. Dynamic switching between pointer authentication regimes

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010102579A (ja) 2008-10-24 2010-05-06 Hitachi Ltd 情報処理装置、及びコンピュータプログラム
JP2011253408A (ja) 2010-06-03 2011-12-15 Nec Corp サーバシステム及びそのbios復旧方法
JP2020126576A (ja) 2019-01-31 2020-08-20 廣達電腦股▲ふん▼有限公司Quanta Computer Inc. Biosの復旧と更新の方法およびシステム
JP2020160747A (ja) 2019-03-26 2020-10-01 キヤノン株式会社 情報処理装置、その制御方法、及びプログラム

Also Published As

Publication number Publication date
US11928217B2 (en) 2024-03-12
US20220156378A1 (en) 2022-05-19
JP2022080687A (ja) 2022-05-30

Similar Documents

Publication Publication Date Title
US9880908B2 (en) Recovering from compromised system boot code
US9519786B1 (en) Firmware integrity ensurance and update
US11669609B2 (en) Information processing apparatus, control method of the same, and storage medium
US20220284103A1 (en) Information processing apparatus, information processing method, and storage medium
JP2020160747A (ja) 情報処理装置、その制御方法、及びプログラム
JP2019212114A (ja) 情報処理装置、その制御方法およびプログラム
JP2023129643A (ja) 情報処理装置、情報処理方法およびプログラム
JP2008171306A (ja) 電子装置およびプログラム
JP2003058486A (ja) 画像形成装置
JP7500400B2 (ja) 情報処理装置、情報処理装置の制御方法及びプログラム
US11947948B2 (en) Information processing apparatus, information processing method, and storage medium
JP2020082441A (ja) 画像形成装置、その制御方法、及びプログラム
JP7374780B2 (ja) 情報処理装置および情報処理装置の制御方法
KR102467636B1 (ko) 정보 처리장치, 정보 처리장치의 제어방법, 및 기억매체
JP2020053002A (ja) 情報処理装置とその制御方法、及びプログラム
US11907049B2 (en) Information processing apparatus, method of controlling the same, and storage medium with features for updating code and data areas of non-volatile memory
JP2022157063A (ja) 情報処理装置、情報処理方法およびプログラム
JP7011697B1 (ja) 情報処理装置および情報処理方法
US20230132214A1 (en) Information processing apparatus and method of the same
US20230273798A1 (en) Information processing apparatus and method for controlling information processing apparatus
JP2023064046A (ja) 情報処理装置、及びその起動方法
JP2021117523A (ja) 情報処理装置、情報処理装置の処理方法およびプログラム
JP2021117589A (ja) 情報処理装置、情報処理装置の処理方法およびプログラム
JP2023031511A (ja) 情報処理装置及び情報処理装置の制御方法
JP2022187302A (ja) 情報処理装置とその制御方法、及びプログラム

Legal Events

Date Code Title Description
RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20210103

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210113

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20231109

TRDD Decision of grant or rejection written
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20240430

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20240507

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20240605

R150 Certificate of patent or registration of utility model

Ref document number: 7500400

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150