KR20210116552A - 블록체인 헤더 검증에서의 동적 변환 - Google Patents

블록체인 헤더 검증에서의 동적 변환 Download PDF

Info

Publication number
KR20210116552A
KR20210116552A KR1020217025818A KR20217025818A KR20210116552A KR 20210116552 A KR20210116552 A KR 20210116552A KR 1020217025818 A KR1020217025818 A KR 1020217025818A KR 20217025818 A KR20217025818 A KR 20217025818A KR 20210116552 A KR20210116552 A KR 20210116552A
Authority
KR
South Korea
Prior art keywords
value
nonce
header
dynamic
transform
Prior art date
Application number
KR1020217025818A
Other languages
English (en)
Inventor
에드워드 엘. 로드리게즈 데 카스트로
사가 브이. 레디
Original Assignee
블록체인 에이직스 인크.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 블록체인 에이직스 인크. filed Critical 블록체인 에이직스 인크.
Publication of KR20210116552A publication Critical patent/KR20210116552A/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic 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/3236Cryptographic 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
    • H04L9/3239Cryptographic 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 involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30029Logical and Boolean instructions, e.g. XOR, NOT
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30134Register stacks; shift registers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0637Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0863Generation of secret information including derivation or calculation of cryptographic keys or passwords involving passwords or one-time passwords
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic 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/3297Cryptographic 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 involving time stamps, e.g. generation of time stamps
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
    • H04L2209/38

Abstract

집적 회로들, 방법들, 및 컴퓨터 프로그램들은 작업 증명(POW) 동작들을 수행하는 것에 관련된다. 하나의 집적 회로는 논스 값을 저장하기 위한 논스 레지스터, 헤더의 해시를 발생하도록 구성된 제1 일방 함수(OWF) 회로, 변환 값을 발생하기 위해 헤더의 해시를 변환하도록 구성된 동적 변환 회로, 및 검증 파라미터를 획득하기 위해 변환 값의 해시를 발생하도록 구성된 제2 OWF 회로를 포함한다. 헤더는 헤더의 POW 검증을 위한 논스 값을 포함한다. 또한, 동적 변환 회로에 의한 변환은 논스 값에 기초한다. 검증 파라미터는 POW가 논스 값을 갖는 헤더의 검증을 위한 미리 결정된 타깃에 맞는지를 결정한다.

Description

