WO2020075303A1 - ソフトウェア検証装置、ソフトウェア検証方法およびソフトウェア検証プログラム - Google Patents

ソフトウェア検証装置、ソフトウェア検証方法およびソフトウェア検証プログラム Download PDF

Info

Publication number
WO2020075303A1
WO2020075303A1 PCT/JP2018/038210 JP2018038210W WO2020075303A1 WO 2020075303 A1 WO2020075303 A1 WO 2020075303A1 JP 2018038210 W JP2018038210 W JP 2018038210W WO 2020075303 A1 WO2020075303 A1 WO 2020075303A1
Authority
WO
WIPO (PCT)
Prior art keywords
software
mac
calculation unit
verification
hash
Prior art date
Application number
PCT/JP2018/038210
Other languages
English (en)
French (fr)
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 三菱電機株式会社
Priority to PCT/JP2018/038210 priority Critical patent/WO2020075303A1/ja
Priority to DE112018007934.1T priority patent/DE112018007934B4/de
Priority to JP2020549929A priority patent/JP6925542B2/ja
Priority to CN201880098423.8A priority patent/CN112805703A/zh
Publication of WO2020075303A1 publication Critical patent/WO2020075303A1/ja
Priority to US17/191,369 priority patent/US11914682B2/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/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/44Program or device authentication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/105Arrangements for software license management or administration, e.g. for managing licenses at corporate level
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees

Definitions

  • the present invention relates to a software verification device, a software verification method, and a software verification program.
  • the present invention relates to a software verification device, a software verification method, and a software verification program for performing secure boot.
  • Secure boot is to execute after confirming that the software has not been tampered with at the time of starting the device by a method such as digital signature. Specifically, the secure boot is to prevent the execution of an unauthorized program such as a rootkit.
  • the conventional secure boot is realized by using UEFI (Unified Extensible Firmware Interface) and TPM (Trusted Platform Module).
  • Patent Document 1 while verifying the signature of the program, the hash is stored in the TPM, the hash is finally signed by the TPM, and the external server is queried to verify the integrity of the software.
  • Patent Document 1 discloses a method of generating a hash list of software with a signature at the time of development and verifying them at boot time.
  • Non-Patent Document 1 In the technique of Non-Patent Document 1, startup is slow because signature verification is performed on each piece of software. In addition, downgrade attacks that restore the entire software body and its signature to the old version cannot be detected. Furthermore, the integrity of the software configuration cannot be determined unless communication with an external server is possible. The technique of Patent Document 1 cannot detect a downgrade attack that restores an old version for each hash list.
  • the present invention aims at speeding up the integrity verification of a plurality of software and integrity verification of the software configuration of a single device.
  • the software verification device is a software verification device that starts up startup software to be started, A storage unit, if a hash expected value that is an expected value of the hash value of the startup software is stored in the storage unit, a security calculation unit that compares the hash value of the startup software and the hash expected value, A main operation unit that starts the startup software when the hash value and the expected hash value match, and stops the process if they do not match, The main calculation unit, If the expected hash value is not stored in the storage unit, signature verification of the startup software is performed, and if the signature verification is successful, the hash value of the startup software is stored in the storage unit as the expected hash value and the startup is performed. Start the software and stop the process if the signature verification is not successful.
  • the security operation unit stores the hash value of the activated software in the storage unit as the hash expected value. Then, the security calculation unit determines the validity of the boot software by comparing the hash value of the boot software to be booted this time with the hash expected value. Therefore, according to the software verification device of the present invention, it is possible to reduce the signature verification process and speed up the startup.
  • FIG. 1 is a configuration diagram of a software verification device according to the first embodiment.
  • FIG. 6 is a flowchart of a boot operation of the software verification device according to the first embodiment.
  • FIG. 6 is a flowchart of a boot operation of the software verification device according to the first embodiment.
  • 3 is a flowchart of the software update operation of the software verification device according to the first embodiment.
  • FIG. FIG. 6 is a configuration diagram of a software verification device according to a modification of the first embodiment.
  • FIG. 9 is a flowchart of the operation of booting in hash chain mode according to the second embodiment.
  • FIG. 9 is a flowchart of the boot operation in the signature verification mode according to the second embodiment.
  • FIG. 11 is a flowchart of a boot operation of the software verification device according to the third embodiment.
  • FIG. 11 is a flowchart of a boot operation of the software verification device according to the third embodiment.
  • FIG. 11 is a flowchart of a boot operation of the software verification device according to the third embodiment.
  • FIG. 10 is a flowchart of the software update operation of the software verification device according to the third embodiment.
  • FIG. 16 is a flowchart of a boot operation of the software verification device according to the fourth embodiment.
  • FIG. 16 is a flowchart of the software update operation of the software verification device according to the fourth embodiment.
  • FIG. 16 is a flowchart of the boot operation of the software verification device according to the fifth embodiment.
  • FIG. 16 is a flowchart of the boot operation of the software verification device according to the fifth embodiment.
  • FIG. 16 is a flowchart of the software update operation of the software verification device according to the fifth embodiment.
  • the software verification device 100 is a computer.
  • the software verification apparatus 100 includes a processor 102 and other hardware such as a storage 103, a memory 104, a communication device 105, an input device 106, a display device 107, and a boot ROM (Read Only Memory) 108.
  • the processor 102 is connected to other hardware via a signal line, and controls these other hardware.
  • the processor 102 is a CPU (Central Processing Unit) that performs processing such as verifying a signature of startup software that is a startup target at boot time.
  • the processor 102 includes a main calculation unit 109 and a security calculation unit 110 as functional elements.
  • the main calculation unit 109 performs processing such as boot processing or application processing.
  • the security calculation unit 110 securely stores information such as a highly confidential key, or performs cryptographic processing such as AES (Advanced Encryption Standard).
  • AES Advanced Encryption Standard
  • the signature verification is performed by the main calculation unit 109 because information with high confidentiality is not used.
  • comparison of hash values, or generation and verification of MAC is performed by the security calculation unit 110 because highly confidential information is used.
  • the processor 102 includes a non-volatile memory. Although the main arithmetic unit 109 and the security arithmetic unit 110 are mounted in the same processor in FIG. 1, different configurations may be used as long as the data transmission between them can be performed safely.
  • the storage 103 is a non-volatile storage element that stores software to be verified and its signature.
  • the memory 104 is a volatile storage element in which the processor 102 temporarily expands the calculation result.
  • the boot ROM 108 contains a boot program that is first executed when the power is turned on. The boot ROM 108 can only read, but cannot write.
  • the software verification device 100 includes a main calculation unit 109 and a security calculation unit 110 as functional elements.
  • the security calculation unit 110 includes a storage unit 111.
  • the functions of the main calculation unit 109 and the security calculation unit 110 are realized by software.
  • the storage unit 111 is included in the non-volatile memory included in the processor 102.
  • the processor 102 is a device that executes a software verification program.
  • the software verification program is a program that realizes the functions of the main calculation unit 109 and the security calculation unit 110.
  • the processor 102 is an IC (Integrated Circuit) that performs arithmetic processing.
  • a specific example of the processor 102 may be a DSP (Digital Signal Processor) or a GPU (Graphics Processing Unit) in addition to the CPU.
  • the memory 104 is a storage device that temporarily stores data.
  • a specific example of the memory 104 is an SRAM (Static Random Access Memory) or a DRAM (Dynamic Random Access Memory).
  • the storage 103 is a storage device that stores data.
  • a specific example of the storage 103 is an HDD.
  • the storage 103 may be a portable storage medium such as an SD (registered trademark) memory card, CF, NAND flash, flexible disk, optical disk, compact disk, Blu-ray (registered trademark) disk, or DVD.
  • SD registered trademark
  • SD Secure Digital
  • CF is an abbreviation for CompactFlash®.
  • DVD is an abbreviation for Digital Versatile Disk.
  • the input device 106 is an input device such as a mouse, a keyboard, or a touch panel.
  • the input device 106 may be a port connected to a LAN (Local Area Network).
  • the display device 107 is an output device such as a display.
  • the display device 107 is specifically connected to an interface such as a USB terminal or an HDMI (registered trademark) (High Definition Multimedia Interface) terminal.
  • the display is, specifically, an LCD (Liquid Crystal Display).
  • the communication device 105 has a receiver and a transmitter.
  • the communication device 105 is connected to a communication network such as a LAN, the Internet, or a telephone line.
  • the communication device 105 is specifically a communication chip or a NIC (Network Interface Card). Note that the communication device 105, the input device 106, or the display device 107 is not essential in this embodiment.
  • the software verification program is read by the processor 102 and executed by the processor 102.
  • the memory 104 stores not only a software verification program but also an OS (Operating System).
  • the processor 102 executes the software verification program while executing the OS.
  • the software verification program and OS may be stored in the storage 103.
  • the software verification program and the OS stored in the storage 103 are loaded into the memory 104 and executed by the processor 102. Note that a part or all of the software verification program may be incorporated in the OS.
  • the software verification device 100 may include a plurality of processors that replace the processor 102. These plural processors share the execution of the software verification program. Each processor, like the processor 102, is a device that executes a software verification program.
  • the data, information, signal values and variable values used, processed or output by the software verification program are stored in the memory 104, the storage 103, or the non-volatile memory, register, or cache memory in the processor 102.
  • the “section” of each section of the main calculation section 109 and the security calculation section 110 may be replaced with “process”, “procedure”, or “process”. Further, the “processing” of the main calculation processing and the security calculation processing may be replaced with “program”, “program product”, or “computer-readable storage medium storing the program”.
  • the software verification program causes a computer to execute each process, each procedure or each process in which the above-mentioned “part” of each part is replaced with “process”, “procedure” or “process”.
  • the software verification method is a method performed by the software verification device 100 executing a software verification program.
  • the software verification program may be stored in a computer-readable recording medium and provided. Further, the software verification program may be provided as a program product.
  • the software verification device 100 activates the activation software that is the activation target.
  • the software verification device 100 sequentially activates a plurality of activation software.
  • the software verification device 100 boots a boot program, a boot loader, an OS, and an application in this order.
  • a boot loader, OS, and application are examples of multiple startup software.
  • step S201 when the power is turned on, the main calculation unit 109 executes the boot program stored in the boot ROM 108.
  • step S202 the boot program generates a hash value of the boot loader software and outputs it to the security calculation unit 110.
  • step S203 the security calculation unit 110 compares the hash value output from the boot program with the hash expected value of the boot loader stored in the storage unit 111. If they do not match, the main calculation unit 109 stops the processing. If the hash expected value is not set in the storage unit 111, the process proceeds to step S204. If the two match, in step S206, the main calculation unit 109 activates the activation software. That is, the main calculation unit 109 activates the boot loader.
  • the security calculation unit 110 compares the hash value of the startup software with the expected hash value if the hash expected value that is the expected value of the hash value of the startup software is stored in the storage unit 111. If the expected hash value is not stored in the storage unit 111, the main calculation unit 109 verifies the signature of the startup software. Then, if the signature verification is successful, the main calculation unit 109 stores the hash value of the activation software as the expected hash value in the storage unit 111 and activates the activation software. Specifically, it is as follows.
  • step S204 the main calculation unit 109 verifies the signature of the boot loader software. If the signature verification is successful, in step S205, the main operation unit 109 stores the hash value of the boot loader software in the storage unit 111 as the hash expected value. Specifically, the main calculation unit 109 outputs the success of signature verification to the security calculation unit 110.
  • the security operation unit 110 acquires the success of the signature verification from the main operation unit 109, it stores the hash value of the boot loader software in the storage unit 111 as the hash expected value.
  • the main operation unit 109 may store the hash expected value in the storage unit 111 in the security operation unit 110 and may store the hash expected value in the security operation unit 110. If the signature verification is not successful, the main calculation unit 109 stops the processing.
  • step S206 the main calculation unit 109 activates the boot loader. That is, the main calculation unit 109 activates the activation software when the hash value and the hash expected value match. Further, when the signature verification is successful, the main calculation unit 109 activates the activation software.
  • step S207 the boot loader generates a hash value of the OS software and outputs it to the security calculation unit 110.
  • the security calculation unit 110 compares the hash value output from the boot loader with the hash expected value of the OS stored in the security calculation unit 110, that is, the storage unit 111. If they do not match, the main calculation unit 109 stops the processing. If the hash value is not set in the storage unit 111, the process proceeds to step S209. If they match, in step S211, the main calculation unit 109 activates the OS.
  • step S209 the main calculation unit 109 verifies the signature of the software of the OS. If the signature verification is successful, in step S210, the main operation unit 109 stores the hash value of the OS software as the hash expected value in the security operation unit 110, that is, in the storage unit 111. If the signature verification is not successful, the main calculation unit 109 stops the processing. In step S211, the main calculation unit 109 activates the OS.
  • step S212 the OS generates a hash value of the software of the application and outputs it to the security calculation unit 110.
  • the security calculation unit 110 compares the hash value output from the OS with the expected hash value of the application stored in the security calculation unit 110, that is, the storage unit 111. If they do not match, the main calculation unit 109 stops the processing. If the hash value is not set in the storage unit 111, the process proceeds to step S214. If they match, in step S216, the main calculation unit 109 activates the application.
  • step S214 the main calculation unit 109 verifies the signature of the software of the application. If the signature verification is successful, in step S215, the main operation unit 109 stores the hash value of the software of the application as the hash expected value in the security operation unit 110, that is, the storage unit 111. If the signature verification is not successful, the main calculation unit 109 stops the processing. In step S216, the main calculation unit 109 activates the application.
  • step S301 the update software to be updated and its signature are downloaded.
  • step S302 the main calculation unit 109 verifies the signature and version of the updated software. For the version verification, specifically, a method such as collation using a list is used. If the verification fails, the main calculation unit 109 terminates the processing as an abnormal end. If the verification is successful, the process proceeds to step S303.
  • step S303 the main calculation unit 109 writes the update software and the signature in the storage 103 or the memory 104.
  • step S304 the main calculation unit 109 generates a hash value of updated software.
  • the main calculation unit 109 overwrites and saves the hash value of the update software as the hash value of the update software in the storage unit 111 in the security calculation unit 110.
  • the functions of the main calculation unit 109 and the security calculation unit 110 are realized by software.
  • the functions of the main calculation unit 109 and the security calculation unit 110 may be realized by hardware.
  • FIG. 5 is a diagram showing the configuration of the software verification device 100 according to the modification of the present embodiment.
  • the software verification device 100 includes an electronic circuit 112 instead of the processor 102.
  • the electronic circuit 112 is a dedicated electronic circuit that realizes the functions of the main calculation unit 109 and the security calculation unit 110.
  • the electronic circuit 112 is specifically a single circuit, a composite circuit, a programmed processor, a parallel programmed processor, a logic IC, a GA, an ASIC, or an FPGA.
  • GA is an abbreviation for Gate Array.
  • ASIC is an abbreviation for Application Specific Integrated Circuit.
  • FPGA is an abbreviation for Field-Programmable Gate Array.
  • the functions of the main calculation unit 109 and the security calculation unit 110 may be realized by one electronic circuit, or may be realized by being distributed to a plurality of electronic circuits.
  • some functions of the main calculation unit 109 and the security calculation unit 110 may be realized by an electronic circuit, and the remaining functions may be realized by software. Further, at least part of the functions of the main calculation unit 109 and the security calculation unit 110 may be realized by firmware.
  • Each of the processor and electronic circuit is also called the processing circuitry. That is, in the software verification apparatus 100, the functions of some of the functions of the main calculation unit 109 and the security calculation unit 110 are realized by the processing circuitry.
  • the software verification device 100 it is possible to speed up the integrity verification of a plurality of software. Further, according to the software verification device 100 according to the present embodiment, it is possible to realize software integrity verification in the device alone. According to the software verification device 100 according to the present embodiment, the hash value of the activated software is compared with the hash value of the software that was previously activated. Therefore, it is not necessary to perform a signature verification that requires a load each time the application is activated, and the activation can be speeded up. Furthermore, by leaving the hash value of the startup software that was used the last time it was started, even if the machine is downgraded after booting, it can be verified at the next boot. Further, according to the software verification apparatus 100 according to the present embodiment, the verification of the startup software is closed inside the device. Therefore, it is possible to verify the integrity of the device itself.
  • Embodiment 2 In the present embodiment, points different from Embodiment 1 will be mainly described.
  • the same components as those in the first embodiment are denoted by the same reference numerals, and description thereof may be omitted.
  • the software verification apparatus 100 stores the hash value of each startup software of a plurality of startup software in the storage unit 111 of the security calculation unit 110 and verifies them one by one at boot time. In this embodiment, a method of collectively verifying the integrity of a plurality of startup software is shown.
  • the configuration of the software verification device 100 is the same as that of FIG. Further, the software updating operation in this embodiment is the same as that in the first embodiment.
  • the software verification device 100 sequentially activates a plurality of activation software.
  • the software verification apparatus 100 according to the present embodiment is activated in any one of a hash chain mode in which a hash chain is generated from a plurality of activation software and a signature verification mode in which signature verification is performed on each of the plurality of activation software. To do.
  • FIG. 6 shows the boot operation in the hash chain mode.
  • N is an integer of 2 or more startup software.
  • the software verification apparatus 100 is activated in one of a hash chain mode for generating a hash chain from N pieces of activation software and a signature verification mode for performing signature verification on each of the N pieces of activation software.
  • the security calculation unit 110 acquires the hash value of the first activation software that is activated first among the N activation software and generates a random data string Nonce.
  • the security calculation unit 110 generates a hash value of the pre-started software and a hash value of Nonce as a first hash chain.
  • the main calculation unit 109 activates the pre-activation software.
  • N pieces of start software three pieces of start software, that is, a boot loader, an OS, and an application are started.
  • step S401 when the power is turned on, the security calculator 110 activates the watchdog.
  • the watchdog monitors whether the system is working properly.
  • step S402 the security calculation unit 110 generates Nonce. Nonce is a random data string without reproducibility.
  • step S403 the main calculation unit 109 executes the boot program stored in the boot ROM 108. The main calculation unit 109 confirms the start mode by the boot program. If the activation mode is the hash chain mode, the process proceeds to step S404. If the activation mode is the signature verification mode, the process proceeds to step S415.
  • step S 404 the main calculation unit 109 generates a hash value of the boot loader software and outputs it to the security calculation unit 110.
  • the boot loader is an example of the first boot software that is first booted.
  • step S405 the security calculation unit 110 generates the hash value of the hash value acquired from the main calculation unit 109 and Nonce as a first hash chain.
  • the security calculation unit 110 outputs the first hash chain to the main calculation unit 109.
  • step S406 when the first hash chain is generated, the main calculation unit 109 activates the boot loader that is the pre-activation software.
  • the main calculation unit 109 acquires the hash value of the next boot software that is booted the k-th (k is an integer of 2 or more and N or less) of the N pieces of boot software.
  • the security calculation unit 110 generates a hash value of the (k ⁇ 1) th hash chain and the hash value of the next activation software as the kth hash chain and activates the next activation software.
  • the next boot software that is booted second as the kth is the OS.
  • step S407 the boot loader generates a hash value of OS software. Then, the boot loader generates a hash value of the first hash chain and the hash value of the OS software as the second hash chain. In step S408, the main calculation unit 109 activates the OS which is the next activation software.
  • step S409 the OS generates a hash value of application software. Then, the OS generates a hash value of the second hash chain and the hash value of the software of the application as the third hash chain.
  • step S410 the main calculation unit 109 activates the application that is the next activation software.
  • the main operation unit 109 outputs the kth hash chain to the security operation unit 110 if the next activation software is the activation software that is activated last among the N activation software. If the hash value of each of the N pieces of startup software is stored in the security calculation unit 110, that is, the storage unit 111, the security calculation unit 110 calculates the expected value of the kth hash chain as the hash chain expected value. . The security calculation unit 110 calculates the hash chain expected value using the hash value and Nonce of each of the N pieces of startup software. Then, the security calculation unit 110 compares the kth hash chain with the hash chain expected value.
  • the main calculation unit 109 ends normally if the k-th hash chain and the expected value of the hash chain match, and stops the process if they do not match. If the hash value of each of the N pieces of startup software is not stored in the storage unit 111, the main calculation unit 109 sets the startup mode to the signature verification mode and restarts. Specifically, it is as follows.
  • step S411 the main calculation unit 109 outputs the third hash chain to the security calculation unit 110.
  • step S412 the watchdog in the security calculation unit 110 verifies whether the hash value has been acquired before the occurrence of a predetermined event.
  • the predetermined event may be, for example, an elapsed time from activation or an event such as use of a communication device. If the acquisition is verified, the process proceeds to step S413. If the acquisition is not verified, the main calculation unit 109 stops the process.
  • step S413 the security calculation unit 110 calculates an expected value of the third hash chain as a hash chain expected value from the internally generated Nonce and the hash value stored in the storage unit 111.
  • the security calculation unit 110 compares the hash chain expected value with the acquired third hash chain. If both match, the process ends normally. If they do not match, the main calculation unit 109 stops the processing. If the hash value is not set in the storage unit 111 in the security calculation unit 110, in step S414, the main calculation unit 109 sets the activation mode to the signature verification mode and restarts.
  • FIG. 7 shows the boot operation in the signature verification mode.
  • the main calculation unit 109 When started in the signature verification mode, the main calculation unit 109 performs signature verification on each of the N pieces of startup software. Then, if the signature verification is successful, the main operation unit 109 stores the hash value of each activation software in the storage unit 111 in the security operation unit 110 and activates each activation software. The main calculation unit 109 stops the process if the signature verification fails. Further, the main operation unit 109 sets the activation mode to the hash chain mode when the signature verification of all the N activation software is successful. A specific example will be described below.
  • step S415 the main calculation unit 109 verifies the signature of the boot loader software. If the signature verification is successful, in step S416, the main operation unit 109 stores the hash value of the boot loader software in the storage unit 111 in the security operation unit 110. In step S417, the main calculation unit 109 activates the boot loader. If the signature verification fails, the main calculation unit 109 stops the process.
  • step S4108 the boot loader verifies the signature of the OS software. If the signature verification is successful, the boot loader stores the hash value of the OS software in the storage unit 111 in the security calculation unit 110 in step S419. In step S420, the main calculation unit 109 boots the OS. If the signature verification fails, the main calculation unit 109 stops the process.
  • step S421 the OS verifies the signature of the software of the application. If the signature verification is successful, the process proceeds to step S422. If the signature verification fails, the main calculation unit 109 stops the process. In step S422, the main calculation unit 109 stores the hash value of the software of the application in the storage unit 111 in the security calculation unit 110. In step S423, the main calculation unit 109 activates the application. In step S424, the OS sets the activation mode to hash chain. In step S425, the watchdog in the security calculation unit 110 verifies whether the hash value has been acquired before the occurrence of a predetermined event. The predetermined event may be, for example, an elapsed time from activation or an event such as use of a communication device. If the hash value is not acquired, the processing will stop.
  • the predetermined event may be, for example, an elapsed time from activation or an event such as use of a communication device. If the hash value is not acquired, the processing will stop.
  • the software verification apparatus 100 according to the present embodiment can perform the same speed-up of startup as in the first embodiment, integrity verification of the apparatus alone, and downgrade detection. Further, according to the software verification apparatus 100 according to the present embodiment, since the software integrity verification is performed last, it is possible to reduce the number of accesses to the security calculation unit, which normally requires overhead.
  • Embodiment 3 In the present embodiment, differences from the first and second embodiments will be mainly described. The same components as those in the first and second embodiments are designated by the same reference numerals and the description thereof may be omitted.
  • the hash value of the software at the previous startup is stored in the storage unit 111, which is a non-volatile memory in the security calculation unit 110.
  • the storage unit 111 which is a non-volatile memory in the security calculation unit 110.
  • a method is shown in which the hash value of the software at the previous startup can be stored in the external storage 103 while maintaining the security.
  • the hardware configuration is the same as in FIG.
  • the main calculation unit 109 determines the presence or absence of a MAC (Media Access Control) of the activation software, and if the MAC exists, outputs the hash value of the activation software and the MAC of the activation software.
  • the security calculation unit 110 calculates a MAC expected value that is an expected value of the MAC from the configuration verification key stored in the storage unit 111 and the hash value of the activation software, and outputs the MAC and the MAC expected value output from the main calculation unit 109. Compare with.
  • the configuration verification key is a secret key for calculating the MAC.
  • the main calculation unit 109 activates the activation software.
  • the main calculation unit 109 stops the process if the MAC of the activation software does not match the MAC expected value. Specifically, it is as follows.
  • step S501 when the power is turned on, the main calculation unit 109 executes the boot program stored in the boot ROM 108.
  • step S502 the boot program determines whether the boot loader has a MAC. If there is a MAC, the process proceeds to step S503. If there is no MAC, the process proceeds to step S505.
  • step S503 the boot program outputs the hash value of the software of the boot loader and the MAC to the security calculation unit 110.
  • step S504 the security calculation unit 110 calculates a MAC expected value that is an expected value of the MAC from the configuration verification key and the hash value. The security calculation unit 110 compares the MAC expected value with the MAC output from the boot program. If they do not match, the processing is stopped. If they match, the process proceeds to step S508.
  • the main calculation unit 109 verifies the signature of the activation software if the activation software has no MAC. If the signature verification is successful, the main operation unit 109 outputs the hash value of the activation software to the security operation unit 110. The main calculation unit 109 stops the process unless the signature verification is successful.
  • the security calculation unit 110 determines whether or not there is the configuration verification key. If the configuration verification key exists, the processing is stopped. If the configuration verification key does not exist, the security calculation unit 110 temporarily stores the hash value of the activation software in the storage unit 111. Specifically, it is as follows.
  • step S505 the boot program verifies the software signature of the boot loader. If the verification fails, stop the process. If the verification is successful, in step S506, the boot program outputs the hash value of the software of the boot loader to the security calculation unit 110.
  • the security calculation unit 110 determines the presence or absence of the configuration verification key, and if there is the configuration verification key, stops the processing. If there is no configuration verification key, the security calculation unit 110 temporarily stores the hash value in the storage unit 111 in step S507. Then, in step S508, the main calculation unit 109 activates the boot loader.
  • step S509 the boot loader determines whether the OS has a MAC. If there is a MAC, the process proceeds to step S510. If there is no MAC, the process proceeds to step S512.
  • step S510 the boot loader outputs the OS software hash value and MAC to the security calculation unit 110.
  • step S511 the security calculation unit 110 calculates the MAC from the configuration verification key and the hash, and compares the MAC with the MAC output from the boot loader. If they do not match, the processing is stopped. If they match, in step S515, the main calculation unit 109 activates the OS.
  • step S509 the boot loader verifies the OS software signature in step S512. If the signature verification fails, the process is stopped. If the signature verification is successful, the process proceeds to step S513. In step S513, the boot loader outputs the hash value of the OS software to the security calculation unit 110.
  • the security calculation unit 110 determines the presence or absence of the configuration verification key, and if there is the configuration verification key, stops the processing. If there is no configuration verification key, the security calculation unit 110 temporarily stores the hash value of the OS in the storage unit 111 in step S514. Then, in step S515, the main calculation unit 109 activates the OS.
  • step S516 the OS determines whether or not the application has a MAC. If there is a MAC, the process proceeds to step S517. If there is no MAC, the process proceeds to step S519.
  • step S517 the OS outputs the hash value of the application software and the MAC to the security calculation unit 110.
  • step S5108 the MAC is calculated from the configuration verification key and the hash value in the security calculation unit 110 and compared with the MAC output from the OS. If they do not match, the processing is stopped. If they match, in step S522, the main computing unit 109 activates the application.
  • step S516 the software signature of the application is verified in step S519. If the signature verification fails, the process is stopped. If the signature verification is successful, in step S520, the OS outputs the hash value of the software of the application to the security calculation unit 110.
  • the security calculation unit 110 determines the presence or absence of the configuration verification key, and if there is the configuration verification key, stops the processing. If there is no configuration verification key, in step S521, the security calculation unit 110 temporarily stores the hash value of the application in the storage unit 111. Then, in step S522, the main computing unit 109 activates the application.
  • the security calculation unit 110 generates a configuration verification key when the activation of all the activation software is completed. Generating a configuration verification key is to generate a random number and use the random number as the configuration verification key. Then, the security calculation unit 110 calculates the MAC of each startup software of the plurality of startup software from the configuration verification key and the hash value temporarily stored in the storage unit 111. The main calculation unit 109 stores the MAC of each startup software of the plurality of startup software in the non-volatile storage 103. Specifically, it is as follows.
  • step S ⁇ b> 523 the main calculation unit 109 notifies the security calculation unit 110 of the end of activation when all the activation software to be activated has been activated.
  • step S524 the security calculation unit 110 determines whether there is a hash value temporarily stored in the storage unit 111, and if there is no hash value, ends normally. If there is a hash value temporarily stored in the storage unit 111, the security calculation unit 110 generates a configuration verification key in step S525.
  • step S ⁇ b> 526 the security calculation unit 110 calculates the MAC of each startup software from the configuration verification key and the hash value of each startup software temporarily stored in the storage unit 111, and outputs the MAC to the main calculation unit 109.
  • step S527 the main calculation unit 109 stores the MAC of each activation software acquired from the security calculation unit 110 in the storage 103.
  • FIG. 11 shows a software update operation according to the present embodiment.
  • the outline of software update in the present embodiment will be described below.
  • the main calculation unit 109 acquires the updated software and the signature of the updated software, and performs signature verification and version check of the updated software.
  • the main calculation unit 109 calculates the hash value of the startup software before update, and the hash value of the startup software before update and the startup software before update stored in the storage 103.
  • the MAC of the above are output to the security calculation unit 110.
  • the security calculation unit 110 calculates the MAC of the startup software before update from the hash value output from the main calculation unit 109 and the update verification key stored in the storage unit 111.
  • the security calculation unit 110 compares the calculated MAC with the MAC output from the main calculation unit 109. If the MAC calculated by the security calculation unit 110 and the MAC output from the main calculation unit 109 all match, the main calculation unit 109 writes the update software and the signature, and calculates the hash value of the update software. The main calculation unit 109 outputs the hash value of the updated software to the security calculation unit 110. The security calculation unit 110 regenerates the verification configuration key and calculates the MAC of the updated software using the regenerated verification configuration key and the hash value of the updated software. Regenerating the verification configuration key means generating a random number and using the random number as the configuration verification key. The main calculation unit 109 stores the MAC of the update software in the storage 103. Specifically, it is as follows.
  • step S601 the update software to be updated and its signature are downloaded.
  • step S602 the main calculation unit 109 verifies the signature and version of the updated software. For the version verification, specifically, a method such as collation using a list is used. If the verification fails, the main calculation unit 109 terminates the processing as an abnormal end. If the verification is successful, the process proceeds to step S603.
  • step S603 the main calculation unit 109 calculates the hash value of each startup software before updating, and outputs the hash value of each startup software and the MAC of each startup software to the security calculation unit 110.
  • the MAC of each startup software before updating is stored in the storage 103.
  • step S604 the security calculation unit 110 calculates the MAC from the configuration verification key and the hash value.
  • the security operation unit 110 compares the calculated MAC with the MAC output from the main operation unit 109 and returns the comparison result to the main operation unit 109.
  • the main operation unit 109 terminates the process if any of the results do not match. If all match, the main calculation unit 109 writes the update software and the signature in the storage 103 or the memory 104 in step S605.
  • step S606 the main calculation unit 109 outputs the hash value of each updated software after writing to the security calculation unit 110.
  • the security calculation unit 110 regenerates the configuration verification key.
  • step S608 the security calculation unit 110 calculates the MAC of each update software from the regenerated configuration verification key and the hash value output from the main calculation unit 109, and outputs the MAC to the main calculation unit 109.
  • step S609 the main calculation unit 109 stores the MAC of each update software acquired from the security calculation unit 110 in the storage 103.
  • the software verification apparatus 100 it is possible to speed up the startup as in the first embodiment, verify the integrity of the apparatus alone, and detect downgrade. Further, according to the software verification apparatus 100 according to the present embodiment, even if the expected value is stored in the non-secure area, that is, the storage, it is possible to detect an attack such as tampering, erasure, and downgrade. Further, since the MAC can be removed from the storage, it is effective even when the storage area of the security calculation unit is limited.
  • the MAC verification by the configuration verification key or the presence or absence of the configuration verification key determines whether the MAC It is possible to verify the startup and downgrade of an unauthorized program due to unauthorized tampering or deletion of the.
  • Embodiments 1 to 3 points different from Embodiments 1 to 3 will be mainly described.
  • the same components as those in the first to third embodiments are designated by the same reference numerals and the description thereof may be omitted.
  • the effect of speeding up the processing can be obtained by reducing the public key calculation, that is, reducing the signature verification.
  • This embodiment shows a method of preventing downgrade in a processor that can perform public key operation at high speed.
  • the hardware configuration is the same as in FIG.
  • FIG. 12 shows the boot operation in this embodiment.
  • the outline of the boot operation in this embodiment will be described below.
  • the security calculation unit 110 verifies the signature of the activation software to be activated among the plurality of activation software, calculates the hash value of the activation software if the signature verification is successful, and temporarily stores the hash value in the storage unit 111.
  • the main calculation unit 109 stops the process unless the signature verification is successful. On the other hand, if the signature verification is successful, the main calculation unit 109 activates the activation software.
  • the main calculation unit 109 adds all the hash values temporarily stored and outputs the addition result.
  • the security calculation unit 110 determines whether or not the expected addition result value, which is the expected value of the addition result, is stored in the storage unit 111. If there is no expected addition result value, the addition result is stored in the storage unit 111 as the expected addition result value.
  • the security operation unit 110 compares the addition result output from the main operation unit 109 with the expected addition result value. If the addition result and the addition result expected value do not match, the main calculation unit 109 stops the processing. If the addition result and the expected addition result value match, the process ends normally. Specifically, it is as follows.
  • step S701 when the power is turned on, the main calculation unit 109 executes the boot program stored in the boot ROM.
  • the boot program verifies the software signature of the boot loader. If the signature verification is successful, in step S703, the boot program generates a hash value of the boot loader software. Then, in step S704, the main calculation unit 109 activates the boot loader. If the signature verification is not successful, the main calculation unit 109 stops the process.
  • step S705 the boot loader verifies the OS software signature. If the signature verification is successful, the boot loader generates a hash value of the software of the OS in step S706. Then, in step S707, the main calculation unit 109 activates the OS. If the signature verification is not successful, the main calculation unit 109 stops the process. In step S708, the OS verifies the software signature of the application. If the signature verification is successful, in step S709, the OS generates a hash value of the software of the application. Then, in step S710, main operation section 109 activates the application. If the signature verification is not successful, the main calculation unit 109 stops the process.
  • step S711 the application adds the hash values generated so far and outputs the addition result to the security calculation unit 110. Exclusive OR is used for addition.
  • step S712 the security calculation unit 110 determines whether the storage unit 111 stores the expected addition result value that is the expected value of the addition result. If there is no addition result expected value in the storage unit 111, in step S713, the addition result output from the application is stored in the storage unit 111 as the addition result expected value, and the process ends.
  • step S714 if the storage unit 111 has the expected addition result value, the security operation unit 110 compares the expected addition result value with the addition result output from the main operation unit 109. If both match, the process ends normally. If they do not match, the processing is stopped.
  • FIG. 13 shows a software updating operation in this embodiment.
  • the outline of software update in the present embodiment will be described below.
  • the security calculation unit 110 acquires each of the plurality of pieces of update software and the signature of each of the pieces of update software, and calculates the addition result by adding the hash values of the respective startup software before update. Then, the security calculation unit 110 compares the calculated addition result with the expected addition result value. If the addition result and the addition result expected value do not match, the main calculation unit 109 determines that the processing has ended abnormally and stops the processing. On the other hand, if the addition result and the addition result expected value match, the main calculation unit 109 writes each of the plurality of update software and each signature of the plurality of update software in the storage 103 or the memory 104.
  • the security calculation unit 110 calculates the hash value of each updated software after the update.
  • the security calculation unit 110 stores the addition result obtained by adding the hash values of the respective update software in the storage unit 111 as the addition result expected value, and also stores the hash value of each of the plurality of startup software in the storage unit 111. Specifically, it is as follows.
  • step S801 the update software to be updated and the signature are downloaded.
  • step S802 the main calculation unit 109 verifies the signature and version of the updated software. Version verification may be performed by a method such as list matching. If the verification fails, the main calculation unit 109 terminates the processing as an abnormal end. If the verification is successful, in step S803, the main calculation unit 109 calculates the hash value of each startup software before updating. In step S804, the main calculation unit 109 adds the calculated hashes and outputs the added hash to the security calculation unit 110. Exclusive OR is used for addition. In step S805, the security operation unit 110 compares the output addition result with the expected addition result value stored in the storage unit 111, and returns the result to the main operation unit 109.
  • step S806 the main calculation unit 109 writes the update software and the signature in the storage 103 or the memory 104.
  • step S807 the main calculation unit 109 calculates the hash value of the updated software after the update.
  • step S808 the hash value of the startup software before updating calculated in step S803, the addition result calculated in step S804, and the hash value of the updated software updated in step S807 are added.
  • step S809 the main calculation unit 109 outputs the addition result calculated in step S808 to the security calculation unit 110.
  • step S810 the security calculation unit 110 stores the addition result calculated in step S808 in the storage unit 111.
  • the software verification apparatus 100 by keeping the addition result of each software at the time of the previous execution, even if downgraded after the boot, the verification can be performed at the next boot. Further, according to the software verification device 100 according to the present embodiment, the number of accesses to the security calculation unit is reduced compared to the method of storing the hash value of each software in the security calculation unit, so that the processing speed is expected to be increased. it can. Further, according to the software verification device 100 according to the present embodiment, the verification is closed inside the device, so that the integrity verification of the device alone can be performed. Furthermore, by using exclusive OR for addition of hash values, it is possible to easily calculate the addition result after updating at the time of software updating.
  • Embodiment 5 points different from the first to fourth embodiments will be mainly described.
  • the same components as those in the first to fourth embodiments are designated by the same reference numerals and the description thereof may be omitted.
  • the fourth embodiment has shown a method of preventing downgrade in a processor that can perform public key operation at high speed.
  • a method will be described in which the hash can be stored in the external storage 103 while maintaining security.
  • the hardware configuration is the same as in FIG.
  • the main calculation unit 109 verifies the signature of the activation software to be activated among the activation software. If the signature verification is successful, the main operation unit 109 calculates the hash value of the activation software, temporarily stores it in the storage unit 111 in the security operation unit 110, and activates the activation software. The main calculation unit 109 stops the process unless the signature verification is successful.
  • the main calculation unit 109 adds all the hash values temporarily stored in the storage unit 111 and outputs the addition result. Further, the main calculation unit 109 determines the presence or absence of the MAC of the addition result, and if the addition result includes the MAC, outputs the addition result and the MAC of the addition result.
  • the security calculation unit 110 calculates the MAC expected value, which is the expected value of the MAC, from the configuration verification key stored in advance in the storage unit 111 and the addition result output from the main calculation unit 109. Then, the security calculation unit 110 compares the MAC expected value with the MAC output from the main calculation unit 109.
  • the main operation unit 109 stops the process, and if the MAC expected value and the MAC output from the main operation unit 109 match, the operation is normal. finish. If the addition result does not include MAC, the security calculation unit 110 determines whether the configuration verification key exists in the storage unit 111. If the configuration verification key is not stored, the security calculation unit 110 generates the configuration verification key. Then, the security calculation unit 110 generates a MAC of the addition result from the configuration verification key and the addition result. When the configuration verification key is stored, the main calculation unit 109 stops the process. On the other hand, when the MAC of the addition result is generated, the main calculation unit 109 stores the MAC of the addition result in the storage 103. Specifically, it is as follows.
  • step S901 when the power is turned on, the main calculation unit 109 executes the boot program stored in the boot ROM.
  • the boot program verifies the software signature of the boot loader. If the signature verification is successful, the boot program generates a hash value of the boot loader software (step S903) and activates the boot loader (step S904). If the signature verification fails, the boot program stops processing.
  • step S905 the boot loader verifies the OS software signature. If the signature verification is successful, the boot loader generates a hash value of the software of the OS (step S906) and boots the OS (step S907). If the signature verification fails, the boot loader stops the process.
  • step S908 the OS verifies the software signature of the application. If the signature verification is successful, the OS generates a hash value of the software of the application (step S909) and activates the application (step S910). If the signature verification fails, the OS stops the process.
  • step S911 the application adds the hashes generated so far. Exclusive OR is used for addition.
  • step S912 the application determines whether there is a stored MAC. If there is a stored MAC, the application outputs the addition result and the MAC to the security calculation unit 110 in step S913. If there is no stored MAC, the application outputs the addition result to the security calculation unit 110 in step S915.
  • step S914 the security calculation unit 110, which has received the addition result and the MAC, calculates the MAC as the MAC expected value from the configuration verification key and the addition result, and compares it with the MAC output from the application. If both match, the process ends normally, and if they do not match, the process is stopped.
  • the security operation unit 110 which has received the addition result, confirms the presence or absence of the configuration verification key, and if there is the configuration verification key, stops the processing. If there is no configuration verification key, in step S916 the security calculation unit 110 generates a configuration verification key. In step S917, the security calculation unit 110 calculates the MAC from the configuration verification key and the addition result, and outputs the MAC to the main calculation unit 109. In step S918, the main calculation unit 109 stores the MAC in the nonvolatile storage 103, and ends normally. In order to protect the MAC from unauthorized deletion, the MAC may be stored in the storage unit 111 of the security calculation unit 110 instead of the storage 103.
  • FIG. 16 shows the software update operation in this embodiment.
  • the outline of software update in the present embodiment will be described below.
  • the main calculation unit 109 acquires each of the plurality of update software and each signature of the plurality of update software. Then, the main calculation unit 109 calculates the addition result obtained by adding the hash values of the respective startup software before update and the MAC of the addition result.
  • the main calculation unit 109 outputs the addition result of adding the hash values of the respective startup software before update and the MAC of the addition result.
  • the security calculation unit 110 calculates the MAC as the MAC expected value from the configuration verification key and the addition result, and compares the MAC of the addition result with the MAC expected value.
  • the main calculation unit 109 stops the process. On the other hand, if the MAC of the addition result matches the MAC expected value, the main calculation unit 109 writes each of the plurality of update software and each signature of the plurality of update software in the storage 103 or the memory 104. The main calculation unit 109 calculates the hash value of each updated software after updating, adds the hash value of each starting software before updating and the hash value of each starting software before updating, and each after updating The hash value of the updated software is added as the first addition result. The main calculation unit 109 outputs the first addition result to the security calculation unit 110. The security calculation unit 110 regenerates the configuration verification key and calculates the MAC of the first addition result from the configuration verification key and the first addition result. The main calculation unit 109 stores the MAC of the first addition result in the storage 103. Specifically, it is as follows.
  • steps S1001 to S1003 are the same as the processes of steps S801 to S803.
  • step S1004 the main calculation unit 109 adds the hash value of each startup software before updating, and outputs it to the security calculation unit 110 together with the MAC. Exclusive OR is used for addition.
  • step S1005 the security operation unit 110 calculates a MAC from the addition result output from the main operation unit 109 and the configuration verification key, and compares the MAC with the MAC output from the main operation unit 109. The security calculation unit 110 returns the comparison result to the main calculation unit 109.
  • the main calculation unit 109 ends the process if the comparison results do not match.
  • step S1007 the main calculation unit 109 calculates the hash value of each updated software after the update.
  • step S1008 the hash value of each piece of startup software before update calculated in step S1003, the addition result calculated in step S1004, and the hash value of each update software piece after update calculated in step S1007 are added as the first addition result. To do.
  • step S1009 the main calculation unit 109 outputs the first addition result to the security calculation unit 110.
  • the security calculation unit 110 regenerates the configuration verification key.
  • step S1011 the security calculation unit 110 calculates the MAC from the configuration verification key and the first addition result, and outputs the MAC to the main calculation unit 109.
  • step S1012 the main arithmetic operation unit 109 stores the MAC of the first addition result in the storage 103.
  • the MAC may be stored in the storage unit 111 of the security calculation unit 110 instead of the storage 103.
  • the MAC can be removed from the storage, which is also effective when the storage area of the security calculation unit is limited.
  • the MAC verification by the configuration verification key or the presence / absence of the configuration verification key is performed. Therefore, according to the software verification apparatus 100 according to the present embodiment, even if the MAC is illegally tampered with or erased, illegal MAC tampering or activation or downgrade of an unauthorized program due to erasure is prevented. It can be verified.
  • each unit of the software verification device has been described as an independent functional block.
  • the configuration of the software verification device does not have to be the configuration of the above-described embodiment.
  • the functional block of the software verification device may have any configuration as long as it can realize the functions described in the above-described embodiments.
  • the software verification device may be a system composed of a plurality of devices instead of one device. Moreover, you may implement combining several parts among Embodiments 1-5. Alternatively, one of these embodiments may be implemented. In addition, these embodiments may be implemented in any combination as a whole or a part. That is, in the first to fifth embodiments, it is possible to freely combine the respective embodiments, modify any of the constituent elements of each of the embodiments, or omit any constituent element of each of the embodiments.
  • 100 software verification device 102 processor, 103 storage, 104 memory, 104 memory, 105 communication device, 106 input device, 107 display device, 108 boot ROM, 109 main operation unit, 110 security operation unit, 111 storage unit, 112 electronic circuit .

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)
  • Stored Programmes (AREA)

Abstract

セキュリティ演算部(110)が、起動ソフトウェアのハッシュ値の期待値であるハッシュ期待値が記憶部(111)に記憶されていれば、起動ソフトウェアのハッシュ値とハッシュ期待値とを比較する。主演算部(109)が、ハッシュ値とハッシュ期待値とが一致すると起動ソフトウェアを起動し、一致しなければ処理を停止する。主演算部(109)が、ハッシュ期待値が記憶部(111)に記憶されていなければ、起動ソフトウェアの署名検証を行い、署名検証に成功すれば起動ソフトウェアのハッシュ値をハッシュ期待値として記憶部(111)に記憶するとともに起動ソフトウェアを起動する。主演算部(109)は、署名検証に成功しなければ処理を停止する。

Description

ソフトウェア検証装置、ソフトウェア検証方法およびソフトウェア検証プログラム
 本発明は、ソフトウェア検証装置、ソフトウェア検証方法およびソフトウェア検証プログラムに関する。特に、セキュアブートを行うソフトウェア検証装置、ソフトウェア検証方法およびソフトウェア検証プログラムに関する。
 近年、組み込み制御機器においても、不正プログラムを実行させないために、セキュアブートの採用が増えている。セキュアブートとは、機器の起動時にソフトウェアに改ざんが無いことをデジタル署名といった手法により確認してから実行することである。具体的には、セキュアブートとは、ルートキットといった不正なプログラムの実行を防止するものである。従来のセキュアブートは、UEFI(Unified Extensible Firmware Interface)とTPM(Trusted Platform Module)を用いて実現されている。
 非特許文献1では、プログラムの署名検証を行いながら、そのハッシュをTPMに格納していき、最後にTPMでハッシュに署名を施し、外部サーバに問い合わせることで、ソフトウェアの完全性を検証する。
 また、特許文献1では、開発時にソフトウェアのハッシュリストを署名つきで生成し、ブート時にそれらを検証する方法が開示されている。
国際公開第2011/142095号
Microsoft、「Windows10のブートプロセスのセキュリティ保護」https://docs.microsoft.com/ja-jp/windows/security/hardware-protection/secure-the-windows-10-boot-process
 非特許文献1の技術では、個々のソフトウェアについて署名検証を行うため起動が遅い。また、ソフトウェア本体とその署名を丸ごと古いバージョンに戻すダウングレード攻撃は検知できない。さらに、外部サーバとの通信ができないとソフトウェア構成の完全性を判定できない。
 特許文献1の技術では、ハッシュリストごと古いバージョンに戻すダウングレード攻撃を検知できない。
 本発明は、複数のソフトウェアの完全性検証の高速化および装置単体でのソフトウェア構成の完全性検証を目的とする。
 本発明に係るソフトウェア検証装置は、起動対象である起動ソフトウェアを起動するソフトウェア検証装置において、
 記憶部を備え、前記起動ソフトウェアのハッシュ値の期待値であるハッシュ期待値が前記記憶部に記憶されていれば、前記起動ソフトウェアのハッシュ値と前記ハッシュ期待値とを比較するセキュリティ演算部と、
 前記ハッシュ値と前記ハッシュ期待値とが一致すると前記起動ソフトウェアを起動し、一致しなければ処理を停止する主演算部と
を備え、
 前記主演算部は、
 前記ハッシュ期待値が前記記憶部に記憶されていなければ前記起動ソフトウェアの署名検証を行い、署名検証に成功すれば前記起動ソフトウェアのハッシュ値を前記ハッシュ期待値として前記記憶部に記憶するとともに前記起動ソフトウェアを起動し、署名検証に成功しなければ処理を停止する。
 本発明に係るソフトウェア検証装置では、セキュリティ演算部が、起動されたソフトウェアのハッシュ値をハッシュ期待値として記憶部に記憶しておく。そして、セキュリティ演算部が、今回起動する起動ソフトウェアのハッシュ値とハッシュ期待値とを比較することにより起動ソフトウェアの正当性を判定する。よって、本発明に係るソフトウェア検証装置によれば、署名検証の処理を少なくし、起動を高速化することができる。
実施の形態1に係るソフトウェア検証装置の構成図。 実施の形態1に係るソフトウェア検証装置のブートの動作のフロー図。 実施の形態1に係るソフトウェア検証装置のブートの動作のフロー図。 実施の形態1に係るソフトウェア検証装置のソフトウェア更新の動作のフロー図。 実施の形態1の変形例に係るソフトウェア検証装置の構成図。 実施の形態2に係るハッシュチェーンモードのブートの動作のフロー図。 実施の形態2に係る署名検証モードのブートの動作のフロー図。 実施の形態3に係るソフトウェア検証装置のブートの動作のフロー図。 実施の形態3に係るソフトウェア検証装置のブートの動作のフロー図。 実施の形態3に係るソフトウェア検証装置のブートの動作のフロー図。 実施の形態3に係るソフトウェア検証装置のソフトウェア更新の動作のフロー図。 実施の形態4に係るソフトウェア検証装置のブートの動作のフロー図。 実施の形態4に係るソフトウェア検証装置のソフトウェア更新の動作のフロー図。 実施の形態5に係るソフトウェア検証装置のブートの動作のフロー図。 実施の形態5に係るソフトウェア検証装置のブートの動作のフロー図。 実施の形態5に係るソフトウェア検証装置のソフトウェア更新の動作のフロー図。
 以下、本発明の実施の形態について、図を用いて説明する。なお、各図中、同一または相当する部分には、同一符号を付している。実施の形態の説明において、同一または相当する部分については、説明を適宜省略または簡略化する。
 実施の形態1.
***構成の説明***
 図1を用いて、本実施の形態に係るソフトウェア検証装置100の構成を説明する。
 ソフトウェア検証装置100は、コンピュータである。ソフトウェア検証装置100は、プロセッサ102を備えるとともに、ストレージ103、メモリ104、通信デバイス105、入力デバイス106、表示デバイス107、およびブートROM(Read Only Memory)108といった他のハードウェアを備える。プロセッサ102は、信号線を介して他のハードウェアと接続され、これら他のハードウェアを制御する。
 プロセッサ102は、ブート時に起動対象である起動ソフトウェアの署名を検証するといった処理を行うCPU(Central Processing Unit)である。プロセッサ102は、主演算部109とセキュリティ演算部110を機能要素として備える。主演算部109は、ブート処理あるいはアプリケーション処理といった処理を行う。セキュリティ演算部110は、秘匿性の高い鍵といった情報を安全に記憶する、あるいは、AES(Advanced Encryption Standard)といった暗号処理を行う。なお、本実施の形態では、署名検証は、秘匿性の高い情報を使わないため、主演算部109で行う。また、ハッシュ値の比較、あるいは、MACの生成および検証は、秘匿性の高い情報を使うため、セキュリティ演算部110で行う。
 また、プロセッサ102は、不揮発メモリを備えている。図1では同一プロセッサ内に主演算部109とセキュリティ演算部110が搭載されているが、両者のデータ伝送を安全に行えるのであれば別構成でもよい。
 ストレージ103は、検証対象となるソフトウェアおよびその署名を格納する不揮発性の記憶素子である。メモリ104は、プロセッサ102が演算結果を一時的に展開する揮発性の記憶素子である。
 ブートROM108は、電源投入時に最初に実行されるブートプログラムが入っている。ブートROM108は、読み出ししかできず、書き込みはできない。
 各ハードウェアについて、より詳しく説明する。
 ソフトウェア検証装置100は、機能要素として、主演算部109とセキュリティ演算部110とを備える。セキュリティ演算部110は記憶部111を備える。主演算部109とセキュリティ演算部110の機能は、ソフトウェアにより実現される。記憶部111は、プロセッサ102に備えられた不揮発メモリに備えられる。
 プロセッサ102は、ソフトウェア検証プログラムを実行する装置である。ソフトウェア検証プログラムは、主演算部109とセキュリティ演算部110の機能を実現するプログラムである。
 プロセッサ102は、演算処理を行うIC(Integrated Circuit)である。プロセッサ102の具体例は、CPUの他に、DSP(Digital Signal Processor)、GPU(Graphics Processing Unit)であってもよい。
 メモリ104は、データを一時的に記憶する記憶装置である。メモリ104の具体例は、SRAM(Static Random Access Memory)、あるいはDRAM(Dynamic Random Access Memory)である。
 ストレージ103は、データを保管する記憶装置である。ストレージ103の具体例は、HDDである。また、ストレージ103は、SD(登録商標)メモリカード、CF、NANDフラッシュ、フレキシブルディスク、光ディスク、コンパクトディスク、ブルーレイ(登録商標)ディスク、DVDといった可搬の記憶媒体であってもよい。なお、HDDは、Hard Disk Driveの略語である。SD(登録商標)は、Secure Digitalの略語である。CFは、CompactFlash(登録商標)の略語である。DVDは、Digital Versatile Diskの略語である。
 入力デバイス106は、マウス、キーボード、あるいはタッチパネルといった入力装置である。なお、入力デバイス106は、LAN(Local Area Network)と接続されるポートであってもよい。
 表示デバイス107は、ディスプレイといった出力機器である。表示デバイス107は、具体的には、USB端子またはHDMI(登録商標)(High Definition Multimedia Interface)端子といったインタフェースに接続される。ディスプレイは、具体的には、LCD(Liquid Crystal Display)である。
 通信デバイス105は、レシーバとトランスミッタを有する。通信デバイス105は、LAN、インターネット、あるいは電話回線といった通信網に接続している。通信デバイス105は、具体的には、通信チップまたはNIC(Network Interface Card)である。
 なお、本実施の形態では、通信デバイス105、入力デバイス106、あるいは表示デバイス107は必須ではない。
 ソフトウェア検証プログラムは、プロセッサ102に読み込まれ、プロセッサ102によって実行される。メモリ104には、ソフトウェア検証プログラムだけでなく、OS(Operating System)も記憶されている。プロセッサ102は、OSを実行しながら、ソフトウェア検証プログラムを実行する。ソフトウェア検証プログラムおよびOSは、ストレージ103に記憶されていてもよい。ストレージ103に記憶されているソフトウェア検証プログラムおよびOSは、メモリ104にロードされ、プロセッサ102によって実行される。なお、ソフトウェア検証プログラムの一部または全部がOSに組み込まれていてもよい。
 ソフトウェア検証装置100は、プロセッサ102を代替する複数のプロセッサを備えていてもよい。これら複数のプロセッサは、ソフトウェア検証プログラムの実行を分担する。それぞれのプロセッサは、プロセッサ102と同じように、ソフトウェア検証プログラムを実行する装置である。
 ソフトウェア検証プログラムにより利用、処理または出力されるデータ、情報、信号値および変数値は、メモリ104、ストレージ103、または、プロセッサ102内の不揮発メモリ、レジスタ、あるいはキャッシュメモリに記憶される。
 主演算部109とセキュリティ演算部110の各部の「部」を「処理」、「手順」あるいは「工程」に読み替えてもよい。また主演算処理とセキュリティ演算処理の「処理」を「プログラム」、「プログラムプロダクト」または「プログラムを記録したコンピュータ読取可能な記憶媒体」に読み替えてもよい。
 ソフトウェア検証プログラムは、上記の各部の「部」を「処理」、「手順」あるいは「工程」に読み替えた各処理、各手順あるいは各工程を、コンピュータに実行させる。また、ソフトウェア検証方法は、ソフトウェア検証装置100がソフトウェア検証プログラムを実行することにより行われる方法である。
 ソフトウェア検証プログラムは、コンピュータ読取可能な記録媒体に格納されて提供されてもよい。また、ソフトウェア検証プログラムは、プログラムプロダクトとして提供されてもよい。
***動作の説明***
 次に、図2から図4を用いて、本実施の形態に係るソフトウェア検証装置100の動作について説明する。ソフトウェア検証装置100は、起動対象である起動ソフトウェアを起動する。特に、ソフトウェア検証装置100は、複数の起動ソフトウェアを順に起動する。以下に説明する実施の形態1から5において、ソフトウェア検証装置100は、ブートプログラム、ブートローダ、OS、およびアプリケーションの順に起動する。ブートローダ、OS、およびアプリケーションは、複数の起動ソフトウェアの例である。
 まず、図2および図3を用いて、本実施の形態に係るソフトウェア検証装置100のブートの動作について説明する。
 ステップS201において、電源が投入されると、主演算部109は、ブートROM108に記憶されているブートプログラムを実行する。
 ステップS202において、ブートプログラムは、ブートローダのソフトウェアのハッシュ値を生成し、セキュリティ演算部110に出力する。
 ステップS203において、セキュリティ演算部110は、ブートプログラムから出力されたハッシュ値と、記憶部111に記憶されているブートローダのハッシュ期待値とを比較する。両者が一致しなければ、主演算部109は、処理を停止する。記憶部111にハッシュ期待値が未設定であれば、ステップS204に進む。また、両者が一致すれば、ステップS206において、主演算部109は、起動ソフトウェアを起動する。すなわち、主演算部109は、ブートローダを起動する。
 このように、セキュリティ演算部110は、起動ソフトウェアのハッシュ値の期待値であるハッシュ期待値が記憶部111に記憶されていれば、起動ソフトウェアのハッシュ値とハッシュ期待値とを比較する。
 また、ハッシュ期待値が記憶部111に記憶されていなければ、主演算部109は、起動ソフトウェアの署名検証を行う。そして、主演算部109は、署名検証に成功すれば起動ソフトウェアのハッシュ値をハッシュ期待値として記憶部111に記憶するとともに起動ソフトウェアを起動する。具体的には、以下の通りである。
 ステップS204において、主演算部109は、ブートローダのソフトウェアの署名検証を行う。署名検証に成功すれば、ステップS205において、主演算部109は、ブートローダのソフトウェアのハッシュ値をハッシュ期待値として記憶部111に記憶する。具体的には、主演算部109は、署名検証の成功をセキュリティ演算部110に出力する。セキュリティ演算部110は、主演算部109から署名検証の成功を取得すると、ブートローダのソフトウェアのハッシュ値をハッシュ期待値として記憶部111に記憶する。以下において、主演算部109が、セキュリティ演算部110内の記憶部111にハッシュ期待値を記憶することを、セキュリティ演算部110内にハッシュ期待値を記憶するという場合がある。
 署名検証に成功しなければ、主演算部109は、処理を停止する。
 ステップS206において、主演算部109は、ブートローダを起動する。つまり、主演算部109は、ハッシュ値とハッシュ期待値とが一致すると起動ソフトウェアを起動する。また、主演算部109は、署名検証が成功すると、起動ソフトウェアを起動する。
 ステップS207において、ブートローダは、OSのソフトウェアのハッシュ値を生成し、セキュリティ演算部110に出力する。
 ステップS208において、セキュリティ演算部110は、ブートローダから出力されたハッシュ値と、セキュリティ演算部110内、すなわち記憶部111に記憶されているOSのハッシュ期待値とを比較する。両者が一致しなければ、主演算部109は、処理を停止する。記憶部111にハッシュ値が未設定であれば、ステップS209に進む。両者が一致すれば、ステップS211において、主演算部109は、OSを起動する。
 ステップS209において、主演算部109は、OSのソフトウェアの署名検証を行う。署名検証に成功すれば、ステップS210において、主演算部109は、OSのソフトウェアのハッシュ値をハッシュ期待値として、セキュリティ演算部110内、すなわち記憶部111に記憶する。署名検証に成功しなければ、主演算部109は、処理を停止する。
 ステップS211において、主演算部109は、OSを起動する。
 ステップS212において、OSは、アプリケーションのソフトウェアのハッシュ値を生成し、セキュリティ演算部110に出力する。
 ステップS213において、セキュリティ演算部110は、OSから出力されたハッシュ値と、セキュリティ演算部110内、すなわち記憶部111に記憶されているアプリケーションのハッシュ期待値とを比較する。両者が一致しなければ、主演算部109は、処理を停止する。記憶部111にハッシュ値が未設定であれば、ステップS214に進む。両者が一致すれば、ステップS216において、主演算部109は、アプリケーションを起動する。
 ステップS214において、主演算部109は、アプリケーションのソフトウェアの署名検証を行う。署名検証に成功すれば、ステップS215において、主演算部109は、アプリケーションのソフトウェアのハッシュ値をハッシュ期待値として、セキュリティ演算部110内、すなわち記憶部111に記憶する。署名検証に成功しなければ、主演算部109は、処理を停止する。
 ステップS216において、主演算部109は、アプリケーションを起動する。
 図4を用いて、本実施の形態に係るソフトウェア検証装置100のソフトウェア更新の動作について説明する。
 ステップS301において、更新対象の更新ソフトウェアとその署名とがダウンロードされる。
 ステップS302において、主演算部109は、更新ソフトウェアの署名とバージョンとを検証する。バージョン検証は、具体的には、リストによる照合といった手法を用いる。検証に失敗したら、主演算部109は、異常終了として処理を中止する。検証に成功したら、ステップS303に進む。
 ステップS303において、主演算部109は、更新ソフトウェアと署名をストレージ103またはメモリ104に書き込む。
 ステップS304において、主演算部109は、更新ソフトウェアのハッシュ値を生成する。主演算部109は、更新ソフトウェアのハッシュ値を更新ソフトウェアのハッシュ期待値として、セキュリティ演算部110内の記憶部111に上書き保存する。
