WO2008072455A1 - 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム - Google Patents

暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム Download PDF

Info

Publication number
WO2008072455A1
WO2008072455A1 PCT/JP2007/072551 JP2007072551W WO2008072455A1 WO 2008072455 A1 WO2008072455 A1 WO 2008072455A1 JP 2007072551 W JP2007072551 W JP 2007072551W WO 2008072455 A1 WO2008072455 A1 WO 2008072455A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
round
key
swap
bit
Prior art date
Application number
PCT/JP2007/072551
Other languages
English (en)
French (fr)
Inventor
Taizo Shirai
Kyoji Shibutani
Toru Akishita
Shiho Moriai
Original Assignee
Sony Corporation
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 Sony Corporation filed Critical Sony Corporation
Priority to US12/518,510 priority Critical patent/US8737603B2/en
Priority to CN2007800456671A priority patent/CN101553857B/zh
Priority to EP07832281.5A priority patent/EP2096616A4/en
Publication of WO2008072455A1 publication Critical patent/WO2008072455A1/ja
Priority to HK10103332.9A priority patent/HK1138098A1/xx

Links

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/14Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
    • 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
    • H04L9/003Countermeasures against attacks on cryptographic mechanisms for power analysis, e.g. differential power analysis [DPA] or simple power analysis [SPA]
    • 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/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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy

Definitions

  • the present invention relates to a rice cake processing apparatus, a rice cake processing method, and a computer program. More specifically, the present invention relates to a cryptographic processing apparatus that executes common key block cryptographic processing, a symbol processing method, and a computer program.
  • ⁇ ⁇ treatment is used in various areas.
  • an IC card processing module is embedded in a small device such as an IC card, and data is transmitted / received between the IC card and a reader / writer as a data reading / writing device, and authentication processing or encryption of transmitted / received data is performed.
  • Decoding systems have been put into practical use.
  • a public key cryptosystem in which an encryption key and a decryption key are set as different keys, for example, a public key and a secret key, and an encryption key and a decryption key.
  • a common key and a common key encryption method As a common key and a common key encryption method.
  • the common key cryptosystem also has various algorithms. One of them is the generation of multiple keys based on the common key, and the generated multiple keys are used to generate blocks (64 bits, 128, 25 There is a method of repeatedly executing data conversion processing (such as 6 bits). A typical algorithm that applies such a key generation method and data conversion processing is the common key block cipher method.
  • Typical common key block cipher algorithms include, for example, the DES (Data Encryption Standard) algorithm, which was the US standard cipher in the past, and the current US standard, AE 3 ⁇ 4 (Advanced Encryption Standard) analogism. Be les, o.
  • DES Data Encryption Standard
  • AE 3 ⁇ 4 Advanced Encryption Standard
  • Such an algorithm of the common key block ⁇ is mainly composed of an encryption processing unit having a round function execution unit that repeatedly executes conversion of input data, and each round function unit. And a key schedule unit for generating a round key to be applied in the server.
  • the key schedule module part Based on the master key (primary key), which is a secret key, the key schedule module part first generates an extended key with an increased number of bits. Based on the generated extended key, the key schedule part is applied to each round function part of the cryptographic processing unit. Generate a round key (subkey) to be used.
  • Non-Patent Document 1 and Non-Patent Document 2 are documents that describe cryptographic processing using Feiste fabrication.
  • Non-Patent Document 1 K. Nyberg, Generalized Feistel networks, ASIACRYPT'96, Springer Verlag, 1996, pp.91—104.
  • Non-Patent Document 2 Yuliang Zheng, Tsutomu Matsumoto, Hideki Imai: On the Constructio n of Block and lphers Provably Secure and Not Relying on Any Unproved Hypotheses.CRYPTO 1989: 461-480
  • the present invention has been made in view of the above-mentioned problems, and has improved the difficulty of cryptographic analysis, increased security! /, A cryptographic processing device that realizes a common key block cryptographic algorithm, and cryptographic processing A method, as well as a computer 'program.
  • the first aspect of the present invention provides
  • a cryptographic processing device that executes a common key block cryptographic process
  • An encryption processing unit that performs data conversion processing that repeats a round function multiple rounds;
  • a key schedule unit that generates a round key to be applied to the execution of the round function;
  • a data conversion unit that generates an intermediate key by a secret key conversion process, stores the generated intermediate key, and executes a data conversion process on the register stored data stored in the register, and constitutes the register stored data
  • a cryptographic processing device characterized by comprising: a data conversion unit that repeatedly executes a partial data swap (replacement) process to generate a plurality of different round keys.
  • the data conversion unit sets the register storage data to four parts so as to set two sets of partial data having equality and number of bits. It is characterized in that it is divided into data and a plurality of different round keys are generated by repeatedly executing swap processing of each partial data.
  • the data conversion unit stores the register storage data consisting of 2 m bits
  • the data conversion unit sets the register storage data to four parts so as to set two sets of partial data having equality and number of bits. Executes data conversion processing equivalent to double-swap processing execution section that divides into data and executes swap (replacement) processing of partial data of each set, and reverse processing of multiple repetition processing of the processing of the double-swap execution section And a double-swap reverse process execution unit.
  • the data conversion unit includes: It has a configuration that performs decryption round key generation processing that generates a round key in the reverse order to round key generation in encoding processing, and equals! /,
  • the two sets of partial data having the number of bits are set as described above
  • the double swap processing is performed on the data converted by the decryption round key compatible data conversion unit that generates data by the conversion processing on the register stored data and the decryption round key compatible data conversion unit. And a double swap reverse process execution unit that generates a round key for each round.
  • the data conversion unit stores the register storage data consisting of 2 m bits
  • a swap processing execution unit that divides the data into two partial data shown in (a) to (b) above, and executes swap (replacement) processing of each partial data;
  • the register storage data consisting of 2m bits
  • a sub-swap process execution unit that divides the data into the three partial data shown in (c) to (e) above and executes a swap (replacement) process of the partial data (c) and (d),
  • the configuration is characterized in that the processing of the swap processing execution unit and the sub-swap processing execution unit are alternately executed according to the progress of the round to generate the round key.
  • the data conversion unit is further configured to perform reverse processing of repetitive processing of the swap processing execution unit and the sub-swap processing execution unit. It is characterized by having an inverse conversion processing execution unit that executes corresponding data conversion.
  • the key schedule unit is Furthermore, a constant generation unit that generates different constants for each round, an exclusive OR operation that generates a round key by performing an exclusive OR operation between the constant generated by the constant generation unit and the register storage data. And an arithmetic unit.
  • the constant generation unit may perform a round by a combination of shift data of different small bit number data for each round having a smaller number of bits than the constant to be generated. It is the structure which produces
  • the constant generation unit converts the small bit number data that differs for each round by data conversion on the small bit number data having a smaller number of bits than the constant to be generated. It is a feature that generates different constants for each round by combining the generated shift data of the small bit number data.
  • the second aspect of the present invention provides
  • Cryptographic processing method that executes common key block cipher processing in a cryptographic processing device, and generates multiple round keys to be applied to the execution of multiple round functions executed by the cryptographic processing unit in the key scheduling unit! A round key generation step,
  • the encryption processing unit has a sign processing step for performing data conversion processing for repeating a round function to which the round key is applied by a plurality of rounds.
  • the round key generation step includes:
  • An intermediate key generation unit that generates an intermediate key by converting the secret key and stores it in the register repeatedly executes a swap (replacement) process of the partial data constituting the register storage data stored in the register.
  • the data conversion step sets the register stored data so as to set two sets of partial data having equality! / And the number of bits.
  • This step is characterized in that it is divided into four partial data, and a step of generating a plurality of different round keys by repeatedly executing a swap (replacement) process of each partial data.
  • the data conversion step comprises: storing the register storage data consisting of 2m bits;
  • the data conversion step is configured to store the register storage data so as to set two sets of partial data having equality! / And the number of bits.
  • the data conversion step includes a step of performing a decryption round key generation process for generating a round key in a reverse order to the round key generation in the encryption process.
  • Equal! / Divide the data stored in the register into four partial data so that two sets of partial data with the number of bits are set, and execute the partial data swap (replacement) process.
  • a decryption round key corresponding data conversion step for generating result data obtained by repeating the number of times determined based on the number of rounds defined in advance by a conversion process for the register stored data;
  • the reverse conversion of the double swap process is performed on the data converted in the decryption round key correspondence data conversion step, and each loop is processed. Characterized in that it is a step having a double Noresuwappu inverse process executing step of generating a de round key, a.
  • the data conversion step includes the step of:
  • a swap process execution step that divides the data into two partial data shown in (a) to (b) above and executes swap (replacement) processing of each partial data;
  • the register storage data consisting of 2m bits
  • a sub-swap process execution step that divides the data into the three partial data shown in (c) to (e) above and executes a swap (replacement) process of the partial data in (c) and (d) above,
  • the data conversion step further includes data corresponding to a reverse process of a repetition process of the swap process execution step and the sub-swap process execution step. It has an inverse conversion process execution step for executing conversion.
  • the cryptographic processing method further includes a constant generation step in which a constant generation unit generates a different constant for each round, and an exclusive OR operation.
  • the unit has an exclusive OR operation step of generating a round key by executing an exclusive OR operation between the constant generated by the constant generation unit and the register storage data.
  • the constant generation step is less than a constant to be generated! /, And a combination of shift data of small bit number data different for each round of bit numbers is used for each round. This is a step for generating different constants.
  • the constant generation step includes:! /, A small bit number that differs from round to round, by data conversion on a small bit number data of a bit number! Generate data and shift the generated small bit number data. It is a step that generates different constants for each round depending on the combination of data.
  • the third aspect of the present invention provides
  • a round key generation step for causing the key schedule unit to generate a plurality of round keys to be applied to the execution of a round function of a plurality of rounds executed by the cryptographic processing unit;
  • a sign processing step for causing the cryptographic processing unit to perform a data conversion process in which the round function to which the round key is applied is repeated a plurality of rounds;
  • the round key generation step includes:
  • An intermediate key generation data conversion unit that generates an intermediate key by secret key conversion processing and stores it in a register repeatedly executes a swap (replacement) process of the partial data constituting the register storage data stored in the register.
  • the computer 'program of the present invention is, for example, a storage medium or a communication medium provided in a computer-readable format to a computer' system capable of executing various programs' codes, for example, a CD or FD.
  • a computer program that can be provided via a recording medium such as MO or a communication medium such as a network.
  • system is a logical group configuration of a plurality of devices, and the devices of each configuration are not limited to being in the same casing.
  • the round key generation in the common key block cipher processing is performed.
  • the intermediate key generated by the secret key conversion process is stored in the register, and the round data is generated by repeatedly executing the partial data swapping (replacement) process of the register storage data.
  • register stored data is divided into four partial data so that two sets of partial data having the same number of bits are set, and a plurality of different data are executed by repeatedly executing a step (replacement) process of each partial data.
  • Generate a round key With this configuration, it is possible to effectively replace the bit array of each round key and generate a round key with low correlation, realizing a highly secure cryptographic processing configuration that increases the difficulty of key analysis.
  • FIG. 1 is a diagram showing a basic configuration of a common key block number algorithm.
  • FIG. 2 is a diagram for explaining an internal configuration of a common key block number processing unit E10 shown in FIG.
  • FIG. 3 is a diagram illustrating a detailed configuration of the signature processing unit 12 shown in FIG. 2.
  • FIG. 4 is a diagram for explaining an SPN structure round function as one configuration example of a round function execution unit.
  • FIG. 5 A diagram explaining the Feistel structure as an example of the configuration of the round function execution unit.
  • FIG. 6 is a diagram illustrating a specific example of a nonlinear conversion processing unit.
  • FIG. 7 is a diagram illustrating a specific example of a linear conversion processing unit.
  • FIG. 8 is a diagram for explaining a correspondence between a secret key K, an initial key, a round key, and a final key in encryption processing.
  • FIG. 9 is a diagram for explaining the correspondence between the secret key K, the initial key, the round key, and the final key in the decryption process.
  • FIG. 10 is a diagram for explaining a configuration example of a key schedule unit for executing round key generation processing in encryption processing.
  • FIG. 11 is a diagram illustrating a configuration example of a key schedule unit that executes a round key generation process in a decryption process.
  • FIG. 13 is a diagram illustrating a configuration example of a key schedule unit that executes a round key generation process applicable in the Feiste forgery process.
  • FIG. 14 is a diagram illustrating a configuration example of a key schedule unit that executes processing to which a double swap operation is applied in round key generation processing in encryption processing.
  • FIG. 16 is a diagram for explaining a configuration example of a door that executes a bit position changing process to which an i-bit double swap operation is applied.
  • FIG. 17 is a diagram for explaining a hardware configuration example for executing a bit position changing process to which (r-1) batch i-bit double swap inverse operation is applied.
  • FIG. 18 is a diagram illustrating a configuration example of a key schedule unit that executes processing to which a double swap operation is applied in round key generation processing in decryption processing.
  • FIG. 19 is a diagram for explaining a configuration example of a key schedule unit that executes processing to which double swap operation is applied in round key generation processing in both encryption and decryption. 20] i-bit double swap operation is applied. It is a figure explaining a bit position change process.
  • FIG. 21 A diagram for explaining an example of the configuration of a key schedule part that executes a process using a swap operation and a sub-swap operation in the round key generation process in the No. process. It is a figure explaining a process.
  • FIG. 23 is a diagram for explaining the bit position changing process to which the i-bit sub-swap operation is applied.
  • FIG. 24] is a diagram for explaining the bit position changing process to which the jump operation is applied.
  • FIG. 25] is a diagram illustrating a configuration example of a key schedule unit that executes round key generation processing having a constant generation circuit and an exclusive OR operation unit.
  • FIG. 26 is a diagram illustrating a configuration example of a constant generation circuit.
  • FIG. 27 is a diagram showing a configuration example of an IC module as a cryptographic processing apparatus that executes cryptographic processing according to the present invention.
  • the common key block cipher (hereinafter referred to as block cipher) refers to the one defined below.
  • n is a force that can take an arbitrary integer value. Usually, it is a value that is pre-determined for each block No. algorithm.
  • a block number with a block length of n is sometimes called an n- bit block number.
  • the bit length of the key is represented by k.
  • the key can take any integer value.
  • the common key block ⁇ algorithm will correspond to one or more key sizes.
  • Ciphertext C n bits
  • K k bits
  • Figure 1 shows a diagram of the n-bit common key block number algorithm E corresponding to a k-bit key length.
  • the common key block sign processing unit E10 inputs n-bit plaintext P and k-bit key K, executes a predetermined sign algorithm, and performs n-bit encryption.
  • Fig. 1 shows only the encryption process for generating ciphertext from plaintext.
  • the inverse function of E10 is used for decryption processing to generate plaintext from ciphertext.
  • the same common key block number processing unit E10 can also be applied in the decryption process, and the decryption process can be performed by changing the sequence such as the key input order.
  • Block ciphers can be thought of in two parts.
  • One is a key scheduling unit 11 that takes a key K as input, expands the bit length of the input key K by a predetermined step, and outputs an expanded key K ′ (bit length k ′), and a plaintext P and key scheduling unit.
  • Cryptographic processing unit that receives the expanded key K ′ input from 11, inputs the plaintext P, executes encryption processing using the expanded key K ′, and performs data conversion to generate ciphertext C 12 It is.
  • the encryption processing unit 12 may be applicable to data decryption processing for converting ciphertext back to plain text.
  • the signal processing unit 12 is configured to repeatedly execute data conversion to which the round function execution unit 20 is applied. That is, the cryptographic processing unit 12 can be divided into processing units called round function execution units 20.
  • the round function execution unit 20 receives as input two data, the output X of the previous round function execution unit and the round key RK generated based on the extended key, and internally performs data conversion processing to output data. Output X to the next round function execution part.
  • the input is plaintext or initialization processing data for plaintext.
  • the output of the final round is ciphertext.
  • the signature processing unit 12 has r round function execution units 20 and generates ciphertext by repeating data conversion in r round function execution units. It has become.
  • the number of round function iterations is called the number of rounds. In the example shown, the number of rounds is r It becomes.
  • the input data of each round function execution unit is n-bit data being encrypted, and the output X of the round function in a round is supplied as the input of the next round.
  • the other input data of each round function execution unit is data based on K 'of the extended key output from the key schedule.
  • the key that is input to each round function execution unit and applied to the execution of the round function is called a round key.
  • the round key applied to i-round is indicated as RK.
  • the extended key K ′ is configured, for example, as concatenated data of r round keys RK to RK.
  • the data output from the i-th round function is indicated as X and the round key is indicated as RK.
  • the application sequence of the round key to be applied is set in reverse to the encryption process, and the plaintext is output by inputting the ciphertext to the sign processor 12. It can be set as the structure to do.
  • the round function execution unit 20 of the cryptographic processing unit 12 shown in FIG. 3 can take various forms.
  • the round function can be classified according to the structure adopted by the ⁇ algorithm. As a typical structure,
  • the SPN structure round function execution unit 20a has a so-called SP type configuration in which a nonlinear transformation layer (S layer) and a linear transformation layer (P layer) are connected.
  • S layer nonlinear transformation layer
  • P layer linear transformation layer
  • the operations of exclusive OR operation unit 21 and exclusive OR operation unit 21 that perform exclusive OR (EXOR) operation with the round key on all n-bit input data The result is input, and the nonlinear transformation processing unit 22 that performs nonlinear transformation of the input data.
  • the nonlinear transformation processing unit 22 that inputs the nonlinear transformation processing result in the nonlinear transformation processing unit 22 and executes the linear transformation processing on the input data 23 Consists of.
  • Linear transformation processing of linear transformation processor 23 The result is output in the next round. It will be ciphertext in the final round.
  • the power indicating the processing order of the exclusive OR operation unit 21, the non-linear transformation processing unit 22, and the linear transformation processing unit 23.
  • the order of these processing units is not limited. It is also possible to use a configuration in which processing is performed in another sequence!
  • Feiste forgery divides n-bit input data, which is input from the previous round (input sentence in the first round), into two n / 2-bit data. Execute the process while switching.
  • the round function execution unit 20b having a Feiste structure In the process to which the round function execution unit 20b having a Feiste structure is applied, one n / 2-bit data and the round key are input to the F function unit 30 as shown in the figure. Similar to the SPN structure described above, the F function unit 30 has a so-called SP-type configuration in which a nonlinear conversion layer (S layer) and a linear conversion layer (P layer) are connected!
  • S layer nonlinear conversion layer
  • P layer linear conversion layer
  • this F function output and another n / 2-bit input input from the previous round are input to the exclusive OR operation unit 34, and an exclusive OR operation (EXOR) is executed.
  • the execution result is set as the input of the F function in the next round.
  • the n / 2 bits set for the F function input in the second window shown in the figure are applied to the exclusive OR operation with the F function output in the next round. In this way, Feiste Forgery performs the data conversion process that applies the F function while alternating inputs in each round.
  • the round function execution unit 20 of the encryption processing unit 12 in the common key block cipher is
  • Each of these round function execution units has a so-called SP type configuration in which a nonlinear transformation layer (S layer) and a linear transformation layer (P layer) are connected. That is, it has a non-linear conversion processing unit that executes nonlinear conversion processing and a linear conversion processing unit that executes linear conversion processing.
  • S layer nonlinear transformation layer
  • P layer linear transformation layer
  • the non-linear conversion processing unit 50 is specifically composed of m s-bit input and s-bit output non-linear conversion tables called S-box 51.
  • the bit input data is divided into s bits and input to the corresponding S-box 51 to convert the data.
  • S box 51 for example, nonlinear conversion processing using a conversion table is executed.
  • the processing target data X is divided into a plurality of units and nonlinear transformation is applied to each of them.
  • the input size is ms bits
  • it is divided into m data of s bits, and s bits are input to each of m S boxes (S-b ox) 51, for example, conversion table is applied
  • S-b ox m S boxes
  • conversion table is applied The non-linear conversion process is performed, and m of these S-bit outputs are combined to obtain the ms-bit non-linear conversion result.
  • the linear conversion processing unit inputs an input value, for example, an ms-bit output value that is output data from the S box as an input value X, performs linear conversion on this input, and outputs an ms-bit result. .
  • an input value for example, an ms-bit output value that is output data from the S box as an input value X
  • performs linear conversion on this input and outputs an ms-bit result.
  • a linear conversion process such as an input bit position switching process is performed, and an output value Y of ms bits is output.
  • the input bit position is exchanged by applying a linear transformation matrix to the input.
  • An example of this matrix is the linear transformation matrix shown in Fig. 7.
  • the elements of the linear transformation matrix that are applied to the linear transformation processing unit are extended fields: GF (2 8 ) body elements and GF (2) elements, etc. Configure as applied matrix it can.
  • FIG. 7 shows an example of a configuration of a linear transformation processing unit having an ms-bit input / output and defined by an m ⁇ m matrix defined on GF (2 s ).
  • the common key block cipher is configured to perform cryptographic processing by repeating a round function.
  • a problem with this common key block cipher processing is key leakage due to cryptographic analysis.
  • the ease of key analysis by cryptographic analysis means that the security of the cryptographic processing is low, which is a big problem in practice.
  • the key schedule unit expands the bit length of the input key K and outputs the expanded key K ′ (bit length k ′). Then, a round function to which the round key RK generated based on the extended key is applied is executed.
  • the key schedule unit for example, expands key data of several hundred bits into expanded key data of about several thousand bits, and supplies the expanded key data to a data encryption unit that executes a round function.
  • a round key a part of the expanded key input to the round function of the data encryption unit is called a round key.
  • a round key may be inserted.
  • the key that is inserted (EXOR) before the first round function is the initial key, and after the last round function
  • the key that is EXORed is called the final key.
  • FIG. 8 shows an encryption configuration that executes block cipher with r stages as the number of rounds, and the secret key [K] 111 is input to the encryption key schedule unit 112 to perform bit extension processing, etc.
  • An encrypted extended key 113 including a plurality of round keys is generated by data conversion according to a predetermined algorithm.
  • the data encryption unit 114 is configured to execute a block cipher with r stages as the number of rounds.
  • the round keys RK, RK,. ⁇ ⁇ , RK, RK ⁇ are input in order, and the round function (F function) is actually fied.
  • FIG. 9 shows a decoding processing configuration.
  • the private key [K] 121 is input to the decryption key schedule unit 122 and generates a decryption extended key 123 including a plurality of round keys by data conversion according to a predetermined algorithm such as bit expansion processing.
  • the secret key [K] 121 is the same key as the secret key [K] 111 shown in FIG. 8 applied in the encryption process.
  • the data decryption unit 124 is configured to execute block cipher with r stages as the number of rounds.
  • the round keys ⁇ RK, RK, ⁇ ⁇ ⁇ ⁇ , RK, RK ⁇ are input in order and the round function (F function) is executed.
  • (a) means that even if a round key to be applied in each round is analyzed, security can be improved by making it impossible to recover the original secret key from the round key.
  • (b) if there is some relationship between the data of one round key and another round key, if one round key is successfully analyzed, the other round keys can be estimated. It means that safety is improved by eliminating such relevance.
  • Slide attack detects plaintext / ciphertext in which the data value of the overlapped round function is the same between the original encryption function and the encryption function shifted from it, and uses this This is an attack that efficiently obtains the key of the shifted part.
  • An attack is possible when several rounds of round keys match different secret keys.
  • a common key block No. is k-bit key length with round number r, k-bit key length with round number r
  • the received key matches part of a round key with a key length of k bits.
  • the key length k is the key length of k
  • Fig. 10 to Fig. 10 show typical configuration examples of the key schedule unit when data extracted from data obtained by cyclically shifting intermediate key data obtained from this secret key using nonlinear transformation is used as a round key. This will be described with reference to FIG.
  • FIG. 10 shows a configuration example of a key schedule unit that executes a round key generation process in the encryption process.
  • Figure 11 shows an example of the configuration of the key schedule part that executes the round key generation process in the decryption process.
  • Figure 12 shows an example of the configuration of the key schedule part that executes the round key generation process for both encryption and decryption.
  • the secret key K is k bits.
  • the secret key K is input to the non-linear conversion circuit 201, and non-linear conversion processing is performed to generate n-bit intermediate key data. Let intermediate key data.
  • the intermediate key data L is input and stored in the register RegL 203 via the selector 202.
  • the selector 202 is connected to an i-bit left cyclic shift circuit 211 (r-1) X i-bit right cyclic shift circuit 212, and each cyclic shift processing signal is input to the register RegL203 via the selector 202.
  • I-bit left circular shift processing of data stored in register RegL203 or (r—l) Xi-bit right circular shift processing is executed.
  • I is an integer of 1 or more.
  • the i-bit left cyclic shift circuit 211 performs an i-bit cyclic left shift of the n-bit intermediate key L stored in the register RegL203, and performs the intermediate key shift stored in the register RegL203 as follows. N bits of r round key data ⁇ RK, RK,..., RK, RK ⁇ are generated.
  • RK L ⁇ ((r-2) Xi)
  • RK L ⁇ ((r-1) Xi)
  • [ ⁇ i] represents an i-bit cyclic left shift.
  • RK L is data with a shift amount of zero, equal to the intermediate key L
  • RK L ⁇ i is the data obtained by cyclically shifting i bits to the left with respect to the intermediate key L,
  • RK L KUKU (2Xi) is a data that has been shifted 2Xi bits to the left with respect to the intermediate key L.
  • the k-bit secret key K is input to the non-linear transformation circuit 201 to generate n-bit intermediate key data L, which is directly shifted through the selector 202 without any shift process.
  • the key register RegL203 Store in the key register RegL203.
  • the processing signal of the i-bit left-circular shift circuit 211 is selectively input to the round intermediate key register RegL203 via the selector 202, and the n bits stored in the round intermediate key register Reg L203 It is possible to generate round key data ⁇ RK, RK,..., RK, RK ⁇ sequentially by repeatedly performing i-bit cyclic left shift on the intermediate key data L.
  • the round key generation process in this encryption process is expressed as follows, with intermediate key L, number of rounds r, round key RK in each round, and shift amount i at each round transition.
  • ⁇ i is i-bit left circular shift
  • >>> i is i-bit right circular shift
  • FIG. 11 is a configuration example of a key schedule unit that executes a round key generation process in the decryption process.
  • the nonlinear conversion circuit 201, the selector 202, and the register RegL203 are the same as those shown in FIG. 10, and only the shift circuits 221 and 222 are included. Is different.
  • the shift circuits 221 and 222 in the decoding process are circuits that perform a shift in the reverse direction to the shift circuits 211 and 212 in the sign process,
  • the intermediate key data stored in the register RegL203 is converted into (r-1) Xi bits by the processing of the (r-l) Xi-bit left circular shift circuit 222. Shift left cyclically. Thereafter, by the processing of the i-bit right circular shift circuit 221, the data stored in the register RegL 203 is appropriately cyclically shifted i-bit right for each round key generation for each round. With this processing sequence, round key data is generated in the reverse order of the encryption processing. That is, ⁇ RK, RK,..., RK, RK ⁇ can be sequentially generated.
  • the round key generation process in this decryption process is expressed as the following processing algorithm with the intermediate key L, the number r of rounds, the round key RK in each round, and the shift amount i at the time of each round transition.
  • ⁇ i is i-bit left circular shift
  • >>> i is i-bit right circular shift
  • Figs. 10 and 11 are configurations having both functions S and S, which are configurations for executing round key generation processing at the time of encryption processing and round key generation processing at the time of decryption processing, respectively. Can also be constructed.
  • Figure 12 shows this configuration.
  • the configuration shown in FIG. 12 includes cyclic shift circuits 23;! To 234,
  • bit array is a key analysis by the above-mentioned Slide attack. They are also vulnerable. For example,
  • each round round key generated by the bit shift i.e.,
  • the Feiste fabrication As described above, there is a Feiste fabrication as a typical structure for executing the algorithm of the common key block cipher.
  • the Feiste fabrication has a structure that converts plaintext into ciphertext by simple repetition of the round function (F function) as a data conversion function.
  • F function round function
  • linear transformation processing and nonlinear transformation processing are executed.
  • the size of the round key applied in each round is n / 2 bits with respect to the number of input bits n as encrypted data.
  • the intermediate key data L is generated as n bits, the n / 2 bits of the upper half of the n bits of data are used for odd rounds, and the remaining lower n / 2 bits are used next.
  • the configuration used as a round key is common. In this case, it is necessary to add a circuit to select the upper and lower levels for each round. That is, the configuration of an encryption processing device that uses an n / 2-bit round key (implementation example of encryption / decryption sharing) is, for example, the configuration shown in FIG.
  • the configuration shown in FIG. 13 is similar to the configuration shown in FIG. 12 described above, and includes a nonlinear conversion circuit 201, a selector 202, a register RegL203,
  • i-bit left circular shift circuit 231 i-bit right circular shift circuit 232,
  • a selector 241 is provided.
  • register RegL203 In register RegL203, intermediate key data L (n bits) similar to that described above with reference to FIG. 12 is stored, and in selector 241 of the n-bit data stored in register RegL203,
  • the configuration is such that the upper half n / 2 bits are output as a round key to be applied in odd rounds, and the remaining lower n / 2 bits are output as a round key for the next round.
  • bit position change of the intermediate key data L is performed without performing the cyclic shift process on the intermediate key data L obtained as a result of the nonlinear conversion process based on the secret key K.
  • a round key is generated by executing a double swap process. As each round progresses, double swap processing as bit position change processing is executed repeatedly.
  • FIG. 14 as an embodiment of the ⁇ processing apparatus of the present invention, a configuration of a key schedule unit that executes a round key generation process by applying a double swap process. And explain the process!
  • the configuration shown in FIG. 14 is obtained by replacing the i-bit left-circular shift circuit 211 in the configuration of the key schedule unit that generates the round key by the bit cyclic shift processing described with reference to FIG. (Double Swap) Operation circuit 311 is replaced, and (r-1) X i-bit right circular shift circuit 212 shown in Figure 10 is replaced with (r-1) i-bit double swap (Do uble Swap) inverse operation circuit 312
  • Other configurations are the same as those described with reference to FIG.
  • the processing of the key schedule unit shown in Fig. 14 will be described.
  • the secret key K input to the key schedule part is k bits.
  • the secret key K is input to the non-linear conversion circuit 301 and non-linear conversion processing is performed to generate n-bit intermediate key data. Let intermediate key data.
  • the intermediate key data L is input to and stored in the register RegL303 via the selector 302.
  • the selector 302 is connected to each processing unit of the data conversion unit 310, that is, an i-bit double swap (Double Swap) arithmetic circuit 311, and (r-1) times i-bit double swap (Double Swap) inverse arithmetic circuit 312.
  • a processing signal in each circuit is input to the register RegL303 via the selector 302, and the bit position changing process of the data stored in the register RegL303 is executed.
  • I is an integer of 1 or more.
  • FIG. 15 shows an example of the bit position changing process executed in the i-bit double swap (Double Swap) arithmetic circuit 311.
  • the example in Fig. 15 shows an example of the i-bit double swap processing of 128-bit intermediate key data L! /.
  • A a, a, a, a),
  • a is each bit data of 128 bits.
  • A a [0 ⁇ (i-1)], that is, the first i bits
  • A a [i ⁇ 63], that is, the subsequent bit of the first i bits to the first half termination bit of data
  • A a [64 ⁇ (127— i)], that is, the leading bit from the second half start bit to the last i bit of data
  • the i-bit double swap (Double Swap) arithmetic circuit 311 executes a process of exchanging the constituent bits of the data A divided into four as shown in the output data of Fig. 15 (b). That is,
  • the bit data position changing process is executed.
  • the processing signal power S for executing this DoubleSwap processing is input from the i-bit double-swap arithmetic circuit 311 shown in FIG. 14 to the register RegL303 via the selector 302 shown in FIG.
  • the bit position of the data stored in the register RegL303 is changed, and the round key for the next round is generated. Further, in the next round, for the output (b) shown in FIG. 15, the bit position changing process by the i-bit double swap arithmetic circuit 31 1 shown in FIG. i-bit double swap processing is executed to generate a round key corresponding to the next round.
  • DoubleSwap operation described with reference to Fig. 15 has the following two advantages.
  • the i-bit double swap arithmetic circuit 311 is configured as hardware, for example, bit position conversion for changing each output bit position of the constituent bits of the input bit 321 as shown in FIG. This is possible with circuit 322.
  • the bit position conversion circuit 322 is configured as a circuit having an input / output unit that changes the bit data at each bit position to the position described above with reference to FIG. 16, and generates and outputs an output bit 323.
  • the i-bit double swap (Double Swap) arithmetic circuit 311 is not limited to hardware, and may be configured to be executed by a program as software.
  • Inverse operation circuit 312 is applied to all round operations by the bit position change processing executed in i-bit double swap (Double Swap) operation circuit 311. Execute processing to return to key data L.
  • the first intermediate key data L is used as the first round key, so it can be applied to all r rounds by r—one i-bit double swap (Double Swap) process.
  • the generation of the round key to be completed is completed.
  • the (r—1) i-bit double swap (Double Swap) inverse operation circuit 312 applies the data applied to the round key of the final round generated by this r—one i-bit double swap (Double Swap) process.
  • the bit position changing process is executed to return to the first intermediate key data L.
  • DoubleSwap inverse operation is defined as follows.
  • i-bit double swap (Double Swap) inverse operation circuit 312 executes an i-bit double swap (Double Swap) inverse operation equivalent to (r-1) times. However, it is not necessary to actually perform the inverse operation repeatedly (r-1) times.
  • the i-bit double swap (Double Swap) inverse operation circuit 312 is configured as hardware, for example, an input bit as shown in FIG. This can be realized by the bit position conversion circuit 332 that changes the output bit position of each of the 331 constituent bits.
  • the bit position conversion circuit 332 is the data stored in the register RegL 303 as the round key applied to the final round, that is, the data after (r—1) i-bit double swap (Double Swap) processing.
  • a bit position change process is executed for a certain input bit 331 to return to the bit arrangement of the first intermediate key data L that has not been changed in bit position, and generate an output bit 331.
  • the (r-1) i-bit double swap (Double Swap) inverse operation circuit 312 is not limited to hardware, but can be used as a software program as well as the i-bit double swap (Double Swa P) operation circuit 311. Yotsu It is good also as a structure to execute.
  • the round key is assumed to be 128-bit data, and the processing for the DoubleSwap operation and the inverse operation on the 128-bit data is described. It is also applicable to.
  • the DoubleSwap operation for data of 2m bits (m is an integer greater than or equal to 2) can be defined as follows.
  • A a [0 ⁇ (i-1)], that is, the first i bits
  • the bit data position changing process is executed.
  • i-bit double-swap (Double Swap) inverse operation circuit 312 Do ubleSwap inverse operation executed by 312 is defined as follows. "I-bit double swap (Double Swap) inverse operation definition"
  • Data B obtained by i-bit DoubleSwap inverse operation on 2m bit data A (m is an integer of 2 or more)
  • the i-bit left circular shift circuit 211 in the configuration of the key schedule part that generates the round key by the bit cyclic shift processing described with reference to 10 is replaced with the i-bit double swap arithmetic circuit 311.
  • Figure 10 shows (r—1) X i-bit right circular shift circuit 212 replaced with (r—1) i-bit double swap (Double Swap) inverse operation circuit 312 and applied in encryption.
  • Each round key is generated as follows.
  • the k-bit secret key K input to the key schedule part is input to the non-linear conversion circuit 301, and non-linear conversion processing is performed to generate n-bit intermediate key data L, and the intermediate key data L is selected by the selector 302. Is stored in the register RegL303.
  • the data stored in the first register RegL303 is output as the round key of the first round.
  • the operation is executed, the result is stored in the register RegL303, and the data stored in this register is output as the round key for the next round.
  • the i-bit double swap (Double Swap) operation circuit 311 repeatedly executes double swap (Double Swap) operation on the data stored in the register. In this way, the round keys RK, RK,..., RK, RK to be applied in each round function are generated.
  • (r—1) i-bit double swap (Double Swap) inverse operation circuit 312 performs a doubleSwa on the data stored in register RegL303. The bit position change processing corresponding to the operation corresponding to one r of the P reverse operation is executed, and the execution result is stored in the register RegL303. This data is data having the same bit arrangement as the intermediate key L first input to the register RegL303.
  • This process corresponds to the process of generating the original intermediate key L by an operation equivalent to r—one doubleSwap inverse operation in the (r ⁇ 1) i-bit double swap (Double Swap) inverse operation circuit 312.
  • the last r—one DoubleSwap inverse transform can be implemented as a bit position replacement operation as one function, and the cyclic shift It can be realized with a circuit scale similar to that for performing operations r once. As a result, it is more effective to increase the circuit scale than when using cyclic shift operation. Therefore, a highly secure signature processing configuration in which the bit position is changed to reduce the relevance of each round key is realized.
  • Fig. 18 shows a configuration example of a key schedule unit for executing the round key generation process when the decryption process is executed.
  • the nonlinear conversion circuit 301, the selector 302, and the register RegL303 have the same configuration as that shown in FIG. Double Swap)
  • Arithmetic circuit 311 (r—1) i-bit double swap (Double Swap) inverse operation circuit 321 is set instead of (r—1) i-bit double swap (Double Swap) as shown in Figure 14
  • the reverse operation circuit 312 it has a data conversion unit 320 in which an i-bit double swap operation circuit 322 is set.
  • Other configurations are the same as those described with reference to FIG.
  • the secret key K input to the key schedule part is k bits.
  • the secret key K is input to the non-linear conversion circuit 301 and non-linear conversion processing is performed to generate n-bit intermediate key data. Let intermediate key data.
  • the intermediate key data L is input and stored in the register RegL303 via the selector 302.
  • the selector 302 is connected to an i-bit double swap (Double Swap) inverse operation circuit 321 and (r—1) i-bit double swap (Double Swap) operation circuit 322, and is connected to the register RegL303 via the selector 302. Then, the processing signal in each circuit is input, and the bit position changing process of the data stored in the register RegL303 is executed.
  • I is an integer of 1 or more.
  • r round keys of r rounds used in the sign process are generated and output in the reverse order of the sign process. Therefore, in the key schedule part in the decryption process, first, the intermediate key data L force S stored in the register RegL303 is input to the (r-1) times i-bit double swap (Double Swap) arithmetic circuit 322, and the register Performs the operation equivalent to r—one DoubleSwap operation on the data stored in RegL303. By this processing, a round key applied to the final round at the time of cryptographic processing is generated.
  • This round key is output as the first round key in the decryption process. Further, this round key data is input to the i-bit double swap inverse processing circuit 321.
  • the i-bit double swap (Double Swap) inverse operation circuit 321 executes a process reverse to the process described above with reference to FIG. That is, the bit position changing process is executed using the output shown in FIG. 15B as the input value and the input shown in FIG. 15A as the output value. The processing result is stored in the register RegL303 and used as a round key for the next round. Furthermore, in the next round, the i-bit double swap (Double Swap) inverse operation circuit 321 ⁇ ou ble Swap) is executed on the stored value of the register RegL303, and the bit position is changed.
  • a corresponding round key is generated.
  • the data stored in the register RegL303 for each round is subjected to DoubleSwap inverse operation by the i-bit double swap (Double Swap) inverse operation circuit 321, and described earlier with reference to FIG.
  • the round keys applied to each round function: RK, RK,..., RK, RK can be generated and output in order.
  • i-bit double swap (Double Swap) inverse operation circuit 321 and (r—1) i-bit double swap (Double Swap) operation circuit 322 used in the decoding process are also shown in FIG. As described with reference to FIG. 17, it can be configured by hardware having a bit position conversion circuit, or may be executed by a program as software.
  • This process corresponds to the round key generation process after the second round in the decryption process, and is a round key generation process by executing the DoubleSwap reverse operation in the i-bit double swap (Double Swap) reverse operation circuit 321.
  • Figs. 14 and 18 respectively show the force S, which is a configuration for executing the round key generation processing at the time of encryption processing, and the round key generation processing at the time of decryption processing, and a configuration that combines these functions. Can also be constructed.
  • This configuration is shown in FIG.
  • the non-linear conversion circuit 301, the selector 302, and the register RegL303 are the same as those shown in FIGS. 14 and 18.
  • the double swap operation and the inverse shown in FIGS. It has the configuration of the data converter 330 with all the arithmetic circuits. That is,
  • the data conversion unit 330 includes these bit position conversion processing circuits.
  • FIG. 20 is a diagram for explaining the change in the bit position caused by the double swap conversion process for 128-bit data.
  • [B] moves to the 65 + i-th bit position from the left end of the data.
  • the bit [b3] located to the left of [B] is the bit data [b3] existing i-th from the left end in the data of (c).
  • Such a change in adjacent bits basically does not occur in the shift process.
  • the power that causes the relevance of the round key By changing the bit position by the double swap processing according to the present invention, the order of the bits is changed, and as a result, the randomness of the round key is improved. become.
  • the round key is generated by the i-bit double swap (Double Swap) calculation process or the inverse calculation process, which is not the round key generation process by the shift process.
  • Double Swap i-bit double swap
  • the data to be encrypted is n bits
  • the round key is also n-bit data.
  • the round key is n / 2 bits.
  • the size of the intermediate key data L is generated as n bits, and the upper and lower bits are used in two rounds, and the same in two rounds. The shift process is performed once.
  • the round key generated by such shift processing has a drawback that each round key has high correlation and is vulnerable to attack. Furthermore, it is necessary to add upper and lower selection circuits (selector 241 shown in FIG. 13), which is undesirable because the mounting cost and area increase. Hereafter, such a selector is omitted, n-bit intermediate key data is generated, and the above-described double swap (DoubleSwap) operation and inverse operation are applied to output an n / 2-bit round key.
  • DoubleSwap double swap
  • the double swap (DoubleSwap) operation is performed in two steps, that is,
  • the nonlinear conversion circuit 401, the selector 402, and the register RegL403 are the same as those shown in FIG.
  • the configuration shown in FIG. 21 does not have a double-swap operation and inverse operation circuit that are used in the configuration shown in FIG.
  • I is an integer of 1 or more.
  • the secret key K input to the key schedule part is k bits.
  • the intermediate key data L is input and stored in the register RegL403 via the selector 402.
  • Selector 402 has
  • bit position change processing circuits are connected, and the bit position change process of the data stored in the register RegL403 is executed according to a preset algorithm.
  • Swap operation by the swap operation circuit 41 1 and i-bit sub-swap operation by the sub-swap operation circuit 4 12 are alternately performed on the data stored in the register RegL403 according to the round.
  • the data stored in the register RegL403 is n bits, and the swap operation by the swap (Swap) operation circuit 411 and the i-bit subswap operation by the i-bit sub-swap (SubSwap) operation circuit 412 are stored in the register RegL403.
  • the upper n / 2 bits in the n-bit data stored in the register RegL403 are output as each round key.
  • FIG. 22 shows an example of swap processing of 128-bit intermediate key data L.
  • A a, a, a, a),
  • a is each bit data of 128 bits.
  • the swap operation for 128-bit data can be defined as follows.
  • a generalized Swap operation on 2m-bit data (m is an integer of 2 or more) can be defined as follows.
  • the i-bit sub-swap (SubSwap) operation for 128-bit data can be defined as follows.
  • the process to be performed is a bit position change process by i-bit sub-swap (SubSwap) operation.
  • the sub-swap (SubSwap) operation is also inversely converted by itself.
  • the power of defining a SubSwap operation for 128-bit data can be defined as follows.
  • Data B obtained by i-bit sub-swap (SubSwap) operation for 2m-bit data A (m is an integer of 2 or more)
  • bit position change similar to the bit position change process by the double-step (DoubleSwp) operation described with reference to FIG. 15 is performed.
  • Each round key is generated by alternately executing the bit position changing process to which these arithmetic circuits are applied.
  • the k-bit secret key K to be input to the key schedule part is input to the non-linear conversion circuit 401 to perform non-linear conversion processing to generate n-bit intermediate key data L, and the intermediate key data L is passed through the selector 402. Store in register RegL403.
  • the n / 2 bits in the data stored in the first register RegL403, for example, the upper half n / 2 bits, is output as the round key of the first round.
  • bit position change processing by the swap (Swap) operation circuit 41 1 that is, the swap (Swap as the bit position change processing described earlier with reference to FIG. ) Processing is executed, and the result is input to the register RegL403, and n / 2 bits, for example, the upper half n / 2 bits in the input data are output as the next round key.
  • the sub-swap (SubSwap) calculation circuit 412 performs bit position change processing, that is, sub-swap (SubSwap) as the bit position change processing described above with reference to FIG. ) Processing is executed, and the result is input to the register RegL403, and n / 2 bits, for example, the upper half n / 2 bits in the input data are output as the next round key.
  • Swap calculation circuit 41 1, i-bit sub-swap (SubSwap) arithmetic circuit 412,
  • Each round key is generated by alternately executing the bit position changing process to which these arithmetic circuits are applied. In this way, the round keys RK, RK,
  • Swap (Swap) operation circuit 41 1 performs r / 2 swap (Swap) operation, and i-bit sub-swap (SubSwap) operation circuit 412 performs (r / 2- l) i-bit sub-swap (SubSwap) operation
  • swap (Swap) operation and sub-swap (SubSwap) operation are each inversion of itself! /,
  • the result is the bit position by jump (Jumo) operation circuit 413
  • the change process as shown in Figure 24,
  • Swap (Swap) operation circuit 41 1 r / 2 swap (Swap) operation and i-bit sub-swap (SubSwap) operation circuit 412 (r / 2— 1) i-bit sub-swap (SubSwap) operation This is equivalent to re-execution of alternately repeating processing.
  • the jump operation by this jump (Jump-) operation circuit 413 causes the data key S stored in the register Reg L403 to be stored in the intermediate key data L which is the initial data before executing the swap operation and the sub-swap operation. Guaranteed to return to the value.
  • These arithmetic circuits can be implemented by a bit position conversion circuit similar to that described above with reference to FIGS. Therefore, for example, the jump (JumtD) arithmetic circuit 413 Can be realized with a circuit scale comparable to that for performing cyclic shift operations once r times. Note that these bit position changing processes may be implemented as a hardware configuration similar to that described with reference to FIGS. 16 and 17, or may be implemented by software.
  • the round key generation algorithm when executing the decryption process by applying the key schedule unit shown in Fig. 21 is as follows.
  • bit position changing process by these arithmetic circuits is executed alternately to generate round keys for each round.
  • the intermediate key data L is generated for both encryption / decryption and stored in the register RegL403.
  • This implementation eliminates the selection circuit (selector 241 shown in Fig. 13) required for the cyclic shift circuit and reduces the number of four types of arithmetic circuits required for the cyclic shift circuit to three. , Mounting cost and mounting area can be reduced
  • the round key data generated by the above-described configuration is exclusive ORed (EXOR) with a different constant C for each round, and the result is used as a round key.
  • EXOR exclusive ORed
  • FIG. 25 shows a configuration example of the key schedule unit of the present embodiment.
  • the configuration example of the control unit is a configuration in which a constant generation circuit 420 and an exclusive OR operation unit 430 are added to the configuration of the key schedule unit described above with reference to FIG.
  • the power to explain an example based on the configuration of the key schedule unit shown in FIG. in the configuration having the double swap operation and the inverse operation circuit described with reference to FIG. 14, FIG. 15, and FIG. 21, the power to explain an example based on the configuration of the key schedule unit shown in FIG.
  • a configuration in which the constant generation circuit 420 and the exclusive OR operation unit 430 are added can be realized, and the same effects as described above can be achieved.
  • a configuration example in which a constant generation circuit 420 and an exclusive OR operation unit 430 are added to the configuration of the key schedule unit described with reference to FIG. 19 will be described.
  • an exclusive OR (EXOR) operation unit 430 for performing an exclusive OR (EXOR) with the data of each round of the register RegL403.
  • the operation result of the exclusive OR (EXOR) operation unit 430 is used as the round key ⁇ RK, RK, ⁇
  • the round key to be output is n / 2 bits.
  • the exclusive OR (EX OR) operation unit 430 for example, the upper n / 2 bits of the n-bit stored data in the register RegL403 And an exclusive OR (EXOR) operation with different n-bit data for each round generated by the constant generation circuit 420, and outputs the result as a round key.
  • a constant that is different for each round generated by the constant generation circuit 420 is a force S that becomes n-bit data, and a circuit that generates r random random constants of n bits according to the number of rounds r
  • n is large, there is a problem that the circuit scale becomes large.
  • b ⁇ i is data obtained by shifting 16-bit data b to the left by i bits.
  • Mask is a mask value (16 bits) as a preset fixed value.
  • i, j, k, and 1 are predetermined shift amounts, respectively.
  • MASK, MASK, MASK, and MASK each have a predetermined mask value (16 bits).
  • 16-bit data obtained by shifting 16-bit data b by different shift amounts i, j, k, 1
  • the constant generation circuit 420 is configured to divide n-bit data into different m-bit (m ⁇ n) data b for each round, and use b repeatedly n / m times. Circuit rule j J
  • the constant generation circuit 420 also has its output key shown in FIG. It is necessary to generate and output data having a bit length corresponding to the length.
  • the constant generated by the constant generation circuit 420 according to the key length, for example, even when the stored value L of the register RegL403 becomes the same value at different key lengths, The key can be a different value.
  • the constant generation circuit 420 generates a total number of rounds corresponding to a plurality of different symbol processing: r + r + r different m-bit data b,
  • the m-bit constant b is updated from a certain initial value using a certain rule for each round.
  • the initial value varies from round to round.
  • Rules that generate values are applicable.
  • the irreducible polynomial f (X) is a primitive polynomial
  • the period of the value of the X-fold operation generated from a certain initial value is 2 m —l, so 2 m — 1 different data can be generated. It becomes possible.
  • the above rule may be used as an X- 1 multiplication operation on the extension field GF (2 m ).
  • an exclusive OR (EXOR) operation is performed on the data stored in the register RegL403 and different data for each round generated by the constant generation circuit 420, and the result is used as a round key.
  • EXOR exclusive OR
  • FIG. 27 shows a configuration example of an IC module 700 as a cryptographic processing apparatus that executes cryptographic processing according to the above-described embodiment.
  • the above processing can be executed in various information processing apparatuses such as a PC, an IC card, a reader / writer, and the like, and the IC module 700 shown in FIG. 27 can be configured in these various devices.
  • a CPU (Central processing Unit) 701 shown in FIG. 27 executes the start and end of the sign process, control of data transmission / reception, data transfer control between each component, and other various programs. It is a processor.
  • the memory 702 is a ROM (Read-Only-Memory) that stores programs executed by the CPU 701 or fixed data such as operation parameters, a program executed in the processing of the CPU 701, and a parameter storage area that changes as appropriate in the program processing.
  • RAM Random Access Memory
  • 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 (replacement table) or conversion matrix applied in encryption processing, and the like.
  • the data storage area is preferably configured as a memory having a tamper resistant structure.
  • the sign number processing unit 703 includes various kinds of sign number processing configurations described above, for example,
  • the sign process and decryption process are executed according to the common key block sign process algorithm to which these configurations are applied.
  • the encryption processing unit 703 has a configuration corresponding to each of the above-described embodiments, that is,
  • the power of an example in which the cryptographic processing means is an individual module is not provided.
  • Such an independent ⁇ process module is not provided.
  • the ⁇ process program is stored in ROM, and CPU 701 stores ROM. The program may be read and executed.
  • the random number generator 704 is a random number required for generating a key required for cryptographic processing. Execute the generation process.
  • the transmission / reception unit 705 is a data communication processing unit that performs data communication with the outside.
  • the communication unit 705 performs data communication with an IC module such as a reader / writer and outputs ciphertext generated in the IC module. Or, input data from an external reader / writer or other device.
  • the program can be recorded in advance on a hard disk or ROM (Read Only Memory) as a recording medium.
  • the program can be temporarily or permanently stored on a removable recording medium such as a flexible disk, CD-ROM (Compact Disc Read Only Memory), MO (Magneto optical) disc, DVD (Digital Versatile Disc), magnetic disc, or semiconductor memory. It can be stored (recorded).
  • a removable recording medium such as a flexible disk, CD-ROM (Compact Disc Read Only Memory), MO (Magneto optical) disc, DVD (Digital Versatile Disc), magnetic disc, or semiconductor memory. It can be stored (recorded).
  • Such removable recording media can be provided as V, so-called packaged software.
  • the program is installed on the computer from the removable recording medium as described above, or is wirelessly transferred from the download site to the computer, or via a network such as a LAN (Local Area Network) or the Internet.
  • the computer can receive the program transferred in this way and install it on a built-in recording medium such as a hard disk.
  • the intermediate key generated by the secret key conversion process is stored in the register, and stored in the register.
  • a round key is generated by repeatedly executing the swap (replacement) process of the partial data constituting the data. For example, register stored data is divided into four partial data so that two sets of partial data having the same number of bits are set, and the swap (replacement) process of each partial data is repeatedly executed, so that a plurality of different rounds are obtained. Generate a key. With this configuration, it is possible to effectively replace the bit arrangement of each round key and generate a low-correlation round key, thereby realizing a highly secure cryptographic processing configuration that increases the difficulty of key analysis.

Landscapes

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

Abstract

鍵解析の困難性を高め、安全性を高めた共通鍵ブロック暗号処理構成を実現する。秘密鍵の変換処理によって生成した中間鍵をレジスタに格納して、レジスタ格納データの変換処理によりラウンド鍵を生成する構成において、レジスタ格納データを構成する部分データのスワップ(入れ替え)処理を実行してラウンド鍵を生成する。例えば、等しいビット数を持つ部分データの組を2組設定するように4つの部分データに区分し、各部分データのスワップ処理を繰り返し実行して、複数の異なるラウンド鍵を生成する。本構成により、各ラウンド鍵のビット配列が効果的に入れ替わり相関性の低いラウンド鍵の生成が可能となり、鍵の解析困難性を高めた安全性の高い暗号処理が実現される。

Description

明 細 書
暗号処理装置、および暗号処理方法、並びにコンピュータ 'プログラム 技術分野
[0001] 本発明は、喑号処理装置、および喑号処理方法、並びにコンピュータ 'プログラム に関する。さらに詳細には、共通鍵ブロック暗号処理を実行する暗号処理装置、およ び喑号処理方法、並びにコンピュータ 'プログラムに関する。
背景技術
[0002] 例えば、ネットワーク通信、電子商取引、その他のデータ処理分野においてセキュ リティ確保は重要な課題である。セキュリティ確保の 1つの方法として暗号技術があり
、喑号処理は様々な領域で利用されている。
[0003] 例えば ICカード等の小型の装置中に喑号処理モジュールを埋め込み、 ICカードと 、データ読み取り書き込み装置としてのリーダライタとの間でデータ送受信を行ない、 認証処理、あるいは送受信データの暗号化、復号を行なうシステムが実用化されて いる。
[0004] 暗号処理アルゴリズムには様々なものがあるが、大きく分類すると、暗号化鍵と復号 鍵を異なる鍵、例えば公開鍵と秘密鍵として設定する公開鍵暗号方式と、暗号化鍵 と復号鍵を共通の鍵として設定する共通鍵暗号方式とに分類される。
[0005] 共通鍵暗号方式にも様々なアルゴリズムがある力 その 1つに共通鍵をベースとし て複数の鍵を生成して、生成した複数の鍵を用いてブロック単位(64ビット, 128、 25 6ビットなど)のデータ変換処理を繰り返し実行する方式がある。このような鍵生成方 式とデータ変換処理を適用したアルゴリズムの代表的なものが共通鍵ブロック暗号方 式である。
[0006] 代表的な共通鍵ブロック暗号のアルゴリズムとしては、例えば過去に米国標準暗号 であった DES (Data Encryption Standard)アルゴリズム、現在の米国標準である AE ¾ (Advanced Encryption Standard)ァノレゴリズムなど力、失口られてレ、o。
[0007] このような、共通鍵ブロック喑号のアルゴリズムは、主として、入力データの変換を繰 り返し実行するラウンド関数実行部を有する暗号処理部と、ラウンド関数部の各ラウン ドで適用するラウンド鍵を生成する鍵スケジュール部とによって構成される。鍵スケジ ユール部は、秘密鍵であるマスター鍵(主鍵)に基づいて、まずビット数を増加させた 拡大鍵を生成し、生成した拡大鍵に基づいて、暗号処理部の各ラウンド関数部で適 用するラウンド鍵(副鍵)を生成する。
[0008] このようなアルゴリズムを実行する具体的な構造として、線形変換部および非線形 変換部を有するラウンド関数を繰り返し実行する構造が知られて!/、る。例えば代表的 な構造に Feistel構造がある。 Feiste 冓造は、データ変換関数としてのラウンド関数 (F関数)の単純な繰り返しにより、平文を暗号文に変換する構造を持つ。ラウンド関 数 (F関数)においては、線形変換処理および非線形変換処理が実行される。なお、 Feiste 冓造を適用した暗号処理について記載した文献としては、例えば非特許文 献 1、非特許文献 2がある。
[0009] しかし、この共通鍵ブロック暗号処理の問題点として、暗号解析による鍵の漏洩が ある。暗号解析による鍵の解析が容易であるということは、その暗号処理の安全性が 低いということになり、実用上、大きな問題となる。
非特許文献 1 : K. Nyberg, Generalized Feistel networks , ASIACRYPT'96, Springer Verlag, 1996, pp.91— 104.
非特許文献 2 : Yuliang Zheng, Tsutomu Matsumoto, Hideki Imai: On the Constructio n of Blockし lphers Provably Secure and Not Relying on Any Unproved Hypotheses. CRYPTO 1989: 461-480
発明の開示
発明が解決しょうとする課題
[0010] 本発明は、上記問題点に鑑みてなされたものであり、暗号解析の困難性を高め、安 全性の高!/、共通鍵ブロック暗号アルゴリズムを実現する暗号処理装置、および暗号 処理方法、並びにコンピュータ 'プログラムを提供することを目的とする。
課題を解決するための手段
[0011] 本発明の第 1の側面は、
共通鍵ブロック暗号処理を実行する暗号処理装置であり、
ラウンド関数を複数ラウンド繰り返すデータ変換処理を行なう暗号処理部と、 前記ラウンド関数の実行に適用するラウンド鍵を生成する鍵スケジュール部を有し、 前記鍵スケジュール部は、
秘密鍵の変換処理によって中間鍵を生成し、生成した中間鍵を格納するレジスタと 前記レジスタに格納されたレジスタ格納データに対するデータ変換処理を実行する データ変換部であり、前記レジスタ格納データを構成する部分データのスワップ (入 れ替え)処理を繰り返し実行して複数の異なるラウンド鍵を生成するデータ変換部と、 を有する構成であることを特徴とする暗号処理装置にある。
[0012] さらに、本発明の暗号処理装置の一実施態様において、前記データ変換部は、等 しレ、ビット数を持つ部分データの組を 2組設定するように前記レジスタ格納データを 4 つの部分データに区分し、各部分データのスワップ (入れ替え)処理を繰り返し実行 して、複数の異なるラウンド鍵を生成する構成であることを特徴とする。
[0013] さらに、本発明の暗号処理装置の一実施態様において、前記データ変換部は、 2 mビットからなる前記レジスタ格納データを、
(a)先頭 iビットの部分データ A、
0
(b)先頭から i+ 1ビット〜 mビットの部分データ A、
(c)先頭から m+ 1ビット〜 2m— iビットの部分データ A、
2
(d)末尾 iビットの部分データ A、
3
上記(a)〜(d)に示す 4つの部分データに区分し、各部分データのスワップ (入れ 替え)処理を繰り返し実行して、複数の異なるラウンド鍵を生成する構成であることを 特徴とする。
[0014] さらに、本発明の暗号処理装置の一実施態様において、前記データ変換部は、等 しレ、ビット数を持つ部分データの組を 2組設定するように前記レジスタ格納データを 4 つの部分データに区分し、各組の部分データのスワップ(入れ替え)処理を実行する ダブルスワップ処理実行部と、前記ダブルスワップ実行部の処理の複数の繰り返し処 理の逆処理に相当するデータ変換処理を実行するダブルスワップ逆処理実行部と、 を有する構成であることを特徴とする。
[0015] さらに、本発明の暗号処理装置の一実施態様において、前記データ変換部は、喑 号化処理におけるラウンド鍵生成と逆順でラウンド鍵を生成する復号用ラウンド鍵生 成処理を行なう構成を有し、等し!/、ビット数を持つ部分データの組を 2組設定するよう に前記レジスタ格納データを 4つの部分データに区分し、各組の部分データのスヮッ プ (入れ替え)処理を実行するダブルスワップ処理を予め規定されたラウンド数に基 づレヽて決定される回数分繰り返した結果データを、前記レジスタ格納データに対する 変換処理によって生成する復号用ラウンド鍵対応データ変換部と、前記復号用ラウ ンド鍵対応データ変換部にぉレ、て変換されたデータに対して、前記ダブルスワップ 処理の逆処理を実行して、各ラウンドのラウンド鍵を生成するダブルスワップ逆処理 実行部と、を有することを特徴とする。
[0016] さらに、本発明の暗号処理装置の一実施態様において、前記データ変換部は、 2 mビットからなる前記レジスタ格納データを、
(a)先頭 mビットの部分データ A、
0
(b)末尾 mビットの部分データ A、
上記(a)〜(b)に示す 2つの部分データに区分し、各部分データのスワップ (入れ 替え)処理を実行するスワップ処理実行部と、
2mビットからなる前記レジスタ格納データを、
(c)先頭(m— i)ビットの部分データ A、
0
(d)先頭から(m— i+ 1)ビット〜(m + i)ビットの部分データ A、
(e)先頭から(m + i+ 1)ビット〜末尾ビットの部分データ A、
2
上記 (c)〜(e)に示す 3つの部分データに区分し、上記 (c)と(d)の部分データのス ヮップ(入れ替え)処理を実行するサブスワップ処理実行部とを有し、前記スワップ処 理実行部と、前記サブスワップ処理実行部の処理をラウンド進行に応じて交互に実 行してラウンド鍵の生成を実行する構成であることを特徴とする。
[0017] さらに、本発明の暗号処理装置の一実施態様において、前記データ変換部は、さ らに、前記スワップ処理実行部と、前記サブスワップ処理実行部の処理の繰り返し処 理の逆処理に相当するデータ変換を実行する逆変換処理実行部を有することを特 徴とする。
[0018] さらに、本発明の暗号処理装置の一実施態様において、前記鍵スケジュール部は 、さらに、ラウンド毎に異なる定数を生成する定数生成部と、前記定数生成部の生成 した定数と、前記レジスタ格納データとの排他的論理和演算を実行してラウンド鍵を 生成する排他的論理和演算部と、を有する構成であることを特徴とする。
[0019] さらに、本発明の暗号処理装置の一実施態様において、前記定数生成部は、生成 する定数より少ないビット数のラウンド毎に異なる少ビット数データのシフトデータの組 み合わせによってラウンド毎に異なる定数を生成する構成であることを特徴とする。
[0020] さらに、本発明の暗号処理装置の一実施態様において、前記定数生成部は、生成 する定数より少ないビット数の少ビット数データに対するデータ変換によって、ラウン ド毎に異なる少ビット数データを生成して、生成した少ビット数データのシフトデータ の組み合わせによってラウンド毎に異なる定数を生成する構成であることを特徴とす
[0021] さらに、本発明の第 2の側面は、
暗号処理装置において共通鍵ブロック暗号処理を実行する暗号処理方法であり、 鍵スケジュール部にお!/、て、暗号処理部で実行する複数ラウンドのラウンド関数の 実行に適用する複数のラウンド鍵を生成するラウンド鍵生成ステップと、
暗号処理部にお!/、て、前記ラウンド鍵を適用したラウンド関数を複数ラウンド繰り返 すデータ変換処理を行なう喑号処理ステップとを有し、
前記ラウンド鍵生成ステップは、
秘密鍵の変換処理によって中間鍵を生成してレジスタに格納する中間鍵生成ステ データ変換部が前記レジスタに格納されたレジスタ格納データを構成する部分デ ータのスワップ (入れ替え)処理を繰り返し実行して、複数の異なるラウンド鍵を生成 するデータ変換ステップと、
を有するステップであることを特徴とする暗号処理方法にある。
[0022] さらに、本発明の暗号処理方法の一実施態様において、前記データ変換ステップ は、等し!/、ビット数を持つ部分データの組を 2組設定するように前記レジスタ格納デ ータを 4つの部分データに区分し、各部分データのスワップ(入れ替え)処理を繰り返 し実行して、複数の異なるラウンド鍵を生成するステップであることを特徴とする。 [0023] さらに、本発明の暗号処理方法の一実施態様において、前記データ変換ステップ は、 2mビットからなる前記レジスタ格納データを、
(a)先頭 iビットの部分データ A、
0
(b)先頭から i+ 1ビット〜 mビットの部分データ A、
(c)先頭から m+ 1ビット〜 2m— iビットの部分データ A、
2
(d)末尾 iビットの部分データ A、
3
上記(a)〜(d)に示す 4つの部分データに区分し、各部分データのスワップ (入れ 替え)処理を繰り返し実行して、複数の異なるラウンド鍵を生成するステップであること を特徴とする。
[0024] さらに、本発明の暗号処理方法の一実施態様において、前記データ変換ステップ は、等し!/、ビット数を持つ部分データの組を 2組設定するように前記レジスタ格納デ ータを 4つの部分データに区分し、各組の部分データのスワップ(入れ替え)処理を 実行するダブルスワップ処理実行ステップと、前記ダブルスワップ実行ステップの処 理の複数の繰り返し処理の逆処理に相当するデータ変換処理を実行するダブルスヮ ップ逆処理実行ステップと、を有するステップであることを特徴とする。
[0025] さらに、本発明の暗号処理方法の一実施態様において、前記データ変換ステップ は、暗号化処理におけるラウンド鍵生成と逆順でラウンド鍵を生成する復号用ラウン ド鍵生成処理を行なうステップを有し、等し!/、ビット数を持つ部分データの組を 2組設 定するように前記レジスタ格納データを 4つの部分データに区分し、各組の部分デー タのスワップ(入れ替え)処理を実行するダブルスワップ処理を予め規定されたラウン ド数に基づ!/、て決定される回数分繰り返した結果データを、前記レジスタ格納データ に対する変換処理によって生成する復号用ラウンド鍵対応データ変換ステップと、前 記復号用ラウンド鍵対応データ変換ステップにおいて変換されたデータに対して、前 記ダブルスワップ処理の逆処理を実行して、各ラウンドのラウンド鍵を生成するダブ ノレスワップ逆処理実行ステップと、を有するステップであることを特徴とする。
[0026] さらに、本発明の暗号処理方法の一実施態様において、前記データ変換ステップ ステップは、 2mビットからなる前記レジスタ格納データを、
(a)先頭 mビットの部分データ A、 (b)末尾 mビットの部分データ A、
上記(a)〜(b)に示す 2つの部分データに区分し、各部分データのスワップ (入れ 替え)処理を実行するスワップ処理実行ステップと、
2mビットからなる前記レジスタ格納データを、
(c)先頭(m— i)ビットの部分データ A、
0
(d)先頭から(m— i+ 1)ビット〜(m + i)ビットの部分データ A、
(e)先頭から(m + i+ 1)ビット〜末尾ビットの部分データ A、
2
上記 (c)〜(e)に示す 3つの部分データに区分し、上記 (c)と(d)の部分データのス ヮップ(入れ替え)処理を実行するサブスワップ処理実行ステップと、
を有し、前記スワップ処理実行ステップと、前記サブスワップ処理実行ステップの処 理をラウンド進行に応じて交互に実行してラウンド鍵の生成を実行するステップであ ることを特徴とする。
[0027] さらに、本発明の暗号処理方法の一実施態様において、前記データ変換ステップ は、さらに、前記スワップ処理実行ステップと、前記サブスワップ処理実行ステップの 処理の繰り返し処理の逆処理に相当するデータ変換を実行する逆変換処理実行ス テツプを有することを特徴とする。
[0028] さらに、本発明の暗号処理方法の一実施態様において、前記暗号処理方法は、さ らに、定数生成部が、ラウンド毎に異なる定数を生成する定数生成ステップと、排他 的論理和演算部が、前記定数生成部の生成した定数と、前記レジスタ格納データと の排他的論理和演算を実行してラウンド鍵を生成する排他的論理和演算ステップと を有することを特徴とする。
[0029] さらに、本発明の暗号処理方法の一実施態様において、前記定数生成ステップは 、生成する定数より少な!/、ビット数のラウンド毎に異なる少ビット数データのシフトデー タの組み合わせによってラウンド毎に異なる定数を生成するステップであることを特徴 とする。
[0030] さらに、本発明の暗号処理方法の一実施態様において、前記定数生成ステップは 、生成する定数より少な!/、ビット数の少ビット数データに対するデータ変換によって、 ラウンド毎に異なる少ビット数データを生成して、生成した少ビット数データのシフトデ ータの組み合わせによってラウンド毎に異なる定数を生成するステップであることを特 徴とする。
[0031] さらに、本発明の第 3の側面は、
喑号処理装置において共通鍵ブロック喑号処理を実行させるコンピュータ 'プログ ラムであり、
鍵スケジュール部に、暗号処理部で実行する複数ラウンドのラウンド関数の実行に 適用する複数のラウンド鍵を生成させるラウンド鍵生成ステップと、
暗号処理部に、前記ラウンド鍵を適用したラウンド関数を複数ラウンド繰り返すデー タ変換処理を行なわせる喑号処理ステップとを有し、
前記ラウンド鍵生成ステップは、
秘密鍵の変換処理によって中間鍵を生成してレジスタに格納させる中間鍵生成ス データ変換部が前記レジスタに格納されたレジスタ格納データを構成する部分デ ータのスワップ (入れ替え)処理を繰り返し実行させて、複数の異なるラウンド鍵を生 成させるデータ変換ステップと、
を実行させるステップであることを特徴とするコンピュータ 'プログラムにある。
[0032] なお、本発明のコンピュータ 'プログラムは、例えば、様々なプログラム 'コードを実 行可能なコンピュータ 'システムに対して、コンピュータ可読な形式で提供する記憶 媒体、通信媒体、例えば、 CDや FD、 MOなどの記録媒体、あるいは、ネットワークな どの通信媒体によって提供可能なコンピュータ 'プログラムである。このようなプロダラ ムをコンピュータ可読な形式で提供することにより、コンピュータ 'システム上でプログ ラムに応じた処理が実現される。
[0033] 本発明のさらに他の目的、特徴や利点は、後述する本発明の実施例や添付する図 面に基づくより詳細な説明によって明らかになるであろう。なお、本明細書において システムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内に あるものには限らない。
発明の効果
[0034] 本発明の一実施例の構成によれば、共通鍵ブロック暗号処理におけるラウンド鍵生 成処理において、秘密鍵の変換処理によって生成した中間鍵をレジスタに格納し、 レジスタ格納データを構成する部分データのスワップ (入れ替え)処理を繰り返し実 行してラウンド鍵を生成する。例えば、等しいビット数を持つ部分データの組を 2組設 定するようにレジスタ格納データを 4つの部分データに区分し、各部分データのスヮッ プ (入れ替え)処理を繰り返し実行して、複数の異なるラウンド鍵を生成する。本構成 により、各ラウンド鍵のビット配列を効果的に入れ替え、相関性の低いラウンド鍵を生 成することが可能となり、鍵の解析困難性を高めた安全性の高い暗号処理構成が実 現される。
図面の簡単な説明
[図 1]共通鍵ブロック喑号アルゴリズムの基本構成を示す図である。
[図 2]図 1に示す共通鍵ブロック喑号処理部 E10の内部構成について説明する図で ある。
[図 3]図 2に示す喑号処理部 12の詳細構成について説明する図である。
[図 4]ラウンド関数実行部の一構成例としての SPN構造ラウンド関数について説明す る図である。
[図 5]ラウンド関数実行部の一構成例としての Feistel (フェイステル)構造につ!/、て説 明する図である。
[図 6]非線形変換処理部の具体例について説明する図である。
[図 7]線形変換処理部の具体例について説明する図である。
[図 8]暗号化処理における秘密鍵 Kと、初期鍵、ラウンド鍵、最終鍵の対応について 説明する図である。
[図 9]復号処理における秘密鍵 Kと、初期鍵、ラウンド鍵、最終鍵の対応について説 明する図である。
[図 10]暗号化処理におけるラウンド鍵生成処理を実行する鍵スケジュール部の構成 例について説明する図である。
[図 11]復号処理におけるラウンド鍵生成処理を実行する鍵スケジュール部の構成例 につ!/、て説明する図である。
[図 12]暗号化、復号の双方におけるラウンド鍵生成処理を実行する鍵スケジュール 部の構成例について説明する図である。
[図 13]Feiste 冓造の喑号処理において適用可能なラウンド鍵生成処理を実行する 鍵スケジュール部の構成例について説明する図である。
[図 14]暗号化処理におけるラウンド鍵生成処理においてダブルスワップ演算を適用 した処理を実行する鍵スケジュール部の構成例について説明する図である。
園 15]iビットダブルスワップ演算を適用したビット位置変更処理について説明する図 である。
園 16]iビットダブルスワップ演算を適用したビット位置変更処理を実行する ドゥエ ァ構成例について説明する図である。
[図 17] (r- 1)回分 iビットダブルスワップ逆演算を適用したビット位置変更処理を実行 するハードウェア構成例について説明する図である。
園 18]復号処理におけるラウンド鍵生成処理においてダブルスワップ演算を適用した 処理を実行する鍵スケジュール部の構成例について説明する図である。
[図 19]暗号化、復号の双方におけるラウンド鍵生成処理においてダブルスワップ演 算を適用した処理を実行する鍵スケジュール部の構成例について説明する図である 園 20]iビットダブルスワップ演算を適用したビット位置変更処理について説明する図 である。
[図 21]喑号処理におけるラウンド鍵生成処理においてスワップ演算とサブスワップ演 算を適用した処理を実行する鍵スケジュール部の構成例について説明する図である 園 22]スワップ演算を適用したビット位置変更処理について説明する図である。 園 23]iビットサブスワップ演算を適用したビット位置変更処理について説明する図で ある。
園 24]ジャンプ演算を適用したビット位置変更処理について説明する図である。 園 25]定数生成回路と排他的論理和演算部を持つラウンド鍵生成処理を実行する 鍵スケジュール部の構成例について説明する図である。
園 26]定数生成回路の構成例について説明する図である。 [図 27]本発明に係る暗号処理を実行する暗号処理装置としての ICモジュールの構 成例を示す図である。
発明を実施するための最良の形態
[0036] 以下、本発明の喑号処理装置、および喑号処理方法、並びにコンピュータ 'プログ ラムの詳細について説明する。説明は、以下の項目に従って行なう。
1.共通鍵ブロック喑号の概要
2.鍵スケジュール部におけるラウンド鍵生成処理構成
(2— 1)鍵スケジュール部の詳細構成について
(2— 2)シフト処理を適用した一般的なラウンド鍵生成処理構成について
(2— 3)本発明の第 1実施例に係るラウンド鍵の生成処理構成について (2— 4)本発明の第 2実施例に係るラウンド鍵の生成処理構成について (2— 5)本発明の第 3実施例に係るラウンド鍵の生成処理構成につ!/、て
3.暗号処理装置の構成例
[0037] [1.共通鍵ブロック喑号の概要]
まず、本発明の適用可能な共通鍵ブロック暗号の概要について説明する。本明細 書において、共通鍵ブロック暗号 (以下ではブロック暗号)は、以下に定義するものを 指すものとする。
[0038] ブロック暗号は平文 Pと鍵 Kを入力し、暗号文 Cを出力する。平文と暗号文のビット 長をブロックサイズと呼びここでは nで示す。 nは任意の整数値を取りうる力 通常、ブ ロック喑号アルゴリズムごとに、予め 1つに決められている値である。ブロック長が nの ブロック喑号のことを nビットブロック喑号と呼ぶこともある。
[0039] 鍵のビット長は、 kで表す。鍵は任意の整数値を取りうる。共通鍵ブロック喑号アル ゴリズムは 1つまたは複数の鍵サイズに対応することになる。例えば、あるブロック喑 号アルゴリズム Aはブロックサイズ n= 128であり、鍵のビット長 k= 128、または k= l 92または k = 256の各種の鍵サイズに対応するという構成もありうる。
平文 [P]、暗号文 [C]、鍵 [K]の各ビットサイズは、以下のように示される。 平文 P : nビット
暗号文 C : nビット 鍵 K : kビット
[0040] 図 1に kビットの鍵長に対応した nビット共通鍵ブロック喑号アルゴリズム Eの図を示 す。図 1に示すように、共通鍵ブロック喑号処理部 E10は、 nビットの平文 Pと、 kビット の鍵 Kを入力して、予め定められた喑号アルゴリズムを実行して、 nビットの暗号文 C を出力する。なお、図 1には平文から暗号文を生成する暗号化処理のみを示している 。暗号文から平文を生成する復号処理は、一般的には E10の逆関数が用いられる。 ただし、暗号化処理部 E10の構造によっては、復号処理においても、同様の共通鍵 ブロック喑号処理部 E10が適用でき、鍵の入力順などのシーケンスの変更によって 復号処理が可能となる。
[0041] 図 1に示す共通鍵ブロック喑号処理部 E10の内部構成について、図 2を参照して 説明する。ブロック暗号は 2つの部分に分けて考えることができる。ひとつは鍵 Kを入 力とし、ある定められたステップにより入力鍵 Kのビット長を拡大して拡大鍵 K' (ビット 長 k')を出力する鍵スケジュール部 11と、平文 Pと鍵スケジュール部 11から入力する 拡大鍵 K'を受け取り、平文 Pを入力して、拡大鍵 K'を適用した暗号処理を実行して、 暗号文 Cを生成するためのデータの変換を実行する暗号処理部 12である。なお、先 に説明したように、暗号化処理部 12の構造によっては、暗号文を平文に戻すデータ 復号処理にも暗号処理部 12が適用可能な場合もある。
[0042] 次に、図 2に示す喑号処理部 12の詳細構成について図 3を参照して説明する。喑 号処理部 12は、図 3に示すように、ラウンド関数実行部 20を適用したデータ変換を 繰り返し実行する構成を持つ。すなわち、暗号処理部 12は、ラウンド関数実行部 20 という処理単位に分割できる。ラウンド関数実行部 20は入力として、前段のラウンド関 数実行部の出力 Xと、拡大鍵に基づいて生成されるラウンド鍵 RKの 2つのデータを 受け取り、内部でデータ変換処理を実行して出力データ X を次のラウンド関数実 行部に出力する。なお、第 1ラウンドでは、入力は、平文または平文に対する初期化 処理データである。また最終ラウンドの出力は暗号文となる。
[0043] 図 3に示す例では、喑号処理部 12は、 r個のラウンド関数実行部 20を有し、 r回のラ ゥンド関数実行部におけるデータ変換を繰り返して暗号文を生成する構成となってい る。ラウンド関数の繰り返し回数をラウンド数と呼ぶ。図に示す例では、ラウンド数は r となる。
[0044] 各ラウンド関数実行部の入力データ は暗号化途中の nビットデータであり、あるラ ゥンドにおけるラウンド関数の出力 X が次のラウンドの入力として供給される。各ラ ゥンド関数実行部のもう一つの入力データは鍵スケジュールから出力された拡大鍵 の K'に基づくデータが用いられる。この各ラウンド関数実行部に入力され、ラウンド関 数の実行に適用される鍵をラウンド鍵と呼ぶ。図で、 iラウンドに適用するラウンド鍵を RKとして示している。拡大鍵 K'は、例えば、 rラウンド分のラウンド鍵 RK〜RKの連 結データとして構成される。
[0045] 図 3に示す構成は、喑号処理部 12の入力側から見て 1ラウンド目の入力データを X
とし、 i番目のラウンド関数から出力されるデータを X、ラウンド鍵を RKとして示した
0 i i
喑号処理部 12の構成である。なお、この喑号処理部 12の構造によっては、例えば、 適用するラウンド鍵の適用シーケンスを、暗号化処理と逆に設定し、暗号文を喑号処 理部 12に入力することで平文を出力する構成とすることができる。
[0046] 図 3に示す暗号処理部 12のラウンド関数実行部 20は、さまざまな形態をとりうる。ラ ゥンド関数はその喑号アルゴリズムが採用する構造(structure)によって分類できる 。代表的な構造として、
(ァ) SPN (Substitution Permutation Network)構造、
(ィ) Feiste 冓造、
力 る。以下、これらの具体的構成について、図 4〜図 6を参照して説明する。
[0047] (ァ) SPN構造ラウンド関数
まず、図 4を参照して、ラウンド関数実行部 20の一構成例としての SPN構造ラウン ド関数について説明する。 SPN構造ラウンド関数実行部 20aは、非線形変換層(S層 )と線形変換層(P層)を接続したいわゆる SP型の構成を有する。図 4に示すように、 n ビットの入力データすべてに対して、ラウンド鍵との排他的論理和(EXOR)演算を実 行する排他的論理和演算部 21、排他的論理和演算部 21の演算結果を入力し、入 力データの非線形変換を実行する非線形変換処理部 22、非線形変換処理部 22に おける非線形変換処理結果を入力し、入力データに対する線形変換処理を実行す る線形変換処理部 23などによって構成される。線形変換処理部 23の線形変換処理 結果が、次のラウンドに出力される。最終ラウンドでは暗号文となる。なお、図 4に示 す例では、排他的論理和演算部 21、非線形変換処理部 22、線形変換処理部 23の 処理順を示している力 これらの処理部の順番は、限定されるものではなぐ他のシ 一ケンスで処理を行なう構成としてもよ!/、。
[0048] (ィ) Feiste 冓造
次に、図 5を参照してラウンド関数実行部 20の一構成例としての Feistel (フェイス テル)構造について説明する。 Feiste 冓造は、図 5に示すように、前ラウンドからの入 力(第 1ラウンドでは入力文)である nビットの入力データを n/2ビットの 2つのデータ に分割して、各ラウンドにおいて入れ替えながら処理を実行する。
[0049] Feiste 冓造を持つラウンド関数実行部 20bを適用した処理においては、図に示す ように、一方の n/2ビットデータとラウンド鍵とが F関数部 30に入力される。 F関数部 30は、上述した SPN構造と同様、非線形変換層(S層)と線形変換層(P層)を接続し た!/、わゆる SP型の構成を有する。
[0050] 前ラウンドからの n/2ビットデータとラウンド鍵とが F関数部 30の排他的論理和演 算部 31に入力され排他的論理和(EXOR)処理がなされる。さらに、この結果データ を非線形変換処理部 32に入力して非線形変換を実行し、さらに、この非線形変換結 果が線形変換処理部 33に入力され線形変換が実行される。この線形変換結果が、 F関数処理結果データとして出力する。
[0051] さらに、この F関数出力と、前ラウンドから入力するもう 1つの n/2ビット入力とを、排 他的論理和演算部 34に入力し、排他的論理和演算(EXOR)を実行して、実行結果 を、次のラウンドにおける F関数の入力として設定される。なお、図に示す第 ウンド における F関数入力に設定された n/2ビットは次のラウンドの F関数出力との排他的 論理和演算に適用される。このように、 Feiste 冓造は、各ラウンドにおいて入力を交 互に入れ替えながら F関数を適用したデータ変換処理を実行する。
[0052] 図 4〜図 5を参照して説明したように、共通鍵ブロック暗号における暗号処理部 12 のラウンド関数実行部 20は、
(ァ) SPN (Substitution Permutation Network)構造、
(ィ) Feiste 冓造、 これらの構造をとり得る。これらのラウンド関数実行部は、いずれも非線形変換層(S 層)と線形変換層(P層)を接続したいわゆる SP型の構成を有する。すなわち、非線 形変換処理を実行する非線形変換処理部と、線形変換処理を実行する線形変換処 理部とを有する。以下、これらの変換処理構成について説明する。
[0053] (非線形変換処理部)
非線形変換処理部の具体例について、図 6を参照して説明する。図 6に示すように 、非線形変換処理部 50は、具体的には、 Sボックス(S— box) 51と呼ばれる sビット入 力 sビット出力の非線形変換テーブルが m個並んだものであり、 msビットの入力デー タが sビットずつ分割されてそれぞれ対応する Sボックス(S— box) 51に入力されデー タが変換される。各 Sボックス 51では、例えば変換テーブルを適用した非線形変換処 理が実行される。
[0054] 入力されるデータのサイズが大きくなると実装上のコストが高くなる傾向がある。そ れを回避するために、図 6に示すように、処理対象データ Xを複数の単位に分割し、 それぞれに対して、非線形変換を施す構成がとられることが多い。例えば入力サイズ を msビットとしたとき、 sビットずつの m個のデータに分割して、 m個の Sボックス(S—b ox) 51それぞれに対して sビットを入力し、例えば変換テーブルを適用した非線形変 換処理を実行して、これらの各 Sビット出力 m個を合成して msビットの非線形変換結 果を得る。
[0055] (線形変換処理部)
線形変換処理部の具体例について、図 7を参照して説明する。線形変換処理部は 、入力値、例えば、 Sボックスからの出力データである msビットの出力値を入力値 Xと して入力し、この入力に対して線形変換を施し msビットの結果を出力する。線形変換 処理は、例えば、入力ビット位置の入れ替え処理などの線形変換処理を実行して、 msビットの出力値 Yを出力する。線形変換処理は、例えば、入力に対して、線形変 換行列を適用して入力ビット位置の入れ替え処理を行なう。この行列の一例が図 7に 示す線形変換行列である。
[0056] 線形変換処理部にお!/、て適用する線形変換行列の要素は拡大体: GF (28)の体 の要素や GF (2)の要素など、一般的にはさまざまな表現を適用した行列として構成 できる。図 7は、 msビット入出力をもち、 GF (2s)の上で定義される m X mの行列によ り定義される線形変換処理部の 1つの構成例を示すものである。
[0057] [2.鍵スケジュール部におけるラウンド鍵生成処理構成]
上述したように、共通鍵ブロック暗号は、ラウンド関数の繰り返しによる暗号処理を 行なう構成である。この共通鍵ブロック暗号処理の問題点として、暗号解析による鍵 の漏洩がある。暗号解析による鍵の解析が容易であるということは、その暗号処理の 安全性が低いということになり、実用上、大きな問題となる。
[0058] 上述した説明から明らかなように、共通鍵ブロック暗号においては、各ラウンドにお いて拡大鍵に基づいて生成されるラウンド鍵を適用した処理がなされる。暗号攻撃で は、ラウンド鍵の解析に基づいて拡大鍵を復元し、さらに拡大鍵の元データである秘 密鍵を解析するといつた手順の攻撃が行なわれる場合がある。以下では、このような 鍵解析の困難性を高め、安全性の高めた暗号処理装置の構成例について説明する
[0059] 以下、以下の各項目に従って、説明を行なう。
(2— 1)鍵スケジュール部の詳細構成について
(2— 2)シフト処理を適用した一般的なラウンド鍵生成処理構成について (2— 3)本発明の第 1実施例に係るラウンド鍵の生成処理構成について (2— 4)本発明の第 2実施例に係るラウンド鍵の生成処理構成について (2— 5)本発明の第 3実施例に係るラウンド鍵の生成処理構成につ!/、て
[0060] (2— 1)鍵スケジュール部の詳細構成について
先に、例えば図 2を参照して説明したように、共通鍵ブロック暗号においては、鍵ス ケジュール部が、入力鍵 Kのビット長を拡大して拡大鍵 K' (ビット長 k')を出力し、拡 大鍵に基づいて生成されるラウンド鍵 RKを適用したラウンド関数が実行される。
[0061] 鍵スケジュール部は、例えば、数百ビットの鍵データを数千ビット程度の拡大鍵デ ータに拡張して、ラウンド関数を実行するデータ暗号化部に供給する。拡大鍵データ のうち、データ暗号化部のラウンド関数に入力される拡大鍵の一部をラウンド鍵と呼 ぶ。また、ラウンド関数以外にもラウンド鍵が挿入される場合がある。例えば、最初の ラウンド関数の前に揷入 (EXOR)される鍵を初期鍵、最後のラウンド関数の後に揷 入 (EXOR)される鍵を最終鍵と呼ぶ。
[0062] 図 8および図 9を参照して暗号化処理と復号処理における秘密鍵 Kと、ラウンド鍵の 対応について説明する。図 8、図 9には、それぞれ r段をラウンド数としたブロック暗号 を実行する暗号化構成および復号構成を示している。
[0063] 例えば、図 8は、 r段をラウンド数としたブロック暗号を実行する暗号化構成であり、 秘密鍵 [K] 111は、暗号化鍵スケジュール部 112に入力され、ビット拡張処理などの 所定のアルゴリズムに従ったデータ変換により、複数のラウンド鍵を含む暗号化拡大 鍵 113を生成する。データ暗号化部 114は、 r段をラウンド数としたブロック暗号を実 行する構成であり、暗号化の場合に、 1から r段目までのラウンド関数にそれぞれラウ ンド鍵 {RK , RK , · · · , RK , RK }が順に入力されてラウンド関数 (F関数)が実 fiされる。
[0064] 図 9は、復号処理構成を示している。秘密鍵 [K] 121は、復号鍵スケジュール部 12 2に入力され、ビット拡張処理などの所定のアルゴリズムに従ったデータ変換により、 複数のラウンド鍵を含む復号拡大鍵 123を生成する。なお、秘密鍵 [K] 121は暗号 化処理において適用した図 8に示す秘密鍵 [K] 111と同じ鍵が適用される。
[0065] データ復号部 124は、 r段をラウンド数としたブロック暗号を実行する構成であり、復 号処理の場合は、喑号処理とは逆の順番でラウンド鍵 {RK , RK , · · · , RK , RK }が順に入力されてラウンド関数 (F関数)が実行される。
[0066] 鍵解析を行なう暗号攻撃に対する耐性の高い、すなわち鍵解析を困難として安全 性を高めた構成とするための、ラウンド鍵が満たす理想的な性質としては以下の性質 力 sある。
(a)ラウンド鍵が分かっても鍵データが復元できな!/、こと
(b)ラウンド鍵同士が独立であること
これらの性質がある。
(a)は、万が一各ラウンドにおいて適用するラウンド鍵が解析された場合でも、その ラウンド鍵から元の秘密鍵を復元不可能とすることで安全性を高められることを意味 する。また、(b)は 1つのラウンド鍵と他のラウンド鍵とのデータ間に何らかの関係があ る場合、 1つのラウンド鍵の解析に成功した場合、他のラウンド鍵が推定可能になり、 このような関連性を排除することで安全性が高まるということを意味する。
[0067] しかしながら、実装のコスト上、ラウンド鍵同士が独立であるようにラウンド鍵を生成 することは難しぐ実際には、秘密鍵や秘密鍵から非線形変換を用いて求められた中 間鍵データを循環シフトしたデータから切り出したデータをラウンド鍵として用いる場 合が多い。また、上記条件を満たしていない場合でも、安全性上、
* slide attack (スライド攻撃)に対し十分な耐性をもつこと
K related cipher attack (関連喑号攻撃)に対して十分な耐性をもつことが必要 とされる。
[0068] Slide attack (スライド攻撃)は,元の暗号化関数とそれをずらした暗号化関数とで 、重なったラウンド関数のデータ値が同じになる平文 ·暗号文を検出し、これを利用し てずらした部分の鍵を効率よく求める攻撃である。異なる秘密鍵に対して数段分のラ ゥンド鍵が一致する場合に攻撃可能となる。
[0069] また、 Related cipher attack (関連喑号攻撃)は,以下のような攻撃である。あ る共通鍵ブロック喑号がラウンド数 rの kビットの鍵長,ラウンド数 rの kビットの鍵長
1 1 2 2
を共にサポートしている場合 (r < rかつ k < kとする)を考える。鍵長 kビットのラウ
1 2 1 2 1
ンド鍵が鍵長 kビットのラウンド鍵の一部と一致する場合を考える。この場合、鍵長 k
2 1 ビットの場合のデータ暗号部の出力を用いることにより、鍵長 kビットの場合の残りの
2
ラウンド鍵を攻撃することが可能になる。
[0070] (2— 2)シフト処理を適用した一般的なラウンド鍵生成処理構成について
上述したように、上述のラウンド鍵を利用する共通鍵ブロック暗号処理を実行する装 置を構成する場合、実装のコスト上、ラウンド鍵同士が独立であるようにラウンド鍵を 生成することは難しぐ実際には、秘密鍵から非線形変換を用いて求められた中間鍵 データを循環シフトしたデータから切り出したデータをラウンド鍵として用いる。
[0071] この秘密鍵から非線形変換を用いて求められた中間鍵データを循環シフトしたデ ータから切り出したデータをラウンド鍵として用いる場合の鍵スケジュール部の一般 的な構成例について、図 10〜図 12を参照して説明する。
[0072] 図 10は、暗号化処理におけるラウンド鍵生成処理を実行する鍵スケジュール部の 構成例、 図 11は、復号処理におけるラウンド鍵生成処理を実行する鍵スケジュール部の構 成例、
図 12は、暗号化、復号の双方におけるラウンド鍵生成処理を実行する鍵スケジュ ール部の構成例を示して!/、る。
[0073] まず、図 10に示す暗号化処理におけるラウンド鍵生成処理を実行する鍵スケジュ ール部の構成、および処理について説明する。秘密鍵 Kを kビットとする。秘密鍵 Kを 、非線形変換回路 201に入力し、非線形変換処理を行い nビットの中間鍵データを 生成する。中間鍵データをしとする。
[0074] 中間鍵データ Lは、セレクタ 202を介してレジスタ RegL203に入力され格納される 。セレクタ 202には、 iビット左循環シフト回路 211 (r-1) X iビット右循環シフト回路 212が接続され、セレクタ 202を介してレジスタ RegL203に対してそれぞれの循環シ フト処理信号が入力され、レジスタ RegL203に格納されたデータの iビット左循環シ フト処理、または (r—l) Xiビット右循環シフト処理が実行される。なお、 iは 1以上の 整数である。
[0075] 例えば、 iビット左循環シフト回路 211は、レジスタ RegL203に格納された nビットの 中間鍵 Lの iビット循環左シフトを実行し、次のように、レジスタ RegL203に格納され た中間鍵しから、 nビットの r個のラウンド鍵データ {RK , RK , · · ·, RK , RK }を 作り出す。
RK =L
RK =L<<<i
2
RK =L<<< (2Xi)
3
RK =L<<< ((r-2) Xi)
RK =L<<< ((r-1) Xi)
[0076] なお、上記式において、 [< < <i]は、 iビット循環左シフトを表す。
RK =Lは、シフト量ゼロのデータであり、中間鍵 Lに等しく、
RK =L<<<iは、中間鍵 Lに対して、左に iビットの循環シフトを行なったデータ、
2
RK Lくくく(2Xi)は、中間鍵 Lに対して、左に 2Xiビットのシフトを行なったデ ータ
· · ·をそれぞれ示している。
[0077] この方式を適用した実装構成および処理について、図 10を参照して説明する。ま ず、中間鍵生成プロセスにおいて、 kビットの秘密鍵 Kを非線形変換回路 201に入力 して、 nビットの中間鍵データ Lを生成してセレクタ 202を介してそのままシフト処理な しに、ラウンド中間鍵用レジスタ RegL203に格納する。
[0078] 暗号化の場合には、 iビット左循環シフト回路 211の処理信号をセレクタ 202を介し てラウンド中間鍵用レジスタ RegL203に選択入力し、ラウンド中間鍵用レジスタ Reg L203に格納された nビットの中間鍵データ Lに対する iビット循環左シフトを繰り返し 実行して、ラウンド鍵データ {RK , RK , · · · , RK , RK }を順次作り出すことがで きる。
[0079] この処理によって、すべてのラウンドのラウンド鍵 {RK , RK , · · · , RK— , RK } が生成されて出力されると、最後にラウンド中間鍵用レジスタ RegL203に格納された データを (r— 1) X iビット循環右シフトする。この処理は、(r— 1) X iビット右循環シフ ト回路 212の処理信号をセレクタ 202を介してラウンド中間鍵用レジスタ RegL203に 選択入力することで実行される。この右シフト処理によって、ラウンド中間鍵用レジス タ RegL203に格納されたデータを、シフトなしの初期状態としての中間鍵データしに 戻すことができる。
[0080] この暗号化処理におけるラウンド鍵生成プロセスは、中間鍵 L、ラウンド数 r、各ラウ ンドでのラウンド鍵 RK、各ラウンド移行時のシフト量 iとして、以下のように表現される
For n= 1 to r—丄 αο
RK—RegL
RegL—RegLく < < i
RK—RegL
RegL— RegL〉 > > ( (r- l) X i)
[0081] 上記記載において、
< < < iは iビット左循環シフト、 > >〉iは iビット右循環シフト、
を示している。
[0082] 図 11は、復号処理におけるラウンド鍵生成処理を実行する鍵スケジュール部の構 成例である。図 11に示す復号処理におけるラウンド鍵生成処理を実行する鍵スケジ ユール部において、非線形変換回路 201、セレクタ 202、レジスタ RegL203は、図 1 0に示す構成と同様であり、シフト回路 221 , 222のみが異なっている。
[0083] すなわち、復号処理におけるシフト回路 221 , 222は、喑号処理におけるシフト回 路 211 , 212と逆向きのシフトを実行する回路、すなわち、
iビット右循環シフト回路 221と、
(r- 1) X iビット左循環シフト回路 222
によって構成される。
[0084] この復号処理における鍵スケジュール部では、まず、(r—l) X iビット左循環シフト 回路 222の処理によって、レジスタ RegL203に格納された中間鍵データを、 (r- 1) X iビット循環左シフトする。その後に、 iビット右循環シフト回路 221の処理により、各 ラウンドのラウンド鍵生成毎に、レジスタ RegL203に格納されたデータを適宜 iビット 右循環シフトする。この処理シーケンスにより、ラウンド鍵データは、暗号処理時と逆 の順番で生成される。すなわち、 {RK , RK , · · · , RK , RK }を順次作り出すこと ができる。
[0085] この復号処理におけるラウンド鍵生成プロセスは、中間鍵 L、ラウンド数 r、各ラウンド でのラウンド鍵 RK、各ラウンド移行時のシフト量 iとして、以下の処理アルゴリズムとし て表現される。
RegL— RegL< < < ( (r- 1) X i)
For n = r to 2 do
RK—RegL
RegL—RegL〉 > >i
RK—RegL
[0086] 上記記載において、
< < < iは iビット左循環シフト、 > >〉iは iビット右循環シフト、
を示している。
[0087] なお、図 10、図 11は、それぞれ暗号化処理の際のラウンド鍵生成処理、復号処理 の際のラウンド鍵生成処理を実行する構成である力 S、これらの機能を兼ね備えた構 成も構築可能である。この構成を図 12に示す。図 12に示す構成では、循環シフト回 路 23;!〜 234を備え、それぞれ、
iビット左循環シフト回路 231、
iビット右循環シフト回路 232、
(r- 1) X iビット右循環シフト回路 233、
(r- 1) X iビット左循環シフト回路 234、
であり、図 10、図 11に構成された循環シフト回路をすベて含む構成であり、 iビット左循環シフト、 iビット右循環シフト、 (r—l) X iビット右循環シフト、 (r- l) X i ビット左循環シフトを選択的に実行することが可能な構成を持つ。この構成を適用す ることで、暗号化および復号処理!/、ずれの場合もラウンド鍵を生成して出力すること が可能となる。
[0088] このような巡回シフト処理によるラウンド鍵生成処理構成について考察する。特に、 ラウンド鍵データを構成するビット間の相対位置の変化状況につ!/、て考える。 iビット 左巡回シフトは、操作対象となるビット列の左から iビット分を切り取って、それを右側 に移動させて連結する操作である。特定のビットデータに着目すると、巡回シフトを、 任意回実行しても、あるビットの両側にあるビットは変化することがない。
[0089] あるビットがビット列の左端または右端に移動した場合には隣のビットが存在しなく なる力 再度、シフト処理を行えばまた以前と同様のビット並びとなる。すなわち、ある 特定のビットの前後にあるビットはビット列の端部に設定される場合以外は常に変化 がな!/、ことになる。このようにビットの両側のビットが一切変更されな!/ヽとレ、う性質、す なわちビット配列の不変性は、ラウンド関数を持つ暗号処理構成における鍵漏洩の 困難性を高めるための要求である「ラウンド鍵同士が独立であること」という条件に対 する脆弱性をもたらすこととなり、好ましくない。
[0090] また、ビット配列の不変性は、前述の Slide attack (スライド攻撃)による鍵解析に 対する脆弱性も有する。例えば、
(A)秘密鍵 Kに基づいて生成された中間鍵データ Lと、
(B)別の秘密鍵 K'に基づいて生成された中間鍵データ L'を (s X i)ビット左循環シ フトした拡大鍵データ L' < < < (s X i)
これらが同じ値になった場合には、その後にビットシフトによって生成される各ラウン ドのラウンド鍵、すなわち、
(a)中間鍵データ Lより生成される r— s段分のラウンド鍵 {RK , RK , ••- . RK
1 2 (r-s)
, RK }と、
1 (r-s)
(b)拡大鍵データ L' < < < (s X i)より生成される r— s段分のラウンド鍵 {RK , R s + 1
K ,…, RK , RK }
2s+ 2 2r- l 2r
これらの各ラウンド鍵が ω (b)とで同一のデータとなってしまう。
この性質により、前述の Slide attack (スライド攻撃)による鍵解析が容易となり、攻 撃に対する耐性が不十分となってしまう。
[0091] 先に説明したように、共通鍵ブロック暗号のアルゴリズムを実行する代表的な構造と して Feiste 冓造がある。 Feiste 冓造は、データ変換関数としてのラウンド関数 (F関 数)の単純な繰り返しにより、平文を暗号文に変換する構造を持つ。ラウンド関数 (F 関数)においては、線形変換処理および非線形変換処理が実行される。 Feiste 冓 造では、各ラウンドにおいて適用するラウンド鍵のサイズは、暗号化処理データとして の入力ビット数 nに対して、 n/2ビットとなる。
[0092] このような場合、中間鍵データ Lを nビットとして生成して、 nビットのデータのうちの 上位半分の n/2ビットを奇数ラウンドに利用し、残りの下位 n/2ビットを次ラウンドの 鍵として用いる構成が一般的である。この場合には、上位と下位をラウンドごとに選択 するための回路を追加実装する必要がある。すなわち、 n/2ビットのラウンド鍵を利 用する暗号処理装置構成 (暗号化/複号化共有の実装例)は、例えば図 13に示す 構成となる。
[0093] 図 13に示す構成は、先に説明した図 12に示す構成と同様の構成として、非線形 変換回路 201、セレクタ 202、レジスタ RegL203、さらに、
iビット左循環シフト回路 231、 iビット右循環シフト回路 232、
(r- 1) X iビット右循環シフト回路 233、
(r- 1) X iビット左循環シフト回路 234、
これらの構成を有し、さらに、
セレクタ 241を備えている。
[0094] レジスタ RegL203には、先に図 12を参照して説明したと同様の中間鍵データ L (n ビット)が格納され、セレクタ 241において、レジスタ RegL203に格納された nビットデ ータのうちの上位半分の n/2ビットを奇数ラウンドにおいて適用するラウンド鍵として 出力し、残りの下位 n/2ビットを次ラウンドのラウンド鍵として出力する構成である。こ のように、上位と下位をラウンドごとに選択するためのセレクタ 241を追加実装する必 要がある。
[0095] 上述したように、中間鍵データに対してシフト処理を行ってラウンド鍵を生成するラ ゥンド鍵生成法では、
*隣り合うビットに変化が少ないことによるラウンド鍵間の独立性が少ない。
* Slide attack (スライド攻撃)に対して十分な耐性がない。
* Feiste 冓造での利用の場合上位 ·下位ビット列選択回路の追加が必要。
これらの欠点をもつ。
[0096] (2— 3)本発明の第 1実施例に係るラウンド鍵の生成処理構成について
以下、上述した循環シフト処理によるラウンド鍵の生成処理における問題点を解決 し、様々な暗号攻撃に対する耐性の高い、すなわち安全性の高い暗号処理を実行 するラウンド鍵の生成処理構成につ!/、て説明する。
[0097] 以下に説明する実施例は、秘密鍵 Kに基づく非線形変換処理の結果として得られ た中間鍵データ Lに対して、循環シフト処理を実行するのではなぐ中間鍵データ L のビット位置変更処理としてのダブルスワップ(Double Swap)処理を実行して、ラ ゥンド鍵を生成する処理例である。各ラウンドの進行に伴い、ビット位置変更処理とし てのダブルスワップ(Double Swap)処理を繰り返し実行する。
[0098] 図 14を参照して、本発明の喑号処理装置の実施例として、ダブルスワップ(Doubl e Swap)処理を適用してラウンド鍵生成処理を実行する鍵スケジュール部の構成、 および処理につ!/、て説明する。
[0099] 図 14に示す構成は、先に、図 10を参照して説明したビット循環シフト処理によって ラウンド鍵を生成する鍵スケジュール部の構成における iビット左循環シフト回路 211 を、 iビットダブルスワップ(Double Swap)演算回路 311に置き換え、また、図 10に 示す (r— 1) X iビット右循環シフト回路 212を、(r—1)回分 iビットダブルスワップ (Do uble Swap)逆演算回路 312に置きかえた構成である。すなわち、図 14に示すよう に、 iビットダブルスワップ(Double Swap)演算回路 31 1と、(r— 1)回分 iビットダブ ルスワップ(Double Swap)逆演算回路 312とからなるデータ変換部 310を有する。 その他の構成は、図 10を参照して説明した構成と同様の構成を持つ。
[0100] 図 14に示す鍵スケジュール部の処理について説明する。鍵スケジュール部に入力 する秘密鍵 Kを kビットとする。秘密鍵 Kを、非線形変換回路 301に入力し、非線形変 換処理を行い nビットの中間鍵データを生成する。中間鍵データをしとする。
[0101] 中間鍵データ Lは、セレクタ 302を介してレジスタ RegL303に入力され格納される 。セレクタ 302には、データ変換部 310の各処理部、すなわち iビットダブルスワップ( Double Swap)演算回路 311、および(r— 1)回分 iビットダブルスワップ(Double Swap)逆演算回路 312が接続され、セレクタ 302を介してレジスタ RegL303に対し てそれぞれの回路における処理信号が入力され、レジスタ RegL303に格納された データのビット位置変更処理が実行される。なお、 iは 1以上の整数である。
[0102] 図 15を参照して、 iビットダブルスワップ(Double Swap)演算回路 311において 実行するビット位置変更処理例について説明する。図 15の例は、 128ビットの中間 鍵データ Lの iビットダブルスワップ(Double Swap)処理を例として示して!/、る。
[0103] 中間鍵データ Lを構成する 128ビットのデータ Aを、
A= a , a , · · · , a , a )、
0 1 126 127
とする。
aは、 128ビットの各ビットデータである。
さらに、
a [x→y]:、データ A中の連続ビットデータ a力、ら aまでのビット列、
b I c :ビット列 b、 cを連結したビット列、 とする。
[0104] 上記表現を適用すると、 128ビットデータに対する iビットダブルスワップ (Double Swap)演算は以下のように定義される。
128ビットデータ Aに対する iビット DoubleSwap演算によって得られるデータ Bを、 B = DoubleSwap (A)
128, i
とすると、
B = a [i→63] I a [ (128 -i)→127] | a [0→(i— 1) ] | a [64→ (127 -i) ] となる。
[0105] 図 15を参照して具体的な 128ビットデータに対する iビットダブルスワップ (Double
Swap)演算につ!/、て説明する。図 15にお!/、て、
(a)は、入力 128ビット、
(b)は、演算結果としての出力 128ビット、
を示している。
[0106] (a)の入力 128ビットは、 4つのパート A〜Aに区分される。各区分の構成ビットは
0 3
以下のように表現される。
A: a [0→(i— 1) ]、すなわち先頭 iビット、
0
A: a [i→63]、すなわち先頭 iビットの後続ビット〜データ Aの前半終端ビット
A: a [64→(127— i) ]、すなわちデータ Aの後半開始ビット〜末尾 iビットの先行ビ
2
ッ卜
A: a [ (128— i)→127]、すなわち末尾 iビット、
3
[0107] iビットダブルスワップ(Double Swap)演算回路 311では、この 4分割されたデー タ Aの構成ビットを図 15 (b)の出力データのように入れ替える処理を実行する。すな わち、
入力ビットの配列: A
0 I A
1 I A
2 I Aを、
3
出力ビットの配列: A
1 I A
3 I A A、
0 I 2
とするビットデータの位置変更処理を実行する。
[0108] この結果として、 128ビットデータ Aに対する iビット DoubleSwap演算によって得られるデータ Bを、 B = DoubleSwap (A)
128, i
としたとき、出力 Bは、
B = a [i→63] I a [ (128 -i)→127] | a [0→(i— 1) ] | a [64→ (127 -i) ] となる。
[0109] この DoubleSwap処理を実行するための処理信号力 S、図 14に示す iビットダブルス ヮップ(Double Swap)演算回路 311から、図 14に示すセレクタ 302を介してレジス タ RegL303に入力されて、レジスタ RegL303に格納されたデータのビット位置変更 を実行して、次のラウンドのラウンド鍵を生成する。さらに、次のラウンドでは、図 15に 示す (b)出力に対して、再度、図 14に示す iビットダブルスワップ(Double Swap) 演算回路 31 1によるビット位置変更処理、すなわち、図 15において説明した iビットダ ブルスワップ(Double Swap)処理が実行されて次のラウンドに対応するラウンド鍵 が生成される。
[0110] 図 15を参照して説明した DoubleSwap演算には以下の 2点のメリットがあげられる
*ビットの相対位置が大きく変化する力 S、循環シフトに比べて回路規模が増えない * Fesite 冓造に利用すると実装コストの削減効果
なお、これらの利点については、後段で説明する。
[0111] なお、 iビットダブルスワップ(Double Swap)演算回路 311をハードウェアとして構 成する場合、例えば図 16に示すような入力ビット 321の構成ビットの各出力ビット位 置を変更するビット位置変換回路 322によって実現可能である。ビット位置変換回路 322は、各ビット位置のビットデータを先に図 16を参照して説明した位置に変更する 入出力部を有する回路として構成され、出力ビット 323を生成して出力する。なお、 i ビットダブルスワップ(Double Swap)演算回路 311は、ハードウェアに限らず、ソフ トウエアとしてのプログラムによって実行する構成としてもよい。
[0112] さらに、図 14に示す鍵スケジュール部の(r—l)回分 iビットダブルスワップ(Double
Swap)逆演算回路 312は、 iビットダブルスワップ(Double Swap)演算回路 311 において実行されるビット位置変更処理によってすベてのラウンド演算に適用される ラウンド鍵の生成が終了した後、最初の中間鍵データ Lに戻す処理を実行する。 [0113] 例えばラウンド数 rの暗号処理では、最初の中間鍵データ Lが最初のラウンド鍵とし て利用されるので、 r—1回の iビットダブルスワップ(Double Swap)処理によって全 rラウンドに適用するラウンド鍵の生成が終了する。 (r—1)回分 iビットダブルスワップ( Double Swap)逆演算回路 312は、この r— 1回の iビットダブルスワップ(Double Swap)処理によって生成された最終ラウンドのラウンド鍵に適用されたデータに対す るビット位置変更処理を実行して、最初の中間鍵データ Lに戻す処理を実行する。
[0114] DoubleSwap逆演算は以下のように定義される。
「iビットダブルスワップ (Double Swap)逆演算定義」
128ビットデータ Aに対する iビット DoubleSwap逆演算によって得られるデータ Bを B = DoubleSwap— 1 (A)
128, i
とすると、
B = a [64→63 + i] | a [0→(63— i) ] | [ (64 + i)→127] | a [ (64— i)→63] となる。
[0115] 上記定義は、図 15に示す (b)出力を(a)入力に戻す iビットダブルスワップ (Double
Swap)逆演算に相当する。 (r—1)回分 iビットダブルスワップ(Double Swap)逆 演算回路 312では、(r—1)回分に相当する iビットダブルスワップ(Double Swap) 逆演算を実行することになる。しかし、実際に繰り返し逆演算を実行することは必要で なぐ(r—1)回分 iビットダブルスワップ(Double Swap)逆演算回路 312をハードウ エアとして構成する場合、例えば図 17に示すような入力ビット 331の構成ビットの各 出力ビット位置を変更するビット位置変換回路 332によって実現可能である。
[0116] ビット位置変換回路 332は、最終ラウンドに適用したラウンド鍵としてレジスタ RegL 303に格納されたデータ、すなわち、(r—1)回分 iビットダブルスワップ(Double S wap)の処理後のデータである入力ビット 331に対してビット位置変更処理を実行し て、ビット位置変更のなされていない最初の中間鍵データ Lのビット配置に戻して出 力ビット 331を生成する処理を実行する。なお、この(r—1)回分 iビットダブルスワップ (Double Swap)逆演算回路 312についても、 iビットダブルスワップ(Double Swa P)演算回路 311と同様、ハードウェアに限らず、ソフトウェアとしてのプログラムによつ て実行する構成としてもよい。
[0117] なお、上述した実施例では、ラウンド鍵を 128ビットデータとして、 128ビットのデー タに対する DoubleSwap演算および逆演算についての処理を説明した力 Double Swap演算および逆演算は 128ビット以外のビット数においても適用可能である。す なわち、一般化して 2mビット(mは 2以上の整数)のデータに対する DoubleSwap演 算は、以下のように定義できる。
[0118] 「iビットダブルスワップ(Double Swap)定義」
2mビットデータ A(mは 2以上の整数)に対する iビット DoubleSwap演算によって 得られるデータ Bを、
B = DoubleSwap (A)
2in、 i
とすると、
B = a[i→ (m-1)] | a[(2m— i)→(2m— 1)] | a[0→(i— 1)] | a[m→(2m— 1 i)]
として表現すること力 Sでさる。
[0119] 具体的には、先に図 15を参照して説明したように、 2mビットをビット 0〜ビット(2m
1)として示すと、
A: a[0→(i— 1)]、すなわち先頭 iビット、
0
A: a[i→(m— 1)]、すなわち先頭 iビットの後続ビット〜データ Aの前半終端ビット A: a[m→ (2m- 1 i) ]、すなわちデータ Aの後半開始ビット〜末尾 iビットの先行
2
ビット
A :&[(2111—1)→(2111—1)]、すなゎち末尾 "ット、
3
これらの 4分割データを、
入力ビットの配列: A
0 I A
1 I A
2 I Aを、
3
出力ビットの配列: A
1 I A
3 I A 、
0 I A
2
とするビットデータの位置変更処理を実行することになる。
[0120] 逆変換は同様に以下のように、定義可能である。
(r-1)回分 iビットダブルスワップ(Double Swap)逆演算回路 312の実行する Do ubleSwap逆演算は以下のように定義される。 「iビットダブルスワップ (Double Swap)逆演算定義」
2mビットデータ A (mは 2以上の整数)に対する iビット DoubleSwap逆演算によつ て得られるデータ Bを、
B = DoubleSwap— 1 (A)
2m, i
とすると、
B = a [m→ (m- 1) + i] | a [0→ ( (m— 1) i)コ | [ (m + i)→ (2m— 1) ] | a [ (m -i)→(m- l) ]
となる。
[0121] このように、図 14に示すラウンド鍵を生成する鍵スケジュール部の構成は、先に、図
10を参照して説明したビット循環シフト処理によってラウンド鍵を生成する鍵スケジュ ール部の構成における iビット左循環シフト回路 211を、 iビットダブルスワップ (Doubl e Swap)演算回路 311に置き換え、また、図 10に示す (r— 1) X iビット右循環シフト 回路 212を、(r—1)回分 iビットダブルスワップ(Double Swap)逆演算回路 312に 置きかえた構成であり、暗号化において適用する各ラウンド鍵は、以下のようにして 生成される。
[0122] 鍵スケジュール部に入力する kビットの秘密鍵 Kを、非線形変換回路 301に入力し 、非線形変換処理を行い nビットの中間鍵データ Lを生成して、中間鍵データ Lをセレ クタ 302を介してレジスタ RegL303に格納する。この最初のレジスタ RegL303格納 データは、最初のラウンドのラウンド鍵として出力される。さらに、このデータに対して 、 iビットダブルスワップ (Double Swap)演算回路 311によるビット位置変更処理、 すなわち、先に図 15を参照して説明したビット位置変更処理としての iビットダブルス ヮップ(Double Swap)演算が実行され、その結果が、レジスタ RegL303に格納さ れ、このレジスタ格納データが次のラウンドのラウンド鍵として出力される。
[0123] さらに、このレジスタ格納データに対して、 iビットダブルスワップ(Double Swap) 演算回路 31 1によってダブルスワップ (Double Swap)演算が繰り返し実行される。 このようにして、各ラウンド関数において適用するラウンド鍵 RK , RK , · · · , RK , RKが生成される。最後に (r—1)回分 iビットダブルスワップ (Double Swap)逆演 算回路 312によって、レジスタ RegL303に格納されたデータに対して、 DoubleSwa P逆演算の r 1回分に相当する演算に対応するビット位置変更処理が実行されて実 行結果がレジスタ RegL303に格納される。このデータは、最初にレジスタ RegL303 に入力された中間鍵 Lと同じビット配置を持つデータとなる。
[0124] ラウンド数 rとした喑号処理において、鍵スケジュール部の実行する処理アルゴリズ ムは以下のように表現することができる。
or i= l to r— 1 do
RK—RegL
RegL^DoubleSwap (RegL)
RK—RegL
RegL^DoubleSwap ( · · · (DoubleSwap (DoubleSwap (RegL) ) ) )
[0125] 上記アルゴリズム中、
For i= 1 to r— 1 do
RK—RegL
RegL— DoubleSwap (RegL)
RK― (RegL) L
これらは、 iビットダブルスワップ(Double Swap)演算回路 311における iビットダブ ノレスワップ処理の繰り返し実行に基づくラウンド鍵の生成プロセスに相当し、最後の 処理、すなわち、
RegL— DoubleSwap い · · (DoubleSwap (DoubleSwap (RegL) ) ) )
この処理は、(r—1)回分 iビットダブルスワップ (Double Swap)逆演算回路 312 における DoubleSwap逆演算の r—1回分に相当する演算により元の中間鍵 Lを生 成する処理に相当する。
[0126] 先に、図 17を参照して説明したように、最後の r—1回の DoubleSwap逆変換はひ とつの関数としてビット位置の入れ替え演算として実装することが可能であり、巡回シ フト演算を r 1回まとめて行う演算と同程度の回路規模で実現可能である。結果とし て巡回シフト演算を利用したときと比較して、回路規模を増加させることなぐ効果的 にビット位置を変更して各ラウンド鍵の関連性を低下させたセキュリティの高い喑号処 理構成が実現されることになる。
[0127] 復号処理を実行する場合のラウンド鍵生成処理を実行する鍵スケジュール部の構 成例を図 18に示す。図 18に示す復号処理におけるラウンド鍵生成処理を実行する 鍵スケジュール部において、非線形変換回路 301、セレクタ 302、レジスタ RegL303 は、図 14に示す構成と同様であり、図 14に示す iビットダブルスワップ(Double Sw ap)演算回路 311の代わりに(r— 1)回分 iビットダブルスワップ(Double Swap)逆 演算回路 321が設定され、図 14に示す(r—1)回分 iビットダブルスワップ(Double Swap)逆演算回路 312の代わりに iビットダブルスワップ(Double Swap)演算回路 322が設定されたデータ変換部 320を持つ。その他の構成は、図 14を参照して説明 した構成と同様の構成を持つ。
[0128] 図 18に示す鍵スケジュール部の処理について説明する。鍵スケジュール部に入力 する秘密鍵 Kを kビットとする。秘密鍵 Kを、非線形変換回路 301に入力し、非線形変 換処理を行い nビットの中間鍵データを生成する。中間鍵データをしとする。
[0129] 中間鍵データ Lは、セレクタ 302を介してレジスタ RegL303に入力され格納される 。セレクタ 302には、 iビットダブルスワップ(Double Swap)逆演算回路 321、および (r—1)回分 iビットダブルスワップ (Double Swap)演算回路 322が接続され、セレ クタ 302を介してレジスタ RegL303に対してそれぞれの回路における処理信号が入 力され、レジスタ RegL303に格納されたデータのビット位置変更処理が実行される。 なお、 iは 1以上の整数である。
[0130] 復号処理においては、喑号処理に用いた rラウンドの r個のラウンド鍵を喑号処理と は逆の順番で生成して出力することになる。従って、復号処理における鍵スケジユー ル部では、まず、レジスタ RegL303に格納された中間鍵データ L力 S、 (r— 1)回分 iビ ットダブルスワップ(Double Swap)演算回路 322に入力され、レジスタ RegL303 に格納されたデータに DoubleSwap演算の r—1回分に相当する演算を実行する。 この処理によって、暗号処理時の最終ラウンドに適用したラウンド鍵が生成される。
[0131] このラウンド鍵を復号処理における最初のラウンド鍵として出力する。さらに、このラ ゥンド鍵データは、 iビットダブルスワップ (Double Swap)逆演算回路 321に入力さ れる c
[0132] iビットダブルスワップ(Double Swap)逆演算回路 321では、先に図 15を参照し て説明した処理と逆の処理が実行される。すなわち、図 15 (b)に示す出力を入力値 として、図 15 (a)に示す入力を出力値とするビット位置変更処理が実行されることに なる。この処理結果がレジスタ RegL303に格納されて、次のラウンドのラウンド鍵とし て利用される。さらに、次のラウンドでは、レジスタ RegL303の格納値に対して、 iビッ トダブルスワップ(Double Swap)逆演算回路 321 ί ou ble Swap)逆演算処理が実行され、ビット位置の変更が実行されて、
対応するラウンド鍵が生成される。
[0133] このようにして、各ラウンド毎にレジスタ RegL303に格納されたデータを、 iビットダ ブルスワップ(Double Swap)逆演算回路 321で、 DoubleSwap逆演算を行い、先 に図 9を参照して説明した様に各ラウンド関数に適用するラウンド鍵: RK , RK , · · · , RK , RKを順に生成して出力することができる。
2 1
[0134] なお、復号処理において利用される iビットダブルスワップ (Double Swap)逆演算 回路 321、および(r—1)回分 iビットダブルスワップ(Double Swap)演算回路 322 も、先に図 16、図 17を参照して説明したと同様、ビット位置変換回路を持つハードウ エアによって構成可能であり、また、ソフトウェアとしてのプログラムによって実行する 構成としてあよい。
[0135] ラウンド数 rとした復号処理において、鍵スケジ -ール部の実行する処理アルゴリズ ムは以下のように表現することができる。
RegL^DoubleSwap … (Double¾wap (DoubleSwap (RegL) ) ) ) For i = r to 2 do
RK—RegL
RegL— DoubleSwap (RegL)
RK—RegL
[0136] 上記アルゴリズム中の最初の処理、すなわち、
RegL— DoubleSwap … (Double¾wap (DoubleSwap (RegL) ) ) ) この処理は、(r 1)回分 i Swap)演算回路 322 おける DoubleSwap演算の r— 1回分に相当する演算により元の中間鍵 Lから喑号 処理における最終ラウンドのラウンド鍵、すなわち復号処理における最初のラウンド 鍵を生成する処理に相当する。
その後のステップ、すなわち、
For i = r to 2 do
RK—RegL
RegL— DoubleSwap (RegL)
RK—RegL
この処理は、復号処理における第 2ラウンド以降のラウンド鍵生成処理に相当し、 i ビットダブルスワップ(Double Swap)逆演算回路 321における DoubleSwap逆演 算の実行によるラウンド鍵の生成処理である。
[0137] なお、図 14、図 18は、それぞれ暗号化処理の際のラウンド鍵生成処理、復号処理 の際のラウンド鍵生成処理を実行する構成である力 S、これらの機能を兼ね備えた構 成も構築可能である。この構成を図 19に示す。図 19に示す構成では、非線形変換 回路 301、セレクタ 302、レジスタ RegL303は、図 14、図 18に示す構成と同様であり 、さらに、図 14および図 18に示すダブルスワップ(Double Swap)演算および逆演 算回路をすベて備えたデータ変換部 330の構成を持つ。すなわち、
iビットダブルスワップ(Double Swap)演算回路 331、
iビットダブルスワップ(Double Swap)逆演算回路 332、
(r- 1)回分 iビットダブルスワップ(Double Swap)演算回路 333、
(r- 1)回分 iビットダブルスワップ(Double Swap)逆演算回路 334、
これらのビット位置変換処理回路を備えたデータ変換部 330を有する構成となって いる。
[0138] この構成では、暗号化処理および復号処理共に中間鍵データ Lを生成し、レジスタ RegL303に格納しておけば、 DoubleSwap演算、 DoubleSwap逆演算、 r— 1回の DoubleSwap演算に相当する演算、 r—l回の DoubleSwap逆演算に相当する演 算を行なうことが可能であり、暗号化時/復号時に利用されるラウンド鍵を生成するこ と力 Sできる。 [0139] 以上、説明したように、本発明の喑号処理装置におけるラウンド鍵生成処理におい ては、シフト処理によるラウンド鍵生成処理ではなぐ iビットダブルスワップ(Double Swap)演算処理、あるいは逆演算処理によってラウンド鍵を生成する構成となって!/ヽ る。この処理によって、巡回シフト演算を利用したときと比較して、回路規模を増加さ せることなぐ効果的にビット位置を変更して各ラウンド鍵の関連性を低下させたセキ ユリティの高い暗号処理構成が実現されることになる。以降でラウンド数 rは偶数であ るあのとする。
[0140] ダブルスワップ(DoubleSwap)変換あるいは逆変換によるビット位置変更では、シ フト処理と異なり、隣接するビットの順番を様々に入れ替えることになり、結果として各 ラウンド鍵の類似性や関連性を低下させることができる。このダブルスワップ (Double Swap)変換ある!/、は逆変換によるビット位置の効果的な入れ替え処理につ!/、て、図 20を参照して説明する。
[0141] 図 20は、 128ビットデータに対するダブルスワップ変換処理によって発生するビット 位置の変化を説明する図であり、
(a)初期的な中間鍵データ、
(b)ダブルスワップ変換処理 1回実行後のデータ、
(c)ダブルスワップ変換処理 2回実行後のデータ、
(d)ダブルスワップ変換処理 3回実行後のデータ、
これらの 4つのデータを示して!/、る。
[0142] (a)初期的な中間鍵データにおいて、先頭から i+ 1番目のビット [B]とそのビットの すぐ左に位置するビット [bl]に着目し、 iビット DoubleSwap変換を実行した場合を 考える。
[0143] (a)初期的な中間鍵データにお!/、ては左から i番目のビット [bl]が [B]の左隣に存 在する。ここで DoubleSwap変換を一回適用すると、
(b)ダブルスワップ変換処理 1回実行後のデータ、
の設定となる。
(b)のデータにおいて、 [B]はデータ左端に移動する。このとき [B]の左にはビット が存在しない。さらに、 DoubleSwap変換を一回適用すると、 (c)ダブルスワップ変換処理 2回実行後のデータ、
の設定となる。
(c)のデータにおいて、 [B]はデータ左端から 65番目のビット位置に移動する。こ の状態では、 [B]の左に位置するビット [b2]は、(b)のデータにおいて右端に存在し たビットデータ [b2]である。さらに、 DoubleSwap変換を一回適用すると、
(d)ダブルスワップ変換処理 3回実行後のデータ、
の設定となる。
(d)のデータにおいて、 [B]は、データ左端から 65 + i番目のビット位置に移動する 。この状態では、 [B]の左に位置するビット [b3]は、(c)のデータにおいて左端から i 番目に存在したビットデータ [b3]となる。
[0144] このように、 1つのビット位置のビット [B]に着目してダブルスワップ変換処理によつ て隣接ビット (左に隣接するビット)の変化を解析すると、ビット [B]隣り合うビット情報 が [bl]→ [なし]→[b2]→[b3]と変化していくことが理解される。この隣接ビットの変 化は、データを構成する複数のビット位置にお!/、て発生して!/、る。
[0145] このような隣接ビットの変化はシフト処理においては基本的に発生することがない。
従って、ラウンド鍵の関連性が発生することになる力 本発明に従ったダブルスワップ 処理によるビット位置変更を行なうことで、ビットの順番が入れ替わり、結果として、ラ ゥンド鍵のランダム性を向上させることになる。
[0146] このように、本発明の喑号処理装置におけるラウンド鍵生成処理においては、シフト 処理によるラウンド鍵生成処理ではなぐ iビットダブルスワップ(Double Swap)演 算処理、あるいは逆演算処理によってラウンド鍵を生成する構成を適用したことで、 回路規模を増加させることなぐ効果的にビット位置を変更して各ラウンド鍵の関連性 を低下させたセキュリティの高い暗号処理構成が実現される。
[0147] (2— 4)本発明の第 2実施例に係るラウンド鍵の生成処理構成について
次に、 FeisteKフェイステル)型喑号のように、喑号処理対象データを nビットとした とき、ラウンド鍵として n/2ビットを利用する構成において上述のダブルスワップ (Do ubleSwap)演算を適用する実施例につ!/、て説明する。
[0148] 前述した実施例では、暗号処理対象データを nビットとし、ラウンド鍵も nビットデータ として利用する例を説明した。しかし、先に、図 13を参照して説明したように、例えば Feistel (フェイステル)型暗号では、ラウンド鍵は n/2ビットとなる。に、図 13を参照 して説明したようにシフト処理を実行する構成では、中間鍵データ Lのサイズを nビット として生成して、上位および下位のビットを 2ラウンドで使用して 2ラウンドに一回のシ フト処理を行う構成としていた。
[0149] しかし、前述したように、このようなシフト処理で生成したラウンド鍵は、各ラウンド鍵 の相関性が高く攻撃に弱いという欠点がある。さらに、上位'下位の選択回路(図 13 に示すセレクタ 241)を追加する必要性があり、実装コストや面積が大きくなり望ましく ない。以下、このようなセレクタを省略し、 nビットの中間鍵データを生成して、上述し たダブルスワップ (DoubleSwap)演算および逆演算を適用して、 n/2ビットのラウン ド鍵を出力する鍵スケジュール部の構成例について図 21を参照して説明する。
[0150] 本処理例では、ダブルスワップ (DoubleSwap)演算を 2段階の処理、すなわち、
(a)スワップ(Swap)演算、
(b) iビットサブスワップ (SubSwap)演算、
これらの 2つの処理を交互に実行する構成とした。すなわち、
ダブルスワップ(DoubleSwap)演算
=スワップ(Swap)演算 + iビットサブスワップ(SubSwap)演算、
となる。
[0151] 図 21に示す構成では、非線形変換回路 401、セレクタ 402、レジスタ RegL403は 、図 19に示す構成と同様である。ただし、図 21に示す構成においては、図 19に示す 構成にぉレ、て利用して!/、たダブルスワップ演算および逆演算回路を持たず、その代 わりに、
スワップ(Swap)演算回路 41 1、
iビットサブスワップ(SubSwap)演算回路 412、
ジャンプ (Jump )演算回路 413、
これらを備えたデータ変換部 410を持つ。なお、 iは 1以上の整数である。
[0152] まず、暗号化処理の際の n/2ビットラウンド鍵の生成プロセスについて説明する。
鍵スケジュール部に入力する秘密鍵 Kを kビットとする。秘密鍵 Kを、非線形変換回 路 401に入力し、非線形変換処理を行い nビットの中間鍵データを生成する。中間鍵
[0153] 中間鍵データ Lは、セレクタ 402を介してレジスタ RegL403に入力され格納される 。セレクタ 402には、
スワップ(Swap)演算回路 41 1、
iビットサブスワップ(SubSwap)演算回路 412、
ジャンプ (Jump )演算回路 413、
これらのビット位置変更処理回路が接続され、予め設定されたアルゴリズムに従つ て、レジスタ RegL403に格納されたデータのビット位置変更処理が実行される。
[0154] ラウンドに応じてレジスタ RegL403に格納されたデータに対して、スワップ(Swap) 演算回路 41 1によるスワップ演算、および iビットサブスワップ(SubSwap)演算回路 4 12による iビットサブスワップ演算を交互に実行して、各ラウンド関数において適用す るラウンド鍵: RK , RK . · · · , RK , RKを生成する。なお、レジスタ RegL403に 格納されたデータは nビットであり、スワップ(Swap)演算回路 411によるスワップ演算 、および iビットサブスワップ(SubSwap)演算回路 412による iビットサブスワップ演算 はレジスタ RegL403に格納された nビットデータに対して実行する力 S、ラウンド鍵とし て出力するのは、常に、レジスタ RegL403に格納された nビットデータ中の n/2ビッ トデータのみとする。例えば、レジスタ RegL403に格納された nビットデータ中の上位 n/2ビットを各ラウンド鍵として出力する。
[0155] すべてのラウンド(rラウンド)の生成が終了した時点で、最後にレジスタ RegL403 に格納された nビットデータは、最初の初期的な中間鍵データ Lに戻す処理を実行す る。この処理を実行するのは、ジャンプ (Jumo )演算回路 413である。
[0156] スワップ(Swap)演算回路 41 1の実行するビット位置変更処理例について図 22を 参照して説明する。図 22は、 128ビットの中間鍵データ Lのスワップ(Swap)処理例 を示している。
[0157] スワップ(Swap)演算の定義につ!/、て説明する。
128ビットのデータ Aを、
A= a , a , · · · , a , a )、
0 1 126 127 とする。
aは、 128ビットの各ビットデータである。
さらに、
a [x→y]:、データ A中の連続ビットデータ a力、ら aまでのビット列、
b I c :ビット列 b、 cを連結したビット列、
とする。
[0158] 128ビットデータに対するスワップ(Swap)演算は以下のように定義できる。
「スワップ(Swap)演算定義」
128ビットデータ Aに対する Swap演算によって得られるデータ Bを、
B = Swap 128 (A)
とすると、
B = a [64→127] | a [0→63]
となる。
[0159] すなわち、図 22に示すように、(a)入力データの上位半分のデータ Aと、下位半分
0
のデータ Aを入れ替えて(b)出力を生成する処理がスワップ(Swap)演算によるビッ ト位置変更処理である。なお Swap演算は自分自身が逆変換となる。すなわち、 Swap演算 = swapi {i¾算
でめる。
[0160] なお、上述の例では、 128ビットのデータに対する Swap演算を定義した力 一般 化した 2mビット (mは 2以上の整数)のデータに対する Swap演算は、以下のように定 義できる。
「スワップ(Swap)演算定義」
2mビットデータ A (mは 2以上の整数)に対する Swap演算によって得られるデータ Bを、
B = Swap (A)
2m
とすると、
B = a [m→(2m- 1) ] | a [0→(m— 1) ]
として表現すること力 Sでさる。 [0161] 次に、図 23を参照して、 iビットサブスワップ(SubSwap)演算回路 412の実行する ビット位置変更処理例について説明する。図 23は、 128ビットデータのサブスワップ( SubSwap)処理例を示して!/、る。
[0162] iビットサブスワップ(SubSwap)演算の定義について説明する。
128ビットデータに対する iビットサブスワップ(SubSwap)演算は以下のように定義 できる。
「iビットサブスワップ(SubSwap)演算定義」
128ビットデータ Aに対する iビットサブスワップ(SubSwap)演算によって得られる データ Bを、
B = SubSwap (A)
128、 i
とすると、
B = a [ (64 + i)→127] | a [ (64 -i)→ (63 + i) ] | a [0→(63— i) ]
となる。
[0163] すなわち、図 23に示すように、(a)入力データの中央 2iビットデータ を固定し、デ ータ Aを除く上位ビッタデータ Aと、下位ビットデータ Aを入れ替えて(b)出力を生
1 0 2
成する処理が iビットサブスワップ(SubSwap)演算によるビット位置変更処理である。 なおサブスワップ(SubSwap)演算も、自分自身が逆変換となる。
[0164] なお、上述の例では、 128ビットのデータに対する SubSwap演算を定義した力 一 般化した 2mビット (mは 2以上の整数)のデータに対する SubSwap演算は、以下の ように定義できる。
「iビットサブスワップ(SubSwap)演算定義」
2mビットデータ A (mは 2以上の整数)に対する iビットサブスワップ(SubSwap)演 算によって得られるデータ Bを、
B = SubSwap (A)
2in、 i
とすると、
B = a [ (m + i)→127] | a [ (m— i)→(m—l + i) ] | a [0→(m—l—i) ] として表現すること力 Sでさる。
[0165] 図 22、図 23を参照して説明した スワップ(Swap)演算、
サブスワップ(SubSwap)演算、
これらを連続して 1回ずつ実行すると、先に、図 15を参照して説明したダブルスヮッ プ(DoubleSwp)演算によるビット位置変更処理と同様のビット位置変更がなされる ことになる。
[0166] 図 21に示す鍵スケジュール部では、
スワップ(Swap)演算回路 41 1、
iビットサブスワップ(SubSwap)演算回路 412、
これらの各演算回路を適用したビット位置変更処理を交互に実行して各ラウンド鍵 を生成する。
[0167] 図 21に示す鍵スケジュール部のラウンド鍵の生成シーケンスについて説明する。
鍵スケジュール部に入力する kビットの秘密鍵 Kを、非線形変換回路 401に入力し、 非線形変換処理を行い nビットの中間鍵データ Lを生成して、中間鍵データ Lをセレ クタ 402を介してレジスタ RegL403に格納する。この最初のレジスタ RegL403格納 データ中の n/2ビット、例えば上位半分の n/2ビットが、最初のラウンドのラウンド鍵 として出力される。
[0168] さらに、このレジスタ RegL403格納データに対して、スワップ(Swap)演算回路 41 1によるビット位置変更処理、すなわち、先に図 22を参照して説明したビット位置変 更処理としてのスワップ(Swap)処理が実行され、その結果が、レジスタ RegL403に 入力され、この入力データ中の n/2ビット、例えば上位半分の n/2ビットが次のラウ ンド鍵として出力される。
[0169] さらに、このレジスタ RegL403格納データに対して、サブスワップ(SubSwap)演算 回路 412によるビット位置変更処理、すなわち、先に図 23を参照して説明したビット 位置変更処理としてのサブスワップ(SubSwap)処理が実行され、その結果が、レジ スタ RegL403に入力され、この入力データ中の n/2ビット、例えば上位半分の n/2 ビットが次のラウンド鍵として出力される。
[0170] 以下、
スワップ(Swap)演算回路 41 1、 iビットサブスワップ(SubSwap)演算回路 412、
これらの各演算回路を適用したビット位置変更処理を交互に実行して各ラウンド鍵 を生成する。このようにして、各ラウンド関数において適用するラウンド鍵 RK , RK ,
1 2
• · · , RK , RKが生成される。最後にレジスタ RegL403に格納されたデータに対 して、ジャンプ (Jump )演算回路 413によるビット位置変更処理が実行され、レジス タ RegL403に最初に格納された中間鍵データ Lに戻す処理が実行される。
[0171] ジャンプ (Jump )演算回路 413によるビット位置変更処理について、図 24を参照 して説明する。ジャンプ (Jump )演算回路 413によるビット位置変更処理は、図 24 に示すように、
スワップ(Swap)演算回路 41 1による r/2回のスワップ(Swap)演算と、 iビットサブスワップ(SubSwap)演算回路 412による(r/2— l )回の iビットサブスヮ ップ(SubSwap)演算を交互に繰り返して得られた結果を初期データに戻す演算と してのビット位置変更処理に相当する。先に説明したように、スワップ(Swap)演算と サブスワップ(SubSwap)演算はそれぞれ自分自身が逆変換になって!/、ること力 、 結果としては、ジャンプ (Jumo )演算回路 413によるビット位置変更処理は、図 24 に示すように、
スワップ(Swap)演算回路 41 1による r/2回のスワップ(Swap)演算と、 iビットサブスワップ(SubSwap)演算回路 412による(r/2— 1 )回の iビットサブスヮ ップ(SubSwap)演算を交互に繰り返す処理を再度実行することに相当する。
[0172] このジャンプ (Jump― )演算回路 413による Jump演算により、最後にレジスタ Reg L403に格納されたデータ力 S、スワップ演算およびサブスワップ演算を実行する前の 初期データである中間鍵データ Lの値に戻ることが保証される。
[0173] なお、図 21に示す各演算回路、すなわち、
スワップ(Swap)演算回路 41 1、
iビットサブスワップ(SubSwap)演算回路 412、
ジャンプ (Jump )演算回路 413、
これらの演算回路は、先に、図 16、図 17を参照して説明したと同様のビット位置変 換回路によって実装可能である。従って、例えば、ジャンプ (JumtD )演算回路 413 は、巡回シフト演算を r 1回まとめて行う演算と同程度の回路規模で実現可能であ る。なお、これらのビット位置変更処理は図 16、図 17を参照して説明したと同様のハ 一ドウエア構成として実現しても、ソフトウェアによって実 fiする構成としてもよい。
[0174] 図 21に示す鍵スケジュール部における喑号処理実行時のラウンド鍵生成アルゴリ ズムについて説明する。すなわち、
スワップ(Swap)演算回路 41 1、
iビットサブスワップ(SubSwap)演算回路 412、
ジャンプ (Jump )演算回路 413、
これらの演算回路によるビット位置変更処理を適用した n/2ビットのラウンド鍵生成 アルゴリズムは、以下のように示される。なお、ラウンド数は、偶数ラウンドとし r = rとし て表す。
For i= 1 to r— 1 do
RK— RegLの上位 n/2ビット
IF i= =odd
Swap (RegL)
IF i= = even
SubSwap (RegL)
RK—RegLの上位 n/2ビット
RegL^-Jump (RegL)
[0175] また、図 21に示す鍵スケジュール部を適用して復号処理を実行する際のラウンド鍵 生成アルゴリズムは、以下のようになる。
RegL^-Jump (RegL)
For i = r to 2 do
RKi— RegLの上位 n/2ビット
IF i= = even
Swap (RegL)
IF i= =odd
SubSwap (RegL) RK— RegLの上位 n/2ビット
[0176] 復号処理においては、最初に、ジャンプ (Jump^)演算回路 413による Jump演算 を実行している。この処理によって、暗号処理時の最終ラウンドで適用したラウンド鍵 データを含むデータが、レジスタ RegL403にセットされる。その後は、喑号処理時と 同様、
スワップ(Swap)演算回路 41 1、
iビットサブスワップ(SubSwap)演算回路 412、
これらの演算回路によるビット位置変更処理を交互に実行して、各ラウンドのラウン ド鍵生成を実行する構成である。
[0177] 上述したように、図 21に示す構成により、暗号化/復号共に中間鍵データ Lを生成 してレジスタ RegL403に格納したデータに対して、
スワップ(Swap)演算回路 41 1、
iビットサブスワップ(SubSwap)演算回路 412、
ジャンプ (Jump )演算回路 413、
これらの各演算回路によるビット位置変更処理を行なうことによりラウンド鍵を生成 すること力 Sできる。この実装により、循環シフト回路で必要であった選択回路(図 13に 示すセレクタ 241)を省略でき、なおかつ循環シフト回路で 4種類必要であった演算 回路の種類を 3つに減らすことが可能となり、実装コスト、実装面積の削減が可能とな
[0178] (2 - 5)本発明の第 3実施例に係るラウンド鍵の生成処理構成につ!/、て
次に、本発明の第 3実施例に係るラウンド鍵の生成処理構成について、図 25を参 照して説明する。以下において説明する実施例は、先に説明した構成によって生成 するラウンド鍵データに対して、ラウンド毎に異なる定数 Cを排他的論理和(EXOR) し、この結果をラウンド鍵とする構成である。この構成とすることで、
*中間鍵がオール 0やオール 1の場合にラウンド鍵が同じにならない。
* Slide attack (スライド攻撃)に対して十分な耐性をもつ。
これらの効果がもたらされる。
[0179] 本実施例の鍵スケジュール部の構成例を図 25に示す。図 25に示す鍵スケジユー ル部の構成例は、先に図 21を参照して説明した鍵スケジュール部の構成に、定数生 成回路 420と、排他的論理和演算部 430を追加した構成である。なお、ここでは、図 25に示す鍵スケジュール部の構成をベースとした例を説明する力 先に図 14、図 15 、図 21を参照して説明したダブルスワップ演算と逆演算回路を持つ構成においても 、定数生成回路 420と、排他的論理和演算部 430を追加した構成が実現可能であり 、上述と同様の効果を奏する。ここでは、代表例として、図 19を参照して説明した鍵 スケジュール部の構成に、定数生成回路 420と、排他的論理和演算部 430を追加し た構成例にっレ、て説明する。
[0180] 図 25に示す構成は、各ラウンド (j)ごとに、異なる定数 C (l≤j≤r)を生成する定数
J
生成回路 420と、定数生成回路 421において生成したラウンド毎の定数 C (l≤j≤r)
J
と、レジスタ RegL403の各ラウンド毎のデータとの排他的論理和演算(EXOR)を実 行する排他的論理和(EXOR)演算部 430を追加した構成である。本実施例では、こ の排他的論理和(EXOR)演算部 430による演算結果をラウンド鍵 {RK , RK , · · ·
1 2
, RK , RK }として出力する。
[0181] この構成では、例えば、レジスタ RegL403の格納データの全てのビットが 0となった 場合でも、最終的に出力されるラウンド鍵 {RK , RK , · · · , RK , RK }が同じデ ータとならなレ、と!/、う効果がある。
[0182] 図 25に示す構成では、出力するラウンド鍵は n/2ビットであり、排他的論理和(EX OR)演算部 430では、例えば、レジスタ RegL403の nビット格納データの上位 n/2 ビットと、定数生成回路 420の生成するラウンド毎に異なる nビットのデータとの排他 的論理和(EXOR)演算を実行して、この結果をラウンド鍵として出力する。
[0183] この場合、定数生成回路 420の生成するラウンド毎に異なる定数は nビットのデータ となる力 S、 nビットのランダムな定数をラウンド数 rに応じて r通り生成する回路は、ビット 数 nが大きい場合にはその回路規模も大きくなるという問題がある。このような問題を 解決して、定数生成回路 420の回路規模の小型化を実現する構成につ!/、て説明す
[0184] 例えば、図 26に示すように、定数生成回路 420は、 nビットのデータをラウンド毎に 異なる mビット(m<n)のデータ bに分割して、 bを n/m回繰り返し使用する構成とし て回路規模を小さくする。例えば、 n = 64の場合、定数生成回路 420は、ラウンド毎 に異なる n = 64ビットの定数 Cを生成することになる。
J
[0185] 定数生成回路 420は、例えば、 m= 16として、ラウンド (j)毎に異なる 16ビットのデ ータ bを適用して、以下の演算を実行して、 64ビットのラウンド毎に異なる定数 Cjを生
J
成して排他的論理和(EXOR)演算部 430に出力する。
Cj = ( (b < < < i) [EXOR] (Mask ) , (b < < <j) [EXOR] (Mask ) , (b < < < j 1 j 2 j k) [EXOR] (Mask ) , (b < < <1) [EXOR] (Mask ) )
3 j 4
上記式において、
b < < < iは、 16ビットのデータ bを iビット左シフトしたデータである。
j j
Maskは、予め設定された固定値としてのマスク値(16ビット)である。
(b < < < i) [EXOR] (Maskl)は、(b < < < i)と(Maskl)との排他的論理和演 j j
算を示す。
i, j , k, 1はそれぞれ予め決定されたシフト量であり、
MASK , MASK , MASK , MASKはそれぞれ予め決定されたマスク値(16ビ
1 2 3 4
ット)である。
[0186] すなわち、上記式は、
16ビットのデータ bをそれぞれ異なるシフト量 i, j, k, 1によってシフトした 16ビットデ
J
ータに対して、それぞれ異なるマスクイ直 Mask, Mask, Mask, Maskを適用した
1 2 3 4 排他的論理和演算を実行して得られた 4つの 16ビッデータを並べて 64ビットのラウン ド毎に異なる定数 Cを生成する式である。
J
[0187] このように、定数生成回路 420を、 nビットのデータをラウンド毎に異なる mビット(m <n)のデータ bに分割して、 bを n/m回繰り返し使用する構成とすることで回路規 j J
模を/ J、さくすること力できる。
[0188] また、例えば、図 25に示す鍵スケジュール部力 複数の異なる暗号処理に対応す る異なる鍵長のラウンド鍵を生成して出力する構成とする場合、定数生成回路 420も 、その出力鍵長に応じたビット長のデータを生成して出力することが必要となる。この 場合、定数生成回路 420が生成する定数を鍵長に応じて変えることによって、例えば 、異なる鍵長においてレジスタ RegL403の格納値 Lが同じ値になった場合にもラウ ンド鍵を異なる値にすることができる。
[0189] 例えば、
(a)ラウンド数 rの kビットの鍵長、
(b)ラウンド数 rの kビットの鍵長、
2 2
(c)ラウンド数 rの kビットの鍵長、
3 3
これらの全てをサポートする構成とする場合には、定数生成回路 420は、複数の異 なる喑号処理に対応する全ラウンド数: r +r +r個の異なる mビットのデータ bを、
1 2 3 j 各ラウンドにおいて適用する。この構成により、異なる鍵長においてレジスタ RegL40 3の格納値 Lが同じ値になった場合にもラウンド鍵を異なる値にすることができる。
[0190] なお、 bをラウンドに応じたランダムな値とすると、 bを記録する回路の規模は大きく
J J
なってしまう。複数の異なる暗号処理に対応する全ラウンド数: r +r +r個より少な
1 2 3 い数の mビットのデータ bを設定し、これらを異なる暗号処理に適用する場合に適用
J
順を変更する構成としてもょレ、。
[0191] あるいは、 mビットの定数 bをある初期値からラウンド毎にある規則を用いて更新す
J
るような構成としてもよい。例えば、ガロア体 GF (2)上で定義される m次の既約多項 式 f (X)によって作られる拡大体 GF (2m)上の X倍演算を適用して初期値からラウンド 毎に異なる値を生成する規則が適用可能である。既約多項式 f (X)が原始多項式の 場合には、ある初期値から生成される X倍演算の値の周期は 2m—lとなるため、 2m— 1の異なるデータを生成することが可能となる。他に、上記規則を拡大体 GF (2m)上 の X—1倍演算などとしてもよい。
[0192] 図 25に示すように、レジスタ RegL403の格納データと、定数生成回路 420の生成 するラウンド毎に異なるデータとの排他的論理和(EXOR)演算を実行して、この結果 をラウンド鍵として出力する構成により、
*中間鍵がオール 0やオール 1の場合にラウンド鍵が同じにならない。
*各ラウンド鍵の関連性が排除され Slide attack (スライド攻撃)に対して十分な 耐性をもつ。
これらの効果がもたらされる。
[0193] [3.暗号処理装置の構成例] 最後に、上述した実施例に従った暗号処理を実行する暗号処理装置としての ICモ ジユーノレ 700の構成例を図 27に示す。上述の処理は、例えば PC、 ICカード、リーダ ライタ、その他、様々な情報処理装置において実行可能であり、図 27に示す ICモジ ユール 700は、これら様々な機器に構成することが可能である。
[0194] 図 27に示す CPU(Central processing Unit)701は、喑号処理の開始や、終了、デ ータの送受信の制御、各構成部間のデータ転送制御、その他の各種プログラムを実 行するプロセッサである。メモリ 702は、 CPU701が実行するプログラム、あるいは演 算パラメータなどの固定データを格納する ROM (Read-Only-Memory)、 CPU701 の処理において実行されるプログラム、およびプログラム処理において適宜変化する パラメータの格納エリア、ワーク領域として使用される RAM (Random Access Memory )等からなる。また、メモリ 702は暗号処理に必要な鍵データや、暗号処理において 適用する変換テーブル (置換表)や変換行列に適用するデータ等の格納領域として 使用可能である。なおデータ格納領域は、耐タンパ構造を持つメモリとして構成され ることが好ましい。
[0195] 喑号処理部 703は、例えば上述した各種の喑号処理構成、例えば、
(ァ) SPN (Substitution Permutation Network)構造、
(ィ) Feiste 冓造、
これらの構成を適用した共通鍵ブロック喑号処理アルゴリズムに従った喑号処理、 復号処理を実行する。
[0196] また、暗号処理部 703は、上述した各実施例に対応した構成、すなわち、
(2— 3)本発明の第 1実施例に係るラウンド鍵の生成処理
(2— 4)本発明の第 2実施例に係るラウンド鍵の生成処理
(2— 5)本発明の第 3実施例に係るラウンド鍵の生成処理
これらの処理構成のいずれかに対応する構成を持つ鍵スケジュール部を持つ。
[0197] なお、ここでは、暗号処理手段を個別モジュールとした例を示した力 このような独 立した喑号処理モジュールを設けず、例えば喑号処理プログラムを ROMに格納し、 CPU701が ROM格納プログラムを読み出して実行するように構成してもよい。
[0198] 乱数発生器 704は、暗号処理に必要となる鍵の生成などにおいて必要となる乱数 の発生処理を実行する。
[0199] 送受信部 705は、外部とのデータ通信を実行するデータ通信処理部であり、例え ばリーダライタ等、 ICモジュールとのデータ通信を実行し、 ICモジュール内で生成し た暗号文の出力、あるいは外部のリーダライタ等の機器からのデータ入力などを実行 する。
[0200] 以上、特定の実施例を参照しながら、本発明について詳解してきた。し力、しな力 Sら、 本発明の要旨を逸脱しない範囲で当業者が該実施例の修正や代用を成し得ること は自明である。すなわち、例示という形態で本発明を開示してきたのであり、限定的 に解釈されるべきではない。本発明の要旨を判断するためには、特許請求の範囲の 欄を参酌すべきである。
[0201] なお、明細書中において説明した一連の処理はハードウェア、またはソフトウェア、 あるいは両者の複合構成によって実行することが可能である。ソフトウェアによる処理 を実行する場合は、処理シーケンスを記録したプログラムを、専用のハードウェアに 組み込まれたコンピュータ内のメモリにインストールして実行させる力、、あるいは、各 種処理が実行可能な汎用コンピュータにプログラムをインストールして実行させること が可能である。
[0202] 例えば、プログラムは記録媒体としてのハードディスクや ROM (Read Only Memory )に予め記録しておくことができる。あるいは、プログラムはフレキシブルディスク、 CD — ROM(Compact Disc Read Only Memory), MO(Magneto optical)ディスク, DVD( Digital Versatile Disc),磁気ディスク、半導体メモリなどのリムーバブル記録媒体に、 一時的あるいは永続的に格納(記録)しておくことができる。このようなリムーバブル記 録媒体は、 V、わゆるパッケージソフトウェアとして提供することができる。
[0203] なお、プログラムは、上述したようなリムーバブル記録媒体からコンピュータにインス トールする他、ダウンロードサイトから、コンピュータに無線転送したり、 LAN(Local A rea Network),インターネットといったネットワークを介して、コンピュータに有線で転 送し、コンピュータでは、そのようにして転送されてくるプログラムを受信し、内蔵する ハードディスク等の記録媒体にインストールすることができる。
[0204] なお、明細書に記載された各種の処理は、記載に従って時系列に実行されるのみ ならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個 別に実行されてもよい。また、本明細書においてシステムとは、複数の装置の論理的 集合構成であり、各構成の装置が同一筐体内にあるものには限らない。
産業上の利用可能性
上述したように、本発明の一実施例の構成によれば、共通鍵ブロック暗号処理にお けるラウンド鍵生成処理において、秘密鍵の変換処理によって生成した中間鍵をレ ジスタに格納し、レジスタ格納データを構成する部分データのスワップ(入れ替え)処 理を繰り返し実行してラウンド鍵を生成する。例えば、等しいビット数を持つ部分デー タの組を 2組設定するようにレジスタ格納データを 4つの部分データに区分し、各部 分データのスワップ (入れ替え)処理を繰り返し実行して、複数の異なるラウンド鍵を 生成する。本構成により、各ラウンド鍵のビット配列を効果的に入れ替え、相関性の 低いラウンド鍵を生成することが可能となり、鍵の解析困難性を高めた安全性の高い 暗号処理構成が実現される。

Claims

請求の範囲
[1] 共通鍵ブロック暗号処理を実行する暗号処理装置であり、
ラウンド関数を複数ラウンド繰り返すデータ変換処理を行なう暗号処理部と、 前記ラウンド関数の実行に適用するラウンド鍵を生成する鍵スケジュール部を有し、 前記鍵スケジュール部は、
秘密鍵の変換処理によって中間鍵を生成し、生成した中間鍵を格納するレジスタと 前記レジスタに格納されたレジスタ格納データに対するデータ変換処理を実行する データ変換部であり、前記レジスタ格納データを構成する部分データのスワップ (入 れ替え)処理を繰り返し実行して複数の異なるラウンド鍵を生成するデータ変換部と、 を有する構成であることを特徴とする暗号処理装置。
[2] 前記データ変換部は、
等し!/、ビット数を持つ部分データの組を 2組設定するように前記レジスタ格納データ を 4つの部分データに区分し、各部分データのスワップ (入れ替え)処理を繰り返し実 行して、複数の異なるラウンド鍵を生成する構成であることを特徴とする請求項 1に記 載の暗号処理装置。
[3] 前記データ変換部は、
2mビットからなる前記レジスタ格納データを、
(a)先頭 iビットの部分データ A、
0
(b)先頭から i+ 1ビット〜 mビットの部分データ A、
(c)先頭から m+ 1ビット〜 2m— iビットの部分データ A、
2
(d)末尾 iビットの部分データ A、
3
上記(a)〜(d)に示す 4つの部分データに区分し、各部分データのスワップ (入れ 替え)処理を繰り返し実行して、複数の異なるラウンド鍵を生成する構成であることを 特徴とする請求項 1に記載の暗号処理装置。
[4] 前記データ変換部は、
等し!/、ビット数を持つ部分データの組を 2組設定するように前記レジスタ格納データ を 4つの部分データに区分し、各組の部分データのスワップ(入れ替え)処理を実行 するダブルスワップ処理実行部と、
前記ダブルスワップ実行部の処理の複数の繰り返し処理の逆処理に相当するデー タ変換処理を実行するダブルスワップ逆処理実行部と、
を有する構成であることを特徴とする請求項 1に記載の暗号処理装置。
[5] 前記データ変換部は、
暗号化処理におけるラウンド鍵生成と逆順でラウンド鍵を生成する復号用ラウンド 鍵生成処理を行なう構成を有し、
等し!/、ビット数を持つ部分データの組を 2組設定するように前記レジスタ格納データ を 4つの部分データに区分し、各組の部分データのスワップ(入れ替え)処理を実行 するダブルスワップ処理を予め規定されたラウンド数に基づいて決定される回数分繰 り返した結果データを、前記レジスタ格納データに対する変換処理によって生成する 復号用ラウンド鍵対応データ変換部と、
前記復号用ラウンド鍵対応データ変換部において変換されたデータに対して、前 記ダブルスワップ処理の逆処理を実行して、各ラウンドのラウンド鍵を生成するダブ ルスワップ逆処理実行部と、
を有することを特徴とする請求項 1に記載の暗号処理装置。
[6] 前記データ変換部は、
2mビットからなる前記レジスタ格納データを、
(a)先頭 mビットの部分データ A、
0
(b)末尾 mビットの部分データ A、
上記(a)〜(b)に示す 2つの部分データに区分し、各部分データのスワップ (入れ 替え)処理を実行するスワップ処理実行部と、
2mビットからなる前記レジスタ格納データを、
(c)先頭(m— i)ビットの部分データ A、
0
(d)先頭から(m— i+ 1)ビット〜(m + i)ビットの部分データ A、
(e)先頭から(m + i+ 1)ビット〜末尾ビットの部分データ A、
2
上記 (c)〜(e)に示す 3つの部分データに区分し、上記 (c)と(d)の部分データのス ヮップ(入れ替え)処理を実行するサブスワップ処理実行部と、 を有し、
前記スワップ処理実行部と、前記サブスワップ処理実行部の処理をラウンド進行に 応じて交互に実行してラウンド鍵の生成を実行する構成であることを特徴とする請求 項 1に記載の暗号処理装置。
[7] 前記データ変換部は、さらに、
前記スワップ処理実行部と、前記サブスワップ処理実行部の処理の繰り返し処理の 逆処理に相当するデータ変換を実行する逆変換処理実行部を有することを特徴とす る請求項 6に記載の暗号処理装置。
Figure imgf000055_0001
ラウンド毎に異なる定数を生成する定数生成部と、
前記定数生成部の生成した定数と、前記レジスタ格納データとの排他的論理和演 算を実行してラウンド鍵を生成する排他的論理和演算部と、
を有する構成であることを特徴とする請求項 1〜7いずれかに記載の暗号処理装置
[9] 前記定数生成部は、
生成する定数より少ないビット数のラウンド毎に異なる少ビット数データのシフトデー タの組み合わせによってラウンド毎に異なる定数を生成する構成であることを特徴と する請求項 8に記載の暗号処理装置。
[10] 前記定数生成部は、
生成する定数より少ないビット数の少ビット数データに対するデータ変換によって、 ラウンド毎に異なる少ビット数データを生成して、生成した少ビット数データのシフトデ ータの組み合わせによってラウンド毎に異なる定数を生成する構成であることを特徴 とする請求項 8に記載の暗号処理装置。
[11] 暗号処理装置において共通鍵ブロック暗号処理を実行する暗号処理方法であり、 鍵スケジュール部にお!/、て、暗号処理部で実行する複数ラウンドのラウンド関数の 実行に適用する複数のラウンド鍵を生成するラウンド鍵生成ステップと、
暗号処理部にお!/、て、前記ラウンド鍵を適用したラウンド関数を複数ラウンド繰り返 すデータ変換処理を行なう喑号処理ステップとを有し、 前記ラウンド鍵生成ステップは、
秘密鍵の変換処理によって中間鍵を生成してレジスタに格納する中間鍵生成ステ データ変換部が前記レジスタに格納されたレジスタ格納データを構成する部分デ ータのスワップ (入れ替え)処理を繰り返し実行して、複数の異なるラウンド鍵を生成 するデータ変換ステップと、
を有するステップであることを特徴とする暗号処理方法。
[12] 前記データ変換ステップは、
等し!/、ビット数を持つ部分データの組を 2組設定するように前記レジスタ格納データ を 4つの部分データに区分し、各部分データのスワップ (入れ替え)処理を繰り返し実 行して、複数の異なるラウンド鍵を生成するステップであることを特徴とする請求項 11 に記載の暗号処理方法。
[13] 前記データ変換ステップは、
2mビットからなる前記レジスタ格納データを、
(a)先頭 iビットの部分データ A、
0
(b)先頭から i+ 1ビット〜 mビットの部分データ A、
(c)先頭から m+ 1ビット〜 2m— iビットの部分データ A、
2
(d)末尾 iビットの部分データ A、
3
上記(a)〜(d)に示す 4つの部分データに区分し、各部分データのスワップ (入れ 替え)処理を繰り返し実行して、複数の異なるラウンド鍵を生成するステップであること を特徴とする請求項 11に記載の暗号処理方法。
[14] 前記データ変換ステップは、
等し!/、ビット数を持つ部分データの組を 2組設定するように前記レジスタ格納データ を 4つの部分データに区分し、各組の部分データのスワップ(入れ替え)処理を実行 するダブルスワップ処理実行ステップと、
前記ダブルスワップ実行ステップの処理の複数の繰り返し処理の逆処理に相当す るデータ変換処理を実行するダブルスワップ逆処理実行ステップと、
を有するステップであることを特徴とする請求項 11に記載の暗号処理方法。 [15] 前記データ変換ステップは、
暗号化処理におけるラウンド鍵生成と逆順でラウンド鍵を生成する復号用ラウンド
Figure imgf000057_0001
等し!/、ビット数を持つ部分データの組を 2組設定するように前記レジスタ格納データ を 4つの部分データに区分し、各組の部分データのスワップ(入れ替え)処理を実行 するダブルスワップ処理を予め規定されたラウンド数に基づいて決定される回数分繰 り返した結果データを、前記レジスタ格納データに対する変換処理によって生成する 復号用ラウンド鍵対応データ変換ステップと、
前記復号用ラウンド鍵対応データ変換ステップにおいて変換されたデータに対して 、前記ダブルスワップ処理の逆処理を実行して、各ラウンドのラウンド鍵を生成するダ ブルスワップ逆処理実行ステップと、
を有するステップであることを特徴とする請求項 11に記載の暗号処理方法。
前記データ変換ステップステップは、
2mビットからなる前記レジスタ格納データを、
(a)先頭 mビットの部分データ A、
0
(b)末尾 mビットの部分データ A、
上記(a)〜(b)に示す 2つの部分データに区分し、各部分データのスワップ (入れ 替え)処理を実行するスワップ処理実行ステップと、
2mビットからなる前記レジスタ格納データを、
(c)先頭(m— i)ビットの部分データ A、
0
(d)先頭から(m— i+ 1)ビット〜(m + i)ビットの部分データ A、
(e)先頭から(m + i+ 1)ビット〜末尾ビットの部分データ A、
2
上記 (c)〜(e)に示す 3つの部分データに区分し、上記 (c)と(d)の部分データのス ヮップ(入れ替え)処理を実行するサブスワップ処理実行ステップと、
を有し、
前記スワップ処理実行ステップと、前記サブスワップ処理実行ステップの処理をラウ ンド進行に応じて交互に実行してラウンド鍵の生成を実行するステップであることを特 徴とする請求項 11に記載の暗号処理方法。 前記データ変換ステップは、さらに、
前記スワップ処理実行ステップと、前記サブスワップ処理実行ステップの処理の,橾り 返し処理の逆処理に相当するデータ変換を実行する逆変換処理実行ステップを有 することを特徴とする請求項 16に記載の暗号処理方法。
前記暗号処理方法は、さらに、
定数生成部が、ラウンド毎に異なる定数を生成する定数生成ステップと、 排他的論理和演算部が、前記定数生成部の生成した定数と、前記レジスタ格納デ ータとの排他的論理和演算を実行してラウンド鍵を生成する排他的論理和演算ステ を有することを特徴とする請求項 11〜; 17いずれかに記載の暗号処理方法。
前記定数生成ステップは、
生成する定数より少ないビット数のラウンド毎に異なる少ビット数データのシフトデー タの組み合わせによってラウンド毎に異なる定数を生成するステップであることを特徴 とする請求項 18に記載の暗号処理方法。
前記定数生成ステップは、
生成する定数より少ないビット数の少ビット数データに対するデータ変換によって、 ラウンド毎に異なる少ビット数データを生成して、生成した少ビット数データのシフトデ ータの組み合わせによってラウンド毎に異なる定数を生成するステップであることを特 徴とする請求項 18に記載の暗号処理方法。
喑号処理装置において共通鍵ブロック喑号処理を実行させるコンピュータ 'プログ ラムであり、
鍵スケジュール部に、暗号処理部で実行する複数ラウンドのラウンド関数の実行に 適用する複数のラウンド鍵を生成させるラウンド鍵生成ステップと、
暗号処理部に、前記ラウンド鍵を適用したラウンド関数を複数ラウンド繰り返すデー タ変換処理を行なわせる喑号処理ステップとを有し、
前記ラウンド鍵生成ステップは、
秘密鍵の変換処理によって中間鍵を生成してレジスタに格納させる中間鍵生成ス データ変換部が前記レジスタに格納されたレジスタ格納データを構成する部分デ ータのスワップ (入れ替え)処理を繰り返し実行させて、複数の異なるラウンド鍵を生 成させるデータ変換ステップと、
を実行させるステップであることを特徴とするコンピュータ 'プログラム。
PCT/JP2007/072551 2006-12-11 2007-11-21 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム WO2008072455A1 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
US12/518,510 US8737603B2 (en) 2006-12-11 2007-11-21 Cryptographic processing apparatus, cryptographic processing method, and computer program
CN2007800456671A CN101553857B (zh) 2006-12-11 2007-11-21 加密处理装置、加密处理方法以及计算机程序
EP07832281.5A EP2096616A4 (en) 2006-12-11 2007-11-21 ENCRYPTION DEVICE, ENCRYPTION METHOD, AND COMPUTER PROGRAM
HK10103332.9A HK1138098A1 (en) 2006-12-11 2010-03-31 Encryption device, encryption method, and computer program

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2006-333882 2006-12-11
JP2006333882A JP5055993B2 (ja) 2006-12-11 2006-12-11 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム

Publications (1)

Publication Number Publication Date
WO2008072455A1 true WO2008072455A1 (ja) 2008-06-19

Family

ID=39511480

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2007/072551 WO2008072455A1 (ja) 2006-12-11 2007-11-21 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム

Country Status (7)

Country Link
US (1) US8737603B2 (ja)
EP (1) EP2096616A4 (ja)
JP (1) JP5055993B2 (ja)
KR (1) KR20090094086A (ja)
CN (1) CN101553857B (ja)
HK (1) HK1138098A1 (ja)
WO (1) WO2008072455A1 (ja)

Families Citing this family (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110064214A1 (en) * 2003-09-09 2011-03-17 Ternarylogic Llc Methods and Apparatus in Alternate Finite Field Based Coders and Decoders
US8577026B2 (en) 2010-12-29 2013-11-05 Ternarylogic Llc Methods and apparatus in alternate finite field based coders and decoders
US7772999B2 (en) * 2007-12-10 2010-08-10 Peter Lablans N-state ripple adder scheme coding with corresponding n-state ripple adder scheme decoding
JP4882598B2 (ja) * 2006-07-28 2012-02-22 ソニー株式会社 暗号処理装置、暗号処理アルゴリズム構築方法、および暗号処理方法、並びにコンピュータ・プログラム
US8417942B2 (en) * 2007-08-31 2013-04-09 Cisco Technology, Inc. System and method for identifying encrypted conference media traffic
US8837598B2 (en) * 2007-12-28 2014-09-16 Cisco Technology, Inc. System and method for securely transmitting video over a network
US20090169001A1 (en) * 2007-12-28 2009-07-02 Cisco Technology, Inc. System and Method for Encryption and Secure Transmission of Compressed Media
US8233620B2 (en) * 2009-02-27 2012-07-31 Inside Secure Key recovery mechanism for cryptographic systems
JP2010245881A (ja) * 2009-04-07 2010-10-28 Toshiba Corp 暗号処理装置
JP5042272B2 (ja) * 2009-05-15 2012-10-03 日本電信電話株式会社 暗号用拡大鍵生成回路、復号用拡大鍵生成回路、暗号用拡大鍵生成方法および復号用拡大鍵生成方法
WO2011101994A1 (ja) * 2010-02-22 2011-08-25 株式会社東芝 暗号化装置
US8611540B2 (en) * 2010-06-23 2013-12-17 Damaka, Inc. System and method for secure messaging in a hybrid peer-to-peer network
JP5198526B2 (ja) * 2010-09-21 2013-05-15 株式会社東芝 暗号化装置および復号装置
JP5682527B2 (ja) * 2011-03-28 2015-03-11 ソニー株式会社 暗号処理装置、および暗号処理方法、並びにプログラム
US8707123B2 (en) * 2011-12-30 2014-04-22 Lsi Corporation Variable barrel shifter
KR101362675B1 (ko) * 2012-11-30 2014-02-12 한국전자통신연구원 저전력 암호화 장치 및 방법
JP6238774B2 (ja) 2013-02-21 2017-11-29 キヤノン株式会社 ハッシュ値生成装置
JP6113091B2 (ja) 2013-03-07 2017-04-12 キヤノン株式会社 ハッシュ値生成装置
US9813235B2 (en) * 2013-03-11 2017-11-07 Indian Institute of Technology Kharagpur Resistance to cache timing attacks on block cipher encryption
JP2014192612A (ja) * 2013-03-26 2014-10-06 Toshiba Corp 生成装置、暗号化装置、復号装置、生成方法、暗号化方法、復号方法およびプログラム
JP2014240921A (ja) * 2013-06-12 2014-12-25 株式会社東芝 暗号装置、暗号処理方法及び暗号処理プログラム
JP6178142B2 (ja) * 2013-07-12 2017-08-09 株式会社東芝 生成装置、方法およびプログラム
JP2015025930A (ja) * 2013-07-26 2015-02-05 日本電信電話株式会社 圧縮関数演算装置、圧縮関数演算方法及びプログラム
KR101534792B1 (ko) * 2014-04-08 2015-07-08 주식회사 오비고 인증키 전송 관련하여 보안성을 높이기 위한 방법, 서버 및 컴퓨터 판독 가능한 기록 매체
WO2016059870A1 (ja) * 2014-10-14 2016-04-21 ソニー株式会社 暗号処理装置、および暗号処理方法、並びにプログラム
US9960908B1 (en) * 2015-06-19 2018-05-01 Amazon Technologies, Inc. Reduced-latency packet ciphering
RU2630423C1 (ru) * 2016-12-08 2017-09-07 Общество с ограниченной ответственностью "ЛАН-ПРОЕКТ" Способ криптографического преобразования информации
JP6441390B2 (ja) * 2017-01-26 2018-12-19 株式会社東芝 生成装置、暗号化装置、復号装置、生成方法、暗号化方法、復号方法およびプログラム
JP7063628B2 (ja) * 2018-01-11 2022-05-09 Necプラットフォームズ株式会社 暗号化装置、暗号化方法およびプログラム
KR102213835B1 (ko) * 2018-11-09 2021-02-09 고려대학교 산학협력단 동형암호 기법으로 암호화된 데이터의 지수 함수 연산 서버 및 방법
US11838402B2 (en) 2019-03-13 2023-12-05 The Research Foundation For The State University Of New York Ultra low power core for lightweight encryption
JP7383985B2 (ja) * 2019-10-30 2023-11-21 富士電機株式会社 情報処理装置、情報処理方法及びプログラム
CN110880967B (zh) * 2019-12-24 2023-04-07 北京炼石网络技术有限公司 采用分组对称密钥算法对多消息并行加解密方法
KR20210108787A (ko) 2020-02-26 2021-09-03 삼성전자주식회사 듀얼 인코더를 포함하는 시큐리티 회로 및 이를 포함하는 암복호화기
CN112887085B (zh) * 2021-01-13 2022-06-24 深圳安捷丽新技术有限公司 一种ssd固态硬盘主控芯片安全密钥生成方法、装置和系统
CN113343276B (zh) * 2021-07-01 2022-06-14 衡阳师范学院 基于广义二维猫映射的轻量级分组密码算法gcm的加密方法
US20230164150A1 (en) * 2021-11-24 2023-05-25 At&T Intellectual Property I, L.P. Anomaly detection relating to communications using information embedding
CN115499152A (zh) * 2022-07-27 2022-12-20 北京航空航天大学 一种基于寄存器优化的sm4快速软件实现方法
CN115017530B (zh) * 2022-08-08 2022-12-16 创云融达信息技术(天津)股份有限公司 一种数据安全存储设备及方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003345244A (ja) * 2002-05-23 2003-12-03 Mitsubishi Electric Corp データ変換装置及びデータ変換方法及びデータ変換プログラム及びデータ変換プログラムを記録したコンピュータ読み取り可能な記録媒体
WO2006115219A1 (ja) * 2005-04-21 2006-11-02 Matsushita Electric Industrial Co., Ltd. プログラム難読化装置及び難読化方法

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01147585A (ja) * 1987-12-04 1989-06-09 Nippon Telegr & Teleph Corp <Ntt> 暗号装置
US6578143B1 (en) * 1998-12-18 2003-06-10 Qualcomm Incorporated Method for negotiating weakened keys in encryption systems
US6578061B1 (en) * 1999-01-19 2003-06-10 Nippon Telegraph And Telephone Corporation Method and apparatus for data permutation/division and recording medium with data permutation/division program recorded thereon
JP3499810B2 (ja) * 2000-03-06 2004-02-23 株式会社東芝 暗号化装置、暗号化方法及び暗号化装置としてコンピュータを機能させるためのプログラムを記録したコンピュータ読取り可能な記録媒体並びに復号装置、復号方法及び復号装置としてコンピュータを機能させるためのプログラムを記録したコンピュータ読取り可能な記録媒体
CN1734526B (zh) * 2000-03-09 2013-09-18 三菱电机株式会社 数据变换装置和数据变换方法
US7237097B2 (en) * 2001-02-21 2007-06-26 Mips Technologies, Inc. Partial bitwise permutations
US7317795B2 (en) * 2001-04-17 2008-01-08 She Alfred C Pipelined deciphering round keys generation
US20040047466A1 (en) * 2002-09-06 2004-03-11 Joel Feldman Advanced encryption standard hardware accelerator and method
JP2005218023A (ja) * 2004-02-02 2005-08-11 Matsushita Electric Ind Co Ltd 鍵配信システム
JP4444781B2 (ja) 2004-10-14 2010-03-31 日本電信電話株式会社 無線送信機、送信信号電力調整装置および送信信号電力調整方法
JP4622807B2 (ja) * 2005-03-25 2011-02-02 ソニー株式会社 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
US7702100B2 (en) * 2006-06-20 2010-04-20 Lattice Semiconductor Corporation Key generation for advanced encryption standard (AES) Decryption and the like

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003345244A (ja) * 2002-05-23 2003-12-03 Mitsubishi Electric Corp データ変換装置及びデータ変換方法及びデータ変換プログラム及びデータ変換プログラムを記録したコンピュータ読み取り可能な記録媒体
WO2006115219A1 (ja) * 2005-04-21 2006-11-02 Matsushita Electric Industrial Co., Ltd. プログラム難読化装置及び難読化方法

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
K. NYBERG: "ASIACRYPT'96", 1996, SPRINGERVERLAG, article "Generalized Feistel networks", pages: 91 - 104
OKAMOTO E.: "Ango Riron Nyumon", KYORITSU SHUPPAN CO. LTD., 25 February 1993 (1993-02-25), pages 33 - 38, XP003025824 *
See also references of EP2096616A4
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

Also Published As

Publication number Publication date
CN101553857A (zh) 2009-10-07
KR20090094086A (ko) 2009-09-03
JP5055993B2 (ja) 2012-10-24
US8737603B2 (en) 2014-05-27
EP2096616A1 (en) 2009-09-02
JP2008145791A (ja) 2008-06-26
US20100014664A1 (en) 2010-01-21
HK1138098A1 (en) 2010-08-13
CN101553857B (zh) 2011-04-20
EP2096616A4 (en) 2014-04-02

Similar Documents

Publication Publication Date Title
JP5055993B2 (ja) 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP4905000B2 (ja) 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP4961909B2 (ja) 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP5050454B2 (ja) 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP4967544B2 (ja) 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
US8295478B2 (en) Cryptographic processing apparatus, algorithm constructing method, processing method, and computer program applying an extended feistel structure
JP4622807B2 (ja) 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
US8396210B2 (en) Cryptographic processing apparatus and cryptographic processing method, and computer program
WO2008026624A1 (en) Data conversion device, data conversion method, and computer program
JP4622222B2 (ja) 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP2007199156A (ja) 暗号処理装置、暗号処理装置製造装置、および方法、並びにコンピュータ・プログラム
JP2006072054A (ja) 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム
JP5680016B2 (ja) 復号処理装置、情報処理装置、および復号処理方法、並びにコンピュータ・プログラム
JP5772934B2 (ja) データ変換装置、およびデータ変換方法、並びにコンピュータ・プログラム
JP5338945B2 (ja) 復号処理装置、情報処理装置、および復号処理方法、並びにコンピュータ・プログラム
JP2009003312A (ja) 暗号処理装置、および暗号処理方法、並びにコンピュータ・プログラム

Legal Events

Date Code Title Description
WWE Wipo information: entry into national phase

Ref document number: 200780045667.1

Country of ref document: CN

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

Ref document number: 07832281

Country of ref document: EP

Kind code of ref document: A1

WWE Wipo information: entry into national phase

Ref document number: 1020097011387

Country of ref document: KR

WWE Wipo information: entry into national phase

Ref document number: 12518510

Country of ref document: US

Ref document number: 2007832281

Country of ref document: EP

NENP Non-entry into the national phase

Ref country code: DE