KR20110031822A - 스트림 모듈의 계층적 트리 구조를 통한 무작위 접근이 가능한 암호화/복호화 방법 및 장치 - Google Patents

스트림 모듈의 계층적 트리 구조를 통한 무작위 접근이 가능한 암호화/복호화 방법 및 장치 Download PDF

Info

Publication number
KR20110031822A
KR20110031822A KR1020090089232A KR20090089232A KR20110031822A KR 20110031822 A KR20110031822 A KR 20110031822A KR 1020090089232 A KR1020090089232 A KR 1020090089232A KR 20090089232 A KR20090089232 A KR 20090089232A KR 20110031822 A KR20110031822 A KR 20110031822A
Authority
KR
South Korea
Prior art keywords
random number
number generator
node
stream
generator
Prior art date
Application number
KR1020090089232A
Other languages
English (en)
Other versions
KR101076747B1 (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 한국과학기술원
Priority to KR1020090089232A priority Critical patent/KR101076747B1/ko
Publication of KR20110031822A publication Critical patent/KR20110031822A/ko
Application granted granted Critical
Publication of KR101076747B1 publication Critical patent/KR101076747B1/ko

Links

Images

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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/72Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits
    • 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

Landscapes

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

Abstract

본 발명은 스트림 암호 방식으로 평문을 암호문으로 암호화하거나 암호문을 평문으로 복호화하는 기술에 관한 것이다.
본 발명에 따른 스트림 암호화 장치는 평문(plain text) 스트림(stream)을 입력으로 받아, 스트림 전체에서 특정 비트의 위치와 특정 비트가 암호화되어 저장될 위치를 매핑(mapping)하는 매핑부, 특정 비트의 스트림 전체에서의 위치에 따라 특정 비트의 암호화에 사용될 난수열을 출력하는 난수 발생부 및 평문 스트림과 생성된 난수열을 입력으로 받아 배타적 논리합(XOR) 연산을 하는 연산부를 포함한다.
본 발명에 의하면, 스트림 암호화 모듈을 계층적 트리 구조로 배치하여 블록 암호화 방법과 비교하여 연산 속도를 개선하고 스트림 암호화 방식으로도 특정 위치의 데이터에 무작위 접근을 가능하게 할 수 있다.
데이터 암호화, 스트리밍 암호화 모듈, 계층적 트리 구조(hierarchical tree structure), RC4, 무작위 접근(random access)

Description

스트림 모듈의 계층적 트리 구조를 통한 무작위 접근이 가능한 암호화/복호화 방법 및 장치{METHOD AND APPARATUS FOR RANDOM ACCESSIBLE ENCRYPTION AND DECRYPTION BY USING A HIERARCHICAL TREE STRUCTURE OF STREAM CIPHER MODULE}
본 발명은 스트림 암호 방식으로 평문을 암호문으로 암호화하거나 암호문을 평문으로 복호화하는 기술에 관한 것이다.
데이터 암호화(encryption)란 가치가 있는 정보(평문, plain text)를 제3자가 의미를 알 수 없는 형식(암호문, cipher text)으로 정보를 변환하는 것을 의미한다. 암호문의 형태로 정보를 기억 장치에 저장하거나 통신 회선을 통해 전송함으로써 정보를 보호할 수 있는 수단을 제공한다. 데이터 암호화는 암호 키(특정 비트열)를 사용하여 정보를 암호문으로 변환하는 것이다.
데이터 복호화(decryption)란 암호문을 평문으로 변환하는 것을 의미한다. 기억 장치에 저장되어 있거나 통신 회선을 통해 전송된 암호문을 복호키를 사용하여 원래의 정보로 복원하는 것이다. 복호키를 갖고 있지 않은 사람은 원래의 정보로 올바르게 복원할 수 없으므로, 복호키가 제3자에게 알려지지 않으면 정보는 보호된다.
일반적으로, 암호 체계는 크게 비밀키 암호화 방식과 공개 키 암호화 방식으로 나누어진다.
비밀키 암호화 방식은 암호화와 복호화에 동일한 키를 사용한다. 따라서 통신할 때에는 송신자와 수신자가 사전에 동일한 키를 비밀로 갖고 있을 필요가 있고 이들을 공개하지 않는 방식으로 정보를 보호하나, 이 방식은 키 관리면에서는 다소 비효율적이나 암호화 및 복화화 속도가 빠르고 구현이 용이하다는 장점이 있다.
반면, 공개 키 암호화 방식은 암호화와 복호화에 서로 다른 키를 사용하는데 둘중의 하나의 키를 공개한다. 보통 암호 키는 공개하고 복호 키는 비밀로 한다. 일반적으로 공개 키 암호화 방식은 연산량이 비밀키 암호 방식에 비하여 매우 크기 때문에 인증을 하는데 활용이 된다. 키 관리면에서는 효율적이나 암호화 및 복호화 속도가 느리다는 단점이 있다.
비밀키 암호화 방식은 다시 블록(block) 암호화 방식과 스트림(stream) 암호화 방식으로 분류된다.
블록 암호화 방식은 평문을 블록 단위로 나누어서 암호문으로 변환한다. 여러 블록 암호화 방식에 사용되는 알고리즘(algorithm) 중 AES(advanced encryption standard) 암호화 알고리즘이 국제 표준으로 채택이 되었다. 블록 암호화 방식은 정보 보호의 안전성은 우수하나 알고리즘의 연산 속도가 매우 느린 단점을 가진다.
이에 반해서, 도 1에 나타낸 바와 같이 스트림 암호화 방식에 사용되는 알고리즘은 난수발생부(105)에서 난수를 발생시키고 평문을 일련의 비트열로 취급하여 한 번에 1비트씩(때로는 바이트 단위로) 발생된 난수와 XOR 연산을 통하여 암호화 시킨다. 스트림 암호화 방식에서 사용되는 알고리즘은 블록 암호화 방식에 사용되는 알고리즘보다 연산 속도가 매우 빠른 특징을 가지고 있다. 여러 스트림 암호 알고리즘 중에서 대표적으로 RC4 암호화 알고리즘이 널리 사용되고 있다.
도 1은 RC4 알고리즘을 이용하여 암호화하는 종래 기술을 나타낸 도면이다.
RC4 알고리즘으로 암호화함에 있어서, XOR연산부(107)는 파라미터(parameter, 102)값을 시드키(seed key)값으로 이용하여 난수 발생부(105)에서 생성된 난수(106)와 평문(103)을 입력으로 받아 XOR 연산을 수행하여 암호문(104)을 생성한다.
도 2는 RC4 알고리즘을 이용하여 복호화하는 종래 기술을 나타낸 도면이다. RC4 알고리즘으로 복호화함에 있어서, XOR연산부(107)는 파라미터(parameter, 102)값을 시드키값으로 이용하여 난수발생부(105)에서 생성된 난수(106)와 도 1에서 생성된 암호문(104)을 입력으로 받아 XOR 연산을 수행하여 평문(103)을 복원한다.
XOR 연산부(107)의 쌍방 복구 특성을 이용하여 암호화 및 복호화가 가능하게 되는 것이다.
안전한 자료의 저장 또는 통신을 위하여, 블록 암호화 방법을 사용할 수 있으나 스트림 알고리즘에 비하여 연산 속도가 매우 느린 단점을 가지고 있어 스트림 암호화 알고리즘을 사용할 수 있다. 다만 스트림 암호화 알고리즘의 경우 특성상 난수 발생부(105)를 이용하여 암호화를 수행하기 때문에 특정 위치의 암호문을 해독하기 위해서는 난수 발생부(105)의 시드키값으로부터 생성된 난수열에서 암호화 과정에 있어서 XOR연산이 행해진 위치의 난수를 발생시킨 후에 복호화를 할 수 있 기 때문에 무작위 접근(random access)이 불가능 하게 된다는 단점이 존재하게 된다.
이와 같은 이유로 스트림 암호화 알고리즘이 블록 암호화 알고리즘에 비하여 속도가 수배 이상 빠름에도 불구하고, 무작위 접근이 필요한 곳에서는 스트림 암호화 알고리즘보다 연산 복잡도가 높고 연산 속도도 느린 블록 암호화 알고리즘을 사용한다.
도 3은 블록 암호 알고리즘을 이용하여 평문(103) 스트림을 암호문(104) 스트림으로 변환시키는 과정을 나타낸 도면이다.
블록 암호화 방식의 경우에 암호화 시킬 평문(103)을 특정 크기로 나누어 각 블록(예를 들어 201, 203)을 블록 암호 알고리즘을 이용하여 암호문(104) 블록(예를 들어 202, 204)으로 변환시킨다. 각 블록(예를 들어 201, 203)은 각각의 블록 암호 알고리즘(예를 들어 205)으로 암호화되고 여러 블록 암호 알고리즘 중 AES 암호화 알고리즘이 국제 표준으로 채택되어 널리 쓰이고 있다.
도 4는 스트림 암호 알고리즘으로 평문(103) 스트림을 암호문(104) 스트림으로 변환하는 과정을 나타낸 도면이다. 여러 스트림 암호 알고리즘 중 도 4에 도시된 것과 같이 RC4 암호화 알고리즘(207)이 널리 사용되고 있다.
스트리밍 암호화 방식의 경우에는 난수 발생기(207)에서 발생한 난수열(106)을 평문(103) 스트림과 XOR 연산하여 순차적으로 평문(103) 스트림을 암호문(104) 스트림으로 변환시킨다.
도 5는 블록 암호 알고리즘을 이용하여 암호문(104) 스트림을 평문(103) 스 트림으로 복호화하는 과정에서 특정 위치(209)의 평문을 얻는 무작위 접근을 나타낸 도면이다.
블록 암호 알고리즘의 경우에 복호화시킬 암호문(104)을 특정 크기로 나누어 각 블록(예를 들어 202, 204)을 복호화하므로, 특정 위치(209)의 평문이 암호화 되어 있는 블록(202)을 평문 블록(201)으로 복호하는데 있어서, 각 블록의 암호화에 사용된 AES 압축 알고리즘의 역변환 알고리즘(206)의 수행으로 특정 위치(209)의 평문을 얻는 무작위 접근이 빠르게 가능하다. 즉 특정 위치(209)가 아닌 다른 블록(204)의 복호화(203)의 과정은 필요하지 않다.
도 6은 스트림 암호 알고리즘을 이용하여 암호문(104) 스트림을 평문(103) 스트림으로 복호화하는 과정에서 특정 위치(209)의 평문을 얻는 무작위 접근을 나타낸 도면이다.
스트림 암호 알고리즘의 경우에는 난수 발생기(207)에서 발생된 난수열(106)을 이용하여 평문(103)을 순차적으로 암호화하므로, 특정 위치(209)에 접근을 할 경우에 특정 위치(209)에 해당하는 난수열(106)을 얻기 위하여 반복적인 난수 발생 연산이 필요하고 특정 위치(209)가 아닌 부분(204)의 복호화(203)를 위한 난수열(106)을 생성한 후에야 비로소 해당 위치(209)의 복호화(201)를 위한 난수열(106)의 생성이 가능하게 된다. 즉 특정 위치(209)의 암호문(202)을 해독하기 위해서는 난수열(106)의 초기값부터 해당하는 위치(209)까지 난수열(106)를 발생시킨 후에 해독을 할 수 있기 때문에 특정 위치(209)의 평문을 얻는 무작위 접근이 불가능 하게 된다는 단점이 존재하게 된다.
이와 같은 이유로, 스트림 암호 알고리즘이 블록 암호 알고리즘에 비하여 암호화 및 복호화 연산 속도가 수배 이상 빠름에도 불구하고, 무작위 접근이 필요한 경우에는 연산 복잡도가 높고, 속도가 느린 블록 암호 알고리즘을 사용해야 했다.
본 발명은 스트림 암호화 모듈을 계층적 트리 구조로 배치하여 블록 암호화 방법과 비교하여 연산 속도를 개선하고 스트림 암호화 및 복호화 방식으로 특정위치의 데이터에 무작위 접근을 가능하게 함을 목적으로 한다.
본 발명에 따른 스트림 암호화 장치는 평문(plain text) 스트림(stream)을 입력으로 받아, 스트림 전체에서 특정 비트의 위치와 특정 비트가 암호화되어 저장될 위치를 매핑(mapping)하는 매핑부, 스트림 전체에서 특정 비트의 위치에 따라 특정 비트의 암호화에 사용될 난수열을 연산부로 출력하는 난수 발생부 및 평문 스트림과 난수열을 입력으로 받아 배타적 논리합(XOR) 연산하는 연산부를 포함한다.
N은 1이상의 자연수이고, 매핑부는 입력된 평문 스트림 전체에서 특정 비트의 위치를 나타내는 2진법의 2·N비트의 세그먼트 주소(segment address)와 특정 비트가 암호화되어 저장될 위치를 나타내는 오프셋 주소(offset address)를 매핑하고, 난수 발생부는 트리(tree) 구조로 배치되고, 2진법의 난수를 발생시키는 복수의 난수 발생기를 포함하며, 트리 구조는 하나의 루트 노드(root node)를 가지며, 각 노드는 4개의 자식 노드를 가지고, 각 노드마다 난수 발생기가 하나씩 배치되며, 같은 부모 노드에 속하는 자식 노드에 배치된 난수 발생기 각각에는 2비트 2진수 각각이 식별 번호로서 할당되며, 전체 복수의 난수 발생기는 각각의 난수 발생기 번호를 가지며, 난수 발생부에서 출력되는 난수열을 생성하는 난수 발생기를 결정함에 있어서, 세그먼트 주소는 2비트의 N개의 블록으로 분할되고, 각 노드의 난수 발생기는 난수열을 생성하며, 생성된 난수열은 2비트의 블록으로 분할되며, 트리 구조의 루트 노드의 난수 발생기에서 생성된 난수열의 전체 블록에서, 세그먼트 주소의 첫 번째 블록의 2진수 크기 순서에 대응하는 난수열의 블록이 선택되고, 루트 노드의 자식 노드에 배치된 난수 발생기 중에서, 선택된 난수열 블록의 2진수와 같은 식별 번호를 가지는 난수 발생기가 선택되며, 선택된 난수 발생기에서 생성된 난수열의 전체 블록에서, 세그먼트 주소의 두 번째 블록의 2진수 크기 순서에 대응하는, 난수열의 블록이 선택되고, 선택된 난수 발생기가 배치된 노드의 자식 노드에 배치된 난수 발생기 중에서, 선택된 난수열 블록의 2진수와 같은 식별 번호를 가지는 난수 발생기가 선택되며, 자식 노드의 난수 발생기를 선택하는 과정을 반복하여 최종적으로, 트리 구조의 마지막 계층의 자식 난수 발생기가 선택되고, 선택된 난수 발생기가 생성한 난수열을 난수 발생부에서 출력하여 연산부에 입력하는 것이 바람직하다.
N은 1이상의 자연수이고, K는 3이상의 자연수이며, 세그먼트 주소는 2진법의 K·N비트이고, 세그먼트 주소는 K비트의 N개의 블록으로 분할되며, 트리 구조의 각 노드의 난수 발생기에서 생성된 난수열은 K비트의 블록으로 분할되며, 각 노드는 2K개의 자식 노드를 가지는 것이 바람직하다.
난수 발생기는 RC4알고리즘(algorithm)을 사용하는 것이 바람직하다.
본 발명에 따른 스트림 복호화 장치는 암호문 스트림을 입력으로 받아 스트림의 특정 비트가 암호화될 때 사용된 난수열을 얻기 위한 매핑 테이블(table), 매핑 테이블의 데이터를 입력 받아 암호문 특정 비트의 복호화에 사용될 난수열을 연산부로 출력하는 난수 발생부 및 암호문 스트림과 난수열을 입력으로 받아 XOR 연산하는 연산부를 포함한다.
난수 발생부는 트리 구조로 배치된 2진법의 난수를 발생시키는 복수의 난수 발생기를 포함하며, 트리 구조는 하나의 루트 노드를 가지며, 각 노드는 4개의 자식 노드를 가지고, 각 노드마다 난수 발생기가 하나씩 배치되며, 같은 부모 노드에 속하는 자식 노드에 배치된 난수 발생기 각각에는 2비트 2진수 각각이 식별 번호로서 할당되며, 전체 복수의 난수 발생기는 각각의 난수 발생기 번호를 가지며, N은 1이상의 자연수이고, 매핑 테이블은 특정 비트가 암호화되기 전의 평문 스트림 전체에서 특정 비트의 위치를 나타내는 2진법의 2·N비트의 세그먼트 주소, 난수 발생부에서 특정 비트의 복호화에 사용될 난수열을 생성하는 난수 발생기의 난수 발생기 번호 및 복호화에 사용될 난수열을 생성하는 난수 발생기가 특정 비트가 암호화될 때 사용된 난수열을 생성하기 위한 시드키(seed key)값을 포함하며, 난수 발생부에서 출력되는 난수열을 생성하는 난수 발생기의 난수 발생기 번호를 결정함에 있어서, 세그먼트 주소는 2비트의 N개의 블록으로 분할되고, 각 노드의 난수 발생기는 난수열을 생성하며, 생성된 난수열은 2비트의 블록으로 분할되며, 트리 구조의 루트 노드의 난수 발생기에서 생성된 난수열의 전체 블록에서, 세그먼트 주소의 첫 번째 블록의 2진수 크기 순서에 대응하는 난수열의 블록이 선택되고, 루트 노드의 자식 노드에 배치된 난수 발생기 중에서, 선택된 난수열 블록의 2진수와 같은 식별 번호를 가지는 난수 발생기가 선택되며, 선택된 난수 발생기에서 생성된 난수열의 전체 블록에서, 세그먼트 주소의 두 번째 블록의 2진수 크기 순서에 대응하는, 난수열의 블록이 선택되고, 선택된 난수 발생기가 배치된 노드의 자식 노드에 배치된 난수 발생기 중에서, 선택된 난수열 블록의 2진수와 같은 식별 번호를 가지는 난수 발생기가 선택되며, 자식 노드의 난수 발생기를 선택하는 과정을 반복하여 최종적으로, 트리 구조의 마지막 계층의 자식 난수 발생기가 선택되고, 선택된 난수 발생기의 난수 발생기 번호가 매핑 테이블의 난수 발생기 번호가 되는 것이 바람직하다.
N은 1이상의 자연수이고, K는 3이상의 자연수이며, 세그먼트 주소는 2진법의 K·N비트이고, 세그먼트 주소는 K비트의 N개의 블록으로 분할되며, 트리 구조의 각 노드의 난수 발생기에서 생성된 난수열은 K비트의 블록으로 분할되며, 각 노드는 2K개의 자식 노드를 가지는 것이 바람직하다.
난수 발생기는 RC4알고리즘을 사용하는 것이 바람직하다.
본 발명에 따른 스트림 암호화 및 복호화 장치는 평문 스트림을 입력으로 받 아, 스트림 전체에서 특정 비트의 위치와 특정 비트가 암호화되어 저장될 위치를 매핑하고, 스트림 전체에서 특정 비트의 위치에 따라 특정 비트의 암호화에 사용될 난수열을 생성하고, 평문 스트림과 생성된 난수열을 XOR 연산하는 스트림 암호화부 및 암호문 스트림을 입력으로 받아 스트림의 특정 비트가 암호화될 때 사용된 난수열을 얻기 위한 매핑 테이블을 생성하고, 난수 발생기 매핑 테이블의 데이터에 따라 얻어진 복호화에 사용될 난수열과 암호문 스트림을 XOR 연산하는 스트림 복호화부를 포함한다.
N은 1이상의 자연수이고, 스트림 암호화부는 입력된 평문 스트림 전체에서 특정 비트의 위치를 나타내는 2진법의 2·N비트의 세그먼트 주소와 특정 비트가 암호화되어 저장될 위치를 나타내는 오프셋 주소를 매핑하고, 스트림 암호화 및 복호화 장치는 트리 구조로 배치되고, 2진법의 난수를 발생시키는 복수의 난수 발생기를 포함하며, 트리 구조는 하나의 루트 노드를 가지며, 각 노드는 4개의 자식 노드를 가지고, 각 노드마다 난수 발생기가 하나씩 배치되며, 같은 부모 노드에 속하는 자식 노드에 배치된 난수 발생기 각각에는 2비트 2진수 각각이 식별 번호로서 할당되며, 전체 복수의 난수 발생기는 각각의 난수 발생기 번호를 가지며, 매핑 테이블은 2진법의 2·N비트의 세그먼트 주소, 특정 비트의 복호화에 사용될 난수열을 생성하는 난수 발생기의 난수 발생기 번호 및 복호화에 사용될 난수열을 생성하는 난수 발생기가 특정 비트가 암호화될 때 사용된 난수열을 생성하기 위한 시드키값을 포함하고, 암호화 및 복호화에 사용될 난수 발생기를 결정함에 있어서, 세그먼트 주소는 2비트의 N개의 블록으로 분할되고, 각 노드의 난수 발생기는 난수열을 생성하며, 생성된 난수열은 2비트의 블록으로 분할되며, 트리 구조의 루트 노드의 난수 발생기에서 생성된 난수열의 전체 블록에서, 세그먼트 주소의 첫 번째 블록의 2진수 크기 순서에 대응하는 난수열의 블록이 선택되고, 루트 노드의 자식 노드에 배치된 난수 발생기 중에서, 선택된 난수열 블록의 2진수와 같은 식별 번호를 가지는 난수 발생기가 선택되며, 선택된 난수 발생기에서 생성된 난수열의 전체 블록에서, 세그먼트 주소의 두 번째 블록의 2진수 크기 순서에 대응하는, 난수열의 블록이 선택되고, 선택된 난수 발생기가 배치된 노드의 자식 노드에 배치된 난수 발생기 중에서, 선택된 난수열 블록의 2진수와 같은 식별 번호를 가지는 난수 발생기가 선택되며, 자식 노드의 난수 발생기를 선택하는 과정을 반복하여 최종적으로, 트리 구조의 마지막 계층의 자식 난수 발생기가 선택되고, 선택된 난수 발생기가 암호화에 사용될 난수열을 생성하고, 선택된 난수 발생기의 난수 발생기 번호가 특정 비트의 복호화에 사용될 난수 발생기의 난수 발생기 번호가 되는 것이 바람직하다.
N은 1이상의 자연수이고, K는 3이상의 자연수이며, 세그먼트 주소는 2진법의 K·N비트이고, 세그먼트 주소는 K비트의 N개의 블록으로 분할되며, 트리 구조의 각 노드의 난수 발생기에서 생성된 난수열은 K비트의 블록으로 분할되며, 각 노드는 2K개의 자식 노드를 가지는 것이 바람직하다.
난수 발생기는 RC4알고리즘을 사용하는 것이 바람직하다.
본 발명에 따른 스트림 암호화 장치에서 암호화하는 방법은 평문 스트림을 입력으로 받아, 스트림 전체에서 특정 비트의 위치와 특정 비트가 암호화되어 저장될 위치를 매핑하는 제1단계, 스트림 전체에서 특정 비트의 위치에 따라 특정 비트의 암호화에 사용될 난수열을 생성하는 제2단계 및 평문 스트림과 난수열을 XOR 연산하는 제3단계를 포함한다.
N은 1이상의 자연수이고, 제1단계는 입력된 평문 스트림 전체에서 특정 비트의 위치를 나타내는 2진법의 2·N비트의 세그먼트 주소와 특정 비트가 암호화되어 저장될 위치를 나타내는 오프셋 주소를 매핑하고, 제2단계는 트리 구조로 배치되고, 2진법의 난수를 발생시키는 복수의 난수 발생기를 포함하며, 트리 구조는 하나의 루트 노드를 가지며, 각 노드는 4개의 자식 노드를 가지고, 각 노드마다 난수 발생기가 하나씩 배치되며, 같은 부모 노드에 속하는 자식 노드에 배치된 난수 발생기 각각에는 2비트 2진수 각각이 식별 번호로서 할당되며, 전체 복수의 난수 발생기는 각각의 난수 발생기 번호를 가지며, 전체 난수 발생기 중에서 난수열을 생성하는 난수 발생기를 결정함에 있어서, 세그먼트 주소는 2비트의 N개의 블록으로 분할되고, 각 노드의 난수 발생기는 난수열을 생성하며, 생성된 난수열은 2비트의 블록으로 분할되며, 트리 구조의 루트 노드의 난수 발생기에서 생성된 난수열의 전체 블록에서, 세그먼트 주소의 첫 번째 블록의 2진수 크기 순서에 대응하는 난수열의 블록이 선택되고, 루트 노드의 자식 노드에 배치된 난수 발생기 중에서, 선택된 난수열 블록의 2진수와 같은 식별 번호를 가지는 난수 발생기가 선택되며, 선택된 난수 발생기에서 생성된 난수열의 전체 블록에서, 세그먼트 주소의 두 번째 블록의 2진수 크기 순서에 대응하는, 난수열의 블록이 선택되고, 선택된 난수 발생기가 배 치된 노드의 자식 노드에 배치된 난수 발생기 중에서, 선택된 난수열 블록의 2진수와 같은 식별 번호를 가지는 난수 발생기가 선택되며, 자식 노드의 난수 발생기를 선택하는 과정을 반복하여 최종적으로, 트리 구조의 마지막 계층의 자식 난수 발생기가 선택되고, 선택된 난수 발생기가 난수열을 출력한다.
N은 1이상의 자연수이고, K는 3이상의 자연수이며, 세그먼트 주소는 2진법의 K·N비트이고, 세그먼트 주소는 K비트의 N개의 블록으로 나뉘며, 트리 구조의 각 노드의 난수 발생기에서 생성된 난수열은 K비트의 블록으로 분할되며, 각 노드는 2K개의 자식 노드를 가지는 것이 바람직하다.
난수 발생기는 RC4알고리즘을 사용하는 것이 바람직하다.
본 발명에 따른 스트림 복호화 장치에서 복호화하는 방법은 암호문 스트림을 입력으로 받아 스트림의 특정 비트가 암호화될 때 사용된 난수열을 얻기 위한 매핑 테이블을 생성하는 제1단계, 매핑 테이블의 데이터에 따라 암호문 특정 비트의 복호화에 사용될 난수열을 생성하는 제2단계 및 암호문 스트림과 난수열을 XOR 연산하는 제3단계를 포함한다.
제2단계는 트리 구조로 배치되고, 2진법의 난수를 발생시키는 복수의 난수 발생기를 포함하며, 트리 구조는 하나의 루트 노드를 가지며, 각 노드는 4개의 자식 노드를 가지고, 각 노드마다 난수 발생기가 하나씩 배치되며, 같은 부모 노드에 속하는 자식 노드에 배치된 난수 발생기 각각에는 2비트 2진수 각각이 식별 번호로서 할당되며, 전체 복수의 난수 발생기는 각각의 난수 발생기 번호를 가지며, N은 1이상의 자연수이고, 매핑 테이블은 특정 비트가 암호화되기 전의 평문 스트림 전체에서 특정 비트의 위치를 나타내는 2진법의 2·N비트의 세그먼트 주소, 특정 비트의 복호화에 사용될 난수열을 생성하는 난수 발생기의 난수 발생기 번호 및 복호화에 사용될 난수열을 생성하는 난수 발생기가 특정 비트가 암호화될 때 사용된 난수열을 생성하기 위한 시드키값을 포함하며, 난수 발생기 번호를 결정함에 있어서, 세그먼트 주소는 2비트의 N개의 블록으로 분할되고, 각 노드의 난수 발생기는 난수열을 생성하며, 생성된 난수열은 2비트의 블록으로 분할되며, 트리 구조의 루트 노드의 난수 발생기에서 생성된 난수열의 전체 블록에서, 세그먼트 주소의 첫 번째 블록의 2진수 크기 순서에 대응하는 난수열의 블록이 선택되고, 루트 노드의 자식 노드에 배치된 난수 발생기 중에서, 선택된 난수열 블록의 2진수와 같은 식별 번호를 가지는 난수 발생기가 선택되며, 선택된 난수 발생기에서 생성된 난수열의 전체 블록에서, 세그먼트 주소의 두 번째 블록의 2진수 크기 순서에 대응하는, 난수열의 블록이 선택되고, 선택된 난수 발생기가 배치된 노드의 자식 노드에 배치된 난수 발생기 중에서, 선택된 난수열 블록의 2진수와 같은 식별 번호를 가지는 난수 발생기가 선택되며, 자식 노드의 난수 발생기를 선택하는 과정을 반복하여 최종적으로, 트리 구조의 마지막 계층의 자식 난수 발생기가 선택되고, 선택된 난수 발생기의 난수 발생기 번호가 매핑 테이블의 난수 발생기 번호가 되는 것이 바람직하다.
N은 1이상의 자연수이고, K는 3이상의 자연수이며, 세그먼트 주소는 2진법의 K·N비트이고, 세그먼트 주소는 K비트의 N개의 블록으로 분할되며, 트리 구조의 각 노드의 난수 발생기에서 생성된 난수열은 K비트의 블록으로 분할되며, 각 노드는 2K개의 자식 노드를 가지는 것이 바람직하다.
난수 발생기는 RC4알고리즘을 사용하는 것이 바람직하다.
본 발명에 따른 스트림 암호화 및 복호화 장치에서 암호화 및 복호화하는 방법은 평문 스트림을 입력으로 받아, 스트림 전체에서 특정 비트의 위치와 특정 비트가 암호화되어 저장될 위치를 매핑하고, 스트림 전체에서 특정 비트의 위치에 따라 특정 비트의 암호화에 사용될 난수열을 생성하고, 평문 스트림과 생성된 난수열을 XOR 연산하는 스트림 암호화하는 단계 및 암호문 스트림을 입력으로 받아 스트림의 특정 비트가 암호화될 때 사용된 난수열을 얻기 위한 매핑 테이블을 생성하고, 난수 발생기 매핑 테이블의 데이터에 따라 얻어진 복호화에 사용될 난수열과 암호문 스트림을 XOR 연산하는 스트림 복호화하는 단계를 포함한다.
N은 1이상의 자연수이고, 스트림 암호화하는 단계는 입력된 평문 스트림 전체에서 특정 비트의 위치를 나타내는 2진법의 2·N비트의 세그먼트 주소와 특정 비트가 암호화되어 저장될 위치를 나타내는 오프셋 주소를 매핑하고, 스트림 암호화 및 복호화 장치는 트리 구조로 배치되고, 2진법의 난수를 발생시키는 복수의 난수 발생기를 포함하며, 트리 구조는 하나의 루트 노드를 가지며, 각 노드는 4개의 자식 노드를 가지고, 각 노드마다 난수 발생기가 하나씩 배치되며, 같은 부모 노드에 속하는 자식 노드에 배치된 난수 발생기 각각에는 2비트 2진수 각각이 식별 번호로서 할당되며, 전체 복수의 난수 발생기는 각각의 난수 발생기 번호를 가지며, 매핑 테이블은 2진법의 2·N비트의 세그먼트 주소, 특정 비트의 복호화에 사용될 난수열을 생성하는 난수 발생기의 난수 발생기 번호 및 복호화에 사용될 난수열을 생성하는 난수 발생기가 특정 비트가 암호화될 때 사용된 난수열을 생성하기 위한 시드키값을 포함하고, 암호화하는 단계 및 복호화하는 단계에 사용될 난수 발생기를 결정함에 있어서, 세그먼트 주소는 2비트의 N개의 블록으로 분할되고, 각 노드의 난수 발생기는 난수열을 생성하며, 생성된 난수열은 2비트의 블록으로 분할되며, 트리 구조의 루트 노드의 난수 발생기에서 생성된 난수열의 전체 블록에서, 세그먼트 주소의 첫 번째 블록의 2진수 크기 순서에 대응하는 난수열의 블록이 선택되고, 루트 노드의 자식 노드에 배치된 난수 발생기 중에서, 선택된 난수열 블록의 2진수와 같은 식별 번호를 가지는 난수 발생기가 선택되며, 선택된 난수 발생기에서 생성된 난수열의 전체 블록에서, 세그먼트 주소의 두 번째 블록의 2진수 크기 순서에 대응하는, 난수열의 블록이 선택되고, 선택된 난수 발생기가 배치된 노드의 자식 노드에 배치된 난수 발생기 중에서, 선택된 난수열 블록의 2진수와 같은 식별 번호를 가지는 난수 발생기가 선택되며, 자식 노드의 난수 발생기를 선택하는 과정을 반복하여 최종적으로, 트리 구조의 마지막 계층의 자식 난수 발생기가 선택되고, 선택된 난수 발생기가 암호화에 사용될 난수열을 생성하고, 선택된 난수 발생기의 난수 발생기 번호가 특정 비트의 복호화에 사용될 난수 발생기의 번호가 되는 것이 바람직하다.
N은 1이상의 자연수이고, K는 3이상의 자연수이며, 세그먼트 주소는 2진법의 K·N비트이고, 세그먼트 주소는 K비트의 N개의 블록으로 분할되며, 트리 구조의 각 노드의 난수 발생기에서 생성된 난수열은 K비트의 블록으로 분할되며, 각 노드는 2K개의 자식 노드를 가지는 것이 바람직하다.
난수 발생기는 RC4알고리즘을 사용하는 것이 바람직하다.
본 발명에 의하면, 스트림 암호화 모듈을 계층적 트리 구조로 배치하여 블록 암호화 방법과 비교하여 연산 속도를 개선하고 스트림 암호화 및 복호화 방식으로 특정위치의 데이터에 무작위 접근을 가능하게 할 수 있다.
암호화 장치
도 7은 본 발명의 일 실시예에 따른 암호화 장치(700)를 나타낸 도면이다. 도 7에 나타낸 바와 같이 암호화 장치(700)는 난수 발생부(720), 연산부(740) 및 매핑부(730)를 포함한다.
매핑부(730)는 2진법의 스트림 형태의 평문(760)을 1비트씩 입력으로 받아 스트림 전체에서 특정 비트의 위치를 구분하는 주소인 세그먼트 주소를 각 비트마다 할당하고, 특정 비트가 암호화되어 저장될 주소인 오프셋 주소를 앞선 특정 비트의 세그먼트 주소와 1대 1 관계로 매핑하여 저장한다. 또한 입력 받은 스트림 형태의 평문(760)을 연산부(740)로 출력하며, 전체 스트림에서 특정 비트의 세그먼트 주소를 난수 발생부(720)로 전달한다.
난수 발생부(720)는 입력된 평문(760) 스트림과 1비트씩 XOR 연산을 하기 위한 2진법의 난수열을 출력한다. 매핑부(730)로부터 입력되는 세그먼트 주소에 대응하는 특정 비트와 XOR 연산을 수행하기 위한 난수 비트로 이루어진 난수열을 출력한다. 본 발명에서는 난수 발생부(720)에는 2진법의 난수열을 생성하는 복수의 난수 발생기가 계층적 트리 구조로 배치된다. 이와 같이 난수 발생기를 계층적 트리 구조로 배치하여 스트림 방식으로 암호화된 암호문(770)에서 복호화가 필요한 특정 위치의 비트로 무작위 접근이 가능해진다. 난수 발생기의 계층적 트리 구조는 도 9a를 통해 후술한다.
연산부(740)는 난수 발생부(720)에서 생성된 2진법의 난수열과 매핑부(730)를 통해 출력되는 평문(760) 스트림을 한 번에 1 비트씩 또는 1 바이트 단위로 XOR 연산하여 평문(760) 스트림을 암호문(770) 스트림으로 변환한다.
난수 발생부의 구조
도 9a는 본 발명의 일 실시예에 따른 암호화 장치에 포함되는 난수 발생부 (720)의 구조를 나타낸 도면이다. 난수 발생부(720)는 계층적 트리 구조로 배치된 복수의 난수 발생기(910 내지 918, …)를 포함한다. 난수 발생기의 계층적 트리 구조는 하나의 루트 노드(root node)를 가지며, 각 노드는 예를 들어 4개의 자식 노드를 갖는다. 각 노드마다 난수 발생기가 배치된다. 즉 루트 노드에 루트 난수 발생기(910)가 배치되고, 이 루트 난수 발생기(910)의 4개의 자식 난수 발생기(911 내지 914)를 가지며, 또한 이 자식 난수 발생기(911 내지 914) 각각도 4개의 자식 난수 발생기(예를 들어 915 내지 918)를 갖는다. 이와 같은 경우 자식 노드가 속하는 부모 노드에 배치된 난수 발생기를 그 자식 노드에 배치된 난수 발생기의 부모 난수 발생기라 지칭한다.
같은 부모 난수 발생기에 속하는 자식 난수 발생기들 각각에는 서로 다른 2비트의 2진수 각각이 식별 번호로서 할당된다. 예를 들어 부모 난수 발생기(910)의 자식 난수 발생기들(911 내지 914) 각각에는 00, 01, 10, 11의 2비트 2진수가 할당된다. 즉, 난수 발생기(911)의 식별 번호는 00이고, 난수 발생기(912)의 식별 번호는 01이고, 난수 발생기(913)의 식별 번호는 10이고, 난수 발생기(914)의 식별 번호는 11이다. 마찬가지로 부모 난수 발생기(913)의 자식 난수 발생기들(915 내지 918) 각각에도 서로 다른 2비트의 2진수 각각이 할당된다. 또한 전체 복수의 난수 발생기는 서로 구분되는 각각의 난수 발생기 번호를 가진다. 즉, 난수 발생기(915)의 난수 발생기 번호는 #59이고, 난수 발생기(916)의 난수 발생기 번호는 #60이고, 난수 발생기(917)의 난수 발생기 번호는 #61이고, 난수 발생기(918)의 난수 발생기 번호는 #62이다.
난수 발생기 선택 방법
다음으로 도 9b를 참조하여, 난수 발생부(720)가, 평문(760)의 각 비트와 XOR 연산할 난수 비트를 생성할 난수 발생기를 선택하는 방법을 설명한다.
세그먼트 주소(301)인"100110"는 매핑부(730)에서 할당된 평문(760) 스트림 의 특정한 한 비트에 대한 세그먼트 주소(301)를 나타낸다. 세그먼트 주소(301)는 각 2비트의 복수의 블록(501, 502, 503)으로 분할되며, 각각의 난수 발생기(예를들어 910)가 생성한 난수열도 각 2비트의 복수의 블록(예를들어 302 내지 305)으로 분할된다.
세그먼트 주소(301)의 첫 번째 블록(501)의 2진수는 10으로 이는 2비트 2진수를 작은 순서에서 큰 순서로 배열 했을 경우 세 번째로 작은 수이다. 즉 00→01→10→11의 순서에서 세 번째이다. 이를 바탕으로 루트 난수 발생기(910)에서 생성된 난수열을 2비트의 블록(302 내지 305)으로 분할하는 경우 세 번째 블록(304)인 2진수 10이 선택되고, 루트 난수 발생기(910)의 자식 난수 발생기(911 내지 914)중에서 식별 번호가 10인 자식 난수 발생기(913)가 선택된다.
선택된 난수 발생기(913)가 생성한 난수열과 세그먼트 주소(301)의 두번째 블록(502)의 2진수를 통해서 같은 방법으로 선택된 난수 발생기(913)의 자식 난수 발생기(915 내지 918)중에서 특정한 난수 발생기를 선택한다. 즉, 세그먼트 주소(301)의 두 번째 블록(502)의 2진수는 01로 이는 2비트 2진수의 크기 순서에서 두 번째이다. 이를 바탕으로 앞서 선택된 난수 발생기(913)가 생성한 난수열의 2비트 블록(306 내지 309)에서 두 번째 블록(307)인 11이 선택되고, 앞서 선택된 난수 발생기(913)의 자식 난수 발생기(915 내지 918)중에서 식별 번호가 11인 자식 난수 발생기(918)가 선택된다.
같은 방법으로, 세그먼트 주소(301)의 세 번째 블록(503)의 2진수는 10으로 이는 2비트 2진수의 크기 순서에서 세 번째이다. 이를 바탕으로 앞서 선택된 난수 발생기(918)가 생성한 난수열의 2비트 블록(310 내지 313)에서 세 번째 블록(312)인 10이 선택되고, 앞서 선택된 난수 발생기(918)의 자식 난수 발생기(919 내지 922)중에서 식별 번호가 10인 자식 난수 발생기(921)가 선택된다.
결국 암호화 장치(700)에서 최종 선택된 난수 발생기(예를들어 921)가 각 해당 세그먼트 주소(예를들어 301)로 특정되는 평문(760) 스트림 특정 비트와 XOR연산을 위한 난수 비트를 생성하고, 이를 난수 발생부(720)가 연산부(740)로 출력한다.
또한, 복호화 장치(800)에서 최종적으로 선택된 난수 발생기(예를들어 921)는 세그먼트 주소(예를들어 301)와 매핑된 오프셋 주소(예를들어 320)에 저장된 암호문(770) 스트림의 특정 비트가 암호화될 때 사용된 난수 발생기(예를들어 921)이고, 선택된 난수 발생기(예를들어 921)를 사용하여 세그먼트 주소(예를들어 301)로 특정되는 특정 비트의 암호문(770)을 다시 평문(760)의 특정 비트로 복호화한다.
이상은 세그먼트 주소(301)의 블록(501, 502, 503)이 포함하는 비트수가 2비트인 경우를 예를 들어 설명하였으나, 세그먼트 주소(301)는 3비트 이상을 각각 포함하는 블록으로 분할될 수도 있다. 세그먼트 주소(301)를 구성하는 각 블록에 포함되는 비트 수에 따라 한 계층에 포함되는 난수 발생기의 개수, 각 난수 발생기의 식별번호를 구성하는 비트의 개수가 결정된다.
각각의 부모 난수 발생기(예를들어 910)가 갖는 자식 난수 발생기(예를들어 911 내지 914)의 개수는 세그먼트 주소(301)의 한 블록(501 내지 503)이 몇 비트로 구성되는가와 관련이 있다. 도 9b 의 실시예에서는 세그먼트 주소(301)가 2비트의 블록(501 내지 503)으로 분할되었고 2비트로 나타내어지는 숫자의 종류가 4가지이기 때문에 부모 난수 발생기(예를들어 910)는 4개의 자식 난수 발생기(예를 들어 911 내지 914)를 가진다. 즉 세그먼트 주소(301)를 구성하는 블록들이 각각 3비트씩을 포함하는 경우에는, 3개의 비트로 나타낼 수 있는 숫자의 종류가 8가지이므로 각각의 부모 난수 발생기는 23인 8개의 자식 난수 발생기를 가진다. 이를 일반화하여 세그먼트 주소를 K(K는 2 이상의 자연수)비트씩 나누는 경우(즉, 세그먼트 주소를 구성하는 각 블록이 K비트씩 포함하는 경우)에는 각각의 부모 난수 발생기는 2K개의 자식 난수 발생기를 가지게 될 것이다. 또한 같은 부모 난수 발생기에 속하는 자식 난수 발생기는 서로 다른 식별번호를 가지는데, 이 식별번호들은 2K비트의 수로 이루어진다.
복호화 장치
도 8a은 본 발명의 일 실시예에 따른 복호화 장치(800)를 나타낸 도면이다. 도 8a에 나타낸 바와 같이 복호화 장치(800)는 난수 발생부(720), 연산부(740) 및 매핑부(730)를 포함한다.
복호화 과정은 암호화 과정의 반대로서 도 2에서 설명한 XOR 연산의 쌍방 복구 특성을 이용하여 암호화 되었던 암호문(770) 스트림의 복호화가 가능하게 된다. 따라서 암호화의 XOR연산에 사용되었던 난수열을 똑같이 생성하여 암호화 과정과 마찬가지로 입력된 암호문 스트림과 한 번에 1 비트씩 또는 1 바이트 단위로 XOR 연산한다.
매핑부(730)는 암호화 과정에서 만들어진 세그먼트 주소와 오프셋 주소가 1 대 1로 매핑관계가 저장되어 있고, 또한 입력되는 스트림 형태의 암호문(770)을 연산부(740)로 출력하며, 입력되는 암호문(770) 특정 비트가 저장된 오프셋 주소와 매핑된 특정 비트의 세그먼트 주소를 난수 발생부(720)로 전달한다.
난수 발생부(720)는 2진법의 난수열을 생성하는 복수의 난수 발생기가 계층적 트리 구조로 배치된다. 계층적 트리 구조 및 난수 발생기 선택 방법의 자세한 설명은 앞서 도 9a 및 도 9b에서 설명했다. 입력된 암호문(770) 특정 비트의 세그먼트 주소(예를들어 301)와 앞서 도 9b에서 설명한 난수 발생기 선택 방법으로 특정 비트의 복호화에 사용될 난수 비트를 생성하는 난수 발생기(921)가 선택된다. 각각의 세그먼트 주소에 따라 선택된 난수 발생기들이 생성한 난수 비트들은 난수열을 이루며 연산부로 전달된다. 즉, 순차적인 스트림 방식으로 암호화된 암호문(770) 스트림에서 순차적인 복호화 과정이 아니라 복호화가 필요한 특정 위치의 비트로 무작위 접근이 가능해진다.
연산부(740)는 난수 발생부(720)에서 생성된 난수열과 암호문(770) 스트림을 일련의 비트열로 취급하여 한 번에 1 비트씩 또는 1 바이트 단위로 XOR 연산하여 암호문(770) 스트림을 평문(760) 스트림으로 변환한다.
복호화 장치의 변형예
도 8b는 본 발명의 다른 일 실시예에 따른 복호화 장치(801)를 나타낸 도면 이다.
도 8b에 나타낸 바와 같이 복호화 장치(801)는 난수 발생부(720), 연산부(740), 매핑부(730) 및 매핑 테이블부(750)를 포함한다.
복호화 장치(801)은 암호문(770) 스트림에서 특정 위치로 무작위 접근 하는 복호화 속도를 향상하기 위하여, 매핑 테이블부(750)를 더 포함한다.
매핑부(730)는 입력된 암호문(770)의 특정 비트에 대응하는 세그먼트 주소를 매핑 테이블부(750)으로 전달하고, 입력된 암호문(770)은 연산부(740)로 전달한다.
매핑 테이블부(750)는 매핑부(730)과 난수 발생부(720) 사이에 연결되고, 암호문(770) 특정 비트에 대응하는 세그먼트 주소를 입력으로 받고, 해당 세그먼트 주소를 난수 발생부(720)로 전달하고, 암호화될 때의 생성되었던 난수열과 똑같은 난수열을 빠르게 얻는데 필요한 정보를 저장한 매핑 테이블을 형성한다.
난수 발생부(720)은 매핑 테이블부(720)에서 입력된 세그먼트 주소에 따라 도 9b에 나타낸 방법으로 특정 비트의 복호화에 사용될 난수 발생기를 선택하고 이에 대한 정보를 매핑 테이블부(750)으로 전달하고, 생성된 난수를 연산부(740)으로 출력한다.
연산부(740)는 난수 발생부(720)에서 입력된 난수열과 매핑부(730)에서 입력된 암호문(770) 스트림을 일련의 비트열로 취급하여 한 번에 1 비트씩 또는 1 바이트 단위로 XOR 연산하여 암호문(770) 스트림을 평문(760) 스트림으로 변환한다.
도 9c는 매핑 테이블부(750)에서 형성된 매핑 테이블(411)을 나타낸 도면이다. 매핑 테이블(411)은 세그먼트 주소(401), 평문(760) 스트림의 암호화에 사용되 었고 복호화에도 사용될 난수 발생기의 번호(RNG#, 413) 및 암호화에 사용된 난수열과 똑같은 난수열을 얻기 위한 시드키값(102)을 포함한다. 즉, 도 9b에 나타낸 바와 같이 세그먼트 주소가 "100110"인 경우 최종 선택된 난수 발생기 번호는 #65가 되고, 시드키값(102)은0x03A743이 된다.
결국 도 8b에 나타낸 복호화 장치(801)의 경우 복호화 초기에 세그먼트 주소에 따른 난수 발생기를 결정하는 연산을 하여 매핑 테이블을 형성한 후에 다시 특정 위치의 복호화를 하는 경우에는 도 9b의 난수 발생기 선택을 위한 연산조차 하지 않고 매핑 테이블 저장된 정보에 접근하여 복호화에 필요한 난수열을 난수 발생부(720)에서 얻을 수 있다.
도 9d는 종래의 스트림 복호화 방식으로 특정 위치(501)의 암호문(770)을 평문(760)으로 복호화 하는 과정 및 필요한 연산 횟수를 나타낸 도면이다. 특정 위치(501)의 암호문(770)을 평문(760)으로 변환하는 경우, 종래의 스트림 방식의 경우 특정 위치(501)의 데이터에 무작위 접근이 불가능하므로 평문(760) 스트림 전체가 암호문(770) 스트림으로 암호화되는 것과 마찬가지로 복호화에 사용되는 난수 발생기(207)는 암호문(770) 스트림의 초기 위치(502)에서부터 특정 위치(501)까지 복호화에 필요한 일련의 난수열(106)의 생성이 불가분적으로 필요하다. 이 경우 특정위치(501)의 암호문(770)을 복호화 하기 위해서 1 비트 별로 XOR 연산할 때 아래 식 1과 같이 38번의 난수 발생 연산이 필요하다.
Figure 112009057951910-PAT00001
…식 1
이렇듯, 종래의 스트림 방식의 경우에는 도 9d에 나타낸 바와 같이 특정 위 치(501)에 접근시에 38번의 연산이 필요하나, 도 8b에 나타낸 본 발명의 일 실시예에 따르면 복호화 장치(801)의 경우 최초의 경우에만 매핑 테이블부(750)가 매핑 테이블(411)의 세그먼트 주소(401), 난수 발생기 번호(413) 및 시드키값(102)을 형성하여 저장하는 연산이 필요하지만 그 이후에는 특정 위치(501)로의 무작위 접근을 하더라도, 특정 위치(501)의 데이터의 복호화에 사용될 난수열을 종래 기술처럼 초기 위치(502)에서부터 생성하지 않고 매핑 테이블에 저장된 난수 발생기 번호(413) 및 시드키값(102)을 통해 빠른 속도로 특정 위치(501)의 데이터를 복호화를 할 수 있다.
그리고 복호화 단계에서 매핑 테이블(411) 형성을 위한 연산 횟수조차도 도 9b에 나타낸 일례에 따르면 각 난수 발생기(910, 913, 918)의 8비트의 난수열 생성을 위한 연산만으로 복호화에 필요한 난수 발생기(921)가 선택되고 선택된 난수 발생기(921)로부터 특정 위치(501)의 복호화에 사용될 난수열을 얻을 수 있게 된다.
도 9e는 특정 위치(501)의 데이터에 무작위 접근하여 복호화하는데 필요한 스트림 암호 알고리즘의 연산횟수(905)를 평문(760) 스트림의 정보량(906)에 따라 그래프로 나타낸 도면이다. 종래 기술의 경우 연산횟수(905)는 평문(760) 스트림의 정보량(906)에 비례하는 직선 그래프(graph)의 형태(903)를 나타내지만 본 발명의 경우 평문(760) 스트림의 정보량(906)에 비례하지만 대략적으로 로그(log) 그래프의 형태(901)를 나타낸다.
본 발명에 따르면 평문의 정보량(906)이 많을수록 종래 기술과 비교해서 더 빠른 속도로 무작위 접근이 가능해 진다. 따라서 종래에는 무작위 접근을 위해 대 용량 정보의 경우에도 연산 속도가 느린 블록 암호화 방식을 사용했으나, 본 발명에 따른 난수 발생기의 트리 구조 배치를 통해서 연산 속도가 빠른 스트림 방식을 사용하면서도 무작위 접근이 가능하게 될 것이다.
난수 발생기 선택 방법의 순서도
도 10은 본 발명의 일 실시예에 따른 복수의 난수 발생기의 계층적 트리 구조를 가진 암호화 및 복호화 장치에서 암호화 및 복호화에 사용될 난수 발생기를 선택하는 방법을 나타내는 순서도이다.
먼저 난수 발생기를 계층적 트리 구조로 배치하고, 평문(760) 스트림 전체에서 특정 비트의 위치를 나타내는 세그먼트 주소(401)와 해당 특정 비트가 암호화되어 저장될 위치를 나타내는 오프셋 주소(320)를 매핑한다(S101).
그 후 N은 2이상의 자연수이고, 세그먼트 주소(401)를 2비트의 N개의 블록으로 분할하고 각 난수 발생기(207)에서 생성된 난수열을 2비트 블록으로 분할한다(S102).
그 후 세그먼트 주소의 블록 중 첫 번째 블록의 2진수 크기 순서에 대응하는 루트 노드에 배치된 루트 난수 발생기에서 생성된 난수열의 2비트 블록이 선택되고, 선택된 난수열 블록의 2진수와 식별 번호가 같은 자식 노드에 배치된 자식 난수 발생기가 선택된다(S103).
그 후 세그먼트 주소의 블록 중 두 번째 블록의 2진수 크기 순서에 대응하는 앞서 선택된 난수 발생기에서 생성된 난수열의 2비트 블록이 선택되고, 선택된 난 수열 블록의 2진수와 식별 번호가 같은 자식 노드에 배치된 자식 난수 발생기가 선택된다(S104).
그 후 S104 단계를 계속적으로 반복하여 트리 구조의 마지막 계층의 자식 난수 발생기를 선택한다(S105).
위 방법으로 최종 선택된 난수 발생기는 암호화 및 복호화에 사용된다.
암호화 방법의 순서도
도 11은 본 발명 일 실시예에 따른 복수의 난수 발생기의 트리 구조를 가진 암호화 장치(700)에서 수행되는 암호화 방법을 나타내는 순서도이다.
먼저 특정 비트의 암호화에 사용될 난수 발생기을 선택하기 위해서 앞서 도 10에 나타낸 S101, S102, S103, S104, S105 단계들을 순서대로 거친다.
그 후 최종 선택된 난수 발생기가 생성한 난수열과 평문(760) 스트림을 XOR 연산한다(S201).
복호화 방법(변형예)의 순서도
도 12는 본 발명 일 실시예에 따른 복수의 난수 발생기의 트리 구조를 가진 복호화 장치(800)에서 수행되는 복호화 방법을 나타내는 순서도이다.
먼저 특정 위치의 암호문의 복호화에 사용될 난수 발생기를 선택하기 위해서 앞서 도 10에 나타낸 S101, S102, S103, S104, S105 단계들을 순서대로 거친다.
그 후 세그먼트 주소(401), 최종 선택된 난수 발생기 번호(413) 및 시드키 값(102)을 포함하는 난수 발생기 매핑 테이블(411)을 형성한다(S301).
그 후 매핑 테이블의 정보에 따라 최종 선택된 난수 발생기가 생성한 난수열과 암호문(770) 스트림을 XOR 연산한다(S202).
본 발명의 일 실시예에 따른 암호화 및 복호화 장치는 앞서 설명한 암호화 장치(700)와 복호화 장치(800)를 결합하면 되므로 자세한 설명은 생략한다.
또한 본 발명의 일 실시예에 따른 암호화 및 복호화 방법은 앞서 설명한 도 11의 암호화 방법과 도 12의 복호화 방법을 결합하면 되므로 자세한 설명은 생략한다.
이상에서 보는 바와 같이, 본 발명이 속하는 기술 분야의 당업자는 본 발명이 그 기술적 사상이나 필수적 특징을 변경하지 않고서 다른 구체적인 형태로 실시 될 수 있다는 것을 이해할 수 있을 것이다.
그러므로 이상에서 기술한 실시 예는 모든 면에서 예시적인 것이며 한정적인 것이 아닌 것으로 이해해야만 하고, 본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 등가개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
도 1은 RC4 알고리즘을 이용하여 암호화하는 종래 기술을 나타낸 도면이다.
도 2는 RC4 알고리즘을 이용하여 복호화하는 종래 기술을 나타낸 도면이다.
도 3은 블록 암호 알고리즘을 이용하여 평문(103) 스트림을 암호문(104) 스트림으로 변환시키는 과정을 나타낸 도면이다.
도 4는 스트림 암호 알고리즘을 이용하여 평문(103) 스트림을 암호문(104) 스트림으로 변환시키는 과정을 나타낸 도면이다.
도 5는 블록 암호 알고리즘을 이용하여 암호문(104) 스트림을 평문(103) 스트림으로 복호화하는 과정에서 특정 위치(209)의 평문을 얻는 무작위 접근을 나타낸 도면이다.
도 6은 스트림 암호 알고리즘을 이용하여 암호문(104) 스트림을 평문(103) 스트림으로 복호화하는 과정에서 특정 위치(209)의 평문을 얻는 무작위 접근을 나타낸 도면이다.
도 7은 본 발명의 일 실시예에 따른 암호화 장치(700)를 나타낸 도면이다.
도 8a은 본 발명의 일 실시예에 따른 복호화 장치(800)를 나타낸 도면이다.
도 8b는 본 발명의 다른 일 실시예에 따른 복호화 장치(801)를 나타낸 도면이다.
도 9a는 본 발명의 일 실시예의 구성에 포함 되는 난수 발생부(720)의 구조를 나타낸 도면이다.
도 9b는 난수 발생부(720)가, 평문(760)의 각 비트와 XOR 연산할 난수 비트 를 생성할 난수 발생기를 선택하는 방법을 나타낸 도면이다.
도 9c는 매핑 테이블부(750)에서 생성된 매핑 테이블(411)을 나타낸 도면이다.
도 9d는 종래 기술로서 일반적인 스트림 복호화 방식으로 특정 위치(501)의 암호문(770)을 평문(760)으로 복호화 하는 과정 및 필요한 연산 횟수를 나타낸 도면이다.
도 9e는 특정 위치(501)로의 무작위 접근에서 복호화에 필요한 스트림 암호 알고리즘의 연산횟수(905)를 평문(760) 스트림의 정보량에 따라 그래프로 나타낸 도면이다.
도 10은 본 발명의 일 실시예에 따른 복수의 난수 발생기의 트리 구조를 가진 암호화 및 복호화 장치에서 암호화 및 복호화에 사용될 난수 발생기를 선택하는 방법을 나타내는 순서도이다.
도 11은 본 발명 일 실시예에 따른 복수의 난수 발생기의 트리 구조를 가진 암호화 장치(700)에서 수행되는 암호화 방법을 나타내는 순서도이다.
도 12는 본 발명 일 실시예에 따른 복수의 난수 발생기의 트리 구조를 가진 복호화 장치(800)에서 수행되는 복호화 방법을 나타내는 순서도이다.
**********도면의 주요 부분에 대한 부호의 설명**********
102: 시드키값
401: 세그먼트 주소
411: 매핑 테이블
700: 암호화 장치
720: 난수 발생부
730: 매핑부
750: 매핑테이블부
740: 연산부
800: 복호화 장치

Claims (25)

  1. 스트림 암호화 장치로서,
    평문(plain text) 스트림(stream)을 입력으로 받아, 상기 스트림 전체에서 특정 비트의 위치와 상기 특정 비트가 암호화되어 저장될 위치를 매핑(mapping)하는 매핑부
    상기 스트림 전체에서 상기 특정 비트의 위치에 따라 상기 특정 비트의 암호화에 사용될 난수열을 연산부로 출력하는 난수 발생부 및
    상기 평문 스트림과 상기 난수열을 입력으로 받아 배타적 논리합(XOR) 연산하는 연산부를 포함하는 스트림 암호화 장치.
  2. 제1항에 있어서,
    N은 2이상의 자연수이고,
    상기 매핑부는 입력된 평문 스트림 전체에서 특정 비트의 위치를 나타내는 2진법의 2·N비트의 세그먼트 주소(segment address)와 상기 특정 비트가 암호화되어 저장될 위치를 나타내는 오프셋 주소(offset address)를 매핑하고,
    상기 난수 발생부는 트리(tree) 구조로 배치되고, 2진법의 난수를 발생시키는 복수의 난수 발생기를 포함하며, 상기 트리 구조는 하나의 루트 노드(root node)를 가지며, 각 노드는 4개의 자식 노드를 가지고, 각 노드마다 난수 발생기가 하나씩 배치되며, 같은 부모 노드에 속하는 자식 노드에 배치된 난수 발생기 각각 에는 2비트 2진수 각각이 식별 번호로서 할당되며, 전체 복수의 난수 발생기는 각각의 난수 발생기 번호를 가지며,
    상기 난수 발생부에서 출력되는 난수열을 생성하는 난수 발생기를 결정함에 있어서,
    상기 세그먼트 주소는 2비트의 N개의 블록으로 분할되고, 상기 각 노드의 난수 발생기는 난수열을 생성하며, 상기 생성된 난수열은 2비트의 블록으로 분할되며,
    상기 트리 구조의 루트 노드의 난수 발생기에서 생성된 난수열의 전체 블록에서, 상기 세그먼트 주소의 첫 번째 블록의 2진수 크기 순서에 대응하는 상기 난수열의 블록이 선택되고, 상기 루트 노드의 자식 노드에 배치된 난수 발생기 중에서, 상기 선택된 난수열 블록의 2진수와 같은 식별 번호를 가지는 난수 발생기가 선택되며,
    상기 선택된 난수 발생기에서 생성된 난수열의 전체 블록에서, 상기 세그먼트 주소의 두 번째 블록의 2진수 크기 순서에 대응하는, 상기 난수열의 블록이 선택되고, 상기 선택된 난수 발생기가 배치된 노드의 자식 노드에 배치된 난수 발생기 중에서, 상기 선택된 난수열 블록의 2진수와 같은 식별 번호를 가지는 난수 발생기가 선택되며,
    자식 노드의 난수 발생기를 선택하는 상기 과정을 반복하여 최종적으로, 상기 트리 구조의 마지막 계층의 자식 난수 발생기가 선택되고, 상기 선택된 난수 발생기가 생성한 난수열을 상기 난수 발생부에서 출력하여 상기 연산부에 입력하는, 스트림 암호화 장치.
  3. 제2항에 있어서,
    N은 2이상의 자연수이고, K는 3이상의 자연수이며,
    상기 세그먼트 주소는 2진법의 K·N비트이고, 상기 세그먼트 주소는 K비트의 N개의 블록으로 분할되며,
    상기 트리 구조의 각 노드의 난수 발생기에서 생성된 난수열은 K비트의 블록으로 분할되며, 각 노드는 2K개의 자식 노드를 가지는, 스트림 암호화 장치.
  4. 제1항, 제2항 또는 제3항 중 어느 하나의 항에 있어서,
    상기 난수 발생기는 RC4알고리즘(algorithm)을 사용하는, 스트림 암호화 장치.
  5. 스트림 복호화 장치로서,
    평문 스트림이 암호문 스트림으로 암호화 되는 과정에서 매핑된 세그먼트 주소와 오프셋 주소의 매핑관계가 저장되어 있는 매핑부
    상기 매핑부에서 출력된 세그먼트 주소를 입력 받아 상기 암호문 특정 비트의 복호화에 사용될 난수열을 연산부로 출력하는 난수 발생부 및
    상기 암호문 스트림과 상기 난수열을 입력으로 받아 XOR 연산하는 연산부를 포함하는 스트림 복호화 장치.
  6. 제5항에 있어서,
    상기 매핑부와 상기 난수 발생부 사이에 연결되고, 상기 매핑부에서 출력된 세그먼트 주소를 입력 받고, 상기 암호문 스트림의 특정 비트가 암호화될 때 사용된 난수를 얻기 위한 매핑 테이블(table)을 형성하는 매핑 테이블부를 더 포함하는 스트림 복호화 장치.
    상기 매핑 테이블의 데이터를 입력 받아 상기 암호문 특정 비트의 복호화에 사용될 난수열을 연산부로 출력하는 난수 발생부 및
    상기 암호문 스트림과 상기 난수열을 입력으로 받아 XOR 연산하는 연산부를 포함하는 스트림 복호화 장치.
  7. 제6항에 있어서,
    상기 난수 발생부는 트리 구조로 배치된 2진법의 난수를 발생시키는 복수의 난수 발생기를 포함하며, 상기 트리 구조는 하나의 루트 노드를 가지며, 각 노드는 4개의 자식 노드를 가지고, 각 노드마다 난수 발생기가 하나씩 배치되며, 같은 부모 노드에 속하는 자식 노드에 배치된 난수 발생기 각각에는 2비트 2진수 각각이 식별 번호로서 할당되며, 전체 복수의 난수 발생기는 각각의 난수 발생기 번호를 가지며,
    N은 2이상의 자연수이고,
    상기 매핑 테이블은 상기 특정 비트가 암호화되기 전의 평문 스트림 전체에서 특정 비트의 위치를 나타내는 2진법의 2·N비트의 세그먼트 주소
    상기 난수 발생부에서 특정 비트의 복호화에 사용될 난수열을 생성하는 난수 발생기의 난수 발생기 번호 및
    상기 복호화에 사용될 난수열을 생성하는 난수 발생기가 상기 특정 비트가 암호화될 때 사용된 난수열을 생성하기 위한 시드키(seed key)값을 포함하며,
    상기 난수 발생부에서 출력되는 난수열을 생성하는 난수 발생기의 상기 난수 발생기 번호를 결정함에 있어서,
    상기 세그먼트 주소는 2비트의 N개의 블록으로 분할되고, 상기 각 노드의 난수 발생기는 난수열을 생성하며, 상기 생성된 난수열은 2비트의 블록으로 분할되며,
    상기 트리 구조의 루트 노드의 난수 발생기에서 생성된 난수열의 전체 블록에서, 상기 세그먼트 주소의 첫 번째 블록의 2진수 크기 순서에 대응하는 상기 난수열의 블록이 선택되고, 상기 루트 노드의 자식 노드에 배치된 난수 발생기 중에서, 상기 선택된 난수열 블록의 2진수와 같은 식별 번호를 가지는 난수 발생기가 선택되며,
    상기 선택된 난수 발생기에서 생성된 난수열의 전체 블록에서, 상기 세그먼트 주소의 두 번째 블록의 2진수 크기 순서에 대응하는, 상기 난수열의 블록이 선택되고, 상기 선택된 난수 발생기가 배치된 노드의 자식 노드에 배치된 난수 발생기 중에서, 상기 선택된 난수열 블록의 2진수와 같은 식별 번호를 가지는 난수 발 생기가 선택되며,
    자식 노드의 난수 발생기를 선택하는 상기 과정을 반복하여 최종적으로, 상기 트리 구조의 마지막 계층의 자식 난수 발생기가 선택되고, 상기 선택된 난수 발생기의 난수 발생기 번호가 상기 매핑 테이블의 난수 발생기 번호가 되는, 스트림 복호화 장치.
  8. 제7항에 있어서,
    N은 2이상의 자연수이고, K는 3이상의 자연수이며,
    상기 세그먼트 주소는 2진법의 K·N비트이고, 상기 세그먼트 주소는 K비트의 N개의 블록으로 분할되며,
    상기 트리 구조의 각 노드의 난수 발생기에서 생성된 난수열은 K비트의 블록으로 분할되며, 각 노드는 2K개의 자식 노드를 가지는, 스트림 복호화 장치.
  9. 제5항, 제6항, 제7항 및 제8항 중 어느 하나의 항에 있어서,
    상기 난수 발생기는 RC4알고리즘을 사용하는, 스트림 복호화 장치.
  10. 스트림 암호화 및 복호화 장치로서,
    평문 스트림을 입력으로 받아, 상기 스트림 전체에서 특정 비트의 위치와 상기 특정 비트가 암호화되어 저장될 위치를 매핑하고, 상기 스트림 전체에서 상기 특정 비트의 위치에 따라 상기 특정 비트의 암호화에 사용될 난수열을 생성하고, 상기 평문 스트림과 상기 생성된 난수열을 XOR 연산하는 스트림 암호화부 및
    암호문 스트림을 입력으로 받아 상기 스트림의 특정 비트가 암호화될 때 사용된 난수열을 얻기 위한 매핑 테이블을 생성하고, 상기 난수 발생기 매핑 테이블의 데이터에 따라 얻어진 복호화에 사용될 난수열과 상기 암호문 스트림을 XOR 연산하는 스트림 복호화부를 포함하는, 스트림 암호화 및 복호화 장치.
  11. 제10항에 있어서,
    N은 2이상의 자연수이고,
    상기 스트림 암호화부는 상기 입력된 평문 스트림 전체에서 특정 비트의 위치를 나타내는 2진법의 2·N비트의 세그먼트 주소와 상기 특정 비트가 암호화되어 저장될 위치를 나타내는 오프셋 주소를 매핑하고,
    상기 스트림 암호화 및 복호화 장치는 트리 구조로 배치되고, 2진법의 난수를 발생시키는 복수의 난수 발생기를 포함하며,
    상기 트리 구조는 하나의 루트 노드를 가지며, 각 노드는 4개의 자식 노드를 가지고, 각 노드마다 난수 발생기가 하나씩 배치되며, 같은 부모 노드에 속하는 자식 노드에 배치된 난수 발생기 각각에는 2비트 2진수 각각이 식별 번호로서 할당되며, 전체 복수의 난수 발생기는 각각의 난수 발생기 번호를 가지며,
    상기 매핑 테이블은
    상기 2진법의 2·N비트의 세그먼트 주소
    상기 특정 비트의 복호화에 사용될 난수열을 생성하는 난수 발생기의 난수 발생기 번호 및
    상기 복호화에 사용될 난수열을 생성하는 난수 발생기가 상기 특정 비트가 암호화될 때 사용된 난수열을 생성하기 위한 시드키값을 포함하고,
    암호화 및 복호화에 사용될 상기 난수 발생기를 결정함에 있어서,
    상기 세그먼트 주소는 2비트의 N개의 블록으로 분할되고, 상기 각 노드의 난수 발생기는 난수열을 생성하며, 상기 생성된 난수열은 2비트의 블록으로 분할되며,
    상기 트리 구조의 루트 노드의 난수 발생기에서 생성된 난수열의 전체 블록에서, 상기 세그먼트 주소의 첫 번째 블록의 2진수 크기 순서에 대응하는 상기 난수열의 블록이 선택되고, 상기 루트 노드의 자식 노드에 배치된 난수 발생기 중에서, 상기 선택된 난수열 블록의 2진수와 같은 식별 번호를 가지는 난수 발생기가 선택되며,
    상기 선택된 난수 발생기에서 생성된 난수열의 전체 블록에서, 상기 세그먼트 주소의 두 번째 블록의 2진수 크기 순서에 대응하는, 상기 난수열의 블록이 선택되고, 상기 선택된 난수 발생기가 배치된 노드의 자식 노드에 배치된 난수 발생기 중에서, 상기 선택된 난수열 블록의 2진수와 같은 식별 번호를 가지는 난수 발생기가 선택되며,
    자식 노드의 난수 발생기를 선택하는 상기 과정을 반복하여 최종적으로, 상기 트리 구조의 마지막 계층의 자식 난수 발생기가 선택되고, 상기 선택된 난수 발 생기가 암호화에 사용될 난수열을 생성하고, 상기 선택된 난수 발생기의 난수 발생기 번호가 상기 특정 비트의 복호화에 사용될 난수 발생기의 난수 발생기 번호가 되는, 스트림 암호화 및 복호화 장치.
  12. 제11항에 있어서,
    N은 2이상의 자연수이고, K는 3이상의 자연수이며,
    상기 세그먼트 주소는 2진법의 K·N비트이고, 상기 세그먼트 주소는 K비트의 N개의 블록으로 분할되며,
    상기 트리 구조의 각 노드의 난수 발생기에서 생성된 난수열은 K비트의 블록으로 분할되며, 각 노드는 2K개의 자식 노드를 가지는, 스트림 암호화 및 복호화 장치.
  13. 제10항, 제11항 또는 제12항 중 어느 하나의 항에 있어서,
    상기 난수 발생기는 RC4알고리즘을 사용하는, 스트림 암호화 및 복호화 장치.
  14. 스트림 암호화 장치에서 암호화하는 방법으로서,
    평문 스트림을 입력으로 받아, 상기 스트림 전체에서 특정 비트의 위치와 상기 특정 비트가 암호화되어 저장될 위치를 매핑하는 제1단계
    상기 스트림 전체에서 상기 특정 비트의 위치에 따라 상기 특정 비트의 암호화에 사용될 난수열을 생성하는 제2단계 및
    상기 평문 스트림과 상기 난수열을 XOR 연산하는 제3단계를 포함하는, 스트림 암호화 방법.
  15. 제14항에 있어서
    N은 2이상의 자연수이고,
    상기 제1단계는 입력된 평문 스트림 전체에서 특정 비트의 위치를 나타내는 2진법의 2·N비트의 세그먼트 주소와 상기 특정 비트가 암호화되어 저장될 위치를 나타내는 오프셋 주소를 매핑하고,
    상기 제2단계는 트리 구조로 배치되고, 2진법의 난수를 발생시키는 복수의 난수 발생기를 포함하며, 상기 트리 구조는 하나의 루트 노드를 가지며, 각 노드는 4개의 자식 노드를 가지고, 각 노드마다 난수 발생기가 하나씩 배치되며, 같은 부모 노드에 속하는 자식 노드에 배치된 난수 발생기 각각에는 2비트 2진수 각각이 식별 번호로서 할당되며, 전체 복수의 난수 발생기는 각각의 난수 발생기 번호를 가지며,
    상기 전체 난수 발생기 중에서 난수열을 생성하는 난수 발생기를 결정함에 있어서,
    상기 세그먼트 주소는 2비트의 N개의 블록으로 분할되고, 상기 각 노드의 난수 발생기는 난수열을 생성하며, 상기 생성된 난수열은 2비트의 블록으로 분할되 며,
    상기 트리 구조의 루트 노드의 난수 발생기에서 생성된 난수열의 전체 블록에서, 상기 세그먼트 주소의 첫 번째 블록의 2진수 크기 순서에 대응하는 상기 난수열의 블록이 선택되고, 상기 루트 노드의 자식 노드에 배치된 난수 발생기 중에서, 상기 선택된 난수열 블록의 2진수와 같은 식별 번호를 가지는 난수 발생기가 선택되며,
    상기 선택된 난수 발생기에서 생성된 난수열의 전체 블록에서, 상기 세그먼트 주소의 두 번째 블록의 2진수 크기 순서에 대응하는, 상기 난수열의 블록이 선택되고, 상기 선택된 난수 발생기가 배치된 노드의 자식 노드에 배치된 난수 발생기 중에서, 상기 선택된 난수열 블록의 2진수와 같은 식별 번호를 가지는 난수 발생기가 선택되며,
    자식 노드의 난수 발생기를 선택하는 상기 과정을 반복하여 최종적으로, 상기 트리 구조의 마지막 계층의 자식 난수 발생기가 선택되고, 상기 선택된 난수 발생기가 난수열을 출력하는, 스트림 암호화 방법.
  16. 제15항에 있어서,
    N은 2이상의 자연수이고, K는 3이상의 자연수이며,
    상기 세그먼트 주소는 2진법의 K·N비트이고, 상기 세그먼트 주소는 K비트의 N개의 블록으로 나뉘며,
    상기 트리 구조의 각 노드의 난수 발생기에서 생성된 난수열은 K비트의 블록 으로 분할되며, 각 노드는 2K개의 자식 노드를 가지는, 스트림 암호화 방법.
  17. 제14항, 제15항 또는 제16항 중 어느 하나의 항에 있어서,
    상기 난수 발생기는 RC4알고리즘을 사용하는, 스트림 암호화 방법.
  18. 스트림 복호화 장치에서 복호화하는 방법으로서,
    암호문 스트림을 입력으로 받아 상기 스트림의 특정 비트가 암호화될 때 사용된 난수열을 얻기 위한 매핑 테이블을 생성하는 제1단계
    상기 매핑 테이블의 데이터에 따라 상기 암호문 특정 비트의 복호화에 사용될 난수열을 생성하는 제2단계 및
    상기 암호문 스트림과 상기 난수열을 XOR 연산하는 제3단계를 포함하는, 스트림 복호화 방법.
  19. 제18항에 있어서,
    상기 제2단계는 트리 구조로 배치되고, 2진법의 난수를 발생시키는 복수의 난수 발생기를 포함하며, 상기 트리 구조는 하나의 루트 노드를 가지며, 각 노드는 4개의 자식 노드를 가지고, 각 노드마다 난수 발생기가 하나씩 배치되며, 같은 부모 노드에 속하는 자식 노드에 배치된 난수 발생기 각각에는 2비트 2진수 각각이 식별 번호로서 할당되며, 전체 복수의 난수 발생기는 각각의 난수 발생기 번호를 가지며,
    N은 2이상의 자연수이고,
    상기 매핑 테이블은 상기 특정 비트가 암호화되기 전의 평문 스트림 전체에서 특정 비트의 위치를 나타내는 2진법의 2·N비트의 세그먼트 주소
    상기 특정 비트의 복호화에 사용될 난수열을 생성하는 난수 발생기의 난수 발생기 번호 및
    상기 복호화에 사용될 난수열을 생성하는 난수 발생기가 상기 특정 비트가 암호화될 때 사용된 난수열을 생성하기 위한 시드키값을 포함하며,
    상기 난수 발생기 번호를 결정함에 있어서,
    상기 세그먼트 주소는 2비트의 N개의 블록으로 분할되고, 상기 각 노드의 난수 발생기는 난수열을 생성하며, 상기 생성된 난수열은 2비트의 블록으로 분할되며,
    상기 트리 구조의 루트 노드의 난수 발생기에서 생성된 난수열의 전체 블록에서, 상기 세그먼트 주소의 첫 번째 블록의 2진수 크기 순서에 대응하는 상기 난수열의 블록이 선택되고, 상기 루트 노드의 자식 노드에 배치된 난수 발생기 중에서, 상기 선택된 난수열 블록의 2진수와 같은 식별 번호를 가지는 난수 발생기가 선택되며,
    상기 선택된 난수 발생기에서 생성된 난수열의 전체 블록에서, 상기 세그먼트 주소의 두 번째 블록의 2진수 크기 순서에 대응하는, 상기 난수열의 블록이 선택되고, 상기 선택된 난수 발생기가 배치된 노드의 자식 노드에 배치된 난수 발생 기 중에서, 상기 선택된 난수열 블록의 2진수와 같은 식별 번호를 가지는 난수 발생기가 선택되며,
    자식 노드의 난수 발생기를 선택하는 상기 과정을 반복하여 최종적으로, 상기 트리 구조의 마지막 계층의 자식 난수 발생기가 선택되고, 상기 선택된 난수 발생기의 난수 발생기 번호가 상기 매핑 테이블의 난수 발생기 번호가 되는, 스트림 복호화 방법.
  20. 제19항에 있어서,
    N은 2이상의 자연수이고, K는 3이상의 자연수이며,
    상기 세그먼트 주소는 2진법의 K·N비트이고, 상기 세그먼트 주소는 K비트의 N개의 블록으로 분할되며,
    상기 트리 구조의 각 노드의 난수 발생기에서 생성된 난수열은 K비트의 블록으로 분할되며, 각 노드는 2K개의 자식 노드를 가지는, 스트림 복호화 방법.
  21. 제18항, 제19항 또는 제20항 중 어느 하나의 항에 있어서,
    상기 난수 발생기는 RC4알고리즘을 사용하는, 스트림 복호화 방법.
  22. 스트림 암호화 및 복호화 장치에서 암호화 및 복호화하는 방법으로서,
    평문 스트림을 입력으로 받아, 상기 스트림 전체에서 특정 비트의 위치와 상 기 특정 비트가 암호화되어 저장될 위치를 매핑하고, 상기 스트림 전체에서 상기 특정 비트의 위치에 따라 상기 특정 비트의 암호화에 사용될 난수열을 생성하고, 상기 평문 스트림과 상기 생성된 난수열을 XOR 연산하는 스트림 암호화하는 단계 및
    암호문 스트림을 입력으로 받아 상기 스트림의 특정 비트가 암호화될 때 사용된 난수열을 얻기 위한 매핑 테이블을 생성하고, 상기 난수 발생기 매핑 테이블의 데이터에 따라 얻어진 복호화에 사용될 난수열과 상기 암호문 스트림을 XOR 연산하는 스트림 복호화하는 단계를 포함하는 스트림 암호화 및 복호화 방법.
  23. 제22항에 있어서,
    N은 2이상의 자연수이고,
    상기 스트림 암호화하는 단계는
    상기 입력된 평문 스트림 전체에서 특정 비트의 위치를 나타내는 2진법의 2·N비트의 세그먼트 주소와 상기 특정 비트가 암호화되어 저장될 위치를 나타내는 오프셋 주소를 매핑하고,
    상기 스트림 암호화 및 복호화 장치는 트리 구조로 배치되고, 2진법의 난수를 발생시키는 복수의 난수 발생기를 포함하며,
    상기 트리 구조는 하나의 루트 노드를 가지며, 각 노드는 4개의 자식 노드를 가지고, 각 노드마다 난수 발생기가 하나씩 배치되며, 같은 부모 노드에 속하는 자식 노드에 배치된 난수 발생기 각각에는 2비트 2진수 각각이 식별 번호로서 할당되 며, 전체 복수의 난수 발생기는 각각의 난수 발생기 번호를 가지며,
    상기 매핑 테이블은
    상기 2진법의 2·N비트의 세그먼트 주소
    상기 특정 비트의 복호화에 사용될 난수열을 생성하는 난수 발생기의 난수 발생기 번호 및
    상기 복호화에 사용될 난수열을 생성하는 난수 발생기가 상기 특정 비트가 암호화될 때 사용된 난수열을 생성하기 위한 시드키값을 포함하고,
    상기 암호화하는 단계 및 복호화하는 단계에 사용될 상기 난수 발생기를 결정함에 있어서,
    상기 세그먼트 주소는 2비트의 N개의 블록으로 분할되고, 상기 각 노드의 난수 발생기는 난수열을 생성하며, 상기 생성된 난수열은 2비트의 블록으로 분할되며,
    상기 트리 구조의 루트 노드의 난수 발생기에서 생성된 난수열의 전체 블록에서, 상기 세그먼트 주소의 첫 번째 블록의 2진수 크기 순서에 대응하는 상기 난수열의 블록이 선택되고, 상기 루트 노드의 자식 노드에 배치된 난수 발생기 중에서, 상기 선택된 난수열 블록의 2진수와 같은 식별 번호를 가지는 난수 발생기가 선택되며,
    상기 선택된 난수 발생기에서 생성된 난수열의 전체 블록에서, 상기 세그먼트 주소의 두 번째 블록의 2진수 크기 순서에 대응하는, 상기 난수열의 블록이 선택되고, 상기 선택된 난수 발생기가 배치된 노드의 자식 노드에 배치된 난수 발생 기 중에서, 상기 선택된 난수열 블록의 2진수와 같은 식별 번호를 가지는 난수 발생기가 선택되며,
    자식 노드의 난수 발생기를 선택하는 상기 과정을 반복하여 최종적으로, 상기 트리 구조의 마지막 계층의 자식 난수 발생기가 선택되고, 상기 선택된 난수 발생기가 암호화에 사용될 난수열을 생성하고, 상기 선택된 난수 발생기의 난수 발생기 번호가 상기 특정 비트의 복호화에 사용될 난수 발생기의 번호가 되는, 스트림 암호화 및 복호화 방법.
  24. 제23항에 있어서,
    N은 2이상의 자연수이고, K는 3이상의 자연수이며,
    상기 세그먼트 주소는 2진법의 K·N비트이고, 상기 세그먼트 주소는 K비트의 N개의 블록으로 분할되며,
    상기 트리 구조의 각 노드의 난수 발생기에서 생성된 난수열은 K비트의 블록으로 분할되며, 각 노드는 2K개의 자식 노드를 가지는, 스트림 암호화 및 복호화 방법.
  25. 제22항, 제23항 또는 제24항 중 어느 하나의 항에 있어서,
    상기 난수 발생기는 RC4알고리즘을 사용하는, 스트림 암호화 및 복호화 방법.
KR1020090089232A 2009-09-21 2009-09-21 스트림 모듈의 계층적 트리 구조를 통한 무작위 접근이 가능한 암호화/복호화 방법 및 장치 KR101076747B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020090089232A KR101076747B1 (ko) 2009-09-21 2009-09-21 스트림 모듈의 계층적 트리 구조를 통한 무작위 접근이 가능한 암호화/복호화 방법 및 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020090089232A KR101076747B1 (ko) 2009-09-21 2009-09-21 스트림 모듈의 계층적 트리 구조를 통한 무작위 접근이 가능한 암호화/복호화 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20110031822A true KR20110031822A (ko) 2011-03-29
KR101076747B1 KR101076747B1 (ko) 2011-10-26

Family

ID=43936757

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020090089232A KR101076747B1 (ko) 2009-09-21 2009-09-21 스트림 모듈의 계층적 트리 구조를 통한 무작위 접근이 가능한 암호화/복호화 방법 및 장치

Country Status (1)

Country Link
KR (1) KR101076747B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110855423A (zh) * 2019-09-23 2020-02-28 深圳市智讯互动体育科技有限公司 加密解密有序数值串的方法、装置及存储介质

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101768605B1 (ko) * 2016-01-06 2017-08-17 조선대학교산학협력단 전송 메시지에 대한 부인 방지가 가능한 데이터 전송 장치 및 방법

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6862354B1 (en) 2000-09-29 2005-03-01 Cisco Technology, Inc. Stream cipher encryption method and apparatus that can efficiently seek to arbitrary locations in a key stream
JP5084224B2 (ja) 2006-10-23 2012-11-28 Kddi株式会社 自己同期型ストリーム暗号の暗号化装置、復号化装置、自己同期型ストリーム暗号システム、mac生成装置、暗号化方法、復号化方法、mac生成方法およびプログラム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110855423A (zh) * 2019-09-23 2020-02-28 深圳市智讯互动体育科技有限公司 加密解密有序数值串的方法、装置及存储介质

Also Published As

Publication number Publication date
KR101076747B1 (ko) 2011-10-26

Similar Documents

Publication Publication Date Title
CN110677237B (zh) 一种具有似混沌特性的文件加密方法
KR100657062B1 (ko) 정보 암호화 방법 및 이 방법을 실현하는 장치
CN1993922B (zh) 流密码组合系统和方法
US10009170B2 (en) Apparatus and method for providing Feistel-based variable length block cipher
US7190791B2 (en) Method of encryption using multi-key process to create a variable-length key
KR20110004474A (ko) 갈루아 폐체 암호 시스템
JPH0863097A (ja) データを暗号化するための対称暗号化方法およびシステム
JPWO2009020060A1 (ja) 共通鍵ブロック暗号化装置、共通鍵ブロック暗号化方法及びプログラム
CN113206736A (zh) 一种基于aes加密算法的加密方法
CN108197484B (zh) 一种分布式存储环境下实现节点数据安全的方法
CN109981249B (zh) 基于拉链式动态散列和nlfsr的加密解密方法及装置
CN109951268B (zh) 基于位置换和位变换的加密解密方法和装置
JP2008513811A (ja) 計算変換の方法及びシステム
US20020159588A1 (en) Cryptography with unconditional security for the internet, commercial intranets, and data storage
CN103346875A (zh) 混沌保密通信系统中数字混沌密码的产生方法
US6301361B1 (en) Encoding and decoding information using randomization with an alphabet of high dimensionality
Yamuna et al. Encryption of a Binary String using music notes and graph theory
KR101076747B1 (ko) 스트림 모듈의 계층적 트리 구조를 통한 무작위 접근이 가능한 암호화/복호화 방법 및 장치
JP4470135B2 (ja) 擬似乱数生成システム
WO2004086673A1 (ja) 乱数生成、暗号化および復号のための装置、方法、プログラム、並びに記録媒体
CN116405194A (zh) 一种基于北斗短报文的数据加密传输方法
CN107493164B (zh) 一种基于混沌系统的des加密方法和系统
JP5207153B2 (ja) 擬似乱数発生システム
JP5586758B1 (ja) 動的暗号化鍵生成システム
JP7136226B2 (ja) 認証暗号化装置、認証復号装置、認証暗号化方法、認証復号方法、認証暗号化プログラムおよび認証復号プログラム

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20140930

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee