KR101292382B1 - 의사 난수 생성기 시드의 적응적 생성 - Google Patents

의사 난수 생성기 시드의 적응적 생성 Download PDF

Info

Publication number
KR101292382B1
KR101292382B1 KR1020117002731A KR20117002731A KR101292382B1 KR 101292382 B1 KR101292382 B1 KR 101292382B1 KR 1020117002731 A KR1020117002731 A KR 1020117002731A KR 20117002731 A KR20117002731 A KR 20117002731A KR 101292382 B1 KR101292382 B1 KR 101292382B1
Authority
KR
South Korea
Prior art keywords
entropy
seed
strength
data bits
cryptographic operation
Prior art date
Application number
KR1020117002731A
Other languages
English (en)
Other versions
KR20110029164A (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 KR20110029164A publication Critical patent/KR20110029164A/ko
Application granted granted Critical
Publication of KR101292382B1 publication Critical patent/KR101292382B1/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
    • 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)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Storage Device Security (AREA)

Abstract

전자 디바이스를 위한 암호 오퍼레이션에서 사용되기 위한 시드는, 암호 오퍼레이션의 선정된 안전성 강도를 만족시키기 위해 필요한 엔트로피 데이터 비트들의 수를 추정함으로써 결정된다. 추정은 엔트로피 데이터 비트들의 스트링의 엔트로피 강도를 기반으로 한다. 엔트로피 강도는 무작위성(randomness)의 척도이다. 또한, 엔트로피 데이터 비트들의 추정된 수에 따라 시드의 결정을 상이하게 가이드할 수 있다.

Description

