KR102544298B1 - 하드웨어 지원 빠른 의사 난수 생성 방법 및 시스템 - Google Patents
하드웨어 지원 빠른 의사 난수 생성 방법 및 시스템 Download PDFInfo
- Publication number
- KR102544298B1 KR102544298B1 KR1020160131094A KR20160131094A KR102544298B1 KR 102544298 B1 KR102544298 B1 KR 102544298B1 KR 1020160131094 A KR1020160131094 A KR 1020160131094A KR 20160131094 A KR20160131094 A KR 20160131094A KR 102544298 B1 KR102544298 B1 KR 102544298B1
- Authority
- KR
- South Korea
- Prior art keywords
- block
- mixing
- function
- counter value
- counter
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0861—Generation of secret information including derivation or calculation of cryptographic keys or passwords
- H04L9/0869—Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/58—Random or pseudo-random number generators
- G06F7/582—Pseudo-random number generators
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic 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/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
- H04L9/0625—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation with splitting of the data block into left and right halves, e.g. Feistel based algorithms, DES, FEAL, IDEA or KASUMI
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic 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/0643—Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic 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/065—Encryption by serially and continuously modifying data stream elements, e.g. stream cipher systems, RC4, SEAL or A5/3
- H04L9/0656—Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher
- H04L9/0662—Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher with particular pseudorandom sequence generator
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic 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/065—Encryption by serially and continuously modifying data stream elements, e.g. stream cipher systems, RC4, SEAL or A5/3
- H04L9/0656—Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher
- H04L9/0662—Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher with particular pseudorandom sequence generator
- H04L9/0668—Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher with particular pseudorandom sequence generator producing a non-linear pseudorandom sequence
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Nonlinear Science (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Power Engineering (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
호출-카운터를 위한 카운터 값을 초기화하는 것과, 호출-카운터로부터 믹싱 함수로 카운터 값의 비트-와이즈 형태를 보내는 것, 및 의사 난수를 생성하기 위해 카운터 값을 믹싱하는 것에 의해 의사 난수를 생성하기 위한 시스템 및 방법. 믹싱 함수는 XOR 트리, 대체-치환, 및 이중-믹스 페이스텔일 수 있다. 의사 난수 생성기는 호출-카운터의 비트를 믹싱하는 것, 그 자신의 출력을 반복적으로 믹싱하는 것, 또는 그 조합에 의해 동작할 수 있다. 카운터는 소정 값 만큼 증가된다. 후방향 안전성을 제공하기 위해, 의사 난수는 일방향 함수에 의해 처리되거나 암호 해시 함수로 해싱되고, 그 결과는 믹싱 함수의 연속 사이클 동안 입력 값으로서 이용된다. 또한, 다양한 믹싱 함수가 XOR된 그들의 출력과 함께 병렬로 동작될 수 있다.
Description
본 발명은 일반적으로 데이터 암호화(data encryption)에 관한 것으로, 특히, 암호화 키(encryption keys)로서, 수정가능 암호(tweakable ciphers)를 위한 수정 값(tweak values)으로서, 암호화 및 메시지 인증 코드의 다양성을 위한 난스(nonces)로서 이용될 수 있는 의사 난수(pseudorandom numbers)를 생성하고, 부 채널(side channels)에서의 누설(leakage)을 방지하도록 정보를 마스킹(masking)하기 위한 개선된 시스템 및 방법에 관한 것이다.
항공 산업은 임계적 IT(critical information technology) 인프라(infrastructure)의 신뢰할 수 있는 기능성(reliable functioning)에 크게 의존한다. 많은 다른 산업과 마찬가지로, 항공 산업은 이러한 IT 인프라에 대한 적절한 보안(adequate security)을 제공하고 어떠한 사이버 이벤트(cyber events)의 영향을 완화시키기 위한 도전을 받고 있다. 사이버 이벤트의 예는, 그 데이터 연결, 데이터 전송, 및 계산 시스템(computing systems)을 포함하는, 항공기의 네트워크의 운용(operation)을 위ㅌ롭게하거나, 또는 위태롭게 되도록 시도하는, 악의적이거나 의심스러운 이벤트를 포함한다.
많은 과학, 엔지니어링 및 IT 보안 어플리케이션은, 표준 통계적 테스트(standard statistical tests)에 의한 트루 랜덤(true random)으로부터 구별될 수 없는, 많은 랜덤-룩킹 넘버(random-looking numbers)를 필요로 한다. 일반적으로, 수(numbers)가, 마이크로프로세서 상의 소프트웨어에서 또는 특정화된 전자 하드웨어에서 수행되는, 알고리즘에 의해 생성되면, 그들은 의사 난수(pseudorandom numbers)로서 언급된다. 의사 난수는 물리적 시스템을 시뮬레이션하는 것, 구조화된 데이터를 화이트닝하는 것(whitening), 및 수치 수학적(numerical mathematical) 문제를 해결하기 위한 랜덤화된 계산을 하는 것과 같은 어플리케이션에서 유용하다. IT 보안 어플리케이션에 있어서, 의사 난수는, 난스(nonces)(한번만 이용되는 수), IV(initial values), 데이터 하이딩(data hiding), 및 암호화 키 유도(cryptographic key derivation)와 같은, 프로토콜에서 이용된다.
전통적으로, 의사 난수는, 생성되어지는 각 바이트에 대해 여러 클럭 사이클을 취하는, 마이크로프로세서 상에서 생성된다. 가장 빠른 실제적 알고리즘은 64 비트 프로세서 상에서 4ㆍㆍㆍ12 클럭 사이클로 8바이트(64 비트)를 생성한다. 몇몇 어플리케이션에 있어서, 많은 양의 의사 난수가 짧은 구간의 시간에서 필요로 될 때, 의사 난수를 위한 이러한 생성 시간은 너무 길다. 몇몇 예에 있어서, 전자적 하드웨어는 알고리즘을 스피드 업(speed up)하도록 주문형 설계(custom designed)될 수 있다. 그러나, 마이크로프로세서의 이용을 통합하는 이러한 종래 기술의 의사 난수 생성기는 낮은 품질(상관된(correlated), 바이어스된(biased))의 수를 생산하고, 늦으며, 마이크로프로세서를 작업(task)과 묶고, 메모리 비지(memory buses)를 막으며(clog), (증가된 열 소실(heat dissipation) 및 배터리 소모를 초래하는) 많은 전력/에너지를 소비한다.
종래 기술의 의사 난수 생성기의 부가적인 결점은, IT 보안 어플리케이션에서 중요한 위험을 야기시키는, 부 채널 공격(side channel attacks)으로부터 보호되지 않는다는 것이다. 데이터를 처리하고 있는 전자 장치의 동작 동안, 비밀 키(secret keys) 또는 민감한 데이터(sensitive data)에 관한 몇몇 정보는, 응답 시간(response times)의 데이터 종속 변동(data dependent variation), 전력 이용의 동요(fluctuation of power use), 또는 초음파 또는 전자기파 방사를 포함하는, 부 채널(의도하지 않았던 정보 보급(unintended information dissemination)의 물리적 소스)에서 항상 누설된다. 이는 전자 장치에 대해 물리적 억세스를 갖는 상대방(adversary)이 없을 때 왜 저장되거나 전송된 데이터의 비밀성(secrecy) 및 무결성(integrity)이 일반적으로 암호화 수단(cryptographic means )에 의해 보장될 수 있는가이다.
따라서, 처리 시간, 시스템 복잡성, 전자 회로의 크기, 또는 에너지 사용을 상당하게 증가시키는 것 없이 하나의 클럭 사이클에서 많은 의사 난수를 생성하고 부 채널 누설을 감소시키는 것에 의해 보안(security)의 개선을 가능하게 하는 개선된 의사 난수 생성기를 갖는 것이 바람직할 수 있다.
본 발명은 상기한 점을 감안하여 발명된 것으로, 보안의 개선을 가능하게 하는 개선된 의사 난수 생성 방법 및 시스템을 제공함에 그 목적이 있다.
상기한 배경의 관점에서, 본 발명의 예시적 구현은 호출-카운터를 위한 카운터 값을 초기화하는 단계와, 호출-카운터로부터 믹싱 함수로 카운터 값의 비트-와이즈 형태를 보내는 단계, 및 의사 난수를 생성하기 위해 카운터 값의 비트-와이즈 형태를 믹싱하는 단계를 포함하는 의사 난수를 생성하기 위한 시스템 및 방법을 제공한다. 카운터 값은 소정 값 만큼 증가되고 생성된 의사 난수는 믹싱 함수의 연속 사이클 동안 입력 값으로서 이용될 수 있다. 의사 난수를 생성하기 위한 시스템 및 방법은 또한 입력 레지스터의 용량을 초과하는 것 없이 가능한 한 여러 번 전체적으로 카운터 값을 반복하는 것에 의해 입력 레지스터를 채우는 단계와, 카운터 값의 개별 비트로 입력 레지스터의 소정의 남아있는 미충만 비트를 채우는 단계를 또한 포함할 수 있다. 암호화된 데이터는 생성된 의사 난수를 기초로 저장 장치의 메모리에 저장될 수 있다.
본 발명의 구현에 있어서, 믹싱 단계는 믹싱 함수에 의해 수행된다. 믹싱 함수는 세그먼트를 연관시키는 것에 의해 카운터 값 입력의 비트-와이즈 형태의 제1 세그먼트를 카운터 값 출력의 비트-와이즈 형태의 제1 세그먼트와 맵핑시킨다. 믹싱 함수는 가역이고 비-선형이며, XOR 트리 믹싱 유닛, 대체-치환 믹싱 유닛, 및 이중-믹스 페이스텔 믹싱 유닛일 수 있다. 믹싱 함수는 병렬로 동작하는 적어도 2개의 함수에 의해 수행될 수 있고, 적어도 2개의 믹싱 함수로부터의 출력은 XOR된다. 의사 난수는 또한 일방향 함수에 의해 처리되거나 암호 해시 함수로 해싱되고, 따라서 일방향 처리 또는 해싱의 결과는 믹싱 함수의 연속 사이클 동안 입력 값으로서 이용된다.
여기에 개시된 특징, 기능 및 이점은 다양한 예시적 구현에서 독립적으로 달성될 수 있거나 또 다른 예시적 구현에 결합될 수 있고, 더욱 상세한 내용은 이하의 설명 및 도면을 참조하여 알 수 있다.
도 1은 본 발명의 예시적 실시예에 따른 믹싱 함수(mixing function)를 위한 XOR 트리 기반 키 생성기(XOR tree based key generator)의 논리도이다.
도 2는 본 발명의 예시적 실시예에 따른 믹싱 함수를 위한 대체-치환 네트워크 기반 키 생성기(substitution-permutation network based key generator)의 논리도이다.
도 3은 본 발명의 예시적 실시예에 따른 믹싱 함수를 위한 이중-믹스 페이스텔 네트워크 기반 키 생성기(double-mix Feistel network based key generator)의 논리도이다.
도 4는 본 발명의 예시적 실시예에 따른 의사 난수 생성 방법의 블록도이다.
도 5는 항공기 제조 및 서비스 방법의 블록도이다.
도 6은 항공기의 개요도이다.
도 2는 본 발명의 예시적 실시예에 따른 믹싱 함수를 위한 대체-치환 네트워크 기반 키 생성기(substitution-permutation network based key generator)의 논리도이다.
도 3은 본 발명의 예시적 실시예에 따른 믹싱 함수를 위한 이중-믹스 페이스텔 네트워크 기반 키 생성기(double-mix Feistel network based key generator)의 논리도이다.
도 4는 본 발명의 예시적 실시예에 따른 의사 난수 생성 방법의 블록도이다.
도 5는 항공기 제조 및 서비스 방법의 블록도이다.
도 6은 항공기의 개요도이다.
본 발명의 몇몇 구현이 이하 첨부된 도면을 참조하면서 더욱 상세하게 설명될 것이고, 본 발명의 모든 구현이 도시되지는 않는다. 실질적으로, 본 발명의 다양한 구현이 많은 다른 형태로 구현될 수 있고, 여기서 설명하는 구현으로 한정되는 것으로 해석되어서는 안되고; 오히려 이들 예시적 구현이 제공되어 이러한 발명이 철저하게 완료될 것이고, 당업자에게 본 발명의 범위를 완전하게 전달할 것이다. 예컨대, 달리 명시되지 않는 한, 제1, 제2 등과 같은 어떠한 참조는 특정 순서를 암시하는 것으로 해석되어서는 안된다 또한, 다른 무언인가의 위에 있는 것으로 설명될 수 있는 무엇인가는 (달리 명시되지 않는 한) 대신 아래에 있을 수 있고, 그 반대로도 될 수 있으며; 마찬가지로, 다른 무엇인가의 좌측에 있는 것으로 설명되는 무엇인가는 대신 우측에 있을 수 있고, 그 반대로도 될 수 있다. 동일한 참조부호는 전체에 걸쳐 동일한 엘리먼트를 언급한다.
본 발명의 예시적 구현은 항공 어플리케이션과 함께 주로 설명될 것이다. 그러나, 예시적 구현은 항공 산업 및 항공 산업 외의 다양한 다른 어플리케이션과 함께 이용될 수 있음이 이해되어야 한다.
본 발명의 예시적 구현에 따르면, 각 클럭 사이클을 위한 의사 난수를 생성하기 위한 개선된 시스템이 복잡하고 비선형 방법에서 그 입력을 애매하게 만드는 믹싱 함수(mixing function)를 이용하는 것에 의해 제공된다.
PRNG(pseudorandom number generator; 의사 난수 생성기)는 시드(seed)로 초기화되어야 한다. 시드는 물리적 난수(physical random number), 또는 연속적으로 생성된 시퀀스 고유성(subsequently generated sequence unique)을 만드는, 사용자 제공 값(user supplied value)이다. 시드로 PRNG를 초기화한 후, 다수의 요청(requests)(호출(calls))이 생길 수 있다. 많은 수의 호출의 각각은 이전의 것과는 다른 의사 난수를 리턴(return)시킨다. 소정 수의 요청(호출) 후, 리턴된 의사 난수는 반복하도록 시작한다. (낮은 확률에서) 반복(repetitions)이 트루 난수(true random numbers)의 행위를 모방하도록 허용가능하거나 바람직하다면, 생성된 의사 난수는 절단(truncated)될 수 있다. 반복이 허용가능하지 않다면, 구간 길이(period length)는 의도된 어플리케이션을 위해 충분히 큼을 보장하도록 측정이 취해진다. 주기성(periodicity)이 구간 재시작 전에 새롭게 획득된 물리적 난수로 PRNG를 재-시딩하는 것(re-seeding)에 의해 방지될 수 있다.
상기 주지한 바와 같이, 본 발명의 예시적 구현에 따른 개선된 PRNG들은 믹싱 함수를 이용한다. 이러한 믹싱 함수는, 하드 코딩되고(hard coded), 퓨즈를 용융하며, 플립-플롭과 같은, 휘발성 메모리에 저장될 수 있는, 많은 양의 비밀 키 재료(secret key material)에 의존하여 동작한다. 비밀 키 재료는 장치의 군(family)의 모든 장치를 위해 하드 코딩될 수 있고, 특정 장치의 초기화(initialization)에서 설정할 수 있고, 또는 리셋에서 또는 PRNG를 재-시딩하기 위해 명시적 요청(explicit request)에서 생성될 수 있다.
믹싱 함수는 암호(ciphers)와 유사하지만 훨씬 더 빠르다. 믹싱 함수는, 몇몇 상관이 그들의 입력과 출력 사이에 존재할 수 있기 때문에, 또한 암호 보다 덜 안전하고, 그에 의해 그들 자신에 의한 암호화 동작을 위해 그들을 일반적으로 부적합하게 만든다. 그러나, 믹싱 함수의 입력 또는 출력의 어느 하나가 공격자(attacker)로부터 숨겨져 있을 때, 공격자는 전통적인 암호학적 공격(cryptologic attacks) 또는 부-채널 공격(side-channel attacks)을 착수할 수 없다. 따라서, 패스트 믹싱 함수(fast mixing functions)는, 어플리케이션 비밀 키가 다른 비밀 키를 생산하는, 암호화 키 생성을 위해 이상적이고, 특히 이러한 수들이 내부적으로 이용되고 엿듣는 사람(eavesdropper)으로부터 숨겨질 때, 의사 난수 시퀀스를 생성한다.
개선된 PRNG들에 이용하기 위해 적절한 믹싱 함수는 다음의 특성을 갖는다:
1)그들은 n-비트 입력을 n-비트 출력에 맵핑한다((n = 블록 크기).
2) 믹싱은, 단일 숏 키(single short key)로부터 또는 트루 난수 생성기(true random number generator)에 의해 생성될 수 있는, 다량의 비밀 키 재료에 의존한다.
3) 믹싱 함수는 전단사(bijection)(가역(invertible))이다.
4) 모든 입력 비트는 비-선형 방식으로 모든 출력 비트에 영향을 미친다.
5) (키 재료로부터 독립적으로 선택된) 입력 비트의 대부분의 비어 있지 않은(nonempty) 세트는 또한 모든 출력 비트에 영향을 미친다(취소되는 효과는 없음).
본 발명의 예시적 구현에 따르면, PRNG들에 이용하기 위한 적절한 믹싱 함수는 XOR 트리(도 1), 대체-치환 네트워크(substitution-permutation networks)(도 2), 및 이중-믹스 페이스텔 네트워크(double-mix Feistel networks)이다. 상기한 바와 같이, 믹싱 함수의 비-선형성(non-linearity)은 (N)AND/OR 게이트 (2x1 비트 S-Box들)에 대해 악화될 수 있는, 시프트된 데이터 또는 S-Box들의 산술적 부가(arithmetic additions)에 의해 제공될 수 있다.
XOR 트리 기반 키 생성기인 믹싱 함수와 관련하여 도 1을 참조하면, 입력 비트 A1, A2, A3, A4…는 XOR에 대해 대응하는 서브키 K1, K2, K3, K4…를 선택한다. 최종 스크램블 동작 단계(final scramble operation step)는 구조 비-선형(construction non-linear)을 만들고 로테이트-애드 동작(rotate-add operations), 또는 일련의 비선형 S-Box 동작(nonlinear S-Box operations)으로 이루어질 수 있다. XOR 트리 기반 키 생성기는, 전통적 입력 선택과 함께, 제2 세트의 서브키를 더 포함할 수 있다. 로테이션(rotation), 부가(addition), 또는 XOR을 포함하는 비트 조작 동작(bit manipulating operations)에 의해, 서브키는 몇몇 베이스 서브키(base subkeys)로부터 생성될 수 있다.
대체-치환 네트워크 기반 키 생성기인 믹싱 함수와 관련하여 도 2를 참조하면, 입력 비트는 논리도의 상부로부터 공급되고, 출력은 논리도의 하부로부터 취해진다. 서브키 Ki는 랜덤하게 생성된 비밀과 독립적일 수 있고, 또는 몇몇 베이스 키로부터 유래될 수 있다. S1, S2…는, 작은, 비-선형 대체 가역 함수(small, non-linear substitution invertible functions)인 S-Box들이다. 믹싱 네트워크의 다수의 층은 (모든 입력 비트가 모든 출력 비트에 영향을 미칠 때) 전체 믹싱 깊이의 적어도 2배로 되도록 선택될 수 있지만, 적을 수도 있고, 따라서 회로의 전체 지연은 여전히 클럭 사이클을 초과하지 않는다.
이중-믹스 페이스텔 네트워크 기반 키 생성기(double-mix Feistel network based key generator)인 믹싱 함수와 관련하여 도 3을 참조하면, F는 비-선형이고, 함수를 가역시키는 것이 매우 어렵고(또는 불가능하고), 반면 G는 가역이다. 이상적 회로의 여러 층이 계단식(cascaded)으로 된다. 병렬로 동작하는 전자 회로에 따른 구현에서, 이중-믹스 페이스텔 네트워크의 단일 층의 믹싱 성능은 전통적인 페이스텔 네트워크의 단일 층의 2배이다. [L0,R0]는 믹싱 함수의 입력이고 출력은 논리도의 마지막 반복된 층의 하부로부터 취해진다. 믹싱 네트워크의 층의 수는 그 전체 지연이 단일 클럭-사이클에 맞추어지는 만큼 높게 되도록 선택된다.
앞에서 설명된 믹싱 함수는, 그 예가 아래에서 설명되는, 의사 난수 생성을 위한 동작의 여러 모드에서 이용될 수 있다.
도 4에 예시된 바와 같이, 카운터 모드(counter mode)에서, 카운터가 (숏(short)) 시드(seed)에 대해 초기화되고(블록 402), 카운터 값(counter value)의 비트 와이즈 형태(bit wise form)가 믹싱 함수로 보내진다(블록 408). 믹싱은 의사 난수를 생성하기 위해 도 1 내지 도 3과 관련하여 위에서 설명된 믹싱 함수 중 하나에 따라 수행된다(블록 410). 카운터는 의사 난수가 요청되는 매번 소정 값 만큼 증가되고(블록 424), 카운터는 0으로부터 연속적으로 카운팅하기 위해 오버플로우 주위에서 그 값을 랩핑(wrap)하게 한다. 카운터는 PRNG의 재-시딩(re-seeding)에서 리셋(reset)된다. 카운터는, 예컨대 여러 입력 값이 믹싱 함수의 여러 출력 값을 산출하기 때문에 반복 이전에 40억의 고유 의사 난수(unique pseudorandom numbers)의 생성을 허용하는, 32 비트 무부호 정수(unsigned integer)일 수 있다. 필요하다면, 더 긴 카운터가 채택될 수 있고 입력 비트의 나머지(rest)는 0으로, 또는 (시드로부터 유래될 수 있는) 어떠한 다른 일정 비트 패턴(constant)으로 설정될 수 있다. 또한, 20비트와 같은, 더 짧은 카운터가 이용될 수 있고, 이 경우 백만 번의 호출(220) 후 PRNG는 트루 랜덤 값(true random value)으로 리-시딩된다.
스크램블 카운터 모드(scrambled counter mode)에서는, 상기한 바와 같이, 카운터(호출-카운터(call-counter))가 이용되지만, 입력 비트는 비-일정(non-constant)인 값으로 초기화된다(블록 402). 예컨대, 31 비트 카운터는 그것이 입력 레지스터(input register)에 적합한 만큼 여러 번 그 전체에서 반복된 그 값으로 채택될 수 있다(블록 404). 256 비트 와이드 입력 레지스터(wide input register)의 경우, 31 비트 카운터 값은 (나머지 8을 갖는) 256/31=8이기 때문에 그 전체에서 8번 반복될 수 있다. 나머지 8은 카운터 값의 8개의 개별 비트(최하위 비트(least significant bits))와 대응하고, 그러한 비트는 남아있는 입력 레지스터 비트(remaining input register bits)를 채우도록 다시 한번 이용되는 최하위 비트로 되도록 고려된다(블록 406). 스크램블 카운터 모드에서, 카운터 값의 비트-와이즈 형태(bit-wise form)가, 카운터 값을 믹싱하기 위한 대체-치환 믹싱 함수(도 2)와 같은(블록 410), 믹싱 함수로 보내질때(블록 408), 카운터 비트는 여러 S-Box들의 여러 입력 위치에서 분배될 것이기 때문에 S-Box들의 입력 크기의 배수가 아닌 카운터 폭(counter width)이 바람직하다. 생성된 수의 구간은 카운터가 획득될 수 있는 다수의 여러 값과 동일하다. 이러한 스크램블 카운터 모드는 (믹싱 함수의 입력 크기 보다 더 크지 않는 한) 소정의 원하는 길이의 호출-카운터를 채택하고, 주기성을 나타내도록 생성된 수가 시작하기 전에 재-시드(re-seed)를 요청한다.
리커시브 모드(recursive mode)에서, 믹싱 함수의 제1 입력은 (긴) 시드이다. 다음의 입력은 믹싱 함수의 이전의 입력이다. 이러한 예시적 구현에 있어서, 카운터는 필요로 되지 않지만, 생성된 의사 난수의 시퀀스에서의 구간의 길이는 알려지지 않는다. 대부분의 경우에 있어서, 구간은 어떠한 어플리케이션(256 비트 입력 크기에서 적어도 2128 호출)에 의해 필요로 된 것 보다 더욱 더 길다. 믹싱 함수의 계속되는 입력 값은 그들이 카운터 모드에 있을 때 보다 더 적게 상관되고, 이는 더욱 철저한 믹싱을 만든다.
하이브리드 카운터 모드(hybrid counter mode)에서, 호출-카운터(call-counter)는 (긴) 시드의 최하위 비트, 또는 비트의 소정의 고정된 세트에 대해 초기화된다(블록 402). 카운터는 의사 난수 생성기의 각 호출에서 증가되고, 오버플로우(overflow)에서 0에 대해 주위를 랩핑한다(블록 424). 믹싱 함수(블록 410)의 제1 입력(블록 408)은 시드이다. 카운터 값에 대해 입력의 지정된 비트를 변화시키는 것에 의해 변경되는 것을 제외하고, 이어지는 입력은 믹싱 함수의 이전의 출력이다(블록 420). 이는 생성된 의사 난수의 시퀀스에서 구간의 길이가 적어도 카운터 모드에서 만큼 길고, 시간의 대부분은 더욱 더 길다는 것을 보장한다. 리커시브 모드와 같이, 믹싱 함수의 연속적인 입력 값은, 복사되는, 카운터 비트의 짧은 시퀀스를 제외하고, 비상관(uncorrelated)된 것으로 본다. 이는 보장된 최소 구간 길이(guaranteed minimum period length)에 따라, 매우 철저하게 믹싱을 만든다. 이러한 하이브리드 카운터 모드는 (입력 크기보다 더 길지 않은) 소정의 원하는 길이의 호출-카운터를 채택할 수 있고, 생성된 수가 주기성을 나타내도록 시작할 수 있기 전에 재-시드를 요청할 수 있다.
적용가능한 모든 경우에 있어서, 호출 카운터는 (미리 결정되거나 시드로부터 생성된) 큰, 홀수 상수 값(odd constant value) 만큼 증가될 수 있다(블록 424). 이는 1의 증가 보다 더 적게 상관된 연속적인 카운터 값을 만든다. 생성된 의사 난수는, 암호 키(encryption keys), 수정 값(tweak values), 난스(nces), 및 초기 값(initial values)과 같은, 메모리에 암호화된 데이터의 저장을 용이하게 하는데 이용될 수 있다(블록 422).
여기서 설명된 바와 같이 믹싱 함수와 통합되는 PRNG들은, 키 재료를 제외하고, 공지된 그들의 내부 상태 (카운터 및 믹싱 함수의 출력)에 관한 몇몇 정보를 만든다. 보안(security)은 이러한 키 재료의 보호에 달려 있다. 공격자가 이러한 키 재료를 발견하면, 공격자는 믹싱 함수 호출을 반전시킬 수 있고, 이전에 생성된 난수 및 또한 미래에 생성될 수를 찾아낸다. 본 발명의 다른 구현에 있어서, 후방향 안전성(backward secrecy)을 갖는 PRNG의 버전이 제공되고, 여기서 PRNG의 출력은 일방향 함수(one-way function)에 의해 처리되거나 암호 해시 함수(cryptographic hash function)로 해싱되고(hashed)(블록 416), 결과가 믹싱 함수의 미처리된 출력 대신 리턴된다(블록 418). 병렬로 작업하고 있는 다수의 믹싱 함수(블록 412), 및 함께 XOR된 그들의 출력(블록 414)은 또한 초고속 일방향 함수로서 기능할 수 있다. 개별 믹싱 함수의 출력이, 전체 출력인, 그들의 XOR된 값으로부터 재구성될 수 없기 때문에, 이러한 구성은 (가역시키는 것이 어려운) 일방향이다. 이러한 구성은, 2개의 클럭 사이클에서, 수 천의 의사랜덤 비트(pseudorandom bits)가 생성될 수 있기 때문에, 여전히 소정의 종래 기술 해법 보다 수 십배(orders of magnitude) 더 빠르다. 후방향 안전성을 갖는 본 발명의 다른 대안적 구현은 믹싱 함수를 병렬로 작업하고 있는 여러 다른 것과 XOR된 그들의 출력으로 대체하는 것에 의해 달성된다. 이러한 종합한 믹싱 함수는 키 재료의 지식으로도 용이하게 반전될 수 없고, 실행 시간(running time)은 상기 설명된 해시-구성(hash-construction)의 단지 반, 즉 전형적으로 1 클럭 사이클이다.
상기 설명된 바와 같이, 생성을 위한 매우 빠른 동작, 예컨대 전형적인 연산 장치의 단일 클럭 사이클에서 32 바이트(256 비트); 한 번에 수 백 또는 수 천의 랜덤 비트의 생산; 부 채널 누설을 만드는 고도의 병렬 처리(highly parallel processing); 비선형 비트 믹싱을 채택하는 것에 의한 고품질 의사 난수의 생성; 적용가능한 경우, 키 재료로서 그리고 초기 카운터 값(initial counter value)으로서 트루 랜덤 비트에서의 단순한 공급에 의한 용이한 재-시딩(re-seeding); 동일한 2개의 배치(deployments)가 없음을 보장하도록 그를 용이하게 만드는, 용이하게 개인화되고 요청에 따라 다양화(diversify) 또는 리셋(reset)하기에 용이한 다량의 비밀 키 재료의 이용; 및 (테스트 목적을 위해 유용한) 예측 가능한 비트 시퀀스(predictable bit sequences)를 생산하도록 고정된 입력과 고정된 키 재료에 따른 지원된 이용;을 포함하는 믹싱 함수를 통합하는 PRNG들의 이용에 대해 여러 이점이 있다. 부가적으로, 본 발명의 PRNG들은 다른 작업에 대한 프로세서를 자유롭게 하고 종래 기술의 PRNG들에 비해 에너지 소모를 감소시킨다. 본 발명의 PRNG들에 대한 예시적 어플리케이션은 기내 컴퓨터의 암호화 기능(cryptographic functions), 군사 및 우주 프로그램, 기업 네트워크(corporate networks), 개인용 및 랩탑 컴퓨터, 스마트 모바일 장치, 및 보안 통신 네트워크를 포함한다. 비-보안 관련 어플리케이션은 또한, 물리적 시스템을 시뮬에이션하고 랜덤화 연산(randomized computing) 또는 몬테-카를로 연산(Monte-Carlo computations)을 수행하는 것과 같은, 빠르고 고품질인 의사 난수로부터도 이점을 갖는다.
본 발명의 예시적 구현에 따르면, 본 발명의 개선된 PRNG의 다양한 구성은 단독으로 또는 하나 이상의 컴퓨터 프로그램 코드 명령의 지시하의 하드웨어, 프로그램 명령 또는 컴퓨터-판독가능 저장 매체로부터의 실행가능 컴퓨터-판독가능 프로그램 코드를 포함하는 다양한 수단에 의해 구현될 수 있다.
일례에 있어서, PRNG으로서 기능하거나 그렇지않으면 PRNG를 구현하도록 구성되는 하나 이상의 장치가 제공되고 각각의 엘리먼트가 여기에 개시되고 설명된다. 하나 이상의 장치를 포함하는 예에서, 각각의 장치는 다수의 여러 방식으로, 유선 또는 무선 네트워크 등을 매개로 직접적으로 또는 간접적으로 다른 장치에 연결되거나 그렇지않으면 통신될 수 있다.
일반적으로, 본 발명의 PRNG을 위한 예시적 구현의 장치는, 상기한 바와 같이, 메모리(예컨대, 저장 장치)에 연결된 프로세서(예컨대, 프로세서 유닛)와 같은 다수의 구성요소 중 하나 이상을 포함할 수 있다. 프로세서는, 예컨대 데이터, 컴퓨터-판독가능 프로그램 코드, 명령 등(일반적으로, "컴퓨터 프프로그램", 예컨대 소프트웨어, 펌웨어 등), 및/또는 다른 적절한 전자적 정보와 같은, 정보를 처리할 수 있는 일반적으로 몇 가지의 하드웨어이다. 특히, 예컨대 프로세서는, 프로세서에 탑재되어 저장되거나 그렇지않으면 (동일하거나 다른 장치의) 메모리에 저장될 수 있는, 컴퓨터 프로그램을 실행하도록 구성될 수 있다. 프로세서는, 특정 구현에 따라, 다수의 프로세서, 멀티-프로세서 코어 또는 몇몇 다른 형태의 프로세서일 수 있다. 더욱이, 프로세서는 메인 프로세서가 단일 칩 상에서 하나 이상의 2차 프로세서로 존재하는 다수의 이종 프로세서 시스템(heterogeneous processor systems)을 이용해서 구현될 수 있다. 다른 예시적 예로서, 프로세서는 동일한 형태의 멀티 프로세서를 포함하는 대칭형 멀티-프로세서 시스템(symmetric multi-processor system)일 수 있다. 또 다른 예에 있어서, 프로세서는 하나 이상의 ASIC들(application-specific integrated circuits), FPGA들(field-programmable gate arrays) 등으로서 구체화되거나 그렇지않으면 이를 포함할 수 있다. 따라서, 프로세서가 하나 이상의 기능을 수행하도록 컴퓨터 프로그램을 실행할 수 있음에도 불구하고, 다양한 예의 프로세서가 컴퓨터 프로그램의 도움 없이 하나 이상의 기능을 수행할 수 있다.
메모리는, 예컨대 데이터, 컴퓨터 프로그램 및/또는 일시적 기반 및/또는 영구적 기반 상의 어느 한쪽에서의 다른 적절한 정보와 같은, 정보를 저장할 수 있는 소정 개수의 하드웨어이다. 메모리는 휘발성 및/또는 비-휘발성 메모리를 포함할 수 있고, 고정되거나 제거가능할 수 있다. 적절한 메모리의 예는 RAM(random access memory), ROM(read-only memory), 하드 드라이브(hard drive), 플래시 메모리(flash memory), 섬 드라이브(thumb drive), 제거가능 컴퓨터 디스켓(removable computer diskette), 광학 디스크(optical disk), 자기 테이프(magnetic tape) 또는 상기의 몇몇 조합을 포함한다. 광학 디스크는 CD-ROM(compact disk - read only memory), CD-R/W(compact disk - read/write), DVD 등을 포함할 수 있다. 다양한 예에 있어서, 메모리는, 정보를 저장할 수 있는 비-일시적 장치(non-transitory device)로서, 하나의 장소에서 다른 장소로 정보를 운반할 수 있는 전자적인 일시적 신호와 같은 컴퓨터-판독가능 전송 매체와 구별가능할 수 있는 컴퓨터-판독가능 저장 매체로서 언급될 수 있다. 여기서 개시된 바와 같은 컴퓨터-판독가능 매체는 일반적으로 컴퓨터-판독가능 저장 매체 또는 컴퓨터-판독가능 전송 매체로 언급될 수 있다.
메모리에 부가하여, 프로세서가 또한 정보를 디스플레이하고, 전송하며 및/또는 수신하기 위한 하나 이상의 인터페이스에 연결될 수 있다. 인터페이스는 통신 인터페이스(예컨대, 통신 유닛) 및/또는 하나 이상의 사용자 인터페이스를 포함할 수 있다. 통신 인터페이스는, 다른 장치(들), 네트워크(들) 등으로 및/또는 그로부터, 정보를 전송 및/또는 수신하도록 구성될 수 있다. 통신 인터페이스는 물리적(유선) 및/또는 무선 통신 링크에 의해 정보를 전송 및/또는 수신하도록 구성될 수 있다. 적절한 통신 인터페이스의 예는 NIC(network interface controller), WNIC(wireless NIC) 등을 포함한다.
사용자 인터페이스는 디스플레이 및/또는 하나 이상의 사용자 입력 인터페이스(예컨대, 입력/출력 유닛)를 포함할 수 있다. 디스플레이는 사용자에게 정보를 제공하거나 그렇지않으면 디스플레이하도록 구성될 수 있고, 그 적절한 예는 LCD(liquid crystal display), LED(light-emitting diode display), PDP(plasma display panel) 등을 포함한다. 사용자 입력 인터페이스는 유선 또는 무선일 수 있고, 처리, 저장 및/또는 디스플레이를 위해, 사용자로부터 장치로 정보를 수신하도록 구성될 수 있다. 사용자 입력 인터페이스의 적절한 예는 마이크로폰(microphone), 이미지 또는 비디오 캡처 장치(image or video capture device), 키보드(keyboard) 또는 키패드(keypad), 조이스틱(joystick), (터치스크린으로부터 분리되거나 통합된) 터치-감응형 표면(touch-sensitive surface), 생체 센서(biometric sensor) 등을 포함한다. 사용자 인터페이스는 프린터, 스캐너 등과 같은 주변기기와 통신하기 위한 하나 이상의 인터페이스를 더 포함할 수 있다.
상기한 바와 같이, 프로그램 코드 명령이 메모리에 저장되고, PRNG의 기능을 수행하도록, 프로세서에 의해 실행될 수 있다. 알 수 있는 바와 같이, 소정의 적절한 프로그램 코드 명령이 특정 기계를 생산하도록 컴퓨터-판독가능 저장 매체로부터 컴퓨터 또는 다른 프로그래머블 장치로 로딩될 수 있고, 따라서 특정 기계는 여기서 특정된 기능을 구현하기 위한 수단으로 될 수 있다. 이들 프로그램 코드 명령은 또한 특정 방식으로 기능하여 특정 기계 또는 특정 제조 물품을 발생시키도록 컴퓨터, 프로세서 또는 다른 프로그래머블 장치를 지시 수 있는 컴퓨터-판독가능 저장 매체에 저장될 수 있다. 컴퓨터-판독가능 저장 매체에 저장된 명령은 제조 물품을 생산할 수 있고, 제조 물품은 여기서 설명된 기능을 구현하기 위한 수단으로 될 수 있다. 프로그램 코드 명령은 컴퓨터-판독가능 저장 매체로부터 검색될 수 있고, 컴퓨터, 프로세서 또는 다른 프로그래머블 장치 상에서 또는 그에 의해 수행되어지는 동작을 실행하기 위해 컴퓨터, 프로세서 또는 다른 프로그래머블 장치를 구성하도록 컴퓨터, 프로세서 또는 다른 프로그래머블 장치로 로딩될 수 있다.
프로그램 코드 명령의 검색, 로딩 및 실행은 순차적으로 수행될 수 있고, 따라서 하나의 명령은 한 번에 검색되고, 로딩되며 실행된다. 몇몇 예시적 구현에 있어서, 검색, 로딩 및/또는 실행은 병렬로 수행될 수 있고, 따라서 명령은 함께 검색, 로딩 및/또는 실행된다. 프로그램 코드 명령의 실행은 컴퓨터-구현 프로세스(computer-implemented process)를 생산할 수 있고, 따라서 컴퓨터, 프로세서 또는 다른 프로그래머블 장치에 의해 실행된 명령은 여기서 설명된 기능을 구현하기 위한 동작을 제공한다.
프로세서에 의한 명령의 실행, 또는 컴퓨터-판독가능 저장 매체에 명령의 저장은 특정 기능을 수행하기 위한 동작의 조합을 지원한다. 하나 이상의 기능, 및 기능의 조합은 특정 기능을 수행하는 특수 목적 하드웨어-기반 컴퓨터 시스템 및/또는 프로세서, 또는 특수 목적 하드웨어 및 프로그램 코드 명령의 조합에 의해 구현될 수 있음이 또한 이해될 것이다.
상기한 바와 같이, 본 발명의 예가 항공기 생산 및 서비스의 상황에서 설명될 수 있다. 도 5 및 도 6에 도시된 바와 같이, 생산 개시 이전 동안, 예시적 방법(500)은, 항공기(602)의 사양 및 설계(블록 502)와 자재 조달(블록 504)을 포함할 수 있다. 생산 동안, 항공기(602)의 구성요소 및 서브어셈블리 제조(블록 506)와, 시스템 통합(블록 508)이 발생될 수 있다. 그 후, 항공기(602)는 서비스 중(블록 512)에 배치되도록 인증 및 인도(블록 510)를 통해 나갈 수 있다. 서비스 중인 동안, 항공기(602)는 정기적인 유지보수 및 점검(블록 514)을 위해 예정된다. 정기적인 유지보수 및 점검은 항공기(602)의 하나 이상의 시스템의 변형, 재구성, 개장(refurbishment) 등을 포함할 수 있다.
예시적 방법(500)의 프로세스의 각각은 시스템 통합자, 제3자, 및/또는 오퍼레이터(예컨대, 소비자)에 의해 수행 또는 실행될 수 있다. 본 설명의 목적을 위해, 시스템 통합자는, 제한 없이, 소정 수의 항공기 제조업체 및 메이저-시스템 하청업체를 포함할 수 있고; 제3 자는, 제한 없이, 소정 수의 판매자, 하청업체, 및 공급자를 포함할 수 있고; 오퍼레이터는 항공사, 리스 회사, 군사 업체, 서비스 단체 등을 포함할 수 있다.
도 6에 도시된 바와 같이, 예시적 방법(500)에 의해 생산된 항공기(602)는 다수의 상위-레벨 시스템(600) 및 내부(interior; 614)를 갖는 기체(airframe; 612)를 포함할 수 있다. 상위-레벨 시스템(600)의 예는 추진 시스템(604), 전기 시스템(606), 유압 시스템(608) 및 환경 시스템(610) 중 하나 이상을 포함한다. 소정 수의 다른 시스템이 포함될 수 있다. 항공 우주의 예가 도시됨에도 불구하고, 여기에 개시된 원리는, 자동차 산업과 같은, 다른 산업에도 적용될 수 있다. 따라서, 항공기(602)에 부가하여, 여기에 개시된 원리는 다른 운송수단, 예컨대 지상 운송수단, 해상 운송수단, 항공우주 운송수단에 적용할 수 있다.
여기에 도시되고 개시된 장치(들) 및 방법(들)은 생산 및 서비스 방법(500)의 단계 중 어느 하나 이상 동안 채택될 수 있다. 예컨대, 구성요소 및 서브어셈블리 제조(506)에 대응하는 구성요소 또는 서브어셈블리는 항공기(602)가 서비스 중인 동안 생산된 구성요소 또는 서브어셈블리와 유사한 방식으로 제조 또는 생산될 수 있다. 또한, 장치(들), 방법(들), 또는 그 조합의 하나 이상의 예는, 예컨대 항공기(602)의 조립을 실질적으로 더 신속히 처리하거나 비용을 줄이는 것에 의해, 제조 단계(506 및 508) 동안 이용될 수 있다. 마찬가지로, 장치 또는 방법 실현의 하나 이상의 예, 또는 그 조합은, 예컨대 제한 없이, 항공기(602)가 서비스 중인 동안, 예컨대 유지보수 및 점검 단계(블록 514) 동안 이용될 수 있다.
더욱이, 본 발명은 이하의 조항에 따른 예를 구비한다.
조항 1. 호출-카운터를 위한 카운터 값을 초기화하는 단계(블록 402)와; 호출-카운터로부터 믹싱 함수로 카운터 값의 비트-와이즈 형태를 보내는 단계(블록 408); 및 의사 난수를 생성하기 위해 카운터 값의 비트-와이즈 형태룰 믹싱하는 단계;를 갖추어 이루어지는 것을 특징으로 하는 의사 난수를 생성하기 위한 방법.
조항 2. 조항 1의 방법으로, 소정 값 만큼 카운터 값을 증가시키는 단계(블록 424)를 더 갖추어 이루어지는 것을 특징으로 한다.
조항 3. 조항 1의 방법으로, 믹싱 단계의 연속 사이클 동안 입력 값으로서 의사 난수를 이용하는 단계(블록 410)를 더 갖추어 이루어지는 것을 특징으로 한다.
조항 4. 조항 1의 방법으로, 입력 레지스터의 용량을 초과하는 것 없이 가능한 한 여러 번 전체적으로 카운터 값을 반복하는 것에 의해 입력 레지스터를 채우는 단계(블록 404); 및 입력 레지스터가 충만될 때까지 카운터 값의 개별 비트로 입력 레지스터의 소정의 남아있는 미충만 비트를 채우는 단계(블록 406);를 더 갖추어 이루어지는 것을 특징으로 한다.
조항 5. 조항 4의 방법으로, 믹싱 단계(블록 410)는 세그먼트를 연관시키는 것에 의해 카운터 값 입력의 비트-와이즈 형태의 제1 세그먼트를 카운터 값 출력의 비트-와이즈 형태의 제1 세그먼트와 맵핑시키는 것을 특징으로 한다.
조항 6. 조항 5의 방법으로, 믹싱 단계(블록 410)가 가역인 것을 특징으로 한다.
조항 7. 조항 5의 방법으로, 믹싱 단계(블록 410)가 비-선형인 것을 특징으로 한다.
조항 8. 조항 5의 방법으로, 믹싱 단계(블록 410)가 "XOR(exclusive-OR)" 트리 믹싱 함수, 대체-치환 믹싱 함수, 및 이중-믹스 페이스텔 믹싱 함수로 구성되는 그룹으로부터 선택된 함수를 구비하는 것을 특징으로 한다.
조항 9. 조항 1의 방법으로, 믹싱 단계(블록 410)가 병렬 믹싱 함수에서 적어도 2번 카운터 값을 믹싱하는 단계(블록 412)와 병렬 믹싱 함수로부터의 출력을 "XOR"하는 단계(블록 414)를 더 갖추어 이루어지는 것을 특징으로 한다.
조항 10. 조항 1의 방법으로, 일방향 함수에 의해 의사 난수를 처리하거나 암호 해시 함수로 의사 난수를 해싱하는 단계(블록 416); 및 믹싱 함수의 연속 사이클 동안 입력 값으로서 의사 난수의 일방향 처리 또는 의사 난수의 해싱의 결과를 이용하는 단계(블록 418)를 더 갖추어 이루어지는 것을 특징으로 한다.
조항 11. 조항 1의 방법으로, 메모리에 암호화된 데이터를 저장하기 위해 의사 난수를 이용하는 단계(블록 422)를 더 갖추어 이루어지는 것을 특징으로 한다.
조항 12. 카운터 값으로 초기화되는 호출-카운터(블록 402)와; 의사 난수를 생성하기 위해 카운터 값의 비트-와이즈 형태를 믹싱하는 믹싱 함수(블록 410);를 구비하여 구성되는 것을 특징으로 하는 의사 난수를 생성하기 위한 시스템.
조항 13. 조항 12의 시스템으로, 카운터 값이 소정 값 만큼 증가되는(블록 424) 것을 특징으로 한다.
조항 14. 조항 12의 시스템으로, 의사 난수가 믹싱 함수의 연속 사이클 동안 입력 값으로서 기능하는(블록 420) 것을 특징으로 한다.
조항 15. 조항 12의 시스템으로, 의사 난수를 기초로 암호화된 데이터를 저장하는 메모리를 갖춘 저장 장치를 더 구비하고(블록 422), 암호화된 데이터는 암호 키(encryption keys), 수정 값(tweak values), 난스(nces), 및 초기 값(initial values)으로 구성되는 그룹으로부터 선택되는 것을 특징으로 한다.
조항 16. 조항 12의 시스템으로, 믹싱 함수(블록 410)는 세그먼트를 연관시키는 것에 의해 카운터 값 입력의 비트-와이즈 형태의 제1 세그먼트를 카운터 값 출력의 비트-와이즈 형태의 제1 세그먼트와 맵핑시키는 것을 특징으로 한다.
조항 17. 조항 12의 시스템으로, 믹싱 함수(블록 410)는 가역인 것을 특징으로 한다.
조항 18. 조항 12의 시스템으로, 믹싱 함수(블록 410)는 비-선형인 것을 특징으로 한다.
조항 19. 조항 12의 시스템으로, 믹싱 함수(블록 410)는 XOR 트리 믹싱 함수, 대체-치환 믹싱 함수, 및 이중-믹스 페이스텔 믹싱 함수로 구성되는 그룹으로부터 선택되는 것을 특징으로 한다.
조항 20. 조항 12의 시스템으로, 믹싱 함수(블록 410)는 병렬로 동작하는 적어도 2개의 믹싱 함수에 의해 수행되고(블록 412) 적어도 2개의 믹싱 함수로부터의 출력이 XOR되는(블록 414) 것을 특징으로 한다.
조항 21. 조항 12의 시스템으로, 의사 난수가 일방향 함수에 의해 처리되거나 암호 해시 함수로 해싱되고(블록 416); 의사 난수의 일방향 처리 또는 의사 난수의 해싱의 결과가 믹싱 함수의 연속 사이클 동안 입력 값으로서 이용되는(블록 418) 것을 특징으로 한다.
여기에 개시된 장치(들) 및 방법(들)의 여러 예는 다양한 구성요소, 특징, 및 기능을 포함한다. 여기에 개시된 장치(들) 및 방법(들)의 다양한 예는 소정의 조합으로 여기서 개시된 장치(들) 및 방법(들)의 소정의 다른 예의 소정의 구성요소, 특징, 및 기능성을 포함할 수 있고, 모든 이러한 가능성은 본 발명의 의미 및 범위 내로 되도록 고려됨을 이해해야 한다.
여기서 설명된 발명의 많은 변형 및 다른 구현이 상기 설명 및 관련 도면에서 제공된 교시의 이점을 갖추는 것에 관계하는 당업자에게 떠오를 것이다. 따라서, 본 발명은 개시된 특정 구현으로 제한되지 않고 변형 및 다른 구현이 첨부된 청구항의 범위 내에 포함되도록 고려됨이 이해된다. 더욱이, 상기한 설명 및 관련된 도면이 엘리먼트 및/또는 기능의 소정의 예시적 조합의 상황에서 예시적 구현을 설명함에도 불구하고, 엘리먼트 및/또는 기능의 여러 조합이 첨부된 청구항의 범위로부터 벗어나는 것 없이 대안적인 구현에 의해 제공될 수 있음을 이해하여야만 한다. 이와 관련하여, 예컨대, 앞에서 명시적으로 설명된 것 보다 엘리먼트 및/또는 기능의 여러 조합이 또한 몇몇 첨부된 청구항에서 설명될 수 있는 바와 같이 고려된다. 특정 용어가 여기서 채택되었음에도 불구하고, 이는 제한의 목적이 아니라 단지 일반적이고 설명적인 의미로 사용된다.
Claims (13)
- 입력 레지스터, 프로세서 및 메모리를 적어도 구비하는 컴퓨터에 의해 의사 난수를 생성하기 위한 방법으로,
입력 레지스터에 의해 구성되는 호출-카운터를 위한 카운터 값을 초기화하는 단계(블록 402)와;
호출-카운터로부터 믹싱 함수로 카운터 값의 비트-와이즈 형태를 보내는 단계(블록 408); 및
의사 난수를 생성하기 위해 믹싱 함수를 기초로 프로세서에 의해 카운터 값의 비트-와이즈 형태를 믹싱하는 단계(블록 410);를 갖추어 이루어지되,
입력 레지스터의 용량을 초과하는 것 없이 카운터 값을 반복하는 것에 의해 입력 레지스터를 채우는 단계(블록 404); 및
입력 레지스터가 충만될 때까지 카운터 값의 개별 비트로 입력 레지스터의 소정의 남아있는 미충만 비트를 채우는 단계(블록 406);를 더 갖추어 이루어지고,
믹싱 단계(블록 410)는 세그먼트를 연관시키는 것에 의해 카운터 값 입력의 비트-와이즈 형태의 제1 세그먼트를 카운터 값 출력의 비트-와이즈 형태의 제1 세그먼트와 맵핑시키고,
믹싱 단계(블록 410)는 "XOR(exclusive-OR)" 트리 믹싱 함수, 대체-치환 믹싱 함수, 및 이중-믹스 페이스텔 믹싱 함수로 구성되는 그룹으로부터 선택된 함수를 구비하는 것을 특징으로 하는 의사 난수를 생성하기 위한 방법.
- 제1항에 있어서,
소정 값 만큼 카운터 값을 증가시키는 단계(블록 424)와,
믹싱 단계의 연속 사이클 동안 입력 값으로서 의사 난수를 이용하는 단계(블록 410) 중 적어도 하나를 더 갖추어 이루어지는 것을 특징으로 하는 의사 난수를 생성하기 위한 방법.
- 제1항에 있어서,
믹싱 단계(블록 410)가 가역이고,
믹싱 단계(블록 410)가 비-선형인 것 중 적어도 하나인 것을 특징으로 하는 의사 난수를 생성하기 위한 방법..
- 제1항에 있어서,
믹싱 단계(블록 410)가 병렬 믹싱 함수에서 적어도 2번 카운터 값을 믹싱하는 단계(블록 412)와 병렬 믹싱 함수로부터의 출력을 "XOR"하는 단계(블록 414)를 더 갖추어 이루어지는 것을 특징으로 하는 의사 난수를 생성하기 위한 방법.
- 제1항에 있어서,
일방향 함수에 의해 의사 난수를 처리하거나 암호 해시 함수로 의사 난수를 해싱하는 단계(블록 416); 및
믹싱 함수의 연속 사이클 동안 입력 값으로서 의사 난수의 일방향 처리 또는 의사 난수의 해싱의 결과를 이용하는 단계(블록 418);를 더 갖추어 이루어지는 것을 특징으로 하는 의사 난수를 생성하기 위한 방법.
- 제1항에 있어서,
메모리에 암호화된 데이터를 저장하기 위해 의사 난수를 이용하는 단계(블록 422)를 더 갖추어 이루어지는 것을 특징으로 하는 의사 난수를 생성하기 위한 방법.
- 카운터 값으로 초기화되는 호출-카운터(블록 402)와;
의사 난수를 생성하기 위해 카운터 값의 비트-와이즈 형태를 믹싱하는 믹싱 함수(블록 410); 및
입력 레지스터의 용량을 초과하는 것 없이 카운터 값을 반복하는 것에 의해(블록 404), 그리고 입력 레지스터가 충만될 때까지 카운터 값의 개별 비트로 입력 레지스터의 소정의 남아있는 미충만 비트를 채우는 것에 의해(블록 406) 채워지도록 구성된 입력 레지스터;를 구비하여 구성되고,
믹싱 함수(블록 410)는:
세그먼트를 연관시키는 것에 의해 카운터 값 입력의 비트-와이즈 형태의 제1 세그먼트를 카운터 값 출력의 비트-와이즈 형태의 제1 세그먼트와 맵핑시키고;
XOR 트리 믹싱 함수, 대체-치환 믹싱 함수, 및 이중-믹스 페이스텔 믹싱 함수로 구성되는 그룹으로부터 선택되는 것; 중 적어도 하나인 것을 특징으로 하는 의사 난수를 생성하기 위한 시스템.
- 제7항에 있어서,
카운터 값이 소정 값 만큼 증가되는(블록 424) 것을 특징으로 하는 의사 난수를 생성하기 위한 시스템.
- 제7항에 있어서,
의사 난수가 믹싱 함수의 연속 사이클 동안 입력 값으로서 기능하는(블록 420) 것을 특징으로 하는 의사 난수를 생성하기 위한 시스템.
- 제7항에 있어서,
의사 난수를 기초로 암호화된 데이터를 저장하는 메모리를 갖춘 저장 장치를 더 구비하고(블록 422), 암호화된 데이터는 암호 키(encryption keys), 수정 값(tweak values), 난스(nonces), 및 초기 값(initial values)으로 구성되는 그룹으로부터 선택되는 것을 특징으로 하는 의사 난수를 생성하기 위한 시스템.
- 제7항에 있어서,
믹싱 함수(블록 410)는:
병렬로 동작하는 적어도 2개의 믹싱 함수에 의해 수행되고(블록 412) 적어도 2개의 믹싱 함수로부터의 출력이 XOR되는(블록 414) 것을 특징으로 하는 의사 난수를 생성하기 위한 시스템.
- 제7항에 있어서,
믹싱 함수(블록 410)는 가역이고,
믹싱 함수(블록 410)는 비-선형인 것 중 적어도 하나인 것을 특징으로 하는 의사 난수를 생성하기 위한 시스템.
- 제7항에 있어서,
의사 난수가 일방향 함수에 의해 처리되거나 암호 해시 함수로 해싱되고(블록 416);
의사 난수의 일방향 처리 또는 의사 난수의 해싱의 결과가 믹싱 함수의 연속 사이클 동안 입력 값으로서 이용되는(블록 418) 것을 특징으로 하는 의사 난수를 생성하기 위한 시스템.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/961,307 | 2015-12-07 | ||
US14/961,307 US10142103B2 (en) | 2015-12-07 | 2015-12-07 | Hardware assisted fast pseudorandom number generation |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20170067133A KR20170067133A (ko) | 2017-06-15 |
KR102544298B1 true KR102544298B1 (ko) | 2023-06-19 |
Family
ID=58798742
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020160131094A KR102544298B1 (ko) | 2015-12-07 | 2016-10-11 | 하드웨어 지원 빠른 의사 난수 생성 방법 및 시스템 |
Country Status (6)
Country | Link |
---|---|
US (1) | US10142103B2 (ko) |
JP (1) | JP6900176B2 (ko) |
KR (1) | KR102544298B1 (ko) |
CN (1) | CN107017981B (ko) |
SG (1) | SG10201607934XA (ko) |
TW (1) | TWI781911B (ko) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3454318B1 (en) * | 2017-09-12 | 2022-05-11 | eMemory Technology Inc. | Security system with entropy bits generated by a puf |
US10944568B2 (en) * | 2017-10-06 | 2021-03-09 | The Boeing Company | Methods for constructing secure hash functions from bit-mixers |
KR102217865B1 (ko) * | 2017-11-07 | 2021-02-18 | 구글 엘엘씨 | 난수 생성기 |
CN108768615B (zh) * | 2018-05-16 | 2021-04-13 | 济南蓝剑钧新信息科技有限公司 | 散列算法在同一框架下的asic芯片实现方法 |
US11271723B2 (en) * | 2018-11-08 | 2022-03-08 | Daniel Eugene Hale | Apparatus and method for unbreakable data encryption |
US10878133B2 (en) * | 2018-11-18 | 2020-12-29 | Nuvoton Technology Corporation | Mitigation of side-channel attacks using small-overhead random pre-charging |
US11310028B2 (en) | 2019-01-31 | 2022-04-19 | The Boeing Company | Tamper resistant counters |
CN110221810B (zh) * | 2019-03-14 | 2021-05-11 | 西安电子科技大学 | 一种基于细胞自动机的可变结构伪随机数生成方法、装置及系统 |
TWI793429B (zh) | 2019-07-25 | 2023-02-21 | 熵碼科技股份有限公司 | 加密金鑰生成器及傳輸系統 |
CN110928523B (zh) * | 2019-12-04 | 2021-11-19 | 中体彩科技发展有限公司 | 用于彩票行业的随机数获取方法及系统 |
US10979054B1 (en) | 2020-01-14 | 2021-04-13 | Nuvotonn Technology Corporation | Coupling of combinational logic circuits for protection against side-channel attacks |
US11068240B1 (en) * | 2020-06-19 | 2021-07-20 | Panagiotis Andreadakis | Aperiodic pseudo-random number generator using big pseudo-random numbers |
US11907684B2 (en) | 2021-02-16 | 2024-02-20 | Cassy Holdings Llc | High clock-efficiency random number generation system and method |
CN116132036A (zh) * | 2023-02-17 | 2023-05-16 | 上海海事大学 | 基于量子数据压缩的确定性安全半量子通信方法 |
CN118113254A (zh) * | 2023-12-31 | 2024-05-31 | 北京海泰方圆科技股份有限公司 | 一种随机数种子的生成方法、装置、电子设备及介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008276728A (ja) * | 2007-03-30 | 2008-11-13 | Hitachi Ltd | 疑似乱数生成装置及びそれを用いた暗号化処理装置 |
JP2013235174A (ja) * | 2012-05-10 | 2013-11-21 | Nippon Telegr & Teleph Corp <Ntt> | 圧縮関数演算装置、圧縮関数演算方法、およびプログラム |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3119735B2 (ja) * | 1992-10-01 | 2000-12-25 | 松下電器産業株式会社 | ビット攪拌装置 |
KR0168525B1 (ko) | 1996-03-19 | 1999-02-01 | 김광호 | 전화단말장치에서 정보서비스 수행을 위한 자동 다이얼링방법 |
US5909494A (en) * | 1997-02-14 | 1999-06-01 | At&T Corp. | System and method for constructing a cryptographic pseudo random bit generator |
KR100229870B1 (ko) | 1997-05-13 | 1999-11-15 | 윤종용 | 플립형 휴대용 단말기의 플립커버장치 |
US6804355B1 (en) * | 2000-01-06 | 2004-10-12 | Intel Corporation | Block cipher for small selectable block sizes |
WO2002037260A1 (fr) * | 2000-10-24 | 2002-05-10 | Hmi Co., Ltd. | Generateur de nombres aleatoires |
US20030059045A1 (en) | 2001-09-26 | 2003-03-27 | Ruehle Michael D. | Hash-based pseudo-random number generator |
US7227951B2 (en) * | 2001-11-06 | 2007-06-05 | Ntt Docomo, Inc. | Enhanced ANSI X9.17 pseudorandom number generators with forward security |
CA2488514A1 (en) * | 2002-06-06 | 2003-12-18 | Cryptico A/S | Method for improving unpredictability of output of pseudo-random number generators |
US8019802B2 (en) * | 2005-08-24 | 2011-09-13 | Qualcomm Incorporated | Cryptographically secure pseudo-random number generator |
CN100583754C (zh) * | 2005-11-07 | 2010-01-20 | 北京浦奥得数码技术有限公司 | 一种伪随机数生成方法 |
EP1975779B1 (en) * | 2007-03-30 | 2018-03-28 | Hitachi, Ltd. | Encryption device using a pseudorandom number generator |
US20080263117A1 (en) * | 2007-04-23 | 2008-10-23 | Gregory Gordon Rose | Initial seed management for pseudorandom number generator |
US8489659B2 (en) | 2007-10-19 | 2013-07-16 | Schneider Electric USA, Inc. | Pseudorandom number generation |
US8560587B2 (en) | 2008-05-22 | 2013-10-15 | Red Hat, Inc. | Non-linear mixing of pseudo-random number generator output |
US8971530B2 (en) * | 2009-06-24 | 2015-03-03 | Intel Corporation | Cryptographic key generation using a stored input value and a stored count value |
CN102063285A (zh) * | 2010-12-24 | 2011-05-18 | 倍奥锐(北京)科技有限公司 | 一种软件实现的真随机数产生方法 |
WO2014075000A1 (en) * | 2012-11-12 | 2014-05-15 | Cryptography Research Inc. | Methods and systems for glitch-resistant cryptographic discrete-log based signing |
-
2015
- 2015-12-07 US US14/961,307 patent/US10142103B2/en active Active
-
2016
- 2016-09-23 SG SG10201607934XA patent/SG10201607934XA/en unknown
- 2016-09-26 TW TW105131026A patent/TWI781911B/zh active
- 2016-10-11 KR KR1020160131094A patent/KR102544298B1/ko active IP Right Grant
- 2016-11-30 JP JP2016232308A patent/JP6900176B2/ja active Active
- 2016-12-05 CN CN201611102808.6A patent/CN107017981B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008276728A (ja) * | 2007-03-30 | 2008-11-13 | Hitachi Ltd | 疑似乱数生成装置及びそれを用いた暗号化処理装置 |
JP2013235174A (ja) * | 2012-05-10 | 2013-11-21 | Nippon Telegr & Teleph Corp <Ntt> | 圧縮関数演算装置、圧縮関数演算方法、およびプログラム |
Also Published As
Publication number | Publication date |
---|---|
JP6900176B2 (ja) | 2021-07-07 |
US10142103B2 (en) | 2018-11-27 |
JP2017107195A (ja) | 2017-06-15 |
TW201721407A (zh) | 2017-06-16 |
CN107017981B (zh) | 2021-07-13 |
SG10201607934XA (en) | 2017-07-28 |
KR20170067133A (ko) | 2017-06-15 |
US20170163416A1 (en) | 2017-06-08 |
CN107017981A (zh) | 2017-08-04 |
TWI781911B (zh) | 2022-11-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102544298B1 (ko) | 하드웨어 지원 빠른 의사 난수 생성 방법 및 시스템 | |
EP3154217B1 (en) | Scrambled tweak mode of block ciphers for differential power analysis resistant encryption | |
EP3468147B1 (en) | Method for constructing secure hash functions from bit-mixers | |
EP3143720A1 (en) | Differential power analysis countermeasures | |
US9729310B2 (en) | Scrambled counter mode for differential power analysis resistant encryption | |
Bhaskar et al. | An advanced symmetric block cipher based on chaotic systems | |
Atia | Development of a new algorithm for key and S-box generation in blowfish algorithm | |
Al-Saadi et al. | Provably-secure led block cipher diffusion and confusion based on chaotic maps | |
EP3154216B1 (en) | Data dependent authentication keys for differential power analysis resistant authentication | |
Rouaf et al. | Performance Evaluation of Encryption Algorithms in Mobile Devices | |
Liu et al. | Generating dynamic box by using an input string | |
Subramanian et al. | Adaptive counter clock gated S-Box transformation based AES algorithm of low power consumption and dissipation in VLSI system design | |
Penchalaiah et al. | Random multiple key streams for encryption with added CBC mode of operation | |
TWI751153B (zh) | 用於提供基於硬體之快速且安全的擴展和壓縮功能的系統和方法 | |
Abdulwahed | Chaos-Based Advanced Encryption Standard | |
Narayanaswamy et al. | HIDE: Hybrid symmetric key algorithm for integrity check, dynamic key generation and encryption | |
Stanciu et al. | Pseudo-random generator using PUF circuits and Salsa stream cipher | |
Aljahdali et al. | Feistel-inspired scrambling improves the quality of linear congruential generators | |
Karunakaran et al. | FPGA based Fault Analysis for Encrypted Code | |
Sao et al. | Vulnerability of Dynamic Masking in Test Compression | |
Imamah | One Time Password (OTP) Based on Advanced Encrypted Standard (AES) and Linear Congruential Generator (LCG) | |
Dasari | Random Number Generator | |
TIRZHA et al. | Low Power Crypto Core Design using Clock Gating |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |