KR102123820B1 - 컴퓨터 실행 가능한 경량 난수 생성 장치 및 방법 - Google Patents

컴퓨터 실행 가능한 경량 난수 생성 장치 및 방법 Download PDF

Info

Publication number
KR102123820B1
KR102123820B1 KR1020190093021A KR20190093021A KR102123820B1 KR 102123820 B1 KR102123820 B1 KR 102123820B1 KR 1020190093021 A KR1020190093021 A KR 1020190093021A KR 20190093021 A KR20190093021 A KR 20190093021A KR 102123820 B1 KR102123820 B1 KR 102123820B1
Authority
KR
South Korea
Prior art keywords
random number
lightweight
internal state
unit
number generation
Prior art date
Application number
KR1020190093021A
Other languages
English (en)
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 KR1020190093021A priority Critical patent/KR102123820B1/ko
Application granted granted Critical
Publication of KR102123820B1 publication Critical patent/KR102123820B1/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
    • G06F7/588Random number generators, i.e. based on natural stochastic processes
    • 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

Landscapes

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

Abstract

본 발명은 컴퓨터 실행 가능한 경량 난수 생성 장치 및 방법에 관한 것으로, 상기 경량 난수 생성 장치는 유도 함수(Derivation Function)를 통해 엔트로피 풀(Entropy pool)로부터 중간값을 유도하는 중간값 유도부, 상기 중간값을 기초로 내부상태로서 키(Key)와 변수 V를 갱신하는 내부상태 갱신부 및 사용자의 요청을 수신하면 난수를 생성하고 상기 내부상태를 갱신하는 난수 생성부를 포함한다. 따라서, 본 발명은 엔트로피 수집이 어려운 경량 컴퓨팅 환경에서 안전한 난수를 생성할 수 있다.

Description

