WO2013001721A1 - Computer control method - Google Patents

Computer control method Download PDF

Info

Publication number
WO2013001721A1
WO2013001721A1 PCT/JP2012/003659 JP2012003659W WO2013001721A1 WO 2013001721 A1 WO2013001721 A1 WO 2013001721A1 JP 2012003659 W JP2012003659 W JP 2012003659W WO 2013001721 A1 WO2013001721 A1 WO 2013001721A1
Authority
WO
WIPO (PCT)
Prior art keywords
program
verification
instruction
virtual machine
code
Prior art date
Application number
PCT/JP2012/003659
Other languages
French (fr)
Japanese (ja)
Inventor
貴司 大山
亮 上田
章郎 古賀
Original Assignee
パナソニック株式会社
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 パナソニック株式会社 filed Critical パナソニック株式会社
Publication of WO2013001721A1 publication Critical patent/WO2013001721A1/en

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

Definitions

  • the present invention relates to a technique for controlling activation of a computer system including a processor.
  • Patent Document 1 discloses a microprocessor system that operates in a reliable and safe environment.
  • This microprocessor system includes a plurality of processors.
  • One of the processors becomes a logical processor (ILP) that starts the secure boot process, and the other processor becomes a response logical processor (RLP).
  • ILP logical processor
  • RLP response logical processor
  • Only the ILP loads the Secure Virtual Machine Monitor (SVMM) module and the Secure Initialization Authentication Code (SINIT-AC) module.
  • SINIT-AC Secure Initialization Authentication Code
  • the SVMM is tested, the SVMM identity is registered, and the SVMM is executed.
  • RLP receives SENTER JOIN MESSAGE from ILP, SVMM is executed in RLP.
  • one aspect of the present invention provides a computer control method for controlling activation of a computer system including a processor and a read-only memory, wherein an activation program is stored in a fixed position of the read-only memory.
  • the start program includes an instruction for verifying a second program, and the computer control method starts the execution of the start program stored in a fixed position of the read-only memory immediately after the reset. And a verification step of verifying the second program in accordance with the startup program, and a stop step of stopping startup of the computer system if the verification fails.
  • One aspect of the present invention is a computer control method for controlling activation of a computer system including a processor and a read-only memory.
  • An activation program is stored in a fixed position of the read-only memory, and the activation program includes an instruction for verifying the second program.
  • the computer control method includes a start step of starting execution of the startup program stored in a fixed position of the read-only memory immediately after reset, and a verification step of verifying the second program according to the startup program; And a stop step of stopping startup of the computer system when the verification fails.
  • the computer system further includes a read / write memory
  • the startup program further includes an instruction to load the second program and an instruction to branch to the second program
  • Instructions for executing processing in the computer system may be included.
  • the computer control method further includes a loading step of loading the second program into the read / write memory according to the startup program when the verification is successful, and after loading the second program, according to the startup program, A branching step for branching to the second program and an execution step for executing the processing according to the second program may be included.
  • the read / write memory may include a secure area, and the second program may be loaded into the secure area in the loading step.
  • the boot program further includes an instruction to set the secure area in the read / write memory
  • the computer control method further sets the secure area in the read / write memory according to the boot program. Steps may be included.
  • the startup program further includes an instruction for decrypting the second program in the encrypted state, and in the verification step, the second program in the encrypted state is verified
  • the computer control method May further include a decryption step of decrypting the encrypted second program in accordance with the activation program, and in the loading step, the second program generated by the decryption step may be loaded.
  • the second program may include an instruction to initialize a device included in the computer system, and the device may be initialized in the execution step.
  • the second program includes an instruction to verify a virtual machine control program
  • the computer control method further includes, in the execution step, after the initialization of the device is performed, according to the second program, A second verification step for verifying the virtual computer control program may be included, and when the verification of the virtual computer control program fails in the stop step, the activation of the computer system may be stopped.
  • the read / write memory includes a secure area
  • the second program further includes an instruction to load the virtual machine control program and an instruction to branch to the virtual machine control program
  • the virtual machine control program is
  • the computer control method further includes, when the verification of the virtual computer control program succeeds, the virtual computer control program in accordance with the second program when the virtual computer control program succeeds in the verification.
  • a second loading step for loading into the secure area of the read / write memory; a second branching step for branching to the virtual computer control program according to the second program after loading the virtual computer control program; and the virtual computer control program According to Te may be and a second execution step of executing the processing in the virtual machine.
  • the second program further includes an instruction to set the secure area in the read / write memory
  • the computer control method further sets the secure area in the read / write memory according to the second program.
  • a second setting step may be included.
  • the second program further includes an instruction to decrypt the encrypted virtual machine control program in the encrypted state, and the virtual machine control program in the encrypted state is verified in the second verification step.
  • the computer control method further includes a second decryption step of decrypting the encrypted virtual machine control program according to the second program, and the computer control method generates the second decryption step in the second load step.
  • the virtual machine control program that has been made may be loaded.
  • the computer system may further include a verification dedicated circuit for verifying the virtual machine control program, and the verification may be executed by the verification dedicated circuit in the second verification step.
  • the computer system may further include a verification dedicated circuit for verifying the second program, and the verification may be executed by the verification dedicated circuit in the verification step.
  • Another aspect of the present invention is a startup program that is started immediately after a processor is reset, the verification step for causing the processor to verify the second program, and if the verification fails, the computer system And a stop step for stopping the start-up.
  • a computer-readable recording medium that records a startup program that is started immediately after resetting the processor, the verification step causing the processor to verify the second program;
  • a start program for executing a stop step for stopping the start of the computer system when the verification fails is recorded.
  • a computer system including a processor and a read-only memory, wherein a startup program is stored at a fixed position of the read-only memory, and the startup program stores a second program. Verifying, immediately after resetting, a start step of starting execution of the startup program stored in a fixed position of the read-only memory, a verification step of verifying the second program according to the startup program, and the verification In the case of failure, the computer control method includes a stop step of stopping the start of the computer system.
  • Embodiment 1 A computer system (also referred to as an information processing apparatus) 100e as Embodiment 1 according to the present invention will be described.
  • the computer system 100e includes a processor 101e and a read-only memory 102e as shown in FIG.
  • a startup program (sometimes called a boot program or a boot code) 121e is stored at a fixed position in the read-only memory 102e.
  • the activation program 121e includes a command for verifying the second program 130e (not shown).
  • start program 121e stored in the fixed position of the read-only memory 102e is started (start step S401).
  • the second program 130e is verified according to the activation program 121e (verification step S402).
  • step S404 when the verification fails (step S403), the activation of the computer system 100e is stopped (stop step S404).
  • the activation program 121e since the activation program 121e is stored in the read-only memory 102e, the activation program 121e is not falsified. For this reason, the verification by the startup program 121e that has not been tampered with is reliable. Therefore, when the verification of the second program 130e fails, the second program 130e may be falsified. In this case, the activation of the computer system 100e is stopped. Therefore, it is possible to prevent the processor from operating in an unreliable environment.
  • the computer system 100e may further include a read / write memory 103e (not shown).
  • the startup program 121e further includes an instruction for loading the second program 130e and an instruction for causing the second program 130e to branch (sometimes referred to as a jump), and the second program 130e executes processing in the computer system 100e. Instructions may be included.
  • the computer control method further includes a loading step of loading the second program 130e into the read / write memory 103e according to the activation program 121e when the verification is successful, and a loading step according to the activation program 121e after loading the second program 130e.
  • a branching step for branching to the second program 130e and an execution step for executing the processing according to the second program 130e are included.
  • the computer system 100e can be continuously activated.
  • the read / write memory 103e may include a secure area.
  • the second program 130e is loaded into the secure area.
  • the second program 130e since the second program 130e is loaded into the secure area, the second program 130e can be protected.
  • the activation program 121e may further include an instruction for setting the secure area in the read / write memory 103e.
  • the computer control method further includes a setting step of setting the secure area in the read / write memory 103e according to the activation program 121e.
  • the secure area is set by the startup program 121e that has not been tampered with, the safety of the secure area is ensured.
  • the activation program 121e may further include an instruction to decrypt the encrypted second program 130e.
  • the encrypted second program 130e may be verified.
  • the computer control method further includes a decrypting step of decrypting the encrypted second program 130e in accordance with the activation program 121e.
  • the second program 130e generated in the decoding step is loaded.
  • the possibility that the second program 130e in the encrypted state is illegally analyzed can be reduced.
  • the second program 130e may include an instruction for executing initialization of a device included in the computer system 100e.
  • the device is initialized.
  • initialization of the device can be executed in a safe environment.
  • the second program 130e may include an instruction for verifying the virtual machine control program 141e (not shown).
  • the computer control method may further include a second verification step of verifying the virtual machine control program 141e according to the second program 130e after the initialization of the device is executed in the execution step.
  • the stop step when the verification of the virtual machine control program 141e fails, the start of the computer system 100e is stopped.
  • the verification by the verified second program 130e is reliable. Therefore, when the second program 130e fails to verify the virtual machine control program 141e, the virtual machine control program 141e may be falsified. In this case, the activation of the computer system 100e is stopped. Therefore, there is an excellent effect that the processor can be prevented from operating in an unreliable environment.
  • the read / write memory 103e may include a secure area.
  • the second program 130e may further include an instruction to load the virtual machine control program 141e and an instruction to branch to the virtual machine control program 141e.
  • the virtual machine control program 141e may include an instruction for executing processing in the virtual machine of the computer system 100e.
  • the computer control method further includes a second loading step of loading the virtual computer control program 141e into the secure area of the read / write memory 103e according to the second program 130e when the verification of the virtual computer control program 141e is successful.
  • a second branch step for branching to the virtual machine control program 141e according to the second program 130e, and a second execution step for executing the processing in the virtual machine according to the virtual machine control program 141e may be included.
  • the virtual machine control program 141e since the virtual machine control program 141e is loaded in the secure area, the virtual machine control program 141e can be protected.
  • the second program 130e may further include an instruction for setting the secure area in the read / write memory 103e.
  • the computer control method may further include a second setting step of setting the secure area in the read / write memory 103e according to the second program 130e.
  • the secure area is set by the second program 130e that has not been tampered with, the safety of the secure area is ensured.
  • the second program 130e may further include an instruction to decrypt the encrypted virtual machine control program 141e.
  • the encrypted virtual machine control program 141e may be verified.
  • the computer control method further includes a second decryption step of decrypting the encrypted virtual machine control program 141e in accordance with the second program 130e.
  • the virtual machine control program 141e generated in the second decoding step is loaded.
  • the virtual machine control program 141e since the virtual machine control program 141e is in an encrypted state, it is possible to reduce the possibility that the virtual machine control program 141e in the encrypted state is illegally analyzed.
  • the computer system 100e may further include a verification dedicated circuit 106e for verifying the virtual machine control program 141e.
  • verification is executed by the verification dedicated circuit 106e.
  • the time required for verification can be shortened compared to the case where the verification is performed by the processor 101e.
  • the computer system 100e may further include a verification dedicated circuit 106f for verifying the second program 130e.
  • verification is executed by the verification dedicated circuit 106f.
  • the time required for verification can be shortened compared with the case where the verification is performed by the processor 101e.
  • Another aspect of the present invention may be a startup program 121e that is started immediately after the processor 101e is reset.
  • the activation program 121e may cause the processor 101e to execute a verification step for verifying the second program 130e and a stop step for stopping the activation of the computer system when the verification fails.
  • Another aspect of the present invention may be a computer-readable recording medium that records a startup program 121e that is started immediately after the processor 101e is reset.
  • the activation program 121e may cause the processor 101e to execute a verification step for verifying the second program 130e and a stop step for stopping the activation of the computer system when the verification fails.
  • Another aspect of the present invention may be a computer system 100e including a processor 101e and a read-only memory 102e.
  • the activation program 121e is stored at a fixed position of the read-only memory 102e.
  • the activation program 121e verifies the second program 130e.
  • the computer system 100e is controlled by a computer control method.
  • the computer control method includes a start step of starting execution of a startup program 121e stored in a fixed position of the read-only memory immediately after reset, a verification step of verifying the second program 130e according to the startup program 121e, When the verification fails, a stop step of stopping the start of the computer system 100e may be included.
  • Embodiment 2 An information processing apparatus (also referred to as a computer system) 100a as Embodiment 2 according to the present invention will be described.
  • the information processing apparatus 100a includes a CPU (Central Processing Unit) 101, a ROM (Read Only Memory) 102, a RAM (Random Access Memory) 103, a hard disk drive, and the like.
  • the storage unit 104, the bus 105, and other units (not shown) are included.
  • the CPU 101, ROM 102, RAM 103, storage unit 104, and other units are connected via a bus 105.
  • ROM is a memory that can only read recorded data. Since the ROM is read-only, data recorded in the ROM cannot be rewritten.
  • the ROM 102 stores a boot code 121 in advance at a fixed position in the ROM 102.
  • the storage unit 104 stores an encryption initialization code 131 in advance.
  • the boot code 121 is software (computer program) that is executed first when boot processing is performed in the information processing apparatus 100a. In other words, the program is executed immediately after the CPU 101 is reset.
  • the boot code may be called a boot program or a start program.
  • the boot code 121 includes a verification program 122, a decryption program 123, a load instruction 124, and a jump (sometimes referred to as a branch) instruction 125, as shown in FIG.
  • the verification program 122, the decryption program 123, the load instruction 124, and the jump instruction 125 are arranged in this order. Therefore, the verification program 122, the decryption program 123, the load instruction 124, and the jump instruction 125 are executed in this order.
  • the verification program 122 stores an expected hash value generated by performing a hash operation H on an encrypted initialization code 131 that has not been tampered with in advance.
  • the hash operation H is based on SHA-1.
  • the verification program 122 includes an instruction for instructing to read the encryption initialization code 131 stored in the storage unit 104. Further, it includes an instruction for performing a hash operation H on the read encryption initialization code 131 and calculating a calculation hash value. Further, an instruction for instructing to compare the stored expected hash value with the calculated operation hash value is included. In addition, if the expected hash value and the calculated hash value match, the verification is successful, and an instruction to instruct that the encrypted initialization code 131 is considered correct is included. If the expected hash value and the calculated hash value do not match, the verification fails and it is considered that the encrypted initialization code 131 has been tampered with, and the activation of the information processing apparatus 100a is instructed to stop. Includes instructions.
  • the decryption program 123 is a computer program that performs decryption using the decryption algorithm D when the encrypted initialization code 131 is successfully verified.
  • the decryption algorithm D is based on AES (Advanced Encryption Standard) of the secret key cryptosystem.
  • the decryption program 123 includes a secret key Sky.
  • the secret key Skye is a secret key encryption method key used for decrypting the ciphertext.
  • the decryption program 123 decrypts the encrypted initialization code 131 by using the secret key Sky by the decryption algorithm D.
  • the initialization code 130 is generated.
  • the load instruction 124 is an instruction for instructing to load the generated initialization code 130 into the RAM 103.
  • the load instruction 124 is executed by the CPU 101, the initialization code 130 is loaded into the RAM 103 as shown in FIG.
  • the jump instruction 125 is an instruction for instructing to jump to the initialization code 130 stored in the RAM 103 after the loading of the initialization code 130 to the RAM 103 is completed.
  • the CPU 101 jumps from the boot code 121 to the initialization code 130 as shown in FIG. After jumping to the initialization code 130, the CPU 101 starts execution from the beginning of the initialization code 130.
  • the encryption initialization code 131 is a ciphertext generated by applying the encryption algorithm E to the initialization code 130 using the secret key Sky as an example.
  • the encryption algorithm E corresponds to the decryption algorithm D.
  • the ciphertext generated using the encryption algorithm E is decrypted using the decryption algorithm D.
  • plain text is generated.
  • the encryption algorithm E is based on AES.
  • the initialization code 130 is software (computer program) called from the boot code 121.
  • the initialization code 130 includes an initialization instruction 132.
  • the initialization command 132 is a command for instructing to execute initialization of a device that is hardware included in the information processing apparatus 100a. Note that the initialization code may be referred to as an initialization program.
  • step S101 When the power switch of the information processing apparatus 100a is turned on, the CPU 101 starts executing the boot code 121 stored in the ROM 102 (step S101).
  • the CPU 101 executes the verification program 122 included in the boot code 121. In this way, the encryption initialization code 131 stored in the storage unit 104 is verified (step S102).
  • the verification program 122 included in the boot code 121 stores the expected hash value of the encrypted initialization code 131 in advance.
  • the encrypted initialization code 131 is read from the storage unit 104.
  • a hash operation H is performed on the read encrypted initialization code 131 to calculate an operation hash value.
  • the stored expected hash value is compared with the calculated operation hash value. If the expected hash value and the calculated hash value match, verification is successful and the encrypted initialization code 131 is considered correct. On the other hand, if the expected hash value and the calculated hash value do not match, the verification fails and it is considered that the encrypted initialization code 131 has been tampered with.
  • step S108 the information processing apparatus 100a stops booting (step S108) and ends the process.
  • step S103 the CPU 101 operates according to the decryption program 123 included in the boot code 121 to decrypt the encrypted initialization code 131. As a result, the initialization code 130 is generated (step S104).
  • the CPU 101 operates according to a load instruction 124 included in the boot code 121.
  • the generated initialization code 130 is loaded into the RAM 103 (step S105).
  • the CPU 101 operates according to the jump instruction 125 included in the boot code 121. This jumps to the initialization code 130 stored in the RAM 103 (step S106).
  • the CPU 101 operates according to the initialization code 130 stored in the RAM 103. Thereby, initialization of hardware etc. are performed (step S107).
  • the CPU 101 of the information processing apparatus 100 a is activated from the boot code 121 on the ROM 102. Since the data recorded in the ROM 102 cannot be rewritten, the boot code 121 on the ROM 102 is not falsified.
  • the integrity of the boot code 121 is secured. This makes it difficult for a malicious attacker or the like to alter the intended boot code 121.
  • the boot code 121 includes a verification program 122. As described above, since it is difficult to falsify the boot code 121, it is also difficult to falsify the verification program 122. Therefore, the verification by the verification program 122 is reliable.
  • the verification program 122 verifies whether or not the encryption initialization code 131 has been tampered with. If verification of the encrypted initialization code 131 fails, that is, if alteration of the encrypted initialization code 131 is detected, booting is stopped. On the other hand, when the verification of the encrypted initialization code 131 is successful, the encrypted initialization code 131 is decrypted, the initialization code 130 is loaded into the RAM 103, and the initialization code 130 is executed.
  • the information processing apparatus 100a can provide a reliable and safe environment at the stage of hardware initialization.
  • Embodiment 3 An information processing apparatus (sometimes referred to as a computer system) 100b as Embodiment 3 of the present invention will be described.
  • the information processing apparatus 100b includes a cryptographic engine 106, a CPU 101, virtual machine hardware 107, a ROM 102, a RAM 103b, a storage unit 104, a bus 105, and other units (not shown). Not).
  • the cryptographic engine 106, CPU 101, virtual machine hardware 107, ROM 102, RAM 103 b, storage unit 104 and other units are connected via a bus 105.
  • the ROM 102 stores a boot code 121b in advance at a fixed position in the ROM 102.
  • the storage unit 104 stores an initialization code 130b and a virtual machine control code 141 in advance.
  • the boot code 121b is software (computer program) that is executed first when boot processing is performed in the information processing apparatus 100b. In other words, the program is executed immediately after the CPU 101 is reset.
  • the boot code may be called a boot program or a start program.
  • the boot code 121b includes a verification instruction 126, a load instruction 124b, and a jump instruction 125b.
  • the verification instruction 126, the load instruction 124b, and the jump instruction 125b are arranged in this order.
  • the verification instruction 126, the load instruction 124b, and the jump instruction 125b are executed in this order.
  • the verification instruction 126 includes an instruction for instructing the cryptographic engine 106 to verify the initialization code 130b stored in the storage unit 104. It also includes an instruction for receiving a verification result from the cryptographic engine 106. Further, when the verification result indicates failure, in other words, when the initialization code 130b indicates falsification, the instruction includes an instruction to stop the activation of the information processing apparatus 100b.
  • the load instruction 124 b is an instruction that instructs to load the initialization code 130 b stored in the storage unit 104 into the memory unit 109 b (described later) of the RAM 103 when the initialization code 130 b is successfully verified.
  • the load instruction 124b is executed by the CPU 101, the initialization code 130b is loaded into the RAM 103b as shown in FIG.
  • the jump instruction 125b is an instruction instructing to jump to the initialization code 130b stored in the memory unit 109b after the loading of the initialization code 130b to the memory unit 109b is completed.
  • the CPU jumps from the boot code 121b to the initialization code 130b as shown in FIG. After jumping to the initialization code 130b, the CPU 101 starts execution from the beginning of the initialization code 130b.
  • the initialization code 130b is software (computer program) called from the boot code 121b, and executes hardware initialization and the like. Note that the initialization code may be referred to as an initialization program.
  • the initialization code 130b includes an initialization command 132b, a setting command 133, a verification command 134, a load command 135, and a jump command 136, as shown in FIG.
  • the initialization instruction 132b, the setting instruction 133, the verification instruction 134, the load instruction 135, and the jump instruction 136 are arranged in this order. Therefore, the initialization instruction 132b, the setting instruction 133, the verification instruction 134, the load instruction 135, and the jump instruction 136 are executed in this order.
  • the initialization instruction 132b is an instruction for instructing execution of hardware initialization.
  • the setting command 133 is a command for instructing to set a secure area in the memory unit 109b of the RAM 103b.
  • the setting instruction 133 sets a head address, a tail address, and identification information in a dedicated register 112b (described later) included in the access restriction unit 108b (described later) of the RAM 103b.
  • the start address and end address indicate the start address and end address of the secure area.
  • the identification information is an identifier for identifying a CPU, device, OS, application program, and the like. Only these CPU, device, OS, and application program are permitted to access the set secure area.
  • the secure area set by the setting instruction 133 is shown as a secure area 111b.
  • the verification command 134 includes a command for instructing the cryptographic engine 106 to verify the virtual machine control code 141 stored in the storage unit 104. It also includes an instruction for receiving a verification result from the cryptographic engine 106. Further, when the verification result indicates failure, in other words, when the virtual machine control code 141 indicates falsification, the instruction includes an instruction to stop the activation of the information processing apparatus 100b.
  • the load instruction 135 is an instruction that instructs to load the virtual machine control code 141 into the secure area 111b when the verification of the virtual machine control code 141 is successful.
  • the load instruction 135 is executed by the CPU 101, the virtual machine control code 141 is loaded into the secure area 111b as shown in FIG.
  • the jump instruction 136 is an instruction for instructing a jump to the virtual machine control code 141 stored in the secure area 111b after the loading of the virtual machine control code 141 to the secure area 111b is completed.
  • the CPU 101 executes a jump instruction 136, the CPU jumps from the initialization code 130b to the virtual machine control code 141 as shown in FIG. After jumping to the virtual machine control code 141, execution is started from the head of the virtual machine control code 141.
  • the virtual machine control code 141 is software (computer program) for controlling the virtual machine hardware 107. Note that the virtual machine control code may be called a virtual machine control program.
  • the RAM 103b includes an access restriction unit 108b and a memory unit 109b.
  • the memory unit 109b includes a memory area for storing data.
  • a secure area 111b is set in the memory area.
  • an area that is not set as the secure area 111b is the normal area 110b.
  • the access restriction unit 108b has a dedicated register 112b.
  • Secure area information 116b is set in the dedicated register 112b.
  • the secure area information 116b includes a head address 113b, a tail address 114b, and identification information 115b.
  • the start address 113b and the end address 114b indicate the start address and the end address of the secure area 111b, respectively.
  • the identification information 115b is an identifier for identifying a specific CPU, a specific device, a specific OS, or a specific application program.
  • the access restriction unit 108b permits access to the secure area 111b only to the CPU, device, OS, or application program identified by the identification information 115b. To do. Access to the secure area 111b is prohibited for other CPUs, other devices, other OSs, and other application programs.
  • the cryptographic engine 106 is hardware (dedicated circuit) for performing hash verification and encryption / decryption processing.
  • the cryptographic engine 106 verifies the initialization code 130b stored in the storage unit 104 as follows according to the instruction of the verification instruction 126 included in the boot code 121.
  • the cryptographic engine 106 stores in advance an expected hash value generated by performing a hash operation H on an initialization code 130b that has not been tampered with. Further, the cryptographic engine 106 reads the initialization code 130b from the storage unit 104, performs a hash operation H on the read initialization code 130b, and calculates a calculation hash value. Next, the stored expected hash value is compared with the calculated operation hash value. If the expected hash value and the calculated hash value match, the verification is successful, and a verification result regarding the initialization code 130b as being correct is output to the CPU 101. On the other hand, if the expected hash value and the calculated hash value do not match, the verification fails, and the verification result that the initialization code 130b is considered to have been tampered with is output to the CPU 101.
  • the cryptographic engine 106 verifies the virtual machine control code 141 stored in the storage unit 104 as shown below according to the instruction of the verification instruction 134 included in the initialization code 130b.
  • the cryptographic engine 106 stores in advance an expected hash value generated by performing a hash operation H on a virtual machine control code 141 that has not been tampered with. Further, the cryptographic engine 106 reads the virtual computer control code 141 from the storage unit 104, performs a hash operation H on the read virtual computer control code 141, and calculates an operation hash value. Next, the stored expected hash value is compared with the calculated operation hash value. If the expected hash value and the calculated hash value match, the verification is successful, and a verification result that the virtual machine control code 141 is regarded as correct is output to the CPU 101. On the other hand, if the expected hash value and the calculated hash value do not match, the verification fails, and the verification result that the virtual machine control code 141 is considered to have been tampered with is output to the CPU 101.
  • the virtual machine hardware 107 is also called a hypervisor, and is hardware that enables a plurality of different OSs to be executed in parallel.
  • a normal OS 221 and a secure OS 231 operate. Under the management of the normal OS 221, the normal applications 201 and 202 operate. On the other hand, the secure applications 211 and 212 operate under the management of the secure OS 231.
  • the secure applications 211 and 212 are permitted to access the secure area 111b via the secure OS 231.
  • the normal applications 201 and 202 are permitted to access the normal area 110b via the normal OS 221. However, access to the secure area 111b is not permitted.
  • the CPU 101 starts executing the boot code 121b stored in the ROM 102 (step S201).
  • the CPU 101 operates in accordance with the verification instruction 126 included in the boot code 121b. Thereby, the CPU 101 controls the cryptographic engine 106 to verify the initialization code 130b stored in the storage unit 104 (step S202).
  • the cryptographic engine 106 stores the expected hash value for the initialization code 130b, and verifies it by comparing the calculated hash value calculated from the initialization code 130b with the expected hash value.
  • step S203 If the initialization code 130b is not correct ("N" in step S203), the information processing apparatus 100b stops booting (step S213) and ends the process.
  • the CPU 101 loads the initialization code 130b into the RAM 103b by operating according to the load instruction 124b included in the boot code 121b (step S204).
  • step S205 by operating according to the jump instruction 125b included in the boot code 121b, the CPU 101 jumps to the initialization code 130b stored in the RAM 103b (step S205).
  • the CPU 101 executes the initialization instruction 132b included in the initialization code 130b (step S206).
  • the CPU 101 operates in accordance with the setting instruction 133 included in the initialization code 130b.
  • the start address, end address and identification information of the secure area 111b are set in the dedicated register 112b of the access restriction unit 108b (step S207).
  • the secure area 111b is set in the RAM 103b. Only the secure OS 231 and the secure applications 211 and 212 are accessible to the secure area 111b. Access to the secure area 111b is prohibited for other OSs and other applications.
  • the CPU 101 operates in accordance with the verification instruction 134 included in the initialization code 130b. As a result, the CPU 101 controls the cryptographic engine 106 to verify the virtual machine control code 141 stored in the storage unit 104 (step S208).
  • the cryptographic engine 106 stores an expected hash value for the virtual machine control code 141 that has not been tampered with.
  • the cryptographic engine 106 verifies the cryptographic hash value calculated from the virtual machine control code 141 by comparing it with the expected hash value.
  • step S209 If the virtual machine control code 141 is not correct (“N” in step S209), the information processing apparatus 100b stops booting (step S213) and ends the process.
  • step S209 If the virtual machine control code 141 is correct (“Y” in step S209), the CPU 101 operates in accordance with the load instruction 135 included in the initialization code 130b. As a result, the virtual machine control code 141 is loaded into the secure area 111b of the RAM 103b (step S210).
  • the CPU 101 operates according to the jump instruction 136 included in the initialization code 130b. Thereby, control is performed so as to jump to the virtual machine control code 141 stored in the secure area 111b of the RAM 103b (step S211).
  • the CPU 101 executes the virtual machine control code 141 and operates the virtual machine hardware 107 (step S212).
  • the CPU 101 of the information processing apparatus 100b always starts up from the boot code 121b on the ROM 102. Since the data recorded in the ROM 102 cannot be rewritten, the boot code 121b on the ROM 102 is not falsified.
  • the integrity of the boot code 121b is ensured. This makes it difficult for a malicious attacker or the like to alter the intended boot code 121b.
  • the boot code 121b includes a verification instruction 126. As described above, since it is difficult to falsify the boot code 121b, the verification instruction 126 is also difficult to falsify. Therefore, the verification instruction 126 is reliable.
  • the verification instruction 126 causes the cryptographic engine 106, which is hardware, to verify the initialization code 130b. Since the cryptographic engine 106 is hardware, it is not tampered with. Therefore, the verification by the cryptographic engine 106 is reliable.
  • the cryptographic engine 106 verifies whether or not the initialization code 130b has been tampered with. If the verification of the initialization code 130b fails, that is, if alteration of the initialization code 130b is detected, the boot is stopped. On the other hand, when the initialization code 130b is successfully verified, the initialization code 130b is loaded into the RAM 103, and the initialization code 130 is executed.
  • the initialization code 130b when the initialization code 130b has been tampered with, booting stops. On the other hand, only when the initialization code 130b has not been tampered with, the initialization code 130b is loaded into the RAM 103b and the initialization code 130b is executed.
  • the information processing apparatus 100b can provide a reliable and safe environment at the stage of hardware initialization.
  • the initialization code 130b includes a verification instruction 134. As described above, when it is determined that the initialization code 130b has not been tampered with, the verification instruction 134 has not been tampered with. Thus, the verification instruction 134 is reliable.
  • the verification instruction 134 causes the cryptographic engine 106, which is hardware, to verify the virtual machine control code 141. Since the cryptographic engine 106 is hardware, it is not tampered with. Therefore, the verification by the cryptographic engine 106 is reliable.
  • the cryptographic engine 106 verifies whether or not the virtual machine control code 141 has been tampered with. If verification of the virtual machine control code 141 fails, that is, if alteration of the virtual machine control code 141 is detected, booting is stopped. On the other hand, when the verification of the virtual machine control code 141 is successful, the virtual machine control code 141 is loaded into the secure area 111b of the RAM 103b, and the virtual machine control code 141 is executed.
  • booting stops when the virtual machine control code 141 has been tampered with.
  • the virtual machine control code 141 is loaded into the secure area 111b of the RAM 103b, and the virtual machine control code 141 is executed.
  • the information processing apparatus 100b can provide a reliable and safe environment when the virtual machine control code 141 is executed in the secure mode.
  • the virtual machine control code 141 is loaded into the secure area 111b of the RAM 103b, it is possible to make it difficult for a malicious attacker to tamper with the virtual machine control code 141.
  • Embodiment 4 An information processing apparatus (sometimes referred to as a computer system) 100c as Embodiment 4 of the present invention will be described.
  • the information processing device 100c includes, as shown in FIG. It is composed of units (not shown).
  • the cryptographic engine 106, CPU 101, CPU 101 c, virtual machine hardware 107, ROM 102, RAM 103 b, RAM 103 c, storage unit 104, and other units are connected via a bus 105.
  • the CPU 101c is a CPU different from the CPU 101.
  • the RAM 103c is a RAM different from the RAM 103b.
  • the cryptographic engine 106 and the virtual machine hardware 107 are the same as the cryptographic engine 106 and the virtual machine hardware 107 of the information processing apparatus 100b, respectively, description thereof is omitted.
  • the ROM 102 stores a boot code 121c in advance at a fixed position in the ROM 102.
  • the storage unit 104 stores an encryption initialization code 131c and a virtual machine control code 141 in advance.
  • the boot code 121c is software (computer program) that is executed first when boot processing is performed in the information processing apparatus 100c. In other words, the program is executed immediately after the CPU 101 is reset.
  • the boot code may be called a boot program or a start program.
  • the boot code 121c includes a setting instruction 127, a verification instruction 126c, a decoding instruction 128, a load instruction 124c, and a jump instruction 125c.
  • the setting instruction 127, the verification instruction 126c, the decoding instruction 128, the load instruction 124c, and the jump instruction 125c are arranged in this order. Accordingly, the setting instruction 127, the verification instruction 126c, the decryption instruction 128, the load instruction 124c, and the jump instruction 125c are executed in this order.
  • the setting command 127 is a command for instructing to set a secure area in the memory unit 109b of the RAM 103b. Specifically, the setting instruction 127 sets the start address, the end address, and the identification information in the dedicated register 112b included in the access restriction unit 108b of the RAM 103b. The start address and end address indicate the start address and end address of the secure area.
  • the identification information is an identifier for identifying a CPU, device, OS, application program, and the like. Only these CPU, device, OS, and application program are permitted to access the set secure area.
  • the verification instruction 126c includes an instruction for instructing the cryptographic engine 106 to verify the encrypted initialization code 131c stored in the storage unit 104. It also includes an instruction for receiving a verification result from the cryptographic engine 106. Further, when the verification result indicates failure, in other words, when the encrypted initialization code 131c indicates falsification, the instruction includes an instruction to stop the activation of the information processing apparatus 100c.
  • the decryption command 128 is a command for instructing the cryptographic engine 106 to decrypt the encrypted initialization code 131c stored in the storage unit 104 when the verification of the encrypted initialization code 131c is successful. .
  • the initialization code 130c is generated.
  • the load instruction 124 c is an instruction that instructs to load the generated initialization code 130 c into the secure area 111 b set in the memory unit 109 b of the RAM 103.
  • the load instruction 124c is executed by the CPU 101, the initialization code 130c is loaded into the secure area 111b as shown in FIG.
  • the jump instruction 125c is an instruction that instructs to jump to the initialization code 130c stored in the secure area 111b after the loading of the initialization code 130c to the secure area 111b is completed.
  • the jump instruction 125c is executed by the CPU 101, as shown in FIG. 11, the CPU jumps from the boot code 121c to the initialization code 130c. After jumping to the initialization code 130c, execution is started from the beginning of the initialization code 130c.
  • the encryption initialization code 131c is a ciphertext generated by applying the encryption algorithm E to the initialization code 130c, for example, using the secret key Sky.
  • the initialization code 130c is software (computer program) called from the boot code 121c, and executes hardware initialization and the like. Note that the initialization code may be referred to as an initialization program.
  • the initialization code 130c includes an initialization instruction 132c, a setting instruction 133c, a verification instruction 134c, a load instruction 135c, and a jump instruction 136c, as shown in FIG.
  • the initialization instruction 132c, the setting instruction 133c, the verification instruction 134c, the load instruction 135c, and the jump instruction 136c are arranged in this order. Accordingly, the initialization instruction 132c, the setting instruction 133c, the verification instruction 134c, the load instruction 135c, and the jump instruction 136c are executed in this order.
  • the initialization instruction 132c is an instruction for instructing execution of hardware initialization.
  • the setting command 133c is a command for instructing to set a secure area in the memory unit 109c of the RAM 103c.
  • the setting instruction 133c sets a head address, a tail address, and identification information in a dedicated register 112c (described later) included in the access restriction unit 108c (described later) of the RAM 103c.
  • the start address and end address indicate the start address and end address of the secure area.
  • the identification information is an identifier for identifying a CPU, device, OS, application program, and the like. Only these CPU, device, OS, and application program are permitted to access the set secure area.
  • the verification command 134c includes a command for instructing the cryptographic engine 106 to verify the virtual machine control code 141 stored in the storage unit 104. It also includes an instruction for receiving a verification result from the cryptographic engine 106. Further, when the verification result indicates failure, in other words, when the virtual machine control code 141 indicates falsification, the instruction includes an instruction to stop the activation of the information processing apparatus 100c.
  • the load instruction 135c is an instruction that instructs to load the virtual machine control code 141 into the secure area 111c when the verification of the virtual machine control code 141 is successful.
  • the load instruction 135c is executed by the CPU 101c, the virtual machine control code 141 is loaded into the secure area 111c as shown in FIG.
  • the jump instruction 136c is an instruction for instructing a jump to the virtual machine control code 141 stored in the secure area 111c after the loading of the virtual machine control code 141 to the secure area 111c is completed.
  • the CPU 101c executes a jump instruction 136c, the CPU 101c jumps from the initialization code 130c to the virtual machine control code 141 as shown in FIG. After jumping to the virtual machine control code 141, execution is started from the head of the virtual machine control code 141.
  • the virtual machine control code 141 is as described above.
  • RAM 103b has the same configuration as the RAM 103b included in the information processing apparatus 100b. Therefore, description is abbreviate
  • the RAM 103c has the same configuration as the RAM 103b.
  • the RAM 103c includes an access restriction unit 108c and a memory unit 109c.
  • the memory unit 109c includes a memory area for storing data.
  • a secure area 111c is set in the memory area.
  • an area that is not set as the secure area 111c is the normal area 110c.
  • the access restriction unit 108c has a dedicated register 112c.
  • Secure area information 116c is set in the dedicated register 112c.
  • the secure area information 116c includes a head address 113c, a tail address 114c, and identification information 115c.
  • the access restriction unit 108c permits access to the secure area 111c only for the CPU, device, OS, or application program identified by the identification information 115c. To do. Access to the secure area 111c is prohibited for other CPUs, other devices, other OSs, and other application programs.
  • the CPU 101 When the power switch of the information processing apparatus 100c is turned on, the CPU 101 starts executing the boot code 121c stored in the ROM 102 (step S301).
  • the CPU 101 operates in accordance with the setting instruction 127 included in the boot code 121c.
  • the start address, end address, and identification information of the secure area 111b are set in the dedicated register 112b of the access restriction unit 108b (step S302).
  • the secure area 111b is set in the RAM 103b. Only the secure OS, secure application, etc. identified by the identification information are accessible to the secure area 111b. Access to the secure area 111b is prohibited for other OSs and other applications.
  • the CPU 101 controls the cryptographic engine 106 to verify the encrypted initialization code 131c stored in the storage unit 104 (step S303).
  • the cryptographic engine 106 stores an expected hash value for the encrypted initialization code 131c.
  • the cryptographic engine 106 verifies the operational hash value calculated from the encrypted initialization code 131c by comparing it with the expected hash value.
  • step S304 If the encrypted initialization code 131c is not correct ("N" in step S304), the information processing apparatus 100c stops booting (step S316) and ends the process.
  • step S304 If the encrypted initialization code 131c is correct (“Y” in step S304), the CPU 101 operates in accordance with the decryption instruction 128 included in the boot code 121c. As a result, the CPU 101 instructs the cryptographic engine 106 to decrypt the encrypted initialization code 131c. The cryptographic engine 106 decrypts the encrypted initialization code 131c using the encryption key Sky by the decryption algorithm D. Thereby, the cryptographic engine 106 generates the initialization code 130c (step S305).
  • the CPU 101 operates according to the load instruction 124c included in the boot code 121c. As a result, the CPU 101 loads the generated initialization code 130c into the secure area 111b of the RAM 103b (step S306).
  • the CPU 101 operates according to the jump instruction 125c included in the boot code 121c.
  • the CPU 101 jumps to the initialization code 130c stored in the secure area 111b of the RAM 103b (step S307).
  • the CPU 101 executes the initialization instruction 132c included in the initialization code 130c. Thereby, initialization of hardware is executed (step S308).
  • the CPU 101 operates in accordance with the setting instruction 133c included in the initialization code 130c. Thereby, the CPU 101 sets the start address, end address, and identification information of the secure area 111c in the dedicated register 112c included in the access restriction unit 108c of the RAM 103c (step S309). As a result, the secure area 111c is set in the RAM 103c. Only the secure OS, secure application, etc. identified by the identification information are accessible to the secure area 111c. Access to the secure area 111c is prohibited for other OSs and other applications.
  • the CPU 101 operates according to the verification instruction 134c included in the initialization code 130c.
  • the CPU 101 controls the cryptographic engine 106 to verify the virtual machine control code 141 stored in the storage unit 104 (step S310).
  • the cryptographic engine 106 stores an expected hash value for the virtual machine control code 141.
  • the cryptographic engine 106 verifies the cryptographic hash value calculated from the virtual machine control code 141 by comparing it with the expected hash value.
  • step S316 the information processing apparatus 100c stops booting (step S316) and ends the process.
  • step S311 If the virtual machine control code 141 is correct (“Y” in step S311), the CPU 101 transfers control to the CPU 101c (step S312).
  • the CPU 101c operates according to the load instruction 135c included in the initialization code 130c. As a result, the CPU 101c loads the virtual machine control code 141 into the secure area 111c of the RAM 103c (step S313).
  • the CPU 101c operates according to the jump instruction 136c included in the initialization code 130c. Thereby, the CPU 101c jumps to the virtual machine control code 141 stored in the secure area 111c of the RAM 103c (step S314).
  • step S315) the CPU 101c executes the virtual machine control code 141 (step S315).
  • the information processing apparatus 100c continues processing.
  • the CPU 101 of the information processing apparatus 100 c is always started from the boot code 121 c on the ROM 102. Since the data recorded in the ROM 102 cannot be rewritten, the boot code 121c on the ROM 102 is not falsified.
  • the boot code 121c includes a verification instruction 126c. As described above, since it is difficult to falsify the boot code 121c, it is also difficult to falsify the verification instruction 126c. Therefore, the verification instruction 126c is reliable.
  • the verification instruction 126c causes the cryptographic engine 106, which is hardware, to verify the encrypted initialization code 131c. Since the cryptographic engine 106 is hardware, it is not tampered with. Therefore, the verification by the cryptographic engine 106 is reliable.
  • the cryptographic engine 106 verifies whether or not the encrypted initialization code 131c has been tampered with. If verification of the encrypted initialization code 131c fails, that is, if alteration of the encrypted initialization code 131c is detected, booting is stopped. On the other hand, when the verification of the encrypted initialization code 131c is successful, the encrypted initialization code 131c is decrypted, the initialization code 130c is loaded into the secure area 111b of the RAM 103, and the initialization code 130c is executed.
  • booting stops when the encryption initialization code 131c has been tampered with.
  • the initialization code 130c is loaded into the secure area 111b of the RAM 103b, and the initialization code 130c is executed.
  • the information processing apparatus 100c can provide a reliable and safe environment at the stage of hardware initialization.
  • the initialization code 130c is loaded into the secure area 111b of the RAM 103, it is possible to make it difficult for a malicious attacker to falsify the initialization code 130c.
  • the initialization code 130c includes a verification instruction 134c. As described above, when it is determined that the encrypted initialization code 131c has not been tampered with, neither the initialization code 130c nor the verification instruction 134c has been tampered with. Therefore, the verification instruction 134c is reliable.
  • the verification instruction 134c causes the cryptographic engine 106, which is hardware, to verify the virtual machine control code 141. Since the cryptographic engine 106 is hardware, it is not tampered with. Therefore, the verification by the cryptographic engine 106 is reliable.
  • the cryptographic engine 106 verifies whether or not the virtual machine control code 141 has been tampered with. If verification of the virtual machine control code 141 fails, that is, if alteration of the virtual machine control code 141 is detected, booting is stopped. On the other hand, when the verification of the virtual machine control code 141 is successful, the virtual machine control code 141 is loaded into the secure area 111c of the RAM 103c, and the virtual machine control code 141 is executed.
  • booting stops when the virtual machine control code 141 has been tampered with.
  • the virtual machine control code 141 is loaded into the secure area 111c of the RAM 103c, and the virtual machine control code 141 is executed.
  • the information processing apparatus 100c can provide a reliable and safe environment when the virtual machine control code 141 is executed in the secure mode.
  • the virtual machine control code 141 is loaded into the secure area 111c of the RAM 103c, it is possible to make it difficult for a malicious attacker to tamper with the virtual machine control code 141.
  • a hash operation is used to verify whether or not the encrypted initialization code 131 has been tampered with.
  • it is not limited to this.
  • a method of verifying the integrity of the code such as a digital signature may be used.
  • the storage unit 104 may further store signature data in association with the encryption initialization code 131.
  • the signature data is generated by applying a digital signature to the encryption initialization code 131.
  • the boot code 121 includes a verification program for performing signature verification instead of the verification program 122.
  • the verification program for performing signature verification includes an instruction to read the encryption initialization code 131 and the signature data from the storage unit 104. Further, it includes an instruction for performing signature verification using the encryption initialization code 131 and the signature data. Further, it includes an instruction for outputting a verification result indicating success when signature verification is successful. In addition, when signature verification fails, a verification result indicating failure is output and a command to stop booting is included.
  • the CPU 101 operates in accordance with a verification program for performing signature verification. As a result, the CPU 101 reads out the encryption initialization code 131 and the signature data from the storage unit 104. Next, signature verification is performed using the encryption initialization code 131 and signature data. Next, when the signature verification is successful, a verification result indicating the success is output. On the other hand, when signature verification fails, a verification result indicating failure is output and booting is stopped.
  • the encryption initialization code 131 is verified in the information processing apparatus 100a. However, it is not limited to this.
  • the boot code 121 may include a verification program for verifying the initialization code 130 instead of the verification program 122.
  • a verification program for verifying the initialization code 130 is arranged next to the decryption program 123.
  • the boot code 121 stores an expected hash value in advance.
  • the expected hash value is generated by performing a hash operation H on the initialization code 130 that has not been tampered with.
  • the verification program for verifying the initialization code 130 includes an instruction for performing a hash operation on the generated initialization code 130 and calculating an operation hash value. Also, an instruction for comparing the stored expected hash value with the calculated operation hash value is included. Furthermore, if the expected hash value and the calculated hash value match, the verification is successful, and an instruction that the initialization code 130 is regarded as correct is included. On the other hand, if the expected hash value and the calculated hash value do not match, the verification fails, the initialization code 130 is regarded as being tampered with, and an instruction to stop booting is included.
  • the CPU 101 operates according to the decryption program 123. As a result, the CPU 101 decrypts the encrypted initialization code 131 and generates the initialization code 130.
  • the CPU 101 operates in accordance with a verification program for verifying the initialization code 130.
  • the generated initialization code 130 is verified.
  • the CPU 101 performs a hash operation on the generated initialization code 130 to calculate a calculation hash value.
  • the stored expected hash value is compared with the calculated operation hash value.
  • the verification is successful and the initialization code 130 is regarded as correct.
  • the expected hash value and the calculated hash value do not match, verification fails, the initialization code 130 is regarded as being tampered with, and booting is stopped.
  • step S108 in FIG.
  • the boot is stopped in step S108 in FIG.
  • it is not limited to this.
  • a flag indicating that the encryption initialization code 131 is incorrect may be set in a register of the CPU 101.
  • the information processing apparatus 100a refers to the register after the boot is completed, and stops the system when a flag indicating that the encrypted initialization code 131 is incorrect is set in the register.
  • AES is used as a specific example of the secret key cryptosystem, but is not limited thereto.
  • FEAL Fast Data Encipherment Algorithm
  • MISTY may be used.
  • a public key cryptosystem may be used.
  • the initialization code 130b and the virtual machine control code 141 stored on the storage unit 104 may each be encrypted.
  • the decoding process is performed as in the case of the information processing apparatus 100b.
  • the cryptographic engine 106 performs hash verification and cryptographic processing. However, it is not limited to this.
  • the boot code 121b and the initialization code 130b may include a computer program for hash verification and a computer program for cryptographic processing. In this case, instead of being executed by the cryptographic engine 106, a computer program for hash verification and a computer program for cryptographic processing included in the boot code 121b and the initialization code 130b, respectively, are executed.
  • the cryptographic engine 106 stores the expected hash value generated by performing the hash operation H on the initialization code 130b that has not been tampered with. Further, an expected hash value generated by applying a hash operation H to the virtual machine control code 141 that has not been tampered with is stored. However, it is not limited to this.
  • the storage unit 104 may store the expected hash values of the initialization code 130b and the virtual machine control code 141.
  • each expected hash value may be encrypted.
  • a digital signature may be applied to each expected hash value to generate signature data.
  • the storage unit 104 stores the generated signature data together with the expected hash value.
  • the cryptographic engine 106 verifies the digital signature using the expected hash value and signature data. When verification is successful, the expected hash value is used. If the verification fails, it is assumed that the verification of the initialization code 130b and the virtual machine control code 141 has failed without using the expected hash value, and the boot is stopped.
  • the RAM 103b is assumed to include the access restriction unit 108b. However, it is not limited to this.
  • the access restriction unit 108b may be independent from the RAM 103b and may have a different configuration. In other words, the information processing apparatus 100b may include the RAM 103 of the information processing apparatus 100a and the access restriction unit 108b of the information processing apparatus 100b instead of the RAM 103b.
  • the secure area 111b is set by setting the start address 113b and the end address 114b in the dedicated register 112b.
  • the dedicated register 112b the start address of the secure area 111b and the size of the secure area 111b may be set. In this way, any parameter can be used as long as it can specify the position and size of the secure area 111b.
  • the setting of the secure area 111b of the RAM 103b may be performed at any time before the virtual machine control code 141 is loaded. In the flowchart shown in FIG. 9, the process may be performed after step S201 and before step S210.
  • the storage unit 104 stores an unencrypted virtual computer control code 141.
  • the storage unit 104 stores an unencrypted virtual computer control code 141.
  • it is not limited to this.
  • the storage unit 104 may store an encrypted virtual machine control code.
  • the initialization code 130c further includes a decoding instruction.
  • the decryption instruction is an instruction that instructs the cryptographic engine 106 to decrypt the encrypted virtual machine control code.
  • the cryptographic engine 106 decrypts the encrypted virtual machine control code. Thereby, a virtual machine control code is generated. As described above, the generated virtual machine control code is loaded into the secure area 111c, and the virtual machine control code stored in the secure area 111c is executed.
  • the initialization code 130c is loaded into the secure area 111b set in the RAM 103b. Further, the virtual machine control code 141 is loaded into the secure area 111c set in the RAM 103c. However, it is not limited to this.
  • the access restriction unit 108b of the RAM 103b may have a dedicated register 112d as shown in FIG. Secure area information 116b and 116d are set in the dedicated register 112d.
  • the secure area information 116b includes a head address 113b, a tail address 114b, and identification information 115b.
  • the secure area information 116d includes a head address 113d, a tail address 114d, and identification information 115d.
  • the secure area information 116b and 116d may be set by executing a setting command included in the boot code 121c.
  • the start address 113b and the end address 114b are the start address and the end address of the secure area 111b set in the memory unit 109b.
  • the identification information 115b is an identifier for identifying a secure OS or a secure application that is permitted to access the secure area 111b.
  • the start address 113d and the end address 114d are the start address and the end address of the secure area 111d set in the memory unit 109b.
  • the identification information 115d is an identifier for identifying a secure OS or a secure application that is permitted to access the secure area 111d.
  • the secure area information 116b and 116d may be set in the dedicated register 112d.
  • the secure area 111b and the secure area 111d are set in the memory unit 109b of the RAM 103b as shown in FIG.
  • the initialization code 130 may be loaded in the secure area 111b. Further, the virtual machine control code 141 may be loaded in the secure area 111d.
  • step S312 the CPU 101 transfers control to the CPU 101c.
  • the CPU 101c it is not limited to this.
  • the timing to transfer control from the CPU 101 to the CPU 101c may be any time. .
  • timing for starting the CPU 101c may be any time as long as it is before the control is transferred from the CPU 101 to the CPU 101c.
  • the CPU 101 may continue processing without transferring control from the CPU 101 to the CPU 101c.
  • CPU 101 and the CPU 101c may be the same product or different products.
  • the RAM 103b and the RAM 103c may be the same product or different products.
  • the information processing apparatus 100c may further include one or more CPUs.
  • the secure area 111b is set in step S302.
  • the secure area 111b is set in step S302.
  • the setting of the secure area 111b may be performed at any time before the initialization code 130c is loaded. For example, it may be performed between steps S303 and S304 in FIG. Moreover, you may perform between step S304 and S305. Moreover, you may perform between step S305 and S306.
  • the secure area 111c is set in step S309.
  • the secure area 111c is set in step S309.
  • the setting of the secure area 111c may be performed at any time before the virtual machine control code 141 is loaded. For example, it may be performed between steps S301 and S313 in FIG.
  • the above computer system and each of the above information processing apparatuses include a personal computer, a television receiver, a digital broadcast receiver, a video deck, a hard disk recorder, a mobile phone, a mobile terminal device, and a car navigation system. , Landline phones, copy machines, mobile terminals with touch panels, game machines, and the like.
  • One embodiment of the present invention may be a control method for controlling the computer system and the information processing apparatuses.
  • the present invention may be a computer program for controlling the computer system and each information processing apparatus.
  • the computer program is configured by combining a plurality of instruction codes indicating instructions for the computer in order to achieve a predetermined function.
  • One embodiment of the present invention is a computer-readable recording medium such as a flexible disk, hard disk, CD-ROM, MO, DVD, DVD-ROM, DVD-RAM, or BD (Blu-ray Disc). It may be recorded in a semiconductor memory or the like. One embodiment of the present invention may be the computer program recorded on these recording media.
  • the computer program may be transmitted via an electric communication line, a wireless or wired communication line, a network represented by the Internet, data broadcasting, or the like.
  • the computer program is recorded on the recording medium and transferred, or the computer program is transferred via the network or the like and executed by another independent computer system. You may do that.
  • a step of executing a ROM boot code a step of verifying an initialization code, a step of loading an initialization code into a RAM, and jumping to the initialization code for execution And a step.
  • the step of jumping to the initialization code and executing may have a step of loading and a step of jumping to the virtual machine control code and executing it.
  • a step of executing a ROM boot code a step of setting a secure area of the RAM, a 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.
  • a step of setting a secure area in a RAM different from the RAM a step of verifying a virtual computer control code, and a step of verifying the virtual computer control code in the RAM
  • the step of jumping to the initialization code and executing the step of verifying the virtual machine control code, the step of loading the virtual machine control code into the secure area of the RAM, and the virtual machine control code And a step of executing by jumping.
  • the initialization code is encrypted, and it may have a step of decrypting the initialization code before the step of jumping to the initialization code and executing it.
  • the virtual machine control code is encrypted, and it may have a step of decrypting the virtual machine control code before the step of jumping to the virtual machine control code and executing it.
  • 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 May be a program for causing a computer to execute.
  • means for executing a boot code of a ROM means for verifying an initialization code, means for loading the initialization code into a RAM, and means for jumping to the initialization code and executing it It may be an integrated circuit characterized by having
  • means for executing a boot code of a ROM means for verifying an initialization code, means for loading the initialization code into a RAM, and means for jumping to the initialization code and executing it It is a system characterized by having.
  • One aspect of the present invention is a computer activation method for activating a computer system including a processor, a read-only memory, and a read / write memory.
  • An activation program is stored at a fixed position of the read-only memory, and the activation program includes an instruction to verify the second program, an instruction to load the second program, and an instruction to jump to the second program
  • the second program includes an instruction for executing processing related to the computer system.
  • the activation method includes a step of starting execution of the activation program stored in a fixed position of the read-only memory, a step of verifying the second program according to the activation program, and if the verification is successful, Loading the second program into the read / write memory according to the activation program; jumping to the second program according to the activation program after loading the second program; and processing according to the second program Performing the steps.
  • the computer control method according to the present invention has an excellent effect of preventing the processor from operating in an unreliable environment, and is useful as a technique for controlling the activation of a computer system including the processor.
  • 100a, 100b, 100c Information processing apparatus 100e Computer system 101, 101c CPU 101e processor 102 ROM 102e Read only memory 103, 103b, 103c RAM 103e Read / write memory 104 Storage unit 105 Bus 106 Cryptographic engine 106e Dedicated verification circuit 107 Virtual computer hardware