블록체인 헤더 검증에서의 동적 변환
우선권 주장
본원은 2019년 1월 15일자 출원되고, "Dynamic Transform in Blockchain Header Validation"이라고 하는 미국 가 특허 출원 번호 62/792,763호를 우선권 주장한다. 이 가 출원은 그 전체가 본원에 참조로 포함된다.
본원에 개시된 주제는 일반적으로 집적 회로들(IC들)의 설계에 관한 것이고, 더 구체적으로, 일부 실시예들은 보안 통신들을 위한 IC들의 설계에 관한 것이다.
주문형 집적 회로들(ASCI들)은 특정한 목적 또는 응용을 서브하도록 설계되고 구축된 집적 회로들이다. ASIC들은 범용 프로세서들 또는 필드 프로그램가능한 게이트 어레이들(FPGA들) 상에서 실행하는 소프트웨어 해결책들과 같은 더 느리고, 더 일반화된 해결책들에 비해 빠른 계산 속도를 제공한다. 이름이 의미하는 것과 같이, ASIC들은 단지 하나의 특정한 응용을 수행하도록 일반적으로 설계되어, 융통성과 계산 속도 사이에서 절충을 야기한다. ASIC들은 작업 증명 시스템들, 디지털 저작권 관리 시스템들, 및 엄격한 속도 및 효율 요건들을 일반적으로 갖는 다른 응용들과 같은, 암호화-관련 분야들에서 중요성이 증가하고 있다.
첨부된 도면들 중 다양한 것들은 본 개시내용의 예시적인 실시예들을 단지 도시하고 그것의 범위를 제한하는 것으로서 고려될 수 없다.
도 1은 일부 예시적인 실시예들에 따른, 변환-인에이블된 암호화 동작들(transform-enabled cryptographic operations)을 위한 집적 회로의 동작을 도시한다.
도 2는 실시예에 따른, 변환-인에이블된 해싱 코어의 블록도를 도시한다.
도 3은 실시예에 따른, 정보 계층구조에 대한 관리 방법의 플로우차트를 도시한다.
도 4는 실시예에 따른, 내부적으로 프로그램가능한 집적 회로의 기능도를 도시한다.
도 5는 일부 실시예들에 따른, 블록체인 메시지의 구조를 도시한다.
도 6은 일부 실시예들에 따른, 작업 증명을 발생하기 위한 방법의 플로우차트이다.
도 7은 일부 실시예들에 따른, 동적 변환의 동작을 도시한다.
도 8은 일부 실시예들에 따른, 동적 변환을 위한 초기 값의 계산을 도시한다.
도 9는 일부 실시예들에 따른, 의사 랜덤 이진 시퀀스(PRBS)를 사용하여 다음 동적 변환을 계산하기 위한 과정을 도시한다.
도 10은 일부 실시예들에 따른, 부분적 PRBS를 사용할 때 다음 동적 변환을 계산하기 위한 과정을 도시한다.
도 11은 일부 실시예들에 따른, 이전의 제1 보안 해시 알고리즘(SHA) 변환의 값을 사용할 때 다음 동적 변환의 계산을 도시한다.
도 12는 일부 실시예들에 따른, 작업 증명을 검증하기 위한 과정(process)을 도시한다.
도 13은 일부 실시예들에 따른, 작업 증명 동작들을 위한 복수의 코어를 갖는 집적 회로를 도시한다.
도 14a는 본원에 개시된 실시예들에 따른, 변환 함수를 코딩하기 전의 예시적인 프로그램가능한 변환 블록 구성을 도시한다.
도 14b는 일부 실시예들에 따른, 이진 키에 따라 코딩된 예시적인 프로그램가능한 변환 블록을 도시한다.
도 15는 일부 예시적인 실시예들에 따른, 작업 증명 동작들을 수행하기 위한 방법의 플로우차트이다.
도 16은 본원에 개시된 하나 이상의 예시적인 과정 실시예가 머신에 의해 또는 머신에서 구현되거나 제어될 수 있는 예를 도시한 블록도이다.
예시적인 회로들, 방법들, 및 컴퓨터 프로그램들은 각각의 POW 사이클 동안 변화하는 수학적 연산들을 사용하여 작업 증명(proof-of-work)(POW) 검증들을 수행하는 것에 관련된다. 예들은 단지 가능한 변화들을 예시한다. 달리 명시적으로 언급되지 않는다면, 소자들 및 기능들은 선택적이고 조합되거나 세분될 수 있고, 동작들은 시퀀스에 있어서 변화하고 또는 조합되거나 세분될 수 있다. 다음의 설명에서, 설명의 목적들을 위해, 수많은 특정한 상세들이 예시적인 실시예들의 철저한 이해를 제공하기 위해 제시된다. 그러나, 본 주제가 이들 특정한 상세없이 실시될 수 있다는 것은 본 기술 분야의 통상의 기술자에게 명백할 것이다.
일부 예시적인 실시예들에서, 집적 회로(IC)는 IC가 주어진 입력에 적용하는 수학적 POW 동작들을 동적으로 수정하기 위한 회로망을 포함하고, 여기서 수정은 상기 입력 및 이전의 POW 검증들 동안 수행된 하드웨어-구현된 계산들에 기초한다. 결과적인 출력들은 랜덤한 것으로 나타나지만 프로그램적으로 대체가능하여, 다른 IC들에 의해 또는 다른 디바이스들 상에서 실행하는 소프트웨어 프로그램들에 의해 POW 동작들의 외부적 검증을 가능하게 한다.
일부 예시적인 실시예에서, 블록체인 헤더들의 작업 증명(POW)을 수행하기 위한 ASIC 회로는 2개의 일방 함수(one-way function)(OWF) 회로들 간에 동적 변환 함수 회로를 포함한다. 동적 변환 회로는 하나 이상의 비트를 변경하기 위해 제1 OWF의 출력에 대해 연산을 수행하고, 결과는 제2 OWF로의 입력으로서 사용된다. 제2 OWF의 출력은 출력이 소정의 정확도 기준에 맞는지를 체크하기 위해 사용된다. 동적 변환 함수 회로를 "동적"이라고 하는데 왜냐하면 함수는 POW 동작들 동안 매 사이클마다 변화하고, 여기서 각각의 사이클은 체크되는 헤더 내의 논스에 대해 상이한 값을 포함하기 때문이다. 동적 변환 함수 회로는 소정의 값으로 초기화되고 다음에 논스 레지스터의 값과 같은, 하나 이상의 파라미터에 기초하여 매 사이클마다 변화될 수 있다.
하나의 집적 회로는 논스 값을 저장하기 위한 논스 레지스터, 헤더의 해시를 발생하도록 구성된 제1 OWF 회로, 변환 값을 발생하기 위해 헤더의 해시를 변환하도록 구성된 동적 변환 회로, 및 검증 파라미터를 획득하기 위해 변환 값의 해시를 발생하도록 구성된 제2 OWF 회로를 포함한다. 헤더는 헤더의 작업 증명(POW) 검증을 위한 논스 값을 포함한다. 또한, 동적 변환 회로에 의한 변환은 논스 값에 기초한다. 검증 파라미터는 POW가 논스 값을 갖는 헤더의 검증을 위한 미리 결정된 타깃에 맞는지를 결정한다.
한 실시예에서, 방법은 헤더를 수신하고, 논스 값으로 논스 레지스터를 초기화하고, 헤더의 해시를 발생하기 위해 제1 OWF를 수행하기 위한 동작들을 포함한다. 논스 값을 포함하는 헤더는 작업 증명(POW) 검증을 위해 체크된다. 또한, 방법은 변환 값을 초래하는 헤더의 해시를 변환하기 위해 동적 변환을 수행하기 위한 동작을 포함한다. 동적 변환에 의한 변환은 논스 값에 기초한다. 추가적으로, 방법은 검증 파라미터를 초래하는 변환 값의 해시를 발생하기 위해 제2 OWF를 수행하고 검증 파라미터에 기초하여, POW가 논스 값을 갖는 헤더의 검증을 위한 미리 결정된 타깃에 맞는지를 결정하기 위한 동작들을 포함한다.
도 1은 일부 예시적인 실시예들에 따른, 변환-인에이블된 암호화 동작들을 위한 집적 회로(IC)(102)의 동작을 도시한다. IC(102)는 변환-인에이블된 해싱 동작들을 수행하는, 독립형 집적 회로로서 구현되는 변환-인에이블된 해싱 코어(106)를 포함한다.
IC(102)는 또한 프로그래밍 및 구성 인터페이스(104) 및 구성 키(108)를 포함한다. 구성 키(108)는 이진 디지트들의 스트링으로 구성되고 본원에서 변환 키 또는 변환 키라고도 한다.
2명의 예시적인 사용자(110 및 112)는 IC(102)에 액세스할 수 있고, 제1 사용자(110)는 프로그래밍 및 구성 인터페이스(104)에 액세스하고, 제2 사용자(112)는 변환-인에이블된 해싱 코어(106)에 액세스한다. 제2 사용자(112)는 해싱 코어 사용자 인터페이스(도시 안됨)를 사용할 수 있다. 다양한 실시예들에서, 구성 및 프로그래밍 인터페이스(104) 및 해싱 코어 사용자 인터페이스의 기능들 중 일부 또는 모두는 단일 구성, 프로그래밍, 및 해싱 코어 사용자 인터페이스 내로 조합될 수 있는 반면, 다른 실시예들에서, 이러한 기능들은 2개보다 많은 인터페이스들 간에 분할될 수 있다.
동작의 일반적인 모드는 제1 사용자(110)가 IC(102)의 동작의 다양한 파라미터들을 구성하고 하나 이상의 구성 키(108)를 변환-인에이블된 해싱 코어(106) 내의 프로그램가능한 변환 함수 또는 함수들 내로 프로그램하는 둘 모두를 위해 프로그래밍 및 구성 인터페이스(104)를 사용하는 것이고, 여기서 그들은 데이터경로 회로망으로서 구현될 수 있다. 구성 키들(108)은 가장 엄격한 의미에서 통상적인 암호화 키들이 아니고, 대신에 예를 들어, 원래의 입력 데이터를 변환된 입력 데이터로 변환하기 위해, 선택된 변환 함수들이 어떻게 활성화되는지의 커스터마이즈된 설명들이라는 점에 주목한다.
제2 사용자(112)는 대응하는 해시 값을 계산 및 출력할 코어(106)에 직접 전달되는 입력 값, 트랜잭션, 또는 메시지를 입력한다. 주어진 입력 값 및 구성 키(104)에 대해, 변환-인에이블된 IC(102)의 인스턴스의 임의의 사용자는 동일한 대응하는 해시 값을 계산할 수 있다. 입력 값은 예를 들어, 블록체인으로부터의 트랜잭션 블록 헤더를 포함할 수 있지만, 다른 유형들의 입력들이 사용될 수 있다. 대응하는 해시 값을 발생하기 위해 입력을 처리하는 것이 코어(106) 내로 프로그램된 구성 키, 또는 구성 키들의 지식을 요구하지 않고서 제2 사용자에 의해 수행될 수 있다는 점에 주목한다.
코어(106)는 암호화 함수(일반적으로 보안 해싱 알고리즘과 같은, 역전하기가 어려운 암호화 OWF)를 구현하는 회로망의 하나 이상의 블록을 포함한다. 포함된 암호화 알고리즘들의 수학적 특성들, 특히 역전하가기가 어려운 OWF들로서의 그들의 특성과의 변환의 상호작용으로 인해, 조합된 효과는 쉽게 해독되지 않고, 잡음과 쉽게 구별되지 않고, 사용자의 키 또는 키들의 완전한 이전의 지식이 부족한 당사자에 의해 쉽게 대체가능하지 않지만, 그럼에도 불구하고 완전히 일치하고 쉽게 대체가능하고 그러므로 (데이터경로 회로망 내에 키들을 구체화하도록 프로그램된 ASIC을 갖는 당사자와 같은) 그들의 지식이 부족하면서 심지어 계산에 그들을 이용하기 위한 수단에의 키들 또는 액세스의 이전의 지식을 갖는 당사자에 의해 검증가능한 회로에 의해 계산된 최종 값 내에 포함된 비트들의 체계적 변환을 발생하는 것이다. 본원에 사용되는 것과 같이, "어려운" 및 "쉬운"과 같은 용어들은 계산적 복잡성 이론, 특히, 다항 시간 이론의 의미에서 이해될 수 있다. 예를 들어, "역전하기가 어려운"은 막대한 양의 계산적 리소스들이 매우 긴 시간(예를 들어, 주들, 달들, 또는 연들) 동안 사용되지 않는다면, 해시 함수를 역전하기가 불가능하다는 것을 의미할 수 있다. 다른 한편으로, 해시 함수의 계산은 코어(106)가 해시를 수행하는 데 수 밀리초가 걸릴 수 있을 때 "쉬운"이라고 고려된다.
프로그램적 변환과 포함된 암호화 알고리즘들의 소정의 수학적 특성들(특히 앞서 언급된 것과 같이, 수행하기가 쉽지만 역전하기가 어려운 OWF들로서의 그들의 특성) 간에 이렇게 확립된 상호작용으로 인해, 조합된 효과는 회로에 의해 계산된 최종 값 내에 포함된 비트들의 체계적 변환을 발생하는 것이다. 변환은 쉽게 해독되지 않고, 잡음과 쉽게 구별되지 않고, 변환 함수 내로 프로그램된 키 또는 키들의 완전한 이전의 지식이 부족한 당사자에 의해 쉽게 대체가능하지 않다. 그럼에도 불구하고 변환은 완전히 일치하고 쉽게 대체가능하므로, (예를 들어, 그것의 데이터경로 회로망 내에 상기 키들을 구체화하는 이전에 프로그램된 ASIC를 부분적으로 갖는) 그들의 지식이 부족하면서 심지어 계산에 그들을 이용하기 위한 수단에의 키들 또는 액세스의 이전의 지식을 갖는 당사자에 의해 검증가능하다.
일부 실시예들에서, 각각의 사용자는 사람이지만, 다른 실시예들에서, 각각의 사용자는 전자 지갑 소프트웨어, 채굴 소프트웨어, 또는 다른 종류들의 자동화된 과정들과 같은 자동화된 과정이다. 소정의 실시예들에서, 전체로서 IC(102)의 다양한 동작 양태들의 구성을 위한 단일 인터페이스가 있고, 키들의 프로그래밍 또는 최종 변환-인에이블된 가능 해시 값들의 획득은 사용자에 의해 공급된 데이터에 기초하여 계산된다. 다른 실시예들에서, 그들 함수 중 일부 또는 모두는 별개이다.
일부 실시예들에서, IC(102)의 다양한 구현들이 본원에 설명된 기술의 다른 실시예들과 동일한 반도체 재료, 예를 들어, 실리콘 내로 물리적으로 집적된다. 일부 이러한 실시예들에서, IC(102)는 추가적으로 본원에 설명된 기술의 다른 실시예들에 더 접속될 수 있다. 예를 들어, 다양한 경우들에서, IC(102)는 프로그램가능한 변환 함수들 또는 동일한 IC(102) 내의 다른 회로들로서의 변환-인에이블된 해싱 코어(106) 내의 함수들에 공유된 액세스를 갖는다. 다양한 다른 실시예들에서, 변환-인에이블된 IC(102)는 마이크로프로세서, 네트워크 프로세서, 시스템-온-칩 등과 같은 다른 작업을 수행하는 또 하나의 집적 회로와 동일한 반도체 재료 내로 물리적으로 집적될 수 있다. 소정의 실시예들에서, 코어(106)는 마이크로-퓨즈들과 같은 일회용 프로그램가능한 회로 요소들에 의해 회로망으로서 구성 키(108)를 구체화하지만, 소정의 실시예들에서, 이진 레지스터들, 플립 플롭 회로들, 래치들, 게이트들, 랜덤 액세스 메모리(RAM), 비휘발성 RAM 등과 같은 다른 재기입가능한 회로 요소들이 사용될 수 있다.
도 2는 실시예에 따른, 변환-인에이블된 해싱 코어(106)의 블록도를 도시한다. 이 도면은 최종 변환-인에이블된 해시 값들을 획득하기 위해 제2 사용자(112)에 대해 수행되는 동작들을 도시한다.
사용자는 정보 스트림 관리 방법의 양태들을 제어하는 패스프레이즈(passphrase)(222)를 제공한다. 이 사용자는 예를 들어, 한 실시예에서 프로그래밍 및 구성 인터페이스(104)를 통해 사용자 패스프레이즈(222)를 제공하는, 도 1의 제1 사용자(110)를 포함할 수 있다. 패스프레이즈(222)는 IC(102)의 제조 동안, 또는 그 이후에 제공될 수 있다. 패스프레이즈(222)는 이진 수들의 스트링 또는 사람 사용자에 의해 보다 쉽게 기억될 수 있지만 이진 수들의 스트링으로 여전히 쉽게 변환가능한 텍스트의 스트링을 포함한다.
패스프레이즈(222)의 비밀성은 임의의 다른 당사자들이 관리되고 있는 정보 스트림의 생성을 가능하게 하는 것을 방지할 수 있다. 패스프레이즈(222)는 정보 계층구조에서 수행되는 모든 다른 동작들(예를 들어, 정보 스트림의 처리, POW 동작들을 수행하는 것, 및 정보 스트림을 식별하는 것)의 제어를 또한 가능하게 할 수 있다.
구성 키 발생 처리(220)는 패스프레이즈(222)에 기초하여 구성 키(108)를 계산한다. IC(102)는 패스프레이즈(222)를 수신하고 IC(102)에서 구성 키(108)를 발생하기 위해 온-칩 구성 키 발생 처리(220)를 수행한다. 다른 실시예들에서, 구성 키는 IC(102)에서 입력으로서 수신된다. 별개의 오프-칩 구현보다는, 온-칩 구성 키 발생(220) 처리가 설명되는 것과 같이, 보안성을 향상시킬 수 있다.
구성 키 발생 처리(220)는 패스프레이즈(222)에의 OWF의 적어도 하나의 애플리케이션을 포함한다. 한 실시예에서, 구성 키 발생 처리(220)는 패스프레이즈(222)에의 OWF의 2개의 순차적 애플리케이션을 포함한다. 구성 키 발생 처리(220)는 예를 들어, 패스프레이즈(222)에의 SHA256의 2개의 순차적 애플리케이션을 포함할 수 있지만, 본 개시내용은 그와 관련하여 제한되지 않는다.
OWF의 사용은 계산적으로 실행 불가능한 구성 키(108)로부터 패스프레이즈(222)의 파생을 하게 한다. 즉, 패스프레이즈(222)는 OWF의 업스트림이고 그러므로 암호학적으로 안전한다. 패스프레이즈(222) 및 계산 과정의 지식은 구성 키(108)의 쉬운 계산을 가능하게 한다. 그러나, 구성 키(108) 및 그것이 패스프레이즈(222)에 기초하여, 계산되는 과정의 지식은 패스프레이즈(222)의 쉬운 계산을 가능하게 하지 않는다. 그러므로, 이러한 실시예들에서, 패스프레이즈(222)의 지식은 구성 키(108)의 지식을 함축하지만, 구성 키(108)의 지식은 패스프레이즈(222)의 지식을 함축하지 않는다. 패스프레이즈(222)의 지식은 패스프레이즈(222)에 의해 설명되는 특정한 방식으로 수행하기 위해 정적 변환(208) 및 그러므로 IC(102)를 구성하는 데 사용되는 구성 키(108)를 발생하는 것이 요구된다.
그러므로, 한 실시예에서, 패스프레이즈(222)는 블록체인의 생성을 가능하게 하지만, 구성 키(108)는 패스프레이즈(222)를 알고 있지 않는 다른 사람들이 그럼에도 불구하고 블록체인 헤더들과 같은 헤더들(216)을 처리하고 검증하는 것을 가능하게 한다. 또한, 구성 키(108)의 지식은 정적 변환(208)의 공식화가 알려진다면, 헤더들(216)을 처리하기 위한 임의 수의 변환-인에이블된 암호화 IC들(102)의 생성을 가능하게 한다.
입력 메시지(202)는 헤더(216)를 포함하고, 헤더는 코어(106)에 제공되고 제1 OWF(204) 구현 해싱 블록을 통해 통과될 수 있다. 헤더(216)는 예를 들어, 블록체인으로부터와 같은, 후보 블록 헤더일 수 있다.
일반적으로, 제1 OWF(204)(예를 들어, 해싱 블록)는 적용가능한 해싱 알고리즘에 의해 정의된 수학적 연산들을 실행하는 회로망의 세트로서 구성될 수 있다. 하나의 광범위하게 사용되는 해싱 알고리즘은 SHA이고, 그것의 제2 버전은, 보통 길이가 256 비트들인 입력 메시지들을 위해, 이제 표준 해싱 알고리즘(달리 표시되지 않는다면 본원에서 SHA-256 또는 간단히 SHA라고 한다)으로서 사용된다. 그러나, 임의의 OWF가 사용될 수 있음에 따라, 본 개시내용은 그와 관련하여 제한되지 않는다. 일부 실시예들이 256-비트 값들을 참조하여 제시되지만, 동일한 원리들이 상이한 크기들(예를 들어, 512 비트들)을 갖는 값들을 위해 이용될 수 있다.
제1 OWF(204)의 출력은 헤더(216)의 해시(206)이다. 때때로 메시지 다이제스트라고 알려진 해시는 원래의 메시지 내용의 암호학적 설명의 유형으로서 사용될 수 있다.
해시(206)는 다음에 변환 블록으로서 회로망에서 또한 구현될 수 있는, 본원에서 정적 변환(208)이라고 하는, 커스터마이즈가능한 프로그램가능한 변환 함수들에 의해 처리된다. 정적 변환(208)은 "정적"이라고 하는데 왜냐하면, 프로그램될 때, 변환 블록 내의 회로망은 변환 블록을 위해 구성된 구성 키(108)를 반영하는, 제공된 데이터에 대해 특정한 프로그램적 변환을 수행하기 때문이다. 그러므로, 회로망이 적용하는 변환은 데이터경로를 따라 추가로 회로망에 의해 계산된 최종 값에 직접적으로 그리고 일관하여 영향을 줄 것이다.
아래에 더 상세히 논의되는 것과 같이, 동적 변환은 상이한 파라미터들에 기초하여 코어(106)에 의해 변화될 수 있는 변환 함수라고 한다. 동적 변환은 복수의 비트를 포함하는 이진 값에 의해 설명될 수 있다. 동적 변환은 출력 값을 발생하기 위해 입력 값에 대해 논리적 연산을 수행한다(예를 들어, 입력 값과 동적 변환을 정의하는 비트들과 비트끼리 XOR을 수행한다). 동적 변환은 "동적"이라고 하는데 왜냐하면 그것의 값은 각각의 헤더의 검증을 위해 변화하기 때문이다. 다른 실시예들에서, 동적 전달이 수개의 헤더마다 재사용되고 변화될 수 있다.
정적 변환(208)은 사용자에 의해 입력된 패스프레이즈에 기초하지만, 동적 변환은 패스프레이즈에 의존하지 않더라도, 때때로, 동적 변환은 구성 키에 기초하여 조정될 수 있다. 일부 경우들에서, 동적 변환은 구성 키 및 추가적인 파라미터들에 기초하여 변화되고, 다른 경우들에서 동적 변환은 구성 키에 의존하지 않고서 변화된다.
정적 변환(208)은 헤더(216)의 변환 값이라고 하는, 변환된 해시(210)를 발생한다. 정적 변환(208)은 일부 실시예들에서 하나 이상의 비트의 반전, 다른 실시예들에서 비트들의 전위(transposition) 또는 스와핑, 또는 이들의 조합과 같은, 헤더(216)의 해시의 간단한 변환일 수 있다. 정적 변환의 프로그래밍은 변환 함수 내로 공급되는 데이터가 받는 처리를 커스터마이즈할 수 있다. 구성 키(108)는 정적 변환(208)의 특정한 프로그래밍을 제어한다. 예를 들어, 구성 키(108)는 간단히 입력 데이터의 어떤 대응하는 비트들이 다양한 실시예들에 따라, 정적 변환(208)에 의해, 반전, 전위되거나, 또는 이 둘 다가 되는 것을 표시하는 이진 디지트들의 스트링이다. 즉, 한 실시예에서, 구성 키(108)의 각각의 특정한 비트는 입력 데이터의 각각의 대응하는 특정한 비트가 변환 없이 직접 통과되거나 반전된 후에 통과되는지를 결정한다. 일부 실시예들에서, 입력 비트의 변환은 정적 변환에서의 하나 이상의 비트 및/또는 다른 입력 비트들에 의존한다.
원래의 헤더(216)의 변환된 해시(210)는 다음에 제2 OWF(212)(예를 들어, 제2 해싱 블록)에 의해 처리된다. 일부 실시예들에서, 제2 OWF(212)는 제1 OWF(204)와 동일한 암호화 동작을 구현한다. 다른 실시예들에서, 제2 OWF(212)는 제1 OWF(204)와 상이한 암호화 동작을 구현한다. 코어(106)의 출력 값(214)은 그러므로 원래의 헤더(216)의 변환된 해시(210)의 해시이다.
변환-인에이블된 IC(102)의 보안 프로그래밍은 다양한 장점들을 가능하게 한다. 예를 들어, 신규한 정보 계층구조가 그 데이터에 외부적 가시성 또는 액세스가능성을 제공하지 않고서 구성 데이터를 저장하는 IC(102)를 통해 정의되고 암호학적으로 안전하게 될 수 있다. 정보 계층구조는 유용한 처리의 생성을 가능하게 하고 제공하고, 정보 스트림의 간단한 식별이 처리되게 하는, 암호화 관리 방법을 가능하게 한다. 정보 스트림은 예를 들어, 블록체인을 포함할 수 있다.
정적 변환(208)의 공식화는 공개될 수 있거나 그것은 알려지지 않은 채로 유지될 수 있다. 실시예들의 암호학적 강도는 정적 변환(208)의 비밀성에 의존하지 않는다. 정적 변환(208)의 커스터마이제이션을 제어하는 구성 키(108)는 또한 비밀로 유지될 수 있거나 공개로 될 수 있다. 그러나, 이 선택은 제2 사용자들(112)이 단지 원래의 프로그램된 회로망으로 또는 또한 복제되거나 또는 "클론된(cloned)" 회로망으로 정보 스트림을 처리할 수 있는 것이 의도되는지에 의존한다. 예를 들어, 일부 경우들에서, 정부, 회사, 또는 제2 사용자들(112)의 다른 집합과 같은 주어진 그룹의 멤버들만이 개인 정보 스트림을 처리하는 능력을 갖는 것이 의도되어서, 구성 키(108)는 이러한 의도된 당사자들과 단지 비밀 공유된다. 다른 경우들에서, 의도는 누구나 공유된 비밀에 대한 요구없이 공개 정보 스트림을 처리할 수 있는 것이라서, 구성 키(108)는 공개로 된다.
특정한 미리 결정된 출력 값(214)은 헤더(216)가 그로부터 비롯되는 주어진 정보 스트림의 유일한 식별자이다. 패스프레이즈(222)나 구성 키(108)의 지식을 갖고 있지 않는 제2 사용자(112)는 그러므로 프로그램된 IC(102)의 인스턴스를 사용하여 주어진 정보 스트림을 그럼에도 불구하고 식별할 수 있다. 이러한 제2 사용자(112)는 메시지들을 처리할 수 있지만 구성 키(108)를 액세스할 수 없게 그리고 비가시적으로 포함하도록 프로그램된 IC(102)의 복사들을 할 수 없다. 패스프레이즈(222)나 구성 키(108)의 직접적 지식을 갖지 않는 정보 스트림을 식별하는 이 능력은 소정의 사용 시나리오들에서 특히 유리할 수 있다.
예를 들어, 한 실시예에서, 정보 스트림은 블록체인이고, 미리 결정된 출력 값(214)은 블록체인을 유일하게 식별하는 ChainID이다. 미래에, 많은 수의 상이한 블록체인들이 있을 수 있어서, ChainID를 사용하면 프로그램된 변환-인에이블된 암호화 IC(102)를 갖는 임의의 제2 사용자(112)는 헤더(216)가 그로부터 비롯되는 블록체인을 모든 다른 것들과 구별할 수 있다.
ChainID는 그러므로 정보 계층구조의 가장 낮은 파생 레벨이다. ChainID는 (패스프레이즈(222)의 지식을 요구하는) 블록체인의 생성을 가능하게 하지 않고 (IC(102)로부터 액세스가능하지 않거나 가시적이지 않을 수 있는 제2 사용자(112)에 의해 구성 키(108)의 지식을 요구하는) IC(102)를 복제하는 능력을 그것만으로 가능하게 하지 않는다. 그러나, ChainID 기능은 블록체인의 쉬운 식별을 가능하게 한다. 그러므로, 정보 계층구조는 블록체인을 생성하고, 그것과 상호작용하고, 그것을 식별하는 능력을 분리할 수 있다. 구성 키(108)만 알고 패스프레이즈(222)를 알고 있지 않은 사람은 예를 들어, 블록체인을 생성할 수 없지만, 그것을 식별하고 검증할 수 있다. 이러한 검증은 작업 증명 시스템(예를 들어, 비트코인 채굴)에 기초하지만, 본 개시내용은 그와 관련하여 제한되지 않는다.
POW 검증 시스템들은 도달된 답의 임의의 본질적인 값에 대해서가 아니라, 상당한 양의 계산 작업이 이러한 결과를 발생하는 데 소비된 것을 제공하는 답과 같은 증명 값에 대해, 복잡한 계산 문제들을 푸는 것에 기인하게 된다. POW 검증 시스템들은 서비스 거부(DoS) 네트워크 공격들의 저지를 위해 사용되는 시스템들; 원하지 않는 상업적 이메일(스팸)의 방지를 위해 사용되는 시스템들; 및 다른 응용들을 위해 사용되는 시스템들을 제한없이 포함하는, 넓은 범위의 모뎀 계산 시스템들에 걸친 응용들을 갖는다. POW 검증의 또 하나의 사용은 가장 폭넓게 알려진 것이 비트코인인, 암호화 통화들을 지지하는 것들과 같은, 분산된 신뢰할 수 없는 트랜잭션 시스템들을 가능하게 하는, 블록체인 기술을 근거로 하는 암호화 네트워크 POW 검증 과정을 위한 것이다.
본원에 개시된 기술의 소정의 실시예들은 사용자에게 제3자들에 구성 키의 지식을 제공함으로써 변환-인에이블된 집적 회로들에 의해 발생된 작업 증명을 제3자들이 쉽게 검증하게 하는 것을 허용하고 그러므로 그들이 예를 들어 그리고 제한없이, 범용 마이크로프로세서들 상에서 실행하는 소프트웨어, 이 목적을 위해 프로그램된 FPGA들, 또는 다른 수단들에 의해 이러한 작업 증명을 검증하게 한다. 그러나 구성 키의 지식은 그들이 사용자 패스프레이즈를 사용하여 프로그램된 집적 회로의 인스턴스들에 의해 계산되는 것과 동일한 방식으로 제3자들이 변환-수정된 작업 증명을 계산하기 위해 집적 회로의 추가적인 복사들을 프로그램하게 하지 않는다. 설명된 회로는 검증된 변환된 해시 값들의 발생에 관련된 정밀한 수학적 연산들에 관한 정보를 드러내지 않으면서 이러한 검증들을 수행하도록 설계되었다.
또한, 설명된 시스템은 또한 블록체인 기술의 분야 이외의 분야들에 적용가능하다. 이러한 다른 분야들에서, 시스템은 다른 보안 하드웨어-기반 제품들의 생성을 위해 사용될 수 있다.
도 3은 실시예에 따른, 정보 계층구조의 관리 방법의 플로우차트(300)를 도시한다. 302에서, 방법(300)은 사용자가 패스프레이즈(222)를 알고 있는지를 초기에 결정한다. 그렇다면, 304에서, 사용자에게 정보 계층구조에 대한 완전한 제어가 허가된다. 이러한 사용자에게 예를 들어, 블록체인과 같은 새로운 유일한 정보 스트림을 생성하는 능력이 제공된다. 사용자는 예를 들어, 변환 함수의 프로그래밍을 커스터마이즈하고 블록체인 블록 헤더들을 생성하기 위해 IC(102)를 사용함으로써 정보 스트림을 생성하는 것으로 진행한다. 헤더들은 대응하는 메시지 내용을 위해 사용될 특정한 검증 방법을 표시하는 필드를 포함할 수 있다.
사용자가 패스프레이즈(222)를 알고 있지 않으면, 방법(300)은 306으로 진행한다. 306에서, 방법은 사용자가 구성 키(108)를 알고 있는지를 결정한다. 그렇다면, 308에서, 사용자에게 변환-인에이블된 암호화 IC들(102)의 추가적인 인스턴스들 또는 복사들을 프로그램하는 추가의 특권이 허가된다. 프로그래밍은 제조 과정 동안 또는 그 이후에 발생할 수 있다.
사용자가 구성 키(108)를 알고 있지 않으면, 방법(300)은 310으로 진행한다. 310에서, 방법(300)은 사용자가 본 개시내용에서 설명된 기술에 비추어서 생성된 정보 스트림을 처리하기 위해 프로그램된 변환-인에이블된 암호화 IC(102)를 적어도 갖는지를 결정한다. 그렇다면, 312에서, 방법(300)은 ChainID로서 서브하는 미리 결정된 출력 값(214)을 발생하기 위해 미리 결정된 테스트 헤더(216)를 처리한다. ChainID는 입력 메시지들이 그로부터 비롯되는 블록체인과 같은 특정한 정보 스트림을 표시할 수 있다. 사용자가 프로그램된 변환-인에이블된 암호화 IC(102)를 갖지 않는다면, 방법은 종료한다. 이 동작(312)은 일부 실시예들에서 선택적이다.
314에서, 방법(300)은 정보 스트림으로부터의 다른 헤더들의 처리를 가능하게 한다. 한 실시예에서, 정보 스트림은 블록체인이고, 처리는 후속 비교를 위해 변환-커스터마이즈된 해시들의 계산을 통한 블록체인의 검증을 포함한다. 사용자가 프로그램된 변환-인에이블된 암호화 IC(102)를 갖지 않는다면, 본 개시내용에서 설명된 기술에 비추어서 생성된 정보 스트림은 사용자에 의해 처리될 수 없거나 식별될 수 없다.
예시적인 실시예들에서, 특정한 회로망이 변환-인에이블된 암호화 IC(102)의 프로그래밍을 유리하게 안전하게 할 수 있다. 이러한 특정한 회로망은 제1 사용자(110)가 암호화 IC(102)를 위한 유일한 구성 키(108)를 발생하기 위해 사용되는 변환-인에이블된 암호화 IC(102)에 패스프레이즈(222)의 복사를 제공하게 한다. 유사하게, 회로망은 패스프레이즈(222)로부터의 구성 키(108)의 파생을 가능하게 한다.
회로망 내의 구성 키(108)는 (예를 들어, IC(102)의 외부에서 액세스가능하지도 않고 가시적이지 않은 방식으로) 별개로 저장되고 정보 계층구조의 부분의 실행을 가능하게 하도록 서브한다. 즉, 사용자(110)가 그것의 발생 동안 또는 그 이후의 구성 키(108)의 지식을 갖고 있으면, 사용자(110)는 헤더들(216)을 처리하기 위해 사용되는 특정한 커스터마이즈된 변환-인에이블된 해싱을 구현하는 회로망(또는 실행가능 명령어들)을 복제할 수 있다. 대조적으로, 사용자(112)가 구성 키(108)의 지식을 갖고 있지 않지만 별개로 구성 키(108)를 비가시적으로 저장하는 회로망에 간단히 액세스하면, 이러한 사용자(112)는 헤더들을 처리할 수 있지만 회로망을 복제하지 않을 수 있다. 즉, 구성 키(108)의 비가시적이고, 액세스가능하지 않고 지워지지 않는 분리된 저장은 회로망이 "클론되는" 것을 방지한다. 헤더들(216)의 처리는 주어진 정보 스트림을 식별하는 것 및 회로망 또는 실행가능 명령어들에 의한 것이든지 간에, 예를 들어, 이전에 설명된 것과 같은, 정보 스트림으로부터의 메시지들을 검증하는 것을 포함할 수 있다.
정보 계층구조의 관리의 하드웨어 기반 실행은 상이한 사용자들에게 정보 계층구조(300)의 상이한 레벨들의 제어가 허가될 수 있을 뿐만 아니라, 그것은 구성 키(108)의 가용성을 제한할 수 있다. 예를 들어, 패스프레이즈(222)를 갖는 제1 사용자(110)가 구성 키(108)을 발생하기를 원한다면, 그것은 제1 사용자(110)가 구성 키(108)의 실제 지식, 또는 구성 키(108)가 어떻게 패스프레이즈(222)로부터 파생되는지의 지식 조차도 원한다는 것을 반드시 의미하지 않는다. 제1 사용자(110)는 구성 키(108)를 결정할 수 있는 것을 전혀 원하지 않을 수 있다.
대신에, 제1 사용자(110)는 예를 들어, 제2 사용자들(112)에 의한 입력 메시지 처리 및 정보 스트림 식별을 가능하게 하기 위해, 내부적으로, 즉, 별개로, 구성 키(108)를 단지 발생하고 안전하게 저장하는 하드웨어를 생성하기를 단순히 원할 수 있다. 패스프레이즈(222)로부터 구성 키(108)를 발생하기 위한 특정한 방법은 그러므로 전체적인 정보 계층구조를 제어하는 제1 사용자(110)에게 조차도 알려질 필요가 없을 수 있다.
유사하게, 특정한 회로망은 전체적인 정보 계층구조의 완전한 제어를 가능하게 하는 패스프레이즈(222)를 더 잘 보호한다. 즉, 제1 사용자(110)는 변환-인에이블된 암호화 IC(102)에 패스프레이즈(222)를 제공할 수 있지만, 그 IC(102)는 구성 키(108)가 결정되었고 키 값 또는 값들이 지워지지 않게 그리고 액세스가능하지 않게 IC(102) 내에 저장된 후에 수신된 패스프레이즈(222)를 삭제할 수 있다.
일회용 프로그램가능한 메모리에 대한 기술들은 마이크로-퓨즈들, 안티-퓨즈들, 플래시 메모리 또는 다른 유형들의 비휘발성 메모리를 포함하지만, 이들로 제한되지 않는, 비휘발성 RAM들을 포함하지만, 이들로 제한되지 않는다. 일반적으로, 외부 물리적인 조사를 통한 이러한 메모리들의 각각의 요소의 상태의 결정은 의도적으로 매우 어렵거나 실행 불가능하다.
이전에 설명된 변환-커스터마이즈된 메시지 해싱 과정의 소트프웨어-기반 구현들은 또한 본 개시내용의 범위 내에 있다. 그러나, 하드웨어-기반 구현들은 동작 중의 모니터링에 더 면역이 될 수 있다. 이러한 모니터링의 바람직하지 않은 결과들은 예를 들어, 패스프레이즈(222), 구성 키(108), 및 구성 키 발생(220) 방법의 궁극적인 발견을 포함할 수 있다.
하드웨어 구현들은 그러므로 패스프레이즈(222)의 비밀성에 기초하여, 블록체인들과 같은 정보 스트림의 제한된 생성의 더 양호한 실행을 제공할 수 있다. 하드웨어 구현들은 또한 구성 키(108)의 가용성에 기초하여, 변환-커스터마이즈된 해싱 회로망을 복제하는 제한된 능력의 더 양호한 실행을 제공할 수 있다.
도 4는 실시예에 따른, 내부적으로 프로그램가능한 집적 회로의 기능도를 도시한다. IC(102)는 가게의 프론트 카운터에서 커스터머(예를 들어, 제1 사용자(110))로부터 명령어들을 수신하는 개념적 "가게 운영자"로서 동작하고, 다음에 커스터머가 요구하지만, 별개로, "막후에서" 또는 커스터머의 시야 밖에서 그렇게 하는 다양한 작업들을 수행한다.
이 경우에, IC(102)는 이전에 설명된 것과 같이 프로그래밍 및 구성 인터페이스(104)를 통해 제1 사용자(110)로부터 패스프레이즈(222)의 복사를 수신한다. 프로그래밍 및 구성 인터페이스(104)는 소정의 입력들을 받아들이지만, 단지 승인들(acknowledgements)을 출력하고 제공된 입력들을 에코하지 않는 "블랙 박스"로서 동작한다. 즉, 프로그래밍 및 구성 인터페이스(104)는 IC(102)의 분리된 내부 동작들에의 액세스 또는 그것의 가시성을 허용하지 않는다.
IC(102)는 다음에 그것의 회로망 내에 매립된 구성 키 발생(220) 방법에 따라 구성 키(108)를 발생한다. 제1 사용자(110)는 일부 실시예들에서, 구성 키 발생(220) 방법을 알고 있을 수 있거나 알고 있지 않을 수 있다.
IC(102)는 다음에 지워지지 않고 숨겨진 방식으로 발생된 구성 키(108)를 저장하고 패스프레이즈(222)의 그것의 복사를 삭제한다. 한 실시예에서, 구성 키(108)는 마이크로-퓨즈들, 안티-퓨즈들의 어레이, 또는 다양한 유형들의 비휘발성 메모리를 포함할 수 있는, 일회용 프로그램가능한 메모리(402) 내에 저장된다. 마이크로-퓨즈들은 그들이 전형적으로 특정한 크기 및 기간의 전압 펄스의 인가에 의해, 효과적으로 "블로운(blown)" 개방될 때까지(예를 들어, 비도전성으로 될 때까지) 일반적으로 단락 회로들이다. 대조적으로, 안티-퓨즈들은 전형적으로 다시 특정한 크기 및 기간의 전압 펄스의 인가에 의해, 그들이 효과적으로 "번드(burned)" 폐쇄될 때까지(예를 들어, 도전성으로 될 때까지) 일반적으로 개방 회로들이다. 이들 상태 변화는 쉽게 가시적인 물리적 변화들을 야기하지 않을 수 있다.
IC(102)는 예를 들어, 패스프레이즈(222)의 수신, 패스프레이즈(222)의 삭제, 또는 메모리(402) 내로의 구성 키(108)의 저장의 성공적인 완료 중 적어도 하나를 표시하기 위해, 제1 사용자(110)에게 승인(404)을 제공한다. 그러므로, 개념적 가게 운영자는 (예를 들어, 프로그래밍 과정 내로의 임의의 커스터머 액세스 또는 가시성 없이) 별개로 그것을 커스터마이즈한 후에 커스터머(예를 들어, 제1 사용자(110))에게 내부적으로 프로그램된 IC(102)를 효과적으로 제공한다.
제공된 방식은 제1 사용자(110)에게 단지 제한된 시간 동안 패스프레이즈(222)로 하드웨어 구현을 신뢰하는 장점을 제공하는데, 왜냐하면 하드웨어 구현은 구성 키(108)가 발생되고 내부적으로 저장되고 나서 패스프레이즈(222)를 저장하지 않을 것이기 때문이다. 또한, 제1 사용자(110)는 하드웨어 구현이 공격으로부터 비교적 안전하다는 것을 알고 있다. 즉, 해커는 구성 키 발생 방법 및 프로그램가능한 변환 함수를 결정하기를 시도하기 위해 집적 회로(102)를 해체할 수 있지만, 시스템의 보안성은 이들 중 어느 하나의 지식에 의존하지 않는다.
IC(102)의 클로닝을 위해 요구되는, (이제-삭제된 패스프레이즈(222)로부터 발생되고 일회용 프로그램가능한 메모리(402) 내에 저장된) 실제 구성 키(108)의 복구는 일반적으로 물리적 조사를 통해 실행 불가능하다. 또한, 해커는 해킹 시도마다 프로그램된 IC(102)의 새로운 복사를 파괴해야만 하게 되어서, 빠르게 비경제적으로 될 것이다.
도 5는 일부 실시예들에 따른, 블록체인 메시지(202)의 구조를 도시한다. 본원에 제시된 실시예들의 일부가 블록체인 메시지들을 참조하여 설명되지만, 본원에 제시된 원리들은 임의의 다른 유형의 메시지들로 이용될 수 있다.
메시지(202)는 헤더(216) 및 바디(518)를 포함한다. 헤더(216)는 메시지(202)에 관한 정보를 포함하고, 바디(518)는 블록체인 트랜잭션들과 같은, 송신되고 있는 정보를 포함한다.
헤더는 버전(504)(예를 들어, 4바이트), 이전의 블록 해시(506)(예를 들어, 32바이트), 머클 루트(508)(예를 들어, 32바이트), 타임스탬프(510)(예를 들어, 4바이트), 타깃(512)(예를 들어, 4바이트), 및 논스(514)(예를 들어, 4바이트)를 포함한다. 버전(504)은 블록체인 프로토콜의 업그레이드들 및 변화들을 기록하기 위해 사용된다. 이전의 블록 헤더 해시(506)는 이전의 블록과의 연결이고 체인을 안전하게 한다. 머클 루트(508)는 바디(518) 내의 블록의 트랜잭션들의 머클 트리의 루트의 해시이다.
또한, 타임스탬프(510)는 1970년 1월 1일 이후의 초들의 수이고 블록의 어려움 타깃(512)은 블록 시간을 10분으로 유지하기 위해 작업 증명의 요구된 레벨에 맞추기 위해 블록 헤더(216)를 해시할 때 발견될 제로들의 수를 식별한다.
논스(514)는 블록체인을 위해 요구되는 타깃 어려움 레벨, 예를 들어, 검증 파라미터 내의 제로들의 미리 결정된 선행하는 수(예를 들어, 17개의 제로이지만 제로들의 수는 네트워크 파라미터들에 기초하여 시간에 따라 변화할 수 있다)에 맞는 (논스 값을 갖는 헤더로부터 계산된) 검증 파라미터를 획득하는 목적에 따라 변화될 수 있는 파라미터이다. 논스(514) 값은 요구된 어려움 레벨 또는 블록 보상의 수령인을 의미하는 머클 루트의 제1 트랜잭션을 달성하도록 상이한 순열들을 시도하기 위해 채굴자들에 의해 변경된다.
도 6은 일부 실시예들에 따른, 작업 증명을 발생하기 위한 방법(600)의 플로우차트이다. 동작(602)에서, 헤더가 (예를 들어, 코어(106)에 의해) 수신된다.
동작(602)으로부터, 방법은 동적 변환이 초기화되는 동작(604)으로 흐른다. 동적 변환의 초기 값은 시드라고 하고 (정적 변환(208)과 연관된) 구성 키(108)로부터의 하나 이상의 비트, 헤더로부터의 하나 이상의 비트, 입력 메시지의 바디로부터의 하나 이상의 비트, 또는 이들의 조합들을 포함할 수 있는, 하나 이상의 파라미터에 기초하여 계산될 수 있다. 예를 들어, 시드는 구성 키(108)로부터의 일부 비트들, 논스로부터의 일부 비트들, 및 구성 키로부터의 비트들과 논스로부터의 일부 비트들의 조합(예를 들어, 논리적 XOR 연산)인 일부 비트들을 포함한다.
과정이 분명히 정의되어 다른 블록체인 노드들이 시드를 계산하기 위해 동일한 과정을 사용하는 동작들을 검증할 수 있는 한, 비트들의 임의의 조합이 사용될 수 있다. 일부 예시적인 실시예들에서, 시드는 256개의 비트를 갖는 수치 값이지만, 시드는 다른 크기들을 가질 수 있다.
동작(606)에서, 코어(106)는 논스의 현재의 값으로 헤더의 해시를 수행한다. 일부 예시적인 실시예들에서, 논스의 초기 값은 입력 메시지의 헤더에서 수신된 값이지만, 다른 초기 값들이 또한 적용될 수 있다.
시드는 헤더의 해시에 적용될 동적 변환을 정의한다. 일부 예시적인 실시예들에서, 동적 변환은 시드 내의 각각의 비트의 헤더의 해시로부터의 대응하는 비트와의 XOR(배타적인 논리적 OR) 연산을 수행하는 것을 포함한다. 다른 실시예들에서, 논리적 AND, 논리적 OR, 또는 이들의 조합들과 같은 다른 논리적 연산들이 수행될 수 있다.
동작(608)에서, 헤더의 해시의 동적 변환이 수행되어, 변환 값을 초래한다. 동작(608)으로부터, 방법은 동작(610)으로 흐른다. 추가적으로, 동작(608) 후에, 동적 변환의 값은 동작(616)에서 업데이트된다. 더 상세한 것들이 동적 변환의 업데이트에 관한 도 9 내지 도 11을 참조하여 아래에 제공된다.
IC 설계는 입력(예를 들어, 검증을 위한 헤더), 각각의 사이클에서의 동적 변환 회로의 수정, 및 정적 변환 중 하나 이상에 기초하여, 각각의 사이클에서, 상이한 POW 계산들을 적용하기 위해, 각각의 사이클에서, 동적으로 재구성되는 회로를 포함한다. 일부 실시예들에서, 재구성은 정적 변환에 기초하지 않고, 다른 실시예들에서, 재구성은 입력에 기초하지 않는다(예를 들어, 논스 레지스터의 값에 기초한다).
일부 예시적인 실시예들에서, 재구성은 32개의 비트 중 마지막 24와 같은, 논스 값의 부분에 기초하지만, 다른 실시예들은 논스 값의 시작, 중간, 또는 마지막으로부터, 8, 16, 31, 32 등과 같은, 더 적거나 더 많은 수의 비트들을 사용한다.
다른 예시적인 실시예들에서, 동적 변환은 입력의 32-비트 체크섬, 예를 들어, 현재의 논스 값을 갖는 헤더, 또는 입력 내의 홀수 비트들을 사용하여 계산된 24-비트 체크섬, 또는 입력의 SHA 해시의 처음 27개의 비트로 PRBS 회로를 시드함으로써 계산된 256-비트 스트링 등에 기초한다.
동적 변환은 이전의 사이클들로부터의 입력 및 결과들에 기초하여 계산되고, 동적 변환은 입력 값(예를 들어, 헤더)의 주어진 지식으로 독립적으로 복제될 수 있다. 그러므로, 동적 변환(DT)은 입력 값에 비트-감응하고, DT 값을 계산하는 과정은 악의적인 사용자들로부터의 공격들을 어렵게 하는 복잡한 동작들을 포함한다.
동작(610)에서, 변환 값의 해시가 계산되고 결과는 검증 파라미터라고 한다. 동작(612)에서, 검증 파라미터가 타깃(예를 들어, 선행하는 제로들의 충분한 수) 아래인지를 결정하기 위한 체크가 이루어진다. 검증 파라미터가 타깃 아래이면, 방법(600)은 동작(614)으로 계속되고, 여기서 골든 논스가 발견되었다는 결정이 내려진다. 골든 논스는 헤더 내로 삽입될 때, 선행하는 제로들의 요구된 수를 갖는 검증 파라미터를 발생하는 논스 값이다.
검증 파라미터가 타깃 아래가 아니면, 방법(600)은 동작(618)으로 계속되고, 여기서 논스는 증가된 논스를 갖는 헤더의 새로운 체크에 대해 증가된다. 다른 실시예들에서, 논스는 다른 방식들로, 예를 들어 1보다 큰 값을 논스에 가산함으로써, 변화된다.
동작(618)으로부터, 방법은 동작(620)으로 흐르고, 여기서 헤더는 논스의 새로운 값으로 업데이트된다. 동작(620)으로부터, 방법은 동작(606)으로 다시 돌아가서 헤더의 해시로 시작하는 새로운 헤더의 체크를 시작한다.
골든 논스가 소정 수의 사이클들 후에 발견되지 않으면, 과정은 중단할 수 있거나, 과정은 작업 증명 동작들을 중지하라는 외부 신호가 수신될 때 중단될 수 있다는 점에 주목한다.
또한, DT는 스팸 방지, 신뢰의 확립 등과 같은, 헤더 POW 이외의 다른 영역들에서 사용될 수 있다.
도 7은 일부 실시예들에 따른, 동적 변환의 동작을 도시한다. 코어(106)는 IC(102) 내의 복수의 코어 중 하나이다. 코어(106)는 헤더(216)를 수신한다. 다른 예시적인 실시예들에서, 코어(106)는 헤더(216) 및 바디(518)를 포함하는 입력 메시지(202)를 수신한다.
일부 예시적인 실시예들에서, 코어(106)는 논스 레지스터(702), 제1 해시(SHA 256)(706), 동적 변환(708), 제2 해시(SHA 256)(710), 시드 발생기(712), 동적 변환 업데이터(716), 및 체커 모듈(714)을 포함한다. 다른 예시적인 실시예들에서, 하나 이상의 정적 변환과 같은, 제1 해시(706)와 제2 해시(710) 사이에서 동작하는 추가적인 변환들이 있을 수 있다.
도 6을 참조하여 위에 설명된 것과 같이, 논스 레지스터(702)는 헤더(216) 내의 논스로 초기화되고, 논스 레지스터(702)는 논스의 새로운 값이 작업 증명을 위해 체크될 때마다 증가된다. 논스 레지스터의 값은 논스 출력(720)으로서 전달된다.
또한, 시드 발생기(712)는 동적 변환의 초기 값을 구성하는 시드를 발생하고, 시드 발생기(712)는 정적 변환(208)(예를 들어, 구성 키(108))으로부터의, 그리고 입력 메시지(202)로부터의 값들을 사용할 수 있거나, 하나 이상의 비트에 대한 초기화 동안 일정한 값들(예를 들어, 0 또는 1의 논리 값을 갖는 비트들)을 사용할 수 있다.
일부 예시적인 실시예들에서, 시드는 논스 레지스터(702)의 마지막 24개의 비트를 포함하지만, 다른 시드들이 또한 예를 들어, 더 많거나 더 적은 수의 비트들 및 상이한 유형들의 PRBS 회로들을 사용함으로써 가능하다. 이 경우에, 시드는 정적 변환(208)의 값에 의존하지 않는다.
위에 논의된 것과 같이, 동적 변환이 적용된 후에, DT 업데이터(716)는 작업 증명의 다음의 반복을 위해 DT의 값을 업데이트한다. 추가적으로, 체커 모듈(714)은 검증 파라미터(214)가 타깃(예를 들어, 선행하는 제로들의 요구된 수)에 맞는지를 결정하고 골든 논스가 발견되었는지를 표시하는 발견된 값(718)을 출력한다. DT 업데이터(716)는 입력으로서 클록 CLK(722)를 포함하고 논스의 값들을 체크하기 위해 사이클들의 요구된 수 이후에 동적 변환의 업데이팅을 수행한다. 일부 예시적인 실시예들에서, 클록 CLK(722)는 또한 논스 레지스터(702)의 증가를 트리거한다.
제1 해시(706)는 논스 레지스터의 현재 값을 갖는 헤더(704)의 해시를 수행하고, 다음에 동적 변환이 적용되고, 그 후 검증 파라미터(214)를 획득하기 위해, 제2 해시(710)가 이어진다.
도 7에 도시된 실시예들은 예들이고 모든 가능한 실시예를 설명하는 것이 아니라는 점에 주목한다. 다른 실시예들은 상이한 소자들, 추가적인 소자들을 이용할 수 있거나, 여러 소자들의 기능을 조합할 수 있다. 예를 들어, 체커 모듈(714)은 일부 실시예들에서, 코어(106) 외부에 위치할 수 있다. 도 7에 도시된 실시예들은 그러므로 배타적이거나 제한적인 것으로 해석되지 않아야 하고, 오히려 예시적인 것이다.
도 8은 일부 실시예들에 따른, 동적 변환을 위한 초기 값의 계산을 도시한다. 위에 논의된 것과 같이, 사용자는 패스프레이즈(222)를 입력하고 정적 변환(208)이 예를 들어, 패스프레이즈(222)의 OWF(802)(예를 들어, SHA256)를 수행함으로써 계산된다. 입력 메시지(202)는 논스를 갖는 헤더, 및 바디를 포함한다. 동작(804)에서, 정적 변환(208)과 입력 메시지(202)로부터의 비트들은 초기 동적 변환(806)을 발생하기 위해 조합된다.
예를 들어, 초기 DT는 논스로부터의 하나 이상의 비트 및 정적 변환(208)으로부터의 하나 이상의 비트를 포함하고, 하나 이상의 비트를 0 또는 1의 값으로 고정한다. 예를 들어, 초기 DT는 논스로부터의 32개의 비트 및 정적 변환으로부터의 224개의 비트, 또는 논스로부터의 32개의 비트, 정적 변환으로부터의 200개의 비트를 포함하고, 다음에 제로들과 1들이 교대하는 24개의 비트를 채운다. 또 하나의 실시예에서, 초기 DT는 논스의 해시이다. 또 다른 실시예에서, 초기 DT는 논스의 해시로부터의 비트들과 정적 변환으로부터의 비트들의 XOR을 포함한다.
본 기술 분야의 통상의 기술자는 과정이 잘 정의되고 작업 증명 검증을 위해 다른 네트워크 노드들에서 재생될 수 있는 한, 정적 변환을 입력 메시지(202)로부터의 정보와 조합하는 상이한 방식들이 있다는 것을 쉽게 알 것이다.
도 9는 일부 실시예들에 따른, 의사 랜덤 이진 시퀀스(PRBS)를 사용하여 다음 동적 변환을 계산하기 위한 과정을 도시한다. 일부 예시적인 실시예들에서, 동적 변환은 선형 피드백 시프트 레지스터들(LFSR)과 같은 레지스터들(902)로 구현되고, 각각의 레지스터(902)는 동적 변환의 하나의 비트를 나타낸다.
LFSR은 그것의 입력 비트가 그것의 이전의 상태의 선형 함수인 시프트 레지스터이다. 단일 비트들의 가장 통상적으로 사용되는 선형 함수는 배타적-or(XOR)이다. 그러므로, LFSR은 가장 자주는 그것의 입력 비트가 전체적인 시프트 레지스터 값의 일부 비트들의 XOR에 의해 구동되는 시프트 레지스터이다. LFSR의 초기 값은 시드라고 하고, 레지스터의 동작은 결정론적이기 때문에, 레지스터에 의해 발생된 값들의 스트림은 그것의 현재의(또는 이전의) 상태에 의해 완전히 결정된다. 레지스터는 유한 수의 가능한 상태들을 갖기 때문에, LFSR은 궁극적으로 반복하는 사이클에 들어갈 것이다. 잘 선택된 피드백 함수를 갖는 LFSR은 랜덤하게 나타나고 매우 긴 사이클을 갖는 비트들의 시퀀스를 발생할 수 있다.
다음 DT를 계산하기 위해, 레지스터들(902)은 우측으로 시프트되지만, 다른 실시예들은 PRBS 다항식에 따라, 좌측으로 시프트할 수 있다. PRBS는 결정론적 알고리즘으로 발생되는 동안 진정한 랜덤 시퀀스와 유사한 통계학적 거동을 예측하고 나타내기가 어려운 이진 시퀀스이다.
PRBS는 PRBS 다항식(904)으로서 표현되는 XOR 게이트들(906)의 위치에 의해 정의된다. 도 9의 예에서, XOR 게이트들은 다항식 Xa + Xb + Xc + Xd + 1(904)을 정의하는 위치들 a, b, c, 및 d에 있다. 위치 n에서의 XOR 게이트(906)는 Xn의 계수를 1로서 정의하고, 그렇지 않으면 위치 n에서의 계수는 0이라서 위치 n에 대한 다항식(904) 내의 항은 없을 것이다. X0(위치 0)에 대한 계수는 1로서 정의된다.
다항식을 발생하는 일부 통상적인 시퀀스는
PRBS7 = x7 + x6 + 1
PRBS9 = X9 + x5 + 1
PRBS15 = x15 + x14 + 1
PRBS31 = x31 + x28 + 1이다.
CLK(722)가 트리거한 후에, 동적 변환은 PRBS 다항식(904)에 의해 정의된 것과 같이 레지스터들의 값들을 시프트한다. 시프트의 트리거링은 클록의 매 사이클마다 또는 수 클록 사이클들마다 수행될 수 있다.
도 9의 PRBS는 256개의 비트를 포함하고 제1 해시 SHA 변환의 출력에 직접 적용될 수 있다. 이 방식으로, DT는 매 사이클마다이지만, 작업 증명을 검증하기 위해 재생될 수 있는 예측가능한 방식으로 변화한다.
일부 예시적인 실시예들에서, 주어진 변수에 동적 변환을 적용할 때, XOR 논리적 연산은 주어진 변수의 각각의 비트와 동적 변환의 시프트 레지스터(902)의 대응하는 비트에 대해 수행된다. 예를 들어, 비트 25에 대한 시프트 레지스터(902)가 0이고 주어진 변수의 비트 25가 1이면, 결과의 결과적인 비트 25는 1(예를 들어, 0과 1의 논리적 XOR)일 것이다.
도 10은 일부 실시예들에 따른, 부분적 PRBS를 사용할 때 다음 동적 변환을 계산하기 위한 과정을 도시한다. 일부 예시적인 실시예들에서, 정적 변환 내의 비트들보다 적은 수의 레지스터들을 갖는 PRBS는 PRBS를 정적 변환으로부터의 일부 비트들(예를 들어, 정적 변환으로부터의 처음 225개의 비트) 또는 일부 일정한 비트들(예를 들어, 제로들과 1들이 교대하는 것으로 설정된 처음 100개의 비트)과 같은, 다른 값들과 조합함으로써 사용된다.
도 10에 도시된 예에서, 동적 변환의 제1 부분은 정적 변환의 시작(또는 일부 다른 섹션), 모두 제로, 모두 1, 교대하는 제로들과 1들 등과 같은 고정된 값으로 설정된다. 동적 변환의 제2 부분은 PRBS(예를 들어, 32개의 레지스터를 갖는 PRBS31)를 사용하여 구현된다.
CLK(722)가 동적 변환의 업데이팅을 트리거할 때, 고정된 레지스터들(1002)은 변화하지 않고 PRBS 레지스터들(1004)은 PRBS 다항식(1006)에 따라 변화한다. 결과적인 업데이트된 동적 변환은 다음에 다음 변환 동작을 위해 사용된다.
도 11은 일부 실시예들에 따른, 이전의 제1 SHA 변환의 값을 사용할 때 다음 동적 변환의 계산을 도시한다. 일부 예시적인 실시예들에서, 동적 변환은 이전의 체크된 헤더(예를 들어, 현재의 논스 값 빼기 1과 동일한 논스 값을 갖는 헤더이고, 이전의 블록체인으로부터의 헤더는 아님)의 해시로부터 결과된 변환 값에 기초한다.
변환 값의 값은 세이브되고 다음에 동적 변환은 헤더의 다음 작업 증명 체크를 위한 변환 값으로 구성된다. 이 방식으로, 골든 논스가 발견되면, 동적 변환은 논스의 이전의 값(예를 들어, 논스 - 1)과 동일한 논스를 갖는 헤더의 해시와 동일하기 때문에 골든 논스를 갖는 헤더를 계산하기 위해 사용된 동적 변환의 값을 아는 것은 쉽다.
일부 예시적인 실시예들에서, 헤더(704)의 제1 해시(706)가 수행된 후에, 값은 레지스터들 내에 저장된다. 동적 변환(708)이 변환 값(해시(706)로부터의 결과)에 적용된 후에, 동적 변환은 미리 결정된 지연 후에(예를 들어, 다음의 클록 사이클에서) 업데이트된다(1102).
이 방식으로, 동적 변환은 그것이 논스 값마다 변화하기 때문에 동적이다. 소프트웨어에서 동일한 과정을 재생하기를 시도하는 것은 코어(106)(예를 들어, ASIC 디바이스)를 사용할 때보다 훨씬 더 느릴 것이다. 그러므로, 블록 체인 네트워크를 공격하기 위해 검증을 빨리 수행하기를 시도하는 악의적인 사용자는 하드웨어에서보다 소프트웨어에서 더 빠르게 계산들을 수행할 수 없을 것이고 블록체인 네트워크를 공격할 수 없을 것이다.
일부 예시적인 실시예들에서, 동적 변환에 대한 초기 값은 일치를 위해 (논스-1)을 갖는 헤더의 OWF로서 설정될 수 있지만, 다른 초기 값들이 또한 사용될 수 있다(예를 들어, 모두 제로, 모두 1, 또는 교대하는 제로들과 1들).
이전의 헤더의 변환 값을 사용하는 동적 변환의 업데이트는 또한 도 9 및 도 10을 참조하여 위에 설명된 것과 같이, PRBS의 사용과 조합될 수 있다. 예를 들어, 동적 변환은 업데이트된 PRBS 값과 변환 값의 XOR을 수행함으로써 업데이트될 수 있다.
도 12는 일부 실시예들에 따른, 작업 증명을 검증하기 위한 과정을 도시한다. 노드가 타깃 요건에 맞는 골든 논스를 발견한 후에, 노드는 검증을 위해 다른 노드들에 헤더를 보낸다. 각각의 수신 노드는 다음에 검증 파라미터를 재계산하고 검증 타깃을 검증함으로써 작업 증명을 검증한다.
입력 메시지(202)는 골든 논스(1202)를 포함한다. 동작(1206)에서, 골든 논스(1202)와 헤더들을 체크하기 시작하기 위해 코어(106)에 의해 수신된 논스의 값인 초기 논스(1204) 사이의 델타, 또는 차이가 계산되어, 델타 논스(1208)의 값을 초래한다. 일부 실시예들에서, 동작(1206)은 동적 변환이 초기 논스(1204)의 함수가 아니면 선택적이다(예를 들어, 동적 변환은 도 11을 참조하여 설명된 것과 같은 이전의 논스의 변환 값에 기초한다).
추가적으로, 앞서 설명된 것과 같이, 패스프레이즈(222)의 OWF(1222)는 정적 변환(208)을 초래한다. 동작(1210)에서, 동적 변환 값은 델타 논스(1208), 정적 변환(208), 및 입력 메시지(202)에 기초하여 계산된다. 동적 변환을 계산하는 것은 POW를 위해 후속되는 동일한 과정을 따르는 것을 요구한다. 그러나, POW를 할 때, 코어(106)는 각각의 논스 값에 대해 동적 변환을 동적으로 변화시켜서, 주어진 골든 논스(1202)에 대해 동적 변환을 계산하는 것은 이 과정을 복제하는 것을 요구한다. 예를 들어, PRBS를 사용할 때, 주어진 논스에 대한 랜덤 수의 값은 동적 변환을 결정하기 위해 계산된다.
도 12의 실시예에서, 동적 변환이 (골든 논스 - 1)과 동일한 논스 값을 갖는 헤더의 OWF로서 계산된다.
동적 변환이 계산되고 나서, 헤더는 SHA 256(1212), 그 이후의 DT(1214), 및 제2 SHA 256(1216)을 수행함으로써 검증되어, 다음에 선행하는 제로들의 요구된 수가 존재하는지를 결정하기 위해 동작(1218)에서 검증되는, 검증 파라미터를 초래한다. 결과(1220)는 검증이 성공되었는지 여부를 표시한다.
PRBS로 하는 DT의 동작의 장점들 중 하나는 그것이 C 프로그래밍 언어의 리눅스 구현에서의 srand() 함수와 같은, PRBS를 구현하는 소프트웨어 프로그램을 이용함으로써 소프트웨어에서의 동작을 직접 복제하는 것을 가능하게 한다는 것이다.
일부 예시적인 실시예들에서, 소프트웨어에서 DT를 복제하는 것은 다음의 동작들을 포함한다: 헤더의 부분을 선택하는 것, srand() 함수의 시드로서 선택을 사용하는 것, 및 POW 동작을 위해 srand() 함수의 결과를 사용하는 것.
일부 예시적인 실시예들에서, POW 동작을 위해 srand() 함수의 결과를 사용하는 것은 다음과 같이 소프트웨어에서 수행될 수 있다:
1. 입력 값의 SHA2-256 해시를 계산하는 것(1212);
2. 동적 변환 함수를 생성하기 위해 비트끼리의 XOR 연산을 사용하여 srand()에 의해 리턴된 이진 스트링을 기존의 정적 변환 값과 조합하는 것(1210);
3. 입력 값의 SHA2-256 해시에 동적 변환 함수를 적용하는 것(1214); 및
4. POW 값(예를 들어, 검증 파라미터(214))을 얻기 위해 동적 변환을 적용한 결과의 SHA2-256 해시를 계산하는 것(1216).
5. 검증 파라미터(214)가 POW를 위한 검증 기준에 맞는지를 체크하는 것(1218).
이 방식은 다음과 같은 이점들을 초래한다:
1. 네트워크 노드들을 위해 요구되는 하드웨어 리소스들의 양을 감소시킨다. 예를 들어, C를 실행할 수 있는 임의의 디바이스는 POW를 검증할 네트워크 노드일 수 있다.
2. 잠재적인 소프트웨어 개발자들의 수를 증가시킨다. 개발자에게 요구되는 것은 잠재적인 소프트웨어 개발자들의 많은 인력을 위해 가능한, C 언어 및 C API들(애플리케이션 프로그래밍 인터페이스들)의 작업 이해를 갖는 것이다.
3. 네크워킹 프로토콜의 크로스-컴파일링을 가능하게 하는데, 즉, 네트워킹 프로토콜의 기준 구현이 다수의 플랫폼(예를 들어, Android®, IoS®, Linux®, MacOS®, Windows®)에 걸쳐 직접 크로스-컴파일하게 한다.
4. 하드웨어 내의 IC에 의해 수행된 동작들의 소프트웨어에서의 복제를 가능하게 한다.
도 13은 일부 실시예들에 따른, 작업 증명 동작들을 위한 복수의 코어(106)를 갖는 집적 회로(102)를 도시한다. IC(102)는 또한 코어들(106)의 동작들을 관리하는 제어기(1316)를 포함한다.
제어기는 상이한 코어들(106)과 통신하고 POW 작업들을 상이한 코어들에 할당한다. 예를 들어, 헤더(216)를 검증하기 위해, 제어기는 상이한 시작 논스 값을 할당함으로써 POW 작업들을 상이한 코어들에 할당한다. 코어(106)가 골든 논스를 발견하면, 코어(106)는 논스가 발견되었다는 것을 출력(708)을 통해 제어기와 전달한다. 제어기는 다음에 POW로부터 다른 코어들을 중지하고 새로운 작업을 할당한다.
제어기(1316)는 입력/출력(I/O) 포트들(1318), 프로세스-전압-온도(PVT)(1320), 이퓨즈(1322), SHA 256(1324), 제조 이퓨즈(1328), 프레이머(1326), 메모리(1330), 프로세서(1334), 및 위상 동기 루프(PLL)(1332)를 포함한다. 메모리는 프로세서(1334)에 의해 실행될 수 있는 프로그램 명령어들을 포함할 수 있다.
또한, 레벨 시프트(1338)는 제어기의 전압 레벨을 더 낮은 레벨에서 동작하는 코어들의 전압 레벨들과 분리시킨다. POW의 목적들 중 하나는 가능한 한 적은 에너지를 사용하는 것이라서, 낮은 전압에서 수행하는 코어들(106)이 작은 양의 에너지를 사용하여 해시들을 계산하는 것을 가능하게 한다. 프레이머(1326)는 코어들(106)들과 통신하고, 코어들(106)에 작업들을 할당하고, 코어들(106)로부터 결과들을 수신한다.
도 13의 예시적인 실시예에서, 코어(106)는 동적 변환(708) 및 정적 변환인 제2 변환(1310)을 포함한다. 다른 실시예들에서, 정적 변환은 포함되지 않는다. 또한, 하나 이상의 동적 변환(708)은 검증 파라미터를 발생하기 위해, 임의의 순서로, 하나 이상의 정적 변환(1310)과 조합될 수 있다. 과정이 유사한 집적 회로에 의해 재생될 수 있는 한, 임의의 조합이 가능하다. 일부 실시예들에서, 정적 변환은 동적 변환(708)에 앞서 수행된다.
도 13에 도시된 실시예들은 예들이고 모든 가능한 실시예를 설명하는 것이 아니라는 점에 주목한다. 다른 실시예들은 상이한 모듈들을 이용하고, 다수의 모듈에 걸쳐 기능을 분배하고, 2개 이상의 모듈의 기능을 조합하는 것 등을 할 수 있다. 도 13에 도시된 실시예들은 그러므로 배타적이거나 제한적인 것으로 해석되지 않아야 하고, 오히려 예시적이다.
도 14a는 본원에 개시된 기술의 실시예들에 따른, 코딩되기 전의 예시적인 프로그램가능한 변환 블록(1415) 구성을 도시한다. 프로그램가능한 변환 블록(1415)은 (도 14b에 도시된) 구성 키(108)에 의해 나타내진 변환 함수를 정의하는 프로그램가능한 회로망의 세트들을 포함한다. 다양한 실시예들에서, 프로그램가능한 변환 블록(1415)은 복수의 전위 동작 중 하나를 가능하게 하도록 구성됨으로써, 입력 데이터(예를 들어, 1a1, 1b1)의 하나 이상의 비트가 수정된 출력 데이터(예를 들어, 5a1, 5b1)를 발생하기 위해 입력 데이터의 또 하나의 비트로 전위된다. 다른 실시예들에서, 프로그램가능한 변환 블록(1415)은 복수의 직접적인 비트 반전, 또는 비트 플립핑, 동작들 중 하나를 가능하게 하도록 구성됨으로써, 입력 데이터의 하나 이상의 비트가 수정된 출력 데이터를 발생하기 위해 플립된다.
본원에 설명된 것과 같은 직접적인 비트 반전 변환 방식을 이용하는 다양한 실시예들은 256-비트 이진 구성 키가 프로그램가능한 변환 함수(예를 들어, 정적 변환(208))에 의해 제공된 완전한 키 공간에의 액세스를 가능하게 하기 위해 간결한 수단을 제공한다는 사실을 이용하도록 구현될 수 있다. 즉, 256개의 비트는 256개의 별개의 변환들 중 어느 것이 제1 해시(206) 상의 프로그램가능한 변환 함수(215)에 의해 수행되고 또는 동적 변환을 초기화하기 위해 사용되는 것을 사용자가 특정하게 하기 위해 필요한 최소 길이이다. 직접적인 비트 반전 변환 방식을 사용하는 것은 또한 변환 함수를 데이터경로 회로망으로서 구체화하기 위해 최소 양의 새로운 회로 요소들의 사용을 가능하게 할 수 있다. 이것은 변환 함수가 데이터경로 회로망으로서 구체화된다는 사실이 데이터경로 상에 배치된 임의의 추가적인 회로망이 라인 속도로 동작하고 전체로서 변환-인에이블된 집적 회로(102)의 성능의 전체적인 저하를 야기한다는 것을 의미하기 때문에 중요하다.
직접적인 비트 반전 변환 방식은 또한 256 비트 구성 키 내의 모든 값들을 제로로 간단히 설정함으로써 프로그램가능한 변환의 모든 효과들을 디세이블하기 위해 직접적인 수단을 제공할 수 있다. 이러한 키는 널 키라고 할 수 있다. 이것의 하나의 결과는 그것이 프로그램가능한 변환 함수를 포함하지 않는 비교할 만한 집적 회로의 것과 구별가능하지 않은 방식으로 동작하도록 그것이 변환-인에이블된 집적 회로(102)를 구성하는 과정을 간소화하는 것이다. 이것의 실제 결과는 본원에 설명된 기술을 포함하는 집적 회로들이 표준 비트코인 채굴 ASIC들과 동일한 방식으로 동작하도록 쉽게 구성될 수 있고 (본원에 설명된 기술을 포함하지 않는 비트코인 채굴 ASIC들에 의해 대체가능하지 않은 방식들로 동작할 수 있는 것 외에), 특정한 어려움 없이 비트코인들을 채굴하기 위해 사용될 수 있다는 것이다.
논의를 쉽게 하기 위해, 도 14a 및 14b가 직접적인 비트 반전 구성을 참조하여 논의되지만, 다른 구성들이 또한 적용될 수 있다(예를 들어, 정적 변환의 하나의 비트를 구성하기 위해 구성 키로부터의 2개의 비트를 조합하는 것).
프로그램가능한 변환 블록의 코딩이 도 14b에 도시된다. 예시적인 프로그램가능한 변환 블록(1420)이 구성 키(108)에 따라 코딩되는 것으로 도시된다. 프로그램가능한 변환 블록(1420) 내에서 구체화된 구성 키(108)를 표시하기 위해, 그림자진 박스들이 마이크로-퓨즈가 디세이블되었다는 것을 표시하기 위해 사용된다(예를 들어, 디세이블된 마이크로-퓨즈를 통해 데이터가 흐르는 것을 막는 것). 예를 들어, 도시된 예에서, 마이크로-퓨즈(3a1)가 디세이블될 때, 입력 비트(1a1)가 변화되지 않은 마이크로-퓨즈(2a1)를 통해 이동하기 때문에 입력 비트(1a1)는 변화되지 않은 프로그램가능한 변환 블록(1420)을 통해 흐른다. 결과는 출력 비트(5a1)가 입력 비트(1a1)와 동일하다는 것이다.
마이크로-퓨즈(2b1)가 디세이블될 때, 입력 비트는 마이크로-퓨즈(3b1)를 통해 흐르고 다음에 비트 플립퍼(4b1)에 의해 반전되고, 결과는 반전된 1b1와 동일한 비트(5b1)이다.
도 15는 일부 예시적인 실시예들에 따른, 작업 증명 동작들을 수행하기 위한 방법(1500)의 플로우차트이다. 이 플로우차트 내의 다양한 동작들이 순차적으로 제시되고 설명되었지만, 본 기술 분야의 통상의 기술자는 동작들 중 일부 또는 모두가 상이한 순서로 실행되고, 조합되거나 생략되고, 또는 동시에 실행될 수 있다는 것을 알 것이다.
동작(1502)에서, 헤더가 수신된다. 동작(1502)으로부터, 방법은 논스 값으로 논스 레지스터를 초기화하기 위해 동작(1504)으로 흐른다.
또한, 동작(1506)에서, 제1 OWF가 헤더의 POW 검증을 위해, 논스 값을 포함하는, 헤더의 해시를 발생하기 위해 수행된다.
동작(1506)으로부터, 방법은 변환 값을 초래하는 헤더의 해시를 변환하기 위해 동적 변환을 수행하기 위한 동작(1508)으로 흐른다. 일부 예시적인 실시예들에서, 동적 변환에 의한 변환은 논스 값에 기초한다.
동작(1508)으로부터, 방법은 제2 OWF가 검증 파라미터를 초래하는 변환 값의 해시를 발생하기 위해 수행되는 동작(1510)으로 흐른다.
동작(1512)은 검증 파라미터에 기초하여, POW가 논스 값을 갖는 헤더의 검증을 위한 미리 결정된 타깃에 맞는지를 결정하는 것이다.
한 예에서, 동적 변환을 수행하는 것은 헤더의 해시의 각각의 비트의 동적 변환과 연관된 대응하는 비트 값과의 논리적 XOR 연산을 수행하는 것을 포함한다.
한 예에서, 방법(1500)은 패스프레이즈에 기초하여 정적 변환 이진 값을 계산하는 것, 및 논스 값 및 정적 변환 이진 값에 기초한 값으로, 동적 변환을 수행하기 위해, 동적 변환 회로를 초기화하는 것을 추가로 포함한다.
한 예에서, 방법(1500)은 검증 파라미터가 미리 결정된 타깃에 맞지 않을 때, 논스 레지스터 내의 논스 값을 증가시키는 것, 및 새로운 POW 동작을 위해, 논스 값을 증가시킨 후에, 새로운 헤더를 사용하는 것을 추가로 포함한다.
한 예에서, 동적 변환은 하나 이상의 LFSR을 포함하는 동적 변환 회로에 의해 수행되고, 방법(1500)은 PRBS에 기초하여, 새로운 POW 동작 전에, LFSR들을 업데이트하는 것을 추가로 포함한다.
도 16은 본원에 설명된 하나 이상의 예시적인 과정 실시예가 구현되거나 제어될 수 있는 머신의 예를 도시한 블록도이다. 대안적인 실시예들에서, 머신(1600)은 독립형 디바이스로서 동작할 수 있거나 다른 머신들과 접속(예를 들어, 네트워킹)될 수 있다. 네트워킹된 배치에서, 머신(1600)은 서버 머신, 클라이언트 머신의 능력으로, 또는 서버-클라이언트 네트워크 환경들에서 둘 다로 동작할 수 있다. 한 예에서, 머신(1600)은 피어-투-피어(P2P)(또는 다른 분배된) 네트워크 환경에서 피어 머신으로서 동작할 수 있다. 또한, 단지 단일 머신(1600)이 예시되지만, 용어 "머신"은 또한 예를 들어, 클라우드 컴퓨팅, SaaS(software as a service), 또는 다른 컴퓨터 클러스터 구성들을 통해, 본원에 논의된 방법들 중 임의의 하나 이상을 수행하기 위해 명령어들의 세트(또는 다중 세트들)를 개별적으로 또는 공동으로 실행하는 머신들의 임의의 집합을 포함하는 것으로 취해질 것이다.
본원에 설명된 것과 같은 예들은 논리, 다수의 소자, 또는 메커니즘들을 포함할 수 있거나, 그들에 의해 동작할 수 있다. 회로망은 하드웨어(예를 들어, 간단한 회로들, 게이트들, 논리)를 포함하는 실재하는 엔티티들에서 구현되는 회로들의 집합이다. 회로망 맴버십은 시간 및 근본적인 하드웨어 가변성에 걸쳐 융통성 있을 수 있다. 회로망들은 동작할 때 특정된 동작들을, 단독으로 또는 조합하여, 수행할 수 있는 멤버들을 포함한다. 한 예에서, 회로망의 하드웨어는 특정한 동작을 수행하도록 변경할 수 없게 설계될 수 있다(예를 들어, 하드와이어됨). 한 예에서, 회로망의 하드웨어는 특정한 동작의 명령어들을 인코드하기 위해 물리적으로(예를 들어, 자기적으로, 전기적으로, 불변하는 집합된 입자들의 이동가능한 배치 등에 의해) 수정된 컴퓨터 판독가능 매체를 포함하는 가변적으로 접속된 물리적 소자들(예를 들어, 실행 유닛들, 트랜지스터들, 간단한 회로들 등)을 포함할 수 있다. 물리적 소자들을 접속하는 데 있어서, 하드웨어 구성 소자의 근본적인 전기적 특성들은 (예를 들어, 절연체로부터 도체로 또는 그 반대로) 변화된다. 명령어들은 매립된 하드웨어(예를 들어, 실행 유닛들 또는 로딩 메커니즘)이 동작 중에 있을 때 특정한 동작의 부분들을 수행하기 위해 가변 접속들을 통해 하드웨어 내의 회로망의 멤버들을 생성하게 한다. 따라서, 컴퓨터 판독가능 매체는 디바이스가 동작하고 있을 때 회로망의 다른 소자들에 통신 결합된다. 한 예에서, 물리적 소자들 중 임의의 것은 하나보다 많은 회로망의 하나보다 많은 멤버에서 사용될 수 있다. 예를 들어, 동작 중에 있을 때, 실행 유닛들은 한 시점에서 제1 회로망의 제1 회로에서 사용되고, 상이한 시간에 제1 회로망 내의 제2 회로에 의해, 또는 제2 회로망 내의 제3 회로에 의해 재사용될 수 있다.
머신(예를 들어, 컴퓨터 시스템)(1600)은 하드웨어 프로세서(1602)(예를 들어, 중앙 처리 장치(CPU), 하드웨어 프로세서 코어, 또는 이들의 임의의 조합), 그래픽 처리 장치(GPU)(1603), 주 메모리(1604), 및 정적 메모리(1606)를 포함할 수 있고, 이들 중 일부 또는 모두는 인터링크(예를 들어, 버스)(1608)를 통해 서로 통신할 수 있다. 머신(1600)은 디스플레이 디바이스(1610), 알파뉴메릭 입력 디바이스(1612)(예를 들어, 키보드), 및 사용자 인터페이스(UI) 내비게이션 디바이스(1614)(예를 들어, 마우스)를 추가로 포함할 수 있다. 한 예에서, 디스플레이 디바이스(1610), 알파뉴메릭 입력 디바이스(1612), 및 UI 내비게이션 디바이스(1614)는 터치 스크린 디스플레이일 수 있다. 머신(1600)은 대량 저장 디바이스(예를 들어, 드라이브 유닛)(1616), 신호 발생 디바이스(1618)(예를 들어, 스피커), 네트워크 인터페이스 디바이스(1620), 및 전지구 위치 파악 시스템(GPS) 센서, 나침반, 가속도계, 또는 다른 센서와 같은 하나 이상의 센서(1621)를 추가적으로 포함할 수 있다. 머신(1600)은 하나 이상의 주변 디바이스(예를 들어, 프린터, 카드 리더 등)와 통신하거나 그들을 제어하기 위해 직렬(예를 들어, 유니버설 시리얼 버스(USB)), 병렬, 또는 다른 유선 또는 무선(예를 들어, 적외선(IR), 근거리 통신(NFC) 등) 접속과 같은 출력 제어기(1628)를 포함할 수 있다.
대량 저장 디바이스(1616)는 본원에 설명된 기술들 또는 기능들 중 임의의 하나 이상을 구체화하거나 그들에 의해 이용되는 데이터 구조들 또는 명령어들(1624)(예를 들어, 소프트웨어)의 하나 이상의 세트가 저장되는 머신 판독가능 매체(1622)를 포함할 수 있다. 명령어들(1624)은 또한 머신(1600)에 의한 그것의 실행 동안 주 메모리(1604) 내에, 정적 메모리(1606) 내에, 하드웨어 프로세서(1602) 내에, 또는 GPU(1603) 내에 완전히 또는 적어도 부분적으로 상주할 수 있다. 한 예에서, 하드웨어 프로세서(1602), GPU(1603), 주 메모리(1604), 정적 메모리(1606), 또는 대량 저장 디바이스(1616) 중 하나 또는 임의의 조합은 머신 판독가능 매체를 구성할 수 있다.
머신 판독가능 매체(1622)가 단일 매체로서 예시되지만, 용어 "머신 판독가능 매체"는 하나 이상의 명령어(1624)를 저장하도록 구성된 단일 매체, 또는 다중 매체(예를 들어, 집중된 또는 분배된 데이터베이스, 및/또는 연관된 캐시들 및 서버들)를 포함할 수 있다.
용어 "머신 판독가능 매체"는 머신(1600)에 의한 실행을 위한 명령어들(1624)을 저장, 인코드, 또는 전달할 수 있고 머신(1600)으로 하여금 본 개시내용의 기술들 중 하나 이상을 수행하게 하고, 또는 이러한 명령어들(1624)에 의해 사용되거나 그들과 연관된 데이터 구조들을 저장, 인코드, 또는 전달할 수 있는 임의의 매체를 포함할 수 있다. 비제한적인 머신 판독가능 매체 예들은 고상 메모리들, 및 광학 및 자기 매체를 포함할 수 있다. 한 예에서, 집합된 머신 판독가능 매체는 불변(예를 들어, 나머지) 질량을 갖는 복수의 입자를 갖는 머신 판독가능 매체(1622)를 포함한다. 따라서, 집합된 머신 판독가능 매체는 일시적 전파 신호들이 아니다. 집합된 머신 판독가능 매체의 특정한 예들은 반도체 메모리 디바이스들(예를 들어, 전기적으로 프로그램가능한 리드 온리 메모리(EPROM), 전기적으로 소거가능하고 프로그램가능한 리드 온리 메모리(EEPROM)) 및 플래시 메모리 디바이스들과 같은 비휘발성 메모리; 내부 하드 디스크들 및 착탈가능한 디스크들과 같은 자기 디스크들; 자기-광학 디스크들; 및 CD-ROM 및 DVD-ROM 디스크들을 포함할 수 있다.
명령어들(1624)은 네트워크 인터페이스 디바이스(1620)를 통해 전송 매체를 사용하여 통신 네트워크(1626)를 통해 추가로 송신 또는 수신될 수 있다.
본 명세서 전체에 걸쳐, 복수의 인스턴스는 단일 인스턴스로서 설명된 소자들, 동작들, 또는 구조들을 구현할 수 있다. 하나 이상의 방법의 개별적인 동작들이 별개의 동작들로서 예시되고 설명되었지만, 개별적인 동작들 중 하나 이상이 동시에 수행될 수 있고, 동작들이 예시된 순서로 수행되는 것이 요구되지 않는다. 예시적인 구성들 내의 별개의 소자들로서 제시된 구조들 및 기능은 조합된 구조 또는 소자로서 구현될 수 있다. 유사하게, 단일 소자로서 제시된 구조들 및 기능은 별개의 소자들로서 구현될 수 있다. 이들 및 다른 변화들, 수정들, 추가들, 및 개선들은 본원의 주제의 범위 내에 든다.
본원에 예시된 실시예들은 본 기술 분야의 통상의 기술자들이 개시된 교시들을 실시하게 하기에 충분히 상세하다. 구조적 및 논리적 치환 및 변화들이 본 개시내용의 범위에서 벗어나지 않고서 이루어질 수 있도록, 다른 실시예들이 사용되고 그로부터 파생될 수 있다. 그러므로, 상세한 설명은 제한된 의미로 취해지지 않고, 다양한 실시예들의 범위는 첨부된 청구범위에 의해서만, 이러한 청구범위에 의해 자격이 부여되는 등가물들의 완전한 범위와 함께 정해진다.
본원에 사용된 것과 같이, 용어 "또는"은 포괄적인 또는 배타적인 의미로 해석될 수 있다. 또한, 복수의 인스턴스가 단일 인스턴스로서 본원에 설명된 리소스들, 동작들, 또는 구조들을 위해 제공될 수 있다. 추가적으로, 다양한 리소스들, 동작들, 모듈들, 엔진들, 및 데이터 스토어들 간의 경계들은 다소 임의적이고, 특정한 동작들이 특정한 예시적인 구성들의 맥락에서 예시된다. 기능의 다른 할당들이 상상되고 본 개시내용의 다양한 실시예들의 범위 내에 들 수 있다. 일반적으로, 예시적인 구성들에서 별개의 리소스들로서 제시된 구조들 및 기능은 조합된 구조 또는 리소스로서 구현될 수 있다. 유사하게, 단일 리소스로서 제시된 구조들 및 기능은 별개의 리소스들로서 구현될 수 있다. 이들 및 다른 변화들, 수정들, 추가들, 및 개선들은 첨부된 청구범위에 의해 대표되는 것과 같은 본 개시내용의 실시예들의 범위 내에 든다. 따라서, 명세서 및 도면들은 제한적인 의미라기보다는 예시적인 것으로 간주될 것이다.

