KR101237104B1 - 의사 난수 생성기에 대한 초기 시드 관리 - Google Patents

의사 난수 생성기에 대한 초기 시드 관리 Download PDF

Info

Publication number
KR101237104B1
KR101237104B1 KR1020097024254A KR20097024254A KR101237104B1 KR 101237104 B1 KR101237104 B1 KR 101237104B1 KR 1020097024254 A KR1020097024254 A KR 1020097024254A KR 20097024254 A KR20097024254 A KR 20097024254A KR 101237104 B1 KR101237104 B1 KR 101237104B1
Authority
KR
South Korea
Prior art keywords
seed
pseudo random
random number
number generator
file
Prior art date
Application number
KR1020097024254A
Other languages
English (en)
Other versions
KR20100003301A (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 KR20100003301A publication Critical patent/KR20100003301A/ko
Application granted granted Critical
Publication of KR101237104B1 publication Critical patent/KR101237104B1/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/582Pseudo-random number generators
    • 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
    • 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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0869Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Storage Device Security (AREA)
  • Retry When Errors Occur (AREA)

Abstract

사전-저장된 초기화 시드를 이용함으로써 의사 난수 생성기에 대한 안전한 시딩 및 리시딩 방식이 제공된다. 이 방식은 엔트로피 수집이 이용불가능한 경우에도 의사 난수 생성기를 알려지지 않은 상태로 초기화한다. 주 시드 파일 및 섀도 시드 파일은 안전한 파일 시스템에 초기화 시드 정보로 유지된다. 주 시드 파일이 손상되면, 의사 난수 생성기에 섀도 시드 파일의 컨텐츠가 시딩된다. 추가적으로, 사전-저장된 시드 정보가 손상된 경우에도 신뢰 타이머 또는 클록은 사전-저장된 시드 정보와 믹싱되어 엔트로피를 추가할 수도 있다.
초기화 시드, 의사 난수 생성기, 주 시드 파일, 섀도 시드 파일, 안전한 파일 시스템

Description

의사 난수 생성기에 대한 초기 시드 관리{INITIAL SEED MANAGEMENT FOR PSEUDORANDOM NUMBER GENERATOR}
배경기술
관련 출원
본 특허출원은 2006년 8월 23일에 출원되고 발명의 명칭이 "Cryptographically Secure Pseudo-Random Number Generator"이며 본 특허출원의 양수인에게 양도된 Gregory Gordon Rose 등에 의한 미국특허출원 제 11/509,215호에 관련된다.
기술분야
본 발명은 안전한 의사 난수 생성기에 관한 것으로, 더 상세하게는 전자 디바이스에서 의사 난수 생성기를 초기화하기 위한 시드 (seed) 관리에 관한 것이다.
배경기술
난수의 생성은 예를 들어, 암호 용도 (예를 들어, 암호화 및 무결성 보호에 이용되는 키, 보안 프로토콜에 이용되는 난스 등) 를 포함하는 많은 애플리케이션을 가진다. 진정한 난수가 평균보다 더 높은 확률로 예측되는 것은 불가능하다. 실제에서는, 완벽한 난수 소스를 획득하는 것이 극히 어렵다.
결정적 알고리즘을 이용하여 의사 난수를 생성하는 의사 난수 생성기 (PRNG) 가 종종 채용된다. PRNG 는 매우 빠른 속도로 수를 생성할 수 있다. 시드 로 불리는 랜덤 입력이 주어지면, 의사 난수의 매우 긴 시퀀스가 결정적으로 생성될 수 있다. 이 시드의 정보 없이는, 이 생성기와 랜덤 소스를 구별하는 것은 실행 불가능하거나 매우 어렵다. 많은 PRNG 가 이용가능하지만, 대부분은 보안 애플리케이션용으로 설계되지 않는다. PRNG 가 결정적 알고리즘을 이용하기 때문에, 이들 PRNG 는 해킹에 노출됨으로써, PRNG 의 보안을 약화시킨다. 예를 들어, 선형 합동 생성기가 PRNG 로서 널리 이용되지만, 짧은 출력 시퀀스가 분석된 후에 브레이킹될 수 있다.
암호 애플리케이션과 같은 일부 애플리케이션은 통상적으로 초기화 벡터, 키, 난스, 솔트 (salt) 등으로서 "난수"를 이용한다. 일반적으로, 암호학적으로 안전한 PRNG (CSPRNG) 에 안전한 방식으로 예측불가능한 입력이 시딩되어, 그 출력과 랜덤 비트의 시퀀스를 구별하는 것이 실행 불가능하게 한다.
의사 난수 생성 방식은 CSPRNG 에서 비교적 수월하다. 이는, 예를 들어, 카운터 모드 또는 출력 피드백 모드로 실행되는 블록 암호, 암호 키로서 시드를 이용하는 스트림 암호, 또는 해싱의 네스트된 구조일 수 있다. CSPRNG 설계의 복잡한 부분은 CSPRNG 에 시딩 및 리시딩 (reseeding) 하는 방법이다. 이상적으로, CSPRNG 에 애플리케이션에 의해 호출되기 전에 이 생성기의 내부 상태를 예측불가능하게 하는 임의의 정보가 시딩된다. 리시딩은 이전에 시딩된 CSPRNG 의 순차 로직을 새로운 시드로 업데이트하는데 이용되는 프로세스이다. 이러한 리시딩은 결정적 수 생성 알고리즘을 브레이킹하는 것을 더욱 어렵게 만든다. 그러나, 엔트로피 수집 모듈이 우수한 시드를 얻는 것은 시간이 걸린다. 따라서, 애플리케이션에 의해 호출되기 전에 CSPRNG 에 시딩 또는 리시딩하는 것은 일반적인 문제인데, 그 이유는 파워업 시에, 이러한 시드가 이용가능하기 전에 CSPRNG 가 애플리케이션에 의해 호출될 수도 있기 때문이다.
FIPS 186-2, ANSI X9.17-1985 Appendix C, ANSI X9.31-1998 Appendix A.2.4, 및 ANSI X9.62-1998 Annex A.4 와 같은 수개의 표준화된 CSPRNG 설계가 있다. 불행하게도, 이들 설계 중 많은 설계가 일정 환경하에서는 만족스럽지 못하다. 예를 들어, ANSI X9.17 PRNG 의 2 개의 설계 결함은 "Fast Software Encryption" (5th International Workshop Proceedings, Springer-Verlag, 1998) 에서 J.Kelsey 등에 의해 식별되었다. 추가적으로, "Recommendation for Random Number Generator Using Deterministic Random Bit Generators"라는 명칭의 NIST (National Institute of Standards and Technology) Special Publication 800-90 (2006년 6월) 은 또한 의사 난수 생성기를 초기화하는 시스템을 개시하지만, 해킹에 대비하여 적절한 보안 특징을 제공하지 못한다.
따라서, 시드가 신속하고 안전하게 획득될 수 있는 의사 난수 생성기에 대한 요구가 있다.
개요
사전-저장된 초기화 시드를 이용함으로써 의사 난수 생성기에 대한 안전한 시딩 및 리시딩 방식이 제공된다. 이 방식은 엔트로피 수집이 이용불가능한 경우에도 의사 난수 생성기를 알려지지 않은 상태로 초기화한다. 주 시드 파일 및 섀도 시드 파일은 안전한 파일 시스템에서 시딩 정보로 유지될 수도 있다. 주 시드 파일이 손상되면, 의사 난수 생성기는 섀도 시드 파일의 컨텐츠로 시딩된다. 시드 파일의 해킹에 대한 대응책으로서 시딩 메커니즘의 일부로서 신뢰 타이머가 사용될 수도 있다. 사전-저장된 시드 정보가 손상된 경우에도 신뢰 타이머 또는 클록은 사전-저장된 시드 정보와 믹싱되어 엔트로피를 추가한다.
의사 난수 생성기를 동작시키는 방법이 제공된다. 의사 난수 생성기의 스타트업 내부 상태는 저장된 원시 시드로 초기화된다. 저장된 원시 시드는 한번 이용된 후에 파괴될 수도 있다. 새로운 시드는 하나 이상의 예측불가능한 엔트로피 소스로부터 획득될 수도 있고, 새로운 시드는 의사 난수 생성기의 내부 상태를 예측불가능한 상태로 변경하는데 이용될 수도 있다. 의사 랜덤 출력은 의사 난수 생성기의 변경된 내부 상태에 기초하여 생성될 수도 있다. 의사 랜덤 출력은 이후 의사 난수 생성기의 후속 스타트업 내부 상태를 위한 초기화 시드로서 시드 파일에 저장될 수도 있다. 원시 시드는 의사 난수 생성기의 제조 동안에 안전한 위치에 저장될 수도 있다. 의사 난수 생성기의 리시딩은 인터벌 타이머에 따라 주기적으로 수행될 수도 있다.
일 실시예에서, 초기화 시드는 의사 난수 생성기가 재시작된 후에 시드 파일로부터 검색될 수도 있다. 의사 난수 생성기의 스타트업 내부 상태는 초기화 시드로 초기화될 수도 있다. 시드 파일의 컨텐츠는 의사 난수 생성기로부터 획득된 새로운 초기화 시드로 대체될 수도 있다.
다른 실시예에서, 시간값은 이후 신뢰 소스로부터 획득된다. 시간값과 초기화 시드는 이후 결합되어, 변경된 초기화 시드를 획득한다. 시간값과 초기 화 시드는 결합되어, 시간값이 변경된 초기화 시드의 전체 범위로 분산될 수도 있다. 의사 난수 생성기의 스타트업 내부 상태는 변경된 초기화 시드로 초기화될 수도 있다. 시드 파일의 컨텐츠는 이후 의사 난수 생성기의 의사 랜덤 출력으로부터 획득된 새로운 초기화 시드로 대체될 수도 있다.
또 다른 양태에서, 의사 랜덤 출력을 시드 파일에 저장하는 것은 (1) 의사 랜덤 출력을 안전한 파일 시스템의 주 시드 파일에 저장하는 것, 및 (2) 의사 랜덤 출력을 안전한 파일 시스템의 섀도 시드 파일에 저장하는 것을 포함할 수도 있다. 의사 난수 생성기의 재시작 시에, 주 시드 파일의 무결성이 손상되었는지 여부에 관한 판정이 이루어진다. 주 시드 파일의 무결성이 성공적으로 검증되면, 의사 난수 생성기의 스타트업 내부 상태는 주 시드 파일의 초기화 시드로 초기화된다. 그렇지 않고, 주 시드 파일의 무결성 체크가 실패하면, 의사 난수 생성기의 스타트업 내부 상태는 섀도 시드 파일의 초기화 시드로 초기화된다.
시드 선택 모듈, 시딩 모듈, 및 수 생성 모듈을 포함하는 의사 난수 생성기가 또한 제공된다. 시드 선택 모듈은 하나 이상의 시드 소스로부터 시드를 선택하도록 구성될 수도 있다. 시딩 모듈은 시드 선택 모듈에 커플링되고, 시드 선택 모듈에 의해 제공된 시드에 따라 의사 난수 생성기의 내부 상태를 조정하도록 구성될 수도 있다. 수 생성 모듈은 시딩 모듈에 커플링되고, 의사 난수 생성기의 내부 상태에 기초하여 의사 랜덤 출력을 생성하도록 구성될 수도 있다. 시드 선택 모듈은 (a) 의사 난수 생성기가 시작되는 것이 처음이면, 의사 난수 생성기의 스타트업 내부 상태를 초기화하기 위해 사전-저장된 원시 시드를 선택하고, 및/또는 (b) 의사 난수 생성기가 이전에 시작되었으면, 의사 난수 생성기의 스타트업 내부 상태를 초기화하기 위해 사전-저장된 시드 파일로부터 초기화 시드를 선택하도록 또한 구성될 수도 있다. 시드 선택 모듈은 저장된 원시 시드가 한번 이용된 후에 이를 파괴할 수도 있다. 수 생성 모듈은, 시드 파일에 저장되며 초기화 시드로서 이용되는 의사 랜덤 출력을 제공할 수도 있다.
일 특징에 따르면, 의사 난수 생성기는 시딩 모듈에 커플링된 신뢰 시간 소스를 더 포함할 수도 있다. 시딩 모듈은 (a) 신뢰 시간 소스로부터 시간값을 획득하고; (b) 이 시간값과 초기화 시드를 결합하여 변경된 초기화 시드를 획득하며; (c) 변경된 초기화 시드로 의사 난수 생성기의 스타트업 내부 상태를 초기화하도록 또한 구성될 수도 있다. 시간값과 초기화 시드는 결합되어, 시간값이 변경된 초기화 시드의 전체 범위로 분산될 수도 있다.
다른 특징에 따르면, 의사 난수 생성기는 시드 파일을 저장하는 안전한 파일 시스템을 더 포함할 수도 있다. 시드 파일은 주 시드 파일 및 섀도 시드 파일을 포함할 수도 있다. 시드 선택 모듈은 (a) 의사 난수 생성기의 재시작 시에 주 시드 파일의 무결성이 손상되었는지 여부를 판정하고; (b) 주 파일의 무결성이 성공적으로 검증되면, 주 시드 파일의 초기화 시드로 의사 난수 생성기의 스타트업 내부 상태를 초기화하며; 및/또는 (c) 그렇지 않으면, 섀도 시드 파일의 초기화 시드로 의사 난수 생성기의 스타트업 내부 상태를 초기화하도록 또한 구성될 수도 있다.
결과적으로, (a) 사전-저장된 원시 시드로 의사 난수 생성기의 스타트업 내 부 상태를 초기화하는 수단; (b) 저장된 원시 시드가 한번 이용된 후에 이를 파괴하는 수단; (c) 하나 이상의 예측불가능한 엔트로피 소스로부터 새로운 시드를 획득하는 수단; (d) 새로운 시드로 의사 난수 생성기의 내부 상태를 예측불가능한 상태로 변경하는 수단; (e) 의사 난수 생성기의 변경된 내부 상태에 기초하여 의사 랜덤 출력을 생성하는 수단; (f) 의사 난수 생성기의 후속 스타트업 내부 상태를 위한 초기화 시드로서 이 의사 랜덤 출력을 시드 파일에 저장하는 수단; (g) 의사 난수 생성기의 제조 동안에 원시 시드를 안전한 위치에 저장하는 수단; (h) 의사 난수 생성기가 재시작된 후에 시드 파일로부터 초기화 시드를 검색하는 수단; (i) 초기화 시드로 의사 난수 생성기의 스타트업 내부 상태를 초기화하는 수단; 및/또는 (j) 의사 난수 생성기로부터 획득된 새로운 초기화 시드로 시드 파일의 컨텐츠를 대체하는 수단을 포함하는 의사 난수 생성기가 또한 제공된다.
일 실시예에서, 의사 난수 생성기는 (a) 의사 난수 생성기가 재시작된 후에 시드 파일로부터 초기화 시드를 검색하는 수단; (b) 신뢰 소스로부터 시간값을 획득하는 수단; (c) 시간값과 초기화 시드를 결합하여 변경된 초기화 시드를 획득하는 수단; (d) 변경된 초기화 시드로 의사 난수 생성기의 스타트업 내부 상태를 초기화하는 수단; 및/또는 (e) 의사 난수 생성기의 의사 랜덤 출력으로부터 획득된 새로운 초기화 시드로 시드 파일의 컨텐츠를 대체하는 수단을 더 포함할 수도 있다. 시간값과 초기화 시드는 결합되어, 시간값이 변경된 초기화 시드의 전체 범위로 분산될 수도 있다.
다른 실시예에서, 의사 난수 생성기는 (a) 의사 랜덤 출력을 안전한 파일 시 스템의 주 시드 파일에 저장하는 수단; (b) 의사 랜덤 출력을 안전한 파일 시스템의 섀도 시드 파일에 저장하는 수단; (c) 의사 난수 생성기의 재시작 시에 주 시드 파일의 무결성이 손상되었는지 여부를 판정하는 수단; (d) 주 시두 파일의 무결성이 성공적으로 검증되면, 주 시드 파일의 초기화 시드로 의사 난수 생성기의 스타트업 내부 상태를 초기화하는 수단; 및/또는 (e) 그렇지 않으면, 섀도 시드 파일의 초기화 시드로 의사 난수 생성기의 스타트업 내부 상태를 초기화하는 수단을 더 포함할 수도 있다.
메모리 디바이스 및 프로세싱 디바이스를 포함하는 프로세싱 회로가 또한 제공된다. 메모리 디바이스는 의사 난수 생성기의 내부 상태를 저장하는 하나 이상의 내부 상태 레지스터를 포함할 수도 있다. 프로세싱 디바이스는 메모리 디바이스에 커플링되고, (a) 사전-저장된 원시 시드로 의사 난수 생성기의 스타트업 내부 상태를 초기화하고; (b) 저장된 원시 시드가 한번 이용된 후에 이를 파괴하고; (c) 하나 이상의 예측불가능한 엔트로피 소스로부터 새로운 시드를 획득하고; (d) 새로운 시드를 의사 난수 생성기에 리시딩하여 의사 난수 생성기의 내부 상태를 예측불가능한 상태로 변경하고; (e) 의사 난수 생성기의 변경된 내부 상태에 기초하여 의사 랜덤 출력을 생성하며; 및/또는 (f) 의사 난수 생성기의 후속 스타트업 내부 상태를 위한 초기화 시드로서 이 의사 랜덤 출력을 시드 파일에 저장하도록 구성될 수도 있다.
일 특징에 따르면, 프로세싱 디바이스는 (a) 의사 난수 생성기가 재시작된 후에 시드 파일로부터 초기화 시드를 검색하고; (b) 신뢰 소스로부터 시간값을 획 득하고; (c) 시간값과 초기화 시드를 결합하여, 변경된 초기화 시드를 획득하고; (d) 변경된 초기화 시드로 의사 난수 생성기의 스타트업 내부 상태를 초기화하며; 및/또는 (e) 의사 난수 생성기의 의사 랜덤 출력으로부터 획득된 새로운 초기화 시드로 시드 파일의 컨텐츠를 대체하도록 또한 구성될 수도 있다. 시간값과 초기화 시드는 결합되어, 시간값이 변경된 초기화 시드의 전체 범위로 분산될 수도 있다.
일 특징에 따르면, 프로세싱 디바이스는 (a) 의사 랜덤 출력을 안전한 파일 시스템의 주 시드 파일에 저장하고; (b) 의사 랜덤 출력을 안전한 파일 시스템의 섀도 시드 파일에 저장하고; (c) 의사 난수 생성기의 재시작 시에 주 시드 파일의 무결성이 손상되었는지 여부를 판정하고; (d) 주 시드 파일의 무결성이 성공적으로 검증되면, 주 시드 파일의 초기화 시드로 의사 난수 생성기의 스타트업 내부 상태를 초기화하며; 및/또는 (e) 그렇지 않으면, 섀도 시드 파일의 초기화 시드로 의사 난수 생성기의 스타트업 내부 상태를 초기화하도록 또한 구성될 수도 있다.
의사 랜덤 출력을 생성하며, 프로세서에 의해 실행되는 경우에 이 프로세서로 하여금 (a) 사전-저장된 원시 시드로 의사 난수 생성기의 스타트업 내부 상태를 초기화하게 하고; (b) 저장된 원시 시드가 한번 이용된 후에 저장된 원시 시드를 파괴하게 하고; (c) 하나 이상의 예측불가능한 엔트로피 소스로부터 새로운 시드를 획득하게 하고; (d) 새로운 시드를 의사 난수 생성기에 리시딩하여, 의사 난수 생성기의 내부 상태를 예측불가능한 상태로 변경하게 하고; (e) 의사 난수 생성기의 변경된 내부 상태에 기초하여 의사 랜덤 출력을 생성하게 하며; 및/또는 (f) 의사 난수 생성기의 후속 스타트업 내부 상태를 위한 초기화 시드로서 이 의사 랜덤 출력을 시드 파일에 저장하게 하는 하나 이상의 명령을 갖는 머신-판독가능 매체가 또한 제공된다.
일 실시예에서, 머신-판독가능 매체는 프로세서에 의해 실행되는 경우에 이 프로세서로 하여금 (a) 의사 난수 생성기가 재시작된 후에 시드 파일로부터 초기화 시드를 검색하게 하고; (b) 신뢰 소스로부터 시간값을 획득하게 하고; (c) 시간값과 초기화 시드를 결합하여, 변경된 초기화 시드를 획득하게 하고; (d) 변경된 초기화 시드로 의사 난수 생성기의 스타트업 내부 상태를 초기화하게 하며; 및/또는 (e) 의사 난수 생성기의 의사 랜덤 출력으로부터 획득된 새로운 초기화 시드로 시드 파일의 컨텐츠를 대체하게 하는 하나 이상의 명령을 더 가질 수도 있다. 시간값과 초기화 시드는 결합되어, 시간값이 변경된 초기화 시드의 전체 범위로 분산될 수도 있다.
일 특징에 따르면, 시드 파일은 안전한 파일 시스템의 주 시드 파일 및 섀도 시드 파일을 포함할 수도 있다. 머신-판독가능 매체는 프로세서에 의해 실행되는 경우에 프로세서로 하여금 (a) 의사 난수 생성기의 재시작 시에 주 시드 파일의 무결성이 손상되었는지 여부를 판정하게 하고; (b) 주 시드 파일의 무결성이 성공적으로 검증되면, 주 시드 파일의 초기화 시드로 의사 난수 생성기의 스타트업 내부 상태를 초기화하게 하며; 및/또는 (c) 그렇지 않으면, 섀도 시드 파일의 초기화 시드로 의사 난수 생성기의 스타트업 내부 상태를 초기화하게 하는 하나 이상의 명령을 더 가질 수도 있다.
도면의 간단한 설명
도 1 은 본 명세서에서 설명된 하나 이상의 신규 특징이 구현될 수도 있는 의사 난수 생성기의 실시예를 도시한 블록도이다.
도 2 는 초기 시드 관리를 갖는 의사 난수 생성기의 일 실시예를 도시한 블록도이다.
도 3 은 일 실시예에 따라 사전-저장된 시드를 이용하여 의사 난수 생성기를 초기화하는 방법을 도시한 것이다.
도 4 는 전력 셧오프를 예상하여 의사 난수 생성기의 후속 스타트업 초기화를 위해 의사 랜덤 출력을 저장하는 시스템을 도시한 블록도이다.
도 5 는 임의의 파워오프 이벤트의 검출 시에 초기화 시드를 생성 및 저장하도록 디바이스를 동작시키는 방법을 도시한 것이다.
도 6 은 주 시드 파일 및 섀도 시드 파일을 이용하여 의사 난수 생성기를 위한 초기화 시드를 저장하는 방법을 도시한 것이다.
도 7 은 시간 성분이 시드 파일의 해킹에 대항하는데 이용될 수도 있는 방법의 실시예를 도시한 블록도이다.
도 8 은 의사 난수 생성기를 위한 초기화 시드의 일부로서 시간을 결합하는 방법을 도시한 것이다.
도 9 는 의사 난수 생성기를 구현하도록 구성되며 저장 매체 및 프로세서를 포함하는 프로세싱 회로를 도시한 블록도이다.
상세한 설명
다음의 설명에서, 실시형태의 완전한 이해를 제공하기 위해 특정 세부사항이 주어진다. 그러나, 당업자는 이 실시형태가 이들 특정 세부사항 없이 실시될 수도 있다는 것을 이해할 것이다. 예를 들어, 불필요하게 상세히 실시형태를 모호하게 하지 않기 위해, 회로가 블록도에 도시될 수도 있거나 전혀 도시되지 않을 수도 있다. 다른 예에서, 실시형태를 모호하게 하지 않기 위해 공지 회로, 구조 및 기술이 상세히 설명되지 않을 수도 있다.
또한, 이 실시형태는 순서도, 흐름도, 구조도, 또는 블록도로 도시된 프로세스로 설명될 수도 있다. 순서도가 순차 프로세스로 동작을 설명할 수도 있지만, 이 동작 중 많은 동작이 병렬로 또는 동시에 수행될 수 있다. 또한, 동작의 순서는 재배열될 수도 있다. 프로세스는 그 동작이 완료되는 경우에 종료된다. 프로세스는 방법, 함수, 절차, 서브루틴, 서브프로그램 등에 대응할 수도 있다. 프로세스가 함수에 대응하는 경우, 그 종료는 호출 함수 또는 메인 함수에 대한 이 함수의 리턴에 대응한다.
또한, 저장 매체는 ROM (read-only memory), RAM (random access memory), 자기 디스크 저장 매체, 광학 저장 매체, 플래시 메모리 디바이스, 및/또는 정보를 저장하기 위한 다른 머신 판독가능 매체를 포함하여 데이터를 저장하기 위한 하나 이상의 디바이스를 나타낼 수도 있다. 용어 "머신 판독가능 매체"는 휴대용 또는 고정형 저장 디바이스, 광학 저장 디바이스, 무선 채널, 및 명령(들) 및/또는 데이터를 저장, 포함, 또는 전달할 수 있는 다양한 다른 매체를 포함하지만, 이에 한정되지 않는다.
게다가, 하드웨어, 소프트웨어, 펌웨어, 미들웨어, 마이크로코드, 또는 이들의 조합에 의해 실시형태가 구현될 수도 있다. 소프트웨어, 펌웨어, 미들웨어, 또는 마이크로코드로 구현되는 경우, 필요한 태스크를 수행하기 위한 프로그램 코드 또는 코드 세그먼트는 저장 매체 또는 다른 저장 수단과 같은 머신-판독가능 매체에 저장될 수도 있다. 프로세서가 필요한 태스크를 수행할 수도 있다. 코드 세그먼트는 절차, 함수, 서브프로그램, 프로그램, 루틴, 서브루틴, 모듈, 소프트웨어 패키지, 클래스, 또는 명령, 데이터 구조, 또는 프로그램 명령문의 조합을 나타낼 수도 있다. 정보, 데이터, 인수, 파라미터, 또는 메모리 컨텐츠를 전달 및/또는 수신함으로써 코드 세그먼트는 다른 코드 세그먼트 또는 하드웨어 회로에 커플링될 수도 있다. 정보, 인수, 파라미터, 데이터 등은 특히, 메모리 공유, 메시지 전달, 토큰 전달, 및 네트워크 송신을 포함하는 적절한 수단을 통해 전달, 포워딩, 또는 송신될 수도 있다.
하나의 특징은 사전-저장된 초기화 시드를 이용함으로써 의사 난수 생성기에 대한 안전한 시딩 및 리시딩 방식을 제공한다. 이 방식은 엔트로피 수집이 이용가능하지 않은 경우에도 의사 난수 생성기를 알려지지 않은 상태로 초기화한다.
시딩 방식의 다른 양태는 안전한 파일 시스템에 시딩 정보로 주 시드 파일 및 섀도 시드 파일을 유지하는 것을 제공한다. 주 시드 파일이 손상되면, 의사 난수 생성기는 섀도 시드 파일의 컨텐츠로 시딩된다.
또 다른 특징은 시드 파일의 해킹에 대한 대응책으로서 시딩 메커니즘의 일부로서 신뢰 타이머의 사용을 제공한다. 사전-저장된 시드 정보가 손상된 경우 에도 신뢰 타이머 또는 클록은 사전-저장된 시드 정보와 믹싱되어 엔트로피를 추가한다.
도 1 은 본 명세서에서 설명된 하나 이상의 신규 특징이 구현될 수도 있는 의사 난수 생성기의 실시예를 도시한 블록도이다. 스타트업 시에, 의사 난수 생성기 (102) 는 시드 생성기 모듈 (104) 로부터 시드를 수신하여 의사 난수 생성기 (102) 를 알려지지 않은 상태로 초기화하도록 구성된다. 의사 난수 생성기 (102) 는 하나 이상의 애플리케이션 (106, 108 및 110) 에 의해 인보크되어 비트, 심볼, 및/또는 수의 의사 랜덤 출력을 획득할 수도 있다.
의사 난수 생성기 (102) 의 상태를 초기화하는 엔트로피를 수집하는 것이 시간이 걸리기 때문에, 하나의 특징은 이 목적을 위해 스타트업 시드를 사전-저장한다. 예를 들어, 시드 생성기 모듈 (104) 은 다른 엔트로피 정보가 이용불가능한 경우에도 의사 난수 생성기를 예측불가능한 상태로 초기화하는데 이용될 수 있도록 이러한 스타트업 시드를 저장할 수도 있다. 따라서 의사 난수 생성기 (102) 의 스타트업 시에, 이는 사전-저장된 시드에 의해 신속하게 시딩될 수 있다.
도 2 는 초기 시드 관리를 갖는 의사 난수 생성기의 일 실시예를 도시한 블록도이다. 이 의사 난수 생성기는 이동 전화, 컴퓨터, 회로 보드, 칩, 프로세서, 반도체 디바이스, 셋톱 박스 등과 같은 전자 디바이스, 및/또는 소프트웨어, 펌웨어, 미들웨어, 또는 마이크로코드 모듈의 일부로서 통합될 수도 있다. 디바이스-특정된 원시 시드 (200) 는 전자 디바이스의 제조 동안에 저장 디바이스 (202)(예를 들어, 비휘발성 메모리) 에 저장될 수도 있다. 이 프로세스에서, 원시 시드 (200) 는 저장 디바이스 (202) 의 외부 인터페이스를 통해 저장될 수도 있다. 이러한 원시 시드 (200) 는, 예를 들어, 상이한 난수 생성기를 사용하여 오프라인으로 생성될 수도 있다. 원시 시드 (200) 가 저장되는 저장 디바이스 (202) 로의 액세스는 어떠한 후속 외부 판독 또는 기록 동작도 허용되지 않도록 제한되는 것이 바람직하다. 이는 해커가 원시 시드 (200) 를 변경하거나 아는 것을 금지한다.
의사 난수 생성기 (212) 가 처음으로 동작을 위해 파워업되는 경우, 원시 시드 (200) 는 의사 난수 생성기 (212) 로 공급된다. 원시 시드 (200) 의 엔트로피는 의사 난수 생성기 (212) 가 알려지지 않거나 예측불가능한 상태로 초기화되는 것을 보장한다. 이렇게 함으로써, 의사 난수 생성기 (212) 는 스타트업 즉시 상이한 애플리케이션에 의사 난수 (출력) 를 제공할 수 있다.
일정 시간 주기 후에, 엔트로피 수집 모듈 (204) 은 의사 난수 생성기 (212) 에 리시딩될 다른 시드를 의사 난수 생성기 (212) 로 제공한다. 예를 들어, 프로세스가 개시되어, 의사 난수 생성기 (212) 로부터의 M 바이트 (예를 들어, M=128 바이트) 의 랜덤 데이터를 요구하고 이들 M 바이트를 안전한 파일 시스템 (208) 의 시드 파일 (206) 에 저장할 수도 있다. 일단 시드 파일 (206) 이 발생되면, 저장 디바이스 (202) 의 원시 시드 (200) 는 삭제 또는 파괴 (예를 들어, 모두 0 으로 리셋) 된다.
시드 선택 모듈 (210) 은 의사 난수 생성기 (212) 및 하나 이상의 시드 소스 (202, 204, 및 208) 에 커플링될 수도 있다. 예를 들어, 시드 선택 모듈 (210) 은 의사 난수 생성기가 스타트업되고 파워업되는 경우에 원시 시드 (200) 와 시드 파일 (206) 사이에서 선택하도록 구성될 수도 있다. 추가적으로, 시드 선택 모듈 (210) 은 엔트로피 수집 모듈 (204) 로부터 의사 난수 생성기 (212) 에 주기적으로 또는 산발적으로 리시딩할 시드(들)을 획득할 수도 있다. 엔트로피 수집 모듈 (204) 은, 이후에 시드를 생성하는데 이용될 수도 있는 하나 이상의 소스로부터 랜덤 데이터 또는 정보를 수집하도록 구성될 수도 있다.
의사 난수 생성기 (212) 가 (예를 들어, 파워 사이클링 후에) 후속하여 재시작되는 경우, 시드 선택 모듈 (210) 은 저장 디바이스 (202) 를 체크하여 유효 원시 시드가 이용가능한지 여부를 판정한다. 저장 디바이스 (202) 의 원시 시드 (200) 가 삭제 또는 파괴되었으므로, 저장 디바이스 (202) 는 시드 파일 (206) 이 이용가능하고/이용가능하거나 이용되어야 한다는 것을 표시하는 플래그 또는 0 을 포함할 수도 있다. 시드 선택 모듈 (210) 은 이후 시드 파일 (206) 로부터 초기화 시드를 획득하고 이를 이용하여 의사 난수 생성기 (212) 의 내부 상태를 알려지지 않거나 예측불가능한 상태로 초기화한다. 안전한 파일 시스템 (208) 은 시드 파일 (206) 의 무결성 및 기밀성을 보장한다. 일 실시예에서, 안전한 파일 시스템은 암호법을 이용하여 시드 파일 (206) 컨텐츠의 무결성 및 기밀성을 보호할 수도 있다. 다른 예에서, 안전한 파일 시스템은 디바이스의 운영 시스템 및/또는 사용자에 액세스불가능하지만, 시드 선택 모듈 (210) 및/또는 의사 난수 생성기 (212) 에 의해 액세스가능하다.
의사 난수 생성기 (212) 는 시드를 수신하여 의사 난수 생성기 (212) 의 내 부 상태(들)을 초기화하는 시딩 모듈 (214) 을 포함할 수도 있다. 수 생성기 모듈 (216) 은 이후 시딩 모듈 (214) 에 의해 설정된 상태에 기초하여 의사 랜덤 출력을 생성한다.
의사 난수 생성기 (212) 로부터의 의사 랜덤 출력의 일부는 후속 파워업을 위한 초기화 시드로서 저장될 수도 있다. 시드 파일 (206) 에 새로운 랜덤 정보를 저장하고 이를 이용하여 스타트업 시에 의사 난수 생성기 (212) 에 리시딩하는 이 프로세스는 반복되어, 매번 상이한 초기화 시드가 이용된다. 일 구현예에서, 의사 난수 생성기 (212) 가 (예를 들어, 엔트로피 수집 모듈 (204) 로부터의) 엔트로피를 포함하는 시드로 리시딩된 후에, (초기화 시드로서) 시드 파일 (206) 에 저장된 의사 랜덤 출력이 획득된다.
다른 구현예에서, 제조 또는 다른 안전한 초기화 절차 동안에 원시 시드 (200) 가 대신 시드 파일 (206) 에 직접 저장될 수도 있다. 이후, 원시 시드는 의사 난수 생성기 (212) 의 첫번째 초기화 후에 파괴될 수도 있고, 의사 난수 생성기 (212) 의 후속 리시딩을 위해 랜덤 정보가 시드 파일 (206) 에 저장된다.
도 3 은 일 실시예에 따라 사전-저장된 시드를 이용하여 의사 난수 생성기를 초기화하는 방법을 도시한다. 의사 난수 생성기의 파워업 초기화 (302) 동안에, 원시 시드가 이용가능한지 여부에 관한 판정이 이루어진다 (304). 원시 시드의 이용가능성은 이것이 의사 난수 생성기가 초기화되는 것이 처음이라고 표시할 수도 있다. 이러한 원시 시드가 이용가능하면, 이 원시 시드가 안전한 저장 소스로부터 획득되고 (306), 이 원시 시드의 저장된 버전은 일단 이용되면 파괴된다 (308). 저장된 원시 시드를 파괴하는 것은 의사 난수 생성기가 이전에 시작되었다는 미래 표시자의 역할을 할 수도 있다. 다른 방법으로는, 이와 동일한 것을 표시하기 위해 플래그가 안전한 위치에 설정될 수도 있다. 의사 난수 생성기의 스타트업 내부 상태는 이후 원시 시드로 초기화되어 (310), 의사 랜덤 출력을 생성한다 (312). 이 시점에서, 의사 난수 생성기는 호출 애플리케이션에 의사 랜덤 출력 (예를 들어, 수, 비트, 바이트, 심볼 등) 을 제공할 수 있다.
하나 이상의 엔트로피 소스는 새로운 시드를 획득하는데 이용될 수도 있다 (314). 의사 난수 생성기의 내부 상태는 새로운 시드로 예측불가능한 상태로 변경된다 (316). 의사 랜덤 출력은 이후 의사 난수 생성기의 변경된 내부 상태에 기초하여 생성된다 (318). 의사 난수 생성기의 후속 스타트업 내부 상태를 위한 초기화 시드로서 이 의사 랜덤 출력이 시드 파일에 저장된다 (320). 스타트업 내부 상태는 의사 난수 생성기가 파워업된 직후의 의사 난수 생성기의 상태를 지칭한다.
의사 난수 생성기가 후속 시간에 파워온되는 경우, 원시 시드는 더이상 이용가능하지 않다 (304). 따라서, 대신에 시드 파일로부터 사전-저장된 시드가 획득된다 (322). 의사 난수 생성기의 스타트업 내부 상태는 이후 사전-저장된 시드로 초기화되고 (324), 의사 난수 생성기는 의사 랜덤 출력을 생성할 수 있다 (312). 이 초기 시딩 프로세스는 의사 난수 생성기의 후속 스타트업 동안에 반복된다.
도 4 는 전력 셧오프를 예상하여 의사 난수 생성기의 후속 스타트업 초기화 를 위해 의사 랜덤 출력을 저장하는 시스템을 도시한 블록도이다. 의사 난수 생성기는 전자 디바이스 (예를 들어, 칩, 회로 등) 의 일부로서 통합될 수도 있다. 이러한 디바이스는 (1) 사용자가 디바이스로의 전력을 턴오프하고, (2) 디바이스 자체가 어떤 에러(들)로 인해 셧오프되고/되거나, (3) 디바이스가 크래쉬 (crash) 되는 경우에 파워오프될 수도 있다.
제어 모듈 (402) 은 다양한 소스로부터 정보를 수집하여 이 디바이스가 셧오프되려고 하는지를 판정할 수도 있다. 예를 들어, 제어 모듈 (402) 은 사용자 인터페이스 (404)(예를 들어, 온/오프 스위치 등) 에 커플링되어, 사용자가 디바이스를 턴오프하는 때를 검출할 수도 있다. 유사하게, 제어 모듈 (402) 은, 에러가 발생한 때를 검출하여 제어 방식으로 디바이스를 셧오프하는 에러 핸들러 (406) 에 커플링될 수도 있다. 디바이스가 턴오프되려고 하는 것을 사용자 인터페이스 (404) 또는 에러 핸들러 (406) 중 어느 하나가 표시하는 경우, 제어 모듈 (402) 은 의사 난수 생성기 (410) 로 하여금 의사 랜덤 출력을 생성하여 이를 안전한 파일 시스템 (412) 의 시드 파일 (414) 에 저장하게 하도록 구성될 수도 있다.
도 5 는 임의의 파워오프 이벤트의 검출 시에 초기화 시드를 생성 및 저장하도록 디바이스를 동작시키는 방법을 도시한다. 예를 들어, 파워오프 신호가 검출되거나 (502), 시스템 에러가 검출되면 (504), 디바이스를 파워오프 (510) 하기 전에 의사 랜덤 출력이 생성되어 (506), 안전한 시드 파일에 저장된다 (508). 안전한 시드 파일에 저장된 의사 랜덤 출력은 다음의 파워업 시에 이용되어 의사 난수 생성기를 초기화할 수도 있다.
그러나, 치명적 에러가 발생하는 경우 (예를 들어, 디바이스가 전력이 부족하거나 또는 서비스 거부 (denial-of-service) 공격이 메모리 손상을 야기하는 경우), 디바이스 크래쉬를 검출하는 것이 어려울 수도 있고, 디바이스가 셧오프되기 전에 시드 파일 (414) 이 성공적으로 업데이트되지 않을 수도 있다. 이 문제를 다루기 위해, 타이머 (408) 가 제어 모듈 (402) 에 커플링된다. 제어 모듈 (402) 은 제어 모듈 (402) 로 하여금 시드 파일 (414) 에 저장될 의사 랜덤 출력을 의사 난수 생성기 (410) 가 제공하는 것을 요구하게 하는 주기성 신호를 타이머 (408) 로부터 수신한다.
시드 파일 (414) 을 이용하는데 있어 하나의 위협은 시드 파일의 위조이다. 하나의 대응책은 시드 파일 (414) 을 특권 파티션의 안전한 파일 시스템 (412) 에 위치시키는 것이다. 특권 파티션은 정규 파일 시스템 외부에 상주할 수도 있고, 이로서 시스템 업데이트를 통해 소거될 수 없다. 이 시스템의 정규 파일 액세스 인터페이스는 안전한 파일 시스템 (412) 의 존재를 인식하지 못한다.
다른 특징은 (특권 파티션 내의) 안전한 파일 시스템 (412) 에 주 시드 파일 (414) 및 섀도 시드 파일 (416) 을 유지하는 것을 제공한다. 시드 정보는 먼저 주 시드 파일 (414) 에, 이후 섀도 시드 파일 (416) 에 저장된다. 주 시드 파일 (414) 에 기록하는 동안에 치명적 에러가 발생하는 이벤트에서, 이전에 미이용된 시드 정보는 여전히 섀도 시드 파일 (416) 에 저장되고, 다음의 파워업 시에 의사 난수 생성기 (410) 를 초기화하는데 이용된다. 이러한 방식으로 의사 난수 생성기 (410) 를 초기화하기 위해 파워-업 동안에 이용가능한 우수한 시드 정보가 항상 존재한다.
도 6 은 주 시드 파일 및 섀도 시드 파일을 이용하여 의사 난수 생성기를 위한 초기화 시드를 저장하는 방법을 도시한다. 의사 난수 생성기로부터 의사 랜덤 출력이 획득된다 (602). 의사 랜덤 출력 (예를 들어, 비트, 심볼, 수 등) 은 주 시드 파일에 먼저 저장되어, 후속하여 초기화 시드로서 이용된다 (604). 의사 랜덤 출력은 주 시드 파일에 이전에 저장된 다른 컨텐츠를 대체할 수도 있다. 동일한 의사 랜덤 출력은 이후 섀도 시드 파일에 저장된다 (606). 후속하여, 의사 난수 생성기는 파워오프될 수도 있다 (608).
의사 난수 생성기가 다시 파워온되는 경우 (610), 주 시드 파일의 무결성 및/또는 신뢰성이 체크되어 주 시드 파일이 유효한지 여부를 판정할 수도 있다 (612). 주 시드 파일이 유효하면, 주 시드 파일의 컨텐츠로부터 초기화 시드가 획득된다 (614). 그렇지 않고, 주 시드 파일이 유효하지 않으면 (예를 들어, 파일 컨텐츠가 손상되면), 섀도 시드 파일의 컨텐츠로부터 초기화 시드가 획득된다 (616). 초기화 시드는 의사 난수 생성기를 초기화하는데 이용된다 (618). 이 의사 난수 생성기는 이후 의사 랜덤 출력을 호출 애플리케이션에 제공할 수도 있다. 이 프로세스는, 상이한 초기화 시드가 의사 난수 생성기를 초기화하는데 이용되도록 의사 난수 생성기가 파워오프 및 파워온될 때마다 반복될 수도 있다.
몇몇 구현예에서, (안전한 파일 시스템 (412) 이 유지되는 경우에) 특권 파티션을 이용하는 것이 가능하지 않을 수도 있다. 이러한 특권 파티션 없이, 해커가 백업된 이전의 시드 파일의 합법 카피와 시드 파일을 겹쳐쓰는 것이 가능할 수도 있다. 이후, 해커는 (예를 들어, 전원을 접속셧오프함으로써) 의사 난수 생성기를 통합한 디바이스를 즉시 크래쉬함으로써, 디바이스를 속여서 다음의 파워업 사이클 시에 이전의 시드 파일을 이용하게 할 수도 있다. 이전의 시드 파일이 합법 카피이므로, 이는 파워업 스테이지 동안에 의사 난수 생성기에 의해 수락될 것이다. 동일한 이전의 시드 파일이 엔트로피 수집 모듈에 의해 리시딩될 때까지 해커가 이 동일한 이전의 시드 파일을 이용할 때마다 파워업 스테이지 동안에 의사 난수 생성기는 이후 동일한 출력 시퀀스를 발생시킬 수도 있다. 따라서, 해커는 의사 난수 생성기의 초기 출력을 제어가능할 수도 있다.
이러한 해킹에 대항하기 위해, 하나의 특징은 스타트업 초기화 시드의 일부로서 시간을 이용하여 해킹에 대비하여 의사 난수 생성기를 더 보호하는 것을 제공한다. 도 7 은 시간 성분이 시드 파일의 해킹에 대항하는데 이용될 수도 있는 방법의 실시예를 도시한 블록도이다. 시간 캡처 모듈 (702) 은 신뢰할 수 있는 내부 클록으로부터 시간을 캡처하거나 네트워크 (예를 들어, CDMA 네트워크) 로부터 임의의 시간 신호를 캡처하는데 이용된다. 시드 파일 (704) 로부터의 시드 컨텐츠 s 는 (시간 캡처 모듈 (702) 로부터의) 시간 t 와 믹싱되어 초기화 시드 (708) 를 형성한다. 믹싱 함수 (706) 는 시간 t 의 각 비트 변화가 함수 출력의 전체 범위로 분산되도록 선택 또는 구성될 수도 있다. 이러한 방식으로, 시간 t 의 임의의 변화는 전체 초기화 시드 (708) 가 변하게 한다. 믹싱 함수 (706) 의 일 실시예는 해시 알고리즘 (예를 들어, init_seed = hash (s∥t), 여기서 "∥"는 접합 (concatenation) 을 표시함) 이다. 그 결과, 동일한 시드 파일 이 재이용되더라도, 새로운 시간 t' 는 초기 시드 해시 (s∥t') 를 해시 (s∥t) 와 상이하게 만든다. 초기화 시드 (708) 는 이후 의사 난수 생성기를 초기화하는데 이용될 수도 있다.
도 8 은 의사 난수 생성기를 위한 초기화 시드의 일부로서 시간을 결합하는 방법을 도시한다. 의사 난수 생성기의 파워업 (802) 시에, 시드 파일로부터 사전-저장된 시드가 획득된다 (804). (안전한 소스로부터) 신뢰 시간이 획득되고 (806), 사전-저장된 시드와 결합되어 새로운 초기화 시드를 형성한다 (808). 새로운 시드는 의사 난수 생성기를 초기화하며 (810), 의사 랜덤 출력을 생성하는데 (812) 이용된다.
도 9 는 의사 난수 생성기를 구현하도록 구성되며 저장 매체 (902) 및 프로세서 (904) 를 포함하는 프로세싱 회로 (900) 를 도시한 블록도이다. 저장 매체 (902) 는, 의사 난수 생성기의 내부 상태를 저장하는 하나 이상의 내부 상태 레지스터를 포함하는, 예를 들어, 메모리 디바이스 및/또는 하드 드라이브일 수도 있다. 프로세싱 디바이스 (904) 는 사전-저장된 원시 시드로 의사 난수 생성기의 스타트업 내부 상태를 초기화하도록 구성될 수도 있다. 저장된 원시 시드는 한번 이용된 후에 파괴될 수도 있다. 새로운 시드는 하나 이상의 예측불가능한 엔트로피 소스로부터 획득될 수도 있다. 의사 난수 생성기는 새로운 시드로 초기화되어, 의사 난수 생성기의 내부 상태를 예측불가능한 상태로 변경한다. 의사 랜덤 출력은 의사 난수 생성기의 변경된 내부 상태에 기초하여 생성된다. 의사 랜덤 출력은 의사 난수 생성기의 후속 스타트업 내부 상태를 위한 초기화 시 드로서 시드 파일에 저장된다.
일 구현예에서, 프로세싱 디바이스는 (1) 의사 난수 생성기가 재시작된 후에 시드로부터 초기화 시드를 검색하고, (2) 신뢰 소스로부터 시간값을 획득하고, (3) 시간값과 초기화 시드를 결합하여 변경된 초기화 시드를 획득하고, (4) 변경된 초기화 시드로 의사 난수 생성기의 스타트업 내부 상태를 초기화하며, 및/또는 (5) 시드 파일의 컨텐츠를 의사 난수 생성기의 의사 랜덤 출력으로부터 획득된 새로운 초기화 시드로 대체하도록 또한 구성될 수도 있다. 시간값과 초기화 시드는 결합되어, 시간값이 변경된 초기화 시드의 전체 범위로 분산될 수도 있다.
프로세싱 디바이스는 (1) 의사 랜덤 출력을 안전한 파일 시스템의 주 시드 파일 및 섀도 파일에 저장하고, (2) 의사 난수 생성기의 재시작 시에 주 시드 파일의 무결성이 손상되었는지 여부를 판정하고, (3) 주 시드 파일의 무결성이 성공적으로 검증되면, 주 시드 파일의 초기화 시드로 의사 난수 생성기의 스타트업 내부 상태를 초기화하며, 및/또는 (4) 그렇지 않으면, 섀도 시드 파일의 초기화 시드로 의사 난수 생성기의 스타트업 내부 상태를 초기화하도록 또한 구성될 수도 있다.
다른 실시예에서, 저장 매체 (902) 는, 프로세서 (904) 에 의해 실행되는 경우에 이 프로세서 (904) 로 하여금, (1) 사전-저장된 원시 시드로 의사 난수 생성기의 스타트업 내부 상태를 초기화하게 하고, (2) 저장된 원시 시드가 한번 이용된 후에 이를 파괴하게 하고, (3) 하나 이상의 예측불가능한 엔트로피 소스로부터 새로운 시드를 획득하게 하고, (4) 새로운 시드를 의사 난수 생성기에 리시딩하여 의사 난수 생성기의 내부 상태를 예측불가능한 상태로 변경하게 하고, (5) 의사 난수 생성기의 변경된 내부 상태에 기초하여 의사 랜덤 출력을 생성하게 하며, 및/또는 (6) 의사 난수 생성기의 후속 스타트업 내부 상태를 위한 초기화 시드로서 의사 랜덤 출력을 시드 파일에 저장하게 하는 명령을 저장하는 머신-판독가능 매체일 수도 있다. 머신-판독가능 매체 (저장 매체 (902)) 는 프로세서 (904) 에 의해 실행되는 경우에 이 프로세서로 하여금, (1) 의사 난수 생성기가 재시작된 후에 시드 파일로부터 초기화 시드를 검색하게 하고, (2) 신뢰 소스로부터 시간값을 획득하게 하고, (3) 시간값과 초기화 시드를 결합하여 변경된 초기화 시드를 획득하게 하고, (4) 변경된 초기화 시드로 의사 난수 생성기의 스타트업 내부 상태를 초기화하게 하며, 및/또는 (5) 시드 파일의 컨텐츠를 의사 난수 생성기의 의사 랜덤 출력으로부터 획득된 새로운 초기화 시드로 대체하게 하는 하나 이상의 명령을 더 가질 수도 있다.
다른 특징에 따르면, 시드 파일은 안전한 파일 시스템의 주 시드 파일 및 섀도 시드 파일을 포함할 수도 있다. 머신-판독가능 매체 (저장 디바이스 (902)) 는 프로세서에 의해 실행되는 경우에 이 프로세서로 하여금, (1) 의사 난수 생성기의 재시작 시에 주 시드 파일의 무결성이 손상되었는지 여부를 판정하게 하고, (2) 주 시드 파일의 무결성이 성공적으로 검증되면, 주 시드 파일의 초기화 시드로 의사 난수 생성기의 스타트업 내부 상태를 초기화하게 하며, 및/또는 (3) 그렇지 않으면, 섀도 시드 파일의 초기화 시드로 의사 난수 생성기의 스타트업 내부 상태를 초기화하게 하는 하나 이상의 명령을 더 가질 수도 있다.
따라서, (1) 사전-저장된 원시 시드로 의사 난수 생성기의 스타트업 내부 상 태를 초기화하는 수단, (2) 저장된 원시 시드가 한번 이용된 후에 이를 파괴하는 수단, (3) 하나 이상의 예측불가능한 엔트로피 소스로부터 새로운 시드를 획득하는 수단, (4) 새로운 시드로 의사 난수 생성기의 내부 상태를 예측불가능한 상태로 변경하는 수단, (5) 의사 난수 생성기의 변경된 내부 상태에 기초하여 의사 랜덤 출력을 생성하는 수단, 및/또는 (6) 의사 난수 생성기의 후속 스타트업 내부 상태를 위한 초기화 시드로서 이 의사 랜덤 출력을 시드 파일에 저장하는 수단을 포함하는 의사 난수 생성기가 제공된다. 이 의사 난수 생성기는 (7) 의사 난수 생성기의 제조 동안에 안전한 위치에 원시 시드를 저장하는 수단, (8) 의사 난수 생성기가 재시작된 후에 시드 파일로부터 초기화 시드를 검색하는 수단, (9) 초기화 시드로 의사 난수 생성기의 스타트업 내부 상태를 초기화하는 수단, 및/또는 (10) 시드 파일의 컨텐츠를 의사 난수 생성기로부터 획득된 새로운 초기화 시드로 대체하는 수단을 더 포함할 수도 있다.
도 1, 도 2, 도 3, 도 4, 도 5, 도 6, 도 7, 도 8 및/또는 도 9 에 도시된 컴포넌트, 단계, 및/또는 기능 중 하나 이상은 의사 난수 생성 동작에 영향을 미치지 않고 단일 컴포넌트, 단계, 또는 기능으로 재배열 및/또는 결합되거나 수개의 컴포넌트, 단계, 또는 기능으로 구현될 수도 있다. 추가적인 엘리먼트, 컴포넌트, 단계, 및/또는 기능이 또한 본 발명을 벗어나지 않고 추가될 수도 있다. 도 1, 도 2, 도 4, 도 7 및/또는 도 9 에 도시된 장치, 디바이스, 및/또는 컴포넌트는 도 3, 도 5, 도 6, 및/또는 도 8 에 도시된 방법, 특징, 또는 단계 중 하나 이상을 수행하도록 구성될 수도 있다. 본 명세서에서 설명된 신규 알고리즘은 소프트웨어 및/또는 내장된 하드웨어로 효율적으로 구현될 수도 있다.
당업자는 본 명세서에서 개시된 실시형태와 관련하여 설명된 각종의 예시적인 논리 블록, 모듈, 회로, 및 알고리즘 단계가 전자 하드웨어, 컴퓨터 소프트웨어, 또는 이 둘의 조합으로서 구현될 수도 있다는 것을 또한 인식한다. 하드웨어와 소프트웨어의 이러한 교환가능성을 명확히 설명하기 위해, 각종의 예시적인 컴포넌트, 블록, 모듈, 회로, 및 단계는 일반적으로 그 기능성의 관점에서 상술되었다. 이러한 기능성이 하드웨어로 구현되는지 또는 소프트웨어로 구현되는지 여부는 전체 시스템에 부과된 설계 제약 및 특정 애플리케이션에 좌우된다.
실시형태의 설명은 청구의 범위를 제한하는 것이 아니라 예시하는 것으로 의도된다. 이로서, 본 교시는 다른 타입의 장치에 손쉽게 적용될 수 있고, 당업자에게는 많은 변형, 변경, 및 변동이 명백하다.

Claims (30)

  1. 의사 난수 생성기를 동작시키는 방법으로서,
    사전-저장된 원시 시드로 상기 의사 난수 생성기의 스타트업 내부 상태를 초기화하는 단계;
    상기 사전-저장된 원시 시드가 한번 이용된 후에 상기 사전-저장된 원시 시드를 파괴하는 단계;
    하나 이상의 예측불가능한 엔트로피 소스로부터 새로운 시드를 획득하는 단계;
    상기 새로운 시드로 상기 의사 난수 생성기의 내부 상태를 예측불가능한 상태로 변경하는 단계;
    상기 의사 난수 생성기의 변경된 내부 상태에 기초하여 의사 랜덤 출력을 생성하는 단계; 및
    상기 의사 난수 생성기의 후속 스타트업 내부 상태를 위한 초기화 시드로서 상기 의사 랜덤 출력을 시드 파일에 저장하는 단계를 포함하며,
    상기 의사 랜덤 출력을 시드 파일에 저장하는 단계는,
    상기 의사 랜덤 출력을 안전한 파일 시스템의 주 시드 파일에 저장하는 단계; 및
    상기 의사 랜덤 출력을 상기 안전한 파일 시스템의 섀도 시드 파일에 저장하는 단계를 포함하며,
    상기 방법은,
    상기 의사 난수 생성기의 재시작 시에 상기 주 시드 파일의 무결성이 손상되었는지 여부를 판정하는 단계;
    상기 주 시드 파일의 무결성이 성공적으로 검증되면, 상기 주 시드 파일의 초기화 시드로 상기 의사 난수 생성기의 상기 스타트업 내부 상태를 초기화하는 단계; 및
    상기 주 시드 파일의 무결성이 성공적으로 검증되지 않으면, 상기 섀도 시드 파일의 초기화 시드로 상기 의사 난수 생성기의 상기 스타트업 내부 상태를 초기화하는 단계를 더 포함하는 것을 특징으로 하는 의사 난수 생성기의 동작 방법.
  2. 제 1 항에 있어서,
    상기 의사 난수 생성기의 제조 동안에 상기 사전-저장된 원시 시드를 안전한 위치에 저장하는 단계를 더 포함하는, 의사 난수 생성기의 동작 방법.
  3. 제 2 항에 있어서,
    인터벌 타이머에 따라 상기 의사 난수 생성기의 리시딩이 주기적으로 수행되는, 의사 난수 생성기의 동작 방법.
  4. 제 1 항에 있어서,
    상기 의사 난수 생성기가 재시작된 후에 상기 시드 파일로부터 상기 초기화 시드를 검색하는 단계;
    상기 초기화 시드로 상기 의사 난수 생성기의 상기 스타트업 내부 상태를 초기화하는 단계; 및
    상기 의사 난수 생성기로부터 획득된 새로운 초기화 시드로 상기 시드 파일의 컨텐츠를 대체하는 단계를 더 포함하는, 의사 난수 생성기의 동작 방법.
  5. 제 1 항에 있어서,
    상기 의사 난수 생성기가 재시작된 후에 상기 시드 파일로부터 상기 초기화 시드를 검색하는 단계;
    신뢰 소스로부터 시간값을 획득하는 단계;
    상기 시간값과 상기 초기화 시드를 결합하여, 변경된 초기화 시드를 획득하는 단계;
    상기 변경된 초기화 시드로 상기 의사 난수 생성기의 스타트업 내부 상태를 초기화하는 단계; 및
    상기 의사 난수 생성기의 의사 랜덤 출력으로부터 획득된 새로운 초기화 시드로 상기 시드 파일의 컨텐츠를 대체하는 단계를 더 포함하는, 의사 난수 생성기의 동작 방법.
  6. 제 5 항에 있어서,
    상기 시간값과 상기 초기화 시드는, 상기 시간값이 상기 변경된 초기화 시드의 전체 범위로 분산되도록 결합되는, 의사 난수 생성기의 동작 방법.
  7. 삭제
  8. 삭제
  9. 의사 난수 생성기로서,
    사전-저장된 원시 시드로 상기 의사 난수 생성기의 스타트업 내부 상태를 초기화하는 수단;
    상기 사전-저장된 원시 시드가 한번 이용된 후에 상기 사전-저장된 원시 시드를 파괴하는 수단;
    하나 이상의 예측불가능한 엔트로피 소스로부터 새로운 시드를 획득하는 수단;
    상기 새로운 시드로 상기 의사 난수 생성기의 내부 상태를 예측불가능한 상태로 변경하는 수단;
    상기 의사 난수 생성기의 변경된 내부 상태에 기초하여 의사 랜덤 출력을 생성하는 수단; 및
    상기 의사 난수 생성기의 후속 스타트업 내부 상태를 위한 초기화 시드로서 상기 의사 랜덤 출력을 시드 파일에 저장하는 수단을 포함하며,
    상기 의사 랜덤 출력을 시드 파일에 저장하는 수단은,
    상기 의사 랜덤 출력을 안전한 파일 시스템의 주 시드 파일에 저장하는 수단; 및
    상기 의사 랜덤 출력을 상기 안전한 파일 시스템의 섀도 시드 파일에 저장하는 수단을 포함하며,
    상기 의사 난수 생성기는,
    상기 의사 난수 생성기의 재시작 시에 상기 주 시드 파일의 무결성이 손상되었는지 여부를 판정하는 수단;
    상기 주 시드 파일의 무결성이 성공적으로 검증되면, 상기 주 시드 파일의 초기화 시드로 상기 의사 난수 생성기의 상기 스타트업 내부 상태를 초기화하는 수단; 및
    상기 주 시드 파일의 무결성이 성공적으로 검증되지 않으면, 상기 섀도 시드 파일의 초기화 시드로 상기 의사 난수 생성기의 상기 스타트업 내부 상태를 초기화하는 수단을 더 포함하는 것을 특징으로 하는 의사 난수 생성기.
  10. 제 9 항에 있어서,
    상기 의사 난수 생성기의 제조 동안에 상기 사전-저장된 원시 시드를 안전한 위치에 저장하는 수단을 더 포함하는, 의사 난수 생성기.
  11. 제 9 항에 있어서,
    상기 의사 난수 생성기가 재시작된 후에 상기 시드 파일로부터 상기 초기화 시드를 검색하는 수단;
    상기 초기화 시드로 상기 의사 난수 생성기의 상기 스타트업 내부 상태를 초기화하는 수단; 및
    상기 의사 난수 생성기로부터 획득된 새로운 초기화 시드로 상기 시드 파일의 컨텐츠를 대체하는 수단을 더 포함하는, 의사 난수 생성기.
  12. 제 9 항에 있어서,
    상기 의사 난수 생성기가 재시작된 후에 상기 시드 파일로부터 상기 초기화 시드를 검색하는 수단;
    신뢰 소스로부터 시간값을 획득하는 수단;
    상기 시간값과 상기 초기화 시드를 결합하여, 변경된 초기화 시드를 획득하는 수단;
    상기 변경된 초기화 시드로 상기 의사 난수 생성기의 상기 스타트업 내부 상태를 초기화하는 수단; 및
    상기 의사 난수 생성기의 의사 랜덤 출력으로부터 획득된 새로운 초기화 시드로 상기 시드 파일의 컨텐츠를 대체하는 수단을 더 포함하는, 의사 난수 생성기.
  13. 제 12 항에 있어서,
    상기 시간값과 상기 초기화 시드는, 상기 시간값이 상기 변경된 초기화 시드의 전체 범위로 분산되도록 결합되는, 의사 난수 생성기.
  14. 삭제
  15. 삭제
  16. 의사 난수 생성기로서,
    하나 이상의 시드 소스로부터 시드를 선택하도록 구성된 시드 선택 모듈;
    상기 시드 선택 모듈에 커플링되며, 상기 시드 선택 모듈에 의해 제공된 시드에 따라 상기 의사 난수 생성기의 내부 상태를 조정하도록 구성된 시딩 모듈; 및
    상기 시딩 모듈에 커플링되며, 상기 의사 난수 생성기의 상기 내부 상태에 기초하여 의사 랜덤 출력을 생성하도록 구성된 수 생성 모듈을 포함하며,
    상기 시드 선택 모듈은 또한,
    상기 의사 난수 생성기가 시작되는 것이 처음이면, 상기 의사 난수 생성기의 스타트업 내부 상태를 초기화하기 위해 사전-저장된 원시 시드를 선택하고;
    상기 의사 난수 생성기가 이전에 시작되었으면, 상기 의사 난수 생성기의 상기 스타트업 내부 상태를 초기화하기 위해 사전-저장된 시드 파일로부터 초기화 시드를 선택하도록 구성되며,
    상기 의사 난수 생성기는 상기 사전-저장된 시드 파일을 저장하는 안전한 파일 시스템을 더 포함하고,
    상기 사전-저장된 시드 파일은 주 시드 파일 및 섀도 시드 파일을 포함하며;
    상기 시드 선택 모듈은 또한,
    상기 의사 난수 생성기의 재시작 시에 상기 주 시드 파일의 무결성이 손상되었는지 여부를 판정하고;
    상기 주 시드 파일의 무결성이 성공적으로 검증되면, 상기 주 시드 파일의 초기화 시드로 상기 의사 난수 생성기의 상기 스타트업 내부 상태를 초기화하며;
    상기 주 시드 파일의 무결성이 성공적으로 검증되지 않으면, 상기 섀도 시드 파일의 초기화 시드로 상기 의사 난수 생성기의 상기 스타트업 내부 상태를 초기화하도록 구성되는 것을 특징으로 하는 의사 난수 생성기.
  17. 제 16 항에 있어서,
    상기 시드 선택 모듈은 또한, 상기 사전-저장된 원시 시드가 한번 이용된 후에 상기 사전-저장된 원시 시드를 파괴하도록 구성되는, 의사 난수 생성기.
  18. 제 16 항에 있어서,
    상기 수 생성 모듈은, 상기 사전-저장된 시드 파일에 저장되어 상기 초기화 시드로서 이용되는 의사 랜덤 출력을 제공하는, 의사 난수 생성기.
  19. 제 16 항에 있어서,
    상기 시딩 모듈에 커플링된 신뢰 시간 소스를 더 포함하며,
    상기 시딩 모듈은 또한,
    상기 신뢰 시간 소스로부터 시간값을 획득하고;
    상기 시간값과 상기 초기화 시드를 결합하여, 변경된 초기화 시드를 획득하며;
    상기 변경된 초기화 시드로 상기 의사 난수 생성기의 스타트업 내부 상태를 초기화하도록 구성되는, 의사 난수 생성기.
  20. 제 19 항에 있어서,
    상기 시간값과 상기 초기화 시드는, 상기 시간값이 상기 변경된 초기화 시드의 전체 범위로 분산되도록 결합되는, 의사 난수 생성기.
  21. 삭제
  22. 프로세싱 회로로서,
    의사 난수 생성기의 내부 상태를 저장하는 하나 이상의 내부 상태 레지스터를 포함하는 메모리 디바이스; 및
    상기 메모리 디바이스에 커플링된 프로세싱 디바이스를 포함하며,
    상기 프로세싱 디바이스는,
    사전-저장된 원시 시드로 상기 의사 난수 생성기의 스타트업 내부 상태를 초기화하고;
    상기 사전-저장된 원시 시드가 한번 이용된 후에 상기 사전-저장된 원시 시드를 파괴하고;
    하나 이상의 예측불가능한 엔트로피 소스로부터 새로운 시드를 획득하고;
    상기 새로운 시드를 상기 의사 난수 생성기에 리시딩하여, 상기 의사 난수 생성기의 내부 상태를 예측불가능한 상태로 변경하고;
    상기 의사 난수 생성기의 변경된 내부 상태에 기초하여 의사 랜덤 출력을 생성하며;
    상기 의사 난수 생성기의 후속 스타트업 내부 상태를 위한 초기화 시드로서 상기 의사 랜덤 출력을 시드 파일에 저장하도록 구성되며,
    상기 프로세싱 디바이스는 또한,
    상기 의사 랜덤 출력을 안전한 파일 시스템의 주 시드 파일에 저장하고;
    상기 의사 랜덤 출력을 상기 안전한 파일 시스템의 섀도 시드 파일에 저장하도록 구성되며,
    상기 프로세싱 디바이스는 또한,
    상기 의사 난수 생성기의 재시작 시에 상기 주 시드 파일의 무결성이 손상되었는지 여부를 판정하고;
    상기 주 시드 파일의 무결성이 성공적으로 검증되면, 상기 주 시드 파일의 초기화 시드로 상기 의사 난수 생성기의 상기 스타트업 내부 상태를 초기화하며;
    상기 주 시드 파일의 무결성이 성공적으로 검증되지 않으면, 상기 섀도 시드 파일의 초기화 시드로 상기 의사 난수 생성기의 상기 스타트업 내부 상태를 초기화하도록 구성되는 것을 특징으로 하는 프로세싱 회로.
  23. 제 22 항에 있어서,
    상기 프로세싱 디바이스는 또한,
    상기 의사 난수 생성기가 재시작된 후에 상기 시드 파일로부터 상기 초기화 시드를 검색하고;
    신뢰 소스로부터 시간값을 획득하고;
    상기 시간값과 상기 초기화 시드를 결합하여, 변경된 초기화 시드를 획득하고;
    상기 변경된 초기화 시드로 상기 의사 난수 생성기의 상기 스타트업 내부 상태를 초기화하며;
    상기 의사 난수 생성기의 의사 랜덤 출력으로부터 획득된 새로운 초기화 시드로 상기 시드 파일의 컨텐츠를 대체하도록 구성되는, 프로세싱 회로.
  24. 제 23 항에 있어서,
    상기 시간값과 상기 초기화 시드는, 상기 시간값이 상기 변경된 초기화 시드의 전체 범위로 분산되도록 결합되는, 프로세싱 회로.
  25. 삭제
  26. 삭제
  27. 머신-판독가능 매체로서,
    의사 랜덤 출력을 생성하며, 프로세서에 의해 실행되는 경우에 상기 프로세서로 하여금,
    사전-저장된 원시 시드로 의사 난수 생성기의 스타트업 내부 상태를 초기화하게 하고;
    상기 사전-저장된 원시 시드가 한번 이용된 후에 상기 사전-저장된 원시 시드를 파괴하게 하고;
    하나 이상의 예측불가능한 엔트로피 소스로부터 새로운 시드를 획득하게 하고;
    상기 새로운 시드를 상기 의사 난수 생성기에 리시딩하여, 상기 의사 난수 생성기의 내부 상태를 예측불가능한 상태로 변경하게 하고;
    상기 의사 난수 생성기의 변경된 내부 상태에 기초하여 의사 랜덤 출력을 생성하게 하며;
    상기 의사 난수 생성기의 후속 스타트업 내부 상태를 위한 초기화 시드로서 상기 의사 랜덤 출력을 시드 파일에 저장하게 하는 하나 이상의 명령을 가지며,
    상기 시드 파일은 안전한 파일 시스템의 주 시드 파일 및 섀도 시드 파일을 포함하고;
    상기 머신-판독가능 매체는, 프로세서에 의해 실행되는 경우에 상기 프로세서로 하여금,
    상기 의사 난수 생성기의 재시작 시에 상기 주 시드 파일의 무결성이 손상되었는지 여부를 판정하게 하고;
    상기 주 시드 파일의 무결성이 성공적으로 검증되면, 상기 주 시드 파일의 초기화 시드로 상기 의사 난수 생성기의 상기 스타트업 내부 상태를 초기화하게 하며;
    상기 주 시드 파일의 무결성이 성공적으로 검증되지 않으면, 상기 섀도 시드 파일의 초기화 시드로 상기 의사 난수 생성기의 상기 스타트업 내부 상태를 초기화하게 하는 하나 이상의 명령을 더 갖는 것을 특징으로 하는 머신-판독가능 매체.
  28. 제 27 항에 있어서,
    프로세서에 의해 실행되는 경우에 상기 프로세서로 하여금,
    상기 의사 난수 생성기가 재시작된 후에 상기 시드 파일로부터 상기 초기화 시드를 검색하게 하고;
    신뢰 소스로부터 시간값을 획득하게 하고;
    상기 시간값과 상기 초기화 시드를 결합하여, 변경된 초기화 시드를 획득하게 하고;
    상기 변경된 초기화 시드로 상기 의사 난수 생성기의 상기 스타트업 내부 상태를 초기화하게 하며;
    상기 의사 난수 생성기의 의사 랜덤 출력으로부터 획득된 새로운 초기화 시드로 상기 시드 파일의 컨텐츠를 대체하게 하는 하나 이상의 명령을 더 갖는, 머신-판독가능 매체.
  29. 제 28 항에 있어서,
    상기 시간값과 상기 초기화 시드는, 상기 시간값이 상기 변경된 초기화 시드의 전체 범위로 분산되도록 결합되는, 머신-판독가능 매체.
  30. 삭제
