JP2014170255A - Secure boot method - Google Patents

Secure boot method Download PDF

Info

Publication number
JP2014170255A
JP2014170255A JP2011143910A JP2011143910A JP2014170255A JP 2014170255 A JP2014170255 A JP 2014170255A JP 2011143910 A JP2011143910 A JP 2011143910A JP 2011143910 A JP2011143910 A JP 2011143910A JP 2014170255 A JP2014170255 A JP 2014170255A
Authority
JP
Japan
Prior art keywords
code
ram
initialization
virtual machine
initialization code
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.)
Withdrawn
Application number
JP2011143910A
Other languages
Japanese (ja)
Inventor
Takashi Oyama
貴司 大山
Akira Ueda
亮 上田
Akio Koga
章郎 古賀
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.)
Panasonic Corp
Original Assignee
Panasonic Corp
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 Panasonic Corp filed Critical Panasonic Corp
Priority to JP2011143910A priority Critical patent/JP2014170255A/en
Priority to PCT/JP2012/003659 priority patent/WO2013001721A1/en
Publication of JP2014170255A publication Critical patent/JP2014170255A/en
Withdrawn legal-status Critical Current

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

Landscapes

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

Abstract

PROBLEM TO BE SOLVED: To solve the problem in which there is possibility of reliability deterioration of secure boot due to alteration in an initialization code 1006 or a virtual computer code 1012 by a hacker etc. with malicious intent, in the conventional configuration.SOLUTION: A virtual computer code 1012 is attained by virtual computer hardware 1008 and a virtual computer control code 1009, and an initialization code 1006 or the virtual computer control code 1009 is preliminarily encrypted and stored in a storage device 1004. Intended alteration by a malicious hacker becomes difficult by setting a secure area of RAM 1003 and decrypting the initialization code 1006 or the virtual computer control code 1009 to load it to the secure area of the RAM 1003 in a sequence of secure boot.

Description

本発明は、セキュアブートを実現するための方法およびシステムに関するものである。   The present invention relates to a method and system for realizing secure boot.

従来のセキュアブートとしては、システムをブートする前に初期化コードと仮想計算機コードを認証する方法があった(例えば、特許文献1参照)。図10と図11は、前記特許文献1に記載された従来のセキュアブートを実現するための方法を示すものである。
図10において、CPU1001は、ROM1002に記憶されたブートコード1005を実行する。ブートコード1005は、記憶装置1004に記憶された初期化コード1006の認証を行う。初期化コード1006の認証が失敗した場合は、ブートの停止を行う。初期化コード1006の認証が成功した場合は、初期化コード1006をRAM1003にロードして、ブートコード1005からRAM1003にロードされた初期化コード1006にジャンプし、初期化コード1006を実行する。次に、初期化コード1006は仮想計算機コード1012の認証を行う。仮想計算機コード1012の認証が失敗した場合は、ブートの停止を行う。仮想計算機コード1012の認証が成功した場合は、仮想計算機コード1012をRAM1003にロードして、RAM1003にロードされた仮想計算機コード1012にジャンプし、仮想計算機コード1012を実行する。
As a conventional secure boot, there is a method of authenticating an initialization code and a virtual machine code before booting the system (see, for example, Patent Document 1). 10 and 11 show a method for realizing the conventional secure boot described in Patent Document 1. FIG.
In FIG. 10, the CPU 1001 executes the boot code 1005 stored in the ROM 1002. The boot code 1005 authenticates the initialization code 1006 stored in the storage device 1004. If the authentication of the initialization code 1006 fails, the boot is stopped. If the authentication of the initialization code 1006 is successful, the initialization code 1006 is loaded into the RAM 1003, the jump is made from the boot code 1005 to the initialization code 1006 loaded into the RAM 1003, and the initialization code 1006 is executed. Next, the initialization code 1006 authenticates the virtual machine code 1012. If the authentication of the virtual machine code 1012 fails, the boot is stopped. When the authentication of the virtual machine code 1012 is successful, the virtual machine code 1012 is loaded into the RAM 1003, jumps to the virtual machine code 1012 loaded in the RAM 1003, and executes the virtual machine code 1012.

図11は、セキュアブートを実行することによって立ち上がったシステムのソフトウェア構成を示す図である。ハードウェア2005は、図10のCPU1001、ROM1002、RAM1003および記憶装置1004を含む。仮想計算機コード2006は、図10の仮想計算機コード1012と同一であり、ハイパーバイザとも呼ばれ、複数の異なるOSを並列に実行できるようにするプログラムである。OS2003は、Linuxなどの一般的なOSであり、OS2003の管理下でアプリ2001を実行する。また、秘匿性と完全性が確保されたセキュアモードにおいて、セキュアOS2004の管理下でセキュアアプリ2002を実行することが出来る。セキュアモードにおいて実行すべきプログラムとしては、DRM(Digital Rights Management)ソフトウェアなどがある。   FIG. 11 is a diagram illustrating a software configuration of a system that has been started up by executing secure boot. The hardware 2005 includes the CPU 1001, the ROM 1002, the RAM 1003, and the storage device 1004 in FIG. The virtual machine code 2006 is the same as the virtual machine code 1012 in FIG. 10 and is also called a hypervisor, and is a program that allows a plurality of different OSs to be executed in parallel. The OS 2003 is a general OS such as Linux, and executes the application 2001 under the management of the OS 2003. Further, the secure application 2002 can be executed under the management of the secure OS 2004 in the secure mode in which secrecy and integrity are ensured. Examples of programs to be executed in the secure mode include DRM (Digital Rights Management) software.

特開2009−54164号公報JP 2009-54164 A

