WO2009104260A1 - 検証装置 - Google Patents
検証装置 Download PDFInfo
- Publication number
- WO2009104260A1 WO2009104260A1 PCT/JP2008/052884 JP2008052884W WO2009104260A1 WO 2009104260 A1 WO2009104260 A1 WO 2009104260A1 JP 2008052884 W JP2008052884 W JP 2008052884W WO 2009104260 A1 WO2009104260 A1 WO 2009104260A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- integer
- unit
- verification
- input
- ciphertext
- 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/30—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
- H04L9/3066—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving algebraic varieties, e.g. elliptic or hyper-elliptic curves
-
- 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/30—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
- H04L9/3066—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving algebraic varieties, e.g. elliptic or hyper-elliptic curves
- H04L9/3073—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving algebraic varieties, e.g. elliptic or hyper-elliptic curves involving pairings, e.g. identity based encryption [IBE], bilinear mappings or bilinear pairings, e.g. Weil or Tate pairing
-
- 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
- H04L9/3247—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 involving digital signatures
-
- 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
- H04L9/3247—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 involving digital signatures
- H04L9/3252—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 involving digital signatures using DSA or related signature schemes, e.g. elliptic based signatures, ElGamal or Schnorr schemes
Definitions
- the present invention relates to a verification device for verifying the integrity of ciphertexts in an encryption system such as a public key encryption system.
- a cryptographic system that uses a finite group such as a group formed by multiplication of integer remainders and a group formed by points on an elliptic curve.
- h e ⁇ s (addition of a group operation of a finite group is added based on the elements h and s of the finite group and an integer e in order to verify the integrity of the ciphertext.
- h s e (when a group operation of a finite group is described in a multiplicative manner).
- a finite group used in a cryptographic system has a very large order, and it may take a long time for a processing device such as a computer to perform one group operation.
- the verification device is: A processing device for processing data, an integer dividing unit, a verification value calculating unit, and a verification determining unit;
- the integer dividing unit inputs the order p of the finite group G and the integer e using the processing device, and based on the input order p and the integer e, e 1 ⁇ e ⁇ e 2 ( calculating an integer e 1 and an integer e 2 satisfying (mod p),
- the verification determination unit determines that the verification is successful when the element a is a unit element of the finite group G based on the element a calculated by the verification value calculation unit using the processing device.
- the verification device is:
- the integer dividing unit uses the processing device to satisfy the condition that the absolute value of the integer e 1 is smaller than the square root of the order p and the integer e 2 is smaller than the square root of the order p.
- An integer e 1 and an integer e 2 that satisfy the condition are calculated.
- the verification device further includes a storage device for storing data
- the integer dividing unit includes a first residue storage unit, a second residue storage unit, an initial value setting unit, a suitability determination unit, a third residue calculation unit, and a divided integer output unit
- the first remainder storage unit stores the integer v 1 using the storage device
- the second remainder storage unit stores the integer v 2 using the storage device
- the initial value setting unit stores the order p as the integer v 1 in the first remainder storage unit and the integer e as the integer v 2 in the second remainder storage unit using the processing device.
- the suitability determination unit determines that the output condition is satisfied when the integer v 2 stored in the second remainder storage unit is smaller than the square root of the order p using the processing device
- the third remainder calculation unit uses the processing device and, when the compatibility determination unit does not determine that the output condition is satisfied, the integer v 1 stored in the first residue storage unit and the second residue storage.
- the remainder obtained by dividing the integer v 1 by the integer v 2 is calculated as an integer v 3
- the integer v 2 stored by the second remainder storage unit is calculated as the integer v 1 is stored in the first remainder storage unit, and the calculated integer v 3 is stored in the second remainder storage unit as the integer v 2
- the divided integer output unit outputs the integer v 2 stored in the second remainder storage unit as the integer e 2 when the compatibility determination unit determines that the output condition is satisfied using the processing device. It is characterized by that.
- the verification device is:
- the integer dividing unit further includes a first coefficient storage unit, a second coefficient storage unit, a quotient calculation unit, and a third coefficient calculation unit
- the first coefficient storage unit stores an integer t 1 using the storage device
- the second coefficient storage unit stores the integer t 2 using the storage device
- the initial value setting unit further uses the processing device to store 0 as the integer t 1 in the first coefficient storage unit, and store 1 as the integer t 2 in the second coefficient storage unit
- the quotient calculation unit, using the processing device, the integer v 1 of the first remainder storage unit stores, the second remainder storage unit is based on the integer v 2 stored, the said integer v 1
- the largest integer not exceeding the quotient divided by the integer v 2 is calculated as the integer q
- the third coefficient calculation unit uses the processing device and, when the compatibility determination unit does not determine that the output condition is satisfied, the integer t 1 stored by the first coefficient storage unit and the second coefficient storage Based on the integer t 2 stored by the unit and the
- the verification device is:
- the verification value calculation unit uses the processing device to calculate ⁇ (n i ⁇ P i ) (where n is a predetermined integer of 2 or more, i is an integer of 0 to k, and k is the integer e 1 .
- P i is an element of the finite group G
- P i e 1, sgn ⁇ e 1, i ⁇ he 2, i ⁇ s, e 1, sgn is 1 or ⁇ 1
- e 1, i and e 2 i are integers of 0 to n ⁇ 1
- e 1 e 1, sgn ⁇ ⁇ (n i ⁇ e 1, i )
- e 2 ⁇ (n i ⁇ e 2, i ).
- the ciphertext decryption apparatus includes: A storage device for storing data, a processing device for processing data, a key storage unit, a ciphertext input unit, a ciphertext verification unit, a verification device, and a decrypted text generation unit,
- the key storage unit stores a key for decrypting the ciphertext using the storage device
- the ciphertext input unit inputs ciphertext using the processing device
- the ciphertext verification unit uses the processing device, and based on the key stored in the key storage unit and the ciphertext input by the ciphertext input unit, the integer e input to the verification device, Calculate the element s of the finite group G and the element h of the finite group G;
- the verification device inputs the integer e calculated by the ciphertext verification unit, the element s of the finite group G, and the element h of the finite group G, and determines whether the verification is successful
- the decrypted text generation unit uses the processing device to de
- the ciphertext decryption apparatus further includes an encryption parameter storage unit, an identification storage unit, an identification source calculation unit, and an identification source storage unit.
- the encryption parameter storage unit using the storage device, and stores the order p of the finite group G, and a generator g 1 of the finite group G, and the element R of the finite group G
- the identification storage unit stores a bit string ID for identifying the ciphertext decryption device using the storage device
- the bit string calculation unit using the processing device, based on the pairing value pairing calculation unit has calculated value alpha, the predetermined hash function H 2 calculates a hash value obtained by hashing the pairing value alpha Te, the bit string H 2 and (alpha), exclusive of the bit string V by the ciphertext input unit inputs, based on the calculated bit string H 2 ( ⁇ ), the bit string V and the bit string between H 2 (alpha)
- the verification device stores the order p stored by the encryption parameter storage unit as the
- the ciphertext decryption apparatus includes: The identification source calculation unit calculates the element Q before the ciphertext input unit inputs the ciphertext.
- the ciphertext decryption apparatus further includes a common key storage unit, an encrypted message input unit, and a message decryption unit,
- the common key storage unit stores the common key K output by the decrypted text generation unit using the storage device
- the encrypted message input unit inputs an encrypted message using the processing device
- the message decryption unit decrypts the encrypted message input by the encrypted message input unit using the common key K stored in the common key storage unit, using the processing device.
- the ciphertext decryption apparatus further includes an encryption parameter storage unit,
- the encryption parameter storage unit stores the order p of the finite group G using the storage device,
- the key storage unit uses the storage device to include an integer w of 1 to p ⁇ 1, an integer x of 1 to p ⁇ 1, an integer y of 1 to p ⁇ 1, and 1 to p ⁇ .
- the ciphertext input unit inputs the element u of the finite group G, the element u ′ of the finite group G, and the element v of the finite group G as the ciphertext using the processing device
- the ciphertext verification unit includes a hash value calculation unit and an integer calculation unit,
- the hash value calculation unit uses the processing device to hash the element u and the element u ′ with a predetermined hash function H based on the element u and the element u ′ input by the ciphertext input unit.
- the element u and the element u ′ input by the ciphertext input unit as the element h are input, it is determined whether or not the verification is successful, and the first verification result is stored in the encryption parameter storage unit.
- a number p, an integer t calculated by the integer calculation unit as the integer e, an element u input by the ciphertext input unit as the element s, and an element v input by the ciphertext input unit as the element h Determine whether the verification is successful, and use it as the second verification result
- the decrypted text generation unit uses the processing device to store the integer z stored by the key storage unit when the verification device determines that the verification is successful in both the first verification result and the second verification result.
- the ciphertext decryption apparatus further includes a common key storage unit, an encrypted message input unit, and a message decryption unit,
- the common key storage unit stores the common key K output by the decrypted text generation unit using the storage device
- the encrypted message input unit inputs an encrypted message using the processing device
- the message decryption unit decrypts the encrypted message input by the encrypted message input unit using the common key K stored in the common key storage unit, using the processing device.
- the ciphertext decryption apparatus further includes an encryption parameter storage unit, The encryption parameter storage unit, using the storage device, and the order p of the additive group G 1, and the generator g of the additive group G 1, the original multiplicative group G T to of order the order p remember v 0 ,
- the key storage unit stores the element d 0 of the additive group G 2 having the order p as the order and the element d 1 of the additive group G 2 using the storage device,
- the ciphertext input unit using the processing device, the bit string c, the original c 0 of the additive group G 1, the original c 1 of the additive group G 1, and one or more p-1 an integer t
- the ciphertext verification unit includes a pairing value calculation unit and an integer calculation unit,
- the pairing value calculation unit uses the processing device to determine a predetermined pairing function e based on the element c0 input by the ciphertext input unit and the element d0 stored by the secret key storage unit.
- the integer calculating unit uses the processing device to determine a predetermined value based on the element k calculated by the pairing value calculating unit, the bit string c, the element c 0, and the element c 1 input by the ciphertext input unit.
- the verification device, the additive group G 1 as the finite group G, and order p by the encryption parameter storage unit is stored as the position number p, the integer s the integer calculation unit has calculated as the integer
- the multiplicative group G T as the finite group G, and order p by the encryption parameter storage unit is stored as the position number p
- the integer s the integer calculation unit has calculated as the integer e
- the The element v 0 stored in the encryption parameter storage unit as the element s and the element k calculated by the pairing value calculation unit as the element h are input, and whether or not the verification is successful is determined.
- the decrypted text generation unit calculates the pairing value calculation unit using the processing device when the verification device determines that both the first verification result and the second verification result are successfully verified.
- a hash value obtained by hashing the element k with a predetermined hash function H ′ is calculated as a bit string H ′ (k), and the bit string c input by the ciphertext input unit is calculated.
- a signature verification apparatus includes: A processing device for processing data, a message input unit, a signature input unit, a signature verification unit, a verification device, and a verification result output unit;
- the message input unit inputs a message using the processing device,
- the signature input unit inputs a signature for the message input by the message input unit using the processing device,
- the signature verification unit uses the processing device to input an integer e input to the verification device based on the message input by the message input unit and the signature input by the signature input unit, and the finite group G And the element h of the finite group G is calculated,
- the verification device inputs the integer e calculated by the signature verification unit, the element s of the finite group G, and the element h of the finite group G, and determines whether the verification is successful
- the verification result output unit outputs a verification result indicating whether the verification is successful based on a result verified by the verification device using the processing device.
- the signature verification apparatus further includes a storage device for storing data, an encryption parameter storage unit, and an identification storage unit
- the encryption parameter storage unit stores the order p of the finite group G, the generator g of the finite group G, and the element X of the finite group G using the storage device
- the identification storage unit stores a bit string ID for identifying a signature device using the storage device
- the message input unit inputs the bit string M as the message using the processing device
- the signature input unit uses the processing device to generate an element R of the finite group G, an element S of the finite group G, an element Y of the finite group G, and an integer z of 1 to p ⁇ 1.
- the signature verification unit includes an integer calculation unit, a verification source calculation unit, a challenge calculation unit, and a first verification unit,
- the integer calculation unit uses the processing device to generate the element R and the bit string using a predetermined hash function H based on the element R input by the signature input unit and the bit string ID stored by the identification storage unit.
- the challenge calculation unit uses the processing device to store the bit string ID stored in the identification storage unit, the element R, element S, and element Y input by the signature input unit, and the bit string M input by the message input unit.
- the first verification unit uses the processing device to calculate the generator g stored in the cryptographic parameter storage unit, the element S, the element Y, and the integer z input from the signature input unit, and the challenge calculation unit Based on the obtained integer c, the element Y + c ⁇ S obtained by adding the element c ⁇ S obtained by adding the element S to the integer c times and the element Y is obtained as the element z ⁇ g obtained by adding the element g to the integer z times.
- the verification apparatus stores the order p stored by the encryption parameter storage unit as the order p, the integer h calculated by the integer calculation unit as the integer e, and the encryption parameter storage unit stored as the element s.
- the verification result output unit uses the processing device to perform the first verification based on the first verification result verified by the first verification unit and the second verification result verified by the verification device. When both the result and the second verification result are determined to be successful, a verification result indicating that the verification is successful is output.
- the authentication apparatus is A processing device that processes data, a transmitting device that transmits data, a receiving device that receives data, an authentication request receiving unit, a question transmitting unit, an answer receiving unit, a signature verification unit, a verification device, and an authentication A result output unit,
- the authentication request receiving unit receives an authentication request message using the receiving device,
- the question transmitter uses the transmitter to transmit a question message as a response to the authentication request message received by the authentication request receiver.
- the answer receiving unit receives an answer message to the transmitted question message using the receiving device
- the signature verification unit uses the processing device to input an integer e that is input to the verification device based on the authentication request message received by the authentication request reception unit and the response message received by the response reception unit; Calculating an element s of the finite group G and an element h of the finite group G;
- the verification device inputs the integer e calculated by the signature verification unit, the element s of the finite group G, and the element h of the finite group G, and determines whether the verification is successful
- the authentication result output unit outputs an authentication result indicating whether or not the authentication is successful based on a result verified by the verification device using the processing device.
- the authentication device further includes a storage device for storing data, an encryption parameter storage unit, an identification storage unit, and a challenge generation unit,
- the encryption parameter storage unit stores the order p of the finite group G, the generator g of the finite group G, and the element X of the finite group G using the storage device
- the identification storage unit uses the storage device to store a bit string ID that identifies the proving device
- the authentication request receiving unit receives the element R of the finite group G, the element S of the finite group G, and the element Y of the finite group from the proof device as the authentication request message using the receiving device.
- the challenge generation unit randomly generates an integer c of 1 or more and p-1 or less using the processing device
- the question transmission unit transmits the integer c generated by the challenge generation unit as the question message to the certification device using the transmission device
- the answer receiving unit receives an integer z of 1 or more and p-1 or less as the answer message from the proving apparatus using the receiving apparatus
- the signature verification unit includes an integer calculation unit, a verification source calculation unit, and a first verification unit,
- the integer calculation unit uses the processing device to generate the R and the R using a predetermined hash function H based on the element R received by the authentication request receiving unit and the bit string ID stored by the identification storage unit.
- the first verification unit uses the processing device to generate the source g stored in the encryption parameter storage unit, the source S and the source Y received by the authentication request reception unit, and the integer generated by the challenge generation unit c and the element Y + c ⁇ S obtained by adding the element c ⁇ S obtained by adding the element S to the integer c times and the element Y based on the integer z received by the answer receiving unit It is determined whether or not the element z ⁇ g added by integer z times is equal, and when the element Y + c ⁇ S and the element z ⁇ g are equal, it is determined that the verification is successful, and the first verification result
- the verification apparatus stores the order p stored by the encryption parameter storage unit as the order p, the integer h calculated by the integer calculation unit as the integer e, and the encryption parameter storage unit stored as the element s.
- the authentication result output unit uses the processing device to perform the first verification based on the first verification result verified by the first verification unit and the second verification result verified by the verification device. When both the result and the second verification result determine that the verification is successful, an authentication result indicating that the authentication is successful is output.
- the cryptographic system according to the present invention includes the verification device.
- the computer program according to the present invention causes a computer having a processing device for processing data to function as the verification device.
- the verification method according to the present invention is as follows.
- the processing device inputs the order p of the finite group G and the integer e, and the integer e 1 that satisfies e 1 ⁇ e ⁇ e 2 (mod p) based on the input order p and the integer e.
- Embodiment 1 FIG. The first embodiment will be described with reference to FIGS.
- G be a finite group used by the cryptographic system.
- operations in the finite group G are described additively. This is for convenience of explanation, and does not exclude groups in which group operations are described in a multiplicative manner.
- the order p of the finite group G is assumed to be a prime number. Therefore, the finite group G is a cyclic group.
- FIG. 1 is a block configuration diagram showing an example of a functional block configuration of the ciphertext decryption apparatus 200 in this embodiment.
- the ciphertext decryption apparatus 200 inputs a ciphertext, decrypts the input ciphertext, and generates a decrypted text.
- the ciphertext decryption apparatus 200 includes a key storage unit 210, a ciphertext input unit 220, a ciphertext verification unit 230, a verification device 100, and a decrypted text generation unit 260.
- the key storage unit 210 stores a key (secret key) for decrypting the ciphertext.
- the ciphertext input unit 220 inputs a ciphertext.
- the ciphertext verification unit 230 is a value necessary for verifying the ciphertext input by the ciphertext input unit 220 based on the key stored by the key storage unit 210 and the ciphertext input by the ciphertext input unit 220. Is calculated.
- the verification device 100 verifies the ciphertext input by the ciphertext input unit 220 based on the value calculated by the ciphertext verification unit 230.
- the decrypted text generation unit 260 generates a decrypted text by decrypting the cipher text input by the cipher text input unit 220 with the key stored in the key storage unit 210.
- An unauthorized person may input a ciphertext into the ciphertext decryption apparatus 200 and analyze the decrypted text generated by the ciphertext decryption apparatus 200 to obtain a clue to decrypt the regular ciphertext. is there.
- the ciphertext decryption apparatus 200 prevents a fraudulent person from being given a clue to decrypt a legitimate ciphertext by generating the decrypted text only when the verification of the consistency of the ciphertext is successful and the verification is successful.
- FIG. 2 is a diagram showing an example of the appearance of the ciphertext decryption apparatus 200 in this embodiment.
- the ciphertext decryption apparatus 200 includes a system unit 910, a display device 901 having a CRT (Cathode / Ray / Tube) or LCD (liquid crystal) display screen, a keyboard 902 (Key / Board: K / B), a mouse 903, an FDD 904 ( (Flexible / Disk / Drive), compact disk device 905 (CDD), printer device 906, scanner device 907, and other hardware resources, which are connected by cables and signal lines.
- the system unit 910 is a computer, and is connected to the facsimile machine 932 and the telephone 931 with a cable, and is connected to the Internet 940 via a local area network 942 (LAN) and a gateway 941.
- LAN local area network 942
- FIG. 3 is a diagram illustrating an example of hardware resources of the ciphertext decryption apparatus 200 according to this embodiment.
- the ciphertext decryption apparatus 200 includes a CPU 911 (also referred to as a central processing unit, a central processing unit, a processing unit, an arithmetic unit, a microprocessor, a microcomputer, or a processor) that executes a program.
- the CPU 911 is connected to a ROM 913, a RAM 914, a communication device 915, a display device 901, a keyboard 902, a mouse 903, an FDD 904, a CDD 905, a printer device 906, a scanner device 907, and a magnetic disk device 920 via a bus 912, and these hardware components. Control the device.
- a storage device such as an optical disk device or a memory card read / write device may be used.
- the RAM 914 is an example of a volatile memory.
- the storage media of the ROM 913, the FDD 904, the CDD 905, and the magnetic disk device 920 are an example of a nonvolatile memory. These are examples of a storage device or a storage unit.
- a communication device 915, a keyboard 902, a scanner device 907, an FDD 904, and the like are examples of an input unit and an input device. Further, the communication device 915, the display device 901, the printer device 906, and the like are examples of an output unit and an output device.
- the communication device 915 is connected to a facsimile machine 932, a telephone 931, a LAN 942, and the like.
- the communication device 915 is not limited to the LAN 942, and may be connected to the Internet 940, a WAN (wide area network) such as ISDN, or the like.
- a WAN wide area network
- the gateway 941 is unnecessary.
- the magnetic disk device 920 stores an operating system 921 (OS), a window system 922, a program group 923, and a file group 924.
- the programs in the program group 923 are executed by the CPU 911, the operating system 921, and the window system 922.
- the program group 923 stores a program for executing a function described as “unit” in the description of the embodiment described below.
- the program is read and executed by the CPU 911.
- the file group 924 includes information, data, signal values, variable values, and parameters that are described as “determination results”, “calculation results of”, and “processing results of” in the description of the embodiments described below.
- the “ ⁇ file” and “ ⁇ database” are stored in a recording medium such as a disk or a memory.
- Information, data, signal values, variable values, and parameters stored in a storage medium such as a disk or memory are read out to the main memory or cache memory by the CPU 911 via a read / write circuit, and extracted, searched, referenced, compared, Used for CPU operations such as calculation, calculation, processing, output, printing, and display.
- Information, data, signal values, variable values, and parameters are temporarily stored in the main memory, cache memory, and buffer memory during the CPU operations of extraction, search, reference, comparison, operation, calculation, processing, output, printing, and display. Is remembered.
- the arrows in the flowcharts described in the following description of the embodiments mainly indicate input / output of data and signals.
- the data and signal values are the RAM 914 memory, the FDD 904 flexible disk, the CDD 905 compact disk, and the magnetic field.
- the data is recorded on a recording medium such as a magnetic disk of the disk device 920, another optical disk, a mini disk, or a DVD (Digital Versatile Disk).
- Data and signals are transmitted online via a bus 912, signal lines, cables, or other transmission media.
- what is described as “to part” in the following description of the embodiment may be “to circuit”, “to apparatus”, and “to device”, and “to step”, “to” It may be “procedure” or “processing”. That is, what is described as “ ⁇ unit” may be realized by firmware stored in the ROM 913. Alternatively, it may be implemented only by software, or only by hardware such as elements, devices, substrates, and wirings, by a combination of software and hardware, or by a combination of firmware.
- Firmware and software are stored as programs in a recording medium such as a magnetic disk, a flexible disk, an optical disk, a compact disk, a mini disk, and a DVD.
- the program is read by the CPU 911 and executed by the CPU 911. In other words, the program causes the computer to function as “ ⁇ unit” described below. Alternatively, it causes the computer to execute the procedures and methods of “to part” described below.
- FIG. 4 is a block configuration diagram showing an example of the configuration of the internal blocks of the verification apparatus 100 in this embodiment.
- the verification apparatus 100 includes an integer dividing unit 110, a verification value calculation unit 130, and a verification determination unit 150.
- the integer dividing unit 110 inputs the order p of the finite group G and the integer e, and calculates two integers e 1 and e 2 .
- the verification value calculation unit 130 uses the CPU 911 to calculate the element a of the finite group G based on the element s and element h of the finite group G and the integer e 1 and integer e 2 calculated by the integer dividing unit 110. To do.
- the integer division unit 110 uses the CPU 911 to calculate two integers e 1 and e 2 based on the input order p and integer e.
- the integer dividing unit 110 calculates an integer e 1 and an integer e 2 that satisfy the conditions of e 1 ⁇ e ⁇ e 2 (mod p),
- the verification determination unit 150 uses the CPU 911 to describe the element a calculated by the verification value calculation unit 130 in the verification value calculation process S702 as a unit element of the finite group G (hereinafter “O”). ).
- the process proceeds to the success determination process S704. If it is determined that the element a is not the unit element O, the process proceeds to a failure determination process S705.
- the verification determination unit 150 determines that the verification is successful using the CPU 911, and ends the verification process.
- failure determination processing S705 the verification determination unit 150 determines that the charter has failed using the CPU 911, and ends the verification processing.
- FIG. 6 is a detailed block diagram showing an example of the configuration of the internal blocks of the integer dividing unit 110 in this embodiment.
- the integer dividing unit 110 calculates an integer e 1 and an integer e 2 that satisfy e 1 ⁇ e ⁇ e 2 (mod p). That is, the integer partitioning unit 110, the remainder obtained by dividing the product of the integer e 1 and integer e in order p is, to be equal to an integer e 2, defining the integer e 1 and integer e 2.
- the integer dividing unit 110 determines that the absolute value of the integer e 1 and the integer e 2 satisfying e 1 ⁇ e ⁇ e 2 (mod p) is an order p.
- An integer e 1 smaller than the square root of and an integer e 2 that is an integer of 1 or more smaller than the square root of the order p are selected.
- the integer dividing unit 110 includes an order input unit 111, an integer input unit 112, an initial value setting unit 113, a first residue storage unit 114, a second residue storage unit 115, a suitability determination unit 116, a third residue calculation unit 117, A first coefficient storage unit 124, a second coefficient storage unit 125, a quotient calculation unit 126, a third coefficient calculation unit 127, and a divided integer output unit 129 are included.
- the order input unit 111 uses the CPU 911 to input data representing the order p of the finite group G.
- the order input unit 111 uses the RAM 914 to store data representing the input order p.
- the integer input unit 112 uses the CPU 911 to input data representing the integer e.
- the integer input unit 112 uses the RAM 914 to store data representing the input integer e.
- the first remainder storage unit 114 using the RAM 914, stores data representing the integer v 1.
- Second remainder storage unit 115 using the RAM 914, stores data representing the integer v 2.
- the first coefficient storage unit 124 stores data representing the integer t 1 using the RAM 914.
- the second coefficient storage unit 125 using the RAM 914, stores data representing the integer t 2.
- the initial value setting unit 113 sets initial values in the first remainder storage unit 114, the second remainder storage unit 115, the first coefficient storage unit 124, and the second coefficient storage unit 125.
- the initial value setting unit 113 uses the CPU 911 to input data representing the order p stored in the order input unit 111 and data representing the integer e stored in the integer input unit 112.
- the initial value setting unit 113 using the CPU 911, the data representing the order p input and stored in the first remainder storage unit 114 as data representing the integer v 1.
- the initial value setting unit 113, using the CPU 911, the data representing the integer e input, is stored in the second remainder storage unit 115 as data representing the integer v 2.
- the initial value setting unit 113 using the CPU 911, and stores the data representing 0 as the data representing the integer t 1 in the first coefficient storage unit 124.
- the initial value setting unit 113 using the CPU 911, and stores the data representing 1 as the data representing the integer t 2 the second coefficient storage unit 125.
- Conformity judging unit 116 using the CPU 911, the data representing the order p of position number input unit 111 and stored by the second remainder storage unit 115 inputs the data representing the integer v 2.
- the compatibility determination unit 116 uses the CPU 911 to determine whether or not the output condition is satisfied based on the order p and the integer v 2 represented by the input data. Specifically, the suitability determination unit 116 uses the CPU 911 to compare the integer v 2 and the square root of the order p, and when the integer v 2 is smaller than the square root of the order p, the output condition Is determined to be satisfied. Note that the suitability determination unit 116 may use the CPU 911 in advance to calculate the maximum integer that does not exceed the square root of the order p.
- the suitability determination unit 116 uses the CPU 911 in advance to obtain the number of bits of data representing the order p, and divides the obtained number of bits by 2 (rounds up if not divisible) to obtain the square root bit number. .
- the number of square root bits represents the number of digits in the binary notation of an integer not exceeding the square root of the order p.
- Conformity judging unit 116 uses the RAM 914, stores the number of the square root of bits calculated using the CPU 911, calculates the number of bits of the data representing the integer v 2.
- the compatibility determination unit 116 uses the CPU 911 to compare the calculated number of bits with the stored number of square root bits, and when the number of bits of data representing the integer v 2 is equal to or less than the number of square root bits, the integer v 2 is considered to be smaller than the square root of the order p, and it is determined that the output condition is satisfied.
- the third residue calculation unit 117 uses the CPU 911 to store data representing the integer v 1 stored in the first residue storage unit 114 and the second residue. Data representing the integer v 2 stored in the storage unit 115 is input. The third remainder calculating unit 117 calculates a remainder obtained by dividing the integer v 1 by the integer v 2 based on the integer v 1 and the integer v 2 represented by the input data, and sets it as the integer v 3 .
- the quotient calculation unit 126 uses the CPU 911 to store the data representing the integer v 1 stored in the first remainder storage unit 114 and the second remainder. Data representing the integer v 2 stored in the storage unit 115 is input. The quotient calculation unit 126 calculates the maximum integer not exceeding the quotient obtained by dividing the integer v 1 by the integer v 2 based on the integer v 1 and the integer v 2 represented by the input data, and sets it as the integer q. Using the RAM 914, the quotient calculation unit 126 stores data representing the calculated integer q.
- the third coefficient calculation unit 127 uses the CPU 911 to store data representing the integer t 1 stored in the first coefficient storage unit 124, data representing the integer t 2 stored in the second coefficient storage unit 125, and a quotient calculation unit. Data representing the integer q calculated by 126 is input.
- the integer v 3 is a remainder obtained by dividing the integer v 1 by the integer v 2 . Further, if v 1 > v 2 > 0, q ⁇ 1, so t 1 ⁇ 0 and t 2 > 0, If t 1 > 0, t 2 ⁇ 0, Therefore, in either case, Therefore,
- the third remainder calculation unit 117 by using the CPU 911, the data representing the integer v 2 entered, is stored in the first remainder storage unit 114 as data representing the integer v 1.
- the third remainder calculation unit 117 by using the CPU 911, based on the calculated integer v 3, the data representing the integer v 3, is stored in the second remainder storage unit 115 as data representing the integer v 2.
- the third coefficient calculation unit 127 by using the CPU 911, the data representing the integer t 2 entered, is stored in the first coefficient storage unit 124 as data representing the integer t 1.
- the third coefficient calculation unit 127 by using the CPU 911, based on the calculated integer t 3, the data representing the integer t 3, is stored in the second coefficient storage unit 125 as data representing the integer t 2.
- Equations 1 to 5 also hold between the integer t 1 and the integer t 2 .
- the divided integer output unit 129 uses the CPU 911 to store the data representing the integer v 2 stored in the second remainder storage unit 115 and the second coefficient storage unit 125. There and the data representing the integer t 2 stored. Dividing the integer output unit 129, using the CPU 911, the data representing the integer t 2 input, and outputs it as data representing the integer e 1. Moreover, dividing the integer output unit 129, using the CPU 911, the data representing the integer v 2 input, and outputs it as data representing the integer e 2.
- v 2 eventually becomes the greatest common divisor of the order p and the integer e. Since the order p is a prime number, the greatest common divisor of the order p and the integer e is 1. Therefore, 0 ⁇ v 2 ⁇ p is always satisfied, and the divided integer output unit 129 outputs data representing the integer e 1 and the integer e 2 .
- FIG. 7 is a flowchart showing an example of the flow of integer dividing processing in which the integer dividing unit 110 in this embodiment divides the integer e.
- the initial value setting unit 113 uses the CPU 911 to set initial values in the first remainder storage unit 114, the second remainder storage unit 115, the first coefficient storage unit 124, and the second coefficient storage unit 125.
- the first remainder storage unit 114 using the RAM 914, stores the order p of the position number of input unit 111 and input as an integer v 1.
- Second remainder storage unit 115 using the RAM 914, to store the integer e integer input unit 112 inputs the integer v 2.
- the first coefficient storage unit 124 stores 0 as the integer t 1 using the RAM 914.
- the second coefficient storage unit 125 stores 1 as an integer t 2 using the RAM 914.
- conformity judging step S712 the conformity judging unit 116, using the CPU 911, or an integer v 2 of the second remainder storage unit 115 is stored is smaller than the square root of the order p of the position number of input unit 111 and inputs whether Determine whether. If an integer v 2 is determined to be smaller than the square root of the order p, the process proceeds to divide integer output step S718. If an integer v 2 is determined to be greater than the square root of the order p, the process proceeds to the remainder calculation step S713.
- the third remainder calculation unit 117 uses the CPU 911 to divide the remainder obtained by dividing the integer v 1 stored in the first remainder storage unit 114 by the integer v 2 stored in the second remainder storage unit 115. Calculate the integer v 3 .
- the quotient calculation unit 126 uses the CPU 911 to not exceed the quotient obtained by dividing the integer v 1 stored in the first remainder storage unit 114 by the integer v 2 stored in the second remainder storage unit 115.
- the maximum integer is calculated and set as the integer q.
- the third coefficient calculation unit 127 uses the CPU 911 to convert the integer t 2 stored in the second coefficient storage unit 125 from the integer t 1 stored in the first coefficient storage unit 124 and the quotient calculation step S714. in calculates the integer obtained by subtracting the product of the integer q quotient calculation unit 126 has calculated, and the integer t 3.
- the third residue calculation unit 117 updates the first residue storage unit 114 and the second residue storage unit 115 using the CPU 911.
- the first remainder storage unit 114 uses the RAM 914 to store the integer v 2 stored in the second remainder storage unit 115 as the integer v 1 .
- Second remainder storage unit 115, using the RAM 914, the third remainder calculation unit 117 in the remainder calculation step S713 is an integer v 3 calculated and stored as an integer v 2.
- the third coefficient calculation unit 127 uses the CPU 911 to update the first coefficient storage unit 124 and the second coefficient storage unit 125.
- split integer output step S718 dividing the integer output unit 129, using the CPU 911, the integer t 2 of the second coefficient storage unit 125 is stored, and outputs the integer e 1. Dividing the integer output unit 129, using the CPU 911, the integer v 2 of the second remainder storage unit 115 is stored, and outputs the integer e 2. Thereafter, the integer division process is terminated.
- the integer e 1 and the integer e 2 output from the divided integer output unit 129 are expressed by the following equation 2.
- the integer dividing unit 110 uses the extended Euclidean algorithm to obtain integers satisfying e 1 ⁇ e ⁇ e 2 (mod p),
- the verification value calculation unit 130 includes a divided integer input unit 131, an original input unit 132, an index calculation unit 133, a table generation unit 134, a table storage unit 135, a verification initial value setting unit 141, a multiplication result storage unit 142, and a two-basis addition. Section 143, addition result storage section 144, multiplication section 145, and verification value output section 149.
- the divided integer input unit 131 uses the CPU 911 to input data representing the integer e 1 and the integer e 2 output from the integer dividing unit 110.
- the divided integer input unit 131 uses the RAM 914 to store data representing the input integer e 1 and integer e 2 .
- the element input unit 132 uses the CPU 911 to input data representing elements s and elements h of the finite group G.
- the original input unit 132 uses the RAM 914 to store data representing the input element s and element h.
- Index calculating unit 133 using the CPU 911, dividing the integer input unit 131 inputs the data representing the integer e 1 and integer e 2 and stored.
- the index calculation unit 133 uses the CPU 911 to determine whether the integer e 1 is a positive integer or a negative integer.
- the index calculation unit 133 uses the RAM 914 to store data representing the determination result. If the CPU 911 determines that the integer e 1 is a negative integer, the index calculation unit 133 inverts the sign of the integer e 1 to make it a positive integer. Based on the absolute value of the integer e 1 calculated by the CPU 911, the index calculation unit 133 uses a set of integers (e 1, i ) (each digit representing the absolute value of the integer e 1 in n-ary notation).
- i is an integer from 0 to k ⁇ 1, and n is an integer greater than or equal to 2). That is, the index calculation unit 133 uses the CPU 911 to calculate an integer set (e 1, i ) that satisfies the following conditions. Similarly, the index calculation unit 133, using the CPU 911, based on the integer e 2, and calculates the integer which is the digit representing an integer e 2 in n-ary set (e 2, i). That is,
- the index calculation unit 133 uses the CPU 911 to decompose the data representing the absolute value of the integer e 1 and the integer e 2 for each bit to obtain (e 1, i ), ( e2 , i ).
- the index calculation unit 133 decomposes the data representing the absolute value of the integer e 1 and the integer e 2 into two bits to obtain (e 1, i ) and (e 2, i ). .
- the index calculation unit 133 uses the RAM 914 to store data representing the calculated set of integers (e 1, i ) and (e 2, i ).
- the table generation unit 134 calculates four elements p 0,0 , p 1,0 , p 0,1 , p 1,1 . Note that since the element p 0,0 is always a unit element, the table generation unit 134 may calculate only the other three elements.
- the table storage unit 135 uses the RAM 914 to store data representing n ⁇ n elements px, y calculated by the table generation unit 134.
- the multiplication result storage unit 142 uses the RAM 914 to store data representing the element a ′ of the finite group G, which is a value in the middle of calculating the element a of the finite group G.
- the addition result storage unit 144 uses the RAM 914 to store data representing the element a ′′ of the finite group G, which is a value in the middle of calculating the element a of the finite group G.
- the verification initial value setting unit 141 causes the multiplication result storage unit 142 to store data representing the unit element of the finite group G as data representing the element a ′.
- the two-basis addition unit 143 uses the CPU 911 to input the data representing the set of integers (e 1, i ) and (e 2, i ) stored in the index calculation unit 133 one by one from the largest i To do.
- the two-basis addition unit 143 uses the CPU 911, the two-basis addition unit 143 inputs data representing the element a ′ of the finite group G stored in the multiplication result storage unit 142. Double-base addition unit 143, using the CPU 911, based on a finite group G represented by the input data 'and, based on P i based on the original a' and source the sum of the original P i a '+ P i Is calculated. Using the CPU 911, the two-basis addition unit 143 causes the addition result storage unit 144 to store data representing the calculated element a ′ + P i as data representing the element a ′′.
- the multiplication unit 145 uses the CPU 911 to input data representing the element a ′′ of the finite group G stored by the addition result storage unit 144.
- the multiplication unit 145 uses the CPU 911 to input the element represented by the input data.
- the multiplication unit 145 uses the CPU 911, the multiplication unit 145 causes the multiplication result storage unit 142 to store data representing the calculated element n ⁇ a ′′ as data representing the element a ′.
- the verification value output unit 149 uses the CPU 911 to add the addition result storage unit.
- the data representing the element a ′′ of the finite group G stored in 144 is input.
- the verification value output unit 149 outputs the data representing the element a ′′ input as data representing the element a.
- FIG. 9 is a flowchart showing an example of the flow of verification value calculation processing in which the verification value calculation unit 130 calculates the element a of the finite group G in this embodiment.
- the index calculation unit 133 uses the CPU 911 to calculate integers e 1 and sgn based on the integer e 1 input by the divided integer input unit 131.
- Index calculating unit 133 using the CPU 911, if the integer e 1 is positive, integer e 1, sgn was to 1, if the integer e 2 is negative, integer e 1, sgn to -1.
- the index calculation unit 133 uses the CPU 911 to calculate k integers e 1, i (where i is an integer from 0 to k ⁇ 1) based on the integer e 1 input by the divided integer input unit 131. calculate.
- the index calculation unit 133 uses the CPU 911 to calculate a remainder obtained by dividing a maximum integer not exceeding a quotient obtained by dividing the absolute value of the integer e 1 by n to the power of i, and e 1, i and To do.
- the index calculation unit 133 uses k integers e 2, i (where i is an integer from 0 to k ⁇ 1) based on the integer e 2 input by the divided integer input unit 131 using the CPU 911. ) Is calculated.
- the index calculation unit 133 by using the CPU 911, the maximum integer not exceeding a quotient obtained by dividing the integer e 2, i square of n by calculating the modulo n, and e 2, i.
- the table generation unit 134 uses the CPU 911 to convert the elements s and h input by the element input unit 132 and the integers e 1 and sgn calculated by the index calculation unit 133 in the index calculation step S721. Based on this, the element p x, y of n 2 finite groups G (where x and y are integers from 0 to n ⁇ 1) is calculated. Using the CPU 911, the table generation unit 134 calculates an element obtained by subtracting the element obtained by adding the element s y times from the element obtained by adding the element h e e , sgn ⁇ x times , and obtains the element p x, y . . The table storage unit 135 uses the RAM 914 to store n 2 elements px, y calculated by the table generation unit 134.
- the verification initial value setting unit 141 uses the CPU 911 to initialize the multiplication result storage unit 142.
- the multiplication result storage unit 142 stores the unit element of the finite group G as the element a ′ using the RAM 914.
- the two-basis addition unit 143 uses the RAM 914 to store an integer obtained by subtracting 1 from the integer k as the integer j.
- the two-basis addition unit 143 uses the CPU 911 to obtain the elements p x, y of the n 2 finite groups G stored in the table storage unit 135 based on the acquired integers e 1, i and integers e 2, i.
- the two-basis addition unit 143 uses the CPU 911 to calculate the element a ′ by performing an operation on the finite group G based on the element a ′ of the finite group G stored in the multiplication result storage unit 142 and the acquired element P i. calculating the original a '+ P i obtained by adding the original P i and.
- the addition result storage unit 144 stores the element a ′ + P i calculated by the two-basis addition unit 143 as the element a ′′.
- the two-basis addition unit 143 uses the CPU 911 to calculate an integer j-1 obtained by subtracting 1 from the stored integer j.
- the two-basis addition unit 143 stores the integer j ⁇ 1 calculated using the RAM 914 as the integer j.
- the process proceeds to the multiplication step S727.
- the process proceeds to the verification value output step S728.
- the multiplication unit 145 uses the CPU 911 to add the element a ′′ n times by the calculation in the finite group G based on the element a ′′ of the finite group G stored in the addition result storage unit 144.
- the calculated element n ⁇ a ′′ is calculated.
- the multiplication result storage unit 142 stores the element n ⁇ a ′′ calculated by the multiplication unit 145 as the element a ′. Thereafter, the process returns to the two-basis addition step S725.
- the verification value output unit 149 uses the CPU 911 to output the element a ′′ of the finite group G stored in the addition result storage unit 144 as the element a. Thereafter, the verification value calculation process ends.
- the verification value calculation unit 130 calculates the element a using the two-basis scalar multiplication in the additive group (or the two-basis power multiplication in the multiplicative group).
- T is the time taken to perform one group operation of the finite group G.
- the time required for other calculations and data acquisition is much shorter than T, and is ignored.
- the table generation unit 134 performs group operation n-2 times to calculate the element p 0, y (y ⁇ 0,1) and the element p x, 0 (x ⁇ 0,1). n-2 times group operation in order to calculate, based on p x, y (x ⁇ 0 , y ⁇ 0) the group operation for calculating the (n-1) so twice, according to the table generating step S722
- the time is (n 2 -3) T.
- the two-base count unit 143 performs a group operation once to calculate the element a ′′.
- the time required for the two-base count process S725 is KT in all.
- k ′ be the number of digits when the integer e is expressed in n-ary.
- the calculation procedure is the same as the verification value calculation process.
- n elements x ⁇ s (x is an integer not less than 0 and not more than n ⁇ 1) are stored in a table calculated in advance.
- the time taken to generate the table is (n ⁇ 2) T.
- the total time required for addition is k′T.
- e is an integer between 1 and p ⁇ 1
- k ′ is approximately equal in probability to the number of digits when p is expressed in n-ary.
- the absolute value of e 1 and e 2 are integers greater than or equal to 1 and less than ⁇ p
- k is approximately equal in number to the number of digits when ⁇ p is expressed in n-ary
- k ′ About half.
- the verification device 100 in this embodiment includes a processing device (CPU 911) that processes data, an integer dividing unit 110, a verification value calculation unit 130, and a verification determination unit 150.
- the integer dividing unit 110 inputs the order p of the finite group G and the integer e using the processing device (CPU 911), and e 1 ⁇ e based on the input order p and the integer e.
- An integer e 1 and an integer e 2 satisfying ⁇ e 2 (mod p) are calculated.
- the verification determination unit 150 uses the processing device (CPU 911) to verify successfully when the element a is a unit element of the finite group G based on the element a calculated by the verification value calculation unit 130. Is determined.
- the integer dividing unit 110 in this embodiment uses the processing device (CPU 911) to make the absolute value of the integer e 1 smaller than the square root of the order p, and the integer e 2 becomes the order p.
- An integer e 1 and an integer e 2 satisfying the condition that the value is smaller than the square root of are calculated.
- the absolute value of the integer e 1 is smaller than the square root of the order p, and satisfies the condition integer e 1 of the integer e 2 is smaller than the square root of the order p Since the integer e 2 and the integer dividing unit 110 calculate, the verification value calculating unit 130 can shorten the time required for the process of calculating the element a.
- the verification device 100 in this embodiment further includes a storage device (such as a RAM 914 and a magnetic disk device 920) that stores data.
- the integer dividing unit 110 includes a first residue storage unit 114, a second residue storage unit 115, an initial value setting unit 113, a suitability determination unit 116, a third residue calculation unit 117, and a divided integer output unit 129. And have.
- the first remainder storage unit 114 using the storage device (RAM 914), and stores the integer v 1.
- the second remainder storage unit 115 using the storage device (RAM 914), and stores the integer v 2.
- the initial value setting unit 113 using the processing device (CPU 911), the order p is stored in the first remainder storage unit 114 as the integer v 1, the first and the integer e as the integer v 2 It is stored in the second remainder storage unit 115.
- the conformity judging unit 116 uses the processing device (CPU 911), determining an integer v 2 of the second remainder storage unit 115 is stored is smaller than the square root of the position number p, satisfying the output condition To do.
- the third remainder calculation unit 117 uses the integer v 1 stored in the first remainder storage unit 114 when the compatibility determination unit 116 does not determine that the output condition is satisfied using the processing device (CPU 911).
- the remainder obtained by dividing the integer v 1 by the integer v 2 is calculated as an integer v 3, and the second residue storage unit 115
- the stored integer v 2 is stored as the integer v 1 in the first remainder storage unit 114
- the calculated integer v 3 is stored as the integer v 2 in the second residue storage unit 115.
- the divided integer output unit 129 uses the processing device (CPU 911) to determine the integer v 2 stored in the second remainder storage unit 115 when the compatibility determination unit 116 determines that the output condition is satisfied. and outputs as an integer e 2.
- ⁇ p, 0 ⁇ e 2 ⁇ p is reduced for a short time. There is an effect that it can be calculated by.
- the integer dividing unit 110 in this embodiment further includes a first coefficient storage unit 124, a second coefficient storage unit 125, a quotient calculation unit 126, and a third coefficient calculation unit 127.
- the first coefficient storage unit 124 stores the integer t 1 using the storage device (RAM 914).
- the second coefficient storage unit 125 using the storage device (RAM 914), and stores the integer t 2.
- the initial value setting unit 113 further stores 0 as the integer t 1 in the first coefficient storage unit 124 and 1 as the integer t 2 using the processing device (CPU 911).
- the processing device CPU 911
- the quotient calculation unit 126 uses the processing device (CPU 911).
- a maximum integer not exceeding a quotient obtained by dividing the integer v 1 by the integer v 2 is calculated as an integer q.
- the third coefficient calculation unit 127 uses the processing device (CPU 911) and the integer t 1 stored in the first coefficient storage unit 124 when the compatibility determination unit 116 does not determine that the output condition is satisfied.
- the product of the integer t 2 and the integer q is subtracted from the integer t 1 based on the integer t 2 stored in the second coefficient storage unit 125 and the integer q calculated by the quotient calculation unit 126.
- the divided integer output unit 129 further uses the processing device (CPU 911) to store the integer t 2 stored in the second coefficient storage unit 125 when the compatibility determination unit 116 determines that the output condition is satisfied. and outputs as the integer e 1.
- ⁇ p, 0 ⁇ e 2 ⁇ p is reduced for a short time. There is an effect that it can be calculated by.
- the verification value calculation unit 130 in this embodiment uses the processing device (CPU 911) to calculate ⁇ (n i ⁇ P i ) (where n is a predetermined integer equal to or greater than 2 and i is an integer equal to or greater than 0 and equal to or less than k.
- K is the absolute value of the integer e 1 and the maximum value of the number of digits when the integer e 2 is expressed in n-ary notation
- P i is an element of the finite group G
- P i e 1, sgn ⁇ e 1, i ⁇ h ⁇ e 2, i ⁇ s , e 1, sgn is 1 or ⁇ 1
- e 1, i and e 2 i are integers of 0 to n ⁇ 1
- e 1 e 1, sgn ⁇ ⁇ (n i ⁇ e 1, i )
- the time taken for the verification value calculation unit 130 to calculate the element a is the number of digits when the absolute value of the integer e 1 and the integer e 2 are expressed in n-ary notation. Since it is proportional to k, the time required to calculate the element a can be shortened.
- the ciphertext decryption apparatus 200 in this embodiment includes a storage device (such as a RAM 914 and a magnetic disk device 920) that stores data, a processing device (such as a CPU 911) that processes data, a key storage unit 210, and a ciphertext input.
- a storage device such as a RAM 914 and a magnetic disk device 920
- a processing device such as a CPU 911
- a key storage unit 210 ciphertext input.
- the key storage unit 210 stores a key for decrypting the ciphertext using the storage device.
- the ciphertext input unit 220 inputs ciphertext using the processing device.
- the ciphertext verification unit 230 uses the processing device to input an integer to be input to the verification device 100 based on the key stored in the key storage unit 210 and the ciphertext input by the ciphertext input unit 220. e, an element s of the finite group G, and an element h of the finite group G are calculated.
- the verification apparatus 100 inputs the integer e calculated by the ciphertext verification unit 230, the element s of the finite group G, and the element h of the finite group G, and determines whether the verification is successful.
- the decrypted text generation unit 260 uses the key stored in the key storage unit 210 to store the ciphertext input by the ciphertext input unit 220. Decrypt to generate a decrypted text.
- the verification apparatus 100 in this embodiment can be realized by causing a computer to execute a computer program that causes the computer to function as the verification apparatus 100.
- the verification method in which the verification apparatus 100 according to this embodiment verifies the consistency includes the following steps.
- the processor (CPU 911) inputs the order p of the finite group G and the integer e, and satisfies e 1 ⁇ e ⁇ e 2 (mod p) based on the input order p and the integer e.
- An integer e 1 and an integer e 2 are calculated.
- the processing device (CPU 911) is, the element s of the finite group G, and inputs the element h of the finite group G, based on the element s and element h input, calculated integer e 1 and the integer e 2
- the processing device (CPU 911) determines that the verification is successful when the element a is a unit element of the finite group G.
- the ciphertext decryption apparatus 200 described above is a public key encryption / decryption apparatus.
- the ciphertext decryption apparatus 200 performs exponentiation multiplication in a multiplicative group such as a group formed by integer remainder classes, or scalar multiplication in an additive group such as a group formed by points on a (super) elliptic curve. It is determined whether or not the ciphertext is correct by verifying whether the element s e obtained by multiplying s by e or the element e ⁇ s obtained by adding the element s of the additive group e times matches the known element h. It has a ciphertext validity verification device (verification device 100).
- the ciphertext validity verification device (verification device 100)
- a device for dividing the exponent part (integer e); Divided exponents (integer e 1 and integer e 2 ) were used to perform a two-basis exponent power multiplication in a multiplicative group, or a two-basis scalar multiplication in an additive group such as a (hyper) elliptic point group.
- a device for calculating a value (h e1 -s e2 or e 1 ⁇ he 2 ⁇ s);
- An apparatus (verification determination unit 150) for determining whether the value is equal to the unit element 1 of the multiplicative group or the unit element 0 of the additive group.
- the integer dividing unit 110 described above receives the exponent (integer) e and the group number p of the multiplicative group or additive group used in encryption, and has a bit length that is half the bit length of the group number p. It is a computing device that calculates two integers e 1 and e 2 (where e 1 ⁇ e ⁇ e 2 (mod p)).
- the integer dividing unit 110 described above divides the exponent part by calculating the extended Euclidean algorithm.
- the integer dividing unit 110 described above performs the repeated division of two integers. Integer v 2 for the division, and an integer v 1 is divided, respectively, computing device an integer v 2 for the division of the remainder v 3, and before the step of dividing the previous steps (third remainder calculation unit 117) , Certain number of the remainder v 2 of the division result of each step ( ⁇ p) above, and a computing device (conformity judging unit 116) determines that or at a certain number ( ⁇ p) below.
- the integer dividing unit 110 may calculate the integers e 1 and e 2 by the following procedure, for example.
- the integer dividing unit 110 uses the CPU 911 to input a positive integer p, an integer e where 1 ⁇ e ⁇ p, and a square root ⁇ p of p.
- the integer dividing unit 110 uses the RAM 914 to store u 1 ⁇ 1, v 1 ⁇ p, u 2 ⁇ 0, v 2 ⁇ e as initial values.
- the integer dividing unit 110 uses the CPU 911 to check whether v 2 ⁇ p.
- the integer dividing unit 110 uses the CPU 911 to perform q ⁇ v 1 / v 2 (rounded down), v 3 ⁇ v 1 mod v 2 , u 3 ⁇ u 1 ⁇ q ⁇ u 2.
- the process returns to checking whether v 2 ⁇ p. If v 2 > ⁇ p, the same calculation is repeated.
- the integer dividing unit 110 uses the CPU 911 to calculate e 1 ⁇ (v 2 ⁇ u 2 ⁇ p) / v 1 and set e 2 ⁇ v 2 . Finally, the integer dividing unit 110 outputs e 1 and e 2 using the CPU 911. Even in such a procedure, e 1 ⁇ e ⁇ e 2 (mod p), and the bit lengths of e 1 and e 2 are about half of the bit length of p.
- Embodiment 2 FIG. The second embodiment will be described with reference to FIGS.
- FIG. 10 is a system configuration diagram showing an example of the overall configuration of the ID-based public key encryption system 820A in this embodiment.
- the ID-based public key encryption system 820A is an encryption communication system that uses identification data such as an email address that identifies the ciphertext decryption apparatus 200A as a public key of the ciphertext decryption apparatus 200A. Since there is no need to prove the correspondence between the ciphertext decryption apparatus 200A and the public key, no public key certificate or certificate authority is required.
- the ID-based public key encryption system 820A includes an encryption parameter setting device 810A, a key generation device 300A, a ciphertext generation device 400A, and a ciphertext decryption device 200A.
- the encryption parameter setting device 810A determines encryption parameters used in the ID-based public key encryption system 820A.
- the encryption parameters determined by the encryption parameter setting device 810A are disclosed to users of the ID-based public key encryption system 820A.
- the cryptographic parameters defining the encryption parameter setting apparatus 810A for example, of order p, an additive group G 1, the original g 1 of the additive group G 1, additive group G 2, the original g 2 of the additive group G 2, the multiplicative group G T , Pairing e, hash function H 1 , hash function H 2 , hash function H 3 , hash function H 4, and the like.
- the order p is a prime number. Order of the additive group G 1 is is p.
- the element g 1 is a generator of the additive group G 1 .
- Order of the additive group G 2 is the same as p and the additive group G 1.
- the element g 2 is a generator of the additive group G 2 .
- Order of the multiplicative group G T is the same as p and the additive group G 1 and the additive group G 2.
- Pairing e is a set of the original source and additive group G 2 of the additive group G 1, a mapping which maps to the original (pairing value) of the multiplicative group G T.
- the pairing e has a bilinear shape.
- e (a ⁇ u, b ⁇ v) e (u, v) ab (where u is an element of the additive group G 1 and v is an additive group G 2 Element a and b are integers). Further, based on g 1 and pairing value e (g 1, g 2) of the original g 2 of the additive group G 2 of the additive group G 1 is not a unit of the multiplicative group G T source.
- the hash function H 1 is a hash function that generates an integer of 1 to p ⁇ 1 from a bit string of an arbitrary length.
- Hash function H 2 from the original multiplicative group G T, is a hash function that generates a bit string having a predetermined length.
- the hash function H 3 is a hash function that generates an integer of 1 to p ⁇ 1 from a bit string having a predetermined length.
- Hash function H 4 from the bit string of predetermined length, a hash function that generates a bit string having a predetermined length.
- the encryption parameter setting device 810A may not determine these encryption parameters.
- the encryption parameter setting device 810A generates a secret random number s and a public source R generated based on the secret random number s.
- the secret random number s generated by the encryption parameter setting device 810A is secretly notified to the key generation device 300A.
- the disclosure source R generated by the encryption parameter setting device 810A is disclosed to the user of the ID-based public key encryption system 820A.
- the public source R includes information on the secret random number s, but it is virtually impossible to obtain the secret random number s from the public source R. Therefore, the user of the ID-based public key cryptosystem 820A can use the secret information without knowing the secret information by calculating using the public source R.
- the key generation device 300A holds the secret random number s notified from the encryption parameter setting device 810A in a secret manner.
- the key generation device 300A generates the secret key D ID of the ciphertext decryption device 200A based on the disclosed encryption parameter, the disclosed identification data ID of the ciphertext decryption device 200A, and the stored secret random number s. .
- the secret key D ID generated by the key generation device 300A is secretly notified to the ciphertext decryption device 200A.
- the ciphertext generation apparatus 400A generates the ciphertext c and the common key K based on the disclosed encryption parameters, the disclosure source R, and the identification data ID of the ciphertext decryption apparatus 200A.
- the ciphertext generation apparatus 400A encrypts the message M with the generated common key K and generates an encrypted message CM.
- the ciphertext generation apparatus 400A transmits the generated ciphertext c and the encrypted message CM to the ciphertext decryption apparatus 200A.
- the ciphertext decryption apparatus 200A holds the secret key D ID generated by the key generation apparatus 300A in a secret key.
- the ciphertext decryption apparatus 200A receives the ciphertext c and the encrypted message CM transmitted by the ciphertext generation apparatus 400A.
- the ciphertext decryption apparatus 200A decrypts the received ciphertext c with the stored secret key D ID based on the disclosed encryption parameters, and generates the same common key K as the ciphertext generation apparatus 400A.
- the ciphertext decryption apparatus 200A decrypts the encrypted message CM using the generated common key K, and generates the same message M ′ as the message M.
- the appearance and hardware resources of the cipher parameter setting device 810A, the key generation device 300A, the ciphertext generation device 400A, and the ciphertext decryption device 200A are the same as the appearance and hardware resources of the ciphertext decryption device 200 described in the first embodiment. It is the same.
- FIG. 11 is a block configuration diagram showing an example of the configuration of a part of functional blocks of the encryption parameter setting device 810A in this embodiment.
- the encryption parameter setting device 810A includes an encryption parameter storage unit 819A, a public source generation unit 811A, a secret random number output unit 814A, and a public source output unit 815A.
- the encryption parameter storage unit 819A uses the magnetic disk device 920 to store data representing the disclosed encryption parameters.
- the disclosure source generation unit 811A generates a secret random number s and a disclosure source R based on the encryption parameter stored in the encryption parameter storage unit 819A.
- the disclosure source generation unit 811A includes a secret random number generation unit 812A and a disclosure source calculation unit 813A.
- the secret random number generation unit 812A uses the CPU 911 to input data representing the order p among the encryption parameters stored in the encryption parameter storage unit 819A. Using the CPU 911, the secret random number generation unit 812A randomly generates an integer between 1 and p ⁇ 1 based on the order p represented by the input data, and sets it as the secret random number s. Using the RAM 914, the secret random number generation unit 812A stores data representing the generated secret random number s.
- Public element calculation unit 813A using the CPU 911, the data representing the the additive group G 1 and the original g 1 among the encryption parameters encryption parameter storage unit 819A is stored, the secret random number s by the secret random number generating unit 812A is stored Enter the data to represent.
- Public element calculation unit 813A using the CPU 911, based on the additive group G 1 represented by the input data based g 1 and the secret random number s, by the operation on the additive group G 1, the original g 1 plus s times The element is calculated and set as the publication source R.
- the publication source calculation unit 813A stores data representing the calculated publication source R.
- the secret random number output unit 814A inputs data representing the secret random number s stored by the secret random number generation unit 812A. Using the CPU 911, the secret random number output unit 814A outputs data representing the input secret random number s. The secret random number s output by the secret random number output unit 814A is notified secretly to the key generation device 300A.
- the publication source output unit 815A inputs data representing the publication source R stored by the publication source calculation unit 813A.
- the publishing source output unit 815A outputs data representing the input publishing source R.
- the publisher R output by the publisher output unit 815A is disclosed to the user of the ID-based public key cryptosystem 820A.
- FIG. 12 is a block configuration diagram showing an example of a functional block configuration of the key generation device 300A in this embodiment.
- the key generation device 300A includes an encryption parameter storage unit 390A, a secret random number storage unit 330A, an identification input unit 340A, a secret key generation unit 350A, and a secret key output unit 360A.
- the encryption parameter storage unit 390A uses the magnetic disk device 920 to store data representing the disclosed encryption parameters in advance.
- the secret random number storage unit 330A stores, in a secret manner, data representing the secret random number s notified from the encryption parameter setting device 810A using a tamper-resistant storage device.
- the identification input unit 340A uses the CPU 911 to input a bit string ID having an arbitrary length, which is identification data for identifying the ciphertext decryption apparatus 200A, for the ciphertext decryption apparatus 200A to generate a secret key.
- the bit string ID is data representing a character string that is a mail address of the ciphertext decryption apparatus 200A, for example.
- the identification input unit 340A stores the input bit string ID.
- the secret key generating unit 350A based on the encryption parameter encryption parameter storage unit 390A is stored, the secret random number s by the secret random number storage unit 330A is stored, and the bit string ID that identifies the input unit 340A inputs the secret key D ID Is generated.
- the secret key generation unit 350A includes a hash value calculation unit 351A, an integer addition unit 352A, an inverse number calculation unit 353A, and a secret key calculation unit 354A.
- Hash value calculation unit 351A using the CPU 911, inputs the data representing the hash function H 1 among the encryption parameters encryption parameter storage unit 390A is stored, and a bit string ID that identifies the input unit 340A is stored. Using the CPU 911, the hash value calculation unit 351A obtains a hash value H 1 (ID) obtained by hashing the bit string ID with the hash function H 1 based on the hash function H 1 represented by the input data and the input bit string ID. calculate. The hash value H 1 (ID) is an integer between 1 and p ⁇ 1. Using the RAM 914, the hash value calculation unit 351A stores data representing the calculated hash value H 1 (ID).
- the integer addition unit 352A uses the CPU 911 to calculate the order p of the encryption parameters stored in the encryption parameter storage unit 390A, the data indicating the secret random number s stored in the secret random number storage unit 330A, and the hash value calculation Data representing hash value H 1 (ID) stored in unit 351A is input.
- the integer adding unit 352A uses the CPU 911 to add the secret random number s and the hash value H 1 (ID) based on the order p represented by the input data, the secret random number s, and the hash value H 1 (ID).
- An integer s + H 1 (ID) which is a remainder obtained by dividing by the order p, is calculated.
- the integer adding unit 352A stores data representing the calculated integer s + H 1 (ID).
- Reciprocal calculation unit 353A uses CPU 911 to input data representing the order p among the encryption parameters stored by encryption parameter storage unit 390A and data representing integer s + H 1 (ID) stored by integer addition unit 352A. To do.
- the reciprocal number calculation unit 353A uses the CPU 911 to calculate a remainder obtained by dividing the product of the integer s + H 1 (ID) by the order p based on the order p represented by the input data and the integer s + H 1 (ID). An integer 1 / [s + H 1 (ID)] is calculated.
- the reciprocal calculation unit 353A stores data representing the calculated integer 1 / [s + H 1 (ID)].
- the secret key calculation unit 354A using the CPU 911, the encryption parameter storage unit and the data representing the the additive group G 2 and the original g 2 among the encryption parameters 390A and stored by the integer 1 / inverse calculation unit 353A is calculated [s + H 1 (ID)] is input.
- the secret key calculation unit 354A using the CPU 911, based on the additive group G 2 represented by the input data based g 2 and integer 1 / [s + H 1 ( ID)] and, by the operation on the additive group G 2, the original An element obtained by adding g 2 to 1 / [s + H 1 (ID)] times is calculated and set as a secret key D ID .
- the secret key calculation unit 354A stores data representing the calculated secret key D ID .
- the secret key output unit 360A inputs data representing the secret key D ID stored by the secret key calculation unit 354A. Using the CPU 911, the secret key output unit 360A outputs data representing the input secret key D ID . The secret key D ID output by the secret key output unit 360A is secretly notified to the ciphertext decryption apparatus 200A.
- FIG. 13 is a block configuration diagram illustrating an example of a functional block configuration of the ciphertext generation apparatus 400A according to this embodiment.
- the ciphertext generation apparatus 400A includes an encryption parameter storage unit 490A, an identification storage unit 410A, a common key generation unit 420A, a common key storage unit 430A, a message input unit 440A, a message encryption unit 450A, an encrypted message output unit 460A, a ciphertext An output unit 470A is provided.
- the encryption parameter storage unit 490A stores in advance data representing disclosed encryption parameters (including the disclosure source R).
- the identification storage unit 410A uses the magnetic disk device 920 to store a bit string ID that is identification data of the ciphertext decryption device 200A that is a ciphertext transmission partner.
- the common key generation unit 420A notifies the ciphertext decryption apparatus 200A of the common key K and the common key K based on the encryption parameter stored in the encryption parameter storage unit 490A and the bit string ID stored in the identification storage unit 410A. To generate a ciphertext.
- the common key generation unit 420A includes a secret bit string generation unit 421A, a secret integer calculation unit 422A, an identification source calculation unit 423A, an encryption source calculation unit 424A, a secret pairing value calculation unit 425A, an encryption bit string calculation unit 426A, and a common key calculation unit 427A.
- the secret bit string generation unit 421A uses the CPU 911 to randomly generate a bit string m having a predetermined length. Using the RAM 914, the secret bit string generation unit 421A stores the generated bit string m.
- the secret integer calculation unit 422A uses the CPU 911, inputs the data representing the hash function H 3 among the encryption parameters encryption parameter storage unit 490A is stored, and a bit string m stored secret bit string generating unit 421A. Using the CPU 911, the secret integer calculation unit 422A calculates a hash value r obtained by hashing the bit string m with the hash function H 3 based on the hash function H 3 represented by the input data and the input bit string m. The hash value r is an integer from 1 to p-1. Using the RAM 914, the secret integer calculation unit 422A stores data representing the calculated hash value r.
- Identifier element calculation unit 423A using the CPU 911, the data representing the hash function H 1 and the additive group G 1 and the original g 1 and public element R among the encryption parameters encryption parameter storage unit 490A is stored, the identification storage unit The bit string ID stored in 410A is input. Using the CPU 911, the identification source calculation unit 423A obtains a hash value H 1 (ID) obtained by hashing the bit string ID with the hash function H 1 based on the hash function H 1 represented by the input data and the input bit string ID. calculate.
- the hash value H 1 (ID) is an integer between 1 and p ⁇ 1.
- Identifier element calculation unit 423A using the CPU 911, the additive group G 1 represented by the input data to the original g 1, based on the calculated hash value H 1 (ID), by the operation on the additive group G 1, the original An element H 1 (ID) ⁇ g 1 obtained by adding g 1 to H 1 (ID) times is calculated.
- Identifier element calculation unit 423A using the CPU 911, the additive group G 1 represented by the input data and the public element R, based calculated based H 1 (ID) ⁇ g 1 and to, by the operation on the additive group G 1 Then, an element obtained by adding the disclosure source R and the element H 1 (ID) ⁇ g 1 is calculated and set as the element Q.
- Cipher element calculation unit 424A using the CPU 911, the data representing the additive group G 1 among the encryption parameters encryption parameter storage unit 490A is stored, the data representing the hash value r and stored by the secret integer calculation unit 422A, identification Data representing the element Q stored in the element calculation unit 423A is input. Cipher element calculation unit 424A, using the CPU 911, based on the additive group G 1 represented by the input data and the hash value r and the original Q, by the operation on the additive group G 1, an element which is obtained when the element Q obtained by adding r times Calculate the element U. Using the RAM 914, the encryption element calculation unit 424A stores data representing the calculated element U.
- the secret pairing value calculation unit 425A using the CPU 911, the data representing the original g 1 and the original g 2 pairing e and the multiplicative group G T among the encryption parameter storage unit encryption parameter 490A is stored, a secret integer Data representing the hash value r stored by the calculation unit 422A is input.
- the secret pairing value calculation unit 425A using the CPU 911, based on the original g 1 from the original g 2 pairing e represented by the input data, based on g 1 from the original g 2 pairing value e (g 1 , G 2 ). Pairing value e (g 1, g 2) is the original multiplicative group G T.
- the secret pairing value calculation unit 425A in advance, to calculate a pairing value e (g 1, g 2), by using the magnetic disk device 920, the calculated pairing value e of (g 1, g 2)
- the data to be represented may be stored.
- the secret pairing value calculation unit 425A using the CPU 911, the hash value r represented by the input data, based on the calculated pairing value e (g 1, g 2) , by the operation on the multiplicative group G T, An element obtained by multiplying the pairing value e (g 1 , g 2 ) r times is calculated and is defined as element ⁇ .
- the secret pairing value calculation unit 425A stores data representing the calculated element ⁇ .
- Cipher bit string calculation unit 426A using the CPU 911, the data representing the hash function H 2 among the encryption parameters encryption parameter storage unit 490A is stored, the bit string m stored secret bit string generating unit 421A, calculates secret pairing value Data representing the element ⁇ stored by the unit 425A is input.
- the encryption bit string calculation unit 426A uses the CPU 911, the encryption bit string calculation unit 426A calculates a hash value H 2 ( ⁇ ) obtained by hashing the element ⁇ with the hash function H 2 based on the hash function H 2 and the element ⁇ represented by the input data.
- the hash value H 2 ( ⁇ ) is a bit string having a predetermined length.
- the encryption bit string calculation unit 426A uses the CPU 911 to exclude each bit between the bit string m and the hash value H 2 ( ⁇ ) based on the input bit string m and the calculated hash value H 2 ( ⁇ ). A logical OR is taken to obtain a bit string V. Using the RAM 914, the encrypted bit string calculation unit 426A stores the calculated bit string V.
- Common key calculation unit 427A using the CPU 911, inputs the data representing the hash function H 4 among the encryption parameters encryption parameter storage unit 490A is stored, and a bit string m stored secret bit string generating unit 421A. Using the CPU 911, the common key calculation unit 427A calculates a hash value obtained by hashing the bit string m with the hash function H 4 based on the hash function H 4 represented by the input data and the input bit string m. K.
- the common key K is a bit string having a predetermined length.
- the common key calculation unit 427A stores the calculated common key K.
- the common key storage unit 430A uses the CPU 911 to input the common key K stored by the common key calculation unit 427A. Using the RAM 914, the common key storage unit 430A stores the input common key K.
- the ciphertext output unit 470A uses the CPU 911 to input data representing the element U stored by the encryption source calculation unit 424A and the bit string V stored by the encryption bit string calculation unit 426A. Using the CPU 911, the ciphertext output unit 470A generates data including the input data representing the element U and the bit string V, and outputs the data as ciphertext c.
- the message input unit 440A uses the CPU 911 to input a message M to be transmitted to the ciphertext decryption apparatus 200A.
- the message input unit 440A stores the input message M using the magnetic disk device 920.
- the message encryption unit 450A uses the CPU 911 to input the common key K stored by the common key storage unit 430A and the message M stored by the message input unit 440A. Using the CPU 911, the message encryption unit 450A encrypts the message M with the common key K based on the input message M and the common key K to obtain an encrypted message CM. The message encryption unit 450A uses the magnetic disk device 920 to store the generated encrypted message CM.
- the encrypted message output unit 460A uses the CPU 911 to input the encrypted message CM stored in the message encryption unit 450A. Using the CPU 911, the encrypted message output unit 460A outputs the input encrypted message CM.
- the ciphertext c output from the ciphertext output unit 470A and the encrypted message CM output from the encrypted message output unit 460A are transmitted to the ciphertext decryption apparatus 200A.
- FIG. 14 is a block configuration diagram illustrating an example of a functional block configuration of the ciphertext decryption apparatus 200A according to this embodiment.
- the ciphertext decryption apparatus 200A includes an encryption parameter storage unit 290A, an identification storage unit 241A, an identification source calculation unit 242A, an identification source storage unit 243A, a key storage unit 210A, a ciphertext input unit 220A, a ciphertext verification unit 230A, and a verification device 100A.
- the encryption parameter storage unit 290A stores in advance data representing disclosed encryption parameters (including the disclosure source R).
- the identification storage unit 241A stores a bit string ID for identifying the ciphertext decryption apparatus 200A itself using the magnetic disk device 920.
- the identification source calculation unit 242A uses the CPU 911 to store data representing the hash function H 1 , the additive group G 1 , the element g 1, and the disclosure source R among the encryption parameters stored in the encryption parameter storage unit 290A, and the identification storage unit
- the bit string ID stored in 241A is input.
- the identification source calculation unit 242A obtains a hash value H 1 (ID) obtained by hashing the bit string ID with the hash function H 1 based on the hash function H 1 represented by the input data and the input bit string ID. calculate.
- the hash value H 1 (ID) is an integer between 1 and p ⁇ 1.
- Identifier element calculation unit 242A using the CPU 911, the additive group G 1 represented by the input data to the original g 1, based on the calculated hash value H 1 (ID), by the operation on the additive group G 1, the original An element H 1 (ID) ⁇ g 1 obtained by adding g 1 to H 1 (ID) times is calculated.
- Identifier element calculation unit 242A using the CPU 911, and additive group G 1 represented by the input data and the public element R, based calculated based H 1 (ID) ⁇ g 1 and to, by the operation on the additive group G 1 Then, an element obtained by adding the disclosure source R and the element H 1 (ID) ⁇ g 1 is calculated as element Q.
- the identification source calculation unit 242A stores data representing the calculated element Q.
- the identification source storage unit 243A uses the CPU 911 to input data representing the element Q stored by the identification source calculation unit 242A. Using the magnetic disk device 920, the identification source storage unit 243A stores data representing the input source Q.
- the identification element calculation unit 242A calculates the element Q to identify If the original storage unit 243A stores it, the amount of calculation when the ciphertext c is input can be reduced.
- the key storage unit 210A stores data representing the secret key D ID previously generated by the key generation device 300A in a secret manner.
- the ciphertext input unit 220A inputs the ciphertext c received from the ciphertext generation apparatus 400A. Using the CPU 911, the ciphertext input unit 220A acquires data representing the element U and the bit string V from the input ciphertext c. Using the RAM 914, the ciphertext input unit 220A stores data representing the acquired element U and the bit string V.
- the ciphertext verification unit 230A includes a cipher parameter stored by the cipher parameter storage unit 290A, a secret key D ID stored by the key storage unit 210, an element U and a bit string V represented by the ciphertext c input by the ciphertext input unit 220A. Based on the above, data to be input to the verification device 100A is generated.
- the ciphertext verification unit 230A includes a pairing value calculation unit 231A, a bit string calculation unit 232A, and an integer calculation unit 233A.
- the pairing value calculation unit 231A uses the CPU 911 to store the data representing the pairing e among the encryption parameters stored in the encryption parameter storage unit 290A, the data indicating the secret key D ID stored in the key storage unit 210A, and the encryption The data representing the original U stored in the sentence input unit 220 is input.
- the pairing value calculation unit 231A uses the CPU 911 to perform pairing between the source U and the secret key D ID by the pairing e based on the pairing e, the source U, and the secret key D ID represented by the input data.
- the value is calculated as a pairing value ⁇ .
- Pairing value ⁇ is the original multiplicative group G T.
- the pairing value calculation unit 231A stores data representing the calculated pairing value ⁇ .
- the pairing value ⁇ calculated by the pairing value calculation unit 231A is based on the bilinearity of the pairing e.
- the pairing value calculated pairing value calculation unit 231A alpha is equal to the original alpha secret pairing value calculation unit 425A of the ciphertext generating apparatus 400A has been calculated by the multiplicative group G T.
- Bit string calculation unit 232A using the CPU 911, the data representing the hash function H 2 among the encryption parameters encryption parameter storage unit 290A is stored, the bit string V ciphertext input unit 220 and stored by the pairing value calculation unit 231A And the data representing the pairing value ⁇ stored therein.
- Bit string calculation unit 232A using the CPU 911, based on the hash function H 2 represented by the input data pairing value alpha and the hash value H 2 obtained by hashing the pairing value alpha by the hash function H 2 and (alpha) calculate.
- the hash value H 2 ( ⁇ ) is a bit string having a predetermined length.
- the bit string calculation unit 232A uses the CPU 911 to perform exclusive for each bit between the bit string V and the hash value H 2 ( ⁇ ) based on the input bit string V and the calculated hash value H 2 ( ⁇ ). The logical sum is taken as bit string m. Using the RAM 914, the bit string calculation unit 232A stores the calculated bit string m.
- pairing value pairing value calculation unit 231A is calculated ⁇ is equal to the original ⁇ of the multiplicative group G T which secret pairing value calculation unit 425A is calculated in the ciphertext generating apparatus 400A
- the bit string m to the bit string calculation unit 232A calculates Is equal to the bit string m generated by the secret bit string generation unit 421A of the ciphertext generation apparatus 400A.
- Integer calculation unit 233A using the CPU 911, inputs the data representing the hash function H 3 among the encryption parameters encryption parameter storage unit 290A is stored, and a bit string m to the bit string calculation unit 232A is stored. Integer calculation unit 233A, using the CPU 911, the hash function H 3 represented by the input data, based on the bit string m inputted, calculates a hash value obtained by hashing the bit string m by the hash function H 3, the hash value r And The hash value r is an integer from 1 to p-1. Using the RAM 914, the integer calculation unit 233A stores data representing the calculated hash value r.
- the verification device 100A is the same device as the verification device 100 described in the first embodiment.
- the verification apparatus 100A uses the CPU 911, the verification apparatus 100A inputs data representing the order p among the encryption parameters stored by the encryption parameter storage unit 290A as data representing the order p described in the first embodiment.
- the verification device 100A inputs data representing the hash value r stored by the integer calculation unit 233A as data representing the integer e described in the first embodiment.
- the verification apparatus 100A inputs data representing the element U stored by the ciphertext input unit 220 as data representing the element h described in the first embodiment.
- the verification device 100A uses the CPU 911 to determine e 1 ⁇ r ⁇ e 2 (mod p),
- the verification apparatus 100A uses the CPU 911 to calculate the element of the additive group G 1 by performing an operation on the additive group G 1 based on the element U and element Q represented by the input data and the calculated integer e 1 and integer e 2.
- Verification apparatus 100A using the CPU 911, based on the calculated element a, the element a is determined whether the identity element of the additive group G 1. Verification apparatus 100A, using the CPU 911, if the element a is an identity element of the additive group G 1, determines "the verification is successful" when the element a is not the identity of the additive group G 1 source, a "verification failure" judge. Using the CPU 911, the verification device 100A outputs data representing the verification result.
- the decrypted text generation unit 260A uses the CPU 911 to input data representing the verification result output by the verification device 100A.
- the verification result represented by the input data is “verification success”
- the decrypted text generation unit 260A generates the common key K using the CPU 911.
- the verification result is “verification failure”
- the decrypted text generation unit 260A does not generate the common key K.
- the decrypted text generation unit 260A may generate a random common key K that does not give a clue to an unauthorized person.
- the decrypted text generating unit 260A using the CPU 911, the data representing the hash function H 4 among the encryption parameters encryption parameter storage unit 290A is stored bit string calculation unit 232A is stored Input bit string m.
- the decrypted text generating unit 260A using the CPU 911, the hash function H 4 represented by the input data, based on the bit string m input by the hash function H 4, and calculates a hash value obtained by hashing the bit string m, A common key K is assumed.
- the common key K is a bit string having a predetermined length.
- the decrypted text generation unit 260A stores the calculated common key K.
- the bit string m calculated by the bit string calculation unit 232A is equal to the bit string m generated by the secret bit string generation unit 421A of the ciphertext generation apparatus 400A.
- the common key K calculated by the decrypted text generation unit 260A is equal to the common key K calculated by the common key calculation unit 427A of the ciphertext generation apparatus 400A. Therefore, the ciphertext generation apparatus 400A and the ciphertext decryption apparatus 200A can share the same common key K.
- the common key storage unit 270A uses the CPU 911 to input the common key K stored by the decrypted text generation unit 260A. Using the RAM 914, the common key storage unit 270A stores the input common key K.
- the encrypted message input unit 281A uses the CPU 911 to input the encrypted message CM received from the ciphertext generating apparatus 400A. Using the magnetic disk device 920, the encrypted message input unit 281A stores the input encrypted message CM.
- the message decryption unit 282A uses the CPU 911 to input the common key K stored by the common key storage unit 270A and the encrypted message CM stored by the encrypted message input unit 281A. Using the CPU 911, the message decryption unit 282A decrypts the input encrypted message CM using the input common key K to generate a message M ′.
- the message decoding unit 282A stores the generated message M ′ using the magnetic disk device 920. Since the ciphertext generation apparatus 400A and the ciphertext decryption apparatus 200A share the same common key K, the message M ′ generated by the message decryption unit 282A is the message input by the message input unit 440A of the ciphertext generation apparatus 400A. Same as M.
- the decryption message output unit 283A inputs the message M ′ stored by the message decryption unit 282A. Using the CPU 911, the decrypted message output unit 283A outputs the input message M ′.
- FIG. 15 is a flowchart showing an example of the flow of ciphertext decryption processing in which the ciphertext decryption apparatus 200A in this embodiment decrypts the ciphertext c.
- the pairing value calculation unit 231A uses the CPU 911 based on the source U input by the ciphertext input unit 220A and the secret key D ID stored by the key storage unit 210A.
- a pairing value between the original U and the secret key D ID is calculated from the ring e, and is set as a pairing value ⁇ .
- bit string calculation step S732A the bit string calculation unit 232A, using the CPU 911, based on the pairing value ⁇ pairing value calculation unit 231A is calculated in the pairing value calculation step S731A, the hash function H 2, pairing value A hash value H 2 ( ⁇ ) obtained by hashing ⁇ is calculated.
- the bit string calculation unit 232A uses the CPU 911 to determine between the bit string V and the hash value H 2 ( ⁇ ) based on the bit string V input by the ciphertext input unit 220A and the calculated hash value H 2 ( ⁇ ). Of each bit is taken as a bit string m.
- integer calculation step S733A the integer calculation unit 233A, using the CPU 911, based on the bit string m to the bit string calculation unit in the bit string calculation step S732A 232A is calculated calculated by the hash function H 3, a hash value obtained by hashing the bit string m And a hash value r.
- decrypted text generating step S735A the decrypted text generating unit 260A, using the CPU 911, based on the bit string m to the bit string calculation unit 232A in the bit string calculation step S732A is calculated by the hash function H 4, the hash value obtained by hashing the bit string m Is calculated as a common key K. Thereafter, the ciphertext decryption process is terminated, and the encrypted message CM is decrypted with the calculated common key K.
- the ciphertext decryption apparatus 200A needs to verify whether or not the ciphertext is consistent in order not to give a clue to decrypt the cipher to an unauthorized person who intends to decrypt the cipher.
- the ciphertext decryption apparatus 200A in this embodiment includes a storage device (RAM 914, magnetic disk device 920, etc.) for storing data, a processing device (CPU 911) for processing data, a key storage unit 210A, and a ciphertext input unit. 220A, ciphertext verification unit 230A, verification device 100A, and decrypted text generation unit 260A.
- the key storage unit 210 stores a key (secret key D ID ) for decrypting the ciphertext using the storage device.
- the ciphertext input unit 220A inputs the ciphertext c using the processing device (CPU 911).
- the ciphertext verification unit 230 uses the processing device (CPU 911) and based on the key (secret key D ID ) stored in the key storage unit 210A and the ciphertext c input by the ciphertext input unit 220A. Te, an integer e (hash value r) to be input to the verification devices 100A, and the finite group G (additive group G 1) of the original s (source Q), the element h of the finite group G (additive group G 1) (Original U) is calculated.
- the verification device 100A includes an integer e (hash value r) calculated by the ciphertext verification unit 230A, an element s (element Q) of the finite group G (additive group G 1 ), and the finite group G (additive group).
- the element h (element U) of G 1 ) is input to determine whether the verification is successful.
- the decryption text generation unit 260A uses the processing device (CPU 911) to transmit the ciphertext c input by the ciphertext input unit 220A to the key storage unit 210A.
- the decrypted text (common key K) is generated by decrypting with the stored key (private key D ID ).
- the decrypted text generation unit 260A when the verification apparatus 100A verifies the consistency of the ciphertext and determines that the verification is successful, the decrypted text generation unit 260A generates the decrypted text.
- An illegal ciphertext is input to the decrypting apparatus 200A, and it is possible to prevent a fraudulent person who wants to obtain a clue to decrypt the cipher from the decryption result from giving a clue to decrypt the cipher.
- the time required for the verification device 100A to verify the integrity of the ciphertext can be shortened, the time required for the entire processing for the ciphertext decryption device 200A to decrypt the ciphertext can be shortened.
- the ciphertext decryption apparatus 200A in this embodiment further includes an encryption parameter storage unit 290A, an identification storage unit 241A, an identification source calculation unit 242A, and an identification source storage unit 243A.
- the encryption parameter storage unit 290A using the storage device (magnetic disk drive 920), the order p of the finite group G (additive group G 1), generator of the finite group G (additive group G 1) Store g 1 and element R of the finite group G (additive group G 1 ).
- the identification storage unit 241A stores a bit string ID for identifying the ciphertext decryption device 200A using the storage device (magnetic disk device 920).
- the identification source calculation unit 242A uses the processing device to calculate a hash value obtained by hashing the bit string ID with a predetermined hash function H 1 based on the bit string ID stored in the identification storage unit 241A.
- Hash value H 1 (ID)
- generator g 1 stored in the encryption parameter storage unit 290A
- element R stored in the encryption parameter storage unit 290A
- calculated integer H 1 (ID )
- the identification source storage unit 243A stores the element Q calculated by the identification source calculation unit 242A using the storage device (magnetic disk device 920).
- the key storage unit 210A using the storage device, the finite group (additive group) storing original D ID of G 2.
- the ciphertext input unit 220A inputs the element U of the finite group G (additive group G 1 ) and the bit string V as the ciphertext c using the processing device (CPU 911).
- the ciphertext verification unit 230A includes a pairing value calculation unit 231A, a bit string calculation unit 232A, and an integer calculation unit 233A.
- the bit string calculation unit 232A uses the processing device (CPU 911) to hash the pairing value ⁇ using a predetermined hash function H 2 based on the pairing value ⁇ calculated by the pairing value calculation unit 231A.
- the verification apparatus 100A includes the order p stored in the encryption parameter storage unit 290A, the integer (hash value) r calculated by the integer calculation unit 233A as the integer e, and the identification source storage unit 243A as the element s. Is input as the element Q and the element U input by the ciphertext input unit 220A as the element h to determine whether the verification is successful.
- the identification source calculation unit 242A in this embodiment calculates the element Q before the ciphertext input unit 220A inputs the ciphertext c.
- the ciphertext input unit 220A executes the process of calculating the element Q before the ciphertext input unit 220A inputs the ciphertext c. It is possible to further shorten the time taken for the decrypted text generation unit 260A to calculate the common key K after the input of.
- the ciphertext decryption apparatus 200A in this embodiment further includes a common key storage unit 270A, an encrypted message input unit 281A, and a message decryption unit 282A.
- the common key storage unit 270A stores the common key K output by the decrypted text generation unit 260A using the storage device (RAM 914).
- the encrypted message input unit 281A inputs the encrypted message CM using the processing device (CPU 911).
- the message decryption unit 282A decrypts the encrypted message CM input by the encrypted message input unit 281A using the common key K stored by the common key storage unit 270A using the processing device (CPU 911).
- the message decryption unit 282A decrypts the encrypted message CM with the common key K shared with the ciphertext generation apparatus 400A via the ciphertext c
- the encrypted message The CM can be generated / decrypted by using a common key cryptosystem that can be processed at high speed.
- the encryption system (ID-based public key encryption system 820A) in this embodiment has a verification device 100A.
- the verification device 100A verifies the integrity of the ciphertext, thereby preventing an unauthorized person from giving a clue to decrypt the encryption. be able to.
- the time required for the verification apparatus 100A to verify the integrity of the ciphertext can be shortened, the time required for the entire encrypted communication can be shortened.
- the ciphertext decryption apparatus 200A (public key encryption / decryption apparatus) described above is a key decapsulation apparatus in a public key encryption system (ID-based public key encryption system 820A), and is a multiplicative method such as a group formed by integer remainder classes.
- multiplication index should in the group, or by scalar multiplication on the additive group such as a point form groups on (super) elliptic curve, the element s of the element s e or additive group which the element s of the multiplicative group is multiplied e times e times It has a ciphertext validity verification device (verification device 100A) that determines whether or not the ciphertext is correct by verifying whether the added element e ⁇ s matches the known element h.
- verification device 100A ciphertext validity verification device
- the ciphertext validity verification device (verification device 100A) A device (integer division unit 110) for dividing the exponent part (integer e); Using the divided exponents (integer e 1 and integer e 2 ), perform two-basis exponent power multiplication in the multiplicative group, or two-basis scalar multiplication in the additive group such as a group formed by (hyper) elliptic curve points. A device for calculating the value h e1 -s e2 or e 1 ⁇ he 2 ⁇ s (verification value calculation unit 130), An apparatus (verification determination unit 150) for determining whether the value is equal to the unit element 1 of the multiplicative group or the unit element 0 of the additive group.
- the ciphertext decryption apparatus 200A described above is an ID-based encryption / decryption apparatus.
- the ciphertext decryption apparatus 200A (ID-based encryption / decryption apparatus) described above is A pre-calculation device (identification source calculation unit 242A) that calculates in advance a public parameter (source g 1 and public source R) and a value (source Q) calculated from the ID of the receiver (ciphertext decryption device 200A); A storage device (identification source storage unit 243A) for storing the pre-calculated value (source Q); A value (Q r or r ⁇ Q) obtained by multiplying the pre-computed value (element Q) by exponentiation in a multiplicative group or by scalar multiplication in an additive group such as a group formed by (super) elliptic curve points is verified.
- identity source calculation unit 242A that calculates in advance a public parameter (source g 1 and public source R) and a value (source Q) calculated from the ID of the receiver (ciphertext decryption device 200A)
- a storage device (identification source storage
- the verification device 100A A device (integer division unit 110) for dividing the exponent part (hash value r); Using the divided exponents (integer e 1 and integer e 2 ), perform two-basis exponent power multiplication in the multiplicative group, or two-basis scalar multiplication in the additive group such as a group formed by (hyper) elliptic curve points.
- An apparatus (verification determination unit 150) for determining whether the value is equal to the unit element 1 of the multiplicative group or the unit element 0 of the additive group.
- the ciphertext decryption apparatus 200A described above is an SK (Sakai-Kasahara) -ID-based encryption / decryption apparatus.
- the ciphertext decryption apparatus 200A described above is a key decapsulation apparatus (SK-ID base encryption key decapsulation apparatus) in the SK-ID base encryption system (ID base public key encryption system 820A).
- An apparatus for calculating the value U e1 ⁇ Q ⁇ e2 or e 1 ⁇ Ue 2 ⁇ Q,
- An apparatus for determining whether the value is equal to the unit element 1 of the multiplicative group or the unit element 0 of the additive group.
- An apparatus for calculating the value U e1 ⁇ Q ⁇ e2 or e 1 ⁇ Ue 2 ⁇ Q,
- An apparatus for determining whether the value is equal to the unit element 1 of the multiplicative group or the unit element 0 of the additive group.
- the ID-based public key encryption system 820A described above is an SK-IBKEM encryption system that is an ID-based encryption that uses a pairing operation on a (super) elliptic curve.
- additive group G 1 of order p is a prime number
- the additive group G 2 and the multiplicative group G T
- base points in the group G 1 (generation source) g 1 in the group G 2 A base point g 2 and pairing e are used.
- the encryption parameter setting device 810A uses the CPU 911 to randomly select an integer s from 1 to p ⁇ 1.
- the encryption parameter setting device 810A obtains a secret key (secret random number) s for a key generation device 300A (key generation center; PKG: Private Key Generator) and a public key (public source) R for PKG. Output.
- the key generation device 300A secret key derivation device
- the ciphertext generation apparatus 400A (encryption apparatus) first generates a random bit string m using the CPU 911.
- a bit string V XOR (m, H 2 (e (g 1 , g 2 ) r )) is calculated.
- Embodiment 3 will be described with reference to FIGS. 16 to 20.
- FIG. 1 is a diagrammatic representation of Embodiment 3
- FIG. 16 is a system configuration diagram showing an example of the overall configuration of the public key cryptosystem 820B in this embodiment.
- the ciphertext generation apparatus 400B generates a ciphertext using the public key of the ciphertext decryption apparatus 200B, and the ciphertext decryption apparatus 200B decrypts the ciphertext using a secret key corresponding to the public key.
- System the public key encryption system 820B
- the ciphertext generation apparatus 400B generates a ciphertext using the public key of the ciphertext decryption apparatus 200B
- the ciphertext decryption apparatus 200B decrypts the ciphertext using a secret key corresponding to the public key.
- the public key encryption system 820B includes an encryption parameter setting device 810B, a key generation device 300B, a ciphertext generation device 400B, and a ciphertext decryption device 200B.
- the encryption parameter setting device 810B determines encryption parameters used in the public key encryption system 820B.
- the encryption parameters determined by the encryption parameter setting device 810B are disclosed to users of the public key encryption system 820B.
- Examples of the encryption parameters defined by the encryption parameter setting device 810B include the order p, the additive group G, the element g of the additive group G, the hash function H, and the key derivation function KDF.
- the order p is a prime number.
- the order of the additive group G is p.
- the element g is a generator of the additive group G.
- the hash function H is a hash function that generates an integer of 1 to p ⁇ 1 from two original ordered pairs of the additive group G.
- the key derivation function KDF is a function that generates a bit string having a predetermined length from two original ordered pairs of the additive group G.
- the encryption parameter setting device 810A is not necessary.
- the key generation device 300B generates a private key / public key pair based on the disclosed encryption parameters.
- the secret key generated by the key generation device 300B is secretly notified to the ciphertext decryption device 200B.
- the public key generated by the key generation device 300B is released as the public key of the ciphertext decryption device 200B, for example, in the form of a public key certificate.
- the key generation device 300B generates four elements g ′, c, d, h of the additive group G as public keys.
- the key generation device 300B generates four integers w, x, y, and z that are 1 or more and p-1 or less as secret keys.
- the key generation device 300B may be a part of the ciphertext decryption device 200B.
- the ciphertext generation apparatus 400B generates the ciphertext c and the common key K based on the publicly available encryption parameters and public key.
- the ciphertext generation apparatus 400B encrypts the message M with the generated common key K and generates an encrypted message CM.
- the ciphertext generation apparatus 400B transmits the generated ciphertext c and the encrypted message CM to the ciphertext decryption apparatus 200B.
- the ciphertext decryption apparatus 200B holds the secret key generated by the key generation apparatus 300B in a secret key.
- the ciphertext decryption apparatus 200B receives the ciphertext c and the encrypted message CM transmitted by the ciphertext generation apparatus 400B.
- the ciphertext decryption apparatus 200B decrypts the ciphertext c received using the stored secret key based on the disclosed encryption parameters, and generates the same common key K as the ciphertext generation apparatus 400B.
- the ciphertext decryption apparatus 200B decrypts the encrypted message CM using the generated common key, and generates the same message M ′ as the message M.
- the appearance and hardware resources of the cipher parameter setting device 810B, the key generation device 300B, the ciphertext generation device 400B, and the ciphertext decryption device 200B are the appearance and hardware resources of the ciphertext decryption device 200 described in the first embodiment. It is the same.
- FIG. 17 is a block configuration diagram showing an example of a functional block configuration of the key generation device 300B in this embodiment.
- the key generation device 300B includes an encryption parameter storage unit 390B, a secret key generation unit 350B, a public key generation unit 370B, a secret key output unit 360B, and a public key output unit 380B.
- the encryption parameter storage unit 390B stores in advance data representing the disclosed encryption parameters using the magnetic disk device 920.
- the secret key generation unit 350B generates a secret key based on the encryption parameter stored in the encryption parameter storage unit 390B.
- the secret key generation unit 350B has four secret random number generation units 351B to 354B.
- Each of the four secret random number generation units 351B to 354B uses the CPU 911 to input data representing the order p among the encryption parameters stored in the encryption parameter storage unit 390B.
- Each of the four secret random number generation units 351B to 354B uses the CPU 911 to randomly generate an integer of 1 to p ⁇ 1 based on the order p represented by the input data.
- the first secret random number generation unit 351B uses the generated integer as an integer w, and stores data representing the generated integer w using the RAM 914.
- the second secret random number generation unit 352B uses the generated integer as an integer x and stores data representing the generated integer x using the RAM 914.
- the third secret random number generation unit 353B sets the generated integer to an integer y, and stores data representing the generated integer y using the RAM 914.
- the fourth secret random number generation unit 354B sets the generated integer to an integer z, and uses the RAM 914 to store data representing the generated integer z.
- the public key generation unit 370B generates a public key based on the encryption parameter stored by the encryption parameter storage unit 390B and the secret key generated by the secret key generation unit 350B.
- the public key generation unit 370B has four public source calculation units 371B to 374B.
- Each of the four public element calculation units 371B to 374B uses the CPU 911 to input data representing the additive group G and the element g among the encryption parameters stored in the encryption parameter storage unit 390B.
- the first public source calculation unit 371B inputs data representing the integer w stored by the first secret random number generation unit 351B.
- the first public element calculation unit 371B uses the CPU 911 to calculate the element obtained by adding the element g w times by the calculation in the addition group G based on the addition group G, the element g, and the integer w represented by the input data. Calculate the element g ′.
- the first public element calculation unit 371B stores data representing the calculated element g ′.
- the second public source calculation unit 372B uses the CPU 911 to calculate an element obtained by adding the element g x times by the calculation in the addition group G based on the addition group G, the element g, and the integer x represented by the input data. Calculate the element c.
- the second publication source calculation unit 372B stores data representing the calculated element c.
- the third public source calculation unit 373B inputs data representing the integer y stored by the third secret random number generation unit 353B.
- the third public element calculation unit 373B uses the CPU 911 to calculate the element obtained by adding the element g y times by the calculation in the addition group G based on the addition group G, the element g, and the integer y represented by the input data. Calculate the element d.
- the third public source calculation unit 373B stores data representing the calculated element d.
- the fourth public source calculation unit 374B inputs data representing the integer z stored by the fourth secret random number generation unit 354B.
- the fourth public element calculation unit 374B uses the CPU 911 to calculate an element obtained by adding the element g z times by the calculation in the addition group G based on the addition group G, the element g, and the integer z represented by the input data. Calculate the element h.
- the fourth public element calculation unit 374B uses the RAM 914 to store data representing the calculated element h.
- the secret key output unit 360B inputs data representing the integer w, the integer x, the integer y, and the integer z stored by the four secret random number generation units 351B to 354B. Using the CPU 911, the secret key output unit 360B outputs the data representing the input integer w, integer x, integer y, and integer z as a secret key. The secret key output from the secret key output unit 360B is secretly notified to the ciphertext decryption apparatus 200B.
- the public key output unit 380B uses the CPU 911 to input data representing the element g ′, the element c, the element d, and the element h stored by the four disclosure element calculation units 371B to 374B. Using the CPU 911, the public key output unit 380B outputs the input data representing the element g ′, the element c, the element d, and the element h as a public key.
- the public key output by the public key output unit 380B is disclosed to the user of the public key encryption system 820B as the public key of the ciphertext decryption apparatus 200.
- FIG. 18 is a block configuration diagram showing an example of a functional block configuration of the ciphertext generation apparatus 400B in this embodiment.
- the ciphertext generation apparatus 400B includes an encryption parameter storage unit 490B, a public key storage unit 410B, a common key generation unit 420B, a ciphertext output unit 470B, a common key storage unit 430B, a message input unit 440B, a message encryption unit 450B, an encryption It has a message output unit 460B.
- the encryption parameter storage unit 490B uses the magnetic disk device 920 to store data representing the disclosed encryption parameters in advance.
- the public key storage unit 410B uses the magnetic disk device 920 to store data representing the public key of the ciphertext decryption device 200B that is the ciphertext transmission partner.
- the common key generation unit 420B notifies the ciphertext decryption apparatus 200B of the common key K and the common key K based on the encryption parameter stored in the encryption parameter storage unit 490B and the public key stored in the public key storage unit 410B. To generate a ciphertext.
- the common key generation unit 420B includes a secret random number generation unit 421B, a first encryption element calculation unit 422B, a second encryption element calculation unit 423B, a hash value calculation unit 424B, an integer calculation unit 425B, a third encryption element calculation unit 426B, and a secret element.
- a calculation unit 427B and a common key calculation unit 428B are included.
- the secret random number generation unit 421B uses the CPU 911 to input data representing the order p among the encryption parameters stored in the encryption parameter storage unit 490B. Using the CPU 911, the secret random number generation unit 421B randomly generates an integer between 1 and p ⁇ 1 based on the order p represented by the input data, and sets it as the secret random number r. Using the RAM 914, the secret random number generation unit 421B stores data representing the generated secret random number r.
- the first cryptographic element calculation unit 422B uses the CPU 911 to obtain data representing the additive group G and the element g among the cryptographic parameters stored by the cryptographic parameter storage unit 490B, and the secret random number r stored by the secret random number generation unit 421B. Enter the data to represent.
- the first cryptographic element calculation unit 422B uses the CPU 911 to calculate the element obtained by adding the element g r times by the calculation in the additive group G based on the additive group G, the element g, and the secret random number r represented by the input data. Calculate the element u.
- the first encryption element calculation unit 422B stores data representing the calculated element u.
- the second cipher element calculation unit 423B uses the CPU 911 to store the data representing the additive group G among the cipher parameters stored in the cipher parameter storage unit 490B and the public key of the ciphertext decryption apparatus 200B stored in the public key storage unit 410B. Data representing the element g ′ and data representing the secret random number r stored by the secret random number generation unit 421B are input.
- the second encryption element calculation unit 423B adds the element g ′ r times by calculation in the additive group G based on the additive group G, the element g ′, and the secret random number r represented by the input data. The element is calculated and set as element u ′.
- the second encryption element calculation unit 423B stores data representing the calculated element u ′.
- the hash value calculation unit 424B uses data representing the hash function H among the encryption parameters stored in the encryption parameter storage unit 490B, data representing the element u stored in the first encryption element calculation unit 422B, The data representing the element u ′ stored in the second encryption element calculation unit 423B is input.
- the hash value calculation unit 424B calculates a hash value obtained by hashing the ordered pair of the element u and the element u ′ based on the hash function H represented by the input data, the element u, and the element u ′. And a hash value ⁇ .
- the hash value ⁇ is an integer between 1 and p ⁇ 1.
- the hash value calculation unit 424B stores data representing the calculated hash value ⁇ .
- the integer calculation unit 425B calculates data representing the order p among the encryption parameters stored by the encryption parameter storage unit 490B, data representing the secret random number r stored by the secret random number generation unit 421B, and hash value calculation Data representing the hash value ⁇ calculated by the unit 424B is input.
- the integer calculation unit 425B divides the product of the hash value ⁇ and the secret random number r by the order p based on the order p represented by the input data, the secret random number r, and the hash value ⁇ . The remainder is calculated and set as an integer r ′.
- the integer calculation unit 425B stores data representing the calculated integer r ′.
- the third cipher element calculation unit 426B uses the CPU 911 to store data representing the additive group G among the encryption parameters stored in the encryption parameter storage unit 490B, and the public key of the ciphertext decryption apparatus 200B stored in the public key storage unit 410B.
- Data representing element c and element d, data representing secret random number r stored by secret random number generation unit 421B, and data representing integer r ′ stored by integer calculation unit 425B are input.
- the third cipher element calculation unit 426B uses the CPU 911 to calculate the element c based on the addition group G, the element c, the element d, the secret random number r, and the integer r ′ represented by the input data.
- the common key calculation unit 428B uses the CPU 911 to store data representing the key derivation function KDF among the encryption parameters stored in the encryption parameter storage unit 490B, data representing the element u stored in the first encryption element calculation unit 422B, and the data representing the original h ⁇ the secret element calculation unit 427B is stored.
- the common key calculation unit 428B calculates a bit string from the ordered pair of the element u and the element h 1 ⁇ with the key derivation function, A common key K is assumed.
- the common key calculation unit 428B stores the calculated common key K.
- the common key storage unit 430B uses the CPU 911 to input the common key K stored by the common key calculation unit 428B. Using the RAM 914, the common key storage unit 430B stores the input common key K.
- the ciphertext output unit 470B uses the CPU 911 to store data representing the element u stored by the first encryption element calculation unit 422B, data representing the element u ′ stored by the second encryption element calculation unit 423B, and the third encryption The data representing the element v stored in the element calculation unit 426B is input. Using the CPU 911, the ciphertext output unit 470B outputs the data representing the input element u, element u ', and element v as ciphertext c.
- Message input unit 440B uses CPU 911 to input message M to be transmitted to ciphertext decryption apparatus 200B.
- the message input unit 440B stores the input message M using the magnetic disk device 920.
- the message encryption unit 450B uses the CPU 911 to input the common key K stored by the common key storage unit 430B and the message M stored by the message input unit 440B. Using the CPU 911, the message encryption unit 450B encrypts the message M with the common key K based on the input message M and the common key K to obtain an encrypted message CM. The message encryption unit 450B uses the magnetic disk device 920 to store the generated encrypted message CM.
- the encrypted message output unit 460B uses the CPU 911 to input the encrypted message CM stored in the message encryption unit 450B. Using the CPU 911, the encrypted message output unit 460B outputs the input encrypted message CM.
- the ciphertext c output from the ciphertext output unit 470B and the encrypted message CM output from the encrypted message output unit 460B are transmitted to the ciphertext decryption apparatus 200B.
- FIG. 19 is a block configuration diagram showing an example of a functional block configuration of the ciphertext decryption apparatus 200B in this embodiment.
- the ciphertext decryption apparatus 200B includes a cipher parameter storage unit 290B, a key storage unit 210B, a ciphertext input unit 220B, a ciphertext verification unit 230B, a verification device 100B, a decrypted text generation unit 260B, a common key storage unit 270B, and an encrypted message input.
- Unit 281B, message decoding unit 282B, and decoded message output unit 283B is an encrypted message input.
- the encryption parameter storage unit 290B uses the magnetic disk device 920 to store data representing the disclosed encryption parameters in advance.
- the key storage unit 210B stores, in a secret manner, data representing a secret key generated in advance by the key generation device 300B using a tamper-resistant storage device.
- the ciphertext input unit 220B inputs the ciphertext c received from the ciphertext generation apparatus 400B. Using the CPU 911, the ciphertext input unit 220B acquires data representing the element u, element u ', and element v from the input ciphertext c. Using the RAM 914, the ciphertext input unit 220B stores the data representing the acquired element u, element u ', and element v.
- the ciphertext verification unit 230B includes a hash value calculation unit 231B and an integer calculation unit 232B.
- the hash value calculation unit 231B uses the CPU 911 to represent the data representing the hash function H among the cryptographic parameters stored in the cryptographic parameter storage unit 290B, and the data representing the elements u and u ′ stored in the ciphertext input unit 220B. Enter.
- the hash value calculation unit 231B uses the CPU 911 to hash the ordered pair of the element u and the element u ′ with the hash function H based on the hash function H, the element u, and the element u ′ represented by the input data.
- a hash value is calculated and set as a hash value ⁇ .
- the hash value ⁇ is an integer between 1 and p ⁇ 1.
- the hash value calculation unit 231B stores data representing the calculated hash value ⁇ .
- the hash value ⁇ calculated by the hash value calculation unit 231B is equal to the hash value ⁇ calculated by the hash value calculation unit 424B of the ciphertext generation apparatus 400B.
- the integer calculation unit 232B represents the data representing the order p among the encryption parameters stored in the encryption parameter storage unit 290B and the integer x and the integer y among the secret keys stored in the key storage unit 210B.
- the data and the hash value ⁇ stored by the hash value calculation unit 231B are input.
- the integer calculation unit 232B uses the CPU 911 to calculate the sum of the product of the integer y and the hash value ⁇ and the integer x based on the order p represented by the input data, the integer x, the integer y, and the hash value ⁇ . Is divided by the order p to calculate an integer t.
- the integer calculation unit 232B stores data representing the calculated integer t.
- the verification device 100B is the same device as the verification device 100 described in the first embodiment.
- the verification device 100B uses the order p represented by the input data and the integer w to indicate e 1 ⁇ w ⁇ e 2 (mod p),
- e 1 and an integer e 2 satisfying ⁇ p are calculated.
- the verification device 100B determines whether the element a is a unit element of the additive group G based on the calculated element a.
- the verification apparatus 100B uses the CPU 911 to determine that the first verification is successful when the element a is the unit element of the additive group G, and when the element a is not the unit element of the additive group G, “verification failure”. Is determined.
- the verification apparatus 100B uses the order p represented by the input data and the integer t to indicate e 1 ⁇ t ⁇ e 2 (mod p),
- An integer e 1 and an integer e 2 satisfying ⁇ p are calculated.
- the verification device 100B determines whether the element a is a unit element of the additive group G based on the calculated element a. When the element a is a unit element of the additive group G using the CPU 911, the verification apparatus 100B determines that the second verification is also successful, determines “verification is successful”, and the element a is the additive group G. If it is not a unit element, it is determined as “verification failure”.
- the verification device 100B outputs data representing the verification result.
- the decrypted text generation unit 260B generates the common key K when the verification device 100B determines that “verification is successful”.
- the decrypted text generation unit 260B includes a secret element calculation unit 261B and a common key calculation unit 262B.
- the secret element calculation unit 261B uses the CPU 911 to store the data representing the additive group G among the cryptographic parameters stored in the cryptographic parameter storage unit 290B, and the key storage Data representing the integer z of the secret key stored in the unit 210B and data representing the element u stored in the ciphertext input unit 220B are input.
- the secret element calculation unit 261B calculates an element obtained by adding the element u z times by an operation in the addition group G based on the addition group G, the integer z, and the element u represented by the input data.
- Secret element calculation unit 261B by using the RAM 914, stores data representing the element h ⁇ calculated. If the ciphertext c input by the ciphertext input unit 220A is a valid ciphertext, the element h 1 to be calculated by the secret element calculation unit 261B is calculated by the secret element calculation unit 427B of the ciphertext generation apparatus 400B from Equation 26. Is equal to the element h.
- the common key calculation unit 262B uses the CPU 911 to store data representing the key derivation function KDF among the encryption parameters stored by the encryption parameter storage unit 290B, data representing the element u stored by the ciphertext input unit 220B, calculator 261B and the data representing the original h ⁇ stored.
- Common key calculation unit 262B by using the CPU 911, based on the key derivation function KDF to the input data representing the element u original h ⁇ and, by the key derivation function KDF, the ordered pair of the original h ⁇ and element u A bit string is calculated and set as a common key K.
- the common key calculation unit 262B stores the calculated common key K.
- the secret element calculation unit 261B is calculated, since the secret element calculation unit 427B of the ciphertext generating apparatus 400B is equal to the original h ⁇ calculated, the common key K calculated by the common key calculation unit 262B is generated ciphertext It is equal to the common key K calculated by the common key calculation unit 428B of the device 400B. Therefore, the ciphertext generation apparatus 400B and the ciphertext decryption apparatus 200B can share the same common key K.
- the common key storage unit 270B uses the CPU 911 to input the common key K stored by the common key calculation unit 262B. Using the RAM 914, the common key storage unit 270B stores the input common key K.
- the encrypted message input unit 281B uses the CPU 911 to input the encrypted message CM received from the ciphertext generating apparatus 400B. Using the magnetic disk device 920, the encrypted message input unit 281B stores the input encrypted message CM.
- the message decryption unit 282B uses the CPU 911 to input the common key K stored by the common key storage unit 270B and the encrypted message CM stored by the encrypted message input unit 281B. Using the CPU 911, the message decryption unit 282B decrypts the input encrypted message CM using the input common key K to generate a message M ′. The message decryption unit 282B uses the magnetic disk device 920 to store the generated message M ′. Since the ciphertext generation apparatus 400B and the ciphertext decryption apparatus 200B share the same common key K, the message M ′ generated by the message decryption unit 282B is the message input by the message input unit 440B of the ciphertext generation apparatus 400B. Same as M.
- the decrypted message output unit 283B inputs the message M ′ stored by the message decrypting unit 282B. Using the CPU 911, the decrypted message output unit 283B outputs the input message M ′.
- FIG. 20 is a flowchart showing an example of the flow of the ciphertext decryption process in which the ciphertext decryption apparatus 200A in this embodiment decrypts the ciphertext c.
- the hash value calculation unit 231B uses the CPU 911 to calculate the element u and the element u ′ using the hash function H based on the element u and the element u ′ input by the ciphertext input unit 220B.
- a hash value obtained by hashing the ordered pair is calculated as a hash value ⁇ .
- the integer calculation unit 232B uses the CPU 911 to store the order p stored in the encryption parameter storage unit 290B, the integer x and integer y stored in the key storage unit 210B, and the hash value calculation step S731B. Based on the hash value ⁇ calculated by the hash value calculation unit 231B, a remainder obtained by dividing the sum of the product of the integer y and the hash value ⁇ and the integer x by the order p is calculated as an integer t. .
- u ′ w ⁇ u
- the process proceeds to the second verification step S734B. If u ′ ⁇ w ⁇ u, the ciphertext decryption process is terminated.
- the secret element calculation unit 261B uses the CPU 911 to calculate in the additive group G based on the integer z stored in the key storage unit 210B and the element u input in the ciphertext input unit 220B. by, by calculating the original that the original u plus z times, to the original h ⁇ .
- the common key calculation unit 262B uses the CPU 911 to convert the element u input by the ciphertext input unit 220B and the elements h 1 to 4 calculated by the secret element calculation unit 261B in the secret element calculation step S735B. based on, by the key derivation function KDF, and calculates a bit string from an ordered pair of the original h ⁇ the original u, and shared key K. Thereafter, the ciphertext decryption process is terminated, and the encrypted message CM is decrypted with the calculated common key K.
- the ciphertext decryption apparatus 200B in this embodiment further includes an encryption parameter storage unit 290B.
- the encryption parameter storage unit 290B stores the order p of the finite group (additive group) G using the storage device (magnetic disk device 920).
- the key storage unit 210B uses an integer w of 1 to p ⁇ 1, an integer x of 1 to p ⁇ 1, an integer y of 1 to p ⁇ 1, and 1 to p.
- the ciphertext input unit 220B uses the processing device (CPU 911) to generate an element u of the finite group (additive group) G, an element u ′ of the finite group (additive group) G, and the finite group (additive). Group)
- the element v of G is input as the ciphertext c.
- the ciphertext verification unit 230B includes a hash value calculation unit 231B and an integer calculation unit 232B.
- the hash value calculation unit 231B uses the processing device (CPU 911) to generate the element u and the element by using a predetermined hash function H based on the element u and the element u ′ input by the ciphertext input unit 220B.
- the verification apparatus 100B includes the order p stored in the encryption parameter storage unit 290B, the integer w stored in the key storage unit 210B as the integer e, and the element input by the ciphertext input unit 220B as the element s. u and the element u ′ input by the ciphertext input unit 220B as the element h are input, whether or not the verification is successful is determined, and the first verification result is stored by the encryption parameter storage unit 290B.
- the order p, the integer t calculated by the integer calculation unit 232B as the integer e, the element u input by the ciphertext input unit 220B as the element s, and the ciphertext input unit 220B input as the element h Is input as a second verification result.
- the ciphertext decryption apparatus 200B in this embodiment further includes a common key storage unit 270B, an encrypted message input unit 281B, and a message decryption unit 282B.
- the common key storage unit 270B stores the common key K output from the decrypted text generation unit 260B using the storage device (RAM 914).
- the encrypted message input unit 281B inputs the encrypted message CM using the processing device (CPU 911).
- the message decryption unit 282B decrypts the encrypted message CM input by the encrypted message input unit 281B using the common key K stored by the common key storage unit 270B using the processing device (CPU 911).
- the message decryption unit 282B decrypts the encrypted message CM using the common key K shared with the ciphertext generation apparatus 400B via the ciphertext c
- the encrypted message The CM can be generated / decrypted by using a common key cryptosystem that can be processed at high speed.
- the ciphertext decryption apparatus 200B public key cipher decryption apparatus described above is between the elements u and u ′ of the multiplicative group or additive group that are part of the ciphertext and the integer w that is part of the secret key.
- a device for dividing the exponent part (integer w); Using the divided exponents (integer e 1 and integer e 2 ), perform two-basis exponent power multiplication in the multiplicative group, or two-basis scalar multiplication in the additive group such as a group formed by (hyper) elliptic curve points.
- An apparatus for calculating the value u ′ e1 ⁇ u ⁇ e2 or e 1 ⁇ u′ ⁇ e 2 ⁇ u,
- An apparatus for determining whether the value is equal to the unit element 1 of the multiplicative group or the unit element 0 of the additive group.
- the ciphertext decryption apparatus 200B public key decryption apparatus
- the ciphertext decryption apparatus 200B includes an exponent (integer) t calculated based on the hash value ⁇ calculated from a part of the ciphertext (element u and element u ′), and ciphertext
- exponent t calculated based on the hash value ⁇ calculated from a part of the ciphertext (element u and element u ′), and ciphertext
- An apparatus for calculating the value v e1 ⁇ u ⁇ e2 or e 1 ⁇ ve 2 ⁇ u,
- An apparatus for determining whether the value is equal to the unit element 1 of the multiplicative group or the unit element 0 of the additive group.
- the public key cryptosystem 820B described above is a key encapsulation ACE-KEM cryptosystem standardized based on the Cramer-Shoup public key cryptosystem.
- the public key cryptosystem 820B uses a group (additive group) G of prime order p and a base point (generator) g in the group G.
- the key generation device 300B randomly selects an integer w, an integer x, an integer y, and an integer z that are 0 or more and p ⁇ 1 or less.
- the key generation device 300B outputs a public key (g ′, c, d, h) and a secret key (w, x, y, z).
- the ciphertext generation apparatus 400B (encryption apparatus) inputs the public key (g ′, c, d, h).
- An integer r ′ ⁇ ⁇ r mod p is calculated.
- the integer dividing unit 110 uses the CPU 911 to input w and p, calculates integers e 1 and e 2 that become e 1 ⁇ w ⁇ e 2 (mod p), and the verification value
- the integer dividing unit 110 inputs t and p using the CPU 911 to calculate integers e 1 and e 2 that become e 1 ⁇ t ⁇ e 2 (mod p), and the verification value calculating unit 130.
- Embodiment 4 will be described with reference to FIGS. 21 to 27.
- FIG. 1 is a diagrammatic representation of Embodiment 4
- FIG. 21 is a system configuration diagram showing an example of the overall configuration of the ID-based public key encryption system 820C in this embodiment. Similar to the ID-based public key encryption system 820A described in the second embodiment, the ID-based public key encryption system 820C is an encryption that uses identification data for identifying the ciphertext decryption apparatus 200C as a public key of the ciphertext decryption apparatus 200C. It is a communication system.
- the ID-based public key encryption system 820C includes an encryption parameter setting device 810C, a key generation device 300C, a ciphertext generation device 400C, and a ciphertext decryption device 200C.
- the encryption parameter setting device 810C determines encryption parameters used in the ID-based public key encryption system 820C.
- Cryptographic parameters determined by the cryptographic parameter setting device 810C are disclosed to users of the ID-based public key cryptographic system 820C.
- the encryption parameters determined by the encryption parameter setting device 810C include, for example, the order p, the additive group G, the element g of the additive group G, the additive group G ′, the element g ′ of the additive group G ′, the multiplicative group G t , and pairing e, hash function H, hash function H ′, hash function H ′′, and the like.
- the order p is a prime number.
- the order of the additive group G is p.
- the element g is a generator of the additive group G.
- the order of the additive group G ′ is p which is the same as that of the additive group G.
- the element g ′ is a generator of the additive group G ′.
- the order of the multiplicative group G t is the same p as the additive group G and the additive group G ′.
- Pairing e is a set of the original source and additive group G 'of the additive group G, a mapping which maps to the original (pairing value) of the multiplicative group G t.
- the pairing e has a bilinear shape. Further, pairing with 'original g of' element g and additive group G of the additive group G value e (g, g ') is not a unit of the multiplicative group G t source.
- the hash function H is a hash function that generates an integer of 1 to p ⁇ 1 from a bit string of an arbitrary length.
- the hash function H ′ is a hash function that generates a bit string having a predetermined length from the element of the multiplicative group G t .
- the hash function H ′′ is a hash function that generates an integer of 1 to p ⁇ 1 from a combination of an element of the multiplicative group G t , a bit string of a predetermined length, and an original ordered pair of the two additive groups G. It is.
- the element g ′ of the additive group G ′ is used only by the key generation device 300C, and thus may not be disclosed to other users. Further, when these encryption parameters are determined in advance, the encryption parameter setting device 810C may not determine these encryption parameters.
- the encryption parameter setting device 810C generates a master key and a public parameter generated based on the master key.
- the master key generated by the encryption parameter setting device 810C includes three integers ⁇ , ⁇ , and ⁇ .
- the public parameters generated by the encryption parameter setting device 810C include an element g 1 of the additive group G, an element g 3 of the additive group G, and an element v 0 of the multiplicative group G t .
- the master key generated by the encryption parameter setting device 810C is secretly notified to the key generation device 300C.
- the public parameters generated by the encryption parameter setting device 810C are disclosed to users of the ID-based public key encryption system 820C.
- the key generation device 300C holds the master key notified from the encryption parameter setting device 810C in a secret manner.
- the key generation device 300A generates the secret key of the ciphertext decryption device 200C based on the disclosed encryption parameter, the disclosed identification data ID of the ciphertext decryption device 200C, and the held master key.
- Private key key generating apparatus 300C generates includes 'the original d 0 of the additive group G' additive group G and the element d 1 of the.
- the secret key generated by the key generation device 300A is secretly notified to the ciphertext decryption device 200C.
- the ciphertext generation apparatus 400C encrypts the message M based on the disclosed encryption parameters, public parameters, and identification data ID of the ciphertext decryption apparatus 200C, and generates the ciphertext C.
- the ciphertext generation apparatus 400C transmits the generated ciphertext C to the ciphertext decryption apparatus 200C.
- the ciphertext decryption apparatus 200C holds the secret key generated by the key generation apparatus 300C in a secret key.
- the ciphertext decryption apparatus 200C receives the ciphertext C transmitted by the ciphertext generation apparatus 400C.
- the ciphertext decryption apparatus 200C decrypts the received ciphertext C based on the disclosed cipher parameters and the stored secret key, and generates the same message M ′ as the message M.
- the appearance and hardware resources of the cipher parameter setting device 810C, the key generation device 300C, the ciphertext generation device 400C, and the ciphertext decryption device 200C are the appearance and hardware resources of the ciphertext decryption device 200 described in the first embodiment. It is the same.
- FIG. 22 is a block configuration diagram showing an example of the configuration of some of the functional blocks of the encryption parameter setting device 810C in this embodiment.
- the encryption parameter setting device 810C includes an encryption parameter storage unit 819C, a master key generation unit 812C, a public parameter generation unit 813C, a master key output unit 814C, and a public parameter output unit 815C.
- the encryption parameter storage unit 819C stores data representing the disclosed encryption parameters using the magnetic disk device 920.
- the master key generation unit 812C generates a master key based on the encryption parameter stored in the encryption parameter storage unit 819C.
- the master key generation unit 812C has three secret random number generation units 816C to 818C. Using the CPU 911, the three secret random number generation units 816C to 818C each input data representing the order p among the encryption parameters stored in the encryption parameter storage unit 819C. Each of the three secret random number generation units 816C to 818C uses the CPU 911 to randomly generate an integer between 1 and p ⁇ 1 based on the order p represented by the input data.
- the first secret random number generation unit 816C sets the generated integer as an integer ⁇ , and uses the RAM 914 to store data representing the generated integer ⁇ .
- the second secret random number generation unit 817C sets the generated integer as an integer ⁇ , and stores data representing the generated integer ⁇ using the RAM 914.
- the third secret random number generation unit 818C sets the generated integer as an integer ⁇ , and uses the RAM 914 to store data representing the generated integer ⁇ .
- the public parameter generation unit 813C generates a public parameter based on the encryption parameter stored by the encryption parameter storage unit 819C and the master key generated by the master key generation unit 812C.
- the public parameter generation unit 813C includes a first public source calculation unit 831C, a public pairing value calculation unit 832C, and a second public source calculation unit 833C.
- the first public element calculation unit 831C uses the CPU 911 to represent the data representing the additive group G and the element g among the cryptographic parameters stored in the cryptographic parameter storage unit 819C and the integer ⁇ stored in the secret random number generation unit 816C. Enter the data.
- the first public element calculation unit 831C uses the CPU 911 to calculate an element obtained by adding the element g to ⁇ times by an operation in the addition group G based on the addition group G, the element g, and the integer ⁇ represented by the input data. and, to the original g 1.
- the first public element calculation unit 831C by using the RAM 914, stores data representing the element g 1 calculated.
- the public pairing value calculation unit 832C uses the CPU 911 to store the data representing the element g, the element g ′, and the pairing e among the encryption parameters stored in the encryption parameter storage unit 819C, and the secret random number generation unit 816C. Data representing the integer ⁇ and data representing the integer ⁇ stored by the secret random number generation unit 817C are input.
- the public pairing value calculation unit 832C uses the pairing e to set the pairing value between the element g and the element g ′ based on the element g, the element g ′, and the pairing e represented by the input data. e (g, g ′) is calculated.
- the pairing value e (g, g ′) is an element of the multiplicative group G t .
- Public pairing value calculation unit 832C using the CPU 911, the integer ⁇ and integer ⁇ represented by the input data, the calculated pairing value e (g, g ') on the basis of the, by the operation on the multiplicative group G t Then, an element obtained by multiplying the pairing value e (g, g ′) by the product ⁇ times the integer ⁇ and the integer ⁇ is calculated as an element v 0 .
- Public pairing value calculation unit 832C by using the RAM 914, stores data representing the element v 0 calculated.
- the second public element calculation unit 833C represents data representing the additive group G and the element g among the cryptographic parameters stored in the cryptographic parameter storage unit 819C, and represents the integer ⁇ stored in the secret random number generation unit 818C. Enter the data.
- the second public element calculation unit 833C uses the CPU 911 to calculate an element obtained by adding the element g to ⁇ times by an operation in the addition group G based on the addition group G, the element g, and the integer ⁇ represented by the input data. and, to the original g 3.
- Second public element calculation unit 833C by using the RAM 914, stores data representing the element g 3 calculated.
- the master key output unit 814C inputs data representing the integer ⁇ , integer ⁇ , and integer ⁇ stored by the three secret random number generation units 816C to 818C. Using the CPU 911, the master key output unit 814C outputs data representing the input integer ⁇ , integer ⁇ , and integer ⁇ as a master key. The master key output from the master key output unit 814C is secretly notified to the key generation device 300C.
- Public parameter output unit 815C using the CPU 911, and data representing the element g 1 of the first public element calculation unit 831C has stored the data representing the element v 0 of the public pairing value calculation unit 832C is stored, the second public element calculation unit 833C inputs the data representing the element g 3 stored.
- Public parameter output unit 815C using the CPU 911, the data representing the original g 1 inputted original g 3 and the original v 0, and outputs as public parameters.
- the public parameters output by the public parameter output unit 815C are disclosed to users of the ID-based public key encryption system 820C.
- FIG. 23 is a block configuration diagram showing an example of a functional block configuration of the key generation device 300C in this embodiment.
- the key generation device 300C includes an encryption parameter storage unit 390C, a master key storage unit 330C, an identification input unit 340C, a secret key generation unit 350C, and a secret key output unit 360C.
- the encryption parameter storage unit 390C uses the magnetic disk device 920 to store data representing the disclosed encryption parameters in advance.
- the master key storage unit 330C stores the master key notified from the encryption parameter setting device 810C in a secret manner using a tamper-resistant storage device.
- the identification input unit 340C uses the CPU 911 to input a bit string ID having an arbitrary length, which is identification data for identifying the ciphertext decryption apparatus 200C, for the ciphertext decryption apparatus 200C to generate a secret key.
- the identification input unit 340C stores the input bit string ID.
- the secret key generation unit 350C based on the encryption parameter stored by the encryption parameter storage unit 390C, the master key stored by the master key storage unit 330C, and the bit string ID input by the identification input unit 340C, Generate a secret key for.
- the secret key generation unit 350C includes a secret random number generation unit 351C, a first secret element calculation unit 352C, and a second secret element calculation unit 353C.
- the secret random number generation unit 351C uses the CPU 911 to input data representing the order p among the encryption parameters stored in the encryption parameter storage unit 390C. Using the CPU 911, the secret random number generation unit 351C randomly generates an integer between 1 and p ⁇ 1 based on the order p represented by the input data, and sets it as the secret random number r. Using the RAM 914, the secret random number generation unit 351C stores data representing the generated secret random number r.
- the first secret element calculation unit 352C uses the CPU 911 to store data representing the additive group G ′, the element g ′, and the hash function H among the encryption parameters stored in the encryption parameter storage unit 390C, and the master key storage unit 330C Of the stored master key, data representing the integer ⁇ , integer ⁇ and integer ⁇ , the bit string ID stored in the identification input unit 340C, and the data representing the secret random number r stored in the secret random number generation unit 351C are input.
- the first secret element calculation unit 352C uses the hash function H represented by the input data and the input bit string ID to generate a hash value H (ID) obtained by hashing the bit string ID using the hash function H. calculate.
- the first secret element calculation unit 352C uses the integer ⁇ , the integer ⁇ , the integer ⁇ , the secret random number r, and the calculated hash value H (ID) to represent the integer ⁇ and the hash.
- An integer ⁇ ⁇ ⁇ + obtained by adding a product of an integer ( ⁇ ⁇ H (ID) + ⁇ ) obtained by adding an integer ⁇ to a product of the value H (ID) and a secret random number r and a product of the integer ⁇ and the integer ⁇ [ ⁇ ⁇ H (ID) + ⁇ ] ⁇ r ⁇ is calculated.
- the first secret element calculation unit 352C uses the CPU 911 to add the additive group G ′ and element g ′ represented by the input data and the calculated integer ⁇ ⁇ ⁇ + [ ⁇ ⁇ H (ID) + ⁇ ] ⁇ r ⁇ . Based on the calculation in the additive group G ′, the element obtained by adding the element g ′ ⁇ ⁇ ⁇ + [ ⁇ ⁇ H (ID) + ⁇ ] ⁇ r ⁇ times is calculated and set as the secret element d 0 .
- the first secret element calculation unit 352C by using the RAM 914, stores data representing the secret element d 0 calculated.
- the second secret element calculation unit 353C uses the CPU 911 to store data representing the additive group G ′ and the element g ′ among the encryption parameters stored in the encryption parameter storage unit 390C, and the secret random number stored in the secret random number generation unit 351C. Data representing r is input.
- the second secret element calculation unit 353C uses the CPU 911 to calculate the element g ′ r times by an operation in the additive group G ′ based on the additive group G ′, the element g ′, and the secret random number r represented by the input data. and calculates the addition to the original, the secret element d 1.
- Second secret element calculation unit 353C by using the RAM 914, stores data representing the calculated secret element d 1.
- the secret key output unit 360C using the CPU 911, the data representing the secret element d 0 by the first secret element calculation unit 352C has stored the data representing the secret element d 1 of the second secret element calculation unit 353C has stored input.
- the secret key output unit 360C using the CPU 911, the data representing the secret element d 0 and inputs and secret element d 1, and outputs a secret key of the ciphertext decryption apparatus 200C.
- the secret key of the ciphertext decryption apparatus 200C output by the secret key output unit 360C is secretly notified to the ciphertext decryption apparatus 200C.
- FIG. 24 is a block configuration diagram showing an example of a functional block configuration of the ciphertext generation apparatus 400C in this embodiment.
- the ciphertext generation apparatus 400C includes an encryption parameter storage unit 490C, an identification storage unit 410C, a message input unit 440C, a message encryption unit 450C, and a ciphertext output unit 470C.
- the encryption parameter storage unit 490C uses the magnetic disk device 920 to store public encryption parameters (including public parameters) in advance.
- the identification storage unit 410C uses the magnetic disk device 920 to store a bit string ID that is identification data of the ciphertext decryption device 200C that is a ciphertext transmission partner.
- the message input unit 440C uses the CPU 911 to input a bit string M having a predetermined length that is a message to be transmitted to the ciphertext decryption apparatus 200C.
- the message input unit 440C divides the message into a predetermined length and forms a plurality of bit strings M. Enter.
- the message input unit 440C uses the RAM 914 to store the input bit string M.
- the message encryption unit 450C encrypts the bit string M input by the message input unit 440C based on the encryption parameters (including public parameters) stored by the encryption parameter storage unit 490C and the bit string ID stored by the identification storage unit 410C. To generate ciphertext C.
- the message encryption unit 450C includes a secret random number generation unit 451C, a pairing value calculation unit 452C, an encryption bit string calculation unit 453C, a first encryption element calculation unit 454C, a second encryption element calculation unit 455C, and an encryption integer calculation unit 456C.
- the secret random number generation unit 451C inputs data representing the order p among the encryption parameters stored by the encryption parameter storage unit 490C. Using the CPU 911, the secret random number generation unit 451C randomly generates an integer between 1 and p ⁇ 1 based on the order p represented by the input data, and sets it as a secret random number s. Using the RAM 914, the secret random number generation unit 451C stores data representing the generated secret random number s.
- the pairing value calculation unit 452C uses the CPU 911 to store data representing the multiplicative group G t and the element v 0 among the encryption parameters stored in the encryption parameter storage unit 490C, and the secret random number s stored in the secret random number generation unit 451C. Is input. Pairing value calculation unit 452C, using the CPU 911, based on the multiplicative group G t represented by the input data and the original v 0 and secret random number s, by the operation on the multiplicative group G t, a former v 0 s multiplications The calculated element is calculated as element k.
- the pairing value calculation unit 452C uses the RAM 914 to store data representing the calculated element k.
- the encryption bit string calculation unit 453C uses the CPU 911 to store the data representing the hash function H ′ among the encryption parameters stored in the encryption parameter storage unit 490C, the bit string M stored in the message input unit 440C, and the pairing value calculation unit 452C. Is stored and data representing the element k stored.
- the encryption bit string calculation unit 453C calculates a hash value H ′ (k) obtained by hashing the element k using the hash function H ′ based on the hash function H ′ represented by the input data and the element k.
- the hash value H ′ (k) is a bit string having a predetermined length.
- the encrypted bit string calculation unit 453C uses the CPU 911 to perform exclusive processing for each bit between the bit string M and the hash value H (k) based on the input bit string M and the calculated hash value H ′ (k). A logical sum is taken as bit string c.
- the encryption bit string calculation unit 453C stores the calculated bit string c.
- the first cryptographic element calculation unit 454C uses the CPU 911 to obtain data representing the additive group G and the element g among the cryptographic parameters stored by the cryptographic parameter storage unit 490C and the secret random number s stored by the secret random number generation unit 451C. Enter the data to represent.
- the first cryptographic element calculation unit 454C uses the CPU 911 to calculate an element obtained by adding the element g s times by the calculation in the additive group G based on the additive group G, the element g, and the secret random number s represented by the input data. calculated and, to the original c 0.
- the first cipher element calculation unit 454C by using the RAM 914, stores data representing the element c 0 calculated.
- the second encryption element calculation unit 455C uses the CPU 911 to calculate the hash value H (ID) obtained by hashing the bit string ID using the hash function H based on the hash function H represented by the input data and the input bit string ID. calculate.
- the hash value H (ID) is an integer between 1 and p-1.
- Second cipher element calculation unit 455C using the CPU 911, based on the input original g 1 and additive group G of data represents the original g 3 and the secret random number s, the calculated hash value H and (ID), additive An element obtained by adding the element H 1 obtained by adding the product H (ID) ⁇ s times of the hash value H (ID) and the secret random number s times and the element obtained by adding the element g 3 s times by calculation in the group G The element c 1 is calculated.
- Second cipher element calculation unit 455C by using the RAM 914, stores data representing the element c 1 calculated.
- the cryptographic integer calculation unit 456C uses the data representing the order p and the hash function H ′′ among the cryptographic parameters stored in the cryptographic parameter storage unit 490C, and the secret random number s stored in the secret random number generation unit 451C.
- Data representing the element c 1 stored in the second cipher element calculation unit 455C is input to the cipher integer calculation unit 456C using the CPU 911, the hash function H ′′, the element k, and the element c 0 represented by the input data.
- the hash value H ′′ (k, c, c 0 , c 1 ) is an integer of 1 to p ⁇ 1.
- the cryptographic integer calculation unit 456C uses the CPU 911 to use the order p represented by the input data and the secret a random number s, the calculated hash value H "based on the (k, c, c 0, c 1) and secret random number s and hash value H" (k, c, c 0, c 1) the sum of, The remainder obtained by dividing the order p is calculated as an integer t, and the cryptographic integer calculation unit 456C stores data representing the calculated integer t using the CPU 911.
- Ciphertext output unit 470C using the CPU 911, the encryption bit string calculation unit 453C bit string stored is c, and the data representing the element c 0 the first cipher element calculation unit 454C is stored, the second cipher element calculation unit 455C and data representing the element c 1 stored encryption integer calculation unit 456C inputs the data representing the integer t stored.
- Ciphertext output unit 470C using the CPU 911, the bit string c input, generates a ciphertext C including the original c 0 input the data representing the original c 1 and integer t. Using the CPU 911, the ciphertext output unit 470C outputs the generated ciphertext C.
- the ciphertext C output from the ciphertext output unit 470C is transmitted to the ciphertext decryption apparatus 200C.
- FIG. 25 is a block configuration diagram showing an example of a functional block configuration of the ciphertext decryption apparatus 200C in this embodiment.
- the ciphertext decryption apparatus 200C includes an encryption parameter storage unit 290C, a key storage unit 210C, a ciphertext input unit 220C, a ciphertext verification unit 230C, a verification device 100C, a decrypted text generation unit 260C, and a decrypted message output unit 283C.
- the encryption parameter storage unit 290C uses the magnetic disk device 920 to store data representing the disclosed encryption parameters in advance.
- the key storage unit 210C stores a secret key generated in advance by the key generation device 300C in a secret manner using a tamper-resistant storage device.
- the ciphertext input unit 220C inputs the ciphertext C received from the ciphertext generation apparatus 400C.
- Ciphertext input unit 220C using the CPU 911, based on the ciphertext C input, acquires the bit string c, and the data representing the element c 0 and the original c 1 and integer t.
- Cipher-text input unit 220C using the RAM 914, stores the data representing to the bit string c acquisition, and the element c 0 of the original c 1 and integer t.
- the ciphertext verification unit 230C Based on the encryption parameter stored in the encryption parameter storage unit 290C, the secret key stored in the key storage unit 210C, and the ciphertext C input in the ciphertext input unit 220C, the ciphertext verification unit 230C Generate input data.
- the ciphertext verification unit 230C includes a pairing value calculation unit 231C and an integer calculation unit 232C.
- Pairing value calculation unit 231C using the CPU 911, the data representing the multiplicative group G t and pairing e among the encryption parameters represented by the encryption parameter storage unit 290C, of the secret key key storage unit 210C has stored secret Data representing element d 0 and secret element d 1 and data representing element c 0 and element c 1 stored in ciphertext input unit 220C are input. Pairing value calculation unit 231C, using the CPU 911, based on the pairing e and the original c 0 and the secret element d 0 of the input data represented by the pairing e, the original c 0 and secret element d 0 and calculates the pairing value, the pairing value k 0.
- the pairing value k 0 is an element of the multiplicative group G t .
- Pairing value calculation unit 231C uses the CPU 911, based on the pairing e, the input data representing the original c 1 and the secret element d 1, the pairing e, the original c 1 and secret element d 1 and the It calculates the pairing value, the pairing value k 1.
- Pairing value k 1 is the original multiplicative group G t.
- Pairing value calculation unit 231C using the CPU 911, and the multiplicative group G t represented by the input data, based on the calculated pairing value k 0 and pairing value k 1, by the operation on the multiplicative group G t, An element obtained by multiplying the pairing value k 0 and the inverse element of the pairing value k 1 is calculated and set as element k.
- the pairing value calculation unit 231C stores data representing the calculated element k.
- the element k calculated by the pairing value calculation unit 231C is based on the bilinearity of the pairing e. Therefore, if the ciphertext C input by the ciphertext input unit 220C is a valid ciphertext, the source k calculated by the pairing value calculation unit 231C is calculated by the pairing value calculation unit 452C of the ciphertext generation apparatus 400C. It is equal to the original k.
- the integer calculation unit 232C uses the CPU 911 to store data representing the order p and the hash function H ′′ among the encryption parameters stored in the encryption parameter storage unit 290C, the bit string c stored in the ciphertext input unit 220C, Data representing c 0 , element c 1 and integer t and data representing element k stored in the pairing value calculation unit 231C are input to the integer calculation unit 232C using the CPU 911.
- the hash function H ′′ uses the ordered pair of the element k, the bit string c, the element c 0 and the element c 1 .
- a hash value H ′′ (k, c, c 0 , c 1 ) is calculated.
- the hash value H ′′ (k, c, c 0 , c 1 ) is an integer between 1 and p ⁇ 1.
- the integer calculation unit 232C uses the CPU 911 to calculate the order p and integer t represented by the input data. And an integer obtained by subtracting the hash value H ′′ (k, c, c 0 , c 1 ) from the integer t based on the calculated hash value H ′′ (k, c, c 0 , c 1 ) The remainder obtained by dividing by p is calculated as an integer s.
- the integer s calculated by the integer calculation unit 232C is the secret random number generation unit 451C. Is equal to the secret random number s generated.
- the verification device 100C outputs data representing the verification result.
- the decrypted text generation unit 260C uses the CPU 911 to store the data representing the hash function H ′ among the encryption parameters stored in the encryption parameter storage unit 290C, and the encryption
- the bit string c stored in the sentence input unit 220C and the data representing the element k stored in the pairing value calculation unit 231C are input.
- the decrypted text generation unit 260C uses the CPU 911 to calculate a hash value H ′ (k) obtained by hashing the element k using the hash function H ′ based on the hash function H ′ represented by the input data and the element k. .
- the hash value H ′ (k) is a bit string having a predetermined length.
- the decrypted text generation unit 260C uses the CPU 911 to exclude each bit between the bit string c and the hash value H ′ (k) based on the input bit string c and the calculated hash value H ′ (k).
- the logical OR is taken as a bit string M ′.
- the decrypted text generation unit 260C uses the RAM 914 to store the calculated bit string M ′.
- the bit string M ′ calculated by the decrypted text generation unit 260C is equal to the bit string M input by the message input unit 440C of the ciphertext generation apparatus 400C.
- the decrypted message output unit 283C inputs the bit string M ′ stored in the decrypted text generating unit 260C. Using the CPU 911, the decrypted message output unit 283C outputs the input bit string M ′ as a decrypted message.
- FIG. 26 is a detailed block diagram showing an example of the internal block configuration of the verification apparatus 100C in this embodiment.
- the verification apparatus 100C includes an integer division unit 110C, two verification value calculation units 130C 1 and 130C 2 , and a verification determination unit 150C.
- Verification apparatus 100C is a device similar to the verification apparatus 100 described in Embodiment 1, for the operation on the additive group G, and an operation in the multiplicative group G t, two verification value calculation unit 130C 1, with the 130C 2.
- the integer dividing unit 110C uses the order p represented by the input data and the integer s to indicate e 1 ⁇ s ⁇ e 2 (mod p),
- Integer partitioning unit 110C stores data representing the integer e 1 and integer e 2 which were calculated using the RAM 914.
- Verification value calculation unit 130C 1 using the CPU 911, inputs the data representing the element g among the encryption parameters encryption parameter storage unit 290C has stored, as data representing the element s described in the first embodiment.
- Verification value calculation unit 130C 1 using the CPU 911, inputs the data representing the element c 0 by the ciphertext input unit 220C is stored, as data representing the element h described in the first embodiment.
- the verification value calculation unit 130C 1 inputs data representing the integer e 1 and the integer e 2 stored by the integer dividing unit 110C.
- the verification value calculation unit 130C 1 uses the CPU 911 to convert the element c 0 into e 1 by performing an operation on the additive group G based on the element g, the element c 0 , the integer e 1 and the integer e 2 represented by the input data. the original obtained by adding times, and calculates an element which is obtained when the element g is the sum of the original inverse obtained by adding twice e, and original a. Verification value calculation unit 130C 1, using the RAM 914, stores data representing the element a calculated.
- Verification value calculation unit 130C 2 using the CPU 911, inputs the data representing the element v 0 among the encryption parameters encryption parameter storage unit 290C has stored, as data representing the element s described in the first embodiment.
- Verification value calculation unit 130C 2 using the CPU 911, inputs the data representing the element k pairing value calculation unit 231C has stored, as data representing the element h described in the first embodiment.
- the verification value calculation unit 130C 2 uses the CPU 911, the verification value calculation unit 130C 2 inputs data representing the integer e 1 and the integer e 2 stored by the integer dividing unit 110C.
- the verification value calculation unit 130C 2 uses the CPU 911 to calculate the element k as e 1 by performing an operation on the multiplicative group G t based on the element v 0 , element k, integer e 1 and integer e 2 represented by the input data.
- An element obtained by adding the element obtained by multiplying the element v 0 and the inverse element obtained by multiplying the element v 0 by e 2 times is calculated as an element a ′.
- Verification value calculation unit 130C 2 stores data representing the using RAM 914, is calculated based on a '.
- FIG. 27 is a flowchart showing an example of the flow of a ciphertext decryption process in which the ciphertext decryption apparatus 200C in this embodiment decrypts the ciphertext C.
- integer calculation step S732C the integer calculation unit 232C, using the CPU 911, the bit string c and the original c 0 by the ciphertext input unit 220C inputs the original c 1, the pairing value calculation unit 231C in the pairing value calculation step S731C Is a hash value H ′′ (k, c, c 0) obtained by hashing the element k, the bit string c, and the ordered pair of the element c 0 and the element c 1 by the hash function H ′′. , C 1 ).
- the integer calculation unit 232C uses the CPU 911 to store the order p stored by the cipher parameter storage unit 290C, the integer t input by the ciphertext input unit 220, and the calculated hash value H ′′ (k, c, c 0 , based on the c 1) and a hash from the integer t value H "(k, c, integer obtained by subtracting the c 0, c 1), and calculates the modulo of order p, an integer s.
- the integer dividing unit 110C uses the CPU 911 to calculate e based on the order p stored in the encryption parameter storage unit 290C and the integer s calculated by the integer calculating unit 232C in the integer calculating step S732C.
- ⁇ p, and 0 ⁇ e 2 ⁇ p are calculated.
- a first verification step S734C the verification value calculation unit 130C 1, using the CPU 911, and element g by the encryption parameter storage unit 290C has stored the original c 0 by the ciphertext input unit 220C inputs, an integer division step S733C Based on the integer e 1 and the integer e 2 calculated by the integer dividing unit 110C, an element obtained by adding the element c 0 e 1 times and an element inverse obtained by adding the element g e 2 times by an operation in the additive group G Is calculated as element a. Verification judging unit 150C, using the CPU 911, based on the original verification value calculation unit 130C 1 is calculated a, based on a determines whether the identity element of the additive group G.
- the process proceeds to the second verification step S735C.
- the element a is not a unit element of the additive group G (that is, when c 0 ⁇ s ⁇ g)
- the ciphertext decryption process is terminated.
- the verification value calculation unit 130C 2 using the CPU 911, the original v 0 by the encryption parameter storage unit 290C has stored element k pairing value calculation unit 231C in the pairing calculation step S731C is calculated Then, based on the integer e 1 and the integer e 2 calculated by the integer dividing unit 110C in the integer dividing step S733C, an element obtained by multiplying the element k by e 1 times and an element v 0 by e on the multiplicative group G t An element obtained by multiplying the inverse element of the element multiplied twice is calculated as element a ′.
- Verification judging unit 150C judges using CPU 911, 'on the basis of the original a' source a verification value calculation unit 130C 2 was calculated whether it is the identity element of the multiplicative group G t.
- the process proceeds to the decrypted text generation step S736C.
- the element a ′ is not a unit element of the multiplicative group G t (that is, when k ⁇ v 0 s )
- the ciphertext decryption process is terminated.
- the decrypted text generation unit 260C uses the CPU 911 to calculate the element k using the hash function H ′ based on the element k calculated by the pairing value calculation unit 231C in the pairing value calculation step S731C.
- a hashed hash value H ′ (k) is calculated.
- the decrypted text generation unit 260C uses the CPU 911 to calculate the bit string c and the hash value H ′ (k) based on the bit string c input by the ciphertext input unit 220C and the calculated hash value H ′ (k).
- the bitwise exclusive OR is taken as a bit string M ′.
- the decrypted message output unit 283C uses the CPU 911 to output the bit string M ′ calculated by the decrypted text generating unit 260C as a decrypted message. Thereafter, the ciphertext decryption process is terminated.
- the ciphertext decryption apparatus 200C in this embodiment further includes an encryption parameter storage unit 290C.
- the encryption parameter storage unit 290C by using the storage device (magnetic disk drive 920), the order p of the additive group G 1 (additive group G), a generator g of the additive group G 1 (additive group G) And the element v 0 of the multiplicative group G t having the order p as the order.
- the key storage unit 210C by using the storage device, the source (private source) d 0 of the additive group G 2 to position number the position number p (additive group G '), the additive group G 2 (additive The element (secret source) d 1 of the group G ′) is stored.
- the ciphertext input unit 220C by using the processing device (CPU 911), the bit string c, the original c 0 of the additive group G 1, the original c 1 of the additive group G 1, 1 or p-1 or less Is input as the ciphertext C.
- the ciphertext verification unit 230C includes a pairing value calculation unit 231C and an integer calculation unit 232C.
- the verification apparatus 100C uses the additive group G 1 (additive group G) as the finite group G, the order p stored in the cryptographic parameter storage unit 290C as the order p, and the integer calculation unit as the integer e. enter the integer s 232C is calculated, and the generator g to the encryption parameter storage unit 290C has stored as the element s, and the element c 0 by the ciphertext input unit 220C, as the element h is input, whether the verification is successful
- the multiplicative group G t as the finite group G
- the integer e as described above and integer s integer calculation unit 232C has been calculated
- the above encryption parameter storage unit 290C is the original v 0 stored as original s, from which the pairing value calculation unit 231C, as the element h is calculated Enter the door, it is determined whether or not the verification is successful, the second verification result.
- the decrypted text generation unit 260C uses the processing device (CPU 911) to perform the pairing when the verification device 100C determines that both the first verification result and the second verification result are verified successfully. Based on the element k calculated by the value calculation unit 231C, a hash value obtained by hashing the element k using a predetermined hash function H ′ is calculated to obtain a bit string H ′ (k), which is input by the ciphertext input unit 220C.
- the ciphertext decryption apparatus 200C described above is a BB (Boneh-Boyen) 1-ID base encryption / decryption apparatus.
- the ciphertext decryption apparatus 200C described above is a key decapsulation apparatus in the BB1-ID base encryption system (ID base public key encryption system 820C).
- the ID-based public key encryption system 820C described above is a BB1-ID base encryption system.
- an additive group G an additive group G ′, a multiplicative group G t , a generator g of the additive group G, a generator g ′ of the additive group G ′, and pairing.
- the encryption parameter setting device 810C performs a setting process (Setup).
- the encryption parameter setting device 810C outputs (g, g 1 , g 3 , v 0 ) as the PKG public key and (g ′, ⁇ , ⁇ , ⁇ ) as the PKG secret key.
- the key generation device 300C performs a secret key derivation process (Extract).
- the integer dividing unit 110C uses the CPU 911 to input s and p and calculate an integer e 1 and an integer e 2 that are e 1 ⁇ s ⁇ e 2 (mod p).
- Embodiment 5 The fifth embodiment will be described with reference to FIGS. 28 to 33.
- FIG. 5 A first embodiment will be described with reference to FIGS. 28 to 33.
- FIG. 28 is a system configuration diagram showing an example of the overall configuration of the ID-based signature system 820D in this embodiment.
- the ID-based signature system 820D is an electronic signature system that uses identification data for identifying the signature device 400D as a public key of the signature device 400D.
- the ID-based signature system 820D includes an encryption parameter setting device 810D, a key generation device 300D, a signature device 400D, and a signature verification device 200D.
- the encryption parameter setting device 810D determines encryption parameters used in the ID-based signature system 820D.
- the encryption parameters determined by the encryption parameter setting device 810D are disclosed to users of the ID-based signature system 820D.
- Examples of the encryption parameters defined by the encryption parameter setting device 810D include the order p, the additive group G, the element g of the additive group G, the hash function H, and the hash function H ′.
- the order p is a prime number.
- the order of the additive group G is the order p.
- the element g is a generator of the additive group G.
- the hash function H is a hash function that generates an integer of 1 to p ⁇ 1 from a set of an element of the additive group G and a bit string of an arbitrary length.
- the hash function H ′ is a hash function that generates an integer of 1 to p ⁇ 1 from a pair of an ordered pair of two bit strings having an arbitrary length and three original ordered pairs of the additive group G.
- the encryption parameter setting device 810D may not determine these encryption parameters.
- the encryption parameter setting device 810D generates a master key and a public parameter generated based on the master key.
- the master key generated by the encryption parameter setting device 810D includes an integer x of 1 or more and p ⁇ 1 or less.
- the master key generated by the encryption parameter setting device 810D is secretly notified to the key generation device 300D.
- the public parameter generated by the encryption parameter setting device 810D includes the element X of the additive group G.
- the public parameters generated by the cryptographic parameter setting device 810D are disclosed to users of the ID-based signature system 820D.
- the key generation device 300D holds the master key notified from the encryption parameter setting device 810D in a secret manner.
- the key generation device 300D generates the signature key of the signature device 400D based on the disclosed encryption parameter, the disclosed identification data ID of the signature device 400D, and the held master key.
- the signature key generated by the key generation device 300D includes an integer s of 1 to p ⁇ 1 and an element R of the additive group G.
- the signature key generated by the key generation device 300D is secretly notified to the signature device 400D.
- the signature device 400D holds the signature key notified from the key generation device 300D in a secret manner.
- the signature device 400D generates a signature ⁇ for the message M based on the disclosed encryption parameters, the public parameters, and the stored signature key.
- the signature ⁇ guarantees that the content of the message M has not been altered.
- the signature verification apparatus 200D verifies the signature ⁇ attached to the message M on the basis of the disclosed encryption parameters, public parameters, and identification data ID of the signature apparatus 400D, and determines whether the message M has been altered. judge.
- the signature verification apparatus 200D outputs a verification result.
- FIG. 29 is a block configuration diagram showing an example of a configuration of a part of functional blocks of the encryption parameter setting device 810D in this embodiment.
- the encryption parameter setting device 810D includes an encryption parameter storage unit 819D, a secret random number generation unit 812D, a public source calculation unit 813D, a master key output unit 814D, and a public parameter output unit 815D.
- the encryption parameter storage unit 819D stores the disclosed encryption parameters using the magnetic disk device 920.
- the secret random number generation unit 812D uses the CPU 911 to input data representing the order p among the encryption parameters stored in the encryption parameter storage unit 819D. Using the CPU 911, the secret random number generation unit 812D randomly generates an integer between 1 and p ⁇ 1 based on the order p represented by the input data, and sets it as the secret random number x. Using the RAM 914, the secret random number generation unit 812D stores data representing the generated secret random number x.
- the public element calculation unit 813D uses the CPU 911 to represent data representing the additive group G and the element g among the cryptographic parameters stored by the cryptographic parameter storage unit 819D, and data representing the secret random number x stored by the secret random number generation unit 812D. Enter. Based on the additive group G, the element g, and the secret random number x represented by the input data, the publishing element calculation unit 813D calculates the element obtained by adding the element g x times by the calculation in the additive group G, and the publishing element X And Using the RAM 914, the publication source calculation unit 813D stores data representing the calculated publication source X.
- the master key output unit 814D inputs data representing the secret random number x stored by the secret random number generation unit 812D. Using the CPU 911, the master key output unit 814D outputs data representing the input secret random number x as a master key. The master key output from the master key output unit 814D is secretly notified to the key generation device 300D.
- the public parameter output unit 815D inputs data representing the public source X stored by the public source calculation unit 813D. Using the CPU 911, the public parameter output unit 815D outputs data representing the input public source X as a public parameter.
- the public parameter output from the public parameter output unit 815D is disclosed to the user of the ID-based signature system 820D together with the encryption parameter.
- FIG. 30 is a block configuration diagram showing an example of a functional block configuration of the key generation device 300D in this embodiment.
- the key generation device 300D includes an encryption parameter storage unit 390D, a master key storage unit 330D, an identification input unit 340D, a signature key generation unit 350D, and a signature key output unit 360D.
- the encryption parameter storage unit 390D uses the magnetic disk device 920 to store data representing the disclosed encryption parameters in advance.
- the master key storage unit 330D stores the master key notified from the encryption parameter setting device 810D using a tamper-resistant storage device.
- the identification input unit 340D uses the CPU 911 to input a bit string ID having an arbitrary length, which is identification data for identifying the signature device 400D for generating a signature key. Using the RAM 914, the identification input unit 340D stores data representing the input bit string ID.
- the signature key generation unit 350D uses the signature of the signature device 400D based on the encryption parameters stored in the encryption parameter storage unit 390D, the master key stored in the master key storage unit 330D, and the bit string ID input by the identification input unit 340D. Generate a key.
- the signature key generation unit 350D includes a secret random number generation unit 351D, a key element calculation unit 352D, and a key integer calculation unit 353D.
- the secret random number generation unit 351D uses the CPU 911 to input data representing the order p among the encryption parameters stored in the encryption parameter storage unit 390D. Using the CPU 911, the secret random number generation unit 351D randomly generates an integer between 1 and p ⁇ 1 based on the order p represented by the input data, and sets it as the secret random number r. Using the RAM 914, the secret random number generation unit 351D stores data representing the generated secret random number r.
- the key element calculation unit 352D uses the CPU 911 to store data representing the additive group G and the element g among the encryption parameters stored in the encryption parameter storage unit 390D and data representing the secret random number r stored in the secret random number generation unit 351D. Enter. Using the CPU 911, the key element calculation unit 352D adds an element r ⁇ g obtained by adding r times to the element g based on the addition group G, the element g, and the secret random number r represented by the input data. Is calculated as element R. Using the RAM 914, the key element calculation unit 352D stores data representing the calculated element R.
- the key integer calculation unit 353D uses the CPU 911 to store data representing the order p and the hash function H among the encryption parameters stored in the encryption parameter storage unit 390D and the secret among the master keys stored in the master key storage unit 330D. Data representing random number x, bit string ID stored in identification input unit 340D, data representing secret random number r stored in secret random number generation unit 351D, and data representing element R calculated by key element calculation unit 352D are input. To do. Using the CPU 911, the key integer calculation unit 353D hashes the set of the element R and the bit string ID by the hash function H based on the hash function H and the element R represented by the input data and the input bit string ID. A hash value H (R, ID) is calculated.
- the key integer calculation unit 353D uses the CPU 911 to calculate the hash value H (R, R, ID) based on the order p, the secret random number x, the secret random number r, and the calculated hash value H (R, ID). , ID) and the secret random number x and the sum of the secret random number r divided by the order p is calculated as an integer s.
- the key integer calculation unit 353D stores data representing the calculated integer s.
- the signature key output unit 360D inputs data representing the element R stored by the key element calculation unit 352D and data representing the integer s stored by the key integer calculation unit 353D. Using the CPU 911, the signature key output unit 360D outputs data representing the input integer s and element R as a signature key. The signature key output from the signature key output unit 360D is secretly notified to the signature device 400D.
- FIG. 31 is a block configuration diagram showing an example of a functional block configuration of the signature device 400D in this embodiment.
- the signature device 400D includes an encryption parameter storage unit 490D, an identification storage unit 410D, a signature key storage unit 420D, a message input unit 440D, a signature generation unit 450D, and a signature output unit 470D.
- the encryption parameter storage unit 490D stores data representing the disclosed encryption parameters in advance.
- the identification storage unit 410D uses the magnetic disk device 920 to store a bit string ID that identifies the signature device 400D itself.
- the signature key storage unit 420D stores data representing the signature key generated by the key generation device 300D using a tamper-resistant storage device.
- the message input unit 440D uses the CPU 911 to input a bit string M having an arbitrary length that is a message to be signed. Using the RAM 914, the message input unit 440D stores the input bit string M.
- the signature generation unit 450D includes the encryption parameter stored in the encryption parameter storage unit 490D, the bit string ID stored in the identification storage unit 410D, the signature key stored in the signature key storage unit 420D, and the bit string M input in the message input unit 440D. Based on the above, a signature ⁇ is generated.
- the signature generation unit 450D includes a first signature source calculation unit 451D, a secret random number generation unit 452D, a second signature source calculation unit 453D, a challenge calculation unit 454D, and a signature integer calculation unit 455D.
- the first signature source calculation unit 451D uses the data representing the additive group G and the element g among the encryption parameters stored in the encryption parameter storage unit 490D and the signature key stored in the signature key storage unit 420D. Data representing the integer s is input.
- the first signature element calculation unit 451D uses the CPU 911 to calculate an element obtained by adding the element g s times by an operation in the addition group G based on the addition group G, the element g, and the integer s represented by the input data. Then, the source S is assumed.
- the first signature source calculation unit 451D stores data representing the calculated source S. Since the element S is constant regardless of the bit string M, the first signature element calculation unit 451D calculates the element S in advance before the message input unit 440D inputs the bit string M and stores it using the magnetic disk device 920. You may keep it.
- the secret random number generation unit 452D uses the CPU 911 to input data representing the order p among the encryption parameters stored in the encryption parameter storage unit 490D. Using the CPU 911, the secret random number generation unit 452D randomly generates an integer between 1 and p ⁇ 1 based on the order p represented by the input data, and sets it as the secret random number y. Using the RAM 914, the secret random number generation unit 452D stores data representing the generated secret random number y.
- the second signature element calculation unit 453D uses the data representing the additive group G and the element g among the encryption parameters stored in the encryption parameter storage unit 490D and the secret random number y stored in the secret random number generation unit 452D. Enter the data to represent.
- the second signature element calculation unit 453D uses the CPU 911 to calculate an element obtained by adding the element g y times by an operation in the additive group G based on the additive group G, the element g, and the secret random number y represented by the input data. Calculate the element Y.
- the second signature element calculation unit 453D stores data representing the calculated element Y.
- the challenge calculation unit 454D uses the CPU 911 to store the data representing the hash function H ′ among the encryption parameters stored in the encryption parameter storage unit 490D, the bit string ID stored in the identification storage unit 410D, and the signature key storage unit 420D. Data representing the element R, the bit string M stored by the message input unit 440D, the data representing the element S stored by the first signature source calculation unit 451D, and the second signature source calculation unit 453D Data representing the original Y is input.
- the challenge calculation unit 454D uses the CPU 911 to generate the bit string ID, the bit string M, and the hash function H ′ based on the element R, the element S, and the element Y represented by the input data, and the input bit string ID and the bit string M.
- a hash value obtained by hashing a pair of the ordered pair of the element R, the element S, and the element Y is calculated as a hash value c.
- the hash value c is an integer between 1 and p-1.
- the challenge calculation unit 454D stores data representing the calculated hash value c.
- the signature integer calculation unit 455D uses the CPU 911 to store data representing the order p among the encryption parameters stored in the encryption parameter storage unit 490D and data representing the integer s out of the signature keys stored in the signature key storage unit 420D.
- the data representing the secret random number y stored by the secret random number generation unit 452D and the data representing the hash value c stored by the challenge calculation unit 454D are input.
- the signature integer calculation unit 455D based on the order p, the integer s, the secret random number y, and the hash value c represented by the input data, and the secret random number y
- the remainder obtained by dividing the sum of and by the order p is calculated as an integer z.
- the signature integer calculation unit 455D stores data representing the calculated integer z.
- the signature output unit 470D uses the CPU 911 to store data representing the element R among the signature keys stored in the signature key storage unit 420D, data representing the element S stored in the first signature source calculation unit 451D, and the second signature. Data representing the element Y stored in the element calculation unit 453D and data representing the integer z stored in the signature integer calculation unit 455D are input. Using the CPU 911, the signature output unit 470D generates a signature ⁇ including data representing the input element R, element S, element Y, and integer z based on the input data. Using the CPU 911, the signature output unit 470D outputs the generated signature ⁇ .
- FIG. 32 is a block configuration diagram showing an example of a functional block configuration of the signature verification apparatus 200D in this embodiment.
- the signature verification device 200D includes an encryption parameter storage unit 290D, an identification storage unit 210D, a message input unit 225D, a signature input unit 220D, a signature verification unit 230D, a verification device 100D, and a verification result output unit 260D.
- the encryption parameter storage unit 290D stores in advance data representing public encryption parameters (including public parameters).
- the identification storage unit 210D uses the magnetic disk device 920 to store a bit string ID that identifies the signature device 400D.
- the message input unit 225D inputs a bit string M that is a message with the signature ⁇ .
- the message input unit 225D stores the input bit string M using the RAM 914.
- the signature input unit 220D inputs the signature ⁇ attached to the bit string M input by the message input unit 225D.
- the signature input unit 220D acquires data representing the element R, element S, element Y, and integer z from the input signature ⁇ .
- the signature input unit 220D stores data representing the acquired element R, element S, element Y, and integer z.
- the signature verification unit 230D includes a challenge calculation unit 231D, an integer calculation unit 232D, a verification source calculation unit 233D, and a first verification unit 250D.
- the challenge calculation unit 231D uses the CPU 911 to store data representing the hash function H ′ stored in the encryption parameter storage unit 290D, the bit string ID that identifies the signature device 400D stored in the identification storage unit 210D, and the signature input unit 220D
- the stored data representing the element R, the element S, and the element Y and the bit string M stored by the message input unit 225D are input.
- the challenge calculation unit 231D uses the hash function H ′ based on the hash function H ′ represented by the input data, the element R, the element S, the element Y, the input bit string ID, and the bit string M to generate a bit string.
- a hash value obtained by hashing a set of the ordered pair of ID and bit string M and the ordered pair of element R, element S, and element Y is calculated as a hash value c.
- the hash value c is an integer between 1 and p-1.
- the challenge calculation unit 231D stores data representing the calculated hash value c. If the bit string M is not altered, the hash value c calculated by the challenge calculation unit 231D is equal to the hash value c calculated by the challenge calculation unit 454D of the signature device 400D.
- the integer calculation unit 232D uses the CPU 911 to store the data representing the hash function H among the cryptographic parameters stored in the cryptographic parameter storage unit 290D, the bit string ID that identifies the signature device 400D stored in the identification storage unit 210D, and the signature input Data representing the element R stored in the part 220D is input.
- the integer calculation unit 232D uses the CPU 911 to hash the pair of the element R and the bit string ID with the hash function H based on the hash function H and the element R represented by the input data and the input bit string ID.
- the value is calculated as a hash value h.
- the hash value h is an integer from 1 to p-1.
- the integer calculation unit 232D stores data representing the calculated hash value h.
- the verification source calculation unit 233D uses the cryptographic parameter stored by the cryptographic parameter storage unit 290D to generate data representing the additive group G and data representing the element R and the element S stored by the signature input unit 220D. input.
- the verification element calculation unit 233D adds the element S and the inverse element of the element R based on the addition group G, the element R, and the element S represented by the input data, by the operation in the addition group G.
- the calculated element is calculated as element R ′.
- the verification source calculation unit 233D stores data representing the calculated element R ′.
- the first verification unit 250D uses the CPU 911 to determine that the verification is successful when the element z ⁇ g and the element Y + c ⁇ S are equal, and when the element z ⁇ g and the element Y + c ⁇ S are not equal, It is determined as “verification failure”. Using the CPU 911, the first verification unit 250D stores data representing the verification result.
- the verification device 100D is the same device as the verification device 100 described in the first embodiment.
- the verification apparatus 100D uses the CPU 911, the verification apparatus 100D inputs data representing the order p among the encryption parameters stored by the encryption parameter storage unit 290D as data representing the order p described in the first embodiment.
- the verification device 100D uses the CPU 911, the verification device 100D inputs data representing the hash value h stored by the integer calculation unit 232D as data representing the integer e described in the first embodiment.
- the verification device 100D inputs data representing the element R ′ stored by the verification source calculation unit 233D as data representing the element h described in the first embodiment.
- R r ⁇ g
- h H (R, ID)
- X x ⁇ g
- the verification result output unit 260D uses the CPU 911 to determine “verification success” when both the first verification unit 250D and the verification apparatus 100D determine “verification success” based on the two input verification results. Otherwise, it is determined as “verification failure”. Using the CPU 911, the verification result output unit 260D outputs data representing the verification result.
- FIG. 33 is a flowchart showing an example of a signature verification processing flow in which the signature verification apparatus 200D in this embodiment verifies the signature ⁇ .
- the challenge calculation unit 231D uses the CPU 911 to store the bit string ID stored in the identification storage unit 210D, the source R, the source S, and the source Y input by the signature input unit 220D, and the message input unit 225D. Based on the input bit string M, a hash value H ′ (ID) obtained by hashing a pair of the ordered pair of the bit string ID and the bit string M and the ordered pair of the element R, the element S, and the element Y by the hash function H ′. , R, S, Y, M) to obtain a hash value c.
- the process proceeds to the integer calculation step S733D.
- the process proceeds to the failure determination step S737D.
- the integer calculation unit 232D uses the CPU 911 to calculate the element R by the hash function H based on the bit string ID stored in the identification storage unit 210D and the element R input by the signature input unit 220D.
- a hash value H (R, ID) obtained by hashing the pair with the bit string ID is calculated and set as a hash value h.
- the verification source calculation unit 233D uses the CPU 911 to calculate the elements S and R of the elements R and R based on the element R and the element S input by the signature input unit 220D.
- An element SR obtained by adding the inverse element is calculated as an element R ′.
- R ′ h ⁇ X
- the process proceeds to the success determination step S736D. If R ′ ⁇ h ⁇ X, the process proceeds to failure determination step S737D.
- the verification result output unit 260D uses the CPU 911 to determine that the verification is successful and outputs the verification result. Thereafter, the signature verification process ends.
- the verification result output unit 260D determines that the verification has failed using the CPU 911, and outputs the verification result. Thereafter, the signature verification process ends.
- the signature verification device 200D in this embodiment includes a processing device (CPU 911) for processing data, a message input unit 225D, a signature input unit 220D, a signature verification unit 230D, a verification device 100D, and a verification result output unit 260D. And have.
- the message input unit 225D inputs a message (bit string M) using the processing device (CPU 911).
- the signature input unit 220D inputs the signature ⁇ for the message (bit string M) input by the message input unit 225D using the processing device (CPU 911).
- the signature verification unit 230D uses the processing device (CPU 911) to determine the verification device based on the message (bit string M) input by the message input unit 225D and the signature ⁇ input by the signature input unit 220D.
- An integer e (hash value h) input to 100D, an element s (public source X) of the finite group (additive group) G, and an element h (element R ′) of the finite group (additive group) G are calculated.
- the verification device 100D includes the integer e (hash value h) calculated by the signature verification unit 230D, the element s (public source X) of the finite group (additive group) G, and the finite group (additive group) G.
- the element h (element R ′) is input to determine whether the verification is successful.
- the verification result output unit 260D uses the processing device (CPU 911) to output a verification result indicating whether the verification is successful based on the result verified by the verification device 100D.
- the signature verification apparatus 200D in this embodiment further includes a storage device (such as a magnetic disk device 920 and a RAM 914) that stores data, an encryption parameter storage unit 290D, and an identification storage unit 210D.
- a storage device such as a magnetic disk device 920 and a RAM 914.
- the encryption parameter storage unit 290D uses the order p of the finite group (additive group) G, the generator g of the finite group (additive group) G, and the above An element (public source) X of a finite group (additive group) G is stored.
- the identification storage unit 210D stores a bit string ID for identifying the signature device 400D using the storage device (magnetic disk device 920).
- the message input unit 225D inputs the bit string M as the message using the processing device (CPU 911).
- the signature input unit 220D uses the element R of the finite group (additive group) G, the element S of the finite group (additive group) G, and the finite group (additive group).
- An element Y of G and an integer z not less than 1 and not more than p ⁇ 1 are input as the signature ⁇ .
- the signature verification unit 230D includes an integer calculation unit 232D, a verification source calculation unit 233D, a challenge calculation unit 231D, and a first verification unit 250D.
- the integer calculation unit 232D uses the processing device (CPU 911) to perform a predetermined hash function H based on the element R input by the signature input unit 220D and the bit string ID stored by the identification storage unit 210D.
- the first verification unit 250D uses the processing device (CPU 911) to generate the generator g stored in the cryptographic parameter storage unit 290D, the element S, the element Y, and the integer z input by the signature input unit 220D. Based on the integer (hash value) c calculated by the challenge calculation unit 231D, an element Y + c ⁇ S obtained by adding the element c ⁇ S obtained by adding the element S to the integer (hash value) c times and the element Y is obtained. It is determined whether the generator g is equal to the element z ⁇ g obtained by adding the integer z times. When the element Y + c ⁇ S is equal to the element z ⁇ g, it is determined that the verification is successful. One verification result.
- the verification apparatus 100D includes the order p stored by the encryption parameter storage unit 290D as the order p, the integer h calculated by the integer calculation unit 232D as the integer e, and the encryption parameter storage unit as the element s.
- the element X stored in 290D and the element R ′ calculated by the verification element calculation unit 233D are input as the element h, and whether or not the verification is successful is determined as a second verification result.
- the verification result output unit 260D uses the processing device (CPU 911), based on the first verification result verified by the first verification unit 250D and the second verification result verified by the verification device 100D. When both the first verification result and the second verification result are determined to be successful, a verification result indicating that the verification is successful is output.
- the signature verification apparatus 200D described above has an element s obtained by multiplying the element s of the multiplicative group e times by exponentiation multiplication in the multiplicative group or scalar multiplication in an additive group such as a group formed by a point on the (super) elliptic curve.
- This is a digital signature verification device that determines whether or not a signature is correct by verifying whether an element e ⁇ s obtained by adding e or an element s of an additive group e times matches a known element h.
- the signature verification apparatus 200D A device (integer division unit 110) for dividing the exponent part (integer e); Using the divided exponents (integer e 1 and integer e 2 ), perform two-basis exponent power multiplication in the multiplicative group, or two-basis scalar multiplication in the additive group, such as the group formed by the points on the (hyper) elliptic curve.
- a device for calculating the value h e1 ⁇ e ⁇ e2 or e 1 ⁇ he 2 ⁇ s (verification value calculation unit 130),
- An apparatus (verification determination unit 150) for determining whether the value is equal to the unit element 1 of the multiplicative group or the unit element 0 of the additive group.
- the integer dividing unit 110 described above divides the exponent part (integer e) by calculating the extended Euclidean algorithm.
- the integer dividing unit 110 described above performs the repeated division of two integers.
- Integer v 1 is an integer v 2 and division to the division, respectively, computing device an integer v 2 for the remainder v 3, and the division of previous step division before steps (third remainder calculation unit 117), Certain number of the remainder v 3 of the division result of each step ( ⁇ p) above, and a computing device (conformity judging unit 116) determines that or at a certain number ( ⁇ p) below.
- the signature verification apparatus 200D described above is a BNN (Bellare-Namppre-Neven) -ID-based signature verification apparatus.
- the signature verification apparatus 200D A multiplicative or additive group element X that is a public key of the secret key generation center (key generation apparatus 300D), an element R that is a part of the private key (signature key) of the signer (signature apparatus 400D), and a signature ⁇ Whether or not the element R ⁇ X H (R, ID) or R + H (R, ID) ⁇ X matches the element S is verified based on the element S that is part of the ID and the bit string ID that identifies the signer
- An apparatus for calculating the value (S / R) e1 ⁇ X ⁇ e2 or e 1 ⁇ (S ⁇ R) ⁇ e 2 ⁇ X,
- An apparatus for determining whether the value is equal to the unit element 1 of the multiplicative group or the unit element 0 of the additive group.
- the ID-based signature system 820D described above is a signature system based on the BNN-ID-based signature method obtained by converting the BNN-ID-based authentication method into a Fiat-Shamir.
- the ID-based authentication system 820E uses a multiplicative group G whose order p is a prime number and a generator g of the multiplicative group G.
- the key generation device 300D uses the CPU 911 to generate a random integer (secret random number) r between 1 and p ⁇ 1.
- the signature device 400D performs signature generation processing. Using the CPU 911, the signature device 400D inputs the message M and the secret key (R, s). First, the signature device 400D uses the CPU 911 to generate a random integer (secret random number) y of 1 or more and p ⁇ 1 or less.
- the signature verification apparatus 200D performs signature verification processing. Using the CPU 911, the signature verification apparatus 200D inputs a signature (c, z, S, Y, R) and a bit string ID that identifies the signature apparatus 400D.
- Embodiment 6 will be described with reference to FIGS. 34 to 37.
- FIG. 1 is a diagrammatic representation of Embodiment 6
- FIG. 34 is a system configuration diagram showing an example of the overall configuration of the ID-based authentication system 820E in this embodiment.
- the ID-based authentication system 820E is a system in which the authentication device 200E authenticates that the certification device 400E is not a fake. At this time, the authentication device 200E uses identification data for identifying the certification device 400E as a public key of the certification device 400E.
- the ID-based authentication system 820E includes an encryption parameter setting device 810D, a key generation device 300D, a certification device 400E, and an authentication device 200E.
- the certification device 400E transmits an authentication request message to the authentication device 200E.
- the authentication request message transmitted by the proving apparatus 400E includes the element R, element S, and element Y of the additive group G.
- authentication device 200E Upon receiving the authentication request message, authentication device 200E transmits a question message to certification device 400E.
- the question message transmitted by the authentication device 200E includes an integer c of 1 to p-1.
- the certification device 400E Upon receiving the question message, transmits an answer message to the authentication device 200E.
- the reply message transmitted by the certification device 400E includes an integer z that is 1 or more and p ⁇ 1 or less calculated based on the integer c.
- the authentication device 200E verifies the source R, the source S, and the source Y included in the received authentication request message and the integer z included in the received answer message, and if there is consistency, the verification device 400E is not a fake. Authenticate that there is no.
- FIG. 35 is a block configuration diagram showing an example of a functional block configuration of the proving apparatus 400E in this embodiment. Note that portions common to the signature device 400D described in the fifth embodiment are denoted by the same reference numerals, and description thereof is omitted here.
- the certification device 400E includes an encryption parameter storage unit 490D, a signature key storage unit 420D, a signature generation unit 450D, an authentication request transmission unit 470E, a question reception unit 454E, and an answer transmission unit 475E.
- the authentication request transmission unit 470E uses the CPU 911 to store the data representing the element R out of the signature keys stored in the signature key storage unit 420D, the data representing the element S stored in the first signature source calculation unit 451D, and the second Data representing the element Y stored in the signature source calculation unit 453D is input.
- the authentication request transmission unit 470E uses the CPU 911 to store the data representing the element R out of the signature keys stored in the signature key storage unit 420D, the data representing the element S stored in the first signature source calculation unit 451D, and the second Data representing the element Y stored in the signature source calculation unit 453D is input.
- the authentication request transmission unit 470E uses the CPU 911 to store the data representing the element R out of the signature keys stored in the signature key storage unit 420D, the data representing the element S stored in the first signature source calculation unit 451D, and the second Data representing the element Y stored in the signature source calculation unit 453D is input.
- the authentication request transmission unit 470E uses the CPU 911 to store the data representing the element R
- the question receiving unit 454E receives the question message transmitted from the authentication device 200E using the communication device 915.
- the question receiving unit 454E uses the CPU 911 to acquire data representing the integer c included in the received question message.
- the question receiving unit 454E stores data representing the acquired integer c.
- the signature integer calculation unit 455D uses the CPU 911 to store data representing the order p among the encryption parameters stored in the encryption parameter storage unit 490D and data representing the integer s out of the signature keys stored in the signature key storage unit 420D. Then, the data representing the secret random number y stored in the secret random number generation unit 452D and the data representing the integer c stored in the question receiving unit 454E are input. The signature integer calculation unit 455D uses the CPU 911 to calculate the product of the integer c and the integer s and the secret random number y based on the order p, the integer s, the secret random number y, and the integer c represented by the input data. The remainder obtained by dividing the sum by the order p is calculated to be an integer z. Using the RAM 914, the signature integer calculation unit 455D stores data representing the calculated integer z.
- the response transmission unit 475E inputs data representing the integer z stored by the signature integer calculation unit 455D.
- the reply transmission unit 475E uses the communication device 915 to transmit the generated reply message to the authentication device 200E.
- FIG. 36 is a block configuration diagram showing an example of a functional block configuration of the authentication device 200E in this embodiment. Note that portions common to the signature verification apparatus 200D described in the fifth embodiment are denoted by the same reference numerals, and description thereof is omitted here.
- the authentication device 200E includes an encryption parameter storage unit 290D, an identification storage unit 210D, an authentication request reception unit 220E, a challenge generation unit 231E, a question transmission unit 226E, an answer reception unit 227E, a signature verification unit 230D, a verification device 100D, and an authentication result output unit. 260E.
- the authentication request receiving unit 220E uses the communication device 915 to receive the authentication request message transmitted by the proving device 400E. Using the CPU 911, the authentication request receiving unit 220E acquires data representing the element R, the element S, and the element Y included in the received authentication request message. Using the RAM 914, the authentication request receiving unit 220E stores data representing the acquired element R, element S, and element Y.
- the challenge generation unit 231E uses the CPU 911 to randomly generate an integer between 1 and p ⁇ 1 and set it as the integer c. Using the RAM 914, the challenge generation unit 231E stores data representing the generated integer c.
- the question transmission unit 226E uses the CPU 911 to input data representing the integer c stored by the challenge generation unit 231E. Using the CPU 911, the question transmission unit 226E generates a question message including data representing the input integer c. The question transmitting unit 226E transmits the generated question message to the proving device 400E using the communication device 915.
- the response receiving unit 227E receives the response message transmitted by the proving device 400E using the communication device 915. Using the CPU 911, the answer receiving unit 227E acquires data representing the integer z included in the received answer message. Using the RAM 914, the answer receiving unit 227E stores data representing the acquired integer z.
- the first verification unit 250D uses the CPU 911 to determine that the verification is successful when the element z ⁇ g and the element Y + c ⁇ S are equal, and when the element z ⁇ g and the element Y + c ⁇ S are not equal, It is determined as “verification failure”. Using the CPU 911, the first verification unit 250D stores data representing the verification result.
- the authentication result output unit 260E uses the CPU 911 to determine “authentication success” when both the first verification unit 250D and the verification device 100D determine “verification success” based on the two input verification results, Otherwise, it is determined as “authentication failure”. Using the CPU 911, the authentication result output unit 260E outputs data representing the authentication result.
- FIG. 37 is a flowchart showing an example of the flow of authentication processing in which the authentication device 200E in this embodiment authenticates the proving device 400E. Note that portions common to the signature verification processing described in the fifth embodiment are denoted by the same reference numerals, and description thereof is omitted here.
- the secret random number generation unit 452D of the certification device 400E uses the CPU 911 to randomly generate a secret random number y of 1 or more and p ⁇ 1 or less.
- the authentication request receiving unit 220E of the authentication device 200E uses the communication device 915 to receive the authentication request message transmitted by the proving device 400E in the authentication request transmitting step S743E.
- the challenge generation unit 231E of the authentication device 200E uses the CPU 911 to randomly generate an integer c of 1 or more and p ⁇ 1 or less.
- the question transmission step S753E the question transmission unit 226E of the authentication device 200E transmits a question message including the integer c generated by the challenge generation unit 231E in the challenge generation step S752E to the certification device 400E using the communication device 915. To do.
- the question receiving unit 454E of the proving device 400E uses the communication device 915 to receive the question message transmitted by the authentication device 200E in the question transmitting step S753E.
- the signature integer calculation step S745E the signature integer calculation unit 455D of the certification device 400E uses the CPU 911 to store the order p stored in the encryption parameter storage unit 490D, the integer s stored in the signature key storage unit 420D, and the secret random number.
- the reply transmission unit 475E of the certification device 400E uses the communication device 915 to send a reply message including the integer z calculated by the signature integer calculation unit 455D in the signature integer calculation step S745E to the authentication device 200E. To send.
- the response reception unit 227E of the authentication device 200E receives the response message transmitted by the certification device 400E in the response transmission step S746E using the communication device 915.
- the first verification step S732D to the second verification step S735D are the same as the steps described in the fifth embodiment.
- the authentication result output unit 260E uses the CPU 911 to determine that the authentication is successful and outputs the authentication result. Thereafter, the authentication process is terminated.
- the authentication result output unit 260E uses the CPU 911 to determine that authentication has failed and outputs the authentication result.
- the authentication device 200E in this embodiment includes a processing device (CPU 911) that processes data, a transmission device (communication device 915) that transmits data, a reception device (communication device 915) that receives data, and an authentication request reception.
- the authentication request receiving unit 220E receives the authentication request message using the receiving device (communication device 915).
- the question transmission unit 226E transmits a question message as a response to the authentication request message received by the authentication request reception unit 220E using the transmission device (communication device 915).
- the answer receiving unit 227E receives an answer message to the transmitted question message using the receiving device (communication device 915).
- the signature verification unit 230D uses the processing device (CPU 911) to determine the verification device 100D based on the authentication request message received by the authentication request reception unit 220E and the response message received by the response reception unit 227E. , An integer e (hash value h), an element s (element X) of the finite group (additive group) G, and an element h (element R ′) of the finite group (additive group) G are calculated.
- the verification apparatus 100D includes an integer e (hash value h) calculated by the signature verification unit 230D, an element s (element X) of the finite group (additive group) G, and an element of the finite group (additive group) G.
- h (element R ′) is input to determine whether the verification is successful.
- the authentication result output unit 260E uses the processing device (CPU 911) to output an authentication result indicating whether or not the authentication is successful based on the result verified by the verification device 100D.
- the time required for the verification device 100D to verify the integrity of the signature can be shortened, the time required for the entire processing for the authentication device 200E to verify the certification device 400E can be shortened. .
- the authentication device 200E in this embodiment further includes a storage device (such as a magnetic disk device 920 or a RAM 914) that stores data, an encryption parameter storage unit 290D, an identification storage unit 210D, and a challenge generation unit 231E.
- a storage device such as a magnetic disk device 920 or a RAM 914.
- the encryption parameter storage unit 290D uses the order p of the finite group (additive group) G, the generator g of the finite group (additive group) G, and the above
- the element X of the finite group (additive group) G is stored.
- the identification storage unit 210D stores a bit string ID for identifying the proving device 400E using the storage device (magnetic disk device 920).
- the authentication request receiving unit 220E uses the element R of the finite group (additive group) G, the element S of the finite group (additive group) G, and the finite group ( The element Y of the additive group) is received from the proving device 400E as the authentication request message.
- the challenge generation unit 231E randomly generates an integer c of 1 or more and p ⁇ 1 or less using the processing device (CPU 911).
- the question transmission unit 226E transmits the integer c generated by the challenge generation unit 231E as the question message to the certification device 400E using the transmission device (communication device 915).
- the answer receiving unit 227E receives the integer z of 1 or more and p ⁇ 1 or less from the proving apparatus 400E as the answer message using the receiving device (communication device 915).
- the signature verification unit 230D includes an integer calculation unit 232D, a verification source calculation unit 233D, and a first verification unit 250D.
- the first verification unit 250D uses the processing device (CPU 911) to generate the source g stored in the cryptographic parameter storage unit 290D, the source S and the source Y received by the authentication request receiving unit 220E, and the challenge Based on the integer c generated by the generating unit 231E and the integer z received by the answer receiving unit 227E, an element Y + c ⁇ obtained by adding the element c ⁇ S obtained by adding the element S to the integer c times and the element Y + It is determined whether S is equal to an element z ⁇ g obtained by adding the element g to the integer z times. If the element Y + c ⁇ S is equal to the element z ⁇ g, it is determined that the verification is successful, This is the first verification result.
- CPU 911 processing device
- the verification apparatus 100D includes the order p stored by the encryption parameter storage unit 290D as the order p, the integer h calculated by the integer calculation unit 232D as the integer e, and the encryption parameter storage unit as the element s.
- the element X stored in 290D and the element R ′ calculated by the verification element calculation unit 233D are input as the element h, and whether or not the verification is successful is determined as a second verification result.
- the authentication result output unit 260E uses the processing device (CPU 911) based on the first verification result verified by the first verification unit 250D and the second verification result verified by the verification device 100D. If both the first verification result and the second verification result determine that the verification is successful, an authentication result indicating that the authentication is successful is output.
- the authentication apparatus 200E described above has an element s e obtained by multiplying the element s of the multiplicative group e times by exponential multiplication in the multiplicative group or scalar multiplication in an additive group such as a group formed by points on the (super) elliptic curve.
- the authentication method verification device authenticates the proving device 400E by verifying whether the element e ⁇ s obtained by adding the element s of the additive group e times matches the known element h.
- the authentication device 200E A device (integer division unit 110) for dividing the exponent part (integer e); Using the divided exponents (integer e 1 and integer e 2 ), perform two-basis exponent power multiplication in the multiplicative group, or two-basis scalar multiplication in the additive group, such as the group formed by the points on the (hyper) elliptic curve.
- a device for calculating the value h e1 ⁇ e ⁇ e2 or e 1 ⁇ he 2 ⁇ s (verification value calculation unit 130),
- An apparatus (verification determination unit 150) for determining whether the value is equal to the unit element 1 of the multiplicative group or the unit element 0 of the additive group.
- the authentication device 200E authentication method verification device
- the integer dividing unit 110 described above divides the exponent part (integer e) by calculating the extended Euclidean algorithm.
- the integer dividing unit 110 described above performs the repeated division of two integers. Integer v 2 for the division, and an integer v 1 is divided, respectively, computing device an integer v 2 for the division of the remainder v 3, and before the step of dividing the previous steps (third remainder calculation unit 117) , Certain number of the remainder v 3 of the division result of each step ( ⁇ p) above, and a computing device (conformity judging unit 116) determines that or at a certain number ( ⁇ p) below.
- the authentication device 200E described above is a BNN-ID based authentication method verification device.
- the authentication device 200E A multiplicative or additive group element X that is a public key of the secret key generation center (key generation apparatus 300D), an element R that is a part of the private key (signature key) of the person to be authenticated (certification apparatus 400E), Based on the commit value (original) S of the authenticator and the bit string ID for identifying the user to be authenticated, the original R ⁇ X ⁇ H (R, ID) or R + H (R, ID) ⁇ X matches the original S.
- An apparatus for calculating the value (S / R) e1 ⁇ X ⁇ e2 or e 1 ⁇ (S ⁇ R) ⁇ e 2 ⁇ X,
- An apparatus for determining whether the value is equal to the unit element 1 of the multiplicative group or the unit element 0 of the additive group.
- the ID-based authentication system 820E described above is an authentication system based on the BNN-ID-based authentication method.
- the ID-based authentication system 820E includes a prover (certification device 400E) and an authenticator (authentication device 200E).
- the prover (certification device 400E) sends a commitment Cmt (authentication request message) to the verifier (authentication device 200E).
- the verifier (authentication apparatus 200E) receives the commitment Cmt, calculates challenge data Ch (question message) from the commitment Cmt and public information (encryption parameters, public parameters), and sends it to the prover (certification apparatus 400E).
- the prover receives the challenge data Ch, calculates the response data Rsp, and sends it to the verifier (authentication device 200E).
- the verifier receives the response data Rsp and verifies whether it is correct data.
- the verifier determines that authentication is successful if the answer data is correct, and otherwise fails.
- the ID-based authentication system 820E uses a multiplicative group G whose order p is a prime number and a generator g of the multiplicative group G.
- the key generation device 300D performs a user secret key derivation process.
- the key generation device 300D uses the CPU 911 to generate a random integer (secret random number) r between 1 and p ⁇ 1.
- the proving apparatus 400E first uses the CPU 911 to generate a random integer (secret random number) y that is 1 or more and p ⁇ 1 or less.
- the authentication device 200E uses the CPU 911 to generate a random integer c of 1 or more and p ⁇ 1 or less and sets it as challenge data Ch (question data).
- the verification apparatus 100 speeds up the verification process has been described.
- this technique is not limited to the example described above, and is widely distributed logarithmic type.
- the present invention can be applied to cryptographic systems such as cryptographic communication systems, authentication systems, and signature systems.
- the group operation is described additively has been mainly described, but it is not essential whether the group operation is described by addition or multiplication.
- group operations can be calculated using a processing device such as a computer, and if a single group operation takes a lot of time, this technology can significantly increase the speed. It is.
- FIG. 3 is a block configuration diagram illustrating an example of a functional block configuration of the ciphertext decryption apparatus 200 according to the first embodiment.
- FIG. 3 is a diagram illustrating an example of an appearance of a ciphertext decryption apparatus 200 according to Embodiment 1.
- FIG. 3 is a diagram illustrating an example of hardware resources of the ciphertext decryption apparatus 200 according to the first embodiment.
- FIG. 3 is a block configuration diagram illustrating an example of a configuration of an internal block of the verification apparatus 100 according to the first embodiment.
- FIG. 3 is a detailed block diagram illustrating an example of a configuration of an internal block of the integer dividing unit 110 according to the first embodiment.
- the flowchart figure which shows an example of the flow of the integer division
- FIG. 3 is a detailed block diagram illustrating an example of a configuration of an internal block of a verification value calculation unit 130 in the first embodiment.
- FIG. 6 is a flowchart showing an example of a flow of verification value calculation processing in which the verification value calculation unit according to Embodiment 1 calculates an element a of a finite group G.
- FIG. 9 is a system configuration diagram showing an example of the overall configuration of an ID-based public key encryption system 820A in the second embodiment.
- FIG. 10 is a block configuration diagram illustrating an example of a configuration of a part of functional blocks of an encryption parameter setting device 810A according to Embodiment 2.
- FIG. 9 is a block configuration diagram showing an example of a functional block configuration of a key generation device 300A in a second embodiment.
- the block block diagram which shows an example of a structure of the functional block of the ciphertext generator 400A in Embodiment 2.
- FIG. The block block diagram which shows an example of a structure of the functional block of 200 A of ciphertext decryption apparatuses in Embodiment 2.
- FIG. 10 is a system configuration diagram illustrating an example of an overall configuration of a public key encryption system 820B according to Embodiment 3.
- FIG. 10 is a block configuration diagram illustrating an example of a functional block configuration of a key generation device 300B according to Embodiment 3.
- FIG. 10 is a block configuration diagram illustrating an example of a functional block configuration of a ciphertext generation apparatus 400B according to Embodiment 3.
- FIG. 10 is a block configuration diagram illustrating an example of a functional block configuration of a ciphertext decryption apparatus 200B according to Embodiment 3.
- the flowchart figure which shows an example of the flow of the ciphertext decryption process in which the ciphertext decryption apparatus 200A in Embodiment 3 decrypts the ciphertext c.
- FIG. 10 is a system configuration diagram illustrating an example of an overall configuration of an ID-based public key encryption system 820C according to a fourth embodiment.
- FIG. 10 is a block configuration diagram illustrating an example of a configuration of a part of functional blocks of an encryption parameter setting device 810C according to a fourth embodiment.
- FIG. 10 is a block configuration diagram illustrating an example of a functional block configuration of a key generation device 300C according to a fourth embodiment.
- FIG. 10 is a block configuration diagram illustrating an example of a functional block configuration of a ciphertext generation apparatus 400C according to a fourth embodiment.
- the block block diagram which shows an example of a structure of the functional block of 200 C of ciphertext decryption apparatuses in Embodiment 4.
- FIG. FIG. 10 is a detailed block diagram illustrating an example of a configuration of an internal block of a verification device 100C according to a fourth embodiment.
- FIG. 18 is a system configuration diagram illustrating an example of an overall configuration of an ID-based signature system 820D according to the fifth embodiment.
- FIG. 16 is a block configuration diagram illustrating an example of a configuration of a part of functional blocks of an encryption parameter setting device 810D according to a fifth embodiment.
- FIG. 16 is a block configuration diagram illustrating an example of a functional block configuration of a key generation device 300D according to a fifth embodiment.
- FIG. 16 is a block configuration diagram illustrating an example of a functional block configuration of a signature device 400D according to the fifth embodiment.
- FIG. 16 is a block configuration diagram illustrating an example of a functional block configuration of a signature verification apparatus 200D according to a fifth embodiment.
- the signature verification apparatus 200D in Embodiment 5 is a flowchart figure which shows an example of the flow of the signature verification process which verifies signature (sigma).
- FIG. 18 is a system configuration diagram showing an example of the overall configuration of an ID-based authentication system 820E in a sixth embodiment.
- FIG. 20 is a block configuration diagram showing an example of a functional block configuration of a certification device 400E according to a sixth embodiment.
- FIG. 20 is a block configuration diagram illustrating an example of a functional block configuration of an authentication device 200E according to a sixth embodiment.
- the flowchart figure which shows an example of the flow of the authentication process in which the authentication apparatus 200E in Embodiment 6 authenticates the certification
- 100, 100A, 100B, 100C, 100D verification device 110, 110C integer division unit, 111 order input unit, 112 integer input unit, 113 initial value setting unit, 114 first remainder storage unit, 115 second remainder storage unit, 116 conformity determination unit, 117 third remainder calculation unit, 124 first coefficient storage unit, 125 second coefficient storage unit, 126 quotient calculation unit, 127 third coefficient calculation unit, 129 divided integer output unit, 130, 130C verification value Calculation unit, 131 Divided integer input unit, 132 Original input unit, 133 Index calculation unit, 134 Table generation unit, 135 Table storage unit, 141 Verification initial value setting unit, 142 Multiplication result storage unit, 143 Dual basis addition unit, 144 Addition result storage unit, 145 multiplication unit, 149 verification value output unit, 150, 150C verification determination unit, 00, 200A, 200B, 200C ciphertext decryption device, 200D signature verification device, 200E authentication device, 210, 210A, 210B, 210C key storage unit, 210D
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Algebra (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Mathematical Physics (AREA)
- Pure & Applied Mathematics (AREA)
- Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Storage Device Security (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
Description
有限群を利用した暗号システムにおいて、暗号文の整合性を検証するなどのために、有限群の元h、s及び整数eに基づいて、h=e・s(有限群の群演算を加法的に記述した場合)またはh=se(有限群の群演算を乗法的に記述した場合)であるか否かを判定する場合がある。
この発明は、例えば、上記のような課題を解決するためになされたものであり、コンピュータなどの処理装置を用いてh=s・eであるか否かを高速に判定することを目的とする。
データを処理する処理装置と、整数分割部と、検証値算出部と、検証判定部とを有し、
上記整数分割部は、上記処理装置を用いて、有限群Gの位数pと、整数eとを入力し、入力した位数pと整数eとに基づいて、e1・e≡e2(mod p)を満たす整数e1と整数e2とを算出し、
上記検証値算出部は、上記処理装置を用いて、上記有限群Gの元sと、上記有限群Gの元hとを入力し、入力した元sと元hと、上記整数分割部が算出した整数e1と整数e2とに基づいて、上記有限群Gの元a(=e1・h-e2・s)を算出し、
上記検証判定部は、上記処理装置を用いて、上記検証値算出部が算出した元aに基づいて、上記元aが上記有限群Gの単位元である場合に、検証成功と判定することを特徴とする。
上記整数分割部が、上記処理装置を用いて、上記整数e1の絶対値が上記位数pの平方根よりも小さく、かつ、上記整数e2が上記位数pの平方根よりも小さいという条件を満たす整数e1と整数e2とを算出することを特徴とする。
上記整数分割部は、第一剰余記憶部と、第二剰余記憶部と、初期値設定部と、適合性判定部と、第三剰余算出部と、分割整数出力部とを有し、
上記第一剰余記憶部は、上記記憶装置を用いて、整数v1を記憶し、
上記第二剰余記憶部は、上記記憶装置を用いて、整数v2を記憶し、
上記初期値設定部は、上記処理装置を用いて、上記位数pを上記整数v1として上記第一剰余記憶部に記憶させ、上記整数eを上記整数v2として上記第二剰余記憶部に記憶させ、
上記適合性判定部は、上記処理装置を用いて、上記第二剰余記憶部が記憶した整数v2が上記位数pの平方根よりも小さい場合に、出力条件を満たしたと判定し、
上記第三剰余算出部は、上記処理装置を用いて、上記適合性判定部が出力条件を満たしたと判定しない場合に、上記第一剰余記憶部が記憶した整数v1と、上記第二剰余記憶部が記憶した整数v2とに基づいて、上記整数v1を上記整数v2で割った余りを算出して、整数v3とし、上記第二剰余記憶部が記憶した整数v2を上記整数v1として上記第一剰余記憶部に記憶させ、算出した整数v3を上記整数v2として上記第二剰余記憶部に記憶させ、
上記分割整数出力部は、上記処理装置を用いて、上記適合性判定部が出力条件を満たしたと判定した場合に、上記第二剰余記憶部が記憶した整数v2を上記整数e2として出力することを特徴とする。
上記整数分割部が、更に、第一係数記憶部と、第二係数記憶部と、商算出部と、第三係数算出部とを有し、
上記第一係数記憶部は、上記記憶装置を用いて、整数t1を記憶し、
上記第二係数記憶部は、上記記憶装置を用いて、整数t2を記憶し、
上記初期値設定部は、更に、上記処理装置を用いて、上記整数t1として0を上記第一係数記憶部に記憶させ、上記整数t2として1を上記第二係数記憶部に記憶させ、
上記商算出部は、上記処理装置を用いて、上記第一剰余記憶部が記憶した整数v1と、上記第二剰余記憶部が記憶した整数v2とに基づいて、上記整数v1を上記整数v2で割った商を超えない最大の整数を算出して、整数qとし、
上記第三係数算出部は、上記処理装置を用いて、上記適合性判定部が出力条件を満たしたと判定しない場合に、上記第一係数記憶部が記憶した整数t1と、上記第二係数記憶部が記憶した整数t2と、上記商算出部が算出した整数qとに基づいて、上記整数t2と上記整数qとの積を、上記整数t1から減算した整数を算出して、整数t3とし、上記第二係数記憶部が記憶した整数t2を上記整数t1として上記第一係数記憶部に記憶させ、算出した整数t3を上記整数t2として上記第二係数記憶部に記憶させ、
上記分割整数出力部は、更に、上記処理装置を用いて、上記適合性判定部が出力条件を満たしたと判定した場合に、上記第二係数記憶部が記憶した整数t2を上記整数e1として出力することを特徴とする。
上記検証値算出部が、上記処理装置を用いて、Σ(ni・Pi)(ただし、nは2以上の所定の整数。iは0以上k以下の整数。kは上記整数e1の絶対値及び上記整数e2をn進法で表記した場合の桁数の最大値。Piは、上記有限群Gの元で、Pi=e1,sgn・e1,i・h-e2,i・s。e1,sgnは1または-1。e1,i及びe2,iは0以上n-1以下の整数で、e1=e1,sgn・Σ(ni・e1,i)、e2=Σ(ni・e2,i)。)を算出して、上記有限群Gの元aとすることを特徴とする。
データを記憶する記憶装置と、データを処理する処理装置と、鍵記憶部と、暗号文入力部と、暗号文検証部と、検証装置と、復号文生成部とを有し、
上記鍵記憶部は、上記記憶装置を用いて、暗号文を復号する鍵を記憶し、
上記暗号文入力部は、上記処理装置を用いて、暗号文を入力し、
上記暗号文検証部は、上記処理装置を用いて、上記鍵記憶部が記憶した鍵と、上記暗号文入力部が入力した暗号文とに基づいて、上記検証装置に入力する整数eと、上記有限群Gの元sと、上記有限群Gの元hとを算出し、
上記検証装置は、上記暗号文検証部が算出した整数eと、上記有限群Gの元sと、上記有限群Gの元hとを入力して、検証成功か否かを判定し、
上記復号文生成部は、上記処理装置を用いて、上記検証装置が検証成功と判定した場合に、上記暗号文入力部が入力した暗号文を上記鍵記憶部が記憶した鍵により復号して、復号文を生成することを特徴とする。
上記暗号パラメータ記憶部は、上記記憶装置を用いて、上記有限群Gの位数pと、上記有限群Gの生成元g1と、上記有限群Gの元Rとを記憶し、
上記識別記憶部は、上記記憶装置を用いて、上記暗号文復号装置を識別するビット列IDを記憶し、
上記識別元算出部は、上記処理装置を用いて、上記識別記憶部が記憶したビット列IDに基づいて、所定のハッシュ関数H1により上記ビット列IDをハッシュしたハッシュ値を算出して、整数H1(ID)とし、上記暗号パラメータ記憶部が記憶した生成元g1と、上記暗号パラメータ記憶部が記憶した元Rと、算出した整数H1(ID)とに基づいて、上記生成元g1を整数H1(ID)倍した元と、上記元Rとを加算して、上記有限群Gの元Q(=R+H1(ID)・g1)とし、
上記識別元記憶部は、上記記憶装置を用いて、上記識別元算出部が算出した元Qを記憶し、
上記鍵記憶部は、上記記憶装置を用いて、有限群G2の元DIDを記憶し、
上記暗号文入力部は、上記処理装置を用いて、上記有限群Gの元Uと、ビット列Vとを上記暗号文として入力し、
上記暗号文検証部は、ペアリング値算出部と、ビット列算出部と、整数算出部とを有し、
上記ペアリング値算出部は、上記処理装置を用いて、上記暗号文入力部が入力した元Uと、上記鍵記憶部が記憶した元DIDとに基づいて、所定のペアリング関数eにより上記元Uと上記元DIDとのペアリング値を算出して、ペアリング値α(=e(U,DID))とし、
上記ビット列算出部は、上記処理装置を用いて、上記ペアリング値算出部が算出したペアリング値αに基づいて、所定のハッシュ関数H2により上記ペアリング値αをハッシュしたハッシュ値を算出して、ビット列H2(α)とし、上記暗号文入力部が入力したビット列Vと、算出したビット列H2(α)とに基づいて、上記ビット列Vと上記ビット列H2(α)との排他的論理和を取って、ビット列m(=V XOR H2(α))とし、
上記整数算出部は、上記処理装置を用いて、上記ビット列算出部が算出したビット列mに基づいて、所定のハッシュ関数H3により上記ビット列mをハッシュしたハッシュ値を算出して、整数r(=H3(m))とし、
上記検証装置は、上記位数pとして上記暗号パラメータ記憶部が記憶した位数pと、上記整数eとして上記整数算出部が算出した整数rと、上記元sとして上記識別元記憶部が記憶した元Qと、上記元hとして上記暗号文入力部が入力した元Uとを入力して、検証成功か否かを判定し、
上記復号文生成部は、上記処理装置を用いて、上記検証装置が検証成功と判定した場合に、上記ビット列算出部が算出したビット列mに基づいて、所定のハッシュ関数H4により上記ビット列mをハッシュしたハッシュ値を算出して、共通鍵K(=H4(m))とし、算出した共通鍵Kを上記復号文として出力することを特徴とする。
上記識別元算出部が、上記暗号文入力部が上記暗号文を入力するよりも前に、上記元Qを算出することを特徴とする。
上記共通鍵記憶部は、上記記憶装置を用いて、上記復号文生成部が出力した共通鍵Kを記憶し、
上記暗号化メッセージ入力部は、上記処理装置を用いて、暗号化メッセージを入力し、
上記メッセージ復号部は、上記処理装置を用いて、上記共通鍵記憶部が記憶した共通鍵Kにより上記暗号化メッセージ入力部が入力した暗号化メッセージを復号することを特徴とする。
上記暗号パラメータ記憶部は、上記記憶装置を用いて、上記有限群Gの位数pを記憶し、
上記鍵記憶部は、上記記憶装置を用いて、1以上p-1以下の整数wと、1以上p-1以下の整数xと、1以上p-1以下の整数yと、1以上p-1以下の整数zとを記憶し、
上記暗号文入力部は、上記処理装置を用いて、上記有限群Gの元uと、上記有限群Gの元u’と、上記有限群Gの元vとを上記暗号文として入力し、
上記暗号文検証部は、ハッシュ値算出部と、整数算出部とを有し、
上記ハッシュ値算出部は、上記処理装置を用いて、上記暗号文入力部が入力した元uと元u’とに基づいて、所定のハッシュ関数Hにより上記元uと上記元u’とをハッシュしたハッシュ値を算出して、整数α(=H(u,u’))とし、
上記整数算出部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した位数pと、上記鍵記憶部が記憶した整数xと整数yと、上記ハッシュ値算出部が算出した整数αとに基づいて、上記整数yと上記整数αとの積と、上記整数xとの和を、上記位数pで割った余りを算出して、整数t(=(x+y・α)mod p)とし、
上記検証装置は、上記位数pとして上記暗号パラメータ記憶部が記憶した位数pと、上記整数eとして上記鍵記憶部が記憶した整数wと、上記元sとして上記暗号文入力部が入力した元uと、上記元hとして上記暗号文入力部が入力した元u’とを入力し、検証成功か否かを判定して、第一の検証結果とし、上記暗号パラメータ記憶部が記憶した位数pと、上記整数eとして上記整数算出部が算出した整数tと、上記元sとして上記暗号文入力部が入力した元uと、上記元hとして上記暗号文入力部が入力した元vとを入力し、検証成功か否かを判定して、第二の検証結果とし、
上記復号文生成部は、上記処理装置を用いて、上記検証装置が上記第一の検証結果及び上記第二の検証結果においてともに検証成功と判定した場合に、上記鍵記憶部が記憶した整数zと、上記暗号文入力部が入力した元uとに基づいて、上記元uを上記整数z回加算して、上記有限群Gの元h(=z・u)とし、上記暗号文入力部が入力した元uと、算出した元h~とに基づいて、所定の鍵導出関数KDFにより上記元uと上記元h~とから共通鍵K(=KDF(u,h~))を生成し、生成した共通鍵Kを上記復号文として出力することを特徴とする。
上記共通鍵記憶部は、上記記憶装置を用いて、上記復号文生成部が出力した共通鍵Kを記憶し、
上記暗号化メッセージ入力部は、上記処理装置を用いて、暗号化メッセージを入力し、
上記メッセージ復号部は、上記処理装置を用いて、上記共通鍵記憶部が記憶した共通鍵Kにより上記暗号化メッセージ入力部が入力した暗号化メッセージを復号することを特徴とする。
上記暗号パラメータ記憶部は、上記記憶装置を用いて、加法群G1の位数pと、上記加法群G1の生成元gと、上記位数pを位数とする乗法群GTの元v0とを記憶し、
上記鍵記憶部は、上記記憶装置を用いて、上記位数pを位数とする加法群G2の元d0と、上記加法群G2の元d1とを記憶し、
上記暗号文入力部は、上記処理装置を用いて、ビット列cと、上記加法群G1の元c0と、上記加法群G1の元c1と、1以上p-1以下の整数tとを上記暗号文として入力し、
上記暗号文検証部は、ペアリング値算出部と、整数算出部とを有し、
上記ペアリング値算出部は、上記処理装置を用いて、上記暗号文入力部が入力した元c0と、上記秘密鍵記憶部が記憶した元d0とに基づいて、所定のペアリング関数eにより上記元c0と上記元d0とのペアリング値を算出して、上記乗法群GTの元k0(=e(c0,d0))とし、上記暗号文入力部が入力した元c1と、上記秘密鍵記憶部が記憶した元d1とに基づいて、上記ペアリング関数eにより上記元c1と上記元d1とのペアリング値を算出して、上記乗法群GTの元k1(=e(c1,d1))とし、算出した上記元k0と、算出した上記元k1とに基づいて、上記元k0を上記元k1で除算して、上記乗法群GTの元k(=k0/k1)とし、
上記整数算出部は、上記処理装置を用いて、上記ペアリング値算出部が算出した元kと、上記暗号文入力部が入力したビット列cと元c0と元c1とに基づいて、所定のハッシュ関数H”により上記元kと上記ビット列cと上記元c0と上記元c1とをハッシュしたハッシュ値を算出して、整数H”(k,c,c0,c1)とし、上記暗号文入力部が入力した整数tと、算出した整数H”(k,c,c0,c1)と、上記暗号パラメータ記憶部が機記憶した位数pとに基づいて、上記整数tから上記整数H”(k,c,c0,c1)を減算した整数を位数pで割った余りを算出して、整数s(=t-H”(k,c,c0,c1)mod p)とし、
上記検証装置は、上記加法群G1を上記有限群Gとして、上記位数pとして上記暗号パラメータ記憶部が記憶した位数pと、上記整数eとして上記整数算出部が算出した整数sと、上記元sとして上記暗号パラメータ記憶部が記憶した生成元gと、上記元hとして上記暗号文入力部が入力した元c0とを入力し、検証成功か否かを判定して、第一の検証結果とし、上記乗法群GTを上記有限群Gとして、上記位数pとして上記暗号パラメータ記憶部が記憶した位数pと、上記整数eとして上記整数算出部が算出した整数sと、上記元sとして上記暗号パラメータ記憶部が記憶した元v0と、上記元hとして上記ペアリング値算出部が算出した元kとを入力し、検証成功か否かを判定して、第二の検証結果とし、
上記復号文生成部は、上記処理装置を用いて、上記検証装置が上記第一の検証結果及び上記第二の検証結果おいてともに検証成功と判定した場合に、上記ペアリング値算出部が算出した元kとに基づいて、所定のハッシュ関数H’により上記元kをハッシュしたハッシュ値を算出して、ビット列H’(k)とし、上記暗号文入力部が入力したビット列cと、算出したビット列H’(k)とに基づいて、上記ビット列cと上記ビット列H’(k)との排他的論理和を取って、ビット列M’(=c XOR H’(k))とし、算出したビット列M’を上記復号文として出力することを特徴とする。
データを処理する処理装置と、メッセージ入力部と、署名入力部と、署名検証部と、検証装置と、検証結果出力部とを有し、
上記メッセージ入力部は、上記処理装置を用いて、メッセージを入力し、
上記署名入力部は、上記処理装置を用いて、上記メッセージ入力部が入力したメッセージに対する署名を入力し、
上記署名検証部は、上記処理装置を用いて、上記メッセージ入力部が入力したメッセージと、上記署名入力部が入力した署名とに基づいて、上記検証装置に入力する整数eと、上記有限群Gの元sと、上記有限群Gの元hとを算出し、
上記検証装置は、上記署名検証部が算出した整数eと、上記有限群Gの元sと、上記有限群Gの元hとを入力して、検証成功か否かを判定し、
上記検証結果出力部は、上記処理装置を用いて、上記検証装置が検証した結果に基づいて、検証成功であるか否か表わす検証結果を出力することを特徴とする。
上記暗号パラメータ記憶部は、上記記憶装置を用いて、上記有限群Gの位数pと、上記有限群Gの生成元gと、上記有限群Gの元Xとを記憶し、
上記識別記憶部は、上記記憶装置を用いて、署名装置を識別するビット列IDを記憶し、
上記メッセージ入力部は、上記処理装置を用いて、ビット列Mを上記メッセージとして入力し、
上記署名入力部は、上記処理装置を用いて、上記有限群Gの元Rと、上記有限群Gの元Sと、上記有限群Gの元Yと、1以上p-1以下の整数zとを上記署名として入力し、
上記署名検証部は、整数算出部と、検証元算出部と、チャレンジ算出部と、第一検証部とを有し、
上記整数算出部は、上記処理装置を用いて、上記署名入力部が入力した元Rと、上記識別記憶部が記憶したビット列IDとに基づいて、所定のハッシュ関数Hにより上記元Rと上記ビット列IDとをハッシュしたハッシュ値を算出して、整数h(=H(R,ID))とし、
上記検証元算出部は、上記処理装置を用いて、上記署名入力部が入力した元Rと元Sとに基づいて、上記元Sと、上記元Rの逆元とを加算して、上記有限群Gの元R’(=S-R)とし、
上記チャレンジ算出部は、上記処理装置を用いて、上記識別記憶部が記憶したビット列IDと、上記署名入力部が入力した元Rと元Sと元Yと、上記メッセージ入力部が入力したビット列Mとに基づいて、所定のハッシュ関数H’により上記ビット列IDと上記元Rと上記元Sと上記元Yと上記ビット列Mとをハッシュしたハッシュ値を算出して、整数c(=H’(I,R,S,Y,M))とし、
上記第一検証部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した生成元gと、上記署名入力部が入力した元Sと元Yと整数zと、上記チャレンジ算出部が算出した整数cとに基づいて、上記元Sを上記整数c回加算した元c・Sと上記元Yとを加算した元Y+c・Sが、上記元gを上記整数z回加算した元z・gと等しいか否かを判定し、上記元Y+c・Sと上記元z・gとが等しい場合に、検証成功と判定して、第一の検証結果とし、
上記検証装置は、上記位数pとして上記暗号パラメータ記憶部が記憶した位数pと、上記整数eとして上記整数算出部が算出した整数hと、上記元sとして上記暗号パラメータ記憶部が記憶した元Xと、上記元hとして上記検証元算出部が算出した元R’とを入力し、検証成功か否かを判定して、第二の検証結果とし、
上記検証結果出力部は、上記処理装置を用いて、上記第一検証部が検証した第一の検証結果と、上記検証装置が検証した第二の検証結果とに基づいて、上記第一の検証結果及び上記第二の検証結果においてともに検証成功と判定した場合に、検証成功であることを表わす検証結果を出力することを特徴とする。
データを処理する処理装置と、データを送信する送信装置と、データを受信する受信装置と、認証要求受信部と、質問送信部と、回答受信部と、署名検証部と、検証装置と、認証結果出力部とを有し、
上記認証要求受信部は、上記受信装置を用いて、認証要求メッセージを受信し、
上記質問送信部は、上記送信装置を用いて、上記認証要求受信部が受信した認証要求メッセージに対する応答として、質問メッセージを送信し、
上記回答受信部は、上記受信装置を用いて、送信した質問メッセージに対する回答メッセージを受信し、
上記署名検証部は、上記処理装置を用いて、上記認証要求受信部が受信した認証要求メッセージと、上記回答受信部が受信した回答メッセージとに基づいて、上記検証装置に入力する整数eと、上記有限群Gの元sと、上記有限群Gの元hとを算出し、
上記検証装置は、上記署名検証部が算出した整数eと、上記有限群Gの元sと、上記有限群Gの元hとを入力して、検証成功か否かを判定し、
上記認証結果出力部は、上記処理装置を用いて、上記検証装置が検証した結果に基づいて、認証成功であるか否か表わす認証結果を出力することを特徴とする。
上記暗号パラメータ記憶部は、上記記憶装置を用いて、上記有限群Gの位数pと、上記有限群Gの生成元gと、上記有限群Gの元Xとを記憶し、
上記識別記憶部は、上記記憶装置を用いて、証明装置を識別するビット列IDを記憶し、
上記認証要求受信部は、上記受信装置を用いて、上記有限群Gの元Rと、上記有限群Gの元Sと、上記有限群の元Yとを上記認証要求メッセージとして上記証明装置から受信し、
上記チャレンジ生成部は、上記処理装置を用いて、1以上p-1以下の整数cをランダムに生成し、
上記質問送信部は、上記送信装置を用いて、上記チャレンジ生成部が生成した整数cを上記質問メッセージとして上記証明装置に対して送信し、
上記回答受信部は、上記受信装置を用いて、1以上p-1以下の整数zを上記回答メッセージとして上記証明装置から受信し、
上記署名検証部は、整数算出部と、検証元算出部と、第一検証部とを有し、
上記整数算出部は、上記処理装置を用いて、上記認証要求受信部が受信した元Rと、上記識別記憶部が記憶したビット列IDとに基づいて、所定のハッシュ関数Hにより上記元Rと上記ビット列IDとをハッシュしたハッシュ値を算出して、整数h(=H(R,ID))とし、
上記検証元算出部は、上記処理装置を用いて、上記認証要求受信部が受信した元Rと元Sとに基づいて、上記元Sと、上記元Rの逆元とを加算して、上記有限群Gの元R’(=S-R)とし、
上記第一検証部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した生成元gと、上記認証要求受信部が受信した元Sと元Yと、上記チャレンジ生成部が生成した整数cと、上記回答受信部が受信した整数zとに基づいて、上記元Sを上記整数c回加算した元c・Sと上記元Yとを加算した元Y+c・Sが、上記元gを上記整数z回加算した元z・gと等しいか否かを判定し、上記元Y+c・Sと上記元z・gとが等しい場合に、検証成功と判定して、第一の検証結果とし、
上記検証装置は、上記位数pとして上記暗号パラメータ記憶部が記憶した位数pと、上記整数eとして上記整数算出部が算出した整数hと、上記元sとして上記暗号パラメータ記憶部が記憶した元Xと、上記元hとして上記検証元算出部が算出した元R’とを入力し、検証成功か否かを判定して、第二の検証結果とし、
上記認証結果出力部は、上記処理装置を用いて、上記第一検証部が検証した第一の検証結果と、上記検証装置が検証した第二の検証結果とに基づいて、上記第一の検証結果及び上記第二の検証結果においてともに検証成功と判定した場合に、認証成功であることを表わす認証結果を出力することを特徴とする。
データを処理する処理装置を有する検証装置が、整合性を検証する検証方法において、
上記処理装置が、有限群Gの位数pと、整数eとを入力し、入力した位数pと整数eとに基づいて、e1・e≡e2(mod p)を満たす整数e1と整数e2とを算出し、
上記処理装置が、上記有限群Gの元sと、上記有限群Gの元hとを入力し、入力した元sと元hと、算出した整数e1と整数e2とに基づいて、上記有限群Gの元a(=e1・h-e2・s)を算出し、
上記処理装置が、算出した元aに基づいて、上記元aが上記有限群Gの単位元である場合に、検証成功と判定することを特徴とする。
実施の形態1について、図1~図9を用いて説明する。
また、有限群Gにおける演算は、加法的に記述する。なお、これは、説明の便宜のためであって、群演算を乗法的に記述する群を除外するものではない。
有限群Gの位数pは、素数であるものとする。したがって、有限群Gは巡回群である。
暗号文復号装置200は、暗号文を入力し、入力した暗号文を復号して、復号文を生成する。
暗号文復号装置200は、鍵記憶部210、暗号文入力部220、暗号文検証部230、検証装置100、復号文生成部260を有する。
暗号文入力部220は、暗号文を入力する。
暗号文検証部230は、鍵記憶部210が記憶した鍵と、暗号文入力部220が入力した暗号文とに基づいて、暗号文入力部220が入力した暗号文を検証するために必要な値を算出する。
検証装置100は、暗号文検証部230が算出した値に基づいて、暗号文入力部220が入力した暗号文を検証する。
復号文生成部260は、検証装置100が検証に成功した場合に、暗号文入力部220が入力した暗号文を、鍵記憶部210が記憶した鍵により復号して、復号文を生成する。
暗号文復号装置200は、暗号文の整合性を検証して検証に成功した場合にのみ、復号文を生成することにより、正規の暗号文を解読する手がかりを不正者に与えるのを防ぐ。
暗号文復号装置200は、システムユニット910、CRT(Cathode・Ray・Tube)やLCD(液晶)の表示画面を有する表示装置901、キーボード902(Key・Board:K/B)、マウス903、FDD904(Flexible・Disk・Drive)、コンパクトディスク装置905(CDD)、プリンタ装置906、スキャナ装置907などのハードウェア資源を備え、これらはケーブルや信号線で接続されている。
システムユニット910は、コンピュータであり、ファクシミリ機932、電話器931とケーブルで接続され、また、ローカルエリアネットワーク942(LAN)、ゲートウェイ941を介してインターネット940に接続されている。
暗号文復号装置200は、プログラムを実行するCPU911(Central・Processing・Unit、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサともいう)を備えている。CPU911は、バス912を介してROM913、RAM914、通信装置915、表示装置901、キーボード902、マウス903、FDD904、CDD905、プリンタ装置906、スキャナ装置907、磁気ディスク装置920と接続され、これらのハードウェアデバイスを制御する。磁気ディスク装置920の代わりに、光ディスク装置、メモリカード読み書き装置などの記憶装置でもよい。
RAM914は、揮発性メモリの一例である。ROM913、FDD904、CDD905、磁気ディスク装置920の記憶媒体は、不揮発性メモリの一例である。これらは、記憶装置あるいは記憶部の一例である。
通信装置915、キーボード902、スキャナ装置907、FDD904などは、入力部、入力装置の一例である。
また、通信装置915、表示装置901、プリンタ装置906などは、出力部、出力装置の一例である。
磁気ディスク装置920には、オペレーティングシステム921(OS)、ウィンドウシステム922、プログラム群923、ファイル群924が記憶されている。プログラム群923のプログラムは、CPU911、オペレーティングシステム921、ウィンドウシステム922により実行される。
ファイル群924には、以下に述べる実施の形態の説明において、「~の判定結果」、「~の計算結果」、「~の処理結果」として説明する情報やデータや信号値や変数値やパラメータが、「~ファイル」や「~データベース」の各項目として記憶されている。「~ファイル」や「~データベース」は、ディスクやメモリなどの記録媒体に記憶される。ディスクやメモリになどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してCPU911によりメインメモリやキャッシュメモリに読み出され、抽出・検索・参照・比較・演算・計算・処理・出力・印刷・表示などのCPUの動作に用いられる。抽出・検索・参照・比較・演算・計算・処理・出力・印刷・表示のCPUの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリやキャッシュメモリやバッファメモリに一時的に記憶される。
また、以下に述べる実施の形態の説明において説明するフローチャートの矢印の部分は主としてデータや信号の入出力を示し、データや信号値は、RAM914のメモリ、FDD904のフレキシブルディスク、CDD905のコンパクトディスク、磁気ディスク装置920の磁気ディスク、その他光ディスク、ミニディスク、DVD(Digital・Versatile・Disk)等の記録媒体に記録される。また、データや信号は、バス912や信号線やケーブルその他の伝送媒体によりオンライン伝送される。
検証装置100は、有限群Gの元s及び元h、有限群Gの位数p、整数eを入力し、h=e・sであるか否かを判定する。なお、整数eは1以上p-1以下であるものとする。
整数分割部110は、CPU911を用いて、有限群Gの位数pと、整数eとを入力して、2つの整数e1,e2を算出する。
検証値算出部130は、CPU911を用いて、有限群Gの元s及び元hと、整数分割部110が算出した整数e1及び整数e2とに基づいて、有限群Gの元aを算出する。
検証判定部150は、CPU911を用いて、検証値算出部130が算出した元aが有限群Gの単位元であるか否かを判定する。元aが有限群Gの単位元である場合、検証判定部150は、検証成功(すなわち、h=e・sである)と判定する。
元aが単位元Oであると判定した場合、成功判定処理S704へ進む。
元aが単位元Oでないと判定した場合、失敗判定処理S705へ進む。
整数分割部110は、有限群Gの位数pと、整数eとに基づいて、e1・e≡e2(mod p)を満たす整数e1及び整数e2を算出する。すなわち、整数分割部110は、整数e1と整数eとの積を位数pで割った余りが、整数e2と等しくなるよう、整数e1及び整数e2を定める。
なお、検証値算出部130における計算を高速化するため、整数分割部110は、e1・e≡e2(mod p)を満たす整数e1及び整数e2のうち、絶対値が位数pの平方根よりも小さい整数e1と、位数pの平方根よりも小さい1以上の整数である整数e2とを選択する。
整数入力部112は、CPU911を用いて、整数eを表わすデータを入力する。整数入力部112は、RAM914を用いて、入力した整数eを表わすデータを記憶する。
第二剰余記憶部115は、RAM914を用いて、整数v2を表わすデータを記憶する。
第一係数記憶部124は、RAM914を用いて、整数t1を表わすデータを記憶する。
第二係数記憶部125は、RAM914を用いて、整数t2を表わすデータを記憶する。
初期値設定部113は、CPU911を用いて、位数入力部111が記憶した位数pを表わすデータと、整数入力部112が記憶した整数eを表わすデータとを入力する。初期値設定部113は、CPU911を用いて、入力した位数pを表わすデータを、整数v1を表わすデータとして第一剰余記憶部114に記憶させる。初期値設定部113は、CPU911を用いて、入力した整数eを表わすデータを、整数v2を表わすデータとして第二剰余記憶部115に記憶させる。初期値設定部113は、CPU911を用いて、整数t1を表わすデータとして0を表わすデータを第一係数記憶部124に記憶させる。初期値設定部113は、CPU911を用いて、整数t2を表わすデータとして1を表わすデータを第二係数記憶部125に記憶させる。
なお、適合性判定部116は、あらかじめ、CPU911を用いて、位数pの平方根を超えない最大の整数を算出しておいてもよい。
また、位数pの平方根を算出する代わりに、整数v2の2進表記における桁数と、位数pの2進表記における桁数とを比較することにより、出力条件を満たしたか否かを判定してもよい。すなわち、適合性判定部116は、あらかじめ、CPU911を用いて、位数pを表わすデータのビット数を求め、求めたビット数を2で割って(割り切れない場合は切り上げ)、平方根ビット数とする。平方根ビット数は、位数pの平方根を超えない整数の2進表記における桁数を表わす。適合性判定部116は、RAM914を用いて、算出した平方根ビット数を記憶しておき、CPU911を用いて、整数v2を表わすデータのビット数を算出する。適合性判定部116は、CPU911を用いて、算出したビット数と、記憶した平方根ビット数とを比較し、整数v2を表わすデータのビット数が、平方根ビット数以下である場合に、整数v2のほうが位数pの平方根よりも小さいものとみなし、出力条件を満たしたと判定する。
整数v2が位数pの平方根より小さいと判定した場合、分割整数出力工程S718へ進む。
整数v2が位数pの平方根より大きいと判定した場合、剰余算出工程S713へ進む。
その後、適合性判定工程S712に戻る。
その後、整数分割処理を終了する。
検証値算出部130は、有限群Gの元s及び元hと、整数分割部110が算出した整数e1及び整数e2とに基づいて、有限群Gの元a(=e1・h-e2・s)を算出する。
索引算出部133は、CPU911を用いて、算出した整数e1の絶対値に基づいて、整数e1の絶対値をn進法で表わした各桁である整数の組(e1,i)(ただし、iは0以上k-1以下の整数。nはあらかじめ定めた2以上の整数。)を算出する。すなわち、索引算出部133は、CPU911を用いて、以下の条件を満たす整数の組(e1,i)を算出する。
例えば、n=2、e1=23、e2=34であれば、e1=(10111)2、e2=(100010)2であるから、k=6である。
テーブル生成部134は、CPU911を用いて、入力したデータが表わす元sと元hと判定結果とに基づいて、n×n個の有限群Gの元px,y(=e1,sgn・x・h-y・s。ただし、x及びyは0以上n-1以下の整数。e1,sgnは、整数e1が正の場合、1。整数e1が負の場合、-1。)を算出する。
例えば、n=2の場合、テーブル生成部134は、4つの元p0,0、p1,0、p0,1、p1,1を算出する。なお、元p0,0は常に単位元であるから、テーブル生成部134は、他の3つの元だけを算出してもよい。
テーブル記憶部135は、RAM914を用いて、テーブル生成部134が算出したn×n個の元px,yを表わすデータを記憶する。
加算結果記憶部144は、RAM914を用いて、有限群Gの元aを算出する途中の値である有限群Gの元a”を表わすデータを記憶する。
二基底加算部143は、CPU911を用いて、入力したデータが表わす整数e1,i及び整数e2,iに基づいて、テーブル記憶部135が記憶した有限群Gの元px,yを表わすデータのなかから、x=e1,i、y=e2,iである元px,yを表わすデータを元Piを表わすデータとして取得する。
二基底加算部143は、CPU911を用いて、倍算結果記憶部142が記憶した有限群Gの元a’を表わすデータを入力する。
二基底加算部143は、CPU911を用いて、入力したデータが表わす有限群Gの元a’と、元Piとに基づいて、元a’と元Piとを加算した元a’+Piを算出する。
二基底加算部143は、CPU911を用いて、算出した元a’+Piを表わすデータを、元a”を表わすデータとして加算結果記憶部144に記憶させる。
倍算部145は、CPU911を用いて、算出した元n・a”を表わすデータを、元a’を表わすデータとして倍算結果記憶部142に記憶させる。
索引算出部133は、CPU911を用いて、分割整数入力部131が入力した整数e1に基づいて、k個の整数e1,i(ただし、iは0以上k-1以下の整数。)を算出する。例えば、索引算出部133は、CPU911を用いて、整数e1の絶対値をnのi乗で割った商を超えない最大の整数をnで割った余りを算出して、e1,iとする。
同様に、索引算出部133は、CPU911を用いて分割整数入力部131が入力した整数e2に基づいて、k個の整数e2,i(ただし、iは0以上k-1以下の整数。)を算出する。例えば、索引算出部133は、CPU911を用いて、整数e2をnのi乗で割った商を超えない最大の整数をnで割った余りを算出して、e2,iとする。
テーブル記憶部135は、RAM914を用いて、テーブル生成部134が算出したn2個の元px,yを記憶する。
二基底加算部143は、CPU911を用いて、取得した整数e1,iと整数e2,iとに基づいて、テーブル記憶部135が記憶したn2個の有限群Gの元px,yのなかから、x=e1,j、y=e2,jである元px,yを取得して、元Piとする。
二基底加算部143は、CPU911を用いて、倍算結果記憶部142が記憶した有限群Gの元a’と、取得した元Piとに基づいて、有限群Gにおける演算により、元a’と元Piとを加算した元a’+Piを算出する。
加算結果記憶部144は、RAM914を用いて、二基底加算部143が算出した元a’+Piを、元a”として記憶する。
算出した整数jが正または0である場合、倍算工程S727へ進む。
算出した整数jが負になった場合、検証値出力工程S728へ進む。
倍算結果記憶部142は、RAM914を用いて、倍算部145が算出した元n・a”を、元a’として記憶する。
その後、二基底加算工程S725に戻る。
その後、検証値算出処理を終了する。
なお、以下の説明において、有限群Gの群演算を1回するのにかかる時間をTとする。また、それ以外の計算やデータの取得などにかかる時間は、Tよりもはるかに短いので、無視する。
二基底可算工程S725において、二基底加算部143は、元a”を算出するために群演算を1回する。二基底可算工程S725はk回繰り返されるので、二基底可算工程S725にかかる時間は、全部でkTである。
nが2のべき乗である場合、倍算工程S727において、倍算部145は、元a’を算出するために群演算をlog2n回する。倍算工程S727はk-1回繰り返されるので、倍算工程S727にかかる時間は、全部でlog2n(k-1)Tである。
したがって、検証値算出処理全体にかかる時間は、[n2-3+k+log2n(k-1)]Tである。例えば、n=2の場合は2kT、n=4の場合は(3k+12)Tである。
算出手順は、検証値算出処理と同様とする。ただし、基底となる元が一つなので、あらかじめ算出しておくテーブルには、n個の元x・s(xは0以上n-1以下の整数。)を記憶する。
テーブルの生成にかかる時間は、(n-2)Tである。
加算にかかる時間は、全部でk’Tである。
倍算にかかる時間は、全部でlog2n(k’-1)Tである。
したがって、e・sの算出全体にかかる時間は、[n-2+k’+log2n(k’-1)]Tである。例えば、n=2の場合は(2k’-1)T、n=4の場合は3k’Tである。
これに対して、e1の絶対値及びe2は1以上√p未満の整数なので、kは、√pをn進法で表わした場合の桁数と、確率的にほぼ等しく、k’の約半分である。
したがって、h=e・sであるか否かを判定するのにかかる時間が、約半分になる。
上記整数分割部110は、上記処理装置(CPU911)を用いて、有限群Gの位数pと、整数eとを入力し、入力した位数pと整数eとに基づいて、e1・e≡e2(mod p)を満たす整数e1と整数e2とを算出する。
上記検証値算出部130は、上記処理装置(CPU911)を用いて、上記有限群Gの元sと、上記有限群Gの元hとを入力し、入力した元sと元hと、上記整数分割部110が算出した整数e1と整数e2とに基づいて、上記有限群Gの元a(=e1・h-e2・s)を算出する。
上記検証判定部150は、上記処理装置(CPU911)を用いて、上記検証値算出部130が算出した元aに基づいて、上記元aが上記有限群Gの単位元である場合に、検証成功と判定する。
上記整数分割部110は、第一剰余記憶部114と、第二剰余記憶部115と、初期値設定部113と、適合性判定部116と、第三剰余算出部117と、分割整数出力部129とを有する。
上記第一剰余記憶部114は、上記記憶装置(RAM914)を用いて、整数v1を記憶する。
上記第二剰余記憶部115は、上記記憶装置(RAM914)を用いて、整数v2を記憶する。
上記初期値設定部113は、上記処理装置(CPU911)を用いて、上記位数pを上記整数v1として上記第一剰余記憶部114に記憶させ、上記整数eを上記整数v2として上記第二剰余記憶部115に記憶させる。
上記適合性判定部116は、上記処理装置(CPU911)を用いて、上記第二剰余記憶部115が記憶した整数v2が上記位数pの平方根よりも小さい場合に、出力条件を満たしたと判定する。
上記第三剰余算出部117は、上記処理装置(CPU911)を用いて、上記適合性判定部116が出力条件を満たしたと判定しない場合に、上記第一剰余記憶部114が記憶した整数v1と、上記第二剰余記憶部115が記憶した整数v2とに基づいて、上記整数v1を上記整数v2で割った余りを算出して、整数v3とし、上記第二剰余記憶部115が記憶した整数v2を上記整数v1として上記第一剰余記憶部114に記憶させ、算出した整数v3を上記整数v2として上記第二剰余記憶部115に記憶させる。
上記分割整数出力部129は、上記処理装置(CPU911)を用いて、上記適合性判定部116が出力条件を満たしたと判定した場合に、上記第二剰余記憶部115が記憶した整数v2を上記整数e2として出力する。
上記第一係数記憶部124は、上記記憶装置(RAM914)を用いて、整数t1を記憶する。
上記第二係数記憶部125は、上記記憶装置(RAM914)を用いて、整数t2を記憶する。
上記初期値設定部113は、更に、上記処理装置(CPU911)を用いて、上記整数t1として0を上記第一係数記憶部124に記憶させ、上記整数t2として1を上記第二係数記憶部125に記憶させる。
上記商算出部126は、上記処理装置(CPU911)を用いて、上記第一剰余記憶部114が記憶した整数v1と、上記第二剰余記憶部115が記憶した整数v2とに基づいて、上記整数v1を上記整数v2で割った商を超えない最大の整数を算出して、整数qとする。
上記第三係数算出部127は、上記処理装置(CPU911)を用いて、上記適合性判定部116が出力条件を満たしたと判定しない場合に、上記第一係数記憶部124が記憶した整数t1と、上記第二係数記憶部125が記憶した整数t2と、上記商算出部126が算出した整数qとに基づいて、上記整数t2と上記整数qとの積を、上記整数t1から減算した整数を算出して、整数t3とし、上記第二係数記憶部125が記憶した整数t2を上記整数t1として上記第一係数記憶部124に記憶させ、算出した整数t3を上記整数t2として上記第二係数記憶部125に記憶させる。
上記分割整数出力部129は、更に、上記処理装置(CPU911)を用いて、上記適合性判定部116が出力条件を満たしたと判定した場合に、上記第二係数記憶部125が記憶した整数t2を上記整数e1として出力する。
上記鍵記憶部210は、上記記憶装置を用いて、暗号文を復号する鍵を記憶する。
上記暗号文入力部220は、上記処理装置を用いて、暗号文を入力する。
上記暗号文検証部230は、上記処理装置を用いて、上記鍵記憶部210が記憶した鍵と、上記暗号文入力部220が入力した暗号文とに基づいて、上記検証装置100に入力する整数eと、上記有限群Gの元sと、上記有限群Gの元hとを算出する。
上記検証装置100は、上記暗号文検証部230が算出した整数eと、上記有限群Gの元sと、上記有限群Gの元hとを入力して、検証成功か否かを判定する。
上記復号文生成部260は、上記処理装置を用いて、上記検証装置100が検証成功と判定した場合に、上記暗号文入力部220が入力した暗号文を上記鍵記憶部210が記憶した鍵により復号して、復号文を生成する。
上記処理装置(CPU911)が、有限群Gの位数pと、整数eとを入力し、入力した位数pと整数eとに基づいて、e1・e≡e2(mod p)を満たす整数e1と整数e2とを算出する。
上記処理装置(CPU911)が、上記有限群Gの元sと、上記有限群Gの元hとを入力し、入力した元sと元hと、算出した整数e1と整数e2とに基づいて、上記有限群Gの元a(=e1・h-e2・s)を算出する。
上記処理装置(CPU911)が、算出した元aに基づいて、上記元aが上記有限群Gの単位元である場合に、検証成功と判定する。
暗号文正当性検証装置(検証装置100)は、
指数部(整数e)を分割する装置(整数分割部110)と、
分割された指数(整数e1及び整数e2)を用いて、乗法群における二基底指数べき乗算、または(超)楕円曲線上の点がなす群などの加法群における二基底スカラー倍算をした値(he1-se2またはe1・h-e2・s)を計算する装置(検証値算出部130)と、
その値が乗法群の単位元1または加法群の単位元0に等しいかどうか判定する装置(検証判定部150)とを有する。
検証装置100は、se2・h-e1=1(乗法的記述)またはe2・s-e1・h=0(加法的記述)を検証する。
除算をする整数v2、及び除算される整数v1が、それぞれ、前ステップの除算の剰余v3、及び前ステップの除算をする整数v2である計算装置(第三剰余算出部117)と、
各ステップの除算結果の剰余v2がある一定の数(√p)以上、又はある一定の数(√p)以下であることを判定する計算装置(適合性判定部116)とを有する。
最初に、整数分割部110は、CPU911を用いて、正の整数p、1<e<pである整数e、pの平方根√pを入力する。
次に、整数分割部110は、RAM914を用いて、u1←1,v1←p,u2←0,v2←eを初期値として記憶する。
次に、整数分割部110は、CPU911を用いて、v2<√pかどうかをチェックする。
v2>√pならば、整数分割部110は、CPU911を用いて、q←v1/v2(端数切捨て)、v3←v1 mod v2、u3←u1-q・u2を計算し、RAM914を用いて、v1←v2、v2←v3、u1←u2、u2←u3として記憶する。その後、v2<√pかどうかのチェックに戻り、v2>√pなら、同じ計算を繰り返す。
v2<√pになったら、整数分割部110は、CPU911を用いて、e1←(v2-u2・p)/v1を計算し、e2←v2とする。
最後に、整数分割部110は、CPU911を用いて、e1,e2を出力する。
このような手順でも、e1・e≡e2(mod p)となり、e1,e2のビット長はpのビット長の約半分となる。
実施の形態2について、図10~図15を用いて説明する。
IDベース公開鍵暗号システム820Aは、暗号文復号装置200Aを識別するメールアドレスなどの識別データを、暗号文復号装置200Aの公開鍵として利用する暗号通信システムである。暗号文復号装置200Aと公開鍵との対応関係を証明する必要がないので、公開鍵証明書や認証局などが必要ない。
位数pは、素数である。
加法群G1の位数は、pである。元g1は、加法群G1の生成元である。
加法群G2の位数は、加法群G1と同じpである。元g2は、加法群G2の生成元である。
乗法群GTの位数は、加法群G1及び加法群G2と同じpである。
ペアリングeは、加法群G1の元と加法群G2の元との組を、乗法群GTの元(ペアリング値)へ写す写像である。ペアリングeは、双線形を有する。すなわち、すべてのu、v、a、bについて、e(a・u,b・v)=e(u,v)ab(ただし、uは加法群G1の元。vは加法群G2の元。a及びbは整数。)である。また、加法群G1の元g1と加法群G2の元g2とのペアリング値e(g1,g2)は、乗法群GTの単位元ではない。
ハッシュ関数H1は、任意の長さのビット列から、1以上p-1以下の整数を生成するハッシュ関数である。
ハッシュ関数H2は、乗法群GTの元から、所定の長さのビット列を生成するハッシュ関数である。
ハッシュ関数H3は、所定の長さのビット列から、1以上p-1以下の整数を生成するハッシュ関数である。
ハッシュ関数H4は、所定の長さのビット列から、所定の長さのビット列を生成するハッシュ関数である。
暗号パラメータ設定装置810Aは、暗号パラメータ記憶部819A、公開元生成部811A、秘密乱数出力部814A、公開元出力部815Aを有する。
公開元生成部811Aは、秘密乱数生成部812A、公開元算出部813Aを有する。
秘密乱数出力部814Aが出力した秘密乱数sは、鍵生成装置300Aに対して秘密裡に通知される。
公開元出力部815Aが出力した公開元Rは、IDベース公開鍵暗号システム820Aの利用者に公開される。
鍵生成装置300Aは、暗号パラメータ記憶部390A、秘密乱数記憶部330A、識別入力部340A、秘密鍵生成部350A、秘密鍵出力部360Aを有する。
秘密鍵生成部350Aは、ハッシュ値算出部351A、整数加算部352A、逆数算出部353A、秘密鍵算出部354Aを有する。
秘密鍵出力部360Aが出力した秘密鍵DIDは、暗号文復号装置200Aに対して秘密裡に通知される。
暗号文生成装置400Aは、暗号パラメータ記憶部490A、識別記憶部410A、共通鍵生成部420A、共通鍵記憶部430A、メッセージ入力部440A、メッセージ暗号化部450A、暗号化メッセージ出力部460A、暗号文出力部470Aを有する。
共通鍵生成部420Aは、秘密ビット列生成部421A、秘密整数算出部422A、識別元算出部423A、暗号元算出部424A、秘密ペアリング値算出部425A、暗号ビット列算出部426A、共通鍵算出部427Aを有する。
識別元算出部423Aが算出する元Qは、R=s・g1だから、
暗号文復号装置200Aは、暗号パラメータ記憶部290A、識別記憶部241A、識別元算出部242A、識別元記憶部243A、鍵記憶部210A、暗号文入力部220A、暗号文検証部230A、検証装置100A、復号文生成部260A、共通鍵記憶部270A、暗号化メッセージ入力部281A、メッセージ復号部282A、復号メッセージ出力部283Aを有する。
暗号文検証部230Aは、ペアリング値算出部231A、ビット列算出部232A、整数算出部233Aを有する。
ペアリング値算出部231Aが算出するペアリング値αは、ペアリングeの双線形より、
したがって、暗号文入力部220Aが入力した暗号文cが正当な暗号文であれば、U=r・Qが成り立つ。
検証装置100Aは、実施の形態1で説明した検証装置100と同様の装置である。
検証装置100Aは、CPU911を用いて、暗号パラメータ記憶部290Aが記憶した暗号パラメータのうち位数pを表わすデータを、実施の形態1で説明した位数pを表わすデータとして入力する。
検証装置100Aは、CPU911を用いて、整数算出部233Aが記憶したハッシュ値rを表わすデータを、実施の形態1で説明した整数eを表わすデータとして入力する。
検証装置100Aは、CPU911を用いて、暗号文入力部220が記憶した元Uを表わすデータを、実施の形態1で説明した元hを表わすデータとして入力する。
検証装置100Aは、CPU911を用いて、識別元記憶部243Aが記憶した元Qを表わすデータを、実施の形態1で説明した元sを表わすデータとして入力する。
検証装置100Aは、CPU911を用いて、入力したデータが表わす位数pとハッシュ値rとに基づいて、e1・r≡e2(mod p)、|e1|<√p、0<e2<√pを満たす整数e1及び整数e2を算出する。検証装置100Aは、CPU911を用いて、入力したデータが表わす元Uと元Qと、算出した整数e1と整数e2とに基づいて、加法群G1における演算により、加法群G1の元a=e1・U-e2・Qを算出する。検証装置100Aは、CPU911を用いて、算出した元aに基づいて、元aが加法群G1の単位元であるか否かを判定する。検証装置100Aは、CPU911を用いて、元aが加法群G1の単位元である場合、「検証成功」と判定し、元aが加法群G1の単位元でない場合、「検証失敗」と判定する。
検証装置100Aは、CPU911を用いて、検証結果を表わすデータを出力する。
したがって、暗号文生成装置400Aと暗号文復号装置200Aとが同じ共通鍵Kを共有できる。
暗号文生成装置400Aと暗号文復号装置200Aとが同じ共通鍵Kを共有しているので、メッセージ復号部282Aが生成するメッセージM’は、暗号文生成装置400Aのメッセージ入力部440Aが入力したメッセージMと同じになる。
U=r・Qである場合、復号文生成工程S735Aへ進む。
U≠r・Qである場合、暗号文復号処理を終了する。
その後、暗号文復号処理を終了し、算出した共通鍵Kにより、暗号化メッセージCMを復号する。
この実施の形態における暗号文復号装置200Aは、暗号文の整合性を検証するため、検証装置100AがU=r・Qであるか否かを判定する。
実施の形態1で説明したように、検証装置100Aは、U=r・Qであるか否かを高速に検証することができる。
したがって、暗号文復号装置200Aは、高速に暗号文を復号することができる。
上記鍵記憶部210は、上記記憶装置を用いて、暗号文を復号する鍵(秘密鍵DID)を記憶する。
上記暗号文入力部220Aは、上記処理装置(CPU911)を用いて、暗号文cを入力する。
上記暗号文検証部230は、上記処理装置(CPU911)を用いて、上記鍵記憶部210Aが記憶した鍵(秘密鍵DID)と、上記暗号文入力部220Aが入力した暗号文cとに基づいて、上記検証装置100Aに入力する整数e(ハッシュ値r)と、上記有限群G(加法群G1)の元s(元Q)と、上記有限群G(加法群G1)の元h(元U)とを算出する。
上記検証装置100Aは、上記暗号文検証部230Aが算出した整数e(ハッシュ値r)と、上記有限群G(加法群G1)の元s(元Q)と、上記有限群G(加法群G1)の元h(元U)とを入力して、検証成功か否かを判定する。
上記復号文生成部260Aは、上記処理装置(CPU911)を用いて、上記検証装置100Aが検証成功と判定した場合に、上記暗号文入力部220Aが入力した暗号文cを上記鍵記憶部210Aが記憶した鍵(秘密鍵DID)により復号して、復号文(共通鍵K)を生成する。
上記暗号パラメータ記憶部290Aは、上記記憶装置(磁気ディスク装置920)を用いて、上記有限群G(加法群G1)の位数pと、上記有限群G(加法群G1)の生成元g1と、上記有限群G(加法群G1)の元Rとを記憶する。
上記識別記憶部241Aは、上記記憶装置(磁気ディスク装置920)を用いて、上記暗号文復号装置200Aを識別するビット列IDを記憶する。
上記識別元算出部242Aは、上記処理装置を用いて、上記識別記憶部241Aが記憶したビット列IDに基づいて、所定のハッシュ関数H1により上記ビット列IDをハッシュしたハッシュ値を算出して、整数(ハッシュ値)H1(ID)とし、上記暗号パラメータ記憶部290Aが記憶した生成元g1と、上記暗号パラメータ記憶部290Aが記憶した元Rと、算出した整数(ハッシュ値)H1(ID)とに基づいて、上記生成元g1を整数(ハッシュ値)H1(ID)倍した元と、上記元Rとを加算して、上記有限群G(加法群G1)の元Q(=R+H1(ID)・g1)とする。
上記識別元記憶部243Aは、上記記憶装置(磁気ディスク装置920)を用いて、上記識別元算出部242Aが算出した元Qを記憶する。
上記鍵記憶部210Aは、上記記憶装置を用いて、有限群(加法群)G2の元DIDを記憶する。
上記暗号文入力部220Aは、上記処理装置(CPU911)を用いて、上記有限群G(加法群G1)の元Uと、ビット列Vとを上記暗号文cとして入力する。
上記暗号文検証部230Aは、ペアリング値算出部231Aと、ビット列算出部232Aと、整数算出部233Aとを有する。
上記ペアリング値算出部231Aは、上記処理装置(CPU911)を用いて、上記暗号文入力部220Aが入力した元Uと、上記鍵記憶部210Aが記憶した元DIDとに基づいて、所定のペアリング関数eにより上記元Uと上記元DIDとのペアリング値を算出して、ペアリング値α(=e(U,DID))とする。
上記ビット列算出部232Aは、上記処理装置(CPU911)を用いて、上記ペアリング値算出部231Aが算出したペアリング値αに基づいて、所定のハッシュ関数H2により上記ペアリング値αをハッシュしたハッシュ値を算出して、ビット列(ハッシュ値)H2(α)とし、上記暗号文入力部220Aが入力したビット列Vと、算出したビット列(ハッシュ値)H2(α)とに基づいて、上記ビット列Vと上記ビット列(ハッシュ値)H2(α)との排他的論理和を取って、ビット列m(=V XOR H2(α))とする。
上記整数算出部233Aは、上記処理装置(CPU911)を用いて、上記ビット列算出部232Aが算出したビット列mに基づいて、所定のハッシュ関数H3により上記ビット列mをハッシュしたハッシュ値を算出して、整数(ハッシュ値)r(=H3(m))とする。
上記検証装置100Aは、上記暗号パラメータ記憶部290Aが記憶した位数pと、上記整数eとして上記整数算出部233Aが算出した整数(ハッシュ値)rと、上記元sとして上記識別元記憶部243Aが記憶した元Qと、上記元hとして上記暗号文入力部220Aが入力した元Uとを入力して、検証成功か否かを判定する。
上記復号文生成部260Aは、上記処理装置(CPU911)を用いて、上記検証装置100Aが検証成功と判定した場合に、上記ビット列算出部232Aが算出したビット列mに基づいて、所定のハッシュ関数H4により上記ビット列mをハッシュしたハッシュ値を算出して、共通鍵K(=H4(m))とし、算出した共通鍵Kを上記復号文として出力する。
上記共通鍵記憶部270Aは、上記記憶装置(RAM914)を用いて、上記復号文生成部260Aが出力した共通鍵Kを記憶する。
上記暗号化メッセージ入力部281Aは、上記処理装置(CPU911)を用いて、暗号化メッセージCMを入力する。
上記メッセージ復号部282Aは、上記処理装置(CPU911)を用いて、上記共通鍵記憶部270Aが記憶した共通鍵Kにより上記暗号化メッセージ入力部281Aが入力した暗号化メッセージCMを復号する。
暗号文正当性検証装置(検証装置100A)は、
指数部(整数e)を分割する装置(整数分割部110)と、
分割された指数(整数e1及び整数e2)を用いて、乗法群における二基底指数べき乗算、または(超)楕円曲線上の点がなす群などの加法群における二基底スカラー倍算をして、値he1-se2またはe1・h-e2・sを計算する装置(検証値算出部130)と、
その値が乗法群の単位元1または加法群の単位元0に等しいかどうか判定する装置(検証判定部150)とを有する。
暗号文復号装置200Aは、
公開パラメータ(元g1及び公開元R)と、受信者(暗号文復号装置200A)のIDから計算される値(元Q=R+H1(ID)・g1)を事前に計算する事前計算装置(識別元算出部242A)と、
その事前計算値(元Q)を記憶する記憶装置(識別元記憶部243A)とを有する。
公開パラメータ(元g1及び公開元R)と、受信者(暗号文復号装置200A)のIDから計算される値(元Q)を事前に計算する事前計算装置(識別元算出部242A)と、
その事前計算値(元Q)を記憶する記憶装置(識別元記憶部243A)と、
その事前計算値(元Q)に対する、乗法群におけるべき乗算、または(超)楕円曲線上の点がなす群などの加法群におけるスカラー倍算をした値(Qrまたはr・Q)を検証する検証装置100Aとを有する。
検証装置100Aは、
指数部(ハッシュ値r)を分割する装置(整数分割部110)と、
分割された指数(整数e1及び整数e2)を用いて、乗法群における二基底指数べき乗算、または(超)楕円曲線上の点がなす群などの加法群における二基底スカラー倍算をして、値Ue1・Q-e2またはe1・U-e2・Qを計算する装置(検証値算出部130)と、
その値が乗法群の単位元1または加法群の単位元0に等しいかどうか判定する装置(検証判定部150)とを有する。
暗号文復号装置200Aは、
公開パラメータ(暗号パラメータ)である乗法群または加法群の元R,元g1と、受信者(暗号文復号装置200A)を識別するビット列IDのハッシュ値h=H1(ID)とから計算される元Q=R・g1 hまたはQ=R+h・g1を事前に計算する事前計算装置(識別元算出部242A)と、
その元Qを記憶する記憶装置(識別元記憶部243A)と、
ランダムなビット列mのハッシュ値である整数rに対して、Qrまたはr・Qが既知のUと一致するかどうか検証することにより、暗号文が正しいか判定する暗号文正当性検証装置(検証装置100A)とを有する。
暗号文復号装置200Aは、
公開パラメータ(暗号パラメータ)である乗法群または加法群の元R,元g1と、受信者(暗号文復号装置200A)を識別するビット列IDのハッシュ値h=H1(ID)とから計算される元Q=R・g1 hまたはQ=R+h・g1を事前に計算する事前計算装置(識別元算出部242A)と、
その元Qを記憶する記憶装置(識別元記憶部243A)と、
ランダムなビット列mのハッシュ値である整数rに対して、Qrまたはr・Qが既知のUと一致するかどうか検証することにより、暗号文が正しいか判定する暗号文正当性検証装置(検証装置100A)とを有する。
公開パラメータ(暗号パラメータ)である乗法群または加法群の元R,元g1と、受信者(暗号文復号装置200A)を識別するビット列IDのハッシュ値h=H1(ID)とから計算される元Q=R・g1 hまたはQ=R+h・g1を事前に計算する事前計算装置(識別元算出部242A)と、
その元Qを記憶する記憶装置(識別元記憶部243A)と、
ランダムなビット列mのハッシュ値(整数r)を計算する装置(整数算出部233A)と、
指数部(整数r)を分割する装置(整数分割部110)と、
分割された指数(整数e1及び整数e2)を用いて、乗法群における二基底指数べき乗算、または(超)楕円曲線上の点がなす群などの加法群における二基底スカラー倍算をして、値Ue1・Q-e2またはe1・U-e2・Qを計算する装置(検証値算出部130)と、
その値が乗法群の単位元1または加法群の単位元0に等しいかどうか判定する装置(検証判定部150)とを有する。
公開パラメータ(暗号パラメータ)である乗法群または加法群の元R,元g1と、受信者(暗号文復号装置200A)を識別するビット列IDのハッシュ値h=H1(ID)とから計算される元Q=R・g1 hまたはQ=R+h・g1を事前に計算する事前計算装置(識別元算出部242A)と、
その元Qを記憶する記憶装置(識別元記憶部243A)と、
ランダムなビット列mのハッシュ値である整数rを計算する装置(整数算出部233A)と、
指数部(整数r)を分割する装置(整数分割部110)と、
分割された指数(整数e1及び整数e2)を用いて、乗法群における二基底指数べき乗算、または(超)楕円曲線上の点がなす群などの加法群における二基底スカラー倍算をして、値Ue1・Q-e2またはe1・U-e2・Qを計算する装置(検証値算出部130)と、
その値が乗法群の単位元1または加法群の単位元0に等しいかどうか判定する装置(検証判定部150)とを有する。
IDベース公開鍵暗号システム820Aでは、位数pが素数である加法群G1,加法群G2,乗法群GTと、群G1内の基点(生成元)g1,群G2内の基点g2、ペアリングeを用いる。
まず、暗号パラメータ設定装置810A(暗号パラメータ生成装置)は、CPU911を用いて、1以上p-1以下の整数sをランダムに選ぶ。次に、暗号パラメータ設定装置810Aは、CPU911を用いて、群G1の元R=s・g1を計算する。暗号パラメータ設定装置810Aは、CPU911を用いて、鍵生成装置300A(鍵生成センタ。PKG:Private Key Generator)用の秘密鍵(秘密乱数)sと、PKG用の公開鍵(公開元)Rとを出力する。
鍵生成装置300A(秘密鍵導出装置)は、CPU911を用いて、暗号文復号装置200Aを識別するビット列IDを入力する。まず、鍵生成装置300Aは、CPU911を用いて、ハッシュ値h=H1(ID)を計算する。次に、鍵生成装置300Aは、CPU911を用いて、整数e=1/(s+h) mod pを計算し、ID用の秘密鍵である群G2の元dID=e・g2を計算して、出力する。
暗号文生成装置400A(暗号化装置)は、まず、CPU911を用いて、ランダムなビット列mを生成する。次に、暗号文生成装置400Aは、CPU911を用いて、ハッシュ値r=H3(m),ハッシュ値h=H1(ID)を計算し、群G1の元Q=R+h・g1を計算する。暗号文生成装置400Aは、CPU911を用いて、群G1の元U=r・Qを計算し、ビット列mとハッシュ値H2(e(g1,g2)r)との排他的論理和であるビット列V=XOR(m,H2(e(g1,g2)r))を計算する。暗号文生成装置400Aは、CPU911を用いて、鍵(共通鍵)K=H4(m),暗号文c=(U,V)を出力する。
暗号文復号装置200A(復号装置)は、自身を識別するビット列IDと、鍵生成装置300Aが生成した秘密鍵dIDと、暗号文生成装置400Aが出力した暗号文c=(U,V)とを入力する。暗号文復号装置200Aは、ペアリング値α=e(U,dID)を計算し、ビット列Vと、ハッシュ値H2(α)との排他的論理和であるビット列m=XOR(V,H2(α))を計算する。暗号文復号装置200Aは、ハッシュ値r=H3(m),ハッシュ値h=H1(ID)を計算し、群G1の元Q=R+h・g1を計算する。暗号文復号装置200Aは、CPU911を用いて、r・Q=Uが成り立つかどうかをチェックする。成立しなければ、暗号文復号装置200Aは、「拒絶」を出力する。成立すれば、暗号文復号装置200Aは、CPU911を用いて、共通鍵K=H4(m)を計算し、出力する。
検証装置100Aでは、整数分割部110が、CPU911を用いて、rとpとを入力して、e1・r≡e2(mod p)となる整数e1,e2を算出し、検証値算出部130が、CPU911を用いて、群G1における二基底スカラー倍算により、群G1の元W=e2・Q-e1・Uを計算し、検証判定部150が、CPU911をもちいて、元Wが群G1の単位元Oであるかどうかをチェックすることにより、r・Q=Uが成立するかを高速にチェックする。
実施の形態3について、図16~図20を用いて説明する。
公開鍵暗号システム820Bは、暗号文生成装置400Bが暗号文復号装置200Bの公開鍵を使って暗号文を生成し、暗号文復号装置200Bが公開鍵に対応する秘密鍵を使って暗号文を復号するシステムである。
位数pは、素数である。
加法群Gの位数は、pである。元gは、加法群Gの生成元である。
ハッシュ関数Hは、加法群Gの二つの元の順序対から、1以上p-1以下の整数を生成するハッシュ関数である。
鍵導出関数KDFは、加法群Gの二つの元の順序対から、所定の長さのビット列を生成する関数である。
鍵生成装置300Bは、公開鍵として、加法群Gの四つの元g’、c、d、hを生成する。鍵生成装置300Bは、秘密鍵として、1以上p-1以下の四つの整数w、x、y、zを生成する。
鍵生成装置300Bは、暗号パラメータ記憶部390B、秘密鍵生成部350B、公開鍵生成部370B、秘密鍵出力部360B、公開鍵出力部380Bを有する。
秘密鍵生成部350Bは、四つの秘密乱数生成部351B~354Bを有する。
第一の秘密乱数生成部351Bは、生成した整数を整数wとし、RAM914を用いて、生成した整数wを表わすデータを記憶する。
第二の秘密乱数生成部352Bは、生成した整数を整数xとし、RAM914を用いて、生成した整数xを表わすデータを記憶する。
第三の秘密乱数生成部353Bは、生成した整数を整数yとし、RAM914を用いて、生成した整数yを表わすデータを記憶する。
第四の秘密乱数生成部354Bは、生成した整数を整数zとし、RAM914を用いて、生成した整数zを表わすデータを記憶する。
公開鍵生成部370Bは、四つの公開元算出部371B~374Bを有する。
第一の公開元算出部371Bは、CPU911を用いて、第一の秘密乱数生成部351Bが記憶した整数wを表わすデータを入力する。第一の公開元算出部371Bは、CPU911を用いて、入力したデータが表わす加法群Gと元gと整数wとに基づいて、加法群Gにおける演算により、元gをw回加算した元を算出し、元g’とする。第一の公開元算出部371Bは、RAM914を用いて、算出した元g’を表わすデータを記憶する。
第二の公開元算出部372Bは、CPU911を用いて、第二の秘密乱数生成部352Bが記憶した整数xを表わすデータを入力する。第二の公開元算出部372Bは、CPU911を用いて、入力したデータが表わす加法群Gと元gと整数xとに基づいて、加法群Gにおける演算により、元gをx回加算した元を算出し、元cとする。第二の公開元算出部372Bは、RAM914を用いて、算出した元cを表わすデータを記憶する。
第三の公開元算出部373Bは、CPU911を用いて、第三の秘密乱数生成部353Bが記憶した整数yを表わすデータを入力する。第三の公開元算出部373Bは、CPU911を用いて、入力したデータが表わす加法群Gと元gと整数yとに基づいて、加法群Gにおける演算により、元gをy回加算した元を算出し、元dとする。第三の公開元算出部373Bは、RAM914を用いて、算出した元dを表わすデータを記憶する。
第四の公開元算出部374Bは、CPU911を用いて、第四の秘密乱数生成部354Bが記憶した整数zを表わすデータを入力する。第四の公開元算出部374Bは、CPU911を用いて、入力したデータが表わす加法群Gと元gと整数zとに基づいて、加法群Gにおける演算により、元gをz回加算した元を算出し、元hとする。第四の公開元算出部374Bは、RAM914を用いて、算出した元hを表わすデータを記憶する。
秘密鍵出力部360Bが出力した秘密鍵は、暗号文復号装置200Bに対して秘密裡に通知される。
公開鍵出力部380Bが出力した公開鍵は、暗号文復号装置200の公開鍵として公開鍵暗号システム820Bの利用者に公開される。
暗号文生成装置400Bは、暗号パラメータ記憶部490B、公開鍵記憶部410B、共通鍵生成部420B、暗号文出力部470B、共通鍵記憶部430B、メッセージ入力部440B、メッセージ暗号化部450B、暗号化メッセージ出力部460Bを有する。
共通鍵生成部420Bは、秘密乱数生成部421B、第一暗号元算出部422B、第二暗号元算出部423B、ハッシュ値算出部424B、整数算出部425B、第三暗号元算出部426B、秘密元算出部427B、共通鍵算出部428Bを有する。
第二暗号元算出部423Bが算出する元u’は、g’=w・g、u=r・gだから、
第三暗号元算出部426Bが算出する元vは、c=x・g、d=y・g、u=r・gだから、
秘密元算出部427Bが算出する元h~は、h=z・g、u=r・gだから、
暗号文復号装置200Bは、暗号パラメータ記憶部290B、鍵記憶部210B、暗号文入力部220B、暗号文検証部230B、検証装置100B、復号文生成部260B、共通鍵記憶部270B、暗号化メッセージ入力部281B、メッセージ復号部282B、復号メッセージ出力部283Bを有する。
ハッシュ値算出部231Bが算出するハッシュ値αは、暗号文生成装置400Bのハッシュ値算出部424Bが算出したハッシュ値αと等しい。
判断の順序はどちらが先でもよいが、以下では、まず、u’=w・uであるか否かを判断し、次に、v=t・uであるか否かを判断するものとして、説明する。
検証装置100Bは、CPU911を用いて、暗号パラメータ記憶部290Bが記憶した暗号パラメータのうち位数pを表わすデータを、実施の形態1で説明した位数pを表わすデータとして入力する。
検証装置100Bは、CPU911を用いて、鍵記憶部210Bが記憶した秘密鍵のうち整数wを表わすデータを、実施の形態1で説明した整数eを表わすデータとして入力する。
検証装置100Bは、CPU911を用いて、暗号文入力部220Bが記憶した元u’を表わすデータを、実施の形態1で説明した元hを表わすデータとして入力する。
検証装置100Bは、CPU911を用いて、暗号文入力部220Bが記憶した元uを表わすデータを、実施の形態1で説明した元sを表わすデータとして入力する。
検証装置100Bは、CPU911を用いて、入力したデータが表わす位数pと整数wとに基づいて、e1・w≡e2(mod p)、|e1|<√p、0<e2<√pを満たす整数e1及び整数e2を算出する。なお、整数wは、暗号文復号装置200の秘密鍵の一部であり、暗号文入力部220Bが暗号文cを入力する前からわかっているので、検証装置100Bは、暗号文入力部220Bが暗号文cを入力する前に、CPU911を用いて、あらかじめ整数e1及び整数e2を算出し、耐タンパ性のある記憶装置を用いて記憶しておいてもよい。
検証装置100Bは、CPU911を用いて、入力したデータが表わす元u’と元uと、算出した整数e1と整数e2とに基づいて、加法群Gにおける演算により、加法群Gの元a=e1・u’-e2・uを算出する。検証装置100Bは、CPU911を用いて、算出した元aに基づいて、元aが加法群Gの単位元であるか否かを判定する。検証装置100Bは、CPU911を用いて、元aが加法群Gの単位元である場合、第一の検証に成功したと判定し、元aが加法群Gの単位元でない場合、「検証失敗」と判定する。
検証装置100Bは、CPU911を用いて、暗号パラメータ記憶部290Bが記憶した暗号パラメータのうち位数pを表わすデータを、実施の形態1で説明した位数pを表わすデータとして入力する。
検証装置100Bは、CPU911を用いて、整数算出部232Bが記憶した整数tを表わすデータを、実施の形態1で説明した整数eを表わすデータとして入力する。
検証装置100Bは、CPU911を用いて、暗号文入力部220が記憶した元vを表わすデータを、実施の形態1で説明した元hを表わすデータとして入力する。
検証装置100Bは、CPU911を用いて、暗号文入力部220が記憶した元uを表わすデータを、実施の形態1で説明した元sを表わすデータとして入力する。
検証装置100Bは、CPU911を用いて、入力したデータが表わす位数pと整数tとに基づいて、e1・t≡e2(mod p)、|e1|<√p、0<e2<√pを満たす整数e1及び整数e2を算出する。検証装置100Bは、CPU911を用いて、入力したデータが表わす元vと元uと、算出した整数e1と整数e2とに基づいて、加法群Gにおける演算により、加法群Gの元a=e1・v-e2・uを算出する。検証装置100Bは、CPU911を用いて、算出した元aに基づいて、元aが加法群Gの単位元であるか否かを判定する。検証装置100Bは、CPU911を用いて、元aが加法群Gの単位元である場合、第二の検証にも成功したと判定して「検証成功」と判定し、元aが加法群Gの単位元でない場合、「検証失敗」と判定する。
検証装置100Bは、CPU911を用いて、検証結果を表わすデータを出力する。
復号文生成部260Bは、秘密元算出部261B、共通鍵算出部262Bを有する。
暗号文入力部220Aが入力した暗号文cが正当な暗号文であれば、数26より、秘密元算出部261Bが算出する元h~は、暗号文生成装置400Bの秘密元算出部427Bが算出した元h~と等しい。
秘密元算出部261Bが算出した元h~が、暗号文生成装置400Bの秘密元算出部427Bが算出した元h~と等しいので、共通鍵算出部262Bが算出する共通鍵Kは、暗号文生成装置400Bの共通鍵算出部428Bが算出した共通鍵Kと等しい。
したがって、暗号文生成装置400Bと暗号文復号装置200Bとが同じ共通鍵Kを共有できる。
暗号文生成装置400Bと暗号文復号装置200Bとが同じ共通鍵Kを共有しているので、メッセージ復号部282Bが生成するメッセージM’は、暗号文生成装置400Bのメッセージ入力部440Bが入力したメッセージMと同じになる。
u’=w・uである場合、第二検証工程S734Bへ進む。
u’≠w・uである場合、暗号文復号処理を終了する。
v=t・uである場合、秘密元算出工程S735Bへ進む。
v≠t・uである場合、暗号文復号処理を終了する。
その後、暗号文復号処理を終了し、算出した共通鍵Kにより、暗号化メッセージCMを復号する。
上記暗号パラメータ記憶部290Bは、上記記憶装置(磁気ディスク装置920)を用いて、上記有限群(加法群)Gの位数pを記憶する。
上記鍵記憶部210Bは、上記記憶装置を用いて、1以上p-1以下の整数wと、1以上p-1以下の整数xと、1以上p-1以下の整数yと、1以上p-1以下の整数zとを記憶する。
上記暗号文入力部220Bは、上記処理装置(CPU911)を用いて、上記有限群(加法群)Gの元uと、上記有限群(加法群)Gの元u’と、上記有限群(加法群)Gの元vとを上記暗号文cとして入力する。
上記暗号文検証部230Bは、ハッシュ値算出部231Bと、整数算出部232Bとを有する。
上記ハッシュ値算出部231Bは、上記処理装置(CPU911)を用いて、上記暗号文入力部220Bが入力した元uと元u’とに基づいて、所定のハッシュ関数Hにより上記元uと上記元u’とをハッシュしたハッシュ値を算出して、整数(ハッシュ値)α(=H(u,u’))とする。
上記整数算出部232Bは、上記処理装置(CPU911)を用いて、上記暗号パラメータ記憶部290Bが記憶した位数pと、上記鍵記憶部210Bが記憶した整数xと整数yと、上記ハッシュ値算出部231Bが算出した整数(ハッシュ値)αとに基づいて、上記整数yと上記整数(ハッシュ値)αとの積と、上記整数xとの和を、上記位数pで割った余りを算出して、整数t(=(x+y・α)mod p)とする。
上記検証装置100Bは、上記暗号パラメータ記憶部290Bが記憶した位数pと、上記整数eとして上記鍵記憶部210Bが記憶した整数wと、上記元sとして上記暗号文入力部220Bが入力した元uと、上記元hとして上記暗号文入力部220Bが入力した元u’とを入力し、検証成功か否かを判定して、第一の検証結果とし、上記暗号パラメータ記憶部290Bが記憶した位数pと、上記整数eとして上記整数算出部232Bが算出した整数tと、上記元sとして上記暗号文入力部220Bが入力した元uと、上記元hとして上記暗号文入力部220Bが入力した元vとを入力し、検証成功か否かを判定して、第二の検証結果とする。
上記復号文生成部260Bは、上記処理装置(CPU911)を用いて、上記検証装置100Bが上記第一の検証結果及び上記第二の検証結果においてともに検証成功と判定した場合に、上記鍵記憶部210Bが記憶した整数zと、上記暗号文入力部220Bが入力した元uとに基づいて、上記元uを上記整数z回加算した元を算出して、上記有限群Gの元h(=z・u)とし、上記暗号文入力部220Bが入力した元uと、算出した元h~とに基づいて、所定の鍵導出関数KDFにより上記元uと上記元h~とから共通鍵K(=KDF(u,h~))を生成し、生成した共通鍵Kを上記復号文として出力する。
上記共通鍵記憶部270Bは、上記記憶装置(RAM914)を用いて、上記復号文生成部260Bが出力した共通鍵Kを記憶する。
上記暗号化メッセージ入力部281Bは、上記処理装置(CPU911)を用いて、暗号化メッセージCMを入力する。
上記メッセージ復号部282Bは、上記処理装置(CPU911)を用いて、上記共通鍵記憶部270Bが記憶した共通鍵Kにより上記暗号化メッセージ入力部281Bが入力した暗号化メッセージCMを復号する。
指数部(整数w)を分割する装置(整数分割部110)と、
分割された指数(整数e1及び整数e2)を用いて、乗法群における二基底指数べき乗算、または(超)楕円曲線上の点がなす群などの加法群における二基底スカラー倍算をして、値u’e1・u-e2またはe1・u’-e2・uを計算する装置(検証値算出部130)と、
その値が乗法群の単位元1または加法群の単位元0に等しいかどうか判定する装置(検証判定部150)とを有する。
指数部(整数t)を分割する装置(整数分割部110)と、
分割された指数(整数e1及び整数e2)を用いて、乗法群における二基底指数べき乗算、または(超)楕円曲線上の点がなす群などの加法群における二基底スカラー倍算をして、値ve1・u-e2またはe1・v-e2・uを計算する装置(検証値算出部130)と、
その値が乗法群の単位元1または加法群の単位元0に等しいかどうか判定する装置(検証判定部150)とを有する。
公開鍵暗号システム820Bでは、素数位数pの群(加法群)Gと群G内の基点(生成元)gとを用いる。
鍵生成装置300Bは、CPU911を用いて、0以上p-1以下の整数w,整数x,整数y,整数zをランダムに選ぶ。鍵生成装置300Bは、CPU911を用いて、群Gの元g’=w・g,群Gの元c=x・g,群Gの元d=y・g,群Gの元h=z・gを計算する。鍵生成装置300Bは、CPU911を用いて、公開鍵(g’,c,d,h)と、秘密鍵(w,x,y,z)とを出力する。
暗号文生成装置400B(暗号化装置)は、CPU911を用いて、公開鍵(g’,c,d,h)を入力する。暗号文生成装置400Bは、CPU911を用いて、0以上p-1以下の乱数rを生成し、群Gの元u=r・g,群Gの元u’=r・g’,群Gの元h~=r・hを計算する。暗号文生成装置400Bは、CPU911を用いて、元uを表わすビット列と元u’を表わすビット列とを連接したビット列u∥u’をハッシュしたハッシュ値α=H(u∥u’)を計算し、整数r’=α・r mod pを計算する。暗号文生成装置400Bは、CPU911を用いて、群Gの元v=r・c+r’・dを計算する。暗号文生成装置400Bは、CPU911を用いて、元uを表わすビット列と元h~を表わすビット列とを連接したビット列u∥h~に基づいて鍵導出した鍵K=KDF(u∥h~)を計算する。暗号文生成装置400Bは、CPU911を用いて、暗号文C0=(u,u’,v)と、鍵Kとを出力する。
暗号文復号装置200B(復号装置)は、CPU911を用いて、秘密鍵(w,x,y,z)と、暗号文C0=(u,u’,v)を入力する。暗号文復号装置200Bは、CPU911を用いて、元uを表わすビット列と元u’を表わすビット列とを連接したビット列u∥u’をハッシュしたハッシュ値α=H(u∥u’)を計算する。暗号文復号装置200Bは、CPU911を用いて、整数t=x+y・α mod pを計算する。暗号文復号装置200Bは、CPU911を用いて、w・u=u’とt・u=vが成立するかどうかをチェックする。成立しなければ、暗号文復号装置200Bは、「拒絶」を出力する。成立すれば、暗号文復号装置200Bは、CPU911を用いて、群Gの元h~=z・uを計算し、鍵K=KDF(u∥h~)を計算して、出力する。
実施の形態4について、図21~図27を用いて説明する。
IDベース公開鍵暗号システム820Cは、実施の形態2で説明したIDベース公開鍵暗号システム820Aと同様、暗号文復号装置200Cを識別する識別データを、暗号文復号装置200Cの公開鍵として利用する暗号通信システムである。
位数pは、素数である。
加法群Gの位数は、pである。元gは、加法群Gの生成元である。
加法群G’の位数は、加法群Gと同じpである。元g’は、加法群G’の生成元である。
乗法群Gtの位数は、加法群G及び加法群G’と同じpである。
ペアリングeは、加法群Gの元と加法群G’の元との組を、乗法群Gtの元(ペアリング値)へ写す写像である。ペアリングeは、双線形を有する。また、加法群Gの元gと加法群G’の元g’とのペアリング値e(g,g’)は、乗法群Gtの単位元ではない。
ハッシュ関数Hは、任意の長さのビット列から、1以上p-1以下の整数を生成するハッシュ関数である。
ハッシュ関数H’は、乗法群Gtの元から、所定の長さのビット列を生成するハッシュ関数である。
ハッシュ関数H”は、乗法群Gtの元と、所定の長さのビット列と、二つの加法群Gの元の順序対との組から、1以上p-1以下の整数を生成するハッシュ関数である。
また、これらの暗号パラメータがあらかじめ定められている場合には、暗号パラメータ設定装置810Cは、これらの暗号パラメータを定めなくてもよい。
暗号パラメータ設定装置810Cは、暗号パラメータ記憶部819C、マスター鍵生成部812C、公開パラメータ生成部813C、マスター鍵出力部814C、公開パラメータ出力部815Cを有する。
マスター鍵生成部812Cは、三つの秘密乱数生成部816C~818Cを有する。
三つの秘密乱数生成部816C~818Cは、それぞれ、CPU911を用いて、暗号パラメータ記憶部819Cが記憶した暗号パラメータのうち位数pを表わすデータを入力する。三つの秘密乱数生成部816C~818Cは、それぞれ、CPU911を用いて、入力したデータが表わす位数pに基づいて、1以上p-1以下の整数をランダムに生成する。
第一の秘密乱数生成部816Cは、生成した整数を整数αとし、RAM914を用いて、生成した整数αを表わすデータを記憶する。
第二の秘密乱数生成部817Cは、生成した整数を整数βとし、RAM914を用いて、生成した整数βを表わすデータを記憶する。
第三の秘密乱数生成部818Cは、生成した整数を整数γとし、RAM914を用いて、生成した整数γを表わすデータを記憶する。
公開パラメータ生成部813Cは、第一公開元算出部831C、公開ペアリング値算出部832C、第二公開元算出部833Cを有する。
マスター鍵出力部814Cが出力したマスター鍵は、鍵生成装置300Cに対して秘密裡に通知される。
公開パラメータ出力部815Cが出力した公開パラメータは、IDベース公開鍵暗号システム820Cの利用者に公開される。
鍵生成装置300Cは、暗号パラメータ記憶部390C、マスター鍵記憶部330C、識別入力部340C、秘密鍵生成部350C、秘密鍵出力部360Cを有する。
秘密鍵生成部350Cは、秘密乱数生成部351C、第一秘密元算出部352C、第二秘密元算出部353Cを有する。
秘密鍵出力部360Cが出力した暗号文復号装置200Cの秘密鍵は、暗号文復号装置200Cに対して秘密裡に通知される。
暗号文生成装置400Cは、暗号パラメータ記憶部490C、識別記憶部410C、メッセージ入力部440C、メッセージ暗号化部450C、暗号文出力部470Cを有する。
メッセージ暗号化部450Cは、秘密乱数生成部451C、ペアリング値算出部452C、暗号ビット列算出部453C、第一暗号元算出部454C、第二暗号元算出部455C、暗号整数算出部456Cを有する。
第二暗号元算出部455Cは算出する元c1は、g1=α・g、g3=γ・gであるから、
暗号文出力部470Cが出力した暗号文Cは、暗号文復号装置200Cに対して送信される。
暗号文復号装置200Cは、暗号パラメータ記憶部290C、鍵記憶部210C、暗号文入力部220C、暗号文検証部230C、検証装置100C、復号文生成部260C、復号メッセージ出力部283Cを有する。
暗号文検証部230Cは、ペアリング値算出部231C、整数算出部232Cを有する。
ペアリング値算出部231Cが算出した元kが、暗号文生成装置400Cのペアリング値算出部452Cが算出した元kと等しければ、整数算出部232Cが算出する整数sは、秘密乱数生成部451Cが生成した秘密乱数sと等しい。
検証装置100Cは、検証結果を表わすデータを出力する。
検証装置100Cは、整数分割部110C、二つの検証値算出部130C1,130C2、検証判定部150Cを有する。
検証装置100Cは、実施の形態1で説明した検証装置100と同様の装置であるが、加法群Gにおける演算と、乗法群Gtにおける演算とをするため、二つの検証値算出部130C1,130C2を有する。
整数分割部110Cは、CPU911を用いて、整数算出部232Cが記憶した整数sを表わすデータを、実施の形態1で説明した整数eを表わすデータとして入力する。
整数分割部110Cは、CPU911を用いて、入力したデータが表わす位数pと整数sとに基づいて、e1・s≡e2(mod p)、|e1|<√p、0<e2<√pを満たす整数e1及び整数e2を算出する。
整数分割部110Cは、RAM914を用いて、算出した整数e1及び整数e2を表わすデータを記憶する。
検証値算出部130C1は、CPU911を用いて、暗号パラメータ記憶部290Cが記憶した暗号パラメータのうち元gを表わすデータを、実施の形態1で説明した元sを表わすデータとして入力する。
検証値算出部130C1は、CPU911を用いて、暗号文入力部220Cが記憶した元c0を表わすデータを、実施の形態1で説明した元hを表わすデータとして入力する。
検証値算出部130C1は、CPU911を用いて、整数分割部110Cが記憶した整数e1と整数e2とを表わすデータを入力する。
検証値算出部130C1は、CPU911を用いて、入力したデータが表わす元gと元c0と整数e1と整数e2とに基づいて、加法群Gにおける演算により、元c0をe1回加算した元と、元gをe2回加算した元の逆元とを加算した元を算出して、元aとする。
検証値算出部130C1は、RAM914を用いて、算出した元aを表わすデータを記憶する。
検証値算出部130C2は、CPU911を用いて、ペアリング値算出部231Cが記憶した元kを表わすデータを、実施の形態1で説明した元hを表わすデータとして入力する。
検証値算出部130C2は、CPU911を用いて、整数分割部110Cが記憶した整数e1と整数e2とを表わすデータを入力する。
検証値算出部130C2は、CPU911を用いて、入力したデータが表わす元v0と元kと整数e1と整数e2とに基づいて、乗法群Gtにおける演算により、元kをe1回乗算した元と、元v0をe2回乗算した元の逆元とを加算した元を算出して、元a’とする。
検証値算出部130C2は、RAM914を用いて、算出した元a’を表わすデータを記憶する。
検証判定部150Cは、CPU911を用いて、検証結果を表わすデータを出力する。
検証判定部150Cは、CPU911を用いて、検証値算出部130C1が算出した元aに基づいて、元aが加法群Gの単位元であるか否かを判定する。
元aが加法群Gの単位元である場合(すなわち、c0=s・gである場合)、第二検証工程S735Cへ進む。
元aが加法群Gの単位元でない場合(すなわち、c0≠s・gである場合)、暗号文復号処理を終了する。
検証判定部150Cは、CPU911を用いて、検証値算出部130C2が算出した元a’に基づいて、元a’が乗法群Gtの単位元であるか否かを判定する。
元a’が乗法群Gtの単位元である場合(すなわち、k=v0 sである場合)、復号文生成工程S736Cへ進む。
元a’が乗法群Gtの単位元でない場合(すなわち、k≠v0 sである場合)、暗号文復号処理を終了する。
復号メッセージ出力部283Cは、CPU911を用いて、復号文生成部260Cが算出したビット列M’を、復号したメッセージとして出力する。
その後、暗号文復号処理を終了する。
上記暗号パラメータ記憶部290Cは、上記記憶装置(磁気ディスク装置920)を用いて、加法群G1(加法群G)の位数pと、上記加法群G1(加法群G)の生成元gと、上記位数pを位数とする乗法群Gtの元v0とを記憶する。
上記鍵記憶部210Cは、上記記憶装置を用いて、上記位数pを位数とする加法群G2(加法群G’)の元(秘密元)d0と、上記加法群G2(加法群G’)の元(秘密元)d1とを記憶する。
上記暗号文入力部220Cは、上記処理装置(CPU911)を用いて、ビット列cと、上記加法群G1の元c0と、上記加法群G1の元c1と、1以上p-1以下の整数tとを上記暗号文Cとして入力する。
上記暗号文検証部230Cは、ペアリング値算出部231Cと、整数算出部232Cとを有する。
上記ペアリング値算出部231Cは、上記処理装置(CPU911)を用いて、上記暗号文入力部220が入力した元c0と、上記鍵記憶部210Cが記憶した元(秘密元)d0とに基づいて、所定のペアリング関数eにより上記元c0と上記元(秘密元)d0とのペアリング値を算出して、上記乗法群Gtの元k0(=e(c0,d0))とし、上記暗号文入力部220Cが入力した元c1と、上記鍵記憶部210Cが記憶した元d1とに基づいて、上記ペアリング関数eにより上記元c1と上記元d1とのペアリング値を算出して、上記乗法群GTの元k1(=e(c1,d1))とし、算出した上記元k0と、算出した上記元k1とに基づいて、上記元k0と上記元k1の逆元とを乗算して、上記乗法群Gtの元k(=k0/k1)とする。
上記整数算出部232Cは、上記処理装置(CPU911)を用いて、上記ペアリング値算出部231Cが算出した元kと、上記暗号文入力部220Cが入力したビット列cと元c0と元c1とに基づいて、所定のハッシュ関数H”により上記元kと上記ビット列cと上記元c0と上記元c1とをハッシュしたハッシュ値を算出して、整数(ハッシュ値)H”(k,c,c0,c1)とし、上記暗号文入力部220Cが入力した整数tと、算出した整数H”(k,c,c0,c1)と、上記暗号パラメータ記憶部290Cが記憶した位数pとに基づいて、上記整数tから上記整数H”(k,c,c0,c1)を減算した整数を位数pで割った余りを算出して、整数s(=t-H”(k,c,c0,c1)mod p)とする。
上記検証装置100Cは、上記加法群G1(加法群G)を上記有限群Gとして、上記位数pとして上記暗号パラメータ記憶部290Cが記憶した位数pと、上記整数eとして上記整数算出部232Cが算出した整数sと、上記元sとして上記暗号パラメータ記憶部290Cが記憶した生成元gと、上記元hとして上記暗号文入力部220Cが入力した元c0とを入力し、検証成功か否かを判定して、第一の検証結果とし、上記乗法群Gtを上記有限群Gとして、上記位数pとして上記暗号パラメータ記憶部290Cが記憶した位数pと、上記整数eとして上記整数算出部232Cが算出した整数sと、上記元sとして上記暗号パラメータ記憶部290Cが記憶した元v0と、上記元hとして上記ペアリング値算出部231Cが算出した元kとを入力し、検証成功か否かを判定して、第二の検証結果とする。
上記復号文生成部260Cは、上記処理装置(CPU911)を用いて、上記検証装置100Cが上記第一の検証結果及び上記第二の検証結果おいてともに検証成功と判定した場合に、上記ペアリング値算出部231Cが算出した元kに基づいて、所定のハッシュ関数H’により上記元kをハッシュしたハッシュ値を算出して、ビット列H’(k)とし、上記暗号文入力部220Cが入力したビット列cと、算出したビット列H’(k)とに基づいて、上記ビット列cと上記ビット列H’(k)との排他的論理和を取って、ビット列M’(=c XOR H’(k))とし、算出したビット列M’を上記復号文として出力する。
暗号文復号装置200Cは、
秘密鍵dID=(d0,d1)と、暗号文C=(c,c0,c1,t)とを入力し、
ペアリング値の比k=e(c0,d0)/e(c1,d1)を計算する計算装置(ペアリング値算出部231C)と、
整数s=t-H”(k,c,c0,c1)を計算する計算装置(整数算出部232C)と、
指数部(整数)sを分割する装置(整数分割部110C)と、
分割された指数(整数e1及び整数e2)を用いて、乗法群GTにおける二基底指数べき乗算をして、値ke1・v0 -e2を計算する装置(検証値算出部130C2)と、
その値が乗法群GTの単位元1に等しいかどうか判定する装置(検証判定部150C)とを有する。
暗号文復号装置200C(BB1-IDベース暗号鍵デカプセル化装置)は、
秘密鍵dID=(d0,d1)と、暗号文C=(c,c0,c1,t)とを入力し、
ペアリング値の比k=e(c0,d0)/e(c1,d1)を計算する計算装置(ペアリング値算出部231C)と、
整数s=t-H”(k,c,c0,c1)を計算する計算装置(整数算出部232C)と、
指数部(整数)sを分割する装置(整数分割部110C)と、
分割された指数(整数e1及び整数e2)を用いて、乗法群GTにおける二基底指数べき乗算をして、値ke1・v0 -e2を計算する装置(検証値算出部130C2)と、
その値が乗法群GTの単位元1に等しいかどうか判定する装置(検証判定部150C)とを有する。
秘密鍵dID=(d0,d1)と、暗号文C=(c,c0,c1,t)とを入力し、
ペアリング値の比k=e(c0,d0)/e(c1,d1)を計算する計算装置(ペアリング値算出部231C)と、
整数s=t-H”(k,c,c0,c1)を計算する計算装置(整数算出部232C)と、
指数部(整数)sを分割する装置(整数分割部110C)と、
分割された指数(整数e1及び整数e2)を用いて、乗法群GTにおける二基底指数べき乗算をして、値ke1・v0 -e2を計算する装置(検証値算出部130C2)と、
その値が乗法群GTの単位元1に等しいかどうか判定する装置(検証判定部150C)とを有する。
秘密鍵dID=(d0,d1)と、暗号文C=(c,c0,c1,t)とを入力し、
ペアリング値の比k=e(c0,d0)/e(c1,d1)を計算する計算装置(ペアリング値算出部231C)と、
整数s=t-H”(k,c,c0,c1)を計算する計算装置(整数算出部232C)と、
指数部(整数)sを分割する装置(整数分割部110C)と、
分割された指数(整数e1及び整数e2)を用いて、(超)楕円曲線上の点がなす元などの加法群Gにおける二基底スカラー倍算をして、値(e1・c0-e2・g)を計算する装置(検証値算出部130C1)と、
その値が加法群Gの単位元0に等しいかどうか判定する装置(検証判定部150C)とを有する。
IDベース公開鍵暗号システム820Cでは、位数pが素数である加法群G、加法群G’、乗法群Gt、加法群Gの生成元g、加法群G’の生成元g’、ペアリングeを用いる。
暗号パラメータ設定装置810Cは、設定処理(Setup)をする。暗号パラメータ設定装置810Cは、CPU911を用いて、1以上p-1以下のランダムな整数α、整数β、整数γを生成し、群Gの元g1=α・g、群Gの元g2 =β・g、群Gの元g3 =γ・gを計算する。暗号パラメータ設定装置810Cは、CPU911を用いて、群G’の元g’1=α・g’、群G’の元g’2=β・g’、群G’の元g’3=γ・g’を計算する。暗号パラメータ設定装置810Cは、CPU911を用いて、群G’の元g’0=(α・β)・g’と、乗法群Gtの元であるペアリング値v0=e(g,g’0)(すなわち、v0=e(g,g’)α・β)を計算する。暗号パラメータ設定装置810Cは、PKGの公開鍵として(g,g1,g3,v0)を、PKGの秘密鍵として(g’,α,β,γ)を出力する。
鍵生成装置300Cは、秘密鍵導出処理(Extract)をする。鍵生成装置300Cは、CPU911を用いて、暗号文復号装置200Cを識別するビット列IDを入力し、1以上p-1以下のランダムな整数(秘密乱数)rを生成する。鍵生成装置300Cは、CPU911を用いて、整数e=α・β+(α・H(ID)+γ)・rと、群G’の元d0=e・g’と、群G’の元d1=r・g’とを計算し、(d0,d1)をIDに対する秘密鍵dIDとして出力する。
暗号文生成装置400Cは、暗号化処理(Encrypt)をする。暗号文生成装置400Cは、CPU911を用いて、平文(ビット列)Mと、受信者ID(暗号文復号装置200Cを識別するビット列ID)とを入力する。暗号文生成装置400Cは、CPU911を用いて、1以上p-1以下のランダムな整数(秘密乱数)sを生成する。暗号文生成装置400Cは、CPU911を用いて、Gtの元k=v0 sを計算する。暗号文生成装置400Cは、CPU911を用いて、ハッシュ関数H, H’, H”により、ビット列c=XOR(M,H’(k)),群Gの元c0=s・g,群Gの元c1=s・g3+(H(ID)・s)・g1,整数t=s+H”(k,c,c0,c1)を計算する。暗号文生成装置400Cは、CPU911を用いて、暗号文C=(c,c0,c1,t)を出力する。
暗号文復号装置200Cは、復号処理(Decrypt)をする。暗号文復号装置200Cは、CPU911を用いて、秘密鍵dID=(d0,d1)と、暗号文C=(c,c0,c1,t)とを入力する。暗号文復号装置200Cは、CPU911を用いて、乗法群Gtの元k=e(c0,d0)/e(c1,d1)と、整数s=t-H”(k,c,c0,c1)とを計算し、k=v0 sとc0=s・gとが成り立つかどうかをチェックする。成立しなければ、暗号文復号装置200Cは、CPU911を用いて、「拒絶」を出力する。成立すれば、暗号文復号装置200Cは、CPU911を用いて、ビット列M=XOR(c,H’(k))を算出し、出力する。
v1=1が成立した場合、検証値算出部130C1は、CPU911を用いて、加法群Gにおける二基底スカラー倍算により、W=e1・c0-e2・gを計算する。検証判定部150Cは、CPU911を用いて、W=0かどうかをチェックすることにより、c0=s・gが成立するかを高速にチェックする。
実施の形態5について、図28~図33を用いて説明する。
IDベース署名システム820Dは、署名装置400Dを識別する識別データを、署名装置400Dの公開鍵として利用する電子署名システムである。
位数pは、素数である。
加法群Gの位数は、位数pである。元gは、加法群Gの生成元である。
ハッシュ関数Hは、加法群Gの元と、任意の長さのビット列との組から、1以上p-1以下の整数を生成するハッシュ関数である。
ハッシュ関数H’は、任意の長さの二つのビット列の順序対と、加法群Gの三つの元の順序対との組から、1以上p-1以下の整数を生成するハッシュ関数である。
暗号パラメータ設定装置810Dは、暗号パラメータ記憶部819D、秘密乱数生成部812D、公開元算出部813D、マスター鍵出力部814D、公開パラメータ出力部815Dを有する。
マスター鍵出力部814Dが出力したマスター鍵は、鍵生成装置300Dに対して秘密裡に通知される。
公開パラメータ出力部815Dが出力した公開パラメータは、暗号パラメータとともに、IDベース署名システム820Dの利用者に公開される。
鍵生成装置300Dは、暗号パラメータ記憶部390D、マスター鍵記憶部330D、識別入力部340D、署名鍵生成部350D、署名鍵出力部360Dを有する。
署名鍵生成部350Dは、秘密乱数生成部351D、鍵元算出部352D、鍵整数算出部353Dを有する。
署名鍵出力部360Dが出力した署名鍵は、署名装置400Dに対して秘密裡に通知される。
署名装置400Dは、暗号パラメータ記憶部490D、識別記憶部410D、署名鍵記憶部420D、メッセージ入力部440D、署名生成部450D、署名出力部470Dを有する。
識別記憶部410Dは、磁気ディスク装置920を用いて、署名装置400D自身を識別するビット列IDを記憶している。
署名鍵記憶部420Dは、耐タンパ性のある記憶装置を用いて、鍵生成装置300Dが生成した署名鍵を表わすデータを記憶している。
署名生成部450Dは、第一署名元算出部451D、秘密乱数生成部452D、第二署名元算出部453D、チャレンジ算出部454D、署名整数算出部455Dを有する。
なお、元Sはビット列Mにかかわらず一定なので、第一署名元算出部451Dは、メッセージ入力部440Dがビット列Mを入力する前に、あらかじめ元Sを算出し、磁気ディスク装置920を用いて記憶しておいてもよい。
署名検証装置200Dは、暗号パラメータ記憶部290D、識別記憶部210D、メッセージ入力部225D、署名入力部220D、署名検証部230D、検証装置100D、検証結果出力部260Dを有する。
識別記憶部210Dは、磁気ディスク装置920を用いて、署名装置400Dを識別するビット列IDを記憶している。
署名入力部220Dは、CPU911を用いて、メッセージ入力部225Dが入力したビット列Mに付された署名σを入力する。署名入力部220Dは、CPU911を用いて、入力した署名σから、元Rと元Sと元Yと整数zとを表わすデータを取得する。署名入力部220Dは、RAM914を用いて、取得した元Rと元Sと元Yと整数zとを表わすデータを記憶する。
ビット列Mが改変されていなければ、チャレンジ算出部231Dが算出するハッシュ値cは、署名装置400Dのチャレンジ算出部454Dが算出したハッシュ値cと等しい。
第一検証部250Dは、CPU911を用いて、暗号パラメータ記憶部290Dが記憶した暗号パラメータのうち加法群Gと元gとを表わすデータと、署名入力部220Dが記憶した元Sと元Yと整数zとを表わすデータと、チャレンジ算出部231Dが記憶したハッシュ値cを表わすデータとを入力する。第一検証部250Dは、CPU911を用いて、入力したデータが表わす加法群Gと元gと元Sと元Yと整数zとハッシュ値cとに基づいて、加法群Gにおける演算により、元Sをc回加算した元と、元Yとを加算した元Y+c・Sが、元gをz回加算した元z・gと等しいか否かを判定する。第一検証部250Dは、CPU911を用いて、元z・gと元Y+c・Sとが等しい場合、「検証成功」と判定し、元z・gと元Y+c・Sとが等しくない場合、「検証失敗」と判定する。第一検証部250Dは、CPU911を用いて、検証結果を表わすデータを記憶する。
検証装置100Dは、実施の形態1で説明した検証装置100と同様の装置である。
検証装置100Dは、CPU911を用いて、暗号パラメータ記憶部290Dが記憶した暗号パラメータのうち位数pを表わすデータを、実施の形態1で説明した位数pを表わすデータとして入力する。
検証装置100Dは、CPU911を用いて、整数算出部232Dが記憶したハッシュ値hを表わすデータを、実施の形態1で説明した整数eを表わすデータとして入力する。
検証装置100Dは、CPU911を用いて、検証元算出部233Dが記憶した元R’を表わすデータを、実施の形態1で説明した元hを表わすデータとして入力する。
検証装置100Dは、CPU911を用いて、暗号パラメータ記憶部290Dが記憶した暗号パラメータのうち公開元Xを表わすデータを、実施の形態1で説明した元sを表わすデータとして入力する。
検証装置100Dは、CPU911を用いて、入力したデータが表わす位数pとハッシュ値hと元R’と公開元Xとに基づいて、R’=h・Xであるかを検証する。
検証装置100Dは、CPU911を用いて、R’=h・Xである場合、「検証成功」と判定し、R’≠h・Xである場合、「検証失敗」と判定する。
検証装置100Dは、CPU911を用いて、検証結果を表わすデータを出力する。
z・g=Y+c・Sである場合、整数算出工程S733Dへ進む。
z・g≠Y+c・Sである場合、失敗判定工程S737Dへ進む。
R’=h・Xである場合、成功判定工程S736Dへ進む。
R’≠h・Xである場合、失敗判定工程S737Dへ進む。
その後、署名検証処理を終了する。
その後、署名検証処理を終了する。
上記メッセージ入力部225Dは、上記処理装置(CPU911)を用いて、メッセージ(ビット列M)を入力する。
上記署名入力部220Dは、上記処理装置(CPU911)を用いて、上記メッセージ入力部225Dが入力したメッセージ(ビット列M)に対する署名σを入力する。
上記署名検証部230Dは、上記処理装置(CPU911)を用いて、上記メッセージ入力部225Dが入力したメッセージ(ビット列M)と、上記署名入力部220Dが入力した署名σとに基づいて、上記検証装置100Dに入力する整数e(ハッシュ値h)と、上記有限群(加法群)Gの元s(公開元X)と、上記有限群(加法群)Gの元h(元R’)とを算出する。
上記検証装置100Dは、上記署名検証部230Dが算出した整数e(ハッシュ値h)と、上記有限群(加法群)Gの元s(公開元X)と、上記有限群(加法群)Gの元h(元R’)とを入力して、検証成功か否かを判定する。
上記検証結果出力部260Dは、上記処理装置(CPU911)を用いて、上記検証装置100Dが検証した結果に基づいて、検証成功であるか否か表わす検証結果を出力する。
この実施の形態における署名検証装置200Dによれば、検証装置100Dがh=e・sであるかを判定することにより、署名を検証することができる。また、検証装置100Dが署名の整合性を検証する処理にかかる時間を短縮することができるので、署名検証装置200Dが署名を検証する処理全体にかかる時間を短縮することができるという効果を奏する。
上記暗号パラメータ記憶部290Dは、上記記憶装置(磁気ディスク装置920)を用いて、上記有限群(加法群)Gの位数pと、上記有限群(加法群)Gの生成元gと、上記有限群(加法群)Gの元(公開元)Xとを記憶する。
上記識別記憶部210Dは、上記記憶装置(磁気ディスク装置920)を用いて、署名装置400Dを識別するビット列IDを記憶する。
上記メッセージ入力部225Dは、上記処理装置(CPU911)を用いて、ビット列Mを上記メッセージとして入力する。
上記署名入力部220Dは、上記処理装置(CPU911)を用いて、上記有限群(加法群)Gの元Rと、上記有限群(加法群)Gの元Sと、上記有限群(加法群)Gの元Yと、1以上p-1以下の整数zとを上記署名σとして入力する。
上記署名検証部230Dは、整数算出部232Dと、検証元算出部233Dと、チャレンジ算出部231Dと、第一検証部250Dとを有する。
上記整数算出部232Dは、上記処理装置(CPU911)を用いて、上記署名入力部220Dが入力した元Rと、上記識別記憶部210Dが記憶したビット列IDとに基づいて、所定のハッシュ関数Hにより上記元Rと上記ビット列Iとをハッシュしたハッシュ値を算出して、整数h(=H(R,ID))とする。
上記検証元算出部233Dは、上記処理装置(CPU911)を用いて、上記署名入力部220Dが入力した元Rと元Sとに基づいて、上記元Sと、上記元Rの逆元とを加算して、上記有限群(加法群)Gの元R’(=S-R)とする。
上記チャレンジ算出部231Dは、上記処理装置(CPU911)を用いて、上記識別記憶部210Dが記憶したビット列IDと、上記署名入力部220Dが入力した元Rと元Sと元Yと、上記メッセージ入力部225Dが入力したビット列Mとに基づいて、所定のハッシュ関数H’により上記ビット列IDと上記元Rと上記元Sと上記元Yと上記ビット列Mとをハッシュしたハッシュ値を算出して、整数(ハッシュ値)c(=H’(ID,R,S,Y,M))とする。
上記第一検証部250Dは、上記処理装置(CPU911)を用いて、上記暗号パラメータ記憶部290Dが記憶した生成元gと、上記署名入力部220Dが入力した元Sと元Yと整数zと、上記チャレンジ算出部231Dが算出した整数(ハッシュ値)cとに基づいて、上記元Sを上記整数(ハッシュ値)c回加算した元c・Sと上記元Yとを加算した元Y+c・Sが、上記生成元gを上記整数z回加算した元z・gと等しいか否かを判定し、上記元Y+c・Sと上記元z・gとが等しい場合に、検証成功と判定して、第一の検証結果とする。
上記検証装置100Dは、上記位数pとして上記暗号パラメータ記憶部290Dが記憶した位数pと、上記整数eとして上記整数算出部232Dが算出した整数hと、上記元sとして上記暗号パラメータ記憶部290Dが記憶した元Xと、上記元hとして上記検証元算出部233Dが算出した元R’とを入力し、検証成功か否かを判定して、第二の検証結果とする。
上記検証結果出力部260Dは、上記処理装置(CPU911)を用いて、上記第一検証部250Dが検証した第一の検証結果と、上記検証装置100Dが検証した第二の検証結果とに基づいて、上記第一の検証結果及び上記第二の検証結果においてともに検証成功と判定した場合に、検証成功であることを表わす検証結果を出力する。
署名検証装置200Dは、
指数部(整数e)を分割する装置(整数分割部110)と、
分割された指数(整数e1及び整数e2)を用いて、乗法群における二基底指数べき乗算、または(超)楕円曲線上の点がなす群などの加法群における二基底スカラー倍算をして、値he1・e-e2またはe1・h-e2・sを計算する装置(検証値算出部130)と、
その値が乗法群の単位元1または加法群の単位元0に等しいかどうか判定する装置(検証判定部150)とを有する。
指数(整数)eと、暗号で使用する乗法群または加法群の群位数pとを入力して、位数pのビット長の半分のビット長を有する二つの整数e1,e2(ただし、e1・e≡e2(mod p)。)を計算する計算装置(整数分割部110)と、
se2・h-e1=1またはe2・s-e1・h=0を検証する検証装置(検証値算出部130、検証判定部150)とを有する。
除算をする整数v2及び除算される整数v1が、それぞれ、前ステップの除算の剰余v3、及び前ステップの除算をする整数v2である計算装置(第三剰余算出部117)と、
各ステップの除算結果の剰余v3がある一定の数(√p)以上、又はある一定の数(√p)以下であることを判定する計算装置(適合性判定部116)とを有する。
署名検証装置200Dは、
秘密鍵生成センタ(鍵生成装置300D)の公開鍵である乗法群または加法群の元Xと、署名者(署名装置400D)の秘密鍵(署名鍵)の一部である元Rと、署名σの一部である元Sと、署名者を識別するビット列IDとに基づいて、元R・XH(R,ID)またはR+H(R,ID)・Xが元Sと一致するかどうか検証するため、
指数部(ハッシュ値h=H(R,ID))を分割する装置(整数分割部110)と、
分割された指数(整数e1及び整数e2)を用いて、乗法群における二基底指数べき乗算、または(超)楕円曲線上の点がなす群などの加法群における二基底スカラー倍算をして、値(S/R)e1・X-e2またはe1・(S-R)-e2・Xを計算する装置(検証値算出部130)と、
その値が乗法群の単位元1または加法群の単位元0に等しいかどうか判定する装置(検証判定部150)とを有する。
IDベース認証システム820Eでは、位数pが素数である乗法群Gと、乗法群Gの生成元gとを用いる。
鍵生成装置300Dは、ユーザ秘密鍵導出処理をする。鍵生成装置300Dは、CPU911を用いて、PKG秘密鍵xと、証明装置400Eを識別するビット列IDとを入力する。まず、鍵生成装置300Dは、CPU911を用いて、1以上p-1以下のランダムな整数(秘密乱数)rを生成する。鍵生成装置300Dは、CPU911を用いて、群Gの元R=grと、整数s=r+H(R,ID)・xとを計算し、(R,s)をユーザ秘密鍵として出力する。
署名装置400Dは、署名生成処理をする。署名装置400Dは、CPU911を用いて、メッセージMと秘密鍵(R,s)とを入力する。まず、署名装置400Dは、CPU911を用いて、1以上p-1以下のランダムな整数(秘密乱数)yを生成する。署名装置400Dは、CPU911を用いて、群Gの元S=gsと、群Gの元Y=gyとを計算し、整数c=H1(S,Y,R,M)を計算する。署名装置400Dは、CPU911を用いて、整数z=y+c・s mod pを計算し、(c,z,S,Y,R)を署名として出力する。
署名検証装置200Dは、署名検証処理をする。署名検証装置200Dは、CPU911を用いて、署名(c,z,S,Y,R)と、署名装置400Dを識別するビット列IDとを入力する。署名検証装置200Dは、gz=Y・ScとS=R・XH(R,ID)とが成立するか、元S,元YがGの元であるか、整数zが1以上p-1以下であるかを検証する。すべて成立すれば、署名検証装置200Dは、CPU911を用いて、署名検証合格と判定し、そうでなければ、署名検証不合格と判定する。
実施の形態6について、図34~図37を用いて説明する。
IDベース認証システム820Eは、証明装置400Eが偽物ではないことを、認証装置200Eが認証するシステムである。このとき、認証装置200Eは、証明装置400Eを識別する識別データを証明装置400Eの公開鍵として利用する。
認証装置200Eは、認証要求メッセージを受信すると、証明装置400Eに対して、質問メッセージを送信する。認証装置200Eが送信する質問メッセージには、1以上p-1以下の整数cが含まれる。
証明装置400Eは、質問メッセージを受信すると、認証装置200Eに対して回答メッセージを送信する。証明装置400Eが送信する回答メッセージには、整数cに基づいて算出した1以上p-1以下の整数zが含まれる。
認証装置200Eは、受信した認証要求メッセージに含まれる元R、元S、元Yと、受信した回答メッセージに含まれる整数zとを検証して、整合性があれば、証明装置400Eが偽物ではないことを認証する。
なお、実施の形態5で説明した署名装置400Dと共通する部分については、同一の符号を付し、ここでは説明を省略する。
なお、実施の形態5で説明した署名検証装置200Dと共通する部分については、同一の符号を付し、ここでは説明を省略する。
第一検証部250Dは、CPU911を用いて、暗号パラメータ記憶部290Dが記憶した暗号パラメータのうち加法群Gと元gとを表わすデータと、認証要求受信部220Eが記憶した元Sと元Yとを表わすデータと、チャレンジ生成部231Eが記憶した整数値cを表わすデータと、回答受信部227Eが記憶した整数zを表わすデータとを入力する。第一検証部250Dは、CPU911を用いて、入力したデータが表わす加法群Gと元gと元Sと元Yと整数zとハッシュ値cとに基づいて、加法群Gにおける演算により、元Sをc回加算した元と、元Yとを加算した元Y+c・Sが、元gをz回加算した元z・gと等しいか否かを判定する。第一検証部250Dは、CPU911を用いて、元z・gと元Y+c・Sとが等しい場合、「検証成功」と判定し、元z・gと元Y+c・Sとが等しくない場合、「検証失敗」と判定する。第一検証部250Dは、CPU911を用いて、検証結果を表わすデータを記憶する。
なお、実施の形態5で説明した署名検証処理と共通する部分については、同一の符号を付し、ここでは説明を省略する。
署名元算出工程S742Eにおいて、第二署名元算出部453Dは、CPU911を用いて、秘密乱数生成部452Dが生成した秘密乱数yに基づいて、加法群Gの元Y(=y・g)を算出する。
認証要求送信工程S743Eにおいて、証明装置400Eの認証要求送信部470Eは、通信装置915を用いて、署名鍵記憶部420Dが記憶した元Rと、第一署名元算出部451Dが算出した元S(=s・g)と、秘密乱数生成工程S741Eで第二署名元算出部453Dが算出した元Yとを含む認証要求メッセージを、認証装置200Eに対して送信する。
チャレンジ生成工程S752Eにおいて、認証装置200Eのチャレンジ生成部231Eは、CPU911を用いて、1以上p-1以下の整数cをランダムに生成する。
質問送信工程S753Eにおいて、認証装置200Eの質問送信部226Eは、通信装置915を用いて、チャレンジ生成工程S752Eでチャレンジ生成部231Eが生成した整数cを含む質問メッセージを、証明装置400Eに対して送信する。
署名整数算出工程S745Eにおいて、証明装置400Eの署名整数算出部455Dは、CPU911を用いて、暗号パラメータ記憶部490Dが記憶した位数pと、署名鍵記憶部420Dが記憶した整数sと、秘密乱数生成工程S741Eで秘密乱数生成部452Dが生成した秘密乱数yと、質問受信工程S744Eで質問受信部454Eが受信した質問メッセージに含まれる整数yとに基づいて、整数z(=y+c・s mod p)を算出する。
回答送信工程S746Eにおいて、証明装置400Eの回答送信部475Eは、通信装置915を用いて、署名整数算出工程S745Eで署名整数算出部455Dが算出した整数zを含む回答メッセージを、認証装置200Eに対して送信する。
その後、認証処理を終了する。
上記認証要求受信部220Eは、上記受信装置(通信装置915)を用いて、認証要求メッセージを受信する。
上記質問送信部226Eは、上記送信装置(通信装置915)を用いて、上記認証要求受信部220Eが受信した認証要求メッセージに対する応答として、質問メッセージを送信する。
上記回答受信部227Eは、上記受信装置(通信装置915)を用いて、送信した質問メッセージに対する回答メッセージを受信する。
上記署名検証部230Dは、上記処理装置(CPU911)を用いて、上記認証要求受信部220Eが受信した認証要求メッセージと、上記回答受信部227Eが受信した回答メッセージとに基づいて、上記検証装置100Dに入力する整数e(ハッシュ値h)と、上記有限群(加法群)Gの元s(元X)と、上記有限群(加法群)Gの元h(元R’)とを算出する。
上記検証装置100Dは、上記署名検証部230Dが算出した整数e(ハッシュ値h)と、上記有限群(加法群)Gの元s(元X)と、上記有限群(加法群)Gの元h(元R’)とを入力して、検証成功か否かを判定する。
上記認証結果出力部260Eは、上記処理装置(CPU911)を用いて、上記検証装置100Dが検証した結果に基づいて、認証成功であるか否か表わす認証結果を出力する。
上記暗号パラメータ記憶部290Dは、上記記憶装置(磁気ディスク装置920)を用いて、上記有限群(加法群)Gの位数pと、上記有限群(加法群)Gの生成元gと、上記有限群(加法群)Gの元Xとを記憶する。
上記識別記憶部210Dは、上記記憶装置(磁気ディスク装置920)を用いて、証明装置400Eを識別するビット列IDを記憶する。
上記認証要求受信部220Eは、上記受信装置(通信装置915)を用いて、上記有限群(加法群)Gの元Rと、上記有限群(加法群)Gの元Sと、上記有限群(加法群)の元Yとを上記認証要求メッセージとして上記証明装置400Eから受信する。
上記チャレンジ生成部231Eは、上記処理装置(CPU911)を用いて、1以上p-1以下の整数cをランダムに生成する。
上記質問送信部226Eは、上記送信装置(通信装置915)を用いて、上記チャレンジ生成部231Eが生成した整数cを上記質問メッセージとして上記証明装置400Eに対して送信する。
上記回答受信部227Eは、上記受信装置(通信装置915)を用いて、1以上p-1以下の整数zを上記回答メッセージとして上記証明装置400Eから受信する。
上記署名検証部230Dは、整数算出部232Dと、検証元算出部233Dと、第一検証部250Dとを有する。
上記整数算出部232Dは、上記処理装置(CPU911)を用いて、上記認証要求受信部220Eが受信した元Rと、上記識別記憶部210Dが記憶したビット列IDとに基づいて、所定のハッシュ関数Hにより上記元Rと上記ビット列IDとをハッシュしたハッシュ値を算出して、整数h(=H(R,ID))とする。
上記検証元算出部233Dは、上記処理装置(CPU911)を用いて、上記認証要求受信部220Eが受信した元Rと元Sとに基づいて、上記元Sと、上記元Rの逆元とを加算して、上記有限群Gの元R’(=S-R)とする。
上記第一検証部250Dは、上記処理装置(CPU911)を用いて、上記暗号パラメータ記憶部290Dが記憶した生成元gと、上記認証要求受信部220Eが受信した元Sと元Yと、上記チャレンジ生成部231Eが生成した整数cと、上記回答受信部227Eが受信した整数zとに基づいて、上記元Sを上記整数c回加算した元c・Sと上記元Yとを加算した元Y+c・Sが、上記元gを上記整数z回加算した元z・gと等しいか否かを判定し、上記元Y+c・Sと上記元z・gとが等しい場合に、検証成功と判定して、第一の検証結果とする。
上記検証装置100Dは、上記位数pとして上記暗号パラメータ記憶部290Dが記憶した位数pと、上記整数eとして上記整数算出部232Dが算出した整数hと、上記元sとして上記暗号パラメータ記憶部290Dが記憶した元Xと、上記元hとして上記検証元算出部233Dが算出した元R’とを入力し、検証成功か否かを判定して、第二の検証結果とする。
上記認証結果出力部260Eは、上記処理装置(CPU911)を用いて、上記第一検証部250Dが検証した第一の検証結果と、上記検証装置100Dが検証した第二の検証結果とに基づいて、上記第一の検証結果及び上記第二の検証結果においてともに検証成功と判定した場合に、認証成功であることを表わす認証結果を出力する。
認証装置200Eは、
指数部(整数e)を分割する装置(整数分割部110)と、
分割された指数(整数e1及び整数e2)を用いて、乗法群における二基底指数べき乗算、または(超)楕円曲線上の点がなす群などの加法群における二基底スカラー倍算をして、値he1・e-e2またはe1・h-e2・sを計算する装置(検証値算出部130)と、
その値が乗法群の単位元1または加法群の単位元0に等しいかどうか判定する装置(検証判定部150)とを有する。
指数(整数)eと、暗号で使用する乗法群または加法群の群位数pとを入力して、位数pのビット長の半分のビット長を有する二つの整数e1,e2(ただし、e1・e = e2(mod p)。)を計算する計算装置(整数分割部110)と、
se2・h-e1=1またはe2・s-e1・h=0を検証する検証装置(検証値算出部130、検証判定部150)とを有する。
除算をする整数v2、及び除算される整数v1が、それぞれ、前ステップの除算の剰余v3、及び前ステップの除算をする整数v2である計算装置(第三剰余算出部117)と、
各ステップの除算結果の剰余v3がある一定の数(√p)以上、又はある一定の数(√p)以下であることを判定する計算装置(適合性判定部116)とを有する。
認証装置200Eは、
秘密鍵生成センタ(鍵生成装置300D)の公開鍵である乗法群または加法群の元Xと、被認証者(証明装置400E)の秘密鍵(署名鍵)の一部である元Rと、被認証者のコミット値(元)Sと、被認証者を識別するビット列IDとに基づいて、元R・X{H(R,ID)またはR+H(R,ID)・Xが元Sと一致するかどうか検証するため、
指数部(ハッシュ値h=H(R,ID))を分割する装置(整数分割部110)と、
分割された指数(整数e1及び整数e2)を用いて、乗法群における二基底指数べき乗算、または(超)楕円曲線上の点がなす群などの加法群における二基底スカラー倍算をして、値(S/R)e1・X-e2またはe1・(S-R)-e2・Xを計算する装置(検証値算出部130)と、
その値が乗法群の単位元1または加法群の単位元0に等しいかどうか判定する装置(検証判定部150)とを有する。
IDベース認証システム820Eは、証明者(証明装置400E)と認証者(認証装置200E)とを有する。最初に、証明者(証明装置400E)が、検証者(認証装置200E)にコミットメントCmt(認証要求メッセージ)を送付する。検証者(認証装置200E)は、コミットメントCmtを受け取り、コミットメントCmtと公開情報(暗号パラメータ、公開パラメータ)からチャレンジデータCh(質問メッセージ)を計算し、証明者(証明装置400E)に送付する。証明者(証明装置400E)は、チャレンジデータChを受け取り、回答データRspを計算して、検証者(認証装置200E)に送付する。検証者(認証装置200E)は、回答データRspを受け取り、それが正しいデータかどうかを検証する。検証者(認証装置200E)は、回答データが正しければ認証合格、そうでなければ認証不合格と判定する。
暗号パラメータ設定装置810Dは、PKG用鍵生成処理をする。暗号パラメータ設定装置810Dは、CPU911を用いて、1以上p-1以下のランダムな整数xを生成する。暗号パラメータ設定装置810Dは、CPU911を用いて、乗法群Gの元X=gxを計算する。暗号パラメータ設定装置810Dは、CPU911を用いて、群Gの元XをPKG公開鍵、整数xをPKG秘密鍵として出力する。
鍵生成装置300Dは、ユーザ秘密鍵導出処理をする。鍵生成装置300Dは、CPU911を用いて、PKG秘密鍵xと、証明装置400Eを識別するビット列IDとを入力する。まず、鍵生成装置300Dは、CPU911を用いて、1以上p-1以下のランダムな整数(秘密乱数)rを生成する。鍵生成装置300Dは、CPU911を用いて、群Gの元R=grと、整数s=r+H(R,ID)・xとを計算し、(R,s)をユーザ秘密鍵として出力する。
証明装置400Eは、Cmt計算処理において、CPU911を用いて、まず、1以上p-1以下のランダムな整数(秘密乱数)yを生成する。証明装置400Eは、CPU911を用いて、群Gの元S=gsと、群Gの元Y=gyとを計算し、元Sと元Yと元RとをコミットメントCmt(認証要求データ)とする。
認証装置200Eは、Ch計算処理において、CPU911を用いて、1以上p-1以下のランダムな整数cを生成し、チャレンジデータCh(質問データ)とする。
証明装置400Eは、Rsp計算処理において、CPU911を用いて、整数z=y+c・s mod pを計算し、回答データRspとする。
認証装置200Eは、CPU911を用いて、Rspを受け取り、gz=Y・ScとS=R・XH(R,ID)が成立するかどうか、元S及び元Yとが群Gの元であるかどうか、整数zが1以上p-1以下であるかどうかを検証する。すべて成立すれば、認証装置200Eは、CPU911を用いて、認証合格と判定し、そうでなければ、認証不合格と判定する。
また、説明の都合上、主に、群演算を加法的に記述する場合について説明したが、群演算が加法で記述されているか、乗法で記述されているかは、本質的ではない。
暗号システムが利用する有限群において、群演算がコンピュータなどの処理装置を用いて計算可能であり、1回の群演算に多くの時間がかかる場合であれば、この技術による格段の高速化が可能である。
Claims (19)
- データを処理する処理装置と、整数分割部と、検証値算出部と、検証判定部とを有し、
上記整数分割部は、上記処理装置を用いて、有限群Gの位数pと、整数eとを入力し、入力した位数pと整数eとに基づいて、e1・e≡e2(mod p)を満たす整数e1と整数e2とを算出し、
上記検証値算出部は、上記処理装置を用いて、上記有限群Gの元sと、上記有限群Gの元hとを入力し、入力した元sと元hと、上記整数分割部が算出した整数e1と整数e2とに基づいて、上記有限群Gの元a(=e1・h-e2・s)を算出し、
上記検証判定部は、上記処理装置を用いて、上記検証値算出部が算出した元aに基づいて、上記元aが上記有限群Gの単位元である場合に、検証成功と判定することを特徴とする検証装置。 - 上記整数分割部は、上記処理装置を用いて、上記整数e1の絶対値が上記位数pの平方根よりも小さく、かつ、上記整数e2が上記位数pの平方根よりも小さいという条件を満たす整数e1と整数e2とを算出することを特徴とする請求項1に記載の検証装置。
- 上記検証装置は、更に、データを記憶する記憶装置を有し、
上記整数分割部は、第一剰余記憶部と、第二剰余記憶部と、初期値設定部と、適合性判定部と、第三剰余算出部と、分割整数出力部とを有し、
上記第一剰余記憶部は、上記記憶装置を用いて、整数v1を記憶し、
上記第二剰余記憶部は、上記記憶装置を用いて、整数v2を記憶し、
上記初期値設定部は、上記処理装置を用いて、上記位数pを上記整数v1として上記第一剰余記憶部に記憶させ、上記整数eを上記整数v2として上記第二剰余記憶部に記憶させ、
上記適合性判定部は、上記処理装置を用いて、上記第二剰余記憶部が記憶した整数v2が上記位数pの平方根よりも小さい場合に、出力条件を満たしたと判定し、
上記第三剰余算出部は、上記処理装置を用いて、上記適合性判定部が出力条件を満たしたと判定しない場合に、上記第一剰余記憶部が記憶した整数v1と、上記第二剰余記憶部が記憶した整数v2とに基づいて、上記整数v1を上記整数v2で割った余りを算出して、整数v3とし、上記第二剰余記憶部が記憶した整数v2を上記整数v1として上記第一剰余記憶部に記憶させ、算出した整数v3を上記整数v2として上記第二剰余記憶部に記憶させ、
上記分割整数出力部は、上記処理装置を用いて、上記適合性判定部が出力条件を満たしたと判定した場合に、上記第二剰余記憶部が記憶した整数v2を上記整数e2として出力することを特徴とする請求項2に記載の検証装置。 - 上記整数分割部は、更に、第一係数記憶部と、第二係数記憶部と、商算出部と、第三係数算出部とを有し、
上記第一係数記憶部は、上記記憶装置を用いて、整数t1を記憶し、
上記第二係数記憶部は、上記記憶装置を用いて、整数t2を記憶し、
上記初期値設定部は、更に、上記処理装置を用いて、上記整数t1として0を上記第一係数記憶部に記憶させ、上記整数t2として1を上記第二係数記憶部に記憶させ、
上記商算出部は、上記処理装置を用いて、上記第一剰余記憶部が記憶した整数v1と、上記第二剰余記憶部が記憶した整数v2とに基づいて、上記整数v1を上記整数v2で割った商を超えない最大の整数を算出して、整数qとし、
上記第三係数算出部は、上記処理装置を用いて、上記適合性判定部が出力条件を満たしたと判定しない場合に、上記第一係数記憶部が記憶した整数t1と、上記第二係数記憶部が記憶した整数t2と、上記商算出部が算出した整数qとに基づいて、上記整数t2と上記整数qとの積を、上記整数t1から減算した整数を算出して、整数t3とし、上記第二係数記憶部が記憶した整数t2を上記整数t1として上記第一係数記憶部に記憶させ、算出した整数t3を上記整数t2として上記第二係数記憶部に記憶させ、
上記分割整数出力部は、更に、上記処理装置を用いて、上記適合性判定部が出力条件を満たしたと判定した場合に、上記第二係数記憶部が記憶した整数t2を上記整数e1として出力することを特徴とする請求項3に記載の検証装置。 - 上記検証値算出部は、上記処理装置を用いて、Σ(ni・Pi)(ただし、nは2以上の所定の整数。iは0以上k以下の整数。kは上記整数e1の絶対値及び上記整数e2をn進法で表記した場合の桁数の最大値。Piは、上記有限群Gの元で、Pi=e1,sgn・e1,i・h-e2,i・s。e1,sgnは1または-1。e1,i及びe2,iは0以上n-1以下の整数で、e1=e1,sgn・Σ(ni・e1,i)、e2=Σ(ni・e2,i)。)を算出して、上記有限群Gの元aとすることを特徴とする請求項1に記載の検証装置。
- データを記憶する記憶装置と、データを処理する処理装置と、鍵記憶部と、暗号文入力部と、暗号文検証部と、請求項1に記載の検証装置と、復号文生成部とを有し、
上記鍵記憶部は、上記記憶装置を用いて、暗号文を復号する鍵を記憶し、
上記暗号文入力部は、上記処理装置を用いて、暗号文を入力し、
上記暗号文検証部は、上記処理装置を用いて、上記鍵記憶部が記憶した鍵と、上記暗号文入力部が入力した暗号文とに基づいて、上記検証装置に入力する整数eと、上記有限群Gの元sと、上記有限群Gの元hとを算出し、
上記検証装置は、上記暗号文検証部が算出した整数eと、上記有限群Gの元sと、上記有限群Gの元hとを入力して、検証成功か否かを判定し、
上記復号文生成部は、上記処理装置を用いて、上記検証装置が検証成功と判定した場合に、上記暗号文入力部が入力した暗号文を上記鍵記憶部が記憶した鍵により復号して、復号文を生成することを特徴とする暗号文復号装置。 - 上記暗号文復号装置は、更に、暗号パラメータ記憶部と、識別記憶部と、識別元算出部と、識別元記憶部とを有し、
上記暗号パラメータ記憶部は、上記記憶装置を用いて、上記有限群Gの位数pと、上記有限群Gの生成元g1と、上記有限群Gの元Rとを記憶し、
上記識別記憶部は、上記記憶装置を用いて、上記暗号文復号装置を識別するビット列IDを記憶し、
上記識別元算出部は、上記処理装置を用いて、上記識別記憶部が記憶したビット列IDに基づいて、所定のハッシュ関数H1により上記ビット列IDをハッシュしたハッシュ値を算出して、整数H1(ID)とし、上記暗号パラメータ記憶部が記憶した生成元g1と、上記暗号パラメータ記憶部が記憶した元Rと、算出した整数H1(ID)とに基づいて、上記生成元g1を整数H1(ID)倍した元と、上記元Rとを加算して、上記有限群Gの元Q(=R+H1(ID)・g1)とし、
上記識別元記憶部は、上記記憶装置を用いて、上記識別元算出部が算出した元Qを記憶し、
上記鍵記憶部は、上記記憶装置を用いて、有限群G2の元DIDを記憶し、
上記暗号文入力部は、上記処理装置を用いて、上記有限群Gの元Uと、ビット列Vとを上記暗号文として入力し、
上記暗号文検証部は、ペアリング値算出部と、ビット列算出部と、整数算出部とを有し、
上記ペアリング値算出部は、上記処理装置を用いて、上記暗号文入力部が入力した元Uと、上記鍵記憶部が記憶した元DIDとに基づいて、所定のペアリング関数eにより上記元Uと上記元DIDとのペアリング値を算出して、ペアリング値α(=e(U,DID))とし、
上記ビット列算出部は、上記処理装置を用いて、上記ペアリング値算出部が算出したペアリング値αに基づいて、所定のハッシュ関数H2により上記ペアリング値αをハッシュしたハッシュ値を算出して、ビット列H2(α)とし、上記暗号文入力部が入力したビット列Vと、算出したビット列H2(α)とに基づいて、上記ビット列Vと上記ビット列H2(α)との排他的論理和を取って、ビット列m(=V XOR H2(α))とし、
上記整数算出部は、上記処理装置を用いて、上記ビット列算出部が算出したビット列mに基づいて、所定のハッシュ関数H3により上記ビット列mをハッシュしたハッシュ値を算出して、整数r(=H3(m))とし、
上記検証装置は、上記位数pとして上記暗号パラメータ記憶部が記憶した位数pと、上記整数eとして上記整数算出部が算出した整数rと、上記元sとして上記識別元記憶部が記憶した元Qと、上記元hとして上記暗号文入力部が入力した元Uとを入力して、検証成功か否かを判定し、
上記復号文生成部は、上記処理装置を用いて、上記検証装置が検証成功と判定した場合に、上記ビット列算出部が算出したビット列mに基づいて、所定のハッシュ関数H4により上記ビット列mをハッシュしたハッシュ値を算出して、共通鍵K(=H4(m))とし、算出した共通鍵Kを上記復号文として出力することを特徴とする請求項6に記載の暗号文復号装置。 - 上記識別元算出部は、上記暗号文入力部が上記暗号文を入力するよりも前に、上記元Qを算出することを特徴とする請求項7に記載の暗号文復号装置。
- 上記暗号文復号装置は、更に、共通鍵記憶部と、暗号化メッセージ入力部と、メッセージ復号部とを有し、
上記共通鍵記憶部は、上記記憶装置を用いて、上記復号文生成部が出力した共通鍵Kを記憶し、
上記暗号化メッセージ入力部は、上記処理装置を用いて、暗号化メッセージを入力し、
上記メッセージ復号部は、上記処理装置を用いて、上記共通鍵記憶部が記憶した共通鍵Kにより上記暗号化メッセージ入力部が入力した暗号化メッセージを復号することを特徴とする請求項7に記載の暗号文復号装置。 - 上記暗号文復号装置は、更に、暗号パラメータ記憶部を有し、
上記暗号パラメータ記憶部は、上記記憶装置を用いて、上記有限群Gの位数pを記憶し、
上記鍵記憶部は、上記記憶装置を用いて、1以上p-1以下の整数wと、1以上p-1以下の整数xと、1以上p-1以下の整数yと、1以上p-1以下の整数zとを記憶し、
上記暗号文入力部は、上記処理装置を用いて、上記有限群Gの元uと、上記有限群Gの元u’と、上記有限群Gの元vとを上記暗号文として入力し、
上記暗号文検証部は、ハッシュ値算出部と、整数算出部とを有し、
上記ハッシュ値算出部は、上記処理装置を用いて、上記暗号文入力部が入力した元uと元u’とに基づいて、所定のハッシュ関数Hにより上記元uと上記元u’とをハッシュしたハッシュ値を算出して、整数α(=H(u,u’))とし、
上記整数算出部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した位数pと、上記鍵記憶部が記憶した整数xと整数yと、上記ハッシュ値算出部が算出した整数αとに基づいて、上記整数yと上記整数αとの積と、上記整数xとの和を、上記位数pで割った余りを算出して、整数t(=(x+y・α)mod p)とし、
上記検証装置は、上記位数pとして上記暗号パラメータ記憶部が記憶した位数pと、上記整数eとして上記鍵記憶部が記憶した整数wと、上記元sとして上記暗号文入力部が入力した元uと、上記元hとして上記暗号文入力部が入力した元u’とを入力し、検証成功か否かを判定して、第一の検証結果とし、上記暗号パラメータ記憶部が記憶した位数pと、上記整数eとして上記整数算出部が算出した整数tと、上記元sとして上記暗号文入力部が入力した元uと、上記元hとして上記暗号文入力部が入力した元vとを入力し、検証成功か否かを判定して、第二の検証結果とし、
上記復号文生成部は、上記処理装置を用いて、上記検証装置が上記第一の検証結果及び上記第二の検証結果においてともに検証成功と判定した場合に、上記鍵記憶部が記憶した整数zと、上記暗号文入力部が入力した元uとに基づいて、上記元uを上記整数z回加算して、上記有限群Gの元h(=z・u)とし、上記暗号文入力部が入力した元uと、算出した元h~とに基づいて、所定の鍵導出関数KDFにより上記元uと上記元h~とから共通鍵K(=KDF(u,h~))を生成し、生成した共通鍵Kを上記復号文として出力することを特徴とする請求項6に記載の暗号文復号装置。 - 上記暗号文復号装置は、更に、共通鍵記憶部と、暗号化メッセージ入力部と、メッセージ復号部とを有し、
上記共通鍵記憶部は、上記記憶装置を用いて、上記復号文生成部が出力した共通鍵Kを記憶し、
上記暗号化メッセージ入力部は、上記処理装置を用いて、暗号化メッセージを入力し、
上記メッセージ復号部は、上記処理装置を用いて、上記共通鍵記憶部が記憶した共通鍵Kにより上記暗号化メッセージ入力部が入力した暗号化メッセージを復号することを特徴とする請求項10に記載の暗号文復号装置。 - 上記暗号文復号装置は、更に、暗号パラメータ記憶部を有し、
上記暗号パラメータ記憶部は、上記記憶装置を用いて、加法群G1の位数pと、上記加法群G1の生成元gと、上記位数pを位数とする乗法群GTの元v0とを記憶し、
上記鍵記憶部は、上記記憶装置を用いて、上記位数pを位数とする加法群G2の元d0と、上記加法群G2の元d1とを記憶し、
上記暗号文入力部は、上記処理装置を用いて、ビット列cと、上記加法群G1の元c0と、上記加法群G1の元c1と、1以上p-1以下の整数tとを上記暗号文として入力し、
上記暗号文検証部は、ペアリング値算出部と、整数算出部とを有し、
上記ペアリング値算出部は、上記処理装置を用いて、上記暗号文入力部が入力した元c0と、上記秘密鍵記憶部が記憶した元d0とに基づいて、所定のペアリング関数eにより上記元c0と上記元d0とのペアリング値を算出して、上記乗法群GTの元k0(=e(c0,d0))とし、上記暗号文入力部が入力した元c1と、上記秘密鍵記憶部が記憶した元d1とに基づいて、上記ペアリング関数eにより上記元c1と上記元d1とのペアリング値を算出して、上記乗法群GTの元k1(=e(c1,d1))とし、算出した上記元k0と、算出した上記元k1とに基づいて、上記元k0を上記元k1で除算して、上記乗法群GTの元k(=k0/k1)とし、
上記整数算出部は、上記処理装置を用いて、上記ペアリング値算出部が算出した元kと、上記暗号文入力部が入力したビット列cと元c0と元c1とに基づいて、所定のハッシュ関数H”により上記元kと上記ビット列cと上記元c0と上記元c1とをハッシュしたハッシュ値を算出して、整数H”(k,c,c0,c1)とし、上記暗号文入力部が入力した整数tと、算出した整数H”(k,c,c0,c1)と、上記暗号パラメータ記憶部が機記憶した位数pとに基づいて、上記整数tから上記整数H”(k,c,c0,c1)を減算した整数を位数pで割った余りを算出して、整数s(=t-H”(k,c,c0,c1)mod p)とし、
上記検証装置は、上記加法群G1を上記有限群Gとして、上記位数pとして上記暗号パラメータ記憶部が記憶した位数pと、上記整数eとして上記整数算出部が算出した整数sと、上記元sとして上記暗号パラメータ記憶部が記憶した生成元gと、上記元hとして上記暗号文入力部が入力した元c0とを入力し、検証成功か否かを判定して、第一の検証結果とし、上記乗法群GTを上記有限群Gとして、上記位数pとして上記暗号パラメータ記憶部が記憶した位数pと、上記整数eとして上記整数算出部が算出した整数sと、上記元sとして上記暗号パラメータ記憶部が記憶した元v0と、上記元hとして上記ペアリング値算出部が算出した元kとを入力し、検証成功か否かを判定して、第二の検証結果とし、
上記復号文生成部は、上記処理装置を用いて、上記検証装置が上記第一の検証結果及び上記第二の検証結果おいてともに検証成功と判定した場合に、上記ペアリング値算出部が算出した元kとに基づいて、所定のハッシュ関数H’により上記元kをハッシュしたハッシュ値を算出して、ビット列H’(k)とし、上記暗号文入力部が入力したビット列cと、算出したビット列H’(k)とに基づいて、上記ビット列cと上記ビット列H’(k)との排他的論理和を取って、ビット列M’(=c XOR H’(k))とし、算出したビット列M’を上記復号文として出力することを特徴とする請求項6に記載の暗号文復号装置。 - データを処理する処理装置と、メッセージ入力部と、署名入力部と、署名検証部と、請求項1に記載の検証装置と、検証結果出力部とを有し、
上記メッセージ入力部は、上記処理装置を用いて、メッセージを入力し、
上記署名入力部は、上記処理装置を用いて、上記メッセージ入力部が入力したメッセージに対する署名を入力し、
上記署名検証部は、上記処理装置を用いて、上記メッセージ入力部が入力したメッセージと、上記署名入力部が入力した署名とに基づいて、上記検証装置に入力する整数eと、上記有限群Gの元sと、上記有限群Gの元hとを算出し、
上記検証装置は、上記署名検証部が算出した整数eと、上記有限群Gの元sと、上記有限群Gの元hとを入力して、検証成功か否かを判定し、
上記検証結果出力部は、上記処理装置を用いて、上記検証装置が検証した結果に基づいて、検証成功であるか否か表わす検証結果を出力することを特徴とする署名検証装置。 - 上記署名検証装置は、更に、データを記憶する記憶装置と、暗号パラメータ記憶部と、識別記憶部とを有し、
上記暗号パラメータ記憶部は、上記記憶装置を用いて、上記有限群Gの位数pと、上記有限群Gの生成元gと、上記有限群Gの元Xとを記憶し、
上記識別記憶部は、上記記憶装置を用いて、署名装置を識別するビット列IDを記憶し、
上記メッセージ入力部は、上記処理装置を用いて、ビット列Mを上記メッセージとして入力し、
上記署名入力部は、上記処理装置を用いて、上記有限群Gの元Rと、上記有限群Gの元Sと、上記有限群Gの元Yと、1以上p-1以下の整数zとを上記署名として入力し、
上記署名検証部は、整数算出部と、検証元算出部と、チャレンジ算出部と、第一検証部とを有し、
上記整数算出部は、上記処理装置を用いて、上記署名入力部が入力した元Rと、上記識別記憶部が記憶したビット列IDとに基づいて、所定のハッシュ関数Hにより上記元Rと上記ビット列IDとをハッシュしたハッシュ値を算出して、整数h(=H(R,ID))とし、
上記検証元算出部は、上記処理装置を用いて、上記署名入力部が入力した元Rと元Sとに基づいて、上記元Sと、上記元Rの逆元とを加算して、上記有限群Gの元R’(=S-R)とし、
上記チャレンジ算出部は、上記処理装置を用いて、上記識別記憶部が記憶したビット列IDと、上記署名入力部が入力した元Rと元Sと元Yと、上記メッセージ入力部が入力したビット列Mとに基づいて、所定のハッシュ関数H’により上記ビット列IDと上記元Rと上記元Sと上記元Yと上記ビット列Mとをハッシュしたハッシュ値を算出して、整数c(=H’(I,R,S,Y,M))とし、
上記第一検証部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した生成元gと、上記署名入力部が入力した元Sと元Yと整数zと、上記チャレンジ算出部が算出した整数cとに基づいて、上記元Sを上記整数c回加算した元c・Sと上記元Yとを加算した元Y+c・Sが、上記元gを上記整数z回加算した元z・gと等しいか否かを判定し、上記元Y+c・Sと上記元z・gとが等しい場合に、検証成功と判定して、第一の検証結果とし、
上記検証装置は、上記位数pとして上記暗号パラメータ記憶部が記憶した位数pと、上記整数eとして上記整数算出部が算出した整数hと、上記元sとして上記暗号パラメータ記憶部が記憶した元Xと、上記元hとして上記検証元算出部が算出した元R’とを入力し、検証成功か否かを判定して、第二の検証結果とし、
上記検証結果出力部は、上記処理装置を用いて、上記第一検証部が検証した第一の検証結果と、上記検証装置が検証した第二の検証結果とに基づいて、上記第一の検証結果及び上記第二の検証結果においてともに検証成功と判定した場合に、検証成功であることを表わす検証結果を出力することを特徴とする請求項13に記載の署名検証装置。 - データを処理する処理装置と、データを送信する送信装置と、データを受信する受信装置と、認証要求受信部と、質問送信部と、回答受信部と、署名検証部と、請求項1に記載の検証装置と、認証結果出力部とを有し、
上記認証要求受信部は、上記受信装置を用いて、認証要求メッセージを受信し、
上記質問送信部は、上記送信装置を用いて、上記認証要求受信部が受信した認証要求メッセージに対する応答として、質問メッセージを送信し、
上記回答受信部は、上記受信装置を用いて、送信した質問メッセージに対する回答メッセージを受信し、
上記署名検証部は、上記処理装置を用いて、上記認証要求受信部が受信した認証要求メッセージと、上記回答受信部が受信した回答メッセージとに基づいて、上記検証装置に入力する整数eと、上記有限群Gの元sと、上記有限群Gの元hとを算出し、
上記検証装置は、上記署名検証部が算出した整数eと、上記有限群Gの元sと、上記有限群Gの元hとを入力して、検証成功か否かを判定し、
上記認証結果出力部は、上記処理装置を用いて、上記検証装置が検証した結果に基づいて、認証成功であるか否か表わす認証結果を出力することを特徴とする認証装置。 - 上記認証装置は、更に、データを記憶する記憶装置と、暗号パラメータ記憶部と、識別記憶部と、チャレンジ生成部とを有し、
上記暗号パラメータ記憶部は、上記記憶装置を用いて、上記有限群Gの位数pと、上記有限群Gの生成元gと、上記有限群Gの元Xとを記憶し、
上記識別記憶部は、上記記憶装置を用いて、証明装置を識別するビット列IDを記憶し、
上記認証要求受信部は、上記受信装置を用いて、上記有限群Gの元Rと、上記有限群Gの元Sと、上記有限群の元Yとを上記認証要求メッセージとして上記証明装置から受信し、
上記チャレンジ生成部は、上記処理装置を用いて、1以上p-1以下の整数cをランダムに生成し、
上記質問送信部は、上記送信装置を用いて、上記チャレンジ生成部が生成した整数cを上記質問メッセージとして上記証明装置に対して送信し、
上記回答受信部は、上記受信装置を用いて、1以上p-1以下の整数zを上記回答メッセージとして上記証明装置から受信し、
上記署名検証部は、整数算出部と、検証元算出部と、第一検証部とを有し、
上記整数算出部は、上記処理装置を用いて、上記認証要求受信部が受信した元Rと、上記識別記憶部が記憶したビット列IDとに基づいて、所定のハッシュ関数Hにより上記元Rと上記ビット列IDとをハッシュしたハッシュ値を算出して、整数h(=H(R,ID))とし、
上記検証元算出部は、上記処理装置を用いて、上記認証要求受信部が受信した元Rと元Sとに基づいて、上記元Sと、上記元Rの逆元とを加算して、上記有限群Gの元R’(=S-R)とし、
上記第一検証部は、上記処理装置を用いて、上記暗号パラメータ記憶部が記憶した生成元gと、上記認証要求受信部が受信した元Sと元Yと、上記チャレンジ生成部が生成した整数cと、上記回答受信部が受信した整数zとに基づいて、上記元Sを上記整数c回加算した元c・Sと上記元Yとを加算した元Y+c・Sが、上記元gを上記整数z回加算した元z・gと等しいか否かを判定し、上記元Y+c・Sと上記元z・gとが等しい場合に、検証成功と判定して、第一の検証結果とし、
上記検証装置は、上記位数pとして上記暗号パラメータ記憶部が記憶した位数pと、上記整数eとして上記整数算出部が算出した整数hと、上記元sとして上記暗号パラメータ記憶部が記憶した元Xと、上記元hとして上記検証元算出部が算出した元R’とを入力し、検証成功か否かを判定して、第二の検証結果とし、
上記認証結果出力部は、上記処理装置を用いて、上記第一検証部が検証した第一の検証結果と、上記検証装置が検証した第二の検証結果とに基づいて、上記第一の検証結果及び上記第二の検証結果においてともに検証成功と判定した場合に、認証成功であることを表わす認証結果を出力することを特徴とする請求項15に記載の認証装置。 - 請求項1に記載の検証装置を有することを特徴とする暗号システム。
- データを処理する処理装置を有するコンピュータを、請求項1に記載の検証装置として機能させることを特徴とするコンピュータプログラム。
- データを処理する処理装置を有する検証装置が、整合性を検証する検証方法において、
上記処理装置が、有限群Gの位数pと、整数eとを入力し、入力した位数pと整数eとに基づいて、e1・e≡e2(mod p)を満たす整数e1と整数e2とを算出し、
上記処理装置が、上記有限群Gの元sと、上記有限群Gの元hとを入力し、入力した元gと元hと、算出した整数e1と整数e2とに基づいて、上記有限群Gの元a(=e1・h-e2・s)を算出し、
上記処理装置が、算出した元aに基づいて、上記元aが上記有限群Gの単位元である場合に、検証成功と判定することを特徴とする検証方法。
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2008/052884 WO2009104260A1 (ja) | 2008-02-20 | 2008-02-20 | 検証装置 |
JP2009554166A JP5079024B2 (ja) | 2008-02-20 | 2008-02-20 | 検証装置及び暗号文復号装置及び署名検証装置及び認証装置及び暗号システム及びコンピュータプログラム |
EP08720765.0A EP2244243B1 (en) | 2008-02-20 | 2008-02-20 | Verifying device |
US12/809,440 US8458479B2 (en) | 2008-02-20 | 2008-02-20 | Verification apparatus |
CN2008801253575A CN101925942B (zh) | 2008-02-20 | 2008-02-20 | 验证装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2008/052884 WO2009104260A1 (ja) | 2008-02-20 | 2008-02-20 | 検証装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2009104260A1 true WO2009104260A1 (ja) | 2009-08-27 |
Family
ID=40985155
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/JP2008/052884 WO2009104260A1 (ja) | 2008-02-20 | 2008-02-20 | 検証装置 |
Country Status (5)
Country | Link |
---|---|
US (1) | US8458479B2 (ja) |
EP (1) | EP2244243B1 (ja) |
JP (1) | JP5079024B2 (ja) |
CN (1) | CN101925942B (ja) |
WO (1) | WO2009104260A1 (ja) |
Families Citing this family (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100208884A1 (en) * | 2009-02-19 | 2010-08-19 | Thomson Licensing | Method and device for hashing onto points of an elliptic curve |
US9397986B2 (en) * | 2012-01-19 | 2016-07-19 | Globalfoundries Inc. | Authenticating acceptance of a string using an automaton |
KR101380895B1 (ko) * | 2012-06-12 | 2014-04-10 | 한국전자통신연구원 | 보안 서비스 제공 장치 및 이를 이용한 보안 서비스 방법 |
US9189581B2 (en) * | 2012-07-30 | 2015-11-17 | Synopsys, Inc. | Equivalence checking between two or more circuit designs that include division circuits |
US8806625B1 (en) * | 2012-10-02 | 2014-08-12 | Symantec Corporation | Systems and methods for performing security scans |
WO2014076927A1 (ja) | 2012-11-13 | 2014-05-22 | パナソニック株式会社 | 機器を遠隔操作するシステムにおいて用いられる方法 |
JP6317099B2 (ja) * | 2013-01-08 | 2018-04-25 | パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカPanasonic Intellectual Property Corporation of America | プログラムの正当性を確認するための確認方法及び、確認システム |
US8930687B1 (en) * | 2013-03-15 | 2015-01-06 | Emc Corporation | Secure distributed deduplication in encrypted data storage |
GB2515057B (en) | 2013-06-12 | 2016-02-24 | Cryptomathic Ltd | System and Method for Obtaining a Digital Signature |
US9100175B2 (en) | 2013-11-19 | 2015-08-04 | M2M And Iot Technologies, Llc | Embedded universal integrated circuit card supporting two-factor authentication |
US9350550B2 (en) | 2013-09-10 | 2016-05-24 | M2M And Iot Technologies, Llc | Power management and security for wireless modules in “machine-to-machine” communications |
US10498530B2 (en) | 2013-09-27 | 2019-12-03 | Network-1 Technologies, Inc. | Secure PKI communications for “machine-to-machine” modules, including key derivation by modules and authenticating public keys |
US10700856B2 (en) | 2013-11-19 | 2020-06-30 | Network-1 Technologies, Inc. | Key derivation for a module using an embedded universal integrated circuit card |
EP3114806B1 (en) * | 2014-03-06 | 2020-06-17 | Telefonaktiebolaget LM Ericsson (publ) | Network node, device and methods for providing an authentication module |
US9565114B1 (en) * | 2014-03-08 | 2017-02-07 | Google Inc. | Weighted load balancing using scaled parallel hashing |
US9853977B1 (en) | 2015-01-26 | 2017-12-26 | Winklevoss Ip, Llc | System, method, and program product for processing secure transactions within a cloud computing system |
JP6490613B2 (ja) * | 2016-03-14 | 2019-03-27 | 株式会社東芝 | 通信装置、量子鍵配送システム、量子鍵配送方法およびプログラム |
US11895240B2 (en) * | 2016-12-15 | 2024-02-06 | Nec Corporation | System, apparatus, method and program for preventing illegal distribution of an access token |
JP2018146766A (ja) * | 2017-03-06 | 2018-09-20 | キヤノン株式会社 | スカラー倍演算装置、スカラー倍演算方法及びプログラム |
US10742413B2 (en) * | 2017-04-25 | 2020-08-11 | International Business Machines Corporation | Flexible verifiable encryption from lattices |
US10256974B1 (en) | 2018-04-25 | 2019-04-09 | Blockchain Asics Llc | Cryptographic ASIC for key hierarchy enforcement |
AU2019259262B2 (en) * | 2018-04-26 | 2021-07-22 | Nippon Telegraph And Telephone Corporation | Secure aggregate median system, secure computation apparatus, secure aggregate median method, and program |
US10673625B1 (en) * | 2019-06-15 | 2020-06-02 | University Of South Florida | Efficient identity-based and certificateless cryptosystems |
US11997212B2 (en) * | 2019-06-26 | 2024-05-28 | Micron Technology, Inc. | Payload validation for a memory system |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2000039668A1 (en) | 1998-12-24 | 2000-07-06 | Certicom Corp. | A method for accelerating cryptographic operations on elliptic curves |
JP2002215023A (ja) * | 2001-01-18 | 2002-07-31 | Mitsubishi Electric Corp | 超楕円曲線暗号生成方法及び超楕円曲線暗号生成装置 |
JP2003216027A (ja) * | 2002-01-28 | 2003-07-30 | Nec Corp | 確率公開鍵暗号文の冪乗剰余積の各指数係数が区間内にあることの証明システム及び方法並びにプログラム |
JP2004201124A (ja) | 2002-12-19 | 2004-07-15 | Murata Mach Ltd | 公開鍵暗号方法,署名方法,暗号通信システム及びコンピュータプログラム |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5497423A (en) * | 1993-06-18 | 1996-03-05 | Matsushita Electric Industrial Co., Ltd. | Method of implementing elliptic curve cryptosystems in digital signatures or verification and privacy communication |
US7567669B2 (en) * | 1996-05-17 | 2009-07-28 | Certicom Corp. | Strengthened public key protocol |
EP0917047B1 (en) * | 1997-11-04 | 2004-10-13 | Nippon Telegraph and Telephone Corporation | Apparatus for modular inversion for information security |
US6295359B1 (en) * | 1998-05-21 | 2001-09-25 | Pitney Bowes Inc. | Method and apparatus for distributing keys to secure devices such as a postage meter |
JP3551853B2 (ja) * | 1999-08-27 | 2004-08-11 | 日本電気株式会社 | αYa+βXb+1=0という形の定義方程式をもつ代数曲線暗号における安全なパラメータの生成装置、生成方法、および記録媒体 |
US7200225B1 (en) * | 1999-11-12 | 2007-04-03 | Richard Schroeppel | Elliptic curve point ambiguity resolution apparatus and method |
US6836784B2 (en) * | 2001-01-17 | 2004-12-28 | Matsushita Electric Industrial Co., Ltd. | Efficient greatest common divisor algorithm using multiprecision arithmetic |
US7308469B2 (en) * | 2001-06-15 | 2007-12-11 | Robert Joseph Harley | Method for generating secure elliptic curves using an arithmetic-geometric mean iteration |
US7542568B2 (en) * | 2001-09-27 | 2009-06-02 | Panasonic Corporation | Encryption device a decrypting device a secret key generation device a copyright protection system and a cipher communication device |
US7458006B2 (en) * | 2002-02-22 | 2008-11-25 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Methods for computing the CRC of a message from the incremental CRCs of composite sub-messages |
US7724898B2 (en) * | 2002-10-17 | 2010-05-25 | Telefonaktiebolaget L M Ericsson (Publ) | Cryptography using finite fields of odd characteristic on binary hardware |
US7197527B2 (en) * | 2002-10-17 | 2007-03-27 | Telefonaktiebolaget Lm Ericsson (Publ) | Efficient arithmetic in finite fields of odd characteristic on binary hardware |
US20050135610A1 (en) * | 2003-11-01 | 2005-06-23 | Liqun Chen | Identifier-based signcryption |
US7499544B2 (en) * | 2003-11-03 | 2009-03-03 | Microsoft Corporation | Use of isogenies for design of cryptosystems |
JP4629972B2 (ja) | 2003-12-12 | 2011-02-09 | 三菱電機株式会社 | ベクトル演算装置及び分割値演算装置及び楕円曲線スカラー倍演算装置及び楕円暗号演算装置及びベクトル演算方法及びプログラム及びプログラムを記録したコンピュータ読み取り可能な記録媒体 |
US7395494B2 (en) * | 2003-12-22 | 2008-07-01 | Electronics And Telecommunications Research Institute | Apparatus for encoding and decoding of low-density parity-check codes, and method thereof |
US7664957B2 (en) * | 2004-05-20 | 2010-02-16 | Ntt Docomo, Inc. | Digital signatures including identity-based aggregate signatures |
US7792286B2 (en) * | 2005-04-18 | 2010-09-07 | Panasonic Corporation | Signature generation device and signature verification device |
US8111826B2 (en) * | 2006-01-11 | 2012-02-07 | Mitsubishi Electric Corporation | Apparatus for generating elliptic curve cryptographic parameter, apparatus for processing elliptic curve cryptograph, program for generating elliptic curve cryptographic parameter, and program for processing elliptic cyptograph |
JP4859933B2 (ja) * | 2007-01-19 | 2012-01-25 | 三菱電機株式会社 | 暗号文生成装置及び暗号通信システム及び群パラメータ生成装置 |
-
2008
- 2008-02-20 WO PCT/JP2008/052884 patent/WO2009104260A1/ja active Application Filing
- 2008-02-20 US US12/809,440 patent/US8458479B2/en active Active
- 2008-02-20 JP JP2009554166A patent/JP5079024B2/ja active Active
- 2008-02-20 CN CN2008801253575A patent/CN101925942B/zh not_active Expired - Fee Related
- 2008-02-20 EP EP08720765.0A patent/EP2244243B1/en not_active Not-in-force
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2000039668A1 (en) | 1998-12-24 | 2000-07-06 | Certicom Corp. | A method for accelerating cryptographic operations on elliptic curves |
US7110538B2 (en) | 1998-12-24 | 2006-09-19 | Certicom Corp. | Method for accelerating cryptographic operations on elliptic curves |
JP2002215023A (ja) * | 2001-01-18 | 2002-07-31 | Mitsubishi Electric Corp | 超楕円曲線暗号生成方法及び超楕円曲線暗号生成装置 |
JP2003216027A (ja) * | 2002-01-28 | 2003-07-30 | Nec Corp | 確率公開鍵暗号文の冪乗剰余積の各指数係数が区間内にあることの証明システム及び方法並びにプログラム |
JP2004201124A (ja) | 2002-12-19 | 2004-07-15 | Murata Mach Ltd | 公開鍵暗号方法,署名方法,暗号通信システム及びコンピュータプログラム |
Non-Patent Citations (8)
Title |
---|
"18033-2: Information Technology-Security techniques-Encryption algorithms-Part 2: Asymmetric ciphers", ISO/IEC 18033-2, 2006 |
D. BONEH; X. BOYEN: "Efficient Selective-ID Secure Identity Based Encryption Without Random Oracle", EUROCRYPT 2004, vol. 3027, 2004, pages 223 - 238 |
M. BARBOSA; L. CHEN; Z. CHENG; M. CHIMLEY; A. DENT; P. FARSHIM; K. HARRISON; J. MALONE-LEE; N.P. SMART; F. VERCAUTEREN: "SK-KEM: An Identity-Based KEM", IEEE P1363.3 |
M. BELLARE; C. NAMPREMPRE; G. NEVEN: "Security Proofs for Identity-Based Identification and Signature Schemes", EUROCRYPT 2004, 2004 |
R. CRAMER; V. SHOUP: "Design and Analysis of Practical Public-KeyEncryption Schemes secure against Adaptive Chosn Ciphertext Attack", CRYPTOLOGY EPRINT ARCHIVE, 2001, Retrieved from the Internet <URL:http://eprint.iacr.org> |
R.P. GALLANT; R.J. LAMBERT; S.A. VANSTONE: "Faster Point Multiplication on Elliptic Curves with Efficient Endomorphisms", CRYPTO 2001, vol. 2139, 2001, pages 190 - 200, XP000988701 |
SAKAI Y. ET AL.: "Ango Module Kensho Tool no Kaihatsu", DENSHI SEIFU GYOSEI JOHOKA JIGYO, HEISEI 16 NENDO GAIYOBAN HOKOKUSHO, INFORMATION-TECHNOLOGY PROMOTION AGENCY, JAPAN : SECURITY CENTER, 8 April 2005 (2005-04-08), XP008142170, Retrieved from the Internet <URL:http://www.ipa.go.jp/security/fy16/development/crypt_module/index.html> * |
X. BOYEN: "The BB1 Identity-Based Cryptosystem: A Standard for Encryption and Key Encapsulation", IEEE P1363.3 |
Also Published As
Publication number | Publication date |
---|---|
JPWO2009104260A1 (ja) | 2011-06-16 |
US8458479B2 (en) | 2013-06-04 |
EP2244243A1 (en) | 2010-10-27 |
US20100275028A1 (en) | 2010-10-28 |
EP2244243A4 (en) | 2013-11-13 |
JP5079024B2 (ja) | 2012-11-21 |
CN101925942B (zh) | 2013-11-27 |
CN101925942A (zh) | 2010-12-22 |
EP2244243B1 (en) | 2017-12-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5079024B2 (ja) | 検証装置及び暗号文復号装置及び署名検証装置及び認証装置及び暗号システム及びコンピュータプログラム | |
CN111106936B (zh) | 一种基于sm9的属性加密方法与系统 | |
US7594261B2 (en) | Cryptographic applications of the Cartier pairing | |
Rodriguez-Henriquez et al. | A brief introduction to modern cryptography | |
CN104270249B (zh) | 一种从无证书环境到基于身份环境的签密方法 | |
JP3872107B2 (ja) | 暗号キー回復システム | |
CN110830236B (zh) | 基于全域哈希的身份基加密方法 | |
Harkins | Dragonfly key exchange | |
CN110113150B (zh) | 基于无证书环境的可否认认证的加密方法和系统 | |
US20150288527A1 (en) | Verifiable Implicit Certificates | |
CN110896351B (zh) | 基于全域哈希的身份基数字签名方法 | |
CN108337092B (zh) | 用于在通信网络中执行集体认证的方法和系统 | |
CN114117547B (zh) | 一种基于预计算表的sm9数字签名加速生成方法以及数字签名加速验证方法 | |
US20150006900A1 (en) | Signature protocol | |
CN114448641A (zh) | 一种隐私加密方法、电子设备、存储介质以及芯片 | |
CN106453253B (zh) | 一种高效的基于身份的匿签密方法 | |
Lizama-Pérez et al. | Public hash signature for mobile network devices | |
CN111669275B (zh) | 一种无线网络环境下可选择从节点的主从协作签名方法 | |
CN116346336B (zh) | 一种基于多层密钥生成中心的密钥分发方法及相关系统 | |
Yang et al. | Certificateless universal designated verifier signature schemes | |
CN115442057A (zh) | 一种具有强不可链接性的可随机化盲签名方法及系统 | |
JP5679344B2 (ja) | 署名鍵難読化システム、署名鍵難読化方法、難読化された署名鍵を用いた暗号化署名システム、難読化された署名鍵を用いた暗号化署名方法とプログラム | |
KR20240045231A (ko) | 디지털 서명 셰어의 생성 | |
Lee | Cryptanalysis of Zhu et al.’s Identity-Based Encryption with Equality Test without Random Oracles | |
Ricci et al. | Privacy-enhancing group signcryption scheme |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
WWE | Wipo information: entry into national phase |
Ref document number: 200880125357.5 Country of ref document: CN |
|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 08720765 Country of ref document: EP Kind code of ref document: A1 |
|
ENP | Entry into the national phase |
Ref document number: 2009554166 Country of ref document: JP Kind code of ref document: A |
|
WWE | Wipo information: entry into national phase |
Ref document number: 2008720765 Country of ref document: EP |
|
WWE | Wipo information: entry into national phase |
Ref document number: 12809440 Country of ref document: US |
|
NENP | Non-entry into the national phase |
Ref country code: DE |