Abstract

A computer system (100e) comprises a processor (101e) and a read-only memory (102e). An activation program is stored at a fixed location in the read-only memory (102e). The activation program includes an instruction which verifies a second program. A computer control method which controls the activation of the computer system (100e) comprises: a commencement step (S401) which, immediately after a reset, commences the execution of the activation program which is stored at the fixed location in the read-only memory (102e); a verification step (S402) which verifies the second program according to the activation program; and an interrupt step (S404) which, if the verification has failed (S403), interrupts the activation of the computer system.

Description

コンピュータ制御方法Computer control method
 本発明は、プロセッサを備えるコンピュータシステムの起動を制御する技術に関する。 The present invention relates to a technique for controlling activation of a computer system including a processor.
 近年、コンピュータシステム上で実行される金融上の取引が増加している。また、コンピュータシステムに記憶されているプライベートなデータを保護する要請も増えている。さらに、映画や音楽などのコンテンツデータが権限なく複製されることを防止したいという要請も多い。このような理由により、マイクロプロセッサを備えるコンピュータシステムにおいては、信頼でき、安全な環境の確立が促進されつつある。 In recent years, financial transactions executed on computer systems have increased. There is also an increasing demand for protecting private data stored in computer systems. Furthermore, there are many requests to prevent content data such as movies and music from being copied without authorization. For these reasons, establishment of a reliable and safe environment is being promoted in a computer system including a microprocessor.
 特許文献1は、信頼できる安全な環境で動作するマイクロプロセッサシステムを開示している。このマイクロプロセッサシステムは、複数のプロセッサを含んでいる。その内の一つのプロセッサが、セキュア起動プロセスを起動する論理プロセッサ(ILP)となり、他のプロセッサが応答論理プロセッサ(RLP)となる。ILPのみが、セキュアバーチャルマシンモニタ(SVMM)モジュールとセキュア初期化認証コード(SINIT-AC)モジュールをロードする。RLPは、ILPにおいてSVMMの実行が開始されるまで、実行を停止する。ILPのみが、SINIT-ACをILP自身のセキュアメモリにコピーし、セキュアメモリにコピーされたSINIT-ACが検証される。また、ILPのみにおいて、SVMMがテストされ、SVMMのアイデンティティが登録され、SVMMが実行される。RLPがILPからSENTER JOIN MESSAGEを受信すると、RLPにおいて、SVMMが実行される。 Patent Document 1 discloses a microprocessor system that operates in a reliable and safe environment. This microprocessor system includes a plurality of processors. One of the processors becomes a logical processor (ILP) that starts the secure boot process, and the other processor becomes a response logical processor (RLP). Only the ILP loads the Secure Virtual Machine Monitor (SVMM) module and the Secure Initialization Authentication Code (SINIT-AC) module. RLP stops execution until SVMM execution is started in ILP. Only the ILP copies SINIT-AC to its own secure memory, and the SINIT-AC copied to secure memory is verified. In addition, only in the ILP, the SVMM is tested, the SVMM identity is registered, and the SVMM is executed. When RLP receives SENTER JOIN MESSAGE from ILP, SVMM is executed in RLP.