しかしながら、従来の構成では、初期化コード1006または仮想計算機コード1012が悪意のあるハッカーなどによって改竄されることにより、セキュアブートの信頼性低下が懸念される。例えば、記憶装置1004に記憶された初期化コード1006または仮想計算機コード1012の認証が成功したとしても、RAM1003にロードする前に、記憶装置1004に記憶された初期化コード1006または仮想計算機コード1012を改竄されることが懸念される。また、RAM1003にロードした初期化コード1006または仮想計算機コード1012が改竄されることも懸念される。   However, in the conventional configuration, the initialization code 1006 or the virtual machine code 1012 is falsified by a malicious hacker or the like, and there is a concern that the reliability of secure boot may be reduced. For example, even if the initialization code 1006 or the virtual machine code 1012 stored in the storage device 1004 is successfully authenticated, the initialization code 1006 or the virtual machine code 1012 stored in the storage device 1004 is loaded before the RAM 1003 is loaded. There are concerns about tampering. There is also a concern that the initialization code 1006 or virtual machine code 1012 loaded in the RAM 1003 may be falsified.

本発明は、従来の課題を解決するもので、強固なセキュアブートを実現するための方法およびシステムを提供することを目的とする。   The present invention solves the conventional problems, and an object thereof is to provide a method and a system for realizing a strong secure boot.

上記課題を解決するための、請求項1に記載の発明は、ROMのブートコードを実行するステップと、初期化コードを検証するステップと、初期化コードをRAMにロードするステップと、前記初期化コードにジャンプして実行するステップとを有することを特徴とする方法である。
請求項2に記載の発明は、請求項1に記載の方法であって、前記初期化コードにジャンプして実行するステップより後に、前記RAMのセキュア領域を設定するステップと、仮想計算機制御コードを検証するステップと、前記仮想計算機制御コードを前記RAMのセキュア領域にロードするステップと、前記仮想計算機制御コードにジャンプして実行するステップとを有することを特徴とする方法である。
In order to solve the above-mentioned problem, the invention according to claim 1 includes a step of executing a boot code of the ROM, a step of verifying the initialization code, a step of loading the initialization code into the RAM, and the initialization And jumping to code to execute.
The invention according to claim 2 is the method according to claim 1, wherein after the step of jumping to the initialization code and executing, the step of setting a secure area of the RAM, and the virtual machine control code A method comprising: verifying; loading the virtual machine control code into a secure area of the RAM; and jumping to the virtual machine control code and executing the virtual machine control code.

請求項3に記載の発明は、ROMのブートコードを実行するステップと、RAMのセキュア領域を設定するステップと、初期化コードを検証するステップと、初期化コードを前記RAMのセキュア領域にロードするステップと、前記初期化コードにジャンプして実行するステップとを有することを特徴とする方法である。
請求項4に記載の発明は、前記初期化コードにジャンプして実行するステップより後に、前記RAMとは異なるRAMのセキュア領域を設定するステップと、仮想計算機制御コードを検証するステップと、前記仮想計算機制御コードを前記RAMとは異なるRAMのセキュア領域にロードするステップと、前記仮想計算機制御コードにジャンプして実行するステップとを有することを特徴とする方法である。
According to a third aspect of the present invention, the step of executing the ROM boot code, the step of setting the secure area of the RAM, the step of verifying the initialization code, and loading the initialization code into the secure area of the RAM And a step of jumping to the initialization code and executing the method.
According to a fourth aspect of the present invention, after the step of jumping to the initialization code and executing, a step of setting a secure area in a RAM different from the RAM, a step of verifying a virtual machine control code, and the virtual A method comprising: loading a computer control code into a secure area of a RAM different from the RAM; and jumping to the virtual computer control code and executing the computer control code.

請求項5に記載の発明は、請求項3に記載の方法であって、前記初期化コードにジャンプして実行するステップより後に、仮想計算機制御コードを検証するステップと、前記仮想計算機制御コードを前記RAMのセキュア領域にロードするステップと、前記仮想計算機制御コードにジャンプして実行するステップとを有することを特徴とする方法である。
請求項6に記載の発明は、前記初期化コードは暗号化されており、前記初期化コードにジャンプして実行するステップより前に、前記初期化コードを復号するステップを有することを特徴とする方法である。
The invention according to claim 5 is the method according to claim 3, wherein after the step of jumping to the initialization code and executing the virtual computer control code, the virtual computer control code is verified. The method includes a step of loading into a secure area of the RAM, and a step of jumping to the virtual machine control code and executing the code.
The invention according to claim 6 is characterized in that the initialization code is encrypted, and has a step of decrypting the initialization code before the step of jumping to the initialization code and executing it. Is the method.

請求項7に記載の発明は、前記仮想計算機制御コードは暗号化されており、前記仮想計算機制御コードにジャンプして実行するステップより前に、前記仮想計算機制御コードを復号するステップを有することを特徴とする方法である。
請求項8に記載の発明は、ROMのブートコードを実行するステップと、初期化コードを検証するステップと、初期化コードをRAMにロードするステップと、前記初期化コードにジャンプして実行するステップとを有することを特徴とするプログラムである。
The invention according to claim 7 includes the step of decrypting the virtual machine control code before the step of jumping to the virtual machine control code and executing the virtual machine control code, wherein the virtual machine control code is encrypted. It is a characteristic method.
The invention according to claim 8 includes a step of executing a boot code of the ROM, a step of verifying the initialization code, a step of loading the initialization code into the RAM, and a step of jumping to the initialization code and executing it The program characterized by having.

