KR102416893B1 - 조합된 함수들을 갖는 암호화 asic - Google Patents
조합된 함수들을 갖는 암호화 asic Download PDFInfo
- Publication number
- KR102416893B1 KR102416893B1 KR1020207030136A KR20207030136A KR102416893B1 KR 102416893 B1 KR102416893 B1 KR 102416893B1 KR 1020207030136 A KR1020207030136 A KR 1020207030136A KR 20207030136 A KR20207030136 A KR 20207030136A KR 102416893 B1 KR102416893 B1 KR 102416893B1
- Authority
- KR
- South Korea
- Prior art keywords
- hashing
- transform
- cryptographic
- block
- integrated circuit
- Prior art date
Links
Images
Classifications
-
- 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/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
- G06F21/72—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits
-
- 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/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
- G06F21/76—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in application-specific integrated circuits [ASIC] or field-programmable devices, e.g. field-programmable gate arrays [FPGA] or programmable logic devices [PLD]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0618—Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
- H04L9/0637—Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0643—Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/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
- H04L9/3239—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 involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
-
- 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/50—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/12—Details relating to cryptographic hardware or logic circuitry
- H04L2209/122—Hardware reduction or efficient architectures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/30—Compression, e.g. Merkle-Damgard construction
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/60—Digital content management, e.g. content distribution
- H04L2209/603—Digital right managament [DRM]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Power Engineering (AREA)
- Storage Device Security (AREA)
Abstract
변환 가능 집적 회로에는 암호화 작업 증명 시스템들을 위한 것과 같은 조합된 변환/해싱 블록이 제공된다. 변환 가능 집적 회로는 변환 가능 집적 회로의 암호화 데이터 경로 내의 해싱 함수 구성요소들 중에 변환 함수를 위한 구성요소들을 끼워 넣는다. 조합된 변환/해싱 블록은 복수의 수학적 변환 함수들 중 임의의 것을 회로로서 구현하기 위해 집적 회로의 제조 후에 구성될 수 있고, 따라서 사용자가 주문형 집적 회로들의 높은 성능 및 효율 특성들을 유지하면서 집적 회로에 의해 수행되는 암호화 동작들을 체계적으로 수정할 수 있게 한다. 실시예들은 입력 메시지를 변환하고 해싱하기 위해 해싱 함수의 내부 중간 상태 변수들을 수정한다. 방법 및 컴퓨터 프로그램 제품의 실시예들이 또한 제공된다. 이 기술은 블록체인 시스템들, 디지털 권한 관리, 보안 토큰, 및 다른 암호화 관련 분야들 내에서 주문형 집적 회로들(ASIC들)의 배치를 유연하게 가능하게 한다.
Description
관련 출원들
본 출원은 "CRYPTOGRAPHIC ASIC WITH COMBINED TRANSFORMATION AND ONE-WAY FUNCTIONS"란 명칭으로 2018년 3월 20일자로 출원된 미국 가출원 제62/645,609호의 우선권 이익을 주장하는, "CRYPTOGRAPHIC ASIC WITH COMBINED TRANSFORMATION AND ONE-WAY FUNCTIONS"란 명칭으로 2018년 9월 24일자로 출원된 미국 제16/139,332호의 우선권 이익을 주장하며, 이들 출원들 각각은 그 전체가 본 명세서에 참조로 포함된다. 본 출원은 "CRYPTOGRAPHIC ASIC INCLUDING CIRCUITRY-ENCODED TRANSFORMATION FUNCTION"이란 명칭으로 2016년 1월 15일자로 출원되어 미국 특허 출원 공보 제2017/0206382 A1호로 2017년 7월 20일자로 공개된 미국 제14/997,113호와 주제가 관련되며, 이 출원은 그 전체가 본 명세서에 참조로 포함된다.
개시된 기술은 일반적으로 집적 전자 회로들의 설계에 관한 것이며, 보다 구체적으로, 일부 실시예들은 암호화 집적 회로들의 설계에 관한 것이다.
주문형 집적 회로들(ASIC들)은 특정 목적 또는 애플리케이션을 서빙하도록 설계되고 구축된 집적 회로들이다. ASIC들은 범용 프로세서들 또는 필드 프로그래밍가능 게이트 어레이들(FPGA들) 상에서 실행되는 소프트웨어 솔루션들과 같이 더 느리고 더 일반화된 솔루션들에 비해 빠른 계산 속도를 제공한다. 이름이 암시하는 바와 같이, ASIC들은 일반적으로 하나의 특정 애플리케이션만을 수행하도록 설계되어, 유연성과 계산 속도 사이의 상충 관계를 야기한다. ASIC들은 작업 증명 시스템들, 디지털 권한 관리 시스템들, 및 일반적으로 엄격한 속도 및 효율 요건들을 갖는 다른 애플리케이션들과 같은 암호화 관련 분야들에서 중요성이 증가하고 있다.
하나 이상의 다양한 실시예에 따라 본 명세서에 개시된 기술은 다음의 도면들을 참조하여 상세하게 설명된다. 이들 도면들은 단지 예시의 목적들로 제공되며, 개시된 기술의 전형적인 또는 예시적인 실시예들을 묘사할 뿐이다. 이러한 도면들은 개시된 기술에 대한 독자의 이해를 용이하게 하기 위해 제공되며, 그 폭, 범위 또는 적용가능성을 제한하는 것으로 고려되어서는 안 된다. 설명의 명확성 및 용이함을 위해, 이러한 도면들은 반드시 축척에 맞을 필요는 없다는 점에 유의해야 한다.
도 1은 본 명세서에 개시된 기술의 실시예들이 구현될 수 있는 예시적인 암호화 처리 시스템을 도시한다.
도 2는 본 명세서에 개시된 기술의 실시예들에 따르고, 본 명세서에 개시된 기술의 일부로서 고려되는 집적 회로 데이터 경로를 따른 포인트들 중 하나에 위치되는 프로그래밍가능 변환 블록을 포함하는 예시적인 변환 가능 집적 회로를 도시한다.
도 3은 본 명세서에 개시된 기술의 실시예들에 따르고, 본 명세서에 개시된 기술의 일부로서 고려되는 집적 회로 데이터 경로를 따른 상이한 포인트에 위치되는 프로그래밍가능 변환 블록을 포함하는 예시적인 변환 가능 집적 회로를 도시한다.
도 4는 본 명세서에 개시된 기술의 실시예들에 따르고, 본 명세서에 개시된 기술의 일부로서 고려되는 집적 회로 데이터 경로를 따른 포인트들에 둘 다가 위치되는 2개의 프로그래밍가능 변환 블록을 포함하는 예시적인 변환 가능 집적 회로를 도시한다.
도 5a는 본 명세서에 개시된 기술의 실시예들에 따라 변환 함수를 코딩하기 전의 예시적인 프로그래밍가능 변환 블록 구성을 도시한다.
도 5b는 본 명세서에 개시된 기술의 실시예들에 따라, 이진 키에 따라 코딩된 예시적인 프로그래밍가능 변환 블록을 도시한다.
도 6은 본 명세서에 개시된 기술의 실시예들에 따른 예시적인 함수 코딩 프로세스를 도시한다.
도 7은 본 명세서에 개시된 기술의 실시예들에 따른 머클-댐가드() 모델 해싱 함수의 블록도이다.
도 8은 본 명세서에 개시된 기술의 실시예들에 따른 예시적인 조합된 변환/해싱 블록을 도시한다.
도 9는 본 명세서에 개시된 기술의 실시예들에 따라 조합된 변환/해싱 블록을 갖는 예시적인 변환 가능 집적 회로 방법론을 도시한다.
도 10은 개시된 기술의 실시예들의 다양한 특징들을 구현하는데 이용될 수 있는 예시적인 컴퓨팅 구성요소를 도시한다.
이러한 도면들은 모든 것을 망라하거나 본 발명을 개시된 정확한 형태대로 제한하고자 하는 것은 아니다. 본 발명은 수정 및 변경을 가지고 실시될 수 있고, 개시된 기술은 청구항들 및 그 균등물에 의해서만 제한된다는 것을 이해해야 한다.
도 1은 본 명세서에 개시된 기술의 실시예들이 구현될 수 있는 예시적인 암호화 처리 시스템을 도시한다.
도 2는 본 명세서에 개시된 기술의 실시예들에 따르고, 본 명세서에 개시된 기술의 일부로서 고려되는 집적 회로 데이터 경로를 따른 포인트들 중 하나에 위치되는 프로그래밍가능 변환 블록을 포함하는 예시적인 변환 가능 집적 회로를 도시한다.
도 3은 본 명세서에 개시된 기술의 실시예들에 따르고, 본 명세서에 개시된 기술의 일부로서 고려되는 집적 회로 데이터 경로를 따른 상이한 포인트에 위치되는 프로그래밍가능 변환 블록을 포함하는 예시적인 변환 가능 집적 회로를 도시한다.
도 4는 본 명세서에 개시된 기술의 실시예들에 따르고, 본 명세서에 개시된 기술의 일부로서 고려되는 집적 회로 데이터 경로를 따른 포인트들에 둘 다가 위치되는 2개의 프로그래밍가능 변환 블록을 포함하는 예시적인 변환 가능 집적 회로를 도시한다.
도 5a는 본 명세서에 개시된 기술의 실시예들에 따라 변환 함수를 코딩하기 전의 예시적인 프로그래밍가능 변환 블록 구성을 도시한다.
도 5b는 본 명세서에 개시된 기술의 실시예들에 따라, 이진 키에 따라 코딩된 예시적인 프로그래밍가능 변환 블록을 도시한다.
도 6은 본 명세서에 개시된 기술의 실시예들에 따른 예시적인 함수 코딩 프로세스를 도시한다.
도 7은 본 명세서에 개시된 기술의 실시예들에 따른 머클-댐가드() 모델 해싱 함수의 블록도이다.
도 8은 본 명세서에 개시된 기술의 실시예들에 따른 예시적인 조합된 변환/해싱 블록을 도시한다.
도 9는 본 명세서에 개시된 기술의 실시예들에 따라 조합된 변환/해싱 블록을 갖는 예시적인 변환 가능 집적 회로 방법론을 도시한다.
도 10은 개시된 기술의 실시예들의 다양한 특징들을 구현하는데 이용될 수 있는 예시적인 컴퓨팅 구성요소를 도시한다.
이러한 도면들은 모든 것을 망라하거나 본 발명을 개시된 정확한 형태대로 제한하고자 하는 것은 아니다. 본 발명은 수정 및 변경을 가지고 실시될 수 있고, 개시된 기술은 청구항들 및 그 균등물에 의해서만 제한된다는 것을 이해해야 한다.
개시된 기술의 다양한 실시예들에 따르면, 떠오르는 블록체인 기술 분야에서 종종 이용되는 암호화 네트워크 트랜잭션 검증 시스템들을 포함하지만 이에 제한되지는 않는 작업 증명 기반 암호화 검증 프로세스들에서 이용되는 집적 회로가 제공된다. 집적 회로는 암호화 함수, 일반적으로 보안 해싱 알고리즘과 같이, 반전시키기 어려운 암호화 일방향 함수(OWF)를 구현하는 회로의 하나 이상의 블록을 포함한다. 한 명 이상의 사용자에 의해 선택되고 데이터 경로 회로의 블록들로서 구현되는 하나 이상의 변환 함수는 전술된 암호화 함수를 구현하는 회로의 블록들 중 적어도 하나 이전의 포인트에서 집적 회로 데이터 경로 상에 배치된다. 변환 함수를 구현하는 회로의 각각의 블록은 구성 키, 예를 들어 이진 숫자열로 구성된 키를 제공함으로써 사용자에 의해 프로그래밍되도록 구성될 수 있다. 그 다음, 이러한 키는 변환 블록 내에서 데이터 경로 회로로서 구현된다.
이러한 프로그래밍에 이어서, 변환 블록 내의 회로는 집적 회로 데이터 경로를 따라 이에 앞서 회로로부터 수신하는 데이터에 대해 사용자에 의해 프로그래밍된 키를 반영하는 특정 프로그래밍적 변환을 실시하고, 데이터 경로를 따라 추가 회로 상으로 변환된 데이터를 전달할 것이다. 따라서, 변환 블록에 의해 수신되는 데이터의 내용에 관계없이, 회로가 적용하는 변환은 전술된 암호화 함수를 구현하는 회로의 블록 또는 블록들을 포함하는, 데이터 경로를 따라 추가로 회로에 의해 계산되는 최종 값에 직접적으로 그리고 일관되게 영향을 미칠 것이다.
관련된 암호화 알고리즘들의 수학적 특성들, 특히, 반전시키기 어려운 OWF들로서의 그들의 특성과의 변환의 상호작용으로 인해(여기서 그리고 이 문서에서의 다른 포인트들에서, "어려운" 및 "쉬운"과 같은 용어들은 계산 복잡도 이론, 특히 다항 시간 이론의 의미로 이해될 수 있음), 조합된 효과는, 사용자의 키 또는 키들의 완전한 사전 지식이 부족한 당사자에 의해 쉽게 해독되지 않고, 잡음과 쉽게 구별가능하지 않으며, 쉽게 복제가능하지 않더라도, 키들에 대한 사전 지식이 있거나 키들에 대한 지식이 부족하더라도 이들을 계산에 이용하는 수단에 대한 액세스 권한이 있는 당사자(예컨대, 그 데이터 경로 회로 내에서 키들을 구현하도록 프로그래밍된 ASIC를 소유한 당사자)에 의해 완전히 일관되고, 쉽게 복제가능하며, 따라서 검증가능한 회로에 의해 계산된 최종 값에 포함된 비트들의 체계적 변환을 생성하는 것이다.
일반적으로, 후보 트랜잭션 블록 헤더들은 한 번 또는 몇 번의 해싱 동작들을 겪을 것이고, 그 결과의 해시 값은 유효성을 위해 특정 기존 기준들과 비교될 것이다. 비트코인의 경우에, 이용되는 특정 해싱 동작들은 NIST(National Institute for Standards in Technology)에 의해 정의되는 바와 같이, 보안 해싱 알고리즘(SHA)의 두 번째 버전의 256-비트 버전의 2개의 후속 애플리케이션이 되는 것이 발생한다. 이것은 때때로 SHA-256으로 지칭되고, 그것의 2개의 순차적인 애플리케이션은 때때로 이중 SHA-256이라고 지칭된다. 간략화를 위해, 이것은 때때로 이중 SHA라고도 지칭될 수 있다. 그러나, 이것은 비트코인의 경우에 이용되게 될 단지 특정 알고리즘일 뿐이며, 다른 블록체인들은 다른 알고리즘들을 이용할 수 있고 이들을 이용한다는 점에 주목할 가치가 있다. 유사하게, 본 명세서에 설명된 기술의 다양한 실시예들은 블록체인 기술 분야 내에서 다양하고 상이한 알고리즘들을 이용할 수 있는 반면, 다른 실시예들은 블록체인 기술 이외의 분야들에 적용가능하다.
작업 증명 검증 시스템들의 다른 이용들에서 일반적인 바와 같이, 후보 결과들과 유효성 기준들의 비교는 추가 처리를 결정한다. 후보 트랜잭션 블록 헤더가 유효성 기준들을 통과하지 못하는 경우, 이는 폐기되고, 시스템은 다음 후보 트랜잭션 블록 헤더를 처리하기 위해 이동한다. 후보 트랜잭션 블록 헤더가 유효성 기준들을 통과한다면, 이것은 유효 트랜잭션 블록 헤더로 고려된다.
유효 트랜잭션 블록 헤더가 발견될 때, 일련의 다른 동작들이 수행된다. 블록체인 기술 분야 내에서, 이러한 동작들은 일반적으로 블록체인이 참조하는 트랜잭션들의 블록과 함께 유효 트랜잭션 블록 헤더를 블록체인 끝에 첨부하는 것으로 끝난다. 유효 트랜잭션 블록 헤더의 발견을 처음 보고한 당사자에게 보상금을 지급하는 것과 같은 다른 동작들도 발생할 수 있다. 이어서, 새로운 유효 트랜잭션 블록 헤더에 대한 검색이 새로 시작하고, 프로세스가 반복된다.
일반적으로, 블록체인 시스템들에 수반되는 계산 집약적인 작업 증명 계산들을 해결하기 위한 기술은 최근 몇 년간 급격히 발전했다. 예를 들어, 비트코인 트랜잭션들의 경우에, 유효 트랜잭션 블록 헤더들을 발견하는데 수반되는 작업 증명 프로세스는 원래 범용 프로세서들 상에서 실행되는 소프트웨어 애플리케이션들을 이용하여 수행되었다. 그러나, 속도 및 효율성은 블록체인 시스템들의 맥락 내에서 이용되는 것들을 포함하여, 작업 증명 시스템들에서 가장 중요하다. 따라서, 비트코인 채굴 동작들은 ASIC들을 포함하여 특수 하드웨어 솔루션들쪽으로 이동하였다. ASIC들은 계산들이 수행될 수 있는 라인 레벨 속도로부터 발생하는 속도 및 효율성에서의 엄청난 증가를 제공한다. 이름이 의미하는 바와 같이, ASIC들은 하나의 특정 애플리케이션, 이 경우 특정 암호화 프로토콜을 구현하는데 수반되는 수학적 동작들을 수행하도록 설계되고 제조된다.
비트코인 네트워크의 성공은 블록체인 기술의 보안 특성을 증명하였다. 따라서, 다른 관련 분야들에서의 블록체인들의 이용은 시간의 경과에 따라 관심을 얻었다. 그러나, ASIC들은 그들이 구현될 프로토콜의 특정 요소들, 구체적으로 프로토콜에 의해 정의되는 작업 증명 시스템의 상세들을 설명하는 프로토콜의 요소들과 협소하게 일치하도록 설계된다. 비트코인 네트워크의 경우, 각각의 ASIC는 비트코인 프로토콜에 의해 설명되는 바와 같이 큰 속도 블록 헤더들에서 어셈블링하고, 이들을 보안 해싱 알고리즘(SHA-256) 프로토콜의 256-비트 버전의 2개의 연속적인 경우를 겪게 하고, 최종적으로 이를 미리 결정된 유효성 테스트와 비교함으로써 그 결과의 256 비트 이진 해시 값의 유효성을 체크하도록 설계된다.
본 명세서에 개시된 기술의 실시예들은 암호화 관련 애플리케이션들을 위한 주문형 집적 회로들의 설계, 제조 및 이용에 관한 것이다. 보다 상세하게는, 본 명세서에 개시된 기술의 다양한 실시예들은 집적 회로의 고속 데이터 경로에 통합된 회로로서 구현되는 하나의 또는 여러 프로그래밍가능 변환 함수를 갖는 ASIC들에 관한 것이다. 변환 함수를 데이터 경로 회로로서 인코딩함으로써, 본 명세서에 개시된 기술의 실시예들은 ASIC들이 사용자에 의해 선택된 바와 같은 매우 광범위한 작업 증명 시스템들 중 어느 하나를 구현할 수 있게 한다.
일 실시예에서, 조합된 변환/해싱 블록 및 프로그래밍 회로를 포함하는 암호화 집적 회로가 제공된다. 조합된 변환/해싱 블록은, 집적 회로의 제조 이후 프로그래밍가능한 전자 회로의 세트를 포함하여, 입력 데이터에 대해 변환 동작 및 해싱 동작을 수행하여 출력 데이터를 생성하고 저장한다. 프로그래밍 회로는 조합된 변환/해싱 블록과 구성 인터페이스를 통신가능하게 결합한다. 조합된 변환/해싱 블록은 구성 키에 기반하여 구성 인터페이스를 통해 프로그래밍되도록 구성되고, 변환 동작에 따라 해싱 동작의 내부 상태 변수 값들을 변경한다.
실시예에서, 암호화 방법은 사용자로부터 구성 키를 수신하는 단계, 구성 키에 기반하여 변환 함수를 프로그래밍하는 단계, 프로그래밍된 변환 함수에 기반하여 해싱 동작의 내부 상태 변수 값들을 변경하는 것을 포함하는 해싱 동작을 입력 데이터에 대해 수행하는 단계, 및 변환 가능 해싱 동작의 결과를 출력하는 단계를 포함한다.
다른 실시예에서, 비일시적 컴퓨터 판독가능한 저장 매체는, 컴퓨터의 하나 이상의 프로세서에 의해 실행될 때, 컴퓨터로 하여금 암호화 동작들을 실행하게 하는 명령어들의 세트를 내장한다. 이러한 동작들은 사용자로부터 구성 키를 수신하는 것, 구성 키에 기반하여 변환 함수를 프로그래밍하는 것, 프로그래밍된 변환 함수에 기반하여 해싱 동작의 내부 상태 변수 값들을 변경하는 것을 포함하는 해싱 동작을 입력 데이터에 대해 수행하는 것, 및 변환 가능 해싱 동작의 결과를 출력하는 것을 포함할 수 있다.
도 1은 블록체인 애플리케이션들에 일반적으로 이용되고 본 명세서에 개시된 기술의 실시예들이 구현될 수 있는, 이 애플리케이션에 대해 설계된 집적 회로(103)를 포함하는 일반적인 유형의 암호화 네트워크 트랜잭션 검증 시스템(100)의 예를 도시한다.
논의의 용이함을 위해, 예시적인 암호화 처리 시스템(100)의 요소들 및 전체 동작은 비트코인 프로토콜, 및 비트코인 블록체인을 지원하는 네트워크와 관련하여 설명될 것이다. 이러한 방식으로 설명되더라도, 본 개시내용을 읽는 통상의 기술자는 예시적인 암호화 네트워크 트랜잭션 검증 시스템(100)이 비트코인 네트워크 이외의 이용들에 적용가능하다는 것을 이해할 것이다.
예시적인 암호화 네트워크 트랜잭션 검증 시스템(100)은 집적 회로(103)를 포함한다. 다양한 실시예들에서, 집적 회로(103)는 구성 인터페이스(104), 트랜잭션 블록 헤더 프레이머(105), 버퍼(106), 암호화 해싱 코어(107), 평가기(111), 및 결정 엔진(112)을 포함하는 하나 이상의 처리 구성요소를 포함할 수 있다. 일부 실시예들에서, 도 1에 예시된 바와 같이 하나 이상의 구성요소가 단일 집적 회로에 조합될 수 있으며, 집적 회로(103) 내에 표현된 모든 구성요소들은 동일한 집적 회로의 물리적 부분이다(즉, 동일한 실리콘 조각 내에서 모두 만들어진다). 다른 실시예들에서, 이들 중 일부는 상이한 실리콘 조각들로부터 만들어지고 접속 회로에 의해 함께 조합될 수 있다. 구성요소들 각각은 예시적인 암호화 처리 시스템(100)과 관련하여 상세히 논의된다.
사용자(101)는 구성 인터페이스(104)를 통해 하나 이상의 집적 회로 파라미터를 구성할 수 있다. 사용자(101)에 의해 구성될 수 있는 집적 회로 파라미터들의 비제한적인 예들은 특히, 초기화, 내부 클록 속도 또는 다른 네트워크화된 시스템들과의 통신 모드를 포함한다. 일부 실시예들에서, 사용자(101)는 단말기를 통해 집적 회로(103)와 통신하는 사람일 수 있다. 다른 실시예들에서, 사용자(101)는 시스템 또는 네트워크 상에서 실행되는 자동화된 프로세스일 수 있다. 다양한 실시예들에서, 구성 인터페이스(104)는 또한 집적 회로(103)의 동작 특성들을 모니터링하기 위해 사용자(101)에 의해 이용될 수 있다. 모니터링되고 사용자(101)에게 제공될 수 있는 동작 특성들의 비제한적인 예들은 특히, 현재 활동들, 동작 온도, 동작 전압 또는 고장 상태를 포함할 수 있다.
후속하여 집적 회로(103)에 의해 처리되는 각각의 후보 트랜잭션 블록 헤더는 프레이머 자체에 의해 생성된 데이터 및 트랜잭션 및 시스템 데이터(102b)로부터 획득된 데이터의 조합을 이용하여 트랜잭션 블록 헤더 프레이머(105)에 의해 어셈블링된다. 다양한 실시예들에서, 트랜잭션 및 시스템 데이터(102b)는 이전 프로세스, 채굴 소프트웨어(102a)에 의해 컴파일링된다. 많은 경우들에서, 채굴 소프트웨어(102a)는 범용 프로세서 상에서 실행되고, 공중 인터넷에의 접속을 통해 나머지 블록체인 네트워크와 통신하는 소프트웨어 부분이며, 트랜잭션 및 시스템 데이터(102b)를 컴파일링하는데 이용한다.
블록체인 시스템들의 전체 아키텍처, 특히 시스템의 상이한 양태들 사이의 잘 설계된 구획화의 특정 품질들은 집적 회로(103)의 동작들과 채굴 소프트웨어(102a)의 동작들에 관한 상세들 사이의 효과적인 격리를 제공한다. 그 결과, 물리적으로 어디에 존재하는지, 네트워크의 나머지와 통신하기 위해 어떤 절차들을 이용하는지, 네트워크 데이터를 트랜잭션 및 시스템 데이터(102b)로 컴파일링하기 위해 어떤 절차들을 이용하는지, 및 다른 것들을 포함하는 채굴 소프트웨어의 동작들에 관한 대부분의 상세들은 집적 회로(103)의 동작들에 대해 투명하다. 유사하게, 채굴 소프트웨어(102a)가 연결되는 네트워크가 비트코인 네트워크일지 또는 상이한 블록체인의 유지를 담당하는 상이한 네트워크일지 여부는 또한 집적 회로(103), 및 본 명세서에 설명된 기술의 다양한 실시예들에 대해 투명하다.
트랜잭션 및 시스템 데이터(102b)는, 예를 들어 특히, 시스템 날짜 및 시간; 프로토콜 버전; 트랜잭션 블록에 포함된 개별 트랜잭션들의 그룹을 나타내는 머클-댐가드 구성; 블록체인에 첨부될 가장 최근의 블록의 고유 식별자를 포함할 수 있다. 트랜잭션 및 시스템 데이터(102b)의 수신 시에, 트랜잭션 블록 헤더 프레이머(105)는 하나 이상의 후보 트랜잭션 블록 헤더를 생성하기 위해 이를 추가로 정교하게 한다.
다양한 실시예들에서, 트랜잭션 블록 헤더 프레이머(105)는 트랜잭션 및 시스템 데이터(102b)를 파싱하고, 모두 유효하게 형성되고 모두 적절하게 트랜잭션들의 동일한 세트를 나타내지만 모두 서로 약간 상이한 일련의 트랜잭션 블록 헤더들을 생성하기 위해 순차적인 카운터와 같은 특정 다른 요소들을 이에 추가할 수 있다.
다양한 실시예들에서, 트랜잭션 블록 헤더 프레이머(105)가 트랜잭션 및 시스템 데이터(102b)로부터 수신된 트랜잭션들의 블록을 모두 정확하게 나타내지만 모두 서로 약간 상이한 트랜잭션 블록 헤더들을 생성할 수 있는 레이트는 초당 수십억 또는 수천억 개의 개별 후보 트랜잭션 블록 헤더들의 범위에서 빠를 수 있다. 구현에 따라, 버퍼(106)는 해싱 코어(107)에 의한 처리를 기다리는 생성된 후보 트랜잭션 블록 헤더들을 저장할 수 있다.
각각의 집적 회로(103)는 하나 이상의 해싱 코어 또는 다른 암호화 처리 코어들을 포함할 수 있다. 간략화를 위해, 단일 해싱 코어(107)를 포함하는 예시적인 암호화 처리 시스템(100)이 도시되어 있다. 다양한 실시예들에서, 복수의 병렬 해싱 또는 다른 암호화 처리 코어들이 구현될 수 있다. 해싱 코어(107)는 하나 이상의 해싱 블록을 포함한다. 도 1에 도시된 예에서, 해싱 코어(107)는 2개의 해싱 블록(108, 110)을 포함한다. 해싱 블록은 적용가능한 해싱 표준에 의해 정의되는 수학적 동작들을 실행하는 회로의 세트로서 구성될 수 있다. 다양한 실시예들에서, 해싱 코어(107)는 예를 들어 보안 해싱 알고리즘(SHA)과 같은 공통 해싱 표준을 구현할 수 있다. 일부 실시예들에서, SHA의 256-비트 버전(SHA-256)이 이용될 수 있다. 다른 실시예들에서, 해싱 코어(107)는 단일 해싱 블록을 포함할 수 있다. 다양한 실시예들은 2개보다 많은 해싱 블록을 포함할 수 있다.
도 1의 도시된 실시예에서, 각각의 해싱 블록(108, 110)은 SHA-256 표준에 따라 수학적 동작 시퀀스를 실행하도록 설계된다. 해싱 코어(107)는 구현된 암호화 표준에 따라 각각의 후보 트랜잭션 블록 헤더를 처리한다. 일부 실시예들에서, 제1 해싱 블록(108)은 입력으로서 트랜잭션 블록 헤더 프레이머(105)에 의해 생성된 후보 트랜잭션 블록 헤더들을 수락하고, 이들을 표준 해싱 알고리즘에 의해 정의된 수학적 동작을 겪게 할 수 있다. 제1 해싱 블록(108)은 트랜잭션 블록 헤더 프레이머(105)로부터 수신하는 각각의 후보 트랜잭션 블록 헤더에 대한 제1 해시 값(109)을 출력한다. 각각의 제1 해시 값(109)은 "디지털 서명"의 유형으로서 작용하는 주어진 후보 트랜잭션 블록 헤더와 연관된다. 다양한 실시예들에서, 제1 해시 값(109)은 제2 해싱 블록(110)에 의해 추가로 처리될 수 있다. 이것은 비트코인 네트워크 내에서 이용되는 것과 같은 이중 해싱 동작의 표현이다. 일부 실시예들에서, 제2 해싱 블록(110)은 제1 해싱 블록(108)과 동일한 암호화 동작을 구현할 수 있다. 다양한 실시예들에서, 제2 해싱 블록(110)은 제1 암호화 해싱 블록(108)과 상이한 암호화 동작을 구현할 수 있다.
해싱 코어(107)의 출력은 유효 블록을 식별하기 위한 기존 기준들과 비교된다. 다양한 실시예들에서, 해싱 코어(107)의 출력은 제2 해싱 블록(110)으로부터의 출력일 수 있다. 집적 회로(103)의 평가기(111)는 각각의 후보 트랜잭션 블록 헤더에 대해 해싱 코어(107)에 의해 출력된 최종 해시 값을 취하고, 처리된 출력이 미리 결정된 유효성 기준들을 충족하는지를 알아보기 위해 체크한다. 비트코인 네트워크의 특정 경우에, 유효성 기준은 최종 해시 출력에 의해 생성된 256 비트 번호의 수치 값이, 그 값이 유효한 것으로 고려되어야 하는 경우 초과할 수 없는 특정 수치 값(종종 난이도라고 지칭됨)으로 표현된다. 따라서, 수치 값 또는 최종 해시가 임의의 양만큼 난이도를 초과하면, 후보 트랜잭션 블록 헤더는 유효성 테스트에 실패하고, 난이도를 초과하지 않으면, 유효성 테스트를 통과한다. 비트코인 네트워크와 연관된 것 이외의 블록체인 시스템들에서, 일부 실시예들은 유효성을 결정하기 위해 동일한 기준들을 이용할 수 있는 반면, 다른 실시예들은 유효성을 결정하기 위해 상이한 기준들을 이용할 수 있다.
평가기(111)가 최종 해시 값이 유효성 기준을 충족시키지 않는다고 결정하면, 결정 엔진(112)은 평가기(111)에 의해 평가된 처리된 출력과 연관된 후보 트랜잭션 블록 헤더를 폐기할 수 있다. 평가기(111)가 최종 해시 값이 유효성 기준을 충족한다고 결정하면, 결정 엔진(112)은 성공 보고 수신자(113a)에게 전송된 성공 보고(113b)를 통해 외부적으로 그 사실을 보고할 것이다. 성공 보고(113b)는 이와 연관된 다른 정보, 예컨대 이와 연관된 트랜잭션 블록 헤더들 및 다른 항목들과 함께, 전체로서 시스템이 생성하도록 설계된 암호화 작업 증명이다.
다양한 실시예들에서, 성공 보고 수신자(113b)는 채굴 소프트웨어(102a)와 동일할 수 있다. 다른 실시예들에서, 성공 보고 수신자(113b)는 채굴 소프트웨어(102a)와는 상이한 프로세스일 수 있다. 성공 보고(113b)의 수신 시에, 성공 보고 수신자(113a)는 다수의 후속 액션을 취할 수 있다. 다양한 실시예들에서, 이러한 액션들은 일반적으로 네트워크의 나머지에 대한 유효 트랜잭션 블록 헤더의 발견의 통신에 관한 것이고, 일반적으로 블록체인의 끝에의 새로운 트랜잭션 블록의 첨부 및 트랜잭션들의 다음 유효 블록에 대한 검색의 시작으로 끝난다. 비트코인 네트워크의 특정 경우에, 이러한 액션들은 새로운 유효 트랜잭션 블록 헤더의 발견을 보고하도록 하기 위해 제1 당사자에게 보상금을 지급하는 것 등과 같은 다른 양태들을 추가로 포함할 수 있다.
그러나, 채굴 소프트웨어(102a) 동작들에 관한 이전 설명의 경우와 같이, 성공 보고 수신자(113b)의 정확한 특성 및 성공 보고(113a)의 수신에 뒤따라 어떤 액션들이 취해질지 여부에 관한 상세들이 본 명세서에서 설명된 기술의 다양한 실시예들에 대해 투명하다는 점에 주목할 가치가 있다. 유사하게, 성공 보고 수신자(113b)가 블록체인 기반 비트코인의 유지와 연관된 네트워크 또는 상이한 블록체인의 유지와 연관된 네트워크와 통신하는지 여부는 본 명세서에 설명된 기술의 일부 실시예들에 대해 투명하다.
예시적인 구현과 관련하여 설명된 블록체인 기술의 기본적인 작업 흐름과 함께, 본 명세서에 개시된 기술의 실시예들은 도 1의 예시적인 암호화 처리 시스템(100)을 참조하여 논의될 것이다. 논의의 편의를 위해, 실시예들은 그와 연관된 비트코인 및 블록체인 구현과 관련하여 논의될 것이다. 그러나, 위에서 논의한 바와 같이, 이 설명을 읽는 관련 기술분야의 통상의 기술자라면, 본 명세서에서 설명된 실시예들이 많은 다른 관련 분야들에 적용가능하다는 것을 이해할 것이다.
도 2는 본 명세서에 개시된 기술의 실시예들에 따른 예시적인 변환 가능 집적 회로(203)를 도시한다. 예시적인 변환 가능 집적 회로(203)는 도 1과 관련하여 설명된 시스템(100)과 유사한 암호화 처리 시스템(200) 내에서 구현된다. 변환 가능 집적 회로(203)는 도 1의 집적 회로(103)와 관련하여 위에서 논의된 구성요소들과 유사한 구성 인터페이스(204), 트랜잭션 블록 헤더 프레이머(205), 버퍼(206), 암호화 처리 코어(207), 평가기(211) 및 결정 엔진(212)을 포함할 수 있다.
이전에 논의한 바와 같이, 본 명세서에 개시된 기술의 실시예들은 집적 회로(203)의 암호화 데이터 경로 내에 회로로서 구현된 변환 함수를 배치한다. 도 2에 도시된 예에서, 변환 가능 집적 회로(203)의 암호화 처리 코어(207)는 2개의 해싱 블록(208, 210) 및 프로그래밍가능 변환 블록(215)을 포함한다. 해싱 블록들(208, 210)은 예를 들어 SHA-256 표준에 따라 해싱 프로세스를 실행하는 회로와 같은 해싱 또는 다른 암호화 함수를 포함하도록 구현될 수 있다.
도시된 예에서, 프로그래밍가능 변환 블록(215)은 고성능 암호화 집적 회로의 라인 속도 데이터 경로에 직접 통합되는 것이 적합하도록 특별히 설계되는 전자 회로의 블록이지만, 집적 회로 데이터 경로 상의 이에 앞선 회로로부터 수신하는 입력 데이터에 대해 방대한 범위의 가능한 수학적 변환 동작들 중 임의의 하나를 수행하고 그 결과의 변환된 데이터를 전체 라인 속도로 집적 회로 데이터 경로 상의 이에 후속하는 회로에 출력하도록 여전히 프로그래밍될 수 있다.
도 2에 도시된 것과 같은 일부 실시예들에서, 프로그래밍가능 변환 블록(215)은 암호화 처리 코어(207)의 데이터 경로에 통합된다. 이 예에서의 ASIC는 암호화 처리 코어(207) 내의 모든 구성요소들이 단일 고속 데이터 경로를 따라 배열되도록 구성되고, 데이터 경로의 어느 한쪽 끝에 단일 입력 포인트 및 단일 출력 포인트가 존재하며, 암호화 처리 코어(207)를 포함하는 구성요소들 사이에서 이동하는 신호들에 대한 외부 액세스가 존재하지 않는다.
암호화 처리 코어(207) 내의 고속 데이터 경로에의 프로그래밍가능 변환 블록(215)의 통합은 암호화 처리 코어(207)가 라인 속도로 동작하는 것을 허용하고, 따라서 회로는 전체로서 프로그래밍가능 변환 블록(215)을 포함하지 않는 암호화 처리 코어와 비교할 때 성능의 매우 적은 저하를 겪는다. 이것은 이하에서 더 상세히 개시될 방식으로 데이터 경로 회로(즉, 프로그래밍가능 변환 블록(215))로서 변환 함수를 구현함으로써 달성된다.
유사하게, 암호화 처리 코어(207) 내의 회로의 통합된 데이터 경로에의 배열은 구성 키(214)를 검출로부터 보호한다. 암호화 처리 코어(207)는 어느 한쪽 끝에서의 단일 입력 포인트 및 단일 출력 포인트를 포함하고, 암호화 처리 코어(207)를 포함하는 구성요소들 사이에서 이동하는 신호들에 대한 외부 액세스를 갖지 않는다. 따라서, 암호화 처리 코어(207) 내의 회로(예컨대, 프로그래밍가능 변환 블록(215))는 데이터 경로를 따라 배열된 상이한 구성요소들에 의해 생성된 출력들과 입력들을 비교함으로써 프로그래밍가능 변환 블록(215)에 구현된 구성 키(214)의 개시 또는 발견에 대해 보호된다.
도 2에 도시된 예시적인 실시예의 특정 경우에, 암호화 처리 코어(207) 내의 데이터 경로는 암호화 처리 코어(207)에 의해 처리되는 모든 데이터에 대한 단일 입력 포인트가 제1 해싱 블록(208)인 방식으로 배열된다. 그로부터, 트랜잭션 블록 헤더들과 같은 데이터는 프로그래밍가능 변환 블록(215)을 통해, 그리고 이어서 제2 해싱 블록(210)을 통해, 이를 취하는 데이터 경로를 따라 진행한다. 제2 해싱 블록(210)은 단일 출력 포인트이고, 후속하여 데이터는 암호화 처리 코어(207)를 떠나 평가기(211)로 진행한다. 적어도 하나의 해싱 블록 전에(이 예에서는, 해싱 블록(210) 전에) 프로그래밍가능 변환 블록(215)을 배치하는 것은 분석 기술들을 통해 프로그래밍가능 변환 블록(215)에 구현된 구성 키(214)의 발견을 보호한다. 예를 들어, 이러한 배치는 암호화 프로세스들의 특정 세트(예컨대, 이중 SHA-256 해싱)를 겪을 때 특정 결과를 생성하는 것으로 알려진 데이터의 삽입을 통해 구성 키(214)의 발견을 보호한 다음, 변환 가능 암호화 처리 코어(207)에 의해 생성된 결과를 비교하여 구성 키(214)를 추론한다.
도 3을 참조하여 이하에서 더 상세히 논의되는 바와 같은 다른 실시예들에서, 프로그래밍가능 변환 블록(215)은 제1 해싱 블록(208) 이전에 배치될 수 있고, 따라서 암호화 처리 코어(207)의 단일 입력 포인트는 프로그래밍가능 변환 블록(215)이다.
다양한 실시예들에서, 프로그래밍가능 변환 블록(215)은, 집적 회로(203)의 데이터 경로 상의 그 위치로 인해 라인 속도로 데이터 경로를 통해 흐르는 데이터에 대해 넓은 범위의 가능한 수학적 변환들 중 임의의 하나를 일관되게 수행하기 위해 변환 가능 집적 회로(203)의 제조에 후속하는 시간에 프로그래밍될 수 있다.
일부 실시예들에서, 프로그래밍가능 변환 블록(215)이 이러한 프로그래밍을 수락하고 유지할 수 있는 메커니즘은 플래시 메모리를 포함하지만 이에 제한되지 않는 NVRAM(non-volatile read-only memory) 유형 또는 다른 유형들의 비휘발성 메모리를 통한 것일 수 있다. 다양한 실시예들에서, 프로그래밍가능 변환 블록(215)을 구성하는 수단은 마이크로-퓨즈들을 포함하지만 이에 제한되지 않는 1회 프로그래밍가능(OTP) 회로 구성요소들 또는 다른 유형들의 OTP 회로 구성요소들을 통한 것일 수 있다. 마이크로-퓨즈들은 일반적으로 제조 동안 집적 회로 상에 제조 정보를 기입하는 것, 또는 테스트 동안 식별된 고장 메모리 뱅크들을 교정하는 것과 같은, 집적 회로 제조의 간단한 양태들에서 이용된다. 논의의 용이함을 위해, 본 개시내용의 기술은 마이크로-퓨즈들을 포함하는 프로그래밍가능 변환 블록(215)을 참조하여 논의될 것이다.
변환 가능 집적 회로(203)의 다양한 실시예들은 구성 키(214)에 의해 프로그래밍가능 변환 블록(215)을 구성하는 것을 가능하게 할 수 있다. 다양한 실시예들에서, 구성 키(214)는 구성 인터페이스(204)를 통해 동작하는 사용자(201)에 의해 프로그래밍가능 변환 블록(215)으로 코딩될 수 있다. 이러한 실시예들에서, 본 명세서에 개시된 기술은 구성 키(214)를 프로그래밍가능 변환 블록(215)으로 인코딩하기 위해 잠재적으로 사용자(201)의 역할을 하는 여러 상이한 당사자들을 고려한다. 이러한 당사자들은, 예를 들어, IC 제조업체에 의한 공장에서, 한 명 또는 여러 명의 최종 사용자에 의한, 또는 상기의 일부 조합에 의한 것을 포함할 수 있다.
사용자(201)가 단일 당사자인 일부 실시예들에서, 사용자(201)는 프로그래밍가능 변환 블록(215)에 의해 수신된 데이터를 포함하는 각각의 비트에 어떤 변환이 적용될지를 정의하는 구성 키(104)를 제공할 수 있다. 예를 들어, 프로그래밍가능 변환 블록(215)이 256-비트 시스템에 대해 설계되는 경우, 사용자(201)는 있는 경우에, 프로그래밍가능 변환 블록(215)이 수신된 데이터의 모든 256 비트에 어떤 변환을 적용하는지를 정의하는 구성 키(214)를 입력할 수 있다. 따라서, 그 당사자는 프로그래밍가능 변환 블록(215)이 256-비트 키를 이용하여 수행하도록 구성될 수 있는 2^256개의 수학적 동작들 중 임의의 하나를 프로그래밍할 자유를 가질 것이다.
유사하게, 상기의 256 비트 예를 계속하면, 사용자(201)가 한 명 이상의 당사자를 포함하는 실시예들에서, 프로그래밍가능 변환 블록(215)의 구성은 그 각각이 구성 키(214)의 일부에 기여하는 한 명 이상의 사용자(201) 각각에 의해 수행될 수 있다. 이러한 방식은 때때로 멀티-키 방식으로서 지칭될 수 있고, 그 결과의 키는 때때로 멀티-파트 키로서 지칭될 수 있다. 일부 실시예들에서, 한 명 이상의 사용자(201) 각각은 있는 경우에, 프로그래밍가능 변환 블록(215)이 자신이 수신하는 데이터의 비트들의 서브세트에 어떤 변환을 적용하는지를 구성할 수 있는 반면, 다른 실시예들에서, 한 명 이상의 사용자 각각은, 임의의 한 명 이상의 사용자가 있는 경우에, 프로그래밍가능 변환 블록(215)이 자신이 수신하는 데이터의 임의의 하나의 특정 비트 또는 비트들에 어떤 변환을 적용할지를 결정하는 것을 허용하지 않는 방식으로 키로 후속 처리되는 부분 키에 기여할 수 있다.
프로그래밍가능 변환 블록(215)이 예시에서 표준 암호화 알고리즘을 구현하는 제2 해싱 블록(210)과 같은 암호화 OWF를 구현하는 회로의 적어도 하나의 블록 전방에 배치되는 본 명세서에서 설명되는 기술의 다양한 실시예들에서, 프로그래밍가능 변환 함수(215)의 상호작용 및 관련된 암호화 알고리즘들의 특정 수학적 특성들, 특히 반전되기 어려운 OWF들로서의 그들의 특성의 조합된 효과(여기서 "어려운" 및 "쉬운"이라는 용어들은 계산 복잡도 이론, 특히 다항 시간 이론의 의미로 이해될 수 있음)가 어떤 특정 결과들을 생성한다. 구체적으로, 조합된 효과는, 단일 비트 변경과 같은, 프로그래밍가능 변환 블록(215)에 의해 도입된 약간의 변경조차도 구성 키(214) 및 프로그래밍가능 변환 함수(215)의 설계의 특정 양태들의 완전한 사전 지식이 부족한 당사자에 의해 쉽게 해독되지 않고, 잡음과 쉽게 구별가능하지 않으며, 쉽게 복제가능하지 않더라도, 이러한 지식을 갖거나 이들의 지식이 부족하더라도 이들을 계산에 이용하는 수단에 대한 액세스 권한이 있는 당사자(예컨대, 동일한 ASIC, 또는 본 명세서에서 설명되는 기술을 통합하고 또한 그 데이터 경로 회로 내의 동일한 구성 키(214)로 프로그래밍되는 다른 ASIC를 소유한 당사자)에 의해 완전히 일관되고, 쉽게 복제가능하며, 따라서 검증가능한 해싱 코어(207)에 의해 계산되는 최종 값에 포함되는 비트들의 대규모의 변환을 야기할 것이라는 점이다.
일부 실시예들에서, 프로그래밍가능 변환 블록(215)은 최종 사용자가 어떤 특정 비트들의 입력 및 출력 내의 위치를 전위시키는 반면 다른 것들은 변경되지 않은 채로 남겨두는 전위 방식들과 같은 다양한 변환 방식들을 프로그래밍하는 것을 가능하게 하도록 구성될 수 있다. 다양한 실시예들에서, 프로그래밍가능 변환 블록(215)은 일부 비트들이 반전되는 반면 다른 것들은 변경되지 않은 채로 있는 직접 비트 반전 변환 방식을 수행하도록 구성될 수 있다.
논의의 용이성을 위해, 본 개시내용의 기술은, 256-비트 구성 키(204)가 어떤 변환이 이하의 코드에 의해 프로그래밍가능 변환 블록(215)에 의해 수신된 256 비트들 중 각각의 비트에 적용될 것인지를 결정하는 직접 비트 반전 변환 방식을 참조하여 논의될 것이다: 256 비트 구성 키가 "0"의 값을 포함한 위치들에서 수신된 비트들은 한 가지 방식으로 처리될 것이고(예를 들어, 변경되지 않은 채로 남아 있을 것이고), 반면에 256-비트 구성 키가 "1"의 값을 포함하는 위치들에서 수신된 비트들은 상이한 방식으로 처리될 것이다(예를 들어, 반전될 것이다).
제2 해싱 블록(210)에 의한 최종 해시 값의 생성에 이어서, 도 2에서의 평가기(211) 및 결정 엔진(212)에 의해 수행되는 평가 프로세스는 도 1과 관련하여 설명된 것과 유사하다. 이 프로세스에서의 제1 단계에서는 평가기(211)가 특정한 트랜잭션 블록 헤더에 의해 생성된 최종 해시 값이 유효성 기준들을 충족시키는지 또는 충족시키지 않는지를 결정할 것이다.
최종 해시 값이 (일반적으로 대다수의 경우들에서의 경우와 같이) 유효성 기준을 충족시키지 않으면, 이를 생성한 최종 해시 값 및 트랜잭션 블록 헤더는 둘 다 폐기될 것이다. 최종 해시 값이 유효성 기준을 충족시키는 경우, 최종 해시 값 및 최종 해시 값을 생성한 트랜잭션 블록 헤더가 결정 엔진(212)에 전달될 것이다. 성공 표시를 수신한 후에, 결정 엔진(212)은 이어서 성공 보고 수신자(213a)에게 성공 보고(213b)를 발행할 수 있다. 추가로, 도 1과 관련하여 또한 논의된 바와 같이, 성공 보고 수신자(213a)는 채굴 소프트웨어(202a)와 동일할 수 있거나 그렇지 않을 수 있다.
상이한 것은, 프로그래밍가능 변환 블록(215)의 포함, 특정 구성 키(214)를 이용한 사용자에 의한 그 후속 프로그래밍, 및 그 결과의 변환된 데이터의 제2 해싱 코어(210)와의 상호작용이 트랜잭션 블록 헤더 프레이머(205)에 의해 생성되고 평가기(211)에 전달되는 하나 이상의 트랜잭션 블록 헤더에 대해 해싱 코어(203)에 의해 계산된 최종 해시 값에서의 변경을 야기했을 수 있다는 것이다. 또한, 이전에 논의된 바와 같이, 이러한 변경들은 특정한 고유하고 유용한 수학적 특성들을 갖는다. 평가기(211)의 작업이 해싱 코어(203)로부터 수신된 해시 값들을 특정한 미리 결정된 유효성 기준과 비교하고 이에 기반하여 해시 값들이 유효성 테스트를 통과하거나 실패하는지를 평가하는 것임을 고려하면, 평가기(211)에 의해 수신된 해시 값에서의 변경은 평가기가 수신된 해시 값의 유효성 또는 비-유효성에 대해 행하는 변경을 야기할 수 있다.
다양한 실시예들에서, 프로그래밍가능 변환 블록(215)에 프로그래밍되는 경우, 프로그래밍가능 변환 블록(215)으로 하여금 그것을 통과하는 정보 내의 어떠한 변경도 유발하지 않게 하고, 따라서 프로그래밍가능 변환 블록(215)의 존재가 트랜잭션 블록 헤더 프레이머(205)로부터 수신되고 평가기(211)로 전달되는 트랜잭션 헤더 블록들 각각에 대해 암호화 처리 코어(207)에 의해 계산되는 최종 해시 값의 어떠한 변경도 유발하지 않게 할 하나 또는 몇 개의 널 구성 키(214) 값이 존재할 수 있다. 일부 실시예들에서, 널 구성 키는, 특정 실시예들에서 길이가 256 비트일 수 있는, 구성 키의 길이와 동일한 길이의 0들의 문자열에 의해 표현될 수 있다.
하나 또는 몇 개의 널 키를 포함하는 다양한 실시예들에서, 프로그래밍가능 변환 함수를 널 키로 프로그래밍하는 전체 효과는, 평가기에 의해 유효하다고 고려되는 트랜잭션 블록 헤더 해시들의 세트가 변경되지 않도록 하여, 도 1에 관하여 논의된 해싱 코어(107)로부터의 출력과 기능적으로 동일한 암호화 처리 코어(207)로부터의 출력을 렌더링하는 것이다. 즉, 본 명세서에 설명된 기술을 포함하고 널 키로 프로그래밍되는 변환 가능 집적 회로는 본 명세서에 설명되는 기술을 포함하지 않는 집적 회로와 동일한 결과들을 생성하도록 거동할 것이고, 따라서, 비트코인 트랜잭션(비트코인 채굴이라고도 함)의 암호화 네트워크 트랜잭션 검증을 포함하지만 이에 제한되지 않는 동일한 작업 증명 시스템들의 맥락 내에서 작업 증명 계산들을 수행하기에 적합할 것이다. 본 명세서에 설명된 기술의 이러한 양태는, 본 개시내용에서 설명된 기술의 실시예들을 포함하는 집적 회로들의 이용이, 넓은 범위의 다른 애플리케이션들에 유용한 것에 더하여, 비트코인을 채굴하는 목적에 유용할 수 있게 하므로 상업적 시사점들을 갖는다.
이러한 실시예들에서, 그리고 널 구성 키의 도면을 포함하지 않는 다른 실시예들에서, 널 구성 키와 상이한 구성 키(214)에 의한 프로그래밍가능 변환 블록(215)의 프로그래밍은 트랜잭션 블록 헤더 프레이머(205)에 의해 생성되고 평가기(211)로 전달되는 후보 트랜잭션 블록 헤더들 각각에 대해 암호화 해싱 코어(207)에 의해 계산되는 최종 해시 값에서의 변경을 야기할 것이다. 이것은 결국 모든 후보 트랜잭션 블록 헤더들 중 어떤 서브세트가 평가기(211)에 의해 유효한 것으로 고려되고 따라서 결정 엔진(212)에 추가로 전달되고, 이후 성공 보고(213b)의 형태로 집적 회로(203)의 외부로 전달될지에 대한 변경을 야기할 것이다.
또한, 전술한 바와 같이, 프로그래밍가능 변환 함수(215)와, 가장 표준의 최신 암호화 해싱 함수들과 같은 OWF들의 특정 수학적 함수들과의 상호작용으로 인해, 암호화 해싱 함수의 입력에서의 (단일 숫자를 포함하는) 임의의 변경은 잡음과 쉽게 구별가능하지 않는 결과의 해시 값에서의 대규모 변경을 야기한다.
앞서 살펴본 바와 같이, 일부 실시예들에서, 프로그래밍가능 변환 블록(215)은, 암호화 처리 코어의 단일 입력 포인트가 프로그래밍가능 변환 블록인 식으로, 제1 해싱 블록에 앞서 배치될 수 있다. 하나의 이러한 예가 도 3에 도시되어 있다. 이제 도 3을 참조하면, 이러한 예시적인 배열에서, 프로그래밍가능 변환 블록(315)에 의해 구현되는 변환 함수는 해싱 블록들(308, 310)에 의해 임의의 해싱 동작이 적용되기 전에 트랜잭션 블록 헤더들에 적용된다. 도 3의 예시적인 실시예에서 상이한 위치에 배치되지만, 데이터 경로 내의 프로그래밍가능 변환 블록(315)의 위치는 적어도 하나의 해싱 블록 이전에 배치되는 조건을 여전히 충족시킨다(그 경우에, 이것은 제1 해싱 블록(308) 및 제2 해싱 블록(310)의 앞에 배치된다). 따라서, 도 3에 의해 도시된 실시예는 도 2에 도시된 실시예와 기능적으로 유사하고, 그것이 생성하는 결과들의 특성들과 관련하여 그리고 전술한 바와 같이 분석 기술들을 통해 프로그래밍가능 변환 블록(315) 내에서 구현되는 구성 키(314)의 발견에 대해 그것이 제공하는 보호와 관련하여 동일한 본질적인 품질들을 제공한다.
일부 실시예들에서, 단일 집적 회로는 하나보다 많은 프로그래밍가능 변환 블록(215)을 포함할 수 있다. 도 4는 이러한 예시적인 변환 가능 집적 회로(400)를 도시한다. 이러한 경우들에서, 실시예들은 전체 구성 키를 프로그래밍하는 능력을 둘 이상의 사용자에게 제공하도록 구현될 수 있다.
이러한 실시예들은 캐스케이드 암호들 및 다중 서명 방식들 둘 다를 갖는 일부 특성을 공유하지만 서로 구별되는 프로세스를 구현한다. 구체적으로, 캐스케이드 암호들은 암호들의 순차적인 이용 애플리케이션, 즉 나중에 해독될 수 있는, 즉 다시 읽을 수 있도록 렌더링될 수 있는 방식으로 데이터를 암호화하는 프로세스들을 수반한다. 도 4에 도시된 바와 같이 본 명세서에 설명된 기술의 다양한 실시예들은 임의의 종류의 암호들의 이용을 수반하지 않지만 암호화 동작들을 순차적으로 적용하는 캐스케이딩의 유사한 개념을 포함한다. 오히려, 이들은 순차적인 애플리케이션 변환들 및 OWF들(예컨대, 암호화 해싱 프로세스들)을 수반한다. OWF들은, 다른 양태들 중에서도, 그들의 정의 특성이 해독가능하기 보다는 오히려 해독불가능하다는 점에서 암호들과 구별된다. 유사하게, 그 최종 제품이 어떤 것을 나타내는 문자열이라는 점에서 도 4에 도시된 바와 같이 본 명세서에 설명된 기술의 다양한 실시예들은 디지털 문서에 적용되는 복수의 디지털 서명들로서 생각될 수 있다. 그러나, 임의의 종류의 디지털 서명들의 정의 특성은 그들이 서명자와 상이한 당사자 또는 서명자의 키를 보유한 사람에 의해 검증될 수 있다는 것이다. 이것은 본 명세서에 설명된 기술의 다양한 실시예들의 경우가 아니며, 그 맥락에서 서명자에 의해서만 검증될 수 있는 서명으로 생각될 수 있다. 또한, 다중 서명 방식들은 종종 각각의 서명이 다른 서명들과 별개이고 개별적으로 검증될 수 있는 방식으로 설계된다. 다시 말해, 이것은 본 명세서에 설명되는 기술의 다양한 실시예들에 대한 경우가 아니며, 어느 원래의 서명자도 다른 서명자의 존재 없이 그 서명을 검증할 수 없는 방식으로 특별히 설계된다.
따라서, 본 명세서에 설명된 기술의 다양한 실시예들은 캐스케이드 암호들, 디지털 다중 서명 방식들 및 다른 현재의 암호화 기술들 모두와 구별된다. 그 신규함으로 인해 공통 명칭이 없는 동안, 이러한 시스템은 멀티-키 캐스케이딩 변환된 일방향 함수 시스템으로서 설명될 수 있다.
일부 실시예들에서, 적어도 제2 해싱 블록(410)에서 회로로서 구현되는 암호화 해싱 알고리즘은, 제한 없이, 그 다양한 구현들에서의 SHA-2, 그 다양한 구현들에서의 Keccak/SHA-3, 그 다양한 구현들에서의 Skein, 그 다양한 구현들에서의 Grøstl, 그 다양한 구현들에서의 JH, 및 다른 것들을 포함하는 입증된 표준 암호화 해싱 알고리즘이거나 또는 비표준인 것에도 불구하고, 반전시키기 어려운(여기서, "어려운"이라는 용어는 다항 시간 이론의 의미로 이해됨) 여전히 OWF인 비표준 해싱 알고리즘들일 수 있다. 이러한 실시예들에서, 도 4에 도시된 바와 같이 본 명세서에 설명된 기술은, 전술한 바와 같이, 보안 멀티-키 캐스케이딩 변환된 일방향 함수 시스템의 구현을 가능하게 한다.
일부 실시예들에서, 제1 및 제2 프로그래밍가능 변환 블록들(418, 415) 둘 다는 길이가 256 비트인 제1 및 제2 구성 키들(417, 414)에 의해 프로그래밍될 수 있는 반면, 다른 실시예들에서, 하나 또는 둘 다는 구현의 상세들에 따라 상이한 길이일 수 있다.
또한 도 4에 도시되고 본 명세서에서 설명된 기술의 다양한 실시예들에서, 1차 권한자라고 지칭될 수 있는 제1 당사자는 구성 인터페이스(404)를 이용하여 1차 키라고 지칭될 수 있는 제1 구성 키(417)를 1차 변환이라고 지칭될 수 있는 제1 변환 블록(418)으로 프로그래밍할 수 있다. 별도로, 2차 권한자라고 지칭될 수 있는 제2 당사자는 구성 인터페이스(404)를 이용하여 2차 키라고 지칭될 수 있는 제2 구성 키(414)를 2차 변환이라고 지칭될 수 있는 제2 프로그래밍가능 변환 블록(415)으로 프로그래밍할 수 있다.
또한 도 4에 도시되고 본 명세서에서 설명된 기술의 특정 실시예들에서, 1차 권한자 및 2차 권한자 중 하나 또는 둘 다는 여러 상이한 당사자들로 구성될 수 있다. 일부 이러한 실시예들에서, 1차 당사자는 전체로서 1차 키를 멀티-파트 키로서 프로그래밍할 수 있는 반면, 2차 당사자는 전체로서 2차 키를 멀티-파트 키로서 프로그래밍할 수 있다. 다른 실시예들에서, 키들 중 어느 하나 또는 둘 다가 1차 및 2차 당사자들 모두에 의해 멀티-파트 키들로서 공동으로 구성될 수 있다. 특정 실시예들에서, 1차 당사자, 2차 당사자 또는 둘 다에 의해 프로그래밍된 키는 널 키들일 수 있다. 다른 실시예들에서, 제1 및 제2 프로그래밍가능 변환 블록들(418, 415)은 구성 인터페이스(404)를 통해 사용자(401)에 의해 입력된 단일 구성 키에 의해 프로그래밍될 수 있다.
도 4에 도시되지 않았지만 본 명세서에서 설명된 기술의 다른 실시예들에서, 프로세스는 1차 권한자에 의해 이용되는 구성 인터페이스가 2차 권한자에 의해 이용되는 구성 인터페이스와 다를 수 있는 것을 제외하고 일반적으로 유사할 수 있다. 일부 이러한 실시예들에서, 1차 권한자에 의해 이용되는 구성 인터페이스는 집적 회로의 제조 프로세스 동안 액세스가능하지만 그 결과의 완성된 부분들에서 액세스가능하지 않은 방식으로 생성될 수 있는 반면, 2차 권한자에 의해 이용되는 구성 인터페이스는 제조 프로세스 동안 및 그 결과의 완성된 부분들 모두에서 액세스가능한 방식으로 구조화될 수 있다. 본 명세서에 설명된 기술의 다른 실시예들에서, 각각의 구성 인터페이스의 상대적 액세스가능성 또는 액세스불가능성은 상이하게 구조화될 수 있다.
또한 도 4에 도시되지 않았지만 본 명세서에서 설명된 기술의 일부 실시예들에서, 프로세스는 설계가 2개보다 많은 해싱 라운드들, 또는 2개보다 많은 프로그래밍가능 변환 함수들, 또는 둘 다를 포함할 수 있다는 것을 제외하고는 도 4에 도시된 것과 일반적으로 유사할 수 있다.
도 5a는 본 명세서에 개시된 기술의 실시예들에 따라 코딩되기 전의 예시적인 프로그래밍가능 변환 블록(515) 구성을 도시한다. 프로그래밍가능 변환 블록(515)은 (도 5b에 도시된) 구성 키(514)에 의해 표현되는 변환 함수를 정의하는 프로그래밍가능 회로의 세트들을 포함한다. 다양한 실시예들에서, 프로그래밍가능 변환 블록(515)은 복수의 전위 동작들 중 하나의 전위 동작을 가능하게 하도록 구성될 수 있고, 그에 의해 입력 데이터의 하나 이상의 비트(예컨대, 1a1, 1b1 등)가 입력 데이터의 다른 비트와 전위되어 수정된 출력 데이터(예컨대, 5a1, 5b1 등)를 생성한다. 다른 실시예들에서, 프로그래밍가능 변환 블록(515)은 복수의 직접 비트 반전 또는 비트 플립핑 동작들 중 하나를 가능하게 하도록 구성될 수 있고, 그에 의해 입력 데이터의 하나 이상의 비트가 플립핑되어 수정된 출력 데이터를 생성한다.
본 명세서에 설명된 바와 같이 직접 비트 반전 변환 방식을 이용하는 다양한 실시예들은 256 비트 이진 구성 키가 프로그래밍가능 변환 함수(215)에 의해 제공되는 전체 키 공간에 대한 액세스를 가능하게 하기 위한 간결한 수단을 제공한다는 사실을 이용하도록 구현될 수 있다. 즉, 256 비트는 256개의 별개의 변환 중 어느 하나가 제1 해시 값(209)에 대해 프로그래밍가능 변환 함수(215)에 의해 수행될 것인지를 사용자가 지정할 수 있게 하는데 필요한 최소 길이이다. 직접 비트 반전 변환 방식을 이용하는 것은 또한 데이터 경로 회로로서 변환 함수를 구현하기 위해 최소량의 새로운 회로 요소들의 이용을 가능하게 할 수 있다. 이것은, 변환 함수가 데이터 경로 회로로서 구현된다는 사실이 데이터 경로 상에 배치된 임의의 추가 회로가 라인 속도로 동작할 것이고, 전체로서 변환 가능 집적 회로(203)의 성능의 전체적인 저하를 초래할 것임을 의미하기 때문에 중요하다.
직접 비트 반전 변환 방식은 또한 256 비트 구성 키 내의 모든 값들을 0으로 간단히 설정함으로써 프로그래밍가능 변환(215)의 모든 효과들을 디스에이블하는 간단한 수단을 제공할 수 있다. 이러한 키는 널 키라고 지칭될 수 있다. 이것의 하나의 결과는, 프로그래밍가능 변환 함수(215)를 포함하지 않는 필적하는 집적 회로의 것과는 구별불가능한 방식으로 동작하도록, 변환 가능 집적 회로(203)를 구성하는 프로세스를 단순화한다. 이것의 실제적인 결과는 본 명세서에 설명된 기술을 포함하는 집적 회로들이 표준 비트코인 채굴 ASIC들과 동일한 방식으로 동작하도록 용이하게 구성될 수 있고, (본 명세서에 설명된 기술을 포함하지 않는 비트코인 채굴 ASIC들에 의해 복제가능하지 않는 방식들로 동작할 수 있는 것 외에도 그리고 그에 추가하여) 특정 어려움 없이 비트코인들을 채굴하는데 이용될 수 있다는 것이다.
논의의 편의상, 도 5b 및 도 6은 직접 비트 반전 구성을 참조하여 논의될 것이다.
프로그래밍가능 변환 블록의 코딩이 도 5b에 도시되어 있다. 예시적인 프로그래밍가능 변환 블록(520)은 구성 키(514)에 따라 코딩되는 것으로 도시된다. 프로그래밍가능 변환 블록(520) 내에서 구현된 구성 키(514)를 나타내기 위해, 마이크로-퓨즈가 디스에이블된 것(즉, 데이터가 디스에이블된 마이크로-퓨즈를 통해 흐르는 것을 중단하는 것)을 나타내기 위해 음영 상자들이 이용된다. 예를 들어, 도시된 예에서, 마이크로-퓨즈(3a2)가 디스에이블될 때, 입력 비트(1a2)는 변경되지 않고 프로그래밍가능 변환 블록(520)을 통해 흐른다. 마이크로-퓨즈(2b2)가 디스에이블될 때, 입력 비트(1b2)는 프로그래밍가능 변환 블록(520)을 통해 흐름에 따라 비트 플립퍼(4b2)에 의해 반전된다.
도 6은 본 명세서에 개시된 기술의 실시예들에 따른 예시적인 함수 코딩 프로세스를 도시한다. 스테이지 1은 도 5a의 프로그래밍가능 변환 블록(515)과 유사한, 코딩되지 않은 상태에서의 프로그래밍가능 변환 블록(15)을 나타낸다. 도시된 바와 같이, 프로그래밍가능 변환 블록(15)은 6-비트 메시지에 대해 구성된다. 다른 실시예들에서, 프로그래밍가능 변환 블록(15)은 256 비트의 길이와 같은 임의의 길이의 입력 문자열들에 대해 구성될 수 있다.
스테이지 2에서, 프로그래밍가능 변환 블록(15)이 코딩되어, 사용자에 의해 제공된 바와 같은 구성 키(14)를 구현한다. 도시된 바와 같이, 구성 키(14)는 문자열 "011000"을 포함한다. 프로그래밍가능 변환 회로(15) 내의 음영 상자들에 의해 도시된 바와 같이, 대응하는 마이크로-퓨즈들은 구성 키(14)에 따라 디스에이블된다. 스테이지 3에서, 프로그래밍가능 변환 블록(15)의 코딩에 이어서 록 퓨즈(16)가 디스에이블되어, 구성 키(14)를 발견으로부터 보호할 수 있다. 록 퓨즈(16)는 프로그래밍 변환 블록(15)이 사용자에 의해 프로그래밍되는 프로그래밍 회로 상에 배치될 수 있다. 록 퓨즈(16)를 디스에이블함으로써, 프로그래밍 변환 블록(15)을 포함하는 암호화 처리 코어는 단일 입력 포인트 및 단일 출력 포인트를 갖는 것으로 복귀하고, 그에 의해 도 2와 관련하여 위에서 상세히 논의된 보호의 유형을 제공한다.
본 발명자들은, 무엇보다도, 위에서 설명된 개별 변환 블록 및 해싱 블록의 조합된 변환/해싱 블록으로의 병합이 수 개의 이점들을 제공할 수 있다는 것을 인식하였다. 이러한 구현을 위한 집적 회로는 개별 변환 블록들 및 해싱 블록들에 의해 요구되는 것보다 더 적은 전력 소비를 필요로 할 수 있다. 특정 조합된 변환/해싱 블록 구현을 활용하는 구성 키들(314)의 우선적 이용을 통해 주어진 해싱 알고리즘 구현의 효율 및 속도를 증가시키는 것이 또한 가능할 수 있다.
대체로, 일방향 함수는 임의의 길이의 입력 메시지를 고정 길이의 (종종 "해시" 또는 "메시지 다이제스트"라고 명명되는) 결과로 압축한다. 암호화 해시 함수의 경우, 메시지의 해시를 발견하기가 계산적으로 용이해야 하지만, 해시만이 주어지는 메시지를 발견하는 것은 계산적으로 어려워야 한다. 또한, 하나의 메시지가 주어지면, 제1 메시지의 해시와 동일하거나 심지어 유사한 해시를 생성하는 다른 메시지를 발견하는 것은 어려워야 한다. 즉, 메시지 콘텐츠에서의 임의의 변경은 해시에서의 급격한 변경들을 생성해야 한다. 마지막으로, 해시 길이는 각각이 동일한 해시를 생성하는 2개의 상이한 메시지를 공격이 발견하지 못하도록 충분히 커야 하며, 따라서 충돌시 가능한 악의적인 대문자 사용이 회피된다.
가장 전형적으로 전처리 스테이지, 압축 스테이지, 및 출력 변환 스테이지를 수반하는 해싱 함수를 구현하는 많은 방식들이 있다. 대부분의 해싱 함수들은 그 입력의 고정 크기의 블록들을 처리함으로써 임의의 길이 입력을 해싱하는 반복 프로세스들로서 설계된다. 이어서, 각각의 블록은 이전 중간 결과들 및 다음 입력 블록의 함수로서 새로운 중간 결과를 계산하는, 내부 고정 크기의 압축 함수 F에의 입력으로서 역할을 할 수 있다. 일부 경우들에서, 동일한 압축 함수가 이용되므로 하드웨어 또는 소프트웨어 구현들 중 어느 하나는 그 공통성을 이용할 수 있다. 다른 경우들에서, 상이한 압축 함수들이 상이한 처리 반복들 또는 라운드들에서 이용될 수 있다.
도 7은 가장 인기 있는 해싱 함수들이 뒤따르고 본 명세서에 개시되는 기술의 일부로서 고려되는, 머클-댐가드 해싱 함수 모델(700)의 예를 도시한다. 이 모델에서, 입력 메시지는 필요에 따라 추가 비트들을 첨부함으로써 특정 크기로 패딩에 의해 전처리되고, 이어서 정수개의 블록들 또는 균일한 길이의 부분들로 분할된다. 그 다음, 이 예에서 압축 함수 F에 의해 그 부분들이 각각 순차적으로 처리된다.
따라서, 초기 해시로 시작하여, F는 이전 중간 해시 값 및 새로운 메시지 부분으로부터 새로운 중간 해시 값을 반복적으로 생성한다. 최종 압축 함수의 출력은 입력 메시지의 해시이다. 이 방식의 보안은 압축 함수 F의 보안에 의존한다. 압축 함수는 일반적으로 AND, OR, 및 XOR(배타적-OR)과 같은 논리 동작들로 구현된다. 처리의 주어진 라운드 내에서, 비트들은 또한, 레지스터에서와 같이, 다수 회 회전 또는 시프트될 수 있어, 중간 계산들의 결과들을 추가로 뒤섞는 것을 돕는다.
이용되는 특정 해싱 함수에 관계없이, 해싱 함수에서의 중간 상태 변수들은 이전에 설명된 변환 함수에 따라 수정될 수 있다. 즉, 해싱 함수로 전달될 입력 데이터의 변환-수정된 버전을 생성하기 위해 변환 함수를 이용하기 보다는, 변환 함수는 대신에 해싱 함수 내부 상태 변수들을 직접 변경할 수 있다. 그 의미에서, 이러한 실시예들에서, 그 상호작용이 효과적으로 병합되기 때문에, 출력을 생성하는 별개의 변환 블록 및 그 출력에 대해 동작하는 해싱 블록이 없다.
도 8은 본 명세서에 개시된 기술의 실시예들에 따른 조합된 변환/해싱 블록(800)의 예를 도시한다. 메시지의 일부를 처리하기 위해 종래의 해싱 블록에 의해 이용되는 논리 함수들의 주어진 예시적인 세트에 대해, 변환 함수의 비트들은 해싱 블록의 내부 상태 변수들을 변경할 수 있다. 따라서, 이전에 설명된 구성 키는 해싱 함수에 공급되는 입력보다는 해싱 함수 자체의 동작들을 맞춤화하는 변환 함수를 정의한다.
이 예에서, 해싱 블록의 일부를 포함하는 논리 게이트들은 적어도 메시지의 인입 부분(802)(여기서는 6 비트 폭이고, "110101"과 동일함)을 처리하여 해시(804)(또한, 여기서는 6 비트 폭이고, "111010"과 동일함)를 생성한다. 도시된 예는 임의의 특정한 알려진 해싱 함수에 대한 회로를 나타내지 않고, 명료성을 위해 전형적인 해싱 함수보다 훨씬 더 간단하다. 여기에 도시되지는 않았지만, 많은 해싱 함수들은 또한 비트 시프트들을 수행하고 배타적-OR 동작들을 또한 이용한다.
메시지의 인입 부분(802)의 각각의 비트는 다양한 논리 게이트들을 통해 처리될 수 있어서, 해시(804)의 각각의 비트는 인입 부분(802)의 모든 비트들의 철저하게 혼합되고, 뒤섞이며, 재조합된 함수이다. 인입 부분(802)의 임의의 비트에 대한 임의의 변경은 해시(804)에 대한 주요 변경을 야기할 수 있다. 해시(804)는 매우 쉽게 계산될 수 있지만, 해시(804)만이 주어지면 인입 부분(802)의 계산은 어려울 수 있다.
또한, 조합된 변환/해싱 블록(800)에서의 중간 상태 변수들은 구성 키에 기반하여 프로그래밍된 변환 함수의 개별 비트들에 따라 수정될 수 있다. 이 예에서, 변환 함수(T0 내지 T5)로부터의 6 비트는 각각 다양한 중간 상태들에 적용된다. 수정되는 특정한 중간 상태 변수들은 최대 효율 및 보안을 위해 회로 설계자에 의해 선택될 수 있다. 간략화를 위해, 여기에서 이용되는 변환 함수는 특정한 중간 상태 변수들의 비트 반전을 야기할 수 있지만, 다른 실시예들에서 변환 함수는 대신에 2개의 특정한 중간 상태 변수 사이의 비트 전위 또는 교환을 야기할 수 있다. 주어진 구현에서 변환 함수의 둘 다의 유형들을 이용하는 것이 유리할 수 있다.
도 8에 도시된 13개의 예시적인 중간 상태 변수 값들은 변환 함수의 적용 없이 발생하는 것들, 또는 변환 함수의 특정 비트 동작들이 순 영향을 갖지 않을 때 발생하는 것들이다. 통상의 기술자는 변환 함수 비트가 주어진 중간 상태 변수를 변경하게 할 때, 그 변경이 조합된 변환/해싱 블록(802)을 통해 전파되어 그 결과의 해시(804)를 변경할 것이라는 점을 인식할 것이다. 또한, 변환 함수의 특정 비트들의 영향이 개별적으로 그리고 외부적으로 적용되는 것으로 도시되어 있지만, 실제로 변환 함수 동작(예컨대, 비트 반전 또는 비트 전위)은 전술한 바와 같이 데이터 경로 회로에서 직접 구현될 수 있다.
도 9는 본 명세서에 개시된 기술의 실시예들에 따른 조합된 변환/해싱 블록을 갖는 예시적인 변환 가능 집적 회로 방법론(900)을 도시한다. 이 방법은 소프트웨어로, 예를 들어 컴퓨터 판독가능한 매체에 저장된 프로그램 명령어들로서 구현될 수 있고, 실질적으로 앞서 설명된 암호화 회로가 동작함에 따라 동작할 수 있다. 902에서, 이 방법은 구성 인터페이스를 통해 사용자로부터 구성 키를 수신할 수 있다. 904에서, 이 방법은 구성 키에 기반하여 변환 비트들의 문자열을 생성하도록 변환 함수를 프로그래밍할 수 있다. 906에서, 이 방법은 해싱 함수의 동작들을 구성하기 위해 적어도 변환 비트들의 문자열의 서브세트를 조합된 변환/해싱 블록에 적용할 수 있다. 즉, 구성 키는 해싱 함수에 의해 수신된 단지 입력 데이터보다는 해싱 함수 자체를 간접적으로 제어한다. 908에서, 이 방법은 입력 메시지의 적어도 일부를 변환 및 해싱되도록 조합된 변환/해싱 블록에 공급할 수 있다. 910에서, 이 방법은 입력 메시지의 다른 부분들에 대해 입력 메시지의 일부분에 대해 설명된 처리를 반복할 수 있다. 912에서, 이 방법은 입력 메시지의 변환된 해시를 출력 및 저장할 수 있다.
(회로뿐만 아니라) 이 방법은 병렬로 구현될 수 있고, 따라서, 다수의 메시지들이 실질적으로 동시에 처리될 수 있다. 복수의 조합된 변환/해싱 블록들은 메시지의 변환된 해시가 생성될 수 있도록 직렬로 이용될 수 있다. 상이한 변환 함수들이 이러한 실시예들에서 이용될 수 있고, 각각은 상이한 구성 키에 의해 결정될 수 있다. 상이한 해싱 함수들이 이러한 실시예들에서 또한 이용될 수 있다.
이 문서에서 명시적 참조는 특정 암호화 해싱 알고리즘들, 구체적으로는 보안 해싱 알고리즘 부류의 두 번째 신판(iteration)(SHA-2), 및 그 안에서 특히 256-비트 버전에 대해서만 이루어졌다. 그러나, 본 명세서에 설명된 기술은 제한 없이, 그 다양한 구현들에서의 SHA-2, 그 다양한 구현들에서의 Keccak/SHA-3, 그 다양한 구현들에서의 Skein, 그 다양한 구현들에서의 Grøstl, 그 다양한 구현들에서의 JH, 및 다른 것들을 포함하는 다른 암호화 해싱 알고리즘들에 완전히 적용가능하다.
본 명세서에서 사용되는 바와 같은 용어 세트는 유한적이든 또는 무한적이든 간에, 임의의 요소들의 집합을 지칭할 수 있다. 용어 서브세트는 임의의 요소들의 집합을 지칭할 수 있는 것으로, 여기서 요소들은 부모 세트로부터 취한 것이며; 서브세트는 부모 세트 전체가 될 수 있다. 적절한 서브세트라는 용어는 부모 세트보다 적은 요소들을 포함하는 서브세트를 지칭한다. 용어 시퀀스는 순서화된 세트 또는 서브세트를 지칭할 수 있다. 미만(less than), 이하(less than or equal to), 초과(greater than), 및 이상(greater than or equal to)이라는 용어들은 본 명세서에서 순서화된 세트 또는 시퀀스들의 다양한 객체들 또는 부재들 사이의 관계들을 기술하는데 사용될 수 있으며; 이러한 용어들은 순서화된 객체들에 적용가능한 임의의 적절한 순서 관계를 지칭하는 것으로 이해될 것이다.
도구라는 용어는 언급된 기능을 수행하도록 구성된 임의의 장치를 지칭하는데 사용될 수 있다. 예를 들어, 도구들은 하나 이상의 구성요소의 집합을 포함할 수 있고, 하드웨어, 소프트웨어 또는 이들의 조합으로도 구성될 수 있다. 따라서, 예를 들어, 도구는 하나 이상의 소프트웨어 구성요소, 하드웨어 구성요소, 소프트웨어/하드웨어 구성요소 또는 이들의 임의의 조합 또는 순열의 집합일 수 있다. 다른 예로서, 도구는 컴퓨팅 디바이스 또는 소프트웨어가 실행되거나 하드웨어가 구현되는 다른 기기일 수 있다.
본 명세서에서 사용되는 바와 같이, 용어 구성요소는 본 명세서에 개시된 기술의 하나 이상의 실시예에 따라 수행될 수 있는 기능의 주어진 유닛을 기술할 수 있다. 본 명세서에서 사용되는 바와 같이, 구성요소는 하드웨어, 소프트웨어, 또는 이들의 조합의 임의의 형태를 이용하여 구현될 수 있다. 예를 들면, 하나 이상의 프로세서, 제어기, ASIC, PLA, PAL, CPLD, FPGA, 논리적 구성요소, 소프트웨어 루틴 또는 다른 메커니즘은 모듈을 구성하도록 구현될 수 있다. 구현에서, 본 명세서에 설명된 다양한 구성요소들은 별개의 구성요소들 또는 기능들로서 구현될 수 있고, 설명된 특징들은 하나 이상의 구성요소 간에 부분적으로 또는 전체적으로 공유될 수 있다. 바꾸어 말하면, 본 설명을 읽고 난 다음에 관련 기술분야의 통상의 기술자에게 명백한 바와 같이, 본 명세서에 설명된 다양한 특징들 및 기능은 임의의 주어진 애플리케이션에서 구현될 수 있고 다양한 조합들 및 순열들 내에서 하나 이상의 별개의 또는 공유된 구성요소에서 구현될 수 있다. 비록 다양한 특징들 또는 기능 요소들이 별개의 구성요소들로서 개별적으로 설명되거나 주장될 수 있을지라도, 관련 기술분야의 통상의 기술자라면 이러한 특징들 및 기능이 하나 이상의 공통 소프트웨어 및 하드웨어 요소들 사이에서 공유될 수 있으며, 이러한 설명은 별개의 하드웨어 또는 소프트웨어 구성요소들이 이러한 특징들 또는 기능을 구현하는데 이용되는 것을 필요로 하지 않거나 의미하지 않음을 이해할 것이다.
이러한 기술의 구성요소 또는 구성요소들이 소프트웨어를 이용하여 전체적으로 또는 부분적으로 구현되는 경우에, 일 실시예에서, 이들 소프트웨어 요소들은 그와 관련하여 설명된 기능을 수행할 수 있는 컴퓨팅 또는 처리 구성요소에 의해 동작하도록 구현될 수 있다. 이러한 한 가지 예시적인 컴퓨팅 구성요소가 도 10에 도시된다. 다양한 실시예들이 이런 예시적인 컴퓨팅 구성요소(1000)에 관하여 설명된다. 본 설명을 읽고 난 다음에, 다른 컴퓨팅 구성요소들 또는 아키텍처들을 이용하여 이러한 기술을 어떻게 구현하는지가 관련 기술분야의 통상의 기술자에게 명백해질 것이다.
이제 도 10을 참조하면, 컴퓨팅 구성요소(1000)는, 예를 들면, 데스크톱, 랩톱 및 노트북 컴퓨터들; 휴대용 컴퓨팅 디바이스들(PDA들, 스마트폰들, 셀폰들, 팜톱들 등); 메인프레임들, 슈퍼컴퓨터들, 워크스테이션들 또는 서버들; 또는 주어진 애플리케이션 또는 환경에 바람직하거나 적합할 수 있는 임의의 다른 유형의 특수 목적 또는 범용 컴퓨팅 디바이스들 내에서 발견되는 컴퓨팅 또는 처리 능력들을 나타낼 수 있다. 컴퓨팅 구성요소(1000)는 또한 주어진 디바이스 내에 매립되거나 아니면 이에 이용가능한 컴퓨팅 능력들을 나타낼 수 있다. 예를 들어, 컴퓨팅 구성요소는 예를 들어, 디지털 카메라들, 내비게이션 시스템들, 이동 전화기들, 휴대용 컴퓨팅 디바이스들, 모뎀들, 라우터들, WAP들, 단말기들과 같은 다른 전자 디바이스들 및 처리 능력의 일부 형태를 포함할 수 있는 다른 전자 디바이스들에서 발견될 수 있다.
컴퓨팅 구성요소(1000)는 예를 들어, 프로세서(1004)와 같은, 하나 이상의 프로세서, 제어기, 제어 구성요소, 또는 다른 처리 디바이스를 포함할 수 있다. 프로세서(1004)는 범용 또는 특수 목적 처리 엔진, 예컨대 마이크로프로세서, 제어기 또는 다른 제어 논리를 이용하여 구현될 수 있다. 도시된 예에서, 프로세서(1004)는 버스(1002)에 연결되지만, 임의의 통신 매체가 컴퓨팅 구성요소(1000)의 다른 구성요소들과의 상호작용을 용이하게 하거나 외부적으로 통신하는데 이용될 수 있다.
컴퓨팅 구성요소(1000)는 또한 본 명세서에서 간단히 메인 메모리(1008)라고 지칭되는, 하나 이상의 메모리 구성요소를 포함할 수 있다. 예를 들어, 프로세서(1004)에 의해 실행될 명령어들 및 정보를 저장하는데, 바람직하게는 랜덤 액세스 메모리(RAM) 또는 다른 동적 메모리가 이용될 수 있다. 메인 메모리(1008)는 또한 프로세서(1004)에 의해 실행될 명령어들의 실행 동안 임시 변수들 또는 다른 중간 정보를 저장하는데 이용될 수 있다. 컴퓨팅 구성요소(1000)는 마찬가지로 프로세서(1004)를 위한 정적 정보 및 명령어들을 저장하도록 버스(1002)에 결합된 판독 전용 메모리("ROM") 또는 다른 정적 저장 디바이스를 포함할 수 있다.
컴퓨팅 구성요소(1000)는 또한 예컨대 매체 드라이브(1012) 및 저장 유닛 인터페이스(1020)를 포함할 수 있는 정보 저장 메커니즘(1010)의 하나 이상의 다양한 형태를 포함할 수 있다. 매체 드라이브(1012)는 고정식 또는 이동식 저장 매체(1014)를 지원하는 드라이브 또는 다른 메커니즘을 포함할 수 있다. 예를 들면, 하드 디스크 드라이브, 플로피 디스크 드라이브, 자기 테이프 드라이브, 광학 디스크 드라이브, CD 또는 DVD 드라이브(R 또는 RW), 또는 다른 이동식 또는 고정식 매체 드라이브가 제공될 수 있다. 이에 따라, 저장 매체(1014)는 예컨대 하드 디스크, 플로피 디스크, 자기 테이프, 카트리지, 광학 디스크, CD 또는 DVD, 또는 매체 드라이브(1012)에 의해 판독 또는 이에 기입 또는 이에 의해 액세스되는, 다른 고정된 또는 이동식 매체를 포함할 수 있다. 이들 예들이 예시하는 바와 같이, 저장 매체(1014)는 컴퓨터 소프트웨어 또는 데이터가 저장되는 컴퓨터 이용가능한 저장 매체를 포함할 수 있다.
대안적 실시예들에서, 정보 저장 메커니즘(1010)은 컴퓨터 프로그램들 또는 다른 명령어들 또는 데이터가 컴퓨팅 구성요소(1000) 내에 로딩되게 하는 다른 유사한 수단들을 포함할 수 있다. 이러한 수단들은, 예를 들어, 고정식 또는 이동식 저장 유닛(1022) 및 인터페이스(1020)를 포함할 수 있다. 이러한 저장 유닛들(1022) 및 인터페이스들(1020)의 예들은 프로그램 카트리지 및 카트리지 인터페이스, 이동식 메모리(예를 들어, 플래시 메모리 또는 다른 이동식 메모리 구성요소) 및 메모리 슬롯, PCMCIA 슬롯 및 카드, 및 소프트웨어 및 데이터가 저장 유닛(1022)으로부터 컴퓨팅 구성요소(1000)로 전달되게 하는 다른 고정식 또는 이동식 저장 유닛들(1022) 및 인터페이스들(1020)을 포함할 수 있다.
컴퓨팅 구성요소(1000)는 또한 통신 인터페이스(1024)를 포함할 수 있다. 통신 인터페이스(1024)는 소프트웨어 및 데이터가 컴퓨팅 구성요소(1000)와 외부 디바이스들 사이에 전달되게 하는데 이용될 수 있다. 통신 인터페이스(1024)의 예들은 모뎀 또는 소프트모뎀, (이더넷, 네트워크 인터페이스 카드, WiMedia, IEEE 802.XX 또는 다른 인터페이스와 같은) 네트워크 인터페이스, (예를 들어, USB 포트, IR 포트, RS232 포트, Bluetooth® 인터페이스, 또는 다른 포트와 같은) 통신 포트, 또는 다른 통신 인터페이스를 포함할 수 있다. 통신 인터페이스(1024)를 통해 전달되는 소프트웨어 및 데이터는 전형적으로 전자, (광학을 포함하는) 전자기일 수 있는 신호들 또는 주어진 통신 인터페이스(1024)에 의해 교환될 수 있는 다른 신호들 상에서 운반될 수 있다. 이러한 신호들은 채널(1028)을 통해 통신 인터페이스(1024)에 제공될 수 있다. 이러한 채널(1028)은 신호들을 운반할 수 있으며 유선 또는 무선 통신 매체를 이용하여 구현될 수 있다. 채널의 일부 예들은, 전화선, 셀룰러 링크, RF 링크, 광학 링크, 네트워크 인터페이스, 로컬 또는 광역 네트워크, 및 다른 유선 또는 무선 통신 채널들을 포함할 수 있다.
본 문서에서, 용어들 "컴퓨터 프로그램 매체" 및 "컴퓨터 이용가능한 매체"는 일반적으로, 예를 들면, 메모리(1008), 저장 유닛(1020), 매체(1014), 및 채널(1028)과 같은 매체를 지칭하는데 사용된다. 이들 및 다른 다양한 형태들의 컴퓨터 프로그램 매체 또는 컴퓨터 이용가능한 매체는 실행을 위해 하나 이상의 명령어의 하나 이상의 시퀀스를 처리 디바이스에 운반할 때 수반될 수 있다. 매체 상에 구현되는 이러한 명령어들은 일반적으로 "컴퓨터 프로그램 코드" 또는 "컴퓨터 프로그램 제품"(컴퓨터 프로그램들 또는 다른 그룹들의 형태로 그룹화될 수 있음)이라고 지칭된다. 실행될 때, 이러한 명령어들은 컴퓨팅 구성요소(1000)가 본 명세서에 논의된 것과 같은 개시된 기술의 특징들 또는 기능들을 수행하게 할 수 있다.
개시된 기술의 다양한 실시예들이 앞서 설명되었지만, 이들은 제한이 아니라 단지 예로서 제시된 것임을 이해해야 한다. 마찬가지로, 다양한 도면들은 개시된 기술에 포함될 수 있는 특징들 및 기능의 이해를 돕기 위해 행해진, 개시된 기술에 대한 예시적인 아키텍처 또는 다른 구성을 묘사할 수 있다. 개시된 기술은 도시된 예시적인 아키텍처들 또는 구성들로 제한되지 않으며, 원하는 특징들은 다양한 대안적인 아키텍처들 및 구성들을 이용하여 구현될 수 있다. 실제로, 본 명세서에 개시된 기술의 원하는 특징들을 구현하기 위해 대안적인 기능적, 논리적 또는 물리적 파티셔닝 및 구성들이 어떻게 구현될 수 있는지는 관련 기술분야의 통상의 기술자에게 명백할 것이다. 또한, 본 명세서에 도시된 것들 이외의 다수의 상이한 성분 구성요소 이름들이 다양한 파티션들에 적용될 수 있다. 추가적으로, 흐름도들, 동작 설명들 및 방법 청구항들과 관련하여, 단계들이 본 명세서에서 제시된 순서는 문맥이 달리 지시하지 않는 한 다양한 실시예들이 언급된 기능을 동일한 순서로 수행하는 식으로 구현될 것을 요구하는 것은 아니다.
개시된 기술이 다양한 예시적인 실시예들 및 구현들의 관점에서 앞서 설명되었지만, 개별적인 실시예들 중 하나 이상에서 설명된 다양한 특징들, 양태들 및 기능은 이들의 적용가능성에 있어서 이들이 설명된 특정 실시예로 제한되는 것이 아니라, 그 대신, 이러한 실시예들이 설명되었든 아니든, 그리고 이러한 특징들이 설명된 실시예의 일부로서 제시되었든 아니든, 단독으로 또는 다양한 조합들로, 개시된 기술의 다른 실시예들 중 하나 이상에 적용될 수 있음을 이해해야 한다. 따라서, 본 명세서에 개시된 기술의 폭 및 범위는 앞서 설명된 예시적인 실시예들 중 어느 것에 의해서도 제한되어서는 안 된다.
본 문서에서 사용되는 용어들과 문구들 및 그 변형들은 달리 명백히 언급되지 않는 한 제한과는 반대로 확장가능하게 해석되어야 한다. 전술한 것의 예들로서, 용어 "포함하는"은 "제한 없이 포함하는" 등을 의미하는 것으로 읽혀져야 하며; 용어 "예"는 논의에 있어서 항목의 리스트를 포괄하거나 제한하는 것이 아닌, 그 항목의 예시적인 경우들을 제공하는데 사용되며; 단수형은 "적어도 하나", "하나 이상" 등을 의미하는 것으로 읽혀져야 하며; "통상의", "전통적인", "일반적인", "표준의", "알려진"과 같은 형용사들 및 유사 의미의 용어들은 기술된 항목을 주어진 시간 기간으로 제한하거나 주어진 시간으로부터 이용가능한 항목으로 제한하는 것으로 해석되지 않아야 하며, 그 대신 현재 또는 미래의 어느 시점에 이용가능하거나 알려질 수 있는 통상의, 전통적인, 일반적인, 또는 표준의 기술들을 포괄하는 것으로 읽혀져야 한다. 마찬가지로, 본 문서가 관련 기술분야의 통상의 기술자에게 명백하거나 알려져 있을 기술들을 지칭하는 경우에, 이러한 기술들은 현재 또는 미래의 어느 시점에 관련 기술분야의 통상의 기술자에게 명백하거나 알려진 것들을 포괄한다.
일부 경우들에서 "하나 이상", "적어도", "~만 이에 제한되지 않는" 또는 다른 유사한 문구들과 같은 확장 단어들 및 문구들의 존재는 이러한 확장 문구들이 없을 수 있는 경우들에서 보다 좁은 사례가 의도되거나 요구된다는 것을 의미하는 것으로 읽혀져서는 안 된다. 용어 "구성요소"의 사용은 그 구성요소의 일부로서 설명되거나 주장된 구성요소들 또는 기능이 모두 공통 패키지 내에 구성되는 것을 의미하지는 않는다. 실제로, 제어 논리든 또는 다른 구성요소들이든 간에, 구성요소의 다양한 구성요소들의 임의의 것 또는 모두는 단일 패키지 내에 조합되거나 별개로 유지될 수 있고 또한 복수의 그룹 또는 패키지 내에 또는 복수의 위치에 걸쳐 분포될 수 있다.
추가적으로, 본 명세서에 제시된 다양한 실시예들은 예시적인 블록도들, 흐름도들 및 다른 예시들의 면에서 설명된다. 본 문서를 읽은 후 관련 기술분야의 통상의 기술자에게 명백해질 바와 같이, 도시된 실시예들 및 이들의 다양한 대안들은 도시된 예들에 한정되지 않고 구현될 수 있다. 예를 들어, 블록도들 및 이에 수반된 설명은 특정 아키텍처 또는 구성을 요구하는 것으로 해석되어서는 안 된다.
본 개시내용에 대한 요약서는 독자가 기술적 개시내용의 본질을 신속하게 알아내도록 허용하기 위해 제공된다. 이는 청구항들의 범위 또는 의미를 해석하거나 제한하는데 이용되지는 않을 것이라는 이해에 따라 제출된다. 또한, 전술한 상세한 설명에서, 개시내용의 간소화를 위해 다양한 특징들이 단일 실시예에서 함께 그룹화된 것을 알 수 있다. 이러한 개시내용의 방법은 청구되는 실시예들이 각각의 청구항에 명백히 기재된 것보다 더 많은 특징들을 필요로 한다는 의도를 반영하는 것으로서 해석되지 않아야 한다. 오히려, 다음의 청구항들이 반영하는 바와 같이, 본 발명의 주제는 단일의 개시된 실시예의 모든 특징들보다 더 적게 있다. 따라서, 다음의 청구항들은 이로써 상세한 설명에 통합되며, 각각의 청구항은 별개의 실시예로서 그 자체로 존재한다.
Claims (29)
- 암호화 집적 회로로서,
상기 집적 회로의 제조 이후 프로그래밍가능한 전자 회로의 세트를 포함하여, 입력 데이터에 대해 변환 동작 및 해싱 동작을 수행하여 출력 데이터를 생성하고 저장하는 조합된 변환/해싱 블록; 및
상기 조합된 변환/해싱 블록과 구성 인터페이스를 통신가능하게 결합하는 프로그래밍 회로
를 포함하며,
상기 조합된 변환/해싱 블록은 사용자로부터 수신된 구성 키에 기반하여 상기 구성 인터페이스를 통해 프로그래밍되도록 구성되고,
상기 조합된 변환/해싱 블록은 상기 변환 동작에 따라 상기 해싱 동작의 내부 상태 변수 값들을 변경하는, 암호화 집적 회로. - 제1항에 있어서,
상기 변환 동작은 비트 반전(bit inversion) 및 비트 전위(bit transposition) 중 적어도 하나를 포함하는, 암호화 집적 회로. - 제1항에 있어서,
상기 해싱 동작은 SHA-2, Keccak/SHA-3, Skein, Grøstl, 및 JH 중 하나를 포함하는, 암호화 집적 회로. - 제1항에 있어서,
상기 조합된 변환/해싱 블록은 다른 데이터 경로 회로와 동일한 속도로 동작할 수 있는 데이터 경로 회로로서 구성되는, 암호화 집적 회로. - 제1항에 있어서,
상기 암호화 집적 회로는 블록체인 시스템을 포함하는 암호화 작업 증명 시스템에서 구현되는, 암호화 집적 회로. - 제1항에 있어서,
직렬로 연결된 복수의 조합된 변환/해싱 블록을 더 포함하는, 암호화 집적 회로. - 제1항에 있어서,
상기 구성 키는 회로로서 상기 암호화 집적 회로의 적어도 하나의 독립적 암호화 회로에 구현되는, 암호화 집적 회로. - 암호화 방법으로서,
사용자로부터 구성 키를 수신하는 단계;
상기 구성 키에 기반하여 변환 함수를 프로그래밍하는 단계;
프로그래밍된 변환 함수에 기반하여 해싱 동작의 내부 상태 변수 값들을 변경하는 것을 포함하는 상기 해싱 동작을 입력 데이터에 대해 수행하는 단계; 및
변환 가능 해싱 동작(transform-enabled hashing operation)의 결과를 출력하는 단계
를 포함하는, 암호화 방법. - 제8항에 있어서,
상기 변경하는 것은 비트 반전 및 비트 전위 중 적어도 하나를 포함하는, 암호화 방법. - 제8항에 있어서,
상기 해싱 동작은 SHA-2, Keccak/SHA-3, Skein, Grøstl, 및 JH 중 하나를 포함하는, 암호화 방법. - 제8항에 있어서,
상기 방법은 블록체인 방법을 포함하는 암호화 작업 증명 방법인, 암호화 방법. - 제8항에 있어서,
상기 방법을 순서대로 복수 회 실행하는 단계를 더 포함하는, 암호화 방법. - 제8항에 있어서,
상기 방법을 다수의 입력 데이터 세트들에 대해 병렬로 실행하는 단계를 더 포함하는, 암호화 방법. - 제8항에 있어서,
상기 방법의 각각의 실행에 대해 별개의 구성 키를 이용하는 단계를 더 포함하는, 암호화 방법. - 컴퓨터의 하나 이상의 프로세서에 의해 실행될 때, 상기 컴퓨터로 하여금 암호화 동작들을 실행하게 하는 명령어들의 세트를 내장하는 비일시적 컴퓨터 판독가능한 저장 매체로서,
상기 암호화 동작들은,
사용자로부터 구성 키를 수신하는 것;
상기 구성 키에 기반하여 변환 함수를 프로그래밍하는 것;
프로그래밍된 변환 함수에 기반하여 해싱 동작의 내부 상태 변수 값들을 변경하는 것을 포함하는 상기 해싱 동작을 입력 데이터에 대해 수행하는 것; 및
변환 가능 해싱 동작의 결과를 출력하는 것
을 포함하는, 비일시적 컴퓨터 판독가능한 저장 매체. - 제15항에 있어서,
상기 변경하는 것은 비트 반전 및 비트 전위 중 적어도 하나를 포함하는, 비일시적 컴퓨터 판독가능한 저장 매체. - 제15항에 있어서,
상기 암호화 동작들은 블록체인 방법을 포함하는 암호화 작업 증명 방법을 구현하는, 비일시적 컴퓨터 판독가능한 저장 매체. - 제15항에 있어서,
상기 암호화 동작들을 순서대로 복수 회 실행하기 위한 명령어들을 더 포함하는, 비일시적 컴퓨터 판독가능한 저장 매체. - 제15항에 있어서,
상기 암호화 동작들을 다수의 입력 데이터 세트들에 대해 병렬로 실행하기 위한 명령어들을 더 포함하는, 비일시적 컴퓨터 판독가능한 저장 매체. - 제15항에 있어서,
상기 암호화 동작들의 각각의 실행에 대해 별개의 구성 키를 이용하기 위한 명령어들을 더 포함하는, 비일시적 컴퓨터 판독가능한 저장 매체. - 암호화 시스템으로서,
사용자로부터 구성 키를 수신하는 수단;
상기 구성 키에 기반하여 변환 함수를 프로그래밍하는 수단;
프로그래밍된 변환 함수에 기반하여 해싱 동작의 내부 상태 변수 값들을 변경하는 것을 포함하는 상기 해싱 동작을 입력 데이터에 대해 수행하는 수단; 및
변환 가능 해싱 동작의 결과를 출력하는 수단
을 포함하는, 암호화 시스템. - 제21항에 있어서, 상기 변경은 비트 반전 및 비트 전위 중 적어도 하나를 포함하는, 암호화 시스템.
- 제21항에 있어서, 상기 해싱 동작은 SHA-2, Keccak/SHA-3, Skein, Grøstl, 및 JH 중 하나를 포함하는, 암호화 시스템.
- 제21항에 있어서, 상기 해싱 동작을 수행하는 수단은 다른 데이터 경로 회로와 동일한 속도로 동작할 수 있는 데이터 경로 회로를 포함하는, 암호화 시스템.
- 제21항에 있어서, 상기 시스템의 동작들은 블록체인 시스템을 포함하는 암호화 작업 증명 시스템을 구현하는, 암호화 시스템.
- 제21항에 있어서, 상기 시스템의 동작들을 순서대로 복수 회 실행시키는 수단을 더 포함하는, 암호화 시스템.
- 제21항에 있어서, 상기 구성 키는 회로로서 상기 암호화 시스템의 적어도 하나의 독립적 암호화 회로에 구현되는, 암호화 시스템.
- 제21항에 있어서, 상기 시스템의 동작들을 다수의 입력 데이터 세트들에 대해 병렬로 실행하는 수단을 더 포함하는, 암호화 시스템.
- 제21항에 있어서, 상기 시스템의 동작들 각각의 실행에 대해 별개의 구성 키를 이용하는 수단을 더 포함하는, 암호화 시스템.
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201862645609P | 2018-03-20 | 2018-03-20 | |
US62/645,609 | 2018-03-20 | ||
US16/139,332 | 2018-09-24 | ||
US16/139,332 US10372943B1 (en) | 2018-03-20 | 2018-09-24 | Cryptographic ASIC with combined transformation and one-way functions |
PCT/US2019/022735 WO2019182965A2 (en) | 2018-03-20 | 2019-03-18 | Cryptographic asic with combined functions |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20200135440A KR20200135440A (ko) | 2020-12-02 |
KR102416893B1 true KR102416893B1 (ko) | 2022-07-05 |
Family
ID=67477469
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020207030136A KR102416893B1 (ko) | 2018-03-20 | 2019-03-18 | 조합된 함수들을 갖는 암호화 asic |
Country Status (5)
Country | Link |
---|---|
US (2) | US10372943B1 (ko) |
KR (1) | KR102416893B1 (ko) |
CN (1) | CN112136134B (ko) |
DE (1) | DE112019001438T5 (ko) |
WO (1) | WO2019182965A2 (ko) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10262164B2 (en) | 2016-01-15 | 2019-04-16 | Blockchain Asics Llc | Cryptographic ASIC including circuitry-encoded transformation function |
US10372943B1 (en) | 2018-03-20 | 2019-08-06 | Blockchain Asics Llc | Cryptographic ASIC with combined transformation and one-way functions |
US10256974B1 (en) | 2018-04-25 | 2019-04-09 | Blockchain Asics Llc | Cryptographic ASIC for key hierarchy enforcement |
US20200153605A1 (en) * | 2018-11-13 | 2020-05-14 | Accelor Ltd. | Systems and methods for pre-executing transaction validation for blockchain applications |
GB2582978B (en) * | 2019-04-12 | 2022-05-04 | Nchain Holdings Ltd | Methods and devices for propagating blocks in a blockchain network |
US12099997B1 (en) | 2020-01-31 | 2024-09-24 | Steven Mark Hoffberg | Tokenized fungible liabilities |
JP7526604B2 (ja) * | 2020-07-10 | 2024-08-01 | 富士通株式会社 | 生成プログラム、生成方法、および生成装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110010552A1 (en) * | 2009-07-10 | 2011-01-13 | Frank Hoornaert | Authentication token with incremental key establishment capacity |
US20170206382A1 (en) * | 2016-01-15 | 2017-07-20 | Blockchain Asics Llc | Cryptographic asic including circuitry-encoded transformation function |
Family Cites Families (185)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0812537B2 (ja) | 1993-03-11 | 1996-02-07 | 日本電気株式会社 | 暗号化装置 |
US5774552A (en) | 1995-12-13 | 1998-06-30 | Ncr Corporation | Method and apparatus for retrieving X.509 certificates from an X.500 directory |
US6581162B1 (en) | 1996-12-31 | 2003-06-17 | Compaq Information Technologies Group, L.P. | Method for securely creating, storing and using encryption keys in a computer system |
JP3988172B2 (ja) | 1997-04-23 | 2007-10-10 | ソニー株式会社 | 情報処理装置および方法、並びに記録媒体 |
US6708273B1 (en) | 1997-09-16 | 2004-03-16 | Safenet, Inc. | Apparatus and method for implementing IPSEC transforms within an integrated circuit |
US6307936B1 (en) | 1997-09-16 | 2001-10-23 | Safenet, Inc. | Cryptographic key management scheme |
US6704871B1 (en) | 1997-09-16 | 2004-03-09 | Safenet, Inc. | Cryptographic co-processor |
US7373517B1 (en) | 1999-08-19 | 2008-05-13 | Visto Corporation | System and method for encrypting and decrypting files |
US6763465B1 (en) | 1999-11-23 | 2004-07-13 | International Business Machines Corporation | Method of ensuring that the PC is not used to make unauthorized and surreptitious telephone calls |
SE522531C2 (sv) | 1999-11-24 | 2004-02-17 | Micronic Laser Systems Ab | Metod och anordning för märkning av halvledare |
EP1132873A1 (en) | 2000-03-07 | 2001-09-12 | THOMSON multimedia | Electronic wallet system |
US7177421B2 (en) | 2000-04-13 | 2007-02-13 | Broadcom Corporation | Authentication engine architecture and method |
US7003107B2 (en) | 2000-05-23 | 2006-02-21 | Mainstream Encryption | Hybrid stream cipher |
US7558965B2 (en) | 2000-08-04 | 2009-07-07 | First Data Corporation | Entity authentication in electronic communications by providing verification status of device |
US20020147918A1 (en) | 2001-04-05 | 2002-10-10 | Osthoff Harro R. | System and method for securing information in memory |
US20060291650A1 (en) | 2001-05-22 | 2006-12-28 | Viswanath Ananth | State-varying hybrid stream cipher |
US20020184512A1 (en) | 2001-05-31 | 2002-12-05 | Cardoso Augusto C. | Method and apparatus for supporting remote configuration to facilitate subscriber management |
GB0114317D0 (en) | 2001-06-13 | 2001-08-01 | Kean Thomas A | Method of protecting intellectual property cores on field programmable gate array |
US7134041B2 (en) | 2001-09-20 | 2006-11-07 | Evault, Inc. | Systems and methods for data backup over a network |
US7234021B1 (en) | 2001-10-05 | 2007-06-19 | Emc Corporation | Methods and apparatus for accessing data elements using improved hashing techniques |
US7840803B2 (en) | 2002-04-16 | 2010-11-23 | Massachusetts Institute Of Technology | Authentication of integrated circuits |
US7483945B2 (en) | 2002-04-19 | 2009-01-27 | Akamai Technologies, Inc. | Method of, and system for, webcasting with just-in-time resource provisioning, automated telephone signal acquisition and streaming, and fully-automated event archival |
JP4326189B2 (ja) | 2002-06-10 | 2009-09-02 | 健 坂村 | 自律型icカード及び通信システム |
SG105005A1 (en) | 2002-06-12 | 2004-07-30 | Contraves Ag | Device for firearms and firearm |
US7469338B2 (en) | 2002-07-29 | 2008-12-23 | Broadcom Corporation | System and method for cryptographic control of system configurations |
KR100723399B1 (ko) | 2002-08-06 | 2007-05-30 | 삼성전자주식회사 | 비스무트 티타늄 실리콘 산화물, 비스무트 티타늄 실리콘산화물 박막 및 그 제조방법 |
US6912435B2 (en) | 2002-08-28 | 2005-06-28 | Inficon Lt Inc. | Methods and systems for controlling reticle-induced errors |
US7724907B2 (en) | 2002-11-05 | 2010-05-25 | Sony Corporation | Mechanism for protecting the transfer of digital content |
US7191341B2 (en) | 2002-12-18 | 2007-03-13 | Broadcom Corporation | Methods and apparatus for ordering data in a cryptography accelerator |
EP2141628B1 (en) * | 2003-09-26 | 2017-05-10 | Nippon Telegraph and Telephone Corporation | Tag privacy protection method, update solicitor, program therefor and record medium carrying such program in storage |
US7398399B2 (en) | 2003-12-12 | 2008-07-08 | International Business Machines Corporation | Apparatus, methods and computer programs for controlling performance of operations within a data processing system or network |
US7644278B2 (en) | 2003-12-31 | 2010-01-05 | International Business Machines Corporation | Method for securely creating an endorsement certificate in an insecure environment |
US7472369B1 (en) | 2004-06-03 | 2008-12-30 | Altera Corporation | Embedding identification information on programmable devices |
US20060041510A1 (en) | 2004-08-19 | 2006-02-23 | Securemedia International | Method for a secure system of content distribution for DVD applications |
US20070093234A1 (en) | 2004-08-20 | 2007-04-26 | Willis John A | Identify theft protection and notification system |
US20060059368A1 (en) | 2004-09-10 | 2006-03-16 | International Business Machines Corporation | System and method for processing by distinct entities securely configurable circuit chips |
US20060072748A1 (en) | 2004-10-01 | 2006-04-06 | Mark Buer | CMOS-based stateless hardware security module |
US8667580B2 (en) | 2004-11-15 | 2014-03-04 | Intel Corporation | Secure boot scheme from external memory using internal memory |
US20060182283A1 (en) | 2005-02-14 | 2006-08-17 | Tricipher, Inc. | Architecture for asymmetric crypto-key storage |
US7606362B1 (en) | 2005-01-25 | 2009-10-20 | Altera Corporation | FPGA configuration bitstream encryption using modified key |
US7818584B1 (en) | 2005-01-25 | 2010-10-19 | Altera Corporation | One-time programmable memories for key storage |
US7725738B1 (en) | 2005-01-25 | 2010-05-25 | Altera Corporation | FPGA configuration bitstream protection using multiple keys |
KR100666328B1 (ko) | 2005-02-11 | 2007-01-09 | 삼성전자주식회사 | 온 칩 메모리를 이용한 기밀 정보 보안 장치 및 보안 방법 |
JP2006260614A (ja) | 2005-03-15 | 2006-09-28 | Sony Corp | ディスク製造方法、データ記録装置、情報記録媒体、情報処理装置および方法、並びにコンピュータ・プログラム |
JP2006295872A (ja) | 2005-03-18 | 2006-10-26 | Matsushita Electric Ind Co Ltd | 機器固有鍵の生成方法、これを用いた機密情報処理機能を備えた機密情報lsi、これを搭載したホスト機器、これに用いられる認証機能付き記録媒体、および認証機能を備えた記録媒体付き携帯端末 |
US9171187B2 (en) | 2005-05-13 | 2015-10-27 | Nokia Technologies Oy | Implementation of an integrity-protected secure storage |
US7533905B2 (en) | 2005-06-02 | 2009-05-19 | Hewlett-Packard Development Company, L.P. | Anti-counterfeiting system and method |
US20070005963A1 (en) | 2005-06-29 | 2007-01-04 | Intel Corporation | Secured one time access code |
US8132005B2 (en) | 2005-07-07 | 2012-03-06 | Nokia Corporation | Establishment of a trusted relationship between unknown communication parties |
EP1748343A1 (en) | 2005-07-29 | 2007-01-31 | STMicroelectronics Limited | Circuit personalisation |
US20070090920A1 (en) | 2005-10-22 | 2007-04-26 | Canter James M | Apparatus and Method for Controlling Access to Remotely Located Equipment |
US20070101156A1 (en) | 2005-10-31 | 2007-05-03 | Manuel Novoa | Methods and systems for associating an embedded security chip with a computer |
US7389426B2 (en) | 2005-11-29 | 2008-06-17 | Research In Motion Limited | Mobile software terminal identifier |
US20070208918A1 (en) | 2006-03-01 | 2007-09-06 | Kenneth Harbin | Method and apparatus for providing virtual machine backup |
EP1832996B1 (en) | 2006-03-06 | 2009-02-18 | STMicroelectronics (Research & Development) Limited | Circuit security |
US8929553B2 (en) | 2006-03-31 | 2015-01-06 | International Business Machines Corporation | Using identifier tags and authenticity certificates for detecting counterfeited or stolen brand objects |
WO2007113040A1 (en) | 2006-03-31 | 2007-10-11 | International Business Machines Corporation | Method and systems using identifier tags and authenticity certificates for detecting counterfeited or stolen brand objects |
US7894602B2 (en) | 2006-03-31 | 2011-02-22 | Sap Ag | System and method for generating pseudo-random numbers |
US20070245159A1 (en) | 2006-04-18 | 2007-10-18 | Oracle International Corporation | Hash function strengthening |
US20070255966A1 (en) | 2006-05-01 | 2007-11-01 | Vincenzo Condorelli | Cryptographic circuit with voltage-based tamper detection and response circuitry |
US9489318B2 (en) | 2006-06-19 | 2016-11-08 | Broadcom Corporation | Method and system for accessing protected memory |
US7675313B1 (en) | 2006-08-03 | 2010-03-09 | Lattice Semiconductor Corporation | Methods and systems for storing a security key using programmable fuses |
US7971017B1 (en) | 2006-08-21 | 2011-06-28 | Rockwell Automation Technologies, Inc. | Memory card with embedded identifier |
JP5001123B2 (ja) | 2006-12-07 | 2012-08-15 | パナソニック株式会社 | 記録デバイス、集積回路、アクセス制御方法、プログラム記録媒体 |
US20080148001A1 (en) | 2006-12-14 | 2008-06-19 | Telefonaktiebolaget L M Ericsson (Publ) | Virtual Secure On-Chip One Time Programming |
US8046571B1 (en) | 2006-12-18 | 2011-10-25 | Marvell International Ltd. | System-on-a-chip (SoC) security using one-time programmable memories |
JP5073312B2 (ja) | 2007-02-16 | 2012-11-14 | 株式会社日立製作所 | Icタグシステム |
US8769637B2 (en) | 2007-03-23 | 2014-07-01 | Sap Ag | Iterated password hash systems and methods for preserving password entropy |
US8065515B2 (en) | 2007-04-23 | 2011-11-22 | Cisco Technology, Inc. | Autoconfigured prefix delegation based on distributed hash |
US20090024784A1 (en) | 2007-07-20 | 2009-01-22 | Wang Liang-Yun | Method for writing data into storage on chip and system thereof |
US9158957B2 (en) | 2007-09-07 | 2015-10-13 | Apple Inc. | Finger sensing apparatus using hybrid matching and associated methods |
US8782396B2 (en) | 2007-09-19 | 2014-07-15 | Verayo, Inc. | Authentication with physical unclonable functions |
US8402241B2 (en) | 2007-10-02 | 2013-03-19 | Advanced Micro Devices, Inc. | Method and apparatus to control access to device enable features |
WO2009057641A1 (ja) | 2007-10-30 | 2009-05-07 | Kyocera Corporation | 情報処理装置 |
US9866370B2 (en) | 2007-12-05 | 2018-01-09 | Itt Manufacturing Enterprises, Llc | Configurable ASIC-embedded cryptographic processing engine |
US7890917B1 (en) | 2008-01-14 | 2011-02-15 | Xilinx, Inc. | Method and apparatus for providing secure intellectual property cores for a programmable logic device |
US20090202068A1 (en) | 2008-02-07 | 2009-08-13 | Amjad Qureshi | Media security through hardware-resident proprietary key generation |
US20090259855A1 (en) | 2008-04-15 | 2009-10-15 | Apple Inc. | Code Image Personalization For A Computing Device |
US8150039B2 (en) | 2008-04-15 | 2012-04-03 | Apple Inc. | Single security model in booting a computing device |
US8209762B2 (en) | 2008-06-24 | 2012-06-26 | Ricoh Company, Ltd. | Approach for printing locked print data using user and print data authentication |
US8726364B2 (en) | 2008-06-30 | 2014-05-13 | Intel Corporation | Authentication and access protection of computer boot modules in run-time environments |
US8332931B1 (en) | 2008-09-04 | 2012-12-11 | Marvell International Ltd. | Processing commands according to authorization |
US7715247B2 (en) | 2008-09-06 | 2010-05-11 | Juhan Kim | One-time programmable read-only memory with a time-domain sensing scheme |
US8738922B2 (en) | 2008-09-30 | 2014-05-27 | Stepover Gmbh | Method and device for electronically capturing a handwritten signature and safeguarding biometric data |
US20100088752A1 (en) | 2008-10-03 | 2010-04-08 | Vikram Nagulakonda | Identifier Binding for Automated Web Processing |
TWI498827B (zh) | 2008-11-21 | 2015-09-01 | Verayo Inc | 非連網射頻辨識裝置物理不可複製功能之鑑認技術 |
US8442218B2 (en) | 2009-02-27 | 2013-05-14 | Red Hat, Inc. | Method and apparatus for compound hashing via iteration |
JP2010252305A (ja) | 2009-03-25 | 2010-11-04 | Renesas Electronics Corp | 半導体集積回路及びその制御方法 |
US8448009B2 (en) | 2009-08-17 | 2013-05-21 | Sandisk Il Ltd. | Method and memory device for generating a time estimate |
US8644499B2 (en) | 2009-09-14 | 2014-02-04 | Broadcom Corporation | Method and system for securely protecting a semiconductor chip without compromising test and debug capabilities |
US20110119293A1 (en) | 2009-10-21 | 2011-05-19 | Randy Gilbert Taylor | Method And System For Reverse Pattern Recognition Matching |
US8719587B2 (en) | 2009-12-18 | 2014-05-06 | CompuGroup Medical AG | Computer implemented method for generating a pseudonym, computer readable storage medium and computer system |
WO2011109780A2 (en) | 2010-03-05 | 2011-09-09 | Maxlinear, Inc. | Code download and firewall for embedded secure application |
US8612398B2 (en) | 2010-03-11 | 2013-12-17 | Microsoft Corporation | Clean store for operating system and software recovery |
WO2011119985A2 (en) | 2010-03-26 | 2011-09-29 | Maxlinear, Inc. | Firmware authentication and deciphering for secure tv receiver |
US8892598B2 (en) | 2010-06-22 | 2014-11-18 | Cleversafe, Inc. | Coordinated retrieval of data from a dispersed storage network |
WO2012037172A1 (en) | 2010-09-13 | 2012-03-22 | Computer Associates Think, Inc. | Methods, apparatus and systems for securing user-associated passwords used for identity authentication |
US20120151223A1 (en) | 2010-09-20 | 2012-06-14 | Conde Marques Ricardo Nuno De Pinho Coelho | Method for securing a computing device with a trusted platform module-tpm |
US20120069995A1 (en) | 2010-09-22 | 2012-03-22 | Seagate Technology Llc | Controller chip with zeroizable root key |
US20140156531A1 (en) | 2010-12-14 | 2014-06-05 | Salt Technology Inc. | System and Method for Authenticating Transactions Through a Mobile Device |
US10360561B2 (en) | 2010-12-14 | 2019-07-23 | Lime Light RM, Inc. | System and method for secured communications between a mobile device and a server |
EP2506176A1 (en) | 2011-03-30 | 2012-10-03 | Irdeto Corporate B.V. | Establishing unique key during chip manufacturing |
US20170109676A1 (en) | 2011-05-08 | 2017-04-20 | Panaya Ltd. | Generation of Candidate Sequences Using Links Between Nonconsecutively Performed Steps of a Business Process |
US20170109668A1 (en) | 2011-05-08 | 2017-04-20 | Panaya Ltd. | Model for Linking Between Nonconsecutively Performed Steps in a Business Process |
US8725112B2 (en) | 2011-06-05 | 2014-05-13 | Apple Inc. | Activation solution |
US8523657B2 (en) | 2011-09-13 | 2013-09-03 | Igt | Gaming system, gaming device and method for utilizing bitcoins |
US9054874B2 (en) | 2011-12-01 | 2015-06-09 | Htc Corporation | System and method for data authentication among processors |
EP2820546B1 (en) | 2012-03-02 | 2019-07-31 | INSIDE Secure | Blackbox security provider programming system permitting multiple customer use and in field conditional access switching |
US10778659B2 (en) | 2012-05-24 | 2020-09-15 | Smart Security Systems Llc | System and method for protecting communications |
US9100189B2 (en) | 2012-08-31 | 2015-08-04 | Freescale Semiconductor, Inc. | Secure provisioning in an untrusted environment |
US9100174B2 (en) | 2012-08-31 | 2015-08-04 | Freescale Semiconductor, Inc. | Secure provisioning in an untrusted environment |
GB201219521D0 (en) | 2012-10-30 | 2012-12-12 | Rex Edmund | Generative scheduling method |
CA2930752A1 (en) | 2012-11-15 | 2014-05-22 | Behzad Malek | System and method for location-based financial transaction authentication |
TWI622969B (zh) | 2012-12-17 | 2018-05-01 | 印奈克斯托股份有限公司 | 用以使用物理特性來標記製造物品的方法及設備 |
KR20140099757A (ko) | 2013-02-04 | 2014-08-13 | 삼성전자주식회사 | 전자장치 및 전자장치의 펌웨어 업그레이드 방법 |
US9117179B2 (en) | 2013-03-11 | 2015-08-25 | International Business Machines Corporation | Predicting user activity in social media applications |
US9495668B1 (en) | 2013-05-10 | 2016-11-15 | EMC IP Holding Company LLC | Computing solutions to a problem involving inversion of a one-way function |
US9230137B2 (en) | 2013-05-30 | 2016-01-05 | Dell Products, L.P. | Secure original equipment manufacturer (OEM) identifier for OEM devices |
US10181124B2 (en) | 2013-05-30 | 2019-01-15 | Dell Products, L.P. | Verifying OEM components within an information handling system using original equipment manufacturer (OEM) identifier |
GB2514771B (en) | 2013-06-03 | 2015-10-21 | Broadcom Corp | Methods of securely changing the root key of a chip, and related electronic devices and chips |
US9479328B1 (en) | 2013-06-11 | 2016-10-25 | Amazon Technologies, Inc. | Secure key provisioning |
US20150003607A1 (en) | 2013-06-26 | 2015-01-01 | Samsung Electronics Co., Ltd. | Secure connection method and apparatus of electronic device |
KR20150008546A (ko) | 2013-07-15 | 2015-01-23 | 삼성전자주식회사 | 보안 다운로드 및 기능 실행방법 및 장치 |
US9386008B2 (en) | 2013-08-19 | 2016-07-05 | Smartguard, Llc | Secure installation of encryption enabling software onto electronic devices |
JP2015065495A (ja) | 2013-09-24 | 2015-04-09 | ルネサスエレクトロニクス株式会社 | 暗号鍵供給方法、半導体集積回路および暗号鍵管理装置 |
US9672385B2 (en) | 2013-10-07 | 2017-06-06 | Microsemi SoC Corporation | Method of improving FPGA security using authorization codes |
US20150134555A1 (en) | 2013-11-08 | 2015-05-14 | Tracker Corp | Document error resolution |
US9779243B2 (en) | 2013-11-13 | 2017-10-03 | Via Technologies, Inc. | Fuse-enabled secure BIOS mechanism in a trusted computing system |
US9798880B2 (en) | 2013-11-13 | 2017-10-24 | Via Technologies, Inc. | Fuse-enabled secure bios mechanism with override feature |
SI3095044T1 (sl) * | 2013-11-19 | 2021-02-26 | Top Galore Limited | Postopki in naprave za rudarjenje blokov |
US9219722B2 (en) | 2013-12-11 | 2015-12-22 | Globalfoundries Inc. | Unclonable ID based chip-to-chip communication |
US20150213253A1 (en) | 2014-01-28 | 2015-07-30 | Qualcomm Incorporated | Authorizing an application for use by a computing device |
US11270298B2 (en) * | 2014-04-14 | 2022-03-08 | 21, Inc. | Digital currency mining circuitry |
US10340038B2 (en) | 2014-05-13 | 2019-07-02 | Nant Holdings Ip, Llc | Healthcare transaction validation via blockchain, systems and methods |
US9582262B2 (en) | 2014-06-16 | 2017-02-28 | Wipro Limited | Systems and methods for installing upgraded software on electronic devices |
US9928080B2 (en) | 2014-09-30 | 2018-03-27 | International Business Machines Corporation | Hardware security module access management in a cloud computing environment |
US9331989B2 (en) | 2014-10-06 | 2016-05-03 | Micron Technology, Inc. | Secure shared key sharing systems and methods |
US20160148232A1 (en) | 2014-11-21 | 2016-05-26 | The Nielsen Company (Us), Llc | Using hashed media identifiers to determine audience measurement data including demographic data from third party providers |
US9870487B2 (en) | 2014-12-30 | 2018-01-16 | Data I/O Corporation | Automated manufacturing system with adapter security mechanism and method of manufacture thereof |
US11627639B2 (en) | 2015-01-26 | 2023-04-11 | Ievgen Verzun | Methods and apparatus for HyperSecure last mile communication |
CN113946817A (zh) | 2015-01-30 | 2022-01-18 | E·马伊姆 | 用于管理安全实体的连网承诺的系统和方法 |
US11101978B2 (en) | 2015-02-18 | 2021-08-24 | Telefonaktiebolaget Lm Ericsson (Publ) | Establishing and managing identities for constrained devices |
US11023968B2 (en) | 2015-03-05 | 2021-06-01 | Goldman Sachs & Co. LLC | Systems and methods for updating a distributed ledger based on partial validations of transactions |
US9813392B2 (en) | 2015-03-06 | 2017-11-07 | Qualcomm Incorporated | Apparatus and method for providing a public key for authenticating an integrated circuit |
US9893885B1 (en) | 2015-03-13 | 2018-02-13 | Amazon Technologies, Inc. | Updating cryptographic key pair |
US10735200B2 (en) | 2015-03-27 | 2020-08-04 | Comcast Cable Communications, Llc | Methods and systems for key generation |
US20160283920A1 (en) | 2015-03-28 | 2016-09-29 | Justin Fisher | Authentication and verification of digital data utilizing blockchain technology |
US9667600B2 (en) | 2015-04-06 | 2017-05-30 | At&T Intellectual Property I, L.P. | Decentralized and distributed secure home subscriber server device |
US10812274B2 (en) | 2015-05-07 | 2020-10-20 | Blockstream Corporation | Transferring ledger assets between blockchains via pegged sidechains |
EP3304431B1 (en) | 2015-06-04 | 2021-09-08 | Chronicled, Inc. | Open registry for identity of things |
US20170228731A1 (en) | 2016-02-09 | 2017-08-10 | Fmr Llc | Computationally Efficient Transfer Processing and Auditing Apparatuses, Methods and Systems |
US11120436B2 (en) | 2015-07-17 | 2021-09-14 | Mastercard International Incorporated | Authentication system and method for server-based payments |
US20170126414A1 (en) | 2015-10-28 | 2017-05-04 | Texas Instruments Incorporated | Database-less authentication with physically unclonable functions |
WO2017079652A1 (en) | 2015-11-05 | 2017-05-11 | Pulsifer Allen | Cryptographic transactions system |
US9912776B2 (en) | 2015-12-02 | 2018-03-06 | Cisco Technology, Inc. | Explicit content deletion commands in a content centric network |
EP3405862B1 (en) | 2016-01-19 | 2020-11-18 | Priv8Pay, Inc. | Network node authentication |
US11107071B2 (en) | 2016-02-01 | 2021-08-31 | Apple Inc. | Validating online access to secure device functionality |
US11354658B2 (en) | 2016-02-11 | 2022-06-07 | Mastercard International Incorporated | Method and system for offline blockchain exchanges |
US20170250796A1 (en) * | 2016-02-18 | 2017-08-31 | Gideon Samid | Trans Vernam Cryptography: Round One |
CN107306183B (zh) | 2016-04-22 | 2021-12-21 | 索尼公司 | 客户端、服务端、方法和身份验证系统 |
US10594480B2 (en) * | 2016-05-13 | 2020-03-17 | Gideon Samid | Efficient proof of knowledge of arbitrarily large data which remains unexposed |
US11204597B2 (en) | 2016-05-20 | 2021-12-21 | Moog Inc. | Outer space digital logistics system |
WO2017201489A1 (en) | 2016-05-20 | 2017-11-23 | Moog Inc. | Secure and traceable manufactured parts |
US9967088B2 (en) | 2016-05-23 | 2018-05-08 | Accenture Global Solutions Limited | Rewritable blockchain |
US11107088B2 (en) | 2016-05-27 | 2021-08-31 | Chronicled, Inc. | Open registry for internet of things |
US20180108024A1 (en) | 2016-06-03 | 2018-04-19 | Chronicled, Inc | Open registry for provenance and tracking of goods in the supply chain |
US10411905B2 (en) | 2016-07-01 | 2019-09-10 | Intel Corporation | Public key infrastructure using blockchains |
US20180046956A1 (en) | 2016-08-11 | 2018-02-15 | Panaya Ltd. | Warning About Steps That Lead to an Unsuccessful Execution of a Business Process |
US10250694B2 (en) | 2016-08-19 | 2019-04-02 | Ca, Inc. | Maintaining distributed state among stateless service clients |
US11074584B2 (en) | 2016-09-23 | 2021-07-27 | Raise Marketplace, Llc | Authorizing exchange item redemption in an exchange item marketplace network |
US10516538B2 (en) | 2016-11-01 | 2019-12-24 | Netcomm Inc. | System and method for digitally signing documents using biometric data in a blockchain or PKI |
MY181840A (en) | 2016-11-04 | 2021-01-08 | Thomson Licensing | Devices and methods for client device authentication |
US20180184290A1 (en) | 2016-12-22 | 2018-06-28 | Cypress Semiconductor Corporation | Embedded Certificate Method for Strong Authentication and Ease of Use for Wireless IoT Systems |
US10382485B2 (en) | 2016-12-23 | 2019-08-13 | Vmware, Inc. | Blockchain-assisted public key infrastructure for internet of things applications |
US20180225661A1 (en) | 2017-02-07 | 2018-08-09 | Microsoft Technology Licensing, Llc | Consortium blockchain network with verified blockchain and consensus protocols |
JP2018133744A (ja) | 2017-02-16 | 2018-08-23 | パナソニックIpマネジメント株式会社 | 通信システム、車両、および監視方法 |
US20190102558A1 (en) | 2017-06-02 | 2019-04-04 | Apple Inc. | Method and Apparatus for Secure System Boot |
US11263326B2 (en) | 2017-06-02 | 2022-03-01 | Apple Inc. | Method and apparatus for secure system boot |
US10528740B2 (en) | 2017-06-15 | 2020-01-07 | International Business Machines Corporation | Securely booting a service processor and monitoring service processor integrity |
US10397230B2 (en) | 2017-06-15 | 2019-08-27 | International Business Machines Corporation | Service processor and system with secure booting and monitoring of service processor integrity |
JP6882678B2 (ja) | 2017-06-30 | 2021-06-02 | 富士通株式会社 | 衝突検出システムおよび衝突検出方法 |
US20190080093A1 (en) | 2017-09-12 | 2019-03-14 | Qualcomm Incorporated | Secure selective load of dynamic paged segments in memory constrained systems |
KR102434444B1 (ko) | 2017-11-29 | 2022-08-19 | 한국전자통신연구원 | 가상 트러스트 컴퓨팅 베이스를 이용한 기기 보안성 검증 방법 및 장치 |
US10372943B1 (en) | 2018-03-20 | 2019-08-06 | Blockchain Asics Llc | Cryptographic ASIC with combined transformation and one-way functions |
US10256974B1 (en) | 2018-04-25 | 2019-04-09 | Blockchain Asics Llc | Cryptographic ASIC for key hierarchy enforcement |
-
2018
- 2018-09-24 US US16/139,332 patent/US10372943B1/en active Active
-
2019
- 2019-03-18 CN CN201980033363.6A patent/CN112136134B/zh active Active
- 2019-03-18 WO PCT/US2019/022735 patent/WO2019182965A2/en active Application Filing
- 2019-03-18 DE DE112019001438.2T patent/DE112019001438T5/de active Pending
- 2019-03-18 KR KR1020207030136A patent/KR102416893B1/ko active IP Right Grant
- 2019-06-26 US US16/452,890 patent/US10885228B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110010552A1 (en) * | 2009-07-10 | 2011-01-13 | Frank Hoornaert | Authentication token with incremental key establishment capacity |
US20170206382A1 (en) * | 2016-01-15 | 2017-07-20 | Blockchain Asics Llc | Cryptographic asic including circuitry-encoded transformation function |
Also Published As
Publication number | Publication date |
---|---|
WO2019182965A3 (en) | 2020-04-30 |
WO2019182965A2 (en) | 2019-09-26 |
DE112019001438T5 (de) | 2020-12-10 |
CN112136134B (zh) | 2022-07-22 |
US20190325165A1 (en) | 2019-10-24 |
US10372943B1 (en) | 2019-08-06 |
KR20200135440A (ko) | 2020-12-02 |
US10885228B2 (en) | 2021-01-05 |
CN112136134A (zh) | 2020-12-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102416893B1 (ko) | 조합된 함수들을 갖는 암호화 asic | |
CN111382464B (zh) | 包括电路编码变换函数的加密asic | |
Bösch et al. | Efficient helper data key extractor on FPGAs | |
US10944568B2 (en) | Methods for constructing secure hash functions from bit-mixers | |
Megha Mukundan et al. | Hash‐One: a lightweight cryptographic hash function | |
US11496486B2 (en) | Methods and apparatus to support reliable digital communications without integrity metadata | |
US9886597B2 (en) | Method for encoding data on a chip card by means of constant-weight codes | |
CN113158200A (zh) | 使用挑战-响应协议执行认证的集成电路和使用其的方法 | |
Prasanna et al. | Performance analysis of md5 and sha-256 algorithms to maintain data integrity | |
US11283619B2 (en) | Bit mixer based parallel MAC and hash functions | |
Abdelraheem et al. | Cryptanalysis of ARMADILLO2 | |
Li et al. | Automatic preimage attack framework on ascon using a linearize-and-guess approach | |
Espitau et al. | Square unstructured integer euclidean lattice signature | |
Chen et al. | Preon: zk-SNARK based Signature Scheme | |
KR20050064343A (ko) | 스트림 암호를 이용한 메시지 인증 코드 구성 방법 | |
Polese | STRENGTH EVALUATION OF CRYPTOGRAPHIC PRIMITIVES TO LINEAR, DIFFERENTIAL AND ALGEBRAIC ATTACKS. | |
Zhang et al. | Improved Fast Correlation Attacks on the Sosemanuk Stream Cipher | |
Hopp | Thickness Distribution of Boolean Functions in 4 and 5 Variables | |
August et al. | PudgyTurtle: Using keystream to encode and encrypt | |
Lukács et al. | BITMIX: A hardware accelerated randomized symmetric encryption method | |
Morales-Sandoval | Hardware architecture for elliptic curve cryptography and lossless data compression | |
Cryptosystem et al. | Wen Wang¹ (), Jakub Szefer¹ (), and Ruben Niederhagen2 () 1 Yale University, New Haven, CT, USA {wen. wang. ww349, jakub. szefer}@ yale. edu 2 Fraunhofer SIT, Darmstadt, Germany ruben@ polycephaly. org | |
Pappala | Device specific key generation technique for anti-counterfeiting methods using FPGA based physically unclonable functions and artificial intelligence | |
Marraro et al. | A new challenge for automated reasoning: Verification and cryptanalysis of cryptographic algorithms | |
Tejaswini et al. | Design and FPGA Implementation of Reliable SHA-3 Algorithm |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |