WO2018043498A1 - ワンタイム認証用icカード - Google Patents

ワンタイム認証用icカード Download PDF

Info

Publication number
WO2018043498A1
WO2018043498A1 PCT/JP2017/030973 JP2017030973W WO2018043498A1 WO 2018043498 A1 WO2018043498 A1 WO 2018043498A1 JP 2017030973 W JP2017030973 W JP 2017030973W WO 2018043498 A1 WO2018043498 A1 WO 2018043498A1
Authority
WO
WIPO (PCT)
Prior art keywords
authentication
card
time
seed
server
Prior art date
Application number
PCT/JP2017/030973
Other languages
English (en)
French (fr)
Inventor
大河 克好
Original Assignee
合同会社Fom研究所
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 合同会社Fom研究所 filed Critical 合同会社Fom研究所
Publication of WO2018043498A1 publication Critical patent/WO2018043498A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/44Program or device authentication
    • 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

Definitions

  • the present invention relates to a one-time authentication IC card that performs authentication between server devices using a one-time authenticator.
  • the client device in Patent Document 1 is a terminal device. Even in Patent Document 1, an IC card is used, but it is used as a portable storage device, not as a client device. Therefore, in the one-time mutual authentication system in Patent Document 1, a terminal device is required as a client device separately from the IC card.
  • the server-side seed used for generating the client-side authenticator and the server-side authenticator is common, the client-side authenticator and the server-side authenticator use the client-side current authentication random number and the client-side next time You may be asked for a random number for authentication. If the random number for the next authentication on the client side is obtained, a common encryption key can be derived, and there is a risk of impersonating the client or server in the next authentication.
  • the present invention has been made in view of the above problems, does not require a terminal device, is less likely to be impersonated as a client or a server at the next authentication, and has one card with one or more services.
  • An object of the present invention is to provide an IC card that can be authenticated.
  • An IC card is an IC card incorporating a nonvolatile memory and a RAM, Storing a set of authentication seed and common encryption key common to one or more services in the non-volatile memory; A set of authentication seeds and a common encryption key common to the one or more services are copied from the non-volatile memory to the operation stack on the RAM, and then copied to the operation stack on the RAM Based on a set of authentication seeds that are used for mutual authentication between the IC card and the server device and copied to the operation stack on the RAM, from the server device. The validity of the received one-time authenticator is determined.
  • a terminal device is unnecessary, and one IC card can be used for authentication of one or more services. Moreover, since the authentication seed and the common encryption key are stored in the nonvolatile memory, they are not stolen by skimming.
  • the IC card according to the present invention is characterized in that the authentication seed includes concealment fixing information that is not transmitted from the IC card to the server device and is not updated after mutual authentication.
  • the one-time authenticator is generated based on the concealment fixed information that is not transmitted from the IC card to the server device, even if a common encryption key is requested, it is impersonated as a client or a server. There is no fear.
  • the common encryption key used when the transmission data is encrypted by the IC card is different from the common encryption key used when the server device encrypts the transmission data. It is a common encryption key.
  • the transmission data is encrypted with different encryption keys between the IC card and the server device, so that security can be enhanced.
  • the IC card side authentication seed used for generating the IC card side authenticator is a seed different from the IC card side authentication seed used for generating the server device side one-time authenticator. It is characterized by being.
  • the IC card according to the present invention is generated by the server device, encrypted and transmitted, and the IC card side authentication seed is received by the IC card and decrypted and used to create a one-time authenticator. It is characterized by.
  • the IC card according to the present invention is characterized in that a client-side one-time authenticator for the current authentication is stored in the nonvolatile memory at the end of the previous authentication.
  • An IC card is an IC card incorporating a nonvolatile memory and a RAM, Storing in the non-volatile memory one or more sets of authentication seeds and a common encryption key corresponding to one or more service request identifications; A set of authentication seeds and a common encryption key corresponding to a specific service request identification are copied from the non-volatile memory to the operation stack on the RAM, and then copied to the operation stack on the RAM. Based on a set of authentication seeds that are used for mutual authentication between the IC card and the server device and copied to the operation stack on the RAM, from the server device. The validity of the received one-time authenticator is determined.
  • a terminal device is unnecessary, and one IC card can be used for authentication in one or more services.
  • one IC card can be used for authentication of one or more services, and it is possible to provide an IC card that can be impersonated as a client or a server. Moreover, since the authentication seed and the common encryption key are stored in the nonvolatile memory, they are not stolen by skimming.
  • FIG. 1 is a diagram showing a configuration of a one-time authentication system according to an embodiment of the present invention.
  • an IC card reader / writer 2 is connected to a network 3.
  • a server device 4 is also connected to the network 3.
  • the IC card reader / writer 2 may include a display.
  • the IC card 1 is used in proximity to the reader / writer 2 or electrically connected to the reader / writer 2.
  • the IC card 1 can perform data communication with the server device 4 using the reader / writer 2.
  • the IC card of the present invention can be used for authentication in one or more services.
  • a method of providing one or more services with one IC card the following two methods are conceivable.
  • the first method is a method in which a set of authentication seeds is stored in the IC card, and the user designates which service to use.
  • FIG. 2 shows an outline of the first method.
  • the IC card 1 in FIG. 2 is assumed to be a non-contact type.
  • the reader / writer 2 that has detected the approach transmits a read request signal not including parameters to the IC card 1.
  • the authentication server 4 stores services available to the owner of the IC card 1 and displays a list of services on the display of the reader / writer 2. The user looks at the display and selects a service to be used. The reader / writer 2 connects to the service server of the selected service. In this way, a set of authentication seeds can be stored in the IC card, and one or more services can be used.
  • the second method is a method in which one or more sets of authentication seeds are stored in the IC card 1 and a service to be used is determined depending on which reader / writer is used.
  • FIG. 3 shows an outline of the second method.
  • the IC card 1 in FIG. 3 is also assumed to be a non-contact type.
  • the reader / writer 2 in FIG. 3 exists for each service. Therefore, the reader / writer 2 stores which service the reader / writer is as a service request identification.
  • the reader / writer 2 When the IC card 1 approaches the reader / writer 2 with a display, the reader / writer 2 that has detected the approach transmits to the IC card 1 a read request signal that includes a service request identification that identifies the service as a parameter. The reader / writer 2 also transmits service request identification data to the authentication server. The IC card 1 reads out one set of authentication seeds specified by the received service request identification from one or more sets of authentication seeds stored in the IC card 1 and uses them for one-time authentication processing.
  • the second method for storing one or more sets of authentication seeds is more complicated as the configuration and operation of the IC card, the following embodiments will use one or more sets of authentication seeds in the second method. A description will be given of the storage configuration.
  • FIG. 4 is a functional block diagram of the IC card 1.
  • the IC card 1 includes an IC chip 10 that is a semiconductor device.
  • the IC chip 10 is a control unit 11, a ROM 12, a RAM 13, a FeRAM (Ferroelectric Random Access Memory) 14 which is a kind of nonvolatile memory, an antenna 17 for transmitting and receiving signals from the outside, and a receiving unit.
  • the receiving circuit 15 includes a transmitting circuit 16 as a transmitting unit, and an internal bus 18.
  • the FeRAM 14 is a non-volatile memory using a ferroelectric, can be accessed at high speed, and has high reliability.
  • the control unit 11 is a part for performing various determinations such as processing for generating a random number, creating a one-time authenticator, updating a common encryption key, encrypting and decrypting data.
  • the control unit 11 can be configured by a CPU executing a program, but can also be configured by an electronic circuit without a CPU. Here, an electronic circuit without a CPU is used.
  • the ROM 12 stores data that does not need to be changed, such as a card ID 121 unique to the IC card.
  • the FeRAM 14 stores a seed for creating a one-time authenticator and an authentication seed 141 for holding a common encryption key.
  • the RAM 13 stores an arithmetic stack 131 for temporarily storing data, an input memory 132 for storing input data to the IC card 1, and an output memory 133 for storing output data from the IC card 1. Is provided.
  • FIG. 5 shows data held in the area of the authentication seed 141.
  • FIG. 5 shows an example of a pair of authentication seeds specified by an arbitrary service request identification i.
  • CRi (n ⁇ 1) is a first seed on the client side that is generated on the client side and used as an argument when creating a one-time authenticator on the client side.
  • CQi (n ⁇ 1) is a second seed on the client side that is generated on the client side and used as an argument when creating a one-time authenticator on the server side.
  • CKi (n ⁇ 1) is a common encryption key for encrypting data on the client side.
  • CZi is concealment fixed information used as an argument when creating a one-time authenticator on the client side.
  • CZi is not transmitted / received by communication between the IC card 1 and the server device 4.
  • SRi (n ⁇ 1) is a first seed on the server side that is generated on the server side and used as an argument when creating a one-time authenticator on the server side.
  • SQi (n ⁇ 1) is a second seed on the server side that is generated on the server side and used as an argument when creating a one-time authenticator on the client side.
  • SKi (n ⁇ 1) is a common encryption key used when encrypting data on the server side.
  • SZi is concealment fixed information used as an argument when creating a one-time authenticator on the server side. SZi is not transmitted / received by communication between the IC card 1 and the server device 4.
  • FIG. 6 shows a plurality of data stacks provided in the area of the arithmetic stack 131.
  • CR1 (n-1) is the first seed on the client side for the current (n-1) one-time authentication.
  • CQ1 (n-1) is the second seed on the client side for the one-time authentication of this time (n-1).
  • CK1 (n-1) is a client that encrypts the seed CR1 (n) and CQ1 (n) on the client side for the next authentication and transmits them to the server device 4 during the one-time authentication this time (n-1) Side encryption key.
  • CZ1 is concealment fixed information used as an argument when creating a one-time authenticator on the client side.
  • SR1 (n-1) is the first seed on the server side for the current (n-1) one-time authentication.
  • SQ1 (n-1) is the second seed on the server side for the one-time authentication of this time (n-1).
  • SK1 (n-1) is the server side when encrypting and transmitting the server side seed SR1 (n) and SQ1 (n) for the next authentication to the IC card 1 at the time of the one-time authentication this time (n-1) It is an encryption key.
  • SZ1 is concealment fixed information used as an argument when creating a one-time authenticator on the server side.
  • CR1 (n) is the first seed on the client side for the next (n) one-time authentication.
  • CQ1 (n) is the second seed on the client side for the next (n) one-time authentication.
  • exS is an area for storing a scheduled server ID, and is collated with a one-time authenticator transmitted from the server side.
  • the check code CHECK-S is an area in which data that is collated with the falsification check code CheckIN transmitted from the server is stored.
  • FIG. 7 shows a logic circuit in the control unit 11.
  • RAND is a random number generation circuit that generates random numbers.
  • ENC is an encryption circuit.
  • DEC is a decoding circuit.
  • CMP is a comparison circuit.
  • the hash circuit Hash1 is a hash circuit that calculates the one-time authenticator C1 (n-1) on the client side this time.
  • the hash circuit Hash2 is a hash circuit that calculates exS that is a reception scheduled server ID.
  • the hash circuit Hash3 is a hash circuit that calculates the falsification check code CheckOUT.
  • the hash circuit Hash4 is a hash circuit that calculates a check code CHECK-S that is checked against the falsification check code CheckIN transmitted from the server.
  • the hash circuit Hash5 is a hash circuit that updates the common encryption key CK1 on the client side.
  • the hash circuit Hash6 is a hash circuit that updates the server-side common encryption key SK1.
  • FIG. 8 shows an area of the output memory 133 that stores data output from the IC card 1.
  • Area C1 (n-1) is an area for storing the current client-side one-time authenticator C1 (n-1).
  • the area CK1 (n-1) * CR1 (n) is an area for storing the current client-side common encryption key CK1 (n-1) that is obtained by encrypting the next authentication client-side first seed CR1 (n). It is.
  • Area CK1 (n-1) * CQ1 (n) is an area for storing the current client-side common encryption key CK1 (n-1), which is obtained by encrypting the next authentication client-side second seed CQ1 (n). It is.
  • the area CheckOUT is an area for storing the falsification check code CheckOUT.
  • FIG. 9 shows an area of the input memory 132 that stores data to be input to the IC card 1.
  • the area Si (n-1) is an area for storing the server's one-time authenticator Si (n-1).
  • Area SKi (n-1) * SRi (n) is an area for storing the current server-side common encryption key SKi (n-1), which is obtained by encrypting the next authentication server-side first seed SRi (n). It is.
  • Area SKi (n-1) * SQi (n) is an area for storing the current server-side common encryption key SKi (n-1), which is obtained by encrypting the next authentication server-side second seed SQi (n). It is.
  • the area CheckIN is an area for storing the falsification check code CheckIN.
  • FIG. 10 is a diagram showing a configuration of the server device 4 in FIG.
  • a CPU 51 is an arithmetic processing unit that executes a program and executes a process described in the program.
  • the ROM 52 is a nonvolatile memory that stores programs and data in advance.
  • the RAM 53 is a memory that temporarily stores the program and data when the program is executed.
  • the interface 54 is an interface circuit to which the storage device 55 can be connected.
  • the storage device 55 is connected to the interface 54 and has a storage medium that stores an operating system (not shown), a one-time authentication program 61, data used for authentication, and the like.
  • As the storage device 55 a hard disk drive, SSD, or the like is used.
  • the storage device 55 holds a seed table group 71, an authenticator table group 72, and an IC card attribute table 73 as data used for authentication.
  • the seed table group 71 stores one or more seed tables for each service request identification.
  • a seed table corresponding to an arbitrary service request identification i is represented by a seed table 71i.
  • the seed table 71i has a seed for next authentication and a common encryption key for next authentication updated at the time of the last mutual authentication.
  • the next authentication seed and the next authentication common encryption key are held separately for each of one or a plurality of IC cards 1.
  • the authenticator table group 72 stores one or more authenticator tables for each service request identification.
  • An authenticator table corresponding to an arbitrary service request identification i is represented by an authenticator table 72i.
  • the authenticator table 72i has a client-side one-time authenticator for next authentication updated at the last authentication.
  • the client side one-time authenticator for the next authentication is held separately for each of one or a plurality of IC cards 1. *
  • the IC card attribute table 73 is a table having a card ID of the IC card 1 and attribute information (such as card owner information) associated with the card ID.
  • the IC card attribute table 73 is referred to when determining the validity of the card ID received together with the one-time authenticator when the one-time authenticator is a one-time password.
  • the interface 56 is an interface circuit to which the communication device 57 can be connected.
  • the communication device 57 is a device connectable to the network 3 such as a network interface card or a modem.
  • the CPU 51, the ROM 52, the RAM 53, and the interfaces 54 and 56 are connected to each other by a bus or a control chip so that data communication can be performed.
  • FIG. 11 is a block diagram showing a processing unit realized by the server device 4. As shown in FIG. 11, a communication processing unit 81 and a server side authentication processing unit 82 are realized in the server device 4.
  • the communication processing unit 81 uses the communication device 57 to perform data communication with the IC card via a network using a predetermined communication protocol.
  • the server-side authentication processing unit 82 is realized by the CPU 51 executing the one-time authentication program 61, and based on the one-time authenticator with one or a plurality of IC cards 1 using the communication processing unit 81. Execute server side processing in mutual authentication.
  • the IC card 1 stores the concealment fixed information CZi, SZi, seed CRi (n ⁇ 1), CQi (n ⁇ 1), SRi (n ⁇ ) in the authentication seed area 141 for each service request identification. 1), SQi (n-1), common encryption keys CKi (n-1), and SKi (n-1).
  • the server device also has the same hidden fixed information CZi, SZi, seed CRi (n-1), CQi (n-1), SRi (n-1), SQi (n-1) for each service request identification. , Common encryption keys CKi (n ⁇ 1) and SKi (n ⁇ 1) are held.
  • seeds CRi (n ⁇ 1) and CQi (n ⁇ 1) are client side seeds in the current mutual authentication session corresponding to service request identification i, and seed CRi (n ⁇ 1) is a client side seed.
  • the seed CQi is used as an argument when creating the one-time authenticator on the server side.
  • the seeds SRi (n ⁇ 1) and SQi (n ⁇ 1) are server side seeds in the current mutual authentication session corresponding to the service request identification i, and the seed SRi (n ⁇ 1) is a server side seed.
  • the seed SQi (n ⁇ 1) is used as an argument when creating a one-time authenticator on the client side.
  • the common encryption key CKi (n-1) is sent from the IC card 1 to the server device 4 for the next authentication client-side seed CRi (n) and CQi (n) in the current mutual authentication session corresponding to the service request identification i.
  • This is a common encryption key for encrypting CRi (n) and CQi (n) when transmitting.
  • the common encryption key SKi (n ⁇ 1) is obtained from the server device 4 from the server device 4 to the IC card 1 in the next mutual authentication session corresponding to the service request identification i, for the next authentication server side seed SRi (n), SQi (n). This is a common encryption key for encrypting the SRi (n) and SQi (n) when transmitting to.
  • Seed CRi (n-1), CQi (n-1), SRi (n-1), SQi (n-1), and common encryption key CKi (n-1), SKi (n-1) are service requests A mutual authentication session corresponding to the identification i is executed and updated each time the mutual authentication is successful.
  • FIGS. 12 to 14 are sequence diagrams illustrating mutual authentication based on the one-time authenticator executed in the system of FIG.
  • step S1 the reader / writer 2 detects the approach of the IC card 1.
  • step S2 upon request for reading from the reader / writer 2, a service request identification is given to the IC card 1 as a parameter.
  • the service request identification data is also transmitted to the server device 4.
  • the service request identification “i” is given to the IC card 1 and the server device 4.
  • step S3 the control unit 11 of the IC card 1 copies the concealment fixed information, the seed, and the common encryption key corresponding to the given service request identification from the authentication seed 141 to the operation stack 131. Since the given service request identification is “i”, CRi (n ⁇ 1), CQi (n ⁇ 1), CKi (n ⁇ 1), CZi, SRi (n ⁇ 1), SQi (n ⁇ ) of the authentication seed 141 1), SKi (n-1), and SZi are converted into CR1 (n-1), CQ1 (n-1), CK1 (n-1), CZ1, SR1 (n-1), SQ1 ( n-1), SK1 (n-1), and SZ1 are copied.
  • step S4 the random number generation circuit RAND generates a first random number CR, and sets the generated first random number CR in the client-side first seed CR1 (n) for next authentication on the arithmetic stack 131.
  • the random number generation circuit RAND generates a second random number CQ, and sets the generated second random number CQ in the client-side second seed CQ1 (n) for next authentication on the arithmetic stack 131.
  • step S5 the hash circuit Hash2 calculates exS by the following equation using SZ1, CQ1 (n-1), SR1 (n-1) held in the operation stack 131, and Store in the area.
  • exS is calculated as a one-way function.
  • the one-way function hash2 is a function that takes three arguments and has different function values depending on the order of the arguments.
  • exS hash2 ⁇ SZ1, SR1 (n-1), CQ1 (n-1) ⁇
  • step S ⁇ b> 6 the hash circuit Hash ⁇ b> 1 calculates the client-side one-time authenticator C ⁇ b> 1 (n ⁇ 1) for the current one-time authentication according to the following equation and stores it in the corresponding area of the output memory 133.
  • C1 (n-1) is calculated as a one-way function.
  • the one-way function hash1 is a function that takes three arguments and has different function values depending on the order of the arguments.
  • C1 (n-1) hash1 ⁇ CZ1, CR1 (n-1), SQ1 (n-1) ⁇
  • step S 7 the encryption circuit ENC encrypts the next client side first seed CR 1 (n) for authentication with the common encryption key CK 1 (n ⁇ 1) and stores it in the corresponding area of the output memory 133.
  • CR1 (n) encrypted with the common encryption key CK1 (n-1) is expressed as CK1 (n-1) * CR1 (n).
  • step S7 the encryption circuit ENC encrypts the next client side second seed CQ1 (n) for authentication with the encryption key CK1 (n-1) and stores it in the corresponding area of the output memory.
  • CQ1 (n) encrypted with the common encryption key CK1 (n-1) is expressed as CK1 (n-1) * CQ1 (n).
  • step S ⁇ b> 8 the hash circuit Hash ⁇ b> 3 calculates the falsification check code CheckOUT according to the following equation and stores it in the corresponding area of the output memory 133.
  • the falsification check code CheckOUT is calculated by a one-way function.
  • the one-way function hash3 is a function that takes four arguments and has different function values depending on the order of the arguments.
  • CheckOUT hash3 ⁇ CK1 (n-1), C1 (n-1), CK1 (n-1) * CR1 (n), CK1 (n-1) * CQ1 (n) ⁇
  • step S9 C1 (n-1), CK1 (n-1) * CR1 (n), CK1 (n-1) * CQ1 (n), and CheckOUT are transmitted from the IC card 1 to the server device 4.
  • step S10 the server-side authentication processing unit 82 on the server side uses the seed table and authenticator table corresponding to the service request identification received in step S2.
  • step S10 the server-side authentication processing unit 82 on the server side receives the client-side one-time authenticator Ci () corresponding to the service request identification i held by the received client-side one-time authenticator C1 (n-1). n-1) is determined.
  • the server-side authentication processing unit 82 determines that the authentication has failed, and indicates that the authentication has failed. Then, the reader / writer 2 is notified and the processing is terminated. If the received one-time authenticator C1 (n-1) matches the one-time authenticator stored in the authenticator table 72i, the server-side authentication processing unit proceeds to step S11.
  • step S11 the server-side authentication processing unit 82 on the server side holds the client-side common encryption key CKi (n-1) and the received C1 (n-1), CK1 (n-1) * CR1 ( n) and CK1 (n-1) * CQ1 (n) are used to calculate a check code CHECK-C according to the following equation.
  • the check code CHECK-C is calculated as a one-way function. This one-way function takes four arguments, and the function value varies depending on the order of the arguments.
  • CHECK-C hash3 ⁇ CKi (n-1), C1 (n-1), CK1 (n-1) * CR1 (n), CK1 (n-1) * CQ1 (n) ⁇
  • step S12 the server-side authentication processing unit 82 on the server side compares the received CheckOUT with the check code CHECK-C created in step S11. If the received CheckOUT does not match the check code CHECK-C, the server-side authentication processing unit 82 determines that the authentication has failed, notifies the IC card 1 and the reader / writer 2 that the authentication has failed, and ends the processing. . If the received CheckOUT matches the check code CHECK-C, the process proceeds to step S13.
  • step S13 the server-side authentication processing unit 82 on the server side decrypts CK1 (n ⁇ 1) * CR1 (n) to obtain the next authentication client-side first seed CRi (n).
  • step S13 the server-side authentication processing unit 82 on the server side decrypts CK1 (n ⁇ 1) * CQ1 (n) to obtain the next authentication client-side second seed CQi (n).
  • step S14 the server-side authentication processing unit 82 on the server side generates the first random number SR and sets the random number SR as the next authentication server-side first seed SRi (n). Further, the server-side authentication processing unit 82 on the server side generates a second random number SQ, and uses the random number SQ as the next authentication server-side second seed SQi (n).
  • a method using a pseudo random number sequence created by a function a natural random number created using a random natural phenomenon such as a nuclear decay or a thermal noise of a resistor is used.
  • the random number may be read out from a random number file that stores a separately generated natural random number.
  • step S15 the server-side authentication processing unit 82 on the server side creates a server-side one-time authenticator Si (n ⁇ 1) for the current one-time authentication according to the following equation.
  • Si (n-1) hash2 ⁇ SZi, SRi (n-1), CQi (n-1) ⁇
  • step S16 the server-side authentication processing unit 82 on the server side encrypts the next authentication server-side first seed SRi (n) with the common encryption key SKi (n ⁇ 1).
  • SRi (n) encrypted with the common encryption key SKi (n ⁇ 1) is expressed as SKi (n ⁇ 1) * SRi (n).
  • step S16 the server-side authentication processing unit 82 on the server side encrypts the next authentication server-side second seed SQi (n) with the common encryption key SKi (n ⁇ 1).
  • SQi (n) encrypted with the common encryption key SKi (n ⁇ 1) is expressed as SKi (n ⁇ 1) * SQi (n).
  • step S17 the server-side authentication processing unit 82 on the server side creates a falsification check code CheckIN according to the following equation.
  • CheckIN hash4 ⁇ SKi (n ⁇ 1), Si (n ⁇ 1), SKi (n ⁇ 1) * SRi (n), SKi (n ⁇ 1) * SQi (n) ⁇
  • step S18 Si (n-1), SKi (n-1) * SRi (n), SKi (n-1) * SQi (n), and CheckIN are transmitted from the server apparatus 4 to the IC card 1.
  • step S19 the comparison circuit CMP compares exS with Si (n ⁇ 1) received from the server side. If they do not match, it is determined that the authentication has failed, the server error is notified to the reader / writer 2, and the processing is terminated. If they match, the process proceeds to step S20.
  • step S20 the hash circuit Hash4, SK1 (n-1) stored in the arithmetic stack 131, Si (n-1), SKi (n-1) * SRi (n) received from the server side, and Using SKi (n ⁇ 1) * SQi (n), check code CHECK-S is calculated by the following equation.
  • CHECK-S hash4 ⁇ SK1 (n-1), Si (n-1), SKi (n-1) * SRi (n), SKi (n-1) * SQi (n) ⁇
  • step S21 the comparison circuit CMP compares the received CheckIN with the check code CHECK-S created in step 22. If they do not match, it is determined that the authentication has failed, the server error is notified to the reader / writer 2, and the processing is terminated. If they match, the process proceeds to step S22.
  • step S22 the control unit 11 stores the client-side first seed CR1 (n) for the next authentication in CRi (n ⁇ 1) of the authentication seed 141.
  • step S22 the control unit 11 stores the client-side second seed CQ1 (n) for next authentication in the CQi (n ⁇ 1) of the authentication seed 141.
  • step S 23 the decryption circuit DEC uses the server-side common encryption key SK 1 (n ⁇ 1) held on the operation stack 131 to store the received SKi (n ⁇ 1) * SRi (n) with SRi (n). To decrypt. The decrypted SRi (n) is stored in SRi (n ⁇ 1) of the authentication seed 141.
  • step S23 the decryption circuit DEC uses the server-side common encryption key SK1 (n ⁇ 1) holding the received SKi (n ⁇ 1) * SQi (n) on the operation stack 131 to generate SQi ( Decode to n). The decrypted SQi (n) is stored in SQi (n ⁇ 1) of the authentication seed 141.
  • step S24 the hash circuit Hash5 updates the common encryption key CK1 on the client side with the following equation.
  • CK1 (n) hash5 (CR1 (n), CQ1 (n), CK1 (n-1))
  • step S24 the hash circuit Hash6 updates the server-side common encryption key SK1 with the following equation.
  • SK1 (n) hash6 (SR1 (n), SQ1 (n), SK1 (n-1))
  • the control unit 11 writes the updated CK1 (n) and SK1 (n) to CKi (n ⁇ 1) and SKi (n ⁇ 1) of the authentication seed 141, respectively.
  • step S25 the control unit 11 notifies the reader / writer 2 of completion.
  • step S27 the server-side authentication processing unit 82 updates the data in the seed table 71i with CRi (n), CQi (n), SRi (n), and SQi (n), and authenticator table 72i with Ci (n). Update the client-side one-time authenticator at.
  • step S28 the server-side authentication processing unit 82 on the server side updates the client-side common encryption key CKi using the following hash function.
  • CKi (n) hash5 ⁇ CRi (n), CQi (n), CKi (n-1) ⁇
  • step S28 the server-side authentication processing unit 82 on the server side updates the server-side common encryption key SKi using the following hash function.
  • SKi (n) hash6 ⁇ SRi (n), SQi (n), SKi (n-1) ⁇
  • step S29 the server-side authentication processing unit 82 on the server side uses the seed table 71 for the next authentication seed and the common encryption key CRi (n), CQi (n), CKi (n), SRi ( n), SQi (n), and SKi (n), and the current authentication seed and common encryption key CRi (n-1), CQi (n-1), CKi (n-1), SRi (n-1) , SQi (n-1), SKi (n-1) are updated.
  • one IC card can support authentication of one or more services, and the arguments of the hash function for creating one-time authenticators C1 (n) and Si (n) Since the hidden fixed information CZ1 and SZi that are not communicated between the server apparatuses 4 are included, even if the common encryption key or seed is decrypted, impersonation is not performed.
  • step S10, step S14, and step S27 will be described.
  • a seed table 71i and an authenticator table 72i are managed for each service request identification.
  • a unique management number (IC card ID) is assigned to each of one or a plurality of IC cards, similar to the IC card 1, and associated with the management number.
  • the next authentication client side one-time authenticator Ci (n-1) is held.
  • the concealment fixed information CZi, SZi, the seed CRi (n-1), CQi (n-1), SRi (n) of the current (n-1) are associated with the management number.
  • SQi (n-1) and common encryption keys CKi (n-1), SKi (n-1) and seeds CRi (n), CQi (n), SRi (n), SQi ( n) and the common encryption keys CKi (n) and SKi (n) are held.
  • FIG. 15 is a diagram illustrating an example of the structure of the seed table 71i.
  • FIG. 16 is a diagram illustrating an example of the structure of the authenticator table 72i.
  • 15 is data indicating the position of a record having the same management number as the management number associated with the authentication address in the authenticator table 72i.
  • the server side authentication processing unit 82 sorts the records (one-time authenticator and management number pair) in the authenticator table 72i in ascending order of the values of the one-time authenticator. Thereby, it is possible to quickly determine whether or not the one-time authenticator received from the client is registered in the authenticator table 72i during the one-time authentication.
  • the seed table 71i and the authenticator table 72i have a predetermined number of records (that is, the number of IC cards) in advance, and initial values are set in fields other than the management number in the record.
  • step S10 the server-side authentication processing unit 82 determines that the client-side one-time authenticator C1 (n-1) received from the IC card 1 is one of the client-side one-time authenticators registered in the authenticator table 72i. It is determined whether or not. If the received client-side one-time authenticator C1 (n-1) is one of the client-side one-time authenticators registered in the authenticator table 72i, the authentication is successful, and the server-side authentication processing unit 82 In the authenticator table 72i, the management number associated with the received client-side one-time authenticator C1 (n-1) is specified. Then, the server-side authentication processing unit 82 proceeds with subsequent processing using the record in the seed table 71i corresponding to the specified management number.
  • FIG. 17 is a flowchart illustrating the details of step S14.
  • step S101 in the server device 4, the server-side authentication processing unit 82 generates a random number SR and sets it to the next-authentication server-side seed SRi (n).
  • step S102 the server-side authentication processing unit 82 creates a random number SQ.
  • step S103 when this random number SQ is used as the next authentication server-side seed, it is determined whether or not the next authentication client-side one-time authenticator matches the client-side one-time authenticator of another IC card. To do. That is, it is determined whether or not the uniqueness of the client-side one-time authenticator when the generated random number SQ is used (that is, there is no client-side one-time authenticator having the same value) is determined.
  • the server side authentication processing unit 82 calculates the next authentication client side authenticator X1 when this random number SQ is used as the next authentication server side seed according to the following equation. It is determined whether or not it is registered in the authenticator table 72i.
  • X1 hash1 ⁇ CZi, CRi (n), SQ ⁇
  • the server-side authentication processing unit 82 regenerates the random number SQ until the uniqueness is ensured. On the other hand, if it is determined that the generated random number SQ ensures uniqueness, the process proceeds to step S104.
  • step S104 the server-side authentication processing unit 82 sets the random number SQ to the next authentication server-side seed SQi (n).
  • FIG. 18 is a flowchart illustrating details of step S27.
  • step S105 the server-side authentication processing unit 82 writes the seed CRi (n), CQi (n), SRi (n), and SQi (n) for the next authentication of the management number in the seed table 71i.
  • step S106 X1 calculated at the time of determination in step S103 is set as the next authentication client-side one-time authenticator Ci (n), and that Ci (n) is associated with the management number in the authenticator table 72i.
  • Ci (n) is associated with the management number in the authenticator table 72i.
  • Update the one-time authenticator That is, the server-side authentication processing unit 82 reads the authentication address associated with the management number from the seed table 71i, identifies the record of the management number in the authenticator table 72i with the normal authentication address, Update one-time authenticator for.
  • step S107 the server-side authentication processing unit 82 sorts the records in the authenticator table 72i so that the values of the one-time authenticators are in ascending order. Update the authentication address associated with the record management number.
  • Ci (n-1) hash1 ⁇ CZi, CRi (n-1), SQi (n-1) ⁇
  • CZi is concealment fixed information
  • CRi (n-1) and SQi (n-1) are values written in the authentication seed 141 at the end of the previous one-time authentication
  • Ci (n-1) is a value determined at the end of the previous one-time authentication. Therefore, at the end of the previous one-time authentication, the first embodiment can be modified such that the value of the current client-side one-time authenticator Ci (n ⁇ 1) is obtained and written in the authentication seed 141. It is. According to this modification, since the step of calculating the client-side one-time authenticator using a hash circuit can be omitted in step S5 at the beginning of the current authentication process, the time required for the current authentication can be shortened. Can do.
  • the IC card 1 uses the authentication seed. And just one-time authentication.
  • Embodiment 2 FIG. The first embodiment has been described on the assumption that the RAND circuit is formed by the electronic circuit in the IC chip 10. However, depending on the IC chip 10, the RAND circuit may not be formed. In the second embodiment, the case where the RAND circuit is not formed by the electronic circuit in the IC chip 10 will be described.
  • the server device 4 is also configured to generate random numbers CR and CQ that are originally generated on the client side.
  • FIG. 19 shows an example of the configuration of the output memory 133.
  • the next authentication seeds CRi (n) and CQi (n) are also generated on the server device 4 side, encrypted with the common encryption key on the server device side, and transmitted to the IC card 1.
  • the memory 133 does not have the areas of CK1 (n-1) * CR1 (n) and CK1 (n-1) * CQ1 (n).
  • FIG. 20 shows an example of the configuration of the input memory 132.
  • the area of SKi (n ⁇ 1) * CRi (n) and SKi (n ⁇ 1) * CQi (n) is increased in the input memory 132 as compared with the first embodiment.
  • FIGS. 21 to 23 are sequence diagrams for explaining mutual authentication based on the one-time authenticator of the second embodiment, which is executed in the system of FIG.
  • step S201 the reader / writer 2 detects the approach of the IC card 1.
  • step S202 the service request identification is given to the IC card 1 as a parameter when the reader / writer 2 makes a read request.
  • the service request identification data is also transmitted to the server device 4.
  • the service request identification “i” is given to the IC card 1 and the server device 4.
  • step S203 the control unit 11 of the IC card 1 copies the concealment fixing information, the seed, and the common encryption key corresponding to the given service request identification from the authentication seed 141 to the operation stack 131. Since the given service request identification is “i”, CRi (n ⁇ 1), CQi (n ⁇ 1), CKi (n ⁇ 1), CZi, SRi (n ⁇ 1), SQi ( n-1), SKi (n-1), and SZi are converted into CR1 (n-1), CQ1 (n-1), CK1 (n-1), CZ1, SR1 (n-1), Copy to SQ1 (n-1), SK1 (n-1), and SZ1, respectively.
  • step S204 the hash circuit Hash2 calculates exS by the following equation using SZ1, CQ1 (n-1), SR1 (n-1) held in the operation stack 131, Store in the area.
  • exS is calculated as a one-way function.
  • the one-way function hash2 is a function that takes three arguments and has different function values depending on the order of the arguments.
  • exS hash2 ⁇ SZ1, SR1 (n-1), CQ1 (n-1) ⁇
  • step S205 the hash circuit Hash1 calculates the client-side one-time authenticator C1 (n-1) for the current one-time authentication according to the following equation and stores it in the corresponding area of the output memory 133.
  • C1 (n-1) is calculated as a one-way function.
  • the one-way function hash1 is a function that takes three arguments and has different function values depending on the order of the arguments.
  • C1 (n-1) hash1 ⁇ CZ1, CR1 (n-1), SQ1 (n-1) ⁇
  • step S ⁇ b> 206 the hash circuit Hash ⁇ b> 3 calculates the falsification check code CheckOUT according to the following expression and stores it in the corresponding area of the output memory 133.
  • the falsification check code CheckOUT is calculated by a one-way function.
  • the one-way function hash3 is a function that takes two arguments and has different function values depending on the order of the arguments.
  • CheckOUT hash3 ⁇ CK1 (n-1), C1 (n-1) ⁇
  • step S207 C1 (n-1) and CheckOUT are transmitted from the client to the server.
  • step S208 and subsequent steps the server-side authentication processing unit 82 on the server side uses the authentication seed corresponding to the service request identification received in step S202.
  • step S208 the server-side authentication processing unit 82 on the server side receives the client-side one-time authenticator Ci () corresponding to the service request identification i held by the received client-side one-time authenticator C1 (n-1). n-1) is determined.
  • the server-side authentication processing unit 82 determines that the authentication has failed, and indicates that the authentication has failed. Then, the reader / writer 2 is notified, and the process is terminated and terminated. If the received one-time authenticator C1 (n-1) matches the one-time authenticator stored in the authenticator table 72i, the server-side authentication processing unit proceeds to step S209.
  • step S209 the server-side authentication processing unit 82 on the server side uses the held client-side common encryption key CKi (n-1) and the received C1 (n-1) to check code CHECK by the following equation: -C is calculated.
  • the check code CHECK-C is calculated as a one-way function. This one-way function takes two arguments and is a function whose function value varies depending on the order of the arguments.
  • CHECK-C hash3 ⁇ CKi (n-1), C1 (n-1) ⁇
  • step S210 the server-side authentication processing unit 82 on the server side compares the received CheckOUT with the check code CHECK-C created in step S209. If the received CheckOUT does not match the check code CHECK-C, the server-side authentication processing unit 82 determines that the authentication has failed, notifies the IC card 1 and the reader / writer 2 that the authentication has failed, and ends the processing. . If the received CheckOUT matches the check code CHECK-C, the process proceeds to step S211.
  • step S211 the server-side authentication processing unit 82 on the server side generates a first random number CR, and sets the random number CR as the first authentication client-side first seed CRi (n). Further, the server-side authentication processing unit 82 on the server side generates a second random number CQ, and sets the random number CQ as the next authentication client-side second seed CQi (n). Further, the server-side authentication processing unit 82 on the server side generates the third random number SR, and sets the random number SR as the first authentication server-side first seed SRi (n). Further, the server-side authentication processing unit 82 on the server side generates the fourth random number SQ, and sets the random number SQ as the next authentication server-side second seed SQi (n).
  • a method using a pseudo random number sequence created by a function a natural random number created using a random natural phenomenon such as a nuclear decay or a thermal noise of a resistor is used.
  • the random number may be read out from a random number file that stores a separately generated natural random number.
  • step S212 the server-side authentication processing unit 82 on the server side creates a server-side one-time authenticator Si (n ⁇ 1) for the current one-time authentication according to the following equation.
  • Si (n-1) hash2 (SZi, SRi (n-1), CQi (n-1))
  • step S213 the server-side authentication processing unit 82 on the server side uses the common encryption key SKi (n ⁇ 1), the next authentication seed CRi (n), CQi (n), SRi (n), and SQi (n). Is encrypted.
  • CRi (n), CQi (n), SRi (n), and SQi (n) after being encrypted with SKi (n-1) are represented by SKi (n-1) * CRi (n), SKi (n) -1) * CQi (n), SKi (n-1) * SRi (n), and SKi (n-1) * SQi (n).
  • step S214 the server-side authentication processing unit 82 on the server side creates a falsification check code CheckIN according to the following equation.
  • CheckIN hash4 ⁇ SKi (n-1), Si (n-1), SKi (n-1) * CRi (n), SKi (n-1) * CQi (n), SKi (n-1) * SRi (N), SKi (n-1) * SQi (n) ⁇
  • step S215 from the server apparatus 4 to the IC card 1, Si (n-1), SKi (n-1) * CRi (n), SKi (n-1) * CQi (n), SKi (n-1) * SRi (n), SKi (n-1) * SQi (n), and CheckIN are transmitted.
  • step S216 the comparison circuit CMP compares exS with Si (n ⁇ 1) received from the server side. If they do not match, it is determined that the authentication has failed, the server error is notified to the reader / writer 2, and the processing is terminated. If they match, the process proceeds to step S217.
  • step S217 the hash circuit Hash4, SK1 (n-1) stored in the arithmetic stack 131, and Si (n-1), SKi (n-1) * CRi (n), SKi received from the server side. (N-1) * CQi (n), SKi (n-1) * SRi (n), and SKi (n-1) * SQi (n) are used to calculate the check code CHECK-S according to the following equation .
  • CHECK-S hash4 ⁇ SK1 (n-1), Si (n-1), SKi (n-1) * CRi (n), SKi (n-1) * CQi (n), SKi (n-1) * SRi (n), SKi (n-1) * SQi (n) ⁇
  • step S218 the comparison circuit CMP compares the received CheckIN with the check code CHECK-S created in step 217. If they do not match, it is determined that the authentication has failed, the server error is notified to the reader / writer 2, and the processing is terminated. If they match, the process proceeds to step S219.
  • step S219 the decoding circuit DEC receives the received SKi (n-1) * CRi (n), SKi (n-1) * CQi (n), SKi (n-1) * SRi (n), and SKi ( n ⁇ 1) * SQi (n) is decrypted with the server-side common encryption key SK1 (n ⁇ 1) held on the arithmetic stack 131.
  • the decrypted CRi (n), CQi (n), SRi (n), and SQi (n) are stored in the authentication seed 141.
  • step S220 the hash circuit Hash5 updates the common encryption key CK1 on the client side with the following equation.
  • CK1 (n) hash5 ⁇ CRi (n), CQi (n), CK1 (n-1) ⁇
  • step S220 the hash circuit Hash6 updates the server-side common encryption key SK1 with the following equation.
  • SK1 (n) hash6 ⁇ SRi (n), SQi (n), SK1 (n-1) ⁇
  • the control unit 11 writes the updated CK1 (n) and SK1 (n) to CKi (n ⁇ 1) and SKi (n ⁇ 1) of the authentication seed 141, respectively.
  • step S221 the control unit 11 notifies the reader / writer 2 of completion.
  • step S223 the server-side authentication processing unit 82 updates data in the seed table 71i with CRi (n), CQi (n), SRi (n), and SQi (n), and authenticator table 72i with Ci (n). Update the client-side one-time authenticator at.
  • step S224 the server-side authentication processing unit 82 on the server side updates the client-side common encryption key CKi using the following hash function.
  • CKi (n) hash5 ⁇ CRi (n), CQi (n), CKi (n-1) ⁇
  • step S224 the server-side authentication processing unit 82 on the server side updates the server-side common encryption key SKi using the following hash function.
  • SKi (n) hash6 ⁇ SRi (n), SQi (n), SKi (n-1) ⁇
  • step S225 the server-side authentication processing unit 82 on the server side uses the seed table 71 for the next authentication seed and common encryption key CRi (n), CQi (n), CKi (n), SRi ( n), SQi (n), and SKi (n), and the current authentication seed and common encryption key CRi (n-1), CQi (n-1), CKi (n-1), SRi (n-1) , SQi (n-1), SKi (n-1) are updated.
  • step S208 the server-side authentication processing unit 82 determines that the client-side one-time authenticator C1 (n ⁇ 1) received from the IC card 1 is one of the client-side one-time authenticators registered in the authenticator table 72i. It is determined whether or not. If the received client-side one-time authenticator C1 (n-1) is one of the client-side one-time authenticators registered in the authenticator table 72i, the authentication is successful, and the server-side authentication processing unit 82 In the authenticator table 72i, the management number associated with the received client-side one-time authenticator C1 (n-1) is specified. Then, the server-side authentication processing unit 82 proceeds with subsequent processing using the record in the seed table 71i corresponding to the specified management number.
  • FIG. 24 is a flowchart illustrating the details of step S211.
  • step S301 the server-side authentication processing unit 82 creates random numbers CR, CQ, SR, and sets them in the next authentication seeds CRi (n), CQi (n), SRi (n).
  • step S302 the server-side authentication processing unit 82 creates a random number SQ.
  • step S303 when this random number SQ is used as the next authentication server-side seed, it is determined whether or not the next authentication client-side one-time authenticator matches the client-side one-time authenticator of another IC card. To do. That is, it is determined whether or not the uniqueness of the client-side one-time authenticator when the generated random number SQ is used (that is, there is no client-side one-time authenticator having the same value) is determined.
  • the server side authentication processing unit 82 calculates the next authentication client side authenticator X1 when this random number SQ is used as the next authentication server side seed according to the following equation. It is determined whether or not it is registered in the authenticator table 72i.
  • X1 hash1 ⁇ CZi, CRi (n), SQ ⁇
  • the server-side authentication processing unit 82 regenerates the random number SQ until the uniqueness is ensured. On the other hand, if it is determined that the generated random number SQ ensures uniqueness, the process proceeds to step S304.
  • step S304 the server-side authentication processing unit 82 sets the random number SQ to the next authentication server-side seed SQi (n).
  • FIG. 25 is a flowchart illustrating the details of step S223.
  • step S305 the server-side authentication processing unit 82 writes the seed CRi (n), CQi (n), SRi (n), and SQi (n) for the next authentication of the management number in the seed table 71i.
  • step S306 X1 calculated at the time of determination in step S303 is set as the next authentication client-side one-time authenticator Ci (n), and that Ci (n) is associated with the management number in the authenticator table 72i. Update the one-time authenticator. That is, the server-side authentication processing unit 82 reads the authentication address associated with the management number from the seed table 71i, specifies the record of the management number in the authenticator table 72i with the authentication address, Update the one-time authenticator.
  • step S307 the server-side authentication processing unit 82 sorts the records in the authenticator table 72i so that the values of the one-time authenticators are in ascending order, and records whose position has been changed by sorting in the seed table 71i. Update the authentication address associated with the record management number.
  • the IC card 1 uses the authentication seed. And just one-time authentication.
  • a contact type in which the reader / writer 2 communicates via a contact (terminal) installed on the card side may be used.
  • non-volatile memory in the IC card may be a flash memory other than FeRAM or an EEPROM.
  • control unit 11 of the IC card 1 is configured with an electronic circuit without a CPU
  • control unit 11 may be configured to be realized by the CPU executing a program recorded in the ROM.
  • the one-time authenticator may be a one-time password.
  • the one-time authenticator is a one-time password, it is not necessary to determine the uniqueness of the client-side one-time authenticator (steps S108 and S308).
  • the card ID 121 is read from the IC card 1 and The card ID 121 is transmitted to the server device 4 together with the time authenticator, and the server device 4 refers to the card attribute table 73 and specifies the IC card 1 based on the card ID 121.
  • the server-side authentication processing unit 82 reads the seed table 71 and the authenticator table 72 from the storage device 55 to the RAM 53 when the server device 4 is activated, and performs one-time authentication.
  • the mutual authentication based on the child is executed based on the seed table 71 and the authenticator table 72 on the RAM 53.
  • the server apparatus 4 is shut down, the seed table 71 and the authenticator table 72 on the RAM 53
  • the table 71 and the authenticator table 72 may be updated.

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)

