WO2007029330A1 - 擬似乱数生成装置 - Google Patents

擬似乱数生成装置 Download PDF

Info

Publication number
WO2007029330A1
WO2007029330A1 PCT/JP2005/016586 JP2005016586W WO2007029330A1 WO 2007029330 A1 WO2007029330 A1 WO 2007029330A1 JP 2005016586 W JP2005016586 W JP 2005016586W WO 2007029330 A1 WO2007029330 A1 WO 2007029330A1
Authority
WO
WIPO (PCT)
Prior art keywords
memory
word
value
address
pseudo
Prior art date
Application number
PCT/JP2005/016586
Other languages
English (en)
French (fr)
Inventor
Mitsuru Matsui
Original Assignee
Mitsubishi Denki Kabushiki Kaisha
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 Mitsubishi Denki Kabushiki Kaisha filed Critical Mitsubishi Denki Kabushiki Kaisha
Priority to US11/666,156 priority Critical patent/US8443020B2/en
Priority to PCT/JP2005/016586 priority patent/WO2007029330A1/ja
Priority to CN2005800349990A priority patent/CN101040306B/zh
Priority to JP2006515524A priority patent/JP4718455B2/ja
Priority to GB0708028A priority patent/GB2444567B/en
Publication of WO2007029330A1 publication Critical patent/WO2007029330A1/ja

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/58Random or pseudo-random number generators
    • G06F7/582Pseudo-random number generators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/58Random or pseudo-random number generators
    • G06F7/582Pseudo-random number generators
    • G06F7/586Pseudo-random number generators using an integer algorithm, e.g. using linear congruential method
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09CCIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
    • G09C1/00Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/065Encryption by serially and continuously modifying data stream elements, e.g. stream cipher systems, RC4, SEAL or A5/3
    • H04L9/0656Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher
    • H04L9/0662Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher with particular pseudorandom sequence generator
    • 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/12Details relating to cryptographic hardware or logic circuitry
    • 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 a pseudo-random number generation device, a pseudo-random number generation method, and a pseudo-random number generation program that generate pseudo-random numbers.
  • RC4 is a typical conventional technique for software-oriented stream ciphers. This R C4 analogism is not officially released. At present, however, there are many documents that have been analyzed for RC4, and details of the method are also disclosed (for example, Non-Patent Document 1).
  • FIG. 24 shows the RC4 algorithm. This algorithm also includes "A. Initialization”, “B. Key schedule”, and “C. Stream generation”. In FIG. 24, for example, “% 256” in the key schedule monole indicates the remainder divided by 256.
  • FIG. 25 is a diagram schematically showing each of “A initialization”, “B key schedule”, and “C stream” shown in FIG.
  • Non-patent literature 1 Source: Applied Cryptography, by Bruce Schneier, John Wiley & Sons, ISBN 0—471—11709—9
  • An object of the present invention is to provide a pseudo-random number generation device, a pseudo-random number generation method, and a pseudo-random number generation program that operate at high speed in a stream cryptosystem. It is another object of the present invention to provide a pseudo-random number generator, a pseudo-random number generation method, and a pseudo-random number generation program that are more secure than conventional stream cryptosystems.
  • pseudorandom number generator that generates pseudorandom numbers in units of words consisting of multiple bytes
  • a key memory for storing key information
  • a first memory S1 comprising a plurality of words and accessing word S1 [I] using address 1 (1 is an integer of 0 or more);
  • An initialization unit that sets word values for the respective words of the first memory S1 and the second memory S2, and sets initial values for the first internal memory and the second internal memory,
  • key scheduling is performed for the values of the keys set in the first memory S1 and the second memory S2, and stored in the first memory S1 and the second memory S2. And the key schedule part,
  • a stream generator that generates pseudo-random numbers by alternately using words stored in the first memory S1 and the second memory S2 that have been key-scheduled by the key schedule unit;
  • a first random number generator that generates an address of the first memory S1 from the value of the word in the first memory S1, and generates a pseudo-random number for the value of the word in the first memory S1 of the generated address;
  • a second random number generator for generating an address of the second memory S2 from the value of the word of the second memory S2, and generating a pseudo random number for the value of the word of the second memory S2 of the generated address; It is provided with.
  • the pseudo-random number generator of the present invention is
  • a pseudo-random number generator that generates pseudo-random numbers in units of several bytes, consisting of multiple words that store key-scheduled values, and using the address 1 (1 is an integer greater than or equal to 0), the word S1 A first memory S1 accessing [I];
  • a memory composed of the same number of words as the first memory S1, which has a plurality of word powers for storing key-scheduled values, and uses the address I to access the word S2 [I].
  • Second memory S2 to be
  • a stream generation unit that generates pseudo-random numbers by alternately using words stored in the first memory S1 and the second memory S2.
  • the pseudorandom number generator of the present invention is
  • pseudorandom number generator that generates pseudorandom numbers in units of words consisting of n (l ⁇ n ⁇ N, where N is an integer greater than or equal to 1) bytes.
  • a stream length memory for storing the stream length L of the random number to be generated
  • a fixed value memory for storing fixed values
  • a key memory for storing key information
  • An initial value memory for inputting and storing an initial value
  • a first memory S1 that also has 256 word power, and uses address 1 (1 is an integer from 0 to 255) to access word S1 [I];
  • a second memory S2 having the same number of word forces as the first memory S1 and accessing the word S2 [I] using the address I;
  • a first internal memory for storing the value of address I
  • a second internal memory for storing values in word units
  • the first internal memory value I is updated using the key information stored in the key memory and the initial value stored in the initial value memory, and the value in the first internal memory is used as the address I.
  • the first word in the first memory S1 Swaps the value of the nth byte of each word from the first word to the last word with the value of the nth byte of word S1 [I] at address I of the first memory S1, and then the value of the first internal memory Address I Swaps the value of the nth byte of each word from the first word to the last word of the second memory S2 with the value of the nth byte of the word S2 [I] at address I of the second memory S2.
  • a key scheduling unit that repeats swapping from the first to the Nth byte, and performs key scheduling for the words stored in the first memory S1 and the second memory S2,
  • a stream generator that generates pseudo-random numbers by alternately using words stored in the first memory S1 and the second memory S2 that have been key-scheduled by the key schedule unit;
  • the pseudorandom number generator of the present invention is
  • pseudorandom number generator that generates pseudorandom numbers in units of words consisting of n (l ⁇ n ⁇ N, where N is an integer greater than or equal to 1) bytes.
  • a stream length memory for storing the stream length L of the random number to be generated
  • a fixed value memory for storing fixed values
  • a key memory for storing key information
  • An initial value memory for inputting and storing an initial value
  • a first memory S1 that also has 256 word power, and uses address 1 (1 is an integer from 0 to 255) to access word S1 [I];
  • a second memory S2 having the same number of word forces as the first memory S1 and accessing the word S2 [I] using the address I;
  • a first internal memory for storing the value of address I
  • a second internal memory for storing values in word units
  • word values are set in the respective nodes of the first memory S1 and the second memory S2, and initial values are set in the first internal memory and the second internal memory.
  • the value I of the first internal memory is updated, and the value of the first internal memory is used as the address I, and the first word of the first memory S1 Swaps the value of the nth byte of each word from the first word to the last word with the value of the nth byte of word S1 [I] at address I of the first memory S1, and then the value of the first internal memory The value of the nth byte of each word from the first word to the last word of the second memory S2 as address I And the value of the nth byte of the word S2 [I] at address I of the second memory S2, and the swap is repeated from the 1st to the Nth byte, and the first memory S1 and the second memory S2 A key scheduling part that performs key scheduling for the words stored in
  • a first random number generator that generates a pseudo-random number R1 using buffer and outputs it to the buffer memory, and the value of the word S1 [12] at address 12 in the first memory S1
  • a first state changing unit that rewrites the value of the word SI [II] of the address II of the first memory S1, using the shifted value.
  • the first exchange unit that swaps the upper and lower values of the word stored in the second internal memory and the value of the lower 2 bytes of the word stored in the second internal memory are generated as values 14 and 15.
  • the first word power of the second memory S2 The value of each word S2 [II] up to the last word
  • Second memory S2 address 14 word S2 [14] value
  • a second random number generator that generates and outputs a pseudo-random number R2 using
  • Second memory S2 address 14 word S2 [14] value
  • a second state changing unit that rewrites the value of the word S2 [II] of the address II of the second memory S2, using the shifted value,
  • a second exchange unit that exchanges the upper and lower values of the word stored in the second internal memory, and the first random number generation unit and the first state variable until the stream length stored in the stream length memory is reached.
  • a loop unit that repeats the operations of the further unit and the first switching unit, the second random number generation unit, the second state changing unit, and the second switching unit;
  • a first random number generator a buffer memory that receives the pseudo-random number R1 output from the second random-number generator and the pseudo-random number R2 output from the second random-number generator, temporarily holds it, and outputs it as a pseudo-random stream;
  • a rescheduling unit that operates the key scheduling unit when the stream strength of the pseudo-random number output to the noffer memory reaches a predetermined rescheduling length.
  • the pseudorandom number generation method of the present invention includes:
  • a key memory that stores key information and a plurality of words that use the address 1 (1 is an integer greater than or equal to 0) and accesses the word S1 [I]. Same as the first memory S1 and the first memory S1 This is a memory that also has multiple word powers, and includes a second memory S2 that accesses the word S2 [I] using the address I, and generates pseudo-random numbers in units of words consisting of multiple bytes.
  • the initialization unit sets a word value for each word in the first memory S1 and the second memory S2, and the first internal memory and the second memory. Set the initial value to the internal memory,
  • Key scheduling unit Using key information stored in the key memory, key scheduling is performed on the word values set in the first memory S1 and the second memory S2, and the first memory S1 and the second memory S2. And remember
  • Stream generation unit Generates pseudo-random numbers by alternately using words stored in the key-scheduled first memory S1 and second memory S2.
  • a pseudo-random number generation program of the present invention includes:
  • a key memory that stores key information and a plurality of words that use the address 1 (1 is an integer greater than or equal to 0) and accesses the word S1 [I]. Same as the first memory S1 and the first memory S1.
  • the memory is also configured with a plurality of word powers, and includes a second memory S2 that uses the address I to access the word S2 [I], and generates pseudo-random numbers in units of words of multiple bytes.
  • Embodiment 1 will be described with reference to FIGS. Embodiment 1 relates to a pseudo-random number generation device, a pseudo-random number generation method, and a pseudo-random number generation program that generate pseudo-random numbers using two internal tables.
  • FIG. 1 is a block diagram of pseudorandom number generation apparatus 100 in the first embodiment.
  • the pseudo random number generation device 100 includes a storage unit 110 including various memories, an initialization unit 120, a key schedule unit 130, and a stream generation unit 140.
  • Stream length memory 111 for storing the stream length L of the random number to be generated
  • Fixed value memory 112 that stores fixed values (such as INI1 [0] described later)
  • Initial value memory 114 that stores initial values (0x01, 0x12345678, which will be described later) and stored. Not what you want. For 0x01, any value can be used as long as it is a 1-byte value. For 0x12345678, any value can be used as long as it is a 4-byte value.
  • the second memory S2 (116), which is composed of the same number of words as the first memory S1 (115), and uses the address I to access the word S2 [I].
  • First internal memory 117 (B1 to be described later) that stores the value of address I,
  • Second internal memory 118 for storing values in words ( ⁇ B4> described later)
  • Etc. are provided. These memories can be realized by cache memory, flash memory, random access memory, fixed disk, or optical disk.
  • the initialization unit 120 sets a word value for each word in the first memory Sl (l 15) and the second memory S2 (116) using the fixed value stored in the fixed value memory 112. At the same time, initial values are set in the first internal memory 117 and the second internal memory 118. Details of the operation of the initialization unit 120 will be described later with reference to FIGS.
  • the key schedule unit 130 uses the key information stored in the key memory 113 to perform key scheduling for the word values set in the first memory S1 (115) and the second memory S2 (116). Then, the data is stored in the first memory S 1 (115) and the second memory S2 (116). Details of the operation of the key schedule unit 130 will be described later with reference to FIGS.
  • the stream generation unit 140 generates pseudo-random numbers using the codes stored in the first memory S1 (115) and the second memory S2 (116).
  • the stream generation unit 140 includes a first random number generation unit 141, a first state change unit 142, a first exchange unit 143, a second random number generation unit 144, a second state change unit 1 45, a second exchange unit 146, and a loop unit 147.
  • a notch memory 148 and a rescheduling unit 149 Details of the operation of each of these components will be described later with reference to FIGS.
  • FIG. 2 is a diagram illustrating an appearance of the pseudorandom number generation device 100 according to the first embodiment.
  • the pseudorandom number generation device 100 includes a system unit 830, a liquid crystal display device 813, a keyboard 814, a mouse 815, a compact disk device (CDD) 818, and a printer 819, which are connected by a cable.
  • the pseudorandom number generation apparatus 100 is connected to the Internet 840 and can communicate with the Web server 850 using pseudorandom number encryption.
  • FIG. 3 is a hardware configuration diagram of the pseudorandom number generation device 100 according to the first embodiment.
  • the pseudo-random number generation device 100 includes a CPU (Central P rocessing Unit) 810.
  • CPU810 is connected to ROM811, RAM812, liquid crystal display device 813, keyboard 814, mouse 815, communication board 816, FDD (Flexible Disk Drive) 817, CDD818, printer 819, magnetic disk device 820 via nose 825.
  • the RAM 812 is an example of a volatile memory.
  • the RAM 812 is an example of the buffer memory 148, for example.
  • ROM811, FDD817, CDD818, and magnetic disk device 820 are examples of nonvolatile memories. These are examples of the storage unit 110.
  • the pseudo random number generation device 100 is connected to the Internet 840 via a communication board 816.
  • Communication board 816, keyboard 814, FDD817, etc. are examples of data input units.
  • the communication board 816, the liquid crystal display device 813, the magnetic disk device 820, etc. are examples of the output unit.
  • the magnetic disk device 820 stores an operating system (OS) 821, a window system 822, and a program group 823.
  • OS operating system
  • the memory area 824 of the magnetic disk device 820 corresponds to the various memories of the storage unit 110 shown in FIG.
  • the program group 823 is executed by the CPU 810, the OS 821, and the window system 822.
  • the program group 823 stores programs that execute the functions described as “ ⁇ unit” in FIG.
  • the program group 823 stores programs that execute the functions of the initialization unit 120, the key schedule unit 130, and the stream generation unit 140 of FIG.
  • the program is read and executed by the CPU 810.
  • the program for carrying out the embodiment described below includes a magnetic disk device 820, an FD (Flexible Disk), an optical disk, a CD (compact disk), an MD (mini disk), a DVD (Digital Versatile Disk). ) Etc. may be stored using a recording apparatus using other recording media.
  • FD Flexible Disk
  • CD compact disk
  • MD mini disk
  • DVD Digital Versatile Disk
  • the operation of the pseudo-random number generation apparatus 100 includes “A. initialization”, “B. key schedule”, and “C. stream generation”. Before explaining these operations, first, the symbols used below will be explained using FIG.
  • Encryption key K (an example of key information):
  • the encryption key K is stored in the key memory 113.
  • the length of the encryption key K is “Keylen” (bytes). Describe K [0] to K [Keylen-1] in 1-byte units.
  • the initial value IV is stored in the key memory 113.
  • the length of the initial value IV is “Ivlen” (bytes). It is described as IV [0] to IV [Ivlen-l] in 1-byte units.
  • the internal table S1 is realized by a word stored in the first memory S1 (115).
  • the first memory S1 (115) may be used in the same meaning as the internal table S1.
  • One word is not limited to 4 bytes, but may be 2 bytes, 6 bytes, 8 bytes, and so on.
  • the internal table S2 is realized by the second memory S2 (116).
  • the second memory S2 (116) may be used in the same meaning as the internal table S2.
  • the stream length of the random number to be generated is described as “4 X Strlenj. ⁇ R [0]> ⁇ R [Strlen— 1]> can be described in 4-byte units. This stream length is stored in the stream length memory 111. ing.
  • Second internal memory 118 Second internal memory 118:
  • the second internal memory 118 stores a 4-byte value.
  • the second internal memory 118 may be indicated as B4>.
  • the first internal memory 117 stores a 1-byte value.
  • the first internal memory 117 may be indicated as “B1”.
  • variable on the right side means that the CPU 80 reads a value from the memory (storage unit 110), and the variable on the left side is the memory (storage unit 1 Indicates that the value is written to 10).
  • operations such as “store”, “update”, “generate”, “become”, “set”, and “replace” also indicate that the CPU 80 writes a value to the memory (storage unit 110).
  • FIG. 6 is a flowchart of A.1 to A.4 in FIG. A. 5 to A. 8 are omitted because they are the same as A. 1 to A. 4.
  • FIG. 7 is a diagram showing how the internal table S1 (first memory S1 (115)) and the internal table S2 (second memory S2 (116)) are initialized.
  • FIG. 8 is a diagram for explaining the state of FIG. 7 with specific numerical values.
  • the initialization unit 120 uses the fixed value INI1 [0]> stored in the fixed value memory 112 in A. 1 to A. 4 in FIG. Set the word value for each word in step 115). Similarly, in A. 5 to A. 8, the initialization unit 120 uses the fixed value stored in the fixed value memory 112, such as INI2 [0]>, for each word of the second memory S2 (116). Set the value.
  • FIG. 7 shows a state in which the initialization unit 120 sets the word value in the first memory S1 (115) and the second memory S2 (116).
  • Figure 7 shows that the initialization unit 120 has a 4-byte fixed value stored in the fixed value memory 112 ⁇ 1 ⁇ 11 [0]> to ⁇ 1 ⁇ [1 [255]> first memory 31 (115)
  • the word value is set in the second memory S2 (116) by the INI2 [0]> to INI2 [255]> 4-byte fixed value stored in the fixed value memory 112.
  • Is shown. ⁇ 1 Nil [0]> etc. is a fixed value of 4 bytes as described above, and more specifically, a value as shown in FIG. 8 is set as an example.
  • the initialization unit 120 includes the first internal memory 117 ⁇ B1 '' and the second internal memory 118. Set the initial value to B4>. This initial value is stored in the initial value memory 114.
  • A. 9 and A. 10 in FIG. 5 show a case where the initialization unit 120 sets “0x01” to “B 1” and “0x12345678” to ⁇ B4> as initial values.
  • Key schedule refers to the process of mixing the contents of the internal table using key information.
  • the contents of the internal table S1 and the internal table S2 generated by the initialization are mixed by using the encryption key K and the initial value IV as key information. Will be explained.
  • FIG. 9 shows a program executed by the key schedule unit 130.
  • FIG. 10 is a flowchart of B. 1 to B. 10 in FIG.
  • FIG. 11 is a flowchart of B. 11 to B. 20 in FIG.
  • FIG. 12 is a diagram for explaining the outline of the key schedule.
  • Figure 12 shows the internal table S1.
  • a set of “circle, triangle, square, back” represents a 4-byte word.
  • “Circle”, “Triangle”, “Square”, and “Bat” each represent 1 byte. Of a set of “circle, triangle, square, bag”, for example,
  • the key schedule unit 130 executes the following processing.
  • the following steps are sequentially executed up to “round 255”.
  • the predetermined “circle” to be swapped is determined by the value of “B1” according to B.3, B.5, B.6, etc.
  • the key schedule unit 130 executes the same processing as that for the internal table S1 for the internal table S2 (B.11 to B.20).
  • FIG. 13 is a schematic diagram of B. 3 to B. 6 in FIG. Next, FIG. 13 will be described.
  • the key schedule is a process performed by the key schedule unit 130.
  • S1 [B1] is determined from the set address “B1”.
  • FIG. 14 and FIG. 15 are diagrams for explaining FIG. 12 using specific numerical values.
  • FIG. 14 is a diagram for explaining a specific state of the process of B.1 to B.6.
  • Fig. 15 is a diagram for explaining a specific state of the process of B. 7 ⁇ B. 8 ⁇ B. 3 ⁇ B. 6.
  • the B key schedule will be explained in detail with reference to FIG. 14 and FIG.
  • the key schedule part 130 The key schedule part 130
  • the key schedule unit 130 executes Swap (Sl [I], S1 [B1]).
  • the key schedule unit 130 interchanges SI [0] and SI [3].
  • the key schedule part 130 The key schedule part 130
  • the key schedule unit 130 executes Swap (Sl [I], S1 [B1]).
  • the key schedule unit 130 interchanges SI [1] and SI [14].
  • the key schedule part 130 The key schedule part 130
  • the key schedule part 130 The key schedule part 130
  • Bl Blxor ((S2 [l] + S2 [B1])% 256)
  • the key schedule is executed by the key schedule unit 130.
  • the key schedule algorithm for the internal table S1 (B. 1 to: B. 10) and the key schedule algorithm for the internal table S2 (B.11 to: B .20) Since this algorithm is the same as this algorithm, it can also be used. This halves the program size compared to creating both.
  • Stream generation alternates the roles of internal table S1 and internal table S2. This is a process of generating a random number sequence while changing.
  • FIG. 16 shows a program executed by each component of the stream generation unit 140.
  • FIG. 17 is a flowchart of FIG.
  • Figure 18 is a schematic representation of C.2 to C.4.
  • FIG. 18 will be briefly described.
  • the pseudorandom number generation apparatus 100 performs the following operation.
  • a value without a letter indicates a decimal number.
  • ⁇ RQ []> is generated from ⁇ S1 [B4]>, ⁇ S1 [I]>, ⁇ S2 [B4]>.
  • FIG. 19 and FIG. 20 are diagrams for explaining FIG. 18 using specific numerical values. In the following, the generation of pseudo-random numbers will be described using specific numerical values with reference to FIG. 19 and FIG.
  • the initialization unit 120 stores the second internal memory 118.
  • the first random number generator 141 The first random number generator 141
  • the first state changing unit 142 performs ⁇ S1 [B4]> and ⁇ S2 [B4]>.
  • ⁇ Sl [l]> ( ⁇ Sl [l]> + ROTL (( ⁇ Sl [B4]> xor ⁇ S2 [B4]>), 1))% 2 3 :
  • ROTL (x, s) indicates that 32-bit data X is rotationally shifted to the left by s bits.
  • the decimal number “5” is expressed in binary notation.
  • ROTL (5, 1) "00 ... 1010" And is 10 in decimal notation.
  • ⁇ S1 [0]> ( ⁇ S1 [0]> + ROTL (( ⁇ S1 [56]> xor ⁇ S2 [78]>), 1))
  • ⁇ S1 [0]> is rewritten as 2 ⁇ 12.
  • the first exchange unit 143 exchanges the upper and lower values of the word stored in the second internal memory 118 or B4>.
  • the first replacement unit 143 the first replacement unit 143
  • ⁇ B4> ROTL ((( ⁇ B4> + ⁇ S2 [l]>)% 2 32 ), 16)
  • ⁇ S2 [l]> ( ⁇ S2 [l]> + ROTL (( ⁇ S2 [B4]> xor ⁇ Sl [B4]>), 1))% 2 32
  • ⁇ S2 [0]> ( ⁇ S2 [0]> + ROTL (( ⁇ S2 [12]> xor ⁇ Sl [34]>), 1))
  • ⁇ S2 [0]> is rewritten as 1 ⁇ 37.
  • the second exchange unit 146 exchanges the upper and lower values of the word stored in the second internal memory 118 or B4>. That is, the second replacement unit 146
  • ⁇ B4> ROTL ((( ⁇ B4> + ⁇ S1 [I]>)% 2 32 ), 16)
  • ⁇ B4> ROTL ((( ⁇ B4> + ⁇ S2 [l]>)% 2 32 ), 16)
  • the loop unit 147 operates the first random number generation unit 141, the first state change unit 142, the first replacement unit 143, and the second random number generation unit until the stream length stored in the stream length memory 111 is reached. The operations of 144 and the second state changing unit 145 and the second switching unit 146 are repeated.
  • the buffer memory 148 receives the pseudo random number R1 output from the first random number generation unit 141 and the pseudo random number R2 output from the second random number generation unit 144, temporarily stores them, and stores the pseudo random number stream. Output as.
  • the rescheduling unit 149 operates the key scheduling unit 130 to redo the key schedule when the stream length of the pseudo-random number output to the noffer memory 148 reaches a predetermined rescheduling length (C.11).
  • the predetermined “reschedule length” is, for example,
  • Number of words in internal table means the number of internal table S1 or internal table S2. In the case of the first embodiment, the number of nodes is 256.
  • the number of shifts that the second internal memory 118 cycles means the number of shifts that the memory ⁇ 4> cycles in C. 4 or C. 9 and is 32 times.
  • the “reschedule length” is an example:
  • the rescheduling unit 149 determines whether the length of the pseudo random number sequence (the value of J) has become the predetermined “rescheduling length” Strlen. . If rescheduling unit 149 determines that the “rescheduling length” has been reached, it proceeds to (A) in FIG. 10 and operates key scheduling unit 130 to redo the key schedule.
  • the pseudo-random number generation device 100 XORs (exclusive ORs) the pseudo-random number streams R [0], R [l]. create.
  • pseudorandom numbers R are sequentially generated while changing the roles of the internal table S1, the internal table S2, and the forces “random number generation” and “address generation”.
  • the conventional RC4 was done with one table.
  • pseudo-random numbers are generated by using two of internal table S1 and internal table S2.
  • pseudo-random numbers may be generated based on three internal tables, or pseudo-random numbers may be generated based on four internal tables.
  • V an internal table of shoes may be used.
  • a series of operations of the initialization unit 120, the key schedule unit 130, and the stream generation unit 140 of the pseudorandom number generation device 100 are related to each other, and these series of operations can be grasped as a pseudorandom number generation method. .
  • FIG. 22 illustrates the operation of the initialization unit 120 and the like of the pseudorandom number generation device 100 as a pseudorandom number generation method. The flowchart in the case of grasping by doing is shown.
  • S101 is a step in which the initialization unit sets a word value for each word of the first memory S1 and the second memory S2, and sets an initial value for the first internal memory and the second internal memory. It is.
  • S102 uses the key schedule stored in the key memory to perform key scheduling on the word values set in the first memory S1 and the second memory S2 This is a step of storing in S1 and the second memory S2.
  • S103 is a step of generating pseudo-random numbers by alternately using words stored in the first memory S1 and the second memory S2 that have been key-scheduled by the stream generation unit key scheduling unit.
  • a series of operations of the initialization unit 120, the key schedule unit 130, and the stream generation unit 140 in the pseudorandom number generation device 100 can be grasped as an embodiment of the program by replacing with a series of processes. .
  • FIG. 23 shows a case where the operation of the initialization unit 120 and the like of the pseudo random number generation device 100 is grasped as a pseudo random number generation program that also has a series of processing powers for causing the pseudo random number generation device 100, which is a computer, to execute. A flowchart is shown.
  • S201 is a process of setting a word value for each word in the first memory S1 and the second memory S2, and setting an initial value in the first internal memory and the second internal memory.
  • S202 uses the key information stored in the key memory to perform key scheduling on the word values set in the first memory S1 and the second memory S2, and to perform the key scheduling on the first memory S1 and the second memory S2. It is a process that is stored in memory S2.
  • S203 is a process of generating a pseudo-random number by alternately using words stored in the first memory S1 and the second memory S2 that are key-scheduled.
  • the stream generation unit 140 of the internal stream is the internal text scheduled by the key scheduling unit 130.
  • pseudorandom numbers may be generated by alternately using words stored in one table S 1 (first memory Sl (115)) and internal table S 2 (second memory S 2 (116)).
  • the first random number generation unit 141 of the stream generation unit 140 generates the address of the first memory S1 (115) from the value of the first memory Sl (115), and the first memory S1 ( 115)
  • the value of pseudo-random numbers is generated (C.9 and C.2 as (Equation 1) above). That is, as shown in FIG. 21, the first random number generation unit 141 uses the value S1 [I] of the first memory Sl (115) in C.9 to the address of ⁇ S1 [B4]> in C.2. ⁇ B4> that should be generated is generated (ST1).
  • the first random number generation unit 141 specifies the node value ⁇ 31 ⁇ 4]> of the first memory S1 (115) of the generated address B4, exactly 2), and the above (formula 1) Then, a pseudorandom number R> is generated from the specified node value S1 [B4]> and S1 [I]> (ST3).
  • the role moves from the internal table S1 (first memory SI (115)) to the internal table S2 (second memory S2 (116)).
  • the second random number generation unit 144 of the stream generation unit 140 generates the address of the second memory S2 (116) from the value of the second memory S2 (116), and the second memory S2 (116) of the generated address.
  • the pseudo-random number is also generated for the value of the word (C.4 and C.7 as in (Equation 2)). That is, the second random number generation unit 144 should be the address of S2 [B4]> in C.7 and the value S2 [I] force of the second memory S2 (116) in C.4. ⁇ B4> is generated (ST5).
  • the first random number generator 141 specifies the word value S2 [B4]> of the second memory S2 (116) of the generated address B4 (ST6), and the above (formula 2) Then, a pseudorandom number R ′> is generated from the identified word value S2 [B4]> and S2 [I]> (ST7).
  • the first random number generator 141 and the second random number generator 144 are stored in the first memory Sl (115) and the second memory S2 (116). Generate pseudo-random numbers R, R ', etc. using alternating words.
  • the pseudo random number generation device, pseudo random number generation method, and pseudo random number generation program described above can be used as an encryption device for force text (plain text), which is a generation device for stream type encryption, and as a decryption device for cipher text. Can also be used.
  • the pseudo random number generation device and the pseudo random number generation method described above can be realized as a program (software) that is operated by a computer, as shown in FIG. 3 or FIG.
  • a program software
  • it can also be implemented as a semiconductor chip or IC chip that contains the program, and can be used in any electronic device.
  • suitable application examples of the pseudo random number generation device, the pseudo random number generation method, and the pseudo random number generation program described above include encryption or decryption of word processor text, encryption or decryption of e-mail text, the Internet, and a local area network. Encryption / decryption of communication data, encryption / decryption of communication data between mobile phone and base station, encryption / decryption of IC tag / IC card data, and so on.
  • the pseudorandom number generation device includes a key scheduling unit that performs key scheduling for the first memory S1 and the second memory S2, and the first memory S1 and the second memory that are key-scheduled. And a stream generation unit that generates pseudo-random numbers by alternately using the words stored in S2, thereby improving the security against a deciphering attack. In addition, since the stream generation unit generates pseudo-random numbers for each word unit, the processing speed can be increased.
  • the first random number generation unit uses the first memory S1. A pseudo-random number is generated, and the second random number generation unit generates the pseudo-random number using the second memory S2, and the first random number generation unit and the second random number generation unit alternately generate the pseudo-random number. Therefore, it is possible to improve the security against the reading attack.
  • the key scheduling unit performs key scheduling on a plurality of internal tables (first memory S1 and second memory S2) configured in units of words. Therefore, replacement in a very large space is possible, and security against deciphering attacks can be improved.
  • the stream generation unit generates random numbers based on the two internal tables, so that it is possible to improve the security against the decryption attack.
  • the stream generation unit 140 In contrast to the prior art that is processing in units of bytes, in the pseudo random number generation device 100 of Embodiment 1, the stream generation unit 140 generates pseudo random numbers in units of words (4 bytes). High speed can be realized.
  • the number of elements realized in one internal table is 256, from 0 to 255, whereas the pseudorandom number generation device 100 of Embodiment 1 uses the key.
  • processing 130 schedule words as a target, it is possible to replace in a very large space with 2 to 32 ways from 0 to 2 32 — 1 and improve safety.
  • the pseudo random number generation device 100 includes the key schedule unit 130, the internal table S1 and the internal table S2. Since the replacement is repeated by alternately acting on each other, a very long randomness (periodicity) can be realized. In addition, since the stream generation unit 140 repeats the replacement by causing the internal table S 1 and the internal table S 2 to act alternately, extremely long randomness (periodicity) can be realized.
  • the pseudo random number generation process is continuously executed after the key schedule is executed once until the key is changed next time. Therefore, if a process exceeding a certain level is executed, the same random number sequence is generated. End up.
  • the rescheduling unit 149 operates the key schedule unit 130 to generate pseudorandom numbers. By updating the internal table Sl and internal table S2 used for generation, the same random number sequence is prevented from being generated and the safety is improved.
  • the operation of the conventional example is simpler than the operation of the pseudorandom number generation device 100 of the first embodiment, it seems to operate at high speed. However, when actually programmed, the first embodiment is much faster. This is due to the fact that the stream generation power of C. 1 to C. 11 is performed in byte units in the first embodiment (in the conventional example, one byte unit).
  • the pseudo random number generation apparatus 100 performs the following new ideas in the range without greatly reducing the speed.
  • the pseudorandom number generation device 100 of the first embodiment has two internal tables of the same size. For this reason, it is considered difficult to guess the internal state. Specifically, in the conventional example, one byte is generated from one state of a 256-byte table, whereas in the pseudorandom number generation device 100 of the first embodiment, the one-state power of a 2048-byte table is also generated. Generate a 4-byte random number RQ []. That is, in the pseudorandom number generator 100, the entropy per byte of the stream is double that of the conventional example.
  • RQ [] is generated from S [B] and S [I], and the two values and B determine the next internal state.
  • RQ [] is generated from S1 [B4], S1 [I], and S2 [B4].
  • the internal state is alternately changed while changing the roles of the internal table S1, the internal table S2, and the force.
  • “C. 2 to C. 5” and “C. 7 to C. 10” in FIG. 16 correspond to portions where the roles of the internal table S1 and the internal table S2 are changed. Since these two parts are simply the interchange of internal table S1 and internal table S2, the program can be shared as long as the pointers to the top addresses of these internal tables are interchanged, reducing the program size. Useful for One.
  • the key schedule was performed only once at the beginning !, and never after that.
  • the pseudorandom number generation device 100 performs a process of redoing the key schedule every 64 KB. Since the key schedule completely changes the internal state of the internal tables Sl and S2, this makes it almost impossible for the decryptor to reproduce the internal state. If the key schedule is frequently performed, the processing speed will decrease. If it is about 64 KB, the processing speed will not be a problem.
  • FIG. 1 is a configuration diagram of a pseudo random number generation device 100 according to a first embodiment.
  • FIG. 2 shows an example of the appearance of pseudorandom number generation device 100 in the first embodiment.
  • FIG. 3 shows a hardware configuration of pseudorandom number generation apparatus 100 in the first embodiment.
  • FIG. 4 is an explanation of symbols used to explain the operation of pseudorandom number generation apparatus 100 in the first embodiment.
  • FIG. 5 shows a program when the initialization unit 120 executes initialization.
  • FIG. 6 is a flowchart of FIG.
  • FIG. 7 is a diagram showing how the initialization unit 120 sets word values in the first memory Sl (115) and the second memory S2 (116).
  • FIG. 8 is a diagram showing a specific example when the initialization unit 120 sets word values in the first memory Sl (115) and the second memory S2 (116).
  • FIG. 9 A program when the key schedule unit 130 performs key scheduling.
  • FIG. 10 is a flowchart of B. 1 to B. 10 in FIG.
  • FIG. 11 is a flowchart from B. 11 to B. 20 in FIG.
  • FIG. 12 is a diagram for explaining an outline of a key schedule.
  • FIG. 13 B. 3 in FIG. 10: Schematic representation of B. 6.
  • FIG. 14 is a diagram illustrating FIG. 13 with specific numerical values.
  • FIG. 15 is a diagram illustrating FIG. 13 with specific numerical values.
  • FIG. 16 shows a program used when the stream generation unit 140 generates a stream.
  • FIG. 17 is a flowchart of FIG.
  • FIG. 18 This is a schematic representation of C. 2 to C. 4 in FIG.
  • FIG. 19 is a diagram illustrating FIG. 18 with specific numerical values.
  • FIG. 20 is a diagram illustrating FIG. 18 with specific numerical values.
  • FIG. 21 is a diagram showing another operation example of the stream generation unit 140.
  • FIG. 22 is a diagram showing steps in a pseudo-random number generation method.
  • FIG. 23 is a diagram showing processing steps of a pseudo-random number generation program.
  • FIG. 24 is a diagram for explaining a conventional technique.
  • FIG. 25 is a diagram for explaining a conventional technique.
  • 100 pseudo random number generator 110 storage unit, 111 stream length memory, 112 fixed value memory, 113 key memory, 114 initial value memory, 115 first memory Sl, 116 second memory S2, 1 17 first internal memory, 118 Second internal memory, 120 initialization unit, 130 key schedule unit, 140 stream generation unit, 141 first random number generation unit, 142 first state change unit, 143 first replacement unit, 144 second random number generation unit, 145 second Status change unit, 146 2nd switching unit, 147 Norep ⁇ , 148 Noffer memory, 149 Reschedule memory, 810 CPU, 811 ROM, 812 RAM, 813 LCD, 814 keyboard, 815 mouse, 816 communication board, 817 FDD, 818 CDD, 819 printer, 820 magnetic disk unit, 82 1 OS, 822 window system, 823 program group, 824 memory area, 825 nose, 830 system unit, 840 Internet, 850 Web server.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)

