WO2023275947A1 - 回路情報の完全性検証システムおよび回路情報の完全性検証方法 - Google Patents
回路情報の完全性検証システムおよび回路情報の完全性検証方法 Download PDFInfo
- Publication number
- WO2023275947A1 WO2023275947A1 PCT/JP2021/024405 JP2021024405W WO2023275947A1 WO 2023275947 A1 WO2023275947 A1 WO 2023275947A1 JP 2021024405 W JP2021024405 W JP 2021024405W WO 2023275947 A1 WO2023275947 A1 WO 2023275947A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- signature
- cpu
- circuit information
- fpga
- input value
- Prior art date
Links
- 238000012795 verification Methods 0.000 title claims abstract description 126
- 238000000034 method Methods 0.000 title claims description 19
- 238000004364 calculation method Methods 0.000 claims abstract description 47
- 238000011161 development Methods 0.000 claims abstract description 36
- 238000012545 processing Methods 0.000 claims description 36
- 238000010586 diagram Methods 0.000 description 51
- 230000006870 function Effects 0.000 description 51
- 238000012546 transfer Methods 0.000 description 23
- 238000004891 communication Methods 0.000 description 15
- 230000005540 biological transmission Effects 0.000 description 11
- 230000000694 effects Effects 0.000 description 3
- 230000004913 activation Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000001010 compromised effect Effects 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000003860 storage Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
- G06F21/76—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in application-specific integrated circuits [ASIC] or field-programmable devices, e.g. field-programmable gate arrays [FPGA] or programmable logic devices [PLD]
Definitions
- the present invention relates to a circuit information integrity verification system and a circuit information integrity verification method between a CPU and an accelerator.
- APL software applications
- accelerators such as GPUs (Graphics Processing Units) and FPGAs (Field Programmable Gate Arrays)
- performance and power efficiency that cannot be achieved with software (CPU processing) alone can be achieved. Examples of this are increasing.
- a large-scale server cluster such as a data center that constitutes NFV (Network Functions Virtualization) or SDN (Software Defined Network)
- NFV Network Functions Virtualization
- SDN Software Defined Network
- a protection area (enclave) is provided in the memory on the CPU side, and by saving important information in this protection area (enclave), the OS/driver/BIOS/VMM is compromised. Attacks can be prevented.
- the APL can change from a state in which the OS and VMM are trusted to a state in which only a more limited region, which is a region protected by hardware, is trusted, thereby reducing the load on the APL.
- circuit information in the case of GPU, circuit information is algorithm information
- information related to calculation process between the protection area (enclave) on the CPU side and the GPU and FPGA device that performs processing Falsification is a threat.
- Information that may be falsified includes, for example, circuit information for performing calculations in the FPGA, values sent from the CPU to the FPGA for calculation, and values sent from the FPGA to the CPU. It is necessary to be able to confirm and detect that information that may be tampered with has not been tampered with.
- FIG. 26 is a schematic configuration diagram of a communication system between Enclave and FPGA.
- An FPGA is taken as an example of an accelerator.
- the Enclave-FPGA communication system includes a development PC 10, an input value generator 20, a CPU 30, and an FPGA 40 that is an accelerator that executes offloaded calculations.
- a PC (Personal Computer) 10 for development is operated by the function manager 2, and uses PC resources to create circuit information 11 that is set in advance for offloading calculations to the FPGA.
- An input value source 20 generates the input values 12 needed to offload.
- the CPU 30 comprises an enclave external memory 31 , a protected area (enclave) 32 and an FPGA transfer function program 33 .
- the FPGA transfer function program 33 is a function program executed by the CPU 30 .
- the notation in which the FPGA transfer function program 33 is described as the subject describes the function of the CPU 30 executing the FPGA transfer function program 33 for the sake of convenience.
- the external memory 31 of the enclave receives circuit information 11 from the development PC 10 (see S1) and input value 12 (input value necessary for offloading) from the input value generator 20. (See S2).
- the input circuit information 11 is stored in the memory 31 outside the enclave.
- the protected area (enclave) 32 has a management/verification program 34 to prevent falsification.
- circuit information 11 and input value 12 are stored in the protected area (enclave) 32 .
- the FPGA transfer function program 33 inputs the information of the enclave external memory 31 (see S3) and transfers it to the protected area (enclave) 32 (see S4).
- the FPGA transfer function program 33 transfers the circuit information 11 and the input value 12 to the protected area (enclave) 32 .
- the FPGA transfer function program 33 reads the information (here, the input value 12) of the protected area (enclave) 32 (see S5).
- the FPGA transfer function program 33 transmits important information (here, circuit information 11, input value 12) stored in the protected area (enclave) 32 on the CPU 30 side to the FPGA 40 (see S6 and S7), and performs calculations from the FPGA 40. Receives the calculation result (output value 13, which is the result of offloading calculation and output) using the dedicated circuit 41 (see S8).
- the CPU 30 transmits the circuit information 11 to the FPGA 40 to cause the FPGA 40 to form the arithmetic circuit 41 and offloads part of the APL processing to the FPGA 40 .
- the FPGA 40 performs computation using the computation circuit 41 for the offloaded APL processing, and transfers the computation result to the CPU 30 .
- the FPGA 40 has an arithmetic circuit 41 and a RAM 42 .
- the computation circuit 41 computes the processing of the offloaded APL (see S8) and outputs the output value 13, which is the computation result, to the RAM 42.
- the RAM 42 temporarily stores the information (circuit information 11, input value 12) transferred from the CPU 30 by the FPGA transfer function program 33, and also stores the calculation result (output value 13 ) is temporarily saved.
- Information that may be tampered with includes circuit information 11 for performing calculations in the FPGA 40, and tampering of values (circuit information 11, input value 12) sent from the CPU to the FPGA for calculation (references c and 12 in FIG. 26). d), and falsification of the value (output value 13) sent from the FPGA to the CPU (see symbol e in FIG. 26). It is necessary to be able to confirm and detect that information that may be tampered with has not been tampered with.
- the FPGA 40 can confirm the reliability of the circuit information 11 and the input value 12 transferred from the protected area (enclave) 32 on the CPU 30 side.
- - CPU30 enables it to confirm the reliability of the output value 13 transferred from FPGA40.
- FIG. 26 it is assumed that the circuit information 11, the input value 12 and the output value 13 are tampered with in each communication path. • Functional user 2 trusts enclave 32 within CPU 30 .
- FIG. 27 is a schematic configuration diagram of a communication system between Enclave and FPGA that deals with the possibility of tampering.
- the same reference numerals are given to the same components as those in FIG.
- FIG. 28 is a diagram for explaining the signing of the circuit information 11 by the signature grantor 50 using the secret key (signature grantor) 51 .
- the Enclave-FPGA communication system dealing with the possibility of falsification further includes a signature grantor 50 (signature granting device) in addition to the Enclave-FPGA communication system of FIG.
- a signature assigner 50 is an input terminal device used by a person who attaches a signature to the circuit information 11 .
- the signature grantor 50 has a private key (signature grantor) 51 , a public key (signature grantor) 52 and a signature (signature grantor) 53 . As indicated by symbol g in FIG. 28 , the signature grantor 50 uses a private key (signature grantor) 51 to generate a signature for the circuit information 11 .
- the signature grantor 50 gives the development PC 10 a private key (signature grantor) 51, a public key (signature grantor) 52, and a signature (signature grantor) 53 (see S11).
- the development PC 10 shown in FIG. 27 sends the circuit information 11 with a public key (signature grantor) 52 and a signature (signature grantor) 53 to the enclave external memory 31 of the CPU 30 (see S1).
- the FPGA transfer function program 33 of the CPU 30 shown in FIG. (see S1).
- the FPGA transfer function program 33 stores important information (here, circuit information 11 with a public key (signature grantor) 52 and a signature (signature grantor) 53, which is stored in a protected area (enclave) 32 of the CPU 30,
- the input value 12 is sent to the FPGA 40 (see S6 and S7), and the calculation result (here, the output value 13) using the arithmetic circuit 41 is received from the FPGA 40 (see S8).
- RAM 42 temporarily stores information (circuit information 11 with public key (signature grantor) 52 and signature (signature grantor) 53, input value 12) transferred by FPGA transfer function program 33 from CPU 30. At the same time, the calculation result (output value 13) using the arithmetic circuit 41 to be transferred to the CPU 30 is temporarily stored.
- the CPU 30 has a protection area (enclave) 32 for preventing falsification.
- enclave an area for preventing falsification.
- the circuit information 11 and information about the calculation process between the protected area on the CPU 30 side and the FPGA 40 that performs the processing there is a possibility that the information is tampered with during the exchange (see symbols ae in FIG. 26). ). In this case, there is a problem that it is not possible to confirm or detect that the data has not been tampered with.
- the present invention has been made in view of such a background, and the present invention makes it possible to confirm the integrity that circuit information has not been tampered with, and to reduce the processing load of the FPGA.
- the task is to
- the present invention provides a circuit that includes a CPU and an accelerator that executes specific processing of an application offloaded from the CPU, and that verifies the integrity of circuit information between the CPU and the accelerator.
- the CPU has a protection area for preventing falsification, and the protection area verifies the signature of the circuit information signed by the development PC and sent to the CPU. and a signature replacement unit that replaces the signature verified by the signature verification unit with the key of the CPU before sending the circuit information to the accelerator side, wherein the accelerator includes the When an input value is sent from a CPU, a calculation is executed based on the input value, a hash value of the input value and the circuit information, and a signature are added to the output value and sent to the CPU.
- the circuit information integrity verification system is characterized by:
- FIG. 1 is a diagram showing a configuration example of a circuit information integrity verification system according to an embodiment of the present invention
- FIG. FIG. 4 is an operation explanatory diagram of ⁇ writing circuit information (CPU side)> of the circuit information integrity verification system according to the embodiment of the present invention
- FIG. 4 is a diagram illustrating signature verification of circuit information by the signature verification unit of the CPU of the circuit information integrity verification system according to the embodiment of the present invention
- 3 is a control sequence diagram of ⁇ writing circuit information (CPU side)> of the circuit information integrity verification system of FIG. 2
- FIG. FIG. 4 is an operation explanatory diagram of ⁇ writing circuit information to FPGA> of the circuit information integrity verification system according to the embodiment of the present invention
- FIG. 4 is a diagram illustrating hash value generation by the CPU of the circuit information integrity verification system according to the embodiment of the present invention
- FIG. 4 is a diagram for explaining a signature of circuit information by a private key (CPU) of a signature generation unit of the CPU of the circuit information integrity verification system according to the embodiment of the present invention
- It is a figure explaining the signature verification of FPGA of the integrity verification system of the circuit information which concerns on embodiment of this invention.
- 6 is a control sequence diagram of ⁇ write circuit information to FPGA> of the circuit information integrity verification system of FIG. 5;
- FIG. 5 is a control sequence diagram of ⁇ write circuit information to FPGA> of the circuit information integrity verification system of FIG. 5;
- FIG. 4 is an operation explanatory diagram of ⁇ start after writing> of the circuit information integrity verification system according to the embodiment of the present invention
- FIG. 4 is an operation explanatory diagram of ⁇ output of calculation result using circuit> of the circuit information integrity verification system according to the embodiment of the present invention
- FIG. 4 is a diagram illustrating a signature of an input value by a private key (input value generator) of an input value generator in the circuit information integrity verification system according to the embodiment of the present invention
- FIG. 4 is an operation explanatory diagram of ⁇ start after writing> of the circuit information integrity verification system according to the embodiment of the present invention
- FIG. 4 is an operation explanatory diagram of ⁇ output of calculation result using circuit> of the circuit information integrity verification system according to the embodiment of the present invention
- FIG. 4 is a diagram illustrating a signature of an input value by a private key (input value generator) of an input value
- FIG. 10 is a control sequence diagram of ⁇ starting after writing-output of computation result using circuit> of the circuit information integrity verification system according to the embodiment of the present invention
- FIG. 4 is a diagram illustrating a signature of an input value by a private key (input value generator) of an input value generator in the circuit information integrity verification system according to the embodiment of the present invention
- It is a figure explaining the signature of the random number by the private key (FPGA) of FPGA of the integrity verification system of the circuit information which concerns on embodiment of this invention.
- FIG. 10 is an operation explanatory diagram of ⁇ output result transmission> of the circuit information integrity verification system according to the embodiment of the present invention; It is a figure explaining key pair generation of the public key (FPGA) of FPGA of the integrity verification system of the circuit information which concerns on embodiment of this invention, and a private key (FPGA). It is a figure explaining hash value generation of FPGA of the integrity verification system of circuit information concerning an embodiment of the present invention.
- FIG. 4 is a diagram for explaining signatures of input values of FPGA, hash values of circuit information, and output values of the circuit information integrity verification system according to the embodiment of the present invention; FIG. 4 is an explanatory diagram of hash value verification of circuit information and input values in the circuit information integrity verification system according to the embodiment of the present invention; FIG.
- FIG. 4 is a control sequence diagram of ⁇ output result transmission> of the circuit information integrity verification system according to the embodiment of the present invention
- FIG. 4 is a diagram illustrating signature verification of a signature (FPGA) attached to an output value using a public key (FPGA) of the CPU of the circuit information integrity verification system according to the embodiment of the present invention
- 1 is a schematic configuration diagram of a conventional Enclave-FPGA communication system
- FIG. 1 is a schematic configuration diagram of a conventional Enclave-FPGA communication system that deals with the possibility of tampering
- FIG. FIG. 28 is a diagram for explaining signing circuit information using a signature grantor's private key (signature grantor) in the Enclave-FPGA communication system of FIG. 27;
- FIG. 1 is a diagram showing a configuration example of a circuit information integrity verification system 1 between a CPU and an accelerator according to an embodiment of the present invention.
- the same components as in FIGS. 26 and 27 are denoted by the same reference numerals.
- the circuit information integrity verification system 1 shown in FIG. 1 includes a CPU 100, an FPGA 200 (accelerator), and an input value generator 300.
- a development PC 10 is connected to the CPU 100 , and a signature grantor 50 is connected to the development PC 10 .
- the development PC 10 creates circuit information 11 that is set in advance for offloading calculations in the FPGA, and sends it to the signature grantor 50 (not shown).
- the development PC 10 sends the circuit information 11, the public key (signature grantor) 52, and the signature (signature grantor) 53 to the CPU 100 in ⁇ circuit information writing (CPU side)>.
- the signature grantor 50 adds a signature to the circuit information 11 created and sent by the development PC 10, and sends the signature to the development PC 10 (see S11).
- a signature grantor 50 generates a signature for the circuit information 11 using a private key (signature grantor) 51 .
- a signature grantor 50 gives a private key (signature grantor) 51 , a public key (signature grantor) 52 , and a signature (signature grantor) 53 to the development PC 10 .
- the CPU 100 comprises an enclave external memory 110, an FPGA transfer function program 120, and a protection area (enclave) 130 for preventing tampering.
- the enclave external memory 110 is a normal area in which normal applications and the like operate.
- the CPU 100 executes application programs using the non-enclave memory 110 .
- the FPGA transfer function program 120 is a program for transferring data between the CPU and the accelerator (CPU100-FPGA200). Note that the FPGA transfer function program 120 may also be called an FPGA transfer function unit or an FPGA transfer management unit.
- the CPU 100 receives the circuit information 11, the public key (signature grantor) 52, and the signature (signature grantor) 53 sent from the development PC 10, and The signature verification of the sent circuit information 11 is performed. Signature verification is performed using a public key (signature grantor) 52 .
- the CPU 100 checks the signature of the information sent to the FPGA 200 side and replaces the signature.
- the CPU 100 receives the input value sent from the FPGA 200, the hash value of the circuit information, and the signed output value, and verifies the hash value and signature. At this time, the CPU 100 confirms (attestation) that the FPGA is reliable based on the certificate and signature of the counterpart FPGA 200 .
- the enclave 130 is a hardware protected area to prevent attacks that compromise the OS/drivers/Basic Input/Output System (BIOS)/Virtual Machine Manager (VMM).
- An enclave 130 is provided on the CPU 100 side.
- a protected area (enclave) 130 is a secure area in which a public key, a private key, circuit information 11 and the like are confined within the CPU 100 .
- the protected area (enclave) 130 is an execution environment isolated from general application programs, and data and calculation processing are protected. It is executed in a privileged mode of the CPU or OS (Operating System), and it is possible to call programs and access data in the protected area (enclave) 130 only by specific programs and specific procedures.
- OS Operating System
- the protected area (enclave) 130 stores a signature reception unit 131, a signature verification unit 132, a key pair generation unit 133, a signature generation unit 134, a signature replacement unit 135, and a signature transmission unit 136.
- the signature receiving unit 131 receives the circuit information 11, the public key (signature grantor) 52, and the signature (signature grantor) 53 transmitted from the development PC 10.
- the signature verification unit 132 verifies the signature of the signature (signature grantor) 53 received by the signature reception unit 131 .
- the signature verification unit 132 verifies the signature of the circuit information 11 signed by the development PC 10 and sent to the CPU 100 .
- the signature verification unit 132 verifies the signature of the input value 12 that is signed by the source of the input value 12 and sent to the relevant CPU 100 .
- the signature verification unit 132 verifies the hash value (CPU) 152 of the circuit information 11 and the hash value calculated by the signature grantor 50 (calculated from the received signature (CPU) 403 and public key (CPU) 401). Perform signature verification by comparison.
- the signature verification unit 132 verifies the hash value and signature sent from the FPGA 200 .
- the signature verification unit 132 calculates a hash value (bit string) using a hash function algorithm such as MD5 (message digest algorithm 5) or SHA (Secure Hash Algorithm). This hash algorithm must be the same for both CPU 100 and FPGA 200 .
- the key pair generation unit 133 generates a key pair based on the public key (CPU) 401 and the private key (CPU) 402.
- the signature generation unit 134 After calculating the hash value (CPU) 152 of the circuit information 11 , the signature generation unit 134 creates a signature (signature (CPU) 403 ) with the hash value (CPU) 152 and the secret key (CPU) 402 .
- the signature replacement unit 135 adds the signature (CPU) 403 and public key (CPU) 401 generated by the signature generation unit 134 to the circuit information 11 . That is, the signature replacement unit 135 checks the signature of the information sent to the FPGA 200 side, and replaces the signature with the key of the CPU.
- the signature replacement unit 135 replaces the signature verified by the signature verification unit 132 with the key of the CPU 100 before sending the circuit information 11 to the FPGA 200 side.
- the signature replacement unit 135 replaces the signature verified by the signature verification unit 132 with the key of the CPU 100 before sending the input value 12 to the FPGA 200 side.
- the signature sending unit 136 sends the circuit information 11 , the public key of the CPU (CPU) 401 and the signature of the CPU (CPU) 403 to the FPGA 200 . Based on this, the FPGA 200 verifies the signature and generates a hash value.
- the FPGA 200 is an accelerator provided on an accelerator board (not shown). Although this embodiment takes an FPGA as an example of an accelerator, an accelerator such as a GPU may be used.
- the FPGA 200 performs calculation based on the input value 12, adds the hash value of the input value 12 and the circuit information 11, and the signature to the output value, and sends the input value 12 to the CPU 100. Send to
- FPGA 200 generates a key pair.
- FPGA 200 generates a hash value of the input value. Further, the FPGA 200 has a public key registered in advance out of the public key and the private key generated by the CPU 100, and the signature of the circuit information 11 signed by the CPU 100 and sent to the FPGA 200 is transmitted using the registered public key. to verify.
- the FPGA 200 sends to the CPU 100 the input value, the hash value of the circuit information, and the signed output value.
- the FPGA 200 adds a hash value (circuit information) 232 , a hash value (input value) 231 and a signature (FPGA) 233 to the output result (output value 13 ) and sends it to the CPU 100 .
- the CPU 100 verifies the hash value and signature received from the FPGA 200 .
- the input value generator 300 sends a public key (input value generator) 301, a private key (input value generator) 301, and a signature (input value generator) 303 to the memory 110 outside the enclave of the CPU 100 (see S22). .
- a circuit information integrity verification method of the circuit information integrity verification system 1 configured as described above will be described below.
- the gist of the present invention is that the circuit information 11 developed by the development PC 10 is not sent to the FPGA 200 as it is, but is first verified by the CPU 100 and then sent to the FPGA 200 .
- Circuit information 11 , circuit information 11 , public key (signature grantor) 52 , and signature (signature grantor) 53 are stored in a protected area (enclave) 130 and verified on the CPU 100 side. After verification, the input value 12 and the output value 13 are verified using only the public key of the key pair of the CPU 100 .
- the signature and public key are not the original signature (signature grantor) 53 and public key (public key (signature grantor) 52), but the signature (CPU) 403 and public key (public key (CPU) 401) of the CPU 100. ) and sent to the FPGA 200.
- the FPGA 200 performs calculation based on the input value 12, and for the output value 13, the input value 12 and the hash value of the circuit information 11 and the signature (signature (FPGA) 233) is added and sent to the CPU 100. By verifying it, the CPU 100 finds that there is no tampering, which is certain.
- each stage is divided into stages of startup, ⁇ calculation result output using the circuit>, ⁇ startup after writing - calculation result output using the circuit>, and ⁇ output result transmission>, and the operation of the device used in each stage is explained. Description will be made with reference to the figure and the control sequence diagram.
- FIG. 2 is an operation explanatory diagram of ⁇ writing circuit information (CPU side)> of the circuit information integrity verification system 1 between the CPU and the FPGA 200.
- FIG. 3 is a diagram for explaining signature verification of the circuit information 11 by the signature verification unit 132 of the CPU 100. As shown in FIG.
- the development PC 10 creates the circuit information 11 and sends it to the signature grantor 50 .
- the signature grantor 50 generates a signature for the circuit information 11 using a private key (signature grantor) 51, as indicated by symbol g in FIG.
- the signature grantor 50 gives the development PC 10 a private key (signature grantor) 51, a public key (signature grantor) 52, and a signature (signature grantor) 53 (see S11).
- a signature grantor 50 guaranteed by a reliable third party (CA: Certificate Authority, public key certificate authority or certification authority) signs the circuit information 11, and the signature is attached to the circuit information 11.
- CA Certificate Authority, public key certificate authority or certification authority
- the destination CPU 30 can verify whether or not the circuit information 11 has been tampered with.
- the development PC 10 sends the circuit information 11 with the public key (signature grantor) 52 and the signature (signature grantor) 53 to the external memory 110 of the CPU 100 (see S21).
- the FPGA transfer function program 120 of the CPU 100 sends the circuit information 11 with the public key (signature grantor) 52 and the signature (signature grantor) 53 temporarily stored in the memory 110 outside the enclave to the signature verification unit 132 of the CPU 100 ( S27, S28).
- the signature verification unit 132 uses the signature (signature grantor) 53 to verify the signature of the circuit information 11 encrypted with the public key (signature grantor) 52, as indicated by symbol h in FIG.
- FIG. 4 is a control sequence diagram of ⁇ writing circuit information (CPU side)> of the circuit information integrity verification system 1 between the CPU and the accelerator shown in FIG.
- the development PC 10 inputs the original data of the circuit information 11 and creates the circuit information 11 (see S101).
- the development PC 10 sends the created circuit information 11 to the signature grantor 50 (see S102).
- the signature grantor 50 inputs a private key (signature grantor) 51 and a public key (signature grantor) 52 (see S103).
- the signature grantor 50 generates a signature by adding a signature (signature grantor) to the circuit information 11 sent from the development PC 10 using a secret key (signature grantor) 51 (see S104).
- the signature grantor 50 sends the signature-generated public key (signature grantor) 52 and signature (signature grantor) 53 to the development PC 10 (see S105).
- the development PC 10 puts together the created circuit information 11, the public key (signature grantor) 52 signature-generated by the signature grantor 50, and the signature (signature grantor) 53 (see S106).
- the development PC 10 sends the circuit information 11, the public key (signature grantor) 52, and the signature (signature grantor) 53 to the CPU 100 (circuit information and signature transmission) (see S107).
- the CPU 100 verifies the signature of the circuit information 11 in the signature verification unit 132 (see FIG. 2) arranged in the protected area (enclave) 130 (see S108). That is, the signature verification unit 132 uses the signature (signature grantor) 53 to verify the signature of the circuit information 11 encrypted with the public key (signature grantor) 52, as indicated by symbol h in FIG. ⁇ Writing circuit information (CPU side)> has been described above.
- FIG. 5 is an operation explanatory diagram of ⁇ writing circuit information to FPGA> of the circuit information integrity verification system 1.
- FIG. FIG. 6 is a diagram for explaining hash value generation by the CPU 100.
- FIG. 7 is a diagram for explaining the signature of the circuit information 11 by the private key (CPU) 402 of the signature generation unit 134 of the CPU 100.
- FIG. 8 is a diagram for explaining signature verification of the FPGA 200.
- FIG. 9 is a diagram for explaining hash value generation of the FPGA 200.
- FIG. 6 is a diagram for explaining hash value generation by the CPU 100.
- FIG. 7 is a diagram for explaining the signature of the circuit information 11 by the private key (CPU) 402 of the signature generation unit 134 of the CPU 100.
- FIG. 8 is a diagram for explaining signature verification of the FPGA 200.
- FIG. 9 is a diagram for explaining hash value generation of the FPGA 200.
- FIG. 9 is a diagram for explaining hash value generation of the FPGA 200.
- the signature verification unit 132 of the CPU 100 verifies the signature of the signature grantor 50 in the signature reception unit 131 . Specifically, it is as follows. As shown in FIG. 6, the signature verification unit 132 inputs circuit information 11, a public key (CPU) 401 and a signature (CPU) 402, and generates a hash value (circuit information) 152 using a hash function (CPU) 151. do. The signature verification unit 132 calculates the hash value (circuit information) 152 of the circuit information 11 and the hash value calculated by the signer (calculated from the received signature (signature grantor) 53 and public key (signature grantor) 52). Perform signature verification by comparison.
- the signature verification unit 132 inputs circuit information 11, a public key (CPU) 401 and a signature (CPU) 402, and generates a hash value (circuit information) 152 using a hash function (CPU) 151. do.
- the signature verification unit 132 calculates the hash value (circuit information) 152
- a key pair generation unit 133 of the CPU 100 generates a key pair of a public key (CPU) 401 and a private key (CPU) 402 .
- the signature generator 134 of the CPU 100 signs the circuit information 11 (see FIG. 7). As indicated by symbol i in FIG. to sign (CPU).
- a signature replacement unit 135 of the CPU 100 adds a signature (CPU) 402 and a public key (CPU) 401 generated by the signature generation unit 134 to the circuit information 11 . That is, the signature replacement unit 135 checks the signature of the information sent to the FPGA 200 side and replaces the signature with the key of the CPU 100 .
- the signature (signature grantor) 53 of the signature grantor 50 verified and confirmed in ⁇ writing circuit information (CPU side)> shown in FIGS. ) to change the signature (re-signature) to make a signature (CPU) 403 .
- the CPU 100 attests with the counterpart FPGA 200 that it is a trustworthy FPGA based on the certificate and signature of the FPGA 200 .
- the signature sending unit 136 of the CPU 100 sends the circuit information 11, the public key (CPU) 401 of the CPU 100, and the signature (CPU) 403 of the CPU 100 to the FPGA 200 (see S31).
- the signature/hash function unit 211 of the calculation circuit 210 verifies the signature and generates a hash value. Specifically, it is as follows. First, among the public key (CPU) 401 and the private key (CPU) 402 generated by the CPU 100 , the public key (CPU) 401 is registered in advance in the RAM 220 of the FPGA 200 . As shown in FIG. 8, the signature/hash function unit 211 generates a hash value (circuit information) 152 of the circuit information 11 and a hash value calculated by the CPU 100 (from the received signature (CPU) 403 and public key (CPU) 401). ) is compared to verify the signature. As shown in FIG.
- the signature/hash function unit 211 receives circuit information 11, a public key (CPU) 401 and a signature (CPU) 403, and uses a hash function (FPGA calculation) 161 to generate a hash value (circuit information). 162 is generated.
- a hash function FPGA calculation
- the hash function (FPGA calculation) 161 calculates a hash value (bit string) using a hash function algorithm such as MD5 or SHA. This hash algorithm is the same for both CPU 100 and FPGA 200 .
- FIG. 10 is a control sequence diagram of ⁇ write circuit information to FPGA> of circuit information integrity verification system 1 between CPU-FPGA 200 in FIG.
- FIG. 11 is a diagram explaining the signature of the random number 501 by the private key (FPGA) 223 of the FPGA 200.
- the CPU 100 receives the circuit information 11, public key (signature grantor) 52, signature (Signature grantor) 53 is received (see S201).
- the key pair generation unit 133 (see FIG. 5) of the CPU 100 generates a key pair of the public key (CPU) 401 and the private key (CPU) 402 (see S202).
- the signature verification unit 132 calculates the hash value of the circuit information 11
- the signature generation unit 134 (see FIG. 5) of the CPU 100 generates the hash value and the secret key ( CPU) 402 signs the circuit information 11 (see S203).
- a signature replacement unit 135 (see FIG. 5) of the CPU 100 attaches a signature (CPU) 402 and a public key (CPU) 401 generated by the signature generation unit 134 to the circuit information 11, thereby generating a public key (CPU) 401 of the CPU 100. , the signature (CPU) 402 is replaced.
- the FPGA 200 generates a key pair of a public key (FPGA) 222 and a private key (FPGA) 223 (see S204).
- the CPU 100 attests with the counterpart FPGA 200 based on the certificate and signature of the FPGA 200 that the FPGA is trustworthy.
- the CPU 100 sends the random number 501 to the FPGA 200 (see S205).
- the FPGA 200 signs the random number 501 and creates a signature (FPGA) 502 by performing calculations using the random number 501 sent from the CPU 100 and the secret key (FPGA) 223, as indicated by symbol l in FIG. 11 (see S206). ).
- the FPGA 200 sends the signature (FPGA) 502 and public key (FPGA) 222 to the CPU 100 (see S207).
- the CPU 100 confirms that the FPGA is trustworthy by verifying the public key (FPGA) 222 and the signature (FPGA) 502 (see S208). This is the attestation.
- the CPU 100 sends the circuit information 11, the public key (CPU) 401 of the CPU 100, and the signature (CPU) 402 of the CPU 100 to the FPGA 200 that has been confirmed to be a reliable FPGA (see S209).
- the FPGA 200 compares the hash value (circuit information) 152 of the circuit information 11 with the hash value calculated by the CPU 100 (calculated from the received signature (CPU) 402 and public key (CPU) 401). signature verification (see S210). As shown in FIG. 9, the FPGA 200 receives circuit information 11, a public key (CPU) 401 and a signature (CPU) 403, and generates a hash value (circuit information) 162 using a hash function (FPGA calculation) 161 ( S211 reference).
- the signature/hash function unit 211 verifies the signature and generates a hash value. Specifically, it is as follows. First, among the public key (CPU) 401 and the private key (CPU) 402 generated by the CPU 100 , the public key (CPU) 401 is registered in advance in the RAM 220 of the FPGA 200 . A signature/hash function unit 211 receives circuit information 11 , a public key (CPU) 401 and a signature (CPU) 403 and generates a hash value (circuit information) 162 using a hash function (FPGA calculation) 161 .
- the signature/hash function unit 211 compares the hash value (circuit information) 162 of the circuit information 11 with the hash value calculated by the CPU 100 (calculated from the received signature (CPU) 402 and public key (CPU) 401). Perform signature verification. ⁇ Writing circuit information to FPGA> has been described above.
- FIG. 12 is an operation explanatory diagram of ⁇ start after writing> of the integrity verification system 1 for circuit information between the CPU and the accelerator.
- the FPGA transfer function program 120 of the CPU 100 reads the circuit information 11 of the signature replacement unit 135 placed in the protected area (enclave) 130 and sends it to the FPGA 200 (see S41).
- the circuit of the FPGA 200 is set based on the circuit information 11 sent from the CPU 100 when the power is turned on.
- FIG. 14 is a diagram for explaining the signature of the input value 12 by the private key (input value generator) 302 of the input value generator 300.
- FIG. 15 is a diagram for explaining signature verification of the FPGA 200. As shown in FIG.
- the input value generator 300 has an input value 12, a public key (input value generator) 301, a private key (input value generator) 301, and a signature (input value generator) 303.
- a reliable third party such as the input value generator 300, can greatly reduce the amount of confirmation processing to determine whether the public key is reliable. That is, in the absence of a third party, in addition to confirming that the entities can trust each other, it is necessary to exchange public keys. If there is a third party, each entity can confirm the public key of the trusted third party.
- the input value generator 300 signs the input value 12 using a private key (input value generator) 302, as indicated by symbol m in FIG.
- the input value generator 300 sends the input value 12, public key (input value generator) 301, and signature (input value generator) 303 to the external memory 110 of the CPU 100 (see S51).
- the signature receiving unit 131 of the CPU 100 receives the input value 12 sent from the input value source 300, the public key (input value source) 301, and the signature (input value source) 303.
- the signature verification unit 132 of the CPU 100 verifies the signature of the input value 12. That is, the signature verification unit 132 uses the signature (input value source) 303 to verify the signature of the input value 12 encrypted with the public key (input value source) 52 .
- the signature generation unit 134 of the CPU 100 signs the input value 12 sent from the input value generator 300 using the private key (input value generator) 302, as indicated by symbol m in FIG. ) 403.
- the signature replacement unit 135 of the CPU 100 signs the input value 12 with the key of the CPU 100. That is, the signature replacement unit 135 replaces the signature of the input value 12 in the same manner as the circuit information 11 shown in FIG.
- the signature sending unit 136 of the CPU 100 uses the FPGA transfer function program 120 to send the input value 12 with the signature replaced by the signature replacement unit 135 and the signature (CPU) 403 to the FPGA 200 (see S52).
- the signature/hash function unit 211 verifies the signature. Specifically, it is as follows.
- the signature/hash function unit 211 compares the hash value calculated by the CPU 100 (calculated from the received signature (CPU) 403 and public key (CPU) 401) to verify the signature, as indicated by symbol n in FIG. conduct.
- the arithmetic circuit 210 of the FPGA 200 is set based on the circuit information 11 sent from the CPU 100 , and uses this circuit to calculate the output value 13 based on the input value 12 .
- the calculation result using the circuit is temporarily stored in the RAM 220 together with the output value 13, the hash value (circuit information) 232, and the public key (CPU) 401 of the CPU 100.
- FIG. 16 is a control sequence diagram of ⁇ start after writing-output of calculation results using the circuit> of the integrity verification system 1 for circuit information between the CPU and the FPGA 200.
- FIG. 17 is a diagram for explaining the signature of the input value 12 by the private key (input value generator) 302 of the input value generator 300.
- FIG. 18 is a diagram explaining the signature of the random number 501 by the private key (FPGA) 223 of the FPGA 200.
- FIG. 17 is a diagram for explaining the signature of the input value 12 by the private key (input value generator) 302 of the input value generator 300.
- FIG. 18 is a diagram explaining the signature of the random number 501 by the private key (FPGA) 223 of the FPGA 200.
- the input value source 300 outputs a public key (input value source) 301 and a private key (input value source) 302 (see S301). .
- the input value source 300 signs the input value 12 using a signature (input value source) 302 (see S302).
- the input value generator 300 generates a signature for the input value 12 (see S303).
- the input value generator 300 sends the input value 12, public key (input value generator) 301, and signature (input value generator) 303 to the CPU 100 (see S304).
- the CPU 100 receives the circuit information 11 and the public key (signature grantor) 52 sent from the development PC 10 (see FIG. 2) at the signature receiving section 131 (see FIG. 5) located in the protected area (enclave) 130. , signature (signature grantor) 53, public key (CPU) 401, secret key (CPU) 402, and signature (CPU) 403 (see S305).
- the CPU 100 sends the circuit information 11 to the FPGA 200 (see S307).
- the CPU 100 verifies the signature of the public key (input value source) 301 using the signature (input value source) 303, as indicated by symbol o in FIG. 17 (see S308).
- the CPU 100 signs the input value 12 using the private key (CPU) 402, as indicated by symbol p in FIG. 18 (see S309).
- the CPU 100 re-signs (replaces) the input value 12 using the signature (CPU) 403 (see S310).
- Resigning in the protected area includes "circuit information", “circuit information+input value”, and “circuit information+input value+output value”.
- the effect of re-signing is as follows. That is, there is an effect that the number of public keys managed by the FPGA 200 is reduced. Without re-signing, FPGA 200 requires verification using various public keys. If the method for confirming the reliability of the public key is "Is the public key included in the certificate traceable from the root CA trusted by the recipient?", it is also necessary to trace the certificate from the root CA. . Also, since a certificate may be revoked once it is issued, it is also necessary to check for revocation. Thus, verifying that the certificate is trustworthy becomes a burden on the FPGA 200 .
- the CPU 100 sends the resigned input value 12 and the signature (CPU) 403 to the FPGA 200 .
- the FPGA 200 receives the public key (FPGA) 222 sent from the CPU 100, the private key (FPGA) 223, the hash value (circuit information) 232, and the public key (CPU) 401 sent from the CPU 100 (see S312).
- the FPGA 200 receives the resigned circuit information 11 sent from the CPU 100 and (See S307). Based on the resigned input value 12 and the signature (CPU) 403 (see S311) sent from the CPU 100, signature verification and computation using a circuit are performed (see S312).
- the signature verification in S312 is a signature verification that compares the hash value calculated by the CPU 100 (calculated from the received signature (CPU) 402 and public key (CPU) 401), as indicated by symbol n in FIG.
- the FPGA 200 outputs an output value of 13 and terminates the sequence of ⁇ start after writing--output calculation result using circuit>. So far, ⁇ start after writing - output of calculation result using circuit> has been explained.
- FIG. 19 is an operation explanatory diagram of ⁇ output result transmission> of the integrity verification system 1 for circuit information between the CPU and the accelerator.
- FIG. 20 is a diagram for explaining key pair generation of a public key (FPGA) 222 and a private key (FPGA) 223 of the FPGA 200.
- FIG. 21 is a diagram for explaining hash value generation of the FPGA 200.
- FIG. 22A and 22B are diagrams for explaining input values of the FPGA 200, hash values of circuit information, and signatures of output values.
- 23 is an explanatory diagram of hash value verification of the circuit information 11 and the input value 12.
- FIG. 20 is a diagram for explaining key pair generation of a public key (FPGA) 222 and a private key (FPGA) 223 of the FPGA 200.
- FIG. 21 is a diagram for explaining hash value generation of the FPGA 200.
- FIG. 22A and 22B are diagrams for explaining input values of the FPGA 200, hash values of circuit information, and signatures of output
- the FPGA 200 generates a key pair and a hash value of the input value 12 . Specifically, it is as follows.
- the signature/hash function unit 211 of the arithmetic circuit 210 generates a key pair of a public key (FPGA) 222 and a private key (FPGA) 223, as shown in FIG.
- the signature/hash function unit 211 of the arithmetic circuit 210 generates a hash value (input value) 214 using a hash function (input value) 212, as shown in FIG.
- the calculation result by the calculation circuit 210 is output to the RAM 220 (see S61).
- the RAM 220 temporarily stores a hash value (input value) 231, a hash value (circuit information) 232, an output value 13, and a signature (FPGA).
- the RAM 220 also temporarily stores an input value 12, a public key (CPU) 401 of the CPU 100, a public key (FPGA) 222 of the FPGA 200, and a secret key (FPGA) 223 of the FPGA 200.
- the FPGA 200 uses a private key (FPGA) 233 to generate a hash value (input value) 231, a hash value (circuit information) 232, a hash value (circuit information) 232, and an output Sign the value 13.
- the FPGA 200 sends a hash value (input value) 231, a hash value (circuit information) 232, a signature (FPGA) 223 attached to the output value 13, and a public key (FPGA) 222 to the CPU 100 (see S62).
- the CPU 100 verifies the hash value and signature. Specifically, hash value verification is as follows. As shown in FIG. 23, the CPU 100 inputs an input value 12, circuit information 11, a public key (CPU) 401 and a signature (CPU) 402, and uses a hash function (CPU) 141 to generate a hash value (input value) 142. , a hash value (circuit information) 143 is generated. Attestation may be performed to confirm that the CPU 100 is a reliable FPGA when verifying the hash value and signature.
- FIG. 24 is a control sequence diagram of ⁇ output result transmission> of the circuit information integrity verification system 1 between the CPU and the accelerator in FIG.
- FIG. 25 is a diagram for explaining signature verification of a signature (FPGA) 223 attached to the output value 13 using the public key (FPGA) 222 of the CPU 100. As shown in FIG.
- the FPGA 200 has a public key (FPGA) 222, a secret key (FPGA) 223, circuit information 11, a hash value (circuit information) 232, a public key (CPU) 401, an input value 12, and an output value. 13 (see S401).
- the FPGA 200 uses a private key (FPGA) 233 to generate a hash value (input value) 231, a hash value (circuit information) 232, a hash value (circuit information) 232, and an output Sign the value 13 (see S402).
- the FPGA 200 generates a hash value (input value) 214 using a hash function (input value) 212, as shown in FIG. 21 (see S403).
- the FPGA 200 sends a hash value (input value) 231, a hash value (circuit information) 232, a signature (FPGA) 223 attached to the output value 13, and a public key (FPGA) 222 to the CPU 100 (see S404).
- the CPU 100 receives the circuit information 11 and the public key (signature grantor) 52 sent from the development PC 10 (see FIG. 2) at the signature receiving section 131 (see FIG. 5) located in the protected area (enclave) 130. , signature (signature grantor) 53, input value 12, public key (input value source) 301, and signature (input value source) 303 (see S405).
- the CPU 100 verifies the signature (FPGA) 223 attached to the output value 13 using the public key (FPGA) 222, as indicated by symbol r in FIG. 25 (see S406).
- the CPU 100 inputs an input value 12, circuit information 11, a public key (CPU) 401 and a signature (CPU) 402, and uses a hash function (CPU) 141 to generate a hash value (input value) 142. , hash value (circuit information) 143 (see S407). So far, ⁇ output result transmission> has been described.
- the CPU 100 and the FPGA 200 executing the specific processing of the application offloaded from the CPU 100 are provided, and the integrity verification of the circuit information 11 between the CPU 100 and the FPGA 200 is performed.
- the CPU 100 has a protection area (enclave) 130 for preventing falsification, and the protection area (enclave) 130 contains the signature of the circuit information 11 signed by the development PC 10 and sent to the CPU 100.
- the signature verification unit 132 to be verified and the signature (signature grantor) 53 verified by the signature verification unit 132 are signed with the public key of the CPU 100 (public key (CPU) 401).
- (CPU) 402 is replaced by a signature replacement unit 135.
- the FPGA 200 When the input value 12 is sent from the CPU 100, the FPGA 200 performs calculation based on the input value 12, and converts the input value 12 to the output value. Then, the hash value of the circuit information 11 and the signature (signature (FPGA) 233) are added and sent to the CPU 100.
- FIG. 1 A block diagram illustrating an exemplary computing environment in accordance with the present disclosure.
- the CPU 100 can verify the results from the FPGA 200, it is possible to confirm the integrity that the circuit information 11 and the like have not been tampered with. In other words, the CPU 100 can verify the correctness of important information (whether the calculated value is correct or whether the communication between the enclave 130 and the FPGA 200 has been tampered with).
- the signature verification unit 132 verifies the signature of the input value 12 that has been signed by the input value source 300 and sent to the CPU 100, and the signature replacement unit 135 sends Before sending the input value 12, the signature verified by the signature verification unit 132 is replaced with the signature using the key of the CPU 100 (public key (CPU) 401).
- the development PC 10 signs the circuit information 11 by a signature grantor 50 certified by a trusted third party (CA).
- CA trusted third party
- a signature (signature (CPU) 403) is made with the hash value (CPU) 152 and the secret key (CPU) 402.
- the signature verifying unit 132 generates a hash value (CPU) 152 of the circuit information 11 and a hash value calculated by the signature grantor 50 (calculated from the received signature (CPU) 403 and public key (CPU) 401). to verify the signature.
- the signature verification unit 132 compares the hash value (CPU) 152 of the circuit information 11 with the hash value calculated by the signature grantor 50 to verify the signature, thereby enabling the signature replacement unit 135 to verify the signature.
- the signature verification unit 132 Prior to the replacement of the signature (CPU) 402, it is possible to confirm the integrity that the replacement itself has not been tampered with.
- the signature verification unit 132 verifies the hash value and signature sent from the FPGA200.
- the FPGA 200 registers in advance the public key of the public key and the private key generated by the CPU 100, and the signature of the circuit information 11 sent to the FPGA 200 after being signed by the CPU 100 is verified using the registered public key.
- each configuration, function, etc. described above may be realized by software for a processor to interpret and execute a program for realizing each function.
- Information such as programs, tables, files, etc. that realize each function is stored in memory, hard disk, SSD (Solid State Drive) and other recording devices, IC (Integrated Circuit) cards, SD (Secure Digital) cards, optical discs, etc. It can be held on a recording medium.
- processing steps describing time-series processing refer to processing performed in time-series according to the described order, as well as processing performed in parallel or individually, even if processing is not necessarily performed in time-series. It also includes processing (eg, parallel processing or processing by objects) that is executed in parallel.
- Circuit information integrity verification system 10 Development PC 11 circuit information 12 input value 13 output value 50 signature grantor (signature granting device) 52 public key (signature grantor) 53 Signature (Signature Grantor) 100 CPUs 130 enclave 131 signature reception unit 132 signature verification unit 133 key pair generation unit 134 signature generation unit 135 signature replacement unit 136 signature transmission unit 152 hash value of circuit information 200 FPGA (accelerator) 210 Arithmetic circuit 211 Hash function part 212, 231 Hash value (input value) 222 public key (FPGA) 223 private key (FPGA) 232 hash value (circuit information) 233 Signature (FPGA) 300 Input value source 401 Public key (CPU) 402 private key (CPU) 403 Signature (CPU)
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Mathematical Physics (AREA)
- Storage Device Security (AREA)
Abstract
回路情報の完全性検証システム(1)は、CPU(100)が、保護領域(130)に、開発用PC(10)で署名され当該CPU(100)に送付された回路情報(11)の署名を検証する署名検証部(132と、FPGA(200)側に回路情報11を送付する前に、署名検証部(132)が検証した署名を当該CPU(100)の鍵で署名を付け替える署名付け替え部(135)と、を有し、FPGA(200)は、CPU(100)から入力値(12)が送付された場合、入力値(12)をもとに計算を実行しその出力値に対し、入力値(12)および回路情報(11)のハッシュ値と、署名とを付加してCPU(100)へ送付する。
Description
本発明は、CPU-アクセラレータ間の回路情報の完全性検証システムおよび回路情報の完全性検証方法に関する。
GPU(Graphics Processing Unit)やFPGA(Field Programmable Gate Array)等のアクセラレータにソフトウェアアプリケーション(以下、APLという)の処理の一部をオフロードし、ソフトウェア(CPU処理)のみでは到達できない性能や電力効率を実現する例が増えてきている。
NFV(Network Functions Virtualization)やSDN(Software Defined Network)を構成するデータセンタなど、大規模なサーバクラスタにおいて、上記のようなアクセラレータを適用するケースが想定される。
NFV(Network Functions Virtualization)やSDN(Software Defined Network)を構成するデータセンタなど、大規模なサーバクラスタにおいて、上記のようなアクセラレータを適用するケースが想定される。
完全性保証のための技術として、CPU側のメモリに保護領域(enclave)を設け、この保護領域(enclave)に重要な情報を保存することで、OS/ドライバー/BIOS/VMMが侵害されてしまう攻撃を防ぐことができる。また、APLではOSやVMMを信頼する状態から、より限られた領域である、ハードウェアの保護された領域のみを信頼する状態にでき、APLの負担を減らすことができる。
CPU側の保護領域(enclave)と処理を行うGPU,FPGA装置間で、FPGAでカスタマイズするための回路情報(GPUの場合、回路情報はアルゴリズム情報)や計算プロセスに関する情報をやりとりする際に考えられる脅威として改ざんがある。
改ざんされる可能性がある情報として、例えばFPGAでの演算を行うための回路情報、計算のためにCPUからFPGAへ送る値、FPGAからCPUへ送る値が考えられる。改ざんされる可能性がある情報に関して、改ざんされていないことを確認、検出できる必要がある。
改ざんされる可能性がある情報として、例えばFPGAでの演算を行うための回路情報、計算のためにCPUからFPGAへ送る値、FPGAからCPUへ送る値が考えられる。改ざんされる可能性がある情報に関して、改ざんされていないことを確認、検出できる必要がある。
従来のEnclave-GPU,FPGA間の通信について説明する(非特許文献1参照)。
<Enclave-FPGA間の通信システム>
図26は、Enclave-FPGA間の通信システムの概略構成図である。アクセラレータとしてFPGAを例に採る。
図26に示すように、Enclave-FPGA間の通信システムは、開発用PC10と、入力値発生元20と、CPU30と、オフロードされる計算を実行するアクセラレータであるFPGA40と、を備える。
開発用PC(Personal Computer)10は、機能管理者2が運用し、PC資源を用いて、FPGAで計算をオフロードするためにあらかじめ設定する回路情報11を作成する。
入力値発生元20は、オフロードするために必要な入力値12を発生させる。
<Enclave-FPGA間の通信システム>
図26は、Enclave-FPGA間の通信システムの概略構成図である。アクセラレータとしてFPGAを例に採る。
図26に示すように、Enclave-FPGA間の通信システムは、開発用PC10と、入力値発生元20と、CPU30と、オフロードされる計算を実行するアクセラレータであるFPGA40と、を備える。
開発用PC(Personal Computer)10は、機能管理者2が運用し、PC資源を用いて、FPGAで計算をオフロードするためにあらかじめ設定する回路情報11を作成する。
入力値発生元20は、オフロードするために必要な入力値12を発生させる。
CPU30は、Enclave外メモリ31と、保護領域(enclave)32と、FPGA転送機能プログラム33と、を備える。FPGA転送機能プログラム33は、CPU30によって実行される機能プログラムである。以下の説明において、FPGA転送機能プログラム33が、主体として記載されている表記は、CPU30が、FPGA転送機能プログラム33を実行する機能を便宜的に記載したものである。
図26では、Enclave外メモリ31には、開発用PC10から回路情報11が入力され(S1参照)、入力値発生元20から入力値12(オフロードするために必要な入力値)が入力される(S2参照)。また、Enclave外メモリ31は、入力された回路情報11が格納されている。
保護領域(enclave)32は、改ざんを防止するための管理・検証用のプログラム34を有する。図23では、保護領域(enclave)32には、回路情報11、入力値12が記憶されている。
FPGA転送機能プログラム33は、Enclave外メモリ31の情報を入力し(S3参照)、保護領域(enclave)32に転送する(S4参照)。ここでは、FPGA転送機能プログラム33は、回路情報11と入力値12を、保護領域(enclave)32に転送する。FPGA転送機能プログラム33は、保護領域(enclave)32の情報(ここでは、入力値12)を読み出す(S5参照)。
FPGA転送機能プログラム33は、CPU30側の保護領域(enclave)32に保存した重要な情報(ここでは、回路情報11、入力値12)をFPGA40に送信するとともに(S6,S7参照)、FPGA40から演算用回路41を使った計算結果(オフロードして計算して出力された結果である出力値13)を受信する(S8参照)。
CPU30は、FPGA40に回路情報11を送信して、FPGA40に演算用回路41を形成させるとともに、APLの処理の一部をFPGA40にオフロードする。FPGA40は、オフロードされたAPLの処理について演算用回路41を使った演算を行って、演算結果をCPU30に転送する。
FPGA40は、演算用回路41、およびRAM42を有する。演算用回路41は、オフロードされたAPLの処理を演算し(S8参照)、演算結果である出力値13をRAM42に出力する。
RAM42は、FPGA転送機能プログラム33によって転送されたCPU30からの情報(回路情報11、入力値12)を一時的に保存するとともに、CPU30に転送する演算用回路41を使った計算結果(出力値13)を一時的に保存する。
RAM42は、FPGA転送機能プログラム33によって転送されたCPU30からの情報(回路情報11、入力値12)を一時的に保存するとともに、CPU30に転送する演算用回路41を使った計算結果(出力値13)を一時的に保存する。
<改ざんされる可能性>
CPU30側の保護領域(enclave)32と、処理を行うFPGA40間で回路情報11や計算プロセスに関する情報(例えば、入力値12)をやりとりする際に考えられる脅威として改ざん(図26の符号a,b参照)がある。
改ざんされる可能性がある情報として、FPGA40での演算を行うための回路情報11、計算のためにCPUからFPGAへ送る値(回路情報11、入力値12)の改ざん(図26の符号c,d参照)、FPGAからCPUへ送る値(出力値13)の改ざん(図26の符号e参照)が考えられる。
改ざんされる可能性がある情報に関して、改ざんされていないことを確認、検出できる必要がある。
CPU30側の保護領域(enclave)32と、処理を行うFPGA40間で回路情報11や計算プロセスに関する情報(例えば、入力値12)をやりとりする際に考えられる脅威として改ざん(図26の符号a,b参照)がある。
改ざんされる可能性がある情報として、FPGA40での演算を行うための回路情報11、計算のためにCPUからFPGAへ送る値(回路情報11、入力値12)の改ざん(図26の符号c,d参照)、FPGAからCPUへ送る値(出力値13)の改ざん(図26の符号e参照)が考えられる。
改ざんされる可能性がある情報に関して、改ざんされていないことを確認、検出できる必要がある。
<改ざんされる可能性に対処したEnclave-FPGA間の通信システム>
改ざんされる可能性に対処したEnclave-FPGA間の通信システムを構築する場合の前提条件として、下記が考えられる。
・FPGA40は、CPU30側の保護領域(enclave)32から転送された回路情報11、入力値12の信頼性を確認できるようにする。
・CPU30は、FPGA40から転送された出力値13の信頼性を確認できるようにする。
・図26の符号a-dに示すように、各通信路において、回路情報11、入力値12と出力値13の改ざんを想定する。
・機能利用者2は、CPU30内の保護領域(enclave)32を信頼している。
改ざんされる可能性に対処したEnclave-FPGA間の通信システムを構築する場合の前提条件として、下記が考えられる。
・FPGA40は、CPU30側の保護領域(enclave)32から転送された回路情報11、入力値12の信頼性を確認できるようにする。
・CPU30は、FPGA40から転送された出力値13の信頼性を確認できるようにする。
・図26の符号a-dに示すように、各通信路において、回路情報11、入力値12と出力値13の改ざんを想定する。
・機能利用者2は、CPU30内の保護領域(enclave)32を信頼している。
図27は、改ざんされる可能性に対処したEnclave-FPGA間の通信システムの概略構成図である。図26と同一構成部分には同一符号を付している。図28は、署名付与者50による秘密鍵(署名付与者)51を用いた回路情報11への署名を説明する図である。
図27に示すように、改ざんされる可能性に対処したEnclave-FPGA間の通信システムは、図26のEnclave-FPGA間の通信システムに、さらに署名付与者50(署名付与装置)を備える。
署名付与者50は、回路情報11へ署名を付与する人が用いる入力端末装置である。
署名付与者50は、秘密鍵(署名付与者)51、公開鍵(署名付与者)52、および署名(署名付与者)53を有する。
図28の符号gに示すように、署名付与者50は、秘密鍵(署名付与者)51を用いて回路情報11への署名を生成する。署名付与者50は、開発用PC10に対し秘密鍵(署名付与者)51、公開鍵(署名付与者)52、および署名(署名付与者)53を付与する(S11参照)。
図27に示すように、改ざんされる可能性に対処したEnclave-FPGA間の通信システムは、図26のEnclave-FPGA間の通信システムに、さらに署名付与者50(署名付与装置)を備える。
署名付与者50は、回路情報11へ署名を付与する人が用いる入力端末装置である。
署名付与者50は、秘密鍵(署名付与者)51、公開鍵(署名付与者)52、および署名(署名付与者)53を有する。
図28の符号gに示すように、署名付与者50は、秘密鍵(署名付与者)51を用いて回路情報11への署名を生成する。署名付与者50は、開発用PC10に対し秘密鍵(署名付与者)51、公開鍵(署名付与者)52、および署名(署名付与者)53を付与する(S11参照)。
図27に示す開発用PC10は、公開鍵(署名付与者)52および署名(署名付与者)53が付与された回路情報11をCPU30のEnclave外メモリ31に送付する(S1参照)。
図27に示すCPU30のFPGA転送機能プログラム33は、公開鍵(署名付与者)52および署名(署名付与者)53が付与された回路情報11と入力値12を、保護領域(enclave)32に転送する(S1参照)。
FPGA転送機能プログラム33は、CPU30側の保護領域(enclave)32に保存した重要な情報(ここでは、公開鍵(署名付与者)52および署名(署名付与者)53が付与された回路情報11、入力値12)をFPGA40に送信するとともに(S6,S7参照)、FPGA40から演算用回路41を使った計算結果(ここでは、出力値13)を受信する(S8参照)。
RAM42は、FPGA転送機能プログラム33によって転送されたCPU30からの情報(公開鍵(署名付与者)52および署名(署名付与者)53が付与された回路情報11、入力値12)を一時的に保存するとともに、CPU30に転送する演算用回路41を使った計算結果(出力値13)を一時的に保存する。
Elrabaa, M. E. S. et al. "Secure Computing Enclaves Using FPGAs." IEEE Transactions on Dependable and Secure Computing 18 (2021): 593-604.
従来技術では、図26に示すように、CPU30側には改ざんを防止するための保護領域(enclave)32がある。しかしながら、CPU30側の保護領域と処理を行うFPGA40間で回路情報11や計算プロセスに関する情報等をやり取りする場合、やり取りする間に情報を改ざんされる可能性がある(図26の符号a-e参照)。この場合、改ざんされていないことの確認や検出ができない課題がある。
また、図27に示すように、公開鍵などで署名検証する場合にはFPGA40側の処理負担が大きくなってしまうという課題がある。具体的に説明する。
署名検証(公開鍵が正しいか辿る)のは、FPGA40(図27参照)であり、FPGA40に負担がかかる。また、FPGA40側では、複雑な処理(署名検証・複数公開鍵の管理等)は困難である。さらに、図27の符号gに示すように、署名の検証は、FPGAにとって負担になる処理であり、計算に使う入力値12についての検証も考慮すると更に負担が増えてしまう課題がある。FPGAが結果を出力するまでの時間がかかる。
なお、回路情報11に関して、FPGA40が署名を検証することも考えられるが、複数の入力値を考慮した場合、処理の負担が増えてしまう。
署名検証(公開鍵が正しいか辿る)のは、FPGA40(図27参照)であり、FPGA40に負担がかかる。また、FPGA40側では、複雑な処理(署名検証・複数公開鍵の管理等)は困難である。さらに、図27の符号gに示すように、署名の検証は、FPGAにとって負担になる処理であり、計算に使う入力値12についての検証も考慮すると更に負担が増えてしまう課題がある。FPGAが結果を出力するまでの時間がかかる。
なお、回路情報11に関して、FPGA40が署名を検証することも考えられるが、複数の入力値を考慮した場合、処理の負担が増えてしまう。
このような背景に鑑みて本発明がなされたのであり、本発明は、回路情報等が改ざんされていないことの完全性の確認を可能にし、かつ、FPGAの処理負荷を低減することを可能にすることを課題とする。
前記した課題を解決するため、本発明は、CPUと、前記CPUからオフロードされるアプリケーションの特定処理を実行するアクセラレータと、を有し、CPU-アクセラレータ間の回路情報の完全性を検証する回路情報の完全性検証システムであって、前記CPUは、改ざんを防止するための保護領域を有し、前記保護領域に、開発用PCで署名され当該CPUに送付された前記回路情報の署名を検証する署名検証部と、前記アクセラレータ側に前記回路情報を送付する前に、前記署名検証部が検証した署名を当該CPUの鍵で署名を付け替える署名付け替え部と、を有し、前記アクセラレータは、前記CPUから入力値が送付された場合、前記入力値をもとに計算を実行しその出力値に対し、前記入力値および前記回路情報のハッシュ値と、署名とを付加して前記CPUへ送付することを特徴とする回路情報の完全性検証システムとした。
本発明によれば、回路情報等が改ざんされていないことの完全性の確認を可能にし、かつ、FPGAの処理負荷を低減することを可能にする。
以下、図面を参照して本発明を実施するための形態(以下、「本実施形態」という)におけるネットワークシステム等について説明する。
(実施形態)
本実施形態は、アクセラレータとしてFPGAを例に採るとともに、汎用サーバとしてCPUを例に採る。
[回路情報の完全性検証システム1の構成]
図1は、本発明の実施形態に係るCPU-アクセラレータ間の回路情報の完全性検証システム1の構成例を示す図である。図26および図27と同一構成部分には、同一符号を付している。
(実施形態)
本実施形態は、アクセラレータとしてFPGAを例に採るとともに、汎用サーバとしてCPUを例に採る。
[回路情報の完全性検証システム1の構成]
図1は、本発明の実施形態に係るCPU-アクセラレータ間の回路情報の完全性検証システム1の構成例を示す図である。図26および図27と同一構成部分には、同一符号を付している。
図1に示す回路情報の完全性検証システム1は、CPU100と、FPGA200(アクセラレータ)と、入力値発生元300と、を備える。また、CPU100には、開発用PC10が接続され、開発用PC10には、署名付与者50が接続される。
<開発用PC10>
開発用PC10は、FPGAで計算をオフロードするためにあらかじめ設定する回路情報11を作成し、署名付与者50に送付する(図示省略)。開発用PC10は、<回路情報の書き込み(CPU側)>では、CPU100に回路情報11、公開鍵(署名付与者)52,署名(署名付与者)53を送付する。
開発用PC10は、FPGAで計算をオフロードするためにあらかじめ設定する回路情報11を作成し、署名付与者50に送付する(図示省略)。開発用PC10は、<回路情報の書き込み(CPU側)>では、CPU100に回路情報11、公開鍵(署名付与者)52,署名(署名付与者)53を送付する。
<署名付与者50>
署名付与者50は、開発用PC10で作成されて送付された回路情報11に署名を付与し、開発用PC10に送付する(S11参照)。署名付与者50は、秘密鍵(署名付与者)51を用いて回路情報11への署名を生成する。署名付与者50は、開発用PC10に対し秘密鍵(署名付与者)51、公開鍵(署名付与者)52、および署名(署名付与者)53を付与する。
署名付与者50は、開発用PC10で作成されて送付された回路情報11に署名を付与し、開発用PC10に送付する(S11参照)。署名付与者50は、秘密鍵(署名付与者)51を用いて回路情報11への署名を生成する。署名付与者50は、開発用PC10に対し秘密鍵(署名付与者)51、公開鍵(署名付与者)52、および署名(署名付与者)53を付与する。
<CPU100>
CPU100は、Enclave外メモリ110と、FPGA転送機能プログラム120と、改ざんを防止するための保護領域(enclave)130と、を備える。
Enclave外メモリ110は、通常のアプリケーション等が動作する領域である通常領域である。CPU100は、Enclave外メモリ110を用いてアプリケーションプログラムを実行する。
FPGA転送機能プログラム120は、CPU-アクセラレータ(CPU100-FPGA200)間でデータを転送するためのプログラムである。なお、FPGA転送機能プログラム120は、FPGA転送機能部またはFPGA転送管理部と称してもよい。
CPU100は、Enclave外メモリ110と、FPGA転送機能プログラム120と、改ざんを防止するための保護領域(enclave)130と、を備える。
Enclave外メモリ110は、通常のアプリケーション等が動作する領域である通常領域である。CPU100は、Enclave外メモリ110を用いてアプリケーションプログラムを実行する。
FPGA転送機能プログラム120は、CPU-アクセラレータ(CPU100-FPGA200)間でデータを転送するためのプログラムである。なお、FPGA転送機能プログラム120は、FPGA転送機能部またはFPGA転送管理部と称してもよい。
CPU100は、<回路情報の書き込み(CPU側)>では、開発用PC10から送付された回路情報11、公開鍵(署名付与者)52,署名(署名付与者)53を受信し、開発用PC10から送付された回路情報11の署名検証を行う。署名検証は、公開鍵(署名付与者)52を用いて行う。
CPU100は、<回路情報のFPGAへの書き込み>では、FPGA200側に送られる情報の署名を確認し、署名を付け替える。
CPU100は、FPGA200から送られる入力値と回路情報のハッシュ値,出力値に署名を付与したものを受け取り、ハッシュ値,署名の検証を行う。このときに、CPU100は、相手であるFPGA200の証明書と署名をもとに、信頼できるFPGAであることを確認(attestation)する。
<保護領域130>
保護領域(enclave)130は、OS/ドライバー/BIOS(Basic Input/Output System)/VMM(Virtual Machine Manager)が侵害されてしまう攻撃を防ぐためのハードウェア上の保護された領域である。保護領域(enclave)130は、CPU100側に設けられる。保護領域(enclave)130は、公開鍵、秘密鍵、回路情報11等をCPU100内に閉じ込めておくセキュア領域である。保護領域(enclave)130を設けることで、アプリケーションがOSやVMMを信頼する状態から、ハードウェアの保護された領域のみを信頼する状態にできる。
保護領域(enclave)130は、OS/ドライバー/BIOS(Basic Input/Output System)/VMM(Virtual Machine Manager)が侵害されてしまう攻撃を防ぐためのハードウェア上の保護された領域である。保護領域(enclave)130は、CPU100側に設けられる。保護領域(enclave)130は、公開鍵、秘密鍵、回路情報11等をCPU100内に閉じ込めておくセキュア領域である。保護領域(enclave)130を設けることで、アプリケーションがOSやVMMを信頼する状態から、ハードウェアの保護された領域のみを信頼する状態にできる。
ここで、保護領域(enclave)130は、一般のアプリケーションプログラムから隔離された実行環境であり、データや計算処理が保護される。CPUやOS(Operating System)の特権モードで実行され、特定のプログラムや特定の手順によってのみ、保護領域(enclave)130のプログラムの呼び出しやデータへのアクセスが可能となる。
保護領域(enclave)130には、署名受領部131と、署名検証部132と、鍵ペア生成部133と、署名生成部134と、署名付け替え部135と、署名送付部136が格納される。
署名受領部131は、開発用PC10から送信された回路情報11、公開鍵(署名付与者)52,署名(署名付与者)53を受領する。
署名検証部132は、署名受領部131が受領した署名(署名付与者)53の署名を検証する。
署名検証部132は、開発用PC10で署名され当該CPU100に送付された回路情報11の署名を検証する。
署名検証部132は、開発用PC10で署名され当該CPU100に送付された回路情報11の署名を検証する。
また、署名検証部132は、入力値12発生元で署名され当該CPU100に送付された入力値12の署名を検証する。
また、署名検証部132は、回路情報11のハッシュ値(CPU)152と、署名付与者50が計算したハッシュ値(受け取った署名(CPU)403と公開鍵(CPU)401から計算する)とを比較して署名検証を行う。
また、署名検証部132は、FPGA200から送付されたハッシュ値および署名の検証を行う。
また、署名検証部132は、MD5(message digest algorithm 5)やSHA(Secure Hash Algorithm)等のハッシュ関数のアルゴリズムを利用してハッシュ値(ビット列)を算出する。このハッシュアルゴリズムは、CPU100とFPGA200の両方で同じものを利用する必要がある。
鍵ペア生成部133は、公開鍵(CPU)401と秘密鍵(CPU)402をもとに、鍵ペア生成する。
署名生成部134は、回路情報11のハッシュ値(CPU)152を計算したのち、ハッシュ値(CPU)152と秘密鍵(CPU)402で署名(署名(CPU)403)を行う。
署名付け替え部135は、回路情報11に署名生成部134で生成した署名(CPU)403、公開鍵(CPU)401を付与する。すなわち、署名付け替え部135は、FPGA200側に送られる情報の署名を確認し、CPUの鍵で署名を付け替える。
署名付け替え部135は、FPGA200側に回路情報11を送付する前に、署名検証部132が検証した署名を当該CPU100の鍵で署名を付け替える。
また、署名付け替え部135は、FPGA200側に入力値12を送付する前に、署名検証部132が検証した署名を当該CPU100の鍵を用いて署名を付け替える。
署名送付部136は、FPGA200へ回路情報11、CPUの公開鍵(CPU)401、CPUの署名(CPU)403を送付する。これをもとに、FPGA200では、署名検証,ハッシュ値を生成する。
<FPGA200>
FPGA200は、アクセラレータボード(図示省略)に設けられたアクセラレータである。本実施形態は、アクセラレータとしてFPGAを例に採っているが、GPU等のアクセラレータであってもよい。
FPGA200は、CPU100から入力値12が送付された場合、入力値12をもとに計算を実行しその出力値に対し、入力値12および回路情報11のハッシュ値と、署名とを付加してCPU100へ送付する。
FPGA200は、アクセラレータボード(図示省略)に設けられたアクセラレータである。本実施形態は、アクセラレータとしてFPGAを例に採っているが、GPU等のアクセラレータであってもよい。
FPGA200は、CPU100から入力値12が送付された場合、入力値12をもとに計算を実行しその出力値に対し、入力値12および回路情報11のハッシュ値と、署名とを付加してCPU100へ送付する。
FPGA200は、鍵ペアを生成する。
FPGA200は、入力値のハッシュ値を生成する。
また、FPGA200は、CPU100で生成した公開鍵および秘密鍵のうち、公開鍵を事前に登録しており、CPU100で署名され当該FPGA200に送付された回路情報11の署名を、登録した公開鍵を用いて検証する。
FPGA200は、入力値のハッシュ値を生成する。
また、FPGA200は、CPU100で生成した公開鍵および秘密鍵のうち、公開鍵を事前に登録しており、CPU100で署名され当該FPGA200に送付された回路情報11の署名を、登録した公開鍵を用いて検証する。
FPGA200は、入力値と回路情報のハッシュ値,出力値に署名を付与したものをCPU100に送る。図1では、FPGA200は、出力される結果(出力値13)に、ハッシュ値(回路情報)232およびハッシュ値(入力値)231、署名(FPGA)233を付加しCPU100に送る。なお、CPU100は、FPGA200から受け取ったハッシュ値、署名の検証を行う。
<入力値発生元300>
入力値発生元300は、公開鍵(入力値発生元)301、秘密鍵(入力値発生元)301、署名(入力値発生元)303を、CPU100のEnclave外メモリ110に送付する(S22参照)。
入力値発生元300は、公開鍵(入力値発生元)301、秘密鍵(入力値発生元)301、署名(入力値発生元)303を、CPU100のEnclave外メモリ110に送付する(S22参照)。
以下、上述のように構成された回路情報の完全性検証システム1の回路情報の完全性検証方法について説明する。
本発明の骨子は、開発用PC10が開発した回路情報11をそのままFPGA200に流さないで、一旦CPU100で検証してから、FPGA200に流す。回路情報11、回路情報11、公開鍵(署名付与者)52、署名(署名付与者)53を保護領域(enclave)130に保持しておいて、CPU100側で検証する。そして、検証後に入力値12や出力値13に対して、CPU100の鍵ペアの公開鍵だけで検証する。署名と公開鍵は、もともとの署名(署名付与者)53と公開鍵(公開鍵(署名付与者)52)ではなく、CPU100がCPU100の署名(CPU)403と公開鍵(公開鍵(CPU)401)に変えてFPGA200に送付する。FPGA200は、CPU100から入力値12が送付された場合、入力値12をもとに計算を実行しその出力値13に対し、入力値12および回路情報11のハッシュ値と、署名(署名(FPGA)233)とを付加してCPU100へ送付する。CPU100は、それを検証することで、確かなものである、改ざんがないことが分かる。
本発明の骨子は、開発用PC10が開発した回路情報11をそのままFPGA200に流さないで、一旦CPU100で検証してから、FPGA200に流す。回路情報11、回路情報11、公開鍵(署名付与者)52、署名(署名付与者)53を保護領域(enclave)130に保持しておいて、CPU100側で検証する。そして、検証後に入力値12や出力値13に対して、CPU100の鍵ペアの公開鍵だけで検証する。署名と公開鍵は、もともとの署名(署名付与者)53と公開鍵(公開鍵(署名付与者)52)ではなく、CPU100がCPU100の署名(CPU)403と公開鍵(公開鍵(CPU)401)に変えてFPGA200に送付する。FPGA200は、CPU100から入力値12が送付された場合、入力値12をもとに計算を実行しその出力値13に対し、入力値12および回路情報11のハッシュ値と、署名(署名(FPGA)233)とを付加してCPU100へ送付する。CPU100は、それを検証することで、確かなものである、改ざんがないことが分かる。
図1に示す回路情報の完全性検証システム1について、<回路情報の書き込み(CPU側)>,<回路情報のFPGAへの書き込み>,<回路情報の書き込み(FPGA側)>,<書き込み後の起動>,<回路を使った演算結果出力>,<書き込み後の起動-回路を使った演算結果出力>および<出力結果送信>の各ステージに場合分けし、各ステージで使用する装置の動作説明図と制御シーケンス図を参照して説明する。
なお、以下の各制御シーケンス図では、説明の便宜上、CPU100-FPGA200間等の処理を1つのフローに纏めている。このため、CPU100における処理と、FPGA200等における処理とは、非同期で行われる。CPU100-FPGA200間等は、それぞれ両者間の通知とその許可を待って行われることになる。
<回路情報の書き込み(CPU側)>
回路情報の書き込み(CPU側)について説明する。
図2は、CPU-FPGA200間の回路情報の完全性検証システム1の<回路情報の書き込み(CPU側)>の動作説明図である。図3は、CPU100の署名検証部132による回路情報11の署名検証を説明する図である。
回路情報の書き込み(CPU側)について説明する。
図2は、CPU-FPGA200間の回路情報の完全性検証システム1の<回路情報の書き込み(CPU側)>の動作説明図である。図3は、CPU100の署名検証部132による回路情報11の署名検証を説明する図である。
図2に示すように、<回路情報の書き込み(CPU側)>動作では、開発用PC10が、回路情報11を作成し、署名付与者50に送付する。署名付与者50は、図27の符号gに示すように、秘密鍵(署名付与者)51を用いて回路情報11への署名を生成する。署名付与者50は、開発用PC10に対し秘密鍵(署名付与者)51、公開鍵(署名付与者)52、および署名(署名付与者)53を付与する(S11参照)。
信頼できる第三者(CA:Certificate Authority,公開鍵証明書認証局または認証局)が保証する署名付与者50が回路情報11に署名を行い、その署名が回路情報11に付与されていることで、送付先のCPU30が、回路情報11の改ざんがおきていないか検証できる。
開発用PC10は、公開鍵(署名付与者)52および署名(署名付与者)53が付与された回路情報11をCPU100のEnclave外メモリ110に送付する(S21参照)。
CPU100のFPGA転送機能プログラム120は、Enclave外メモリ110に一時保存した公開鍵(署名付与者)52および署名(署名付与者)53が付与された回路情報11をCPU100の署名検証部132に送る(S27,S28参照)。
署名検証部132は、図3の符号hに示すように、署名(署名付与者)53を用いて公開鍵(署名付与者)52で暗号化された回路情報11の署名検証を行う。
署名検証部132は、図3の符号hに示すように、署名(署名付与者)53を用いて公開鍵(署名付与者)52で暗号化された回路情報11の署名検証を行う。
図4は、図2のCPU-アクセラレータ間の回路情報の完全性検証システム1の<回路情報の書き込み(CPU側)>の制御シーケンス図である。
開発用PC10は、回路情報11の元データを入力し、回路情報11を作成する(S101参照)。
開発用PC10は、作成した回路情報11を署名付与者50に送付する(S102参照)。
開発用PC10は、回路情報11の元データを入力し、回路情報11を作成する(S101参照)。
開発用PC10は、作成した回路情報11を署名付与者50に送付する(S102参照)。
一方、署名付与者50は、秘密鍵(署名付与者)51、公開鍵(署名付与者)52を入力する(S103参照)。
署名付与者50は、開発用PC10から送付された回路情報11に、秘密鍵(署名付与者)51を用いて署名(署名付与者)を付与することで署名生成する(S104参照)。
署名付与者50は、開発用PC10に署名生成した公開鍵(署名付与者)52、署名(署名付与者)53を送付する(S105参照)。
署名付与者50は、開発用PC10から送付された回路情報11に、秘密鍵(署名付与者)51を用いて署名(署名付与者)を付与することで署名生成する(S104参照)。
署名付与者50は、開発用PC10に署名生成した公開鍵(署名付与者)52、署名(署名付与者)53を送付する(S105参照)。
開発用PC10は、作成した回路情報11と、署名付与者50が署名生成した公開鍵(署名付与者)52、署名(署名付与者)53をまとめる(S106参照)。開発用PC10は、この回路情報11、公開鍵(署名付与者)52、署名(署名付与者)53をCPU100に送付(回路情報、署名送付)する(S107参照)。
CPU100は、保護領域(enclave)130に配置された署名検証部132(図2参照)で回路情報11の署名検証を行う(S108参照)。すなわち、署名検証部132は、図3の符号hに示すように、署名(署名付与者)53を用いて公開鍵(署名付与者)52で暗号化された回路情報11の署名検証を行う。
以上、<回路情報の書き込み(CPU側)> について説明した。
以上、<回路情報の書き込み(CPU側)> について説明した。
<回路情報のFPGAへの書き込み>
回路情報のFPGAへの書き込みについて説明する。
図5は、回路情報の完全性検証システム1の<回路情報のFPGAへの書き込み>の動作説明図である。図6は、CPU100のハッシュ値生成を説明する図である。図7は、CPU100の署名生成部134の秘密鍵(CPU)402による回路情報11の署名を説明する図である。図8は、FPGA200の署名検証を説明する図である。図9は、FPGA200のハッシュ値生成を説明する図である。
回路情報のFPGAへの書き込みについて説明する。
図5は、回路情報の完全性検証システム1の<回路情報のFPGAへの書き込み>の動作説明図である。図6は、CPU100のハッシュ値生成を説明する図である。図7は、CPU100の署名生成部134の秘密鍵(CPU)402による回路情報11の署名を説明する図である。図8は、FPGA200の署名検証を説明する図である。図9は、FPGA200のハッシュ値生成を説明する図である。
図5に示すように、<回路情報のFPGAへの書き込み>動作では、CPU100の署名検証部132は、署名受領部131にある署名付与者50の署名を検証する。具体的には、下記の通りである。図6に示すように、署名検証部132は、回路情報11、公開鍵(CPU)401と署名(CPU)402を入力し、ハッシュ関数(CPU)151用いてハッシュ値(回路情報)152を生成する。署名検証部132は、回路情報11のハッシュ値(回路情報)152と、署名者が計算したハッシュ値(受け取った署名(署名付与者)53と公開鍵(署名付与者)52から計算する)を比較して署名検証を行う。
CPU100の鍵ペア生成部133は、公開鍵(CPU)401と秘密鍵(CPU)402の鍵ペアを生成する。
CPU100の署名生成部134は、回路情報11に署名する(図7参照)。図7の符号iに示すように、署名生成部134は、署名検証部132が回路情報11のハッシュ値を計算したのち、ハッシュ値と秘密鍵(CPU)402で計算することで、回路情報11に署名(CPU)する。
CPU100の署名生成部134は、回路情報11に署名する(図7参照)。図7の符号iに示すように、署名生成部134は、署名検証部132が回路情報11のハッシュ値を計算したのち、ハッシュ値と秘密鍵(CPU)402で計算することで、回路情報11に署名(CPU)する。
CPU100の署名付け替え部135は、回路情報11に署名生成部134で生成した署名(CPU)402、公開鍵(CPU)401を付与する。すなわち、署名付け替え部135は、FPGA200側に送られる情報の署名を確認し、CPU100の鍵で署名を付け替える。
図5では、図2~図4に示す<回路情報の書き込み(CPU側)>で検証・確認した署名付与者50の署名(署名付与者)53を、CPU100の鍵(公開鍵(CPU)401)で署名を付け替え(署名をし直し)、署名(CPU)403とする。
図5では、図2~図4に示す<回路情報の書き込み(CPU側)>で検証・確認した署名付与者50の署名(署名付与者)53を、CPU100の鍵(公開鍵(CPU)401)で署名を付け替え(署名をし直し)、署名(CPU)403とする。
CPU100は、相手であるFPGA200との間で、FPGA200の証明書と署名をもとにして、信用できるFPGAであることを確認(attestation)する。
CPU100の署名送付部136は、FPGA200へ回路情報11、CPU100の公開鍵(CPU)401、CPU100の署名(CPU)403を送付する(S31参照)。
FPGA200は、演算用回路210の署名・ハッシュ機能部211が署名検証,ハッシュ値を生成する。具体的には、下記の通りである。
まず、FPGA200のRAM220に、CPU100で生成した公開鍵(CPU)401と秘密鍵(CPU)402のうち、公開鍵(CPU)401を事前に登録しておく。
署名・ハッシュ機能部211は、図8に示すように、回路情報11のハッシュ値(回路情報)152と、CPU100が計算したハッシュ値(受け取った署名(CPU)403と公開鍵(CPU)401から計算する)を比較して署名検証を行う。
署名・ハッシュ機能部211は、図9に示すように、回路情報11、公開鍵(CPU)401と署名(CPU)403入力し、ハッシュ関数(FPGA演算)161を用いてハッシュ値(回路情報)162を生成する。
まず、FPGA200のRAM220に、CPU100で生成した公開鍵(CPU)401と秘密鍵(CPU)402のうち、公開鍵(CPU)401を事前に登録しておく。
署名・ハッシュ機能部211は、図8に示すように、回路情報11のハッシュ値(回路情報)152と、CPU100が計算したハッシュ値(受け取った署名(CPU)403と公開鍵(CPU)401から計算する)を比較して署名検証を行う。
署名・ハッシュ機能部211は、図9に示すように、回路情報11、公開鍵(CPU)401と署名(CPU)403入力し、ハッシュ関数(FPGA演算)161を用いてハッシュ値(回路情報)162を生成する。
上述したように、ハッシュ関数(FPGA演算)161は、例えば、MD5やSHA等のハッシュ関数のアルゴリズムを利用してハッシュ値(ビット列)を算出する。このハッシュアルゴリズムは、CPU100とFPGA200の両方で同じものを利用する。
図10は、図5のCPU-FPGA200間の回路情報の完全性検証システム1の<回路情報のFPGAへの書き込み>の制御シーケンス図である。図11は、FPGA200の秘密鍵(FPGA)223による乱数501の署名を説明する図である。
CPU100は、保護領域(enclave)130に配置された署名受領部131(図5参照)で、開発用PC10(図2参照)から送付された回路情報11、公開鍵(署名付与者)52、署名(署名付与者)53を受け取る(S201参照)。
CPU100は、保護領域(enclave)130に配置された署名受領部131(図5参照)で、開発用PC10(図2参照)から送付された回路情報11、公開鍵(署名付与者)52、署名(署名付与者)53を受け取る(S201参照)。
CPU100の鍵ペア生成部133(図5参照)は、公開鍵(CPU)401と秘密鍵(CPU)402の鍵ペアを生成する(S202参照)。
CPU100の署名生成部134(図5参照)は、図7の符号iに示すように、署名検証部132(図5参照)が回路情報11のハッシュ値を計算したのち、ハッシュ値と秘密鍵(CPU)402で計算することで、回路情報11に署名する(S203参照)。
CPU100の署名生成部134(図5参照)は、図7の符号iに示すように、署名検証部132(図5参照)が回路情報11のハッシュ値を計算したのち、ハッシュ値と秘密鍵(CPU)402で計算することで、回路情報11に署名する(S203参照)。
CPU100の署名付け替え部135(図5参照)は、回路情報11に署名生成部134で生成した署名(CPU)402、公開鍵(CPU)401を付与することで、CPU100の公開鍵(CPU)401で署名(CPU)402を付け替える。
一方、FPGA200では、公開鍵(FPGA)222と秘密鍵(FPGA)223の鍵ペアを生成する(S204参照)。
<attestation >
図10の破線囲みkに示すように、CPU100は、相手であるFPGA200との間で、FPGA200の証明書と署名をもとにして、信用できるFPGAであることを確認(attestation)する。
まず、CPU100は、FPGA200に乱数501を送付する(S205参照)。
FPGA200は、図11の符号lに示すように、CPU100から送付された乱数501と秘密鍵(FPGA)223で計算することで、乱数501へ署名して署名(FPGA)502を作成する(S206参照)。
図10の破線囲みkに示すように、CPU100は、相手であるFPGA200との間で、FPGA200の証明書と署名をもとにして、信用できるFPGAであることを確認(attestation)する。
まず、CPU100は、FPGA200に乱数501を送付する(S205参照)。
FPGA200は、図11の符号lに示すように、CPU100から送付された乱数501と秘密鍵(FPGA)223で計算することで、乱数501へ署名して署名(FPGA)502を作成する(S206参照)。
FPGA200は、CPU100に署名(FPGA)502、公開鍵(FPGA)222を送付する(S207参照)。
CPU100は、公開鍵(FPGA)222と署名(FPGA)502の検証により信頼できるFPGAであることを確認する(S208参照)。ここまでが、確認(attestation)である。
CPU100は、信頼できるFPGAであることが確認されたFPGA200に回路情報11、CPU100の公開鍵(CPU)401、CPU100の署名(CPU)402を送付する(S209参照)。
FPGA200は、図8に示すように、回路情報11のハッシュ値(回路情報)152と、CPU100が計算したハッシュ値(受け取った署名(CPU)402と公開鍵(CPU)401から計算する)を比較して署名検証を行う(S210参照)。FPGA200は、図9に示すように、回路情報11、公開鍵(CPU)401と署名(CPU)403を入力し、ハッシュ関数(FPGA演算)161用いてハッシュ値(回路情報)162を生成する(S211参照)。
FPGA200の演算用回路210は、署名・ハッシュ機能部211が署名検証,ハッシュ値を生成する。具体的には、下記の通りである。
まず、FPGA200のRAM220に、CPU100で生成した公開鍵(CPU)401と秘密鍵(CPU)402のうち、公開鍵(CPU)401を事前に登録しておく。
署名・ハッシュ機能部211は、回路情報11、公開鍵(CPU)401と署名(CPU)403を入力し、ハッシュ関数(FPGA演算)161用いてハッシュ値(回路情報)162を生成する。署名・ハッシュ機能部211は、回路情報11のハッシュ値(回路情報)162と、CPU100が計算したハッシュ値(受け取った署名(CPU)402と公開鍵(CPU)401から計算する)を比較して署名検証を行う。
以上、<回路情報のFPGAへの書き込み>について説明した。
まず、FPGA200のRAM220に、CPU100で生成した公開鍵(CPU)401と秘密鍵(CPU)402のうち、公開鍵(CPU)401を事前に登録しておく。
署名・ハッシュ機能部211は、回路情報11、公開鍵(CPU)401と署名(CPU)403を入力し、ハッシュ関数(FPGA演算)161用いてハッシュ値(回路情報)162を生成する。署名・ハッシュ機能部211は、回路情報11のハッシュ値(回路情報)162と、CPU100が計算したハッシュ値(受け取った署名(CPU)402と公開鍵(CPU)401から計算する)を比較して署名検証を行う。
以上、<回路情報のFPGAへの書き込み>について説明した。
<書き込み後の起動>
書き込み後の起動について説明する。
図12は、CPU-アクセラレータ間の回路情報の完全性検証システム1の<書き込み後の起動>の動作説明図である。
FPGA200が外部のメモリを使用して記憶する場合、図12に示す書き込み後の起動の手順が追加される。
CPU100のFPGA転送機能プログラム120は、保護領域(enclave)130に配置された署名付け替え部135の回路情報11を読み出して、FPGA200に送付する(S41参照)。
FPGA200は、電源ON時にCPU100から送付された回路情報11をもとに回路が設定される。
書き込み後の起動について説明する。
図12は、CPU-アクセラレータ間の回路情報の完全性検証システム1の<書き込み後の起動>の動作説明図である。
FPGA200が外部のメモリを使用して記憶する場合、図12に示す書き込み後の起動の手順が追加される。
CPU100のFPGA転送機能プログラム120は、保護領域(enclave)130に配置された署名付け替え部135の回路情報11を読み出して、FPGA200に送付する(S41参照)。
FPGA200は、電源ON時にCPU100から送付された回路情報11をもとに回路が設定される。
<回路を使った演算結果出力>
回路を使った演算結果出力について説明する。
図13は、CPU-FPGA200間の回路情報の完全性検証システム1の<回路を使った演算結果出力>の動作説明図である。図14は、入力値発生元300の秘密鍵(入力値発生元)302による入力値12の署名を説明する図である。図15は、FPGA200の署名検証を説明する図である。
回路を使った演算結果出力について説明する。
図13は、CPU-FPGA200間の回路情報の完全性検証システム1の<回路を使った演算結果出力>の動作説明図である。図14は、入力値発生元300の秘密鍵(入力値発生元)302による入力値12の署名を説明する図である。図15は、FPGA200の署名検証を説明する図である。
図13に示すように、入力値発生元300は、入力値12、公開鍵(入力値発生元)301、秘密鍵(入力値発生元)301、署名(入力値発生元)303を有する。入力値発生元300のように、信頼できる第三者が存在することで、公開鍵が信頼できるかという確認処理が大幅に削減できる。すなわち、第三者が存在しない場合、エンティティ同士がお互いに信頼できるかを確認することに加え、公開鍵の交換が必要である。第三者が存在する場合には、各エンティティが信頼できる第三者の公開鍵の確認を行えばよい。
<回路情報のFPGAへの書き込み>動作では、入力値発生元300は、図14の符号mに示すように、秘密鍵(入力値発生元)302を用いて入力値12に署名する。
入力値発生元300は、入力値12、公開鍵(入力値発生元)301、署名(入力値発生元)303を、CPU100のEnclave外メモリ110に送付する(S51参照)。
CPU100の署名受領部131は、入力値発生元300から送付された入力値12、公開鍵(入力値発生元)301、署名(入力値発生元)303を受領する。
CPU100の署名検証部132は、入力値12の署名検証を行う。すなわち、署名検証部132は、署名(入力値発生元)303を用いて公開鍵(入力値発生元)52で暗号化された入力値12の署名検証を行う。
CPU100の署名生成部134は、図14の符号mに示すように、入力値発生元300から送付された入力値12に、秘密鍵(入力値発生元)302を用いて署名し、署名(CPU)403を生成する。
CPU100の署名付け替え部135は、CPU100の鍵で入力値12に署名する。すなわち、署名付け替え部135は、図5に示す回路情報11と同様に、入力値12の署名を付け替える。
CPU100の署名送付部136は、FPGA転送機能プログラム120を用いて、署名付け替え部135が署名を付け替えた入力値12と署名(CPU)403をFPGA200に送付する(S52参照)。
FPGA200の演算用回路210は、署名・ハッシュ機能部211が署名検証を行う。具体的には、下記の通りである。
署名・ハッシュ機能部211は、図15の符号nに示すように、CPU100が計算したハッシュ値(受け取った署名(CPU)403と公開鍵(CPU)401から計算する)を比較して署名検証を行う。
署名・ハッシュ機能部211は、図15の符号nに示すように、CPU100が計算したハッシュ値(受け取った署名(CPU)403と公開鍵(CPU)401から計算する)を比較して署名検証を行う。
FPGA200の演算用回路210は、CPU100から送付された回路情報11をもとに回路が設定されており、この回路を使って入力値12をもとに出力値13を算出する。回路を使った演算結果は、RAM220に出力値13、ハッシュ値(回路情報)232、CPU100の公開鍵(CPU)401と共に一時記憶される。
以上、<回路を使った演算結果出力>について説明した。
以上、<回路を使った演算結果出力>について説明した。
<書き込み後の起動-回路を使った演算結果出力>
書き込み後の起動-回路を使った演算結果出力について説明する。
図16は、CPU-FPGA200間の回路情報の完全性検証システム1の<書き込み後の起動-回路を使った演算結果出力>の制御シーケンス図である。図17は、入力値発生元300の秘密鍵(入力値発生元)302による入力値12の署名を説明する図である。図18は、FPGA200の秘密鍵(FPGA)223による乱数501の署名を説明する図である。
書き込み後の起動-回路を使った演算結果出力について説明する。
図16は、CPU-FPGA200間の回路情報の完全性検証システム1の<書き込み後の起動-回路を使った演算結果出力>の制御シーケンス図である。図17は、入力値発生元300の秘密鍵(入力値発生元)302による入力値12の署名を説明する図である。図18は、FPGA200の秘密鍵(FPGA)223による乱数501の署名を説明する図である。
<書き込み後の起動-回路を使った演算結果出力>動作では、入力値発生元300は、公開鍵(入力値発生元)301、秘密鍵(入力値発生元)302を出力する(S301参照)。
入力値発生元300は、署名(入力値発生元)302を用いて入力値12に署名する(S302参照)。
入力値発生元300は、入力値12の署名生成を行う(S303参照)。
入力値発生元300は、入力値12の署名生成を行う(S303参照)。
入力値発生元300は、入力値12、公開鍵(入力値発生元)301、署名(入力値発生元)303を、CPU100に送付する(S304参照)。
一方、CPU100は、保護領域(enclave)130に配置された署名受領部131(図5参照)で、開発用PC10(図2参照)から送付された回路情報11、公開鍵(署名付与者)52、署名(署名付与者)53、公開鍵(CPU)401、秘密鍵(CPU)402、署名(CPU)403を受け取る(S305参照)。
CPU100は、電源ONを契機とし(S306参照)、FPGA200に回路情報11を送付する(S307参照)。
CPU100は、図17の符号oに示すように、署名(入力値発生元)303を用いて公開鍵(入力値発生元)301の署名検証を行う(S308参照)。
CPU100は、図18の符号pに示すように、秘密鍵(CPU)402を用いて入力値12に署名する(S309参照)。
CPU100は、署名(CPU)403を用いて入力値12の署名をし直す(付け替える)(S310参照)。
保護領域で署名をし直すことについて説明する。
保護領域での署名し直しには、「回路情報」、「回路情報+入力値」、「回路情報+入力値+出力値」がある。
署名をし直す効果は、下記の通りである。すなわち、FPGA200で管理する公開鍵が減る効果がある。署名をし直さない場合、FPGA200で様々な公開鍵を使った検証が必要になる。公開鍵の信頼性を確認する方法が、「受け取り側が信用するルートCAからたどることのできる証明書に含まれた公開鍵であるか」の場合、ルートCAから証明書をたどることも必要となる。また、証明書というのは、一旦発行したあとに、無効化される場合もあるので、無効化のチェックも必要となる。このように、信頼できる証明書であることの検証はFPGA200にとって負担になる。
保護領域での署名し直しには、「回路情報」、「回路情報+入力値」、「回路情報+入力値+出力値」がある。
署名をし直す効果は、下記の通りである。すなわち、FPGA200で管理する公開鍵が減る効果がある。署名をし直さない場合、FPGA200で様々な公開鍵を使った検証が必要になる。公開鍵の信頼性を確認する方法が、「受け取り側が信用するルートCAからたどることのできる証明書に含まれた公開鍵であるか」の場合、ルートCAから証明書をたどることも必要となる。また、証明書というのは、一旦発行したあとに、無効化される場合もあるので、無効化のチェックも必要となる。このように、信頼できる証明書であることの検証はFPGA200にとって負担になる。
CPU100は、FPGA200に署名をし直した入力値12、署名(CPU)403を送付する。
一方、FPGA200は、CPU100から送付された公開鍵(FPGA)222、秘密鍵(FPGA)223、ハッシュ値(回路情報)232、CPU100から送付された公開鍵(CPU)401を受け取る(S312参照)。
FPGA200は、これら公開鍵(FPGA)222、秘密鍵(FPGA)223、ハッシュ値(回路情報)232、公開鍵(CPU)401に加え、CPU100から送付された、署名をし直した回路情報11と(S307参照)、CPU100から送付された、署名をし直した入力値12、署名(CPU)403(S311参照)をもとに、署名検証と、回路を使った演算を行う(S312参照)。上記S312における署名検証は、図15の符号nに示すように、CPU100が計算したハッシュ値(受け取った署名(CPU)402と公開鍵(CPU)401から計算する)を比較する署名検証である。
FPGA200は、出力値13を出力して<書き込み後の起動-回路を使った演算結果出力>シーケンスを終了する。
以上、<書き込み後の起動-回路を使った演算結果出力>について説明した。
以上、<書き込み後の起動-回路を使った演算結果出力>について説明した。
<出力結果送信>
出力結果送信について説明する。
図19は、CPU-アクセラレータ間の回路情報の完全性検証システム1の<出力結果送信>の動作説明図である。図20は,FPGA200の公開鍵(FPGA)222と秘密鍵(FPGA)223の鍵ペア生成を説明する図である。図21は、FPGA200のハッシュ値生成を説明する図である。図22は、FPGA200の入力値と回路情報のハッシュ値、出力値の署名を説明する図である。図23は、回路情報11、入力値12のハッシュ値検証の説明図である。
出力結果送信について説明する。
図19は、CPU-アクセラレータ間の回路情報の完全性検証システム1の<出力結果送信>の動作説明図である。図20は,FPGA200の公開鍵(FPGA)222と秘密鍵(FPGA)223の鍵ペア生成を説明する図である。図21は、FPGA200のハッシュ値生成を説明する図である。図22は、FPGA200の入力値と回路情報のハッシュ値、出力値の署名を説明する図である。図23は、回路情報11、入力値12のハッシュ値検証の説明図である。
図19に示すように、<出力結果送信>動作では、FPGA200は、鍵ペア生成,入力値12のハッシュ値を生成する。具体的には、下記の通りである。FPGA200は、演算用回路210の署名・ハッシュ機能部211が、図20に示すように、公開鍵(FPGA)222と秘密鍵(FPGA)223の鍵ペアを生成する。
演算用回路210の署名・ハッシュ機能部211は、図21に示すように、ハッシュ関数(入力値)212を用いてハッシュ値(入力値)214を生成する。
演算用回路210の署名・ハッシュ機能部211は、図21に示すように、ハッシュ関数(入力値)212を用いてハッシュ値(入力値)214を生成する。
これらのハッシュ値や鍵生成の機能を、FPGA200の回路情報としてFPGA200側に実装する方法と、事前にFPGA200の集積回路の中やその他の部分に回路を作りこんでおく(つまり、後から変更はできない)方法の2つがあり、どちらを使用してもよい。現状の製品を使う場合、前者を使わないと実現できない場合もあるが、理想的にはこのようなセキュリティを守る機能は後から修正できない方がよい場合もある。
演算用回路210による演算結果は、RAM220に出力される(S61参照)。RAM220は、ハッシュ値(入力値)231、ハッシュ値(回路情報)232、出力値13、署名(FPGA)を一時記憶する。また、RAM220は、入力値12、CPU100の公開鍵(CPU)401、FPGA200の公開鍵(FPGA)222、FPGA200の秘密鍵(FPGA)223を一時記憶する。
FPGA200は、図22の符号qに示すように、秘密鍵(FPGA)233を用いて、入力値と回路情報のハッシュ値であるハッシュ値(入力値)231、ハッシュ値(回路情報)232、出力値13に署名する。
FPGA200は、ハッシュ値(入力値)231、ハッシュ値(回路情報)232、出力値13に付与した署名(FPGA)223、公開鍵(FPGA)222をCPU100に送付する(S62参照)。
FPGA200は、ハッシュ値(入力値)231、ハッシュ値(回路情報)232、出力値13に付与した署名(FPGA)223、公開鍵(FPGA)222をCPU100に送付する(S62参照)。
CPU100は、ハッシュ値、署名の検証を行う。具体的には、ハッシュ値検証は、下記の通りである。CPU100は、図23に示すように、入力値12、回路情報11、公開鍵(CPU)401と署名(CPU)402を入力し、ハッシュ関数(CPU)141を用いてハッシュ値(入力値)142,ハッシュ値(回路情報)143を生成する。
なお、ハッシュ値、署名の検証時に、CPU100が信頼できるFPGAであることを確認するattestationを行ってもよい。
なお、ハッシュ値、署名の検証時に、CPU100が信頼できるFPGAであることを確認するattestationを行ってもよい。
図24は、図19のCPU-アクセラレータ間の回路情報の完全性検証システム1の<出力結果送信>の制御シーケンス図である。図25は、CPU100の公開鍵(FPGA)222を用いて出力値13に付与した署名(FPGA)223の署名検証を説明する図である。
<出力結果送信>動作では、FPGA200は、公開鍵(FPGA)222、秘密鍵(FPGA)223、回路情報11、ハッシュ値(回路情報)232、公開鍵(CPU)401、入力値12、出力値13を取り込む(S401参照)。
FPGA200は、図22の符号qに示すように、秘密鍵(FPGA)233を用いて、入力値と回路情報のハッシュ値であるハッシュ値(入力値)231、ハッシュ値(回路情報)232、出力値13に署名する(S402参照)。
FPGA200は、図22の符号qに示すように、秘密鍵(FPGA)233を用いて、入力値と回路情報のハッシュ値であるハッシュ値(入力値)231、ハッシュ値(回路情報)232、出力値13に署名する(S402参照)。
FPGA200は、図21に示すように、ハッシュ関数(入力値)212を用いてハッシュ値(入力値)214を生成する(S403参照)。
FPGA200は、ハッシュ値(入力値)231、ハッシュ値(回路情報)232、出力値13に付与した署名(FPGA)223、公開鍵(FPGA)222をCPU100に送付する(S404参照)。
一方、CPU100は、保護領域(enclave)130に配置された署名受領部131(図5参照)で、開発用PC10(図2参照)から送付された回路情報11、公開鍵(署名付与者)52、署名(署名付与者)53、入力値12、公開鍵(入力値発生元)301、署名(入力値発生元)303を受け取る(S405参照)。
CPU100は、図25の符号rに示すように、公開鍵(FPGA)222を用いて出力値13に付与した署名(FPGA)223の署名検証を行う(S406参照)。
CPU100は、図23に示すように、入力値12、回路情報11、公開鍵(CPU)401と署名(CPU)402を入力し、ハッシュ関数(CPU)141を用いてハッシュ値(入力値)142,ハッシュ値(回路情報)143を生成する(S407参照)。
以上、<出力結果送信>について説明した。
CPU100は、図23に示すように、入力値12、回路情報11、公開鍵(CPU)401と署名(CPU)402を入力し、ハッシュ関数(CPU)141を用いてハッシュ値(入力値)142,ハッシュ値(回路情報)143を生成する(S407参照)。
以上、<出力結果送信>について説明した。
[効果]
以上説明したように、CPU100と、CPU100からオフロードされるアプリケーションの特定処理を実行するFPGA200と、を有し、CPU100-FPGA200間の回路情報11の完全性を検証する回路情報11の完全性検証システムであって、CPU100は、改ざんを防止するための保護領域(enclave)130を有し、保護領域(enclave)130に、開発用PC10で署名され当該CPU100に送付された回路情報11の署名を検証する署名検証部132と、FPGA200側に回路情報11を送付する前に、署名検証部132が検証した署名(署名付与者)53を当該CPU100の公開鍵(公開鍵(CPU)401)で署名(CPU)402を付け替える署名付け替え部135と、を有し、FPGA200は、CPU100から入力値12が送付された場合、入力値12をもとに計算を実行しその出力値に対し、入力値12および回路情報11のハッシュ値と、署名(署名(FPGA)233)とを付加してCPU100へ送付する。
以上説明したように、CPU100と、CPU100からオフロードされるアプリケーションの特定処理を実行するFPGA200と、を有し、CPU100-FPGA200間の回路情報11の完全性を検証する回路情報11の完全性検証システムであって、CPU100は、改ざんを防止するための保護領域(enclave)130を有し、保護領域(enclave)130に、開発用PC10で署名され当該CPU100に送付された回路情報11の署名を検証する署名検証部132と、FPGA200側に回路情報11を送付する前に、署名検証部132が検証した署名(署名付与者)53を当該CPU100の公開鍵(公開鍵(CPU)401)で署名(CPU)402を付け替える署名付け替え部135と、を有し、FPGA200は、CPU100から入力値12が送付された場合、入力値12をもとに計算を実行しその出力値に対し、入力値12および回路情報11のハッシュ値と、署名(署名(FPGA)233)とを付加してCPU100へ送付する。
このようにすることにより、CPU100での署名の付け替えにより、FPGA200側で管理する公開鍵を減らすことが可能となるため、FPGA200の処理負荷も低減することが可能となる。また、CPU100は、FPGA200からの結果を検証可能となるため、回路情報11等が改ざんされていないことの完全性の確認が可能となる。すなわち、CPU100は、重要な情報の正しさ(算出した値が正しいか、保護領域(enclave)130-FPGA200間の通信の改ざんがないか)を検証することができる。
回路情報の完全性検証システム1のCPU100において、署名検証部132は、入力値発生元300で署名され当該CPU100に送付された入力値12の署名を検証し、署名付け替え部135は、FPGA200側に入力値12を送付する前に、署名検証部132が検証した署名を当該CPU100の鍵(公開鍵(CPU)401)を用いて署名を付け替える。
このようにすることにより、回路情報11等が改ざんされていないことの完全性の確認を可能にすることができる。
回路情報の完全性検証システム1において、開発用PC10は、信頼できる第三者(CA)が保証する署名付与者50が、回路情報11に署名する。
このようにすることにより、回路情報11等が改ざんされていないことの完全性の確認を可能にし、かつ、FPGAの処理負荷を低減することができる。
回路情報の完全性検証システム1において、回路情報11のハッシュ値(CPU)152を計算したのち、ハッシュ値(CPU)152と秘密鍵(CPU)402で署名(署名(CPU)403)を行う署名生成部134を備え、署名検証部132は、回路情報11のハッシュ値(CPU)152と、署名付与者50が計算したハッシュ値(受け取った署名(CPU)403と公開鍵(CPU)401から計算する)とを比較して署名検証を行う。
このようにすることにより、署名検証部132が、回路情報11のハッシュ値(CPU)152と、署名付与者50が計算したハッシュ値とを比較して署名検証を行うことで、署名付け替え部135による、署名(CPU)402の付け替えに先立って付け替えそのものが、改ざんされていないことの完全性の確認を可能にすることができる。
回路情報の完全性検証システム1において、署名検証部132は、FPGA200から送付されたハッシュ値および署名の検証を行う。
このようにすることにより、回路情報11等が改ざんされていないことの完全性の確認を可能にすることができる。
回路情報の完全性検証システム1において、FPGA200は、CPU100で生成した公開鍵および秘密鍵のうち、公開鍵を事前に登録しており、CPU100で署名され当該FPGA200に送付された回路情報11の署名を、登録した公開鍵を用いて検証する。
このようにすることにより、FPGA200の処理負荷を低減することができる。
[その他]
上記原理説明および実施形態において説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部または一部を公知の方法で自動的に行うこともできる。この他、上述文書中や図面中に示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。
上記原理説明および実施形態において説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部または一部を公知の方法で自動的に行うこともできる。この他、上述文書中や図面中に示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。
また、上記の各構成、機能、処理部、処理手段等は、それらの一部または全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行するためのソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、SSD(Solid State Drive)等の記録装置、または、IC(Integrated Circuit)カード、SD(Secure Digital)カード、光ディスク等の記録媒体に保持することができる。また、本明細書において、時系列的な処理を記述する処理ステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理(例えば、並列処理あるいはオブジェクトによる処理)をも含むものである。
1 回路情報の完全性検証システム
10 開発用PC
11 回路情報
12 入力値
13 出力値
50 署名付与者(署名付与装置)
52 公開鍵(署名付与者)
53 署名(署名付与者)
100 CPU
130 保護領域(enclave)
131 署名受領部
132 署名検証部
133 鍵ペア生成部
134 署名生成部
135 署名付け替え部
136 署名送付部
152 回路情報のハッシュ値
200 FPGA(アクセラレータ)
210 演算用回路
211 ハッシュ機能部
212,231 ハッシュ値(入力値)
222 公開鍵(FPGA)
223 秘密鍵(FPGA)
232 ハッシュ値(回路情報)
233 署名(FPGA)
300 入力値発生元
401 公開鍵(CPU)
402 秘密鍵(CPU)
403 署名(CPU)
10 開発用PC
11 回路情報
12 入力値
13 出力値
50 署名付与者(署名付与装置)
52 公開鍵(署名付与者)
53 署名(署名付与者)
100 CPU
130 保護領域(enclave)
131 署名受領部
132 署名検証部
133 鍵ペア生成部
134 署名生成部
135 署名付け替え部
136 署名送付部
152 回路情報のハッシュ値
200 FPGA(アクセラレータ)
210 演算用回路
211 ハッシュ機能部
212,231 ハッシュ値(入力値)
222 公開鍵(FPGA)
223 秘密鍵(FPGA)
232 ハッシュ値(回路情報)
233 署名(FPGA)
300 入力値発生元
401 公開鍵(CPU)
402 秘密鍵(CPU)
403 署名(CPU)
Claims (7)
- CPUと、前記CPUからオフロードされるアプリケーションの特定処理を実行するアクセラレータと、を有し、CPU-アクセラレータ間の回路情報の完全性を検証する回路情報の完全性検証システムであって、
前記CPUは、改ざんを防止するための保護領域を有し、
前記保護領域に、開発用PCで署名され当該CPUに送付された前記回路情報の署名を検証する署名検証部と、
前記アクセラレータ側に前記回路情報を送付する前に、前記署名検証部が検証した署名を当該CPUの鍵で署名を付け替える署名付け替え部と、を有し、
前記アクセラレータは、
前記CPUから入力値が送付された場合、前記入力値をもとに計算を実行しその出力値に対し、前記入力値および前記回路情報のハッシュ値と、署名とを付加して前記CPUへ送付する
ことを特徴とする回路情報の完全性検証システム。 - 前記署名検証部は、入力値発生元で署名され当該CPUに送付された入力値の署名を検証し、
前記署名付け替え部は、前記アクセラレータ側に前記入力値を送付する前に、前記署名検証部が検証した署名を当該CPUの鍵を用いて署名を付け替える
ことを特徴とする請求項1記載の回路情報の完全性検証システム。 - 前記開発用PCは、信頼できる第三者が保証する署名付与装置が、前記回路情報に署名する
ことを特徴とする請求項1記載の回路情報の完全性検証システム。 - 前記回路情報のハッシュ値を計算したのち、ハッシュ値と秘密鍵で計算する署名を行う署名生成部を備え、
前記署名検証部は、前記回路情報のハッシュ値と、前記署名付与装置が計算したハッシュ値とを比較して署名検証を行う
ことを特徴とする請求項3記載の回路情報の完全性検証システム。 - 前記署名検証部は、前記アクセラレータから送付されたハッシュ値および署名の検証を行う
ことを特徴とする請求項1記載の回路情報の完全性検証システム。 - 前記アクセラレータは、前記CPUで生成した公開鍵および秘密鍵のうち、前記公開鍵を事前に登録しており、
前記CPUで署名され当該アクセラレータに送付された前記回路情報の署名を、登録した前記公開鍵を用いて検証する
ことを特徴とする請求項1記載の回路情報の完全性検証システム。 - CPUと、前記CPUからオフロードされるアプリケーションの特定処理を実行するアクセラレータと、を有し、CPU-アクセラレータ間の回路情報の完全性を検証する回路情報の完全性検証方法であって、
前記CPUは、改ざんを防止するための保護領域に、開発用PCで署名され当該CPUに送付された前記回路情報の署名を検証する工程と、
前記アクセラレータ側に前記回路情報を送付する前に、前記検証した署名を当該CPUの鍵で署名を付け替える工程と、有し、
前記アクセラレータは、前記CPUから入力値が送付された場合、前記入力値をもとに計算を実行しその出力値に対し、前記入力値および前記回路情報のハッシュ値と、署名とを付加して前記CPUへ送付する工程を有する
ことを特徴とする回路情報の完全性検証方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2021/024405 WO2023275947A1 (ja) | 2021-06-28 | 2021-06-28 | 回路情報の完全性検証システムおよび回路情報の完全性検証方法 |
JP2023531162A JPWO2023275947A1 (ja) | 2021-06-28 | 2021-06-28 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2021/024405 WO2023275947A1 (ja) | 2021-06-28 | 2021-06-28 | 回路情報の完全性検証システムおよび回路情報の完全性検証方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2023275947A1 true WO2023275947A1 (ja) | 2023-01-05 |
Family
ID=84690987
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/JP2021/024405 WO2023275947A1 (ja) | 2021-06-28 | 2021-06-28 | 回路情報の完全性検証システムおよび回路情報の完全性検証方法 |
Country Status (2)
Country | Link |
---|---|
JP (1) | JPWO2023275947A1 (ja) |
WO (1) | WO2023275947A1 (ja) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103475469A (zh) * | 2013-09-10 | 2013-12-25 | 中国科学院数据与通信保护研究教育中心 | 一种结合cpu和gpu实现sm2算法的方法及装置 |
CN103546288A (zh) * | 2013-09-25 | 2014-01-29 | 中国科学院数据与通信保护研究教育中心 | Sm2数字签名生成算法的实现方法及装置 |
JP2015075801A (ja) * | 2013-10-07 | 2015-04-20 | 株式会社日立製作所 | 制御システム及び認証装置 |
JP2016136390A (ja) * | 2015-01-19 | 2016-07-28 | 大日本印刷株式会社 | 処理方式判定装置、携帯型情報処理装置、icカード、処理方式判定方法、及び処理方式判定プログラム |
-
2021
- 2021-06-28 WO PCT/JP2021/024405 patent/WO2023275947A1/ja active Application Filing
- 2021-06-28 JP JP2023531162A patent/JPWO2023275947A1/ja active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103475469A (zh) * | 2013-09-10 | 2013-12-25 | 中国科学院数据与通信保护研究教育中心 | 一种结合cpu和gpu实现sm2算法的方法及装置 |
CN103546288A (zh) * | 2013-09-25 | 2014-01-29 | 中国科学院数据与通信保护研究教育中心 | Sm2数字签名生成算法的实现方法及装置 |
JP2015075801A (ja) * | 2013-10-07 | 2015-04-20 | 株式会社日立製作所 | 制御システム及び認証装置 |
JP2016136390A (ja) * | 2015-01-19 | 2016-07-28 | 大日本印刷株式会社 | 処理方式判定装置、携帯型情報処理装置、icカード、処理方式判定方法、及び処理方式判定プログラム |
Non-Patent Citations (1)
Title |
---|
ELRABAA, M. E. S. ET AL.: "Secure Computing Enclaves Using FPGAs", IEEE TRANSACTIONS ON DEPENDABLE AND SECURE COMPUTING ., vol. 18, no. 2, 6 August 2019 (2019-08-06), pages 593 - 604, XP011842275, DOI: 10.1109/TDSC.2019.2933214 * |
Also Published As
Publication number | Publication date |
---|---|
JPWO2023275947A1 (ja) | 2023-01-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111095256B (zh) | 在可信执行环境中安全地执行智能合约操作 | |
US11244054B2 (en) | Method and apparatus for trusted computing | |
US10103894B2 (en) | Creating a digital certificate for a service using a local certificate authority | |
Anati et al. | Innovative technology for CPU based attestation and sealing | |
US8631507B2 (en) | Method of using signatures for measurement in a trusted computing environment | |
US9405912B2 (en) | Hardware rooted attestation | |
EP2080142B1 (en) | Attestation of computing platforms | |
CN111095899A (zh) | 针对可信执行环境的分布式密钥管理 | |
CN110199285B (zh) | 从属包围区二进制文件 | |
CN115048652A (zh) | 针对运行已验证软件的硬件的端到端安全性 | |
JP2012099128A (ja) | 呼び出しプログラムについての秘密の封印解除方法 | |
JP2008507203A (ja) | ディストリビューションcdを使用した、署名されたグループにおけるダイレクトプルーフの秘密鍵を装置に伝達する方法 | |
JP6780771B2 (ja) | 検証情報付与装置、検証装置、情報管理システム、方法およびプログラム | |
JP2018117185A (ja) | 情報処理装置、情報処理方法 | |
US11748521B2 (en) | Privacy-enhanced computation via sequestered encryption | |
US9692641B2 (en) | Network connecting method and electronic device | |
US9800410B1 (en) | Data encryption system and method | |
WO2023275947A1 (ja) | 回路情報の完全性検証システムおよび回路情報の完全性検証方法 | |
US11985255B2 (en) | Data integrity validation via degenerate keys | |
CN115549984A (zh) | 跨链交易方法、装置、设备和存储介质 | |
Hao et al. | Trusted block as a service: Towards sensitive applications on the cloud | |
DiLuoffo et al. | Credential Masquerading and OpenSSL Spy: Exploring ROS 2 using DDS security | |
Ott et al. | Universal Remote Attestation for Cloud and Edge Platforms | |
Manferdelli et al. | The cloudproxy tao for trusted computing | |
WO2023145240A1 (ja) | 情報処理装置および情報処理システム |
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: 21948259 Country of ref document: EP Kind code of ref document: A1 |
|
WWE | Wipo information: entry into national phase |
Ref document number: 2023531162 Country of ref document: JP |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
122 | Ep: pct application non-entry in european phase |
Ref document number: 21948259 Country of ref document: EP Kind code of ref document: A1 |