WO2020065958A1 - 署名生成装置、署名プログラム生成装置、署名生成方法、署名プログラム生成方法、署名プログラム、及び署名生成プログラムの生成プログラム - Google Patents
署名生成装置、署名プログラム生成装置、署名生成方法、署名プログラム生成方法、署名プログラム、及び署名生成プログラムの生成プログラム Download PDFInfo
- Publication number
- WO2020065958A1 WO2020065958A1 PCT/JP2018/036442 JP2018036442W WO2020065958A1 WO 2020065958 A1 WO2020065958 A1 WO 2020065958A1 JP 2018036442 W JP2018036442 W JP 2018036442W WO 2020065958 A1 WO2020065958 A1 WO 2020065958A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- signature
- random number
- program
- storage area
- secure storage
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/10—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols with particular housing, physical features or manual controls
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
Definitions
- the present invention relates to an electronic signature.
- White box implementation is a technology that protects the secret key of a cryptographic program by software from an attacker who can control the execution environment of the device.
- Non-Patent Document 1 states that the secret key of a program of a standard encryption method such as AES, RSA encryption, or elliptic curve encryption can be protected from an attacker who can control the execution environment of the device.
- TEE II is a technology that creates a secure area in terms of hardware and protects confidential information such as programs including secret keys and intellectual property by handling it in the secure area. For example, this is realized using ⁇ Intel SGX ⁇ of Non-Patent Document 2, ⁇ ARM Trust Zone ⁇ of Non-Patent Document 3, and the like.
- a signature scheme that satisfies high security is a stochastic signature scheme that uses random numbers when generating a signature.
- the probabilistic signature scheme includes, for example, DSA (Digital Signature Algorithm).
- Patent Literature 1 discloses a technique for reducing the amount of communication and calculation by reducing the number of elements constituting an electronic signature.
- the present inventor has found that, in a signature program of a stochastic signature scheme, there is a possibility that a secret key may be restored from other data even if the secret key is not directly leaked.
- the present invention has been made in view of such a problem, and one of its objects is to provide a technique for improving the security of a signature program of a stochastic signature scheme.
- the first signature generation device of the present invention has an execution unit that executes a signature program that generates an electronic signature using a stochastic signature scheme.
- the signature program acquires a message and generates an electronic signature from the message using a random number and a secret key.
- the execution unit loads a process using the random number from among processes included in the signature program into a secure storage area and executes the process.
- the random number is stored in the secure storage area.
- the second signature generation device of the present invention has an execution unit that executes a signature program that generates an electronic signature using a stochastic signature scheme.
- the signature program acquires a message and generates an electronic signature from the message using a random number and a secret key.
- the random number and a process for handling the random number are obfuscated.
- a signature program generation device includes: 1) an acquisition unit that acquires a signature program that generates an electronic signature by a stochastic signature method; and 2) a random number used to generate an electronic signature from the acquired signature program.
- a first altering unit that alters the signature program so that the process to store the random number in the secure storage area is detected, and 3) handles the random number from the acquired signature program.
- a second modification unit that detects the processing and modifies the signature program so that the processing is loaded into the secure storage area and executed.
- the first signature generation method of the present invention is executed by a computer.
- the signature generation method executes a signature program that generates an electronic signature using a stochastic signature scheme.
- the signature program acquires a message and generates an electronic signature from the message using a random number and a secret key.
- the process using the random number is loaded into a secure storage area and executed.
- the random number is stored in the secure storage area.
- the second signature generation method of the present invention is executed by a computer.
- the signature generation method executes a signature program that generates an electronic signature using a stochastic signature scheme.
- the signature program acquires a message and generates an electronic signature from the message using a random number and a secret key.
- the random number and a process for handling the random number are obfuscated.
- the signature program generation method of the present invention is executed by a computer.
- the signature program generation method includes: 1) obtaining a signature program for generating an electronic signature by a stochastic signature method, and 2) storing a random number used for generation of an electronic signature from the obtained signature program in a storage area. 3) modify the signature program so that the process stores the random number in a secure storage area; and 3) detect a process that handles the random number from the acquired signature program, and The signature program is modified so that the program is loaded into a storage area and executed.
- the first signature program of the present invention obtains a message and generates an electronic signature from the message using a random number and a secret key.
- the process using the random number is loaded into a secure storage area and executed.
- the random number is stored in the secure storage area.
- the second signature program of the present invention obtains a message and generates an electronic signature from the message using a random number and a secret key.
- the random number and the process for handling the random number are obfuscated.
- the signature program generation program causes a computer to execute the signature program generation method of the present invention.
- FIG. 4 shows an outline of the operation of a signature program that operates on the signature generation device. It is a figure which illustrates the outline
- FIG. 2 is a diagram illustrating a functional configuration of the signature generation device according to the first embodiment.
- FIG. 3 is a diagram illustrating a computer for realizing a signature generation device. 5 is a flowchart illustrating a flow of a process performed by the signature generation device according to the first exemplary embodiment.
- FIG. 3 is a diagram conceptually illustrating a signature program including a random number therein.
- FIG. 3 is a diagram conceptually illustrating a signature program having a random number generator.
- FIG. 3 is a first diagram illustrating a configuration of a random number generator.
- FIG. 5 is a second diagram illustrating the configuration of the random number generator.
- FIG. 13 is a third diagram illustrating the configuration of the random number generator.
- FIG. 3 is a diagram illustrating a signature program divided into a secure program and a program operating in a normal execution environment. It is a figure showing the outline of operation of a signature program generation device.
- FIG. 3 is a diagram illustrating a functional configuration of a signature program generation device.
- FIG. 3 is a diagram illustrating a computer for realizing a signature program generation device.
- 5 is a flowchart illustrating a flow of a process performed by the signature program generation device.
- FIG. 11 is a diagram illustrating a specific example of the operation of the signature program.
- each block diagram represents a configuration of a functional unit, not a configuration of a hardware unit.
- FIG. 1 and FIG. 2 are diagrams showing the outline of the signature generation device 2000 of the present embodiment.
- FIG. 1 shows an outline of the operation of the signature program 10 that operates in the signature generation device 2000.
- the signature generation device 2000 executes the signature program 10.
- the signature program 10 generates an electronic signature using a stochastic signature generation method. Specifically, the signature program 10 acquires the message 20 and generates an electronic signature 30 from the message 20 using the secret key 12 and the random number 14.
- a known algorithm such as DSA can be adopted as the signature algorithm of the stochastic signature scheme.
- the signature generation device 2000 realizes the protection of the random number 14 by the method described below.
- An existing method can be used to protect the secret key 12 itself.
- FIG. 2 is a diagram illustrating an outline of the configuration of the signature generation device 2000.
- the signature program 10 handles the random number 14 in a secure storage area (hereinafter, a secure storage area 40).
- the secure storage area 40 is, for example, a storage area configuring a Trusted ⁇ Execution ⁇ Environment (TEE).
- TEE Trusted ⁇ Execution ⁇ Environment
- the signature generation device 2000 loads a process using the random number 14 from among the processes included in the signature program 10 into the secure storage area 40 and executes the process. Further, the random number 14 is stored in the secure storage area 40.
- the data stored in the secure storage area 40 is configured so as to be accessible only from the processing loaded into the secure storage area 40 and executed. Therefore, even if the processing is loaded and executed in a place other than the secure storage area 40 and the processing is executed with ⁇ root ⁇ authority, the random number 14 stored in the secure storage area 40 cannot be accessed.
- the signature program 10 While the digital signature 30 can be generated using the random number 14, it is possible to prevent the random number 14 from being accessed from other processes. Therefore, generation of the digital signature 30 using the random number 14 can be realized while protecting the random number 14.
- DSA performs key generation, signature generation, and signature verification as follows.
- x is a secret key
- p, q, g, and y are public keys.
- the attacker who obtained the message, the public key, the random number used to generate the signature, and the signature can calculate the secret key as follows.
- x (sh (m)) / r mod q
- random numbers can be used to calculate secret keys.
- random numbers since random numbers are not used for signature verification, there is no need to disclose them to the outside. From this, the inventor of the present invention has found that the security of the private key and, consequently, the security of the signature program can be improved by appropriately protecting the random numbers and preventing the random numbers from leaking outside. .
- the signature program 10 is executed so that the random number 14 is handled in the secure storage area 40. Specifically, the process for handling the random number 14 is loaded into the protected storage area and executed. When the random number 14 is stored in the storage area, it is stored in the secure storage area 40. By doing so, it is possible to prevent the random number 14 from leaking outside. This can prevent the secret key 12 from leaking based on the random number 14.
- FIG. 3 is a diagram illustrating a functional configuration of the signature generation device 2000 according to the first embodiment.
- the signature generation device 2000 has an execution unit 2020.
- the execution unit 2020 executes the signature program 10.
- the processing of handling the random number 14 in the signature program 10 is loaded into the secure storage area 40 and executed.
- the random number 14 is stored in the secure storage area 40.
- Each functional component of the signature generation device 2000 may be implemented by hardware (eg, a hard-wired electronic circuit or the like) that implements each functional component, or a combination of hardware and software (eg: Electronic circuit and a program for controlling the same).
- hardware eg, a hard-wired electronic circuit or the like
- software eg: Electronic circuit and a program for controlling the same.
- FIG. 4 is a diagram illustrating a computer 1000 for realizing the signature generation device 2000.
- the computer 1000 is an arbitrary computer.
- the computer 1000 is a personal computer (PC) or a server machine.
- the computer 1000 may be a dedicated computer designed to implement the signature generation device 2000 or a general-purpose computer.
- the computer 1000 has a bus 1020, a processor 1040, a memory 1060, a storage device 1080, an input / output interface 1100, and a network interface 1120.
- the bus 1020 is a data transmission path through which the processor 1040, the storage device 1080, the input / output interface 1100, and the network interface 1120 mutually transmit and receive data.
- a method for connecting the processors 1040 and the like to each other is not limited to a bus connection.
- the processor 1040 is various processors such as a CPU (Central Processing Unit), a GPU (Graphics Processing Unit), and an FPGA (Field-Programmable Gate Array).
- the memory 1060 is a main storage device realized using a RAM (Random Access Memory) or the like.
- the storage device 1080 is an auxiliary storage device realized using a hard disk, an SSD (Solid State Drive), a memory card, or a ROM (Read Only Memory).
- the input / output interface 1100 is an interface for connecting the computer 1000 and an input / output device.
- an input device such as a keyboard and an output device such as a display device are connected to the input / output interface 1100.
- the network interface 1120 is an interface for connecting the computer 1000 to a communication network.
- the communication network is, for example, a LAN (Local Area Network) or a WAN (Wide Area Network).
- the method by which the network interface 1120 connects to the communication network may be a wireless connection or a wired connection.
- the storage device 1080 stores a program module for realizing the execution unit 2020 and the signature program 10.
- the processor 1040 executes the signature program 10 by reading out a program module that implements the execution unit 2020 into the memory 1060 and executing the program module.
- the secure storage area 40 is a storage area protected so that a program having root authority cannot be freely accessed.
- the secure storage area 40 is a storage area constituting the TEE.
- TEE is a secure execution environment isolated from the normal execution environment.
- a secure ⁇ OS ⁇ that runs in a secure execution environment runs.
- the secure storage area 40 cannot be accessed by a program operating in a normal execution environment, but can be accessed only by a program operating on a secure ⁇ OS ⁇ (hereinafter, a secure program). Therefore, even if a program operating in a normal execution environment obtains ⁇ root ⁇ authority, the program cannot access the secure storage area 40.
- An existing technology can be used as a technology for realizing a secure storage area that can be accessed only from a program operating on the secure ⁇ OS ⁇ .
- a program operating in a normal execution environment requests a secure program to perform processing through a predetermined API (Application Programming Interface).
- the secure program requested to perform the process executes the process using the secure storage area 40 and returns the result to the request source.
- the requesting program uses the result returned from the secure program.
- FIG. 5 is a flowchart illustrating a flow of processing executed by the signature generation device 2000 of the first embodiment.
- the execution unit 2020 acquires the signature program 10 (S102).
- the execution unit 2020 loads the signature program 10 into the memory (S104).
- the execution unit 2020 generates the digital signature 30 from the message 20 by executing the signature program 10 loaded in the memory (S106).
- the signature program 10 is a program that generates an electronic signature 30 from the message 20 using a stochastic signature scheme.
- the secret key 12 and the random number 14 are used to generate the electronic signature 30.
- various existing algorithms such as DSA can be used for the algorithm of the stochastic signature scheme.
- the signature program 10 is configured so as to include the random number 14 in advance, or to generate the random number 14 therein. In the following, with respect to the random number 14, several specific examples of the configuration method of the signature program 10 will be described.
- the signature program 10 includes a plurality of random numbers 14 in advance.
- a plurality of random numbers 14 are defined in advance.
- the signature program 10 uses one of the plurality of random numbers 14 when newly generating a digital signature.
- an array ⁇ r ⁇ of random numbers 14 is defined in advance.
- the signature program 10 uses the random numbers 14 stored in the random number array ⁇ r ⁇ sequentially from the top. For example, when the digital signature is generated ⁇ i ⁇ times, the signature program 10 uses r [i] ⁇ as the random number 14.
- FIG. 6 is a diagram conceptually illustrating the signature program 10 including a random number therein.
- the number of random numbers that can be handled by the signature program 10 is finite, so that the number of times the signature program 10 can generate an electronic signature is finite.
- the number of times that an electronic signature can be generated is n. Therefore, when the random number included in the signature program 10 is used up, it is necessary to acquire a new signature program 10 (update the signature program 10).
- the signature program 10 is configured to notify the user at the timing when the random number included in the signature program is exhausted or when the number of remaining random numbers decreases.
- the user receiving this notification operates the signature generation device 2000 to newly acquire the signature program 10. Then, after the random numbers have been used up, the newly acquired signature program 10 is used.
- the update of the signature program 10 may be automatically performed by the signature generation device 2000 without notifying the user.
- the signature program 10 includes a program for generating a random number.
- This program is called a random number generator.
- at least the random number generator is loaded into the secure storage area 40.
- the random number generated by the random number generator is stored in the secure storage area 40.
- FIG. 7 is a diagram conceptually illustrating the signature program 10 having the random number generator 16. 7, the random number generator 16 is stored in the secure storage area 40. The random number 14 output from the random number generator 16 is stored in the secure storage area 40.
- FIG. 8 is a first diagram illustrating the configuration of the random number generator 16.
- the random number generator 16 is implemented as a one-way hash function.
- the random number generator 16 is configured to include a random number seed in advance and obtain a nonce from outside.
- the random number seed is included in the signature program 10 in advance.
- the random number generator 16 calculates a hash value based on the random number seed and the nonce, and outputs the hash value as the random number 14.
- various existing hash functions can be used as the hash function for calculating the hash value based on the random number seed and the nonce.
- a random number seed included in the signature program 10 in advance is also stored in the secure storage area 40.
- FIG. 9 is a second diagram illustrating the configuration of the random number generator 16.
- the random number generator 16 is realized using a pseudo random number generator (PRNG) having an internal state.
- PRNG pseudo random number generator
- the random number generator 16 includes a random number seed in advance, and outputs a pseudo random number based on the random number seed and the internal state.
- the random number generator 16 acquires the initial value of the internal state from the outside.
- an existing technique can be used as a technique for generating a pseudo random number based on the internal state and the random number seed.
- the random number generator 16 is configured to store the updated internal state in the secure storage area 40.
- FIG. 10 is a third diagram illustrating the configuration of the random number generator 16.
- the random number generator 16 is realized as a pseudo random number generator that generates a random number seed using a nonce acquired from the outside and generates a pseudo random number using the random number seed and the internal state.
- the random number generator 16 treats a hash value obtained by inputting the secret key 12 and the nonce to the one-way hash function as a random number seed.
- the random number generator 16 outputs a pseudo random number based on the obtained random number seed and the internal state.
- the pseudo random number output here is treated as the random number 14.
- the random number generator 16 is configured to store the internal state of the random number generator 16 in the secure storage area 40.
- the random number generator 16 is configured to store the generated random number seed in the secure storage area 40.
- the signature generation device 2000 acquires the signature program 10 (S102). There are various methods by which the signature generation device 2000 acquires the signature program 10. For example, the signature generation device 2000 acquires the signature program 10 stored in an arbitrary storage device by reading from the storage device. In addition, for example, the signature generation device 2000 acquires the signature program 10 by receiving the signature program 10 transmitted from another device.
- the “other device” is, for example, a device that generates the signature program 10 (a signature program generation device 3000 described later).
- ⁇ Load signature program 10 S104>
- the signature generation device 2000 loads the signature program 10 on a memory and executes it.
- the processing for handling the random number 14 in the signature program 10 is loaded into the secure storage area 40.
- the process of handling the random number 14 is loaded into the secure storage area 40 by the secure OS and operates in a secure execution environment realized by TEE. That is, the process for handling the random number 14 operates as the above-described secure program.
- an existing technique can be used as a technique for loading a predetermined program into the secure storage area 40 such as a storage area constituting the TEE.
- the signature program 10 generates an electronic signature 30 from the message 20 (S108).
- the process of handling the random number 14 in the signature program 10 is loaded into the secure storage area 40 and executed.
- the process of handling the random number 14 is, for example, a process of calculating the electronic signature 30 based on the above-described random number generator 16, the secret key 12, and the random number 14. For example, when using TEE, these processes operate as a secure program.
- FIG. 11 is a diagram illustrating the signature program 10 divided into a secure program and a program operating in a normal execution environment.
- the process of executing the random number generator 16 and the process of generating the digital signature 30 operate in a secure execution environment.
- a process for realizing the overall flow of the signature program 10 is executed.
- a process for executing the random number generator 16 and a process for generating the electronic signature 30 are called. I have. This call is made using the specified ⁇ API ⁇ .
- the secret key 12 can be protected by the same method as that for protecting the random number 14. That is, 1) the process using the secret key 12 is loaded into the secure storage area 40, and 2) the secret key 12 is stored in the secure storage area 40.
- the method for protecting the secret key 12 does not necessarily need to be the same as the method for protecting the random number 14, and various existing methods can be used.
- the entire signature program 10 into the secure storage area 40 and operate the entire signature program 10 in a secure execution environment.
- the time required for executing a process is shorter when using a normal execution environment than when using a secure execution environment.
- the program operated in the secure execution environment be limited to a necessary minimum (in the signature program 10, a process using the random number 14).
- the signature program 10 outputs the generated digital signature 30.
- the method of outputting the electronic signature is arbitrary.
- the signature program 10 stores the electronic signature 30 in an arbitrary storage device.
- the signature program 10 may transmit the electronic signature 30 to another device.
- the signature program 10 satisfies the following requirements: 1) of the internal processing, at least the processing for handling the random number 14 is loaded into the secure storage area 40; and 2) the random number 14 is stored in the secure storage area 40. There is a need.
- the signature program 10 may be generated by being designed and implemented by a program creator so as to satisfy such requirements, or a signature program (for example, a general signature program) that does not satisfy such requirements may be generated. It may be generated by modification. In the latter case, the modification of the signature program may be performed manually or automatically by a computer.
- a computer that modifies a signature program that does not satisfy the above-described requirements and converts the signature program into a signature program that satisfies the above-described requirements will be referred to as a signature program generation device 3000.
- the signature program generation device 3000 will be described in more detail.
- FIG. 12 is a diagram showing an outline of the operation of the signature program generation device 3000.
- the signature program generation device 3000 acquires the pre-modification signature program 60, modifies the pre-modification signature program 60, and generates the signature program 10. Specifically, the signature program generation device 3000 detects a process for handling the random number 14 from the signature program 60 before modification. The signature program generation device 3000 modifies the pre-modification signature program 60 so that the detected process is loaded into the secure storage area 40 and executed. Specifically, when using TEE, the detected processing is changed to a program that operates in a secure execution environment.
- An existing technology can be used as a technology for detecting a process for handling predetermined data from a program and a technology for changing the process to a process that operates in a secure execution environment.
- ⁇ Signature program generating device 3000 detects a process of storing random number 14 in the storage area from among the processes of handling random number 14. Then, the signature program generation device 3000 modifies the process of storing the random number 14 in the storage area so that the process stores the random number 14 in the secure storage area 40.
- an existing technology can be used as a technology for detecting a process of storing predetermined data in a storage area and a technology for changing the storage destination of the data from a normal storage area to a secure storage area. .
- a signature program in which the random number 14 may be leaked can be changed to a signature program (the signature program 10) in which the random number 14 is not leaked. Therefore, a secure signature generation program in which the random number 14 is protected can be easily generated.
- FIG. 13 is a diagram illustrating a functional configuration of the signature program generation device 3000.
- the signature program generation device 3000 includes an acquisition unit 3020, a first modification unit 3040, and a second modification unit 3060, as shown in FIG.
- the obtaining unit 3020 obtains the pre-alteration signature program 60 (a signature program that generates an electronic signature using a stochastic signature method).
- the first alteration unit 3040 detects, from the pre-alteration signature program 60, a process of storing a random number (random number 14) used for generating an electronic signature in a storage area. Further, the first alteration unit 3040 alters the pre-alteration signature program 60 so that the detected process stores the random number 14 in the secure storage area 40.
- the second alteration unit 3060 detects a process for handling the random number 14 from the pre-alteration signature program 60. Further, the second modification unit 3060 modifies the pre-modification signature program 60 so that the detected process is loaded into the secure storage area 40 and executed.
- Each functional component of the signature program generation device 3000 may be implemented by hardware (eg, a hard-wired electronic circuit or the like) that implements each functional component, or by a combination of hardware and software (eg, : A combination of an electronic circuit and a program for controlling the electronic circuit).
- hardware e.g, a hard-wired electronic circuit or the like
- software e.g, : A combination of an electronic circuit and a program for controlling the electronic circuit.
- FIG. 14 is a diagram exemplifying a computer 4000 for realizing the signature program generation device 3000.
- Calculator 4000 is any computer.
- the computer 4000 is a personal computer (PC) or a server machine.
- the computer 4000 may be a dedicated computer designed to realize the signature program generation device 3000 or a general-purpose computer.
- the computer 4000 has a bus 4020, a processor 4040, a memory 4060, a storage device 4080, an input / output interface 4100, and a network interface 4120.
- the functions of the bus 4020, the processor 4040, the memory 4060, the storage device 4080, the input / output interface 4100, and the network interface 4120 are the same as the functions of the bus 1020, the processor 1040, the storage device 1080, the input / output interface 1100, and the network interface 1120, respectively. It is.
- the storage device 4080 stores a program module that implements each functional component of the signature program generation device 3000.
- the processor 4040 implements the functions of the functional components of the signature program generation device 3000 by executing the program modules stored in the storage device 4080.
- FIG. 15 is a flowchart illustrating a flow of a process performed by the signature program generation device 3000.
- the obtaining unit 3020 obtains the pre-alteration signature program 60 (S202).
- the first alteration unit 3040 detects a process of storing the random number 14 in the storage area from the pre-alteration signature program 60 (S204).
- the first alteration unit 3040 alters the pre-alteration signature program 60 so that the detected process stores the random number 14 in the secure storage area 40 (S206).
- the second alteration unit 3060 detects a process for handling the random number 14 from the pre-alteration signature program 60 (S208).
- the second modification unit 3060 modifies the pre-modification signature program 60 so that the detected process is loaded into the secure storage area 40 and executed (S210).
- the signature program generation device 3000 outputs the signature program 10 generated by modifying the signature program 60 before modification.
- the signature program generation device 3000 transmits the signature program 10 to the signature generation device 2000.
- the signature program generation device 3000 may store the signature program 10 in an arbitrary storage device.
- the method by which the obtaining unit 3020 obtains the pre-alteration signature program 60 is arbitrary.
- the obtaining unit 3020 obtains the pre-alteration signature program 60 stored in the storage device from the storage device.
- the acquisition unit 3020 acquires the pre-alteration signature program 60 by receiving the pre-alteration signature program 60 transmitted from another device.
- the signature generation device 2000 of the second embodiment generates an electronic signature 30 for the message 20 using a signature program, similarly to the signature generation device 2000 of the first embodiment. Except for the points described below, the signature generation device 2000 of the second embodiment has the same functions as the signature generation device 2000 of the first embodiment.
- the signature generation device 2000 according to the second embodiment is different from the signature generation device 2000 according to the first embodiment in that at least a part of the signature program is obfuscated and the secure storage area 40 is not required.
- “obfuscation of the program” means that the program is implemented such that it is difficult to restore static confidential information in the program. It should be noted that such an obfuscated signature program is also referred to as a white-box mounted signature program.
- the signature program 70 operates.
- the signature program 70 generates an electronic signature by a probabilistic signature method, similarly to the signature program 10 in the first embodiment. More specifically, the signature program 70 acquires the message 20 and generates the electronic signature 30 from the message 20 using the secret key and the random number.
- the signature program 70 includes the random number 14 itself and processing for handling the random number 14 in an obfuscated state. Therefore, even if the random number 14 and the processing for handling the random number 14 are not handled in a secure storage area, the leakage of the random number 14 can be prevented (that is, the random number 14 can be protected). Note that since it is not necessary to handle the process for handling the random number 14 in a secure storage area, the execution unit 2020 also loads and executes the process for handling the random number 14 to a normal storage area.
- the method of protecting the secret key 12 does not necessarily need to be the same as the method of protecting the random number 14, and various existing methods can be used. That is, the secret key 12 may be protected by obfuscating the secret key 12, or may be protected by another existing method.
- FIG. 16 is a diagram illustrating a specific example of the operation of the signature program 70.
- the processing of calculating the above ⁇ r ⁇ and ⁇ s ⁇ is obfuscated.
- a is data that is included in the signature program 70 in advance in an obfuscated state.
- k ′ is a temporary random number that is not obfuscated, and may be included in the signature program 70 in advance or may be generated by a random number generator.
- the random number ⁇ k ⁇ is calculated in the obfuscated process using the data ⁇ a ⁇ included in the signature program 70 in an obfuscated state, and is not output as a calculation result. That is, the random number ⁇ k ⁇ is handled only in the obfuscated process. Therefore, the attacker cannot obtain the random number ⁇ k ⁇ .
- ⁇ g ⁇ ⁇ a * k ' ⁇ may be used in the calculation of r, ⁇ g ⁇ ⁇ a ⁇ may be included in the signature program 70 in an obfuscated state instead of a.
- g ⁇ ⁇ a * k ' ⁇ can be calculated by the calculation of ⁇ g ⁇ ⁇ a ⁇ ⁇ ⁇ k' ⁇ .
- the secret key ⁇ x ⁇ and the process for handling it are also obfuscated. Therefore, the attacker cannot obtain the secret key ⁇ x ⁇ like the random number ⁇ k ⁇ .
- the signature generation device 2000 of the present embodiment in the signature program 70 used for generating the electronic signature 30, the random number 14 itself and the process of handling the random number 14 are obfuscated. Therefore, even if the attacker takes over the root authority, the attacker cannot obtain the random number 14. Therefore, it is possible to prevent the secret key from being calculated due to the leakage of the random number. Therefore, the security of the secret key, and thus the security of the signature program, can be improved.
- FIG. 9 is a diagram illustrating a signature generation device 2000 according to a second embodiment.
- the execution unit 2020 of the signature generation device 2000 executes the signature program 70.
- the signature program 70 acquires the message 20 and generates an electronic signature 30 from the message 20 using the secret key 12 and the random number 14.
- the random number 14 itself and the process of handling the random number 14 are obfuscated.
- the hardware configuration of the signature generation device 2000 according to the second embodiment is, for example, shown in FIG. 4 similarly to the hardware configuration of the signature generation device 2000 according to the first embodiment.
- the storage device 1080 of the signature generation device 2000 according to the second embodiment stores the program module and the signature program 70 that implement the execution unit 2020 according to the second embodiment.
- the flow of processing executed by the signature generation device 2000 of the second embodiment is, for example, shown in FIG. 5, similarly to the flow of processing executed by the signature generation device 2000 of the first embodiment.
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Storage Device Security (AREA)
Abstract
署名生成装置(2000)は、署名プログラム(10)を実行する。署名プログラム(10)は、乱数(14)を用いた確率的署名生成方式で、電子署名を生成する。署名生成装置(2000)は、署名プログラム(10)に含まれる処理のうち、乱数(14)を利用する処理を、セキュア記憶領域(40)にロードして実行する。さらに、乱数(14)は、セキュア記憶領域(40)に記憶される。
Description
本発明は電子署名に関する。
装置のマルウェア感染や装置の不正入手などにより、攻撃者に装置の実行環境をコントロールされる事例が発生している。例えば root 権限を奪取されると、OS(Operating System)による機密情報へのアクセス制御が無効化され、機密情報にアクセスされてしまう。また、装置上で動作するプログラムに対して静的解析や動的解析を実行することができ、解析により例えば暗号、署名、認証の秘密鍵などの機密情報が漏洩することがある。
装置の実行環境のコントロールが可能な攻撃者から機密情報を保護するための技術の例としてホワイトボックス実装や Trusted execution environment(TEE)がある。ホワイトボックス実装は装置の実行環境のコントロールが可能な攻撃者からソフトウエア的に暗号プログラムの秘密鍵を保護する技術である。例えば非特許文献1では、AES や RSA 暗号、楕円曲線暗号などのような標準的な暗号方式のプログラムの秘密鍵を装置の実行環境のコントロールが可能な攻撃者から保護することができることが述べられている。また、TEE はハードウエア的にセキュアな領域を作成し、秘密鍵や知的財産を含むプログラムなどのような機密情報をセキュアな領域内で扱うことで保護する技術である。例えば、非特許文献2の Intel SGX や非特許文献3の ARM TrustZone などを用いて実現される。
一般に高い安全性を満たす署名方式は、署名生成時に乱数を用いる確率的署名方式である。上述した技術を用いて、装置の実行環境のコントロールが可能な攻撃者に対して署名や認証で用いる秘密鍵を保護することが可能である。確率的署名方式には、例えば DSA(Digital Signature Algorithm)などがある。
確率的署名方式に関する先行技術文献としては、例えば、特許文献1がある。特許文献1は、電子署名を構成する要素の数を少なくすることで、通信量や計算量を削減する技術を開示している。
Datasheet: Cloakware Software Protection、[online]、2017年、Irdeto、[2018年6月29日検索]、インターネット<URL: https://resources.irdeto.com/cloakware-software-protection/datasheet-cloakware-software-protection>
Intel Software Guard Extensions、[online]、Intel、[2018年6月29日検索]、インターネット<URL: https://software.intel.com/en-us/sgx>
TrustZone、[online]、ARM、[2018年9月28日検索]、インターネット<URL: https://developer.arm.com/technologies/trustzone>
本発明者は、確率的署名方式の署名プログラムにおいて、秘密鍵が直接漏洩しなくても、その他のデータから秘密鍵が復元されてしまう恐れがあることを見いだした。本発明はこのような課題に鑑みてなされたものであり、その目的の一つは、確率的署名方式の署名プログラムの安全性を向上させる技術を提供することである。
本発明の第1の署名生成装置は、確率的署名方式で電子署名を生成する署名プログラムを実行する実行部を有する。前記署名プログラムは、メッセージを取得して、乱数及び秘密鍵を用いて前記メッセージから電子署名を生成する。前記実行部は、前記署名プログラムに含まれる処理のうち、前記乱数を利用する処理を、セキュアな記憶領域にロードして実行する。前記乱数は前記セキュアな記憶領域に格納される。
本発明の第2の署名生成装置は、確率的署名方式で電子署名を生成する署名プログラムを実行する実行部を有する。前記署名プログラムは、メッセージを取得して、乱数及び秘密鍵を用いて前記メッセージから電子署名を生成する。前記署名プログラムにおいて、前記乱数及び前記乱数を扱う処理が難読化されている。
本発明の署名プログラム生成装置は、1)確率的署名方式で電子署名を生成する署名プログラムを取得する取得部と、2)前記取得した署名プログラムから、電子署名の生成に利用される乱数を記憶領域に格納する処理を検出し、その処理が前記乱数をセキュアな記憶領域に格納するように、前記署名プログラムを改変する第1改変部と、3)前記取得した署名プログラムから、前記乱数を扱う処理を検出し、その処理が前記セキュアな記憶領域にロードして実行されるように、前記署名プログラムを改変する第2改変部と、を有する。
本発明の第1の署名生成方法は、コンピュータによって実行される。当該署名生成方法は、確率的署名方式で電子署名を生成する署名プログラムを実行する。前記署名プログラムは、メッセージを取得して、乱数及び秘密鍵を用いて前記メッセージから電子署名を生成する。前記署名プログラムに含まれる処理のうち、前記乱数を利用する処理は、セキュアな記憶領域にロードして実行される。前記乱数は前記セキュアな記憶領域に格納される。
本発明の第2の署名生成方法は、コンピュータによって実行される。当該署名生成方法は、確率的署名方式で電子署名を生成する署名プログラムを実行する。前記署名プログラムは、メッセージを取得して、乱数及び秘密鍵を用いて前記メッセージから電子署名を生成する。前記署名プログラムにおいて、前記乱数及び前記乱数を扱う処理が難読化されている。
本発明の署名プログラム生成方法は、コンピュータによって実行される。当該署名プログラム生成方法は、1)確率的署名方式で電子署名を生成する署名プログラムを取得し、2)前記取得した署名プログラムから、電子署名の生成に利用される乱数を記憶領域に格納する処理を検出し、その処理が前記乱数をセキュアな記憶領域に格納するように、前記署名プログラムを改変し、3)前記取得した署名プログラムから、前記乱数を扱う処理を検出し、その処理が前記セキュアな記憶領域にロードして実行されるように、前記署名プログラムを改変する。
本発明の第1の署名プログラムは、メッセージを取得して、乱数及び秘密鍵を用いて前記メッセージから電子署名を生成する。当該署名プログラムに含まれる処理のうち、前記乱数を利用する処理は、セキュアな記憶領域にロードして実行される。前記乱数は前記セキュアな記憶領域に格納される。
本発明の第2の署名プログラムは、メッセージを取得して、乱数及び秘密鍵を用いて前記メッセージから電子署名を生成する。前記乱数及び前記乱数を扱う処理は、難読化されている。
本発明における署名プログラムの生成プログラムは、コンピュータに、本発明の署名プログラム生成方法を実行させる。
本発明によれば、確率的署名方式の署名プログラムの安全性を向上させる技術が提供される。
上述した目的、およびその他の目的、特徴および利点は、以下に述べる好適な実施の形態、およびそれに付随する以下の図面によってさらに明らかになる。
以下、本発明の実施の形態について、図面を用いて説明する。尚、すべての図面において、同様な構成要素には同様の符号を付し、適宜説明を省略する。また、特に説明する場合を除き、各ブロック図において、各ブロックは、ハードウエア単位の構成ではなく、機能単位の構成を表している。
[実施形態1]
<概要>
図1と図2は、本実施形態の署名生成装置2000の概要を表す図である。図1は、署名生成装置2000で動作する署名プログラム10の動作の概要を表している。署名生成装置2000は、署名プログラム10を実行する。署名プログラム10は、確率的署名生成方式で電子署名を生成する。具体的には、署名プログラム10は、メッセージ20を取得し、秘密鍵12及び乱数14を用いて、メッセージ20から電子署名30を生成する。確率的署名方式の署名アルゴリズムには、DSA などの既知のアルゴリズムを採用することができる。
<概要>
図1と図2は、本実施形態の署名生成装置2000の概要を表す図である。図1は、署名生成装置2000で動作する署名プログラム10の動作の概要を表している。署名生成装置2000は、署名プログラム10を実行する。署名プログラム10は、確率的署名生成方式で電子署名を生成する。具体的には、署名プログラム10は、メッセージ20を取得し、秘密鍵12及び乱数14を用いて、メッセージ20から電子署名30を生成する。確率的署名方式の署名アルゴリズムには、DSA などの既知のアルゴリズムを採用することができる。
ここで、後述するように、確率的署名方式で電子署名を生成する場合、秘密鍵が直接漏洩しなくても、乱数が漏洩してしまうと、その乱数を利用して秘密鍵を算出することができてしまう恐れがある。すなわち、乱数が漏洩してしまうと、秘密鍵が漏洩してしまう恐れがある。
そこで署名生成装置2000は、以下で説明する方法で、乱数14の保護を実現する。なお、秘密鍵12自体の保護には、既存の方法を利用することができる。
図2は、署名生成装置2000の構成の概要を例示する図である。署名プログラム10は、乱数14を、セキュアな記憶領域(以下、セキュア記憶領域40)で扱う。セキュア記憶領域40は、例えば、Trusted Execution Environment(TEE)を構成する記憶領域である。具体的には、署名生成装置2000は、署名プログラム10に含まれる処理のうち、乱数14を利用する処理を、セキュア記憶領域40にロードして実行する。さらに、乱数14は、セキュア記憶領域40に記憶される。
ここで、セキュア記憶領域40に格納されたデータは、セキュア記憶領域40にロードされて実行される処理からしかアクセスできないように構成される。そのため、セキュア記憶領域40以外にロードされて実行される処理からは、例えその処理が root 権限で実行されたとしても、セキュア記憶領域40に格納されている乱数14にアクセスできない。
よって、乱数14をセキュア記憶領域40に記憶させ、なおかつ署名プログラム10に含まれる処理のうち、乱数14を扱う処理をセキュア記憶領域40にロードして実行するようにすることで、署名プログラム10が乱数14を使って電子署名30を生成できるようにしつつ、他の処理から乱数14がアクセスされてしまうことを防ぐことができる。よって、乱数14を保護しつつ、乱数14を利用した電子署名30の生成を実現することができる。
<作用効果>
本発明者は、確率的署名方式では、秘密鍵の漏洩を防ぐために、乱数を保護する必要があることを見いだした。乱数を保護しなければならない理由は、乱数やその他の公開された情報を用いて、秘密鍵を算出できてしまう恐れがあるからである。以下、DSA を例として、秘密鍵の算出方法を説明する。
本発明者は、確率的署名方式では、秘密鍵の漏洩を防ぐために、乱数を保護する必要があることを見いだした。乱数を保護しなければならない理由は、乱数やその他の公開された情報を用いて、秘密鍵を算出できてしまう恐れがあるからである。以下、DSA を例として、秘密鍵の算出方法を説明する。
まず、DSA では以下のように鍵の生成、署名生成、及び署名の検証を行う。
<<鍵生成>>
(1)素数 p および p-1 を割り切る素数 q を生成する。
(2)乗法群 Z_{p}^{*} での位数が q となるような原始元 g を定める。
(3)集合{0,1,...,q-1}に含まれる要素xを定め、y=g^{x} mod p を計算する。
ここで、x は秘密鍵とし、p、q、g、yを公開鍵とする。
<<鍵生成>>
(1)素数 p および p-1 を割り切る素数 q を生成する。
(2)乗法群 Z_{p}^{*} での位数が q となるような原始元 g を定める。
(3)集合{0,1,...,q-1}に含まれる要素xを定め、y=g^{x} mod p を計算する。
ここで、x は秘密鍵とし、p、q、g、yを公開鍵とする。
<<署名生成>>
(1){0,1,...,q-1} に含まれかつ p-1 と互いに疎な要素をランダムに取り出し、乱数kとする。
(2)次のようにメッセージ m に対する署名(r,s)を計算する。
r=(g^{k} mod p) mod q
s=k^{-1}(h(m)+xr) mod q
(1){0,1,...,q-1} に含まれかつ p-1 と互いに疎な要素をランダムに取り出し、乱数kとする。
(2)次のようにメッセージ m に対する署名(r,s)を計算する。
r=(g^{k} mod p) mod q
s=k^{-1}(h(m)+xr) mod q
<<署名検証>>
(1)r'=(g^{h(m)s^{-1}}y^{rs^{-1}} mod p) mod q を計算する。
(2)rとr'が等しいかをチェックする。
(2-1)等しい場合、検証成功とする。
(2-2)等しくない場合、検証失敗とする。
(1)r'=(g^{h(m)s^{-1}}y^{rs^{-1}} mod p) mod q を計算する。
(2)rとr'が等しいかをチェックする。
(2-1)等しい場合、検証成功とする。
(2-2)等しくない場合、検証失敗とする。
上記の DSA において、メッセージ、公開鍵、署名生成で使われた乱数、及び署名を得られた攻撃者は、以下のように秘密鍵を計算することができる.
x=(s-h(m))/r mod q
x=(s-h(m))/r mod q
このように乱数は、秘密鍵の算出に利用することができる。一方で、乱数は署名検証には利用されないため、外部に公開する必要がない。このことから本発明の発明者は、乱数を適切に保護して乱数が外部に漏洩しないようにすることで、秘密鍵の安全性、ひいては署名プログラムの安全性を向上させることができることを見いだした。
本実施形態の署名生成装置2000によれば、乱数14がセキュア記憶領域40で扱われるように、署名プログラム10が実行される。具体的には、乱数14を扱う処理は、保護記憶領域にロードされて実行される。また、乱数14を記憶領域に記憶する際には、セキュア記憶領域40に記憶される。このようにすることで、乱数14が外部に漏洩することを防ぐことができる。これにより、乱数14に基づいて秘密鍵12が漏洩してしまうことを防ぐことができる。
なお、図1を参照した上述の説明は、署名生成装置2000の理解を容易にするための例示であり、署名生成装置2000の機能を限定するものではない。以下、本実施形態の署名生成装置2000についてさらに詳細に説明する。
<署名生成装置2000の機能構成の例>
図3は、実施形態1の署名生成装置2000の機能構成を例示する図である。署名生成装置2000は、実行部2020を有する。実行部2020は、署名プログラム10を実行する。署名プログラム10のうち、乱数14を扱う処理は、セキュア記憶領域40にロードされて実行される。また、乱数14は、セキュア記憶領域40に記憶される。
図3は、実施形態1の署名生成装置2000の機能構成を例示する図である。署名生成装置2000は、実行部2020を有する。実行部2020は、署名プログラム10を実行する。署名プログラム10のうち、乱数14を扱う処理は、セキュア記憶領域40にロードされて実行される。また、乱数14は、セキュア記憶領域40に記憶される。
<署名生成装置2000のハードウエア構成>
署名生成装置2000の各機能構成部は、各機能構成部を実現するハードウエア(例:ハードワイヤードされた電子回路など)で実現されてもよいし、ハードウエアとソフトウエアとの組み合わせ(例:電子回路とそれを制御するプログラムの組み合わせなど)で実現されてもよい。以下、署名生成装置2000の各機能構成部がハードウエアとソフトウエアとの組み合わせで実現される場合について、さらに説明する。
署名生成装置2000の各機能構成部は、各機能構成部を実現するハードウエア(例:ハードワイヤードされた電子回路など)で実現されてもよいし、ハードウエアとソフトウエアとの組み合わせ(例:電子回路とそれを制御するプログラムの組み合わせなど)で実現されてもよい。以下、署名生成装置2000の各機能構成部がハードウエアとソフトウエアとの組み合わせで実現される場合について、さらに説明する。
図4は、署名生成装置2000を実現するための計算機1000を例示する図である。計算機1000は任意の計算機である。例えば計算機1000は、Personal Computer(PC)やサーバマシンなどである。計算機1000は、署名生成装置2000を実現するために設計された専用の計算機であってもよいし、汎用の計算機であってもよい。
計算機1000は、バス1020、プロセッサ1040、メモリ1060、ストレージデバイス1080、入出力インタフェース1100、及びネットワークインタフェース1120を有する。バス1020は、プロセッサ1040、ストレージデバイス1080、入出力インタフェース1100、及びネットワークインタフェース1120が、相互にデータを送受信するためのデータ伝送路である。ただし、プロセッサ1040などを互いに接続する方法は、バス接続に限定されない。
プロセッサ1040は、CPU(Central Processing Unit)、GPU(Graphics Processing Unit)、FPGA(Field-Programmable Gate Array)などの種々のプロセッサである。メモリ1060は、RAM(Random Access Memory)などを用いて実現される主記憶装置である。ストレージデバイス1080は、ハードディスク、SSD(Solid State Drive)、メモリカード、又は ROM(Read Only Memory)などを用いて実現される補助記憶装置である。
入出力インタフェース1100は、計算機1000と入出力デバイスとを接続するためのインタフェースである。例えば入出力インタフェース1100には、キーボードなどの入力装置や、ディスプレイ装置などの出力装置が接続される。ネットワークインタフェース1120は、計算機1000を通信網に接続するためのインタフェースである。この通信網は、例えば LAN(Local Area Network)や WAN(Wide Area Network)である。ネットワークインタフェース1120が通信網に接続する方法は、無線接続であってもよいし、有線接続であってもよい。
ストレージデバイス1080は、実行部2020を実現するプログラムモジュールや、署名プログラム10を記憶している。プロセッサ1040は、実行部2020を実現するプログラムモジュールをメモリ1060に読み出して実行することで、署名プログラム10を実行する。
<<セキュア記憶領域40について>>
セキュア記憶領域40は、root 権限を持つプログラムであっても自由にはアクセスできないように保護された記憶領域である。例えばセキュア記憶領域40は、TEE を構成する記憶領域である。TEE は、通常の実行環境から隔離されたセキュアな実行環境である。
セキュア記憶領域40は、root 権限を持つプログラムであっても自由にはアクセスできないように保護された記憶領域である。例えばセキュア記憶領域40は、TEE を構成する記憶領域である。TEE は、通常の実行環境から隔離されたセキュアな実行環境である。
TEE を利用する場合、通常の実行環境で動作する OS に加え、セキュアな実行環境で動作するセキュア OS が稼働する。セキュア記憶領域40は、通常の実行環境で動作するプログラムからはアクセスできず、セキュア OS 上で動作するプログラム(以下、セキュアプログラム)からしかアクセスできない。そのため、通常の実行環境で動作するプログラムが root 権限を得たとしても、そのプログラムはセキュア記憶領域40にアクセスできない。なお、セキュア OS 上で動作するプログラムからしかアクセスできないセキュアな記憶領域を実現する技術には、既存の技術を利用することができる。
通常の実行環境で動作するプログラムは、所定の API(Application Programming Interface)を通じて、セキュアプログラムに処理を依頼する。処理を依頼されたセキュアプログラムは、セキュア記憶領域40を利用して処理を実行し、その結果を依頼元に返す。依頼元のプログラムは、セキュアプログラムから返された結果を利用する。
このような構成とすることで、通常の実行環境で動作するプログラムからはセキュア記憶領域40に格納されたデータに直接アクセスできないようにしつつ、セキュア記憶領域40に記憶されたデータを利用した所定の処理を行うことができる。セキュア記憶領域40に記憶されたデータを扱える処理が所定の処理に限定されているため、セキュア記憶領域40に記憶されたデータの安全性が向上する。
<処理の流れ>
図5は、実施形態1の署名生成装置2000によって実行される処理の流れを例示するフローチャートである。実行部2020は、署名プログラム10を取得する(S102)。実行部2020は、署名プログラム10をメモリにロードする(S104)。実行部2020は、メモリにロードした署名プログラム10を実行することで、メッセージ20から電子署名30を生成する(S106)。
図5は、実施形態1の署名生成装置2000によって実行される処理の流れを例示するフローチャートである。実行部2020は、署名プログラム10を取得する(S102)。実行部2020は、署名プログラム10をメモリにロードする(S104)。実行部2020は、メモリにロードした署名プログラム10を実行することで、メッセージ20から電子署名30を生成する(S106)。
<署名プログラム10の構成>
署名プログラム10は、確率的署名方式でメッセージ20から電子署名30を生成するプログラムである。電子署名30の生成には、秘密鍵12及び乱数14が利用される。前述したように、確率的署名方式のアルゴリズムには、 DSA などの種々の既存のアルゴリズムを利用することができる。
署名プログラム10は、確率的署名方式でメッセージ20から電子署名30を生成するプログラムである。電子署名30の生成には、秘密鍵12及び乱数14が利用される。前述したように、確率的署名方式のアルゴリズムには、 DSA などの種々の既存のアルゴリズムを利用することができる。
署名プログラム10は、その内部に予め乱数14を含むように構成されているか、またはその内部で乱数14を生成するように構成されている。以下、乱数14に関し、署名プログラム10の構成方法を具体的にいくつか例示する。
<<予め内部に乱数を含む構成>>
この構成では、署名プログラム10は、その内部に複数の乱数14を予め含んでいる。言い換えると、署名プログラム10において、複数の乱数14が予め定義されている。署名プログラム10は、新たに電子署名を生成する際、複数の乱数14のうちの1つを利用する。
この構成では、署名プログラム10は、その内部に複数の乱数14を予め含んでいる。言い換えると、署名プログラム10において、複数の乱数14が予め定義されている。署名プログラム10は、新たに電子署名を生成する際、複数の乱数14のうちの1つを利用する。
例えば、署名プログラム10において、乱数14の配列 r を予め定義しておく。署名プログラム10は、乱数配列 r に格納されている乱数14を、先頭から順に使用していく。例えば i 回目に電子署名を生成する際、署名プログラム10は、r[i] を乱数14として使用する。
このケースでは、署名プログラム10を構成する処理のうち、少なくとも、乱数配列 r や乱数 r[i] を使用する処理が、セキュア記憶領域40に記憶される。また、乱数配列 r や乱数 r[i] がセキュア記憶領域40に記憶される。図6は、乱数を内部に含む署名プログラム10を概念的に例示する図である。
このように内部で予め乱数を定義しておく方法によれば、電子署名の生成の際に乱数を生成する必要がないため、電子署名の生成に要する時間を短くすることができる。
なお、内部に予め乱数を含めておく場合、署名プログラム10が扱える乱数の数が有限であるため、署名プログラム10が電子署名を生成できる回数が有限となる。例えば図6では、乱数の個数がn個であるため、電子署名を生成できる回数がn回である。そのため、署名プログラム10の内部に含まれている乱数を使い切ったら、新たな署名プログラム10を取得する(署名プログラム10を更新する)必要がある。
そこで例えば、署名プログラム10は、その内部に含まれている乱数を使い切ったタイミングや、残りの乱数の数が少なくなったタイミングで、その旨をユーザに通知するように構成される。この通知を受けたユーザは、署名生成装置2000を操作して署名プログラム10を新たに取得する。そして、乱数を使い切った後は、新たに取得した署名プログラム10を使用するようにする。
署名プログラム10の更新は、ユーザに通知することなく、署名生成装置2000によって自動で行われるようにしてもよい。
<<署名プログラム10の内部で乱数を生成する構成>>
この場合、署名プログラム10の内部には、乱数を生成するプログラムが含まれる。このプログラムのことを、乱数生成器と呼ぶ。この場合、少なくとも乱数生成器は、セキュア記憶領域40にロードされる。また、乱数生成器によって生成される乱数は、セキュア記憶領域40に記憶される。
この場合、署名プログラム10の内部には、乱数を生成するプログラムが含まれる。このプログラムのことを、乱数生成器と呼ぶ。この場合、少なくとも乱数生成器は、セキュア記憶領域40にロードされる。また、乱数生成器によって生成される乱数は、セキュア記憶領域40に記憶される。
図7は、乱数生成器16を有する署名プログラム10を概念的に例示する図である。図7において、乱数生成器16は、セキュア記憶領域40に記憶されている。また、乱数生成器16から出力される乱数14が、セキュア記憶領域40に記憶されている。
乱数生成器16の構成方法は様々である。以下では、乱数生成器16の構成方法を具体的に例示する。
<<<乱数生成器16の構成の例1>>>
図8は、乱数生成器16の構成を例示する第1の図である。この例において、乱数生成器16は、一方向性を持つハッシュ関数として実現されている。この場合、乱数生成器16は、その内部に予め乱数シードを含み、外部からノンスを取得するように構成される。言い換えれば、乱数シードが予め署名プログラム10に含まれている。乱数生成器16は、乱数シードとノンスに基づくハッシュ値を算出し、そのハッシュ値を乱数14として出力する。ここで、乱数シードとノンスに基づくハッシュ値を算出するハッシュ関数には、既存の種々のハッシュ関数を利用することができる。
図8は、乱数生成器16の構成を例示する第1の図である。この例において、乱数生成器16は、一方向性を持つハッシュ関数として実現されている。この場合、乱数生成器16は、その内部に予め乱数シードを含み、外部からノンスを取得するように構成される。言い換えれば、乱数シードが予め署名プログラム10に含まれている。乱数生成器16は、乱数シードとノンスに基づくハッシュ値を算出し、そのハッシュ値を乱数14として出力する。ここで、乱数シードとノンスに基づくハッシュ値を算出するハッシュ関数には、既存の種々のハッシュ関数を利用することができる。
この例では、乱数14に加え、署名プログラム10に予め含まれている乱数シードもセキュア記憶領域40に格納することが好適である。
<<<乱数生成器16の構成の例2>>>
図9は、乱数生成器16の構成を例示する第2の図である。この例において、乱数生成器16は、内部状態を持つ疑似乱数生成器(PRNG)を用いて実現されている。具体的には、乱数生成器16は、その内部に予め乱数シードを含み、乱数シードと内部状態とに基づいて、疑似乱数を出力する。ただし、乱数生成器16から出力される乱数が決定的になるのを避けるため、乱数生成器16は、内部状態の初期値を外部から取得する。ここで、内部状態と乱数シードに基づいて疑似乱数を生成する技術には、既存の技術を利用することができる。
図9は、乱数生成器16の構成を例示する第2の図である。この例において、乱数生成器16は、内部状態を持つ疑似乱数生成器(PRNG)を用いて実現されている。具体的には、乱数生成器16は、その内部に予め乱数シードを含み、乱数シードと内部状態とに基づいて、疑似乱数を出力する。ただし、乱数生成器16から出力される乱数が決定的になるのを避けるため、乱数生成器16は、内部状態の初期値を外部から取得する。ここで、内部状態と乱数シードに基づいて疑似乱数を生成する技術には、既存の技術を利用することができる。
この例では、乱数14に加え、乱数シード及び内部状態をセキュア記憶領域40に格納することが好適である。ここで、内部状態は、乱数生成器16によって更新される。そのため、乱数生成器16は、更新した内部状態をセキュア記憶領域40に格納するように構成される。
<<乱数生成器16の構成の例3>>
図10は、乱数生成器16の構成を例示する第3の図である。この例において、乱数生成器16は、外部から取得したノンスを用いて乱数シードを生成し、その乱数シードと内部状態を用いて疑似乱数を生成する疑似乱数生成器として実現される。例えば乱数生成器16は、一方向性ハッシュ関数に秘密鍵12とノンスを入力することで得られるハッシュ値を、乱数シードとして扱う。乱数生成器16は、得られた乱数シードと内部状態に基づいて、疑似乱数を出力する。ここで出力される疑似乱数が、乱数14として扱われる。
図10は、乱数生成器16の構成を例示する第3の図である。この例において、乱数生成器16は、外部から取得したノンスを用いて乱数シードを生成し、その乱数シードと内部状態を用いて疑似乱数を生成する疑似乱数生成器として実現される。例えば乱数生成器16は、一方向性ハッシュ関数に秘密鍵12とノンスを入力することで得られるハッシュ値を、乱数シードとして扱う。乱数生成器16は、得られた乱数シードと内部状態に基づいて、疑似乱数を出力する。ここで出力される疑似乱数が、乱数14として扱われる。
この例では、内部状態をセキュア記憶領域40に格納することが好適である。そのため、乱数生成器16は、乱数生成器16の内部状態をセキュア記憶領域40に格納するように構成される。また、乱数生成器16が生成した乱数シードを記憶領域に格納する場合、乱数生成器16は、生成した乱数シードをセキュア記憶領域40に格納するように構成される。
<署名プログラム10の取得:S102>
署名生成装置2000は、署名プログラム10を取得する(S102)。署名生成装置2000が署名プログラム10を取得する方法は様々である。例えば署名生成装置2000は、任意の記憶装置に記憶されている署名プログラム10を、その記憶装置から読み出すことで取得する。その他にも例えば、署名生成装置2000は、他の装置から送信される署名プログラム10を受信することで、署名プログラム10を取得する。この「他の装置」は、例えば、署名プログラム10を生成する装置(後述する署名プログラム生成装置3000)である。
署名生成装置2000は、署名プログラム10を取得する(S102)。署名生成装置2000が署名プログラム10を取得する方法は様々である。例えば署名生成装置2000は、任意の記憶装置に記憶されている署名プログラム10を、その記憶装置から読み出すことで取得する。その他にも例えば、署名生成装置2000は、他の装置から送信される署名プログラム10を受信することで、署名プログラム10を取得する。この「他の装置」は、例えば、署名プログラム10を生成する装置(後述する署名プログラム生成装置3000)である。
<署名プログラム10のロード:S104>
署名生成装置2000は、署名プログラム10をメモリ上にロードして実行する。この際、署名プログラム10のうち、乱数14を扱う処理は、セキュア記憶領域40にロードされる。例えば TEE を利用する場合、乱数14を扱う処理は、セキュア OS によってセキュア記憶領域40にロードされることにより、TEE によって実現されるセキュアな実行環境で動作する。すなわち、乱数14を扱う処理は、前述したセキュアプログラムとして動作する。ここで、TEE を構成する記憶領域などのセキュア記憶領域40に所定のプログラムをロードする技術には、既存の技術を利用することができる。
署名生成装置2000は、署名プログラム10をメモリ上にロードして実行する。この際、署名プログラム10のうち、乱数14を扱う処理は、セキュア記憶領域40にロードされる。例えば TEE を利用する場合、乱数14を扱う処理は、セキュア OS によってセキュア記憶領域40にロードされることにより、TEE によって実現されるセキュアな実行環境で動作する。すなわち、乱数14を扱う処理は、前述したセキュアプログラムとして動作する。ここで、TEE を構成する記憶領域などのセキュア記憶領域40に所定のプログラムをロードする技術には、既存の技術を利用することができる。
<電子署名の生成:S106>
署名プログラム10は、メッセージ20から電子署名30を生成する(S108)。ここで前述したように、署名プログラム10のうち、乱数14を扱う処理は、セキュア記憶領域40にロードして実行される。乱数14を扱う処理は、例えば、前述した乱数生成器16や、秘密鍵12や乱数14に基づいて電子署名30を算出する処理である。例えば TEE を利用する場合、これらの処理は、セキュアプログラムとして動作する。
署名プログラム10は、メッセージ20から電子署名30を生成する(S108)。ここで前述したように、署名プログラム10のうち、乱数14を扱う処理は、セキュア記憶領域40にロードして実行される。乱数14を扱う処理は、例えば、前述した乱数生成器16や、秘密鍵12や乱数14に基づいて電子署名30を算出する処理である。例えば TEE を利用する場合、これらの処理は、セキュアプログラムとして動作する。
図11は、署名プログラム10をセキュアプログラムと通常の実行環境で動作するプログラムとに切り分けて例示する図である。図11では、乱数生成器16を実行する処理と、電子署名30を生成する処理とが、セキュアな実行環境で動作している。通常の実行環境では、署名プログラム10の全体的な流れを実現する処理が実行されており、その中で、乱数生成器16を実行する処理と、電子署名30を生成する処理とが呼び出されている。この呼び出しは、規定の API を用いて行われる。
なお、乱数14を保護する方法と同様の方法により、秘密鍵12を保護することも可能である。すなわち、1)秘密鍵12を利用する処理をセキュア記憶領域40にロードし、なおかつ2)秘密鍵12をセキュア記憶領域40に格納するようにする。ただし、秘密鍵12を保護する方法は、必ずしも乱数14を保護する方法と同一である必要はなく、既存の種々の方法を利用することもできる。
また、署名プログラム10全体をセキュア記憶領域40にロードし、署名プログラム10全体をセキュアな実行環境で動作させることも可能である。ただし一般に、処理の実行に要する時間は、セキュアな実行環境を利用する場合よりも、通常の実行環境を利用する場合の方が短い。そのため、セキュアな実行環境で動作させるプログラムは必要最小限(署名プログラム10では、乱数14を利用する処理)に限定することが好適である。
<電子署名30の出力>
署名プログラム10は、生成した電子署名30を出力する。ここで、電子署名を出力する方法は任意である。例えば署名プログラム10は、電子署名30を任意の記憶装置に格納する。その他にも例えば、署名プログラム10は、電子署名30を他の装置に送信してもよい。
署名プログラム10は、生成した電子署名30を出力する。ここで、電子署名を出力する方法は任意である。例えば署名プログラム10は、電子署名30を任意の記憶装置に格納する。その他にも例えば、署名プログラム10は、電子署名30を他の装置に送信してもよい。
<署名プログラム10の生成>
署名プログラム10は、1)その内部の処理のうち、少なくとも、乱数14を扱う処理が、セキュア記憶領域40にロードされる、及び2)乱数14がセキュア記憶領域40に記憶されるという要件を満たす必要がある。署名プログラム10は、このような要件を満たすようにプログラム作成者によって設計・実装されることで生成されてもよいし、このような要件を満たさない署名プログラム(例えば、一般的な署名プログラム)を改変することで生成されてもよい。後者の場合、署名プログラムの改変は、人手で行われてもよいし、コンピュータによって自動で行われてもよい。
署名プログラム10は、1)その内部の処理のうち、少なくとも、乱数14を扱う処理が、セキュア記憶領域40にロードされる、及び2)乱数14がセキュア記憶領域40に記憶されるという要件を満たす必要がある。署名プログラム10は、このような要件を満たすようにプログラム作成者によって設計・実装されることで生成されてもよいし、このような要件を満たさない署名プログラム(例えば、一般的な署名プログラム)を改変することで生成されてもよい。後者の場合、署名プログラムの改変は、人手で行われてもよいし、コンピュータによって自動で行われてもよい。
以下、後者のように、前述の要件を満たさない署名プログラムを改変して、前述の要件を満たす署名プログラムに改変するコンピュータを、署名プログラム生成装置3000と呼ぶ。署名プログラム生成装置3000について、さらに詳しく説明する。
図12は、署名プログラム生成装置3000の動作の概要を表す図である。署名プログラム生成装置3000は、改変前署名プログラム60を取得し、改変前署名プログラム60を改変して、署名プログラム10を生成する。具体的には、署名プログラム生成装置3000は、改変前署名プログラム60の中から、乱数14を扱う処理を検出する。署名プログラム生成装置3000は、検出した処理がセキュア記憶領域40にロードされて実行されるように、改変前署名プログラム60を改変する。具体的には、TEE を利用する場合、検出した処理をセキュアな実行環境で動作するプログラムに改変する。なお、プログラムの中から所定のデータを扱う処理を検出する技術、及びその処理をセキュアな実行環境で動作する処理に改変する技術には、既存の技術を利用することができる。
また、署名プログラム生成装置3000は、乱数14を扱う処理の中から、乱数14を記憶領域に格納する処理を検出する。そして署名プログラム生成装置3000は、乱数14を記憶領域に格納する処理を改変して、その処理が乱数14をセキュア記憶領域40に格納するようにする。ここで、所定のデータを記憶領域に格納する処理を検出する技術、及びそのデータの格納先を通常の記憶領域からセキュアな記憶領域に変更する技術には、既存の技術を利用することができる。
<<作用効果>>
署名プログラム生成装置3000によれば、乱数14が漏洩する危険のある署名プログラムを、乱数14が漏洩されない署名プログラム(署名プログラム10)に改変することができる。よって、乱数14が保護された安全な署名生成プログラムを容易に生成することができる。
署名プログラム生成装置3000によれば、乱数14が漏洩する危険のある署名プログラムを、乱数14が漏洩されない署名プログラム(署名プログラム10)に改変することができる。よって、乱数14が保護された安全な署名生成プログラムを容易に生成することができる。
<<機能構成の例>>
図13は、署名プログラム生成装置3000の機能構成を例示する図である。例えば署名プログラム生成装置3000は、図13に示すように、取得部3020、第1改変部3040、及び第2改変部3060を有する。取得部3020は、改変前署名プログラム60(確率的署名方式で電子署名を生成する署名プログラム)を取得する。第1改変部3040は、改変前署名プログラム60から、電子署名の生成に利用される乱数(乱数14)を記憶領域に格納する処理を検出する。さらに第1改変部3040は、検出した処理が乱数14をセキュア記憶領域40に格納するように、改変前署名プログラム60を改変する。第2改変部3060は、改変前署名プログラム60から、乱数14を扱う処理を検出する。さらに第2改変部3060は、検出した処理がセキュア記憶領域40にロードして実行されるように、改変前署名プログラム60を改変する。
図13は、署名プログラム生成装置3000の機能構成を例示する図である。例えば署名プログラム生成装置3000は、図13に示すように、取得部3020、第1改変部3040、及び第2改変部3060を有する。取得部3020は、改変前署名プログラム60(確率的署名方式で電子署名を生成する署名プログラム)を取得する。第1改変部3040は、改変前署名プログラム60から、電子署名の生成に利用される乱数(乱数14)を記憶領域に格納する処理を検出する。さらに第1改変部3040は、検出した処理が乱数14をセキュア記憶領域40に格納するように、改変前署名プログラム60を改変する。第2改変部3060は、改変前署名プログラム60から、乱数14を扱う処理を検出する。さらに第2改変部3060は、検出した処理がセキュア記憶領域40にロードして実行されるように、改変前署名プログラム60を改変する。
<<署名プログラム生成装置3000のハードウエア構成の例>>
署名プログラム生成装置3000の各機能構成部は、各機能構成部を実現するハードウエア(例:ハードワイヤードされた電子回路など)で実現されてもよいし、ハードウエアとソフトウエアとの組み合わせ(例:電子回路とそれを制御するプログラムの組み合わせなど)で実現されてもよい。以下、署名プログラム生成装置3000の各機能構成部がハードウエアとソフトウエアとの組み合わせで実現される場合について、さらに説明する。
署名プログラム生成装置3000の各機能構成部は、各機能構成部を実現するハードウエア(例:ハードワイヤードされた電子回路など)で実現されてもよいし、ハードウエアとソフトウエアとの組み合わせ(例:電子回路とそれを制御するプログラムの組み合わせなど)で実現されてもよい。以下、署名プログラム生成装置3000の各機能構成部がハードウエアとソフトウエアとの組み合わせで実現される場合について、さらに説明する。
図14は、署名プログラム生成装置3000を実現するための計算機4000を例示する図である。計算機4000は任意の計算機である。例えば計算機4000は、Personal Computer(PC)やサーバマシンなどである。計算機4000は、署名プログラム生成装置3000を実現するために設計された専用の計算機であってもよいし、汎用の計算機であってもよい。
計算機4000は、バス4020、プロセッサ4040、メモリ4060、ストレージデバイス4080、入出力インタフェース4100、及びネットワークインタフェース4120を有する。バス4020、プロセッサ4040、メモリ4060、ストレージデバイス4080、入出力インタフェース4100、及びネットワークインタフェース4120の機能はそれぞれ、バス1020、プロセッサ1040、ストレージデバイス1080、入出力インタフェース1100、及びネットワークインタフェース1120の機能と同様である。
ストレージデバイス4080には、署名プログラム生成装置3000の各機能構成部を実現するプログラムモジュールが記憶されている。プロセッサ4040は、ストレージデバイス4080に記憶されているプログラムモジュールを実行することで、署名プログラム生成装置3000の各機能構成部の機能を実現する。
<<処理の流れ>>
図15は、署名プログラム生成装置3000が行う処理の流れを例示するフローチャートである。取得部3020は、改変前署名プログラム60を取得する(S202)。第1改変部3040は、改変前署名プログラム60から、乱数14を記憶領域に格納する処理を検出する(S204)。第1改変部3040は、検出した処理が乱数14をセキュア記憶領域40に格納するように、改変前署名プログラム60を改変する(S206)。第2改変部3060は、改変前署名プログラム60から、乱数14を扱う処理を検出する(S208)。第2改変部3060は、検出した処理がセキュア記憶領域40にロードして実行されるように、改変前署名プログラム60を改変する(S210)。
図15は、署名プログラム生成装置3000が行う処理の流れを例示するフローチャートである。取得部3020は、改変前署名プログラム60を取得する(S202)。第1改変部3040は、改変前署名プログラム60から、乱数14を記憶領域に格納する処理を検出する(S204)。第1改変部3040は、検出した処理が乱数14をセキュア記憶領域40に格納するように、改変前署名プログラム60を改変する(S206)。第2改変部3060は、改変前署名プログラム60から、乱数14を扱う処理を検出する(S208)。第2改変部3060は、検出した処理がセキュア記憶領域40にロードして実行されるように、改変前署名プログラム60を改変する(S210)。
また、署名プログラム生成装置3000は、改変前署名プログラム60を改変することで生成した署名プログラム10を出力する。例えば署名プログラム生成装置3000は、署名生成装置2000に対して署名プログラム10を送信する。その他にも例えば、署名プログラム生成装置3000は、任意の記憶装置に署名プログラム10を格納してもよい。
なお、取得部3020が改変前署名プログラム60を取得する方法は任意である。例えば取得部3020は、記憶装置に記憶されている改変前署名プログラム60を、その記憶装置から取得する。その他にも例えば、取得部3020は、他の装置から送信される改変前署名プログラム60を受信することで、改変前署名プログラム60を取得する。
[実施形態2]
実施形態2の署名生成装置2000は、実施形態1の署名生成装置2000と同様に、署名プログラムを用い、メッセージ20について電子署名30を生成する。以降で説明する点を除き、実施形態2の署名生成装置2000は、実施形態1の署名生成装置2000と同様の機能を有する。
実施形態2の署名生成装置2000は、実施形態1の署名生成装置2000と同様に、署名プログラムを用い、メッセージ20について電子署名30を生成する。以降で説明する点を除き、実施形態2の署名生成装置2000は、実施形態1の署名生成装置2000と同様の機能を有する。
実施形態2の署名生成装置2000は、署名プログラムの少なくとも一部が難読化されている点、及びセキュア記憶領域40を要しない点で、実施形態1の署名生成装置2000と相違する。ここでいう「プログラムの難読化」とは、プログラム内の静的な機密情報の復元が困難なようにプログラムを実装することを意味する。なお、このような難読化が施された署名プログラムは、ホワイトボックス実装された署名プログラムとも呼ばれる。
実施形態2の署名生成装置2000では、署名プログラム70が動作する。署名プログラム70は、実施形態1における署名プログラム10と同様に、確率的署名方式で電子署名を生成する。より具体的には、署名プログラム70は、メッセージ20を取得し、秘密鍵及び乱数を用いて、メッセージ20から電子署名30を生成する。
ただし、署名プログラム70には、乱数14自体と、乱数14を扱う処理とが、難読化された状態で含められている。そのため、乱数14と乱数14を扱う処理をセキュアな記憶領域で扱わなくても、乱数14が漏洩することを防ぐことができる(すなわち、乱数14を保護できる)。なお、乱数14を扱う処理をセキュアな記憶領域で扱う必要がないため、実行部2020は、乱数14を扱う処理も通常の記憶領域にロードして実行する。
ここで、実施形態1でも述べたとおり、秘密鍵12を保護する方法は、必ずしも乱数14を保護する方法と同一である必要はなく、既存の種々の方法を利用することもできる。すなわち、秘密鍵12については、秘密鍵12を難読化することで保護してもよいし、その他の既存の手法で保護してもよい。
図16は、署名プログラム70の動作の具体例を例示する図である。前述したように、DSA では、次のようにメッセージ m に対する署名(r,s)を計算する。
r=(g^{k} mod p) mod q
s=k^{-1}(h(m)+xr) mod q
r=(g^{k} mod p) mod q
s=k^{-1}(h(m)+xr) mod q
署名プログラム70では、上述した r と s を算出する処理が難読化されている。乱数 k は、r と s を算出する処理の中で、k=a*k' として算出される。a は難読化した状態で予め署名プログラム70に含められるデータである。k' は、難読化されていない仮の乱数であり、署名プログラム70に予め含められていてもよいし、乱数生成器によって生成されてもよい。
ここで、rを算出する処理では、数学的に困難とされている離散対数問題を解くことが要求される r=(g^{k} mod p) mod q の形で処理結果が出力される。そのため、a*k' を計算すること、ひいては a を計算することが困難であり、現実的には不可能であるといえる。また s を算出する処理では、算出する式 s=(a*k')^{-1}(h(m)-xr) mod 内に二つの未知変数 a と x が存在する。そのため、乱数の算出に利用した正確な未知変数 a と x を計算することは困難であり、現実的には不可能であるといえる。そのため、攻撃者がデータ a を得ることはできない。
このように、乱数 k は、難読化された状態で署名プログラム70に含められているデータ a を利用して、難読化された処理の中で算出され、なおかつ計算結果としては出力されない。すなわち、乱数 k は難読化された処理の中でのみ扱われる。よって、攻撃者は乱数 k を得ることができない。
なお、r の算出において g^{a*k'} が利用されればよいため、a の代わりに g^{a} を難読化した状態で署名プログラム70に含めておいてもよい。この場合、g^{a*k'} を {g^{a}}^{k'} という計算で算出できる。
また、図16の例では、秘密鍵 x 及びそれを扱う処理(すなわち、s を算出する処理)も難読化されている。そのため、攻撃者は、乱数 k と同様に、秘密鍵 x を得ることもできない。
<作用効果>
本実施形態の署名生成装置2000によれば、電子署名30の生成に利用される署名プログラム70において、乱数14自体と乱数14を扱う処理が難読化されている。そのため、たとえ攻撃者に root 権限を乗っ取られても、攻撃者は乱数14を得ることができない。そのため、乱数の漏洩によって秘密鍵が算出されてしまうことを防ぐことができる。よって、秘密鍵の安全性、ひいては署名プログラムの安全性を向上させることができる。
本実施形態の署名生成装置2000によれば、電子署名30の生成に利用される署名プログラム70において、乱数14自体と乱数14を扱う処理が難読化されている。そのため、たとえ攻撃者に root 権限を乗っ取られても、攻撃者は乱数14を得ることができない。そのため、乱数の漏洩によって秘密鍵が算出されてしまうことを防ぐことができる。よって、秘密鍵の安全性、ひいては署名プログラムの安全性を向上させることができる。
<機能構成の例>
実施形態2の署名生成装置2000の機能構成は、実施形態1の署名生成装置2000の機能構成と同様に、例えば図3で表される。実施形態2の署名生成装置2000を例示する図である。署名生成装置2000の実行部2020は、署名プログラム70を実行する。署名プログラム70は、メッセージ20を取得し、秘密鍵12及び乱数14を用いて、メッセージ20から電子署名30を生成する。ここで、署名プログラム70において、乱数14自体、及び乱数14を扱う処理は、難読化されている。
実施形態2の署名生成装置2000の機能構成は、実施形態1の署名生成装置2000の機能構成と同様に、例えば図3で表される。実施形態2の署名生成装置2000を例示する図である。署名生成装置2000の実行部2020は、署名プログラム70を実行する。署名プログラム70は、メッセージ20を取得し、秘密鍵12及び乱数14を用いて、メッセージ20から電子署名30を生成する。ここで、署名プログラム70において、乱数14自体、及び乱数14を扱う処理は、難読化されている。
<ハードウエア構成の例>
実施形態2の署名生成装置2000のハードウエア構成は、実施形態1の署名生成装置2000のハードウエア構成と同様に、例えば図4で表れる。ただし、実施形態2の署名生成装置2000のストレージデバイス1080には、実施形態2の実行部2020を実現するプログラムモジュール及び署名プログラム70が記憶されている。
実施形態2の署名生成装置2000のハードウエア構成は、実施形態1の署名生成装置2000のハードウエア構成と同様に、例えば図4で表れる。ただし、実施形態2の署名生成装置2000のストレージデバイス1080には、実施形態2の実行部2020を実現するプログラムモジュール及び署名プログラム70が記憶されている。
<処理の流れ>
実施形態2の署名生成装置2000によって実行される処理の流れは、実施形態1の署名生成装置2000によって実行される処理の流れと同様に、例えば図5で表される。
実施形態2の署名生成装置2000によって実行される処理の流れは、実施形態1の署名生成装置2000によって実行される処理の流れと同様に、例えば図5で表される。
以上、図面を参照して本発明の実施形態について述べたが、これらは本発明の例示であり、上記各実施形態の構成を組み合わせた構成や、上記以外の様々な構成を採用することもできる。
Claims (18)
- 確率的署名方式で電子署名を生成する署名プログラムを実行する実行部を有し、
前記署名プログラムは、メッセージを取得して、乱数及び秘密鍵を用いて前記メッセージから電子署名を生成し、
前記実行部は、前記署名プログラムに含まれる処理のうち、前記乱数を利用する処理を、セキュアな記憶領域にロードして実行し、
前記乱数は前記セキュアな記憶領域に格納される、署名生成装置。 - 前記セキュアな記憶領域は、Trusted Execution Environment(TEE)を構成する記憶領域であり、
前記実行部は、前記乱数を利用する処理を、TEE によって実現されるセキュアな実行環境で動作させる、請求項1に記載の署名生成装置。 - 前記署名プログラムは、
複数の乱数を含み、
前記複数の乱数のうちの1つを用いて前記電子署名を生成し、
前記実行部は、前記複数の乱数を前記セキュアな記憶領域に格納する、請求項1又は2に記載の署名生成装置。 - 前記署名プログラムは、乱数を生成して前記セキュアな記憶領域に格納し、前記生成した乱数を利用して前記電子署名を生成する、請求項1又は2に記載の署名生成装置。
- 確率的署名方式で電子署名を生成する署名プログラムを取得する取得部と、
前記取得した署名プログラムから、電子署名の生成に利用される乱数を記憶領域に格納する処理を検出し、その処理が前記乱数をセキュアな記憶領域に格納するように、前記署名プログラムを改変する第1改変部と、
前記取得した署名プログラムから、前記乱数を扱う処理を検出し、その処理が前記セキュアな記憶領域にロードして実行されるように、前記署名プログラムを改変する第2改変部と、を有する署名プログラム生成装置。 - コンピュータによって実行される署名生成方法であって、
確率的署名方式で電子署名を生成する署名プログラムを実行し、
前記署名プログラムは、メッセージを取得して、乱数及び秘密鍵を用いて前記メッセージから電子署名を生成し、
前記署名プログラムに含まれる処理のうち、前記乱数を利用する処理は、セキュアな記憶領域にロードして実行され、
前記乱数は前記セキュアな記憶領域に格納される、署名生成方法。 - 前記セキュアな記憶領域は、Trusted Execution Environment(TEE)を構成する記憶領域であり、
前記乱数を利用する処理を、TEE によって実現されるセキュアな実行環境で動作させる、請求項6に記載の署名生成方法。 - 前記署名プログラムは、
複数の乱数を含み、
前記複数の乱数のうちの1つを用いて前記電子署名を生成し、
前記複数の乱数を前記セキュアな記憶領域に格納する、請求項6又は7に記載の署名生成方法。 - 前記署名プログラムは、乱数を生成して前記セキュアな記憶領域に格納し、前記生成した乱数を利用して前記電子署名を生成する、請求項6又は7に記載の署名生成方法。
- コンピュータによって実行される署名プログラム生成方法であって、
確率的署名方式で電子署名を生成する署名プログラムを取得し、
前記取得した署名プログラムから、電子署名の生成に利用される乱数を記憶領域に格納する処理を検出し、その処理が前記乱数をセキュアな記憶領域に格納するように、前記署名プログラムを改変し、
前記取得した署名プログラムから、前記乱数を扱う処理を検出し、その処理が前記セキュアな記憶領域にロードして実行されるように、前記署名プログラムを改変する、署名プログラム生成方法。 - 署名プログラムであって、
メッセージを取得して、乱数及び秘密鍵を用いて前記メッセージから電子署名を生成し、
当該署名プログラムに含まれる処理のうち、前記乱数を利用する処理は、セキュアな記憶領域にロードして実行され、
前記乱数は前記セキュアな記憶領域に格納される、署名プログラム。 - 前記セキュアな記憶領域は、Trusted Execution Environment(TEE)を構成する記憶領域であり、
前記乱数を利用する処理は、TEE によって実現されるセキュアな実行環境で動作する、請求項11に記載の署名プログラム。 - 複数の乱数を含み、
前記複数の乱数のうちの1つを用いて前記電子署名を生成し、
前記複数の乱数は、前記セキュアな記憶領域に格納される、請求項11又は12に記載の署名プログラム。 - 乱数を生成して前記セキュアな記憶領域に格納し、前記生成した乱数を利用して前記電子署名を生成する、請求項11又は12に記載の署名プログラム。
- 確率的署名方式で電子署名を生成する署名プログラムを取得し、
前記取得した署名プログラムから、電子署名の生成に利用される乱数を記憶領域に格納する処理を検出し、その処理が前記乱数をセキュアな記憶領域に格納するように、前記署名プログラムを改変し、
前記取得した署名プログラムから、前記乱数を扱う処理を検出し、その処理が前記セキュアな記憶領域にロードして実行されるように、前記署名プログラムを改変する、署名プログラムの生成プログラム。 - 確率的署名方式で電子署名を生成する署名プログラムを実行する実行部を有し、
前記署名プログラムは、メッセージを取得して、乱数及び秘密鍵を用いて前記メッセージから電子署名を生成し、
前記署名プログラムにおいて、前記乱数及び前記乱数を扱う処理が難読化されている、署名生成装置。 - コンピュータによって実行される署名生成方法であって、
確率的署名方式で電子署名を生成する署名プログラムを実行し、
前記署名プログラムは、メッセージを取得して、乱数及び秘密鍵を用いて前記メッセージから電子署名を生成し、
前記署名プログラムにおいて、前記乱数及び前記乱数を扱う処理が難読化されている、署名生成方法。 - 署名プログラムであって、
メッセージを取得して、乱数及び秘密鍵を用いて前記メッセージから電子署名を生成し、
前記乱数及び前記乱数を扱う処理が難読化されている、署名プログラム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2020547830A JP7364241B2 (ja) | 2018-09-28 | 2018-09-28 | 署名生成装置、署名生成方法及び署名プログラム |
PCT/JP2018/036442 WO2020065958A1 (ja) | 2018-09-28 | 2018-09-28 | 署名生成装置、署名プログラム生成装置、署名生成方法、署名プログラム生成方法、署名プログラム、及び署名生成プログラムの生成プログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2018/036442 WO2020065958A1 (ja) | 2018-09-28 | 2018-09-28 | 署名生成装置、署名プログラム生成装置、署名生成方法、署名プログラム生成方法、署名プログラム、及び署名生成プログラムの生成プログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2020065958A1 true WO2020065958A1 (ja) | 2020-04-02 |
Family
ID=69949770
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/JP2018/036442 WO2020065958A1 (ja) | 2018-09-28 | 2018-09-28 | 署名生成装置、署名プログラム生成装置、署名生成方法、署名プログラム生成方法、署名プログラム、及び署名生成プログラムの生成プログラム |
Country Status (2)
Country | Link |
---|---|
JP (1) | JP7364241B2 (ja) |
WO (1) | WO2020065958A1 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116318688A (zh) * | 2023-05-24 | 2023-06-23 | 北京信安世纪科技股份有限公司 | 协同签名方法、设备和存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001255816A (ja) * | 2000-01-06 | 2001-09-21 | Nippon Telegr & Teleph Corp <Ntt> | 電子署名の作成装置と作成方法およびこの方法を記録した記録媒体 |
JP2004253950A (ja) * | 2003-02-19 | 2004-09-09 | Toyo Commun Equip Co Ltd | 事前計算による電子署名高速生成方法および装置 |
US20050002532A1 (en) * | 2002-01-30 | 2005-01-06 | Yongxin Zhou | System and method of hiding cryptographic private keys |
WO2007074836A1 (ja) * | 2005-12-28 | 2007-07-05 | Matsushita Electric Industrial Co., Ltd. | 署名生成装置、署名生成方法及び署名生成プログラム |
US20130117569A1 (en) * | 2011-09-30 | 2013-05-09 | Nokia Corporation | Method and apparatus for improving digital signatures |
JP2015037298A (ja) * | 2013-08-16 | 2015-02-23 | Kddi株式会社 | 端末、id型署名暗号方法およびプログラム |
US20160350561A1 (en) * | 2015-05-27 | 2016-12-01 | Google Inc. | Policies for secrets in trusted execution environments |
-
2018
- 2018-09-28 WO PCT/JP2018/036442 patent/WO2020065958A1/ja active Application Filing
- 2018-09-28 JP JP2020547830A patent/JP7364241B2/ja active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001255816A (ja) * | 2000-01-06 | 2001-09-21 | Nippon Telegr & Teleph Corp <Ntt> | 電子署名の作成装置と作成方法およびこの方法を記録した記録媒体 |
US20050002532A1 (en) * | 2002-01-30 | 2005-01-06 | Yongxin Zhou | System and method of hiding cryptographic private keys |
JP2004253950A (ja) * | 2003-02-19 | 2004-09-09 | Toyo Commun Equip Co Ltd | 事前計算による電子署名高速生成方法および装置 |
WO2007074836A1 (ja) * | 2005-12-28 | 2007-07-05 | Matsushita Electric Industrial Co., Ltd. | 署名生成装置、署名生成方法及び署名生成プログラム |
US20130117569A1 (en) * | 2011-09-30 | 2013-05-09 | Nokia Corporation | Method and apparatus for improving digital signatures |
JP2015037298A (ja) * | 2013-08-16 | 2015-02-23 | Kddi株式会社 | 端末、id型署名暗号方法およびプログラム |
US20160350561A1 (en) * | 2015-05-27 | 2016-12-01 | Google Inc. | Policies for secrets in trusted execution environments |
Non-Patent Citations (1)
Title |
---|
MA, S. ET AL.: "CDRep: automatic repair of cryptographic misuses in android applications", PROCEEDINGS OF THE 11TH ACM ASIA CONFERENCE ON COMPUTER AND COMMUNICATIONS SECURITY, 2016, pages 711 - 722, XP055698331 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116318688A (zh) * | 2023-05-24 | 2023-06-23 | 北京信安世纪科技股份有限公司 | 协同签名方法、设备和存储介质 |
CN116318688B (zh) * | 2023-05-24 | 2023-08-15 | 北京信安世纪科技股份有限公司 | 协同签名方法、设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
JP7364241B2 (ja) | 2023-10-18 |
JPWO2020065958A1 (ja) | 2021-08-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7870399B2 (en) | Software trusted platform module and application security wrapper | |
TW202021306A (zh) | 可信應用程式的遠端證明方法及裝置、電子設備 | |
CN108632240B (zh) | Fpga代码的保密验证 | |
US11436305B2 (en) | Method and system for signing an artificial intelligence watermark using implicit data | |
WO2016045458A1 (zh) | 一种安全控制方法及网络设备 | |
JP7256862B2 (ja) | 保護されたコンテナ間のセキュア通信方法およびそのシステム | |
CN105229652A (zh) | 检测针对软件应用的利用 | |
Johnston et al. | Recommendations for securing Internet of Things devices using commodity hardware | |
CN108369623A (zh) | 用于为设备提供安全功能的方法和安全模块 | |
US11748521B2 (en) | Privacy-enhanced computation via sequestered encryption | |
Ravi et al. | Security is an architectural design constraint | |
US9800410B1 (en) | Data encryption system and method | |
US20210350264A1 (en) | Method for obfuscated ai model training for data processing accelerators | |
WO2020065958A1 (ja) | 署名生成装置、署名プログラム生成装置、署名生成方法、署名プログラム生成方法、署名プログラム、及び署名生成プログラムの生成プログラム | |
Gupta et al. | Security and Cryptography | |
Aitchison et al. | On the integration of physically unclonable functions into ARM trustzone security technology | |
Hao et al. | Trusted block as a service: Towards sensitive applications on the cloud | |
Ranjith et al. | Intelligence based authentication-authorization and auditing for secured data storage | |
CN115081000B (zh) | 保护远程目标程序源码的方法、系统、设备和存储介质 | |
US11537689B2 (en) | Method and system for signing an artificial intelligence watermark using a kernel | |
US20240137216A1 (en) | Simplified masking for signed cryptography operations | |
Rehman et al. | Hybrid AES-ECC Model for the Security of Data over Cloud Storage. Electronics 2021, 10, 2673 | |
Algawi et al. | In kernel implementation of rsa routines | |
KR20170044017A (ko) | 디지털 데이터의 불연속 해싱을 위한 장치 및 방법 | |
KR20220105495A (ko) | 부채널 공격에 내성이 있는 모듈라 곱셈을 위한 장치 및 방법 |
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: 18935454 Country of ref document: EP Kind code of ref document: A1 |
|
ENP | Entry into the national phase |
Ref document number: 2020547830 Country of ref document: JP Kind code of ref document: A |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
122 | Ep: pct application non-entry in european phase |
Ref document number: 18935454 Country of ref document: EP Kind code of ref document: A1 |