WO2012132623A1 - 暗号処理装置、および暗号処理方法、並びにプログラム - Google Patents

暗号処理装置、および暗号処理方法、並びにプログラム Download PDF

Info

Publication number
WO2012132623A1
WO2012132623A1 PCT/JP2012/053933 JP2012053933W WO2012132623A1 WO 2012132623 A1 WO2012132623 A1 WO 2012132623A1 JP 2012053933 W JP2012053933 W JP 2012053933W WO 2012132623 A1 WO2012132623 A1 WO 2012132623A1
Authority
WO
WIPO (PCT)
Prior art keywords
round
key
unit
data
keys
Prior art date
Application number
PCT/JP2012/053933
Other languages
English (en)
French (fr)
Inventor
香士 渋谷
敦司 三津田
徹 秋下
孝典 五十部
白井 太三
玄良 樋渡
Original Assignee
ソニー株式会社
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ソニー株式会社 filed Critical ソニー株式会社
Priority to EP12765375.6A priority Critical patent/EP2693684B1/en
Priority to BR112013024231A priority patent/BR112013024231A2/pt
Priority to CN201280014184.6A priority patent/CN103621007A/zh
Priority to US14/002,462 priority patent/US9270458B2/en
Priority to RU2013142993/08A priority patent/RU2013142993A/ru
Publication of WO2012132623A1 publication Critical patent/WO2012132623A1/ja

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0894Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09CCIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
    • G09C1/00Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system
    • 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/002Countermeasures against attacks on cryptographic mechanisms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/24Key scheduling, i.e. generating round keys or sub-keys for block encryption
    • 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/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0625Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation with splitting of the data block into left and right halves, e.g. Feistel based algorithms, DES, FEAL, IDEA or KASUMI