컴퓨터 실행 가능한 경량 난수 생성 장치 및 방법{APPARATUS AND METHOD FOR GENERATING COMPUTER-EXECUTABLE LIGHTWEIGHT RANDOM NUMBER}
본 발명은 경량 난수 생성 기술에 관한 것으로, 더욱 상세하게는 엔트로피 수집이 어려운 경량 컴퓨팅 환경에서 안전한 난수를 생성할 수 있는 컴퓨터 실행 가능한 경량 난수 생성 장치 및 방법에 관한 것이다.
4차 산업혁명이 진행됨에 따라 IoT에 대한 투자는 계속 증가하고 있으며, 최근에는 편의성뿐만 아니라 IoT와 같은 경량환경의 안전성을 강화하자는 목소리가 커지고 있다. IoT 시스템과 같은 경량환경의 안전성 역시 현대 통신 시스템의 안전성과 동일하게 암호학적 난수의 문제로 귀결될 것으로 예상할 수 있다.
암호학적 난수발생기는 엔트로피 수집, 축적, 의사난수 생성의 세 단계로 구성되어 있으며, 의사난수 생성 단계의 경우 결정론적 알고리즘으로 경량 암호 알고리즘을 이용하여 사용 메모리 크기를 줄일 수 있다. 리소스가 제한적인 IoT 환경에 적합한 다양한 경량 암호 알고리즘(LEA, HIGHT 등)이 개발되고 있으나, 암호학적으로 안전한 경량 난수발생기에 대한 연구는 부족한 상황이다.
기존 환경에서 사용되는 난수발생기를 경량 환경에 그대로 적용할 경우, IoT 환경에서 사용 가능한 메모리는 적으나 기존 난수발생기에서 사용되는 알고리즘의 사용 메모리가 크다는 문제와 IoT 환경에서는 엔트로피 수집이 어렵다는 문제가 존재할 수 있다.
한국등록특허 제10-0659182(2006.12.12)호
본 발명의 일 실시예는 엔트로피 수집이 어려운 경량 컴퓨팅 환경에서 안전한 난수를 생성할 수 있는 컴퓨터 실행 가능한 경량 난수 생성 장치 및 방법을 제공하고자 한다.
본 발명의 일 실시예는 운영체제(Windows, Linux 등)에서 사용되는 난수발생기를 대체할 수 있는 컴퓨터 실행 가능한 경량 난수 생성 장치 및 방법을 제공하고자 한다.
본 발명의 일 실시예는 암호학적으로 안전한 난수를 생성함으로써 경량 컴퓨팅 환경에서 안전한 암호 시스템을 구축하는데 도움을 줄 수 있는 컴퓨터 실행 가능한 경량 난수 생성 장치 및 방법을 제공하고자 한다.
실시예들 중에서, 컴퓨터 실행 가능한 경량 난수 생성 장치는 유도 함수(Derivation Function)를 통해 엔트로피 풀(Entropy pool)로부터 중간값을 유도하는 중간값 유도부, 상기 중간값을 기초로 내부상태로서 키(Key)와 변수 V를 갱신하는 내부상태 갱신부 및 사용자의 요청을 수신하면 난수를 생성하고 상기 내부상태를 갱신하는 난수 생성부를 포함한다.
상기 경량 난수 생성 장치는 경량 블록 암호 알고리즘을 모듈화하여 저장하는 경량 암호 모듈부를 더 포함하고, 상기 중간값 유도부, 상기 내부 상태 갱신부 및 상기 난수 생성부 각각이 상기 경량 암호 모듈부와 연결되어 상기 경량 블록 암호 알고리즘을 참조함으로써 고유의 동작을 수행할 수 있다.
상기 경량 난수 생성 장치는 상기 경량 블록 암호 알고리즘으로서 CHAM 알고리즘을 사용할 수 있다.
상기 중간값 유도부는 상기 경량 블록 암호 알고리즘을 상기 유도 함수로서 사용하여 상기 중간값을 유도할 수 있다.
상기 내부상태 갱신부는 초기 설정된 내부상태와 상기 중간값을 기초로 상기 경량 블록 암호 알고리즘을 사용하여 상기 키와 변수 V를 각각 갱신할 수 있다.
상기 난수 생성부는 상기 키와 변수 V를 기초로 상기 경량 블록 암호 알고리즘을 사용하여 상기 난수와 상기 내부상태로서 키와 변수 V를 각각 병렬적으로 생성할 수 있다.
상기 경량 난수 생성 장치는 상기 경량 블록 암호 알고리즘을 카운터(CTR) 모드에 따라 동작시킬 수 있다.
상기 난수 생성부는 블록의 크기, 상기 키의 길이 및 상기 난수의 길이에 따라 카운터 수를 결정할 수 있다.
실시예들 중에서, 컴퓨터 실행 가능한 경량 난수 생성 방법은 유도 함수(Derivation Function)을 통해 엔트로피 풀(Entropy pool)로부터 중간값을 유도하는 단계, 상기 중간값을 기초로 내부상태로서 키(Key)와 변수 V를 갱신하는 단계 및 사용자의 요청을 수신하면 난수를 생성하고 상기 내부상태를 갱신하는 단계를 포함한다.
개시된 기술은 다음의 효과를 가질 수 있다. 다만, 특정 실시예가 다음의 효과를 전부 포함하여야 한다거나 다음의 효과만을 포함하여야 한다는 의미는 아니므로, 개시된 기술의 권리범위는 이에 의하여 제한되는 것으로 이해되어서는 아니 될 것이다.
본 발명의 일 실시예에 따른 컴퓨터 실행 가능한 경량 난수 생성 장치 및 방법은 운영체제(Windows, Linux 등)에서 사용되는 난수발생기를 대체할 수 있다.
본 발명의 일 실시예에 따른 컴퓨터 실행 가능한 경량 난수 생성 장치 및 방법은 암호학적으로 안전한 난수를 생성함으로써 경량 컴퓨팅 환경에서 안전한 암호 시스템을 구축하는데 도움을 줄 수 있다.
도 1은 본 발명의 일 실시예에 따른 경량 난수 생성 시스템을 설명하는 도면이다.
도 2는 도 1에 있는 경량 난수 생성 장치의 물리적 구성을 설명하는 도면이다.
도 3은 도 1에 있는 경량 난수 생성 장치의 기능적 구성을 설명하는 블록도이다.
도 4는 도 1에 있는 경량 난수 생성 장치에서 수행되는 경량 난수 생성 과정을 설명하는 순서도이다.
도 5는 본 발명의 일 실시예에 따른 경량 난수 생성 장치의 동작을 설명하는 도면이다.
도 6 및 7은 경량 난수 생성 과정을 설명하는 도면이다.
본 발명에 관한 설명은 구조적 내지 기능적 설명을 위한 실시예에 불과하므로, 본 발명의 권리범위는 본문에 설명된 실시예에 의하여 제한되는 것으로 해석되어서는 아니 된다. 즉, 실시예는 다양한 변경이 가능하고 여러 가지 형태를 가질 수 있으므로 본 발명의 권리범위는 기술적 사상을 실현할 수 있는 균등물들을 포함하는 것으로 이해되어야 한다. 또한, 본 발명에서 제시된 목적 또는 효과는 특정 실시예가 이를 전부 포함하여야 한다거나 그러한 효과만을 포함하여야 한다는 의미는 아니므로, 본 발명의 권리범위는 이에 의하여 제한되는 것으로 이해되어서는 아니 될 것이다.
한편, 본 출원에서 서술되는 용어의 의미는 다음과 같이 이해되어야 할 것이다.
"제1", "제2" 등의 용어는 하나의 구성요소를 다른 구성요소로부터 구별하기 위한 것으로, 이들 용어들에 의해 권리범위가 한정되어서는 아니 된다. 예를 들어, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어"있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결될 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어"있다고 언급된 때에는 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 한편, 구성요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한 복수의 표현을 포함하는 것으로 이해되어야 하고, "포함하다"또는 "가지다" 등의 용어는 실시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이며, 하나 또는 그 이상의 다른 특징이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
각 단계들에 있어 식별부호(예를 들어, a, b, c 등)는 설명의 편의를 위하여 사용되는 것으로 식별부호는 각 단계들의 순서를 설명하는 것이 아니며, 각 단계들은 문맥상 명백하게 특정 순서를 기재하지 않는 이상 명기된 순서와 다르게 일어날 수 있다. 즉, 각 단계들은 명기된 순서와 동일하게 일어날 수도 있고 실질적으로 동시에 수행될 수도 있으며 반대의 순서대로 수행될 수도 있다.
본 발명은 컴퓨터가 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현될 수 있고, 컴퓨터가 읽을 수 있는 기록 매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록 장치를 포함한다. 컴퓨터가 읽을 수 있는 기록 매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피 디스크, 광 데이터 저장 장치 등이 있다. 또한, 컴퓨터가 읽을 수 있는 기록 매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산 방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다.
여기서 사용되는 모든 용어들은 다르게 정의되지 않는 한, 본 발명이 속하는 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한 이상적이거나 과도하게 형식적인 의미를 지니는 것으로 해석될 수 없다.
도 1은 본 발명의 일 실시예에 따른 경량 난수 생성 시스템을 설명하는 도면이다.
도 1을 참조하면, 경량 난수 생성 시스템(100)은 사용자 단말(110), 경량 난수 생성 장치(130) 및 데이터베이스(150)를 포함할 수 있다.
사용자 단말(110)은 경량 난수 생성 장치(130)에게 잡음원을 제공할 수 있고, 특정 길이의 난수를 요청하여 생성된 난수를 수신 및 확인할 수 있는 컴퓨팅 장치에 해당할 수 있고, 스마트폰, 노트북 또는 컴퓨터로 구현될 수 있으며, 반드시 이에 한정되지 않고, 태블릿 PC 등 다양한 디바이스로도 구현될 수 있다. 사용자 단말(110)은 경량 난수 생성 장치(130)와 네트워크를 통해 연결될 수 있고, 복수의 사용자 단말(110)들은 경량 난수 생성 장치(130)와 동시에 연결될 수 있다.
경량 난수 생성 장치(130)는 외부로부터 잡음원을 수집하고 사용자의 요청에 따라 난수를 생성하여 제공할 수 있는 컴퓨터 또는 프로그램에 해당하는 서버로 구현될 수 있다. 경량 난수 생성 장치(130)는 사용자 단말(110)과 블루투스, WiFi, 통신망 등을 통해 무선으로 연결될 수 있고, 네트워크를 통해 사용자 단말(110)과 데이터를 주고받을 수 있다.
일 실시예에서, 경량 난수 생성 장치(130)는 데이터베이스(150)와 연동하여 난수 생성에 필요한 정보를 저장할 수 있다. 한편, 경량 난수 생성 장치(130)는 도 1과 달리, 데이터베이스(150)를 내부에 포함하여 구현될 수 있다. 또한, 경량 난수 생성 장치(130)는 프로세서, 메모리, 사용자 입출력부 및 네트워크 입출력부를 포함하여 구현될 수 있으며, 이에 대해서는 도 2에서 보다 자세히 설명한다.
데이터베이스(150)는 난수를 생성하여 제공하는 과정에서 필요한 다양한 정보들을 저장하는 저장장치에 해당할 수 있다. 데이터베이스(150)는 복수의 사용자 단말(110)들로부터 수집한 잡음원에 관한 정보를 저장할 수 있고, 잡음원을 기초로 사용자의 요청에 따라 생성된 난수에 관한 정보를 저장할 수 있으며, 반드시 이에 한정되지 않고, 경량 난수 생성 장치(130)가 사용자의 요청에 따라 난수를 생성하여 제공하는 과정에서 다양한 형태로 수집 또는 가공된 정보들을 저장할 수 있다.
한편, 도 1에서 경량 난수 생성 장치(130)는 독립적으로 구현된 장치로서 설명하고 있으나, 필요에 따라 사용자 단말(110) 내부에서 동작하는 하나의 모듈로서 구현될 수 있다. 이 경우 경량 난수 생성 장치(130)는 사용자 단말(110)에서 수집된 잡음원을 활용할 수 있다. 또한, 경량 난수 생성 장치(130)는 사용자 단말(110) 내부에서 복수개로 모듈화되어 각각이 독립적으로 동작할 수 있고, 복수의 난수들을 병렬적으로 생성할 수 있다.
도 2는 도 1에 있는 경량 난수 생성 장치의 물리적 구성을 설명하는 도면이다.
도 2를 참조하면, 경량 난수 생성 장치(130)는 프로세서(210), 메모리(230), 사용자 입출력부(250) 및 네트워크 입출력부(270)를 포함하여 구현될 수 있다.
프로세서(210)는 사용자의 요청에 따라 난수를 생성하여 제공하는 과정에서의 각 동작들을 처리하는 프로시저를 실행할 수 있고, 그 과정 전반에서 읽혀지거나 작성되는 메모리(230)를 관리할 수 있으며, 메모리(230)에 있는 휘발성 메모리와 비휘발성 메모리 간의 동기화 시간을 스케줄할 수 있다. 프로세서(210)는 경량 난수 생성 장치(130)의 동작 전반을 제어할 수 있고, 메모리(230), 사용자 입출력부(250) 및 네트워크 입출력부(270)와 전기적으로 연결되어 이들 간의 데이터 흐름을 제어할 수 있다. 프로세서(210)는 경량 난수 생성 장치(130)의 CPU(Central Processing Unit)로 구현될 수 있다.
메모리(230)는 SSD(Solid State Drive) 또는 HDD(Hard Disk Drive)와 같은 비휘발성 메모리로 구현되어 경량 난수 생성 장치(130)에 필요한 데이터 전반을 저장하는데 사용되는 보조기억장치를 포함할 수 있고, RAM(Random Access Memory)과 같은 휘발성 메모리로 구현된 주기억장치를 포함할 수 있다.
사용자 입출력부(250)는 사용자 입력을 수신하기 위한 환경 및 사용자에게 특정 정보를 출력하기 위한 환경을 포함할 수 있다. 예를 들어, 사용자 입출력부(250)는 터치 패드, 터치 스크린, 화상 키보드 또는 포인팅 장치와 같은 어댑터를 포함하는 입력장치 및 모니터 또는 터치스크린과 같은 어댑터를 포함하는 출력장치를 포함할 수 있다. 일 실시예에서, 사용자 입출력부(250)는 원격 접속을 통해 접속되는 컴퓨팅 장치에 해당할 수 있고, 그러한 경우, 경량 난수 생성 장치(130)는 서버로서 수행될 수 있다.
네트워크 입출력부(270)은 네트워크를 통해 외부 장치 또는 시스템과 연결하기 위한 환경을 포함하고, 예를 들어, LAN(Local Area Network), MAN(Metropolitan Area Network), WAN(Wide Area Network) 및 VAN(Value Added Network) 등의 통신을 위한 어댑터를 포함할 수 있다.
도 3은 도 1에 있는 경량 난수 생성 장치의 기능적 구성을 설명하는 블록도이다.
도 3을 참조하면, 경량 난수 생성 장치(130)는 중간값 유도부(310), 내부상태 갱신부(330), 난수 생성부(350), 경량 암호 모듈부(370) 및 제어부(390)를 포함할 수 있다.
경량 난수 생성 장치(130)는 국내 표준 암호 알고리즘과 운영모드 및 유도 함수를 조합하여 엔트로피 수집이 어려운 경량 환경에서도 암호학적으로 안전한 난수를 생성할 수 있다. 이하, 기능적 구성들 각각에 대해 보다 구체적으로 설명한다.
중간값 유도부(310)는 유도 함수(Derivation Function)를 통해 엔트로피 풀(Entropy pool)로부터 중간값을 유도할 수 있다. 일 실시예에서, 중간값 유도부(310)는 경량 암호 모듈부(370)와 연결되어 경량 블록 암호 알고리즘을 참조함으로써 중간값 유도에 관한 고유의 동작을 수행할 수 있다. 유도 함수(Derivation Function)는 난수 생성을 위한 재료를 획득하는 과정에서 사용되는 함수에 해당할 수 있고, 예를 들어, 엔트로피 풀로부터 엔트로피를 추출하여 중간값을 생성하는 과정에서 유도 함수가 적용될 수 있다.
일 실시예에서, 중간값 유도부(310)는 경량 블록 암호 알고리즘을 유도 함수로서 사용하여 중간값을 유도할 수 있다. 예를 들어, 중간값 유도부(310)는 경량 블록 암호 알고리즘의 하나인 CHAM 128/128 알고리즘을 사용하여 중간값을 유도할 수 있다. CHAM 128/128 알고리즘은 모듈화되어 메모리 상의 특정 위치에 저장될 수 있고, 중간값 유도부(310)는 경량 암호 모듈부(370)를 통해 해당 알고리즘을 호출하여 중간값을 유도할 수 있다.
내부상태 갱신부(330)는 중간값을 기초로 내부상태로서 키(Key)와 변수 V를 갱신할 수 있다. 일 실시예에서, 내부상태 갱신부(330)는 경량 암호 모듈부(370)와 연결되어 경량 블록 암호 알고리즘을 참조함으로써 내부상태 갱신에 관한 고유의 동작을 수행할 수 있다.
여기에서, 키(Key)는 내부상태를 구성하는 일 요소로서 경량 블록 암호 알고리즘에 적용되는 암호키에 해당할 수 있고, 경량 난수 생성 장치(130)의 초기화 과정에서 인스턴스(Instance)화되어 메모리(230)의 특정 위치에 저장될 수 있다. 변수 V는 내부상태를 구성하는 일 요소로서 경량 블록 암호 알고리즘의 입력 데이터로 사용될 수 있고, 경량 난수 생성 장치(130)의 초기화 과정에서 키(Key)와 함께 인스턴스화되어 메모리(230)의 특정 위치에 저장될 수 있다.
일 실시예에서, 내부상태 갱신부(330)는 초기 설정된 내부상태와 중간값을 기초로 경량 블록 암호 알고리즘을 사용하여 키와 변수 V를 각각 갱신할 수 있다. 보다 구체적으로, 내부상태 갱신부(330)는 중간값 유도부(310)에 의해 유도된 중간값과 초기 설정된 변수 V를 XOR 연산하여 경량 블록 암호 알고리즘의 카운터 모드 동작을 위한 카운터를 도출할 수 있다. 내부상태 갱신부(330)는 내부상태인 키(Key)와 변수 V를 갱신하기 위한 Output을 각각 생성하기 위하여 카운터를 다수 생성할 수 있고, 각각의 카운터에 대해 키(Key)를 기초로 암호화하여 새로운 키(Key)와 변수 V를 생성할 수 있다. 내부상태 갱신부(330)는 기존의 키(Key)와 변수 V를 새롭게 생성된 키(Key)와 변수 V로 대체함으로써 내부상태 갱신에 관한 동작을 수행할 수 있다.
일 실시예에서, 내부상태 갱신부(330)는 경량 블록 암호 알고리즘을 카운터(CTR) 모드에 따라 동작시킬 수 있다. 카운터(CTR) 모드는 블록 암호 알고리즘에 대한 운영모드 중 하나에 해당할 수 있고, 각 블록마다 현재 블록이 몇 번째인지 값을 얻어 그 숫자를 블록 암호의 입력으로 사용할 수 있으며, 각 블록 암호에서 연속적인 난수를 출력할 수 있다. 카운터 모드는 각 블록의 암호화 및 복호화가 이전 블록에 의존하지 않기 때문에 병렬적인 동작이 가능하고, 암호화된 문자열에서 원하는 부분만 복호화하는 것도 가능한 특징을 가질 수 있다.
난수 생성부(350)는 사용자의 요청을 수신하면 난수를 생성하고 상기 내부상태를 갱신할 수 있다. 일 실시예에서, 난수 생성부(350)는 경량 암호 모듈부(370)와 연결되어 경량 블록 암호 알고리즘을 참조함으로써 난수 생성에 관한 고유의 동작을 수행할 수 있다. 사용자는 사용자 단말(110)을 통해 특정 길이의 난수를 요청할 수 있고, 난수 생성부(350)는 요청 길이만큼의 난수를 생성하여 제공할 수 있다. 난수 생성부(350)는 경량 블록 암호 알고리즘에 관한 함수를 호출하여 난수 생성에 사용할 수 있고, 각 블록 암호에서 생성된 난수를 순차적으로 연결하여 특정 길이의 난수를 생성할 수 있다.
일 실시예에서, 난수 생성부(350)는 키와 변수 V를 기초로 경량 블록 암호 알고리즘을 사용하여 난수와 내부상태로서 키와 변수 V를 각각 병렬적으로 생성할 수 있다. 일 실시예에서, 난수 생성부(350)는 경량 블록 암호 알고리즘을 카운터(CTR) 모드에 따라 동작시킬 수 있다. 난수 생성부(350)는 카운터 모드에 따라 병렬적으로 동작하는 각 블록 암호의 결과 중 일부를 기초로 난수를 생성하고, 다른 일부를 기초로 키(Key)를 갱신할 수 있으며, 나머지 일부를 기초로 변수 V를 갱신할 수 있다.
일 실시예에서, 난수 생성부(350)는 블록의 크기, 키의 길이 및 난수의 길이에 따라 카운터 수를 결정할 수 있다. 난수 생성부(350)에 의해 동작하는 블록 암호 알고리즘의 경우 카운터 모드로 동작할 수 있고, 각 블록 암호에서 사용되는 카운터의 개수는 각 블록 암호에 입력되는 입력 블록의 크기와, 블록 암호 알고리즘에 사용되는 키(Key)의 길이, 그리고 출력하고자 하는 난수의 길이를 기초로 결정될 수 있다. 결과적으로, 블록 암호 알고리즘의 카운터 모드를 통해 각 블록 암호에서 출력되는 결과는 총 3개의 부분으로 구분될 수 있고, 각각 난수, 키(Key) 및 변수 V로서 사용될 수 있다.
경량 암호 모듈부(370)는 경량 블록 암호 알고리즘을 모듈화하여 저장할 수 있다. 경량 난수 생성 장치(130)는 경량 환경에서 암호학적으로 안전한 난수를 생성할 수 있고, 이를 위한 구성으로서 경량 블록 암호 알고리즘을 사전에 구현하여 모듈화하고 이를 난수 생성의 여러 과정에서 참조하여 활용하도록 함으로써 실행코드의 크기 및 사용 메모리의 경량화를 달성할 수 있다.
일 실시예에서, 경량 암호 모듈부(370)는 경량 블록 암호 알고리즘으로서 CHAM 알고리즘을 사용할 수 있다. CHAM 알고리즘은 2017년 국가보안기술연구소에서 개발한 경량 블록 암호에 해당하고, n비트 블록과 k비트 키를 갖는 CHAM은 CHAM-n/k로 표기될 수 있다. 예를 들어, CHAM 알고리즘은 CHAM-64/128, CHAM-128/128, CHAM-128/256 등을 포함할 수 있다. 경량 암호 모듈부(370)는 기본적으로 CHAM-128/128을 경량 블록 암호 알고리즘으로 사용할 수 있고, 필요에 따라, CHAM-64/128 또는 CHAM-128/256으로 대체하여 사용할 수 있다.
제어부(390)는 경량 난수 생성 장치(130)의 전체적인 동작을 제어하고, 중간값 유도부(310), 내부상태 갱신부(330), 난수 생성부(350) 및 경량 암호 모듈부(370) 간의 제어 흐름 또는 데이터 흐름을 관리할 수 있다.
도 4는 도 1에 있는 경량 난수 생성 장치에서 수행되는 경량 난수 생성 과정을 설명하는 순서도이다.
도 4를 참조하면, 경량 난수 생성 장치(130)는 중간값 유도부(310)를 통해 유도 함수를 통해 엔트로피 풀로부터 중간값을 유도할 수 있다(단계 S410). 경량 난수 생성 장치(130)는 내부상태 갱신부(330)를 통해 중간값을 기초로 내부상태로서 키와 변수 V를 갱신할 수 있다(단계 S430). 경량 난수 생성 장치(130)는 난수 생성부(350)를 통해 사용자의 요청을 수신하면 난수를 생성하고 내부상태를 갱신할 수 있다(단계 S450).
도 5는 본 발명의 일 실시예에 따른 경량 난수 생성 장치의 동작을 설명하는 도면이다. 도 6 및 7은 경량 난수 생성 과정을 설명하는 도면이다.
이하, 도 5 내지 7을 기초로 본 발명의 일 실시예에 따른 경량 난수 생성 장치의 동작을 구체적으로 설명한다.
경량 난수 생성 장치(130)는 국내 표준 암호 알고리즘인 CHAM, 운영모드(Counter mode) 및 유도 함수(Derivation Function)를 조합하여 엔트로피 수집이 어려운 경량 환경에 적합하고 암호학적으로 안전한 난수를 생성할 수 있다. 특히, 경량 난수 생성 장치(130)는 경량 난수 생성에 있어 실행 코드 크기 및 사용 메모리의 경량화를 제공하기 위하여 동일한 경량 CHAM 알고리즘을 유도 함수, Refresh function, PRG(Pseudorandom Generator)에서 모두 사용할 수 있는 형태로 구현될 수 있다.
일 실시예에서, 경량 난수 생성 장치(130)는 다음과 같은 과정으로 동작할 수 있다. 제1 단계(S510)에서, 경량 난수 생성 장치(130)는 초기화 과정을 수행할 수 있다. 초기화 과정은 내부 상태(Internal State)인 키(Key)와 변수 V를 인스턴스(Instance)화 하는 과정을 포함할 수 있고, 엔트로피 풀(Entropy Pool)을 인스턴스화 하는 과정을 포함할 수 있다.
제2 단계(S530)에서, 경량 난수 생성 장치(130)는 난수 생성 과정을 수행할 수 있고, 해당 과정은 사용자 단말(110)로부터 난수 생성 요청이 수신된 경우에만 진행될 수 있다. 난수 생성 과정은 엔트로피 풀로부터 리프레시 함수(Refresh function)를 통해 키(Key)와 변수 V를 갱신하는 과정을 포함할 수 있고, 의사난수 생성기(Pseudorandom Genereator)를 통해 사용자가 요청한 난수의 크기만큼 난수를 생성하는 과정을 포함할 수 있으며, 동시에 난수 생성에 사용된 키(Key)와 변수 V를 갱신하는 과정을 포함할 수 있다.
특히, 경량 난수 생성 장치(130)는 경량 환경에서 잡음원으로부터 엔트로피를 충분히 모으기 힘든 상태인 경우, 사용자의 난수 생성 요청에 따라 난수 생성 과정인 제2 단계(S530) 만을 독립적으로 진행할 수 있고, 초기화 과정인 제1 단계(S510)는 잡음원으로부터 엔트로피가 충분히 수집되면 진행하거나 또는 주기적으로 진행할 수 있다.
도 6에서, 리프레시 함수 단계(S510)는 엔트로피 풀(Entropy Pool)로부터 내부상태인 변수 V와 경량 블록 암호 알고리즘에 사용되는 키(Key)를 갱신하는 단계에 해당할 수 있다. 보다 구체적으로, 리프레시 함수 단계(S510)는 엔트로피 풀로부터 중간값을 유도하는 단계와 유도된 중간값 및 내부상태를 기초로 내부상태를 갱신하는 단계를 포함할 수 있다.
경량 난수 생성 장치(130)는 리프레시 함수 단계(S510)에서 경량 블록 암호 알고리즘이 적용된 유도 함수(df)를 추출기(Extractor)로 사용할 수 있다. 이 때, 경량 블록 암호 알고리즘은 바람직하게는 CHAM-128/128이 사용될 수 있다. 일 실시예에서, 경량 난수 생성 장치(130)는 경량 블록 암호 알고리즘으로서 CHAM-64/128 또는 CHAM-128/256을 사용할 수 있다.
이 경우, 경량 난수 생성 장치(130)는 리프레시 함수 단계(S510)에서 키(Key) 갱신을 위하여 추가적인 블록 암호 연산을 수행할 수 있고, 병렬적인 동작이 가능한 카운터 모드에서 카운터를 증가시킴으로써 블록 암호 연산을 쉽게 추가할 수 있다(S511). 예를 들어, 경량 난수 생성 장치(130)는 카운터 V”+1를 1 증가시켜 V”+2를 생성할 수 있고, 경량 블록 암호(CHAM)을 적용하여 출력으로서 Output 3을 생성할 수 있다. 경량 난수 생성 장치(130)는 Output 2와 Output 3을 기초로 키(Key)를 갱신할 수 있다.
도 7에서, 의사난수 생성(Pseudorandom Generator) 단계(S530)는 사용자가 요청한 크기만큼의 의사난수(pseudorandom number)를 출력하고, 내부상태인 변수 V와 경량 블록 암호 알고리즘에 사용되는 키(Key)를 갱신하는 단계에 해당할 수 있다.
경량 난수 생성 장치(130)는 의사난수 생성 단계(S530)에서 경량 블록 암호 알고리즘을 통해 의사난수를 생성할 수 있다. 이 때, 경량 블록 암호 알고리즘은 바람직하게는 CHAM-128/128이 사용될 수 있다. 일 실시예에서, 경량 난수 생성 장치(130)는 경량 블록 암호 알고리즘으로서 CHAM-64/128 또는 CHAM-128/256을 사용할 수 있다.
이 경우, 경량 난수 생성 장치(130)는 의사난수 생성 단계(S530)에서 키(Key) 갱신을 위하여 추가적인 블록 암호 연산을 수행할 수 있고, 병렬적인 동작이 가능한 카운터 모드에서 카운터를 증가시킴으로써 블록 암호 연산을 쉽게 추가할 수 있다(S531). 예를 들어, 경량 난수 생성 장치(130)는 카운터 V+N+2를 1 증가시켜 V+N+3을 생성할 수 있고, 경량 블록 암호(CHAM)을 적용하여 출력으로서 Output N+3을 생성할 수 있다. 경량 난수 생성 장치(130)는 Output N+2와 Output N+3을 기초로 키(Key)를 갱신할 수 있다. 한편, 경량 난수 생성 장치(130)는 Output 1 내지 Output N을 기초로 의사난수(Pseudorandom 1 내지 N)를 생성할 수 있고, Output N+1을 기초로 변수 V를 갱신할 수 있다.
상기에서는 본 발명의 바람직한 실시예를 참조하여 설명하였지만, 해당 기술 분야의 숙련된 당업자는 하기의 특허 청구의 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.
100: 경량 난수 생성 시스템
110: 사용자 단말 130: 경량 난수 생성 장치
150: 데이터베이스
210: 프로세서 230: 메모리
250: 사용자 입출력부 270: 네트워크 입출력부
310: 중간값 유도부 330: 내부상태 갱신부
350: 난수 생성부 370: 경량 암호 모듈부
390: 제어부

Claims (9)

  1. 유도 함수(Derivation Function)를 통해 엔트로피 풀(Entropy pool)로부터 중간값을 유도하는 중간값 유도부;
    상기 중간값을 기초로 내부상태로서 키(Key)와 변수 V를 갱신하는 내부상태 갱신부; 및
    사용자의 요청을 수신하면 난수를 생성하고 상기 내부상태를 갱신하는 난수 생성부를 포함하는 컴퓨터 실행 가능한 경량 난수 생성 장치.
  2. 제1항에 있어서,
    경량 블록 암호 알고리즘을 모듈화하여 저장하는 경량 암호 모듈부를 더 포함하고,
    상기 중간값 유도부, 상기 내부 상태 갱신부 및 상기 난수 생성부 각각이 상기 경량 암호 모듈부와 연결되어 상기 경량 블록 암호 알고리즘을 참조함으로써 고유의 동작을 수행하는 것을 특징으로 하는 컴퓨터 실행 가능한 경량 난수 생성 장치.
  3. 제2항에 있어서,
    상기 경량 블록 암호 알고리즘으로서 CHAM 알고리즘을 사용하는 것을 특징으로 하는 컴퓨터 실행 가능한 경량 난수 생성 장치.
  4. 제2항에 있어서, 상기 중간값 유도부는
    상기 경량 블록 암호 알고리즘을 상기 유도 함수로서 사용하여 상기 중간값을 유도하는 것을 특징으로 하는 컴퓨터 실행 가능한 경량 난수 생성 장치.
  5. 제2항에 있어서, 상기 내부상태 갱신부는
    초기 설정된 내부상태와 상기 중간값을 기초로 상기 경량 블록 암호 알고리즘을 사용하여 상기 키와 변수 V를 각각 갱신하는 것을 특징으로 하는 컴퓨터 실행 가능한 경량 난수 생성 장치.
  6. 제2항에 있어서, 상기 난수 생성부는
    상기 키와 변수 V를 기초로 상기 경량 블록 암호 알고리즘을 사용하여 상기 난수와 상기 내부상태로서 키와 변수 V를 각각 병렬적으로 생성하는 것을 특징으로 하는 컴퓨터 실행 가능한 경량 난수 생성 장치.
  7. 제4항 또는 제5항에 있어서,
    상기 경량 블록 암호 알고리즘은 카운터(CTR) 모드에 따라 동작하는 것을 특징으로 하는 컴퓨터 실행 가능한 경량 난수 생성 장치.
  8. 제7항에 있어서, 상기 난수 생성부는
    블록의 크기, 상기 키의 길이 및 상기 난수의 길이에 따라 카운터 수를 결정하는 것을 특징으로 하는 컴퓨터 실행 가능한 경량 난수 생성 장치.
  9. 경량 난수 생성 장치에서 수행되는 방법에 있어서,
    유도 함수(Derivation Function)을 통해 엔트로피 풀(Entropy pool)로부터 중간값을 유도하는 단계;
    상기 중간값을 기초로 내부상태로서 키(Key)와 변수 V를 갱신하는 단계; 및
    사용자의 요청을 수신하면 난수를 생성하고 상기 내부상태를 갱신하는 단계를 포함하는 컴퓨터 실행 가능한 경량 난수 생성 방법.