Abstract

 擬乱数生成装置100は、以下の動作で擬似乱数を生成する。C.2において第2内部メモリに設定されたB41からS1[B41]を決定し、B40からS2[B40]を決定する。そして、S1[I]とS1[B41]とS2[B40]とからR[J]を生成する。C.3において、S1[B41]とS2[B40]とに基づいて、S1[I]を新たに生成する。C.4において、S2(I)から新たにB4を更新する。以上では、R[J]とS2(I)との関連が遮断され、R[J]からS2(I)を推測することが困難となり安全性が向上する。また、S1[I]、S1[B41]、S2[B40]等は4バイトであり、処理速度が高速である。

Description

明 細 書
擬似乱数生成装置 技術分野
[0001] この発明は、擬似乱数を生成する擬似乱数生成装置及び擬似乱数生成方法及び 擬似乱数生成プログラムに関する。
背景技術
[0002] ソフトウェア向きストリーム暗号の代表的な従来技術として RC4が挙げられる。この R C4のァノレゴリズムは公式には公開されていない。し力し、現在では RC4の解析を行 なった文献が多数存在し、方式の詳細も公開されている (例えば、非特許文献 1)。
[0003] 図 24は、 RC4のアルゴリズムを示している。このアルゴリズムは、「A.初期化」と、「 B.鍵スケジュール」と、「C.ストリーム生成」と力も成る。図 24の例えば鍵スケジユー ノレにおける「%256」は、 256で除した余りを示す。
また、
rSwap (S [l] , S [B])」
は、 S [I]と S [B]との入れ替えを意味する。
また、図 25は、図 24に示した「 A初期化」、「B鍵スケジュール」、「Cストリーム」のそ れぞれを図式ィ匕したものである。
図 24、図 25に示す様に、このアルゴリズムは、
「A.初期化」として内部テーブルを生成し、
「: B.鍵スケジュール」として生成した内部テーブルのデータを swapし、
「C.ストリーム生成」として内部テーブルを使用して擬似乱数を生成する。
[0004] 従来技術では、ストリーム生成を 1バイト単位で行なっているため、処理速度が高速 とはいい難ぐ高速ィ匕の要請がある。また、従来技術では一つの内部テーブルから擬 似乱数を生成しており、解読攻撃に対する更なる安全性の要請もある。
非特許文献 1 :出典: Applied Cryptography, Bruce Schneier著, John Wi ley & Sons, ISBN 0—471— 11709— 9
発明の開示 発明が解決しょうとする課題
[0005] 本発明は、ストリーム暗号方式において動作の高速な擬似乱数生成装置及び擬似 乱数生成方法及び擬似乱数生成プログラムの提供を目的とする。また、従来のストリ ーム暗号方式にお!、て、より安全性の高 、擬似乱数生成装置及び擬似乱数生成方 法及び擬似乱数生成プログラムの提供を目的とする。
課題を解決するための手段
[0006] 本発明の擬似乱数生成装置は、
複数バイトからなるワード単位で、擬似乱数を生成する擬似乱数生成装置におい て、
鍵情報を記憶する鍵メモリと、
複数のワードからなり、アドレス 1 (1は、 0以上の整数)を用いて、ワード S1 [I]をァク セスする第 1メモリ S1と、
第 1メモリ S1と同一数の複数のワード力も構成されるメモリであって、アドレス Iを用 いて、
ワード S2[I]をアクセスする第 2メモリ S2と、
第 1メモリ S1と第 2メモリ S2との各ワードにそれぞれワード値を設定するとともに、第 1内部メモリと第 2内部メモリとに初期値を設定する初期化部と、
鍵メモリが記憶する鍵情報を用いて、第 1メモリ S1と第 2メモリ S2とに設定されたヮ ードの値に対して鍵スケジューリングをして第 1メモリ S1と第 2メモリ S2とに記憶する 鍵スケジュール部と、
鍵スケジュール部により鍵スケジュールされた第 1メモリ S1と第 2メモリ S2とに記憶さ れたワードを交互に用いて擬似乱数を生成するストリーム生成部と
を備えたことを特徴とする。
[0007] 前記ストリーム生成部は、
第 1メモリ S1のワードの値から、第 1メモリ S1のアドレスを生成し、生成されたァドレ スの第 1メモリ S1のワードの値力も擬似乱数を生成する第 1乱数生成部と、
第 2メモリ S2のワードの値から、第 2メモリ S2のアドレスを生成し、生成されたァドレ スの第 2メモリ S2のワードの値力も擬似乱数を生成する第 2乱数生成部と、 を備えたことを特徴とする。
[0008] 本発明の擬似乱数生成装置は、
数バイトからなるワード単位で、擬似乱数を生成する擬似乱数生成装置において、 鍵スケジュールされた値を記憶する複数のワードからなり、アドレス 1 (1は、 0以上の 整数)を用いて、ワード S1 [I]をアクセスする第 1メモリ S1と、
第 1メモリ S1と同一数の複数のワードから構成されるメモリであって、鍵スケジユー ルされた値を記憶する複数のワード力 なり、アドレス Iを用いて、ワード S2[I]をァク セスする第 2メモリ S2と、
第 1メモリ S1と第 2メモリ S2とに記憶されたワードを交互に用いて擬似乱数を生成 するストリーム生成部と
を備えたことを特徴とする。
[0009] 本発明の擬似乱数生成装置は、
n(l≤n≤N、 Nは 1以上の整数)バイトからなるワード単位で、擬似乱数を生成する 擬似乱数生成装置において、
生成すべき乱数のストリーム長 Lを記憶するストリーム長メモリと、
固定値を記憶する固定値メモリと、
鍵情報を記憶する鍵メモリと、
初期値を入力して記憶する初期値メモリと、
256ワード力も構成されるメモリであって、アドレス 1 (1は、 0〜255の整数)を用いて 、ワード S1 [I]をアクセスする第 1メモリ S1と、
第 1メモリ S1と同一数の複数のワード力も構成されるメモリであって、アドレス Iを用 いて、ワード S2[I]をアクセスする第 2メモリ S2と、
アドレス Iとなる値を記憶する第 1内部メモリと、
ワード単位の値を記憶する第 2内部メモリと、
鍵メモリが記憶する鍵情報と初期値メモリが記憶する初期値とを用いて第 1内部メモ リの値 Iを更新し、第 1内部メモリの値をアドレス Iとして、第 1メモリ S1の先頭ワードから 最後のワードまでの各ワードの n番目のバイトの値と第 1メモリ S1のアドレス Iのワード S1 [I]の n番目のバイトの値とをスワップし、さらに、第 1内部メモリの値をアドレス Iとし て、第 2メモリ S2の先頭ワードから最後のワードまでの各ワードの n番目のバイトの値 と第 2メモリ S2のアドレス Iのワード S2[I]の n番目のバイトの値とをスワップして、第 1 から第 N番目のバイトまでスワップを繰り返し、第 1メモリ S1と第 2メモリ S2とに記憶さ れたワードに対して鍵スケジューリングをする鍵スケジュール部と、
鍵スケジュール部により鍵スケジュールされた第 1メモリ S1と第 2メモリ S2とに記憶さ れたワードを交互に用いて擬似乱数を生成するストリーム生成部と
を備えたことを特徴とする。
本発明の擬似乱数生成装置は、
n(l≤n≤N、 Nは 1以上の整数)バイトからなるワード単位で、擬似乱数を生成する 擬似乱数生成装置において、
生成すべき乱数のストリーム長 Lを記憶するストリーム長メモリと、
固定値を記憶する固定値メモリと、
鍵情報を記憶する鍵メモリと、
初期値を入力して記憶する初期値メモリと、
256ワード力も構成されるメモリであって、アドレス 1 (1は、 0〜255の整数)を用いて 、ワード S1 [I]をアクセスする第 1メモリ S1と、
第 1メモリ S1と同一数の複数のワード力も構成されるメモリであって、アドレス Iを用 いて、ワード S2[I]をアクセスする第 2メモリ S2と、
アドレス Iとなる値を記憶する第 1内部メモリと、
ワード単位の値を記憶する第 2内部メモリと、
固定値メモリに記憶された固定値を用いて、第 1メモリ S1と第 2メモリ S2との各ヮー ドにそれぞれワード値を設定するとともに、第 1内部メモリと第 2内部メモリとに初期値 を設定する初期化部と、
鍵メモリが記憶する鍵情報と初期値メモリが記憶する初期値とを用いて第 1内部メモ リの値 Iを更新し、第 1内部メモリの値をアドレス Iとして、第 1メモリ S1の先頭ワードから 最後のワードまでの各ワードの n番目のバイトの値と第 1メモリ S1のアドレス Iのワード S1 [I]の n番目のバイトの値とをスワップし、さらに、第 1内部メモリの値をアドレス Iとし て、第 2メモリ S2の先頭ワードから最後のワードまでの各ワードの n番目のバイトの値 と第 2メモリ S2のアドレス Iのワード S2 [I]の n番目のバイトの値とをスワップして、第 1 から第 N番目のバイトまでスワップを繰り返し、第 1メモリ S1と第 2メモリ S2とに記憶さ れたワードに対して鍵スケジューリングをする鍵スケジュール部と、
第 2内部メモリに記憶されたワードの下位 2バイトの値力 アドレス 12、 13の値を生成 し、
第 1メモリ S1の先頭ワード力 最後のワードまでの各ワード SI [II]の値と
第 1メモリ S1のアドレス 12のワード S1 [12]の値と
第 2メモリ S2のアドレス 13のワード S2 [13]の値と
を用いて擬似乱数 R1を生成してバッファメモリに出力する第 1乱数生成部と、 第 1メモリ S1のアドレス 12のワード S1 [12]の値と
第 2メモリ S2のアドレス 13のワード S2 [13]の値と
を演算してシフトし、シフトした値を用いて第 1メモリ S1のアドレス IIのワード SI [II] の値を書き換える第 1状態変更部と、
第 2内部メモリに記憶されたワードの上位と下位の値を入れ替える第 1入れ替え部と 第 2内部メモリに記憶されたワードの下位 2バイトの値力 アドレス 14、 15とする値を 生成し、
第 2メモリ S2の先頭ワード力 最後のワードまでの各ワード S2 [II]の値と
第 2メモリ S2のアドレス 14のワード S2 [14]の値と
第 1メモリ S1のアドレス 15のワード S1 [15]の値と
を用いて擬似乱数 R2を生成して出力する第 2乱数生成部と、
第 2メモリ S2のアドレス 14のワード S2 [14]の値と
第 1メモリ S1のアドレス 15のワード S1 [15]の値と
を演算してシフトし、シフトした値を用いて、第 2メモリ S2のアドレス IIのワード S2 [II] の値を書き換える第 2状態変更部と、
第 2内部メモリに記憶されたワードの上位と下位の値を入れ替える第 2入れ替え部と ストリーム長メモリに記憶したストリーム長になるまで、第 1乱数生成部と第 1状態変 更部と第 1入れ替え部の動作と、第 2乱数生成部と第 2状態変更部と第 2入れ替え部 の動作とを繰り返すループ部と、
第 1乱数生成部力 出力される擬似乱数 R1と第 2乱数生成部から出力される擬似 乱数 R2とを入力して一時的に保持して擬似乱数ストリームとして出力するバッファメ モリと、
ノッファメモリに出力した擬似乱数のストリーム長力、所定の再スケジュール長にな つた場合に、鍵スケジュール部を動作させる再スケジュール部と
を備えたことを特徴とする。
[0011] 本発明の擬似乱数生成方法は、
鍵情報を記憶する鍵メモリと、複数のワードからなり、アドレス 1 (1は、 0以上の整数) を用いて、ワード S1 [I]をアクセスする第 1メモリ S1と、第 1メモリ S1と同一数の複数の ワード力も構成されるメモリであって、アドレス Iを用いて、ワード S2[I]をアクセスする 第 2メモリ S2とを備えるとともに複数バイトからなるワード単位で、擬似乱数を生成す るコンピュータである擬似乱数生成装置が行う擬似乱数生成方法において、 初期化部が、第 1メモリ S1と第 2メモリ S2との各ワードにそれぞれワード値を設定す るとともに、第 1内部メモリと第 2内部メモリとに初期値を設定し、
鍵スケジュール部力 鍵メモリが記憶する鍵情報を用いて、第 1メモリ S1と第 2メモリ S2とに設定されたワードの値に対して鍵スケジューリングをして第 1メモリ S1と第 2メ モリ S2とに記憶し、
ストリーム生成部力 鍵スケジュールされた第 1メモリ S1と第 2メモリ S2とに記憶され たワードを交互に用いて擬似乱数を生成する
ことを特徴とする。
[0012] 本発明の擬似乱数生成プログラムは、
鍵情報を記憶する鍵メモリと、複数のワードからなり、アドレス 1 (1は、 0以上の整数) を用いて、ワード S1 [I]をアクセスする第 1メモリ S1と、第 1メモリ S1と同一数の複数の ワード力も構成されるメモリであって、アドレス Iを用いて、ワード S2[I]をアクセスする 第 2メモリ S2とを備えるとともに複数バイトからなるワード単位で、擬似乱数を生成す るコンピュータである擬似乱数生成装置に以下の(1)〜(3)の処理を実行させること を特徴とする。
(1)第 1メモリ SIと第 2メモリ S2との各ワードにそれぞれワード値を設定するとともに、 第 1内部メモリと第 2内部メモリとに初期値を設定する処理
(2)鍵メモリが記憶する鍵情報を用いて、第 1メモリ S1と第 2メモリ S2とに設定された ワードの値に対して鍵スケジューリングをして第 1メモリ S1と第 2メモリ S2とに記憶する 処理
(3)鍵スケジュールされた第 1メモリ S1と第 2メモリ S2とに記憶されたワードを交互に 用いて擬似乱数を生成する処理
発明の効果
[0013] 本発明により、ストリーム暗号方式に対して、動作が高速で、かつ安全性の高い擬 似乱数を生成することができる。
発明を実施するための最良の形態
[0014] 実施の形態 1.
図 1〜図 23を用いて実施の形態 1を説明する。実施の形態 1は、 2つの内部テープ ルを用いて擬似乱数を生成する擬似乱数生成装置及び擬似乱数生成方法及び擬 似乱数生成プログラムに関する。
[0015] 図 1は、実施の形態 1における擬似乱数生成装置 100のブロック図である。擬似乱 数生成装置 100は、各種メモリを備える記憶部 110と、初期化部 120と、鍵スケジュ ール部 130と、ストリーム生成部 140とを備える。
[0016] 記憶部 110は、
(1)生成すべき乱数のストリーム長 Lを記憶するストリーム長メモリ 111、
(2)固定値 (後述する INI1 [0]等)を記憶する固定値メモリ 112、
(3)鍵情報 (後述する K [0]等)を記憶する鍵メモリ 113、
(4)初期値 (後述する 0x01、 0x12345678)を入力して記憶する初期値メモリ 114、 なお、ここで、初期値である 0x01、 0χ12345678ίま一 f列【こすぎず、これらの値【こ限 定するものではない。 0x01については、 1バイトの値であればどのような値でもよぐ また、 0x12345678については、 4バイトの値であればどのような値でもよい。
(5) 256ワードから構成されるメモリであって、アドレス 1 (1は、 0〜255の整数)を用い て、ワード S 1 [I]をアクセスする第 1メモリ S 1 ( 115)、
(6)第 1メモリ S1 (115)と同一数の複数のワードから構成されるメモリであって、ァドレ ス Iを用いて、ワード S2 [I]をアクセスする第 2メモリ S2 (116)、
(7)アドレス Iとなる値を記憶する第 1内部メモリ 117 (後述の B1)、
(8)ワード単位の値を記憶する第 2内部メモリ 118 (後述の < B4>)
等のメモリを備える。これらのメモリは、キャッシュメモリや、フラッシュメモリや、ランダ ムアクセスメモリや、固定ディスクや、光ディスクにより実現することができる。
[0017] 初期化部 120は、固定値メモリ 112に記憶された固定値を用いて、第 1メモリ Sl (l 15)と第 2メモリ S2 (116)との各ワードにそれぞれワード値を設定するとともに、第 1 内部メモリ 117と第 2内部メモリ 118とに初期値を設定する。初期化部 120の動作の 詳細は、図 5〜図 8の説明で後述する。
[0018] 鍵スケジュール部 130は、鍵メモリ 113が記憶する鍵情報を用いて、第 1メモリ S1 ( 115)と第 2メモリ S2 (116)とに設定されたワードの値に対して鍵スケジューリングをし て第 1メモリ S 1 ( 115)と第 2メモリ S2 ( 116)とに記憶する。鍵スケジュール部 130の動 作の詳細は、図 9〜図 15の説明で後述する。
[0019] ストリーム生成部 140は、第 1メモリ S1 (115)と第 2メモリ S2 (116)とに記憶されたヮ ードを用いて擬似乱数を生成する。ストリーム生成部 140は、第 1乱数生成部 141、 第 1状態変更部 142、第 1入れ替え部 143、第 2乱数生成部 144、第 2状態変更部 1 45、第 2入れ替え部 146、ループ部 147、ノ ッファメモリ 148、再スケジュール部 149 とを備える。これら各構成要素の動作の詳細は、図 16〜図 21の説明で後述する。
[0020] 図 2は、実施の形態 1における擬似乱数生成装置 100の外観を示す図である。図 2 において、擬似乱数生成装置 100は、システムユニット 830、液晶表示装置 813、キ 一ボード 814、マウス 815、コンパクトディスク装置(CDD) 818、プリンタ 819を備え、 これらはケーブルで接続されている。また擬似乱数生成装置 100は、インターネット 8 40に接続されており、擬似乱数による暗号を用いて Webサーバ 850と通信可能であ る。
[0021] 図 3は、実施の形態 1における擬似乱数生成装置 100のハードウェア構成図である 。図 3において、擬似乱数生成装置 100は、プログラムを実行する CPU (Central P rocessing Unit) 810を備えている。 CPU810は、ノ ス 825を介して ROM811、 R AM812、液晶表示装置 813、キーボード 814、マウス 815、通信ボード 816、 FDD ( Flexible Disk Drive) 817、 CDD818、プリンタ 819、磁気ディスク装置 820と接 続されている。 RAM812は、揮発性メモリの一例である。 RAM812は、例えばバッ ファメモリ 148の一例である。 ROM811、 FDD817、 CDD818、磁気ディスク装置 8 20は不揮発性メモリの一例である。これらは、記憶部 110の一例である。
[0022] 擬似乱数生成装置 100は、通信ボード 816を介してインターネット 840に接続され ている。また、通信ボード 816、キーボード 814、 FDD817などは、データ入力部の 一例である。また、例えば、通信ボード 816、液晶表示装置 813、磁気ディスク装置 8 20などは、出力部の一例である。
[0023] 磁気ディスク装置 820には、オペレーティングシステム(OS) 821、ウィンドウシステ ム 822、プログラム群 823が記憶されている。また、磁気ディスク装置 820のメモリ領 域 824には、図 1で示した記憶部 110の各種メモリが対応する。プログラム群 823は、 CPU810, OS821、ウィンドウシステム 822により実行される。
[0024] 上記プログラム群 823には、図 1で「〜部」として説明した機能を実行するプログラム が記憶されている。例えば、上記プログラム群 823には、図 1の初期化部 120、鍵ス ケジュール部 130及びストリーム生成部 140の機能を実行するプログラムが記憶され ている。プログラムは、 CPU810により読み出され実行される。
[0025] また、図 1で「〜部」として説明したものは、 CPU810により実行され、あるいは処理 されるものであり、 ROM811に記憶されたファームウェアで実現されて 、ても構わな い。或いは、ソフトウェアのみ、或いは、ハードウェアのみ、或いは、ソフトウェアとハー ドウエアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構 わない。
[0026] また、以下に述べる実施の形態を実施するプログラムは、また、磁気ディスク装置 8 20、 FD (Flexible Disk)、光ディスク、 CD (コンパクトディスク)、 MD (ミニディスク) 、DVD (Digital Versatile Disk)等のその他の記録媒体による記録装置を用い て記憶されても構わない。
[0027] 次に、図 4〜図 23を用いて擬似乱数生成装置 100の擬似乱数生成方法の動作を 説明する。擬似乱数生成装置 100の動作は、「A.初期化」と、「B.鍵スケジュール」 と、「C.ストリーム生成」とから成る。これら動作の説明の前に、まず、図 4を用いて以 下で使用する記号を説明する。
(1)暗号化鍵 K (鍵情報の一例):
暗号ィ匕鍵 Kは、鍵メモリ 113が記憶する。暗号ィ匕鍵 Kの長さを「Keylen」(バイト)とす る。 1バイト単位で、 K[0]〜K[Keylen— 1]と記載する。
(2)初期値 IV (鍵情報の一例):
初期値 IVは、鍵メモリ 113が記憶する。初期値 IVの長さを「Ivlen」(バイト)とする。 1 バイト単位で、 IV[0]〜IV[Ivlen—l]と記載する。
(3)内部テーブル S1 (第 1メモリ S1 (115) ):
内部テーブル S1は第 1メモリ S1 (115)が記憶するワードにより実現される。以下では 、第 1メモリ S1 (115)を内部テーブル S1と同じ意味で使用する場合がある。内部テ 一ブル S1は、 4ノイト X 256エントリ = 1024ノイトである。 4バイト単位でく S1 [0] > 〜く Sl [255] >と記載できる。なおく S 1 [0] >の「 < >」の記載は、 S 1 [0]が 1ヮー ド (4バイト)であることを示すものとする。なお、 1ワードは 4バイトに限るものではなぐ 2バイト、 6バイト、 8バイトなどでもよい。
(4)内部テーブル S2 (第 2メモリ S2 (116) ):
内部テーブル S2も内部テーブル S1同様に、 4ノイト X 256エントリ = 1024バイトで ある。内部テーブル S2は、第 2メモリ S2 (116)により実現される。以下では、内部テ 一ブル S1と同様に、第 2メモリ S2 (116)を内部テーブル S2と同じ意味で使用する場 合がある。 4バイト単位で < S2[0] >〜< S2[255] >と記載する。
(5)乱数のストリーム長:
生成すべき乱数のストリーム長を「4 X Strlenjと記載する。 4バイト単位で <R[0] > 〜く R[Strlen— 1] >と記載できる。このストリーム長はストリーム長メモリ 111が記憶 している。
(6)第 2内部メモリ 118 :
第 2内部メモリ 118は、 4バイトの値を記憶する。第 2内部メモリ 118をく B4>と示す 場合がある。 (7)第 1内部メモリ 117 :
第 1内部メモリ 117は、 1バイトの値を記憶する。第 1内部メモリ 117を「B1」と示す場 合がある。
[0029] 以下に示す計算式、代入式において、右辺の変数は、 CPU80がメモリ(記憶部 11 0)から値を読み出すことを意味しており、左辺の変数は、 CPU80がメモリ(記憶部 1 10)へ値を書き込むことを表している。また、「記憶する」、「更新する」、「生成する」、 「〜となる。」、「設定する」、「入れ替える」という動作も、 CPU80がメモリ(記憶部 110 )へ値を書き込むことを表して!/、る。
[0030] (A.初期化:(S101) )
次に、図 5〜図 8を用いて初期化について説明する。「初期ィ匕」は、内部テーブル S 1と内部テーブル S2とを生成する処理である。この「初期化」は、後述の図 22におけ る S101に対応する。図 5は、初期化を行なう場合のプログラムを示す。また、図 6は、 図 5の A. 1〜A. 4をフローチャート化した図である。なお、 A. 5〜A. 8は、 A. 1〜A . 4と同様であるので省略した。図 7は、内部テーブル S1 (第 1メモリ S1 (115) )、及び 内部テーブル S2 (第 2メモリ S2 (116) )を初期化する様子を示す図である。図 8は、 具体的な数値により図 7の状態を説明するための図である。
[0031] (1)初期化部 120は、図 6の A. 1〜A. 4において、固定値メモリ 112に記憶された 固定値く INI1 [0] >等を用いて、第 1メモリ Sl (115)の各ワードにワード値を設定 する。同様に初期化部 120は、 A. 5〜A. 8において、固定値メモリ 112に記憶され た固定値く INI2 [0] >等を用いて、第 2メモリ S2 (116)の各ワードにワード値を設定 する。図 7は、初期化部 120がワード値を第 1メモリ S1 (115)と第 2メモリ S2 (116)と に設定した状態を示している。図 7は、初期化部 120が、固定値メモリ 112が記憶す る4バィトの固定値<1^11 [0] >〜<1^[1 [255] >にょり第1メモリ31 (115)にヮー ド値を設定し、また、固定値メモリ 112が記憶する 4バイトの固定値く INI2[0] >〜く INI2[255] >により第 2メモリ S2 (116)にワード値を設定した状態を示している。 <1 Nil [0] >等は前記のように 4バイトの固定値であり、より具体的には、一例として、図 8に示すような値が設定される。
(2)また、初期化部 120は、第 1内部メモリ 117である「B1」と、第 2内部メモリ 118で あるく B4>とに初期値を設定する。この初期値は、初期値メモリ 114に記憶されてい るものである。図 5の A. 9、A. 10では、一例として、初期化部 120が初期値として「B 1」に「0x01」を設定し、 < B4>に「0x12345678」を設定した場合を示した。
[0032] (B.鍵スケジュール:(S 102) )
次に、図 9〜図 15を用いて、鍵スケジュール部 130の実行する鍵スケジュールにつ いて説明する。この「鍵スケジュール」は、後述の図 22〖こおける S 102〖こ対応する。「 鍵スケジュール」とは、鍵情報を用いて内部テーブルの中身を混ぜる処理をいう。本 実施の形態では、「鍵スケジュール」の一例として、暗号化鍵 Kと初期値 IVとを鍵情 報として用いることにより、初期化で生成した内部テーブル S1と内部テーブル S2との 中身を混ぜる場合を説明する。
図 9は、鍵スケジュール部 130が実行するプログラムを示している。
図 10は、図 9のうち B. 1〜: B. 10をフローチャートィ匕した図である。
図 11は、図 9のうち B. 11〜B. 20をフローチャート化した図である。
[0033] また、図 12は鍵スケジュールの概要を説明する図である。図 12を説明する。図 12 は内部テーブル S1を示している。一組の「丸、三角、四角、バッ」は、 4バイトのワード を表している。また、「丸」、「三角」、「四角」、「バッ」は、それぞれ 1バイトを表す。一 組の「丸、三角、四角、バッ」のうち、例えば、
「丸」を 0バイト目、
「三角」を 1バイト目、
「四角」を 2バイト目、
「バッ」を 3バイト目
と呼ぶこととする。
本鍵スケジュールでは、鍵スケジュール部 130が次の処理を実行する。
(1)まず 0バイト目(J = 0)である「丸」の全部(0〜255)について、置換を行なう。 0バ イト目の「丸」を「丸 0」とし、アドレス B1の 0バイト目の「丸」を所定の「丸」とする。スヮッ プ(swap)の対象となる所定の「丸」は、 B. 3、B. 5、 B. 6等による「B1」の値で決まる 即ち、「丸 0」と所定の「丸」とを swapし(B. 4)、 (2)次に、「丸 1」と所定の「丸」とを swapし (B. 4)、
(3)次に、「丸 2」と所定の「丸」とを swapする(B. 4)。
(4)以下、順次これを「丸 255」まで実行する。 swapの対象となる所定の「丸」は、 B. 3、 B. 5、 B. 6等による「B1」の値で決まる。
(5)そして、「丸」を示す J = 0について、「丸 255」(1 = 255)まで終了すると、次に、 J = 1の場合、つまり、 1バイト目である「三角」の全部について同様の処理を実行する。 以下同様に、「四角」 Ci = 2)、「バッ」 Ci = 3)についても実行する。
(6)鍵スケジュール部 130は、内部テーブル S2についても、内部テーブル S1と同様 の処理を実行する(B. 11〜B. 20)。
[0034] 図 13は、図 9の B. 3〜B. 6を図式化したものである。次に図 13について説明する 。前記のように、鍵スケジュールは、鍵スケジュール部 130が行なう処理である。
(1) B. 3において、暗号ィ匕鍵 K (鍵情報の一例)をもとに第 1内部メモリ 117である「B 1」にアドレスを設定する。
(2) B. 4において、設定されたアドレス「B1」から S1 [B1]が決まる。ここで、 S1 [B1] は、前記で述べたように 4バイトであるく S1 [B1] >のうち Jバイト目(J = 0, 1, 2, 3の いずれか)を示す。 B. 4において、 S1 [B1]と S1 [I]とを入れ替える(swapする)。な お Iは 0〜255の整数である。
(3) B. 5において、初期値 IV (鍵情報の一例)をもとに、「B1」(第 1内部メモリ 117) にアドレスを設定する。
(4) B. 6において、 B. 5で設定された「B1」力 S2[B1]が決まり、 S2[B1]と S2[I] とを元に、第 1内部メモリ 117である「B1」にアドレスを設定する。
[0035] 図 14、図 15は、具体的な数値を用いて図 12を説明する図である。図 14は B. 1〜 B. 6の過程の具体的な状態を説明する図である。図 15は B. 7→B. 8→B. 3→B. 6 の過程の具体的な状態を説明するための図である。以下では、図 14、図 15を用い て B鍵スケジュールを具体的に説明する。
[0036] 以下は、鍵スケジュール部 130の動作である。
(1) B. 1において、 J = 0とする。すなわち、内部テーブル Sl、内部テーブル S2の 0 バイト目についての処理である。 (2) B.2において、 1 = 0とする。
(3) B.3において、 Bl = 3となる。詳細は次の様である。
鍵スケジュール部 130は、
Bl= (Bl+K[l%Keylen])%256
を設定する。この場合、図 14に示す様に
B1 = 1(A.9による)、
1 = 0、
Keylen=16(仮定した)、
K[0]=2(仮定した)
とする。よって、
Bl= (Bl+K[l%Keylen])%256
= (1+K[0%16])%256
= (1+Κ[0])%256
= (1 + 2)%256
=3
となる。
よって、 Β1 = 3となる。
(4) Β.4において、鍵スケジユーノレ部 130は、 SI [0] と Sl[3] とを入れ替える(スヮ
0 0
ップする)。
詳細は次の様である。
鍵スケジュール部 130は、 Swap(Sl[I] , S1[B1] )を実行する。本設例では、 I = 0、J = 0、 Bl = 3(前記 B.3による)より、
Swap(Sl[l] , S1[B1] )
= Swap(Sl[0] , SI [3] )
ο ο
である。
よって、鍵スケジュール部 130は、 SI [0] と SI [3] とを入れ替える。
0 0
(5) B.5において、鍵スケジュール部 130は、 B1 =4を設定する。
詳細は次の様である。 () xor8 =
(()%)^xor3 + 5256 =
Figure imgf000017_0001
Figure imgf000017_0002
(〔//O0 BlBl +IVIVlen26 = 0
13〇 =12
となる。よって、 Bl = 12である。
次に図 15を用いて、 B.7→B.8→B.3→B.6の過程を具体的に説明する。
(1) B.7において、 1=1+1となる。
よって、 1 = 0+1 = 1となる。
(2)また、 1=1であるので、 B.8において B.3へ進む。
(3) B.3において、鍵スケジュール部 130は、 Bl = 14を設定する。
詳細は次の様である。
鍵スケジュール部 130は、
Bl= (Bl+K[l%Keylen])%256
により、あらたに Blを設定する。
この場合、
B 1 = 12 (前記 B .6による)、 1=1、 Keylen = 16である。
また、 K[l]=2と仮定する。
よって、
Bl= (Bl+K[l%Keylen])%256
= (12+K[1%16])%256
= (12+Κ[1])%256
= (12 + 2)%256
=14
となる。よって、 Β1 = 14となる。
(4) Β.4において、鍵スケジュール部 130は、 SI [1] と Sl[14] とを入れ替える。
0 0
詳細は次の様である。
鍵スケジュール部 130は、 Swap(Sl[I] , S1[B1] )を実行する。本設例では、 I=1、J = 0、 Bl = 14(前記 B.3による)より、
Swap(Sl[l] , S1[B1] )
= Swap(Sl[l] , Sl[14] )
ο ο
である。 よって、鍵スケジュール部 130は、 SI [1] と SI [14] とを入れ替える。
0 0
(5) B.5において、鍵スケジュール部 130は、 Bl = 17を設定する。 詳細は次の様である。
鍵スケジュール部 130は、
Bl= (Bl+IV[l%Ivlen])%256
により Blを設定する。
この場合、
1=14(前記8.3による)、 1=1、 Ivlen=16である。
また、 IV[1]=3と仮定する。
よって、
Bl= (Bl+IV[l%Ivlen])%256
= (14+IV[1%16])%256
= (14+IV[1])%256
= (14 + 3)% 256
=17
となる。よって、 Bl = 17である。
(6) B.6において、鍵スケジュール部 130は、 Bl = 25を設定する。 詳細は次の様である。
鍵スケジュール部 130は、
Bl = Blxor((S2[l] +S2[B1] ) %256)
により、あらたに B1を設定する。
この場合、
1=17(前記8.5による)、 1=1、 J = 0である。
また、
S2[l] =7、S2[17] =1
o o
と仮定する。
よって、
Bl = Blxor((S2[l] +S2[B1] ) %256) = 17xor((S2[l] +S2[17] )%256)
o o
= 17xor((7+l)%256)
= 17xor8
=25
となる。よって、 Bl = 25である。
(7)このようにして、
内部テーブル SIにおいて、 B. 1〜B. 10を実行することにより、
内部テーブル S 1にお!/、て、
j = 0(0ノ ィ卜目)【こつ 、て、
S1[0] と所定の相手とが入れ替えられ、
0
Sl[l] と所定の相手とが入れ替えられ、
0
Sl[255] と所定の相手とが入れ替えられる。
0
同 に
J= 1(1バイト目)について、
S1[0] と所定の相手とが入れ替えられ、
Sl[l] と所定の相手とが入れ替えられ、
Sl[255] と所定の相手とが入れ替えられる。
J = 2 (2バイト目)、 J = 3 (3バイト目)の場合につ ヽても同様である。
以上のように、鍵スケジュール部 130により、鍵スケジュールが実行される。
[0038] なお、図 9に示す様に、内部テーブル S1に対する鍵スケジュールのアルゴリズム(B . 1〜: B. 10)と、内部テーブル S2に対する鍵スケジュールのアルゴリズム(B.11〜: B .20)のアルゴリズムとは同じであるため兼用することができる。これによりプログラム サイズは、両者を作成する場合に比べて半分になる。
[0039] (C.ストリーム生成(S103))
次に、図 16〜図 21を用いて、ストリーム生成部 140の実行する擬似乱数の生成を 説明する。ストリーム生成は、内部テーブル S1と内部テーブル S2との役割を交互に 変えながら、乱数列を生成する処理である。
図 16は、ストリーム生成部 140の各構成要素が実行するプログラムを示している。 図 17は、図 16をフローチャートィ匕した図である。
図 18は、 C.2〜C.4を図式化したものである。
[0040] 図 18を簡単に説明する。擬似乱数生成装置 100は、次の動作を実行する。
(1) C.2において、第 2内部メモリ 118に設定された B4力もく S1[B4 ]>を決定し 、 B4力、らく S2[B4 ]>を決定する。そして、く S1[I]>とく S1[B4 ]>とく S2[B4
0 0 1
] >とからく RQ[] >を生成する。ここで、 B4は、 4バイトの値であるく B4>の下位 1
0 0
バイト目の値を示す。 B4は、 4バイトの値であるく B4>の下位 2バイト目の値を示す 。後述する図 19の第 2内部メモリ 118を例に取れば、 B4 =78 であり、 B4 =56
0 (16) 1 (1 である。なお以下の説明には、く B4>に 16進数で記憶されている数値を使用する
6)
ため「78 」等と記載し、添え字(16)により「78」が 16進数であることを示す。添え
(16)
字のない値は、 10進数であることを示す。
(2) C.3において、 <S1[B4 ]>と <S2[B4 ]>とに基づいて、 <S1[I]>を新た
1 0
に生成する。
(3) C.4において、 <S2(I)>力 新たに B4を更新する。
(4)以上において、 <RQ[]>は、 <S1[B4 ]>, <S1[I]>, <S2[B4 ]>から生
1 0 成される力 次の内部状態を決定するのは、この 3つの値と <B4>の他に <S2[I] >がある(C.4)。このく S2[I]>の値は、く RQ[]>には直接的には影響を与えない 。すなわちく RQi] >力らく S2[I] >の値を推測することは不可能であり安全性が高 まる。このため、攻撃者は生成されたく RQ[] >力 く S2[I] >を推測することが困難 となり安全性が向上する。
[0041] 図 19、図 20は、具体的な数値を用いて図 18を説明するための図である。以下では 、図 19、図 20を参照して具体的な数値を用いて擬似乱数の生成を説明する。
[0042] まず、図 19を参照して C.1〜C.4の過程を説明する。
[0043] (1)C.1において、 1 = 0、 J=0とする。
また、初期化部 120が、第 2内部メモリ 118に
<B4> =0x12345678 を設定しているものとする。
(2)C.2において、第 1乱数生成部 141が、く R[0] > = 7を生成する。
詳細は次の様である。
第 1乱数生成部 141は、
<RQi]> = <Sl[l]>xor<Sl[B4 ]>xor<S2[B4 ]>
1 0
を実行して、乱数く RQi] >を生成する。
この場合、
J = 0、 1 = 0、 B4 =56 、B4 =78 である。
1 (16) 0 (16)
また、図 19に示す様に
く Sl[0]> = 2、く Sl[56 ]> =1、く S2[78 ]>=4
(16) (16)
と仮定する。
この場合、
<R[0]> = <Sl[0]>xor<Sl[56 ]>xor<S2[78 ]>
(16) (16)
= 2xorlxor4
=7
となる。よって、
く R[0]> = 7となる。
(3)C.3において、第 1状態変更部 142が、く S1[B4 ]>と、く S2[B4 ]>とを演
1 0 算してシフトし、シフトした値を用いてく S1[I] >の値を書き換える。
すなわち、第 1状態変更部 142は、
<Sl[l]> = (<Sl[l]>+ROTL((<Sl[B4 ]>xor<S2[B4 ]>), 1))%23
1 0
を実行する。
ここで、 ROTL(x, s)は、 32ビットデータ Xを左に sビット回転シフトすることを示す。 例えば、 ROTL(5, 1)であれば、 10進数の「5」は、 2進数表記で
「00···0101 」
(2)
である。
よって、
ROTL(5, 1) =「00····1010 」 となり、 10進数表記で、 10である。
よって、
ROTL(5, 1)=10
である。
今 I = 0であるので、左辺は < S 1 [0] >である。また、右辺の < S 1 [0] >等は、 C.2 のく R[0] >の右辺の値と同じである。よって、右辺の各値は、
く Sl[0]> = 2、く Sl[56 ]> =1、く S2[78 ]>=4
(16) (16)
である。
よって、
<S1[0]> = (<S1[0]>+ROTL((<S1[56 ]>xor<S2[78 ]>), 1))
(16) (16)
%232
= (2+ROTL((lxor4), 1))%232
= (2+ROTL(5, 1))%232
=(2+10)%232
=12
となる。
よって、く Sl[0]> = 12となる。
図 19に示す様に、く S1[0]>は、 2→12に書き換えられる。
(4)C.4において、第 1入れ替え部 143が、第 2内部メモリ 118であるく B4>に記憶 されたワードの上位と下位の値を入れ替える。
すなわち、第 1入れ替え部 143は、
<B4>=ROTL(((<B4> + <S2[l]>)%232), 16)
を実行する。
ここで、
右辺のく B4> =0x12345678、
また、 1 = 0である。
また、
<S2[0]> = 1と仮定する。 。^r w¾,
〔〔S2122sl316 <〉<〉
Figure imgf000024_0001
〔〕0046
, ( ( ()/ J)0:ROTL0X123678 + 1216 = 0
, ( ( (〔〕 )/ J)0:ROTL B + S20216 <〉 <〉 = 0 ,(((〔)/))OB:ROTLB4 +s2216 < v<v < V=o この場合、
<R[0] > = <S2[0] >xor<S2[12 ]>xor<Sl[34 ]>
(16) (16)
= lxor2xorlb
=19
となる。よって、
<R[1]> = 19となる。
(8) C.8において、第 2状態変更部 145が、
<S2[B4 ]>と、 <S1[B4 ]>とを演算してシフトし、シフトした値を用いてく S2[I]
1 0
>の値を書き換える。
すなわち、第 2状態変更部 145は、
<S2[l]> = (<S2[l]>+ROTL((<S2[B4 ]>xor<Sl[B4 ]>), 1))%232
1 0
を実行する。
ここで、
右辺の <S2[I] >等は、 C.7のく RQ[] >の右辺の値と同じである。よって、右辺の 各値は、
<S2[0]> = 1
<S2[12 ]> = 2、
(16)
<S1[34 ]> =16
(16)
である。よって、
<S2[0]> = (<S2[0]>+ROTL((<S2[12 ]>xor<Sl[34 ]>), 1))
(16) (16)
%232
= (l+ROTL((2xorl6), 1))%232
=37
となる。
よって、 <S2[0]> = 37となる。
図 20に示す様に、 <S2[0]>は、 1→37に書き換えられる。
(9) C.9において、第 2入れ替え部 146が、第 2内部メモリ 118であるく B4>に記憶 されたワードの上位と下位の値を入れ替える。 すなわち、第 2入れ替え部 146は、
<B4>=ROTL (((<B4> + <S1[I]>) %232) , 16)
を実行する。
ここで、
<B4> =0x56791234,
1 = 0、
及びく S 1 [0] > = 12 (C.3で書き換えられて 、る)である。
よって、
<B4>=ROTL(((<B4> + <S2[l]>)%232), 16)
=ROTL (((く B4> + < SI [0] >) %232) , 16)
=ROTL ( ( (0x56791234+12〉) %232) , 16)
=ROTL( (0x56791246), 16)
=0x12465679
となる。
(10)ループ部 147は、ストリーム長メモリ 111に記憶したストリーム長になるまで、第 1 乱数生成部 141と第 1状態変更部 142と第 1入れ替え部 143の動作と、第 2乱数生 成部 144と第 2状態変更部 145と第 2入れ替え部 146の動作とを繰り返す。
(11)バッファメモリ 148は、第 1乱数生成部 141から出力される擬似乱数 R1と第 2乱 数生成部 144から出力される擬似乱数 R2とを入力して一時的に保持して擬似乱数 ストリームとして出力する。
( 12)再スケジュール部 149は、ノッファメモリ 148に出力した擬似乱数のストリーム 長力 所定の再スケジュール長になった場合に、鍵スケジュール部 130を動作させ、 鍵スケジュールをやり直す (C.11)。ここで、所定の「再スケジュール長」とは、例えば
「内部テーブルのワード数 Xワードのバイト数 Xメモリの数 X第 2内部メモリが一巡す るシフト回数(32回、 C.4及び C.9による))」を用いる。
ここで、
(a)「内部テーブルのワード数」とは、内部テーブル S1あるいは内部テーブル S2のヮ ード数をいい本実施の形態 1の場合は、 256である。
(b)「ワードのバイト数」とは、内部テ一部の 1ワードのバイト数であり、 4である。
(c)「メモリの数」とは、第 1メモリ S1と第 2メモリ S2との 2つである。
(d)「第 2内部メモリ 118がー巡するシフト回数」とは、 C. 4あるいは C. 9においてメモ リ< 4>がー巡するシフト回数を意味し、 32回である。
(a)〜(d)によれば、「再スケジュール長」は、一例として、
「再スケジュール長」 = 256 X 4 X 2 X 32
= 65536ノイト(16384ワード)
= 64KBとなる。
図 17のフローチャートで説明すれば、 C. 11において、再スケジュール部 149は、擬 似乱数列の長さ (Jの値)が所定の「再スケジュール長」である Strlenになったかどうか を判断する。再スケジュール部 149は、「再スケジュール長」になったと判断した場合 には、図 10の(A)に進み、鍵スケジュール部 130を動作させ鍵スケジュールをやり直 す。
(13)擬似乱数生成装置 100は、ストリーム生成部 140の生成した擬似乱数ストリー ム R[0]、 R[l] · · ·と平文とを XOR (排他的論理和)して、暗号文を作成する。
[0047] 以上のストリーム生成では、内部テーブル S1と内部テーブル S2と力 「乱数生成」 と「アドレス生成」との役割を交代しながら、順次、擬似乱数 Rを生成していく。これに 対し、従来の RC4は、一つのテーブルで行なっていた。
[0048] なお、以上の擬似乱数生成装置 100による擬似乱数の生成方法では、内部テープ ル S1と内部テーブル S 2との 2つを使用することにより、擬似乱数を生成した。しかし、 これは一例であり、 3つの内部テーブルに基づき擬似乱数を生成してもよいし、 4つ の内部テーブルに基づき擬似乱数を生成してもよ 、。 V、くつの内部テーブルを用い ても構わない。
[0049] 擬似乱数生成装置 100の初期化部 120、鍵スケジュール部 130、ストリーム生成部 140の一連の動作は互いに関連しており、これらの一連の動作を擬似乱数生成方法 として把握することができる。
[0050] 図 22は、擬似乱数生成装置 100の初期化部 120等の動作を擬似乱数生成方法と して把握した場合のフローチャートを示す。
(1) S101は、初期化部が、第 1メモリ S1と第 2メモリ S2との各ワードにそれぞれワード 値を設定するとともに、第 1内部メモリと第 2内部メモリとに初期値を設定するステップ である。
(2) S102は、鍵スケジュール部力 鍵メモリが記憶する鍵情報を用いて、第 1メモリ S 1と第 2メモリ S2とに設定されたワードの値に対して鍵スケジュールをして第 1メモリ S1 と第 2メモリ S2とに記憶するステップである。
(3) S103は、ストリーム生成部力 鍵スケジュール部により鍵スケジュールされた第 1 メモリ S1と第 2メモリ S2とに記憶されたワードを交互に用いて擬似乱数を生成するス テツプである。
[0051] また、擬似乱数生成装置 100における初期化部 120、鍵スケジュール部 130、スト リーム生成部 140の一連の動作は、一連の処理に置き換えることにより、プログラムの 実施形態として把握することができる。
[0052] 図 23は、擬似乱数生成装置 100の初期化部 120等の動作を、コンピュータである 擬似乱数生成装置 100に実行させるための一連の処理力もなる擬似乱数生成プロ グラムとして把握した場合のフローチャートを示す。
(1) S201は、第 1メモリ S1と第 2メモリ S2との各ワードにそれぞれワード値を設定する とともに、第 1内部メモリと第 2内部メモリとに初期値を設定する処理である。
(2) S202は、鍵メモリが記憶する鍵情報を用いて、第 1メモリ S1と第 2メモリ S2とに設 定されたワードの値に対して鍵スケジュールをして第 1メモリ S1と第 2メモリ S2とに記 憶する処理である
(3) S203は、鍵スケジュールされた第 1メモリ S1と第 2メモリ S2とに記憶されたワード を交互に用いて擬似乱数を生成する処理である。
[0053] なお、図 16に示す C. 2では、内部テーブル S1のワード値く S1 [I] >、及びく Sl [ B4 ] >の他、内部テーブル S2のワード値く S2[B4 ] >を用いた。また、 C. 7では、
1 0
内部テーブル S2のワード値く S2[I] >、及びく S2[B4 ] >の他、内部テーブル S1 のワード値く S1 [B4 ] >を用いた。これは一つの例である。擬似乱数生成装置 100
0
のストリーム生成部 140は、鍵スケジュール部 130により鍵スケジュールされた内部テ 一ブル S 1(第 1メモリ Sl(115))と内部テーブル S 2 (第 2メモリ S 2 ( 116) )とに記憶さ れたワードを交互に用いて擬似乱数を生成しても構わない。
その場合、
C.2において
<RQi]> = <Sl[l]>xor<Sl[B4 ]> (式 1)
を実行し、
C.7において
<RQi]> = <S2[l]>xor<S2[B4 ]> (式 2)
を実行する。
この場合、図 18 (上記(式 1)に対応)において、く RQ[]>とく S2[B4 ]>との関係
0
が遮断されるため、攻撃者は生成された RQi]の値力 内部状態を予想することが困 難となるため安全性が向上する。
図 21を用いて、上記(式 1)、(式 2)を用いた場合の、ストリーム生成部 140の別の 動作例を説明する。
(1)ストリーム生成部 140の第 1乱数生成部 141は、第 1メモリ Sl(115)の値から、第 1メモリ S1 (115)のアドレスを生成し、生成されたアドレスの第 1メモリ S1 (115)のヮ 一ドの値力 擬似乱数を生成する (C.9及び上記 (式 1)とした C.2)。すなわち、図 2 1に示す様に、第 1乱数生成部 141は、 C.9において、第 1メモリ Sl(115)の値 S1[I ]から、 C.2で <S1[B4 ]>のアドレスとなるべき <B4>を生成する(ST1)。
そして、 C.9において第 1乱数生成部 141は、生成されたアドレス B4の第 1メモリ S1 (115)のヮード値<31^4 ]>を特定し 丁2)、上記の(式1)にょり、特定したヮー ド値く S 1 [B4 ] >とく S 1 [I] >とから擬似乱数く R >を生成する (ST3)。
(2)図 21に示す様に、次に ST4において、役割が内部テーブル S1 (第 1メモリ SI (1 15) )から内部テーブル S2 (第 2メモリ S2 (116) )に移る。ストリーム生成部 140の第 2 乱数生成部 144は、第 2メモリ S2 (116)の値から、第 2メモリ S2 (116)のアドレスを生 成し、生成されたアドレスの第 2メモリ S2 (116)のワードの値力も擬似乱数を生成す る(C.4及び上記 (式 2)とした C.7)。すなわち、第 2乱数生成部 144は、 C.4にお いて、第 2メモリ S2(116)の値 S2[I]力ら、 C.7でく S2[B4 ]>のアドレスとなるべき < B4>を生成する(ST5)。そして、 C. 7において第 1乱数生成部 141は、生成され たアドレス B4の第 2メモリ S2 (116)のワード値く S2[B4 ] >を特定し(ST6)、上記 の(式 2)により、特定したワード値く S2[B4 ] >とく S2[I] >とから擬似乱数く R' > を生成する(ST7)。
(3)以上(1)、 (2)のように第 1乱数生成部 141と第 2乱数生成部 144とは、第 1メモリ Sl (115)と第 2メモリ S2 (116)とに記憶されたワードを交互に用いて擬似乱数 R、R '等を生成する。
[0055] 前述した擬似乱数生成装置及び擬似乱数生成方法及び擬似乱数生成プログラム は、ストリーム型の暗号の発生装置である力 テキスト(平文)の暗号装置としても使え るし、暗号文の復号装置としても用いることができる。
[0056] また、前述した擬似乱数生成装置及び擬似乱数生成方法は、図 3あるいは図 23に 示したように、コンピュータで動作させるプログラム (ソフトウェア)として実現できる。プ ログラムで実現した場合は、そのプログラムを内蔵した半導体チップや ICチップとし ても実現することができ、どのような電子機器にも用いることができる。
[0057] 例えば、前述した擬似乱数生成装置及び擬似乱数生成方法及び擬似乱数生成プ ログラムの好適な適用例としては、ワープロ文章の暗号または復号、 Eメールテキスト の暗号または復号、インターネットやローカルエリアネットワークの通信データの暗号 または復号、携帯電話と基地局との通信データの暗号または復号、 ICタグや ICカー ドのデータの暗号または復号などが考えられる。
[0058] 特に、メモリ容量に限りのある小型機器 (携帯電話、 ICタグ、 ICカード)の通信デー タの暗号または復号に適して 、る。
[0059] 本実施の形態 1の擬似乱数生成装置は、第 1メモリ S1と第 2メモリ S2とに対して鍵 スケジュールを行なう鍵スケジュール部と、鍵スケジュールされた第 1メモリ S1と第 2メ モリ S2とに記憶されたワードを交互に用いて擬似乱数を生成するストリーム生成部と を備えたので、解読攻撃に対する安全性を向上することができる。また、ストリーム生 成部は、ワード単位を対象として擬似乱数を生成するので、処理の高速化を実現す ることがでさる。
[0060] 本実施の形態 1の擬似乱数生成装置は、第 1乱数生成部が第 1メモリ S1を用いて 擬似乱数を生成し、第 2乱数生成部が第 2メモリ S2を用いて擬似乱数を生成するとと もに、第 1乱数生成部と第 2乱数生成部とが交互に擬似乱数を生成する。よって、解 読攻撃に対する安全性を向上することができる。
[0061] 本実施の形態 1の擬似乱数生成装置は、鍵スケジュール部が、ワード単位で構成 された複数の内部テーブル (第 1メモリ S1及び第 2メモリ S2)に対して鍵スケジュール を実施する。よって、非常に大きな空間での置換が可能となり、解読攻撃に対する安 全性を向上することができる。
[0062] 本実施の形態 1の擬似乱数生成装置は、ストリーム生成部が 2つの内部テーブル に基づき乱数を生成するので、解読攻撃に対する安全性を向上することができる。
[0063] 従来技術ではバイト単位の処理であつたのに対して、実施の形態 1の擬似乱数生 成装置 100は、ストリーム生成部 140が、ワード単位 (4バイト)で擬似乱数を生成する ので、高速ィ匕を実現することができる。
[0064] また、バイト単位の処理では、一つの内部テーブルに実現される要素は 0〜255ま での 256通りであつたのに対して、実施の形態 1の擬似乱数生成装置 100は、鍵スケ ジュール部 130力 ワードを対象として処理することで、 0〜232— 1までの 232通りと、 非常に大きな空間での置換を可能とし、安全性を向上することができる。
[0065] 従来技術では一つの内部テーブルで置換を繰り返すものであつたのに対して、実 施の形態 1の擬似乱数生成装置 100は、鍵スケジュール部 130が、内部テーブル S 1と内部テーブル S2とを交互に作用させて置換を繰り返すので、非常に長 、ランダ ム性 (周期性)を実現することができる。また、ストリーム生成部 140が、内部テーブル S 1と内部テーブル S 2とを交互に作用させて置換を繰り返すので、非常に長いランダ ム性 (周期性)を実現することができる。
[0066] 従来技術では 1回の鍵スケジュールを実行した後に、次に鍵が変更されるまでは擬 似乱数生成の処理を連続実行するため、一定以上の処理を実行すると同じ乱数列 が生成されてしまう。これに対して実施の形態 1の擬似乱数生成装置 100は、擬似乱 数の生成処理を一通り最後まで実施した後に、再スケジュール部 149が鍵スケジュ ール部 130を動作させて、擬似乱数の生成に利用する内部テーブル Sl、内部テー ブル S2を更新することにより同じ乱数列の生成を防ぎ、安全性を向上する。 [0067] 従来例は本実施の形態 1の擬似乱数生成装置 100の動作に比べて動作が簡単で あるため、高速に動作するように一見見える。しかし、実際にプログラミングした場合、 本実施の形態 1は格段に高速である。これは、本実施の形態 1では C. 1〜C. 11の ストリーム生成力 バイト単位でおこなわれていることに起因している(従来例では 1バ ト単位)。
[0068] 一方、一般に、テーブル参照型の暗号の安全性 (解読困難性)を高めるためには、 得られたストリーム RQ[]からテーブルの内部状態をできるだけ推測しに《する必要 力 Sある。高速性と安全性を両立させるため、本実施の形態 1の擬似乱数生成装置 10 0では速度を大きく低下させな 、範囲で次のような新たな工夫を行なって 、る。
(1)従来例では内部テーブルが 1つであるのに対して、本実施の形態 1の擬似乱数 生成装置 100では同じサイズの内部テーブルを 2つ持つ。このため、その内部状態 を推測するのは困難であると考えられる。具体的には、従来例では、 256バイトのテ 一ブルの 1状態から 1バイトを生成するのに対し、本実施の形態 1の擬似乱数生成装 置 100では、 2048バイトのテーブルの 1状態力も 4バイトの乱数 RQ[]を生成する。即 ち擬似乱数生成装置 100では、ストリーム 1バイトあたりのエントロピーが従来例の倍 あることになる。
(2)従来例の「Cストリーム生成」では、 RQ[]は S [B]と S [I]から生成され、し力も、この 2つの値と Bが次の内部状態を決定する。これに対して本実施の形態 1の擬似乱数 生成装置 100は、例えば図 18において、 RQ[]は S1 [B4 ] , S1 [I] , S2[B4 ]から生
1 0 成される力 次の内部状態を決定するのは、この 3つの値と B4の他に S2[I]がある。 この S 2 [I]の値は R Q[]には直接的には影響を与えな 、。すなわち R Q[]から S 2 [I]の 値を推測することは不可能であり安全性が高まる。
(3)本実施の形態 1の擬似乱数生成装置 100では、内部テーブル S1と内部テープ ル S2と力 その役割を変えながら交互に内部状態を変えていく。内部テーブル S1と 内部テーブル S2との役割を変えた部分は、例えば図 16の「C. 2〜C. 5」と、「C. 7 〜C. 10」とが対応する。この 2つの部分は、内部テーブル S1と内部テーブル S2とが 入れ替わつただけなので、これらの内部テーブルの先頭アドレスへのポインタを入れ 替えてやりさえすればプログラムを共用することができ、プログラムサイズ削減に役立 つ。
(4)従来例では鍵スケジュールは最初に一回だけ行!、、その後は決して行われなか つた。これに対して、本実施の形態 1の擬似乱数生成装置 100では、 64KBごとに鍵 スケジュールをやり直す処理を行っている。鍵スケジュールは内部テーブル Sl、 S2 の内部状態を完全に変えてしまうので、これによつて解読者による内部状態の再現 はほぼ不可能になってしまう。鍵スケジュールを頻繁に行うと処理速度の低下となる 力 64KB程度であれば、その処理速度低下は問題にならない。
(5)ちなみに、 64KBの根拠は以下の通りである。内部テーブル S1と内部テーブル S 2とがすベて書き換えられるためには、 Iが 0から 255まで動く必要がある。それまでに ストリーム Rは、 256 X 4バイト X 2 = 2KB生成される。さらに内部に 1ビットの回転シフ ト命令が存在するが、この回転は 32回行うと元に戻る。したがって、 2KB X 32回 =6 4KBでデータの変換が一巡するとみなすことができ、鍵スケジュールを行うにはよい タイミングである。
図面の簡単な説明
[図 1]実施の形態 1における擬似乱数生成装置 100の構成図である。
[図 2]実施の形態 1における擬似乱数生成装置 100の外観の一例を示す。
[図 3]実施の形態 1における擬似乱数生成装置 100のハードウェア構成を示す。
[図 4]実施の形態 1における擬似乱数生成装置 100の動作説明に使用する記号の説 明である。
[図 5]初期化部 120が初期化を実行する場合のプログラムである。
[図 6]図 5のフローチャートである。
[図 7]初期化部 120が第 1メモリ Sl (115)、第 2メモリ S2 (116)にワード値を設定する 様子を示す図である。
[図 8]初期化部 120が第 1メモリ Sl (115)、第 2メモリ S2 (116)にワード値を設定した 場合の具体例を示す図である。
[図 9]鍵スケジュール部 130が鍵スケジュールを行う場合のプログラムである。
[図 10]図 9の B. 1〜: B. 10のフローチャートである。
[図 11]図 9の B. 11〜: B. 20のフローチャートである。 [図 12]鍵スケジュールの概要を説明する図である。
[図 13]図 10の B. 3〜: B. 6の図式化である。
[図 14]図 13を具体的な数値で説明する図である。
[図 15]図 13を具体的な数値で説明する図である。
[図 16]ストリーム生成部 140がストリーム生成を行う場合のプログラムである。
[図 17]図 16のフローチャートである。
[図 18]図 16の C. 2〜C. 4を図式化したものである。
[図 19]図 18を具体的な数値で説明する図である。
[図 20]図 18を具体的な数値で説明する図である。
[図 21]ストリーム生成部 140の別の動作例を示す図である。
[図 22]擬似乱数生成方法のステップを示す図である。
[図 23]擬似乱数生成プログラムの処理工程を示す図である。
[図 24]従来技術を説明する図である。
[図 25]従来技術を説明する図である。
符号の説明
100 擬似乱数生成装置、 110 記憶部、 111 ストリーム長メモリ、 112 固定値メ モリ、 113 鍵メモリ、 114 初期値メモリ、 115 第 1メモリ Sl、 116 第 2メモリ S2、 1 17 第 1内部メモリ、 118 第 2内部メモリ、 120 初期化部、 130 鍵スケジュール部 、 140 ストリーム生成部、 141 第 1乱数生成部、 142 第 1状態変更部、 143 第 1 入れ替え部、 144 第 2乱数生成部、 145 第 2状態変更部、 146 第 2入れ替え部、 147 ノレープ咅、 148 ノ ッファメモリ、 149 再スケジユーノレ咅、 810 CPU, 811 ROM, 812 RAM, 813 液晶表示装置、 814 キーボード、 815 マウス、 816 通信ボード、 817 FDD, 818 CDD、 819 プリンタ、 820 磁気ディスク装置、 82 1 OS、 822 ウィンドウシステム、 823 プログラム群、 824 メモリ領域、 825 ノス、 830 システムユニット、 840 インターネット、 850 Webサーバ。

Claims

請求の範囲
[1] 複数バイトからなるワード単位で、擬似乱数を生成する擬似乱数生成装置におい て、
鍵情報を記憶する鍵メモリと、
複数のワードからなり、アドレス 1 (1は、 0以上の整数)を用いて、ワード S1 [I]をァク セスする第 1メモリ S1と、
第 1メモリ S1と同一数の複数のワード力も構成されるメモリであって、アドレス Iを用 いて、
ワード S2[I]をアクセスする第 2メモリ S2と、
第 1メモリ S1と第 2メモリ S2との各ワードにそれぞれワード値を設定するとともに、第 1内部メモリと第 2内部メモリとに初期値を設定する初期化部と、
鍵メモリが記憶する鍵情報を用いて、第 1メモリ S1と第 2メモリ S2とに設定されたヮ ードの値に対して鍵スケジューリングをして第 1メモリ S1と第 2メモリ S2とに記憶する 鍵スケジュール部と、
鍵スケジュール部により鍵スケジュールされた第 1メモリ S1と第 2メモリ S2とに記憶さ れたワードを交互に用いて擬似乱数を生成するストリーム生成部と
を備えたことを特徴とする擬似乱数生成装置。
[2] 前記ストリーム生成部は、
第 1メモリ S1のワードの値から、第 1メモリ S1のアドレスを生成し、生成されたァドレ スの第 1メモリ S1のワードの値力も擬似乱数を生成する第 1乱数生成部と、
第 2メモリ S2のワードの値から、第 2メモリ S2のアドレスを生成し、生成されたァドレ スの第 2メモリ S2のワードの値力も擬似乱数を生成する第 2乱数生成部と、 を備えたことを特徴とする請求項 1記載の擬似乱数生成装置。
[3] 数バイトからなるワード単位で、擬似乱数を生成する擬似乱数生成装置において、 鍵スケジュールされた値を記憶する複数のワードからなり、アドレス 1 (1は、 0以上の 整数)を用いて、ワード S1 [I]をアクセスする第 1メモリ S1と、
第 1メモリ S1と同一数の複数のワードから構成されるメモリであって、鍵スケジユー ルされた値を記憶する複数のワード力 なり、アドレス Iを用いて、ワード S2[I]をァク セスする第 2メモリ S2と、
第 1メモリ S1と第 2メモリ S2とに記憶されたワードを交互に用いて擬似乱数を生成 するストリーム生成部と
を備えたことを特徴とする擬似乱数生成装置。
[4] n(l≤n≤N、 Nは 1以上の整数)バイトからなるワード単位で、擬似乱数を生成する 擬似乱数生成装置において、
生成すべき乱数のストリーム長 Lを記憶するストリーム長メモリと、
固定値を記憶する固定値メモリと、
鍵情報を記憶する鍵メモリと、
初期値を入力して記憶する初期値メモリと、
256ワード力も構成されるメモリであって、アドレス 1 (1は、 0〜255の整数)を用いて 、ワード S1 [I]をアクセスする第 1メモリ S1と、
第 1メモリ S1と同一数の複数のワード力も構成されるメモリであって、アドレス Iを用 いて、ワード S2[I]をアクセスする第 2メモリ S2と、
アドレス Iとなる値を記憶する第 1内部メモリと、
ワード単位の値を記憶する第 2内部メモリと、
鍵メモリが記憶する鍵情報と初期値メモリが記憶する初期値とを用いて第 1内部メモ リの値 Iを更新し、第 1内部メモリの値をアドレス Iとして、第 1メモリ S1の先頭ワードから 最後のワードまでの各ワードの n番目のバイトの値と第 1メモリ S1のアドレス Iのワード S1 [I]の n番目のバイトの値とをスワップし、さらに、第 1内部メモリの値をアドレス Iとし て、第 2メモリ S2の先頭ワードから最後のワードまでの各ワードの n番目のバイトの値 と第 2メモリ S2のアドレス Iのワード S2[I]の n番目のバイトの値とをスワップして、第 1 から第 N番目のバイトまでスワップを繰り返し、第 1メモリ S1と第 2メモリ S2とに記憶さ れたワードに対して鍵スケジューリングをする鍵スケジュール部と、
鍵スケジュール部により鍵スケジュールされた第 1メモリ S1と第 2メモリ S2とに記憶さ れたワードを交互に用いて擬似乱数を生成するストリーム生成部と
を備えたことを特徴とする擬似乱数生成装置。
[5] n(l≤n≤N、 Nは 1以上の整数)バイトからなるワード単位で、擬似乱数を生成する 擬似乱数生成装置において、
生成すべき乱数のストリーム長 Lを記憶するストリーム長メモリと、
固定値を記憶する固定値メモリと、
鍵情報を記憶する鍵メモリと、
初期値を入力して記憶する初期値メモリと、
256ワード力も構成されるメモリであって、アドレス 1 (1は、 0〜255の整数)を用いて 、ワード S1 [I]をアクセスする第 1メモリ S1と、
第 1メモリ S1と同一数の複数のワード力も構成されるメモリであって、アドレス Iを用 いて、ワード S2[I]をアクセスする第 2メモリ S2と、
アドレス Iとなる値を記憶する第 1内部メモリと、
ワード単位の値を記憶する第 2内部メモリと、
固定値メモリに記憶された固定値を用いて、第 1メモリ S1と第 2メモリ S2との各ヮー ドにそれぞれワード値を設定するとともに、第 1内部メモリと第 2内部メモリとに初期値 を設定する初期化部と、
鍵メモリが記憶する鍵情報と初期値メモリが記憶する初期値とを用いて第 1内部メモ リの値 Iを更新し、第 1内部メモリの値をアドレス Iとして、第 1メモリ S1の先頭ワードから 最後のワードまでの各ワードの n番目のバイトの値と第 1メモリ S1のアドレス Iのワード S1 [I]の n番目のバイトの値とをスワップし、さらに、第 1内部メモリの値をアドレス Iとし て、第 2メモリ S2の先頭ワードから最後のワードまでの各ワードの n番目のバイトの値 と第 2メモリ S2のアドレス Iのワード S2[I]の n番目のバイトの値とをスワップして、第 1 から第 N番目のバイトまでスワップを繰り返し、第 1メモリ S1と第 2メモリ S2とに記憶さ れたワードに対して鍵スケジューリングをする鍵スケジュール部と、
第 2内部メモリに記憶されたワードの下位 2バイトの値力 アドレス 12、 13の値を生成 し、
第 1メモリ S1の先頭ワード力 最後のワードまでの各ワード SI [II]の値と
第 1メモリ S1のアドレス 12のワード S1 [12]の値と
第 2メモリ S2のアドレス 13のワード S2 [13]の値と
を用いて擬似乱数 R1を生成してバッファメモリに出力する第 1乱数生成部と、 第 1メモリ SIのアドレス 12のワード SI [12]の値と
第 2メモリ S2のアドレス 13のワード S2 [13]の値と
を演算してシフトし、シフトした値を用いて第 1メモリ S1のアドレス IIのワード SI [II] の値を書き換える第 1状態変更部と、
第 2内部メモリに記憶されたワードの上位と下位の値を入れ替える第 1入れ替え部と 第 2内部メモリに記憶されたワードの下位 2バイトの値力 アドレス 14、 15とする値を 生成し、
第 2メモリ S2の先頭ワード力 最後のワードまでの各ワード S2 [II]の値と
第 2メモリ S2のアドレス 14のワード S2 [14]の値と
第 1メモリ S1のアドレス 15のワード S1 [15]の値と
を用いて擬似乱数 R2を生成して出力する第 2乱数生成部と、
第 2メモリ S2のアドレス 14のワード S2 [14]の値と
第 1メモリ S1のアドレス 15のワード S1 [15]の値と
を演算してシフトし、シフトした値を用いて、第 2メモリ S2のアドレス IIのワード S2 [II] の値を書き換える第 2状態変更部と、
第 2内部メモリに記憶されたワードの上位と下位の値を入れ替える第 2入れ替え部と ストリーム長メモリに記憶したストリーム長になるまで、第 1乱数生成部と第 1状態変 更部と第 1入れ替え部の動作と、第 2乱数生成部と第 2状態変更部と第 2入れ替え部 の動作とを繰り返すループ部と、
第 1乱数生成部力 出力される擬似乱数 R1と第 2乱数生成部から出力される擬似 乱数 R2とを入力して一時的に保持して擬似乱数ストリームとして出力するバッファメ モリと、
ノッファメモリに出力した擬似乱数のストリーム長力、所定の再スケジュール長にな つた場合に、鍵スケジュール部を動作させる再スケジュール部と
を備えたことを特徴とする擬似乱数生成装置。
鍵情報を記憶する鍵メモリと、複数のワードからなり、アドレス 1 (1は、 0以上の整数) を用いて、ワード SI [I]をアクセスする第 1メモリ SIと、第 1メモリ S1と同一数の複数の ワード力も構成されるメモリであって、アドレス Iを用いて、ワード S2[I]をアクセスする 第 2メモリ S2とを備えるとともに複数バイトからなるワード単位で、擬似乱数を生成す るコンピュータである擬似乱数生成装置が行う擬似乱数生成方法において、 初期化部が、第 1メモリ S1と第 2メモリ S2との各ワードにそれぞれワード値を設定す るとともに、第 1内部メモリと第 2内部メモリとに初期値を設定し、
鍵スケジュール部力 鍵メモリが記憶する鍵情報を用いて、第 1メモリ S1と第 2メモリ S2とに設定されたワードの値に対して鍵スケジューリングをして第 1メモリ S1と第 2メ モリ S2とに記憶し、
ストリーム生成部力 鍵スケジュールされた第 1メモリ S1と第 2メモリ S2とに記憶され たワードを交互に用いて擬似乱数を生成する
ことを特徴とする擬似乱数生成方法。
鍵情報を記憶する鍵メモリと、複数のワードからなり、アドレス 1 (1は、 0以上の整数) を用いて、ワード S1 [I]をアクセスする第 1メモリ S1と、第 1メモリ S1と同一数の複数の ワード力も構成されるメモリであって、アドレス Iを用いて、ワード S2[I]をアクセスする 第 2メモリ S2とを備えるとともに複数バイトからなるワード単位で、擬似乱数を生成す るコンピュータである擬似乱数生成装置に以下の処理を実行させる擬似乱数生成プ ログラム
(1)第 1メモリ S1と第 2メモリ S2との各ワードにそれぞれワード値を設定するとともに、 第 1内部メモリと第 2内部メモリとに初期値を設定する処理
(2)鍵メモリが記憶する鍵情報を用いて、第 1メモリ S1と第 2メモリ S2とに設定された ワードの値に対して鍵スケジューリングをして第 1メモリ S1と第 2メモリ S2とに記憶する 処理
(3)鍵スケジュールされた第 1メモリ S1と第 2メモリ S2とに記憶されたワードを交互に 用いて擬似乱数を生成する処理
PCT/JP2005/016586 2005-09-09 2005-09-09 擬似乱数生成装置 WO2007029330A1 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
US11/666,156 US8443020B2 (en) 2005-09-09 2005-09-09 Pseudo random number generator
PCT/JP2005/016586 WO2007029330A1 (ja) 2005-09-09 2005-09-09 擬似乱数生成装置
CN2005800349990A CN101040306B (zh) 2005-09-09 2005-09-09 伪随机数生成装置
JP2006515524A JP4718455B2 (ja) 2005-09-09 2005-09-09 擬似乱数生成装置及び擬似乱数生成方法及び擬似乱数生成プログラム
GB0708028A GB2444567B (en) 2005-09-09 2005-09-09 Pseudo-random number generator

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2005/016586 WO2007029330A1 (ja) 2005-09-09 2005-09-09 擬似乱数生成装置

Publications (1)

Publication Number Publication Date
WO2007029330A1 true WO2007029330A1 (ja) 2007-03-15

Family

ID=37835467

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2005/016586 WO2007029330A1 (ja) 2005-09-09 2005-09-09 擬似乱数生成装置

Country Status (5)

Country Link
US (1) US8443020B2 (ja)
JP (1) JP4718455B2 (ja)
CN (1) CN101040306B (ja)
GB (1) GB2444567B (ja)
WO (1) WO2007029330A1 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009139899A (ja) * 2007-12-04 2009-06-25 Tsutomu Tatsuzawa Pi++ストリーム暗号の暗号方法および復号方法、並びにパイ・データに基づく暗号算法及び復号化算法
US9454653B1 (en) 2014-05-14 2016-09-27 Brian Penny Technologies for enhancing computer security
USRE46652E1 (en) 2013-05-14 2017-12-26 Kara Partners Llc Technologies for enhancing computer security
US10594687B2 (en) 2013-05-14 2020-03-17 Kara Partners Llc Technologies for enhancing computer security

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8670564B1 (en) * 2006-08-14 2014-03-11 Key Holdings, LLC Data encryption system and method
US9800410B1 (en) * 2006-08-14 2017-10-24 Key Holdings, LLC Data encryption system and method
JP4477616B2 (ja) * 2006-10-19 2010-06-09 株式会社日立製作所 署名システム及び署名方法
US8510359B2 (en) * 2006-10-31 2013-08-13 Kiyoto Yui Pseudo-random number generation device, pseudo-random number generation program, and medium containing pseudo-random number generation program
JP4917478B2 (ja) * 2007-05-25 2012-04-18 株式会社ケーヒン 乱数発生装置及び車両制御装置
US9292259B2 (en) 2008-08-06 2016-03-22 Cassy Holdings Llc Uncertainty random value generator
US9207911B2 (en) 2009-07-31 2015-12-08 Cassy Holdings Llc Modular uncertainty random value generator and method
US9778912B2 (en) 2011-05-27 2017-10-03 Cassy Holdings Llc Stochastic processing of an information stream by a processing architecture generated by operation of non-deterministic data used to select data processing modules
JP5813380B2 (ja) 2011-06-03 2015-11-17 株式会社東芝 半導体記憶装置
US8873750B2 (en) * 2013-03-14 2014-10-28 International Business Machines Corporation Instruction for performing a pseudorandom number generate operation
US10229282B2 (en) 2016-06-12 2019-03-12 Apple Inc. Efficient implementation for differential privacy using cryptographic functions
US10680810B2 (en) * 2016-10-26 2020-06-09 Nxp B.V. Method of generating an elliptic curve cryptographic key pair

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07199808A (ja) * 1993-12-06 1995-08-04 Internatl Business Mach Corp <Ibm> 暗号化方法及びシステム
JPH09509748A (ja) * 1993-12-01 1997-09-30 ライク,ウイリアム,マイケル 非決定論的公開キー暗号化システム
JP2002506243A (ja) * 1998-03-06 2002-02-26 テレフオンアクチーボラゲット エル エム エリクソン(パブル) 擬似ランダムシーケンス生成器及び生成方法

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4755969A (en) * 1986-11-07 1988-07-05 Digital Electronic Communications Equipment (Dece Corp.) Pseudo random sequence generation
EP0591562A1 (de) * 1992-09-30 1994-04-13 International Business Machines Corporation Programmgesteuerte Optimierung einer prozessorgesteuerten Schaltung zur Generierung einer algorithmisch erzeugbaren Ausgangs-Sequenz von Werten
US6014446A (en) * 1995-02-24 2000-01-11 Motorola, Inc. Apparatus for providing improved encryption protection in a communication system
US5943248A (en) * 1997-01-17 1999-08-24 Picturetel Corporation w-bit non-linear combiner for pseudo-random number generation
US6009135A (en) * 1997-10-10 1999-12-28 Interdigtal Technology Corporation Method and apparatus for generating a stream cipher
US6748006B1 (en) * 1999-05-28 2004-06-08 Texas Instruments Incorporated Method and apparatus for controlling system timing with use of a master timer
JP3318291B2 (ja) * 1999-08-31 2002-08-26 株式会社環境電磁技術研究所 擬似雑音発生装置
US6934388B1 (en) * 1999-11-12 2005-08-23 Itt Manufacturing Enterprises, Inc. Method and apparatus for generating random permutations
EP1360795B1 (en) * 2001-01-12 2006-08-09 Broadcom Corporation Implentation of the SHA1 algorithm
US6735606B2 (en) * 2001-05-15 2004-05-11 Qualcomm Incorporated Multi-sequence fast slewing pseudorandom noise generator
US7317776B2 (en) * 2002-04-18 2008-01-08 Texas Instruments Incorporated Efficient pseudo-noise sequence generation for spread spectrum applications
JP4052480B2 (ja) * 2002-10-07 2008-02-27 小林 朗 疑似乱数発生方法、疑似乱数発生器、及び疑似乱数発生プログラム
DE10250831B3 (de) * 2002-10-31 2004-06-17 Infineon Technologies Ag Vorrichtung und Verfahren zum Erzeugen einer pseudozufälligen Folge von Zahlen
US7194496B2 (en) * 2003-05-02 2007-03-20 Spirent Communications Of Rockville, Inc. System and method for producing functions for generating pseudo-random bit sequences
US7546327B2 (en) * 2003-12-22 2009-06-09 Wells Fargo Bank, N.A. Platform independent randomness accumulator for network applications

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09509748A (ja) * 1993-12-01 1997-09-30 ライク,ウイリアム,マイケル 非決定論的公開キー暗号化システム
JPH07199808A (ja) * 1993-12-06 1995-08-04 Internatl Business Mach Corp <Ibm> 暗号化方法及びシステム
JP2002506243A (ja) * 1998-03-06 2002-02-26 テレフオンアクチーボラゲット エル エム エリクソン(パブル) 擬似ランダムシーケンス生成器及び生成方法

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009139899A (ja) * 2007-12-04 2009-06-25 Tsutomu Tatsuzawa Pi++ストリーム暗号の暗号方法および復号方法、並びにパイ・データに基づく暗号算法及び復号化算法
USRE46652E1 (en) 2013-05-14 2017-12-26 Kara Partners Llc Technologies for enhancing computer security
US10057250B2 (en) 2013-05-14 2018-08-21 Kara Partners Llc Technologies for enhancing computer security
US10116651B2 (en) 2013-05-14 2018-10-30 Kara Partners Llc Technologies for enhancing computer security
US10326757B2 (en) 2013-05-14 2019-06-18 Kara Partners Llc Technologies for enhancing computer security
US10516663B2 (en) 2013-05-14 2019-12-24 Kara Partners Llc Systems and methods for variable-length encoding and decoding for enhancing computer systems
US10594687B2 (en) 2013-05-14 2020-03-17 Kara Partners Llc Technologies for enhancing computer security
US10917403B2 (en) 2013-05-14 2021-02-09 Kara Partners Llc Systems and methods for variable-length encoding and decoding for enhancing computer systems
US9454653B1 (en) 2014-05-14 2016-09-27 Brian Penny Technologies for enhancing computer security