Definitions

  • the present disclosure relates to a cryptographic processing device, a cryptographic processing method, and a program. More specifically, the present invention relates to an encryption processing apparatus that executes common key system encryption, an encryption processing method, and a program.
  • Cryptography is one of the components of information security technology, and at present, cryptography is used in various products and systems.
  • common key block cipher There are various cryptographic processing algorithms, but one of the basic techniques is called common key block cipher.
  • common key block encryption a key for encryption and a key for decryption are common.
  • encryption processing and the decryption processing a plurality of keys are generated from the common key, and data conversion processing is repeatedly executed in a block unit, for example, block data units such as 64 bits, 128 bits and 256 bits.
  • DES Data Encryption Standard
  • AES Advanced Encryption Standard
  • CLEFIA proposed by Sony Corporation in 2007 is one of the common key block ciphers.
  • Such an algorithm of the common key block encryption mainly includes an encryption processing unit having a round function execution unit that repeatedly executes conversion of input data, and a key scheduling unit that generates a round key to be applied in each round of the round function unit. And composed of The key schedule unit first generates an expanded key with an increased number of bits based on the master key (primary key) which is a secret key, and applies it in each round function unit of the encryption processing unit based on the generated expanded key Generate a round key (secondary key).
  • a structure in which a round function having a linear conversion unit and a non-linear conversion unit is repeatedly performed is known.
  • a Feistel structure or a generalized Feistel structure is a typical structure.
  • the Feistel structure and the generalized Feistel structure have a structure that converts plaintext into ciphertext by simple repetition of a round function including an F function as a data conversion function. In the F function, linear conversion processing and non-linear conversion processing are performed. Examples of documents that describe cryptographic processing to which the Feistel structure is applied include Non-Patent Document 1 and Non-Patent Document 2.
  • the present disclosure has been made in view of, for example, the above-described situation, and makes it difficult to perform unauthorized decryption such as a related key attack, and provides a highly secure cryptographic processing device, a cryptographic processing method, and a program. To aim.
  • the first aspect of the present disclosure is An encryption processing unit that divides and inputs configuration bits of data to be data processed into a plurality of lines, and repeatedly executes data conversion processing in which round functions are applied to data of each line as round operations;
  • a key scheduling unit for outputting a round key to the round operation execution unit of the encryption processing unit;
  • the key schedule unit A substitution-type key schedule unit that divides a secret key held in advance into a plurality of pieces to generate a plurality of round keys or round key configuration data, The plurality of round keys or the plurality of round keys generated by combining the round key configuration data are output to the round operation execution unit sequentially executed in the encryption processing unit in a setting that does not repeat a predetermined sequence It is in the cryptographic processor.
  • the key scheduling unit changes an input sequence of the plurality of round keys to the round operation execution unit in units of multiple rounds in the round operation execution unit.
  • the cryptographic processing unit may input data divided into the plurality of lines and perform non-linear conversion processing, and an F function execution unit including linear conversion processing; It has an operation part which performs the operation which applied the above-mentioned round key to the output of F function execution part.
  • the key schedule unit divides a secret key held in advance into a plurality of pieces and has a plurality of bits having the same number of bits as the round key input to the round operation execution unit. Generate a round key for
  • the key scheduling unit divides a secret key held in advance into a plurality of pieces and has a plurality of bits having a smaller number of bits than the round key input to the round operation execution unit.
  • Round key configuration data is generated, and a plurality of round key configuration data are concatenated to generate a round key having the same number of bits as the round key input to the round operation execution unit.
  • the key scheduling unit parallelizes a plurality of round keys to be applied in parallel in the round operation executing unit to the round operation executing unit sequentially executed in the encryption processing unit. Output.
  • the key scheduling unit includes one or more selectors that perform key selection / supply processing to the round operation execution unit.
  • the key scheduling unit sets a plurality of round keys or a plurality of groups obtained by dividing the round key configuration data, and performs the round operation on a set group basis. Control processing of the key supply sequence to the execution unit is performed.
  • the key scheduling unit includes the selector in units of groups.
  • the encryption processing unit performs encryption processing that converts plaintext as input data into ciphertext, or decryption processing that converts ciphertext as input data into plaintext. Run.
  • a second aspect of the present disclosure is: A cryptographic processing method to be executed by the cryptographic processing device; Cryptographic processing unit that divides configuration bits of data to be processed into data into multiple lines and inputs the data, and repeatedly executes data conversion processing in which round functions are applied to data of each line as round operations Step and The key scheduling unit executes a key scheduling step of outputting a round key to the round operation execution unit of the encryption processing unit,
  • the key schedule unit A substitution-type key schedule unit that divides a secret key held in advance into a plurality of pieces to generate a plurality of round keys or round key configuration data, The plurality of round keys or the plurality of round keys generated by combining the round key configuration data are output to the round operation execution unit sequentially executed in the encryption processing unit in a setting that does not repeat a predetermined sequence It is in the cryptographic processing method.
  • the third aspect of the present disclosure is: A program that causes a cryptographic processing device to execute cryptographic processing, Cryptographic processing that divides configuration bits of data to be processed into data into a plurality of lines and inputs the data conversion processing in which round functions are applied to data of each line as round operations. Step and Having the key scheduling unit execute a key scheduling step of outputting a round key to the round operation execution unit of the encryption processing unit;
  • the key schedule unit is a substitution type key schedule unit that divides a secret key held in advance into a plurality of pieces to generate a plurality of round keys or round key configuration data.
  • a plurality of round keys generated by combining the plurality of round keys or the round key configuration data to a round operation execution unit sequentially executed in the encryption processing unit are repeated in a predetermined sequence It is in the program to be output with settings that do not require
  • the program of the present disclosure is, for example, a program provided by, for example, a storage medium to an information processing apparatus or computer system capable of executing various program codes. By executing such a program on a program execution unit on an information processing apparatus or computer system, processing according to the program is realized.
  • a system is a logical set composition of a plurality of devices, and the device of each composition is not limited to what exists in the same case.
  • a highly secure cryptographic processing device is realized by round key supply control. Specifically, encryption processing in which data conversion processing in which a round function is applied to data of each line is repeatedly executed as a round operation by dividing configuration bits of data to be data processed into a plurality of lines And a key scheduling unit that outputs a round key to the round operation execution unit of the encryption processing unit, and the key scheduling unit divides the secret key held in advance into a plurality of generations to generate a plurality of round keys A plurality of generated round keys are output to the round operation execution unit sequentially executed by the encryption processing unit in a setting that does not become a repetition of a predetermined sequence.
  • This configuration realizes a highly secure cryptographic processing configuration highly resistant to, for example, related key attacks and the like.
  • FIG. It is a figure explaining the structural example which changes the selection order of a key in multiple rounds. It is a figure explaining the example of a round key supply structure which set the substitution process performed in a 4-round unit to a different aspect each time. It is a figure explaining the structural example which changes the selection order of a key in multiple rounds. It is a figure explaining the structural example which substitutes every 3 rounds, and utilizes 6 keys in 3 rounds. It is a figure explaining the structural example which changes the selection order of a key in multiple rounds.
  • Common key block cipher As a common key block cipher (hereinafter, block cipher), it refers to the one defined below.
  • the block cipher takes plaintext P and key K as input and outputs ciphertext C.
  • the bit length of plaintext and ciphertext is called block size and written here by n.
  • n can take any integer value, it is usually a value determined in advance for each block encryption algorithm.
  • a block cipher having a block length of n may be called an n-bit block cipher.
  • the bit length of the key is represented by k.
  • the key can have any integer value.
  • the common key block encryption algorithm will correspond to one or more key sizes.
  • Plaintext P n bits
  • Ciphertext C n bits
  • Key K k bits
  • FIG. 1 shows a diagram of an n-bit common key block encryption algorithm E corresponding to a key length of k bits.
  • the decryption algorithm D corresponding to the encryption algorithm E can be defined as the inverse function E -1 of the encryption algorithm E, receives the ciphertext C and the key K as input, and outputs the plaintext P.
  • FIG. 2 shows a diagram of a decryption algorithm D corresponding to the encryption algorithm E shown in FIG.
  • Block ciphers can be considered in two parts.
  • Key schedule section which outputs an expanded key K '(bit length k') obtained by expanding a bit length by a predetermined step
  • P plaintext
  • K 'expanded a key K 'expanded from the key schedule section
  • a “data encryption unit” that converts data and outputs a ciphertext C.
  • the data encryption unit used in the following embodiments can be divided into processing units called round functions.
  • the round function receives two pieces of data as input, performs internal processing, and outputs one piece of data.
  • One of the input data is n-bit data in the middle of encryption, and the output of the round function in one round is supplied as the input of the next round.
  • Another input data uses a part of data of the expanded key output from the key schedule, and this key data is called a round key.
  • the total number of round functions is called the total number of rounds, which is a value predetermined for each encryption algorithm.
  • R represents the total number of rounds.
  • the input data of the first round is X 1 viewed from the input side of the data encryption unit
  • the data to be input to the i-th round function is X i
  • the round key is RK i It is indicated as 4.
  • the round function may take various forms depending on the block encryption algorithm. Round functions can be classified according to the structure adopted by the cryptographic algorithm. As typical structures, SPN structure, Feistel structure, and extended Feistel structure are exemplified here.
  • (A) SPN structure round function A configuration in which exclusive OR operation with a round key, non-linear conversion, linear conversion processing, etc. is applied to all n-bit input data. The order of each operation is not determined.
  • FIG. 5 shows an example of the round function of the SPN structure.
  • (A) Feistel structure The n-bit input data is divided into two n / 2-bit data.
  • a function (F function) having one of the data and the round key as input is applied, and the output is exclusively ORed to the other data. After that, the left and right sides of the data are used as output data.
  • F function function having one of the data and the round key as input
  • the output is exclusively ORed to the other data.
  • the left and right sides of the data are used as output data.
  • There are various types of internal configurations of the F function but basically, it is realized by a combination of exclusive OR operation with round key data, non-linear operation, and linear transformation as in the SPN structure.
  • FIG. 6 shows an example of the round function of the Feistel structure.
  • the extended Feistel structure is an extended Feistel structure in which the number of data divisions is 2 is divided into three or more. Assuming that the division number is d, various extended Feistel structures can be defined by d. Because the size of the input and output of the F function is relatively small, it is considered suitable for small-sized implementation.
  • (D) d-series generalized Feistel structure In an extended Feistel structure in which the division number d is an even number, d / 2 F functions are applied in parallel in one round. Also, use cyclic shift as a replacement between rounds. 7, 18, and 20 show a four-series generalized Feistel structure.
  • the non-linear transformation processing unit tends to have a high implementation cost as the size of the input data increases.
  • the target data is often divided into a plurality of units, and a configuration in which non-linear transformation is performed on each of the units is often employed. For example, assuming that the input size is ms bits, they are divided into m pieces of s-bit data, and non-linear conversion with s-bit input / output is performed on each of them.
  • the non-linear transformation of those s-bit units is called S-box. An example is shown in FIG.
  • the linear transformation processing unit can be defined as a matrix by its nature.
  • the elements of a matrix can generally be expressed in various ways, such as elements of fields of GF (2 8 ) and elements of GF (2).
  • FIG. 10 shows an example of a linear transformation processing unit which has ms bit input / output and is defined by an m ⁇ m matrix defined on GF (2 s ).
  • the key schedule unit (expanded key generation unit) generates k'-bit expanded key (round key) K 'by k-bit secret key K as input. Function.
  • the key schedule portion is required to have the following characteristics (characteristics 1 to 3) in terms of security. (Characteristic 1)
  • Characteristics 1 to 3 in terms of security.
  • a general attack is the bias of data between plaintext and ciphertext on a certain fixed secret key (difference, linearity While the related key attack uses the bias of plaintext and inter-cipher text data on a plurality of secret keys, while the related key attack is used.
  • the attack is performed under the assumption that the values of the two secret keys are unknown, but the difference between the secret keys is known.
  • An unknown secret key K is derived using the set of)).
  • (+) represents an exclusive OR operator. Therefore, the related key difference attack is stronger than the normal difference attack because the information available to the attacker is increased.
  • the key scheduling unit is also required to have the following characteristics (characteristics 4 to 9) on implementation.
  • Characteristics 4 to 9) Easy to implement (Characteristic 5) Short setup time for generating an expanded key from a secret key (Characteristic 6) Able to generate an expanded key on-the-fly (Characteristic 7) Encryption key schedule Part, decryption key schedule part can be shared as much as possible (Characteristic 8) Shareable with data encryption part and data decryption part as much as possible (Characteristic 9) can easily cope with change of secret key length
  • the key scheduling unit satisfy these characteristics in a balanced manner from the viewpoint of security and implementation.
  • the key scheduling unit has various designs for every common key block cipher. Although the security of the key scheduling unit and the implementation performance are closely related to the data encryption unit, it is generally considered that there is a trade-off between security and implementation performance like the data encryption unit.
  • Non-Patent Document 3 Sony Corporation, "The 128-bit Blockcipher CLEFIA Algorithm Specification", Revision 1.0, 2007.
  • Camellia Non-Patent Document 3
  • Patent Document 4 Aoki, Ichikawa, Kanda, Matsui, Morii, Nakasu, Tokita, "128-bit block cipher Camellia algorithm specification", version 2.0, 2001) and the like.
  • a method of improving the mounting performance there is a method of forming only by a linear function without using a non-linear function.
  • a key scheduling unit that divides the secret key data into a plurality of pieces and replaces them is considered to have high implementation performance, especially when the hardware is implemented, with almost no circuit being required.
  • Such a key schedule part is called a replacement key schedule part.
  • the replacement key scheduling unit has high implementation performance, many systems have security problems.
  • the key scheduling part of the block cipher GOST (Non-Patent Document 5: GOST 28147-89: Encryption, Decryption, and Message Authentication Code (MAC) Algorithms, RFC 5830.) is 4n-bit.
  • the secret key K is equally divided into eight for every (n / 2) -bit, and each of them is used as a round key in order
  • the key scheduling unit can be configured by only the selector for each round without performing any operation on the secret key K, so that the number of circuits required for hardware implementation is very small.
  • the data structure of GOST has a Feistel structure, and it is vulnerable to the related key attack because the round key is exclusively ORed before each F function. It is known that, in fact, an attack succeeds with probability 1.
  • RK0 1 , RK0 2 ,..., RK0 R be round keys obtained from the secret key K0
  • RK1 1 , RK1 2 ,..., RK1 R be round keys obtained from the secret key K1.
  • the difference of the secret key K0 and the secret key K1 as a secret key difference ⁇ the difference between each round key round key difference ⁇ 1, ⁇ 2, ..., and ⁇ R.
  • the probability that such an equation holds is called the success probability of the identification attack using a related key attack.
  • block ciphers which are considered to be strong against related key attacks, need to show that this probability is sufficiently small.
  • the probability of 1 is similarly obtained when exclusive-ORing the round key before the F function using the replacement key schedule part. It is possible to configure a related key attack transitioning at.
  • KASUMI Non-Patent Document 6: 3rd Generation Partnership Project, Technical Specification Group Services and System Aspects, 3G Security, Specification of the 3GPP Confidentiality and Integrity Algorithms; Document 2: KASUMI Specification, V9.0.0, 2009).
  • KASUMI Key scheduling unit of KASUMI also has high implementation performance, it is known to be vulnerable to related key attacks.
  • the secret key K is equally divided into a plurality of pieces, and each is supplied to the data encryption unit according to the following method.
  • Methodhod 1 Change of round key insertion position: The round key is exclusive ORed after the F function, not before the conventional F function (for example, the positions shown in FIGS. 14 and 18) (for example, FIG. 19, Position shown in FIG. 20)
  • Methodhod 2 Change of Round Key Generation / Replacement: Round keys are generated according to the structure of the data encryption unit using a substitution method that is secure against related key attacks and the like.
  • the divided secret keys are not supplied in order, but are appropriately supplied in order so as to have resistance to a related key attack. This order is related to the bit length and number of divisions of the secret key K, and the structure of the data encryption unit, and it is necessary to design a key schedule unit for each structure of the data encryption unit.
  • the length of one round key is (n / 2) -bit and when the secret key K is 2n-bit (n / 2) Divide into 4 equal parts every -bit and supply while replacing every 4 rounds. This is the setting shown in FIG.
  • the round key supply process shown in FIG. 21 will be described.
  • the secret key K is 2n-bit key data.
  • the 2n-bit secret key K is divided into four equal parts to generate four round keys K1, K2, K3, and K4.
  • the four round keys K1, K2, K3, and K4 are (n / 2) -bit key data.
  • the four round keys K1, K2, K3, and K4 are used in different sequences in units of four rounds as one unit.
  • round keys K1 to K4 are input and applied in the following sequence in R1 to R4.
  • Round R1 Round Key K1 Round
  • R2 Round Key K2 Round
  • R3 Round Key K3 Round
  • R4 Round Key K4
  • R5 to R8 round keys K1 to K4 are input and applied in the following sequence.
  • round keys K1 to K4 are input and applied in the following sequence.
  • R12: Round Key K1 Round Key K1
  • different round key input sequences are applied in units of four rounds as one unit.
  • the secret key K is 2n-bit key data.
  • the 2n-bit secret key K is divided into eight equal parts to generate eight keys K1, K2, K3, K4, K5, K6, K7, and K8.
  • the eight keys K1 to K8 are (n / 4) -bit key data.
  • An (n / 2) -bit round key consisting of concatenated data of two keys selected from the eight keys K1 to K8: KxKy is used in a different sequence in each unit, using four rounds as one unit.
  • R1 to R4 a round key KxKy in which key data K1 to K8 are concatenated in the following sequence is inputted and applied.
  • R5 to R8 a round key KxKy in which key data K1 to K8 are concatenated in the following sequence is inputted and applied.
  • Round Key K5K8 Round Key K5K8
  • R9 to R12 a round key KxKy obtained by concatenating key data K1 to K8 in the following sequence is inputted and applied.
  • R12: Round Key K1 K8 Round Key K1 K8
  • the length of the secret key K is 4 n-bit, it is equally divided into eight every (n / 2) -bit and supplied while being replaced every eight rounds.
  • the configuration shown in FIG. 1 the configuration shown in FIG. 1
  • the secret key K is 4n-bit key data.
  • the 4n-bit secret key K is divided into eight equal parts to generate eight round keys K1, K2, K3, K4, K5, K6, K7, and K8.
  • the eight round keys K1 to K8 are (n / 2) -bit key data.
  • the eight round keys K1 to K8 are used in different sequences in each unit, with eight rounds as one unit.
  • R1 to R8 round keys are input and applied in the following sequence.
  • R10 Round Key K5 Round
  • R11 Round Key K1 Round
  • R12 Round Key K4 Round
  • R13 Round Key K8 Round
  • R14 Round Key K6 Round
  • R15 Round Key K3 Round
  • R16 Round Key K7
  • different round key input sequences are applied in units of eight rounds as one unit.
  • two round keys are (n / 4) -bit.
  • the secret key K is 2n-bit, it is equally divided into eight every (n / 4) -bit, and two (n / 4) -bit ones are supplied while replacing every four rounds.
  • the round key supply process shown in FIG. 24 will be described.
  • the secret key K is 2n-bit key data.
  • the 2n-bit secret key K is divided into eight equal parts to generate eight round keys K1, K2, K3, K4, K5, K6, K7, and K8.
  • Eight round keys K1 to K8 are (n / 4) -bit key data. Two round keys selected from the eight round keys K1 to K8 are used in different sequences in each unit, with four rounds as one unit.
  • R1 Round key K1 and round key K2
  • R2 Round key K3 and round key K4
  • Round R3 Round key K5 and round key K6
  • Round R4 Round key K7 and round key K8
  • R5 to R8 enter and apply two round keys in the following sequence.
  • Round R5 Round key K5 and round key K1
  • Round R6 Round key K2 and round key K6
  • Round R7 Round key K7 and round key K3
  • Round R8 Round key K4 and round key K8
  • R9 to R12 two round keys are input and applied in the following sequence.
  • Round R9 Round key K7 and round key K5 Round
  • R10 Round key K1 and round key K3 Round
  • R11 Round key K4 and round key K2 Round
  • Round R12 Round key K6 and round key K8
  • different round key input sequences are applied in units of four rounds as one unit.
  • the round key supply process shown in FIG. 25 will be described.
  • the secret key K is 2n-bit key data.
  • the 2n-bit secret key K is divided into eight equal parts to generate eight round keys K1, K2, K3, K4, K5, K6, K7, and K8.
  • Eight round keys K1 to K8 are (n / 4) -bit key data. Two round keys selected from the eight round keys K1 to K8 are used in different sequences in each unit, with four rounds as one unit. In this example, round keys K1 to K4 are applied to the left F function of each round in the 4-sequence Feistel structure, and round keys K5 to K8 are applied to the right F function of each round in the 4-sequence Feistel structure.
  • R1 Round key K1 and round key K5
  • R2 Round key K2 and round key K6
  • R3 Round key K3 and round key K7
  • R4 Round key K7 and round key K8
  • R5 to R8 enter and apply two round keys in the following sequence.
  • Round R5 Round key K2 and round key K5
  • Round R6 Round key K4 and round key K8
  • Round R7 Round key K1 and round key K6 Round
  • R9 to R12 two round keys are input and applied in the following sequence.
  • Round R9 Round key K4 and round key K5 Round
  • R10 Round key K3 and round key K7 Round
  • R11 Round key K2 and round key K8 Round
  • Round R12 Round key K1 and round key K6
  • different round key input sequences are applied in units of four rounds as one unit.
  • the key schedule part according to the present method is effective also for a model in which the cyclic shift in the 4-sequence generalized Feistel structure as shown in FIG. 26 is changed to round permutation (referred to as 4-sequence generalized Feistel +). .
  • the basic configuration shown in FIG. 26 is a configuration in which n-bit input data is divided into d units of n / d bits and F function processing and exclusive OR processing are performed in the d-line generalized Feistel structure, The operation with the round key is performed on the output of the F function.
  • the data sequence input to the F function is the F function input data sequence, Exclusive OR side data series, data series to be exclusive ORed, I assume.
  • Each n / d bit data transferred in each series (each line) is further subdivided into d / 2 (in this case, the division may not be equal division).
  • the data re-divided into d / 2 in each series (each line) is distributed according to the following rules.
  • the key schedule part by this method is effective also to the model (4 series generalization Feistel +) which changed this cyclic shift to round permutation.
  • the structure shown in FIG. 27 which is the replacement method similar to FIG. 25 is suitable. That is, in the secret key divided into eight equal parts by (n / 4) -bit, four are used as the round key RK r, 0 to the left F function, and the remaining four are added to the right F function Is used for the round key RK r, 1 of.
  • the round key supply process shown in FIG. 27 will be described.
  • the secret key K is 2n-bit key data.
  • the 2n-bit secret key K is divided into eight equal parts to generate eight round keys K1, K2, K3, K4, K5, K6, K7, and K8.
  • Eight round keys K1 to K8 are (n / 4) -bit key data.
  • Two round keys selected from the eight round keys K1 to K8 are used in different sequences in each unit, with four rounds as one unit.
  • two round keys selected from round keys K1 to K8 are applied to two F functions of each round in a 4-series generalized Feistel + structure in which cyclic shift is changed to round permutation.
  • R1 Round key K1 and round key K5
  • R2 Round key K2 and round key K6
  • R3 Round key K3 and round key K7
  • R4 Round key K7 and round key K8
  • R5 to R8 enter and apply two round keys in the following sequence.
  • Round R5 Round key K2 and round key K5
  • Round R6 Round key K4 and round key K8
  • Round R7 Round key K1 and round key K6 Round
  • R9 to R12 two round keys are input and applied in the following sequence.
  • Round R9 Round key K4 and round key K5 Round
  • R10 Round key K3 and round key K7 Round
  • R11 Round key K2 and round key K8 Round
  • Round R12 Round key K1 and round key K6
  • different round key input sequences are applied in units of four rounds as one unit.
  • FIG. 28 shows how to configure the key scheduling unit when the secret key is (5n / 4) -bit and the round key required for one round is (n / 2) -bit.
  • the key scheduling unit when the secret key is (5n / 4) -bit and the round key required for one round is (n / 2) -bit.
  • replacement and extension are performed so as to be an integral multiple of the bit length of the round key required for one round first. After that, it takes a structure to supply in order.
  • the round key supply process shown in FIG. 28 will be described.
  • the secret key K is (5/4) n-bit key data.
  • the replacement key schedule unit generates five round keys K1, K2, K3, K4, and K5 corresponding to the bit length of the round key.
  • Two round keys selected from the round keys K1 to K5 are input as round keys to be applied to each round and applied to two F functions.
  • R1 Round key K3 and round key K4 Round
  • R2 Round key K1 and round key K2 Round
  • R3 Round key K3 and round key K4 Round
  • R4 Round key K5 and round key K5 Round
  • R5 Round key K1 and round key K2
  • R6-R10, and the subsequent five rounds: R11-R15 apply and apply two round keys in the same sequence.
  • the number of active F functions can be determined by determining one input difference. From the above, it can be understood that it is sufficient to show that a sufficiently large number of active F-functions can be obtained regardless of any input difference when considering the security against the differential attack.
  • the minimum value of the number of active F functions for each input difference is defined as the minimum number of active F functions.
  • the configuration according to the present disclosure that is, the configuration in which the input key sequence is changed in predetermined round units in the replacement key scheduling unit, such key replacement is not performed. It is possible to guarantee the number of active F functions larger than the modulus, and to realize a highly secure cryptographic processing configuration with a small number of rounds.
  • the round key input process is as follows: It is necessary to input two (n / 4) -bit round keys for each round.
  • n-bit for example, as shown in FIG. 32
  • n / 4-bit round keys obtained by dividing the n-bit secret key into four equal parts are generated and input two for each round.
  • the secret key is (5/4)
  • n-bit for example, as shown in FIG. 33 and FIG. 34
  • n / 4-bit round keys are generated by dividing the n-bit secret key into five equal parts. Enter two in a round.
  • the secret key K is n-bit key data.
  • the n-bit secret key K is divided into four equal parts to generate four round keys K1, K2, K3, and K4.
  • the four round keys K1, K2, K3, and K4 are (n / 4) -bit key data.
  • the four round keys K1, K2, K3, and K4 are used in different sequences in units of four rounds as one unit.
  • R3 to R4 round keys K1 to K4 are input and applied in the following sequence.
  • round keys K1 to K4 are input and applied in the following sequence.
  • Round R5 Round key K4 and round key K3
  • Round R6 Round key K2 and round key K1
  • round keys K1 to K4 are input and applied in the following sequence.
  • Round R7 Round key K2 and round key K4
  • Round R8 Round key K1 and round key K3
  • round keys K1 to K4 are input and applied in the following sequence.
  • Round R9 Round key K1 and round key K2
  • Round R10 Round key K3 and round key K4
  • the round key supply process shown in FIG. 33 will be described.
  • the secret key K is (5/4) n-bit key data.
  • the replacement key schedule unit generates five round keys K1, K2, K3, K4, and K5 corresponding to the bit length of the round key.
  • Two round keys selected from the round keys K1 to K5 are input as round keys to be applied to each round and applied to two F functions.
  • the key supply sequence in the key supply processing configuration shown in FIG. 33 is, as a result, the same as that in FIG. 28 described above. That is, K1, K2, K3, K4, K5, K5, K1, K2, K3... Supply keys in this order.
  • K1, K2, K3, K4, K5, K5, K1, K2, K3... Supply keys in this order.
  • the key supply processing sequence shown in FIG. 33 and the key supply processing sequence shown in FIG. 34 are exactly the same. That is, in the first five rounds: in R1 to R5, two round keys are input and applied in the following sequence.
  • Round R1 Round key K1 and round key K2 Round
  • R2 Round key K3 and round key K4 Round
  • R3 Round key K5 and round key K5 Round
  • R4 Round key K2 and round key K3 Round
  • R5 Round key K3 and round key K4 The next five rounds: Enter and apply two round keys in the same sequence in R6 to R10.
  • the same effect can be obtained by changing the key selection order in units of multiple rounds instead of rearranging the supply order of divided keys and sequentially inputting to the round function.
  • the round key supply configuration described above with reference to FIG. 24 and the key supply processing sequence shown in FIG. 35 are exactly the same. That is, in the first four rounds, two round keys are inputted and applied in the following sequence in R1 to R4.
  • Round R2 Round key K3 and round key K4 Round
  • R3 Round key K5 and round key K6 Round
  • R5 to R8 enter and apply two round keys in the following sequence.
  • Round R5 Round key K5 and round key K1
  • Round R6 Round key K2 and round key K6
  • Round R7 Round key K7 and round key K3
  • Round R8 Round key K4 and round key K8
  • Round R9 Round key K7 and round key K5
  • Round R10 Round key K1 and round key K3
  • Round R11 Round key K4 and round key K2
  • Round R12 Round key K6 and round key K8
  • the round key supply configuration described with reference to FIG. 24 and the key supply processing sequence illustrated in FIG. 35 have a configuration in which different round key input sequences are applied in units of four rounds as one unit.
  • the key supply sequence according to the configuration shown in FIG. 36 is as follows. In the first four rounds: In R1 to R4, two round keys are input and applied in the following sequence. Round R1: Round key K1 and round key K2 Round R2: Round key K3 and round key K4 Round R3: Round key K5 and round key K6 Round R4: Round key K7 and round key K8
  • R5 to R8 enter and apply two round keys in the following sequence.
  • Round R5 Round key K5 and round key K1
  • Round R6 Round key K2 and round key K6
  • Round R7 Round key K7 and round key K3
  • Round R8 Round key K4 and round key K8
  • R9 to R12 Two round keys are input and applied in the following sequence.
  • the key supply sequence shown in FIG. 36 is the same as the key supply sequence shown in FIG. 24 in rounds 1 to 4 and 5 to 8, but is different from round 9 onward.
  • the configuration shown in FIG. 24 is configured to execute key replacement performed by the replacement key schedule unit, that is, key replacement processing with the same settings in units of four rounds, while the configuration shown in FIG. 36 performs the replacement key schedule unit execution. This is because key replacement, that is, key replacement processing is executed with different settings in units of four rounds.
  • the same effect can be obtained by changing the key selection order instead of rearranging the order of the divided keys and inputting them in order to the round function.
  • the round key supply configuration described above with reference to FIG. 36 and the key supply processing sequence shown in FIG. 37 are exactly the same.
  • the key supply sequence according to the configuration shown in FIG. 38 is as follows.
  • R4 to R6 enter and apply two round keys in the following sequence.
  • Round R4 Round key K7 and round key K3
  • Round R5 Round key K8 and round key K1
  • Round R6 Round key K2 and round key K4
  • R7 to R9 enter and apply two round keys in the following sequence.
  • Round R7 Round key K6 and round key K8
  • Round R8 Round key K5 and round key K7
  • Round R9 Round key K3 and round key K1
  • R10 to R12 two round keys are input and applied in the following sequence.
  • Round R10 Round key K4 and round key K5 Round
  • Round R11 Round key K2 and round key K6 Round
  • Round R12 Round key K8 and round key K7
  • key replacement of the same pattern is repeated every three rounds.
  • the same effect can be obtained by changing the key selection order instead of rearranging the key order and sequentially inputting to the round function.
  • the round key supply configuration described with reference to FIG. 38 and the key supply processing sequence shown in FIG. 39 are exactly the same.
  • the round key supply method of the present disclosure is executed as processing by the replacement key scheduling unit as in the conventional method, the implementation efficiency is high.
  • the length of the secret key K which is the generation source of the round key is 2n-bit
  • two round keys of the keys K1 to K8 obtained by equally dividing the key into eight for each round select.
  • the keys K1 to K8 are divided into two as shown in FIG. K1, K2, K3, K4 K5, K6, K7, K8 Set two groups of these four round keys,
  • the implementation efficiency can be further enhanced in a certain implementation form by adopting a configuration in which key replacement in a predetermined number of rounds, that is, change of the key supply sequence is performed in each of these group units.
  • the replacement key scheduling unit is configured to have two selectors, and in each selector, the above-mentioned four round key groups, ie, K1, K2, K3, K4 K5, K6, K7, K8
  • the configuration is such that selection of an output key from each of these round key groups is performed.
  • two selectors are required to select one from eight as shown in FIG. 40. For example, as shown in FIG. By configuring, as shown in FIG. 41, two small selectors select one from four.
  • the implementation efficiency can be improved by designing the replacement so that a selector with three inputs can be used. Specifically, as shown in FIG. From the (5/4) n-bit secret key K, n / 4-bit round keys K1, K2, K, K4, and K5 are generated, The first selector performs key selection for K1, K2, and K3 and the second selector performs key selection for K3, K4, and K5.
  • An encryption processing apparatus that executes encryption processing according to the above-described embodiment can be mounted on various information processing apparatuses that execute encryption processing. Specifically, PC, TV, recorder, player, communication device, RFID, smart card, sensor network device, dent / battery authentication module, health, medical device, self-supporting network device etc., for example, data processing and communication processing Can be used in various crises to perform cryptographic processing associated with
  • FIG. 43 An exemplary configuration of an IC module 700 as an example of an apparatus that executes the cryptographic processing of the present disclosure is illustrated in FIG.
  • the above-described processing can be executed in, for example, a PC, an IC card, a reader / writer, and various other information processing apparatuses, and the IC module 700 shown in FIG. 43 can be configured in these various devices.
  • a central processing unit (CPU) 701 illustrated in FIG. 43 is a processor that executes start and end of encryption processing, control of data transmission and reception, control of data transfer between respective components, and other various programs.
  • a memory 702 is a ROM (Read-Only-Memory) for storing fixed data such as a program executed by the CPU 701 or operation parameters, a program executed in processing of the CPU 701, and a storage area for parameters appropriately changed in program processing, It consists of RAM (Random Access Memory) etc. which are used as a work area. Further, the memory 702 can be used as a storage area for key data necessary for encryption processing, data to be applied to a conversion table (permutation table) applied to encryption processing, a conversion matrix, and the like.
  • the data storage area is preferably configured as a memory having a tamper resistant structure.
  • the cryptographic processing unit 703 executes cryptographic processing and decryption processing according to the cryptographic processing configuration described above, that is, the common key block cryptographic processing algorithm to which, for example, the generalized Feistel structure or Feistel structure is applied.
  • the encryption processing means is an individual module
  • such an encryption processing module is not provided, for example, an encryption processing program is stored in the ROM, and the CPU 701 reads and executes the ROM storage program. It may be configured to
  • the random number generator 704 executes random number generation processing required for generation of a key required for cryptographic processing and the like.
  • the transmission / reception unit 705 is a data communication processing unit that executes data communication with the outside, and performs data communication with the IC module, such as a reader / writer, and outputs the ciphertext generated in the IC module, or an external reader Execute data input from a device such as a writer.
  • the encryption processing apparatus described in the above-described embodiment is applicable not only to encryption processing that encrypts plaintext as input data, but also to decryption processing that restores ciphertext as input data to plaintext. It is applicable.
  • the configuration described in the above-described embodiment can be applied to the encryption process and the decryption process.
  • An encryption processing unit that divides and inputs configuration bits of data to be processed into data into a plurality of lines, and repeatedly executes data conversion processing in which round functions are applied to data of each line as round operations ,
  • a key scheduling unit for outputting a round key to the round operation execution unit of the encryption processing unit;
  • the key schedule unit A substitution-type key schedule unit that divides a secret key held in advance into a plurality of pieces to generate a plurality of round keys or round key configuration data, The plurality of round keys or the plurality of round keys generated by combining the round key configuration data are output to the round operation execution unit sequentially executed in the encryption processing unit in a setting that does not repeat a predetermined sequence Cryptographic processing unit.
  • the encryption processing device wherein the key schedule unit changes an input sequence of the plurality of round keys to the round operation execution unit in units of a plurality of rounds in the round operation execution unit.
  • the cryptographic processing unit inputs the data divided into the plurality of lines and performs nonlinear conversion processing, an F function execution unit including linear conversion processing, and the output of the F function execution unit.
  • the encryption processing device according to (1) or (2), further including: an operation unit that executes an operation to which the round key is applied.
  • the key scheduling unit divides a secret key held in advance into a plurality of pieces and generates a plurality of round keys having the same number of bits as the round key input to the round operation execution unit. (3) The encryption processing apparatus in any one. (5) The key scheduling unit divides a secret key held in advance into a plurality of pieces and generates a plurality of round key configuration data having a smaller number of bits than the round key input to the round operation execution unit, The encryption processing device according to any one of (1) to (4), wherein a plurality of round key configuration data are connected to generate a round key having the same number of bits as the round key input to the round operation execution unit.
  • the key scheduling unit parallelly outputs a plurality of round keys to be applied in parallel in the round operation execution unit to the round operation execution unit sequentially executed in the encryption processing unit (1) to (5) Cryptographic processing apparatus described in.
  • the encryption processing device according to any one of (1) to (6), wherein the key schedule unit has one or more selectors that perform selection / supply processing of a key to the round operation execution unit.
  • the key scheduling unit sets a plurality of round keys or a plurality of groups into which the round key configuration data is divided, and performs control processing of a key supply sequence to the round operation execution unit in set groups.
  • the encryption processing device according to any one of (1) to (7)
  • the encryption processing device according to any one of (1) to (8), wherein the key scheduling unit has a selector for each group.
  • the encryption processing unit executes encryption processing for converting plaintext as input data into ciphertext, or decryption processing for converting ciphertext as input data into plaintext (1) to (9)
  • the cryptographic processing device according to any one of the above.
  • the series of processes described in the specification can be performed by hardware, software, or a combined configuration of both.
  • the program recording the processing sequence is installed in memory in a computer built into dedicated hardware and executed, or the program is executed on a general-purpose computer capable of executing various processing. It is possible to install and run.
  • the program can be recorded in advance on a recording medium.
  • the program can be installed from a recording medium to a computer, or can be installed in a recording medium such as a built-in hard disk by receiving a program via a network such as a LAN (Local Area Network) or the Internet.
  • LAN Local Area Network
  • a system is a logical set configuration of a plurality of devices, and the devices of each configuration are not limited to those in the same housing.
  • a cryptographic processing device with high security is realized by supply control of round keys.
  • encryption processing in which data conversion processing in which a round function is applied to data of each line is repeatedly executed as a round operation by dividing configuration bits of data to be data processed into a plurality of lines
  • a key scheduling unit that outputs a round key to the round operation execution unit of the encryption processing unit, and the key scheduling unit divides the secret key held in advance into a plurality of generations to generate a plurality of round keys
  • a plurality of generated round keys are output to the round operation execution unit sequentially executed by the encryption processing unit in a setting that does not become a repetition of a predetermined sequence.