請求項9に記載の発明は、ROMのブートコードを実行するステップと、初期化コードを検証するステップと、初期化コードをRAMにロードするステップと、前記初期化コードにジャンプして実行するステップとを有することを特徴とする集積回路である。
請求項10に記載の発明は、ROMのブートコードを実行するステップと、初期化コードを検証するステップと、初期化コードをRAMにロードするステップと、前記初期化コードにジャンプして実行するステップとを有することを特徴とするシステムである。
The invention according to claim 9 includes a step of executing a boot code of the ROM, a step of verifying the initialization code, a step of loading the initialization code into the RAM, and a step of jumping to the initialization code and executing it And an integrated circuit.
The invention according to claim 10 includes a step of executing a boot code of the ROM, a step of verifying the initialization code, a step of loading the initialization code into the RAM, and a step of jumping to the initialization code and executing it It is a system characterized by having.

本発明によれば、仮想計算機コード1012を仮想計算機ハード1008と仮想計算機制御コード1009で実現し、あらかじめ初期化コード1006または仮想計算機制御コード1009を暗号化して記憶装置1004に保存しておく。また、セキュアブートのシーケンスにおいて、RAM1003のセキュア領域を設定し、初期化コード1006または仮想計算機制御コード1009を復号してRAM1003のセキュア領域にロードすることによって、悪意のあるハッカーなどによる意図した改竄が困難になる効果がある。   According to the present invention, the virtual machine code 1012 is realized by the virtual machine hardware 1008 and the virtual machine control code 1009, and the initialization code 1006 or the virtual machine control code 1009 is encrypted in advance and stored in the storage device 1004. Further, in the secure boot sequence, the secure area of the RAM 1003 is set, the initialization code 1006 or the virtual machine control code 1009 is decrypted and loaded into the secure area of the RAM 1003, so that an intended falsification by a malicious hacker or the like can be performed. It has the effect of becoming difficult.

本発明の実施の形態1におけるセキュアブートのブロック図Block diagram of secure boot in Embodiment 1 of the present invention 本発明の実施の形態2におけるセキュアブートのブロック図Block diagram of secure boot in Embodiment 2 of the present invention 本発明の実施の形態3におけるセキュアブートのブロック図Block diagram of secure boot in Embodiment 3 of the present invention 本発明の実施の形態3における2つのRAMを利用した場合の説明図Explanatory drawing when using two RAMs in Embodiment 3 of the present invention 本発明の実施の形態3における1つのRAMを利用した場合の説明図Explanatory drawing when one RAM is used in Embodiment 3 of the present invention 本発明の実施の形態1におけるセキュアブートのシーケンス図Secure boot sequence diagram according to Embodiment 1 of the present invention 本発明の実施の形態2におけるセキュアブートのシーケンス図Secure boot sequence diagram in Embodiment 2 of the present invention 本発明の実施の形態3におけるセキュアブートのシーケンス図Secure boot sequence diagram in Embodiment 3 of the present invention 本発明のセキュアブートのソフトウェア構成図Software configuration diagram of secure boot of the present invention 従来発明のセキュアブートのブロック図Block diagram of the secure boot of the conventional invention 従来発明のセキュアブートのソフトウェア構成図Software configuration diagram of secure boot of the conventional invention

以下本発明の実施の形態について、図面を参照しながら説明する。
(実施の形態1)
図1は、本発明の実施の形態1におけるセキュアブートのブロック図であり、1001はCPU、1002はROM(Read Only Memory)、1003はRAM(Random Access Memory)、1004はハードディスクやフラッシュなどの記憶装置、1005はROM1002に記憶したブートコード、1006は記憶装置1004に記憶した初期化コード1006である。ブートコード1005は、システムがブートした際に最初に実行するソフトウェアである。初期化コード1006は、ブートコード1005から呼び出されるソフトウェアであり、ハードウェアの初期化などを実行するソフトウェアである。
Embodiments of the present invention will be described below with reference to the drawings.
(Embodiment 1)
FIG. 1 is a block diagram of secure boot according to the first embodiment of the present invention, in which 1001 is a CPU, 1002 is a ROM (Read Only Memory), 1003 is a RAM (Random Access Memory), and 1004 is a storage such as a hard disk or a flash memory. 1005 is a boot code stored in the ROM 1002, and 1006 is an initialization code 1006 stored in the storage device 1004. The boot code 1005 is software that is executed first when the system is booted. The initialization code 1006 is software called from the boot code 1005, and is software that executes hardware initialization and the like.

図6は、本発明の実施の形態1におけるセキュアブートの処理の流れを示すフローチャートである。システムがブートした際に、ステップS1001でROM1002のブートコード1005を実行する。ステップS1002でブートコード1005が記憶装置1004の暗号化された初期化コード1006を検証する。暗号の具体例として、AESアルゴリズムを用いる方法がある。また、検証の具体例として、例えばブートコード1005が暗号化された初期化コード1006のハッシュ値を計算し、あらかじめブートコード1005が保持しておいた期待ハッシュ値と比較し、ハッシュ値が同一であれば認証が成功したとみなす方法がある。ステップS1003で、暗号化された初期化コード1006が正しくない場合はステップS1008でブートを停止する。ステップS1003で、暗号化された初期化コード1006が正しい場合は、ステップS1004で暗号化された初期化コード1006を復号する。復号の具体例として、ブートコード1005の一部にAESプログラムと鍵を保持しておき、実行する方法がある。ステップS1005で、ブートコード1005が初期化コード1006をRAM1003にロードし、ステップS1006でブートコード1005がRAM1003の初期化コード1006にジャンプする。ステップS1007で初期化コード1006を実行し、ハードウェアの初期化などを行う。   FIG. 6 is a flowchart showing a flow of secure boot processing according to Embodiment 1 of the present invention. When the system boots, the boot code 1005 in the ROM 1002 is executed in step S1001. In step S1002, the boot code 1005 verifies the encrypted initialization code 1006 of the storage device 1004. As a specific example of encryption, there is a method using an AES algorithm. As a specific example of verification, for example, the hash value of the initialization code 1006 in which the boot code 1005 is encrypted is calculated, and compared with the expected hash value held in advance by the boot code 1005. If there is, there is a method to consider that the authentication is successful. If the encrypted initialization code 1006 is not correct in step S1003, the boot is stopped in step S1008. If the encrypted initialization code 1006 is correct in step S1003, the initialization code 1006 encrypted in step S1004 is decrypted. As a specific example of decryption, there is a method in which an AES program and a key are held in a part of the boot code 1005 and executed. In step S1005, the boot code 1005 loads the initialization code 1006 into the RAM 1003. In step S1006, the boot code 1005 jumps to the initialization code 1006 in the RAM 1003. In step S1007, the initialization code 1006 is executed to perform hardware initialization and the like.

