KR101677557B1 - 통계적 프로세싱 - Google Patents
통계적 프로세싱 Download PDFInfo
- Publication number
- KR101677557B1 KR101677557B1 KR1020147033522A KR20147033522A KR101677557B1 KR 101677557 B1 KR101677557 B1 KR 101677557B1 KR 1020147033522 A KR1020147033522 A KR 1020147033522A KR 20147033522 A KR20147033522 A KR 20147033522A KR 101677557 B1 KR101677557 B1 KR 101677557B1
- Authority
- KR
- South Korea
- Prior art keywords
- data
- module
- processing
- deterministic
- information
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
- G06F15/7821—Tightly coupled to memory, e.g. computational memory, smart memory, processor in memory
-
- 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
-
- 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
- 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/588—Random number generators, i.e. based on natural stochastic processes
-
- 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/14—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
- H04L9/16—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms the keys or algorithms being changed during operation
-
- 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/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F2015/761—Indexing scheme relating to architectures of general purpose stored programme computers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F2015/761—Indexing scheme relating to architectures of general purpose stored programme computers
- G06F2015/763—ASIC
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computational Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Storage Device Security (AREA)
- Stored Programmes (AREA)
Abstract
데이터를 통계적으로 프로세싱하는 시스템, 방법 및 디바이스가 개시된다. 프로세서(processor)상에서 동작하고, 데이터의 통계적 프로세싱을 관리하고 제어하도록 구성된 아키텍트 모듈(architect module); 함수로부터 도출되지 않은 비 결정론적 값들의 스트림을 제공하도록 구성된 비 결정론적 데이터 풀 모듈(non-deterministic data pool module); 각각이 아키텍트 모듈에 의해 요청된 데이터를 통계적으로 프로세싱하도록 구성된, 다수의 기능적 등가 데이터 프로세싱 모듈(functionally equivalent data processing module); 통계적으로 프로세싱될 데이터 세트를 피딩(feeding)하도록 구성되는 데이터 피드 모듈; 메모리 저장 디바이스를 포함하고, 사전 정의된 프로세싱 아키텍쳐(predefined processing architecture)를 복제하고 이용되는 프로세싱 아키텍쳐를 기록하기 위해 아키텍트 모듈에 충분한 정보를 제공하도록 구성된 구조 메모리 모듈이 있다.
Description
본 발명은, 35 U.S.C.§120하에, 2011년 5월 27일자 Patrick Ross에 의해 출원된 미국 가 특허출원번호 61/519,679호에 대한 우선권을 주장하며, 이 출원은 본 명세서에 참조로서 수록된다. 본 발명은 특허 협력 조약 및 파리 협약하에 2012년 5월 29일자 Patrick D. Ross에 의해 출원된 미국 본 특허출원번호 13/482,723호에 대한 우선권을 주장하며, 이 출원은 본 명세서에서 참조로서 수록된다.
본 발명은 정보를 보호하는 방법 및 시스템에 관한 것으로, 특히 정보의 확률 프로세싱을 제공하는 동적 애플리케이션을 생성하기 위한 방법 및 시스템에 관한 것이다.
본 발명은 컴퓨터 게임, 은행 업무, 매체 개발 산업과 같은 다양한 산업에 다양한 방식으로 적용될 수 있을 것이지만, 이에 국한되는 것은 아니다. 본 발명은 그러한 산업에 의해 이용되는 시스템에 이용하기 위한 컴퓨터 하드웨어/소프트웨어에 구현될 수 있다.
많은 애플리케이션들은 그들의 내부 프로세싱의 일환으로서 랜덤 값(random value)들을 필요로 한다. 이들 애플리케이션들 중 일부는 값들의 균일한 분포, 주어진 시드값(seed value)으로부터의 재현성 및 그들이 반복되기 전의 매우 긴 사이클과 같은 단순한 요건을 가진다. 이를 위해, 많은 논문 및 저서들은 이들 클래식 랜덤 값 생성기(classic random value generator)를 제공하는 양호한 하드웨어 및 소프트웨어 기능들을 설명한다. 클래식 랜덤 값 생성기의 그 속성은 유용하면서도 문제가 있다. 현재의 랜덤 값 생성기의 임의의 결점을 처리하기 전에, 이들 생성기가 어떻게 작용하는지를 먼저 검토해야 한다.
모든 클래식 랜덤 값 생성기들은 하드웨어 기반이든 소프트웨어 기반이든 간에, 그들에 대해 공통인 다수의 성질들이 존재한다. 클래식 랜덤 값 생성기의 토대는 정적 랜덤 함수들의 이용이다. 이들 함수들의 각각은, 시퀀스에 있어서 현재의 비-제로 데이터 값을 다음 랜덤 값으로 처리한다. 각각의 새로운 값의 후속하는 프로세싱은 랜덤 시퀀스(random sequence)를 생성하는 것이다. 양호한 함수가 이용된다고 가정할 경우, 랜덤 시퀀스는 랜덤성(randomness)에 대한 거의 모든 알려진 통계적 검사를 통과할 것이다.
많은 랜덤 함수들이 검사되고 공개되었다. 이들 공개된 함수들의 대부분은 랜덤 값들의 동일한 시퀀스를 반복하기 전에 값들의 제한된 시퀀스들을 생성한다. 이러한 짧은 사이클 길이는 많은 애플리케이션과 호환되기에는 너무 짧다. 하드웨어에서는, 랜덤 함수가 LFSR(Linear Feedback Shift Register)로서 가장 빈번하게 설명된다. 보다 적은 소프트웨어 함수들이 존재하지만, 고안자들이 새로운 애플리케이션에 이용하기 위한 다수의 수립된 함수들이 있다.
또한, 통과하든 실패하는 간에, 사이클 길이도 통계적 검사만큼 중요하다. 비 선형 방식으로 다수의 공개된 함수들을 조합하는 것은 사이클 길이를 증가시키기 위한 가장 일반적인 방식이다. 함수 기반 랜덤 값 생성기는 정확하게는 의사 랜덤 생성기라 지칭되며, 여전히 크래킹하기(전도되기) 쉽다. 랜덤 값 생성기를 크래킹하면 공격자는 그 시퀀스에 있어서 각각의 값들을 예견할 수 있게 된다. 경험에 비추어 보면, 클래식 랜덤 함수 복잡도를 2배로 하면, 그것을 깨트리는데 요구되는 노력은 제곱배로 드는 효과를 가진다. 하드웨어 속도의 증가 및 그에 따른 컴퓨터 속도가 증가함에 따라, 랜덤 값 생성기의 고안자와 그들을 깨뜨리기를 바라는 크래커(cracker)간에 군비 경쟁 다툼이 일어난다.
이러한 경험을 수용하여, 하드웨어 고안자들은 항상 복잡한 랜덤 값 생성기 함수를 채택한다. 고안자와 크래커간의 투쟁이 지속되는 이유는 함수 중심의 패러다임이 어쩔 수 없이 불완전하기 때문이다. 그에 의해 새로운 랜덤 값 생성기를 생성하고 검사하고 채용하기 위한 비용은 무제한적으로 되는데, 그 이유는 각각의 새로운 고안이 결국에는 쓸모없게 될 것이기 때문이다. 후속적으로, 보다 높은 반복적 칩 비용은 곧바로 제조 원가로 이어진다. 이러한 경로를 따르는 종점은 알 수 없으며, 그러므로 고안자들은, 그들의 최신 함수가 크래킹(cracking)으로부터 얼마나 오랫동안 안전할지를 예측할 수 없다.
함수 복잡도를 증가시키는 비용은 여러 방식으로 나타난다. 상술한 바와 같이, 하드웨어 군비 경쟁은 어쩔 수 없는 불완전성 문제로서 계속된다. 크랙커보다 앞서기 위한, 하드웨어 기술에 있어서의 각각의 새로운 도약은 통상적으로 그에 대응하는 새로운 생성기 고안을 필요로 한다. 이러한 증가하는 비용은 많은 애플리케이션 고안자가 하드웨어 기반 솔루션을 포기하게 한다. 시스템 비용을 줄이기 위해, 많은 애플리케이션 고안자는 소프트웨어 기반 랜덤 값 생성기에 의존한다. 소프트웨어 솔루션으로 이행하는 프로세스는 성능을 받아들일 수 없을 정도로 저하시키거나 CPU 비용을 증가시키는 경우가 빈번하다. 전용 실리콘 없이 반복 비용은 보다 낮아지지만, 소프트웨어 구현은 전체 시스템 성능에 부담을 준다. 소프트웨어 복잡성이 증가함에 따라, 반대로 성능은 감소된다.
크래킹을 방어하는 노력에 있어서, 많은 고안자들은 비밀(비 공개) 고안에 의지한다. 비밀 개발은 제한된 검사, 검토 또는 재사용을 필요로 한다. 불행하게도, 비밀 개발은 제한된 투자 수익을 담보하는데, 그 이유는, 일반적으로 주어진 소량의 고안은 항상 보다 높은 단가를 수반하기 때문이다. 또한, 누군가가 하드웨어 또는 소프트웨어 견본을 획득할 때까지는 비밀성만이 이들 고안의 무결성을 지속시킨다.
이들 클래식 함수들에 대한 마지막 약점은 단순한 절대 불변의 사실, 즉, 각 랜덤 함수는 그 자신의 랜덤 시퀀스를 생성한다는 사실로부터 도래한다. 환언하면, 랜덤 함수와 그것이 생성하는 값들의 고유 시퀀스는 일대일 대응 관계가 있다. 그 시퀀스는 그의 생성 함수에 대하여 "멜로디(melody)"와 같이 작용한다. 랜덤 "멜로디"는, 값들과, 그 값들이 생성된 순서로서 정의된다. 단지 시드 값만이 "멜로디"가 시작하는 곳을 정의한다.
모든 클래식 랜덤 값 생성기는 스칼라 값(비 제로 시드에서 시작)을 이용하여 그들의 고유 멜로디가 시작하는 포인트를 인덱싱한다. 클래식 랜덤 값 생성기가 정적 함수 기반 구성이기 때문에, 이들 시드값들이 일반적으로 보호되어야 하는데, 그 이유는 그것이 의사 랜덤 시퀀스의 시작을 정의하기 위한 키(key)로서 작용하기 때문이다. 대부분의 경우, 시드 값의 크기는 전체 사이클 길이를 나타내는데 이용된다. 모든 하드웨어 및 대부분의 소프트웨어 기반 클래식 랜덤 값 생성기는 랜덤 값 생성을 시작하기 위해 비-제로 시드값을 필요로 한다. 거의 모든 경우에, 제로 값 시드는 임의 랜덤 스트림을 생성하지 못할 것이다.
크래킹을 방어하기 위한 부질없는 노력에 있어서, 많은 고안자들은 비밀 고안(비 공개)에 의지한다. 비밀 개발은 제한된 검사, 검토 또는 재사용을 필요로 한다. 불행하게도, 비밀 개발은 제한된 투자 수익을 담보하는데, 그 이유는, 일반적으로 주어진 소량의 고안은 항상 보다 높은 단가를 수반하기 때문이다. 또한, 누군가가 하드웨어 또는 소프트웨어 견본을 획득할 때까지는 비밀성만이 이들 고안의 무결성을 지속시킨다. 필요한 것은 실제 랜덤 값 생성기, 비 결정론적 값들의 랜덤 스트림을 유발하는 실제 일방향 함수(true one way function)를 구현하는 것 및/또는 본 명세서에서 설명하는 문제점들 중 하나 이상 및/또는 본 명세서에 익숙한 당업자가 알 수 있는 하나 이상의 문제점들을 해결하는 방법 또는 시스템이다. 그 분야에서 일부 개선된 것들이 있다. 본 발명과 관련된 참조 문헌 예시가 아래에 각자 설명되며, 각 참조 문헌의 보조 교시는 본 명세서에 참조로서 수록된다.
Ross에 의한 미국특허출원공개번호 2011/0029588호는 일 방향 함수를 생성하고 그에 의해 랜덤 값 스트림을 생성하는 시스템 및 방법을 개시한다. 단계들은, 도메인 값 - 임의의 주어진 도메인 값은 모든 가능한 범위 값(range vlaues)에 매핑(mapping)됨 - 에 따라 어드레싱된 다수의 메모리 셀을 제공하고; 메모리 셀들 중 하나와 연관된 랜덤 도메인 값을 생성하고; 생성된 랜덤 도메인 값과 연관된 데이터 값을 판독하고; 추가적인 양의 데이터를 제공함에 의해 동적으로 개선된 데이터를 생성하고; 의심 비-랜덤 부분(suspected non-random portions)을 제거하여 소오스 데이터를 생성하고; 최소 랜덤성 요건에 따라 소오스 데이터를 유효화하여, 유효화된 소오스 데이터를 생성하고; 마스킹(masking), 시간적 변위(displacement-in-time), 카오스 엔진, XOR, 겹쳐 쓰기, 팽창, 제거, 제어 평면 또는 어드레스 평면 모듈인 랜덤 편집 프로세스를 이용하여 유효화된 소오스 데이터를 메모리 셀 위치와 통합시키는 것을 포함한다. 팽창 모듈은 잡음 청크(noise chunk)를 삽입한다.
Ross에 의한 미국특허출원공개번호 2010/0036900호는 일 방향 함수를 생성하여 랜덤-값 스트림을 생성하는 시스템 및 방법을 개시한다. 단계들은, 도메인 값 - 임의의 주어진 도메인 값은 모든 가능한 범위 값(range vlaues)에 매핑(mapping)됨 - 에 따라 어드레싱된 다수의 메모리 셀을 제공하고; 메모리 셀들 중 하나와 연관된 랜덤 도메인을 생성하고; 생성된 랜덤 도메인 값과 연관된 데이터 값을 판독하고; 추가적인 데이터 량을 제공함에 의해 동적으로 개선된 데이터를 생성하고; 의심 비-랜덤 부분(suspected non-random portions)을 제거하여 소오스 데이터를 생성하고; 최소 랜덤성 요건에 따라 소오스 데이터를 인증하여, 인증된 소오스 데이터를 생성하고; 마스킹(masking), 시간적 변위(displacement-in-time), 카오스 엔진, XOR, 겹쳐 쓰기, 팽창, 제거, 제어 평면 또는 어드레스 평면 모듈인 랜덤 편집 프로세스를 이용하여 인증된 소오스 데이터를 메모리 셀 위치와 통합시키는 것을 포함한다. 팽창 모듈은 잡음 청크(noise chunk)를 삽입한다.
지금까지 알려진 발명들은, 사용하기 어렵고, 복잡하고, 고가이고, 이용이 제한적이고, 응용이 제한적이고, 신뢰성이 없고, 결정 가능하고, 확정적이고, 후속하는 랜덤 데이터 세트들에 대해 보다 큰 기간의 프로세싱 시간을 요구하고, 실제 일방향 함수가 되지 못하고, 무단 사용자가 정보를 쉽게 해독할 수 있게 하는 취약성 및 약점을 가지는 것을 포함하는 다수의 단점이 있으며 및 그러한 단점들의 조합을 가진다.
필요한 것은 본 명세서에서 설명하는 문제점들 중 하나 이상 및/또는 본 명세서에 익숙한 당업자가 알 수 있는 하나 이상의 문제점들을 해결하는 방법, 시스템, 장치, 디바이스, 컴퓨터 프로그램, 키트(kit) 및/또는 그들의 조합이다.
이하의 및/또는 첨부된 개시 정보는 임의 무제한적 조합 및 임의 제한된 조합 현태로, 독립적으로 포함될 수 있는 특징, 기능, 구조, 연관성, 접속, 방법, 단계, 혜택, 결과 등의 비 제한적 예시로서 제공되며, 이것은 "해야 함", "항상", "결코 아님", "확실하게" 등과 같은 임의의 반대적인 표현에도 불구하고(그 표현을 포함하여) 그러하다. 제공된 임의 치수는 예시적인 것으로, 당업자가 본 명세서를 읽은 후에 인식할 수 있는 기능적으로 등가인 범주가 암시된다. 제공된 개시는 예언적일 수 있는데, 이는 그렇지 않다고 주장할지라도 그러하다.
본 발명은 현재 기술 수준에 대응하여 개발되었으며, 특히, 현재 이용 가능한 정적(및 그에 따라 결정론적인) 하드웨어 및 소프트웨어 솔루션에 의해 완벽하게 해결되지 못했던 기술적 문제점 및 필요성에 대응하여 개발되었다. 따라서, 본 발명은 정보의 확률 프로세싱을 위한 시스템, 방법 및/또는 디바이스를 포함하되 그에 국한되는 것은 아닌, 하드웨어 또는 소프트웨어에 있어서 동적이고 비 결정론적 솔루션을 생성하는 방법 및/또는 시스템을 제공하도록 개발되었다.
본 발명의 일 실시 예에 따르면, 컴퓨팅 디바이스를 이용하는 정보의 통계적 프로세싱 시스템이 있다. 그 시스템은, 프로세서를 가진 아키텍트 모듈(architect module)을 포함한다. 그 아키텍트 모듈은 데이터의 통계적 프로세싱을 관리하고 제어하도록 구성될 수 있다. 그 아키텍트 모듈은 실행 시간 동안 통계적 아키텍쳐(architecture)를 랜덤하게 변경하도록 구성될 수 있는 실행 시간 수정 모듈을 포함한다. 실행 시간 수정 모듈은 비 결정론적 데이터 풀 모듈(non-deterministic data pool module)로부터 시딩(seeding)될 수 있다. 아키텍트 모듈은 실행 시간 동안 다수의 기능적 등가 데이터 프로세싱 모듈들 중에서 선택하기 위해 랜덤 값을 이용하도록 구성될 수 있다. 아키택트 모듈은 실행 시간 동안에 다수의 기능적 등가 데이터 프로세싱 모듈들 중 하나를 이용하기 위한 실행 지속 시간(run time duration)을 선택하기 위해 랜덤 값을 이용할 수 있다.
그 시스템은, 아키텍트 모듈에 기능적으로 결합될 수 있고, 소정 함수로부터 도출되지 못하는 비 결정론적 값들의 스트림을 제공할 수 있는 비 결정론적 데이터 풀 모듈을 포함할 수 있다. 비 결정론적 데이터 풀 모듈은 URNG 시스템을 포함할 수 있다. 그 시스템은, 아키텍트 모듈에 기능적으로 결합될 수 있고, 각각이 아키텍트 모듈에 의해 요청된 데이터를 통계적으로 프로세싱하도록 구성될 수 있는 다수의 기능적 등가 데이터 프로세싱 모듈을 포함한다.
그 시스템은, 아키텍트 모듈과 기능으로 통신하며 통계적으로 프로세싱되기를 원하는 데이터 세트를 피딩하도록 구성될 수 있는 데이터 피드 모듈을 포함한다. 그 시스템은 메모리 저장 디바이스를 가질 수 있는 구조 메모리 모듈을 포함할 수 있다. 구조 메모리 모듈은 아키텍트 모듈에 결합될 수 있으며, 사전 정의된 프로세싱 아키텍쳐를 복제하고 이용되는 프로세싱 아키텍쳐를 기록하기 위해 아키텍트 모듈에 충분한 정보를 제공하도록 구성될 수 있다. 구조 메모리 모듈은 시간 구조에 따라 구조를 인덱스하는 인덱스 모듈을 포함할 수 있다.
그 시스템은, 비 결정론적 데이터 풀 모듈에 기능적으로 결합되며, 공통 비 결정론적 데이터 풀을 통계적으로 프로세싱하도록 구성되어, 비 결정론적 데이터 풀 모듈에 의한 이용을 위한 애플리케이션 특정 비 결정론적 데이터 풀을 생성하는 공통 데이터 풀 프로세싱 모듈을 포함할 수 있다. 그 시스템은, 데이터 피드 모듈과 통신하며, 데이터 피드 모듈에 통신 프로토콜 맵을 피딩하고, 아키텍트 모듈로부터 통계적으로 프로세싱된 통신 프로토콜 맵을 수신하고, 통계적으로 프로세싱된 통신 프로토콜 맵에 따라 정보 스트림을 변경하도록 구성될 수 있는 통신 프로토콜 인터페이스를 포함한다.
본 발명의 일 실시 예에 따르면, 컴퓨팅 디바이스를 이용하여 정보를 통계적으로 프로세싱하는 방법이 있다. 그 방법은 비 결정론적인 것으로 검증되고 함수로부터 도출되지 못하는 비 결정론적 데이터 풀을 제공하는 단계를 포함한다. 그 방법은 비 결정론적 데이터 풀이 주 10/10 스코어(predominant 10/10 score)로 NIST 검사를 통과함을 검증하는 것을 포함한다. 그 방법은 프로세싱될 정보 스트림을 제공하는 단계를 포함한다. 그 방법은 실행 시간 까지 모든 랜덤화된 데이터 프로세싱 특성들의 선택을 지연시키는 단계를 포함한다. 그 방법은, 프로세서를 이용하여, 기능적 등가 데이터 프로세싱 모듈들 - 각각은 데이터를 변경하도록 구성됨 - 의 세트로부터 제 1 데이터 프로세싱 모듈을 랜덤하게 선택하는 것을 포함한다. 그 방법은 실행 시간 동안 제 1 데이터 프로세싱 모듈의 이용의 랜덤 지속 시간을 결정하는 단계를 포함한다. 기능적 등가 데이터 프로세싱 모듈 세트는 감산, 마스킹, NAND, NOR, OR, XOR, AND 및 가산을 포함하는 데이터 프로세싱 모듈의 그룹으로부터 선택될 수 있다. 그 방법은 비 결정론적 데이터 풀로부터 데이터 프로세싱 모듈을 랜덤하게 선택하는 단계를 시딩하는 것을 포함한다.
컴퓨팅 디바이스를 이용하여 정보를 통계적으로 프로세싱하는 방법은 제 1 데이터 프로세싱 모듈을 이용하여 정보 스트림을 변경하는 단계를 포함한다. 그 방법은, 제 1 데이터 프로세싱 모듈로 정보 스트림을 프로세싱하면서, 기능적 등가 데이터 프로세싱 모듈 세트로부터, 프로세스를 이용하여, 대체 데이터 프로세싱 모듈을 랜덤하게 선택하는 것을 포함한다. 그 방법은 대체 데이터 프로세싱 모듈로 제 1 데이터 프로세싱 모듈을 대체하는 것을 포함한다.
그 방법은 대체 데이터 프로세싱 모듈을 이용하여 정보 스트림을 변경하는 단계를 포함한다. 그 정보 스트림은 사전 정의된 통신 프로토콜에 따라 구성될 수 있으며, 제 1 및 대체 데이터 프로세싱 모듈들의 각각은, 정보 스트림이 사전 정의된 통신 프로토콜의 요건을 충족시키지 못하도록 그 정보 스트림을 충분하게 프로세싱한다. 그 방법은 데이터 프로세싱 모듈의 다수의 랜덤화된 계층들을 통해 정보 스트림이 프로세싱되도록 다수의 데이터 프로세싱 모듈의 이용을 랜덤하게 계층화하는 것을 포함한다.
그 방법은, 제 1 및 대체 데이터 프로세싱 모듈의 이용을 재현하기에 충분한 구조 정보를 기록하는 단계를 추가로 포함한다. 그 방법은, 동일한 시간 인덱스 위치와 동일한 비 결정론적 데이터 풀에서 시작하는 카운트파트(counterpart)에 의한 그 방법의 동작이 정보 스트림을 동일하게 프로세싱하도록, 그 방법의 동작을 시간 인덱스와 연관시키는 것을 포함한다. 그 방법은, 비 결정론적 데이터 풀의 이용 전에, 비 결정론적 데이터 풀을 통계적으로 프로세싱하는 단계를 포함한다. 그 방법은, 또한, 랜덤 값들의 소오스에 대한 각 호출이 각각의 이전 호출과는 다른 소오스로 가도록 랜덤화(randomization)를 관리하는 단계를 포함한다.
본 발명의 일 실시 예에 따르면, 피딩된 정보를 통계적으로 프로세싱하도록 구성된 통계적 프로세싱 디바이스가 있다. 그 디바이스는 프로세서 및 그 프로세서에 기능적으로 결합된 비 휘발성 메모리 디바이스를 포함한다. 비 휘발성 메모리 디바이스는 주 10/10 스코어로 NIST 검사를 통과했음을 검증받는 비 결정론적 데이터의 풀을 포함한다. 그 디바이스는 프로세서에 기능적으로 결합되고 데이터를 수신하도록 구성된 데이터 입력 인터페이스 모듈을 포함한다. 그 디바이스는 프로세서에 기능적으로 결합되고 데이터를 전송하도록 구성된 데이터 출력 인터페이스 모듈을 포함한다.
그 디바이스는, 프로세서에 기능적으로 결합되고 다수의 기능적 등가 데이터 프로세싱 명령 세트를 포함하는 데이터 프로세싱 모듈을 포함한다. 그 디바이스는 프로세서, 데이터 프로세싱 모듈 및 비 휘발성 메모리 디바이스에 기능적으로 결합된 아키텍트 모듈을 포함한다. 아키텍트 모듈은 실행 시간 동안 데이터 프로세싱 모듈을 랜덤하게 선택함에 의해 비 결정론적 데이터의 풀로부터의 시드 값들에 따라 데이터의 통계적 프로세싱을 관리하고 제어하며, 그에 의해 데이터 입력 인터페이스 모듈을 통해 수신된 데이터를 프로세싱하고 데이터 출력 인터페이스 모듈로 통계적으로 프로세싱된 데이터를 제공하도록 구성된다.
일 실시 예에 있어서, 단일의 이전 정적 솔루션은 동일 구현내의 많은 동적 커스텀 솔루션(dynamic custom solution)으로 변환된다. 이러한 새로운 솔루션의 게놈(genome)은 이하의 모듈들 중 하나 이상을 포함하되 그에 국한되는 것은 아닌 다수의 새로운 기술에 기반한다.
· 불확정성 함수 - 일방향 함수
· 불확정성 난수 생성기
· 프로세싱 컴포넌트의 동적 선택
· 필요할 때까지 컴포넌트의 지연된 바인딩(Delayed Binding)
· 컴포넌트의 주문형 리믹싱(Remixing)
· 데이터 실행 구현(Data Driven Implementations)
동적 솔루션의 이러한 새로운 게놈의 실시 예는 많은 바람직한 솔루션을 단순화시킨다. 정적인 "두루 통용되는(one size fits all)" 애플리케이션을 커스텀 솔루션으로 대체하면 현재 미 해결된 많은 문제점이 해결된다.
다른 실시 예에 있어서, 이들 새로운 기술 모두는 랜덤 값을 생성하는 무한 구조적 솔루션(architectural solution)이다. 이러한 유형의 구조적 모델은, 그들의 랜덤 데이터 요건에 기초하여, 매우 낮은 원가 제품에서부터 극도로 요구가 많은 애플리케이션까지 존재한다. 따라서, 우리는 함수 프로세싱 데이터(functions processing data)가 아닌 데이터 모핑 데이터(data morphing data)에 이르게 된다.
또 다른 실시 예에 있어서, 정적 프로토콜을 진화형 프로토콜(evolving protocols)로 모핑하는 방법이 있다. 커스텀 동적 진화형 프로토콜은 해킹(hacking)하는 것이 불가능하다.
또 다른 실시 예에 있어서, 보안 디지털 서명으로 되기 위해 간단한 해쉬 값(hash value)이 개선될 수 있다. "서비스 제공자"만이 이러한 보안 디지털 서명을 지원한다고 하면, 임의의 무단 해쉬값이 무시된다. 따라서, 이들 디지털 서명은 취소 가능한 액세스 제어 형태로 된다. 액세스 제어에 대한 이러한 방식은 임의 아이템, 전화번호, 전자 우편 어드레스, IP 어드레스, 제어 시스템, 금융 거래등으로 확장될 수 있다.
또 다른 실시 예에 있어서, (추후에 정의될) 세션 데이터가 손상된 적이 없다고 가정하면, 커스텀 솔루션의 정확하게 구현된 예시는 동일한 원가의 정적 솔루션보다 전도시키기 어렵다. 이것은, 누구나 동일한 공중 하드웨어/소프트웨어 구현을 이용할 수 있지만 크래킹에 대해 여전히 동일한 방어를 가짐을 의미한다.
본 명세서의 전반에 걸쳐 특징, 장점 또는 유사한 표현에 대한 언급은, 본 발명에 의해 실현될 수 있는 모든 특징 및 장점이 발명의 임의의 단일 실시 예 형태이거나, 단일 실시 예 형태이어야 하는 것을 암시하는 것은 아니다. 그보다는, 그 특징 및 장점을 언급하는 표현은, 실시 예와 관련하여 설명된 특정의 특징, 장점 또는 특성이 본 발명의 적어도 하나의 실시 예에 포함됨을 의미하는 것으로 이해되어야 한다. 따라서, 본 명세서 전반에 걸쳐 특징, 장점 및 유사한 표현의 설명은 동일 실시 예를 언급한 것일 수 있지만, 그 또한 필수적인 것은 아니다.
또한, 본 발명의 설명된 특징, 장점 및 특성은 하나 이상의 실시 예에 임의 적당한 방식으로 조합될 수 있다. 관련 기술의 기술자라면, 본 발명이 특정 실시예의 하나 이상의 장점들 또는 특정의 특징들 없이도 실행될 수 있음을 알 것이다. 다른 예시에 있어서, 본 발명의 모든 실시 예에서 제시하지 않은 추가적인 특징 및 장점이 임의 실시 예에서 인식될 수 있을 것이다. 본 발명의 이러한 특징 및 장점은 이하의 상세한 설명 및 첨부된 특허청구범위로부터 보다 완벽하게 명확해질 것이거나, 이하에서 설명할 본 발명의 실행에 의해 알게 될 것이다.
본 발명의 장점을 쉽게 이해하기 위하여, 상기에서 간단하게 설명한 본 발명의 보다 특별한 설명이 첨부 도면에 도시된 특정 실시 예를 참조하여 이루어질 것이다. 본 발명의 도면은 축척이 아님을 알아야 한다. 도면은 단지 개략적인 것으로, 본 발명의 특정 파라메타를 나타내기 위한 것은 아니다. 도면들은 단지 본 발명의 전형적인 실시 예를 도시한 것으로 그의 범주를 제한하는 것으로 간주되어서는 안되는 것으로 이해해야 하며, 본 발명은 첨부 도면을 이용하여 추가적인 특이성 및 세부 사항과 함께 설명될 것이다.
도 1은 본 발명의 일 실시 예에 따른 통계적 모듈/프로세스의 예시에 대한 소자들의 선택 프로세스를 도시한 흐름도,
도 2는 본 발명의 일 실시 예에 따른 주어진 프로세싱 소자의 검사를 도시한 흐름도,
도 3은 본 발명의 일 실시 예에 따른 정보의 통계적 프로세싱의 시스템을 도시한 도면,
도 4 및 도 5는 컴퓨팅 디바이스를 이용하여 정보를 통계적 프로세싱하는 방법을 도시한 도면,
도 6은 피딩된 정보를 통계적으로 프로세싱하도록 구성된 통계적 프로세싱 디바이스를 도시한 도면이다.
도 1은 본 발명의 일 실시 예에 따른 통계적 모듈/프로세스의 예시에 대한 소자들의 선택 프로세스를 도시한 흐름도,
도 2는 본 발명의 일 실시 예에 따른 주어진 프로세싱 소자의 검사를 도시한 흐름도,
도 3은 본 발명의 일 실시 예에 따른 정보의 통계적 프로세싱의 시스템을 도시한 도면,
도 4 및 도 5는 컴퓨팅 디바이스를 이용하여 정보를 통계적 프로세싱하는 방법을 도시한 도면,
도 6은 피딩된 정보를 통계적으로 프로세싱하도록 구성된 통계적 프로세싱 디바이스를 도시한 도면이다.
본 발명의 원리에 대한 이해를 돕기 위하여, 도면에 도시된 예시적인 실시 예를 참조할 것이며, 그것을 설명하기 위해 특정의 표현이 이용될 것이다. 그렇지만, 그에 의해 본 발명의 범주를 제한하고자 하는 것은 아님을 알아야 한다. 본 개시를 본 당업자에게 일어날 수 있는, 본 명세서에서 설명된 발명적 특징 및 본 명세서에서 설명된 본 발명의 원리의 임의 추가적인 애플리케이션의 임의 변경 또는 수정은 본 발명의 범주 이내인 것으로 간주된다.
명세서에 설명된 많은 기능 유닛들은 그들의 구현 독립성을 보다 특정하게 강조하기 위하여 모듈로서 표시되었다. 예를 들어, 논리 칩, 트랜지스터 또는 다른 이산 컴포넌트와 같은 규격 반도체, 게이트 어레이 또는 커스텀 VLSI 회로를 포함하는 하드웨어 회로로서 모듈이 구현될 수 있다. 또한, 필드 프로그램 가능 게이트 어레이, 프로그램 가능 어레이 로직, 프로그램 가능 로직 디바이스 등과 같은 프로그램 가능 하드웨어 디바이스로 모듈이 구현될 수 있다.
본 명세서에서 설명된 임의 기능, 특징, 장점, 구조 등은 하나 이상의 모듈로 구현될 수 있다. 본 명세서에서 설명된 많은 기능 유닛들은, 그들의 구현 독립성을 보다 특별하게 강조하기 위하여 모듈로서 표시되었다. 예를 들어, 논리 칩, 트랜지스터 또는 다른 이산 컴포넌트와 같은 규격 반도체, 게이트 어레이 또는 커스텀 VLSI 회로를 포함하는 하드웨어 회로로서 모듈이 구현될 수 있다. 또한, 필드 프로그램 가능 게이트 어레이, 프로그램 가능 어레이 로직, 프로그램 가능 로직 디바이스 등과 같은 프로그램 가능 하드웨어 디바이스로 모듈이 구현될 수 있다.
모듈 들은 여러 유형의 프로세서에 의한 실행을 위한 소프트웨어로 구현될 수 있다. 프로그램 가능 또는 실행 가능 코드의 식별된 모듈은, 예를 들어, 객체, 절차 또는 기능부로서 조직될 수 있는 컴퓨터 명령의 하나 이상의 물리적 또는 논리적 블럭을 포함할 수 있다. 그럼에도, 식별된 모듈의 실행 가능성들은 물리적으로 함께 위치할 필요는 없지만, 논리적으로 함께 결합될 때 모듈을 구성하고 그 모듈에 대해 정해진 목적을 달성하는 다른 위치에 저장된 이질적 명령(disparate instruction)을 구비할 수 있다.
실제적으로, 실행 가능 코드의 프로그램 및/또는 모듈은 단일 명령 또는 많은 명령일 수 있으며, 여러 다른 코드 세그먼트들, 다른 프로그램들 및 여러 메모리 디바이스에 걸쳐 분산될 수 있다. 유사하게, 본 명세서에서 설명된 운용 데이터는 모듈내에서 식별되며, 임의 적당한 형태로 구현되고, 임의 적당한 유형의 데이터 구조내에 조직될 수 있다. 운용 데이터는 단일 데이터 세트로서 수집되거나, 다른 저장 디바이스에 걸쳐 분산되는 것을 포함하는, 다른 위치에 걸쳐 분산될 수 있으며, 적어도 부분적으로, 시스템 또는 네트워크상의 단지 전자 신호로 존재할 수 도 있다.
본 명세서에서 설명된 여러 시스템 컴포넌트 및/또는 모듈은, 디지털 데이터를 프로세싱하는 프로세서를 포함하는 호스트 서버 또는 다른 컴퓨팅 시스템; 상기 프로세서에 결합되어 디지털 데이터를 저장하는 메모리; 프로세서에 결합되어 디지털 데이터를 입력하는 입력 디지타이저(input digitizer); 상기 메모리에 저장되고 상기 프로세서에 의해 액세스 가능하며 상기 프로세서에 의해 디지털 데이터의 프로세싱을 지시하는 애플리케이션 프로그램; 프로세서와 메모리에 결합되어, 상기 프로세서에 의해 프로세싱된 디지털 데이터로부터 도출된 정보를 디스플레이하는 디스플레이 디바이스; 및 다수의 데이터 베이스 중 하나 이상을 포함한다. 본 명세서에 설명된 임의 컴퓨터들이 운영 시스템(예를 들어, 윈도우 비스타, NT, 95/98/2000, OS2; UNIX; Linux; Solaris; MacOS 등) 및 전형적으로 컴퓨터와 관련된 종래의 여러 지원 소프트웨어 및 드라이버를 포함할 수 있음을 당업자라면 알 것이다. 컴퓨터는 네트워크에 대한 액세스를 가진 홈 또는 비지니스 환경일 수 있다. 예시적인 실시 예에 있어서, 상업적으로 입수 가능한 웹-브라우저 소프트웨어 패키지(web-browser software package)를 통해 인터넷으로 액세스가 이루어진다.
본 명세서에서 본 발명은 기능 블럭 부품, 스크린 숏(screen shot), 사용자 대화, 임의적 선택, 여러 프로세싱 단계들의 견지에서 설명된다. 본 명세서에서 그와 같이 설명된 것들의 각각은 본 발명의 예시적인 실시 예에 있어서 하나 이상의 모듈일 수 있다. 그러한 기능적 블럭들이 특정된 기능을 실행하도록 구성된 임의 개수의 하드웨어 및/또는 소프트웨어 컴포넌트에 의해 실현될 수 있음을 알아야 한다. 예를 들어, 본 발명은, 하나 이상의 마이크로프로세서 또는 다른 제어 디바이스의 제어하에 여러 기능들을 실행할 수 있는, 예를 들어, 메모리 소자, 프로세싱 소자, 로직 소자, 룩-업 테이블 등과 같은 여러 집적 회로 컴포넌트들을 채용한다. 유사하게, 본 발명의 소프트웨어 소자들은, C, C++, 자바(Java), COBOL, 어셈블러(assembler), PERL, 비주얼 베이직(Visual Basic), SQL Stored Procedures(저장 절차), AJAX, 신장 가능 마크업 언어(XML)와 같은 임의 프로그래밍 또는 스크립팅(scripting) 언어로 구현될 수 있으며, 데이터 구조, 객체, 프로세스들, 루틴들 또는 다른 프로그래밍 소자들의 임의 조합으로 여러 알고리즘이 구현될 수 있다. 또한, 본 발명은 데이터 전송, 시그널링(signaling), 데이터 프로세싱, 네트워크 제어에 대한 임의 개수의 종래 기술을 채용할 수 있음을 알아야 한다. 또한, 본 발명은 JavaScript, VBScript 등과 같은 클라이언트-사이드 스크립팅 언어(client-side scripting language)로 보안 문제를 검출하거나 방지할 수 있다.
추가적으로, 본 명세서에 있어서 많은 기능 유닛 및/또는 모듈들은 다른 기능 유닛 및/또는 모듈들과 "통신" 상태인 것으로 설명된다. "통신" 상태는, 제한되는 것은 아니지만 컴퓨터, 랩탑 컴퓨터, PDA, 모듈 및 다른 유형의 하드웨어 및/또는 소프트웨어와 같은 기능 유닛 및/또는 모듈들이 서로 통신 상태인 임의 방식 및/또는 방법을 지칭한다. 일부 비 제한적 예시는, 네트워크, 무선 네트워크, 소프트웨어, 명령, 회로, 전화선, 인터넷 라인, 위성 신호, 전기 신호, 전기장 및 자기장, 및/또는 펄스 등을 통해, 데이터 및 메터데이터(metadata)를 통신하고, 전송하고 및/또는 수신하는 것을 포함한다.
본 명세서에서 이용된 용어 "네트워크"는 그러한 하드웨어 및 소프트웨어 컴포넌트들을 합체시키는 임의 전자 통신 수단을 포함할 수 있다. 본 발명에 따른 당사자들간의 통신은, 예를 들어, 전화 네트워크, 엑스트라넷(extranet), 인트라넷(intranet), 인터넷, 대화 디바이스의 포인트(세일 디바이스, PDA(Personal Digital Assistant), 셀룰러 폰, 키오스크 등의 포인트), 온라인 통신, 오프-라인 통신, 무선 통신, 트랜스폰더 통신, LAN(Local Area Network), WAN(Wide Area Network), 네트워크형 또는 링크형 디바이스 등과 같은 임의 적당한 통신 채널을 통해 달성될 수 있다. 또한, 본 발명이 TCP/IP 통신 프로토콜로 구현된다 할지라도, 본 발명은 IPX, Appletalk, IP-6, NetBIOS, OSI 또는 임의 수의 기존의 또는 미래의 프로토콜을 이용하여 구현될 수도 있다. 네트워크가 예를 들어 인터넷과 같은 공중 네트워크와 비슷하면, 네트워크가 불안전하다고 추정하여 도청자에게 개방하는 것이 바람직할 수 있다. 인터넷과 연관되어 이용되는 프로토콜, 표준 및 애플리케이션 소프트웨어에 관한 특정 정보는, 통상적으로 당업자에게 알려져 있으며, 그러므로, 본 명세서에서는 상세하게 할 필요가 없다. 예를 들어, DILIP NAIK, INTERNET STANDARDS AND PROTOCOLS(1998); JAVA 2 COMPLETE(저자가 여러 명임, Sybex 1999); DEBORAH RAY AND ERIC RAY; MASTERING HTML 4.0(1997); 및 LOSHIN, TCP/IP CLEARLY EXPLAINED(1997)을 참조하면 되는데, 그들의 내용은 본 명세서에 참조로서 수록된다.
본 명세서의 전체에 걸쳐 "실시 예", "예시" 또는 유사한 표현에 대한 언급은, 실시 예와 관련하여 설명된 특정의 특징, 구조, 특성 또는 그들의 조합이 본 발명의 적어도 하나의 실시 예에 포함됨을 의미한다. 본 명세서 전반에 걸쳐 "실시 예", "예시" 또는 유사한 표현이 있을 경우, 그 모든 것은 동일한 실시 예, 다른 실시 예 또는 하나 이상의 도면을 지칭하는 것이지만, 반드시 그런 것은 아니다. 추가적으로, 2 이상의 특징, 소자 등에 대해, 용어 "실시 예", "예시" 등의 언급은, 그 특징이 필수적으로 관련되거나, 다르거나, 동일하다는 것을 의미하는 것은 아니다.
실시 예 또는 예시의 각각의 진술은, 각 실시 예의 특징을 나타내는 유사하거나 동일한 표현의 임의 사용에도 불구하고, 실시 예의 임의 다른 진술과 무관한 것으로 간주되어야 한다. 그러므로, 일 실시 예가 "다른 실시 예"로서 식별되는 경우, 식별된 실시 예는 용어 "다른 실시 예"를 특징으로 하는 임의 다른 실시 예와 무관하다. 본 명세서에서 설명된 특징, 기능 등은, 청구범위 및/또는 기술이 직접적으로, 간접적으로, 암시적으로 또는 명확하게 유도함에 따라 이것 저것이 전체적으로 또는 부분적으로 조합될 수 있는 것으로 간주된다.
본 명세서에서 이용된 "구비하는", "포함하는", "함유하는","~인", "특징으로 하는" 및 그와 문법적으로 등가인 표현들은 추가적인 언급되지 않은 소자 또는 방법 단계들을 배제하는 것은 아닌 포괄적 또는 제한이 없는 용어이다. "구비하는"은 보다 제한적인 용어인 "구성되는" 및 "필수적으로 구성되는"을 포함하는 것으로 해석되어야 한다.
대수학(Algebra)을 채용하여 미적분학(Calculus) 문제를 해결하기는 어렵다. 이러한 수학적 툴은 다른 유형의 문제, 동적 대 정적의 문제를 다루도록 고안된다. 알아야 할 것은, 문제를 해결하기 위해 부정확한 툴을 적용할 때마다, 어쩔 수 없이 차선의 해법에 만족해야 한다는 것이다. 현재, 하드웨어 및 소프트웨어 개발은 좁은 기능성 범위, 통상적으로 정적 및 그에 따른 결정론적 범위내에 해법을 국한시키고 있다. 대수학처럼, 이들 구현들은 일부 문제를 해결하는데 매우 양호하다. 그러나, 그들은 동적 해법에 의해 보다 나은 답이 구해지는 문제를 다루도록 요청될 경우에는 여전히 부적절하다. 동적 해법에 초점을 맞추기 전에, 통상적으로 정적 해법에 국한시키는 현재 수학을 우선 검토해야 한다.
불확정성 함수
"확정성"의 원리는 수학 분야의 가장 중요한 특징이다. 확정성에 의해, 전통적인 수학은 입력 값(도메인 값)이 특정 출력(범위 값)을 역학적으로 계산하는데 이용되는 함수를 제공한다. 지금까지는, 계산의 역학적 본질에 기인하여, 통상적으로 이러한 프로세스가 항상 임의 도메인 값을 제공받은 결정론적(범위) 값으로 결과하였다. 이러한 결정론적 함수의 진리는 수백년 동안 지속되었다.
확정성의 효과는 중대한 암호 결함으로서 인식될 수 있으며, 특히 그것이 난수 생성으로 된 경우에 더욱 그러하다. 많은 사람들은 함수 계산의 정상적 확정성을 깨트리기 위해 약간의 "엔트로피(entropy)"(잡음)를 주입함에 의해 이러한 확정성이 감소되는 해법을 제안하였다. 이러한 해법은 중대한 개선이지만, 수학적 확정성이라는 트랩(trap)을 피하기에는 여전히 부족하다.
대수학의 학생으로서, 우리 모두는 등 부호(equal sign)의 신성 불가침적 보존에 의해 교육 받고, 시험받고, 학점을 받고, 승급된다. 각각의 후속하는 수학 수업은 이러한 점을 계속적으로 반복한다. 통상적으로, 방정식의 우측을 조작하는 것과 동일한 방식으로 방정식의 좌측을 조작해야만, 양측을 동일하게 유지시킬 수 있다.
수세기에 걸친 함수 이용 후, 결정론적 함수들만이 발견되었다. 따라서, 결정론적 함수만이 존재한다고 간주한다. 이러한 오랜 역사 및 공통의 수학 훈련은 비 결정론적 함수들의 가능성을 인식하지 못하게 한다. 도메인과 영역간에는 3가지 가능한 관계 매핑들, 즉, 일대일(전통적 함수를 위한 도메인-영역 매핑), 다대일(해쉬 함수에서 발견된 것과 동일한 영역에 대한 많은 다른 도메인들의 매핑) 및 도메인-영역 매핑(일대다)에 대해 누락된 관계가 존재한다.
따라서, 누락된 일대다 도메인-영역 매핑이 왜 중요하게 되었나? 전통적인 함수가 결정론적이고 그러므로 가역적(invertible)인 반면, 이러한 새로운 함수 클래스는 비 결정론적이고 비 가역적이다. 도메인 값으로부터 확정성을 생성할 수 있기만 하는 전통적인 함수와는 다르게, 이러한 새로운 함수 클래스는 "불확정" 범위 값을 제공한다. 그래서, 이러한 새로운 함수계(function family)의 각 구성체(member)를 불확정성 함수라 지칭한다.
아무도 불확정성 함수를 전도시킬 수 없는 이유를 입증해보자. 많은 전통적인 함수의 그래픽도(graphical plot)가 있다. 이러한 전통적인 도면은 임의 범위값이 그의 도메인 값으로 다시 매핑될 수 있음을 입증한다. 이와 대조적으로, 각각의 불확정성 함수 도메인 값은 모든 불확정성 함수 범위 값으로 매핑된다. 한 도메인 값의 그래픽도는 수직 라인이다. 그러므로, 모든 유효 도메인 값의 그래픽도는, 불확정성 함수의 도면이 완전히 "블랙"임을 보여준다. 이러한 블랙 그래픽도는, 범위 값이 도메인 값에 독립적임을 의미한다. 따라서, 임의 주어진 범위 값을 생성했던 고유 도메인 값을 아무도 발견할 수 없다. 불확정성 함수는 불확정성 수학의 기초이다. 이러한 함수 클래스는, "불확정성"이 데이터로부터 비 결정론적 카오스 동작으로 확장될 수 있다는 생각이 들게 한다. 이들 카오스 동작은 고유할 수 있는 동적 커스텀 해법을 생성하기 위한 수단을 정의한다.
따라서, 왜 대수학, 도메인 대 범위 관계 및 그래픽 도에 대해 이야기하나? 놀랍게도, 모든 현재의 디지털 제품들은 이미 불확정성 함수를 이용한다. 이들 제품 고안자들의 어느 누구도 수학적 암시를 인식한 적이 없다. 이러한 함수는 보다 일반적인 이용에 의해 단순히 RAM(Random Access Memory)으로 알려져 있다. 랜덤 데이터로 충진된 버퍼내의 메모리 셀의 판독은 비 결정론적 값을 생성한다. 각각의 유효 메모리 어드레스는, 임의 가능한 범위 값을 포함할 수 있는 메모리 셀에 매핑된다. RAM(불확정성 함수)의 그래픽도는 블랙이다. 메모리(범위) 값을 제공받은 메모리 어드레스(도메인 값)는 예측될 수 없다. 이것은, 확정성의 수학을 뛰어넘는 엄청난 개선이다.
불확정성 함수내에서 이용되는 메모리 버퍼를 "불확정성의 풀"이라 한다. 이러한 풀로부터의 각각의 판독은 불확정 데이터라고 하는 비 결정론적 값을 생성한다. 불확정 데이터는, 그의 참값(true value)을 알지 못하면 및 알지 못한 경우에만 "불확정한"채로 유지된다. 그러므로, 불확정성의 풀로부터 값들이 공개되는 것은 "그 풀의 콘텐츠를 노출시키지 않고 데이터 풀로부터 어떻게 판독할 것인가?"라는 파라독스(paradox)를 제공한다. 이러한 논점은 데이터 파라독스를 정의한다.
불확정성 함수는 필요하지만, 그것만으로, 데이터 파라독스를 처리하기에는 충분하지 않다. 불확정성 함수 이후 첫번 째 기능적으로 완전한 기술은 비 결정론적 URNG(Uncertainty Random Number Generator)의 생성이다. 불확정성의 풀의 무결성을 보호하기 위하여 2개의 추가적인 데이터 파라독스 기술이 필요하다.
데이터
파라독스에
대한 반어적 해법(
ironic
solution
) ...
불확정 데이터의 속성은 데이터 파라독스를 생성하지만, 이와 동일한 속성은 반어적 해법, 즉, 풀로부터 2개의 불확정 데이터 값들을 랜덤하게 선택하고 그들을 함께 가산하면 새로운 불확정한 값으로 된다는 해법을 도모한다. 다수의 서로 다른 모체 세트(different sets of parents)가 동일한 값을 유발할 수 있으므로, 이러한 새로운 값은, 그의 모체들(parents)의 값들로부터 "분리"된다. 그러므로, "불확정성"의 속성은 차세대 값들(next generation of values)로 이월된다. 그래서, 제 1 세대 불확정 데이터가 노출되어서는 안되지만, 그것으로부터 프로세싱된 후속 세대는 공개될 수 있으며, 그에 따라 데이터 파라독스가 해결된다. 랜덤하게 선택된 불확정 값들이 대부분 이진 또는 보다 높은 연산자들로 프로세싱되는 한, 그 결과는 비 결정론적이다. 이러한 방식으로, 우리는 함수 프로세싱 데이터가 아닌 데이터 모핑 데이터에 도달하게 된다. 사실상 수학적 확정성에서 벗어났다.
후속 세대로부터 제 1 세대의 불확정 데이터를 감추거나 분리시키는 프로세스를 분리 프로세서라 한다. 초기에는, 분리 프로세스의 첫번 째 예시가 불확정성 함수 범위 값에 적용되었다. 불확정성 풀의 무결성을 보호하는 작업을 완료하기 위해서는, 도메인(메모리 어드레스 값) 및 범위 값들이 분리되어야 한다.
불확정 데이터의 제 1 세대는 고정 크기를 가지지만, 후속 세대는 임의 크기일 수 있다. 은유적으로 말하면, 이 "풀"은 얼마나 많은 프로세싱을 투자하려고 하는지에 따라 불확정성의 호수, 만, 심지어는 대양으로 증폭될 수 있다.
정적 함수 또는 프로세스들은 통상적으로 항상 결정론적(예측 가능한) 동작으로 이어진다. 이러한 동작을 극복하기 위하여, 우리는 유일한 순수 비 결정론적 수단인 불확정 데이터에 손을 내민다. 내부(URNG) 함수로부터 결정론적 동작을 세척하기 위하여 이러한 수단을 레버리징(leveraging)해야 한다. 이와 같은 다수의 레벨화된 세척 노력에 의해 불확정성의 풀의 크기에 제한받지 않은 비 결정론적 난수 생성기가 도출된다. 특히, 랜덤 편집 프로세스의 환경내에서 불확정 데이터를 이용함에 의해 어드레스 및 데이터 모두를 분리시킨다.
URNG
의 개요
각 URNG의 개요는 3 단계를 가진다. URNG가 시작되면, 우리는 단지 2개의 초기 소재, 즉 불확정성의 원시적 비 결정론적 풀(pristine, nondeterministic pool of uncertainty)과 터무니없이 결정론적인 의사 난수 생성기(Pseudo-Random Number Generator: PRNG)의 집합만을 가진다. 이러한 소재로부터, 우리는 내부 이용을 위한 중간 툴을 구축해야 한다. 제 1 툴은 불확정 스트림이다. 이 스트림은, 임의 양호한 PRNG가 불확정성 풀로부터의 판독을 위해 어드레스 생성기로서 적용될 때 생성되며, 그에 의해 불확정 값들의 미 가공(raw), 파라독스 불안전(paradox unsafe), 랜덤 스트림을 제공한다.
다음 중간 툴은 불확정 스트림을 이용한다. 랜덤 편집 프로세스에 대한 입력으로서 다른 독립적인 PRNG ?? 불확정 스트림을 이용하면, 불확정성 함수에 대한 도메인 값으로 되는 비 결정론적 데이터 풀 어드레스가 획득된다. 이와 같이 상대적으로 "세척된" 도메인 값을 이용하는 동작은 더 이상 생성 이력의 증거를 반영하지 않은 불확정성 함수 범위 값을 생성한다.
마지막 단계는 범위 값의 데이터 파라독스를 해결한다. "세척된" 도메인 값을 통해 2개의 범위 값이 주어지고, 하나의 미 가공 불확정 값이 주어지면, 범위 값의 분리를 완료할 수 있다. 요약하면, 불확정 데이터의 반복적 이용은 중간 툴(intermediate tool)내에서 발견된 결정론적 동작의 일부/대부분/전부를 세척한다. 비 결정론적 어드레스들은 불확정성 함수에 대한 파라독스 안전 도메인 값으로 되었다. 불확정성 함수로부터 어드레스(도메인 값) 및 데이터(범위 값) 모두를 분리함에 의해, 비 결정론적 난수 생성기의 필수적 목표가 달성된다.
정확하게 구현된 URNG는 클래식 PRNG에 비해 큰 장점을 가진다. 특히, 크래킹에 대한 전체적인 방어는 함수의 복잡성으로부터 도출되지 않는다. 대신에 그것은 불확정한 데이터의 단순성으로부터 도출된다. 이와 같은 본래 개인용인 난수 생성기는 많은 애플리케이션을 가능하게 하는 새로운 기술의 전체 범위를 원조한다.
"하드웨어 선택기" 또는 "마스크 생성기"는 새로운 값을 생성하기 위해 2개의 입력 값(데이터 0, 데이터 1)으로부터 비트들을 취한다. "마스크"에 있어서의 각 "0" 비트는 데이터 1로부터 대응하는 비트를 취한다. "마스크"값에 의해 특정된 파괴적 편집값은 이하의 결과를 생성한다:
; 데이터 0 및 데이터 1이 결정론적일 수 있지만, 마스크가 비 결정론적이면(미 가공 불확정 데이터), 그 출력에 있어서 마스크를 볼 수 없는 한, 그 결과는 비 결정론적(파라독스 안전 값)이다.
마스크
URNG
마스크 URNG를 이해하기 위하여 아래의 10 라인 C 절차가 검토된다. 이러한 코드 예시(urng_value)는 상술한 3-단계 프로세스와 등가이다. 섹션 "C 헤더"는 임의 누락된 세부 사항을 완성한다.
카오스 행위에 대한 소개
랜덤 데이터, 시드 값, 마스크 값, 함수 선택기 및 명령과 불확정 데이터는 URNG내에서 여러 역할을 한다. 다시 한번, 외견상 사소한 생각이 지대한 영향을 미친다. 불확정성의 철학은 많은 프로그래밍 결정이 실행 때까지 지연되는 데에 영향을 주며, 그 포인트에서 그들은 랜덤 데이터에 의해 실행된다. 랜덤성이 프로그램 실행시에 중요한 역할을 함에 따라, 애플리케이션에 미치는 전체 영향은 그것이 덜 결정론적으로 된다는 것이다.
데이터 파라독스를 해결하는 함수들의 집합이 제공되면, 랜덤 데이터는 어느 함수가 실행될 것인지를 선택하는데 이용된다. 함수들의 그룹은, 랜덤 데이터가 명령(즉, 함수 선택기)으로서 이용될 경우 리스트를 채우기 위해 선택될 수 있으며, 그 결과는 서로 다른 함수들간의 동적 절환이다. 따라서, 실행될 가능한 함수의 동적 생성은 카오스 엔진으로 된다. 언제라도, 리스트내의 함수는 대체될 수 있으며 또는 전체 리스트는 랜덤 데이터를 통해 실행 시간에 동적으로 재생성됨을 알아야 한다. 이러한 리스트의 복원은 랜덤 간격으로 루틴(routine)하게 일어난다.
모든 랜덤 편집 프로세스와 같이, 출력 스트림에서 명령 및 편집 스트림의 어느 것도 볼 수 없지만, 그 값들은 불확정성의 풀로부터 도출된다(즉, 독립적 불확정 스트림). 이하의 예는 간단한 16 명령 카오스 엔진(이하 참조)이다: 카오스 엔진의 예시에 있어서, 각 "명령"은 3개의 피연산자(data0(데이터 0), data1(데이터 1) 및 mask value(마스크 값))이다. 이 값들은 "결과(Result)"로 프로세싱된다. 알겠지만, 모든 명령이 마스크 값을 이용하는 것은 아니다.
가능한 명령 세트는 16보다 훨씬 크고, 이 리스트를 생성하기 위해 불확정 데이터가 이용되었음을 이해할 것이다(리스트에 있어서의 순서 및 이용할 명령). 이러한 비 결정론적 카우스 행위의 풀-스케일 구현은 URNG에 대해 수백만의 고유 데이터 실행 명령을 생성하였다. 따라서, 불확정 데이터의 비 결정론적 본질이 비 결정론적 카오스 행위로 바뀐다. URNG내의 카오스 소프트웨어는 데이터 모핑 데이터의 다른 예시이다.
카오스 엔진의 보편적 철학으로서, 임의 개수의 공통 파라메타하에 임의 함수가 적용될 수 있다. 이러한 데이터 실행 카오스 소프트웨어는 임의 수의 재생 가능 확률 시스템을 생성하는데 이용될 수 있다. 불확정성의 풀 또는 다른 예로는 URNG로부터의 고유 랜덤 데이터를 이용하여 카오스 엔진을 맞춤화할 수 있다. 카오스 소프트웨어의 일반적인 애플리케이션은 통계적 프로세싱에 대한 섹션에서 다루어진다.
간단한 시뮬레이션이 구현 파라메타들의 정확한 선택을 안내해야 한다. 이러한 마스크 URNG에서는, 불확정 마스크 값을 통한 파괴적 편집 값만이 분리 프로세스에서 이용된다. 실용적이긴 하지만, 이러한 낮은 원가의 URNG는 소형 불확정성 풀에 유용하지 않을 수 있다. 카오스 엔진의 훨씬 나은 해법이 발견될 수 있다. 카오스 URNG는 상당히 큰 불확정성 풀로부터 대량의 랜덤 데이터를 제공한다.
카오스
URNG
카오스 URNG를 이해하기 위해 아래의 짧은 C 절차가 검토된다. 섹션 "C 헤드"는 임의 누락된 세부 사항을 완성한다.
오늘날에는, 수천 개의 함수 실행 RND 들만이 알려져 있다. 함수 실행에서 데이터 실행 RNG로의 절환은, 랜덤성에 대한 검사 세트인 NIST(National Institute of Standards and Technology)(800-22)를 통과할 수 있는 수 조의 고유 RNG가 있음을 의미한다. 8/10의 점수로 NIST 검사를 통과할 수 있지만, 10/10 데이터 풀을 가진 각각의 URNG는 거의 모두 10/10 점수를 받는다.
난수 생성기의 비교
* 불확정성 함수의 어드레스 가능성(adressability)은 풀 어드레스가 불확정성의 풀에 영향을 주지 않고 조작될 수 있음을 의미한다. 그러므로, 많은 서로 다른 어드레싱 모듈이 동일 풀에 적용될 수 있다.
현재 1회의 데이터 교환은 공통 URNG 구현을 가진 임의의 또는 모든 암호 키 교환을 대신할 수 있을 것이다. 그 데이터 교환은 난수 생성기를 효과적으로 교환할 수 있다. 따라서, 고유 주문 키 생성은 이전에 키 교환을 요구했던 임의 프로세스를 대신한다. 매체의 물리적 교환으로부터 임의 무선 전달 형태로 데이터를 교환하기 위한 무한한 방식들이 있다. 그 수단이 무엇이든지, 동일 데이터를 소지한 각 당사자는 동일 랜덤 스트림을 생성하기 위한 수단을 소지한다.
임의의 능동적 접속, 인프라구조 또는 추가적인 인증을 요구하지 않은 분산된 동일 난수 생성기의 이용은 많은 프로토콜의 상당한 간소화를 나타낸다. 또한, 통계적 프로세싱에 적용될 때, 그 효과는 커스텀 애플리케이션/솔루션의 교환을 나타낸다.
고립된 비휘발성 저장부를 가진 URNG 구현이 주어지면, 랜덤 데이터의 1회 적재는 효과적인 하드웨어 캡슐화(encapsulation)를 제공한다. 이러한 영구 보호 구현은 임의 수의 애플리케이션들에서 이용하기 위한 랜덤 스트림을 제공할 수 있다.
128K바이트 메모리 버퍼는 10300, 000값보다 훨씬 많은 21048576 고유값을 유지한다. 이들 값들의 모두가 통계적 유효성 프로세스를 통과하기에 충분할 정도로 랜덤하게 되는 것은 아니지만, 그들 중 상당 수가 통과된다. 기술 구현이 오락 가락 하지만, 양호한 랜덤 데이터는 "영원히(ageless)" 남는다. 풀이 미지(unknown)로 남는 한, 임의의 적절하게 구현된 URNG는 랜덤 출력 스트림의 분석에 의해 크래킹되지 않을 것이다. 난수 생성기는 복잡한 구현보다는 데이터에 기반하여 단독으로 크래킹을 방어한다.
시기(
its
about
time
...)
불확정성 함수에 적용된 도메인 값은 불확정성 풀내로의 미세 결정립 어드레싱(fine grain addressing)을 나타내지만, 타임스탬프는 불확정 값들의 서로 다른 스트림들 간에 보다 큰 불연속 점프를 나타낸다. 시간이 이벤트의 인간적 척도에 대해 상대적이라고 생각하기 쉽다. 예를 들어 마이크로초 또는 천년과 같이, 우리가 통상적으로 다루는 것보다 훨씬 작거나 큰 시간 간격은 우리에게 별 의미가 없다. 우리의 인지 한계에도 불구하고, 불확정성 기술들의 도처에서 시간은 필수적인 것으로 된다. 시간의 속성은 많은 애플리케이션에서 태핑(tapping)된다. 불확정성의 원리의 견지에서 그들의 역할을 이해할 수 있도록 이들 시간 속성을 검토하는 것은 유익하다. 통상적으로, 타임스탬프는 항상 일부 제로 포인트에 대해 스칼라 값을 나타낸다. 아날로그/하드웨어 시계는 일부 유형의 "비트 카운트"를 제시한다. 소프트웨어에 있어서, 본 명세서에서 그의 내용이 참조로서 인용되는 특허 5,526,515호의 경우에서 처럼, 타임 스탬프 증가가 실 세계의 "비트 카운트"에 항상 매핑되는 것은 아니다. 타임스탬프들간의 차이는 임의 값으로 계산될 수 있지만, 시간의 기본 모델은 일반적으로 항상 "단조적으로"증가하는 방식으로 이동한다.
증가하는 시퀀스 번호(많은 디지털 프로토콜에서 발견됨)는 타임스탬프의 공통이지만 통상적으로 인식하지 못하는 형태를 표시한다. 이들 시퀀스 번호가 시간의 실 세계 관점(real-world view of time)으로 매핑되지 못하더라도, 그들은 앞으로 이동하는 시간을 정당하게 측정할 수 있다. 이것은, 불확정성 기술들의 도처에서 이용되는 시간 형태들 중 하나를 나타낸다.
메모리 어드레싱은 타임스탬프를 어드레싱 계산과 혼합시킴에 의해 개선될 수 있으며, 그에 의해 기초 불확정성 함수가 시간의 함수로서 실행되는 것으로 재구성된다. 시간이 불연속 점프에 의해 단조적으로 계속 증가하기 때문에, 동일한 시간 기반 랜덤 스트림이 임의 다른 값의 시간 동안에 나타나서는 안 된다.
진화 시간(evolving time)과 소오스 파일을 조합하면, URNG의 각 예시마다 고유 랜덤 시퀀스가 획득된다. 이것은, 랜덤 시퀀스가 동일 소오스 파일의 연속적인 태핑에 대해 완전하게 "카오스"적임을 의미한다. 불확정성의 고유 풀의 연속적인 생성은 랜덤 시퀀스의 임의 형식적인 분석을 차단한다/가로막는다.
불확정 시간 모델은 임의 타임스탬프를 URNG 시드값으로 재생 가능하게 변환하는데 이용된다. 무제한적 구조적 개념으로서, 가능한 시간 모델들이 무한하게 있다. 타임스탬프는 보다 친숙한 시간 측정으로 매핑되거나 그렇지 않을 수 있다. 이들 시간 모델은 소오스 파일의 일부로 된다. 소오스 파일이 생성될 때마다, 불확정 시간 모델은 불확정 랜덤 값을 통해 생성된다. 시간에 있어서의 불확정 제로 포인트가 선택된다. 임의 입력 타임스탬프는, 일반적으로, 시간에 있어서의 불확정 제로 포인트로부터의 "알 수 없는" 오프셋(델타)을 나타낸다. 시간에 있어서의 제로 포인트와 타임스탬프간의 차이는 날(day), 시간, 분, 초, 밀리초와 같은 (임의적인) 단위를 통해 표현될 수 있다. 시간 모델내에서, 시간의 각 지원된 단위마다 불확정 스케일링 계수(uncertain scaling factor)가 선택된다. 각각의 지원된 시간 단위를 스케일링하고, 후속적으로 그들을 시드로 되는 값들과 합산함에 의해 요구된 URNG 시트 값이 계산된다. 이러한 방식으로, 불확정 시간 모델을 통해, 개인 시드 값을 정의하는데 공중 타임스탬프가 이용될 수 있다. 그러므로, (소오스 파일내의) 동일한 시간 모델을 공유하는 누구라도 동일 랜덤 스트림을 생성할 수 있다. 이들 시드 값들은 불확정성 풀로의 2개의 시작 인덱스들을 나타내며, 그 값들은 (이하에서 설명할) 데이터 합동 생성기에서 발견된다. 이러한 첫번째 어드레싱 함수로부터, 모든 다른 초기화 값들이 불확정성 풀로부터 판독된다.
예를 들어,
이다.
통계적 프로세싱
동적 애플리케이션은 많은 솔루션을 단순화시킨다. 통계적 프로세싱의 방법론은 동적 하드웨어 또는 소프트웨어 애플리케이션을 생성하기 위한 무제한적 구조적 수단을 제공한다. 많은 경우에, 이들 동적 구현의 전개는 많은 통용되는(바람직한) 솔루션을 재정의한다. 동적 애플리케이션에 의해서만 효과적으로 해결될 수 있는 추가적인 클래스의 문제들이 있다. 동적 디지털 프로토콜에 대한 예시적인 실시 예는 동적 애플리케이션을 요구하는 클래스의 문제이다.
현재의 소프트웨어 개발 프로세스는 어떻게든 애플리케이션을 생성하도록 결합된 수제 코드 유닛의 잘 아는 모델로 안정화되었다. 랜덤성의 효과적 이용은 나머지 소프트웨어 개발을 진보시키지 못했다. 흠결이 있는 랜덤성 기술의 현재의 전개는 그의 진실한 잠재력을 활용하지 못한다. 현재의 랜덤성의 애플리케이션은 주로 게임(도박), 비디오/컴퓨터 케임 및 시뮬레이션에 있어서의 반복 동작을 감소시키는 것으로 제한되어 있다.
랜덤성의 보다 강력한 애플리케이션은 갱신을 동적으로 생성함에 의해 애플리케이션의 실행 시간 증가를 지원할 수 있다. 갱신의 동적 실행은 기본 애플리케이션을 고유한 커스텀 애플리케이션으로 모핑한다. 이와 같은 랜덤성의 보다 광범위한 전개를 통계적 프로세싱이라 한다.
고안
시간 대
실행 시간 바인딩
소프트웨어 객체 패러다임에 있어서, 클래스들간의 (접속을 이루는) 바인딩은 실행 시간 실행 전에 완료된다. 툴 세트는 프로그래머 생산성을 개선하기 위해 이러한 정적 바인딩 작업을 완료하다. 그러나, 정적 바인딩의 하락세는 명백한데, 그것은 단지 제한된 수의 접속만이 이루어지기 때문이다. 통계적 프로세싱은 보다 많은 접속이 고안 시간이 아닌 실행 시간에 이용될 수 있게 한다.
그 이름이 암시하는 바와 같이, 통계적 프로세싱은 랜덤 프로세싱과 관련이 있다. 대부분의 현재의 애플리케이션에 있어서 랜덤 기술의 이용은, 다이스(dice)(확률 함수), 또는 "와일드 카드"값(지원 범위내의 임의 값)과 같은 소수의 통상적 작업으로 제한된다. 통계적 프로세싱의 원리는 보다 넓은 범위의 새로운 프로세싱 선택을 가능하게 한다. 이들 원리는, 적절하게 이용될 경우, 이전에 해결하지 못한 많은 기술 문제를 해결할 것이다. 본 명세서에서 제공한 예시는, 그 개념을 교시하기 위한 것으로, 통계적 프로세싱의 값의 샘플을 제시한다. 이러한 발상은 간단히 이해할 수 있지만, 독자들은 그들의 애플리케이션에 있어서 그들을 이용하기 위한 최선의 방법에 대하여 고려(재고)해야 할 것이다. 하드웨어 고안자 또는 소프트웨어 개발자가 이들 요소들을 이해하게 되면, 그들은 이러한 새로운 기술의 변형성 본질(transformative nature)에 놀라게 될 것이다.
효과적인 통계적 프로세싱의 경우, 고안 단계에서 실행 단계로 이행할 수 있는 각 결정이 불확정성을 증가시킨다. 비용을 거의 들이지 않기 위해, 일부 기능적 파라메타는 데이터 실행형으로 될 수 있으며, 그에 따라 구현의 알고리즘적 복잡성이 증가된다. 동일한 데이터 실행 비용 구조내에서, 프로세싱 소자들의 선택 및 구성은 전체 알고리즘적 복잡성을 "폭발적으로 증가"시킬 수 있다. 프로세싱 소자들의 요구 리믹싱(on-demand remixing) 및/또는 기능적 파라메타의 재정의는 불확정성을 증가시킨다. 단일 해법으로 제한되었던 고안의 순수한 결과는 훨씬 더 비 결정론적인 동적 커스텀 솔루션을 생성한다.
불확정성의 원리
불확정성의 원리는 동적 커스텀 하드웨어/소프트웨어 구현을 생성하는 수학, 컴퓨터 과학 및 전기 엔지니어링 등에 걸쳐 발상의 특이한 수렴을 나타낸다. 천연 "노이즈"를 샘플링하는 것 외에, 난수 생성 프로세스는 강력하고 기능적으로 완전한 솔루션을 가지지 못했다. 계산의 기계적 본질이 주어질 경우, 종래의 "기능-실행" 솔루션은 랜덤성의 유효 표현을 생성할 수 없다. 기능 실행 솔루션은 치명적인 결함을 가지고 있는 반면, 데이터 실행 솔루션은 랜덤성의 실질적인 표현을 제공할 수 있다. "미지"의 데이터는 통상적 구현을 고유 랜덤 스트림으로 변환한다.
통상적으로, 개발동안 하드웨어/소프트웨어 솔루션은 정적으로 정의되며, 그에 따라 이들 종래의 솔루션은 두루 적용되는 사고 방식으로 이어질 수 밖에 없다. 더 나쁜 것은, 이러한 구현이 임의 주어진 문제에 대해 단일 솔루션으로 국한된다는 것이다. 고립된 해법의 영향은, 그들이 결정론적으로 되는 경우가 있음을 의미한다. 결정론적 동작은 랜덤성과 정반대이다. 이러한 결함있는(결정론적) 동작은 정적 솔루션이 아닌 동적 솔루션으로 보다 잘 해결되는 많은 애플리케이션에 걸쳐 확장된다.
오늘날, 소프트웨어 애플리케이션은 컴포넌트들의 "결합"된 집합으로서 정의될 수 있다. 단일 솔루션을 생성하기에 "충분한" 것으로 컴포넌트 세트를 제한하는 대신에, 많은 솔루션을 생성할 수 있도록 "기능적으로 등가"인 컴포넌트들의 풀을 증가시킨다. 다음, 실행 중에, 애플리케이션의 이러한 예시를 생성하는데 어느 컴포넌트의 세트를 이용할 것인지를 선택하기 위해 랜덤 데이터가 이용된다. 따라서, 랜덤 데이터에 의해 실행되는 공통 구현으로부터, 비 결정론적일 수 있는 불확정 커스텀 솔루션이 생성되었다.
URNG(Uncertainty Random Number Generator)는 하드웨어 또는 소프트웨어에 있어서의 동적 솔루션이다. 현재의 URNG 구현내에는, 비결정론적 난수 생성기를 생성하기 위한 실행중에 필요에 따라 결합(및 리믹싱)되는 100개 이상의 컴포넌트들이 있다. 보다 양호하게, 이것이 데이터 실행 솔루션이기 때문에, URNG의 각각의 이용은, 1회 이용되고 폐기된 불확정성의 동적 생성 풀에 의해 실행될 수 있다. 이 정도의 랜덤성에 의해, URNG는 장래의 동적 애플리케이션을 실행시키기 위한 수단으로 될 수 있다.
"기능적 등가성"은 애플리케이션 요건에만 기초한다.
통계적 프로세싱의 방법론내에 있어서, "기능적 등가"의 의미는, 객체 패러다임에서 발견된 전형적인 케이스보다 훨씬 더 민감하다. 전형적으로, 소프트웨어 패러다임은 생산성을 높이기 위해 개발자가 대부분의 구현 부작용을 무시하게 한다. 때때로, 이러한 부작용 문제 및 그들을 무시하는 것은 개발자의 목표를 약화시킨다.
예를 들어, 난수 생성기의 경우를 살펴보자. 그들은 수천개가 있으며 대부분은 동일한 성질을 가진다. 이들 생성기의 대부분은 상대적으로 고속이지만 암호화적으로 안전하지는 않으며, 일부는 안전하지만 느리다. 그래서, 보안 생성기와 불안전 생성기를 구분할 경우, 각 카테고리내에서 그들은 대략적으로 동등한가? 아니다. 동일한 불안전 생성기로부터 다수의 난수를 획득할 경우, 그 값들은 다음 값을 예측할 수 있을 정도로 상관성이 높다. 따라서, "랜덤"이 아니다. 보안 생성기들이 덜 상관적인 것으로 보이지만, 그들은 보다 느리고 거의 공용할 수 없다.
현재의 불안전 난수 생성기는 기능적으로 등가인 것으로 고려되지만, 그들의 각각은 랜덤 값을 생성하는데 있어서 효과적이지 않는데, 그 이유는 각 생성기마다 단일 랜덤 스트림이 존재하기 때문이다. 이들 불안전 난수 생성기들의 단지 기능적인 등가성만이 그들의 결함과 함께 남아 있으며, 여전히 랜덤성에 대한 애플리케이션 요건이 잔존한다. 그러므로, 기능적 등가성을 정의할 때 주의해야 한다. 기능적 등가성을 정의하는데 있어서의 실패는 정확히 기존의 불안전 난수 생성기처럼 결함있는 애플리케이션 고안으로 결과한다.
현재의 난수 생성기에 대한 일부 배경 정보는 통계적 프로세싱의 이들 새로운 방법론을 설명할 것을 필요로 한다. 임의 주어진 "기능적" 등가 프로세싱 소자는 유용하지만 특이한 부작용을 가질 수 있다. 제 1 교시 예(teaching example)내에서, 다수의 공통(결함있는) 난수 생성기는 소프트웨어 라이브러리에서 발견된 단독 디폴트 생성기를 대체하는데 이용된다. 추가적인 교시 예는 기능적 등가 프로세싱 소자의 보다 풍부한 실례를 보여준다.
통계적 "비계 포인트"
제 1 교시 예에서는, 메모리 어드레스를 생성하기 위해 서로 다른 "난수 생성기"들에 대해 7회 호출된다. 그러므로, 양호한 랜덤 메모리 어드레스를 제공하는 방법은 이들 클래식 PRNG를 대신할 수 있었는데, 이는 그들이 기능적으로 등가이기 때문이다. "단일 스트림" PRNG의 기본 결함을 극복하기 위하여, 각 현재의 호출은 다른 PRNG로 라우팅(routing)된다. 그래서, 그들 각각은 동일 시퀀스로부터의 7개의 연속하는 값들보다 훨씬 나은 서로 다른 랜덤 시퀀스로부터의 값들을 반환한다. 다수-PRNG 솔루션은 주요한 개선이지만, 모든 다른 동적 애플리케이션에 대한 최선의 솔루션은 비 상관적 및 비 결정론적인 값을 제공하기 위해 URNG를 이용하는 것이다.
상술한 솔루션들 중 어느 하나를 전개하지 못하면 좋지 않은 결과를 생성한다. 프로세싱 소자를 선택하기 위해 클래식 PRNG를 적용하는 것은 생성기들처럼 결함이 남게 되어, 단지 결정론적 선택만을 생성한다. 대신, 프로세싱 소자를 선택하기 위해 불확정성 함수 또는 URNG를 이용하는 것은 비 결정론적인 선택을 생성한다. 기능적 등가 프로세싱 소자를 수용할 수 있는 하드웨어 또는 소프트웨어에 있어서의 임의 포인트를 통계적 "비계 포인트"라고 한다.
프로세싱 소자들 집합의 추상적 개념
프로세싱 소자의 애플리케이션-특정 집합은 많은 선택을 제공하도록 생성된다. 그러한 프로세싱 소자들의 집합을 정의할 때마다, 일반적으로 그 집합의 크기를 재고 각 소자의 요구된 "품질"을 정의한다. 가끔씩, 선택할 수 있는 것으로부터 무제한적인 프로세싱 소자들이 존재할 수 있지만, 대부분의 애플리케이션은 그 집합들이 여러 차례 정상적으로 전개한 것을 요구한다. 명백하게, 일부 애플리케이션은 공통 선택을 그들 자신의 커스텀 집합으로 대체할 것이다.
용어 "프로세싱 소자의 집합"은 서로 다른 방식으로 구현될 수 있는 추상적 개념이다. 예를 들어, 하드웨어에 있어서, LFSR(Linear Feedback Shift Register - 클래식 하드웨어 랜덤 비트-값 생성기)은 랜덤 비트 스트림을 생성하기 위한 값으로 시딩된다. 그러나, 프로그램 가능 LFSR이 이용되면, 많은 서로 다른 랜덤 비트 스트림을 생성하도록 재구성될 수 있다. 이러한 방식에 있어서, 재프로그램 가능 LFSR내의 구성 선택 사항들은 가능한 집합을 정의하고, 그에 의해 선택을 제공한다. 이들 구성 선택 사항은 가상 집합을 생성한다.
동일한 가상 집합 개념이 소프트웨어에 있어서의 선택 사항을 통해 적용될 수 있다. 예를 들어, 선택적 불확정 파라메타 세트는 URNG의 랜덤 편집 프로세스의 피연산자를 추가 처리하도록 정의될 수 있다. 이 경우, 피연산자의 사전 프로세싱은 (비트 카운트를 가진) 비트간 좌측/우측 회전(bitwise rotate left/right), 비트간 NOT, 반전 비트 순서 등을 포함할 수 있다. 선택 사항의 동일 시퀀스가 그 결과에 적용될 수 있다. 이들 불확정 파라메타(선택 사항)의 전개는 대규모의 가상 집합을 생성하기 위해 정상 집합의 크기를 "폭발적으로 증가"시킨다.
각 프로세싱 소자의 품질과 관련하여, 이것은 애플리케이션 특정 고안 선택으로 된다. URNG 그 자체의 경우, 최초의 특허는 저가이지만 결정론적인 PRNG의 이용을 다루었다. (이하에 정의된) 데이터 합동 생성기에서 불확정성 함수 도메인 값을 생성하기 위한 보다 양호한 품질의 대안이 발견될 수 있다. 그러나, 공통 PRNG를 상정한 유효 교시 예가 계속될 수 있다.
프로세싱 소자의 집합의 생성은 실행 시간 선택을 도모하기 위한 것이었다. 이용을 위한 소자를 선택하기 위해 랜덤 데이터가 이용된다. 도 1은 선택 프로세스를 나타내는 흐름도이다. 선택이 요구되는 경우를 주의해야 한다.
도 1은 초기 조건이 "실행 = 0"이 아님으로 설정된 (110) 통계적 모듈/프로세스(100)의 이러한 예시에 대한 프로세싱 소자를 선택하는 실시 예를 나타내는 흐름도이다. "실행"될 때 까지(120) 루프는 PE_테이블로부터 가능한 프로세싱 소자를 선택하는데 이용되는 불확정 값 "X"을 계속적으로 획득한다(130). 이러한 가능한 프로세싱 소자는 이미 사용 중인지를 알기 위하여 검사된다(140)(도 2). 프로세싱 소자가 이미 "사용 중"이면, 루프는 다음 불확정 값에서 다시 시작한다(120). 그러나, 프로세싱 소자가 "사용 중이 아니면" 다음 "프리"(이용 가능) 엔트리(free entry)를 찾기 위한 검사가 이루어지는데(150), 거기에서는 프로세싱 소자가 프리 엔트리를 할당받고(160) 그 루프는 다시 시작된다. 마지막 엔트리가 충진되면(170), 종료 조건 "실행 = 1"이 설정되고(180) 루프는 다시 시작된다. 프로세싱 소자를 선택하는 실시 예는, "실행"이 참이면 종료한다.
도 2는 주어진 프로세싱 소자가 "사용 중"이면 검사하는 실시 예를 나타내는 흐름도로서, 초기 조건은 "발견 = 0"이 아님으로 설정된다(210). 루프는, 전체 테이블이 인덱싱될 때까지(220) 제 1 인덱스에서 시작하고, 그 다음 "발견" 상태로 복귀함에 의해 (250) 계속을 위한 루프를 퇴장한다. 인덱스된 테이블 엔트리가 주어진 소자에 대해 검사되고(230), 만약 발견되면 "발견 = 1"이 설정되고(240) 루프는 계속된다.
도 3에는 본 발명의 실시 예에 따른 정보의 통계적 프로세싱의 시스템이 도시된다. 데이터 풀 모듈, 데이터 프로세싱 모듈 세트, 데이터 피드 모듈 및 구조 메모리 모듈의 각각에 결합된 아키텍트 모듈이 도시된다. 도시된 데이터 풀 모듈은 공통 데이터 풀 프로세싱 모듈과 통신 프로토콜 인터페이스의 각각에 기능적으로 결합된다. 도시된 시스템은 정보 스트림을 변환시키는 방식으로, 정보 스트림(TCP/IP 패킷, 전화 데이터, 무선 통신 데이터, 개인 프로토콜 통신, 매체 파일, 데이터 파일, 데이터베이스 등)을 프로세싱하는데 이용된다. 따라서, 그 시스템은, 프라이버시(privacy)을 강화하고, 통신을 유효하게 하고, 저작권/통신 소오스를 검증하고, 그러한 작용들을 조합하여 실행하는데 이용될 수 있다.
도시된 아키텍트 모듈은 데이터의 통계적 프로세싱을 관리 및 제어하도록 구성되고, 프로세서를 포함하고/하거나 프로세서, 프로세서 모듈, 프로세싱 디바이스/시스템 등과 연관될 수 있다. 또한, 그것은 동일한 것을 달성하기 위한 하나 이상의 스크립트를 포함할 수 있으며, 그러한 스크립트는 시스템의 특정 애플리케이션으로 대체 가능하고/하거나 그와 연관될 수 있다. 비 제한적 예시로서, 디지털 서명 및/또는 증명의 생성을 위한 최적의 함수를 제공하도록 구성된 스크립이 존재할 수 있다. 아키텍트 모듈은 다른 모듈, 특히 데이터 프로세싱 모듈을 수신하도록 동작할 수 있는 다수의 비계 포인트들을 포함할 수 있다. 그러한 비계 포인트들은, 사전 결정되거나/되고 실행 시간 동안에 생성될 수 있다. 그러한 포인트는 서로 상호 작용하고, 서로에 대한 데이터 소오스일 수 있다. 따라서, 데이터 프로세싱의 복잡성이 사전 결정되고/되거나 실행 시간 동안에 생성될 수 있다. 아키텍트 모듈은 최대/최소 레벨, 포인트, 접속, 소오스, 데이터 프로세싱 소자의 중복성 및 그들의 조합을 포함하되, 그에 국한되지는 않는 비계 포인트의 제한에 대한 명령을 포함할 수 있다. 도시된 아키텍트 모듈은 실행 시간 동안 다수의 기능적 등가 데이터 프로세싱 모듈들 중에서 선택하기 위해 랜덤 값을 이용할 수 있다. 아키텍쳐 모듈은 실행 시간 동안 다수의 기능적 등가 데이터 프로세싱 모듈들 중 하나 이상의 사용을 위한 실행 지속 시간을 선택하기 위해 랜덤 값을 이용할 수 있다. 그러한 지속 시간은, 실제 시간, 클럭 사이클, 프로세싱된 데이터 청크, 데이터 프로세싱 모듈의 반복 사이클을 통해 이루어진 사이클들의 횟수 또는 그의 일부의 상태일 수 있으며, 그들을 조합한 상태일 수 있다. 비 제한적 예시로서 아키텍트 모듈은 Wolf등에 의한 미국특허번호 5,430,836호에 설명된 제어 모듈일 수 있거나, Swan 등에 의한 미국특허번호 6,243,635호에 설명된 제어 모듈일 수 있으며, 그들은 본 명세서에서 참조로서 수록된다. 아키텍트 모듈은 프로세서, 정적 머신, 스크립트, 결정 트리 등을 포함하지만 그에 국한되는 것은 아니다.
도시된 아키텍트 모듈은 실행 시간 동안에 통계적 아키텍쳐를 랜덤하게 변경하도록 구성된 실행 시간 수정 모듈을 포함한다. 실행 시간 수정 모듈은 비 결정론적 데이터 풀 모듈로부터 시딩되며, 그에 의해 PRNG 소오스 상의 비계 설치의 랜덤성 특성을 강화한다. 실행 시간 모듈은 비계 포인트의 개수에 대한 변경, 그들간의 상호 접속, 그와 함께 이용된 데이터 프로세싱 모듈 및/또는 그러한 변경들 사이의 기간을 위한 명령을 포함한다. 그러한 모듈은 또한 데이터 프로세싱 작업을 통해 그 진보를 추적하고 그에 따라 프로세싱되고 있는 데이터 스트림의 환경과 관련된 정보(프로세싱할 데이터의 잔여량 /시간, 반복 스트링의 존재, 각 당사자간에 통신 사이클들의 개수 및 그들의 조합)를 수신 및 그 정보에 따라 실행할 수 있으며 그러한 정보의 변경에 응답하여 실행 시간 동안에 실행 시간 모듈의 동작을 변경할 수 있다. 비 제한적 예시로서의 실행 시간 수정 모듈은 Kosake등에 의한 미국특허번호 6,898,788에 설명된 수정 시스템 또는 Nielsen에 의한 미국특허공개번호 2004/0205567호에 설명된 수정 모듈일 수 있으며, 그들은 본 명세서에 참조로서 수록된다.
도시된 비 결정론적 데이터 풀 모듈은 그에 의해 및/또는 관련된 모듈에 의해 액세스 가능하도록 아키텍트 모듈에 기능적으로 결합된다. 그것은, 이상적으로는 클래식한 함수로 부터 도출되지 않은(그러므로 비 결정론적인) 비 결정론적인 값의 스트림을 제공하도록 구성된다. 그러한 풀의 하나의 비 제한적 예시에 있어서, 비 결정론적 데이터 풀 모듈은 URNG 시스템의 하나 이상의 컴포넌트를 포함한다. 그러한 풀은 특정하게 원하는 이용에 맞도록 크기 조정되거나/되고 동일하거나 유사한 방식으로 이용될 수 있는 보다 크거나 보다 작은 풀을 생성하는데 이용된다. 비 제한적 예시로서의 비 결정론적 데이터 풀은 Ross 등에 의한 미국특허공개 2010/00036900호 및 미국특허공개 2011/0029588호에 설명된 불확정 난수 생성기일 수 있으며, 그들은 본 명세서에 참조로서 수록된다.
도시된 다수의 기능적 등가 데이터 프로세싱 모듈은 아키텍트 모듈에 기능적으로 결합된다. 특히, 각각은 아키텍트 모듈에 의해 호출된 데이터를 통계적으로 프로세싱하도록 구성된다. 일반적으로, 그러한 데이터 프로세싱 모듈은 랜덤 값 스트림과 관련하여 이용되는 정의된 동작을 포함할 것이다. 비 제한적 예시로서, 그러한 모듈은, 비트 단위로 또는 다른 "청크"로, 랜덤 값 스트림으로부터의 랜덤 값을 정보/데이터 스트림의 값에 가산하며, 그에 의해 변환된 데이터 값이 형성되며, 그 모듈은 그러한 것을 호출시에 아주 여러번 되풀이한다. 따라서, 그러한 모듈은, 일반적으로, 예를 들어, PRNG, URNG 등과 같은(그에 국한되는 것은 아님), 랜덤값 생성 툴에 대한 액세스를 요구한다. 최대 암호 해독 가능 보안이 요구되면, URNG는 일반적으로 소오스로서 선택되는데, 이는 그것이 비 결정론적(일방향)이며 이용된 툴의 사본을 가진 자들에 대해 가역적인 방식으로 동작할 것이기 때문이다. 비 제한적 예시로서의 데이터 프로세싱 모듈은 Learmonth에 의한 미국특허공개번호 2010/0318851에 설명된 데이터 프로세싱 시스템 또는 Bulusu등에 의한 미국특허공개번호 2009/0259862호에 설명된 데이터 프로세싱 모듈일 수 있으며, 그들은 본 명세성에서 참조로서 수록된다.
도시된 데이터 피드 모듈은 아키텍트 모듈과 기능적으로 통신하며, 통계적으로 프로세싱되기를 바라는 데이터 세트를 피딩하도록 구성된다. 그러한 모듈은 데이터를 관리하고, 액세스하고, 제어하고, 시스템에 제공하도록 구성된 명령 및/또는 하드웨어를 포함할 수 있다. 그러한 시스템은, 그의 소오스로부터의 데이터를 아날로그-디지털을 통해 그 시스템이 보다 잘 이용할 수 있는 형태로 변환하거나 또는 하나의 프로토콜로부터의 데이터를 다른 것으로 변환하는 인터페이스 툴을 포함할 수 있다. 그러한 시스템은, 데이터를 전송/수신하고/하거나 저장할 수 있다. 비 제한적 예시로서 데이터 피드 모듈은 Johnson 등에 의한 미국특허번호 5,957,714호에 설명된 인-피드 모듈(in-feed module)이거나, Bassett 등에 의한 미국특허공개번호 2010/0241417호에 설명된 피드 모듈일 수 있으며, 그들은 본 명세서에서 참조로서 수록된다.
도시된 구조 메모리 모듈은 아키텍트 모듈에 결합되며, 아키텍트 모듈에 충분한 정보를 제공하도록 구성되어 사전 정의된 프로세싱 아키텍쳐를 복제하거나/하고 이용된 프로세싱 아키텍쳐를 기록함으로써, 그것이 나중에 동일한 시스템 및/또는 유사한/동반 시스템에 의해 이용될 수 있도록 한다. 또한, 구조 메모리 모듈에 기능적으로 결합되거나 그의 일부로서의 메모리 저장 디바이스가 있다. 도시된 구조 메모리 모듈은 시간 구조에 따라 구조를 인덱싱하는 인덱스 모듈을 포함한다. 이것은 특히 바람직한데, 그 이유는, 여러 종류의 타임 스탬프들이 URNG를 시딩하기 위한 키로서 이용될 수 있게 하기 때문이다. 그러한 타임 스탬프들은 동일한 데이터 풀을 이용하여 관련 시스템이 데이터 변환을 쉽게 반전시킬 수 있게 하고 생성 및/또는 전송하는데 있어서 쉽게 이용할 수 있고, 단기간이며, 저렴하다. 그러한 타임스탬프는, 실제 시간, 클럭 사이클, 프로세싱된 데이터 청크, 데이터 프로세싱 모듈의 반복 사이클을 통해 이루어진 사이클의 횟수 또는 그의 일부 등의 형태이거나, 그들을 조합한 형태일 수 있다. 비 제한적 예시로서, 메모리 저장 디바이스는 미국 94304, 캘리포니아주, 팔로 알토, 하노버 스트리트, 3000에 소재하는 휴렛 팩커드사에 의해 제조된 HP Storge Works P2000 G3 Modular Smart Array System; 뉴욕주, 10022, 뉴욕 550 매드슨 애비뉴에 소재하는, 미국 소니사에 의해 제조된 Sony Pocket Bit USB Flash Drive를 포함할 수 있다. 데이터 저장 모듈은 데이터베이스 또는 데이터 파일일 수 있으며, 데이터 저장 디바이스는 하드웨어 드라이브 또는 테이프일 수 있다. 비 제한적 예시로서, 데이터 베이스는 미국 95054, 캘리포니아주 산타 클라라 5261 패트릭 헨리 드라이브에 소재하는 파일마커사에 의해 제조된 Filemaker Pro 11이다.
도시된 공통 데이터 풀 프로세싱 모듈은 비 결정론적 데이터 풀 모듈에 기능적으로 결합되고, 공통 비 결정론적 데이터 풀을 통계적으로 프로세싱함에 의해 비 결정론적 데이터 풀 모듈에 의한 이용을 위한 애플리케이션 특정 비 결정론적 데이터 풀을 생성하도록 구성된다. 사용자는 공통 풀의 무결성과의 타협없이 매우 다양한 다른 것들과 (변환된 형태로) 공유하고 많은 서로 다른 세팅에 이용될 수 있는 개인 비 결정론적 데이터 풀을 생성할 수 있다. 이러한 방식에 있어서, 시스템은 공통 풀을 공유하지 않고 세트의 무결성을 위반하지 않으면서, 단일 공통 풀로부터 무한(가상) 개수의 비 결정론적 데이터 풀을 생성하는데 이용될 수 있다. 비 제한적 예시로서의 데이터 풀 프로세싱 모듈은 Mindes에 의한 미국특허번호 5,573,244호에 설명된 시스템 또는 Pounds 등에 의한 미국특허번호 5,517,556호에 설명된 시스템일 수 있다.
도시된 통신 프로토콜 인터페이스는 데이터 피드 모듈과 통신하며, 데이터 피드 모듈에 대한 통신 프로토콜 맵을 피딩하고, 아키텍트 모듈로부터 통계적 프로세싱된 통신 프로토콜 맵을 수신하고/하거나 통계적으로 프로세싱된 통신 프로토콜 맵에 따라 정보 스트림을 변경하도록 구성된다. 그러한 통신 프로토콜 인터페이스는 정보의 스트림을 "깨트리도록" 동작하며, 그에 따라 특정하게 정의된 데이터 프로토콜에 대한 특정의 최소 표준을 충족하도록 데이터에 의존하는 이들 디바이스/시스템은 거절하거나, 이용하지 못하거나, "디스플레이"하지 못하거나, 그렇지 않으면 정보가 이용될 수 없다고 판정한다. 비 제한적 예시로서, 일부 프로토콜들은 패리티 검사를 충족시키지 못하는 정보의 패킷을 거절한다. 통신 프로토콜 인터페이스는 정보 스트림내의 일부 또는 모든 패킷이 변환을 취소하고 있지 않은 자들에 의해 거절되도록 하기 위해 그들이 패리티 검사에 실패할 정도로 충분히 변환되는지를 확인하도록 동작한다. 그러한 패킷은 도청에 의한 단순한 불량 패킷일 수 있다. 비 제한적 예시로서의 통신 프로토콜 인터페이스는 Lin 등에 의한 미국특허공개번호 2010/0277104호에 설명된 회로 또는 Wong 등에 의한 미국특허번호 7,058,075호에 설명된 인터페이스일 수 있으며, 그들은 본 명세서에서 참조로서 수록된다.
본 발명의 일 실시 예에 따르면, 컴퓨팅 디바이스(10)를 이용하는 정보의 통계적 프로세싱의 시스템이 있다. 그 시스템(10)은 프로세서(14)를 포함하는 아키텍트 모듈(12)을 포함한다. 아키텍트 모듈(12)은 데이터의 통계적 프로세싱을 관리 및 제어하도록 구성된다. 아키텍트 모듈(12)은 실행 시간 동안에 통계적 아키텍쳐를 랜덤하게 변경하도록 구성된 실행 시간 수정 모듈(16)을 포함한다.
비 결정론적 데이터 풀 모듈(18)을 포함하는 시스템(10)은 아키텍트 모듈(12)에 기능적으로 결합되며, 함수로부터 도출되지 않은 비 결정론적 값의 스트림을 제공하도록 구성된다. 실행 시간 수정 모듈(16)은 비 결정론적 데이터 풀 모듈(18)로부터 시딩된다. 비 결정론적 데이터 풀 모듈(18)은 URNG 시스템(20)을 포함한다. 그 시스템(10)은 아키텍트 모듈(12)에 기능적으로 결합되고, 각각이 아키텍트 모듈(12)에 의해 요청된 데이터를 통계적으로 프로세싱하도록 구성될 수 있는 다수의 기능적 등가 데이터 프로세싱 모듈(22)을 포함한다. 아키텍트 모듈(12)은 실행 시간 동안에 다수의 기능적 등가 데이터 프로세싱 모듈(22)들 중에서 선택하기 위해 랜덤 값을 이용하도록 구성된다. 아키텍트 모듈(12)은 실행 시간 동안 다수의 기능적 등가 데이터 프로세싱 모듈(22)들 중 하나의 이용을 위한 실행 지속 시간을 선택하기 위해 랜덤 값을 이용하도록 구성된다.
시스템(10)은 아키텍트 모듈(12)과 기능적으로 통신하며 통계적으로 프로세싱될 데이터 세트를 피딩하도록 구성될 수 있는 데이터 피드 모듈(24)을 포함한다. 그 시스템(10)은 메모리 저장 디바이스(28)를 포함하는 구조 메모리 모듈(26)을 포함할 수 있다. 구조 메모리 모듈(26)은 아키텍트 모듈(12)에 결합될 수 있으며, 사전 정의된 프로세싱 아키텍쳐를 복제하고 이용되는 프로세싱 아키텍쳐를 기록하기 위해 아키텍트 모듈(12)에 충분한 정보를 제공하도록 구성된다. 구조 메모리 모듈(26)은 시간 구조에 따라 구조를 인덱스하는 인덱스 모듈(30)을 포함할 수 있다.
그 시스템(10)은, 비 결정론적 데이터 풀 모듈(18)에 기능적으로 결합되며, 공통 비 결정론적 데이터 풀을 통계적으로 프로세싱하도록 구성되어, 비 결정론적 데이터 풀 모듈에 의한 이용을 위한 애플리케이션 특정 비 결정론적 데이터 풀을 생성하는 공통 데이터 풀 프로세싱 모듈(34)을 포함할 수 있다. 그 시스템(10)은, 데이터 피드 모듈과 통신하며, 데이터 피드 모듈에 통신 프로토콜 맵을 피딩하고, 아키텍트 모듈로부터 통계적으로 프로세싱된 통신 프로토콜 맵을 수신하고, 통계적으로 프로세싱된 통신 프로토콜 맵에 따라 정보 스트림을 변경하도록 구성되는 통신 프로토콜 인터페이스(32)를 포함한다.
도 4 및 도 5에는 컴퓨팅 디바이스를 이용하여 정보를 통계적으로 프로세싱하는 방법이 도시된다. 도시된 단계들은, 일방향 변환을 유발하면서, 프로세스에 대해 충분한 정보를 가진 자들이 그 변환을 반전시킬 수 있게 하고 그에 의해 데이터를 액세스할 수 있게 하는 방식으로 데이터/정보 스트림이 프로세싱되게 한다. 변환된 데이터에 대한 액세스를 취득한 자 및 도청자는 그 변환이 일방향 변환임에 따라 데이터를 해킹하기 위한 지름길을 이용할 수 없을 것이다. 또한, 그 프로세스에 의해 변환 동작에 있어서의 변화가 가능하게 되기 때문에, 비 결정론적 값들의 단일 풀의 실질적인 평가절하 없이 그 풀을 거의 무한정으로 이용할 수 있게 된다. 요약하면, 비 결정론적 데이터 풀은, 프로세스에 대한 충분한 정보가 기록되어 변환 취소를 위해 그 정보가 그 방법의 다른 사용자에게 제공되게 하면서 정보 스트림에 대해 동작하는 랜덤하게 선택된 데이터 변환 프로세스의 비계를 시딩함으로써, 아주 강력하고 운용상 저렴한 프라이버시, 보안, 인증이 가능하게 하고 다른 장점이 있게 하는데 이용된다. 도시된 단계들은 이하에 개별적으로 설명되며, 도시된 단계들의 순서는 그 방법의 동작에 이용되는 필연적인 순서는 아님을 알 것이다. 또한, 모든 단계들이 그 방법의 여러 애플리케이션에 필수적인 것은 아니다.
비 결정론적인 것으로 검증되고 함수로부터 도출되지 않은 비 결정론적 데이터 풀을 제공하는 단계는, 환경적 랜덤성 소오스에 의해 제공되지 않은 가역성을 허용하되 결정론적 PRNG 함수의 허약함 및 취약성에 그 방법이 영향을 받지 않고서, 가변성의 기반이 그 방법에서 이용될 수 있게 한다. 그러한 풀은 본 명세서에서 설명한 URNG로서 형성될 수 있다. 그러한 풀은 데이터의 저장된 풀, 데이터의 스트림 또는 그의 변형으로서 제공될 수 있다.
프로세싱될 정보 스트림을 제공하는 단계는 그 방법이 정보 스트림에 작용할 수 있게 한다. 그러한 것은 그 방법을 동작시키고 있는 시스템/디바이스에 그 정보를 이용 가능한 형태로 제공하는 임의 유형의 통신 툴/모듈을 통해 제공될 수 있다. 그 정보는 통신 네트워크(무선, 인터넷, 버스 등)를 통해 스트림으로서 제공되고/되거나 하드 드라이브, 플래시 메모리, ROM, RAM, 광학 디스크 및 그들의 조합(이에 국한되는 것은 아님)과 같은 메모리 디바이스 및/또는 메모리 피드에 대한 액세스를 통해 제공될 수 있다.
제 1 데이터 프로세싱 모듈을 랜덤하게 선택하고, 비 결정론적 데이터 풀로부터 데이터 프로세싱 모듈을 랜덤하게 선택하는 단계를 시딩하고, 제 1 데이터 프로세싱 모듈을 이용하여 정보 스트림을 변경하고, 대체 데이터 프로세싱 모듈을 선택하여 제 1 데이터 프로세싱 모듈을 대체 데이터 프로세싱 모듈로 대체하고, 비 결정론적 데이터 풀의 이용 전에 비 결정론적 데이터 풀을 통계적으로 프로세싱하고, 정보 스트림이 데이터 프로세싱 모듈의 다수의 랜덤화된 계층을 통해 프로세싱되도록 다수의 데이터 프로세싱 모듈의 이용을 랜덤하게 계층화하고, 랜덤 값들의 소오스에 대한 각 호출이 각각의 이전 호출과는 다른 소오스로 가도록 랜덤화(randomization)를 관리하고, 그 방법내의 구조화된 가변성의 층들을 집합적으로 및 개별적으로 제공하기 위해 대체 데이터 프로세싱 모듈을 이용하여 정보 스트림을 변경하여 단일 데이터 풀의 이용성을 증가시키고, 데이터 풀 그 자체를 모호하게 하는 단계들이 존재한다. 그러한 랜덤 선택은 데이터 풀 및/또는 다른 소오스에 의해 시딩될 수 있다. 그러한 랜덤 선택은 이 방법의 다른 예시를 이용하여 실행될 수 있다. 그러한 랜덤 선택은 프로세서를 이용하여 실행될 수 있다. 데이터 프로세싱 모듈은 각각이 데이터를 변경하도록 구성될 수 있는 기능적 등가 데이터 프로세싱 모듈들의 세트로부터 선택될 수 있다. 감산, 마스킹, NAND, NOR, OR, XOR, AND, 가산 및 그들의 조합을 포함하는 데이터 프로세싱 모듈에 의해 비 제한적 예시의 프로세스가 실행된다.
제 1 및 대체 데이터 프로세싱 모듈의 이용을 재생하기에 충분한 구조 정보를 기록하는 단계는, 일방향 변환이 반전될 수 있게 하며, 그에 의해 유용한 장점을 변환된 데이터의 수신자에게 제공한다. 그러한 기록은, 타임 스탬프가 데이터를 록킹 해제(unlocking)하기 위한 키로서 작용할 수 있을 정도로 대응하는 시스템이 충분히 구성되고 충분히 동일하게 되는 타임 스탬프처럼 간단할 수 있다. 그러한 기록은 보다 복잡해질 수 있으며, 하나 이상의 스크립, 데이터 세트 및/또는 변환된 데이터와 관련되고/되거나 그 데이터와 함께 전송되거나 패키징되는 데이터 프로세싱 모듈을 포함할 수 있다.
실행 시간 동안 제 1 데이터 프로세싱 모듈의 이용의 랜덤 지속 시간을 결정하고/하거나 실행 시간까지 모든 랜덤화된 데이터 프로세싱 특성의 선택을 지연시키는 단계는 공격에 대한 결과하는 변환을 강화하는데 매우 유익하다. 그러한 단계는, 사전 정의된 비계 구조를 가지는 것을 포함하되, 실행 시간까지 거기에서 동작하도록 데이터 프로세싱 모듈을 선택하지 않고/않거나 실행 시간까지 그러한 시스템에서 이용될 시드 값들을 선택하지도 않는다. 정보 스트림이 사전 정의된 통신 프로토콜의 요건을 충족시키지 못하도록 정보 스트림을 충분하게 프로세싱하는 제 1 및 대체 데이터 프로세싱 모듈과 사전 정의된 통신 프로토콜에 따라 정보 스트림을 구성하는 단계는 매우 저렴한(프로세싱 비용) 데이터 보호를 도모하는데, 그 이유는 도청자가 데이터가 변질된 것으로서 거절하도록 하기 위하여 결과하는 스트림에 대해 단지 시간 변경만이 이루어질 필요가 있는 반면, 수신자는 동일한 것을 적절하게 이용하기 위하여 보다 적은 백분율의 데이터를 변경할 필요가 있기 때문이다.
동일한 시간 인덱스 위치와 동일한 비 결정론적 데이터 풀에서 시작하는 카운트파트(counterpart)에 의한 그 방법의 동작이 정보 스트림을 동일하게 프로세싱하도록, 그 방법의 동작을 시간 인덱스와 연관시키는 단계가 있다.
비 결정론적 데이터 풀이 주 10/10 스코어(predominant 10/10 score)로 NIST 검사를 통과하는 지를 검증하는 단계는, 다른 방법에서 발견되지 않은 보안 등급을 제공한다. 주 10/10 스코어로 통과한다는 것은, 그러한 검사의 85%, 90%, 95%, 99% 및/또는 99% 이상이 비 중복 템플릿 검사(non-overlapping template testing), 시리얼 검사(serial testing), 선형 복잡성 검사에 대해 10/10 스코어로 결과하는 반면, 2/2 또는 1/1의 스코어가 모든 랜덤 편위(Random Excursions) 검사에 대해 달성됨을 의미한다. 특히, 본 명세서에서 언급한 NIST 검사는, http://csrc.nist.gov/groups/ST/toolkit/mg/documents/SP800-22b.pdf에서의 NIST Special Publication 800-22, A Statistical Test Suite for Random and Pseudorandom Number Generators for Cryptographic Applications에 개시된 P-값의 균일성 및 시퀀스를 통과하는 비율에 대한 검사로서, 그것은 본 명세서에서 참조로서 수록된다. 한가지 비 제한적 실시 예에 있어서, 단지 공통 데이터 풀만이 검증되거나 검사되며, 본 명세서에서 설명된 그 방법을 이용하여 생성된 후속하는 풀은 검사되지 않는다. 이것은, 바람직한데, 그 이유는 그러한 검사가 계산적으로 고가이며, NIST 검사를 통과하고 이 방법에 의해 변환되는 툴이 검사를 통과하는 등급의 실질적 저하없이 NIST 검사를 계속 통과하는 것으로 관측되었기 때문이다. 이것은, 일반적으로 추가 데이터가 생성됨에 따라 지수적으로 더욱 고가인 함수들의 경우에만 가능하며, 본 명세서에서 설명한 방법은 선형적으로 고가(시간)이다.
본 발명의 일 실시 예에 따르면, 컴퓨팅 디바이스를 이용하여 정보를 통계적으로 프로세싱하는 방법(40)이 있다. 그 방법(40)은 비 결정론적인 것으로 검증되고 함수(40)로부터 도출되지 못하는 비 결정론적 데이터 풀을 제공하는 단계(42)를 포함한다. 그 방법(40)은 비 결정론적 데이터 풀이 주 10/10 스코어(predominant 10/10 score)로 NIST 검사를 통과하는 지를 검증하는 것(44)을 포함한다. 그 방법(40)은 프로세싱될 정보 스트림을 제공하는 단계(46)를 포함한다. 그 방법(40)은 실행 시간 까지 모든 랜덤화된 데이터 프로세싱 특성들의 선택을 지연시키는 단계(48)를 포함한다. 그 방법(40)은, 프로세서를 이용하여, 기능적 등가 데이터 프로세싱 모듈들 - 각각은 데이터를 변경하도록 구성됨 - 의 세트로부터 제 1 데이터 프로세싱 모듈을 랜덤하게 선택하는 것(50)을 포함한다.
그 방법은 실행 시간 동안 제 1 데이터 프로세싱 모듈의 이용의 랜덤 지속 시간을 결정하는 단계(52)를 포함한다. 기능적 등가 데이터 프로세싱 모듈 세트는 감산, 마스킹, NAND, NOR, OR, XOR, AND 및 가산을 포함하는 데이터 프로세싱 모듈의 그룹으로부터 선택된다. 그 방법은 비 결정론적 데이터 풀로부터 데이터 프로세싱 모듈을 랜덤하게 선택하는 단계를 시딩하는 것(54)을 포함한다.
컴퓨팅 디바이스를 이용하여 정보를 통계적으로 프로세싱하는 방법(40)은 제 1 데이터 프로세싱 모듈을 이용하여 정보 스트림을 변경하는 단계(56)를 포함한다. 그 방법(40)은, 제 1 데이터 프로세싱 모듈로 정보 스트림을 프로세싱하면서, 기능적 등가 데이터 프로세싱 모듈 세트로부터, 프로세스를 이용하여, 대체 데이터 프로세싱 모듈을 랜덤하게 선택하는 것(58)을 포함한다. 그 방법(40)은 대체 데이터 프로세싱 모듈로 제 1 데이터 프로세싱 모듈을 대체하는 것(60)을 포함한다.
그 방법(40)은 대체 데이터 프로세싱 모듈을 이용하여 정보 스트림을 변경하는 단계(62)를 포함한다. 그 정보 스트림은 사전 정의된 통신 프로토콜에 따라 구성될 수 있으며, 제 1 및 대체 데이터 프로세싱 모듈들의 각각은, 정보 스트림이 사전 정의된 통신 프로토콜의 요건을 충족시키지 못하도록 그 정보 스트림을 충분하게 프로세싱한다. 그 방법(40)은 데이터 프로세싱 모듈의 다수의 랜덤화된 계층들을 통해 정보 스트림이 프로세싱되도록 다수의 데이터 프로세싱 모듈의 이용을 랜덤하게 계층화하는 것(64)을 포함한다.
그 방법(40)은, 제 1 및 대체 데이터 프로세싱 모듈의 이용을 재생하기에 충분한 구조 정보를 기록하는 단계(66)를 추가로 포함한다. 그 방법(40)은, 동일한 시간 인덱스 위치와 동일한 비 결정론적 데이터 풀에서 시작하는 카운트파트(counterpart)에 의한 그 방법의 동작이 정보 스트림을 동일하게 프로세싱하도록, 그 방법의 동작을 시간 인덱스와 연관시키는 것(68)을 포함한다. 그 방법(40)은, 비 결정론적 데이터 풀의 이용 전에, 비 결정론적 데이터 풀을 통계적으로 프로세싱하는 단계(70)를 포함한다. 그 방법(40)은, 또한, 랜덤 값들의 소오스에 대한 각 호출이 각각의 이전 호출과는 다른 소오스로 가도록 랜덤화(randomization)를 관리하는 단계(72)를 포함한다.
도 6에는 피딩된 정보를 통계적으로 프로세싱하도록 구성된 통계적 프로세싱 디바이스가 도시된다. 도시된 디바이스는 비 휘발성 메모리 디바이스에 각각으로 결합된 프로세서, 데이터 입력 인터페이스 모듈, 데이터 출력 인터페이스 모듈 및 아키텍트 모듈을 포함한다. 동작에 있어서, 디바이스는 사용자가 프로세싱될 데이터/정보 스트림을 취할 수 있게 하며, 데이터의 일방향 변환을 유발하면서, 프로세스에 대해 충분한 정보를 가진 자들이 그 변환을 반전시킬 수 있게 하고 그에 의해 데이터를 액세스할 수 있게 하는 방식으로 그것을 프로세싱한다. 따라서, 단일 디바이스는 그것의 이용자에게 강화된 프라이버시, 보안, 인증, 유효성, 검증 및 그들의 조합을 제공하는데 이용될 수 있다.
도시된 프로세서는 공통 전자 디바이스(컴퓨터, 서버, 테이블렛, 스마트폰 등)에서 발견되는 것과 같은 하나 이상의 프로세싱 디바이스를 포함할 수 있다.
도시된 비 휘발성 메모리 디바이스는 전력 공급 중단될 때 데이터를 상실하지 않은 하나 이상의 메모리 디바이스를 포함한다. 하드 드라이브 및 플래시 드라이브가 그러한 것들의 비 제한적 예시이다. 메모리 디바이스는 프로세서에 기능적으로 결합되며, 주 10/10 스코어로 NIST 검사를 통과하였음을 검증받은 비 결정론적 데이터의 풀을 포함한다.
도시된 데이터 입력 인터페이스 모듈은 프로세서에 기능적으로 결합되며, 데이터를 수신하도록 구성된다. 데이터 출력 인터페이스 모듈은, 프로세서에 기능적으로 결합되며, 데이터를 전송하도록 구성된다. 그러한 인터페이스 모듈은 데이터 포트, USB 포트, 시리얼 포트, 네트워크 카드, 무선 전송기/수신기 및 그들의 조합을 포함한다.
도시된 데이터 프로세싱 모듈은 프로세서에 기능적으로 결합되며, 다수의 기능적 등가 데이터 프로세싱 명령 세트 또는 그러한 함수 및/또는 데이터 풀의 라이브러리를 포함한다. 그것은 하나 이상의 URNG 풀/시스템의 예시를 포함한다.
도시된 아키텍트 모듈은 프로세서, 데이터 프로세싱 모듈 및/또는 비 휘발성 메모리 디바이스와 기능적으로 결합되며, 비 휘발성 데이터의 풀로부터의 시드 값에 따라 데이터의 통계적 프로세싱을 관리 및/또는 제어하도록 구성된다. 그것은, 실행 실행동안에 데이터 프로세싱 모듈을 랜덤하게 선택하고, 그에 의해 데이터 입력 인터페이스 모듈을 통해 수신된 데이터를 프로세싱하고 데이터 출력 인터페이스 모듈에 통계적으로 프로세싱된 데이터를 제공함에 의해 달성된다. 그러한 아키텍트 모듈은 본 명세서에서 설명한 하나 이상의 특징, 구조, 기능 등을 포함한다.
본 발명의 실시 예에 따르면, 피딩된 정보를 통계적으로 프로세싱하도록 구성된 통계적 프로세싱 디바이스(80)가 있다. 그 디바이스(80)는 프로세서(84) 및 그 프로세서(80)에 기능적으로 결합된 비 휘발성 메모리 디바이스(86)를 포함한다. 비 휘발성 메모리 디바이스(86)는 주 10/10 스코어로 NIST 검사를 통과했음을 검증받는 비 결정론적 데이터의 풀(88)을 포함한다. 그 디바이스(80)는 프로세서(84)에 기능적으로 결합되고 데이터를 수신하도록 구성된 데이터 입력 인터페이스 모듈(82)을 포함한다. 그 디바이스(80)는 프로세서(84)에 기능적으로 결합되고 데이터를 전송하도록 구성된 데이터 출력 인터페이스 모듈(92)을 포함한다.
그 디바이스(80)는, 프로세서(84)에 기능적으로 결합되고 다수의 기능적 등가 데이터 프로세싱 명령 세트(96)를 포함하는 데이터 프로세싱 모듈(90)을 포함한다. 그 디바이스(80)는 프로세서(84), 데이터 프로세싱 모듈(90) 및 비 휘발성 메모리 디바이스(86)에 기능적으로 결합된 아키텍트 모듈(94)을 포함한다. 아키텍트 모듈(94)은 실행 시간 동안 데이터 프로세싱 모듈을 랜덤하게 선택함에 의해 비 결정론적 데이터의 풀로부터의 시드 값들에 따라 데이터의 통계적 프로세싱을 관리하고 제어하며, 그에 의해 데이터 입력 인터페이스 모듈을 통해 수신된 데이터를 프로세싱하고 데이터 출력 인터페이스 모듈로 통계적으로 프로세싱된 데이터를 제공하도록 구성된다.
불확정 애플리케이션
파라메타
정적 파라메타는 결정론적 결과를 이끌기 때문에, 많은 프로세싱 소자는 추가적인 파라메타가 정확하게 기능할 것을 요구한다. 가능할 때마다, 이들 파라메타의 모두가 불확정성 함수 또는 URNG로부터 동적으로 획득되어야 한다. 이러한 방식에 있어서, 각 추가적인 불확정 파라메타는 계속적으로 불확정성의 범주를 확장시킨다.
제어 평면 책무(
control
plane
responsibilities
)
"제어 평면"의 개념은 우선적으로 원래의 URNG 특허에 포함되었다. 그 개념은 동일하게 유지되지만, 책무는 통계적 프로세싱에 대해 일반화되었다. 프로세싱 소자의 선택/재선택, 프로세싱 소자의 초기화/재초기화, 통계적 비계 포인트의 갱신 모두는 실행 시간 실시 동안에 일부 포인트에서의 이들 많은/대부분의/모든 값들/소자들을 동적으로 대체하는 우선적인 목표와 함께 실행된다.
애플리케이션 고안자는 프로세싱 소자 또는 동적 값들을 갱신하는 정책을 정의하는 역할을 한다. 갱신을 트리거하기 위해 "카운트다운 카운터(countdown counter)"와 같은 간단한 툴 또는 "애플리케이션 특정 이벤트"와 같은 복잡한 것이 정의될 수 있다. 이들 정책은 중요한 구현상 세부 사항으로 된다.
통계적 개발
통계적 프로세싱의 방법론 내에서, 랜덤 값은 프로세싱 소자, 프로그램 제어 파라메타 및 단순한 데이터의 선택을 포함하는 서로 다른 많은 기능적 역할을 억제시킨다. 적절하게 구성된 통계적 프로세싱 비계는 소프트웨어 명령과 같은 랜덤 값의 이용을 지원할 것이다. 이러한 유형의 비계 중 가장 단순한 형태가 URNG의 카오스 엔진이다. 카오스 엔진은 선택 리스트로부터의 단일 선택을 나타낸다.
우리의 개발 툴 및/또는 창의력의 제한내에서, 무제한적인 애플리케이션 솔루션 스페이스가 프로그래머 또는 하드웨어 고안자에 대한 과제로 남는다. 통계적 개발 개념의 이용은 무한하며, 임의의 동적으로 정의된 양의 프로세싱 소자, 단계들, 통과, 루프 및 시퀀스들이 생성될 수 있다. 전통적인 프로그래밍에 있어서, "제어 변수"는 코드를 통한 경로를 안내한다. 통계적 개발내에서, 많은 제어 변수들은 실행 시간에 불확정 값으로 정의되거나 재 정의된다. 무제한적 범위의 카오스 동작이 이러한 비계의 복잡성에 의해 정의된 채로 유지된다. 비계가 설정되면, 카오스 동작을 이용하기 위해 단지 비 결정론적 값들만이 요구된다. 이와 같이 새롭게 생성된, 미지의 실행 시간 소프트웨어는 애플리케이션 고안 공간을 완전하게 변환한다.
통계적 "비계 포인트" 예시
이하의 루틴(routine)을 보고 고안 시간 정적 풀 크기, 어드레싱 모듈로, 단일(라이브러리) PRNG 호출을 고려해보자. 명백하게, 동일 루틴이 보다 결정론적이다. 따라서, 선택할 실질적인 PRNG 함수의 집합과 함께 통계적 프로세싱의 방법론이 추가된다. 이하의 PRNG 호출의 각각은 다른 함수에 의해 동적으로 선택되고 불확정 데이터를 통해 시딩된다. 또한, "풀 크기" 및 "모듈로" 불확정 파라메타는, 소오스 파일이 생성될 때 정의된다. 이러한 방식에 있어서, 단일 PRNG의 일부 알려진 결함이 완화되지만, 불확정성의 전체 범위는 확장된다. 순 효과(net effect)는 마스크(Mask) URNG로서 알려진 비 결정론적 불확정 난수 생성기이다.
그러나, 새로운 시드 값으로의 이들 PRNG의 미지의 동적 대체를 추가하고 불확정성의 주문 풀을 생성함에 의해, 동일한 구현이 실시될 때마다 그것은 동적 커스텀 솔루션으로 된다.
통계적 비계-카오스 예시
두개의 집합, 즉, PRNG 함수에 대한 하나와 URNG REP(Random Edit Processes) 함수에 대한 다른 하나에서 시작해보자. PRNG를 선택하기 위한 동일 데이터 실행 프로세스를 이용하여, REP 리스트를 선택하고 생성한다. 각 랜덤 편집 프로세스는 분리 프로세스이다. 마스크 생성기는 단지 하나의 분리 프로세스를 나타내지만, 카오스 URNG(상기 코드 참조)는 불확정 값을 이용하여 많은 분리 프로세스들 중에서 선택한다. 전체적인 결과는 실질적으로 동일한 불확정성 풀로부터 생성된 보다 불확정한 랜덤 값이다.
통계적 프로세싱의 효과
통계적 프로세싱의 불확정성은, 이것이 훨씬 유용한 랜덤성의 애플리케이션인 이유를 나타낸다. 정확한 풀 데이터 없이는, 커스텀 솔루션의 어느 버전이 실시될 것인지를 (구현 지식으로부터) 아무도 예측할 수 없다. 하드웨어 및 소프트웨어에 있어서의 현재의 구현은 수학적 확정성과 일치한다. 이들 정적 해법은 동적 해법에 미치지 못한다. 불확정성의 이들 기술은 애플리케이션들이 보다 덜 비싸고 훨씬 양호한 카오스 해법이 되게 할 것이다.
동적 디지털 프로토콜
데이터 구조 및 동작은 현재의 디지털 프로토콜을 정의한다. 개발자들은 이들 프로토콜의 구현을 완료하기 위해 피땀어린 노력을 기울인다. 이러한 완전에 가까운 구현은, 대부분의 현재 디지털 프로토콜이 극도로 취약함을 의미한다. 디지털 프로토콜내에서 취약한 데이터 구조를 어떻게 보호할 것인가? 단지 그들을 의도적으로 깨트림에 의해 그들을 보호하기 위한 수단을 획득하나... 이러한 아이러니는 데이터 구조 보호 파라독스를 정의한다.
이러한 파라독스를 이용하기 위해, 통계적 프로세싱의 도움으로, 툴로서 데이터 구조 취약성을 이용한다. 즉 완전성을 고유하게 "깨트리기 위한" 동적 수단을 생성하고, 그 다음 동일 데이터 구조의 완전성을 고유하게 "복구"한다. 단순한 대조에 의해 이러한 취약성의 값을 알 수 있다. 캐논(canon)이 집파리를 죽일 수 있지만, 파리채도 그럴 수 있다. 그 둘은 작업을 완료하지만, 그들 중 하나는 그 문제의 스케일에 대해 완전히 부적절한 채로 남는다. 암호화는 디지털 프로토콜을 보호할 수 있지만, 그것은, 각자가 심각한 대량 학살을 나타내기 때문에 캐논이 집파리를 죽이는 것처럼, 부적절하다.
혼란에 대한 감도에 대해 이러한 이해가 주어지면, 이들 프로토콜의 내부 데이터 구조를 더 근접하게 보아야 한다. 오늘날, 모든 디지털 프로토콜은 데이터 구조에 대해 정적이도록 정의된다. 해킹으로부터 보호받기 위한 암호화 대신에, 이들 정적 프로토콜 데이터 구조를 미지의 "이동 타겟"으로 변환하기 위해 "동적 진전"이 적용되어야 한다. 진행중인 사소한 랜덤 진전은 사람들이 데이터 구조를 여전히 판독하게 (판독하려 노력) 하지만, 프로그래머가 다음의 점진적인 변경을 예측하지 못하게 한다. 따라서, 비용을 거의 들이지 않기 위한 암호화의 해킹 보호가 획득된다.
이것이 작업하는 방식을 설명하기 위해, 디지털 프로토콜의 공통 예시인 컴퓨터 명령에서 시작한다. 단지 소수의 비트들만을 변경하면 이들 명령에 의해 정의된 기반 소프트웨어가 쉽게 깨질 수 있다. 거의 모든 경우에, 명령 마다 1비트를 변경하면 소프트웨어 프로그램이 파괴된다. 그러므로, 소프트웨어의 파괴 및 복구는 저렴하고 사소한 프로세스일 수 있다.
임의 주어진 CPU 프로세스는 그의 명령에 대한 공중 데이터 구조를 정의한다. 소프트웨어 명령을 파괴하고 복구하는 커스텀의 저렴한 동적 수단은 공중 프로토콜을 개인 프로토콜로 변환할 수 있다. 이러한 변환에 의해 유용한 툴은 소프트웨어, 북(book), 매체 등을 위한 DRM(Digital Rights Management) 시스템을 구현하게 된다.
기본 경제는 커스텀 솔루션에 대한 수요를 충족시키는 것이다. 사람들이 공통 DRM 시스템을 공유하면, 그들은 동일한 해킹 위험을 공유한다. 첫번째 DVD 사본 보호의 크래킹은 공통 보호 이용의 위험성을 드러냈다. 첫번째 DVD 사본 보호가 크래킹되자, 모든 보호된 DVD가 위험한 상태로 되었다. 따라서, 공통 보호의 공유는 실질적으로 그들을 참패시키기 위해 큰 경제적 보상을 초대한다. 이와 대조적으로, 모든 매체가 커스텀 보호에 의해 보호받았다면, 보호된 매체의 한조각의 성공적인 크래킹이 임의 다른 보호된 매체를 위험하게 하지는 않을 것이다. 노력에 대한 이러한 빈약한 보답은 가장 많은 이익을 위한 크래킹을 좌절시킨다.
공유 데이터 보호가 보다 큰 경제적 보상을 초대하기 때문에, 그것은 일반적으로 보다 강한 보호(예를 들어 블루-레이)를 요구한다. 그러나, 커스텀 보호는 보다 단순한 구현이 타당함을 보여준다. 동적 디지털 프로토콜의 전개는 이들 기본적인 경제 법칙을 리셋한다. 경제성에 더하여, 프로토콜의 취약성이 왜 유익한지를 설명한 후, 구현에 대한 세부 사항을 설명하겠다.
공통
커스텀
환경
대부분의 디지털 프로토콜에는 2 당사자, 즉 생산자(소오스 또는 개시자)와 프로토콜을 프로세싱하는 소비자가 있다. 동적 디지털 프로토콜을 성공시키기 위해, 이들 두 당사자는 통상적으로 공통 소오스 파일, 타임스탬프, URNG 구현 및 통계 프로세싱 애플리케이션에서 시작할 수 밖에 없다. 이러한 방식에 있어서, 양 당사자는 그들이 동일 랜덤 데이터 스트림(들) 및 애플리케이션(들)을 호환 가능 동적 디지털 프로토콜로 프로세싱하기 위해 그들을 가지고 있음을 알고 있다. 동적 디지털 프로토콜 "생산자" 및 "고객"이 합의(synchronization)되면, 그들은 해킹될 우려없이 계속적으로 데이터 구조를 교환할 수 있게 된다. 정확하게 환경이 동일하지 않다면, 프로토콜 소비자가 수용할 기대 데이터 구조를 아무도 생성할 수 없다.
랜덤성의
데이터, 어드레스 및 제어 평면에 입각한 이노베이션(
innovation
)
이들 평면의 각각은 이노베이션에 대한 독자적인 기회를 나타낸다. 데이터에 영향을 주지 않고도 그 어드레싱을 데이터 풀로 변경할 수 있다. 유사하게, 하나의 평면으로 고정(상태 동결)하면, 개발자는 다른 평면에서 이노베이션할 수 있게 된다. 이러한 이노베이션 기회는 불확정성 함수의 성질로부터 온다. 그러므로, 이와 동일한 기회가 통계 프로세싱(데이터/어드레스/제어 평면)내에서 이용될 수 있다.
통계적 프로세싱은, 일반적으로, 동일한 랜덤 스트림을 재생 가능하게 생성하기 위한 기능을 요구한다. 이러한 요구는 무한 개수의 솔루션을 통해, 이러한 요구를 지원하도록 데이터를 미리 생성하거나, 구현을 재설정하거나, URNG 기초 요소를 구축함에 의해 충족될 수 있다. 이러한 기초 요소는 동적 디지털 프로토콜을 구축하는 기초가 된다.
임의 주어진 소오스 파일은 불확정성의 풀 및 시간 모델을 포함한다. 타임스탬프는 불확정성의 풀내에 시드 값을 결정하여, URNG의 어느 예시가 생성될 것인지를 정의한다. 그러므로, 임의 타임스탬프는 모든 가능한 URNG 예시로의 어드레싱 함수를 나타낸다. 각 URNG 예시가 하나의 랜덤 스트림을 생성하는 것으로 제한되지만, 많은 다른 스트림이 동일한 불확정성의 풀로부터 생성될 수 있다. 이하는 지원 기초 요소이다:
정적
URNG
기초 요소
"정적 URNG"는 소오스 파일에서 발견된 불확정성의 풀에 기초하여 URNG 예시를 생성한다. 각각의 고유 타임스탬프는 동일 데이터를 공유하는 반면 서로 다른 URNG의 예시를 생성한다.
동적
URNG
기초 요소
"동적 URNG"는 새로운 불확정성의 풀을 생성하기 위해 주어진 소오스 파일 및 타임스탬프를 취득한다. 이러한 새로운 불확정성의 풀 및 타임스탬프는 이러한 URNG의 동적 예시를 정의한다. 그러므로, 각 고유 타임스탬프는 고유 난수 생성기를 생성하고, 그 다음 고유 랜덤 스트림을 생성한다.
동일 소오스 파일, 타임스탬프 및 상기 기초 요소는 동일한 URNG 예시를 생성하고, 후속적으로 동일 랜덤 스트림을 생성한다. 주어진 URNG 예시가 정의되면, 데이터 평면이 할당되어 있는 것이다.
클론(
clone
)
URNG
기초 요소
"클론 URNG"는 주어진 URNG 예시의 사본을 생성한다. 각 클론은 클로닝(cloning)의 포인트로부터 동일 랜덤 스트림을 생성할 것이다.
URNG
값 기초 요소
"URNG 값"은 랜덤 값을 획득하기 위한 표준 URNG 인터페이스 기초 요소이다.
랜덤 서브
스트림
-
인덱스된
URNG
기초 요소
"인덱스된 URNG"는 "인덱스된" 스트림에서 다음 랜덤 값을 획득하기 위한 인터페이스 기초 요소이다. 인덱스가 변경될 때마다, 인덱스 스트림이 리셋된다. 이러한 "리셋"에 의해 인덱스된 URNG가 재이용될 수 있으며, 그에 따라 임의 인덱스된 스트림이 재생된다. 예를 들어, 인덱스는 temp 값으로 설정되고 그 다음 이전 값으로 복구되며, 그에 따라 동일 인덱스 스트림은 동일 랜덤 스트림의 재생을 시작할 수 있게 된다. 클론 URNG 인터페이스 기초 요소를 인덱스된 URNG 인터페이스 기초 요소와 정합하여 이용하면, 임의 개수의 (서로 다른) 동시 랜덤 스트림이 동일한 불확정성의 풀로부터 지원받을 수 있게 된다.
가상 컷 - 메모리 어드레스 + 오프셋
예를 들어, 데이터 풀을 판독하는데 이용되는 메모리 어드레스의 오프셋을 추가하면 메모리 범위의 기점을 이동하는 것과 동일한 효과를 가진다. 이것은 카드 게임에서 데크(deck)를 "컷팅(cutting)"하는 것과 유사하다.
가상
셔플
(
shuffle
) - 메모리 어드레스
XOR
셔플
값
셔플값과 메모리 어드레스의 비트 단위 XOR의 동작은 제자리에서의 재빠른 셔플의 효과와 필적한다. 즉 메모리 범위는 XOR 동작에 의해 재정리된다. 셔플하고 컷할 수 있거나 컷하고 셔플할 수 있다. 이러한 가상 카드 트릭(trick)은 원하는 대로 여러 차례 실행될 수 있다.
랜덤
서브스트림
- 메모리 어드레스 오프셋 이용
메모리 어드레스를 조작하면, 일부 매우 유용한 부수적 효과를 가질 수 있다. 통상적으로, 불확정성 랜덤 값 생성기는 단지 하나의 랜덤 스트림만을 생성한다. 불확정성 랜덤 값 생성기내에서 이용된 각 메모리 어드레스가 거기에 추가된 오프셋을 가졌다면, 다른 랜덤 서브 스트림이 각각의 서로 다른 오프셋마다 생성된다. 임의 개수의 임의적인 랜덤 서브 스트림은 메모리 오프셋 값의 선택적 추가를 통해 생성될 수 있다. 이것은 우리에게 랜덤하게 어드레스할 수 있는 서브 스트림을 필요할 때 마다 제공한다. 이러한 툴은 많은 애플리케이션에서 매우 유용하다.
소오스
파일 및
URNG
예시의 식별
일반적으로, "파일"이라고 호칭하는 것은, 그것이 일부 형태의 "이름 공간"내(경로 이름)에 발견될 수 있는 장소를 식별할 것을 우선적으로 필요로 한다. 전형적으로, 위치의 마지막 부분만이 파일을 이름짓는데 이용된다. 경로 이름은 외부 소오스 파일 식별을 특정하지만, 타임스탬프 및 비-고유 식별자인 추가적인 내부 식별이 존재한다. 내부 식별과 외부 식별간에는, 임의 소오스 파일이 알려진 시스템내에 배치되어야 한다. 정확한 소오스 파일이 발견되었으면, 동적 식별자(개방 파일 ID)가 정의될 수 있다.
URNG 예시를 생성하기 위해 소오스 파일과 타임스탬프가 채용됨에 따라, 그들은 동적 URNG 예시 식별자를 제공받는다. 클론 예시가 생성됨에 따라, 그들은 또한 추가적인 식별자를 제공받는다. 명백히, 통계적 프로세싱 애플리케이션은 이들 URNG 예시 식별자를 관리하고 추적해야 할 것이다.
하드웨어 애플리케이션에 있어서, 불확정성의 풀의 탑재 및 어드레스 생성기의 초기화는 URNG 예시의 식별을 완료한다. ("셔플"과 함께 또는 "셔플"없이) "컷"을 지원하는 각 추가적인 어드레싱 생성기는 인덱스된 URNG에 대한 수단을 제공한다.
생산자와 고객의 합의
데이터 구조의 생산자와 고객이 동일한 소오스 파일과 타임스탬프에서 시작하면, 그들은 동일한 URNG를 생성함에 의해 제 1 레벨의 합의에 도달한 것이다. 통계적 프로세싱 애플리케이션(들)은, 통상적으로, 특유의 랜덤 시퀀스를 나타내는 값들(서브 스트림 식별자)을 정의해야 한다. 이들 서브 스트림 식별자들은 인덱스된 URNG 기초 요소의 "인덱스" 값으로 된다. 통계적 프로세싱 애플케이션이 새로운 랜덤 서브 스트림을 요구할 때마다, 그것은 새로운 인덱스(스트림) 값을 생성할 수 있다. 이러한 인덱스 값은 데이터 구조내에 있거나 그렇지 않을 수 있다. 예를 들어, 일부 인터넷 프로토콜은 프로토콜 정의내에 수록된 "시퀀스 번호"를 가진다. 이들 시퀀스 번호는 인덱스 값으로 매핑될 수 있다. 이들 인덱스 값은 랜덤성의 미세 결정립 어드레싱 (시간) 함수로 된다. 명백히, 대부분의 프로토콜 시퀀스 번호는 특별한 이유로 정렬되지만, 이들 인덱스 값들이 인접할 필요는 없다. 이들 인덱스를 생성하고 관리하는 알고리즘이 정확하다면, 인덱스된 URNG 기초 요소는 임의 주어진 (유효) 인덱스에 대해 동일한 랜덤 서브 스트림을 제공할 것이다.
시작 인덱스 값들은 애플리케이션에 의해 분명하게 또는 암시적으로 정의될 수 있다. 거래 계좌 번호가 분명하게 정의된 인덱스의 실례일 수 있으며, 반면 전자 메일에서의 제 3 첨부가 암시적인 실례일 수 있다. 그러나, 임의 애플리케이션 특정 알고리즘은 임의 (유효) 인덱스 값을 생성할 수 있다.
애플리케이션 특정 집합 - 해시 함수, 파괴 및 복구 프로세스
디지털 프로토콜내의 취약한 데이터 구조를 보호하는 작업은 최대 2개의 서로 다른 프로세싱 소자의 애플리케이션 특정 집합을 요구할 수 있다. 제 1 집합은 데이터 구조를 단일 값으로 감소시키는 일종의 "해시" 또는 CRC(Cycle Redundancy Check) 함수이다. 필요한 경우, 제 2 집합은 데이터 구조 보호 파라독스를 실시하는데 이용된다.
정적 데이터 구조를 "파괴하고 복구"할 확률은 무한하고, 그에 따라 그것은 무한한 솔루션 스페이스를 유지할 것이다. 정적 데이터 구조를 훼손하고 그것을 복구하기 위한 임의 가역 수단도 또한 유효하다. 정적 데이터 구조를 프로세싱하기 위한 실례들의 이러한 리스트는 가능한 솔루션들의 힌트(hint)를 나타낸다. 정적 데이터 구조가 생성되면, 임의 크기의 비트 플리핑(flipping), 임의 크기의 비트 교환(swapping), 주입된 후 제거된 임의 크기의 데이터, (임의 크기 유닛내에서) 임의 개수의 비트를 좌우로 회전, (바이트, 16-비트, 워드의) 비트 순서의 반전 등의 임의 조합이 채용될 수 있다. 무한한 솔루션 스페이스처럼, 보다 많은 솔루션이 생성될 수 있다.
많은 기존의 하드웨어 및/또는 소프트웨어 솔루션들간에 정적 데이터 구조의 가역 모핑이 삽입될 수 있다. 이러한 보호 개선은 기존 시스템에 대한 비교적 낮은 비용 또는 그 시스템의 지장에 대비하여 성취될 수 있다.
취약한 데이터 구조를 보호하기 위한 다른 수단은 동적 데이터 구조를 향해 곧바로 이동하는 것이다. 예를 들어, 많은 다른 데이터 구조는 "변이 기록(variant record)" 수단을 통해 중복될 수 있다. 이러한 방식에 있어서, 동일한 전체 데이터는 대략 동일한 양의 스페이스내에 저장될 수 있다. 각 변이 기록내에서는, 동일한 필드(same field)가 다른 순서로 저장된다는 것이 큰 차이이다. 생산자와 소비자는 이번에 어느 변이를 이용할지를 합의해야 한다. 생각의 합의는 불확정 데이터에 기초한 변이 기록의 선택(또는 변이 기록을 구축하기 위한 루틴의 선택)일 수 있다. 이러한 방식에서는, 시간이 지나면, 데이터 구조내의 동일 필드가 일정하게 이동하는 것처럼 보인다. 이러한 변이 기록 솔루션은 "파괴 및 복구" 집합을 요구하는 것이 아니라, 데이터 구조내의 그 필드에 대한 하드웨어/소프트웨어 액세스를 재작업할 것을 요구한다.
기존의 정적 데이터 구조의 확정성을 파괴하는 병합은 유비쿼터스로 될 수 있도록 매우 낮은 비용이어야 한다. 이러한 방식에서, 임의 실질적 오버헤드(overhead)없이 디지털 프로토콜의 보안이 획득된다. 제 2 집합(해시 함수 또는 CRC)은 훨씬 낮은 오버헤드가 수반되는 선택을 제공한다.
RIC
(
Ross
Integrity
Check
)로 되도록
CRC
메타포(
metaphor
)의 개선
많은 인터넷 프로토콜은 CRC 함수를 채용하여 손상된(유효하지 않은) 패킷을 검출한다. CRC 검사가 실패하면, 패킷은 폐기된다. 이들 프로토콜은 자연적으로 누락 패킷을 대신하며, 유일한 결과는 일시적인 글리치(glitch)이다. 네트워크에 걸쳐 현재 전개된 많은 서로 다른 CRC 함수가 있다. 그러나, 의도된 대로 기능하기 위하여, 현재 CRC의 각 실시는 정확한 함수를 이용해야 한다. 이것은 현재의 CRC 메타포를 정의한다.
그래서, 우리는 메타포를 간단한 질의, 즉, 잘못된 CRC 함수가 실시되었을 경우 무슨 일이 발생되나?와 같은 질의로 변경할 수 있다. 이 경우, 프로토콜은 파괴되고 각 요청은 폐기된다. 이러한 CRC 검사의 한결같은 실패가 바른 의도라면, CRC 값은 실패한 "디지털 서명"으로 된다. 불행하게도, CRC 함수가 알려지게 되면, CRC 값은 그것이 CRC 검사를 통과할 정도로 해킹될 수 있었다. 솔루션을 완성하고 해킹을 방지하기 위해서는, 불확정 데이터를 CRC 계산에 병합해야 한다. 이와 같이 요구된 (불확정 크기의) 불확정 데이터는 URNG의 정확한 예시에 의해서만 생성될 수 있었다. 따라서, 해시/CRC 함수 + 추가적인 불확정 데이터의 집합은 각 패킷에 대한 보안 디지털 서명으로 되기 위해, 실질적으로 간단한 CRC 메타포를 개선한다. 그러므로, 임의의 인증되지 않은 패킷은 무시된다. CRC 메타포의 이러한 RIC 대체는 유비쿼터스로 되기에 충분할 정도로 낮은 비용을 유지한다.
불확정 크기의 불확정 데이터 어덴덤(addendum)과 집합으로부터의 해시/CRC 함수의 불확정 선택이 주어지면, 데이터 구조 + 어덴덤 해시/CRC RCI 함수가 계산된다. 서비스 제공자는 동일한 해시/CRC 함수를 선택하고, 동일한 불확정 어덴덤을 생성하고, 그 다음 RIC 값을 계산한다. 그 서비스는 단지, 데이터 구조에서 발견된 값과 인증이 매칭되면, 제공된다.
RIC
의 애플리케이션
명백하게, 인증을 위한 낮은 비용의 수단을 제공하기 위해 RIC가 임의 디지털 프로토콜에 추가될 수 있다. 인증 없이 많은 서비스가 제공되지만, 다른 것들은 인증을 지원하기 위해 매우 복잡한 인프라구조(예를 들어 SSL(Secure Socket Level))를 가진다. 1회 데이터 교환이 완료되었으면, 난수 생성기가 교환된 것이다. 그러므로, 인증을 지원하기 위해 요구된 최소 인프라구조가 수립되었다. 공유된 통계적 프로세싱 애플리케이션이 이러한 데이터 교환을 통해 이용된다고 가정하면, 하드웨어 또는 소프트웨에 있어서 동적 커스텀 애플리케이션이 교환되어 있는 것이다.
공중 어드레스를 개인 어드레스로 전환(미세 결정립 액세스 제어)
많은 서비스 제공자가 "공중 어드레스"를 알고 있다고 하자. 이러한 서비스 제공자가 RIC 인증을 지원하도록 개선된다고 가정하면, 단지 인증된 서비스만이 제공될 것이며, 모든 다른 요청은 무시된다. 따라서, RIC는 서비스에 대한 폐기 가능 액세스 제어 형태로 된다. 이러한 액세스 제어는 무한하게 가능한 애플리케이션을 가진다.
여기에서는 이러한 효과의 단순한 실례가 개시된다: 내 전화가 RIC 인증을 선택적으로 지원하면, 나는 낮 동안에는 나의 전화 번호를 "개방"하지만 밤에는 내게 전화할 것을 허용한 자들에게만 액세스를 제한할 수 있다. RIC의 효과를 고려한 다른 방식은 공중(알려진) 어드레스를 개인(오로지 인증받은) 어드레스로 전환시키는 것이다. 현재 임의 전자 메일, 전화 번호, 제어 시스템, IP 어드레스, 금융 거래 또는 인터넷 거래 등은 미세 결정립 액세스 제어를 가질 수 있다.
미세 결정립 취소 가능 액세스 제어가 없으면 많은 애플리케이션이 괴롭힘을 당한다. 예를 들어, 데이터베이스에 주어진 전형적인 액세스는 모든 기록을 커버(cover)한다. 대신에, 데이터베이스의 나머지에 대한 액세스는 거부하면서 알 필요가 있는 것은 인증받는 이러한 기록에만 액세스를 동적으로 제한함으로써 많은 조직들이 혜택을 입는다. 명백히, 이러한 미세 결정립 액세스 제어는 건강 관리 및 IRS 조직에 유용하다. 이러한 유형의 액세스 제어로는 다른 와이드-오픈(wide-open) 애플리케이션 스페이스가 있다.
통계적 비계 - 동일 특유의 파괴/복구 알고리즘
BR(Breaking and Restoring) 프로세스는 통계적 비계 프레임워크(framework)를 계속한다. BR 애플리케이션의 각 개발자는 BR 프로세싱 소자의 실시 및 다수-단계 선택을 위한 프레임워크를 생성하고 있는 중일 것이다. 프로그램적 제어 변수(단계들의 개수, 단계들의 순서, BR 소자의 선택 등)에 대해 설정된 제한들 모두는 URNG에 의해 생성된 데이터에 의해 정의된다.
정확한 URNG 예시와 합의가 수립되지만, 통계적 비계의 각 당사자는 동일한 특유의 불확정 데이터에서 시작한다. 프레임워크내의 각 서브 단계는 추가적인 데이터 파라메타를 필요로 한다. 임의의 파라메타, 데이터 아이템, 선택 값, 카오스 명령등은 일관된 (및 재생 가능) 방식으로 인덱스된 URNG를 제공받을 수 있다.
명백하게, 프레임워크는 이루어졌던 모든 파괴를 복구하는 것을 처리해야 할 것이다. 임의의 새로운 파괴 프로세스 소자가 이전 파괴 프로세스 소자의 결과에 영향을 미친다고 가정할 경우, 복구 시퀀스는 반전 순서로 그들을 복구함에 의해 각각의 파괴를 되돌려야만 할 것이다. "LIFO(last in first out)" 스택(stack)의 프로세싱은 클래식한 잘 알려진 알고리즘적 메타포이다.
BR 프로세스와 RIC가 채용된다고 가정할 경우, 임의 변경이 이루어지기 전에, RIC 값이 계산되고 데이터 구조내에 보관된다. 데이터 구조가 복구되면, RIC는 데이터 구조를 유효화하고 인증을 확인하기 위해 재 계산된다.
파괴/복구의 선택적 이용 또는
RIC
상기 섹션은, BR 프로세스와 RIC가 동시에 채용되는 경우를 커버한다. 그러나, 거기에는 그들 중 단지 하나만이 이용되는 많은 유효 애플리케이션이 있다. RIC는 액세스 제어에 대한 낮은 비용의 솔루션처럼 많은 디지털 프로토콜에서는 독보적이다. BR 프로세스의 독보적 이용은 소프트웨어 DRM들의 경우에 이용될 것이다. 단지 RIC만이 이러한 소프트웨어 DRM 경우에 채용되면, 그 단일 공격 포인트는 해킹에 대한 유혹적인 목표물로 될 것이며, 따라서 RIC의 효과가 무효화될 것이다. 그러나, BR 프로세스의 독보적 이용은 소프트웨어를 보호하기에 충분할 정도로 강하다. 결국, 임의 부적절하게 복구된 소프트웨어는 비 기능적(nonfunctional)이다. BR 프로세스 또는 RIC를 이용할 무한 개수의 애플리케이션들이 있다.
데이터 합동 생성기(
data
congruential
generator
)
"선형 합동 생성기"는 URNG 구현내의 파라독스 안전 값으로 변환되어야 하는 결정론적 값을 생성한다. 불확정성 함수의 파라독스 안전 도메인 값을 생성하는 요건은 동일하지만, 결함있는 PRNG를 제거하면 보다 나은 랜덤성 품질로 프로세스가 단순화된다.
불확정성의 풀로부터의 하나(보다 많은)의 비 결정론적 값에서 시작하여, 프라임 모듈로 동작(prime modulo operation)으로부터 도메인 값을 생성할 수 있다. "선형 합동 생성기" 대신에, "선형" 방정식을 파라독스 안전 데이터로 대체하여, DGC(Data Congruential Generator)를 생성한다. 불확정성의 풀내로 2개의 랜덤 인덱스(시드 0, 시드 1)가 주어질 경우, 여기에 대체 C 코드 실례가 있다.
주의: 본 실시 예는 64 비트 값을 생성하기 위해 연속하는 2개의 32 비트 값들을 이용한다. 그 연속성 대신에, 거의 임의의 이진 동작이 또한 기능할 것이다. 단일 풀 값은 기능적이지만, 그것은 너무 빠르게 동일 어드레싱 시퀀스를 반복하는 경향이 있다. 상기 프라임 번호를 대체함에 의해 다른 도메인 값 생성기를 생성할 수 있다. DCG 실시 예는 하드웨어 또는 소프트웨어에서 생성될 수 있다.
"C 헤더"
이 C 헤더는 상술한 코드 스니핏(code snippet)에서 누락된 일부 세부 사항에 대한 정보를 준다.
상술한 실시 예는 본 발명의 원리의 애플리케이션의 단순한 예시임을 알 것이다. 본 발명은 그의 사상 또는 필수적인 특성으로부터 벗어나지 않고서 다른 특정 형태로 구현될 수 있다. 설명한 실시 예는 단지 예시적인 것일 뿐 제한이 아니며 모든 측면에서 고려되어야 한다. 그러므로, 본 발명의 범주는 상술한 설명보다는 첨부된 청구범위에 의해 표시된다. 청구범위의 등가성의 범위 및 의미내에 있는 모든 변경은 그들의 범주내에 포함될 것이다
예를 들어, 상술한 설명이 그러한 시스템, 방법 등에 대한 특정 이용을 설명하지만, 그 애플리케이션은 과장적이고, 일부 경우에는 이 시점에 알지 못하는 것일 수 있음을 알 것이다.
추가적으로, 도면이 특정의 접속, 관계 및 시퀀스를 도시하고 있지만, 청구 범위에 의해 설명되지 않고 그에 의해 사용되지도 않은 과장된 접속, 관계 및 시퀀스가 도시되며, 하나 이상의 본 발명의 비 제한적 실시 예로 구현될 수 있음을 알 것이다.
따라서, 본 발명은 본 발명의 최선의 실질적이고 바람직한 실시 예인 것으로 간주되는 것과 관련하여 특정하게 및 세부적으로 설명되었지만, 당업자에게는 크기, 재질, 형상, 형태, 기능, 동작 방식, 어셈블리 및 이용을 포함하되, 그에 국한되지 않은 수많은 수정이, 청구 범위에 설명된 본 발명의 원리 및 개념을 벗어나지 않고도 이루어질 수 있음을 알 것이다. 또한, 본 명세서에서 설명된 특징, 기능, 구조, 방법 중 하나 이상으로 필수적으로 구성되는 것에 실시 예가 제한되지 않음을 이해할 것이다.
Claims (27)
- 컴퓨팅 디바이스(computing device)를 이용하여 정보를 통계적으로 프로세싱하는 시스템으로서,
a) 프로세서(processor)를 포함하고, 프로세싱 아케텍쳐(processing architecture)를 생성함에 의해 데이터의 통계적 프로세싱을 관리하고 제어하도록 구성된 아키텍트 모듈(architect module);
b) 아키텍트 모듈에 기능적으로 결합되고, 비 결정론적 값들의 스트림을 제공하도록 구성된 비 결정론적 데이터 풀 모듈(non-deterministic data pool module);
c) 아키텍트 모듈에 기능적으로 결합되고, 각각이 아키텍트 모듈에 의해 요청된 데이터를 통계적으로 프로세싱하도록 구성된, 다수의 기능적으로 등가인 데이터 프로세싱 모듈(functionally equivalent data processing module);
d) 아키텍트 모듈과 기능적으로 통신하며 통계적으로 프로세싱될 데이터 세트를 피딩(feeding)하도록 구성되는 데이터 피드 모듈 - 상기 아키텍트 모듈은 데이터 세트의 통계적 프로세싱을 위한 프로세싱 아키텍쳐에서 이용될 다수의 기능적으로 등가인 데이터 프로세싱 모듈들 중에서 선택하고, 그의 이용을 관리함 - ; 및
e) 메모리 저장 디바이스를 포함하고, 아키텍트 모듈에 결합되며, 상기 프로세싱 아키텍쳐를 기록하도록 구성된 구조 메모리 모듈을
구비하는 시스템.
- 제 1 항에 있어서,
상기 아키텍트 모듈을 다수의 데이터 프로세싱 모듈들 중에서 선택하기 위해 랜덤 값을 이용하는
시스템.
- 제 1 항에 있어서,
상기 아키텍트 모듈은 실행 시간 동안에 프로세싱 아키텍쳐를 랜덤하게 변경하는 실행 시간 수정 모듈을 더 구비하는
시스템.
- 제 1 항에 있어서,
상기 아키텍트 모듈은 선택된 데이터 프로세싱 모듈의 이용을 위한 실행 지속 시간을 선택하기 위해 랜덤 값을 이용하는
시스템.
- 제 1 항에 있어서,
데이터 풀 모듈에 기능적으로 결합되고, 공통 데이터 풀을 프로세싱하여 애플리케이션 특정 데이터 풀(application specific data pool)을 생성하도록 구성되는 데이터 풀 프로세싱 모듈을 더 구비하는
시스템.
- 제 1 항에 있어서,
구조 메모리 모듈은 사전 정의된 프로세싱 아키텍쳐를 복제하기 위해 아키텍트 모듈에 정보를 제공하도록 구성되는
시스템.
- 제 1 항에 있어서,
아키텍트 모듈은 CRC 계산 소자를 더 구비하는
시스템.
- 정보 스트림을 통계적 프로세싱하는 방법으로서,
a) 통계적으로 프로세싱될 정보 스트림을 제공하는 단계;
b) 비 결정론적 데이터 풀을 제공하는 단계;
c) 다수의 기능적으로 등가인 데이터 프로세싱 모듈들로부터 데이터 프로세싱 모듈들을 선택하는 단계;
d) 선택된 데이터 프로세싱 모듈들의 동작을 구조화함에 의해 프로세싱 아키텍쳐를 생성하는 단계; 및
e) 프로세싱 아키텍쳐에 따라 정보 스트림을 통계적으로 프로세싱함에 의해 정보 스트림을 변경하는 단계를 구비하는
통계적 프로세싱 방법.
- 제 8 항에 있어서,
데이터 프로세싱 모듈의 이용을 재현하기 위한 프로세싱 아키텍쳐의 구조 정보를 기록하는 단계를 더 구비하는
통계적 프로세싱 방법.
- 제 9 항에 있어서,
비 결정론적 데이터 풀을 제공하는 단계, 데이터 프로세싱 모듈을 선택하는 단계, 프로세싱 아키텍쳐를 생성하는 단계, 구조 정보를 기록하는 단계 및 정보 스트림을 변경하는 단계의 각각은, 실행 시간까지 이들 단계들을 지연시키는 단계를 더 구비하는
통계적 프로세싱 방법.
- 제 8 항에 있어서,
비 결정론적 데이터 풀을 제공하는 단계는, 비 결정론적 데이터 풀을 통계적으로 프로세싱하여 애플리케이션 특정 데이터 풀을 생성하는 단계를 더 구비하는
통계적 프로세싱 방법.
- 제 8 항에 있어서,
데이터 프로세싱 모듈을 선택하는 단계와, 프로세싱 아키텍쳐를 생성하는 단계는,
a) 데이터 프로세싱 모듈을 랜덤하게 선택하기 위해 랜덤 값을 제공하는 단계;
b) 선택된 데이터 프로세싱 모듈의 이용 지속 시간을 랜덤하게 결정하기 위해 랜덤 값을 제공하는 단계; 및
c) 선택된 데이터 프로세싱 모듈을 시딩(seeding) 하기 위해 랜덤 값을 제공하는 단계를 더 구비하는
통계적 프로세싱 방법.
- 제 12 항에 있어서,
a) 실행 시간 동안 선택된 데이터 프로세싱 모듈을 랜덤하게 선택된 대체 데이터 프로세싱 모듈로 대체하는 단계; 및
b) 대체 데이터 프로세싱 모듈을 이용하여 정보 스트림을 계속적으로 변경하는 단계를 더 구비하는
통계적 프로세싱 방법.
- 제 8 항에 있어서,
a) 다수의 데이터 프로세싱 모듈의 이용을 랜덤하게 계층화하여, 데이터 프로세싱 모듈의 다수의 랜덤화된 계층들을 통해 정보 스트림이 프로세싱되도록 하는 단계를 더 구비하는
통계적 프로세싱 방법.
- 제 14 항에 있어서,
각 계층은 랜덤하게 선택된 비계 포인트(scaffolding points)들의 세트를 구비하는
통계적 프로세싱 방법.
- 제 15 항에 있어서,
각 계층은 서로 다른 랜덤 값을 이용하여 구성되는
통계적 프로세싱 방법.
- 제 8 항에 있어서,
정보 스트림을 제공하는 단계는, 사전 정의된 프로토콜에 맞추어 정보 스트림을 구성하는 단계를 더 구비하는
통계적 프로세싱 방법.
- 제 17 항에 있어서,
프로세싱 아키텍쳐로 정보 스트림의 CRC 계산 소자를 불확정 데이터와 병합함에 의해 프로토콜에 사용자의 인증을 제공하는 단계를 더 구비하는
통계적 프로세싱 방법.
- 제 9 항에 있어서,
구조 정보를 기록하는 단계는, 카운트파트(counterpart)에 의한 상기 방법의 동작이 동일 시간 인덱스 위치에서 시작하도록 동기화 값을 기록하는 단계를 더 구비하는
통계적 프로세싱 방법.
- 통계적으로 프로세싱된 정보 스트림을 복구하는 방법으로서,
a) 특정 프로세싱 아키텍쳐 풀과 연관된 통계적으로 프로세싱된 정보 스트림을 수신하는 단계;
b) 비 결정론적 데이터 풀을 제공하는 단계;
c) 특정 프로세싱 아키텍쳐와 하나 이상의 프로세싱 모듈의 이용을 재현하기 위한 구조 정보를 제공하는 단계;
d) 다수의 기능적으로 등가인 데이터 프로세싱 모듈들 중에서 하나 이상의 데이터 프로세싱 모듈들을 선택하고 그것을 기록된 구조 정보에 맞게 구조함에 의해 특정 프로세싱 아키텍쳐를 생성하는 단계;
e) 생성된 특정 프로세싱 아키텍쳐를 통해 통계적으로 프로세싱된 정보 스트림을 역으로 프로세싱함에 의해 통계적으로 프로세싱된 정보 스트림을 원래의 정보 스트림으로 복구하는 단계를 구비하는
정보 스트림 복구 방법.
- 제 20 항에 있어서,
구조 정보를 제공하는 단계는, 특정 프로세싱 아키텍쳐를 재현하기 위한, 수신된 통계적으로 프로세싱된 정보 스트림내에서 발견되는 명시적 구조 정보를 제공하는 단계를 더 구비하는
정보 스트림 복구 방법.
- 제 20 항에 있어서,
구조 정보를 제공하는 단계는, 특정 프로세싱 아키텍쳐를 재현하기 위한 명시적 정보로부터 구조 정보를 생성하는 것을 더 구비하는
정보 스트림 복구 방법.
- 제 20 항에 있어서,
비 결정론적 데이터 풀을 제공하는 단계는, 수신된 프로세싱 아키텍쳐에 따라 비 결정론적 데이터 풀을 프로세싱하여 애플리케이션 특정 데이터 풀을 생성하는 단계를 더 구비하는
정보 스트림 복구 방법.
- 정보 스트림을 통계적으로 프로세싱하도록 구성된 통계적 프로세싱 디바이스로서,
a) 프로세싱 아키텍쳐에 따라 정보 스트림의 통계적 프로세싱을 관리하고 제어하도록 구성된 아키텍트 모듈;
b) 아키텍트 모듈과 기능적으로 통신하며, 사전 정의된 프로세싱 아키텍쳐를 복제하고 이용된 프로세싱 아키텍쳐를 기록하기 위해 아키텍트 모듈에 정보를 제공하도록 구성된 구조 메모리 모듈;
c) 프로세서와 기능적으로 통신하며, 통계적으로 프로세싱될 수신 정보 스트림을 프로세서에 피딩하도록 구성된 입력 모듈;
d) 프로세서와 아키텍트 모듈에 기능적으로 결합된 비 결정론적 데이터 풀을 포함하고, 함수로부터 도출되지 않은 비 결정론적 값의 스트림을 아키텍트 모듈에 제공하도록 구성된 비 휘발성 메모리 디바이스;
e) 프로세서를 포함하고, 아키텍트 모듈에 결합되며, 프로세싱 아키텍쳐에 따라 아키텍트 모듈에 의해 요청된 정보 스트림을 통계적으로 프로세싱하도록 구성된 데이터 프로세싱 모듈; 및
f) 데이터 프로세싱 모듈과 기능적으로 통신하며, 데이터 프로세싱 모듈로부터 통계적으로 프로세싱된 정보 스트림을 수신하고 통계적으로 프로세싱된 정보 스트림을 전송하도록 구성된 출력 모듈을 구비하는
통계적 프로세싱 디바이스.
- 제 24 항에 있어서,
데이터 프로세싱 모듈은 데이터 프로세싱 명령 세트를 더 구비하는
통계적 프로세싱 디바이스.
- 제 24 항에 있어서,
데이터 프로세싱 모듈은 정보 스트림을 통계적으로 프로세싱하는 데이터 풀 또는 함수의 라이브러리를 더 구비하는
통계적 프로세싱 디바이스.
- 제 24 항에 있어서,
데이터 프로세싱 모듈은 CRC 계산 소자를 더 구비하는
통계적 프로세싱 디바이스.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/482,723 US9778912B2 (en) | 2011-05-27 | 2012-05-29 | Stochastic processing of an information stream by a processing architecture generated by operation of non-deterministic data used to select data processing modules |
US13/482,723 | 2012-05-29 | ||
PCT/US2013/043006 WO2013181196A1 (en) | 2012-05-29 | 2013-05-29 | Stochastic processing |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020167031559A Division KR101772002B1 (ko) | 2012-05-29 | 2013-05-29 | 통계적 프로세싱 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20150004908A KR20150004908A (ko) | 2015-01-13 |
KR101677557B1 true KR101677557B1 (ko) | 2016-11-18 |
Family
ID=47220061
Family Applications (4)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020177022828A KR20170099407A (ko) | 2012-05-29 | 2013-05-29 | 통계적 프로세싱 |
KR1020187029289A KR101961843B1 (ko) | 2012-05-29 | 2013-05-29 | 통계적 프로세싱 |
KR1020167031559A KR101772002B1 (ko) | 2012-05-29 | 2013-05-29 | 통계적 프로세싱 |
KR1020147033522A KR101677557B1 (ko) | 2012-05-29 | 2013-05-29 | 통계적 프로세싱 |
Family Applications Before (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020177022828A KR20170099407A (ko) | 2012-05-29 | 2013-05-29 | 통계적 프로세싱 |
KR1020187029289A KR101961843B1 (ko) | 2012-05-29 | 2013-05-29 | 통계적 프로세싱 |
KR1020167031559A KR101772002B1 (ko) | 2012-05-29 | 2013-05-29 | 통계적 프로세싱 |
Country Status (5)
Country | Link |
---|---|
US (4) | US9778912B2 (ko) |
EP (1) | EP2856331A4 (ko) |
JP (3) | JP5976928B2 (ko) |
KR (4) | KR20170099407A (ko) |
WO (1) | WO2013181196A1 (ko) |
Families Citing this family (40)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070214036A1 (en) * | 2006-03-08 | 2007-09-13 | Gosakan Aravamudan | Online product design |
US8959307B1 (en) | 2007-11-16 | 2015-02-17 | Bitmicro Networks, Inc. | Reduced latency memory read transactions in storage devices |
US8665601B1 (en) | 2009-09-04 | 2014-03-04 | Bitmicro Networks, Inc. | Solid state drive with improved enclosure assembly |
US8447908B2 (en) | 2009-09-07 | 2013-05-21 | Bitmicro Networks, Inc. | Multilevel memory bus system for solid-state mass storage |
US8560804B2 (en) | 2009-09-14 | 2013-10-15 | Bitmicro Networks, Inc. | Reducing erase cycles in an electronic storage device that uses at least one erase-limited memory device |
US9063673B2 (en) * | 2011-08-30 | 2015-06-23 | Uniquesoft, Llc | System and method for implementing application code from application requirements |
US9372755B1 (en) | 2011-10-05 | 2016-06-21 | Bitmicro Networks, Inc. | Adaptive power cycle sequences for data recovery |
US9043669B1 (en) | 2012-05-18 | 2015-05-26 | Bitmicro Networks, Inc. | Distributed ECC engine for storage media |
US9423457B2 (en) | 2013-03-14 | 2016-08-23 | Bitmicro Networks, Inc. | Self-test solution for delay locked loops |
US9798688B1 (en) | 2013-03-15 | 2017-10-24 | Bitmicro Networks, Inc. | Bus arbitration with routing and failover mechanism |
US9875205B1 (en) | 2013-03-15 | 2018-01-23 | Bitmicro Networks, Inc. | Network of memory systems |
US9971524B1 (en) | 2013-03-15 | 2018-05-15 | Bitmicro Networks, Inc. | Scatter-gather approach for parallel data transfer in a mass storage system |
US9934045B1 (en) | 2013-03-15 | 2018-04-03 | Bitmicro Networks, Inc. | Embedded system boot from a storage device |
US9400617B2 (en) | 2013-03-15 | 2016-07-26 | Bitmicro Networks, Inc. | Hardware-assisted DMA transfer with dependency table configured to permit-in parallel-data drain from cache without processor intervention when filled or drained |
US9842024B1 (en) | 2013-03-15 | 2017-12-12 | Bitmicro Networks, Inc. | Flash electronic disk with RAID controller |
US9672178B1 (en) | 2013-03-15 | 2017-06-06 | Bitmicro Networks, Inc. | Bit-mapped DMA transfer with dependency table configured to monitor status so that a processor is not rendered as a bottleneck in a system |
US9734067B1 (en) | 2013-03-15 | 2017-08-15 | Bitmicro Networks, Inc. | Write buffering |
US10120694B2 (en) | 2013-03-15 | 2018-11-06 | Bitmicro Networks, Inc. | Embedded system boot from a storage device |
US10489318B1 (en) | 2013-03-15 | 2019-11-26 | Bitmicro Networks, Inc. | Scatter-gather approach for parallel data transfer in a mass storage system |
US9430386B2 (en) | 2013-03-15 | 2016-08-30 | Bitmicro Networks, Inc. | Multi-leveled cache management in a hybrid storage system |
US9720603B1 (en) | 2013-03-15 | 2017-08-01 | Bitmicro Networks, Inc. | IOC to IOC distributed caching architecture |
US9501436B1 (en) | 2013-03-15 | 2016-11-22 | Bitmicro Networks, Inc. | Multi-level message passing descriptor |
US10078604B1 (en) | 2014-04-17 | 2018-09-18 | Bitmicro Networks, Inc. | Interrupt coalescing |
US10042792B1 (en) | 2014-04-17 | 2018-08-07 | Bitmicro Networks, Inc. | Method for transferring and receiving frames across PCI express bus for SSD device |
US9952991B1 (en) | 2014-04-17 | 2018-04-24 | Bitmicro Networks, Inc. | Systematic method on queuing of descriptors for multiple flash intelligent DMA engine operation |
US10055150B1 (en) | 2014-04-17 | 2018-08-21 | Bitmicro Networks, Inc. | Writing volatile scattered memory metadata to flash device |
US9811461B1 (en) | 2014-04-17 | 2017-11-07 | Bitmicro Networks, Inc. | Data storage system |
US10025736B1 (en) | 2014-04-17 | 2018-07-17 | Bitmicro Networks, Inc. | Exchange message protocol message transmission between two devices |
DK3320457T3 (da) | 2015-07-10 | 2021-06-14 | Whether or Knot LLC | System og fremgangsmåde til elektronisk datadistribution |
US10552050B1 (en) | 2017-04-07 | 2020-02-04 | Bitmicro Llc | Multi-dimensional computer storage system |
US11222172B2 (en) | 2017-05-18 | 2022-01-11 | Lakebolt Research | System and method for reactive computing |
RU181260U1 (ru) * | 2017-11-16 | 2018-07-06 | Федеральное государственное бюджетное военное образовательное учреждение высшего образования "Черноморское высшее военно-морское ордена Красной Звезды училище имени П.С. Нахимова" Министерства обороны Российской Федерации | Вероятностный вычитатель |
TWI840155B (zh) * | 2018-03-01 | 2024-04-21 | 鈺創科技股份有限公司 | 收集與分析資料的裝置及其方法 |
CN108648323B (zh) * | 2018-05-10 | 2021-02-19 | 广州市申迪计算机系统有限公司 | 目标信息的选取方法、装置、计算机设备和存储介质 |
US20200027567A1 (en) | 2018-07-17 | 2020-01-23 | Petuum Inc. | Systems and Methods for Automatically Generating International Classification of Diseases Codes for a Patient Based on Machine Learning |
CN112313915B (zh) * | 2018-11-05 | 2021-08-31 | 北京大学深圳研究生院 | 基于gspn和鞅理论网络空间拟态防御的安全性建模量化方法 |
WO2020183250A1 (en) * | 2019-03-12 | 2020-09-17 | Ajitkumar Dhanraj Hatti | A system for generation and verification of identity and a method thereof |
US11654635B2 (en) | 2019-04-18 | 2023-05-23 | The Research Foundation For Suny | Enhanced non-destructive testing in directed energy material processing |
US11907684B2 (en) * | 2021-02-16 | 2024-02-20 | Cassy Holdings Llc | High clock-efficiency random number generation system and method |
CN116318945B (zh) * | 2023-03-09 | 2023-10-20 | 南京航空航天大学 | 一种基于内生动态防御架构的多目标服务功能链部署方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060047735A1 (en) * | 2004-08-30 | 2006-03-02 | Nunes Ryan J | Random number generator |
US20080076525A1 (en) * | 2006-08-25 | 2008-03-27 | Igt | Quantum gaming system |
Family Cites Families (47)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE3400035A1 (de) | 1983-01-07 | 1984-07-12 | General Electric Co., Schenectady, N.Y. | Simulator fuer statistisches rauschen |
US5430836A (en) | 1991-03-01 | 1995-07-04 | Ast Research, Inc. | Application control module for common user access interface |
JPH05241593A (ja) * | 1991-12-25 | 1993-09-21 | Matsushita Electric Ind Co Ltd | 時系列信号処理装置 |
GB2288519A (en) * | 1994-04-05 | 1995-10-18 | Ibm | Data encryption |
DE69615342D1 (de) | 1995-01-25 | 2001-10-25 | Haworth Inc | Modulares kommunikationssystem |
JPH1020781A (ja) * | 1996-06-28 | 1998-01-23 | Nippon Telegr & Teleph Corp <Ntt> | 電子署名方法、その検証方法および装置 |
US6104811A (en) * | 1996-08-16 | 2000-08-15 | Telcordia Technologies, Inc. | Cryptographically secure pseudo-random bit generator for fast and secure encryption |
US5909494A (en) * | 1997-02-14 | 1999-06-01 | At&T Corp. | System and method for constructing a cryptographic pseudo random bit generator |
US6243635B1 (en) | 1997-08-27 | 2001-06-05 | Nartron Corporation | Integrated seat control with adaptive capabilities |
JPH11109859A (ja) * | 1997-10-06 | 1999-04-23 | Nec Corp | 擬似乱数発生方法および装置 |
US6298481B1 (en) | 1998-10-30 | 2001-10-02 | Segasoft, Inc. | System for modifying the functionality of compiled computer code at run-time |
US7058075B1 (en) | 1999-06-15 | 2006-06-06 | Cisco Technology, Inc. | Self-configuring interface for communication protocols |
US6678853B1 (en) | 1999-12-17 | 2004-01-13 | Hewlett-Packard Development Company, L.P. | Method and apparatus for generating random code |
US7024690B1 (en) * | 2000-04-28 | 2006-04-04 | 3Com Corporation | Protected mutual authentication over an unsecured wireless communication channel |
US7739409B2 (en) | 2000-09-26 | 2010-06-15 | King Green Ltd. | System and method for making available identical random data to seperate and remote parties |
DE60125139D1 (de) | 2001-01-16 | 2007-01-25 | Ericsson Telefon Ab L M | Zufallszahlengenerator basierend auf Komprimierung |
US6792439B2 (en) * | 2001-04-13 | 2004-09-14 | Science Applications International Corp. | Method and apparatus for generating random numbers with improved statistical properties |
FR2829643A1 (fr) * | 2001-09-12 | 2003-03-14 | Everbee Wireless Ltd | Procede pour generer des nombres aleatoires |
US20040205567A1 (en) | 2002-01-22 | 2004-10-14 | Nielsen Andrew S. | Method and system for imbedding XML fragments in XML documents during run-time |
US7209561B1 (en) * | 2002-07-19 | 2007-04-24 | Cybersource Corporation | System and method for generating encryption seed values |
EP1450250B1 (en) * | 2003-02-11 | 2006-08-23 | IP-First LLC | Random number generator with selectable dual random bit string engines |
US7139785B2 (en) | 2003-02-11 | 2006-11-21 | Ip-First, Llc | Apparatus and method for reducing sequential bit correlation in a random number generator |
US7085791B2 (en) * | 2003-02-14 | 2006-08-01 | Lucent Technologies Inc. | Method and apparatus for generating a pseudo random number |
US7502468B2 (en) | 2003-09-02 | 2009-03-10 | Ncipher Corporation Ltd. | Method and system for generating a cryptographically random number stream |
US7523305B2 (en) * | 2003-12-17 | 2009-04-21 | International Business Machines Corporation | Employing cyclic redundancy checks to provide data security |
US7770014B2 (en) * | 2004-04-30 | 2010-08-03 | Microsoft Corporation | Randomized signal transforms and their applications |
US7590830B2 (en) * | 2004-05-28 | 2009-09-15 | Sun Microsystems, Inc. | Method and structure for concurrent branch prediction in a processor |
US20050271207A1 (en) * | 2004-06-05 | 2005-12-08 | Helmut Frey | Method and system for chaotic digital signature, encryption, and authentication |
US7191372B1 (en) * | 2004-08-27 | 2007-03-13 | Xilinx, Inc. | Integrated data download |
CA2922200A1 (en) * | 2004-10-25 | 2006-05-04 | Security First Corp. | Secure data parser method and system |
US20060216524A1 (en) | 2005-03-23 | 2006-09-28 | 3M Innovative Properties Company | Perfluoropolyether urethane additives having (meth)acryl groups and hard coats |
JP4774509B2 (ja) * | 2005-05-13 | 2011-09-14 | 国立大学法人お茶の水女子大学 | 擬似乱数発生システム |
JP4718455B2 (ja) | 2005-09-09 | 2011-07-06 | 三菱電機株式会社 | 擬似乱数生成装置及び擬似乱数生成方法及び擬似乱数生成プログラム |
GB0602641D0 (en) | 2006-02-09 | 2006-03-22 | Eads Defence And Security Syst | High speed data processing system |
US7720225B2 (en) | 2006-03-07 | 2010-05-18 | Research In Motion Limited | Table splitting for cryptographic processes |
WO2007148244A1 (en) | 2006-06-20 | 2007-12-27 | Nxp B.V. | Random number generator system, method for generating random numbers |
JP4258551B2 (ja) * | 2007-01-25 | 2009-04-30 | 日本電気株式会社 | 認証システム、認証方法、及び認証プログラム |
US7962539B2 (en) * | 2007-04-30 | 2011-06-14 | International Business Machines Corporation | System, method and device of generating a random value |
CN101682506B (zh) * | 2007-05-18 | 2013-10-16 | 美国唯美安视国际有限公司 | 用于确定在保护数据时应用的可编程处理步骤的系统和方法 |
US8171068B2 (en) * | 2007-08-31 | 2012-05-01 | International Business Machines Corporation | Generating unique pseudorandom numbers |
US8448002B2 (en) | 2008-04-10 | 2013-05-21 | Nvidia Corporation | Clock-gated series-coupled data processing modules |
US8312071B2 (en) | 2008-04-11 | 2012-11-13 | International Business Machines Corporation | Method and structure for provably fair random number generator |
US8010846B1 (en) * | 2008-04-30 | 2011-08-30 | Honeywell International Inc. | Scalable self-checking processing platform including processors executing both coupled and uncoupled applications within a frame |
US9292259B2 (en) | 2008-08-06 | 2016-03-22 | Cassy Holdings Llc | Uncertainty random value generator |
US8324824B2 (en) | 2009-01-29 | 2012-12-04 | Ixys Corporation | 1-wire communication protocol and interface circuit |
US9342508B2 (en) | 2009-03-19 | 2016-05-17 | Microsoft Technology Licensing, Llc | Data localization templates and parsing |
US9207911B2 (en) | 2009-07-31 | 2015-12-08 | Cassy Holdings Llc | Modular uncertainty random value generator and method |
-
2012
- 2012-05-29 US US13/482,723 patent/US9778912B2/en active Active
-
2013
- 2013-05-29 JP JP2015515130A patent/JP5976928B2/ja active Active
- 2013-05-29 KR KR1020177022828A patent/KR20170099407A/ko not_active Application Discontinuation
- 2013-05-29 KR KR1020187029289A patent/KR101961843B1/ko active IP Right Grant
- 2013-05-29 WO PCT/US2013/043006 patent/WO2013181196A1/en active Application Filing
- 2013-05-29 KR KR1020167031559A patent/KR101772002B1/ko active IP Right Grant
- 2013-05-29 KR KR1020147033522A patent/KR101677557B1/ko active IP Right Grant
- 2013-05-29 EP EP13798025.6A patent/EP2856331A4/en not_active Ceased
-
2016
- 2016-07-20 JP JP2016142457A patent/JP6400640B2/ja active Active
-
2017
- 2017-08-14 US US15/676,324 patent/US10635399B2/en active Active
- 2017-08-29 US US15/689,281 patent/US9990180B2/en active Active
- 2017-11-24 US US15/822,058 patent/US9965249B2/en active Active
-
2018
- 2018-09-05 JP JP2018165973A patent/JP6616471B2/ja active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060047735A1 (en) * | 2004-08-30 | 2006-03-02 | Nunes Ryan J | Random number generator |
US20080076525A1 (en) * | 2006-08-25 | 2008-03-27 | Igt | Quantum gaming system |
Also Published As
Publication number | Publication date |
---|---|
WO2013181196A1 (en) | 2013-12-05 |
US9965249B2 (en) | 2018-05-08 |
US20180011692A1 (en) | 2018-01-11 |
US10635399B2 (en) | 2020-04-28 |
JP2019012547A (ja) | 2019-01-24 |
US20180074790A1 (en) | 2018-03-15 |
KR101961843B1 (ko) | 2019-03-25 |
KR20150004908A (ko) | 2015-01-13 |
JP6400640B2 (ja) | 2018-10-03 |
US20170371623A1 (en) | 2017-12-28 |
US9990180B2 (en) | 2018-06-05 |
KR101772002B1 (ko) | 2017-08-28 |
US9778912B2 (en) | 2017-10-03 |
JP5976928B2 (ja) | 2016-08-24 |
KR20170099407A (ko) | 2017-08-31 |
US20120303924A1 (en) | 2012-11-29 |
KR20160133014A (ko) | 2016-11-21 |
JP2015519669A (ja) | 2015-07-09 |
EP2856331A1 (en) | 2015-04-08 |
KR20180115343A (ko) | 2018-10-22 |
JP2017016667A (ja) | 2017-01-19 |
JP6616471B2 (ja) | 2019-12-04 |
EP2856331A4 (en) | 2016-06-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101677557B1 (ko) | 통계적 프로세싱 | |
Lazar et al. | Why does cryptographic software fail? A case study and open problems | |
O’neill | PCG: A family of simple fast space-efficient statistically good algorithms for random number generation | |
US11281769B2 (en) | Software integrity verification | |
RU2619895C1 (ru) | Система и способы для шифрования данных | |
US7779478B2 (en) | System and method for distributed module authentication | |
EP3542261B1 (en) | Method for performing a trustworthiness test on a random number generator | |
CN104981813A (zh) | 使用动态数据识别编码来保护可访问的系统 | |
US10331896B2 (en) | Method of protecting secret data when used in a cryptographic algorithm | |
Ateniese et al. | Secure outsourcing of cryptographic circuits manufacturing | |
CN108959980B (zh) | 安全芯片的公钥防护方法及公钥防护系统 | |
US20170061106A1 (en) | Anti-reverse engineering unified process | |
Occil | Random Number Generator Recommendations for Applications | |
Beri et al. | Dynamic software component authentication for autonomous systems using slack space | |
Wang | Tamper resistance for software protection | |
Abrahamsson | Security Enhanced Firmware Update Procedures in Embedded Systems | |
Andersen et al. | True Random Bit Generation | |
Sarıtaş | Analysis of Android Random Number Generator |
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 | ||
A107 | Divisional application of patent | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20191016 Year of fee payment: 4 |