Claims (20)

  1. 집적 회로로서,
    논스 값(nonce value)을 저장하기 위한 논스 레지스터;
    헤더의 해시를 발생하도록 구성된 제1 일방 함수(OWF) 회로 - 상기 헤더는 상기 헤더의 작업 증명(POW) 검증을 위한 상기 논스 값을 포함함 -;
    변환 값을 발생하기 위해 상기 헤더의 해시를 변환하도록 구성된 동적 변환 회로 - 상기 동적 변환 회로에 의한 상기 변환은 상기 논스 값에 기초함 -; 및
    검증 파라미터를 획득하기 위해 상기 변환 값의 해시를 발생하도록 구성된 제2 OWF 회로 - 상기 검증 파라미터는 상기 POW가 상기 논스 값을 갖는 상기 헤더의 검증을 위한 미리 결정된 타깃에 맞는지(meet)를 결정함 -
    를 포함하는, 집적 회로.
  2. 제1항에 있어서, 상기 동적 변환 회로는 상기 헤더의 해시의 각각의 비트의 상기 동적 변환 회로의 대응하는 비트 값과의 논리적 XOR 연산을 수행함으로써 상기 헤더의 해시를 변환하는, 집적 회로.
  3. 제1항에 있어서,
    정적 변환 이진 값과 연관된 정적 변환 회로
    를 추가로 포함하고, 상기 정적 변환 이진 값은 패스프레이즈에 기초하는, 집적 회로.
  4. 제3항에 있어서, 상기 동적 변환 회로는 상기 논스 값 및 상기 정적 변환 이진 값에 기초한 값으로 초기화되는, 집적 회로.
  5. 제1항에 있어서, 상기 논스 값은 상기 검증 파라미터가 상기 미리 결정된 타깃에 맞지 않을 때 상기 논스 레지스터에서 증가(increment)되고, 상기 증가된 논스 값을 갖는 새로운 헤더가 새로운 POW 동작을 위해 사용되는, 집적 회로.
  6. 제5항에 있어서, 상기 동적 변환 회로는 의사 랜덤 이진 시퀀스(PRBS)에 기초하여, 상기 새로운 POW 동작 전에 업데이트되는 하나 이상의 선형 피드백 시프트 레지스터(LFSR)를 포함하는, 집적 회로.
  7. 제5항에 있어서, 상기 동적 변환 회로는 상기 논스 레지스터가 증가되기 전의 상기 변환 값에 기초하여, 상기 새로운 POW 동작 전에 업데이트되는, 집적 회로.
  8. 제1항에 있어서, 네트워크 내의 노드는 골든 논스(golden nonce)의 값 및 상기 골든 논스에 대응하는 상기 동적 변환 회로의 상태에 기초하여 상기 골든 논스에 대한 POW를 검증하는, 집적 회로.
  9. 제1항에 있어서, 상기 헤더는 메시지 바디에 대응하는 블록체인 헤더이고, 상기 헤더는 이전의 블록 해시, 상기 메시지 바디 내의 정보의 머클 루트(Merkle root), 타임스탬프, 및 타깃 정확도를 추가로 포함하는, 집적 회로.
  10. 제1항에 있어서, 상기 집적 회로는 발견된 골든 논스, 상기 검증 파라미터, 및 상기 논스 값을 포함하는 출력들을 포함하는, 집적 회로.
  11. 전자 회로에 의해 구현되는 방법으로서,
    헤더를 수신하는 단계;
    논스 값으로 논스 레지스터를 초기화하는 단계;
    상기 헤더의 작업 증명(POW) 검증을 위해, 상기 논스 값을 포함하는, 상기 헤더의 해시를 발생하기 위해 제1 일방 함수(OWF)를 수행하는 단계;
    변환 값을 초래하는 상기 헤더의 해시를 변환하기 위해 동적 변환을 수행하는 단계 - 상기 동적 변환에 의한 상기 변환은 상기 논스 값에 기초함 -;
    검증 파라미터를 초래하는 상기 변환 값의 해시를 발생하기 위해 제2 OWF를 수행하는 단계; 및
    상기 검증 파라미터에 기초하여, 상기 POW가 상기 논스 값을 갖는 상기 헤더의 검증을 위한 미리 결정된 타깃에 맞는지를 결정하는 단계
    를 포함하는, 방법.
  12. 제11항에 있어서, 상기 동적 변환을 수행하는 단계는
    상기 헤더의 해시의 각각의 비트의 상기 동적 변환과 연관된 대응하는 비트 값과의 논리적 XOR 연산을 수행하는 단계를 포함하는, 방법.
  13. 제11항에 있어서,
    패스프레이즈에 기초하여 정적 변환 이진 값을 계산하는 단계; 및
    상기 논스 값 및 상기 정적 변환 이진 값에 기초한 값으로, 상기 동적 변환을 수행하기 위해, 동적 변환 회로를 초기화하는 단계
    를 추가로 포함하는, 방법.
  14. 제11항에 있어서,
    상기 검증 파라미터가 상기 미리 결정된 타깃에 맞지 않을 때, 상기 논스 레지스터 내의 상기 논스 값을 증가시키는 단계; 및
    새로운 POW 동작을 위해, 상기 논스 값을 증가시킨 후에, 새로운 헤더를 사용하는 단계
    를 추가로 포함하는, 방법.
  15. 제14항에 있어서, 상기 동적 변환은 하나 이상의 선형 피드백 시프트 레지스터(LFSR)를 포함하는 동적 변환 회로에 의해 수행되고, 상기 방법은
    의사 랜덤 이진 시퀀스(PRBS)에 기초하여, 상기 새로운 POW 동작 전에, 상기 LFSR들을 업데이트하는 단계를 추가로 포함하는, 방법.
  16. 명령어들을 포함하는 비일시적 머신 판독가능 저장 매체로서, 상기 명령어들은
    머신에 의해 실행될 때, 상기 머신으로 하여금
    헤더를 수신하는 것;
    논스 값으로 논스 레지스터를 초기화하는 것;
    상기 헤더의 작업 증명(POW) 검증을 위해, 상기 논스 값을 포함하는, 상기 헤더의 해시를 발생하기 위해 제1 일방 함수(OWF)를 수행하는 것;
    변환 값을 초래하는 상기 헤더의 해시를 변환하기 위해 동적 변환을 수행하는 것 - 상기 동적 변환에 의한 상기 변환은 상기 논스 값에 기초함 -;
    검증 파라미터를 초래하는 상기 변환 값의 해시를 발생하기 위해 제2 OWF를 수행하는 것; 및
    상기 검증 파라미터에 기초하여, 상기 POW가 상기 논스 값을 갖는 상기 헤더의 검증을 위한 미리 결정된 타깃에 맞는지를 결정하는 것
    을 포함하는 동작들을 수행하게 하는, 비일시적 머신 판독가능 저장 매체.
  17. 제16항에 있어서, 상기 동적 변환을 수행하는 것은
    상기 헤더의 해시의 각각의 비트의 상기 동적 변환과 연관된 대응하는 비트 값과의 논리적 XOR 연산을 수행하는 것을 포함하는, 비일시적 머신 판독가능 저장 매체.
  18. 제16항에 있어서, 상기 머신은
    패스프레이즈에 기초하여 정적 변환 이진 값을 계산하는 것; 및
    상기 논스 값 및 상기 정적 변환 이진 값에 기초한 값으로, 상기 동적 변환을 수행하기 위해, 동적 변환 회로를 초기화하는 것
    을 포함하는 동작들을 추가로 수행하는, 비일시적 머신 판독가능 저장 매체.
  19. 제16항에 있어서, 상기 머신은
    상기 검증 파라미터가 상기 미리 결정된 타깃에 맞지 않을 때, 상기 논스 레지스터 내의 상기 논스 값을 증가시키는 것; 및
    새로운 POW 동작을 위해, 상기 논스 값을 증가시킨 후에, 새로운 헤더를 사용하는 것
    을 포함하는 동작들을 추가로 수행하는, 비일시적 머신 판독가능 저장 매체.
  20. 제19항에 있어서, 상기 동적 변환은 하나 이상의 선형 피드백 시프트 레지스터(LFSR)를 포함하는 동적 변환 회로에 의해 수행되고, 상기 머신은
    의사 랜덤 이진 시퀀스(PRBS)에 기초하여, 상기 새로운 POW 동작 전에, 상기 LFSR들을 업데이트하는 것을 포함하는 동작들을 추가로 수행하는, 비일시적 머신 판독가능 저장 매체.