의사 난수 생성기 시드의 적응적 생성{ADAPTIVE GENERATION OF A PSEUDO RANDOM NUMBER GENERATOR SEED}
전자 디바이스들은 도박, 통계적 샘플링, 컴퓨터 시뮬레이션 등의 암호 작성 또는 다른 용도를 위해, 또한, 랜덤 시퀀스가 예측할 수 없는 결과를 생성하는데 유용한 다른 영역들을 위해 랜덤 시퀀스들을 생성한다.
일부 전자 디바이스들은 하드웨어 난수 생성기를 사용해서 랜덤 시퀀스들을 생성하도록 구성된다. 그러나, 일부 전자 디바이스들은 하드웨어 난수 생성기들 없이 랜덤 시퀀스들을 생성하도록 구성된다. 이러한 전자 디바이스들은 랜덤 시퀀스들을 생성하기 위해 소프트웨어에 의존한다. 이러한 속성의 소프트웨어는, 전형적인 하드웨어 난수 생성기에 비해 충실히(truly) 랜덤 시퀀스를 생성하지는 않기 때문에, "의사 난수 생성기"(PRNG;pseudo random number generator)라고 한다.
의사 난수 생성기는 초기 시드로부터 번호들의 시퀀스를 생성한다. 부적당한 초기 시드를 선택하면, 불충분한 랜덤 시퀀스가 야기될 수 있다. 암호 방식에서, 이는 안전하지 않은 암호 방식을 의미한다. 다른 영역들에서, 이는, 결과들이 예측될 수 있음을 의미한다. 따라서, 의사 난수 생성기가 충분한 효능(efficacy)의 의사 랜덤 시퀀스들을 생성하도록, 예를 들어, 암호 방식이 안전하고 다른 결과들이 쉽게 예측될 수 없도록, 양호한 시드를 선택하는 것이 중요하다.
예측할 수 없는 번호들을 생성하는 시스템 또는 플랫폼에서 발생하는 예측할 수 없는 이벤트들을 사용/집중함으로써 시드의 효능이 증가될 수 있다. 이 때에, 예측할 수 없는 번호들은 더 큰 효능의 초기 시드를 유도하는데에 사용될 수 있다. 유효하면, 마우스 이동, 키 스트로크, 네트워크 트래픽, 열 잡음, 및 전기 잡음 모두가 예측할 수 없는 번호들을 생성하기 위한 예측할 수 없는 이벤트들로서 사용될 수 있다.
그러나, 예측할 수 없는 번호들의 모든 소스들이 모든 시스템 또는 모든 플랫폼에서 유효한 것은 아니다. 예를 들어, 마우스, 키보드, 네트워크, 및/또는 팬이 디스크리스(diskless) 셋탑 박스 플랫폼 또는 다른 내장 시스템에서 유효하지 않을 수도 있다. 예측할 수 없는 번호들의 소스들이 시스템 또는 플랫폼에서 유효하더라도, 일부 애플리케이션들은 희망 효능의 양호한 시드를 유도하는데 시간이 너무 오래 걸린다. 예를 들어, PC에서 실행되는 일부 애플리케이션들의 부팅 프로세스는 안전한 의사 난수 시퀀스를 생성하는데 5초 보다 많이 걸릴 수도 있다. 이는 너무 긴 시간이다.
충분한 랜덤 시퀀스들의 생성이 암호화의 안전성을 증가시키고/증가시키거나 쉽게 예측할 수 있는 결과들을 방지하기 위한 특정 용도들을 위해 요구되거나 유익할 수도 있지만, 이러한 태스크들은, 하드웨어 난수 생성기들을 갖지 않는 일부 시스템들, 일부 플랫폼들, 및 일부 애플리케이션들에서 어려울 수도 있다. 따라서, 암호화 또는 다른 영역들에서 사용하기 위한 양호한 시드를 결정하기 위한 안전하고 견고하며 고속의 플랫폼-플랙시블(platform-flexible) 기술이 유익할 수 있다.
본 발명의 특징들은 도면들을 참조한 이하의 설명으로부터 당업자에게 명백해질 것이다.
도 1은, 본 발명의 일 실시예에 따라, 안전한 암호 오퍼레이션에서 사용하기 위해, 또는, 예측할 수 없는 결과들이 요구되거나 유익한 경우의 다른 용도를 위해 의사 난수 생성기의 엔트로피 입력의 소스로서 사용하기 위한 시드를 결정하도록 구성된 전자 디바이스(100)의 간단한 블록도를 도시한다.
도 2는, 본 발명의 일 실시예에 따라, 안전한 암호 오퍼레이션에서 사용하기 위해, 또는, 예측할 수 없는 결과들이 요구되거나 유익한 경우의 다른 용도를 위해 의사 난수 생성기의 엔트로피 입력의 소스로서 사용하기 위한 시드를 결정하는, 도 3의 실시예의 방법(300)을 구현하거나 실행하도록 구성된 컴퓨팅 장치의 블록도(200)를 도시한다.
도 3은 일 실시예에 따라, 안전한 암호 오퍼레이션에서 사용하기 위해, 또는, 예측할 수 없는 결과들이 요구되거나 유익한 경우의 다른 용도를 위해 의사 난수 생성기의 엔트로피 입력의 소스로서 사용하기 위한 시드를 결정하는 방법(300)의 플로우챠트를 도시한다.
편의상, 또한, 설명을 위해, 본 발명은 하나 이상의 실시예들을 주로 참조해서 기술된다. 이하의 설명에서, 다수의 특정 세부 사항들은 본 발명을 철저하게 이해시키기 위해 기재된다. 그러나, 본 발명이 이러한 특정 세부 사항으로 제한되지 않고 구현될 수 있음을 당업자는 알 것이다. 다른 실례들에서, 공지된 방법들 및 구조들은 본 발명의 실시예들의 설명을 불필요하게 불명료하게 하지 않도록 상세히 기술되지 않는다.
일 실시예에 따라, 안전한 암호 오퍼레이션 또는 예측할 수 없는 결과들이 요구되거나 유익한 경우의 다른 용도를 위해 예측할 수 없고 추측할 수 없는 랜덤 시드를 결정하기 위한, 안전하고 견고하며 고속의 플랫폼-플랙시블 방법이 기술된다.
암호 오퍼레이션은 정보를 숨기는데 사용된다. 예를 들어, 암호 오퍼레이션들은, 상업적 콘텐츠, 저작권 콘텐츠, 다른 용도 콘텐츠, 또는 안전성을 요구하거나 안전성에서 이익을 얻을 수 있는 임의의 콘텐츠를 포함하는 콘텐츠의 소유자들, 분배자들, 및 사용자들에 의해 사용된다. 이러한 암호 오퍼레이션들은 이러한 콘텐츠의 카피, 분배, 액세스 및 사용을 보안하고, 숨기고, 저장하고, 제어 및/또는 관리하는데 사용되며, "디지털 권리 관리" 오퍼레이션(DRM)이라고 한다. 이 때에, 의사 난수 생성기가 DRM 오퍼레이션들을 위한 기본으로서 사용될 수 있다.
의사 난수 생성기는 의사 랜덤 시퀀스를 생성하기 위해 의사 난수 생성기를 초기화 또는 인스턴스화하는데 시드를 사용한다. 의사 랜덤 시퀀스는 의사 난수, 번호들의 의사 랜덤 시퀀스, 또는 진실로 예측할 수 없는 난수들의 시퀀스에 근사하는 속성들을 갖도록 의도된 의사 난수들 또는 시퀀스들의 하나 이상의 집합들로서 칭해질 수도 있다. 통상, 시드 자체는 난수 시퀀스이며, 시퀀스, 비트 스트링 등으로 칭해질 수 있다. 그러나, 시드는 통상 시드로부터 생성되는 전형적인 의사 랜덤 시퀀스 보다 비트 길이가 더 짧다.
통상 의사 난수 생성기가 결정론적이기에, 동일한 시드 및 동일한 의사 난수 생성기는 동일한 의사 랜덤 시퀀스를 출력할 것이다. 의사 랜덤 시퀀스 자체는 "결정론적"이며, 궁극적으로, 반복함을 의미한다. 의사 랜덤 시퀀스가 전적인 랜덤에 더 가까울수록, 암호 오퍼레이션 또는 예측할 수 없는 결과들이 요구되거나 유익한 경우의 다른 용도를 더 안전하게 한다. 거꾸로, 의사 랜덤 시퀀스가 전적인 랜덤으로부터 더 멀어질수록, 암호 오퍼레이션 또는 다른 용도는 덜 안전하다. 따라서, 의사 랜덤 시퀀스는, 1) 의사 난수 생성기 및 2) 의사 랜덤 시퀀스를 생성하는데 사용되는 시드의 정보(knowledge)를 사용해서 "어택(attacked)" 또는 "해킹(hacked)"될 수 있다.
다행히도, 시드는 어태커/해커의 일생동안 "브루트 포스(brute force)"로 시드를 획득할 수 없을 만큼 많은 값들을 가질 수 있는데, 이는 시드의 각각의 모든 가능한 값을 계산해서, 그 값을 예측할 수 없고 그 값을 여전히 획득할 수 없음을 의미한다. 따라서, 결정론적 의사 난수 생성기는 여전히 안전할 수 있다. 그러나, 의사 난수 생성기가 사용될 때마다(또는 거의 그 때마다), 추측할 수 없고 예측할 수 없는 랜덤 시드를 생성하는 것이 매우 중요하다.
시드가 추측할 수 없고 예측할 수 없으며 랜덤일 수 있더라도, 이러한 시드의 안전성은 여전히 3) 시드의 비밀(secrecy)에 좌우된다. 이러한 시드는 생성되어서 존재하며, 발견, 카피 및 사용될 수 있음을 의미한다. 시드가 더 비밀스러울수록, 암호 오퍼레이션 또는 다른 용도가 더 안전해지며, 그 역도 성립한다. 예를 들어, 시드가 전체 랜덤 로케이션에 더 가깝게 숨겨질수록, 오퍼레이션 또는 용도가 더 안전해진다. 역으로, 시드가 전체 랜덤 로케이션으로부터 더 멀리 숨겨질수록, 오퍼레이션 또는 용도는 덜 안전해진다. 따라서, 의사 랜덤 시퀀스는 3) 로케이션의 정보를 사용해서 "어택" 또는 "해킹"될 수 있다.
다행히, 시드는 안전이 유지될 수 있다. 예를 들어, 시드는 어태커/해커의 일생동안 "브루트 포스"로 시드의 위치를 찾을 수 없을 만큼 많은 로케이션들에 숨겨질 수 있는데, 이는 시드의 각각의 모든 가능한 로케이션을 탐색함으로써, 그 로케이션을 예측할 수 없고 그 로케이션을 여전히 획득할 수 없음을 의미한다. 그러나, 시드가 안전하게 유지될 수 있도록 시드를 숨기는 것이 매우 중요하다. 예를 들어, 시드는, 생성, 결정, 처리, 가이드, 변경, 변화 등이 발생될 때마다 예측할 수 없고 추측할 수 없는 랜덤 로케이션에 숨겨질 수 있다.
도 1로 돌아가면, 일 실시예에 따라, 본 명세서에 기술된 각종 기능들을 실행하도록 구성된 전자 디바이스(100)의 간단한 블록도가 도시되어 있다. 도 2에는, 일 실시예에 따라, 본 명세서에 기술된 각종 기능들을 실행하도록 구성된 컴퓨팅 장치(200)의 간단한 블록도가 도시되어 있다. 도 1의 실시예에서, 도 2에 대한 참조가 이루어진다. 그러나, 도 2는 훨씬 더 상세히 후술된다. 전자 디바이스(100)는 디지털 신호 프로세서 등의 미디어 컴포넌트, 범용 프로세서 등의 제어 컴포넌트, 또는 전자 디바이스(100)의 오퍼레이션으로 구현될 수 있는, 임의의 수의 미디어 및 제어 컴포넌트들을 포함할 수 있음을 알 것이다.
전자 디바이스(100)는, 의사 랜덤 시퀀스를 결정하는데 사용되는 시드를 생성하도록 구성된 소프트웨어, 펌웨어, 하드웨어, 또는 그 조합을 포함할 수 있다. 전자 디바이스(100)는 미디어 디바이스일 수 있다. 전자 디바이스(100)의 다른 일례들은, 휴대형 미디어 플레이어, 고정형 미디어 플레이어, 비디오 트랜스코딩을 지원하는데 사용되는 전자 디바이스, 하드웨어 난수 생성기를 갖지 않는 전자 디바이스, 셋탑 박스(예를 들어, 케이블, 위성, 또는 DSL), PC, 전화, 셀룰러 폰, 임의의 다른 전화, 텔레비젼 셋트, 무선 고선명도 인터페이스, 임의의 다른 고선명도 인터페이스, 컴퓨팅 디바이스, MP3 플레이어, 워키 토키 등의 트랜시버, DRM을 필요로 하는 디바이스, 또는 안전성 지원으로 사용 가능한 임의의 다른 디바이스 및/또는 프로세스를 포함하지만, 이들로만 제한되지는 않는다.
도 1에 도시된 바와 같이, 전자 디바이스(100)는 의사 난수 생성기(117), 엔트로피 데이터 획득 모듈(155), 엔트로피 평가 모듈(175), 시드 결정 모듈(180), 의사 랜덤 시퀀스 결정 모듈(185), 및 암호 오퍼레이션 모듈(190)을 포함한다. 또한, 도 1은 엔트로피 소스들(150N), 엔트로피 데이터 비트들(151), 키(들)(195), 및 콘텐츠/기타(199)를 도시한다.
엔트로피 데이터 획득 모듈(155)은 하나 이상의 엔트로피 소스들(150N)로부터 엔트로피 데이터 비트들(151)을 획득하는데, 여기서, N은 양의 정수이다. 또한, "엔트로피 데이터 비트"는, 1) 항상 예측 가능하거나, 2) 일부 시간에 예측 가능하거나, 또는 3) 전혀 예측 가능하지 않을 수 있다. 용어 "엔트로피 데이터" 또는 "엔트로피 데이터 비트"는 하나 이상의 비트들과 관련되며, 그 중 하나는 3가지 가능성들 중 한가지일 수 있다. "엔트로피 소스"는 이러한 "엔트로피 데이터 비트들"의 소스이다. 엔트로피 데이터 비트들(151)은 "비트 스트링"으로서 본 명세서에 언급된 것을 출력하기 위해 엔트로피 데이터 획득 모듈(155)에 의해 사용된다.
엔트로피 데이터 획득 모듈(155)은 측정 가능한 양의 시간을 사용해서 이러한 비트 스트링을 출력한다. 그러나, 암호 오퍼레이션에서 또는 다른 용도로 비트 스트링을 사용하기 위해서는, 이러한 비트 스트링은, 더 상세히 후술되는 바와 같이, 선정된 "안전성 강도(security strength)"를 만족시켜야만 한다. "안전성 강도"는 안전성의 척도이다. 이는, "엔트로피 강도"라는 용어로 정의될 수도 있다. "엔트로피 강도"는 무작위성(randomness)의 척도이다.
일례에서, 전자 디바이스(100) 또는 컴퓨팅 장치(200)의 사용자는, 엔트로피 데이터 획득 모듈(155)로부터 출력된 비트 스트링이 암호 오퍼레이션 또는 다른 용도로의 부팅 중에 선정된 안전성 강도를 만족시킬 때까지, 통상 대기한다. 부팅 중의 대기 시간이 길어서 사용자에게 부정적인 경험을 야기시킬 수 있기 때문에, 긴 대기 기간은 본 명세서에 기술된 바와 같이 방지된다. 다른 일례의 특징으로서, 사용자 디바이스가 프리징(frozen)되거나 크래싱되는(crashed) 실제(reality) 또는 지각(perception)이 방지된다. 이 때에, 엔트로피 데이터 획득 모듈(155)은 선정된 안전성 강도를 만족시키는 비트 스트링을 출력할 때 암호 오퍼레이션에 대한 부팅을 증진시키도록 구성된다. 역으로, 엔트로피 데이터 획득 모듈(155)은 암호 오퍼레이션 또는 다른 용도를 안전하게 하기 위해 선정된 안전성 강도를 만족시키는 비트 스트링을 출력하기 위해, 필요한 경우, 1회 이상 반복 실행하도록 구성된다. 모든 다른 경우가 동등한 경우, 1) 더 많은 반복은 부팅 시간이 더 길어짐을 의미하며, 2) 엔트로피 소스가 더 양호할수록 덜 반복되는 경향이 있으며, 3) 엔트로피 소스가 더 양호하게 사용될수록 덜 반복되는 경향이 있다. 통상, 더 양호한 엔트로피 소스는 (1) 임의의 소정의 시간에, (2) 더 자주, 전체적으로 더 많은 수의 예측할 수 없는 비트들이 획득될 수 있는 엔트로피 소스이다.
선정된 "안전성 강도"가 만족되지 않는다고 결정될 때, 엔트로피 데이터 획득 모듈(155)이 1) 선정된 안전성 강도를 만족시키는 비트 스트링을 출력하거나, 또는 2) 필수적인 선정된 안전성 강도를 만족시키는데는 실패하지만 선정된 "최대 수의 엔트로피 데이터 비트들"을 획득할 때까지, 엔트로피 데이터 획득 모듈(155)은 엔트로피 소스들(150N)로부터 추가의 엔트로피 데이터 비트들을 반복해서 획득하는데, 이는 본 명세서에서 더 후술된다. 후자의 시나리오에서, 전자 디바이스(100) 또는 컴퓨팅 장치(200)는, 본 명세서에 기술된 바와 같이, 다시 부팅되고 다시 개시될 수 있다.
엔트로피 데이터 획득 모듈(155)은, 또한, 옵션으로서, 단독으로, 또는 임의의 하나 이상의 추가 비트들, 임의의 하나 이상의 추가 비트 스트링들 등과 조합해서, 비트 스트링을 더 처리할 수 있다. 단독으로, 또는 임의의 조합으로, 엔트로피 데이터 획득 모듈(155)에 의해 실행될 수 있는 프로세싱의 일례들은, 조합; 연결(concatenating); 해싱; 매핑; 및 변환을 포함한다. 그러나, 본 명세서에 일례로서 열거되는 바 외의 추가 프로세싱이 엔트로피 데이터 획득 모듈(155)에 의해 실행될 수도 있음을 알 것이다. 다른 프로세싱을 위해 구성됨으로써, 엔트로피 데이터 획득 모듈(155)은 쉽게 예측될 수 없으며 쉽게 위치를 찾을 수도 없는 값들을 갖는 시드들의 생성을 적응적으로 가이드하도록 동작하는 전자 디바이스(100)에서 동작하도록 구성된다.
이러한 방식으로 처리함으로써(또는, 경우에 따라서, 이러한 방식으로 추가 처리를 함으로써), 엔트로피 데이터 획득 모듈(155)은, 어태커/해커가 랜덤 시퀀스를 추측하기 더 어렵게 한다. 따라서, 암호 오퍼레이션 또는 다른 용도의 안전성이 증가될 수 있다. 엔트로피 데이터 획득 모듈(155)로부터 비트 스트링을 출력할 때, 비트 스트링은 엔트로피 평가 모듈(175)에 입력된다.
엔트로피 평가 모듈(175)은 엔트로피 데이터 획득 모듈(155)로부터 각각의 비트 스트링을 (필요한 경우 반복해서) 수신하도록 구성된다. 비트 스트링을 수신할 때, 엔트로피 평가 모듈(175)은, 1) 비트 스트링의 엔트로피 강도가 선정된 안전성 강도를 만족시키는 지에 대해, 2) (그 사이에 선정된 안전성 강도를 만족시키는/도달하는 비트 스트링이 없다고 결정되었더라도) 선정된 최대 수의 엔트로피 데이터 비트들이 획득되었는지에 대해, 및 3) 선정된 안전성 강도를 만족시키기 위해 얼마나 많은 추가 엔트로피 데이터 비트들이 필요한지의 추정에 대해, 비트 스트링을 평가한다. 엔트로피 평가 모듈(175)이 선정된 안전성 강도를 만족시키는 비트 스트링을 식별하지 않고 선정된 최대 수의 엔트로피 데이터 비트들을 획득하지 않는 한(제1 또는 임의의 다음 반복일 수 있음), 엔트로피 평가 모듈(175)은 엔트로피 소스들(155N)로부터 추가 엔트로피 데이터 비트들(151)을 반복해서 획득하기 위해, 또한 본 명세서에 기술된 방식으로 평가를 위해 대응 추가 비트 스트링을 반복해서 출력하기 위해 엔트로피 데이터 획득 모듈(155)을 반복해서 트리거한다. 따라서, 엔트로피 평가 모듈(175)은, 본 명세서에 더 후술되는 바와 같이, 시간을 절약하기 위해 시드(들)의 생성을 적응적으로 가이드한다.
시간 절약을 위한 시드의 생성의 가이드에 관한 제1 시나리오에서, 엔트로피 평가 모듈(175)은 (선정된 안전성 강도를 만족시키기 위해) 요구되는 추가 엔트로피 데이터 비트들의 수가 전체적인 엔트로피 데이터 비트들의 선정된 최대 수 보다 전체적으로 훨씬 더 적다고 추정한다. 본 시나리오에서, 각각의 반복이 측정 가능한 양의 시간을 요구함에 따라, 전체 선정된 최대 수 대신 추정된 수의 엔트로피 데이터 비트들을 단지 획득함으로써 시간이 절약될 수 있다.
시간 절약을 위한 시드의 생성의 가이드에 관한 제2 시나리오에서, 엔트로피 평가 모듈(175)은, 선정된 최대 수의 엔트로피 데이터 비트들을 획득했고, 선정된 안전성 강도를 만족시키는 엔트로피 강도를 포함하는 비트 스트링을 측정하는데는 실패했다고 결정한다. 여기서, 전자 디바이스(100)는, 예를 들어, 에러를 보고하고, 다시 부팅되며, 다시 개시된다. 다시 개시함으로써, 더 나중 대신에 더 빨리, 전자 디바이스(100)의 사용자는 되풀이되는 실패 반복들로 인한 네가티브 경험에 기인한 전자 디바이스(100)의 프리징 및/또는 크래싱을 방지할 수 있다. 선정된 안전성 강도 보다 더 적게 포함하는 비트 스트링을 사용하는 대신 다시 개시함으로써, 안전하지 않은 암호 오퍼레이션의 위험성이 방지된다.
시드의 생성의 가이드에 관한 제3 시나리오에서, 엔트로피 평가 모듈(175)은, 엔트로피 데이터 획득 모듈(155)로부터 수신된 비트 스트링을 측정하고, 예를 들어, 비트 스트링이 선정된 안전성 강도를 만족시키는/도달하는 엔트로피 강도를 갖는다고 결정한다. 여기서, 엔트로피 평가 모듈(175)은 시드 결정 모듈(180)에 비트 스트링을 출력한다.
엔트로피 평가 모듈(175)은, 또한, 제4 옵션으로서, 단독으로, 또는 임의의 하나 이상의 추가 비트 스트링들과 조합해서, 비트 스트링을 더 처리할 수 있다. 단독으로, 또는 임의의 조합으로, 엔트로피 평가 모듈(175)에 의해 실행될 수 있는 프로세싱의 일례들은, 조합; 연결; 해싱; 매핑; 및 변환을 포함한다. 그러나, 본 명세서에 일례로서 열거되는 바 외의 추가 프로세싱이 엔트로피 평가 모듈(175)에 의해 실행될 수도 있음을 알 것이다. 다른 프로세싱을 위해 구성됨으로써, 엔트로피 평가 모듈(175)은 쉽게 예측될 수 없으며 쉽게 위치를 찾을 수도 없는 값들을 갖는 시드들의 생성을 적응적으로 가이드하도록 전자 디바이스(100)에서 동작하도록 구성된다.
이러한 방식으로 처리함으로써(또는, 경우에 따라서, 이러한 방식으로 추가 처리를 함으로써), 엔트로피 평가 모듈(175)은, 어태커/해커가 랜덤 시퀀스를 추측하기 더 어렵게 한다. 따라서, 암호 오퍼레이션 또는 다른 용도의 안전성이 증가될 수 있다.
선정된 안전성 강도를 만족시키지 않는 비트 스트링을 엔트로피 평가 모듈(175)로부터 출력할 때, 비트 스트링은 엔트로피 데이터 획득 모듈(155)에 출력되고, 예를 들어, 본 명세서에 기술된 바와 같이 반복 프로세스의 일부로서 사용된다. 제5 옵션으로, 엔트로피 데이터 획득 모듈(155)은 비트 스트링 자체를 수신하는 대신 엔트로피 평가 모듈(175)로부터 신호를 수신하도록 구성될 수 있다. 이 때에, 엔트로피 데이터 획득 모듈(155)은 엔트로피 평가 모듈(175)에 비트 스트링을 출력하는 것 외에 엔트로피 평가 모듈(175)에 출력되는 비트 스트링을 저장한다. 임의의 옵션에서, 본 명세서에 기술된 바와 같이, 엔트로피 평가 모듈(175)로의 비트 스트링의 후속 출력을 위한 반복에서 비트 스트링이 엔트로피 데이터 획득 모듈(155)에 의해 사용될 수 있다. 그러나, 선정된 안전성 강도를 만족시키는 비트 스트링을 출력할 때, 비트 스트링은 시드 결정 모듈(180)에 입력된다.
시드 결정 모듈(180)은, 1) 본 명세서에 후술되는 방식으로 엔트로피 데이터 획득 모듈(155)로부터 출력되는 비트 스트링을 사용해서, 및 2) 키(들)(195) 중 적어도 하나가 비밀 키일 수 있도록 키(들)(195) 등의 하나 이상의 데이터 비트 스트링들을 사용해서 시드를 결정한다. 시드를 결정할 때, 시드 결정 모듈(180)은 의사 랜덤 시퀀스 결정 모듈(185)에 의해 입력될 시드를 출력한다.
키(들)(195)의 각각의 키는 콘텐츠/기타(199) 재료의 '변환' 또는 '변환 취소'를 위해 암호화 및 암호 해독 오퍼레이션에서 사용되는 비밀 데이터의 집합이다. 키(들)(195)의 상이한 키들은 데이터의 상이한 변환들을 지정한다. 키(들)의 일례는 공개 키 쌍의 공개-파트인 "공개 키(public key)"이다. 키(들)의 다른 일례는, 예를 들어, 공개 키 쌍의 나머지 또는 개인-파트일 수 있는 "개인 키(private key)"이다. 키(들)(195)의 다른 타입은 "대칭 키"일 수 있는 "랜덤 비밀 키"이다. 키(들)(195)의 대칭 키의 일례는 전자 디바이스(100)의 원타임 프로그래머블 메모리에 저장된 비밀 키이다. 키(들) 중 이 특정 키는 "디바이스-유일 키(device-unique key)"이다. 이는, 한번 프로그램될 수 있어서, 아무도 변경할 수 없으며, 통상 판독될 수 없지만, 암호 오퍼레이션에서 또는 다른 용도로 사용될 수 있다. 예를 들어, 이는, 콘텐츠/기타(199) 재료를 암호화하는데 사용될 수 있다. 옵션으로서, 이는, 키(들)(195) 중 임의의 하나 이상의 키들을 암호화하는데 사용될 수 있으며 전자 디바이스(100)에 저장될 수 있다. 키(들)(195) 중 이 특정 키는 "KEK"(key encrypting key)라고도 할 수 있다.
일례에서, 시드 결정 모듈(180)은, (선정된 안전성 강도를 만족시키는) 비트 스트링을 엔트로피 평가 모듈(175)로부터 수신할 때, 또한, 키(들)(195) 중 하나의 키를 수신할 때, 적어도 1) 비트 스트링 및 2) 키(들)(195) 중의 키로부터 시드를 결정한다. 제1 옵션으로서, 키(들)(195) 중 적어도 하나는 비밀 키이거나 비밀이 아닌 키(non-secret key), 또는 그 조합일 수 있다. 제2 옵션으로서, 키(들)(195) 중 적어도 하나 이상은 암호화되거나, 암호화되지 않거나, 그 조합일 수 있다. 제2 옵션에서, 키(들)(195) 중 적어도 하나 이상이 암호화된 형태로, 암호화되지 않은 형태로, 또는 그 조합으로 메모리에 저장될 수 있다. 다른 옵션에서, 메모리에 저장된 키(들)(195) 중 적어도 하나 이상은 현재 또는 후속 암호 오퍼레이션에서 또는 다른 용도로 사용될 수 있다. 메모리에 암호화 포맷으로 저장된 임의의 키는 암호 오퍼레이션에서 또는 다른 용도로 사용될 수 있다.
시드 결정 모듈(180)은, 또한, 제3 옵션으로서, 단독으로, 또는 임의의 하나 이상의 추가 비트 스트링들과 조합해서, 비트 스트링을 더 처리할 수 있다. 단독으로, 또는 임의의 조합으로, 시드 결정 모듈(180)에 의해 실행될 수 있는 프로세싱의 일례들은, 조합; 연결; 해싱; 매핑; 및 변환을 포함한다. 그러나, 본 명세서에 일례로서 열거되는 바 외의 추가 프로세싱이 시드 결정 모듈(180)에 의해 실행될 수도 있음을 알 것이다. 다른 프로세싱을 위해 구성됨으로써, 시드 결정 모듈(180)은 쉽게 예측될 수 없으며 쉽게 위치를 찾을 수도 없는 값들을 갖는 시드들의 생성을 융통성 있게 가이드하도록 전자 디바이스(100)에서 동작하도록 구성된다.
이러한 방식으로 처리함으로써(또는, 경우에 따라서, 이러한 방식으로 추가 처리를 함으로써), 시드 결정 모듈(180)은, 어태커/해커가 랜덤 시퀀스를 추측하기 더 어렵게 한다. 따라서, 암호 오퍼레이션 또는 다른 용도의 안전성이 증가될 수 있다. 시드를 결정할 때, 시드 결정 모듈(180)은 의사 랜덤 시퀀스 결정 모듈(185)에 시드를 출력한다.
의사 랜덤 시퀀스 결정 모듈(185)은, 시드를 수신할 때, 본 명세서에 기술된 바와 같이, 의사 랜덤 시퀀스를 결정하기 위해 시드를 사용한다. 예를 들어, 의사 랜덤 시퀀스 결정 모듈(185)은 엔트로피 입력의 소스로서 시드를 사용해서 의사 랜덤 시퀀스를 결정한다. 시드는 의사 랜덤 시퀀스 결정 모듈(185)의 초기 내부 상태의 적어도 일부분이다.
의사 랜덤 시퀀스 결정 모듈(185)은, 제1 옵션으로서, 의사 랜덤 시퀀스를 결정할 때 단독으로 또는 임의의 하나 이상의 다른 엔트로피 입력 소스들과 조합해서 시드를 사용할 수 있다. 제2 옵션으로서, 의사 랜덤 시퀀스 결정 모듈(185)은 단독으로, 또는 임의의 하나 이상의 추가 비트 스트링들과 조합해서, 시드를 더 처리할 수 있다. 단독으로, 또는 임의의 조합으로, 의사 랜덤 시퀀스 결정 모듈(185)에 의해 실행될 수 있는 프로세싱의 일례들은, 조합; 연결; 해싱; 매핑; 및 변환을 포함한다. 그러나, 본 명세서에 일례로서 열거되는 바 외의 추가 프로세싱이 의사 랜덤 시퀀스 결정 모듈(185)에 의해 실행될 수도 있음을 알 것이다. 다른 프로세싱을 위해 구성됨으로써, 의사 랜덤 시퀀스 결정 모듈(185)은 쉽게 예측될 수 없으며 쉽게 위치를 찾을 수도 없는 값들을 갖는 시드들의 생성을 적응적으로 가이드하도록 전자 디바이스(100)에서 동작하도록 구성된다.
이러한 방식으로 처리함으로써(또는, 경우에 따라서, 이러한 방식으로 추가 처리를 함으로써), 의사 랜덤 시퀀스 결정 모듈(185)은, 어태커/해커가 랜덤 시퀀스를 추측하기 더 어렵게 한다. 따라서, 암호 오퍼레이션 또는 다른 용도의 안전성이 증가될 수 있다.
제3 옵션으로서, 의사 랜덤 시퀀스 결정 모듈(185)은 차후 사용을 위해 메모리(디스크 등)에 저장하기 위해 하나 이상의 의사 랜덤 시퀀스(들)을 출력할 수 있다. 예를 들어, 임의의 하나 이상의 의사 랜덤 시퀀스는, 단독으로, 또는 임의의 하나 이상의 추가 비트 스트링들과 조합해서, 다른 의사 난수 생성기 시드를 위한 기초로서 사용될 수 있다. 일례들은, 임의의 수의 엔트로피 데이터 비트들(151), 엔트로피 데이터 획득 모듈(155)로부터 출력된 임의의 하나 이상의 부분 또는 전체 비트 스트링들, 엔트로피 평가 모듈(175)로부터 출력된 임의의 하나 이상의 부분 또는 전체 비트 스트링들, 시드 결정 모듈(180)로부터 출력된 임의의 하나 이상의 부분 또는 전체 비트 스트링들, 의사 랜덤 시퀀스 결정 모듈(185) 자체에 의해 미리 생성된 임의의 하나 이상의 부분 또는 전체 비트 스트링들, 메모리에 저장되거나, 암호화되거나 또는 다른 경우의 임의의 비트 스트링, 및 임의의 다른 비트 스트링을 포함한다. 이 때에, 제4 옵션은, 의사 난수 생성기(117)로부터 출력된 임의의 랜덤 시퀀스가 암호화되거나, 암호화되지 않거나, 및/또는 메모리에 저장될 수 있다. 의사 랜덤 시퀀스 결정 모듈(185)은 암호 오퍼레이션 모듈(190)에 의사 랜덤 시퀀스를 출력한다.
암호 오퍼레이션 모듈(190)은, 의사 랜덤 시퀀스를 수신할 때, 의사 랜덤 시퀀스를 사용해서 암호 오퍼레이션 또는 다른 용도를 실행한다. 예를 들어, 콘텐츠/기타(199) 재료는 오퍼레이션에서 또는 다른 용도로 사용될 수 있다. 비밀 키가 오퍼레이션에서 또는 다른 용도로 사용되는 임의의 시나리오에서, 오퍼레이션 또는 다른 용도는, 적합하게, "비밀 키 암호화", "비밀 키 암호 해독", 또는 "비밀 키 암호 오퍼레이션"으로서 칭해질 수도 있다.
암호 오퍼레이션 모듈(190)은, 제1 옵션으로서, 단독으로 또는 임의의 하나 이상의 추가 비트 스트링들과 조합해서 의사 랜덤 시퀀스를 더 처리할 수 있다. 단독으로, 또는 임의의 조합으로, 암호 오퍼레이션 모듈(190)에 의해 실행될 수 있는 프로세싱의 일례들은, 조합; 연결; 해싱; 매핑; 및 변환을 포함한다. 그러나, 본 명세서에 일례로서 열거되는 바 외의 추가 프로세싱이 암호 오퍼레이션 모듈(190)에 의해 실행될 수도 있음을 알 것이다. 다른 프로세싱을 위해 구성됨으로써, 암호 오퍼레이션 모듈(190)은 쉽게 예측될 수 없으며 쉽게 위치를 찾을 수도 없는 값들을 갖는 시드들의 생성을 융통성 있게 가이드하도록 전자 디바이스(100)에서 동작하도록 구성된다.
이러한 방식으로 처리함으로써(또는, 경우에 따라서, 이러한 방식으로 추가 처리를 함으로써), 암호 오퍼레이션 모듈(190)은, 어태커/해커가 랜덤 시퀀스를 추측하기 더 어렵게 한다. 따라서, 암호 오퍼레이션 또는 다른 용도의 안전성이 증가될 수 있다.
도 2는, 도 1의 실시예의 전자 디바이스(100)의 피처들 및/또는 도 3의 실시예의 방법(300)을 구현 또는 실행하도록 구성된 컴퓨팅 장치의 블록도(200)를 도시한다. 컴퓨팅 장치(200)는 전자 디바이스(100)와 관련해서 본 명세서에 상술되고 방법(300)과 관련해서 본 명세서에 후술된 하나 이상의 피처들을 실행하기 위한 플랫폼으로서 사용될 수 있다.
컴퓨팅 장치(200)는 방법(300)에 기술된 단계들 중 일부 또는 전부를 구현 또는 실행할 수 있는 하나 이상의 프로세서들(202)을 포함한다. 프로세서(202)로부터의 커맨드들 및 데이터는 통신 버스(204)를 통해 통신된다. 컴퓨팅 장치(200)는, 또한, 프로세서(202)를 위한 프로그램 코드가 실행 시간 중에 실행될 수 있는, RAM(random access memory) 등의 메인 메모리(206), 및 보조 메모리(208)를 포함한다. 보조 메모리(208)는, 예를 들어, 방법(300)을 위한 프로그램 코드의 카피가 저장될 수 있는 하나 이상의 하드 디스크 드라이브들(210), 및/또는 플로피 디스켓 드라이브, 자기 테이프 드라이브, 콤팩트 디스크 드라이브 등을 나타내는 탈착 가능 스토리지 드라이브(212)를 포함한다.
탈착 가능 스토리지 드라이브(210)는 공지된 방식으로 탈착 가능 스토리지 유닛(214)과 관련해서 판독 및/또는 기록을 실행한다. 사용자 입출력 디바이스들은, 키보드(216), 마우스(218), 및 디스플레이(220)를 포함할 수 있다. 디스플레이 어댑터(222)는 통신 버스(204) 및 디스플레이(220)와 인터페이스할 수 있으며, 프로세서(202)로부터 디스플레이 데이터를 수신해서 디스플레이(220)를 위한 디스플레이 커맨드들로 디스플레이 데이터를 변환할 수 있다. 또한, 프로세서(들)(202)는, 네트워크 인터페이스(224)를 통해, 네트워크, 예를 들어, 인터넷, LAN 등을 통해 통신할 수 있다.
다른 공지된 전자 컴포넌트들이 컴퓨팅 장치(200)에서 추가 또는 대체될 수도 있음을 당업자는 알 것이다. 또한, 도 2에 도시된 컴포넌트들 중 하나 이상이 (예를 들어, 사용자 입력 디바이스들, 보조 메모리 등이) 선택적일 수 있음을 알 것이다.
본 설명 전체에 걸쳐 명확하게 기술되었지만, 본 발명의 대표적인 실시예들은 광범위한 애플리케이션들에 대한 유틸리티를 가지며, 상술되고 후술된 실시예들은 제한적인 것으로 의도되거나 해석되서는 안되며, 본 발명의 양상들의 예시적인 설명으로서 제공된 것이다.
전자 디바이스(100) 및 컴퓨팅 장치(200)가 사용할 수 있는 피처들의 일례를 포함하는 방법이 도 3의 실시예에 도시된 방법(300)의 이하의 플로우챠트와 관련해서 이제부터 기술될 것이다. 방법(300)의 범위 내에서 다른 단계들이 추가되거나 기존 단계들이 제거, 변경 또는 재구성될 수 있음을 당업자는 알 것이다.
방법(300)은 도 1의 실시예의 전자 디바이스(100) 및 도 2의 실시예의 컴퓨팅 장치(200)와 관련해서 기술된다. 따라서, 본 설명은 도 1 및 도 2에 도시된 구성요소들과 관련된다. 그러나, 방법(300)은 전자 디바이스(100) 또는 컴퓨팅 장치(200)에 기재된 소자들로만 제한되지 않음을 알 것이다. 대신, 방법(300)은 전자 디바이스(100) 및 컴퓨팅 장치(200)의 실시예들에 기재된 바와 상이한 구성을 갖는 전자 디바이스에 의해 구현될 수도 있음을 알 것이다.
방법(300)에 기재된 오퍼레이션들의 일부 또는 전부는 유틸리티, 소프트웨어 프로그램들, 또는 서브 프로그램들로서, 임의의 희망 컴퓨터 액세스 가능 매체에 포함될 수 있다. 또한, 방법(300)은, 활성화된 상태 및 비활성화 상태 둘 다로 다양한 형태들로 존재할 수 있는 컴퓨터 프로그램들에 의해 구현될 수 있다. 예를 들어, 방법(300)은, 압축 또는 비압축 형태로, 소스 코드, 객체 코드, 실행 가능 코드 또는 다른 포맷들로 된 프로그램 명령들로 구성된 소프트웨어 프로그램(들)로서 존재할 수 있다. 전술한 것 중 임의의 것이, 저장 디바이스들을 포함하는 컴퓨터 판독가능 매체 상에서 구현될 수 있다.
일례의 컴퓨터 판독 가능 기억 매체는, 본 명세서에 기술된 하나 이상의 피처들을 실행하기 위한 하나 이상의 컴퓨터 프로그램들이 내장된 임의의 기판 뿐만 아니라, RAM, ROM, EPROM, EEPROM, 및 자기 또는 광 디스크 또는 테이프 등의 각종 종래의 컴퓨터 시스템 기판들을 포함한다. 기판 상의 또는 하나 이상의 컴퓨터 프로그램들에서 실행되는 일례의 컴퓨터 판독 가능 신호들은, 인터넷 또는 다른 네트워크들을 통해 다운로드된 신호들의 사용을 포함해서, 이러한 프로그램(들)에 액세스하도록 구성될 수 있다. 상술된 바의 구체적인 일례들은, CD ROM 상의 또는 인터넷 다운로드를 통한 프로그램(들)의 분배를 포함한다. 어떤 의미로는, 인터넷 자체가 컴퓨터 판독 가능 매체이다. 일반적으로 컴퓨터 네트워크들도 마찬가지이다. 따라서, 본 명세서에 기술된 피처들을 실행할 수 있는 임의의 전자 디바이스는 상술된 기능들을 실행할 수 있음을 알 것이다.
컨트롤러, 예를 들면, 프로세서(도시되지 않음), 디지털 신호 프로세서, ASIC, 마이크로컨트롤러 등의 하나 이상의 임의의 조합, 또는 이들 컴포넌트들 중 임의의 하나 이상을 조합하는 컴퓨터 칩은 방법(300)을 실행하기 위해 전자 디바이스(100) 및 컴퓨팅 장치(200)를 구현 또는 실행할 수 있다. 대안으로, 전자 디바이스(100) 및 컴퓨팅 장치(200)는 임의의 다른 프로세서, 디지털 신호 프로세서, 칩, 또는 컴퓨팅 디바이스와 무관하게 동작하도록 구성될 수 있다.
도 3의 실시예를 참조하면, 도 3은 일 실시예에 따라, 암호 오퍼레이션에서 사용하기 위해 또는 예측할 수 없는 결과들이 요구되거나 유익한 다른 용도를 위해 의사 난수 생성기의 엔트로피 입력의 소스로서 사용하기 위한 시드를 결정하는 방법(300)의 플로우챠트를 도시한다.
단계(310)에서, 엔트로피 데이터 획득 모듈(155)은, 예를 들어, 도 1 및 도 2의 실시예들에서 상술된 방식으로, 임의의 하나 이상의 엔트로피 소스들(150N)로부터 엔트로피 데이터 비트들(151)을 획득한다.
플랫폼, 시스템, 애플리케이션 등에 따라, 더 양호한 엔트로피 데이터 소스들 중 일부는 일부 플랫폼들 및 애플리케이션들에서 무익하다. 그러나, (암호 오퍼레이션을 실행하기 위해) 선정된 안전성 강도를 만족시키는 비트 스트링이 요구되기 때문에, 하나 이상의 엔트로피 소스들의 무효성(unavailability)은 또한 선정된 안전성 강도를 만족시키기 위한 더 긴 시간을 의미할 수 있다. 예를 들어, ( 더 많은 시간이 걸려서) 추가 엔트로피 데이터 비트들을 획득하는 추가 반복들이, 다른 플랫폼, 시스템, 또는 애플리케이션에서 유용할 수도 있는 양호한 엔트로피 소스를 사용하지 않는 임의의 플랫폼, 시스템, 또는 애플리케이션에서 선정된 안전성 강도를 만족시키기 위해 요구될 수 있다. 그러나, 방법(300)이 유효한 엔트로피 소스를 기반으로 엔트로피 데이터 비트들의 획득을 가이드하도록 적용되기 때문에, 본 발명의 피처는 플랫폼, 시스템, 및/또는 애플리케이션에서의 불필요한 대기를 방지하는 것을 포함해서, 선정된 안전성 강도를 만족시키는 비트 스트링을 출력하기 위해 충분한 수의 엔트로피 데이터 비트들을 더 신속하게 획득할 수 있다.
방법(300)에서, 엔트로피 데이터 획득 모듈(155)은, 필요한 경우, 예를 들어, 처리, 추가 처리, 및/또는 반복 오퍼레이션들 실행 등을 할 수 있다. 단독으로, 또는 임의의 조합으로, 엔트로피 데이터 획득 모듈(155)에 의해 실행될 수 있는 프로세싱의 일례들은, 조합; 연결; 해싱; 매핑; 및 변환을 포함한다. 그러나, 본 명세서에 일례로서 열거되는 바 외의 추가 프로세싱이 실행될 수도 있음을 알 것이다. 이 때에, 방법(300)은 쉽게 예측될 수 없으며 쉽게 위치를 찾을 수도 없는 값을 갖는 시드의 생성을 적응적으로 가이드한다.
프로세싱의 제1 일례에서, 서로 독립적인 제1 비트 스트링 및 제2 비트 스트링에 대한 연결을 통해 2개의 비트 스트링들을 조합함으로써, 엔트로피 강도가 증가될 수 있다. 예를 들어, 제1 엔트로피 강도를 갖는 제1 비트 스트링 및 제1 엔트로피 강도와 무관한 제2 엔트로피 강도를 갖는 제2 비트 스트링의 연결을 생각해 보라. "엔트로피 강도"는, 본 명세서에 기술된 바와 같이, 비트 스트링의 예측 가능성(predictability)을 나타내는 수로서 표현될 수 있다. 연결의 엔트로피 강도는 제1 및 제2 엔트로피 강도들의 합계일 수 있다.
프로세싱의 제2 일례에서, 엔트로피 강도는 해싱에 의해 분배될 수 있다. 이 때에, 해싱은 전체 연결에 걸쳐 무작위성을 균일하게 분배할 수 있다. 하드 디스크 대 디스크리스 셋탑 박스의 디지털 비디오 기록을 생각해 보라. 엔트로피 데이터 획득 모듈(155)을 사용하는 방법(300)은 하나 이상의 엔트로피 소스들(150N)로부터 "엔트로피 데이터 비트들"을 획득하도록 구성된다. 예를 들어, 디지털 비디오 레코더는 엔트로피 소스로서 선택적으로 사용하기 위해 통상 하드 디스크를 갖는 플랫폼이다. 하드 디스크로의 하나 이상의 판독/기록 오퍼레이션들을 위해 걸리는 시간 중에 경과하는 클록 사이클들을 카운팅하기 위해 카운터를 사용해서, 카운터는 개시될 수 있으며, 판독/기록 오퍼레이션이 실행되며, 카운터가 판독될 수 있다. 여기서, 판독/기록 오퍼레이션(들)은, 예를 들어, 온도 또는 판독/기록 오퍼레이션(들) 중에 실행되는 다른 오퍼레이션들 등에 기인한 시간의 예측할 수 없는 변수들로 인해 예측 불가능할 수 있다. 이로부터, 카운터로부터 판독된 카운트 값은 "엔트로피 데이터 비트들(151)"의 일례이다. 통상, 카운터로부터 판독된 카운트는 카운트를 나타내는 비트 스트링의 최하위 비트 위치들의 예측할 수 없는 비트들을 가질 가능성이 있다. 이 때에, 최하위 비트는 전체적으로 또는 거의 전체적으로 예측할 수 없으며, 따라서, 단독으로 예측할 수 없는 엔트로피 데이터 비트로서 사용될 수 있다. 그러나, 옵션으로서, 그 값의 전체 비트 스트링 또는 임의의 일부분이 해싱되어서, 최하위 비트의 무작위성이 다른 비트들로 균일하게 분배될 수 있음을 나타낸다. 해싱 후에, 전체 비트 스트링의 각각의 비트는 동일한 무작위성을 가질 수 있다. 일반적으로, 매우 랜덤인 최하위 비트 및 거의 랜덤이 아닌(카운터로부터 판독된 값 등) 최상위 비트를 갖는 비트들의 스트링이 해싱될 수 있다. 이 때에, 최하위 비트의 무작위성은 통상 최상위 비트를 포함하는 모든 비트들에 걸쳐 균일하게 분배되어서, 감소된 최하위 비트의 무작위성에 최상위 비트의 무작위성이 근사하도록 증가할 수 있다.
디스크리스 셋탑 박스와 관련해서, 하나 이상의 판독/기록 오퍼레이션(들) 중에 경과된 클록 사이클들을 카운트하는데 사용되는 디스크를 갖지 않는다. 대신, 예를 들어, 디스크리스 셋탑 박스는, 예를 들어, 슬리프 오퍼레이션(sleep operation) 중에 경과한 클록 사이클들을 카운트할 수 있다. 그러나, 하드 디스크 판독 기록 오퍼레이션의 최하위 비트에 비해, 슬리프 오퍼레이션의 카운터 값의 최하위 비트는 덜 예측 불가능할 수 있다.
모든 경우가 동등하며, 선정된 안전성 강도를 만족시키는 비트 스트링을 엔트로피 데이터 획득 모듈(155)로부터 출력하기 위해 디스크리스 셋탑 박스에서 더 많은 반복이 요구될 수 있다. 이 때에, 암호 오퍼레이션을 개시하는 속도는 플랫폼 마다 (및/또는 애플리케이션 마다 및/또는 시스템 마다) 상이할 수 있다.
예를 들어, PC 플랫폼은 소스에 대해 유용한 랜덤 데이터를 갖는 네트워크에 연결될 수 있다. 동일한 PC가 상기 네트워크에 연결되지 않을 수도 있다. 상이한 플랫폼들의 다른 일례에서, 디스크리스 셋탑 박스는 하드 디스크를 갖는 디지털 비디오 레코더와 상이하다. 따라서, 디스크리스 셋탑 박스는 하나 이상의 판독/기록 오퍼레이션(들) 중에 경과된 클록 사이클들을 카운트하는데 사용되는 하드 디스크를 갖지 않는다. 대신, 디스크리스 셋탑 박스는, 예를 들어, 1회 이상의 슬리프 오퍼레이션 중에 경과한 클록 사이클들을 카운트할 수 있다. 또 다른 일례에서, 상이한 플랫폼들이 동일한 엔트로피 소스들에 액세스하지 않을 수 있다. 예를 들어, 도 2의 실시예의 후술된 컴퓨팅 장치(200)는 하드 디스크를 엔트로피 소스로서 선택적으로 사용할 수 있다. 대조적으로, 도 1의 실시예의 전자 디바이스(100)는 하드 디스크 등을 갖지 않을 수 있다.
방법(300)은 엔트로피 데이터 비트들의 임의의 수의 스트링들을 조합할 수 있다. 예를 들어, 엔트로피 데이터 획득 모듈(155)은 1) 동일한 반복 중에, 2) 임의의 1회 이상의 추가 반복들 중에, 3) 임의의 하나 이상의 상이한 엔트로피 소스들로부터, 4) 선정된 안전성 강도를 만족시키지 않는 것으로 엔트로피 평가 모듈(175)에 의해 미리 결정된 임의의 하나 이상의 상이한 비트 스트링들로부터, 4) 저장된 데이터로부터, 및 5) 임의의 다른 데이터 등으로부터 획득된 엔트로피 데이터 비트들의 다수의 스트링들을 조합할 수 있다. 카운터 값의 비트들의 스트링을 해싱하는 일례와 유사하게, 연결된 비트 스트링을 해싱해서 전체 연결에 걸쳐 무작위성을 균일하게 분배한다.
이러한 방식으로 처리함으로써(또는, 경우에 따라서, 이러한 방식으로 추가 처리를 함으로써), 랜덤 시퀀스 결정 모듈(185)은, 어태커/해커가 랜덤 시퀀스를 추측하기 더 어렵게 한다. 따라서, 암호 오퍼레이션 또는 다른 용도의 안전성이 증가될 수 있다.
방법(300)은, 예를 들어, 각각의 스트링이 선정된 안전성 강도를 만족시키는 엔트로피 강도를 갖는지를 결정하기 위해 엔트로피 데이터 획득 모듈(155)로부터 출력된 각각의 비트 스트링의 무작위성을 측정하는 것과, 현재 비트 스트링의 임의의 소정의 비트에 대한 추측의 불확실성(uncertainty)을 기반으로 선정된 안전성 강도를 만족시키기 위해 얼마나 많은 추가 엔트로피 데이터 비트들이 필요할 수 있는지를 추정/결정하는 것과, 요구된 반복들에서, 결정된 추정된 추가 엔트로피 비트들을 획득하는 것을 포함할 수 있다.
단계(320)에서, 엔트로피 평가 모듈(175)은 (엔트로피 데이터 획득 모듈(155)로부터 출력된) 비트 스트링이 선정된 안전성 강도를 만족시키는 지에 대해 결정한다. 예를 들어, 비트 스트링은 엔트로피 강도와 관련해서 비트들의 수로서 표현될 수 있는 수로서 양자화될 수 있다. 엔트로피 강도는 비트들의 수와 관련해서 언급될 수 있다. 엔트로피 강도는, 도 1의 실시예의 엔트로피 데이터 획득 모듈(155)의 입력과 관련된 "엔트로피 데이터 비트들"이라는 용어와 혼동해서는 안된다. 그러나, 본 발명의 피처는, 선정된 안전성 강도를 만족시키는데 필요한 엔트로피 데이터 비트들을 추정해서, 엔트로피 데이터 획득 모듈(155)이 필요한 만큼 반복에서 추정치를 획득하는데 있다.
추정된 수의 엔트로피 데이터 비트들과 같이, 선정된 "안전성 강도"는 비트들의 수로서 양자화될 수 있다. 이 2개의 수들로부터, 단계(320)에서 엔트로피 데이터 획득 모듈(155)로부터 출력된 비트 스트링이 선정된 안전성 강도를 만족시키는 지에 대해 결정이 달성될 수 있다. 예를 들어, 비트 스트링의 "엔트로피 강도"의 수가 선정된 안전성 강도와 동일하거나 그보다 크다고 결정될 때, 비트 스트링은 선정된 안전성 강도를 만족시킨다.
단계(330)에서, 엔트로피 데이터 획득 모듈(155)로부터 출력된 비트 스트링의 엔트로피 강도가 선정된 안전성 강도를 만족시킨다고 결정할 때, 시드 결정 모듈(180)은, 예를 들어, 엔트로피 평가 모듈(175)로부터 비트 스트링을 수신하고, 예를 들어, 도 1 및 도 2의 실시예들과 관련해서 상술된 방식으로 암호 오퍼레이션에서 사용될 시드를 결정한다.
비트 스트링이 선정된 안전성 강도를 만족시키지 않고 엔트로피 데이터 비트들의 선정된 최대 수를 초과하지 않을 때, 방법(300)은 추가 엔트로피 데이터를 반복해서 획득하는데, 각각의 반복으로, 예를 들어, 엔트로피 데이터 획득 모듈(155)로부터의 '비트 스트링'의 추가 출력이 각각의 추가 비트 스트링을 반복해서 출력하게 된다. 이 때에, 암호 오퍼레이션으로의 부팅 시간의 지속 기간은 시스템 마다 및/또는 플랫폼 마다 상이할 수 있다. 그러나, 시스템 및 플랫폼과 무관하게, 암호 오퍼레이션으로의 부팅 시간은, 예를 들어, 오퍼레이션을 기반으로 가이드된다.
통상, (엔트로피 평가 모듈(175)에 의해 결정된 바와 같이) 비트 스트링이 선정된 안전성 강도를 만족시킬 때, 엔트로피 데이터 획득 모듈(155)은 후술되는 바와 같이 추가 '비트 스트링'을 출력하지 않는다. 이 때에, 암호 오퍼레이션으로의 부팅 시간의 지속 기간이 감소된다.
단계(340)에서, 엔트로피 평가 모듈(175)은, 예를 들어, 선정된 안전성 강도를 만족시키기 위해/도달하기 위해 필요한 엔트로피 데이터 비트들의 총 수를 추정한다. 엔트로피 평가 모듈(175)은, 공지된 방식으로, 예를 들어, 식 Hmin = -lg2(pmax)를 사용해서 비트 스트링의 엔트로피를 측정하는 전형적인 방식을 기술하는 스탠다드 NIST SP 800-90, 부록 C(2007년 3월)를 사용해서, 비트 스트링의 엔트로피 강도를 측정한다.
선정된 안전성 강도가 총 112 비트라고 하자. 통상, "브루트 포스"에 의해 랜덤 시퀀스를 브레이크하는데 필요한 조합들의 수는 총 2security _ strength 이다. "브루트 포스"는 추측을 방지함으로써 해독하는 조합을 찾기 위해 모든 가능한 조합들에 대해 철저하게 끊임없이 작업한다. 안전성 강도가 클수록, "브루트 포스"의 더 많은 가능한 조합들이 선정된 엔트로피 비트 강도를 크랙하기 위해 계산될 필요가 있다. 본 일례에서, 총 112의 선정된 안전성 강도는 총 5.19229685853 × 1033 의 조합 카운트를 갖는다(2112 = 5.19229685853 × 1033). 제1 시나리오에서, 비트 스트링이 선정된 안전성 강도를 만족시킨다고 결정되면, 방법(300)은 단계(330)로 진행해서 시드를 결정한다. 제2 시나리오에서, 비트 스트링이 선정된 안전성 강도를 만족시키는데 실패한 것으로 결정되면, 선정된 안전성 강도를 만족시키기 위해 얼마나 많은 추가 엔트로피 데이터 비트들이 필요한지가 추정된다. 제3 시나리오에서, 선정된 최대 수의 엔트로피 데이터 비트들이 획득되었다고 결정되면, 방법(300)은 에러를 송신하고, 다시 부팅하며, 다시 개시한다.
비트 스트링의 비트 길이가 총 112 라고 하자. 또한, 전체 비트 스트링의 카운트가 70개의 "1"들 및 42개의 "0"들(70 + 42 = 112)이라고 하자. (이 특정 타입의 카운트는 1-비트 값 카운트임을 주지하라. 2-비트 값 카운트, 4-비트 값 카운트 등의 다른 공지된 타입들의 카운트들이 실행될 수 있다.) 여기서, 각각의 비트에 대해, 1) pmax 또는 각각의 비트("0" 또는 "1")를 추측하는 최대 확률은 62.5%(70/112 = 0.625)이고, 2) Hmin 또는 각각의 비트의 무작위성의 추정치는 67.8%(Hmin = -lg2(0.625) = 0.678)이다. "엔트로피 비트들"로 표현된 전체 스트링의 엔트로피 강도는 총 76(112×0.678 = 75.936) 이다. 따라서, 추정된 수는 총 36(112 - 76 = 36)의 추가 "엔트로피 비트들"을 필요로 한다.
예를 들어, 1-비트 값 카운트(70개의 "1"들 및 42개의 "0"들)와 관련된 확률의 원칙들에 따라, 이는, 비트들의 112-비트 스트링의 임의의 소정의 비트 값을 추측하는 최대 확률은 0.625 또는 62.5%(70/112 = 0.625) 임을 의미한다. 상기 식에 따라, (엔트로피 데이터 획득 모듈(155)로부터 출력된 비트 스트링에서) 각각의 비트는 비트 당 67.8% (Hmin = -lg2(0.625) = 0.678) 무작위성의 엔트로피를 갖는 것으로 추정된다. 가장 가까운 정수로 올림(rounding up)하면, "엔트로피 비트들"로 표현된 엔트로피 강도(엔트로피 데이터 획득 모듈(155)로부터 출력된 비트 스트링에서)는 총 76(112×0.678 = 75.936) 이다. 따라서, 76 "엔트로피 비트들"은 선정된 안전성 강도 보다 작으며, 선정된 안전성 강도는 112이다. 여기서, 112의 안전성 강도는 총 36(112 - 76 = 36)의 추가 "엔트로피 비트들"을 필요로 하는 것으로 추정된다. 각각의 데이터 비트가 0.678의 추정된 엔트로피를 가짐에 따라, 112의 선정된 안전성 강도는 총 54(36/0.678 = 53.097)의 추가 "엔트로피 데이터 비트들"의 획득을 필요로 하는 것으로 추정된다.
옵션으로서, 엔트로피 추정을 더 정확하게 하는 한가지 기술은, 평균 최소 엔트로피를 추적하고, 예를 들어, 평균 최소 엔트로피를 파일에 저장하는 것이다. 평균 최소 엔트로피 파일은, 전자 디바이스(100)에서 과거에 생성된 모든, 거의 모든, 또는 일부 엔트로피 데이터 비트들의 평균 최소 엔트로피를 저장할 수 있다. 추가 엔트로피 데이터 비트들이 생성 및/또는 획득될 때마다, 평균 최소 엔트로피의 값이 갱신될 수 있다. 단계(340)에서, 예를 들어, 엔트로피 데이터 획득 모듈(155)로부터 출력된 하나의 비트 스트링을 기반으로 획득하기 위한 추가 엔트로피 데이터 비트들의 수를 추정하는 대신(1회 반복에 비교적 적은 데이터 샘플이 획득됨), 방법(300)은 이전 추정치들의 역사적 평균(historical average)을 사용해서 다음 역사적 평균을 획득할 수 있다. 예를 들어, 역사적 평균은 현재 추정 단독 보다 더 적은 추가 엔트로피 데이터 비트들을 획득하기 위해 호출될 수 있다. 현재 추정 대신 역사적 평균에 의존해서, 방법(300)은, 평균적으로, 선정된 안전성 강도를 만족시키는 추가 엔트로피 데이터 비트들을 획득할 수 있다. 역사적 평균이 평균적으로 선정된 안전성 강도를 성공적으로 만족시키는 더 적은 수의 추가 엔트로피 데이터 비트들을 획득하기 위해 호출되기 때문에, 방법(300)은, 더 높은 추정치의 획득을 방지하면서 시간을 절약함으로써, 안전성 강도를 만족시키는 속도를 증가시킬 수 있다. 이 때에, 더 높은 수가 차후 평균의 일부 등이 될 수 있다.
단계(350)에서, 엔트로피 평가 모듈(175)은, 예를 들어, 선정된 최대 수의 엔트로피 데이터 비트들이 획득되었는지를 결정한다. 엔트로피 데이터 비트들의 선정된 최대 수는 총 512라고 하자. 일례에서, 제1 반복에서, 엔트로피 데이터 획득 모듈은 총 212의 비트들의 스트링을 출력한다. 비트 스트링이 선정된 안전성 강도를 만족시키지 않는 시나리오들에서, 방법(300)은 본 명세서에 기술된 방식으로 추가 엔트로피 데이터 비트들을 반복해서 획득할 수 있다. 예를 들어, 데이터 획득 모듈(155)로부터 총 212 비트들의 비트 스트링을 출력할 때, 데이터 획득 모듈(155)은 총 300(512 - 212 = 300)을 넘는 추가 엔트로피 데이터 비트들 보다 더 많이 획득하는 것으로 제한된다. 예를 들어, 반복 회수와 무관하게, 총 512 비트들에 도달할 때, 방법(300)은 에러를 송신하고, 다시 부팅하며, 다시 개시한다. 이 때에, 방법(300)은, 에러를 다시 송신하고, 다시 부팅하며, 다시 개시하기 전에 총 512 엔트로피 데이터 비트들을 획득할 수 있다.
54 엔트로피 데이터 비트들이 안전성 강도를 만족시키기 위해 획득될 필요가 있는 것으로서 추정되는 일례에서, 54 추가 엔트로피 데이터 비트들을 획득한 후에 선정된 안전성 강도가 만족되도록 추정이 정확하다고 하자. 이 때에 획득된 엔트로피 데이터 비트들의 수는, 엔트로피 데이터 비트들의 선정된 최대 수(512) 보다 훨씬 적은, 총 266(212 + 54 = 266) 이며, 그 차이는 선정된 안전성 강도를 만족시키는데/도달하는데 필요하지 않기 때문에, 512 엔트로피 데이터 비트들을 획득하는 대신 266 엔트로피 데이터 비트들을 획득함으로써, 시간이 절약될 수 있다.
그러나, 선정된 최대 수의 엔트로피 데이터 비트들이 획득되었다는 결정은, 엔트로피 데이터 획득 모듈(155)로부터 출력된 비트 스트링의 엔트로피 강도가 선정된 안전성 강도를 만족시킨다는 단계(320)에서의 결정에 실패하는 것으로 특징화되는 많은 반복 후에나 가능하다. 이러한 상황에서, 전자 디바이스(100)는 에러를 출력하고, 다시 부팅하며, 선정된 안전성 강도를 만족시키는 시드를 다시 결정하고자 시도한다.
방법(300)은 예측할 수 없는 시드가 위치를 찾기 더 어렵게 하기 위해 더 적은 공간으로부터 더 큰 공간으로 엔트로피 데이터 비트들을 매핑하는 매핑/변환 기술들을 실행할 수 있다. 예를 들어, 디바이스-유일 비밀 키를 사용해서 더 짧은 비트-길이 시드에 암호를 적용함으로써, 시드를 더 적은 "탐색 공간"으로부터 더 큰 "탐색 공간"으로 매핑할 수 있으며, 따라서, 어태커/해커에 의한 시드의 추측은 더 어렵게 할 수 있다. 여기서, "탐색 공간"은, 어태커/해커가 탐색하고자 하는 매칭 데이터를 찾기 위해 거쳐야할 필요가 있는 데이터 공간이다.
예를 들어, 128-비트 키를 갖는 128-비트 AES 암호 알고리즘을 사용해서 64-비트 난수를 암호화하면, 또한, 128-비트 암호 데이터를 PRNG 시드로서 사용하면, 암호는 128-비트 데이터 공간에서 모든 64-비트 데이터의 암호화된 값들을 균일하게 분배할 수 있기 때문에(AES의 피처), 어태커/해커는 시드 값을 찾기 위해 128-비트 데이터 공간을 탐색해야만 하는데, 이는 64-비트 데이터 공간에서 탐색하는 것 보다 훨씬 더 어렵다. 이러한 매핑/변환이 128-비트 공간에서 모든 데이터를 매핑하지는 않더라도, 어태커/해커는 데이터의 어떤 일부가 64-비트 공간으로부터 매핑된 것인지를 모르며, 임의의 데이터가 매핑될 수 있기 때문에, 어태커/해커는 전체 128-비트 공간을 탐색해야만 한다. 예를 들어, 방법(300)은 비밀 키 암호화를 사용해서 엔트로피 데이터 비트들의 N-비트 스트링을 엔트로피 데이터 비트들의 M-비트 스트링으로 변환할 수 있는데, 여기서, N 및 M은 정수들이고, N은 M 보다 작다. 예를 들어, N은 64 비트이고, M은 128 비트일 수 있다.
본 명세서에 기술된 바 외의 다른 엔트로피 소스들이 엔트로피 데이터 비트들의 스트링들을 획득하기 위한 기초로서 사용될 수 있다. 전자 디바이스(100)의 엔트로피 소스들(150N)의 추가 일례들은 디지털화 프로세스, 평가 프로세스, 선택적 컨디셔닝 프로세스, 인터럽트 콜, 타임 스탬프, 파일 시스템 등을 포함한다. 변경 파일 정보를 가져서 엔트로피 소스(150N)일 수 있는 한 타입의 파일 시스템은 리눅스(Linux) 파일 시스템이다. 예를 들어, 리눅스 파일 시스템의 변경 파일 정보는, 1) 파일이 액세스될 때, 2) 파일이 변경될 때, 3) 파일이 변경될 때, 4) 모든 파일의 크기, 5) 모든 파일의 아이노드 이름 등을 포함할 수 있다. 그러나, 다른 파일 시스템들은, 변경 파일 정보를 가질 수 있으며, 따라서, 엔트로피 소스들(150N)의 추가 일례들이다.
엔트로피 데이터 비트들(151)이 임의의 소스로부터, 단독으로, 또는 임의의 조합으로, 획득될 수 있기 때문에, 본 명세서에 기술된 바 외의 추가 엔트로피 소스들로부터 획득될 수 있다. 그럼에도 불구하고, 엔트로피 데이터 비트들은, 엔트로피 데이터 비트들로서 사용될 수 있는, 예측할 수 없는 엔트로피 소스에 대한 하나 이상의 측정치들로부터 획득될 수 있으며, 본 설명은 일례들을 제공한다. 이와 관련하여, 추가 기술된-일례들은, 가변 이동들, 이벤트들, 활동들, 오퍼레이션들, 및 프로세스들 중 하나 이상이 엔트로피 데이터 비트들을 획득하기 위해 판독될 수 있는 동안, 경과된 카운터 또는 타이머를 포함한다. 일례로서, 카운터는 개시될 수 있으며, 하드 디스크/디스크 파일에 대한 1회 이상의 판독/기록 오퍼레이션들이 실행될 수 있으며, 카운트를 나타내는 비트 스트링을 획득하기 위해 카운터가 판독될 수 있다. 하드 드라이브 판독/기록 오퍼레이션들은 통상 시간에 따라 변하기 때문에, 카운트-값은 예측할 수 없으며, 따라서 엔트로피 데이터 비트들의 스트링으로서 간주될 수 있다. 다른 일례들은, 인터럽트 콜 타임, 슬리프 모드 오퍼레이션들 등을 카운트하는 것을 포함한다. 다른 일례들은, 컴퓨터 마우스의 이동, 컴퓨터 키패드의 스트로크, 네트워크 트래픽의 속성 및/또는 특징 및/또는 양, 열 잡음, 전기 잡음 등의 임의의 측정을 포함한다.
본 발명의 일례의 피처들은, 1) 양호한 엔트로피 소스들의 사용, 2) 유효 엔트로피 소스들의 양호한 사용, 3) 각각의 시드의 생성 속도, 4) 선정된 안전성 강도, 5) 선정된 최대 수의 엔트로피 비트들을 획득 또는 도달 발생의 최소화, 6) 전자 디바이스의 프리징 또는 크래싱의 발생을 방지하기 위한 재부팅 및 재개시, 7) 암호 오퍼레이션 또는 다른 용도로의 부팅 중의 사용자 대기 기간의 최소화, 8) 부팅 속도의 최대화, 9) 불안정성 방지, 9) 각각의 오퍼레이션 또는 용도를 위한 새로운 시드의 생성(선택적으로 훨씬 더 빈번히), 및 10) (예를 들어, 더 작은 장소로부터 더 큰 장소로의) 변환 매핑에 의한 비트 스트링들의 숨김, 및 11) 1회 반복 또는 반복 히스토리(예를 들어, 평균, 평균값, 표준 편차 등)를 기반으로 선정된 엔트로피 강도에 도달하는데 필요한 비트들의 수의 반복 추정 또는 계산을 기반으로 시드 생성을 융통성 있게 가이드하는 것을 포함한다. 그러나, 어떠한 방법으로든, 본 방법은 엔트로피 강도를 측정하고, 측정된 엔트로피 강도의 결과들을 기반으로 얼마나 더 많은 데이터 비트들이 필요할 수 있는지를 추정한다. 이 때에, 하나의 전자 디바이스의 슬리프 오퍼레이션의 엔트로피 강도가 다른 전자 디바이스의 디스크 판독 기록 오퍼레이션 보다 더 많은 엔트로피 데이터 비트들을 획득하는데 사용되면, 엔트로피 평가 모듈은 획득 마다 획득을 기반으로 필요한 나머지 엔 데이터 비트들을 추정하고 결과에 따라 전자 디바이스를 적응적으로 가이드한다.
본 설명 전체에 걸쳐 명확하게 기술되었지만, 본 발명의 대표적인 실시예들은 광범위한 애플리케이션들에 대한 유틸리티를 가지며, 상술된 설명은 제한적인 것으로 의도되거나 해석되서는 안되며, 본 발명의 양상들의 예시적인 설명으로서 제공된 것이다.
본 명세서에 기술되고 도시된 바는 그 일부 변형물들과 함께 본 발명의 실시예들이다. 본 명세서에 사용된 용어들, 설명들 및 도면들은 단지 일례로서 기재된 것으로 제한의 의미가 아니다. 본 발명의 원리 및 범위 내에서 다수의 변형이 가능함을 당업자는 알 것이며, 여기서 본 발명은 이하의 청구항들 - 및 그 동등물 - 에 의해서 정의되며, 여기서, 모든 용어들은 달리 지시되지 않는 한 가장 넓은 합당한 의미를 나타낸다.
일례들을 참조해서 실시예들이 기술되었지만, 당업자는 본 발명의 본질적인 원리 및 범위 내에서 기술된 실시예들에 대해 다양하게 수정을 할 수 있다. 본 명세서에 사용된 용어들 및 설명은 단지 일례로서 기재된 것으로 제한의 의미가 아니다. 특히, 방법들이 일례들로 기술되었지만, 방법들의 단계들은 도시된 바와 상이한 순서들로 또는 동시에 실행될 수 있다. 당업자는, 이하의 청구항들 및 그 동등물에 정의된 원리 및 범위 내에서 여타 변형들이 가능함을 알 것이다.

