[go: up one dir, main page]

JP2013156799A - Method for updating system firmware and computer - Google Patents

Method for updating system firmware and computer Download PDF

Info

Publication number
JP2013156799A
JP2013156799A JP2012016237A JP2012016237A JP2013156799A JP 2013156799 A JP2013156799 A JP 2013156799A JP 2012016237 A JP2012016237 A JP 2012016237A JP 2012016237 A JP2012016237 A JP 2012016237A JP 2013156799 A JP2013156799 A JP 2013156799A
Authority
JP
Japan
Prior art keywords
module
old
new
new module
block
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
Application number
JP2012016237A
Other languages
Japanese (ja)
Other versions
JP5465738B2 (en
Inventor
Yusaku Morishige
勇作 森重
Mikio Hagiwara
幹雄 萩原
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.)
Lenovo Singapore Pte Ltd
Original Assignee
Lenovo Singapore Pte 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 Lenovo Singapore Pte Ltd filed Critical Lenovo Singapore Pte Ltd
Priority to JP2012016237A priority Critical patent/JP5465738B2/en
Publication of JP2013156799A publication Critical patent/JP2013156799A/en
Application granted granted Critical
Publication of JP5465738B2 publication Critical patent/JP5465738B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Stored Programmes (AREA)

Abstract

【課題】システム・ファームウェアを確実に更新する方法を提供する。
【解決手段】BIOS_ROMのブート・ブロック101には旧CRTM100aが格納されシステム・ブロック103には旧BIOS117a、旧フラッシュ・ドライバ119aおよび旧暗号化ダイジェスト121aが格納され、ステージング・ブロック105には旧CRTM100a−1が格納されている。最初にシステム・ブロックに新BIOS117b、新フラッシュ・ドライバ119b、および新暗号化ダイジェスト121bを書き込み、ステージング・ブロックに新CRTM100b−1を書き込む。リセット後に旧CRTMの一部を実行した後に新CRTMを実行し続いて新フラッシュ・ドライバを実行する。新フラッシュ・ドライバがステージング・ブロックの新CRTMをブート・ブロックに書き込む。
【選択図】図3
A method for reliably updating system firmware is provided.
A BIOS_ROM boot block 101 stores an old CRTM 100a, a system block 103 stores an old BIOS 117a, an old flash driver 119a, and an old encryption digest 121a, and a staging block 105 stores an old CRTM 100a- 1 is stored. First, the new BIOS 117b, the new flash driver 119b, and the new encryption digest 121b are written in the system block, and the new CRTM 100b-1 is written in the staging block. After resetting, after executing a part of the old CRTM, the new CRTM is executed, followed by the new flash driver. The new flash driver writes the new CRTM for the staging block to the boot block.
[Selection] Figure 3

Description

本発明は、コンピュータに実装されるシステム・ファームウェアを更新する技術に関する。   The present invention relates to a technique for updating system firmware implemented in a computer.

コンピュータには、ハードウェアとオペレーティング・システム(OS)、デバイス・ドライバまたはアプリケーション・プログラムなどの上位のプログラムとデバイスの間のインターフェースを提供するBIOSが実装される。BIOSは通常マザーボードに取り付けられたフラッシュ・メモリ(BIOS_ROM)に格納されて電源を起動したときにオペレーティング・システム(OS)をロードする前に実行される。   The computer is equipped with a BIOS that provides an interface between hardware and an operating system (OS), a higher-level program such as a device driver or an application program, and the device. The BIOS is normally stored in a flash memory (BIOS_ROM) attached to the motherboard and executed before loading the operating system (OS) when the power supply is activated.

TCG(Trusted Computing Group)といわれる組織では、コンピュータの製造者がより安全で信頼できるコンピュータを提供するためのハードウェア、BIOSおよびOSの仕様を策定している。TCGの仕様では、BIOSの一部に同一システムで動作するすべてのプログラムの信頼の基礎となるように完全性が保証されたCRTM(Core Root of Trust for Measurement)というコードが定義されている。   In an organization called TCG (Trusted Computing Group), computer manufacturers develop specifications for hardware, BIOS, and OS to provide safer and more reliable computers. In the TCG specification, a code called CRTM (Core Root of Trust for Measurement) whose integrity is guaranteed to be the basis of trust of all programs operating on the same system is defined as part of the BIOS.

CRTMは、コンピュータで実行されるプログラムのなかで絶対的に完全性が保証されている。ここにプログラムの完全性とは、コンピュータの製造者またはシステムのオーナー(以下、製造者という。)以外の者がシステム・ファームウェアの更新または改変をしていないことを意味し、一貫性またはインテグリティ(integrity)などということもある。   The CRTM is absolutely guaranteed to be complete among programs executed on a computer. As used herein, program integrity means that anyone other than the computer manufacturer or system owner (hereinafter referred to as the manufacturer) has not updated or modified the system firmware. integrity).

CRTMはBIOS_ROMに定義されたブート・ブロックという記憶領域に格納される。BIOS_ROMのブート・ブロック以外の記憶領域をシステム・ブロックということにする。また、BIOS_ROMに格納された全体のコードをシステム・ファームウェアということにする。なお、コンピュータには、個別のデバイスのコントローラにデバイス・ファームウェアも実装される。   The CRTM is stored in a storage area called a boot block defined in the BIOS_ROM. A storage area other than the BIOS_ROM boot block is called a system block. The entire code stored in the BIOS_ROM is referred to as system firmware. In the computer, device firmware is also mounted on a controller of an individual device.

プロセッサには、リセットされたときに最初にブート・ブロックのCRTMを実行するようにリセット・ベクタが設定されている。CRTMはBIOSの中の次にプロセッサの制御権を渡すコードの完全性を、制御権を渡す前に検証する。その後制御権を受け取ったコードは他のコードに制御権を渡す前に当該コードの完全性を検証する。以後同様にして順番に後段のプログラムの完全性を検証することで1つのコンピュータで実行されるプログラム全体に信頼のチェーンを構築することができる。このときCRTMは信頼のチェーンのなかで最も上位に位置して信頼の基礎を構築する。   A reset vector is set in the processor to first execute the CRTM of the boot block when reset. The CRTM verifies the integrity of the code that passes the control of the processor next in the BIOS before passing the control. Thereafter, the code that has received the control right verifies the integrity of the code before passing the control right to another code. Thereafter, the chain of trust can be established for the entire program executed on one computer by sequentially verifying the integrity of the subsequent program in the same manner. At this time, CRTM is positioned at the top of the chain of trust and builds the foundation of trust.

ところでシステム・ファームウェアはデバイスの進化とともに随時更新が必要になる。新システム・ファームウェアも旧CRTMから継続して信頼の基礎を築く必要があるため、旧CRTMは新システム・ファームウェアが真正な製造者により製造されたものであることを事前に検証する。また、新CRTMのBIOS_ROMへの書き込みはOSをロードする前の安全な環境で行うことが望ましい。したがって新CRTMを書き込むコードは、旧システム・ファームウェアまたは新システム・ファームウェアの一部としてそれらの中に埋め込まれている。   By the way, the system firmware needs to be updated as the device evolves. Since the new system firmware also needs to continue to build the foundation of trust from the old CRTM, the old CRTM verifies in advance that the new system firmware was manufactured by a genuine manufacturer. Also, it is desirable to write the new CRTM into the BIOS_ROM in a safe environment before loading the OS. Thus, the code that writes the new CRTM is embedded in them as part of the old system firmware or the new system firmware.

特許文献1は、ブート・ブロックにCRTMが格納されBIOSブロックにBIOSが格納されたプライマリ・フラッシュ・バンクと、CRTMとBIOSのコピーをブート・ブロックとBIOSブロックに格納するセカンダリ・フラッシュ・バンクを備えるコンピュータ・システムを開示する。一方のバンクのBIOSを実行できないときは他方のバンクに切り換える。また、ブート・ブロックには、CRTMを更新するためのコードが格納されている。   Patent Document 1 includes a primary flash bank in which a CRTM is stored in a boot block and a BIOS is stored in a BIOS block, and a secondary flash bank in which a copy of the CRTM and the BIOS is stored in the boot block and the BIOS block. A computer system is disclosed. When the BIOS of one bank cannot be executed, the bank is switched to the other bank. The boot block stores a code for updating the CRTM.

特許文献2は、CRTMを更新する方法を開示する。同文献に記載する更新方法では、新CRTMをメイン・メモリに展開し、フラグを設定してコンピュータをサスペンド状態に遷移させる。レジュームの際にフラグを検出すると、旧CRTMが新更新モジュールを認証する。BIOS_ROMの被認証モジュールを新更新モジュールで更新したあとにCRTMのロックを解除する。認証された新更新モジュールを実行して、旧CRTMを新CRTMに書き換える。   Patent Document 2 discloses a method for updating CRTM. In the update method described in the document, the new CRTM is developed in the main memory, a flag is set, and the computer is changed to the suspended state. When a flag is detected during resume, the old CRTM authenticates the new update module. After the authenticated module of BIOS_ROM is updated with the new update module, the CRTM lock is released. The authenticated new update module is executed, and the old CRTM is rewritten to the new CRTM.

米国特許7613872号公報U.S. Pat. No. 7613872 特開2008−523494号公報JP 2008-523494 A