Abstract

1枚のICカードを、1以上のサービスの認証のために使用することができるようにする。 ICカード1のFeRAM14の認証シード141には、1以上のサービスに共通の1組の認証シードと共通暗号鍵が記憶されている。1以上のサービスに共通の1組の認証シードと共通暗号鍵を、認証シード141から演算スタック131にコピーして、サーバ装置との間のワンタイム相互認証に使用する。認証シード141には、ICカード1からサーバ装置に送信されることのない隠蔽固定情報も含まれており、この隠蔽固定情報に基づいてワンタイム認証子を作成するので、クライアントまたはサーバに成りすましをされる恐れがない。

Description

ワンタイム認証用ICカード
 本発明は、ワンタイム認証子を用いて、サーバ装置の間で認証を行うワンタイム認証用ICカードに関する。
 従来より、クライアントとサーバの間で認証を行うに際し、認証に成功するたびに、乱数などのシードを更新し、次回認証時に、それらのシードからワンタイム認証子を生成し、認証に使用するワンタイム相互認証システムが知られている(例えば、特許文献1参照)。
特開2012-34292号公報
 (1)特許文献1におけるクライアント装置は、端末装置であった。特許文献1でもICカードが使用されているが、それは、携帯型記憶装置として使用されており、クライアント装置として使用されているわけではない。したがって、特許文献1におけるワンタイム相互認証システムでは、クライアント装置として、ICカードとは別に、端末装置が必要であった。
 (2)クライアント側認証子とサーバ側認証子の生成に使用されるサーバ側シードが共通である場合には、クライアント側認証子とサーバ側認証子により、クライアント側今回認証用乱数とクライアント側次回認証用乱数を求められる可能性がある。クライアント側次回認証用乱数が求められたならば、共通暗号鍵を導出することが可能となり、次回認証においてクライアントまたはサーバに成りすましをされる恐れがある。
 (3)従来は、ICカードの不揮発性メモリに1組の認証シードしか記憶してなかったので、基本的に1つのサービスのための認証しかできなかった。
 (4)カードに記憶されている情報を盗み取られ(スキミング)、カードを偽造して使用されることを防止する必要がある。
 本発明は、上記の問題に鑑みてなされたものであり、端末装置が不要であり、次回認証時においてクライアントまたはサーバに成りすましをされる恐れが少なく、且つ1枚のカードで1以上のサービスのための認証が可能なICカードを提供することを目的とする。
 (1)本発明に係るICカードは、不揮発性メモリとRAMを内蔵したICカードであって、
 1以上のサービスに共通の1組の認証シードおよび共通暗号鍵を前記不揮発性メモリに記憶し、
 前記1以上のサービスに共通の1組の認証シードおよび共通暗号鍵を、前記不揮発性メモリから前記RAM上の演算スタックにコピーして、前記RAM上の演算スタックにコピーされた1組の認証シードに基づいてワンタイム認証子を生成し、前記ICカードとサーバ装置との間の相互認証に使用し、前記RAM上の演算スタックにコピーされた1組の認証シードに基づいて、前記サーバ装置から受信したワンタイム認証子の正当性を判定することを特徴とする。
 (1)の構成によれば、端末装置は不要であり、1枚のICカードを1以上のサービスの認証のために使うことができる。また、認証シードおよび共通暗号鍵は、不揮発性メモリに記憶しているので、スキミングにより盗み取られることがない。
 (2)本発明に係るICカードは、前記認証シードが、前記ICカードから前記サーバ装置へ送信されず、また相互認証後に更新されない隠蔽固定情報を含むことを特徴とする。
 (2)の構成によれば、ICカードからサーバ装置へ送信されない隠蔽固定情報に基づいてワンタイム認証子が生成されるので、たとえ共通暗号鍵が求められても、クライアントまたはサーバに成りすましをされる恐れがない。
 (3)本発明に係るICカードは、前記ICカードで送信データを暗号化する際に使用する共通暗号鍵が、前記サーバ装置で送信データを暗号化する際に使用する共通暗号鍵とは別の共通暗号鍵であることを特徴とする。
 (3)の構成によれば、ICカードとサーバ装置とで、別々の暗号鍵により送信データを暗号化するので、セキュリティを強化することができる。
 (4)本発明に係るICカードは、ICカード側認証子生成に使用されるICカード側認証シードは、サーバ装置側ワンタイム認証子生成に使用されるICカード側認証シードとは別のシードであることを特徴とする。
 (4)の構成によれば、ICカード側認証子生成に使用されるICカード側認証シードとサーバ装置側ワンタイム認証子生成に使用されるICカード側認証シードとの間に重複がないので、第三者にICカード側認証シードを求められ難い。
 (5)本発明に係るICカードは、前記サーバ装置において生成し、暗号化して送信されたICカード側認証シードを、ICカードが受信して復号してワンタイム認証子の作成に使用することを特徴とする。
 (5)の構成によれば、ICカードのICチップとして、乱数発生の機能を有しないチップを使用することが可能となる。また、悪意のある第三者がICカードをいくら調べても、発生する乱数を予測することが不可能なので、安全性が高まる。 
 (6)本発明に係るICカードは、前回の認証の終了時に、今回の認証のためのクライアント側ワンタイム認証子を、前記不揮発性メモリに記憶させることを特徴とする。
 (6)の構成によれば、今回の認証処理に要する時間を短くすることができる。
 (7)本発明に係るICカードは、不揮発性メモリとRAMを内蔵したICカードであって、
 1以上のサービス要求識別に対応した1以上の組の認証シードおよび共通暗号鍵を前記不揮発性メモリに記憶し、
 特定のサービス要求識別に対応した1組の認証シードおよび共通暗号鍵を、前記不揮発性メモリから前記RAM上の演算スタックにコピーして、前記RAM上の演算スタックにコピーされた1組の認証シードに基づいてワンタイム認証子を生成し、前記ICカードとサーバ装置との間の相互認証に使用し、前記RAM上の演算スタックにコピーされた1組の認証シードに基づいて、前記サーバ装置から受信したワンタイム認証子の正当性を判定することを特徴とする。 
 (7)の構成によれば、端末装置は不要であり、1枚のICカードを、1以上のサービスにおける認証のために使用することができる。
 本発明によれば、1枚のICカードを1以上のサービスの認証のために使うことができ、クライアントまたはサーバに成りすましをされる恐れがないICカードを提供することが可能となる。また、認証シードおよび共通暗号鍵は、不揮発性メモリに記憶しているので、スキミングにより盗み取られることがない。
