WO2009104260A1 - 検証装置 - Google Patents

検証装置 Download PDF

Info

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
Application number
PCT/JP2008/052884
Other languages
English (en)
French (fr)
Inventor
克幸 高島
Original Assignee
三菱電機株式会社
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 三菱電機株式会社 filed Critical 三菱電機株式会社
Priority to EP08720765.0A priority Critical patent/EP2244243B1/en
Priority to PCT/JP2008/052884 priority patent/WO2009104260A1/ja
Priority to CN2008801253575A priority patent/CN101925942B/zh
Priority to JP2009554166A priority patent/JP5079024B2/ja
Priority to US12/809,440 priority patent/US8458479B2/en
Publication of WO2009104260A1 publication Critical patent/WO2009104260A1/ja

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3066Public 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3066Public 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/3073Public 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • H04L9/3252Cryptographic 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

Abstract

 整数分割処理S701において、整数分割部110は、有限群Gの位数pと、整数eとを入力し、入力した位数pと整数eとに基づいて、e・e≡e(mod p)を満たす整数eと整数eとを算出する。検証値算出処理S702において、検証値算出部130は、有限群Gの元sと、加法群Gの元hとを入力し、入力した元sと元hと、整数分割処理S701で整数分割部110が算出した整数eと整数eとに基づいて、有限群Gの元a(=e・h-e・s)を算出する。検証判定処理S703において、検証判定部150は、検証値算出部130が算出した元aに基づいて、元aが有限群Gの単位元Oであるか否かを判定する。これにより、h=e・sが成立するか否かを高速に判定する。

Description

[規則37.2に基づきISAが決定した発明の名称] 検証装置
 この発明は、公開鍵暗号システムなどの暗号システムにおいて、暗号文などの整合性を検証する検証装置に関する。
 整数の剰余類が乗法についてなす群や楕円曲線上の点がなす群などの有限群(finite group)を利用した暗号システムがある。
 有限群を利用した暗号システムにおいて、暗号文の整合性を検証するなどのために、有限群の元h、s及び整数eに基づいて、h=e・s(有限群の群演算を加法的に記述した場合)またはh=s(有限群の群演算を乗法的に記述した場合)であるか否かを判定する場合がある。