***他の構成***
<変形例1>
 本実施の形態では、主演算部109とセキュリティ演算部110の機能がソフトウェアで実現される。変形例として、主演算部109とセキュリティ演算部110の機能がハードウェアで実現されてもよい。
 図5は、本実施の形態の変形例に係るソフトウェア検証装置100の構成を示す図である。
 ソフトウェア検証装置100は、プロセッサ102に替えて、電子回路112を備える。
 電子回路112は、主演算部109とセキュリティ演算部110の機能を実現する専用の電子回路である。
 電子回路112は、具体的には、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ロジックIC、GA、ASIC、または、FPGAである。GAは、Gate Arrayの略語である。ASICは、Application Specific Integrated Circuitの略語である。FPGAは、Field-Programmable Gate Arrayの略語である。
 主演算部109とセキュリティ演算部110の機能は、1つの電子回路で実現されてもよいし、複数の電子回路に分散して実現されてもよい。
 別の変形例として、主演算部109とセキュリティ演算部110の一部の機能が電子回路で実現され、残りの機能がソフトウェアで実現されてもよい。また、主演算部109とセキュリティ演算部110の少なくとも一部の機能がファームウェアで実現されてもよい。
 プロセッサと電子回路の各々は、プロセッシングサーキットリとも呼ばれる。つまり、ソフトウェア検証装置100において、主演算部109とセキュリティ演算部110の一部の機能の機能は、プロセッシングサーキットリにより実現される。
***本実施の形態の効果の説明***
 本実施の形態に係るソフトウェア検証装置100によれば、複数のソフトウェアの完全性検証を高速化できる。また、本実施の形態に係るソフトウェア検証装置100によれば、装置単体でのソフトウェアの完全性検証を実現できる。
 本実施の形態に係るソフトウェア検証装置100によれば、起動ソフトウェアのハッシュ値を、前回に起動したときのソフトウェアのハッシュ値と比較する。よって、起動のたびに、負荷のかかる署名検証を行う必要がなく、起動を高速化できる。さらに、前回に起動したときの起動ソフトウェアのハッシュ値を残しておくことで、ブート後にダウングレードされても、次回のブート時に検証可能となる。また、本実施の形態に係るソフトウェア検証装置100によれば、起動ソフトウェアの検証が機器内部で閉じている。よって、装置単体での完全性検証が可能となる。
 実施の形態2.
 本実施の形態では、主に、実施の形態1と異なる点について説明する。なお、実施の形態1と同様の構成には同一の符号を付し、その説明を省略する場合がある。
***構成の説明***
 実施の形態1では、ソフトウェア検証装置100は、複数の起動ソフトウェアの各起動ソフトウェアのハッシュ値をセキュリティ演算部110の記憶部111に記憶し、ブート時に1つずつ検証する。本実施の形態では、複数の起動ソフトウェアの完全性をまとめて検証する方式を示す。ソフトウェア検証装置100の構成は図1と同じである。また、本実施の形態におけるソフトウェア更新の動作は実施の形態1と同じである。
 本実施の形態に係るソフトウェア検証装置100は、複数の起動ソフトウェアを順に起動する。本実施の形態に係るソフトウェア検証装置100は、複数の起動ソフトウェアからハッシュチェーンを生成するハッシュチェーンモードと、複数の起動ソフトウェアの各々について署名検証を行う署名検証モードとのいずれかの起動モードで起動する。
***動作の説明***
 図6および図7を用いて、本実施の形態に係るソフトウェア検証装置100のブートの動作について説明する。図6は、ハッシュチェーンモードの場合のブートの動作である。
 本実施の形態において、ソフトウェア検証装置100は、N個(Nは2以上の整数)の起動ソフトウェアを順に起動するものとする。ソフトウェア検証装置100は、N個の起動ソフトウェアからハッシュチェーンを生成するハッシュチェーンモードと、N個の起動ソフトウェアの各々について署名検証を行う署名検証モードとのいずれかの起動モードで起動する。
 ハッシュチェーンモードで起動されると、セキュリティ演算部110は、N個の起動ソフトウェアのうち1番目に起動される先起動ソフトウェアのハッシュ値を取得するとともにランダムなデータ列Nonceを生成する。セキュリティ演算部110は、先起動ソフトウェアのハッシュ値とNonceとのハッシュ値を第1ハッシュチェーンとして生成する。
 主演算部109は、第1ハッシュチェーンが生成されると、先起動ソフトウェアを起動する。
 以下に具体例を用いて説明する。ここでは、N個の起動ソフトウェアとして、3個の起動ソフトウェアであるブートローダ、OS,およびアプリケーションを起動するものとする。
 ステップS401において、電源が投入されると、セキュリティ演算部110は、ウォッチドッグを起動する。ウォッチドッグは、システムが正常に動作しているかどうかを監視する。
 ステップS402において、セキュリティ演算部110は、Nonceを生成する。Nonceは再現性の無いランダムなデータ列である。
 ステップS403において、主演算部109は、ブートROM108に格納されているブートプログラムを実行する。主演算部109は、ブートプログラムにより、起動モードを確認する。起動モードがハッシュチェーンモードであれば、ステップS404に進む。起動モードが署名検証モードであれば、ステップS415に進む。
 ステップS404において、主演算部109は、ブートローダのソフトウェアのハッシュ値を生成し、セキュリティ演算部110に出力する。ブートローダは、1番目に起動される先起動ソフトウェアの例である。
 ステップS405において、セキュリティ演算部110は、主演算部109から取得したハッシュ値とNonceとのハッシュ値を第1ハッシュチェーンとして生成する。セキュリティ演算部110は、第1ハッシュチェーンを主演算部109に出力する。
 ステップS406において、主演算部109は、第1ハッシュチェーンが生成されると、先起動ソフトウェアであるブートローダを起動する。
 主演算部109は、N個の起動ソフトウェアのうちk番目(kは2以上N以下の整数)に起動される次起動ソフトウェアのハッシュ値を取得する。セキュリティ演算部110は、第(k-1)ハッシュチェーンと次起動ソフトウェアのハッシュ値とのハッシュ値を第kハッシュチェーンとして生成するするとともに次起動ソフトウェアを起動する。
 ここでは、k番目として2番目に起動される次起動ソフトウェアを、OSとする。
 ステップS407において、ブートローダは、OSのソフトウェアのハッシュ値を生成する。そして、ブートローダは、第1ハッシュチェーンと、OSのソフトウェアのハッシュ値とのハッシュ値を第2ハッシュチェーンとして生成する。
 ステップS408において、主演算部109は、次起動ソフトウェアであるOSを起動する。
 次に、k番目として3番目に起動される次起動ソフトウェアを、アプリケーションとする。
 ステップS409において、OSは、アプリケーションのソフトウェアのハッシュ値を生成する。そして、OSは、第2ハッシュチェーンと、アプリケーションのソフトウェアのハッシュ値とのハッシュ値を第3ハッシュチェーンとして生成する。
 ステップS410において、主演算部109は、次起動ソフトウェアであるアプリケーションを起動する。
 主演算部109は、次起動ソフトウェアがN個の起動ソフトウェアのうち最後に起動される起動ソフトウェアであれば、第kハッシュチェーンをセキュリティ演算部110に出力する。
 セキュリティ演算部110は、N個の起動ソフトウェアの各々のハッシュ値が、セキュリティ演算部110内、すなわち記憶部111に記憶されていれば、第kハッシュチェーンの期待値をハッシュチェーン期待値として計算する。セキュリティ演算部110は、N個の起動ソフトウェアの各々のハッシュ値とNonceとを用いて、ハッシュチェーン期待値を計算する。そして、セキュリティ演算部110は、第kハッシュチェーンをハッシュチェーン期待値と比較する。
 主演算部109は、第kハッシュチェーンとハッシュチェーン期待値とが一致すれば正常終了し、一致しなければ処理を停止する。また、主演算部109は、N個の起動ソフトウェアの各々のハッシュ値が記憶部111に記憶されていなければ、起動モードを署名検証モードに設定して再起動する。
 具体的には、以下の通りである。
 ステップS411において、主演算部109は、セキュリティ演算部110に第3ハッシュチェーンを出力する。
 ステップS412において、セキュリティ演算部110内のウォッチドッグは、所定のイベント発生前にハッシュ値を取得したかを検証する。所定のイベントとは例えば、起動からの経過時間であってもよいし、通信デバイスの使用といったイベントであってもよい。取得が検証されると、ステップS413に進む。取得が検証されなければ、主演算部109は、処理を停止する。
 ステップS413において、セキュリティ演算部110は、内部で生成したNonceと、記憶部111に記憶されたハッシュ値から、第3ハッシュチェーンの期待値をハッシュチェーン期待値として計算する。セキュリティ演算部110は、ハッシュチェーン期待値と、取得した第3ハッシュチェーンとを比較する。両者が一致すれば正常に終了する。一致しなければ、主演算部109は、処理を停止する。セキュリティ演算部110内の記憶部111にハッシュ値が未設定であれば、ステップS414において、主演算部109は、起動モードを署名検証モードに設定して再起動する。
 図7は、署名検証モードの場合のブートの動作である。
 主演算部109は、署名検証モードで起動されると、N個の起動ソフトウェアの各起動ソフトウェアについて署名検証を行う。そして、署名検証に成功すれば、主演算部109は、各起動ソフトウェアのハッシュ値をセキュリティ演算部110内の記憶部111に記憶するとともに各起動ソフトウェアを起動する。主演算部109は、署名検証に失敗すると処理を停止する。また、主演算部109は、N個の起動ソフトウェアの全ての署名検証に成功すると、起動モードをハッシュチェーンモードに設定する。
 以下に具体例を用いて説明する。
 ステップS415において、主演算部109は、ブートローダのソフトウェアの署名検証を行う。
 署名検証に成功すれば、ステップS416において、主演算部109は、ブートローダのソフトウェアのハッシュ値を、セキュリティ演算部110内の記憶部111に記憶する。
 ステップS417において、主演算部109は、ブートローダを起動する。署名検証に失敗すれば、主演算部109は、処理を停止する。
 ステップS418において、ブートローダは、OSのソフトウェアの署名検証を行う。
 署名検証に成功すれば、ステップS419において、ブートローダは、OSのソフトウェアのハッシュ値をセキュリティ演算部110内の記憶部111に記憶する。
 ステップS420において、主演算部109は、OSを起動する。署名検証に失敗すれば、主演算部109は、処理を停止する。
 ステップS421において、OSは、アプリケーションのソフトウェアの署名検証を行う。署名検証に成功すれば、ステップS422に進む。署名検証に失敗すれば、主演算部109は、処理を停止する。
 ステップS422において、主演算部109は、アプリケーションのソフトウェアのハッシュ値をセキュリティ演算部110内の記憶部111に記憶する。
 ステップS423において、主演算部109は、アプリケーションを起動する。
 ステップS424において、OSは、起動モードをハッシュチェーンに設定する。
 ステップS425において、セキュリティ演算部110内のウォッチドッグは、所定のイベント発生前にハッシュ値を取得したかを検証する。所定のイベントとは例えば、起動からの経過時間であってもよいし、通信デバイスの使用といったイベントであってもよい。ハッシュ値を取得しなければ処理を停止する。
***本実施の形態の効果の説明***
 本実施の形態に係るソフトウェア検証装置100によれば、実施の形態1と同様の起動高速化、装置単体での完全性検証、およびダウングレードの検知が可能である。また、本実施の形態に係るソフトウェア検証装置100によれば、ソフトウェアの完全性検証は最後に行われるので、通常アクセスにオーバーヘッドのかかるセキュリティ演算部へのアクセス回数を削減することができる。
 実施の形態3.
 本実施の形態では、主に、実施の形態1および2と異なる点について説明する。なお、実施の形態1および2と同様の構成には同一の符号を付し、その説明を省略する場合がある。
***構成の説明***
 実施の形態1および実施の形態2では、前回起動時のソフトウェアのハッシュ値をセキュリティ演算部110内の不揮発メモリである記憶部111に記憶した。本実施の形態では、前回起動時のソフトウェアのハッシュ値を、安全性を保ちながら外部のストレージ103に格納できるようにする方式を示す。ハードウェア構成は図1と同じである。
