KR101833954B1 - 메모리 과부하 난수 발생 장치 및 방법 - Google Patents

메모리 과부하 난수 발생 장치 및 방법 Download PDF

Info

Publication number
KR101833954B1
KR101833954B1 KR1020160098751A KR20160098751A KR101833954B1 KR 101833954 B1 KR101833954 B1 KR 101833954B1 KR 1020160098751 A KR1020160098751 A KR 1020160098751A KR 20160098751 A KR20160098751 A KR 20160098751A KR 101833954 B1 KR101833954 B1 KR 101833954B1
Authority
KR
South Korea
Prior art keywords
memory
overload
internal state
current
random number
Prior art date
Application number
KR1020160098751A
Other languages
English (en)
Other versions
KR20180015362A (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 KR1020160098751A priority Critical patent/KR101833954B1/ko
Publication of KR20180015362A publication Critical patent/KR20180015362A/ko
Application granted granted Critical
Publication of KR101833954B1 publication Critical patent/KR101833954B1/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
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • 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/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • G06F21/80Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in storage media based on magnetic or optical technology, e.g. disks with sectors

Landscapes

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

Abstract

본 발명은 난수 발생 기술에 관한 것으로, N 개(상기 N은 2 이상의 자연수)의 메모리 블록들을 포함하는 메모리 블록부, 첫 번째부터 (j-1) 번째(상기 j는 2 이상의 자연수)까지의 메모리 블록에 있는 이전 메모리 값들과 현재 내부 상태를 기초로 j 번째 메모리 블록에 있는 현재 메모리 값을 산출하는 메모리 과부하 연산부 및 상기 현재 메모리 값 중 특정 비트블록에 관해 업데이트 연산을 수행하여 다음 메모리 값의 일부에 해당하는 다음 내부 상태를 갱신하는 내부 상태 갱신부를 포함한다.

Description

메모리 과부하 난수 발생 장치 및 방법{MEMORY HARD RANDOM NUMBER GENERATING APPARATUS AND METHOD}
본 발명은 난수 발생 기술에 관한 것으로, 보다 상세하게는, 모든 메모리 블록을 가지고 있어야 난수 출력이 가능하도록 하여 병렬 컴퓨팅을 이용한 공격자의 복원 공격을 효과적으로 방어할 수 있는 메모리 과부하 난수 발생 장치 및 방법에 관한 것이다.
난수발생기(Random Number Generator, RNG)는 열이나 음의 변화 등의 예측이나 재현이 사실상 불가능한 자연 현상을 센서로 감지해서 그 결과를 기초로 난수열을 생성하는 하드웨어나 소프트웨어를 의미한다.
의사난수발생기(Pseudo-Random Number Generator, PRNG)는 난수를 생성하는 소프트웨어 혹은 이를 구현한 장치로서, 내부상태를 포함하고 외부에서 주어진 잡음원을 기초로 의사난수열을 생성한다.
컴퓨터에 의해 발생된 난수는 컴퓨터 내의 유한한 내부상태 및 특정 알고리즘에 의한 생성 등의 이유로 주기성을 가지므로 진정한 의미의 난수는 아니지만, 통계적인 편중 없는 무작위성, 예측 불가능성 및 재현 불가능성의 특징을 갖기 때문에 사용에 있어서 난수로 간주하여도 지장이 없어 이를 의사(Pseudo) 난수라고 한다.
난수 발생 함수의 입력이 되는 잡음원이 예측된다면, 출력 난수의 엔트로피에 관계없이 난수 예측이 가능하게 된다. 그렇기 때문에 공격자는 일반적으로 입력 잡음원으로 예상되는 값들을 입력하여 난수 발생기 출력을 알아내려는 시도를 한다.
종래의 난수발생기 기술은 상대적으로 높은 보안성을 갖는 잡음원을 생성하는데 집중되어 있으나, 병렬처리용 하드웨어 발전으로 인해 예상 입력에 대한 전수조사 타입의 공격에 취약한 단점이 있다. 따라서, 공격자의 전수조사를 현실적으로 힘들게 만들 수 있는 난수 발생 기술 개발이 요구되고 있다.
한국 등록특허 제0712498호는 하드디스크 드라이브에서 암호화 및 인증을 위해 사용되는 난수를 발생하는 방법에 있어서, 헤드가 임의의 트랙 상에 트랙 온 되기까지 대기하는 트랙 온 대기 과정; 상기 트랙으로부터 복수의 섹터 번호들을 읽어내는 섹터 번호 획득 과정; 및 상기 읽어낸 복수의 섹터 번호들을 조합하여 상기 난수를 발생하는 난수 발생 과정을 포함하는 것을 특징으로 한다.
한국 공개특허 제10-1999-0077585호는 암호적으로 안전한 큰 비트 크기의 의사 난수 zi를 출력하는 방법에 관한 기술을 개시한다. 큰 비트 크기의 의사 난수들이 출력되고 있으므로 메시지들의 큰 비트 크기 세그먼트들이 암호화되어 종래 기술의 암호화 처리보다 더 빠른 암호화 처리로될 수 있다. 한 실시예에서 본 발명은 모듈러 지수 함수 에 의해 정의된 의사 난수 발생기이다. 의사 난수 발생기의 출력은 xi의 j-1 비트 크기 세그먼트를 포함하는 의사 난수 zi이다. j의 값은 m-2c(즉 j≤≤m-2c)보다 작거나 같다. 본 발명의 한 실시예에서 의사 난수 zi는 최하위 비트 xi를 제외한 xi의 j최상위 비트들을 포함한다.
한국 공개특허 특2003-0059500호는 SPN구조를 가지는 블록 암호를 이용한 유사난수 발생기에 관한 것이다. 즉, 본 발명에서 제안하는 유사난수 발생기에서는 종래 ANSI X9.17에서 제안하고 있는 블록 암호를 이용한 난수 발생기처럼 하나의 키에 타임스탬프를 쓰는 대신 유사난수 발생을 위해 사용되는 키 값을 업데이트시키는 업데이트 알고리즘을 통해 난수 발생시마다 키 값을 변경시킴으로써 난수성을 보다 강화시키는 이점이 있다. 또한 본 발명에서는 상기 키 값을 변경시킴에 있어서 키를 다시 생성하는 것이 아니라 기존에 생성된 키를 간단한 논리 연산을 통해 업데이트시킴으로써 효율성을 높일 수 있는 이점이 있으며, PC 뿐만 아니라 제한된 환경의 IC 카드 등과 같은 다양한 플랫폼에서도 모두 적용 가능하게 되는 이점이 있다.
한국 등록특허 제0712498호(2007.04.23) 한국 공개특허 제10-1999-0077585호(1999.10.25) 한국 공개특허 특2003-0059500호(2003.07.10)
본 발명의 일 실시예는 모든 메모리 블록을 가지고 있어야 난수 출력이 가능하도록 하여 병렬 컴퓨팅을 이용한 공격자의 복원 공격을 효과적으로 방어할 수 있는 메모리 과부하 난수 발생 장치 및 방법을 제공하고자 한다.
본 발명의 일 실시예는 공격자의 작업량을 대폭 증가시켜 공격을 현실적으로 불가능하게 만들어 보안을 향상시킬 수 있는 메모리 과부하 난수 발생 장치 및 방법을 제공하고자 한다.
실시예들 중에서, 메모리 과부하 난수 발생 장치는 N 개(상기 N은 2 이상의 자연수)의 메모리 블록들을 포함하는 메모리 블록부, 첫 번째부터 (j-1) 번째(상기 j는 2 이상의 자연수)까지의 메모리 블록에 있는 이전 메모리 값들과 현재 내부 상태를 기초로 j 번째 메모리 블록에 있는 현재 메모리 값을 산출하는 메모리 과부하 연산부 및 상기 현재 메모리 값 중 특정 비트블록에 관해 업데이트 연산을 수행하여 다음 메모리 값의 일부에 해당하는 다음 내부 상태를 갱신하는 내부 상태 갱신부를 포함한다.
상기 메모리 과부하 연산부는 현재 내부 상태를 기초로 첫 번째 메모리 블록에 있는 현재 메모리 값을 산출할 수 있다.
상기 메모리 과부하 연산부는 상기 첫 번째 메모리 블록에 있는 현재 메모리 값 산출 및 상기 다음 내부 상태 갱신이 종료되면 상기 j를 2에서부터 시작하여 상기 j가 상기 N과 같아질 때까지 1단위씩 증가시키면서 상기 j 번째 메모리 블록에 있는 현재 메모리 값 산출 및 상기 다음 내부 상태 갱신이 순차적으로 수행되도록 할 수 있다.
상기 메모리 과부하 연산부는 상기 j가 상기 N과 같아지면 상기 j 번째 메모리 블록에 있는 현재 메모리 값 산출을 수행하고, 상기 산출된 현재 메모리 값에 관해 특정 비트수로 모듈로 연산을 수행하여 생성된 난수를 최종적으로 출력할 수 있다.
상기 메모리 과부하 연산부는 상기 (j-1) 번째 메모리 블록에 있는 이전 메모리 값을 기초로 상기 첫 번째부터 (j-1) 번째까지의 메모리 블록 중에서 적어도 하나의 메모리 블록을 선택하고, 상기 선택된 메모리 블록에 있는 이전 메모리 값과 현재 내부 상태를 기초로 상기 j 번째 메모리 블록에 있는 현재 메모리 값을 산출할 수 있다.
상기 메모리 과부하 연산부는 상기 (j-1) 번째 메모리 블록에 있는 이전 메모리 값에 관해 제1 해시 연산을 수행하여 제1 해시 데이터를 생성하고, 상기 제1 해시 데이터를 기초로 적어도 하나의 인덱스(i)를 생성하여 상기 적어도 하나의 인덱스와 연관되고 적어도 하나의 메모리 블록에 있는 이전 메모리 값을 호출할 수 있다.
상기 메모리 과부하 연산부는 상기 호출된 적어도 하나의 메모리 블록에 있는 이전 메모리 값에 관해 제2 해시 연산을 수행하여 제2 해시 데이터를 생성하고, 상기 제2 해시 데이터와 상기 현재 내부 상태를 기초로 상기 j 번째 메모리 블록에 있는 현재 메모리 값을 산출할 수 있다.
상기 메모리 과부하 연산부는 상기 제1 해시 데이터를 기초로 두 개의 인덱스(i1, i2)를 생성하고, 상기 i1 번째 및 i2 번째 메모리 블록에 있는 이전 메모리 값들을 호출하여 상기 호출된 이전 메모리 값들에 관해 연접 연산을 수행하며, 상기 연접 연산에 따라 생성된 비트블록에 관해 상기 제2 해시 연산을 수행하여 상기 제2 해시 데이터를 생성할 수 있다.
상기 메모리 과부하 연산부는 상기 제2 해시 데이터에 현재 시각 정보를 포함하는 특정 비트블록 및 상기 현재 내부 상태에 관해 연접 연산을 수행하여 상기 j 번째 메모리 블록에 있는 현재 메모리 값을 산출할 수 있다.
상기 메모리 과부하 연산부는 상기 제1 해시 데이터의 일부에 해당하는 비트블록들 각각에 관해 모듈로 연산을 수행하여 상기 두 개의 인덱스(i1, i2)를 생성할 수 있다.
상기 메모리 과부하 연산부는 상기 제1 해시 데이터의 상위 및 하위 절반에 해당하는 비트블록들 각각에 관해 j로 모듈로 연산을 수행하여 0 이상 (j-1) 이하의 정수 중에서 하나의 값을 가지는 상기 두 개의 인덱스(i1, i2) 각각을 생성할 수 있다.
상기 메모리 과부하 연산부는 상기 제1 해시 데이터에 포함되는 특정 비트블록을 기초로 상기 두 개의 인덱스 중에서 i1을 생성하고, 상기 생성된 i1을 기초로 모듈로 연산을 수행하여 상기 두 개의 인덱스 중에서 i2를 생성할 수 있다.
상기 두 개의 인덱스(i1, i2)는 상호 간에 배타적인(exclusive) 관계를 가질 수 있다.
상기 메모리 과부하 연산부는 상기 제1 해시 데이터의 일부에 해당하는 비트블록들의 이진수 값에 관해 비트 단위로 논리 연산을 수행한 결과를 기초로 상기 두 개의 인덱스(i1, i2)를 생성할 수 있다.
상기 내부 상태 갱신부는 상기 j 번째 메모리 블록에 있는 현재 메모리 값이 산출되면 상기 다음 내부 상태를 갱신할 수 있다.
상기 내부 상태 갱신부는 상기 다음 내부 상태를 갱신할 때 입력 잡음원을 기초로 상기 업데이트 연산을 수행할 수 있다.
상기 내부 상태 갱신부는 상기 생성된 제2 해시 데이터를 기초로 상기 업데이트 연산을 수행하여 상기 다음 내부 상태를 갱신할 수 있다.
상기 현재 내부 상태는 상기 j가 1이면 초기 설정 및 현재 시각 정보를 포함하는 특정 비트 블록에 해당할 수 있다.
실시예들 중에서, 메모리 과부하 난수 발생 장치에 의해 수행되는 메모리 과부하 난수 발생 방법은 N 개(상기 N은 2 이상의 자연수)의 메모리 블록들을 준비하는 메모리 블록 준비 단계, 첫 번째부터 (j-1) 번째(상기 j는 2 이상의 자연수)까지의 메모리 블록에 있는 이전 메모리 값들과 현재 내부 상태를 기초로 j 번째 메모리 블록에 있는 현재 메모리 값을 산출하는 메모리 과부하 연산 단계 및 상기 현재 메모리 값 중 특정 비트블록에 관해 업데이트 연산을 수행하여 다음 메모리 값의 일부에 해당하는 다음 내부 상태를 갱신하는 내부 상태 갱신 단계를 포함한다.
개시된 기술은 다음의 효과를 가질 수 있다. 다만, 특정 실시예가 다음의 효과를 전부 포함하여야 한다거나 다음의 효과만을 포함하여야 한다는 의미는 아니므로, 개시된 기술의 권리범위는 이에 의하여 제한되는 것으로 이해되어서는 아니 될 것이다.
본 발명의 일 실시예에 따른 메모리 과부하 난수 발생 장치 및 방법은 모든 메모리 블록을 가지고 있어야 난수 출력이 가능하도록 하여 병렬 컴퓨팅을 이용한 공격자의 복원 공격을 효과적으로 방어할 수 있다.
본 발명의 일 실시예에 따른 메모리 과부하 난수 발생 장치 및 방법은 공격자의 작업량을 대폭 증가시켜 공격을 현실적으로 불가능하게 만들어 보안을 향상시킬 수 있다.
도 1은 본 발명의 일 실시예에 따른 메모리 과부하 난수 발생 장치의 구성도이다.
도 2는 도 1에 있는 메모리 과부하 난수 발생 장치에 의해 수행되는 메모리 과부하 난수 발생 방법의 일 실시예를 설명하는 순서도이다.
도 3은 도 1에 있는 메모리 과부하 난수 발생 장치에 의해 수행되는 메모리 과부하 난수 발생 방법의 다른 실시예를 설명하는 순서도이다.
본 발명에 관한 설명은 구조적 내지 기능적 설명을 위한 실시예에 불과하므로, 본 발명의 권리범위는 본문에 설명된 실시예에 의하여 제한되는 것으로 해석되어서는 아니 된다. 즉, 실시예는 다양한 변경이 가능하고 여러 가지 형태를 가질 수 있으므로 본 발명의 권리범위는 기술적 사상을 실현할 수 있는 균등물들을 포함하는 것으로 이해되어야 한다. 또한, 본 발명에서 제시된 목적 또는 효과는 특정 실시예가 이를 전부 포함하여야 한다거나 그러한 효과만을 포함하여야 한다는 의미는 아니므로, 본 발명의 권리범위는 이에 의하여 제한되는 것으로 이해되어서는 아니 될 것이다.
한편, 본 출원에서 서술되는 용어의 의미는 다음과 같이 이해되어야 할 것이다.
"제1", "제2" 등의 용어는 하나의 구성요소를 다른 구성요소로부터 구별하기 위한 것으로, 이들 용어들에 의해 권리범위가 한정되어서는 아니 된다. 예를 들어, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다.
어떤 구성요소가 다른 구성요소에 "연결되어"있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결될 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어"있다고 언급된 때에는 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 한편, 구성요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한 복수의 표현을 포함하는 것으로 이해되어야 하고, "포함하다"또는 "가지다" 등의 용어는 실시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이며, 하나 또는 그 이상의 다른 특징이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
각 단계들에 있어 식별부호(예를 들어, a, b, c 등)는 설명의 편의를 위하여 사용되는 것으로 식별부호는 각 단계들의 순서를 설명하는 것이 아니며, 각 단계들은 문맥상 명백하게 특정 순서를 기재하지 않는 이상 명기된 순서와 다르게 일어날 수 있다. 즉, 각 단계들은 명기된 순서와 동일하게 일어날 수도 있고 실질적으로 동시에 수행될 수도 있으며 반대의 순서대로 수행될 수도 있다.
본 발명은 컴퓨터가 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현될 수 있고, 컴퓨터가 읽을 수 있는 기록 매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록 장치를 포함한다. 컴퓨터가 읽을 수 있는 기록 매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피 디스크, 광 데이터 저장 장치 등이 있으며, 또한, 캐리어 웨이브(예를 들어 인터넷을 통한 전송)의 형태로 구현되는 것도 포함한다. 또한, 컴퓨터가 읽을 수 있는 기록 매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산 방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다.
여기서 사용되는 모든 용어들은 다르게 정의되지 않는 한, 본 발명이 속하는 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한 이상적이거나 과도하게 형식적인 의미를 지니는 것으로 해석될 수 없다.
도 1은 본 발명의 일 실시예에 따른 메모리 과부하 난수 발생 장치의 구성도이다.
도 1을 참조하면, 본 발명의 일 실시예에 따른 메모리 과부하 난수 발생 장치(100)는 메모리 블록부(110), 제어부(120), 메모리 과부하 연산부(130) 및 내부 상태 갱신부(140)를 포함한다.
메모리 과부하 난수 발생 장치(100)는 모든 메모리 블록을 가지고 있어야 난수 출력이 가능한 난수 생성 장치에 해당하고, 임의의 잡음원에 의해 갱신되는 내부 상태를 기초로 의사(Pseudo) 난수를 생성할 수 있다. 실시예에서, 메모리 과부하 난수 발생 장치(100)는 데스크톱, 태블릿 PC, 노트북 또는 스마트폰 등으로 구현되어 난수를 생성하는 컴퓨팅 장치에 해당할 수 있다. 여기에서, 의사 난수는 컴퓨터에 의해 만들어지는 난수로서, 처음에 주어지는 초기값을 이용하여 이미 결정되어 있는 메커니즘에 의해 생성되는 수를 의미하고, 내부 상태는 메모리 과부하 난수 발생 장치(100)에 의해 관리되고 있는 메모리 값을 의미할 수 있다. 임의의 잡음원에 의해 갱신되는 내부상태로 인해 메모리 과부하 난수 발생 장치(100)는 매번 다른 난수를 추출하여 사용할 수 있다. 메모리 과부하 난수 발생 장치(100)는 메모리 블록부(110), 제어부(120), 메모리 과부하 연산부(130) 및 내부 상태 갱신부(140)를 포함할 수 있고, 이들 간에 전기적 신호를 송수신하도록 설계될 수 있다.
메모리 블록부(110)는 메모리 과부하 난수 발생 장치(100)에 설치된 로컬 저장장치에 해당할 수 있고, 휘발성 메모리 또는 비휘발성 메모리로 구성될 수 있다. 여기에서, 휘발성 메모리는 저장된 정보를 유지하기 위해 전기를 요구하는 컴퓨터 메모리를 말하고, 비휘발성 메모리는 시스템에서 전원이 공급되지 않아도 내부 정보가 지워지지 않는 메모리를 말한다.
메모리 블록부(110)는 N 개의 메모리 블록들(115)을 포함할 수 있다. 여기에서, 상기 N은 2 이상의 자연수에 해당하고, 당업자에 의해 미리 설정될 수 있다. 일 실시예에서, N 개의 메모리 블록들(115) 각각은 메모리 과부하 난수 발생 장치(100)의 난수 발생 과정에서 생성되는 메모리 값들을 저장하기 위하여 메모리 블록부(110)가 가지는 전체 메모리 공간을 N 개 혹은 특정 비트 수로 분할한 하나의 사용 공간에 해당할 수 있다.
제어부(120)는 메모리 과부하 난수 발생 장치(100)의 전반적인 동작을 제어하고, 메모리 블록부(110), 메모리 과부하 연산부(130) 및 내부 상태 갱신부(140)와 전기적으로 연결되어 있어 상호 간의 제어 흐름 또는 데이터 흐름을 제어할 수 있다.
메모리 과부하 연산부(130)는 첫 번째부터 (j-1) 번째(상기 j는 2 이상의 자연수)까지의 메모리 블록(115a, 115b, …, 115c)에 있는 이전 메모리 값들과 현재 내부 상태를 기초로 j 번째 메모리 블록(115d)에 있는 현재 메모리 값을 산출할 수 있다. 일 실시예에서, 메모리 블록부(110)에 포함되는 10개의 메모리 블록들(115)을 중에서 7 번째 메모리 블록(115d)에 있는 현재 메모리 값을 산출하는 경우 1 ~ 6 번째 메모리 블록(115a, 115b, …, 115c)에 있는 이전 메모리 값들과 현재 내부 상태를 기초로 해당 현재 메모리 값을 산출할 수 있다.
메모리 과부하 연산부(130)는 현재 내부 상태를 기초로 첫 번째 메모리 블록에 있는 현재 메모리 값을 산출할 수 있다. 일 실시예에서, j가 1이면, 즉, 첫 번째 메모리 블록에 있는 현재 메모리 값을 산출 시 현재 내부 상태는 초기 설정 및 현재 시각 정보를 포함하는 특정 비트 블록에 해당할 수 있다. 메모리 과부하 연산부(130)에서 현재 메모리 값을 산출하면, 다음 메모리 블록에 있는 메모리 값 산출 시의 랜덤성을 위하여 내부 상태 갱신부(140)는 다음 내부 상태를 갱신할 수 있다. 내부 상태 갱신에 대한 내용은 내부 상태 갱신부(140)의 상세한 설명에서 자세히 서술하도록 한다.
메모리 과부하 연산부(130)는 첫 번째 메모리 블록에 있는 현재 메모리 값 산출 및 다음 내부 상태 갱신이 종료되면 j를 2에서부터 시작하여 j가 상기 N과 같아질 때까지 1단위씩 증가시키면서 j 번째 메모리 블록에 있는 현재 메모리 값 산출 및 상기 다음 내부 상태 갱신을 순차적으로 수행할 수 있다. 일 실시예에서, 메모리 과부하 연산부(130)는 메모리 블록부(110)에 포함되는 10개의 메모리 블록들(115) 중에서 현재 내부 상태를 기초로 가장 먼저 1 번째 메모리 블록(115a)에 있는 현재 메모리 값을 산출할 수 있고, 내부 상태 갱신부(140)에 의해 다음 내부 상태 갱신이 종료되면 1 번째 메모리 블록(115a)에 있는 이전 메모리 값과 앞서 갱신된 현재 내부 상태를 기초로 2 번째 메모리 블록(115b)에 있는 현재 메모리 값을 산출할 수 있으며, 내부 상태 갱신부(140)에 의해 다음 내부 상태 갱신이 종료되면 앞서 산출된 1 ~ 2 번째 메모리 블록(115a, 115b)에 있는 현재 메모리 값들과 앞서 갱신된 현재 내부 상태를 기초로 3 번째 메모리 블록에 있는 현재 메모리 값을 산출할 수 있고, 이러한 과정을 10 번째 메모리 블록(115e)에 있는 현재 메모리 값을 산출할 때까지 순차적으로 반복하여 수행할 수 있다.
메모리 과부하 연산부(130)는 j가 N과 같아지면 j 번째 메모리 블록에 있는 현재 메모리 값 산출을 수행하고, 산출된 현재 메모리 값에 관해 특정 비트수로 모듈로 연산을 수행하여 생성된 난수를 최종적으로 출력할 수 있다. 일 실시예에서, 10 개의 메모리 블록들(115)을 통해 8 바이트의 난수를 생성하려고 하는 경우, 메모리 과부하 연산부(130)는 메모리 블록부(110)에 포함되는 10개의 메모리 블록들(115) 중에서 1 ~ 10 번째 메모리 블록에 있는 현재 메모리 값들 각각을 이전 메모리 값들을 기초로 순차적으로 산출한 뒤 가장 마지막으로 산출된 10 번째 메모리 블록(115e)에 있는 현재 메모리 값의 십진수 값을 256(=28)로 모듈로 연산하여 생성된 난수를 최종적으로 출력할 수 있다(난수 = 산출된 10 번째 메모리 블록(115e)에 있는 현재 메모리 값 modulo 256).
메모리 과부하 연산부(130)는 (j-1) 번째 메모리 블록에 있는 이전 메모리 값을 기초로 첫 번째부터 (j-1) 번째까지의 메모리 블록 중에서 적어도 하나의 메모리 블록을 선택하고, 선택된 메모리 블록에 있는 이전 메모리 값과 현재 내부 상태를 기초로 j 번째 메모리 블록에 있는 현재 메모리 값을 산출할 수 있다. 일 실시예에서, 메모리 과부하 연산부(130)는 메모리 블록부(110)에 포함되는 10개의 메모리 블록들(115) 중에서 7 번째 메모리 블록(115d)에 있는 현재 메모리 값을 산출하려는 경우 6 번째 메모리 블록(115c)에 있는 이전 메모리 값을 기초로 특정 연산을 수행하여 1 ~ 6 번째 메모리 블록(115a, 115b, …, 115c) 중에서 두 개의 메모리 블록을 선택할 수 있고, 선택된 두 개의 메모리 블록에 있는 현재 메모리 값들을 산출하여 이를 기초로 7 번째 메모리 블록(115d)에 있는 현재 메모리 값을 산출할 수 있다.
메모리 과부하 연산부(130)는 (j-1) 번째 메모리 블록에 있는 이전 메모리 값에 관해 제1 해시 연산을 수행하여 제1 해시 데이터를 생성하고, 제1 해시 데이터를 기초로 적어도 하나의 인덱스(i)를 생성하여 적어도 하나의 인덱스와 연관되고 적어도 하나의 메모리 블록에 있는 이전 메모리 값을 호출할 수 있다. 또한, 메모리 과부하 연산부(130)는 상기 호출된 적어도 하나의 메모리 블록에 있는 이전 메모리 값에 관해 제2 해시 연산을 수행하여 제2 해시 데이터를 생성하고, 제2 해시 데이터와 현재 내부 상태를 기초로 j 번째 메모리 블록에 있는 현재 메모리 값을 산출할 수 있다. 일 실시예에서, 제1 및 제2 해시 연산은 임의의 길이의 데이터를 고정된 길이의 데이터로 매핑하는 해시(hash) 알고리즘을 기초로 수행될 수 있고, 그 중에서도 SHA(Secure Hash Algorithm, 안전한 해시 알고리즘)와 같은 암호학적 해시 알고리즘을 기초로 수행될 수 있다. 일 실시예에서, 메모리 과부하 연산부(130)는 7 번째 메모리 블록(115d)에 있는 현재 메모리 값을 산출하려는 경우 6 번째 메모리 블록에 있는 이전 메모리 값을 입력으로 제1 해시 연산을 수행하여 4 바이트 길이를 가지는 제1 해시 데이터를 생성할 수 있고, 제1 해시 데이터를 기초로 2 개의 인덱스를 생성하여 인덱스의 값(예를 들어, 3과 5라면)에 따라 3 및 5 번째 메모리 블록에 있는 이전 메모리 값들을 호출할 수 있다. 메모리 과부하 연산부(130)는 이렇게 호출된 3 및 5 번째 메모리 블록에 있는 이전 메모리 값들을 기초로 제2 해시 연산을 수행하여 5 바이트 길이를 가지는 제2 해시 데이터를 생성할 수 있고, 생성된 제2 해시 데이터 및 현재 내부 상태를 기초로 7 번째 메모리 블록(115d)에 있는 현재 메모리 값을 산출할 수 있다.
메모리 과부하 연산부(130)는 제1 해시 데이터를 기초로 두 개의 인덱스(i1, i2)를 생성하고, i1 번째 및 i2 번째 메모리 블록에 있는 이전 메모리 값들을 호출하여 호출된 이전 메모리 값들에 관해 연접 연산을 수행하며, 연접 연산에 따라 생성된 비트블록에 관해 제2 해시 연산을 수행하여 제2 해시 데이터를 생성할 수 있다. 여기에서, 연접(Concatenation)은 적어도 두 개의 입력들을 비트 단위로 연이어 붙이는 것을 말한다.
메모리 과부하 연산부(130)는 제1 해시 데이터의 일부에 해당하는 비트블록들 각각에 관해 모듈로 연산을 수행하여 두 개의 인덱스(i1, i2)를 생성할 수 있다. 일 실시예에서, 메모리 과부하 연산부(130)는 제1 해시 데이터의 상위 및 하위 절반에 해당하는 비트블록들 각각에 관해 j로 모듈로 연산을 수행하여 0 이상 (j-1) 이하의 정수 중에서 하나의 값을 가지는 두 개의 인덱스(i1, i2) 각각을 생성할 수 있다. 예를 들어, 메모리 과부하 연산부(130)는 7 번째 메모리 블록(115d)에 있는 현재 메모리 값을 산출하는 과정에서 제1 해시 데이터의 상위 절반 및 하위 절반에 해당하는 두 비트블록의 십진수 값을 각각 7로 모듈로 연산하여 두 개의 인덱스(i1, i2)를 각각 3과 5로 생성할 수 있고, 이에 따라 3 번째 및 5 번째 메모리 블록에 있는 이전 메모리 값들을 연접한 데이터를 제2 해시 연산의 입력으로 사용하여 5 바이트 길이를 가지는 제2 해시 데이터를 생성할 수 있다.
메모리 과부하 연산부(130)는 제2 해시 데이터에 현재 시각 정보를 포함하는 특정 비트블록 및 현재 내부 상태에 관해 연접 연산을 수행하여 j 번째 메모리 블록에 있는 현재 메모리 값을 산출할 수 있다. 일 실시예에서, 메모리 과부하 연산부(130)는 7 번째 메모리 블록(115d)에 있는 현재 메모리 값을 산출하는 과정에서 생성된 5 바이트 길이의 제2 해시 데이터에 1 바이트 길이의 컴퓨터 CPU(Central Processing Unit, 중앙처리장치) 클럭 주기, 1 바이트 길이의 현재 시각 및 10 바이트 길이의 현재 내부 상태를 연접하여 7 번째 메모리 블록(115d)에 있는 현재 메모리 값으로 출력할 수 있다.
다른 실시예에서, 메모리 과부하 연산부(130)는 제1 해시 데이터에 포함되는 특정 비트블록을 기초로 두 개의 인덱스 중에서 i1을 생성하고, 상기 생성된 i1을 기초로 모듈로 연산을 수행하여 두 개의 인덱스 중에서 i2를 생성할 수 있다. 해당 실시예에서, 메모리 과부하 연산부(130)는 하기의 연산식 1을 기초로 두 개의 인덱스(i1, i2)를 생성할 수 있다.
[연산식 1]
Figure 112016075420492-pat00001
(여기에서, i1과 i2는 상기 두 개의 인덱스에 해당하고, HD1는 제1 해시 데이터에 해당하며, j는 N 개의 메모리 블록들 중에서 현재 메모리 값을 산출하려고 하는 메모리 블록이 몇 번째에 위치하고 있는지를 나타내는 2 이상의 자연수이고, modulo는 나눗셈의 나머지를 계산하는 수학적 연산으로, 예를 들면, 37 modulo 6 = 1 이다)
다른 실시예에서, 두 개의 인덱스(i1, i2)는 상호 간에 배타적인(exclusive) 관계를 가질 수 있다. 해당 실시예에서, 메모리 과부하 연산부(130)는 먼저 생성한 인덱스 i1을 기초로 인덱스 i2를 생성하였으나 두 인덱스가 같으면(i1 = i2) 인덱스 i1에 특정 사칙 연산을 수행한 뒤 j로 모듈로 연산하여 다시 인덱스 i2를 생성할 수 있고, 두 개의 인덱스(i1, i2)가 같지 않아질 때까지 이러한 과정을 반복할 수 있다. 해당 실시예에서, 메모리 과부하 연산부(130)는 하기의 연산식 2를 기초로 두 개의 인덱스(i1, i2)를 생성할 수 있다.
[연산식 2]
Figure 112016075420492-pat00002
다른 실시예에서, 메모리 과부하 연산부(130)는 제1 해시 데이터의 일부 비트블록에 해당하는 이진수에 관해 비트 단위로 논리 연산을 수행한 결과를 기초로 두 개의 인덱스(i1, i2)를 생성할 수 있다. 해당 실시예에서, 메모리 과부하 연산부(130)는 하기의 연산식 3을 기초로 두 개의 인덱스(i1, i2)를 생성할 수 있다. 예를 들어, 메모리 과부하 연산부(130)는 제1 해시 데이터의 상위 및 하위 절반에 해당하는 두 비트블록들의 이진수 값에 관해 비트 단위로 XOR(Exclusive OR, 배타적 논리합)과 XNOR(Exclusive NOR, 배타적 부정 논리합) 연산을 수행하고, 해당 연산 결과들의 십진수 값을 각각 j로 모듈로 연산하여 두 개의 인덱스(i1, i2)를 생성할 수 있다.
[연산식 3]
Figure 112016075420492-pat00003
(여기에서, HD1U 및 HD1D는 각각 제1 해시 데이터의 상위 및 하위 절반에 해당하는 비트블록의 이진수 값에 해당하고, XOR는 배타적 논리합을 의미하고, XNOR는 배타적 부정 논리합을 의미함)
내부 상태 갱신부(140)는 현재 메모리 값 중 특정 비트블록에 관해 업데이트 연산을 수행하여 다음 메모리 값의 일부에 해당하는 다음 내부 상태를 갱신할 수 있다. 일 실시예에서, 내부 상태 갱신부(140)는 j 번째 메모리 블록에 있는 현재 메모리 값이 산출되면 다음 내부 상태를 갱신할 수 있다. 내부 상태 갱신부(140)는 이러한 방식으로 메모리 블록들(115) 각각에 대한 현재 메모리 값 산출 과정에서 매번 갱신된 내부 상태를 사용할 수 있도록 한다. 상기에서, 현재 메모리 값 중 특정 비트블록은 산출된 j 번째 메모리 블록에 있는 현재 메모리 값의 특정 비트 블록에 저장되어 있는 현재 내부 상태를 의미한다.
이러한 업데이트 연산은 입력 정보를 기초로 내부 상태를 갱신하는 업데이트 알고리즘을 기초로 수행될 수 있다. 일 실시예에서, 내부 상태 갱신부(140)는 생성된 제2 해시 데이터를 기초로 업데이트 연산을 수행하여 다음 내부 상태를 갱신할 수 있다. 일 실시예에서, 내부 상태 갱신부(140)는 다음 내부 상태를 갱신할 때 입력 잡음원을 기초로 업데이트 연산을 수행할 수 있다. 예를 들어, 내부 상태 갱신부(140)는 j 번째 메모리 블록에 있는 현재 메모리 값이 산출되면 기 생성된 제2 해시 데이터 및 입력 잡음원을 입력으로 업데이트 연산을 수행하여 다음 내부 상태를 갱신할 수 있고, 이에 따라 메모리 과부하 연산부(130)에서 (j+1) 번째 메모리 블록에 있는 현재 메모리 값을 산출할 때 해당되는 현재 내부 상태가 갱신되어 있도록 지원할 수 있다.
도 2는 도 1에 있는 메모리 과부하 난수 발생 장치에 의해 수행되는 메모리 과부하 난수 발생 방법의 일 실시예를 설명하는 순서도이다.
도 2에서, 메모리 과부하 난수 발생 방법은 크게 다음의 단계들을 포함한다.
첫 번째로, 메모리 과부하 난수 발생 방법은 N 개의 메모리 블록들을 준비하는 메모리 블록 준비 단계를 포함할 수 있다(단계S210).
두 번째로, 메모리 과부하 난수 발생 방법은 첫 번째부터 (j-1) 번째까지의 메모리 블록에 있는 이전 메모리 값들과 현재 내부 상태를 기초로 j 번째 메모리 블록에 있는 현재 메모리 값을 산출하는 메모리 과부하 연산 단계를 포함할 수 있다(단계S220).
세 번째로, 메모리 과부하 난수 발생 방법은 현재 메모리 값 중 특정 비트블록에 관해 업데이트 연산을 수행하여 다음 메모리 값의 일부에 해당하는 다음 내부 상태를 갱신하는 내부 상태 갱신 단계를 포함할 수 있다(단계S230).
도 3은 도 1에 있는 메모리 과부하 난수 발생 장치에 의해 수행되는 메모리 과부하 난수 발생 방법의 다른 실시예를 설명하는 순서도이다.
도 3a 및 도 3b에서, 메모리 과부하 난수 발생 방법은 다음의 단계들을 포함할 수 있다.
첫 번째로, 메모리 과부하 난수 발생 방법은 N 개의 메모리 블록들을 준비하는 메모리 블록 준비 단계를 포함할 수 있다(단계S310).
두 번째로, 메모리 과부하 난수 발생 방법은 현재 내부 상태를 기초로 첫 번째 메모리 블록에 있는 현재 메모리 값을 산출하는 단계 및 현재 메모리 값이 산출되면 다음 내부 상태를 갱신하는 단계를 포함할 수 있다(단계S320).
세 번째로, 메모리 과부하 난수 발생 방법은 j 번째 메모리 블록에 있는 현재 메모리 값을 산출하기 위하여 (j-1) 번째 메모리 블록에 있는 이전 메모리 값을 기초로 제1 해시 연산을 수행하여 제1 해시 데이터 생성하는 단계를 포함할 수 있다(단계S330).
네 번째로, 메모리 과부하 난수 발생 방법은 단계S330을 통해 생성된 제1 해시 데이터의 상위 및 하위 절반에 해당하는 비트블록들을 각각 모듈로 연산하여 두 개의 인덱스(i1, i2)를 생성하는 단계를 포함할 수 있다(단계S340).
다섯 번째로, 메모리 과부하 난수 발생 방법은 단계S340을 통해 생성된 두 개의 인덱스를 이용하여 i1 및 i2 번째 메모리 블록에 있는 이전 메모리 값들을 호출하고, 해당 이전 메모리 값들을 기초로 제2 해시 연산을 수행하여 제2 해시 데이터 생성하는 단계를 포함할 수 있다(단계S350).
여섯 번째로, 메모리 과부하 난수 발생 방법은 단계S350을 통해 생성된 제2 해시 데이터 및 현재 내부 상태를 기초로 j 번째 메모리 블록에 있는 현재 메모리 값을 산출하는 단계를 포함할 수 있다(단계S360).
일곱 번째로, 메모리 과부하 난수 발생 방법은 단계S360을 통해 j 번째 메모리 블록에 있는 현재 메모리 값이 산출되면 기 생성된 제2 해시 데이터를 기초로 다음 내부 상태를 업데이트하는 단계를 포함할 수 있다(단계S370).
여덟 번째로, 메모리 과부하 난수 발생 방법은 상기 j를 2부터 시작하여 2≤≤j≤≤N 동안 j를 1씩 증가시키면서 단계S330~S370의 동작을 반복하여 수행하는 단계를 포함할 수 있다(단계S380).
마지막으로, 메모리 과부하 난수 발생 방법은 상기 j가 N과 같아지면 산출된 N 번째 메모리 블록에 있는 현재 메모리 값을 기초로 난수를 생성하여 최종적으로 출력하는 단계를 포함할 수 있다(단계S390).
일 실시예에서, 메모리 과부하 난수 발생 방법은 10 개의 메모리 블록들(115)을 통해 128 바이트의 난수를 생성하려는 경우, 1 ~ 10 번째 메모리 블록에 있는 현재 메모리 값들 각각을 이전 메모리 값들을 기초로 순차적으로 산출한 뒤 가장 마지막으로 산출된 10 번째 메모리 블록(115e)에 있는 현재 메모리 값을 128로 모듈로 연산하여 생성된 난수를 최종적으로 출력하는 단계를 포함할 수 있다.
상기에서는 본 발명의 바람직한 실시예를 참조하여 설명하였지만, 해당 기술 분야의 숙련된 당업자는 하기의 특허 청구의 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.
100: 메모리 과부하 난수 발생 장치
110: 메모리 블록부
115: N 개의 메모리 블록들
115a: 1 번째 메모리 블록
115b: 2 번째 메모리 블록
115c: (j-1) 번째 메모리 블록
115d: j 번째 메모리 블록
115e: N 번째 메모리 블록
120: 제어부
130: 메모리 과부하 연산부
140: 내부 상태 갱신부

Claims (19)

  1. N 개(상기 N은 2 이상의 자연수)의 메모리 블록들을 포함하는 메모리 블록부;
    첫 번째부터 (j-1) 번째(상기 j는 2 이상의 자연수)까지의 메모리 블록에 있는 이전 메모리 값들 중 적어도 일부에 대해 산술 연산을 수행하여 제1 데이터를 생성하고, 상기 제1 데이터와 현재 내부 상태에 대해 산술 연산을 수행하여 제2 데이터를 생성하며, 상기 제2 데이터를 j 번째 메모리 블록에 있는 현재 메모리 값으로 산출하는 메모리 과부하 연산부; 및
    상기 현재 메모리 값을 기초로 다음 내부 상태를 갱신하는 내부 상태 갱신부를 포함하는 메모리 과부하 난수 발생 장치.
  2. 제1항에 있어서, 상기 메모리 과부하 연산부는
    초기화 단계에서 초기 설정 데이터와 해당 단계에서의 현재 내부 상태에 대해 산술 연산을 수행하여 상기 첫 번째의 메모리 블록에 있는 메모리 값을 산출하는 것을 특징으로 하는 메모리 과부하 난수 발생 장치.
  3. 제2항에 있어서, 상기 메모리 과부하 연산부는
    상기 초기화 단계가 종료되면 상기 j를 2에서부터 시작하여 1단위씩 증가시키면서 상기 j가 상기 N과 같아질 때까지 상기 j 번째 메모리 블록에 있는 현재 메모리 값의 산출 및 상기 다음 내부 상태의 갱신이 순차적으로 반복 수행되도록 하여 두 번째부터 상기 N 번째 메모리 블록에 있는 메모리 값들을 순차적으로 산출하는 것을 특징으로 하는 메모리 과부하 난수 발생 장치.
  4. 제3항에 있어서, 상기 메모리 과부하 연산부는
    상기 j가 상기 N과 같아지면 상기 j 번째 메모리 블록에 있는 현재 메모리 값 산출을 수행한 후에 해당 산출된 현재 메모리 값과 특정 비트수에 대한 모듈로(modulo) 연산을 수행하여 생성된 난수를 최종적으로 출력하는 것을 특징으로 하는 메모리 과부하 난수 발생 장치
  5. 제1항에 있어서, 상기 메모리 과부하 연산부는
    상기 제1 데이터를 기초로 상기 첫 번째부터 (j-1) 번째까지의 메모리 블록 중에서 적어도 하나의 메모리 블록을 선택하고, 상기 선택된 적어도 하나의 메모리 블록에 있는 이전 메모리 값과 현재 내부 상태에 대한 산술 연산을 통해 상기 제2 데이터를 생성하는 것을 특징으로 하는 메모리 과부하 난수 발생 장치.
  6. 제5항에 있어서, 상기 메모리 과부하 연산부는
    상기 (j-1) 번째 메모리 블록에 있는 이전 메모리 값에 관해 제1 해시 연산을 수행하여 제1 해시 데이터를 생성하고, 상기 제1 해시 데이터를 기초로 적어도 하나의 인덱스(i)를 생성하여 상기 적어도 하나의 인덱스와 연관되고 적어도 하나의 메모리 블록에 있는 이전 메모리 값을 호출하는 것을 특징으로 하는 메모리 과부하 난수 발생 장치.
  7. 제6항에 있어서, 상기 메모리 과부하 연산부는
    상기 호출된 적어도 하나의 메모리 블록에 있는 이전 메모리 값에 관해 제2 해시 연산을 수행하여 제2 해시 데이터를 생성하고, 상기 제2 해시 데이터와 상기 현재 내부 상태를 기초로 상기 제2 데이터를 생성하는 것을 특징으로 하는 메모리 과부하 난수 발생 장치.
  8. 제7항에 있어서, 상기 메모리 과부하 연산부는
    상기 제1 해시 데이터를 기초로 두 개의 인덱스(i1, i2)를 생성하고, 상기 i1 번째 및 i2 번째 메모리 블록에 있는 이전 메모리 값들을 호출하여 상기 호출된 이전 메모리 값들에 관해 연접 연산을 수행하며, 상기 연접 연산에 따라 생성된 비트블록에 관해 상기 제2 해시 연산을 수행하여 상기 제2 해시 데이터를 생성하는 것을 특징으로 하는 메모리 과부하 난수 발생 장치.
  9. 제7항에 있어서, 상기 메모리 과부하 연산부는
    상기 제2 해시 데이터에 현재 시각 정보를 포함하는 특정 비트블록 및 상기 현재 내부 상태에 관해 연접 연산을 수행하여 상기 제2 데이터를 생성하는 것을 특징으로 하는 메모리 과부하 난수 발생 장치.
  10. 제8항에 있어서, 상기 메모리 과부하 연산부는
    상기 제1 해시 데이터의 일부에 해당하는 비트블록들 각각에 관해 모듈로 연산을 수행하여 상기 두 개의 인덱스(i1, i2)를 생성하는 것을 특징으로 하는 메모리 과부하 난수 발생 장치.
  11. 제10항에 있어서, 상기 메모리 과부하 연산부는
    상기 제1 해시 데이터의 상위 및 하위 절반에 해당하는 비트블록들 각각에 관해 j로 모듈로 연산을 수행하여 0 이상 (j-1) 이하의 정수 중에서 하나의 값을 가지는 상기 두 개의 인덱스(i1, i2) 각각을 생성하는 것을 특징으로 하는 메모리 과부하 난수 발생 장치.
  12. 제8항에 있어서, 상기 메모리 과부하 연산부는
    상기 제1 해시 데이터에 포함되는 특정 비트블록을 기초로 상기 두 개의 인덱스 중에서 i1을 생성하고, 상기 생성된 i1을 기초로 모듈로 연산을 수행하여 상기 두 개의 인덱스 중에서 i2를 생성하는 것을 특징으로 하는 메모리 과부하 난수 발생 장치.
  13. 제8항에 있어서, 상기 두 개의 인덱스(i1, i2)는
    상호 간에 배타적인(exclusive) 관계를 가지는 것을 특징으로 하는 메모리 과부하 난수 발생 장치.
  14. 제8항에 있어서, 상기 메모리 과부하 연산부는
    상기 제1 해시 데이터의 일부에 해당하는 비트블록들의 이진수 값에 관해 비트 단위로 논리 연산을 수행한 결과를 기초로 상기 두 개의 인덱스(i1, i2)를 생성하는 것을 특징으로 하는 메모리 과부하 난수 발생 장치.
  15. 제1항에 있어서, 상기 내부 상태 갱신부는
    상기 j 번째 메모리 블록에 있는 현재 메모리 값이 산출되면 상기 다음 내부 상태를 갱신하는 것을 특징으로 하는 메모리 과부하 난수 발생 장치.
  16. 제1항에 있어서, 상기 내부 상태 갱신부는
    상기 다음 내부 상태를 갱신할 때 입력 잡음원을 기초로 업데이트 연산을 수행하는 것을 특징으로 메모리 과부하 난수 발생 장치.
  17. 제7항에 있어서, 상기 내부 상태 갱신부는
    상기 생성된 제2 해시 데이터를 기초로 업데이트 연산을 수행하여 상기 다음 내부 상태를 갱신하는 것을 특징으로 하는 메모리 과부하 난수 발생 장치.
  18. 삭제
  19. 메모리 과부하 난수 발생 장치에 의해 수행되는 메모리 과부하 난수 발생 방법에 있어서,
    N 개(상기 N은 2 이상의 자연수)의 메모리 블록들을 준비하는 메모리 블록 준비 단계;
    첫 번째부터 (j-1) 번째(상기 j는 2 이상의 자연수)까지의 메모리 블록에 있는 이전 메모리 값들 중 적어도 일부에 대해 산술 연산을 수행하여 제1 데이터를 생성하고, 상기 제1 데이터와 현재 내부 상태에 대해 산술 연산을 수행하여 제2 데이터를 생성하며, 상기 제2 데이터를 j 번째 메모리 블록에 있는 현재 메모리 값으로 산출하는 메모리 과부하 연산 단계; 및
    상기 현재 메모리 값을 기초로 다음 내부 상태를 갱신하는 내부 상태 갱신 단계를 포함하는 메모리 과부하 난수 발생 방법.
KR1020160098751A 2016-08-03 2016-08-03 메모리 과부하 난수 발생 장치 및 방법 KR101833954B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020160098751A KR101833954B1 (ko) 2016-08-03 2016-08-03 메모리 과부하 난수 발생 장치 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160098751A KR101833954B1 (ko) 2016-08-03 2016-08-03 메모리 과부하 난수 발생 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20180015362A KR20180015362A (ko) 2018-02-13
KR101833954B1 true KR101833954B1 (ko) 2018-04-13

Family

ID=61231737

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160098751A KR101833954B1 (ko) 2016-08-03 2016-08-03 메모리 과부하 난수 발생 장치 및 방법

Country Status (1)

Country Link
KR (1) KR101833954B1 (ko)

Also Published As

Publication number Publication date
KR20180015362A (ko) 2018-02-13

Similar Documents

Publication Publication Date Title
US11159305B2 (en) Homomorphic data decryption method and apparatus for implementing privacy protection
JP5957120B1 (ja) 秘密分散方法、秘密分散システム、分散装置、およびプログラム
JP4559505B2 (ja) ランダム系列の反復周期の拡張
JPWO2016113886A1 (ja) 乱数拡大装置、乱数拡大方法及び乱数拡大プログラム
JP6044738B2 (ja) 情報処理装置、プログラム及び記憶媒体
CN1677917A (zh) 基于循环缓冲的流式密码设计
US20180241544A1 (en) Message authenticator generating apparatus, message authenticator generating method, and computer readable recording medium
JP7031682B2 (ja) 秘密計算装置、システム、方法、プログラム
CN111444518A (zh) 安全处理器及其操作方法、加密或解密数据的方法
AU2021200063B2 (en) Systems and computer-implemented methods for generating pseudo random numbers
KR101833954B1 (ko) 메모리 과부하 난수 발생 장치 및 방법
JP2011123356A (ja) 素数生成装置、素数生成方法、及び素数生成プログラム
JP2010044251A (ja) ハッシュ値生成装置、プログラム及びハッシュ値生成方法
KR20230078510A (ko) 동형 암호 연산 장치 및 방법
JPWO2016056502A1 (ja) 非減少列判定装置、非減少列判定方法及びプログラム
US9842086B2 (en) Calculation device, calculation method, and program
CN114244517A (zh) 数据加密及签名方法、装置、计算机设备和存储介质
CN115801227B (zh) 一种生成置换表的方法及装置
CN116186745B (zh) 哈希加密方法、非易失性可读存储介质及电子设备
KR102491902B1 (ko) 완전동형암호 기법으로 암호화된 데이터의 연산을 위한 장치 및 방법
CN117353923B (zh) 轻量级哈希加密算法的演练方法及相关设备
CN116243887B (zh) 软件随机数生成方法及装置
US11237800B2 (en) Time-shifted seed for random number generator
JP6904417B2 (ja) 乱数算出装置、乱数算出方法、暗号装置、及び、乱数算出プログラム
Ziani et al. CFA: A New Family of Hybrid CA‐Based PRNGs

Legal Events

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