かかる構成によれば、あらかじめ初期化コード1006を暗号化して記憶装置1004に保存しておくことによって、悪意のあるハッカーなどによる意図した改竄が困難になる効果がある。記憶装置1004上の初期化コード1006は暗号化による秘匿性が確保される。なお、システムは必ずROM1002上のブートコード1005から起動するため、ブートコード1005の完全性が担保され、悪意のあるハッカーなどによる意図した改竄が困難になる効果がある。   According to such a configuration, by encrypting the initialization code 1006 in advance and storing it in the storage device 1004, there is an effect that it is difficult for the malicious hacker or the like to make the intended alteration. The initialization code 1006 on the storage device 1004 is secured by encryption. Note that since the system is always started from the boot code 1005 on the ROM 1002, the integrity of the boot code 1005 is ensured, and there is an effect that it is difficult to perform falsification intended by a malicious hacker or the like.

なお、本実施の形態において、検証方法としてハッシュを利用したが、例えばデジタル署名などコードの完全性を検証する方法であれば何でもよい。また、暗号化された初期化コード1006を検証しているが、初期化コード1006を復号してから検証してもよい。また、初期化コード1006が正しくない場合はステップS1008でブートを停止するが、ブートを停止しなくてもよいし、再ブートしてもよいし、初期化コード1006が正しくないことを示すフラグをレジスタに設定しておき、システムがブート後にレジスタを参照してからシステムを停止してもよい。また、暗号の具体例として、AESアルゴリズムを利用したが、秘匿性を向上させる方法であれば何でもよい。   In this embodiment, a hash is used as a verification method. However, any method may be used as long as it verifies the integrity of a code such as a digital signature. Further, although the encrypted initialization code 1006 is verified, the verification may be performed after the initialization code 1006 is decrypted. If the initialization code 1006 is incorrect, the boot is stopped in step S1008. However, the boot may not be stopped, the reboot may be performed, or a flag indicating that the initialization code 1006 is incorrect is set. It may be set in a register, and the system may be stopped after the system refers to the register after booting. In addition, although the AES algorithm is used as a specific example of encryption, any method that improves confidentiality may be used.

(実施の形態2)
図2は、本発明の実施の形態2におけるセキュアブートのブロック図である。図2において、図1と同じ構成要素については同じ符号を用い、説明を省略する。
1007はハッシュ検証や暗復号処理を行う暗号エンジン、1008はハイパーバイザとも呼ばれ、複数の異なるOSを並列に実行できるようにするハードウェアである仮想計算機ハード、1009は仮想計算機ハード1008を制御するためのソフトウェアである仮想計算機制御コードである。
(Embodiment 2)
FIG. 2 is a block diagram of secure boot in the second embodiment of the present invention. In FIG. 2, the same components as those in FIG.
1007 is a cryptographic engine that performs hash verification and encryption / decryption processing, 1008 is also called a hypervisor, and is a virtual computer hardware that is hardware that enables a plurality of different OSs to be executed in parallel, and 1009 controls the virtual computer hardware 1008 It is a virtual machine control code which is software for the above.

図9は、本発明の実施の形態2におけるセキュアブートを実行することによって立ち上がったシステムのソフトウェア構成を示す図である。図9において、図11と同じ構成要素については同じ符号を用い、説明を省略する。ハードウェア2005は、図2のCPU1001、ROM1002、RAM1003、記憶装置1004および暗号エンジン1007を含む。仮想計算機ハード2006は、図2の仮想計算機ハード1008に相当する。   FIG. 9 is a diagram showing a software configuration of a system that is started up by executing a secure boot in the second embodiment of the present invention. 9, the same components as those in FIG. 11 are denoted by the same reference numerals, and description thereof is omitted. The hardware 2005 includes the CPU 1001, the ROM 1002, the RAM 1003, the storage device 1004, and the cryptographic engine 1007 in FIG. The virtual machine hardware 2006 corresponds to the virtual machine hardware 1008 in FIG.

