KR20050086746A - 다중키를 이용한 스트림 암호 생성 방법 - Google Patents

다중키를 이용한 스트림 암호 생성 방법 Download PDF

Info

Publication number
KR20050086746A
KR20050086746A KR1020057008993A KR20057008993A KR20050086746A KR 20050086746 A KR20050086746 A KR 20050086746A KR 1020057008993 A KR1020057008993 A KR 1020057008993A KR 20057008993 A KR20057008993 A KR 20057008993A KR 20050086746 A KR20050086746 A KR 20050086746A
Authority
KR
South Korea
Prior art keywords
bytes
sub
key
random number
length
Prior art date
Application number
KR1020057008993A
Other languages
English (en)
Other versions
KR100994841B1 (ko
Inventor
안드래 자쿠스 브리슨
스태픈 로렌스 보렌
Original Assignee
스태픈 로렌스 보렌
안드래 자쿠스 브리슨
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 스태픈 로렌스 보렌, 안드래 자쿠스 브리슨 filed Critical 스태픈 로렌스 보렌
Publication of KR20050086746A publication Critical patent/KR20050086746A/ko
Application granted granted Critical
Publication of KR100994841B1 publication Critical patent/KR100994841B1/ko

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/14Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/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
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Storage Device Security (AREA)
  • Saccharide Compounds (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)

Abstract

대칭 암호화 방법에서 스트림 암호는 평문 메시지만큼 길어야 한다. 이러한 스트림 암호는 암호화 될 평문 메시지가 방대한 경우 생성하기가 어렵다. 본 발명은 매우 길수 있는 가변 길이를 가지는 스트림 암호를 생성하는 방법을 제공한다. 이러한 스트림 암호는 비반복 길이들을 가지는 다수의 랜덤 서브-키들을 생성하고 그 생성된 랜덤 서브-키들을 랜덤하게 결함함으로써 생성된다.

Description

다중키를 이용한 스트림 암호 생성 방법{METHOD OF GENERATING A STREAM CIPHER USING MULTIPLE KEYS}
본 발명은 암호화 방법에 관한 것으로, 특히 매우 길 수 있는 전자 통신 데이터를 암호화하기 위한 스트림 암호(stream cipher)를 생성하는 방법에 관한 것이다.
안전한 전자 통신을 제공하기 위한 여러 가지 암호화 방법들이 당업계에 잘 알려져 있다. 대칭적인 암호화 방법인 경우, 송신자와 수진자는 메시지를 암호화하고 복호화하기 위해서 동일한 부호(code) 또는 키(key)를 이용한다. 파괴되거나 해독될 가능성이 없는 완전히 안전한 부호(cipher)로는 OTP (One-Time-Pad) 부호가 유일하다. OTP는 평문(plaintext) 메시지를 포함하는 비트 스트림과, 그 평문과 동일한 길이를 가지는 비밀 랜덤 비트 스트림(secret random bit-stream)을 취한다. 키를 이용하여 평문을 암호화하기 위해서, 키와 평문으로부터의 각 비트 쌍이 배타적 논리합(XOR) 함수에 의해 순차적으로 처리되어 암호문이 얻어진다. 상기 키가 완전히 랜덤하고 승인 받지 않은 제 3자로에게 비밀이 유지된다면 상기 암호문은 해독이 불가능하다. 이러한 암호화 방법은 상기 키(key)가 적어도 상기 메시지와 통일한 길이를 가져야 한다는 문제점이 있다. 만약에 더 작은 키가 사용되고 반복되어진다면 상기 암호는 파괴될 수 있다. 경우에 따라서는 암호화가 요구되는 데이터의 길이가 매우 크다.
따라서 가변 길이를 가지며 매우 다양한 양의 데이터를 암호화 할 수 있는 랜덤 키 또는 OTP를 생성하는 방법이 요구된다.
도 1은 본 발명에 따른 방법을 수행하기 위한 컴퓨터 시스템의 개략적인 구성도이다.
도 2는 본 발명에 따른 방법을 도시하는 흐름도이다.
따라서, 본 발명은 상기 문제점을 해결하기 위해 안출된 것으로서, 매우 다양한 양의 데이터를 암호화 할 수 있는 다중키를 이용한 스트림 암호 생성 방법을 제공함에 그 목적이 있다.
상기 목적을 달성하기 위한 본 발명의 바람직한 일 실시예에 따르면, x 바이트 길이를 가지는 스트림 암호를 생성하는 방법은, i) 각각 고유의 mn 바이트 길이를 가지는 n개의 서브-키들을 선택하는 단계와, ii) 상기 서브-키 각각을 위한 것으로서 각각 mn 바이트 길이를 가지는 n개의 난수들을 생성하는 단계와, iii) (n+1)번째 난수 R을 생성하는 단계와, iv) p=Modmn(R)로 설정하는 단계와, v) 상기 n번째 난수에서의 위치가 p인 각 바이트에 대해서 함수를 모든 n 바이트들에 적용하여 값을 생성하는 단계와, vi) 상기 생성된 값을 상기 스트림 암호의 끝 부분에 결합하는 단계와, vii) p=p+1로 설정하는 단계와, viii) 상기 스트림 암호의 길이가 x 바이트가 될 때 까지 상기 v), vi) 및 vii) 단계들을 반복하는 단계를 포함함을 특징으로 한다. 바람직하게는, 상기 각 서브-키의 선택된 길이 mn이 소수(prime number)이다. 상기 스트림 암호 생성 방법은 비선형화(delinearization) 함수를 상기 스트림 암호에 적용하는 단계를 더 포함할 수 있다.
본 발명의 일실시예에 따르면, 상기 n개의 난수들 각각이, i) 완전 제곱이 아닌 (n+2)번째 난수를 생성하는 단계와, ii) 상기 (n+2)번째 난수의 제곱근을 산출하는 단계와, iii) (n+3)번째 난수를 생성하는 단계와, iv) 상기 (n+2)번째 난수에서의 위치가 상기 (n+3)번째 난수를 근거로 하여 산출되는 디지트(digit)로 부터 시작하여, 유한 디지트 스트링들(strings)을 순차적으로 취하여, 상기 유한 디지트 스트링 각각을 바이트로 변환하는 단계와, v) 상기 n개의 난수들 각각의 상기 선택된 길이 mn이 도달될 때 까지 상기 변환된 각각의 바이트를 순차적으로 결합하는 단계를 통해 생성된다.
또한, 본 발명은 상기 스트림 암호 생성 방법을 수행하기 위한 컴퓨터 프로그램 제품 및 데이터 처리 시스템도 제공한다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예를 설명한다.
도 2는 본 발명의 실시예 따른 암호화 키를 생성하기 위한 방법의 흐름도를 도시하고 있다. 구체적으로, 암호화 키 즉, 무한한 길이를 가지는 비반복 스트림 암호(non-repeating stream cipher)(이하, 슈퍼-키(Supr Key)라 칭함)는 서브-키들(sub-key)을 결합해서 생성된다. 다수의(n) 서브-키들(K1, K2, ..., Kn)은 응용프로그램(application)에 따라 구체화될 수 있다. 상기 서브-키들의 개수가 많을수록 상기 비반복 슈퍼-키의 길이는 길어진다. 각 서브-키의 길이는 소수(prime number)개의 비트들이 되며, 상기 소수는 10 이상인 것이 바람직하다.
본 발명의 방법에서의 첫 번째 단계에서는 이용할 슈퍼-키 또는 스트림 암호의 크기를 결정한다. 서브-키들의 개수(n)와 각 서브-키의 비 반복 길이(mn)가 선택된다. 상기 서브-키들 각각은 고유의 비반복 길이를 가진다. 즉, 어떤 두개의 서브-키들도 동일한 비반복 길이를 가지지 않는다. 상기 서브-키들의 비반복 길이들은 소수개의 바이트들(prime numbers of bytes)인 것이 바람직하다. 서브-키들의 길이는 바이트로 171개의 상이한 소수들이므로 2, 3, 5, ..., 1021 범위의 소수들인 것이 바람직하다. 서브-키들의 개수와 그들의 소수 비반복 길이들을 상호적으로 고려하여 구체적인 선택이 수행될 수 있다. 대안적으로, 키들의 개수와 그들의 소수 비반복 길이들은 응용 프로그램에 프로그래밍되거나, 프로그램이 서브-키들의 개수와 그들의 비반복 길이를 임의로 선택할 수 있다. n 서브-키(Kn)인 경우, 슈퍼-키의 비반복 길이는 Size(K1) × Size (K2) × Size (K3) ... × Size (Kn)이 된다. 예를 들면, 하기의 소수 비반복 길이들의 10개의 서브-키들이 사용된다고 가정한다.
Sub Key 1 = 13 bytes = K1
Sub Key 2 = 17 bytes = K2
Sub Key 3 = 19 bytes = K3
Sub Key 4 = 23 bytes = K4
Sub Key 5 = 29 bytes = K5
Sub Key 6 = 31 bytes = K6
Sub Key 7 = 37 bytes = K7
Sub Key 8 = 41 bytes = K8
Sub Key 9 = 43 bytes = K9
Sub Key 10 = 47 bytes = K10
그러면 비반복 슈퍼-키의 길이는 13×17×19×23×29×31×37×41×43×47 = 266,186,053,068,611 bytes가 된다. 따라서 작은 수의 서브-키들을 사용하게 되면, 작은 소수 비반복 길이 각각은 매우 긴 비반복 슈퍼-키를 초래하게 된다. 상기 슈퍼-키의 크기에 대한 총 정의는 300 바이트(비반복 서브-키들의 길이들의 합)와 헤더(header)(서브-키들의 수 및 그들의 길이들)에 포함된다. 따라서 슈퍼-키들에 대한 총 정의는 상기 슈퍼-키의 크기의 일부가 된다.
바람직하게 최종적인 암호의 랜덤 성질(randomness)을 개선하기 위하여 각 서브-키의 상기 비반복 길이가 소수개의 바이트들이 되지만, 본 발명의 방법은 상기 최종적인 암호가 매우 길기만 하다면 비소수(non-prime number) 길이들이 사용되더라도 효과가 있다.
서브-키들의 수를 선택하는 것은 바람직하게는 50과 99사이의 다수의 키들을 제공하도록 랜덤 스트림에 의해 생성된 처음 두개의 디지트(digit)를 취하고 50으로 MOD하고(MODed) 50을 더해서 계산될 수 있다.
다중 키(multi-key) 과정의 각 서브-키는 다음과 같이 생성될 수 있다.
먼저 완전 제곱수(perfect square)가 아닌 난수(random number)가 바람직하게는 매우 랜덤한 소스(source)에 의해 생성된다. 바람직하게는 그러한 난수는 500 내지 700 디지트들 범위의 정수이다. 이 값은 "제1 씨드 값(first seed value)" O의 역할을 한다. 상기 선택된 값 O가 완전 제곱수가 아닌지 확인된다. 만약 상기 선택된 값 O가 완전 제곱수이면, 완전 제곱수가 아닐 때까지 추가적인 난수들이 생성된다. 제2 씨드 값 P는 컴퓨터의 랜드 함수(rand function)를 씨드(seed)하는데 이용되는 32 비트 값이다. 대부분의 컴퓨터들의 운영 시스템(operating system)들에 포함된 난수 발생기(random number genertor)들은 의사 랜덤(pseudo-random)한 특성을 가지며 그리 강인한 특성을 가지지는 않는다. 그러나 이러한 값들은 시작점으로서는 충분하다. 제2 난수 P도 컴퓨터의 랜드 함수로 부터 생성된다. 그리고 나서 그것은 상기 시작점을 설정하기 위해 100에 의해 MOD된다. 제1 씨드 값 O의 제곱근 Q가 계산되는데, 무리수 Q(소수점 이후로 비반복적으로 무한이 연장되는 수)가 산출된다. 소수점 이후의 디지트들의 결과적인 스트링(string)은 길이가 무한할 수 있으며 매우 랜덤하다. 상기 컴퓨터는 소수점 이전의 디지트들은 버리고 소수점 이후의 P 디지트들까지의 수 Q을 산출한다. 그리고 나서 Q의 P번째 디지트를 기점으로 하여 컴퓨터는 동시에 4개의 디지트들을 순차적으로 선택하고 그 선택된 4개의 디지트들의 MOD 256 값을 계산한다. 이로서 8비트값이 산출된다. 이러한 값은 상기 서브-키의 첫번째 바이트로 사용된다. 이러한 과정은 한 번에 4 디지트씩 반복되며, 소수 비반복 길이의 서브-키와 동일한 랜덤 데이터 스트링의 생성이 완료될 때 까지 다음의 디지트들에 대해서 순차적으로 계속 수행된다. 이러한 과정은 모든 서브-키들에 대한 비반복 길이들이 생성될 때 까지 모든 서브-키들에 대해 반복된다. 그리고 나서 각 서브-키가, 비반복 스트링 바이트들을 취해서 그것을 다른 서브-키들과 결합하여 슈퍼-키를 생성하기에 충분한 길이의 서브-키를 형성하는데 필요한 만큼 반복해서 형성된다.
상기 서브-키들을 생성하기 위한 알고리즘은 하기와 같이 표현될 수 있다.
1. Treat seedl as the decimal representation of an integer in the range of 500-700 digits.
2. Let X: = seedl
3. Let Y: = is the irrational number generated by square rooting X
4. Let Zl,Z2,Z3,Z4,.. be the digits after the decimal point in the decimal representation of Y. Each Zi is in the range 0,.., 9.
5. Call srand(seed2).//only the first time
6. Call rand() to get the irrational starting point, start.
7. Let start: = rand() mod 100. start is in the range 0,1,.., 99.
8. Throw away Z1 and Z2 all the way to Zstart.
9. Let tmp: =10*Z(start+i) + Z(gtart+2). Throw away those used values.
10. Let n: = 50 + (tmp mod 50). n is in the range 50,51,.., 99.
11. For i : = 1,2,..,n, do:
12. Let j = 3*(i-1)
13. Let tmp be the next byte from the Z stream.
14. Let tmp: = 100*Zj+1 + 10*Zj+2 +Zj+3
15. Let t: = 172- (tmp mod 172). t is in the range 1, 2,.., 172.
16. Let u be the tth prime among the sequence 2,3, 5,..,1021.
17. If u is equal to any of 11, 12, .., 1{i-1}, set t to (t+l)mod 172 goto 16
18. Setli=u.
19. Next I: goto 11 until all subkey sizes are set.
20. For i : = 1, 2,.., n, do:
21. For j: =0, 1,2,..,1i, do:
22. Let k : = 4*j
23. Let tmp be the next byte from the Z stream.
24. Let tmp:=(1000*Zk +100*Zk+i + 10*Zk+2 +Zk+3) mod 256
25. Let : = tmp
26. Next j : Next subkey byte
27. Next I: Nextsubkey
28. For i : = 0, 1, 2,.., 255, do:
29. Let j : = 4*i
30. Let tmp :=(1000*Zj + 100*Zj+l + 10*Zj+2 +Zj+3) mod 256
31. If tmp is equal to any of S [0], S[1],.., S[i-l], set to(tmp+l) mod 256 goto 31
32. Set S[i]:=tmp.
33. Next i
34. Let offset: =ZiZi+l... Zi+9
35. Return n, (11,12,..,1n), (s1,s2,..,sn), S[256] and offset.
36. Save in keyfile and add seedl and start value to DB
37. Increment seedl and goto 2//repeat until enough keys are created
상기와 같이 모든 서브-키들이 생성되면 상기 슈퍼-키(암호)가 요구되는 길이로 생성된다. 이는 슈퍼-키가 암호화 될 관련된 데이터를 암호화하기 위해 계속 생성되며 모든 데이터가 암호화 될 때 까지만 계속 생성됨을 의미하다. 먼저 난수 R("제3 씨드 값" 또는 슈퍼-키에 대한 시작 오프셋이며, 이는 수 Q에 대한 시작점 P에 대립됨)이 생성된다. 길이 mn을 가지는 n개의 서브-키들 중의 어느 하나를 기점으로 하여, R의 Modmn이 계산되고, 각 서브-키의 Modmn(R) 번째의 바이트가 다른 모든 서브-키들의 대응하는 Modmn(R) 번째의 바이트들과 연속적으로 배타적 논리합 연산이 수행된다. 예를 들면, R=100이고 첫번째 서브-키의 길이가 97 바이트이며 두번째 서브-키의 길이가 43 바이트라면, 서브-키 1의 세번째 바이트가 선택되어 서브-키 2의 14번째 바이트 및 R에 근거하여 동일한 방법으로 선택된 다른 나머지 서브-키들의 대응하는 바이트과 배타적 논리합 연산이 수행된다. 이러한 과정은 각 서브-키로부터 선택된 모든 바이트들이 배타적 논리합 연산이 수행될 때 까지 반복된다. 그 결과값은 하기에서 설명되는 바와 같이 대체(substitution) 암호 또는 슈퍼-키 스트림을 비선형화하는 다른 비선형화(delinearization) 함수를 거친다. 이에 따른 이진 결과값은 결합(concatenation)에 이해 슈퍼-키에 더해된다. 다음으로, 서브-키 1의 다음 바이트가 서브-키 2의 다음 바이트 등과 배타적 논리합 연산이 수행된다. 다시 상기 과정은 각 서브-키로부터 선택된 모든 바이트들이 배타적 논리합 연산이 수행되어 비선형화될 때 까지 반복된다. 각 함수의 이진 결과값은 다시 결합에 의해 슈퍼-키들에 더해진다. 배타적 논리합 함수가 바람직하지만, 물론 다른 함수들도 적용될 수 있다. 예를 들면, 가산 또는 감산의 수학적 함수들이 사용될 수 있다. 수퍼 키의 각 바이트가 생성되고, 평문 메시지의 대응되는 바이트가 배타적 논리합 함수 또는 다른 수학적 함수에 의해 슈퍼-키의 대응되는 바이트로 암호화된다. 평문 메시지의 모든 바이트들이 암호화 되면 슈퍼-키의 생성 과정은 종료된다. 상기 암호화된 메시지는 상기 암호화 함수의 역(inverse) 함수를 그 자신과 슈퍼-키에 적용하여 해독될 수 있다.
서브-키들로부터 슈퍼-키를 생성하는 과정을 더 상세히 설명하기 위해, i번째 서브-키의 j번째 바이트를 로 표시하고 i번재 서브-키의 길이를 로 표시하자. 예를 들면, 등을 가질 수 있다. 서브-키 i로부터 하기와 같은 무한 수열을 생성한다.
상기 무한 수열의 j번째 바이트를 로 표시하고, j가 0 내지 ∞의 자연수라면, R이 난수인 경우 의 아래첨자 j의 최소값은 Rmodulo 이 된다. 그러면, 슈퍼-키의 j번째 바이트 Zj는 는 하기식과 같이 정의된다.
여기서, 은 XOR 연산을 의미한다. 슈퍼-키의 첫번째 바이트는 하기와 같다.
여기서, Rmod 범위의 정수이다.
상기 슈퍼-키는 0에서 범위의 j값을 갖는다.
P0, P1, P2, P3, ... 는 평문의 바이트들을 나타내며, C0, C1, ... 은 암호문의 바이트들을 나타낸다. 또한, z0, z1, ... 는 수퍼 키의 바이트들(상술한 바와 같이 계산됨)을 나타낸다. 암호문을 Ci := Pi XOR S[zi]로 정의한다. 암호문은 상기 바이트 C0, C1, ... 을 결합해서 형성되고, C는 암호화 과정의 결과로서 리턴된다. 암호해독은 반대의 과정으로 이루어진다.
L-바이트의 평문을 암호화하기 위해, L-바이트의 수퍼 키가 생성되고, 상기 평문의 바이트들의 수를 카운트하기 위해 대수(big number) 카운터 T를 이용한다. 출력은 L-바이트 암호문이 된다. 상기 암호문을 해독하기 위해 동일한 대수 카운터 T가 사용되고 출력은 L-바이트의 평문이 된다.
본 발명을 이용하여 암호문의 선형성을 감소하기 위해서, 평문 메시지가 암호화되기 전에 더 많은 단계가 슈퍼-키에 적용될 수 있다. 본 발명의 바람직한 실시예에 있어서는, 대체 암호가 슈퍼-키에 적용되고, 그 결과의 스트링(string)은 평문 메시지를 암호화하기 위해 사용된다. 예를 들면, 1에서 256까지의 256개의 고유 바이트들의 어레이(array)가 생성된다. 상기 슈퍼-키의 첫번째 바이트는 슈퍼-키의 x+1 번째 바이트의 값으로 대체되며, 여기서 x는 256-바이트 어레이의 첫번째 값이다. 상기 슈퍼-키의 두번째 바이트는 슈퍼-키의 y+2 번째 바이트의 값으로 대체되며, 여기서 y는 256-바이트 어레이의 두번째 값이다. 다른 것도 동일하게 적용된다. 상기 어레이의 이전 엔트리(entry)를 반복하기 않을 때 까지 바이트틀을 서브-키로부터 상기 어레이들로 더해서, 상기 256-바이트 어레이가 서브-키들 중의 하나로부터 형성될 수 있다.
암호문의 선형성은 대체 암호를 암호화된 메시지(암호문)에 적용함으로 감소될 수 있다. 그러나 암호화 이전에 대체 암호를 슈퍼-키에 적용하는 것이 더 효과적이다. 대체 암호 외 다른 유틸러티들(utility) 예를 들면, SANDIA labs의 INFL((invertible non-linear function: 역 비선형 함수) 유틸러티가 선형성을 감소시키는데 사용될 수 있다. 이것들은 Berlekamp-Massey 공격에 대한 보호를 제공하는데 유용한다.
각 서브-키를 형성하는 상기 랜덤 비반복 스트링은 상술한 바와 같이 형성하는 것이 바람직하지만, 본 발명의 방법은, 생성되는 슈퍼-키가 암호화될 데이터 크기의 두배가 되도록 슈퍼-키의 총 길이가 충분히 길기만 하면, 각 서브-키의 상기 랜덤 비반복 스트링이 각 서브-키를 형성하는 난수 발생기에 의해 생성되는 경우에도 효과가 있다.
상기한 바와 같은 방법은 키를 이용하여 사용자가 보호하기를 원하는 개인 파일을 암호화하는 개인 보안 시스템을 생성하는데도 사용될 수 있다. 이러한 경우 키를 분배하기 위한 어떠한 방법도 요구되지 않는다. 각 파일이 암호화되므로 새로운 파일은 {OLDFILENAME}.{OFFSET].wn으로 명명된다. OLDFILENAME은 용이한 해독을 가능하게 하는 확장자(extension)와 실용성을 위한 동일한 파일 포맷을 포함한다. 각 파일이 암호화되므로 그것은 즉시 해독되어 원래의 파일과 비교되고 테스트 카피(test copy)와 원래 파일 모두가 클린 스위프 삭제 절차를 통해 삭제된다(전체 파일이 0들로 재기록하고나서 1들로 재기록한 후 삭제된다).
바람직한 키 파일 포맷은 아래와 같이 정의된다.
typedef struct wnkeyfiletype {
char field[2];//must be WN to identify file format
long version;//file type version number to allow changes
BIGNUMBER offset;//the offset is a large number stored as a
//string of decimal digits delineated by""'s
long numsk;//the numberof subkeys
long sklen[numsk];//the individual subkey lengths
char skl[sklen[l]];//the 1st subkey
char skl[sklen[2]];//the 2nd subkey
char skl[sklen[3]];//the 3rd subkey
... ... ... ...
char sknumsk[sklen[numsk]];//the numskth subkey
char substit[256];//the substitution cipher key
} WNKEYFILE;
상기 키 파일 포맷은 표준이다. 유일하게 다른 값은 "s"로 서술되는 소수 디지트 스트링에 저장되는 오프셋이다.
이것의 예는 "987654321"이며, 이는 최고 1000 디지트 길이의 값들을 허용하게 되며, 상기 오프셋이 적절하게 구현된다면 키 선택의 재사용을 방지해 주게 된다.
본 발명은 상기에서 컴퓨터로 구현되는 방법, 예를 들면 도 1에 도시된 바와 같이 네트워크(12)를 통한 컴퓨터들(14 및 16)간이 통신을 암호화하고 해독하는 방법으로 설명되었다. 본 발명은 컴퓨터 하드웨어 장치, 컴퓨터 소프트웨어 명령어, 또는 그 조합으로도 구현될 수 있다. 또한, 본 발명은 본발명을 구현하기 위한 명령어를 이용한 컴퓨터로 판독 가능한 저장 매체로도 구현될 수 있다. 이러한 저장 매체는 자기 디스크, 광 디스크, 하드 디스크, 플로피 디스크, CD-ROM, 펌웨어(firmware) 등이 될 수 있다. 또한, 본 발명은 컴퓨터로 판독 가능한 변조 케리어 신호(modulated carrier signal)로도 구현될 수 있다.
이상 설명한 내용을 통해 당업자라면 본 발명의 기술사상을 일탈하지 아니하는 범위에서 다양한 변경 및 수정이 가능함을 알 수 있을 것이다. 따라서, 본 발명의 기술적 범위는 명세서의 상세한 설명에 기재된 내용으로 한정되는 것이 아니라 특허 청구의 범위에 의해 정하여져야만 할 것이다.

Claims (20)

  1. x 바이트 길이를 가지는 스트림 암호를 생성하는 방법에 있어서,
    i) 각각 고유의 mn 바이트 길이를 가지는 n개의 서브-키들을 선택하는 단계와;
    ii) 상기 서브-키 각각을 위한 것으로서 각각 mn 바이트 길이를 가지는 n개의 난수들을 생성하는 단계와;
    iii) (n+1)번째 난수 R을 생성하는 단계와;
    iv) p=Modmn(R)로 설정하는 단계와;
    v) 상기 n번째 난수에서의 위치가 p인 각 바이트에 대해서 함수를 모든 n 바이트들에 적용하여 값을 생성하는 단계와;
    vi) 상기 생성된 값을 상기 스트림 암호의 끝 부분에 결합하는 단계와;
    vii) p=p+1로 설정하는 단계와;
    viii) 상기 스트림 암호의 길이가 x 바이트가 될 때 까지 상기 v), vi) 및 vii) 단계들을 반복하는 단계를 포함하는 것을 특징으로 하는 x 바이트 길이의 스트림 암호 생성 방법.
  2. 제1항에 있어서,
    상기 각 서브-키의 선택된 길이 mn이 소수(prime number)인 것을 특징으로 하는 스트림 암호 생성 방법.
  3. 제1항에 있어서,
    상기 각 서브-키의 선택된 길이 mn이 10 이상인 소수(prime number)인 것을 특징으로 하는 스트림 암호 생성 방법.
  4. 제1항에 있어서,
    상기 서브-키들의 상기 n바이트들에 적용된 상기 함수가 배타적 논리합(XOR) 함수임을 특징으로 하는 스트림 암호 생성 방법.
  5. 제1항에 있어서,
    비선형화(delinearization) 함수를 상기 스트림 암호에 적용하는 단계를 더 포함하는 것을 특징으로 하는 스트림 암호 생성 방법.
  6. 제5항에 있어서,
    상기 비선형화 함수가 대체 암호(substitution cipher)인 것을 특징으로 하는 스트림 암호 생성 방법.
  7. 제1항에 있어서,
    상기 n개의 난수들 각각이
    i) 완전 제곱이 아닌 (n+2)번째 난수를 생성하는 단계와;
    ii) 상기 (n+2)번째 난수의 제곱근을 산출하는 단계와;
    iii) (n+3)번째 난수를 생성하는 단계와,;
    iv) 상기 (n+2)번째 난수에서의 위치가 상기 (n+3)번째 난수를 근거로 하여 산출되는 디지트(digit)로 부터 시작하여, 유한 디지트 스트링들(strings)을 순차적으로 취하여, 상기 유한 디지트 스트링 각각을 바이트로 변환하는 단계와;
    v) 상기 n개의 난수들 각각의 상기 선택된 길이 mn이 도달될 때 까지 상기 변환된 각각의 바이트를 순차적으로 결합하는 단계를 통해 생성되는 것을 특징으로 하는 스트림 암호 생성 방법.
  8. 제7항에 있어서,
    상기 유한 디지트 스트링들의 길이가 적어도 4 디지트인 것을 특징으로 하는 스트림 암호 생성 방법.
  9. 제8항에 있어서,
    상기 유한 스트링이 MOD 함수를 적용하여 바이트로 변환되는 것을 특징으로 하는 스트림 암호 생성 방법.
  10. 제7항에 있어서,
    상기 유한 스트링이 MOD 256 함수를 적용하여 바이트로 변환되는 것을 특징으로 하는 스트림 암호 생성 방법.
  11. x 바이트 길이를 가지는 스트림 암호를 생성하기 위한 컴퓨터 프로그램 제품에 있어서,
    i) 각각 고유의 mn 바이트 길이를 가지는 n개의 서브-키들을 선택하는 단계와;
    ii) 상기 서브-키 각각을 위한 것으로서 각각 mn 바이트 길이를 가지는 n개의 난수들을 생성하는 단계와;
    iii) (n+1)번째 난수 R을 생성하는 단계와;
    iv) p=Modmn(R)로 설정하는 단계와;
    v) 상기 n번째 난수에서의 위치가 p인 각 바이트에 대해서 함수를 모든 n 바이트들에 적용하여 값을 생성하는 단계와;
    vi) 상기 생성된 값을 상기 스트림 암호의 끝 부분에 결합하는 단계와;
    vii) p=p+1로 설정하는 단계와;
    viii) 상기 스트림 암호의 길이가 x 바이트가 될 때 까지 상기 v), vi) 및 vii) 단계들을 반복하는 단계를 수행하는 컴퓨터 판독 가능한 프로그램 명령어 수단이 구현되어 있는 컴퓨터 판독 가능한 기록 매체를 포함하는 것을 특징으로 하는 상기 컴퓨터 프로그램 제품.
  12. 제11항에 있어서,
    상기 각 서브-키의 선택된 길이 mn이 소수(prime number)인 것을 특징으로 하는 컴퓨터 프로그램 제품.
  13. 제11항에 있어서,
    상기 각 서브-키의 선택된 길이 mn이 10 이상인 소수(prime number)인 것을 특징으로 하는 컴퓨터 프로그램 제품.
  14. 제11항에 있어서,
    상기 서브-키들의 상기 n바이트들에 적용된 상기 함수가 배타적 논리합(XOR) 함수인 것을 특징으로 하는 컴퓨터 프로그램 제품.
  15. 제11항에 있어서,
    상기 컴퓨터 판독 가능한 프로그램 명령어 수단이 상기 비선형화(delinearization) 함수를 상기 스트림 암호에 적용하는 단계를 더 수행하는 것을 특징으로 하는 컴퓨터 프로그램 제품.
  16. 제15항에 있어서,
    상기 비선형화 함수가 대체 암호(substitution cipher)인 것을 특징으로 하는 컴퓨터 프로그램 제품.
  17. 제11항에 있어서,
    상기 n개의 난수들 각각이,
    i) 완전 제곱이 아닌 (n+2)번째 난수를 생성하는 단계와;
    ii) 상기 (n+2)번째 난수의 제곱근을 산출하는 단계와;
    iii) (n+3)번째 난수를 생성하는 단계와;
    iv) 상기 (n+2)번째 난수에서의 위치가 상기 (n+3)번째 난수를 근거로 하여 산출되는 디지트(digit)로 부터 시작하여, 유한 디지트 스트링들(strings)을 순차적으로 취하여, 상기 유한 디지트 스트링 각각을 바이트로 변환하는 단계와;
    v) 상기 n개의 난수들 각각의 상기 선택된 길이 mn이 도달될 때 까지 상기 변환된 각각의 바이트를 순차적으로 결합하는 단계를 통해 생성되는 것을 특징으로 하는 컴퓨터 프로그램 제품.
  18. 제13항에 있어서,
    상기 유한 디지트 스트링들의 길이가 적어도 4 디지트인 것을 특징으로 하는 컴퓨터 프로그램 제품.
  19. 제14항에 있어서,
    상기 유한 스트링이 MOD 함수를 적용하여 바이트로 변환되는 것을 특징으로 하는 컴퓨터 프로그램 제품.
  20. 제15항에 있어서,
    상기 유한 스트링이 MOD 256 함수를 적용하여 바이트로 변환되는 것을 특징으로 하는 컴퓨터 프로그램 제품.
KR1020057008993A 2002-11-20 2003-10-06 다중키를 이용한 스트림 암호 생성 방법 및 기록 매체 KR100994841B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/299,847 2002-11-20
US10/299,847 US7190791B2 (en) 2002-11-20 2002-11-20 Method of encryption using multi-key process to create a variable-length key

Publications (2)

Publication Number Publication Date
KR20050086746A true KR20050086746A (ko) 2005-08-30
KR100994841B1 KR100994841B1 (ko) 2010-11-16

Family

ID=32297785

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020057008993A KR100994841B1 (ko) 2002-11-20 2003-10-06 다중키를 이용한 스트림 암호 생성 방법 및 기록 매체

Country Status (13)

Country Link
US (1) US7190791B2 (ko)
EP (1) EP1566009B1 (ko)
JP (1) JP4608319B2 (ko)
KR (1) KR100994841B1 (ko)
CN (1) CN100568802C (ko)
AT (1) ATE370569T1 (ko)
AU (1) AU2003273688B2 (ko)
BR (2) BRPI0316473B1 (ko)
CA (2) CA2414261A1 (ko)
DE (1) DE60315700T2 (ko)
ES (1) ES2291675T3 (ko)
MX (1) MXPA05005358A (ko)
WO (1) WO2004047361A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105406960A (zh) * 2015-12-20 2016-03-16 河南思维自动化设备股份有限公司 一种信息加密和解密方法

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7006629B2 (en) * 2000-12-19 2006-02-28 International Business Machines Corporation Method and system for processing a data set
FR2838262B1 (fr) * 2002-04-08 2004-07-30 Oberthur Card Syst Sa Procede de securisation d'une electronique a acces crypte
EP1766568A1 (en) * 2004-06-14 2007-03-28 The University of North Carolina at Greensboro Systems and methods for digital content security
EP2016701A4 (en) * 2006-04-25 2012-04-25 Stephen Laurence Boren DYNAMIC DISTRIBUTED KEY SYSTEM AND METHOD FOR MANAGING IDENTITY, AUTHENTICATION OF SERVERS, DATA SECURITY AND PREVENTING ATTACKS OF MIDDLE MAN
US20080304664A1 (en) * 2007-06-07 2008-12-11 Shanmugathasan Suthaharan System and a method for securing information
US20100235689A1 (en) * 2009-03-16 2010-09-16 Qualcomm Incorporated Apparatus and method for employing codes for telecommunications
EP2611062B1 (en) * 2010-08-24 2018-07-18 Mitsubishi Electric Corporation Encryption device, encryption system, encryption method and encryption program
CN102647393B (zh) * 2011-02-21 2017-02-22 鸿合科技有限公司 一种数字标牌的内容防盗播方法
US8767954B2 (en) * 2011-12-01 2014-07-01 Colloid, Llc Methods and systems for deriving a cryptographic framework
US9497185B2 (en) * 2013-12-30 2016-11-15 Google Inc. Systems, methods, and computer program products for providing application validation
CN106209736B (zh) * 2015-05-04 2020-01-17 腾讯科技(深圳)有限公司 流媒体数据播放方法、终端及流媒体服务器
WO2017132693A2 (en) * 2016-01-28 2017-08-03 Tfor Llc Removing information from data
FI20165911L (fi) * 2016-11-30 2018-05-31 Sam Widlund Menetelmä ja järjestelmä tiedon salaukseen
CN106953875A (zh) * 2017-04-26 2017-07-14 吉林大学珠海学院 基于多密钥流密码的顺序加密方法
ZA202004225B (en) 2019-07-11 2023-07-26 Entersekt International Ltd System and method for secure input at a remote service
US11621837B2 (en) 2020-09-03 2023-04-04 Theon Technology Llc Secure encryption of data using partial-key cryptography
US11310042B2 (en) 2020-09-11 2022-04-19 Crown Sterling Limited, LLC Methods of storing and distributing large keys
US11552780B2 (en) 2020-12-23 2023-01-10 Theon Technologies, Inc. Homomorphic one-time pad encryption
US11755772B2 (en) * 2021-09-20 2023-09-12 Crown Sterling Limited, LLC Securing data in a blockchain with a one-time pad
US11943336B2 (en) 2021-11-22 2024-03-26 Theon Technology Llc Use of gradient decent function in cryptography
US11791988B2 (en) 2021-11-22 2023-10-17 Theon Technology Llc Use of random entropy in cryptography
US11902420B2 (en) * 2021-11-23 2024-02-13 Theon Technology Llc Partial cryptographic key transport using one-time pad encryption
US20240069889A1 (en) * 2022-08-25 2024-02-29 National Technology & Engineering Solutions Of Sandia, Llc Systems and methods for automatically updating system firmware

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3706941A (en) * 1970-10-28 1972-12-19 Atomic Energy Commission Random number generator
US4058573A (en) * 1971-07-02 1977-11-15 Ciba-Geigy Corporation Process for the addition of gaseous non-halogenated olefins and acetylenes to perfluoroalkyl iodides
SE385644B (sv) 1974-10-17 1976-07-12 Ericsson Telefon Ab L M Anordning vid kryptering och dekryptering av meddelanden
US4375579A (en) * 1980-01-30 1983-03-01 Wisconsin Alumni Research Foundation Database encryption and decryption circuit and method using subkeys
US4791594A (en) * 1986-03-28 1988-12-13 Technology Inc. 64 Random-access psuedo random number generator
JPH0769662B2 (ja) * 1988-08-03 1995-07-31 松下電器産業株式会社 二元擬似乱数発生器
US5414771A (en) * 1993-07-13 1995-05-09 Mrj, Inc. System and method for the creation of random sequences and for the cryptographic protection of communications
US5454039A (en) * 1993-12-06 1995-09-26 International Business Machines Corporation Software-efficient pseudorandom function and the use thereof for encryption
JPH08181679A (ja) 1994-12-26 1996-07-12 Nec Corp 疑似乱数雑音発生装置
US5533128A (en) * 1995-01-18 1996-07-02 Vobach; Arnold Pseudo-random transposition cipher system and method
JP3557037B2 (ja) * 1996-04-22 2004-08-25 株式会社東芝 乱数生成装置及び方法、鍵系列生成装置及び方法、暗号化装置及び方法、並びに復号装置及び方法
KR19990082665A (ko) * 1996-02-21 1999-11-25 오오노 도시오 공통키 통신방법
US5666414A (en) * 1996-03-21 1997-09-09 Micali; Silvio Guaranteed partial key-escrow
CA2262551C (en) * 1996-08-16 2002-09-17 Bell Communications Research, Inc. Improved cryptographically secure pseudo-random bit generator for fast and secure encryption
US6307940B1 (en) * 1997-06-25 2001-10-23 Canon Kabushiki Kaisha Communication network for encrypting/deciphering communication text while updating encryption key, a communication terminal thereof, and a communication method thereof
US6307936B1 (en) * 1997-09-16 2001-10-23 Safenet, Inc. Cryptographic key management scheme
US6345359B1 (en) * 1997-11-14 2002-02-05 Raytheon Company In-line decryption for protecting embedded software
US6151676A (en) * 1997-12-24 2000-11-21 Philips Electronics North America Corporation Administration and utilization of secret fresh random numbers in a networked environment
US6243470B1 (en) * 1998-02-04 2001-06-05 International Business Machines Corporation Method and apparatus for advanced symmetric key block cipher with variable length key and block
CN1240318A (zh) * 1998-03-04 2000-01-05 朗迅科技公司 产生伪随机数的方法
US6490353B1 (en) * 1998-11-23 2002-12-03 Tan Daniel Tiong Hok Data encrypting and decrypting apparatus and method
US6415032B1 (en) * 1998-12-01 2002-07-02 Xilinx, Inc. Encryption technique using stream cipher and block cipher
US20030210783A1 (en) * 2000-07-27 2003-11-13 Ross Filippi Method and system of encryption
JP4596686B2 (ja) * 2001-06-13 2010-12-08 富士通株式会社 Dpaに対して安全な暗号化
US20030016823A1 (en) * 2001-07-05 2003-01-23 Shine Chung Method and apparatus of using irrational numbers in random number generators for cryptography
US7197142B2 (en) * 2001-08-24 2007-03-27 Alten Alexander I System and methods for a vernam stream cipher
EP2148463A3 (en) * 2001-10-19 2015-04-22 Panasonic Intellectual Property Management Co., Ltd. A numerical array output device, a numerical array output method, an encryption device, and a decryption device

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105406960A (zh) * 2015-12-20 2016-03-16 河南思维自动化设备股份有限公司 一种信息加密和解密方法
CN105406960B (zh) * 2015-12-20 2019-02-22 河南思维自动化设备股份有限公司 一种信息加密和解密的方法