日本国特開2009-54164号公報Japanese Unexamined Patent Publication No. 2009-54164
 しかしながら、特許文献1により開示された技術によると、SINIT-ACをILPのセキュアメモリにコピーした後に、セキュアメモリに記憶されたSINIT-ACが検証される。このため、SINIT-ACの検証に失敗した場合、SINIT-ACが不正に改ざんされたものであれば、この時点において、セキュア環境が脅かされているというおそれがある。 However, according to the technique disclosed in Patent Document 1, after the SINIT-AC is copied to the ILP secure memory, the SINIT-AC stored in the secure memory is verified. For this reason, if the verification of SINIT-AC fails, if SINIT-AC has been tampered with, the secure environment may be threatened at this point.
 本発明は、上記のような問題を発生させることなく、信頼できない環境において、プロセッサを動作させないようにすることができるコンピュータ制御方法、起動プログラム、記録媒体及びコンピュータシステムを提供することを目的とする。 It is an object of the present invention to provide a computer control method, a start program, a recording medium, and a computer system that can prevent a processor from operating in an unreliable environment without causing the above problems. .
 上記目的を達成するために、本発明の一態様は、プロセッサ及び読取専用メモリを含むコンピュータシステムの起動を制御するコンピュータ制御方法であって、前記読取専用メモリの固定位置に、起動プログラムが記憶されており、前記起動プログラムは、第二プログラムを検証する命令を含み、前記コンピュータ制御方法は、リセット直後に、前記読取専用メモリの固定位置に記憶されている前記起動プログラムの実行を開始する開始ステップと、前記起動プログラムに従って、前記第二プログラムを検証する検証ステップと、前記検証に失敗した場合、当該コンピュータシステムの起動を停止する停止ステップとを含むことを特徴とする。 In order to achieve the above object, one aspect of the present invention provides a computer control method for controlling activation of a computer system including a processor and a read-only memory, wherein an activation program is stored in a fixed position of the read-only memory. The start program includes an instruction for verifying a second program, and the computer control method starts the execution of the start program stored in a fixed position of the read-only memory immediately after the reset. And a verification step of verifying the second program in accordance with the startup program, and a stop step of stopping startup of the computer system if the verification fails.
 この態様によると、第二プログラムの検証に失敗した場合、当該コンピュータシステムの起動を停止させるので、信頼できない環境において、プロセッサを動作させないようにすることができるという優れた効果を奏する。 According to this aspect, when the verification of the second program fails, the activation of the computer system is stopped, so that it is possible to prevent the processor from operating in an unreliable environment.
本発明に係る実施の形態1におけるコンピュータシステム100eの構成を示すブロック図である。It is a block diagram which shows the structure of the computer system 100e in Embodiment 1 which concerns on this invention. コンピュータシステム100eの起動を制御する動作を示すフローチャートである。It is a flowchart which shows the operation | movement which controls starting of the computer system 100e. 本発明に係る実施の形態2としての情報処理装置100aの構成を示すブロック図である。It is a block diagram which shows the structure of the information processing apparatus 100a as Embodiment 2 which concerns on this invention. ROM102及びRAM103における各コードの配置を示す。The arrangement of each code in the ROM 102 and the RAM 103 is shown. 情報処理装置100aにおけるセキュアブートの動作を示すフローチャートである。It is a flowchart which shows operation | movement of the secure boot in the information processing apparatus 100a. 本発明に係る実施の形態3としての情報処理装置100bの構成を示すブロック図である。It is a block diagram which shows the structure of the information processing apparatus 100b as Embodiment 3 which concerns on this invention. ROM102及びRAM103bにおける各コードの配置を示す。The arrangement of each code in the ROM 102 and the RAM 103b is shown. 情報処理装置100bにおけるソフトウェア構成を示す。2 shows a software configuration in the information processing apparatus 100b. 情報処理装置100bにおけるセキュアブートの動作を示すフローチャートである。It is a flowchart which shows operation | movement of the secure boot in the information processing apparatus 100b. 本発明に係る実施の形態4としての情報処理装置100cの構成を示すブロック図である。It is a block diagram which shows the structure of the information processing apparatus 100c as Embodiment 4 which concerns on this invention. ROM102、RAM103b及びRAM103cにおける各コードの配置を示す。The arrangement of each code in the ROM 102, RAM 103b, and RAM 103c is shown. 情報処理装置100cにおけるセキュアブートの動作を示すフローチャートである。It is a flowchart which shows the operation | movement of the secure boot in the information processing apparatus 100c. 情報処理装置100cの変形例として、ROM102及びRAM103bにおける各コードの配置を示す。As a modification of the information processing apparatus 100c, an arrangement of each code in the ROM 102 and the RAM 103b is shown.
 以下、本発明に係る実施の形態について、図面を参照しながら説明する。 Embodiments according to the present invention will be described below with reference to the drawings.
 本発明の一態様は、プロセッサ及び読取専用メモリを含むコンピュータシステムの起動を制御するコンピュータ制御方法である。前記読取専用メモリの固定位置に、起動プログラムが記憶されており、前記起動プログラムは、第二プログラムを検証する命令を含む。前記コンピュータ制御方法は、リセット直後に、前記読取専用メモリの固定位置に記憶されている前記起動プログラムの実行を開始する開始ステップと、前記起動プログラムに従って、前記第二プログラムを検証する検証ステップと、前記検証に失敗した場合、当該コンピュータシステムの起動を停止する停止ステップとを含むことを特徴とする。 One aspect of the present invention is a computer control method for controlling activation of a computer system including a processor and a read-only memory. An activation program is stored in a fixed position of the read-only memory, and the activation program includes an instruction for verifying the second program. The computer control method includes a start step of starting execution of the startup program stored in a fixed position of the read-only memory immediately after reset, and a verification step of verifying the second program according to the startup program; And a stop step of stopping startup of the computer system when the verification fails.
 ここで、前記コンピュータシステムは、さらに、読み書き用メモリを含み、前記起動プログラムは、さらに、前記第二プログラムをロードする命令及び前記第二プログラムに分岐させる命令を含み、前記第二プログラムは、当該コンピュータシステムにおける処理を実行する命令を含むとしてもよい。前記コンピュータ制御方法は、さらに、前記検証に成功した場合、前記起動プログラムに従って、前記第二プログラムを前記読み書き用メモリにロードするロードステップと、前記第二プログラムのロード後、前記起動プログラムに従って、前記第二プログラムに分岐させる分岐ステップと、前記第二プログラムに従って、前記処理を実行する実行ステップとを含むとしてもよい。 Here, the computer system further includes a read / write memory, the startup program further includes an instruction to load the second program and an instruction to branch to the second program, Instructions for executing processing in the computer system may be included. The computer control method further includes a loading step of loading the second program into the read / write memory according to the startup program when the verification is successful, and after loading the second program, according to the startup program, A branching step for branching to the second program and an execution step for executing the processing according to the second program may be included.
 ここで、前記読み書き用メモリは、セキュア領域を含み、前記ロードステップにおいて、前記セキュア領域に前記第二プログラムをロードするとしてもよい。 Here, the read / write memory may include a secure area, and the second program may be loaded into the secure area in the loading step.
 ここで、前記起動プログラムは、さらに、前記読み書き用メモリに前記セキュア領域を設定する命令を含み、前記コンピュータ制御方法は、さらに、前記起動プログラムに従って、前記読み書き用メモリに前記セキュア領域を設定する設定ステップを含むとしてもよい。 Here, the boot program further includes an instruction to set the secure area in the read / write memory, and the computer control method further sets the secure area in the read / write memory according to the boot program. Steps may be included.
 ここで、前記起動プログラムは、さらに、暗号化された状態の前記第二プログラムを復号する命令を含み、前記検証ステップにおいて、暗号化された状態の前記第二プログラムを検証し、前記コンピュータ制御方法は、さらに、前記起動プログラムに従って、暗号化された状態の前記第二プログラムを復号する復号ステップを含み、前記ロードステップにおいて、前記復号ステップにより生成された前記第二プログラムをロードしてもよい。 Here, the startup program further includes an instruction for decrypting the second program in the encrypted state, and in the verification step, the second program in the encrypted state is verified, and the computer control method May further include a decryption step of decrypting the encrypted second program in accordance with the activation program, and in the loading step, the second program generated by the decryption step may be loaded.
 ここで、前記第二プログラムは、前記コンピュータシステムに含まれるデバイスの初期化を実行する命令を含み、前記実行ステップにおいて、前記デバイスの初期化を実行してもよい。 Here, the second program may include an instruction to initialize a device included in the computer system, and the device may be initialized in the execution step.
 ここで、前記第二プログラムは、仮想計算機制御プログラムを検証する命令を含み、前記コンピュータ制御方法は、さらに、前記実行ステップにおいて、前記デバイスの初期化が実行された後、前記第二プログラムに従って、前記仮想計算機制御プログラムを検証する第二検証ステップを含み、前記停止ステップにおいて、前記仮想計算機制御プログラムの前記検証に失敗した場合、当該コンピュータシステムの起動を停止するとしてもよい。 Here, the second program includes an instruction to verify a virtual machine control program, and the computer control method further includes, in the execution step, after the initialization of the device is performed, according to the second program, A second verification step for verifying the virtual computer control program may be included, and when the verification of the virtual computer control program fails in the stop step, the activation of the computer system may be stopped.
 ここで、前記読み書き用メモリは、セキュア領域を含み、前記第二プログラムは、さらに、前記仮想計算機制御プログラムをロードする命令及び前記仮想計算機制御プログラムに分岐させる命令を含み、前記仮想計算機制御プログラムは、当該コンピュータシステムの仮想計算機における処理を実行する命令を含み、前記コンピュータ制御方法は、さらに、前記仮想計算機制御プログラムの前記検証に成功した場合、前記第二プログラムに従って、前記仮想計算機制御プログラムを前記読み書き用メモリの前記セキュア領域にロードする第二ロードステップと、前記仮想計算機制御プログラムのロード後、前記第二プログラムに従って、前記仮想計算機制御プログラムに分岐させる第二分岐ステップと、前記仮想計算機制御プログラムに従って、仮想計算機における前記処理を実行する第二実行ステップとを含むとしてもよい。 Here, the read / write memory includes a secure area, the second program further includes an instruction to load the virtual machine control program and an instruction to branch to the virtual machine control program, and the virtual machine control program is The computer control method further includes, when the verification of the virtual computer control program succeeds, the virtual computer control program in accordance with the second program when the virtual computer control program succeeds in the verification. A second loading step for loading into the secure area of the read / write memory; a second branching step for branching to the virtual computer control program according to the second program after loading the virtual computer control program; and the virtual computer control program According to Te may be and a second execution step of executing the processing in the virtual machine.
 ここで、前記第二プログラムは、さらに、前記読み書き用メモリに前記セキュア領域を設定する命令を含み、前記コンピュータ制御方法は、さらに、前記第二プログラムに従って、前記読み書き用メモリに前記セキュア領域を設定する第二設定ステップを含むとしてもよい。 Here, the second program further includes an instruction to set the secure area in the read / write memory, and the computer control method further sets the secure area in the read / write memory according to the second program. A second setting step may be included.
 ここで、前記第二プログラムは、さらに、暗号化された状態の前記仮想計算機制御プログラムを復号する命令を含み、前記第二検証ステップにおいて、暗号化された状態の前記仮想計算機制御プログラムを検証し、前記コンピュータ制御方法は、さらに、前記第二プログラムに従って、暗号化された状態の前記仮想計算機制御プログラムを復号する第二復号ステップを含み、前記第二ロードステップにおいて、前記第二復号ステップにおいて生成された前記仮想計算機制御プログラムをロードするとしてもよい。 Here, the second program further includes an instruction to decrypt the encrypted virtual machine control program in the encrypted state, and the virtual machine control program in the encrypted state is verified in the second verification step. The computer control method further includes a second decryption step of decrypting the encrypted virtual machine control program according to the second program, and the computer control method generates the second decryption step in the second load step. The virtual machine control program that has been made may be loaded.
 ここで、前記コンピュータシステムは、さらに、前記仮想計算機制御プログラムを検証する検証専用回路を含み、前記第二検証ステップにおいて、前記検証専用回路により、検証が実行されるとしてもよい。 Here, the computer system may further include a verification dedicated circuit for verifying the virtual machine control program, and the verification may be executed by the verification dedicated circuit in the second verification step.
 ここで、前記コンピュータシステムは、さらに、前記第二プログラムを検証する検証専用回路を含み、前記検証ステップにおいて、前記検証専用回路により、検証が実行されるとしてもよい。 Here, the computer system may further include a verification dedicated circuit for verifying the second program, and the verification may be executed by the verification dedicated circuit in the verification step.
 また、本発明の別の一態様は、プロセッサのリセット直後に起動される起動プログラムであって、前記プロセッサに、前記第二プログラムを検証させる検証ステップと、前記検証に失敗した場合、当該コンピュータシステムの起動を停止する停止ステップとを実行させることを特徴とする。 Another aspect of the present invention is a startup program that is started immediately after a processor is reset, the verification step for causing the processor to verify the second program, and if the verification fails, the computer system And a stop step for stopping the start-up.
 また、本発明の別の一態様は、プロセッサのリセット直後に起動される起動プログラムを記録しているコンピュータ読取可能な記録媒体であって、前記プロセッサに、前記第二プログラムを検証させる検証ステップと、前記検証に失敗した場合、当該コンピュータシステムの起動を停止する停止ステップとを実行させる起動プログラムを記録していることを特徴とする。 According to another aspect of the present invention, there is provided a computer-readable recording medium that records a startup program that is started immediately after resetting the processor, the verification step causing the processor to verify the second program; A start program for executing a stop step for stopping the start of the computer system when the verification fails is recorded.
 また、本発明の別の一態様は、プロセッサ及び読取専用メモリを含むコンピュータシステムであって、前記読取専用メモリの固定位置に、起動プログラムが記憶されており、前記起動プログラムは、第二プログラムを検証し、リセット直後に、前記読取専用メモリの固定位置に記憶されている前記起動プログラムの実行を開始する開始ステップと、前記起動プログラムに従って、前記第二プログラムを検証する検証ステップと、前記検証に失敗した場合、当該コンピュータシステムの起動を停止する停止ステップとを含む前記コンピュータ制御方法により制御されることを特徴とする。 According to another aspect of the present invention, there is provided a computer system including a processor and a read-only memory, wherein a startup program is stored at a fixed position of the read-only memory, and the startup program stores a second program. Verifying, immediately after resetting, a start step of starting execution of the startup program stored in a fixed position of the read-only memory, a verification step of verifying the second program according to the startup program, and the verification In the case of failure, the computer control method includes a stop step of stopping the start of the computer system.
 1.実施の形態1
 本発明に係る実施の形態1としてのコンピュータシステム(情報処理装置と呼ぶ場合もある。)100eについて説明する。
1. Embodiment 1
A computer system (also referred to as an information processing apparatus) 100e as Embodiment 1 according to the present invention will be described.
 コンピュータシステム100eは、図1に示すように、プロセッサ101e及び読取専用メモリ102eを含む。 The computer system 100e includes a processor 101e and a read-only memory 102e as shown in FIG.
 読取専用メモリ102eの固定位置に、起動プログラム(ブートプログラム又はブートコードと呼ぶ場合もある。)121eが記憶されている。起動プログラム121eは、第二プログラム130e(図示していない)を検証する命令を含む。 A startup program (sometimes called a boot program or a boot code) 121e is stored at a fixed position in the read-only memory 102e. The activation program 121e includes a command for verifying the second program 130e (not shown).
 次に、コンピュータシステム100eの起動(ブートと呼ぶ場合もある。)を制御するコンピュータ制御方法について、図2に示すフローチャートを用いて説明する。 Next, a computer control method for controlling the start (also called boot) of the computer system 100e will be described with reference to the flowchart shown in FIG.
 リセット直後に、読取専用メモリ102eの固定位置に記憶されている起動プログラム121eの実行を開始する(開始ステップS401)。 Immediately after the reset, execution of the start program 121e stored in the fixed position of the read-only memory 102e is started (start step S401).
 次に、起動プログラム121eに従って、第二プログラム130eを検証する(検証ステップS402)。 Next, the second program 130e is verified according to the activation program 121e (verification step S402).
 次に、前記検証に失敗した場合(ステップS403)、コンピュータシステム100eの起動を停止する(停止ステップS404)。 Next, when the verification fails (step S403), the activation of the computer system 100e is stopped (stop step S404).
 この態様によると、起動プログラム121eは、読取専用メモリ102eに記憶されているので、起動プログラム121eが改ざんされることはない。このため、改ざんされていない起動プログラム121eによる検証は、信頼できるものである。従って、第二プログラム130eの検証に失敗した場合、第二プログラム130eは、改ざんされている可能性がある。この場合、コンピュータシステム100eの起動を停止させる。従って、信頼できない環境において、プロセッサを動作させないようにすることができるという優れた効果を奏する。 According to this aspect, since the activation program 121e is stored in the read-only memory 102e, the activation program 121e is not falsified. For this reason, the verification by the startup program 121e that has not been tampered with is reliable. Therefore, when the verification of the second program 130e fails, the second program 130e may be falsified. In this case, the activation of the computer system 100e is stopped. Therefore, it is possible to prevent the processor from operating in an unreliable environment.
 (2)ここで、コンピュータシステム100eは、さらに、読み書き用メモリ103e(図示していない)を含むとしてもよい。 (2) Here, the computer system 100e may further include a read / write memory 103e (not shown).
 起動プログラム121eは、さらに、第二プログラム130eをロードする命令及び第二プログラム130eに分岐(ジャンプと呼ぶ場合もある。)させる命令を含み、第二プログラム130eは、コンピュータシステム100eにおける処理を実行する命令を含むとしてもよい。 The startup program 121e further includes an instruction for loading the second program 130e and an instruction for causing the second program 130e to branch (sometimes referred to as a jump), and the second program 130e executes processing in the computer system 100e. Instructions may be included.
 前記コンピュータ制御方法は、さらに、前記検証に成功した場合、起動プログラム121eに従って、第二プログラム130eを読み書き用メモリ103eにロードするロードステップと、第二プログラム130eのロード後、起動プログラム121eに従って、第二プログラム130eに分岐させる分岐ステップと、第二プログラム130eに従って、前記処理を実行する実行ステップとを含む。 The computer control method further includes a loading step of loading the second program 130e into the read / write memory 103e according to the activation program 121e when the verification is successful, and a loading step according to the activation program 121e after loading the second program 130e. A branching step for branching to the second program 130e and an execution step for executing the processing according to the second program 130e are included.
 この態様によると、第二プログラム130eの検証に成功した場合、コンピュータシステム100eの起動を継続させることができる。 According to this aspect, when the verification of the second program 130e is successful, the computer system 100e can be continuously activated.
 (3)ここで、読み書き用メモリ103eは、セキュア領域を含むとしてもよい。 (3) Here, the read / write memory 103e may include a secure area.
 前記ロードステップにおいて、前記セキュア領域に第二プログラム130eをロードする。 In the loading step, the second program 130e is loaded into the secure area.
 この態様によると、第二プログラム130eは、前記セキュア領域にロードされるので、第二プログラム130eを保護することができる。 According to this aspect, since the second program 130e is loaded into the secure area, the second program 130e can be protected.
 (4)ここで、起動プログラム121eは、さらに、読み書き用メモリ103eに前記セキュア領域を設定する命令を含むとしてもよい。 (4) Here, the activation program 121e may further include an instruction for setting the secure area in the read / write memory 103e.
 前記コンピュータ制御方法は、さらに、起動プログラム121eに従って、読み書き用メモリ103eに前記セキュア領域を設定する設定ステップを含む。 The computer control method further includes a setting step of setting the secure area in the read / write memory 103e according to the activation program 121e.
 この態様によると、改ざんされていない起動プログラム121eにより前記セキュア領域が設定されるので、当該セキュア領域の安全性が確保される。 According to this aspect, since the secure area is set by the startup program 121e that has not been tampered with, the safety of the secure area is ensured.
 (5)ここで、起動プログラム121eは、さらに、暗号化された状態の第二プログラム130eを復号する命令を含むとしてもよい。 (5) Here, the activation program 121e may further include an instruction to decrypt the encrypted second program 130e.
 前記検証ステップにおいて、暗号化された状態の第二プログラム130eを検証するとしてもよい。 In the verification step, the encrypted second program 130e may be verified.
 前記コンピュータ制御方法は、さらに、起動プログラム121eに従って、暗号化された状態の第二プログラム130eを復号する復号ステップを含む。 The computer control method further includes a decrypting step of decrypting the encrypted second program 130e in accordance with the activation program 121e.
 前記ロードステップにおいて、前記復号ステップにより生成された第二プログラム130eをロードする。 In the loading step, the second program 130e generated in the decoding step is loaded.
 この態様によると、第二プログラム130eは、暗号化された状態にあるので、暗号化された状態にある第二プログラム130eが不正に解析される可能性を低くすることができる。 According to this aspect, since the second program 130e is in an encrypted state, the possibility that the second program 130e in the encrypted state is illegally analyzed can be reduced.
 (6)ここで、第二プログラム130eは、コンピュータシステム100eに含まれるデバイスの初期化を実行する命令を含むとしてもよい。 (6) Here, the second program 130e may include an instruction for executing initialization of a device included in the computer system 100e.
 前記実行ステップにおいて、前記デバイスの初期化を実行する。 In the execution step, the device is initialized.
 この態様によると、安全な環境において、デバイスの初期化を実行することができる。 According to this aspect, initialization of the device can be executed in a safe environment.
 (7)ここで、第二プログラム130eは、仮想計算機制御プログラム141e(図示していない)を検証する命令を含むとしてもよい。 (7) Here, the second program 130e may include an instruction for verifying the virtual machine control program 141e (not shown).
 前記コンピュータ制御方法は、さらに、前記実行ステップにおいて、前記デバイスの初期化が実行された後、第二プログラム130eに従って、仮想計算機制御プログラム141eを検証する第二検証ステップを含むとしてもよい。 The computer control method may further include a second verification step of verifying the virtual machine control program 141e according to the second program 130e after the initialization of the device is executed in the execution step.
 前記停止ステップにおいて、仮想計算機制御プログラム141eの前記検証に失敗した場合、コンピュータシステム100eの起動を停止する。 In the stop step, when the verification of the virtual machine control program 141e fails, the start of the computer system 100e is stopped.
 この態様によると、検証済みの第二プログラム130eによる検証は、信頼できるものである。従って、第二プログラム130eにより、仮想計算機制御プログラム141eの検証に失敗した場合、仮想計算機制御プログラム141eは、改ざんされている可能性がある。この場合、コンピュータシステム100eの起動を停止する。従って、信頼できない環境において、プロセッサを動作させないようにすることができるという優れた効果を奏する。 According to this aspect, the verification by the verified second program 130e is reliable. Therefore, when the second program 130e fails to verify the virtual machine control program 141e, the virtual machine control program 141e may be falsified. In this case, the activation of the computer system 100e is stopped. Therefore, there is an excellent effect that the processor can be prevented from operating in an unreliable environment.
 (8)ここで、読み書き用メモリ103eは、セキュア領域を含むとしてもよい。 (8) Here, the read / write memory 103e may include a secure area.
 第二プログラム130eは、さらに、仮想計算機制御プログラム141eをロードする命令及び仮想計算機制御プログラム141eに分岐させる命令を含むとしてもよい。また、仮想計算機制御プログラム141eは、コンピュータシステム100eの仮想計算機における処理を実行する命令を含むとしてもよい。 The second program 130e may further include an instruction to load the virtual machine control program 141e and an instruction to branch to the virtual machine control program 141e. The virtual machine control program 141e may include an instruction for executing processing in the virtual machine of the computer system 100e.
 前記コンピュータ制御方法は、さらに、仮想計算機制御プログラム141eの前記検証に成功した場合、第二プログラム130eに従って、仮想計算機制御プログラム141eを読み書き用メモリ103eの前記セキュア領域にロードする第二ロードステップと、仮想計算機制御プログラム141eのロード後、第二プログラム130eに従って、仮想計算機制御プログラム141eに分岐させる第二分岐ステップと、仮想計算機制御プログラム141eに従って、仮想計算機における前記処理を実行する第二実行ステップとを含むとしてもよい。 The computer control method further includes a second loading step of loading the virtual computer control program 141e into the secure area of the read / write memory 103e according to the second program 130e when the verification of the virtual computer control program 141e is successful. After loading the virtual machine control program 141e, a second branch step for branching to the virtual machine control program 141e according to the second program 130e, and a second execution step for executing the processing in the virtual machine according to the virtual machine control program 141e It may be included.
 この態様によると、仮想計算機制御プログラム141eは、前記セキュア領域にロードされるので、仮想計算機制御プログラム141eを保護することができる。 According to this aspect, since the virtual machine control program 141e is loaded in the secure area, the virtual machine control program 141e can be protected.
 (9)ここで、第二プログラム130eは、さらに、読み書き用メモリ103eに前記セキュア領域を設定する命令を含むとしてもよい。 (9) Here, the second program 130e may further include an instruction for setting the secure area in the read / write memory 103e.
 前記コンピュータ制御方法は、さらに、第二プログラム130eに従って、読み書き用メモリ103eに前記セキュア領域を設定する第二設定ステップを含むとしてもよい。 The computer control method may further include a second setting step of setting the secure area in the read / write memory 103e according to the second program 130e.
 この態様によると、改ざんされていない第二プログラム130eにより前記セキュア領域が設定されるので、当該セキュア領域の安全性が確保される。 According to this aspect, since the secure area is set by the second program 130e that has not been tampered with, the safety of the secure area is ensured.
 (10)ここで、第二プログラム130eは、さらに、暗号化された状態の仮想計算機制御プログラム141eを復号する命令を含むとしてもよい。 (10) Here, the second program 130e may further include an instruction to decrypt the encrypted virtual machine control program 141e.
 前記第二検証ステップにおいて、暗号化された状態の仮想計算機制御プログラム141eを検証するとしてもよい。 In the second verification step, the encrypted virtual machine control program 141e may be verified.
 前記コンピュータ制御方法は、さらに、第二プログラム130eに従って、暗号化された状態の仮想計算機制御プログラム141eを復号する第二復号ステップを含む。前記第二ロードステップにおいて、前記第二復号ステップにおいて生成された仮想計算機制御プログラム141eをロードする。 The computer control method further includes a second decryption step of decrypting the encrypted virtual machine control program 141e in accordance with the second program 130e. In the second loading step, the virtual machine control program 141e generated in the second decoding step is loaded.
 この態様によると、仮想計算機制御プログラム141eは、暗号化された状態にあるので、暗号化された状態にある仮想計算機制御プログラム141eが不正に解析される可能性を低くすることができる。 According to this aspect, since the virtual machine control program 141e is in an encrypted state, it is possible to reduce the possibility that the virtual machine control program 141e in the encrypted state is illegally analyzed.
 (11)ここで、コンピュータシステム100eは、さらに、仮想計算機制御プログラム141eを検証する検証専用回路106eを含むとしてもよい。前記第二検証ステップにおいて、前記検証専用回路106eにより、検証が実行される。 (11) Here, the computer system 100e may further include a verification dedicated circuit 106e for verifying the virtual machine control program 141e. In the second verification step, verification is executed by the verification dedicated circuit 106e.
 この態様によると、検証専用回路106eにより仮想計算機制御プログラム141eを検証するので、プロセッサ101eにより検証を行う場合と比較して、検証に要する時間を短縮することができる。 According to this aspect, since the virtual machine control program 141e is verified by the verification dedicated circuit 106e, the time required for verification can be shortened compared to the case where the verification is performed by the processor 101e.
 (12)ここで、コンピュータシステム100eは、さらに、第二プログラム130eを検証する検証専用回路106fを含むとしてもよい。前記検証ステップにおいて、前記検証専用回路106fにより、検証が実行される。 (12) Here, the computer system 100e may further include a verification dedicated circuit 106f for verifying the second program 130e. In the verification step, verification is executed by the verification dedicated circuit 106f.
 この態様によると、検証専用回路106fにより第二プログラム130eを検証するので、プロセッサ101eにより検証を行う場合と比較して、検証に要する時間を短縮することができる。 According to this aspect, since the second program 130e is verified by the verification dedicated circuit 106f, the time required for verification can be shortened compared with the case where the verification is performed by the processor 101e.
 (13)また、本発明の別の一態様は、プロセッサ101eのリセット直後に起動される起動プログラム121eであるとしてもよい。起動プログラム121eは、プロセッサ101eに、第二プログラム130eを検証させる検証ステップと、前記検証に失敗した場合、当該コンピュータシステムの起動を停止する停止ステップとを実行させるとしてもよい。 (13) Another aspect of the present invention may be a startup program 121e that is started immediately after the processor 101e is reset. The activation program 121e may cause the processor 101e to execute a verification step for verifying the second program 130e and a stop step for stopping the activation of the computer system when the verification fails.
 この態様によると、第二プログラム130eが改ざんされている可能性がある場合、コンピュータシステム100eの起動を停止させる。従って、信頼できない環境において、プロセッサを動作させないようにすることができるという優れた効果を奏する。 According to this aspect, when there is a possibility that the second program 130e has been tampered with, the activation of the computer system 100e is stopped. Therefore, it is possible to prevent the processor from operating in an unreliable environment.
 (14)また、本発明の別の一態様は、プロセッサ101eのリセット直後に起動される起動プログラム121eを記録しているコンピュータ読取可能な記録媒体であるとしてもよい。起動プログラム121eは、プロセッサ101eに、第二プログラム130eを検証させる検証ステップと、前記検証に失敗した場合、当該コンピュータシステムの起動を停止する停止ステップとを実行させるとしてもよい。 (14) Another aspect of the present invention may be a computer-readable recording medium that records a startup program 121e that is started immediately after the processor 101e is reset. The activation program 121e may cause the processor 101e to execute a verification step for verifying the second program 130e and a stop step for stopping the activation of the computer system when the verification fails.
 この態様によると、第二プログラム130eが改ざんされている可能性がある場合、コンピュータシステム100eの起動を停止させる。従って、信頼できない環境において、プロセッサを動作させないようにすることができるという優れた効果を奏する。 According to this aspect, when there is a possibility that the second program 130e has been tampered with, the activation of the computer system 100e is stopped. Therefore, it is possible to prevent the processor from operating in an unreliable environment.
 (15)また、本発明の別の一態様は、プロセッサ101e及び読取専用メモリ102eを含むコンピュータシステム100eであるとしてもよい。 (15) Another aspect of the present invention may be a computer system 100e including a processor 101e and a read-only memory 102e.
 読取専用メモリ102eの固定位置に、起動プログラム121eが記憶されている。起動プログラム121eは、第二プログラム130eを検証する。 The activation program 121e is stored at a fixed position of the read-only memory 102e. The activation program 121e verifies the second program 130e.
 コンピュータシステム100eは、コンピュータ制御方法により制御される。 The computer system 100e is controlled by a computer control method.
 前記コンピュータ制御方法は、リセット直後に、前記読取専用メモリの固定位置に記憶されている起動プログラム121eの実行を開始する開始ステップと、起動プログラム121eに従って、第二プログラム130eを検証する検証ステップと、前記検証に失敗した場合、コンピュータシステム100eの起動を停止する停止ステップとを含むとしてもよい。 The computer control method includes a start step of starting execution of a startup program 121e stored in a fixed position of the read-only memory immediately after reset, a verification step of verifying the second program 130e according to the startup program 121e, When the verification fails, a stop step of stopping the start of the computer system 100e may be included.
 この態様によると、第二プログラム130eが改ざんされている可能性がある場合、コンピュータシステム100eの起動を停止させる。従って、信頼できない環境において、プロセッサを動作させないようにすることができるという優れた効果を奏する。 According to this aspect, when there is a possibility that the second program 130e has been tampered with, the activation of the computer system 100e is stopped. Therefore, it is possible to prevent the processor from operating in an unreliable environment.
 2.実施の形態2
 本発明に係る実施の形態2としての情報処理装置(コンピュータシステムと呼ぶ場合もある。)100aについて説明する。
2. Embodiment 2
An information processing apparatus (also referred to as a computer system) 100a as Embodiment 2 according to the present invention will be described.
 2.1 情報処理装置100aの構成
 情報処理装置100aは、図3に示すように、CPU(Central Processing Unit)101、ROM(Read Only Memory)102、RAM(Random Access Memory)103、ハードディスクドライブなどの記憶部104、バス105及びその他のユニット(図示していない)から構成されている。CPU101、ROM102、RAM103、記憶部104及びその他のユニットは、バス105を介して、接続されている。
2.1 Configuration of Information Processing Apparatus 100a As shown in FIG. 3, the information processing apparatus 100a includes a CPU (Central Processing Unit) 101, a ROM (Read Only Memory) 102, a RAM (Random Access Memory) 103, a hard disk drive, and the like. The storage unit 104, the bus 105, and other units (not shown) are included. The CPU 101, ROM 102, RAM 103, storage unit 104, and other units are connected via a bus 105.
 ROMは、記録されているデータを読み取ることのみ可能なメモリである。ROMは、読み取り専用であるので、ROMに記録されているデータを書き換えることはできない。 ROM is a memory that can only read recorded data. Since the ROM is read-only, data recorded in the ROM cannot be rewritten.
 ROM102は、ROM102内の固定位置において、あらかじめブートコード121を記憶している。また、記憶部104は、あらかじめ暗号化初期化コード131を記憶している。 The ROM 102 stores a boot code 121 in advance at a fixed position in the ROM 102. The storage unit 104 stores an encryption initialization code 131 in advance.
 (ブートコード121)
 ブートコード121は、情報処理装置100aにおいてブート処理が行われる際に、最初に実行されるソフトウェア(コンピュータプログラム)である。言い換えると、CPU101のリセット直後に実行されるプログラムである。なお、ブートコードをブートプログラム又は起動プログラムと呼ぶ場合もある。
(Boot code 121)
The boot code 121 is software (computer program) that is executed first when boot processing is performed in the information processing apparatus 100a. In other words, the program is executed immediately after the CPU 101 is reset. The boot code may be called a boot program or a start program.
 ブートコード121は、一例として、図3に示すように、検証プログラム122、復号プログラム123、ロード命令124及びジャンプ(分岐と呼ぶ場合もある。)命令125を含んでいる。ブートコード121において、検証プログラム122、復号プログラム123、ロード命令124及びジャンプ命令125は、この順序で配置されている。従って、検証プログラム122、復号プログラム123、ロード命令124及びジャンプ命令125は、この順序で実行される。 As an example, the boot code 121 includes a verification program 122, a decryption program 123, a load instruction 124, and a jump (sometimes referred to as a branch) instruction 125, as shown in FIG. In the boot code 121, the verification program 122, the decryption program 123, the load instruction 124, and the jump instruction 125 are arranged in this order. Therefore, the verification program 122, the decryption program 123, the load instruction 124, and the jump instruction 125 are executed in this order.
 検証プログラム122は、一例として、あらかじめ、改ざんされていない暗号化初期化コード131にハッシュ演算Hを施して生成された期待ハッシュ値を記憶している。ここで、ハッシュ演算Hは、一例として、SHA-1によるものである。また、検証プログラム122は、記憶部104に記憶されている暗号化初期化コード131を読み出すよう指示する命令を含んでいる。また、読み出した暗号化初期化コード131に対してハッシュ演算Hを施して、演算ハッシュ値を算出するよう指示する命令を含んでいる。また、記憶している期待ハッシュ値と算出した演算ハッシュ値とを比較するよう指示する命令を含んでいる。また、期待ハッシュ値と演算ハッシュ値とが一致すれば、検証に成功し、暗号化初期化コード131が正しいとみなすよう指示する命令を含んでいる。また、期待ハッシュ値と演算ハッシュ値とが一致しなければ、検証に失敗し、暗号化初期化コード131が不正に改ざんされているとみなして、情報処理装置100aの起動を停止するよう指示する命令を含んでいる。 As an example, the verification program 122 stores an expected hash value generated by performing a hash operation H on an encrypted initialization code 131 that has not been tampered with in advance. Here, as an example, the hash operation H is based on SHA-1. The verification program 122 includes an instruction for instructing to read the encryption initialization code 131 stored in the storage unit 104. Further, it includes an instruction for performing a hash operation H on the read encryption initialization code 131 and calculating a calculation hash value. Further, an instruction for instructing to compare the stored expected hash value with the calculated operation hash value is included. In addition, if the expected hash value and the calculated hash value match, the verification is successful, and an instruction to instruct that the encrypted initialization code 131 is considered correct is included. If the expected hash value and the calculated hash value do not match, the verification fails and it is considered that the encrypted initialization code 131 has been tampered with, and the activation of the information processing apparatus 100a is instructed to stop. Includes instructions.
 また、復号プログラム123は、暗号化初期化コード131の検証に成功した場合、復号アルゴリズムDによる復号を行うコンピュータプログラムである。復号アルゴリズムDは、一例として、秘密鍵暗号方式のAES(Advanced Encryption Standard)によるものである。また、復号プログラム123には、秘密鍵Skeyが含まれている。秘密鍵Skeyは、暗号文を復号するために用いられる秘密鍵暗号方式の鍵である。復号プログラム123は、復号アルゴリズムDにより、秘密鍵Skeyを用いて、暗号化初期化コード131を復号する。こうして、初期化コード130を生成する。 The decryption program 123 is a computer program that performs decryption using the decryption algorithm D when the encrypted initialization code 131 is successfully verified. As an example, the decryption algorithm D is based on AES (Advanced Encryption Standard) of the secret key cryptosystem. The decryption program 123 includes a secret key Sky. The secret key Skye is a secret key encryption method key used for decrypting the ciphertext. The decryption program 123 decrypts the encrypted initialization code 131 by using the secret key Sky by the decryption algorithm D. Thus, the initialization code 130 is generated.
 また、ロード命令124は、生成された初期化コード130をRAM103にロードすることを指示する命令である。CPU101により、ロード命令124が実行されると、図4に示すように、RAM103に初期化コード130がロードされる。 The load instruction 124 is an instruction for instructing to load the generated initialization code 130 into the RAM 103. When the load instruction 124 is executed by the CPU 101, the initialization code 130 is loaded into the RAM 103 as shown in FIG.
 さらに、ジャンプ命令125は、初期化コード130のRAM103へのロードが終了した後に、RAM103に記憶されている初期化コード130にジャンプすることを指示する命令である。CPU101により、ジャンプ命令125が実行されると、図4に示すように、ブートコード121から初期化コード130にジャンプする。初期化コード130にジャンプした後、CPU101により、初期化コード130の先頭から実行が開始される。 Further, the jump instruction 125 is an instruction for instructing to jump to the initialization code 130 stored in the RAM 103 after the loading of the initialization code 130 to the RAM 103 is completed. When the jump instruction 125 is executed by the CPU 101, the CPU 101 jumps from the boot code 121 to the initialization code 130 as shown in FIG. After jumping to the initialization code 130, the CPU 101 starts execution from the beginning of the initialization code 130.
 (暗号化初期化コード131)
 暗号化初期化コード131は、初期化コード130に、一例として、秘密鍵Skeyを用いて、暗号化アルゴリズムEを施して生成した暗号文である。暗号化アルゴリズムEは、復号アルゴリズムDに対応している。暗号化アルゴリズムEを用いて生成された暗号文は、復号アルゴリズムDを用いて、復号される。その結果、平文が生成される。ここで、暗号化アルゴリズムEは、一例として、AESによるものである。
(Encryption initialization code 131)
The encryption initialization code 131 is a ciphertext generated by applying the encryption algorithm E to the initialization code 130 using the secret key Sky as an example. The encryption algorithm E corresponds to the decryption algorithm D. The ciphertext generated using the encryption algorithm E is decrypted using the decryption algorithm D. As a result, plain text is generated. Here, as an example, the encryption algorithm E is based on AES.
 初期化コード130は、ブートコード121から呼び出されるソフトウェア(コンピュータプログラム)である。初期化コード130は、初期化命令132を含む。初期化命令132は、情報処理装置100aが備えるハードウェアであるデバイスの初期化を実行することを指示する命令である。なお、初期化コードを初期化プログラムと呼ぶ場合もある。 The initialization code 130 is software (computer program) called from the boot code 121. The initialization code 130 includes an initialization instruction 132. The initialization command 132 is a command for instructing to execute initialization of a device that is hardware included in the information processing apparatus 100a. Note that the initialization code may be referred to as an initialization program.
 2.2 セキュアブートの動作
 情報処理装置100aにおけるセキュアブートの動作について、図5に示すフローチャートを用いて説明する。
2.2 Secure Boot Operation The secure boot operation in the information processing apparatus 100a will be described with reference to the flowchart shown in FIG.
 情報処理装置100aの電源スイッチがONに投入されると、CPU101は、ROM102に記憶されているブートコード121の実行を開始する(ステップS101)。 When the power switch of the information processing apparatus 100a is turned on, the CPU 101 starts executing the boot code 121 stored in the ROM 102 (step S101).
 次に、CPU101は、ブートコード121に含まれている検証プログラム122を実行する。こうして、記憶部104に記憶されている暗号化初期化コード131を検証する(ステップS102)。 Next, the CPU 101 executes the verification program 122 included in the boot code 121. In this way, the encryption initialization code 131 stored in the storage unit 104 is verified (step S102).
 上述したように、ブートコード121に含まれている検証プログラム122は、あらかじめ暗号化初期化コード131の期待ハッシュ値を記憶している。検証プログラム122を実行することにより、記憶部104から暗号化初期化コード131を読み出す。次に、読み出した暗号化初期化コード131に対してハッシュ演算Hを施して、演算ハッシュ値を算出する。次に、記憶している期待ハッシュ値と算出した演算ハッシュ値とを比較する。期待ハッシュ値と演算ハッシュ値とが一致すれば、検証に成功し、暗号化初期化コード131が正しいとみなす。一方、期待ハッシュ値と演算ハッシュ値とが一致しなければ、検証に失敗し、暗号化初期化コード131が不正に改ざんされたとみなす。 As described above, the verification program 122 included in the boot code 121 stores the expected hash value of the encrypted initialization code 131 in advance. By executing the verification program 122, the encrypted initialization code 131 is read from the storage unit 104. Next, a hash operation H is performed on the read encrypted initialization code 131 to calculate an operation hash value. Next, the stored expected hash value is compared with the calculated operation hash value. If the expected hash value and the calculated hash value match, verification is successful and the encrypted initialization code 131 is considered correct. On the other hand, if the expected hash value and the calculated hash value do not match, the verification fails and it is considered that the encrypted initialization code 131 has been tampered with.
 暗号化初期化コード131が正しくない場合(ステップS103で「N」)、情報処理装置100aは、ブートを停止し(ステップS108)、処理を終了する。 If the encryption initialization code 131 is not correct (“N” in step S103), the information processing apparatus 100a stops booting (step S108) and ends the process.
 一方、暗号化初期化コード131が正しい場合(ステップS103で「Y」)、CPU101は、ブートコード121に含まれる復号プログラム123に従って動作することにより、暗号化初期化コード131を復号する。この結果、初期化コード130が生成される(ステップS104)。 On the other hand, if the encrypted initialization code 131 is correct (“Y” in step S103), the CPU 101 operates according to the decryption program 123 included in the boot code 121 to decrypt the encrypted initialization code 131. As a result, the initialization code 130 is generated (step S104).
 次に、CPU101は、ブートコード121に含まれるロード命令124に従って動作する。これにより、生成された初期化コード130をRAM103にロードする(ステップS105)。 Next, the CPU 101 operates according to a load instruction 124 included in the boot code 121. As a result, the generated initialization code 130 is loaded into the RAM 103 (step S105).
 次に、CPU101は、ブートコード121に含まれるジャンプ命令125に従って動作する。これにより、RAM103に記憶されている初期化コード130にジャンプする(ステップS106)。 Next, the CPU 101 operates according to the jump instruction 125 included in the boot code 121. This jumps to the initialization code 130 stored in the RAM 103 (step S106).
 次に、CPU101は、RAM103に記憶されている初期化コード130に従って動作する。これにより、ハードウェアの初期化などが行われる(ステップS107)。 Next, the CPU 101 operates according to the initialization code 130 stored in the RAM 103. Thereby, initialization of hardware etc. are performed (step S107).
 次に、引き続き、情報処理装置100aにおける処理が実行される。 Next, processing in the information processing apparatus 100a is subsequently executed.
 2.3 まとめ
 (1)以上説明したように、情報処理装置100aのCPU101は、ROM102上のブートコード121から起動する。ROM102に記録されたデータを書き換えることはできないので、ROM102上のブートコード121は、改ざんされることはない。
2.3 Summary (1) As described above, the CPU 101 of the information processing apparatus 100 a is activated from the boot code 121 on the ROM 102. Since the data recorded in the ROM 102 cannot be rewritten, the boot code 121 on the ROM 102 is not falsified.
 このため、ブートコード121の完全性が担保されている。こうして、悪意のある攻撃者などによる意図されたブートコード121の改ざんを困難にしている。 For this reason, the integrity of the boot code 121 is secured. This makes it difficult for a malicious attacker or the like to alter the intended boot code 121.
 (2)ブートコード121は、検証プログラム122を含んでいる。上記のように、ブートコード121の改ざんは困難であるので、検証プログラム122についても、改ざんが困難である。従って、検証プログラム122による検証は、信頼できるものである。 (2) The boot code 121 includes a verification program 122. As described above, since it is difficult to falsify the boot code 121, it is also difficult to falsify the verification program 122. Therefore, the verification by the verification program 122 is reliable.
 検証プログラム122は、暗号化初期化コード131が改ざんされているか否かを検証する。暗号化初期化コード131の検証に失敗した場合、つまり、暗号化初期化コード131の改ざんが検出された場合には、ブートが停止される。一方、暗号化初期化コード131の検証に成功した場合、暗号化初期化コード131が復号され、初期化コード130がRAM103にロードされ、初期化コード130が実行される。 The verification program 122 verifies whether or not the encryption initialization code 131 has been tampered with. If verification of the encrypted initialization code 131 fails, that is, if alteration of the encrypted initialization code 131 is detected, booting is stopped. On the other hand, when the verification of the encrypted initialization code 131 is successful, the encrypted initialization code 131 is decrypted, the initialization code 130 is loaded into the RAM 103, and the initialization code 130 is executed.
 以上のように、暗号化初期化コード131が改ざんされている場合には、ブートが停止する。一方、暗号化初期化コード131が改ざんされていない場合に限り、初期化コード130がRAM103にロードされ、初期化コード130が実行される。 As described above, when the encryption initialization code 131 has been tampered with, booting stops. On the other hand, only when the encrypted initialization code 131 has not been tampered with, the initialization code 130 is loaded into the RAM 103 and the initialization code 130 is executed.
 こうして、情報処理装置100aは、ハードウェアの初期化の段階において、信頼できる安全な環境を提供することができる。 In this way, the information processing apparatus 100a can provide a reliable and safe environment at the stage of hardware initialization.
 (3)記憶部104は、暗号化初期化コード131を記憶しているので、初期化コードの秘匿性が確保されている。これにより、悪意のある攻撃者による初期化コードの解析を困難にしている。 (3) Since the storage unit 104 stores the encrypted initialization code 131, the confidentiality of the initialization code is ensured. This makes it difficult for a malicious attacker to analyze the initialization code.
 3.実施の形態3
 本発明の実施の形態3としての情報処理装置(コンピュータシステムと呼ぶ場合もある。)100bについて説明する。
3. Embodiment 3
An information processing apparatus (sometimes referred to as a computer system) 100b as Embodiment 3 of the present invention will be described.
 3.1 情報処理装置100bの構成
 情報処理装置100bは、図6に示すように、暗号エンジン106、CPU101、仮想計算機ハード107、ROM102、RAM103b、記憶部104、バス105及びその他のユニット(図示していない)から構成されている。暗号エンジン106、CPU101、仮想計算機ハード107、ROM102、RAM103b、記憶部104及びその他のユニットは、バス105を介して、接続されている。
3.1 Configuration of Information Processing Apparatus 100b As shown in FIG. 6, the information processing apparatus 100b includes a cryptographic engine 106, a CPU 101, virtual machine hardware 107, a ROM 102, a RAM 103b, a storage unit 104, a bus 105, and other units (not shown). Not). The cryptographic engine 106, CPU 101, virtual machine hardware 107, ROM 102, RAM 103 b, storage unit 104 and other units are connected via a bus 105.
 (1)ROM102及び記憶部104
 ROM102は、ROM102内の固定位置において、あらかじめブートコード121bを記憶している。
(1) ROM 102 and storage unit 104
The ROM 102 stores a boot code 121b in advance at a fixed position in the ROM 102.
 また、記憶部104は、あらかじめ初期化コード130b及び仮想計算機制御コード141を記憶している。 In addition, the storage unit 104 stores an initialization code 130b and a virtual machine control code 141 in advance.
 (ブートコード121b)
 ブートコード121bは、情報処理装置100bにおいてブート処理が行われる際に、最初に実行されるソフトウェア(コンピュータプログラム)である。言い換えると、CPU101のリセット直後に実行されるプログラムである。なお、ブートコードをブートプログラム又は起動プログラムと呼ぶ場合もある。
(Boot code 121b)
The boot code 121b is software (computer program) that is executed first when boot processing is performed in the information processing apparatus 100b. In other words, the program is executed immediately after the CPU 101 is reset. The boot code may be called a boot program or a start program.
 ブートコード121bは、図6に示すように、検証命令126、ロード命令124b及びジャンプ命令125bを含んでいる。ブートコード121bにおいて、検証命令126、ロード命令124b及びジャンプ命令125bは、この順序で配置されている。 As shown in FIG. 6, the boot code 121b includes a verification instruction 126, a load instruction 124b, and a jump instruction 125b. In the boot code 121b, the verification instruction 126, the load instruction 124b, and the jump instruction 125b are arranged in this order.
 従って、検証命令126、ロード命令124b及びジャンプ命令125bは、この順序で実行される。 Therefore, the verification instruction 126, the load instruction 124b, and the jump instruction 125b are executed in this order.
 検証命令126は、暗号エンジン106に対して、記憶部104に記憶されている初期化コード130bを検証するように指示する命令を含む。また、暗号エンジン106から検証結果を受け取る命令を含む。さらに、検証結果が失敗を示す場合、言い換えると、初期化コード130bが改ざんされたことを示す場合、情報処理装置100bの起動を停止するよう指示する命令を含んでいる。 The verification instruction 126 includes an instruction for instructing the cryptographic engine 106 to verify the initialization code 130b stored in the storage unit 104. It also includes an instruction for receiving a verification result from the cryptographic engine 106. Further, when the verification result indicates failure, in other words, when the initialization code 130b indicates falsification, the instruction includes an instruction to stop the activation of the information processing apparatus 100b.
 ロード命令124bは、初期化コード130bの検証に成功した場合に、記憶部104に記憶されている初期化コード130bをRAM103のメモリ部109b(後述する)にロードすることを指示する命令である。CPU101により、ロード命令124bが実行されると、図7に示すように、初期化コード130bがRAM103bにロードされる。 The load instruction 124 b is an instruction that instructs to load the initialization code 130 b stored in the storage unit 104 into the memory unit 109 b (described later) of the RAM 103 when the initialization code 130 b is successfully verified. When the load instruction 124b is executed by the CPU 101, the initialization code 130b is loaded into the RAM 103b as shown in FIG.
 ジャンプ命令125bは、初期化コード130bのメモリ部109bへのロードが終了した後に、メモリ部109bに記憶されている初期化コード130bにジャンプすることを指示する命令である。CPU101により、ジャンプ命令125bが実行されると、図7に示すように、ブートコード121bから初期化コード130bにジャンプする。初期化コード130bにジャンプした後、CPU101により、初期化コード130bの先頭から実行が開始される。 The jump instruction 125b is an instruction instructing to jump to the initialization code 130b stored in the memory unit 109b after the loading of the initialization code 130b to the memory unit 109b is completed. When the jump instruction 125b is executed by the CPU 101, the CPU jumps from the boot code 121b to the initialization code 130b as shown in FIG. After jumping to the initialization code 130b, the CPU 101 starts execution from the beginning of the initialization code 130b.
 (初期化コード130b)
 初期化コード130bは、ブートコード121bから呼び出されるソフトウェア(コンピュータプログラム)であり、ハードウェアの初期化などを実行する。なお、初期化コードを初期化プログラムと呼ぶ場合もある。
(Initialization code 130b)
The initialization code 130b is software (computer program) called from the boot code 121b, and executes hardware initialization and the like. Note that the initialization code may be referred to as an initialization program.
 初期化コード130bは、図6に示すように、初期化命令132b、設定命令133、検証命令134、ロード命令135及びジャンプ命令136を含んでいる。初期化コード130bにおいて、初期化命令132b、設定命令133、検証命令134、ロード命令135及びジャンプ命令136は、この順序で配置されている。従って、初期化命令132b、設定命令133、検証命令134、ロード命令135及びジャンプ命令136は、この順序で実行される。 The initialization code 130b includes an initialization command 132b, a setting command 133, a verification command 134, a load command 135, and a jump command 136, as shown in FIG. In the initialization code 130b, the initialization instruction 132b, the setting instruction 133, the verification instruction 134, the load instruction 135, and the jump instruction 136 are arranged in this order. Therefore, the initialization instruction 132b, the setting instruction 133, the verification instruction 134, the load instruction 135, and the jump instruction 136 are executed in this order.
 初期化命令132bは、ハードウェアの初期化を実行することを指示する命令である。 The initialization instruction 132b is an instruction for instructing execution of hardware initialization.
 設定命令133は、RAM103bのメモリ部109bにセキュア領域を設定することを指示する命令である。設定命令133は、具体的には、RAM103bのアクセス制限部108b(後述する)が有する専用レジスタ112b(後述する)に、先頭アドレス、末尾アドレス及び識別情報を設定する。先頭アドレス及び末尾アドレスは、セキュア領域の先頭アドレス及び末尾アドレスを示す。また、識別情報は、CPU、デバイス、OS又アプリケーションプログラムなどを識別する識別子である。これらのCPU、デバイス、OS又アプリケーションプログラムなどのみが、設定されたセキュア領域へのアクセスを許可される。なお、図6において、設定命令133により設定されたセキュア領域を、セキュア領域111bとして示している。 The setting command 133 is a command for instructing to set a secure area in the memory unit 109b of the RAM 103b. Specifically, the setting instruction 133 sets a head address, a tail address, and identification information in a dedicated register 112b (described later) included in the access restriction unit 108b (described later) of the RAM 103b. The start address and end address indicate the start address and end address of the secure area. The identification information is an identifier for identifying a CPU, device, OS, application program, and the like. Only these CPU, device, OS, and application program are permitted to access the set secure area. In FIG. 6, the secure area set by the setting instruction 133 is shown as a secure area 111b.
 検証命令134は、暗号エンジン106に対して、記憶部104に記憶されている仮想計算機制御コード141を検証するように指示する命令を含む。また、暗号エンジン106から検証結果を受け取る命令を含む。さらに、検証結果が失敗を示す場合、言い換えると、仮想計算機制御コード141が改ざんされたことを示す場合、情報処理装置100bの起動を停止するよう指示する命令を含んでいる。 The verification command 134 includes a command for instructing the cryptographic engine 106 to verify the virtual machine control code 141 stored in the storage unit 104. It also includes an instruction for receiving a verification result from the cryptographic engine 106. Further, when the verification result indicates failure, in other words, when the virtual machine control code 141 indicates falsification, the instruction includes an instruction to stop the activation of the information processing apparatus 100b.
 ロード命令135は、仮想計算機制御コード141の検証が成功した場合に、仮想計算機制御コード141をセキュア領域111bにロードすることを指示する命令である。CPU101により、ロード命令135が実行されると、図7に示すように、仮想計算機制御コード141がセキュア領域111bにロードされる。 The load instruction 135 is an instruction that instructs to load the virtual machine control code 141 into the secure area 111b when the verification of the virtual machine control code 141 is successful. When the load instruction 135 is executed by the CPU 101, the virtual machine control code 141 is loaded into the secure area 111b as shown in FIG.
 ジャンプ命令136は、仮想計算機制御コード141のセキュア領域111bへのロードが完了した後に、セキュア領域111bに記憶されている仮想計算機制御コード141へのジャンプを指示する命令である。CPU101により、ジャンプ命令136が実行されると、図7に示すように、初期化コード130bから仮想計算機制御コード141にジャンプする。仮想計算機制御コード141にジャンプした後、仮想計算機制御コード141の先頭から実行が開始される。 The jump instruction 136 is an instruction for instructing a jump to the virtual machine control code 141 stored in the secure area 111b after the loading of the virtual machine control code 141 to the secure area 111b is completed. When the CPU 101 executes a jump instruction 136, the CPU jumps from the initialization code 130b to the virtual machine control code 141 as shown in FIG. After jumping to the virtual machine control code 141, execution is started from the head of the virtual machine control code 141.
 (仮想計算機制御コード141)
 仮想計算機制御コード141は、仮想計算機ハード107を制御するためのソフトウェア(コンピュータプログラム)である。なお、仮想計算機制御コードを仮想計算機制御プログラムと呼ぶ場合もある。
(Virtual machine control code 141)
The virtual machine control code 141 is software (computer program) for controlling the virtual machine hardware 107. Note that the virtual machine control code may be called a virtual machine control program.
 (2)RAM103b
 RAM103bは、アクセス制限部108bとメモリ部109bとを含む。メモリ部109bは、データを記憶するためのメモリ領域を含む。メモリ領域には、セキュア領域111bが設定される。メモリ部109bにおいて、セキュア領域111bに設定されていない領域が通常領域110bである。
(2) RAM 103b
The RAM 103b includes an access restriction unit 108b and a memory unit 109b. The memory unit 109b includes a memory area for storing data. A secure area 111b is set in the memory area. In the memory unit 109b, an area that is not set as the secure area 111b is the normal area 110b.
 アクセス制限部108bは、専用レジスタ112bを有する。専用レジスタ112bには、セキュア領域情報116bが設定される。セキュア領域情報116bは、先頭アドレス113b、末尾アドレス114b及び識別情報115bを含む。先頭アドレス113b及び末尾アドレス114bは、それぞれ、セキュア領域111bの先頭アドレス及び末尾アドレスを示す。識別情報115bは、特定のCPU、特定のデバイス、特定のOS又は特定のアプリケーションプログラムを識別する識別子である。 The access restriction unit 108b has a dedicated register 112b. Secure area information 116b is set in the dedicated register 112b. The secure area information 116b includes a head address 113b, a tail address 114b, and identification information 115b. The start address 113b and the end address 114b indicate the start address and the end address of the secure area 111b, respectively. The identification information 115b is an identifier for identifying a specific CPU, a specific device, a specific OS, or a specific application program.
 なお、専用レジスタ112bには、2個以上のセキュア領域情報が設定されるとしてもよい。 Note that two or more pieces of secure area information may be set in the dedicated register 112b.
 アクセス制限部108bは、専用レジスタ112bにセキュア領域情報116bが設定されている場合に、識別情報115bにより識別されるCPU、デバイス、OS又アプリケーションプログラムに対してのみ、セキュア領域111bへのアクセスを許可する。他のCPU、他のデバイス、他のOS又他のアプリケーションプログラムに対しては、セキュア領域111bへのアクセスを禁止する。 When the secure area information 116b is set in the dedicated register 112b, the access restriction unit 108b permits access to the secure area 111b only to the CPU, device, OS, or application program identified by the identification information 115b. To do. Access to the secure area 111b is prohibited for other CPUs, other devices, other OSs, and other application programs.
 (3)暗号エンジン106
 暗号エンジン106は、ハッシュ検証や暗復号処理を行うためのハードウェア(専用回路)である。
(3) Cryptographic engine 106
The cryptographic engine 106 is hardware (dedicated circuit) for performing hash verification and encryption / decryption processing.
 一例として、暗号エンジン106は、ブートコード121に含まれる検証命令126の指示に従って、以下に示すようにして、記憶部104に記憶されている初期化コード130bを検証する。 As an example, the cryptographic engine 106 verifies the initialization code 130b stored in the storage unit 104 as follows according to the instruction of the verification instruction 126 included in the boot code 121.
 暗号エンジン106は、あらかじめ、改ざんされていない初期化コード130bにハッシュ演算Hを施して生成された期待ハッシュ値を記憶している。また、暗号エンジン106は、記憶部104から初期化コード130bを読み出し、読み出した初期化コード130bに対してハッシュ演算Hを施して、演算ハッシュ値を算出する。次に、記憶している期待ハッシュ値と算出した演算ハッシュ値とを比較する。期待ハッシュ値と演算ハッシュ値とが一致すれば、検証に成功し、初期化コード130bが正しいとみなす検証結果をCPU101へ出力する。一方、期待ハッシュ値と演算ハッシュ値とが一致しなければ、検証に失敗し、初期化コード130bが不正に改ざんされたとみなす検証結果をCPU101へ出力する。 The cryptographic engine 106 stores in advance an expected hash value generated by performing a hash operation H on an initialization code 130b that has not been tampered with. Further, the cryptographic engine 106 reads the initialization code 130b from the storage unit 104, performs a hash operation H on the read initialization code 130b, and calculates a calculation hash value. Next, the stored expected hash value is compared with the calculated operation hash value. If the expected hash value and the calculated hash value match, the verification is successful, and a verification result regarding the initialization code 130b as being correct is output to the CPU 101. On the other hand, if the expected hash value and the calculated hash value do not match, the verification fails, and the verification result that the initialization code 130b is considered to have been tampered with is output to the CPU 101.
 また、一例として、暗号エンジン106は、初期化コード130bに含まれる検証命令134の指示に従って、以下に示すようにして、記憶部104に記憶されている仮想計算機制御コード141を検証する。 Also, as an example, the cryptographic engine 106 verifies the virtual machine control code 141 stored in the storage unit 104 as shown below according to the instruction of the verification instruction 134 included in the initialization code 130b.
 暗号エンジン106は、あらかじめ、改ざんされていない仮想計算機制御コード141にハッシュ演算Hを施して生成された期待ハッシュ値を記憶している。また、暗号エンジン106は、記憶部104から仮想計算機制御コード141を読み出し、読み出した仮想計算機制御コード141に対してハッシュ演算Hを施して、演算ハッシュ値を算出する。次に、記憶している期待ハッシュ値と算出した演算ハッシュ値とを比較する。期待ハッシュ値と演算ハッシュ値とが一致すれば、検証に成功し、仮想計算機制御コード141が正しいとみなす検証結果をCPU101へ出力する。一方、期待ハッシュ値と演算ハッシュ値とが一致しなければ、検証に失敗し、仮想計算機制御コード141が不正に改ざんされたとみなす検証結果をCPU101へ出力する。 The cryptographic engine 106 stores in advance an expected hash value generated by performing a hash operation H on a virtual machine control code 141 that has not been tampered with. Further, the cryptographic engine 106 reads the virtual computer control code 141 from the storage unit 104, performs a hash operation H on the read virtual computer control code 141, and calculates an operation hash value. Next, the stored expected hash value is compared with the calculated operation hash value. If the expected hash value and the calculated hash value match, the verification is successful, and a verification result that the virtual machine control code 141 is regarded as correct is output to the CPU 101. On the other hand, if the expected hash value and the calculated hash value do not match, the verification fails, and the verification result that the virtual machine control code 141 is considered to have been tampered with is output to the CPU 101.
 (4)仮想計算機ハード107
 仮想計算機ハード107は、ハイパーバイザとも呼ばれ、複数の異なるOSを並列に実行できるようにするハードウェアである。
(4) Virtual computer hardware 107
The virtual machine hardware 107 is also called a hypervisor, and is hardware that enables a plurality of different OSs to be executed in parallel.
 3.2 情報処理装置100bのソフトウェア構成
 情報処理装置100bのソフトウェア構成について、図8を用いて説明する。
3.2 Software Configuration of Information Processing Apparatus 100b The software configuration of the information processing apparatus 100b will be described with reference to FIG.
 図8に示すハードウェア200bは、図6に示すCPU101、ROM102、RAM103b、記憶部104、暗号エンジン106及び仮想計算機ハード107を含む。 8 includes the CPU 101, the ROM 102, the RAM 103b, the storage unit 104, the cryptographic engine 106, and the virtual machine hardware 107 shown in FIG.
 情報処理装置100bにおいては、通常OS221及びセキュアOS231が動作する。通常OS221の管理下では、通常アプリ201、202が動作する。一方、セキュアOS231の管理下では、セキュアアプリ211、212が動作する。 In the information processing apparatus 100b, a normal OS 221 and a secure OS 231 operate. Under the management of the normal OS 221, the normal applications 201 and 202 operate. On the other hand, the secure applications 211 and 212 operate under the management of the secure OS 231.
 セキュアOS231が動作するセキュアモードにおいて、セキュアアプリ211、212は、セキュアOS231を介して、セキュア領域111bへのアクセスを許可される。 In the secure mode in which the secure OS 231 operates, the secure applications 211 and 212 are permitted to access the secure area 111b via the secure OS 231.
 通常OS221が動作する通常モードにおいて、通常アプリ201、202は、通常OS221を介して、通常領域110bへのアクセスを許可される。しかし、セキュア領域111bへのアクセスを許可されない。 In the normal mode in which the normal OS 221 operates, the normal applications 201 and 202 are permitted to access the normal area 110b via the normal OS 221. However, access to the secure area 111b is not permitted.
 3.3 セキュアブートの動作
 情報処理装置100bにおけるセキュアブートの動作について、図9に示すフローチャートを用いて説明する。
3.3 Secure Boot Operation The secure boot operation in the information processing apparatus 100b will be described with reference to the flowchart shown in FIG.
 情報処理装置100bの電源スイッチがONに投入されると、CPU101は、ROM102に記憶されているブートコード121bの実行を開始する(ステップS201)。 When the power switch of the information processing apparatus 100b is turned on, the CPU 101 starts executing the boot code 121b stored in the ROM 102 (step S201).
 CPU101は、ブートコード121bに含まれている検証命令126に従って動作する。これにより、CPU101は、暗号エンジン106に対して、記憶部104に記憶されている初期化コード130bを検証するように、制御する(ステップS202)。ここで、暗号エンジン106は、初期化コード130bに対する期待ハッシュ値を記憶しており、初期化コード130bから算出した演算ハッシュ値と期待ハッシュ値とを比較することにより検証する。 The CPU 101 operates in accordance with the verification instruction 126 included in the boot code 121b. Thereby, the CPU 101 controls the cryptographic engine 106 to verify the initialization code 130b stored in the storage unit 104 (step S202). Here, the cryptographic engine 106 stores the expected hash value for the initialization code 130b, and verifies it by comparing the calculated hash value calculated from the initialization code 130b with the expected hash value.
 初期化コード130bが正しくない場合(ステップS203で「N」)、情報処理装置100bは、ブートを停止し(ステップS213)、処理を終了する。 If the initialization code 130b is not correct ("N" in step S203), the information processing apparatus 100b stops booting (step S213) and ends the process.
 初期化コード130bが正しい場合(ステップS203で「Y」)、ブートコード121bに含まれているロード命令124bに従って動作することにより、CPU101は、初期化コード130bをRAM103bにロードする(ステップS204)。 When the initialization code 130b is correct (“Y” in step S203), the CPU 101 loads the initialization code 130b into the RAM 103b by operating according to the load instruction 124b included in the boot code 121b (step S204).
 次に、ブートコード121bに含まれているジャンプ命令125bに従って動作することにより、CPU101は、RAM103bに記憶されている初期化コード130bにジャンプする(ステップS205)。 Next, by operating according to the jump instruction 125b included in the boot code 121b, the CPU 101 jumps to the initialization code 130b stored in the RAM 103b (step S205).
 次に、CPU101は、初期化コード130bに含まれる初期化命令132bを実行する(ステップS206)。 Next, the CPU 101 executes the initialization instruction 132b included in the initialization code 130b (step S206).
 次に、CPU101は、初期化コード130bに含まれている設定命令133に従って動作する。これにより、アクセス制限部108bが有する専用レジスタ112bに、セキュア領域111bの先頭アドレス、末尾アドレス及び識別情報を設定する(ステップS207)。こうして、RAM103bにおいて、セキュア領域111bが設定される。セキュア領域111bには、セキュアOS231、セキュアアプリ211及び212のみがアクセス可能である。他のOS、他のアプリに対して、セキュア領域111bへのアクセスが禁止される。 Next, the CPU 101 operates in accordance with the setting instruction 133 included in the initialization code 130b. As a result, the start address, end address and identification information of the secure area 111b are set in the dedicated register 112b of the access restriction unit 108b (step S207). Thus, the secure area 111b is set in the RAM 103b. Only the secure OS 231 and the secure applications 211 and 212 are accessible to the secure area 111b. Access to the secure area 111b is prohibited for other OSs and other applications.
 CPU101は、初期化コード130bに含まれている検証命令134に従って動作する。これにより、CPU101は、暗号エンジン106に対して、記憶部104に記憶されている仮想計算機制御コード141を検証するように、制御する(ステップS208)。ここで、暗号エンジン106は、改ざんされていない仮想計算機制御コード141に対する期待ハッシュ値を記憶している。暗号エンジン106は、仮想計算機制御コード141から算出した演算ハッシュ値と期待ハッシュ値とを比較することにより検証する。 The CPU 101 operates in accordance with the verification instruction 134 included in the initialization code 130b. As a result, the CPU 101 controls the cryptographic engine 106 to verify the virtual machine control code 141 stored in the storage unit 104 (step S208). Here, the cryptographic engine 106 stores an expected hash value for the virtual machine control code 141 that has not been tampered with. The cryptographic engine 106 verifies the cryptographic hash value calculated from the virtual machine control code 141 by comparing it with the expected hash value.
 仮想計算機制御コード141が正しくない場合(ステップS209で「N」)、情報処理装置100bは、ブートを停止し(ステップS213)、処理を終了する。 If the virtual machine control code 141 is not correct (“N” in step S209), the information processing apparatus 100b stops booting (step S213) and ends the process.
 仮想計算機制御コード141が正しい場合(ステップS209で「Y」)、CPU101は、初期化コード130bに含まれているロード命令135に従って動作する。これにより、仮想計算機制御コード141をRAM103bのセキュア領域111bにロードする(ステップS210)。 If the virtual machine control code 141 is correct (“Y” in step S209), the CPU 101 operates in accordance with the load instruction 135 included in the initialization code 130b. As a result, the virtual machine control code 141 is loaded into the secure area 111b of the RAM 103b (step S210).
 次に、CPU101は、初期化コード130bに含まれているジャンプ命令136に従って動作する。これにより、RAM103bのセキュア領域111bに記憶されている仮想計算機制御コード141にジャンプするように制御する(ステップS211)。 Next, the CPU 101 operates according to the jump instruction 136 included in the initialization code 130b. Thereby, control is performed so as to jump to the virtual machine control code 141 stored in the secure area 111b of the RAM 103b (step S211).
 次に、CPU101は、仮想計算機制御コード141を実行し、仮想計算機ハード107を動作させる(ステップS212)。 Next, the CPU 101 executes the virtual machine control code 141 and operates the virtual machine hardware 107 (step S212).
 次に、情報処理装置100bは、引き続き、処理を実行する。 Next, the information processing apparatus 100b continues to execute processing.
 3.4 まとめ
 (1)以上説明したように、情報処理装置100bのCPU101は、必ずROM102上のブートコード121bから起動する。ROM102に記録されたデータを書き換えることはできないので、ROM102上のブートコード121bは、改ざんされることはない。