図7は、本発明の実施の形態2におけるセキュアブートの処理の流れを示すフローチャートである。システムがブートした際に、ステップS2001でROM1002のブートコード1005を実行する。ステップS2002でブートコード1005が暗号エンジン1007を使って記憶装置1004の初期化コード1006を検証する。暗号エンジン1007は、例えば初期化コード1006に対する期待ハッシュ値を保持しており、初期化コード1006のハッシュ値を生成して比較することにより検証する。ステップS2003で、初期化コード1006が正しくない場合はステップS2013でブートを停止する。ステップS2003で、初期化コード1006が正しい場合は、ステップS2004でブートコード1005が初期化コード1006をRAM1003にロードする。ステップS2005でブートコード1005がRAM1003の初期化コード1006にジャンプする。ステップS2006で初期化コード1006を実行する。ステップS2007で初期化コード1006がRAM1003のセキュア領域を設定する。RAM1003には、特定のCPU、デバイス、OS、アプリが特定のアドレスにアクセス可能なように、RAMアクセス制限機能が付いており、例えばセキュアモードのセキュアアプリ2002とセキュアOS2004のみがアクセス可能なセキュア領域を設定することが出来る。具体的な設定方法として、例えばRAMアクセス制限機能が持つセキュア領域を設定可能な専用レジスタに、セキュア領域の先頭アドレスと末尾アドレスを設定する方法がある。ステップS2008で初期化コード1006が暗号エンジン1007を使って記憶装置1004の仮想計算機制御コード1009を検証する。ステップS2009で、仮想計算機制御コード1009が正しくない場合はステップS2013でブートを停止する。ステップS2009で、仮想計算機制御コード1009が正しい場合は、ステップS2010で、初期化コード1006が仮想計算機制御コード1009をRAM1003のセキュア領域にロードし、ステップS2011で初期化コード1006がRAM1003のセキュア領域の仮想計算機制御コード1009にジャンプする。ステップS2012で仮想計算機制御コード1009を実行し、仮想計算機ハード1008を動かす。   FIG. 7 is a flowchart showing a flow of secure boot processing according to Embodiment 2 of the present invention. When the system boots, the boot code 1005 in the ROM 1002 is executed in step S2001. In step S2002, the boot code 1005 verifies the initialization code 1006 of the storage device 1004 using the cryptographic engine 1007. The cryptographic engine 1007 holds an expected hash value for the initialization code 1006, for example, and verifies the generated hash value of the initialization code 1006 and compares it. If the initialization code 1006 is not correct in step S2003, the boot is stopped in step S2013. If the initialization code 1006 is correct in step S2003, the boot code 1005 loads the initialization code 1006 into the RAM 1003 in step S2004. In step S2005, the boot code 1005 jumps to the initialization code 1006 of the RAM 1003. In step S2006, the initialization code 1006 is executed. In step S2007, the initialization code 1006 sets the secure area of the RAM 1003. The RAM 1003 has a RAM access restriction function so that a specific CPU, device, OS, and application can access a specific address. For example, a secure area that can be accessed only by the secure application 2002 and the secure OS 2004 in secure mode. Can be set. As a specific setting method, for example, there is a method of setting the start address and the end address of the secure area in a dedicated register that can set the secure area of the RAM access restriction function. In step S2008, the initialization code 1006 verifies the virtual machine control code 1009 of the storage device 1004 using the cryptographic engine 1007. If the virtual machine control code 1009 is not correct in step S2009, the boot is stopped in step S2013. If the virtual machine control code 1009 is correct in step S2009, the initialization code 1006 loads the virtual machine control code 1009 into the secure area of the RAM 1003 in step S2010, and the initialization code 1006 is stored in the secure area of the RAM 1003 in step S2011. Jump to the virtual machine control code 1009. In step S2012, the virtual machine control code 1009 is executed to move the virtual machine hardware 1008.

かかる構成によれば、RAM1003のセキュア領域の設定し、仮想計算機制御コード1009をRAM1003のセキュア領域にロードすることによって、悪意のあるハッカーなどによる意図した改竄が困難になる効果がある。RAM1003上の仮想計算機制御コード1009は、セキュアモードのセキュアアプリ2002として動作し、秘匿性と完全性が確保される。   According to such a configuration, setting a secure area of the RAM 1003 and loading the virtual machine control code 1009 into the secure area of the RAM 1003 has an effect that it is difficult to perform falsification intended by a malicious hacker or the like. The virtual machine control code 1009 on the RAM 1003 operates as the secure application 2002 in the secure mode, and confidentiality and integrity are ensured.

なお、本実施の形態において、記憶装置1004上の初期化コード1006、仮想計算機制御コード1009は暗号化してもよく、その場合は実施の形態1と同様の復号処理が行われる。また、暗号エンジン1007でハッシュ検証や暗号処理を行ったが、ブートコード1005や初期化コード1006がソフトウェアで保持して実行してもよい。また、暗号エンジン1007が期待ハッシュ値を保持しているが、記憶装置1004に記憶してもよい。その場合、期待ハッシュ値を暗号化または署名付与してもよい。また、RAM1003はRAMアクセス制限機能が付いているとしたが、RAMアクセス制限機能をRAM1003とは独立させて、別の構成としてもよい。また、先頭アドレスと末尾アドレスでセキュア領域を設定しているが、先頭アドレスとサイズなど領域を設定できるパラメータであれば何でもよい。また、RAM1003のセキュア領域の設定は、仮想計算機制御コード1009をロードする前であれば、いつ行ってもよい。   In this embodiment, the initialization code 1006 and the virtual machine control code 1009 on the storage device 1004 may be encrypted. In this case, the same decryption process as that in the first embodiment is performed. Further, although the hash verification and encryption processing are performed by the encryption engine 1007, the boot code 1005 and the initialization code 1006 may be held and executed by software. Further, although the cryptographic engine 1007 holds the expected hash value, it may be stored in the storage device 1004. In that case, the expected hash value may be encrypted or signed. Further, although the RAM 1003 has a RAM access restriction function, the RAM access restriction function may be configured separately from the RAM 1003. Further, although the secure area is set by the head address and the end address, any parameters may be used as long as the area can be set such as the head address and size. The secure area of the RAM 1003 may be set at any time before the virtual machine control code 1009 is loaded.

(実施の形態3)
図3は、本発明の実施の形態3におけるセキュアブートのブロック図である。図3において、図2と同じ構成要素については同じ符号を用い、説明を省略する。
1010は、CPU1001とは別のCPUである。1011は、RAM1003とは別のRAMである。
(Embodiment 3)
FIG. 3 is a block diagram of secure boot in the third embodiment of the present invention. 3, the same components as those in FIG. 2 are denoted by the same reference numerals, and description thereof is omitted.
Reference numeral 1010 denotes a CPU different from the CPU 1001. Reference numeral 1011 denotes a RAM different from the RAM 1003.