Landscapes

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

Abstract

ラウンド鍵の供給制御による安全性の高い暗号処理装置を実現する。データ処理対象となるデータの構成ビットを複数のラインに分割して入力し、各ラインのデータに対してラウンド関数を適用したデータ変換処理をラウンド演算として繰り返して実行する暗号処理部と、暗号処理部のラウンド演算実行部に対して、ラウンド鍵を出力する鍵スケジュール部を有し、鍵スケジュール部は、予め保持する秘密鍵を複数個に分割して複数のラウンド鍵を生成する置換型鍵スケジュール部であり、暗号処理部において順次実行するラウンド演算実行部に対して、生成した複数のラウンド鍵を一定のシーケンスの繰り返しとならない設定で出力する。本構成により、例えば関連鍵攻撃等に対する耐性の高い安全性の高い暗号処理構成が実現される。

Description

暗号処理装置、および暗号処理方法、並びにプログラム
 本開示は、暗号処理装置、および暗号処理方法、並びにプログラムに関する。さらに詳細には、共通鍵系暗号を実行する暗号処理装置、および暗号処理方法、並びにプログラムに関する。
 情報化社会が発展すると共に、扱う情報を安全に守るための情報セキュリティ技術の重要性が増してきている。情報セキュリティ技術の構成要素の一つとして暗号技術があり、現在では様々な製品やシステムで暗号技術が利用されている。
 暗号処理アルゴリズムには様々なものがあるが、基本的な技術の一つとして、共通鍵ブロック暗号と呼ばれるものがある。共通鍵ブロック暗号では、暗号化用の鍵と復号用の鍵が共通のものとなっている。暗号化処理、復号処理共に、その共通鍵から複数の鍵を生成し、あるブロック単位、例えば64ビット、128ビット、256ビット等のブロックデータ単位でデータ変換処理を繰り返し実行する。
 代表的な共通鍵ブロック暗号のアルゴリズムとしては、過去の米国標準であるDES(Data Encryption Standard)や現在の米国標準であるAES(Advanced Encryption Standard)が知られている。他にも様々な共通鍵ブロック暗号が現在も提案され続けており、2007年にソニー株式会社が提案したCLEFIAも共通鍵ブロック暗号の一つである。
 このような、共通鍵ブロック暗号のアルゴリズムは、主として、入力データの変換を繰り返し実行するラウンド関数実行部を有する暗号処理部と、ラウンド関数部の各ラウンドで適用するラウンド鍵を生成する鍵スケジュール部とによって構成される。鍵スケジュール部は、秘密鍵であるマスター鍵(主鍵)に基づいて、まずビット数を増加させた拡大鍵を生成し、生成した拡大鍵に基づいて、暗号処理部の各ラウンド関数部で適用するラウンド鍵(副鍵)を生成する。
 このようなアルゴリズムを実行する具体的な構造として、線形変換部および非線形変換部を有するラウンド関数を繰り返し実行する構造が知られている。例えば代表的な構造にFeistel構造や一般化Feistel構造がある。Feistel構造や一般化Feistel構造は、データ変換関数としてのF関数を含むラウンド関数の単純な繰り返しにより、平文を暗号文に変換する構造を持つ。F関数においては、線形変換処理および非線形変換処理が実行される。なお、Feistel構造を適用した暗号処理について記載した文献としては、例えば非特許文献1、非特許文献2がある。
 一方、暗号アルゴリズムの解析や、鍵の解析などを不正に実行して暗号解読を行う手法も様々な新しい手法が出現している。その1つとして、例えば、関連鍵攻撃がある。このような攻撃に対応するために様々な対策も考えられているものの、十分なものとは言えないのが現状である。
K. Nyberg, "Generalized Feistel networks", ASIACRYPT 96, SpringerVerlag, 1996, pp.91--104. Yuliang Zheng, Tsutomu Matsumoto, Hideki Imai: On the Construction of Block Ciphers Provably Secure and Not Relying on Any Unproved Hypotheses. CRYPTO 1989: 461-480 Sony Corporation, "The 128-bit Blockcipher CLEFIA Algorithm Specification", Revision 1.0, 2007. 青木,市川,神田,松井,盛合,中嶋,時田,"128ビットブロック暗号 Camellia アルゴリズム仕様書",第 2.0版, 2001 GOST 28147-89: Encryption, Decryption, and Message Authentication Code (MAC) Algorithms, RFC 5830. 3rd Generation Partnership Project, Technical Specification Group Services and System Aspects, 3G Security, Specification of the 3GPP Confidentiality and Integrity Algorithms; Document 2: KASUMI Specification, V9.0.0, 2009
 本開示は、例えば上述の状況に鑑みてなされたものであり、関連鍵攻撃等の不正な暗号解読を困難化し、安全性の高い暗号処理装置、および暗号処理方法、並びにプログラムを提供することを目的とする。
 本開示の第1の側面は、
 データ処理対象となるデータの構成ビットを複数のラインに分割して入力し、各ラインのデータに対してラウンド関数を適用したデータ変換処理をラウンド演算として繰り返して実行する暗号処理部と、
 前記暗号処理部のラウンド演算実行部に対して、ラウンド鍵を出力する鍵スケジュール部を有し、
 前記鍵スケジュール部は、
 予め保持する秘密鍵を複数個に分割して複数のラウンド鍵またはラウンド鍵構成データを生成する置換型鍵スケジュール部であり、
 前記暗号処理部において順次実行するラウンド演算実行部に対して、前記複数のラウンド鍵、または前記ラウンド鍵構成データを結合して生成した複数のラウンド鍵を一定のシーケンスの繰り返しとならない設定で出力する暗号処理装置にある。
 さらに、本開示の暗号処理装置の一実施態様において、前記鍵スケジュール部は、前記ラウンド演算実行部に対する前記複数のラウンド鍵の入力シーケンスを、前記ラウンド演算実行部における複数ラウンド単位で変更する。
 さらに、本開示の暗号処理装置の一実施態様において、前記暗号処理部は、前記複数のラインに分割されたデータを入力して非線形変換処理と、線形変換処理を含むF関数実行部と、前記F関数実行部の出力に対して、前記ラウンド鍵を適用した演算を実行する演算部を有する。
 さらに、本開示の暗号処理装置の一実施態様において、前記鍵スケジュール部は、予め保持する秘密鍵を複数個に分割して前記ラウンド演算実行部に入力するラウンド鍵と同一のビット数を持つ複数のラウンド鍵を生成する。
 さらに、本開示の暗号処理装置の一実施態様において、前記鍵スケジュール部は、予め保持する秘密鍵を複数個に分割して前記ラウンド演算実行部に入力するラウンド鍵より少ないビット数を持つ複数のラウンド鍵構成データを生成し、前記複数のラウンド鍵構成データを複数連結して前記ラウンド演算実行部に入力するラウンド鍵と同一ビット数のラウンド鍵を生成する。
 さらに、本開示の暗号処理装置の一実施態様において、前記鍵スケジュール部は、前記暗号処理部において順次実行するラウンド演算実行部に対して、ラウンド演算実行部において並列適用する複数のラウンド鍵を並列出力する。
 さらに、本開示の暗号処理装置の一実施態様において、前記鍵スケジュール部は、前記ラウンド演算実行部に対する鍵の選択供給処理を行う1以上のセレクタを有する。
 さらに、本開示の暗号処理装置の一実施態様において、前記鍵スケジュール部は、前記複数のラウンド鍵または前記ラウンド鍵構成データを区分した複数のグループを設定し、設定したグループ単位で、前記ラウンド演算実行部に対する鍵供給シーケンスの制御処理を行う。
 さらに、本開示の暗号処理装置の一実施態様において、前記鍵スケジュール部は、前記グループ単位のセレクタを有する。
 さらに、本開示の暗号処理装置の一実施態様において、前記暗号処理部は、入力データとしての平文を暗号文に変換する暗号化処理、または、入力データとしての暗号文を平文に変換する復号処理を実行する。
 さらに、本開示の第2の側面は、
 暗号処理装置において実行する暗号処理方法であり、
 暗号処理部が、データ処理対象となるデータの構成ビットを複数のラインに分割して入力し、各ラインのデータに対してラウンド関数を適用したデータ変換処理をラウンド演算として繰り返して実行する暗号処理ステップと、
 鍵スケジュール部が、前記暗号処理部のラウンド演算実行部に対して、ラウンド鍵を出力する鍵スケジューリングステップを実行し、
 前記鍵スケジュール部は、
 予め保持する秘密鍵を複数個に分割して複数のラウンド鍵またはラウンド鍵構成データを生成する置換型鍵スケジュール部であり、
 前記暗号処理部において順次実行するラウンド演算実行部に対して、前記複数のラウンド鍵、または前記ラウンド鍵構成データを結合して生成した複数のラウンド鍵を一定のシーケンスの繰り返しとならない設定で出力する暗号処理方法にある。
 さらに、本開示の第3の側面は、
 暗号処理装置において暗号処理を実行させるプログラムであり、
 暗号処理部に、データ処理対象となるデータの構成ビットを複数のラインに分割して入力し、各ラインのデータに対してラウンド関数を適用したデータ変換処理をラウンド演算として繰り返して実行させる暗号処理ステップと、
 鍵スケジュール部に、前記暗号処理部のラウンド演算実行部に対して、ラウンド鍵を出力する鍵スケジューリングステップを実行させ、
 前記鍵スケジュール部は、予め保持する秘密鍵を複数個に分割して複数のラウンド鍵またはラウンド鍵構成データを生成する置換型鍵スケジュール部であり、
 前記鍵スケジュール部に、前記暗号処理部において順次実行するラウンド演算実行部に対して、前記複数のラウンド鍵、または前記ラウンド鍵構成データを結合して生成した複数のラウンド鍵を一定のシーケンスの繰り返しとならない設定で出力させるプログラムにある
 なお、本開示のプログラムは、例えば、様々なプログラム・コードを実行可能な情報処理装置やコンピュータ・システムに対して例えば記憶媒体によって提供されるプログラムである。このようなプログラムを情報処理装置やコンピュータ・システム上のプログラム実行部で実行することでプログラムに応じた処理が実現される。
 本開示のさらに他の目的、特徴や利点は、後述する本発明の実施例や添付する図面に基づくより詳細な説明によって明らかになるであろう。なお、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。
 本開示の一実施例によれば、ラウンド鍵の供給制御により安全性の高い暗号処理装置が実現される。
 具体的には、データ処理対象となるデータの構成ビットを複数のラインに分割して入力し、各ラインのデータに対してラウンド関数を適用したデータ変換処理をラウンド演算として繰り返して実行する暗号処理部と、暗号処理部のラウンド演算実行部に対して、ラウンド鍵を出力する鍵スケジュール部を有し、鍵スケジュール部は、予め保持する秘密鍵を複数個に分割して複数のラウンド鍵を生成する置換型鍵スケジュール部であり、暗号処理部において順次実行するラウンド演算実行部に対して、生成した複数のラウンド鍵を一定のシーケンスの繰り返しとならない設定で出力する。本構成により、例えば関連鍵攻撃等に対する耐性の高い安全性の高い暗号処理構成が実現される。
kビットの鍵長に対応したnビット共通鍵ブロック暗号アルゴリズムを説明する図である。 図1に示すkビットの鍵長に対応したnビット共通鍵ブロック暗号アルゴリズムに対応する復号アルゴリズムを説明する図である。 鍵スケジュール部とデータ暗号化部の関係について説明する図である。 データ暗号化部の構成例について説明する図である。 SPN構造のラウンド関数の例について説明する図である。 Feistel構造のラウンド関数の一例について説明する図である。 拡張Feistel構造の一例について説明する図である。 拡張Feistel構造の一例について説明する図である。 非線形変換部の構成例について説明する図である。 線形変換処理部の構成例について説明する図である。 鍵スケジュール部(拡大鍵生成部)について説明する図である。 鍵スケジュール部(拡大鍵生成部)について説明する図である。 ブロック暗号GOSTの構成例について説明する図である。 GOSTのデータ構造であるFeistel構造について説明する図である。 任意の秘密鍵差分Δを与えることのできる攻撃について説明する図である。 置換型鍵スケジュール部を持つ場合に、各ラウンド鍵差分Δは秘密鍵差分Δをm-bit毎に分割したものとなることを説明する図である。 平文差分として(d,d)を与えることでF関数への入力差分が0となることについて説明する図である。 type-2一般化Feistel構造の例について説明する図である。 F関数の後で排他的論理和を取る構成例について説明する図である。 F関数の後で排他的論理和を取る構成例について説明する図である。 秘密鍵Kが2n-bitの場合(n/2)-bit毎に4等分し、4ラウンド毎に入れ替えながら供給する構成例について説明する図である。 秘密鍵Kを(n/4)-bit毎に8等分し、それらを4ラウンド毎に入れ替えながら、(n/4)-bitのものを2つずつ供給していく構成例について説明する図である。 秘密鍵Kの長さが4n-bitの場合、(n/2)-bit毎に8等分し、8ラウンド毎に入れ替えながら供給していく構成例について説明する図である。 秘密鍵Kが2n-bitの場合、(n/4)-bit毎に8等分し、4ラウンド毎に入れ替えながら(n/4)-bitのものを2つずつ供給していく構成例について説明する図である。 秘密鍵を(n/4)-bit毎8等分した中で、4つを左側のF関数へのラウンド鍵RKr,0に用いるものとし、残りの4つを右側のF関数へのラウンド鍵RKr,1に用いる構成例を示す図である。 4系列一般化Feistel構造におけるcyclic shiftをround permutationに変更したモデル(4系列一般化Feistel構造+)について説明する図である。 4系列一般化Feistel構造に対して、図25と同様の入れ替え手法を適用した例を説明する図である。 秘密鍵が(5n/4)-bitであり、1ラウンドに必要なラウンド鍵が(n/2)-bitのときの鍵スケジュール部の構成法を示す図である。 ラウンド鍵を単純に順番に入れる構成例を説明する図である。 ラウンド鍵を単純に順番に入れる構成例を説明する図である。 分割数dとしたd系列一般化Feistel構造をもつn-bitブロック暗号における1ラウンド辺りのラウンド鍵の利用構成について説明する図である。 秘密鍵がn-bitの場合に、n-bit秘密鍵を4等分したn/4-bitのラウンド鍵を生成して各ラウンドに2つずつ入力する構成例を説明する図である。 秘密鍵が(5/4)n-bitの場合において、n-bit秘密鍵を5等分したn/4-bitのラウンド鍵を生成して各ラウンドに2つずつ入力する構成例を説明する図である。 秘密鍵が(5/4)n-bitの場合において、n-bit秘密鍵を5等分したn/4-bitのラウンド鍵を生成して各ラウンドに2つずつ入力する構成例を説明する図である。 複数ラウンド単位で鍵の選択順序を変更する構成例を説明する図である。 4ラウンド単位で実行する置換処理を毎回異なる態様に設定したラウンド鍵供給構成例を説明する図である。 複数ラウンド単位で鍵の選択順序を変更する構成例を説明する図である。 3ラウンド毎に置換を行い3ラウンドに6個の鍵を利用する構成例を説明する図である。 複数ラウンド単位で鍵の選択順序を変更する構成例を説明する図である。 ラウンド鍵供給構成としてのセレクタについて説明する図である。 ラウンド鍵供給構成としてのセレクタについて説明する図である。 ラウンド鍵供給構成としてのセレクタについて説明する図である。 暗号処理装置としてのICモジュール700の構成例を示す図である。
 以下、図面を参照しながら本開示に係る暗号処理装置、および暗号処理方法、並びにプログラムの詳細について説明する。説明は、以下の項目に従って行う。
 1.共通鍵ブロック暗号の概要
 2.鍵スケジュール部の構成と処理の概要について
 3.鍵スケジュール部に対する攻撃とこれまでの対策例について
 4.関連鍵攻撃に対し安全性を得られる置換型鍵スケジュール部について
 5.鍵置換型鍵スケジュール部の様々な構成例(バリエーション)について
 6.暗号処理装置の構成例について
 7.本開示の構成のまとめ
  [1.共通鍵ブロック暗号の概要]
 まず、共通鍵ブロック暗号の概要について説明する。
  (1-1.共通鍵ブロック暗号)
 ここでは共通鍵ブロック暗号(以下ではブロック暗号)としては以下に定義するものを指すものとする。
 ブロック暗号は入力として平文Pと鍵Kを取り、暗号文Cを出力する。平文と暗号文のビット長をブロックサイズと呼びここではnで著す。nは任意の整数値を取りうるが、通常、ブロック暗号アルゴリズムごとに、あらかじめひとつに決められている値である。ブロック長がnのブロック暗号のことをnビットブロック暗号と呼ぶこともある。
 鍵のビット長をkで表す。鍵は任意の整数値を取りうる。共通鍵ブロック暗号アルゴリズムは1つまたは複数の鍵サイズに対応することになる。例えば、あるブロック暗号アルゴリズムAはブロックサイズn=128であり、k=128またはk=192またはk=256の鍵サイズに対応するという構成もありうるものとする。
 平文P:nビット
 暗号文C:nビット
 鍵K:kビット
 図1にkビットの鍵長に対応したnビット共通鍵ブロック暗号アルゴリズムEの図を示す。
 暗号化アルゴリズムEに対応する復号アルゴリズムDは暗号化アルゴリズムEの逆関数E-1と定義でき、入力として暗号文Cと鍵Kを受け取り,平文Pを出力する。図2に図1に示した暗号アルゴリズムEに対応する復号アルゴリズムDの図を示す。
  (1-2.内部構成)
 ブロック暗号は2つの部分に分けて考えることができる。ひとつは鍵Kを入力とし、