3.4 Summary (1) As described above, the CPU 101 of the information processing apparatus 100b always starts up from the boot code 121b on the ROM 102. Since the data recorded in the ROM 102 cannot be rewritten, the boot code 121b on the ROM 102 is not falsified.
 このため、ブートコード121bの完全性が担保されている。こうして、悪意のある攻撃者などによる意図されたブートコード121bの改ざんを困難にしている。 Therefore, the integrity of the boot code 121b is ensured. This makes it difficult for a malicious attacker or the like to alter the intended boot code 121b.
 (2)ブートコード121bは、検証命令126を含んでいる。上記のように、ブートコード121bの改ざんは困難であるので、検証命令126についても、改ざんが困難である。従って、検証命令126は、信頼できるものである。 (2) The boot code 121b includes a verification instruction 126. As described above, since it is difficult to falsify the boot code 121b, the verification instruction 126 is also difficult to falsify. Therefore, the verification instruction 126 is reliable.
 検証命令126は、ハードウェアである暗号エンジン106に、初期化コード130bの検証をさせる。暗号エンジン106は、ハードウェアであるので改ざんされることはない。従って、暗号エンジン106による検証は、信頼できるものである。 The verification instruction 126 causes the cryptographic engine 106, which is hardware, to verify the initialization code 130b. Since the cryptographic engine 106 is hardware, it is not tampered with. Therefore, the verification by the cryptographic engine 106 is reliable.
 暗号エンジン106は、初期化コード130bが改ざんされているか否かを検証する。初期化コード130bの検証に失敗した場合、つまり、初期化コード130bの改ざんが検出された場合には、ブートが停止される。一方、初期化コード130bの検証に成功した場合、初期化コード130bがRAM103にロードされ、初期化コード130が実行される。 The cryptographic engine 106 verifies whether or not the initialization code 130b has been tampered with. If the verification of the initialization code 130b fails, that is, if alteration of the initialization code 130b is detected, the boot is stopped. On the other hand, when the initialization code 130b is successfully verified, the initialization code 130b is loaded into the RAM 103, and the initialization code 130 is executed.
 以上のように、初期化コード130bが改ざんされている場合には、ブートが停止する。一方、初期化コード130bが改ざんされていない場合に限り、初期化コード130bがRAM103bにロードされ、初期化コード130bが実行される。 As described above, when the initialization code 130b has been tampered with, booting stops. On the other hand, only when the initialization code 130b has not been tampered with, the initialization code 130b is loaded into the RAM 103b and the initialization code 130b is executed.
 こうして、情報処理装置100bは、ハードウェアの初期化の段階において、信頼できる安全な環境を提供することができる。 In this way, the information processing apparatus 100b can provide a reliable and safe environment at the stage of hardware initialization.
 (3)初期化コード130bは、検証命令134を含んでいる。上記のように、初期化コード130bが改ざんされていないと判断された場合には、検証命令134も改ざんされていない。従って、検証命令134は、信頼できるものである。 (3) The initialization code 130b includes a verification instruction 134. As described above, when it is determined that the initialization code 130b has not been tampered with, the verification instruction 134 has not been tampered with. Thus, the verification instruction 134 is reliable.
 検証命令134は、ハードウェアである暗号エンジン106に、仮想計算機制御コード141の検証をさせる。暗号エンジン106は、ハードウェアであるので改ざんされることはない。従って、暗号エンジン106による検証は、信頼できるものである。 The verification instruction 134 causes the cryptographic engine 106, which is hardware, to verify the virtual machine control code 141. Since the cryptographic engine 106 is hardware, it is not tampered with. Therefore, the verification by the cryptographic engine 106 is reliable.
 暗号エンジン106は、仮想計算機制御コード141が改ざんされているか否かを検証する。仮想計算機制御コード141の検証に失敗した場合、つまり、仮想計算機制御コード141の改ざんが検出された場合には、ブートが停止される。一方、仮想計算機制御コード141の検証に成功した場合、仮想計算機制御コード141がRAM103bのセキュア領域111bにロードされ、仮想計算機制御コード141が実行される。 The cryptographic engine 106 verifies whether or not the virtual machine control code 141 has been tampered with. If verification of the virtual machine control code 141 fails, that is, if alteration of the virtual machine control code 141 is detected, booting is stopped. On the other hand, when the verification of the virtual machine control code 141 is successful, the virtual machine control code 141 is loaded into the secure area 111b of the RAM 103b, and the virtual machine control code 141 is executed.
 以上のように、仮想計算機制御コード141が改ざんされている場合には、ブートが停止する。一方、仮想計算機制御コード141が改ざんされていない場合に限り、仮想計算機制御コード141がRAM103bのセキュア領域111bにロードされ、仮想計算機制御コード141が実行される。 As described above, booting stops when the virtual machine control code 141 has been tampered with. On the other hand, only when the virtual machine control code 141 has not been tampered with, the virtual machine control code 141 is loaded into the secure area 111b of the RAM 103b, and the virtual machine control code 141 is executed.
 こうして、情報処理装置100bは、セキュアモードにおいて、仮想計算機制御コード141が実行される場合において、信頼できる安全な環境を提供することができる。 In this way, the information processing apparatus 100b can provide a reliable and safe environment when the virtual machine control code 141 is executed in the secure mode.
 また、仮想計算機制御コード141がRAM103bのセキュア領域111bにロードされるので、仮想計算機制御コード141に対する悪意のある攻撃者による改ざんを困難にすることができる。 Also, since the virtual machine control code 141 is loaded into the secure area 111b of the RAM 103b, it is possible to make it difficult for a malicious attacker to tamper with the virtual machine control code 141.
 4.実施の形態4
 本発明の実施の形態4としての情報処理装置(コンピュータシステムと呼ぶ場合もある。)100cについて説明する。
4). Embodiment 4
An information processing apparatus (sometimes referred to as a computer system) 100c as Embodiment 4 of the present invention will be described.
 4.1 情報処理装置100cの構成
 情報処理装置100cは、図10に示すように、暗号エンジン106、CPU101、CPU101c、仮想計算機ハード107、ROM102、RAM103b、RAM103c、記憶部104、バス105及びその他のユニット(図示していない)から構成されている。暗号エンジン106、CPU101、CPU101c、仮想計算機ハード107、ROM102、RAM103b、RAM103c、記憶部104及びその他のユニットは、バス105を介して、接続されている。
4.1 Configuration of Information Processing Device 100c The information processing device 100c includes, as shown in FIG. It is composed of units (not shown). The cryptographic engine 106, CPU 101, CPU 101 c, virtual machine hardware 107, ROM 102, RAM 103 b, RAM 103 c, storage unit 104, and other units are connected via a bus 105.
 CPU101cは、CPU101とは、別のCPUである。また、RAM103cは、RAM103bとは、別のRAMである。 The CPU 101c is a CPU different from the CPU 101. The RAM 103c is a RAM different from the RAM 103b.
 暗号エンジン106及び仮想計算機ハード107は、それぞれ、情報処理装置100bの暗号エンジン106及び仮想計算機ハード107と同一であるので、説明を省略する。 Since the cryptographic engine 106 and the virtual machine hardware 107 are the same as the cryptographic engine 106 and the virtual machine hardware 107 of the information processing apparatus 100b, respectively, description thereof is omitted.
 (1)ROM102及び記憶部104
 ROM102は、ROM102内の固定位置において、あらかじめブートコード121cを記憶している。
(1) ROM 102 and storage unit 104
The ROM 102 stores a boot code 121c in advance at a fixed position in the ROM 102.
 また、記憶部104は、あらかじめ暗号化初期化コード131c及び仮想計算機制御コード141を記憶している。 The storage unit 104 stores an encryption initialization code 131c and a virtual machine control code 141 in advance.
 (ブートコード121c)
 ブートコード121cは、情報処理装置100cにおいてブート処理が行われる際に、最初に実行されるソフトウェア(コンピュータプログラム)である。言い換えると、CPU101のリセット直後に実行されるプログラムである。なお、ブートコードをブートプログラム又は起動プログラムと呼ぶ場合もある。
(Boot code 121c)
The boot code 121c is software (computer program) that is executed first when boot processing is performed in the information processing apparatus 100c. In other words, the program is executed immediately after the CPU 101 is reset. The boot code may be called a boot program or a start program.
 ブートコード121cは、図10に示すように、設定命令127、検証命令126c、復号命令128、ロード命令124c及びジャンプ命令125cを含んでいる。ブートコード121cにおいて、設定命令127、検証命令126c、復号命令128、ロード命令124c及びジャンプ命令125cは、この順序で配置されている。従って、設定命令127、検証命令126c、復号命令128、ロード命令124c及びジャンプ命令125cは、この順序で実行される。 As shown in FIG. 10, the boot code 121c includes a setting instruction 127, a verification instruction 126c, a decoding instruction 128, a load instruction 124c, and a jump instruction 125c. In the boot code 121c, the setting instruction 127, the verification instruction 126c, the decoding instruction 128, the load instruction 124c, and the jump instruction 125c are arranged in this order. Accordingly, the setting instruction 127, the verification instruction 126c, the decryption instruction 128, the load instruction 124c, and the jump instruction 125c are executed in this order.
 設定命令127は、RAM103bのメモリ部109bにセキュア領域を設定することを指示する命令である。設定命令127は、具体的には、RAM103bのアクセス制限部108bが有する専用レジスタ112bに、先頭アドレス、末尾アドレス及び識別情報を設定する。先頭アドレス及び末尾アドレスは、セキュア領域の先頭アドレス及び末尾アドレスを示す。また、識別情報は、CPU、デバイス、OS又アプリケーションプログラムなどを識別する識別子である。これらのCPU、デバイス、OS又アプリケーションプログラムなどのみが、設定されたセキュア領域へのアクセスを許可される。 The setting command 127 is a command for instructing to set a secure area in the memory unit 109b of the RAM 103b. Specifically, the setting instruction 127 sets the start address, the end address, and the identification information in the dedicated register 112b included in the access restriction unit 108b of the RAM 103b. The start address and end address indicate the start address and end address of the secure area. The identification information is an identifier for identifying a CPU, device, OS, application program, and the like. Only these CPU, device, OS, and application program are permitted to access the set secure area.
 検証命令126cは、暗号エンジン106に対して、記憶部104に記憶されている暗号化初期化コード131cを検証するように指示する命令を含む。また、暗号エンジン106から検証結果を受け取る命令を含む。さらに、検証結果が失敗を示す場合、言い換えると、暗号化初期化コード131cが改ざんされたことを示す場合、情報処理装置100cの起動を停止するよう指示する命令を含んでいる。 The verification instruction 126c includes an instruction for instructing the cryptographic engine 106 to verify the encrypted initialization code 131c stored in the storage unit 104. It also includes an instruction for receiving a verification result from the cryptographic engine 106. Further, when the verification result indicates failure, in other words, when the encrypted initialization code 131c indicates falsification, the instruction includes an instruction to stop the activation of the information processing apparatus 100c.
 復号命令128は、暗号化初期化コード131cの検証が成功した場合に、暗号エンジン106に対して、記憶部104に記憶されている暗号化初期化コード131cを復号するように指示する命令である。CPU101が復号命令128に従って動作することにより、初期化コード130cが生成される。 The decryption command 128 is a command for instructing the cryptographic engine 106 to decrypt the encrypted initialization code 131c stored in the storage unit 104 when the verification of the encrypted initialization code 131c is successful. . When the CPU 101 operates according to the decryption instruction 128, the initialization code 130c is generated.
 ロード命令124cは、生成された初期化コード130cをRAM103のメモリ部109bに設定されたセキュア領域111bにロードすることを指示する命令である。CPU101により、ロード命令124cが実行されると、図11に示すように、セキュア領域111bに初期化コード130cがロードされる。 The load instruction 124 c is an instruction that instructs to load the generated initialization code 130 c into the secure area 111 b set in the memory unit 109 b of the RAM 103. When the load instruction 124c is executed by the CPU 101, the initialization code 130c is loaded into the secure area 111b as shown in FIG.
 ジャンプ命令125cは、初期化コード130cのセキュア領域111bへのロードが終了した後に、セキュア領域111bに記憶されている初期化コード130cにジャンプすることを指示する命令である。CPU101により、ジャンプ命令125cが実行されると、図11に示すように、ブートコード121cから初期化コード130cにジャンプする。初期化コード130cにジャンプした後、初期化コード130cの先頭から実行が開始される。 The jump instruction 125c is an instruction that instructs to jump to the initialization code 130c stored in the secure area 111b after the loading of the initialization code 130c to the secure area 111b is completed. When the jump instruction 125c is executed by the CPU 101, as shown in FIG. 11, the CPU jumps from the boot code 121c to the initialization code 130c. After jumping to the initialization code 130c, execution is started from the beginning of the initialization code 130c.
 (暗号化初期化コード131c)
 暗号化初期化コード131cは、初期化コード130cに、一例として、秘密鍵Skeyを用いて、暗号化アルゴリズムEを施して生成した暗号文である。
(Encryption initialization code 131c)
The encryption initialization code 131c is a ciphertext generated by applying the encryption algorithm E to the initialization code 130c, for example, using the secret key Sky.
 初期化コード130cは、ブートコード121cから呼び出されるソフトウェア(コンピュータプログラム)であり、ハードウェアの初期化などを実行する。なお、初期化コードを初期化プログラムと呼ぶ場合もある。 The initialization code 130c is software (computer program) called from the boot code 121c, and executes hardware initialization and the like. Note that the initialization code may be referred to as an initialization program.
 初期化コード130cは、一例として、図10に示すように、初期化命令132c、設定命令133c、検証命令134c、ロード命令135c及びジャンプ命令136cを含んでいる。初期化コード130cにおいて、初期化命令132c、設定命令133c、検証命令134c、ロード命令135c及びジャンプ命令136cは、この順序で配置されている。従って、初期化命令132c、設定命令133c、検証命令134c、ロード命令135c及びジャンプ命令136cは、この順序で実行される。 As an example, the initialization code 130c includes an initialization instruction 132c, a setting instruction 133c, a verification instruction 134c, a load instruction 135c, and a jump instruction 136c, as shown in FIG. In the initialization code 130c, the initialization instruction 132c, the setting instruction 133c, the verification instruction 134c, the load instruction 135c, and the jump instruction 136c are arranged in this order. Accordingly, the initialization instruction 132c, the setting instruction 133c, the verification instruction 134c, the load instruction 135c, and the jump instruction 136c are executed in this order.
 初期化命令132cは、ハードウェアの初期化を実行することを指示する命令である。 The initialization instruction 132c is an instruction for instructing execution of hardware initialization.
 設定命令133cは、RAM103cのメモリ部109cにセキュア領域を設定することを指示する命令である。設定命令133cは、具体的には、RAM103cのアクセス制限部108c(後述する)が有する専用レジスタ112c(後述する)に、先頭アドレス、末尾アドレス及び識別情報を設定する。先頭アドレス及び末尾アドレスは、セキュア領域の先頭アドレス及び末尾アドレスを示す。また、識別情報は、CPU、デバイス、OS又アプリケーションプログラムなどを識別する識別子である。これらのCPU、デバイス、OS又アプリケーションプログラムなどのみが、設定されたセキュア領域へのアクセスを許可される。 The setting command 133c is a command for instructing to set a secure area in the memory unit 109c of the RAM 103c. Specifically, the setting instruction 133c sets a head address, a tail address, and identification information in a dedicated register 112c (described later) included in the access restriction unit 108c (described later) of the RAM 103c. The start address and end address indicate the start address and end address of the secure area. The identification information is an identifier for identifying a CPU, device, OS, application program, and the like. Only these CPU, device, OS, and application program are permitted to access the set secure area.
 検証命令134cは、暗号エンジン106に対して、記憶部104に記憶されている仮想計算機制御コード141を検証するように指示する命令を含む。また、暗号エンジン106から検証結果を受け取る命令を含む。さらに、検証結果が失敗を示す場合、言い換えると、仮想計算機制御コード141が改ざんされたことを示す場合、情報処理装置100cの起動を停止するよう指示する命令を含んでいる。 The verification command 134c includes a command for instructing the cryptographic engine 106 to verify the virtual machine control code 141 stored in the storage unit 104. It also includes an instruction for receiving a verification result from the cryptographic engine 106. Further, when the verification result indicates failure, in other words, when the virtual machine control code 141 indicates falsification, the instruction includes an instruction to stop the activation of the information processing apparatus 100c.
 ロード命令135cは、仮想計算機制御コード141の検証が成功した場合に、仮想計算機制御コード141をセキュア領域111cにロードすることを指示する命令である。CPU101cにより、ロード命令135cが実行されると、図11に示すように、セキュア領域111cに仮想計算機制御コード141がロードされる。 The load instruction 135c is an instruction that instructs to load the virtual machine control code 141 into the secure area 111c when the verification of the virtual machine control code 141 is successful. When the load instruction 135c is executed by the CPU 101c, the virtual machine control code 141 is loaded into the secure area 111c as shown in FIG.
 ジャンプ命令136cは、仮想計算機制御コード141のセキュア領域111cへのロードが完了した後に、セキュア領域111cに記憶されている仮想計算機制御コード141へのジャンプを指示する命令である。CPU101cにより、ジャンプ命令136cが実行されると、図11に示すように、初期化コード130cから仮想計算機制御コード141にジャンプする。仮想計算機制御コード141にジャンプした後、仮想計算機制御コード141の先頭から実行が開始される。 The jump instruction 136c is an instruction for instructing a jump to the virtual machine control code 141 stored in the secure area 111c after the loading of the virtual machine control code 141 to the secure area 111c is completed. When the CPU 101c executes a jump instruction 136c, the CPU 101c jumps from the initialization code 130c to the virtual machine control code 141 as shown in FIG. After jumping to the virtual machine control code 141, execution is started from the head of the virtual machine control code 141.
 (仮想計算機制御コード141)
 仮想計算機制御コード141については、上述した通りである。
(Virtual machine control code 141)
The virtual machine control code 141 is as described above.
 (2)RAM103b及びRAM103c
 RAM103bは、情報処理装置100bが有するRAM103bと同一の構成を有している。そのため、ここでは、説明を省略する。
(2) RAM 103b and RAM 103c
The RAM 103b has the same configuration as the RAM 103b included in the information processing apparatus 100b. Therefore, description is abbreviate | omitted here.
 また、RAM103cは、RAM103bと同様の構成を有している。 The RAM 103c has the same configuration as the RAM 103b.
 RAM103cは、アクセス制限部108cとメモリ部109cとを含む。メモリ部109cは、データを記憶するためのメモリ領域を含む。メモリ領域には、セキュア領域111cが設定される。メモリ部109cにおいて、セキュア領域111cに設定されていない領域が通常領域110cである。 The RAM 103c includes an access restriction unit 108c and a memory unit 109c. The memory unit 109c includes a memory area for storing data. A secure area 111c is set in the memory area. In the memory unit 109c, an area that is not set as the secure area 111c is the normal area 110c.
 アクセス制限部108cは、専用レジスタ112cを有する。専用レジスタ112cには、セキュア領域情報116cが設定される。セキュア領域情報116cは、先頭アドレス113c、末尾アドレス114c及び識別情報115cを含む。 The access restriction unit 108c has a dedicated register 112c. Secure area information 116c is set in the dedicated register 112c. The secure area information 116c includes a head address 113c, a tail address 114c, and identification information 115c.
 アクセス制限部108cは、専用レジスタ112cにセキュア領域情報116cが設定されている場合に、識別情報115cにより識別されるCPU、デバイス、OS又はアプリケーションプログラムに対してのみ、セキュア領域111cへのアクセスを許可する。他のCPU、他のデバイス、他のOS又他のアプリケーションプログラムに対しては、セキュア領域111cへのアクセスを禁止する。 When the secure area information 116c is set in the dedicated register 112c, the access restriction unit 108c permits access to the secure area 111c only for the CPU, device, OS, or application program identified by the identification information 115c. To do. Access to the secure area 111c is prohibited for other CPUs, other devices, other OSs, and other application programs.
 4.3 セキュアブートの動作
 情報処理装置100cにおけるセキュアブートの動作について、図12に示すフローチャートを用いて説明する。
4.3 Secure Boot Operation The secure boot operation in the information processing apparatus 100c will be described with reference to the flowchart shown in FIG.
 情報処理装置100cの電源スイッチがONに投入されると、CPU101は、ROM102に記憶されているブートコード121cの実行を開始する(ステップS301)。 When the power switch of the information processing apparatus 100c is turned on, the CPU 101 starts executing the boot code 121c stored in the ROM 102 (step S301).
 次に、CPU101は、ブートコード121cに含まれている設定命令127に従って動作する。これにより、アクセス制限部108bが有する専用レジスタ112bに、セキュア領域111bの先頭アドレス、末尾アドレス及び識別情報を設定する(ステップS302)。こうして、RAM103bにおいて、セキュア領域111bが設定される。セキュア領域111bには、識別情報により識別されるセキュアOS、セキュアアプリ等のみがアクセス可能である。他のOS、他のアプリに対して、セキュア領域111bへのアクセスが禁止される。 Next, the CPU 101 operates in accordance with the setting instruction 127 included in the boot code 121c. As a result, the start address, end address, and identification information of the secure area 111b are set in the dedicated register 112b of the access restriction unit 108b (step S302). Thus, the secure area 111b is set in the RAM 103b. Only the secure OS, secure application, etc. identified by the identification information are accessible to the secure area 111b. Access to the secure area 111b is prohibited for other OSs and other applications.
 次に、ブートコード121cに含まれている検証命令126cに従って動作する。これにより、CPU101は、暗号エンジン106に対して、記憶部104に記憶されている暗号化初期化コード131cを検証するように、制御する(ステップS303)。ここで、暗号エンジン106は、暗号化初期化コード131cに対する期待ハッシュ値を記憶している。暗号エンジン106は、暗号化初期化コード131cから算出した演算ハッシュ値と期待ハッシュ値とを比較することにより検証する。 Next, it operates according to the verification instruction 126c included in the boot code 121c. Thereby, the CPU 101 controls the cryptographic engine 106 to verify the encrypted initialization code 131c stored in the storage unit 104 (step S303). Here, the cryptographic engine 106 stores an expected hash value for the encrypted initialization code 131c. The cryptographic engine 106 verifies the operational hash value calculated from the encrypted initialization code 131c by comparing it with the expected hash value.
 暗号化初期化コード131cが正しくない場合(ステップS304で「N」)、情報処理装置100cは、ブートを停止し(ステップS316)、処理を終了する。 If the encrypted initialization code 131c is not correct ("N" in step S304), the information processing apparatus 100c stops booting (step S316) and ends the process.
 暗号化初期化コード131cが正しい場合(ステップS304で「Y」)、CPU101は、ブートコード121cに含まれている復号命令128に従って動作する。これにより、CPU101は、暗号エンジン106に対して、暗号化初期化コード131cを復号するように指示する。暗号エンジン106は、復号アルゴリズムDにより、暗号鍵Skeyを用いて、暗号化初期化コード131cを復号する。これにより、暗号エンジン106は、初期化コード130cを生成する(ステップS305)。 If the encrypted initialization code 131c is correct (“Y” in step S304), the CPU 101 operates in accordance with the decryption instruction 128 included in the boot code 121c. As a result, the CPU 101 instructs the cryptographic engine 106 to decrypt the encrypted initialization code 131c. The cryptographic engine 106 decrypts the encrypted initialization code 131c using the encryption key Sky by the decryption algorithm D. Thereby, the cryptographic engine 106 generates the initialization code 130c (step S305).
 次に、CPU101は、ブートコード121cに含まれているロード命令124cに従って動作する。これにより、CPU101は、生成された初期化コード130cをRAM103bのセキュア領域111bにロードする(ステップS306)。 Next, the CPU 101 operates according to the load instruction 124c included in the boot code 121c. As a result, the CPU 101 loads the generated initialization code 130c into the secure area 111b of the RAM 103b (step S306).
 次に、CPU101は、ブートコード121cに含まれているジャンプ命令125cに従って動作する。これにより、CPU101は、RAM103bのセキュア領域111bに記憶されている初期化コード130cにジャンプする(ステップS307)。 Next, the CPU 101 operates according to the jump instruction 125c included in the boot code 121c. Thus, the CPU 101 jumps to the initialization code 130c stored in the secure area 111b of the RAM 103b (step S307).
 次に、CPU101は、初期化コード130cに含まれる初期化命令132cを実行する。これにより、ハードウェアの初期化を実行する(ステップS308)。 Next, the CPU 101 executes the initialization instruction 132c included in the initialization code 130c. Thereby, initialization of hardware is executed (step S308).
 次に、CPU101は、初期化コード130cに含まれている設定命令133cに従って動作する。これにより、CPU101は、RAM103cのアクセス制限部108cが有する専用レジスタ112cに、セキュア領域111cの先頭アドレス、末尾アドレス及び識別情報を設定する(ステップS309)。これにより、RAM103cにおいて、セキュア領域111cが設定される。セキュア領域111cには、識別情報により識別されるセキュアOS、セキュアアプリ等のみがアクセス可能である。他のOS、他のアプリに対して、セキュア領域111cへのアクセスが禁止される。 Next, the CPU 101 operates in accordance with the setting instruction 133c included in the initialization code 130c. Thereby, the CPU 101 sets the start address, end address, and identification information of the secure area 111c in the dedicated register 112c included in the access restriction unit 108c of the RAM 103c (step S309). As a result, the secure area 111c is set in the RAM 103c. Only the secure OS, secure application, etc. identified by the identification information are accessible to the secure area 111c. Access to the secure area 111c is prohibited for other OSs and other applications.
 次に、CPU101は、初期化コード130cに含まれている検証命令134cに従って動作する。これにより、CPU101は、暗号エンジン106に対して、記憶部104に記憶されている仮想計算機制御コード141を検証するように、制御する(ステップS310)。ここで、暗号エンジン106は、仮想計算機制御コード141に対する期待ハッシュ値を記憶している。暗号エンジン106は、仮想計算機制御コード141から算出した演算ハッシュ値と期待ハッシュ値とを比較することにより検証する。 Next, the CPU 101 operates according to the verification instruction 134c included in the initialization code 130c. As a result, the CPU 101 controls the cryptographic engine 106 to verify the virtual machine control code 141 stored in the storage unit 104 (step S310). Here, the cryptographic engine 106 stores an expected hash value for the virtual machine control code 141. The cryptographic engine 106 verifies the cryptographic hash value calculated from the virtual machine control code 141 by comparing it with the expected hash value.
 仮想計算機制御コード141が正しくない場合(ステップS311で「N」)、情報処理装置100cは、ブートを停止し(ステップS316)、処理を終了する。 If the virtual machine control code 141 is not correct (“N” in step S311), the information processing apparatus 100c stops booting (step S316) and ends the process.
 仮想計算機制御コード141が正しい場合(ステップS311で「Y」)、CPU101は、CPU101cに制御を移す(ステップS312)。 If the virtual machine control code 141 is correct (“Y” in step S311), the CPU 101 transfers control to the CPU 101c (step S312).
 次に、CPU101cは、初期化コード130cに含まれているロード命令135cに従って動作する。これにより、CPU101cは、仮想計算機制御コード141をRAM103cのセキュア領域111cにロードする(ステップS313)。 Next, the CPU 101c operates according to the load instruction 135c included in the initialization code 130c. As a result, the CPU 101c loads the virtual machine control code 141 into the secure area 111c of the RAM 103c (step S313).
 次に、CPU101cは、初期化コード130cに含まれているジャンプ命令136cに従って動作する。これにより、CPU101cは、RAM103cのセキュア領域111cに記憶されている仮想計算機制御コード141にジャンプする(ステップS314)。 Next, the CPU 101c operates according to the jump instruction 136c included in the initialization code 130c. Thereby, the CPU 101c jumps to the virtual machine control code 141 stored in the secure area 111c of the RAM 103c (step S314).
 次に、CPU101cは、仮想計算機制御コード141を実行する(ステップS315)。 Next, the CPU 101c executes the virtual machine control code 141 (step S315).
 情報処理装置100cは、引き続き、処理を実行する。 The information processing apparatus 100c continues processing.
 4.4 まとめ
 (1)以上説明したように、情報処理装置100cのCPU101は、必ずROM102上のブートコード121cから起動する。ROM102に記録されたデータを書き換えることはできないので、ROM102上のブートコード121cは、改ざんされることはない。
