KR20030059500A - Pseudo random number generator formed by spn structure using a block code and method thereof - Google Patents
Pseudo random number generator formed by spn structure using a block code and method thereof Download PDFInfo
- Publication number
- KR20030059500A KR20030059500A KR1020010088363A KR20010088363A KR20030059500A KR 20030059500 A KR20030059500 A KR 20030059500A KR 1020010088363 A KR1020010088363 A KR 1020010088363A KR 20010088363 A KR20010088363 A KR 20010088363A KR 20030059500 A KR20030059500 A KR 20030059500A
- Authority
- KR
- South Korea
- Prior art keywords
- value
- random function
- key
- data
- random
- Prior art date
- Legal status (The legal status 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 status listed.)
- Ceased
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic 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/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
- H04L9/0631—Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic 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/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
- H04L9/0625—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation with splitting of the data block into left and right halves, e.g. Feistel based algorithms, DES, FEAL, IDEA or KASUMI
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic 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/065—Encryption by serially and continuously modifying data stream elements, e.g. stream cipher systems, RC4, SEAL or A5/3
- H04L9/0656—Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher
- H04L9/0662—Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher with particular pseudorandom sequence generator
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Storage Device Security (AREA)
Abstract
본 발명은 SPN구조를 가지는 블록 암호를 이용한 유사난수 발생기에 관한 것이다. 즉, 본 발명에서 제안하는 유사난수 발생기에서는 종래 ANSI X9.17에서 제안하고 있는 블록 암호를 이용한 난수 발생기처럼 하나의 키에 타임스탬프를 쓰는 대신 유사난수 발생을 위해 사용되는 키 값을 업데이트시키는 업데이트 알고리즘을 통해 난수 발생시마다 키 값을 변경시킴으로써 난수성을 보다 강화시키는 이점이 있다. 또한 본 발명에서는 상기 키 값을 변경시킴에 있어서 키를 다시 생성하는 것이 아니라 기존에 생성된 키를 간단한 논리 연산을 통해 업데이트시킴으로써 효율성을 높일 수 있는 이점이 있으며, PC 뿐만 아니라 제한된 환경의 IC 카드 등과 같은 다양한 플랫폼에서도 모두 적용 가능하게 되는 이점이 있다.The present invention relates to a pseudo random number generator using a block cipher having an SPN structure. That is, in the pseudorandom number generator proposed by the present invention, an update algorithm for updating a key value used for generating a pseudorandom number instead of writing a timestamp on one key like a random number generator using a block cipher proposed in ANSI X9.17. By changing the key value every time a random number is generated there is an advantage to further enhance the random number. In the present invention, there is an advantage in that the efficiency can be improved by updating a previously generated key through a simple logical operation, instead of regenerating the key in changing the key value, IC card in a limited environment as well as a PC This has the advantage of being applicable to all the same various platforms.
Description
본 발명은 유사난수 발생기에 관한 것으로, 특히 SPN구조를 가지는 블록 암호를 이용한 유사난수 발생기에 관한 것이다.The present invention relates to a pseudo random number generator, and more particularly, to a pseudo random number generator using a block cipher having an SPN structure.
통상적으로 참 난수를 발생하는 것은 현실적으로 불가능해서 난수와 구별하기 힘든 유사난수를 생성하여 난수와 같이 사용한다. 유사난수란 난수와 구별할 수 있는 효율적인 알고리즘이 존재하지 않는 수를 의미하는 것으로,In general, it is impossible to generate a true random number, so a pseudo-random number that is difficult to distinguish from a random number is generated and used together with the random number. Pseudorandom numbers are numbers that do not have an efficient algorithm to distinguish them from random numbers.
이러한 유사난수를 생성하는 방법으로는 하드웨어 칩을 이용하는 방법과 암호학적 함수를 이용하는 방법이 있다.The pseudo random number is generated by using a hardware chip or by using a cryptographic function.
상기 하드웨어 칩을 이용하는 난수 생성방법에는 하드웨어 칩에서 발생하는 열이나 잡음, 반도체의 양자효과, 방사선 소스, 디스크 드라이브 내의 난기류 등 하드웨어에서 얻을 수 있는 높은 엔트로피의 잡음원을 간단한 필터링 후 이용하는 방법과, 키 스트로크, CPU time 등 위의 잡음보다는 엔트로피가 낮은 잡음원을 해쉬함수나 블록 암호 알고리즘의 입력값으로 하여 그 출력값을 난수로 이용하는 방법이 있는데,The random number generation method using the hardware chip includes a method of using a high-entropy noise source obtained by hardware such as heat and noise generated from the hardware chip, a quantum effect of a semiconductor, a radiation source, and a turbulence in a disk drive after simple filtering, and a key stroke. For example, there is a method that uses the output value as a random function by inputting a noise source having a lower entropy than the above noise, such as CPU time and a hash function or block cipher algorithm.
상기 하드웨어를 이용하여 유사난수를 생성하는 경우의 대표적 예로써 Intel 82802 Fireware Hub(FWH)칩의 하드웨어 내부에서 발생하는 열을 유사난수 생성에 이용하는 유사난수 생성방법이 있는데, 상기와 같이 FWH를 비롯해 하드웨어를 이용하여 유사난수를 생성하는 경우에는 생성된 유사난수가 참 난수와 같이 난수성이 매우 높다는 장점이 있는 반면에, 높은 엔트로피의 잡음을 얻기가 쉽지 않고, 다양한 플랫폼에 적용하기 힘들며, 비용이 많이 드는 문제점이 있었다.As a representative example of generating pseudorandom numbers using the hardware, there is a pseudorandom number generating method that uses heat generated inside the hardware of the Intel 82802 Fireware Hub (FWH) chip to generate pseudorandom numbers, as described above. In the case of generating pseudorandom using, the generated pseudorandom is very high randomness like true random number, while it is difficult to obtain high entropy noise, difficult to apply to various platforms, and expensive There was a lifting issue.
다음으로, 암호학적 함수를 이용하여 유사난수를 생성하는 경우에는 난수성이 낮은 단점은 있으나, 유사난수 생성시 이용된 키나 시드값이 공개되지 않고 해쉬함수나 블록 암호 알고리즘이 분석되기 어렵다고 가정하면 충분한 안정성을 보장할 수 있으며, 여러 플랫폼에 적용가능하고, 원하는 길이의 유사난수 수열을 생성할 수 있는 장점이 있다.Next, in the case of generating pseudorandom numbers using cryptographic functions, there is a disadvantage of low randomness. However, it is sufficient to assume that the hash function or block cipher algorithm is difficult to analyze without revealing the key or seed used in generating pseudorandom numbers. It can guarantee stability, can be applied to multiple platforms, and has the advantage of generating pseudorandom sequence of desired length.
이와 같은 암호학적 알고리즘으로 기존의 블록 암호를 이용하는 방법으로는 ANSI X9.17이 주로 사용되는데, ANSI X9.17은 난수나 시드를 생성하는데 있어 하나의 키에 타임스탬프를 적용하여 사용하는데, 고정된 타임 출력에 대해 약 232번의 반복을 수행하는 경우 상기 X9.17 유사난수 생성기의 출력은 참 난수 비트 수열과 구별이 가능하다는 약점이 있었다.As a cryptographic algorithm, ANSI X9.17 is mainly used as a conventional block cipher. ANSI X9.17 uses a time stamp on a key to generate random numbers or seeds. When performing about 2 to 32 iterations of the time output, there is a weak point that the output of the X9.17 pseudorandom number generator can be distinguished from the true random bit sequence.
따라서, 본 발명의 목적은 다양한 플랫폼에 적용 가능하며, 특히 잡음원이 한정되어 있는 IC 같은 제한적인 하드웨어 환경에서도 적용가능하고, 또한 기존의 ANSI X9.17에서 제안하고 있는 블록 암호를 이용한 난수 발생기와 비교해 새로운 형태의 SPN구조를 가지는 블록 암호를 이용한 유사난수 발생기 및 방법을 제공함에 있다.Therefore, the object of the present invention is applicable to a variety of platforms, especially in a limited hardware environment such as an IC with a limited noise source, and also compared with the random number generator using the block cipher proposed in the existing ANSI X9.17. The present invention provides a pseudo random number generator and method using a block cipher having a new type of SPN structure.
상술한 목적을 달성하기 위한 본 발명은, SPN 구조를 갖는 블록 암호를 이용한 유사난수 발생기 및 방법에 있어서, 각 플랫폼에 맞는 잡음을 수집하여 상기 잡음 정보로부터 유사난수 발생시 랜덤 함수의 입력으로 사용될 키(key) 값을 생성하는 리시딩 생성모듈과; 두 개의 랜덤 함수값 변환부를 구비하며, 상기 키 값과 상태(state) 값을 제1 랜덤 함수값 변환부의 입력값으로 하여 제1 랜덤 함수값(Rand1)을 생성하며, 상기 제1 랜덤 함수값과 키 값을 제2 랜덤 함수값 변환부의 입력값으로 하여 제2 랜덤 함수값(Rand2)을 생성한 후, 상기 제2 랜덤 함수값을 유사난수값으로 출력하는 유사난수 생성모듈; 상기 유사난수 생성모듈로부터 생성된 제2 랜덤 함수값과 업데이트된 새로운 키 값을 랜덤 함수값 변환부의 입력값으로 하여 제3 랜덤 함수값(Rand3)을 생성하여 이를 상기 리시딩 생성모듈과 유사난수 생성모듈로 제공하여 상기 키 값과 랜덤함수값 변환부의 상태 정보값을 업데이트 변경시키는 업데이트 모듈;을 포함하여 구성되는 SPN 구조를 갖는 블록 암호를 이용한 유사난수 발생기를 구현하며,In the present invention for achieving the above object, in the pseudo random number generator and method using a block cipher having an SPN structure, the noise to be collected for each platform to be used as input of a random function when the pseudo random number is generated from the noise information ( keying generation module for generating a value; Two random function value converters, and generate a first random function value (Rand1) using the key value and a state value as input values of a first random function value converter, and generate the first random function value and A pseudorandom number generation module for generating a second random function value (Rand2) by using a key value as an input value of a second random function value conversion unit, and outputting the second random function value as a pseudorandom value; Generates a third random function value (Rand3) by using the second random function value generated from the pseudo random number generation module and the updated new key value as an input value of a random function value conversion unit, and generates a random number similar to the receiving generation module An update module configured to provide a module to update and change state information values of the key value and the random function value conversion unit; and implement a pseudo random number generator using a block cipher having an SPN structure including
(a)잡음 정보로부터 시드값을 생성하는 단계와; (b)상기 시드값을 이용하여 키(key) 값을 생성하는 단계와; (c)상기 키 값과 상기 업데이트 모듈로부터의 최종 업데이트된 상태(state) 값을 입력 데이터값으로 하는 랜덤 함수로부터 제1 랜덤 함수값(Rand1)을 계산하는 단계와; (d)상기 제1랜덤 함수값(Rand1)과 상기 키 값을 입력 데이터값으로 하는 상기 랜덤 함수로부터 출력되는 제2랜덤 함수값(Rand2)을 계산하는 단계와; (e)상기 제2랜덤 함수값(Rand2)으로 생성된 값을 유사난수값으로 출력시키는 단계와; (f)상기 제2 랜덤 함수값(Rand2)과 업데이트된 새로운 키 값을 입력 데이터값으로 하는 랜덤 함수로부터 업데이트 랜덤 함수값(Rand3)을 생성하여 상기 시드값과 상기 랜덤 함수의 상태값을 업데이트시키는 단계;를 포함하여 진행하는 SPN 구조를 갖는 블록 암호를 이용한 유사난수 발생방법을 구현하는 것을 특징으로 한다.(a) generating a seed value from the noise information; (b) generating a key value using the seed value; (c) calculating a first random function value (Rand1) from a random function having the key value and the last updated state value from the update module as an input data value; (d) calculating a second random function value (Rand2) output from the random function using the first random function value (Rand1) and the key value as an input data value; (e) outputting a value generated as the second random function value (Rand2) as a pseudo-random value; (f) generating an update random function value (Rand3) from a random function having the second random function value (Rand2) and the updated new key value as an input data value to update the seed value and the state value of the random function; It is characterized in that it implements a method of generating a pseudo-random number using a block cipher having a SPN structure to proceed.
도 1은 본 발명의 실시 예에 따른 유사난수 발생기의 기능 블록 구성도.1 is a functional block diagram of a pseudorandom number generator according to an embodiment of the present invention.
도 2는 본 발명의 실시 예에 따른 키 생성부의 기능 블록 구성도.2 is a functional block diagram of a key generation unit according to an embodiment of the present invention.
도 3은 본 발명의 실시 예에 따른 키 생성부내 KF 함수부의 기능 블록 구성도.3 is a functional block diagram of a KF function unit in a key generation unit according to an embodiment of the present invention.
도 4는 본 발명의 실시 예에 따른 유사난수 생성모듈내 랜덤 함수부의 기능 블록 구성도.4 is a functional block diagram of a random function unit in a pseudorandom number generation module according to an embodiment of the present invention.
도 5는 본 발명의 실시 예에 따른 랜덤 함수부내 2라운드 SPN 구조의 Feistel 함수 기능 블록도.5 is a functional block diagram of the Feistel function of the second round SPN structure in the random function according to an embodiment of the present invention.
이하, 첨부된 도면을 참조하여 본 발명에 따른 바람직한 실시 예의 동작을 상세하게 설명한다.Hereinafter, with reference to the accompanying drawings will be described in detail the operation of the preferred embodiment according to the present invention.
도 1은 본 발명의 실시 예에 따른 유사난수 발생기의 기능 블록 구성을 도시한 것이다. 이하 상기 도 1을 참조하면, 상기 유사난수 발생기(100)는 리시딩 모듈(Reseeding Module)(102), 유사난수 생성 모듈(104), 업데이트 모듈(106)로 구성된다. 상기 리시딩 모듈(102)은 상기 도 1에서 보여지는 바와 같이 잡음(Noise) 정보를 제공하는 잡음 발생부(108)와, 잡음정보로부터 시드(Seed)를 생성하는 시드 생성부(110)와 시드를 이용해서 키를 생성하는 키 생성부(112)로 구성된다.1 illustrates a functional block configuration of a pseudorandom number generator according to an embodiment of the present invention. Referring to FIG. 1, the pseudo random number generator 100 is composed of a receiving module 102, a pseudo random number generating module 104, and an update module 106. As shown in FIG. 1, the receiving module 102 includes a noise generator 108 that provides noise information, a seed generator 110 that generates a seed from the noise information, and a seed. It consists of a key generation unit 112 for generating a key using.
상기 시드 생성부(110)는 예측 또는 제어하기 힘든 잡음 정보를 이용하여 유사난수 발생을 위한 시드를 생성하는데, 이때 프로그램이 구현되는 각 플랫폼에 따라 사용될 잡음을 수집하는 함수를 결정한다. 이때 상기 수집된 잡음은 최소 128비트 이상이어야 한다.The seed generator 110 generates a seed for generating a pseudo random number using noise information that is difficult to predict or control, and determines a function for collecting noise to be used according to each platform on which a program is implemented. In this case, the collected noise should be at least 128 bits.
이때 상기 시드 생성부(110)에서 상기 도 1에서 보여지는 바와 같이 랜덤화 함수의 128 비트 출력 데이터값과 잡음 발생부(108)로부터 생성된 128비트의 데이터값을 이용하여 시드를 생성함에 있어서, 상기 시드 생성부(110)는 아래의 수학식 1에서와 같이 잡음 발생부(108)로부터 인가되는 128비트 잡음 데이터와 128비트의 랜덤화 함수(RandomFnt) 출력 데이터를 이용하여 64비트로 이루어진 O1∼O6까지의 시드값을 생성한다.At this time, the seed generator 110 generates a seed using the 128-bit output data value of the randomization function and the 128-bit data value generated from the noise generator 108, as shown in FIG. The seed generator 110 uses 64-bit O1 to O6 using 128-bit noise data and 128-bit randomization function (RandomFnt) output data applied from the noise generator 108 as shown in Equation 1 below. Generates seed values up to.
→ (O1 || O2) = RandomFnt(I1 || I2, key)→ (O1 || O2) = RandomFnt (I1 || I2, key)
→ (O3 || O4) = RandomFnt(I2O2 || I3, key)→ (O3 || O4) = RandomFnt (I2 O2 || I3, key)
→ (O5 || O6) = RandomFnt(I3O4 || I4, key)→ (O5 || O6) = RandomFnt (I3 O4 || I4, key)
그러면 시드 생성부(110)는 이중 3개의 64비트 O1, O3, O5만을 선택한 후, O1은 이하 키 생성부(112)에 사용되는 두 개의 32비트 상수값으로 제공하며, 상기 O3과 O5 시드값의 비트열 연산값을 아래의 [수학식 2]에서와 같이 새로운 128비트시드 데이터(Seed)로 출력시킨다.Then, the seed generator 110 selects only three 64-bit O1, O3, and O5, and provides O1 as two 32-bit constant values used for the key generator 112 below, and the O3 and O5 seed values. The bit string operation value of is output as new 128-bit seed data (Seed) as shown in [Equation 2] below.
키 생성부(112)는 유사난수 생성모듈(104)에서 사용될 4개의 32비트 워드로 구성된 키 데이터를 생성하는 소프트웨어 모듈로서, 도 2에 도시된 바와 같이 64비트를 입력으로 하는 KF 함수부(200,202)와 선형변환부(204)로 구성된다.The key generation unit 112 is a software module for generating key data consisting of four 32-bit words to be used in the pseudorandom number generation module 104. As shown in FIG. 2, the KF function unit 200 and 202 are 64-bit inputs. ) And a linear transformation unit 204.
도 3은 상기 KF 함수부(200)의 내부 블록 구성을 도시한 것이다. 이하 상기 도 3을 참조하여 KF 함수의 동작을 설명하기로 한다. 먼저 상기 키 생성부(112)로부터 발생되어 입력된 32비트 워드의 키워드 Ar, Br이 KF 함수부(200)로 입력되는 경우 상기 Ar워드는 제1가산부(302)에서 상기 키 생성부(112)에서 생성된 32비트 상수 C1과 가산된 후, 232으로 모듈로 연산 수행되어 출력된다.3 illustrates an internal block configuration of the KF function unit 200. Hereinafter, the operation of the KF function will be described with reference to FIG. 3. First, when the keywords A r and B r of the 32-bit word generated and input from the key generator 112 are input to the KF function unit 200, the A r word is generated by the first adder 302. After addition to the 32-bit constant C1 generated in the unit 112, the modulo operation is performed to 2 32 and output.
그런 후 상기 Ar워드는 제1 Sbox(Substitution box)(300)에서 Sbox 변환된Br워드를 이용하여 DDR(Date Dependant Rotation)연산을 수행한 후, 제2 Sbox(304)로 입력된다. 상기 DDR 연산은 상기 Br워드를 Sbox 변환한 4바이트의 결과 데이터의 MSB(Most Significant Bit) 4개로 4비트를 구성한 뒤, 구성된 4비트만큼 왼쪽으로 회전시키는 연산을 말한다. 이어 상기 DDR연산 수행된 Ar워드는 제2 Sbox(304)에서 다시 Sbox변환되어 KF 함수 변환된 Ar,워드값으로 출력된다.Then, the A word r is input to claim 1 Sbox (Substitution box) using Sbox transformed B r words in 300, after performing a DDR (Date Dependant Rotation) operation, the 2 Sbox (304). The DDR operation refers to an operation that consists of four bits of four MSBs (Most Significant Bits) of the four-byte result data obtained by Sbox converting the B r word, and then rotates the left four bits by the configured four bits. Following the DDR performs the operation A r word is output to the second is converted back Sbox in Sbox (304) KF function to convert the A r, word values.
한편, 상기 Br워드는 상기 제1 Sbox(300)에서 비선형 변환된 후, 승산부(306)로 인가되어 상기 제2 Sbox(304)에서 Sbox변환된 Ar워드값과 승산된 후, 제2가산부(308)에서 상수 C2가 가산되고, 232으로 모듈로 연산 수행되어 KF 함수 변환된 Br,워드값으로 출력된다. 상기와 같이 KF 함수 변환된 키워드(Ar,, Br,)값은 선형변환부(204)를 통해 선형변환 수행되어 최종 키워드(Ar+1, Br+1) 값으로 생성되어 유사난수 생성모듈(104)로 인가된다.On the other hand, the word B r is non-linearly transformed in the first Sbox 300, and then applied to the multiplier 306 to be multiplied by an A r word value Sbox-converted in the second Sbox 304. In the adder 308, the constant C2 is added, modulated by 2 32 , and output as a KF function-converted B r, word value. As described above, the KF function-converted keyword (A r ,, B r, ) is linearly transformed through the linear transform unit 204 and generated as a final keyword (A r + 1 , B r + 1 ) to generate a pseudorandom number. Is applied to the generation module 104.
유사난수 생성모듈(104)은 상기 도 1에서 보여지는 바와 같이 두 개의 랜덤 함수값 변환부(114,116)로 구성되며, 아래의 [수학식 3]에서와 같이 상기 키 생성부(112)로부터 생성되어 인가되는 키(key) 값과 상태(state) 값을 랜덤 함수값 변환부(114,116)의 입력값으로 하여 랜덤 함수로부터 유사난수를 생성한다.The pseudo-random number generating module 104 is composed of two random function value converting units 114 and 116 as shown in FIG. 1, and is generated from the key generating unit 112 as shown in Equation 3 below. A pseudo-random number is generated from a random function by using an applied key value and a state value as input values of the random function value converters 114 and 116.
Rand2=RandomFnt(Rand1, key)Rand2 = RandomFnt (Rand1, key)
상기 제2랜덤 함수값(Rand2)은 유사난수 생성모듈(104)로부터 출력되는 유사난수이며, 상기 제1랜덤 함수값(Rand1)은 업데이트 알고리즘 입력으로 사용된다. 상기 상태(state)값은 블록 암호 알고리즘의 평문에 해당하는 값으로, 키와 더불어 랜덤 함수(RandomFnt)의 입력으로 사용되며, 크기는 128비트이다. 상기 키 워드값의 크기는 128×라운드 비트인데, 기본적으로 랜덤화 알고리즘은 8 라운드로 되어 있으므로, 상기 유사난수 생성모듈(104)로 인가되는 키의 크기는 128×8=1024 비트가 된다. 그러나, 상기 키워드가 128비트 시드로부터 생성되기 때문에 랜덤화 함수의 전수조사에 대한 안전성은 시드의 크기에 의존하게 된다.The second random function value Rand2 is a pseudorandom number output from the pseudorandom number generation module 104, and the first random function value Rand1 is used as an update algorithm input. The state value corresponds to the plaintext of the block cipher algorithm, and is used as an input of a random function (RandomFnt) together with a key and has a size of 128 bits. The size of the keyword value is 128 x round bits. Since the randomization algorithm is basically eight rounds, the size of the key applied to the pseudo-random number generation module 104 is 128 x 8 = 1024 bits. However, since the keyword is generated from a 128-bit seed, the safety of the full search of the randomization function depends on the size of the seed.
도 4는 상기 랜덤 함수값 변환부(114)의 내부 기능 블록 구성을 도시한 것이다. 이하 상기 도 4를 참조하여 유사난수 생성모듈(104)내 랜덤 함수값 변환부(114)의 동작을 상세히 설명하기로 한다.4 illustrates an internal functional block configuration of the random function value converter 114. Hereinafter, the operation of the random function value converter 114 in the pseudorandom number generation module 104 will be described in detail with reference to FIG. 4.
즉, 상기 랜덤 함수값 변환부(114)는 상기 도 4에서 보여지는 바와 같이 3-Feistel 구조로 형성되며, 상기 리시딩 모듈(102)로부터 생성된 키워드값과 상태값을 입력값으로 하여 랜덤 함수값(Rand1)을 출력시키게 되며, 상기 랜덤 함수값(Rand1)은 두 번째 랜덤 함수값 변환부(116)에 상태값으로 인가되어 두 번째 랜덤 함수값(Rand2) 인 유사난수 값 발생에 영향을 미치게 된다.That is, the random function value converting unit 114 is formed in a 3-Feistel structure as shown in FIG. 4 and uses a keyword value and a state value generated from the receiving module 102 as input values. It outputs a value (Rand1), the random function value (Rand1) is applied to the second random function value converter 116 as a state value to affect the generation of pseudo-random value that is the second random function value (Rand2) do.
즉, 상기 랜덤 함수값 변환부(114)는 상기 도 4에서와 같이 상기 128비트의상태값을 각각 32비트 워드(A0, B0, C0, D0)로 분할하여 입력하고, 상기 키워드값({ K}`_{r-1 } ^{A}, { K}`_{r-1 } ^{B }, { K}`_{r-1 } ^{C }, { K}`_{r-1 } ^{D } ) 을 이용한 Feistel 변환시 r 라운드 처리 후 출력되는 랜덤화 중간값을 Ar, Br, Cr, Dr으로 표시하는 경우 상기 랜덤화 함수 중간값 Ar, Br, Cr, Dr은 아래의 [수학식 4]에서와 같이 나타낼 수 있게 된다.That is, the random function value converter 114 divides the 128-bit state value into 32-bit words A 0 , B 0 , C 0 , and D 0 as shown in FIG. 4, and inputs the keyword. Value {{K} `_ {r-1} ^ {A}, {K}` _ {r-1} ^ {B}, {K} `_ {r-1} ^ {C}, {K} `_ {r-1} ^ {D}) with using Feistel conversion r case of displaying the randomized intermediate value outputted round after treatment with a r, B r, C r, D r the randomization function median a r , B r , C r , and D r can be expressed as in Equation 4 below.
도 5는 상기 Feistel 함수부(400)의 내부 기능 블록 구성을 도시한 것이다. 이하 상기 도 5를 참조하여 Feistel 함수의 동작을 설명하기로 한다. 상기 도 5에서 보여지는 바와 같이 상기 Feistel 함수는 2개의 익스크루시브 오아(eXclusive OR)(500,502)게이트를 통한 두 번의 키 익스크루시브 오아(XOR) 연산과 4개의 Sbox로 구성된 제1, 제2 Sbox부(504,506)를 통한 두 번의 Sbox 변환과 선형변환부(508)를 통한 1번의 선형변환으로 구성된 2라운드 SPN구조로 형성된다. 이때 홀수 번째 워드와 짝수 번째 워드에 사용되는 F함수를 각각 F1, F2라고 하며, 각각 서로 다른 Sbox와 선형변환을 사용한다. 그러나 상기 익스크루시브 오아(500,502)로 입력되는 키워드값과 Sbox 는 동일한 것을 반복 사용한다.5 illustrates an internal functional block configuration of the Feistel function unit 400. Hereinafter, the operation of the Feistel function will be described with reference to FIG. 5. As shown in FIG. 5, the Feistel function includes two key exclusive OR operations through two eXclusive OR gates 500 and 502, and a first and second four Sboxes. It is formed of a two-round SPN structure consisting of two Sbox transformations through the Sbox units 504 and 506 and one linear transformation through the linear transformation unit 508. The F functions used for odd and even words are called F1 and F2, respectively, and use different Sboxes and linear transformations. However, the keyword value and Sbox inputted to the exclusive ora 500 and 502 are repeatedly used.
이때 상기 Sbox는 전술한 바와 같이 비선형적인 변환을 수행하는 곳으로, 본 발명에서는 종래에 알려진 Sbox의 취약성을 해결하기 위해 아래 3가지 설계 원칙에따라 Sbox를 보다 안전하게 설계하였다.In this case, the Sbox is a non-linear transformation as described above. In the present invention, the Sbox is designed to be safer according to the following three design principles in order to solve the vulnerability of the Sbox.
(가) m(x)=x8+x6+x5+x4+1(171x에 대응)을 이용하여 GF(28) 설계(A) Design GF (2 8 ) using m (x) = x 8 + x 6 + x 5 + x 4 +1 (corresponding to 171 x )
(나) 갈로아 체 GF(28)상에서의 변환 x-1=x254선택(B) transformation x -1 = x 254 on galoache GF (2 8 )
GF(28) → GF(28): xx-1 GF (2 8 ) → GF (2 8 ): x x -1
(다) 다시 {0,1}8상에서 아핀(affine) 변환 적용(C) again apply affine transformation on {0,1} 8
이때 상기 아핀 변환은 고정점을 제거하기 위해 사용하며, 그 형태는 a가 8×8 정칙행렬일 때, y=axb 형태를 가진다. 상기 행렬 a와 상수 b는 아래의 [수학식 5]에서와 같다.In this case, the affine transformation is used to remove the fixed point, and the form is y = ax when a is an 8 × 8 regular matrix. has type b The matrix a and the constant b are as shown in Equation 5 below.
= ------- S2= ------- S2
상기와 같이 생성한 Sbox는 아래의 [표 1], [표 2]에서와 같다.The generated Sbox is as shown in [Table 1] and [Table 2] below.
즉, 상기와 같이 1차 Sbox를 통해서 상기 Sbox내 테이블 상에 도시된 값으로 변환된 데이터는 상기 4×4 선형변환부(508)로 입력되어 아래의 [수학식 6]에서와 같이 선형변환된 함수값 L1, L2로 출력된다.That is, the data converted into the values shown on the table in the Sbox through the primary Sbox as described above is input to the 4 × 4 linear transformation unit 508 and linearly transformed as shown in Equation 6 below. Outputted as function values L1 and L2.
마지막으로 상기 업데이트 모듈(106)은, 유사난수 생성모듈(116)의 제2 랜덤 함수값 변환부(116)로부터의 출력값인 제2랜덤 함수값(Rand2)을 상태값으로 입력하고, 상기 리시딩 생성모듈(102)내 키 생성부(112)로부터 생성된 키워드값을 상기 유사난수 생성모듈(104)내 제1랜덤 함수값 변환부(114)로부터의 출력값인 제1랜덤 함수값(Rand1)과 익스크루시브 오아 연산을 수행하여 얻어진 키워드값을 또 다른 입력으로 하는 제3랜덤 함수값 변환부(118)로 구성되어 상기 제3랜덤 함수값 변환부(118)로부터 생성된 제3랜덤 함수값(Rand3)을 상기 리시딩 모듈(102)내 시드 생성부(110)로 제공하고, 또한 상기 유사난수 생성모듈(104)내 제1 랜덤 함수값 변환부(114)로 제공하게 된다. 이에 따라 시드 생성부(110)에서는 상기 도 1에서 보여지는 바와 같이 상기 Rand3값과 상기 리시딩 생성모듈(102)내 키 생성부(112)로부터 생성된 키워드값을 이용하여 64비트로 이루어진 새로운 O1∼O6까지의 시드값을 생성하여 외부로부터의 공격에 견고성을 유지할 수 있게 되며, 또한 상기 유사난수 생성모듈(104)내 제1랜덤 함수값 변환부(114)는 새롭게 업데이트된 Rand3 값을 상태(state) 값으로 입력할 데이터값으로 피드백 입력함에 따라 첫 번째 랜덤 함수값(Rand1)과 거의 연관성 없는 난수성 높은 새로운 랜덤 함수값(Rand3)을 얻을 수 있게 되는 것이다.Finally, the update module 106 inputs the second random function value Rand2, which is an output value from the second random function value conversion unit 116 of the pseudorandom number generation module 116, as a state value, and receives the read. The first random function value Rand1, which is an output value from the first random function value conversion unit 114 in the pseudo random number generation module 104, is used to generate the keyword value generated from the key generation unit 112 in the generation module 102. The third random function value converting unit 118 is configured as a third random function value converting unit 118 using another keyword value obtained by performing an exclusive ora operation. Rand3) is provided to the seed generator 110 in the receiving module 102, and is also provided to the first random function value converter 114 in the pseudorandom number generation module 104. Accordingly, as shown in FIG. 1, the seed generator 110 generates new 64-bit bits O1 through 64-bit using the Rand3 value and the keyword value generated from the key generator 112 in the receiving generation module 102. By generating the seed value up to O6 it is possible to maintain the robustness from the attack from the outside, and the first random function value conversion unit 114 in the pseudo random number generation module 104 is the state of the newly updated Rand3 value (state) By inputting the feedback as the data value to be input as), a new random function value (Rand3) having a high randomness that is hardly related to the first random function value (Rand1) can be obtained.
이는 즉, 상기 유사난수 생성모듈로부터 발생된 랜덤화 함수값(Rand2)이 공격자에게 쉽게 노출될 수 있기 때문에 상기 키워드값을 새롭게 갱신하지 않은 상태에서 공격자에게 노출된다면, 이후 상기 유사난수 생성모듈(104)과 업데이트 모듈(106)네 랜덤화 함수부의 모든 출력값이 계산될 수 있기 때문이다.That is, since the randomized function value (Rand2) generated from the pseudorandom number generation module can be easily exposed to the attacker, if the keyword value is exposed to the attacker without newly updating the keyword value, the pseudorandom number generation module 104 is then performed. And all output values of the randomization function of the update module 106 can be calculated.
이때 상기 익스크루시브 오아(120) 연산은 각 라운드에 사용되는 키워드 128비트와 제1랜덤 함수값 변환부(114)의 출력값(Rand1)을 익스크루시브 오아 연산하여 아래의 [수학식 7]에서와 같이 키워드를 갱신시키며,At this time, the exclusive OR 120 operation performs an exclusive OR operation on the keyword 128 bits used in each round and the output value Rand1 of the first random function value conversion unit 114 in Equation 7 below. To update the keyword,
state ← RandomFnt(Rand2, key)state ← RandomFnt (Rand2, key)
상기 갱신된 키워드와 제2랜덤 함수값 변환부(116)의 출력값(Rand2)을 입력으로 하는 제3랜덤 함수값 변환부(118)의 출력값(Rand3)으로 상기 유사난수 생성모듈(104)내 제1랜덤 함수값 변환부(114)의 상태값을 갱신시키게 되는 것이다.The pseudorandom number generation module 104 of the pseudorandom number generation module 104 is used as the output value Rand3 of the third random function value conversion unit 118 that receives the updated keyword and the output value Rand2 of the second random function value conversion unit 116. The state value of one random function value converting unit 114 is updated.
한편, 상술한 본 발명의 설명에서는 구체적인 실시 예에 관해 설명하였으나, 여러 가지 변형이 본 발명의 범위에서 벗어나지 않고 실시될 수 있다. 따라서 발명의 범위는 설명된 실시 예에 의하여 정할 것이 아니고 특허청구범위에 의해 정하여져야 한다.Meanwhile, in the above description of the present invention, specific embodiments have been described, but various modifications may be made without departing from the scope of the present invention. Therefore, the scope of the invention should be determined by the claims rather than by the described embodiments.
이상에서 설명한 바와 같이, 본 발명에서 제안하는 유사난수 발생기에서는 종래 ANSI X9.17에서 제안하고 있는 블록 암호를 이용한 난수 발생기처럼 하나의키에 타임스탬프를 쓰는 대신 유사난수 발생을 위해 사용되는 키 값을 업데이트시키는 업데이트 알고리즘을 통해 난수 발생시마다 키 값을 변경시킴으로써 안정성 측면이 강화된 이점이 있다. 또한 본 발명에서는 상기 키 값을 변경시킴에 있어서 키를 다시 생성하는 것이 아니라 기존에 생성된 키를 간단한 논리 연산을 통해 업데이트시킴으로써 효율성을 높일 수 있는 이점이 있으며, PC 뿐만 아니라 제한된 환경의 IC 카드 등과 같은 다양한 플랫폼에서도 모두 적용 가능하게 되는 이점이 있다.As described above, the pseudorandom number generator proposed by the present invention uses a key value used for generating pseudorandom numbers instead of writing a timestamp on one key like a random number generator using a block cipher proposed in ANSI X9.17. An update algorithm for updating has an advantage of improving stability by changing a key value whenever a random number is generated. In the present invention, there is an advantage in that the efficiency can be improved by updating a previously generated key through a simple logical operation, instead of regenerating the key in changing the key value, IC card in a limited environment as well as a PC This has the advantage of being applicable to all the same various platforms.
Claims (30)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020010088363A KR20030059500A (en) | 2001-12-29 | 2001-12-29 | Pseudo random number generator formed by spn structure using a block code and method thereof |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020010088363A KR20030059500A (en) | 2001-12-29 | 2001-12-29 | Pseudo random number generator formed by spn structure using a block code and method thereof |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20030059500A true KR20030059500A (en) | 2003-07-10 |
Family
ID=32215933
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020010088363A Ceased KR20030059500A (en) | 2001-12-29 | 2001-12-29 | Pseudo random number generator formed by spn structure using a block code and method thereof |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR20030059500A (en) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101443575B1 (en) * | 2013-04-29 | 2014-09-23 | 한국전자통신연구원 | Apparatus and method for converting random binary sequence to random integer |
KR101488270B1 (en) * | 2013-05-27 | 2015-01-30 | 한국전자통신연구원 | Apparatus and method for extracting noisy entropy source for random number generator |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04192736A (en) * | 1990-11-26 | 1992-07-10 | Matsushita Electric Ind Co Ltd | Ciphering device |
US5825886A (en) * | 1995-12-08 | 1998-10-20 | Entrust Technologies Ltd. | Construction symmetric ciphers using the cast design procedure |
JPH1117673A (en) * | 1997-06-25 | 1999-01-22 | Canon Inc | Common key encryption communication method and its communication network |
US5949884A (en) * | 1996-11-07 | 1999-09-07 | Entrust Technologies, Ltd. | Design principles of the shade cipher |
KR20000035057A (en) * | 1998-10-20 | 2000-06-26 | 루센트 테크놀러지스 인크 | Efficient block cipher method |
-
2001
- 2001-12-29 KR KR1020010088363A patent/KR20030059500A/en not_active Ceased
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04192736A (en) * | 1990-11-26 | 1992-07-10 | Matsushita Electric Ind Co Ltd | Ciphering device |
US5825886A (en) * | 1995-12-08 | 1998-10-20 | Entrust Technologies Ltd. | Construction symmetric ciphers using the cast design procedure |
US5949884A (en) * | 1996-11-07 | 1999-09-07 | Entrust Technologies, Ltd. | Design principles of the shade cipher |
JPH1117673A (en) * | 1997-06-25 | 1999-01-22 | Canon Inc | Common key encryption communication method and its communication network |
KR20000035057A (en) * | 1998-10-20 | 2000-06-26 | 루센트 테크놀러지스 인크 | Efficient block cipher method |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101443575B1 (en) * | 2013-04-29 | 2014-09-23 | 한국전자통신연구원 | Apparatus and method for converting random binary sequence to random integer |
US9042545B2 (en) | 2013-04-29 | 2015-05-26 | Electronics And Telecommunications Research Institute | Apparatus and method for converting random binary sequence into random integer |
KR101488270B1 (en) * | 2013-05-27 | 2015-01-30 | 한국전자통신연구원 | Apparatus and method for extracting noisy entropy source for random number generator |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2760799B2 (en) | Encryption method | |
Kuznetsov et al. | Strumok stream cipher: Specification and basic properties | |
US7190791B2 (en) | Method of encryption using multi-key process to create a variable-length key | |
EP1927212B1 (en) | Homophonic substitution symmetric key encryption | |
US8787563B2 (en) | Data converter, data conversion method and program | |
RU2124814C1 (en) | Method for encoding of digital data | |
US20070189518A1 (en) | 3-D quaternion quantum fractal encryption | |
JP4774509B2 (en) | Pseudo random number generation system | |
CN101814985B (en) | Block cipher system using multi-chaotic mapping multi-dynamic S-box | |
JP2008513811A (en) | Calculation conversion method and system | |
KR100583495B1 (en) | Efficient block cipher method | |
US7103180B1 (en) | Method of implementing the data encryption standard with reduced computation | |
CN115987490B (en) | A white-box construction method for lightweight block cipher algorithm suitable for ARX structure | |
RU2188513C2 (en) | Method for cryptographic conversion of l-bit digital-data input blocks into l-bit output blocks | |
KR20030059500A (en) | Pseudo random number generator formed by spn structure using a block code and method thereof | |
JP5207153B2 (en) | Pseudo random number generation system | |
RU2140716C1 (en) | Method for cryptographic conversion of digital data blocks | |
CN111159721B (en) | Code control type data encryption method for variable key | |
CN114531223A (en) | Encryption and decryption method based on lightweight block cipher tenon type algorithm | |
KR20110031822A (en) | Encryption / decryption method and apparatus for random access through hierarchical tree structure of stream module | |
ES2293665T3 (en) | METHOD FOR THE CRYPTOGRAPHIC CONVERSION OF INPUT BLOCKS OF L DIGITAL DATA INFORMATION BITS IN OUTPUT BLOCKS OF L BITS. | |
JP5268011B2 (en) | Encryption system and decryption system | |
JP2008046151A (en) | Encryption processing method | |
JP2993487B2 (en) | Information processing apparatus, IC card, and code generation method | |
KR20000066440A (en) | Extended rc4 chipher algorithm using lfsr |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
PA0109 | Patent application |
Patent event code: PA01091R01D Comment text: Patent Application Patent event date: 20011229 |
|
PA0201 | Request for examination | ||
PG1501 | Laying open of application | ||
E902 | Notification of reason for refusal | ||
PE0902 | Notice of grounds for rejection |
Comment text: Notification of reason for refusal Patent event date: 20031129 Patent event code: PE09021S01D |
|
E601 | Decision to refuse application | ||
PE0601 | Decision on rejection of patent |
Patent event date: 20040212 Comment text: Decision to Refuse Application Patent event code: PE06012S01D Patent event date: 20031129 Comment text: Notification of reason for refusal Patent event code: PE06011S01I |