Claims (20)

  1. 암호 오퍼레이션(cryptographic operation)에서 사용하기 위한 시드(seed)를 결정하도록 구성된 전자 디바이스로서,
    비트 스트링의 엔트로피 강도에 기초하여 상기 암호 오퍼레이션의 선정된 안전성 강도를 만족시키기 위해 엔트로피 데이터 비트들의 수를 추정하도록 구성된 의사 난수 생성기 - 상기 엔트로피 강도는 무작위성(randomness)의 척도(measure)이며, 상기 의사 난수 생성기는 상기 시드의 결정을 상기 엔트로피 데이터 비트들의 추정된 수에 따라 상이하게 가이드하도록 구성됨 -, 및
    키 및 엔트로피 데이터로부터 엔트로피 강도를 갖는 의사 랜덤 시퀀스를 사용해서 상기 암호 오퍼레이션을 실행하도록 구성된 암호 오퍼레이션 모듈
    을 포함하는 전자 디바이스.
  2. 제1항에 있어서,
    상기 의사 난수 생성기는,
    상기 비트 스트링의 엔트로피 강도가 상기 선정된 안전성 강도를 만족시키는데 실패한 것으로 결정할 때 추가 엔트로피 데이터 비트들을 획득하도록 구성된 엔트로피 데이터 획득 모듈을 포함하고,
    상기 전자 디바이스는 상기 암호 오퍼레이션에서 사용하기 위한 상기 시드를 결정할 때 상기 추가 엔트로피 데이터 비트들 중 적어도 하나를 사용하도록 구성된 전자 디바이스.
  3. 제1항에 있어서,
    상기 전자 디바이스는,
    비밀 키 암호화(secret key encryption)를 사용해서 엔트로피 데이터 비트들의 N-비트 스트링을 엔트로피 데이터 비트들의 M-비트 스트링으로 변환하도록 구성된 시드 결정 모듈을 더 포함하고, N 및 M은 정수들이며, N은 M 보다 작고,
    상기 전자 디바이스는 상기 암호 오퍼레이션에서 엔트로피 데이터 비트들의 M-비트 스트링의 적어도 일부를 사용하도록 구성된 전자 디바이스.
  4. 제1항에 있어서,
    상기 전자 디바이스는,
    선정된 최대 수의 엔트로피 데이터 비트들을 획득할 때 상기 전자 디바이스를 재부팅하도록 구성된 모듈을 더 포함하고,
    재부팅 후에 상기 전자 디바이스는 상기 암호 오퍼레이션의 상기 선정된 안전성 강도를 만족시키기 위해 엔트로피 데이터 비트들의 제2 수를 추정하도록 구성되며,
    상기 전자 디바이스는 상이한 비트 스트링이 상기 선정된 안전성 강도를 만족시킨다고 결정할 때 재부팅 후에 상기 암호 오퍼레이션을 실행하도록 구성되고, 상기 상이한 데이터 비트 스트링은 상기 제2 수의 엔트로피 데이터 비트들을 획득할 때 적어도 부분적으로 기반이 되는 전자 디바이스.
  5. 제1항에 있어서,
    상기 의사 랜덤 시퀀스를 결정하기 위해 상기 키 및 추가 엔트로피 데이터를 사용하도록 구성된 모듈을 더 포함하고, 상기 키는 비밀 키이며 상기 추가 엔트로피 데이터는 적어도 카운터, 타이머, 또는 파일 정보를 사용해서 적어도 하나의 엔트로피 소스로부터 획득되고,
    상기 전자 디바이스는 상기 암호 오퍼레이션에서 사용하기 위한 상기 시드를 생성하기 위해 상기 적어도 하나의 엔트로피 소스로부터 획득된 상기 추가 엔트로피 데이터 및 상기 비밀 키를 사용하도록 구성된 전자 디바이스.
  6. 전자 디바이스를 위한 암호 오퍼레이션에서 사용하기 위한 시드를 결정하는 방법으로서,
    의사 난수 생성기에서, 비트 스트링의 엔트로피 강도를 기반으로 상기 암호 오퍼레이션의 선정된 안전성 강도를 만족시키기 위해 필요한 엔트로피 데이터 비트들의 수를 추정하는 단계 - 상기 엔트로피 강도는 무작위성의 척도임 - 와,
    상기 의사 난수 생성기에서, 상기 시드의 결정을 상기 엔트로피 데이터 비트들의 추정된 수에 따라 상이하게 가이드하는 단계
    를 포함하는 시드 결정 방법.
  7. 제6항에 있어서,
    암호 오퍼레이션 모듈에서, 키 및 엔트로피 데이터로부터 엔트로피 강도를 갖는 의사 랜덤 시퀀스를 사용하여 상기 암호 오퍼레이션을 실행하는 단계를 더 포함하는 시드 결정 방법.
  8. 제6항에 있어서,
    엔트로피 데이터 획득 모듈에서, 상기 엔트로피 강도가 상기 선정된 안전성 강도를 만족시키는데 실패한 것으로 결정할 때 추가 엔트로피 데이터 비트들을 획득하는 단계를 더 포함하고,
    상기 추가 엔트로피 데이터 비트들 중 적어도 하나가 상기 암호 오퍼레이션에서 사용하기 위한 상기 시드를 생성하는데 사용되는 시드 결정 방법.
  9. 제8항에 있어서,
    상기 엔트로피 데이터 획득 모듈에서, 다수의 데이터 비트 스트링들을 연결(concatenating)하는 단계를 더 포함하고,
    상기 연결된 다수의 데이터 비트 스트링들은 상기 암호 오퍼레이션에서 사용하기 위한 상기 시드를 결정하는데 적어도 부분적으로 사용되는 시드 결정 방법.
  10. 제9항에 있어서,
    상기 엔트로피 데이터 획득 모듈에서, 상기 연결된 다수의 비트 스트링들의 적어도 일부를 해싱하는 단계 - 해싱은 상기 암호 오퍼레이션에서 사용하기 위한 상기 시드를 결정하는데 적어도 부분적으로 사용됨 - 와,
    시드 결정 모듈에서, 상기 해싱된 연결된 다수의 비트 스트링들의 적어도 일부를 적어도 부분적으로 사용해서 상기 시드를 생성하는 단계와,
    암호 오퍼레이션 모듈에서, 상기 해싱된 연결된 다수의 비트 스트링들의 적어도 일부를 사용하여 상기 암호 오퍼레이션을 실행하는 단계
    를 더 포함하는 시드 결정 방법.
  11. 제8항에 있어서,
    최대 수의 엔트로피 데이터 비트들이 획득되었다고 결정할 때 상기 전자 디바이스를 재부팅하는 단계와,
    상기 의사 난수 생성기에서, 상기 암호 오퍼레이션의 상기 선정된 안전성 강도를 만족시키기 위해 재부팅 후에 엔트로피 데이터 비트들의 제2 수를 추정하는 단계와,
    암호 오퍼레이션 모듈에서, 상이한 비트 스트링이 상기 선정된 안전성 강도를 만족시킨다고 결정할 때 재부팅 후에 상기 암호 오퍼레이션을 실행하는 단계 - 상기 상이한 비트 스트링은 상기 제2 수의 엔트로피 데이터 비트들을 획득하는 것에 적어도 부분적으로 기초함-
    를 더 포함하는 시드 결정 방법.
  12. 제6항에 있어서,
    시드 결정 모듈에서, 비밀 키 암호화를 사용해서 엔트로피 데이터 비트들의 N-비트 스트링을 엔트로피 데이터 비트들의 M-비트 스트링으로 변환하는 단계 - N 및 M은 정수들이고, N은 M 보다 작음 - 와,
    암호 오퍼레이션 모듈에서, 변환 후에 상기 엔트로피 데이터 비트들의 M-비트 스트링의 적어도 일부를 사용해서 상기 암호 오퍼레이션을 실행하는 단계
    를 더 포함하는 시드 결정 방법.
  13. 제6항에 있어서,
    엔트로피 데이터 획득 모듈에서, 하나 이상의 엔트로피 소스들로부터 추가 엔트로피 데이터 비트들을 획득하는 단계를 더 포함하고, 상기 추가 엔트로피 데이터 비트들은 파일 정보, 드라이브 시크(seek) 타임, 디지털화 프로세스, 평가(assessment) 프로세스, 선택적 컨디셔닝 프로세스, 적어도 하나의 인터럽트 중에 결정된 카운터 값, 또는 슬리프(sleep) 모드 중에 결정된 카운터 값 중 적어도 하나를 사용해서 획득되는 시드 결정 방법.
  14. 제9항에 있어서,
    상기 엔트로피 데이터 획득 모듈에서, 상이한 엔트로피 소스들로부터 상기 연결된 다수의 비트 스트링 중 적어도 두개를 획득하는 단계와,
    상기 시드 결정 모듈에서, 상기 연결된 다수의 비트 스트링을 적어도 부분적으로 사용해서 상기 시드를 생성하는 단계와,
    암호 오퍼레이션 모듈에서, 상기 생성된 시드를 적어도 부분적으로 사용해서 상기 암호 오퍼레이션을 실행하는 단계
    를 더 포함하는 시드 결정 방법.
  15. 제8항에 있어서,
    엔트로피 평가 모듈에 의해, 최대 수의 엔트로피 데이터 비트들이 획득되었다고 결정할 때 에러를 송신하는 단계와,
    상기 엔트로피 평가 모듈에 의해, 상기 에러를 송신한 후에 제2 수의 엔트로피 데이터 비트들을 획득하는 단계와,
    상기 시드 결정 모듈에서, 상기 제2 수의 엔트로피 데이터 비트들로부터 적어도 부분적으로 상기 시드를 생성하는 단계와,
    암호 오퍼레이션 모듈에서, 상기 생성된 시드를 사용하여 상기 암호 오퍼레이션을 실행하는 단계
    를 더 포함하는 시드 결정 방법.
  16. 제6항에 있어서,
    엔트로피 평가 모듈에서, 상기 데이터 비트 스트링의 상기 엔트로피 강도를 결정하는 단계와,
    상기 엔트로피 평가 모듈에서, 상기 결정된 엔트로피 강도가 상기 선정된 안전성 강도를 만족시키는 지를 결정하는 단계와,
    시드 결정 모듈에서, 상기 엔트로피 강도가 상기 선정된 안전성 강도를 만족시킨다고 결정할 때 적어도 부분적으로 상기 데이터 비트 스트링으로부터 상기 시드를 결정하는 단계
    를 더 포함하는 시드 결정 방법.
  17. 제6항에 있어서,
    엔트로피 데이터 획득 모듈에서, 상기 엔트로피 강도가 상기 선정된 안전성 강도를 만족시키는데 실패한 것으로 결정할 때 추가 엔트로피 데이터 비트들을 획득하는 단계와,
    상기 엔트로피 데이터 획득 모듈에서, 상기 추가 엔트로피 데이터 비트들을 처리하는 단계 - 처리는 다수의 독립적 비트 스트링들의 해싱, 연결, 혹은 매핑 중 적어도 하나를 포함함 - 와,
    암호 오퍼레이션 모듈에서, 비밀 키 및 엔트로피 데이터로부터 엔트로피 강도를 갖는 의사 랜덤 시퀀스를 사용해서 상기 암호 오퍼레이션을 실행하는 단계
    를 더 포함하는 시드 결정 방법.
  18. 암호 오퍼레이션에서 사용하기 위한 시드를 결정하는 방법을 구현하는 하나 이상의 컴퓨터 프로그램들이 내장된 컴퓨터 판독 가능 기억 매체로서,
    상기 하나 이상의 컴퓨터 프로그램들은,
    비트 스트링의 엔트로피 강도를 기반으로 상기 암호 오퍼레이션의 선정된 안전성 강도를 만족시키기 위해 필요한 엔트로피 데이터 비트들의 수를 추정하고 - 상기 엔트로피 강도는 무작위성의 척도임 - ,
    상기 시드의 결정을 상기 엔트로피 데이터 비트들의 추정된 수에 따라 상이하게 가이드하기
    위한 컴퓨터 판독 가능 코드를 포함하는, 컴퓨터 판독 가능 기억 매체.
  19. 제18항에 있어서,
    상기 데이터 비트 스트링의 상기 엔트로피 강도를 결정하고,
    상기 결정된 엔트로피 강도가 상기 선정된 안전성 강도를 만족시키는 지를 결정하며,
    상기 엔트로피 강도가 상기 선정된 안전성 강도를 만족시킨다고 결정할 때 적어도 부분적으로 상기 엔트로피 데이터 비트 스트링으로부터 상기 시드를 결정하기
    위한 코드를 더 포함하는 컴퓨터 판독 가능 기억 매체.
  20. 제19항에 있어서,
    상기 엔트로피 강도가 상기 선정된 안전성 강도를 만족시키는데 실패한 것으로 결정할 때 추가 엔트로피 데이터 비트들을 획득하고,
    상기 추가 엔트로피 데이터 비트들을 처리하며 - 처리는 다수의 독립적 비트 스트링들의 해싱, 연결, 매핑 중 적어도 하나를 포함함 - ,
    비밀 키 및 엔트로피 데이터로부터 엔트로피 강도를 갖는 의사 랜덤 시퀀스를 사용해서 상기 암호 오퍼레이션을 실행하기
    위한 코드를 더 포함하는 컴퓨터 판독 가능 기억 매체.