本発明の実施の形態1に係るワンタイム認証システムの構成を示す図である。 1枚のカードにより1以上のサービスを提供する第1の方法を示す図である。 1枚のカードにより1以上のサービスを提供する第2の方法を示す図である。 本発明の実施の形態1に係るICカードの構成を示す図である。 本発明の実施の形態1に係る認証シードの構成を示す図である。 本発明の実施の形態1に係る演算スタックの構成を示す図である。 本発明の実施の形態1に係る論理回路の構成を示す図である。 本発明の実施の形態1に係る出力メモリの構成を示す図である。 本発明の実施の形態1に係る入力メモリの構成を示す図である。 本発明の実施の形態1に係るサーバ装置の構成を示す図である。 本発明の実施の形態1に係るサーバ装置において実現される処理部を示す図である。 本発明の実施の形態1において実現されるワンタイム認証における処理について説明するシーケンス図である。 本発明の実施の形態1において実現されるワンタイム認証における処理について説明するシーケンス図である。 本発明の実施の形態1において実現されるワンタイム認証における処理について説明するシーケンス図である。 本発明の実施の形態1におけるシードテーブルの構造の一例を示す図である。 本発明の実施の形態1における認証子テーブルの一例を示す図である。 本発明の実施の形態1におけるサーバ装置によるデータ処理について説明するフローチャートである。 本発明の実施の形態1におけるサーバ装置によるデータ処理について説明するフローチャートである。 本発明の実施の形態2における出力メモリの構成を示す図である。 本発明の実施の形態2における入力メモリの構成を示す図である。 本発明の実施の形態2において実現されるワンタイム認証における処理について説明するシーケンス図である。 本発明の実施の形態2において実現されるワンタイム認証における処理について説明するシーケンス図である。 本発明の実施の形態2において実現されるワンタイム認証における処理について説明するシーケンス図である。 本発明の実施の形態2におけるサーバ装置によるデータ処理について説明するフローチャートである。 本発明の実施の形態2におけるサーバ装置によるデータ処理について説明するフローチャートである。
実施の形態1.
 図1は、本発明の実施の形態に係るワンタイム認証システムの構成を示す図である。
 図1に示すシステムでは、ICカード用リーダライタ2がネットワーク3に接続されている。ネットワーク3には、サーバ装置4も接続されている。ICカード用リーダライタ2は、ディスプレイを備えていてもよい。ICカード1は、リーダライタ2に接近させて、またはリーダライタ2に電気的に接続して使用される。ICカード1は、リーダライタ2を使用して、サーバ装置4との間でデータ通信を行うことができる。
 本発明のICカードは、1以上のサービスにおける認証に使用することができる。
 1枚のICカードにより1以上のサービスを提供する方法として、次の2通りの方法が考えられる。
 第1の方法は、ICカードには1組の認証シードを記憶しておき、どのサービスを利用するかの指定をユーザが行う方法である。
 図2に第1の方法の概要を示す。
 図2のICカード1は、非接触型を想定している。ICカード1がディスプレイ付きリーダライタ2に接近すると、その接近を検出したリーダライタ2は、パラメータを含まない読出要求の信号をICカード1へ送信する。
 リーダライタ2が対応付けられている認証サーバ4が存在し、起動されたICカード1と、認証サーバ4との間でワンタイム認証が開始し実行される。認証サーバ4は、ICカード1の所有者が利用できるサービスを記憶しており、そのサービスの一覧をリーダライタ2のディスプレイに表示する。ユーザは、ディスプレイを見て、利用するサービスを選択する。リーダライタ2は、選択されたサービスのサービスサーバと接続する。
 このようにして、ICカードには1組の認証シードを記憶しておき、1以上のサービスを利用することができる。
 第2の方法は、ICカード1には1以上の組の認証シードを記憶しておき、どのリーダライタを利用したかに応じて、利用するサービスが決まる方法である。
 図3に第2の方法の概要を示す。
 図3のICカード1も、非接触型を想定している。図3のリーダライタ2は、サービス毎に存在している。したがって、リーダライタ2は、自分がどのサービスのリーダライタであるのかをサービス要求識別として記憶している。
 ICカード1が、ディスプレイ付きリーダライタ2に接近すると、その接近を検出したリーダライタ2は、ICカード1に対して、サービスを特定するサービス要求識別をパラメータとして含む読出要求の信号を送信する。また、リーダライタ2は、認証サーバへもサービス要求識別のデータを送信する。
 ICカード1は、自分が記憶している1以上の組の認証シードから、受信したサービス要求識別によって特定される1組の認証シードを読み出し、ワンタイム認証処理に使用する。
 ICカードの構成、動作としては、1以上の組の認証シードを記憶する第2の方法の方が複雑であるので、以後の実施例は、第2の方法の1以上の組の認証シードを記憶する構成で説明する。