CRTMはシステム・ブロックに制御権を移す際にブート・ブロックに書き込み保護(ライト・ロック)を行う。以後、他のコードがライト・ロックを解除することはできないためブート・ブロックはセキュアな記憶領域として構成されている。したがって、CRTMが損傷するとユーザでは容易に復旧できなくなるため、近年はCRTMのコード量を必要最小限に留めるようになってきている。そのために、CRTMを更新するコードもシステム・ブロックに格納するようになってきている。その結果、それまでにない更新時の問題が発見された。   CRTM provides write protection (write lock) to the boot block when transferring control to the system block. Thereafter, since no other code can release the write lock, the boot block is configured as a secure storage area. Accordingly, if the CRTM is damaged, the user cannot easily recover it. In recent years, the CRTM code amount has been kept to a minimum. For this reason, a code for updating the CRTM is also stored in the system block. As a result, an unprecedented update problem was discovered.

図6は、BIOS_ROMに格納された旧システム・ファームウェアを従来の方法で更新する際の問題を説明する図である。更新前の状態を示す図6(A)では、ブート・ブロックに旧CRTM1aが格納され、システム・ブロックには旧BIOS3aと旧CRTM1−aが格納されている。ここでは更新後の状態を示す図6(C)のように、旧CRTM1aを新CRTM1bで書き換え、旧BIOS3aを新BIOS3bで書き換えるものとする。旧CRTM1a−1、新CRTM1b−1は、それぞれ旧CRTM1a、新CRTM1bのコピー元のコードであり、更新時だけ必要とされる。   FIG. 6 is a diagram for explaining a problem when the old system firmware stored in the BIOS_ROM is updated by the conventional method. In FIG. 6A showing the state before the update, the old CRTM 1a is stored in the boot block, and the old BIOS 3a and the old CRTM 1-a are stored in the system block. Here, as shown in FIG. 6C showing the state after the update, the old CRTM 1a is rewritten with the new CRTM 1b, and the old BIOS 3a is rewritten with the new BIOS 3b. The old CRTM 1a-1 and the new CRTM 1b-1 are copy source codes of the old CRTM 1a and the new CRTM 1b, respectively, and are required only when updating.

図6(B)の状態で旧CRTM1aを新CRTM1b−1で書き換えるコードは、新BIOS3bの中に埋め込まれているため、更新を行う際はCPUをリセットして最初に旧CRTM1aを実行する。また、旧CRTM1aは新BIOS3bと新CRTM1b−1で構成される新システム・ファームウェアの完全性を検証してから更新される。このような事情から、システム・ファームウェアの更新は2段階プロセスで行っている。   Since the code for rewriting the old CRTM 1a with the new CRTM 1b-1 in the state of FIG. 6B is embedded in the new BIOS 3b, the CPU is reset and the old CRTM 1a is executed first when updating. The old CRTM 1a is updated after verifying the integrity of the new system firmware composed of the new BIOS 3b and the new CRTM 1b-1. For these reasons, updating the system firmware is performed in a two-stage process.

具体的には、最初に図6(B)に示すようにシステム・ブロックに新BIOS3bと新CRTM1b−1からなる新システム・ファームウェアを書き込む。つぎにCPUをリセットした後、旧CRTM1aが、PKI(Public Key Infrastructure)方式で新システム・ファームウェアの完全性を検証する。旧CRTM1aは、新システム・ファームウェアの完全性を検証すると、自身の更新のためにブート・ブロックに対してライト・ロックをせずに、新BIOS3bにプロセッサの制御権を渡す。新BIOS3bは新CRTM1b−1をブート・ブロックに新CRTM1aとして書き込む。このとき、BIOS_ROMには図6(B)のように、旧CRTM1aと新BIOS3bが混在する状態が発生する。そして、リセットされたプロセッサが旧CRTM1aを実行し、さらに新CRTM1b−1を書き込むために新BIOS3bを実行するときに、CRTMとBIOSとでコーディング/ビルドにおいて同じファイルを参照し、新システム・ファームウェアでそのファイルが更新された場合、旧CRTM1aの変数の定義と新BIOS3bの変数の定義が異なると、その時点でプログラムの実行が中断して更新ができなくなってしまう。   Specifically, first, as shown in FIG. 6B, new system firmware composed of the new BIOS 3b and the new CRTM 1b-1 is written in the system block. Next, after resetting the CPU, the old CRTM 1a verifies the integrity of the new system firmware using the PKI (Public Key Infrastructure) method. When verifying the integrity of the new system firmware, the old CRTM 1a passes the processor control right to the new BIOS 3b without performing a write lock on the boot block for its own update. The new BIOS 3b writes the new CRTM 1b-1 as the new CRTM 1a in the boot block. At this time, a state in which the old CRTM 1a and the new BIOS 3b are mixed occurs in the BIOS_ROM as shown in FIG. 6B. When the reset processor executes the old CRTM 1a and further executes the new BIOS 3b to write the new CRTM 1b-1, the CRTM and the BIOS refer to the same file in coding / build, and the new system firmware When the file is updated, if the definition of the variable of the old CRTM1a is different from the definition of the variable of the new BIOS 3b, the execution of the program is interrupted at that point and the update cannot be performed.

新BIOS3bをコーディングする際に、旧CRTM1aと変数の定義を一致させれば問題はないがシステム・ファームウェアの製造者に過度の負担をかけることになりかねない。また、新システム・ファームウェアは旧CRTM1aからコーディング上の制約を受けることになり、自由に改良を加えることができなくなる。さらに不注意なコーディングをしてしまった場合には、当該モジュールの更新を断念したり、時間をかけてデバッグしたりする必要がある。   When coding the new BIOS 3b, there is no problem if the definition of the variable is matched with that of the old CRTM 1a, but it may put an excessive burden on the manufacturer of the system firmware. In addition, the new system firmware is subject to coding restrictions from the old CRTM 1a and cannot be improved freely. If you code more carelessly, you need to give up updating the module or debug over time.

特許文献2にかかるCRTMの更新方法でも、旧CRTMと新更新モジュールがBIOS_ROMに共存するため同様の問題が生ずる。製造者は、新CRTMと新BIOSとの間では容易に整合性を図ることができるため、2段階プロセスでセキュアに更新するときに旧CRTMとの整合性の問題を回避できることが望ましい。   In the CRTM update method according to Patent Document 2, the same problem occurs because the old CRTM and the new update module coexist in the BIOS_ROM. Since the manufacturer can easily achieve consistency between the new CRTM and the new BIOS, it is desirable to be able to avoid consistency problems with the old CRTM when securely updating in a two-stage process.

そこで本発明の目的は、システム・ファームウェアを確実に更新する方法を提供することにある。さらに本発明の目的は完全性を検証したシステム・ファームウェアで更新する方法を提供することができた。さらに本発明の目的は、ライト・ロックの可能な記憶領域に格納されるコードの量を低減することができる更新方法を提供することにある。さらに本発明の目的は、新システム・ファームウェアのコーディングの自由度を拡大した更新方法を提供することにある。さらに本発明の目的は、そのような方法を実現するコンピュータおよびコンピュータ・プログラムを提供することにある。   Accordingly, an object of the present invention is to provide a method for reliably updating system firmware. Furthermore, the object of the present invention was to provide a method for updating with system firmware whose integrity was verified. It is a further object of the present invention to provide an update method that can reduce the amount of code stored in a write-lockable storage area. It is a further object of the present invention to provide an update method with an increased degree of freedom in coding new system firmware. A further object of the present invention is to provide a computer and a computer program for realizing such a method.

本発明にかかる不揮発性メモリには第1の旧モジュールと第2の旧モジュールが格納されている。第1の旧モジュールを更新する第1の新モジュールと第2の旧モジュールを更新する第2の新モジュールは、外部メモリやネットワークを通じてコンピュータに提供することができる。   The nonvolatile memory according to the present invention stores a first old module and a second old module. The first new module for updating the first old module and the second new module for updating the second old module can be provided to the computer through an external memory or a network.

最初に第2の旧モジュールを上書きするように第1の新モジュールと第2の新モジュールを不揮発性メモリに書き込む。つづいて第1の旧モジュールが第1の新モジュールと第2の新モジュールの完全性を検証する。つづいてプロセッサのリセットに応答して第1の新モジュールを実行する。さらにつづいて、第1の新モジュールに続いて実行される第2の新モジュールが第1の新モジュールを第1の旧モジュールが書き込まれていた記憶領域に上書きする。   First, the first new module and the second new module are written into the nonvolatile memory so as to overwrite the second old module. Subsequently, the first old module verifies the integrity of the first new module and the second new module. Subsequently, the first new module is executed in response to the reset of the processor. Subsequently, the second new module executed following the first new module overwrites the first new module in the storage area in which the first old module was written.

このような手順により、第1の旧モジュールと第2の旧モジュールを、通常のブートでOSをロードする前に、完全性を検証した第1の新モジュールと第2の新モジュールで更新することができる。このとき、プロセッサがリセットされると第1の新モジュールを実行してから第2の新モジュールに制御権が移るため、第1の旧モジュールと第2の新モジュールとの間での変数の定義が整合していなくてもプログラムの実行が途中で停止することはない。製造者は第1の新モジュールと第2の新モジュールの間で定義する変数の整合性を図ればよいため、第1の旧モジュールの制約を受けないで新システム・ファームウェアをコーディングすることができる。   By such a procedure, the first old module and the second old module are updated with the first new module and the second new module whose integrity has been verified before loading the OS in a normal boot. Can do. At this time, when the processor is reset, the control right is transferred to the second new module after the first new module is executed. Therefore, the variable definition between the first old module and the second new module is performed. Even if they are not consistent, program execution will not stop halfway. Since the manufacturer only needs to match the variables defined between the first new module and the second new module, the new system firmware can be coded without being restricted by the first old module. .

第1の旧モジュールは不揮発性メモリの書き込み保護の可能な記憶領域に書き込むことができる。また書き込み保護の可能な記憶領域は、リセットしたプロセッサが最初に実行するアドレスを有するブート・ブロックとすることができる。このとき、第2の新モジュールが第1の新モジュールをブート・ブロックに書き込むため、ブート・ブロックに格納するコードの量を低減することができる。第1の旧モジュールと第1の新モジュールはコンピュータで実行されるプログラムの完全性を保証する信頼のチェーンにおいて最上位に位置するCRTM(Core Root of Trust for Measurement)とすることができる。   The first old module can write to a write-protected storage area of the nonvolatile memory. The storage area that can be write-protected can be a boot block having an address that is first executed by the reset processor. At this time, since the second new module writes the first new module into the boot block, the amount of code stored in the boot block can be reduced. The first old module and the first new module can be a Core Root of Trust for Measurement (CRTM) that is positioned at the top of a chain of trust that ensures the integrity of a program executed on a computer.

第1の新モジュールを実行するステップでは、第1の旧モジュールが第1の旧モジュールの残りの部分と第1の新モジュールのいずれを実行するかを判断することができる。このとき不揮発性メモリに第1の旧モジュールと第2の新モジュールが共存することを示す混在フラグを設定することができる。このとき、判断するステップにおいて混在フラグを確認するようにしてもよい。   In the step of executing the first new module, it can be determined whether the first old module executes the remaining part of the first old module or the first new module. At this time, it is possible to set a mixed flag indicating that the first old module and the second new module coexist in the nonvolatile memory. At this time, the mixed flag may be confirmed in the determining step.

フラッシュ・ツールと第1の新モジュールと第2の新モジュールを格納するブート・デバイスを接続し、第1の新モジュールと第2の新モジュールを書き込んだあとにフラッシュ・ツールが更新フラグを設定することができる。このとき、混在フラグを設定するステップは、プロセッサのリセットに応答して実行された第1の旧モジュールが更新フラグを確認して実行するようにしてもよい。第1の新モジュールと第2の新モジュールはフラッシュ・ツールが書き込むようにしてもよい。また、フラッシュ・ツールを実行する前に第1の旧モジュールがその完全性を検証することが望ましい。   The flash tool sets the update flag after writing the first new module and the second new module after connecting the boot tool storing the first new module and the second new module. be able to. At this time, the step of setting the mixed flag may be executed by the first old module executed in response to the reset of the processor confirming the update flag. The first new module and the second new module may be written by the flash tool. It is also desirable for the first old module to verify its integrity before executing the flash tool.

本発明により、システム・ファームウェアを確実に更新する方法を提供することができた。さらに本発明により完全性を検証したシステム・ファームウェアで更新する方法を提供することができた。さらに本発明により、ライト・ロックの可能な記憶領域に格納されるコードの量を低減することができる更新方法を提供することができた。さらに本発明により、新システム・ファームウェアのコーディングの自由度を拡大した更新方法を提供することができた。さらに本発明により、そのような方法を実現するコンピュータおよびコンピュータ・プログラムを提供することができた。   The present invention can provide a method for reliably updating the system firmware. Furthermore, the present invention can provide a method for updating with system firmware whose integrity has been verified. Furthermore, according to the present invention, it is possible to provide an update method capable of reducing the amount of code stored in a write-lockable storage area. Furthermore, according to the present invention, an update method with an increased degree of freedom in coding the new system firmware can be provided. Furthermore, according to the present invention, it is possible to provide a computer and a computer program for realizing such a method.

本発明にかかるノートPCの概略の機能ブロック図である。1 is a schematic functional block diagram of a notebook PC according to the present invention. 不揮発性メモリ、USBメモリ、およびNVRAMのデータ構造の一例を示す図である。It is a figure which shows an example of the data structure of a non-volatile memory, USB memory, and NVRAM. システム・ファームウェアを更新する際の、BIOS_ROMのデータの変遷を示す図である。It is a figure which shows the transition of the data of BIOS_ROM at the time of updating system firmware. システム・ファームウェアの更新手順を示すフローチャートである。It is a flowchart which shows the update procedure of a system firmware. システム・ファームウェアの更新手順を示すフローチャートである。It is a flowchart which shows the update procedure of a system firmware. システム・ファームウェアを更新する際の問題を説明する図である。It is a figure explaining the problem at the time of updating system firmware.

図1は、ノートブック型パーソナル・コンピュータ(ノートPC)10の主要なハードウェアの構成を示す機能ブロック図である。図1には本発明の説明に必要な範囲のハードウェアだけを記載している。本発明においてはハードウェアの構成は周知であるためここでは簡略的に説明する。ノース・ブリッジ13には、CPU11、メイン・メモリ15、ビデオ・コントローラ17およびサウス・ブリッジ21が接続される。ビデオ・コントローラ17には、LCD19が接続される。   FIG. 1 is a functional block diagram showing a main hardware configuration of a notebook personal computer (notebook PC) 10. FIG. 1 shows only the hardware necessary to explain the present invention. Since the hardware configuration is well known in the present invention, it will be briefly described here. The north bridge 13 is connected to the CPU 11, the main memory 15, the video controller 17, and the south bridge 21. An LCD 19 is connected to the video controller 17.

サウス・ブリッジ21はさまざまな規格のインターフェースを備え、図1には代表的にSATAにハードディスク・ドライブ(HDD)23が接続され、SPIにBIOS_ROM25が接続され、USBにUSBコネクタ27が接続され、LPCにNVRAM31が接続されている様子を示している。BIOS_ROM25は、ノートPC10のマザーボードに取り付けられている。USBメモリ29は、USBコネクタ27に接続する外部メモリとすることができる。NVRAM31は、電源が停止しても記憶を保持する不揮発性のメモリでリード・ロックおよびライト・ロックの可能なセキュアな記憶領域を備えている。   The south bridge 21 has interfaces of various standards. In FIG. 1, a hard disk drive (HDD) 23 is typically connected to SATA, a BIOS_ROM 25 is connected to SPI, a USB connector 27 is connected to USB, and an LPC Fig. 9 shows a state in which the NVRAM 31 is connected. The BIOS_ROM 25 is attached to the motherboard of the notebook PC 10. The USB memory 29 can be an external memory connected to the USB connector 27. The NVRAM 31 is a non-volatile memory that retains memory even when the power is stopped, and has a secure storage area that can be read / locked and locked.

図2は、BIOS_ROM25、USBメモリ29、およびNVRAM31のデータ構造の一例を示す図である。BIOS_ROM25の記憶領域には、ブート・ブロック101、システム・ブロック103およびステージング・ブロック105が定義されている。BIOS_ROM25に格納されたすべてのコードおよびデータをシステム・ファームウェアという。BIOS_ROM25に格納されたコードの参照番号には、更新前のコードにはサフィックスaを、更新後のコードにはサフィックスbを付している。以下の説明では、更新前のコードについての説明は更新後のコードにも適用する。   FIG. 2 is a diagram illustrating an example of the data structure of the BIOS_ROM 25, the USB memory 29, and the NVRAM 31. In the storage area of the BIOS_ROM 25, a boot block 101, a system block 103, and a staging block 105 are defined. All codes and data stored in the BIOS_ROM 25 are called system firmware. In the reference numbers of codes stored in the BIOS_ROM 25, a suffix a is added to the code before the update, and a suffix b is added to the code after the update. In the following description, the description about the code before the update applies to the code after the update.

ブート・ブロック101に格納されたコード全体を旧CRTM100aという。旧CRTM100aは、CPU11がリセットされたときに最初に実行されるリセット・ベクタのアドレスを有する。ブート・ブロック101は、BIOS_ROM25の中で書き込みを禁止するライト・ロックの設定が可能な記憶領域である。旧CRTM100aは、通常のブート・ルーチンを実行する際にはCPU11の制御権をシステム・ブロック103に格納された旧BIOS117aに移す前に、サウス・ブリッジ21のSPIインターフェースを使用して、ブート・ブロック101をライト・ロックする。   The entire code stored in the boot block 101 is referred to as an old CRTM 100a. The old CRTM 100a has the address of the reset vector that is executed first when the CPU 11 is reset. The boot block 101 is a storage area in the BIOS_ROM 25 in which a write lock that prohibits writing can be set. The old CRTM 100a uses the SPI interface of the south bridge 21 to transfer the control right of the CPU 11 to the old BIOS 117a stored in the system block 103 when executing a normal boot routine. 101 is write-locked.