KR1020117002731A 2008-07-07 2009-06-24 의사 난수 생성기 시드의 적응적 생성 KR101292382B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/168,477 US8189778B2 (en) 2008-07-07 2008-07-07 Adaptive generation of a pseudo random number generator seed
US12/168,477 2008-07-07
PCT/US2009/048411 WO2010005784A1 (en) 2008-07-07 2009-06-24 Adaptive generation of a pseudo random number generator seed

Publications (2)

Publication Number Publication Date
KR20110029164A KR20110029164A (ko) 2011-03-22
KR101292382B1 true KR101292382B1 (ko) 2013-08-01

Family

ID=41464426

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020117002731A KR101292382B1 (ko) 2008-07-07 2009-06-24 의사 난수 생성기 시드의 적응적 생성

Country Status (6)

Country Link
US (1) US8189778B2 (ko)
EP (1) EP2300908B1 (ko)
KR (1) KR101292382B1 (ko)
CN (1) CN102084336B (ko)
CA (1) CA2729655A1 (ko)
WO (1) WO2010005784A1 (ko)

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9026571B2 (en) * 2008-10-27 2015-05-05 Microsoft Technology Licensing, Llc Random number generation failure detection and entropy estimation
US8226467B2 (en) 2008-11-12 2012-07-24 Igt Gaming system and method enabling player participation in selection of seed for random number generator
US8489660B2 (en) * 2009-06-26 2013-07-16 Intel Corporation Digital random number generator using partially entropic data
FR2958057B1 (fr) * 2010-03-29 2016-04-01 Univ Nantes Generateur de sequences chaotiques, systeme de generation, procede de mesure d'orbite et programme d'ordinateur correspondants
US8682948B2 (en) * 2011-01-06 2014-03-25 Microsoft Corporation Scalable random number generation
KR101321800B1 (ko) * 2011-09-02 2013-11-21 김상현 대표값 치환을 이용한 데이터 보호 방법 및 장치
CN102307350B (zh) * 2011-09-14 2016-02-03 深圳Tcl新技术有限公司 移动终端与电视机的关联认证方法、电视机及系统
EP2600561B8 (en) * 2011-11-30 2019-12-04 BlackBerry Limited Assessing Cryptographic Entropy
US8787564B2 (en) * 2011-11-30 2014-07-22 Certicom Corp. Assessing cryptographic entropy
US10448379B2 (en) * 2012-05-04 2019-10-15 Texas Instruments Incorporated Enhanced downlink control channel configuration for LTE
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
US9208302B2 (en) * 2012-09-28 2015-12-08 Intel Corporation Multi-factor authentication using biometric data
US9075674B2 (en) 2012-12-12 2015-07-07 Freescale Semiconductor, Inc. Systems with adjustable sampling parameters and methods of their operation
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
US8873750B2 (en) * 2013-03-14 2014-10-28 International Business Machines Corporation Instruction for performing a pseudorandom number generate operation
US9201629B2 (en) * 2013-03-14 2015-12-01 International Business Machines Corporation Instruction for performing a pseudorandom number seed operation
GB2519115A (en) * 2013-10-10 2015-04-15 Ibm Providing isolated entropy elements
RU2577201C2 (ru) * 2014-04-22 2016-03-10 Открытое Акционерное Общество "Информационные Технологии И Коммуникационные Системы" Способ генерации случайного числа с использованием компьютера (варианты)
US9817636B2 (en) * 2014-11-19 2017-11-14 Silicon Laboratories Inc. Generating an entropy signal
US9658832B2 (en) 2015-05-18 2017-05-23 Red Hat Israel, Ltd. Multi-factor entropy sourcing for random number generators
US10116441B1 (en) * 2015-06-11 2018-10-30 Amazon Technologies, Inc. Enhanced-security random data
DE102016223695A1 (de) * 2016-11-29 2018-05-30 Continental Teves Ag & Co. Ohg Verfahren zur Bereitstellung von Zufallszahlen für Steuereinheiten eines Fahrzeugnetzwerks sowie Fahrzeugnetzwerk zur Durchführung dieses Verfahrens
EP3596651A4 (en) * 2017-02-27 2021-01-06 Cord3 Innovation Inc. SYMMETRICAL CRYPTOGRAPHIC PROCESS AND SYSTEM AND THEIR APPLICATIONS
US10742408B2 (en) 2017-02-27 2020-08-11 Cord3 Innovation Inc. Many-to-many symmetric cryptographic system and method
CN108512656B (zh) * 2017-02-28 2021-06-25 中国科学院数据与通信保护研究教育中心 一种高速足熵数字物理噪声源装置
CN110326306B (zh) * 2017-03-01 2020-12-22 三菱电机株式会社 数字信号处理装置及音响装置
US11646867B2 (en) * 2017-12-22 2023-05-09 The Boeing Company Systems and methods implementing countermeasures to phase tracking attacks on ring oscillator based entropy sources
US10938557B2 (en) 2018-03-02 2021-03-02 International Business Machines Corporation Distributed ledger for generating and verifying random sequence
US10922921B2 (en) 2018-09-13 2021-02-16 Igt Gaming system and method for adding player influence to game outcomes
CN113556228B (zh) * 2021-07-29 2024-01-12 黄博暄 可用作种子的伪随机数的生成与相应唯一编码的生成方法
WO2023172807A1 (en) * 2022-03-08 2023-09-14 Qualcomm Incorporated Selecting secure sequences for radio frequency communication and positioning applications

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060067527A1 (en) 2004-09-27 2006-03-30 Urivskiy Alexey V Method for making seed value used in pseudo random number generator and device thereof
US20080063190A1 (en) 2006-09-13 2008-03-13 Pitney Bowes Incorporated Method and system for generation of cryptographic keys for use in cryptographic systems

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7177430B2 (en) * 2001-10-31 2007-02-13 Portalplayer, Inc. Digital entroping for digital audio reproductions
US20060002550A1 (en) * 2004-05-25 2006-01-05 Pitney Bowes Incorporated Method and system for generation of cryptographic keys and the like
CN100356735C (zh) * 2004-07-20 2007-12-19 华为技术有限公司 伪随机数产生装置及利用其实现的测试系统
WO2006015625A1 (en) 2004-08-09 2006-02-16 Telecom Italia S.P.A. Method and apparatus for generating random data
US8589695B2 (en) 2006-06-07 2013-11-19 Red Hat, Inc. Methods and systems for entropy collection for server-side key generation
KR100792287B1 (ko) 2006-07-27 2008-01-07 삼성전자주식회사 자체 생성한 암호화키를 이용한 보안방법 및 이를 적용한보안장치

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060067527A1 (en) 2004-09-27 2006-03-30 Urivskiy Alexey V Method for making seed value used in pseudo random number generator and device thereof
US20080063190A1 (en) 2006-09-13 2008-03-13 Pitney Bowes Incorporated Method and system for generation of cryptographic keys for use in cryptographic systems