Also Published As

Publication number Publication date
JP4718455B2 (ja) 2011-07-06
GB2444567B (en) 2011-01-05
GB2444567A (en) 2008-06-11
CN101040306A (zh) 2007-09-19
US20070266067A1 (en) 2007-11-15
GB0708028D0 (en) 2007-06-06
JPWO2007029330A1 (ja) 2009-03-12
CN101040306B (zh) 2012-01-04
US8443020B2 (en) 2013-05-14

Similar Documents

Publication Publication Date Title
JP4718455B2 (ja) 擬似乱数生成装置及び擬似乱数生成方法及び擬似乱数生成プログラム
CN103957100B (zh) 利用单指令在多种模式中执行aes加密或解密
JP4317607B2 (ja) 情報処理装置、耐タンパ処理装置
JP5835458B2 (ja) 情報処理装置、および情報処理方法、並びにプログラム
CN110233720A (zh) Sm4加速处理器、方法和系统
CN104126174A (zh) 执行groestl散列的指令
WO2013129054A1 (ja) 情報処理装置、および情報処理方法、並びにプログラム
US20200117811A1 (en) Processor hardware and instructions for sha3 cryptographic operations
JP2005004048A (ja) 鍵拡張装置、鍵拡張方法および鍵拡張プログラム
Buhrow et al. Block cipher speed and energy efficiency records on the MSP430: System design trade-offs for 16-bit embedded applications
Lee et al. On permutation operations in cipher design
Wang et al. AES finalists implementation for GPU and multi-core CPU based on OpenCL
JP5188414B2 (ja) 情報処理装置及び情報処理方法及びプログラム
Ajmi et al. Efficient and lightweight in-memory computing architecture for hardware security
Cook et al. Cryptographics: exploiting graphics cards for security
WO2020186125A1 (en) Ultra low power core for lightweight encryption
JP2011123356A (ja) 素数生成装置、素数生成方法、及び素数生成プログラム
JP2013182148A (ja) 情報処理装置、および情報処理方法、並びにプログラム
Shurui et al. A modified AES algorithm for the platform of Smartphone
Papagiannopoulos et al. Speed and size-optimized implementations of the PRESENT cipher for tiny AVR devices
Alsahli et al. Lightweight permutation-based cryptography for the ultra-low-power internet of things
JP2007287079A (ja) 擬似乱数生成装置、擬似乱数生成方法および擬似乱数生成プログラム並びに暗号化装置および復号化装置
Kuang et al. Benchmark performance of the multivariate polynomial public key encapsulation mechanism
WO2022029443A1 (en) Method and apparatus for reducing the risk of successful side channel and fault injection attacks
Rodrigues et al. Fast white-box implementations of dedicated ciphers on the ARMv8 architecture

Legal Events

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

Ref document number: 2006515524

Country of ref document: JP

WWE Wipo information: entry into national phase

Ref document number: 200580034999.0

Country of ref document: CN

WWE Wipo information: entry into national phase

Ref document number: 11666156

Country of ref document: US

ENP Entry into the national phase

Ref document number: 0708028

Country of ref document: GB

Kind code of ref document: A

Free format text: PCT FILING DATE = 20050909

WWE Wipo information: entry into national phase

Ref document number: 0708028.6

Country of ref document: GB

Ref document number: 708028

Country of ref document: GB

121 Ep: the epo has been informed by wipo that ep was designated in this application
REG Reference to national code

Ref country code: GB

Ref legal event code: 789A

Ref document number: 0708028

Country of ref document: GB

WWP Wipo information: published in national office

Ref document number: 11666156

Country of ref document: US

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 05782103

Country of ref document: EP

Kind code of ref document: A1