KR1020190093021A 2019-07-31 2019-07-31 컴퓨터 실행 가능한 경량 난수 생성 장치 및 방법 KR102123820B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020190093021A KR102123820B1 (ko) 2019-07-31 2019-07-31 컴퓨터 실행 가능한 경량 난수 생성 장치 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190093021A KR102123820B1 (ko) 2019-07-31 2019-07-31 컴퓨터 실행 가능한 경량 난수 생성 장치 및 방법

Publications (1)

Publication Number Publication Date
KR102123820B1 true KR102123820B1 (ko) 2020-06-23

Family

ID=71137879

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190093021A KR102123820B1 (ko) 2019-07-31 2019-07-31 컴퓨터 실행 가능한 경량 난수 생성 장치 및 방법

Country Status (1)

Country Link
KR (1) KR102123820B1 (ko)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100659182B1 (ko) 2006-06-23 2006-12-20 쓰리에이로직스(주) 난수 발생기와 난수 발생 방법
KR100749414B1 (ko) * 2005-12-10 2007-08-14 한국전자통신연구원 무선 인터넷 시스템의 암호화 장치 및 그 방법과, 복호화장치 및 그 방법
KR101244853B1 (ko) * 2012-12-13 2013-03-18 정진원 난수발생에 의한 사용자 통합 인증방법
KR20150124405A (ko) * 2014-04-28 2015-11-05 유니베르시떼 드 제네브 양자 난수 생성에 기초한 광학장치를 위한 방법 및 장치
KR20180102627A (ko) * 2016-01-11 2018-09-17 에스티씨. 유엔엠 프라이버시-보존, 상호 puf-기반 인증 프로토콜

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100749414B1 (ko) * 2005-12-10 2007-08-14 한국전자통신연구원 무선 인터넷 시스템의 암호화 장치 및 그 방법과, 복호화장치 및 그 방법
KR100659182B1 (ko) 2006-06-23 2006-12-20 쓰리에이로직스(주) 난수 발생기와 난수 발생 방법
KR101244853B1 (ko) * 2012-12-13 2013-03-18 정진원 난수발생에 의한 사용자 통합 인증방법
KR20150124405A (ko) * 2014-04-28 2015-11-05 유니베르시떼 드 제네브 양자 난수 생성에 기초한 광학장치를 위한 방법 및 장치
KR20180102627A (ko) * 2016-01-11 2018-09-17 에스티씨. 유엔엠 프라이버시-보존, 상호 puf-기반 인증 프로토콜