Also Published As

Publication number Publication date
CN102084336B (zh) 2015-03-04
EP2300908A4 (en) 2014-05-07
KR20110029164A (ko) 2011-03-22
CN102084336A (zh) 2011-06-01
WO2010005784A1 (en) 2010-01-14
US20100002877A1 (en) 2010-01-07
EP2300908B1 (en) 2017-01-25
EP2300908A1 (en) 2011-03-30
US8189778B2 (en) 2012-05-29
CA2729655A1 (en) 2010-01-14

Similar Documents

Publication Publication Date Title
KR101292382B1 (ko) 의사 난수 생성기 시드의 적응적 생성
Aldaya et al. Cache-timing attacks on RSA key generation
CN109150499B (zh) 动态加密数据的方法、装置、计算机设备和存储介质
CN110214325B (zh) 数据屏蔽的方法和系统
US9383969B2 (en) Random number generating system based on memory start-up noise
KR100659610B1 (ko) 의사 난수 발생기에서의 씨드값 생성방법 및 그 생성장치
EP3453135A2 (en) System and method for encryption and decryption based on quantum key distribution
AU2021200062B2 (en) Systems and computer-implemented methods for generating pseudo random numbers
WO2018017168A2 (en) System and method for encryption and decryption based on quantum key distribution
McEvoy et al. Fortuna: cryptographically secure pseudo-random number generation in software and hardware
Röck Pseudorandom number generators for cryptographic applications
CN112580114A (zh) 一种信息处理方法、装置、设备及存储介质
US20230396432A1 (en) Methods and systems for updatable encryption
US20200076591A1 (en) Systems and Methods for Automated Generation and Update of Cipher Parameters
Loutfi et al. Smartphone sensors as random bit generators
US11791981B2 (en) Generating cryptographic random data from raw random data
US20230008949A1 (en) Simulation device and method for homomorphic cryptosystem
JP5337076B2 (ja) 秘密計算システム、秘密計算方法、不正使用防止方法
US10936757B2 (en) Registration destination determination device, searchable encryption system, destination determination method, and computer readable medium
CN111159780A (zh) 一种硬件加密方法、硬件解密方法及装置
CN112913184B (zh) 计算基于块密码的加密方案系统和方法的密钥轮换周期
JP6904417B2 (ja) 乱数算出装置、乱数算出方法、暗号装置、及び、乱数算出プログラム
Giron et al. An Entropy Source based on the Bluetooth Received Signal Strength Indicator
Du et al. An Empirical Study on the Quality of Entropy Sources in Linux Random Number Generator
KR20230162524A (ko) 동형 암호문에 대한 재부팅 연산을 수행하는 장치 및 방법

Legal Events

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

Payment date: 20160713

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20170713

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20180713

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20190712

Year of fee payment: 7