WO2011155039A1 - Message authentication code calculation device, message authentication code calculation method, and message authentication code calculation program - Google Patents

Message authentication code calculation device, message authentication code calculation method, and message authentication code calculation program Download PDF

Info

Publication number
WO2011155039A1
WO2011155039A1 PCT/JP2010/059818 JP2010059818W WO2011155039A1 WO 2011155039 A1 WO2011155039 A1 WO 2011155039A1 JP 2010059818 W JP2010059818 W JP 2010059818W WO 2011155039 A1 WO2011155039 A1 WO 2011155039A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
secret key
bit length
unit
value
Prior art date
Application number
PCT/JP2010/059818
Other languages
French (fr)
Japanese (ja)
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 PCT/JP2010/059818 priority Critical patent/WO2011155039A1/en
Publication of WO2011155039A1 publication Critical patent/WO2011155039A1/en

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/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/3236Cryptographic 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 using cryptographic hash functions
    • H04L9/3242Cryptographic 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 using cryptographic hash functions involving keyed hash functions, e.g. message authentication codes [MACs], CBC-MAC or HMAC

Definitions

  • the present invention relates to, for example, a message authentication code calculation device, a message authentication code calculation method, and a message authentication code calculation program for efficiently calculating a message authentication code.
  • Non-Patent Document 1 describes a zipper hash function (zipper hash function). Even if the zipper hash function is configured using an ideal compression function (WFILRO (Weakened Fixed Input Length Random Oracle)) whose unidirectionality is broken, it cannot be strongly distinguished from a random oracle.
  • WFILRO Wired Fixed Input Length Random Oracle
  • Non-Patent Document 2 describes a double-pipe hash function.
  • the double pipe hash function cannot be strongly distinguished from a random oracle even if it is configured using an ideal compression function whose unidirectionality is broken.
  • Non-Patent Document 3 describes a hash function that has high computational efficiency and is a hash function that cannot be strongly discriminated from a random oracle even when configured using an ideal compression function with broken unidirectionality. .
  • Non-Patent Document 4 and Non-Patent Document 5 describe a highly secure message authentication code calculation algorithm (HMAC: Keyed Hash Functions and Message Authentication) using a hash function.
  • HMAC Hash Functions and Message Authentication
  • Non-Patent Document 1 and the double-pipe hash function described in Non-Patent Document 2 are strongly distinguished from random oracles even if they are configured using an ideal compression function whose unidirectionality is broken. Although impossible, calculation efficiency is poor.
  • Non-Patent Document 3 a hash function that cannot be strongly discriminated from a random oracle even when configured using an ideal compression function with broken unidirectionality, is more efficient than a zipper hash function or a double-pipe hash function. A good hash function has been proposed.
  • HMAC described in Non-Patent Documents 4 and 5 is a message authentication code calculation algorithm using a general hash function algorithm, and has been proposed as a message authentication code calculation algorithm having provable security.
  • HMAC in order for HMAC to have provable security, it is necessary to use a secure hash function algorithm. It is pointed out that a key recovery attack is possible when using a hash function algorithm with weak security. Further, HMAC secures provable security by executing the hash function algorithm twice, so that calculation efficiency is poor.
  • the present invention can construct a message authentication code computation algorithm with high computational efficiency using a random oracle and a hash function that cannot be strongly discriminated even if it is constructed using an ideal compression function with broken unidirectionality. The purpose is to do so.
  • a secret key addition data generation unit that generates m-bit length data as the a-th secret key addition data;
  • a code calculator Generate m-bit length data including compressed code additional data including the i-th divided data obtained by the communication data dividing unit and the i-1th compressed code calculated by the second compressed code calculating unit.
  • a compressed code additional data generation unit Based on the predetermined second additional data having an n-bit length and the compressed code additional data having an m-bit length generated by the compressed code additional data generating unit, new data having an n-bit length is converted into the new data using the compression function.
  • a message authentication code calculation unit that calculates the message authentication code of the communication data.
  • the message authentication code computing device makes it difficult to specify an input value to the compression function by adding a secret key to the input value (divided data obtained by dividing communication data) to the compression function.
  • a message authentication code calculation algorithm with high calculation efficiency is configured using a hash function algorithm that cannot be strongly discriminated from a random oracle even if configured using an ideal compression function whose unidirectionality is broken. be able to.
  • FIG. 1 is a schematic diagram of a communication system 100 according to Embodiment 1.
  • FIG. FIG. 3 is a functional configuration diagram of a message authentication code calculation device 200 according to the first embodiment.
  • 5 is a flowchart showing a message authentication code calculation method in the first embodiment.
  • FIG. 3 is a structural diagram of a message authentication code calculation algorithm in the first embodiment.
  • FIG. 3 is a diagram illustrating an example of hardware resources of the message authentication code calculation device 200 according to the first embodiment.
  • FIG. 9 is a flowchart showing a message authentication code calculation method in the second embodiment.
  • FIG. 9 is a structural diagram of a message authentication code calculation algorithm in the second embodiment.
  • FIG. 10 is a flowchart illustrating a message authentication code calculation method according to Embodiment 3.
  • FIG. 11 is a structural diagram of a message authentication code calculation algorithm in the third embodiment.
  • FIG. 14 is another example of a functional configuration diagram of the message authentication code calculation device 200 according to the third embodiment.
  • 10 is another example of a flowchart showing a message authentication code calculation method according to Embodiment 3.
  • FIG. 14 is another example of the structure diagram of the message authentication code calculation algorithm in the third embodiment.
  • Embodiment 1 A mode in which secret key data is added to the divided data obtained by dividing the communication data, and each secret key added data to which the secret key data is added is input to a compression function to generate a message authentication code for the communication data will be described.
  • FIG. 1 is a schematic diagram of a communication system 100 according to the first embodiment. An overview of the communication system 100 according to Embodiment 1 will be described with reference to FIG.
  • the user terminal device A102 and the user terminal device B103 communicate communication data 104 (user data, original data) via the network 101.
  • the communication data 104 includes data called “message authentication code 105”. Is granted.
  • the user terminal device A102 and the user terminal device B103 include a communication unit 111, a communication data generation unit 112, a communication data verification unit 113, and a message authentication code generation unit 119.
  • the communication unit 111 transmits and receives the communication data 104 and the message authentication code 105.
  • the communication data generation unit 112 generates communication data 104 to be transmitted.
  • the communication data verification unit 113 verifies the received communication data 104.
  • the message authentication code generation unit 119 generates a message authentication code 105 for the communication data 104.
  • the user terminal device A102 and the user terminal device B103 store in advance the same key data that is kept secret from other communication terminal devices.
  • this key data is referred to as “secret key 106”.
  • the secret key 106 is also called a “shared key”.
  • the communication data generation unit 112 generates communication data 104.
  • the message authentication code generation unit 119 generates the message authentication code 105 based on the communication data 104 generated by the communication data generation unit 112 and the secret key 106 stored in advance.
  • the communication unit 111 transmits the communication data 104 generated by the communication data generation unit 112 and the message authentication code 105 generated by the message authentication code generation unit 119 to the user terminal device B103.
  • the communication unit 111 receives the communication data 104 and the message authentication code 105 transmitted by the user terminal device A102.
  • the message authentication code generation unit 119 generates the message authentication code 105 based on the communication data 104 received by the communication unit 111 and the secret key 106 stored in advance.
  • the communication data verification unit 113 compares the message authentication code 105 received by the communication unit 111 with the message authentication code 105 generated by the message authentication code generation unit 119. If the message authentication codes 105 match, it is guaranteed that the communication data 104 received by the communication unit 111 is legitimate communication data transmitted by the user terminal device A102. On the other hand, if the message authentication code 105 does not match, the communication data 104 received by the communication unit 111 is unauthorized communication data that has been altered or generated by another user terminal device.
  • the function of the message authentication code calculation device 200 described below corresponds to the message authentication code generation unit 119 provided in the user terminal device A102 and the user terminal device B103.
  • FIG. 2 is a functional configuration diagram of the message authentication code calculation device 200 according to the first embodiment.
  • a functional configuration of the message authentication code computing device 200 according to Embodiment 1 will be described with reference to FIG.
  • the message authentication code calculation device 200 includes an arbitrary length value input unit 210, an arbitrary length value division unit 220, a secret key addition unit 230, a compression function calculation unit 240, a message authentication code output unit 250, and a calculation device storage unit 290.
  • the computing device storage unit 290 (an example of a secret key data storage unit) stores various data used by the message authentication code computing device 200.
  • the arithmetic device storage unit 290 stores first to i ⁇ 1th secret key data.
  • Arbitrary length value input section 210 (an example of a communication data input section) inputs communication data communicated between specific information processing apparatuses (for example, the above-described user terminal apparatus).
  • Arbitrary length value dividing unit 220 (an example of a communication data dividing unit) divides data including communication data input to arbitrary length value input unit 210 into first to i-th divided data.
  • the m-bit data including the a-th secret key data stored in the storage unit 290 is generated as the a-th secret key additional data.
  • the compression function calculation unit 240 calculates a message authentication code of communication data using a compression function that calculates new data of n-bit length based on n-bit length data and m-bit length data.
  • the compression function calculation unit 240 includes a first compression function calculation unit 241, a second compression function calculation unit 242, and a third compression function calculation unit 243.
  • the first compression function calculation unit 241 (an example of a first compression code calculation unit) includes predetermined first additional data having an n-bit length and a first secret key having an m-bit length generated by the secret key addition unit 230 Based on the additional data, a first new data having an n-bit length is calculated as a first compressed code using a compression function.
  • the second compression function calculation unit 242 (an example of a second compression code calculation unit) generates the first compression code calculated by the first compression function calculation unit 241 and the second to second generated by the secret key addition unit 230.
  • the b-th new data based on and is calculated.
  • the third compression function calculation unit 243 (an example of a compression code additional data generation unit and a message authentication code calculation unit) is calculated by the i-th divided data obtained by the arbitrary length value division unit 220 and the second compression function calculation unit. Further, m-bit data including the i-1th compressed code is generated as compressed code additional data. The third compression function calculation unit 243 uses the compression function based on the predetermined second additional data having an n-bit length and the compressed code additional data having an m-bit length to transfer new data having an n-bit length to the communication data. Is calculated as the message authentication code.
  • the message authentication code output unit 250 outputs the message authentication code of the communication data calculated by the compression function calculation unit 240.
  • the communication data is referred to as “arbitrary length value M”
  • the divided data is referred to as “predetermined length value p”
  • the secret key data is referred to as “secret key k”
  • the secret key additional data is referred to as “value x”.
  • the compression function is referred to as “compression function h”
  • the first additional data is referred to as “fixed value IV1”
  • the second additional data is referred to as “fixed value IV2”.
  • the message authentication code is referred to as “value C [i]”.
  • FIG. 3 is a flowchart showing a message authentication code calculation method in the first embodiment. A message authentication code calculation method according to Embodiment 1 will be described with reference to FIG.
  • the arbitrary length value input unit 210 inputs a value M having an arbitrary bit length, and stores the input value M in the arithmetic device storage unit 290.
  • the bit length (data size) of the value M is assumed to be “i times mn bits”.
  • M is a predetermined natural number
  • n is a predetermined natural number smaller than m.
  • I is a natural number that changes according to the bit length of the arbitrary length value M. It progresses to S120 after S110.
  • the arbitrary length value dividing unit 220 acquires the value M input in S110 from the arithmetic device storage unit 290, and divides the acquired value M into mn bit lengths to obtain i values p [1],. . . , Value p [i]. That is, the values p [1],. . . , P [i] are combined to give the value M.
  • the arbitrary length value dividing unit 220 generates the generated values p [1],. . . , Value p [i] is stored in the arithmetic device storage unit 290. It progresses to S130 after S120.
  • the secret key adding unit 230 generates the values p [1],. . . , Value p [i] excluding value p [i]. . . , Value p [i ⁇ 1] is acquired from the arithmetic unit storage unit 290.
  • the secret key adding unit 230 includes secret keys k [1],. . . , The secret key k [i ⁇ 1] is acquired from the arithmetic device storage unit 290. It is assumed that the arithmetic device storage unit 290 stores in advance a sufficient number of secret keys k whose order is determined. Each secret key k is a specific value having an n-bit length.
  • the secret key adding unit 230 receives the values p [1],. . . , Values p [i ⁇ 1], n-bit secret keys k [1],. . . , The secret key k [i ⁇ 1] is added and the value x [1],. . . , A value x [i ⁇ 1] is generated. That is, the secret key adding unit 230 generates the value x [1] by adding the secret key k [1] to the value p [1], and adds the secret key k [2] to the value p [2].
  • the secret key adding unit 230 generates the generated values x [1],. . . , Value x [i ⁇ 1] is stored in the arithmetic device storage unit 290.
  • the first compression function calculation unit 241 acquires the value x [1] generated in S130 from the arithmetic device storage unit 290, and uses the n-bit fixed value IV1 and the m-bit length value x [1] as a compression function.
  • the value c [1] having an n-bit length is calculated by inputting to h.
  • the first compression function calculation unit 241 stores the calculated value c [1] in the arithmetic device storage unit 290.
  • the compression function h is to calculate a new value c having an n-bit length from an n-bit length value and an m-bit length value.
  • the fixed value IV1 is assumed to be predetermined. It progresses to S141 after S140.
  • the second compression function calculation unit 242 acquires the value c [1] calculated in S140 and the value x [2] generated in S130 from the arithmetic device storage unit 290, and the value c [1] having an n-bit length. And m-bit length value x [2] are input to compression function h to calculate n-bit length value c [2].
  • the value c [jw] is calculated by inputting to h.
  • the values c [3],. . . , Value c [i ⁇ 1] is calculated.
  • the second compression function calculator 242 calculates the calculated values c [2],. . . , Value c [i ⁇ 1] is stored in the arithmetic device storage unit 290. It progresses to S142 after S141.
  • the third compression function calculation unit 243 obtains the value p [i] generated in S120 and the value c [i ⁇ 1] calculated in S141 from the arithmetic device storage unit 290, and has a value of mn bit length. An n-bit length value c [i ⁇ 1] is added to p [i] to generate an m-bit length value x [i]. At this time, the value c [i-1] may be added to any position of the value p [i].
  • the third compression function calculation unit 243 inputs the n-bit fixed value IV2 and the m-bit length value x [i] to the compression function h, calculates the n-bit length value c [i], and calculates the calculated value.
  • c [i] is stored in the arithmetic device storage unit 290. It progresses to S150 after S142.
  • the message authentication code output unit 250 acquires the value c [i] calculated in S142 from the arithmetic device storage unit 290, and outputs the acquired value c [i] as a message authentication code of the value M.
  • S150 the message authentication code calculation method ends.
  • Y means a value (data) obtained by adding “Y” to an arbitrary place of “X”.
  • FIG. 4 is a structural diagram of a message authentication code calculation algorithm in the first embodiment.
  • the above message authentication code calculation method (see FIG. 3) can be represented as shown in FIG.
  • the value M corresponding to the communication data is i values p [1],. . . , Value p [i] and values p [1],. . . , Values p [i ⁇ 1], n-bit secret keys k [1],. . .
  • the secret key [k ⁇ 1] is added (S110 to S130).
  • k [1] are input to the compression function h to obtain the n-bit length value c [1] (S140).
  • [k [j] are input to the compression function h to obtain an n-bit length value
  • a value c [j] is obtained (S141).
  • c [i-1] are input to the compression function h to obtain the n-bit length value c [i].
  • the value c [i] is output as a message authentication code of the value M (S142, S150).
  • S110 to S150 may be executed in parallel processing in which processing is executed in parallel, instead of sequential processing in which processing is executed in order.
  • S110 to S150 may be executed by stream processing.
  • Stream processing is a method of processing input data in the order of input in bit units rather than data units, and is a type of parallel processing.
  • SHA-256 (Secure Hash Algorithm-256) can be used as the compression function h.
  • the compression function h may be calculated by a compression function calculation device provided separately from the message authentication code calculation device 200.
  • FIG. 5 is a diagram illustrating an example of hardware resources of the message authentication code calculation device 200 according to the first embodiment.
  • the message authentication code calculation device 200 includes a CPU 911 (Central Processing Unit).
  • the CPU 911 is connected to the ROM 913, the RAM 914, the communication board 915, the display device 901, the keyboard 902, the mouse 903, and the magnetic disk device 920 via the bus 912, and controls these hardware devices.
  • the CPU 911 Central Processing Unit
  • the CPU 911 is connected to the ROM 913, the RAM 914, the communication board 915, the display device 901, the keyboard 902, the mouse 903, and the magnetic disk device 920 via the bus 912, and controls these hardware devices.
  • the communication board 915 is wired or wirelessly connected to a communication network such as a LAN (Local Area Network), the Internet, or a telephone line.
  • a communication network such as a LAN (Local Area Network), the Internet, or a telephone line.
  • the magnetic disk device 920 stores an OS 921 (operating system), a window system 922, a program group 923, and a file group 924.
  • OS 921 operating system
  • window system 922 window system
  • program group 923 program group 923
  • file group 924 file group
  • the program group 923 includes a program for executing a function described as “unit” in the embodiment.
  • the program is read and executed by the CPU 911.
  • the program causes the computer to function as “to part” and causes the computer to execute the procedures and methods of “to part”.
  • the file group 924 includes various data (input, output, determination result, calculation result, processing result, etc.) used in “ ⁇ part” described in the embodiment.
  • arrows included in the configuration diagrams and flowcharts mainly indicate input and output of data and signals.
  • what is described as “to part” may be “to circuit”, “to apparatus”, and “to device”, and “to step”, “to procedure”, and “to processing”. May be. That is, what is described as “ ⁇ unit” may be implemented by any of firmware, software, hardware, or a combination thereof.
  • the message authentication code calculation device 200 includes a predetermined length value input unit (for example, secret key addition unit 230), a secret key addition unit 230, a compression function calculation unit 240, and a message authentication code output unit 250.
  • the predetermined length value input unit includes i values p [1],. . . , Input the value p [i].
  • the secret key adding unit 230 receives the values p [1],. . . , Value p [i], i ⁇ 1 values p [1],. . . , Value p [i ⁇ 1] for each secret key k [1],. . . , The secret key k [i ⁇ 1] and the values x [1],. . .
  • a value x [i ⁇ 1] is generated.
  • the compression function calculation unit 240 inputs a fixed value IV2 and a value x [i] obtained by adding the value c [i-1] to the value p [i] and inputs a value c [i] that is a result of calculating the compression function h. Get.
  • the message authentication code output unit 250 outputs the value c [i] obtained by the compression function calculation unit 240.
  • the predetermined length value input unit has i values and mn bit length values p [1],... For a predetermined natural number m and a natural number n smaller than the natural number m. . . , Input the value p [i].
  • the secret key adding unit 230 receives the mn bit length values p [1],. . . , Value p [i], i ⁇ 1 values p [1],. . . , Values p [i ⁇ 1], n-bit secret keys k [1],. . . , The secret key k [i ⁇ 1], and the value x [1],. . . , A value x [i ⁇ 1] is generated.
  • a value c [0] is a fixed value IV1 having an n-bit length
  • a secret key adding unit 230 To obtain an n-bit length value c [j-1], which is a result of calculating the compression function h using the m-bit length value x [j] generated by Get.
  • the compression function calculation unit 240 adds an m-bit length value x [i] by adding an n-bit length value c [i-1] to an n-bit length fixed value IV2 and an mn bit-length value p [i]. Are input to obtain a value c [i] having an n-bit length as a result of calculating the compression function h.
  • the divided values p [1],. . . , P [i-1] and secret keys k [1],. . . , K [i ⁇ 1] added values x [1],. . . , X [i ⁇ 1] are input to the compression function h, making it difficult to specify the value M.
  • a message authentication code computation algorithm with high computational efficiency should be constructed using a random oracle and a hash function algorithm that cannot be strongly discriminated even if constructed using an ideal compression function with broken unidirectionality. Can do.
  • the following describes a hash function algorithm that cannot be strongly discriminated from a random oracle even if it is configured using an ideal compression function with broken unidirectionality.
  • Random oracle is a function that records in advance a list indicating a pair of input value and output value, and outputs an output value corresponding to the input value based on the list.
  • a cryptographic algorithm that is secure when using a random oracle is considered secure when a secure hash function is used instead of a random oracle.
  • cryptographic algorithms such as OAEP (Optical Asymmetric Encryption Padding) and PSS (Probabilistic Signature Scheme) have been proven to be safe when using random oracles.
  • a cryptographic algorithm that is secure when using a random oracle is safe when a hash function that cannot be strongly distinguished from a random oracle is used.
  • EMD Exploited Merkle-Damgard
  • MDP Mercle-Damgard with Permutation
  • the hash function is a function that inputs an arbitrary length value and outputs a fixed length value.
  • the hash function is a compression function that inputs a value having a predetermined input length and outputs a value having a predetermined output length, and an input length that calculates a fixed length output value from an arbitrary length input value using the compression function. And an enlargement algorithm.
  • a hash function that cannot be distinguished strongly from a random oracle is configured using an ideal compression function (FILRO (Fixed Input Length Random Oracle)).
  • FILRO Fixed Input Length Random Oracle
  • WFILRO ideal compression function
  • FILRO hash function that cannot be strongly distinguished from a random oracle even if it is a hash function configured using an ideal compression function (WFILRO) whose unidirectionality is broken instead of an ideal compression function (FILRO).
  • WFILRO ideal compression function
  • FILRO hash function that is not strongly distinguishable from a random oracle unless configured using an ideal compression function (FILRO).
  • a hash function that cannot be strongly discriminated from a random oracle even if configured using an ideal compression function (WFILRO) with broken unidirectionality is random unless configured using an ideal compression function (FILRO). It is safer than a hash function that is not strongly distinguishable from Oracle.
  • WFILRO ideal compression function
  • FILRO ideal compression function
  • the properties to be satisfied by the secure hash function include three properties of “collision resistance”, “second development difficulty”, and “development resistance”.
  • the hash function is described as “H”.
  • An ideal compression function is a compression function having a “list” and an “oracle”.
  • the list is data indicating combinations of input values and output values.
  • the list shows a pair of an input value (x, y) and an output value z for each input value (x, y).
  • Oracle is a function for outputting an output value corresponding to an input value based on a list.
  • the ideal compression function (WFILRO) whose unidirectionality is broken is a compression function having “an oracle that breaks unidirectionality” in addition to the above “list” and “oracle”.
  • An oracle that breaks unidirectionality is a function that outputs an input value corresponding to an output value based on a list.
  • An example of an Oracle that breaks unidirectionality is shown below.
  • the ideal compression function (WFILRO) whose unidirectionality is broken is a compression function that is less secure than the ideal compression function (FILRO) because it has an “oracle that breaks unidirectionality”.
  • An attacker can attack the ideal compression function (FILRO) using “list” and “Oracle”, and the “list” against the ideal compression function (WFILRO) whose unidirectionality is broken. It is possible to attack using "Oracle” and "Oracle that breaks unidirectionality”.
  • the ideal compression function (WFILRO) whose unidirectionality has been broken has more functions to be given to the attacker than the ideal compression function (FILRO), and thus is easily attacked by the attacker and is less secure.
  • the MD structure is the following algorithm.
  • Step 1 Strengthen MD padding is applied to the input value M to create an m ⁇ i-bit value M ′.
  • Step 2 The value M ′ is changed to an m-bit value p [1],. . . , P [i].
  • c [0] is an n-bit fixed value.
  • the compression function h is a function that inputs two values, an n-bit value c [j ⁇ 1] and an m-bit value p [j], and outputs an n-bit value c [j].
  • Step 4 Output c [i].
  • Embodiment 2 Processing data having a data length i times mn bits is generated by adding predetermined data having a specific data length to the communication data, and a message authentication code for the communication data is generated based on the generated processing data. A form is demonstrated. With this configuration, the message authentication code for communication data can be generated even if the data length of communication data is not i times mn bits.
  • items different from the first embodiment will be mainly described. Other matters are the same as those in the first embodiment.
  • FIG. 6 is a functional configuration diagram of the message authentication code computing device 200 according to the second embodiment. A functional configuration of the message authentication code computing device 200 according to Embodiment 2 will be described with reference to FIG.
  • the message authentication code computing device 200 includes a padding unit 260 in addition to the configuration described in the first embodiment (see FIG. 2).
  • the padding unit 260 (an example of a processing data generation unit) adds processing data having a specific length to the communication data input to the arbitrary length value input unit 210 and has processing data having a data length i times mn bits. Is generated.
  • Arbitrary length value dividing unit 220 (an example of a communication data dividing unit) divides processing data generated by padding unit 260 into first to i-th divided data having an mn bit length.
  • the communication data is referred to as “value M”
  • the data added to the communication data is referred to as “padding value”
  • the processing data is referred to as “value M ′”
  • the divided data is referred to as “value p”.
  • FIG. 7 is a flowchart showing a message authentication code calculation method according to the second embodiment. A message authentication code calculation method according to the second embodiment will be described with reference to FIG.
  • the padding step (S111) is executed in addition to the processing described in the first embodiment (see FIG. 3).
  • the arbitrary length value dividing step (S121) is a process in which “value M” in S120 described in the first embodiment is replaced with “value M ′”.
  • the padding step (S111) will be mainly described.
  • the arbitrary length value input unit 210 inputs the value M having an arbitrary bit length, and stores the input value M in the arithmetic device storage unit 290. It progresses to S111 after S110.
  • the padding unit 260 acquires the value M input in S110 from the arithmetic device storage unit 290, inputs the acquired value M to the padding function pad, and obtains a value M ′ having a bit length i times mn bits. calculate.
  • the padding unit 260 stores the calculated value M ′ in the arithmetic device storage unit 290.
  • the padding function pad is a function that generates a value having a bit length i times mn bits by adding a specific padding value to the input value when the bit length of the input value is not i times mn bits. is there. “I” is an arbitrary or predetermined natural number.
  • the padding function pad adds “1
  • the padding value has “1” at the beginning and ⁇ M> at the end, and one or more “0” s between “1” and ⁇ M>.
  • ⁇ M> is data having a bit length of 64 bits
  • of the value M is indicated by 64 bits.
  • ⁇ M> having a bit length of 64 bits can indicate a data size of a maximum of 2 64 bits as the bit length
  • the padding value may be a value other than the above, such as “0” for all bits or “1” for all bits.
  • the arbitrary length value dividing unit 220 acquires the value M ′ calculated in S111 from the arithmetic device storage unit 290, and divides the acquired value M ′ into mn bit lengths to obtain i values p [ 1],. . . , Value p [i], and the generated values p [1],. . . , Value p [i] is stored in the arithmetic device storage unit 290. It progresses to S130 after S121.
  • FIG. 8 is a structural diagram of a message authentication code calculation algorithm in the second embodiment.
  • the above message authentication code calculation method (see FIG. 7) can be represented as shown in FIG.
  • a value M corresponding to the communication data is input to the padding function pad to obtain a value M ′ having a bit length i times mn bits (S110, S111).
  • the value M ′ is an i value p [1],. . . , Value p [i] and values p [1],. . . , Values p [i ⁇ 1], n-bit secret keys k [1],. . . , The secret key [k-1] is added (S121, S130).
  • k [1] are input to the compression function h to obtain the n-bit length value c [1] (S140).
  • [k [j] are input to the compression function h to obtain an n-bit length value
  • a value c [j] is obtained (S141).
  • c [i-1] are input to the compression function h to obtain the n-bit length value c [i].
  • the value c [i] is output as a message authentication code of the value M (S142, S150).
  • the padding function pad may be calculated by a padding function calculation device provided separately from the message authentication code calculation device 200.
  • Embodiment 2 for example, the following message authentication code computing device 200 has been described.
  • the message authentication code computing device 200 includes an arbitrary length value input unit 210, a padding unit 260, and an arbitrary length value dividing unit 220.
  • the arbitrary length value input unit 210 inputs a value M having an arbitrary bit length.
  • the padding unit 260 generates a value M ′ having a bit length i times mn bits by adding a predetermined value to the value M input by the arbitrary length value input unit 210.
  • the arbitrary length value dividing unit 220 divides the value M ′ generated by the padding unit 260 to mn bit length values p [1],. . . , Value p [i].
  • Embodiment 3 A mode in which a necessary number of secret keys are generated based on one secret key, and a message authentication code for communication data is generated using the generated necessary number of secret keys will be described. With this configuration, it is not necessary to store a large number of secret keys in the message authentication code calculation device 200 in advance so that the number of secret keys is not insufficient.
  • matters different from the first embodiment and the second embodiment will be mainly described. Other matters are the same as those in the first or second embodiment.
  • FIG. 9 is a functional configuration diagram of the message authentication code computing device 200 according to the third embodiment. A functional configuration of the message authentication code computing device 200 according to Embodiment 3 will be described with reference to FIG.
  • the message authentication code calculation device 200 includes a secret key input unit 270, an extended key calculation unit 271, and an extended key division unit 272 in addition to the configuration described in the first embodiment (see FIG. 2).
  • a secret key input unit 270 (an example of a secret key data input unit) inputs secret key data having an arbitrary length.
  • the extended key calculation unit 271 (an example of the extended key data generation unit) expands new secret key data having a data length of i ⁇ 1 times n bits based on the secret key data input to the secret key input unit 270.
  • the key data is generated by a predetermined algorithm.
  • the extended key division unit 272 (an example of the extended key data division unit) divides the extended key data generated by the extended key calculation unit 271 into first to i-1th secret key data having an n-bit length.
  • the arithmetic device storage unit 290 (an example of the secret key data storage unit) stores the first to i ⁇ 1th secret key data having an n-bit length obtained by the extended key dividing unit 272.
  • the secret key data of arbitrary length is “secret key ik”
  • the new secret key data having a data length that is n ⁇ 1 times n bits is “extended key ek”
  • the secret key data of n bits is “secret key” k ".
  • FIG. 10 is a flowchart illustrating a message authentication code calculation method according to the third embodiment. A message authentication code calculation method according to Embodiment 3 will be described with reference to FIG.
  • S210 to S230 are executed.
  • S210 to S230 will be mainly described.
  • the secret key input unit 270 inputs a secret key ik having an arbitrary bit length, and stores the input secret key ik in the arithmetic device storage unit 290. It progresses to S220 after S210.
  • the extended key calculation unit 271 acquires the secret key ik input in S210 from the arithmetic device storage unit 290, inputs the acquired secret key ik to the extended key calculation function ek_gen, and has a bit length i ⁇ 1 times n bits. An expanded key ek having is calculated. The expanded key calculation unit 271 stores the calculated expanded key ek in the arithmetic device storage unit 290.
  • the extended key calculation function ek_gen is a function that generates an extended key ek having a bit length i ⁇ 1 times n bits by a predetermined algorithm based on the input secret key ik.
  • the extended key calculation function ek_gen generates an extended key ek using an algorithm used for a technique called a key schedule.
  • the technique for generating an expanded key is a technique that is also used in techniques such as block ciphers. It progresses to S230 after S220.
  • the extended key splitting unit 272 acquires the extended key ek generated in S220 from the arithmetic device storage unit 290.
  • the extended key division unit 272 divides the extended key ek having a bit length i ⁇ 1 times n bits into i ⁇ 1 pieces by n bits.
  • the extended key dividing unit 272 converts the i ⁇ 1 values of n bits long obtained by dividing the extended key ek into the secret keys k [1],. . . , And stored in the arithmetic device storage unit 290 as a secret key k [i ⁇ 1]. That is, the secret keys k [1],. . .
  • the extended key ek is obtained by combining the secret key k [i ⁇ 1].
  • the n ⁇ 1-bit i ⁇ 1 values generated in S230 are converted into secret keys k [1],. . . , Secret key k [i-1] is used in the secret key adding step (S130).
  • S110, S120, and S130 to S150 are the same as those in the first embodiment (see FIG. 3).
  • FIG. 11 is a structural diagram of a message authentication code calculation algorithm in the third embodiment.
  • the above message authentication code calculation method (see FIG. 10) can be represented schematically as shown in FIG.
  • An arbitrary-length secret key ik is input to the extended key calculation function ek_gen to obtain an extended key ek having a bit length i ⁇ 1 times n bits, and the extended key ek is i ⁇ 1 secret keys having an n-bit length.
  • the value M corresponding to the communication data is i values p [1],. . . , Value p [i] and values p [1],. . . , Values p [i ⁇ 1], n-bit secret keys k [1],. . .
  • the secret key [k ⁇ 1] is added (S110 to S130).
  • k [1] are input to the compression function h to obtain the n-bit length value c [1] (S140).
  • [k [j] are input to the compression function h to obtain an n-bit length value
  • a value c [j] is obtained (S141).
  • c [i-1] are input to the compression function h to obtain the n-bit length value c [i].
  • the value c [i] is output as a message authentication code of the value M (S142, S150).
  • the extended key calculation function ek_gen may be calculated by an extended key calculation function device provided separately from the message authentication code calculation device 200.
  • FIG. 12 shows a functional configuration of the message authentication code calculation device 200 in this case.
  • FIG. 13 shows a flowchart of the message authentication code calculation method, and
  • FIG. 14 shows the configuration of the message authentication code calculation algorithm.
  • Embodiment 3 for example, the following message authentication code computing device 200 has been described.
  • the message authentication code computing device 200 includes a secret key input unit 270, an extended key calculation unit 271 and an extended key division unit 272.
  • the secret key input unit 270 inputs a secret key ik of arbitrary length bits.
  • the expanded key calculation unit 271 generates an expanded key ek from the secret key ik input by the secret key input unit 270.
  • the extended key dividing unit 272 divides the extended key ek generated by the extended key calculating unit 271 to obtain an n-bit secret key k [1],. . . , A secret key k [i-1] is generated.
  • 100 communication system 101 network, 102 user terminal device A, 103 user terminal device B, 104 communication data, 105 message authentication code, 106 secret key, 111 communication unit, 112 communication data generation unit, 113 communication data verification unit, 119 message Authentication code generation unit, 200 Message authentication code arithmetic unit, 210 Arbitrary length value input unit, 220 Arbitrary length value division unit, 230 Secret key addition unit, 240 Compression function calculation unit, 241 First compression function calculation unit, 242 Second compression Function calculation unit, 243 Third compression function calculation unit, 250 Message authentication code output unit, 260 Padding unit, 270 Private key input unit, 271 Extended key calculation unit, 272 Extended key division unit, 290 Arithmetic device storage unit, 901 Display device 902 Keyboard , 903 mouse, 911 CPU, 912 Bus, 913 ROM, 914 RAM, 915 communication board, 920 a magnetic disk device, 921 OS, 922 Window system, 923 Program group, 924 File group.

Abstract

A message authentication code calculation algorithm having a favorable calculation efficiency and high safety is configured. A value (M) corresponding to communication data is divided into i-pieces of values (p) having m-n-bit length, and among the values, i-1-pieces of values (p) are added with a secret key (k) having n-bit length (S110 to S130). A fixed value (IV1) having n-bit length and a value (p[1]||k[1]) having m-bit length are input to a compressibility function (h) to obtain a value (c[1]) having n-bit length (S140). By sequentially using j=2 to i-1, a value (c[j-1]) having n-bit length and a value (p[j]||k[j]) having m-bit length are input to the compressibility function (h) to obtain a value (c[j]) having n-bit length (S141). A fixed value (IV2) having n-bit length and a value (p[i]||c[i-1]) having m-bit length are input to the compressibility function (h) to obtain a value (c[i]) having n-bit length, and the value (c[i]) is output as a message authentication code of the value (M) (S142, S150).

Description

メッセージ認証コード演算装置、メッセージ認証コード演算方法およびメッセージ認証コード演算プログラムMessage authentication code calculation device, message authentication code calculation method, and message authentication code calculation program
 本発明は、例えば、効率的にメッセージ認証コードを計算するメッセージ認証コード演算装置、メッセージ認証コード演算方法およびメッセージ認証コード演算プログラムに関するものである。 The present invention relates to, for example, a message authentication code calculation device, a message authentication code calculation method, and a message authentication code calculation program for efficiently calculating a message authentication code.
 非特許文献1には、ジッパーハッシュ関数(zipperハッシュ関数)について記載されている。
 ジッパーハッシュ関数は、一方向性が破られた理想的な圧縮関数(WFILRO(Weakened Fixed Input Length Random Oracle))を用いて構成してもランダムオラクルと強識別不可能である。
Non-Patent Document 1 describes a zipper hash function (zipper hash function).
Even if the zipper hash function is configured using an ideal compression function (WFILRO (Weakened Fixed Input Length Random Oracle)) whose unidirectionality is broken, it cannot be strongly distinguished from a random oracle.
 非特許文献2には、ダブルパイプハッシュ関数(double pipeハッシュ関数)について記載されている。
 ダブルパイプハッシュ関数は、一方向性が破られた理想的な圧縮関数を用いて構成してもランダムオラクルと強識別不可能である。
Non-Patent Document 2 describes a double-pipe hash function.
The double pipe hash function cannot be strongly distinguished from a random oracle even if it is configured using an ideal compression function whose unidirectionality is broken.
 非特許文献3には、一方向性が破られた理想的な圧縮関数を用いて構成してもランダムオラクルと強識別不可能なハッシュ関数であって計算効率が良いハッシュ関数について記載されている。 Non-Patent Document 3 describes a hash function that has high computational efficiency and is a hash function that cannot be strongly discriminated from a random oracle even when configured using an ideal compression function with broken unidirectionality. .
 非特許文献4と非特許文献5とには、ハッシュ関数を用いた安全性の高いメッセージ認証コード演算アルゴリズム(HMAC:Keyed Hash Functions and Message Authentication)について記載されている。 Non-Patent Document 4 and Non-Patent Document 5 describe a highly secure message authentication code calculation algorithm (HMAC: Keyed Hash Functions and Message Authentication) using a hash function.
 非特許文献1に記載されたジッパーハッシュ関数および非特許文献2に記載されたダブルパイプハッシュ関数は、一方向性が破られた理想的な圧縮関数を用いて構成してもランダムオラクルと強識別不可能であるが、計算効率が悪い。
 非特許文献3では、一方向性が破られた理想的な圧縮関数を用いて構成してもランダムオラクルと強識別不可能なハッシュ関数であってジッパーハッシュ関数やダブルパイプハッシュ関数よりも計算効率が良いハッシュ関数が提案されている。
The zipper hash function described in Non-Patent Document 1 and the double-pipe hash function described in Non-Patent Document 2 are strongly distinguished from random oracles even if they are configured using an ideal compression function whose unidirectionality is broken. Although impossible, calculation efficiency is poor.
In Non-Patent Document 3, a hash function that cannot be strongly discriminated from a random oracle even when configured using an ideal compression function with broken unidirectionality, is more efficient than a zipper hash function or a double-pipe hash function. A good hash function has been proposed.
 一方、非特許文献4,5に記載されるHMACは、一般的なハッシュ関数アルゴリズムを利用したメッセージ認証コード演算アルゴリズムであり、証明可能安全性を有するメッセージ認証コード演算アルゴリズムとして提案されている。
 但し、HMACが証明可能安全性を有するためには、安全なハッシュ関数アルゴリズムを利用する必要がある。安全性が脆弱なハッシュ関数アルゴリズムを利用した場合には鍵回復攻撃が可能であることが指摘されている。
 また、HMACは、ハッシュ関数アルゴリズムを2回実施することにより証明可能安全性を確保するため、計算効率が悪い。
On the other hand, HMAC described in Non-Patent Documents 4 and 5 is a message authentication code calculation algorithm using a general hash function algorithm, and has been proposed as a message authentication code calculation algorithm having provable security.
However, in order for HMAC to have provable security, it is necessary to use a secure hash function algorithm. It is pointed out that a key recovery attack is possible when using a hash function algorithm with weak security.
Further, HMAC secures provable security by executing the hash function algorithm twice, so that calculation efficiency is poor.
 本発明は、例えば、一方向性が破られた理想的な圧縮関数を用いて構成してもランダムオラクルと強識別不可能なハッシュ関数を用いて計算効率が良いメッセージ認証コード演算アルゴリズムを構成できるようにすることを目的とする。 For example, the present invention can construct a message authentication code computation algorithm with high computational efficiency using a random oracle and a hash function that cannot be strongly discriminated even if it is constructed using an ideal compression function with broken unidirectionality. The purpose is to do so.
 本発明のメッセージ認証コード演算装置は、
 特定の情報処理装置間で通信される通信データを入力する通信データ入力部と、
 前記通信データ入力部に入力された通信データを含んだデータを第1から第iの分割データに分割する通信データ分割部と、
 第1から第i-1の秘密鍵データを記憶する秘密鍵データ記憶部と、
 前記通信データ分割部により得られた第a(a=1,2,・・・,i-1)の分割データと前記秘密鍵データ記憶部に記憶される第aの秘密鍵データとを含んだmビット長のデータを第aの秘密鍵付加データとして生成する秘密鍵付加データ生成部と、
 nビット長のデータとmビット長のデータとに基づいてnビット長の新たなデータを算出する圧縮関数を用いて、nビット長の所定の第1の付加データと前記秘密鍵付加データ生成部により生成されたmビット長の第1の秘密鍵付加データとに基づいてnビット長の第1の新たなデータを第1の圧縮コードとして算出する第1の圧縮コード算出部と、
 前記第1の圧縮コード算出部により算出された第1の圧縮コードと前記秘密鍵付加データ生成部により生成された第2から第i-1の秘密鍵付加データと前記圧縮関数とを用いて、第b(b=2,・・・,i-1)の圧縮コードとして第b-1の圧縮コードと第bの秘密鍵付加データとに基づく第bの新たなデータを算出する第2の圧縮コード算出部と、
 前記通信データ分割部により得られた第iの分割データと前記第2の圧縮コード算出部により算出された第i-1の圧縮コードとを含んだmビット長のデータを圧縮コード付加データとして生成する圧縮コード付加データ生成部と、
 nビット長の所定の第2の付加データと前記圧縮コード付加データ生成部により生成されたmビット長の圧縮コード付加データとに基づいて前記圧縮関数を用いてnビット長の新たなデータを前記通信データのメッセージ認証コードとして算出するメッセージ認証コード算出部とを備える。
The message authentication code computing device of the present invention is:
A communication data input unit for inputting communication data communicated between specific information processing apparatuses;
A communication data dividing unit that divides data including communication data input to the communication data input unit into first to i-th divided data;
A secret key data storage unit for storing first to i-1th secret key data;
The a-th (a = 1, 2,..., I−1) division data obtained by the communication data division unit and the a-th secret key data stored in the secret key data storage unit are included. a secret key addition data generation unit that generates m-bit length data as the a-th secret key addition data;
A predetermined first additional data having an n-bit length and the secret key-added data generating unit using a compression function for calculating new data having an n-bit length based on the n-bit data and the m-bit data. A first compressed code calculation unit that calculates first new data having an n-bit length as a first compressed code based on the first secret key-added data having an m-bit length generated by
Using the first compression code calculated by the first compression code calculation unit, the second to (i-1) -th secret key addition data generated by the secret key addition data generation unit, and the compression function, Second compression for calculating b-th new data based on b-th compressed code and b-th secret key additional data as b-th (b = 2,..., I-1) compressed code A code calculator;
Generate m-bit length data including compressed code additional data including the i-th divided data obtained by the communication data dividing unit and the i-1th compressed code calculated by the second compressed code calculating unit. A compressed code additional data generation unit,
Based on the predetermined second additional data having an n-bit length and the compressed code additional data having an m-bit length generated by the compressed code additional data generating unit, new data having an n-bit length is converted into the new data using the compression function. A message authentication code calculation unit that calculates the message authentication code of the communication data.
 本発明のメッセージ認証コード演算装置は、圧縮関数への入力値(通信データを分割した分割データ)に秘密鍵を付加して圧縮関数への入力値の特定を困難にする。これにより、例えば、一方向性が破られた理想的な圧縮関数を用いて構成してもランダムオラクルと強識別不可能なハッシュ関数アルゴリズムを用いて計算効率が良いメッセージ認証コード演算アルゴリズムを構成することができる。 The message authentication code computing device according to the present invention makes it difficult to specify an input value to the compression function by adding a secret key to the input value (divided data obtained by dividing communication data) to the compression function. Thus, for example, a message authentication code calculation algorithm with high calculation efficiency is configured using a hash function algorithm that cannot be strongly discriminated from a random oracle even if configured using an ideal compression function whose unidirectionality is broken. be able to.
実施の形態1における通信システム100の概要図。1 is a schematic diagram of a communication system 100 according to Embodiment 1. FIG. 実施の形態1におけるメッセージ認証コード演算装置200の機能構成図。FIG. 3 is a functional configuration diagram of a message authentication code calculation device 200 according to the first embodiment. 実施の形態1におけるメッセージ認証コード演算方法を示すフローチャート。5 is a flowchart showing a message authentication code calculation method in the first embodiment. 実施の形態1におけるメッセージ認証コード演算アルゴリズムの構造図。FIG. 3 is a structural diagram of a message authentication code calculation algorithm in the first embodiment. 実施の形態1におけるメッセージ認証コード演算装置200のハードウェア資源の一例を示す図。FIG. 3 is a diagram illustrating an example of hardware resources of the message authentication code calculation device 200 according to the first embodiment. 実施の形態2におけるメッセージ認証コード演算装置200の機能構成図。The function block diagram of the message authentication code calculating apparatus 200 in Embodiment 2. FIG. 実施の形態2におけるメッセージ認証コード演算方法を示すフローチャート。9 is a flowchart showing a message authentication code calculation method in the second embodiment. 実施の形態2におけるメッセージ認証コード演算アルゴリズムの構造図。FIG. 9 is a structural diagram of a message authentication code calculation algorithm in the second embodiment. 実施の形態3におけるメッセージ認証コード演算装置200の機能構成図。The function block diagram of the message authentication code calculating apparatus 200 in Embodiment 3. FIG. 実施の形態3におけるメッセージ認証コード演算方法を示すフローチャート。10 is a flowchart illustrating a message authentication code calculation method according to Embodiment 3. 実施の形態3におけるメッセージ認証コード演算アルゴリズムの構造図。FIG. 11 is a structural diagram of a message authentication code calculation algorithm in the third embodiment. 実施の形態3におけるメッセージ認証コード演算装置200の機能構成図の別例。FIG. 14 is another example of a functional configuration diagram of the message authentication code calculation device 200 according to the third embodiment. 実施の形態3におけるメッセージ認証コード演算方法を示すフローチャートの別例。10 is another example of a flowchart showing a message authentication code calculation method according to Embodiment 3. 実施の形態3におけるメッセージ認証コード演算アルゴリズムの構造図の別例。FIG. 14 is another example of the structure diagram of the message authentication code calculation algorithm in the third embodiment.
 実施の形態1.
 通信データを分割した分割データに秘密鍵データを付加し、秘密鍵データを付加した各秘密鍵付加データを圧縮関数に入力して通信データのメッセージ認証コードを生成する形態について説明する。
Embodiment 1 FIG.
A mode in which secret key data is added to the divided data obtained by dividing the communication data, and each secret key added data to which the secret key data is added is input to a compression function to generate a message authentication code for the communication data will be described.
 図1は、実施の形態1における通信システム100の概要図である。
 実施の形態1における通信システム100の概要について、図1に基づいて説明する。
FIG. 1 is a schematic diagram of a communication system 100 according to the first embodiment.
An overview of the communication system 100 according to Embodiment 1 will be described with reference to FIG.
 通信システム100において、ユーザ端末装置A102とユーザ端末装置B103とはネットワーク101を介して通信データ104(ユーザデータ、元データ)を通信する。このとき、この通信データ104が他のユーザ端末装置により改ざんされ又は他人を偽って生成された不正な通信データではないことを保証するため、通信データ104には「メッセージ認証コード105」と呼ばれるデータが付与される。 In the communication system 100, the user terminal device A102 and the user terminal device B103 communicate communication data 104 (user data, original data) via the network 101. At this time, in order to ensure that the communication data 104 is not unauthorized communication data that has been falsified by another user terminal device or generated by impersonating another person, the communication data 104 includes data called “message authentication code 105”. Is granted.
 ユーザ端末装置A102とユーザ端末装置B103とは、通信部111、通信データ生成部112、通信データ検証部113およびメッセージ認証コード生成部119を備える。
 通信部111は、通信データ104とメッセージ認証コード105とを送受信する。
 通信データ生成部112は、送信する通信データ104を生成する。
 通信データ検証部113は、受信した通信データ104を検証する。
 メッセージ認証コード生成部119は、通信データ104のメッセージ認証コード105を生成する。
The user terminal device A102 and the user terminal device B103 include a communication unit 111, a communication data generation unit 112, a communication data verification unit 113, and a message authentication code generation unit 119.
The communication unit 111 transmits and receives the communication data 104 and the message authentication code 105.
The communication data generation unit 112 generates communication data 104 to be transmitted.
The communication data verification unit 113 verifies the received communication data 104.
The message authentication code generation unit 119 generates a message authentication code 105 for the communication data 104.
 また、ユーザ端末装置A102とユーザ端末装置B103とは、他の通信端末装置に対して秘密にする同一の鍵データを予め記憶している。以下、この鍵データを「秘密鍵106」という。秘密鍵106は「共有鍵」とも呼ばれる。 In addition, the user terminal device A102 and the user terminal device B103 store in advance the same key data that is kept secret from other communication terminal devices. Hereinafter, this key data is referred to as “secret key 106”. The secret key 106 is also called a “shared key”.
 例えば、ユーザ端末装置A102からユーザ端末装置B103へ通信データを送信する場合、ユーザ端末装置A102において以下のような処理が行われる。
 通信データ生成部112は通信データ104を生成する。メッセージ認証コード生成部119は、通信データ生成部112により生成された通信データ104と予め記憶する秘密鍵106とに基づいてメッセージ認証コード105を生成する。通信部111は、通信データ生成部112により生成された通信データ104とメッセージ認証コード生成部119により生成されたメッセージ認証コード105とをユーザ端末装置B103へ送信する。
For example, when communication data is transmitted from the user terminal device A102 to the user terminal device B103, the following processing is performed in the user terminal device A102.
The communication data generation unit 112 generates communication data 104. The message authentication code generation unit 119 generates the message authentication code 105 based on the communication data 104 generated by the communication data generation unit 112 and the secret key 106 stored in advance. The communication unit 111 transmits the communication data 104 generated by the communication data generation unit 112 and the message authentication code 105 generated by the message authentication code generation unit 119 to the user terminal device B103.
 また、ユーザ端末装置B103において以下のような処理が行われる。
 通信部111は、ユーザ端末装置A102により送信された通信データ104とメッセージ認証コード105とを受信する。メッセージ認証コード生成部119は、通信部111により受信された通信データ104と予め記憶する秘密鍵106とに基づいてメッセージ認証コード105を生成する。通信データ検証部113は、通信部111により受信されたメッセージ認証コード105とメッセージ認証コード生成部119により生成されたメッセージ認証コード105とを比較する。メッセージ認証コード105が一致すれば、通信部111により受信された通信データ104がユーザ端末装置A102により送信された正当な通信データであることが保証される。一方、メッセージ認証コード105が一致しなければ、通信部111により受信された通信データ104は他のユーザ端末装置により改ざん又は生成された不正な通信データである。
Further, the following processing is performed in the user terminal device B103.
The communication unit 111 receives the communication data 104 and the message authentication code 105 transmitted by the user terminal device A102. The message authentication code generation unit 119 generates the message authentication code 105 based on the communication data 104 received by the communication unit 111 and the secret key 106 stored in advance. The communication data verification unit 113 compares the message authentication code 105 received by the communication unit 111 with the message authentication code 105 generated by the message authentication code generation unit 119. If the message authentication codes 105 match, it is guaranteed that the communication data 104 received by the communication unit 111 is legitimate communication data transmitted by the user terminal device A102. On the other hand, if the message authentication code 105 does not match, the communication data 104 received by the communication unit 111 is unauthorized communication data that has been altered or generated by another user terminal device.
 以下、実施の形態1におけるメッセージ認証コードの生成方法について説明する。
 下記のメッセージ認証コード演算装置200の機能は、上記のユーザ端末装置A102やユーザ端末装置B103が備えるメッセージ認証コード生成部119に相当する。
Hereinafter, a method for generating a message authentication code in the first embodiment will be described.
The function of the message authentication code calculation device 200 described below corresponds to the message authentication code generation unit 119 provided in the user terminal device A102 and the user terminal device B103.
 図2は、実施の形態1におけるメッセージ認証コード演算装置200の機能構成図である。
 実施の形態1におけるメッセージ認証コード演算装置200の機能構成について、図2に基づいて説明する。
FIG. 2 is a functional configuration diagram of the message authentication code calculation device 200 according to the first embodiment.
A functional configuration of the message authentication code computing device 200 according to Embodiment 1 will be described with reference to FIG.
 メッセージ認証コード演算装置200は、任意長値入力部210、任意長値分割部220、秘密鍵付加部230、圧縮関数計算部240、メッセージ認証コード出力部250および演算装置記憶部290を備える。 The message authentication code calculation device 200 includes an arbitrary length value input unit 210, an arbitrary length value division unit 220, a secret key addition unit 230, a compression function calculation unit 240, a message authentication code output unit 250, and a calculation device storage unit 290.
 演算装置記憶部290(秘密鍵データ記憶部の一例)は、メッセージ認証コード演算装置200が使用する各種データを記憶する。
 例えば、演算装置記憶部290は、第1から第i-1の秘密鍵データを記憶する。
The computing device storage unit 290 (an example of a secret key data storage unit) stores various data used by the message authentication code computing device 200.
For example, the arithmetic device storage unit 290 stores first to i−1th secret key data.
 任意長値入力部210(通信データ入力部の一例)は、特定の情報処理装置(例えば、前記のユーザ端末装置)間で通信される通信データを入力する。 Arbitrary length value input section 210 (an example of a communication data input section) inputs communication data communicated between specific information processing apparatuses (for example, the above-described user terminal apparatus).
 任意長値分割部220(通信データ分割部の一例)は、任意長値入力部210に入力された通信データを含んだデータを第1から第iの分割データに分割する。 Arbitrary length value dividing unit 220 (an example of a communication data dividing unit) divides data including communication data input to arbitrary length value input unit 210 into first to i-th divided data.
 秘密鍵付加部230(秘密鍵付加データ生成部の一例)は、任意長値分割部220により得られた第a(a=1,2,・・・,i-1)の分割データと演算装置記憶部290に記憶される第aの秘密鍵データとを含んだmビット長のデータを第aの秘密鍵付加データとして生成する。 The secret key addition unit 230 (an example of the secret key addition data generation unit) is the a-th (a = 1, 2,..., I−1) division data obtained by the arbitrary length value division unit 220 and the arithmetic unit. The m-bit data including the a-th secret key data stored in the storage unit 290 is generated as the a-th secret key additional data.
 圧縮関数計算部240は、nビット長のデータとmビット長のデータとに基づいてnビット長の新たなデータを算出する圧縮関数を用いて、通信データのメッセージ認証コードを算出する。
 圧縮関数計算部240は、第1圧縮関数計算部241、第2圧縮関数計算部242および第3圧縮関数計算部243を備える。
The compression function calculation unit 240 calculates a message authentication code of communication data using a compression function that calculates new data of n-bit length based on n-bit length data and m-bit length data.
The compression function calculation unit 240 includes a first compression function calculation unit 241, a second compression function calculation unit 242, and a third compression function calculation unit 243.
 第1圧縮関数計算部241(第1の圧縮コード算出部の一例)は、nビット長の所定の第1の付加データと秘密鍵付加部230により生成されたmビット長の第1の秘密鍵付加データとに基づいて、圧縮関数を用いて、nビット長の第1の新たなデータを第1の圧縮コードとして算出する。 The first compression function calculation unit 241 (an example of a first compression code calculation unit) includes predetermined first additional data having an n-bit length and a first secret key having an m-bit length generated by the secret key addition unit 230 Based on the additional data, a first new data having an n-bit length is calculated as a first compressed code using a compression function.
 第2圧縮関数計算部242(第2の圧縮コード算出部の一例)は、第1圧縮関数計算部241により算出された第1の圧縮コードと秘密鍵付加部230により生成された第2から第i-1の秘密鍵付加データと圧縮関数とを用いて、第b(b=2,・・・,i-1)の圧縮コードとして第b-1の圧縮コードと第bの秘密鍵付加データとに基づく第bの新たなデータを算出する。 The second compression function calculation unit 242 (an example of a second compression code calculation unit) generates the first compression code calculated by the first compression function calculation unit 241 and the second to second generated by the secret key addition unit 230. Using the i-1 secret key addition data and the compression function, the b-1 compression code and the b secret key addition data are used as the b-th (b = 2,..., i-1) compression code. The b-th new data based on and is calculated.
 第3圧縮関数計算部243(圧縮コード付加データ生成部、メッセージ認証コード算出部の一例)は、任意長値分割部220により得られた第iの分割データと第2圧縮関数計算部により算出された第i-1の圧縮コードとを含んだmビット長のデータを圧縮コード付加データとして生成する。
 第3圧縮関数計算部243は、nビット長の所定の第2の付加データとmビット長の圧縮コード付加データとに基づいて、圧縮関数を用いて、nビット長の新たなデータを通信データのメッセージ認証コードとして算出する。
The third compression function calculation unit 243 (an example of a compression code additional data generation unit and a message authentication code calculation unit) is calculated by the i-th divided data obtained by the arbitrary length value division unit 220 and the second compression function calculation unit. Further, m-bit data including the i-1th compressed code is generated as compressed code additional data.
The third compression function calculation unit 243 uses the compression function based on the predetermined second additional data having an n-bit length and the compressed code additional data having an m-bit length to transfer new data having an n-bit length to the communication data. Is calculated as the message authentication code.
 メッセージ認証コード出力部250は、圧縮関数計算部240により算出された通信データのメッセージ認証コードを出力する。 The message authentication code output unit 250 outputs the message authentication code of the communication data calculated by the compression function calculation unit 240.
 以下、通信データを「任意長値M」、分割データを「既定長値p」、秘密鍵データを「秘密鍵k」、秘密鍵付加データを「値x」という。
 また、圧縮関数を「圧縮関数h」、第1の付加データを「固定値IV1」、第2の付加データを「固定値IV2」という。
 また、第j(j=1,2,・・・,i-1)の圧縮コードを「値C[j]」、メッセージ認証コードを「値C[i]」という。
Hereinafter, the communication data is referred to as “arbitrary length value M”, the divided data is referred to as “predetermined length value p”, the secret key data is referred to as “secret key k”, and the secret key additional data is referred to as “value x”.
The compression function is referred to as “compression function h”, the first additional data is referred to as “fixed value IV1”, and the second additional data is referred to as “fixed value IV2”.
Further, the j-th (j = 1, 2,..., I−1) compression code is referred to as “value C [j]”, and the message authentication code is referred to as “value C [i]”.
 図3は、実施の形態1におけるメッセージ認証コード演算方法を示すフローチャートである。
 実施の形態1におけるメッセージ認証コード演算方法について、図3に基づいて説明する。
FIG. 3 is a flowchart showing a message authentication code calculation method in the first embodiment.
A message authentication code calculation method according to Embodiment 1 will be described with reference to FIG.
(S110:任意長値入力ステップ)
 任意長値入力部210は、任意ビット長の値Mを入力し、入力した値Mを演算装置記憶部290に記憶する。
 以下、値Mのビット長(データサイズ)は「m-nビットのi倍」であるものとする。「m」は所定の自然数であり、「n」はmより小さい所定の自然数である。「i」は任意長値Mのビット長に応じて変化する自然数である。
 S110の後、S120に進む。
(S110: Arbitrary length input step)
The arbitrary length value input unit 210 inputs a value M having an arbitrary bit length, and stores the input value M in the arithmetic device storage unit 290.
Hereinafter, the bit length (data size) of the value M is assumed to be “i times mn bits”. “M” is a predetermined natural number, and “n” is a predetermined natural number smaller than m. “I” is a natural number that changes according to the bit length of the arbitrary length value M.
It progresses to S120 after S110.
(S120:任意長値分割ステップ)
 任意長値分割部220は、S110で入力された値Mを演算装置記憶部290から取得し、取得した値Mをm-nビット長ずつに分割してi個の値p[1],...,値p[i]を生成する。つまり、値p[1],...,値p[i]を結合すると値Mが得られる。
 任意長値分割部220は、生成した値p[1],...,値p[i]を演算装置記憶部290に記憶する。
 S120の後、S130に進む。
(S120: Arbitrary length value dividing step)
The arbitrary length value dividing unit 220 acquires the value M input in S110 from the arithmetic device storage unit 290, and divides the acquired value M into mn bit lengths to obtain i values p [1],. . . , Value p [i]. That is, the values p [1],. . . , P [i] are combined to give the value M.
The arbitrary length value dividing unit 220 generates the generated values p [1],. . . , Value p [i] is stored in the arithmetic device storage unit 290.
It progresses to S130 after S120.
(S130:秘密鍵付加ステップ)
 秘密鍵付加部230は、S120で生成された値p[1],...,値p[i]のうち値p[i]を除いた値p[1],...,値p[i-1]を演算装置記憶部290から取得する。
 秘密鍵付加部230は、秘密鍵k[1],...,秘密鍵k[i-1]を演算装置記憶部290から取得する。演算装置記憶部290には、順番が定められた十分な数の秘密鍵kが予め記憶されているものとする。各秘密鍵kはnビット長の特定値である。全ての秘密鍵kが同じ値であっても、全ての秘密鍵kが異なる値であっても、複数の秘密鍵kが同じ値で残りの秘密鍵が異なる値であっても構わない。
 秘密鍵付加部230は、m-nビット長の値p[1],...,値p[i-1]それぞれにnビット長の秘密鍵k[1],...,秘密鍵k[i-1]を付加してmビット長の値x[1],...,値x[i-1]を生成する。つまり、秘密鍵付加部230は、値p[1]に秘密鍵k[1]を付加して値x[1]を生成し、値p[2]に秘密鍵k[2]を付加して値x[2]を生成する。同様に、秘密鍵付加部230は、値p[jw]に秘密鍵k[j]を付加して値x[jw]を生成する(jw=3,...,i-1)。
 秘密鍵付加部230は、生成した値x[1],...,値x[i-1]を演算装置記憶部290に記憶する。
(S130: private key addition step)
The secret key adding unit 230 generates the values p [1],. . . , Value p [i] excluding value p [i]. . . , Value p [i−1] is acquired from the arithmetic unit storage unit 290.
The secret key adding unit 230 includes secret keys k [1],. . . , The secret key k [i−1] is acquired from the arithmetic device storage unit 290. It is assumed that the arithmetic device storage unit 290 stores in advance a sufficient number of secret keys k whose order is determined. Each secret key k is a specific value having an n-bit length. All the secret keys k may have the same value, all the secret keys k may have different values, or the plurality of secret keys k may have the same value and the remaining secret keys may have different values.
The secret key adding unit 230 receives the values p [1],. . . , Values p [i−1], n-bit secret keys k [1],. . . , The secret key k [i−1] is added and the value x [1],. . . , A value x [i−1] is generated. That is, the secret key adding unit 230 generates the value x [1] by adding the secret key k [1] to the value p [1], and adds the secret key k [2] to the value p [2]. Generate the value x [2]. Similarly, the secret key adding unit 230 adds the secret key k [j] to the value p [jw] to generate the value x [jw] (jw = 3,..., I−1).
The secret key adding unit 230 generates the generated values x [1],. . . , Value x [i−1] is stored in the arithmetic device storage unit 290.
 秘密鍵付加部230は、秘密鍵k[j](j=1,...,i-1)を値p[j]のどの位置に付加しても構わない。
 つまり、秘密鍵付加部230は、秘密鍵k[j]を値p[j]の前または後に追加してもよいし、秘密鍵k[j]を値p[j]内に挿入してもよい。
The secret key adding unit 230 may add the secret key k [j] (j = 1,..., I−1) to any position of the value p [j].
That is, the secret key adding unit 230 may add the secret key k [j] before or after the value p [j], or may insert the secret key k [j] into the value p [j]. Good.
 S130の後、S140に進む。 After S130, the process proceeds to S140.
(S140:第1圧縮関数計算ステップ)
 第1圧縮関数計算部241は、S130で生成された値x[1]を演算装置記憶部290から取得し、nビット長の固定値IV1とmビット長の値x[1]とを圧縮関数hに入力してnビット長の値c[1]を算出する。
 第1圧縮関数計算部241は、算出した値c[1]を演算装置記憶部290に記憶する。
 圧縮関数hは、nビット長の値とmビット長の値とからnビット長の新たな値cを算出するものである。固定値IV1は予め定められているものとする。
 S140の後、S141に進む。
(S140: First compression function calculation step)
The first compression function calculation unit 241 acquires the value x [1] generated in S130 from the arithmetic device storage unit 290, and uses the n-bit fixed value IV1 and the m-bit length value x [1] as a compression function. The value c [1] having an n-bit length is calculated by inputting to h.
The first compression function calculation unit 241 stores the calculated value c [1] in the arithmetic device storage unit 290.
The compression function h is to calculate a new value c having an n-bit length from an n-bit length value and an m-bit length value. The fixed value IV1 is assumed to be predetermined.
It progresses to S141 after S140.
(S141:第2圧縮関数計算ステップ)
 第2圧縮関数計算部242は、S140で算出された値c[1]とS130で生成された値x[2]とを演算装置記憶部290から取得し、nビット長の値c[1]とmビット長の値x[2]とを圧縮関数hに入力してnビット長の値c[2]を算出する。
 第2圧縮関数計算部242は、jw=3からi-1まで順に処理を繰り返し、一つ前に算出した値c[jw-1]とS131で生成された値x[jw]とを圧縮関数hに入力して値c[jw]を算出する。これにより、値c[2]に加えて値c[3],...,値c[i-1]が算出される。
 第2圧縮関数計算部242は、算出した値c[2],...,値c[i-1]を演算装置記憶部290に記憶する。
 S141の後、S142に進む。
(S141: Second compression function calculation step)
The second compression function calculation unit 242 acquires the value c [1] calculated in S140 and the value x [2] generated in S130 from the arithmetic device storage unit 290, and the value c [1] having an n-bit length. And m-bit length value x [2] are input to compression function h to calculate n-bit length value c [2].
The second compression function calculation unit 242 repeats the processing in order from jw = 3 to i−1, and uses the value c [jw−1] calculated immediately before and the value x [jw] generated in S131 as the compression function. The value c [jw] is calculated by inputting to h. Thus, in addition to the value c [2], the values c [3],. . . , Value c [i−1] is calculated.
The second compression function calculator 242 calculates the calculated values c [2],. . . , Value c [i−1] is stored in the arithmetic device storage unit 290.
It progresses to S142 after S141.
(S142:第3圧縮関数計算ステップ)
 第3圧縮関数計算部243は、S120で生成された値p[i]とS141で算出された値c[i-1]とを演算装置記憶部290から取得し、m-nビット長の値p[i]にnビット長の値c[i-1]を付加してmビット長の値x[i]を生成する。このとき、値c[i-1]は値p[i]のどの位置に付加しても構わない。
 第3圧縮関数計算部243は、nビット長の固定値IV2とmビット長の値x[i]とを圧縮関数hに入力してnビット長の値c[i]算出し、算出した値c[i]を演算装置記憶部290に記憶する。
 S142の後、S150に進む。
(S142: third compression function calculation step)
The third compression function calculation unit 243 obtains the value p [i] generated in S120 and the value c [i−1] calculated in S141 from the arithmetic device storage unit 290, and has a value of mn bit length. An n-bit length value c [i−1] is added to p [i] to generate an m-bit length value x [i]. At this time, the value c [i-1] may be added to any position of the value p [i].
The third compression function calculation unit 243 inputs the n-bit fixed value IV2 and the m-bit length value x [i] to the compression function h, calculates the n-bit length value c [i], and calculates the calculated value. c [i] is stored in the arithmetic device storage unit 290.
It progresses to S150 after S142.
(S150:メッセージ認証コード出力ステップ)
 メッセージ認証コード出力部250は、S142で算出された値c[i]を演算装置記憶部290から取得し、取得した値c[i]を値Mのメッセージ認証コードとして出力する。
 S150により、メッセージ認証コード演算方法は終了する。
(S150: Message authentication code output step)
The message authentication code output unit 250 acquires the value c [i] calculated in S142 from the arithmetic device storage unit 290, and outputs the acquired value c [i] as a message authentication code of the value M.
By S150, the message authentication code calculation method ends.
 上記のメッセージ認証コード演算方法(図3参照)において、「i=2」の場合、つまり、値Mが2つの値p[1]と値p[2]に分割される場合、S141は実行されない。
 また、「i=1」の場合、つまり、「値M=値p[1]」の場合、S130、S140およびS141は実行されない。
In the above message authentication code calculation method (see FIG. 3), when “i = 2”, that is, when the value M is divided into two values p [1] and p [2], S141 is not executed. .
In the case of “i = 1”, that is, in the case of “value M = value p [1]”, S130, S140, and S141 are not executed.
 実施の形態において、「Z=h(X,Y)」はnビット長のXとmビット長のYとを圧縮関数hに入力するとnビット長のZが算出されることを意味する。
 また、「X||Y」は「Y」を「X」の任意の場所に付加した値(データ)を意味する。
In the embodiment, “Z = h (X, Y)” means that when an n-bit length X and an m-bit length Y are input to the compression function h, an n-bit length Z is calculated.
“X || Y” means a value (data) obtained by adding “Y” to an arbitrary place of “X”.
 図4は、実施の形態1におけるメッセージ認証コード演算アルゴリズムの構造図である。
 上記のメッセージ認証コード演算方法(図3参照)を図式化すると図4のように表すことができる。
FIG. 4 is a structural diagram of a message authentication code calculation algorithm in the first embodiment.
The above message authentication code calculation method (see FIG. 3) can be represented as shown in FIG.
 通信データに相当する値Mは、m-nビット長のi個の値p[1],...,値p[i]に分割され、値p[1],...,値p[i-1]それぞれにnビット長の秘密鍵k[1],...,秘密鍵[k-1]が付加される(S110~S130)。
 nビット長の固定値IV1とmビット長の値p[1]||k[1]とを圧縮関数hに入力してnビット長の値c[1]が得られる(S140)。
 j=2からi-1まで順に、nビット長の値c[j-1]とmビット長の値p[j]||k[j]とを圧縮関数hに入力してnビット長の値c[j]が得られる(S141)。
 nビット長の固定値IV2とmビット長の値p[i]||c[i-1]とを圧縮関数hに入力してnビット長の値c[i]が得られる。値c[i]は値Mのメッセージ認証コードとして出力される(S142、S150)。
The value M corresponding to the communication data is i values p [1],. . . , Value p [i] and values p [1],. . . , Values p [i−1], n-bit secret keys k [1],. . . The secret key [k−1] is added (S110 to S130).
The n-bit fixed value IV1 and the m-bit length value p [1] || k [1] are input to the compression function h to obtain the n-bit length value c [1] (S140).
In order from j = 2 to i−1, an n-bit length value c [j−1] and an m-bit length value p [j] || [k [j] are input to the compression function h to obtain an n-bit length value A value c [j] is obtained (S141).
The n-bit length fixed value IV2 and the m-bit length value p [i] || c [i-1] are input to the compression function h to obtain the n-bit length value c [i]. The value c [i] is output as a message authentication code of the value M (S142, S150).
 S110~S150は、順番通りに処理を実行する逐次処理ではなく、並行して同時に処理を実行する並列処理で実行しても構わない。
 例えば、S110~S150をストリーム処理で実行してもよい。ストリーム処理とは、入力データをデータ単位ではなくビット単位で入力順に処理する方法であり、並列処理の一類型である。
S110 to S150 may be executed in parallel processing in which processing is executed in parallel, instead of sequential processing in which processing is executed in order.
For example, S110 to S150 may be executed by stream processing. Stream processing is a method of processing input data in the order of input in bit units rather than data units, and is a type of parallel processing.
 複数の値c[1],...,c[i]を算出するために同一の圧縮関数hをi回使用しても、異なるアルゴリズムを有する複数の圧縮関数h[1],...,h[i]を使用しても構わない。 Multiple values c [1],. . . , C [i], even if the same compression function h is used i times, a plurality of compression functions h [1],. . . , H [i] may be used.
 圧縮関数hとしてSHA-256(Secure Hash Algorithm-256)を使用することができる。SHA-256は、256ビット長の値と512ビット長の値とが入力された場合に256ビット長の値を出力する。
 つまり、SHA-256を圧縮関数hとして使用した場合、上記の固定値IV1、固定値IV2、値c[j]および秘密鍵k[j]は256(=n)ビット長の値であり、上記の値x[j]は512(=m)ビット長の値であり、上記の値p[j]は256(=m-n)ビット長の値である。
As the compression function h, SHA-256 (Secure Hash Algorithm-256) can be used. The SHA-256 outputs a 256-bit length value when a 256-bit length value and a 512-bit length value are input.
That is, when SHA-256 is used as the compression function h, the fixed value IV1, the fixed value IV2, the value c [j], and the secret key k [j] are 256 (= n) bit length values. The value x [j] is a 512 (= m) bit length value, and the value p [j] is a 256 (= mn) bit length value.
 圧縮関数hはメッセージ認証コード演算装置200とは別に設けた圧縮関数計算装置によって計算しても構わない。 The compression function h may be calculated by a compression function calculation device provided separately from the message authentication code calculation device 200.
 図5は、実施の形態1におけるメッセージ認証コード演算装置200のハードウェア資源の一例を示す図である。
 図5において、メッセージ認証コード演算装置200は、CPU911(Central Processing Unit)を備えている。CPU911は、バス912を介してROM913、RAM914、通信ボード915、表示装置901、キーボード902、マウス903、磁気ディスク装置920と接続され、これらのハードウェアデバイスを制御する。
FIG. 5 is a diagram illustrating an example of hardware resources of the message authentication code calculation device 200 according to the first embodiment.
In FIG. 5, the message authentication code calculation device 200 includes a CPU 911 (Central Processing Unit). The CPU 911 is connected to the ROM 913, the RAM 914, the communication board 915, the display device 901, the keyboard 902, the mouse 903, and the magnetic disk device 920 via the bus 912, and controls these hardware devices.
 通信ボード915は、有線または無線で、LAN(Local Area Network)、インターネット、電話回線などの通信網に接続する。 The communication board 915 is wired or wirelessly connected to a communication network such as a LAN (Local Area Network), the Internet, or a telephone line.
 磁気ディスク装置920には、OS921(オペレーティングシステム)、ウィンドウシステム922、プログラム群923、ファイル群924が記憶されている。 The magnetic disk device 920 stores an OS 921 (operating system), a window system 922, a program group 923, and a file group 924.
 プログラム群923には、実施の形態において「~部」として説明する機能を実行するプログラムが含まれる。プログラムは、CPU911により読み出され実行される。すなわち、プログラムは、「~部」としてコンピュータを機能させるものであり、また「~部」の手順や方法をコンピュータに実行させるものである。 The program group 923 includes a program for executing a function described as “unit” in the embodiment. The program is read and executed by the CPU 911. In other words, the program causes the computer to function as “to part” and causes the computer to execute the procedures and methods of “to part”.
 ファイル群924には、実施の形態において説明する「~部」で使用される各種データ(入力、出力、判定結果、計算結果、処理結果など)が含まれる。 The file group 924 includes various data (input, output, determination result, calculation result, processing result, etc.) used in “˜part” described in the embodiment.
 実施の形態において構成図およびフローチャートに含まれている矢印は主としてデータや信号の入出力を示す。 In the embodiment, arrows included in the configuration diagrams and flowcharts mainly indicate input and output of data and signals.
 実施の形態において「~部」として説明するものは「~回路」、「~装置」、「~機器」であってもよく、また「~ステップ」、「~手順」、「~処理」であってもよい。すなわち、「~部」として説明するものは、ファームウェア、ソフトウェア、ハードウェアまたはこれらの組み合わせのいずれで実装されても構わない。 In the embodiment, what is described as “to part” may be “to circuit”, “to apparatus”, and “to device”, and “to step”, “to procedure”, and “to processing”. May be. That is, what is described as “˜unit” may be implemented by any of firmware, software, hardware, or a combination thereof.
 実施の形態1において、例えば、以下のようなメッセージ認証コード演算装置200について説明した。 In the first embodiment, for example, the following message authentication code computing device 200 has been described.
 メッセージ認証コード演算装置200は、既定長値入力部(例えば、秘密鍵付加部230)、秘密鍵付加部230、圧縮関数計算部240およびメッセージ認証コード出力部250を備える。
 既定長値入力部は、i個の値p[1],...,値p[i]を入力する。
 秘密鍵付加部230は、既定長値入力部が入力した値p[1],...,値p[i]のうちi-1個の値p[1],...,値p[i-1]それぞれに対して秘密鍵k[1],...,秘密鍵k[i-1]を付加して値x[1],...,値x[i-1]を生成する。
 圧縮関数計算部240は、j=1からi-1まで順に値c[j-1](値c[0]は固定値IV1とする)と秘密鍵付加部230が生成した値x[j]とを入力として圧縮関数hを計算した結果である値c[j]を得ることにより、値c[i-1]を得る。
 圧縮関数計算部240は、固定値IV2と値p[i]に値c[i-1]を付加した値x[i]とを入力として圧縮関数hを計算した結果である値c[i]を得る。
 メッセージ認証コード出力部250は、圧縮関数計算部240が得た値c[i]を出力する。
The message authentication code calculation device 200 includes a predetermined length value input unit (for example, secret key addition unit 230), a secret key addition unit 230, a compression function calculation unit 240, and a message authentication code output unit 250.
The predetermined length value input unit includes i values p [1],. . . , Input the value p [i].
The secret key adding unit 230 receives the values p [1],. . . , Value p [i], i−1 values p [1],. . . , Value p [i−1] for each secret key k [1],. . . , The secret key k [i−1] and the values x [1],. . . , A value x [i−1] is generated.
The compression function calculation unit 240 sequentially adds a value c [j−1] (value c [0] is a fixed value IV1) from j = 1 to i−1 and a value x [j] generated by the secret key addition unit 230. To obtain a value c [j] which is a result of calculating the compression function h.
The compression function calculation unit 240 inputs a fixed value IV2 and a value x [i] obtained by adding the value c [i-1] to the value p [i] and inputs a value c [i] that is a result of calculating the compression function h. Get.
The message authentication code output unit 250 outputs the value c [i] obtained by the compression function calculation unit 240.
 既定長値入力部は、所定の自然数mと自然数mよりも小さい自然数nとについて、i個の値であってm-nビット長の値p[1],...,値p[i]を入力する。
 秘密鍵付加部230は、既定長値入力部が入力したm-nビット長の値p[1],...,値p[i]のうちi-1個の値p[1],...,値p[i-1]それぞれに対してnビット長の秘密鍵k[1],...,秘密鍵k[i-1]を付加して、mビット長の値x[1],...,値x[i-1]を生成する。
 圧縮関数計算部240は、j=1からi-1まで順にnビット長の値c[j-1](値c[0]はnビット長の固定値IV1とする)と秘密鍵付加部230が生成したmビット長の値x[j]とを入力として圧縮関数hを計算した結果であるnビット長の値c[j]を得ることにより、nビット長の値c[i-1]を得る。
 圧縮関数計算部240は、nビット長の固定値IV2とm-nビット長の値p[i]にnビット長の値c[i-1]を付加したmビット長の値x[i]とを入力として圧縮関数hを計算した結果であるnビット長の値c[i]を得る。
The predetermined length value input unit has i values and mn bit length values p [1],... For a predetermined natural number m and a natural number n smaller than the natural number m. . . , Input the value p [i].
The secret key adding unit 230 receives the mn bit length values p [1],. . . , Value p [i], i−1 values p [1],. . . , Values p [i−1], n-bit secret keys k [1],. . . , The secret key k [i−1], and the value x [1],. . . , A value x [i−1] is generated.
The compression function calculation unit 240 sequentially outputs a value c [j−1] having an n-bit length from j = 1 to i−1 (a value c [0] is a fixed value IV1 having an n-bit length) and a secret key adding unit 230. To obtain an n-bit length value c [j-1], which is a result of calculating the compression function h using the m-bit length value x [j] generated by Get.
The compression function calculation unit 240 adds an m-bit length value x [i] by adding an n-bit length value c [i-1] to an n-bit length fixed value IV2 and an mn bit-length value p [i]. Are input to obtain a value c [i] having an n-bit length as a result of calculating the compression function h.
 実施の形態1におけるメッセージ認証コード演算方法(図3、図4参照)では、値Mの分割値p[1],...,p[i-1]に秘密鍵k[1],...,k[i-1]を付加した値x[1],...,x[i-1]を圧縮関数hに入力することにより、値Mの特定を困難にしている。
 このため、一方向性が破られた理想的な圧縮関数を用いて構成してもランダムオラクルと強識別不可能なハッシュ関数アルゴリズムを用いて、計算効率が良いメッセージ認証コード演算アルゴリズムを構成することができる。
In the message authentication code calculation method according to the first embodiment (see FIGS. 3 and 4), the divided values p [1],. . . , P [i-1] and secret keys k [1],. . . , K [i−1] added values x [1],. . . , X [i−1] are input to the compression function h, making it difficult to specify the value M.
For this reason, a message authentication code computation algorithm with high computational efficiency should be constructed using a random oracle and a hash function algorithm that cannot be strongly discriminated even if constructed using an ideal compression function with broken unidirectionality. Can do.
 以下に、一方向性が破られた理想的な圧縮関数を用いて構成してもランダムオラクルと強識別不可能なハッシュ関数アルゴリズムについて説明する。 The following describes a hash function algorithm that cannot be strongly discriminated from a random oracle even if it is configured using an ideal compression function with broken unidirectionality.
 ランダムオラクルとは、入力値と出力値とのペアを示すリストを予め記録し、入力値に対応する出力値をリストに基づいて出力する関数である。 Random oracle is a function that records in advance a list indicating a pair of input value and output value, and outputs an output value corresponding to the input value based on the list.
 ランダムオラクルを利用した場合に安全な暗号アルゴリズムは、ランダムオラクルに代えて安全なハッシュ関数を利用した場合にも安全であると考えられる。
 例えば、OAEP(Optimal Asymmetric Encryption Padding)やPSS(Probabilistic Signature Scheme)等の暗号アルゴリズムは、ランダムオラクルを利用した場合に安全であることが証明されている。
A cryptographic algorithm that is secure when using a random oracle is considered secure when a secure hash function is used instead of a random oracle.
For example, cryptographic algorithms such as OAEP (Optical Asymmetric Encryption Padding) and PSS (Probabilistic Signature Scheme) have been proven to be safe when using random oracles.
 但し、ランダムオラクルを利用した場合に安全な暗号アルゴリズムがランダムオラクルに代えて安全なハッシュ関数を利用した場合にも安全であるためには、ハッシュ関数がランダムオラクルと強識別不可能である必要がある。
 つまり、ランダムオラクルを利用した場合に安全な暗号アルゴリズムは、ランダムオラクルと強識別不可能なハッシュ関数を利用した場合に安全である。
 例えば、EMD(Employed Merkle-Damgard)やMDP(Merkle-Damgard with Permutation)は、ランダムオラクルと強識別不可能なハッシュ関数である。
However, in order to be secure even when a random oracle is used and a secure cryptographic algorithm uses a secure hash function instead of a random oracle, the hash function needs to be indistinguishable from a random oracle. is there.
That is, a cryptographic algorithm that is secure when using a random oracle is safe when a hash function that cannot be strongly distinguished from a random oracle is used.
For example, EMD (Exploited Merkle-Damgard) and MDP (Mercle-Damgard with Permutation) are hash functions that cannot be strongly distinguished from random oracles.
 ハッシュ関数は、任意長の値を入力して固定長の値を出力する関数である。
 ハッシュ関数は、所定の入力長を有する値を入力して所定の出力長を有する値を出力する圧縮関数と、圧縮関数を用いて任意長の入力値から固定長の出力値を算出する入力長拡大アルゴリズムとから構成される。
The hash function is a function that inputs an arbitrary length value and outputs a fixed length value.
The hash function is a compression function that inputs a value having a predetermined input length and outputs a value having a predetermined output length, and an input length that calculates a fixed length output value from an arbitrary length input value using the compression function. And an enlargement algorithm.
 一般的に、ランダムオラクルと強識別不可能なハッシュ関数は、理想的な圧縮関数(FILRO(Fixed Input Length Random Oracle))を用いて構成される。
 但し、理想的な圧縮関数(FILRO)ではなく一方向性が破られた理想的な圧縮関数(WFILRO)を用いて構成されるハッシュ関数であってもランダムオラクルと強識別不可能なハッシュ関数がある(非特許文献1,2参照)。
 また、理想的な圧縮関数(FILRO)を用いて構成されなければランダムオラクルと強識別不可能でないハッシュ関数がある。
In general, a hash function that cannot be distinguished strongly from a random oracle is configured using an ideal compression function (FILRO (Fixed Input Length Random Oracle)).
However, a hash function that cannot be strongly distinguished from a random oracle even if it is a hash function configured using an ideal compression function (WFILRO) whose unidirectionality is broken instead of an ideal compression function (FILRO). Yes (see Non-Patent Documents 1 and 2).
In addition, there is a hash function that is not strongly distinguishable from a random oracle unless configured using an ideal compression function (FILRO).
 一方向性が破られた理想的な圧縮関数(WFILRO)を用いて構成してもランダムオラクルと強識別不可能なハッシュ関数は、理想的な圧縮関数(FILRO)を用いて構成しなければランダムオラクルと強識別不可能でないハッシュ関数よりも安全性に優れている。 A hash function that cannot be strongly discriminated from a random oracle even if configured using an ideal compression function (WFILRO) with broken unidirectionality is random unless configured using an ideal compression function (FILRO). It is safer than a hash function that is not strongly distinguishable from Oracle.
 ここで、安全なハッシュ関数、理想的な圧縮関数(FILRO)および一方向性が破られた理想的な圧縮関数(WFILRO)について説明する。 Here, a secure hash function, an ideal compression function (FILRO), and an ideal compression function (WFILRO) whose unidirectionality is broken will be described.
 まず、安全なハッシュ関数について説明する。
 安全なハッシュ関数が満たすべき性質として「衝突困難性(collision resistance)」「第2現像計算困難性(second preimage resistance)」「現像計算困難性(preimage resistance)」の3つの性質がある。
 以下、ハッシュ関数を「H」と記す。
First, a secure hash function will be described.
The properties to be satisfied by the secure hash function include three properties of “collision resistance”, “second development difficulty”, and “development resistance”.
Hereinafter, the hash function is described as “H”.
 衝突困難性とは、「H(M)=H(M’)」を満たす2つの値M,M’を見つけることが困難であるという性質である。
 第2現像計算困難性とは、ランダムな値Mに対して「H(M)=H(M’)」を満たす値M’を見つけることが困難であるという性質である。
 現像計算困難性とは、ランダムな値zに対して「z=H(M)」を満たす値Mを見つけることが困難であるという性質である。
The collision difficulty is a property that it is difficult to find two values M and M ′ that satisfy “H (M) = H (M ′)”.
The second development calculation difficulty is a property that it is difficult to find a value M ′ that satisfies “H (M) = H (M ′)” for a random value M.
The development calculation difficulty is a property that it is difficult to find a value M satisfying “z = H (M)” with respect to a random value z.
 次に、理想的な圧縮関数(FILRO)について説明する。
 理想的な圧縮関数(FILRO)とは、「リスト」と「オラクル」とを有する圧縮関数である。
Next, an ideal compression function (FILRO) will be described.
An ideal compression function (FILRO) is a compression function having a “list” and an “oracle”.
 リストとは、入力値と出力値との組み合わせを示すデータである。例えば、リストは入力値(x,y)と出力値zとのペアを入力値(x,y)毎に示す。
 オラクルとは、入力値に対応する出力値をリストに基づいて出力する機能である。例えば、オラクルは入力値(x,y)とペアになる出力値zをリストから特定し、特定した出力値zを出力する。つまり、オラクルは入力値(x,y)に対して「f1(x,y)=z」を満たす値zを出力する。
The list is data indicating combinations of input values and output values. For example, the list shows a pair of an input value (x, y) and an output value z for each input value (x, y).
Oracle is a function for outputting an output value corresponding to an input value based on a list. For example, Oracle specifies an output value z that is paired with the input value (x, y) from the list, and outputs the specified output value z. That is, Oracle outputs a value z that satisfies “f1 (x, y) = z” for the input value (x, y).
 次に、一方向性が破られた理想的な圧縮関数(WFILRO)について説明する。
 一方向性が破られた理想的な圧縮関数(WFILRO)とは、上記の「リスト」と「オラクル」との他に「一方向性を破るオラクル」を有する圧縮関数である。
Next, an ideal compression function (WFILRO) whose unidirectionality is broken will be described.
The ideal compression function (WFILRO) whose unidirectionality is broken is a compression function having “an oracle that breaks unidirectionality” in addition to the above “list” and “oracle”.
 一方向性を破るオラクルとは、出力値に対応する入力値をリストに基づいて出力する機能である。
 一方向性を破るオラクルの例について以下に示す。
An oracle that breaks unidirectionality is a function that outputs an input value corresponding to an output value based on a list.
An example of an Oracle that breaks unidirectionality is shown below.
 一方向性を破るオラクル1は、値zに対して「f1(x,y)=z」を満たす全ての値(x,y)からランダムに値(x,y)を1つ選択し、選択した値(x,y)を出力する。
 一方向性を破るオラクル2は、値xと値zとに対して「f1(x,y)=z」を満たす全ての値yからランダムに値yを1つ選択し、選択した値yを出力する。値xと値zとに対して「f1(x,y)=z」を満たす値yが存在しない場合、オラクル2は所定の識別情報を出力する。
 一方向性を破るオラクル3は、値yと値zとに対して「f1(x,y)=z」を満たす全ての値xからランダムに値xを1つ選択し、選択した値xを出力する。値yと値zとに対して「f1(x,y)=z」を満たす値xが存在しない場合、オラクル3は所定の識別情報を出力する。
Oracle 1 that breaks unidirectionality selects one value (x, y) at random from all values (x, y) that satisfy “f1 (x, y) = z” for value z, and selects The obtained value (x, y) is output.
Oracle 2 that breaks the unidirectionality randomly selects one value y from all the values y that satisfy “f1 (x, y) = z” for the values x and z, and selects the selected value y. Output. When there is no value y satisfying “f1 (x, y) = z” for the value x and the value z, the oracle 2 outputs predetermined identification information.
Oracle 3 that breaks the unidirectionality randomly selects one value x from all the values x that satisfy “f1 (x, y) = z” for the values y and z, and selects the selected value x. Output. If there is no value x satisfying “f1 (x, y) = z” for the value y and the value z, the Oracle 3 outputs predetermined identification information.
 一方向性が破られた理想的な圧縮関数(WFILRO)は「一方向性を破るオラクル」を有する分、理想的な圧縮関数(FILRO)に比べて安全性が低い圧縮関数である。
 攻撃者は理想的な圧縮関数(FILRO)に対して「リスト」と「オラクル」とを利用して攻撃でき、一方向性が破られた理想的な圧縮関数(WFILRO)に対して「リスト」と「オラクル」と「一方向性を破るオラクル」とを利用して攻撃できるからである。つまり、一方向性が破られた理想的な圧縮関数(WFILRO)は理想的な圧縮関数(FILRO)より攻撃者に与える機能が多い分、攻撃者から攻撃され易く、安全性が低い。
The ideal compression function (WFILRO) whose unidirectionality is broken is a compression function that is less secure than the ideal compression function (FILRO) because it has an “oracle that breaks unidirectionality”.
An attacker can attack the ideal compression function (FILRO) using “list” and “Oracle”, and the “list” against the ideal compression function (WFILRO) whose unidirectionality is broken. It is possible to attack using "Oracle" and "Oracle that breaks unidirectionality". In other words, the ideal compression function (WFILRO) whose unidirectionality has been broken has more functions to be given to the attacker than the ideal compression function (FILRO), and thus is easily attacked by the attacker and is less secure.
 最後に、ハッシュ関数の代表的な入力長拡大アルゴリズムとして、MD(Merkle-Damgard)構造を説明する。 Finally, an MD (Merkle-Damgard) structure will be described as a typical input length expansion algorithm for a hash function.
 MD構造は、以下のようなアルゴリズムである。
(Step1)入力値Mにstrengthen MDパディングを適用し、m×iビットの値M’を作る。
(Step2)値M’をmビットの値p[1],...,p[i]に分割する。
(Step3)値p[1],...,p[i]のそれぞれに対してc[j]=h(c[j-1],p[j])を計算する。ここで、c[0]はnビットの固定値である。また、圧縮関数hはnビットの値c[j-1]とmビットの値p[j]との2つの値を入力してnビットの値c[j]を出力する関数である。
(Step4)c[i]を出力する。
The MD structure is the following algorithm.
(Step 1) Strengthen MD padding is applied to the input value M to create an m × i-bit value M ′.
(Step 2) The value M ′ is changed to an m-bit value p [1],. . . , P [i].
(Step 3) Values p [1],. . . , P [i], c [j] = h (c [j−1], p [j]) is calculated. Here, c [0] is an n-bit fixed value. The compression function h is a function that inputs two values, an n-bit value c [j−1] and an m-bit value p [j], and outputs an n-bit value c [j].
(Step 4) Output c [i].
 実施の形態2.
 通信データに特定のデータ長を有する所定のデータを付加してm-nビットのi倍のデータ長を有する処理データを生成し、生成した処理データに基づいて通信データのメッセージ認証コードを生成する形態について説明する。
 この形態により、通信データのデータ長がm-nビットのi倍でなくても、通信データのメッセージ認証コードを生成することができる。
 以下、実施の形態1と異なる事項について主に説明する。その他の事項については実施の形態1と同様である。
Embodiment 2. FIG.
Processing data having a data length i times mn bits is generated by adding predetermined data having a specific data length to the communication data, and a message authentication code for the communication data is generated based on the generated processing data. A form is demonstrated.
With this configuration, the message authentication code for communication data can be generated even if the data length of communication data is not i times mn bits.
Hereinafter, items different from the first embodiment will be mainly described. Other matters are the same as those in the first embodiment.
 図6は、実施の形態2におけるメッセージ認証コード演算装置200の機能構成図である。
 実施の形態2におけるメッセージ認証コード演算装置200の機能構成について、図6に基づいて説明する。
FIG. 6 is a functional configuration diagram of the message authentication code computing device 200 according to the second embodiment.
A functional configuration of the message authentication code computing device 200 according to Embodiment 2 will be described with reference to FIG.
 メッセージ認証コード演算装置200は、実施の形態1で説明した構成(図2参照)に加えて、パディング部260を備える。 The message authentication code computing device 200 includes a padding unit 260 in addition to the configuration described in the first embodiment (see FIG. 2).
 パディング部260(処理データ生成部の一例)は、任意長値入力部210に入力された通信データに特定長の所定のデータを付加してm-nビットのi倍のデータ長を有する処理データを生成する。 The padding unit 260 (an example of a processing data generation unit) adds processing data having a specific length to the communication data input to the arbitrary length value input unit 210 and has processing data having a data length i times mn bits. Is generated.
 任意長値分割部220(通信データ分割部の一例)は、パディング部260により生成された処理データをm-nビット長の第1から第iの分割データに分割する。 Arbitrary length value dividing unit 220 (an example of a communication data dividing unit) divides processing data generated by padding unit 260 into first to i-th divided data having an mn bit length.
 以下、通信データを「値M」、通信データに付加するデータを「パディング値」、処理データを「値M’」、分割データを「値p」という。 Hereinafter, the communication data is referred to as “value M”, the data added to the communication data is referred to as “padding value”, the processing data is referred to as “value M ′”, and the divided data is referred to as “value p”.
 図7は、実施の形態2におけるメッセージ認証コード演算方法を示すフローチャートである。
 実施の形態2におけるメッセージ認証コード演算方法について、図7に基づいて説明する。
FIG. 7 is a flowchart showing a message authentication code calculation method according to the second embodiment.
A message authentication code calculation method according to the second embodiment will be described with reference to FIG.
 メッセージ認証コード演算方法では、実施の形態1で説明した処理(図3参照)に加えて、パディングステップ(S111)を実行する。
 また、任意長値分割ステップ(S121)は、実施の形態1で説明したS120における「値M」を「値M’」に置き換えた処理である。
 以下、パディングステップ(S111)について主に説明する。
In the message authentication code calculation method, the padding step (S111) is executed in addition to the processing described in the first embodiment (see FIG. 3).
The arbitrary length value dividing step (S121) is a process in which “value M” in S120 described in the first embodiment is replaced with “value M ′”.
Hereinafter, the padding step (S111) will be mainly described.
 S110において、任意長値入力部210は任意ビット長の値Mを入力し、入力した値Mを演算装置記憶部290に記憶する。S110の後、S111に進む。 In S110, the arbitrary length value input unit 210 inputs the value M having an arbitrary bit length, and stores the input value M in the arithmetic device storage unit 290. It progresses to S111 after S110.
(S111:パディングステップ)
 パディング部260は、S110で入力された値Mを演算装置記憶部290から取得し、取得した値Mをパディング関数padに入力してm-nビットのi倍のビット長を有する値M’を算出する。
 パディング部260は、算出した値M’を演算装置記憶部290に記憶する。
(S111: Padding step)
The padding unit 260 acquires the value M input in S110 from the arithmetic device storage unit 290, inputs the acquired value M to the padding function pad, and obtains a value M ′ having a bit length i times mn bits. calculate.
The padding unit 260 stores the calculated value M ′ in the arithmetic device storage unit 290.
 パディング関数padは、入力値のビット長がm-nビットのi倍でない場合に入力値に特定のパディング値を付加してm-nビットのi倍のビット長を有する値を生成する関数である。「i」は任意または所定の自然数である。 The padding function pad is a function that generates a value having a bit length i times mn bits by adding a specific padding value to the input value when the bit length of the input value is not i times mn bits. is there. “I” is an arbitrary or predetermined natural number.
 例えば、パティング関数padは、パディング値として“1||0・・・0||<M>”を入力値Mに付加して、m-nビットのi倍のビット長を有する値M’を生成する。
 つまり、パディング値は、先頭が“1”で最後が<M>で“1”と<M>との間に1つ又は複数の“0”を有する。
 ここで、<M>は、64ビットのビット長を有するデータであり、値Mのビット長|M|を64ビットで示す。64ビットのビット長を有する<M>は値Mのビット長|M|として最大で2の64乗ビットのデータサイズを示すことができる。
 このようなパディング値を用いることにより、出力値M’の衝突困難性を高めることができる。但し、パディング値は、全てのビットが“0”または全てのビットが“1”など、上記以外の値であっても構わない。
For example, the padding function pad adds “1 || 0... 0 || <M>” as the padding value to the input value M, and generates a value M ′ having a bit length i times mn bits. Generate.
That is, the padding value has “1” at the beginning and <M> at the end, and one or more “0” s between “1” and <M>.
Here, <M> is data having a bit length of 64 bits, and the bit length | M | of the value M is indicated by 64 bits. <M> having a bit length of 64 bits can indicate a data size of a maximum of 2 64 bits as the bit length | M | of the value M.
By using such a padding value, the collision difficulty of the output value M ′ can be increased. However, the padding value may be a value other than the above, such as “0” for all bits or “1” for all bits.
 S111の後、S121に進む。 After S111, the process proceeds to S121.
 S121において、任意長値分割部220はS111で算出された値M’を演算装置記憶部290から取得し、取得した値M’をm-nビット長ずつに分割してi個の値p[1],...,値p[i]を生成し、生成した値p[1],...,値p[i]を演算装置記憶部290に記憶する。
 S121の後、S130に進む。
In S121, the arbitrary length value dividing unit 220 acquires the value M ′ calculated in S111 from the arithmetic device storage unit 290, and divides the acquired value M ′ into mn bit lengths to obtain i values p [ 1],. . . , Value p [i], and the generated values p [1],. . . , Value p [i] is stored in the arithmetic device storage unit 290.
It progresses to S130 after S121.
 S130以降の処理は実施の形態1(図3参照)と同じである。 The processes after S130 are the same as those in the first embodiment (see FIG. 3).
 図8は、実施の形態2におけるメッセージ認証コード演算アルゴリズムの構造図である。
 上記のメッセージ認証コード演算方法(図7参照)を図式化すると図8のように表すことができる。
FIG. 8 is a structural diagram of a message authentication code calculation algorithm in the second embodiment.
The above message authentication code calculation method (see FIG. 7) can be represented as shown in FIG.
 通信データに相当する値Mをパディング関数padに入力してm-nビットのi倍のビット長を有する値M’が得られる(S110、S111)。
 値M’はm-nビット長のi個の値p[1],...,値p[i]に分割され、値p[1],...,値p[i-1]それぞれにnビット長の秘密鍵k[1],...,秘密鍵[k-1]が付加される(S121、S130)。
 nビット長の固定値IV1とmビット長の値p[1]||k[1]とを圧縮関数hに入力してnビット長の値c[1]が得られる(S140)。
 j=2からi-1まで順に、nビット長の値c[j-1]とmビット長の値p[j]||k[j]とを圧縮関数hに入力してnビット長の値c[j]が得られる(S141)。
 nビット長の固定値IV2とmビット長の値p[i]||c[i-1]とを圧縮関数hに入力してnビット長の値c[i]が得られる。値c[i]は値Mのメッセージ認証コードとして出力される(S142、S150)。
A value M corresponding to the communication data is input to the padding function pad to obtain a value M ′ having a bit length i times mn bits (S110, S111).
The value M ′ is an i value p [1],. . . , Value p [i] and values p [1],. . . , Values p [i−1], n-bit secret keys k [1],. . . , The secret key [k-1] is added (S121, S130).
The n-bit fixed value IV1 and the m-bit length value p [1] || k [1] are input to the compression function h to obtain the n-bit length value c [1] (S140).
In order from j = 2 to i−1, an n-bit length value c [j−1] and an m-bit length value p [j] || [k [j] are input to the compression function h to obtain an n-bit length value A value c [j] is obtained (S141).
The n-bit length fixed value IV2 and the m-bit length value p [i] || c [i-1] are input to the compression function h to obtain the n-bit length value c [i]. The value c [i] is output as a message authentication code of the value M (S142, S150).
 パディング関数padはメッセージ認証コード演算装置200とは別に設けたパディング関数計算装置によって計算しても構わない。 The padding function pad may be calculated by a padding function calculation device provided separately from the message authentication code calculation device 200.
 実施の形態2において、例えば、以下のようなメッセージ認証コード演算装置200について説明した。 In Embodiment 2, for example, the following message authentication code computing device 200 has been described.
 メッセージ認証コード演算装置200は任意長値入力部210、パディング部260および任意長値分割部220を備える。
 任意長値入力部210は、任意ビット長の値Mを入力する。
 パディング部260は、任意長値入力部210が入力した値Mに対して所定の値を付加してm-nビットのi倍のビット長の値M’を生成する。
 任意長値分割部220は、パディング部260が生成した値M’を分割してm-nビット長の値p[1],...,値p[i]を生成する。
The message authentication code computing device 200 includes an arbitrary length value input unit 210, a padding unit 260, and an arbitrary length value dividing unit 220.
The arbitrary length value input unit 210 inputs a value M having an arbitrary bit length.
The padding unit 260 generates a value M ′ having a bit length i times mn bits by adding a predetermined value to the value M input by the arbitrary length value input unit 210.
The arbitrary length value dividing unit 220 divides the value M ′ generated by the padding unit 260 to mn bit length values p [1],. . . , Value p [i].
 実施の形態3.
 一つの秘密鍵に基づいて必要数分の秘密鍵を生成し、生成した必要数分の秘密鍵を用いて通信データのメッセージ認証コードを生成する形態について説明する。
 この形態により、秘密鍵の数が不足しないように多数の秘密鍵をメッセージ認証コード演算装置200に予め記憶しておく、という必要がなくなる。
 以下、実施の形態1および実施の形態2と異なる事項について主に説明する。その他の事項については実施の形態1または実施の形態2と同様である。
Embodiment 3 FIG.
A mode in which a necessary number of secret keys are generated based on one secret key, and a message authentication code for communication data is generated using the generated necessary number of secret keys will be described.
With this configuration, it is not necessary to store a large number of secret keys in the message authentication code calculation device 200 in advance so that the number of secret keys is not insufficient.
Hereinafter, matters different from the first embodiment and the second embodiment will be mainly described. Other matters are the same as those in the first or second embodiment.
 図9は、実施の形態3におけるメッセージ認証コード演算装置200の機能構成図である。
 実施の形態3におけるメッセージ認証コード演算装置200の機能構成について、図9に基づいて説明する。
FIG. 9 is a functional configuration diagram of the message authentication code computing device 200 according to the third embodiment.
A functional configuration of the message authentication code computing device 200 according to Embodiment 3 will be described with reference to FIG.
 メッセージ認証コード演算装置200は、実施の形態1で説明した構成(図2参照)に加えて、秘密鍵入力部270、拡大鍵計算部271および拡大鍵分割部272を備える。 The message authentication code calculation device 200 includes a secret key input unit 270, an extended key calculation unit 271, and an extended key division unit 272 in addition to the configuration described in the first embodiment (see FIG. 2).
 秘密鍵入力部270(秘密鍵データ入力部の一例)は、任意長の秘密鍵データを入力する。
 拡大鍵計算部271(拡大鍵データ生成部の一例)は、秘密鍵入力部270に入力された秘密鍵データに基づいてnビットのi-1倍のデータ長を有する新たな秘密鍵データを拡大鍵データとして所定のアルゴリズムにより生成する。
 拡大鍵分割部272(拡大鍵データ分割部の一例)は、拡大鍵計算部271により生成された拡大鍵データをnビット長の第1から第i-1の秘密鍵データに分割する。
 演算装置記憶部290(秘密鍵データ記憶部の一例)は、拡大鍵分割部272により得られたnビット長の第1から第i-1の秘密鍵データを記憶する。
A secret key input unit 270 (an example of a secret key data input unit) inputs secret key data having an arbitrary length.
The extended key calculation unit 271 (an example of the extended key data generation unit) expands new secret key data having a data length of i−1 times n bits based on the secret key data input to the secret key input unit 270. The key data is generated by a predetermined algorithm.
The extended key division unit 272 (an example of the extended key data division unit) divides the extended key data generated by the extended key calculation unit 271 into first to i-1th secret key data having an n-bit length.
The arithmetic device storage unit 290 (an example of the secret key data storage unit) stores the first to i−1th secret key data having an n-bit length obtained by the extended key dividing unit 272.
 以下、任意長の秘密鍵データを「秘密鍵ik」、nビットのi-1倍のデータ長を有する新たな秘密鍵データを「拡大鍵ek」、nビット長の秘密鍵データを「秘密鍵k」という。 Hereinafter, the secret key data of arbitrary length is “secret key ik”, the new secret key data having a data length that is n−1 times n bits is “extended key ek”, and the secret key data of n bits is “secret key” k ".
 図10は、実施の形態3におけるメッセージ認証コード演算方法を示すフローチャートである。
 実施の形態3におけるメッセージ認証コード演算方法について、図10に基づいて説明する。
FIG. 10 is a flowchart illustrating a message authentication code calculation method according to the third embodiment.
A message authentication code calculation method according to Embodiment 3 will be described with reference to FIG.
 メッセージ認証コード演算方法では、実施の形態1で説明した処理(図3参照)に加えて、S210~S230を実行する。
 以下、S210~S230について主に説明する。
In the message authentication code calculation method, in addition to the processing described in the first embodiment (see FIG. 3), S210 to S230 are executed.
Hereinafter, S210 to S230 will be mainly described.
(S210:秘密鍵入力ステップ)
 秘密鍵入力部270は、任意のビット長を有する秘密鍵ikを入力し、入力した秘密鍵ikを演算装置記憶部290に記憶する。
 S210の後、S220に進む。
(S210: Secret key input step)
The secret key input unit 270 inputs a secret key ik having an arbitrary bit length, and stores the input secret key ik in the arithmetic device storage unit 290.
It progresses to S220 after S210.
(S220:拡大鍵計算ステップ)
 拡大鍵計算部271は、S210で入力された秘密鍵ikを演算装置記憶部290から取得し、取得した秘密鍵ikを拡大鍵計算関数ek_genに入力してnビットのi-1倍のビット長を有する拡大鍵ekを算出する。
 拡大鍵計算部271は、算出した拡大鍵ekを演算装置記憶部290に記憶する。
 拡大鍵計算関数ek_genは、入力した秘密鍵ikに基づいて所定のアルゴリズムによりnビットのi-1倍のビット長を有する拡大鍵ekを生成する関数である。例えば、拡大鍵計算関数ek_genは、鍵スケジュールと呼ばれる技術に用いられるアルゴリズムで拡大鍵ekを生成する。拡大鍵を生成する技術はブロック暗号などの技術にも用いられている技術である。
 S220の後、S230に進む。
(S220: Extended key calculation step)
The extended key calculation unit 271 acquires the secret key ik input in S210 from the arithmetic device storage unit 290, inputs the acquired secret key ik to the extended key calculation function ek_gen, and has a bit length i−1 times n bits. An expanded key ek having is calculated.
The expanded key calculation unit 271 stores the calculated expanded key ek in the arithmetic device storage unit 290.
The extended key calculation function ek_gen is a function that generates an extended key ek having a bit length i−1 times n bits by a predetermined algorithm based on the input secret key ik. For example, the extended key calculation function ek_gen generates an extended key ek using an algorithm used for a technique called a key schedule. The technique for generating an expanded key is a technique that is also used in techniques such as block ciphers.
It progresses to S230 after S220.
(S230:拡大鍵分割ステップ)
 拡大鍵分割部272は、S220で生成された拡大鍵ekを演算装置記憶部290から取得する。
 拡大鍵分割部272は、nビットのi-1倍のビット長を有する拡大鍵ekをnビットずつi-1個に分割する。
 拡大鍵分割部272は、拡大鍵ekを分割して得られたnビット長のi-1個の値を秘密鍵k[1],...,秘密鍵k[i-1]として演算装置記憶部290に記憶する。つまり、秘密鍵k[1],...,秘密鍵k[i-1]を結合すると拡大鍵ekが得られる。
 S230で生成されたnビット長のi-1個の値を秘密鍵k[1],...,秘密鍵k[i-1]は、秘密鍵付加ステップ(S130)で用いられる。
(S230: Extended key division step)
The extended key splitting unit 272 acquires the extended key ek generated in S220 from the arithmetic device storage unit 290.
The extended key division unit 272 divides the extended key ek having a bit length i−1 times n bits into i−1 pieces by n bits.
The extended key dividing unit 272 converts the i−1 values of n bits long obtained by dividing the extended key ek into the secret keys k [1],. . . , And stored in the arithmetic device storage unit 290 as a secret key k [i−1]. That is, the secret keys k [1],. . . , The extended key ek is obtained by combining the secret key k [i−1].
The n−1-bit i−1 values generated in S230 are converted into secret keys k [1],. . . , Secret key k [i-1] is used in the secret key adding step (S130).
 S110、S120、S130~S150は実施の形態1(図3参照)と同じである。 S110, S120, and S130 to S150 are the same as those in the first embodiment (see FIG. 3).
 図11は、実施の形態3におけるメッセージ認証コード演算アルゴリズムの構造図である。
 上記のメッセージ認証コード演算方法(図10参照)を図式化すると図11のように表すことができる。
FIG. 11 is a structural diagram of a message authentication code calculation algorithm in the third embodiment.
The above message authentication code calculation method (see FIG. 10) can be represented schematically as shown in FIG.
 任意長の秘密鍵ikを拡大鍵計算関数ek_genに入力してnビットのi-1倍のビット長を有する拡大鍵ekが得られ、拡大鍵ekはnビット長のi-1個の秘密鍵k[1],...,秘密鍵k[i-1]に分割される(S210~S230)。
 通信データに相当する値Mは、m-nビット長のi個の値p[1],...,値p[i]に分割され、値p[1],...,値p[i-1]それぞれにnビット長の秘密鍵k[1],...,秘密鍵[k-1]が付加される(S110~S130)。
 nビット長の固定値IV1とmビット長の値p[1]||k[1]とを圧縮関数hに入力してnビット長の値c[1]が得られる(S140)。
 j=2からi-1まで順に、nビット長の値c[j-1]とmビット長の値p[j]||k[j]とを圧縮関数hに入力してnビット長の値c[j]が得られる(S141)。
 nビット長の固定値IV2とmビット長の値p[i]||c[i-1]とを圧縮関数hに入力してnビット長の値c[i]が得られる。値c[i]は値Mのメッセージ認証コードとして出力される(S142、S150)。
An arbitrary-length secret key ik is input to the extended key calculation function ek_gen to obtain an extended key ek having a bit length i−1 times n bits, and the extended key ek is i−1 secret keys having an n-bit length. k [1],. . . , And divided into secret keys k [i−1] (S210 to S230).
The value M corresponding to the communication data is i values p [1],. . . , Value p [i] and values p [1],. . . , Values p [i−1], n-bit secret keys k [1],. . . The secret key [k−1] is added (S110 to S130).
The n-bit fixed value IV1 and the m-bit length value p [1] || k [1] are input to the compression function h to obtain the n-bit length value c [1] (S140).
In order from j = 2 to i−1, an n-bit length value c [j−1] and an m-bit length value p [j] || [k [j] are input to the compression function h to obtain an n-bit length value A value c [j] is obtained (S141).
The n-bit length fixed value IV2 and the m-bit length value p [i] || c [i-1] are input to the compression function h to obtain the n-bit length value c [i]. The value c [i] is output as a message authentication code of the value M (S142, S150).
 拡大鍵計算関数ek_genはメッセージ認証コード演算装置200とは別に設けた拡大鍵計算関数装置によって計算しても構わない。 The extended key calculation function ek_gen may be calculated by an extended key calculation function device provided separately from the message authentication code calculation device 200.
 さらに、実施の形態2と同じく、任意長の値Mからm-nビットのi倍の値M’を生成しても構わない。
 この場合におけるメッセージ認証コード演算装置200の機能構成を図12に示す。また、メッセージ認証コード演算方法のフローチャートを図13に示し、メッセージ認証コード演算アルゴリズムの構成を図14に示す。
Further, as in the second embodiment, a value M ′ which is i times mn bits may be generated from a value M having an arbitrary length.
FIG. 12 shows a functional configuration of the message authentication code calculation device 200 in this case. FIG. 13 shows a flowchart of the message authentication code calculation method, and FIG. 14 shows the configuration of the message authentication code calculation algorithm.
 実施の形態3において、例えば、以下のようなメッセージ認証コード演算装置200について説明した。 In Embodiment 3, for example, the following message authentication code computing device 200 has been described.
 メッセージ認証コード演算装置200は秘密鍵入力部270、拡大鍵計算部271および拡大鍵分割部272を備える。
 秘密鍵入力部270は、任意長ビットの秘密鍵ikを入力する。
 拡大鍵計算部271は、秘密鍵入力部270が入力した秘密鍵ikから拡大鍵ekを生成する。
 拡大鍵分割部272は、拡大鍵計算部271が生成した拡大鍵ekを分割してnビット長の秘密鍵k[1],...,秘密鍵k[i-1]を生成する。
The message authentication code computing device 200 includes a secret key input unit 270, an extended key calculation unit 271 and an extended key division unit 272.
The secret key input unit 270 inputs a secret key ik of arbitrary length bits.
The expanded key calculation unit 271 generates an expanded key ek from the secret key ik input by the secret key input unit 270.
The extended key dividing unit 272 divides the extended key ek generated by the extended key calculating unit 271 to obtain an n-bit secret key k [1],. . . , A secret key k [i-1] is generated.
 100 通信システム、101 ネットワーク、102 ユーザ端末装置A、103 ユーザ端末装置B、104 通信データ、105 メッセージ認証コード、106 秘密鍵、111 通信部、112 通信データ生成部、113 通信データ検証部、119 メッセージ認証コード生成部、200 メッセージ認証コード演算装置、210 任意長値入力部、220 任意長値分割部、230 秘密鍵付加部、240 圧縮関数計算部、241 第1圧縮関数計算部、242 第2圧縮関数計算部、243 第3圧縮関数計算部、250 メッセージ認証コード出力部、260 パディング部、270 秘密鍵入力部、271 拡大鍵計算部、272 拡大鍵分割部、290 演算装置記憶部、901 表示装置、902 キーボード、903 マウス、911 CPU、912 バス、913 ROM、914 RAM、915 通信ボード、920 磁気ディスク装置、921 OS、922 ウィンドウシステム、923 プログラム群、924 ファイル群。 100 communication system, 101 network, 102 user terminal device A, 103 user terminal device B, 104 communication data, 105 message authentication code, 106 secret key, 111 communication unit, 112 communication data generation unit, 113 communication data verification unit, 119 message Authentication code generation unit, 200 Message authentication code arithmetic unit, 210 Arbitrary length value input unit, 220 Arbitrary length value division unit, 230 Secret key addition unit, 240 Compression function calculation unit, 241 First compression function calculation unit, 242 Second compression Function calculation unit, 243 Third compression function calculation unit, 250 Message authentication code output unit, 260 Padding unit, 270 Private key input unit, 271 Extended key calculation unit, 272 Extended key division unit, 290 Arithmetic device storage unit, 901 Display device 902 Keyboard , 903 mouse, 911 CPU, 912 Bus, 913 ROM, 914 RAM, 915 communication board, 920 a magnetic disk device, 921 OS, 922 Window system, 923 Program group, 924 File group.

Claims (8)

  1.  特定の情報処理装置間で通信される通信データを入力する通信データ入力部と、
     前記通信データ入力部に入力された通信データを含んだデータを第1から第iの分割データに分割する通信データ分割部と、
     第1から第i-1の秘密鍵データを記憶する秘密鍵データ記憶部と、
     前記通信データ分割部により得られた第a(a=1,2,・・・,i-1)の分割データと前記秘密鍵データ記憶部に記憶される第aの秘密鍵データとを含んだmビット長のデータを第aの秘密鍵付加データとして生成する秘密鍵付加データ生成部と、
     nビット長のデータとmビット長のデータとに基づいてnビット長の新たなデータを算出する圧縮関数を用いて、nビット長の所定の第1の付加データと前記秘密鍵付加データ生成部により生成されたmビット長の第1の秘密鍵付加データとに基づいてnビット長の第1の新たなデータを第1の圧縮コードとして算出する第1の圧縮コード算出部と、
     前記第1の圧縮コード算出部により算出された第1の圧縮コードと前記秘密鍵付加データ生成部により生成された第2から第i-1の秘密鍵付加データと前記圧縮関数とを用いて、第b(b=2,・・・,i-1)の圧縮コードとして第b-1の圧縮コードと第bの秘密鍵付加データとに基づく第bの新たなデータを算出する第2の圧縮コード算出部と、
     前記通信データ分割部により得られた第iの分割データと前記第2の圧縮コード算出部により算出された第i-1の圧縮コードとを含んだmビット長のデータを圧縮コード付加データとして生成する圧縮コード付加データ生成部と、
     nビット長の所定の第2の付加データと前記圧縮コード付加データ生成部により生成されたmビット長の圧縮コード付加データとに基づいて前記圧縮関数を用いてnビット長の新たなデータを前記通信データのメッセージ認証コードとして算出するメッセージ認証コード算出部と
    を備えることを特徴とするメッセージ認証コード演算装置。
    A communication data input unit for inputting communication data communicated between specific information processing apparatuses;
    A communication data dividing unit that divides data including communication data input to the communication data input unit into first to i-th divided data;
    A secret key data storage unit for storing first to i-1th secret key data;
    The a-th (a = 1, 2,..., I−1) division data obtained by the communication data division unit and the a-th secret key data stored in the secret key data storage unit are included. a secret key addition data generation unit that generates m-bit length data as the a-th secret key addition data;
    A predetermined first additional data having an n-bit length and the secret key-added data generating unit using a compression function for calculating new data having an n-bit length based on the n-bit data and the m-bit data. A first compressed code calculation unit that calculates first new data having an n-bit length as a first compressed code based on the first secret key-added data having an m-bit length generated by
    Using the first compression code calculated by the first compression code calculation unit, the second to (i-1) -th secret key addition data generated by the secret key addition data generation unit, and the compression function, Second compression for calculating b-th new data based on b-th compressed code and b-th secret key additional data as b-th (b = 2,..., I-1) compressed code A code calculator,
    Generate m-bit length data including compressed code additional data including the i-th divided data obtained by the communication data dividing unit and the i-1th compressed code calculated by the second compressed code calculating unit. A compressed code additional data generation unit,
    Based on the predetermined second additional data having an n-bit length and the compressed code additional data having an m-bit length generated by the compressed code additional data generating unit, new data having an n-bit length is converted into the new data using the compression function. A message authentication code calculation device comprising: a message authentication code calculation unit that calculates a message authentication code of communication data.
  2.  前記通信データ分割部は、前記通信データ入力部に入力された通信データを含んだm-nビットのi倍のデータ長を有するデータをm-nビット長の第1から第iの分割データに分割し、
     前記秘密鍵付加データ生成部は、m-nビット長の第aの分割データにnビット長の第aの秘密鍵データを付加してmビット長の第aの秘密鍵付加データを生成する
    ことを特徴とする請求項1記載のメッセージ認証コード演算装置。
    The communication data dividing unit converts data having a data length i times mn bits including the communication data input to the communication data input unit from the first to i-th divided data of mn bit length. Split and
    The secret key addition data generation unit generates an a-th secret key addition data having an m-bit length by adding an a-th secret key data having an n-bit length to the a-th division data having an mn bit length. The message authentication code calculation device according to claim 1.
  3.  前記メッセージ認証コード演算装置は、さらに、
     前記通信データ入力部に入力された通信データに特定長の所定のデータを付加してm-nビットのi倍のデータ長を有する処理データを生成する処理データ生成部を備え、
     前記通信データ分割部は、前記処理データ生成部により生成された処理データをm-nビット長の第1から第iの分割データに分割する
    ことを特徴とする請求項2記載のメッセージ認証コード演算装置。
    The message authentication code computing device further includes:
    A processing data generation unit for generating processing data having a data length i times mn bits by adding predetermined data of a specific length to the communication data input to the communication data input unit;
    3. The message authentication code calculation according to claim 2, wherein the communication data division unit divides the processing data generated by the processing data generation unit into first to i-th division data having a length of mn bits. apparatus.
  4.  前記メッセージ認証コード演算装置は、さらに、
     任意長の秘密鍵データを入力する秘密鍵データ入力部と、
     前記秘密鍵データ入力部に入力された秘密鍵データに基づいてnビットのi-1倍のデータ長を有する新たな秘密鍵データを拡大鍵データとして所定のアルゴリズムにより生成する拡大鍵データ生成部と、
     前記拡大鍵データ生成部により生成された拡大鍵データをnビット長の第1から第i-1の秘密鍵データに分割する拡大鍵データ分割部とを備え、
     前記秘密鍵データ記憶部は、前記拡大鍵データ分割部により得られたnビット長の第1から第i-1の秘密鍵データを記憶する
    ことを特徴とする請求項1記載のメッセージ認証コード演算装置。
    The message authentication code computing device further includes:
    A secret key data input part for inputting secret key data of arbitrary length;
    An expanded key data generation unit that generates new secret key data having a data length of i-1 times n bits as expanded key data based on the secret key data input to the secret key data input unit, according to a predetermined algorithm; ,
    An extended key data dividing unit for dividing the extended key data generated by the extended key data generating unit into first to i-1 secret key data having an n-bit length,
    2. The message authentication code calculation according to claim 1, wherein the secret key data storage unit stores first to i-1th secret key data having an n-bit length obtained by the extended key data dividing unit. apparatus.
  5.  前記通信データ分割部は、前記通信データ入力部に入力された通信データを含んだm-nビットのi倍のデータ長を有するデータをm-nビット長の第1から第iの分割データに分割し、
     前記秘密鍵付加データ生成部は、m-nビット長の第aの分割データにnビット長の第aの秘密鍵データを付加してmビット長の第aの秘密鍵付加データを生成する
    ことを特徴とする請求項4記載のメッセージ認証コード演算装置。
    The communication data dividing unit converts data having a data length i times mn bits including the communication data input to the communication data input unit from the first to i-th divided data of mn bit length. Split and
    The secret key addition data generation unit generates an a-th secret key addition data having an m-bit length by adding an a-th secret key data having an n-bit length to the a-th division data having an mn bit length. The message authentication code computing device according to claim 4.
  6.  前記メッセージ認証コード演算装置は、さらに、
     前記通信データ入力部に入力された通信データに特定長の所定のデータを付加してm-nビットのi倍のデータ長を有する処理データを生成する処理データ生成部を備え、
     前記通信データ分割部は、前記処理データ生成部により生成された処理データをm-nビット長の第1から第iの分割データに分割する
    ことを特徴とする請求項5記載のメッセージ認証コード演算装置。
    The message authentication code computing device further includes:
    A processing data generation unit for generating processing data having a data length i times mn bits by adding predetermined data of a specific length to the communication data input to the communication data input unit;
    6. The message authentication code calculation according to claim 5, wherein the communication data division unit divides the processing data generated by the processing data generation unit into first to i-th division data having a length of mn bits. apparatus.
  7.  通信データ入力部が、特定の情報処理装置間で通信される通信データを入力し、
     通信データ分割部が、前記通信データ入力部に入力された通信データを含んだデータを第1から第iの分割データに分割し、
     秘密鍵付加データ生成部が、前記通信データ分割部により得られた第a(a=1,2,・・・,i-1)の分割データと秘密鍵データ記憶部に記憶される第aの秘密鍵データとを含んだmビット長のデータを第aの秘密鍵付加データとして生成し、
     第1の圧縮コード算出部が、nビット長のデータとmビット長のデータとに基づいてnビット長の新たなデータを算出する圧縮関数を用いて、nビット長の所定の第1の付加データと前記秘密鍵付加データ生成部により生成されたmビット長の第1の秘密鍵付加データとに基づいてnビット長の第1の新たなデータを第1の圧縮コードとして算出し、
     第2の圧縮コード算出部が、前記第1の圧縮コード算出部により算出された第1の圧縮コードと前記秘密鍵付加データ生成部により生成された第2から第i-1の秘密鍵付加データと前記圧縮関数とを用いて、第b(b=2,・・・,i-1)の圧縮コードとして第b-1の圧縮コードと第bの秘密鍵付加データとに基づく第bの新たなデータを算出し、
     圧縮コード付加データ生成部が、前記通信データ分割部により得られた第iの分割データと前記第2の圧縮コード算出部により算出された第i-1の圧縮コードとを含んだmビット長のデータを圧縮コード付加データとして生成し、
     メッセージ認証コード算出部が、nビット長の所定の第2の付加データと前記圧縮コード付加データ生成部により生成されたmビット長の圧縮コード付加データとに基づいて前記圧縮関数を用いてnビット長の新たなデータを前記通信データのメッセージ認証コードとして算出する
    ことを特徴とするメッセージ認証コード演算方法。
    The communication data input unit inputs communication data communicated between specific information processing devices,
    The communication data dividing unit divides data including communication data input to the communication data input unit into first to i-th divided data,
    The secret key-added data generating unit is configured to store the a-th (a = 1, 2,..., I−1) divided data obtained by the communication data dividing unit and the a-th stored in the secret key data storage unit. M-bit length data including the secret key data is generated as the a-th secret key additional data,
    A first compression code calculation unit uses a compression function for calculating new data having an n-bit length based on data having an n-bit length and data having an m-bit length, and a predetermined first addition having an n-bit length Calculating first new data having an n-bit length as a first compressed code based on the data and the first secret key-adding data having an m-bit length generated by the secret-key-added data generating unit;
    A second compressed code calculating unit configured to calculate the first compressed code calculated by the first compressed code calculating unit and the second to i−1th secret key added data generated by the secret key added data generating unit; And the compression function, the b-th new code based on the b-th compressed code and the b-th secret key additional data as the b-th (b = 2,..., I-1) compressed code. The correct data,
    The compressed code additional data generating unit has an m-bit length including the i-th divided data obtained by the communication data dividing unit and the i-1th compressed code calculated by the second compressed code calculating unit. Generate data as compressed code additional data,
    The message authentication code calculation unit uses the compression function to generate n bits based on predetermined second additional data having an n-bit length and m-bit length compressed code additional data generated by the compressed code additional data generation unit A message authentication code calculation method, characterized in that long new data is calculated as a message authentication code of the communication data.
  8.  特定の情報処理装置間で通信される通信データを入力する通信データ入力処理と、
     前記通信データ入力処理で入力された通信データを含んだデータを第1から第iの分割データに分割する通信データ分割処理と、
     前記通信データ分割処理により得られた第a(a=1,2,・・・,i-1)の分割データと秘密鍵データ記憶部に記憶される第aの秘密鍵データとを含んだmビット長のデータを第aの秘密鍵付加データとして生成する秘密鍵付加データ生成処理と、
     nビット長のデータとmビット長のデータとに基づいてnビット長の新たなデータを算出する圧縮関数を用いて、nビット長の所定の第1の付加データと前記秘密鍵付加データ生成処理により生成されたmビット長の第1の秘密鍵付加データとに基づいてnビット長の第1の新たなデータを第1の圧縮コードとして算出する第1の圧縮コード算出処理と、
     前記第1の圧縮コード算出処理により算出された第1の圧縮コードと前記秘密鍵付加データ生成処理により生成された第2から第i-1の秘密鍵付加データと前記圧縮関数とを用いて、第b(b=2,・・・,i-1)の圧縮コードとして第b-1の圧縮コードと第bの秘密鍵付加データとに基づく第bの新たなデータを算出する第2の圧縮コード算出処理と、
     前記通信データ分割処理により得られた第iの分割データと前記第2の圧縮コード算出処理により算出された第i-1の圧縮コードとを含んだmビット長のデータを圧縮コード付加データとして生成する圧縮コード付加データ生成処理と、
     nビット長の所定の第2の付加データと前記圧縮コード付加データ生成処理により生成されたmビット長の圧縮コード付加データとに基づいて前記圧縮関数を用いてnビット長の新たなデータを前記通信データのメッセージ認証コードとして算出するメッセージ認証コード算出処理と
    をコンピュータに実行させるメッセージ認証コード演算プログラム。
    Communication data input processing for inputting communication data communicated between specific information processing devices;
    A communication data dividing process for dividing the data including the communication data input in the communication data input process into first to i-th divided data;
    M including the a-th (a = 1, 2,..., I−1) divided data obtained by the communication data dividing process and the a-th secret key data stored in the secret key data storage unit. Secret key addition data generation processing for generating bit length data as the a-th secret key addition data;
    Using the compression function for calculating new n-bit length data based on the n-bit length data and the m-bit length data, the predetermined first additional data having the n-bit length and the secret key addition data generation process A first compressed code calculation process for calculating first new data having an n-bit length as a first compressed code based on the first secret key-added data having an m-bit length generated by
    Using the first compression code calculated by the first compression code calculation process, the second to (i-1) -th secret key addition data generated by the secret key addition data generation process, and the compression function, Second compression for calculating b-th new data based on b-th compressed code and b-th secret key additional data as b-th (b = 2,..., I-1) compressed code Code calculation process,
    Generate m-bit length data including compressed code additional data including the i-th divided data obtained by the communication data dividing process and the i-1th compressed code calculated by the second compressed code calculating process. Compressed code additional data generation processing,
    Based on the predetermined second additional data having an n-bit length and the compressed code additional data having an m-bit length generated by the compressed code additional data generation process, new data having an n-bit length is converted to the new data using the compression function. A message authentication code calculation program that causes a computer to execute message authentication code calculation processing that is calculated as a message authentication code of communication data.
PCT/JP2010/059818 2010-06-10 2010-06-10 Message authentication code calculation device, message authentication code calculation method, and message authentication code calculation program WO2011155039A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/JP2010/059818 WO2011155039A1 (en) 2010-06-10 2010-06-10 Message authentication code calculation device, message authentication code calculation method, and message authentication code calculation program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2010/059818 WO2011155039A1 (en) 2010-06-10 2010-06-10 Message authentication code calculation device, message authentication code calculation method, and message authentication code calculation program

Publications (1)

Publication Number Publication Date
WO2011155039A1 true WO2011155039A1 (en) 2011-12-15

Family

ID=45097669

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2010/059818 WO2011155039A1 (en) 2010-06-10 2010-06-10 Message authentication code calculation device, message authentication code calculation method, and message authentication code calculation program

Country Status (1)

Country Link
WO (1) WO2011155039A1 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111052670A (en) * 2017-09-01 2020-04-21 三菱电机株式会社 Encryption device, decryption device, encryption method, decryption method, encryption program, and decryption program
CN116186747A (en) * 2023-04-27 2023-05-30 暗链科技(深圳)有限公司 Adaptive hash encryption method, nonvolatile readable storage medium, and electronic device

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006019152A1 (en) * 2004-08-19 2006-02-23 Hitachi, Ltd. Message authentication code generation device, message authentication code verification device, and message authentication code generation method

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006019152A1 (en) * 2004-08-19 2006-02-23 Hitachi, Ltd. Message authentication code generation device, message authentication code verification device, and message authentication code generation method

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
FERGUSON, N. ET AL.: "Helix Fast Encryption and Authentication in a Single Cryptographic Primitive", LECTURE NOTES IN COMPUTER SCIENCE, vol. 2887, 2003, pages 330 - 346 *
NAITO, Y. ET AL.: "How to Construct Cryptosystems and Hash Functions in Weakened Random Oracle Models", CRYPTOLOGY EPRINT ARCHIVE, REPORT 2009/550, 16 November 2009 (2009-11-16) *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111052670A (en) * 2017-09-01 2020-04-21 三菱电机株式会社 Encryption device, decryption device, encryption method, decryption method, encryption program, and decryption program
CN111052670B (en) * 2017-09-01 2024-02-09 三菱电机株式会社 Encryption device, decryption device, encryption method, decryption method, and computer-readable storage medium
CN116186747A (en) * 2023-04-27 2023-05-30 暗链科技(深圳)有限公司 Adaptive hash encryption method, nonvolatile readable storage medium, and electronic device

Similar Documents

Publication Publication Date Title
KR100889127B1 (en) Message authentication code producing apparatus, message authentication code verifying apparatus, and message authentication system
KR101809386B1 (en) Authenticated encryption device, authenticated encryption method, and computer-readable recording medium
JP5447510B2 (en) Tag generation device, tag verification device, communication system, tag generation method, tag verification method, and recording medium
JP6740902B2 (en) Authentication encryption method, authentication decryption method, and information processing apparatus
CN101202623B (en) Method of generating message authentication code, authentication/encryption and authentication/decryption methods
US20130195266A1 (en) Apparatus and Method for Producing a Message Authentication Code
JP2008545163A (en) Enhanced secure hash function
CN106452791B (en) quantum digital signature method without trust center
JP6305642B2 (en) Message authenticator generating apparatus, message authenticator generating method, and message authenticator generating program
CN111066077B (en) Encryption device, encryption method, decryption device, and decryption method
WO2013065241A1 (en) Incremental mac tag generation device, method, and program, and message authentication device
WO2016088453A1 (en) Encryption apparatus, decryption apparatus, cryptography processing system, encryption method, decryption method, encryption program, and decryption program
JP5047198B2 (en) Secret calculation system, secret calculation method, secret calculation device, verification device, and program
US11463235B2 (en) Encryption device, encryption method, program, decryption device, and decryption method
US9049004B2 (en) Low-power encryption apparatus and method
CN111432403A (en) Data auditing method and device based on block chain
WO2020213114A1 (en) Mac tag list generation device, mac tag list verification device, method, and program
JP2002049310A (en) Ciphering and deciphering device, authentication device and storage medium
WO2011155039A1 (en) Message authentication code calculation device, message authentication code calculation method, and message authentication code calculation program
US11177936B2 (en) Message authenticator generation apparatus
US11115187B2 (en) Apparatus and method for block ciphers for real-time data transmission
JP6033504B1 (en) Message authenticator generator
JP2015082077A (en) Encryption device, control method, and program
Alizadeh et al. A new distinguisher for CubeHash-8/b and CubeHash-15/b compression functions
WO2020095382A1 (en) Authenticated encryption device, authenticated decryption device, authenticated encryption method, authenticated decryption method, authenticated encryption program, and authenticated decryption program

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: 10852878

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: 10852878

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: JP