KR1020217025818A 2019-01-15 2020-01-03 블록체인 헤더 검증에서의 동적 변환 KR20210116552A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201962792763P 2019-01-15 2019-01-15
US62/792,763 2019-01-15
PCT/US2020/012154 WO2020150011A1 (en) 2019-01-15 2020-01-03 Dynamic transform in blockchain header validation

Publications (1)

Publication Number Publication Date
KR20210116552A true KR20210116552A (ko) 2021-09-27

Family

ID=71517075

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020217025818A KR20210116552A (ko) 2019-01-15 2020-01-03 블록체인 헤더 검증에서의 동적 변환

Country Status (5)

Country Link
US (1) US11296866B2 (ko)
EP (1) EP3912119A4 (ko)
KR (1) KR20210116552A (ko)
CN (1) CN113597627B (ko)
WO (1) WO2020150011A1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020150011A1 (en) 2019-01-15 2020-07-23 Blockchain Asics, Inc. Dynamic transform in blockchain header validation
WO2022211748A1 (en) * 2021-03-29 2022-10-06 Goksoy Omer A blockchain security method
CN115113675B (zh) * 2022-08-25 2022-11-18 深圳比特微电子科技有限公司 一种电源电压控制方法、装置、区块链服务器和存储介质

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2686767B1 (en) * 2011-03-15 2019-06-05 Irdeto B.V. Change-tolerant method for generating identifier for collection of assets in computing environment using error-correction code scheme
PT3095044T (pt) * 2013-11-19 2020-12-24 Top Galore Ltd Aparelhos e métodos de mineração de blocos
US11270298B2 (en) 2014-04-14 2022-03-08 21, Inc. Digital currency mining circuitry
EP3140979A4 (en) * 2014-05-09 2017-12-27 Veritaseum Inc. Devices, systems, and methods for facilitating low trust and zero trust value transfers
US10340038B2 (en) * 2014-05-13 2019-07-02 Nant Holdings Ip, Llc Healthcare transaction validation via blockchain, systems and methods
US20170300877A1 (en) * 2014-09-23 2017-10-19 Spondoolies Tech Ltd. System and method for providing shared hash engines architecture for a bitcoin block chain
US9960909B2 (en) * 2014-12-08 2018-05-01 Open-Silicon Inc. High speed and low power hashing system and method
US10262164B2 (en) * 2016-01-15 2019-04-16 Blockchain Asics Llc Cryptographic ASIC including circuitry-encoded transformation function
US10313108B2 (en) 2016-06-29 2019-06-04 Intel Corporation Energy-efficient bitcoin mining hardware accelerators
US10601711B1 (en) * 2016-11-22 2020-03-24 Innovium, Inc. Lens table
WO2019111063A1 (en) * 2017-12-05 2019-06-13 Akuon Peter Soft mining device and methods for digital currency coins
US11580238B2 (en) * 2018-01-29 2023-02-14 Vinay Kumar Agarwal Proof-of-approval distributed ledger
US10965466B2 (en) * 2018-08-03 2021-03-30 National Taiwan University Estimable proof-of-work for blockchain
WO2020150011A1 (en) 2019-01-15 2020-07-23 Blockchain Asics, Inc. Dynamic transform in blockchain header validation
US11539530B2 (en) * 2019-09-27 2022-12-27 Divi Labs And Technologies Sociedad Anonima Remote blockchain masternode deployment