旧CRTM100aは、本実施の形態にかかる更新を実行する際には、ライト・ロックを設定しないで新CRTM100b−1にジャンプするがその手順は後に説明する。ライト・ロックはサウス・ブリッジ21がリセットされたときに自動的に解除される。旧CRTM100aは、更新のとき以外は自身がCRTMであるが故に、ブート・ブロック101のライト・ロックを行う。また、旧CRTM100aは新CRTM100bをブート・ブロック101に上書きする際に、事前に新CRTM100bの完全性の検証をしてからライト・ロックを行わない判断処理をする。したがって、更新にかかる新CRTM100bは製造されてからマルウェアにより改竄されることはなく、また、旧CRTM100aまたは最初のCRTMを製造した製造者により製造されたものであることが一貫して保証される。   The old CRTM 100a jumps to the new CRTM 100b-1 without setting the write lock when executing the update according to the present embodiment. The procedure will be described later. The write lock is automatically released when the south bridge 21 is reset. Since the old CRTM 100a itself is a CRTM except when it is updated, the old CRTM 100a performs the write lock of the boot block 101. In addition, when the old CRTM 100a overwrites the boot block 101 with the new CRTM 100b, the old CRTM 100a verifies the integrity of the new CRTM 100b in advance and performs a determination process not to perform a write lock. Therefore, the new CRTM 100b related to the update is not altered by malware after it is manufactured, and it is consistently guaranteed that it is manufactured by the manufacturer who manufactured the old CRTM 100a or the first CRTM.

旧CRTM100aは、基本デバイス初期化コード111a、実行パス制御コード112a、完全性検証コード113a、および更新処理コード115aといった必要最小限のコードで構成されている。基本デバイス初期化コード111aは、リセットされたCPU11がメイン・メモリ15を使用できるようにするために必要な最小限のデバイスに対するPOST(Power On Self Test)処理をするためのコードである。   The old CRTM 100a is composed of minimum necessary codes such as a basic device initialization code 111a, an execution path control code 112a, an integrity verification code 113a, and an update processing code 115a. The basic device initialization code 111 a is a code for performing a POST (Power On Self Test) process for a minimum device necessary for enabling the reset CPU 11 to use the main memory 15.

実行パス制御コード112aは、NVRAM31の混在フラグ153を参照して、ブート・ルーチンを通常のブート・ルーチンと更新のブート・ルーチンのいずれかに決定する。実行パス制御コード112aはBIOS_ROM25に旧CRTM100aと新システム・ファームウェアが混在する状態で実行される旧CRTM100aのコードをできるだけ少なくするために、基本デバイス初期化コード111が実行されてからできるだけ早い段階で実行される。完全性検証コード113aは更新時に新システム・ファームウェアのハッシュ値を計算したり、通常のブート時にCPU11の制御権を渡す前に旧BIOS117aのハッシュ値を計算したりするためのSHA−1エンジンを含む。   The execution path control code 112a refers to the mixed flag 153 of the NVRAM 31 and determines the boot routine as either a normal boot routine or an update boot routine. The execution path control code 112a is executed as early as possible after the basic device initialization code 111 is executed in order to minimize the code of the old CRTM 100a executed in a state where the old CRTM 100a and the new system firmware are mixed in the BIOS_ROM 25. Is done. The integrity verification code 113a includes a SHA-1 engine for calculating a hash value of the new system firmware at the time of update, and calculating a hash value of the old BIOS 117a before passing the control right of the CPU 11 at the normal boot time. .

完全性検証コード113aは、新システム・ファームウェアの完全性をPKI方式で検証するための公開鍵を含む。完全性検証コード113aは、実際のブート・ルーチンにおいて次にCPU11の制御権を渡すBIOS117aの完全性を検証する。更新処理コード115aは、NVRAM31の更新フラグ151を参照して、BIOS_ROM25に旧CRTM100aと新システム・ファームウェアが混在すると判断したときにNVRAM31に混在フラグ153を設定し、混在しないと判断したときは通常のブート・ルーチンに従ってブート・ブロック101をライト・ロックしてからBIOS117aにCPU11の制御権を渡す。   The integrity verification code 113a includes a public key for verifying the integrity of the new system firmware by the PKI method. The integrity verification code 113a verifies the integrity of the BIOS 117a that passes the control right of the CPU 11 next in the actual boot routine. The update processing code 115a refers to the update flag 151 of the NVRAM 31. When it is determined that the old CRTM 100a and the new system firmware are mixed in the BIOS_ROM 25, the mixed flag 153 is set in the NVRAM 31, and when it is determined that they are not mixed, it is normal. After the boot block 101 is write-locked according to the boot routine, the control right of the CPU 11 is transferred to the BIOS 117a.

システム・ブロック103は、システム・ファームウェアの中でCRTM以外のコードを格納する記憶領域である。システム・ブロック103の先頭アドレスは固定アドレスになっている。システム・ブロック103には、旧BIOS117a、旧フラッシュ・ドライバ119aおよび旧暗号化ダイジェスト121aが格納されている。旧BIOS117aは、デバイスの検査および初期化をするPOSTコード、デバイスを直接制御するI/Oコード、パワーオン・パスワードやHDDパスワードの処理をするパスワード処理コード、セットアップ画面を表示してBIOSのセットアップをするためのセットアップ・コード、ノートPC10の電源を制御するパワー・マネジメント・コードなどの複数のモジュールで構成されている。   The system block 103 is a storage area for storing codes other than CRTM in the system firmware. The start address of the system block 103 is a fixed address. The system block 103 stores an old BIOS 117a, an old flash driver 119a, and an old encryption digest 121a. The old BIOS 117a displays a POST code for inspecting and initializing the device, an I / O code for directly controlling the device, a password processing code for processing a power-on password and an HDD password, and a setup screen to set up the BIOS. For example, and a power management code for controlling the power supply of the notebook PC 10.

旧BIOS117aはつぎにCPU11の制御権を渡すデバイス・ファームウェアやブート・ローダの完全性を検証するためのSHA−1エンジンおよび公開鍵を保有していてもよい。このように各モジュールが次に制御権を渡すモジュールの完全性を検証することで、旧CRTM100aを基点としてシステム全体におけるソフトウェアの信頼のチェーンを構築することができる。   The old BIOS 117a may have a SHA-1 engine and a public key for verifying the integrity of the device firmware and the boot loader that pass control of the CPU 11 next. Thus, by verifying the completeness of the module to which each module next passes the control right, it is possible to construct a software trust chain in the entire system based on the old CRTM 100a.

旧フラッシュ・ドライバ119aは、前回更新されたときにステージング・ブロック105に書き込まれた旧CRTM100a−1をブート・ブロック101に書き込むためにコピー元となったコードである。旧フラッシュ・ドライバ119aは、旧システム・ファームウェアが更新された後は実行されることはない。旧暗号化ダイジェスト121aは、旧システム・ファームウェアのハッシュ値を真正な製造者が保有する秘密鍵で暗号化したデータである。このダイジェストはシステム・ブロック103およびステージング・ブロック105が対象となっている。ステージング・ブロック105は、システム・ファームウェアを更新するために一時的に使用する記憶領域である。ステージング・ブロック105の先頭アドレスは固定アドレスになっている。ステージング・ブロック105には、旧CRTM100a−1が格納されている。旧CRTM100a−1は、ブート・ブロック101に格納された旧CRTM100aと同じコードで更新時だけに必要とされる。   The old flash driver 119 a is a code that is a copy source for writing the old CRTM 100 a-1 written in the staging block 105 when it was last updated into the boot block 101. The old flash driver 119a is not executed after the old system firmware is updated. The old encryption digest 121a is data obtained by encrypting a hash value of the old system firmware with a secret key held by a genuine manufacturer. This digest covers the system block 103 and the staging block 105. The staging block 105 is a storage area temporarily used for updating the system firmware. The start address of the staging block 105 is a fixed address. In the staging block 105, the old CRTM 100a-1 is stored. The old CRTM 100a-1 is required only when updating with the same code as the old CRTM 100a stored in the boot block 101.

USBメモリ29は、新システム・ファームウェア131、フラッシュ・ツール133、OS135および暗号化ダイジェスト137を含む。新システム・ファームウェア131は、BIOS_ROM25に格納された旧システム・ファームウェアを書き換えるための新しいコードである。フラッシュ・ツール133は、CPU11がリセットされたときに旧CRTM100aに通常のブートではなく更新をさせるための処理をするコードである。   The USB memory 29 includes a new system firmware 131, a flash tool 133, an OS 135, and an encryption digest 137. The new system firmware 131 is a new code for rewriting the old system firmware stored in the BIOS_ROM 25. The flash tool 133 is a code that performs processing for causing the old CRTM 100a to update instead of normal boot when the CPU 11 is reset.

フラッシュ・ツール133は更新の際に、新システム・ファームウェア131をメイン・メモリ15に展開する。OS135は、フラッシュ・ツール133とハードウェアとのインターフェースを提供するプログラムである。暗号化ダイジェスト137は、USBメモリ29に記憶されたフラッシュ・ツール133およびOS135のハッシュ値を旧システム・ファームウェアの製造者が保有する秘密鍵で暗号化したデータである。   The flash tool 133 expands the new system firmware 131 in the main memory 15 when updating. The OS 135 is a program that provides an interface between the flash tool 133 and hardware. The encryption digest 137 is data obtained by encrypting the hash values of the flash tool 133 and the OS 135 stored in the USB memory 29 with a secret key held by the manufacturer of the old system firmware.

NVRAM31は、更新フラグ151および混在フラグ153を保有する。更新フラグ151はフラッシュ・ツール133が設定し、混在フラグ153は旧CRTM100aの更新処理コード115aが設定する。更新フラグ151および混在フラグ153は、NVRAM31のライト・ロックの可能な記憶領域に設定される。NVRAM31のライト・ロックはサウス・ブリッジ21がリセットされたときに解除されるが、更新処理コード115aは、更新フラグ151または混在フラグ153を設定したあとにサウス・ブリッジ21のLPCインターフェースにライト・ロックを設定する。旧BIOS117aは、ブート・デバイスがUSBメモリ29であると判断したときは、フラッシュ・ツール133に制御権を渡す際にNVRAM31のライト・ロックを解除する。   The NVRAM 31 has an update flag 151 and a mixed flag 153. The update flag 151 is set by the flash tool 133, and the mixed flag 153 is set by the update processing code 115a of the old CRTM 100a. The update flag 151 and the mixed flag 153 are set in a write-lockable storage area of the NVRAM 31. The write lock of the NVRAM 31 is released when the south bridge 21 is reset, but the update processing code 115a writes the lock to the LPC interface of the south bridge 21 after setting the update flag 151 or the mixed flag 153. Set. When the old BIOS 117a determines that the boot device is the USB memory 29, the old BIOS 117a releases the write lock of the NVRAM 31 when the control right is transferred to the flash tool 133.

図3は、システム・ファームウェアを更新するときのBIOS_ROM25に書き込まれているコードの変遷を示す図である。図3(A)は更新前の状態を示し、図3(B)は更新途中の状態を示し、図3(C)は更新が完了した状態を示している。図4、図5はシステム・ファームウェアの更新手順を示すフローチャートである。つぎに図3〜図5に基づいて、システム・ファームウェアを更新する手順を説明する。   FIG. 3 is a diagram showing the transition of codes written in the BIOS_ROM 25 when the system firmware is updated. FIG. 3A shows a state before update, FIG. 3B shows a state in the middle of update, and FIG. 3C shows a state in which the update is completed. 4 and 5 are flowcharts showing a system firmware update procedure. Next, a procedure for updating the system firmware will be described with reference to FIGS.

図4のブロック201では、BIOS_ROM25に図3(A)に示すように旧システム・ファームウェアが格納されている。旧システム・ファームウェアは、ブート・ブロック101に格納された旧CRTM100a、システム・ブロック103に格納された旧BIOS117a、旧フラッシュ・ドライバ119a、および旧暗号化ダイジェスト121a、ステージング・ブロック105に格納された旧CRTM100a−1で構成されている。   In the block 201 of FIG. 4, the old system firmware is stored in the BIOS_ROM 25 as shown in FIG. The old system firmware includes the old CRTM 100 a stored in the boot block 101, the old BIOS 117 a stored in the system block 103, the old flash driver 119 a, the old encryption digest 121 a, and the old stored in the staging block 105. It consists of CRTM100a-1.

更新の理由は、ブート・ブロック101に格納された旧CRTM100aおよびシステム・ブロック103に格納された旧BIOS117aまたはいずれか一方のコードに存在する。ブロック203で、新システム・ファームウェア131を含むUSBメモリ29をUSBコネクタ27に装着してパワー・オフ状態から電源を起動するとCPU11がリセットされて旧CRTM100aが実行される。このときサウス・ブリッジ21もリセットされてNVRAM31のライト・ロックが自動的に解除される。つぎに旧CRTM100aに続いてBIOS117aのPOSTコードが実行される。   The reason for the update is in the old CRTM 100a stored in the boot block 101 and / or the old BIOS 117a stored in the system block 103. In block 203, when the USB memory 29 including the new system firmware 131 is attached to the USB connector 27 and the power is started from the power-off state, the CPU 11 is reset and the old CRTM 100a is executed. At this time, the south bridge 21 is also reset, and the write lock of the NVRAM 31 is automatically released. Next, the POST code of the BIOS 117a is executed following the old CRTM 100a.

POSTコードが実行されている間に、ユーザは特定のファンクション・キーを押下してセットアップ・コードを呼び出しLCD19にBIOSのセットアップ画面を表示する。ユーザはセットアップ画面を通じてUSBメモリ29をブート・デバイスの最上位に設定しセットアップを終了する。POSTが終了すると、ブロック205でBIOS117aは、完全性を検証してからフラッシュ・ツール133およびOS135をメイン・メモリ15にロードする。   While the POST code is being executed, the user presses a specific function key to call up the setup code and display the BIOS setup screen on the LCD 19. The user sets the USB memory 29 to the highest level of the boot device through the setup screen and ends the setup. When POST is completed, the BIOS 117a verifies the integrity in block 205 and then loads the flash tool 133 and OS 135 into the main memory 15.

ブロック207でフラッシュ・ツール133は、新システム・ファームウェア131をメイン・メモリ15に読み出し、ブロック209でシステム・ブロック103とステージング・ブロック105に新システム・ファームウェアを書き込む。このときのBIOS_ROM25の状態を図3(B)に示す。図3(B)では、ブート・ブロック101には旧CRTM100aが格納されているが、システム・ブロック103には新BIOS117b、新フラッシュ・ドライバ119b、新暗号化ダイジェスト121bが書き込まれ、ステージング・ブロック105には新CRTM100b−1が書き込まれている。   In block 207, the flash tool 133 reads the new system firmware 131 into the main memory 15, and in block 209 writes the new system firmware in the system block 103 and the staging block 105. The state of the BIOS_ROM 25 at this time is shown in FIG. In FIG. 3B, the boot block 101 stores the old CRTM 100a, but the system block 103 is written with the new BIOS 117b, new flash driver 119b, and new encryption digest 121b, and the staging block 105. Is written with a new CRTM 100b-1.

ブロック211でフラッシュ・ツール133はNVRAM31に更新フラグ151を設定する。ブロック213でフラッシュ・ツール133は電源を再起動する。ノートPC10がパワー・オン・リセットされるとCPU11は図5のブロック301で旧CRTM100aを実行してブートを開始する。このときNVRAM31のライト・ロックも自動的に解除される。ブロック303で実行パス制御コード112aは、NVRAM31の混在フラグ153を参照する。   In block 211, the flash tool 133 sets the update flag 151 in the NVRAM 31. At block 213, the flash tool 133 restarts the power supply. When the notebook PC 10 is powered on / reset, the CPU 11 starts the boot by executing the old CRTM 100a in block 301 of FIG. At this time, the write lock of the NVRAM 31 is also automatically released. In block 303, the execution path control code 112 a refers to the mixed flag 153 in the NVRAM 31.

この時点では混在フラグ153が設定されていないので、実行パス制御コード112aは完全性検証コード113aにジャンプする。ブロック305で完全性検証コード113aはシステム・ブロック103とステージング・ブロック105に書き込まれた新システム・ファームウェア131の完全性を検証する。完全性検証コード113aは、新システム・ファームウェア131のハッシュ値を計算する。   Since the mixed flag 153 is not set at this time, the execution path control code 112a jumps to the integrity verification code 113a. In block 305, the integrity verification code 113a verifies the integrity of the new system firmware 131 written to the system block 103 and the staging block 105. The integrity verification code 113a calculates a hash value of the new system firmware 131.

完全性検証コード113aは、新暗号化ダイジェスト121bを生成する際にダイジェストの暗号化に使用した秘密鍵と対で生成された公開鍵で新暗号化ダイジェスト121bを復号したダイジェストと、計算した新システム・ファームウェア131のハッシュ値(ダイジェスト)を比較する。両者が一致したときは、新システム・ファームウェアは旧CRTM100aが保有する公開鍵を提供した製造者が製造したことになり完全性の検証が成功する。両者が一致しないときは、新システム・ファームウェアは真正な製造者が製造したあとに改竄されたか第3者が製造したことになり完全性の検証が失敗する。   The integrity verification code 113a includes the digest obtained by decrypting the new encrypted digest 121b with the public key generated in pair with the secret key used for encrypting the digest when the new encrypted digest 121b is generated, and the calculated new system. The hash values (digests) of the firmware 131 are compared. If the two match, the new system firmware is manufactured by the manufacturer who provided the public key held by the old CRTM 100a, and the integrity verification is successful. If they do not match, the new system firmware has been tampered with after being manufactured by a genuine manufacturer or manufactured by a third party and integrity verification fails.

完全性の検証が失敗したときはブロック311に移行し、成功したときはブロック321に移行する。ブロック311で完全性検証コード113aは、ブート・ブロック101に対するライト・ロックを設定する。ブロック313で完全性検証コード113aはビープ音を鳴らしてユーザに更新が失敗したことを知らせるとともにノートPC10の動作を停止する。   If the integrity verification fails, the process proceeds to block 311, and if successful, the process proceeds to block 321. In block 311, the integrity verification code 113 a sets a write lock for the boot block 101. In block 313, the integrity verification code 113a beeps to inform the user that the update has failed and stops the operation of the notebook PC 10.