図8は、本発明の実施の形態3におけるセキュアブートの処理の流れを示すフローチャートである。
システムがブートした際に、CPU1001がステップS3001でROM1002のブートコード1005を実行する。ステップS3002でブートコード1005がRAM1003のセキュア領域を設定する。ステップS3003でブートコード1005が暗号エンジン1007を使って記憶装置1004の暗号化された初期化コード1006を検証する。ステップS3004で、初期化コード1006が正しくない場合はステップS3016でブートを停止する。ステップS3004で、初期化コード1006が正しい場合は、ステップS3005でブートコード1005が暗号エンジン1007を使って初期化コード1006を復号する。ステップS3006で、ブートコード1005が初期化コード1006をRAM1003のセキュア領域にロードし、ステップS3007でブートコード1005がRAM1003のセキュア領域の初期化コード1006にジャンプする。ステップS3008で初期化コード1006を実行し、ステップS3009で初期化コード1006がRAM(別)1011のセキュア領域を設定する。ステップS3010で初期化コード1006が暗号エンジン1007を使って記憶装置1004の仮想計算機制御コード1009を検証する。ステップS3011で、仮想計算機制御コード1009が正しくない場合はステップS3016でブートを停止する。ステップS3011で、仮想計算機制御コード1009が正しい場合は、ステップS3012で、CPU1001がCPU(別)1010に制御を移し、ステップS3013で、初期化コード1006が仮想計算機制御コード1009をRAM(別)1011のセキュア領域にロードし、ステップS3014で初期化コード1006がRAM(別)1011のセキュア領域の仮想計算機制御コード1009にジャンプする。ステップS3015で仮想計算機制御コード1009を実行し、仮想計算機ハード1008を動かす。
FIG. 8 is a flowchart showing a flow of secure boot processing according to Embodiment 3 of the present invention.
When the system boots, the CPU 1001 executes the boot code 1005 in the ROM 1002 in step S3001. In step S3002, the boot code 1005 sets a secure area of the RAM 1003. In step S3003, the boot code 1005 verifies the encrypted initialization code 1006 of the storage device 1004 using the cryptographic engine 1007. If the initialization code 1006 is not correct in step S3004, booting is stopped in step S3016. If the initialization code 1006 is correct in step S3004, the boot code 1005 decrypts the initialization code 1006 using the cryptographic engine 1007 in step S3005. In step S3006, the boot code 1005 loads the initialization code 1006 into the secure area of the RAM 1003. In step S3007, the boot code 1005 jumps to the initialization code 1006 in the secure area of the RAM 1003. In step S3008, the initialization code 1006 is executed. In step S3009, the initialization code 1006 sets the secure area of the RAM (separate) 1011. In step S3010, the initialization code 1006 verifies the virtual machine control code 1009 of the storage device 1004 using the cryptographic engine 1007. If the virtual machine control code 1009 is not correct in step S3011, the boot is stopped in step S3016. If the virtual machine control code 1009 is correct in step S3011, the CPU 1001 transfers control to the CPU (separate) 1010 in step S3012, and the initialization code 1006 stores the virtual machine control code 1009 in the RAM (separate) 1011 in step S3013. In step S3014, the initialization code 1006 jumps to the virtual machine control code 1009 in the secure area of the RAM (separate) 1011. In step S3015, the virtual machine control code 1009 is executed to move the virtual machine hardware 1008.

かかる構成によれば、あらかじめ初期化コード1006または仮想計算機制御コード1009を暗号化して記憶装置1004に保存しておく。また、RAM1003またはRAM(別)1011のセキュア領域を設定し、初期化コード1006または仮想計算機制御コード1009を復号してRAM1003またはRAM(別)1011のセキュア領域にロードすることによって、悪意のあるハッカーなどによる意図した改竄が困難になる効果がある。   According to this configuration, the initialization code 1006 or the virtual machine control code 1009 is encrypted and stored in the storage device 1004 in advance. Further, a malicious hacker is configured by setting a secure area of the RAM 1003 or the RAM (separate) 1011, decrypting the initialization code 1006 or the virtual machine control code 1009 and loading it into the secure area of the RAM 1003 or the RAM (separate) 1011. This has the effect of making it difficult to make the intended alteration.

なお、本実施の形態において、図4に示す通り、RAM1003に対して初期化コード1006をロードし、RAM(別)1011に対して仮想計算機制御コード1009をロードしているが、図5に示す通り、RAM1003に対して初期化コード1006と仮想計算機制御コード1009をロードしてもよい。また、ステップS3012で、CPU1001がCPU(別)1010に制御を移したが、制御を移すタイミングはいつ行ってもよく、制御を移さずに1つのCPUで処理を行ってもよい。また、CPU(別)1010の起動タイミングは、CPU1001がCPU(別)1010に制御を移す前であればいつでもよい。また、CPU(別)1010は1つとしたが、複数あってもよい。また、CPU1001とCPU(別)1010は同一製品でも、異なった製品でもよい。また、RAM1003とRAM(別)1011は同一製品でも、異なった製品でもよい。また、初期化コード1006をロードする前であれば、RAM1003のセキュア領域の設定はいつでもよい。また、仮想計算機制御コード1009をロードする前であれば、RAM
(別)1011のセキュア領域の設定はいつでもよい。
In this embodiment, as shown in FIG. 4, the initialization code 1006 is loaded into the RAM 1003, and the virtual machine control code 1009 is loaded into the RAM (separate) 1011. As described above, the initialization code 1006 and the virtual machine control code 1009 may be loaded into the RAM 1003. In step S3012, the CPU 1001 transfers control to the CPU (separate) 1010. However, the timing for transferring control may be performed anytime, and processing may be performed by one CPU without transferring control. The activation timing of the CPU (separate) 1010 may be any time before the CPU 1001 transfers control to the CPU (separate) 1010. Further, although there is one CPU (separate) 1010, there may be a plurality of CPUs. Further, the CPU 1001 and the CPU (separate) 1010 may be the same product or different products. Further, the RAM 1003 and the RAM (separate) 1011 may be the same product or different products. Further, as long as the initialization code 1006 is not loaded, the secure area of the RAM 1003 may be set at any time. If the virtual machine control code 1009 is not loaded, the RAM
(Another) 1011 may be set at any time in the secure area.

本発明は、秘匿性と完全性が確保された強固なセキュアブートを実現するための方法およびシステムを提供できる点が有用である。
本発明が適応可能な機器の例として、パーソナルコンピュータ、テレビ、ビデオデッキ、ハードディスクレコーダー、携帯電話、カーナビゲーションシステム、固定電話、コピー機、タッチパネルつきモバイル端末、ゲーム機などが挙げられる。
The present invention is useful in that it can provide a method and a system for realizing a strong secure boot in which secrecy and integrity are ensured.
Examples of devices to which the present invention can be applied include personal computers, televisions, video decks, hard disk recorders, mobile phones, car navigation systems, landline phones, copy machines, mobile terminals with touch panels, and game machines.

1001 CPU
1002 ROM
1003 RAM
1004 記憶装置
1005 ブートコード
1006 初期化コード
1007 暗号エンジン
1008 仮想計算機ハード
1009 仮想計算機制御コード
1010 CPU(別)
1011 RAM(別)
1012 仮想計算機コード
1001 CPU
1002 ROM
1003 RAM
1004 Storage device 1005 Boot code 1006 Initialization code 1007 Cryptographic engine 1008 Virtual machine hardware 1009 Virtual machine control code 1010 CPU (separate)
1011 RAM (separate)
1012 Virtual computer code

Claims (10)

ROMのブートコードを実行するステップと、
初期化コードを検証するステップと、
初期化コードをRAMにロードするステップと、
前記初期化コードにジャンプして実行するステップと
を有することを特徴とする方法。
Executing the ROM boot code;
Verifying the initialization code;
Loading initialization code into RAM;
Jumping to and executing the initialization code.
請求項1に記載の方法であって、
前記初期化コードにジャンプして実行するステップより後に、
前記RAMのセキュア領域を設定するステップと、
仮想計算機コードを検証するステップと、
前記仮想計算機コードを前記RAMのセキュア領域にロードするステップと、
前記仮想計算機コードにジャンプして実行するステップと、
を有することを特徴とする方法。
The method of claim 1, comprising:
After the step of jumping to the initialization code and executing it,
Setting a secure area of the RAM;
Verifying the virtual machine code;
Loading the virtual machine code into a secure area of the RAM;
Jumping to and executing the virtual machine code;
A method characterized by comprising:
ROMのブートコードを実行するステップと、
RAMのセキュア領域を設定するステップと、
初期化コードを検証するステップと、
初期化コードを前記RAMのセキュア領域にロードするステップと、
前記初期化コードにジャンプして実行するステップと
を有することを特徴とする方法。
Executing the ROM boot code;
Setting a secure area in RAM;
Verifying the initialization code;
Loading initialization code into a secure area of the RAM;
Jumping to and executing the initialization code.
請求項3に記載の方法であって、
前記初期化コードにジャンプして実行するステップより後に、
前記RAMとは異なるRAMのセキュア領域を設定するステップと、
仮想計算機コードを検証するステップと、
前記仮想計算機コードを前記RAMとは異なるRAMのセキュア領域にロードするステップと、
前記仮想計算機コードにジャンプして実行するステップと、
を有することを特徴とする方法。
The method of claim 3, comprising:
After the step of jumping to the initialization code and executing it,
Setting a secure area in a RAM different from the RAM;
Verifying the virtual machine code;
Loading the virtual machine code into a secure area in a RAM different from the RAM;
Jumping to and executing the virtual machine code;
A method characterized by comprising:
請求項3に記載の方法であって、
前記初期化コードにジャンプして実行するステップより後に、
仮想計算機コードを検証するステップと、
前記仮想計算機コードを前記RAMのセキュア領域にロードするステップと、
前記仮想計算機コードにジャンプして実行するステップと、
を有することを特徴とする方法。
The method of claim 3, comprising:
After the step of jumping to the initialization code and executing it,
Verifying the virtual machine code;
Loading the virtual machine code into a secure area of the RAM;
Jumping to and executing the virtual machine code;
A method characterized by comprising:
請求項1から5に記載の方法であって、
前記初期化コードは暗号化されており、
前記初期化コードにジャンプして実行するステップより前に、
前記初期化コードを復号するステップを有することを特徴とする方法。
A method according to claims 1 to 5, comprising
The initialization code is encrypted;
Before jumping to the initialization code and executing it,
A method comprising the step of decoding the initialization code.
請求項1から6に記載の方法であって、
前記仮想計算機コードは暗号化されており、
前記仮想計算機コードにジャンプして実行するステップより前に、
前記仮想計算機コードを復号するステップを有することを特徴とする方法。
A method according to claims 1 to 6, comprising
The virtual machine code is encrypted,
Before the step of jumping to the virtual machine code and executing it,
A method comprising the step of decrypting the virtual machine code.
ROMのブートコードを実行するステップと、
初期化コードを検証するステップと、
初期化コードをRAMにロードするステップと、
前記初期化コードにジャンプして実行するステップと
をコンピュータに実行させるためのプログラム。
Executing the ROM boot code;
Verifying the initialization code;
Loading initialization code into RAM;
A program for causing a computer to execute the step of jumping to the initialization code and executing the code.
ROMのブートコードを実行する手段と、
初期化コードを検証する手段と、
初期化コードをRAMにロードする手段と、
前記初期化コードにジャンプして実行する手段と
を有することを特徴とする集積回路。
Means for executing ROM boot code;
Means for verifying the initialization code;
Means for loading initialization code into RAM;
Means for jumping to the initialization code and executing the integrated code.
ROMのブートコードを実行する手段と、
初期化コードを検証する手段と、
初期化コードをRAMにロードする手段と、
前記初期化コードにジャンプして実行する手段と
を有することを特徴とするシステム。
Means for executing ROM boot code;
Means for verifying the initialization code;
Means for loading initialization code into RAM;
Means for jumping to and executing the initialization code.
JP2011143910A 2011-06-29 2011-06-29 Secure boot method Withdrawn JP2014170255A (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2011143910A JP2014170255A (en) 2011-06-29 2011-06-29 Secure boot method
PCT/JP2012/003659 WO2013001721A1 (en) 2011-06-29 2012-06-04 Computer control method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011143910A JP2014170255A (en) 2011-06-29 2011-06-29 Secure boot method

Publications (1)

Publication Number Publication Date
JP2014170255A true JP2014170255A (en) 2014-09-18

Family

ID=47423653

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011143910A Withdrawn JP2014170255A (en) 2011-06-29 2011-06-29 Secure boot method

Country Status (2)

Country Link
JP (1) JP2014170255A (en)
WO (1) WO2013001721A1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101745821B1 (en) * 2016-03-23 2017-06-09 네이버 주식회사 Method and system for secure booting

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6024821B2 (en) * 2013-03-18 2016-11-16 富士通株式会社 Terminal device, activation control method, and program
JP5911835B2 (en) * 2013-09-17 2016-04-27 株式会社東芝 Information processing device
US10936722B2 (en) * 2018-04-18 2021-03-02 Nuvoton Technology Corporation Binding of TPM and root device

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3293760B2 (en) * 1997-05-27 2002-06-17 株式会社エヌイーシー情報システムズ Computer system with tamper detection function
US6185678B1 (en) * 1997-10-02 2001-02-06 Trustees Of The University Of Pennsylvania Secure and reliable bootstrap architecture
FI114416B (en) * 2001-06-15 2004-10-15 Nokia Corp Method for securing the electronic device, the backup system and the electronic device
US6907522B2 (en) * 2002-06-07 2005-06-14 Microsoft Corporation Use of hashing in a secure boot loader
JP4501349B2 (en) * 2003-03-13 2010-07-14 ソニー株式会社 System module execution device
US7281103B2 (en) * 2003-10-01 2007-10-09 Kabushiki Kaisha Toshiba Microcomputer with a security function for accessing a program storage memory
JP2007310601A (en) * 2006-05-18 2007-11-29 Renesas Technology Corp Microcomputer and method for protecting its software
US20080126779A1 (en) * 2006-09-19 2008-05-29 Ned Smith Methods and apparatus to perform secure boot
US8510859B2 (en) * 2006-09-26 2013-08-13 Intel Corporation Methods and arrangements to launch trusted, co-existing environments
US8042190B2 (en) * 2007-12-31 2011-10-18 Intel Corporation Pre-boot protected memory channel
US8321931B2 (en) * 2008-03-31 2012-11-27 Intel Corporation Method and apparatus for sequential hypervisor invocation

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101745821B1 (en) * 2016-03-23 2017-06-09 네이버 주식회사 Method and system for secure booting

Also Published As

Publication number Publication date
WO2013001721A1 (en) 2013-01-03

Similar Documents

Publication Publication Date Title
KR100792287B1 (en) Method for security and the security apparatus thereof
USRE47364E1 (en) Method and system for protecting against the execution of unauthorized software
EP2207121B1 (en) Protecting content on virtualized client platforms
JP5670578B2 (en) Method and apparatus including architecture for protecting sensitive code and data
US8214630B2 (en) Method and apparatus for controlling enablement of JTAG interface
US10318765B2 (en) Protecting critical data structures in an embedded hypervisor system
US8266707B2 (en) Tamper resistant method, apparatus and system for secure portability of digital rights management-protected content
US20110044451A1 (en) Information processing apparatus and falsification verification method
TW201319863A (en) Method and system for preventing execution of malware
US20100241855A1 (en) Systems and Methods for Secure Execution of Code Using a Hardware Protection Module
JP2014048725A (en) Information processing device
JP4537940B2 (en) Information processing apparatus and program execution control method
JP2014170255A (en) Secure boot method
JP4754299B2 (en) Information processing device
Noubir et al. Trusted code execution on untrusted platforms using Intel SGX
US10771249B2 (en) Apparatus and method for providing secure execution environment for mobile cloud
US9740837B2 (en) Apparatus and method for preventing cloning of code
TWI675340B (en) Application or driver verification method
CN111611551A (en) Dynamic link library protection method and system based on state cryptographic algorithm
CN110210189A (en) Software verification method, software and hardware binding method and its programming device
Miyanaga et al. Accelerating Integrity Verification on Secure Processors by Promissory Hash
JP5355351B2 (en) Computer
CN115033854A (en) Data processing method and device, electronic equipment and storage medium
Liu et al. A Lightweight Container Security Framework Adapted to the Power Cloud Platform

Legal Events

Date Code Title Description
A300 Withdrawal of application because of no request for examination

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20141007