4.4 Summary (1) As described above, the CPU 101 of the information processing apparatus 100 c is always started from the boot code 121 c on the ROM 102. Since the data recorded in the ROM 102 cannot be rewritten, the boot code 121c on the ROM 102 is not falsified.
 このため、ブートコード121cの完全性が担保されている。こうして、悪意のある攻撃者などによる意図されたブートコード121cの改ざんを困難にしている。 Therefore, the integrity of the boot code 121c is ensured. This makes it difficult for a malicious attacker or the like to alter the intended boot code 121c.
 (2)ブートコード121cは、検証命令126cを含んでいる。上記のように、ブートコード121cの改ざんは困難であるので、検証命令126cについても、改ざんが困難である。従って、検証命令126cは、信頼できるものである。 (2) The boot code 121c includes a verification instruction 126c. As described above, since it is difficult to falsify the boot code 121c, it is also difficult to falsify the verification instruction 126c. Therefore, the verification instruction 126c is reliable.
 検証命令126cは、ハードウェアである暗号エンジン106に、暗号化初期化コード131cの検証をさせる。暗号エンジン106は、ハードウェアであるので改ざんされることはない。従って、暗号エンジン106による検証は、信頼できるものである。 The verification instruction 126c causes the cryptographic engine 106, which is hardware, to verify the encrypted initialization code 131c. Since the cryptographic engine 106 is hardware, it is not tampered with. Therefore, the verification by the cryptographic engine 106 is reliable.
 暗号エンジン106は、暗号化初期化コード131cが改ざんされているか否かを検証する。暗号化初期化コード131cの検証に失敗した場合、つまり、暗号化初期化コード131cの改ざんが検出された場合には、ブートが停止される。一方、暗号化初期化コード131cの検証に成功した場合、暗号化初期化コード131cが復号され、初期化コード130cがRAM103のセキュア領域111bにロードされ、初期化コード130cが実行される。 The cryptographic engine 106 verifies whether or not the encrypted initialization code 131c has been tampered with. If verification of the encrypted initialization code 131c fails, that is, if alteration of the encrypted initialization code 131c is detected, booting is stopped. On the other hand, when the verification of the encrypted initialization code 131c is successful, the encrypted initialization code 131c is decrypted, the initialization code 130c is loaded into the secure area 111b of the RAM 103, and the initialization code 130c is executed.
 以上のように、暗号化初期化コード131cが改ざんされている場合には、ブートが停止する。一方、暗号化初期化コード131cが改ざんされていない場合に限り、初期化コード130cがRAM103bのセキュア領域111bにロードされ、初期化コード130cが実行される。 As described above, booting stops when the encryption initialization code 131c has been tampered with. On the other hand, only when the encrypted initialization code 131c has not been tampered with, the initialization code 130c is loaded into the secure area 111b of the RAM 103b, and the initialization code 130c is executed.
 こうして、情報処理装置100cは、ハードウェアの初期化の段階において、信頼できる安全な環境を提供することができる。 In this way, the information processing apparatus 100c can provide a reliable and safe environment at the stage of hardware initialization.
 また、初期化コード130cは、RAM103のセキュア領域111bにロードされるので、初期化コード130cに対する悪意のある攻撃者による改ざんを困難にすることができる。 Also, since the initialization code 130c is loaded into the secure area 111b of the RAM 103, it is possible to make it difficult for a malicious attacker to falsify the initialization code 130c.
 (3)初期化コード130cは、検証命令134cを含んでいる。上記のように、暗号化初期化コード131cが改ざんされていないと判断される場合、初期化コード130cも検証命令134cも改ざんされていない。従って、検証命令134cは、信頼できるものである。 (3) The initialization code 130c includes a verification instruction 134c. As described above, when it is determined that the encrypted initialization code 131c has not been tampered with, neither the initialization code 130c nor the verification instruction 134c has been tampered with. Therefore, the verification instruction 134c is reliable.
 検証命令134cは、ハードウェアである暗号エンジン106に、仮想計算機制御コード141の検証をさせる。暗号エンジン106は、ハードウェアであるので改ざんされることはない。従って、暗号エンジン106による検証は、信頼できるものである。 The verification instruction 134c causes the cryptographic engine 106, which is hardware, to verify the virtual machine control code 141. Since the cryptographic engine 106 is hardware, it is not tampered with. Therefore, the verification by the cryptographic engine 106 is reliable.
 暗号エンジン106は、仮想計算機制御コード141が改ざんされているか否かを検証する。仮想計算機制御コード141の検証に失敗した場合、つまり、仮想計算機制御コード141の改ざんが検出された場合には、ブートが停止される。一方、仮想計算機制御コード141の検証に成功した場合、仮想計算機制御コード141がRAM103cのセキュア領域111cにロードされ、仮想計算機制御コード141が実行される。 The cryptographic engine 106 verifies whether or not the virtual machine control code 141 has been tampered with. If verification of the virtual machine control code 141 fails, that is, if alteration of the virtual machine control code 141 is detected, booting is stopped. On the other hand, when the verification of the virtual machine control code 141 is successful, the virtual machine control code 141 is loaded into the secure area 111c of the RAM 103c, and the virtual machine control code 141 is executed.
 以上のように、仮想計算機制御コード141が改ざんされている場合には、ブートが停止する。一方、仮想計算機制御コード141が改ざんされていない場合に限り、仮想計算機制御コード141がRAM103cのセキュア領域111cにロードされ、仮想計算機制御コード141が実行される。 As described above, booting stops when the virtual machine control code 141 has been tampered with. On the other hand, only when the virtual machine control code 141 has not been tampered with, the virtual machine control code 141 is loaded into the secure area 111c of the RAM 103c, and the virtual machine control code 141 is executed.
 こうして、情報処理装置100cは、セキュアモードにおいて、仮想計算機制御コード141が実行される場合において、信頼できる安全な環境を提供することができる。 In this way, the information processing apparatus 100c can provide a reliable and safe environment when the virtual machine control code 141 is executed in the secure mode.
 また、仮想計算機制御コード141は、RAM103cのセキュア領域111cにロードされるので、仮想計算機制御コード141に対する悪意のある攻撃者による改ざんを困難にすることができる。 Further, since the virtual machine control code 141 is loaded into the secure area 111c of the RAM 103c, it is possible to make it difficult for a malicious attacker to tamper with the virtual machine control code 141.
 (4)記憶部104は、暗号化初期化コード131cを記憶しているので、初期化コードの秘匿性が確保されている。これにより、悪意のある攻撃者による初期化コードの解析を困難にしている。 (4) Since the storage unit 104 stores the encrypted initialization code 131c, the confidentiality of the initialization code is ensured. This makes it difficult for a malicious attacker to analyze the initialization code.
 5.その他の変形例
 なお、本発明を上記の各実施の形態に基づいて説明してきたが、本発明は、上記の各実施の形態に限定されないのはもちろんである。以下のような場合も本発明に含まれる。
5. Other Modifications Although the present invention has been described based on the above-described embodiments, it is needless to say that the present invention is not limited to the above-described embodiments. The following cases are also included in the present invention.
 (1)情報処理装置100aにおいて、暗号化初期化コード131が改ざんされているか否かを検証するために、ハッシュ演算を利用している。しかし、これには限定されない。 (1) In the information processing apparatus 100a, a hash operation is used to verify whether or not the encrypted initialization code 131 has been tampered with. However, it is not limited to this.
 例えば、デジタル署名など、コードの完全性を検証する方法を用いてもよい。 For example, a method of verifying the integrity of the code such as a digital signature may be used.
 具体的には、記憶部104は、暗号化初期化コード131に対応付けて、さらに、署名データを記憶していてもよい。署名データは、暗号化初期化コード131にデジタル署名を施して生成したものである。 Specifically, the storage unit 104 may further store signature data in association with the encryption initialization code 131. The signature data is generated by applying a digital signature to the encryption initialization code 131.
 ブートコード121は、検証プログラム122に代えて、署名検証を行うための検証プログラムを含んでいる。 The boot code 121 includes a verification program for performing signature verification instead of the verification program 122.
 署名検証を行うための検証プログラムは、記憶部104から暗号化初期化コード131及び署名データを読み出す命令を含む。また、暗号化初期化コード131及び署名データを用いて、署名検証を行う命令を含む。さらに、署名検証に成功した場合に、成功の旨を示す検証結果を出力する命令を含む。また、署名検証に失敗した場合に、失敗の旨を示す検証結果を出力し、ブートを停止する命令を含む。 The verification program for performing signature verification includes an instruction to read the encryption initialization code 131 and the signature data from the storage unit 104. Further, it includes an instruction for performing signature verification using the encryption initialization code 131 and the signature data. Further, it includes an instruction for outputting a verification result indicating success when signature verification is successful. In addition, when signature verification fails, a verification result indicating failure is output and a command to stop booting is included.
 署名検証を行うための検証プログラムに従って、CPU101が動作する。これにより、CPU101は、記憶部104から暗号化初期化コード131及び署名データを読み出す。次に、暗号化初期化コード131及び署名データを用いて、署名検証を行う。次に、署名検証に成功した場合に、成功の旨を示す検証結果を出力する。一方、署名検証に失敗した場合に、失敗の旨を示す検証結果を出力し、ブートを停止する。 The CPU 101 operates in accordance with a verification program for performing signature verification. As a result, the CPU 101 reads out the encryption initialization code 131 and the signature data from the storage unit 104. Next, signature verification is performed using the encryption initialization code 131 and signature data. Next, when the signature verification is successful, a verification result indicating the success is output. On the other hand, when signature verification fails, a verification result indicating failure is output and booting is stopped.
 (2)情報処理装置100aにおいて、暗号化初期化コード131を検証している。しかし、これには限定されない。 (2) The encryption initialization code 131 is verified in the information processing apparatus 100a. However, it is not limited to this.
 ブートコード121は、検証プログラム122に代えて、初期化コード130の検証を行うための検証プログラムを含んでいるとしてもよい。ブートコード121において、初期化コード130の検証を行うための検証プログラムは、復号プログラム123の次に配置されている。 The boot code 121 may include a verification program for verifying the initialization code 130 instead of the verification program 122. In the boot code 121, a verification program for verifying the initialization code 130 is arranged next to the decryption program 123.
 ブートコード121は、期待ハッシュ値をあらかじめ記憶している。期待ハッシュ値は、改ざんされていない初期化コード130に対して、ハッシュ演算Hを施して、生成されたものである。 The boot code 121 stores an expected hash value in advance. The expected hash value is generated by performing a hash operation H on the initialization code 130 that has not been tampered with.
 初期化コード130の検証を行うための検証プログラムは、生成された初期化コード130に対してハッシュ演算を施して、演算ハッシュ値を算出する命令を含む。また、記憶している期待ハッシュ値と算出した演算ハッシュ値とを比較する命令を含む。さらに、期待ハッシュ値と演算ハッシュ値とが一致すれば、検証に成功し、初期化コード130が正しいとみなす命令を含む。一方、期待ハッシュ値と演算ハッシュ値とが一致しなければ、検証に失敗し、初期化コード130が不正に改ざんされたとみなし、ブートを停止する命令を含む。 The verification program for verifying the initialization code 130 includes an instruction for performing a hash operation on the generated initialization code 130 and calculating an operation hash value. Also, an instruction for comparing the stored expected hash value with the calculated operation hash value is included. Furthermore, if the expected hash value and the calculated hash value match, the verification is successful, and an instruction that the initialization code 130 is regarded as correct is included. On the other hand, if the expected hash value and the calculated hash value do not match, the verification fails, the initialization code 130 is regarded as being tampered with, and an instruction to stop booting is included.
 復号プログラム123に従って、CPU101が動作する。これにより、CPU101は、暗号化初期化コード131を復号し、初期化コード130を生成する。 The CPU 101 operates according to the decryption program 123. As a result, the CPU 101 decrypts the encrypted initialization code 131 and generates the initialization code 130.
 次に、初期化コード130の検証を行うための検証プログラムに従って、CPU101が動作する。これにより、生成した初期化コード130の検証を行う。具体的には、CPU101は、生成された初期化コード130に対してハッシュ演算を施して、演算ハッシュ値を算出する。次に、記憶している期待ハッシュ値と算出した演算ハッシュ値とを比較する。次に、期待ハッシュ値と演算ハッシュ値とが一致すれば、検証に成功し、初期化コード130が正しいとみなす。一方、期待ハッシュ値と演算ハッシュ値とが一致しなければ、検証に失敗し、初期化コード130が不正に改ざんされたとみなし、ブートを停止する。 Next, the CPU 101 operates in accordance with a verification program for verifying the initialization code 130. As a result, the generated initialization code 130 is verified. Specifically, the CPU 101 performs a hash operation on the generated initialization code 130 to calculate a calculation hash value. Next, the stored expected hash value is compared with the calculated operation hash value. Next, if the expected hash value matches the operation hash value, the verification is successful and the initialization code 130 is regarded as correct. On the other hand, if the expected hash value and the calculated hash value do not match, verification fails, the initialization code 130 is regarded as being tampered with, and booting is stopped.
 (3)情報処理装置100aにおいて、暗号化初期化コード131が正しくない場合は、図5のステップS108でブートを停止している。しかし、これには限定されない。 (3) In the information processing apparatus 100a, when the encrypted initialization code 131 is not correct, the boot is stopped in step S108 in FIG. However, it is not limited to this.
 ブートを停止しなくてもよい。 It is not necessary to stop booting.
 また、ブートを停止した後、再び、ブートしてもよい。 Also, after booting is stopped, it may be booted again.
 また、暗号化初期化コード131が正しくないことが検出された場合、暗号化初期化コード131が正しくないことを示すフラグを、CPU101が有するレジスタに設定してもよい。情報処理装置100aは、ブートが完了した後に、レジスタを参照し、レジスタに暗号化初期化コード131が正しくないことを示すフラグが設定されている場合、システムを停止する。 Further, when it is detected that the encryption initialization code 131 is incorrect, a flag indicating that the encryption initialization code 131 is incorrect may be set in a register of the CPU 101. The information processing apparatus 100a refers to the register after the boot is completed, and stops the system when a flag indicating that the encrypted initialization code 131 is incorrect is set in the register.
 (4)情報処理装置100aにおいて、秘密鍵暗号方式の具体例として、AESを用いているが、これには限定されない。AESに代えて、FEAL(Fast Data Encipherment Algorithm)やMISTYを用いるとしてもよい。また、公開鍵暗号方式を用いるとしてもよい。 (4) In the information processing apparatus 100a, AES is used as a specific example of the secret key cryptosystem, but is not limited thereto. Instead of AES, FEAL (Fast Data Encipherment Algorithm) or MISTY may be used. A public key cryptosystem may be used.
 (5)情報処理装置100bにおいて、記憶部104上に記憶されている初期化コード130b及び仮想計算機制御コード141は、それぞれ、暗号化されていてもよい。この場合、その場合、情報処理装置100bの場合と同様に、復号処理が行われる。 (5) In the information processing apparatus 100b, the initialization code 130b and the virtual machine control code 141 stored on the storage unit 104 may each be encrypted. In this case, in this case, the decoding process is performed as in the case of the information processing apparatus 100b.
 (6)情報処理装置100bにおいて、暗号エンジン106がハッシュ検証や暗号処理を行うとしている。しかし、これには限定されない。 (6) In the information processing apparatus 100b, the cryptographic engine 106 performs hash verification and cryptographic processing. However, it is not limited to this.
 ブートコード121b及び初期化コード130bは、ハッシュ検証用のコンピュータプログラム及び暗号処理用のコンピュータプログラムを含んでいるとしてもよい。この場合、暗号エンジン106による実行に代えて、ブートコード121b及び初期化コード130bにそれぞれ含まれるハッシュ検証用のコンピュータプログラム及び暗号処理用のコンピュータプログラムが実行される。 The boot code 121b and the initialization code 130b may include a computer program for hash verification and a computer program for cryptographic processing. In this case, instead of being executed by the cryptographic engine 106, a computer program for hash verification and a computer program for cryptographic processing included in the boot code 121b and the initialization code 130b, respectively, are executed.
 (7)情報処理装置100bにおいて、暗号エンジン106は、改ざんされていない初期化コード130bにハッシュ演算Hを施して生成された期待ハッシュ値を記憶している。また、改ざんされていない仮想計算機制御コード141にハッシュ演算Hを施して生成された期待ハッシュ値を記憶している。しかし、これには限定されない。 (7) In the information processing apparatus 100b, the cryptographic engine 106 stores the expected hash value generated by performing the hash operation H on the initialization code 130b that has not been tampered with. Further, an expected hash value generated by applying a hash operation H to the virtual machine control code 141 that has not been tampered with is stored. However, it is not limited to this.
 記憶部104が初期化コード130b及び仮想計算機制御コード141のそれぞれの期待ハッシュ値を記憶しているとしてもよい。 The storage unit 104 may store the expected hash values of the initialization code 130b and the virtual machine control code 141.
 この場合、各期待ハッシュ値は、暗号化されているとしてもよい。 In this case, each expected hash value may be encrypted.
 また、各期待ハッシュ値に対して、デジタル署名を施して、署名データが生成されるとしてもよい。記憶部104は、期待ハッシュ値とともに、生成された署名データを記憶している。この場合、暗号エンジン106は、期待ハッシュ値及び署名データを用いて、デジタル署名の検証を行う。検証に成功した場合に、期待ハッシュ値を用いる。検証に失敗した場合に、期待ハッシュ値を用いることなく、初期化コード130b及び仮想計算機制御コード141の検証が失敗したものとし、ブートを停止する。 Also, a digital signature may be applied to each expected hash value to generate signature data. The storage unit 104 stores the generated signature data together with the expected hash value. In this case, the cryptographic engine 106 verifies the digital signature using the expected hash value and signature data. When verification is successful, the expected hash value is used. If the verification fails, it is assumed that the verification of the initialization code 130b and the virtual machine control code 141 has failed without using the expected hash value, and the boot is stopped.
 (8)情報処理装置100bにおいて、RAM103bは、アクセス制限部108bを備えているとしている。しかし、これには限定されない。アクセス制限部108bをRAM103bから独立させ、別の構成としてもよい。言い換えると、情報処理装置100bは、RAM103bに代えて、情報処理装置100aのRAM103と情報処理装置100bのアクセス制限部108bとを含むとしてもよい。 (8) In the information processing apparatus 100b, the RAM 103b is assumed to include the access restriction unit 108b. However, it is not limited to this. The access restriction unit 108b may be independent from the RAM 103b and may have a different configuration. In other words, the information processing apparatus 100b may include the RAM 103 of the information processing apparatus 100a and the access restriction unit 108b of the information processing apparatus 100b instead of the RAM 103b.
 また、アクセス制限部108bにおいては、専用レジスタ112bに先頭アドレス113b及び末尾アドレス114bを設定することにより、セキュア領域111bを設定している。しかし、これには限定されない。専用レジスタ112bには、セキュア領域111bの先頭アドレスと、セキュア領域111bのサイズとが設定されるとしてもよい。このように、セキュア領域111bの位置及びサイズを指定できるパラメータであれば、何であってもよい。 In the access restriction unit 108b, the secure area 111b is set by setting the start address 113b and the end address 114b in the dedicated register 112b. However, it is not limited to this. In the dedicated register 112b, the start address of the secure area 111b and the size of the secure area 111b may be set. In this way, any parameter can be used as long as it can specify the position and size of the secure area 111b.
 (9)情報処理装置100bにおいて、RAM103bのセキュア領域111bの設定は、仮想計算機制御コード141をロードする前であれば、いつ行ってもよい。図9に示すフローチャートにおいて、ステップS201の後であって、ステップS210の前に行えばよい。 (9) In the information processing apparatus 100b, the setting of the secure area 111b of the RAM 103b may be performed at any time before the virtual machine control code 141 is loaded. In the flowchart shown in FIG. 9, the process may be performed after step S201 and before step S210.
 (10)情報処理装置100cによると、記憶部104は、暗号化されていない仮想計算機制御コード141を記憶している。しかし、これには限定されない。 (10) According to the information processing apparatus 100c, the storage unit 104 stores an unencrypted virtual computer control code 141. However, it is not limited to this.
 記憶部104は、暗号化された仮想計算機制御コードを記憶しているとしてもよい。この場合、初期化コード130cは、さらに、復号命令を含む。復号命令は、暗号化された仮想計算機制御コードを復号するように、暗号エンジン106に指示する命令である。初期化コード130cに含まれる復号命令が実行されると、暗号エンジン106は、暗号化された仮想計算機制御コードを復号する。これにより、仮想計算機制御コードが生成される。生成された仮想計算機制御コードは、上述したように、セキュア領域111cにロードされ、セキュア領域111cに記憶されている仮想計算機制御コードが実行される。 The storage unit 104 may store an encrypted virtual machine control code. In this case, the initialization code 130c further includes a decoding instruction. The decryption instruction is an instruction that instructs the cryptographic engine 106 to decrypt the encrypted virtual machine control code. When the decryption instruction included in the initialization code 130c is executed, the cryptographic engine 106 decrypts the encrypted virtual machine control code. Thereby, a virtual machine control code is generated. As described above, the generated virtual machine control code is loaded into the secure area 111c, and the virtual machine control code stored in the secure area 111c is executed.
 (11)情報処理装置100cにおいて、図11に示すように、RAM103bに設定されたセキュア領域111bに、初期化コード130cがロードされる。また、RAM103cに設定されたセキュア領域111cに、仮想計算機制御コード141がロードされる。しかし、これには限定されない。 (11) In the information processing apparatus 100c, as shown in FIG. 11, the initialization code 130c is loaded into the secure area 111b set in the RAM 103b. Further, the virtual machine control code 141 is loaded into the secure area 111c set in the RAM 103c. However, it is not limited to this.
 RAM103bのアクセス制限部108bは、図13に示すように、専用レジスタ112dを有しているとしてもよい。専用レジスタ112dには、セキュア領域情報116b及び116dが設定されている。セキュア領域情報116bは、先頭アドレス113b、末尾アドレス114b及び識別情報115bを含む。また、セキュア領域情報116dは、先頭アドレス113d、末尾アドレス114d及び識別情報115dを含む。セキュア領域情報116b及び116dは、ブートコード121cに含まれる設定命令が実行されることにより設定されるとしてもよい。 The access restriction unit 108b of the RAM 103b may have a dedicated register 112d as shown in FIG. Secure area information 116b and 116d are set in the dedicated register 112d. The secure area information 116b includes a head address 113b, a tail address 114b, and identification information 115b. The secure area information 116d includes a head address 113d, a tail address 114d, and identification information 115d. The secure area information 116b and 116d may be set by executing a setting command included in the boot code 121c.
 ここで、先頭アドレス113b及び末尾アドレス114bは、メモリ部109bに設定されるセキュア領域111bの先頭アドレス及び末尾アドレスである。また、識別情報115bは、セキュア領域111bに対してアクセスが許可されるセキュアOSやセキュアアプリを識別する識別子である。 Here, the start address 113b and the end address 114b are the start address and the end address of the secure area 111b set in the memory unit 109b. The identification information 115b is an identifier for identifying a secure OS or a secure application that is permitted to access the secure area 111b.
 また、先頭アドレス113d及び末尾アドレス114dは、メモリ部109bに設定されるセキュア領域111dの先頭アドレス及び末尾アドレスである。また、識別情報115dは、セキュア領域111dに対してアクセスが許可されるセキュアOSやセキュアアプリを識別する識別子である。 In addition, the start address 113d and the end address 114d are the start address and the end address of the secure area 111d set in the memory unit 109b. The identification information 115d is an identifier for identifying a secure OS or a secure application that is permitted to access the secure area 111d.
 このように、専用レジスタ112dにおいて、セキュア領域情報116b及び116dが設定されるとしてもよい。こうして、RAM103bのメモリ部109bには、図13に示すように、セキュア領域111b及びセキュア領域111dが設定される。 As described above, the secure area information 116b and 116d may be set in the dedicated register 112d. Thus, the secure area 111b and the secure area 111d are set in the memory unit 109b of the RAM 103b as shown in FIG.
 この場合に、セキュア領域111bには、初期化コード130がロードされるとしてもよい。また、セキュア領域111dには、仮想計算機制御コード141がロードされるとしてもよい。 In this case, the initialization code 130 may be loaded in the secure area 111b. Further, the virtual machine control code 141 may be loaded in the secure area 111d.
 (12)情報処理装置100cにおいて、図12に示すように、ステップS312において、CPU101がCPU101cに制御を移している。しかし、これには限定されない。 (12) In the information processing apparatus 100c, as shown in FIG. 12, in step S312, the CPU 101 transfers control to the CPU 101c. However, it is not limited to this.
 CPU101からCPU101cに制御を移すタイミングは、いつであってもよい。     The timing to transfer control from the CPU 101 to the CPU 101c may be any time. .
 なお、CPU101cを起動するタイミングは、CPU101からCPU101cに制御を移す前であれば、いつでもよい。 Note that the timing for starting the CPU 101c may be any time as long as it is before the control is transferred from the CPU 101 to the CPU 101c.
 また、CPU101からCPU101cに制御を移さずに、CPU101が継続して処理を行うとしてもよい。 Further, the CPU 101 may continue processing without transferring control from the CPU 101 to the CPU 101c.
 また、CPU101とCPU101cとは、同一製品であってもよいし、異なった製品であってもよい。 Further, the CPU 101 and the CPU 101c may be the same product or different products.
 また、RAM103bとRAM103cとは、同一製品であってもよいし、異なった製品であってもよい。 Further, the RAM 103b and the RAM 103c may be the same product or different products.
 また、情報処理装置100cは、さらに、1個以上のCPUを含んでいるとしてもよい。 The information processing apparatus 100c may further include one or more CPUs.
 (13)情報処理装置100cにおいては、図12に示すように、ステップS302において、セキュア領域111bを設定している。しかし、これには限定されない。 (13) In the information processing apparatus 100c, as shown in FIG. 12, the secure area 111b is set in step S302. However, it is not limited to this.
 セキュア領域111bの設定は、初期化コード130cをロードする前であれば、いつ行ってもよい。例えば、図12のステップS303とS304の間に行ってもよい。また、ステップS304とS305の間に行ってもよい。また、ステップS305とS306の間に行ってもよい。 The setting of the secure area 111b may be performed at any time before the initialization code 130c is loaded. For example, it may be performed between steps S303 and S304 in FIG. Moreover, you may perform between step S304 and S305. Moreover, you may perform between step S305 and S306.
 (14)情報処理装置100cにおいては、図12に示すように、ステップS309において、セキュア領域111cを設定している。しかし、これには限定されない。 (14) In the information processing apparatus 100c, as shown in FIG. 12, the secure area 111c is set in step S309. However, it is not limited to this.
 セキュア領域111cの設定は、仮想計算機制御コード141をロードする前であれば、いつ行ってもよい。例えば、図12のステップS301とS313の間に行ってもよい。 The setting of the secure area 111c may be performed at any time before the virtual machine control code 141 is loaded. For example, it may be performed between steps S301 and S313 in FIG.
 (15)上記のコンピュータシステム及び上記の各情報処理装置の検証プログラム又は各検証命令において、各コードの検証に失敗した場合、言い換えると、各コードの改ざんを検出した場合、その旨を示すメッセージを出力してもよい。また、当該メッセージを表示してもよい。 (15) When verification of each code fails in the verification program or each verification command of the above computer system and each information processing apparatus, in other words, when alteration of each code is detected, a message indicating that is displayed. It may be output. In addition, the message may be displayed.
 (16)上記のコンピュータシステム及び上記の各情報処理装置は、具体的には、パーソナルコンピュータ、テレビジョン受像機、デジタル放送受信装置、ビデオデッキ、ハードディスクレコーダ、携帯電話機、携帯端末装置、カーナビゲーションシステム、固定電話、コピー機、タッチパネルつきモバイル端末、ゲーム機などである。 (16) Specifically, the above computer system and each of the above information processing apparatuses include a personal computer, a television receiver, a digital broadcast receiver, a video deck, a hard disk recorder, a mobile phone, a mobile terminal device, and a car navigation system. , Landline phones, copy machines, mobile terminals with touch panels, game machines, and the like.
 (17)本発明の一態様は、上記のコンピュータシステム及び上記の各情報処理装置を制御する制御方法であるとしてもよい。 (17) One embodiment of the present invention may be a control method for controlling the computer system and the information processing apparatuses.
 また、上記のコンピュータシステム及び各情報処理装置を制御するコンピュータプログラムであるとしてもよい。ここで、コンピュータプログラムは、所定の機能を達成するために、コンピュータに対する指令を示す命令コードが複数個組み合わされて構成されたものである。 Also, the present invention may be a computer program for controlling the computer system and each information processing apparatus. Here, the computer program is configured by combining a plurality of instruction codes indicating instructions for the computer in order to achieve a predetermined function.
 また、本発明の一態様は、前記コンピュータプログラムをコンピュータ読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、CD―ROM、MO、DVD、DVD-ROM、DVD-RAM、BD(Blu-ray Disc)、半導体メモリなど、に記録したものとしてもよい。また、本発明の一態様は、これらの記録媒体に記録されている前記コンピュータプログラムであるとしてもよい。 One embodiment of the present invention is a computer-readable recording medium such as a flexible disk, hard disk, CD-ROM, MO, DVD, DVD-ROM, DVD-RAM, or BD (Blu-ray Disc). It may be recorded in a semiconductor memory or the like. One embodiment of the present invention may be the computer program recorded on these recording media.
 また、本発明の一態様は、前記コンピュータプログラムを、電気通信回線、無線又は有線通信回線、インターネットを代表とするネットワーク、データ放送等を経由して伝送するものとしてもよい。 Further, according to one embodiment of the present invention, the computer program may be transmitted via an electric communication line, a wireless or wired communication line, a network represented by the Internet, data broadcasting, or the like.
 また、本発明の一態様において、前記コンピュータプログラムを前記記録媒体に記録して移送することにより、又は前記コンピュータプログラムを前記ネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしてもよい。 In one embodiment of the present invention, the computer program is recorded on the recording medium and transferred, or the computer program is transferred via the network or the like and executed by another independent computer system. You may do that.
 (18)本発明の一態様は、ROMのブートコードを実行するステップと、初期化コードを検証するステップと、初期化コードをRAMにロードするステップと、前記初期化コードにジャンプして実行するステップとを有することを特徴とする方法である。 (18) According to one aspect of the present invention, a step of executing a ROM boot code, a step of verifying an initialization code, a step of loading an initialization code into a RAM, and jumping to the initialization code for execution And a step.
 ここで、前記初期化コードにジャンプして実行するステップより後に、前記RAMのセキュア領域を設定するステップと、仮想計算機制御コードを検証するステップと、前記仮想計算機制御コードを前記RAMのセキュア領域にロードするステップと、前記仮想計算機制御コードにジャンプして実行するステップとを有するとしてもよい。 Here, after the step of jumping to the initialization code and executing, the step of setting the secure area of the RAM, the step of verifying the virtual machine control code, and the virtual machine control code in the secure area of the RAM It may have a step of loading and a step of jumping to the virtual machine control code and executing it.
 また、本発明の一態様は、ROMのブートコードを実行するステップと、RAMのセキュア領域を設定するステップと、初期化コードを検証するステップと、初期化コードを前記RAMのセキュア領域にロードするステップと、前記初期化コードにジャンプして実行するステップとを有することを特徴とする方法である。 According to another aspect of the present invention, a step of executing a ROM boot code, a step of setting a secure area of the RAM, a 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.
 ここで、前記初期化コードにジャンプして実行するステップより後に、前記RAMとは異なるRAMのセキュア領域を設定するステップと、仮想計算機制御コードを検証するステップと、前記仮想計算機制御コードを前記RAMとは異なるRAMのセキュア領域にロードするステップと、前記仮想計算機制御コードにジャンプして実行するステップとを有するとしてもよい。 Here, after the step of jumping to the initialization code and executing it, a step of setting a secure area in a RAM different from the RAM, a step of verifying a virtual computer control code, and a step of verifying the virtual computer control code in the RAM There may be a step of loading into a secure area of a RAM different from the above and a step of jumping to the virtual machine control code and executing it.
 ここで、前記初期化コードにジャンプして実行するステップより後に、仮想計算機制御コードを検証するステップと、前記仮想計算機制御コードを前記RAMのセキュア領域にロードするステップと、前記仮想計算機制御コードにジャンプして実行するステップとを有するとしてもよい。 Here, after the step of jumping to the initialization code and executing, the step of verifying the virtual machine control code, the step of loading the virtual machine control code into the secure area of the RAM, and the virtual machine control code And a step of executing by jumping.
 ここで、前記初期化コードは暗号化されており、前記初期化コードにジャンプして実行するステップより前に、前記初期化コードを復号するステップを有するとしてもよい。 Here, the initialization code is encrypted, and it may have a step of decrypting the initialization code before the step of jumping to the initialization code and executing it.
 ここで、前記仮想計算機制御コードは暗号化されており、前記仮想計算機制御コードにジャンプして実行するステップより前に、前記仮想計算機制御コードを復号するステップを有するとしてもよい。 Here, the virtual machine control code is encrypted, and it may have a step of decrypting the virtual machine control code before the step of jumping to the virtual machine control code and executing it.
 また、本発明の一態様は、ROMのブートコードを実行するステップと、初期化コードを検証するステップと、初期化コードをRAMにロードするステップと、前記初期化コードにジャンプして実行するステップとをコンピュータに実行させるためのプログラムであるとしてもよい。 According to another aspect of the present invention, 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 May be a program for causing a computer to execute.
 また、本発明の一態様は、ROMのブートコードを実行する手段と、初期化コードを検証する手段と、初期化コードをRAMにロードする手段と、前記初期化コードにジャンプして実行する手段とを有することを特徴とする集積回路であるとしてもよい。 According to another aspect of the present invention, means for executing a boot code of a ROM, means for verifying an initialization code, means for loading the initialization code into a RAM, and means for jumping to the initialization code and executing it It may be an integrated circuit characterized by having
 また、本発明の一態様は、ROMのブートコードを実行する手段と、初期化コードを検証する手段と、初期化コードをRAMにロードする手段と、前記初期化コードにジャンプして実行する手段とを有することを特徴とするシステムである。 According to another aspect of the present invention, means for executing a boot code of a ROM, means for verifying an initialization code, means for loading the initialization code into a RAM, and means for jumping to the initialization code and executing it It is a system characterized by having.
 (19)本発明の一態様は、プロセッサ、読取専用メモリ及び読み書き用メモリを含むコンピュータシステムを起動させるコンピュータ起動方法である。前記読取専用メモリの固定位置には、起動プログラムが記憶されており、前記起動プログラムは、第二プログラムを検証する命令、前記第二プログラムをロードする命令、前記第二プログラムにジャンプさせる命令を含み、前記第二プログラムは、当該コンピュータシステムに係る処理を実行する命令を含む。前記起動方法は、前記読取専用メモリの固定位置に記憶されている前記起動プログラムの実行を開始するステップと、前記起動プログラムに従って、前記第二プログラムを検証するステップと、前記検証に成功した場合、前記起動プログラムに従って、前記第二プログラムを前記読み書き用メモリにロードするステップと、前記第二プログラムのロード後、前記起動プログラムに従って、前記第二プログラムにジャンプさせるステップと、前記第二プログラムに従って、処理を実行するステップとを含む。 (19) One aspect of the present invention is a computer activation method for activating a computer system including a processor, a read-only memory, and a read / write memory. An activation program is stored at a fixed position of the read-only memory, and the activation program includes an instruction to verify the second program, an instruction to load the second program, and an instruction to jump to the second program The second program includes an instruction for executing processing related to the computer system. The activation method includes a step of starting execution of the activation program stored in a fixed position of the read-only memory, a step of verifying the second program according to the activation program, and if the verification is successful, Loading the second program into the read / write memory according to the activation program; jumping to the second program according to the activation program after loading the second program; and processing according to the second program Performing the steps.
 (20)上記各実施の形態及び上記各変形例をそれぞれ組み合わせるとしてもよい。 (20) The above embodiments and the above modifications may be combined.
 本発明に係るコンピュータ制御方法は、信頼できない環境において、プロセッサを動作させないようにすることができるという優れた効果を奏し、プロセッサを備えるコンピュータシステムの起動を制御する技術として有用である。 The computer control method according to the present invention has an excellent effect of preventing the processor from operating in an unreliable environment, and is useful as a technique for controlling the activation of a computer system including the processor.
 100a、100b、100c  情報処理装置
 100e コンピュータシステム
 101、101c CPU
 101e プロセッサ
 102 ROM
 102e 読取専用メモリ
 103、103b、103c RAM
 103e 読み書き用メモリ
 104 記憶部
 105 バス
 106 暗号エンジン
 106e 検証専用回路
 107 仮想計算機ハード