Similar Documents

Publication Publication Date Title
CN110214325B (zh) 数据屏蔽的方法和系统
CN104823207B (zh) 通过与随机成分组合来保护用于移动支付应用程序的个人识别号码
EP2894810B1 (en) Searchable Code Processing System and Method
CN112016120B (zh) 基于用户隐私保护的事件预测方法和装置
JP2021512519A (ja) ブロックチェーンベースのトランザクション処理方法および装置、ならびに電子デバイス
US9571280B2 (en) Application integrity protection via secure interaction and processing
US9634833B2 (en) Gesture-based password entry to unlock an encrypted device
CN107077574A (zh) 用于客户端设备的信任服务
EP3961458A1 (en) Blockchain-based service processing methods, apparatuses, devices, and storage media
Ghosh et al. CASE: A context-aware security scheme for preserving data privacy in IoT-enabled society 5.0
US8948381B2 (en) Conditional key generation based on expiration date of data
US9270455B1 (en) CPU assisted seeding of a random number generator in an externally provable fashion
KR101798890B1 (ko) 일상 생활 습관의 행동 요소를 활용한 웨어러블 디바이스 사용자 인증 방법 및 그 시스템
US20230113896A1 (en) System for Restrictive Discovery of Private Data Feature Intersection
US10754987B2 (en) Secure micro-service data and service provisioning for IoT platforms
KR102123820B1 (ko) 컴퓨터 실행 가능한 경량 난수 생성 장치 및 방법
JP2014137474A (ja) 改ざん検知装置、改ざん検知方法、およびプログラム
KR102500252B1 (ko) 얼굴 개인정보 보호 기술을 이용한 기계학습 데이터베이스 구축 시스템
CN110995749A (zh) 区块链加密方法及装置、电子设备和存储介质
Feng et al. An improved secure high-order-Lanczos based orthogonal tensor SVD for outsourced cyber-physical-social big data reduction
CN109560925A (zh) 密钥信息供应方法及利用密钥信息供应方法的装置
JP7360074B2 (ja) 秘匿計算方法、秘匿計算システム及びプログラム
Bayerl et al. Privacy-preserving speech processing via STPC and TEEs
US20230004661A1 (en) Systems and methods for secure random number generation
KR20150126232A (ko) 암호화 데이터 결정 방법 및 이를 제공하는 호스트 장치

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant