WO2005103908A1 - 暗号又は復号を行うコンピュータシステム及びコンピュータプログラム - Google Patents

暗号又は復号を行うコンピュータシステム及びコンピュータプログラム Download PDF

Info

Publication number
WO2005103908A1
WO2005103908A1 PCT/JP2005/007319 JP2005007319W WO2005103908A1 WO 2005103908 A1 WO2005103908 A1 WO 2005103908A1 JP 2005007319 W JP2005007319 W JP 2005007319W WO 2005103908 A1 WO2005103908 A1 WO 2005103908A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
conversion
box
conversion data
value
Prior art date
Application number
PCT/JP2005/007319
Other languages
English (en)
French (fr)
Inventor
Masao Nonaka
Kaoru Yokota
Motoji Ohmori
Original Assignee
Matsushita Electric Industrial Co., Ltd.
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 Matsushita Electric Industrial Co., Ltd. filed Critical Matsushita Electric Industrial Co., Ltd.
Priority to EP05730638A priority Critical patent/EP1764698A1/en
Priority to US11/578,837 priority patent/US8054967B2/en
Priority to JP2006512522A priority patent/JP4701166B2/ja
Publication of WO2005103908A1 publication Critical patent/WO2005103908A1/ja

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/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0631Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES 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/005Countermeasures against attacks on cryptographic mechanisms for timing attacks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/24Key scheduling, i.e. generating round keys or sub-keys for block encryption

Definitions

  • the present invention relates to an encryption and decryption technique for handling information in secret.
  • ADSL Asymmetric Digital Subscriber Line
  • optical fiber optical fiber
  • encryption technology is used. For example, only a user who encrypts digital content using a key and distributes it through a communication channel and receives a decryption key corresponding to the key is encrypted. The decrypted content can be decrypted to reproduce the original digital content.
  • the cryptographic program is secretly stored inside the cryptographic program using the execution environment, ie, sub-information leaked from the computer during execution of the cryptographic program on the computer, for example, processing time and power consumption.
  • Side channel attacks have been proposed to obtain confidential information, for example, a decryption key.
  • Non-Patent Document 1 and Non-Patent Document 2 as one of such attack methods, there is a timing attack that focuses on a cache memory that is built in a computer and used for the purpose of speeding up processing.
  • the cache memory (see Non-Patent Document 3) is a key that enables high-speed access to data once obtained from an operation unit, for example, a CPU memory.
  • an operation unit for example, a CPU memory.
  • This timing attack is effective against a signal program executed on a CPU equipped with a cache memory.
  • a repetitive block using a table lookup operation (generally called SBOX lookup) is used.
  • the AES (Advanced Encryption Standard) method (described in Non-Patent Document 4) and the DES (Data Encryption Standard) method, which are No. ⁇ systems, are the targets of attacks.
  • the execution environment to which this timing attack can be applied is, for example, a general personal computer (PC / AT compatible machine, etc.) or a smart card having a cache memory.
  • AES performs an exclusive OR operation on input data and a secret key (expanded key), and performs the above-described table reference operation using the operation result. It is also assumed that the cache data does not store the table data array (SBOX) used in the table reference calculation of the encryption process before the encryption process is started. Under such an assumption, whether a table element is obtained from the cache memory or the main memory in a table reference operation in the middle of the encryption process depends on the input data and the secret key. Is determined.
  • the table element is obtained from the cache memory by changing the value of the input data, and the table element is obtained from the main memory. Means that there are both cases. That is, changing the input data changes the entire encryption processing time.
  • the entire symbol processing time is measured, and based on the processing time obtained by the measurement, in a table reference operation in the middle of processing, the table element is cached. It guesses whether the force obtained from the sh memory and the force obtained from the main memory, and analyzes the secret key (expanded key) based on the guess and the input data.
  • Non-Patent Document 1 There are two main approaches to such timing attacks.
  • One is to measure the encryption processing time for each block (128 bits in the case of the AES system), as described in Non-Patent Document 1.
  • the other measures the encryption processing time for each two blocks (128 bits X 2 in the case of the AES system) as described in Non-Patent Document 2.
  • the timing attack described in Non-Patent Document 1 utilizes the fact that when the same table element is accessed twice, the table element is acquired from the cache memory for the second time, and the processing time is shortened. I have.
  • the general outline and flow of the timing attack described in Non-Patent Document 1 are as follows.
  • each time one block is encrypted the contents of the cache memory are cleared. Then, focusing on two table reference operations, the key information that affects the input values of the two table reference operations is assumed to be a certain value. Then, under that assumption, input data is selected so that the input values of the two table lookup operations are the same, and the processing time is measured. The above is performed for all possible key information values. Ultimately, the key with the shortest processing time is output as the correct key. After that, we focus on another two table lookup operations and estimate the key in the same way.
  • the timing attack for measuring the processing time is caused by the fact that the signal processing time of one block or two blocks differs depending on the input data. For this reason, as a countermeasure against timing attacks, there is a method in which the processing time of the signal processing of one block or two blocks remains constant without changing even if the input data is changed. As a countermeasure for such a problem, there is a conventional technique described in Section 4.2 of Non-Patent Document 5. An outline of the conventional technology will be described. Here, as a specific application example of the encryption processing, an encryption processing of the AES method will be described.
  • Non-Patent Document 5 The feature of the prior art disclosed in Non-Patent Document 5 is that before executing the actual AES scheme decoding processing, the table data array of the table reference operation used in the AES SubBytes processing is performed. By accessing each table element one by one, processing independent of input data (called Cache Warming in Non-Patent Document 5) is added. As a result, all the table elements used in the table reference calculation of the AES-type SubBytes process can be stored in the cache memory before the actual AES-type symbol processing is started, and as a result, In the table reference operation of the SubBytes processing of the AES encryption processing, all table elements are obtained from the cache memory. As a result, the processing time is always constant without changing the entire processing time depending on the input message. In other words, it is possible to improve the resistance to the timing attack for measuring the processing time.
  • Patent Document 1 discloses a conversion table for encrypting or decrypting one plaintext or one ciphertext for the purpose of providing an encryption device having a protection function against a cache attack type cryptanalysis. It discloses a means for making the number of cache mishits at the time of access to an arbitrary plaintext or ciphertext substantially uniform.
  • Non-Patent Document 2 Toruhiro Tsurumaru, "Timing Attacks on 64-bit Block Ciphers” The 2003
  • Non-Patent Document 3 David ⁇ Patterson, John 'Le Hennessy, "Computer Configuration and Design, ISBN4-8222-8056-X, published by Nikkei BP
  • Non-Patent Document 4 Federal Information Processing Standard (FIPS) Publication 197, November 26, 2001.
  • Non-Patent Document 5 D. Page, "Defending against cache-based side-channel attacks" Information Security Technical Report ⁇ Vol. 8, No. l, Page 30-44, 2003.
  • Patent Document 1 Japanese Patent Application Publication No. 2004-120307
  • An object of the present invention is to provide a computer system, a method, and a computer program which are resistant to a timing attack for observing a processing time in order to meet the above demand.
  • the present invention provides a computer system for encrypting or decrypting a plaintext or ciphertext through a process of converting partial data related to the plaintext or ciphertext into corresponding conversion data.
  • a main memory unit storing a conversion table including conversion data corresponding to partial data, and a computer program including a plurality of instructions for obtaining conversion data corresponding to partial data using the conversion table in the process.
  • a cache memory unit including a line storage area of a predetermined length, and an execution unit that reads and decodes one instruction at a time from the computer program stored in the main memory unit, decodes the instruction, and operates in accordance with the decoding result.
  • the execution unit when acquiring the conversion data included in the conversion table, first, obtains the license of the cache memory unit. Attempts to acquire a storage area force the converted data, if the converted data into the line memory area does not exist, Acquiring the conversion data from the main memory unit, writing the predetermined length of inclusion data including the obtained conversion data into the line storage area, wherein the conversion table has the line table area of the predetermined length, At a predetermined position in the line table area, one piece of conversion data corresponding to the partial data is included, and at another position in the line table area, data irrelevant to the conversion is included.
  • the line storage area of the cache memory unit contains one piece of conversion data, so that even if the input message is changed, the processing time of the encryption or decryption processing is constant. The resistance to the timing attack for observing the processing time is improved.
  • the conversion table includes the conversion data at a position depending on a value of the partial data
  • the operation instruction group performs an operation on the acquired partial data to obtain a corresponding conversion data. May be calculated in the conversion table.
  • the predetermined length is an integer w times the length of the conversion data
  • the line table area includes the conversion data at the predetermined position, and includes data irrelevant to the conversion at all other positions.
  • the operation instruction group may calculate the position of the corresponding conversion data in the conversion table using multiplication by an integer w.
  • the predetermined position is a head position of the line table area, and the operation instruction group calculates a position of the corresponding conversion data in the conversion table by multiplying the acquired partial data by an integer w. Is also good.
  • the position of the converted data corresponding to the partial data can be specified by a simple operation.
  • the line table area includes the conversion data at the predetermined position, further includes another conversion data corresponding to another partial data at another predetermined position, and includes the conversion data at all other positions. , May include data unrelated to the conversion.
  • the predetermined length is an integer w times the length of the conversion data
  • the predetermined position is The other predetermined position is a head position of a latter half area obtained by bisecting the line table area, and the operation instruction group multiplies the acquired partial data by an integer w / 2. Thereby, the position of the corresponding conversion data in the conversion table may be calculated.
  • the predetermined length is an integer w times the length of the conversion data
  • the predetermined position is an integer X-th position of a head force of the line table area
  • the other predetermined position is the line table. This is the position of the integer Xth from the beginning of the latter half area obtained by bisecting the area, and the arithmetic instruction group multiplies the obtained partial data by the integer wZ2 and further adds the integer X to obtain the corresponding converted data.
  • the position in the conversion table may be calculated.
  • the line storage area of the cache memory unit contains one or more pieces of conversion data, so that the resistance to the timing attack for observing the processing time is maintained to a certain degree, and the cache memory unit is maintained. Can be made smaller.
  • a computer system for decoding or decrypting plaintext or ciphertext through a process of converting partial data relating to plaintext or ciphertext into corresponding conversion data, and converting the conversion data corresponding to the partial data into
  • a main memory unit for storing and storing a conversion table including a plurality of instructions for obtaining conversion data corresponding to partial data using the conversion table in the process;
  • a cache memory unit including a line storage area; and an execution unit that reads and decodes one instruction at a time from the computer program stored in the main memory unit, decodes the instruction, and operates in accordance with a result of the decoding.
  • the conversion data of the conversion data is read from the line storage area of the cache memory unit.
  • the conversion data is obtained from the main memory unit, and the predetermined-length included data including the obtained conversion data is stored in the line storage area.
  • the conversion table has the line table area of the predetermined length, and includes, at a predetermined position in the line table area, one piece of conversion data corresponding to the partial data.
  • the predetermined position is a position obtained by performing a predetermined operation on the partial data
  • the operation instruction group performs the predetermined operation on the partial data
  • the position of the conversion data in the conversion table may be calculated.
  • the predetermined operation may be a multiplication of the partial data and an odd number in mod z
  • z may be the number of types of values that the partial data can take.
  • the conversion data is randomly arranged in the conversion table, so that if a predetermined operation is not leaked, resistance to an attack can be maintained.
  • a computer system for decoding or decrypting plaintext or ciphertext through a process of converting partial data relating to plaintext or ciphertext into corresponding conversion data, and converting the conversion data corresponding to the partial data into A first conversion table including the conversion data corresponding to the partial data; and obtaining the conversion data corresponding to the partial data using the first conversion table and the second conversion table in the process.
  • a main memory unit for storing a computer program including a plurality of instructions to be executed, a cache memory unit including a line storage area of a predetermined length, and one computer program stored in the main memory unit.
  • An execution unit that reads and decodes each instruction and operates in accordance with the result of the decoding, wherein the execution unit includes a conversion unit included in the first conversion table and the second conversion table.
  • the line storage area of the cache memory unit is tried to acquire the conversion data, and if the conversion data does not exist in the line storage area, the conversion from the main memory unit is performed. Acquiring data, writing the predetermined length of inclusion data including the acquired conversion data into the line storage area, wherein the first conversion table and the second conversion table each have the line table area of the predetermined length.
  • the computer program includes one conversion data corresponding to the partial data, and the computer program uses the acquired instruction data to acquire the partial data, and An operation instruction group for calculating the position of the conversion data in the conversion table, and the conversion data at the calculated position are read from the conversion table.
  • the predetermined position in the first conversion table is a position obtained by performing a first operation on the partial data
  • the predetermined position in the second conversion table is , A position obtained by performing the second operation
  • the operation instruction group includes the first operation each time the conversion is performed.
  • the first operation is a multiplication of the partial data in mod z by a first odd number
  • the second operation is a multiplication of the partial data in mod z by a second odd number
  • z Is the number of types of values that the partial data can take
  • the determination command may generate a random number and determine which conversion table to use based on the generated random number.
  • FIG. 1 is a configuration diagram showing a configuration of a content distribution system 10 according to a first embodiment of the present invention.
  • FIG. 2 is a block diagram showing a configuration of a content server device 100.
  • FIG. 3 is a flowchart illustrating the contents of a content encryption program 132.
  • FIG. 4 is a configuration diagram showing a configuration of an AES III program 133.
  • FIG. 5 is a structural diagram showing a data structure of a standard S box 380.
  • FIG. 6 is a structural diagram showing a data structure of a modified S box 511.
  • FIG. 7 is a flowchart for explaining the contents of a No. main module 501.
  • FIG. 8 is a flowchart illustrating the contents of a Round processing module 503.
  • FIG. 9 is a flowchart illustrating the contents of a SubBytes processing module 505.
  • FIG. 10 is a flowchart illustrating the contents of a FinalRound processing module 504.
  • FIG. 11 is a block diagram showing a configuration of a microprocessor 101.
  • FIG. 12 shows an example in the case where the contents of the modified S box 511 are stored in the cache line units 181 to 187 of the data unit 175.
  • FIG. 13 is a flowchart showing an operation of the microprocessor 101.
  • FIG. 14 is a data process chart showing the operation of encryption by the AES encryption program 133. [Fig.15] AddRoundKey processing in each Round processing or FinalRound processing operation
  • FIG. 16 is a block diagram showing a configuration of a personal computer 200.
  • FIG. 17 is a flowchart illustrating the contents of a content decryption program 232 and a playback program 233.
  • FIG. 18 is a flowchart illustrating the contents of an AES decryption program 234.
  • FIG. 20 is a structural diagram showing a data structure of an inverse transform S box 611.
  • FIG. 21 is a flowchart illustrating the contents of a decoding main module 601.
  • FIG. 22 is a flowchart illustrating the contents of an InvRound processing module 603.
  • FIG. 23 is a flowchart illustrating the contents of an InvSubBytes processing module 605.
  • FIG. 24 is a flowchart illustrating the contents of an InvFinalRound processing module 604.
  • Garden 25 An example in the case where the contents of the inverse transformation transformation S box 611 are stored in each cache line section of the data section.
  • FIG. 26 is a data process chart showing the decryption operation by the AES decryption program 234.
  • FIG. 27 is a data process chart showing the detailed operations of InvSubBytes processing and AddRoundKey processing.
  • FIG. 28 is a structural diagram showing a data structure of a modified S-box 911.
  • FIG. 29 is a data process chart showing the operations of one left shift process 902 and one reference process 903 in SubBytes process by the SubBytes process module 505a.
  • FIG. 30 An example when the contents of the modified S-box 911 are stored in the cache line units 181, 182,... Of the data unit 175 is shown.
  • FIG. 31 is a structural diagram showing a data structure of a modified S box 1011.
  • FIG. 32 is a data process chart showing the operations of one left shift process 1002, one addition process 1003, and one reference process 1004 in SubBytes processing by the SubBytes processing module 505b.
  • FIG.33 Transformed into cache line section 181, 182, ... of data section 175.
  • S box 1011 An example in the case where contents are stored is shown.
  • FIG. 34 is a structural diagram showing a data structure of a modified S box 1121.
  • FIG. 35 is a correspondence table showing correspondences between 256 input values A (0, 1, 2,..., 255), which are integers, and calculation results A X 177 mod 256.
  • 11 is a data process chart showing operations of 1102 and one reference process 1103.
  • FIG. 37 An example in the case where the contents of the modified S box 1121 are stored in the cache line units 181, 182,... Of the data unit 175.
  • FIG. 38 is a structural diagram showing a data structure of a modified S box 1221.
  • FIG. 39 is a data process chart showing the operations of one multiplication process 1202, one shift process 1203, and one reference process 1204 in the SubBytes process by the SubBytes process module 505d.
  • FIG. 40 An example in the case where the contents of the modified S box 1221 are stored in the cache line units 181, 182,... Of the data unit 175.
  • FIG. 41 is a structural diagram showing a data structure of a modified S box 1311.
  • FIG. 42 is a data process chart showing the operations of one multiplication process 1302, one shift process 1303, one calorie calculation process 1304, and one reference process 1305 in SubBytes processing by the SubBytes processing module 505e. is there.
  • FIG. 43 An example in which the contents of the modified S box 1221 are stored in the cache line units 181, 182,... Of the data unit 175 is shown.
  • FIG. 44 is a structural diagram showing a data structure of a modified S box 1421.
  • FIG. 45 is a structural diagram showing a data structure of a modified S box 1441.
  • FIG. 46 is a correspondence table showing correspondence between 256 input values B (0, 1, 2,..., 255), which are integers, and their calculation results B X 77 mod 256.
  • FIG. 48 An example in which the contents of the modified S box 1421 are stored in the cache line units 181, 182,... Of the data unit 175.
  • FIG. 49 An example when the contents of the modified S box 1441 are stored in the cache line units 181, 182,... Of the data unit 175 is shown.
  • FIG. 50 is a flowchart illustrating the contents of a SubBytes processing module 1501. Explanation of symbols
  • a content distribution system 10 according to one embodiment of the present invention will be described.
  • the content distribution system 10 includes a content server device 100, a distribution server device 30a, a broadcasting device 30b, a BD manufacturing device 30c, a personal computer 200, a digital broadcast receiving device 200a, and a BD reproducing device 200b. I have.
  • the content server device 100 stores the contents of a movie composed of video data and sound data, and decodes the stored contents according to a request from the distribution server device 30a.
  • the encrypted content is generated, and the generated content is transmitted to the distribution server device 30a connected via the dedicated line 21.
  • the distribution server device 30a receives the encrypted content and transmits the encrypted content to the personal computer 200 connected via the Internet 20.
  • the personal computer 200 receives the encrypted content, decrypts the received encrypted content to generate decrypted content, reproduces the generated decrypted content, and outputs video and audio.
  • the content server device 100 generates an encrypted content in response to a request from the broadcasting device 30b, and connects the generated encrypted content via the dedicated line 22.
  • the broadcasting device 30b receives the encrypted content, and broadcasts the received encrypted content on a broadcast wave.
  • the digital broadcast receiving device 200a receives the broadcast wave, and receives the broadcast signal from the received broadcast wave. It extracts the dangling content, decrypts the extracted encrypted content to generate a decrypted content, reproduces the generated decrypted content, and outputs video and sound.
  • content server device 100 generates the ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ content in response to a request from BD manufacturing device 30c, and transmits the generated ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ content via dedicated line 23.
  • the BD manufacturing device 30c receives the encrypted content and writes the received content to the recording medium 40.
  • the recording medium 40 on which the encrypted content is written is sold and purchased by the user.
  • the BD reproducing device 200b to which the recording medium 40 is attached by the user reads the content from the recording medium 40, decrypts the read encrypted content to generate decrypted content, and generates the decrypted content. Play the content and output video and sound.
  • the content server apparatus 100 includes a computer system including a microprocessor 101, a hard disk unit 102, a memory unit 103, an input control unit 104, a display control unit 105, a communication unit 106, and a system bus 109. It is.
  • the microprocessor 101, the hard disk unit 102, the memory unit 103, the input control unit 104, the display control unit 105, and the communication unit 106 are mutually connected via a system bus 109.
  • the input control unit 104 and the display control unit 105 are connected to a keyboard 107 and a monitor 108, respectively.
  • the communication unit 106 is connected to the distribution server device 30a, the broadcasting device 30b, and the BD manufacturing device 30c via the dedicated lines 21, 22, and 23, respectively.
  • the hard disk unit 102 is a storage unit for storing computer programs and data for a long period of time. As shown in FIG. 2, the hard disk unit 102 includes a content 120, a content 121, a content 122, a key 123, a key 124, a key 125, a content distribution program 141, a content identification program 142, The AES No. program 143, the transmission program 144, the illustrated level, other computer programs and the illustrated level, and other data are stored. In addition, encrypted content 126, encrypted content 127 , Encrypted content 128, and an area for storing.
  • the content 120, the content 121, the content 122, ... correspond to the key 123, the key 124, the key 125, ..., respectively, and the encrypted content 126 and the encrypted content 12 7, Compatible with 128 encrypted contents.
  • the content 120, the content 121, the content 122,... are respectively the compressed data in which the video data and the audio data are compressed and encoded with high efficiency.
  • Key 123, key 124, key 125, ... are subjected to an encryption algorithm on content 120, content 121, content 122, ..., respectively, to obtain encrypted content 126, decrypted content 127, and cipher.
  • the encryption algorithm is based on AES (Advanced Encryption Standard).
  • the encrypted content 126, the encrypted content 127, the encrypted content 128, ... are generated by applying the encryption algorithm AES to the content 120, the content 121, the content 122, ..., respectively. It is encrypted data.
  • the content distribution program 141, the content encryption program 142, the AES encryption program 143, and the transmission program 144 are respectively provided as a content distribution program 131, a content encryption program 132, an AES encryption program 133, and a transmission program 134 according to an instruction from the microprocessor 101.
  • the data is loaded into the memory unit 103.
  • the memory unit 103 is a storage unit for temporarily storing a computer program and data to be executed. As shown in FIG. 2, the content distribution program 131, the content No. program 132, the AES No. program 133, and the transmission program 134, an area for storing other programs not shown and other data not shown is provided.
  • Each of the above programs is a computer program configured by combining a plurality of instruction codes in a machine language format.
  • the machine language form is a form that is decoded and executed by the microprocessor 101.
  • the ability to explain the contents of each computer program S in order to make it easier to understand the contents of each computer program, usually use human language to speak or write, rather than using machine language instruction codes.
  • the contents of each computer program are expressed in a language used in the case where the computer program is used, or in a flowchart, and each computer program is described.
  • the content distribution program 131 is configured to include a plurality of instruction codes. These instruction code groups receive the specification of the content, for example, the content 120 and the specification of the content distribution destination device from the content distribution destination device, for example, from the distribution server device 30a, and indicate the received specification.
  • the content No. program 132 is called by designating the content to be encrypted, and then the encrypted content generated by the content No. program 132 is written to the hard disk unit 102 as the encrypted content 126, for example, and the received specification is received. This indicates that the transmission program 134 is to be called by designating the distribution destination device and the content generated and written in the hard disk 102.
  • the generated encrypted content is transmitted to the distribution destination device indicated by the received specification.
  • the content day code program 132 includes instruction code groups Sll, S112, S113, S114, S115, and S116, and these instruction code groups are composed of content codes. In the program 132, they are arranged in this order. Each instruction code group includes one or more instruction codes.
  • the instruction code group S111 substitutes the value “128” as an initial value for a read point indicating the position of data in the content whose specification has been received by a bit, and generates a key corresponding to the content whose specification has been received. From the hard disk unit 102.
  • the read point to which the value “_128” is substituted indicates a position outside the content, but the value “-128” is substituted for the read point as an initial value. This is because, in the first execution of the instruction code group SI12 described later, the read point indicates the head position of the content.
  • 128 bits are added to the read point, and the read point has a value “0”, and the read point indicates the position of the head of the content. Is shown.
  • the instruction code group S112 adds 128 bits to the read point and then attempts to read one block of data from the position indicated by the added read point in the content. If the position indicated by the plurality of instruction codes and the read point is within the content, one block of data is read from the position, and if the position indicated by the read point indicates outside the content, And a plurality of instruction codes indicating that an end code indicating that reading of the block has been completed is output.
  • one block is 128-bit data.
  • the instruction code group S113 terminates the process by the content encryption program 132 when the end code is output from the instruction code group S112, and when the end code is not output, the next instruction code group A plurality of instruction codes indicating that control is transferred to S114 are included.
  • the instruction code group S114 includes a plurality of instruction codes indicating that the AES encryption program 133 is to be called with the read key and the read one block.
  • the AES encryption program 133 is called with the one block, the block is subjected to AES encryption to generate an encrypted block.
  • both the input message (plaintext) and the output message (ciphertext) are 128 bits, and the input encryption key and decryption key can be selected from 128 bits, 192 bits, and 256 bits. It has become.
  • the ⁇ key and the decryption key are 128 bits.
  • the instruction code group S115 includes a plurality of instruction codes indicating that one encryption block generated by the AES ⁇ program 133 is written to the hard disk unit 102, for example, as a part of the encrypted content 126. .
  • the instruction code group S116 has an instruction code indicating that control is to be transferred to the instruction code group S112. Including code.
  • the AES encryption program 133 is a No. algorithm that encrypts a 128-bit length plaintext block based on AES to generate a 128-bit length ciphertext block. As shown in FIG. It comprises an AddRoundKey processing module 502, a Round processing module 503, a FinalRound processing module 504, a SubBytes processing module 505, a ShiftRows processing module 506, a MixColumns processing module 507, a KeySchedule processing module 508, and a modified S box 511.
  • Each module is a computer program configured by combining a plurality of instruction codes in a machine language format.
  • the machine language form is a form that is decoded and executed by the microprocessor 101.
  • the standard S box 380 which is a table data array generally used in the reference processing of the S box that performs 8-bit input and 8-bit output defined in AES encryption, has an array representation shown in FIG. And the sequence representation 382.
  • the array expression 381 and the array expression 382 shown in FIG. 5 represent the standard S box 380, and the array expression 381 is a sequence number (suffix) of each of a plurality of array elements included in the standard S box 380.
  • the array expression 382 indicates a specific value of each of a plurality of array elements included in the standard S box 380.
  • Array expression 381 includes a plurality of array elements arranged in a matrix of 16 rows x 16 columns for convenience in expression
  • array expression 382 includes 16 array elements for convenience in expression. Contains specific values for multiple array elements arranged in a matrix of row x 16 columns.
  • an array element located at a certain position in the matrix corresponds to a specific value located at the same position in the matrix in the array representation 382.
  • the standard S-box 380 contains 256 IJ elements 391, 392, 393, ..., 394, ..., 395, 396, 397, ..., 398.
  • Each Rooster system IJ element is 8-bit data and is expressed as "S [xx]".
  • each array element of the array representation 381 in FIG. 5 each array element number is represented by a hexadecimal number.
  • the modified S box 511 will be described.
  • the modified S box 511 is composed of 2048 rooster systems IJ elements 431, 441, 442, 443, 444, 445, 446, 447, 432, ..., 433, ..., 434, ..., 435, ..., 436, ..., 437, '..., 438, ...
  • the array elements constituting the modified S box 511 are arranged in a matrix of 256 rows x 8 columns for convenience of expression.
  • Each array element is 8-bit data. Therefore, the length of one row X 8 columns of array elements is 64 bits long.
  • the 431, 432, 433, 434, ⁇ , 435, 436, 437, 438 of the 256 IJ elements of the first system IJ are the value S [00], the value S [01], and the value S, respectively. [02], a value S [03],..., A value S [fc, a value S [fd, a value S [fe], and a value S [ff].
  • the value S [00], the value S [01],..., The value S [fe], and the value S [ff] are the same as those included in the standard S box 380 described above.
  • the 256 array elements in the second column each have a value "0xff".
  • “0x” indicates that the number following this is expressed in hexadecimal.
  • Each array element included in the third to eighth columns also has the value “0xff”.
  • the matrix of the multiple array elements contained in the modified S box 511 has 256 rows and 8 lines.
  • each array element included in the standard S box 380 is arranged in each of the 256 array elements in the first row, and the second to eighth The value “0xff” is allocated to each array element of the column.
  • the first array element has the same value as the array element included in the standard S box 380, and Has an insignificant value with the value “0xff”.
  • the B-note main module 50 If includes instruction code groups S121, S122, S123, S124, S125, and S126. No. In the main module 501, they are arranged in this order. Each instruction code group includes one or more instruction codes.
  • the instruction code group S121 includes a plurality of instruction codes indicating that the AddRoundKey processing module 502 that performs AddRoundKey processing that is an operation of the input plaintext block and an extended key generated from the encryption key is called. .
  • the instruction code group S122 includes a plurality of instruction codes indicating that the counter is initialized to 0. This counter is for controlling repetition in the encryption main module 501.
  • the instruction code group S123 includes a plurality of instruction codes indicating that a round processing module 503 that performs round processing described below is to be called.
  • the instruction code group S124 includes a plurality of instruction codes indicating that “1” is added to the counter.
  • the instruction code group S125 determines whether or not the counter has a predetermined number of repetitions “Nr_l”. If the counter is not “Nr_l”, the process proceeds to the instruction code group S123, and the number of repetitions “Nr_l” is determined. If “l”, it includes a plurality of instruction codes indicating that the process proceeds to the next instruction code group S126.
  • Nr the number of repetitions “Nr” depends on the bit lengths of the encryption key and the decryption key.
  • Nr 10
  • Nr 12
  • Nr 14
  • the instruction code group S126 includes a plurality of instruction codes indicating that a FinalRound processing module 504 that performs FinalRound processing described later is to be called.
  • the round processing module 503f includes the instruction code groups S131, S132, SI33, and S134, and these instruction codes are included in the round processing module 503.
  • Each instruction code group includes one or more instruction codes.
  • the instruction code group S 131 includes a plurality of instruction codes indicating that the SubBytes processing module 505 that performs SubBytes processing composed of 16 table reference operations is called.
  • the instruction code group S 132 includes a plurality of instruction codes indicating that the ShiftRows processing module 506 for performing the ShiftRows processing is called.
  • the instruction code group S133 includes a plurality of instruction codes indicating that the MixColumns processing module 507 that performs the MixColumns processing is called.
  • the instruction code group S134 includes a plurality of instruction codes indicating that the AddRoundKey processing module 502 that performs the above-described AddRoundKey processing is called.
  • the left shift and the reference processing of the modified S box are performed on the 16 partial block data.
  • 16 8-bit data are generated.
  • the 16 generated 8-bit data are concatenated to generate and output 128-bit block data.
  • each partial block data is shifted left by 3 bits for the following reason.
  • each partial block data is multiplied by eight.
  • Deformation S In Box 511 among the eight array elements that are consecutively arranged, the first one has a valid array element S [XX], so each partial block data is multiplied by eight.
  • the modified S box 511 using the data obtained as an address as an address, only valid array elements S [XX] are obtained.
  • SubBytes processing module 505 may include a multiplication process of multiplying by eight instead of the three-bit left shift process for the above-described reason.
  • the valid array element S [XX] is arranged for the first one.
  • only the valid array element S [XX] can be obtained by referring to the another modified S box using data obtained by multiplying each partial block data by 16 as an address.
  • the SubBytes processing module 505 includes instruction code groups S141, S142, S143, S144, S145, S146,..., S147 and S148, and these instruction code groups are , In the Sub Bytes processing module 505.
  • Each instruction code group includes one or more instruction codes.
  • the instruction code group S141 includes a plurality of instruction codes indicating that the first partial block data of the 16 partial block data is shifted left by 3 bits to generate 11-bit data. Including.
  • the instruction code group S142 is stored at a position where the 11-bit data is used as an address with reference to the modified S box 511 using the 11-bit data generated by the instruction code group S141 as an address in the modified S box 511. Contains 8-bit data from the modified S-box 511 and includes a plurality of instruction codes indicating that the read 8-bit data is to be output.
  • the instruction code groups S143, S145,..., S147 each include a plurality of instruction codes similar to the instruction code group S141.
  • the instruction code groups S144, S146, ..., S148 each include a plurality of instruction codes similar to the instruction code group S142.
  • the instruction code groups S 144, S 146,..., S 148 are different from the instruction code group S 142 in that the output results of the instruction code groups S 143, S 145,. Are different.
  • the FinalRound processing module 504f includes the instruction code groups S151, S152 and S153 as shown in FIG. 10 (as shown here), and these instruction codes are arranged in this order in the FinalRound processing module 504.
  • Each instruction code group includes one or more instruction codes.
  • the instruction code group S 151 includes a plurality of instruction codes indicating that the SubBytes processing module 505 is to be called.
  • the instruction code group S152 includes a plurality of instruction codes indicating that the ShiftRows processing module 506 for performing the ShiftRows processing is to be called.
  • the instruction code group S 153 includes a plurality of instruction codes indicating that the AddRoundKey processing module 502 that performs AddRoundKey processing is to be called.
  • the AddRoundKey processing module 502, ShiftRows processing module 506, MixColumns processing module 507, and KeySchedule processing module 508 are the AddRoundKey processing, ShiftRows processing, MixColumns processing, and
  • the transmission program 134 is configured by arranging a plurality of instruction codes.
  • the transmission program 134 receives designation of data and designation of a distribution destination device from a calling program, and controls the communication unit 106 to transmit the designated data.
  • a copy that indicates transmission to the specified destination device Contains a number of instruction codes.
  • the microprocessor 101 is a central part that controls the content server device 100 and performs data processing and processing, and performs operations, controls, and the like according to a computer program stored in the memory unit 103.
  • the microprocessor 101 includes an arithmetic unit 161, a cache unit 162, and other units shown in FIG.
  • the cache unit 162 is provided to prevent the access time from affecting the execution performance of the program due to the access to the memory unit 103 by the arithmetic unit 161 during the execution of the program.
  • the cache unit 162 includes a data unit 175 and other units not shown.
  • the data section 175 has 256 cache line sections.
  • Each cache line unit has a 64-bit memory area.
  • Some of the contents stored in the memory unit 103 are copied to any of the cache lines ⁇ ⁇ ⁇ in the data unit 175.
  • the cache unit 162 when an address is given, the cache unit 162 outputs data stored in the cache line unit corresponding to the address.
  • the operation unit 161 interprets the instruction codes in the computer program stored in the memory unit 103 one by one, and performs operation control according to the interpretation result.
  • the operation unit 161 holds a program counter PC that stores address information containing an instruction to be taken out next.
  • the arithmetic unit 161 When executing the computer program, the arithmetic unit 161 first copies (loads) the computer program stored in the hard disk unit 102 to the memory unit 103. Next, the program counter PC is set to an initial value, and one instruction in the combi- able program is obtained based on the value of the program counter PC. Then, execute the acquired instruction.
  • the instruction refers to fixed value data defined in the computer program loaded into the memory unit 103 during execution of the instruction
  • the arithmetic unit 161 accesses the memory unit 103 to acquire the fixed value data
  • the same fixed value data is also stored in the section 162.
  • the arithmetic unit 161 accesses the cache unit 162 in the memory unit 103 and acquires the fixed value data.
  • the arithmetic unit 161 accesses the cache unit 162, reads out the desired data from the memory unit 103 when the desired data does not exist in the cache unit 162, and caches the read data. Write to any of the cache line sections of the data section 175 of the section 162. At this time, it takes some time to copy the data from the memory unit 103 to the cache unit 162, but the operation unit 161 accesses the cache unit 162 for the second time and thereafter, so that the operation speed is high.
  • FIG. 12 shows an example in which the contents of the modified S box 511 are stored in the cache line units 181 to 187 of the data unit 175 by the above-described SubBytes processing, as the data unit 175a.
  • the contents of the modified S box 511 are stored as they are in the cache line sections 181a, 182a, 183a, 184a,..., 186a, 187a of the data section 175a.
  • the cache line section 181a has an array element 451 “3 [00]”, an array element 461 “0 £ f”, an array element 462 “0xff”, an array element 463 “0xff”, an array element 464 “0xff”, Element 4 65 “0xff”, array element 466 “0xff”, and array element 467 “0xff” are stored. Also, in the other cache lines, the array element of the standard S box 380 is stored at the head, and “0xff” is stored in the other parts.
  • the array element 452 “S [01]”, which is the array element of the standard S box 380, and the array element 4 53 “3 [02]”, array element 454 [03] ”, ⁇ ⁇ ⁇ , array element 455“ 3 [] ”, array element 456“ S [fd] ”, array element 457“ S [fe] ”and array Element 458 “S [ff]” is stored.
  • each cache line section of the data section 175a stores only one array element of the standard S box 380.
  • the operation of the content server device 100 will be described.
  • the arithmetic unit 161 copies the computer program stored in the hard disk unit 102 to the memory unit 103, and sets a program counter PC for storing address information on an instruction to be taken out next to an initial value (step S161). ).
  • the arithmetic unit 161 extracts one instruction from the computer program loaded into the memory unit 103 based on the value of the program counter PC (step S162).
  • the arithmetic unit 161 determines whether or not to use fixed data defined in the computer program in the instruction (step S163), and when the fixed data is used (step S163). If the fixed data to be used is in the cache unit 162 (Yes in step S164), the cache unit 162 is accessed, the corresponding fixed data is acquired (step S165), and the retrieved instruction is decoded. Then, the decrypted result is executed using the acquired fixed data (step S166), and if the program counter PC indicates the end (Yes in step S167), the process is terminated. If it does not indicate the end (No in step S167), the program counter PC is advanced by one (step S170), and the control is transferred to step S162 to repeat the processing.
  • step S163 If the fixed data is not used (No in step S163), the operation unit 161 then decodes the fetched instruction, executes the decoded result (step S166), and then proceeds to step S167. And repeat the process.
  • step S164 If the fixed data to be used is not in the cache unit 162 (No in step S164), the calculation unit 161 accesses the memory unit 103 to acquire the corresponding fixed data (step S16). 8), the acquired fixed data is copied to the cache line section of the cache section 162 (step S169), and then the fetched instruction is decoded, and the decoded result is executed using the obtained fixed data (step S169). (S166) Then, control is transferred to step S167 to repeat the processing.
  • the encryption operation by the AES II program 133 is as follows: a key schedule step 302, a ten-step process 304, 305, ⁇ , 306, 307, and the like.
  • a key schedule step 302 a ten-step process 304, 305, ⁇ , 306, 307, and the like.
  • 11 expanded keys SK, SK,---SK, SK, SK are generated by the KeySchedule processing module 508 (step 302), and the generated expanded key
  • AddRoundKey processing is performed using the expanded key SK by the AddRoundKey processing module 502 (step 321),
  • SubBytes processing is performed by the SubBytes processing module 505 (step 322),
  • the ShiftRows processing module 506 performs the ShiftRows processing (step 323), MixColumns processing is performed (step 324)
  • AddRoundKey processing is performed by the AddRoundKey processing module 502 using the expanded key SK (step 331),
  • SubBytes processing is performed by the SubBytes processing module 505 (step 332),
  • the ShiftRows processing module 506 performs the ShiftRows processing (step 333), and the MixColumns processing module 507 performs the MixColumns processing (step 334).
  • AddRoundKey processing is performed by the AddRoundKey processing module 502 using the expanded key SK (step 341),
  • SubBytes processing is performed by the SubBytes processing module 505 (step 342)
  • ShiftRows processing is performed by the ShiftRows processing module 506 (step 343)
  • MixColumns processing is performed by the MixColumns processing module 507 (step 344).
  • AddRoundKey processing is performed using the expanded key SK by the AddRoundKey processing module 502 (step 351),
  • SubBytes processing is performed by the SubBytes processing module 505 (step 352)
  • ShiftRows processing is performed by the ShiftRows processing module 506 (step 353)
  • AddRoundKey processing is performed by the AddRoundKey processing module 502 using the expanded key SK.
  • Each Round process or FinalRound process includes AddRoundKey process 372, SubBytes process 373, ShiftRows process 374, and MixColumns process (or AddRoundKey process) 375.
  • the AddRoundKey process 372 includes 16 exclusive OR operations 381, 382, 383,..., 384.
  • the SubBytes process 373 includes 16 shift processes 385, 386, 387,..., 388, and 16 modified S box reference processes 391, 392, 393,.
  • the 128-bit expanded key 361 is divided into 16 8-bit partial keys, and the 16 partial keys are respectively 16 exclusive logical operations 381, 382, 383 of the AddRoundKey process 372. , ⁇ ⁇ ⁇ ⁇ Output to 384 (steps 362, 363, 364, ⁇ ⁇ ⁇ , 365).
  • 128-bit input data 371 powers, divided into 16 8-bit partial data, and the 16 partial data are respectively subjected to AddRoundKey processing 372 16 exclusive OR operations 38 1, 382, 383, ⁇ Output to 384.
  • Exclusive OR operation 381 receives the first partial data (8 bits), receives the first partial key (8 bits), and receives the received first partial data and the received first partial key. Then, an exclusive OR operation is performed to obtain the first operation data of 8 bits, and the obtained first operation data is output to the shift processing 385 of the SubBytes processing 373.
  • the shift processing 385 obtains 8-bit first operation data, shifts the obtained first operation data by 3 bits to the left, and obtains 11-bit first shift data.
  • the upper 8 bits of the obtained first shift data are the same data as the operation data, and the lower 3 bits of the first shift data are “000” (binary representation).
  • the obtained first shift data is output to the reference process 391 of the SubBytes process 373.
  • the reference process 391 receives the first shift data, and refers to the modified S box 511 using the received first shift data as an address, and obtains an 8-bit first array element.
  • the exclusive OR operation 382 performs an exclusive OR operation on the second partial data and the second partial key to obtain second operation data
  • the shift processing 386 performs the second operation data.
  • the data is shifted to the left by 3 bits to obtain the second shift data
  • the reference processing 392 obtains the second array element by referring to the modified S box 511 using the second shift data as an address. I do.
  • the exclusive OR operation 383 performs an exclusive OR operation on the third partial data and the third partial key to obtain third operation data
  • the shift processing 387 The 3rd operation data is shifted to the left by 3 bits to obtain third shift data
  • the reference process 393 refers to the modified S box 511 using the third shift data as an address, and refers to the third array Get the element.
  • the exclusive OR operation 384 performs an exclusive OR operation on the sixteenth partial data and the sixteenth partial key to obtain sixteenth operation data
  • the shift processing 388 of The operation data is shifted to the left by 3 bits to obtain the 16th shift data
  • the reference processing 394 uses the 16th shift data as an address, refers to the modified S box 511, and outputs the 16th array. Get the element.
  • ShiftRows processing 374 is performed on the generated data, and then, MixColumns processing (or AddRoundKey processing) 375 is performed. Thus, 128-bit output data 376 is generated and output.
  • the personal computer 200 is a computer system similar to the content server device 100, and includes a microprocessor 201, a hard disk unit 202, a memory unit 203, an input control unit 204, a display control unit 205, and a communication unit as shown in FIG. It consists of 206 and others.
  • the input control unit 204 and the display control unit 205 are connected to a keyboard 207 and a monitor 208, respectively.
  • the communication unit 206 is connected to the Internet 20.
  • the digital broadcast receiving device 200a and the BD reproducing device 200b have the same configuration as the personal computer 200, description of these devices will be omitted.
  • the hard disk unit 202 stores a key 222, a content reception program 241, a content decryption program 242, a playback program 243, and an AES decryption program 244 as shown in FIG. Area for ⁇ ⁇ 221 ⁇ 221 and key 222 are associated with each other.
  • the encrypted content 221 and the key 222 are the same as the encrypted content 126 and the key 123 stored in the hard disk unit 102 of the content server device 100, respectively.
  • the content receiving program 241, the content decrypting program 242, the reproducing program 243, and the AES decrypting program 244 are respectively provided as the content receiving program 231, the content decrypting program 232, the reproducing program 233, and the AES decrypting program 234 according to the instruction of the microprocessor 201. Is loaded into the memory unit 203. These computer programs will be described later.
  • the memory unit 203 stores a content reception program 231, a content decryption program 232, a playback program 233, and an AES decryption program 234. Further, the memory unit 203 includes a decrypted content area 236.
  • Each of these programs is a computer program configured by combining a plurality of instruction codes in a machine language format.
  • the machine language form is a form that is decoded and executed by the microprocessor 201.
  • decrypted content area 2366 decrypted content generated by decrypting the encrypted content is temporarily written.
  • each computer program S usually use human language to speak or write, instead of using machine language instruction codes.
  • the contents of each computer program are expressed in a language used in the case where the computer program is used or in a flow chart.
  • the content receiving program 231 is configured to include a plurality of instruction codes. These instruction code groups are obtained by acquiring a plurality of instruction codes indicating that the specification of the content is received from the user of the personal computer 200 and a content identifier for identifying the content whose specification has been received. A plurality of instruction codes indicating transmission to the distribution server device 30a via the communication unit 206 and the Internet 20, and identification by the content identifier from the distribution server device 30a via the Internet 20 and the communication unit 206. A plurality of command codes indicating that encrypted content to be received and the received content are sent to the hard disk unit 202, for example, in the content of the content. And a plurality of instruction codes indicating that writing is to be performed as an instruction 221.
  • the content decryption program 232 includes instruction code groups S211, S212, S213, S214, S215, S216, S217, and S218. In this order.
  • Each instruction code group includes one or more instruction codes.
  • the instruction code group S211 includes a plurality of instruction codes indicating that the user of the personal computer 200 accepts designation of any of the encrypted contents stored in the hard disk unit 202.
  • the instruction code group S212 includes a plurality of instruction codes indicating that the reproduction program 233 stored in the memory unit 203 is called. By executing the instruction code group S212, as a result, the content decryption program 232 and the reproduction program 233 are executed in parallel.
  • the instruction code group S213 substitutes a value "-128" as an initial value for a read point indicating the position of the data in the received content by a bit in the received content, and then accepts the specification. It contains a plurality of instruction codes indicating that the key corresponding to the “ ⁇ ” -Dani content is read from the hard disk unit 202.
  • the instruction code group S214 adds 128 bits to the read point, and then generates a plurality of instructions indicating that an attempt is made to read one block of data from the position indicated by the added read point in the encrypted content. If the position indicated by the code and the read point is within the encrypted content, one block of data is read from the position, and if the position indicated by the read point indicates outside the encrypted content, And a plurality of instruction codes indicating that an end code indicating that the reading of the block has been completed is output.
  • one block is 128-bit data.
  • the instruction code group S215 terminates the processing by the content decryption program 232 when the end code is output from the instruction code group S214, and when the end code is not output, the next instruction code group Contains multiple instruction codes indicating that control is transferred to S216.
  • the instruction code group S216 includes a plurality of instruction codes indicating that the AES decryption program 234 is to be called with the read key and the read one block.
  • the instruction code group S217 includes a plurality of instruction codes indicating that one decrypted block generated by the decryption program 234 is to be written to the decrypted content area 236 of the memory unit 203.
  • the instruction code group S218 includes an instruction code indicating that control is transferred to the instruction code group S214.
  • this includes instruction code groups S218, S219 and S220, and these instruction code groups are arranged in this order in the reproduction program 233.
  • Each instruction code group includes one or more instruction codes.
  • the instruction code group S218 includes a plurality of instruction codes indicating that one or more decrypted blocks are to be read from the decrypted content area 236 of the memory unit 203.
  • the instruction code group S219 generates video data and audio data from the read decoded block, converts the generated video data and audio data into video signals and audio signals, and outputs the video and audio signals to the monitor 208 via the display control unit 205. It contains a plurality of instruction codes indicating output to
  • the instruction code group S220 includes an instruction code indicating that control is transferred to the instruction code group S218 next.
  • the AES decryption program 2344 as shown in FIG.
  • AddRoundKey processing module 602 InvRound processing module 603, InvFinalRound processing module 604, InvSubBytes processing module 605, InvShiftRows processing module 606, InvMixColumns processing module 607, KeySchedule processing module 608, and inverse transformation S box 611.
  • Each module is composed of a combination of a plurality of machine language instruction codes. It is a pewter program.
  • the machine language form is a form that is decoded and executed by the microprocessor 201.
  • the standard inverse transform S box 800 which is a table data array generally used in the reference process of the inverse transform S box that performs 8-bit input and 8-bit output defined in AES decoding, is shown in FIG. This will be described using an array expression 801 and an array expression 802 shown in FIG.
  • standard inverse transform S box is not generally used, but in order to distinguish it from the inverse transform variant S box 611 used in the present embodiment, such an expression is used. Has adopted.
  • the array expression 801 and the array expression 802 shown in FIG. 19 express the standard inverted S box 800, and the array expression 801 assigns a plurality of array elements included in the standard inverted S box 800 to the sequence numbers, respectively.
  • the array representation 802 indicates a specific value of each of a plurality of array elements included in the standard inverse transformation S box 800.
  • the array expression 801 includes a plurality of array elements arranged in a matrix of 16 rows ⁇ 16 columns for convenience of expression, and the array expression 802 includes 16 elements for convenience of expression. Contains specific values for multiple array elements arranged in a matrix of row x 16 columns. In the array representation 801, an array element arranged at a certain position in the matrix corresponds to a specific value arranged at the same position in the matrix in the array representation 802.
  • the standard inversion S box 800 includes 256 array elements 811, 812, 813, ..., 814, ..., 815, 816, 817, ...-, 818.
  • Each Rooster system IJ element is 8-bit data and is expressed as "InvS [XX]".
  • “InvS” is an array element name indicating an array element
  • a numerical value XX enclosed by [] following “InvS” is an array element number for identifying the array element.
  • each array element number is represented by a hexadecimal number.
  • the inverse transformation deformation S box 611 is composed of 2048 IJ elements 831, 841, 842, 843, 844, 845, 846, 847, 832, ..., 833, ... , 834, ⁇ , 835, ⁇ , 836, ⁇ , 837, ⁇ , 838, ⁇ .
  • the array elements constituting the inverse transformation deformation S box 611 are arranged in a matrix of 256 rows x 8 columns for convenience of expression.
  • the 256 IJ elements 831, 832, 833, 834, ..., 835, 836, 837, 838 of the first system IJ are the values InvS [00], InvS [01], and InvS, respectively. [02], value InvS [03],..., Value InvS [fc], value InvS [fd], value InvS [fe], and value InvS [ff].
  • the value InvS [00], the value InvS [01],..., The value InvS [fe], and the value InvS [ff] are the same as those included in the standard inverse transform S box 800 described above.
  • the 256 array elements in the second column each have a value "0xff".
  • “0x” indicates that the number following this is expressed in hexadecimal.
  • Each array element included in the third to eighth columns also has the value “0xff”.
  • the leading array element of the eight consecutively arranged array elements has the same value as the array element included in the standard inverse transform S box 800.
  • other array elements have a meaningless value “0xff”.
  • the decryption main module 601f includes instruction code groups S231, S232, S233, S234, S235, and S236. In 601, they are arranged in this order.
  • Each instruction code group includes one or more instruction codes.
  • the instruction code group S231 is composed of the input ciphertext block and the extended code generated from the encryption key. It includes a plurality of instruction codes indicating that the AddRoundKey processing module 602 that performs AddRoundKey processing as an operation with a key is called.
  • the instruction code group S232 includes a plurality of instruction codes indicating that the counter is initialized to zero. This counter is for controlling repetition in the decoding main module 601.
  • the instruction code group S233 includes a plurality of instruction codes indicating that an InvRound processing module 603 for performing InvRound processing described later is to be called.
  • the instruction code group S234 includes a plurality of instruction codes indicating that “1” is added to the counter.
  • the instruction code group S235 determines whether or not the counter has a predetermined number of repetitions “Nr_l”. If the counter is not “Nr_l”, the process proceeds to the instruction code group S233, and the number of repetitions “Nr_l” ”Includes a plurality of instruction codes indicating that the process proceeds to the next instruction code group S236.
  • Nr the number of repetitions “Nr” depends on the bit lengths of the key and the decryption key.
  • Nr 10 Yes
  • Nr 12 when the bit length is 192 bits
  • Nr 14 when the bit length is 256 bits.
  • the instruction code group S236 includes a plurality of instruction codes indicating that the InvFinalRound processing module 604 for performing InvFinalRound processing described later is to be called.
  • the InvRound processing module 603 includes instruction code groups S241, S242, S243, and S244, and these instruction code groups are arranged in this order in the InvRound processing module 603. ing.
  • Each instruction code group includes one or more instruction codes.
  • the instruction code group S241 includes a plurality of instruction codes indicating that the InvShiftRows processing module 606 that performs the InvShiftRows processing is to be called.
  • the instruction code group S242 includes a plurality of instruction codes indicating that the InvSubBytes processing module 605 that performs the InvSubBytes processing composed of 16 times of table reference operation is called. [0120]
  • the instruction code group S243 includes a plurality of instruction codes indicating that the AddRoundKey processing module 602 for performing the AddRoundKey processing described above is to be called.
  • the instruction code group S244 includes a plurality of instruction codes indicating that the InvMixColumns processing module 607 for performing InvMixColumns processing is to be called.
  • the left shift and the inverse transformation transformation S box 611 reference processing are performed on the 16 partial block data.
  • 16 8-bit data are generated.
  • the generated 16 pieces of 8-bit data are concatenated to generate and output 128-bit block data.
  • the InvSubBytes processing module 605 includes instruction code groups S251, S252, S253, S254, S255, S256,..., S257 and S258, and these instruction code groups are , And InvSubBytes processing module 605 are arranged in this order.
  • Each instruction code group includes one or more instruction codes.
  • the instruction code group S251 converts a plurality of instruction codes indicating that the first partial block data of the 16 partial block data is shifted left by 3 bits to generate 11-bit data. Including.
  • the instruction code group S252 uses the 11-bit data generated by the instruction code group S251 as an address in the inverse-transformed S-box 611, and refers to the inverse-transformed S-box 611 at a position where the 11-bit data is the address.
  • the stored 8-bit data is read from the S-box 611, and includes a plurality of instruction codes indicating that the read 8-bit data is output.
  • the instruction code groups S253, S255, ⁇ , and S257 each include a plurality of instruction codes similar to the instruction code group S251.
  • Instruction code group S253, S255, ⁇ , S257 (the second partial block data and the third partial block data of the 16 partial block data, respectively)
  • the instruction code group S251 differs from the instruction code group S251 in that the 16th partial block data is to be shifted.
  • the instruction code groups S254, S256, ..., S258 each include a plurality of instruction codes similar to the instruction code group S252.
  • the instruction codes S254, S256, ..., S258 differ from the instruction codes S252 in that the output results from the instruction codes S253, S255, ..., S257 are used, respectively. ing.
  • the InvFinalRound processing module 604 includes instruction codes S261, S262, and S263, and these instruction codes are arranged in this order in the InvFinalRound processing module 604. ing.
  • Each instruction code group includes one or more instruction codes.
  • the instruction code group S261 includes a plurality of instruction codes indicating that the InvShiftRows processing module 606 for performing the InvShiftRows processing is called.
  • the instruction code group S262 includes a plurality of instruction codes indicating that the InvSubBytes processing module 605 for performing InvSubBytes processing is called.
  • the instruction code group S263 includes a plurality of instruction codes indicating that the AddRoundKey processing module 602 for performing AddRoundKey processing is called.
  • AddRoundKey processing module 602 InvShiftRows processing module 606, InvMixColumns processing module 607 and KeySchedule processing module 608 Each performs AddRoundKey processing, InvShiftRows processing, InvMixColumns processing, and KeySchedule processing specified in AES. These processes are as specified in the AES, and will not be described.
  • the microprocessor 201 like the microprocessor 101, includes an operation unit, a cache unit, and other units.
  • the cache unit is composed of a data unit 175 and other units.
  • the data unit is composed of 256 cache line units, and each cache line unit has a 64-bit memory area.
  • the microprocessor 201 has the same configuration as the microprocessor 101, and the arithmetic unit, the cache unit, and other units are as described above.
  • the cache line unit 181b includes the array element 851 “InvS [00]”, the array element 861 “0 £, the array element 862“ ( ⁇ £, the array element 863 “( ⁇ £ ⁇ , the array element 864“ ( ⁇ £ , Array element 865 “0xff”, array element 866 “0xff”, and array element 867 “0xff.” Also in the other cache line part, the array of the inverse conversion standard S box 800 is placed at the beginning. The element is stored, and “0xff” is stored in other parts.
  • the decryption operation by the AES decryption program 234 includes the key scheduling step 702, the AddRoundKey processing step 704, and the ten-step process 705, 706, ..., 707, Composed of 708 and power.
  • the KeySchedule processing module 608 Based on the input key K701, the KeySchedule processing module 608 generates eleven expanded keys SK, SK, SK, '-', SK, SK (step 702), and generates the expanded key
  • the expanded key SK is used by the AddRoundKey processing module 602.
  • AddRoundKey processing is performed (step 704).
  • the InvShiftRows processing module 606 performs the InvShiftRows processing (step 721)
  • the InvSubBytes processing module 605 performs the InvSubBytes processing (step 722)
  • the expansion is performed by the AddRoundKey processing module 602.
  • AddRoundKey processing is performed using the key SK (step 723),
  • InvMixColumns processing module 607 performs InvMixColumns processing (step 724).
  • InvShiftRows processing is performed by the InvShiftRows processing module 606 (step 731)
  • InvSubBytes processing is performed by the InvSubBytes processing module 605 (step 732)
  • the AddRoundKey processing module 602 is performed. Performs AddRoundKey processing using the expanded key SK (step 733).
  • the InvMixColumns processing is performed by the InvMixColumns processing module 607 (step 734).
  • InvShiftRows processing performs the InvShiftRows processing (step 741)
  • the InvSubBytes processing module 605 performs the InvSubBytes processing (step 742)
  • the data is expanded by the AddRoundKey processing module 602.
  • AddRoundKey processing is performed using the key SK (step 743),
  • InvMixColumns processing is performed by the InvMixColumns processing module 607 (step 744).
  • the InvShiftRows processing module 606 performs the InvShiftRows processing (step 751)
  • the InvSubBytes processing module 605 performs the InvSubBytes processing (step 752)
  • the AddRoundKey processing is performed using the expanded key SK by the module 602 (step 753).
  • Each InvRound process or InvFinalRound process includes, as shown in FIG.
  • InvShiftRows processing 771, InvSubBytes processing 772 and AddRoundKey processing 772 are included.
  • the InvSubBytes process 772 includes 16 shift processes 781, 782, 783,..., 784, and 16 inverse transform variants S 611 reference processes 785, 786, 788,.
  • the AddRoundKey process 773 includes 16 exclusive OR operations 791, 792, 793,
  • the 128-bit expanded key 761 is divided into 16 8-bit partial keys, and the 16 partial keys are respectively subjected to AddRoundKey processing 773 and 16 exclusive OR operations 791, 792, 793, , 794 (steps 762, 763, 764, ... ⁇ 765).
  • the InvShiftRows process 771 outputs 128-bit block data, and the block data is divided into 16 8-bit partial data. Partial data power Output to 16 shift processes 781, 782, 783, ⁇ , 784 of InvSubBytes process 772, respectively.
  • the shift process 781 receives the first partial data (8 bits), shifts the received first partial data by 3 bits to the left, and obtains 11-bit first shift data.
  • the upper 8 bits of the obtained first shift data are the same data as the first partial data, and the lower 3 bits of the first shift data are “000” (binary representation).
  • the obtained first shift data is output to the reference process 785.
  • the reference process 785 receives the first shift data, obtains the first array element of 8 bits by referring to the inverse transformation transformation S box 611 using the received first shift data as an address. , And outputs the obtained first array element to the exclusive OR operation 791 of the AddRoundKey process 773.
  • the exclusive OR operation 791 receives the first array element (8 bits), receives the first partial key (8 bits), and performs an exclusive operation on the received first array element and the received first partial key. Perform logical sum operation to obtain 8-bit first operation data.
  • shift processing 782 shifts the second partial data (8 bits) leftward by 3 bits to obtain 11-bit second shift data
  • reference processing 786 generates the received second shift data.
  • shift data of 2 As an address and referring to the inverse transformation S box 611, an 8-bit second array element is obtained, and an exclusive OR operation 792 calculates the second array element and the second partial key. And an exclusive OR operation is performed on the data to obtain 8-bit second operation data.
  • shift processing 783 shifts the third partial data (8 bits) to the left by 3 bits to obtain 11-bit third shift data
  • reference processing 788 performs By using the shift data of 3 as an address and referring to the inverse transformation transformation S box 611, an 8-bit third array element is obtained, and the exclusive OR operation 793 performs the third array element and the third partial key. And exclusive-OR operation are performed to obtain the third operation data of 8 bits.
  • shift processing 784 shifts the 16th partial data (8 bits) leftward by 3 bits to obtain 16-bit 11-bit shift data
  • reference processing 789 outputs the received 16th partial data.
  • 16 shift data as an address, refer to the inverse transformation modification S box 611, and 8 bits
  • the exclusive OR operation 794 obtains the 16th array element of the above, and performs an exclusive OR operation on the 16th array element and the 16th partial key to obtain an 8-bit 16th operation data .
  • the AES III program 133 may include a modified S-bottom 911 shown in Fig. 28 instead of the modified S-box 511.
  • the AES # program 133 includes a SubBytes processing module 505a (shown in the figure) instead of the SubBytes processing module 505.
  • the SubBytes processing module 505a includes 2-bit left shift processing instead of 3-bit left shift processing.
  • the modified S-box 911 is composed of 1024 IJ elements 921, 931, 932, 933, 922, 934, 935, 936, 923, ..., 924, ..., 925, ..., 926, ..., 927, ..., 928, ...
  • the array elements constituting the modified S-box 911 are arranged in a matrix of 128 rows ⁇ 8 columns for convenience of expression.
  • the 129, 923, ⁇ , 925, and 927 of the 128 systems of the first system IJ are the values S [00], S [02], S [04], and S [06, respectively. ], ..., value S [f 8], value S [fa], value S [fc], value S [fe].
  • S [00], S [02], S [04], S [06], ..., S [f8], S [fa], S [fc], S S [fe] is the same as that contained in the standard S box 380 described above.
  • the 256 array elements in the second column each have the value "0xff".
  • “0x” indicates that the number following this is expressed in hexadecimal.
  • Each array element included in the third to fourth columns also has the value “0xff”.
  • the 192, 924,..., 926, and 928 elements of the fifth system IJ have the following values: S [01], S [03], S [05], S [07] ], ..., value S [f9], value S [fb], value S [fd], value S [ff] To do.
  • value S [01], value S [03], value S [05], value S [07], ⁇ , value S [f9], value S [fb co, value S [fd], value S [ff] is the same as that included in the standard S box 380 described above.
  • the 256 array elements in the sixth column each have the value "0xff".
  • Each array element included in the seventh to eighth columns also has the value “0xff”.
  • each array element having an even sequence number included in the standard S box 380 is arranged, and each of the 128 array elements in the fifth column has an odd sequence number included in the standard S box 380.
  • Each array element is arranged, and the value “0xff” is arranged in each of the array elements in the second to fourth columns and the sixth to eighth columns.
  • the first array element has the same value as the array element included in the standard S box 380, and Has an insignificant value with the value “0xff”.
  • the force display in which 16 2-bit left shift processing and 16 modified S-box 911 reference processing are performed can be easily displayed. 29, among these 16 left shift processes and 16 reference processes, only a set 901 including one left shift process 902 and one reference process 903 is shown.
  • the 16-bit partial block data is subjected to 2-bit left shift and reference processing of the modified S box 911. As a result, 16 8-bit data are generated. Generated The resulting 16 8-bit data are concatenated to generate and output 128-bit block data.
  • Each partial block data is quadrupled by shifting left by 2 bits.
  • the modified S-box 911 among the four array elements arranged consecutively, the first one has a valid array element S [XX], so each partial block data is By referring to the modified S box 911 using the data obtained by quadrupling as the address, only valid array elements S [XX] can be obtained.
  • SubBytes processing module 505a may include a multiplication process of performing quadruple multiplication instead of the 2-bit left shift process for the above-described reason.
  • the content S of the modified S box 911 is included in the system as it is. . That is, in the cache line section 181c, the array element 941 “3 [00]”, the array element 951 “0 £ f”, the array element 952 “0xff”, the array element 953 “0xff”, and the array element 942 “S [01] , Array element 954 roxffj, array element 955 “0xff” and array element 956 “0xff”. Also in the other cache lines, the array elements of the standard S box 380 are stored in the first and fifth positions, and “0xff” is stored in the other portions.
  • the first array element of the 128 cache line units 182c, 183c, 184c,... Includes array elements 943 “S [02]”, which are array elements of the standard S box 380, respectively. ⁇ ⁇
  • the fifth system element “J” of the 128 cache line units 182c, 183c, 184c,... Includes array elements 944 “S [03]”, which are array elements of the standard S box 380, respectively. ⁇ ⁇
  • the same may be applied as described above.
  • the AES decoding program 234 may include an inverse-transformed modified S-box configured similarly to the modified S-box 911 shown in Fig. 28 instead of the inverse-transformed S-box 611.
  • the InvSubBytes processing module 605 of the AES decryption program 234 includes 2-bit left shift processing instead of 3-bit left shift processing.
  • the AES encryption program 133 may include a modified S box 1011 shown in FIG. 31 instead of the modified S box 511.
  • the AES encryption program 133 includes a SubBytes processing module 505b (shown in the figure) instead of the SubBytes processing module 505.
  • the SubBytes processing module 505b includes a 1-bit left shift process and a process of adding the value “1” in mod 512 instead of the 3-bit left shift process.
  • the modified S-box 1011 has 512 IJ elements 1041, 1031, 1042, 1032, 1043, 1033, 1044, 1034, ..., 1035, ..., 1036, ⁇ ⁇ ⁇ ⁇ , 1037,..., 1038, ⁇ ⁇ ⁇
  • each array element constituting the modified S box 1011 constituting the modified S box 1011
  • the 64 array elements 1031, ⁇ , 1035 in the second column are the values S [00], S [04], S [08], S [12], ⁇ , S, respectively. [fO], value S [f4], value S [f8], and value S [fc].
  • S [00], S [04], S [08], S [12], ⁇ , S [f0], S [f4], S [f8], S S [fc] is the same as that included in the standard S box 380 described above.
  • the 64 array elements 1032, ..., 1036 in the fourth column are respectively the value S [01], the value S [05], the value S [09], the value S [13], ⁇ , value S [fl], value S [f5], value S [f9], value S [fd].
  • the value S [fd] is the same as that contained in the standard S box 380 described above.
  • the 64 array elements 1033, ..., 1037 in the sixth column are the value S [02], the value S [06], the value S [10], the value S [14], ⁇ , value S [f2], value S [f6], value S [fa], value S [fe].
  • S [02], S [06], S [10], S [14], ⁇ , S [f 2], S [f6], S [fa] The value S [fe] is the same as that contained in the standard S box 380 described above.
  • the 64 array elements 1034,..., 1038 in the eighth column are respectively a value S [03], a value S [07], a value S [11], a value S [15],. , Value S [f3], value S [f7], value S [fb], and value S [ff].
  • S [03], S [07], S [11], S [15], ⁇ , S [f 3], S [f7], S [fb] The value S [ff] is the same as that contained in the standard S box 380 described above.
  • the 64 array elements in the first column each have a value "0xff".
  • “0x” indicates that the number following this is expressed in hexadecimal.
  • Each of the array elements included in the third, fifth, and seventh columns also has the value “0xff”.
  • the first array element has a meaningless value “0xff”
  • the other array elements are the standard S box It has the same value as the array element contained in 380.
  • each partial block data is shifted to the left by one bit, and the value “1” in mod 512 is added for the following reason.
  • the SubBytes processing module 505b may include a multiplication process of performing double multiplication instead of the 1-bit left shift process for the above-described reason.
  • the modified S box if the valid array element S [XX] is arranged for the second array element among the two array elements arranged consecutively, As described above, the data obtained by doubling each partial block data and further adding “1” is used as an address, and by referring to the another modified S box, only the valid array element S [x X] is obtained. Is obtained.
  • each partial block data is multiplied by 8 and further obtained by adding “3” is used as an address, and by referring to the another modified S box, an effective array element S [x X] only.
  • the contents of the modified S box 1011 are stored as they are in the 64 cache line units 181d, 182d, 183d, 184d, etc., from the head of the data unit 175d.
  • the array element 1061 “0xff”, the array element 1051 “S [00]”, the array element 1062 “( ⁇ £ ⁇ , the array element 1052“ 3 [01] ”, the array element 1063“ ( ⁇ £, array element 1053 “S [02]”, array element 1064 "0xff", and array element 1054 “S [03]” are stored.
  • the fourth, sixth, and eighth array elements store the array element of the standard S box 380, and the other array elements store “0xff”.
  • the second array "J element" of the 64 cache line units 182d, 183d, 184d, ... has an array element "S [04]” which is an array element of the standard S box 380, respectively.
  • S [08]”, “S [12]”,..., “S [fOko”, “S [f4]”, “38”, and “3 []” are stored.
  • the 64th cache line 182 B182d, 183d, 184d,..., The fourth rooster system [J has array elements “S [05]”, which are array elements of the standard S box 380, respectively.
  • “S [09]", “S [13]",..., “S [fl]", “S [f5]", "39” and "3 (1)” are stored. .
  • the sixth rooster system [J] has an array element “S [06 ]], "S [10]”, “S [ 14],..., “S [f2]”, “S [f6]”, “S [fa]”, and “S [fe]”.
  • the array element which is the array element of the standard S box 380, "S [07]”, “S [11]”, "S
  • each cache line section of the data section 175d only four array elements of the standard S box 380 are stored.
  • the same may be applied as described above.
  • AES decoding program 234 may include an inverse transformed modified S box configured similarly to modified S box 1011 shown in Fig. 31 instead of inverse transformed modified S box 611.
  • the InvSubBytes processing module 605 of the AES decryption program 234 replaces the 3-bit left shift processing with the 1-bit left shift processing and the value “1” in mod 512. ).
  • the AES encryption program 133 may include a modified S box 1121 shown in FIG. 34 instead of the modified S box 511.
  • the AES encryption program 133 includes a SubBytes processing module 505c (not shown) instead of the SubBytes processing module 505.
  • the SubBytes processing module 505c includes multiplication processing in mod 256 instead of the 3-bit left shift processing.
  • the modified S-box 1121 has 256 IJ elements 1131, 1132, 113
  • each array element constituting the modified S box 1121 is They are arranged in a matrix of 32 rows x 8 columns.
  • the eight array elements 1131,..., 1138 in the first row are the values S [0], S [81], S [162], S [243], S [68], It has a value S [149], a value S [230], and a value S [55].
  • S [0], S [81], S [162], S [243], S [68], S [149], S [230], S [55] are the same as those contained in the standard S box 380 described above.
  • S [XX] XX is represented by a decimal number.
  • the eight array elements 1139, ..., 1146 in the second row are the value S [136], the value S [217], the value S [42], the value S [123], and the value, respectively. It has S [204], value S [29], value S [110], and value S [191]. Where value S [136], value S [217], value S [42], value S [123], value S [204], value S [29], value S [110], value S [191] Are the same as those contained in the standard S box 380 described above. Again, in S [XX], XX is a decimal number.
  • Each array element in the third to 32nd rows is the same as the array element included in the standard S box 380 described above. However, in the modified S box 1121 of FIG. 34, the display of each array element from the third row to the 32nd row is omitted.
  • each array element stored in the above-described standard S box 380 is stored according to a rule described below.
  • AX 177 mod 256 is calculated for each of the 256 input values A (0, 1, 2, ..., 255), which are integers. Each input value A and the corresponding calculation result are shown in a correspondence table 1122 shown in FIG.
  • Correspondence table 1122 shows 256 person chi chi A in association with the calculation result by AX 177 mod 256. However, in the correspondence table 1122 shown in Fig. 35, the calculation results corresponding to all the values of A are not displayed for reasons of space, and only a part of them is displayed. Is omitted.
  • the array element of the standard S box 380 stored in the array element 1131 indicated by the array number “0” of the modified S box 1121 is determined as follows.
  • the calculation result “0” having the same value as the sequence number “0” is searched from the correspondence table 1122, and the input value A “0” corresponding to the calculation result is obtained.
  • the array element S [0] having the obtained input value A “0” as the array number is set as the value of the array element 1131 indicated by the array number “0” of the modified S box 1121.
  • the array element of the standard S box 380 stored in 1132 is determined as follows.
  • the calculation result “1” having the same value as the array number “1” is searched from the correspondence table 1122, and the input value A “81” corresponding to the calculation result is obtained.
  • the array element S [81] having the acquired input value A “81” as the array number is set as the value of the array element 1132 indicated by the array number “1” of the modified S box 1121.
  • the array element of the standard S box 380 stored in the array element 1133 indicated by the array number “2” of the modified S box 1121 is determined as follows.
  • the calculation result “2” having the same value as the sequence number “2” is searched from the correspondence table 1122, and the input value A “162” corresponding to the calculation result is obtained.
  • the array element S [162] having the acquired input value A “162” as the array number is set as the value of the array element 1133 indicated by the array number “2” of the modified S box 1121.
  • the array elements included in the standard S box 380 are arranged according to the rules described above.
  • the calculation result A XI 77 mod 256 for the input value A is used, and the force obtained by multiplying the input value A by “177” is not limited to “177”. It may be multiplied by another odd value.
  • the force S that performs multiplication in mod 256 where the value "256" is a length (for example, a bit length) that can be taken by the data to be converted, in other words, the data to be converted dependss on the number of possible value types.
  • the data to be converted is 8 bits, and the number of possible values of the data is 256.
  • the number of possible value types of the multiplied value obtained is 256, which is the same as the data to be converted.
  • FIG. 36 shows only a set 1101 consisting of one multiplication process 1102 and one reference process 1103 among these 16 multiplication processes and 16 reference processes.
  • the multiplication of mod 256 and the reference processing of the modified S-bottom 1121 are performed on the 16 partial block data.
  • 16 8-bit data are generated.
  • the generated 16 8-bit data is concatenated to generate and output 128-bit block data.
  • each partial block data is multiplied by the value “177” for the following reason.
  • each partial block data is multiplied by the value “177” in mod 256, and the obtained multiplied value is used as an address to refer to the modified S box 1121 to obtain each partial block data.
  • the result is a valid array element S [XX] that corresponds appropriately to the data.
  • the content of the S box 1121 is stored as it is.
  • the cache element 181e includes the array element 1151 “S [0]” and the array element 1152 “S [0
  • the cache element 182e has an array element 1159 "S [136]” and an array element 1160 "S [136].
  • array element 1166 [204] ", array element 1164" S [29] ", array element 1165" S [110] "and array element 1166
  • the AES decoding program 234 may include an inverse-transformed S-box configured similarly to the modified S-box 1121 shown in Fig. 34 instead of the inverse-transformed S-box 611.
  • the AES III program 133 may include a modified S-bottom 1221 shown in FIG. 38 instead of the modified S-box 511. Also, at this time, the AES # program 133 includes a SubBytes processing module 505d (shown in the figure) instead of the SubBytes processing module 505.
  • the SubBytes processing module 505d includes a multiplication process and a 1-bit left shift process in mod 256 instead of the 3-bit left shift process.
  • the modified S box 1221 is composed of 512 IJ elements 1231, 1241, 1232, 1242, 1233, 1243, 1234, 1244, 1235, ..., 1236, ..., 1237, ..., 123 8, ...
  • the array elements constituting the modified S box 1221 are arranged in a matrix of 64 rows ⁇ 8 columns for convenience of expression.
  • each array element S [XX] stored in the modified S box 1121 shown in FIG. 34 is stored every other while maintaining the arrangement order in the modified S box 1121. Have been.
  • “0xff” is stored between these array elements.
  • the eight IJ elements 1231, 1241, 1232, 1242, and 1233 in the first row of the deformed S box 1221 are stored.
  • 1243, 1234, and 1244 respectively represent the value S [0], “0xff”, the value S [81], “0xff”, the value S [162], “0xff”, the value S [243], “0xff” Have.
  • the values S [0], S [81], S [162], and S [243] are the same as the first four array elements in the first row of the modified S box 1121 shown in FIG. Things.
  • the eight array elements 1235, ..., 1236, ..., 1237, ..., 1238, ... in the second row of the modified S box 1221 are the values S [68] , “0xff”, value S [149], “0xff”, value S [230], “0xff”, value S [55], and “0xff”.
  • the value S [68], the value S [149], the value S [230], and the value S [55] are the same as the last four array elements in the first row of the modified S box 1121 shown in FIG. Things.
  • S [XX] XX is represented by a decimal number.
  • the modulo 256 multiplication, the 1-bit left shift process, and the reference process of the modified S box 1221 are performed on the 16 partial block data.
  • 16 8-bit data are generated.
  • the 16 generated 8-bit data are concatenated to generate and output 128-bit block data.
  • each partial block data is multiplied by the value “177” as described in the modification (4).
  • the 1-bit left shift processing is performed as described in the modification (2).
  • each partial block data is multiplied by the value “177” in mod 256, and the obtained multiplied value is subjected to 1-bit left shift processing to obtain shifted data.
  • the modified S box 1221 using the obtained shift data as an address, a valid array element S [XX] appropriately corresponding to each partial block data can be obtained.
  • the SubBytes processing module 505d may include a multiplication process of performing double multiplication instead of the 1-bit left shift process.
  • the contents of the modified S box 1221 are stored as they are in the 64 cache line units 181f, 182f, ... from the beginning of the data unit 175f.
  • each of the cache line portions of the data portion 175f stores the eight array elements contained in one row of the modified S box 1221.
  • the same may be applied as described above.
  • the AES decoding program 234 may include an inverse transform modified S box configured similarly to the modified S box 1221 shown in Fig. 38 instead of the inverse transform modified S box 611.
  • the InvSubBytes processing module 605 of the AES decryption program 234 replaces the 3-bit left shift processing with multiplication processing of the value “177” in mod 2 56 and 1 And left shift of bits.
  • the AES encryption program 133 may include a modified S box 1311 shown in FIG. 41 instead of the modified S box 511.
  • the AES encryption program 133 includes a SubBytes processing module 505e (shown in the figure) instead of the SubBytes processing module 505.
  • the SubBytes processing module 505e includes a multiplication process in mod 256, a 1-bit left shift process, and an addition process in mod 512, instead of the 3-bit left shift process.
  • the modified S box 1311 has 512 IJ elements 1331, 1321, 133 2, 1322, 1333, 1323, 1334, 1324, ..., 1325, ..., 1326, ⁇ 1327, ⁇ , 1328, ⁇
  • the array elements constituting the modified S box 1311 are arranged in a matrix of 64 rows x 8 columns for convenience of expression.
  • the eight IJ elements 1331, 1321, 1332, 1322, 1333, 1323, 1334, and 1324 are “0xff” and the value S, respectively. [0], “0xff”, value S [81, “0xff”, value S [162], “0xff”, and value S [243].
  • the values S [0], S [81], S [162], and S [243] are the same as the first four array elements in the first row of the modified S box 1121 shown in FIG. Things.
  • a value [1] is added to each generated 9-bit shift data to generate a 9-bit added value (step S1304).
  • the generated 9-bit addition value is subjected to a reference process in the modified S box 1311 to output 8-bit data (step 1305).
  • each partial block data is multiplied by the value “177” as described in the modification (4).
  • the 1-bit left shift processing is performed as described in the modification (2).
  • the addition in the mod 512 is as described in the modification (2).
  • each partial block data is multiplied by the value "177" in mod 256, and the obtained multiplied value is subjected to 1-bit left shift processing to obtain shifted data.
  • Mod 256 Then, by adding the value “1” to the obtained shift data to obtain an added value, and using the obtained added value as an address and referring to the modified S box 1311, it is possible to appropriately correspond to each partial block data.
  • the effective array element S [XX] is obtained.
  • SubBytes processing module 505e may include a multiplication process of performing double multiplication instead of the 1-bit left shift process.
  • the contents of the modified S box 1311 are stored as they are in the 64 cache line units 181g, 182g, ... from the beginning of the data unit 175g.
  • the cache line unit 181g includes the array element 1351 “0xff”, the array element 1341 “S [0]”, the array element 1352 “0xff”, the array element 1342 “S [81]”, the array element 1352 “0xff”, Array element 1343 “S [162]”, array element 1353 “0xff”, and array element 1344 “S [243]” are stored.
  • each of the cache line portions of the data portion 175g stores eight array elements included in one row of the modified S box 1311.
  • the same may be applied as described above.
  • the AES decoding program 234 may include, instead of the inverse transform modified S box 611, an inverse transform modified S box configured in the same manner as the modified S box 1311 shown in FIG.
  • the InvSubBytes processing module 605 of the AES decryption program 234 replaces the 3-bit left shift processing with the multiplication of the direct “177” in mod 256, and 1-bit left shift processing and mod 512 And processing for adding the value “1”.
  • the AES III program 133 may include a modified S box 1421 shown in FIG. 44 and a modified S box 1441 shown in FIG. 45 instead of the modified S box 511.
  • the AES # program 133 includes a SubBytes processing module 505f (shown in detail) instead of the SubBytes processing module 505. The details of the SubBytes processing module 505f will be described later.
  • the modified S box 1421 is composed of 256 IJ elements 1431, 1432, 1433, 1434, 1435, 1436, 1437, 1438,.
  • the modified S box 1421 is the same as the modified S box 1121 shown in FIG. Here, description of the modified S box 1421 is omitted.
  • the modified S box 1441 is generated based on a concept similar to the modified S box 1121 shown in FIG. 34, and as shown in FIG. 45, the 256 IJ elements 1451, 1452, 1453, 1454, 1455 , 1456, 1457, 1458,... It is assumed that these IJ elements are identified by the sequence numbers “0”, “1”, “2”, “3”,..., “255”.
  • the array elements constituting the modified S box 1441 are arranged in a matrix of 32 rows x 8 columns for convenience of expression.
  • the eight array elements 1451,..., 1458 in the first row are the values S [0], S [133], S [10], S [143], S [20], It has a value S [153], a value S [30], and a value S [163].
  • S [0], S [133], S [10], S [143], S [20], S [153], S [30], S [163] are the same as those contained in the standard S box 380 described above.
  • S [XX] XX is represented by a decimal number.
  • the eight array elements in the second row are the values S [40], S [173], S [50], S [183], S [60], and S [S], respectively. [193], the value S [70], and the value S [203].
  • Value S [173], value S [50], value S [183], value S [60], value S [193], value S [70], value S [203] are the standard S box 380 described above. Is the same as that included in Again, in S [XX], XX is a decimal number.
  • the array elements in the third to 32nd rows are the same as the array elements included in the standard S box 380 described above. However, in the modified S box 1441 in FIG. 45, the display of each array element from the third row to the 32nd row is omitted.
  • Each of the array elements stored in the standard S box 380 is stored in the modified S box 1441 according to the rules described below.
  • This arrangement rule is similar to the arrangement rule in the modified S box 1121 shown in FIG.
  • Correspondence table 1442 shows 256 people chi B, and the calculation result by B X 77 mod 256 in association with each other. However, in the correspondence table 1442 shown in Fig. 46, the calculation results corresponding to all the values of B are not displayed for reasons of space, but only a part of them is displayed. , The display is omitted.
  • the array element of the standard S box 380 stored in the array element 1451 indicated by the array number “0” of the modified S box 1441 is determined as follows.
  • the calculation result “0” having the same value as the sequence number “0” is searched from the correspondence table 1442, and the input value B “0” corresponding to the calculation result is obtained.
  • the array element S [0] having the obtained input value B “0” as the array number is set as the value of the array element 1451 indicated by the array number “0” of the modified S box 1441.
  • the array element of the standard S box 380 stored in the array element 1452 indicated by the array element number “1” of the modified S box 1441 is determined as follows. Array number The calculation result “1” having the same value as the number “1” is searched from the correspondence table 1442, and the input value B “133” corresponding to the calculation result is obtained. Next, the array element S [133] having the obtained input value B “133” as the array number is set as the value of the array element 1452 indicated by the array number “1” of the modified S box 1441.
  • the array element of the standard S box 380 stored in the array element 1453 indicated by the array element number “2” of the modified S box 1441 is determined as follows.
  • the calculation result “2” having the same value as the sequence number “2” is searched from the correspondence table 1442, and the input value B “10” corresponding to the calculation result is obtained.
  • the array element S [10] having the acquired input value B “10” as the array number is the value of the array element 1453 indicated by the array number “2” of the modified S box 1441.
  • the array elements included in the standard S box 380 are arranged according to the rules described above.
  • the random number R is either a value “0” or a value “1” (step 14).
  • step 1406 If the generated random number R value is “0”, the modulo 256 multiplies the partial block data by the value “177” (step 1406). Thus, an 8-bit product value is generated. Next, the generated 8-bit multiplied value is subjected to reference processing of a modified S box 1421 to output 8-bit data (step 1407).
  • step 1408 If the generated random number R value is “1”, the partial block Is multiplied by the value “77” (step 1408). Thus, an 8-bit product value is generated. Next, the generated 8-bit multiplied value is subjected to reference processing of a modified S box 1441 to output 8-bit data (step 1409).
  • the multiplication of 177 or 77 by mod 256 and the reference processing of the modified S box 1421 or 1441 are performed on the 16 partial block data.
  • 16 8-bit data are generated.
  • the 16 generated 8-bit data are concatenated to generate 128-bit block data and output.
  • each partial block data is multiplied by the value “177” or multiplied by the value “77” in mod 256 using the generated random numbers.
  • each partial block data is multiplied by the value “177” or multiplied by the value “77” in mod 256 using the generated random numbers.
  • an effective array element S [XX] corresponding to each partial block data is obtained.
  • FIG. 48 shows an example in which the contents of the modified S box 1421 are stored in the cache line units 181, 182,... Of the data unit 175 by the above-described SubBytes processing, as the data unit 175h.
  • FIG. 49 shows an example of the case where the contents of the modified S box 1441 are stored as a data section 175i.
  • the AES decryption program 234 stored in the memory unit 203 of the personal computer 200, the same may be applied as described above. [0241] That is, the AES decryption program 234 replaces the inverse transform modified S box 611 with the inverse transform modified S box configured in the same manner as the modified S box 1421 shown in FIG. 44 and the modified S box 1441 shown in FIG. And an inverse transformation S box configured in the same manner as above.
  • the InvSubBytes processing module 605 of the AES decoding program 234 includes the processing of each step shown in FIG. 47 instead of the 3-bit left shift processing.
  • the AES No. program 133 may include a SubBytes processing module 1501 shown in FIG. 50 instead of the SubBytes processing module 505.
  • the reference calculation of the S box is performed 16 times as in the normal SubBytes processing. Further, before or after performing the reference operation of the S box (FIG. 50 shows the latter case), all array elements stored in the data section 175 of the cache section 162 are deleted. Perform processing.
  • a method for erasing data stored in the cache unit 162 As a method for erasing data stored in the cache unit 162, a method using a special instruction (in the case of Pentium (registered trademark), an “INVD” instruction or a “WBINVD” instruction) or a memory unit is used. There is a method of accessing data unrelated to the cryptographic processing on 103, causing the data to be copied to the cache unit 162, and evicting array elements already existing in the cache unit 162.
  • a special instruction in the case of Pentium (registered trademark), an “INVD” instruction or a “WBINVD” instruction
  • step S301 reference processing of the S box is performed (step S301), and then the array elements stored in the cache unit 162 are processed in the manner described above. Is performed (step S302).
  • steps S303 to S314 the array elements stored in the cache unit 162 are erased after the reference process i (i is a natural number from 2 to 16) of the S-bots, similarly to steps S301 and S302. Is repeated.
  • the force to call the cache clear processing after accessing (or before accessing) the array element of the S box is not limited thereto.
  • a cache clearing process is provided after each of the 16 table reference operations, and for other counter values (from 1 to Nr-2), the cache Utalia processing is performed. You don't have to. This is because the amount of computation required to estimate the key in the SubBytes process (for example, the first stage or the first stage of Nr_1) that is closer to plaintext and ciphertext is farther from plaintext and ciphertext. It takes advantage of the fact that the amount of computation required for estimating a key in SubBytes processing (for example, (Nr_l) / 2nd stage) is larger than that required.
  • the processor included in the device that processes the computer program is not limited to the configuration shown in FIG.
  • the microprocessor 101 instead of the cache unit 162, the microprocessor 101 includes a primary cache unit 162a having a higher speed and a smaller capacity and a secondary cache unit 162b having a lower speed and a larger capacity. .
  • the arithmetic unit 161 first goes to the primary cache unit 162a to read data, and if the data is not in the primary cache unit 162a, goes to the secondary cache unit 162b.
  • the primary cache unit 162a there are three cases: a table element is obtained from the primary cache unit 162a, a table element is obtained from the secondary cache unit 162b, and a table element is obtained from the memory unit 103.
  • microprocessor 101 may further include a tertiary cache unit and the like.
  • the microprocessor is provided with a cache unit.
  • the present invention is not limited to this.
  • the computer system it is also possible for the computer system to include a cache unit to include a microprocessor, a cache unit, and a memory unit.
  • the modified S box 511 is assumed to be included in the AES encryption program 133.
  • the present invention is not limited to this.
  • Each module (computer program) included in the AES No. 133 program and the modified S box 511 may constitute separate data sets (files). The same applies to the AES decryption program 134.
  • each modified S box is not limited to the force roxffj that includes "0xff" as dummy data that does not exist in the standard S box. Les ,. It may include other data instead of "0xff".
  • each modified S box may include a random number generated by a random number generator instead of “0xff”, or may include data existing in a standard S box.
  • the round processing module 503 includes instruction code groups S131, S132, S133 and S134, and these instruction codes
  • the command groups are arranged in this order in the round processing module 503, and the order is used to execute each instruction code group.
  • the present invention is not limited to this.
  • the modified round processing module includes instruction codes S132, S133, S134, and S131, and these instruction codes are included in the modified round processing module.
  • the instruction codes may be executed in this order, and each instruction code group may be executed in this order.
  • the encryption main module calls the instruction code group S131, and then calls the modified Round processing module a predetermined number of times.
  • the cache unit of the microprocessor 101 is assumed to have a 64-bit cache line unit.
  • the bit length of the cache line unit is not limited to this.
  • Each cache line unit having another length may be provided. In this case as well, the above description can be realized.
  • the force applied to AES as a symbol algorithm is not limited to this.
  • the symbol ARGO such as DES (Data Encryption Stanadard) It may be applied to the rhythm.
  • the present invention is not only applicable to decoding and decoding. Specifically, it may be used for purposes such as information tampering check and digital signature.
  • Each of the above devices is, specifically, a computer system including a microprocessor, a ROM, a RAM, a hard disk unit, a display unit, a keyboard, a mouse, and the like.
  • a computer program is stored in the RAM or the hard disk unit.
  • the computer program is configured by combining a plurality of instruction codes indicating instructions to the computer in order to achieve a predetermined function.
  • Each device achieves its function by operating according to the microprocessor power and the computer program. That is, the microprocessor reads each instruction included in the computer program one by one, decodes the read instruction, and operates according to the decoding result.
  • System LSIs are super-multifunctional LSIs manufactured by integrating multiple components on a single chip.
  • a computer system that includes a microprocessor, R ⁇ M, RAM, etc. It is.
  • the RAM stores a computer program. By operating in accordance with the computer program, the microprocessor achieves its functions.
  • a part or all of the constituent elements of each of the above devices may be constituted by an IC card detachable to each device or a single module.
  • the IC card or the module is a computer system including a microprocessor, a ROM, a RAM, and the like.
  • the IC card or the module may include the above super-multifunctional LSI. By operating according to a microprocessor-powered computer program, the IC card or the module achieves its function. This IC card or this module may have tamper resistance.
  • the present invention may be the method described above. Further, the present invention may be a computer program that realizes these methods on a five-computer, or may be a computer program. It may be a digital signal consisting of a program.
  • the present invention provides a computer-readable recording medium for the computer program or the digital signal, for example, a flexible disk, hard disk, CD-ROM, MO, DVD, DVD-ROM, DVD-RAM, BD (Blu-ray Disc), semiconductor memory, or the like. Further, the present invention may be the computer program or the digital signal recorded on the recording medium.
  • the computer program or the digital signal may be transmitted via an electric communication line, a wireless or wired communication line, a network represented by the Internet, data broadcasting, or the like.
  • the present invention may be a computer system including a microprocessor and a memory, wherein the memory stores the computer program, and the microprocessor operates according to the computer program.
  • the computer or the digital signal is recorded on the recording medium and transferred, or the program or the digital signal is transferred via the network or the like, so that another computer system becomes independent. May be implemented by
  • the computer system empowered by the present invention can increase resistance to timing attacks that observe the processing time, so that it can be used in any industry that needs to handle information confidentially. And repetitively, can use power S. Further, each device constituting the present invention can be manufactured and sold in the electric appliance manufacturing industry in a business-wise manner and continuously and repeatedly.

Abstract

 処理時間を観測するタイミング攻撃に対する耐性を有するコンピュータシステムを提供する。  コンピュータシステムは、平文又は暗号文に係る部分データを対応する変換データに変換するプロセスを経て、平文又は暗号文を暗号化又は復号する。変換表は、ライン表領域の先頭位置において、部分データに対応する1個の変換データを含み、他の位置において、前記変換に無関係のデータを含む。コンピュータプログラムは、取得した部分データを用いて、対応する前記変換データの前記変換表における位置を算出する演算命令群と、前記変換表から、算出された前記位置に存する前記変換データを読み出す読出命令群とを含む。

Description

明 細 書
喑号又は復号を行うコンピュータシステム及びコンピュータプログラム 技術分野
[0001] 本発明は、情報を秘密に扱う暗号及び復号技術に関する。
背景技術
[0002] ADSL (Asymmetric Digital Subscriber Line)や光ファイバ一などに代表される高速 通信路を介して、デジタル化された音楽や映像等のコンテンツを提供するサービスの 普及に伴い、これらのコンテンツの不正コピーなどのコンテンツの不正利用の防止が 必要となってきている。
一般に、コンテンツの不正利用を防止する著作権保護方式においては、暗号技術 が用いられる。例えば、喑号ィ匕鍵を用いてデジタルコンテンツを暗号化して通信路を 介して配布し、その喑号ィ匕鍵に対応する復号ィ匕鍵を与えられてレ、るユーザのみが、 暗号化されたコンテンツを復号化して、元のデジタルコンテンツの再生を行うことがで きる。
[0003] 一方、パーソナルコンピュータの普及により、デジタルコンテンツはコンピュータ上 で再生されることが多くなつてきている。著作権保護方式に必要な暗号処理は、パー ソナルコンピュータ上の喑号プログラムとして提供され、喑号化されたコンテンツを復 号化する際に用いる複号化鍵も、予めその暗号プログラムの内部に坦め込まれる場 合が多くなつてきている。
[0004] ところで、最近、コンピュータ上において暗号プログラムの実行中に実行環境つまり コンピュータから漏れ出す副情報、例えば、処理時間や電力消費量などを利用して、 暗号プログラム内部に秘密に格納されている秘密情報、例えば、複号化鍵を取得す るサイドチャネル攻撃が提案されてレ、る。
非特許文献 1及び非特許文献 2によると、このような攻撃手法の一つとして、コンビ ユータに内蔵され、処理の高速化を目的に用いられるキャッシュメモリに着目したタイ ミング攻撃というものがある。ここで、キャッシュメモリとは(非特許文献 3を参照)、一度 演算部、例えば CPUカ インメモリから取得したデータを、高速にアクセス可能なキヤ ッシュメモリに格納し、二度目以降に同じデータにアクセスする場合は、高速にァクセ ス可能なキャッシュメモリからデータを取得することによって、処理速度の高速化を実 現するものである。
[0005] 上述のタイミング攻撃では、データをキャッシュメモリから取得する場合と、メインメモ リから取得する場合との処理時間差に着目して、秘密情報を特定することに成功して いる。
このタイミング攻撃は、キャッシュメモリが搭載された CPU上で実行される喑号プロ グラムに対して有効であり、特に、テーブル参照演算(一般に SBOXの参照と呼ばれ る)が用いられる繰り返し型のブロック喑号方式である AES (Advanced Encryption Standard)方式(非特許文献 4に記載)や DES (Data Encryption Standard)方式など が攻撃の対象となっている。本タイミング攻撃を適用可能な実行環境としては、例え ば、一般的なパーソナルコンピュータ(PC/AT互換機など)やキャッシュメモリを有 するスマートカードなどである。
[0006] 次に、タイミング攻撃の概要について説明する。
AESでは、入力データと秘密鍵 (拡大鍵)とに排他的論理和演算を施しその演算 結果を用いて、上述のテーブル参照演算を行う。また、前提として、暗号処理を開始 する前に、キャッシュメモリにその暗号処理のテーブル参照演算で用いるテーブルデ ータ配列(SBOX)が格納されていないものとする。このような前提のもとでは、暗号 処理の途中のテーブル参照演算において、テーブル要素がキャッシュメモリから取 得されるか、メインメモリから取得されるかは、入力データ及び秘密鍵に依存して一意 に定まる。
[0007] これは、ある固定のテーブル要素を参照するテーブル参照演算を想定した場合に 、入力データの値を変化させることによって、テーブル要素がキャッシュメモリから取 得される場合と、メインメモリから取得される場合との両方のケースがあることを意味す る。つまり、入力データを変化させることによって、全体の暗号処理時間が変化するこ とを意味する。
[0008] そこで、タイミング攻撃では、全体の喑号処理時間を測定し、測定して得られた処 理時間を基に、処理途中のあるテーブル参照演算において、テーブル要素がキヤッ シュメモリから取得された力、メインメモリから取得されたかを推測し、その推測及び入 力データを基に、秘密鍵 (拡大鍵)を解析する。
このようなタイミング攻撃には、主に二つのアプローチがある。一つは、非特許文献 1に記載されているように、 1ブロック (AES方式の場合は 128ビット)毎の暗号化処理 時間を計測するものである。もう一つは、非特許文献 2に記載されているように、 2プロ ック (AES方式の場合 128ビット X 2)毎の暗号化処理時間を計測するものである。次 に、非特許文献 1及び非特許文献 2に記載のタイミング攻撃のそれぞれの概要につ いて説明する。
[0009] 非特許文献 1に記載のタイミング攻撃は、 2回同じテーブル要素にアクセスした場 合に、 2回目はキャッシュメモリからテーブル要素を取得するため、処理時間が短くな ることを利用している。非特許文献 1に記載のタイミング攻撃の大ま力、な流れは以下 の通りである。
まず、 1ブロック暗号化する毎に、キャッシュメモリの内容をクリアする。そして、ある 2 つのテーブル参照演算に着目し、その 2つのテーブル参照演算の入力値に影響す る鍵情報をある値に仮定する。そして、その仮定の下で 2つのテーブル参照演算の 入力値が同じになるような入力データを選択し、その処理時間を計測する。上記のこ とを考えられる全ての鍵情報の値について実行する。最終的には、一番処理時間の 短かった鍵を正解の鍵として出力する。その後、また別の 2つのテーブル参照演算に 着目し、同様に鍵を推定していく。
[0010] 一方、非特許文献 2に記載のタイミング攻撃は、一回のメインメモリ上の喑号プログ ラム内のテーブル要素のアクセスによって、メインメモリから複数のテーブル要素が一 緒にキャッシュメモリへコピーされる特徴を用いている。非特許文献 2に記載のタイミ ング攻撃の大まかな流れは以下の通りである。
まず、 2ブロック暗号化する毎に、キャッシュメモリの内容をクリアする。そして、ある 1 つのテーブル参照演算に着目し、その 1つのテーブル参照演算の入力値に影響す る鍵情報をある値に仮定する。そして、 1ブロック目の着目するテーブル参照演算に おいて、メインメモリ力、らキャッシュメモリへコピーされる複数のテーブル要素を、 2ブロ ック目で参照する(ただし、 1ブロック目のテーブル参照演算の入力値以外)入力デ ータを選択し、その処理時間を計測する。上記のことを考えられる全ての鍵情報の値 について実行する。最終的には、一番処理時間の短かった鍵を正解の鍵として出力 する。その後、また別の 1つのテーブル参照演算に着目し、同様に鍵を推定していく
[0011] 上記で説明したように、処理時間を測定するタイミング攻撃は、入力データに依存 して、 1ブロック又は 2ブロックの喑号処理の時間が異なることに起因している。このた め、タイミング攻撃に対する対策としては、入力データを変えても、 1ブロック又は 2ブ ロックの喑号処理の処理時間が変化せずに一定になるようにする方法がある。このよ うな対策法としては、非特許文献 5の第 4. 2節に記載の従来技術がある。その従来 技術の概要を説明する。ここでは、暗号処理の具体的な適用例として、 AES方式の 暗号化処理を挙げる。
[0012] 非特許文献 5により開示されている従来技術の特徴は、実際の AES方式の喑号ィ匕 処理を実行する前に、 AES方式の SubBytes処理で用いられるテーブル参照演算 のテーブルデータ配列のテーブル要素に一つ一つアクセスすることにより、入力デー タに依存しない処理(非特許文献 5では Cache Warmingと呼ばれる)を追加するも のである。これにより、実際の AES方式の喑号ィ匕処理を開始する前までに、 AES方 式の SubBytes処理のテーブル参照演算で用いられる全てのテーブル要素をキヤッ シュメモリに格納することができ、結果的に、 AES方式の暗号化処理の SubBytes処 理のテーブル参照演算においては、テーブル要素を全てキャッシュメモリから取得出 来ることになる。これによつて、入力メッセージに依存して、全体の処理時間が変化せ ずに、処理時間が常に一定となる。つまり、処理時間を測定するタイミング攻撃に対 する耐性を向上させることが出来る。
[0013] また、特許文献 1は、キャッシュ攻撃型暗号解読法に対する防御機能を備えた暗号 装置を提供することを目的として、 1つの平文または 1つの暗号文の暗号処理又は復 号処理における変換表に対するアクセス時のキャッシュミスヒット回数を、任意の平文 または暗号文についてほぼ均一化する手段について開示している。
特午文献 1: Y.Tsunoo ,E.Tsujihara ,K.Minematsu ,H.Miyauchi, Cryptanalysis of Blockし lphers Implemented on Computers with Cache International Symposium on Information Theory and Its Applications(ISITA)、 October 2002.
非特許文献 2 :鶴丸豊広ら、 "64ビットブロック暗号に対するタイミング攻撃" The 2003
Symposium on Cryptgraphy and Information ecunty(Sし iS2003)、 2003.
非特許文献 3 :デイビッド ·Α·パターソン、ジョン 'レへネシ一、 "コンピュータの構成と 設計,,、 ISBN4— 8222— 8056— X、 日経 BP社出版
非特許文献 4: Federal Information Processing Standard(FIPS) Publication 197、 November 26、 2001.
非特許文献 5 : D.Page、 "Defending against cache-based side-channel attacks" Information Security Technical Report Λ Vol.8、 No. l、 Page30 - 44、 2003.
特許文献 1 :日本国特開 2004— 120307号公報
発明の開示
発明が解決しょうとする課題
[0014] し力、しながら、上述したように、処理時間を観測するタイミング攻撃に関する研究が 進んでおり、さらに別の防御手段の開発が要望されている。
本発明は、上記の要望に応えるために、処理時間を観測するタイミング攻撃に対す る耐性を有するコンピュータシステム、方法及びコンピュータプログラムプログラムを 提供することを目的とする。
課題を解決するための手段
[0015] 上記目的を達成するために、本発明は、平文又は暗号文に係る部分データを対応 する変換データに変換するプロセスを経て、平文又は暗号文を暗号化又は復号する コンピュータシステムであって、部分データに対応する変換データを含む変換表と、 前記プロセスにおいて、前記変換表を用いて部分データに対応する変換データを取 得する複数の命令を含むコンピュータプログラムとを記憶している主メモリ部と、所定 長のライン記憶領域を含むキャッシュメモリ部と、前記主メモリ部に記憶されている前 記コンピュータプログラムから 1個ずつ命令を読み出し、解読し、その解読結果に応 じて動作する実行部とを備え、前記実行部は、前記変換表に含まれる変換データを 取得する際に、最初に、前記キャッシュメモリ部の前記ライン記憶領域力 当該変換 データの取得を試み、前記ライン記憶領域に当該変換データが存在しない場合に、 前記主メモリ部から当該変換データを取得し、取得した変換データを含む前記所定 長の包含データを前記ライン記憶領域に書き込み、前記変換表は、前記所定長のラ イン表領域を有し、前記ライン表領域の所定位置において、部分データに対応する 1 個の変換データを含み、前記ライン表領域の他の位置において、前記変換に無関 係のデータを含み、前記コンピュータプログラムは、部分データを取得する取得命令 群と、取得した部分データを用いて、対応する前記変換データの前記変換表におけ る位置を算出する演算命令群と、前記変換表から、算出された前記位置に存する前 記変換データを読み出す読出命令群とを含むことを特徴とする。
発明の効果
[0016] 上記の構成によると、キャッシュメモリ部のライン記憶領域には、 1個の変換データ が含まれるので、入力メッセージを変化させても暗号又は復号処理の処理時間が一 定となるため、処理時間を観測するタイミング攻撃に対する耐性は向上する。
ここで、前記変換表は、前記部分データが有する値に依存する位置において、前 記変換データを含み、前記演算命令群は、取得した部分データに演算を施すことに より、対応する前記変換データの前記変換表における位置を算出するとしてもよい。 また、前記所定長は、前記変換データの長さの整数 w倍であり、前記ライン表領域は 、前記所定位置において、前記変換データを含み、その他の全ての位置において、 前記変換に無関係のデータを含み、前記演算命令群は、整数 wによる乗算を用いて 、対応する前記変換データの前記変換表における位置を算出するとしてもよい。また 、前記所定位置は、前記ライン表領域の先頭位置であり、前記演算命令群は、取得 した部分データに整数 wを乗ずることにより、対応する前記変換データの前記変換表 における位置を算出するとしてもよい。
[0017] これらの構成によると、簡単な演算により、部分データに対応する変換データの位 置を特定することができる。
ここで、前記ライン表領域は、前記所定位置において前記変換データを含み、さら に、他の所定位置において、他の部分データに対応する他の変換データを含み、そ の他の全ての位置において、前記変換に無関係のデータを含むとしてもよい。また、 前記所定長は、前記変換データの長さの整数 w倍であり、前記所定位置は、前記ラ イン表領域の先頭位置であり、前記他の所定位置は、前記ライン表領域を 2等分した 後半領域の先頭位置であり、前記演算命令群は、取得した部分データに整数 w/2 を乗ずることにより、対応する前記変換データの前記変換表における位置を算出す るとしてもよい。また、前記所定長は、前記変換データの長さの整数 w倍であり、前記 所定位置は、前記ライン表領域の先頭力 整数 X番目の位置であり、前記他の所定 位置は、前記ライン表領域を 2等分した後半領域の先頭から整数 X番目の位置であり 、前記演算命令群は、取得した部分データに整数 wZ2を乗じ、さらに整数 Xを加算 することにより、対応する前記変換データの前記変換表における位置を算出するとし てもよい。
これらの構成によると、キャッシュメモリ部のライン記憶領域には、 1個以上の変換デ ータが含まれるので、処理時間を観測するタイミング攻撃に対する耐性を一定の程 度に保ちつつ、キャッシュメモリ部の容量をより小さくすることができる。
ここで、平文又は暗号文に係る部分データを対応する変換データに変換するプロ セスを経て、平文又は暗号文を喑号ィ匕又は復号するコンピュータシステムであって、 部分データに対応する変換データを含む変換表と、前記プロセスにおいて、前記変 換表を用いて部分データに対応する変換データを取得する複数の命令を含むコン ピュータプログラムとを記憶してレ、る主メモリ部と、所定長のライン記憶領域を含むキ ャッシュメモリ部と、前記主メモリ部に記憶されている前記コンピュータプログラムから 1個ずつ命令を読み出し、解読し、その解読結果に応じて動作する実行部とを備え、 前記実行部は、前記変換表に含まれる変換データを取得する際に、最初に、前記キ ャッシュメモリ部の前記ライン記憶領域から当該変換データの取得を試み、前記ライ ン記憶領域に当該変換データが存在しない場合に、前記主メモリ部から当該変換デ ータを取得し、取得した変換データを含む前記所定長の包含データを前記ライン記 憶領域に書き込み、前記変換表は、前記所定長のライン表領域を有し、前記ライン 表領域の所定位置において、部分データに対応する 1個の変換データを含み、前記 コンピュータプログラムは、部分データを取得する取得命令群と、取得した部分デー タを用いて、対応する前記変換データの前記変換表における位置を算出する演算 命令群と、前記変換表から、算出された前記位置に存する前記変換データを読み出 す読出命令群とを含み、前記所定位置は、前記部分データに、所定演算を施して得 られる位置であり、前記演算命令群は、前記部分データに、前記所定演算を施して、 対応する前記変換データの前記変換表における位置を算出するとしてもよい。また、 前記所定演算は、 mod zにおける前記部分データと奇数との乗算であり、 zは、部分 データが取り得る値の種類の数であるとしてもよい。
これらの構成によると、変換表において変換データがランダムに配置されるので、 所定演算が漏洩しなければ、攻撃に対する耐性を保つことができる。
ここで、平文又は暗号文に係る部分データを対応する変換データに変換するプロ セスを経て、平文又は暗号文を喑号ィ匕又は復号するコンピュータシステムであって、 部分データに対応する変換データを含む第 1変換表と、部分データに対応する変換 データを含む第 2変換表と、前記プロセスにおいて、前記第 1変換表及び前記第 2変 換表を用いて部分データに対応する変換データを取得する複数の命令を含むコン ピュータプログラムとを記憶してレ、る主メモリ部と、所定長のライン記憶領域を含むキ ャッシュメモリ部と、前記主メモリ部に記憶されている前記コンピュータプログラムから 1個ずつ命令を読み出し、解読し、その解読結果に応じて動作する実行部とを備え、 前記実行部は、前記第 1変換表及び前記第 2変換表に含まれる変換データを取得 する際に、最初に、前記キャッシュメモリ部の前記ライン記憶領域力 当該変換デー タの取得を試み、前記ライン記憶領域に当該変換データが存在しない場合に、前記 主メモリ部から当該変換データを取得し、取得した変換データを含む前記所定長の 包含データを前記ライン記憶領域に書き込み、前記第 1変換表及び前記第 2変換表 は、それぞれ、前記所定長のライン表領域を有し、各ライン表領域の所定位置にお いて、部分データに対応する 1個の変換データを含み、前記コンピュータプログラム は、部分データを取得する取得命令群と、取得した部分データを用いて、対応する 前記変換データの前記変換表における位置を算出する演算命令群と、前記変換表 から、算出された前記位置に存する前記変換データを読み出す読出命令群とを含み 、前記第 1変換表における前記所定位置は、前記部分データに、第 1演算を施して 得られる位置であり、前記第 2変換表における前記所定位置は、前記部分データに 、第 2演算を施して得られる位置であり、前記演算命令群は、変換の都度、前記第 1 変換表及び前記第 2変換表のいずれを使用するかを決定する決定命令と、前記部 分データに、決定された変換表に対応する前記第 1演算又は前記第 2演算を施して 、前記変換データの決定した前記変換表における位置を算出する算出命令を含むと してもよレ、。また、前記第 1演算は、 mod zにおける前記部分データと第 1の奇数と の乗算であり、前記第 2演算は、 mod zにおける前記部分データと第 2の奇数との乗 算であり、 zは、部分データが取り得る値の種類の数であり、前記決定命令は、乱数を 発生させ、発生させた乱数により、いずれの変換表を用いるかを決定するとしてもよ レ、。
[0020] これらの構成によると、変換の都度用いられる変換表が代わるので、攻撃に対する 耐性を保つことができる。
図面の簡単な説明
[0021] [図 1]本発明に係る第 1の実施の形態としてのコンテンツ配信システム 10の構成を示 す構成図である。
[図 2]コンテンツサーバ装置 100の構成を示すブロック図である。
[図 3]コンテンツ暗号プログラム 132の内容を説明するフローチャートである。
[図 4]AES喑号プログラム 133の構成を示す構成図である。
[図 5]標準 Sボックス 380のデータ構造を示す構造図である。
[図 6]変形 Sボックス 511のデータ構造を示す構造図である。
[図 7]喑号メインモジュール 501の内容を説明するフローチャートである。
[図 8]Round処理モジュール 503の内容を説明するフローチャートである。
[図 9]SubBytes処理モジュール 505の内容を説明するフローチャートである。
[図 10]FinalRound処理モジュール 504の内容を説明するフローチャートである。
[図 11]マイクロプロセッサ 101の構成を示すブロック図である。
[図 12]データ部 175のキャッシュライン部 181〜187に変形 Sボックス 511の内容が 格納された場合における一例を示す。
[図 13]マイクロプロセッサ 101の動作を示すフローチャートである。
[図 14]AES暗号プログラム 133による暗号化の動作を示すデータプロセスチャートで ある。 [図 15]各 Round処理又は FinalRound処理の動作における AddRoundKey処理及び
SubBytes処理の詳細の動作を示すデータプロセスチャートである。
[図 16]パーソナルコンピュータ 200の構成を示すブロック図である。
[図 17]コンテンツ復号プログラム 232及び再生プログラム 233の内容を説明するフロ 一チャートである。
[図 18]AES復号プログラム 234の内容を説明するフローチャートである。
園 19]標準逆変換 Sボックス 800のデータ構造を示す構造図である。
園 20]逆変換変形 Sボックス 611のデータ構造を示す構造図である。
[図 21]復号メインモジュール 601の内容を説明するフローチャートである。
[図 22]InvRound処理モジュール 603の内容を説明するフローチャートである。
[図 23]InvSubBytes処理モジュール 605の内容を説明するフローチャートである。
[図 24]InvFinalRound処理モジュール 604の内容を説明するフローチャートである。 園 25]データ部の各キャッシュライン部に、逆変換変形 Sボックス 61 1の内容が格納さ れた場合における一例を示す。
[図 26]AES復号プログラム 234による復号の動作を示すデータプロセスチャートであ る。
[図 27]InvSubBytes処理及び AddRoundKey処理の詳細の動作を示すデータプロセ スチャートである。
園 28]変形 Sボックス 911のデータ構造を示す構造図である。
[図 29]SubBytes処理モジュール 505aによる SubBytes処理における 1個の左シフト処 理 902及び 1の参照処理 903の動作を示すデータプロセスチャートである。
[図 30]データ部 175のキャッシュライン部 181、 182、 · · ·に変形 Sボックス 911の内 容が格納された場合における一例を示す。
園 31]変形 Sボックス 1011のデータ構造を示す構造図である。
[図 32]SubBytes処理モジュール 505bによる SubBytes処理において、 1個の左シフト 処理 1002、 1個の加算処理 1003及び 1の参照処理 1004の動作を示すデータプロ セスチャートである。
[図 33]データ部 175のキャッシュライン部 181、 182、 · · ·に変形 Sボックス 1011の内 容が格納された場合における一例を示す。
園 34]変形 Sボックス 1121のデータ構造を示す構造図である。
[図 35]整数である 256個の入力値 A(0、 1、 2、 · · ·、 255)と、計算結果 A X 177 mo d 256との対応を示す対応表である。
[図 36]SubBytes処理モジュール 505cによる SubBytes処理において、 1個の乗算処理
1102及び 1個の参照処理 1103の動作を示すデータプロセスチャートである。
[図 37]データ部 175のキャッシュライン部 181、 182、 · · ·に変形 Sボックス 1121の内 容が格納された場合における一例を示す。
園 38]変形 Sボックス 1221のデータ構造を示す構造図である。
[図 39]SubBytes処理モジュール 505dによる SubBytes処理にぉレ、て、 1個の乗算処理 1202、 1個のシフト処理 1203及び 1個の参照処理 1204の動作を示すデータプロセ スチャートである。
[図 40]データ部 175のキャッシュライン部 181、 182、 · · ·に変形 Sボックス 1221の内 容が格納された場合における一例を示す。
園 41]変形 Sボックス 1311のデータ構造を示す構造図である。
[図 42]SubBytes処理モジュール 505eによる SubBytes処理において、 1個の乗算処理 1302、 1個のシフ卜処理 1303、 1個のカロ算処理 1304及び 1個の参照処理 1305の 動作を示すデータプロセスチャートである。
[図 43]データ部 175のキャッシュライン部 181、 182、 · · ·に変形 Sボックス 1221の内 容が格納された場合における一例を示す。
園 44]変形 Sボックス 1421のデータ構造を示す構造図である。
園 45]変形 Sボックス 1441のデータ構造を示す構造図である。
[図 46]整数である 256個の入力値 B (0、 1、 2、 · · ·、 255)と、その計算結果 B X 77 mod 256との対応を示す対応表である。
[図 47]SubBytes処理モジュール 505fによる SubBytes処理において、 1個の乱数生成 処理 1402と、 1個の舌 L数半 IJ断処理 1403と、「1個の mod 256における 177との乗 算処理 1406及び 1個の変形 Sボックス 1421の参照処理 1407」と、「1個の mod 25 6における 77との乗算処理 1408及び 1個の変形 Sボックス 1441の参照処理 1409」 とからなる組 1401の動作を示すデータプロセスチャートである。
[図 48]データ部 175のキャッシュライン部 181、 182、 · · ·に変形 Sボックス 1421の内 容が格納された場合における一例を示す。
[図 49]データ部 175のキャッシュライン部 181、 182、 · · ·に変形 Sボックス 1441の内 容が格納された場合における一例を示す。
[図 50]SubBytes処理モジュール 1501の内容を説明するフローチャートである。 符号の説明
10 コンテンツ酉 S信システム
30a 配信サーバ装置
30b
30c
40 記録媒体
100 コンテンツサーバ装置
101
102 部
103 メモリ部
104 入力制御部
105 表示制御部
106 通信部
107 キーボード
108 モニタ
109
200 パーソナルコンピュータ
200a デジタル放送受信装置
200b BD再生装置
201
202
203 メモリ咅 204 入力制御部
205 表示制御部
206 通信部
207 キーボード
208 モニタ
発明を実施するための最良の形態
[0023] 1.コンテンツ配信システム 10
本発明に係る 1個の実施の形態としてのコンテンツ配信システム 10について説明 する。
1. 1 コンテンツ配信システム 10の構成
コンテンツ配信システム 10は、図 1に示すように、コンテンツサーバ装置 100、配信 サーバ装置 30a、放送装置 30b、 BD製造装置 30c、パーソナルコンピュータ 200、 デジタル放送受信装置 200a及び BD再生装置 200bから構成されている。
[0024] コンテンツサーバ装置 100は、映像データ及び音データから構成される映画のコン テンッを記憶しており、配信サーバ装置 30aからの要求に応じて、記憶しているコン テンッを喑号化して暗号化コンテンツを生成し、生成した喑号ィ匕コンテンツを専用回 線 21を介して接続されている配信サーバ装置 30aへ送信する。配信サーバ装置 30 aは、暗号化コンテンツを受信し、インターネット 20を介して接続されているパーソナ ルコンピュータ 200へ暗号化コンテンツを送信する。パーソナルコンピュータ 200は、 暗号化コンテンツを受信し、受信した暗号化コンテンツを復号して復号コンテンツを 生成し、生成した復号コンテンツを再生して映像及び音を出力する。
[0025] また、コンテンツサーバ装置 100は、上記と同様に、放送装置 30bからの要求に応 じて、暗号化コンテンツを生成し、生成した喑号ィ匕コンテンツを専用回線 22を介して 接続されている放送装置 30bへ送信する。放送装置 30bは、暗号化コンテンツを受 信し、受信した暗号化コンテンツを放送波に乗せて放送し、デジタル放送受信装置 2 00aは、放送波を受信し、受信した放送波から前記喑号ィ匕コンテンツを抽出し、抽出 した暗号化コンテンツを復号して復号コンテンツを生成し、生成した復号コンテンツを 再生して映像及び音を出力する。 [0026] さらに、コンテンツサーバ装置 100は、上記と同様に、 BD製造装置 30cからの要求 に応じて、喑号ィ匕コンテンツを生成し、生成した喑号ィ匕コンテンツを専用回線 23を介 して接続されている BD製造装置 30cへ送信する。 BD製造装置 30cは、暗号化コン テンッを受信し、受信した喑号ィ匕コンテンツを記録媒体 40に書き込む。暗号化コンテ ンッが書き込まれた記録媒体 40は、販売されて利用者により購入される。利用者に より、記録媒体 40が装着された BD再生装置 200bは、記録媒体 40から前記喑号ィ匕 コンテンツを読み出し、読み出した暗号化コンテンツを復号して復号コンテンツを生 成し、生成した復号コンテンツを再生して映像及び音を出力する。
[0027] 1. 2 コンテンツサーバ装置 100の構成
コンテンツサーバ装置 100は、図 2に示すように、マイクロプロセッサ 101、ハードデ イスク部 102、メモリ部 103、入力制御部 104、表示制御部 105、通信部 106及びシ ステムバス 109など力も構成されるコンピュータシステムである。マイクロプロセッサ 10 1、ハードディスク部 102、メモリ部 103、入力制御部 104、表示制御部 105及び通信 部 106は、システムバス 109を介して相互に接続されている。また、入力制御部 104 及び表示制御部 105は、それぞれ、キーボード 107及びモニタ 108に接続されてい る。さらに、通信部 106は、専用回線 21、 22及び 23を介して、それぞれ、配信サー バ装置 30a、放送装置 30b及び BD製造装置 30cに接続されてレ、る。
[0028] ハードディスク部 102及びメモリ部 103には、様々なコンピュータプログラム及びそ の他のデータが記憶されており、マイクロプロセッサ 101が、各コンピュータプログラム に従って動作することにより、コンテンツサーバ装置 100は、その一部の機能を達成 する。
(1)ハードディスク部 102
ハードディスク部 102は、コンピュータプログラム及びデータを長期に渡って格納す るための記憶ユニットである。ハードディスク部 102は、図 2に示すように、コンテンツ 1 20、コンテンツ 121、コンテンツ 122、 · · ·、鍵 123、鍵 124、鍵 125、 · · ·、コンテンツ 配信プログラム 141、コンテンツ喑号プログラム 142、 AES喑号プログラム 143、送信 プログラム 144、図示してレヽなレ、その他のコンピュータプログラム及び図示してレヽなレヽ その他のデータを記憶している。また、暗号化コンテンツ 126、暗号化コンテンツ 127 、暗号化コンテンツ 128、 · · ·を記憶するための領域を備えている。
[0029] コンテンツ 120、コンテンツ 121、コンテンツ 122、 · · ·は、それぞれ、鍵 123、鍵 12 4、鍵 125、 · · ·、に対応しており、また、暗号化コンテンツ 126、暗号化コンテンツ 12 7、暗号化コンテンツ 128、 · · ·に対応している。
コンテンツ 120、コンテンツ 121、コンテンツ 122、 · · ·は、それぞれ、映像データ及 び音データが高効率に圧縮符号化された圧縮データである。
[0030] 鍵 123、鍵 124、鍵 125、…は、それぞれ、コンテンツ 120、コンテンツ 121、コン テンッ 122、 …に、暗号化アルゴリズムを施して、暗号化コンテンツ 126、喑号化コ ンテンッ 127、暗号化コンテンツ 128、 · · ·を生成する際に使用される喑号鍵であり、 それぞれ、 128ビット長のデータである。ここで、前記暗号化アルゴリズムは、 AES ( Advanced Encryption Standard)に づく ので、ある。
[0031] 暗号化コンテンツ 126、暗号化コンテンツ 127、暗号化コンテンツ 128、…は、そ れぞれ、コンテンツ 120、コンテンツ 121、コンテンツ 122、 …に、暗号化ァルゴリズ ム AESが施されて生成された暗号化データである。
コンテンツ配信プログラム 141、コンテンツ暗号プログラム 142、 AES暗号プロダラ ム 143及び送信プログラム 144は、それぞれ、マイクロプロセッサ 101の指示により、 コンテンツ配信プログラム 131、コンテンツ暗号プログラム 132、 AES暗号プログラム 133及び送信プログラム 134として、メモリ部 103にローデイングされる。これらのコン ピュータプログラムについては、後述する。
[0032] (2)メモリ部 103
メモリ部 103は、実行対象となるコンピュータプログラム及びデータを一時的に蓄え る記憶ユニットであり、図 2に示すように、コンテンツ配信プログラム 131、コンテンツ 喑号プログラム 132、 AES喑号プログラム 133、送信プログラム 134、図示していな いその他のプログラム及び図示していないその他のデータを記憶するための領域を 備えている。
[0033] 上記の各プログラムは、それぞれ、機械語形式の複数の命令コードを組み合わせ て構成されるコンピュータプログラムである。前記機械語形式は、マイクロプロセッサ 1 01により解読され実行される形式である。 以下において、各コンピュータプログラムの内容を説明する力 S、各コンピュータプロ グラムの内容の理解を容易にするために、機械語形式の命令コードを用いた表現で はなぐ通常、人が話したり書いたりする場合に用いる言語により又はフローチャート により各コンピュータプログラムの内容を表現し、これにより、各コンピュータプロダラ ムを説明する。
[0034] (a)コンテンツ配信プログラム 131
コンテンツ配信プログラム 131は、複数の命令コードを含んで構成されている。 これらの命令コード群は、コンテンツの配信先の装置から、例えば、配信サーバ装 置 30aから、コンテンツ、例えば、コンテンツ 120の指定及びコンテンツの配信先の装 置の指定を受け取り、受け取った指定により示されるコンテンツを指定して、コンテン ッ喑号プログラム 132を呼び出し、次に、コンテンツ喑号プログラム 132により生成さ れた暗号化コンテンツを、例えば、暗号化コンテンツ 126としてハードディスク部 102 へ書き込み、受け取った指定による配信先の装置と、生成されノ、ードディスク部 102 に書き込まれた喑号ィ匕コンテンツとを指定して、送信プログラム 134を呼び出すことを 示している。
[0035] こうして、コンテンツ配信プログラム 131に従ってマイクロプロセッサ 101が動作する ことにより、受け取った指定により示される配信先の装置へ、生成された暗号化コンテ ンッが送信される。
(b)コンテンツ暗号プログラム 132
コンテンツ日音号プログラム 132ίま、図 3に示すように、命令コード群 Sl l l、 S112、 S 113、 S114、 S115及び S116を含んで構成されており、これらの命令コード群は、コ ンテンッ喑号プログラム 132内において、この順序で並べられている。各命令コード 群は、 1個又は複数個の命令コードを含んでいる。
[0036] 命令コード群 S111は、指定を受け付けたコンテンツ内におけるデータの位置をビ ットにより示す読出しポイントに、初期値として値「一 128」を代入し、指定を受け付け たコンテンツに対応する鍵をハードディスク部 102から読み出すことを示す複数の命 令コードを含む。ここで、値「_ 128」が代入された読出しポイントは、前記コンテンツ 外の位置を示しているが、読出しポイントに初期値として値「一 128」を代入するのは 、後述する命令コード群 SI 12の最初の実行において、読出しポイントが、前記コン テンッの先頭の位置を示すようにするためである。後述する命令コード群 S 112の最 初の実行において、前記読出しポイントに 128ビットが加算され、読出しポイントは、 値「0」を有することになり、この読出しポイントは、前記コンテンツの先頭の位置を示し ている。
[0037] 命令コード群 S112は、前記読出しポイントに 128ビットをカ卩算し、次に、前記コンテ ンッにおいて、加算された読出しポイントにより示される位置から 1ブロック分のデータ の読出しを試みることを示す複数の命令コードと、読出しポイントにより示される位置 が前記コンテンツ内であるならば、当該位置から 1ブロック分のデータを読み出し、読 出しポイントにより示される位置が前記コンテンツの外を示すならば、ブロックの読み 出しが終了したことを示す終了コードを出力することを示す複数の命令コードとを含 む。ここで、 1ブロックは、 128ビット長のデータである。
[0038] 命令コード群 S113は、命令コード群 S112から終了コードが出力された場合には、 コンテンツ暗号プログラム 132による処理を終了し、終了コードが出力されていない 場合には、次の命令コード群 S 114に制御を移すことを示す複数の命令コードを含 む。
命令コード群 S114は、読み出された前記鍵及び読み出された前記 1ブロックを伴 つて、 AES暗号プログラム 133を呼び出すことを示す複数の命令コードを含む。前記 1ブロックを伴って、 AES暗号プログラム 133が呼び出されることにより、前記ブロック に AESによる暗号化が施されて暗号化ブロックが生成される。
[0039] AES方式では、入力メッセージ(平文)と出力メッセージ(暗号文)がともに 128ビッ トであり、入力する暗号化鍵、復号化鍵は、 128ビット、 192ビット、 256ビットから選択 出来るようになつている。本実施の形態では、喑号ィ匕鍵及び復号ィ匕鍵は、 128ビット としている。
命令コード群 S115は、 AES喑号プログラム 133により生成された 1個の暗号化ブ ロックを、ハードディスク部 102に、例えば暗号化コンテンツ 126の一部として書き込 むことを示す複数の命令コードを含む。
[0040] 命令コード群 S116は、次に、制御を命令コード群 S112へ移すことを示す命令コ ードを含む。
(c) AES暗号プログラム 133
AES暗号プログラム 133は、 AESに基づいて、 128ビット長の平文ブロックを暗号 化して 128ビット長の暗号文ブロックを生成する喑号アルゴリズムであり、図 4に示す ように、喑号メインモジュール 501、 AddRoundKey処理モジュール 502、 Round処理 モジユーノレ 503、 FinalRound処理モジュール 504、 SubBytes処理モジュール 505、 ShiftRows処理モジュール 506、 MixColumns処理モジュール 507、 KeySchedule処 理モジュール 508及び変形 Sボックス 511から構成されている。
[0041] 各モジュールは、機械語形式の複数の命令コードを組み合わせて構成されるコン ピュータプログラムである。前記機械語形式は、マイクロプロセッサ 101により解読さ れ実行される形式である。
(c_ l)標準 Sボックス 380
ここでは、 AESの暗号化において定義されている 8ビット入力、 8ビット出力を行う S ボックスの参照処理において一般的に用いられるテーブルデータ配列である標準 S ボックス 380について、図 5に示す配列表現 381及び配列表現 382を用いて説明す る。
[0042] なお、 AESでは、標準 Sボックスという用語は一般的に使用されていなレ、が、本実 施の形態において用いられる変形 Sボックス 511と区別するために、このような表現を 採用している。
図 5に示す配列表現 381及び配列表現 382は、標準 Sボックス 380を表現するもの であって、配列表現 381は、標準 Sボックス 380に含まれる複数の配列要素をそれぞ れ配列番号 (サフィックス)により区別して示しており、配列表現 382は、標準 Sボック ス 380に含まれる複数の配列要素それぞれの具体的な値を示している。
[0043] 配列表現 381は、表現上の便宜のために、 16行 X 16列のマトリックス状に配置さ れた複数の配列要素を含み、配列表現 382は、表現上の便宜のために、 16行 X 16 列のマトリックス状に配置された複数の配列要素の具体的な値を含む。配列表現 38 1において、マトリックスのある位置に配置された配列要素は、配列表現 382におい て、マトリックスの同じ位置に配置された具体的な値に対応している。 [0044] 標準 Sボックス 380は、 256個の酉己歹 IJ要素 391、 392、 393、 ···、 394、 ···、 395、 396、 397、 ···、 398を含んでレヽる。各酉己歹 IJ要素は、 8ビットのデータであり、「S[xx] 」のように表現されている。ここで、「S」は、配列要素を示す配列要素名であり、「S」に 続いて [ ]により囲まれた数値 XXが、当該配列要素を識別するための配列番号であ る。図 5の配列表現 381の各配列要素において、各配列番号は、 16進数により表現 されている。
[0045] 具体的には、 256個の配列要素 391「S[00]」、 392「S[01]」、 393「S[02]」、 ··· 、 394「S[0f]」、 ···、 395「S[fO]」、 396「S[fl]」、 397「S[f2]」、 ···、 398「S[ff] 」は、それぞれ、具体値 401「63」、具体値 402「7c」、具体値 403「77」、 ···、具体 値 404「76」、 ···、具体値 405「8c」、具体値 406「al」、具体値 407「89」、 ···、具 体値 408「16」である。これらの具体値は、 16進数により表現されている。
[0046] (c _ 2)変形 Sボックス 511
変形 Sボックス 511につレ、て説明する。
変形 Sボックス 511は、図 6に示すように、 2048個の酉己歹 IJ要素 431、 441、 442、 44 3、 444、 445、 446、 447、 432、 ···、 433、 ···、 434、 ···、 435、 ···、 436、 ···、 437、 '··、438、 ···から構成されている。
[0047] 変形 Sボックス 511を構成する各配列要素は、図 6においては、表現の便宜上、 25 6行 X 8列のマトリックス状に配置されている。
各配列要素は、 8ビットのデータである。従って、 1行 X 8列分の配列要素の長さは 、 64ビット長である。
第 1歹 IJの 256個の酉己歹 IJ要素 431、 432、 433、 434、 · · ·、 435、 436、 437、 438は 、それぞれ、値 S [00」、値 S [01]、値 S [02]、値 S [03]、 ···、値 S[fcコ、値 S[fdコ、 値 S [fe]、値 S [ff]を有する。ここで、値 S [00]、値 S [01 ]、 · · ·、値 S [f e]、値 S [f f ] は、上述の標準 Sボックス 380に含まれるものと同じである。
[0048] 第 2列の 256個の配列要素は、それぞれ、値「0xff」を有する。ここで、「0x」は、こ れに続く数字が 16進数による表現であることを示している。
第 3列〜第 8列に含まれる各配列要素も、それぞれ、値「0xff」を有する。 このように、変形 Sボックス 511に含まれる複数の配列要素力 256行 X 8歹 IJのマトリ ックス状に配置されているとみなした場合に、変形 Sボックス 511において、第 1列の 256個の各配列要素に、標準 Sボックス 380に含まれる各配列要素が配され、第 2〜 第 8列の各配列要素に値「0xff」が配されている。
[0049] こうして、変形 Sボックス 511では、 8個の連続して配置される配列要素について、そ の先頭の配列要素は、標準 Sボックス 380に含まれる配列要素と同じ値を有し、その 他の配列要素は、意味のなレ、値「0xff」を有してレ、る。
(c _ 3)喑号メインモジュール 501
B音号メインモジユーノレ 50 I fま、図 7に示すように、命令コード群 S121、 S122、 S12 3、 S124、 S125及び S126を含んで構成されており、これらの命令コード群は、喑号 メインモジュール 501内において、この順序で並べられている。各命令コード群は、 1 個又は複数個の命令コードを含んでレ、る。
[0050] 命令コード群 S121は、入力された平文ブロックと、暗号化鍵から生成された拡大鍵 との演算である AddRoundKey処理を行う AddRoundKey処理モジュール 502を呼び 出すことを示す複数の命令コードを含む。
命令コード群 S122は、カウンタを 0に初期化することを示す複数の命令コードを含 む。このカウンタは、暗号メインモジュール 501内において、繰返しを制御するための ものである。
[0051] 命令コード群 S123は、後述する Round処理を行う Round処理モジュール 503を呼 び出すことを示す複数の命令コードを含む。
命令コード群 S 124は、前記カウンタに「 1」を加算することを示す複数の命令コード を含む。
命令コード群 S125は、前記カウンタが所定の繰返し回数「Nr_ l」であるか否かを 判定し、繰返し回数「Nr_ l」でない場合には、命令コード群 S 123へ移行し、繰返し 回数「Nr_ l」である場合には、次の命令コード群 S126へ移行することを示す複数 の命令コードを含む。
[0052] ここで、繰返し回数「Nr」は、暗号化鍵及び復号化鍵のビット長に依存し、暗号化鍵 及び復号化鍵のビット長が 128ビットの場合、 Nr= 10であり、ビット長が 192ビットの 場合、 Nr= 12であり、ビット長が 256ビットの場合、 Nr= 14であると定められている。 命令コード群 S 126は、後述する FinalRound処理を行う FinalRound処理モジュール 504を呼び出すことを示す複数の命令コードを含む。
[0053] (c 4) Round処理モジュール 503
Round処理モジユーノレ 503fま、図 8ίこ示すよう (こ、命令コード群 S 131、 S 132、 S I 33及び S 134を含んで構成されており、これらの命令コード群は、 Round処理モジュ ール 503内において、この順序で並べられている。各命令コード群は、 1個又は複数 個の命令コードを含んでレ、る。
[0054] 命令コード群 S 131は、 16回のテーブル参照演算力、ら構成される SubBytes処理を 行う SubBytes処理モジュール 505を呼び出すことを示す複数の命令コードを含む。 命令コード群 S 132は、 ShiftRows処理を行う ShiftRows処理モジュール 506を呼び 出すことを示す複数の命令コードを含む。
命令コード群 S 133は、 MixColumns処理を行う MixColumns処理モジュール 507を 呼び出すことを示す複数の命令コードを含む。
[0055] 命令コード群 S 134は、上述した AddRoundKey処理を行う AddRoundKey処理モジ ユール 502を呼び出すことを示す複数の命令コードを含む。
(c 5) Sub Bytes処理モジュール 505
本実施の形態の SubBytes処理では、 128ビットのブロックデータを受け取り、受け取 つた 128ビットのブロックデータを 16個の 8ビットの部分ブロックデータに分け(8ビット X 16 = 128ビット)、各部分ブロックデータを 3ビットだけ左へシフトする。こうして、 16 個の部分ブロックデータのそれぞれについて、 11ビットのデータが生成される。次に 、各 11ビットのデータに、変形 Sボックスの参照処理を施して、 8ビットデータを出力す る。
[0056] このように、 16個の部分ブロックデータについて、左シフトと変形 Sボックスの参照処 理とが施される。この結果、 16個の 8ビットデータが生成される。生成された 16個の 8 ビットデータが連結されて 128ビットのブロックデータが生成され出力される。
上記のように、各部分ブロックデータを 3ビットだけ左へシフトするのは、次の理由に よる。
[0057] 3ビットだけ左へシフトすることにより、各部分ブロックデータが 8倍される。変形 Sボ ックス 511においては、連続して配置されている 8個の配列要素のうち、先頭の 1個に ついては、有効な配列要素 S [XX]が配置されているので、各部分ブロックデータを 8 倍して得られたデータをアドレスとして、変形 Sボックス 511を参照することにより、有 効な配列要素 S [XX]のみが得られるのである。
[0058] なお、 SubBytes処理モジュール 505は、上述した理由により、 3ビットの左シフトの処 理に代えて、 8倍の乗算を行う乗算処理を含むとしてもよレ、。
また、同様にして、別の変形 Sボックスにおいて、連続して配置されている 16個の配 列要素のうち、先頭の 1個については、有効な配列要素 S [XX]が配置されているとす るなら、各部分ブロックデータを 16倍して得られたデータをアドレスとして、前記別の 変形 Sボックスを参照することにより、有効な配列要素 S [XX]のみが得られる。
[0059] また、別の変形 Sボックスにおいて、連続して配置されている 4個の配列要素のうち 、先頭の 1個については、有効な配列要素 S [XX]が配置されているとするなら、各部 分ブロックデータを 4倍して得られたデータをアドレスとして、前記別の変形 Sボックス を参照することにより、有効な配列要素 S [XX]のみが得られる。
SubBytes処理モジユーノレ 505ίま、図 9に示すように、命令コード群 S141、 S142、 S 143、 S144、 S145、 S146、 · · ·、 S147及び S148を含んで構成されており、これら の命令コード群は、 Sub Bytes処理モジュール 505内において、この順序で並べられ ている。各命令コード群は、 1個又は複数個の命令コードを含んでいる。
[0060] 命令コード群 S141は、 16個の部分ブロックデータのうち、第 1の部分ブロックデー タを 3ビットだけ左へシフトし、 11ビットのデータを生成することを示す複数の命令コー ドを含む。
命令コード群 S142は、命令コード群 S141により生成された 11ビットのデータを変 形 Sボックス 511におけるアドレスとして、変形 Sボックス 511を参照し、前記 11ビット のデータをアドレスとする位置に格納されている 8ビットのデータを変形 Sボックス 511 から読み出し、読み出した 8ビットのデータを出力することを示す複数の命令コードを 含む。
[0061] 命令コード群 S143、 S145、 · · ·、 S147は、それぞれ、命令コード群 S141と同様 の複数の命令コードを含む。命令コード群 S143、 S145、 · · ·、 S147においては、 1 6個の部分ブロックデータのうち、それぞれ、第 2の部分ブロックデータ、第 3の部分ブ ロックデータ、 · · ·、第 16の部分ブロックデータをシフトの対象としている点において、 命令コード群 S141と相違している。
[0062] 命令コード群 S 144、 S 146、 · · ·、 S 148は、それぞれ、命令コード群 S 142と同様 の複数の命令コードを含む。命令コード群 S 144、 S 146、 · · ·、 S 148においては、そ れぞれ命令コード群 S 143、 S 145、 · · ·、 S147による出力結果を用いる点において 、命令コード群 S 142と相違している。
(c _ 6) FinalRound処理モジュール 504
FinalRound処理モジユーノレ 504fま、図 10(こ示すよう ίこ、命令コード群 S 151、 S 152 及び S153を含んで構成されており、これらの命令コード群は、 FinalRound処理モジ ユール 504内において、この順序で並べられている。各命令コード群は、 1個又は複 数個の命令コードを含んでレ、る。
[0063] 命令コード群 S 151は、 SubBytes処理モジュール 505を呼び出すことを示す複数の 命令コードを含む。
命令コード群 S 152は、 ShiftRows処理を行う ShiftRows処理モジュール 506を呼び 出すことを示す複数の命令コードを含む。
命令コード群 S 153は、 AddRoundKey処理を行う AddRoundKey処理モジュール 5 02を呼び出すことを示す複数の命令コードを含む。
[0064] (c— 7)その他
AddRoundKey処理モジュール 502、 ShiftRows処理モジュール 506、 MixColumns 処理モジュール 507及び KeySchedule処理モジュール 508は、それぞれ、 AESに規 定されている AddRoundKey処理、 ShiftRows処理、 MixColumns処理及び
KeySchedule処理を行う。これらの処理については、 AESに規定されている通りであ るので、説明を省略する。
[0065] (d)送信プログラム 134
送信プログラム 134は、複数の命令コードが並べられて構成されており、呼出し元 のプログラムから、データの指定及び配信先の装置の指定を受け取り、通信部 106 を制御して、指示されたデータを指定された配信先の装置へ送信することを示す複 数の命令コードを含む。 マイクロプロセッサ 101は、コンテンツサーバ装置 100の制御、データの計算'加工 を行う中枢部分であり、メモリ部 103に記憶されているコンピュータプログラムに従つ て、演算、制御などを行う。
マイクロプロセッサ 101は、図 11に示すように、演算部 161、キャッシュ部 162及び 図示してレ、なレ、その他のユニットから構成されてレ、る。
(キャッシュ部 162)
キャッシュ部 162は、プログラムの実行時に、演算部 161によるメモリ部 103へのァ クセスにより、そのアクセス時間がプログラムの実行性能に影響することを回避するた めに、設けられたものである。
[0067] キャッシュ部 162は、図 11に示すように、データ部 175及び図示していないその他 のユニットから構成されている。データ部 175は、さらに、 256個のキャッシュライン部
181、 182、 183、 184、 185、 · · ·、 186及び 187力ら構成されてレヽる。各キャッシュ ライン部は、 64ビットのメモリ領域を備えている。
メモリ部 103に記憶されている内容の一部力 データ部 175のいずれかのキヤッシ ユライン咅にコピーされる。
[0068] キャッシュ部 162は、メモリ部 103と同様に、アドレスが与えられると、そのアドレスに 対応するキャッシュライン部に格納されているデータを出力する。
(演算部 161)
演算部 161は、メモリ部 103に記憶されているコンピュータプログラム中の命令コー ドを一つ一つ解釈し、解釈結果に応じて、演算'制御を行う。
[0069] 演算部 161は、次に取り出すべき命令が入っている番地情報を格納するプログラム カウンタ PCを保持する。
コンピュータプログラムを実行する場合、演算部 161は、まず、ハードディスク部 10 2に格納されているコンピュータプログラムをメモリ部 103にコピー(ロード)する。次に 、プログラムカウンタ PCを初期値に設定し、プログラムカウンタ PCの値を基に、コンビ ユータブログラムの中の命令を一つ取得する。そして、その取得した一命令を実行す る。その命令の実行中に、メモリ部 103にロードされたコンピュータプログラムに定義 されている固定値データを参照する場合、演算部 161は、メモリ部 103にアクセスし その固定値データを取得するとともに、キャッシュ部 162にも同じ固定値データを格 納する。次に同じ固定値データを参照する場合は、演算部 161は、メモリ部 103では なぐキャッシュ部 162にアクセスし、その固定値データを取得する。そして、その一 命令を実行し終わったら、プログラムカウンタ PCを一つ進め、再度コンピュータプログ ラムの中の命令を一つ取得し、上記と同様にその一命令を実行する。最終的に、プ ログラムカウンタ PCが終了を示す値となったら、コンピュータプログラムの実行を終了 する。
[0070] このように、演算部 161は、キャッシュ部 162にアクセスし、所望のデータがキヤッシ ュ部 162に存在しない場合には、メモリ部 103から所望のデータを読み出し、読み出 したデータをキャッシュ部 162のデータ部 175のいずれかのキャッシュライン部に書き 込む。このときは、メモリ部 103からキャッシュ部 162へのデータのコピーのために、 多少時間がかかるが、 2度目以降には、演算部 161は、キャッシュ部 162へアクセス するので、高速となる。
(データ部 175の一例)
データ部 175のキャッシュライン部 181〜: 187に、上述した SubBytes処理により、 変形 Sボックス 511の内容が格納された場合における一例を図 12にデータ部 175aと して示す。
[0071] データ部 175aのキャッシュライン部 181a、 182a, 183a, 184a, · · ·、 186a, 187 aには、変形 Sボックス 511の内容がそのまま格納されている。
つまり、キャッシュライン部 181aには、配列要素451「3 [00]」、配列要素461「0 £ f」、配列要素 462「0xff」、配列要素 463「0xff」、配列要素 464「0xff」、配列要素 4 65「0xff」、配列要素 466「0xff」及び配列要素 467「0xff」が格納されている。また、 他のキャッシュライン部においても、その先頭に標準 Sボックス 380の配列要素が格 納され、他の部分には、「0xff」が格納されている。
[0072] 例えば、キャッシュライン部 182a、 183a, 184a, · · ·、 186a, 187aの先頭には、 それぞれ、標準 Sボックス 380の配列要素である配列要素 452「S [01]」、配列要素 4 53「3 [02]」、配列要素454 [03]」、 · · ·、配列要素455「3 [ ]」、配列要素456「 S [fd]」、配列要素 457「S [fe]」及び配列要素 458「S [ff]」が格納されてレ、る。
[0073] このように、データ部 175aの各キャッシュライン部には、わずか 1個の標準 Sボック ス 380の配列要素のみが格納されてレ、る。
1. 3 コンテンツサーバ装置 100の動作
コンテンツサーバ装置 100の動作について説明する。
(1)マイクロプロセッサ 101の動作
マイクロプロセッサ 101の動作について、図 13に示すフローチャートを用いて説明 する。
[0074] 演算部 161は、ハードディスク部 102に格納されているコンピュータプログラムをメ モリ部 103にコピーし、次に取り出すべき命令に関する番地情報を格納するプロダラ ムカウンタ PCを初期値に設定する (ステップ S161)。
次に、演算部 161は、メモリ部 103にロードしたコンピュータプログラムの中から、プ ログラムカウンタ PCの値を基に、一つの命令を取り出す(ステップ S162)。
[0075] その際、演算部 161は、その命令において、コンピュータプログラム内に定義されて レ、る固定データを使用するか否力を判断し (ステップ S163)、固定データを使用する 場合 (ステップ S163で Yes)、使用したい固定データがキャッシュ部 162上にあるとき (ステップ S164で Yes)、キャッシュ部 162にアクセスし、該当する固定データを取得 し (ステップ S165)、次に、取り出した命令を解読し、取得した固定データを用いて、 解読した結果を実行し (ステップ S166)、次に、プログラムカウンタ PCが終了を示し ていたら (ステップ S167で Yes)、処理を終了する。もし、終了を指していない場合( ステップ S167で No)、プログラムカウンタ PCを一つ進め(ステップ S170)、次に、ス テツプ S162に制御を移して処理を繰り返す。
[0076] 固定データを使用しない場合 (ステップ S163で No)、演算部 161は、次に、取り出 した命令を解読し、解読した結果を実行し (ステップ S166)、次に、ステップ S167に 制御を移して処理を繰り返す。
使用したい固定データがキャッシュ部 162上にない場合 (ステップ S164で No)、演 算部 161は、メモリ部 103にアクセスし、該当する固定データを取得し (ステップ S16 8)、取得した固定データをキャッシュ部 162のキャッシュライン部にコピーし (ステップ S169)、次に、取り出した命令を解読し、取得した固定データを用いて、解読した結 果を実行し (ステップ S166)、次に、ステップ S167に制御を移して処理を繰り返す。
[0077] (2) AES喑号プログラム 133による暗号化の動作
AES喑号プログラム 133による暗号化の動作について、図 14に示すデータプロセ スチャートを用いて説明する。ここでは、この図に示すように、 128ビットの入力鍵 K3 01を用レヽて、 128ビッ卜の平文データ PT303力、ら、 128ビッ卜の B音号文データ CT30 8が生成されるものとする。
[0078] AES喑号プログラム 133による暗号化の動作は、この図に示すように、鍵スケジュ 一ノレのステップ 302と、 10段のプロセス 304、 305、 · · ·、 306、 307と力、ら構成される 入力鍵 K301に基づいて、 KeySchedule処理モジユーノレ 508により、 11個の拡大 鍵 SK 、 SK , - - - SK 、 SK 、 SK が生成され (ステップ 302)、生成された拡大鍵
0 1 8 9 10
SK 、 SK 、 ' ' '、 SK 、 SK 、 SK が各段の AddRoundKey処理へ配布される(ステ
0 1 8 9 10
ップ 311、 312、 · · ·、 313、 314、 315)。
[0079] 次に、第 1段のプロセスにおいて(プロセス 304)、 AddRoundKey処理モジュール 5 02により拡大鍵 SK を用いて AddRoundKey処理が行われ (ステップ 321)、
0
SubBytes処理モジュール 505により、 SubBytes処理が行われ(ステップ 322)、
ShiftRows処理モジユーノレ 506により、 ShiftRows処理が行われ(ステップ 323)、
Figure imgf000029_0001
MixColumns処理が行われる(ステップ 324)
[0080] 次に、第 2段のプロセスにおレ、て(プロセス 305)、 AddRoundKey処理モジュール 5 02により拡大鍵 SK を用いて AddRoundKey処理が行われ (ステップ 331)、
1
SubBytes処理モジュール 505により、 SubBytes処理が行われ(ステップ 332)、
ShiftRows処理モジユーノレ 506により、 ShiftRows処理が行われ(ステップ 333)、 MixColumns処理モジュール 507により、 MixColumns処理が行われる(ステップ 334)
[0081] 同様に、第 3段から第 8段までの各段のプロセスにおいて、 AddRoundKey処理、 SubBytes処理、 ShiftRows処理及び MixColumns処理が行われる。
次に、第 9段のプロセスにおいて(プロセス 306)、 AddRoundKey処理モジュール 5 02により拡大鍵 SK を用いて AddRoundKey処理が行われ (ステップ 341)、
8
SubBytes処理モジュール 505により、 SubBytes処理が行われ(ステップ 342)、 ShiftRows処理モジユーノレ 506により、 ShiftRows処理が行われ(ステップ 343)、 MixColumns処理モジュール 507により、 MixColumns処理が行われる(ステップ 344)
[0082] 最後に、第 10段のプロセスにおいて(プロセス 307)、 AddRoundKey処理モジユー ノレ 502により拡大鍵 SK を用いて AddRoundKey処理が行われ (ステップ 351)、
9
SubBytes処理モジュール 505により、 SubBytes処理が行われ(ステップ 352)、 ShiftRows処理モジユーノレ 506により、 ShiftRows処理が行われ(ステップ 353)、 AddRoundKey処理モジュール 502により拡大鍵 SK を用いて AddRoundKey処理が
10
行われる(ステップ 354)。
[0083] こうして、 128ビットの暗号文データ CT308が生成される。
(3)各 Round処理又は FinalRound処理の動作
次に、各 Round処理又は FinalRound処理の動作について、特に、 AddRoundKey 処理及び SubBytes処理の詳細の動作について、図 15に示すデータプロセスチヤ一 トを用いて説明する。ここでは、図 15に示すように、 128ビットの拡大鍵 361を用いて 、 128ビットの入力データ 371から、 128ビットの出力データ 376が生成されるものと する。
[0084] 各 Round処理又は FinalRound処理は、 AddRoundKey処理 372、 SubBytes処理 37 3、 ShiftRows処理 374及び MixColumns処理(又は AddRoundKey処理) 375を含む
AddRoundKey処理 372は、 16個の排他的論理和演算 381、 382、 383、 · · ·、 38 4を含む。また、 SubBytes処理 373は、 16個のシフト処理 385、 386、 387、 · · ·、 38 8と、 16個の変形 Sボックスの参照処理 391、 392、 393、 · · ·、 394とを含む。
[0085] 128ビットの拡大鍵 361は、 16個の 8ビットの部分鍵に分けられ、 16個の部分鍵が 、それぞれ、 AddRoundKey処理 372の 16個の排他的論理禾ロ演算 381、 382、 383、 · · ·、 384へ出力される(ステップ 362、 363、 364、 · · ·、 365)。
128ビットの入力データ 371力、 16個の 8ビットの部分データに分けられ、 16個の 部分データが、それぞれ、 AddRoundKey処理 372の 16個の排他的論理和演算 38 1、 382、 383、 · · ·、 384へ出力される。
[0086] 排他的論理和演算 381は、第 1の部分データ(8ビット)を受け取り、第 1の部分鍵( 8ビット)を受け取り、受け取った第 1の部分データと受け取った第 1の部分鍵とに排 他的論理和演算を施して、 8ビットの第 1の演算データを得、得られた第 1の演算デ ータを SubBytes処理 373のシフト処理 385へ出力する。
シフト処理 385は、 8ビットの第 1の演算データを得、得られた第 1の演算データを、 3ビットだけ左側へシフトして、 11ビットの第 1のシフトデータを得る。ここで、得られた 第 1のシフトデータの上位の 8ビットは、前記演算データと同じデータであり、前記第 1 のシフトデータの下位の 3ビットは、「000」(2進数表現)である。次に、得られた第 1 のシフトデータを SubBytes処理 373の参照処理 391へ出力する。
[0087] 参照処理 391は、第 1のシフトデータを受け取り、受け取った第 1のシフトデータを アドレスとして、変形 Sボックス 511を参照して、 8ビットの第 1の配列要素を取得する。 同様に、排他的論理和演算 382は、第 2の部分データと第 2の部分鍵とに排他的 論理和演算を施して、第 2の演算データを得、シフト処理 386は、第 2の演算データ を、 3ビットだけ左側へシフトして、第 2のシフトデータを得、参照処理 392は、第 2の シフトデータをアドレスとして、変形 Sボックス 511を参照して、第 2の配列要素を取得 する。
[0088] 同様に、排他的論理和演算 383は、第 3の部分データと第 3の部分鍵とに排他的 論理和演算を施して、第 3の演算データを得、シフト処理 387は、第 3の演算データ を、 3ビットだけ左側へシフトして、第 3のシフトデータを得、参照処理 393は、第 3の シフトデータをアドレスとして、変形 Sボックス 511を参照して、第 3の配列要素を取得 する。
[0089] 同様に、第 4から第 15の配列要素が取得される。
さらに、同様に、排他的論理和演算 384は、第 16の部分データと第 16の部分鍵と に排他的論理和演算を施して、第 16の演算データを得、シフト処理 388は、第 16の 演算データを、 3ビットだけ左側へシフトして、第 16のシフトデータを得、参照処理 39 4は、第 16のシフトデータをアドレスとして、変形 Sボックス 511を参照して、第 16の配 列要素を取得する。
[0090] こうして、第 1から第 16の配列要素(16個の配列要素)が取得される。
次に、第 1から第 16の配列要素は、この順序で結合されて 128ビットのデータが生 成される。
次に、生成されたデータに、 ShiftRows処理 374が施され、次に、 MixColumns処理 (又は AddRoundKey処理) 375が施される。こうして、 128ビットの出力データ 376力 S 生成され出力される。
[0091] 1. 4 パーソナルコンピュータ 200の構成
パーソナルコンピュータ 200は、コンテンツサーバ装置 100と同様のコンピュータシ ステムであって、図 16に示すように、マイクロプロセッサ 201、ハードディスク部 202、 メモリ部 203、入力制御部 204、表示制御部 205及び通信部 206などから構成され る。入力制御部 204及び表示制御部 205は、それぞれ、キーボード 207及びモニタ 208に接続されている。また、通信部 206は、インターネット 20に接続されている。
[0092] ハードディスク部 202及びメモリ部 203には、様々なコンピュータプログラムが記憶 されており、マイクロプロセッサ 201が、各コンピュータプログラムに従って動作するこ とにより、パーソナルコンピュータ 200は、その一部の機能を達成する。
なお、デジタル放送受信装置 200a及び BD再生装置 200bは、パーソナルコンビュ ータ 200と同様の構成を有しているので、これらの装置についての説明を省略する。
[0093] (1)ハードディスク部 202
ハードディスク部 202は、図 16に示すように、鍵 222、コンテンツ受信プログラム 24 1、コンテンツ復号プログラム 242、再生プログラム 243及び AES復号プログラム 244 を記憶しており、また喑号ィ匕コンテンツ 221を記憶するための領域を備えている。喑 号ィ匕コンテンツ 221と鍵 222とは、対応してレヽる。
[0094] 暗号化コンテンツ 221及び鍵 222は、それぞれ、コンテンツサーバ装置 100のハー ドディスク部 102に記憶されている喑号ィ匕コンテンツ 126及び鍵 123と同じものである コンテンツ受信プログラム 241、コンテンツ復号プログラム 242、再生プログラム 243 及び AES復号プログラム 244は、それぞれ、マイクロプロセッサ 201の指示により、コ ンテンッ受信プログラム 231、コンテンツ復号プログラム 232、再生プログラム 233及 び AES復号プログラム 234として、メモリ部 203にローデイングされる。これらのコンビ ユータプログラムについては、後述する。
[0095] (2)メモリ部 203
メモリ部 203は、図 16に示すように、コンテンツ受信プログラム 231、コンテンツ復号 プログラム 232、再生プログラム 233及び AES復号プログラム 234を記憶している。ま た、メモリ部 203は、復号コンテンツ領域 236を含む。
これらのプログラムは、それぞれ、機械語形式の複数の命令コードを組み合わせて 構成されるコンピュータプログラムである。前記機械語形式は、マイクロプロセッサ 20 1により解読され実行される形式である。
[0096] 復号コンテンツ領域 236には、暗号化コンテンツが復号されて生成された復号コン テンッが一時的に書き込まれる。
以下において、各コンピュータプログラムの内容を説明する力 S、各コンピュータプロ グラムの内容の理解を容易にするために、機械語形式の命令コードを用いた表現で はなぐ通常、人が話したり書いたりする場合に用いる言語により又はフローチャート により各コンピュータプログラムの内容を表現し、これにより、各コンピュータプロダラ ムを説明する。
[0097] (a)コンテンツ受信プログラム 231
コンテンツ受信プログラム 231は、複数の命令コードを含んで構成されている。 これらの命令コード群は、パーソナルコンピュータ 200の利用者からコンテンツの指 定を受け付けることを示す複数の命令コードと、指定を受け付けた前記コンテンツを 識別するコンテンツ識別子を取得し、取得したコンテンツ識別子を、通信部 206及び インターネット 20を介して、配信サーバ装置 30aへ送信することを示す複数の命令コ ードと、配信サーバ装置 30aから、インターネット 20及び通信部 206を介して、前記コ ンテンッ識別子により識別される暗号ィヒコンテンツを受信することを示す複数の命令 コードと、受信した喑号ィ匕コンテンツをハードディスク部 202へ、例えば喑号ィ匕コンテ ンッ 221として書き込むことを示す複数の命令コードとを含んでいる。
[0098] (b)コンテンツ復号プログラム 232
コンテンツ復号プログラム 232ίま、図 17に示すように、命令コード群 S211、 S212、 S213、 S214、 S215、 S216、 S217及び S218を含んで構成されており、これらの 命令コード群は、コンテンツ復号プログラム 232内において、この順序で並べられて いる。各命令コード群は、 1個又は複数個の命令コードを含んでいる。
[0099] 命令コード群 S211は、パーソナルコンピュータ 200の利用者から、ハードディスク 部 202に記憶されているいずれかの暗号化コンテンツの指定を受け付けることを示 す複数の命令コードを含んでレ、る。
命令コード群 S212は、メモリ部 203に記憶されている再生プログラム 233を呼び出 すことを示す複数の命令コードを含んでいる。命令コード群 S212が実行されることに より、その結果、コンテンツ復号プログラム 232と再生プログラム 233とが並行して実 行される。
[0100] 命令コード群 S213は、指定を受け付けた喑号ィ匕コンテンツ内におけるデータの位 置をビットにより示す読出しポイントに初期値として値「一 128」を代入し、次に、指定 を受け付けた喑号ィ匕コンテンツに対応する鍵をハードディスク部 202から読み出すこ とを示す複数の命令コードを含んでいる。
命令コード群 S214は、前記読出しポイントに 128ビットを加算し、次に、前記暗号 化コンテンツにおいて、加算された読出しポイントにより示される位置から 1ブロック分 のデータの読出しを試みることを示す複数の命令コードと、読出しポイントにより示さ れる位置が前記暗号化コンテンツ内であるならば、当該位置から 1ブロック分のデー タを読み出し、読出しポイントにより示される位置が前記暗号化コンテンツの外を示す ならば、ブロックの読み出しが終了したことを示す終了コードを出力することを示す複 数の命令コードとを含んでいる。ここで、 1ブロックは、 128ビット長のデータである。
[0101] 命令コード群 S215は、命令コード群 S214から終了コードが出力された場合には、 コンテンツ復号プログラム 232による処理を終了し、終了コードが出力されていない 場合には、次の命令コード群 S216に制御を移すことを示す複数の命令コードを含ん でいる。 命令コード群 S216は、読み出された前記鍵及び読み出された前記 1ブロックを伴 つて、 AES復号プログラム 234を呼び出すことを示す複数の命令コードを含んでいる
[0102] 命令コード群 S217は、復号プログラム 234により生成された 1個の復号ブロックを、 メモリ部 203の復号コンテンツ領域 236へ書き込むことを示す複数の命令コードを含 んでいる。
命令コード群 S218は、次に制御を命令コード群 S214へ移すことを示す命令コー ドを含んでいる。
[0103] (c)再生プログラム 233
再生プロク、、ラム 233fま、図 17ίこ示すよう (こ、命令コード群 S218、 S219及び S220 を含んで構成されており、これらの命令コード群は、再生プログラム 233内において、 この順序で並べられている。各命令コード群は、 1個又は複数個の命令コードを含ん でいる。
[0104] 命令コード群 S218は、メモリ部 203が有する復号コンテンツ領域 236から 1個以上 の復号ブロックを読み出すことを示す複数の命令コードを含んでいる。
命令コード群 S219は、読み出した前記復号ブロックから映像データ及び音データ を生成し、生成した映像データ及び音データを映像信号及び音信号に変換して、表 示制御部 205を介して、モニタ 208へ出力することを示す複数の命令コードを含んで いる。
[0105] 命令コード群 S220は、次に制御を命令コード群 S218へ移すことを示す命令コー ドを含んでいる。
(d)AES復号プログラム 234
AES復号プログラム 234は、図 18に示すように、復号メインモジュール 601、
AddRoundKey処理モジュール 602、 InvRound処理モジュール 603、 InvFinalRound 処理モジュール 604、 InvSubBytes処理モジュール 605、 InvShiftRows処理モジユー ノレ 606、 InvMixColumns処理モジュール 607、 KeySchedule処理モジュール 608及 び逆変換変形 Sボックス 611から構成されている。
[0106] 各モジュールは、機械語形式の複数の命令コードを組み合わせて構成されるコン ピュータプログラムである。前記機械語形式は、マイクロプロセッサ 201により解読さ れ実行される形式である。
(d— 1)標準逆変換 Sボックス 800
ここでは、 AESの復号において定義されている 8ビット入力、 8ビット出力を行う逆変 換 Sボックスの参照処理において一般的に用いられるテーブルデータ配列である標 準逆変換 Sボックス 800について、図 19に示す配列表現 801及び配列表現 802を 用いて説明する。
[0107] なお、 AESでは、標準逆変換 Sボックスという用語は一般的に使用されていないが 、本実施の形態において用いられる逆変換変形 Sボックス 611と区別するために、こ のような表現を採用している。
図 19に示す配列表現 801及び配列表現 802は、標準逆変換 Sボックス 800を表現 するものであって、配列表現 801は、標準逆変換 Sボックス 800に含まれる複数の配 列要素をそれぞれ配列番号 (サフィックス)により区別して示しており、配列表現 802 は、標準逆変換 Sボックス 800に含まれる複数の配列要素それぞれの具体的な値を 示している。
[0108] 配列表現 801は、表現上の便宜のために、 16行 X 16列のマトリックス状に配置さ れた複数の配列要素を含み、配列表現 802は、表現上の便宜のために、 16行 X 16 列のマトリックス状に配置された複数の配列要素の具体的な値を含む。配列表現 80 1において、マトリックスのある位置に配置された配列要素は、配列表現 802におい て、マトリックスの同じ位置に配置された具体的な値に対応している。
[0109] 標準逆変換 Sボックス 800は、 256個の配列要素 811、 812、 813、 · · ·、 814、 · · · 、 815、 816、 817、 · · -、 818を含んでレヽる。各酉己歹 IJ要素は、 8ビッ卜のデータであり、 「InvS [XX]」のように表現されている。ここで、「InvS」は、配列要素を示す配列要素 名であり、「InvS」に続いて [ ]により囲まれた数値 XXが、当該配列要素を識別する ための配列番号である。図 19の配列表現 801の各配列要素において、各配列番号 は、 16進数により表現されている。
[0110] 具体的には、 256個の酉己歹要素811「11^3 [00]」、 812「InvS [01]」、 813「InvS
[02]」、 · · ·、 814「InvS [0fコ」、 · · ·、 815「InvS [fO]」、 816「InvS [f 1]」、 817「Inv S[f2]」、 ···、 818「InvS[ff]」は、それぞれ、具体値 821「52」、具体値 822「09」、 具体値 823「6a」、 ···、具体値 824「fb」、 · · ·、具体値 825「17」、具体値 826「2b」 、具体値 827「04」、 ···、具体値 828「7d」である。これらの具体値は、 16進数により 表現されている。
[0111] (d_ 2)逆変換変形 Sボックス 611
逆変換変形 Sボックス 611につレ、て説明する。
逆変換変形 Sボックス 611は、図 20に示すように、 2048個の酉己歹 IJ要素 831、 841、 842、 843、 844、 845、 846、 847、 832、 ···、 833、 ···、 834、 ···、 835、 ···、 8 36、 ···、 837、 ···、 838、 .··から構成されている。
[0112] 逆変換変形 Sボックス 611を構成する各配列要素は、図 20においては、表現の便 宜上、 256行 X 8列のマトリックス状に配置されてレ、る。
第 1歹 IJの 256個の酉己歹 IJ要素 831、 832、 833、 834、 ···、 835、 836、 837、 838は 、それぞれ、値 InvS[00]、値 InvS[01]、値 InvS[02]、値 InvS[03]、…、値 Inv S[fc]、値InvS[fd]、値InvS[fe]、値InvS[ff]を有する。ここで、値 InvS[00]、値 I nvS[01]、 ···、値 InvS[fe]、値 InvS[ff]は、上述の標準逆変換 Sボックス 800に 含まれるものと同じである。
[0113] 第 2列の 256個の配列要素は、それぞれ、値「0xff」を有する。ここで、 「0x」は、こ れに続く数字が 16進数による表現であることを示している。
第 3列〜第 8列に含まれる各配列要素も、それぞれ、値「0xff」を有する。 このように、逆変換変形 Sボックス 611では、 8個の連続して配置される配列要素に ついて、その先頭の配列要素は、標準逆変換 Sボックス 800に含まれる配列要素と 同じ値を有し、その他の配列要素は、意味のない値「0xff」を有している。
[0114] (d_ 3)復号メインモジュール 601
復号メインモジユーノレ 601 fま、図 21に示すように、命令コード群 S231、 S232、 S2 33、 S234、 S235及び S236を含んで構成されており、これらの命令コード群は、復 号メインモジュール 601内において、この順序で並べられている。各命令コード群は 、 1個又は複数個の命令コードを含んでいる。
[0115] 命令コード群 S231は、入力された暗号文ブロックと、暗号化鍵から生成された拡大 鍵との演算である AddRoundKey処理を行う AddRoundKey処理モジュール 602を呼 び出すことを示す複数の命令コードを含む。
命令コード群 S232は、カウンタを 0に初期化することを示す複数の命令コードを含 む。このカウンタは、復号メインモジュール 601内において、繰返しを制御するための ものである。
[0116] 命令コード群 S233は、後述する InvRound処理を行う InvRound処理モジュール 603 を呼び出すことを示す複数の命令コードを含む。
命令コード群 S234は、前記カウンタに「1」を加算することを示す複数の命令コード を含む。
命令コード群 S235は、前記カウンタが所定の繰返し回数「Nr_ l」であるか否かを 判定し、繰返し回数「Nr_ l」でない場合には、命令コード群 S233へ移行し、繰返し 回数「Nr_ l」である場合には、次の命令コード群 S236へ移行することを示す複数 の命令コードを含む。
[0117] ここで、繰返し回数「Nr」は、喑号ィ匕鍵及び復号ィ匕鍵のビット長に依存し、暗号化鍵 及び復号化鍵のビット長が 128ビットの場合、 Nr= 10であり、ビット長が 192ビットの 場合、 Nr= 12であり、ビット長が 256ビットの場合、 Nr= 14であると定められている。 命令コード群 S236は、後述する InvFinalRound処理を行う InvFinalRound処理モジ ユール 604を呼び出すことを示す複数の命令コードを含む。
[0118] (d-4) InvRound処理モジュール 603
InvRound処理モジユーノレ 603ίま、図 22に示すように、命令コード群 S241、 S242、 S243及び S244を含んで構成されており、これらの命令コード群は、 InvRound処理 モジュール 603内において、この順序で並べられている。各命令コード群は、 1個又 は複数個の命令コードを含んでレ、る。
[0119] 命令コード群 S241は、 InvShiftRows処理を行う InvShiftRows処理モジュール 606を 呼び出すことを示す複数の命令コードを含む。
命令コード群 S242は、 16回のテーブル参照演算力、ら構成される InvSubBytes処理 を行う InvSubBytes処理モジュール 605を呼び出すことを示す複数の命令コードを含 む。 [0120] 命令コード群 S243は、上述した AddRoundKey処理を行う AddRoundKey処理モジ ユール 602を呼び出すことを示す複数の命令コードを含む。
命令コード群 S244は、 InvMixColumns処理を行う InvMixColumns処理モジュール 6 07を呼び出すことを示す複数の命令コードを含む。
(d- 5) InvSubBytes処理モジュール 605
本実施の形態の InvSubBytes処理では、 128ビットのブロックデータを受け取り、受 け取った 128ビットのブロックデータを 16個の 8ビットの部分ブロックデータに分け(8 ビット X 16 = 128ビット)、各部分ブロックデータを 3ビットだけ左へシフトする。こうし て、 16個の部分ブロックデータのそれぞれについて、 11ビットのデータが生成される 。次に、各 11ビットのデータに、逆変換変形 Sボックス 611の参照処理を施して、 8ビ ットデータを出力する。
[0121] このように、 16個の部分ブロックデータについて、左シフトと逆変換変形 Sボックス 6 11の参照処理とが施される。この結果、 16個の 8ビットデータが生成される。生成さ れた 16個の 8ビットデータが連結されて 128ビットのブロックデータが生成され出力さ れる。
各部分ブロックデータを 3ビットだけ左へシフトする理由については、上述した通り である。
[0122] SubBytes処理モジュール 505においては、変形 Sボックス 511の参照が行われるの に対して、 InvSubBytes処理モジュール 605においては、逆変換変形 Sボックス 611 の参照が行われる点において、 InvSubBytes処理モジュール 605と SubBytes処理モ ジュール 505とは相違している。
InvSubBytes処理モジユーノレ 605は、図 23に示すように、命令コード群 S251、 S2 52、 S253、 S254、 S255、 S256、 · · ·、 S257及び S258を含んで構成されており、 これらの命令コード群は、 InvSubBytes処理モジュール 605内において、この順序で 並べられている。各命令コード群は、 1個又は複数個の命令コードを含んでいる。
[0123] 命令コード群 S251は、 16個の部分ブロックデータのうち、第 1の部分ブロックデー タを 3ビットだけ左へシフトし、 11ビットのデータを生成することを示す複数の命令コー ドを含む。 命令コード群 S252は、命令コード群 S251により生成された 11ビットのデータを逆 変換変形 Sボックス 611におけるアドレスとして、逆変換変形 Sボックス 611を参照し、 前記 11ビットのデータをアドレスとする位置に格納されている 8ビットのデータを逆変 換変形 Sボックス 611から読み出し、読み出した 8ビットのデータを出力することを示 す複数の命令コードを含む。
[0124] 命令コード群 S253、 S255、 · · ·、 S257は、それぞれ、命令コード群 S251と同様 の複数の命令コードを含む。命令コード群 S253、 S255, · · ·、 S257(こおレヽて fま、 1 6個の部分ブロックデータのうち、それぞれ、第 2の部分ブロックデータ、第 3の部分ブ ロックデータ、 · · ·、第 16の部分ブロックデータをシフトの対象としている点において、 命令コード群 S251と相違している。
[0125] 命令コード群 S254、 S256、 · · ·、 S258は、それぞれ、命令コード群 S252と同様 の複数の命令コードを含む。命令コード群 S254、 S256、 · · ·、 S258におレ、ては、そ れぞれ命令コード群 S253、 S255、 · · ·、 S257による出力結果を用いる点において 、命令コード群 S252と相違している。
(d- 6) lnvFinalRound処理モジュール 604
InvFinalRound処理モジュール 604は、図 24に示すように、命令コード群 S261、 S 262及び S263を含んで構成されており、これらの命令コード群は、 InvFinalRound処 理モジュール 604内において、この順序で並べられている。各命令コード群は、 1個 又は複数個の命令コードを含んでレ、る。
[0126] 命令コード群 S261は、 InvShiftRows処理を行う InvShiftRows処理モジュール 606を 呼び出すことを示す複数の命令コードを含む。
命令コード群 S262は、 InvSubBytes処理を行う InvSubBytes処理モジュール 605を 呼び出すことを示す複数の命令コードを含む。
命令コード群 S263は、 AddRoundKey処理を行う AddRoundKey処理モジュール 6 02を呼び出すことを示す複数の命令コードを含む。
[0127] (d— 7)その他
AddRoundKey処理モジュール 602、 InvShiftRows処理モジュール 606、 InvMixColumns処理モジュール 607及び KeySchedule処理モジュール 608は、それ ぞれ、 AESに規定されている AddRoundKey処理、 InvShiftRows処理、 InvMixColumns処理及び KeySchedule処理を行う。これらの処理については、 AES に規定されている通りであるので、説明を省略する。
[0128] (3)マイクロプロセッサ 201
マイクロプロセッサ 201は、マイクロプロセッサ 101と同様に、演算部、キャッシュ部 及びその他のユニットから構成されている。また、キャッシュ部は、データ部 175及び その他のユニットから構成され、データ部は、 256個のキャッシュライン部から構成さ れ、各キャッシュライン部は、 64ビットのメモリ領域を備えている。
[0129] マイクロプロセッサ 201は、マイクロプロセッサ 101と同様の構成を有しており、演算 部、キャッシュ部及びその他のユニットについては、上述した通りである。
ここでは、データ部の各キャッシュライン部に、上述した InvSubBytes処理により、逆 変換変形 Sボックス 611の内容が格納された場合における一例を図 25にデータ部 1 75bとして示す。
[0130] データ部 175bのキャッシュライン部 181b、 182b, 183b, 184b, · · ·、 186b, 187 bには、逆変換変形 Sボックス 611の内容がそのまま格納されている。
つまり、キャッシュライン部 181bには、配列要素 851「InvS [00]」、配列要素 861「 0 £ 、配列要素862「(^£ 、配列要素863「(^£^、配列要素864「(^£ 、配列要 素 865「0xff」、配列要素 866「0xff」及び配列要素 867「0xff」が格納されている。 また、他のキャッシュライン部においても、その先頭に逆変換標準 Sボックス 800の配 列要素が格納され、他の部分には、「0xff」が格納されている。
[0131] f列え ίま、キャッシュライン咅 B182b、 183b, 184b, · · ·、 186b, 187bの先頭に ίま、 それぞれ、逆変換標準 Sボックス 800の配列要素である配列要素 852「InvS [01]」、 配列要素 853 rinvS [02]」、配列要素 854「InvS [03]」、 · · ·、配列要素 855「InvS [fc]」、配列要素 856 rinvS [fd]」、配列要素 857「InvS [fe]」及び配列要素 858「I nvS [f f ]」が格納されている。
[0132] 1. 5 パーソナルコンピュータ 200の動作
パーソナルコンピュータ 200の動作について説明する。なお、マイクロプロセッサ 20 1の動作は、マイクロプロセッサ 101の動作と同じであるので、説明を省略する。 (l) AES復号プログラム 234による復号の動作
AES復号プログラム 234による復号の動作について、図 26に示すデータプロセス チャートを用いて説明する。ここでは、この図に示すように、 128ビットの入力鍵 K701 を用いて、 128ビットの暗号文データ CT703力、ら、 128ビットの復号文データ DT70 9が生成されるものとする。
[0133] AES復号プログラム 234による復号の動作は、この図に示すように、鍵スケジユー ノレのステップ 702と、 AddRoundKey処理のステップ 704と、 10段のプロセス 705、 70 6、 · · ·、 707、 708と力、ら構成される。
入力鍵 K701に基づいて、 KeySchedule処理モジユーノレ 608により、 11個の拡大 鍵 SK 、 SK 、 SK 、 ' - '、 SK 、 SK が生成され (ステップ 702)、生成された拡大
0 1 2 9 10
鍵 SK 、 SK 、 SK 、 ' - '、 SK 、 SK が各 AddRoundKey処理へ配布される(ステツ
0 1 2 9 10
プ 711、 712、 713、 · · ·、 714、 715)。
[0134] 次に、 AddRoundKey処理モジュール 602により拡大鍵 SK を用いて
0
AddRoundKey処理が行われる(ステップ 704)。
次に、第 1段のプロセス 705において、 InvShiftRows処理モジユーノレ 606により、 InvShiftRows処理が行われ(ステップ 721)、 InvSubBytes処理モジュール 605により 、 InvSubBytes処理が行われ(ステップ 722)、 AddRoundKey処理モジュール 602に より拡大鍵 SK を用いて AddRoundKey処理が行われ(ステップ 723)、
1
InvMixColumns処理モジュール 607により、 InvMixColumns処理が行われる(ステップ 724)。
[0135] 次に、第 2段のプロセス 706において、 InvShiftRows処理モジュール 606により、 InvShiftRows処理が行われ(ステップ 731)、 InvSubBytes処理モジュール 605により 、 InvSubBytes処理が行われ(ステップ 732)、 AddRoundKey処理モジュール 602に より拡大鍵 SK を用いて AddRoundKey処理が行われ(ステップ 733)、
2
InvMixColumns処理モジュール 607により、 InvMixColumns処理が行われる(ステップ 734)。
[0136] 同様に、第 3段から第 8段までの各段のプロセスにおいて、 InvShiftRows処理、 InvSubBytes処理、 AddRoundKey処理及び InvMixColumns処理が行われる。 次に、第 9段のプロセス 707において、 InvShiftRows処理モジユーノレ 606により、 InvShiftRows処理が行われ(ステップ 741)、 InvSubBytes処理モジュール 605により 、 InvSubBytes処理が行われ(ステップ 742)、 AddRoundKey処理モジュール 602に より拡大鍵 SK を用いて AddRoundKey処理が行われ(ステップ 743)、
9
InvMixColumns処理モジュール 607により、 InvMixColumns処理が行われる(ステップ 744)。
[0137] 最後に、第 10段のプロセス 708において、 InvShiftRows処理モジユーノレ 606により 、 InvShiftRows処理が行われ(ステップ 751)、 InvSubBytes処理モジュール 605によ り、 InvSubBytes処理が行われ(ステップ 752)、 AddRoundKey処理モジュール 602に より拡大鍵 SK を用いて AddRoundKey処理が行われる(ステップ 753)。
10
こうして、 128ビットの復号データ DT709が生成される。
[0138] (2)各 InvRound処理又は InvFinalRound処理における InvSubBytes処理及び
AddRoundKey処理の詳細の動作
次に、各 InvRound処理又は InvFinalRound処理における InvSubBytes処理及び AddRoundKey処理の詳細の動作について、図 27に示すデータプロセスチャートを 用いて説明する。
[0139] 各 InvRound処理又は InvFinalRound処理は、図 27に示すように、少なくとも、
InvShiftRows処理 771、 InvSubBytes処理 772及び AddRoundKey処理 772を含む。
InvSubBytes処理 772は、 16個のシフト処理 781、 782、 783、 · · ·、 784と、 16個の 逆変換変形 Sボックス 611の参照処理 785、 786, 788、 · · ·、 789とを含む。
[0140] また、 AddRoundKey処理 773は、 16個の排他的論理和演算 791、 792、 793、 · ·
·、 794を含む。
128ビットの拡大鍵 761が、 16個の 8ビットの部分鍵に分けられ、 16個の部分鍵が 、それぞれ、 AddRoundKey処理 773の 16個の排他的論理和演算 791、 792、 793、 · · ·、 794へ出力される(ステップ 762、 763、 764、 …ヽ 765)。
[0141] 各 InvRound処理又は InvFinalRound処理において、 InvShiftRows処理 771が終了 した後に、 InvShiftRows処理 771から 128ビットのブロックデータが出力され、前記ブ ロックデータ力 16個の 8ビットの部分データに分けられ、 16個の部分データ力 そ れぞれ、 InvSubBytes処理 772の 16個のシフ卜処理 781、 782、 783、 · · ·、 784へ出 力される。
[0142] シフト処理 781は、第 1の部分データ(8ビット)を受け取り、受け取った第 1の部分 データを、 3ビットだけ左側へシフトして、 11ビットの第 1のシフトデータを得る。ここで 、得られた第 1のシフトデータの上位の 8ビットは、前記第 1の部分データと同じデータ であり、前記第 1のシフトデータの下位の 3ビットは、「000」(2進数表現)である。次に 、得られた第 1のシフトデータを参照処理 785へ出力する。
[0143] 参照処理 785は、第 1のシフトデータを受け取り、受け取った第 1のシフトデータを アドレスとして、逆変換変形 Sボックス 611を参照して、 8ビットの第 1の配列要素を取 得し、取得した第 1の配列要素を AddRoundKey処理 773の排他的論理和演算 791 へ出力する。
排他的論理和演算 791は、第 1の配列要素 (8ビット)を受け取り、第 1の部分鍵 (8 ビット)を受け取り、受け取った第 1の配列要素と受け取った第 1の部分鍵とに排他的 論理和演算を施して、 8ビットの第 1の演算データを得る。
[0144] 同様に、シフト処理 782は、第 2の部分データ(8ビット)を、 3ビットだけ左側へシフト して、 11ビットの第 2のシフトデータを得、参照処理 786は、受け取った第 2のシフト データをアドレスとして、逆変換変形 Sボックス 611を参照して、 8ビットの第 2の配列 要素を取得し、排他的論理和演算 792は、第 2の配列要素と第 2の部分鍵とに排他 的論理和演算を施して、 8ビットの第 2の演算データを得る。
[0145] 同様に、シフト処理 783は、第 3の部分データ(8ビット)を、 3ビットだけ左側へシフト して、 11ビットの第 3のシフトデータを得、参照処理 788は、受け取った第 3のシフト データをアドレスとして、逆変換変形 Sボックス 611を参照して、 8ビットの第 3の配列 要素を取得し、排他的論理和演算 793は、第 3の配列要素と第 3の部分鍵とに排他 的論理和演算を施して、 8ビットの第 3の演算データを得る。
[0146] 同様に、第 4から第 15の演算データが得られる。
さらに、同様に、シフト処理 784は、第 16の部分データ(8ビット)を、 3ビットだけ左 側へシフトして、 11ビットの第 16のシフトデータを得、参照処理 789は、受け取った 第 16のシフトデータをアドレスとして、逆変換変形 Sボックス 611を参照して、 8ビット の第 16の配列要素を取得し、排他的論理和演算 794は、第 16の配列要素と第 16 の部分鍵とに排他的論理和演算を施して、 8ビットの第 16の演算データを得る。
[0147] こうして、第 1から第 16の演算データ(16個の演算データ)が取得される。
次に、第 1から第 16の演算データは、この順序で結合されて 128ビットのデータが 生成される。
2.変形例(1)
コンテンツサーバ装置 100のメモリ部 103が記憶している AES喑号プログラム 133 の変形例について説明する。
[0148] AES喑号プログラム 133は、変形 Sボックス 511に代えて、図 28に示す変形 Sボッ タス 911を含むとしてもよレ、。また、このとき、 AES喑号プログラム 133は、 SubBytes処 理モジュール 505に代えて、 SubBytes処理モジュール 505a (図示してレ、なレ、)を含 む。 SubBytes処理モジュール 505aは、 3ビットの左シフトの処理に代えて、 2ビットの 左シフトの処理を含む。
[0149] (変形 Sボックス 911)
変形 Sボックス 911は、図 28に示すように、 1024個の酉己歹 IJ要素 921、 931、 932、 9 33、 922、 934、 935、 936、 923、 ···、 924、 ···、 925、 ···、 926、 ···、 927、… 、 928、 ···から構成されている。
[0150] 変形 Sボックス 911を構成する各配列要素は、図 28においては、表現の便宜上、 1 28行 X 8列のマトリックス状に配置されている。
第 1歹 IJの 128個の酉己歹 IJ要素 921、 923、 ···、 925、 927は、それぞれ、値 S[00]、 値 S [02]、値 S [04]、値 S [06]、…、値 S [f 8]、値 S [fa]、値 S [fc]、値 S [fe]を有 する。ここで、値 S[00]、値 S [02]、値 S [04]、値 S [06]、 ···、値 S[f8]、値 S[fa]、 値 S[fc]、値 S[fe]は、上述の標準 Sボックス 380に含まれるものと同じである。
[0151] 第 2列の 256個の配列要素は、それぞれ、値「0xff」を有する。ここで、「0x」は、こ れに続く数字が 16進数による表現であることを示している。
第 3列〜第 4列に含まれる各配列要素も、値「0xff」を有する。
第 5歹 IJの 128個の酉己歹 IJ要素 922、 924、 ···、 926、 928は、それぞれ、値 S [01]、 値 S [03]、値 S [05]、値 S [07]、 ···、値 S[f9]、値 S[fb]、値 S[fd]、値 S[ff]を有 する。ここで、値 S [01]、値 S [03]、値 S [05]、値 S [07]、 · · ·、値 S [f9]、値 S [fbコ、 値 S [fd]、値 S [ff]は、上述の標準 Sボックス 380に含まれるものと同じである。
[0152] 第 6列の 256個の配列要素は、それぞれ、値「0xff」を有する。
第 7列〜第 8列に含まれる各配列要素も、値「0xff」を有する。
このように、変形 Sボックス 911に含まれる複数の配列要素力 128行 8歹1』のマトリ ックス状に配置されているとみなした場合に、変形 Sボックス 911において、第 1列の 128個の各配列要素に、標準 Sボックス 380に含まれる偶数の配列番号を有する各 配列要素が配され、第 5列の 128個の各配列要素に、標準 Sボックス 380に含まれる 奇数の配列番号を有する各配列要素が配され、第 2〜第 4列及び第 6〜第 8列の各 配列要素に値「0xf f」が配されてレ、る。
[0153] こうして、変形 Sボックス 911では、 4個の連続して配置される配列要素について、そ の先頭の配列要素は、標準 Sボックス 380に含まれる配列要素と同じ値を有し、その 他の配列要素は、意味のなレ、値「0xff」を有してレ、る。
(SubBytes処理モジュール 505a)
SubBytes処理モジュール 505aによる SubBytes処理では、 128ビットのブロックデー タを受け取り、受け取った 128ビットのブロックデータを 16個の 8ビットの部分ブロック データに分け(8ビット X 16 = 128ビット)、図 29に示すように、各部分ブロックデータ を 2ビットだけ左へシフトする(ステップ 902)。こうして、 16個の部分ブロックデータの それぞれについて、 10ビットのデータが生成される。次に、生成された各 10ビットの データに、変形 Sボックス 911の参照処理を施して、 8ビットデータを出力する(ステツ プ 903)。
[0154] なお、上述したように、 SubBytes処理モジュール 505aによる SubBytes処理において 、 16個の 2ビットの左シフト処理と、 16個の変形 Sボックス 911の参照処理とが行われ る力 表示を簡便にするために、図 29においては、これらの 16個の左シフト処理及 び 16個の参照処理のうち、 1個の左シフト処理 902及び 1の参照処理 903からなる組 901のみを示している。
[0155] このように、 16個の部分ブロックデータについて、 2ビットの左シフトと変形 Sボックス 911の参照処理とが施される。この結果、 16個の 8ビットデータが生成される。生成さ れた 16個の 8ビットデータが連結されて 128ビットのブロックデータが生成され出力さ れる。
上記のように、各部分ブロックデータを 2ビットだけ左へシフトするのは、次の理由に よる。
[0156] 2ビットだけ左へシフトすることにより、各部分ブロックデータが 4倍される。変形 Sボ ックス 911においては、連続して配置されている 4個の配列要素のうち、先頭の 1個に ついては、有効な配列要素 S [XX]が配置されているので、各部分ブロックデータを 4 倍して得られたデータをアドレスとして、変形 Sボックス 911を参照することにより、有 効な配列要素 S [XX]のみが得られるのである。
[0157] なお、 SubBytes処理モジュール 505aは、上述した理由により、 2ビットの左シフトの 処理に代えて、 4倍の乗算を行う乗算処理を含むとしてもよレ、。
(データ部の一例)
データ部 175のキャッシュライン部 181、 182、…に、上述した SubBytes処理によ り、変形 Sボックス 911の内容が格納された場合における一例を図 30にデータ部 17 5cとして示す。
[0158] 図 30によると、データ部 175cの先頭から 128個のキャッシュライン部 181c、 182c 、 183c, 184c, · · ·には、変形 Sボックス 911の内容力 Sそのまま格系内されてレヽる。 つまり、キャッシュライン部 181cには、配列要素941「3 [00]」、配列要素951「0 £ f」、配列要素 952「0xff」、配列要素 953「0xff」、配列要素 942「S [01]」、配列要 素 954 roxffj、配列要素 955「0xff」及び配列要素 956「0xff」が格納されてレ、る。 また、他のキャッシュライン部においても、その第 1番目及び第 5番目に標準 Sボック ス 380の配列要素が格納され、他の部分には、「0xff」が格納されている。
[0159] また、 128個のキャッシュライン部 182c、 183c, 184c, · · ·の先頭の配列要素には 、それぞれ、標準 Sボックス 380の配列要素である配列要素 943「S [02]」、 · · ·、配 列要素 945 rs [fc]」及び配列要素 947「S [fe]」が格納されてレ、る。
また、 128個のキャッシュライン部 182c、 183c, 184c,…の第 5番目の配歹 'J要素 には、それぞれ、標準 Sボックス 380の配列要素である配列要素 944「S [03]」、 · · · 、配列要素 946 rs [fd]」及び配列要素 948「S [ff]」が格納されてレ、る。 [0160] このように、データ部 175cの各キャッシュライン部には、わずか 2個の標準 Sボック ス 380の配列要素のみが格納されてレ、る。
(AES復号プログラム 234における適用)
パーソナルコンピュータ 200のメモリ部 203が記憶している AES復号プログラム 23 4において、上記と同様にしてもよい。
[0161] つまり、 AES復号プログラム 234は、逆変換変形 Sボックス 611に代えて、図 28に 示す変形 Sボックス 911と同様に構成した逆変換変形 Sボックスを含むとしてもよい。 また、このとき、 AES復号プログラム 234の InvSubBytes処理モジュール 605は、 SubBytes処理モジュール 505aと同様に、 3ビットの左シフトの処理に代えて、 2ビット の左シフトの処理を含む。
[0162] 3.変形例(2)
コンテンツサーバ装置 100のメモリ部 103が記憶している AES喑号プログラム 133 の別の変形例について説明する。
AES暗号プログラム 133は、変形 Sボックス 511に代えて、図 31に示す変形 Sボッ タス 1011を含むとしてもよい。また、このとき、 AES暗号プログラム 133は、 SubBytes 処理モジュール 505に代えて、 SubBytes処理モジュール 505b (図示してレ、なレ、)を 含む。 SubBytes処理モジュール 505bは、 3ビットの左シフトの処理に代えて、 1ビット の左シフトの処理と、 mod 512における値「1」の加算の処理とを含む。
[0163] (変形 Sボックス 1011)
変形 Sボックス 1011は、図 31に示すように、 512個の酉己歹 IJ要素 1041、 1031、 104 2、 1032、 1043、 1033、 1044、 1034、 · · ·、 1035、 · · ·、 1036、 · · ·、 1037、… 、 1038、 · · ·から構成されている。
[0164] 変形 Sボックス 1011を構成する各配列要素は、図 31においては、表現の便宜上、
64行 X 8列のマトリックス状に配置されている。
第 2列の 64個の配列要素 1031、 · · ·、 1035は、それぞれ、値 S [00]、値 S [04]、 値 S [08]、値 S [12]、 · · ·、値 S [fO]、値 S [f4]、値 S [f 8]、値 S [fc]を有する。ここで 、値 S [00]、値 S [04」、値 S [08]、値 S [12]、 · · ·、値 S [f0]、値 S [f4]、値 S [f8]、 値 S [fc]は、上述の標準 Sボックス 380に含まれるものと同じである。 [0165] また、第 4列の 64個の配列要素 1032、 ···、 1036は、それぞれ、値 S[01]、値 S[ 05]、値 S [09]、値 S[13]、 ···、値 S[fl]、値 S[f5]、値 S[f9]、値 S[fd]を有する。 ここで、値 S [01]、値 S [05]、値 S [09]、値 S [13]、 · · ·、値 S[fl]、値 S[f5]、値 S[f 9]、値 S[fd]は、上述の標準 Sボックス 380に含まれるものと同じである。
[0166] また、第 6列の 64個の配列要素 1033、 ···、 1037は、それぞれ、値 S[02]、値 S[ 06]、値 S[10]、値 S[14]、 ···、値 S[f2]、値 S[f6]、値 S[fa]、値 S[fe]を有する。 ここで、値 S [02]、値 S [06]、値 S [10]、値 S [14]、 · · ·、値 S [f 2]、値 S [f6]、値 S[f a]、値 S[fe]は、上述の標準 Sボックス 380に含まれるものと同じである。
[0167] また、第 8列の 64個の配列要素 1034、 ···、 1038は、それぞれ、値 S[03]、値 S[ 07]、値 S [ 11]、値 S [15]、…、値 S [f 3]、値 S [f 7]、値 S [fb]、値 S [ff]を有する。 ここで、値 S [03]、値 S [07]、値 S [11]、値 S [15]、 · · ·、値 S [f 3]、値 S [f7]、値 S[f b]、値 S[ff]は、上述の標準 Sボックス 380に含まれるものと同じである。
[0168] 第 1列の 64個の配列要素は、それぞれ、値「0xff」を有する。ここで、「0x」は、これ に続く数字が 16進数による表現であることを示している。
第 3列、第 5列及び第 7列に含まれる各配列要素も、値「0xff」を有する。 このように、変形 Sボックス 1011では、 2個の連続して配置される配列要素について 、その先頭の配列要素は、意味のない値「0xff」を有し、その他の配列要素は、標準 Sボックス 380に含まれる配列要素と同じ値を有している。
[0169] (SubBytes処理モジュール 505b)
SubBytes処理モジュール 505bによる SubBytes処理では、 128ビットのブロックデー タを受け取り、受け取った 128ビットのブロックデータを 16個の 8ビットの部分ブロック データに分け(8ビット X 16 = 128ビット)、図 32に示すように、各部分ブロックデータ を 1ビットだけ左へシフトする(ステップ 1002)。こうして、 16個の部分ブロックデータ のそれぞれについて、 9ビットのデータが生成される。次に、生成された各 9ビットのデ 一タと値「1」とに mod 512における加算を施して 9ビットの加算データを得る(ステツ プ 1003)。
[0170] つまり、(加算データ) =(9ビットのデータ) + 1 mod 512
次に、生成された各 9ビットの加算データに、変形 Sボックス 1011の参照処理を施 して、 8ビットデータを出力する(ステップ 1004)。
なお、上述したように、 SubBytes処理モジュール 505bによる SubBytes処理にぉレヽ て、 16個の 1ビットの左シフト処理と、 16個の mod 512におけるィ直「1」とのカロ算処理 と、 16個の変形 Sボックス 1011の参照処理とが行われる力 表示を簡便にするため に、図 32においては、これらの 16個の左シフト処理、 16個の加算処理及び 16個の 参照処理のうち、 1個の左シフト処理 1002、 1個の加算処理 1003及び 1の参照処理 1004力もなる組 1001のみを示している。
[0171] このように、 16個の部分ブロックデータについて、 1ビットの左シフトと、 mod 512 の加算と、変形 Sボックス 1011の参照処理とが施される。この結果、 16個の 8ビットデ ータが生成される。生成された 16個の 8ビットデータが連結されて 128ビットのブロッ クデータが生成され出力される。
上記のように、各部分ブロックデータを 1ビットだけ左へシフトし、さらに、 mod 512 における値「1」の加算をするのは、次の理由による。
[0172] 1ビットだけ左へシフトし、さらに、 mod 512の「1」加算することにより、各部分ブロ ックデータが 2倍され、「1」が加算される。変形 Sボックス 1011においては、連続して 配置されている 2個の配列要素のうち、後の 1個については、有効な配列要素 S [xx] が配置されているので、各部分ブロックデータを 2倍し、さらに「1」を加算して得られ たデータをアドレスとして、変形 Sボックス 1011を参照することにより、有効な配列要 素 S [XX]のみが得られるのである。
[0173] なお、 SubBytes処理モジュール 505bは、上述した理由により、 1ビットの左シフトの 処理に代えて、 2倍の乗算を行う乗算処理を含むとしてもよレ、。
このように、変形 Sボックスにおいて、連続して配置されている 2個の配列要素のうち 、 2番目の配列要素について、有効な配列要素 S [XX]が配置されているとするなら、 上述したように、各部分ブロックデータを 2倍し、さらに「1」を加算して得られたデータ をアドレスとして、前記別の変形 Sボックスを参照することにより、有効な配列要素 S [x X]のみが得られる。
[0174] また、別の変形 Sボックスにおいて、連続して配置されている 8個の配列要素のうち 、 3番目の配列要素について、有効な配列要素 S [XX]が配置されているとするなら、 上述したように、各部分ブロックデータを 8倍し、さらに「2」を加算して得られたデータ をアドレスとして、前記別の変形 Sボックスを参照することにより、有効な配列要素 S[x X]のみが得られる。
[0175] また、別の変形 Sボックスにおいて、連続して配置されている 8個の配列要素のうち 、 4番目の配列要素について、有効な配列要素 S [XX]が配置されているとするなら、 上述したように、各部分ブロックデータを 8倍し、さらに「3」を加算して得られたデータ をアドレスとして、前記別の変形 Sボックスを参照することにより、有効な配列要素 S[x X]のみが得られる。
(データ部の一例)
データ部 175のキャッシュライン部 181、 182、 ···に、上述した SubBytes処理によ り、変形 Sボックス 1011の内容が格納された場合における一例を図 33にデータ部 1 75dとして示す。
[0176] データ部 175dの先頭力ら 64個のキャッシュライン部 181d、 182d、 183d, 184d、 • · ·には、変形 Sボックス 1011の内容がそのまま格納されている。
つまり、キャッシュライン部 181dには、配列要素 1061「0xff」、配列要素 1051「S[ 00]」、配列要素1062「(^£^、配列要素1052「3[01]」、配列要素1063「(^£ 、 配列要素 1053「S [02]」、配列要素 1064「0xff」及び配列要素 1054「S [03]」が格 納されている。また、他のキャッシュライン部においても、その第 2番目、第 4番目、第 6番目及び第 8番目の配列要素には、標準 Sボックス 380の配列要素が格納され、他 の配列要素には、「0xff」が格納されている。
[0177] また、 64個のキャッシュライン部 182d、 183d, 184d、…の第 2番目の配歹 'J要素 には、それぞれ、標準 Sボックス 380の配列要素である配列要素「S [04]」、「S[08]」 、「S[12]」、 ···、「S[fOコ」、「S[f4]」、「3 8]」及び「3[ ]」が格納されてぃる。 また、 64個のキャッシュライン咅 B182d、 183d, 184d、 ···の第 4番目の酉己歹 [Jには、 それぞれ、標準 Sボックス 380の配列要素である配列要素「S [05]」、「S[09]」、「S[ 13]」、 .··、「S[fl]」、「S[f5]」、「3 9]」及び「3 (1]」が格納されてぃる。
[0178] また、 64個のキャッシュライン咅 B182d、 183d, 184d、 ···の第 6番目の酉己歹 [Jには、 それぞれ、標準 Sボックス 380の配列要素である配列要素「S [06]」、「S[10]」、「S[ 14]」、 · · ·、「S [f2]」、「S [f6]」、「S [fa]」及び「S [fe]」が格納されている。
また、 64個のキャッシュライン部 182d、 183d, 184d、 · · ·の第 8番目の酉己歹 ljには、 それぞれ、標準 Sボックス 380の配列要素である配列要素、「S [07]」、「S [11]」、「S
[15]」、 · · ·、「S [f3]」、「S [f7]」、「3 [^]」及び「3 ^]」が格納されてぃる。
[0179] このように、データ部 175dの各キャッシュライン部には、わずか 4個の標準 Sボック ス 380の配列要素のみが格納されてレ、る。
(AES復号プログラム 234における適用)
パーソナルコンピュータ 200のメモリ部 203が記憶している AES復号プログラム 23 4において、上記と同様にしてもよい。
[0180] つまり、 AES復号プログラム 234は、逆変換変形 Sボックス 611に代えて、図 31に 示す変形 Sボックス 1011と同様に構成した逆変換変形 Sボックスを含むとしてもよい 。また、このとき、 AES復号プログラム 234の InvSubBytes処理モジュール 605は、 SubBytes処理モジュール 505bと同様に、 3ビットの左シフトの処理に代えて、 1ビット の左シフトの処理と、 mod 512における値「1」の加算の処理とを含む。
[0181] 4·変形例(3)
コンテンツサーバ装置 100のメモリ部 103が記憶している AES暗号プログラム 133 の別の変形例について説明する。
AES暗号プログラム 133は、変形 Sボックス 511に代えて、図 34に示す変形 Sボッ タス 1121を含むとしてもよい。また、このとき、 AES暗号プログラム 133は、 SubBytes 処理モジュール 505に代えて、 SubBytes処理モジュール 505c (図示していない)を 含む。 SubBytes処理モジュール 505cは、 3ビットの左シフトの処理に代えて、 mod 2 56における乗算の処理を含む。
[0182] (変形 Sボックス 1121)
変形 Sボックス 1121は、図 34に示すように、 256個の酉己歹 IJ要素 1131、 1132、 113
3、 1134、 1135、 1136、 1137、 1138、 1139、 1140、 1141、 1142、 1143、 114
4、 1145、 1146、 · · ·から構成されている。これらの配列要素は、配列番号「0」、「1」 、「2」、「3」、 · · ·、「255」により識別されるものとする。
[0183] 変形 Sボックス 1121を構成する各配列要素は、図 34においては、表現の便宜上、 32行 X 8列のマトリックス状に配置されている。
第 1行の 8個の配列要素 1131、 ···、 1138は、それぞれ、値 S[0]、値 S[81]、値 S[162]、値 S[243]、値 S[68]、値 S [149]、値 S [230]、値 S [55]を有する。ここ で、値 S[0]、値 S[81]、値 S[162]、値 S[243]、値 S[68]、値 S[149]、値 S[230] 、値 S[55]は、上述の標準 Sボックス 380に含まれるものと同じである。なお、ここでは 、 S [XX]において、 XXは、 10進数による表示である。
[0184] また、第 2行の 8個の配列要素 1139、 ···、 1146は、それぞれ、値 S [136]、値 S[ 217]、値 S[42]、値 S[123]、値 S[204]、値 S[29]、値 S[110]、値 S[191]を有 する。ここで、値 S[136]、値 S [217]、値 S [42]、値 S [123]、値 S [204]、値 S [29] 、値 S[110]、値 S[191]は、上述の標準 Sボックス 380に含まれるものと同じである。 ここでも、 S [XX]において、 XXは、 10進数による表示である。
[0185] 第 3行から第 32行の各配列要素も、上述の標準 Sボックス 380に含まれる配列要素 と同じものである。ただし、図 34の変形 Sボックス 1121においては、第 3行から第 32 行の各配列要素の表示を省略してレ、る。
(変形 Sボックス 1121の配列規則)
変形 Sボックス 1121には、次に説明する規則に従って、上述の標準 Sボックス 380 に格納されてレ、る各配列要素が格納されてレ、る。
[0186] 整数である 256個の入力値 A(0、 1、 2、 ···、 255)のそれぞれに対して、 AX 177 mod 256を計算する。各入力値 Aと対応する計算結果とを、図 35に示す対応表 1 122に示す。
対応表 1122は、 256個の人カイ直 Aと、 AX 177 mod 256による計算結果とを対 応付けて表示するものである。ただし、図 35に示す対応表 1122においては、紙面の 都合上の理由により、全ての Aの値に対応する計算結果を表示している訳ではなぐ その一部分のみを表示し、その他については、表示を省略している。
[0187] ここで、例えば、入力値 A=0に対する AX 177 mod 256の計算結果は、「0」で あり、入力値 A = 81に対する計算結果は、「1」であり、入力値 A= 162に対する計算 結果は、「2」であり、入力値 A= 243に対する計算結果は、「3」であり、入力値 A = 6 8に対する計算結果は、「4」である。 一例として、変形 Sボックス 1121の配列番号「0」により示される配列要素 1131に 格納する標準 Sボックス 380の配列要素を次のようにして決定する。配列番号「0」と 同じ値を有する計算結果「0」を対応表 1122から探し、計算結果に対応する入力値 A「0」を取得する。次に、取得した入力値 A「0」を配列番号とする配列要素 S [0]を、 変形 Sボックス 1121の配列番号「0」により示される配列要素 1131の値とする。
[0188] また、別の一例として、変形 Sボックス 1121の配列番号「1」により示される配列要素
1132に格納する標準 Sボックス 380の配列要素を次のようにして決定する。配列番 号「1」と同じ値を有する計算結果「1」を対応表 1122から探し、計算結果に対応する 入力値 A「81」を取得する。次に、取得した入力値 A「81」を配列番号とする配列要 素 S [81]を、変形 Sボックス 1121の配列番号「1」により示される配列要素 1132の値 とする。
[0189] さらに、別の一例として、変形 Sボックス 1121の配列番号「2」により示される配列要 素 1133に格納する標準 Sボックス 380の配列要素を次のようにして決定する。配列 番号「2」と同じ値を有する計算結果「2」を対応表 1122から探し、計算結果に対応す る入力値 A「162」を取得する。次に、取得した入力値 A「162」を配列番号とする配 列要素 S [162]を、変形 Sボックス 1121の配列番号「2」により示される配列要素 113 3の値とする。
[0190] 以下は同様である。
このように、変形 Sボックス 1121では、上述した規則により、標準 Sボックス 380に含 まれる配列要素が配置されてレ、る。
なお、上記において、入力値 Aに対する計算結果 A X I 77 mod 256を用いると しており、入力値 Aに、「177」を乗じている力 「177」には限定されなレ、。他の奇数 の値を乗じるとしてもよい。
[0191] また、 mod 256において乗算を行うとしている力 S、ここで、値「256」は、変換対象と なるデータが取り得る長さ(例えば、ビット長)、言い換えれば、変換対象となるデータ が取り得る値の種類の数に依存する。上記の実施の形態及び変形例では、変換対 象となるデータは、 8ビットであるので、そのデータの取り得る値の種類の数は、 256 である。上述したように、 mod 256において乗算を行うことにより、この乗算により得 られる乗算値の取り得る値の種類の数は、変換対象となるデータと同じ 256となる。
[0192] (SubBytes処理モジュール 505c)
SubBytes処理モジュール 505cによる SubBytes処理では、 128ビットのブロックデー タを受け取り、受け取った 128ビットのブロックデータを 16個の 8ビットの部分ブロック データに分け(8ビット X 16 = 128ビット)、図 36に示すように、 mod 256におレヽて、 各部分ブロックデータに値「177」を乗ずる(ステップ 1102)。こうして、 16個の部分ブ ロックデータのそれぞれについて、 8ビットの乗算値が生成される。次に、生成された 各 8ビットの乗算値に、変形 Sボックス 1121の参照処理を施して、 8ビットデータを出 力する(ステップ 1103)。
[0193] なお、上述したように、 SubBytes処理モジュール 505cによる SubBytes処理において 、 16個の mod 256における乗算処理と、 16個の変形 Sボックス 1121の参照処理と が行われるが、表示を簡便にするために、図 36においては、これらの 16個の乗算処 理及び 16個の参照処理のうち、 1個の乗算処理 1102及び 1個の参照処理 1103か らなる組 1101のみを示している。
[0194] このように、 16個の部分ブロックデータについて、 mod 256の乗算と、変形 Sボッ タス 1121の参照処理とが施される。この結果、 16個の 8ビットデータが生成される。 生成された 16個の 8ビットデータが連結されて 128ビットのブロックデータが生成され 出力される。
上記のように、 mod 256において、各部分ブロックデータに、値「177」を乗じるの は、次の理由による。
[0195] 一例として、部分ブロックデータが「81」であるとする。このとき、上記の乗算により、
81 X 177 mod 256 = 1 が得られる。
次に、得られた「1」を配列番号として変形 Sボックス 1121を参照すると、配列要素 S [81]が得られる。
[0196] また、一例として、部分ブロックデータが「162」であるとする。このとき、上記の乗算 により、
162 X 177 mod 256 = 2 が得られる。
次に、得られた「2」を配列番号として変形 Sボックス 1121を参照すると、配列要素 S [162]が得られる。
[0197] このように、各部分ブロックデータに、 mod 256におレ、て、値「177」を乗じ、得られ た乗算値をアドレスとして、変形 Sボックス 1121を参照することにより、各部分ブロック データに適切に対応する有効な配列要素 S [XX]が得られるのである。
(データ部の一例)
データ部 175のキャッシュライン部 181、 182、 · · ·に、上述した SubBytes処理によ り、変形 Sボックス 1121の内容が格納された場合における一例を図 37にデータ部 1 75eとして示す。
[0198] データ部 175eの先頭から 32個のキャッシュライン部 181e、 182e、 . . .には、変形
Sボックス 1121の内容がそのまま格納されている。
つまり、キャッシュライン部 181eには、配列要素 1151「S [0]」、配列要素 1152「S [
81]」、配列要素 1153「S [162]」、配列要素 1154「S [243]」、配歹 IJ要素 1155「S [
68]」、配列要素 1156「S [149]」、配列要素 1157「S [230]」及び配列要素 1158「
S [55]」が格納されている。
[0199] また、キャッシュライン部 182eには、配列要素 1159「S [136]」、配列要素 1160「S
[217]」、配列要素 1161「S [42]」、配列要素 1162「S [123]」、配列要素 1163「S
[204]」、配列要素 1164「S [29]」、配列要素 1165「S [110]」及び配列要素 1166
「S [191]」が格納されている。
[0200] また、他のキャッシュライン部においても、上記と同様に、変形 Sボックス 1121の 1 行の 8個の配列要素が、格納されている。
(AES復号プログラム 234における適用)
パーソナルコンピュータ 200のメモリ部 203が記憶している AES復号プログラム 23
4において、上記と同様にしてもよい。
[0201] つまり、 AES復号プログラム 234は、逆変換変形 Sボックス 611に代えて、図 34に 示す変形 Sボックス 1121と同様に構成した逆変換変形 Sボックスを含むとしてもよい
。また、このとき、 AES復号プログラム 234の InvSubBytes処理モジュール 605は、
SubBytes処理モジュール 505cと同様に、 3ビットの左シフトの処理に代えて、 mod 5
12における値「177」の乗算の処理を含む。 [0202] 5·変形例 (4)
コンテンツサーバ装置 100のメモリ部 103が記憶している AES暗号プログラム 133 の別の変形例について説明する。
AES喑号プログラム 133は、変形 Sボックス 511に代えて、図 38に示す変形 Sボッ タス 1221を含むとしてもよレ、。また、このとき、 AES喑号プログラム 133は、 SubBytes 処理モジュール 505に代えて、 SubBytes処理モジュール 505d (図示してレ、なレ、)を 含む。 SubBytes処理モジュール 505dは、 3ビットの左シフトの処理に代えて、 mod 2 56における乗算の処理と 1ビットの左シフトの処理とを含む。
[0203] (変形 Sボックス 1221)
変形 Sボックス 1221は、図 38に示すように、 512個の酉己歹 IJ要素 1231、 1241、 123 2、 1242、 1233、 1243、 1234、 1244、 1235、 ···、 1236、 ···、 1237、 ···、 123 8、 ···から構成されている。
変形 Sボックス 1221を構成する各配列要素は、図 38においては、表現の便宜上、 64行 X 8列のマトリックス状に配置されている。
[0204] 変形 Sボックス 1221においては、図 34に示す変形 Sボックス 1121に格納されてレヽ る各配列要素 S [XX]が、変形 Sボックス 1121における配置の順序を保ちながら、 1つ 置きに格納されている。また、これらの配列要素の間には、「0xff」が格納されている ί列えば、変形 Sボックス 1221の第 1行の 8個の酉己歹 IJ要素 1231、 1241、 1232、 12 42、 1233、 1243、 1234、 1244は、それぞれ、値 S[0]、「0xff」、値 S[81]、「0xff 」、値 S[162]、「0xff」、値 S[243]、「0xff」を有する。ここで、値 S[0]、値 S[81]、 値 S[162]、値 S[243]は、図 34に示す変形 Sボックス 1121の第 1行の先頭の 4個 の配列要素と同じものである。
[0205] また、変形 Sボックス 1221の第 2行の 8個の配列要素 1235、 ···、 1236、 ···、 12 37、 ···、 1238、…は、それぞれ、値 S[68]、「0xff」、値 S [149]、「0xff」、値 S[2 30]、「0xff」、値 S[55]、「0xff」を有する。ここで、値 S [68]、値 S [149]、値 S [230 ]、値 S[55]は、図 34に示す変形 Sボックス 1121の第 1行の後半の 4個の配列要素 と同じものである。 [0206] なお、ここでは、 S [XX]において、 XXは、 10進数による表示である。
(SubBytes処理モジュール 505d)
SubBytes処理モジュール 505dによる SubBytes処理では、 128ビットのブロックデー タを受け取り、受け取った 128ビットのブロックデータを 16個の 8ビットの部分ブロック データに分け(8ビット X 16 = 128ビット)、図 39に示すように、 mod 256におレヽて、 各部分ブロックデータに値「177」を乗ずる(ステップ 1202)。こうして、 16個の部分ブ ロックデータのそれぞれについて、 8ビットの乗算値が生成される。次に、生成された 乗算値を 1ビットだけ左へシフトして 9ビットのシフトデータを生成する(ステップ 1203) 。こうして、 16個の乗算値のそれぞれについて、 9ビットのシフトデータが生成される。 次に、生成された各 9ビットのシフトデータに、変形 Sボックス 1221の参照処理を施し て、 8ビットデータを出力する(ステップ 1204)。
[0207] なお、上述したように、 SubBytes処理モジュール 505dによる SubBytes処理にぉレヽ て、 16個の mod 256における乗算処理と、 16個の左シフト処理と、 16個の変形 S ボックス 1221の参照処理とが行われる力 表示を簡便にするために、図 39において は、これらの 16個の乗算処理、 16個のシフト処理及び 16個の参照処理のうち、 1個 の乗算処理 1202、 1個のシフト処理 1203及び 1個の参照処理 1204力 なる組 120 1のみを示している。
[0208] このように、 16個の部分ブロックデータについて、 mod 256の乗算と、 1ビットの左 シフト処理と、変形 Sボックス 1221の参照処理とが施される。この結果、 16個の 8ビッ トデータが生成される。生成された 16個の 8ビットデータが連結されて 128ビットのブ ロックデータが生成され出力される。
上記のように、 mod 256におレ、て、各部分ブロックデータに、値「177」を乗じるの は、変形例(4)において説明した通りである。また、 1ビットの左シフト処理を行うのは 、変形例(2)において説明した通りである。
[0209] このように、各部分ブロックデータに、 mod 256におレ、て、値「177」を乗じ、さらに 、得られた乗算値に 1ビットの左シフト処理を施して、シフトデータを得、得られたシフ トデータをアドレスとして、変形 Sボックス 1221を参照することにより、各部分ブロック データに適切に対応する有効な配列要素 S [XX]が得られるのである。 なお、 SubBytes処理モジュール 505dは、 1ビットの左シフトの処理に代えて、 2倍の 乗算を行う乗算処理を含むとしてもよレヽ。
(データ部の一例)
データ部 175のキャッシュライン部 181、 182、 · · ·に、上述した SubBytes処理によ り、変形 Sボックス 1221の内容が格納された場合における一例を図 40にデータ部 1 75fとして示す。
[0210] データ部 175fの先頭から 64個のキャッシュライン部 181f、 182f、 . . .には、変形 S ボックス 1221の内容がそのまま格納されている。
つまり、キャッシュライン部 181fには、配列要素 1251「S [0]」、配列要素 1261「0x ff」、配列要素 1252「S [81]」、配列要素 1262「0xff」、配列要素 1253「S [162]」、 配列要素 1263「0xff」、配列要素 1254「S [243]」、配列要素 1264「0xff」が格納 されている。
[0211] また、キャッシュライン部 182fには、配列要素 1255「S [68]」、「0xff」、配列要素 1 256「S [149]」、「0 £ 、酉己歹1】要素1257「3 [230]」、「0xff」、酉己歹 IJ要素 1258「S [5 5]」、「0xff」が格納されている。
このように、データ部 175fの各キャッシュライン部には、変形 Sボックス 1221の一行 に含まれてレ、る 8個の配列要素が格納されてレ、る。
(AES復号プログラム 234における適用)
パーソナルコンピュータ 200のメモリ部 203が記憶している AES復号プログラム 23 4において、上記と同様にしてもよい。
[0212] つまり、 AES復号プログラム 234は、逆変換変形 Sボックス 611に代えて、図 38に 示す変形 Sボックス 1221と同様に構成した逆変換変形 Sボックスを含むとしてもよい 。また、このとき、 AES復号プログラム 234の InvSubBytes処理モジュール 605は、 SubBytes処理モジュール 505dと同様に、 3ビットの左シフトの処理に代えて、 mod 2 56における値「177」の乗算の処理と、 1ビットの左シフトの処理とを含む。
[0213] 6.変形例(5)
コンテンツサーバ装置 100のメモリ部 103が記憶している AES喑号プログラム 133 の別の変形例について説明する。 AES暗号プログラム 133は、変形 Sボックス 511に代えて、図 41に示す変形 Sボッ タス 1311を含むとしてもよい。また、このとき、 AES暗号プログラム 133は、 SubBytes 処理モジュール 505に代えて、 SubBytes処理モジュール 505e (図示してレ、なレ、)を 含む。 SubBytes処理モジュール 505eは、 3ビットの左シフトの処理に代えて、 mod 2 56における乗算の処理と 1ビットの左シフトの処理と mod 512における加算の処理 とを含む。
[0214] (変形 Sボックス 1311)
変形 Sボックス 1311は、図 41に示すように、 512個の酉己歹 IJ要素 1331、 1321、 133 2、 1322、 1333、 1323、 1334、 1324、 ···、 1325、 ···、 1326、 ···、 1327、 ··· 、 1328、 ···から構成されている。
[0215] 変形 Sボックス 1311を構成する各配列要素は、図 41においては、表現の便宜上、 64行 X 8列のマトリックス状に配置されている。
変形 Sボックス 1311においては、その先頭に「0xff」を格納し、その後については、 図 34に示す変形 Sボックス 1121に格納されてレ、る各配列要素 S [XX]力 変形 Sボッ タス 1121における配置の順序を保ちながら、 1つ置きに格納されている。また、これ らの配列要素の間には、「0xf f」が格納されてレ、る。
[0216] ί列えば、変形 Sボックス 1311の第 1行の 8個の酉己歹 IJ要素 1331、 1321、 1332、 13 22、 1333、 1323、 1334、 1324は、それぞれ、「0xff」、値 S[0]、「0xff」、値 S[81 コ、「0xff」、値 S[162]、「0xff」、値 S[243]を有する。ここで、値 S[0]、値 S[81]、 値 S[162]、値 S[243]は、図 34に示す変形 Sボックス 1121の第 1行の先頭の 4個 の配列要素と同じものである。
[0217] また、変形 Sボックス 1311の第 2行の 8個の配列要素 ...、 1325、 ...、 1326、 ..
•、 1327、 ···、 1328は、それぞれ、「0xff」、値 S [68]、「0xff」、値 S[149]、「0xff 」、値 S[230]、「0xff」、値 S[55]を有する。ここで、値 S [68]、値 S [149]、値 S [23 0]、値 S[55]は、図 34に示す変形 Sボックス 1121の第 1行の後半の 4個の配列要 素と同じものである。
[0218] なお、ここでは、 S [XX]において、 XXは、 10進数による表示である。
(SubBytes処理モジュール 505e) SubBytes処理モジュール 505eによる SubBytes処理では、 128ビットのブロックデー タを受け取り、受け取った 128ビットのブロックデータを 16個の 8ビットの部分ブロック データに分け(8ビット X 16 = 128ビット)、図 42に示すように、 mod 256におレヽて、 各部分ブロックデータに値「177」を乗ずる(ステップ 1302)。こうして、 16個の部分ブ ロックデータのそれぞれについて、 8ビットの乗算値が生成される。次に、生成された 乗算値を 1ビットだけ左へシフトして 9ビットのシフトデータを生成する(ステップ 1303) 。こうして、 16個の乗算値のそれぞれについて、 9ビットのシフトデータが生成される。 次に、 mod 512において、生成された各 9ビットのシフトデータに、値 [ 1」を加算して 9ビットの加算値を生成する(ステップ S 1304)。次に、生成された各 9ビットの加算値 に、変形 Sボックス 1311の参照処理を施して、 8ビットデータを出力する(ステップ 13 05)。
[0219] なお、上述したように、 SubBytes処理モジュール 505eによる SubBytes処理において 、 16個の mod 256における乗算処理と、 16個の左シフト処理と、 16個の mod 51 2における加算処理と、 16個の変形 Sボックス 1311の参照処理とが行われる力 表 示を簡便にするために、図 42においては、これらの 16個の乗算処理、 16個のシフト 処理、 16個の加算処理及び 16個の参照処理のうち、 1個の乗算処理 1302、 1個の シフ卜処理 1303、 1個のカロ算処理 1304及び 1個の参照処理 1305力らなる糸且 1301 のみを示している。
[0220] このように、 16個の部分ブロックデータについて、 mod 256の乗算と、 1ビットの左 シフト処理と、 mod 512のカロ算と、変形 Sボックス 1311の参照処理とが施される。こ の結果、 16個の 8ビットデータが生成される。生成された 16個の 8ビットデータが連結 されて 128ビットのブロックデータが生成され出力される。
上記のように、 mod 256におレ、て、各部分ブロックデータに、値「177」を乗じるの は、変形例(4)において説明した通りである。また、 1ビットの左シフト処理を行うのは 、変形例(2)において説明した通りである。また、 mod 512において、加算を行うの は、変形例(2)において説明した通りである。
[0221] このように、各部分ブロックデータに、 mod 256におレ、て、値「177」を乗じ、さらに 、得られた乗算値に 1ビットの左シフト処理を施して、シフトデータを得、 mod 256に おいて、得られたシフトデータに値「1」を加算して加算値を得、得られた加算値をァ ドレスとして、変形 Sボックス 1311を参照することにより、各部分ブロックデータに適切 に対応する有効な配列要素 S [XX]が得られるのである。
[0222] なお、 SubBytes処理モジュール 505eは、 1ビットの左シフトの処理に代えて、 2倍の 乗算を行う乗算処理を含むとしてもよレヽ。
(データ部の一例)
データ部 175のキャッシュライン部 181、 182、 · · ·に、上述した SubBytes処理によ り、変形 Sボックス 1221の内容が格納された場合における一例を図 43にデータ部 1 75gとして示す。
[0223] データ部 175gの先頭から 64個のキャッシュライン部 181g、 182g、 · · ·には、変形 Sボックス 1311の内容がそのまま格納されている。
つまり、キャッシュライン部 181gには、配列要素 1351「0xff」、配列要素 1341「S [ 0]」、配列要素 1352「0xff」、配列要素 1342「S [81]」、配列要素 1352「0xff」、配 列要素 1343「S [162]」、配列要素 1353「0xff」、配列要素 1344「S [243]」が格納 されている。
[0224] また、キャッシュライン部 182gには、「0xff」、配列要素 1345「S [68]」、「0xff」、配 列要素 1346「S [149]」、「0xff」、配列要素 1347「S [230]」、「0xff」、配列要素 13 48「S [55] Jが格納されてレ、る。
このように、データ部 175gの各キャッシュライン部には、変形 Sボックス 1311の一 行に含まれてレ、る 8個の配列要素が格納されてレ、る。
(AES復号プログラム 234における適用)
パーソナルコンピュータ 200のメモリ部 203が記憶している AES復号プログラム 23 4において、上記と同様にしてもよい。
[0225] つまり、 AES復号プログラム 234は、逆変換変形 Sボックス 611に代えて、図 41に 示す変形 Sボックス 1311と同様に構成した逆変換変形 Sボックスを含むとしてもよい 。また、このとき、 AES復号プログラム 234の InvSubBytes処理モジュール 605は、 SubBytes処理モジュール 505eと同様に、 3ビットの左シフトの処理に代えて、 mod 2 56におけるィ直「177」の乗算の処理と、 1ビットの左シフトの処理と、 mod 512におけ る値「1」の加算の処理とを含む。
[0226] 7·変形例(6)
コンテンツサーバ装置 100のメモリ部 103が記憶している AES暗号プログラム 133 の別の変形例について説明する。
AES喑号プログラム 133は、変形 Sボックス 511に代えて、図 44に示す変形 Sボッ タス 1421及び図 45に示す変形 Sボックス 1441を含むとしてもよレ、。また、このとき、 AES喑号プログラム 133は、 SubBytes処理モジュール 505に代えて、 SubBytes処理 モジュール 505f (図示してレヽなレ、)を含む。 SubBytes処理モジュール 505fにつレ、て は、後述する。
[0227] (変形 Sボックス 1421)
変形 Sボックス 1421は、図 44に示すように、 256個の酉己歹 IJ要素 1431、 1432、 143 3、 1434、 1435、 1436、 1437、 1438、 ···力、ら構成されてレヽる。変形 Sボックス 14 21は、図 34に示す変形 Sボックス 1121と同じである。ここでは、変形 Sボックス 1421 についての説明を省略する。
[0228] (変形 Sボックス 1441)
変形 Sボックス 1441は、図 34に示す変形 Sボックス 1121と類似する考え方により 生成されたものであり、図 45に示すように、 256個の酉己歹 IJ要素 1451、 1452、 1453、 1454、 1455、 1456、 1457、 1458、 ···力ら構成されている。これらの酉己歹 IJ要素は 、配列番号「0」、「1」、「2」、「3」、 ···、「255」により識別されるものとする。
[0229] 変形 Sボックス 1441を構成する各配列要素は、図 45においては、表現の便宜上、 32行 X 8列のマトリックス状に配置されている。
第 1行の 8個の配列要素 1451、 ···、 1458は、それぞれ、値 S[0]、値 S[133]、値 S[10]、値 S[143]、値 S[20]、値 S[153]、値 S[30]、値 S[163]を有する。ここで 、値 S[0]、値 S[133]、値 S[10]、値 S[143]、値 S[20]、値 S[153]、値 S[30]、 値 S[163]は、上述の標準 Sボックス 380に含まれるものと同じである。なお、ここでは 、 S [XX]において、 XXは、 10進数による表示である。
[0230] また、第 2行の 8個の配列要素は、それぞれ、値 S [40]、値 S [173]、値 S [50]、値 S[183]、値 S[60]、値 S[193]、値 S [70]、値 S [203]を有する。ここで、値 S[40] 、値 S [173]、値 S [50]、値 S [183]、値 S [60]、値 S [193]、値 S [70]、値 S [203] は、上述の標準 Sボックス 380に含まれるものと同じである。ここでも、 S [XX]において 、 XXは、 10進数による表示である。
[0231] 第 3行から第 32行の各配列要素も、上述の標準 Sボックス 380に含まれる配列要素 と同じものである。ただし、図 45の変形 Sボックス 1441においては、第 3行から第 32 行の各配列要素の表示を省略してレ、る。
(変形 Sボックス 1441の配列規則)
変形 Sボックス 1441には、次に説明する規則に従って、上述の標準 Sボックス 380 に格納されている各配列要素が格納されている。この配列規則は、図 34に示す変形 Sボックス 1121における配列規則と類似のものである。
[0232] ここで、整数である 256個の入力値 B (0、 1、 2、 · · ·、 255)のそれぞれに対して、 B
X 77 mod 256を計算する。各入力値 Bと対応する計算結果とを、図 46に示す対 応表 1442に示す。
対応表 1442は、 256個の人カイ直 Bと、 B X 77 mod 256による計算結果とを対応 付けて表示するものである。ただし、図 46に示す対応表 1442においては、紙面の都 合上の理由により、全ての Bの値に対応する計算結果を表示している訳ではなぐそ の一部分のみを表示し、その他については、表示を省略している。
[0233] ここで、例えば、入力値 B = 0に対する B X 77 mod 256の計算結果は、「0」であ り、入力値 B = 133に対する計算結果は、「1」であり、入力値 B = 10に対する計算結 果は、「2」であり、入力値 B = 143に対する計算結果は、「3」であり、入力値 B = 20 に対する計算結果は、「4」である。
一例として、変形 Sボックス 1441の配列番号「0」により示される配列要素 1451に 格納する標準 Sボックス 380の配列要素を次のようにして決定する。配列番号「0」と 同じ値を有する計算結果「0」を対応表 1442から探し、計算結果に対応する入力値 B「0」を取得する。次に、取得した入力値 B「0」を配列番号とする配列要素 S [0]を、 変形 Sボックス 1441の配列番号「0」により示される配列要素 1451の値とする。
[0234] また、別の一例として、変形 Sボックス 1441の配列番号「1」により示される配列要素 1452に格納する標準 Sボックス 380の配列要素を次のようにして決定する。配列番 号「1」と同じ値を有する計算結果「1」を対応表 1442から探し、計算結果に対応する 入力値 B「 133」を取得する。次に、取得した入力値 B「 133」を配列番号とする配列 要素 S [133]を、変形 Sボックス 1441の配列番号「1」により示される配列要素 1452 の値とする。
[0235] さらに、別の一例として、変形 Sボックス 1441の配列番号「2」により示される配列要 素 1453に格納する標準 Sボックス 380の配列要素を次のようにして決定する。配列 番号「2」と同じ値を有する計算結果「2」を対応表 1442から探し、計算結果に対応す る入力値 B「10」を取得する。次に、取得した入力値 B「10」を配列番号とする配列要 素 S [10]を、変形 Sボックス 1441の配列番号「2」により示される配列要素 1453の値 とする。
[0236] 以下は同様である。
このように、変形 Sボックス 1441では、上述した規則により、標準 Sボックス 380に含 まれる配列要素が配置されてレ、る。
(SubBytes処理モジュール 505f)
SubBytes処理モジュール 505fによる SubBytes処理では、 128ビットのブロックデー タを受け取り、受け取った 128ビットのブロックデータを 16個の 8ビットの部分ブロック データに分ける(8ビット X 16 = 128ビット)。
[0237] 次に、各部分ブロックデータについて、図 47に示すように、以下に示す処理を行う
(a)乱数 Rを生成する。乱数 Rは、値「0」及び値「1」のいずれかである(ステップ 14
02)。
(b)生成した乱数 Rが、値「0」及び値「1」のいずれであるかを判断する(ステップ 14
03)。
[0238] (c)生成した乱数 R力 値「0」である場合に、 mod 256において、当該部分ブロッ クデータに値「177」を乗ずる(ステップ 1406)。こうして、 8ビットの乗算値が生成され る。次に、生成された 8ビットの乗算値に、変形 Sボックス 1421の参照処理を施して、 8ビットデータを出力する(ステップ 1407)。
(d)生成した乱数 R力 値「1」である場合に、 mod 256において、当該部分ブロッ クデータに値「77」を乗ずる(ステップ 1408)。こうして、 8ビットの乗算値が生成される 。次に、生成された 8ビットの乗算値に、変形 Sボックス 1441の参照処理を施して、 8 ビットデータを出力する(ステップ 1409)。
[0239] なお、上述したように、 SubBytes処理モジュール 505fによる SubBytes処理において 、乱数生成処理を 16個と、乱数判断処理を 16個と、「mod 256における 177との乗 算処理」及び「mod 256における 77との乗算処理」のいずれかを 16個と、「変形 S ボックス 1421の参照処理」及び「変形 Sボックス 1441の参照処理」のいずれかを 16 個とが行われるが、表示を簡便にするために、図 47においては、 1個の乱数生成処 理 1402と、 1個の舌 L数半 IJ断処理 1403と、「1個の mod 256における 177との乗算 処理 1406及び 1個の変形 Sボックス 1421の参照処理 1407」と、「1個の mod 256 における 77との乗算処理 1408及び 1個の変形 Sボックス 1441の参照処理 1409」と 力、らなる組 1401のみを示している。
[0240] このように、 16個の部分ブロックデータについて、 mod 256の 177の乗算又は 77 の乗算と、変形 Sボックス 1421又は 1441の参照処理とが施される。この結果、 16個 の 8ビットデータが生成される。生成された 16個の 8ビットデータが連結されて 128ビ ットのブロックデータが生成され出力される。
このように、各部分ブロックデータに、生成した乱数により、 mod 256における、値 「177」の乗算又は値「77」の乗算を行レ、、それぞれの場合について、変形 Sボックス 1421又は 1441を参照することにより、各部分ブロックデータに適切に対応する有効 な配列要素 S [XX]が得られるのである。
(データ部の一例)
データ部 175のキャッシュライン部 181、 182、 · · ·に、上述した SubBytes処理によ り、変形 Sボックス 1421の内容が格納された場合における一例を図 48にデータ部 1 75hとして示す。また、変形 Sボックス 1441の内容が格納された場合における一例を 図 49にデータ部 175iとして示す。
(AES復号プログラム 234における適用)
パーソナルコンピュータ 200のメモリ部 203が記憶している AES復号プログラム 23 4において、上記と同様にしてもよい。 [0241] つまり、 AES復号プログラム 234は、逆変換変形 Sボックス 611に代えて、図 44に 示す変形 Sボックス 1421と同様に構成した逆変換変形 Sボックスと、図 45に示す変 形 Sボックス 1441と同様に構成した逆変換変形 Sボックスとを含むとしてもよい。また 、このとき、 AES復号プログラム 234の InvSubBytes処理モジュール 605は、 SubBytes 処理モジュール 505fと同様に、 3ビットの左シフトの処理に代えて、図 47に示す各ス テツプの処理を含む。
[0242] 8.変形例(7)
コンテンツサーバ装置 100のメモリ部 103が記憶している AES喑号プログラム 133 の別の変形例について説明する。
AES喑号プログラム 133は、 SubBytes処理モジュール 505に代えて、図 50に示す SubBytes処理モジュール 1501を含むとしてもよレヽ。
[0243] SubBytes処理モジュール 1501では、通常の SubBytes処理と同様に、 Sボックスの 参照演算が 16回行われる。さらに、 Sボックスの参照演算を行う前、もしくは後(図 50 では、後の場合について示している)に、キャッシュ部 162のデータ部 175に格納さ れてレ、る全ての配列要素を消去する処理を行う。
なお、キャッシュ部 162に格納されているデータを消去する方法としては、特別な命 令を使用する方法(Pentium (登録商標)の場合、 "INVD"命令や" WBINVD"命 令)や、メモリ部 103上にある暗号処理と関係ないデータにアクセスすることによって、 そのデータをキャッシュ部 162にコピーさせ、キャッシュ部 162に既にある配列要素を 追い出す方法などがある。
[0244] SubBytes処理モジュール 1501では、図 50に示すように、 Sボックスの参照処理を 行い(ステップ S301)、次に、上記で説明したような方法で、キャッシュ部 162に格納 されている配列要素を消去する処理を行う(ステップ S302)。
その後、ステップ S303〜S314におレヽて、ステップ S301及び S302と同様に、 Sボ ッタスの参照処理 i (iは 2から 16の自然数)の後に、キャッシュ部 162に格納されてい る配列要素を消去する処理を繰り返す。
[0245] なお、上記の変形例においては、 Sボックスの配列要素にアクセスした後(又はァク セスする前)にキャッシュクリア処理を呼ぶようにしていた力 それに限るものではない 例えば、カウンタが 0および Nr—lのときにだけ、各 16回のテーブル参照演算の後 には、キャッシュクリア処理を設け、他のカウンタ値(1から Nr— 2)の場合は、キヤッシ ユタリア処理をしなくても良レ、。これは、タイミング攻撃は、平文および暗号文に近い S ubBytes処理 (例えば、 1段目や Nr_ 1段目)にある鍵を推定する際に必要な計算 量の方が、平文および暗号文に遠い SubBytes処理(例えば、(Nr_ l) /2段目)に ある鍵を推定する際に必要な計算量よりも多いことを利用している。
[0246] このように、ある特定の攻撃がされ易い部分 (例えば、カウンタ値により判断される) にのみ、変形 SubBytes処理を施すことにより、タイミング攻撃に対する耐性は、上記 の変形例よりも劣るが、キャッシュクリア処理の回数は減るため、処理速度が向上する 効果を有する。
9.その他の変形例
なお、本発明を上記の実施の形態に基づいて説明してきたが、本発明は、上記の 実施の形態に限定されないのはもちろんである。以下のような場合も本発明に含まれ る。
[0247] (1)コンピュータプログラムを処理する機器に含まれるプロセッサは、図 11の構成に 限るものではない。例えば、マイクロプロセッサ 101は、キャッシュ部 162の替わりに、 高速でより容量の小さい 1次キャッシュ部 162aとより低速でより容量の大きな 2次キヤ ッシュ部 162bを有してレ、ても良レ、。
この場合、演算部 161は、最初に、 1次キャッシュ部 162aにデータを読みに行き、 該当データが 1次キャッシュ部 162aになかった場合は、 2次キャッシュ部 162bに読 みに行く。この場合、テーブル要素が 1次キャッシュ部 162aから取得される場合と、 2 次キャッシュ部 162bから取得される場合と、メモリ部 103から取得される場合と、の 3 通りのケースがあり、タイミング攻撃は、入力メッセージに依存して、全体の処理時間 が同様に変化することを利用する。
[0248] なお、マイクロプロセッサ 101は、さらに、 3次キャッシュ部などを有していても良い。
(2)上記の実施の形態及び変形例において、マイクロプロセッサは、キャッシュ部を 備えるとしている力 本発明は、これに限定されることはなレ、。マイクロプロセッサの内 部にキャッシュ部を備えることはなぐコンピュータシステムがマイクロプロセッサとキヤ ッシュ部とメモリ部とを含むとしてもよい。
[0249] (3)上記の実施の形態及び変形例において、変形 Sボックス 511は、 AES暗号プ ログラム 133に含まれるとしている力 これには限定されない。
AES喑号プログラム 133に含まれる各モジュール(コンピュータプログラム)と、変形 Sボックス 511とは、別々のデータ集合(ファイル)を構成しているとしてもよレ、。 AES 復号プログラム 134についても同様である。
[0250] (4)上記の実施の形態及び変形例にぉレ、て、各変形 Sボックスは、標準 Sボックス には存在しないダミーデータとして「0xff」を含むとしている力 roxffjには限定され なレ、。 「0xff」の代わりに他のデータを含むとしてもよレ、。例えば、各変形 Sボックスは 、「0xff」に代えて、乱数生成器により生成した乱数を含むとしてもよいし、標準 Sボッ タスに存在するデータを含むとしてもよレ、。
[0251] (5)上記の実施の形態では、図 8に示すように、 Round処理モジュール 503は、命 令コード群 S131、 S132、 S133及び S134を含んで構成されており、これらの命令コ ード群は、 Round処理モジュール 503内において、この順序で並べられ、この順序に より、各命令コード群が実行されるとしている力 これには限定されない。
例えば、 Round処理モジュール 503に代えて、変形 Round処理モジュールは、命令 コード群 S132、 S133、 S134及び S131を含んで構成されており、これらの命令コー ド群は、変形 Round処理モジュール内において、この順序で並べられ、この順序によ り、各命令コード群が実行されるとしてもよい。この場合に、暗号メインモジュールは、 命令コード群 S131を呼び出し、その後、所定回数だけ、変形 Round処理モジュール を呼び出す。
[0252] (6)上記の実施の形態では、マイクロプロセッサ 101のキャッシュ部は、 64ビット長 の各キャッシュライン部を備えているとしている力 キャッシュライン部のビット長はこれ には限定されず、他の長さの各キャッシュライン部を有しているとしてもよい。この場 合においても上記に説明したことが実現できる。
(7)上記の実施の形態では、喑号アルゴリズムとして AESに適用するとしている力 これには限定されなレヽ。例えば、 DES (Data Encryption Stanadard)等の喑号ァルゴ リズムに適用するとしてもよい。
[0253] また、本発明は、喑号ィ匕及び復号にのみ適用できるのではない。具体的には、情 報の改ざんチェックやデジタル署名などの用途に用いても良い。
(8)上記の各装置は、具体的には、マイクロプロセッサ、 ROM、 RAM,ハードディ スクユニット、ディスプレイユニット、キーボード、マウスなど力も構成されるコンピュータ システムである。前記 RAM又は前記ハードディスクユニットには、コンピュータプログ ラムが記憶されている。ここで、コンピュータプログラムは、所定の機能を達成するた めに、コンピュータに対する指令を示す命令コードが複数個組み合わされて構成さ れたものである。前記マイクロプロセッサ力 前記コンピュータプログラムに従って動 作することにより、各装置は、その機能を達成する。つまり、前記マイクロプロセッサは 、前記コンピュータプログラムに含まれる各命令を 1個ずつ読み出し、読み出した命 令を解読し、解読結果に従って動作する。
[0254] (9)上記の各装置を構成する構成要素の一部又は全部は、 1個のシステム LSI (
Large Scale Integration :大規模集積回路)から構成されているとしてもよレ、。システム LSIは、複数の構成部を 1個のチップ上に集積して製造された超多機能 LSIであり、 具体的には、マイクロプロセッサ、 R〇M、 RAMなどを含んで構成されるコンピュータ システムである。前記 RAMには、コンピュータプログラムが記憶されている。前記マイ クロプロセッサ力 前記コンピュータプログラムに従って動作することにより、システムし SIは、その機能を達成する。
[0255] (10)上記の各装置を構成する構成要素の一部又は全部は、各装置に脱着可能な ICカード又は単体のモジュールから構成されているとしてもよい。前記 ICカード又は 前記モジュールは、マイクロプロセッサ、 ROM、 RAM,など力 構成されるコンビュ ータシステムである。前記 ICカード又は前記モジュールは、上記の超多機能 LSIを 含むとしてもよレ、。マイクロプロセッサ力 コンピュータプログラムに従って動作するこ とにより、前記 ICカード又は前記モジュールは、その機能を達成する。この ICカード 又はこのモジュールは、耐タンパ性を有するとしてもよレ、。
[0256] (11)本発明は、上記に示す方法であるとしてもよレ、。また、これらの方法を 5ンピュ ータにより実現するコンピュータプログラムであるとしてもよいし、前記コンピュータプ ログラムからなるデジタル信号であるとしてもよい。
また、本発明は、前記コンピュータプログラム又は前記デジタル信号をコンピュータ 読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、 CD— RO M、 MO、 DVD、 DVD-ROM, DVD -RAM, BD (Blu-ray Disc)、半導体メ モリなど、に記録したものとしてもよい。また、これらの記録媒体に記録されている前 記コンピュータプログラム又は前記デジタル信号であるとしてもよい。
[0257] また、本発明は、前記コンピュータプログラム又は前記デジタル信号を、電気通信 回線、無線又は有線通信回線、インターネットを代表とするネットワーク、データ放送 等を経由して伝送するものとしてもよい。
また、本発明は、マイクロプロセッサとメモリとを備えたコンピュータシステムであって 、前記メモリは、上記コンピュータプログラムを記憶しており、前記マイクロプロセッサ は、前記コンピュータプログラムに従って動作するとしてもよい。
[0258] また、前記プログラム又は前記デジタル信号を前記記録媒体に記録して移送する ことにより、又は前記プログラム又は前記デジタル信号を前記ネットワーク等を経由し て移送することにより、独立した他のコンピュータシステムにより実施するとしてもよい
(12)上記実施の形態及び上記変形例をそれぞれ組み合わせるとしてもよい。 産業上の利用可能性
[0259] 本発明に力かるコンピュータシステムは、処理時間を観測するタイミング攻撃に対し て耐性を高めることが出来るため、情報を秘密に扱う必要があるあらゆる産業におい て、経営的に、また継続的及び反復的に、使用すること力 Sできる。また、本発明を構 成する各装置は、電器機器製造産業において、経営的に、また継続的及び反復的 に、製造し、販売することができる。

Claims

請求の範囲
[1] 平文又は暗号文に係る部分データを対応する変換データに変換するプロセスを経 て、平文又は暗号文を喑号ィ匕又は復号するコンピュータシステムであって、 部分データに対応する変換データを含む変換表と、前記プロセスにおいて、前記 変換表を用いて部分データに対応する変換データを取得する複数の命令を含むコ ンピュータプログラムとを記憶している主メモリ部と、
所定長のライン記憶領域を含むキャッシュメモリ部と、
前記主メモリ部に記憶されている前記コンピュータプログラムから 1個ずつ命令を読 み出し、解読し、その解読結果に応じて動作する実行部とを備え、
前記実行部は、前記変換表に含まれる変換データを取得する際に、最初に、前記 キャッシュメモリ部の前記ライン記憶領域から当該変換データの取得を試み、前記ラ イン記憶領域に当該変換データが存在しない場合に、前記主メモリ部から当該変換 データを取得し、取得した変換データを含む前記所定長の包含データを前記ライン 記憶領域に書き込み、
前記変換表は、前記所定長のライン表領域を有し、前記ライン表領域の所定位置 において、部分データに対応する 1個の変換データを含み、前記ライン表領域の他 の位置において、前記変換に無関係のデータを含み、
前記コンピュータプログラムは、
部分データを取得する取得命令群と、
取得した部分データを用いて、対応する前記変換データの前記変換表における位 置を算出する演算命令群と、
前記変換表から、算出された前記位置に存する前記変換データを読み出す読出 命令群とを含む
ことを特徴とするコンピュータシステム。
[2] 前記変換表は、前記部分データが有する値に依存する位置において、前記変換 データを含み、
前記演算命令群は、取得した部分データに演算を施すことにより、対応する前記変 換データの前記変換表における位置を算出する ことを特徴とする請求項 1に記載のコンピュータシステム。
[3] 前記所定長は、前記変換データの長さの整数 w倍であり、
前記ライン表領域は、前記所定位置において、前記変換データを含み、その他の 全ての位置において、前記変換に無関係のデータを含み、
前記演算命令群は、整数 wによる乗算を用いて、対応する前記変換データの前記 変換表における位置を算出する
ことを特徴とする請求項 2に記載のコンピュータシステム。
[4] 前記所定位置は、前記ライン表領域の先頭位置であり、
前記演算命令群は、取得した部分データに整数 wを乗ずることにより、対応する前 記変換データの前記変換表における位置を算出する
ことを特徴とする請求項 3に記載のコンピュータシステム。
[5] 前記ライン表領域は、
前記所定位置において前記変換データを含み、
さらに、他の所定位置において、他の部分データに対応する他の変換データを含 み、
その他の全ての位置において、前記変換に無関係のデータを含む
ことを特徴とする請求項 2に記載のコンピュータシステム。
[6] 前記所定長は、前記変換データの長さの整数 w倍であり、
前記所定位置は、前記ライン表領域の先頭位置であり、
前記他の所定位置は、前記ライン表領域を 2等分した後半領域の先頭位置であり、 前記演算命令群は、取得した部分データに整数 w/2を乗ずることにより、対応す る前記変換データの前記変換表における位置を算出する
ことを特徴とする請求項 5に記載のコンピュータシステム。
[7] 前記所定長は、前記変換データの長さの整数 w倍であり、
前記所定位置は、前記ライン表領域の先頭から整数 X番目の位置であり、 前記他の所定位置は、前記ライン表領域を 2等分した後半領域の先頭から整数 X 番目の位置であり、
前記演算命令群は、取得した部分データに整数 wZ2を乗じ、さらに整数 Xを加算 することにより、対応する前記変換データの前記変換表における位置を算出する ことを特徴とする請求項 5に記載のコンピュータシステム。
[8] 平文又は暗号文に係る部分データを対応する変換データに変換するプロセスを経 て、平文又は暗号文を喑号ィ匕又は復号するコンピュータシステムであって、 部分データに対応する変換データを含む変換表と、前記プロセスにおいて、前記 変換表を用いて部分データに対応する変換データを取得する複数の命令を含むコ ンピュータプログラムとを記憶している主メモリ部と、
所定長のライン記憶領域を含むキャッシュメモリ部と、
前記主メモリ部に記憶されている前記コンピュータプログラムから 1個ずつ命令を読 み出し、解読し、その解読結果に応じて動作する実行部とを備え、
前記実行部は、前記変換表に含まれる変換データを取得する際に、最初に、前記 キャッシュメモリ部の前記ライン記憶領域から当該変換データの取得を試み、前記ラ イン記憶領域に当該変換データが存在しない場合に、前記主メモリ部から当該変換 データを取得し、取得した変換データを含む前記所定長の包含データを前記ライン 記憶領域に書き込み、
前記変換表は、前記所定長のライン表領域を有し、前記ライン表領域の所定位置 において、部分データに対応する 1個の変換データを含み、
前記コンピュータプログラムは、
部分データを取得する取得命令群と、
取得した部分データを用いて、対応する前記変換データの前記変換表における位 置を算出する演算命令群と、
前記変換表から、算出された前記位置に存する前記変換データを読み出す読出 命令群とを含み、
前記所定位置は、前記部分データに、所定演算を施して得られる位置であり、 前記演算命令群は、前記部分データに、前記所定演算を施して、対応する前記変 換データの前記変換表における位置を算出する
ことを特徴とする請求項 1に記載のコンピュータシステム。
[9] 前記所定演算は、 mod zにおける前記部分データと奇数との乗算であり、 zは、部分データが取り得る値の種類の数である
ことを特徴とする請求項 8に記載のコンピュータシステム。
平文又は暗号文に係る部分データを対応する変換データに変換するプロセスを経 て、平文又は暗号文を喑号ィ匕又は復号するコンピュータシステムであって、
部分データに対応する変換データを含む第 1変換表と、部分データに対応する変 換データを含む第 2変換表と、前記プロセスにおいて、前記第 1変換表及び前記第 2 変換表を用いて部分データに対応する変換データを取得する複数の命令を含むコ ンピュータプログラムとを記憶している主メモリ部と、
所定長のライン記憶領域を含むキャッシュメモリ部と、
前記主メモリ部に記憶されている前記コンピュータプログラムから 1個ずつ命令を読 み出し、解読し、その解読結果に応じて動作する実行部とを備え、
前記実行部は、前記第 1変換表及び前記第 2変換表に含まれる変換データを取得 する際に、最初に、前記キャッシュメモリ部の前記ライン記憶領域力 当該変換デー タの取得を試み、前記ライン記憶領域に当該変換データが存在しない場合に、前記 主メモリ部から当該変換データを取得し、取得した変換データを含む前記所定長の 包含データを前記ライン記憶領域に書き込み、
前記第 1変換表及び前記第 2変換表は、それぞれ、前記所定長のライン表領域を 有し、各ライン表領域の所定位置において、部分データに対応する 1個の変換デー タを含み、
前記コンピュータプログラムは、
部分データを取得する取得命令群と、
取得した部分データを用いて、対応する前記変換データの前記変換表における位 置を算出する演算命令群と、
前記変換表から、算出された前記位置に存する前記変換データを読み出す読出 命令群とを含み、
前記第 1変換表における前記所定位置は、前記部分データに、第 1演算を施して 得られる位置であり、
前記第 2変換表における前記所定位置は、前記部分データに、第 2演算を施して 得られる位置であり、
前記演算命令群は、
変換の都度、前記第 1変換表及び前記第 2変換表のいずれを使用するかを決定す る決定命令と、
前記部分データに、決定された変換表に対応する前記第 1演算又は前記第 2演算 を施して、前記変換データの決定した前記変換表における位置を算出する算出命令 を含む
ことを特徴とする請求項 1に記載のコンピュータシステム。
[11] 前記第 1演算は、 mod zにおける前記部分データと第 1の奇数との乗算であり、 前記第 2演算は、 mod zにおける前記部分データと第 2の奇数との乗算であり、 zは、部分データが取り得る値の種類の数であり、
前記決定命令は、乱数を発生させ、発生させた乱数により、いずれの変換表を用い るかを決定する
ことを特徴とする請求項 10に記載のコンピュータシステム。
[12] 平文又は暗号文に係る部分データを対応する変換データに変換するプロセスを経 て、平文又は暗号文を喑号ィ匕又は復号するコンピュータシステムにおいて用いられ るコンピュータプログラムであって、
前記コンピュータシステムは、
部分データに対応する変換データを含む変換表と、前記プロセスにおいて、前記 変換表を用いて部分データに対応する変換データを取得する複数の命令を含むコ ンピュータプログラムとを記憶している主メモリ部と、
所定長のライン記憶領域を含むキャッシュメモリ部と、
前記主メモリ部に記憶されている前記コンピュータプログラムから 1個ずつ命令を読 み出し、解読し、その解読結果に応じて動作する実行部とを備え、
前記実行部は、前記変換表に含まれる変換データを取得する際に、最初に、前記 キャッシュメモリ部の前記ライン記憶領域から当該変換データの取得を試み、前記ラ イン記憶領域に当該変換データが存在しない場合に、前記主メモリ部から当該変換 データを取得し、取得した変換データを含む前記所定長の包含データを前記ライン 記憶領域に書き込み、
前記変換表は、前記所定長のライン表領域を有し、前記ライン表領域の所定位置 において、部分データに対応する 1個の変換データを含み、前記ライン表領域の他 の位置において、前記変換に無関係のデータを含み、
前記コンピュータプログラムは、
部分データを取得する取得命令群と、
取得した部分データを用いて、対応する前記変換データの前記変換表における位 置を算出する演算命令群と、
前記変換表から、算出された前記位置に存する前記変換データを読み出す読出 命令群とを含む
ことを特徴とするコンピュータプログラム。
[13] 前記コンピュータプログラムは、コンピュータ読み取り可能な記録媒体に記録されて いる
ことを特徴とする請求項 12に記載のコンピュータプログラム。
[14] 前記コンピュータプログラムは、搬送波に乗せられて送信される
ことを特徴とする請求項 12に記載のコンピュータプログラム。
[15] 平文又は暗号文に係る部分データを対応する変換データに変換するプロセスを経 て、平文又は暗号文を喑号ィ匕又は復号するコンピュータシステムにおいて用いられ る方法であって、
前記コンピュータシステムは、
部分データに対応する変換データを含む変換表と、前記プロセスにおいて、前記 変換表を用いて部分データに対応する変換データを取得する複数の命令を含むコ ンピュータプログラムとを記憶している主メモリ部と、
所定長のライン記憶領域を含むキャッシュメモリ部と、
前記主メモリ部に記憶されている前記コンピュータプログラムから 1個ずつ命令を読 み出し、解読し、その解読結果に応じて動作する実行部とを備え、
前記実行部は、前記変換表に含まれる変換データを取得する際に、最初に、前記 キャッシュメモリ部の前記ライン記憶領域から当該変換データの取得を試み、前記ラ イン記憶領域に当該変換データが存在しない場合に、前記主メモリ部から当該変換 データを取得し、取得した変換データを含む前記所定長の包含データを前記ライン 記憶領域に書き込み、
前記変換表は、前記所定長のライン表領域を有し、前記ライン表領域の所定位置 において、部分データに対応する 1個の変換データを含み、前記ライン表領域の他 の位置において、前記変換に無関係のデータを含み、
前記方法は、
前記コンピュータプログラムにより、部分データを取得するステップと、
前記コンピュータプログラムにより、取得した部分データを用いて、対応する前記変 換データの前記変換表における位置を算出するステップと、
前記コンピュータプログラムにより、前記変換表から、算出された前記位置に存する 前記変換データを読み出すステップとを含む
ことを特徴とする方法。
PCT/JP2005/007319 2004-04-26 2005-04-15 暗号又は復号を行うコンピュータシステム及びコンピュータプログラム WO2005103908A1 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
EP05730638A EP1764698A1 (en) 2004-04-26 2005-04-15 Computer system and computer program executing encryption or decryption
US11/578,837 US8054967B2 (en) 2004-04-26 2005-04-15 Computer system and computer program executing encryption or decryption
JP2006512522A JP4701166B2 (ja) 2004-04-26 2005-04-15 暗号又は復号を行うコンピュータシステム及びコンピュータプログラム

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2004129284 2004-04-26
JP2004-129284 2004-04-26

Publications (1)

Publication Number Publication Date
WO2005103908A1 true WO2005103908A1 (ja) 2005-11-03

Family

ID=35197160

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2005/007319 WO2005103908A1 (ja) 2004-04-26 2005-04-15 暗号又は復号を行うコンピュータシステム及びコンピュータプログラム

Country Status (5)

Country Link
US (1) US8054967B2 (ja)
EP (1) EP1764698A1 (ja)
JP (1) JP4701166B2 (ja)
CN (1) CN100416519C (ja)
WO (1) WO2005103908A1 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011175039A (ja) * 2010-02-23 2011-09-08 Toshiba Corp 暗号化装置および復号装置
JP2013246678A (ja) * 2012-05-28 2013-12-09 Kddi Corp 記憶装置、記憶媒体、アクセスパターンの秘匿方法およびプログラム
US20180316499A1 (en) * 2017-04-28 2018-11-01 Samsung Sds Co., Ltd. Apparatus and method for performing operation being secure against side channel attack
US11119930B2 (en) 2018-06-06 2021-09-14 Fujitsu Limited Arithmetic processing apparatus and control method for arithmetic processing apparatus

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2838210B1 (fr) * 2002-04-03 2005-11-04 Gemplus Card Int Procede cryptographique protege contre les attaques de type a canal cache
GB0211812D0 (en) * 2002-05-23 2002-07-03 Koninkl Philips Electronics Nv S-box encryption in block cipher implementations
US7664173B2 (en) * 2004-06-07 2010-02-16 Nahava Inc. Method and apparatus for cached adaptive transforms for compressing data streams, computing similarity, and recognizing patterns
JP4989055B2 (ja) * 2005-08-31 2012-08-01 株式会社富士通ビー・エス・シー 文字コード暗号処理プログラム、および文字コード暗号処理方法
US20080052530A1 (en) * 2006-02-16 2008-02-28 International Business Machines Corporation System and method to provide CPU smoothing of cryptographic function timings
US8607350B2 (en) * 2006-03-30 2013-12-10 International Business Machines Corporation Sovereign information sharing service
JP5060119B2 (ja) * 2006-12-19 2012-10-31 株式会社富士通ビー・エス・シー 暗号処理プログラム、暗号処理方法および暗号処理装置
US7949130B2 (en) 2006-12-28 2011-05-24 Intel Corporation Architecture and instruction set for implementing advanced encryption standard (AES)
JP4962335B2 (ja) * 2008-02-04 2012-06-27 富士通株式会社 埋込みデータを復元するための方法
US8280040B2 (en) * 2009-02-04 2012-10-02 Globalfoundries Inc. Processor instructions for improved AES encryption and decryption
US8958554B2 (en) * 2009-11-30 2015-02-17 Red Hat, Inc. Unicode-compatible stream cipher
DE102010010851A1 (de) * 2010-03-10 2011-09-15 Giesecke & Devrient Gmbh Ausspähungsschutz bei der Ausführung einer Operationssequenz in einem tragbaren Datenträger
CN101887397B (zh) * 2010-06-03 2011-12-28 复旦大学 一种抗时间驱动缓存攻击的硬件改进结构
JP5755970B2 (ja) * 2011-08-26 2015-07-29 株式会社東芝 演算装置
US9239926B2 (en) 2012-06-29 2016-01-19 International Business Machines Corporation Static analysis for discovery of timing attack vulnerabilities in a computer software application
US9411735B2 (en) * 2014-04-15 2016-08-09 International Business Machines Corporation Counter-based wide fetch management
CN104811445B (zh) * 2015-04-20 2018-03-27 深圳市文鼎创数据科技有限公司 一种时间攻击安全性评估的方法及系统
JP6187624B1 (ja) * 2016-03-17 2017-08-30 富士電機株式会社 情報処理装置、情報処理方法及びプログラム

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004120307A (ja) * 2002-09-26 2004-04-15 Nec Corp 暗号装置及び暗号プログラム

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5497494A (en) * 1993-07-23 1996-03-05 International Business Machines Corporation Method for saving and restoring the state of a CPU executing code in protected mode
US5860106A (en) * 1995-07-13 1999-01-12 Intel Corporation Method and apparatus for dynamically adjusting power/performance characteristics of a memory subsystem
US5765194A (en) * 1996-05-01 1998-06-09 Hewlett-Packard Company Timing consistent dynamic compare with force miss circuit
US6061449A (en) * 1997-10-10 2000-05-09 General Instrument Corporation Secure processor with external memory using block chaining and block re-ordering
US6523118B1 (en) * 1998-06-29 2003-02-18 Koninklijke Philips Electronics N.V. Secure cache for instruction and data protection
DE69935913T2 (de) * 1998-07-02 2008-01-10 Cryptography Research Inc., San Francisco Leckresistente aktualisierung eines indexierten kryptographischen schlüssels
US7599491B2 (en) * 1999-01-11 2009-10-06 Certicom Corp. Method for strengthening the implementation of ECDSA against power analysis
US7360252B1 (en) * 1999-04-30 2008-04-15 Macrovision Corporation Method and apparatus for secure distribution of software
EP1247186B1 (de) * 2000-01-11 2007-10-17 Infineon Technologies AG Speicherzugriffsverfahren und schaltungsanordung
US7310706B1 (en) * 2001-06-01 2007-12-18 Mips Technologies, Inc. Random cache line refill
US7739521B2 (en) * 2003-09-18 2010-06-15 Intel Corporation Method of obscuring cryptographic computations

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004120307A (ja) * 2002-09-26 2004-04-15 Nec Corp 暗号装置及び暗号プログラム

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011175039A (ja) * 2010-02-23 2011-09-08 Toshiba Corp 暗号化装置および復号装置
JP2013246678A (ja) * 2012-05-28 2013-12-09 Kddi Corp 記憶装置、記憶媒体、アクセスパターンの秘匿方法およびプログラム
US20180316499A1 (en) * 2017-04-28 2018-11-01 Samsung Sds Co., Ltd. Apparatus and method for performing operation being secure against side channel attack
US10812260B2 (en) * 2017-04-28 2020-10-20 Samsung Sds Co., Ltd. Apparatus and method for performing operation being secure against side channel attack
US11119930B2 (en) 2018-06-06 2021-09-14 Fujitsu Limited Arithmetic processing apparatus and control method for arithmetic processing apparatus

Also Published As

Publication number Publication date
JPWO2005103908A1 (ja) 2007-08-30
EP1764698A1 (en) 2007-03-21
JP4701166B2 (ja) 2011-06-15
US8054967B2 (en) 2011-11-08
CN100416519C (zh) 2008-09-03
CN1977250A (zh) 2007-06-06
US20070237326A1 (en) 2007-10-11

Similar Documents

Publication Publication Date Title
JP4701166B2 (ja) 暗号又は復号を行うコンピュータシステム及びコンピュータプログラム
Kulsoom et al. An efficient and noise resistive selective image encryption scheme for gray images based on chaotic maps and DNA complementary rules
Zhang et al. Chaotic image encryption based on circular substitution box and key stream buffer
JP6017501B2 (ja) 暗号システム
US6917684B1 (en) Method of encryption and decryption with block number dependant key sets, each set having a different number of keys
JP5985123B1 (ja) 秘匿検索システム、管理装置、秘匿検索方法及び秘匿検索プログラム
JP4828517B2 (ja) プログラム変換装置及びプログラム実行装置
KR20010067121A (ko) 확대키 생성기, 암호/복호 장치, 확대키 생성 방법 및기억 매체
JP2001274786A (ja) コンテンツ情報伝送方法、コンテンツ情報記録方法、コンテンツ情報伝送装置、コンテンツ情報記録装置、伝送媒体、及び記録媒体
US7434898B2 (en) Computer system, computer program, and addition method
Wong et al. Embedding compression in chaos-based cryptography
CA2717622A1 (en) White-box implementation
CN110190951B (zh) 一种针对des算法l寄存器翻转的功耗攻击方法及系统
Alvarez et al. Analysis of security problems in a medical image encryption system
JP2007507742A (ja) 情報伝達システム、暗号装置及び復号装置
KR20180110550A (ko) 부채널 분석 방지를 위한 화이트박스 암호 방법 및 장치
JP5060079B2 (ja) 暗号処理プログラム
Mohamad Data hiding by using AES Algorithm
Corpuz et al. A modified approach of Blowfish algorithm based on S-box permutation using shuffle algorithm
Tu et al. Protecting secret documents via a sharing and hiding scheme
Adebayo et al. Data Privacy System Using Steganography and Cryptography
JP2007189597A (ja) 暗号化装置および暗号化方法、並びに復号化装置および復号化方法
JP2007171412A (ja) 鍵生成装置、暗号化装置、復号化装置、乗法型ナップザック暗号システム、乗法型ナップザック暗号復号方法およびプログラム
JP2002023624A (ja) ブロック暗号通信方法とその装置、及びブロック暗号通信プログラムを記録した記録媒体
WO2023242955A1 (ja) 秘匿情報処理システム、秘匿情報処理方法、及び秘匿情報処理プログラム

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A1

Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BW BY BZ CA CH CN CO CR CU CZ DE DK DM DZ EC EE EG ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KM KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NA NI NO NZ OM PG PH PL PT RO RU SC SD SE SG SK SL SM SY TJ TM TN TR TT TZ UA UG US UZ VC VN YU ZA ZM ZW

AL Designated countries for regional patents

Kind code of ref document: A1

Designated state(s): GM KE LS MW MZ NA SD SL SZ TZ UG ZM ZW AM AZ BY KG KZ MD RU TJ TM AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IS IT LT LU MC NL PL PT RO SE SI SK TR BF BJ CF CG CI CM GA GN GQ GW ML MR NE SN TD TG

121 Ep: the epo has been informed by wipo that ep was designated in this application
WWE Wipo information: entry into national phase

Ref document number: 11578837

Country of ref document: US

Ref document number: 2007237326

Country of ref document: US

WWE Wipo information: entry into national phase

Ref document number: 2006512522

Country of ref document: JP

NENP Non-entry into the national phase

Ref country code: DE

WWW Wipo information: withdrawn in national office

Country of ref document: DE

WWE Wipo information: entry into national phase

Ref document number: 2005730638

Country of ref document: EP

WWE Wipo information: entry into national phase

Ref document number: 200580021386.3

Country of ref document: CN

WWP Wipo information: published in national office

Ref document number: 2005730638

Country of ref document: EP

WWP Wipo information: published in national office

Ref document number: 11578837

Country of ref document: US