特開2004-201124号公報 国際公開00/39668号公報 米国特許7110538号公報 R.P.Gallant、R.J.Lambert、S.A.Vanstone「Faster Point Multiplication on Elliptic Curves with Efficient Endomorphisms"Crypto 2001、LNCS 2139、190~200ページ、2001年。 「18033-2:Information Technology―Security techniques―Encryption algorithms―Part2:Asymmetric ciphers」ISO/IEC 18033-2、2006年。 R.Cramer、V.Shoup「Design and Analysis of Practical Public-Key Encryption Schemes secure against Adaptive Chosn Ciphertext Attack」Cryptology ePrint Archive、http://eprint.iacr.org、2001年。 D.Boneh、X.Boyen「Efficient Selective-ID Secure Identity Based Encryption Without Random Oracle」EUROCRYPT 2004、LNCS 3027、223~238ページ、2004年。 X.Boyen「The BB1 Identity-Based Cryptosystem:A Standard for Encryption and Key Encapsulation」Submissions for IEEE P1363.3、http://grouper.ieee.org/groups/1363/IBC/submissions/index.html、2006年。 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」Submissions for IEEE P1363.3、http://grouper.ieee.org/groups/1363/IBC/submissions/index.html。 M.Bellare、C.Namprempre、G.Neven「Security Proofs for Identity-Based Identification and Signature Schemes」EUROCRYPT 2004、LNCS 3027、2004年
 暗号システムに利用される有限群は、位数が非常に大きく、コンピュータなどの処理装置が1回の群演算をするのに、多くの時間がかかる場合がある。
 この発明は、例えば、上記のような課題を解決するためになされたものであり、コンピュータなどの処理装置を用いてh=s・eであるか否かを高速に判定することを目的とする。
 この発明にかかる検証装置は、
 データを処理する処理装置と、整数分割部と、検証値算出部と、検証判定部とを有し、
 上記整数分割部は、上記処理装置を用いて、有限群Gの位数pと、整数eとを入力し、入力した位数pと整数eとに基づいて、e・e≡e(mod p)を満たす整数eと整数eとを算出し、
 上記検証値算出部は、上記処理装置を用いて、上記有限群Gの元sと、上記有限群Gの元hとを入力し、入力した元sと元hと、上記整数分割部が算出した整数eと整数eとに基づいて、上記有限群Gの元a(=e・h-e・s)を算出し、
 上記検証判定部は、上記処理装置を用いて、上記検証値算出部が算出した元aに基づいて、上記元aが上記有限群Gの単位元である場合に、検証成功と判定することを特徴とする。
 この発明にかかる検証装置は、
 上記整数分割部が、上記処理装置を用いて、上記整数eの絶対値が上記位数pの平方根よりも小さく、かつ、上記整数eが上記位数pの平方根よりも小さいという条件を満たす整数eと整数eとを算出することを特徴とする。
 この発明にかかる検証装置は、更に、データを記憶する記憶装置を有し、
 上記整数分割部は、第一剰余記憶部と、第二剰余記憶部と、初期値設定部と、適合性判定部と、第三剰余算出部と、分割整数出力部とを有し、
 上記第一剰余記憶部は、上記記憶装置を用いて、整数vを記憶し、
 上記第二剰余記憶部は、上記記憶装置を用いて、整数vを記憶し、
 上記初期値設定部は、上記処理装置を用いて、上記位数pを上記整数vとして上記第一剰余記憶部に記憶させ、上記整数eを上記整数vとして上記第二剰余記憶部に記憶させ、
 上記適合性判定部は、上記処理装置を用いて、上記第二剰余記憶部が記憶した整数vが上記位数pの平方根よりも小さい場合に、出力条件を満たしたと判定し、
 上記第三剰余算出部は、上記処理装置を用いて、上記適合性判定部が出力条件を満たしたと判定しない場合に、上記第一剰余記憶部が記憶した整数vと、上記第二剰余記憶部が記憶した整数vとに基づいて、上記整数vを上記整数vで割った余りを算出して、整数vとし、上記第二剰余記憶部が記憶した整数vを上記整数vとして上記第一剰余記憶部に記憶させ、算出した整数vを上記整数vとして上記第二剰余記憶部に記憶させ、
 上記分割整数出力部は、上記処理装置を用いて、上記適合性判定部が出力条件を満たしたと判定した場合に、上記第二剰余記憶部が記憶した整数vを上記整数eとして出力することを特徴とする。
 この発明にかかる検証装置は、
 上記整数分割部が、更に、第一係数記憶部と、第二係数記憶部と、商算出部と、第三係数算出部とを有し、
 上記第一係数記憶部は、上記記憶装置を用いて、整数tを記憶し、
 上記第二係数記憶部は、上記記憶装置を用いて、整数tを記憶し、
 上記初期値設定部は、更に、上記処理装置を用いて、上記整数tとして0を上記第一係数記憶部に記憶させ、上記整数tとして1を上記第二係数記憶部に記憶させ、
 上記商算出部は、上記処理装置を用いて、上記第一剰余記憶部が記憶した整数vと、上記第二剰余記憶部が記憶した整数vとに基づいて、上記整数vを上記整数vで割った商を超えない最大の整数を算出して、整数qとし、
 上記第三係数算出部は、上記処理装置を用いて、上記適合性判定部が出力条件を満たしたと判定しない場合に、上記第一係数記憶部が記憶した整数tと、上記第二係数記憶部が記憶した整数tと、上記商算出部が算出した整数qとに基づいて、上記整数tと上記整数qとの積を、上記整数tから減算した整数を算出して、整数tとし、上記第二係数記憶部が記憶した整数tを上記整数tとして上記第一係数記憶部に記憶させ、算出した整数tを上記整数tとして上記第二係数記憶部に記憶させ、
 上記分割整数出力部は、更に、上記処理装置を用いて、上記適合性判定部が出力条件を満たしたと判定した場合に、上記第二係数記憶部が記憶した整数tを上記整数eとして出力することを特徴とする。
 この発明にかかる検証装置は、
 上記検証値算出部が、上記処理装置を用いて、Σ(n・P)(ただし、nは2以上の所定の整数。iは0以上k以下の整数。kは上記整数eの絶対値及び上記整数eをn進法で表記した場合の桁数の最大値。Pは、上記有限群Gの元で、P=e1,sgn・e1,i・h-e2,i・s。e1,sgnは1または-1。e1,i及びe2,iは0以上n-1以下の整数で、e=e1,sgn・Σ(n・e1,i)、e=Σ(n・e2,i)。)を算出して、上記有限群Gの元aとすることを特徴とする。
 この発明にかかる暗号文復号装置は、
 データを記憶する記憶装置と、データを処理する処理装置と、鍵記憶部と、暗号文入力部と、暗号文検証部と、検証装置と、復号文生成部とを有し、
 上記鍵記憶部は、上記記憶装置を用いて、暗号文を復号する鍵を記憶し、
 上記暗号文入力部は、上記処理装置を用いて、暗号文を入力し、
 上記暗号文検証部は、上記処理装置を用いて、上記鍵記憶部が記憶した鍵と、上記暗号文入力部が入力した暗号文とに基づいて、上記検証装置に入力する整数eと、上記有限群Gの元sと、上記有限群Gの元hとを算出し、
 上記検証装置は、上記暗号文検証部が算出した整数eと、上記有限群Gの元sと、上記有限群Gの元hとを入力して、検証成功か否かを判定し、
 上記復号文生成部は、上記処理装置を用いて、上記検証装置が検証成功と判定した場合に、上記暗号文入力部が入力した暗号文を上記鍵記憶部が記憶した鍵により復号して、復号文を生成することを特徴とする。
 この発明にかかる暗号文復号装置は、更に、暗号パラメータ記憶部と、識別記憶部と、識別元算出部と、識別元記憶部とを有し、
 上記暗号パラメータ記憶部は、上記記憶装置を用いて、上記有限群Gの位数pと、上記有限群Gの生成元gと、上記有限群Gの元Rとを記憶し、
 上記識別記憶部は、上記記憶装置を用いて、上記暗号文復号装置を識別するビット列IDを記憶し、
 上記識別元算出部は、上記処理装置を用いて、上記識別記憶部が記憶したビット列IDに基づいて、所定のハッシュ関数Hにより上記ビット列IDをハッシュしたハッシュ値を算出して、整数H(ID)とし、上記暗号パラメータ記憶部が記憶した生成元gと、上記暗号パラメータ記憶部が記憶した元Rと、算出した整数H(ID)とに基づいて、上記生成元gを整数H(ID)倍した元と、上記元Rとを加算して、上記有限群Gの元Q(=R+H(ID)・g)とし、
 上記識別元記憶部は、上記記憶装置を用いて、上記識別元算出部が算出した元Qを記憶し、
 上記鍵記憶部は、上記記憶装置を用いて、有限群Gの元DIDを記憶し、
 上記暗号文入力部は、上記処理装置を用いて、上記有限群Gの元Uと、ビット列Vとを上記暗号文として入力し、
 上記暗号文検証部は、ペアリング値算出部と、ビット列算出部と、整数算出部とを有し、
 上記ペアリング値算出部は、上記処理装置を用いて、上記暗号文入力部が入力した元Uと、上記鍵記憶部が記憶した元DIDとに基づいて、所定のペアリング関数eにより上記元Uと上記元DIDとのペアリング値を算出して、ペアリング値α(=e(U,DID))とし、
 上記ビット列算出部は、上記処理装置を用いて、上記ペアリング値算出部が算出したペアリング値αに基づいて、所定のハッシュ関数Hにより上記ペアリング値αをハッシュしたハッシュ値を算出して、ビット列H(α)とし、上記暗号文入力部が入力したビット列Vと、算出したビット列H(α)とに基づいて、上記ビット列Vと上記ビット列H(α)との排他的論理和を取って、ビット列m(=V XOR H(α))とし、
 上記整数算出部は、上記処理装置を用いて、上記ビット列算出部が算出したビット列mに基づいて、所定のハッシュ関数Hにより上記ビット列mをハッシュしたハッシュ値を算出して、整数r(=H(m))とし、
 上記検証装置は、上記位数pとして上記暗号パラメータ記憶部が記憶した位数pと、上記整数eとして上記整数算出部が算出した整数rと、上記元sとして上記識別元記憶部が記憶した元Qと、上記元hとして上記暗号文入力部が入力した元Uとを入力して、検証成功か否かを判定し、
 上記復号文生成部は、上記処理装置を用いて、上記検証装置が検証成功と判定した場合に、上記ビット列算出部が算出したビット列mに基づいて、所定のハッシュ関数Hにより上記ビット列mをハッシュしたハッシュ値を算出して、共通鍵K(=H(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により上記暗号化メッセージ入力部が入力した暗号化メッセージを復号することを特徴とする。
 この発明にかかる暗号文復号装置は、更に、暗号パラメータ記憶部を有し、
 上記暗号パラメータ記憶部は、上記記憶装置を用いて、加法群Gの位数pと、上記加法群Gの生成元gと、上記位数pを位数とする乗法群Gの元vとを記憶し、
 上記鍵記憶部は、上記記憶装置を用いて、上記位数pを位数とする加法群Gの元dと、上記加法群Gの元dとを記憶し、
 上記暗号文入力部は、上記処理装置を用いて、ビット列cと、上記加法群Gの元cと、上記加法群Gの元cと、1以上p-1以下の整数tとを上記暗号文として入力し、
 上記暗号文検証部は、ペアリング値算出部と、整数算出部とを有し、
 上記ペアリング値算出部は、上記処理装置を用いて、上記暗号文入力部が入力した元cと、上記秘密鍵記憶部が記憶した元dとに基づいて、所定のペアリング関数eにより上記元cと上記元dとのペアリング値を算出して、上記乗法群Gの元k(=e(c,d))とし、上記暗号文入力部が入力した元cと、上記秘密鍵記憶部が記憶した元dとに基づいて、上記ペアリング関数eにより上記元cと上記元dとのペアリング値を算出して、上記乗法群Gの元k(=e(c,d))とし、算出した上記元kと、算出した上記元kとに基づいて、上記元kを上記元kで除算して、上記乗法群Gの元k(=k/k)とし、
 上記整数算出部は、上記処理装置を用いて、上記ペアリング値算出部が算出した元kと、上記暗号文入力部が入力したビット列cと元cと元cとに基づいて、所定のハッシュ関数H”により上記元kと上記ビット列cと上記元cと上記元cとをハッシュしたハッシュ値を算出して、整数H”(k,c,c,c)とし、上記暗号文入力部が入力した整数tと、算出した整数H”(k,c,c,c)と、上記暗号パラメータ記憶部が機記憶した位数pとに基づいて、上記整数tから上記整数H”(k,c,c,c)を減算した整数を位数pで割った余りを算出して、整数s(=t-H”(k,c,c,c)mod p)とし、
 上記検証装置は、上記加法群Gを上記有限群Gとして、上記位数pとして上記暗号パラメータ記憶部が記憶した位数pと、上記整数eとして上記整数算出部が算出した整数sと、上記元sとして上記暗号パラメータ記憶部が記憶した生成元gと、上記元hとして上記暗号文入力部が入力した元cとを入力し、検証成功か否かを判定して、第一の検証結果とし、上記乗法群Gを上記有限群Gとして、上記位数pとして上記暗号パラメータ記憶部が記憶した位数pと、上記整数eとして上記整数算出部が算出した整数sと、上記元sとして上記暗号パラメータ記憶部が記憶した元vと、上記元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とに基づいて、e・e≡e(mod p)を満たす整数eと整数eとを算出し、
 上記処理装置が、上記有限群Gの元sと、上記有限群Gの元hとを入力し、入力した元sと元hと、算出した整数eと整数eとに基づいて、上記有限群Gの元a(=e・h-e・s)を算出し、
 上記処理装置が、算出した元aに基づいて、上記元aが上記有限群Gの単位元である場合に、検証成功と判定することを特徴とする。
 この発明によれば、例えば、整数分割部が算出した整数e及び整数eに基づいて検証値算出部が算出した元aが有限群Gの単位元である場合に、検証判定部が検証成功と判定するので、h=e・sである場合に検証成功と判定することができる。検証値算出部において元aを算出する処理にかかる時間が、e・sを算出するのにかかる時間より短ければ、h=e・sであるか否かを判定する処理にかかる時間を短縮することができるという効果を奏する。
 実施の形態1.
 実施の形態1について、図1~図9を用いて説明する。
 以下の説明において、暗号システムが利用する有限群をGとする。
 また、有限群Gにおける演算は、加法的に記述する。なお、これは、説明の便宜のためであって、群演算を乗法的に記述する群を除外するものではない。
 有限群Gの位数pは、素数であるものとする。したがって、有限群Gは巡回群である。
 図1は、この実施の形態における暗号文復号装置200の機能ブロックの構成の一例を示すブロック構成図である。
 暗号文復号装置200は、暗号文を入力し、入力した暗号文を復号して、復号文を生成する。
 暗号文復号装置200は、鍵記憶部210、暗号文入力部220、暗号文検証部230、検証装置100、復号文生成部260を有する。
 鍵記憶部210は、暗号文を復号する鍵(秘密鍵)を記憶する。
 暗号文入力部220は、暗号文を入力する。
 暗号文検証部230は、鍵記憶部210が記憶した鍵と、暗号文入力部220が入力した暗号文とに基づいて、暗号文入力部220が入力した暗号文を検証するために必要な値を算出する。
 検証装置100は、暗号文検証部230が算出した値に基づいて、暗号文入力部220が入力した暗号文を検証する。
 復号文生成部260は、検証装置100が検証に成功した場合に、暗号文入力部220が入力した暗号文を、鍵記憶部210が記憶した鍵により復号して、復号文を生成する。
 不正者は、暗号文復号装置200に不正な暗号文を入力して、暗号文復号装置200が生成した復号文を解析することにより、正規の暗号文を解読する手がかりを得ようとする場合がある。
 暗号文復号装置200は、暗号文の整合性を検証して検証に成功した場合にのみ、復号文を生成することにより、正規の暗号文を解読する手がかりを不正者に与えるのを防ぐ。
 図2は、この実施の形態における暗号文復号装置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に接続されている。
 図3は、この実施の形態における暗号文復号装置200のハードウェア資源の一例を示す図である。
 暗号文復号装置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などは、出力部、出力装置の一例である。
 通信装置915は、ファクシミリ機932、電話器931、LAN942等に接続されている。通信装置915は、LAN942に限らず、インターネット940、ISDN等のWAN(ワイドエリアネットワーク)などに接続されていても構わない。インターネット940或いはISDN等のWANに接続されている場合、ゲートウェイ941は不用となる。
 磁気ディスク装置920には、オペレーティングシステム921(OS)、ウィンドウシステム922、プログラム群923、ファイル群924が記憶されている。プログラム群923のプログラムは、CPU911、オペレーティングシステム921、ウィンドウシステム922により実行される。
 上記プログラム群923には、以下に述べる実施の形態の説明において「~部」として説明する機能を実行するプログラムが記憶されている。プログラムは、CPU911により読み出され実行される。
 ファイル群924には、以下に述べる実施の形態の説明において、「~の判定結果」、「~の計算結果」、「~の処理結果」として説明する情報やデータや信号値や変数値やパラメータが、「~ファイル」や「~データベース」の各項目として記憶されている。「~ファイル」や「~データベース」は、ディスクやメモリなどの記録媒体に記憶される。ディスクやメモリになどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してCPU911によりメインメモリやキャッシュメモリに読み出され、抽出・検索・参照・比較・演算・計算・処理・出力・印刷・表示などのCPUの動作に用いられる。抽出・検索・参照・比較・演算・計算・処理・出力・印刷・表示のCPUの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリやキャッシュメモリやバッファメモリに一時的に記憶される。
 また、以下に述べる実施の形態の説明において説明するフローチャートの矢印の部分は主としてデータや信号の入出力を示し、データや信号値は、RAM914のメモリ、FDD904のフレキシブルディスク、CDD905のコンパクトディスク、磁気ディスク装置920の磁気ディスク、その他光ディスク、ミニディスク、DVD(Digital・Versatile・Disk)等の記録媒体に記録される。また、データや信号は、バス912や信号線やケーブルその他の伝送媒体によりオンライン伝送される。
 また、以下に述べる実施の形態の説明において「~部」として説明するものは、「~回路」、「~装置」、「~機器」であってもよく、また、「~ステップ」、「~手順」、「~処理」であってもよい。すなわち、「~部」として説明するものは、ROM913に記憶されたファームウェアで実現されていても構わない。或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、DVD等の記録媒体に記憶される。プログラムはCPU911により読み出され、CPU911により実行される。すなわち、プログラムは、以下に述べる「~部」としてコンピュータを機能させるものである。あるいは、以下に述べる「~部」の手順や方法をコンピュータに実行させるものである。
 図4は、この実施の形態における検証装置100の内部ブロックの構成の一例を示すブロック構成図である。
 検証装置100は、有限群Gの元s及び元h、有限群Gの位数p、整数eを入力し、h=e・sであるか否かを判定する。なお、整数eは1以上p-1以下であるものとする。
 検証装置100は、整数分割部110、検証値算出部130、検証判定部150を有する。
 整数分割部110は、CPU911を用いて、有限群Gの位数pと、整数eとを入力して、2つの整数e,eを算出する。
 検証値算出部130は、CPU911を用いて、有限群Gの元s及び元hと、整数分割部110が算出した整数e及び整数eとに基づいて、有限群Gの元aを算出する。
 検証判定部150は、CPU911を用いて、検証値算出部130が算出した元aが有限群Gの単位元であるか否かを判定する。元aが有限群Gの単位元である場合、検証判定部150は、検証成功(すなわち、h=e・sである)と判定する。
 図5は、この実施の形態における検証装置100がh=e・sであるか否かを判定する検証処理の流れの一例を示すフローチャート図である。
 整数分割処理S701において、整数分割部110は、CPU911を用いて、入力した位数pと整数eとに基づいて、2つの整数e,eを算出する。整数分割部110は、e・e≡e(mod p)、|e|<√p、0<|e|<√pという条件を満たす整数e及び整数eを算出する。
 検証値算出処理S702において、検証値算出部130は、CPU911を用いて、入力した元sと元hと、整数分割処理S701で整数分割部110が算出した整数eと整数eとに基づいて、有限群Gの元a=e・h-e・sを算出する。
 検証判定処理S703において、検証判定部150は、CPU911を用いて、検証値算出処理S702で検証値算出部130が算出した元aが、有限群Gの単位元(以下「O」と記述する。)であるか否かを判定する。
 元aが単位元Oであると判定した場合、成功判定処理S704へ進む。
 元aが単位元Oでないと判定した場合、失敗判定処理S705へ進む。
 成功判定処理S704において、検証判定部150は、CPU911を用いて、検証成功と判定し、検証処理を終了する。
 失敗判定処理S705において、検証判定部150は、CPU911を用いて、憲章失敗と判定し、検証処理を終了する。
 図6は、この実施の形態における整数分割部110の内部ブロックの構成の一例を示す詳細ブロック図である。
 整数分割部110は、有限群Gの位数pと、整数eとに基づいて、e・e≡e(mod p)を満たす整数e及び整数eを算出する。すなわち、整数分割部110は、整数eと整数eとの積を位数pで割った余りが、整数eと等しくなるよう、整数e及び整数eを定める。
 なお、検証値算出部130における計算を高速化するため、整数分割部110は、e・e≡e(mod p)を満たす整数e及び整数eのうち、絶対値が位数pの平方根よりも小さい整数eと、位数pの平方根よりも小さい1以上の整数である整数eとを選択する。
 整数分割部110は、位数入力部111、整数入力部112、初期値設定部113、第一剰余記憶部114、第二剰余記憶部115、適合性判定部116、第三剰余算出部117、第一係数記憶部124、第二係数記憶部125、商算出部126、第三係数算出部127、分割整数出力部129を有する。
 位数入力部111は、CPU911を用いて、有限群Gの位数pを表わすデータを入力する。位数入力部111は、RAM914を用いて、入力した位数pを表わすデータを記憶する。
 整数入力部112は、CPU911を用いて、整数eを表わすデータを入力する。整数入力部112は、RAM914を用いて、入力した整数eを表わすデータを記憶する。
 第一剰余記憶部114は、RAM914を用いて、整数vを表わすデータを記憶する。
 第二剰余記憶部115は、RAM914を用いて、整数vを表わすデータを記憶する。
 第一係数記憶部124は、RAM914を用いて、整数tを表わすデータを記憶する。
 第二係数記憶部125は、RAM914を用いて、整数tを表わすデータを記憶する。
 初期値設定部113は、第一剰余記憶部114、第二剰余記憶部115、第一係数記憶部124、第二係数記憶部125に初期値を設定する。
 初期値設定部113は、CPU911を用いて、位数入力部111が記憶した位数pを表わすデータと、整数入力部112が記憶した整数eを表わすデータとを入力する。初期値設定部113は、CPU911を用いて、入力した位数pを表わすデータを、整数vを表わすデータとして第一剰余記憶部114に記憶させる。初期値設定部113は、CPU911を用いて、入力した整数eを表わすデータを、整数vを表わすデータとして第二剰余記憶部115に記憶させる。初期値設定部113は、CPU911を用いて、整数tを表わすデータとして0を表わすデータを第一係数記憶部124に記憶させる。初期値設定部113は、CPU911を用いて、整数tを表わすデータとして1を表わすデータを第二係数記憶部125に記憶させる。
 ここで、v=p、v=e、t=0、t=1だから、k、kを整数とすると、
Figure JPOXMLDOC01-appb-M000001
Figure JPOXMLDOC01-appb-M000002
Figure JPOXMLDOC01-appb-M000003
Figure JPOXMLDOC01-appb-M000004
Figure JPOXMLDOC01-appb-M000005
 適合性判定部116は、CPU911を用いて、位数入力部111が記憶した位数pを表わすデータと、第二剰余記憶部115が整数vを表わすデータを入力する。適合性判定部116は、CPU911を用いて、入力したデータが表わす位数pと整数vとに基づいて、出力条件を満たしたか否かを判定する。具体的には、適合性判定部116は、CPU911を用いて、整数vと位数pの平方根とを比較して、整数vのほうが位数pの平方根よりも小さい場合に、出力条件を満たしたと判定する。
 なお、適合性判定部116は、あらかじめ、CPU911を用いて、位数pの平方根を超えない最大の整数を算出しておいてもよい。
 また、位数pの平方根を算出する代わりに、整数vの2進表記における桁数と、位数pの2進表記における桁数とを比較することにより、出力条件を満たしたか否かを判定してもよい。すなわち、適合性判定部116は、あらかじめ、CPU911を用いて、位数pを表わすデータのビット数を求め、求めたビット数を2で割って(割り切れない場合は切り上げ)、平方根ビット数とする。平方根ビット数は、位数pの平方根を超えない整数の2進表記における桁数を表わす。適合性判定部116は、RAM914を用いて、算出した平方根ビット数を記憶しておき、CPU911を用いて、整数vを表わすデータのビット数を算出する。適合性判定部116は、CPU911を用いて、算出したビット数と、記憶した平方根ビット数とを比較し、整数vを表わすデータのビット数が、平方根ビット数以下である場合に、整数vのほうが位数pの平方根よりも小さいものとみなし、出力条件を満たしたと判定する。
 適合性判定部116が出力条件を満たしていないと判定した場合、第三剰余算出部117は、CPU911を用いて、第一剰余記憶部114が記憶した整数vを表わすデータと、第二剰余記憶部115が記憶した整数vを表わすデータとを入力する。第三剰余算出部117は、入力したデータが表わす整数vと整数vとに基づいて、整数vを整数vで割った余りを算出し、整数vとする。
 また、適合性判定部116が出力条件を満たしていないと判定した場合、商算出部126は、CPU911を用いて、第一剰余記憶部114が記憶した整数vを表わすデータと、第二剰余記憶部115が記憶した整数vを表わすデータとを入力する。商算出部126は、入力したデータが表わす整数vと整数vとに基づいて、整数vを整数vで割った商を超えない最大の整数を算出し、整数qとする。商算出部126は、RAM914を用いて、算出した整数qを表わすデータを記憶する。
 第三係数算出部127は、CPU911を用いて、第一係数記憶部124が記憶した整数tを表わすデータと、第二係数記憶部125が記憶した整数tを表わすデータと、商算出部126が算出した整数qを表わすデータとを入力する。第三係数算出部127は、CPU911を用いて、入力したデータが表わす整数tと整数tと整数qとに基づいて、整数tから、整数qと整数tとの積を減算した整数t(=t-q・t)を算出する。
 ここで、kを整数とすると、
Figure JPOXMLDOC01-appb-M000006
 また、整数vは、整数vを整数vで割った余りだから、
Figure JPOXMLDOC01-appb-M000007
 また、v>v>0であれば、q≧1なので、t≦0、t>0ならば、
Figure JPOXMLDOC01-appb-M000008
 t>0、t<0ならば、
Figure JPOXMLDOC01-appb-M000009
 したがって、いずれの場合も、
Figure JPOXMLDOC01-appb-M000010
 よって、
Figure JPOXMLDOC01-appb-M000011
 第三剰余算出部117は、CPU911を用いて、入力した整数vを表わすデータを、整数vを表わすデータとして第一剰余記憶部114に記憶させる。第三剰余算出部117は、CPU911を用いて、算出した整数vに基づいて、整数vを表わすデータを、整数vを表わすデータとして第二剰余記憶部115に記憶させる。
 第三係数算出部127は、CPU911を用いて、入力した整数tを表わすデータを、整数tを表わすデータとして第一係数記憶部124に記憶させる。第三係数算出部127は、CPU911を用いて、算出した整数tに基づいて、整数tを表わすデータを、整数tを表わすデータとして第二係数記憶部125に記憶させる。
 数6~数11より、第一剰余記憶部114、第二剰余記憶部115、第一係数記憶部124、第二係数記憶部125が新たに記憶したデータが表わす整数v、整数v、整数t、整数tの間にも、数1~数5が成り立つ。
 適合性判定部116が出力条件を満たしたと判定した場合、分割整数出力部129は、CPU911を用いて、第二剰余記憶部115が記憶した整数vを表わすデータと、第二係数記憶部125が記憶した整数tを表わすデータとを入力する。分割整数出力部129は、CPU911を用いて、入力した整数tを表わすデータを、整数eを表わすデータとして出力する。また、分割整数出力部129は、CPU911を用いて、入力した整数vを表わすデータを、整数eを表わすデータとして出力する。
 第三剰余算出部117及び第三係数算出部127がこの計算を繰り返すと、vはやがて位数pと整数eとの最大公約数になる。位数pは素数なので、位数pと整数eとの最大公約数は1である。したがって、必ず0<v<√pとなり、分割整数出力部129が整数e及び整数eを表わすデータを出力する。
 図7は、この実施の形態における整数分割部110が整数eを分割する整数分割処理の流れの一例を示すフローチャート図である。
 初期値設定工程S711において、初期値設定部113は、CPU911を用いて、第一剰余記憶部114、第二剰余記憶部115、第一係数記憶部124、第二係数記憶部125に初期値を設定する。第一剰余記憶部114は、RAM914を用いて、位数入力部111が入力した位数pを整数vとして記憶する。第二剰余記憶部115は、RAM914を用いて、整数入力部112が入力した整数eを整数vとして記憶する。第一係数記憶部124は、RAM914を用いて、整数tとして0を記憶する。第二係数記憶部125は、RAM914を用いて、整数tとして1を記憶する。
 適合性判定工程S712において、適合性判定部116は、CPU911を用いて、第二剰余記憶部115が記憶した整数vが、位数入力部111が入力した位数pの平方根より小さいか否かを判定する。
 整数vが位数pの平方根より小さいと判定した場合、分割整数出力工程S718へ進む。
 整数vが位数pの平方根より大きいと判定した場合、剰余算出工程S713へ進む。
 剰余算出工程S713において、第三剰余算出部117は、CPU911を用いて、第一剰余記憶部114が記憶した整数vを、第二剰余記憶部115が記憶した整数vで割った余りを算出し、整数vとする。
 商算出工程S714において、商算出部126は、CPU911を用いて、第一剰余記憶部114が記憶した整数vを、第二剰余記憶部115が記憶した整数vで割った商を超えない最大の整数を算出し、整数qとする。
 係数算出工程S715において、第三係数算出部127は、CPU911を用いて、第一係数記憶部124が記憶した整数tから、第二係数記憶部125が記憶した整数tと商算出工程S714で商算出部126が算出した整数qとの積を減算した整数を算出して、整数tとする。
 剰余更新工程S716において、第三剰余算出部117は、CPU911を用いて、第一剰余記憶部114、第二剰余記憶部115を更新する。第一剰余記憶部114は、RAM914を用いて、第二剰余記憶部115が記憶した整数vを、整数vとして記憶する。第二剰余記憶部115は、RAM914を用いて、剰余算出工程S713で第三剰余算出部117が算出した整数vを、整数vとして記憶する。
 係数更新工程S717において、第三係数算出部127は、CPU911を用いて、第一係数記憶部124、第二係数記憶部125を更新する。第一係数記憶部124は、RAM914を用いて、第二係数記憶部125が記憶した整数tを、整数tとして記憶する。第二係数記憶部125は、RAM914を用いて、係数算出工程S715で第三係数算出部127が算出した整数tを、整数tとして記憶する。
 その後、適合性判定工程S712に戻る。
 分割整数出力工程S718において、分割整数出力部129は、CPU911を用いて、第二係数記憶部125が記憶した整数tを、整数eとして出力する。分割整数出力部129は、CPU911を用いて、第二剰余記憶部115が記憶した整数vを、整数eとして出力する。
 その後、整数分割処理を終了する。
 分割整数出力部129が出力する整数e及び整数eは、数2より、
Figure JPOXMLDOC01-appb-M000012
 また、適合性判定工程S712で出力条件を満たすと判定されたので、
Figure JPOXMLDOC01-appb-M000013
 適合性判定工程S712を2回以上実行した場合、前回の適合性判定工程S712では出力条件を満たさないと判定されたので、
Figure JPOXMLDOC01-appb-M000014
 このとき、数5より、
Figure JPOXMLDOC01-appb-M000015
 なお、適合性判定工程S712を1回しか実行しなかった場合も、e=1なので、数15は満たされている。
 以上のように、整数分割部110は、拡張ユークリッド互除法を利用して、e・e≡e(mod p)、|e|<√p、0<e<√pを満たす整数e及び整数eを算出する。
 図8は、この実施の形態における検証値算出部130の内部ブロックの構成の一例を示す詳細ブロック図である。
 検証値算出部130は、有限群Gの元s及び元hと、整数分割部110が算出した整数e及び整数eとに基づいて、有限群Gの元a(=e・h-e・s)を算出する。
 検証値算出部130は、分割整数入力部131、元入力部132、索引算出部133、テーブル生成部134、テーブル記憶部135、検証初期値設定部141、倍算結果記憶部142、二基底加算部143、加算結果記憶部144、倍算部145、検証値出力部149を有する。
 分割整数入力部131は、CPU911を用いて、整数分割部110が出力した整数e及び整数eを表わすデータを入力する。分割整数入力部131は、RAM914を用いて、入力した整数e及び整数eを表わすデータを記憶する。
 元入力部132は、CPU911を用いて、有限群Gの元s及び元hを表わすデータを入力する。元入力部132は、RAM914を用いて、入力した元s及び元hを表わすデータを記憶する。
 索引算出部133は、CPU911を用いて、分割整数入力部131が記憶した整数e及び整数eを表わすデータを入力する。索引算出部133は、CPU911を用いて、整数eが正の整数であるか負の整数であるかを判定する。索引算出部133は、RAM914を用いて、判定結果を表わすデータを記憶する。索引算出部133は、CPU911を用いて、整数eが負の整数であると判定した場合、整数eの符号を反転して、正の整数にする。
 索引算出部133は、CPU911を用いて、算出した整数eの絶対値に基づいて、整数eの絶対値をn進法で表わした各桁である整数の組(e1,i)(ただし、iは0以上k-1以下の整数。nはあらかじめ定めた2以上の整数。)を算出する。すなわち、索引算出部133は、CPU911を用いて、以下の条件を満たす整数の組(e1,i)を算出する。
Figure JPOXMLDOC01-appb-M000016
 同様に、索引算出部133は、CPU911を用いて、整数eに基づいて、整数eをn進法で表わした各桁である整数の組(e2,i)を算出する。すなわち、
Figure JPOXMLDOC01-appb-M000017
 例えば、n=2の場合、索引算出部133は、CPU911を用いて、整数eの絶対値及び整数eをそれぞれ表わすデータを1ビットごとに分解して、(e1,i)、(e2,i)とする。n=4の場合、索引算出部133は、整数eの絶対値及び整数eをそれぞれ表わすデータを2ビットごとに分解して、(e1,i)、(e2,i)とする。
 なお、kは、i≧kであるすべてのiについて、e1,i=0、e2,i=0である最小の整数である。
 例えば、n=2、e=23、e=34であれば、e=(10111)、e=(100010)であるから、k=6である。
 索引算出部133は、RAM914を用いて、算出した整数の組(e1,i)及び(e2,i)を表わすデータを記憶する。
 テーブル生成部134は、CPU911を用いて、元入力部132が記憶した元s及び元hを表わすデータと、索引算出部133が判定した整数eが正であるか負であるかの判定結果を表わすデータとを入力する。
 テーブル生成部134は、CPU911を用いて、入力したデータが表わす元sと元hと判定結果とに基づいて、n×n個の有限群Gの元px,y(=e1,sgn・x・h-y・s。ただし、x及びyは0以上n-1以下の整数。e1,sgnは、整数eが正の場合、1。整数eが負の場合、-1。)を算出する。
 例えば、n=2の場合、テーブル生成部134は、4つの元p0,0、p1,0、p0,1、p1,1を算出する。なお、元p0,0は常に単位元であるから、テーブル生成部134は、他の3つの元だけを算出してもよい。
 テーブル記憶部135は、RAM914を用いて、テーブル生成部134が算出したn×n個の元px,yを表わすデータを記憶する。
 倍算結果記憶部142は、RAM914を用いて、有限群Gの元aを算出する途中の値である有限群Gの元a’を表わすデータを記憶する。
 加算結果記憶部144は、RAM914を用いて、有限群Gの元aを算出する途中の値である有限群Gの元a”を表わすデータを記憶する。
 検証初期値設定部141は、CPU911を用いて、有限群Gの単位元を表わすデータを、元a’を表わすデータとして倍算結果記憶部142に記憶させる。
 二基底加算部143は、CPU911を用いて、索引算出部133が記憶した整数の組(e1,i)及び(e2,i)を表わすデータを、iが大きいほうから1つずつ順に入力する。
 二基底加算部143は、CPU911を用いて、入力したデータが表わす整数e1,i及び整数e2,iに基づいて、テーブル記憶部135が記憶した有限群Gの元px,yを表わすデータのなかから、x=e1,i、y=e2,iである元px,yを表わすデータを元Pを表わすデータとして取得する。
 二基底加算部143は、CPU911を用いて、倍算結果記憶部142が記憶した有限群Gの元a’を表わすデータを入力する。
 二基底加算部143は、CPU911を用いて、入力したデータが表わす有限群Gの元a’と、元Pとに基づいて、元a’と元Pとを加算した元a’+Pを算出する。
 二基底加算部143は、CPU911を用いて、算出した元a’+Pを表わすデータを、元a”を表わすデータとして加算結果記憶部144に記憶させる。
 倍算部145は、CPU911を用いて、加算結果記憶部144が記憶した有限群Gの元a”を表わすデータを入力する。倍算部145は、CPU911を用いて、入力したデータが表わす元a”に基づいて、元a”をn回加算した元n・a”を算出する。例えば、n=2の場合、倍算部145は、元a”と元a”とを加算して、元2・a”を算出する。n=4の場合であれば、倍算部145は、元a”と元a”とを加算して元2・a”を算出し、更に、算出した元2・a”と元2・a”とを加算して元4・a”を算出する。
 倍算部145は、CPU911を用いて、算出した元n・a”を表わすデータを、元a’を表わすデータとして倍算結果記憶部142に記憶させる。
 以上を繰り返し、索引算出部133が記憶した整数e1,i及び整数e2,iを二基底加算部143がすべて入力した場合、検証値出力部149は、CPU911を用いて、加算結果記憶部144が記憶した有限群Gの元a”を表わすデータを入力する。検証値出力部149は、CPU911を用いて、入力した元a”を表わすデータを、元aを表わすデータとして出力する。
 図9は、この実施の形態における検証値算出部130が有限群Gの元aを算出する検証値算出処理の流れの一例を示すフローチャート図である。
 索引算出工程S721において、索引算出部133は、CPU911を用いて、分割整数入力部131が入力した整数eに基づいて、整数e1,sgnを算出する。索引算出部133は、CPU911を用いて、整数eが正なら、整数e1,sgnを1にし、整数eが負なら、整数e1,sgnを-1にする。
 索引算出部133は、CPU911を用いて、分割整数入力部131が入力した整数eに基づいて、k個の整数e1,i(ただし、iは0以上k-1以下の整数。)を算出する。例えば、索引算出部133は、CPU911を用いて、整数eの絶対値をnのi乗で割った商を超えない最大の整数をnで割った余りを算出して、e1,iとする。
 同様に、索引算出部133は、CPU911を用いて分割整数入力部131が入力した整数eに基づいて、k個の整数e2,i(ただし、iは0以上k-1以下の整数。)を算出する。例えば、索引算出部133は、CPU911を用いて、整数eをnのi乗で割った商を超えない最大の整数をnで割った余りを算出して、e2,iとする。
 テーブル生成工程S722において、テーブル生成部134は、CPU911を用いて、元入力部132が入力した元sと元hと、索引算出工程S721で索引算出部133が算出した整数e1,sgnとに基づいて、n個の有限群Gの元px,y(ただし、x及びyは0以上n-1以下の整数。)を算出する。テーブル生成部134は、CPU911を用いて、元hをe1,sgn・x回加算した元から、元sをy回加算した元を減算した元を算出して、元px,yとする。
 テーブル記憶部135は、RAM914を用いて、テーブル生成部134が算出したn個の元px,yを記憶する。
 検証初期値設定工程S723において、検証初期値設定部141は、CPU911を用いて、倍算結果記憶部142を初期化する。倍算結果記憶部142は、RAM914を用いて、有限群Gの単位元を元a’として記憶する。
 繰り返し初期値設定工程S724において、二基底加算部143は、RAM914を用いて、整数kから1を減算した整数を、整数jとして記憶する。
 二基底加算工程S725において、二基底加算部143は、CPU911を用いて、記憶した整数jに基づいて、索引算出工程S721で索引算出部133が算出したk個の整数e1,i及び整数e2,iのなかから、i=jである整数e1,jと整数e2,jとを取得する。
 二基底加算部143は、CPU911を用いて、取得した整数e1,iと整数e2,iとに基づいて、テーブル記憶部135が記憶したn個の有限群Gの元px,yのなかから、x=e1,j、y=e2,jである元px,yを取得して、元Pとする。
 二基底加算部143は、CPU911を用いて、倍算結果記憶部142が記憶した有限群Gの元a’と、取得した元Pとに基づいて、有限群Gにおける演算により、元a’と元Pとを加算した元a’+Pを算出する。
 加算結果記憶部144は、RAM914を用いて、二基底加算部143が算出した元a’+Pを、元a”として記憶する。
 繰り返し更新工程S726において、二基底加算部143は、CPU911を用いて、記憶した整数jから1を減算した整数j-1を算出する。二基底加算部143は、RAM914を用いて算出した整数j-1を、整数jとして記憶する。
 算出した整数jが正または0である場合、倍算工程S727へ進む。
 算出した整数jが負になった場合、検証値出力工程S728へ進む。
 倍算工程S727において、倍算部145は、CPU911を用いて、加算結果記憶部144が記憶した有限群Gの元a”に基づいて、有限群Gにおける演算により、元a”をn回加算した元n・a”を算出する。
 倍算結果記憶部142は、RAM914を用いて、倍算部145が算出した元n・a”を、元a’として記憶する。
 その後、二基底加算工程S725に戻る。
 検証値出力工程S728において、検証値出力部149は、CPU911を用いて、加算結果記憶部144が記憶した有限群Gの元a”を、元aとして出力する。
 その後、検証値算出処理を終了する。
 以上のように、検証値算出部130は、加法群における二基底スカラー倍算(あるいは、乗法群における二基底べき乗算)を利用して、元aを算出する。
 以上の処理において、j=iのときに二基底加算工程S725で加算結果記憶部144が記憶する元a”をaを書くと、
Figure JPOXMLDOC01-appb-M000018
 ここで、有限群Gの元Pは、
Figure JPOXMLDOC01-appb-M000019
 したがって、
Figure JPOXMLDOC01-appb-M000020
 ここで、e・e≡e(mod p)なので、
Figure JPOXMLDOC01-appb-M000021
 h=e・sであれば、元aは、有限群Gの単位元となる。また、h≠e・sであれば、有限群Gの位数pが素数なので、e=0でない限り、元aは、有限群Gの単位元とはならない。したがって、検証値算出部130が算出した元aが単位元であるか否かを判定することにより、h=e・sであるか否かを判定できる。
 次に、検証値算出部130が有限群Gの元aを算出する計算にかかる時間について説明する。
 なお、以下の説明において、有限群Gの群演算を1回するのにかかる時間をTとする。また、それ以外の計算やデータの取得などにかかる時間は、Tよりもはるかに短いので、無視する。
 テーブル生成工程S722において、テーブル生成部134は、元p0,y(y≠0,1)を算出するために群演算をn-2回、元px,0(x≠0,1)を算出するために群演算をn-2回、元px,y(x≠0、y≠0)を算出するために群演算を(n-1)回するので、テーブル生成工程S722にかかる時間は、(n-3)Tである。
 二基底可算工程S725において、二基底加算部143は、元a”を算出するために群演算を1回する。二基底可算工程S725はk回繰り返されるので、二基底可算工程S725にかかる時間は、全部でkTである。
 nが2のべき乗である場合、倍算工程S727において、倍算部145は、元a’を算出するために群演算をlogn回する。倍算工程S727はk-1回繰り返されるので、倍算工程S727にかかる時間は、全部でlogn(k-1)Tである。
 したがって、検証値算出処理全体にかかる時間は、[n-3+k+logn(k-1)]Tである。例えば、n=2の場合は2kT、n=4の場合は(3k+12)Tである。
 比較のため、整数eを分割せず、e・sを算出する場合にかかる時間について述べる。
 整数eをn進法で表わした場合の桁数をk’とする。
 算出手順は、検証値算出処理と同様とする。ただし、基底となる元が一つなので、あらかじめ算出しておくテーブルには、n個の元x・s(xは0以上n-1以下の整数。)を記憶する。
 テーブルの生成にかかる時間は、(n-2)Tである。
 加算にかかる時間は、全部でk’Tである。
 倍算にかかる時間は、全部でlogn(k’-1)Tである。
 したがって、e・sの算出全体にかかる時間は、[n-2+k’+logn(k’-1)]Tである。例えば、n=2の場合は(2k’-1)T、n=4の場合は3k’Tである。
 ここで、eは1以上p-1以下の整数なので、k’は、pをn進法で表わした場合の桁数と、確率的にほぼ等しい。
 これに対して、eの絶対値及びeは1以上√p未満の整数なので、kは、√pをn進法で表わした場合の桁数と、確率的にほぼ等しく、k’の約半分である。
 そこで、k=k’/2と仮定すると、検証値算出処理全体にかかる時間は、n=2の場合はk’T、n=4の場合は(1.5k’+12)Tとなる。有限群Gの位数pが十分大きいとすると、検証値算出処理全体にかかる時間は、e・sを算出する処理にかかる時間の約半分である。
 したがって、h=e・sであるか否かを判定するのにかかる時間が、約半分になる。
 この実施の形態における検証装置100は、データを処理する処理装置(CPU911)と、整数分割部110と、検証値算出部130と、検証判定部150とを有する。
 上記整数分割部110は、上記処理装置(CPU911)を用いて、有限群Gの位数pと、整数eとを入力し、入力した位数pと整数eとに基づいて、e・e≡e(mod p)を満たす整数eと整数eとを算出する。
 上記検証値算出部130は、上記処理装置(CPU911)を用いて、上記有限群Gの元sと、上記有限群Gの元hとを入力し、入力した元sと元hと、上記整数分割部110が算出した整数eと整数eとに基づいて、上記有限群Gの元a(=e・h-e・s)を算出する。
 上記検証判定部150は、上記処理装置(CPU911)を用いて、上記検証値算出部130が算出した元aに基づいて、上記元aが上記有限群Gの単位元である場合に、検証成功と判定する。
 この実施の形態における検証装置100によれば、整数分割部110が算出した整数e及び整数eに基づいて検証値算出部130が算出した元aが有限群Gの単位元である場合に、検証判定部150が検証成功と判定するので、h=e・sである場合に検証成功と判定することができる。検証値算出部130において元aを算出する処理にかかる時間が、e・sを算出するのにかかる時間より短ければ、h=e・sであるか否かを判定する処理にかかる時間を短縮することができるという効果を奏する。
 この実施の形態における整数分割部110は、上記処理装置(CPU911)を用いて、上記整数eの絶対値が上記位数pの平方根よりも小さく、かつ、上記整数eが上記位数pの平方根よりも小さいという条件を満たす整数eと整数eとを算出する。
 この実施の形態における検証装置100によれば、整数eの絶対値が位数pの平方根よりも小さく、かつ、整数eが位数pの平方根よりも小さいという条件を満たす整数eと整数eと整数分割部110が算出するので、検証値算出部130において元aを算出する処理にかかる時間を短くすることができるという効果を奏する。
 この実施の形態における検証装置100は、更に、データを記憶する記憶装置(RAM914、磁気ディスク装置920など)を有する。
 上記整数分割部110は、第一剰余記憶部114と、第二剰余記憶部115と、初期値設定部113と、適合性判定部116と、第三剰余算出部117と、分割整数出力部129とを有する。
 上記第一剰余記憶部114は、上記記憶装置(RAM914)を用いて、整数vを記憶する。
 上記第二剰余記憶部115は、上記記憶装置(RAM914)を用いて、整数vを記憶する。
 上記初期値設定部113は、上記処理装置(CPU911)を用いて、上記位数pを上記整数vとして上記第一剰余記憶部114に記憶させ、上記整数eを上記整数vとして上記第二剰余記憶部115に記憶させる。
 上記適合性判定部116は、上記処理装置(CPU911)を用いて、上記第二剰余記憶部115が記憶した整数vが上記位数pの平方根よりも小さい場合に、出力条件を満たしたと判定する。
 上記第三剰余算出部117は、上記処理装置(CPU911)を用いて、上記適合性判定部116が出力条件を満たしたと判定しない場合に、上記第一剰余記憶部114が記憶した整数vと、上記第二剰余記憶部115が記憶した整数vとに基づいて、上記整数vを上記整数vで割った余りを算出して、整数vとし、上記第二剰余記憶部115が記憶した整数vを上記整数vとして上記第一剰余記憶部114に記憶させ、算出した整数vを上記整数vとして上記第二剰余記憶部115に記憶させる。
 上記分割整数出力部129は、上記処理装置(CPU911)を用いて、上記適合性判定部116が出力条件を満たしたと判定した場合に、上記第二剰余記憶部115が記憶した整数vを上記整数eとして出力する。
 この実施の形態における検証装置100によれば、e・e≡e(mod p)、|e|<√p、0<e<√pという条件を満たす整数eを、短い時間で算出することができるという効果を奏する。
 この実施の形態における整数分割部110は、更に、第一係数記憶部124と、第二係数記憶部125と、商算出部126と、第三係数算出部127とを有する。
 上記第一係数記憶部124は、上記記憶装置(RAM914)を用いて、整数tを記憶する。
 上記第二係数記憶部125は、上記記憶装置(RAM914)を用いて、整数tを記憶する。
 上記初期値設定部113は、更に、上記処理装置(CPU911)を用いて、上記整数tとして0を上記第一係数記憶部124に記憶させ、上記整数tとして1を上記第二係数記憶部125に記憶させる。
 上記商算出部126は、上記処理装置(CPU911)を用いて、上記第一剰余記憶部114が記憶した整数vと、上記第二剰余記憶部115が記憶した整数vとに基づいて、上記整数vを上記整数vで割った商を超えない最大の整数を算出して、整数qとする。
 上記第三係数算出部127は、上記処理装置(CPU911)を用いて、上記適合性判定部116が出力条件を満たしたと判定しない場合に、上記第一係数記憶部124が記憶した整数tと、上記第二係数記憶部125が記憶した整数tと、上記商算出部126が算出した整数qとに基づいて、上記整数tと上記整数qとの積を、上記整数tから減算した整数を算出して、整数tとし、上記第二係数記憶部125が記憶した整数tを上記整数tとして上記第一係数記憶部124に記憶させ、算出した整数tを上記整数tとして上記第二係数記憶部125に記憶させる。
 上記分割整数出力部129は、更に、上記処理装置(CPU911)を用いて、上記適合性判定部116が出力条件を満たしたと判定した場合に、上記第二係数記憶部125が記憶した整数tを上記整数eとして出力する。
 この実施の形態における検証装置100によれば、e・e≡e(mod p)、|e|<√p、0<e<√pという条件を満たす整数eを、短い時間で算出することができるという効果を奏する。
 この実施の形態における検証値算出部130は、上記処理装置(CPU911)を用いて、Σ(n・P)(ただし、nは2以上の所定の整数。iは0以上k以下の整数。kは上記整数eの絶対値及び上記整数eをn進法で表記した場合の桁数の最大値。Pは、上記有限群Gの元で、P=e1,sgn・e1,i・h-e2,i・s。e1,sgnは1または-1。e1,i及びe2,iは0以上n-1以下の整数で、e=e1,sgn・Σ(n・e1,i)、e=Σ(n・e2,i)。)を算出して、上記有限群Gの元aとする。
 この実施の形態における検証装置100によれば、検証値算出部130が元aを算出するのにかかる時間が、整数eの絶対値及び整数eをn進法で表記した場合の桁数kに比例するので、元aを算出するのにかかる時間を短縮することができるという効果を奏する。
 この実施の形態における暗号文復号装置200は、データを記憶する記憶装置(RAM914や磁気ディスク装置920など)と、データを処理する処理装置(CPU911など)と、鍵記憶部210と、暗号文入力部220と、暗号文検証部230と、検証装置100と、復号文生成部260とを有する。
 上記鍵記憶部210は、上記記憶装置を用いて、暗号文を復号する鍵を記憶する。
 上記暗号文入力部220は、上記処理装置を用いて、暗号文を入力する。
 上記暗号文検証部230は、上記処理装置を用いて、上記鍵記憶部210が記憶した鍵と、上記暗号文入力部220が入力した暗号文とに基づいて、上記検証装置100に入力する整数eと、上記有限群Gの元sと、上記有限群Gの元hとを算出する。
 上記検証装置100は、上記暗号文検証部230が算出した整数eと、上記有限群Gの元sと、上記有限群Gの元hとを入力して、検証成功か否かを判定する。
 上記復号文生成部260は、上記処理装置を用いて、上記検証装置100が検証成功と判定した場合に、上記暗号文入力部220が入力した暗号文を上記鍵記憶部210が記憶した鍵により復号して、復号文を生成する。
 この実施の形態における暗号文復号装置200によれば、入力した暗号文の整合性を検証し、検証に成功した場合に復号文を生成するので、不正者に暗号文を解読する手がかりを与えるのを防ぐことができる。また、検証装置100がh=e・sであるか否かを判定することにより暗号文の整合性を検証するので、検証にかかる時間を短縮することができるという効果を奏する。
 この実施の形態における検証装置100は、コンピュータを検証装置100として機能させるコンピュータプログラムを、コンピュータが実行することにより、実現することができる。
 この実施の形態におけるコンピュータプログラムによれば、整数分割部110が算出した整数e及び整数eに基づいて検証値算出部130が算出した元aが有限群Gの単位元である場合に、検証判定部150が検証成功と判定するので、h=e・sである場合に検証成功と判定でき、検証値算出部130において元aを算出する処理にかかる時間が、e・sを算出するのにかかる時間より短ければ、h=e・sであるか否かを判定する処理にかかる時間を短縮できる検証装置100を実現することができるという効果を奏する。
 この実施の形態における検証装置100が、整合性を検証する検証方法は、以下の工程を有する。
 上記処理装置(CPU911)が、有限群Gの位数pと、整数eとを入力し、入力した位数pと整数eとに基づいて、e・e≡e(mod p)を満たす整数eと整数eとを算出する。
 上記処理装置(CPU911)が、上記有限群Gの元sと、上記有限群Gの元hとを入力し、入力した元sと元hと、算出した整数eと整数eとに基づいて、上記有限群Gの元a(=e・h-e・s)を算出する。
 上記処理装置(CPU911)が、算出した元aに基づいて、上記元aが上記有限群Gの単位元である場合に、検証成功と判定する。
 この実施の形態における検証方法によれば、処理装置(CPU911)が、算出した整数e及び整数eに基づいて算出した元aが有限群Gの単位元である場合に、検証成功と判定するので、h=e・sである場合に検証成功と判定でき、元aを算出する処理にかかる時間が、e・sを算出するのにかかる時間より短ければ、h=e・sであるか否かを判定する処理にかかる時間を短縮できるという効果を奏する。
 以上説明した暗号文復号装置200は、公開鍵暗号復号装置である。暗号文復号装置200は、整数の剰余類がなす群などの乗法群における指数べき乗算、または、(超)楕円曲線上の点がなす群などの加法群におけるスカラー倍算により、乗法群の元sをe回乗算した元sまたは加法群の元sをe回加算した元e・sが、既知の元hと一致するかどうか検証することにより、暗号文が正しいか否かを判定する暗号文正当性検証装置(検証装置100)を有する。
 暗号文正当性検証装置(検証装置100)は、
 指数部(整数e)を分割する装置(整数分割部110)と、
 分割された指数(整数e及び整数e)を用いて、乗法群における二基底指数べき乗算、または(超)楕円曲線上の点がなす群などの加法群における二基底スカラー倍算をした値(he1-se2またはe・h-e・s)を計算する装置(検証値算出部130)と、
 その値が乗法群の単位元1または加法群の単位元0に等しいかどうか判定する装置(検証判定部150)とを有する。
 以上説明した整数分割部110は、指数(整数)eと、暗号で使用する乗法群または加法群の群位数pとを入力して、群位数pのビット長の半分のビット長を有する二つの整数e,e(ただし、e・e ≡ e (mod p))を計算する計算装置である。
 検証装置100は、se2・h-e1=1(乗法的記述)またはe・s-e・h=0(加法的記述)を検証する。
 以上説明した整数分割部110は、拡張ユークリッド互除法を計算することにより、指数部を分割する。
 以上説明した整数分割部110は、二つの整数の繰り返し除算において、
 除算をする整数v、及び除算される整数vが、それぞれ、前ステップの除算の剰余v、及び前ステップの除算をする整数vである計算装置(第三剰余算出部117)と、
 各ステップの除算結果の剰余vがある一定の数(√p)以上、又はある一定の数(√p)以下であることを判定する計算装置(適合性判定部116)とを有する。
 整数分割部110は、上記説明した手順のほか、例えば、以下の手順により、整数e及びeを算出してもよい。
 最初に、整数分割部110は、CPU911を用いて、正の整数p、1<e<pである整数e、pの平方根√pを入力する。
 次に、整数分割部110は、RAM914を用いて、u←1,v←p,u←0,v←eを初期値として記憶する。
 次に、整数分割部110は、CPU911を用いて、v<√pかどうかをチェックする。
 v>√pならば、整数分割部110は、CPU911を用いて、q←v/v(端数切捨て)、v←v mod v、u←u-q・uを計算し、RAM914を用いて、v←v、v←v、u←u、u←uとして記憶する。その後、v<√pかどうかのチェックに戻り、v>√pなら、同じ計算を繰り返す。
 v<√pになったら、整数分割部110は、CPU911を用いて、e←(v-u・p)/vを計算し、e←vとする。
 最後に、整数分割部110は、CPU911を用いて、e,eを出力する。
 このような手順でも、e・e≡e(mod p)となり、e,eのビット長はpのビット長の約半分となる。
 実施の形態2.
 実施の形態2について、図10~図15を用いて説明する。
 図10は、この実施の形態におけるIDベース公開鍵暗号システム820Aの全体構成の一例を示すシステム構成図である。
 IDベース公開鍵暗号システム820Aは、暗号文復号装置200Aを識別するメールアドレスなどの識別データを、暗号文復号装置200Aの公開鍵として利用する暗号通信システムである。暗号文復号装置200Aと公開鍵との対応関係を証明する必要がないので、公開鍵証明書や認証局などが必要ない。
 IDベース公開鍵暗号システム820Aは、暗号パラメータ設定装置810A、鍵生成装置300A、暗号文生成装置400A、暗号文復号装置200Aを有する。
 暗号パラメータ設定装置810Aは、IDベース公開鍵暗号システム820Aで利用される暗号パラメータを定める。暗号パラメータ設定装置810Aが定めた暗号パラメータは、IDベース公開鍵暗号システム820Aの利用者に公開される。暗号パラメータ設定装置810Aが定める暗号パラメータには、例えば、位数p、加法群G、加法群Gの元g、加法群G、加法群Gの元g、乗法群G、ペアリングe、ハッシュ関数H、ハッシュ関数H、ハッシュ関数H、ハッシュ関数Hなどがある。
 位数pは、素数である。
 加法群Gの位数は、pである。元gは、加法群Gの生成元である。
 加法群Gの位数は、加法群Gと同じpである。元gは、加法群Gの生成元である。
 乗法群Gの位数は、加法群G及び加法群Gと同じpである。
 ペアリングeは、加法群Gの元と加法群Gの元との組を、乗法群Gの元(ペアリング値)へ写す写像である。ペアリングeは、双線形を有する。すなわち、すべてのu、v、a、bについて、e(a・u,b・v)=e(u,v)ab(ただし、uは加法群Gの元。vは加法群Gの元。a及びbは整数。)である。また、加法群Gの元gと加法群Gの元gとのペアリング値e(g,g)は、乗法群Gの単位元ではない。
 ハッシュ関数Hは、任意の長さのビット列から、1以上p-1以下の整数を生成するハッシュ関数である。
 ハッシュ関数Hは、乗法群Gの元から、所定の長さのビット列を生成するハッシュ関数である。
 ハッシュ関数Hは、所定の長さのビット列から、1以上p-1以下の整数を生成するハッシュ関数である。
 ハッシュ関数Hは、所定の長さのビット列から、所定の長さのビット列を生成するハッシュ関数である。
 なお、これらの暗号パラメータがあらかじめ定められている場合には、暗号パラメータ設定装置810Aは、これらの暗号パラメータを定めなくてもよい。
 また、暗号パラメータ設定装置810Aは、秘密乱数sと、秘密乱数sに基づいて生成した公開元Rとを生成する。暗号パラメータ設定装置810Aが生成した秘密乱数sは、鍵生成装置300Aに対して秘密裡に通知される。また、暗号パラメータ設定装置810Aが生成した公開元Rは、IDベース公開鍵暗号システム820Aの利用者に公開される。公開元Rには、秘密乱数sに関する情報が含まれているが、公開元Rから秘密乱数sを求めることが事実上不可能であるようになっている。このため、IDベース公開鍵暗号システム820Aの利用者は、公開元Rを用いて演算することにより、秘密情報を知ることなく、秘密情報を利用することができる。
 鍵生成装置300Aは、暗号パラメータ設定装置810Aから通知された秘密乱数sを秘密裡に保持する。鍵生成装置300Aは、公開された暗号パラメータと、公開された暗号文復号装置200Aの識別データIDと、保持した秘密乱数sとに基づいて、暗号文復号装置200Aの秘密鍵DIDを生成する。鍵生成装置300Aが生成した秘密鍵DIDは、暗号文復号装置200Aに対して秘密裡に通知される。
 暗号文生成装置400Aは、公開された暗号パラメータ、公開元R、暗号文復号装置200Aの識別データIDに基づいて、暗号文cと、共通鍵Kとを生成する。暗号文生成装置400Aは、生成した共通鍵Kにより、メッセージMを暗号化して、暗号化メッセージCMを生成する。暗号文生成装置400Aは、生成した暗号文cと暗号化メッセージCMとを、暗号文復号装置200Aに対して送信する。
 暗号文復号装置200Aは、鍵生成装置300Aが生成した秘密鍵DIDを秘密裡に保持する。暗号文復号装置200Aは、暗号文生成装置400Aが送信した暗号文cと暗号化メッセージCMとを受信する。暗号文復号装置200Aは、公開された暗号パラメータに基づいて、保持した秘密鍵DIDにより、受信した暗号文cを復号し、暗号文生成装置400Aと同じ共通鍵Kを生成する。暗号文復号装置200Aは、生成した共通鍵Kにより、暗号化メッセージCMを復号して、メッセージMと同じメッセージM’を生成する。
 なお、暗号パラメータ設定装置810A、鍵生成装置300A、暗号文生成装置400A、暗号文復号装置200Aの外観、ハードウェア資源は、実施の形態1で説明した暗号文復号装置200の外観、ハードウェア資源と同様である。
 図11は、この実施の形態における暗号パラメータ設定装置810Aの一部の機能ブロックの構成の一例を示すブロック構成図である。
 暗号パラメータ設定装置810Aは、暗号パラメータ記憶部819A、公開元生成部811A、秘密乱数出力部814A、公開元出力部815Aを有する。
 暗号パラメータ記憶部819Aは、磁気ディスク装置920を用いて、公開した暗号パラメータを表わすデータを記憶する。
 公開元生成部811Aは、暗号パラメータ記憶部819Aが記憶した暗号パラメータに基づいて、秘密乱数sと、公開元Rとを生成する。
 公開元生成部811Aは、秘密乱数生成部812A、公開元算出部813Aを有する。
 秘密乱数生成部812Aは、CPU911を用いて、暗号パラメータ記憶部819Aが記憶した暗号パラメータのうち位数pを表わすデータを入力する。秘密乱数生成部812Aは、CPU911を用いて、入力したデータが表わす位数pに基づいて、1以上p-1以下の整数をランダムに生成して、秘密乱数sとする。秘密乱数生成部812Aは、RAM914を用いて、生成した秘密乱数sを表わすデータを記憶する。
 公開元算出部813Aは、CPU911を用いて、暗号パラメータ記憶部819Aが記憶した暗号パラメータのうち加法群Gと元gとを表わすデータと、秘密乱数生成部812Aが記憶した秘密乱数sを表わすデータとを入力する。公開元算出部813Aは、CPU911を用いて、入力したデータが表わす加法群Gと元gと秘密乱数sとに基づいて、加法群Gにおける演算により、元gをs回加算した元を算出して、公開元Rとする。公開元算出部813Aは、RAM914を用いて、算出した公開元Rを表わすデータを記憶する。
 秘密乱数出力部814Aは、CPU911を用いて、秘密乱数生成部812Aが記憶した秘密乱数sを表わすデータを入力する。秘密乱数出力部814Aは、CPU911を用いて、入力した秘密乱数sを表わすデータを出力する。
 秘密乱数出力部814Aが出力した秘密乱数sは、鍵生成装置300Aに対して秘密裡に通知される。
 公開元出力部815Aは、CPU911を用いて、公開元算出部813Aが記憶した公開元Rを表わすデータを入力する。公開元出力部815Aは、CPU911を用いて、入力した公開元Rを表わすデータを出力する。
 公開元出力部815Aが出力した公開元Rは、IDベース公開鍵暗号システム820Aの利用者に公開される。
 図12は、この実施の形態における鍵生成装置300Aの機能ブロックの構成の一例を示すブロック構成図である。
 鍵生成装置300Aは、暗号パラメータ記憶部390A、秘密乱数記憶部330A、識別入力部340A、秘密鍵生成部350A、秘密鍵出力部360Aを有する。
 暗号パラメータ記憶部390Aは、磁気ディスク装置920を用いて、公開された暗号パラメータを表わすデータを、あらかじめ記憶している。
 秘密乱数記憶部330Aは、耐タンパ性のある記憶装置を用いて、暗号パラメータ設定装置810Aから通知された秘密乱数sを表わすデータを秘密裡に記憶する。
 識別入力部340Aは、CPU911を用いて、秘密鍵を生成すべき暗号文復号装置200Aについて、暗号文復号装置200Aを識別する識別データである任意の長さのビット列IDを入力する。ビット列IDは、例えば、暗号文復号装置200Aのメールアドレスである文字列を表わすデータである。識別入力部340Aは、RAM914を用いて、入力したビット列IDを記憶する。
 秘密鍵生成部350Aは、暗号パラメータ記憶部390Aが記憶した暗号パラメータと、秘密乱数記憶部330Aが記憶した秘密乱数sと、識別入力部340Aが入力したビット列IDとに基づいて、秘密鍵DIDを生成する。
 秘密鍵生成部350Aは、ハッシュ値算出部351A、整数加算部352A、逆数算出部353A、秘密鍵算出部354Aを有する。
 ハッシュ値算出部351Aは、CPU911を用いて、暗号パラメータ記憶部390Aが記憶した暗号パラメータのうちハッシュ関数Hを表わすデータと、識別入力部340Aが記憶したビット列IDとを入力する。ハッシュ値算出部351Aは、CPU911を用いて、入力したデータが表わすハッシュ関数Hと、入力したビット列IDとに基づいて、ビット列IDをハッシュ関数Hによりハッシュしたハッシュ値H(ID)を算出する。なお、ハッシュ値H(ID)は、1以上p-1以下の整数である。ハッシュ値算出部351Aは、RAM914を用いて、算出したハッシュ値H(ID)を表わすデータを記憶する。
 整数加算部352Aは、CPU911を用いて、暗号パラメータ記憶部390Aが記憶した暗号パラメータのうち位数pを表わすデータと、秘密乱数記憶部330Aが記憶した秘密乱数sを表わすデータと、ハッシュ値算出部351Aが記憶したハッシュ値H(ID)を表わすデータとを入力する。整数加算部352Aは、CPU911を用いて、入力したデータが表わす位数pと秘密乱数sとハッシュ値H(ID)とに基づいて、秘密乱数sとハッシュ値H(ID)との和を位数pで割った余りである整数s+H(ID)を算出する。整数加算部352Aは、RAM914を用いて、算出した整数s+H(ID)を表わすデータを記憶する。
 逆数算出部353Aは、CPU911を用いて、暗号パラメータ記憶部390Aが記憶した暗号パラメータのうち位数pを表わすデータと、整数加算部352Aが記憶した整数s+H(ID)を表わすデータとを入力する。逆数算出部353Aは、CPU911を用いて、入力したデータが表わす位数pと整数s+H(ID)とに基づいて、整数s+H(ID)との積を位数pで割った余りが1になる整数1/[s+H(ID)]を算出する。逆数算出部353Aは、RAM914を用いて、算出した整数1/[s+H(ID)]を表わすデータを記憶する。
 秘密鍵算出部354Aは、CPU911を用いて、暗号パラメータ記憶部390Aが記憶した暗号パラメータのうち加法群Gと元gとを表わすデータと、逆数算出部353Aが算出した整数1/[s+H(ID)]を表わすデータとを入力する。秘密鍵算出部354Aは、CPU911を用いて、入力したデータが表わす加法群Gと元gと整数1/[s+H(ID)]とに基づいて、加法群Gにおける演算により、元gを1/[s+H(ID)]回加算した元を算出して、秘密鍵DIDとする。秘密鍵算出部354Aは、RAM914を用いて、算出した秘密鍵DIDを表わすデータを記憶する。
 秘密鍵出力部360Aは、CPU911を用いて、秘密鍵算出部354Aが記憶した秘密鍵DIDを表わすデータを入力する。秘密鍵出力部360Aは、CPU911を用いて、入力した秘密鍵DIDを表わすデータを出力する。
 秘密鍵出力部360Aが出力した秘密鍵DIDは、暗号文復号装置200Aに対して秘密裡に通知される。
 図13は、この実施の形態における暗号文生成装置400Aの機能ブロックの構成の一例を示すブロック構成図である。
 暗号文生成装置400Aは、暗号パラメータ記憶部490A、識別記憶部410A、共通鍵生成部420A、共通鍵記憶部430A、メッセージ入力部440A、メッセージ暗号化部450A、暗号化メッセージ出力部460A、暗号文出力部470Aを有する。
 暗号パラメータ記憶部490Aは、磁気ディスク装置920を用いて、公開された暗号パラメータ(公開元Rを含む)を表わすデータを、あらかじめ記憶している。
 識別記憶部410Aは、磁気ディスク装置920を用いて、暗号文の送信相手である暗号文復号装置200Aの識別データであるビット列IDを記憶している。
 共通鍵生成部420Aは、暗号パラメータ記憶部490Aが記憶した暗号パラメータと、識別記憶部410Aが記憶したビット列IDとに基づいて、共通鍵Kと、共通鍵Kを暗号文復号装置200Aに通知するための暗号文とを生成する。
 共通鍵生成部420Aは、秘密ビット列生成部421A、秘密整数算出部422A、識別元算出部423A、暗号元算出部424A、秘密ペアリング値算出部425A、暗号ビット列算出部426A、共通鍵算出部427Aを有する。
 秘密ビット列生成部421Aは、CPU911を用いて、所定の長さのビット列mをランダムに生成する。秘密ビット列生成部421Aは、RAM914を用いて、生成したビット列mを記憶する。
 秘密整数算出部422Aは、CPU911を用いて、暗号パラメータ記憶部490Aが記憶した暗号パラメータのうちハッシュ関数Hを表わすデータと、秘密ビット列生成部421Aが記憶したビット列mとを入力する。秘密整数算出部422Aは、CPU911を用いて、入力したデータが表わすハッシュ関数Hと、入力したビット列mとに基づいて、ビット列mをハッシュ関数Hによりハッシュしたハッシュ値rを算出する。ハッシュ値rは、1以上p-1以下の整数である。秘密整数算出部422Aは、RAM914を用いて、算出したハッシュ値rを表わすデータを記憶する。
 識別元算出部423Aは、CPU911を用いて、暗号パラメータ記憶部490Aが記憶した暗号パラメータのうちハッシュ関数Hと加法群Gと元gと公開元Rとを表わすデータと、識別記憶部410Aが記憶したビット列IDとを入力する。識別元算出部423Aは、CPU911を用いて、入力したデータが表わすハッシュ関数Hと、入力したビット列IDとに基づいて、ビット列IDをハッシュ関数Hによりハッシュしたハッシュ値H(ID)を算出する。ハッシュ値H(ID)は、1以上p-1以下の整数である。識別元算出部423Aは、CPU911を用いて、入力したデータが表わす加法群Gと元gと、算出したハッシュ値H(ID)とに基づいて、加法群Gにおける演算により、元gをH(ID)回加算した元H(ID)・gを算出する。識別元算出部423Aは、CPU911を用いて、入力したデータが表わす加法群Gと公開元Rと、算出した元H(ID)・gとに基づいて、加法群Gにおける演算により、公開元Rと元H(ID)・gとを加算した元を算出し、元Qとする。識別元算出部423Aは、RAM914を用いて、算出した元Qを表わすデータを記憶する。
 識別元算出部423Aが算出する元Qは、R=s・gだから、
Figure JPOXMLDOC01-appb-M000022
 暗号元算出部424Aは、CPU911を用いて、暗号パラメータ記憶部490Aが記憶した暗号パラメータのうち加法群Gを表わすデータと、秘密整数算出部422Aが記憶したハッシュ値rを表わすデータと、識別元算出部423Aが記憶した元Qを表わすデータとを入力する。暗号元算出部424Aは、CPU911を用いて、入力したデータが表わす加法群Gとハッシュ値rと元Qとに基づいて、加法群Gにおける演算により、元Qをr回加算した元を算出して、元Uとする。暗号元算出部424Aは、RAM914を用いて、算出した元Uを表わすデータを記憶する。
 秘密ペアリング値算出部425Aは、CPU911を用いて、暗号パラメータ記憶部490Aが記憶した暗号パラメータのうち元gと元gとペアリングeと乗法群Gとを表わすデータと、秘密整数算出部422Aが記憶したハッシュ値rを表わすデータとを入力する。秘密ペアリング値算出部425Aは、CPU911を用いて、入力したデータが表わす元gと元gとペアリングeとに基づいて、元gと元gとペアリング値e(g,g)を算出する。ペアリング値e(g,g)は、乗法群Gの元である。なお、秘密ペアリング値算出部425Aは、あらかじめ、ペアリング値e(g,g)を算出し、磁気ディスク装置920を用いて、算出したペアリング値e(g,g)を表わすデータを記憶しておいてもよい。秘密ペアリング値算出部425Aは、CPU911を用いて、入力したデータが表わすハッシュ値rと、算出したペアリング値e(g,g)とに基づいて、乗法群Gにおける演算により、ペアリング値e(g,g)をr回乗算した元を算出し、元αとする。秘密ペアリング値算出部425Aは、RAM914を用いて、算出した元αを表わすデータを記憶する。
 暗号ビット列算出部426Aは、CPU911を用いて、暗号パラメータ記憶部490Aが記憶した暗号パラメータのうちハッシュ関数Hを表わすデータと、秘密ビット列生成部421Aが記憶したビット列mと、秘密ペアリング値算出部425Aが記憶した元αを表わすデータとを入力する。暗号ビット列算出部426Aは、CPU911を用いて、入力したデータが表わすハッシュ関数Hと元αとに基づいて、元αをハッシュ関数Hによりハッシュしたハッシュ値H(α)を算出する。ハッシュ値H(α)は、所定の長さのビット列である。暗号ビット列算出部426Aは、CPU911を用いて、入力したビット列mと、算出したハッシュ値H(α)とに基づいて、ビット列mとハッシュ値H(α)との間のビットごとの排他的論理和をとり、ビット列Vとする。暗号ビット列算出部426Aは、RAM914を用いて、算出したビット列Vを記憶する。
 共通鍵算出部427Aは、CPU911を用いて、暗号パラメータ記憶部490Aが記憶した暗号パラメータのうちハッシュ関数Hを表わすデータと、秘密ビット列生成部421Aが記憶したビット列mとを入力する。共通鍵算出部427Aは、CPU911を用いて、入力したデータが表わすハッシュ関数Hと、入力したビット列mとに基づいて、ビット列mをハッシュ関数Hによりハッシュしたハッシュ値を算出し、共通鍵Kとする。共通鍵Kは、所定の長さのビット列である。共通鍵算出部427Aは、RAM914を用いて、算出した共通鍵Kを記憶する。
 共通鍵記憶部430Aは、CPU911を用いて、共通鍵算出部427Aが記憶した共通鍵Kを入力する。共通鍵記憶部430Aは、RAM914を用いて、入力した共通鍵Kを記憶する。
 暗号文出力部470Aは、CPU911を用いて、暗号元算出部424Aが記憶した元Uを表わすデータと、暗号ビット列算出部426Aが記憶したビット列Vとを入力する。暗号文出力部470Aは、CPU911を用いて、入力した元Uを表わすデータとビット列Vとを含むデータを生成し、暗号文cとして出力する。
 メッセージ入力部440Aは、CPU911を用いて、暗号文復号装置200Aに対して送信しようとするメッセージMを入力する。メッセージ入力部440Aは、磁気ディスク装置920を用いて、入力したメッセージMを記憶する。
 メッセージ暗号化部450Aは、CPU911を用いて、共通鍵記憶部430Aが記憶した共通鍵Kと、メッセージ入力部440Aが記憶したメッセージMとを入力する。メッセージ暗号化部450Aは、CPU911を用いて、入力したメッセージMと共通鍵Kとに基づいて、共通鍵KによりメッセージMを暗号化して、暗号化メッセージCMとする。メッセージ暗号化部450Aは、磁気ディスク装置920を用いて、生成した暗号化メッセージCMを記憶する。
 暗号化メッセージ出力部460Aは、CPU911を用いて、メッセージ暗号化部450Aが記憶した暗号化メッセージCMを入力する。暗号化メッセージ出力部460Aは、CPU911を用いて、入力した暗号化メッセージCMを出力する。
 暗号文出力部470Aが出力した暗号文cと、暗号化メッセージ出力部460Aが出力した暗号化メッセージCMとは、暗号文復号装置200Aに対して送信される。
 図14は、この実施の形態における暗号文復号装置200Aの機能ブロックの構成の一例を示すブロック構成図である。
 暗号文復号装置200Aは、暗号パラメータ記憶部290A、識別記憶部241A、識別元算出部242A、識別元記憶部243A、鍵記憶部210A、暗号文入力部220A、暗号文検証部230A、検証装置100A、復号文生成部260A、共通鍵記憶部270A、暗号化メッセージ入力部281A、メッセージ復号部282A、復号メッセージ出力部283Aを有する。
 暗号パラメータ記憶部290Aは、磁気ディスク装置920を用いて、公開された暗号パラメータ(公開元Rを含む)を表わすデータを、あらかじめ記憶している。
 識別記憶部241Aは、磁気ディスク装置920を用いて、暗号文復号装置200A自身を識別するビット列IDを記憶している。
 識別元算出部242Aは、CPU911を用いて、暗号パラメータ記憶部290Aが記憶した暗号パラメータのうちハッシュ関数Hと加法群Gと元gと公開元Rとを表わすデータと、識別記憶部241Aが記憶したビット列IDとを入力する。識別元算出部242Aは、CPU911を用いて、入力したデータが表わすハッシュ関数Hと、入力したビット列IDとに基づいて、ビット列IDをハッシュ関数Hによりハッシュしたハッシュ値H(ID)を算出する。ハッシュ値H(ID)は、1以上p-1以下の整数である。識別元算出部242Aは、CPU911を用いて、入力したデータが表わす加法群Gと元gと、算出したハッシュ値H(ID)とに基づいて、加法群Gにおける演算により、元gをH(ID)回加算した元H(ID)・gを算出する。識別元算出部242Aは、CPU911を用いて、入力したデータが表わす加法群Gと公開元Rと、算出した元H(ID)・gとに基づいて、加法群Gにおける演算により、公開元Rと元H(ID)・gとを加算した元を算出して、元Qとする。識別元算出部242Aは、RAM914を用いて、算出した元Qを表わすデータを記憶する。
 識別元記憶部243Aは、CPU911を用いて、識別元算出部242Aが記憶した元Qを表わすデータを入力する。識別元記憶部243Aは、磁気ディスク装置920を用いて、入力した元Qを表わすデータを記憶する。
 暗号文復号装置200Aにとって、自身を識別するビット列IDは一定であるから、元Qの値も一定である。したがって、暗号文復号装置200Aが暗号文cを入力するたびに、元Qを計算し直す必要はなく、暗号文cを入力する前に、識別元算出部242Aが元Qを算出して、識別元記憶部243Aが記憶しておけば、暗号文cを入力したときの計算量を減らすことができる。
 鍵記憶部210Aは、耐タンパ性のある記憶装置を用いて、あらかじめ鍵生成装置300Aが生成した秘密鍵DIDを表わすデータを秘密裡に記憶している。
 暗号文入力部220Aは、CPU911を用いて、暗号文生成装置400Aから受信した暗号文cを入力する。暗号文入力部220Aは、CPU911を用いて、入力した暗号文cから、元Uとビット列Vとを表わすデータを取得する。暗号文入力部220Aは、RAM914を用いて、取得した元Uとビット列Vとを表わすデータを記憶する。
 暗号文検証部230Aは、暗号パラメータ記憶部290Aが記憶した暗号パラメータと、鍵記憶部210が記憶した秘密鍵DIDと、暗号文入力部220Aが入力した暗号文cが表わす元Uとビット列Vとに基づいて、検証装置100Aに入力するデータを生成する。
 暗号文検証部230Aは、ペアリング値算出部231A、ビット列算出部232A、整数算出部233Aを有する。
 ペアリング値算出部231Aは、CPU911を用いて、暗号パラメータ記憶部290Aが記憶した暗号パラメータのうちペアリングeを表わすデータと、鍵記憶部210Aが記憶した秘密鍵DIDを表わすデータと、暗号文入力部220が記憶した元Uを表わすデータとを入力する。ペアリング値算出部231Aは、CPU911を用いて、入力したデータが表わすペアリングeと元Uと秘密鍵DIDとに基づいて、ペアリングeにより、元Uと秘密鍵DIDとのペアリング値を算出して、ペアリング値αとする。ペアリング値αは、乗法群Gの元である。ペアリング値算出部231Aは、RAM914を用いて、算出したペアリング値αを表わすデータを記憶する。
 ペアリング値算出部231Aが算出するペアリング値αは、ペアリングeの双線形より、
Figure JPOXMLDOC01-appb-M000023
 すなわち、ペアリング値算出部231Aが算出するペアリング値αは、暗号文生成装置400Aの秘密ペアリング値算出部425Aが算出した乗法群Gの元αと等しい。
 ビット列算出部232Aは、CPU911を用いて、暗号パラメータ記憶部290Aが記憶した暗号パラメータのうちハッシュ関数Hを表わすデータと、暗号文入力部220が記憶したビット列Vと、ペアリング値算出部231Aが記憶したペアリング値αを表わすデータとを入力する。ビット列算出部232Aは、CPU911を用いて、入力したデータが表わすハッシュ関数Hとペアリング値αとに基づいて、ハッシュ関数Hによりペアリング値αをハッシュしたハッシュ値H(α)を算出する。ハッシュ値H(α)は、所定の長さのビット列である。ビット列算出部232Aは、CPU911を用いて、入力したビット列Vと、算出したハッシュ値H(α)とに基づいて、ビット列Vとハッシュ値H(α)との間のビットごとの排他的論理和をとり、ビット列mとする。ビット列算出部232Aは、RAM914を用いて、算出したビット列mを記憶する。
 ペアリング値算出部231Aが算出したペアリング値αが暗号文生成装置400Aの秘密ペアリング値算出部425Aが算出した乗法群Gの元αと等しいので、ビット列算出部232Aが算出するビット列mは、暗号文生成装置400Aの秘密ビット列生成部421Aが生成したビット列mと等しい。
 整数算出部233Aは、CPU911を用いて、暗号パラメータ記憶部290Aが記憶した暗号パラメータのうちハッシュ関数Hを表わすデータと、ビット列算出部232Aが記憶したビット列mとを入力する。整数算出部233Aは、CPU911を用いて、入力したデータが表わすハッシュ関数Hと、入力したビット列mとに基づいて、ハッシュ関数Hによりビット列mをハッシュしたハッシュ値を算出し、ハッシュ値rとする。ハッシュ値rは、1以上p-1以下の整数である。整数算出部233Aは、RAM914を用いて、算出したハッシュ値rを表わすデータを記憶する。
 ビット列算出部232Aが算出したビット列mが暗号文生成装置400Aの秘密ビット列生成部421Aが生成したビット列mと等しいので、整数算出部233Aが算出したハッシュ値rは、暗号文生成装置400Aの秘密整数算出部422Aが算出したハッシュ値rと等しい。
 したがって、暗号文入力部220Aが入力した暗号文cが正当な暗号文であれば、U=r・Qが成り立つ。
 検証装置100Aは、U=r・Qであるか否かを判断し、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とに基づいて、e・r≡e(mod p)、|e|<√p、0<e<√pを満たす整数e及び整数eを算出する。検証装置100Aは、CPU911を用いて、入力したデータが表わす元Uと元Qと、算出した整数eと整数eとに基づいて、加法群Gにおける演算により、加法群Gの元a=e・U-e・Qを算出する。検証装置100Aは、CPU911を用いて、算出した元aに基づいて、元aが加法群Gの単位元であるか否かを判定する。検証装置100Aは、CPU911を用いて、元aが加法群Gの単位元である場合、「検証成功」と判定し、元aが加法群Gの単位元でない場合、「検証失敗」と判定する。
 検証装置100Aは、CPU911を用いて、検証結果を表わすデータを出力する。
 復号文生成部260Aは、CPU911を用いて、検証装置100Aが出力した検証結果を表わすデータを入力する。復号文生成部260Aは、入力したデータが表わす検証結果が「検証成功」である場合、CPU911を用いて、共通鍵Kを生成する。復号文生成部260Aは、検証結果が「検証失敗」である場合、共通鍵Kを生成しない。なお、検証結果が「検証失敗」である場合、復号文生成部260Aは、不正者に手がかりを与えないランダムな共通鍵Kを生成してもよい。
 判定結果が「検証成功」である場合、復号文生成部260Aは、CPU911を用いて、暗号パラメータ記憶部290Aが記憶した暗号パラメータのうちハッシュ関数Hを表わすデータと、ビット列算出部232Aが記憶したビット列mとを入力する。復号文生成部260Aは、CPU911を用いて、入力したデータが表わすハッシュ関数Hと、入力したビット列mとに基づいて、ハッシュ関数Hにより、ビット列mをハッシュしたハッシュ値を算出して、共通鍵Kとする。共通鍵Kは、所定の長さのビット列である。復号文生成部260Aは、RAM914を用いて、算出した共通鍵Kを記憶する。
 暗号文入力部220Aが入力した暗号文cが正当な暗号文であれば、ビット列算出部232Aが算出したビット列mが、暗号文生成装置400Aの秘密ビット列生成部421Aが生成したビット列mと等しいので、復号文生成部260Aが算出する共通鍵Kは、暗号文生成装置400Aの共通鍵算出部427Aが算出した共通鍵Kと等しい。
 したがって、暗号文生成装置400Aと暗号文復号装置200Aとが同じ共通鍵Kを共有できる。
 共通鍵記憶部270Aは、CPU911を用いて、復号文生成部260Aが記憶した共通鍵Kを入力する。共通鍵記憶部270Aは、RAM914を用いて、入力した共通鍵Kを記憶する。
 暗号化メッセージ入力部281Aは、CPU911を用いて、暗号文生成装置400Aから受信した暗号化メッセージCMを入力する。暗号化メッセージ入力部281Aは、磁気ディスク装置920を用いて、入力した暗号化メッセージCMを記憶する。
 メッセージ復号部282Aは、CPU911を用いて、共通鍵記憶部270Aが記憶した共通鍵Kと、暗号化メッセージ入力部281Aが記憶した暗号化メッセージCMとを入力する。メッセージ復号部282Aは、CPU911を用いて、入力した共通鍵Kにより、入力した暗号化メッセージCMを復号して、メッセージM’を生成する。メッセージ復号部282Aは、磁気ディスク装置920を用いて、生成したメッセージM’を記憶する。
 暗号文生成装置400Aと暗号文復号装置200Aとが同じ共通鍵Kを共有しているので、メッセージ復号部282Aが生成するメッセージM’は、暗号文生成装置400Aのメッセージ入力部440Aが入力したメッセージMと同じになる。
 復号メッセージ出力部283Aは、CPU911を用いて、メッセージ復号部282Aが記憶したメッセージM’を入力する。復号メッセージ出力部283Aは、CPU911を用いて、入力したメッセージM’を出力する。
 図15は、この実施の形態における暗号文復号装置200Aが暗号文cを復号する暗号文復号処理の流れの一例を示すフローチャート図である。
 ペアリング値算出工程S731Aにおいて、ペアリング値算出部231Aは、CPU911を用いて、暗号文入力部220Aが入力した元Uと、鍵記憶部210Aが記憶した秘密鍵DIDとに基づいて、ペアリングeにより、元Uと秘密鍵DIDとのペアリング値を算出し、ペアリング値αとする。
 ビット列算出工程S732Aにおいて、ビット列算出部232Aは、CPU911を用いて、ペアリング値算出工程S731Aでペアリング値算出部231Aが算出したペアリング値αに基づいて、ハッシュ関数Hにより、ペアリング値αをハッシュしたハッシュ値H(α)を算出する。ビット列算出部232Aは、CPU911を用いて、暗号文入力部220Aが入力したビット列Vと、算出したハッシュ値H(α)とに基づいて、ビット列Vとハッシュ値H(α)との間のビットごとの排他的論理和をとり、ビット列mとする。
 整数算出工程S733Aにおいて、整数算出部233Aは、CPU911を用いて、ビット列算出工程S732Aでビット列算出部232Aが算出したビット列mに基づいて、ハッシュ関数Hにより、ビット列mをハッシュしたハッシュ値を算出し、ハッシュ値rとする。
 暗号文検証工程S734Aにおいて、検証装置100Aは、CPU911を用いて、識別元記憶部243Aが記憶した元Qと、暗号文入力部220Aが入力した元Uと、整数算出工程S733Aで整数算出部233Aが算出したハッシュ値rとに基づいて、U=r・Qであるかを検証する。
 U=r・Qである場合、復号文生成工程S735Aへ進む。
 U≠r・Qである場合、暗号文復号処理を終了する。
 復号文生成工程S735Aにおいて、復号文生成部260Aは、CPU911を用いて、ビット列算出工程S732Aでビット列算出部232Aが算出したビット列mに基づいて、ハッシュ関数Hにより、ビット列mをハッシュしたハッシュ値を算出し、共通鍵Kとする。
 その後、暗号文復号処理を終了し、算出した共通鍵Kにより、暗号化メッセージCMを復号する。
 不正に暗号を解読しようとする不正者に対して、暗号を解読する手がかりを与えないためには、暗号文復号装置200Aが、暗号文に整合性があるかを検証することが必要である。
 この実施の形態における暗号文復号装置200Aは、暗号文の整合性を検証するため、検証装置100AがU=r・Qであるか否かを判定する。
 実施の形態1で説明したように、検証装置100Aは、U=r・Qであるか否かを高速に検証することができる。
 したがって、暗号文復号装置200Aは、高速に暗号文を復号することができる。
 この実施の形態における暗号文復号装置200Aは、データを記憶する記憶装置(RAM914、磁気ディスク装置920など)と、データを処理する処理装置(CPU911)と、鍵記憶部210Aと、暗号文入力部220Aと、暗号文検証部230Aと、検証装置100Aと、復号文生成部260Aとを有する。
 上記鍵記憶部210は、上記記憶装置を用いて、暗号文を復号する鍵(秘密鍵DID)を記憶する。
 上記暗号文入力部220Aは、上記処理装置(CPU911)を用いて、暗号文cを入力する。
 上記暗号文検証部230は、上記処理装置(CPU911)を用いて、上記鍵記憶部210Aが記憶した鍵(秘密鍵DID)と、上記暗号文入力部220Aが入力した暗号文cとに基づいて、上記検証装置100Aに入力する整数e(ハッシュ値r)と、上記有限群G(加法群G)の元s(元Q)と、上記有限群G(加法群G)の元h(元U)とを算出する。
 上記検証装置100Aは、上記暗号文検証部230Aが算出した整数e(ハッシュ値r)と、上記有限群G(加法群G)の元s(元Q)と、上記有限群G(加法群G)の元h(元U)とを入力して、検証成功か否かを判定する。
 上記復号文生成部260Aは、上記処理装置(CPU911)を用いて、上記検証装置100Aが検証成功と判定した場合に、上記暗号文入力部220Aが入力した暗号文cを上記鍵記憶部210Aが記憶した鍵(秘密鍵DID)により復号して、復号文(共通鍵K)を生成する。
 この実施の形態における暗号文復号装置200Aによれば、検証装置100Aが暗号文の整合性を検証して検証成功と判定した場合に、復号文生成部260Aが復号文を生成するので、暗号文復号装置200Aに不正な暗号文を入力して、復号結果から、暗号を解読する手がかりを得ようとする不正者に対して、暗号を解読する手がかりを与えるのを防ぐことができる。また、検証装置100Aが暗号文の整合性を検証する処理にかかる時間を短縮できるので、暗号文復号装置200Aが暗号文を復号する処理全体にかかる時間を短縮することができるという効果を奏する。
 この実施の形態における暗号文復号装置200Aは、更に、暗号パラメータ記憶部290Aと、識別記憶部241Aと、識別元算出部242Aと、識別元記憶部243Aとを有する。
 上記暗号パラメータ記憶部290Aは、上記記憶装置(磁気ディスク装置920)を用いて、上記有限群G(加法群G)の位数pと、上記有限群G(加法群G)の生成元gと、上記有限群G(加法群G)の元Rとを記憶する。
 上記識別記憶部241Aは、上記記憶装置(磁気ディスク装置920)を用いて、上記暗号文復号装置200Aを識別するビット列IDを記憶する。
 上記識別元算出部242Aは、上記処理装置を用いて、上記識別記憶部241Aが記憶したビット列IDに基づいて、所定のハッシュ関数Hにより上記ビット列IDをハッシュしたハッシュ値を算出して、整数(ハッシュ値)H(ID)とし、上記暗号パラメータ記憶部290Aが記憶した生成元gと、上記暗号パラメータ記憶部290Aが記憶した元Rと、算出した整数(ハッシュ値)H(ID)とに基づいて、上記生成元gを整数(ハッシュ値)H(ID)倍した元と、上記元Rとを加算して、上記有限群G(加法群G)の元Q(=R+H(ID)・g)とする。
 上記識別元記憶部243Aは、上記記憶装置(磁気ディスク装置920)を用いて、上記識別元算出部242Aが算出した元Qを記憶する。
 上記鍵記憶部210Aは、上記記憶装置を用いて、有限群(加法群)Gの元DIDを記憶する。
 上記暗号文入力部220Aは、上記処理装置(CPU911)を用いて、上記有限群G(加法群G)の元Uと、ビット列Vとを上記暗号文cとして入力する。
 上記暗号文検証部230Aは、ペアリング値算出部231Aと、ビット列算出部232Aと、整数算出部233Aとを有する。
 上記ペアリング値算出部231Aは、上記処理装置(CPU911)を用いて、上記暗号文入力部220Aが入力した元Uと、上記鍵記憶部210Aが記憶した元DIDとに基づいて、所定のペアリング関数eにより上記元Uと上記元DIDとのペアリング値を算出して、ペアリング値α(=e(U,DID))とする。
 上記ビット列算出部232Aは、上記処理装置(CPU911)を用いて、上記ペアリング値算出部231Aが算出したペアリング値αに基づいて、所定のハッシュ関数Hにより上記ペアリング値αをハッシュしたハッシュ値を算出して、ビット列(ハッシュ値)H(α)とし、上記暗号文入力部220Aが入力したビット列Vと、算出したビット列(ハッシュ値)H(α)とに基づいて、上記ビット列Vと上記ビット列(ハッシュ値)H(α)との排他的論理和を取って、ビット列m(=V XOR H(α))とする。
 上記整数算出部233Aは、上記処理装置(CPU911)を用いて、上記ビット列算出部232Aが算出したビット列mに基づいて、所定のハッシュ関数Hにより上記ビット列mをハッシュしたハッシュ値を算出して、整数(ハッシュ値)r(=H(m))とする。
 上記検証装置100Aは、上記暗号パラメータ記憶部290Aが記憶した位数pと、上記整数eとして上記整数算出部233Aが算出した整数(ハッシュ値)rと、上記元sとして上記識別元記憶部243Aが記憶した元Qと、上記元hとして上記暗号文入力部220Aが入力した元Uとを入力して、検証成功か否かを判定する。
 上記復号文生成部260Aは、上記処理装置(CPU911)を用いて、上記検証装置100Aが検証成功と判定した場合に、上記ビット列算出部232Aが算出したビット列mに基づいて、所定のハッシュ関数Hにより上記ビット列mをハッシュしたハッシュ値を算出して、共通鍵K(=H(m))とし、算出した共通鍵Kを上記復号文として出力する。
 この実施の形態における暗号文復号装置200Aによれば、検証装置100AがU=r・Qであるかを検証して検証成功と判定した場合に、復号文生成部260Aが復号文を生成するので、不正者に対して、暗号を解読する手がかりを与えるのを防ぐことができる。また、検証装置100AがU=r・Qであるかを検証する処理にかかる時間を短縮できるので、暗号文復号装置200Aが暗号文を復号する処理全体にかかる時間を短縮することができるという効果を奏する。
 この実施の形態における識別元算出部242Aは、上記暗号文入力部220Aが上記暗号文cを入力するよりも前に、上記元Qを算出する。
 この実施の形態における暗号文復号装置200Aによれば、元Qを算出する処理を暗号文入力部220Aが暗号文cを入力するよりも前に実行するので、暗号文入力部220Aが暗号文cを入力してから、復号文生成部260Aが共通鍵Kを算出するまでにかかる時間を更に短縮することができるという効果を奏する。
 この実施の形態における暗号文復号装置200Aは、更に、共通鍵記憶部270Aと、暗号化メッセージ入力部281Aと、メッセージ復号部282Aとを有する。
 上記共通鍵記憶部270Aは、上記記憶装置(RAM914)を用いて、上記復号文生成部260Aが出力した共通鍵Kを記憶する。
 上記暗号化メッセージ入力部281Aは、上記処理装置(CPU911)を用いて、暗号化メッセージCMを入力する。
 上記メッセージ復号部282Aは、上記処理装置(CPU911)を用いて、上記共通鍵記憶部270Aが記憶した共通鍵Kにより上記暗号化メッセージ入力部281Aが入力した暗号化メッセージCMを復号する。
 この実施の形態における暗号文復号装置200Aによれば、暗号文cを介して暗号文生成装置400Aと共有した共通鍵Kにより、メッセージ復号部282Aが暗号化メッセージCMを復号するので、暗号化メッセージCMの生成・復号には、高速に処理が可能な共通鍵暗号方式を用いることができるという効果を奏する。
 この実施の形態における暗号システム(IDベース公開鍵暗号システム820A)は、検証装置100Aを有する。
 この実施の形態における暗号システム(IDベース公開鍵暗号システム820A)によれば、検証装置100Aが暗号文の整合性を検証するので、不正者に対して、暗号を解読する手がかりを与えるのを防ぐことができる。また、検証装置100Aが暗号文の整合性を検証する処理にかかる時間を短縮できるので、暗号通信全体にかかる時間を短縮することができるという効果を奏する。
 以上説明した暗号文復号装置200A(公開鍵暗号復号装置)は、公開鍵暗号システム(IDベース公開鍵暗号システム820A)内における鍵デカプセル化装置であって、整数の剰余類がなす群などの乗法群における指数べき乗算、または(超)楕円曲線上の点がなす群などの加法群におけるスカラー倍算により、乗法群の元sをe回乗算した元sまたは加法群の元sをe回加算した元e・sが、既知の元hと一致するかどうか検証することにより、暗号文が正しいか否かを判定する暗号文正当性検証装置(検証装置100A)を有する。
 暗号文正当性検証装置(検証装置100A)は、
 指数部(整数e)を分割する装置(整数分割部110)と、
 分割された指数(整数e及び整数e)を用いて、乗法群における二基底指数べき乗算、または(超)楕円曲線上の点がなす群などの加法群における二基底スカラー倍算をして、値he1-se2またはe・h-e・sを計算する装置(検証値算出部130)と、
 その値が乗法群の単位元1または加法群の単位元0に等しいかどうか判定する装置(検証判定部150)とを有する。
 以上説明した暗号文復号装置200Aは、IDベース暗号復号装置である。
 暗号文復号装置200Aは、
 公開パラメータ(元g及び公開元R)と、受信者(暗号文復号装置200A)のIDから計算される値(元Q=R+H(ID)・g)を事前に計算する事前計算装置(識別元算出部242A)と、
 その事前計算値(元Q)を記憶する記憶装置(識別元記憶部243A)とを有する。
 以上説明した暗号文復号装置200A(IDベース暗号復号装置)は、
 公開パラメータ(元g及び公開元R)と、受信者(暗号文復号装置200A)のIDから計算される値(元Q)を事前に計算する事前計算装置(識別元算出部242A)と、
 その事前計算値(元Q)を記憶する記憶装置(識別元記憶部243A)と、
 その事前計算値(元Q)に対する、乗法群におけるべき乗算、または(超)楕円曲線上の点がなす群などの加法群におけるスカラー倍算をした値(Qまたはr・Q)を検証する検証装置100Aとを有する。
 検証装置100Aは、
 指数部(ハッシュ値r)を分割する装置(整数分割部110)と、
 分割された指数(整数e及び整数e)を用いて、乗法群における二基底指数べき乗算、または(超)楕円曲線上の点がなす群などの加法群における二基底スカラー倍算をして、値Ue1・Q-e2またはe・U-e・Qを計算する装置(検証値算出部130)と、
 その値が乗法群の単位元1または加法群の単位元0に等しいかどうか判定する装置(検証判定部150)とを有する。
 以上説明した暗号文復号装置200Aは、SK(境-笠原)-IDベース暗号復号装置である。
 暗号文復号装置200Aは、
 公開パラメータ(暗号パラメータ)である乗法群または加法群の元R,元gと、受信者(暗号文復号装置200A)を識別するビット列IDのハッシュ値h=H(ID)とから計算される元Q=R・g またはQ=R+h・gを事前に計算する事前計算装置(識別元算出部242A)と、
 その元Qを記憶する記憶装置(識別元記憶部243A)と、
 ランダムなビット列mのハッシュ値である整数rに対して、Qまたはr・Qが既知のUと一致するかどうか検証することにより、暗号文が正しいか判定する暗号文正当性検証装置(検証装置100A)とを有する。
 以上説明した暗号文復号装置200Aは、SK-IDベース暗号システム(IDベース公開鍵暗号システム820A)内における鍵デカプセル化装置(SK-IDベース暗号鍵デカプセル化装置)である。
 暗号文復号装置200Aは、
 公開パラメータ(暗号パラメータ)である乗法群または加法群の元R,元gと、受信者(暗号文復号装置200A)を識別するビット列IDのハッシュ値h=H(ID)とから計算される元Q=R・g またはQ=R+h・gを事前に計算する事前計算装置(識別元算出部242A)と、
 その元Qを記憶する記憶装置(識別元記憶部243A)と、
 ランダムなビット列mのハッシュ値である整数rに対して、Qまたはr・Qが既知のUと一致するかどうか検証することにより、暗号文が正しいか判定する暗号文正当性検証装置(検証装置100A)とを有する。
 以上説明した暗号文復号装置200A(SK-IDベース暗号復号装置)は、
 公開パラメータ(暗号パラメータ)である乗法群または加法群の元R,元gと、受信者(暗号文復号装置200A)を識別するビット列IDのハッシュ値h=H(ID)とから計算される元Q=R・g またはQ=R+h・gを事前に計算する事前計算装置(識別元算出部242A)と、
 その元Qを記憶する記憶装置(識別元記憶部243A)と、
 ランダムなビット列mのハッシュ値(整数r)を計算する装置(整数算出部233A)と、
 指数部(整数r)を分割する装置(整数分割部110)と、
 分割された指数(整数e及び整数e)を用いて、乗法群における二基底指数べき乗算、または(超)楕円曲線上の点がなす群などの加法群における二基底スカラー倍算をして、値Ue1・Q-e2またはe・U-e・Qを計算する装置(検証値算出部130)と、
 その値が乗法群の単位元1または加法群の単位元0に等しいかどうか判定する装置(検証判定部150)とを有する。
 以上説明した暗号文復号装置200A(SK-IDベース暗号鍵デカプセル化装置)は、
 公開パラメータ(暗号パラメータ)である乗法群または加法群の元R,元gと、受信者(暗号文復号装置200A)を識別するビット列IDのハッシュ値h=H(ID)とから計算される元Q=R・g またはQ=R+h・gを事前に計算する事前計算装置(識別元算出部242A)と、
 その元Qを記憶する記憶装置(識別元記憶部243A)と、
 ランダムなビット列mのハッシュ値である整数rを計算する装置(整数算出部233A)と、
 指数部(整数r)を分割する装置(整数分割部110)と、
 分割された指数(整数e及び整数e)を用いて、乗法群における二基底指数べき乗算、または(超)楕円曲線上の点がなす群などの加法群における二基底スカラー倍算をして、値Ue1・Q-e2またはe・U-e・Qを計算する装置(検証値算出部130)と、
 その値が乗法群の単位元1または加法群の単位元0に等しいかどうか判定する装置(検証判定部150)とを有する。
 以上説明したIDベース公開鍵暗号システム820Aは、(超)楕円曲線上のペアリング演算を利用したIDベース暗号であるSK-IBKEM暗号システムである。
 IDベース公開鍵暗号システム820Aでは、位数pが素数である加法群G,加法群G,乗法群Gと、群G内の基点(生成元)g,群G内の基点g、ペアリングeを用いる。
 まず、暗号パラメータ設定装置810A(暗号パラメータ生成装置)は、CPU911を用いて、1以上p-1以下の整数sをランダムに選ぶ。次に、暗号パラメータ設定装置810Aは、CPU911を用いて、群Gの元R=s・gを計算する。暗号パラメータ設定装置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用の秘密鍵である群Gの元dID=e・gを計算して、出力する。
 暗号文生成装置400A(暗号化装置)は、まず、CPU911を用いて、ランダムなビット列mを生成する。次に、暗号文生成装置400Aは、CPU911を用いて、ハッシュ値r=H(m),ハッシュ値h=H(ID)を計算し、群Gの元Q=R+h・gを計算する。暗号文生成装置400Aは、CPU911を用いて、群Gの元U=r・Qを計算し、ビット列mとハッシュ値H(e(g,g)との排他的論理和であるビット列V=XOR(m,H(e(g,g))を計算する。暗号文生成装置400Aは、CPU911を用いて、鍵(共通鍵)K=H(m),暗号文c=(U,V)を出力する。
 暗号文復号装置200A(復号装置)は、自身を識別するビット列IDと、鍵生成装置300Aが生成した秘密鍵dIDと、暗号文生成装置400Aが出力した暗号文c=(U,V)とを入力する。暗号文復号装置200Aは、ペアリング値α=e(U,dID)を計算し、ビット列Vと、ハッシュ値H(α)との排他的論理和であるビット列m=XOR(V,H(α))を計算する。暗号文復号装置200Aは、ハッシュ値r=H(m),ハッシュ値h=H(ID)を計算し、群Gの元Q=R+h・gを計算する。暗号文復号装置200Aは、CPU911を用いて、r・Q=Uが成り立つかどうかをチェックする。成立しなければ、暗号文復号装置200Aは、「拒絶」を出力する。成立すれば、暗号文復号装置200Aは、CPU911を用いて、共通鍵K=H(m)を計算し、出力する。
 以上説明した検証装置100Aは、このようなSK-IBKEM暗号システムにおいて、r・Q=Uが成立するかどうかをチェックする処理を、高速化する。
 識別元算出部242Aは、CPU911を用いて、システム全体で共通に用いられる暗号パラメータである元gと、元Rと、受信者(暗号文復号装置200A)自身のIDのハッシュ値h=H(ID)とに基づいて、暗号文生成装置400Aとの通信の内容とは無関係に、群Gにおける二基底スカラー倍算により、群Gの元Q=R+h・gを事前に計算しておく。
 検証装置100Aでは、整数分割部110が、CPU911を用いて、rとpとを入力して、e・r≡e(mod p)となる整数e,eを算出し、検証値算出部130が、CPU911を用いて、群Gにおける二基底スカラー倍算により、群Gの元W=e・Q-e・Uを計算し、検証判定部150が、CPU911をもちいて、元Wが群Gの単位元Oであるかどうかをチェックすることにより、r・Q=Uが成立するかを高速にチェックする。
 実施の形態3.
 実施の形態3について、図16~図20を用いて説明する。
 図16は、この実施の形態における公開鍵暗号システム820Bの全体構成の一例を示すシステム構成図である。
 公開鍵暗号システム820Bは、暗号文生成装置400Bが暗号文復号装置200Bの公開鍵を使って暗号文を生成し、暗号文復号装置200Bが公開鍵に対応する秘密鍵を使って暗号文を復号するシステムである。
 公開鍵暗号システム820Bは、暗号パラメータ設定装置810B、鍵生成装置300B、暗号文生成装置400B、暗号文復号装置200Bを有する。
 暗号パラメータ設定装置810Bは、公開鍵暗号システム820Bで利用される暗号パラメータを定める。暗号パラメータ設定装置810Bが定めた暗号パラメータは、公開鍵暗号システム820Bの利用者に公開される。暗号パラメータ設定装置810Bが定める暗号パラメータには、例えば、位数p、加法群G、加法群Gの元g、ハッシュ関数H、鍵導出関数KDFなどがある。
 位数pは、素数である。
 加法群Gの位数は、pである。元gは、加法群Gの生成元である。
 ハッシュ関数Hは、加法群Gの二つの元の順序対から、1以上p-1以下の整数を生成するハッシュ関数である。
 鍵導出関数KDFは、加法群Gの二つの元の順序対から、所定の長さのビット列を生成する関数である。
 なお、これらの暗号パラメータがあらかじめ定められている場合には、暗号パラメータ設定装置810Aは、なくてもよい。
 鍵生成装置300Bは、公開された暗号パラメータに基づいて、秘密鍵と公開鍵とのペアを生成する。鍵生成装置300Bが生成した秘密鍵は、暗号文復号装置200Bに秘密裡に通知される。鍵生成装置300Bが生成した公開鍵は、例えば、公開鍵証明書などの形で、暗号文復号装置200Bの公開鍵として公開される。
 鍵生成装置300Bは、公開鍵として、加法群Gの四つの元g’、c、d、hを生成する。鍵生成装置300Bは、秘密鍵として、1以上p-1以下の四つの整数w、x、y、zを生成する。
 なお、鍵生成装置300Bは、暗号文復号装置200Bの一部であってもよい。
 暗号文生成装置400Bは、公開された暗号パラメータと公開鍵とに基づいて、暗号文cと、共通鍵Kとを生成する。暗号文生成装置400Bは、生成した共通鍵Kにより、メッセージMを暗号化して暗号化メッセージCMを生成する。暗号文生成装置400Bは、生成した暗号文cと暗号化メッセージCMとを、暗号文復号装置200Bに対して送信する。
 暗号文復号装置200Bは、鍵生成装置300Bが生成した秘密鍵を秘密裡に保持する。暗号文復号装置200Bは、暗号文生成装置400Bが送信した暗号文cと暗号化メッセージCMとを受信する。暗号文復号装置200Bは、公開された暗号パラメータに基づいて、保持した秘密鍵により受信した暗号文cを復号し、暗号文生成装置400Bと同じ共通鍵Kを生成する。暗号文復号装置200Bは、生成した共通鍵により、暗号化メッセージCMを復号して、メッセージMと同じメッセージM’を生成する。
 なお、暗号パラメータ設定装置810B、鍵生成装置300B、暗号文生成装置400B、暗号文復号装置200Bの外観、ハードウェア資源は、実施の形態1で説明した暗号文復号装置200の外観、ハードウェア資源と同様である。
 図17は、この実施の形態における鍵生成装置300Bの機能ブロックの構成の一例を示すブロック構成図である。
 鍵生成装置300Bは、暗号パラメータ記憶部390B、秘密鍵生成部350B、公開鍵生成部370B、秘密鍵出力部360B、公開鍵出力部380Bを有する。
 暗号パラメータ記憶部390Bは、磁気ディスク装置920を用いて、公開された暗号パラメータを表わすデータを、あらかじめ記憶している。
 秘密鍵生成部350Bは、暗号パラメータ記憶部390Bが記憶した暗号パラメータに基づいて、秘密鍵を生成する。
 秘密鍵生成部350Bは、四つの秘密乱数生成部351B~354Bを有する。
 四つの秘密乱数生成部351B~354Bは、それぞれ、CPU911を用いて、暗号パラメータ記憶部390Bが記憶した暗号パラメータのうち位数pを表わすデータを入力する。四つの秘密乱数生成部351B~354Bは、それぞれ、CPU911を用いて、入力したデータが表わす位数pに基づいて、1以上p-1以下の整数をランダムに生成する。
 第一の秘密乱数生成部351Bは、生成した整数を整数wとし、RAM914を用いて、生成した整数wを表わすデータを記憶する。
 第二の秘密乱数生成部352Bは、生成した整数を整数xとし、RAM914を用いて、生成した整数xを表わすデータを記憶する。
 第三の秘密乱数生成部353Bは、生成した整数を整数yとし、RAM914を用いて、生成した整数yを表わすデータを記憶する。
 第四の秘密乱数生成部354Bは、生成した整数を整数zとし、RAM914を用いて、生成した整数zを表わすデータを記憶する。
 公開鍵生成部370Bは、暗号パラメータ記憶部390Bが記憶した暗号パラメータと、秘密鍵生成部350Bが生成した秘密鍵とに基づいて、公開鍵を生成する。
 公開鍵生成部370Bは、四つの公開元算出部371B~374Bを有する。
 四つの公開元算出部371B~374Bは、それぞれ、CPU911を用いて、暗号パラメータ記憶部390Bが記憶した暗号パラメータのうち加法群Gと元gとを表わすデータを入力する。
 第一の公開元算出部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は、CPU911を用いて、四つの秘密乱数生成部351B~354Bが記憶した整数wと整数xと整数yと整数zとを表わすデータを入力する。秘密鍵出力部360Bは、CPU911を用いて、入力した整数wと整数xと整数yと整数zとを表わすデータを、秘密鍵として出力する。
 秘密鍵出力部360Bが出力した秘密鍵は、暗号文復号装置200Bに対して秘密裡に通知される。
 公開鍵出力部380Bは、CPU911を用いて、四つの公開元算出部371B~374Bが記憶した元g’と元cと元dと元hとを表わすデータを入力する。公開鍵出力部380Bは、CPU911を用いて、入力した元g’と元cと元dと元hとを表わすデータを、公開鍵として出力する。
 公開鍵出力部380Bが出力した公開鍵は、暗号文復号装置200の公開鍵として公開鍵暗号システム820Bの利用者に公開される。
 図18は、この実施の形態における暗号文生成装置400Bの機能ブロックの構成の一例を示すブロック構成図である。
 暗号文生成装置400Bは、暗号パラメータ記憶部490B、公開鍵記憶部410B、共通鍵生成部420B、暗号文出力部470B、共通鍵記憶部430B、メッセージ入力部440B、メッセージ暗号化部450B、暗号化メッセージ出力部460Bを有する。
 暗号パラメータ記憶部490Bは、磁気ディスク装置920を用いて、公開された暗号パラメータを表わすデータを、あらかじめ記憶している。
 公開鍵記憶部410Bは、磁気ディスク装置920を用いて、暗号文の送信相手である暗号文復号装置200Bの公開鍵を表わすデータを記憶している。
 共通鍵生成部420Bは、暗号パラメータ記憶部490Bが記憶した暗号パラメータと、公開鍵記憶部410Bが記憶した公開鍵とに基づいて、共通鍵Kと、共通鍵Kを暗号文復号装置200Bに通知するための暗号文とを生成する。
 共通鍵生成部420Bは、秘密乱数生成部421B、第一暗号元算出部422B、第二暗号元算出部423B、ハッシュ値算出部424B、整数算出部425B、第三暗号元算出部426B、秘密元算出部427B、共通鍵算出部428Bを有する。
 秘密乱数生成部421Bは、CPU911を用いて、暗号パラメータ記憶部490Bが記憶した暗号パラメータのうち位数pを表わすデータを入力する。秘密乱数生成部421Bは、CPU911を用いて、入力したデータが表わす位数pに基づいて、1以上p-1以下の整数をランダムに生成して、秘密乱数rとする。秘密乱数生成部421Bは、RAM914を用いて、生成した秘密乱数rを表わすデータを記憶する。
 第一暗号元算出部422Bは、CPU911を用いて、暗号パラメータ記憶部490Bが記憶した暗号パラメータのうち加法群Gと元gとを表わすデータと、秘密乱数生成部421Bが記憶した秘密乱数rを表わすデータとを入力する。第一暗号元算出部422Bは、CPU911を用いて、入力したデータが表わす加法群Gと元gと秘密乱数rとに基づいて、加法群Gにおける演算により、元gをr回加算した元を算出して、元uとする。第一暗号元算出部422Bは、RAM914を用いて、算出した元uを表わすデータを記憶する。
 第二暗号元算出部423Bは、CPU911を用いて、暗号パラメータ記憶部490Bが記憶した暗号パラメータのうち加法群Gを表わすデータと、公開鍵記憶部410Bが記憶した暗号文復号装置200Bの公開鍵のうち元g’を表わすデータと、秘密乱数生成部421Bが記憶した秘密乱数rを表わすデータとを入力する。第二暗号元算出部423Bは、CPU911を用いて、入力したデータが表わす加法群Gと元g’と秘密乱数rとに基づいて、加法群Gにおける演算により、元g’をr回加算した元を算出して、元u’とする。第二暗号元算出部423Bは、RAM914を用いて、算出した元u’を表わすデータを記憶する。
 第二暗号元算出部423Bが算出する元u’は、g’=w・g、u=r・gだから、
Figure JPOXMLDOC01-appb-M000024
 ハッシュ値算出部424Bは、CPU911を用いて、暗号パラメータ記憶部490Bが記憶した暗号パラメータのうちハッシュ関数Hを表わすデータと、第一暗号元算出部422Bが記憶した元uを表わすデータと、第二暗号元算出部423Bが記憶した元u’を表わすデータとを入力する。ハッシュ値算出部424Bは、CPU911を用いて、入力したデータが表わすハッシュ関数Hと元uと元u’とに基づいて、元uと元u’との順序対をハッシュしたハッシュ値を算出して、ハッシュ値αとする。ハッシュ値αは、1以上p-1以下の整数である。ハッシュ値算出部424Bは、RAM914を用いて、算出したハッシュ値αを表わすデータを記憶する。
 整数算出部425Bは、CPU911を用いて、暗号パラメータ記憶部490Bが記憶した暗号パラメータのうち位数pを表わすデータと、秘密乱数生成部421Bが記憶した秘密乱数rを表わすデータと、ハッシュ値算出部424Bが算出したハッシュ値αを表わすデータとを入力する。整数算出部425Bは、CPU911を用いて、入力したデータが表わす位数pと秘密乱数rとハッシュ値αとに基づいて、ハッシュ値αと秘密乱数rとの積を、位数pで割った余りを算出して、整数r’とする。整数算出部425Bは、RAM914を用いて、算出した整数r’を表わすデータを記憶する。
 第三暗号元算出部426Bは、CPU911を用いて、暗号パラメータ記憶部490Bが記憶した暗号パラメータのうち加法群Gを表わすデータと、公開鍵記憶部410Bが記憶した暗号文復号装置200Bの公開鍵のうち元cと元dとを表わすデータと、秘密乱数生成部421Bが記憶した秘密乱数rを表わすデータと、整数算出部425Bが記憶した整数r’を表わすデータとを入力する。第三暗号元算出部426Bは、CPU911を用いて、入力したデータが表わす加法群Gと元cと元dと秘密乱数rと整数r’とに基づいて、加法群Gにおける演算により、元cをr回加算した元と、元dをr’回加算した元とを加算した元を算出し、元vとする。第三暗号元算出部426Bは、RAM914を用いて、算出した元vを表わすデータを記憶する。
 第三暗号元算出部426Bが算出する元vは、c=x・g、d=y・g、u=r・gだから、
Figure JPOXMLDOC01-appb-M000025
 秘密元算出部427Bは、CPU911を用いて、暗号パラメータ記憶部490Bが記憶した暗号パラメータのうち加法群Gを表わすデータと、公開鍵記憶部410Bが記憶した暗号文復号装置200Bの公開鍵のうち元hを表わすデータと、秘密乱数生成部421Bが記憶した秘密乱数rを表わすデータとを入力する。秘密元算出部427Bは、CPU911を用いて、入力したデータが表わす加法群Gと元hと秘密乱数rとに基づいて、加法群Gにおける演算により、元hをr回加算した元を算出して、元hとする。秘密元算出部427Bは、CPU911を用いて、算出した元hを表わすデータを記憶する。
 秘密元算出部427Bが算出する元hは、h=z・g、u=r・gだから、
Figure JPOXMLDOC01-appb-M000026
 共通鍵算出部428Bは、CPU911を用いて、暗号パラメータ記憶部490Bが記憶した暗号パラメータのうち鍵導出関数KDFを表わすデータと、第一暗号元算出部422Bが記憶した元uを表わすデータと、秘密元算出部427Bが記憶した元hを表わすデータとを入力する。共通鍵算出部428Bは、入力したデータが表わす鍵導出関数KDFと元uと元hとに基づいて、鍵導出関数により、元uと元hとの順序対からビット列を算出して、共通鍵Kとする。共通鍵算出部428Bは、RAM914を用いて、算出した共通鍵Kを記憶する。
 共通鍵記憶部430Bは、CPU911を用いて、共通鍵算出部428Bが記憶した共通鍵Kを入力する。共通鍵記憶部430Bは、RAM914を用いて、入力した共通鍵Kを記憶する。
 暗号文出力部470Bは、CPU911を用いて、第一暗号元算出部422Bが記憶した元uを表わすデータと、第二暗号元算出部423Bが記憶した元u’を表わすデータと、第三暗号元算出部426Bが記憶した元vを表わすデータとを入力する。暗号文出力部470Bは、CPU911を用いて、入力した元uと元u’と元vとを表わすデータを、暗号文cとして出力する。
 メッセージ入力部440Bは、CPU911を用いて、暗号文復号装置200Bに対して送信しようとするメッセージMを入力する。メッセージ入力部440Bは、磁気ディスク装置920を用いて、入力したメッセージMを記憶する。
 メッセージ暗号化部450Bは、CPU911を用いて、共通鍵記憶部430Bが記憶した共通鍵Kと、メッセージ入力部440Bが記憶したメッセージMとを入力する。メッセージ暗号化部450Bは、CPU911を用いて、入力したメッセージMと共通鍵Kとに基づいて、共通鍵KによりメッセージMを暗号化して、暗号化メッセージCMとする。メッセージ暗号化部450Bは、磁気ディスク装置920を用いて、生成した暗号化メッセージCMを記憶する。
 暗号化メッセージ出力部460Bは、CPU911を用いて、メッセージ暗号化部450Bが記憶した暗号化メッセージCMを入力する。暗号化メッセージ出力部460Bは、CPU911を用いて、入力した暗号化メッセージCMを出力する。
 暗号文出力部470Bが出力した暗号文cと、暗号化メッセージ出力部460Bが出力した暗号化メッセージCMとは、暗号文復号装置200Bに対して送信される。
 図19は、この実施の形態における暗号文復号装置200Bの機能ブロックの構成の一例を示すブロック構成図である。
 暗号文復号装置200Bは、暗号パラメータ記憶部290B、鍵記憶部210B、暗号文入力部220B、暗号文検証部230B、検証装置100B、復号文生成部260B、共通鍵記憶部270B、暗号化メッセージ入力部281B、メッセージ復号部282B、復号メッセージ出力部283Bを有する。
 暗号パラメータ記憶部290Bは、磁気ディスク装置920を用いて、公開された暗号パラメータを表わすデータを、あらかじめ記憶している。
 鍵記憶部210Bは、耐タンパ性のある記憶装置を用いて、あらかじめ鍵生成装置300Bが生成した秘密鍵を表わすデータを秘密裡に記憶している。
 暗号文入力部220Bは、CPU911を用いて、暗号文生成装置400Bから受信した暗号文cを入力する。暗号文入力部220Bは、CPU911を用いて、入力した暗号文cから、元uと元u’と元vとを表わすデータを取得する。暗号文入力部220Bは、RAM914を用いて、取得した元uと元u’と元vとを表わすデータを記憶する。
 暗号文検証部230Bは、ハッシュ値算出部231B、整数算出部232Bを有する。
 ハッシュ値算出部231Bは、CPU911を用いて、暗号パラメータ記憶部290Bが記憶した暗号パラメータのうちハッシュ関数Hを表わすデータと、暗号文入力部220Bが記憶した元uと元u’とを表わすデータとを入力する。ハッシュ値算出部231Bは、CPU911を用いて、入力したデータが表わすハッシュ関数Hと元uと元u’とに基づいて、ハッシュ関数Hにより、元uと元u’との順序対をハッシュしたハッシュ値を算出して、ハッシュ値αとする。ハッシュ値αは、1以上p-1以下の整数である。ハッシュ値算出部231Bは、RAM914を用いて、算出したハッシュ値αを表わすデータを記憶する。
 ハッシュ値算出部231Bが算出するハッシュ値αは、暗号文生成装置400Bのハッシュ値算出部424Bが算出したハッシュ値αと等しい。
 整数算出部232Bは、CPU911を用いて、暗号パラメータ記憶部290Bが記憶した暗号パラメータのうち位数pを表わすデータと、鍵記憶部210Bが記憶した秘密鍵のうち整数xと整数yとを表わすデータと、ハッシュ値算出部231Bが記憶したハッシュ値αとを入力する。整数算出部232Bは、CPU911を用いて、入力したデータが表わす位数pと整数xと整数yとハッシュ値αとに基づいて、整数yとハッシュ値αとの積と、整数xとの和を、位数pで割った余りを算出して、整数tとする。整数算出部232Bは、CPU911を用いて、算出した整数tを表わすデータを記憶する。
 暗号文入力部220Aが入力した暗号文cが正当な暗号文であれば、数24及び数25が成り立つ。したがって、u’=w・uであるか、v=t・uであるかを検証することにより、暗号文入力部220Aが入力した暗号文cが正当な暗号文であるか判定することができる。
 検証装置100Bは、u’=w・uであるか否かを判断し、v=t・uであるか否かを判断し、u’=w・uかつv=t・uである場合に、検証成功と判定する。
 判断の順序はどちらが先でもよいが、以下では、まず、u’=w・uであるか否かを判断し、次に、v=t・uであるか否かを判断するものとして、説明する。
 検証装置100Bは、実施の形態1で説明した検証装置100と同様の装置である。
 まず、検証装置100Bは、u’=w・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とに基づいて、e・w≡e(mod p)、|e|<√p、0<e<√pを満たす整数e及び整数eを算出する。なお、整数wは、暗号文復号装置200の秘密鍵の一部であり、暗号文入力部220Bが暗号文cを入力する前からわかっているので、検証装置100Bは、暗号文入力部220Bが暗号文cを入力する前に、CPU911を用いて、あらかじめ整数e及び整数eを算出し、耐タンパ性のある記憶装置を用いて記憶しておいてもよい。
 検証装置100Bは、CPU911を用いて、入力したデータが表わす元u’と元uと、算出した整数eと整数eとに基づいて、加法群Gにおける演算により、加法群Gの元a=e・u’-e・uを算出する。検証装置100Bは、CPU911を用いて、算出した元aに基づいて、元aが加法群Gの単位元であるか否かを判定する。検証装置100Bは、CPU911を用いて、元aが加法群Gの単位元である場合、第一の検証に成功したと判定し、元aが加法群Gの単位元でない場合、「検証失敗」と判定する。
 第一の検証に成功したと判定した場合、検証装置100Bは、v=t・uであるか否かを判定する。
 検証装置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とに基づいて、e・t≡e(mod p)、|e|<√p、0<e<√pを満たす整数e及び整数eを算出する。検証装置100Bは、CPU911を用いて、入力したデータが表わす元vと元uと、算出した整数eと整数eとに基づいて、加法群Gにおける演算により、加法群Gの元a=e・v-e・uを算出する。検証装置100Bは、CPU911を用いて、算出した元aに基づいて、元aが加法群Gの単位元であるか否かを判定する。検証装置100Bは、CPU911を用いて、元aが加法群Gの単位元である場合、第二の検証にも成功したと判定して「検証成功」と判定し、元aが加法群Gの単位元でない場合、「検証失敗」と判定する。
 検証装置100Bは、CPU911を用いて、検証結果を表わすデータを出力する。
 復号文生成部260Bは、検証装置100Bが「検証成功」と判定した場合に、共通鍵Kを生成する。
 復号文生成部260Bは、秘密元算出部261B、共通鍵算出部262Bを有する。
 秘密元算出部261Bは、CPU911を用いて、検証装置100Bが出力した検証結果を表わすデータを入力する。秘密元算出部261Bは、入力したデータが表わす検証結果が「検証成功」である場合、CPU911を用いて、暗号パラメータ記憶部290Bが記憶した暗号パラメータのうち加法群Gを表わすデータと、鍵記憶部210Bが記憶した秘密鍵のうち整数zを表わすデータと、暗号文入力部220Bが記憶した元uを表わすデータとを入力する。秘密元算出部261Bは、CPU911を用いて、入力したデータが表わす加法群Gと整数zと元uとに基づいて、加法群Gにおける演算により、元uをz回加算した元を算出して、元hとする。秘密元算出部261Bは、RAM914を用いて、算出した元hを表わすデータを記憶する。
 暗号文入力部220Aが入力した暗号文cが正当な暗号文であれば、数26より、秘密元算出部261Bが算出する元hは、暗号文生成装置400Bの秘密元算出部427Bが算出した元hと等しい。
 共通鍵算出部262Bは、CPU911を用いて、暗号パラメータ記憶部290Bが記憶した暗号パラメータのうち鍵導出関数KDFを表わすデータと、暗号文入力部220Bが記憶した元uを表わすデータと、秘密元算出部261Bが記憶した元hを表わすデータとを入力する。共通鍵算出部262Bは、CPU911を用いて、入力したデータが表わす鍵導出関数KDFと元uと元hとに基づいて、鍵導出関数KDFにより、元uと元hとの順序対からビット列を算出して、共通鍵Kとする。共通鍵算出部262Bは、RAM914を用いて、算出した共通鍵Kを記憶する。
 秘密元算出部261Bが算出した元hが、暗号文生成装置400Bの秘密元算出部427Bが算出した元hと等しいので、共通鍵算出部262Bが算出する共通鍵Kは、暗号文生成装置400Bの共通鍵算出部428Bが算出した共通鍵Kと等しい。
 したがって、暗号文生成装置400Bと暗号文復号装置200Bとが同じ共通鍵Kを共有できる。
 共通鍵記憶部270Bは、CPU911を用いて、共通鍵算出部262Bが記憶した共通鍵Kを入力する。共通鍵記憶部270Bは、RAM914を用いて、入力した共通鍵Kを記憶する。
 暗号化メッセージ入力部281Bは、CPU911を用いて、暗号文生成装置400Bから受信した暗号化メッセージCMを入力する。暗号化メッセージ入力部281Bは、磁気ディスク装置920を用いて、入力した暗号化メッセージCMを記憶する。
 メッセージ復号部282Bは、CPU911を用いて、共通鍵記憶部270Bが記憶した共通鍵Kと、暗号化メッセージ入力部281Bが記憶した暗号化メッセージCMとを入力する。メッセージ復号部282Bは、CPU911を用いて、入力した共通鍵Kにより、入力した暗号化メッセージCMを復号して、メッセージM’を生成する。メッセージ復号部282Bは、磁気ディスク装置920を用いて、生成したメッセージM’を記憶する。
 暗号文生成装置400Bと暗号文復号装置200Bとが同じ共通鍵Kを共有しているので、メッセージ復号部282Bが生成するメッセージM’は、暗号文生成装置400Bのメッセージ入力部440Bが入力したメッセージMと同じになる。
 復号メッセージ出力部283Bは、CPU911を用いて、メッセージ復号部282Bが記憶したメッセージM’を入力する。復号メッセージ出力部283Bは、CPU911を用いて、入力したメッセージM’を出力する。
 図20は、この実施の形態における暗号文復号装置200Aが暗号文cを復号する暗号文復号処理の流れの一例を示すフローチャート図である。
 ハッシュ値算出工程S731Bにおいて、ハッシュ値算出部231Bは、CPU911を用いて、暗号文入力部220Bが入力した元uと元u’とに基づいて、ハッシュ関数Hにより、元uと元u’との順序対をハッシュしたハッシュ値を算出し、ハッシュ値αとする。
 整数算出工程S732Bにおいて、整数算出部232Bは、CPU911を用いて、暗号パラメータ記憶部290Bが記憶した位数pと、鍵記憶部210Bが記憶した整数xと整数yと、ハッシュ値算出工程S731Bでハッシュ値算出部231Bが算出したハッシュ値αとに基づいて、整数yとハッシュ値αとの積と、整数xとの和を、位数pで割った余りを算出して、整数tとする。
 第一検証工程S733Bにおいて、検証装置100Bは、CPU911を用いて、鍵記憶部210が記憶した整数wと、暗号文入力部220Aが入力した元uと元u’とに基づいて、u’=w・uであるかを検証する。
 u’=w・uである場合、第二検証工程S734Bへ進む。
 u’≠w・uである場合、暗号文復号処理を終了する。
 第二検証工程S734Bにおいて、検証装置100Bは、CPU911を用いて、暗号文入力部220Bが入力した元uと元vと、整数算出工程S732Bで整数算出部232Bが算出した整数tとに基づいて、v=t・uであるかを検証する。
 v=t・uである場合、秘密元算出工程S735Bへ進む。
 v≠t・uである場合、暗号文復号処理を終了する。
 秘密元算出工程S735Bにおいて、秘密元算出部261Bは、CPU911を用いて、鍵記憶部210Bが記憶した整数zと、暗号文入力部220Bが入力した元uとに基づいて、加法群Gにおける演算により、元uをz回加算した元を算出して、元hとする。
 共通鍵算出工程S736において、共通鍵算出部262Bは、CPU911を用いて、暗号文入力部220Bが入力した元uと、秘密元算出工程S735Bで秘密元算出部261Bが算出した元hとに基づいて、鍵導出関数KDFにより、元uと元hとの順序対からビット列を算出して、共通鍵Kとする。
 その後、暗号文復号処理を終了し、算出した共通鍵Kにより、暗号化メッセージCMを復号する。
 この実施の形態における暗号文復号装置200Bは、更に、暗号パラメータ記憶部290Bを有する。
 上記暗号パラメータ記憶部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を上記復号文として出力する。
 この実施の形態における暗号文復号装置200Bによれば、検証装置100Bがu’=w・uかつv=t・uであるかを検証して検証成功と判定した場合に、復号文生成部260Bが復号文を生成するので、不正者に対して、暗号を解読する手がかりを与えるのを防ぐことができる。また、検証装置100Bがu’=w・uかつv=t・uであるかを検証する処理にかかる時間を短縮できるので、暗号文復号装置200Bが暗号文を復号する処理全体にかかる時間を短縮することができるという効果を奏する。
 この実施の形態における暗号文復号装置200Bは、更に、共通鍵記憶部270Bと、暗号化メッセージ入力部281Bと、メッセージ復号部282Bとを有する。
 上記共通鍵記憶部270Bは、上記記憶装置(RAM914)を用いて、上記復号文生成部260Bが出力した共通鍵Kを記憶する。
 上記暗号化メッセージ入力部281Bは、上記処理装置(CPU911)を用いて、暗号化メッセージCMを入力する。
 上記メッセージ復号部282Bは、上記処理装置(CPU911)を用いて、上記共通鍵記憶部270Bが記憶した共通鍵Kにより上記暗号化メッセージ入力部281Bが入力した暗号化メッセージCMを復号する。
 この実施の形態における暗号文復号装置200Bによれば、暗号文cを介して暗号文生成装置400Bと共有した共通鍵Kにより、メッセージ復号部282Bが暗号化メッセージCMを復号するので、暗号化メッセージCMの生成・復号には、高速に処理が可能な共通鍵暗号方式を用いることができるという効果を奏する。
 以上説明した暗号文復号装置200B(公開鍵暗号復号装置)は、暗号文の一部である乗法群または加法群の元u及び元u’と、秘密鍵の一部である整数wとの間に、関係u’=u(乗法的記述)またはu’=w・u(加法的記述)が成り立つかを検証するため、
 指数部(整数w)を分割する装置(整数分割部110)と、
 分割された指数(整数e及び整数e)を用いて、乗法群における二基底指数べき乗算、または(超)楕円曲線上の点がなす群などの加法群における二基底スカラー倍算をして、値u’e1・u-e2またはe・u’-e・uを計算する装置(検証値算出部130)と、
 その値が乗法群の単位元1または加法群の単位元0に等しいかどうか判定する装置(検証判定部150)とを有する。
 以上説明した暗号文復号装置200B(公開鍵暗号復号装置)は、暗号文の一部(元u及び元u’)から算出したハッシュ値αに基づいて計算した指数(整数)tと、暗号文の一部である元u及び元vとの間に、関係v=u(乗法的記述)またはt・u=v(加法的記述)が成り立つかを検証するため、
 指数部(整数t)を分割する装置(整数分割部110)と、
 分割された指数(整数e及び整数e)を用いて、乗法群における二基底指数べき乗算、または(超)楕円曲線上の点がなす群などの加法群における二基底スカラー倍算をして、値ve1・u-e2またはe・v-e・uを計算する装置(検証値算出部130)と、
 その値が乗法群の単位元1または加法群の単位元0に等しいかどうか判定する装置(検証判定部150)とを有する。
 以上説明した公開鍵暗号システム820Bは、Cramer-Shoup公開鍵暗号をもとに標準化された鍵カプセル化方式のACE-KEM暗号システムである。
 公開鍵暗号システム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を用いて、暗号文C=(u,u’,v)と、鍵Kとを出力する。
 暗号文復号装置200B(復号装置)は、CPU911を用いて、秘密鍵(w,x,y,z)と、暗号文C=(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)を計算して、出力する。
 以上説明した検証装置100Bは、このようなACE-KEM暗号システムにおいて、w・u=u’とt・u=vが成立するかどうかをチェックする処理を、高速化する。
 検証装置100Bでは、整数分割部110が、CPU911を用いて、wとpとを入力して、e・w≡e(mod p)となる整数e,eを算出し、検証値算出部130が、CPU911を用いて、群Gにおける二基底スカラー倍算により、群Gの元U=e・u-e・u’を算出し、検証判定部150が、CPU911を用いて、元Uが群Gの単位元Oであるかをチェックすることにより、w・u=u’であるかを高速にチェックする。また、整数分割部110が、CPU911を用いて、tとpとを入力して、e・t≡e(mod p)となる整数e,eを算出し、検証値算出部130が、CPU911を用いて、群Gにおける二基底スカラー倍算により、群Gの元V=e・u-e・vを算出し、検証判定部150が、CPU911を用いて、元Vが群Gの単位元Oであるかどうかをチェックすることにより、t・u=vが成立するかを高速にチェックする。
 実施の形態4.
 実施の形態4について、図21~図27を用いて説明する。
 図21は、この実施の形態におけるIDベース公開鍵暗号システム820Cの全体構成の一例を示すシステム構成図である。
 IDベース公開鍵暗号システム820Cは、実施の形態2で説明したIDベース公開鍵暗号システム820Aと同様、暗号文復号装置200Cを識別する識別データを、暗号文復号装置200Cの公開鍵として利用する暗号通信システムである。
 IDベース公開鍵暗号システム820Cは、暗号パラメータ設定装置810C、鍵生成装置300C、暗号文生成装置400C、暗号文復号装置200Cを有する。
 暗号パラメータ設定装置810Cは、IDベース公開鍵暗号システム820Cで利用される暗号パラメータを定める。暗号パラメータ設定装置810Cが定める暗号パラメータは、IDベース公開鍵暗号システム820Cの利用者に公開される。暗号パラメータ設定装置810Cが定める暗号パラメータには、例えば、位数p、加法群G、加法群Gの元g、加法群G’、加法群G’の元g’、乗法群G、ペアリングe、ハッシュ関数H、ハッシュ関数H’、ハッシュ関数H”などがある。
 位数pは、素数である。
 加法群Gの位数は、pである。元gは、加法群Gの生成元である。
 加法群G’の位数は、加法群Gと同じpである。元g’は、加法群G’の生成元である。
 乗法群Gの位数は、加法群G及び加法群G’と同じpである。
 ペアリングeは、加法群Gの元と加法群G’の元との組を、乗法群Gの元(ペアリング値)へ写す写像である。ペアリングeは、双線形を有する。また、加法群Gの元gと加法群G’の元g’とのペアリング値e(g,g’)は、乗法群Gの単位元ではない。
 ハッシュ関数Hは、任意の長さのビット列から、1以上p-1以下の整数を生成するハッシュ関数である。
 ハッシュ関数H’は、乗法群Gの元から、所定の長さのビット列を生成するハッシュ関数である。
 ハッシュ関数H”は、乗法群Gの元と、所定の長さのビット列と、二つの加法群Gの元の順序対との組から、1以上p-1以下の整数を生成するハッシュ関数である。
 なお、加法群G’の元g’は、鍵生成装置300Cだけが使用するので、他の利用者に対して公開しなくてもよい。
 また、これらの暗号パラメータがあらかじめ定められている場合には、暗号パラメータ設定装置810Cは、これらの暗号パラメータを定めなくてもよい。
 また、暗号パラメータ設定装置810Cは、マスター鍵と、マスター鍵に基づいて生成した公開パラメータを生成する。暗号パラメータ設定装置810Cが生成するマスター鍵は、三つの整数α、β、γを含む。暗号パラメータ設定装置810Cが生成する公開パラメータは、加法群Gの元g、加法群Gの元g、乗法群Gの元vを含む。暗号パラメータ設定装置810Cが生成したマスター鍵は、鍵生成装置300Cに対して秘密裡に通知される。暗号パラメータ設定装置810Cが生成した公開パラメータは、IDベース公開鍵暗号システム820Cの利用者に公開される。
 鍵生成装置300Cは、暗号パラメータ設定装置810Cから通知されたマスター鍵を秘密裡に保持する。鍵生成装置300Aは、公開された暗号パラメータと、公開された暗号文復号装置200Cの識別データIDと、保持したマスター鍵とに基づいて、暗号文復号装置200Cの秘密鍵を生成する。鍵生成装置300Cが生成する秘密鍵は、加法群G’の元dと、加法群G’の元dとを含む。鍵生成装置300Aが生成した秘密鍵は、暗号文復号装置200Cに対して秘密裡に通知される。
 暗号文生成装置400Cは、公開された暗号パラメータ、公開パラメータ、暗号文復号装置200Cの識別データIDに基づいて、メッセージMを暗号化して、暗号文Cを生成する。暗号文生成装置400Cは、生成した暗号文Cを、暗号文復号装置200Cに対して送信する。
 暗号文復号装置200Cは、鍵生成装置300Cが生成した秘密鍵を秘密裡に保持する。暗号文復号装置200Cは、暗号文生成装置400Cが送信した暗号文Cを受信する。暗号文復号装置200Cは、公開された暗号パラメータと、保持した秘密鍵とに基づいて、受信した暗号文Cを復号して、メッセージMと同じメッセージM’を生成する。
 なお、暗号パラメータ設定装置810C、鍵生成装置300C、暗号文生成装置400C、暗号文復号装置200Cの外観、ハードウェア資源は、実施の形態1で説明した暗号文復号装置200の外観、ハードウェア資源と同様である。
 図22は、この実施の形態における暗号パラメータ設定装置810Cの一部の機能ブロックの構成の一例を示すブロック構成図である。
 暗号パラメータ設定装置810Cは、暗号パラメータ記憶部819C、マスター鍵生成部812C、公開パラメータ生成部813C、マスター鍵出力部814C、公開パラメータ出力部815Cを有する。
 暗号パラメータ記憶部819Cは、磁気ディスク装置920を用いて、公開した暗号パラメータを表わすデータを記憶する。
 マスター鍵生成部812Cは、暗号パラメータ記憶部819Cが記憶した暗号パラメータに基づいて、マスター鍵を生成する。
 マスター鍵生成部812Cは、三つの秘密乱数生成部816C~818Cを有する。
 三つの秘密乱数生成部816C~818Cは、それぞれ、CPU911を用いて、暗号パラメータ記憶部819Cが記憶した暗号パラメータのうち位数pを表わすデータを入力する。三つの秘密乱数生成部816C~818Cは、それぞれ、CPU911を用いて、入力したデータが表わす位数pに基づいて、1以上p-1以下の整数をランダムに生成する。
 第一の秘密乱数生成部816Cは、生成した整数を整数αとし、RAM914を用いて、生成した整数αを表わすデータを記憶する。
 第二の秘密乱数生成部817Cは、生成した整数を整数βとし、RAM914を用いて、生成した整数βを表わすデータを記憶する。
 第三の秘密乱数生成部818Cは、生成した整数を整数γとし、RAM914を用いて、生成した整数γを表わすデータを記憶する。
 公開パラメータ生成部813Cは、暗号パラメータ記憶部819Cが記憶した暗号パラメータと、マスター鍵生成部812Cが生成したマスター鍵とに基づいて、公開パラメータを生成する。
 公開パラメータ生成部813Cは、第一公開元算出部831C、公開ペアリング値算出部832C、第二公開元算出部833Cを有する。
 第一公開元算出部831Cは、CPU911を用いて、暗号パラメータ記憶部819Cが記憶した暗号パラメータのうち加法群Gと元gとを表わすデータと、秘密乱数生成部816Cが記憶した整数αを表わすデータとを入力する。第一公開元算出部831Cは、CPU911を用いて、入力したデータが表わす加法群Gと元gと整数αとに基づいて、加法群Gにおける演算により、元gをα回加算した元を算出して、元gとする。第一公開元算出部831Cは、RAM914を用いて、算出した元gを表わすデータを記憶する。
 公開ペアリング値算出部832Cは、CPU911を用いて、暗号パラメータ記憶部819Cが記憶した暗号パラメータのうち元gと元g’とペアリングeとを表わすデータと、秘密乱数生成部816Cが記憶した整数αを表わすデータと、秘密乱数生成部817Cが記憶した整数βを表わすデータとを入力する。公開ペアリング値算出部832Cは、CPU911を用いて、入力したデータが表わす元gと元g’とペアリングeとに基づいて、ペアリングeにより、元gと元g’とのペアリング値e(g,g’)を算出する。ペアリング値e(g,g’)は、乗法群Gの元である。公開ペアリング値算出部832Cは、CPU911を用いて、入力したデータが表わす整数αと整数βと、算出したペアリング値e(g,g’)とに基づいて、乗法群Gにおける演算により、ペアリング値e(g,g’)を、整数αと整数βとの積αβ回乗算した元を算出して、元vとする。公開ペアリング値算出部832Cは、RAM914を用いて、算出した元vを表わすデータを記憶する。
 第二公開元算出部833Cは、CPU911を用いて、暗号パラメータ記憶部819Cが記憶した暗号パラメータのうち加法群Gと元gとを表わすデータと、秘密乱数生成部818Cが記憶した整数γを表わすデータとを入力する。第二公開元算出部833Cは、CPU911を用いて、入力したデータが表わす加法群Gと元gと整数γとに基づいて、加法群Gにおける演算により、元gをγ回加算した元を算出して、元gとする。第二公開元算出部833Cは、RAM914を用いて、算出した元gを表わすデータを記憶する。
 マスター鍵出力部814Cは、CPU911を用いて、三つの秘密乱数生成部816C~818Cが記憶した整数αと整数βと整数γとを表わすデータを入力する。マスター鍵出力部814Cは、CPU911を用いて、入力した整数αと整数βと整数γとを表わすデータを、マスター鍵として出力する。
 マスター鍵出力部814Cが出力したマスター鍵は、鍵生成装置300Cに対して秘密裡に通知される。
 公開パラメータ出力部815Cは、CPU911を用いて、第一公開元算出部831Cが記憶した元gを表わすデータと、公開ペアリング値算出部832Cが記憶した元vを表わすデータと、第二公開元算出部833Cが記憶した元gを表わすデータとを入力する。公開パラメータ出力部815Cは、CPU911を用いて、入力した元gと元gと元vとを表わすデータを、公開パラメータとして出力する。
 公開パラメータ出力部815Cが出力した公開パラメータは、IDベース公開鍵暗号システム820Cの利用者に公開される。
 図23は、この実施の形態における鍵生成装置300Cの機能ブロックの構成の一例を示すブロック構成図である。
 鍵生成装置300Cは、暗号パラメータ記憶部390C、マスター鍵記憶部330C、識別入力部340C、秘密鍵生成部350C、秘密鍵出力部360Cを有する。
 暗号パラメータ記憶部390Cは、磁気ディスク装置920を用いて、公開された暗号パラメータを表わすデータを、あらかじめ記憶している。
 マスター鍵記憶部330Cは、耐タンパ性のある記憶装置を用いて、暗号パラメータ設定装置810Cから通知されたマスター鍵を秘密裡に記憶している。
 識別入力部340Cは、CPU911を用いて、秘密鍵を生成すべき暗号文復号装置200Cについて、暗号文復号装置200Cを識別する識別データである任意の長さのビット列IDを入力する。識別入力部340Cは、RAM914を用いて、入力したビット列IDを記憶する。
 秘密鍵生成部350Cは、暗号パラメータ記憶部390Cが記憶した暗号パラメータと、マスター鍵記憶部330Cが記憶したマスター鍵と、識別入力部340Cが入力したビット列IDとに基づいて、暗号文復号装置200Cの秘密鍵を生成する。
 秘密鍵生成部350Cは、秘密乱数生成部351C、第一秘密元算出部352C、第二秘密元算出部353Cを有する。
 秘密乱数生成部351Cは、CPU911を用いて、暗号パラメータ記憶部390Cが記憶した暗号パラメータのうち位数pを表わすデータを入力する。秘密乱数生成部351Cは、CPU911を用いて、入力したデータが表わす位数pに基づいて、1以上p-1以下の整数をランダムに生成し、秘密乱数rとする。秘密乱数生成部351Cは、RAM914を用いて、生成した秘密乱数rを表わすデータを記憶する。
 第一秘密元算出部352Cは、CPU911を用いて、暗号パラメータ記憶部390Cが記憶した暗号パラメータのうち加法群G’と元g’とハッシュ関数Hとを表わすデータと、マスター鍵記憶部330Cが記憶したマスター鍵のうち整数αと整数βと整数γとを表わすデータと、識別入力部340Cが記憶したビット列IDと、秘密乱数生成部351Cが記憶した秘密乱数rを表わすデータとを入力する。第一秘密元算出部352Cは、CPU911を用いて、入力したデータが表わすハッシュ関数Hと、入力したビット列IDとに基づいて、ハッシュ関数Hにより、ビット列IDをハッシュしたハッシュ値H(ID)を算出する。第一秘密元算出部352Cは、CPU911を用いて、入力したデータが表わす整数αと整数βと整数γと秘密乱数rと、算出したハッシュ値H(ID)とに基づいて、整数αとハッシュ値H(ID)との積に整数γを加算した整数(α・H(ID)+γ)と秘密乱数rとの積と、整数αと整数βとの積とを加算した整数{α・β+[α・H(ID)+γ]・r}を算出する。第一秘密元算出部352Cは、CPU911を用いて、入力したデータが表わす加法群G’と元g’と、算出した整数{α・β+[α・H(ID)+γ]・r}とに基づいて、加法群G’における演算により、元g’を{α・β+[α・H(ID)+γ]・r}回加算した元を算出して、秘密元dとする。第一秘密元算出部352Cは、RAM914を用いて、算出した秘密元dを表わすデータを記憶する。
 第二秘密元算出部353Cは、CPU911を用いて、暗号パラメータ記憶部390Cが記憶した暗号パラメータのうち加法群G’と元g’とを表わすデータと、秘密乱数生成部351Cが記憶した秘密乱数rを表わすデータとを入力する。第二秘密元算出部353Cは、CPU911を用いて、入力したデータが表わす加法群G’と元g’と秘密乱数rとに基づいて、加法群G’における演算により、元g’をr回加算した元を算出して、秘密元dとする。第二秘密元算出部353Cは、RAM914を用いて、算出した秘密元dを表わすデータを記憶する。
 秘密鍵出力部360Cは、CPU911を用いて、第一秘密元算出部352Cが記憶した秘密元dを表わすデータと、第二秘密元算出部353Cが記憶した秘密元dを表わすデータとを入力する。秘密鍵出力部360Cは、CPU911を用いて、入力した秘密元dと秘密元dとを表わすデータを、暗号文復号装置200Cの秘密鍵として出力する。
 秘密鍵出力部360Cが出力した暗号文復号装置200Cの秘密鍵は、暗号文復号装置200Cに対して秘密裡に通知される。
 図24は、この実施の形態における暗号文生成装置400Cの機能ブロックの構成の一例を示すブロック構成図である。
 暗号文生成装置400Cは、暗号パラメータ記憶部490C、識別記憶部410C、メッセージ入力部440C、メッセージ暗号化部450C、暗号文出力部470Cを有する。
 暗号パラメータ記憶部490Cは、磁気ディスク装置920を用いて、公開された暗号パラメータ(公開パラメータを含む)を、あらかじめ記憶している。
 識別記憶部410Cは、磁気ディスク装置920を用いて、暗号文の送信相手である暗号文復号装置200Cの識別データであるビット列IDを記憶している。
 メッセージ入力部440Cは、CPU911を用いて、暗号文復号装置200Cに対して送信したいメッセージである所定の長さのビット列Mを入力する。なお、暗号文復号装置200Cに対して送信したいメッセージの長さが所定の長さ以上である場合、メッセージ入力部440Cは、メッセージを所定の長さに分割して、複数のビット列Mとしたものを入力する。メッセージ入力部440Cは、RAM914を用いて、入力したビット列Mを記憶する。
 メッセージ暗号化部450Cは、暗号パラメータ記憶部490Cが記憶した暗号パラメータ(公開パラメータを含む)と、識別記憶部410Cが記憶したビット列IDとに基づいて、メッセージ入力部440Cが入力したビット列Mを暗号化して、暗号文Cを生成する。
 メッセージ暗号化部450Cは、秘密乱数生成部451C、ペアリング値算出部452C、暗号ビット列算出部453C、第一暗号元算出部454C、第二暗号元算出部455C、暗号整数算出部456Cを有する。
 秘密乱数生成部451Cは、CPU911を用いて、暗号パラメータ記憶部490Cが記憶した暗号パラメータのうち位数pを表わすデータを入力する。秘密乱数生成部451Cは、CPU911を用いて、入力したデータが表わす位数pに基づいて、1以上p-1以下の整数をランダムに生成して、秘密乱数sとする。秘密乱数生成部451Cは、RAM914を用いて、生成した秘密乱数sを表わすデータを記憶する。
 ペアリング値算出部452Cは、CPU911を用いて、暗号パラメータ記憶部490Cが記憶した暗号パラメータのうち乗法群Gと元vとを表わすデータと、秘密乱数生成部451Cが記憶した秘密乱数sを表わすデータとを入力する。ペアリング値算出部452Cは、CPU911を用いて、入力したデータが表わす乗法群Gと元vと秘密乱数sとに基づいて、乗法群Gにおける演算により、元vをs回乗算した元を算出して、元kとする。ペアリング値算出部452Cは、RAM914を用いて、算出した元kを表わすデータを記憶する。
 暗号ビット列算出部453Cは、CPU911を用いて、暗号パラメータ記憶部490Cが記憶した暗号パラメータのうちハッシュ関数H’を表わすデータと、メッセージ入力部440Cが記憶したビット列Mと、ペアリング値算出部452Cが記憶した元kを表わすデータとを入力する。暗号ビット列算出部453Cは、CPU911を用いて、入力したデータが表わすハッシュ関数H’と元kとに基づいて、ハッシュ関数H’により、元kをハッシュしたハッシュ値H’(k)を算出する。ハッシュ値H’(k)は、所定の長さのビット列である。暗号ビット列算出部453Cは、CPU911を用いて、入力したビット列Mと、算出したハッシュ値H’(k)とに基づいて、ビット列Mとハッシュ値H(k)との間のビットごとの排他的論理和をとり、ビット列cとする。暗号ビット列算出部453Cは、RAM914を用いて、算出したビット列cを記憶する。
 第一暗号元算出部454Cは、CPU911を用いて、暗号パラメータ記憶部490Cが記憶した暗号パラメータのうち加法群Gと元gとを表わすデータと、秘密乱数生成部451Cが記憶した秘密乱数sを表わすデータとを入力する。第一暗号元算出部454Cは、CPU911を用いて、入力したデータが表わす加法群Gと元gと秘密乱数sとに基づいて、加法群Gにおける演算により、元gをs回加算した元を算出して、元cとする。第一暗号元算出部454Cは、RAM914を用いて、算出した元cを表わすデータを記憶する。
 第二暗号元算出部455Cは、CPU911を用いて、暗号パラメータ記憶部490Cが記憶した暗号パラメータのうち加法群Gとハッシュ関数Hと元gと元gとを表わすデータと、識別記憶部410Cが記憶したビット列IDと、秘密乱数生成部451Cが記憶した秘密乱数sを表わすデータとを入力する。第二暗号元算出部455Cは、CPU911を用いて、入力したデータが表わすハッシュ関数Hと、入力したビット列IDとに基づいて、ハッシュ関数Hにより、ビット列IDをハッシュしたハッシュ値H(ID)を算出する。ハッシュ値H(ID)は、1以上p-1以下の整数である。第二暗号元算出部455Cは、CPU911を用いて、入力したデータが表わす加法群Gと元gと元gと秘密乱数sと、算出したハッシュ値H(ID)とに基づいて、加法群Gにおける演算により、元gをハッシュ値H(ID)と秘密乱数sとの積H(ID)・s回加算した元と、元gをs回加算した元とを加算した元を算出して、元cとする。第二暗号元算出部455Cは、RAM914を用いて、算出した元cを表わすデータを記憶する。
 第二暗号元算出部455Cは算出する元cは、g=α・g、g=γ・gであるから、
Figure JPOXMLDOC01-appb-M000027
 暗号整数算出部456Cは、CPU911を用いて、暗号パラメータ記憶部490Cが記憶した暗号パラメータのうち位数pとハッシュ関数H”とを表わすデータと、秘密乱数生成部451Cが記憶した秘密乱数sを表わすデータと、ペアリング値算出部452Cが記憶した元kを表わすデータと、暗号ビット列算出部453Cが記憶したビット列cと、第一暗号元算出部454Cが記憶した元cを表わすデータと、第二暗号元算出部455Cが記憶した元cを表わすデータとを入力する。暗号整数算出部456Cは、CPU911を用いて、入力したデータが表わすハッシュ関数H”と元kと元cと元cと、入力したビット列cとに基づいて、ハッシュ関数H”により、元kと、ビット列cと、元cと元cとの順序対とをハッシュしたハッシュ値H”(k,c,c,c)を算出する。ハッシュ値H”(k,c,c,c)は、1以上p-1以下の整数である。暗号整数算出部456Cは、CPU911を用いて、入力したデータが表わす位数pと秘密乱数sと、算出したハッシュ値H”(k,c,c,c)とに基づいて、秘密乱数sとハッシュ値H”(k,c,c,c)との和を、位数pで割った余りを算出して、整数tとする。暗号整数算出部456Cは、CPU911を用いて、算出した整数tを表わすデータを記憶する。
 暗号文出力部470Cは、CPU911を用いて、暗号ビット列算出部453Cが記憶したビット列cと、第一暗号元算出部454Cが記憶した元cを表わすデータと、第二暗号元算出部455Cが記憶した元cを表わすデータと、暗号整数算出部456Cが記憶した整数tを表わすデータとを入力する。暗号文出力部470Cは、CPU911を用いて、入力したビット列cと、入力した元cと元cと整数tとを表わすデータとを含む暗号文Cを生成する。暗号文出力部470Cは、CPU911を用いて、生成した暗号文Cを出力する。
 暗号文出力部470Cが出力した暗号文Cは、暗号文復号装置200Cに対して送信される。
 図25は、この実施の形態における暗号文復号装置200Cの機能ブロックの構成の一例を示すブロック構成図である。
 暗号文復号装置200Cは、暗号パラメータ記憶部290C、鍵記憶部210C、暗号文入力部220C、暗号文検証部230C、検証装置100C、復号文生成部260C、復号メッセージ出力部283Cを有する。
 暗号パラメータ記憶部290Cは、磁気ディスク装置920を用いて、公開された暗号パラメータを表わすデータを、あらかじめ記憶している。
 鍵記憶部210Cは、耐タンパ性のある記憶装置を用いて、あらかじめ鍵生成装置300Cが生成した秘密鍵を秘密裡に記憶している。
 暗号文入力部220Cは、CPU911を用いて、暗号文生成装置400Cから受信した暗号文Cを入力する。暗号文入力部220Cは、CPU911を用いて、入力した暗号文Cに基づいて、ビット列cと、元cと元cと整数tとを表わすデータとを取得する。暗号文入力部220Cは、RAM914を用いて、取得したビット列cと、元cと元cと整数tとを表わすデータとを記憶する。
 暗号文検証部230Cは、暗号パラメータ記憶部290Cが記憶した暗号パラメータと、鍵記憶部210Cが記憶した秘密鍵と、暗号文入力部220Cが入力した暗号文Cとに基づいて、検証装置100Cに入力するデータを生成する。
 暗号文検証部230Cは、ペアリング値算出部231C、整数算出部232Cを有する。
 ペアリング値算出部231Cは、CPU911を用いて、暗号パラメータ記憶部290Cが表わす暗号パラメータのうち乗法群Gとペアリングeとを表わすデータと、鍵記憶部210Cが記憶した秘密鍵のうち秘密元dと秘密元dとを表わすデータと、暗号文入力部220Cが記憶した元cと元cとを表わすデータとを入力する。ペアリング値算出部231Cは、CPU911を用いて、入力したデータが表わすペアリングeと元cと秘密元dとに基づいて、ペアリングeにより、元cと秘密元dとのペアリング値を算出して、ペアリング値kとする。ペアリング値kは、乗法群Gの元である。ペアリング値算出部231Cは、CPU911を用いて、入力したデータが表わすペアリングeと元cと秘密元dとに基づいて、ペアリングeにより、元cと秘密元dとのペアリング値を算出して、ペアリング値kとする。ペアリング値kは、乗法群Gの元である。ペアリング値算出部231Cは、CPU911を用いて、入力したデータが表わす乗法群Gと、算出したペアリング値kとペアリング値kとに基づいて、乗法群Gにおける演算により、ペアリング値kと、ペアリング値kの逆元とを乗算した元を算出して、元kとする。ペアリング値算出部231Cは、算出した元kを表わすデータを記憶する。
 ペアリング値算出部231Cが算出した元kは、ペアリングeの双線形より、
Figure JPOXMLDOC01-appb-M000028
 したがって、暗号文入力部220Cが入力した暗号文Cが正当な暗号文であれば、ペアリング値算出部231Cが算出する元kは、暗号文生成装置400Cのペアリング値算出部452Cが算出した元kと等しい。
 整数算出部232Cは、CPU911を用いて、暗号パラメータ記憶部290Cが記憶した暗号パラメータのうち位数pとハッシュ関数H”とを表わすデータと、暗号文入力部220Cが記憶したビット列cと、元cと元cと整数tとを表わすデータと、ペアリング値算出部231Cが記憶した元kを表わすデータとを入力する。整数算出部232Cは、CPU911を用いて、入力したデータが表わすハッシュ関数H”とビット列cと元cと元cと、入力した元kとに基づいて、ハッシュ関数H”により、元kとビット列cと、元cと元cとの順序対とをハッシュしたハッシュ値H”(k,c,c,c)を算出する。ハッシュ値H”(k,c,c,c)は、1以上p-1以下の整数である。整数算出部232Cは、CPU911を用いて、入力したデータが表わす位数pと整数tと、算出したハッシュ値H”(k,c,c,c)とに基づいて、整数tからハッシュ値H”(k,c,c,c)を減算した整数を、位数pで割った余りを算出して、整数sとする。
 ペアリング値算出部231Cが算出した元kが、暗号文生成装置400Cのペアリング値算出部452Cが算出した元kと等しければ、整数算出部232Cが算出する整数sは、秘密乱数生成部451Cが生成した秘密乱数sと等しい。
 検証装置100Cは、k=v であるか及びc=s・gであるかを判断し、k=v かつc=s・gである場合に、検証成功と判定する。
 検証装置100Cは、検証結果を表わすデータを出力する。
 復号文生成部260Cは、CPU911を用いて、検証装置100Cが出力した検証結果を表わすデータを入力する。復号文生成部260Cは、入力したデータが表わす検証結果が「検証成功」である場合、CPU911を用いて、暗号パラメータ記憶部290Cが記憶した暗号パラメータのうちハッシュ関数H’を表わすデータと、暗号文入力部220Cが記憶したビット列cと、ペアリング値算出部231Cが記憶した元kを表わすデータとを入力する。復号文生成部260Cは、CPU911を用いて、入力したデータが表わすハッシュ関数H’と元kとに基づいて、ハッシュ関数H’により、元kをハッシュしたハッシュ値H’(k)を算出する。ハッシュ値H’(k)は、所定の長さのビット列である。復号文生成部260Cは、CPU911を用いて、入力したビット列cと、算出したハッシュ値H’(k)とに基づいて、ビット列cとハッシュ値H’(k)との間のビットごとの排他的論理和をとり、ビット列M’とする。復号文生成部260Cは、RAM914を用いて、算出したビット列M’を記憶する。
 暗号文入力部220Cが入力した暗号文cが正当な暗号文であれば、ペアリング値算出部231Cが算出した元kが、暗号文生成装置400Aのペアリング値算出部452Cが算出した元kと等しいので、復号文生成部260Cが算出するビット列M’は、暗号文生成装置400Cのメッセージ入力部440Cが入力したビット列Mと等しい。
 復号メッセージ出力部283Cは、CPU911を用いて、復号文生成部260Cが記憶したビット列M’を入力する。復号メッセージ出力部283Cは、CPU911を用いて、入力したビット列M’を、復号されたメッセージとして出力する。
 図26は、この実施の形態における検証装置100Cの内部ブロックの構成の一例を示す詳細ブロック図である。
 検証装置100Cは、整数分割部110C、二つの検証値算出部130C,130C、検証判定部150Cを有する。
 検証装置100Cは、実施の形態1で説明した検証装置100と同様の装置であるが、加法群Gにおける演算と、乗法群Gにおける演算とをするため、二つの検証値算出部130C,130Cを有する。
 整数分割部110Cは、CPU911を用いて、暗号パラメータ記憶部290Cが記憶した暗号パラメータのうち位数pを表わすデータを、実施の形態1で説明した位数pを表わすデータとして入力する。
 整数分割部110Cは、CPU911を用いて、整数算出部232Cが記憶した整数sを表わすデータを、実施の形態1で説明した整数eを表わすデータとして入力する。
 整数分割部110Cは、CPU911を用いて、入力したデータが表わす位数pと整数sとに基づいて、e・s≡e(mod p)、|e|<√p、0<e<√pを満たす整数e及び整数eを算出する。
 整数分割部110Cは、RAM914を用いて、算出した整数e及び整数eを表わすデータを記憶する。
 検証値算出部130Cは、加法群Gにおける演算により、加法群Gの元a=e・c-e・gを算出する。
 検証値算出部130Cは、CPU911を用いて、暗号パラメータ記憶部290Cが記憶した暗号パラメータのうち元gを表わすデータを、実施の形態1で説明した元sを表わすデータとして入力する。
 検証値算出部130Cは、CPU911を用いて、暗号文入力部220Cが記憶した元cを表わすデータを、実施の形態1で説明した元hを表わすデータとして入力する。
 検証値算出部130Cは、CPU911を用いて、整数分割部110Cが記憶した整数eと整数eとを表わすデータを入力する。
 検証値算出部130Cは、CPU911を用いて、入力したデータが表わす元gと元cと整数eと整数eとに基づいて、加法群Gにおける演算により、元cをe回加算した元と、元gをe回加算した元の逆元とを加算した元を算出して、元aとする。
 検証値算出部130Cは、RAM914を用いて、算出した元aを表わすデータを記憶する。
 検証値算出部130Cは、乗法群Gにおける演算により、乗法群Gの元a’=ke1・v -e2を算出する。なお、乗法群Gにおける演算を加法的に記述すれば、a’=e・k-e・vであるから、群演算の具体的計算方法が異なる点を除けば、検証値算出部130Cが行う処理は、検証値算出部130Cが行う処理と実質的に同一である。
 検証値算出部130Cは、CPU911を用いて、暗号パラメータ記憶部290Cが記憶した暗号パラメータのうち元vを表わすデータを、実施の形態1で説明した元sを表わすデータとして入力する。
 検証値算出部130Cは、CPU911を用いて、ペアリング値算出部231Cが記憶した元kを表わすデータを、実施の形態1で説明した元hを表わすデータとして入力する。
 検証値算出部130Cは、CPU911を用いて、整数分割部110Cが記憶した整数eと整数eとを表わすデータを入力する。
 検証値算出部130Cは、CPU911を用いて、入力したデータが表わす元vと元kと整数eと整数eとに基づいて、乗法群Gにおける演算により、元kをe回乗算した元と、元vをe回乗算した元の逆元とを加算した元を算出して、元a’とする。
 検証値算出部130Cは、RAM914を用いて、算出した元a’を表わすデータを記憶する。
 検証判定部150Cは、CPU911を用いて、検証値算出部130Cが記憶した元aを表わすデータと、検証値算出部130Cが記憶した元a’を表わすデータとを入力する。検証判定部150Cは、CPU911を用いて、入力したデータが表わす元aに基づいて、元aが加法群Gの単位元であるか否かを判定する。元aが加法群Gの単位元であれば、c=s・gなので、検証判定部150Cは、CPU911を用いて、第一の検証に成功したと判定する。検証値算出部130Cは、CPU911を用いて、入力したデータが表わす元a’に基づいて、元a’が乗法群Gの単位元であるか否かを判定する。元a’が乗法群Gの単位元であれば、k=v なので、検証判定部150Cは、CPU911を用いて、第二の検証に成功したと判定する。検証判定部150Cは、第一の検証に成功したと判定し、かつ、第二の検証に成功したと判定した場合、「検証成功」と判定し、それ以外の場合、「検証失敗」と判定する。
 検証判定部150Cは、CPU911を用いて、検証結果を表わすデータを出力する。
 図27は、この実施の形態における暗号文復号装置200Cが暗号文Cを復号する暗号文復号処理の流れの一例を示すフローチャート図である。
 ペアリング値算出工程S731Cにおいて、ペアリング値算出部231Cは、CPU911を用いて、鍵記憶部210Cが記憶した秘密元dと、暗号文入力部220Cが入力した元cとに基づいて、ペアリングeにより、元cと元dとのペアリング値k=e(c,d)を算出する。ペアリング値算出部231Cは、CPU911を用いて、鍵記憶部210Cが記憶した秘密元dと、暗号文入力部220Cが入力した元cとに基づいて、ペアリングeにより、元cと元dとのペアリング値k=e(c,d)を算出する。ペアリング値算出部231Cは、CPU911を用いて、算出したペアリング値kとペアリング値kとに基づいて、乗法群Gにおける演算により、ペアリング値kと、ペアリング値kの逆元とを乗算した元k=k/kを算出する。
 整数算出工程S732Cにおいて、整数算出部232Cは、CPU911を用いて、暗号文入力部220Cが入力したビット列cと元cと元cと、ペアリング値算出工程S731Cでペアリング値算出部231Cが算出した元kとに基づいて、ハッシュ関数H”により、元kと、ビット列cと、元cと元cとの順序対とをハッシュしたハッシュ値H”(k,c,c,c)を算出する。整数算出部232Cは、CPU911を用いて、暗号パラメータ記憶部290Cが記憶した位数pと、暗号文入力部220が入力した整数tと、算出したハッシュ値H”(k,c,c,c)とに基づいて、整数tからハッシュ値H”(k,c,c,c)を減算した整数を、位数pで割った余りを算出し、整数sとする。
 整数分割工程S733Cにおいて、整数分割部110Cは、CPU911を用いて、暗号パラメータ記憶部290Cが記憶した位数pと、整数算出工程S732Cで整数算出部232Cが算出した整数sとに基づいて、e・s≡e(mod p)、|e|<√p、0<e<√pを満たす整数e及び整数eを算出する。
 第一検証工程S734Cにおいて、検証値算出部130Cは、CPU911を用いて、暗号パラメータ記憶部290Cが記憶した元gと、暗号文入力部220Cが入力した元cと、整数分割工程S733Cで整数分割部110Cが算出した整数eと整数eとに基づいて、加法群Gにおける演算により、元cをe回加算した元と、元gをe回加算した元の逆元とを加算した元を算出して、元aとする。
 検証判定部150Cは、CPU911を用いて、検証値算出部130Cが算出した元aに基づいて、元aが加法群Gの単位元であるか否かを判定する。
 元aが加法群Gの単位元である場合(すなわち、c=s・gである場合)、第二検証工程S735Cへ進む。
 元aが加法群Gの単位元でない場合(すなわち、c≠s・gである場合)、暗号文復号処理を終了する。
 第二検証工程S735Cにおいて、検証値算出部130Cは、CPU911を用いて、暗号パラメータ記憶部290Cが記憶した元vと、ペアリング算出工程S731Cでペアリング値算出部231Cが算出した元kと、整数分割工程S733Cで整数分割部110Cが算出した整数eと整数eとに基づいて、乗法群Gにおける演算により、元kをe回乗算した元と、元vをe回乗算した元の逆元とを乗算した元を算出して、元a’とする。
 検証判定部150Cは、CPU911を用いて、検証値算出部130Cが算出した元a’に基づいて、元a’が乗法群Gの単位元であるか否かを判定する。
 元a’が乗法群Gの単位元である場合(すなわち、k=v である場合)、復号文生成工程S736Cへ進む。
 元a’が乗法群Gの単位元でない場合(すなわち、k≠v である場合)、暗号文復号処理を終了する。
 復号文生成工程S736Cにおいて、復号文生成部260Cは、CPU911を用いて、ペアリング値算出工程S731Cでペアリング値算出部231Cが算出した元kに基づいて、ハッシュ関数H’により、元kをハッシュしたハッシュ値H’(k)を算出する。復号文生成部260Cは、CPU911を用いて、暗号文入力部220Cが入力したビット列cと、算出したハッシュ値H’(k)とに基づいて、ビット列cとハッシュ値H’(k)との間のビットごとの排他的論理和をとり、ビット列M’とする。
 復号メッセージ出力部283Cは、CPU911を用いて、復号文生成部260Cが算出したビット列M’を、復号したメッセージとして出力する。
 その後、暗号文復号処理を終了する。
 なお、この例では、最初に、c=s・gであるかを検証し、その後、k=v であるかを検証しているが、検証の順序は逆でもよい。また、検証値算出部130Cと検証値算出部130Cとが同時に並行して、元aと元a’を算出してもよい。
 この実施の形態における暗号文復号装置200Cは、更に、暗号パラメータ記憶部290Cを有する。
 上記暗号パラメータ記憶部290Cは、上記記憶装置(磁気ディスク装置920)を用いて、加法群G(加法群G)の位数pと、上記加法群G(加法群G)の生成元gと、上記位数pを位数とする乗法群Gの元vとを記憶する。
 上記鍵記憶部210Cは、上記記憶装置を用いて、上記位数pを位数とする加法群G(加法群G’)の元(秘密元)dと、上記加法群G(加法群G’)の元(秘密元)dとを記憶する。
 上記暗号文入力部220Cは、上記処理装置(CPU911)を用いて、ビット列cと、上記加法群Gの元cと、上記加法群Gの元cと、1以上p-1以下の整数tとを上記暗号文Cとして入力する。
 上記暗号文検証部230Cは、ペアリング値算出部231Cと、整数算出部232Cとを有する。
 上記ペアリング値算出部231Cは、上記処理装置(CPU911)を用いて、上記暗号文入力部220が入力した元cと、上記鍵記憶部210Cが記憶した元(秘密元)dとに基づいて、所定のペアリング関数eにより上記元cと上記元(秘密元)dとのペアリング値を算出して、上記乗法群Gの元k(=e(c,d))とし、上記暗号文入力部220Cが入力した元cと、上記鍵記憶部210Cが記憶した元dとに基づいて、上記ペアリング関数eにより上記元cと上記元dとのペアリング値を算出して、上記乗法群Gの元k(=e(c,d))とし、算出した上記元kと、算出した上記元kとに基づいて、上記元kと上記元kの逆元とを乗算して、上記乗法群Gの元k(=k/k)とする。
 上記整数算出部232Cは、上記処理装置(CPU911)を用いて、上記ペアリング値算出部231Cが算出した元kと、上記暗号文入力部220Cが入力したビット列cと元cと元cとに基づいて、所定のハッシュ関数H”により上記元kと上記ビット列cと上記元cと上記元cとをハッシュしたハッシュ値を算出して、整数(ハッシュ値)H”(k,c,c,c)とし、上記暗号文入力部220Cが入力した整数tと、算出した整数H”(k,c,c,c)と、上記暗号パラメータ記憶部290Cが記憶した位数pとに基づいて、上記整数tから上記整数H”(k,c,c,c)を減算した整数を位数pで割った余りを算出して、整数s(=t-H”(k,c,c,c)mod p)とする。
 上記検証装置100Cは、上記加法群G(加法群G)を上記有限群Gとして、上記位数pとして上記暗号パラメータ記憶部290Cが記憶した位数pと、上記整数eとして上記整数算出部232Cが算出した整数sと、上記元sとして上記暗号パラメータ記憶部290Cが記憶した生成元gと、上記元hとして上記暗号文入力部220Cが入力した元cとを入力し、検証成功か否かを判定して、第一の検証結果とし、上記乗法群Gを上記有限群Gとして、上記位数pとして上記暗号パラメータ記憶部290Cが記憶した位数pと、上記整数eとして上記整数算出部232Cが算出した整数sと、上記元sとして上記暗号パラメータ記憶部290Cが記憶した元vと、上記元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によれば、検証装置100Cがc=s・gかつk=v であるかを検証して検証成功と判定した場合に、復号文生成部260Cが復号文を生成するので、不正者に対して、暗号を解読する手がかりを与えるのを防ぐことができる。また、検証装置100Cがc=s・gかつk=v であるかを検証する処理にかかる時間を短縮できるので、暗号文復号装置200Cが暗号文を復号する処理全体にかかる時間を短縮することができるという効果を奏する。
 以上説明した暗号文復号装置200Cは、BB(Boneh-Boyen)1-IDベース暗号復号装置である。
 暗号文復号装置200Cは、
 秘密鍵dID=(d,d)と、暗号文C=(c,c,c,t)とを入力し、
 ペアリング値の比k=e(c,d)/e(c,d)を計算する計算装置(ペアリング値算出部231C)と、
 整数s=t-H”(k,c,c,c)を計算する計算装置(整数算出部232C)と、
 指数部(整数)sを分割する装置(整数分割部110C)と、
 分割された指数(整数e及び整数e)を用いて、乗法群Gにおける二基底指数べき乗算をして、値ke1・v -e2を計算する装置(検証値算出部130C)と、
 その値が乗法群Gの単位元1に等しいかどうか判定する装置(検証判定部150C)とを有する。
 以上説明した暗号文復号装置200Cは、BB1-IDベース暗号システム(IDベース公開鍵暗号システム820C)内における鍵デカプセル化装置である。
 暗号文復号装置200C(BB1-IDベース暗号鍵デカプセル化装置)は、
 秘密鍵dID=(d,d)と、暗号文C=(c,c,c,t)とを入力し、
 ペアリング値の比k=e(c,d)/e(c,d1)を計算する計算装置(ペアリング値算出部231C)と、
 整数s=t-H”(k,c,c,c)を計算する計算装置(整数算出部232C)と、
 指数部(整数)sを分割する装置(整数分割部110C)と、
 分割された指数(整数e及び整数e)を用いて、乗法群Gにおける二基底指数べき乗算をして、値ke1・v -e2を計算する装置(検証値算出部130C)と、
 その値が乗法群Gの単位元1に等しいかどうか判定する装置(検証判定部150C)とを有する。
 以上説明した暗号文復号装置200C(BB1-IDベース暗号復号装置)は、
 秘密鍵dID=(d,d)と、暗号文C=(c,c,c,t)とを入力し、
 ペアリング値の比k=e(c,d)/e(c,d)を計算する計算装置(ペアリング値算出部231C)と、
 整数s=t-H”(k,c,c,c)を計算する計算装置(整数算出部232C)と、
 指数部(整数)sを分割する装置(整数分割部110C)と、
 分割された指数(整数e及び整数e)を用いて、乗法群Gにおける二基底指数べき乗算をして、値ke1・v -e2を計算する装置(検証値算出部130C)と、
 その値が乗法群Gの単位元1に等しいかどうか判定する装置(検証判定部150C)とを有する。
 以上説明した暗号文復号装置200C(BB1-IDベース暗号鍵デカプセル化装置)は、
 秘密鍵dID=(d,d)と、暗号文C=(c,c,c,t)とを入力し、
 ペアリング値の比k=e(c,d)/e(c,d)を計算する計算装置(ペアリング値算出部231C)と、
 整数s=t-H”(k,c,c,c)を計算する計算装置(整数算出部232C)と、
 指数部(整数)sを分割する装置(整数分割部110C)と、
 分割された指数(整数e及び整数e)を用いて、(超)楕円曲線上の点がなす元などの加法群Gにおける二基底スカラー倍算をして、値(e・c-e・g)を計算する装置(検証値算出部130C)と、
 その値が加法群Gの単位元0に等しいかどうか判定する装置(検証判定部150C)とを有する。
 以上説明したIDベース公開鍵暗号システム820Cは、BB1-IDベース暗号システムである。
 IDベース公開鍵暗号システム820Cでは、位数pが素数である加法群G、加法群G’、乗法群G、加法群Gの生成元g、加法群G’の生成元g’、ペアリングeを用いる。
 暗号パラメータ設定装置810Cは、設定処理(Setup)をする。暗号パラメータ設定装置810Cは、CPU911を用いて、1以上p-1以下のランダムな整数α、整数β、整数γを生成し、群Gの元g=α・g、群Gの元g =β・g、群Gの元g =γ・gを計算する。暗号パラメータ設定装置810Cは、CPU911を用いて、群G’の元g’=α・g’、群G’の元g’=β・g’、群G’の元g’=γ・g’を計算する。暗号パラメータ設定装置810Cは、CPU911を用いて、群G’の元g’=(α・β)・g’と、乗法群Gの元であるペアリング値v=e(g,g’)(すなわち、v=e(g,g’)α・β)を計算する。暗号パラメータ設定装置810Cは、PKGの公開鍵として(g,g,g,v)を、PKGの秘密鍵として(g’,α,β,γ)を出力する。
 鍵生成装置300Cは、秘密鍵導出処理(Extract)をする。鍵生成装置300Cは、CPU911を用いて、暗号文復号装置200Cを識別するビット列IDを入力し、1以上p-1以下のランダムな整数(秘密乱数)rを生成する。鍵生成装置300Cは、CPU911を用いて、整数e=α・β+(α・H(ID)+γ)・rと、群G’の元d=e・g’と、群G’の元d=r・g’とを計算し、(d,d)をIDに対する秘密鍵dIDとして出力する。
 暗号文生成装置400Cは、暗号化処理(Encrypt)をする。暗号文生成装置400Cは、CPU911を用いて、平文(ビット列)Mと、受信者ID(暗号文復号装置200Cを識別するビット列ID)とを入力する。暗号文生成装置400Cは、CPU911を用いて、1以上p-1以下のランダムな整数(秘密乱数)sを生成する。暗号文生成装置400Cは、CPU911を用いて、Gの元k=v を計算する。暗号文生成装置400Cは、CPU911を用いて、ハッシュ関数H, H’, H”により、ビット列c=XOR(M,H’(k)),群Gの元c=s・g,群Gの元c=s・g+(H(ID)・s)・g,整数t=s+H”(k,c,c,c)を計算する。暗号文生成装置400Cは、CPU911を用いて、暗号文C=(c,c,c,t)を出力する。
 暗号文復号装置200Cは、復号処理(Decrypt)をする。暗号文復号装置200Cは、CPU911を用いて、秘密鍵dID=(d,d)と、暗号文C=(c,c,c,t)とを入力する。暗号文復号装置200Cは、CPU911を用いて、乗法群Gの元k=e(c,d)/e(c,d)と、整数s=t-H”(k,c,c,c)とを計算し、k=v とc=s・gとが成り立つかどうかをチェックする。成立しなければ、暗号文復号装置200Cは、CPU911を用いて、「拒絶」を出力する。成立すれば、暗号文復号装置200Cは、CPU911を用いて、ビット列M=XOR(c,H’(k))を算出し、出力する。
 以上説明した検証装置100Cは、このようなBB1-IDベース暗号システムにおいて、k=v とc=s・gとが成り立つかどうかをチェックする処理を、高速化する。
 検証装置100Cでは、整数分割部110Cが、CPU911を用いて、sとpとを入力して、e・s≡e(mod p)となる整数e及び整数eを算出する。検証値算出部130Cは、CPU911を用いて、乗法群Gにおける二基底べき乗算により、v=ke1・v -s2を計算する。検証判定部150Cは、CPU911を用いて、v=1かどうかをチェックすることにより、k=v が成立するかを高速にチェックする。
 v=1が成立した場合、検証値算出部130Cは、CPU911を用いて、加法群Gにおける二基底スカラー倍算により、W=e・c-e・gを計算する。検証判定部150Cは、CPU911を用いて、W=0かどうかをチェックすることにより、c=s・gが成立するかを高速にチェックする。
 実施の形態5.
 実施の形態5について、図28~図33を用いて説明する。
 図28は、この実施の形態におけるIDベース署名システム820Dの全体構成の一例を示すシステム構成図である。
 IDベース署名システム820Dは、署名装置400Dを識別する識別データを、署名装置400Dの公開鍵として利用する電子署名システムである。
 IDベース署名システム820Dは、暗号パラメータ設定装置810D、鍵生成装置300D、署名装置400D、署名検証装置200Dを有する。
 暗号パラメータ設定装置810Dは、IDベース署名システム820Dで利用される暗号パラメータを定める。暗号パラメータ設定装置810Dが定めた暗号パラメータは、IDベース署名システム820Dの利用者に公開される。暗号パラメータ設定装置810Dが定める暗号パラメータには、例えば、位数p、加法群G、加法群Gの元g、ハッシュ関数H、ハッシュ関数H’などがある。
 位数pは、素数である。
 加法群Gの位数は、位数pである。元gは、加法群Gの生成元である。
 ハッシュ関数Hは、加法群Gの元と、任意の長さのビット列との組から、1以上p-1以下の整数を生成するハッシュ関数である。
 ハッシュ関数H’は、任意の長さの二つのビット列の順序対と、加法群Gの三つの元の順序対との組から、1以上p-1以下の整数を生成するハッシュ関数である。
 なお、これらの暗号パラメータがあらかじめ定められている場合には、暗号パラメータ設定装置810Dは、これらの暗号パラメータを定めなくてもよい。
 また、暗号パラメータ設定装置810Dは、マスター鍵と、マスター鍵に基づいて生成した公開パラメータとを生成する。暗号パラメータ設定装置810Dが生成するマスター鍵には、1以上p-1以下の整数xが含まれる。暗号パラメータ設定装置810Dが生成したマスター鍵は、鍵生成装置300Dに対して秘密裡に通知される。また、暗号パラメータ設定装置810Dが生成する公開パラメータには、加法群Gの元Xが含まれる。暗号パラメータ設定装置810Dが生成した公開パラメータは、IDベース署名システム820Dの利用者に公開される。
 鍵生成装置300Dは、暗号パラメータ設定装置810Dから通知されたマスター鍵を秘密裡に保持する。鍵生成装置300Dは、公開された暗号パラメータと、公開された署名装置400Dの識別データIDと、保持したマスター鍵とに基づいて、署名装置400Dの署名鍵を生成する。鍵生成装置300Dが生成する署名鍵には、1以上p-1以下の整数sと、加法群Gの元Rとが含まれる。鍵生成装置300Dが生成した署名鍵は、署名装置400Dに対して秘密裡に通知される。
 署名装置400Dは、鍵生成装置300Dから通知された署名鍵を秘密裡に保持する。署名装置400Dは、公開された暗号パラメータ、公開パラメータと、保持した署名鍵に基づいて、メッセージMに対する署名σを生成する。署名σは、メッセージMの内容が改変されていないことを保証するものである。
 署名検証装置200Dは、公開された暗号パラメータ、公開パラメータと、署名装置400Dの識別データIDとに基づいて、メッセージMに付された署名σを検証して、メッセージMが改変されていないかを判定する。署名検証装置200Dは、検証結果を出力する。
 図29は、この実施の形態における暗号パラメータ設定装置810Dの一部の機能ブロックの構成の一例を示すブロック構成図である。
 暗号パラメータ設定装置810Dは、暗号パラメータ記憶部819D、秘密乱数生成部812D、公開元算出部813D、マスター鍵出力部814D、公開パラメータ出力部815Dを有する。
 暗号パラメータ記憶部819Dは、磁気ディスク装置920を用いて、公開した暗号パラメータを記憶する。
 秘密乱数生成部812Dは、CPU911を用いて、暗号パラメータ記憶部819Dが記憶した暗号パラメータのうち位数pを表わすデータを入力する。秘密乱数生成部812Dは、CPU911を用いて、入力したデータが表わす位数pに基づいて、1以上p-1以下の整数をランダムに生成し、秘密乱数xとする。秘密乱数生成部812Dは、RAM914を用いて、生成した秘密乱数xを表わすデータを記憶する。
 公開元算出部813Dは、CPU911を用いて、暗号パラメータ記憶部819Dが記憶した暗号パラメータのうち加法群Gと元gとを表わすデータと、秘密乱数生成部812Dが記憶した秘密乱数xを表わすデータとを入力する。公開元算出部813Dは、入力したデータが表わす加法群Gと元gと秘密乱数xとに基づいて、加法群Gにおける演算により、元gをx回加算した元を算出して、公開元Xとする。公開元算出部813Dは、RAM914を用いて、算出した公開元Xを表わすデータを記憶する。
 マスター鍵出力部814Dは、CPU911を用いて、秘密乱数生成部812Dが記憶した秘密乱数xを表わすデータを入力する。マスター鍵出力部814Dは、CPU911を用いて、入力した秘密乱数xを表わすデータを、マスター鍵として出力する。
 マスター鍵出力部814Dが出力したマスター鍵は、鍵生成装置300Dに対して秘密裡に通知される。
 公開パラメータ出力部815Dは、CPU911を用いて、公開元算出部813Dが記憶した公開元Xを表わすデータを入力する。公開パラメータ出力部815Dは、CPU911を用いて、入力した公開元Xを表わすデータを、公開パラメータとして出力する。
 公開パラメータ出力部815Dが出力した公開パラメータは、暗号パラメータとともに、IDベース署名システム820Dの利用者に公開される。
 図30は、この実施の形態における鍵生成装置300Dの機能ブロックの構成の一例を示すブロック構成図である。
 鍵生成装置300Dは、暗号パラメータ記憶部390D、マスター鍵記憶部330D、識別入力部340D、署名鍵生成部350D、署名鍵出力部360Dを有する。
 暗号パラメータ記憶部390Dは、磁気ディスク装置920を用いて、公開された暗号パラメータを表わすデータを、あらかじめ記憶している。
 マスター鍵記憶部330Dは、耐タンパ性のある記憶装置を用いて、暗号パラメータ設定装置810Dから通知されたマスター鍵を記憶する。
 識別入力部340Dは、CPU911を用いて、署名鍵を生成すべき署名装置400Dを識別する識別データである任意の長さのビット列IDを入力する。識別入力部340Dは、RAM914を用いて、入力したビット列IDを表わすデータを記憶する。
 署名鍵生成部350Dは、暗号パラメータ記憶部390Dが記憶した暗号パラメータと、マスター鍵記憶部330Dが記憶したマスター鍵と、識別入力部340Dが入力したビット列IDとに基づいて、署名装置400Dの署名鍵を生成する。
 署名鍵生成部350Dは、秘密乱数生成部351D、鍵元算出部352D、鍵整数算出部353Dを有する。
 秘密乱数生成部351Dは、CPU911を用いて、暗号パラメータ記憶部390Dが記憶した暗号パラメータのうち位数pを表わすデータを入力する。秘密乱数生成部351Dは、CPU911を用いて、入力したデータが表わす位数pに基づいて、1以上p-1以下の整数をランダムに生成して、秘密乱数rとする。秘密乱数生成部351Dは、RAM914を用いて、生成した秘密乱数rを表わすデータを記憶する。
 鍵元算出部352Dは、CPU911を用いて、暗号パラメータ記憶部390Dが記憶した暗号パラメータのうち加法群Gと元gとを表わすデータと、秘密乱数生成部351Dが記憶した秘密乱数rを表わすデータとを入力する。鍵元算出部352Dは、CPU911を用いて、入力したデータが表わす加法群Gと元gと秘密乱数rとに基づいて、加法群Gにおける演算により、元gをr回加算した元r・gを算出して、元Rとする。鍵元算出部352Dは、RAM914を用いて、算出した元Rを表わすデータを記憶する。
 鍵整数算出部353Dは、CPU911を用いて、暗号パラメータ記憶部390Dが記憶した暗号パラメータのうち位数pとハッシュ関数Hとを表わすデータと、マスター鍵記憶部330Dが記憶したマスター鍵のうち秘密乱数xを表わすデータと、識別入力部340Dが記憶したビット列IDと、秘密乱数生成部351Dが記憶した秘密乱数rを表わすデータと、鍵元算出部352Dが算出した元Rを表わすデータとを入力する。鍵整数算出部353Dは、CPU911を用いて、入力したデータが表わすハッシュ関数Hと元Rと、入力したビット列IDとに基づいて、ハッシュ関数Hにより、元Rとビット列IDとの組をハッシュしたハッシュ値H(R,ID)を算出する。鍵整数算出部353Dは、CPU911を用いて、入力したデータが表わす位数pと秘密乱数xと秘密乱数rと、算出したハッシュ値H(R,ID)とに基づいて、ハッシュ値H(R,ID)と秘密乱数xとの積と、秘密乱数rとの和を、位数pで割った余りを算出して、整数sとする。鍵整数算出部353Dは、RAM914を用いて、算出した整数sを表わすデータを記憶する。
 署名鍵出力部360Dは、CPU911を用いて、鍵元算出部352Dが記憶した元Rを表わすデータと、鍵整数算出部353Dが記憶した整数sを表わすデータとを入力する。署名鍵出力部360Dは、CPU911を用いて、入力した整数sと元Rとを表わすデータを、署名鍵として出力する。
 署名鍵出力部360Dが出力した署名鍵は、署名装置400Dに対して秘密裡に通知される。
 図31は、この実施の形態における署名装置400Dの機能ブロックの構成の一例を示すブロック構成図である。
 署名装置400Dは、暗号パラメータ記憶部490D、識別記憶部410D、署名鍵記憶部420D、メッセージ入力部440D、署名生成部450D、署名出力部470Dを有する。
 暗号パラメータ記憶部490Dは、磁気ディスク装置920を用いて、公開された暗号パラメータを表わすデータを、あらかじめ記憶している。
 識別記憶部410Dは、磁気ディスク装置920を用いて、署名装置400D自身を識別するビット列IDを記憶している。
 署名鍵記憶部420Dは、耐タンパ性のある記憶装置を用いて、鍵生成装置300Dが生成した署名鍵を表わすデータを記憶している。
 メッセージ入力部440Dは、CPU911を用いて、署名すべきメッセージである任意の長さのビット列Mを入力する。メッセージ入力部440Dは、RAM914を用いて、入力したビット列Mを記憶する。
 署名生成部450Dは、暗号パラメータ記憶部490Dが記憶した暗号パラメータと、識別記憶部410Dが記憶したビット列IDと、署名鍵記憶部420Dが記憶した署名鍵と、メッセージ入力部440Dが入力したビット列Mとに基づいて、署名σを生成する。
 署名生成部450Dは、第一署名元算出部451D、秘密乱数生成部452D、第二署名元算出部453D、チャレンジ算出部454D、署名整数算出部455Dを有する。
 第一署名元算出部451Dは、CPU911を用いて、暗号パラメータ記憶部490Dが記憶した暗号パラメータのうち加法群Gと元gとを表わすデータと、署名鍵記憶部420Dが記憶した署名鍵のうち整数sを表わすデータとを入力する。第一署名元算出部451Dは、CPU911を用いて、入力したデータが表わす加法群Gと元gと整数sとに基づいて、加法群Gにおける演算により、元gをs回加算した元を算出して、元Sとする。第一署名元算出部451Dは、RAM914を用いて、算出した元Sを表わすデータを記憶する。
 なお、元Sはビット列Mにかかわらず一定なので、第一署名元算出部451Dは、メッセージ入力部440Dがビット列Mを入力する前に、あらかじめ元Sを算出し、磁気ディスク装置920を用いて記憶しておいてもよい。
 秘密乱数生成部452Dは、CPU911を用いて、暗号パラメータ記憶部490Dが記憶した暗号パラメータのうち位数pを表わすデータを入力する。秘密乱数生成部452Dは、CPU911を用いて、入力したデータが表わす位数pに基づいて、1以上p-1以下の整数をランダムに生成し、秘密乱数yとする。秘密乱数生成部452Dは、RAM914を用いて、生成した秘密乱数yを表わすデータを記憶する。
 第二署名元算出部453Dは、CPU911を用いて、暗号パラメータ記憶部490Dが記憶した暗号パラメータのうち加法群Gと元gとを表わすデータと、秘密乱数生成部452Dが記憶した秘密乱数yを表わすデータとを入力する。第二署名元算出部453Dは、CPU911を用いて、入力したデータが表わす加法群Gと元gと秘密乱数yとに基づいて、加法群Gにおける演算により、元gをy回加算した元を算出して、元Yとする。第二署名元算出部453Dは、RAM914を用いて、算出した元Yを表わすデータを記憶する。
 チャレンジ算出部454Dは、CPU911を用いて、暗号パラメータ記憶部490Dが記憶した暗号パラメータのうちハッシュ関数H’を表わすデータと、識別記憶部410Dが記憶したビット列IDと、署名鍵記憶部420Dが記憶した署名鍵のうち元Rを表わすデータと、メッセージ入力部440Dが記憶したビット列Mと、第一署名元算出部451Dが記憶した元Sを表わすデータと、第二署名元算出部453Dが記憶した元Yを表わすデータとを入力する。チャレンジ算出部454Dは、CPU911を用いて、入力したデータが表わす元Rと元Sと元Yと、入力したビット列IDとビット列Mとに基づいて、ハッシュ関数H’により、ビット列IDとビット列Mとの順序対と、元Rと元Sと元Yとの順序対との組をハッシュしたハッシュ値を算出し、ハッシュ値cとする。ハッシュ値cは、1以上p-1以下の整数である。チャレンジ算出部454Dは、RAM914を用いて、算出したハッシュ値cを表わすデータを記憶する。
 署名整数算出部455Dは、CPU911を用いて、暗号パラメータ記憶部490Dが記憶した暗号パラメータのうち位数pを表わすデータと、署名鍵記憶部420Dが記憶した署名鍵のうち整数sを表わすデータと、秘密乱数生成部452Dが記憶した秘密乱数yを表わすデータと、チャレンジ算出部454Dが記憶したハッシュ値cを表わすデータとを入力する。署名整数算出部455Dは、CPU911を用いて、入力したデータが表わす位数pと整数sと秘密乱数yとハッシュ値cとに基づいて、ハッシュ値cと整数sとの積と、秘密乱数yとの和を、位数pで割った余りを算出して、整数zとする。署名整数算出部455Dは、RAM914を用いて、算出した整数zを表わすデータを記憶する。
 署名出力部470Dは、CPU911を用いて、署名鍵記憶部420Dが記憶した署名鍵のうち元Rを表わすデータと、第一署名元算出部451Dが記憶した元Sを表わすデータと、第二署名元算出部453Dが記憶した元Yを表わすデータと、署名整数算出部455Dが記憶した整数zを表わすデータとを入力する。署名出力部470Dは、CPU911を用いて、入力したデータに基づいて、入力した元Rと元Sと元Yと整数zとを表わすデータを含む署名σを生成する。署名出力部470Dは、CPU911を用いて、生成した署名σを出力する。
 図32は、この実施の形態における署名検証装置200Dの機能ブロックの構成の一例を示すブロック構成図である。
 署名検証装置200Dは、暗号パラメータ記憶部290D、識別記憶部210D、メッセージ入力部225D、署名入力部220D、署名検証部230D、検証装置100D、検証結果出力部260Dを有する。
 暗号パラメータ記憶部290Dは、磁気ディスク装置920を用いて、公開された暗号パラメータ(公開パラメータも含む)を表わすデータを、あらかじめ記憶している。
 識別記憶部210Dは、磁気ディスク装置920を用いて、署名装置400Dを識別するビット列IDを記憶している。
 メッセージ入力部225Dは、CPU911を用いて、署名σを付されたメッセージであるビット列Mを入力する。メッセージ入力部225Dは、RAM914を用いて、入力したビット列Mを記憶する。
 署名入力部220Dは、CPU911を用いて、メッセージ入力部225Dが入力したビット列Mに付された署名σを入力する。署名入力部220Dは、CPU911を用いて、入力した署名σから、元Rと元Sと元Yと整数zとを表わすデータを取得する。署名入力部220Dは、RAM914を用いて、取得した元Rと元Sと元Yと整数zとを表わすデータを記憶する。
 署名検証部230Dは、チャレンジ算出部231D、整数算出部232D、検証元算出部233D、第一検証部250Dを有する。
 チャレンジ算出部231Dは、CPU911を用いて、暗号パラメータ記憶部290Dが記憶したハッシュ関数H’を表わすデータと、識別記憶部210Dが記憶した署名装置400Dを識別するビット列IDと、署名入力部220Dが記憶した元Rと元Sと元Yとを表わすデータと、メッセージ入力部225Dが記憶したビット列Mとを入力する。チャレンジ算出部231Dは、CPU911を用いて、入力したデータが表わすハッシュ関数H’と元Rと元Sと元Yと、入力したビット列IDとビット列Mとに基づいて、ハッシュ関数H’により、ビット列IDとビット列Mとの順序対と、元Rと元Sと元Yとの順序対との組をハッシュしたハッシュ値を算出して、ハッシュ値cとする。ハッシュ値cは、1以上p-1以下の整数である。チャレンジ算出部231Dは、RAM914を用いて、算出したハッシュ値cを表わすデータを記憶する。
 ビット列Mが改変されていなければ、チャレンジ算出部231Dが算出するハッシュ値cは、署名装置400Dのチャレンジ算出部454Dが算出したハッシュ値cと等しい。
 整数算出部232Dは、CPU911を用いて、暗号パラメータ記憶部290Dが記憶した暗号パラメータのうちハッシュ関数Hを表わすデータと、識別記憶部210Dが記憶した署名装置400Dを識別するビット列IDと、署名入力部220Dが記憶した元Rを表わすデータとを入力する。整数算出部232Dは、CPU911を用いて、入力したデータが表わすハッシュ関数Hと元Rと、入力したビット列IDとに基づいて、ハッシュ関数Hにより、元Rとビット列IDとの組をハッシュしたハッシュ値を算出して、ハッシュ値hとする。ハッシュ値hは、1以上p-1以下の整数である。整数算出部232Dは、CPU911を用いて、算出したハッシュ値hを表わすデータを記憶する。
 検証元算出部233Dは、CPU911を用いて、暗号パラメータ記憶部290Dが記憶した暗号パラメータのうち加法群Gを表わすデータと、署名入力部220Dが記憶した元Rと元Sとを表わすデータとを入力する。検証元算出部233Dは、CPU911を用いて、入力したデータが表わす加法群Gと元Rと元Sとに基づいて、加法群Gにおける演算により、元Sと、元Rの逆元とを加算した元を算出して、元R’とする。検証元算出部233Dは、RAM914を用いて、算出した元R’を表わすデータを記憶する。
 第一検証部250Dは、z・g=Y+c・Sであるかを検証する。
 第一検証部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を用いて、検証結果を表わすデータを記憶する。
 Y=y・g、S=s・g、z=y+c・s mod pなので、
Figure JPOXMLDOC01-appb-M000029
 したがって、ビット列Mが改変されていなければ、z・g=Y+c・Sが成立する。
 検証装置100Dは、R’=h・Xであるかを検証する。
 検証装置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を用いて、検証結果を表わすデータを出力する。
 R=r・g、S=s・g=r+H(R,ID)・x mod p、h=H(R,ID)、X=x・g、なので、
Figure JPOXMLDOC01-appb-M000030
 したがって、ビット列Mが改変されていなければ、R’=h・Xが成立する。
 検証結果出力部260Dは、CPU911を用いて、第一検証部250Dが記憶した検証結果を表わすデータと、検証結果出力部260Dが出力した検証結果を表わすデータとを入力する。検証結果出力部260Dは、CPU911を用いて、入力した二つの検証結果に基づいて、第一検証部250D及び検証装置100Dがともに「検証成功」と判定した場合に「検証成功」と判定し、それ以外の場合に「検証失敗」と判定する。検証結果出力部260Dは、CPU911を用いて、検証結果を表わすデータを出力する。
 図33は、この実施の形態における署名検証装置200Dは、署名σを検証する署名検証処理の流れの一例を示すフローチャート図である。
 チャレンジ算出工程S731Dにおいて、チャレンジ算出部231Dは、CPU911を用いて、識別記憶部210Dが記憶したビット列IDと、署名入力部220Dが入力した元Rと元Sと元Yと、メッセージ入力部225Dが入力したビット列Mとに基づいて、ハッシュ関数H’により、ビット列IDとビット列Mとの順序対と、元Rと元Sと元Yとの順序対との組をハッシュしたハッシュ値H’(ID,R,S,Y,M)を算出して、ハッシュ値cとする。
 第一検証工程S732Dにおいて、第一検証部250Dは、CPU911を用いて、暗号パラメータ記憶部290Dが記憶した位数pと元gと、署名入力部220Dが入力した元Sと元Yと整数zと、チャレンジ算出工程S731Dでチャレンジ算出部231Dが算出したハッシュ値cとに基づいて、z・g=Y+c・Sであるか検証する。
 z・g=Y+c・Sである場合、整数算出工程S733Dへ進む。
 z・g≠Y+c・Sである場合、失敗判定工程S737Dへ進む。
 整数算出工程S733において、整数算出部232Dは、CPU911を用いて、識別記憶部210Dが記憶したビット列IDと、署名入力部220Dが入力した元Rとに基づいて、ハッシュ関数Hにより、元Rとビット列IDとの組をハッシュしたハッシュ値H(R,ID)を算出して、ハッシュ値hとする。
 検証元算出工程S734Dにおいて、検証元算出部233Dは、CPU911を用いて、署名入力部220Dが入力した元Rと元Sとに基づいて、加法群Gにおける演算により、元Sと、元Rの逆元とを加算した元S-Rを算出して、元R’とする。
 第二検証工程S735Dにおいて、検証装置100Dは、CPU911を用いて、暗号パラメータ記憶部290Dが記憶した位数pと元Xと、整数算出工程S733Dで整数算出部232Dが算出したハッシュ値hと、検証元算出工程S734Dで検証元算出部233Dが算出した元R’とに基づいて、R’=h・Xであるか検証する。
 R’=h・Xである場合、成功判定工程S736Dへ進む。
 R’≠h・Xである場合、失敗判定工程S737Dへ進む。
 成功判定工程S736において、検証結果出力部260Dは、CPU911を用いて、検証成功と判定し、検証結果を出力する。
 その後、署名検証処理を終了する。
 失敗判定工程S737Dにおいて、検証結果出力部260Dは、CPU911を用いて、検証失敗と判定し、検証結果を出力する。
 その後、署名検証処理を終了する。
 なお、この例では、最初にz・g=Y+c・Sであるか検証し、次にR’=h・Xであるか検証しているが、検証の順序は、いずれが先であってもよい。
 この実施の形態における署名検証装置200Dは、データを処理する処理装置(CPU911)と、メッセージ入力部225Dと、署名入力部220Dと、署名検証部230Dと、検証装置100Dと、検証結果出力部260Dとを有する。
 上記メッセージ入力部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が署名を検証する処理全体にかかる時間を短縮することができるという効果を奏する。
 この実施の形態における署名検証装置200Dは、更に、データを記憶する記憶装置(磁気ディスク装置920、RAM914など)と、暗号パラメータ記憶部290Dと、識別記憶部210Dとを有する。
 上記暗号パラメータ記憶部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によれば、検証装置100DがR’=h・Xであるかを検証するので、署名σを検証することができる。また、検証装置100DがR’=h・Xであるかを検証する処理にかかる時間を短縮することができるので、署名検証装置200Dが署名を検証する処理全体にかかる時間を短縮することができるという効果を奏する。
 以上説明した署名検証装置200Dは、乗法群における指数べき乗算、または(超)楕円曲線上の点がなす群などの加法群におけるスカラー倍算により、乗法群の元sをe回乗算した元sまたは加法群の元sをe回加算した元e・sが、既知の元hと一致するかどうかを検証することにより、署名が正しいか否かを判定するディジタル署名検証装置である。
 署名検証装置200Dは、
 指数部(整数e)を分割する装置(整数分割部110)と、
 分割された指数(整数e及び整数e)を用いて、乗法群における二基底指数べき乗算、または(超)楕円曲線上の点がなす群などの加法群における二基底スカラー倍算をして、値he1・e-e2またはe・h-e・sを計算する装置(検証値算出部130)と、
 その値が乗法群の単位元1または加法群の単位元0に等しいかどうか判定する装置(検証判定部150)とを有する。
 以上説明した署名検証装置200D(ディジタル署名検証装置)は、
 指数(整数)eと、暗号で使用する乗法群または加法群の群位数pとを入力して、位数pのビット長の半分のビット長を有する二つの整数e,e(ただし、e・e≡e(mod p)。)を計算する計算装置(整数分割部110)と、
 se2・h-e1=1またはe・s-e・h=0を検証する検証装置(検証値算出部130、検証判定部150)とを有する。
 以上説明した整数分割部110は、拡張ユークリッド互除法を計算することにより、指数部(整数e)を分割する。
 以上説明した整数分割部110は、二つの整数の繰り返し除算において、
 除算をする整数v及び除算される整数vが、それぞれ、前ステップの除算の剰余v、及び前ステップの除算をする整数vである計算装置(第三剰余算出部117)と、
 各ステップの除算結果の剰余vがある一定の数(√p)以上、又はある一定の数(√p)以下であることを判定する計算装置(適合性判定部116)とを有する。
 以上説明した署名検証装置200Dは、BNN(Bellare-Namprempre-Neven)-IDベース署名検証装置である。
 署名検証装置200Dは、
 秘密鍵生成センタ(鍵生成装置300D)の公開鍵である乗法群または加法群の元Xと、署名者(署名装置400D)の秘密鍵(署名鍵)の一部である元Rと、署名σの一部である元Sと、署名者を識別するビット列IDとに基づいて、元R・XH(R,ID)またはR+H(R,ID)・Xが元Sと一致するかどうか検証するため、
 指数部(ハッシュ値h=H(R,ID))を分割する装置(整数分割部110)と、
 分割された指数(整数e及び整数e)を用いて、乗法群における二基底指数べき乗算、または(超)楕円曲線上の点がなす群などの加法群における二基底スカラー倍算をして、値(S/R)e1・X-e2またはe・(S-R)-e・Xを計算する装置(検証値算出部130)と、
 その値が乗法群の単位元1または加法群の単位元0に等しいかどうか判定する装置(検証判定部150)とを有する。
 以上説明したIDベース署名システム820Dは、BNN-IDベース認証法をFiat-Shamir変換したBNN-IDベース署名法による署名システムである。
 IDベース認証システム820Eでは、位数pが素数である乗法群Gと、乗法群Gの生成元gとを用いる。
 暗号パラメータ設定装置810Dは、PKG用鍵生成処理をする。暗号パラメータ設定装置810Dは、CPU911を用いて、1以上p-1以下のランダムな整数xを生成する。暗号パラメータ設定装置810Dは、CPU911を用いて、乗法群Gの元X=gを計算する。暗号パラメータ設定装置810Dは、CPU911を用いて、群Gの元XをPKG公開鍵、整数xをPKG秘密鍵として出力する。
 鍵生成装置300Dは、ユーザ秘密鍵導出処理をする。鍵生成装置300Dは、CPU911を用いて、PKG秘密鍵xと、証明装置400Eを識別するビット列IDとを入力する。まず、鍵生成装置300Dは、CPU911を用いて、1以上p-1以下のランダムな整数(秘密乱数)rを生成する。鍵生成装置300Dは、CPU911を用いて、群Gの元R=gと、整数s=r+H(R,ID)・xとを計算し、(R,s)をユーザ秘密鍵として出力する。
 署名装置400Dは、署名生成処理をする。署名装置400Dは、CPU911を用いて、メッセージMと秘密鍵(R,s)とを入力する。まず、署名装置400Dは、CPU911を用いて、1以上p-1以下のランダムな整数(秘密乱数)yを生成する。署名装置400Dは、CPU911を用いて、群Gの元S=gと、群Gの元Y=gとを計算し、整数c=H(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は、g=Y・SとS=R・XH(R,ID)とが成立するか、元S,元YがGの元であるか、整数zが1以上p-1以下であるかを検証する。すべて成立すれば、署名検証装置200Dは、CPU911を用いて、署名検証合格と判定し、そうでなければ、署名検証不合格と判定する。
 以上説明した検証装置100Dは、このようなBNN-IDベース署名システムにおいて、S=R・XH(R,ID)であるかどうかを検証する処理を、高速化する。
 検証装置100Dでは、整数分割部110が、CPU911を用いて、h(=H(R,ID))とpとを入力し、e・h≡e(mod p)となる整数e及び整数eを算出する。検証値算出部130は、CPU911を用いて、乗法群Gにおける二基底べき乗算により、X=Xe1・R’e2(ただし、R’=S・R-1。)を計算する。検証装置100Eは、X=1かどうかをチェックすることにより、S=R・XH(R,ID)が成立するかを、高速にチェックする。
 実施の形態6.
 実施の形態6について、図34~図37を用いて説明する。
 図34は、この実施の形態におけるIDベース認証システム820Eの全体構成の一例を示すシステム構成図である。
 IDベース認証システム820Eは、証明装置400Eが偽物ではないことを、認証装置200Eが認証するシステムである。このとき、認証装置200Eは、証明装置400Eを識別する識別データを証明装置400Eの公開鍵として利用する。
 IDベース認証システム820Eは、暗号パラメータ設定装置810D、鍵生成装置300D、証明装置400E、認証装置200Eを有する。
 暗号パラメータ設定装置810D、鍵生成装置300Dは、実施の形態5で説明したものと同様なので、ここでは説明を省略する。
 証明装置400Eは、認証装置200Eに対して、認証要求メッセージを送信する。証明装置400Eが送信する認証要求メッセージには、加法群Gの元R、元S、元Yが含まれる。
 認証装置200Eは、認証要求メッセージを受信すると、証明装置400Eに対して、質問メッセージを送信する。認証装置200Eが送信する質問メッセージには、1以上p-1以下の整数cが含まれる。
 証明装置400Eは、質問メッセージを受信すると、認証装置200Eに対して回答メッセージを送信する。証明装置400Eが送信する回答メッセージには、整数cに基づいて算出した1以上p-1以下の整数zが含まれる。
 認証装置200Eは、受信した認証要求メッセージに含まれる元R、元S、元Yと、受信した回答メッセージに含まれる整数zとを検証して、整合性があれば、証明装置400Eが偽物ではないことを認証する。
 図35は、この実施の形態における証明装置400Eの機能ブロックの構成の一例を示すブロック構成図である。
 なお、実施の形態5で説明した署名装置400Dと共通する部分については、同一の符号を付し、ここでは説明を省略する。
 証明装置400Eは、暗号パラメータ記憶部490D、署名鍵記憶部420D、署名生成部450D、認証要求送信部470E、質問受信部454E、回答送信部475Eを有する。
 認証要求送信部470Eは、CPU911を用いて、署名鍵記憶部420Dが記憶した署名鍵のうち元Rを表わすデータと、第一署名元算出部451Dが記憶した元Sを表わすデータと、第二署名元算出部453Dが記憶した元Yを表わすデータとを入力する。認証要求送信部470Eは、CPU911を用いて、入力した元Rと元Sと元Yとを表わすデータを含む認証要求メッセージを生成する。認証要求送信部470Eは、通信装置915を用いて、生成した認証要求メッセージを、認証装置200Eに対して送信する。
 質問受信部454Eは、通信装置915を用いて、認証装置200Eが送信した質問メッセージを受信する。質問受信部454Eは、CPU911を用いて、受信した質問メッセージに含まれる整数cを表わすデータを取得する。質問受信部454Eは、RAM914を用いて、取得した整数cを表わすデータを記憶する。
 署名整数算出部455Dは、CPU911を用いて、暗号パラメータ記憶部490Dが記憶した暗号パラメータのうち位数pを表わすデータと、署名鍵記憶部420Dが記憶した署名鍵のうち整数sを表わすデータと、秘密乱数生成部452Dが記憶した秘密乱数yを表わすデータと、質問受信部454Eが記憶した整数cを表わすデータとを入力する。署名整数算出部455Dは、CPU911を用いて、入力したデータが表わす位数pと整数sと秘密乱数yと整数cとに基づいて、整数cと整数sとの積と、秘密乱数yとの和を、位数pで割った余りを算出して、整数zとする。署名整数算出部455Dは、RAM914を用いて、算出した整数zを表わすデータを記憶する。
 回答送信部475Eは、CPU911を用いて、署名整数算出部455Dが記憶した整数zを表わすデータを入力する。回答送信部475Eは、CPU911を用いて、入力した整数zを表わすデータを含む回答メッセージを生成する。回答送信部475Eは、通信装置915を用いて、生成した回答メッセージを、認証装置200Eに対して送信する。
 図36は、この実施の形態における認証装置200Eの機能ブロックの構成の一例を示すブロック構成図である。
 なお、実施の形態5で説明した署名検証装置200Dと共通する部分については、同一の符号を付し、ここでは説明を省略する。
 認証装置200Eは、暗号パラメータ記憶部290D、識別記憶部210D、認証要求受信部220E、チャレンジ生成部231E、質問送信部226E、回答受信部227E、署名検証部230D、検証装置100D、認証結果出力部260Eを有する。
 認証要求受信部220Eは、通信装置915を用いて、証明装置400Eが送信した認証要求メッセージを受信する。認証要求受信部220Eは、CPU911を用いて、受信した認証要求メッセージに含まれる元Rと元Sと元Yとを表わすデータを取得する。認証要求受信部220Eは、RAM914を用いて、取得した元Rと元Sと元Yとを表わすデータを記憶する。
 チャレンジ生成部231Eは、認証要求受信部220Eが認証要求メッセージを受信した場合に、CPU911を用いて、1以上p-1以下の整数をランダムに生成して、整数cとする。チャレンジ生成部231Eは、RAM914を用いて、生成した整数cを表わすデータを記憶する。
 質問送信部226Eは、CPU911を用いて、チャレンジ生成部231Eが記憶した整数cを表わすデータを入力する。質問送信部226Eは、CPU911を用いて、入力した整数cを表わすデータを含む質問メッセージを生成する。質問送信部226Eは、通信装置915を用いて、生成した質問メッセージを、証明装置400Eに対して送信する。
 回答受信部227Eは、通信装置915を用いて、証明装置400Eが送信した回答メッセージを受信する。回答受信部227Eは、CPU911を用いて、受信した回答メッセージに含まれる整数zを表わすデータを取得する。回答受信部227Eは、RAM914を用いて、取得した整数zを表わすデータを記憶する。
 第一検証部250Dは、z・g=Y+c・Sであるかを検証する。
 第一検証部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を用いて、検証結果を表わすデータを記憶する。
 認証結果出力部260Eは、CPU911を用いて、第一検証部250Dが記憶した検証結果を表わすデータと、検証装置100Dが出力した検証結果を表わすデータとを入力する。認証結果出力部260Eは、CPU911を用いて、入力した二つの検証結果に基づいて、第一検証部250D及び検証装置100Dがともに「検証成功」と判定した場合に「認証成功」と判定し、それ以外の場合に「認証失敗」と判定する。認証結果出力部260Eは、CPU911を用いて、認証結果を表わすデータを出力する。
 図37は、この実施の形態における認証装置200Eが証明装置400Eを認証する認証処理の流れの一例を示すフローチャート図である。
 なお、実施の形態5で説明した署名検証処理と共通する部分については、同一の符号を付し、ここでは説明を省略する。
 秘密乱数生成工程S741Eにおいて、証明装置400Eの秘密乱数生成部452Dは、CPU911を用いて、1以上p-1以下の秘密乱数yをランダムに生成する。
 署名元算出工程S742Eにおいて、第二署名元算出部453Dは、CPU911を用いて、秘密乱数生成部452Dが生成した秘密乱数yに基づいて、加法群Gの元Y(=y・g)を算出する。
 認証要求送信工程S743Eにおいて、証明装置400Eの認証要求送信部470Eは、通信装置915を用いて、署名鍵記憶部420Dが記憶した元Rと、第一署名元算出部451Dが算出した元S(=s・g)と、秘密乱数生成工程S741Eで第二署名元算出部453Dが算出した元Yとを含む認証要求メッセージを、認証装置200Eに対して送信する。
 認証要求受信工程S751Eにおいて、認証装置200Eの認証要求受信部220Eは、通信装置915を用いて、認証要求送信工程S743Eで証明装置400Eが送信した認証要求メッセージを受信する。
 チャレンジ生成工程S752Eにおいて、認証装置200Eのチャレンジ生成部231Eは、CPU911を用いて、1以上p-1以下の整数cをランダムに生成する。
 質問送信工程S753Eにおいて、認証装置200Eの質問送信部226Eは、通信装置915を用いて、チャレンジ生成工程S752Eでチャレンジ生成部231Eが生成した整数cを含む質問メッセージを、証明装置400Eに対して送信する。
 質問受信工程S744Eにおいて、証明装置400Eの質問受信部454Eは、通信装置915を用いて、質問送信工程S753Eで認証装置200Eが送信した質問メッセージを受信する。
 署名整数算出工程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に対して送信する。
 回答受信工程S754Eにおいて、認証装置200Eの回答受信部227Eは、通信装置915を用いて、回答送信工程S746Eで証明装置400Eが送信した回答メッセージを受信する。
 第一検証工程S732D~第二検証工程S735Dは、実施の形態5で説明した工程と同様である。
 成功判定工程S736Eにおいて、認証結果出力部260Eは、CPU911を用いて、認証成功と判定し、認証結果を出力する。
 その後、認証処理を終了する。
 失敗判定工程S737Eにおいて、認証結果出力部260Eは、CPU911を用いて、認証失敗と判定し、認証結果を出力する。
 この実施の形態における認証装置200Eは、データを処理する処理装置(CPU911)と、データを送信する送信装置(通信装置915)と、データを受信する受信装置(通信装置915)と、認証要求受信部220Eと、質問送信部226Eと、回答受信部227Eと、署名検証部230Dと、検証装置100Dと、認証結果出力部260Eとを有する。
 上記認証要求受信部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が検証した結果に基づいて、認証成功であるか否か表わす認証結果を出力する。
 この実施の形態における認証装置200Eによれば、検証装置100Dがh=e・sであるかを判定することにより、証明装置400Eを認証することができる。また、検証装置100Dが署名の整合性を検証する処理にかかる時間を短縮することができるので、認証装置200Eが証明装置400Eを検証する処理全体にかかる時間を短縮することができるという効果を奏する。
 この実施の形態における認証装置200Eは、更に、データを記憶する記憶装置(磁気ディスク装置920やRAM914など)と、暗号パラメータ記憶部290Dと、識別記憶部210Dと、チャレンジ生成部231Eとを有する。
 上記暗号パラメータ記憶部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によれば、検証装置100DがR’=h・Xであるかを検証するので、証明装置400Eを認証することができる。また、検証装置100DがR’=h・Xであるかを検証する処理にかかる時間を短縮することができるので、認証装置200Eが証明装置400Eを認証する処理全体にかかる時間を短縮することができるという効果を奏する。
 以上説明した認証装置200Eは、乗法群における指数べき乗算、または(超)楕円曲線上の点がなす群などの加法群におけるスカラー倍算により、乗法群の元sをe回乗算した元sまたは加法群の元sをe回加算した元e・sが、既知の元hと一致するかどうかを検証することにより、証明装置400Eを認証する認証法検証装置である。
 認証装置200Eは、
 指数部(整数e)を分割する装置(整数分割部110)と、
 分割された指数(整数e及び整数e)を用いて、乗法群における二基底指数べき乗算、または(超)楕円曲線上の点がなす群などの加法群における二基底スカラー倍算をして、値he1・e-e2またはe・h-e・sを計算する装置(検証値算出部130)と、
 その値が乗法群の単位元1または加法群の単位元0に等しいかどうか判定する装置(検証判定部150)とを有する。
 以上説明した認証装置200E(認証法検証装置)は、
 指数(整数)eと、暗号で使用する乗法群または加法群の群位数pとを入力して、位数pのビット長の半分のビット長を有する二つの整数e,e(ただし、e・e = e(mod p)。)を計算する計算装置(整数分割部110)と、
 se2・h-e1=1またはe・s-e・h=0を検証する検証装置(検証値算出部130、検証判定部150)とを有する。
 以上説明した整数分割部110は、拡張ユークリッド互除法を計算することにより、指数部(整数e)を分割する。
 以上説明した整数分割部110は、二つの整数の繰り返し除算において、
 除算をする整数v、及び除算される整数vが、それぞれ、前ステップの除算の剰余v、及び前ステップの除算をする整数vである計算装置(第三剰余算出部117)と、
 各ステップの除算結果の剰余vがある一定の数(√p)以上、又はある一定の数(√p)以下であることを判定する計算装置(適合性判定部116)とを有する。
 以上説明した認証装置200Eは、BNN-IDベース認証法検証装置である。
 認証装置200Eは、
 秘密鍵生成センタ(鍵生成装置300D)の公開鍵である乗法群または加法群の元Xと、被認証者(証明装置400E)の秘密鍵(署名鍵)の一部である元Rと、被認証者のコミット値(元)Sと、被認証者を識別するビット列IDとに基づいて、元R・X{H(R,ID)またはR+H(R,ID)・Xが元Sと一致するかどうか検証するため、
 指数部(ハッシュ値h=H(R,ID))を分割する装置(整数分割部110)と、
 分割された指数(整数e及び整数e)を用いて、乗法群における二基底指数べき乗算、または(超)楕円曲線上の点がなす群などの加法群における二基底スカラー倍算をして、値(S/R)e1・X-e2またはe・(S-R)-e・Xを計算する装置(検証値算出部130)と、
 その値が乗法群の単位元1または加法群の単位元0に等しいかどうか判定する装置(検証判定部150)とを有する。
 以上説明したIDベース認証システム820Eは、BNN-IDベース認証法による認証システムである。
 IDベース認証システム820Eは、証明者(証明装置400E)と認証者(認証装置200E)とを有する。最初に、証明者(証明装置400E)が、検証者(認証装置200E)にコミットメントCmt(認証要求メッセージ)を送付する。検証者(認証装置200E)は、コミットメントCmtを受け取り、コミットメントCmtと公開情報(暗号パラメータ、公開パラメータ)からチャレンジデータCh(質問メッセージ)を計算し、証明者(証明装置400E)に送付する。証明者(証明装置400E)は、チャレンジデータChを受け取り、回答データRspを計算して、検証者(認証装置200E)に送付する。検証者(認証装置200E)は、回答データRspを受け取り、それが正しいデータかどうかを検証する。検証者(認証装置200E)は、回答データが正しければ認証合格、そうでなければ認証不合格と判定する。
 IDベース認証システム820Eでは、位数pが素数である乗法群Gと、乗法群Gの生成元gとを用いる。
 暗号パラメータ設定装置810Dは、PKG用鍵生成処理をする。暗号パラメータ設定装置810Dは、CPU911を用いて、1以上p-1以下のランダムな整数xを生成する。暗号パラメータ設定装置810Dは、CPU911を用いて、乗法群Gの元X=gを計算する。暗号パラメータ設定装置810Dは、CPU911を用いて、群Gの元XをPKG公開鍵、整数xをPKG秘密鍵として出力する。
 鍵生成装置300Dは、ユーザ秘密鍵導出処理をする。鍵生成装置300Dは、CPU911を用いて、PKG秘密鍵xと、証明装置400Eを識別するビット列IDとを入力する。まず、鍵生成装置300Dは、CPU911を用いて、1以上p-1以下のランダムな整数(秘密乱数)rを生成する。鍵生成装置300Dは、CPU911を用いて、群Gの元R=gと、整数s=r+H(R,ID)・xとを計算し、(R,s)をユーザ秘密鍵として出力する。
 証明装置400Eは、Cmt計算処理において、CPU911を用いて、まず、1以上p-1以下のランダムな整数(秘密乱数)yを生成する。証明装置400Eは、CPU911を用いて、群Gの元S=gと、群Gの元Y=gとを計算し、元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を受け取り、g=Y・SとS=R・XH(R,ID)が成立するかどうか、元S及び元Yとが群Gの元であるかどうか、整数zが1以上p-1以下であるかどうかを検証する。すべて成立すれば、認証装置200Eは、CPU911を用いて、認証合格と判定し、そうでなければ、認証不合格と判定する。
 以上説明した検証装置100Eは、このようなBNN-IDベース認証システムにおいて、S=R・XH(R,ID)であるかどうかを検証する処理を、高速化する。
 検証装置100Eでは、整数分割部110が、CPU911を用いて、h(=H(R,ID))とpとを入力し、e・h=e(mod p)となる整数e及び整数eを算出する。検証値算出部130は、CPU911を用いて、乗法群Gにおける二基底べき乗算により、X=Xe1・R’e2(ただし、R’=S・R-1。)を計算する。検証装置100Eは、X=1かどうかをチェックすることにより、S=R・XH(R,ID)が成立するかを、高速にチェックする。
 以上、いくつかの暗号通信システム、署名システム、認証システムにおいて、検証装置100が検証処理を高速化する例を説明したが、この技術は、上記説明した例に限るものではなく、広く離散対数型の暗号通信システム、認証システム、署名システムなどの暗号システムに適用することができる。
 また、説明の都合上、主に、群演算を加法的に記述する場合について説明したが、群演算が加法で記述されているか、乗法で記述されているかは、本質的ではない。
 暗号システムが利用する有限群において、群演算がコンピュータなどの処理装置を用いて計算可能であり、1回の群演算に多くの時間がかかる場合であれば、この技術による格段の高速化が可能である。
実施の形態1における暗号文復号装置200の機能ブロックの構成の一例を示すブロック構成図。 実施の形態1における暗号文復号装置200の外観の一例を示す図。 実施の形態1における暗号文復号装置200のハードウェア資源の一例を示す図。 実施の形態1における検証装置100の内部ブロックの構成の一例を示すブロック構成図。 実施の形態1における検証装置100がh=e・sであるか否かを判定する検証処理の流れの一例を示すフローチャート図。 実施の形態1における整数分割部110の内部ブロックの構成の一例を示す詳細ブロック図。 実施の形態1における整数分割部110が整数eを分割する整数分割処理の流れの一例を示すフローチャート図。 実施の形態1における検証値算出部130の内部ブロックの構成の一例を示す詳細ブロック図。 実施の形態1における検証値算出部130が有限群Gの元aを算出する検証値算出処理の流れの一例を示すフローチャート図。 実施の形態2におけるIDベース公開鍵暗号システム820Aの全体構成の一例を示すシステム構成図。 実施の形態2における暗号パラメータ設定装置810Aの一部の機能ブロックの構成の一例を示すブロック構成図。 実施の形態2における鍵生成装置300Aの機能ブロックの構成の一例を示すブロック構成図。 実施の形態2における暗号文生成装置400Aの機能ブロックの構成の一例を示すブロック構成図。 実施の形態2における暗号文復号装置200Aの機能ブロックの構成の一例を示すブロック構成図。 実施の形態2における暗号文復号装置200Aが暗号文cを復号する暗号文復号処理の流れの一例を示すフローチャート図。 実施の形態3における公開鍵暗号システム820Bの全体構成の一例を示すシステム構成図。 実施の形態3における鍵生成装置300Bの機能ブロックの構成の一例を示すブロック構成図。 実施の形態3における暗号文生成装置400Bの機能ブロックの構成の一例を示すブロック構成図。 実施の形態3における暗号文復号装置200Bの機能ブロックの構成の一例を示すブロック構成図。 実施の形態3における暗号文復号装置200Aが暗号文cを復号する暗号文復号処理の流れの一例を示すフローチャート図。 実施の形態4におけるIDベース公開鍵暗号システム820Cの全体構成の一例を示すシステム構成図。 実施の形態4における暗号パラメータ設定装置810Cの一部の機能ブロックの構成の一例を示すブロック構成図。 実施の形態4における鍵生成装置300Cの機能ブロックの構成の一例を示すブロック構成図。 実施の形態4における暗号文生成装置400Cの機能ブロックの構成の一例を示すブロック構成図。 実施の形態4における暗号文復号装置200Cの機能ブロックの構成の一例を示すブロック構成図。 実施の形態4における検証装置100Cの内部ブロックの構成の一例を示す詳細ブロック図。 実施の形態4における暗号文復号装置200Cが暗号文Cを復号する暗号文復号処理の流れの一例を示すフローチャート図。 実施の形態5におけるIDベース署名システム820Dの全体構成の一例を示すシステム構成図。 実施の形態5における暗号パラメータ設定装置810Dの一部の機能ブロックの構成の一例を示すブロック構成図。 実施の形態5における鍵生成装置300Dの機能ブロックの構成の一例を示すブロック構成図。 実施の形態5における署名装置400Dの機能ブロックの構成の一例を示すブロック構成図。 実施の形態5における署名検証装置200Dの機能ブロックの構成の一例を示すブロック構成図。 実施の形態5における署名検証装置200Dは、署名σを検証する署名検証処理の流れの一例を示すフローチャート図。 実施の形態6におけるIDベース認証システム820Eの全体構成の一例を示すシステム構成図。 実施の形態6における証明装置400Eの機能ブロックの構成の一例を示すブロック構成図。 実施の形態6における認証装置200Eの機能ブロックの構成の一例を示すブロック構成図。 実施の形態6における認証装置200Eが証明装置400Eを認証する認証処理の流れの一例を示すフローチャート図。
符号の説明
 100,100A,100B,100C,100D 検証装置、110,110C 整数分割部、111 位数入力部、112 整数入力部、113 初期値設定部、114 第一剰余記憶部、115 第二剰余記憶部、116 適合性判定部、117 第三剰余算出部、124 第一係数記憶部、125 第二係数記憶部、126 商算出部、127 第三係数算出部、129 分割整数出力部、130,130C 検証値算出部、131 分割整数入力部、132 元入力部、133 索引算出部、134 テーブル生成部、135 テーブル記憶部、141 検証初期値設定部、142 倍算結果記憶部、143 二基底加算部、144 加算結果記憶部、145 倍算部、149 検証値出力部、150,150C 検証判定部、200,200A,200B,200C 暗号文復号装置、200D 署名検証装置、200E 認証装置、210,210A,210B,210C 鍵記憶部、210D 識別記憶部、220,220A,220B,220C 暗号文入力部、220D 署名入力部、225D メッセージ入力部、220E 認証要求受信部、226E 質問送信部、227E 回答受信部、230,230A,230B,230C 暗号文検証部、230D 署名検証部、231A ペアリング値算出部、232A ビット列算出部、233A 整数算出部、231B ハッシュ値算出部、232B 整数算出部、231C ペアリング値算出部、232C 整数算出部、231D チャレンジ算出部、232D 整数算出部、233D 検証元算出部、231E チャレンジ生成部、241A 識別記憶部、242A 識別元算出部、243A 識別元記憶部、250D 第一検証部、260,260A,260B,260C 復号文生成部、260D 検証結果出力部、260E 認証結果出力部、261B 秘密元算出部、262B 共通鍵算出部、270A,270B 共通鍵記憶部、281A,281B 暗号化メッセージ入力部、282A,282B メッセージ復号部、283A,283B,283C 復号メッセージ出力部、290A,290B,290C,290D,390A,390B,390C,390D,490A,490B,490C,490D,819A,819C,819D 暗号パラメータ記憶部、300A,300B,300C,300D 鍵生成装置、330A 秘密乱数記憶部、330C,330D マスター鍵記憶部、340A,340C,340D 識別入力部、350A,350B,350C 秘密鍵生成部、350D 署名鍵生成部、351A ハッシュ値算出部、352A 整数加算部、353A 逆数算出部、354A 秘密鍵算出部、351B,352B,353B,354B 秘密乱数生成部、351C 秘密乱数生成部、352C 第一秘密元算出部、353C 第二秘密元算出部、351D 秘密乱数生成部、352D 鍵元算出部、353D 鍵整数算出部、360A,360B,360C 秘密鍵出力部、360D 署名鍵出力部、370B 公開鍵生成部、371B,372B,373B,374B 公開元算出部、380B 公開鍵出力部、400A,400B,400C 暗号文生成装置、400D 署名装置、400E 証明装置、410A,410C,410D 識別記憶部、410B 公開鍵記憶部、420A,420B 共通鍵生成部、420D 署名鍵記憶部、421A 秘密ビット列生成部、422A 秘密整数算出部、423A 識別元算出部、424A 暗号元算出部、425A 秘密ペアリング値算出部、426A 暗号ビット列算出部、427A 共通鍵算出部、421B 秘密乱数生成部、422B 第一暗号元算出部、423B 第二暗号元算出部、424B ハッシュ値算出部、425B 整数算出部、426B 第三暗号元算出部、427B 秘密元算出部、428B 共通鍵算出部、430A,430B 共通鍵記憶部、440A,440B,440C,440D メッセージ入力部、450A,450B,450C メッセージ暗号化部、450D 署名生成部、451C 秘密乱数生成部、452C ペアリング値算出部、453C 暗号ビット列算出部、454C 第一暗号元算出部、455C 第二暗号元算出部、456C 暗号整数算出部、451D 第一署名元算出部、452D 秘密乱数生成部、453D 第二署名元算出部、454D チャレンジ算出部、455D 署名整数算出部、454E 質問受信部、460A,460B 暗号化メッセージ出力部、470A,470B,470C 暗号文出力部、470D 署名出力部、470E 認証要求送信部、475E 回答送信部、810A,810B,810C,810D 暗号パラメータ設定装置、811A 公開元生成部、812A 秘密乱数生成部、813A 公開元算出部、814A 秘密乱数出力部、815A 公開元出力部、812C マスター鍵生成部、813C 公開パラメータ生成部、814C マスター鍵出力部、815C 公開パラメータ出力部、816C,817C,818C 秘密乱数生成部、831C 第一公開元算出部、832C 公開ペアリング値算出部、833C 第二公開元算出部、812D 秘密乱数生成部、813D 公開元算出部、814D マスター鍵出力部、815D 公開パラメータ出力部、820A,820C IDベース公開鍵暗号システム、820B 公開鍵暗号システム、820D IDベース署名システム、820E IDベース認証システム、901 表示装置、902 キーボード、903 マウス、904 FDD、905 CDD、906 プリンタ装置、907 スキャナ装置、910 システムユニット、911 CPU、912 バス、913 ROM、914 RAM、915 通信装置、920 磁気ディスク装置、921 OS、922 ウィンドウシステム、923 プログラム群、924 ファイル群、931 電話器、932 ファクシミリ機、940 インターネット、941 ゲートウェイ、942 LAN。

Claims (19)

  1.  データを処理する処理装置と、整数分割部と、検証値算出部と、検証判定部とを有し、
     上記整数分割部は、上記処理装置を用いて、有限群Gの位数pと、整数eとを入力し、入力した位数pと整数eとに基づいて、e・e≡e(mod p)を満たす整数eと整数eとを算出し、
     上記検証値算出部は、上記処理装置を用いて、上記有限群Gの元sと、上記有限群Gの元hとを入力し、入力した元sと元hと、上記整数分割部が算出した整数eと整数eとに基づいて、上記有限群Gの元a(=e・h-e・s)を算出し、
     上記検証判定部は、上記処理装置を用いて、上記検証値算出部が算出した元aに基づいて、上記元aが上記有限群Gの単位元である場合に、検証成功と判定することを特徴とする検証装置。
  2.  上記整数分割部は、上記処理装置を用いて、上記整数eの絶対値が上記位数pの平方根よりも小さく、かつ、上記整数eが上記位数pの平方根よりも小さいという条件を満たす整数eと整数eとを算出することを特徴とする請求項1に記載の検証装置。
  3.  上記検証装置は、更に、データを記憶する記憶装置を有し、
     上記整数分割部は、第一剰余記憶部と、第二剰余記憶部と、初期値設定部と、適合性判定部と、第三剰余算出部と、分割整数出力部とを有し、
     上記第一剰余記憶部は、上記記憶装置を用いて、整数vを記憶し、
     上記第二剰余記憶部は、上記記憶装置を用いて、整数vを記憶し、
     上記初期値設定部は、上記処理装置を用いて、上記位数pを上記整数vとして上記第一剰余記憶部に記憶させ、上記整数eを上記整数vとして上記第二剰余記憶部に記憶させ、
     上記適合性判定部は、上記処理装置を用いて、上記第二剰余記憶部が記憶した整数vが上記位数pの平方根よりも小さい場合に、出力条件を満たしたと判定し、
     上記第三剰余算出部は、上記処理装置を用いて、上記適合性判定部が出力条件を満たしたと判定しない場合に、上記第一剰余記憶部が記憶した整数vと、上記第二剰余記憶部が記憶した整数vとに基づいて、上記整数vを上記整数vで割った余りを算出して、整数vとし、上記第二剰余記憶部が記憶した整数vを上記整数vとして上記第一剰余記憶部に記憶させ、算出した整数vを上記整数vとして上記第二剰余記憶部に記憶させ、
     上記分割整数出力部は、上記処理装置を用いて、上記適合性判定部が出力条件を満たしたと判定した場合に、上記第二剰余記憶部が記憶した整数vを上記整数eとして出力することを特徴とする請求項2に記載の検証装置。
  4.  上記整数分割部は、更に、第一係数記憶部と、第二係数記憶部と、商算出部と、第三係数算出部とを有し、
     上記第一係数記憶部は、上記記憶装置を用いて、整数tを記憶し、
     上記第二係数記憶部は、上記記憶装置を用いて、整数tを記憶し、
     上記初期値設定部は、更に、上記処理装置を用いて、上記整数tとして0を上記第一係数記憶部に記憶させ、上記整数tとして1を上記第二係数記憶部に記憶させ、
     上記商算出部は、上記処理装置を用いて、上記第一剰余記憶部が記憶した整数vと、上記第二剰余記憶部が記憶した整数vとに基づいて、上記整数vを上記整数vで割った商を超えない最大の整数を算出して、整数qとし、
     上記第三係数算出部は、上記処理装置を用いて、上記適合性判定部が出力条件を満たしたと判定しない場合に、上記第一係数記憶部が記憶した整数tと、上記第二係数記憶部が記憶した整数tと、上記商算出部が算出した整数qとに基づいて、上記整数tと上記整数qとの積を、上記整数tから減算した整数を算出して、整数tとし、上記第二係数記憶部が記憶した整数tを上記整数tとして上記第一係数記憶部に記憶させ、算出した整数tを上記整数tとして上記第二係数記憶部に記憶させ、
     上記分割整数出力部は、更に、上記処理装置を用いて、上記適合性判定部が出力条件を満たしたと判定した場合に、上記第二係数記憶部が記憶した整数tを上記整数eとして出力することを特徴とする請求項3に記載の検証装置。
  5.  上記検証値算出部は、上記処理装置を用いて、Σ(n・P)(ただし、nは2以上の所定の整数。iは0以上k以下の整数。kは上記整数eの絶対値及び上記整数eをn進法で表記した場合の桁数の最大値。Pは、上記有限群Gの元で、P=e1,sgn・e1,i・h-e2,i・s。e1,sgnは1または-1。e1,i及びe2,iは0以上n-1以下の整数で、e=e1,sgn・Σ(n・e1,i)、e=Σ(n・e2,i)。)を算出して、上記有限群Gの元aとすることを特徴とする請求項1に記載の検証装置。
  6.  データを記憶する記憶装置と、データを処理する処理装置と、鍵記憶部と、暗号文入力部と、暗号文検証部と、請求項1に記載の検証装置と、復号文生成部とを有し、
     上記鍵記憶部は、上記記憶装置を用いて、暗号文を復号する鍵を記憶し、
     上記暗号文入力部は、上記処理装置を用いて、暗号文を入力し、
     上記暗号文検証部は、上記処理装置を用いて、上記鍵記憶部が記憶した鍵と、上記暗号文入力部が入力した暗号文とに基づいて、上記検証装置に入力する整数eと、上記有限群Gの元sと、上記有限群Gの元hとを算出し、
     上記検証装置は、上記暗号文検証部が算出した整数eと、上記有限群Gの元sと、上記有限群Gの元hとを入力して、検証成功か否かを判定し、
     上記復号文生成部は、上記処理装置を用いて、上記検証装置が検証成功と判定した場合に、上記暗号文入力部が入力した暗号文を上記鍵記憶部が記憶した鍵により復号して、復号文を生成することを特徴とする暗号文復号装置。
  7.  上記暗号文復号装置は、更に、暗号パラメータ記憶部と、識別記憶部と、識別元算出部と、識別元記憶部とを有し、
     上記暗号パラメータ記憶部は、上記記憶装置を用いて、上記有限群Gの位数pと、上記有限群Gの生成元gと、上記有限群Gの元Rとを記憶し、
     上記識別記憶部は、上記記憶装置を用いて、上記暗号文復号装置を識別するビット列IDを記憶し、
     上記識別元算出部は、上記処理装置を用いて、上記識別記憶部が記憶したビット列IDに基づいて、所定のハッシュ関数Hにより上記ビット列IDをハッシュしたハッシュ値を算出して、整数H(ID)とし、上記暗号パラメータ記憶部が記憶した生成元gと、上記暗号パラメータ記憶部が記憶した元Rと、算出した整数H(ID)とに基づいて、上記生成元gを整数H(ID)倍した元と、上記元Rとを加算して、上記有限群Gの元Q(=R+H(ID)・g)とし、
     上記識別元記憶部は、上記記憶装置を用いて、上記識別元算出部が算出した元Qを記憶し、
     上記鍵記憶部は、上記記憶装置を用いて、有限群Gの元DIDを記憶し、
     上記暗号文入力部は、上記処理装置を用いて、上記有限群Gの元Uと、ビット列Vとを上記暗号文として入力し、
     上記暗号文検証部は、ペアリング値算出部と、ビット列算出部と、整数算出部とを有し、
     上記ペアリング値算出部は、上記処理装置を用いて、上記暗号文入力部が入力した元Uと、上記鍵記憶部が記憶した元DIDとに基づいて、所定のペアリング関数eにより上記元Uと上記元DIDとのペアリング値を算出して、ペアリング値α(=e(U,DID))とし、
     上記ビット列算出部は、上記処理装置を用いて、上記ペアリング値算出部が算出したペアリング値αに基づいて、所定のハッシュ関数Hにより上記ペアリング値αをハッシュしたハッシュ値を算出して、ビット列H(α)とし、上記暗号文入力部が入力したビット列Vと、算出したビット列H(α)とに基づいて、上記ビット列Vと上記ビット列H(α)との排他的論理和を取って、ビット列m(=V XOR H(α))とし、
     上記整数算出部は、上記処理装置を用いて、上記ビット列算出部が算出したビット列mに基づいて、所定のハッシュ関数Hにより上記ビット列mをハッシュしたハッシュ値を算出して、整数r(=H(m))とし、
     上記検証装置は、上記位数pとして上記暗号パラメータ記憶部が記憶した位数pと、上記整数eとして上記整数算出部が算出した整数rと、上記元sとして上記識別元記憶部が記憶した元Qと、上記元hとして上記暗号文入力部が入力した元Uとを入力して、検証成功か否かを判定し、
     上記復号文生成部は、上記処理装置を用いて、上記検証装置が検証成功と判定した場合に、上記ビット列算出部が算出したビット列mに基づいて、所定のハッシュ関数Hにより上記ビット列mをハッシュしたハッシュ値を算出して、共通鍵K(=H(m))とし、算出した共通鍵Kを上記復号文として出力することを特徴とする請求項6に記載の暗号文復号装置。
  8.  上記識別元算出部は、上記暗号文入力部が上記暗号文を入力するよりも前に、上記元Qを算出することを特徴とする請求項7に記載の暗号文復号装置。
  9.  上記暗号文復号装置は、更に、共通鍵記憶部と、暗号化メッセージ入力部と、メッセージ復号部とを有し、
     上記共通鍵記憶部は、上記記憶装置を用いて、上記復号文生成部が出力した共通鍵Kを記憶し、
     上記暗号化メッセージ入力部は、上記処理装置を用いて、暗号化メッセージを入力し、
     上記メッセージ復号部は、上記処理装置を用いて、上記共通鍵記憶部が記憶した共通鍵Kにより上記暗号化メッセージ入力部が入力した暗号化メッセージを復号することを特徴とする請求項7に記載の暗号文復号装置。
  10.  上記暗号文復号装置は、更に、暗号パラメータ記憶部を有し、
     上記暗号パラメータ記憶部は、上記記憶装置を用いて、上記有限群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に記載の暗号文復号装置。
  11.  上記暗号文復号装置は、更に、共通鍵記憶部と、暗号化メッセージ入力部と、メッセージ復号部とを有し、
     上記共通鍵記憶部は、上記記憶装置を用いて、上記復号文生成部が出力した共通鍵Kを記憶し、
     上記暗号化メッセージ入力部は、上記処理装置を用いて、暗号化メッセージを入力し、
     上記メッセージ復号部は、上記処理装置を用いて、上記共通鍵記憶部が記憶した共通鍵Kにより上記暗号化メッセージ入力部が入力した暗号化メッセージを復号することを特徴とする請求項10に記載の暗号文復号装置。
  12.  上記暗号文復号装置は、更に、暗号パラメータ記憶部を有し、
     上記暗号パラメータ記憶部は、上記記憶装置を用いて、加法群Gの位数pと、上記加法群Gの生成元gと、上記位数pを位数とする乗法群Gの元vとを記憶し、
     上記鍵記憶部は、上記記憶装置を用いて、上記位数pを位数とする加法群Gの元dと、上記加法群Gの元dとを記憶し、
     上記暗号文入力部は、上記処理装置を用いて、ビット列cと、上記加法群Gの元cと、上記加法群Gの元cと、1以上p-1以下の整数tとを上記暗号文として入力し、
     上記暗号文検証部は、ペアリング値算出部と、整数算出部とを有し、
     上記ペアリング値算出部は、上記処理装置を用いて、上記暗号文入力部が入力した元cと、上記秘密鍵記憶部が記憶した元dとに基づいて、所定のペアリング関数eにより上記元cと上記元dとのペアリング値を算出して、上記乗法群Gの元k(=e(c,d))とし、上記暗号文入力部が入力した元cと、上記秘密鍵記憶部が記憶した元dとに基づいて、上記ペアリング関数eにより上記元cと上記元dとのペアリング値を算出して、上記乗法群Gの元k(=e(c,d))とし、算出した上記元kと、算出した上記元kとに基づいて、上記元kを上記元kで除算して、上記乗法群Gの元k(=k/k)とし、
     上記整数算出部は、上記処理装置を用いて、上記ペアリング値算出部が算出した元kと、上記暗号文入力部が入力したビット列cと元cと元cとに基づいて、所定のハッシュ関数H”により上記元kと上記ビット列cと上記元cと上記元cとをハッシュしたハッシュ値を算出して、整数H”(k,c,c,c)とし、上記暗号文入力部が入力した整数tと、算出した整数H”(k,c,c,c)と、上記暗号パラメータ記憶部が機記憶した位数pとに基づいて、上記整数tから上記整数H”(k,c,c,c)を減算した整数を位数pで割った余りを算出して、整数s(=t-H”(k,c,c,c)mod p)とし、
     上記検証装置は、上記加法群Gを上記有限群Gとして、上記位数pとして上記暗号パラメータ記憶部が記憶した位数pと、上記整数eとして上記整数算出部が算出した整数sと、上記元sとして上記暗号パラメータ記憶部が記憶した生成元gと、上記元hとして上記暗号文入力部が入力した元cとを入力し、検証成功か否かを判定して、第一の検証結果とし、上記乗法群Gを上記有限群Gとして、上記位数pとして上記暗号パラメータ記憶部が記憶した位数pと、上記整数eとして上記整数算出部が算出した整数sと、上記元sとして上記暗号パラメータ記憶部が記憶した元vと、上記元hとして上記ペアリング値算出部が算出した元kとを入力し、検証成功か否かを判定して、第二の検証結果とし、
     上記復号文生成部は、上記処理装置を用いて、上記検証装置が上記第一の検証結果及び上記第二の検証結果おいてともに検証成功と判定した場合に、上記ペアリング値算出部が算出した元kとに基づいて、所定のハッシュ関数H’により上記元kをハッシュしたハッシュ値を算出して、ビット列H’(k)とし、上記暗号文入力部が入力したビット列cと、算出したビット列H’(k)とに基づいて、上記ビット列cと上記ビット列H’(k)との排他的論理和を取って、ビット列M’(=c XOR H’(k))とし、算出したビット列M’を上記復号文として出力することを特徴とする請求項6に記載の暗号文復号装置。
  13.  データを処理する処理装置と、メッセージ入力部と、署名入力部と、署名検証部と、請求項1に記載の検証装置と、検証結果出力部とを有し、
     上記メッセージ入力部は、上記処理装置を用いて、メッセージを入力し、
     上記署名入力部は、上記処理装置を用いて、上記メッセージ入力部が入力したメッセージに対する署名を入力し、
     上記署名検証部は、上記処理装置を用いて、上記メッセージ入力部が入力したメッセージと、上記署名入力部が入力した署名とに基づいて、上記検証装置に入力する整数eと、上記有限群Gの元sと、上記有限群Gの元hとを算出し、
     上記検証装置は、上記署名検証部が算出した整数eと、上記有限群Gの元sと、上記有限群Gの元hとを入力して、検証成功か否かを判定し、
     上記検証結果出力部は、上記処理装置を用いて、上記検証装置が検証した結果に基づいて、検証成功であるか否か表わす検証結果を出力することを特徴とする署名検証装置。
  14.  上記署名検証装置は、更に、データを記憶する記憶装置と、暗号パラメータ記憶部と、識別記憶部とを有し、
     上記暗号パラメータ記憶部は、上記記憶装置を用いて、上記有限群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に記載の署名検証装置。
  15.  データを処理する処理装置と、データを送信する送信装置と、データを受信する受信装置と、認証要求受信部と、質問送信部と、回答受信部と、署名検証部と、請求項1に記載の検証装置と、認証結果出力部とを有し、
     上記認証要求受信部は、上記受信装置を用いて、認証要求メッセージを受信し、
     上記質問送信部は、上記送信装置を用いて、上記認証要求受信部が受信した認証要求メッセージに対する応答として、質問メッセージを送信し、
     上記回答受信部は、上記受信装置を用いて、送信した質問メッセージに対する回答メッセージを受信し、
     上記署名検証部は、上記処理装置を用いて、上記認証要求受信部が受信した認証要求メッセージと、上記回答受信部が受信した回答メッセージとに基づいて、上記検証装置に入力する整数eと、上記有限群Gの元sと、上記有限群Gの元hとを算出し、
     上記検証装置は、上記署名検証部が算出した整数eと、上記有限群Gの元sと、上記有限群Gの元hとを入力して、検証成功か否かを判定し、
     上記認証結果出力部は、上記処理装置を用いて、上記検証装置が検証した結果に基づいて、認証成功であるか否か表わす認証結果を出力することを特徴とする認証装置。
  16.  上記認証装置は、更に、データを記憶する記憶装置と、暗号パラメータ記憶部と、識別記憶部と、チャレンジ生成部とを有し、
     上記暗号パラメータ記憶部は、上記記憶装置を用いて、上記有限群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に記載の認証装置。
  17.  請求項1に記載の検証装置を有することを特徴とする暗号システム。
  18.  データを処理する処理装置を有するコンピュータを、請求項1に記載の検証装置として機能させることを特徴とするコンピュータプログラム。
  19.  データを処理する処理装置を有する検証装置が、整合性を検証する検証方法において、
     上記処理装置が、有限群Gの位数pと、整数eとを入力し、入力した位数pと整数eとに基づいて、e・e≡e(mod p)を満たす整数eと整数eとを算出し、
     上記処理装置が、上記有限群Gの元sと、上記有限群Gの元hとを入力し、入力した元gと元hと、算出した整数eと整数eとに基づいて、上記有限群Gの元a(=e・h-e・s)を算出し、
     上記処理装置が、算出した元aに基づいて、上記元aが上記有限群Gの単位元である場合に、検証成功と判定することを特徴とする検証方法。
PCT/JP2008/052884 2008-02-20 2008-02-20 検証装置 WO2009104260A1 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
EP08720765.0A EP2244243B1 (en) 2008-02-20 2008-02-20 Verifying device
PCT/JP2008/052884 WO2009104260A1 (ja) 2008-02-20 2008-02-20 検証装置
CN2008801253575A CN101925942B (zh) 2008-02-20 2008-02-20 验证装置
JP2009554166A JP5079024B2 (ja) 2008-02-20 2008-02-20 検証装置及び暗号文復号装置及び署名検証装置及び認証装置及び暗号システム及びコンピュータプログラム
US12/809,440 US8458479B2 (en) 2008-02-20 2008-02-20 Verification apparatus

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)

* Cited by examiner, † Cited by third party
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
DE112013000357B4 (de) * 2012-01-19 2018-02-15 Globalfoundries Inc. System zum Authentifizieren einer Annahme einer Zeichenfolge durch einen Automaten
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
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
US9100175B2 (en) 2013-11-19 2015-08-04 M2M And Iot Technologies, Llc Embedded universal integrated circuit card supporting two-factor authentication
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
WO2015132632A1 (en) * 2014-03-06 2015-09-11 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
US10404454B1 (en) * 2018-04-25 2019-09-03 Blockchain Asics Llc Cryptographic ASIC for derivative key hierarchy
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
US20200412545A1 (en) * 2019-06-26 2020-12-31 Micron Technology, Inc. Payload validation for a memory system

Citations (4)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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
CA2253009C (en) * 1997-11-04 2002-06-25 Nippon Telegraph And Telephone Corporation Method and apparatus for modular inversion for information security and recording medium with a program for implementing the method
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
EP1430641A2 (en) * 2001-09-27 2004-06-23 Matsushita Electric Industrial Co., Ltd. An 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
US7197527B2 (en) * 2002-10-17 2007-03-27 Telefonaktiebolaget Lm Ericsson (Publ) Efficient arithmetic in finite fields of odd characteristic on binary hardware
US7724898B2 (en) * 2002-10-17 2010-05-25 Telefonaktiebolaget L M Ericsson (Publ) Cryptography using 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
WO2006115021A1 (ja) * 2005-04-18 2006-11-02 Matsushita Electric Industrial Co., Ltd. 署名生成装置及び署名検証装置
EP1993086B1 (en) 2006-01-11 2012-09-05 Mitsubishi Electric Corporation Elliptical curve encryption parameter generation device, elliptical curve encryption calculation device, elliptical curve encryption parameter generation program, and elliptical curve encryption calculation program
CN101617351B (zh) 2007-01-19 2011-06-22 三菱电机株式会社 密文生成装置、密码通信系统以及群参数生成装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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
US8458479B2 (en) 2013-06-04
EP2244243A4 (en) 2013-11-13
EP2244243B1 (en) 2017-12-13
US20100275028A1 (en) 2010-10-28
CN101925942B (zh) 2013-11-27
EP2244243A1 (en) 2010-10-27
JP5079024B2 (ja) 2012-11-21
CN101925942A (zh) 2010-12-22
JPWO2009104260A1 (ja) 2011-06-16

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) 暗号キー回復システム
JP4859933B2 (ja) 暗号文生成装置及び暗号通信システム及び群パラメータ生成装置
US7308097B2 (en) Digital signature and authentication method and apparatus
CN110830236B (zh) 基于全域哈希的身份基加密方法
US7574596B2 (en) Cryptographic method and apparatus
Harkins Dragonfly key exchange
CN110113150B (zh) 基于无证书环境的可否认认证的加密方法和系统
US20150288527A1 (en) Verifiable Implicit Certificates
CN110896351B (zh) 基于全域哈希的身份基数字签名方法
CN114448641A (zh) 一种隐私加密方法、电子设备、存储介质以及芯片
Lizama-Pérez et al. Public hash signature for mobile network devices
US20150006900A1 (en) Signature protocol
CN111669275B (zh) 一种无线网络环境下可选择从节点的主从协作签名方法
CN116346336B (zh) 一种基于多层密钥生成中心的密钥分发方法及相关系统
Yang et al. Certificateless universal designated verifier signature schemes
CN115442057A (zh) 一种具有强不可链接性的可随机化盲签名方法及系统
JP5679344B2 (ja) 署名鍵難読化システム、署名鍵難読化方法、難読化された署名鍵を用いた暗号化署名システム、難読化された署名鍵を用いた暗号化署名方法とプログラム
WO2023016729A1 (en) Generating digital signature shares
Dugardin et al. A New Fair Identity Based Encryption Scheme
Kumar A Reliable Authentication Protocol for Peer to Peer Based Applications

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