100a, 100b, 100c Information processing apparatus 100e Computer system 101, 101c CPU
101e processor 102 ROM
102e Read only memory 103, 103b, 103c RAM
103e Read / write memory 104 Storage unit 105 Bus 106 Cryptographic engine 106e Dedicated verification circuit 107 Virtual computer hardware

Claims (15)

  1.  プロセッサ及び読取専用メモリを含むコンピュータシステムの起動を制御するコンピュータ制御方法であって、
     前記読取専用メモリの固定位置に、起動プログラムが記憶されており、前記起動プログラムは、第二プログラムを検証する命令を含み、
     前記コンピュータ制御方法は、
     リセット直後に、前記読取専用メモリの固定位置に記憶されている前記起動プログラムの実行を開始する開始ステップと、
     前記起動プログラムに従って、前記第二プログラムを検証する検証ステップと、
     前記検証に失敗した場合、当該コンピュータシステムの起動を停止する停止ステップと
     を含むことを特徴とするコンピュータ制御方法。
    A computer control method for controlling the activation of a computer system including a processor and a read only memory,
    An activation program is stored in a fixed position of the read-only memory, and the activation program includes an instruction for verifying a second program,
    The computer control method includes:
    A start step for starting execution of the startup program stored in a fixed position of the read-only memory immediately after resetting;
    A verification step of verifying the second program according to the startup program;
    A computer control method comprising: a stop step of stopping start of the computer system when the verification fails.
  2.  前記コンピュータシステムは、さらに、読み書き用メモリを含み、
     前記起動プログラムは、さらに、前記第二プログラムをロードする命令及び前記第二プログラムに分岐させる命令を含み、前記第二プログラムは、当該コンピュータシステムにおける処理を実行する命令を含み、
     前記コンピュータ制御方法は、さらに、
     前記検証に成功した場合、前記起動プログラムに従って、前記第二プログラムを前記読み書き用メモリにロードするロードステップと、
     前記第二プログラムのロード後、前記起動プログラムに従って、前記第二プログラムに分岐させる分岐ステップと、
     前記第二プログラムに従って、前記処理を実行する実行ステップと
     を含むことを特徴とする請求項1に記載のコンピュータ制御方法。
    The computer system further includes a read / write memory,
    The startup program further includes an instruction to load the second program and an instruction to branch to the second program, and the second program includes an instruction to execute processing in the computer system,
    The computer control method further includes:
    If the verification is successful, a loading step of loading the second program into the read / write memory according to the startup program;
    A branching step for branching to the second program according to the startup program after loading the second program;
    The computer control method according to claim 1, further comprising an execution step of executing the processing according to the second program.
  3.  前記読み書き用メモリは、セキュア領域を含み、
     前記ロードステップにおいて、前記セキュア領域に前記第二プログラムをロードする
     ことを特徴とする請求項2に記載のコンピュータ制御方法。
    The read / write memory includes a secure area,
    The computer control method according to claim 2, wherein in the loading step, the second program is loaded into the secure area.
  4.  前記起動プログラムは、さらに、前記読み書き用メモリに前記セキュア領域を設定する命令を含み、
     前記コンピュータ制御方法は、さらに、
     前記起動プログラムに従って、前記読み書き用メモリに前記セキュア領域を設定する設定ステップを含む
     ことを特徴とする請求項3に記載のコンピュータ制御方法。
    The boot program further includes an instruction to set the secure area in the read / write memory,
    The computer control method further includes:
    The computer control method according to claim 3, further comprising a setting step of setting the secure area in the read / write memory in accordance with the startup program.
  5.  前記起動プログラムは、さらに、暗号化された状態の前記第二プログラムを復号する命令を含み、
     前記検証ステップにおいて、暗号化された状態の前記第二プログラムを検証し、
     前記コンピュータ制御方法は、さらに、
     前記起動プログラムに従って、暗号化された状態の前記第二プログラムを復号する復号ステップを含み、
     前記ロードステップにおいて、前記復号ステップにより生成された前記第二プログラムをロードする
     ことを特徴とする請求項2に記載のコンピュータ制御方法。
    The boot program further includes an instruction to decrypt the second program in an encrypted state,
    Verifying the encrypted second program in the verification step;
    The computer control method further includes:
    A decrypting step of decrypting the second program in an encrypted state according to the startup program;
    The computer control method according to claim 2, wherein, in the loading step, the second program generated by the decoding step is loaded.
  6.  前記第二プログラムは、前記コンピュータシステムに含まれるデバイスの初期化を実行する命令を含み、
     前記実行ステップにおいて、前記デバイスの初期化を実行する
     ことを特徴とする請求項2に記載のコンピュータ制御方法。
    The second program includes instructions for performing initialization of a device included in the computer system,
    The computer control method according to claim 2, wherein in the execution step, initialization of the device is executed.
  7.  前記第二プログラムは、仮想計算機制御プログラムを検証する命令を含み、
     前記コンピュータ制御方法は、さらに、
     前記実行ステップにおいて、前記デバイスの初期化が実行された後、前記第二プログラムに従って、前記仮想計算機制御プログラムを検証する第二検証ステップを含み、
     前記停止ステップにおいて、前記仮想計算機制御プログラムの前記検証に失敗した場合、当該コンピュータシステムの起動を停止する
     ことを特徴とする請求項6に記載のコンピュータ制御方法。
    The second program includes an instruction for verifying the virtual machine control program,
    The computer control method further includes:
    In the execution step, after the initialization of the device is executed, the virtual machine control program is verified according to the second program after the second verification step,
    The computer control method according to claim 6, wherein, in the stopping step, when the verification of the virtual machine control program fails, the computer system is stopped.
  8.  前記読み書き用メモリは、セキュア領域を含み、
     前記第二プログラムは、さらに、前記仮想計算機制御プログラムをロードする命令及び前記仮想計算機制御プログラムに分岐させる命令を含み、前記仮想計算機制御プログラムは、当該コンピュータシステムの仮想計算機における処理を実行する命令を含み、
     前記コンピュータ制御方法は、さらに、
     前記仮想計算機制御プログラムの前記検証に成功した場合、前記第二プログラムに従って、前記仮想計算機制御プログラムを前記読み書き用メモリの前記セキュア領域にロードする第二ロードステップと、
     前記仮想計算機制御プログラムのロード後、前記第二プログラムに従って、前記仮想計算機制御プログラムに分岐させる第二分岐ステップと、
     前記仮想計算機制御プログラムに従って、仮想計算機における前記処理を実行する第二実行ステップと
     を含むことを特徴とする請求項7に記載のコンピュータ制御方法。
    The read / write memory includes a secure area,
    The second program further includes an instruction to load the virtual machine control program and an instruction to branch to the virtual machine control program, and the virtual machine control program includes an instruction to execute processing in the virtual machine of the computer system. Including
    The computer control method further includes:
    A second loading step of loading the virtual machine control program into the secure area of the read / write memory according to the second program when the verification of the virtual machine control program is successful;
    A second branching step for branching to the virtual machine control program according to the second program after loading the virtual machine control program;
    The computer control method according to claim 7, further comprising a second execution step of executing the processing in the virtual computer according to the virtual computer control program.
  9.  前記第二プログラムは、さらに、前記読み書き用メモリに前記セキュア領域を設定する命令を含み、
     前記コンピュータ制御方法は、さらに、
     前記第二プログラムに従って、前記読み書き用メモリに前記セキュア領域を設定する第二設定ステップを含む
     ことを特徴とする請求項8に記載のコンピュータ制御方法。
    The second program further includes an instruction to set the secure area in the read / write memory,
    The computer control method further includes:
    The computer control method according to claim 8, further comprising a second setting step of setting the secure area in the read / write memory according to the second program.
  10.  前記第二プログラムは、さらに、暗号化された状態の前記仮想計算機制御プログラムを復号する命令を含み、
     前記第二検証ステップにおいて、暗号化された状態の前記仮想計算機制御プログラムを検証し、
     前記コンピュータ制御方法は、さらに、
     前記第二プログラムに従って、暗号化された状態の前記仮想計算機制御プログラムを復号する第二復号ステップを含み、
     前記第二ロードステップにおいて、前記第二復号ステップにおいて生成された前記仮想計算機制御プログラムをロードする
     ことを特徴とする請求項8に記載のコンピュータ制御方法。
    The second program further includes an instruction to decrypt the virtual machine control program in an encrypted state,
    In the second verification step, the virtual machine control program in an encrypted state is verified,
    The computer control method further includes:
    A second decryption step for decrypting the virtual machine control program in an encrypted state according to the second program;
    The computer control method according to claim 8, wherein, in the second load step, the virtual machine control program generated in the second decryption step is loaded.
  11.  前記コンピュータシステムは、さらに、前記仮想計算機制御プログラムを検証する検証専用回路を含み、
     前記第二検証ステップにおいて、前記検証専用回路により、検証が実行される
     ことを特徴とする請求項7に記載のコンピュータ制御方法。
    The computer system further includes a verification dedicated circuit for verifying the virtual machine control program,
    The computer control method according to claim 7, wherein in the second verification step, verification is performed by the verification-dedicated circuit.
  12.  前記コンピュータシステムは、さらに、前記第二プログラムを検証する検証専用回路を含み、
     前記検証ステップにおいて、前記検証専用回路により、検証が実行される
     ことを特徴とする請求項1に記載のコンピュータ制御方法。
    The computer system further includes a verification dedicated circuit for verifying the second program,
    The computer control method according to claim 1, wherein in the verification step, verification is performed by the verification-dedicated circuit.
  13.  プロセッサのリセット直後に起動される起動プログラムであって、
     前記プロセッサに、
     前記第二プログラムを検証させる検証ステップと、
     前記検証に失敗した場合、当該コンピュータシステムの起動を停止する停止ステップと
     を実行させることを特徴とする起動プログラム。
    A startup program that is started immediately after a processor reset,
    In the processor,
    A verification step for verifying the second program;
    If the verification fails, a start program for stopping the start of the computer system is executed.
  14.  プロセッサのリセット直後に起動される起動プログラムを記録しているコンピュータ読取可能な記録媒体であって、
     前記プロセッサに、
     前記第二プログラムを検証させる検証ステップと、
     前記検証に失敗した場合、当該コンピュータシステムの起動を停止する停止ステップと
     を実行させる起動プログラムを記録していることを特徴とする記録媒体。
    A computer-readable recording medium that records a startup program that is started immediately after a processor reset,
    In the processor,
    A verification step for verifying the second program;
    A recording medium for recording a start program for executing a stop step for stopping start of the computer system when the verification fails.
  15.  プロセッサ及び読取専用メモリを含むコンピュータシステムであって、
     前記読取専用メモリの固定位置に、起動プログラムが記憶されており、前記起動プログラムは、第二プログラムを検証し、
     リセット直後に、前記読取専用メモリの固定位置に記憶されている前記起動プログラムの実行を開始する開始ステップと、
     前記起動プログラムに従って、前記第二プログラムを検証する検証ステップと、
     前記検証に失敗した場合、当該コンピュータシステムの起動を停止する停止ステップと
     を含む前記コンピュータ制御方法により制御されることを特徴とするコンピュータシステム。
    A computer system including a processor and read-only memory,
    An activation program is stored in a fixed position of the read-only memory, and the activation program verifies the second program,
    A start step for starting execution of the startup program stored in a fixed position of the read-only memory immediately after resetting;
    A verification step of verifying the second program according to the startup program;
    A computer system controlled by the computer control method including: a stop step of stopping activation of the computer system when the verification fails.
PCT/JP2012/003659 2011-06-29 2012-06-04 Computer control method WO2013001721A1 (en)

Applications Claiming Priority (2)

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

Publications (1)

Publication Number Publication Date
WO2013001721A1 true WO2013001721A1 (en) 2013-01-03

Family

ID=47423653

Family Applications (1)

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

Country Status (2)

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

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014147710A1 (en) * 2013-03-18 2014-09-25 富士通株式会社 Terminal device, startup control method, and program
JP2015060249A (en) * 2013-09-17 2015-03-30 株式会社東芝 Information processing device and program execution method
JP2019192231A (en) * 2018-04-18 2019-10-31 新唐科技股▲ふん▼有限公司 Computer system and method for initializing computer system

Families Citing this family (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

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10333902A (en) * 1997-05-27 1998-12-18 N Ii C Joho Syst:Kk Computer system with alteration detecting function
US6185678B1 (en) * 1997-10-02 2001-02-06 Trustees Of The University Of Pennsylvania Secure and reliable bootstrap architecture
JP2004013905A (en) * 2002-06-07 2004-01-15 Microsoft Corp Use of hashing in secure bootloader
JP2004530235A (en) * 2001-06-15 2004-09-30 ノキア コーポレイション Method, security system, and electronic device for ensuring safety of electronic device
JP2004280284A (en) * 2003-03-13 2004-10-07 Sony Corp Control processor, electronic equipment, and program starting method for electronic equipment, and system module updating method for electronic equipment
JP2005129041A (en) * 2003-10-01 2005-05-19 Toshiba Corp Microcomputer
JP2007310601A (en) * 2006-05-18 2007-11-29 Renesas Technology Corp Microcomputer and method for protecting its software
US20080077993A1 (en) * 2006-09-26 2008-03-27 Zimmer Vincent J Methods and arrangements to launch trusted, co-existing environments
US20080126779A1 (en) * 2006-09-19 2008-05-29 Ned Smith Methods and apparatus to perform secure boot
US20090172822A1 (en) * 2007-12-31 2009-07-02 Ravi Sahita Pre-boot protected memory channel
US20090249053A1 (en) * 2008-03-31 2009-10-01 Zimmer Vincent J Method and apparatus for sequential hypervisor invocation

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10333902A (en) * 1997-05-27 1998-12-18 N Ii C Joho Syst:Kk Computer system with alteration detecting function
US6185678B1 (en) * 1997-10-02 2001-02-06 Trustees Of The University Of Pennsylvania Secure and reliable bootstrap architecture
JP2004530235A (en) * 2001-06-15 2004-09-30 ノキア コーポレイション Method, security system, and electronic device for ensuring safety of electronic device
JP2004013905A (en) * 2002-06-07 2004-01-15 Microsoft Corp Use of hashing in secure bootloader
JP2004280284A (en) * 2003-03-13 2004-10-07 Sony Corp Control processor, electronic equipment, and program starting method for electronic equipment, and system module updating method for electronic equipment
JP2005129041A (en) * 2003-10-01 2005-05-19 Toshiba Corp Microcomputer
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
US20080077993A1 (en) * 2006-09-26 2008-03-27 Zimmer Vincent J Methods and arrangements to launch trusted, co-existing environments
US20090172822A1 (en) * 2007-12-31 2009-07-02 Ravi Sahita Pre-boot protected memory channel
US20090249053A1 (en) * 2008-03-31 2009-10-01 Zimmer Vincent J Method and apparatus for sequential hypervisor invocation

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014147710A1 (en) * 2013-03-18 2014-09-25 富士通株式会社 Terminal device, startup control method, and program
JP6024821B2 (en) * 2013-03-18 2016-11-16 富士通株式会社 Terminal device, activation control method, and program
JP2015060249A (en) * 2013-09-17 2015-03-30 株式会社東芝 Information processing device and program execution method
JP2019192231A (en) * 2018-04-18 2019-10-31 新唐科技股▲ふん▼有限公司 Computer system and method for initializing computer system

Also Published As

Publication number Publication date
JP2014170255A (en) 2014-09-18

Similar Documents

Publication Publication Date Title
US10970424B2 (en) Program execution device
US9281949B2 (en) Device using secure processing zone to establish trust for digital rights management
US8438377B2 (en) Information processing apparatus, method and computer-readable storage medium that encrypts and decrypts data using a value calculated from operating-state data
US8555089B2 (en) Program execution apparatus, control method, control program, and integrated circuit
CN109840430B (en) Safety processing unit of PLC and bus arbitration method thereof
US8239967B2 (en) Simultaneous tamper-proofing and anti-piracy protection of software
US8214632B2 (en) Method of booting electronic device and method of authenticating boot of electronic device
US20070220500A1 (en) Computer security method and computer system
US20120331303A1 (en) Method and system for preventing execution of malware
US20120272296A1 (en) Method and system for protecting against the execution of unauthorized software
US8127144B2 (en) Program loader operable to verify if load-destination information has been tampered with, processor including the program loader, data processing device including the processor, promgram loading method, and integrated circuit
US8392724B2 (en) Information terminal, security device, data protection method, and data protection program
EP2172866A1 (en) Information processor and tampering verification method
CN107707981B (en) Microcode signature safety management system and method based on Trustzone technology
CN113656086A (en) Method for safely storing and loading firmware and electronic device
JP4537940B2 (en) Information processing apparatus and program execution control method
WO2013001721A1 (en) Computer control method
WO2014206170A1 (en) Verification method and device
JP2007310688A (en) Microcomputer and software tampering prevention method thereof
KR101988404B1 (en) Soc having double security features, and double security method for soc
EP1465038B1 (en) Memory security device for flexible software environment
US20070157012A1 (en) Method and system for handling operation of multiple devices within a single system-on-chip (SoC) integrated circuit (IC)
KR20180007717A (en) Soc having double security features, and double security method for soc
JP6462540B2 (en) Driver device, information processing system, program, and method
US9213864B2 (en) Data processing apparatus and validity verification method

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 12805370

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 12805370

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: JP