ある定められたステップによりビット長を拡大してできた拡大鍵K'(ビット長k')を出力する「鍵スケジュール部」と、もうひとつは平文Pと鍵スケジュール部から拡大された鍵K'を受け取ってデータの変換を行い暗号文Cを出力する「データ暗号化部」である。
 2つの部分の関係は図3に示される。
  (1-3.データ暗号化部)
 以下の実施例において用いるデータ暗号化部はラウンド関数という処理単位に分割できるものとする。ラウンド関数は入力としての2つのデータを受け取り、内部で処理を施したのち、1つのデータを出力する。入力データの一方は暗号化途中のnビットデータであり、あるラウンドにおけるラウンド関数の出力が次のラウンドの入力として供給される構成となる。もう1つの入力データは鍵スケジュールから出力された拡大鍵の一部のデータが用いられ、この鍵データのことをラウンド鍵と呼ぶものとする。またラウンド関数の総数は総ラウンド数と呼ばれ、暗号アルゴリズムごとにあらかじめ定められている値である。ここでは総ラウンド数をRで表す。
 データ暗号化部の入力側から見て1ラウンド目の入力データをXとし、i番目のラウンド関数に入力されるデータをX、ラウンド鍵をRKとすると、データ暗号化部全体は図4のように示される。
  (1-4.ラウンド関数)
 ブロック暗号アルゴリズムによってラウンド関数はさまざまな形態をとりうる。ラウンド関数はその暗号アルゴリズムが採用する構造(structure)によって分類できる。代表的な構造としてここではSPN構造、Feistel構造、拡張Feistel構造を例示する。
  (ア)SPN構造ラウンド関数
 nビットの入力データすべてに対して、ラウンド鍵との排他的論理和演算、非線形変換、線形変換処理などが適用される構成。各演算の順番は特に決まっていない。図5にSPN構造のラウンド関数の例を示す。
  (イ)Feistel構造
 nビットの入力データはn/2ビットの2つのデータに分割される。うち片方のデータとラウンド鍵を入力として持つ関数(F関数)が適用され、出力がもう片方のデータに排他的論理和される。そののちデータの左右を入れ替えたものを出力データとする。F関数の内部構成にもさまざまなタイプのものがあるが、基本的にはSPN構造同様にラウンド鍵データとの排他的論理和演算、非線形演算、線形変換の組み合わせで実現される。図6にFeistel構造のラウンド関数の一例を示す。
  (ウ)拡張Feistel構造
 拡張Feistel構造はFeistel構造ではデータ分割数が2であったものを,3以上に分割する形に拡張したものである。分割数をdとすると、dによってさまざまな拡張Feistel構造を定義することができる。F関数の入出力のサイズが相対的に小さくなるため、小型実装に向いているとされる。図7にd=4でかつ、ひとつのラウンド内に2つのF関数が並列に適用される場合の拡張Feistel構造の一例を示す。また,図8にd=8でかつ,ひとつのラウンド内に1つのF関数が適用される場合の拡張Feistel構造の一例を示す。
  (エ)d系列一般化Feistel構造
 分割数dが偶数である拡張Feistel構造において、ひとつのラウンド内にd/2個のF関数が並列に適用される。
 また、ラウンド間の置換としてcyclic shiftを用いる。
 なお、図7、18、20は4系列一般化Feistel構造を示す。
  (1-5.非線形変換処理部)
 非線形変換処理部は、入力されるデータのサイズが大きくなると実装上のコストが高くなる傾向がある。それを回避するために対象データを複数の単位に分割し、それぞれに対して非線形変換を施す構成がとられることが多い。例えば入力サイズをmsビットとして、それらをsビットずつのm個のデータに分割して、それぞれに対してsビット入出力を持つ非線形変換を行う構成である。それらのsビット単位の非線形変換をS-boxと呼ぶものとする。図9に例を示す。
  (1-6.線形変換処理部)
 線形変換処理部はその性質上、行列として定義することが可能である。行列の要素はGF(2)の体の要素やGF(2)の要素など、一般的にはさまざまな表現ができる。図10にmsビット入出力をもち、GF(2)の上で定義されるm×mの行列により定義される線形変換処理部の例を示す。
  [2.鍵スケジュール部の構成と処理の概要について]
 本開示の暗号処理の説明の前に、前提となる構成である鍵スケジュール部の構成と処理の概要について説明する。
 鍵スケジュール部(拡大鍵生成部)は、図11に示すように、k-bitの秘密鍵Kを入力として、ある定められた変換によりk'-bitの拡大鍵(ラウンド鍵)K'を生成する関数である。
 一般的にはk<k'であり、データ暗号化部がラウンド関数と呼ばれる非線形演算の繰り返し処理を行う場合、各ラウンド関数に供給するラウンド鍵をm-bit、ラウンド関数の繰り返し回数をRとしたとき、k'=m×Rとなる。図12に示すような設定である。
 例えば、通鍵ブロック暗号AESにおいては、
 k=128の場合、
 m=128,R=11であるため、
 k'=1408である。
 k=192の場合、
 m=128,R=13であるため、
 k'=1664である。
 鍵スケジュール部には安全性上以下のような特性(特性1~3)が求められる。
 (特性1)等価鍵が存在しないこと
 なお、秘密鍵K0を入力したときの拡大鍵K0'と,秘密鍵K1(≠K0)を入力したときの拡大鍵K1'に対し、K0'=K1'が成り立つとき、K0とK1を等価鍵と呼ぶ。
 (特性2)関連鍵攻撃(related key attack)に対して十分な耐性を持つこと
 一般的な攻撃は、ある固定された秘密鍵上での平文や暗号文間のデータの偏り(差分,線形性など)を利用したものであるのに対し、関連鍵攻撃では複数の秘密鍵上での平文や暗号文間データの偏りを利用するものである。
 例えば、2つの秘密鍵の値は分からないが、秘密鍵の差分については既知であるという仮定のもとで行う攻撃である。
 また、秘密鍵の差分を攻撃者が自由に選べるという強力な仮定を置く攻撃も存在する。この仮定の下でも安全性を達成していることが望ましい。
 例えば、通常の差分攻撃(関連鍵を考慮しない差分攻撃)の場合、攻撃者は未知の秘密鍵Kによって暗号化された複数の平文P,暗号文C(=E(K,P))の組のみを利用して、その未知の秘密鍵Kを導出する。
 しかしながら、関連鍵差分攻撃の場合、攻撃者は未知の秘密鍵Kによって暗号化された複数の平文P,暗号文C(=E(K,P))の組に加えて、その未知の秘密鍵Kに対し、攻撃者が指定した任意の秘密鍵差分ΔKを加えたK(+)ΔKによって暗号化された複数の平文P',暗号文C'(=E(K(+)ΔK,P'))の組も用いて未知の秘密鍵Kを導出する。
 但し、(+)は排他的論理和演算子を表す。
 よって、関連鍵差分攻撃は攻撃者が利用できる情報がより増えているため通常の差分攻撃よりさらに強力な攻撃となる。
 (特性3)スライド攻撃(slide attack)に対し十分な耐性を持つこと
 例えば、秘密鍵K0を入力したときのラウンド鍵をRK,RK,…,RKとし、秘密鍵K1を入力したときのラウンド鍵がRK,RK,…,RKR+1のように、スライドした値を取るとき、安全性が損なわれる可能性がある。
 さらに鍵スケジュール部には実装上以下のような特性(特性4~9)も要求される。
 (特性4)実装が容易であること
 (特性5)秘密鍵から拡大鍵を生成するセットアップ時間が短いこと
 (特性6)on-the-flyで拡大鍵が生成できること
 (特性7)暗号化鍵スケジュール部,復号鍵スケジュール部ができる限り共有可能であること
 (特性8)データ暗号化部,データ復号部とできる限り共有可能であること
 (特性9)秘密鍵長の変更に容易に対応できること
 鍵スケジュール部は安全性、および実装の観点からこれらの特性をバランスよく満たすことが望まれる。
  [3.鍵スケジュール部に対する攻撃とこれまでの対策例について]
 次に、鍵スケジュール部に対する攻撃とこれまでの対策例について説明する。
 鍵スケジュール部は各種の共通鍵ブロック暗号毎に、様々な設計がなされている。
 鍵スケジュール部の安全性、実装性能はデータ暗号化部と深い関連があるが、一般的にデータ暗号化部と同様に安全性と実装性能にはトレードオフがあると考えられている。
 例えば、鍵スケジュール部に複雑な非線形関数を導入している暗号としてCLEFIA(非特許文献3:Sony Corporation, "The 128-bit Blockcipher CLEFIA Algorithm Specification", Revision 1.0, 2007.)、 Camellia(非特許文献4:青木,市川,神田,松井,盛合,中嶋,時田,"128ビットブロック暗号 Camellia アルゴリズム仕様書",第 2.0版, 2001)などが挙げられる。これらは関連鍵攻撃など鍵スケジュール部に起因する攻撃法に対して高い安全性を持つが、実装コストが比較的高く、特にハードウェア実装の際に回路規模が増大してしまうという問題がある。また、実装性能を高めるために比較的シンプルな非線形関数を導入した鍵スケジュール部を持つ暗号としてAESが挙げられるが、AESは関連鍵攻撃に対して脆弱なことが知られている(192/256-bit鍵の場合)。
 さらに実装性能を高める手法として非線形関数を用いずに線形関数のみで構成する手法が挙げられる。その中でも秘密鍵データを複数個に分割し、それらを置換するだけの鍵スケジュール部は、特にハードウェア実装の際に回路がほとんど不要であり、高い実装性能を持つとされる。このような鍵スケジュール部を置換型鍵スケジュール部と呼ぶ。
 置換型鍵スケジュール部は高い実装性能を持つものの、安全性上の問題を抱える方式が多い。
 例えば、図13に示すように、ブロック暗号GOST(非特許文献5:GOST 28147-89: Encryption, Decryption, and Message Authentication Code (MAC) Algorithms, RFC 5830.)の鍵スケジュール部は、4n-bitの秘密鍵Kを(n/2)-bit毎、8つに等分割し、それぞれを順番にラウンド鍵とする構造になっている
 これは、秘密鍵Kに対する一切の演算を行わず、ラウンド毎のセレクタのみで鍵スケジュール部を構成できるため、ハードウェア実装の際に必要な回路が非常に少ないという特長を持つ。
 しかしながら、図14に示すように、GOSTのデータ構造はFeistel構造を取っており、ラウンド鍵を各F関数の前に排他的論理和しているため、関連鍵攻撃に対して脆弱であることが知られており、実際に確率1で攻撃に成功してしまうことが知られている。
  (GOSTへの確率1で成功する関連鍵攻撃)
 秘密鍵K0から得られるラウンド鍵をRK0,RK0,…,RK0とし、秘密鍵K1から得られるラウンド鍵をRK1,RK1,…,RK1とする。このとき、秘密鍵K0と秘密鍵K1の差分を秘密鍵差分Δとし、各ラウンド鍵の差分をラウンド鍵差分Δ,Δ,…,Δとする。
 ここで、図15に示すように、任意の秘密鍵差分Δを与えることのできる攻撃者を想定する。このとき、鍵スケジュール部に複雑な非線形関数を導入しているCLEFIA,Camelliaなどにおいては、各ラウンド鍵差分Δは一意には定まらず、データ暗号化部への攻撃が困難となる。
 しかし、図16に示すように、置換型鍵スケジュール部を持つものでは、各ラウンド鍵差分Δは秘密鍵差分Δをm-bit毎に分割したものとなる。例えばGOSTにおいて,Δ=(d,d,d,d,d,d,d,d)とした場合(Δは4n-bit,dは(n/2)-bitであり,GOSTの場合はn=64のため,それぞれ256-bit,32-bit),全てのラウンド鍵差分Δはdと等しくなる。
 このとき、Feistel構造を取り、各ラウンド(R1,R2,R3・・・)に提供するラウンド鍵を各F関数の前に排他的論理和している場合、図17に示すように、平文差分として(d,d)を与えることでF関数への入力差分が0となる。入力差分が0であるF関数の出力差分はかならず0になるため,次のラウンド関数への入力差分は(d,d)となる。
 同様に全てのラウンド関数において,(d,d)の差分が伝播していくため,暗号文差分が必ず(d,d)となる。
 このため、GOSTに秘密鍵K,平文Pを入力したときに得られる暗号文をCとすると、
 秘密鍵K(+)(d,d,d,d,d,d,d,d),
 平文P(+)(d,d)、
 を入力したときに得られる暗号文C'は確率1でC'=C(+)(d,d)となる。
 このような等式が成り立つ確率を、関連鍵攻撃を用いた識別攻撃の成功確率と呼ぶ。本来、関連鍵攻撃に対し強いとされるブロック暗号はこの確率が十分に小さいことを示す必要がある。
 また、例えば図18に示すようなtype-2一般化Feistel構造と呼ばれる構造においても,置換型鍵スケジュール部を用いて、F関数の前にラウンド鍵を排他的論理和する場合、同様に確率1で遷移する関連鍵攻撃を構成可能である。
 その他の置換型鍵スケジュール部を持つ暗号として、KASUMI(非特許文献6:3rd Generation Partnership Project, Technical Specification Group Services and System Aspects, 3G Security, Specification of the 3GPP Confidentiality and Integrity Algorithms; Document 2: KASUMI Specification, V9.0.0, 2009)が挙げられる。
 しかしながら、KASUMIの鍵スケジュール部も高い実装性能を持つものの、関連鍵攻撃に対して脆弱であることが知られている。
  [4.関連鍵攻撃に対し安全性を得られる置換型鍵スケジュール部について]
 以上のような問題点を鑑み,以下では、実装コストを増大させずに,関連鍵攻撃に対し安全性を得られるような置換型鍵スケジュール部の構成法について説明する。
 本方式はまず秘密鍵Kを複数個に等分し、それぞれを以下の手法にしたがってデータ暗号化部に供給するものとする。
 (手法1)ラウンド鍵挿入位置の変更:ラウンド鍵を従来のF関数の前(例えば図14,図18に示す位置)ではなく、F関数の後で排他的論理和を取る(例えば図19,図20に示す位置)
 (手法2)ラウンド鍵生成置換の変更:データ暗号化部の構造にしたがって,関連鍵攻撃等に対して安全になるような置換法を用いてラウンド鍵を生成する。
 このように鍵スケジュール部を構成することで以下のような効果が得られる。
 (効果1)高い実装性能
 置換型鍵スケジュール部を用いることで従来型同様高い実装性能を持つことが期待される.特にハードウェア実装時の必要回路が少なくできるという利点がある。
 (効果2)ラウンド鍵の挿入位置の変更による安全性向上
 図19や図20に示す構成のように、ラウンド鍵をF関数の前でなく後に排他的論理和することで、置換型鍵スケジュール部を用いたとしても、従来法であるGOSTのような確率1で成功する関連鍵攻撃を防ぐことが可能となる。
 また、実装手法によっては、データ暗号化部の実装性能をさらに向上させることにもつなげられる。
 (効果3)ラウンド鍵の置換法の変更による安全性向上
 従来方式と異なり、分割した秘密鍵を順番に供給するのではなく、関連鍵攻撃耐性を持つように適切に順序を入れ替えて供給する。
 この順序は秘密鍵Kのbit長と分割数、及び、データ暗号化部の構造に関連があり、データ暗号化部の構造毎に鍵スケジュール部を設計する必要がある。
 図19に示す1ラウンドに1つのF関数を実行するFeistel構造においては、1つのラウンド鍵の長さは(n/2)-bitであり、秘密鍵Kが2n-bitの場合には(n/2)-bit毎に4等分し、4ラウンド毎に入れ替えながら供給する。
 図21に示す設定である。
 図21に示すラウンド鍵の供給処理について説明する。
 秘密鍵Kは、2n-bitの鍵データである。
 この2n-bit秘密鍵Kを4等分して4つのラウンド鍵K1,K2,K3,K4を生成する。
 4つのラウンド鍵K1,K2,K3,K4は、(n/2)-bitの鍵データである。
 この4つのラウンド鍵K1,K2,K3,K4を、4ラウンドを1単位として、各単位で異なるシーケンスで利用する。
 図21に示すように、最初の4ラウンド:R1~R4では以下のシーケンスでラウンド鍵K1~K4を入力して適用する。
 ラウンドR1:ラウンド鍵K1
 ラウンドR2:ラウンド鍵K2
 ラウンドR3:ラウンド鍵K3
 ラウンドR4:ラウンド鍵K4
 次の4ラウンド:R5~R8では以下のシーケンスでラウンド鍵K1~K4を入力して適用する。
 ラウンドR5:ラウンド鍵K3
 ラウンドR6:ラウンド鍵K1
 ラウンドR7:ラウンド鍵K4
 ラウンドR8:ラウンド鍵K2
 次の4ラウンド:R9~R12では以下のシーケンスでラウンド鍵K1~K4を入力して適用する。
 ラウンドR9 :ラウンド鍵K4
 ラウンドR10:ラウンド鍵K3
 ラウンドR11:ラウンド鍵K2
 ラウンドR12:ラウンド鍵K1
 このように、4ラウンドを1単位として、各単位で異なるラウンド鍵入力シーケンスを適用する。
 また、ラウンド鍵の長さよりも小さい単位で分割することも可能であり、2n-bitの秘密鍵Kを(n/4)-bit毎に8等分し、それらを4ラウンド毎に入れ替えながら、(n/4)-bitのものを2つずつ供給していくことも可能である。
 例えば、図22に示す構成である。
 図22に示すラウンド鍵の供給処理について説明する。
 秘密鍵Kは、2n-bitの鍵データである。
 この2n-bit秘密鍵Kを8等分して8つの鍵K1,K2,K3,K4,K5,K6,K7,K8を生成する。
 8つの鍵K1~K8は、(n/4)-bitの鍵データである。
 この8つの鍵K1~K8から選択した2つの鍵の連結データからなる(n/2)-bitラウンド鍵:KxKyを、4ラウンドを1単位として、各単位で異なるシーケンスで利用する。
 図22に示すように、最初の4ラウンド:R1~R4では以下のシーケンスで鍵データK1~K8を連結したラウンド鍵KxKyを入力して適用する。
 ラウンドR1:ラウンド鍵K1K2
 ラウンドR2:ラウンド鍵K3K4
 ラウンドR3:ラウンド鍵K5K6
 ラウンドR4:ラウンド鍵K7K8
 次の4ラウンド:R5~R8では以下のシーケンスで鍵データK1~K8を連結したラウンド鍵KxKyを入力して適用する。
 ラウンドR5:ラウンド鍵K3K4
 ラウンドR6:ラウンド鍵K2K7
 ラウンドR7:ラウンド鍵K1K6
 ラウンドR8:ラウンド鍵K5K8
 次の4ラウンド:R9~R12では以下のシーケンスで鍵データK1~K8を連結したラウンド鍵KxKyを入力して適用する。
 ラウンドR9 :ラウンド鍵K2K7
 ラウンドR10:ラウンド鍵K4K5
 ラウンドR11:ラウンド鍵K3K6
 ラウンドR12:ラウンド鍵K1K8
 このように、4ラウンドを1単位として、各単位で異なるラウンド鍵入力シーケンスを適用する。
 また、秘密鍵Kの長さが4n-bitの場合には(n/2)-bit毎に8等分し、8ラウンド毎に入れ替えながら供給していく。
 例えば図23に示す構成である。
 図23に示すラウンド鍵の供給処理について説明する。
 秘密鍵Kは、4n-bitの鍵データである。
 この4n-bit秘密鍵Kを8等分して8つのラウンド鍵K1,K2,K3,K4,K5,K6,K7,K8を生成する。
 8つのラウンド鍵K1~K8は、(n/2)-bitの鍵データである。
 この8つのラウンド鍵K1~K8を、8ラウンドを1単位として、各単位で異なるシーケンスで利用する。
 図23に示すように、最初の8ラウンド:R1~R8では以下のシーケンスでラウンド鍵を入力して適用する。
 ラウンドR1:ラウンド鍵K1
 ラウンドR2:ラウンド鍵K2
 ラウンドR3:ラウンド鍵K3
 ラウンドR4:ラウンド鍵K4
 ラウンドR5:ラウンド鍵K5
 ラウンドR6:ラウンド鍵K6
 ラウンドR7:ラウンド鍵K7
 ラウンドR8:ラウンド鍵K8
 次の8ラウンド:R9~R16では以下のシーケンスでラウンド鍵を入力して適用する。
 ラウンドR9 :ラウンド鍵K2
 ラウンドR10:ラウンド鍵K5
 ラウンドR11:ラウンド鍵K1
 ラウンドR12:ラウンド鍵K4
 ラウンドR13:ラウンド鍵K8
 ラウンドR14:ラウンド鍵K6
 ラウンドR15:ラウンド鍵K3
 ラウンドR16:ラウンド鍵K7
 このように、8ラウンドを1単位として、各単位で異なるラウンド鍵入力シーケンスを適用する。
 また、図20に示すような、1ラウンドに2つのF関数を同時実行する4系列一般化Feistel構造において、ラウンド鍵は(n/4)-bitのものが2つとなる。秘密鍵Kが2n-bitの場合には(n/4)-bit毎に8等分し、4ラウンド毎に入れ替えながら(n/4)-bitのものを2つずつ供給していく。
 例えば図24に示す構成である。
 図24に示すラウンド鍵の供給処理について説明する。
 秘密鍵Kは、2n-bitの鍵データである。
 この2n-bit秘密鍵Kを8等分して8つのラウンド鍵K1,K2,K3,K4,K5,K6,K7,K8を生成する。
 8つのラウンド鍵K1~K8は、(n/4)-bitの鍵データである。
 この8つのラウンド鍵K1~K8から選択した2つのラウンド鍵を、4ラウンドを1単位として、各単位で異なるシーケンスで利用する。
 図24に示すように、最初の4ラウンド:R1~R4では以下のシーケンスで2つのラウンド鍵を入力して適用する。
 ラウンドR1:ラウンド鍵K1と、ラウンド鍵K2
 ラウンドR2:ラウンド鍵K3と、ラウンド鍵K4
 ラウンドR3:ラウンド鍵K5と、ラウンド鍵K6
 ラウンドR4:ラウンド鍵K7と、ラウンド鍵K8
 次の4ラウンド:R5~R8では以下のシーケンスで2つのラウンド鍵を入力して適用する。
 ラウンドR5:ラウンド鍵K5と、ラウンド鍵K1
 ラウンドR6:ラウンド鍵K2と、ラウンド鍵K6
 ラウンドR7:ラウンド鍵K7と、ラウンド鍵K3
 ラウンドR8:ラウンド鍵K4と、ラウンド鍵K8
 次の4ラウンド:R9~R12では以下のシーケンスで2つのラウンド鍵を入力して適用する。
 ラウンドR9 :ラウンド鍵K7と、ラウンド鍵K5
 ラウンドR10:ラウンド鍵K1と、ラウンド鍵K3
 ラウンドR11:ラウンド鍵K4と、ラウンド鍵K2
 ラウンドR12:ラウンド鍵K6と、ラウンド鍵K8
 このように、4ラウンドを1単位として、各単位で異なるラウンド鍵入力シーケンスを適用する。
 また、実装効率をさらに高めた手法として、(n/4)-bit毎8等分した中で、4つを左側のF関数へのラウンド鍵RKr,0に用いるものとし、残りの4つを右側のF関数へのラウンド鍵RKr,1に用いるものとする。
 例えば図25に示す構成である。
 図25に示すラウンド鍵の供給処理について説明する。
 秘密鍵Kは、2n-bitの鍵データである。
 この2n-bit秘密鍵Kを8等分して8つのラウンド鍵K1,K2,K3,K4,K5,K6,K7,K8を生成する。
 8つのラウンド鍵K1~K8は、(n/4)-bitの鍵データである。
 この8つのラウンド鍵K1~K8から選択した2つのラウンド鍵を、4ラウンドを1単位として、各単位で異なるシーケンスで利用する。
 この例では、K1~K4のラウンド鍵を4系列Feistel構造における各ラウンドの左側のF関数に適用し、K5~K8のラウンド鍵を4系列Feistel構造における各ラウンドの右側のF関数に適用する。
 図25に示すように、最初の4ラウンド:R1~R4では以下のシーケンスで2つのラウンド鍵を入力して適用する。
 ラウンドR1:ラウンド鍵K1と、ラウンド鍵K5
 ラウンドR2:ラウンド鍵K2と、ラウンド鍵K6
 ラウンドR3:ラウンド鍵K3と、ラウンド鍵K7
 ラウンドR4:ラウンド鍵K7と、ラウンド鍵K8
 次の4ラウンド:R5~R8では以下のシーケンスで2つのラウンド鍵を入力して適用する。
 ラウンドR5:ラウンド鍵K2と、ラウンド鍵K5
 ラウンドR6:ラウンド鍵K4と、ラウンド鍵K8
 ラウンドR7:ラウンド鍵K1と、ラウンド鍵K6
 ラウンドR8:ラウンド鍵K3と、ラウンド鍵K7
 次の4ラウンド:R9~R12では以下のシーケンスで2つのラウンド鍵を入力して適用する。
 ラウンドR9 :ラウンド鍵K4と、ラウンド鍵K5
 ラウンドR10:ラウンド鍵K3と、ラウンド鍵K7
 ラウンドR11:ラウンド鍵K2と、ラウンド鍵K8
 ラウンドR12:ラウンド鍵K1と、ラウンド鍵K6
 このように、4ラウンドを1単位として、各単位で異なるラウンド鍵入力シーケンスを適用する。
 この図25に示す構成では、ラウンド鍵K1~K8の8つの鍵の入力順を4ラウンド単位で全て入れ替えるのではなく、4つ毎、すなわち、
 ラウンド鍵:K1~K4、
 ラウンド鍵:K5~K8、
 これらの4つのラウンド鍵単位で入力順の入れ替えを行う。
 この構成によって、置換型鍵スケジュール部に必要となるセレクタのコストをさらに削減することが可能になる。
 また、例えば、図26に示すような4系列一般化Feistel構造におけるcyclic shiftをround permutationに変更したモデル(4系列一般化Feistel+とする)に対しても,本方式による鍵スケジュール部が有効である。
 図26に示すような4系列一般化Feistel構造におけるcyclic shiftをround permutationに変更したモデル(4系列一般化Feistel+)につい説明する。
 図26に示す構成は、d-lineの一般化Feistel構造において、nビット入力データをn/dビット毎d個に分割しそれぞれF関数処理,排他的論理和処理を行う構成を基本構成とし、ラウンド鍵との演算は、F関数の出力に対して実行する構成である。
 このとき、
 F関数に入力されるデータ系列をF関数入力側データ系列,
 排他的論理和されるデータ系列を排他的論理和側データ系列、
 とする。
 各系列(各ライン)において転送されるn/dビットデータ各々について、さらにd/2個に再分割する(この際の分割は等分割でなくても良い)。
 各系列(各ライン)各々でd/2個に再分割されたデータを次のルールにしたがって分配する。
 (1)F関数入力側データ系列は必ず次のラウンド関数の排他的論理和側データ系列に分配する
 (2)排他的論理和側データ系列は必ず次のラウンド関数のF関数入力側データ系列に分配する
 (3)各d/2個に分割されたデータ系列はd/2箇所の次のラウンド関数のデータ系列にそれぞれ重複なく分配する
 このように分配した後、各d/2個に分割されたデータをそれぞれ1つのデータに結合する。
 これを必要回数繰り返す。
 このcyclic shiftをround permutationに変更したモデル(4系列一般化Feistel+)に対しても,本方式による鍵スケジュール部が有効である。
 具体的には、例えば、図25と同様の入れ替え手法である図27に示す構造が適している。
 すなわち、秘密鍵を(n/4)-bit毎8等分した中で、4つを左側のF関数へのラウンド鍵RKr,0に用いるものとし、残りの4つを右側のF関数へのラウンド鍵RKr,1に用いる構成である。
 図27に示すラウンド鍵の供給処理について説明する。
 秘密鍵Kは、2n-bitの鍵データである。
 この2n-bit秘密鍵Kを8等分して8つのラウンド鍵K1,K2,K3,K4,K5,K6,K7,K8を生成する。
 8つのラウンド鍵K1~K8は、(n/4)-bitの鍵データである。
 この8つのラウンド鍵K1~K8から選択した2つのラウンド鍵を、4ラウンドを1単位として、各単位で異なるシーケンスで利用する。
 この例では、K1~K8のラウンド鍵から選択した2つのラウンド鍵を、cyclic shiftをround permutationに変更した4系列一般化Feistel+構造における各ラウンドの2つのF関数に適用する。
 図27に示すように、最初の4ラウンド:R1~R4では以下のシーケンスで2つのラウンド鍵を入力して適用する。
 ラウンドR1:ラウンド鍵K1と、ラウンド鍵K5
 ラウンドR2:ラウンド鍵K2と、ラウンド鍵K6
 ラウンドR3:ラウンド鍵K3と、ラウンド鍵K7
 ラウンドR4:ラウンド鍵K7と、ラウンド鍵K8
 次の4ラウンド:R5~R8では以下のシーケンスで2つのラウンド鍵を入力して適用する。
 ラウンドR5:ラウンド鍵K2と、ラウンド鍵K5
 ラウンドR6:ラウンド鍵K4と、ラウンド鍵K8
 ラウンドR7:ラウンド鍵K1と、ラウンド鍵K6
 ラウンドR8:ラウンド鍵K3と、ラウンド鍵K7
 次の4ラウンド:R9~R12では以下のシーケンスで2つのラウンド鍵を入力して適用する。
 ラウンドR9 :ラウンド鍵K4と、ラウンド鍵K5
 ラウンドR10:ラウンド鍵K3と、ラウンド鍵K7
 ラウンドR11:ラウンド鍵K2と、ラウンド鍵K8
 ラウンドR12:ラウンド鍵K1と、ラウンド鍵K6
 このように、4ラウンドを1単位として、各単位で異なるラウンド鍵入力シーケンスを適用する。
 次に、秘密鍵のbit長が1ラウンドに必要なラウンド鍵のbit長の整数倍でない場合の置換型鍵スケジュール部の構成例を示す。
 例えば、秘密鍵が(5n/4)-bitであり、1ラウンドに必要なラウンド鍵が(n/2)-bitのときの鍵スケジュール部の構成法を図28に示す。
 この構成では、初めに1ラウンドに必要なラウンド鍵のbit長の整数倍になるように置換と拡張を行う。その後は順番に供給していく構造を取る。
 図28に示すラウンド鍵の供給処理について説明する。
 秘密鍵Kは、(5/4)n-bitの鍵データである。
 まず、置換型鍵スケジュール部は、この(5/4)n-bitの鍵データに基づいて、ラウンド鍵のbit長に相当する5つのラウンド鍵K1,K2,K3,K4,K5を生成する。
 このラウンド鍵K1~K5から選択した2つのラウンド鍵を各ラウンドに適用するラウンド鍵として入力して2つのF関数に適用する。
 図28に示すように、最初の5ラウンド:R1~R5では以下のシーケンスで2つのラウンド鍵を入力して適用する。
 ラウンドR1:ラウンド鍵K3と、ラウンド鍵K4
 ラウンドR2:ラウンド鍵K1と、ラウンド鍵K2
 ラウンドR3:ラウンド鍵K3と、ラウンド鍵K4
 ラウンドR4:ラウンド鍵K5と、ラウンド鍵K5
 ラウンドR5:ラウンド鍵K1と、ラウンド鍵K2
 次の5ラウンド:R6~R10、その後の5ラウンド:R11~R15でも同様のシーケンスで2つのラウンド鍵を入力して適用する。
 上述の「(効果3)ラウンド鍵の置換法の変更による安全性向上」の効果について詳細に説明を行う。
 まず、差分確率,active F関数、最小active F関数数の定義を行う。
 差分攻撃は、ある入力差分からある出力差分に高い確率で伝播するようなものを利用して攻撃する。つまり、安全性を考える際にはどのような入力差分、出力差分の組を考えても、高い確率で伝播するようなものが存在しないことを示す必要がある。
 関連鍵差分攻撃も同様に、ある入力差分とある秘密鍵差分から、ある出力差分に高い確率で伝播するようなものを利用して攻撃する。つまり、安全性を考える際にはどのような入力差分、秘密鍵差分、出力差分の組を考えても高い確率で伝播するようなものが存在しないことを示す必要がある。このような、ある入力差分がある出力差分に伝播する確率、及び、ある入力差分とある秘密鍵差分がある出力差分に伝播する確率を差分確率と定義する。前述した通り、GOSTではこの差分確率が1となるものが存在する。
 このような差分確率は、非ゼロの入力差分が与えられた非線形関数(F関数)でのみ低下することが知られている。この非ゼロの入力差分が与えられた非線形関数(F関数)をactive F関数と定義する。active F関数の個数は差分攻撃に対する安全性と密接に関係しており、ある入力差分に対して、多くのactive F関数が得られるのであれば、十分に安全だと考えることができる。
 active F関数の数は、入力差分を一つ定めれば決めることができる。以上より、差分攻撃に対する安全性を考える際にはどのような入力差分を与えたとしても十分に多くのactive F関数が得られるということを示せばよいということが分かる。このような各入力差分に対するactive F関数の個数の最小値を最小active F関数数と定義する。
 例えば図20に示すような、ラウンド鍵をF関数の出力側に排他的論理和を取る4系列一般化Feistel構造において、図29に示すようにラウンド鍵を単純に順番に入れる従来法を採用した際の、関連鍵差分を考慮したラウンド数と最小active F関数数の対応を以下の(表1)に示す。
Figure JPOXMLDOC01-appb-T000001
 この方式の場合、例えば関連鍵差分攻撃に対する安全性を保証するために必要なactive F関数の個数が7個であるような暗号では、少なくとも28ラウンドが必要になることが分かる。
 例えば図20に示すような4系列一般化Feistel構造に、図24に示すような本開示に従った処理、すなわち、置換型鍵スケジュール部において、所定のラウンド単位で、入力鍵シーケンスを変更する処理を行う構成に対して、関連鍵差分を考慮したラウンド数と最小active F関数数の対応を(表2)に示す。
Figure JPOXMLDOC01-appb-T000002
 上記の表2では、例えば関連鍵差分攻撃に対する安全性を保証するために必要なactive F関数の個数が7個であるような暗号では、少なくとも15ラウンドが必要になることが分かる。
 先の表1では、関連鍵差分攻撃に対する安全性を保証するために必要なactive F関数の個数が7個であるような暗号では、少なくとも28ラウンドが必要になる。
 本開示に従った処理、すなわち、置換型鍵スケジュール部において、所定のラウンド単位で、入力鍵シーケンスを変更する処理を行う構成とすることで、従来法と比べて13ラウンド減らせることが分かる。
 このように、本開示に従った処理、すなわち、置換型鍵スケジュール部において、所定のラウンド単位で、入力鍵シーケンスを変更する処理を行う構成とすることで、このような鍵入れ替えを実行しない従来法より多くのactive F関数の個数を保証できることが分かる。
 同様に、図26に示すような、4系列一般化Feistel構造におけるcyclic shiftをround permutationに変更したモデル4系列一般化Feistel+構造について考察する。
 この構造に対して、ラウンド鍵を単純に順番に入れる従来法(図30)を採用した際の、関連鍵差分を考慮したラウンド数と最小active F関数数の対応は、前記の(表1)と同じ値を取る。
 この方式の場合、例えば関連鍵差分攻撃に対する安全性を保証するために必要なactive F関数の個数が7個であるような暗号では、少なくとも28ラウンドが必要になることが分かる。
 また、図26に示すような、4系列一般化Feistel+構造に対して、図24に示すような本発明による鍵スケジュール部の構成とした場合において、関連鍵差分を考慮した際のラウンド数と最小active F関数数の対応を、以下の(表3)に示す。
Figure JPOXMLDOC01-appb-T000003
 上記の表3では、例えば関連鍵差分攻撃に対する安全性を保証するために必要なactive F関数の個数が7個であるような暗号では、少なくとも15ラウンドが必要になることが分かる。
 先の表1では、関連鍵差分攻撃に対する安全性を保証するために必要なactive F関数の個数が7個であるような暗号では、少なくとも28ラウンドが必要になる。
 本開示に従った処理、すなわち、置換型鍵スケジュール部において、所定のラウンド単位で、入力鍵シーケンスを変更する処理を行う構成とすることで、従来法と比べて13ラウンド減らせることが分かる。
 このように、本開示に従った処理、すなわち、置換型鍵スケジュール部において、所定のラウンド単位で、入力鍵シーケンスを変更する処理を行う構成とすることで、このような鍵入れ替えを実行しない従来法より多くのactive F関数の個数を保証でき、安全性の高い暗号処理構成を少ないラウンド数で実現することが可能となる。
  [5.鍵置換型鍵スケジュール部の様々な構成例(バリエーション)について]
 次に、鍵置換型鍵スケジュール部の様々な構成例(バリエーション)について説明する。
 分割数dとしたd系列一般化Feistel構造をもつn-bitブロック暗号においては、図31に示すように、一般に、1ラウンド辺り、(n/d)-bitのラウンド鍵を(d/2)個、利用する。
 従って、1ラウンド辺り、合計で、
 (n/d)×(d/2)
 =(n/2)-bitのラウンド鍵データが必要となる。
 例えば、先に説明した図18に示すような4系列一般化Feistel構造(d=4)を適用する場合、ラウンド鍵の入力処理としては、
 各ラウンド単位で、(n/4)-bitのラウンド鍵を2つずつ入力する必要がある。
 ラウンド鍵の生成元となる秘密鍵の長さに応じて以下のようなラウンド鍵の生成、入力が実行される。
 秘密鍵がn-bitの場合には、例えば図32に示すように、n-bit秘密鍵を4等分したn/4-bitのラウンド鍵を生成して各ラウンドに2つずつ入力する。
 秘密鍵が(5/4)n-bitの場合には、例えば図33、図34に示すように、n-bit秘密鍵を5等分したn/4-bitのラウンド鍵を生成して各ラウンドに2つずつ入力する。
 例えば、図32に示すように秘密鍵n-bitを4等分した4つのラウンド鍵K1,K2,K3,K4を利用する構成では、2ラウンド毎に鍵置換を行う、すなわち、2ラウンド毎に鍵供給シーケンスを変更する。
 図32に示すラウンド鍵の供給処理について説明する。
 秘密鍵Kは、n-bitの鍵データである。
 このn-bit秘密鍵Kを4等分して4つのラウンド鍵K1,K2,K3,K4を生成する。
 4つのラウンド鍵K1,K2,K3,K4は、(n/4)-bitの鍵データである。
 この4つのラウンド鍵K1,K2,K3,K4を、4ラウンドを1単位として、各単位で異なるシーケンスで利用する。
 図21に示すように、最初の2ラウンド:R1~R2では以下のシーケンスで2つのラウンド鍵K1~K4を入力して適用する。
 ラウンドR1:ラウンド鍵K1と、ラウンド鍵K2
 ラウンドR2:ラウンド鍵K3と、ラウンド鍵K4
 次の2ラウンド:R3~R4では以下のシーケンスでラウンド鍵K1~K4を入力して適用する。
 ラウンドR3:ラウンド鍵K3と、ラウンド鍵K1
 ラウンドR4:ラウンド鍵K4と、ラウンド鍵K2
 次の2ラウンド:R5~R6では以下のシーケンスでラウンド鍵K1~K4を入力して適用する。
 ラウンドR5:ラウンド鍵K4と、ラウンド鍵K3
 ラウンドR6:ラウンド鍵K2と、ラウンド鍵K1
 次の2ラウンド:R7~R8では以下のシーケンスでラウンド鍵K1~K4を入力して適用する。
 ラウンドR7:ラウンド鍵K2と、ラウンド鍵K4
 ラウンドR8:ラウンド鍵K1と、ラウンド鍵K3
 次の2ラウンド:R9~R10では以下のシーケンスでラウンド鍵K1~K4を入力して適用する。
 ラウンドR9 :ラウンド鍵K1と、ラウンド鍵K2
 ラウンドR10:ラウンド鍵K3と、ラウンド鍵K4
 また、図33に示すように秘密鍵(5/4)n-bitを5等分した5つのラウンド鍵K1,K2,K3,K4,K5を利用する構成では、これらの5つの鍵K1~K5の、5つの鍵選択後に鍵置換を行うため、5ラウンドに2回の鍵置換を行う。すなわち、5ラウンド毎に2回、鍵供給シーケンスを変更する。
 図33に示すラウンド鍵の供給処理について説明する。
 秘密鍵Kは、(5/4)n-bitの鍵データである。
 まず、置換型鍵スケジュール部は、この(5/4)n-bitの鍵データに基づいて、ラウンド鍵のbit長に相当する5つのラウンド鍵K1,K2,K3,K4,K5を生成する。
 このラウンド鍵K1~K5から選択した2つのラウンド鍵を各ラウンドに適用するラウンド鍵として入力して2つのF関数に適用する。
 図33に示すように、最初の5ラウンド:R1~R5では以下のシーケンスで2つのラウンド鍵を入力して適用する。
 ラウンドR1:ラウンド鍵K1と、ラウンド鍵K2
 ラウンドR2:ラウンド鍵K3と、ラウンド鍵K4
 ラウンドR3:ラウンド鍵K5と、ラウンド鍵K5
 ラウンドR4:ラウンド鍵K2と、ラウンド鍵K3
 ラウンドR5:ラウンド鍵K3と、ラウンド鍵K4
 次の5ラウンド:R6~R10でも同様のシーケンスで2つのラウンド鍵を入力して適用する。
 なお、この図33に示す鍵供給処理構成における鍵の供給シーケンスは、結果として、先に説明した図28と同様となる。
 すなわち、いずれも、K1,K2,K3,K4,K5,K5,K5,K1,K2,K3・・・この順番で鍵の供給が行われる。
 このように、置換型鍵スケジュール部の鍵供給処理において、例えばmラウンドにm'(>1)回の鍵置換が必要な設定では、2回目以降の鍵置換を行わず、鍵の選択順序を変更する処理を行う構成としてもよい。
 例えば、図33に示す鍵供給処理シーケンスと、図34に示す鍵供給処理シーケンスは、全く同じとなる。
 すなわち、最初の5ラウンド:R1~R5では以下のシーケンスで2つのラウンド鍵を入力して適用する。
 ラウンドR1:ラウンド鍵K1と、ラウンド鍵K2
 ラウンドR2:ラウンド鍵K3と、ラウンド鍵K4
 ラウンドR3:ラウンド鍵K5と、ラウンド鍵K5
 ラウンドR4:ラウンド鍵K2と、ラウンド鍵K3
 ラウンドR5:ラウンド鍵K3と、ラウンド鍵K4
 次の5ラウンド:R6~R10でも同様のシーケンスで2つのラウンド鍵を入力して適用する。
 また、鍵置換処理として、分割した鍵の供給順番を並び替えて、順にラウンド関数に入力していくのではなく、複数ラウンド単位で鍵の選択順序を変更することでも全く同様の効果が得られる。例えば、先に図24を参照して説明したラウンド鍵供給構成と、図35に示す鍵供給処理シーケンスは、全く同じとなる。
 すなわち、最初の4ラウンド:R1~R4では以下のシーケンスで2つのラウンド鍵を入力して適用する。
 ラウンドR1:ラウンド鍵K1と、ラウンド鍵K2
 ラウンドR2:ラウンド鍵K3と、ラウンド鍵K4
 ラウンドR3:ラウンド鍵K5と、ラウンド鍵K6
 ラウンドR4:ラウンド鍵K7と、ラウンド鍵K8
 次の4ラウンド:R5~R8では以下のシーケンスで2つのラウンド鍵を入力して適用する。
 ラウンドR5:ラウンド鍵K5と、ラウンド鍵K1
 ラウンドR6:ラウンド鍵K2と、ラウンド鍵K6
 ラウンドR7:ラウンド鍵K7と、ラウンド鍵K3
 ラウンドR8:ラウンド鍵K4と、ラウンド鍵K8
 次の4ラウンド:R9~R12では以下のシーケンスで2つのラウンド鍵を入力して適用する。
 ラウンドR9 :ラウンド鍵K7と、ラウンド鍵K5
 ラウンドR10:ラウンド鍵K1と、ラウンド鍵K3
 ラウンドR11:ラウンド鍵K4と、ラウンド鍵K2
 ラウンドR12:ラウンド鍵K6と、ラウンド鍵K8
 このように、図24を参照して説明したラウンド鍵供給構成と、図35に示す鍵供給処理シーケンスは、4ラウンドを1単位として、各単位で異なるラウンド鍵入力シーケンスを適用した構成となる。
  (複数種類の鍵置換)
 先に図24を参照して説明した構成では、鍵の長さが2n-bitで8等分する場合、4ラウンド毎に同じ態様の鍵置換を行っている。
 これに対して、例えば、図36に示すように、4ラウンド単位で実行する置換処理を毎回異なる態様に設定してもよい。
 図36に示す構成による鍵供給シーケンスは以下の通りである。最初の4ラウンド:R1~R4では以下のシーケンスで2つのラウンド鍵を入力して適用する。
 ラウンドR1:ラウンド鍵K1と、ラウンド鍵K2
 ラウンドR2:ラウンド鍵K3と、ラウンド鍵K4
 ラウンドR3:ラウンド鍵K5と、ラウンド鍵K6
 ラウンドR4:ラウンド鍵K7と、ラウンド鍵K8
 次の4ラウンド:R5~R8では以下のシーケンスで2つのラウンド鍵を入力して適用する。
 ラウンドR5:ラウンド鍵K5と、ラウンド鍵K1
 ラウンドR6:ラウンド鍵K2と、ラウンド鍵K6
 ラウンドR7:ラウンド鍵K7と、ラウンド鍵K3
 ラウンドR8:ラウンド鍵K4と、ラウンド鍵K8
 次の4ラウンド:R9~R12では以下のシーケンスで2つのラウンド鍵を入力して適用する。
 ラウンドR9 :ラウンド鍵K8と、ラウンド鍵K5
 ラウンドR10:ラウンド鍵K7と、ラウンド鍵K3
 ラウンドR11:ラウンド鍵K1と、ラウンド鍵K2
 ラウンドR12:ラウンド鍵K4と、ラウンド鍵K6
 この図36に示す鍵供給シーケンスは、ラウンド1~4,5~8までは、図24に示す鍵供給シーケンスと同じであるが、ラウンド9以降は異なるシーケンスである。
 図24に示す設定では置換型鍵スケジュール部の実行する鍵置換、すなわち鍵入れ替え処理を4ラウンド単位で同じ設定で実行する構成であるが、図36に示す構成では、置換型鍵スケジュール部の実行する鍵置換、すなわち鍵入れ替え処理を4ラウンド単位で異なる設定で実行しているからである。
 また、分割した鍵の順番を並び替えて、順にラウンド関数に入力していくのではなく、鍵の選択順序を変更することでも全く同様の効果が得られる。例えば、先に図36を参照して説明したラウンド鍵供給構成と、図37に示す鍵供給処理シーケンスは、全く同じとなる。
  (鍵の部分選択)
 上記のように、図24や、図36に示す構成では、4ラウンドに8等分した8個の鍵を1つずつ入力している。
 図38に示すように、3ラウンド毎に置換を行い3ラウンドに6個のみを利用する構成も可能である。
 図38に示す構成による鍵供給シーケンスは以下の通りである。最初の3ラウンド:R1~R3では以下のシーケンスで2つのラウンド鍵を入力して適用する。
 ラウンドR1:ラウンド鍵K1と、ラウンド鍵K2
 ラウンドR2:ラウンド鍵K3と、ラウンド鍵K4
 ラウンドR3:ラウンド鍵K5と、ラウンド鍵K6
 次の3ラウンド:R4~R6では以下のシーケンスで2つのラウンド鍵を入力して適用する。
 ラウンドR4:ラウンド鍵K7と、ラウンド鍵K3
 ラウンドR5:ラウンド鍵K8と、ラウンド鍵K1
 ラウンドR6:ラウンド鍵K2と、ラウンド鍵K4
 次の3ラウンド:R7~R9では以下のシーケンスで2つのラウンド鍵を入力して適用する。
 ラウンドR7:ラウンド鍵K6と、ラウンド鍵K8
 ラウンドR8:ラウンド鍵K5と、ラウンド鍵K7
 ラウンドR9:ラウンド鍵K3と、ラウンド鍵K1
 次の3ラウンド:R10~R12では以下のシーケンスで2つのラウンド鍵を入力して適用する。
 ラウンドR10:ラウンド鍵K4と、ラウンド鍵K5
 ラウンドR11:ラウンド鍵K2と、ラウンド鍵K6
 ラウンドR12:ラウンド鍵K8と、ラウンド鍵K7
 この例では、3ラウンド単位で、同一パターンの鍵置換を繰り返す構成としている。
 また、鍵の順番を並び替えて、順にラウンド関数に入力していくのではなく、鍵の選択順序を変更することでも全く同様の効果が得られる。例えば、図38を参照して説明したラウンド鍵供給構成と、図39に示す鍵供給処理シーケンスは、全く同じとなる。
  (実装効率)
 本開示のラウンド鍵の供給方式は従来方式と同様、置換型鍵スケジュール部による処理として実行するものであるため、実装効率が高い。
 例えば、図40に示すように、ラウンド鍵の生成元となる秘密鍵Kの長さが2n-bitのとき、ラウンド毎に鍵を8等分した鍵K1~K8のうちの2つのラウンド鍵を選択する。
 ここで、先に説明した図27のように鍵K1~K8を2つに区分して、
 K1,K2,K3,K4
 K5,K6,K7,K8
 これらの4つのラウンド鍵のグループを2つ設定し、
 これらの各グループ単位で、所定ラウンド数単位の鍵置換、すなわち鍵供給シーケンスの変更を行う構成とすることで、ある実装形態において実装効率をさらに高めることができる。
 具体的には、図41に示すように、置換型鍵スケジュール部を2つのセレクタを有する構成にして、各セレクタにおいて、上記の4つのラウンド鍵のグループ、すなわち、
 K1,K2,K3,K4
 K5,K6,K7,K8
 これらの各ラウンド鍵のグループからの出力鍵の選択を実行する構成とする。
 先に説明した図24のような鍵スケジュール部を設計すると図40のように8つから1つを選択するセレクタが2つ必要となるが、例えば、図27のように置換型鍵スケジュール部を構成することで図41のように4つから1つを選択する小型のセレクタが2つとなる。
 同様に、(5/4)n-bit鍵を5等分したものを5つ全て置換するのではなく、入力数が3のセレクタを利用できるように置換を設計することで実装効率が上がる。
 具体的には、図42に示すように、
 (5/4)nビットの秘密鍵Kから、n/4ビットのラウンド鍵K1,K2,K,K4,K5を生成し、
 第1のセレクタが、K1,K2,K3を対象とした鍵選択を実行し、第2のセレクタが、K3,K4,K5を対象とした鍵選択を実行する構成である。
  [6.暗号処理装置の構成例について]
 最後に、上述した実施例に従った暗号処理を実行する暗号処理装置の実相例について説明する。
 上述した実施例に従った暗号処理を実行する暗号処理装置は、暗号処理を実行する様々な情報処理装置に搭載可能である。具体的には、PC、TV、レコーダ、プレーヤ、通信機器、さらに、RFID、スマートカード、センサネットワーク機器、デンチ/バッテリー認証モジュール、健康、医療機器、自立型ネットワーク機器等、例えばデータ処理や通信処理に伴う暗号処理を実行する様々な危機において利用可能である。
 本開示の暗号処理を実行する装置の一例としてのICモジュール700の構成例を図43に示す。上述の処理は、例えばPC、ICカード、リーダライタ、その他、様々な情報処理装置において実行可能であり、図43に示すICモジュール700は、これら様々な機器に構成することが可能である。
 図43に示すCPU(Central processing Unit)701は、暗号処理の開始や、終了、データの送受信の制御、各構成部間のデータ転送制御、その他の各種プログラムを実行するプロセッサである。メモリ702は、CPU701が実行するプログラム、あるいは演算パラメータなどの固定データを格納するROM(Read-Only-Memory)、CPU701の処理において実行されるプログラム、およびプログラム処理において適宜変化するパラメータの格納エリア、ワーク領域として使用されるRAM(Random Access Memory)等からなる。また、メモリ702は暗号処理に必要な鍵データや、暗号処理において適用する変換テーブル(置換表)や変換行列に適用するデータ等の格納領域として使用可能である。なおデータ格納領域は、耐タンパ構造を持つメモリとして構成されることが好ましい。
 暗号処理部703は、上記において説明した暗号処理構成、すなわち、例えば一般化Feistel構造や、Feistel構造を適用した共通鍵ブロック暗号処理アルゴリズムに従った暗号処理、復号処理を実行する。
 なお、ここでは、暗号処理手段を個別モジュールとした例を示したが、このような独立した暗号処理モジュールを設けず、例えば暗号処理プログラムをROMに格納し、CPU701がROM格納プログラムを読み出して実行するように構成してもよい。
 乱数発生器704は、暗号処理に必要となる鍵の生成などにおいて必要となる乱数の発生処理を実行する。
 送受信部705は、外部とのデータ通信を実行するデータ通信処理部であり、例えばリーダライタ等、ICモジュールとのデータ通信を実行し、ICモジュール内で生成した暗号文の出力、あるいは外部のリーダライタ等の機器からのデータ入力などを実行する。
 なお、上述した実施例において説明した暗号処理装置は、入力データとしての平文を暗号化する暗号化処理に適用可能であるのみならず、入力データとしての暗号文を平文に復元する復号処理にも適用可能である。
 暗号化処理、復号処理、双方の処理において、上述した実施例において説明した構成を適用することが可能である。
  [7.本開示の構成のまとめ]
 以上、特定の実施例を参照しながら、本開示の実施例について詳解してきた。しかしながら、本開示の要旨を逸脱しない範囲で当業者が実施例の修正や代用を成し得ることは自明である。すなわち、例示という形態で本発明を開示してきたのであり、限定的に解釈されるべきではない。本開示の要旨を判断するためには、特許請求の範囲の欄を参酌すべきである。
 なお、本明細書において開示した技術は、以下のような構成をとることができる。
 (1) データ処理対象となるデータの構成ビットを複数のラインに分割して入力し、各ラインのデータに対してラウンド関数を適用したデータ変換処理をラウンド演算として繰り返して実行する暗号処理部と、
 前記暗号処理部のラウンド演算実行部に対して、ラウンド鍵を出力する鍵スケジュール部を有し、
 前記鍵スケジュール部は、
 予め保持する秘密鍵を複数個に分割して複数のラウンド鍵またはラウンド鍵構成データを生成する置換型鍵スケジュール部であり、
 前記暗号処理部において順次実行するラウンド演算実行部に対して、前記複数のラウンド鍵、または前記ラウンド鍵構成データを結合して生成した複数のラウンド鍵を一定のシーケンスの繰り返しとならない設定で出力する暗号処理装置。
  (2)前記鍵スケジュール部は、前記ラウンド演算実行部に対する前記複数のラウンド鍵の入力シーケンスを、前記ラウンド演算実行部における複数ラウンド単位で変更する前記(1)に記載の暗号処理装置。
 (3)前記暗号処理部は、前記複数のラインに分割されたデータを入力して非線形変換処理と、線形変換処理を含むF関数実行部と、前記F関数実行部の出力に対して、前記ラウンド鍵を適用した演算を実行する演算部を有する前記(1)または(2)に記載の暗号処理装置。
 (4)前記鍵スケジュール部は、予め保持する秘密鍵を複数個に分割して前記ラウンド演算実行部に入力するラウンド鍵と同一のビット数を持つ複数のラウンド鍵を生成する前記(1)~(3)いずれかに記載の暗号処理装置。
 (5)前記鍵スケジュール部は、予め保持する秘密鍵を複数個に分割して前記ラウンド演算実行部に入力するラウンド鍵より少ないビット数を持つ複数のラウンド鍵構成データを生成し、前記複数のラウンド鍵構成データを複数連結して前記ラウンド演算実行部に入力するラウンド鍵と同一ビット数のラウンド鍵を生成する前記(1)~(4)いずれかに記載の暗号処理装置。
 (6)前記鍵スケジュール部は、前記暗号処理部において順次実行するラウンド演算実行部に対して、ラウンド演算実行部において並列適用する複数のラウンド鍵を並列出力する記(1)~(5)いずれかに記載の暗号処理装置。
 (7)前記鍵スケジュール部は、前記ラウンド演算実行部に対する鍵の選択供給処理を行う1以上のセレクタを有する記(1)~(6)いずれかに記載の暗号処理装置。
 (8)前記鍵スケジュール部は、前記複数のラウンド鍵または前記ラウンド鍵構成データを区分した複数のグループを設定し、設定したグループ単位で、前記ラウンド演算実行部に対する鍵供給シーケンスの制御処理を行う記(1)~(7)いずれかに記載の暗号処理装置。
 (9)前記鍵スケジュール部は、前記グループ単位のセレクタを有する記(1)~(8)いずれかに記載の暗号処理装置。
 (10)前記暗号処理部は、入力データとしての平文を暗号文に変換する暗号化処理、または、入力データとしての暗号文を平文に変換する復号処理を実行する記(1)~(9)いずれかに記載の暗号処理装置。
 さらに、上記した装置およびシステムにおいて実行する処理の方法や、処理を実行させるプログラムも本開示の構成に含まれる。
 また、明細書中において説明した一連の処理はハードウェア、またはソフトウェア、あるいは両者の複合構成によって実行することが可能である。ソフトウェアによる処理を実行する場合は、処理シーケンスを記録したプログラムを、専用のハードウェアに組み込まれたコンピュータ内のメモリにインストールして実行させるか、あるいは、各種処理が実行可能な汎用コンピュータにプログラムをインストールして実行させることが可能である。例えば、プログラムは記録媒体に予め記録しておくことができる。記録媒体からコンピュータにインストールする他、LAN(Local Area Network)、インターネットといったネットワークを介してプログラムを受信し、内蔵するハードディスク等の記録媒体にインストールすることができる。
 なお、明細書に記載された各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。また、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。
 上述したように、本開示の一実施例の構成によれば、ラウンド鍵の供給制御により安全性の高い暗号処理装置が実現される。
 具体的には、データ処理対象となるデータの構成ビットを複数のラインに分割して入力し、各ラインのデータに対してラウンド関数を適用したデータ変換処理をラウンド演算として繰り返して実行する暗号処理部と、暗号処理部のラウンド演算実行部に対して、ラウンド鍵を出力する鍵スケジュール部を有し、鍵スケジュール部は、予め保持する秘密鍵を複数個に分割して複数のラウンド鍵を生成する置換型鍵スケジュール部であり、暗号処理部において順次実行するラウンド演算実行部に対して、生成した複数のラウンド鍵を一定のシーケンスの繰り返しとならない設定で出力する。本構成により、例えば関連鍵攻撃等に対する耐性の高い安全性の高い暗号処理構成が実現される。
 700 ICモジュール
 701 CPU(Central processing Unit)
 702 メモリ
 703 暗号処理部
 704 乱数生成部
 705 送受信部

Claims (12)

  1.  データ処理対象となるデータの構成ビットを複数のラインに分割して入力し、各ラインのデータに対してラウンド関数を適用したデータ変換処理をラウンド演算として繰り返して実行する暗号処理部と、
     前記暗号処理部のラウンド演算実行部に対して、ラウンド鍵を出力する鍵スケジュール部を有し、
     前記鍵スケジュール部は、
     予め保持する秘密鍵を複数個に分割して複数のラウンド鍵またはラウンド鍵構成データを生成する置換型鍵スケジュール部であり、
     前記暗号処理部において順次実行するラウンド演算実行部に対して、前記複数のラウンド鍵、または前記ラウンド鍵構成データを結合して生成した複数のラウンド鍵を一定のシーケンスの繰り返しとならない設定で出力する暗号処理装置。
  2.  前記鍵スケジュール部は、
     前記ラウンド演算実行部に対する前記複数のラウンド鍵の入力シーケンスを、前記ラウンド演算実行部における複数ラウンド単位で変更する請求項1に記載の暗号処理装置。
  3.  前記暗号処理部は、
     前記複数のラインに分割されたデータを入力して非線形変換処理と、線形変換処理を含むF関数実行部と、
     前記F関数実行部の出力に対して、前記ラウンド鍵を適用した演算を実行する演算部を有する請求項1に記載の暗号処理装置。
  4.  前記鍵スケジュール部は、
     予め保持する秘密鍵を複数個に分割して前記ラウンド演算実行部に入力するラウンド鍵と同一のビット数を持つ複数のラウンド鍵を生成する請求項1に記載の暗号処理装置。
  5.  前記鍵スケジュール部は、
     予め保持する秘密鍵を複数個に分割して前記ラウンド演算実行部に入力するラウンド鍵より少ないビット数を持つ複数のラウンド鍵構成データを生成し、
     前記複数のラウンド鍵構成データを複数連結して前記ラウンド演算実行部に入力するラウンド鍵と同一ビット数のラウンド鍵を生成する請求項1に記載の暗号処理装置。
  6.  前記鍵スケジュール部は、
     前記暗号処理部において順次実行するラウンド演算実行部に対して、ラウンド演算実行部において並列適用する複数のラウンド鍵を並列出力する請求項1に記載の暗号処理装置。
  7.  前記鍵スケジュール部は、
     前記ラウンド演算実行部に対する鍵の選択供給処理を行う1以上のセレクタを有する請求項1に記載の暗号処理装置。
  8.  前記鍵スケジュール部は、
     前記複数のラウンド鍵または前記ラウンド鍵構成データを区分した複数のグループを設定し、設定したグループ単位で、前記ラウンド演算実行部に対する鍵供給シーケンスの制御処理を行う請求項1に記載の暗号処理装置。
  9.  前記鍵スケジュール部は、前記グループ単位のセレクタを有する請求項8に記載の暗号処理装置。
  10.  前記暗号処理部は、
     入力データとしての平文を暗号文に変換する暗号化処理、または、
     入力データとしての暗号文を平文に変換する復号処理を実行する請求項1に記載の暗号処理装置。
  11.  暗号処理装置において実行する暗号処理方法であり、
     暗号処理部が、データ処理対象となるデータの構成ビットを複数のラインに分割して入力し、各ラインのデータに対してラウンド関数を適用したデータ変換処理をラウンド演算として繰り返して実行する暗号処理ステップと、
     鍵スケジュール部が、前記暗号処理部のラウンド演算実行部に対して、ラウンド鍵を出力する鍵スケジューリングステップを実行し、
     前記鍵スケジュール部は、
     予め保持する秘密鍵を複数個に分割して複数のラウンド鍵またはラウンド鍵構成データを生成する置換型鍵スケジュール部であり、
     前記暗号処理部において順次実行するラウンド演算実行部に対して、前記複数のラウンド鍵、または前記ラウンド鍵構成データを結合して生成した複数のラウンド鍵を一定のシーケンスの繰り返しとならない設定で出力する暗号処理方法。
  12.  暗号処理装置において暗号処理を実行させるプログラムであり、
     暗号処理部に、データ処理対象となるデータの構成ビットを複数のラインに分割して入力し、各ラインのデータに対してラウンド関数を適用したデータ変換処理をラウンド演算として繰り返して実行させる暗号処理ステップと、
     鍵スケジュール部に、前記暗号処理部のラウンド演算実行部に対して、ラウンド鍵を出力する鍵スケジューリングステップを実行させ、
     前記鍵スケジュール部は、予め保持する秘密鍵を複数個に分割して複数のラウンド鍵またはラウンド鍵構成データを生成する置換型鍵スケジュール部であり、
     前記鍵スケジュール部に、前記暗号処理部において順次実行するラウンド演算実行部に対して、前記複数のラウンド鍵、または前記ラウンド鍵構成データを結合して生成した複数のラウンド鍵を一定のシーケンスの繰り返しとならない設定で出力させるプログラム。
PCT/JP2012/053933 2011-03-28 2012-02-20 暗号処理装置、および暗号処理方法、並びにプログラム WO2012132623A1 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
EP12765375.6A EP2693684B1 (en) 2011-03-28 2012-02-20 Encryption processing device, encryption processing method, and programme
BR112013024231A BR112013024231A2 (pt) 2011-03-28 2012-02-20 dispositivo e método de processamento de criptografia, programa, e, dispositivo de processamento de informação
CN201280014184.6A CN103621007A (zh) 2011-03-28 2012-02-20 加密处理装置、加密处理方法和程序
US14/002,462 US9270458B2 (en) 2011-03-28 2012-02-20 Encryption processing device, encryption processing method, and program
RU2013142993/08A RU2013142993A (ru) 2011-03-28 2012-02-20 Устройство обработки шифрования, способ обработки шифрования и программа

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2011069185 2011-03-28
JP2011-069185 2011-03-28
JP2011207705A JP5682527B2 (ja) 2011-03-28 2011-09-22 暗号処理装置、および暗号処理方法、並びにプログラム
JP2011-207705 2011-09-22

Publications (1)

Publication Number Publication Date
WO2012132623A1 true WO2012132623A1 (ja) 2012-10-04

Family

ID=46930384

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2012/053933 WO2012132623A1 (ja) 2011-03-28 2012-02-20 暗号処理装置、および暗号処理方法、並びにプログラム

Country Status (8)

Country Link
US (1) US9270458B2 (ja)
EP (1) EP2693684B1 (ja)
JP (1) JP5682527B2 (ja)
CN (1) CN103621007A (ja)
BR (1) BR112013024231A2 (ja)
RU (1) RU2013142993A (ja)
TW (1) TW201251412A (ja)
WO (1) WO2012132623A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014135687A (ja) * 2013-01-11 2014-07-24 Nippon Telegr & Teleph Corp <Ntt> 安全性強化装置、検証装置、およびプログラム

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101516574B1 (ko) * 2014-02-21 2015-05-04 한국전자통신연구원 형태보존 암호화를 위한 가변길이 블록암호 장치 및 방법
WO2015142765A1 (en) 2014-03-17 2015-09-24 Coinbase, Inc Bitcoin host computer system
US9515818B2 (en) * 2014-09-16 2016-12-06 Apple Inc. Multi-block cryptographic operation
US9735958B2 (en) * 2015-05-19 2017-08-15 Coinbase, Inc. Key ceremony of a security system forming part of a host computer for cryptographic transactions
RU2675435C1 (ru) * 2016-02-25 2018-12-20 Федеральное государственное казенное военное образовательное учреждение высшего образования "Военный учебно-научный центр Военно-Морского Флота "Военно-морская академия имени Адмирала флота Советского Союза Н.Г. Кузнецова" Устройство аппаратурного шифрования и передачи данных в локальных сетях
US20180150836A1 (en) * 2016-11-29 2018-05-31 Ca, Inc. Generating tokens dynamically using payment keys
WO2019003321A1 (ja) * 2017-06-27 2019-01-03 三菱電機株式会社 符号生成装置、符号生成方法および符号生成プログラム
EP3651142A4 (en) * 2017-08-10 2021-03-24 Sony Corporation ENCRYPTION DEVICE, ENCRYPTION METHOD, DECCRYPTION DEVICE, AND DECryption METHOD
SG11202010090RA (en) * 2018-04-17 2020-11-27 Coinbase Inc Offline storage system and method of use
KR102091611B1 (ko) * 2018-06-11 2020-03-20 엘지전자 주식회사 이동단말기
EP3617928B1 (de) * 2018-08-28 2021-01-27 Siemens Aktiengesellschaft Verfahren zum speichern von schlüsseldaten in einem elektronischen bauteil
US11394543B2 (en) 2018-12-13 2022-07-19 Coinbase, Inc. System and method for secure sensitive data storage and recovery
EP4007983A4 (en) 2019-08-01 2023-08-30 Coinbase, Inc. SYSTEMS AND METHODS FOR GENERATING SIGNATURES
WO2021076868A1 (en) * 2019-10-16 2021-04-22 Coinbase, Inc. Systems and methods for re-using cold storage keys
WO2023013470A1 (ja) * 2021-08-03 2023-02-09 Kddi株式会社 暗号化装置、暗号化方法及び暗号化プログラム

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU693719B2 (en) * 1995-09-05 1998-07-02 Mitsubishi Denki Kabushiki Kaisha Data transformation apparatus and data transformation method
US7391865B2 (en) * 1999-09-20 2008-06-24 Security First Corporation Secure data parser method and system
JP4561252B2 (ja) * 2004-09-03 2010-10-13 ソニー株式会社 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
US7881466B2 (en) * 2004-10-28 2011-02-01 Irdeto B.V. Method and system for obfuscating a cryptographic function
JP2007192893A (ja) * 2006-01-17 2007-08-02 Sony Corp 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP2007199156A (ja) 2006-01-24 2007-08-09 Sony Corp 暗号処理装置、暗号処理装置製造装置、および方法、並びにコンピュータ・プログラム
JP4882598B2 (ja) * 2006-07-28 2012-02-22 ソニー株式会社 暗号処理装置、暗号処理アルゴリズム構築方法、および暗号処理方法、並びにコンピュータ・プログラム
JP5055993B2 (ja) * 2006-12-11 2012-10-24 ソニー株式会社 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム

Non-Patent Citations (9)

* Cited by examiner, † Cited by third party
Title
"3rd Generation Partnership Project, Technical Specification Group Services and System Aspects, 3G Security, Specification of the 3GPP Confidentiality and Integrity Algorithms", KASUMI SPECIFICATION, 2009
"GOST 28147-89: Encryption, Decryption, and Message Authentication Code (MAC) Algorithms", RFC 5830
AOKI, ICHIKAWA; KANDA, MATSUI; MORIAI, NAKAJIMA; TOKITA, 128-BIT BLOCK ENCRYPTION CAMELLIA ALGORITHM SPECIFICATION, 2001
K. NYBERG: "ASIACRYPT 96", 1996, SPRINGERVERLAG, article "Generalized Feistel Networks", pages: 91 - 104
KO, Y. ET AL.: "Related Key Differential Attacks on 27 Rounds of XTEA and Full-Round GOST", LECTURE NOTES IN COMPUTER SCIENCE, vol. 3017, 28 July 2004 (2004-07-28), pages 299 - 316, XP019007570 *
See also references of EP2693684A4
SHIBUTANI, K. ET AL.: "Piccolo: An Ultra- Lightweight Blockcipher", LECTURE NOTES IN COMPUTER SCIENCE, vol. 6917, 27 September 2011 (2011-09-27), pages 342 - 357, XP019166866 *
THE 128-BIT BLOCKCIPHER CLEFIA ALGORITHM SPECIFICATION, 2007
YULIANG ZHENG; TSUTOMU MATSUMOTO; HIDEKI IMAI: "On the Construction of Block Ciphers Provably Secure and Not Relying on Any Unproved Hypotheses", CRYPTO, 1989, pages 461 - 480

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014135687A (ja) * 2013-01-11 2014-07-24 Nippon Telegr & Teleph Corp <Ntt> 安全性強化装置、検証装置、およびプログラム

Also Published As

Publication number Publication date
CN103621007A (zh) 2014-03-05
EP2693684A4 (en) 2015-03-25
JP2012215816A (ja) 2012-11-08
EP2693684A1 (en) 2014-02-05
US20130343546A1 (en) 2013-12-26
TW201251412A (en) 2012-12-16
RU2013142993A (ru) 2015-03-27
EP2693684B1 (en) 2018-11-07
US9270458B2 (en) 2016-02-23
BR112013024231A2 (pt) 2016-12-20
JP5682527B2 (ja) 2015-03-11

Similar Documents

Publication Publication Date Title
WO2012132623A1 (ja) 暗号処理装置、および暗号処理方法、並びにプログラム
US8165288B2 (en) Cryptographic processing apparatus and cryptographic processing method, and computer program
US7092525B2 (en) Cryptographic system with enhanced encryption function and cipher key for data encryption standard
US8577023B2 (en) Encryption processing method, apparatus, and computer program utilizing different types of S-boxes
JP5682525B2 (ja) 暗号処理装置、および暗号処理方法、並びにプログラム
JP2008058830A (ja) データ変換装置、およびデータ変換方法、並びにコンピュータ・プログラム
WO2008026625A1 (fr) Dispositif de codage, procédé de codage et programme informatique
TWI595460B (zh) Data processing device, information processing device, data processing method and program
WO2011105367A1 (ja) ブロック暗号化装置、ブロック復号装置、ブロック暗号化方法、ブロック復号方法及びプログラム
Reyad et al. Key-based enhancement of data encryption standard for text security
WO2012105352A1 (ja) ブロック暗号化装置、復号装置、暗号化方法、復号方法およびプログラム
JP5680016B2 (ja) 復号処理装置、情報処理装置、および復号処理方法、並びにコンピュータ・プログラム
US20240097880A1 (en) High-speed circuit combining aes and sm4 encryption and decryption
Azzawi Enhancing the encryption process of advanced encryption standard (AES) by using proposed algorithm to generate S-Box
Alenezi et al. On the performance of AES algorithm variants
JP5772934B2 (ja) データ変換装置、およびデータ変換方法、並びにコンピュータ・プログラム
Kumar et al. Implementation of AES algorithm using Verilog
JP5338945B2 (ja) 復号処理装置、情報処理装置、および復号処理方法、並びにコンピュータ・プログラム
Aye Hybrid Cryptographic System for Network Security
WO2008117142A9 (en) Method and system for block cipher encryption

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

Country of ref document: EP

Kind code of ref document: A1

WWE Wipo information: entry into national phase

Ref document number: 2012765375

Country of ref document: EP

WWE Wipo information: entry into national phase

Ref document number: 14002462

Country of ref document: US

ENP Entry into the national phase

Ref document number: 2013142993

Country of ref document: RU

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE

REG Reference to national code

Ref country code: BR

Ref legal event code: B01A

Ref document number: 112013024231

Country of ref document: BR

ENP Entry into the national phase

Ref document number: 112013024231

Country of ref document: BR

Kind code of ref document: A2

Effective date: 20130920