これ以降ユーザは、USBメモリ29に完全性のある新システム・ファームウェアを格納して再度更新作業をすることができる。あるいは、新システム・ファームウェアをBIOS_ROM25に書き込む前にシステム・ブロック103に書き込まれていた旧BIOS117a、旧フラッシュ・ドライバ119a、旧暗号化ダイジェスト121aをいずれかの不揮発性メモリに退避しておき、旧システム・ファームウェアに書き戻すようにしてもよい。   Thereafter, the user can store the complete new system firmware in the USB memory 29 and update again. Alternatively, the old BIOS 117a, the old flash driver 119a, and the old encrypted digest 121a written in the system block 103 before writing the new system firmware into the BIOS_ROM 25 are saved in any nonvolatile memory, and the old system is saved. -You may make it write back to firmware.

ブロック321で完全性検証コード113aは更新処理コード115aにCPU11の制御権を渡す。更新処理コード115aはNVRAM31を参照して更新フラグ151を確認する。この時点ではブロック211で更新フラグ151が設定されているためブロック331に移行する。ブロック331で更新処理コード115aは、NVRAM31に混在フラグ153を設定する。ブロック333で更新処理コード115aはブート・ブロック101に対するライト・ロックを設定しないでCPU11をリセットしブロック301に移行する。   In block 321, the integrity verification code 113a passes the control right of the CPU 11 to the update processing code 115a. The update processing code 115 a refers to the NVRAM 31 and confirms the update flag 151. At this time, since the update flag 151 is set in the block 211, the process proceeds to the block 331. In block 331, the update processing code 115 a sets the mixed flag 153 in the NVRAM 31. In block 333, the update processing code 115a resets the CPU 11 without setting a write lock for the boot block 101, and proceeds to block 301.

ブロック321からブロック323に移行するのは、ブロック211で更新フラグ151を設定しないで通常のブート・ルーチンを実行する場合である。ブロック323で更新処理コード115aは、ブート・ブロック101に対してライト・ロックを設定してから、旧BIOS117aのPOSTコードにジャンプし通常のブート・ルーチンを継続する。POSTが終了するとブロック325でBIOS117aは、完全性を検証したブート・ローダを読み出して通常のブート・ルーチンを実行する。   The block 321 is shifted to the block 323 when the normal boot routine is executed without setting the update flag 151 in the block 211. In block 323, the update processing code 115a sets a write lock to the boot block 101, and then jumps to the POST code of the old BIOS 117a to continue the normal boot routine. When POST ends, at block 325, the BIOS 117a reads the boot loader whose integrity has been verified and executes a normal boot routine.

ブロック333からブロック301に移行したときは、サウス・ブリッジ21はリセットされないがブロック333でブート・ブロック101のライト・ロックは解除されたままである。ブロック303で実行パス制御コード112aはNVRAM31の混在表示フラグ153を参照してブロック341に移行する。ブロック341で実行パス制御コード112aは完全性検証コード113aをスキップしてステージング・ブロック105に書き込まれた新CRTM100b−1の先頭アドレスにジャンプする。   When the block 333 is changed to the block 301, the south bridge 21 is not reset, but the write block of the boot block 101 remains released at block 333. In block 303, the execution path control code 112a refers to the mixed display flag 153 in the NVRAM 31 and shifts to block 341. In block 341, the execution path control code 112a skips the integrity verification code 113a and jumps to the start address of the new CRTM 100b-1 written in the staging block 105.

なお、ブロック333でライト・ロックをしてからパワー・オン・リセットをする場合は、実行パス制御コード112aがブート・ブロック101のライト・ロックをせずにブロック341に移行することもできる。ブロック343で新CRTM100b−1は、自身の処理が終わると、システム・ブロック105の新BIOS117bにジャンプする。なお、CRTM100b−1の中で、NVRAM31に混在フラグ153が設定されていることを確認できれば、完全性検証コード113bをスキップすることもできる。   When the power-on reset is performed after the write lock is performed in the block 333, the execution path control code 112a can move to the block 341 without performing the write lock of the boot block 101. At block 343, the new CRTM 100b-1 jumps to the new BIOS 117b of the system block 105 when it completes its processing. If it can be confirmed that the mixed flag 153 is set in the NVRAM 31 in the CRTM 100b-1, the integrity verification code 113b can be skipped.

新BIOS117bは、NVRAM31に混在フラグ153が設定されていることを確認すると、POST処理の間に、新フラッシュ・ドライバ119bを使用してステージング・ブロック105に書き込まれた新CRTM100b−1を、旧CRTM100aが書き込まれたブート・ブロック101に上書きする。このときのBIOS_ROM25の状態を図3(C)に示す。   When the new BIOS 117b confirms that the mixed flag 153 is set in the NVRAM 31, the new CRTM 100b-1 written to the staging block 105 using the new flash driver 119b is replaced with the old CRTM 100a during the POST process. Is overwritten on the boot block 101 in which is written. The state of the BIOS_ROM 25 at this time is shown in FIG.

図3(C)は、ブート・ブロック101にステージング・ブロック105の新CRTM100b−1と同じコードである新CRTM100bが書き込まれている様子を示している。ブロック345で新フラッシュ・ドライバ119bはNVRAM31の更新フラグ151と混在フラグ153を解除して、ブロック347でCPU11をリセットしブロック349で新CRTM100bを実行する。その後、ブロック303に戻って新システム・ファームウェア131による通常のブート・ルーチンが実行される。なお、ステージング・ブロック105の新CRTM100b−1は、これ以降のブートの際に実行されることはない。   FIG. 3C shows a state in which a new CRTM 100 b that is the same code as the new CRTM 100 b-1 in the staging block 105 is written in the boot block 101. In block 345, the new flash driver 119b clears the update flag 151 and the mixed flag 153 of the NVRAM 31, resets the CPU 11 in block 347, and executes the new CRTM 100b in block 349. Thereafter, returning to block 303, the normal boot routine by the new system firmware 131 is executed. Note that the new CRTM 100b-1 of the staging block 105 is not executed during subsequent boots.

新システム・ファームウェア131は、ブロック301からブロック321までの実行パスを経由してブロック323でブート・ブロック101とNVRAM31にライト・ロックを設定してブロック325に移行する。ブロック301以降の手順はノートPC10の電源を起動してからHDD23に格納されたOSをロードする前のマルウェアから攻撃されない安全な環境で実行される。そして旧CRTM100aが新システム・ファームウェア131の完全性を認定しないときは更新を停止するため、セキュアな環境で安全なシステム・ファームウェアに更新することができる。また、完全性の検証は、ブート・ブロック101に格納された当初の製造者の公開鍵を使って行うため、ノートPC10の製造当初からのプログラムの信頼のチェーンを維持することができる。   The new system firmware 131 sets a write lock in the boot block 101 and NVRAM 31 in block 323 via the execution path from block 301 to block 321, and moves to block 325. The procedure after the block 301 is executed in a safe environment that is not attacked by malware before the OS stored in the HDD 23 is loaded after the notebook PC 10 is powered on. Since the update is stopped when the old CRTM 100a does not recognize the integrity of the new system firmware 131, it can be updated to a safe system firmware in a secure environment. In addition, since the integrity verification is performed using the original manufacturer's public key stored in the boot block 101, the chain of trust of the program from the beginning of manufacture of the notebook PC 10 can be maintained.

上記の手順に寄れば、図3(B)のように旧CRTM100aと新システム・ファームウェア131がBIOS_ROM25に併存する状態でブートを開始するときに、旧CRTM100aは混在フラグ153を早い段階で確認すると新CRTM100b−1にジャンプする。製造者は新CRTM100b−1と新BIOS117bを同一のタイミングでコーディングするため変数の定義を容易に整合させることができる。したがって、旧CRTM100aと新BIOS117bの変数の定義が相違しても新CRTM100b−1と新BIOS117bの変数の定義が整合していれば更新の途中でハングアップすることはない。   If the above procedure is followed, when booting is started with the old CRTM 100a and the new system firmware 131 coexisting in the BIOS_ROM 25 as shown in FIG. 3B, the old CRTM 100a will check the mixed flag 153 at an early stage. Jump to CRTM100b-1. Since the manufacturer codes the new CRTM 100b-1 and the new BIOS 117b at the same timing, the definition of variables can be easily matched. Therefore, even if the definitions of the variables of the old CRTM 100a and the new BIOS 117b are different, if the definitions of the variables of the new CRTM 100b-1 and the new BIOS 117b are consistent, there will be no hang-up during the update.

また本実施の形態では、新フラッシュ・ドライバ119bをシステム・ブロック103に格納して新CRTM100bのコード量を少なくすることができるため、CRTMの経年的な信頼性を向上させることができる。これまで、新システム・ファームウェアをUSBメモリ29から提供する方法を説明したが、新システム・ファームウェアの提供方法はこれに限定するものではない。たとえば、ネットワークを通じてHDD23の独立したパーティションに新システム・ファームウェアをダウンロードしてHDD23から提供するようにしてもよい。また旧CRTM100aは、新ファームウェア全体の完全性を検証したが、新CRTM100b−1と新BIOS117bの完全性を個別に検証するようにしてもよい。   In this embodiment, since the new flash driver 119b can be stored in the system block 103 and the code amount of the new CRTM 100b can be reduced, the reliability over time of the CRTM can be improved. So far, the method of providing the new system firmware from the USB memory 29 has been described, but the method of providing the new system firmware is not limited to this. For example, the new system firmware may be downloaded from the HDD 23 to an independent partition of the HDD 23 via the network. The old CRTM 100a verifies the integrity of the entire new firmware, but the integrity of the new CRTM 100b-1 and the new BIOS 117b may be individually verified.