KR1020097024254A 2007-04-23 2008-04-23 의사 난수 생성기에 대한 초기 시드 관리 KR101237104B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/738,972 2007-04-23
US11/738,972 US20080263117A1 (en) 2007-04-23 2007-04-23 Initial seed management for pseudorandom number generator
PCT/US2008/061341 WO2008131444A2 (en) 2007-04-23 2008-04-23 Initial seed management for pseudorandom number generator

Publications (2)

Publication Number Publication Date
KR20100003301A KR20100003301A (ko) 2010-01-07
KR101237104B1 true KR101237104B1 (ko) 2013-02-25

Family

ID=39682744

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020097024254A KR101237104B1 (ko) 2007-04-23 2008-04-23 의사 난수 생성기에 대한 초기 시드 관리

Country Status (8)

Country Link
US (1) US20080263117A1 (ko)
EP (1) EP2150888B1 (ko)
JP (1) JP2010525417A (ko)
KR (1) KR101237104B1 (ko)
CN (1) CN101663642A (ko)
AT (1) ATE534949T1 (ko)
TW (1) TW200901723A (ko)
WO (1) WO2008131444A2 (ko)

Families Citing this family (57)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8019802B2 (en) * 2005-08-24 2011-09-13 Qualcomm Incorporated Cryptographically secure pseudo-random number generator
KR20080104594A (ko) * 2007-05-28 2008-12-03 삼성전자주식회사 오프라인 장치를 위한 온라인 인증서 검증 장치 및 방법
US8250129B2 (en) * 2007-06-22 2012-08-21 Lsi Corporation Cryptographic random number generator using finite field operations
US8369521B2 (en) * 2008-10-17 2013-02-05 Oracle International Corporation Smart card based encryption key and password generation and management
US8226467B2 (en) * 2008-11-12 2012-07-24 Igt Gaming system and method enabling player participation in selection of seed for random number generator
US9680637B2 (en) 2009-05-01 2017-06-13 Harris Corporation Secure hashing device using multiple different SHA variants and related methods
US8239733B2 (en) * 2009-11-27 2012-08-07 Skymedi Corporation Memory device with protection capability and method of accessing data therein
GB2484931B (en) * 2010-10-26 2014-04-30 Nds Ltd Efficient delivery of structured data items
US8682948B2 (en) * 2011-01-06 2014-03-25 Microsoft Corporation Scalable random number generation
JP2012198065A (ja) * 2011-03-18 2012-10-18 Fujitsu Ltd 半導体集積回路、試験方法、情報処理装置、及びプログラム
WO2012159192A1 (en) * 2011-05-26 2012-11-29 Certicom Corp. Randomness for encryption operations
KR101818445B1 (ko) 2011-07-08 2018-01-16 삼성전자주식회사 메모리 컨트롤러, 이의 동작 방법, 및 상기 메모리 컨트롤러를 포함하는 전자 장치들
KR101284481B1 (ko) * 2011-07-15 2013-07-16 아이리텍 잉크 생체이미지 정보를 포함하는 일회용 비밀번호를 이용한 인증방법 및 장치
CN103092566B (zh) * 2011-11-07 2016-08-24 国民技术股份有限公司 伪随机数种子、伪随机数生成的方法和装置
US20130201316A1 (en) 2012-01-09 2013-08-08 May Patents Ltd. System and method for server based control
US9092283B2 (en) 2012-03-30 2015-07-28 Freescale Semiconductor, Inc. Systems with multiple port random number generators and methods of their operation
US8856198B2 (en) * 2012-03-30 2014-10-07 Freescale Semiconductor, Inc. Random value production methods and systems
KR101373283B1 (ko) 2012-04-23 2014-03-11 한국전자통신연구원 비휘발성 메모리를 이용한 이중 트랙 방식의 난수 발생 방법 및 이를 위한 장치
US8954723B2 (en) 2012-05-09 2015-02-10 International Business Machines Corporation Anonymization of data within a streams environment
US9032005B2 (en) 2012-05-22 2015-05-12 Electronics And Telecommunications Research Institute Random number generation method and apparatus using low-power microprocessor
KR101438010B1 (ko) * 2012-05-22 2014-09-05 한국전자통신연구원 저전력 마이크로프로세서를 이용한 난수 발생 방법 및 이를 위한 장치
GB2502541A (en) * 2012-05-30 2013-12-04 Ibm Balancing consumption of random data using multiple sources with different levels of entropy
US9086936B2 (en) 2012-07-31 2015-07-21 International Business Machines Corporation Method of entropy distribution on a parallel computer
US8966310B2 (en) 2012-11-15 2015-02-24 Elwha Llc Redundancy for loss-tolerant data in non-volatile memory
US9323499B2 (en) * 2012-11-15 2016-04-26 Elwha Llc Random number generator functions in memory
US9026719B2 (en) 2012-11-15 2015-05-05 Elwha, Llc Intelligent monitoring for computation in memory
US9442854B2 (en) 2012-11-15 2016-09-13 Elwha Llc Memory circuitry including computational circuitry for performing supplemental functions
US8996951B2 (en) 2012-11-15 2015-03-31 Elwha, Llc Error correction with non-volatile memory on an integrated circuit
US9552690B2 (en) 2013-03-06 2017-01-24 Igt System and method for determining the volatility of a game based on one or more external data feeds
US9201629B2 (en) 2013-03-14 2015-12-01 International Business Machines Corporation Instruction for performing a pseudorandom number seed operation
US8873750B2 (en) 2013-03-14 2014-10-28 International Business Machines Corporation Instruction for performing a pseudorandom number generate operation
US9306876B1 (en) * 2013-04-01 2016-04-05 Marvell Israel (M.I.S.L) Ltd. Multibank egress queuing system in a network device
US9542156B2 (en) 2013-05-15 2017-01-10 Synopsys, Inc. Automatic control system and method for a true random number generator
DE102014206992A1 (de) * 2014-04-11 2015-10-15 Siemens Aktiengesellschaft Zufallszahlengenerator und Verfahren zum Erzeugen von Zufallszahlen
CN104469461A (zh) * 2014-12-19 2015-03-25 佛山市顺德区美的电热电器制造有限公司 随机数生成装置、电视机及随机数生成方法
US10348704B2 (en) * 2015-07-30 2019-07-09 Helder Silvestre Paiva Figueira Method for a dynamic perpetual encryption cryptosystem
CN106469042B (zh) * 2015-08-19 2019-05-28 阿里巴巴集团控股有限公司 伪随机数的生成方法和装置
CN105005462B (zh) * 2015-09-06 2017-08-08 电子科技大学 一种混合式随机数发生器及其产生随机数的方法
US10142103B2 (en) * 2015-12-07 2018-11-27 The Boeing Company Hardware assisted fast pseudorandom number generation
JP7013447B2 (ja) * 2016-08-19 2022-01-31 オラクル・インターナショナル・コーポレイション 多様なソースからのエントロピの収集
DE102016116042A1 (de) * 2016-08-29 2018-03-01 IPGATE Capital Holding AG Verfahren und System zum Öffnen und/oder Nutzung mindestens eines Fahrzeugs
US10503475B1 (en) * 2016-11-09 2019-12-10 The Florida State University Research Foundation, Inc. Forensically reproducible random number generator and associated method of use
CN107046564A (zh) * 2017-01-19 2017-08-15 腾讯科技(深圳)有限公司 一种数据选取方法及相关装置
US11175893B2 (en) * 2017-10-17 2021-11-16 Blue ArmorTechnologies, LLC Statistical object generator
US10776480B2 (en) 2018-04-02 2020-09-15 International Business Machines Corporation Producing volatile password hashing algorithm salts from hardware random number generators
US11012425B2 (en) 2018-12-28 2021-05-18 Micron Technology, Inc. Replay protection nonce generation
CN110058843B (zh) * 2019-03-27 2023-03-03 创新先进技术有限公司 伪随机数的生成方法、装置和服务器
US11347860B2 (en) * 2019-06-28 2022-05-31 Seagate Technology Llc Randomizing firmware loaded to a processor memory
US11580234B2 (en) 2019-06-29 2023-02-14 Intel Corporation Implicit integrity for cryptographic computing
US11575504B2 (en) 2019-06-29 2023-02-07 Intel Corporation Cryptographic computing engine for memory load and store units of a microarchitecture pipeline
US11924338B2 (en) * 2020-11-04 2024-03-05 Advanced Micro Devices, Inc. Split random number generator
US11669625B2 (en) 2020-12-26 2023-06-06 Intel Corporation Data type based cryptographic computing
US11580035B2 (en) 2020-12-26 2023-02-14 Intel Corporation Fine-grained stack protection using cryptographic computing
CN116034339A (zh) * 2021-08-25 2023-04-28 京东方科技集团股份有限公司 用于生成伪随机数的方法、随机数生成器和计算机可读介质
CN114466012B (zh) * 2022-02-07 2022-11-25 北京百度网讯科技有限公司 内容初始化方法、装置、电子设备和存储介质
US20240022400A1 (en) * 2022-07-12 2024-01-18 Veiovia Ltd. Computer implemented methods, apparatuses and software for random number generation based on genetic information
CN115277684A (zh) * 2022-09-29 2022-11-01 安徽华云安科技有限公司 文件传输方法、装置、设备以及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6104810A (en) * 1997-05-15 2000-08-15 International Business Machines Corporation Pseudorandom number generator with backup and restoration capability
KR20020008849A (ko) * 1999-06-08 2002-01-31 션 엘. 맥클린톡 견고한 난수 발생기
US20060104443A1 (en) * 2004-11-12 2006-05-18 Chari Suresh N Method, apparatus and system for resistance to side channel attacks on random number generators
WO2007037869A1 (en) * 2005-08-24 2007-04-05 Qualcomm Incorporated Cryptographically secure pseudo-random number generator

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0675041U (ja) * 1993-03-19 1994-10-21 横河電機株式会社 データ二重化装置
US5727063A (en) * 1995-11-27 1998-03-10 Bell Communications Research, Inc. Pseudo-random generator
US5732138A (en) * 1996-01-29 1998-03-24 Silicon Graphics, Inc. Method for seeding a pseudo-random number generator with a cryptographic hash of a digitization of a chaotic system
US5778069A (en) * 1996-04-10 1998-07-07 Microsoft Corporation Non-biased pseudo random number generator
US6044388A (en) * 1997-05-15 2000-03-28 International Business Machine Corporation Pseudorandom number generator
US6430170B1 (en) * 1999-05-27 2002-08-06 Qualcomm Inc. Method and apparatus for generating random numbers from a communication signal
US7571199B1 (en) * 2000-11-15 2009-08-04 Microsoft Corporation Method and apparatus for generating random numbers
US6829628B2 (en) * 2001-05-02 2004-12-07 Portalplayer, Inc. Random number generation method and system
US7007050B2 (en) * 2001-05-17 2006-02-28 Nokia Corporation Method and apparatus for improved pseudo-random number generation
US20040162864A1 (en) * 2002-07-08 2004-08-19 Globespan Virata Inc. System and method for generating pseudo-random numbers
US7233965B2 (en) * 2002-09-30 2007-06-19 Sun Microsystems, Inc. Continuous random number generation method and apparatus
JP4294938B2 (ja) * 2002-11-01 2009-07-15 秀治 小川 ファイル転送システム、キーサーバ装置、ファイル送信装置、ファイル蓄積装置、ファイル受信装置、ならびに、プログラム
US6866584B2 (en) * 2003-02-21 2005-03-15 Igt Apparatus and method for generating a pool of seeds for a central determination gaming system
DE10357782B3 (de) * 2003-12-10 2005-05-04 Infineon Technologies Ag Vorrichtung und Verfahren zum Erzeugen von Zufallszahlen mit einem Pseudozufallsgenerator
US7359509B2 (en) * 2004-12-01 2008-04-15 Pitney Bowes Inc. Method and system for generation of cryptographic keys and the like

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6104810A (en) * 1997-05-15 2000-08-15 International Business Machines Corporation Pseudorandom number generator with backup and restoration capability
KR20020008849A (ko) * 1999-06-08 2002-01-31 션 엘. 맥클린톡 견고한 난수 발생기
US20060104443A1 (en) * 2004-11-12 2006-05-18 Chari Suresh N Method, apparatus and system for resistance to side channel attacks on random number generators
WO2007037869A1 (en) * 2005-08-24 2007-04-05 Qualcomm Incorporated Cryptographically secure pseudo-random number generator

Also Published As

Publication number Publication date
WO2008131444A3 (en) 2009-04-23
KR20100003301A (ko) 2010-01-07
JP2010525417A (ja) 2010-07-22
ATE534949T1 (de) 2011-12-15
US20080263117A1 (en) 2008-10-23
EP2150888B1 (en) 2011-11-23
CN101663642A (zh) 2010-03-03
TW200901723A (en) 2009-01-01
WO2008131444A2 (en) 2008-10-30
EP2150888A2 (en) 2010-02-10

Similar Documents

Publication Publication Date Title
KR101237104B1 (ko) 의사 난수 생성기에 대한 초기 시드 관리
US8019802B2 (en) Cryptographically secure pseudo-random number generator
US8135766B2 (en) Method, apparatus and system for resistance to side channel attacks on random number generators
US9842212B2 (en) System and method for a renewable secure boot
KR102013841B1 (ko) 데이터의 안전한 저장을 위한 키 관리 방법 및 그 장치
US9235712B1 (en) Securing external memory data
Barker et al. Recommendation for random bit generator (RBG) constructions
US11243744B2 (en) Method for performing a trustworthiness test on a random number generator
JP2008204459A (ja) 機密データを処理する処理装置のハイバーネイション
US11646867B2 (en) Systems and methods implementing countermeasures to phase tracking attacks on ring oscillator based entropy sources
US7681046B1 (en) System with secure cryptographic capabilities using a hardware specific digital secret
US20040162864A1 (en) System and method for generating pseudo-random numbers
Van Herrewege et al. Software only, extremely compact, Keccak-based secure PRNG on ARM Cortex-M
Kietzmann et al. Puf for the commons: Enhancing embedded security on the os level
Gross et al. Enhancing the Security of FPGA-SoCs via the Usage of ARM TrustZone and a Hybrid-TPM
EP3657318A1 (en) Client-side entropy collection for server-side usage
US12015693B2 (en) Information security protection system and information security protection method
EP4173221A1 (en) Security component and method of operation
US20230418603A1 (en) System and Method for Securing Nonvolatile Memory for Execute-in-Place
US20230177154A1 (en) Sparse Encodings for Control Signals
US20240193309A1 (en) Secure Cryptographic Coprocessor
JP2024513716A (ja) 読み取り専用メモリ(rom)のセキュリティ

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
LAPS Lapse due to unpaid annual fee