KR20140022869A - 메모리 시동 노이즈에 기초한 랜덤 번호 생성 시스템 - Google Patents

메모리 시동 노이즈에 기초한 랜덤 번호 생성 시스템 Download PDF

Info

Publication number
KR20140022869A
KR20140022869A KR1020137029323A KR20137029323A KR20140022869A KR 20140022869 A KR20140022869 A KR 20140022869A KR 1020137029323 A KR1020137029323 A KR 1020137029323A KR 20137029323 A KR20137029323 A KR 20137029323A KR 20140022869 A KR20140022869 A KR 20140022869A
Authority
KR
South Korea
Prior art keywords
memory
random number
random
generation system
number generation
Prior art date
Application number
KR1020137029323A
Other languages
English (en)
Other versions
KR101972126B1 (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 KR20140022869A publication Critical patent/KR20140022869A/ko
Application granted granted Critical
Publication of KR101972126B1 publication Critical patent/KR101972126B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/58Random or pseudo-random number generators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/0866Generation of secret information including derivation or calculation of cryptographic keys or passwords involving user or device identifiers, e.g. serial number, physical or biometrical information, DNA, hand-signature or measurable physical characteristics

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)
  • Storage Device Security (AREA)
  • Read Only Memory (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Power Sources (AREA)

Abstract

랜덤 번호들의 시퀀스를 생성하기 위한 랜덤 번호 생성 시스템은 메모리 ― 상기 메모리는 기록 가능하고, 휘발성이며, 상기 메모리가 상기 메모리의 각각의 파워-업 시에 적어도 부분적으로 랜덤 메모리 콘텐츠를 포함하도록 구성됨 ― ; 상기 적어도 부분적으로 랜덤 메모리 콘텐츠에 의존한 시드(seed)를 상기 랜덤 번호 생성 시스템에 시딩(seeding)하도록 구성된 인스턴스화 유닛(instantiating unit) ― 상기 랜덤 번호들의 시퀀스는 상기 시드에 의존하여 생성됨 ― ; 및 상기 시드에 의존하여 상기 랜덤 번호 생성 시스템에 의해 생성된 랜덤 번호들로 상기 메모리의 적어도 부분을 오버-라이팅(over-writing)하도록 구성된 오버-라이팅 유닛을 포함한다.

Description

메모리 시동 노이즈에 기초한 랜덤 번호 생성 시스템{RANDOM NUMBER GENERATING SYSTEM BASED ON MEMORY START-UP NOISE}
본 발명은 랜덤 번호들의 시퀀스를 생성하기 위한 랜덤 번호 생성 시스템에 관한 것이다.
랜덤 번호 생성은 예를 들어, 대역 확산 주파수(spread spectrum frequency)들을 선택하기 위한 시뮬레이션들, 예를 들어, Monte Carlo 방법들, 원격통신 시스템들로부터 도박 등에 이르는 매우 상이한 분야들에서 이용된다. 랜덤 번호들의 품질은 모든 이들 분야들에 대해 중요하지만, 이것은 암호법(cryptography) 분야에서 특히 중요함을 띈다.
암호법에서, 랜덤 번호들은 다수의 목적들을 위해 그리고 종종 랜덤 번호들의 품질에 관한 암호 시스템 힌지들(cryptographic system hinges)의 보안을 위해 이용된다. 예를 들어, 키 생성은 흔히 랜덤 번호들의 소스를 이용한다. 암호법에서 랜덤 번호들의 다른 애플리케이션들은 초기화 벡터로서, 예를 들어, CBC, 모드에서 실행하는 블록 암호(block cipher)를 위한 초기화 백터로서, 넌스(nonce)의 생성, 시도-응답 프로토콜에서 이용하기 위한 시도(challenge)의 생성을 포함한다.
다른 보안 애플리케이션들은 또한 랜덤 번호들을 이용할 수 있는데, 예를 들어, 사이드(side) 채널 분석에 대한 대책은 랜덤 블라인딩 번호(random blinding number)를 갖는 비밀 정보의 블라인딩을 이용할 수 있다.
이들 애플리케이션들에서, 랜덤 번호들은 충분히 랜덤이 아닌 경우, 랜덤 번호들은 이들이 이용되는 암호 애플리케이션의 보안을 위태롭게 할 수 있다.
랜덤 번호의 시퀀스는 바람직하게는 예측 불가능할 수 있다. 따라서 공격자는 그것이 생성되기 이전에 운(chance)보다는 더 양호하게 시퀀스를 예측할 수 없다. 유사하게, 시퀀스는 신뢰할 수 있게 재생성될 수 없다. 시퀀스가 생성된 이후, 그것을 재차 생성하는 것이 실현 가능하지 않다.
예측 불가능한 시퀀스에 대해, 누군가가 알고리즘, 시퀀스를 생성하는 하드웨어 및 이전에 생성된 비트들 모두의 완전한 지식을 갖는 경우조차도, 다음 랜덤 비트가 무엇일 될지를 예측하도록 애플리케이션의 보안 요구사항들(security demand)을 제공하는 것은 실현 불가능하다.
진정한 랜덤 번호 시퀀스는 모든 이러한 특성들을 갖지만, 이들은 또한 그것이 적합한 랜덤 시드를 갖는 경우 결정론적인(deterministic) 랜덤 번호 시퀀스로부터 획득될 수 있다.
랜덤 번호 생성기가 생성하는 객체들은 통상적으로 몇몇 미리 결정된 범위로부터의 번호들로서, 문자들로서, 또는 비트들로서 등등으로서 다양한 방식들로 해석될 수 있다. 비트들의 시퀀스는 번호들의 시퀀스에 맵핑될 수 있고 그 반대도 가능하다. 랜덤 비트 생성기란 용어가 또한 이용되고 0 과 1 간의 랜덤 일체 번호들(random integral numbers)을 생성하는 랜덤 번호 생성기로서 간주된다. 랜덤 비트 생성기에 적용하는 것은 랜덤 번호 생성기에 필요한 변경을 가하여 또한 적용되고 그 반대도 가능하다.
랜덤 비트 생성기들(RBG들)은 2개의 클래스들로 분할될 수 있다. 일 클래스의 랜덤 번호 생성기들은 출력의 각각의 비트가 예측 불가능한 물리적인 프로세스에 기초하는, 비-결정론적으로 비트들을 생성하고; 이들 랜덤 비트 생성기들은 흔히 비-결정론적인 랜덤 비트 생성기(non-deterministic random bit generator; NRBG)로서 알려진다. 다른 클래스의 랜덤 번호 생성기들은 알고리즘을 이용하여 결정론적으로 비트들을 컴퓨팅하며; RBG들의 이러한 클래스는 결정론적인 랜덤 비트 생성기(Deterministic Random Bit Generator; DRBG)들로서 알려진다. NRBG들이 진정한 랜덤 번호 생성기로서 지칭된다. DRBG는 또한 수도 랜덤 번호 생성기로서 지칭된다.
결정론적 랜덤 비트 생성기는 통상적으로 시드(seed)를 통해 개시된다. 시드는 번호들의 제한된 시퀀스, 예를 들어, 결정론적 랜덤 번호 생성기에 대한 입력으로서 이용되는 비트들의 스트링(string)이다. 시드는 생성기의 내부 상태의 부분 또는 모두 다를 결정할 것이다. 시드의 엔트로피(entropy)은 DRBG의 보안 요건들을 지원하기에 충분해야 한다. 시드는 진정한 랜덤 번호 생성기로부터 획득될 수 있다.
결정론적 랜덤 비트 생성기들은 2007년 3월, NIST 특별 공개문헌 800-90, Recommendation for Random Number Generation Using Deterministic Random Bit Generators에서 추가로 기술된다. 우리는 이 공개문헌을 NIST 표준으로서 지칭할 것이다.
대부분의 진정한 랜덤 번호 생성기들은 랜덤 프로세스로서 열 노이즈를 이용한다. 예를 들어, 집적 회로들의 열 노이즈는 평형 상태(in equilibrium)로 도체들 상에 존재하는 작은 전력 변동들을 기술된다. 랜덤성의 다른 소스들은 방사성 물질의 부식, 양자역학 프로세스들, 자유-실행 발진기의 주파수 불안정성 등을 포함한다.
진정한 랜덤 번호들의 부가적인 소스는 2009년, D. Holcomb, W. Burleson, K. Fu의 Power - up SRAM State as an Identifying Fingerprint and Source of True Random Numbers에서 기술된다. 이 논문에서, SRAM의 메모리 콘텐츠가 SRAM이 파어-업된 이후에 부분적으로 랜덤이기 때문에 진정한 랜덤 번호 생성기로서 이용된다는 것이 기술된다.
Holcomb 등의 진정한 랜덤 번호 생성기와 관련하여 몇 개의 단점들이 존재한다. 메모리는 고정된 크기를 갖기 때문에, 그것으로부터 생성될 수 있는 랜덤성의 양이 제한된다. 사실상, 메모리는 통상적으로 완전히 랜덤이 아닐 것이기 때문에, 메모리 콘텐츠는 컨디셔닝될 것이고, 그 결과 시동으로부터 획득될 수 있는 랜덤 비트들의 심각함 감소를 초래한다. 이에 따라, Holcomb 등의 설계는 대부분의 실제 애플리케이션들에서 적합하지 않을 것이다.
또한, 이용되는 메모리가 컴퓨터 내에 통합되는 경우, 추가의 단점이 존재한다. 컴퓨터는 소프트 리셋을 경험하는 경우, 메모리의 콘텐츠는 변경되지 않는다. 메모리의 콘텐츠가 진정으로 랜덤이 되는 것을 기대하는 애플리케이션은 제 2 시간에 동일한 랜덤 번호들을 이용할 것이다. 암호 애플리케이션에 대해, 이는 시스템의 보안은 심각하게 훼손할 수 있다. 랜덤 번호들의 다른 애플리케이션들은 또한 반복 불가능성(unrepeatability)의 가정이 위반되기 때문에 손상될 것이다.
본 발명에 따른 랜덤 번호들의 시퀀스를 생성하기 위한 랜덤 번호 생성 시스템은 위에 언급된 단점들을 방지 또는 완화시킨다. 랜덤 번호 생성 시스템은 메모리를 포함한다. 이 메모리는 기록 가능하고, 휘발성이며, 메모리가 메모리의 각각의 파워-업 시에 적어도 부분적으로 랜덤 메모리 콘텐츠를 포함하도록 구성된다. 랜덤 번호 생성 시스템은 또한 적어도 부분적으로 랜덤 메모리 콘텐츠에 의존한 시드(seed)를 랜덤 번호 생성 시스템에 시딩(seeding)하도록 구성된 인스턴스화 유닛(instantiating unit)을 포함한다. 랜덤 번호들의 시퀀스는 시드에 의존하여 생성된다. 랜덤 번호 생성 시스템은 또한 시드에 의존하여 랜덤 번호 생성 시스템에 의해 생성된 랜덤 번호들로 메모리의 적어도 부분을 오버-라이팅(over-writing)하도록 구성된 오버-라이팅 유닛을 포함한다.
메모리의 콘텐츠는 시드를 생성하는데 이용된다. 랜덤 번호들의 시퀀스가 시드에 의존하여 생성되기 때문에, 원칙적으로 생성될 수 있는 랜덤 번호들의 양에 대한 제한이 없다. 안전하게 생성될 수 있는 랜덤 번호들의 최대 수를 포함하는 랜덤 번호 생성 방식이 이용되는 경우조차도, 이 번호는 통상적으로 하나의 메모리 파워-업으로부터 획득될 수 있는 랜덤성의 양보다 훨씬 더 크다.
랜덤 번호 생성 시스템을 포함하는 디바이스의 소프트-리셋 동안, 메모리에 대한 전력은 중단되지 않는다. 메모리가 파워-업(예를 들어, 하드 리셋 동안)될 때마다 그것이 새로운 적어도 부분적인 랜덤 메모리 콘텐츠를 생성하지만, 그 효과는 메모리가 재-파워링되지 않는 소프트 리셋 동안 발생하지 않는다. 그러나 보통 랜덤 콘텐츠가 하드 리셋에서 나타나는 메모리는 랜덤 번호들로 오버라이팅되기 때문에, 이 문제는 해결된다.
소프트 또는 하드 리셋 이후에, 랜덤 번호 생성 시스템에 의해 생성되는 랜덤 번호들의 시퀀스는 열등한 랜덤성으로 이루어지지 않는다. 특히, 소프트 리셋 이후에 랜덤 번호 생성 시스템에 의해 생성된 랜덤 번호들은 메모리의 이전의 파워-업 이후에 생성된 랜덤 번호들과 동일하지 않다. 애플리케이션들은 랜덤 번호들의 품질에 의존할 수 있다.
Holcomb에서 기재된 설계에 비교하여 강조를 위해, 본 발명은 적어도 2개의 이점들을 갖는다. Holcomb에서, 메모리의 크기의 작은 퍼센티지로 제한되기 때문에 메모리로부터 유도될 수 있는 랜덤 번호들의 수가 작다. 그러나 본 발명에서, 생성될 수 있는 랜덤 번호들의 수는 그렇게 제한되지 않는데, 그 이유는 랜덤 번호들이 랜덤 번호 생성 시스템을 이용하여, 예를 들어, 시드에 기초한 결정론적 랜덤 번호 생성기를 이용하여 간접적인 방식으로 메모리로부터 유도되기 때문이다. 또한, 본 발명에서, 랜덤 번호들의 품질은 소프트 리셋 이후에 악화되지 않는 반면에, Holcomb에서 소프트 리셋 이후에 생성된 랜덤 번호들은 선행 리셋 이후에 생성된 것들과 정확히 동일하게 될 것이다.
랜덤 번호들의 시퀀스는 비트들의 시퀀스일 수 있다. 랜덤 번호들은 또한 바이트들일 수 있고, 예를 들어, 0 내지 255의 범위의 번호들, 또는 워드들의 형태로 또는 임의의 다른 적합한 형태일 수 있다. 번호들은 또한 문자 등으로서 표현될 수 있다. 랜덤 번호들의 시퀀스는 랜덤 번호 생성 시스템에 포함되는 출력에 배치될 수 있다. 랜덤 번호 생성 시스템은 시퀀스의 다음 랜덤 번호가 요청되는 API를 제공할 수 있고 이때, 랜덤 번호 생성 시스템이 그것을 공급한다.
메모리는 기록 가능하여서, 메모리는 랜덤 번호들에 의해 오버라이팅될 수 있다. 메모리는 휘발성이기 때문에, 랜덤 번호들로 메모리를 오버-라이팅하는 것은 하드 리셋 이후에 메모리 콘텐츠들에 영향을 주지 않는다. 하드 리셋 이후에, 메모리는 그것이 파워-업된 이후 새로운 적어도 부분적인 랜덤 메모리 콘텐츠를 포함한다. 이것은 메모리가 파워-업된 채로 유지되는 경우, 메모리가 그 사이에 파워-다운되는 경부보다 메모리에 대한 인가되지 않은 액세스가 훨씬 더 어렵기 때문에 유리하다. 메모리는 자립형 메모리일 수 있지만, 메모리는 또한 더 큰 메모리의 부분일 수 있다. 예를 들어, 메모리는 하나 이상의 블록들, 말하자면 더 큰 SRAM의 하나의 2kb 블록일 수 있다.
더 큰 메모리의 다른 부분은 다른 목적들, 예를 들어, 임시 저장소로서 할당될 수 있다.
오버-라이팅 유닛이 메모리의 각각의 개별 위치를 오버-라이팅하는 것이 필수적이지 않다는 것을 본 발명자는 간파하였다. 오버라이팅된 메모리의 총 엔트로피가 랜덤 번호들의 시퀀스를 이용하는 애플리케이션에 의해 요구되는 보안 요구들보다 더 낮지 않으면, 오버헤드는 전체 메모리보다 못 미치게 오버-라이팅함으로써 감소될 수 있다.
랜덤 데이터와 별개로, 다른 비-랜덤 데이터가 메모리에 기록될 수 있다. 예를 들어, 반드시 랜덤일 필요가 없는 랜덤 번호 생성 시스템의 내부 상태의 엘리먼트들, 예를 들어, 리시드 카운터(reseed counter)가 메모리에 기록될 수 있다. 이는 이들 엘리먼트들이 소프트 리셋 이후 복구되도록 허용한다. 리시드 카운터들은 NIST 표준에서 논의된다.
휘발성 저장소로서 또한 알려진 휘발성 메모리는 유지되는 전원을 요구하지 않는 비-휘발성 메모리와 달리, 저장된 정보를 유지하기 위해 전력을 요구하는 컴퓨터 메모리이다.
인스턴스화 유닛은 다수의 소스들로부터 시드를 유도할 수 있다. 일 실시예에서, 랜덤 번호 생성 시스템은 엔트로피 소스를 포함한다. 엔트로피 소스는 메모리를 포함한다. 인스턴스화 유닛은 엔트로피 소스로부터 시드를 유도한다. 메모리 외에, 엔트로피 소스는 엔트로피의 다른 소스들을 포함할 수 있다. 예를 들어, 엔트로피 소스는 엔트로피 소스로서 이용되는 시계를 포함할 수 있다. 엔트로피 소스는 예측 불가능한 데이터의 소스이다. 엔트로피 소스는 반드시 균일한 분포를 가질 필요는 없다. 인스턴스화 유닛은 NIST 표준에 따른 인스턴스화 유닛일 수 있지만, 이것이 필수적인 것은 아니다. 인스턴스화 유닛은 랜덤 번호들의 생성을 시작하기 위핸 시드를 생성한다.
파워-업 시에 메모리의 콘텐츠는 완전히 랜덤일 필요가 없거나, 그의 분포가 균일하게 될 필요는 없다. 파워-업 시에 메모리의 콘텐츠의 엔트로피는 적어도 시드 만큼 큰 것이 바람직하다. 그러나 파워-업 시에 메모리의 콘텐츠의 엔트로피가 시드 보다 더 작은 경우, 본 발명은 여전히 기능할 것이고 소프트 리셋 이후의 랜덤 시퀀스의 품질이 여전히 개선될 것이다. 콘텐츠의 각각의 개별 엘리먼트들, 말하자면 개별 비트들 또는 바이트들이 균등하게 랜덤이 될 필요는 없고; 사실상 몇몇 개별 엘리먼트들은 전혀 랜덤이 아닐 수 있다.
일 실시예에서, 인스턴스화 유닛은 내부 엔트로피 풀에 시드를, 통상적으로 내부 상태의 부분을 저장하도록 구성된다. 엔트로피 풀은 랜덤 번호 생성 시스템의 내부 메모리에 저장될 수 있다. 랜덤 번호들의 시퀀스는 내부 엔트로피 풀에 의존하여 생성된다. 엔트로피 풀은 시퀀스를 생성하는 결과로서 수정될 수 있지만, 이것이 필수적이진 않다. 예를 들어, 시드는 해시, 바람직하게는 암호학적으로 강한 해시, 예를 들어, sha-256을 이용하여 해시되는 카운터와 연계될 수 있다. 해시의 출력의 부분 또는 모두 다는 랜덤 번호들의 시퀀스의 부분으로서 이용된다.
메모리의 콘텐츠는 완전히 랜덤이라는 것이 필수적인 것은 아니다. 메모리의 콘텐츠는 그의 이론적으로 Shannon 최대 엔트로피보다 작은 엔트로피를 가질 수 있다. 일 실시예에서, 랜덤 번호 생성 시스템은 메모리 콘텐츠의 엔트로피를 메모리 콘텐츠의 비트-길이보다 짧은 비트-길이를 갖는 스트링으로 압축하기 위한 컨디셔닝 유닛, 스트링에 의존한 시드를 랜덤 번호 생성 시스템에 시딩하도록 구성된 인스턴스화 유닛을 포함한다.
컨디셔닝 유닛은 바람직하게는 컨디션 기능을 수행한다. 컨디셔닝 유닛은 엔트로피 소스의 부분일 수 있지만, 이것이 필수적인 것은 아니다. 컨디셔닝 기능을 포함하거나 컨디셔닝이 엔트로피 소스의 출력 상에서 수행되는 엔트로피 소스는 때때로 컨디셔닝된 엔트로피 소스로서 지칭된다. 컨디셔닝 기능은 컨디셔닝된 엔트로피 소스가 완전한 엔트로피 비트 스트링들을 제공한다는 것을 보장한다.
일 실시예에서, 랜덤 번호 생성 시스템은 내부 상태를 저장하기 위한 내부 상태 메모리 및 내수 상태 메모리에 저장된 현재 내부 상태로부터 새로운 내부 상태를 유도하는 것과 감께 현재 내부 상태로부터 랜덤 번호들의 시퀀스의 랜덤 번호를 생성하도록 구성된 생성 유닛을 포함한다. 예를 들어, 생성 유닛은 시퀀스의 랜덤 번호들을 생성하도록 내부 상태에 대한 생성 기능 및 내부 상태를 업데이트하기 위한 업데이팅 기능을 적용하도록 구성될 수 있다. 생성 유닛은 내부 상태 메모리에 새로운 내부 상태를 기록함으로써 내부 상태를 업데이트할 수 있다. 인스턴스화 유닛은 내부 상태 메모리로 기록하도록, 예를 들어, 시드를 기록하도록 구성된다. 인스턴스화 유닛은 또한 예를 들어, 시드의 길이의 범위까지 시드 상에서 추가의 프로세싱을 수행하고 예를 들어, 내부 상태 메모리에 추가의 프로세싱 결과를 기록할 수 있다. 현재 및 새로운 내부 상태를 포함하는 내부 상태는 미리 결정된 내부 상태 크기 이하의 비트 길이를 갖는다.
일 실시예에서, 오버-라이팅 유닛은 랜덤 번호들의 시퀀스의 동작 동안 랜덤 번호들을 메모리의 부분에 오버-라이팅하도록 구성된다. 이것은 몇 개의 이점들을 갖는다. 이 실시예에서, 소프트 리셋 이후에 메모리의 콘텐츠들이 적합하게 랜덤이 될 것이므로, 오버-라이팅 유닛이 리셋의 경우에 리셋 신호를 반드시 수신할 필요가 없다. 또한, 오버-라이팅 유닛이 소프트-리셋의 경우에 리셋 신호를 수신하는 경우조차도, 소프트-리셋이 실행될 수 있기 이전에 메모리를 오버라이팅함으로써 야기되는 시간 지연이 없다.
또한, 보안 이점이 존재하는데, 공격자가 몇몇 지점에서 소프트-리셋 이후에 엔트로피 소스로서 이용되는 메모리에 대한 기록 액세스를 획득하도록 관리하는 경우, 그는 소프트 리셋 이후에 시퀀스의 랜덤성을 감소시킬 수 있을 수 있다. 그러나 메모리가 연속적으로 업데이트되는 경우 이러한 잠재적인 위협은 공격자에게 알려지지 않은 부가적인 엔트로피가 메모리에 곧 기록될 것이므로 완화된다. 예를 들어, 오버-라이팅 유닛은 일련의 미리 결정된 시간 간격들의 각각의 경과 내에서 또는 미리 결정된 수의 사이클, 말하자면 중앙 프로세서의 사이클들, 말하자면 클록 사이클들이 발생한 이후, 랜덤 번호를 기록하도록 구성될 수 있다.
일 실시예에서, 오버-라이팅 유닛은 랜덤 번호들의 시퀀스의 미리 결정된 수의 랜덤 번호들이 생성될 때마다 시드에 의존하여 랜덤 번호 생성 시스템에 의해 생성된 랜덤 번호를 메모리에 기록하도록 구성된다. 예를 들어, 랜덤 번호는 각각의 랜덤 번호가 시퀀스 내에 생성될 시에 메모리의 부분에 기록될 수 있다.
일 실시예에서, 오버-라이팅 유닛은 시스템이 애플리케이션으로부터 특정한 양의 랜덤 바이트들에 대한 요청을 수신한 이후, 시드에 의존하여 랜덤 번호 생성 시스템에 의해 생성된 랜덤 번호를 메모리에 기록하도록 구성된다.
일 실시예에서, 오버-라이팅 유닛은 랜덤 번호 생성 시스템이 리셋 신호를 수신 시에, 시드에 의존하여 랜덤 번호 생성 시스템에 의해 생성된 랜덤 번호들을 메모리에 오버-라이팅하도록 구성된다. 특히, 오버-라이팅 유닛은 리셋 신호를 수신할 수 있다.
리셋 신호가 수신된 이후 메모리를 오버라이팅하는 것은 오버라이팅이 증분 오버라이팅(incremental over-writing)보다 총 시간 면에서 비교하면 더 빠르기 진행한다는 이점을 갖는다. 성능 임계 애플리케이션들에서, 정상적인 동작 동안, 비-본질적인 단계들이 최소로 감소된 채로 유지되는 것이 바람직할 수 있는 반면에, 셧다운 시에, 예를 들어, 소프트 리셋 동안 더 많은 시간이 이용 가능할 수 있다. 셧 다운 동안, 소프트 리셋 동안, 오버라이팅은 또한 그것이 정상적인 동작 동안 이루어지는 메모리 상의 잠재적인 공격을 무력화한다는 이점을 갖는다. 대안적으로, 메모리의 부분은 예를 들어, 초기화의 부분으로서 시드를 유도한 이후 완전히 오버라이팅될 수 있다.
리셋 신호는 결국 오버-라이팅을 시작하도록 오버라이팅 유닛에 시그널링하는 랜덤 번호 생성 시스템에 의해 먼저 수신될 수 있다.
일 실시예에서, 메모리의 적어도 부분의 비트-크기는 적어도 시드의 비트-크기 만큼 크다. 이는 소프트-리셋 이후에 메모리의 콘텐츠로부터 생성될 시드가 소프트 리셋 이전에 생성된 시퀀스의 것과 동일한 엔트로피를 갖는다는 이점을 갖는다. 개시 함수, 컨디셔닝 함수, 생성 함수 등 중 하나가 이론적인 최적, 즉, 완벽 엔트로피 보존보다 다소 못 미치게 기능하는 경우조차도, 소프트 리셋 이후의 시퀀스의 품질은 이전의 것과 거의 동일하게 될 것이다.
다른 한편, 오버헤드를 감소시키기 위해, 이는 완전한 메모리 미만을 오버-라이팅할 수 있다. 일 실시예에서, 메모리의 적어도 부분의 비트-크기는 시드의 비트 크기와 동일하다. 엔트로피 관점에서, 완전히 오버라이팅된 메모리는 기껏해야 시드에 존재했던 것만큼 많은 엔트로피를 포함하기 때문에 손실이 거의 없을 것이다.
이들 함수들의 가능한 불완전성들을 보상하고 엔트로피 손실을 경계하기 위해, 그것은 보다 많이, 예를 들어, 랜덤 번호 생성기의 내부 상태의 비트들이 만큼 많은 랜덤 비트들을 오버라이팅할 수 있다. 예를 들어, 일 실시예에서, 랜덤 번호 생성 시스템은 내부 상태를 저장하기 위한 내부 상태 메모리 및 내부 상태 메모리에 저장된 현재 내부 상태로부터 새로운 내부 상태를 유도하는 것과 함께 현재 내부 상태로부터 랜덤 번호들의 시퀀스의 랜덤 번호를 생성하도록 구성된 생성 유닛을 포함하고, 메모리의 적어도 부분의 비트-크기는 적어도 내부 상태의 비트-크기만큼 크다.
그러나 오버헤드를 감소시키기 위해, 그것은 부가적인 비트들의 양을, 말하자면 내부 상태의 비트-크기의 2배 미만으로, 바람직하게는, 내부 상태의 비트-크기 이하로 감소시킬 수 있다.
내부 상태의 비트-크기와 동일한 메모리의 적어도 부분의 비트-크기를 선택하는 것은, 기록된 것의 양이 내부 상태 내의 데이터의 양 미만이 아니기 때문에, 메모리의 오버라이팅 동안 어떠한 엔트로피도 손실되지 않았음을 보다 쉽게 주장할 수 있다는 이점을 갖는다. 동시에, 오버헤드는 최소로 감소된다.
메모리의 부분을 오버라이팅하는데 이용되는 랜덤 번호들은 상이한 소스들로부터 획득될 수 있다. 일 실시예에서, 메모리의 적어도 부분을 오버-라이팅하기 위해 시드에 의존하여 랜덤 번호 생성 시스템에 의해 생성된 랜덤 번호들은 랜덤 번호 생성 시스템에 의해 생성된 랜덤 번호들의 시퀀스의 부분이다. 이러한 접근법의 이점은 양호한 랜덤 번호들을 생성하기 위한 설계가 하나는 시퀀스를 위한 것이고 하나는 오버라이팅을 위한 것인 랜덤 번호들의 2개의 스트림들을 생성하도록 복제될 필요가 없다는 것이다.
시퀀스 내에 생성된 랜덤 번호들은 메모리를 오버라이팅하기 위해 재사용될 수 있는데, 즉, 랜덤 번호는 몇몇 애플리케이션에서 이용하기 위해 출력되고 메모리에 기록된다. 이것이 반드시 초기화 단계 이후 소프트-리셋이 뒤따른 이후 이들 값들의 재사용을 야기하는 것은 아니다. 그러나 다른 실시예에서, 시퀀스들 내의 몇몇 번호들은 메모리를 오버라이팅하기 위해, 또는 애플리케이션으로의 출력을 위해서 이용되고, 양자를 위해 이용되지 않는다.
오버라이팅을 위해 시퀀스의 부분을 이용하는 대신, 그 목적을 위해 특별히 그것들을 생성하는 것이 또한 가능하다. 이는 애플리케이션에서 관찰될 수 있는 랜덤 시퀀스가 메모리 검사(그것이 가능한 경우)에 의해 관찰될 수 있는 랜덤 시퀀스와 상관되지 않는다는 이점을 갖는다. 그러나 이것은 2개의 스트림들의 생성을 요구한다.
일 실시예에서, 메모리의 적어도 부분을 오버라이팅하기 위해 시드에 의존하여 랜덤 번호 생성 시스템에 의해 생성된 랜덤 번호들은 랜덤 번호 생성 시스템에 의해 생성된 랜덤 번호들의 시퀀스의 부분이 아닌 랜덤 번호 생성 시스템의 중간 데이터를 포함한다. 이는 오버라이팅 랜덤 번호들 및 출력 랜덤 번호들은 동일한 스트림으로부터의 번호들이 이용된 경우보다 적어도 더 적게 상관된다는 이점을 갖는다. 그러나 부가적인 컴퓨팅 오버헤드가 없다.
일 실시예에서, 본 발명에 따른 랜덤 번호 생성 시스템은 내부 상태를 저장하기 위한 내부 상태 메모리 및 내부 상태 메모리에 저장된 현재 내부 상태로부터 새로운 내부 상태를 유도하는 것과 함께 현재 내부 상태로부터 랜덤 번호들의 시퀀스의 랜덤 번호를 생성하도록 구성된 생성 유닛을 포함하고, 생성 유닛은 현재 내부 상태로부터 랜덤 번호들의 시퀀스의 랜덤 번호를 생성하기 이전에 현재 내부 상태로부터 새로운 내부 상태를 유도하도록 구성되고 오버-라이팅 유닛은 현재 내부 상태로부터 랜덤 번호들의 시퀀스의 랜덤 번호를 생성하기 이전에 새로운 내부 상태로부터 유도된 랜덤 번호들로 메모리의 적어도 부분을 오버-라이팅하도록 구성된다.
새로운 내부 상태를 사전-컴퓨팅하고 시퀀스에서 다음 랜덤 번호를 생성하기 위해 현재 상태를 이용하기 이전에 메모리를 오버-라이팅하기 위해 이를 이용함으로써, 리셋이 발생할 때마다, 메모리의 값들이 출력을 생성하는데 결코 이용되지 않는다는 것이 보장될 수 있다. 그러므로 상태 정보는 결코 재사용되지 않는다는 것이 보증된다. 이러한 사실에도 불구하고, 해결책은 여전히 소프트-리셋이 발생한 이후 랜덤 출력 비트들의 생산을 지속하도록 허용한다. 인스턴스화 알고리즘은 리셋 이후 재개 시에 메모리로부터 내부 상태 메모리로 오버-라이팅을 위해 이용되는 내부 상태를 복사하도록 구성될 수 있다.
일 실시예에서, 랜덤 번호들의 시퀀스는 시드에 완전히 의존한다. 즉 시드를 유도하는 것과 별개로, 랜덤 번호 생성기는 결정론적 랜덤 번호 생성기이다. 결정론적 랜덤 번호 생성기는 통상적으로 더 큰 쓰루풋을 갖는다. 메모리 내의 시동 노이즈로부터 랜덤성을 유도하는 경우에, 시드의 진정한-랜덤 생성과 시드로부터의 시퀀스의 결정론적 생성 간의 분리는 또한 보다 많은 랜덤 번호들을 생성하도록 허용한다. 일 실시예에서, 랜덤 번호들의 시퀀스는 통상적으로 내부 상태에 완전히 의존한다.
메모리의 각각의 파워-업 시에 메모리의 부분이 적어도 부분적인 랜덤 메모리 콘텐츠를 포함하도록 구성될 수 있는 임의의 타입의 휘발성의 기록 가능한 메모리가 본 발명을 위해 이용될 수 있다. 구체적으로, SRAM 메모리, 플립-플롭 및 래치들이 적합하다. 예를 들어, 플립-플롭들의 시퀀스는 파워-업 이후에 판독될 수 있다. 심지어 메모리로서, 값들을 버스-키퍼들에 기록하도록 구성된 회로와 조합되는 버스-키퍼(bus-keeper)들 또는 버스-키퍼들의 모음이 이용될 수 있다.
SRAM 및 플립-플롭들은 물리적으로 복제 불가능한 함수들(PUF들)을 생성하는데 또한 이용된다. 이러한 애플리케이션에서, 특정한 양의 랜덤성들은 파워-업 값들이 상이한 파워-업들에 걸쳐서 충분히 지속하는 한 허용될 수 있다. 그러나 본 발명에서, 심지어 시동 이후에 매우 랜덤인 메모리가 이용될 수 있다.
휘발성의 기록 가능한 메모리의 다른 가능한 선택은 DRAM이다.
랜덤 번호 생성 시스템은 전기 메모리를 갖는 전기 랜덤 번호 생성 시스템일 수 있다. 또한, 인스턴스화 유닛 및 오버-라이팅 유닛은 바람직하게는 전기성(electric)이다. 본 발명에 따른 랜덤 번호 생성 시스템은 또한 전자 디바이스, 특히, 모바일 전화, 셋-톱 박스, 컴퓨터 등과 같은 모바일 전자 디바이스에 포함될 수 있다. 본 발명의 추가의 양상은 본 발명에 따른 랜덤 번호 생성 시스템을 포함하는 스마트 카드에 관한 것이다.
본 발명의 또 다른 양상은 본 발명에 따른 랜덤 번호 생성 시스템을 포함하는 전자 암호 디바이스이다. 예를 들어, 전자 암호 디바이스는 본 발명에 따른 랜덤 번호 생성 시스템을 이용하여, 넌스(nonce), 시도-응답 프로토콜에서 이용하기 위한 시도, 예를 들어, CBC 모드에서 실행하는 블록 암호를 위한 초기화 백터와 같은 초기화 백터, 랜덤 블라인딩 번호, 암호 키, 예를 들어, 대칭 키, 비대칭 키, 세션 키 중 임의의 하나를 생성하도록 구성될 수 있다.
본 발명의 추가의 양상은 랜덤 번호들의 시퀀스를 생성하는 방법에 관한 것이다. 이 방법은 메모리의 파워-업 단계 ― 상기 메모리는 기록 가능하고, 휘발성이며, 상기 메모리의 부분이 각각의 파워-업 시에 적어도 부분적으로 랜덤 메모리 콘텐츠를 포함하도록 구성됨 ― ; 상기 적어도 부분적으로 랜덤 메모리 콘텐츠에 의존한 시드로 시딩하는 단계; 상기 시드에 의존하여 상기 랜덤 번호들의 시퀀스를 생성하는 단계; 상기 시드에 의존하여 생성된 랜덤 번호들로 상기 메모리의 적어도 부분을 오버-라이팅하는 단계를 포함한다.
본 발명에 따른 랜덤 번호 생성 시스템은 유리하게는 모바일 전화들, 스마트 카드 판독기들, 스마트폰들, 임베딩된 디바이스들, RFID 태그들, POS(point-of-sale) 단말들, VOIP 전화들, 태블릿들, 보안 모듈들, TPM 모듈들, MTM 모듈들, 네트워크 라우터들, PC들, 랩톱들 내에 포함될 수 있다.
본 발명에 따른 랜덤 번호 생성 시스템을 위에 언급된 전자 디바이스와 같은 전자 디바이스에 통합하는 것은 전자 메모리, 바람직하게는 SRAM 메모리, 인스턴스화 유닛, 및 메모리를 관리하기 위한 디바이스를 통합함으로써 구현될 수 있다.
본 발명에 따른 방법은 컴퓨터 구현 방법으로서, 또는 전용 하드웨어에서, 또는 이들 둘의 조합으로서 컴퓨터 상에 구현될 수 있다. 본 발명에 따른 방법을 위한 실행 가능한 코드는 컴퓨터 프로그램 물건 상에 저장될 수 있다. 컴퓨터 프로그램 물건들의 예들은 메모리 디바이스, 광학 저장 디바이스들, 집적 회로들, 서버들, 온라인 소프트웨어 등을 포함한다. .
바람직한 실시예에서, 컴퓨터 프로그램은 컴퓨터 프로그램이 컴퓨터 상에서 실행될 때 본 발명에 따른 방법의 모든 단계들을 수행하도록 적응된 컴퓨터 프로그램 코드 수단을 포함한다. 바람직하게는, 컴퓨터 프로그램은 컴퓨터 판독 가능한 매체 상에 실현된다.
본 발명의 관심 양상은 초기에 보안 애플리케이션들에 대해 설계되지 않았던 디바이스들이 보안 기능들 갖도록 개장될 수 있다는 것이다. 특히 랜덤 번호 디바이스를 갖는 디바이스들이 여전히 안전한 방식으로 랜덤 번호 생성을 위해 구성될 수 있다.
그러므로 본 발명의 양상은 컴퓨터 소프트웨어 명령들을 실행하기 위한 프로세서 및 메모리를 포함하는 디바이스에 관한 것이다. 메모리는 기록 가능하고 휘발성이며, 메모리가 그 메모리의 각각의 파워-업 시에 적어도 부분적으로 랜덤 메모리 콘텐츠를 포함하도록 구성된다. 디바이스는 본 발명에 따라 오버-라이팅 유닛 및 인스턴스화 유닛을 구현하도록 구성된 컴퓨터 소프트웨어 명령들을 포함하는 추가의 메모리를 포함한다. 예를 들어, 프로세서는 마이크로 제어기, 예를 들어, 8051 프로세서일 수 있다. 예를 들어, 소프트웨어는 본 발명에 따른 소프트웨어일 수 있다.
본 발명의 양상은 컴퓨터 소프트웨어 명령들을 실행하기 위한 프로세서 및 메모리를 포함하는 디바이스를 개장하는 방법에 관한 것이다. 메모리는 기록 가능하고 휘발성이며 메모리가 그 메모리의 각각의 파워-업 시에 적어도 부분적으로 랜덤 메모리 콘텐츠를 포함하도록 구성된다. 디바이스는 컴퓨터 소프트웨어 명령들을 포함하기 위한 추가의 메모리를 포함한다. 개장하는 방법은 본 발명에 따른 소프트웨어를 추가의 메모리 내에 설치하는 것을 포함한다.
본 발명은 첨부 도면들을 참조하여 그리고 예로서 추가로 상세히 설명된다.
도 1, 2, 3, 및 4는 본 발명에 따른 다양한 실시예들을 개략적인 형태로 예시하는 도면.
도 5a는 스마트 카드의 그래픽 표현을 도시하는 도면.
도 5b는 스마트 카드의 대략적 표현을 도시하는 도면.
도 6은 본 발명에 따른 방법을 예시하는 흐름도를 도시하는 도면.
도 7a 및 도 7b는 본 발명에 따른 방법을 예시하는 흐름도를 각각 도시하는 도면.
도면들 전체에 걸쳐서, 유사하거나 대응하는 특징들은 동일한 참조 번호에 의해 표시된다.
본 발명이 다수의 형태들로 실시예들을 허락하고, 도면들에서 도시되고 하나 이상의 특정한 실시예들이 여기서 상세히 기술되지만, 본 개시는 본 발명의 원리들의 예로서 간주되고 도시되고 기술된 특정한 실시예들로 본 발명을 제한하는 것으로 의도되지 않는다는 것을 이해한다.
도 1은 랜덤 번호 생성 시스템(100)을 도시한다. 시스템(100)은 메모리(110)를 포함한다. 메모리(110)는 기록 가능하고, 휘발성 메모리이며, 메모리가 메모리의 각각의 파워-업 시에 적어도 부분적인 랜덤 메모리 콘텐츠를 포함하도록 구성된다. 메모리(110)는 더 큰 메모리의 부분일 수 있으며, 이 경우에, 메모리(110)는 메모리의 각각의 파워-업 시에 적어도 부분적인 랜덤 메모리 콘텐츠를 포함하고 인스턴스화 유닛(152)에 의해 이용되는 메모리의 부분을 지칭한다.
아래에서, 우리는 메모리(110)의 몇몇 가능한 선택들의 개요를 제공한다. 메모리(110)는 정적 랜덤 액세스 메모리(SRAM)일 수 있다. SRAM들은 이들이 파워-업된 이후, 이들이 1 또는 0 값 비트들로서 또한 지칭된 온-비트들 및 오프-비트들의 랜덤 패턴으로 채워진다는 특성을 갖는다. 패턴은 SRAM이 다음 시간에 파워-업되는 경우 어느 정도까지 그 자체를 반복할 것이지만, SRAM이 엔트로피 소스로서 역할하기 위해 후속 파워-업 사이에서 충분한 차이들이 존재한다.
메모리(110)는 메모리 엘리먼트들의 모음일 수 있다. 적합한 휘발성 메모리 엘리먼트들은 플립-플롭 및 래치를 포함한다. 시동 시에, 집적 회로에 포함될 수 있는 것과 같은 메모리 엘리먼트는 랜덤 값으로 채워질 것이다. 랜덤 값은 메모리 엘리먼트가 제조되는 동안 생산 프로세스에서 정밀한 변동들에 의존한다. 메모리 엘리먼트를 구성하는 다양한 컴포넌트들의 구성에 있어서 약간의 변경은 랜덤 값은 변경시킬 수 있다.
재차, 특정한 메모리 엘리먼트를 파워-업할 콘텐츠가 무언인지 예측 불가능하다. 이들 메모리 엘리먼트들 중 일부는 그 자신을 더욱 많이 또는 더 적게 신뢰할 수 있게 그 자신을 반복할 수 있는 반면에, 다른 메모리 엘리먼트는 높은 정도의 랜덤성을 보일 것이다. 메모리 엘리먼트들의 모음은 메모리(110)로서 이용될 수 있다.
생산 동안 피할 수 없는 변동들, 예를 들어, ? 서브미크론 프로세스 변동들(deep submicron process variations)로 인해, 서로에 대해 SRAM의 컴포넌트들의 행동은 적어도 약간 랜덤이다. 이들 변동들은 SRAM의 메모리 셀들에서 트랜지스터들의 약간 상이한 임계 전압으로 반영된다. SRAM이 미리 정의되지 않은 상태로 판독될 때, 예를 들어, 기록 동작 이전에, SRAM의 그의 출력은 랜덤 구성에 의존한다.
트랜지스터 임계 전압들이 잘 밸런싱된 SRAM 셀들은 임계 전압들의 프로세스 변동들로 인애 약간만 밸런싱된 셀들보다 랜덤 시동 행동을 가질 가능서 높다.
메모리(110)는 이른바 물리적 복제 불가능 함수(physical unclonable function; PUF)라 불릴 수 있다. 그 경우에, 파워-업 이후 메모리(110)의 콘텐츠는 예를 들어, 헬퍼 데이터(helper data)의 애플리케이션을 통해 고유한 스트링을 유도하는데 또한 이용될 수 있다. 헬퍼 데이터는 메모리의 각각의 파워-업 시에 적어도 부분적인 랜덤 메모리 콘텐츠를 포함하는 메모리의 콘텐츠로부터 노이즈의 존재를 제거한다는 것에 주의한다. 고유한 스트링은 암호 키로서 이용될 수 있다. 키의 유도 이후에, 그 이전에, 또는 그 중간에, 원래의 메모리 콘텐츠, 즉 그로부터 노이즈가 제거되지 않은 메모리 콘텐츠는 본 발명에 따라 시드를 유도하는데 이용될 수 있다.
즉, 메모리(110)는 엔트로피 소스로서 및 PUF로서 이용될 수 있다. 엔트로피 소스의 그리고 PUF의 요건들은 상이하긴 하지만 특정한 정도로 모순된다. PUF 요건들은 후속 파워-업들 사이에서 특정한 정도의 중첩을 요구하는 반면에, 엔트로피 소스는 특정한 정도의 차이를 요구한다.
물리적 복제 불가능한 함수는 자극(stimulus)의 형태로 물리적 시스템에 입력을 제공함으로써 그리고 자극과 물리적 시스템 간의 상호작용의 결과로서 발생하는 행동을 출력에 맵핑함으로써 입력에 대한 함수의 출력이 획득되는 방식으로 물리적 시스템으로서 실현되는 함수이며, 여기서 상기 상호작용은 예측 불가능하며 물리적 시스템에 대한 물리적 액세스를 갖지 않고 출력을 획득하는 것이 실현 불가능하고 물리적 시스템을 재생하는 것이 실현 불가능한 정도로까지 물리적 시스템 내의 필수 랜덤 엘리먼트에 의존한다. 몇몇 타입들의 PUF들은 넓은 범위의 상이한 입력들을 허용하고, 몇몇 타입들은 보다 제한된 범위의 입력들을 허용하건, 또는 심지어 단지 하나의 입력만을 허용할 수 있다. 몇몇 단일 시도를 통한 PUF의 시도는 PUF의 '작동'이라 또한 불릴 수 있다.
PUF에 대해, 동일한 시도에 대해 여러 번 평가될 때 PUF는 모두가 동등한 다수의 응답들을 재생할 것이라는 것이 바람직할 것이다. 이 특성은 필수적이지 않지만, 실제로, 대부분의 PUF들은 이것을 보유하지 않는다. 다수의 응답들이 서로 충분히 근접하게 있는 한, PUF는 고유한 스트링을 유도하는데 유용하게 적용될 수 있다. PUF 출력들이 실질적으로 노이즈성이면, 메모리 기반 PUF는 또한 랜덤 시드를 유도하는데 이용될 수 있다.
메모리(110)로부터 고유한 스트링을 유도하는 것은 전체적으로 선택적이다. 사실, 본 발명은 그것이 실제적이지 않거나 또는 심지어 고유한 스트림을 유도하기 위해 PUF로서 그 메모리를 이용하는 것이 가능하지 않은 이러한 높은 정도의 랜덤성을 그의 시동 콘텐츠(start-up content) 내에 갖는 메모리의 이용을 허용한다.
본 발명의 부가적인 이점이 이어진다. PUF들을 위해 이용되는 타입의 메모리, 예를 들어, SRAM은 이른바 에이징(ageing)이라 불린다. 예를 들어, 동일한 데이터 패턴이 긴 시간 공안 SRAM 메모리에 저장되는 경우, 트랜지스터 임계 전압들은 노이즈에 악영향을 줄 수 있는(즉, 그것을 감소시킴) NBTI(Negative Bias Temperature Instability) 효과들로 인해 변경된다. 그러나 메모리 내로 랜덤 데이터를 기록하는 것은 메모리 셀들이 특정한 방향으로의 에이징을 방지한다. 이 효과는 오버라이팅(overwriting)이 전체 메모리(110)로 연장하는 경우 개선된다. 이 효과는 또한 및/또는 추가로 메모리(110)가 파워-온된 시간 전체에 걸쳐서 오버라이팅이 지속되는 경우 개선된다.
시스템(100)은 시스템(100)의 내부 상태를 저장하기 위해 내부 상태 메모리(154)를 포함한다.
시스템(100)은 인스턴스화 유닛(152)을 더 포함한다. 인스턴스화 유닛(152)은 적어도 부분적인 랜덤 메모리 콘텐츠에 의존하는 시드를 랜덤 번호 생성 시스템에 시딩(seeding)하기 위해 구성된다. 시스템(100)에서, 인스턴스화 유닛(152)은 적어도 부분적인 랜덤 메모리 콘텐츠를 획득하기 위해 메모리(110)에 접속된다. 적어도 부분적으로 랜덤 메모리 콘텐츠 및 선택적으로 다른 소스들로부터, 인스턴스화 유닛(152)은 시드를 생성한다. 인스턴스화 유닛(152)은 내부 상태 메모리(154)에 시드를 저장한다.
인스턴스화 유닛(152)은 NIST 표준, 즉 랜덤 데이터를 수신하고 시드를 생성하기 위한 하나 이상의 입력들, 즉 내부 상태로서 이용하기 위한 랜덤 시작 값을 갖는 함수에서 기술된 바와 같이 될 수 있다.
시스템(100)은 생성 유닛(156)을 더 포함한다. 생성 유닛(156)은 판독 및 기록 액세스를 위해 내부 상태 메모리(154)에 접속된다. 생성 유닛(156)이 내부 상태, 예를 들어, 내부 상태에 의존하여 예를 들어, 메모리(154)에 저장된 것과 같은 랜덤 번호들의 시퀀스를 생성하도록 구성된다. 생성 유닛(156)은 내부 상태로부터 랜덤 번호들의 시퀀스의 부분인 새로운 랜덤 번호를 생성하도록 출력 생성 알고리즘을 이용할 수 있고 생성 유닛(156)은 내부 상태를 새로운 내부 상태로 업데이트하고 새로운 내부 상태를 내부 상태 메모리(154)에 기록하도록 내부 상태 업데이팅 알고리즘을 이용할 수 있다.
생성 유닛(156)은 초기에 예시화 함수로부터 초기 상태를 입력으로 취한다. 생성 유닛(156)은 바람직하게는 요청 시에 의사랜덤 비트들을 생성하도록 구성된다. 예를 들어, 애플리케이션(160)으로부터 요청을 수신하면, 생성 유닛(156)은 랜덤 번호들을 생성하고 다름 요청을 위해 새로운 내부 상태를 생성한다. 랜덤 번호들은 요청을 먼저 수신함 없이 대안적으로 푸시될 수 있다. 요청은 랜덤 번호 생성 시스템의 다른 부분들에 의해 먼저 수신될 수 있다.
예시화 유닛(152)에 의해 이용되는 예시화 함수 및 생성 유닛(156)에 의해 이용되는 생성 함수는 해시 함수를 이용함으로써 구현될 수 있다. 예가 NIST 표준의 섹션 10.1.1에서 특정된다. 특히, 이 규격(pp.45)의 도 8은 예시화 유닛(152) 및 생성 유닛(156)의 가능한 실시예의 그랙픽적 프리젠테이션을 도시한다. 값들 "V", "리시드 카운터(reseed counter)" 및 "C"는 알고리즘의 내부 상태로서 간주될 수 있다. 의사랜덤 비트들은 시스템의 출력 비트들이다.
랜덤 번호들의 시퀀스는 내부 상태 및 시드에 의존하여 생성된다는 것에 주의한다.
시스템(100)은 생성 유닛(156)을 통해 애플리케이션(160)에 접속된다. 예를 들어, 애플리케이션(160)은 키 교환 프로토콜, 말하자면 Diffie-Hellman 프로토콜이다. Diffie-Hellman 프로토콜의 과정 동안, 하나 이상의 랜덤 번호들은 프로토콜 단계들을 실행하는데 필요하다. 애플리케이션(160)은 생성 유닛(156)으로부터 랜덤 번호들을 수신한다. 애플리케이션(160)은 랜덤 번호들을 요구하는 임의의 다른 애플리케이션, 예를 들어, 암호 애플리케이션, 또는 다른, 말하자면 Monte Carlo 시뮬레이션 애플리케이션일 수 있다.
시스템(100)은 오버-라이팅 유닛(159)을 더 포함한다. 오버라이팅 유닛(159)은 또한 시드에 의존하여 랜덤 번호들을 획득한다. 우리가 보여줄 바와 같이, 오버라이팅 유닛(159)이 이들 랜덤 번호들을 어떻게 정확히 확득할지에 관한 다양한 옵션들이 존재한다. 도 1은 시드에 의존하여 랜덤 번호 생성 시스템에 의해 생성된 랜덤 번호들을 획득하기 위해 생성 유닛(156)에 접속된 오버라이팅 유닛(159)을 도시한다.
오버라이팅 유닛(159)은 메모리(110)를 오버라이팅하도록 구성된다. 메모리(110)가 더 큰 메모리의 부분인 경우, 오버라이팅 유닛(159)은 예시화 유닛(152)이 랜덤 메모리 콘텐츠를 획득하는 더 큰 메모리의 그 부분만을 오버라이팅할 필요가 있다. 오버라이팅 유닛(159)은 또한 더 큰 메모리 전체를 오버라이팅할 수 있다.
오버라이팅 유닛(159)은 일 동작에서 메모리(110)를 오버라이팅할 수 있다. 예를 들어, 오버라이팅 유닛(159)은 리셋 신호를 수신 시에 메모리를 오버라이팅할 수 있다. 리셋 신호는 소프트 리셋(soft reset)이 진척중임을 표시한다. 오버라이팅 유닛(159)은 운영 체제로부터 신호를 수신할 수 있다. 오버라이팅 유닛(159)은 예를 들어, 오버라이팅의 완료 시에 운영 체제에 추가의 신호를 제공하여, 소프트 리셋이 진행될 수 있다는 것을 시그널링한다. 추가의 신호의 이용은 선택적이다. 대신, 오버라이팅 유닛(159)은 또한 소프트 리셋 사이클에 딱 맞는 미리 결정된 양의 시간을 또한 허여받을 수 있다.
오버라이팅 유닛(159)은 또한 시드를 유도한 예시화 유닛(152) 상의 메모리를 오버라이팅할 수 있다. 예를 들어, 예시화 유닛(152)은 오버라이팅 유닛(159)에 시드 완료 신호를 송신할 수 있고, 오버라이팅 유닛(159)은 시드 완료 신호의 수신 시에 메모리(110)의 부분을 오버라이팅하도록 구성될 수 있다.
오버라이팅 유닛(159)은 더 긴 기간에 걸쳐서 메모리(110)의 오버-라이팅을 또한 스프레딩할 수 있다. 예를 들어, 오버-라이팅 유닛은 랜덤 번호들의 시퀀스의 생성 전체에 걸쳐서 랜덤 번호들로 메모리의 부분을 오버-라이팅하도록 구성될 수 있다.
오버라이팅 유닛(159)은 오버-라이팅 완료 플래그를 포함할 수 있으며, 이 플래그는 메모리(110)가 오버라이팅 유닛(159)에 의해 일단 전체적으로 오버라이팅되면 세팅된다. 오버라이팅 유닛(159)은 플래그가 세팅된 경우 추가로 오버-라이팅하지 않는다. 플래그는 소프트 또는 하드 리셋 시에 리셋된다. 오버-라이트 완료 플래그는 메모리(110)의 미리 결정된 수의 메모리 위치들이 오버라이팅된 이후 세팅될 수 있다. 미리 결정된 수는 메모리(110)의 크기, 시드의 크기, 내부 상태의 크기 등에 대응할 수 있다.
오버-라이팅의 스프레딩을 구현하는 하나의 방식은 랜덤 번호들의 시퀀스의 미리 결정된 수의 랜덤 번호들이 생성될 때마다 시드에 의존하여 랜덤 번호 생성 시스템에 의해 생성된 적어도 하나의 랜덤 번호를 기록하는 것이다. 예를 들어, 미리 결정된 번호가 1인 경우, 오버라이팅 유닛(159)은 시스템(100), 예를 들어, 애플리케이션(160)의 사용자가 시퀀스의 랜덤 번호를 요구하거나 수신할 때마다 메모리(110)에 랜덤 번호를 기록할 것이다.
예를 들어, 오버라이팅 유닛(159)은 메모리(110)를 포인팅하는 포인터를 유지할 수 있다. 소프트든 하드든 간에, 리셋 시에, 오버라이팅 유닛(159)은 메모리(110)의 선두에 포인터를 세팅한다. 오버라이팅 유닛(159)이 메모리(110)에 랜덤 번호를 기록할 때, 그것은 랜덤 번호를 포인터에 의해 표시된 메모리(110) 내의 위치에 기록하고, 포인터를 전진시킬 것이다.
포인터가 메모리(110)의 발단에 도달할 때, 오버라이팅 유닛(159)은 완전한(full) 오버라이트를 표시하기 위한 오버-라이트 완료 플래그를 새팅할 수 있고, 오버라이팅 유닛(159)은 메모리(110)의 선두로 돌아가서 포인터를 또한 세팅할 수 있다. 완전한 오버라이트가 발생했을지라도, 오버라이팅을 지속하는 것은 소프트 리셋 시, 오버라이팅 유닛(159)이 메모리를 얼마나 오래 오버라이팅하였는지 또는 애플리케이션으로부터 요청들의 수에 콘텐츠가 의존하기 때문에 오버라이팅 및 시드 이후에 메모리(110)의 콘텐츠의 상관을 다소 감소시킨다. 대안적으로 오버-라이트 완료 플래그는 포인터 및 메모리(110)의 선두 간의 차이가 미리 결정된 번호와 동등한 경우 세팅될 수 있다.
동작 동안, 메모리(110)는 파워-업된다. 그 결과, 메모리(110)는 랜덤이거나 적어도 부분적으로 랜덤인 값들의 패턴을 포함한다. 바람직하게는, 메모리(110)에 포함된 비트들에서 측정되는 엔트로피는 적어도 예시화 유닛(152)에 의해 생성되는 시드의 비트-크기만큼 크다. 엔트로피는 예를 들어, 최소-엔트로피(min-entropy)을 이용하여 다양한 방법들로 추정될 수 있다.
예시화 유닛(152)은 콘텐츠를 획득하고 시드를 유도한다. 예시화 유닛(152)은 이어서 내부 상태 메모리(154)에 시드를 저장한다. 애플리케이션(160)이 랜덤 번호를 요청할 때, 그것은 번호를 생성 유닛(156)에 요청한다. 애플리케이션(160)은 API를 이용할 수 있다. 생성 유닛(156)은 랜덤 번호들을 또한 푸시할 수 있다. 생성 유닛(156)은 내부 상태 메모리(154)에 저장된 내부 상태로부터 시퀀스의 새로운 랜덤 번호들을 유도한다. 생성 유닛(156)은 또한 내부 상태를 업데이트한다. 오버라이팅 유닛(159)은 시드로부터 유도된 랜덤 번호들을 이용하고 메모리(110)를 오버라이팅한다. 몇몇 지점에서, 소프트 리셋이 발생한다. 내부 상태(154)는 삭제, 예를 들어, 제로화(zeroized)된다. 메모리(110)가 파워-다운되지 않고 파워-업되고 메모리(110)의 물리적 특성들에 기초한 새로운 랜덤 상태를 저장하지 않을 것이다. 그러나 예시화 유닛(152)이 새로운 시드를 유도하기 시작할 때, 그것은 이전의 파워-업에 비해 메모리(110)에서 상이한 콘텐츠를 발견할 것이다. 내부 상태 메모리(154)는 상이한 값을 포함할 것이다. 어떠한 파워-사이클링도 발생하지 않을지라도 그리고 내부 상태 메모리(154)가 제로화될 수 있을지라도, 그것이 하드 리셋의 경우에 리셋되었던 것처럼 그것이 행동한다. 몇몇 지점에서, 시스템(100)이 하드 리셋을 갖는 경우, 메모리(110)는 물리적 특성들에 기초하여 새로운 랜덤 상태를 포함할 것이다. 따라서 시스템(110)이 파워-다운된 동안 메모리로부터 공격자가 알게된 임의의 정보는 후속 파워-업 이후에 메모리(110)의 콘텐츠 상에 남아있지 않게 된다.
내부 상태 메모리(154) 및 생성 유닛(156)은 함께 시드에 완전히 의존하는 랜덤 번호들의 시퀀스를 생성할 수 있다. 예시화 유닛(152), 내부 상태 메모리(154) 및 생성 유닛(156)은 NIST 표준의 섹션들 8, 9 및 10에서 특정된 결정론적 랜덤 비트 생성기(DRBG)일 수 있다. 대안적으로, 부가적인 엔트로피는 동작 동안 내부 상태에 부가될 수 있는데, 예를 들어, 애플리케이션이 이 랜덤 번호에 대한 요청을 행하는 바로 그 시간이 부가될 수 있다.
오버라이팅 유닛(159)은 오버라이팅을 위해 생성 유닛(156)에 의해 생성된 시퀀스의 부분을 이용할 수 있다. 예를 들어, 생성 유닛(156)에 의해 생성되는 각각의 다른 랜덤 번호는 예를 들어, 애플리케이션(160)으로의 출력을 위해 잔여 시퀀스 및 오버-라이팅을 위해 오버라이팅 유닛(159)에 의해 이용된다. 오버라이팅 유닛(159)은 또한 오버라이팅을 위해 시퀀스의 랜덤 번호들과 상이한 랜덤 번호들을 이용할 수 있다.
예를 들어, 메모리의 적어도 부분을 오버라이팅하기 위해 시드에 의존하여 랜덤 번호 생성 시스템에 의해 생성된 랜덤 번호들은 랜덤 번호 생성 시스템에 의해 생성된 랜덤 번호들의 시퀀스의 부분이 아닌 랜덤 번호 생성 시스템의 중간 데이터를 포함할 수 있다. 예를 들어, 내부 상태 메모리(154)의 내부 상태의 부분은 말하자면 최초의 바이트가 오버라이팅 유닛(159)에 의해 이용될 수 있다. 예를 들어, 랜덤 번호들은 내부 상태 메모리(154)로부터 유도될 수 있다. 예를 들어, 오버라이팅 유닛(159)이 랜덤 번호를 필요로 할 때마다, 랜덤 번호는 내부 상태 메모리(154)의 콘텐츠를 해시(hash)할 수 있다. 바람직하게는, 오버라이팅 유닛(159)은 해싱 이전에 내부 상태 메모리(154)의 콘텐츠에 고정된 스트림, 말하자면 고정된 바이트 0x04를 연계(concatenate)하고, 이는 오버라이팅을 위해 오버라이팅 유닛(159)에 의해 이용되는 랜덤 번호들이 시스템에 의해 출력되는 것들로부터 상관되지 않음을 보장한다. 또는 오버라이팅 유닛(159)은 RandomValues = h(internal state||0xA0A0A0A...)를 이용하며, 여기서 h는 해시 함수이다.
오버라이팅 유닛(159)은 또한 다음 내부 상태 또는 그의 유도된 정보의 사전-컴퓨테이션(pre-computation)을 또한 이용할 수 있다.
특히, 후자 옵션은 몇몇 흥미로운 이점들을 갖는다. 리셋 신호가 주어진 이후, 랜덤 번호 생성기는 이전에 출력된 임의의 데이터에 독립적인 데이터를 리셋하고 출력하기 시작해야 한다. 다음 내부 상태 값을 사전-컴퓨팅하고 의사랜덤 출력 비트들을 생성하기 이전에 이를 메모리(110)에 저장함으로써, 리셋이 발생할 때마다, (저장된 상태 정보가 랜덤 비트들의 다음 요청 시에만 이용될 것이기 때문에) PUF 메모리의 값들은 출력을 생성하는데 결코 이용되지 않는다는 것이 확실히 될 수 있다. 그러므로 상태 정보를 결코 재사용되지 않는다는 것이 보장된다. 이 사실에도 불구하고, 해결책은 또한 소프트-리셋이 발생한 이루 랜덤 출력 비트들의 생성이 지속되도록 허용한다. 소프트 리셋 이후에, 알고리즘은 PUF 메모리 내의 저장된 상태를 판독함으로써 지속되고 새로운 예시화 단계를 수행할 수 있다.
시스템(100)은 전자 회로로서, 예를 들어, 집적 회로(IC)로서 및/또는 프로그래밍 가능한 로직으로서 구현될 수 있다. 프로그래밍 가능한 로직은 예를 들어, 필드-프로그래밍 가능한 게이트 어레이(FPGA), 프로그래밍 가능한 로직 디바이스(PLD), 또는 디지털 신호 프로세서(DSP), 마이크로프로세서 등을 포함한다.
도 2는 랜덤 번호 생성 시스템(200)을 도시한다. 시스템(200)은 시스템(100)의 변동이다. 시스템(200)은 시스템(100)의 모든 엘리먼트들 및 조금 더를 갖는다.
시스템(200)은 컨디셔닝 유닛(120)을 포함한다. 컨디셔닝 유닛(120)은 컨디셔닝 알고리즘을 갖고 구성된다. 컨디셔닝 알고리즘은 양호한 확산 특성들을 갖는 압축 함수이다. 이것은 예를 들어, CBC 모드에서 블록 암호로서, 또는 예를 들어, NIST 표준의 섹션 10.4에서 특정된 유도 함수들로서 암호 해시 함수로서 구현될 수 있다. 컨디셔닝 유닛(120)의 목적은 메모리(110)에서 발견된 엔트로피를 더 작은 스트림으로 집중시키는 것이다. 메모리(110)의 콘텐츠 내의 엔트로피가 컨디셔닝 유닛(120)의 출력 크기보다 큰 경우, 컨디셔닝 유닛(120)의 출력은 최대 엔트로피를 갖는다.
시스템(200)은 또한 추가의 엔트로피 소스(112)를 도시한다. 추가의 엔트로피 소스(112)는 선택적이다. 추가의 엔트로피 소스(112)는 컨디셔닝 유닛(120)을 이용할 수 있지만, 그 자신의 컨디셔닝 유닛을 또한 가질 수 있거나, 또는 이도저도 아닐 수 있다. 추가의 엔트로피 소스(112)는 예를 들어, 클록, 또는 예를 들어, 탐색 시간들을 측정하기 위해 하드 드라이브에 부착된 측정 유닛일 수 있다.
시스템(200)은 구별기(130)를 더 포함한다. 예시화 유닛(152)은 구별기(130)로부터 스트링을 수신하도록 부가적인 입력을 갖고 구성된다. 구별기(130)는 시스템(200)의 출력이 랜덤이 아닌 경우, 적어도 다른 디바이스들과 상이하다는 것을 보장하기 위해 스트링을 생성한다. 이는 파워-업들, 또는 소프트 및 하드를 포함하는 리셋들, 또는 디바이스의 일련 번호 등을 카운트하는 구별기(130) 내의 카운터를 통해 달성될 수 있다. 구별기(130)는 선택적이다.
이에 따라 예시화 함수는 엔트로피 입력을 획득하고 이를 임시 및/또는 개인화 스트림과 조합하여 초기 내부 상태가 생성되는 시드를 생성할 수 있다. 예시화 유닛(152)은 내부 상태 메모리(154)에 직접 시드를 기록할 수 있거나, 또는 시드로부터 내부 상태를 유도할 수 있고, NIST 표준을 참조한다.
시스템(200)은 역-예시화 유닛(un-instantiating unit)(158)을 포함할 수 있다. 디바이스가 셧 다운될 것이거나 리셋 상태가 될 것이라는 신호를 수신 시에, 역-예시화 유닛(158)은 내부 상태를 삭제한다. 예를 들어, 역-예시화 유닛(158)은 리셋 신호를 수신 시에 0들로 내부 상태 메모리(154)를 오버라이팅한다.
바람직하게는, 예시화 유닛(152), 내부 상태 메모리(154), 생성 유닛(156)은 함께 결정론적 랜덤 번호 생성기를 형성한다. 바람직하게는, 예시화 유닛(152), 내부 상태 메모리(154), 생성 유닛(156) 및 역-예시화 유닛(158)은 NIST 표준에 순응한다.
예시적인 구현은 SRAM 메모리의 2KB 또는 더 큰 메모리의 2KB로서 메모리(110)를 선택할 수 있다. 파워-업 이후에 그 메모리의 콘텐츠로부터 유도된 시드는 256 비트들이 되도록 선택될 수 있다. 그러나 이들 번호들은 예시적이며 실시예들 및 애플리케이션의 목적에 의존한다. 메모리(110)의 크기에 대한 다수의 다른 가능한 선택들 중에서 다른 유용한 값들은 512 바이트, 1Kb, 4Kb 등이다. 시드의 크기에 대한 다수의 다른 가능한 선택들 중에서 다른 유용한 값들은 80비트, 128비트, 512비트, 1024비트 등을 포함한다.
NIST 표준의 부록 C에서 기술된 방법을 이용하여 SRAM의 시동 값들의 이른바 최소-엔트로피를 분석함으로써, 256 비트들의 진정한 랜덤 시드는 2KB 크기의 SRAM 시동 측정들로부터 유도될 수 있다고 컴퓨팅된다. 이 진정한 랜덤 시드는 내부 상태 메모리(154)에 저장되고 생성 유닛(156)에 대한 입력으로서 역할할 수 있다. 예시화 유닛(152), 내부 상태 메모리(154) 및 생성 유닛(156)은 랜덤 비트 스트림을 생성하는 DRBG일 수 있다. SRAM의 리파워링(repowering) 이후에, 컨디셔닝 알고리즘은 완전히 새로운 진정한 랜덤 시드가 SRAM 시동 데이터로부터 생성된다는 것을 보장한다.
메모리(110)의 파워-업 콘텐츠와 같은 PUF 측정에서 비트들의 부분만이 노이즈성이고, 이에 따라 랜덤 번호들을 생성하기 위한 엔트로피를 포함한다. 컨디셔닝 알고리즘은 PUF 측정들로부터 노이즈, 즉 엔트로피의 적어도 대부분 또는 모두 다를 추출하고, 이를 특정한 크기의 풀-엔트로피 비트 스트링으로 변화시킨다. 이러한 컨디셔닝 알고리즘의 예는 결정론적 랜덤 비트 생성기들(DRBG들)에서 이용하기 위한 NIST 표준에서 특정된다.
동작 동안, 메모리(110) 및 추가의 엔트로피 소스(112)가 파워 업된다. 메모리(110)의 출력 및 추가의 엔트로피 소스(112)는 엔트로피를 추출하기 위해 컨디셔닝 유닛(120)에 의해 프로세싱된다. 예시화 유닛(152)은 추출된 엔트로피를 받고 선택적으로 시드를 생성하기 위해 구별기(130)로부터 구별 입력을 받는다. 컨디셔닝 유닛(120) 및 예시화 유닛(152)은 단일 해시 애플리케이션내로 및/또는 단일 입력 내로 통합될 수 있다.
내부 상태 메모리(154)의 내부 상태가 미리-컴퓨팅되고 메모리(110)에 저장되는 경우, 컨디셔닝 유닛(120)의 컨디셔닝 단계는 소프트 리셋의 경우에 생략될 수 있다.
도 3은 랜덤 번호 생성 시스템(300)을 도시하며, 이는 시스템(200)의 유닛들을 배열하는 다른 가능한 방법이다. 시스템(300)에서, 이미 존재하는 NIST 표준 순응 DRBG는 본 발명과 함께 이용하기 위해 개장(retrofit)된다. 결정론적 랜덤 번호 생성기(150)는 예시화 유닛(152), 역-예시화 유닛(158), 내부 상태 메모리(154) 및 생성 유닛(156)을 포함한다. 결정론적 랜덤 번호 생성기(150)는 표준 순응 DRBG, 예를 들어, NIST 표준 순응 DRBG일 수 있다. 가능하게는, 결정론적 랜덤 번호 생성기(150)는 블랙-박스로서, 말하자면 집적 회로로서 구현된다. 오버라이팅 유닛(159)은 랜덤 번호들을 갖는, 다른 애플리케이션들, 예를 들어, 애플리케이션(160)을 또한 제공하는 동일한 출력으로부터 랜덤 번호들을 수신하도록 구성된다. 가능하게는, 컨디셔닝 유닛(120)은 예시화 유닛(152) 또는 결정론적 랜덤 번호 생성기(150)의 부분이다.
이 실시예에서, 메모리의 적어도 부분을 오버-라이팅하기 위해 시드에 의존하는 랜덤 번호 생성 시스템에 의해 생성된 랜덤 번호들은 랜덤 번호 생성 시스템에 의해 생성된 랜덤 번호들의 시퀀스의 부분이거나, 또는 이로부터 유도된다.
도 4는 시스템(200)의 또 다른 변형인 랜덤 번호 생성 시스템(400)을 도시한다. 시스템(400)은 결국 역-예시화 유닛(158) 및 오버라이팅 유닛(159)을 포함하는 역-예시화 유닛(410)을 포함한다. 역-예시화 유닛(410)은 리셋 신호를 수신하도록 구성된다. 리셋 신호를 수신 시에, 역-예시화 유닛(410)은 메모리(110) 및 내부 상태 메모리(154) 둘 다를 오버라이팅한다. 예를 들어, 역-예시화 유닛(410)은 예를 들어, 그것이 랜덤 번호를 생성함으로써 내부 상태를 업데이트하기 위해 생성 유닛(156)을 이용하고, 이어서 내부 상태 메모리(154)의 콘텐츠들을 메모리(110) 내로 기록하고, 이어서 내부 상태 메모리(154)의 콘텐츠들을 삭제, 말하자면, 그것을 0으로 오버라이팅할 수 있다.
도 7a는 내부 상태 메모리(154)를 업데이트하고 시퀀스에 대한 랜덤 번호들을 생성하는 방법을 도시한다.
랜덤 번호 생성 시스템, 예를 들어, 시스템들(100, 200, 300 또는 400) 중 임의의 것의 동작 동안, 랜덤 번호들에 대한 요청이 수신된다(710). 요청은 통상적으로 얼마나 많은 랜덤 번호들이 요청되는지를 표시한다. 예를 들어, 요청은 랜덤 번호 생성 시스템에, 예를 들어, 생성 유닛(156)에 도달하고 말하자면, 40개의 랜덤 번호들이 필요하다고 표시할 수 있다. 이러한 요청의 수신 시에, 생성 유닛(156)은 요청된 수의 랜덤 번호들을 생성할 것이다.
다음으로, 현재 내부 상태로부터 랜덤 번호들을 생성하는 것(720)이 이어진다. 생성 유닛(156)은 내부 상태 메모리(154)로부터 현재 내부 상태를 획득하고 요청된 수의 랜덤 번호들을 획득하도록 생성 함수를 적용하는데, 말하자면 40개의 번호들이 요청된 대로 생성된다. 번호들이 생성된 이후, 생성 유닛(156)은 내부 상태를 업데이트한다. 이를 행하기 위해, 생성 유닛(156)은 현재 내부 상태로부터 새로운 내부 상태를 유도한다(730). 내부 상태는 지금까지 시퀀스를 이해 생성된 랜덤 번호들의 수를 포함할 수 있다. 즉, 새로운 내부 상태는 요청된 수의 랜덤 번호들에 의존할 수 있다.
생성 유닛(156)은 현재 내부 상태에 업데이팅 함수를 적용함으로써 이를 행할 수 있다. 생성 유닛(156)은 이어서 새로운 내부 상태를 내부 상태 메모리(154)에 기록한다(740). 생성된 랜덤 번호들은 내부 상태 메모리의 업데이팅 이후에, 예를 들어, 업데이팅 이후에나 이들을 버퍼링함으로써 출력될 수 있다. 생성된 랜덤 번호들은 또한 그의 생성 이후에 즉시 출력될 수 있다. 후자는 그것이 버퍼링을 방지하기 때문에 하드웨어에서 선호된다. 예를 들어, 각각의 번호는 그 특정한 번호가 생성되자 마자 출력될 수 있다.
오버-라이팅 메모리(110)의 임의의 언급된 방식은 이러한 방식의 랜덤 번호 생성과 조합될 수 있다. 예를 들어, 오버-라이팅 메모리(110)는 출력된 랜덤 번호들을 이용할 수 있다. 오버-라이팅 메모리(110)는 생성이 시작되기 이전에 한번, 예를 들어, 시드가 유도된 이후 또는 소프트-리셋 이전의 셧-다운(shut-down) 동안 한번 행해질 수 있다.
도 7b는 도 7a에서 도시된 방법에 대한 유리한 대안을 흐름도로 도시한다.
랜덤 번호 생성 시스템, 예를 들어, 시스템들(100, 200, 또는 400) 중 임의의 것의 동작 이용 동안, 랜덤 번호들에 대한 요청이 수신된다(710). 요청은 통상적으로 얼마나 많은 랜덤 번호들이 요청되는지를 표시한다. 예를 들어, 요청은 랜덤 번호 생성 시스템에, 예를 들어, 생성 유닛(156)에 도달하고 말하자면, 40개의 랜덤 번호들이 필요하다고 표시할 수 있다. 이러한 요청의 수신 시에, 생성 유닛(156)은 요청된 수의 랜덤 번호들을 생성할 것이다.
그러나 요청된 수의 랜덤 번호들을 생성하기 이전에, 생성 유닛(156)은 현재 내부 상태로부터 새로운 내부 상태를 유도한다(730). 이는 도 7a의 랜덤 번호의 생성 이후에 유도되어야 할 바로 그 새로운 내부 상태이다. 특히, 새로운 내부 상태는 지금까지 시퀀스에 대해 생성된 랜덤 번호들의 수에 의존하는 경우, 업데이팅 함수는 요청된 수의 랜덤 번호들의 생성 이후에 컴퓨팅되어야 할 새로운 내부 상태를 유도한다.
새로운 내부 상태는 이어서 오버-라이팅 메모리(110)를 위해 이용된다. 예를 들어, 새로운 내부 상태가 메모리(110)에 기록될 수 있다. 또한, 새로운 내부 상태에 의존하는 데이터가 메모리(110)에 기록될 수 있다. 예를 들어, 해시, 말하자면, sha-256은 새로운 내부 상태에 적용될 수 있으며, 그 결과는 메모리(110)에 기록된다.
다음, 현재 내부 상태로부터 요청된 랜덤 번호들을 생성하는 것(720)이 이어진다. 랜덤 번호들은 방금 컴퓨팅된 새로운 내부 상태로부터가 아니라 현재 내부 상태로부터 획득된다는 것에 주의한다. 생성 유닛(156)은 내부 상태 메모리(154)로부터 현재 내부 상태를 획득하고 요청된 수의 랜덤 번호들을 획득하도록 생성 함수를 적용하는데, 말하자면 40개의 번호들이 요청된 대로 생성된다.
번호들이 생성된 이후, 생성 유닛(156)은 내부 상태를 업데이트한다. 이는 이미 컴퓨팅된 새로운 내부 상태를 내부 상태 메모리에 기록함으로써 행해진다. 이는 또한 새로운 내부 상태를 재차 유도함으로써 행해질 수 있다.
도 7b에서 도시된 바와 같은 랜덤 번호들의 생성 및 내부 상태의 업데이팅을 조합하는 방법은 소프트 리셋 이전에 시퀀스의 품질에 비교하면, 소프트-리셋 이후에 랜덤 번호들의 품질에 관한 보증들(assurances)이 주어질 수 있다는 이점을 갖는다. 이러한 타입의 보증은 암호법에서 유리한 것으로 간주된다.
일 실시예에서, 방법(7b)에 의해 생성되는 랜덤 번호들의 시퀀스는 발생할 수 있는 소프트-리셋들로부터 독립적이다. 이는 새로운 내부 상태가 유도될 수 있는 데이터로 메모리(110)를 오버라이팅함으로써 예를 들어, 메모리(110)에 새로운 내부 상태 그 자체를 기록함으로써 또는 암호화 키를 이용하여 암호화된 내부 상태를 기록함으로써 달성될 수 있다. 소프트 리셋 이후에, 예시화 유닛(152)은 소프트 리셋이 발생했다고 시그널링된다. 예시화 유닛(152)은 이어서 새로운 내부 상태를 획득하고 이를 내부 상태 메모리(154)에 기록한다. 이러한 방식으로, 시퀀스는 어떠한 소프트-리셋도 발생하지 않은 것처럼 지속될 것이다. 필요한 경우, 예시화 유닛(152)은 내부 상태를 획득하기 위해 메모리(110) 내의 데이터를 복호화할 수 있다.
암호화 키는 도 7b의 방법을 구현하는 디바이스의 프로그램 메모리에 저장된 고정키일 수 있다. 그러나 일 예시적인 실시예에서, 암호화 키는 PUF로서 이용되는 휘발성 키 메모리, 말하자면 메모리(110)를 포함하는 더 큰 메모리의 다른 부분의 파워-업 콘텐츠로부터 유도된다. 키 메모리로부터 유도된 암호화 키는 그것이 메모리(110)에 기록되기 이전에 새로운 내부 상태를 암호화하는데 이용된다. 예를 들어, 키 메모리는 PUF로서 이용될 수 있고, 암호화 키는 헬퍼 데이터를 적용함으로써 유도될 수 있다. 이러한 키 유도 방법들은 PUF들 분야에서 본질적으로 알려져 있다.
예시화 유닛(152)은 운영 체제에 의해 이전의 소프트 리셋에 관해 시그널링될 수 있다. 대안적으로 생성 유닛(156)은 미리 결정된 스트링을 메모리(110)에 기록할 수 있고, 예시화 유닛(152)은 미리 결정된 스트링의 존재를 검출함으로서 소프트 리셋이 발생했다고 결론을 내릴 수 있다.
도 5a는 본 발명에 따른 스마트 카드(500)의 개략적 표현을 상면도로 도시한다. 스마트 카드는 집적 회로(510)를 포함하며, 통상적으로 집적 회로(510)를 지원하는 플라스틱 카드(505)이다. 집적 회로(510)의 아키텍처는 개략적으로 도 5b에서 도시된다. 회로(510)는 본 발명에 따른 방법을 실행하고 및/또는 그의 모듈들 또는 유닛들을 구현하기 위해 컴퓨터 프로그램 컴포넌트들을 실행하기 위한 프로세싱 유닛(520), 예를 들어, CPU를 포함한다. 회로(510)는 프로그래밍 코드, 데이터, 암호 키들, 헬퍼 데이터 등을 저장하기 위한 메모리(522)를 포함한다. 메모리(522)의 부분은 판독-전용일 수 있다. 메모리(522)의 부분은 높은 보안 메모리, 예를 들어, 보안 관련 데이터, 예를 들어, 키들을 저장하기 위한 퓨즈들(fuses)일 수 있다. 회로(510)는 물리적 복제 불가능한 함수(524)를 포함한다. 물리적 복제 불가능한 함수(524)는 메모리(522)와 조합될 수 있다. 회로(210)는 통신 엘리먼트(526), 예를 들어, 안테나, 커넥터 패드들 또는 둘 다를 포함할 수 있다. 회로(510), 메모리(522), PUF(524) 및 통신 엘리먼트들(526)은 버스(530)를 통해 서로 접속될 수 있다. 카드는 안테나 및/또는 커넥터 패드들을 각각 이용하여 접촉 및/또는 무접촉 통신을 위해 배열될 수 있다. 스마트 카드는 예를 들어, 콘텐츠에 대한 액세스를 제어하기 위해 셋-톱 박스 내에서, 원격통신 네트워크에 대한 액세스를 제어하기 위해 모바일 전화 내에서, 대중 교통에 대한 액세스를 제어하기 위해 대중 교통 시스템 내에서, 은행 계좌에 대한 액세스를 제어하기 위해 뱅킹 카드 내에서 등등에서 이용될 수 있다.
예를 들어, 메모리(522)는 프로세싱 유닛(520)에 의한 실행을 위한 소프트웨어를 포함할 수 있다. 소프트웨어가 실행되면, 컴퓨팅 디바이스들의 모듈들의 기능들 중 일부가 수행된다. PUF(524)는 메모리(110)를 포함할 수 있다.
도 6은 본 명에 따른 방법(600)을 흐름도로 예시한다. 이 방법은 기록 가능한, 휘발성 메모를 파워-업하는 것(610), 메모리(520)의 부분으로부터 획득된 적어도 부분적인 랜덤 메모리 콘텐츠에 의존한 시드로 시딩하는 것(620), 시드에 의존하여 랜덤 번호들의 시퀀스를 생성하는 것(630) 및 시드에 의존하여 생성된 랜덤 번호들로 메모리의 적어도 부분을 오버-라이팅하는 것을 포함한다. 이 방법을 실행하는 다수의 상이한 방식이 당업자에게 자명하게 되는 바와 같이 가능하다. 예를 들어, 단계들의 순서는 변동될 수 있거나, 또는 몇몇 단계들은 병렬로 실행될 수 있다. 또한, 단계들 사이에, 다른 방법 단계들이 삽입될 수 있다. 삽입된 단계들은 여기서 기술된 바와 같은 방법의 정제(refinement)들을 표현하거나, 또는 방법에 관련되지 않을 수 있다. 예를 들어, 단계들(630 및 640)은 적어도 부분적으로 병렬로 실행될 수 있다. 또한, 정해진 단계는 다음 단계가 시작되기 이전에 완전히 마무리되지 않을 수 있다.
본 발명에 따른 방법은 프로세서 시스템이 방법(600)을 수행하게 하기 위한 명령들을 포함하는 소프트웨어를 이용하여 실행될 수 있다. 소프트웨어는 시스템의 특정한 서브-엔티티에 의해 행해진 단계들만을 포함할 수 있다. 소프트웨어는 하드 디스크, 플로피, 메모리 등과 같은 적합한 저장 매체에 저장될 수 있다. 소프트웨어는 무선, 또는 유선을 따라, 또는 데이터 네트워크, 예를 들어, 인터넷을 이용하여 신호로서 송신될 수 있다. 소프트웨어는 서버 상의 원격 이용을 위해 및/또는 다운로드를 위해 이용 가능하게 될 수 있다.
본 발명은 컴퓨터 프로그램들, 특히 본 발명을 실현하도록 적응된, 캐리어 내의 또는 캐리어 상의 컴퓨터 프로그램들로 또한 확장한다는 것이 인지될 것이다. 프로그램은 부분적으로 컴파일된 형태와 같은 소스 코드, 객체 코드, 코드 중간 소스, 및 객체 코드의 형태로, 또는 본 발명에 따른 방법의 구현에 이용하기에 적합한 임의의 다른 형태 내에 있을 수 있다. 컴퓨터 프로그램은 임베딩된 프로세서에 포함될 수 있다. 이러한 프로그램은 다수의 상이한 아키텍처적 설계들을 가질 수 있다는 것이 또한 인지될 것이다. 예를 들어, 본 발명에 따른 시스템 또는 방법의 기능을 구현하는 프로그램 코드는 하나 이상의 서브루틴들로 세분될 수 있다. 이들 서브루틴 사이에서 기능을 분배하기 위한 다수의 상이한 방식은 당업자에게 자명할 것이다. 서브루틴들은 자립형 프로그램을 형성하도록 하나의 실행 가능한 파일 내에 함께 저장될 수 있다. 이러한 실행 가능한 파일은 컴퓨터 실행 가능한 명령들, 예를 들어, 프로세서 명령들 및/또는 인터프리터 명령들(예를 들어, 자바 인터프리터 명령들)을 포함할 수 있다. 대안적으로 서브루틴들 중 하나 이상 또는 모두 다는 적어도 하나의 외부 라이브러리 파일에 저장되고 정적으로 또는 동적으로, 예를 들어, 실행-시간에 메인 프로그램에 링크될 수 있다. 메인 프로그램은 서브루틴들 중 적어도 하나에 대해 적어도 하나의 호출을 포함한다. 또한, 서브루틴들은 서로에 대한 함수 호출들을 포함할 수 있다. 컴퓨터 프로그램 물건에 관련된 실시예는 기술된 방법들 중 적어도 하나의 프로세싱 단계들 각각에 대응하는 컴퓨터 실행 가능한 명령들을 포함한다. 이들 명령들은 서브루틴들로 세분되고 및/또는 정적으로 또는 동적으로 링크될 수 있는 하나 이상의 파일들에 저장될 수 있다. 컴퓨터 프로그램 물건에 관련된 다른 실시예는 기술된 시스템들 및/또는 물건들 중 적어도 하나의 수단 각각에 대응하는 컴퓨터 실행 가능한 명령들을 포함한다. 이들 명령들은 서브루틴들로 세분되고 및/또는 정적으로 또는 동적으로 링크될 수 있는 하나 이상의 파일들에 저장될 수 있다.
컴퓨터 프로그램의 캐리어는 프로그램을 전달할 수 있는 임의의 엔티티 또는 디바이스일 수 있다. 예를 들어, 캐리어는 ROM, 예를 들어, CD ROM 또는 반도체 ROM, 또는 자기 레코딩 매체, 예를 들어, 플로피 디스크 또는 하드 디스크와 같은 저장 매체를 포함할 수 있다. 또한, 캐리어는 전기 또는 광학 케이블을 통해 또는 라디오 또는 다른 수단에 의해 전달될 수 있는 전기 또는 광학 신호와 같은 전송 송 가능한 캐리어일 수 있다. 프로그램이 이러한 신호에 임베딩될 때, 캐리어는 이러한 케이블 또는 다른 디바이스 또는 수단에 의해 구성될 수 있다. 대안적으로, 캐리어는 프로그램이 임베딩된 집적 회로일 수 있으며, 이 집적 회로는 관련된 방법의 수행에 이용하기 위해 또는 수행하도록 적응된다.
상술된 실시예들은 본 발명을 제한하기 보단 오히려 예시하는 것이고 당업자들은 첨부된 청구항들의 범위로부터 벗어남 없이 다수의 대안적인 실시예들을 설계할 수 있을 것이란 것이 주의되어야 한다. 청구항들에서, 괄호 사이에 배치되는 임의의 참조 부호들은 청구항을 제한하는 것으로서 해석되어선 안 된다. 동사 "포함하다" 및 그의 어형변화들의 이용은 청구항에 진술된 것 이외의 다른 엘리먼트들 또는 단계들의 존재를 배제하지 않는다. 엘리먼트 앞의 정관사 "a" 또는 "an"은 복수의 이러한 엘리먼트들의 존재를 배제하지 않는다. 본 발명은 몇개의 특유의 엘리먼트들을 포함하는 하드웨어에 의해, 및 적합하게 프로그래밍된 컴퓨터에 의해 구현될 수 있다. 몇 개의 수단들을 열거하는 디바이스 청구항에서, 이들 수단들 중 몇 개는 하드웨어의 하나 및 동일한 아이템에 의해 실현될 수 있다. 특정한 조치들(measures)이 사로 상이한 종속 청구항들에서 인용되었다는 단순한 사실은, 이들 조치들의 조합이 유리하게 이용될 수 없다는 것을 표시하는 것은 아니다.
100 랜덤 번호 생성 시스템
110 메모리
112 추가의 엔트로피 소스
120 컨디셔닝 유닛
130 구별기
150 결정론적 랜덤 번호 생성기
152 인스턴스화 유닛
154 내부 상태 메모리
156 생성 유닛
158 역-인스턴스화 유닛
159 오버라이팅 유닛
160 애플리케이션
200, 300, 400 랜덤 번호 생성 시스템
410 역-인스턴스화 유닛
500 스마트 카드
510 집적 회로
505 카드
520 프로세싱 유닛
522 메모리
524 물리적 복제 불가능한 함수
526 통신 엘리먼트
530 버스
540 스마트 카드
600 흐름도
610 기록 가능한 휘발성의 메모리의 파워-업
620 메모리의 부분으로부터 획득된 적어도 부분적으로 랜덤 메모리 콘텐츠에 의존한 시드로 시딩
630 시드에 의존하여 랜덤 번호들의 시퀀스를 생성
640 시드에 의존하여 생성된 랜덤 번호로 메모리의 적어도 부분을 오버-라이팅
710 요청을 수신
720 현재 내부 상태로부터 랜덤 번호들을 생성
730 현재 내부 상태로부터 새로운 내부 상태를 유도
740 새로운 내부 상태를 내부 상태 메모리에 기록
750 새로운 내부 상태를 이용하여 메모리를 오버라이팅

Claims (17)

  1. 랜덤 번호들의 시퀀스를 생성하기 위한 랜덤 번호 생성 시스템으로서,
    메모리 ― 상기 메모리는 기록 가능하고, 휘발성이며, 상기 메모리가 상기 메모리의 각각의 파워-업 시에 적어도 부분적으로 랜덤 메모리 콘텐츠를 포함하도록 구성됨 ― ;
    상기 적어도 부분적으로 랜덤 메모리 콘텐츠에 의존한 시드(seed)를 상기 랜덤 번호 생성 시스템에 시딩(seeding)하도록 구성된 인스턴스화 유닛(instantiating unit) ― 상기 랜덤 번호들의 시퀀스는 상기 시드에 의존하여 생성됨 ― ; 및
    상기 시드에 의존하여 상기 랜덤 번호 생성 시스템에 의해 생성된 랜덤 번호들로 상기 메모리의 적어도 부분을 오버-라이팅(over-writing)하도록 구성된 오버-라이팅 유닛
    을 포함하는,
    랜덤 번호 생성 시스템.
  2. 제 1 항에 있어서,
    상기 오버-라이팅 유닛은,
    상기 랜덤 번호들의 시퀀스의 생성 동안 랜덤 번호들로 상기 메모리를 오버-라이팅하도록 구성되는,
    랜덤 번호 생성 시스템.
  3. 제 2 항에 있어서,
    상기 오버-라이팅 유닛은,
    상기 랜덤 번호들의 시퀀스의 미리 결정된 수의 랜덤 번호들이 생성될 때마다 상기 시드에 의존하여 상기 랜덤 번호 생성 시스템에 의해 생성된 랜덤 번호를 기록하도록 구성되는,
    랜덤 번호 생성 시스템.
  4. 제 1 항 내지 제 3 항 중 어느 한 항에 있어서,
    상기 오버-라이팅 유닛은,
    상기 랜덤 번호 생성 시스템이 리셋 신호(reset signal)를 수신 시에, 상기 시드에 의존하여 상기 랜덤 번호 생성 시스템에 의해 생성된 랜덤 번호들로 상기 메모리의 적어도 부분을 오버-라이팅하도록 구성되는,
    랜덤 번호 생성 시스템.
  5. 제 1 항 내지 제 4 항 중 어느 한 항에 있어서,
    상기 메모리의 적어도 부분의 비트-크기는,
    적어도 상기 시드의 비트-크기만큼 큰,
    랜덤 번호 생성 시스템.
  6. 제 1 항 내지 제 5 항 중 어느 한 항에 있어서,
    내부 상태를 저장하기 위한 내부 상태 메모리 및 상기 내부 상태 메모리에 저장된 현재 내부 상태로부터 새로운 내부 상태를 유도하는 것과 함께 상기 현재 내부 상태로부터 랜덤 번호들의 시퀀스의 랜덤 번호를 생성하도록 구성된 생성 유닛을 포함하는,
    랜덤 번호 생성 시스템.
  7. 제 6 항에 있어서,
    상기 메모리의 적어도 부분의 비트-크기는,
    적어도 상기 내부 상태의 비트-크기만큼 큰,
    랜덤 번호 생성 시스템.
  8. 제 6 항에 있어서,
    상기 메모리의 적어도 부분의 비트-크기는,
    기껏해야 상기 내부 상태의 비트-크기의 2배이고, 바람직하게는 기껏해야 상기 내부 상태의 비트-크기이고, 바람직하게는 상기 시드의 비트 크기와 동일한,
    랜덤 번호 생성 시스템.
  9. 제 1 항 내지 제 8 항 중 어느 한 항에 있어서,
    상기 메모리의 적어도 부분을 오버-라이팅하도록 상기 시드에 의존하여 상기 랜덤 번호 생성 시스템에 의해 생성된 랜덤 번호들은,
    상기 랜덤 번호 생성 시스템에 의해 생성된 랜덤 번호들의 시퀀스의 부분인,
    랜덤 번호 생성 시스템.
  10. 제 1 항 내지 제 8 항 중 어느 한 항에 있어서,
    상기 메모리의 적어도 부분을 오버-라이팅하기 위해 상기 시드에 의존하여 상기 랜덤 번호 생성 시스템에 의해 생성되는 랜덤 번호들은,
    상기 랜덤 번호 생성 시스템에 의해 생성된 랜덤 번호들의 시퀀스의 부분이 아닌 상기 랜덤 번호 생성 시스템의 중간 데이터를 포함하는,
    랜덤 번호 생성 시스템.
  11. 제 6 항에 있어서,
    제 1 항 내지 제 10 항 중 어느 한 항과 조합하여, 상기 생성 유닛은,
    상기 현재 내부 상태로부터 랜덤 번호들의 시퀀스의 랜덤 번호를 생성하기 이전에 상기 현재 내부 상태로부터 새로운 내부 상태를 유도하도록 구성되고, 상기 오버-라이팅 유닛은 상기 현재 내부 상태로부터 랜덤 번호들의 시퀀스의 랜덤 번호들을 생성하기 이전에 상기 새로운 내부 상태로부터 유도된 랜덤 번호들로 상기 메모리의 적어도 부분을 오버-라이팅하도록 구성되는,
    랜덤 번호 생성 시스템.
  12. 제 1 항 내지 제 11 항 중 어느 한 항에 있어서,
    상기 랜덤 번호들의 시퀀스는,
    상기 시드에 완전히 의존하는,
    랜덤 번호 생성 시스템.
  13. 제 1 항 내지 제 12 항 중 어느 한 항에 있어서,
    상기 메모리는,
    SRAM 메모리, 플립-플롭들 및 래치들 중 임의의 하나를 포함하는,
    랜덤 번호 생성 시스템.
  14. 제 1 항 내지 제 13 항 중 어느 한 항에서와 같은 랜덤 번호 생성 시스템을 포함하는 스마트 카드.
  15. 랜덤 번호들의 시퀀스를 생성하는 방법으로서,
    메모리의 파워-업 단계 ― 상기 메모리는 기록 가능하고, 휘발성이며, 상기 메모리가 각각의 파워-업 시에 적어도 부분적으로 랜덤 메모리 콘텐츠를 포함하도록 구성됨 ― ;
    상기 적어도 부분적으로 랜덤 메모리 콘텐츠에 의존한 시드로 시딩하는 단계;
    상기 시드에 의존하여 상기 랜덤 번호들의 시퀀스를 생성하는 단계;
    상기 시드에 의존하여 생성된 랜덤 번호들로 상기 메모리의 적어도 부분을 오버-라이팅하는 단계
    를 포함하는,
    랜덤 번호들의 시퀀스를 생성하는 방법.
  16. 컴퓨터 프로그램이 컴퓨터 상에서 실행될 때 제 15 항의 모든 단계들을 수행하도록 적응된 컴퓨터 프로그램 수단을 포함하는 컴퓨터 프로그램.
  17. 제 16 항에 있어서,
    컴퓨터 판독 가능한 매체 상에서 실현되는,
    컴퓨터 프로그램.
KR1020137029323A 2011-04-05 2012-04-05 메모리 시동 노이즈에 기초한 랜덤 번호 생성 시스템 KR101972126B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201161471771P 2011-04-05 2011-04-05
US61/471,771 2011-04-05
PCT/EP2012/056277 WO2012136763A2 (en) 2011-04-05 2012-04-05 Random number generating system based on memory start-up noise

Publications (2)

Publication Number Publication Date
KR20140022869A true KR20140022869A (ko) 2014-02-25
KR101972126B1 KR101972126B1 (ko) 2019-04-24

Family

ID=46025630

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020137029323A KR101972126B1 (ko) 2011-04-05 2012-04-05 메모리 시동 노이즈에 기초한 랜덤 번호 생성 시스템

Country Status (6)

Country Link
US (1) US9383969B2 (ko)
EP (1) EP2695052B1 (ko)
JP (1) JP6182132B2 (ko)
KR (1) KR101972126B1 (ko)
ES (1) ES2530944T3 (ko)
WO (1) WO2012136763A2 (ko)

Families Citing this family (60)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8793296B2 (en) * 2012-02-02 2014-07-29 Kaohsiung Medical University Random number generating method
US8861725B2 (en) * 2012-07-10 2014-10-14 Infineon Technologies Ag Random bit stream generator with enhanced backward secrecy
US8879733B2 (en) 2012-07-10 2014-11-04 Infineon Technologies Ag Random bit stream generator with guaranteed minimum period
US8996951B2 (en) 2012-11-15 2015-03-31 Elwha, Llc Error correction with non-volatile memory on an integrated circuit
US9582465B2 (en) 2012-11-15 2017-02-28 Elwha Llc Flexible processors and flexible memory
US8966310B2 (en) 2012-11-15 2015-02-24 Elwha Llc Redundancy for loss-tolerant data in non-volatile 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
US9323499B2 (en) * 2012-11-15 2016-04-26 Elwha Llc Random number generator functions in memory
EP2933944B1 (en) * 2012-12-11 2017-09-20 Mitsubishi Electric Corporation Integrated security device and signal processing method used by integrated security device
US9449197B2 (en) 2013-06-13 2016-09-20 Global Foundries Inc. Pooling entropy to facilitate mobile device-based true random number generation
US9558358B2 (en) 2013-06-27 2017-01-31 Visa International Service Association Random number generator in a virtualized environment
EP3105884A4 (en) 2014-02-11 2018-03-21 Yaana Technologies, LLC Mathod and system for metadata analysis and collection with privacy
US10447503B2 (en) 2014-02-21 2019-10-15 Yaana Technologies, LLC Method and system for data flow management of user equipment in a tunneling packet data network
US9693263B2 (en) 2014-02-21 2017-06-27 Yaana Technologies, LLC Method and system for data flow management of user equipment in a tunneling packet data network
US10334037B2 (en) 2014-03-31 2019-06-25 Yaana Technologies, Inc. Peer-to-peer rendezvous system for minimizing third party visibility and method thereof
DE102014206992A1 (de) 2014-04-11 2015-10-15 Siemens Aktiengesellschaft Zufallszahlengenerator und Verfahren zum Erzeugen von Zufallszahlen
EP2940923B1 (en) * 2014-04-28 2018-09-05 Université de Genève Method and device for optics based quantum random number generator
US10216484B2 (en) * 2014-06-10 2019-02-26 Texas Instruments Incorporated Random number generation with ferroelectric random access memory
US10285038B2 (en) 2014-10-10 2019-05-07 Yaana Technologies, Inc. Method and system for discovering user equipment in a network
US9548862B1 (en) * 2014-11-17 2017-01-17 Safelogic, Inc. Managing entropy in computing devices for cryptographic key generation
US10542426B2 (en) 2014-11-21 2020-01-21 Yaana Technologies, LLC System and method for transmitting a secure message over a signaling network
US9880929B2 (en) * 2014-12-17 2018-01-30 Schneider Electric It Corporation Systems and methods for generating a unique device id
US10375070B2 (en) 2015-04-20 2019-08-06 Certicom Corp. Generating cryptographic function parameters from compact source code
US10361844B2 (en) 2015-04-20 2019-07-23 Certicom Corp. Generating cryptographic function parameters based on an observed astronomical event
US10079675B2 (en) * 2015-04-20 2018-09-18 Certicom Corp. Generating cryptographic function parameters from a puzzle
WO2016176661A1 (en) 2015-04-29 2016-11-03 Yaana Technologies, Inc. Scalable and iterative deep packet inspection for communications networks
WO2017021254A1 (en) * 2015-08-06 2017-02-09 Intrinsic Id B.V Cryptographic device having physical unclonable function
WO2017083855A1 (en) 2015-11-13 2017-05-18 Yaana Technologies Llc System and method for discovering internet protocol (ip) network address and port translation bindings
WO2017083853A1 (en) * 2015-11-13 2017-05-18 Yaana Technologies Llc System and method for providing secure and anonymous device-to-device communication
JP6249421B2 (ja) * 2016-03-25 2017-12-20 三菱電機株式会社 距離測定装置
CN106020771B (zh) * 2016-05-31 2018-07-20 东南大学 一种基于puf的伪随机序列发生器
EP3258292A1 (en) * 2016-06-17 2017-12-20 Airbus DS GmbH Technique for position calculation of a receiver under use of encrypted signals of a public regulated service
US10019236B2 (en) 2016-08-11 2018-07-10 Taiwan Semiconductor Manufacturing Co., Ltd. SRAM-based true random number generator
US10235138B2 (en) * 2016-09-30 2019-03-19 International Business Machines Corporation Instruction to provide true random numbers
US11080228B2 (en) * 2017-03-13 2021-08-03 International Business Machines Corporation Distributed random binning featurization with hybrid two-level parallelism
EP3407528A1 (en) * 2017-05-24 2018-11-28 Koninklijke Philips N.V. Cryptographic device and method
US10481872B2 (en) * 2017-08-29 2019-11-19 Colossio, Inc. Cryptographically secure random number generator
US11175893B2 (en) * 2017-10-17 2021-11-16 Blue ArmorTechnologies, LLC Statistical object generator
KR102045764B1 (ko) 2018-02-02 2019-11-18 안상욱 진난수 발생용 에스램 셀 및 이를 구비한 에스램 셀 어레이 구동회로
US10880101B2 (en) 2018-04-11 2020-12-29 Taiwan Semiconductor Manufacturing Co., Ltd. Method and circuit for de-biasing PUF bits
US11055065B2 (en) * 2018-04-18 2021-07-06 Ememory Technology Inc. PUF-based true random number generation system
US11063755B2 (en) 2018-05-07 2021-07-13 Cryptography Research, Inc. Generating a key at a device based on a memory of the device
US10754619B2 (en) * 2018-09-27 2020-08-25 Intel Corporation Self-calibrated von-neumann extractor
US10402172B1 (en) 2019-02-28 2019-09-03 Qrypt, Inc. Multi-source entropy and randomness aggregation and distribution network
US11126404B2 (en) 2019-05-20 2021-09-21 Nxp B.V. Random number generator using multiple entropy sources and a method for generating random numbers
US20210026602A1 (en) * 2019-07-25 2021-01-28 PUFsecurity Corporation Entropy Generator and Method of Generating Enhanced Entropy Using Truly Random Static Entropy
US11532358B2 (en) * 2019-08-28 2022-12-20 Micron Technology, Inc. Memory with automatic background precondition upon powerup
US10990317B2 (en) * 2019-08-28 2021-04-27 Micron Technology, Inc. Memory with automatic background precondition upon powerup
US11968006B2 (en) * 2019-09-30 2024-04-23 Nokia Technologies Oy Physical layer security by pseudo-random layer mapping
US11341064B2 (en) * 2019-12-05 2022-05-24 Realtek Singapore Private Limited Method of protecting sensitive data in integrated circuit and integrated circuit utilizing same
CN112306457B (zh) * 2020-08-07 2023-07-14 神州融安数字科技(北京)有限公司 一种随机数生成方法及装置
US11977856B2 (en) 2021-01-25 2024-05-07 International Business Machines Corporation Random number generation from SRAM cells
US20220261221A1 (en) * 2021-02-18 2022-08-18 PUFsecurity Corporation Random number generator
TWI811642B (zh) * 2021-03-08 2023-08-11 新唐科技股份有限公司 亂數產生電路及亂數產生方法
KR20220135750A (ko) * 2021-03-31 2022-10-07 에스케이하이닉스 주식회사 메모리 및 메모리의 동작 방법
TWI785702B (zh) * 2021-05-07 2022-12-01 旺宏電子股份有限公司 用於產生識別碼之儲存裝置及識別碼產生方法
US11984166B2 (en) 2021-05-07 2024-05-14 Macronix International Co., Ltd. Storage device for generating identity code and identity code generating method
US20220385451A1 (en) * 2021-05-26 2022-12-01 Micron Technology, Inc. Data invalidation for memory
US20220385485A1 (en) * 2021-06-01 2022-12-01 Micron Technology, Inc. Identity theft protection with no password access

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20010006968A (ko) * 1999-04-07 2001-01-26 이데이 노부유끼 메모리 카드용 보안 유닛
JP2004519035A (ja) * 2001-02-05 2004-06-24 ケンブリッジ シリコン ラジオ リミテッド ランダムデータの発生方法およびランダムデータの発生装置
KR20070018986A (ko) * 2006-12-07 2007-02-14 후지쯔 가부시끼가이샤 난수 생성 장치, 생성 방법, 생성기 평가 방법 및 난수사용 방법

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002268874A (ja) * 2001-03-07 2002-09-20 Toshiba Corp 乱数シード生成回路及びこれを備えたドライバ、並びに、sdメモリカードシステム
US7233965B2 (en) * 2002-09-30 2007-06-19 Sun Microsystems, Inc. Continuous random number generation method and apparatus
DE10357782B3 (de) * 2003-12-10 2005-05-04 Infineon Technologies Ag Vorrichtung und Verfahren zum Erzeugen von Zufallszahlen mit einem Pseudozufallsgenerator
JP2006024140A (ja) 2004-07-09 2006-01-26 Sony Corp 乱数生成装置
US7496616B2 (en) * 2004-11-12 2009-02-24 International Business Machines Corporation Method, apparatus and system for resistance to side channel attacks on random number generators
US7676531B2 (en) * 2005-12-22 2010-03-09 Sony Computer Entertainment Inc. Methods and apparatus for random number generation
JP2007234001A (ja) * 2006-01-31 2007-09-13 Semiconductor Energy Lab Co Ltd 半導体装置
JP5279899B2 (ja) * 2008-05-23 2013-09-04 アギア システムズ インコーポレーテッド 安全な乱数生成器
JP2010266417A (ja) 2009-05-18 2010-11-25 Sony Corp 半導体集積回路、情報処理装置、および情報処理方法、並びにプログラム

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20010006968A (ko) * 1999-04-07 2001-01-26 이데이 노부유끼 메모리 카드용 보안 유닛
JP2004519035A (ja) * 2001-02-05 2004-06-24 ケンブリッジ シリコン ラジオ リミテッド ランダムデータの発生方法およびランダムデータの発生装置
KR20070018986A (ko) * 2006-12-07 2007-02-14 후지쯔 가부시끼가이샤 난수 생성 장치, 생성 방법, 생성기 평가 방법 및 난수사용 방법

Also Published As

Publication number Publication date
EP2695052B1 (en) 2014-11-26
ES2530944T3 (es) 2015-03-09
EP2695052A2 (en) 2014-02-12
US20140040338A1 (en) 2014-02-06
WO2012136763A2 (en) 2012-10-11
JP6182132B2 (ja) 2017-08-16
KR101972126B1 (ko) 2019-04-24
JP2014510354A (ja) 2014-04-24
WO2012136763A3 (en) 2013-01-03
US9383969B2 (en) 2016-07-05

Similar Documents

Publication Publication Date Title
KR101972126B1 (ko) 메모리 시동 노이즈에 기초한 랜덤 번호 생성 시스템
JP6692234B2 (ja) グローバルプラットフォーム仕様を使用した発行元セキュリティドメインの鍵管理のためのシステム及び方法
EP2526505B1 (en) Device and method for obtaining a cryptographic key
JP6267207B2 (ja) 物理的クローン不能関数として使用されるメモリから暗号化キーを生成するためのシステム
US9798677B2 (en) Hybrid cryptographic key derivation
US20170046281A1 (en) Address dependent data encryption
US8681976B2 (en) System and method for device dependent and rate limited key generation
US10255450B2 (en) Customer load of field programmable gate arrays
TWI749654B (zh) 亂數產生器及產生亂數輸出的方法
US20160072779A1 (en) Securing a cryptographic device against implementation attacks
JP2016535310A (ja) 素数の生成および記憶のための方法および装置
US11126404B2 (en) Random number generator using multiple entropy sources and a method for generating random numbers
US11321475B2 (en) Entropy data based on error correction data
CN114764512A (zh) 加密密钥管理
US11341280B2 (en) Executing entity-specific cryptographic code in a cryptographic coprocessor
JP2016157055A (ja) 暗号化システム、認証システム、暗号化装置、復号装置、認証子生成装置、検証装置、暗号化方法、認証方法
WO2019184741A1 (zh) 应用程序信息的存储、处理方法及装置
US20240176897A1 (en) Unlimited reprovisionable hardware root of trust
US20150215129A1 (en) Data encryption of a storage area
KR20220105495A (ko) 부채널 공격에 내성이 있는 모듈라 곱셈을 위한 장치 및 방법
CN114556344A (zh) 在加密协同处理器中执行针对实体特定的加密代码
CN117411634A (zh) 用于保护电子装置免受旁信道攻击的方法和电路
JP2018142768A (ja) 電子情報管理装置、電子情報管理システム、電子情報管理方法、及び、電子情報管理プログラム

Legal Events

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