***動作の説明***
 次に、図8から図11を用いて、本実施の形態に係るソフトウェア検証装置100の動作について説明する。
 図8から図10は、本実施の形態におけるブートの動作を示す。以下に本実施の形態におけるブートの動作の概要について説明する。
 主演算部109は、起動ソフトウェアのMAC(Media Access Control)の有無を判定し、MACが存在すれば、起動ソフトウェアのハッシュ値と起動ソフトウェアのMACを出力する。
 セキュリティ演算部110は、記憶部111に記憶されている構成検証鍵と起動ソフトウェアのハッシュ値からMACの期待値であるMAC期待値を計算し、主演算部109から出力されたMACとMAC期待値とを比較する。構成検証鍵とは、MACを計算するための秘密鍵である。
 主演算部109は、起動ソフトウェアのMACとMAC期待値とが一致すると、起動ソフトウェアを起動する。主演算部109は、起動ソフトウェアのMACとMAC期待値とが一致しなければ処理を停止する。
 具体的には、以下の通りである。
 ステップS501において、電源が投入されると、主演算部109は、ブートROM108に格納されているブートプログラムを実行する。
 ステップS502において、ブートプログラムは、ブートローダのMACの有無を判定する。MACがあれば、ステップS503に進む。MACがなければ、ステップS505に進む。
 ステップS503において、ブートプログラムは、ブートローダのソフトウェアのハッシュ値とMACをセキュリティ演算部110に出力する。
 ステップS504において、セキュリティ演算部110は、構成検証鍵とハッシュ値とからMACの期待値であるMAC期待値を計算する。セキュリティ演算部110は、MAC期待値と、ブートプログラムから出力されたMACとを比較する。一致しなければ処理を停止する。一致すればステップS508に進む。
 次に、主演算部109は、起動ソフトウェアにMACが存在しなければ、起動ソフトウェアの署名検証を行う。主演算部109は、署名検証に成功すれば、起動ソフトウェアのハッシュ値をセキュリティ演算部110に出力する。主演算部109は、署名検証に成功しなければ処理を停止する。
 セキュリティ演算部110は、主演算部109から起動ソフトウェアのハッシュ値を取得すると、構成検証鍵の有無を判定する。構成検証鍵が存在すれば処理を停止する。構成検証鍵が存在しなければ、セキュリティ演算部110は、起動ソフトウェアのハッシュ値を記憶部111に一時記憶する。
 具体的には、以下の通りである。
 ステップS505において、ブートプログラムは、ブートローダのソフトウェアの署名を検証する。検証に失敗したら処理を停止する。検証に成功したら、ステップS506において、ブートプログラムは、ブートローダのソフトウェアのハッシュ値をセキュリティ演算部110に出力する。セキュリティ演算部110は、構成検証鍵の有無を判定し、構成検証鍵があれば処理を停止する。構成検証鍵が無ければ、ステップS507において、セキュリティ演算部110は、ハッシュ値を記憶部111に一時記憶する。
 そして、ステップS508において、主演算部109は、ブートローダを起動する。
 次に、OSについてもブートローダと同様に起動される。
 ステップS509において、ブートローダは、OSのMACの有無を判定する。MACがあれば、ステップS510に進む。MACがなければ、ステップS512に進む。
 ステップS510において、ブートローダは、OSのソフトウェアのハッシュ値とMACをセキュリティ演算部110に出力する。
 ステップS511において、セキュリティ演算部110内で構成検証鍵とハッシュからMACを計算し、ブートローダから出力されたMACと比較する。一致しなければ処理を停止する。一致すれば、ステップS515において、主演算部109は、OSを起動する。
 ステップS509においてOSにMACがなければ、ステップS512において、ブートローダは、OSのソフトウェアの署名を検証する。署名検証に失敗したら処理を停止する。署名検証に成功したら、ステップS513に進む。
 ステップS513において、ブートローダは、OSのソフトウェアのハッシュ値をセキュリティ演算部110に出力する。セキュリティ演算部110は、構成検証鍵の有無を判定し、構成検証鍵があれば処理を停止する。構成検証鍵が無ければ、ステップS514において、セキュリティ演算部110は、OSのハッシュ値を記憶部111に一時記憶する。
 そして、ステップS515において、主演算部109は、OSを起動する。
 次に、アプリケーションについてもブートローダおよびOSと同様に起動される。
 ステップS516において、OSは、アプリケーションのMACの有無を判定する。MACがあれば、ステップS517に進む。MACがなければ、ステップS519に進む。
 ステップS517において、OSは、アプリケーションのソフトウェアのハッシュ値とMACをセキュリティ演算部110に出力する。
 ステップS518において、セキュリティ演算部110内で構成検証鍵とハッシュ値からMACを計算し、OSから出力されたMACと比較する。一致しなければ処理を停止する。一致すれば、ステップS522において、主演算部109でアプリケーションを起動する。
 ステップS516においてアプリケーションにMACがなければ、ステップS519において、アプリケーションのソフトウェアの署名を検証する。署名検証に失敗したら処理を停止する。署名検証に成功したら、ステップS520において、OSは、アプリケーションのソフトウェアのハッシュ値をセキュリティ演算部110に出力する。セキュリティ演算部110は、構成検証鍵の有無を判定し、構成検証鍵があれば処理を停止する。構成検証鍵が無ければ、ステップS521において、セキュリティ演算部110は、アプリケーションのハッシュ値を記憶部111に一時記憶する。
 そして、ステップS522において、主演算部109でアプリケーションを起動する。
 次に、セキュリティ演算部110は、全ての起動ソフトウェアの起動が完了すると、構成検証鍵を生成する。構成検証鍵を生成するとは、乱数を生成し、その乱数を構成検証鍵とすることである。そして、セキュリティ演算部110は、構成検証鍵と記憶部111に一時保存したハッシュ値とから、複数の起動ソフトウェアの各起動ソフトウェアのMACを算出する。
 主演算部109は、複数の起動ソフトウェアの各起動ソフトウェアのMACを不揮発性のストレージ103に記憶する。
 具体的には、以下の通りである。
 ステップS523において、主演算部109は、起動すべき全ての起動ソフトウェアを起動したら、起動終了をセキュリティ演算部110に伝達する。
 ステップS524において、セキュリティ演算部110は、記憶部111に一時記憶したハッシュ値の有無を判定し、無ければ正常終了する。記憶部111に一時記憶したハッシュ値があれば、ステップS525において、セキュリティ演算部110は構成検証鍵を生成する。
 ステップS526において、セキュリティ演算部110は、構成検証鍵と、記憶部111に一時記憶した各起動ソフトウェアのハッシュ値から、各起動ソフトウェアのMACを計算し、主演算部109に出力する。
 ステップS527において、主演算部109は、セキュリティ演算部110から取得した各起動ソフトウェアのMACをストレージ103に記憶する。
 図11は、本実施の形態におけるソフトウェア更新の動作を示す。以下に本実施の形態におけるソフトウェア更新の概要について説明する。
 主演算部109は、更新ソフトウェアと更新ソフトウェアの署名を取得し、更新ソフトウェアの署名検証とバージョンチェックを行う。主演算部109は、更新ソフトウェアの署名検証とバージョンチェックが成功すると、更新前の起動ソフトウェアのハッシュ値を計算し、更新前の起動ソフトウェアのハッシュ値とストレージ103に記憶された更新前の起動ソフトウェアのMACとをセキュリティ演算部110に出力する。
 セキュリティ演算部110は、主演算部109から出力されたハッシュ値と記憶部111に記憶されている更新検証鍵とから更新前の起動ソフトウェアのMACを計算する。セキュリティ演算部110は、計算したMACと、主演算部109から出力されたMACとを比較する。
 セキュリティ演算部110により計算されたMACと、主演算部109から出力されたMACが全て一致すれば、主演算部109は、更新ソフトウェアと署名を書き込み、更新ソフトウェアのハッシュ値を計算する。主演算部109は、更新ソフトウェアのハッシュ値をセキュリティ演算部110に出力する。
 セキュリティ演算部110は、検証構成鍵を再生成し、再生成した検証構成鍵と更新ソフトウェアのハッシュ値とを用いて、更新ソフトウェアのMACを計算する。検証構成鍵を再生成するとは、乱数を生成し、その乱数を構成検証鍵とすることである。
 主演算部109は、更新ソフトウェアのMACをストレージ103に記憶する。
 具体的には、以下の通りである。
 ステップS601において、更新対象の更新ソフトウェアとその署名とがダウンロードされる。
 ステップS602において、主演算部109は、更新ソフトウェアの署名とバージョンとを検証する。バージョン検証は、具体的には、リストによる照合といった手法を用いる。検証に失敗したら、主演算部109は、異常終了として処理を中止する。検証に成功したら、ステップS603に進む。
 ステップS603において、主演算部109は、更新前の各起動ソフトウェアのハッシュ値を計算し、各起動ソフトウェアのハッシュ値と各起動ソフトウェアのMACをセキュリティ演算部110に出力する。更新前の各起動ソフトウェアのMACはストレージ103に記憶されている。
 ステップS604において、セキュリティ演算部110は、構成検証鍵とハッシュ値からMACを計算する。セキュリティ演算部110は、計算したMACと、主演算部109から出力されたMACとを比較し、比較結果を主演算部109に返す。主演算部109は、1つでも結果が一致しないものがあれば処理を終了する。全て一致すれば、ステップS605において、主演算部109は、更新ソフトウェアと署名をストレージ103またはメモリ104に書き込む。
 ステップS606において、主演算部109は書き込み後の各更新ソフトウェアのハッシュ値をセキュリティ演算部110に出力する。
 ステップS607において、セキュリティ演算部110は、構成検証鍵を再生成する。
 ステップS608において、セキュリティ演算部110は、再生成した構成検証鍵と、主演算部109から出力されたハッシュ値とから各更新ソフトウェアのMACを計算し、主演算部109に出力する。
 ステップS609において、主演算部109は、セキュリティ演算部110から取得した各更新ソフトウェアのMACをストレージ103に記憶する。
***本実施の形態の効果の説明***
 本実施の形態に係るソフトウェア検証装置100によれば、実施の形態1と同様の起動高速化、装置単体での完全性検証、ダウングレードの検知が可能である。また、本実施の形態に係るソフトウェア検証装置100によれば、期待値を非セキュアな領域、すなわちストレージに記憶しても、改ざんあるいは消去、および、ダウングレードといった攻撃を検知可能である。また、MACをストレージに外だしできるため、セキュリティ演算部の格納領域に制限がある場合にも有効である。
 本実施の形態に係るソフトウェア検証装置100によれば、万が一、不正にMACが改ざんされたり、消去されたりしても、構成検証鍵によるMAC検証あるいは構成検証鍵の有無を判定することで、MACの不正な改ざんあるいは消去による不正プログラムの起動およびダウングレードを検証可能となる。
 実施の形態4.
 本実施の形態では、主に、実施の形態1から3と異なる点について説明する。なお、実施の形態1から3と同様の構成には同一の符号を付し、その説明を省略する場合がある。
***構成の説明***
 実施の形態1から3では、公開鍵演算の削減、すなわち署名検証の削減により、処理の高速化という効果を得られた。本実施の形態では、公開鍵演算を高速に演算できるプロセッサにおいて、ダウングレードを防止する方式を示す。ハードウェア構成は図1と同じである。
***動作の説明***
 次に、図12から図13を用いて、本実施の形態に係るソフトウェア検証装置100の動作について説明する。
 図12は、本実施の形態におけるブートの動作を示す。以下に本実施の形態におけるブートの動作の概要について説明する。
 セキュリティ演算部110は、複数の起動ソフトウェアのうち起動対象の起動ソフトウェアの署名検証を行い、署名検証に成功すれば起動ソフトウェアのハッシュ値を計算し、記憶部111に一時記憶する。
 主演算部109は、署名検証に成功しなければ処理を停止する。一方、署名検証に成功すると、主演算部109は、起動ソフトウェアを起動する。
 主演算部109は、複数の起動ソフトウェアの最後の起動ソフトウェアを起動すると、一時記憶された全てのハッシュ値を加算し、加算結果を出力する。
 セキュリティ演算部110は、記憶部111に加算結果の期待値である加算結果期待値が記憶されているかを判定し、加算結果期待値が無ければ、加算結果を加算結果期待値として記憶部111に記憶する。一方、加算結果期待値が存在すれば、セキュリティ演算部110は、主演算部109から出力された加算結果と加算結果期待値とを比較する。
 主演算部109は、加算結果と加算結果期待値とが一致しなければ処理を停止する。加算結果と加算結果期待値とが一致すれば正常終了する。
 具体的には、以下の通りである。
 ステップS701において、電源が投入されると、主演算部109はブートROMに格納されているブートプログラムを実行する。
 ステップS702において、ブートプログラムは、ブートローダのソフトウェアの署名を検証する。署名検証が成功すれば、ステップS703において、ブートプログラムは、ブートローダのソフトウェアのハッシュ値を生成する。そして、ステップS704において、主演算部109は、ブートローダを起動する。署名検証が成功しなければ、主演算部109は、処理を停止する。
 ステップS705において、ブートローダは、OSのソフトウェアの署名を検証する。署名検証が成功すれば、ステップS706において、ブートローダは、OSのソフトウェアのハッシュ値を生成する。そして、ステップS707において、主演算部109は、OSを起動する。署名検証が成功しなければ、主演算部109は、処理を停止する。
 ステップS708において、OSは、アプリケーションのソフトウェアの署名を検証する。署名検証に成功すれば、ステップS709において、OSは、アプリケーションのソフトウェアのハッシュ値を生成する。そして、ステップS710において、主演算部109は、アプリケーションを起動する。署名検証が成功しなければ、主演算部109は、処理を停止する。
 ここで、アプリケーションは、複数の起動プログラムのうち最後に起動されるプログラムである。
 ステップS711において、アプリケーションは、これまでに生成したハッシュ値を加算し、加算結果をセキュリティ演算部110に出力する。加算には排他的論理和を用いる。ステップS712において、セキュリティ演算部110は、記憶部111に加算結果の期待値である加算結果期待値が記憶されているか否かを判定する。記憶部111に加算結果期待値がなければ、ステップS713において、アプリケーションから出力された加算結果を加算結果期待値として記憶部111に記憶して終了する。ステップS714において、記憶部111に加算結果期待値があれば、セキュリティ演算部110は、加算結果期待値と主演算部109から出力された加算結果とを比較する。両者が一致すれば正常終了する。両者が一致しなければ処理を停止する。
 図13は本実施の形態におけるソフトウェア更新の動作を示す。以下に本実施の形態におけるソフトウェア更新の概要について説明する。
 セキュリティ演算部110は、複数の更新ソフトウェアの各々と、複数の更新ソフトウェアの各々の署名を取得し、更新前の各起動ソフトウェアのハッシュ値を加算した加算結果を算出する。そして、セキュリティ演算部110は、算出した加算結果と加算結果期待値とを比較する。
 主演算部109は、加算結果と加算結果期待値とが一致しなければ、異常終了として処理を停止する。一方、主演算部109は、加算結果と加算結果期待値とが一致すれば、複数の更新ソフトウェアの各々と複数の更新ソフトウェアの各々の署名をストレージ103またはメモリ104に書き込む。
 セキュリティ演算部110は、更新後の各更新ソフトウェアのハッシュ値を計算する。セキュリティ演算部110は、各更新ソフトウェアのハッシュ値を加算した加算結果を加算結果期待値として記憶部111に記憶するとともに、複数の起動ソフトウェアの各々のハッシュ値を記憶部111に記憶する。
 具体的には、以下の通りである。
 ステップS801において、更新対象の更新ソフトウェアと署名がダウンロードされる。ステップS802において、主演算部109は、更新ソフトウェアの署名とバージョンを検証する。バージョン検証はリストによる照合といった手法でよい。検証に失敗したら、主演算部109は、異常終了として処理を停止する。検証に成功したら、ステップS803において、主演算部109は、更新前の各起動ソフトウェアのハッシュ値を計算する。ステップS804において、主演算部109は、計算したハッシュを加算してセキュリティ演算部110に出力する。加算には排他的論理和を用いる。ステップS805において、セキュリティ演算部110は、出力された加算結果と、記憶部111に記憶された加算結果期待値を比較し、結果を主演算部109に返す。
 主演算部109は、結果が一致しなければ処理を異常終了する。結果が一致すれば、ステップS806において、主演算部109は、更新ソフトウェアと署名をストレージ103またはメモリ104に書き込む。ステップS807において、主演算部109は、更新後の更新ソフトウェアのハッシュ値を計算する。ステップS808において、ステップS803で計算した更新前の起動ソフトウェアのハッシュ値と、ステップS804で計算した加算結果と、ステップS807で計算した更新後の更新ソフトウェアのハッシュ値を加算する。ステップS809において、主演算部109は、ステップS808で算出された加算結果をセキュリティ演算部110に出力する。ステップS810において、セキュリティ演算部110は、ステップS808で算出された加算結果を記憶部111に記憶する。
 本実施の形態では、加算に排他的論理和を用いる例を示した。しかし、例えば算術加算といった任意の算法を用いてよい。また、更新後の更新ソフトウェアにおける第1加算結果の算出方法も使用する算法に合わせる必要がある。
***本実施の形態の効果の説明***
 本実施の形態に係るソフトウェア検証装置100によれば、前回実行時の各ソフトウェアの加算結果を残しておくことで、ブート後にダウングレードされても、次回のブート時に検証可能となる。また、本実施の形態に係るソフトウェア検証装置100によれば、各ソフトウェアのハッシュ値をセキュリティ演算部に記憶する方式に比べ、セキュリティ演算部へのアクセス回数を減らすことで、処理の高速化が期待できる。さらに、本実施の形態に係るソフトウェア検証装置100によれば、検証が機器内部に閉じるため、装置単体での完全性検証が可能となる。さらに、ハッシュ値の加算に排他的論理和を用いることで、ソフトウェア更新時の更新後の加算結果の計算を容易にできる。
 実施の形態5.
 本実施の形態では、主に、実施の形態1から4と異なる点について説明する。なお、実施の形態1から4と同様の構成には同一の符号を付し、その説明を省略する場合がある。
***構成の説明***
 実施の形態4では、公開鍵演算を高速に演算できるプロセッサにおいて、ダウングレードを防止する方式を示した。本実施の形態では、さらにハッシュを、安全性を保ちながら外部のストレージ103に記憶できるようにする方式を示す。ハードウェア構成は図1と同じである。
***動作の説明***
 次に、図14から図16を用いて、本実施の形態に係るソフトウェア検証装置100の動作について説明する。
 図14から図15は、本実施の形態におけるブートの動作を示す。以下に本実施の形態におけるブートの動作の概要について説明する。
 主演算部109は、複数の起動ソフトウェアのうち起動対象の起動ソフトウェアの署名検証を行う。署名検証に成功すれば、主演算部109は、起動ソフトウェアのハッシュ値を計算し、セキュリティ演算部110内の記憶部111に一時記憶するとともに、起動ソフトウェアを起動する。
 主演算部109は、署名検証に成功しなければ処理を停止する。
 主演算部109は、複数の起動ソフトウェアの最後の起動ソフトウェアを起動すると、記憶部111に一時記憶された全てのハッシュ値を加算し、加算結果を出力する。また、主演算部109は、加算結果のMACの有無を判定し、加算結果にMACが存在すれば、加算結果と加算結果のMACを出力する。
 セキュリティ演算部110は、記憶部111に予め記憶されている構成検証鍵と、主演算部109から出力された加算結果からMACの期待値であるMAC期待値を計算する。そして、セキュリティ演算部110は、MAC期待値と、主演算部109から出力されたMACとを比較する。
 主演算部109は、MAC期待値と主演算部109から出力されたMACとが一致しなければ処理を停止し、MAC期待値と主演算部109から出力されたMACとが一致すれば、正常終了する。
 セキュリティ演算部110は、加算結果にMACが存在しなければ、記憶部111に構成検証鍵が存在するかを判定する。構成検証鍵が記憶されていなければ、セキュリティ演算部110は、構成検証鍵を生成する。そして、セキュリティ演算部110は、構成検証鍵と加算結果から加算結果のMACを生成する。
 構成検証鍵が記憶されていると、主演算部109は、処理を停止する。一方、加算結果のMACが生成されると、主演算部109は、加算結果のMACをストレージ103に記憶する。
 具体的には、以下の通りである。
 ステップS901において、電源が投入されると、主演算部109は、ブートROMに格納されているブートプログラムを実行する。
 ステップS902において、ブートプログラムは、ブートローダのソフトウェアの署名を検証する。署名検証に成功すれば、ブートプログラムは、ブートローダのソフトウェアのハッシュ値を生成し(ステップS903)、ブートローダを起動する(ステップS904)。署名検証に失敗すれば、ブートプログラムは、処理を停止する。
 ステップS905において、ブートローダは、OSのソフトウェアの署名を検証する。署名検証に成功すれば、ブートローダは、OSのソフトウェアのハッシュ値を生成し(ステップS906)、OSを起動する(ステップS907)。署名検証に失敗すれば、ブートローダは、処理を停止する。
 ステップS908において、OSは、アプリケーションのソフトウェアの署名を検証する。署名検証に成功すれば、OSは、アプリケーションのソフトウェアのハッシュ値を生成し(ステップS909)、アプリケーションを起動する(ステップS910)。署名検証に失敗すれば、OSは、処理を停止する。
 ステップS911において、アプリケーションはこれまでに生成したハッシュを加算する。加算には排他的論理和を用いる。ステップS912において、アプリケーションは、記憶されたMACの有無を判定する。記憶されたMACがあれば、ステップS913において、アプリケーションは、加算結果とMACをセキュリティ演算部110に出力する。記憶されたMACが無ければ、ステップS915において、アプリケーションは、加算結果をセキュリティ演算部110に出力する。
 ステップS914において、加算結果とMACを受け取ったセキュリティ演算部110は、構成検証鍵と加算結果からMACをMAC期待値として計算し、アプリケーションから出力されたMACと比較する。両者が一致すれば正常終了し、両者が一致しなければ処理を停止する。
 一方、加算結果を受け取ったセキュリティ演算部110は、構成検証鍵の有無を確認し、構成検証鍵があれば処理を停止する。構成検証鍵が無ければ、ステップS916において、セキュリティ演算部110は、構成検証鍵を生成する。ステップS917において、セキュリティ演算部110は、構成検証鍵と加算結果からMACを計算し、主演算部109に出力する。ステップS918において、主演算部109はMACを不揮発性のストレージ103に記憶し、正常終了する。不正な削除からMACを保護するため、MACは、ストレージ103ではなく、セキュリティ演算部110の記憶部111に記憶してもよい。
 図16は本実施の形態におけるソフトウェア更新の動作を示す。以下に本実施の形態におけるソフトウェア更新の概要について説明する。
 主演算部109は、複数の更新ソフトウェアの各々と複数の更新ソフトウェアの各々の署名を取得する。そして、主演算部109は、更新前の各起動ソフトウェアのハッシュ値を加算した加算結果とその加算結果のMACを算出する。主演算部109は、更新前の各起動ソフトウェアのハッシュ値を加算した加算結果とその加算結果のMACを出力する。
 セキュリティ演算部110は、構成検証鍵と加算結果からMACをMAC期待値として計算し、加算結果のMACとMAC期待値とを比較する。
 主演算部109は、加算結果のMACとMAC期待値が一致しなければ、処理を停止する。一方、加算結果のMACとMAC期待値が一致すれば、主演算部109は、複数の更新ソフトウェアの各々と複数の更新ソフトウェアの各々の署名をストレージ103またはメモリ104に書き込む。
 主演算部109は、更新後の各更新ソフトウェアのハッシュ値を計算し、更新前の各起動ソフトウェアのハッシュ値と、更新前の各起動ソフトウェアのハッシュ値を加算した加算結果と、更新後の各更新ソフトウェアのハッシュ値を第1加算結果として加算する。主演算部109は、第1加算結果をセキュリティ演算部110に出力する。
 セキュリティ演算部110は、構成検証鍵を再生成し、構成検証鍵と第1加算結果とから第1加算結果のMACを計算する。
 主演算部109は、第1加算結果のMACをストレージ103に記憶する。
 具体的には、以下の通りである。
 ステップS1001からステップS1003の処理は、ステップS801からステップS803の処理と同様である。
 ステップS1004において、主演算部109は、更新前の各起動ソフトウェアのハッシュ値を加算し、MACとともにセキュリティ演算部110に出力する。加算には排他的論理和を用いる。ステップS1005において、セキュリティ演算部110は、主演算部109から出力された加算結果と構成検証鍵からMACを計算し、主演算部109から出力されたMACと比較する。セキュリティ演算部110は、比較結果を主演算部109に返す。
 主演算部109は、比較結果が一致でなければ処理を終了する。比較結果が一致であれば、ステップS1006において、主演算部109は、更新ソフトウェアと署名をストレージ103またはメモリ104に書き込む。ステップS1007において、主演算部109は、更新後の各更新ソフトウェアのハッシュ値を計算する。ステップS1008において、ステップS1003で計算した更新前の各起動ソフトウェアのハッシュ値と、ステップS1004で計算した加算結果と、ステップS1007で計算した更新後の各更新ソフトウェアのハッシュ値を第1加算結果として加算する。ステップS1009において、主演算部109は、第1加算結果をセキュリティ演算部110に出力する。ステップS1010において、セキュリティ演算部110は、構成検証鍵を再生成する。ステップS1011において、セキュリティ演算部110は、構成検証鍵と第1加算結果からMACを計算し、主演算部109に出力する。ステップS1012において、主演算部109は、第1加算結果のMACをストレージ103に記憶する。不正な削除からMACを保護するため、MACをストレージ103ではなく、セキュリティ演算部110の記憶部111に格納してもよい。
 本実施の形態では加算に排他的論理和を用いる例を示した。しかし、例えば算術加算といった任意の算法を用いてよい。また、ソフトウェア更新後の更新ソフトウェアにおける加算結果の算出方法も使用する算法に合わせる必要がある。
***本実施の形態の効果の説明***
 本実施の形態に係るソフトウェア検証装置100によれば、実施の形態4の効果に加え、MACをストレージに外だしできるため、セキュリティ演算部の格納領域に制限がある場合にも有効である。
 本実施の形態に係るソフトウェア検証装置100によれば、構成検証鍵によるMAC検証、あるいは、構成検証鍵の有無の判定を行っている。よって、本実施の形態に係るソフトウェア検証装置100によれば、万が一、不正にMACが改ざんされたり、消去されたりしても、MACの不正な改ざん、あるいは消去による不正プログラムの起動あるいはダウングレードが検証可能となる。
 以上の実施の形態1から5では、ソフトウェア検証装置の各部を独立した機能ブロックとして説明した。しかし、ソフトウェア検証装置の構成は、上述した実施の形態のような構成でなくてもよい。ソフトウェア検証装置の機能ブロックは、上述した実施の形態で説明した機能を実現することができれば、どのような構成でもよい。また、ソフトウェア検証装置は、1つの装置でなく、複数の装置から構成されたシステムでもよい。
 また、実施の形態1から5のうち、複数の部分を組み合わせて実施しても構わない。あるいは、これらの実施の形態のうち、1つの部分を実施しても構わない。その他、これら実施の形態を、全体としてあるいは部分的に、どのように組み合わせて実施しても構わない。
 すなわち、実施の形態1から5では、各実施の形態の自由な組み合わせ、あるいは各実施の形態の任意の構成要素の変形、もしくは各実施の形態において任意の構成要素の省略が可能である。
 なお、上述した実施の形態は、本質的に好ましい例示であって、本発明の範囲、本発明の適用物の範囲、および本発明の用途の範囲を制限することを意図するものではない。上述した実施の形態は、必要に応じて種々の変更が可能である。
 100 ソフトウェア検証装置、102 プロセッサ、103 ストレージ、104 メモリ、104 メモリ、105 通信デバイス、106 入力デバイス、107 表示デバイス、108 ブートROM、109 主演算部、110 セキュリティ演算部、111 記憶部、112 電子回路。

Claims (13)

  1.  起動対象である起動ソフトウェアを起動するソフトウェア検証装置において、
     記憶部を備え、前記起動ソフトウェアのハッシュ値の期待値であるハッシュ期待値が前記記憶部に記憶されていれば、前記起動ソフトウェアのハッシュ値と前記ハッシュ期待値とを比較するセキュリティ演算部と、
     前記ハッシュ値と前記ハッシュ期待値とが一致すると前記起動ソフトウェアを起動し、一致しなければ処理を停止する主演算部と
    を備え、
     前記主演算部は、
     前記ハッシュ期待値が前記記憶部に記憶されていなければ前記起動ソフトウェアの署名検証を行い、署名検証に成功すれば前記起動ソフトウェアのハッシュ値を前記ハッシュ期待値として前記記憶部に記憶するとともに前記起動ソフトウェアを起動し、署名検証に成功しなければ処理を停止するソフトウェア検証装置。
  2.  N個(Nは2以上の整数)の起動ソフトウェアを順に起動するソフトウェア検証装置であって、前記N個の起動ソフトウェアからハッシュチェーンを生成するハッシュチェーンモードと、前記N個の起動ソフトウェアの各々について署名検証を行う署名検証モードとのいずれかの起動モードで起動するソフトウェア検証装置において、
     前記ハッシュチェーンモードで起動されると、前記N個の起動ソフトウェアのうち1番目に起動される先起動ソフトウェアのハッシュ値を取得するとともにランダムなデータ列を生成し、前記先起動ソフトウェアのハッシュ値と前記データ列とのハッシュ値を第1ハッシュチェーンとして生成するセキュリティ演算部と、
     前記第1ハッシュチェーンが生成されると、前記先起動ソフトウェアを起動する主演算部と
    を備え、
     前記主演算部は、
     前記N個の起動ソフトウェアのうちk番目(kは2以上N以下の整数)に起動される次起動ソフトウェアのハッシュ値を取得し、第(k-1)ハッシュチェーンと前記次起動ソフトウェアのハッシュ値とのハッシュ値を第kハッシュチェーンとして生成するとともに前記次起動ソフトウェアを起動し、前記次起動ソフトウェアが前記N個の起動ソフトウェアのうち最後に起動される起動ソフトウェアであれば、前記第kハッシュチェーンを前記セキュリティ演算部に出力し、
     前記セキュリティ演算部は、
     記憶部を備え、前記N個の起動ソフトウェアの各々のハッシュ値が前記記憶部に記憶されていれば、前記N個の起動ソフトウェアの各々のハッシュ値と前記データ列とを用いて、前記第kハッシュチェーンの期待値をハッシュチェーン期待値として計算し、前記第kハッシュチェーンを前記ハッシュチェーン期待値と比較し、
     前記主演算部は、
     前記第kハッシュチェーンと前記ハッシュチェーン期待値とが一致すれば正常終了し、一致しなければ処理を停止し、前記N個の起動ソフトウェアの各々のハッシュ値が前記記憶部に記憶されていなければ前記起動モードを前記署名検証モードに設定して再起動するソフトウェア検証装置。
  3.  前記主演算部は、
     前記署名検証モードで起動されると、前記N個の起動ソフトウェアの各起動ソフトウェアについて署名検証を行い、署名検証に成功すれば各起動ソフトウェアのハッシュ値を前記記憶部に記憶するとともに各起動ソフトウェアを起動し、前記N個の起動ソフトウェアの全ての署名検証に成功すると、前記起動モードを前記ハッシュチェーンモードに設定し、署名検証に失敗すると処理を停止する請求項2に記載のソフトウェア検証装置。
  4.  起動ソフトウェアのMAC(Media Access Control)の有無を判定し、MACが存在すれば、前記起動ソフトウェアのハッシュ値と前記起動ソフトウェアのMACを出力する主演算部と、
     記憶部を備え、前記記憶部に記憶されている構成検証鍵と前記起動ソフトウェアのハッシュ値からMACの期待値であるMAC期待値を計算し、前記主演算部から出力されたMACと前記MAC期待値とを比較するセキュリティ演算部と
    を備え、
     前記主演算部は、
     前記主演算部から出力されたMACと前記MAC期待値とが一致すると、前記起動ソフトウェアを起動し、前記主演算部から出力されたMACと前記MAC期待値とが一致しなければ処理を停止するソフトウェア検証装置。
  5.  前記主演算部は、
     前記起動ソフトウェアにMACが存在しなければ、前記起動ソフトウェアの署名検証を行い、署名検証に成功すれば、前記起動ソフトウェアのハッシュ値を前記セキュリティ演算部に出力し、署名検証に成功しなければ処理を停止し、
     前記セキュリティ演算部は、
     前記主演算部から前記起動ソフトウェアのハッシュ値を取得すると、前記構成検証鍵の有無を判定し、前記構成検証鍵が存在すれば処理を停止し、前記構成検証鍵が存在しなければ、前記起動ソフトウェアのハッシュ値を前記記憶部に一時記憶する請求項4に記載のソフトウェア検証装置。
  6.  前記ソフトウェア検証装置は、複数の起動ソフトウェアを起動し、
     前記セキュリティ演算部は、
     全ての起動ソフトウェアの起動が完了すると、前記構成検証鍵を生成し、前記構成検証鍵と前記記憶部に一時保存したハッシュ値とから、前記複数の起動ソフトウェアの各起動ソフトウェアのMACを算出し、
     前記主演算部は、
     前記複数の起動ソフトウェアの各起動ソフトウェアのMACを不揮発性のストレージに記憶する請求項4または請求項5に記載のソフトウェア検証装置。
  7.  前記主演算部は、
     更新ソフトウェアと前記更新ソフトウェアの署名を取得し、前記更新ソフトウェアの署名検証とバージョンチェックが成功すると、更新前の起動ソフトウェアのハッシュ値を計算し、前記更新前の起動ソフトウェアのハッシュ値と前記ストレージに記憶された前記更新前の起動ソフトウェアのMACとを前記セキュリティ演算部に出力し、
     前記セキュリティ演算部は、
     前記主演算部から出力されたハッシュ値と前記構成検証鍵とから前記更新前の起動ソフトウェアのMACを計算し、計算したMACと前記主演算部から出力されたMACとを比較し、
     前記主演算部は、
     前記計算したMACと前記主演算部から出力されたMACが全て一致すれば、前記更新ソフトウェアと署名を書き込み、前記更新ソフトウェアのハッシュ値を計算し、前記セキュリティ演算部に出力し、
     前記セキュリティ演算部は、
     前記構成検証鍵を再生成し、再生成した構成検証鍵と前記更新ソフトウェアのハッシュ値とを用いて、前記更新ソフトウェアのMACを計算し、
     前記主演算部は、
     前記更新ソフトウェアのMACを前記ストレージに記憶する請求項6に記載のソフトウェア検証装置。
  8.  複数の起動ソフトウェアを順に起動するソフトウェア検証装置において、
     記憶部を備え、前記複数の起動ソフトウェアのうち起動対象の起動ソフトウェアの署名検証を行い、署名検証に成功すれば前記起動ソフトウェアのハッシュ値を計算し、前記記憶部に一時記憶するセキュリティ演算部と、
     前記起動ソフトウェアの署名検証に成功しなければ処理を停止し、前記起動ソフトウェアの署名検証が成功すると前記起動ソフトウェアを起動する主演算部と
    を備え、
     前記主演算部は、
     前記複数の起動ソフトウェアの最後の起動ソフトウェアを起動すると、一時記憶された全てのハッシュ値を加算し、加算結果を出力し、
     前記セキュリティ演算部は、
     前記記憶部に加算結果の期待値である加算結果期待値が記憶されているかを判定し、前記加算結果期待値が無ければ、前記加算結果を前記加算結果期待値として前記記憶部に記憶し、前記加算結果期待値が存在すれば、前記主演算部から出力された前記加算結果と前記加算結果期待値とを比較し、
     前記主演算部は、
     前記加算結果と前記加算結果期待値とが一致しなければ処理を停止し、前記加算結果と前記加算結果期待値とが一致すれば正常終了するソフトウェア検証装置。
  9.  前記セキュリティ演算部は、
     複数の更新ソフトウェアの各々と前記複数の更新ソフトウェアの各々の署名を取得し、更新前の各起動ソフトウェアのハッシュ値を加算した加算結果を算出し、算出した前記加算結果と前記加算結果期待値とを比較し、
     前記主演算部は、
     前記加算結果と前記加算結果期待値とが一致しなければ、処理を停止し、前記加算結果と前記加算結果期待値とが一致すれば、前記複数の更新ソフトウェアの各々と前記複数の更新ソフトウェアの各々の署名を書き込み、
     前記セキュリティ演算部は、
     更新後の各更新ソフトウェアのハッシュ値を計算し、各更新ソフトウェアのハッシュ値を加算した加算結果を、前記加算結果期待値として前記記憶部に記憶するとともに、前記複数の更新ソフトウェアの各々のハッシュ値を前記記憶部に記憶する請求項8に記載のソフトウェア検証装置。
  10.  複数の起動ソフトウェアを順に起動するソフトウェア検証装置において、
     記憶部を備えたセキュリティ演算部と、
     前記複数の起動ソフトウェアのうち起動対象の起動ソフトウェアの署名検証を行い、署名検証に成功すれば、前記起動ソフトウェアのハッシュ値を計算し、前記記憶部に一時記憶するとともに前記起動ソフトウェアを起動し、署名検証に成功しなければ処理を停止する主演算部と
    を備え、
     前記主演算部は、
     前記複数の起動ソフトウェアの最後の起動ソフトウェアを起動すると、一時記憶された全てのハッシュ値を加算し、加算結果を出力し、前記加算結果のMACの有無を判定し、前記加算結果にMACが存在すれば、前記加算結果と前記加算結果のMACを出力し、
     前記セキュリティ演算部は、
     前記記憶部に記憶されている構成検証鍵と前記加算結果から、MACの期待値であるMAC期待値を計算し、前記MAC期待値と前記主演算部から出力されたMACとを比較し、
     前記主演算部は、
     前記MAC期待値と前記出力されたMACとが一致しなければ処理を停止し、前記MAC期待値と前記出力されたMACとが一致すれば、正常終了し、
     前記セキュリティ演算部は、
     前記加算結果にMACが存在しなければ、記憶部111に構成検証鍵が存在するかを判定し、前記構成検証鍵が記憶されていなければ、前記構成検証鍵を生成し、前記構成検証鍵と前記加算結果から前記加算結果のMACを生成し、
     前記主演算部は、
     前記構成検証鍵が記憶されていれば処理を停止し、前記加算結果のMACが生成されると前記加算結果のMACをストレージに記憶するソフトウェア検証装置。
  11.  前記主演算部は、
     複数の更新ソフトウェアの各々と前記複数の更新ソフトウェアの各々の署名を取得し、更新前の各起動ソフトウェアのハッシュ値を加算した加算結果と前記加算結果のMACを算出し、前記加算結果と前記加算結果のMACを出力し、
     前記セキュリティ演算部は、
     前記構成検証鍵と前記加算結果からMACを計算し、前記加算結果のMACと、前記計算されたMACとを比較し、
     前記主演算部は、
     前記加算結果のMACと前記計算されたMACが一致しなければ、処理を停止し、前記加算結果のMACと前記計算されたMACが一致すれば、前記複数の更新ソフトウェアの各々と前記複数の更新ソフトウェアの各々の署名を書き込み、
     前記主演算部は、
     更新後の各起動ソフトウェアのハッシュ値を計算し、更新前の各起動ソフトウェアのハッシュ値と、前記加算結果と、更新後の各起動ソフトウェアのハッシュ値を第1加算結果として加算し、前記第1加算結果を出力し、
     前記セキュリティ演算部は、
     構成検証鍵を再生成し、前記構成検証鍵と前記第1加算結果とから前記第1加算結果のMACを計算し、
     主演算部は、前記第1加算結果のMACを前記ストレージに記憶する請求項10に記載のソフトウェア検証装置。
  12.  起動対象である起動ソフトウェアを起動するソフトウェア検証装置のソフトウェア検証方法において、
     セキュリティ演算部が、前記起動ソフトウェアのハッシュ値の期待値であるハッシュ期待値が記憶部に記憶されていれば、前記起動ソフトウェアのハッシュ値と前記ハッシュ期待値とを比較し、
     主演算部は、前記ハッシュ値と前記ハッシュ期待値とが一致すると前記起動ソフトウェアを起動し、一致しなければ処理を停止し、
     主演算部は、前記ハッシュ期待値が前記記憶部に記憶されていなければ前記起動ソフトウェアの署名検証を行い、署名検証に成功すれば前記起動ソフトウェアのハッシュ値を前記ハッシュ期待値として前記記憶部に記憶するとともに前記起動ソフトウェアを起動し、署名検証に成功しなければ処理を停止するソフトウェア検証方法。
  13.  起動対象である起動ソフトウェアを起動するソフトウェア検証装置のソフトウェア検証プログラムにおいて、
     前記起動ソフトウェアのハッシュ値の期待値であるハッシュ期待値が記憶部に記憶されていれば、前記起動ソフトウェアのハッシュ値と前記ハッシュ期待値とを比較するセキュリティ演算処理と、
     前記ハッシュ値と前記ハッシュ期待値とが一致すると前記起動ソフトウェアを起動し、一致しなければ処理を停止する主演算処理と
    をコンピュータである前記ソフトウェア検証装置に実行させるソフトウェア検証プログラムであって、
     前記主演算処理は、
     前記ハッシュ期待値が前記記憶部に記憶されていなければ前記起動ソフトウェアの署名検証を行い、署名検証に成功すれば前記起動ソフトウェアのハッシュ値を前記ハッシュ期待値として前記記憶部に記憶するとともに前記起動ソフトウェアを起動し、署名検証に成功しなければ処理を停止するソフトウェア検証プログラム。