Also Published As

Publication number Publication date
JP2006506668A (ja) 2006-02-23
BRPI0316473B1 (pt) 2018-03-13
CA2414261A1 (en) 2004-05-20
EP1566009A1 (en) 2005-08-24
DE60315700D1 (de) 2007-09-27
DE60315700T2 (de) 2008-06-05
CA2505338A1 (en) 2004-06-03
MXPA05005358A (es) 2005-08-03
CN1714531A (zh) 2005-12-28
ES2291675T3 (es) 2008-03-01
AU2003273688B2 (en) 2009-06-25
US7190791B2 (en) 2007-03-13
ATE370569T1 (de) 2007-09-15
EP1566009B1 (en) 2007-08-15
KR100994841B1 (ko) 2010-11-16
BR0316473A (pt) 2005-10-11
CN100568802C (zh) 2009-12-09
AU2003273688A1 (en) 2004-06-15
CA2505338C (en) 2012-09-04
JP4608319B2 (ja) 2011-01-12
WO2004047361A1 (en) 2004-06-03
US20040096056A1 (en) 2004-05-20

Similar Documents

Publication Publication Date Title
KR100994841B1 (ko) 다중키를 이용한 스트림 암호 생성 방법 및 기록 매체
AU729638B2 (en) A non-deterministic public key encryption system
US8503670B2 (en) Parallelizable integrity-aware encryption technique
KR101267109B1 (ko) 준군을 이용한 암호화 프리미티브, 에러 코딩, 및 의사난수 향상 방법
KR101119933B1 (ko) 보안성을 향상시키는 순열 데이터 변환
US20020048364A1 (en) Parallel block encryption method and modes for data confidentiality and integrity protection
US20140112469A1 (en) Novel encryption processes based upon irrational numbers and devices to accomplish the same
WO2005076521A1 (en) Method of generating a stream cipher using multiple keys
JP2008513811A (ja) 計算変換の方法及びシステム
JP2004258667A (ja) N個のデジットを含むワードの擬似ランダム置換の生成方法
AU750408B2 (en) A method of combining a serial keystream output with binary information
Padhi et al. Modified version of XTS (XOR-Encrypt-XOR with Ciphertext Stealing) using tweakable enciphering scheme
AU750323B2 (en) A method of generating a key for a public key encryption system
JP2001509608A (ja) デジタル・データのlビットの入力ブロックをlビットの出力ブロックに暗号変換するための方法
Abbas et al. Audio cryptosystem based on LFSH and Chaotic map with ECC key management
EP3285429A1 (en) Method for securely transmitting digital data
Boren et al. Software Specifications For Tinnitus Utilizing Whitenoise (Revised Feb 2004)

Legal Events

Date Code Title Description
A201 Request for examination
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
J201 Request for trial against refusal decision
AMND Amendment
E902 Notification of reason for refusal
B701 Decision to grant
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20131024

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20141027

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20151103

Year of fee payment: 6

LAPS Lapse due to unpaid annual fee