これまで本発明について図面に示した特定の実施の形態をもって説明してきたが、本発明は図面に示した実施の形態に限定されるものではなく、本発明の効果を奏する限り、これまで知られたいかなる構成であっても採用することができることはいうまでもないことである。   Although the present invention has been described with the specific embodiments shown in the drawings, the present invention is not limited to the embodiments shown in the drawings, and is known so far as long as the effects of the present invention are achieved. It goes without saying that any configuration can be adopted.

101 ブート・ブロック
103 システム・ブロック
105 ステージング・ブロック
101 Boot block 103 System block 105 Staging block

Claims (18)

コンピュータが不揮発性メモリに格納された第1の旧モジュールと第2の旧モジュールを第1の新モジュールと第2の新モジュールで更新する方法であって、
前記第2の旧モジュールを上書きするように前記第1の新モジュールと前記第2の新モジュールを書き込むステップと、
前記第1の旧モジュールが前記第1の新モジュールと前記第2の新モジュールの完全性を検証するステップと、
プロセッサのリセットに応答して前記第1の新モジュールを実行するステップと、
前記第1の新モジュールに続いて実行された前記第2の新モジュールが前記第1の新モジュールを前記第1の旧モジュールが書き込まれていた記憶領域に書き込むステップと
を有する方法。
A computer updates a first old module and a second old module stored in a non-volatile memory with a first new module and a second new module,
Writing the first new module and the second new module to overwrite the second old module;
The first old module verifies the integrity of the first new module and the second new module;
Executing the first new module in response to a processor reset;
The second new module executed subsequent to the first new module writing the first new module to the storage area in which the first old module was written.
前記第1の旧モジュールは前記不揮発性メモリの書き込み保護の可能な記憶領域に書き込まれている請求項1に記載の方法。   The method of claim 1, wherein the first old module is written to a write-protected storage area of the non-volatile memory. 前記書き込み保護の可能な記憶領域がリセットした前記プロセッサが最初に実行するアドレスを有するブート・ブロックである請求項1または請求項2に記載の方法。   3. The method according to claim 1, wherein the write-protectable storage area is a boot block having an address that is first executed by the reset processor. 前記第1の旧モジュールおよび前記第1の新モジュールが前記コンピュータで実行されるプログラムの完全性を保証する信頼のチェーンにおいて最上位に位置するCRTM(Core Root of Trust for Measurement)である請求項1から請求項3のいずれかに記載の方法。   2. The Core Root of Trust for Measurement (CRTM), wherein the first old module and the first new module are located at the top of a chain of trust that ensures the integrity of a program executed on the computer. A method according to any of claims 3 to 4. 前記第1の新モジュールを実行するステップが前記第1の旧モジュールが前記第1の旧モジュールと前記第1の新モジュールのいずれを実行するかを判断するステップを含む請求項1から請求項4のいずれかに記載の方法。   The step of executing the first new module includes the step of determining whether the first old module executes the first old module or the first new module. The method in any one of. 前記不揮発性メモリに前記第1の旧モジュールと前記第2の新モジュールが共存することを示す混在フラグを設定するステップを有し、
前記判断するステップが前記混在フラグを確認するステップを含む請求項5に記載の方法。
Setting a mixed flag indicating that the first old module and the second new module coexist in the nonvolatile memory;
6. The method of claim 5, wherein the step of determining includes checking the mixed flag.
フラッシュ・ツールと前記第1の新モジュールと前記第2の新モジュールを格納するブート・デバイスを接続するステップと、
前記第1の新モジュールと前記第2の新モジュールを書き込むステップに続いて前記フラッシュ・ツールが更新フラグを設定するステップを有し、
前記混在フラグを設定するステップを、前記プロセッサのリセットに応答して実行された前記第1の旧モジュールが前記更新フラグを確認して実行する請求項6に記載の方法。
Connecting a flash tool, a boot device storing the first new module and the second new module;
Following the step of writing the first new module and the second new module, the flash tool setting an update flag;
The method according to claim 6, wherein the step of setting the mixed flag is executed by the first old module executed in response to the reset of the processor confirming the update flag.
前記第1の新モジュールと前記第2の新モジュールを書き込むステップを、前記フラッシュ・ツールが実行するステップを含む請求項7に記載の方法。   8. The method of claim 7, wherein the step of writing the first new module and the second new module includes the step of the flash tool performing. 前記コンピュータが第1の旧モジュールを格納するブート・ブロックと第2の旧モジュールを格納するシステム・ブロックと前記第1の旧モジュールを格納するステージング・ブロックが定義された不揮発性メモリを第1の新モジュールと第2の新モジュールで更新する方法であって、
前記システム・ブロックに前記第2の新モジュールを書き込み前記ステージング・ブロックに前記第1の新モジュールを書き込むステップと、
前記第1の旧モジュールが前記第1の新モジュールと前記第2の新モジュールの完全性を検証するステップと、
プロセッサがリセットされたときに前記第1の旧モジュールが実行を完了する前に前記第1の新モジュールを実行するステップと、
前記第1の新モジュールに続いて実行される前記第2の新モジュールが前記第1の新モジュールを前記ブート・ブロックに書き込むステップと
を有する方法。
A non-volatile memory in which a boot block for storing a first old module, a system block for storing a second old module, and a staging block for storing the first old module are defined by the computer. A method of updating with a new module and a second new module,
Writing the second new module to the system block and writing the first new module to the staging block;
The first old module verifies the integrity of the first new module and the second new module;
Executing the first new module before the first old module completes execution when the processor is reset;
The second new module executed subsequent to the first new module writing the first new module to the boot block.
前記ブート・ブロックが前記第1の旧モジュールの製造者が保有する秘密鍵に対応する公開鍵を格納し、前記システム・ブロックが前記第1の新モジュールと前記第2の新モジュールのハッシュ値を前記秘密鍵で暗号化した暗号化ダイジェストを格納し、
前記完全性を検証するステップが、
前記第1の旧モジュールが前記公開鍵で前記暗号化ダイジェストを復号するステップと、
前記第1の旧モジュールが前記第1の新モジュールと前記第2の新モジュールのハッシュ値を計算するステップと
を有する請求項9に記載の方法。
The boot block stores a public key corresponding to a secret key held by a manufacturer of the first old module, and the system block stores hash values of the first new module and the second new module. Storing an encrypted digest encrypted with the secret key;
Verifying the integrity comprises:
The first old module decrypting the encrypted digest with the public key;
The method of claim 9, wherein the first old module comprises calculating a hash value of the first new module and the second new module.
前記第1の新モジュールを実行するステップが前記ブート・ブロックのライト・ロックをしないステップを有する請求項9または請求項10に記載の方法。   The method according to claim 9 or 10, wherein the step of executing the first new module comprises the step of not performing a write lock of the boot block. 更新フラグを設定してプロセッサをリセットするステップと、
前記第1の旧モジュールが前記更新フラグを検出したときに混在フラグを設定して前記プロセッサをリセットするステップとを有し、
前記第1の新モジュールを実行するステップが、前記第1の旧モジュールが前記混在フラグを検出したときに前記第1の新モジュールから前記第1の新モジュールにジャンプするステップを含む請求項9から請求項11のいずれかに記載の方法。
Setting an update flag to reset the processor;
Setting the mixed flag when the first old module detects the update flag and resetting the processor;
The step of executing the first new module includes the step of jumping from the first new module to the first new module when the first old module detects the mixed flag. The method according to claim 11.
前記第1の旧モジュールが前記更新フラグを検出しないときに前記ブート・ブロックに対してライト・ロックを設定して通常のブートを実行するステップを有する請求項12に記載の方法。   The method of claim 12, further comprising setting a write lock on the boot block to perform a normal boot when the first old module does not detect the update flag. プロセッサと、
前記プロセッサがリセットされたときに最初に実行する第1の旧モジュールと該第1の旧モジュールに続いて実行する第2のモジュールを記憶する不揮発性メモリと、
前記第1の旧モジュールを更新する第1の新モジュールと前記第2の旧モジュールを更新する第2の新モジュールを記憶する記憶装置に接続が可能なインターフェースと、
前記第2の旧モジュールを上書きするように前記第1の新モジュールと前記第2の新モジュールを前記不揮発性メモリに書き込む手段と、
前記第1の旧モジュールを実行して前記第1の新モジュールおよび前記第2の新モジュールの完全性を検証する手段と、
前記プロセッサのリセットに応答して前記第1の新モジュールを実行する手段と、
前記第1の新モジュールに続いて実行される前記第2の新モジュールが前記第1の新モジュールを前記第1の旧モジュールが書き込まれていた記憶領域に書き込む手段と
を有するコンピュータ。
A processor;
A non-volatile memory storing a first old module to be executed first when the processor is reset and a second module to be executed subsequent to the first old module;
An interface connectable to a storage device storing a first new module for updating the first old module and a second new module for updating the second old module;
Means for writing the first new module and the second new module to the non-volatile memory to overwrite the second old module;
Means for executing the first old module to verify the integrity of the first new module and the second new module;
Means for executing the first new module in response to a reset of the processor;
A computer comprising: the second new module executed subsequent to the first new module; and means for writing the first new module into a storage area in which the first old module has been written.
前記第1の旧モジュールが書き込まれる記憶領域が、前記第1の旧モジュールが前記第2の旧モジュールに前記プロセッサの制御権を移す前にライト・ロックの設定が可能なブート・ブロックである請求項14に記載のコンピュータ。   The storage area in which the first old module is written is a boot block in which a write lock can be set before the first old module transfers control of the processor to the second old module. Item 15. The computer according to Item 14. 前記第1の旧モジュールおよび前記第1の新モジュールを前記コンピュータの製造者が製造したことがPKI(Public Key Infrastructure)方式で保証されている請求項14または請求項15に記載のコンピュータ。   16. The computer according to claim 14, wherein the first old module and the first new module are guaranteed by a public key infrastructure (PKI) method by the computer manufacturer. 第1の旧モジュールと第2の旧モジュールを格納する不揮発性メモリを第1の新モジュールと第2の新モジュールで更新するためにコンピュータに、
前記第2の旧モジュールを上書きするように書き込まれた前記第1の新モジュールと前記第2の新モジュールの完全性を前記第1の旧モジュールが検証するステップと、
前記コンピュータのリセットに応答して前記第1の旧モジュールから前記第1の新モジュールにジャンプするステップと、
前記第1の新モジュールに続いて実行される前記第2の新モジュールが前記第1の新モジュールを前記第1の旧モジュールが格納されていた記憶領域に書き込むステップと
を含む処理を実行させるコンピュータ・プログラム。
In order to update the non-volatile memory storing the first old module and the second old module with the first new module and the second new module,
The first old module verifying the integrity of the first new module and the second new module written to overwrite the second old module;
Jumping from the first old module to the first new module in response to a reset of the computer;
A computer for executing a process including a step of writing the first new module in a storage area in which the first old module is stored, the second new module executed following the first new module. ·program.
第1の旧モジュールを格納するブート・ブロックと第2の旧モジュールを格納するシステム・ブロックと前記第1の旧モジュールを格納するステージング・ブロックが定義された不揮発性メモリを更新するためにコンピュータに、
前記システム・ブロックに書き込まれた前記第2の新モジュールと前記ステージング・ブロックに書き込まれた前記第1の新モジュールの完全性を前記旧モジュールが検証するステップと、
プロセッサがリセットされたときに前記第1の旧モジュールが実行を完了する前に記第1の新モジュールを実行するステップと、
前記第1の新モジュールに続いて実行される前記第2の新モジュールが前記第1の新モジュールを前記ブート・ブロックに書き込むステップと
を有する処理を実行させるコンピュータ・プログラム。

A computer for updating a non-volatile memory in which a boot block for storing a first old module, a system block for storing a second old module, and a staging block for storing the first old module are defined. ,
The old module verifies the integrity of the second new module written to the system block and the first new module written to the staging block;
Executing the first new module before the first old module completes execution when the processor is reset;
A computer program causing the second new module to be executed subsequent to the first new module to execute a process including writing the first new module to the boot block.

JP2012016237A 2012-01-30 2012-01-30 System firmware update method and computer Active JP5465738B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012016237A JP5465738B2 (en) 2012-01-30 2012-01-30 System firmware update method and computer

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012016237A JP5465738B2 (en) 2012-01-30 2012-01-30 System firmware update method and computer

Publications (2)

Publication Number Publication Date
JP2013156799A true JP2013156799A (en) 2013-08-15
JP5465738B2 JP5465738B2 (en) 2014-04-09

Family

ID=49051924

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012016237A Active JP5465738B2 (en) 2012-01-30 2012-01-30 System firmware update method and computer

Country Status (1)

Country Link
JP (1) JP5465738B2 (en)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015093937A (en) * 2013-11-12 2015-05-18 株式会社豊田中央研究所 Metal complex, dye-sensitized solar cell, dye-sensitized solar cell module, method for producing metal complex and ligand
US9703635B2 (en) 2014-05-22 2017-07-11 Lenovo (Singapore) Pte. Ltd. Method, computer program, and computer for restoring set of variables
JP2021089726A (en) * 2019-11-17 2021-06-10 新唐科技股▲ふん▼有限公司 Computer system, security management method thereof, and computer software product
CN113377409A (en) * 2021-06-21 2021-09-10 西安超越申泰信息科技有限公司 Method, equipment and storage medium for stabilizing BIOS update

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000187588A (en) * 1998-12-21 2000-07-04 Nikon Corp Program rewriting device
JP2006221354A (en) * 2005-02-09 2006-08-24 Internatl Business Mach Corp <Ibm> Information update method, program and information processor
JP2006522377A (en) * 2003-04-10 2006-09-28 インターナショナル・ビジネス・マシーンズ・コーポレーション Determining physical presence in a trusted platform
JP2007115066A (en) * 2005-10-21 2007-05-10 Meidensha Corp Boot program rewriting method for digital terminal
JP2007257197A (en) * 2006-03-22 2007-10-04 Fujitsu Ltd Information processing apparatus having start verification function
WO2008065010A1 (en) * 2006-11-28 2008-06-05 International Business Machines Corporation Core root of trust measurement (crtm) provision in computer systems

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000187588A (en) * 1998-12-21 2000-07-04 Nikon Corp Program rewriting device
JP2006522377A (en) * 2003-04-10 2006-09-28 インターナショナル・ビジネス・マシーンズ・コーポレーション Determining physical presence in a trusted platform
JP2006221354A (en) * 2005-02-09 2006-08-24 Internatl Business Mach Corp <Ibm> Information update method, program and information processor
JP2008523494A (en) * 2005-02-09 2008-07-03 レノボ・シンガポール・プライベート・リミテッド Information updating method, program, and information processing apparatus
JP2007115066A (en) * 2005-10-21 2007-05-10 Meidensha Corp Boot program rewriting method for digital terminal
JP2007257197A (en) * 2006-03-22 2007-10-04 Fujitsu Ltd Information processing apparatus having start verification function
WO2008065010A1 (en) * 2006-11-28 2008-06-05 International Business Machines Corporation Core root of trust measurement (crtm) provision in computer systems

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015093937A (en) * 2013-11-12 2015-05-18 株式会社豊田中央研究所 Metal complex, dye-sensitized solar cell, dye-sensitized solar cell module, method for producing metal complex and ligand
US9703635B2 (en) 2014-05-22 2017-07-11 Lenovo (Singapore) Pte. Ltd. Method, computer program, and computer for restoring set of variables
JP2021089726A (en) * 2019-11-17 2021-06-10 新唐科技股▲ふん▼有限公司 Computer system, security management method thereof, and computer software product
JP7022809B2 (en) 2019-11-17 2022-02-18 新唐科技股▲ふん▼有限公司 Computer systems, their safety management methods, and computer software products
CN113377409A (en) * 2021-06-21 2021-09-10 西安超越申泰信息科技有限公司 Method, equipment and storage medium for stabilizing BIOS update
CN113377409B (en) * 2021-06-21 2024-03-01 超越科技股份有限公司 Method, equipment and storage medium for stabilizing BIOS updating

Also Published As

Publication number Publication date
JP5465738B2 (en) 2014-04-09

Similar Documents

Publication Publication Date Title
CN108399339B (en) Trusted starting method based on security chip
CN104156659B (en) Embedded system secure start method
US8904162B2 (en) Methods and apparatus for performing secure BIOS upgrade
JP6054908B2 (en) Method for repairing variable sets, computer program and computer
US7921286B2 (en) Computer initialization for secure kernel
CN103718165B (en) BIOS flash memory attack protection and notice
CN105637479B (en) Method for modifying computer program, computer system and computer readable medium
US8490179B2 (en) Computing platform
JP5889933B2 (en) Method for preventing malfunction of computer, computer program, and computer
US20140250290A1 (en) Method for Software Anti-Rollback Recovery
JP5307196B2 (en) Providing a system integrated with silicon code
JP2006172376A (en) Information processing system, program, and information processing method
US20080168275A1 (en) Securely Recovering a Computing Device
TWI570591B (en) Allowing use of a test key for a bios installation
KR100872175B1 (en) Secure booting apparatus and method of mobile platform using TPM
US9448785B1 (en) System and method updating full disk encryption software
WO2020037613A1 (en) Security upgrade method, apparatus and device for embedded program, and storage medium
JP2021179982A (en) Security system and method for preventing roll-back attack on silicon device firmware
JP4947239B2 (en) Information processing apparatus having configuration change verification function and control method thereof
JP5465738B2 (en) System firmware update method and computer
CN113360914A (en) BIOS updating method, system, equipment and medium
Bashun et al. Too young to be secure: Analysis of UEFI threats and vulnerabilities
CN115329321A (en) Firmware starting method, chip and computing device
CN117932623B (en) A method and system for securely booting an operating system
EP3440586B1 (en) Method for write-protecting boot code if boot sequence integrity check fails

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131008

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131219

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140122

R150 Certificate of patent or registration of utility model

Ref document number: 5465738

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

R371 Transfer withdrawn

Free format text: JAPANESE INTERMEDIATE CODE: R371

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250