Also Published As

Publication number Publication date
CN113597627B (zh) 2023-06-30
EP3912119A1 (en) 2021-11-24
EP3912119A4 (en) 2022-03-09
WO2020150011A1 (en) 2020-07-23
US11296866B2 (en) 2022-04-05
US20200228319A1 (en) 2020-07-16
CN113597627A (zh) 2021-11-02

Similar Documents

Publication Publication Date Title
US9965249B2 (en) Stochastic processing
JP7295927B2 (ja) ブロックチェーンにより実装される方法及びシステム
KR102416506B1 (ko) 블록체인을 이용한 논리 게이트 기능 구현
Johnson et al. A PUF-enabled secure architecture for FPGA-based IoT applications
JP6285536B2 (ja) データを暗号化するシステムおよび方法
US10044703B2 (en) User device performing password based authentication and password registration and authentication methods thereof
Chen et al. Onion ring ORAM: efficient constant bandwidth oblivious RAM from (leveled) TFHE
CN113597627B (zh) 区块链报头验证中的动态变换
BR112016001608B1 (pt) Método através do qual um dispositivo de cliente comprova sua autenticidade para um cliente de mídia a ser instalado por usuário no dispositivo de cliente e dispositivo de cliente
BR112019007232B1 (pt) Métodos implementados por computador para proteção da informação, sistemas para proteção da informação e meio de armazenamento legível por computador não transitório
US20230073293A1 (en) Generating quantum representations of hexadecimal data
Duncan et al. SeRFI: secure remote FPGA initialization in an untrusted environment
Siddiqui et al. Multilayer camouflaged secure boot for SoCs
Koçabas et al. Poster: practical embedded remote attestation using physically unclonable functions
US20160380766A1 (en) Encryption system with a generator of one-time keys and a method for generating one time-keys
KR102665929B1 (ko) 물리적으로 복제 불가능한 기능의 원격 재등록
Durai et al. Real Time Implementation of QFT-PUF Architecture for Data Secure System-on-Chip
KR20230037588A (ko) 프로그래밍가능 장치를 원격으로 프로그래밍하는 방법
JP2024063229A (ja) ブロックチェーンにより実装される方法及びシステム