(1)各装置の構成
 図4は、ICカード1の機能ブロック図である。
 ICカード1は、半導体装置であるICチップ10を含んでいる。
 ICチップ10は、制御部11と、ROM12と、RAM13と、不揮発性メモリの一種であるFeRAM(Ferroelectric Random Access Memory)14と、外部からの信号を送受するためのアンテナ17と、受信部である受信回路15と送信部である送信回路16と、内部バス18と、から構成されている。FeRAM14は、強誘電体を利用した不揮発性メモリであり、高速アクセスが可能で、高い信頼性を有している。
 制御部11は、乱数を発生させる処理を行ったり、ワンタイム認証子を作成したり、共通暗号鍵を更新したり、データの暗号化、復号を行ったり、各種の判断を行う部分である。制御部11は、CPUがプログラムを実行して構成することもできるが、CPUなしの電子回路で構成することもできる。ここでは、CPUなしの電子回路で構成することとする。
 ROM12には、ICカードに固有のカードID121のように、変更する必要のないデータを格納している。
 FeRAM14には、ワンタイム認証子を作成するためのシードや共通暗号鍵を保持しておくための認証シード141が格納されている。
 RAM13には、データを一時的に記憶しておくための演算スタック131と、ICカード1への入力データが格納される入力メモリ132と、ICカード1からの出力データが格納される出力メモリ133が設けられている。
 図5は、認証シード141の領域に保持されるデータを示している。
 認証シード141には、1組または複数組の認証シードが格納されているが、図5には、任意のサービス要求識別iで特定される認証シードの組の例を示す。 
 CRi(n-1)は、クライアント側で生成され、クライアント側のワンタイム認証子を作成する時に引数として使用されるクライアント側の第1シードである。
 CQi(n-1)は、クライアント側で生成され、サーバ側のワンタイム認証子を作成する時に引数として使用される、クライアント側の第2シードである。
 CKi(n-1)は、クライアント側でデータを暗号化するときの共通暗号鍵である。
 CZiは、クライアント側のワンタイム認証子を作成する時に引数として使用される隠蔽固定情報である。CZiは、ICカード1とサーバ装置4との間の通信で送受信されることがない。
 SRi(n-1)は、サーバ側で生成され、サーバ側のワンタイム認証子を作成する時に引数として使用される、サーバ側の第1シードである。
 SQi(n-1)は、サーバ側で生成され、クライアント側のワンタイム認証子を作成する時に引数として使用される、サーバ側の第2シードである。
 SKi(n-1)は、サーバ側でデータを暗号化するときの共通暗号鍵である。
 SZiは、サーバ側のワンタイム認証子を作成する時に引数として使用される隠蔽固定情報である。SZiは、ICカード1とサーバ装置4との間の通信で送受信されることがない。
 図6は、演算スタック131の領域に設けられる複数のデータスタックを示している。
 CR1(n-1)は、今回(n-1)のワンタイム認証についてのクライアント側の第1シードである。
 CQ1(n-1)は、今回(n-1)のワンタイム認証についてのクライアント側の第2シードである。
 CK1(n-1)は、今回(n-1)のワンタイム認証時に、次回認証用のクライアント側のシードCR1(n)およびCQ1(n)を暗号化してサーバ装置4へ送信する際のクライアント側暗号鍵である。
 CZ1は、クライアント側のワンタイム認証子を作成する時に引数として使用される隠蔽固定情報である。
 SR1(n-1)は、今回(n-1)のワンタイム認証についてのサーバ側の第1シードである。
 SQ1(n-1)は、今回(n-1)のワンタイム認証についてのサーバ側の第2シードである。
 SK1(n-1)は、今回(n-1)のワンタイム認証時に、次回認証用のサーバ側シードSR1(n)およびSQ1(n)を暗号化してICカード1へ送信する際のサーバ側暗号鍵である。
 SZ1は、サーバ側のワンタイム認証子を作成する時に引数として使用される隠蔽固定情報である。
 CR1(n)は、次回(n)のワンタイム認証についてのクライアント側の第1シードである。
 CQ1(n)は、次回(n)のワンタイム認証についてのクライアント側の第2シードである。
 exSは、受信予定サーバIDを格納する領域であり、サーバ側から送信されるワンタイム認証子と照合される。
 チェックコードCHECK-Sは、サーバから送信される改竄チェックコードCheckINと照合されるデータが格納される領域である。
 図7は、制御部11内の論理回路を示している。
 RANDは、乱数を発生する乱数発生回路である。
 ENCは、暗号化回路である。
 DECは、復号回路である。
 CMPは、比較回路である。
 ハッシュ回路Hash1は、今回のクライアント側のワンタイム認証子C1(n-1)を計算するハッシュ回路である。
 ハッシュ回路Hash2は、受信予定サーバIDであるexSを計算するハッシュ回路である。
 ハッシュ回路Hash3は、改竄チェックコードCheckOUTを計算するハッシュ回路である。
 ハッシュ回路Hash4は、サーバから送信される改竄チェックコードCheckINと照合されるチェックコードCHECK-Sを計算するハッシュ回路である。
 ハッシュ回路Hash5は、クライアント側の共通暗号鍵CK1を更新するハッシュ回路である。
 ハッシュ回路Hash6は、サーバ側の共通暗号鍵SK1を更新するハッシュ回路である。
 図8は、ICカード1から出力されるデータを格納する出力メモリ133の領域を示している。
 領域C1(n-1)は、今回のクライアント側ワンタイム認証子C1(n-1)を格納する領域である。
 領域CK1(n-1)*CR1(n)は、今回のクライアント側共通暗号鍵CK1(n-1)で、次回認証用クライアント側第1シードCR1(n)を暗号化したものを格納する領域である。
 領域CK1(n-1)*CQ1(n)は、今回のクライアント側共通暗号鍵CK1(n-1)で、次回認証用クライアント側第2シードCQ1(n)を暗号化したものを格納する領域である。 
 領域CheckOUTは、改竄チェックコードCheckOUTを格納する領域である。
 図9は、ICカード1に入力するデータを格納する入力メモリ132の領域を示している。
 領域Si(n-1)は、今回のサーバ側のワンタイム認証子Si(n-1)を格納する領域である。
 領域SKi(n-1)*SRi(n)は、今回のサーバ側共通暗号鍵SKi(n-1)で、次回認証用サーバ側第1シードSRi(n)を暗号化したものを格納する領域である。
 領域SKi(n-1)*SQi(n)は、今回のサーバ側共通暗号鍵SKi(n-1)で、次回認証用サーバ側第2シードSQi(n)を暗号化したものを格納する領域である。
 領域CheckINは、改竄チェックコードCheckINを格納する領域である。
 図10は、図1におけるサーバ装置4の構成を示す図である。
 図10において、CPU51は、プログラムを実行し、プログラムに記述された処理を実行する演算処理装置である。また、ROM52は、プログラムおよびデータを予め記憶した不揮発性のメモリである。また、RAM53は、プログラムを実行する際にそのプログラムおよびデータを一時的に記憶するメモリである。
 また、インタフェース54は、記憶装置55を接続可能なインタフェース回路である。記憶装置55は、インタフェース54に接続され、図示せぬオペレーティングシステム、ワンタイム認証プログラム61,認証に使用されるデータなど格納する記憶媒体を有する装置である。記憶装置55としては、ハードディスクドライブ、SSDなどが使用される。記憶装置55には認証に使用されるデータとして、シードテーブル群71,認証子テーブル群72,およびICカード属性テーブル73が保持されている。
 シードテーブル群71には、サービス要求識別毎のシードテーブルが1枚以上格納されている。任意のサービス要求識別iに対応するシードテーブルを、シードテーブル71iで表すことにする。シードテーブル71iは、最後の相互認証時に更新された、次回認証用シードおよび次回認証用共通暗号鍵を有する。次回認証用シードおよび次回認証用共通暗号鍵は、1または複数のICカード1のそれぞれについて別々に保持される。
 認証子テーブル群72は、サービス要求識別毎の認証子テーブルが1枚以上格納されている。任意のサービス要求識別iに対応する認証子テーブルを、認証子テーブル72iで表すことにする。認証子テーブル72iは、最後の認証時に更新された次回認証用のクライアント側ワンタイム認証子を有する。次回認証用のクライアント側ワンタイム認証子は、1または複数のICカード1のそれぞれについて別々に保持される。 
 ICカード属性テーブル73は、ICカード1のカードID、およびそのカードIDに関連付けられている属性情報(カード所有者情報など)を有するテーブルである。ICカード属性テーブル73は、ワンタイム認証子がワンタイムパスワードであるときに、ワンタイム認証子とともに受信されるカードIDの正当性を判定する際に参照される。
 また、インタフェース56は、通信装置57を接続可能なインタフェース回路である。通信装置57は、ネットワークインタフェースカード、モデムなどといったネットワーク3に接続可能な装置である。
 CPU51、ROM52、RAM53、およびインタフェース54,56は、バスやコントロールチップによって相互にデータ通信可能に接続されている。
 図11は、サーバ装置4によって実現される処理部を示すブロック図である。図11に示すように、サーバ装置4において、通信処理部81、およびサーバ側認証処理部82が実現される。
 通信処理部81は、通信装置57を使用して、所定の通信プロトコルでICカードとネットワークを介してデータ通信を行う。
 サーバ側認証処理部82は、CPU51でワンタイム認証プログラム61が実行されることにより実現され、通信処理部81を使用して、1または複数のICカード1との間でワンタイム認証子に基づく相互認証におけるサーバ側の処理を実行する。
(2)各装置の動作
 ICカード1は、認証シード領域141に、サービス要求識別毎に、隠蔽固定情報CZi,SZi、シードCRi(n-1),CQi(n-1),SRi(n-1),SQi(n-1)、共通暗号鍵CKi(n-1),SKi(n-1)を保持している。
 また、サーバ装置も、サービス要求識別毎に、同一の、隠蔽固定情報CZi,SZi、シードCRi(n-1),CQi(n-1),SRi(n-1),SQi(n-1)、共通暗号鍵CKi(n-1),SKi(n-1)を保持している。
 ここで、シードCRi(n-1),CQi(n-1)は、サービス要求識別iに対応した今回の相互認証セッションにおけるクライアント側シードであり、シードCRi(n-1)は、クライアント側のワンタイム認証子作成時に、引数として使用され、シードCQiは、サーバ側のワンタイム認証子作成時に、引数として使用される。
 また、シードSRi(n-1),SQi(n-1)は、サービス要求識別iに対応した今回の相互認証セッションにおけるサーバ側シードであり、シードSRi(n-1)は、サーバ側のワンタイム認証子作成時に、引数として使用され、シードSQi(n-1)は、クライアント側のワンタイム認証子作成時に、引数として使用される。
 共通暗号鍵CKi(n-1)は、サービス要求識別iに対応した今回の相互認証セッションにおいて、次回認証用のクライアント側シードCRi(n)、CQi(n)をICカード1からサーバ装置4へ送信する際に、そのCRi(n)、CQi(n)を暗号化するための共通暗号鍵である。
 共通暗号鍵SKi(n-1)は、サービス要求識別iに対応した今回の相互認証セッションにおいて、次回認証用のサーバ側シードSRi(n)、SQi(n)を、サーバ装置4からICカード1へ送信する際に、そのSRi(n)、SQi(n)を暗号化するための共通暗号鍵である。
 シードCRi(n-1),CQi(n-1),SRi(n-1),SQi(n-1)、および共通暗号鍵CKi(n-1),SKi(n-1)は、サービス要求識別iに対応した相互認証セッションが実行され、相互認証に成功するたびに更新される。
(3)ワンタイム認証子に基づく相互認証
 図12乃至図14は、図1のシステムにおいて実行される、ワンタイム認証子に基づく相互認証について説明するシーケンス図である。
 ステップS1おいて、リーダライタ2は、ICカード1の接近を検出する。
 ステップS2において、リーダライタ2よりの読み出し要求時に、パラメータとして、サービス要求識別がICカード1に与えられる。また、サーバ装置4へもサービス要求識別のデータが送信される。ここでは、サービス要求識別“i”が、ICカード1およびサーバ装置4に与えられたとする。
 ステップS3において、ICカード1の制御部11は、与えられたサービス要求識別に対応した隠蔽固定情報、シードおよび共通暗号鍵を、認証シード141から演算スタック131にコピーする。
 与えられたサービス要求識別が“i”なので、認証シード141のCRi(n-1)、CQi(n-1)、CKi(n-1)、CZi、SRi(n-1)、SQi(n-1)、SKi(n-1)、およびSZiを、演算スタック131のCR1(n-1)、CQ1(n-1)、CK1(n-1)、CZ1,SR1(n-1)、SQ1(n-1)、SK1(n-1)、SZ1にそれぞれコピーする。
 ステップS4において、乱数生成回路RANDは、第1乱数CRを生成し、その生成された第1乱数CRを、演算スタック131上の次回認証用のクライアント側第1シードCR1(n)にセットする。
 また、乱数生成回路RANDは、第2乱数CQを生成し、その生成された第2乱数CQを、演算スタック131上の次回認証用のクライアント側第2シードCQ1(n)にセットする。
 ステップS5において、ハッシュ回路Hash2は、演算スタック131に保持しているSZ1,CQ1(n-1),SR1(n-1)を用いて、次式によりexSを計算して、演算スタック131の対応領域に格納する。exSは、一方向関数で計算される。この一方向関数hash2は、3つの引数をとり、引数の順序によって関数値が異なる関数である。
 exS=hash2{SZ1,SR1(n-1),CQ1(n-1)}
 ステップS6において、ハッシュ回路Hash1は、今回のワンタイム認証についてのクライアント側ワンタイム認証子C1(n-1)を次式に従って計算し、出力メモリ133の対応領域へ格納する。C1(n-1)は、一方向関数で計算される。この一方向関数hash1は、3つの引数をとり、引数の順序によって関数値が異なる関数である。
 C1(n-1)=hash1{CZ1,CR1(n-1),SQ1(n-1)}
 ステップS7において、暗号化回路ENCは、次回認証用のクライアント側第1シードCR1(n)を共通暗号鍵CK1(n-1)で暗号化して、出力メモリ133の対応領域へ格納する。なお、共通暗号鍵CK1(n-1)で暗号化後のCR1(n)を、CK1(n-1)*CR1(n)と表現する。
 また、ステップS7において、暗号化回路ENCは、次回認証用のクライアント側第2シードCQ1(n)を通暗号鍵CK1(n-1)で暗号化して、出力メモリの対応領域へ格納する。なお、共通暗号鍵CK1(n-1)で暗号化後のCQ1(n)を、CK1(n-1)*CQ1(n)と表現する。
 ステップS8において、ハッシュ回路Hash3は、改竄チェックコードCheckOUTを次式に従って計算し、出力メモリ133の対応領域へ格納する。改竄チェックコードCheckOUTは、一方向関数で計算される。この一方向関数hash3は、4つの引数をとり、引数の順序によって関数値が異なる関数である。
 CheckOUT=hash3{CK1(n-1),C1(n-1)、CK1(n-1)*CR1(n),CK1(n-1)*CQ1(n)}
 ステップS9において、ICカード1からサーバ装置4へ、C1(n-1),CK1(n-1)*CR1(n),CK1(n-1)*CQ1(n),およびCheckOUTを送信する。
 ステップS10以降においては、サーバ側のサーバ側認証処理部82は、ステップS2で受信したサービ要求識別に対応したシードテーブルおよび認証子テーブルを使用する。
 ステップS10において、サーバ側のサーバ側認証処理部82は、受信したクライアント側ワンタイム認証子C1(n-1)が、保持しているサービ要求識別iに対応したクライアント側ワンタイム認証子Ci(n-1)に一致するか判定する。
 受信したワンタイム認証子C1(n-1)が、不正なワンタイム認証子であると判定した場合、サーバ側認証処理部82は、認証失敗と判定し、認証に失敗した旨をICカード1およびリーダライタ2に通知し、処理を終了する。受信したワンタイム認証子C1(n-1)が、認証子テーブル72iに保持されているワンタイム認証子に一致した場合、サーバ側の認証処理部は、ステップS11に移る。
 ステップS11において、サーバ側のサーバ側認証処理部82は、保持しているクライアント側共通暗号鍵CKi(n-1)、並びに受信したC1(n-1),CK1(n-1)*CR1(n),およびCK1(n-1)*CQ1(n)を用いて、次式によりチェックコードCHECK-Cを計算する。チェックコードCHECK-Cは、一方向関数で計算される。この一方向関数は、4つの引数をとり、引数の順序によって関数値が異なる関数である。
 CHECK-C=hash3{CKi(n-1),C1(n-1),CK1(n-1)*CR1(n),CK1(n-1)*CQ1(n)}
 ステップS12において、サーバ側のサーバ側認証処理部82は、受信したCheckOUTとステップS11で作成したチェックコードCHECK-Cとを比較する。
 受信したCheckOUTが、チェックコードCHECK-Cに一致しない場合、サーバ側認証処理部82は、認証失敗と判定し、認証に失敗した旨をICカード1およびリーダライタ2に通知し、処理を終了する。受信したCheckOUTが、チェックコードCHECK-Cに一致した場合、ステップS13に移る。
 ステップS13において、サーバ側のサーバ側認証処理部82は、CK1(n-1)*CR1(n)を復号して、次回認証クライアント側第1シードCRi(n)を得る。
 また、ステップS13において、サーバ側のサーバ側認証処理部82は、CK1(n-1)*CQ1(n)を復号して、次回認証クライアント側第2シードCQi(n)を得る。
 ステップS14において、サーバ側のサーバ側認証処理部82は、第1乱数SRを生成し、その乱数SRを、次回認証サーバ側第1シードSRi(n)とする。
 また、サーバ側のサーバ側認証処理部82は、第2乱数SQを生成し、その乱数SQを、次回認証サーバ側第2シードSQi(n)とする。
 サーバ側認証処理部82における乱数生成方法としては、関数により作成される疑似乱数列を用いる方法、原子核の崩壊や抵抗体の熱雑音といったランダムな自然現象を利用して作成される自然乱数を利用する方法の他に、別途作成された自然乱数を格納した乱数ファイルから、乱数を読み出す方法であっても良い。
 ステップS15において、サーバ側のサーバ側認証処理部82は、次式に従って、今回のワンタイム認証についての、サーバ側ワンタイム認証子Si(n-1)を作成する。
 Si(n-1)=hash2{SZi,SRi(n-1),CQi(n-1)}
 ステップS16において、サーバ側のサーバ側認証処理部82は、共通暗号鍵SKi(n-1)で次回認証サーバ側第1シードSRi(n)を暗号化する。なお、共通暗号鍵SKi(n-1)で暗号化後のSRi(n)を、SKi(n-1)*SRi(n)と表現する。 
 また、ステップS16において、サーバ側のサーバ側認証処理部82は、共通暗号鍵SKi(n-1)で次回認証サーバ側第2シードSQi(n)を暗号化する。なお、共通暗号鍵SKi(n-1)で暗号化後のSQi(n)を、SKi(n-1)*SQi(n)と表現する。 
 ステップS17において、サーバ側のサーバ側認証処理部82は、次式に従って、改竄チェックコードCheckINを作成する。
 CheckIN=hash4{SKi(n-1),Si(n-1),SKi(n-1)*SRi(n),SKi(n-1)*SQi(n)}
 ステップS18において、サーバ装置4からICカード1へ、Si(n-1)、SKi(n-1)*SRi(n),SKi(n-1)*SQi(n)、およびCheckINを送信する。
 ステップS19において、比較回路CMPは、exSとサーバ側から受信したSi(n-1)とを比較する。一致しない場合は、認証失敗と判定し、サーバエラーとしてリーダライタ2へ通知した後、処理を終了する。一致した場合は、ステップS20に移る。
 ステップS20において、ハッシュ回路Hash4は、演算スタック131に格納されているSK1(n-1)と、サーバ側から受信したSi(n-1),SKi(n-1)*SRi(n),およびSKi(n-1)*SQi(n)を用いて、次式によりチェックコードCHECK-Sを計算する。
 CHECK-S=hash4{SK1(n-1),Si(n-1),SKi(n-1)*SRi(n),SKi(n-1)*SQi(n)}
 ステップS21において、比較回路CMPは、受信したCheckINとステップ22で作成したチェックコードCHECK-Sとを比較する。一致しない場合は、認証失敗と判定し、サーバエラーとしてリーダライタ2へ通知した後、処理を終了する。一致した場合は、ステップS22に移る。
 ステップS22において、制御部11は、次回認証用のクライアント側第1シードCR1(n)を認証シード141のCRi(n-1)へ格納する。
 また、ステップS22において、制御部11は、次回認証用のクライアント側第2シードCQ1(n)を認証シード141のCQi(n-1)へ格納する。 
 ステップS23において、復号回路DECは、受信したSKi(n-1)*SRi(n)を、演算スタック131上に保持しているサーバ側共通暗号鍵SK1(n-1)で、SRi(n)へ復号する。復号したSRi(n)を、認証シード141のSRi(n-1)へ格納する。
 また、ステップS23において、復号回路DECは、受信したSKi(n-1)*SQi(n)を、演算スタック131上に保持しているサーバ側共通暗号鍵SK1(n-1)で、SQi(n)へ復号する。復号したSQi(n)を、認証シード141のSQi(n-1)へ格納する。 
 ステップS24において、ハッシュ回路Hash5は、クラインアント側の共通暗号鍵CK1を、次の式で更新する。
 CK1(n)=hash5(CR1(n),CQ1(n),CK1(n-1))
 ステップS24において、ハッシュ回路Hash6は、サーバ側の共通暗号鍵SK1を、次の式で更新する。
 SK1(n)=hash6(SR1(n),SQ1(n),SK1(n-1))
 制御部11は、更新されたCK1(n)、SK1(n)を、それぞれ、認証シード141のCKi(n-1)、SKi(n-1)へ書き込む。
 ステップS25において、制御部11は、リーダライタ2へ完了を通知する。
 ステップS26において、サーバ側のサーバ側認証処理部82は、次回のワンタイム認証時に使用するクライアント側ワンタイム認証子Ci(n)を次式に従って計算し、次回の相互認証まで認証子テーブル72iに保持する。
Ci(n)=hash1{CZi,CRi(n),SQi(n)}
 ステップS27において、サーバ側認証処理部82は、CRi(n)、CQi(n)、SRi(n)、SQi(n)でシードテーブル71iにおけるデータを更新し、Ci(n)で認証子テーブル72iにおけるクライアント側ワンタイム認証子を更新する。
 ステップS28において、サーバ側のサーバ側認証処理部82は、クライアント側の共通暗号鍵CKiを、次のハッシュ関数を用いて更新する。
CKi(n)=hash5{CRi(n),CQi(n),CKi(n-1)}
 また、ステップS28において、サーバ側のサーバ側認証処理部82は、サーバ側の共通暗号鍵SKiを、次のハッシュ関数を用いて更新する。
SKi(n)=hash6{SRi(n),SQi(n),SKi(n-1)}
 ステップS29において、サーバ側のサーバ側認証処理部82は、シードテーブル71において、その管理番号の次回認証用のシードおよび共通暗号鍵CRi(n)、CQi(n)、CKi(n)、SRi(n)、SQi(n)、SKi(n)で、今回認証用のシードおよび共通暗号鍵CRi(n-1)、CQi(n-1)、CKi(n-1)、SRi(n-1)、SQi(n-1)、SKi(n-1)を更新する。
 このように構成することにより、1枚のICカードで1以上のサービスの認証に対応でき、ワンタイム認証子C1(n)やSi(n)を作成するハッシュ関数の引数に、ICカード1とサーバ装置4間で通信されない隠蔽固定情報CZ1やSZiが入っているので、たとえ共通暗号鍵やシードが解読されても成りすましをされることがない。
 次に、シードテーブル71iと認証子テーブル72iの構造の詳細について説明し、その後、ステップS10とステップS14とステップS27の詳細について説明する。
 まず、データ構造について説明する。
 サーバ装置4において、サービス要求識別毎に、シードテーブル71iおよび認証子テーブル72iが管理されている。
 サービス要求識別iに対応した認証子テーブル72iでは、ICカード1と同様の、1または複数のICカードのそれぞれに対して、固有の管理番号(ICカードID)が割り当てられ、その管理番号に関連付けて、次回認証用クライアント側ワンタイム認証子Ci(n-1)が保持される。
 サービス要求識別iに対応したシードテーブル71iでは、管理番号に関連付けて、隠蔽固定情報CZi、SZi、現時点(n-1)のシードCRi(n-1)、CQi(n-1)、SRi(n-1)、SQi(n-1)および共通暗号鍵CKi(n-1)、SKi(n-1)並びに次回認証用のシードCRi(n)、CQi(n)、SRi(n)、SQi(n)および共通暗号鍵CKi(n)、SKi(n)が保持される。
 図15は、シードテーブル71iの構造の一例を示す図である。図16は、認証子テーブル72iの構造の一例を示す図である。
 図15における認証アドレスは、認証子テーブル72i内で、当該認証アドレスに関連付けられている管理番号と同一の管理番号を有するレコードの位置を示すデータである。
 また、図16において、サーバ側認証処理部82により、認証子テーブル72i内のレコード(ワンタイム認証子と管理番号の組)は、ワンタイム認証子の値について昇順にソートされる。これにより、ワンタイム認証時に迅速に、クライアントから受信したワンタイム認証子が認証子テーブル72iに登録されているか否かを判定することができる。
 なお、シードテーブル71i、認証子テーブル72iは、予め、所定数(つまり、ICカードの数)のレコードを有しており、レコード内の管理番号以外のフィールドには初期値がセットされる。
 次に、ステップS10の詳細について説明する。
 ステップS10では、サーバ側認証処理部82は、ICカード1から受信したクライアント側ワンタイム認証子C1(n-1)が、認証子テーブル72iに登録されているクライアント側ワンタイム認証子のいずれかであるか否かを判定する。
 受信したクライアント側ワンタイム認証子C1(n-1)が、認証子テーブル72iに登録されているクライアント側ワンタイム認証子のいずれかである場合、認証成功であり、サーバ側認証処理部82は、認証子テーブル72iにおいて、受信したクライアント側ワンタイム認証子C1(n-1)に関連付けられている管理番号を特定する。
 そして、サーバ側認証処理部82は、特定された管理番号に対応するシードテーブル71i中のレコードを用いて以後の処理を進める。
 また、受信したクライアント側ワンタイム認証子C1(n-1)が、認証子テーブル72iに登録されているクライアント側ワンタイム認証子のいずれかでない場合、認証失敗となる。
 次に、ステップS14の詳細について説明する。
 図17は、ステップS14の詳細を説明するフローチャートである。
 ステップS101において、サーバ装置4では、サーバ側認証処理部82は、乱数SRを生成し、次回認証用サーバ側シードSRi(n)にセットする。
 ステップS102において、サーバ側認証処理部82は、乱数SQを作成する。
 ステップS103において、この乱数SQを次回認証用サーバ側シードに使用した場合に、次回認証用クライアント側ワンタイム認証子が、別のICカードのクライアント側ワンタイム認証子に一致するか否かを判定する。つまり、生成した乱数SQを使用した場合のクライアント側ワンタイム認証子の一意性(つまり、同じ値のクライアント側ワンタイム認証子が存在しないこと)が確保されるか否かが判定される。
 この時、サーバ側認証処理部82は、次式に従って、この乱数SQを次回認証用サーバ側シードに使用した場合の、次回認証用クライアント側認証子X1を計算し、このワンタイム認証子が、認証子テーブル72iに登録されているか否かを判定する。
 X1=hash1{CZi,CRi(n),SQ}
 そして、生成した乱数SQで一意性が確保されないと判定した場合、サーバ側認証処理部82は、一意性が確保されるまで、乱数SQを再生成する。一方、生成した乱数SQで一意性が確保されると判定した場合、ステップS104へ移る。
 ステップS104において、サーバ側認証処理部82は、乱数SQを、次回認証用サーバ側シードSQi(n)にセットする。
 次に、ステップS27の詳細について説明する。
 図18は、ステップS27の詳細を説明するフローチャートである。
 ステップS105において、サーバ側認証処理部82は、シードテーブル71iに、その管理番号の次回認証用のシードCRi(n)、CQi(n)、SRi(n)、SQi(n)を書き込む。
 ステップS106において、ステップS103での判定時に計算したX1を、次回認証用クライアント側ワンタイム認証子Ci(n)とし、そのCi(n)で、認証子テーブル72iにおいて、その管理番号に関連付けられているワンタイム認証子を更新する。
 すなわち、サーバ側認証処理部82は、その管理番号に関連付けられている認証アドレスをシードテーブル71iから読み出し、その通常認証アドレスで、認証子テーブル72iにおけるその管理番号のレコードを特定し、そのレコード内のワンタイム認証子を更新する。
 ステップS107において、サーバ側認証処理部82は、認証子テーブル72i内のレコードをワンタイム認証子の値が昇順になるようにソートし、ソートにより位置に変更のあったレコードについて、シードテーブル71iにおいてそのレコードの管理番号に関連付けられている認証アドレスを更新する。
 [実施の形態1の変形例]
 サービス要求識別iについての今回のクライアント側ワンタイム認証子は、次式で得られる。
Ci(n-1)=hash1{CZi,CRi(n-1)、SQi(n-1)}
 3つの引数の内、CZiは、隠蔽固定情報であり、CRi(n-1)とSQi(n-1)は、前回のワンタイム認証の終了時に認証シード141に書き込まれた値であるから、Ci(n-1)は、前回のワンタイム認証の終了時に決まっている値である。したがって、前回のワンタイム認証の終了時に、今回のクライアント側ワンタイム認証子Ci(n-1)の値を求めて認証シード141に書き込んでおくように、実施の形態1を変形することが可能である。この変形例によれば、今回の認証処理の冒頭のステップS5において、ハッシュ回路を使ってクライアント側ワンタイム認証子を計算するステップを省くことができるから、今回の認証に要する時間を短縮することができる。
 なお、1枚のICカードにより1以上のサービスを提供する第1の方法の場合は、ICカード1には1組の認証シードしか記憶されていないので、ICカード1は、その認証シードを使用してワンタイム認証を行うだけである。
実施の形態2.
 実施の形態1においては、ICチップ10において、電子回路によってRAND回路が形成されているという前提で説明した。しかし、ICチップ10によっては、RAND回路が形成されていない場合もある。
 実施の形態2では、ICチップ10において、電子回路によってRAND回路が形成されていない場合について、説明する。
 実施の形態2では、本来、クライアント側で生成する乱数CR、CQについても、サーバ装置4で生成するように構成する。
 図19に出力メモリ133の構成の一例を示す。実施の形態2では、次回の認証シードCRi(n)、CQi(n)についても、サーバ装置4側で生成し、サーバ装置側の共通暗号鍵で暗号化してICカード1へ送信するので、出力メモリ133は、CK1(n-1)*CR1(n)およびCK1(n-1)*CQ1(n)の領域を有していない。
 図20に入力メモリ132の構成の一例を示す。実施の形態2では、実施の形態1と比較して、入力メモリ132は、SKi(n-1)*CRi(n)およびSKi(n-1)*CQi(n)の領域が増えている。
 図21乃至図23は、図1のシステムにおいて実行される、実施の形態2のワンタイム認証子に基づく相互認証について説明するシーケンス図である。
 ステップS201おいて、リーダライタ2は、ICカード1の接近を検出する。
 ステップS202において、リーダライタ2よりの読み出し要求時に、パラメータとして、サービス要求識別がICカード1に与えられる。また、サーバ装置4へもサービス要求識別のデータが送信される。ここでは、サービス要求識別“i”が、ICカード1およびサーバ装置4に与えられたとする。
 ステップS203において、ICカード1の制御部11は、与えられたサービス要求識別に対応した隠蔽固定情報、シードおよび共通暗号鍵を、認証シード141から演算スタック131にコピーする。
 与えられたサービス要求識別が“i”であるので、認証シード141のCRi(n-1)、CQi(n-1)、CKi(n-1)、CZi、SRi(n-1)、SQi(n-1)、SKi(n-1)、およびSZiを、演算スタック131のCR1(n-1)、CQ1(n-1)、CK1(n-1)、CZ1,SR1(n-1)、SQ1(n-1)、SK1(n-1)、SZ1にそれぞれコピーする。
 ステップS204において、ハッシュ回路Hash2は、演算スタック131に保持しているSZ1,CQ1(n-1),SR1(n-1)を用いて、次式によりexSを計算して、演算スタック131の対応領域に格納する。exSは、一方向関数で計算される。この一方向関数hash2は、3つの引数をとり、引数の順序によって関数値が異なる関数である。
 exS=hash2{SZ1,SR1(n-1),CQ1(n-1)}
 ステップS205において、ハッシュ回路Hash1は、今回のワンタイム認証についてのクライアント側ワンタイム認証子C1(n-1)を次式に従って計算し、出力メモリ133の対応領域へ格納する。C1(n-1)は、一方向関数で計算される。この一方向関数hash1は、3つの引数をとり、引数の順序によって関数値が異なる関数である。
 C1(n-1)=hash1{CZ1,CR1(n-1),SQ1(n-1)}
 ステップS206において、ハッシュ回路Hash3は、改竄チェックコードCheckOUTを次式に従って計算し、出力メモリ133の対応領域へ格納する。改竄チェックコードCheckOUTは、一方向関数で計算される。この一方向関数hash3は、2つの引数をとり、引数の順序によって関数値が異なる関数である。
 CheckOUT=hash3{CK1(n-1),C1(n-1)}
 ステップS207において、クライアントからサーバへ、C1(n-1),およびCheckOUTを送信する。
 ステップS208以降においては、サーバ側のサーバ側認証処理部82は、ステップS202で受信したサービ要求識別に対応した認証シードを使用する。
 ステップS208において、サーバ側のサーバ側認証処理部82は、受信したクライアント側ワンタイム認証子C1(n-1)が、保持しているサービ要求識別iに対応したクライアント側ワンタイム認証子Ci(n-1)に一致するか判定する。
 受信したワンタイム認証子C1(n-1)が、不正なワンタイム認証子であると判定した場合、サーバ側認証処理部82は、認証失敗と判定し、認証に失敗した旨をICカード1およびリーダライタ2に通知し、処理を終および了する。受信したワンタイム認証子C1(n-1)が、認証子テーブル72iに保持されているワンタイム認証子に一致した場合、サーバ側の認証処理部は、ステップS209に移る。
 ステップS209において、サーバ側のサーバ側認証処理部82は、保持しているクライアント側共通暗号鍵CKi(n-1)、並びに受信したC1(n-1)を用いて、次式によりチェックコードCHECK-Cを計算する。チェックコードCHECK-Cは、一方向関数で計算される。この一方向関数は、2つの引数をとり、引数の順序によって関数値が異なる関数である。
 CHECK-C=hash3{CKi(n-1),C1(n-1)}
 ステップS210において、サーバ側のサーバ側認証処理部82は、受信したCheckOUTとステップS209で作成したチェックコードCHECK-Cとを比較する。
 受信したCheckOUTが、チェックコードCHECK-Cに一致しない場合、サーバ側認証処理部82は、認証失敗と判定し、認証に失敗した旨をICカード1およびリーダライタ2に通知し、処理を終了する。受信したCheckOUTが、チェックコードCHECK-Cに一致した場合、ステップS211に移る。
 ステップS211において、サーバ側のサーバ側認証処理部82は、第1乱数CRを生成し、その乱数CRを、次回認証クライアント側第1シードCRi(n)とする。
 また、サーバ側のサーバ側認証処理部82は、第2乱数CQを生成し、その乱数CQを、次回認証クライアント側第2シードCQi(n)とする。
 また、サーバ側のサーバ側認証処理部82は、第3乱数SRを生成し、その乱数SRを、次回認証サーバ側第1シードSRi(n)とする。
 また、サーバ側のサーバ側認証処理部82は、第4乱数SQを生成し、その乱数SQを、次回認証サーバ側第2シードSQi(n)とする。
 サーバ側認証処理部82における乱数生成方法としては、関数により作成される疑似乱数列を用いる方法、原子核の崩壊や抵抗体の熱雑音といったランダムな自然現象を利用して作成される自然乱数を利用する方法の他に、別途作成された自然乱数を格納した乱数ファイルから、乱数を読み出す方法であっても良い。
 ステップS212において、サーバ側のサーバ側認証処理部82は、次式に従って、今回のワンタイム認証についての、サーバ側ワンタイム認証子Si(n-1)を作成する。
 Si(n-1)=hash2(SZi,SRi(n-1),CQi(n-1))
 ステップS213において、サーバ側のサーバ側認証処理部82は、共通暗号鍵SKi(n-1)で、次回認証用シードCRi(n)、CQi(n)、SRi(n)、およびSQi(n)を暗号化する。SKi(n-1)で暗号化された後のCRi(n)、CQi(n)、SRi(n)、およびSQi(n)を、SKi(n-1)*CRi(n)、SKi(n-1)*CQi(n)、SKi(n-1)*SRi(n)、およびSKi(n-1)*SQi(n)で表す。
 ステップS214において、サーバ側のサーバ側認証処理部82は、次式に従って、改竄チェックコードCheckINを作成する。
 CheckIN=hash4{SKi(n-1),Si(n-1),SKi(n-1)*CRi(n),SKi(n-1)*CQi(n)、SKi(n-1)*SRi(n),SKi(n-1)*SQi(n)}
 ステップS215において、サーバ装置4からICカード1へ、Si(n-1)、SKi(n-1)*CRi(n),SKi(n-1)*CQi(n)、SKi(n-1)*SRi(n),SKi(n-1)*SQi(n)、およびCheckINを送信する。
 ステップS216において、比較回路CMPは、exSとサーバ側から受信したSi(n-1)とを比較する。一致しない場合は、認証失敗と判定し、サーバエラーとしてリーダライタ2へ通知した後、処理を終了する。一致した場合は、ステップS217に移る。
 ステップS217において、ハッシュ回路Hash4は、演算スタック131に格納されているSK1(n-1)と、サーバ側から受信したSi(n-1),SKi(n-1)*CRi(n),SKi(n-1)*CQi(n)、SKi(n-1)*SRi(n),およびSKi(n-1)*SQi(n)を用いて、次式によりチェックコードCHECK-Sを計算する。
 CHECK-S=hash4{SK1(n-1),Si(n-1),SKi(n-1)*CRi(n),SKi(n-1)*CQi(n)、SKi(n-1)*SRi(n),SKi(n-1)*SQi(n)}
 ステップS218において、比較回路CMPは、受信したCheckINとステップ217で作成したチェックコードCHECK-Sとを比較する。一致しない場合は、認証失敗と判定し、サーバエラーとしてリーダライタ2へ通知した後、処理を終了する。一致した場合は、ステップS219に移る。
 ステップS219において、復号回路DECは、受信したSKi(n-1)*CRi(n),SKi(n-1)*CQi(n)、SKi(n-1)*SRi(n),およびSKi(n-1)*SQi(n)を、演算スタック131上に保持しているサーバ側共通暗号鍵SK1(n-1)で、復号する。復号したCRi(n)、CQi(n)、SRi(n),およびSQi(n)を、認証シード141へ格納する。
 ステップS220において、ハッシュ回路Hash5は、クラインアント側の共通暗号鍵CK1を、次の式で更新する。
 CK1(n)=hash5{CRi(n),CQi(n),CK1(n-1)}
 また、ステップS220において、ハッシュ回路Hash6は、サーバ側の共通暗号鍵SK1を、次の式で更新する。
SK1(n)=hash6{SRi(n),SQi(n),SK1(n-1)}
 制御部11は、更新されたCK1(n)、SK1(n)を、それぞれ、認証シード141のCKi(n-1)、SKi(n-1)へ書き込む。
 ステップS221において、制御部11は、リーダライタ2へ完了を通知する。
 ステップS222において、サーバ側のサーバ側認証処理部82は、次回のワンタイム認証時に使用するクライアント側ワンタイム認証子Ci(n)を次式に従って計算し、次回の相互認証まで認証子テーブル72iに保持する。
 Ci(n)=hash1{CZi,CRi(n),SQi(n)}
 ステップS223において、サーバ側認証処理部82は、CRi(n)、CQi(n)、SRi(n)、SQi(n)でシードテーブル71iにおけるデータを更新し、Ci(n)で認証子テーブル72iにおけるクライアント側ワンタイム認証子を更新する。
 ステップS224において、サーバ側のサーバ側認証処理部82は、クライアント側の共通暗号鍵CKiを、次のハッシュ関数を用いて更新する。
CKi(n)=hash5{CRi(n),CQi(n),CKi(n-1)}
 また、ステップS224において、サーバ側のサーバ側認証処理部82は、サーバ側の共通暗号鍵SKiを、次のハッシュ関数を用いて更新する。
SKi(n)=hash6{SRi(n),SQi(n),SKi(n-1)}
 ステップS225において、サーバ側のサーバ側認証処理部82は、シードテーブル71において、その管理番号の次回認証用のシードおよび共通暗号鍵CRi(n)、CQi(n)、CKi(n)、SRi(n)、SQi(n)、SKi(n)で、今回認証用のシードおよび共通暗号鍵CRi(n-1)、CQi(n-1)、CKi(n-1)、SRi(n-1)、SQi(n-1)、SKi(n-1)を更新する。
 次に、ステップS208の詳細について説明する。
 ステップS208では、サーバ側認証処理部82は、ICカード1から受信したクライアント側ワンタイム認証子C1(n-1)が、認証子テーブル72iに登録されているクライアント側ワンタイム認証子のいずれかであるか否かを判定する。
 受信したクライアント側ワンタイム認証子C1(n-1)が、認証子テーブル72iに登録されているクライアント側ワンタイム認証子のいずれかである場合、認証成功であり、サーバ側認証処理部82は、認証子テーブル72iにおいて、受信したクライアント側ワンタイム認証子C1(n-1)に関連付けられている管理番号を特定する。
 そして、サーバ側認証処理部82は、特定された管理番号に対応するシードテーブル71i中のレコードを用いて以後の処理を進める。
 また、受信したクライアント側ワンタイム認証子C1(n-1)が、認証子テーブル72iに登録されているクライアント側ワンタイム認証子のいずれかでない場合、認証失敗となる。
 次に、ステップS211の詳細について説明する。
 図24は、ステップS211の詳細を説明するフローチャートである。
 ステップS301において、サーバ側認証処理部82は、乱数CR,CQ,SRを作成し、それらを次回認証用シードCRi(n)、CQi(n)、SRi(n)にセットする。
 ステップS302において、サーバ側認証処理部82は、乱数SQを作成する。
 ステップS303において、この乱数SQを次回認証用サーバ側シードに使用した場合に、次回認証用クライアント側ワンタイム認証子が、別のICカードのクライアント側ワンタイム認証子に一致するか否かを判定する。つまり、生成した乱数SQを使用した場合のクライアント側ワンタイム認証子の一意性(つまり、同じ値のクライアント側ワンタイム認証子が存在しないこと)が確保されるか否かが判定される。
 この時、サーバ側認証処理部82は、次式に従って、この乱数SQを次回認証用サーバ側シードに使用した場合の、次回認証用クライアント側認証子X1を計算し、このワンタイム認証子が、認証子テーブル72iに登録されているか否かを判定する。
 X1=hash1{CZi,CRi(n),SQ}
 そして、生成した乱数SQで一意性が確保されないと判定した場合、サーバ側認証処理部82は、一意性が確保されるまで、乱数SQを再生成する。一方、生成した乱数SQで一意性が確保されると判定した場合、ステップS304へ移る。
 ステップS304において、サーバ側認証処理部82は、乱数SQを、次回認証用サーバ側シードSQi(n)にセットする。
 次に、ステップS223の詳細について説明する。
 図25は、ステップS223の詳細を説明するフローチャートである。
 ステップS305において、サーバ側認証処理部82は、その管理番号の次回認証用のシードCRi(n)、CQi(n)、SRi(n)、SQi(n)をシードテーブル71iに書き込む。
 ステップS306において、ステップS303での判定時に計算したX1を、次回認証用クライアント側ワンタイム認証子Ci(n)とし、そのCi(n)で、認証子テーブル72iにおいて、その管理番号に関連付けられているワンタイム認証子を更新する。
 すなわち、サーバ側認証処理部82は、その管理番号に関連付けられている認証アドレスをシードテーブル71iから読み出し、その認証アドレスで、認証子テーブル72iにおけるその管理番号のレコードを特定し、そのレコード内のワンタイム認証子を更新する。
 ステップS307において、サーバ側認証処理部82は、認証子テーブル72i内のレコードをワンタイム認証子の値が昇順になるようにソートし、ソートにより位置に変更のあったレコードについて、シードテーブル71iにおいてそのレコードの管理番号に関連付けられている認証アドレスを更新する。
 [実施の形態2の変形例]
 実施の形態2についても、実施の形態1の変形例と同様に、前回のワンタイム認証の終了時に、今回のクライアント側ワンタイム認証子Ci(n-1)の値を求めて認証シード141に書き込んでおくように、変形することができる。この変形例によれば、今回の認証処理の冒頭のステップS204において、ハッシュ回路を使ってクライアント側ワンタイム認証子を計算するステップを省くことができるから、今回の認証に要する時間を短縮することができる。
 なお、1枚のICカードにより1以上のサービスを提供する第1の方法の場合は、ICカード1には1組の認証シードしか記憶されていないので、ICカード1は、その認証シードを使用してワンタイム認証を行うだけである。
 なお、上記の各実施の形態は、本発明の好適な例であるが、本発明は,これらに限定されるものでなく、本発明の要旨を逸脱しない範囲において、種々の変形、変更が可能である。
 ICカード1は、非接触でリーダライタ2と通信するものとして説明したが、カード側に設置された接点(端子)を経由してリーダライタ2が通信する接触式であっても構わない。
 また、ICカード内の不揮発性メモリは、FeRAM以外のフラッシュメモリやEEPROMであっても良い。
 ICカード1の制御部11は、CPUなしの電子回路で構成する例を示したが、CPUがROMに記録されたプログラムを実行して実現するように構成してもよい。
 また、上記実施の形態1乃至2において、ワンタイム認証子をワンタイムパスワードとしてもよい。ワンタイム認証子がワンタイムパスワードである場合、クライアント側ワンタイム認証子の一意性についての判定(ステップS108、S308)は不要であり、また、その場合、ICカード1からカードID121を読み出し、ワンタイム認証子とともにそのカードID121をサーバ装置4へ送信し、サーバ装置4は、カード属性テーブル73を参照し、そのカードID121に基づいてICカード1を特定する。
 また、上記実施の形態1乃至2において、サーバ装置4において、サーバ側認証処理部82は、サーバ装置4の起動時にシードテーブル71および認証子テーブル72を記憶装置55からRAM53へ読み出し、ワンタイム認証子に基づく相互認証を、RAM53上のシードテーブル71および認証子テーブル72に基づいて実行し、サーバ装置4のシャットダウン時に、RAM53上のシードテーブル71および認証子テーブル72で、記憶装置55上のシードテーブル71および認証子テーブル72を更新するようにしてもよい。
 1   ICカード
 2   ICカード用リーダライタ
 3   ネットワーク
 4   サーバ装置
 10  ICチップ
 11  制御部
 12  ROM
 13  RAM
 14  FeRAM
 15  受信回路
 16  送信回路
 17  アンテナ
 18  内部バス
 121 カードID
 131 演算スタック
 132 入力メモリ
 133 出力メモリ
 141 認証シード
 142 カードID
 51  CPU
 52  ROM
 53  RAM
 54  インタフェース
 55  記憶装置
 56  インタフェース
 57  通信装置
 61  ワンタイム認証プログラム
 71  シードテーブル群
 71i シードテーブル
 72  認証子テーブル群
 72i 認証子テーブル
 73  ICカード属性テーブル
 81  通信処理部
 82  サーバ側認証処理部

Claims (9)

  1.  不揮発性メモリとRAMを内蔵したICカードであって、
     1以上のサービスに共通の1組の認証シードおよび共通暗号鍵を前記不揮発性メモリに記憶し、
     前記1以上のサービスに共通の1組の認証シードおよび共通暗号鍵を、前記不揮発性メモリから前記RAM上の演算スタックにコピーして、前記RAM上の演算スタックにコピーされた1組の認証シードに基づいてワンタイム認証子を生成し、前記ICカードとサーバ装置との間の相互認証に使用し、前記RAM上の演算スタックにコピーされた1組の認証シードに基づいて、前記サーバ装置から受信したワンタイム認証子の正当性を判定することを特徴とするワンタイム認証用ICカード。
  2.  前記認証シードは、前記ICカードから前記サーバ装置へ送信されず、また相互認証後に更新されない隠蔽固定情報を含むことを特徴とする請求項1記載のワンタイム認証用ICカード。
  3.  前記ICカードで送信データを暗号化する際に使用する共通暗号鍵が、前記サーバ装置で送信データを暗号化する際に使用する共通暗号鍵とは別の共通暗号鍵であることを特徴とする請求項1または請求項2記載のワンタイム認証用ICカード。
  4.  ICカード側認証子生成に使用されるICカード側認証シードは、サーバ装置側ワンタイム認証子生成に使用されるICカード側認証シードとは別のシードであることを特徴とする請求項1乃至請求項3記載のワンタイム認証用ICカード。
  5.  前記サーバ装置において生成し、暗号化して送信されたICカード側認証シードを、ICカードが受信して復号してワンタイム認証子の作成に使用することを特徴とする請求項1乃至請求項4記載のワンタイム認証用ICカード。
  6.  前回の認証の終了時に、今回の認証のためのクライアント側ワンタイム認証子を、前記不揮発性メモリに記憶させることを特徴とする請求項1乃至請求項5記載のワンタイム認証用ICカード。
  7.  不揮発性メモリとRAMを内蔵したICカードであって、
     1以上のサービス要求識別に対応した1以上の組の認証シードおよび共通暗号鍵を前記不揮発性メモリに記憶し、
     特定のサービス要求識別に対応した1組の認証シードおよび共通暗号鍵を、前記不揮発性メモリから前記RAM上の演算スタックにコピーして、前記RAM上の演算スタックにコピーされた1組の認証シードに基づいてワンタイム認証子を生成し、前記ICカードとサーバ装置との間の相互認証に使用し、前記RAM上の演算スタックにコピーされた1組の認証シードに基づいて、前記サーバ装置から受信したワンタイム認証子の正当性を判定することを特徴とするワンタイム認証用ICカード。
  8.  サーバ装置とICカードを備え、
     前記サーバ装置およびICカードは、1以上のサービスに共通の1組の認証シードを記憶し、
     前記サーバ装置およびICカードは、それぞれ認証シードを生成し、前記認証シードを暗号化して相互に送信し、前記認証シードからワンタイム認証子を生成して送信し、前記サーバ装置により生成された前記認証シードと前記ICカードにより生成された前記認証シードとに基づいて互いにワンタイム認証子についての認証を行い、前記認証に成功するたびに次回認証用シードで前記認証シードを更新して行き保持し、
     前記ICカードは、認証シードに基づいてクライアント側ワンタイム認証子を生成して前記サーバ装置へ送信し、前記サーバ装置へ送信した前記クライアント側ワンタイム認証子および前記サーバ装置から受信したサーバ側ワンタイム認証子についての認証に成功すると、前記次回認証用シードを更新し、
     前記サーバ装置は、前記ICカードより受信した前記クライアント側ワンタイム認証子についての認証に成功すると、前記次回認証用シードを更新し、次回の認証時まで保持すること、
     を特徴とするワンタイム認証システム。
  9.  ICカードとのワンタイム相互認証に使用されるサーバ装置であって、
     前記サーバ装置およびICカードは、1以上のサービスに共通の1組の認証シードを記憶し、
     前記サーバ装置およびICカードは、それぞれ認証シードを生成し、前記認証シードを暗号化して相互に送信し、
     前記認証シードに基づいてサーバ側ワンタイム認証子を生成して前記ICカードへ送信し、
     前記ICカードより受信したクライアント側ワンタイム認証子についての認証に成功すると、次回認証用シードを更新し、次回の認証時まで保持すること、
     を特徴とするサーバ装置。
PCT/JP2017/030973 2016-08-31 2017-08-29 ワンタイム認証用icカード WO2018043498A1 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2016169822A JP2018037877A (ja) 2016-08-31 2016-08-31 ワンタイム認証用icカード
JP2016-169822 2016-08-31

Publications (1)

Publication Number Publication Date
WO2018043498A1 true WO2018043498A1 (ja) 2018-03-08

Family

ID=61309462

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2017/030973 WO2018043498A1 (ja) 2016-08-31 2017-08-29 ワンタイム認証用icカード

Country Status (2)

Country Link
JP (1) JP2018037877A (ja)
WO (1) WO2018043498A1 (ja)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003323651A (ja) * 2002-04-26 2003-11-14 Matsushita Electric Ind Co Ltd 情報機器、情報機器の制御方法及びプログラム
US20070061566A1 (en) * 2005-09-09 2007-03-15 Bailey Daniel V Tokencode Exchanges for Peripheral Authentication
JP2008269415A (ja) * 2007-04-23 2008-11-06 Dainippon Printing Co Ltd ワンタイムパスワード発行システム
JP5963382B1 (ja) * 2015-10-02 2016-08-03 株式会社Pips ワンタイム認証システム

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003323651A (ja) * 2002-04-26 2003-11-14 Matsushita Electric Ind Co Ltd 情報機器、情報機器の制御方法及びプログラム
US20070061566A1 (en) * 2005-09-09 2007-03-15 Bailey Daniel V Tokencode Exchanges for Peripheral Authentication
JP2008269415A (ja) * 2007-04-23 2008-11-06 Dainippon Printing Co Ltd ワンタイムパスワード発行システム
JP5963382B1 (ja) * 2015-10-02 2016-08-03 株式会社Pips ワンタイム認証システム

Also Published As

Publication number Publication date
JP2018037877A (ja) 2018-03-08

Similar Documents

Publication Publication Date Title
CN110519260B (zh) 一种信息处理方法及信息处理装置
US9740849B2 (en) Registration and authentication of computing devices using a digital skeleton key
US20190280863A1 (en) Recovery of secret data in a distributed system
KR101054970B1 (ko) 개인 정보를 포함하는 전자 증명서를 이용하여 통신 상대를 인증하기 위한 시스템, 장치, 방법, 및 컴퓨터 판독 가능한 기록 매체
CA2554300C (en) System and method for encrypted smart card pin entry
ES2680152T3 (es) Método y aparato de autenticación conveniente para el usuario usando una aplicación de autenticación móvil
US7596704B2 (en) Partition and recovery of a verifiable digital secret
JP2007013433A (ja) 暗号化データを送受信する方法及び情報処理システム
US9165148B2 (en) Generating secure device secret key
WO2012034339A1 (zh) 一种实现网络支付的方法及移动终端
JP6188633B2 (ja) コンピュータシステム、コンピュータ、半導体装置、情報処理方法およびコンピュータプログラム
JP2003143131A (ja) 電子情報管理装置、携帯情報端末装置、管理サーバ装置及びプログラム
JP5380368B2 (ja) Icチップ発行システム、icチップ発行方法およびicチップ発行プログラム
CN108270767B (zh) 数据验证方法
WO2022130528A1 (ja) 回復用検証システム、照合システム、回復用検証方法および非一時的なコンピュータ可読媒体
WO2018043498A1 (ja) ワンタイム認証用icカード
CN111740840B (zh) 一种多UKey认证系统、方法、设备及存储介质
US20220247568A1 (en) Data storage device, system, and method for digital signature
US11164185B2 (en) Method for control of authenticity of a payment terminal and terminal thus secured
JP2007249629A (ja) 生体情報登録システム
WO2021028705A1 (en) Recovery of secret data in a distributed system
CN112101048A (zh) 身份识别信息的处理装置及方法
CN115051823A (zh) 存储器装置作为安全令牌的利用
JP4583428B2 (ja) 管理サーバ装置及びプログラム
CN115529591A (zh) 基于令牌的认证方法、装置、设备及存储介质

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 17846503

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 17846503

Country of ref document: EP

Kind code of ref document: A1