PCT/JP2018/038210 2018-10-12 2018-10-12 ソフトウェア検証装置、ソフトウェア検証方法およびソフトウェア検証プログラム WO2020075303A1 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
PCT/JP2018/038210 WO2020075303A1 (ja) 2018-10-12 2018-10-12 ソフトウェア検証装置、ソフトウェア検証方法およびソフトウェア検証プログラム
DE112018007934.1T DE112018007934B4 (de) 2018-10-12 2018-10-12 Softwareprüfvorrichtung, softwareprüfverfahren und softwareprüfprogramm
JP2020549929A JP6925542B2 (ja) 2018-10-12 2018-10-12 ソフトウェア検証装置、ソフトウェア検証方法およびソフトウェア検証プログラム
CN201880098423.8A CN112805703A (zh) 2018-10-12 2018-10-12 软件验证装置、软件验证方法以及软件验证程序
US17/191,369 US11914682B2 (en) 2018-10-12 2021-03-03 Software verification device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2018/038210 WO2020075303A1 (ja) 2018-10-12 2018-10-12 ソフトウェア検証装置、ソフトウェア検証方法およびソフトウェア検証プログラム

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US17/191,369 Continuation US11914682B2 (en) 2018-10-12 2021-03-03 Software verification device

Publications (1)

Publication Number Publication Date
WO2020075303A1 true WO2020075303A1 (ja) 2020-04-16

Family

ID=70164668

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2018/038210 WO2020075303A1 (ja) 2018-10-12 2018-10-12 ソフトウェア検証装置、ソフトウェア検証方法およびソフトウェア検証プログラム

Country Status (5)

Country Link
US (1) US11914682B2 (ja)
JP (1) JP6925542B2 (ja)
CN (1) CN112805703A (ja)
DE (1) DE112018007934B4 (ja)
WO (1) WO2020075303A1 (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20210192014A1 (en) * 2018-10-12 2021-06-24 Mitsubishi Electric Corporation Software verification device and software verification method
US20220207142A1 (en) * 2020-12-30 2022-06-30 Virsec Systems, Inc. Zero Dwell Time Process Library and Script Monitoring
WO2022145085A1 (ja) * 2020-12-28 2022-07-07 株式会社日立産機システム 情報処理装置、情報処理システムおよび情報処理装置のファイル処理方法
WO2023002635A1 (ja) * 2021-07-21 2023-01-26 三菱電機株式会社 情報処理装置、情報処理方法、及び、情報処理プログラム
WO2023145666A1 (ja) * 2022-01-25 2023-08-03 株式会社Jvcケンウッド 組み込みシステムの起動方法、及び、起動プログラム、並びに、組み込みシステム

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021099693A (ja) * 2019-12-23 2021-07-01 グローリー株式会社 有価媒体処理装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011171946A (ja) * 2010-02-17 2011-09-01 Toshiba Corp 携帯可能電子装置、携帯可能電子装置の制御方法及びicカード
JP2017156945A (ja) * 2016-03-01 2017-09-07 株式会社東芝 情報処理装置及び制御方法

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7350204B2 (en) 2000-07-24 2008-03-25 Microsoft Corporation Policies for secure software execution
US6907522B2 (en) 2002-06-07 2005-06-14 Microsoft Corporation Use of hashing in a secure boot loader
US8375458B2 (en) * 2007-01-05 2013-02-12 Apple Inc. System and method for authenticating code executing on computer system
US9629928B1 (en) * 2008-03-31 2017-04-25 Symantec Corporation Hash-based inventory identification
CN101582880B (zh) * 2008-05-14 2012-06-06 北京启明星辰信息技术股份有限公司 一种基于被审计对象的报文过滤方法及系统
WO2011082322A2 (en) * 2009-12-30 2011-07-07 Intergraph Technologies Company A system and method for transmission of files within a secured network
CN102473223B (zh) 2010-05-13 2015-01-28 松下电器产业株式会社 信息处理装置以及信息处理方法
JP5582909B2 (ja) 2010-07-29 2014-09-03 キヤノン株式会社 プラットフォーム完全性検証システム
US9087199B2 (en) 2011-03-31 2015-07-21 Mcafee, Inc. System and method for providing a secured operating system execution environment
JP5753273B2 (ja) 2011-10-14 2015-07-22 株式会社日立製作所 データの真正性保証方法、管理計算機及び記憶媒体
CN103209225A (zh) * 2013-04-03 2013-07-17 北京邮电大学 一种基于周期触发代理的sdn广播处理方法
JP2015022521A (ja) 2013-07-19 2015-02-02 スパンション エルエルシー セキュアブート方法、組み込み機器、セキュアブート装置およびセキュアブートプログラム
JP6595822B2 (ja) 2015-07-07 2019-10-23 キヤノン株式会社 情報処理装置及びその制御方法
JP6260066B2 (ja) 2016-01-18 2018-01-17 Kddi株式会社 車載コンピュータシステム及び車両
JP2018006782A (ja) 2016-06-06 2018-01-11 Kddi株式会社 データ提供システム、データ提供装置、車載コンピュータ、データ提供方法、及びコンピュータプログラム
JP6440334B2 (ja) 2017-08-18 2018-12-19 Kddi株式会社 システム、車両及びソフトウェア配布処理方法
WO2020075303A1 (ja) * 2018-10-12 2020-04-16 三菱電機株式会社 ソフトウェア検証装置、ソフトウェア検証方法およびソフトウェア検証プログラム

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011171946A (ja) * 2010-02-17 2011-09-01 Toshiba Corp 携帯可能電子装置、携帯可能電子装置の制御方法及びicカード
JP2017156945A (ja) * 2016-03-01 2017-09-07 株式会社東芝 情報処理装置及び制御方法

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20210192014A1 (en) * 2018-10-12 2021-06-24 Mitsubishi Electric Corporation Software verification device and software verification method
US11914682B2 (en) * 2018-10-12 2024-02-27 Mitsubishi Electric Corporation Software verification device
WO2022145085A1 (ja) * 2020-12-28 2022-07-07 株式会社日立産機システム 情報処理装置、情報処理システムおよび情報処理装置のファイル処理方法
JP7462077B2 (ja) 2020-12-28 2024-04-04 株式会社日立産機システム 情報処理装置および情報処理装置のファイル処理方法
US20220207142A1 (en) * 2020-12-30 2022-06-30 Virsec Systems, Inc. Zero Dwell Time Process Library and Script Monitoring
WO2023002635A1 (ja) * 2021-07-21 2023-01-26 三菱電機株式会社 情報処理装置、情報処理方法、及び、情報処理プログラム
JP7341376B2 (ja) 2021-07-21 2023-09-08 三菱電機株式会社 情報処理装置、情報処理方法、及び、情報処理プログラム
WO2023145666A1 (ja) * 2022-01-25 2023-08-03 株式会社Jvcケンウッド 組み込みシステムの起動方法、及び、起動プログラム、並びに、組み込みシステム

Also Published As

Publication number Publication date
JPWO2020075303A1 (ja) 2021-02-15
JP6925542B2 (ja) 2021-08-25
DE112018007934B4 (de) 2024-03-07
US20210192014A1 (en) 2021-06-24
CN112805703A (zh) 2021-05-14
DE112018007934T5 (de) 2021-05-20
US11914682B2 (en) 2024-02-27

Similar Documents

Publication Publication Date Title
JP6925542B2 (ja) ソフトウェア検証装置、ソフトウェア検証方法およびソフトウェア検証プログラム
CN106656502B (zh) 计算机系统及安全执行的方法
CN101657792B (zh) 可信部件更新系统和方法
US10127384B2 (en) Firmware verified boot
JP5014726B2 (ja) 無許可のブートローダの実行を防止することによって安全性を高めた実行環境
TWI570592B (zh) 更新電腦韌體的系統、方法與電腦可讀取儲存媒體
US11829479B2 (en) Firmware security verification method and device
US9870474B2 (en) Detection of secure variable alteration in a computing device equipped with unified extensible firmware interface (UEFI)-compliant firmware
US8296579B2 (en) System and method for updating a basic input/output system (BIOS)
JP2017021434A (ja) 情報処理装置及びその制御方法
US20130081144A1 (en) Storage device and writing device
WO2017133559A1 (zh) 安全启动方法及装置
TWI760752B (zh) 應用加速驗證映像檔方法的系統
JP2021179982A (ja) シリコンデバイスファームウェア上のロールバック攻撃を防止するセキュリティシステム、および、方法
US20160350537A1 (en) Central processing unit and method to verify mainboard data
CN113190880B (zh) 基于对安全协处理器的背书信息的分析确定是否对计算设备执行动作
CN116089967B (zh) 数据防回滚方法和电子设备
JP2019133220A (ja) 完全性検証装置、完全性検証システム、完全性検証方法、及び、完全性検証プログラム
CN111357003A (zh) 预操作系统环境中的数据保护
JP2023026017A (ja) 起動検証プログラム、情報処理装置および起動検証方法
CN113742784A (zh) 应用加速验证映像文件方法的系统

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

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2020549929

Country of ref document: JP

Kind code of ref document: A

122 Ep: pct application non-entry in european phase

Ref document number: 18936806

Country of ref document: EP

Kind code of ref document: A1