KR20220065049A - 블록체인 상의 보증된 데이터를 저장하기 위한 컴퓨터 구현 방법 및 시스템 - Google Patents
블록체인 상의 보증된 데이터를 저장하기 위한 컴퓨터 구현 방법 및 시스템 Download PDFInfo
- Publication number
- KR20220065049A KR20220065049A KR1020227013481A KR20227013481A KR20220065049A KR 20220065049 A KR20220065049 A KR 20220065049A KR 1020227013481 A KR1020227013481 A KR 1020227013481A KR 20227013481 A KR20227013481 A KR 20227013481A KR 20220065049 A KR20220065049 A KR 20220065049A
- Authority
- KR
- South Korea
- Prior art keywords
- public key
- blockchain
- data
- key
- private
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 220
- 230000006870 function Effects 0.000 claims description 42
- 238000004422 calculation algorithm Methods 0.000 claims description 32
- 238000012795 verification Methods 0.000 description 17
- HEFNNWSXXWATRW-UHFFFAOYSA-N Ibuprofen Chemical compound CC(C)CC1=CC=C(C(C)C(O)=O)C=C1 HEFNNWSXXWATRW-UHFFFAOYSA-N 0.000 description 13
- 230000008569 process Effects 0.000 description 12
- 238000009795 derivation Methods 0.000 description 7
- 230000007246 mechanism Effects 0.000 description 7
- 230000003993 interaction Effects 0.000 description 5
- 238000007726 management method Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 238000010200 validation analysis Methods 0.000 description 4
- BQCADISMDOOEFD-UHFFFAOYSA-N Silver Chemical compound [Ag] BQCADISMDOOEFD-UHFFFAOYSA-N 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 229910052709 silver Inorganic materials 0.000 description 3
- 239000004332 silver Substances 0.000 description 3
- 230000019771 cognition Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 230000002085 persistent effect Effects 0.000 description 2
- VYZAMTAEIAYCRO-UHFFFAOYSA-N Chromium Chemical compound [Cr] VYZAMTAEIAYCRO-UHFFFAOYSA-N 0.000 description 1
- RWSOTUBLDIXVET-UHFFFAOYSA-N Dihydrogen sulfide Chemical compound S RWSOTUBLDIXVET-UHFFFAOYSA-N 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 230000000052 comparative effect Effects 0.000 description 1
- 230000001010 compromised effect Effects 0.000 description 1
- 238000000354 decomposition reaction Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000013467 fragmentation Methods 0.000 description 1
- 238000006062 fragmentation reaction Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 238000005204 segregation Methods 0.000 description 1
- 230000035945 sensitivity Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/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
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- 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/006—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols involving public key infrastructure [PKI] trust models
- H04L9/007—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols involving public key infrastructure [PKI] trust models involving hierarchical structures
-
- 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/30—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
-
- 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/3247—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 involving digital signatures
-
- 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/3247—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 involving digital signatures
- H04L9/3252—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 involving digital signatures using DSA or related signature schemes, e.g. elliptic based signatures, ElGamal or Schnorr schemes
-
- 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/3263—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 involving certificates, e.g. public key certificate [PKC] or attribute certificate [AC]; Public key infrastructure [PKI] arrangements
- H04L9/3265—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 involving certificates, e.g. public key certificate [PKC] or attribute certificate [AC]; Public key infrastructure [PKI] arrangements using certificate chains, trees or paths; Hierarchical trust model
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computing Systems (AREA)
- Theoretical Computer Science (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
Abstract
블록체인 상에 보증된 데이터를 저장하는 방법이 개시된다. 방법은 암호화 시스템의 제1 개인 키 및 제1 공개 키를 포함하는 제1 개인/공개 키 쌍의 제1 공개 키, 제1 공개 키와 관련된 제1 데이터, 암호화 시스템의 제2 개인 키 및 제2 공개 키를 포함하는 제2 개인/공개 키 쌍의 제2 개인 키에 의해, 제1 데이터 및 제1 공개 키에 적용되는 제1 디지털 서명을 포함하는 제1 출력(출력 3)을 갖는 제1 블록체인 트랜잭션(Tx1)을 생성하는 단계를 포함한다. 제1 블록체인 트랜잭션은 블록체인에 브로드캐스트된다.
Description
본 개시는 블록체인 상에 보증된 데이터를 저장하기 위한 컴퓨터 구현 방법 및 시스템에 관한 것이다.
도입부
인증 기관(Certificate authority; CA)들은 디지털 인증서(digital certificate)들의 발급을 통해 공개 키들을 사용자 아이덴티티들에 랑크하여 디지털 자산들의 진위 및 정당한 소유권을 보장한다. 디지털 인증서들은 인터넷을 통해 민감한 정보를 안전하게 교환하는 것을 가능하게 하는 안전한 웹 브라우징의 필수적인 부분이다. 디지털 공간에서 상업적 및 사회적 활동의 비율이 증가하고 있다. 예컨대, 글로벌 소매 전자 상거래 매출들은 2017년에 $2.3조였으며 2021년까지 $4.8조에 이를 것으로 예상된다["Global Retail E-Commerce Market Size 2014-2021," Statista, 2019, https://www.statista.com/statistics/379046/worldwide-retail-e-commerce-sales/]. 이는 인증 기관들 및 디지털 인증서들에 의해 뒷받침되는 안전한 웹 브라우징에서의 광범위한 신뢰에 의해서만 가능해졌다. 디지털 자산들의 전달을 수반하는 임의의 상업적 활동은 동일한 레벨의 신뢰를 요구하며, 암호화에만 의존할 수 없다.
블록체인 생태계 내에서, 엔티티들은 개인/공개 키 쌍들을 사용하여 익명으로 가치를 교환한다. 상호작용 시에 엔티티들이 자신의 아이덴티티들을 드러내는 고유한 요건은 없다. 이는 필수적인 프라이버시 특징이지만, 잠재적인 기업들 및 소비자들에 대해 명백한 보안 위험들을 제시한다. 현재, 극소수의 지갑 소프트웨어 구현들 및 디지털 자산 교환들은 공개 키들이 '실세계' 아이덴티티들에 안전하게 링크될 수 있도록 보장하기에 충분히 강력한 KYC(Know-Your-Customer) 프로토콜들을 갖는다. 또한, 아이덴티티 관리를 위한 KYC 또는 온-체인 방법들에 대한 업계 전반의 표준들의 개발에 대한 진전이 거의 없었다. 결과적으로, 지불인들 및 수취인들은 안전을 위해 중앙화된 엔티티의 동일 소프트웨어에 의해 관리되는 지갑들만을 사용하는 것으로 제한된다.
블록체인 아키텍처는 보안 키 관리 이외의 오프-체인 보안 프로토콜들에 의존하지 않고 아이덴티티 인증서들의 온-체인 발급 및 관리를 지원할 정도로 충분히 강력하다. 또한, 보안 및 데이터 무결성과 결합된, 블록체인 데이터를 판독하는 상대적으로 저렴한 비용은 인증서 제공자들에 대해 기존 방법에 비해 상당한 경제적 이점을 제공한다.
사전 준비들
디지털 인증서들
디지털 인증서들은 공개 키의 소유권을 보증하는 데 사용된다. X.509는 현재 공개 키 인증서들의 표준 포맷들이다. 도 1은 각각의 속성의 설명과 함께 최신 버전(v3)의 데이터 구조를 도시한다. 디지털 인증서들은, 신뢰 당사자들이 보증된 공개 키에 대응하는 개인 키에 대해 이루어진 서명들 또는 어서션(assertion)들을 신뢰할 수 있게 한다.
인증 기관(CA)으로 알려진 발급자는 인증서의 마지막 필드에 서명을 제공한다. CA는 그의 개인 키를 사용하여, 해시 알고리즘에 대한 식별자를 포함하여 X.509 표준의 다른 모든 필드들의 해시로부터 생성되는 메시지 다이제스트(message digest)에 서명한다. 이 서명된 다이제스트는 인증서의 최종 엔트리로서 나타난다.
디지털 인증서의 검증은 발급자 서명 프로세스와 유사하다. 표시된 해시 알고리즘은 CA의 서명을 제외한 인증서의 모든 필드들로부터 다이제스트를 생성하는 데 사용된다. 그 후, CA의 공개 키는 인클로징된 메시지 다이제스트를 획득하기 위해 인증서의 말미의 서명을 검증하는 데 사용된다. 인증서는, 모든 필드들의 해시가 인클로징된 다이제스트와 동일한 경우, 변조되지 않고 유효한 것으로 간주된다.
X.509 인증서의 모든 각각의 서명에 대해, 2개의 공개 키 알고리즘들: CA에 의해 보호되는 주체의 공개 키 및 인증서가 서명되는 알고리즘이 수반된다는 것이 주의되어야 한다. 이러한 알고리즘들은 서로 독립적인데; 아래에서 더 상세히 설명되는 바와 같이, 보증된 공개 키는 160-비트 타원 곡선 체계(elliptic curve scheme)에 속할 수 있는 반면, 인증서는 RSA 2048-비트 알고리즘으로 서명될 수 있다. [C. Paar and J. Pelzl, Understanding Cryptography, Berlin: Springer, 2010].
CA 생태계
CA는 디지털 인증서들을 발급하는 엔티티이다. CA는 인증서의 주체(소유자) 및 인증서에 의존하는 당사자에 의해 신뢰되는 신뢰된 제3자로서 작용한다. CA들은 가장 일반적으로, HTTPS(월드 와이드 웹에 대한 보안 브라우징 프로토콜)에서 사용되는 인증서들에 서명하거나, 또는 문서들의 전자 서명을 위해 국가 정부들이 아이덴티티 카드들을 발급한다[https://en.wikipedia.org/wiki/Certificate_authority].
CA들은 조직 내부 또는 외부에 있을 수 있다. 상업적 CA들은 인증서의 발급에 대해 과금하는데; 일부 공통적인 외부 CA들은 Symantec(이전 Verisign), Digicert, Comodo, Geotrust 및 Equifax를 포함한다[https://slideplayer.com/slide/4254412/]. Let's Encrypt[https://letsencrypt.org/getting-started/]는 Mozilla, Cisco, Facebook, Chrome 등과 같은 회사들에 의해 지원되는 오픈 소스 CA 및 협업 이니셔티브(collaborative initiative)이다. 그것이 높은 보안을 제공하지만, 무료 인증서들의 단점은 임의의 워런티 또는 부가적인 특징들이 부족하다는 것이다. 최상위 CA들의 비교 검토는 [https://premium.wpmudev.org/blog/ssl-certificate-authorities-reviewed/]에서 찾을 수 있다.
더 작은 조직들은 관리되는/호스팅되는 CA 서비스들을 사용하는 경향이 있지만, 정부 기관들 및 중대형 크기의 조직들은 종종 자체 내부 CA들을 배포한다(예컨대, Windows Server의 Certificate Services 또는 Google의 Google Trust Services ― GlobalSign Root CA-R2). 이 경우에, 인증서의 신뢰는 그것을 발급한 조직에 기초한다[https://sachi73blog.wordpress.com/2013/11/21/x509-certificate-asymmetric-encryption-and-digital-signatures/].
도 2는 디지털 인증서(8)의 발급을 위해 외부(상업적) CA(6)에 CSR(certificate signing request)(4)을 제출하는 클라이언트(주체)(2)의 프로세스를 예시한다. CSR은 주체의 이름(10), 공개 키(12) 및 사용된 알고리즘(아래에서 상세히 설명되는 바와 같이 ― 대부분이 RSA를 사용함)을 포함한다. 개인(14)-공개(12) 키쌍(16)의 공개 키(12)는 클라이언트(2)에 의해 생성되고 개인 키(14)는 개인 키 저장소(18)에서 보호된다. 공개 키(12)는 CSR(4)에서 CA(6)에 제출된다. CA(6)는 클라이언트의 아이덴티티를 검증하고 X.509 포맷을 사용하여 클라이언트의 공개 키(12)에 (CA의 개인 키로) 서명한다. 그 후, 서명된 디지털 인증서(8)가 클라이언트(2)에 발급된다.
신뢰의 체인
CA 생태계는 계층적 신뢰 체인을 사용하여 확장 가능하고 신뢰할 수 있다. 소위 루트 CA는 체인의 기초를 형성하는 앵커로서 작용한다. 루트 CA는 하위(중간) CA들에 걸쳐 그의 인증서 발급 부하를 분산시키며, 하위 CA는 차례로 그의 부하를 발급 CA들에 분산시킬 수 있다. 최종 엔티티와 루트 CA 사이의 체인에 일반적으로 적어도 하나의 중간 인증서가 존재할 것이지만, 둘 이상이 존재할 수 있다는 것이 주의되어야 한다.
분기의 말미의 CA들은 클라이언트들과 상호작용하여 디지털 인증서들을 발급한다. 이 계층적 접근법은 생태계의 용량, 관리 용이성 및 탄력성을 개선한다. 하위 CA들은, 전문 기능성, 상이한 애플리케이션들을 지원하거나 지역 분리를 도입하도록 상이한 조직 영역들의 단편화를 허용한다. 예컨대, 상이한 법적 관할구들에서 동작하는 정책 기관들(정책 CA들)이 설정될 수 있다[https://www.ncipher.com/resources/research-reports-and-white-papers/securing-your-pki]. CA는 또한 CA를 대신하여 개인 또는 조직의 아이덴티티 체크들을 수행하는 등록 기관(Registration Authority; RA)을 사용하기로 선택할 수 있다. RA들은 실제로 임의의 인증서들에 서명/발급하지 않는다는 것이 주의되어야 한다[https://www.tutorialspoint.com/cryptography/public_key_infrastructure.htm].
도 3은 CA들의 계층에 기인하는 인증서 신뢰 체인을 예시한다. 루트 CA는 루트 인증서에 자체 서명하여 CA로서 그의 아이덴티티를 검증한다. 하위 CA는 루트 CA에 의해 서명 및 발급된 중간 인증서를 통해 보증된다. 전자는 체인의 최종 CA(발급 CA들)를 보증하기 위해 최종-엔티티 인증서를 발급한다. 신뢰 당사자는 체인 내의 임의의 레벨의 인증서들을 신뢰하기로 선택할 수 있어서, 이들은 체인보다 더 아래의 모든 인증서들을 자동으로 신뢰한다.
키 관리
PKI 생태계
PKI(public key infrastructure)는 디지털 인증서들 및 공개 키들을 생성, 관리, 배포, 사용, 저장 및 폐기하는 데 요구되는 하드웨어, 소프트웨어, 정책들, 프로세스들 및 절차들의 세트를 포함하는 암호화 데이터 보안을 위한 확장 가능한 프레임워크를 제공한다[https: //www.ncipher.com/resources/research-reports-and-white-papers/securing-your-pki]. CA들은 계층적 신뢰 체인을 통해 이 암호화 프레임워크의 보안을 뒷받침함으로써 PKI의 핵심 구성요소로서 작용한다. PKI들의 애플리케이션들은 공개 웹사이트(public facing website)들에 대한 SSL/TLS 인증서들, VPN, 기업 사용자 인증, 클라우드-기반 앱들에서 디바이스 인증, 이메일 보안 및 모바일 인증을 포함한다[https://www.ncipher.com/resources/research-reports- and-white-papers/secure-your-pki].
이상적인 세계에서, 하나의 CA 및 이에 따른 하나의 진정한 소스가 존재할 것이다. 그러나 상이한 루트 CA들 하에서 동작하고 각자의 루트 공개 키들로 디지털 인증서들을 발급하는 다수의 CA들이 존재한다. 이는, 다수의 PK들로 이어진다. 두 가입자들인 앨리스 및 밥이 상이한 CA들을 사용하는 경우를 고려하면; 앨리스는 시만텍(Symantec)을 사용하고 시만텍 공개 키를 갖는 반면, 밥은 에퀴팩스(Equifax)를 사용하고 에퀴팩스 공개 키를 갖는다. 밥은 그의 디지털 인증서를 앨리스에게 전송한다. 앨리스가 에퀴팩스 공개 키를 소유하고 있지 않지만, 밥의 보증된 공개 키를 추출하기 위해 그의 인증서를 유효성 검증할 필요가 있다.
이를 해결하기 위해, 각각의 루트 CA는 다른 모든 루트 CA들에 대한 인증서들을 유지해야 한다. 또한, 각각의 CA는 다른 CA들로부터의 다른 유용한 정보 이를테면, 폐기 목록들을 유지할 수 있다. 도 4는 PKI들이 개별 루트 CA들 사이에서 어떻게 매핑되는지를 예시한다. 양방향 화살표들은 X 및 Y가 서로에 대한 인증서에 서명했음을 표시한다[https://slideplayer.com/slide/4254412/].
따라서 가입자는 그의 CA에 접촉하여 다른 CA에 대한 공개 키를 포함하는 인증서를 획득할 수 있다. 앨리스 및 밥의 예에서, 밥은 인증서들 시만텍 <<에퀴팩스>> 및 에퀴팩스<<밥>>을 앨리스에 전송한다. 앨리스는 시만텍의 공개 키를 사용하여 시만텍 <<에퀴팩스>>를 유효성 검증하고, 에퀴팩스의 공개 키를 추출하여 에퀴팩스<<밥>>을 유효성 검증한다. 그 후 앨리스는 밥의 보증된 공개 키를 추출할 수 있다. 이 프로세스는 인증서 체이닝(certificate chaining)으로서 알려져 있다.
키쌍들
디지털 인증서들은 다음 알고리즘들 중 하나를 통해 서명된다:
RSA(Rivest-Shamir-Adleman) 알고리즘 ― RSA는 최초 공개 키 암호 시스템들 중 하나이며 디지털 인증서들에서 가장 널리 사용되는 알고리즘이다. 그의 보안은 큰 정수 인수분해의 어려움과 관련되고 이에 따라 보안 난수 생성기를 요구하지 않는다. RSA는 DSA에 비교하면 서명 유효성 검증에 대해 더 빠르지만, 서명 생성에 대해 더 느리다[https://askubuntu.com/questions/363207/what-is-the-difference-between-the-rsa-dsa-and-ecdsa-keys-that-ssh-uses/363221].
DSA(Digital Signature Algorithm) ― DSA는 디지털 서명들에 대한 US 표준이다. 이는 RSA와 동일한 키 크기들을 사용하지만, 이산 로그 문제(discrete logarithmic problem)에 기초한다. 알고리즘의 보안은 도출하는 데 사용되는 난수 생성기의 강도에 의존하고, DSA는 서명들의 생성 시에 RSA보다 빠르지만, 이들을 유효성 검증하는 것에 대해서는 더 느리다[https://askubuntu.com/questions/363207/what-is-the-difference-between-the-rsa-dsa-and-ecdsa-keys-that-ssh-uses/363221].
ECDSA(Elliptic Curve Digital Signature Algorithm) ― ECDSA는 타원 곡선 상의 (둘 중 하나의) 좌표들에 의한 그의 표현으로 인해 계산상 더 가벼운 DSA의 타원 곡선 구현이다[https://askubuntu.com/questions/363207/what-is-the-difference-between-the-rsa-dsa-and-ecdsa-keys-that-ssh-uses/363221]. 이는 일반적으로, 암호 시스템의 엔트로피에 대해 동일한 민감도를 공유하지만 DSA보다 더 안전한 것으로 간주된다 [https://security.stackexchange.com/questions/178958/what-are-the-differences-between-the-rsa-dsa-and-ecdsa-keys-that-ssh-uses?noredirect=1&lq=1]. ECC(Elliptic Curve Cryptography)에 기초하여, ECDSA는 더 작은 키 크기들에 대해 RSA와 동일한 레벨의 보안을 제공하고; ECC 256-비트 인증서는 3072-비트 RSA 키와 등가이다[https://www.digicert.com/ecc.htm]. 이러한 작지만 강력한 키들은, 동일한 레벨의 보안을 위해 ECC 인증서에서 더 적은 데이터가 송신되므로, 계산 파워의 보다 효율적인 사용을 허용한다. 따라서 ECC 인증서들은 모바일 플랫폼들에 호의적이다. 적은 CPU 및 메모리에 대한 요건은 또한 네트워크 성능을 증가시킨다. ECC는 계산 효율성 관점에서 이익들을 제공하지만, ECDSA 서명들의 검증은 계산 집약적인 작업일 수 있고 일부 디바이스들 상에서 RSA보다 느릴 수 있다는 것이 주의되어야 한다[https://www.digicert.com/ecc.htm].
HD 지갑들
결정론적 키들(deterministic keys)은 단일 "시드" 값으로부터 초기화된 개인 키들이다[A. M. Antonopoulos, "Chapter 5," in Mastering Bitcoin, California, O’Reilly, 2017, pp. 93-98]. 시드는 마스터 개인-공개 키 쌍을 생성하는 데 사용되는 랜덤으로 생성된 수이다. 결정론적 키들은 서로 관련되며 시드 키로 완전히 복구 가능하다. 도 5에 도시된 바와 같이, HD 지갑(20)은 결정론적 키들의 가장 일반적인 도출 방법이다. HD 지갑들에서, 마스터 키(22) 형태의 부모 키가 시드 키(24)로부터 생성되고 차례로 자식 키(26)들의 시퀀스를 생성하며, 이는 결국 손자 키들(28)의 시퀀스를 도출하는 식이다. 이들의 도출에 관한 추가 세부사항들은 아래에서 주어진다. 도 5에 도시된 이 트리-형 구조는 키들의 보안 및 복구 관점에서 여러 키들을 관리하기 위한 강력한 메커니즘이다. 사용자들은 대응하는 개인 키들 없이 공개 키들의 시퀀스를 생성할 수 있다. 더 적은 비밀들이 저장될 필요가 있기 때문에, 더 낮은 노출 위험이 존재한다. 또한, 키들이 분실/손상된 경우, 이들은 시드 키(24)로부터 복구될 수 있다.
비밀 값 분배
두 당사자들인 앨리스 및 밥 간의 비밀 값 분배에 관하여 국제 특허 출원 WO 2017/145016에서 설명된 기술 사양에 대한 간략한 요약이 제공된다.
1. 앨리스는 메시지를 생성하고 이를 해시한다.
2. 앨리스는 ECC 덧셈을 통해 보조 개인-공개 키 쌍을 생성하는데 해시된 메시지를 사용한다.
3. 앨리스는 그녀의 보조 개인 키로 서명된 해시된 메시지를 밥에게 전송한다.
4. 밥은 앨리스의 서명을 유효성 검증한다.
5. 밥은 ECC 덧셈을 통해 보조 개인-공개 키 쌍을 생성하는데 해시된 메시지를 사용한다.
6. 앨리스 및 밥은 이제 서로의 보조 공개 키들을 계산할 수 있다.
7. 앨리스 및 밥은 그들의 개별 보조 개인 키들을 서로의 보조 공개 키들과 곱하여 공유된 비밀(교환 법칙)을 도출한다.
8. 해시된 메시지를 해시하는 것(그리고 해시된 메시지의 해시를 해시하는 것)은 오리지널 메시지만이 알려질 필요가 있는 경우 공유된 비밀들의 계층의 생성을 가능하게 한다.
예컨대, 위에서 설명된 유형의 디지털 인증서들을 블록체인 상에 저장하는 것이 바람직할 것이다.
따라서, 본 개시내용에 따르면, 첨부된 청구항들에서 정의된 바와 같은 방법이 제공된다.
블록체인 상에 보증된 데이터를 저장하는 방법이 제공될 수 있으며, 이 방법은:
제1 블록체인 트랜잭션을 생성하는 단계 ― 상기 제1 블록체인 트랜잭션의 제1 출력은 암호화 시스템의 제1 개인/공개 키 쌍의 제1 공개 키에 기초한 제1 데이터를 포함하며, 제1 개인/공개 키 쌍은 제1 개인 키 및 제1 공개 키를 포함하고, 제1 블록체인 트랜잭션은 암호화 시스템의 제2 개인/공개 키 쌍의 제2 개인 키에 의해 서명된 제1 디지털 서명을 포함하고, 제2 개인/공개 키 쌍은 제2 개인 키 및 제2 공개 키를 포함하고, 제1 디지털 서명은 상기 제1 공개 키와 관련된 제2 데이터를 포함하는 입력을 가짐 ― ; 및
제1 블록체인 트랜잭션을 블록체인에 브로드캐스트하는 단계를 포함한다.
블록체인 트랜잭션에 저장된 보증된 데이터를 검증하는 방법이 제공될 수 있으며, 이 방법은,
(i) 암호화 시스템의 제1 개인/공개 키 쌍의 제1 공개 키에 기초한 제1 데이터 및 (ii) 블록체인 트랜잭션에 저장된 제1 디지털 서명을 식별하는 단계 ― 제1 개인/공개 키 쌍은 제1 개인 키 및 제1 공개 키를 포함하고, 상기 블록체인 트랜잭션의 제1 출력은 상기 제1 데이터를 포함하고, 상기 제1 디지털 서명은 암호화 시스템의 제2 개인/공개 키 쌍의 제2 개인 키에 의해 서명되고, 제2 개인/공개 키 쌍은 제2 개인 키 및 제2 공개 키를 포함하고, 제1 디지털 서명은 상기 제1 공개 키와 관련된 제2 데이터를 포함하는 입력을 가짐 ― ; 및
상기 제2 공개 키에 의해 상기 제1 디지털 서명을 검증하는 단계를 포함한다.
제1 참가자와 제2 참가자 사이에서 암호화 시스템의 공개 키를 공유하는 방법이 제공될 수 있으며, 여기서, 제1 참가자는 준동형 속성(homomorphic property)을 갖는 암호화 시스템의 제1 개인 키 및 제1 공개 키를 포함하는 제1 개인/공개 키 쌍의 제1 개인 키를 갖고, 제2 참가자는 암호화 시스템의 제2 개인 키 및 제2 공개 키를 포함하는 제2 개인/공개 키 쌍의 제2 개인 키를 갖고, 제1 디지털 서명은 제3 개인 키에 의해 서명되며, 제1 디지털 서명은 상기 제1 공개 키와 관련된 제1 데이터를 포함하는 입력을 갖고, 제2 디지털 서명은 제3 개인 키에 의해 서명되며, 제2 디지털 서명은 상기 제2 공개 키와 관련된 제2 데이터를 포함하는 입력을 가지며, 상기 방법은,
상기 제1 참가자에 의해, 상기 제1 개인 키 및 상기 제2 공개 키에 의해 공통 비밀을 결정하는 단계 ― 상기 공통 비밀은 또한 상기 제2 개인 키 및 상기 제1 공개 키에 의해 결정될 수 있음 ― ; 및
상기 제1 참가자에 의해, 제1 공개 키 및 공통 비밀에 기초하여 암호화 시스템의 적어도 하나의 추가 공개 키를 결정하는 단계를 포함한다.
암호화 시스템의 적어도 하나의 개인 키를 생성하는 방법이 제공될 수 있으며, 여기서 제1 디지털 서명은 제2 개인 키에 의해 서명되고, 제1 디지털 서명은 준동형 속성을 갖는 암호화 시스템의 제1 공개 키 및 제1 개인 키를 포함하는 제1 개인/공개 키 쌍의 상기 제1 공개 키와 관련된 제1 데이터를 포함하는 입력을 갖고, 방법은, 제1 개인 키 및 결정론적 개인 키에 기초하여 암호화 시스템의 적어도 하나의 제3 개인 키를 생성하는 단계를 포함한다.
시스템이 제공될 수 있으며, 이 시스템은,
프로세서; 및
프로세서에 의한 실행의 결과로서, 시스템으로 하여금, 본원에서 설명된 컴퓨터 구현 방법의 임의의 실시예를 수행하게 하는 실행 가능한 명령들을 포함하는 메모리를 포함한다.
실행 가능한 명령들을 저장되어 있는 비-일시적인 컴퓨터 판독 가능 저장 매체가 제공될 수 있으며, 이 명령들은 컴퓨터 시스템의 프로세서에 의해 실행되는 결과로서, 컴퓨터 시스템으로 하여금, 본원에서 설명되는 컴퓨터 구현 방법의 실시예를 수행하게 한다.
본 개시에 따른 다양한 실시예들이 도면들을 참조하여 설명될 것이다.
도 1은 디지털 인증서의 데이터 구조의 다이어그램이다.
도 2는 디지털 인증서를 발급하기 위한 프로세스를 도시한다.
도 3은 디지털 인증서의 발급 시의 신뢰 체인을 도시한다.
도 4는 다수의 루트 인증 기관들 간의 PKI(public key infrastructure)의 매핑을 도시한다.
도 5는 HD(hierarchical deterministic) 지갑들에서 결정론적 키들의 트리-형 구조의 다이어그램이다.
도 6은 블록체인 상의 디지털 인증서의 저장을 도시한다.
도 7은 블록체인 상에 저장된 디지털 인증서의 데이터 구조를 도시한다.
도 8은 디지털 인증서를 포함하는 블록체인 트랜잭션을 도시한다.
도 9는 도 8의 블록체인 트랜잭션의 업데이트된 버전을 도시한다.
도 10은 도 9의 디지털 인증서의 시간 잠금 버전(time locked version)을 도시한다.
도 11은 개인 키의 지식에 관한 영지식 증명(zero knowledge proof)을 도시한다.
도 12는 보증된 HD 지갑들에 대한 개인 키들의 도출을 도시한다.
도 13은 보증된 데이터를 저장하기 위해 블록체인 상에서 트랜잭션들의 체인의 사용을 도시한다.
도 14는 도 13의 어레인지먼트의 루트 트랜잭션을 도시한다.
도 15는 도 13의 어레인지먼트의 중간 트랜잭션을 도시한다.
도 16은 오프체인으로 저장되고 블록체인 상에 저장된 디지털 인증서들의 필드들의 비교를 도시한다.
도 17은 서비스 제공자에 대한 디지털 인증서를 생성 및 참조하기 위한 프로세스를 도시한다.
도 18은 다양한 실시예들이 구현될 수 있는 컴퓨팅 환경을 예시하는 개략도이다.
도 1은 디지털 인증서의 데이터 구조의 다이어그램이다.
도 2는 디지털 인증서를 발급하기 위한 프로세스를 도시한다.
도 3은 디지털 인증서의 발급 시의 신뢰 체인을 도시한다.
도 4는 다수의 루트 인증 기관들 간의 PKI(public key infrastructure)의 매핑을 도시한다.
도 5는 HD(hierarchical deterministic) 지갑들에서 결정론적 키들의 트리-형 구조의 다이어그램이다.
도 6은 블록체인 상의 디지털 인증서의 저장을 도시한다.
도 7은 블록체인 상에 저장된 디지털 인증서의 데이터 구조를 도시한다.
도 8은 디지털 인증서를 포함하는 블록체인 트랜잭션을 도시한다.
도 9는 도 8의 블록체인 트랜잭션의 업데이트된 버전을 도시한다.
도 10은 도 9의 디지털 인증서의 시간 잠금 버전(time locked version)을 도시한다.
도 11은 개인 키의 지식에 관한 영지식 증명(zero knowledge proof)을 도시한다.
도 12는 보증된 HD 지갑들에 대한 개인 키들의 도출을 도시한다.
도 13은 보증된 데이터를 저장하기 위해 블록체인 상에서 트랜잭션들의 체인의 사용을 도시한다.
도 14는 도 13의 어레인지먼트의 루트 트랜잭션을 도시한다.
도 15는 도 13의 어레인지먼트의 중간 트랜잭션을 도시한다.
도 16은 오프체인으로 저장되고 블록체인 상에 저장된 디지털 인증서들의 필드들의 비교를 도시한다.
도 17은 서비스 제공자에 대한 디지털 인증서를 생성 및 참조하기 위한 프로세스를 도시한다.
도 18은 다양한 실시예들이 구현될 수 있는 컴퓨팅 환경을 예시하는 개략도이다.
체인 상의 디지털 인증서들
CA 계층
도 1에 도시된 포맷의 표준 디지털 인증서들이 블록체인 상에 내장될 수 있다. 여기서, 루트 CA(30) 및 하나의 하위 CA 이를테면, 단일 관할구를 표현하는 정책 CA(32)가 존재하는, 도 6에 도시된 것과 같은 단순화된 2-티어 CA 계층이 가정될 수 있다. 정책 CA(32)는 도 3에 따라 신뢰 체인을 형성하기 위해 다수의 발급 CA들(34)의 공개 키들에 서명한다. 발급 CA들(34)은 부모 CA들을 대신하여 디지털 인증서들(36)을 발급하도록 상이한 사용자들 및 디바이스들과 상호작용한다. 다음 섹션들에서, CA에의 사용자의 공개 키의 등록 및 디지털 인증서의 결과적인 발급이 설명될 것이다. 인증서들의 검증, 갱신 및 폐기가 또한 고려된다.
디지털 인증서들
디지털 인증서 포맷
블록체인 디지털 인증서 프로토콜 내에서, 인증서 메타데이터는 인증서 발급자에 의해 서명된 트랜잭션의 OP_RETURN(증명 가능하게 소비 불가능함) 출력 내에 포함된다. 인증서 데이터 구조는 도 1에 도시된 X.509 표준과 동일하거나 중복(redundant) 데이터(즉, 블록체인 플랫폼에 이미 내재된 정보)를 제거하도록 수정될 수 있다.
도 7은 예시적인 블록체인 디지털 인증서를 도시한다. 제안된 데이터 구조는 X.509와 유사하지만, 일부 주목할 만한 차이점들이 있다. 새로운 데이터 구조의 의의는 그것이 블록체인 플랫폼 내에서 실세계 아이덴티티들을 표현하기 위해 새로운 표준을 설정하는 수단이라는 것이다.
OP_RETURN 페이로드의 처음 4바이트들은 디지털 인증서 식별 프리픽스(prefix)이다. 블록체인을 모니터링하는 디바이스는 인증서 데이터를 리트리브(retrieve)할 때 그 프리픽스를 질의한다. 프리픽스의 예들은 다음을 포함한다:
여기서 3-글자 약어는 ASCII를 사용하여 16진수로 변환된다.
32-바이트 고유 ID가 인증서에 할당된다. 이는 나머지 인증서 데이터의 연접(concatenation)을 해싱함으로써 생성될 수 있다.
인증서 데이터는 체인 상에서 CA를 식별하는 3개의 필드들로 시작한다. 이 필드들은 CA의 발급, 중간 및 루트 인증서들에 대한 포인터들로 구성되며 이들의 추가 세부사항들은 아래에서 주어진다.
다음 2개의 필드들은 인증서 유효 기간을 인코딩한다.
다음 4개 필드들은 인증서 주체 데이터를 인코딩하고 발급 CA에 의해 사용되는 '실세계' 이름들, 디바이스들 및 주체 식별자(선택적)를 포함한다.
마지막 2개의 필드들은 인증서에 포함되는 부가적인 지정되지 않은 메타데이터(선택적)를 허용한다.
X.509 표준 인증서들에 존재하는 '서명' 및 '서명 알고리즘 식별자' 필드들은 블록체인 인증서에 명시적으로 포함되지 않는다는 것이 주의되어야 한다. 이는 (ECDSA에 기초한) 서명 필드가 이미 트랜잭션 입력에 존재하기 때문이다. 이 중복 정보를 제거하는 것은 체인 상의 데이터 저장 효율을 향상시킨다.
전체적으로, 블록체인 디지털 인증서는 352-1408 바이트의 OP_RETURN 공간을 요구한다.
등록 및 발급
앨리스가 CSR을 상업적 CA 오프-체인에 제출했다고 가정하자. 후속적으로, CA를 대신하여 작용하는 RA는 앨리스의 아이덴티티에 대한 필요한 체크들을 수행한다. 이 정보가 검증되고 발급 CA에 통신되면, 발급 CA는 다음 셋업 알고리즘에 따라 온-체인 트랜잭션을 셋업함으로써 응답한다.
셋업
앨리스가 디지털 서명 체계에 대한 자신의 공개 키 PKA가 CA에 의해 보증되기를 원하는 것으로 가정된다.
1. PKA 상에서 앨리스로부터 요청의 수신 시에, CA는 앨리스의 아이덴티티를 검증한다.
2. 앨리스가 실제로 자신이 신청한 사람이라고 CA가 확신될 때, CA는 인증서 트랜잭션(CTX)이라 불리는 트랜잭션을 생성한다.
a. 입력: CA의 UTXO 및 CA의 서명을 포함하는 잠금해제 스크립트
b. 출력 1: P2PKH(CA에 의해 선택된 독립적인 공개 키, 즉 PKCTX)
c. 출력 2: OP_RETURN: PKA
소위 인증서 트랜잭션(CTX)은 도 8에서 예시되며, 이는 공개 키 PKA를 보증하기 위해 CA에 의해 생성되는 트랜잭션 ID, 를 갖는 CTX를 도시한다. 트랜잭션에 대한 입력은 발급 CA의 UTXO를 포함하고, 그리하여 CA 온-체인에 대한 링크를 생성한다. 제1 출력은 발급 CA에 의해 선택된 독립적인 공개 키에 대한 P2PKH(pay to public key hash)이다. 이 출력은 CTX가 UTXO 세트에 나타날 것을 보장하고 (검증과 관련하여 아래에 설명되는 바와 같이) 앨리스의 공개 키에 대한 직접적인 유효성 체크를 가능하게 한다.
셋업 알고리즘의 제2 출력은 앨리스의 공개 키 및 그녀의 CA 서명된 공개 키를 포함하며, 이 둘 모두는 증명 가능하게 소비 불가능한 출력 OP_RETURN 내에 있다. 여기서 알고리즘은 트랜잭션의 제2 출력에 전체 디지털 인증서를 포함시키도록 수정된다. 인증서는 OP_RETURN 출력 내에서 표준화되고 인식되는 포맷의 CA 서명과 함께 앨리스의 공개 키 정보를 포함한다. 도 8의 CTX가 채굴된 후 CA는 앨리스의 인증서가 내장된 트랜잭션 ID 를 앨리스에게 발급한다. 앨리스는 후속적으로 이 인증서 트랜잭션 ID에 대해 온-체인으로 자신의 아이덴티티를 검증하고자 하는 모든 신뢰 당사자들에서 지시할 수 있다.
블록체인 디지털 인증서의 공개 키 PKA는 해시 함수에 의해 난독화된다(obfuscated). 이는 온-체인 프라이버시를 제공하는 데 매우 유용할 수 있지만, 여전히 오프-체인 공개 키를 아는 누군가는 이를 해시 다이제스트에 링크할 수 있다. 이는 또한 블록체인 디지털 인증서가 표준 디지털 인증서보다 더 유연하게 될 수 있게 한다.
검증
앨리스의 디지털 서명은 그녀의 보증된 공개 키를 통해 검증될 수 있다. 검증 프로세스의 제1 부분은, 트랜잭션 ID가 UTXO 세트 내에 존재한다는 것을 체크함으로써 초기 유효성 체크가 수행되는 다음의 검증 알고리즘을 채택한다.
검증
앨리스로부터의 디지털 서명을 검증하기 위해, 사용자가 먼저 그녀의 공개 키를 검증할 필요가 있다.
2. 그 트랜잭션의 입력이 CA의 공개 키를 포함한다는 것을 체크한다.
3. 그 트랜잭션의 제1 출력이 UTXO 세트에 있는지를 체크한다. 만약 아니라면, PKA를 거부하고 중지한다.
6. PKA를 수락한다.
제2 출력 내에 제공된 정보가 앨리스의 공개 키를 보증한다는 것을 검증하기 위해, X.509 인증서 내의 콘텐츠를 검증하도록 검증 알고리즘이 확장될 필요가 있다. 업데이트된 알고리즘은 다음과 같다:
2. 그 트랜잭션의 제1 출력이 UTXO 세트에 있는지를 체크한다. 만약 아니라면, PKA를 거부하고 중지한다.
7. PKA를 수락한다.
블록체인 플랫폼의 트랜잭션들은 기본 타원 곡선 암호화 시스템을 사용하여 그의 생성자(creator)들에 의해 서명된다. CTX는 CA의 개인 키에 의해 디지털로 서명되며; 이는 X.509 인증서(CA 서명)의 최종 엔트리가 중복되게 한다. 유사하게, 블록체인 트랜잭션들 내로 디지털 인증서들을 내장하는 것은 모든 트랜잭션들이 ECDSA를 사용하여 서명되기 때문에 X.509 표준 내의 서명 알고리즘 식별자에 대한 필드를 무효화한다(nullify). 따라서 디지털 인증서 내에 내장된 데이터는 블록체인 플랫폼에 내재된 암호화 정보를 사용하여 최적화될 수 있다.
갱신 및 폐기
디지털 인증서들은 폐기 및 업데이트에 대한 다음의 프로세스들에 따라 갱신 및 폐기될 수 있다.
폐기
앨리스의 공개 키를 폐기하기 위해, CA는 PKA를 참조하는 CTX의 제1 출력을 소비하는데, 그 이유는 이것이 검증 프로세스의 단계 2로 하여금 실패하게 하기 때문일 것이다.
업데이트
공개 키들이 업데이트될 필요가 있는 시나리오들이 존재한다. 예컨대, 앨리스가 자신의 개인 키를 분실했거나 그녀의 개인 키가 손상되었다.
1. CA는 인증서 트랜잭션(CTX)을 생성한다.
폐기의 경우, CA는 검증 알고리즘의 단계 2가 실패하도록 단순히 CTX의 제1 출력을 소비할 수 있다. 디지털 인증서들을 업데이트하기 위해, 아래 도 9 ― 이는 업데이트된 공개 키 (x-y = Tx 수수료)를 보증하기 위해 CA에 의해 생성된 트랜잭션 ID 를 갖는 CTX를 도시함 ― 에 도시된 바와 같이 트랜잭션 입력을 사용하여 이전 CTX ID에 링크하는 새로운 CTX가 생성될 수 있다. CA, 사용자 또는 다중-당사자 폐기 체계들에 의존하여 폐기 메커니즘을 맞춤제작하는 것이 바람직할 수 있는 상이한 사용자 사례들이 존재한다는 것이 주의되어야 한다.
인증서 만료(시한부(timed) 키들)
각각의 디지털 인증서에 도 1 및 도 7의 데이터 구조에서 도시된 바와 같이 그의 유효 기간에 관한 정보를 포함한다. 이 정보를 추출함으로써, 시간은 인증서 트랜잭션(CTX) 출력의 잠금 스크립트에 대한 변수로서 추가될 수 있고 그리하여 의사-자율 인증서 만료/갱신을 통합하기 위한 스크립트의 기능성을 향상시킨다.
OP_CHECKLOCKTIMEVERIFY(CLTV)를 사용하여, 디지털 인증서를 포함하는 CTX가 특정 시간에 트랜잭션을 소비함으로써 만료하도록 만들어질 수 있다. 시간은 UNIX 또는 향후의 언젠가의 블록 높이로 동기화될 수 있다. 이는 임의의 시간-동기식 디바이스들이 '시한부' 키로 유효성 검증/무효화될 수 있음을 의미한다.
사용자가 CSR을 상업적 CA에 제출할 때, 이들은 인증서가 특정 시간까지 유효하게 유지되도록 관련 지불을 전달한다. 이 정보를 (nLockTime 또는 CLTV를 사용하여) 스크립트에 인코딩함으로써, 서명된 CTX는 특정량의 시간이 경과할 때까지 UTXO 세트로부터 제거될 수 없다(소비될 수 없음).
온 체인 방법
도 10은 아래에 약술된 방법을 동반하는 CTX를 도시한다. 트랜잭션은 업데이트된 공개 키 (x ― y = Tx 수수료)를 보증하기 위해 CA에 의해 생성된 트랜잭션 ID, 를 갖는다. UTXO 등록은 인증서 만료일까지 UTXO가 소비될 수 없도록 보장하는 CLTV opcode들을 포함한다.
단계 1: 인증서 발급자는 인증서 트랜잭션 CTX를 생성한다. 만료일은 데이터 <expiry time>를 사용하여 제1 출력(UTXO 등록 출력) 내로 인코딩된다.
단계 2: 일단 발급되면, 디지털 인증서는 만료일에 도달될 때까지 유효하고 UTXO는 소비 가능하다.
보증된 지갑들
지갑은 키들/어드레스들의 모음이다. 통상적인 블록체인 사용자는 모든 그의 자금들이 한 장소에 로케이팅되지 않도록 그리고 그의 개인 키들이 트랜잭션 서명들을 생성하는 데 반복적으로 사용되지 않도록 자신의 어드레스들을 정기적으로 업데이트한다. 대부분의 (보안) 지갑 소프트웨어 구현들은 사용자로부터의 입력 없이 일련의 단일-사용 키들을 자동으로 생성할 것이다. 이러한 애플리케이션 층 제약이 주어지면, 최종 사용자가 날마다 요구할 수 있는, 모든 각각의 단일 키에 서명할 것을 CA에 요구하는 것은 비현실적이다.
대신, 트랜잭션들에서 직접 사용되지 않고 지갑 어드레스들의 도출 경로에 사용될 공개 키에 대한 인증서들을 발급함으로써 전체 지갑에 대해 단일 디지털 인증서가 발급될 수 있다.
계층적 키들
지금까지, 블록체인 상에서 개별 키 쌍들을 보증하기 위한 디지털 인증서들의 구현이 설명되었다. 보안상 이유들로, 사용자 자금들의 위협을 방지하기 위해 주기적으로 키들을 갱신하고 새로고침 하는 것이 매우 바람직하다. 블록체인 사용자가 자신의 키들을 관리하고 업데이트하기 위한 일반적인 방법은 (위에 정의된) HD 지갑들에서 계층적 키들을 사용하는 것이다. PKI의 계층 및 HD 지갑들의 계층 간의 차이점을 강조하는 것이 중요한데; 전자는 (루트 CA 키로부터 시작하는) 디지털로 서명된 키들을 통해 설정되는 반면, 후자는 (마스터 키로부터 시작하는) 계층적 키들의 결정론적 생성을 통해 생성된다.
두 당사자들 간에 키들을 공유할 때 국제 특허 출원 WO 2017/145016에서 설명된 비밀 값 분배 기술의 사용이 부가적으로 고려될 수 있다. 이 방법은 비밀(관련된 두 당사자들에게만 알려짐)인 공유된 키들의 계층을 어떻게 셋업하는지를 설명하고 오리지널 공유된 비밀로부터 비밀들을 생성하는 효율적인 방법이다. 재차, PKI의 계층과 오리지널 공유된 비밀의 순차적 해시로부터 생성된 비밀 키들의 계층 간의 차이가 강조된다.
이러한 미묘한 차이들을 감안하여, 동일한 작업량에 대해 계층적 키들의 시스템에서 부모(마스터 또는 루트) 키의 바람직한 특징들을 추정하기 위해 상이한 기술들이 결합될 수 있다. 예컨대, HD 지갑들은 온-체인의 ECDSA 키쌍들의 준동형 속성을 이용한다. 이 속성은 HD 지갑 내의 보증된 마스터 키로부터 모든 자식/손자 키들의 보증을 추론함으로써 추가로 이용될 수 있다. 이는 또한 공유된 비밀 키들의 계층으로 확장될 수 있다. 이러한 계층적 키들의 암시적 품질은 보증된 지갑들의 개념을 도입함으로써 아래에서 설명된다.
결정론적-기반 키 업데이트들
방법:
1. 앨리스가 결정론적 지갑을 소유한다고 가정한다. 그녀는 공개 키 를 CA에 등록한다. 어떻게 가 등록되고 디지털 인증서를 발급하는지에 대한 방법은 위에서 설명된다. 앨리스는 를 자유롭게 브로드캐스트할 수 있다. 그녀는 를 사용하여 서명을 생성하지 않을 것이다.
2. 결정론적인 지갑 설계를 사용하여, 그녀는 자식 키들을 생성한다.
4. 누군가가 앨리스의 키 에 도전하는 경우, 그녀는 서명 를 제공함으로써 의 개인 키를 알고 있음을 그리고 라는 것을 증명할 수 있다. 이는 로 서명한 것과 상이한 메시지여야 한다는 것에 주의한다.
특징들:
·앨리스는 단 하나의 공개 키만이 CA에 의해 보증될 것을 요구한다. 모든 다른 키들은 증명 가능하게, 링크될 수 있다.
보증된 키 업데이트들
위에서 설명된 결정론적-기반 키 업데이트들을 제공하기 위한 방법은 HD 지갑들로 확장될 수 있다. 결정론적으로 도출된 키들의 기본 세트로서 를 사용하는 대신, 기본 세트는 예컨대, BIP0032 프로토콜을 사용하여 도출된 지갑이다. 지갑을 보증하기 위한 방법은 HD 지갑에 의해 생성된 모든 각각의 키에 보증된 공개 키를 단순히 추가하는 것이다.
HD 지갑들
사용자는 먼저 시드 S, 일반적으로 12-단어 구를 선택한다. 그 후, 마스터 노드(또는 마스터 개인 키)는 HMAC-SHA512의 1 내지 50,000 라운드들을 사용하여 시드로부터 도출된다. 마스터 키로부터, 모든 지갑 어드레스들이 생성되며,
여기서 i는 계정 번호를 표현하고, j는 키 번호를 표현하고, H는 SHA256 해시 함수이다(키 도출 방법들에 대한 추가 세부사항에 대해, [https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki]를 참조함). 대응하는 공개 키들은 개인 키들에 secp256k1 생성기를 곱함으로써 계산된다:
보증된 HD 지갑들
대응하는 공개 키들은 다음과 같다:
도 12는 보증된 HD 지갑에 대한 도출 경로를 도시한다. 보증된 키의 소유권을 증명하기 위해, HD 지갑의 사용자는 대응하는 및 로부터 메시지들에 서명하는, 위에서 설명된 결정론적-기반 키 업데이트 프로세스의 단계 4를 따를 수 있다. 또는 대안적으로, 위에서 설명된 바와 같이 영지식 증명 프로토콜을 따를 수 있다.
분석
이 방법은 디지털 인증서가 발급된 공개 키에 보증된 지갑으로부터의 키들이 암호화 방식으로 링크되는 것을 가능하게 한다. 이 방법의 핵심적인 특징들은 다음과 같다:
·보증된 키는 보호되고,
·CA에 대한 요건들인 최소임.
또한, 전체 지갑을 보증하는 것은 단지 지갑 개인 키들에 상수를 추가할 것을 요구하므로, 최종 사용자에 대한 요건들이 또한 최소화된다. 결과적으로, 도출 경로는 이에 따라 근본적으로 변경되지 않고 어떠한 추가 보안 고려사항들도 요구되지 않는다.
보증된 지불 채널들
디지털 인증서들이 KYC를 가능하게 하는데 중요하지만, 이들은 보증된 당사자의 프라이버시를 감소시키는 바람직하지 않은 영향을 미칠 수 있다. 예컨대, 어떤자의 실제 아이덴티티를 공개 키에 링크하는 온-체인 디지털 인증서는 누군가가 그 사람의 재정 활동을 모니터링할 수 있게 할 것이다. 일부 경우들에서, 트랜잭팅 당사자들은 초기에, 디지털 인증서들의 발급을 통해 신뢰를 구축하기를 원할 수 있지만, 일단 신뢰가 구축되면, 대중으로부터 그의 어드레스들을 모호하게 할 수 있다. 보증된 지불 채널들은 한 쌍의 엔티티들이 안전하고 사적인 방식으로 트랜잭팅할 수 있게 함으로써 이 문제를 해결한다.
셋업
앨리스 및 밥은 유효한 디지털 인증서들이 발급된 키들을 가져야 한다. 이들은 및 로서 지칭된다. 앨리스 및 밥 둘 모두가 지불 채널을 생성하기 전에 서로의 실세계의 아이덴티티들을 검증할 수 있도록 디지털 인증서들이 요구된다. 디지털 인증서들을 발급하고 참조하기 위한 정확한 메커니즘은 위에서 설명되었다.
온 체인 방법
단계 1: 앨리스 및 밥은 타원 곡선 디피 헬먼(Elliptic Curve Diffie Hellman)을 사용하여 공유된 비밀을 생성한다.
단계 1a: 앨리스는 그녀의 비밀 키를 밥의 공개 키로 곱한다
단계 1b: 밥은 그의 비밀 키를 앨리스의 공개 키로 곱한다
단계 1c: 공유된 비밀은 공동으로 도출된 타원 곡선 지점의 x-좌표이다
단계 2: 이 공유된 비밀은 비밀 키들의 해시 체인을 생성하는 데 사용된다.
이는 공유 비밀 시드를 사용하는 결정론적 키 생성 경로의 한 예일 뿐이다. 국제 특허 출원 WO 2017/145016에서 설명된 방법들과 같은 다른 방법들이 사용될 수 있다. 또한, 실제로 결정론적 지갑들은 HMAC(hash-based message authentication code)들을 사용하여 개인 키들을 생성한다는 것이 주의되어야 한다. 본 개시의 목적들을 위해, HMAC() 및 H()는 상호 교환 가능하고, 키들을 생성하는데 사용되는 정확한 함수는 구현 세부사항인 것으로 가정될 수 있다.
단계 3: 업데이트 공개 키들은 N번째 비밀 키부터 생성된다.
업데이트 키들은 추가된 보안을 위해 sN에서 시작하여 s1로 끝나도록 역방향으로 도출된다는 것이 주의되어야 한다.
단계 4: 앨리스 및 밥 둘 모두는 이러한 업데이트 키들을 사용하여 인덱싱된 어드레스들의 시퀀스를 생성한다.
앨리스 및 밥은 이제 지불들을 주고 받는 인덱싱된 공개 키 어드레스들의 시퀀스를 갖는다. 키들이 공유된 비밀을 사용하여 도출되었으므로, 지불 채널의 어드레스들은 앨리스 및 밥에게만 알려져, 프라이버시를 보장하도록 이들이 보안 지불 채널을 설정하는 것을 가능하게 할 것이다.
분석
보증된 지불 채널 알고리즘은 비밀 공유 및 결정론적 키 업데이트들을 결합하고 그의 보안 모델은 ECC 및 해시 기능들 둘 모두에 의존한다. 공격자가 단일 업데이트 키(Pk의 경우 sk)의 개인 키를 결정할 수 있는 경우에도, 이들은 또는 을 결정할 수 없을 것이다.
이 방법에 대한 예시적인 사용 사례는 가입자와 공급자 사이에 지불 채널이 셋업되는 페이-에즈-유-고(pay-as-you-go) 스트리밍 서비스 이를테면, 케이블 TV 서비스들이다. 초기 신뢰를 확립하기 위해, 서비스 사용자는 지불 어드레스들이 실제로 서비스 제공자에 속한다는 것이 보장되어야 한다. 반대로, 서비스 제공자는 지불들을 각각의 고객 ID에 링크할 수 있을 필요가 있을 것이다. 보안 및 유연성 둘 모두를 위해, 보증된 지불 채널 알고리즘은 공급자 및 사용자 둘 모두에 대해 다수의 키들을 생성하고 그의 트랜잭션 정보가 온-체인인 동안 제3자들로부터 모호하게 유지되도록 보장한다.
보증된 키 증명
디지털 서명들
보증된 키의 소유권은 2개의 디지털 서명들: 에 대해 하나 및 에 대해 하나를 증명함으로써 쉽게 입증될 수 있다. 캐롤(Carol)이 앨리스가 보증된 공개 키 의 소유자임을 검증하기를 원한다고 하자. 그러나 앨리스는 로 메시지들에 직접 서명하기를 원치 않는다. 그녀는 다음 알고리즘을 사용할 수 있다.
단계 1: 캐롤은 앨리스에게 메시지 M을 전송한다. 이는 랜덤-생성 비트 스트링일 수 있다.
단계 2: 앨리스는 메시지 M에 대해 2개의 서명들로 응답한다:
해시 사전이미지
여기서 N은 지불 채널/지갑의 키들의 수이다.
알고리즘(키 증명 방법 2)
단계 1: 캐롤은 앨리스에게 메시지 M을 전송한다. 이는 랜덤-생성 비트 스트링일 수 있다.
단계 3: 다음을 고려하면,
캐롤은 다음을 검증하고:
다음을 추론할 수 있다:
이 방법은 이전 방법보다 에 대한 더 많은 개인 정보를 드러내기 때문에 암호학적으로 덜 안전하다는 것이 주의되어야 한다. 그러나 이는 캐롤에 대한 보다 효율적인 검증을 가능하게 한다. 캐롤은 결정론적 키들의 체인 ― 이에 의존하여, 해시 사전이미지가 제공됨 ― 을 결정할 수 있고, 그리하여 매우 다수의 서명들이 검증되는 것을 가능하게 한다는 점에서 효율성의 개선들이 일어난다.
영지식 증명들
에 대한 지식(및 암묵적으로 )을 증명하기 위해 서명들을 제공하는 것에 대한 대안으로서, 앨리스는 그녀가 개인 키 를 알고 있다는 영지식 증명을 제공할 수 있다. 가 되도록 에 대한 지식을 증명하기 위한 (앨리스와 밥 사이의) 영지식 프로토콜은 다음과 같다:
알고리즘(키 증명 방법 3)
셋업:
시스템의 공개적으로 알려진 공유 파라미터들은 E(그룹), n(차수), G(EC 생성기 포인트)이다.
방법:
2. 앨리스는 W를 밥에게 전송한다.
a. 참인 경우, 증명이 유효하다.
b. 거짓인 경우, 증명이 무효이다.
단계들 1-5는 도 11에서 예시되며, 여기서 굵게 강조된 모든 값들은 비밀로 유지되고 밑줄이 그어진 모든 값들은 드러나고/공개적이다.
검증의 완성도:
r 및 c가 주어지면, 단계 5의 방정식의 LHS가 RHS와 동일하다는 것이 체크될 수 있다
유한 필드 타원 곡선들의 대수적 속성들로 인해, 개인 키를 안전하게 마스킹하고 여전히 타원 곡선 연산들을 사용하여 소유권을 증명하는 것이 용이하다. 그러나 에 대한 영지식 증명의 부가적인 중요한 특징들은 랜덤 챌린지의 발급자(밥)만이 증명을 통해 확신될 수 있다는 것이다.
그 이유는 W, c, r이 생성/수신되는 순서(W→c→r)가 증명 그 자체의 부분이기 때문이다. 즉, 랜덤 및 을 선택하고 그 후 검증 방정식(단계 5)이 참으로서 유효성 검증되도록 W를 계산하는 것은 용이하다. 결과적으로, 밥은 앨리스에 의해 생성된 데이터를 취할 수 없고 앨리스가 을 알고 있다는 사실을 다른 사람에게 확신시킬 수 없다. 이는, 메시지에 대한 단일 서명이 서명자가 개인 키를 소유하고 있음을 다수의 검증자들에게 확신시킬 수 있는 디지털 서명과 다르다.
확장들
PKI 온 체인
블록체인은 CA 키들 및 루트 인증서를 공개적으로 등록하는데 사용될 수 있다. 현재의 3가지 핵심 PKI 표준은 블록체인 아키텍처에 고유한 트랜잭션 입력들 및 출력들을 사용하여 블록체인 상에서 쉽게 복제될 수 있다.
CA PKI 온 체인
이 방법에서, CA가 다수의 개인/공개 키 쌍들을 생성할 수 있는 지갑을 갖는다는 것이 가정될 것이다. 디지털 인증서들을 발급을 위한 PKI는 3개의 키들을 요구한다:
CA는 블록체인 트랜잭션들을 사용하여 계층에서 이 3개의 키들을 링크할 수 있다.
도 13 내지 도 15는 블록체인 상에서 트랜잭션들을 사용하기 위한 방법을 예시하고 및 간의 링크를 설명한다. 루트 키를 포함하는 트랜잭션은 OP_RETURN 또는 ScriptPubKey 그 자체에 루트 인증서를 포함해야 한다(OP_PUSHDATAx<Certificate byte size><Certificate> OP_DROP). 루트 인증서는 자체 서명되므로, 이는 블록체인과 독립적으로 검증될 수 있는 데이터, 즉 루트 공개 키가 발견될 수 있는 CA에 대한 웹사이트를 포함해야 한다.
등록:
단계 1: CA는 도 14에 도시된 바와 같이, 에 의해 서명된 하나의 입력 및 3개의 출력들을 갖는 트랜잭션 Tx1을 생성한다. 하나의 출력은 에 의해 소비될 수 있고 폐기 도구를 제공한다. 제2 출력은 하위 키 를 포함하는 P2PK(Pay-to-public-key)이다. 이는 하위 키에 서명하는 것과 동일하다는 점이 주의되어야 한다. 제3 출력은 루트 인증서의 직렬화된 형태를 포함하는 OP_RETURN이다.
단계 2: 를 등록하기 위해, CA는 도 15에 도시된 바와 같이, 하나의 입력이 Tx1로부터의 제2 출력을 소비하는, 에 의해 서명되는 트랜잭션 Tx2을 생성한다. Tx2에는 3개의 출력들을 갖는다. 제1 출력은 에 의해 소비될 수 있고 폐기 도구를 제공한다. 제2 출력은 하위 키 를 포함하는 P2PK(Pay-to-public-key)이다. 이는 발급 키에 서명하는 것과 동일하며 발급 키를 루트 키에 증명 가능하게 링크한다는 것이 주의되어야 한다. 제3 출력은 중간 키 등록 인증서의 직렬화된 형태를 포함하는 OP_RETURN이다.
단계 3: 최종 단계로서, CA는 하나의 입력이 Tx2로부터의 제2 출력을 소비하는, 에 의해 서명되는 도 13에 도시된 Tx3을 생성함으로써 에 등록한다. Tx3은 2개의 출력들을 갖는다. 첫째는 키 폐기의 경우에 에 의해 소비될 수 있다. 둘째는 CA 데이터를 포함하는 발급 키 등록 인증서의 직렬화된 형태를 포함하는 OP_RETURN이다.
단계 4: 모든 3개의 트랜잭션들은 블록체인 상에 게시된다. 대응하는 소비되지 않은 출력들은 UTXO 세트에서 발견될 수 있다. 트랜잭션들은 함께 블록체인 PKI 신뢰 체인을 형성한다.
루트 인증서 메타데이터는 Tx1의 OP_RETURN에 포함된다. 전체 Tx(OP_RETURN 데이터를 포함함)는 루트 키에 의해 서명된다. 중간 인증서 메타데이터는 Tx2의 OP_RETURN에 포함되며 하위 키에 의해 서명된다.
검증:
디지털 인증서에 의한 승인을 요구하는 임의의 후속 트랜잭션에 대해, 등록 증명은 UTXO 세트의 3개 아웃포인트들에 대한 108-바이트 참조가 된다. 이 참조로부터, 어느 누구는 (블록체인을 통해) 를 및 루트 인증서에 링크하는 경로를 구성할 수 있으며, 이는 차례로 신뢰된 CA와 연관될 수 있다.
단계 1: 검증자는 각각의 트랜잭션(Tx1-3)으로부터의 출력 1이 UTXO 세트에 있다는 것을 체크한다. 3개의 아웃포인트들 중 임의의 것이 존재하지 않는 경우, 유효성 검증은 실패한다.
단계 2: 그 후, 검증자는 Tx1-3에 대한 전체 트랜잭션 데이터를 요청하고 다음을 체크한다:
I. Tx3에 대한 입력은 Tx2로부터의 출력 2를 소비한다.
II. Tx2에 대한 입력은 Tx1로부터의 출력 2를 소비한다.
단계 3: 그 후 검증자는 루트 인증서를 조사하기 위해 Tx1의 OP_RETURN의 데이터를 파싱한다(디지털 인증서를 16진수 데이터로 인코딩하기 위한 실제 방법은 여기에서 설명되지 않지만 다수의 방법들이 존재함).
루트 인증서는 신뢰의 기초를 형성하고 일부 차단 메커니즘을 통해 신뢰할 수 있게 된다. 비-블록체인 관련 보안 데이터와 함께 CA에 관한 정보가 여기에 포함되어야 한다.
폐기
PKI 계층 내에서 임의의 키를 폐기하기 위해, CA는 단순히 그 키에 의해 서명된 트랜잭션으로부터의 출력 1을 소비할 필요가 있다. 이는 UTXO 세트로부터 등록의 증거를 포함하는 트랜잭션에 대한 임의의 참조를 제거할 것이고 이에 따라 UTXO 세트를 검색함으로써 이루어진 키의 검증은 실패할 것이다.
계층 내의 임의의 키의 폐기는 더 아래의 모든 키들의 폐기를 초래할 것이란 점이 주의되어야 한다. 이는, UTXO 세트로부터 임의의 등록 Tx 참조의 제거가 그 키로부터 루트 키로의 링크 및 루트 인증서를 파괴하기 때문이다.
분석
블록체인 트랜잭션들에 대한 OP_RETURN 출력들 및 서명들을 UTXO 멤버십과 결합하는 것은 키/인증서 계층들을 블록체인에 매핑하는 안전하고 저렴한 방식을 제공한다. 도 16은 CA 신뢰 체인의 인증서들에 대한 키 필드들의 목록 및 블록체인 PKI의 Tx 내의 그의 유사체들을 도시한다. 도 13은 블록체인 PKI의 신뢰 체인을 도시한다.
사용 사례들
특수 SPV(simplified payment verification) 노드들
사용자들이 지갑들을 '실세계' 아이덴티티 데이터에 링크하는 것을 가능하게 하는 것은 디지털 자산들에 대한 대가로 서비스들을 제공할 수 있는 전문 SPV 노드들을 설정하는 가능성을 연다. 예컨대, 토큰화된 프로토콜은, 블록체인 트랜잭션들의 형태로 요청들을 프로세싱하고 응답들을 발급하는 특수 노드 소프트웨어를 갖지만 그의 주요 작업은 토큰 자산들의 자동화된 관리이다.
특수 SPV 노드는 디지털 서명을 그의 CTX에 대한 참조를 제공함으로써 임의의 상호작용의 시작 시에 고객에게 그 자신을 쉽게 식별시킬 수 있다. 결과적으로 고객은 항상, 이 노드에 의해 사용되는 공개 키의 진위를 독립적으로 검증할 수 있다. 이는 상호작용들이 높은 값 전달들을 요구하거나 특수 노드로 전송되는 정보가 민감한 경우 특히 중요하다.
예컨대, 서비스 제공자(샘)가 고객(캐롤l)에게 그, 자신을 식별시킬 수 있게 되기를 원한다고 하자. 방법의 고-레벨 설명은 다음과 같다:
서비스 제공자들에 대한 아이덴티티 검증
단계 1: 발급 CA는 샘을 그의 공개 키에 링크하는 CTX를 생성한다. 이 인증서는 보증 기관 PKI 계층에 대한 참조와 함께 샘의 아이덴티티 데이터를 포함한다. 인증서 발급자는 신뢰되는 제3자이고 모든 사람이 발급자의 루트 인증서를 인증할 수 있다는 것이 가정된다.
단계 2: 캐롤은 샘에게 임의의(랜덤) 메시지를 전송함으로써 샘과의 상호작용을 시작한다.
단계 3: 서비스 제공자는 자신을 식별시키기 위해, CTX를 참조하는 32-바이트 TXID와 함께 캐롤에 의해 전송된 메시지에 대한 ECDSA 서명을 제공한다.
단계 4: 캐롤은 CTX를 리트리브하고 디지털 인증서의 공개 키를 사용하여 서명을 체크함으로써 샘의 아이덴티티를 검증할 수 있다.
이 방법은 아래 도 17에서 예시된다.
이제 도 18을 참조하면, 본 개시의 적어도 하나의 실시예를 실행하는데 사용될 수 있는 컴퓨팅 디바이스(2600)의 예시적이고 단순화된 블록도가 제공된다. 다양한 실시예들에서, 컴퓨팅 디바이스(2600)는 위에서 예시되고 설명된 시스템들 중 임의의 것을 구현하는 데 사용될 수 있다. 예컨대, 컴퓨팅 디바이스(2600)는 데이터 서버, 웹 서버, 휴대용 컴퓨팅 디바이스, 개인용 컴퓨터, 또는 임의의 전자 컴퓨팅 디바이스로서 사용을 위해 구성될 수 있다. 도 18에 도시된 바와 같이, 컴퓨팅 디바이스(2600)는 하나 이상의 레벨들의 캐시 메모리 및 메인 메모리(2608) 및 영구 저장소(2610)를 포함하는 저장 서브시스템(2606)과 통신하도록 구성될 수 있는 메모리 제어기를 갖는 하나 이상의 프로세서들(집합적으로 2602로 라벨링됨)을 포함할 수 있다. 메인 메모리(2608)는 도시된 바와 같이 동적 랜덤 액세스 메모리(DRAM)(2618) 및 판독 전용 메모리(ROM)(2620)를 포함할 수 있다. 저장 서브시스템(2606) 및 캐시 메모리(2602)는 본 개시에서 설명된 바와 같이 트랜잭션들 및 블록들과 연관된 세부사항들과 같은 정보의 저장을 위해 사용될 수 있다. 프로세서(들)(2602)는 본 개시에서 설명된 바와 같은 임의의 실시예의 기능성 또는 단계들을 제공하기 위해 활용될 수 있다.
프로세서(들)(2602)는 또한 하나 이상의 사용자 인터페이스 입력 디바이스들(2612), 하나 이상의 사용자 인터페이스 출력 디바이스들(2614) 및 네트워크 인터페이스 서브시스템(2616)과 통신할 수 있다.
버스 서브시스템(2604)은 컴퓨팅 디바이스(2600)의 다양한 구성요소들 및 서브시스템들이 의도된 대로 서로 통신하는 것을 가능하게 하기 위한 메커니즘을 제공할 수 있다. 버스 서브시스템(2604)은 단일 버스로서 개략적으로 도시되지만, 버스 서브시스템의 대안적인 실시예들은 다수의 버스들을 활용할 수 있다.
네트워크 인터페이스 서브시스템(2616)은 다른 컴퓨팅 디바이스들 및 네트워크들에 대한 인터페이스를 제공할 수 있다. 네트워크 인터페이스 서브시스템(2616)은 다른 시스템들로부터 컴퓨팅 디바이스(2600)로 데이터를 수신하고 컴퓨팅 디바이스(2600)로부터 다른 시스템들로 데이터를 송신하기 위한 인터페이스 역할을 할 수 있다. 예컨대, 네트워크 인터페이스 서브시스템(2616)은 데이터 기술자(data technician)가 디바이스를 네트워크에 연결하는 것을 가능하게 할 수 있어서, 데이터 기술자는 데이터 센터와 같은 원격 위치에 있으면서 디바이스로 데이터를 송신하고 디바이스로부터 데이터를 수신할 수 있을 수 있다.
사용자 인터페이스 입력 디바이스들(2612)은 하나 이상의 사용자 입력 디바이스들 이를테면, 키보드; 통합 마우스, 트랙볼, 터치패드 또는 그래픽 태블릿과 같은 포인팅 디바이스; 스캐너; 바코드 스캐너; 디스플레이에 통합된 터치스크린; 음성 인식 시스템들, 마이크로폰들과 같은 오디오 입력 디바이스들; 및 다른 유형들의 입력 디바이스들을 포함할 수 있다. 일반적으로, "입력 디바이스"라는 용어의 사용은 컴퓨팅 디바이스(2600)에 정보를 입력하기 위한 모든 가능한 유형들의 디바이스들 및 메커니즘들을 포함하도록 의도된다.
하나 이상의 사용자 인터페이스 출력 디바이스들(2614)은 디스플레이 서브시스템, 프린터, 또는 비-시각적 디스플레이 이를테면, 오디오 출력 디바이스 등을 포함할 수 있다. 디스플레이 서브시스템은 음극선관(CRT), 평면 패널 디바이스 이를테면, 액정 디스플레이(LCD), 발광 다이오드(LED) 디스플레이, 또는 프로젝션 또는 다른 디스플레이 디바이스일 수 있다. 일반적으로, "출력 디바이스"라는 용어의 사용은 컴퓨팅 디바이스(2600)로부터 정보를 출력하기 위한 모든 가능한 유형들의 디바이스들 및 메커니즘들을 포함하도록 의도된다. 하나 이상의 사용자 인터페이스 출력 디바이스들(2614)은, 예컨대, 설명된 프로세스들 및 변형들을 내부에서 수행하는 애플리케이션과의 사용자 상호작용이 적절할 수 있을 때 그러한 상호작용을 용이하게 하기 위한 사용자 인터페이스를 제시하는 데 사용될 수 있다.
저장 서브시스템(2606)은 본 개시의 적어도 하나의 실시예의 기능성을 제공할 수 있는 기본 프로그래밍 및 데이터 구조들을 저장하기 위한 컴퓨터-판독 가능 저장 매체를 제공할 수 있다. 하나 이상의 프로세서들에 의해 실행될 때, 애플리케이션들(프로그램들, 코드 모듈들, 명령들)은 본 개시의 하나 이상의 실시예들의 기능성을 제공할 수 있고, 저장 서브시스템(2606)에 저장될 수 있다. 이러한 애플리케이션 모듈들 또는 명령들은 하나 이상의 프로세서들(2602)에 의해 실행될 수 있다. 저장 서브시스템(2606)은 본 개시에 따라 사용되는 데이터를 저장하기 위한 저장소를 부가적으로 제공할 수 있다. 예컨대, 메인 메모리(2608) 및 캐시 메모리(2602)는 프로그램 및 데이터를 위한 휘발성 저장소를 제공할 수 있다. 영구 저장소(2610)는 프로그램 및 데이터를 위한 영구(비-휘발성) 저장소를 제공할 수 있으며, 플래시 메모리, 하나 이상의 솔리드 스테이트 드라이브들, 하나 이상의 자기 하드 디스크 드라이브들, 연관된 이동식 매체들을 갖는 하나 이상의 플로피 디스크 드라이브들, 연관된 이동식 매체들을 갖는 하나 이상의 광학 드라이브들(예컨대, CD-ROM 또는 DVD 또는 블루레이 드라이브) 및 다른 유사한 저장 매체들을 포함할 수 있다. 이러한 프로그램 및 데이터는 본 개시에 설명된 바와 같은 트랜잭션들 및 블록들과 연관된 데이터뿐만 아니라 본 개시에 설명된 바와 같은 하나 이상의 실시예들의 단계들을 수행하기 위한 프로그램들을 포함할 수 있다.
컴퓨팅 디바이스(2600)는 휴대용 컴퓨터 디바이스, 태블릿 컴퓨터, 워크스테이션, 또는 아래에서 설명되는 임의의 다른 디바이스를 포함하는 다양한 유형들로 이루어질 수 있다. 부가적으로, 컴퓨팅 디바이스(2600)는 하나 이상의 포트들(예컨대, USB, 헤드폰 잭, 라이트닝 커넥터 등)을 통해 컴퓨팅 디바이스(2600)에 연결될 수 있는 다른 디바이스를 포함할 수 있다. 컴퓨팅 디바이스(2600)에 연결될 수 있는 디바이스는 광섬유 커넥터들을 수용하도록 구성된 복수의 포트들을 포함할 수 있다. 따라서, 이 디바이스는 프로세싱을 위해 컴퓨팅 디바이스(2600)에 디바이스를 연결하는 포트를 통해 송신될 수 있는 전기 신호들로 광학 신호들을 변환하도록 구성될 수 있다. 컴퓨터들 및 네트워크들의 끊임없이 변하는 성질로 인해, 도 18에 도시된 컴퓨팅 디바이스(2600)의 설명은 디바이스의 바람직한 실시예를 예시하기 위한 특정 예로서만 의도된다. 도 18에 도시된 시스템보다 더 많거나 더 적은 구성요소들을 갖는 다수의 다른 구성들이 가능하다.
위에서 언급된 실시예들은 본 발명을 제한하기보다는 예시하고, 당업자는 첨부된 청구항들에 의해 정의된 바와 같은 본 발명의 범위로부터 벗어남이 없이 다수의 대안적인 실시예들을 설계할 수 있을 것이란 점이 주의되어야 한다. 청구항들에서, 괄호 안의 배치된 임의의 참조 부호들은 청구항들을 제한하는 것으로 해석되어서는 안 된다. "포함하는(comprising)" 및 "포함하다(comprises)" 등의 단어는 전체로서 명세서 또는 임의의 청구항에 나열된 것들 이외의 요소들 또는 단계들의 존재를 배제하지 않는다. 본 명세서에서, "포함하다(comprises)"는 "포함하거나 구성된다(includes or consists of)"를 의미하고 "포함하는(comprising)"은 "포함하거나 구성되는(including or consisting of)"을 의미한다. 요소의 단수 참조는 그러한 요소들의 복수 참조를 배제하지 않으며 그 반대의 경우도 마찬가지이다. 본 발명은 여러 별개의 요소들을 포함하는 하드웨어에 의해 그리고 적합하게 프로그래밍된 컴퓨터에 의해 구현될 수 있다. 여러 수단들을 열거하는 디바이스 청구항에서, 이들 수단들 중 여러 개는 하나의 그리고 동일한 하드웨어 아이템에 의해 구체화될 수 있다. 소정의 측정들이 서로 상이한 종속 청구항들에서 인용된다는 단순한 사실만으로 이 측정들의 결합이 유리하게 사용될 수 없다는 것을 나타내는 것은 아니다.
열거된 예시적 실시예들
본 개시의 실시예들의 예들은 다음 조항들의 관점에서 설명될 수 있다:
1.
블록체인 상에 보증된 데이터를 저장하는 방법으로서,
제1 블록체인 트랜잭션을 생성하는 단계 ― 상기 제1 블록체인 트랜잭션의 제1 출력은 암호화 시스템의 제1 개인/공개 키 쌍의 제1 공개 키에 기초한 제1 데이터를 포함하며, 제1 개인/공개 키 쌍은 제1 개인 키 및 제1 공개 키를 포함하고, 제1 블록체인 트랜잭션은 암호화 시스템의 제2 개인/공개 키 쌍의 제2 개인 키에 의해 서명된 제1 디지털 서명을 포함하고, 제2 개인/공개 키 쌍은 제2 개인 키 및 제2 공개 키를 포함하고, 제1 디지털 서명은 상기 제1 공개 키와 관련된 제2 데이터를 포함하는 입력을 가짐 ― ; 및
제1 블록체인 트랜잭션을 상기 블록체인에 브로드캐스트하는 단계를 포함하는,
블록체인 상에 보증된 데이터를 저장하는 방법.
2.
조항 1에 따른 방법에 있어서,
적어도 하나의 제2 블록체인 트랜잭션을 생성하는 단계 ― 상기 제2 블록체인 트랜잭션의 제1 출력은 암호화 시스템의 제3 개인/공개 키 쌍의 제3 공개 키에 기초한 제3 데이터를 포함하며, 제3 개인/공개 키 쌍은 제3 개인 키 및 제3 공개 키를 포함하고, 제2 블록체인 트랜잭션은 암호화 시스템의 제4 개인/공개 키 쌍의 제4 개인 키에 의해 서명된 제2 디지털 서명을 포함하고, 제4 개인/공개 키 쌍은 제4 개인 키 및 제4 공개 키를 포함하고, 제2 디지털 서명은 상기 제3 공개 키와 관련된 제4 데이터를 포함하는 입력을 가짐 ― ; 및
제2 블록체인 트랜잭션을 블록체인에 브로드캐스트하는 단계를 더 포함하는,
블록체인 상에 보증된 데이터를 저장하는 방법.
3.
조항 2에 따른 방법에 있어서,
제2 블록체인 트랜잭션의 제1 출력은 제3 데이터, 제4 데이터 및 제2 디지털 서명을 포함하고, 제2 디지털 서명은 제3 데이터를 포함하는 입력을 갖는,
블록체인 상에 보증된 데이터를 저장하는 방법.
4.
조항 2 또는 조항 3에 따른 방법에 있어서,
제2 블록체인 트랜잭션의 입력은 제1 블록체인 트랜잭션의 출력에 대응하는,
블록체인 상에 보증된 데이터를 저장하는 방법.
5. 조항 4에 따른 방법에 있어서,
상기 제2 블록체인 트랜잭션의 상기 입력은 제2 개인 키에 의해 서명된 디지털 서명을 포함하는,
블록체인 상에 보증된 데이터를 저장하는 방법.
6. 조항 2 내지 조항 5 중 어느 한 조항에 따른 방법에 있어서,
제4 데이터는 제2 블록체인 트랜잭션의 제1 출력에 포함되고 제3 공개 키와 관련된 데이터에 단방향 함수를 적용함으로써 도출되는,
블록체인 상에 보증된 데이터를 저장하는 방법.
7. 조항 2 내지 조항 6 중 어느 한 조항에 따른 방법에 있어서,
상기 제2 블록체인 트랜잭션의 제2 출력은 미리 결정된 공개 키에 대응하는 개인 키에 의해 소비 가능하며, 상기 미리 결정된 공개 키는 상기 제4 공개 키와 상이한,
블록체인 상에 보증된 데이터를 저장하는 방법.
8. 조항 2 내지 조항 7 중 어느 한 조항에 따른 방법에 있어서,
제3 공개/개인 키 쌍 및 결정론적 개인/공개 키 쌍으로부터 적어도 하나의 추가 공개/개인 키 쌍을 생성하는 단계를 더 포함하는,
블록체인 상에 보증된 데이터를 저장하는 방법.
9. 조항 2 내지 조항 8 중 어느 한 조항에 따른 방법에 있어서,
제2 블록체인 트랜잭션의 제3 출력은 미리 결정된 공개 키에 대응하는 개인 키에 의해 소비 가능한,
블록체인 상에 보증된 데이터를 저장하는 방법.
10. 조항 9에 따른 방법에 있어서,
제2 블록체인 트랜잭션의 제3 출력은 시간-잠금되는,
블록체인 상에 보증된 데이터를 저장하는 방법.
11.
조항 2 내지 조항 10 중 어느 한 조항에 따른 방법에 있어서,
제1 공개 키 및 제4 공개 키는 동일한 공개 키인,
블록체인 상에 보증된 데이터를 저장하는 방법.
12.
조항 2 내지 조항 10 중 어느 한 조항에 따른 방법에 있어서,
제2 공개 키 및 제4 공개 키는 동일한 공개 키인,
블록체인 상에 보증된 데이터를 저장하는 방법.
13.
조항 2 내지 조항 12 중 어느 한 조항에 따른 방법에 있어서,
상기 제3 데이터는 상기 제3 공개 키를 포함하는 데이터에 단방향 함수를 적용함으로써 도출되는,
블록체인 상에 보증된 데이터를 저장하는 방법.
14.
조항 1 내지 조항 13 중 어느 한 조항에 따른 방법에 있어서,
상기 제1 데이터는 상기 제1 공개 키를 포함하는 데이터에 단방향 함수를 적용함으로써 도출되는,
블록체인 상에 보증된 데이터를 저장하는 방법.
15. 조항 1 내지 조항 14 중 어느 한 조항에 따른 방법에 있어서,
업데이트된 제1 블록체인 트랜잭션을 생성하는 단계 ― 업데이트된 제1 블록체인 트랜잭션의 제1 출력은 업데이트된 제1 공개 키에 기초한 업데이트된 제1 데이터를 포함하고, 업데이트된 제1 블록체인 트랜잭션은 상기 제2 개인 키에 의해 서명된 업데이트된 제1 디지털 서명을 포함하고, 업데이트된 제1 디지털 서명은 상기 업데이트된 제1 공개 키와 관련된 업데이트된 제2 데이터를 포함하는 입력을 가짐 ― ; 및
상기 업데이트된 제1 블록체인 트랜잭션을 블록체인에 브로드캐스트하는 단계를 더 포함하는,
블록체인 상에 보증된 데이터를 저장하는 방법.
16. 조항 15에 따른 방법에 있어서,
업데이트된 제1 블록체인 트랜잭션의 제1 출력은 업데이트된 제1 데이터, 업데이트된 제2 데이터 및 업데이트된 제1 디지털 서명을 포함하고, 업데이트된 제1 디지털 서명은 업데이트된 제2 데이터를 포함하는 입력을 갖는,
블록체인 상에 보증된 데이터를 저장하는 방법.
17. 조항 1 내지 조항 16 중 어느 한 조항에 따른 방법에 있어서,
제1 블록체인 트랜잭션의 제1 출력은 제1 데이터, 제2 데이터 및 제1 디지털 서명을 포함하고, 제1 디지털 서명은 상기 제2 데이터를 포함하는 입력을 갖는,
블록체인 상에 보증된 데이터를 저장하는 방법.
18. 조항 1 내지 조항 17 중 어느 한 조항에 따른 방법에 있어서,
제2 데이터는 제1 블록체인 트랜잭션의 제1 출력에 포함되고 제1 공개 키와 관련된 데이터에 단방향 함수를 적용함으로써 도출되는,
블록체인 상에 보증된 데이터를 저장하는 방법.
19. 조항 1 내지 조항 18 중 어느 한 조항에 따른 방법에 있어서,
상기 제1 블록체인 트랜잭션의 제2 출력은 미리 결정된 공개 키에 대응하는 개인 키에 의해 소비 가능하며, 상기 미리 결정된 공개 키는 상기 제2 공개 키와 상이한,
블록체인 상에 보증된 데이터를 저장하는 방법.
20. 조항 1 내지 조항 19 중 어느 한 조항에 따른 방법에 있어서,
적어도 하나의 상기 제1 출력은 소비 불가능한 출력인,
블록체인 상에 보증된 데이터를 저장하는 방법.
21. 조항 1 내지 조항 20 중 어느 한 조항에 따른 방법에 있어서,
제1 블록체인 트랜잭션의 제1 입력은 제2 개인 키에 의해 서명된 디지털 서명을 포함하는,
블록체인 상에 보증된 데이터를 저장하는 방법.
22. 조항 1 내지 조항 21 중 어느 한 조항에 따른 방법에 있어서,
상기 제1 블록체인 트랜잭션의 제2 출력은 미리 결정된 공개 키에 대응하는 개인 키에 의해 소비 가능한,
블록체인 상에 보증된 데이터를 저장하는 방법.
23. 조항 22에 따른 방법에 있어서,
제1 블록체인 트랜잭션의 제2 출력은 시간-잠금되는,
블록체인 상에 보증된 데이터를 저장하는 방법.
24. 조항 1 내지 조항 23 중 어느 한 조항에 따른 방법에 있어서,
상기 제1 블록체인 트랜잭션의 제3 출력은 미리 결정된 공개 키에 대응하는 개인 키에 의해 소비 가능하며, 상기 미리 결정된 공개 키는 상기 제2 공개 키와 상이한,
블록체인 상에 보증된 데이터를 저장하는 방법.
25. 조항 1 내지 조항 24 중 어느 한 조항에 따른 방법에 있어서,
제1 공개/개인 키 쌍 및 결정론적 개인/공개 키 쌍으로부터 적어도 하나의 추가 공개/개인 키 쌍을 생성하는 단계를 더 포함하는,
블록체인 상에 보증된 데이터를 저장하는 방법.
26. 조항 8 또는 조항 25에 따른 방법에 있어서,
적어도 하나의 상기 추가 개인 키 및 대응하는 결정론적 개인 키에 의해 서명된 디지털 서명들을 제공하는 단계를 더 포함하는,
블록체인 상에 보증된 데이터를 저장하는 방법.
27.
조항 8 또는 조항 25에 따른 방법에 있어서,
적어도 하나의 상기 추가 개인 키에 의해 서명된 디지털 서명을 제공하고 대응하는 결정론적 개인 키와 관련된 데이터를 제공하는 단계를 더 포함하는,
블록체인 상에 보증된 데이터를 저장하는 방법.
28.
조항 27에 따른 방법에 있어서,
대응하는 결정론적 개인 키는 대응하는 결정론적 개인 키와 관련된 데이터에 단방향 함수를 적용함으로써 도출되는,
블록체인 상에 보증된 데이터를 저장하는 방법.
29. 조항 8 또는 조항 25 내지 조항 28 중 어느 한 조항에 따른 방법에 있어서,
결정론적 키의 암호화된 버전 및 검증자에 의해 선택된 값에 기초하여, 상기 결정론적 개인 키에 대한 지식 증명(proof of knowledge)을 검증자에게 제공하는 단계를 더 포함하는,
블록체인 상에 보증된 데이터를 저장하는 방법.
30. 조항 1 내지 조항 29 중 어느 한 조항에 따른 방법에 있어서,
제1 당사자의 개인 키 및 제2 당사자의 공개 키에 기초하여 제1 및 제2 당사자들 간에 비밀 값을 공유하는 단계를 더 포함하고,
비밀은 또한 제1 당사자의 공개 키 및 제2 당사자의 개인 키로부터 결정될 수 있는,
블록체인 상에 보증된 데이터를 저장하는 방법.
31. 조항 1 내지 조항 30 중 어느 한 조항에 따른 방법에 있어서,
데이터에 대한 단방향 함수의 반복된 적용에 의해 복수의 결정론적 키들을 생성하는 단계를 더 포함하는,
블록체인 상에 보증된 데이터를 저장하는 방법.
32. 조항 31에 따른 방법에 있어서,
업데이트될 개인 키는 업데이트된 키에 대한 단방향 함수의 적용에 기초하는,
블록체인 상에 보증된 데이터를 저장하는 방법.
33. 조항 1 내지 조항 32 중 어느 한 조항에 따른 방법에 있어서,
제1 블록체인 트랜잭션의 제1 출력은 데이터 오프체인(data off-chain)의 로케이션을 표시하기 위한 로케이션 데이터를 포함하는,
블록체인 상에 보증된 데이터를 저장하는 방법.
34. 블록체인 트랜잭션에 저장된 보증된 데이터를 검증하는 방법으로서,
(i) 암호화 시스템의 제1 개인/공개 키 쌍의 제1 공개 키에 기초한 제1 데이터 및 (ii) 블록체인 트랜잭션에 저장된 제1 디지털 서명을 식별하는 단계 ― 제1 개인/공개 키 쌍은 제1 개인 키 및 제1 공개 키를 포함하고, 상기 블록체인 트랜잭션의 제1 출력은 상기 제1 데이터를 포함하고, 상기 제1 디지털 서명은 암호화 시스템의 제2 개인/공개 키 쌍의 제2 개인 키에 의해 서명되고, 제2 개인/공개 키 쌍은 제2 개인 키 및 제2 공개 키를 포함하고, 제1 디지털 서명은 상기 제1 공개 키와 관련된 제2 데이터를 포함하는 입력을 가짐 ― ; 및
상기 제2 공개 키에 의해 상기 제1 디지털 서명을 검증하는 단계를 포함하는,
블록체인 트랜잭션에 저장된 보증된 데이터를 검증하는 방법.
35. 조항 34에 따른 방법에 있어서,
블록체인 트랜잭션의 제1 출력은 제1 데이터, 제2 데이터 및 제1 디지털 서명을 포함하고, 제1 디지털 서명은 상기 제1 데이터를 포함하는 입력을 갖는,
블록체인 트랜잭션에 저장된 보증된 데이터를 검증하는 방법.
36. 조항 34 또는 조항 35에 따른 방법에 있어서,
적어도 하나의 상기 제1 출력은 소비 불가능한 출력이고, 방법은 상기 소비 불가능한 출력으로부터 상기 제1 디지털 서명 및 상기 제1 공개 키를 식별하는 단계를 더 포함하는,
블록체인 트랜잭션에 저장된 보증된 데이터를 검증하는 방법.
37. 조항 34 내지 조항 36 중 어느 한 조항에 따른 방법에 있어서,
제2 데이터는 블록체인 트랜잭션의 제1 출력에 포함되고 제1 공개 키와 관련된 데이터에 단방향 함수를 적용함으로써 도출되고, 방법은 상기 제2 데이터 및 제1 출력에 포함된 상기 데이터를 식별하는 단계, 및 상기 단방향 함수를 제1 출력에 포함된 상기 데이터에 적용하고 결과 데이터가 상기 제1 데이터에 대응한다는 것을 검증하는 단계를 더 포함하는,
블록체인 트랜잭션에 저장된 보증된 데이터를 검증하는 방법.
38. 조항 34 내지 조항 37 중 어느 한 조항에 따른 방법에 있어서,
상기 트랜잭션에 대응하는 블록체인 상의 식별 데이터에 의해 상기 블록체인 트랜잭션을 식별하는 단계를 더 포함하는,
블록체인 트랜잭션에 저장된 보증된 데이터를 검증하는 방법.
39.
조항 34 내지 조항 38 중 어느 한 조항에 따른 방법에 있어서,
상기 제1 데이터는 상기 제1 공개 키에 기초한 데이터에 단방향 함수를 적용함으로써 도출되는,
블록체인 트랜잭션에 저장된 보증된 데이터를 검증하는 방법.
40. 조항 34 내지 조항 39 중 어느 한 조항에 따른 방법에 있어서,
블록체인 트랜잭션이 소비되지 않았는지를 결정하는 단계를 더 포함하는,
블록체인 트랜잭션에 저장된 보증된 데이터를 검증하는 방법.
41.
조항 34 내지 조항 40 중 어느 한 조항에 따른 방법에 있어서,
상기 제1 디지털 서명은 블록체인에 대한 블록체인 트랜잭션의 제출에 후속적으로 상기 제2 공개 키에 의해 검증되는,
블록체인 트랜잭션에 저장된 보증된 데이터를 검증하는 방법.
42. 제1 참가자와 제2 참가자 사이에서 암호화 시스템의 공개 키를 공유하는 방법으로서,
제1 참가자는 준동형 속성을 갖는 암호화 시스템의 제1 공개 키 및 제1 개인 키를 포함하는 제1 개인/공개 키 쌍의 제1 개인 키를 갖고, 제2 참가자는 암호화 시스템의 제2 공개 키 및 제2 개인 키를 포함하는 제2 개인/공개 키 쌍의 제2 개인 키를 갖고, 제1 디지털 서명은 제3 개인 키에 의해 서명되며, 제1 디지털 서명은 상기 제1 공개 키와 관련된 제1 데이터를 포함하는 입력을 갖고, 제2 디지털 서명은 제3 개인 키에 의해 서명되며, 제2 디지털 서명은 상기 제2 공개 키와 관련된 제2 데이터를 포함하는 입력을 가지며, 방법은,
상기 제1 참가자에 의해, 상기 제1 개인 키 및 상기 제2 공개 키에 의해 공통 비밀을 결정하는 단계 ― 상기 공통 비밀은 또한 상기 제2 개인 키 및 상기 제1 공개 키에 의해 결정될 수 있음 ― ; 및
상기 제1 참가자에 의해, 제1 공개 키 및 공통 비밀에 기초하여 암호화 시스템의 적어도 하나의 추가 공개 키를 결정하는 단계를 포함하는,
제1 참가자와 제2 참가자 사이에서 암호화 시스템의 공개 키를 공유하는 방법.
43. 조항 42에 따른 방법에 있어서,
암호화 시스템은 타원 곡선 암호화 시스템 또는 디지털 서명 알고리즘에 기초한 암호화 시스템인,
제1 참가자와 제2 참가자 사이에서 암호화 시스템의 공개 키를 공유하는 방법.
44. 조항 42 또는 조항 43에 따른 방법에 있어서,
적어도 하나의 상기 추가 공개 키는 공통 비밀에 기초한 데이터에 대한 결정론적 함수의 적용에 의해 결정되는 결정론적 키 및 제1 공개 키에 기초하여 결정되는,
제1 참가자와 제2 참가자 사이에서 암호화 시스템의 공개 키를 공유하는 방법.
45. 조항 44에 따른 방법에 있어서,
결정론적 함수는 단방향 함수인,
제1 참가자와 제2 참가자 사이에서 암호화 시스템의 공개 키를 공유하는 방법.
46. 조항 44 또는 조항 45에 따른 방법에 있어서,
상기 공통 비밀에 기초한 데이터에 대한 결정론적 함수의 반복된 적용에 의해 결정된 복수의 결정론적 키들 및 제1 공개 키로부터 복수의 상기 추가 공개 키들을 결정하는 단계를 더 포함하는,
제1 참가자와 제2 참가자 사이에서 암호화 시스템의 공개 키를 공유하는 방법.
47.
조항 44 내지 조항 46 중 어느 한 조항에 따른 방법에 있어서,
적어도 하나의 상기 추가 공개 키에 대응하는 개인 키에 의해 서명된 디지털 서명을 제공하고 적어도 하나의 대응하는 상기 결정론적 키와 관련된 데이터를 제공함으로써 제1 개인 키의 소유권을 증명하는 단계를 더 포함하는,
제1 참가자와 제2 참가자 사이에서 암호화 시스템의 공개 키를 공유하는 방법.
48.
조항 47에 따른 방법에 있어서,
적어도 하나의 상기 결정론적 키에 대응하는 개인 키는 대응하는 상기 결정론적 키와 관련된 데이터에 단방향 함수를 적용함으로써 도출되는,
제1 참가자와 제2 참가자 사이에서 암호화 시스템의 공개 키를 공유하는 방법.
49. 조항 42 내지 조항 48 중 어느 한 조항에 따른 방법에 있어서,
영지식 증명(zero knowledge proof)에 의해 상기 제1 개인 키의 소유권을 증명하는 단계를 더 포함하는,
제1 참가자와 제2 참가자 사이에서 암호화 시스템의 공개 키를 공유하는 방법.
50. 조항 42 내지 조항 49 중 어느 한 조항에 따른 방법에 있어서,
준동형 속성을 갖는 암호화 시스템의 개개의 개인 키들에 기초하여 디지털 서명들의 쌍을 제공함으로써 상기 제1 개인 키의 소유권을 증명하는 단계를 더 포함하고, 상기 개개의 개인 키들은 상기 제1 개인 키에 의해 서로 관련되는,
제1 참가자와 제2 참가자 사이에서 암호화 시스템의 공개 키를 공유하는 방법.
51.
조항 42 내지 조항 50 중 어느 한 조항에 따른 방법에 있어서,
상기 제1 디지털 서명은 제1 블록체인 트랜잭션에 포함되는,
제1 참가자와 제2 참가자 사이에서 암호화 시스템의 공개 키를 공유하는 방법.
52.
조항 42 내지 조항 51 중 어느 한 조항에 따른 방법에 있어서,
상기 제2 디지털 서명은 제2 블록체인 트랜잭션에 포함되는,
제1 참가자와 제2 참가자 사이에서 암호화 시스템의 공개 키를 공유하는 방법.
53. 암호화 시스템의 적어도 하나의 개인 키를 생성하는 방법으로서,
제1 디지털 서명은 제2 개인 키에 의해 서명되고, 제1 디지털 서명은 준동형 속성을 갖는 암호화 시스템의 제1 공개 키 및 제1 개인 키를 포함하는 제1 개인/공개 키 쌍의 상기 제1 공개 키와 관련된 제1 데이터를 포함하는 입력을 갖고, 방법은, 제1 개인 키 및 결정론적 개인 키에 기초하여 암호화 시스템의 적어도 하나의 제3 개인 키를 생성하는 단계를 포함하는,
암호화 시스템의 적어도 하나의 개인 키를 생성하는 방법.
54. 조항 53에 따른 방법에 있어서,
암호화 시스템은 타원 곡선 암호화 시스템 또는 디지털 서명 알고리즘에 기초한 암호화 시스템인,
암호화 시스템의 적어도 하나의 개인 키를 생성하는 방법.
55. 조항 53 또는 조항 54에 따른 방법에 있어서,
적어도 하나의 상기 결정론적 개인 키는 데이터에 대한 결정론적 함수의 적용에 의해 결정되는,
암호화 시스템의 적어도 하나의 개인 키를 생성하는 방법.
56. 조항 55에 따른 방법에 있어서,
결정론적 함수는 단방향 함수인,
암호화 시스템의 적어도 하나의 개인 키를 생성하는 방법.
57. 조항 55 또는 조항 56에 따른 방법에 있어서,
데이터에 대한 결정론적 함수의 반복된 적용에 의해 결정된 복수의 상기 결정론적 키들을 결정하는 단계를 더 포함하는,
암호화 시스템의 적어도 하나의 개인 키를 생성하는 방법.
58.
조항 53 내지 조항 57 중 어느 한 조항에 따른 방법에 있어서,
적어도 하나의 상기 제3 개인 키에 의해 서명된 디지털 서명을 제공하고 적어도 하나의 대응하는 상기 결정론적 개인 키와 관련된 데이터를 제공함으로써 상기 제1 개인 키의 소유권을 증명하는 단계를 더 포함하는,
암호화 시스템의 적어도 하나의 개인 키를 생성하는 방법.
59. 조항 53 내지 조항 58 중 어느 한 조항에 따른 방법에 있어서,
영지식 증명에 의해 상기 제1 개인 키의 소유권을 증명하는 단계를 더 포함하는,
암호화 시스템의 적어도 하나의 개인 키를 생성하는 방법.
60. 조항 53 내지 조항 59 중 어느 한 조항에 따른 방법에 있어서,
준동형 속성을 갖는 암호화 시스템의 개개의 개인 키들에 기초하여 디지털 서명들의 쌍을 제공함으로써 상기 제1 개인 키의 소유권을 증명하는 단계를 더 포함하고, 상기 개개의 개인 키들은 상기 제1 개인 키에 의해 서로 관련되는,
암호화 시스템의 적어도 하나의 개인 키를 생성하는 방법.
61.
조항 60에 따른 방법에 있어서,
상기 제1 디지털 서명은 제1 블록체인 트랜잭션에 포함되는,
암호화 시스템의 적어도 하나의 개인 키를 생성하는 방법.
62.
조항 60 또는 조항 61에 따른 방법에 있어서,
상기 제2 디지털 서명은 제2 블록체인 트랜잭션에 포함되는,
암호화 시스템의 적어도 하나의 개인 키를 생성하는 방법.
63. 컴퓨터 구현 시스템으로서,
프로세서; 및
프로세서에 의한 실행의 결과로서, 시스템으로 하여금, 조항 1 내지 조항 62 항 중 어느 한 조항에 청구된 바와 같은 컴퓨터 구현 방법의 임의의 실시예를 수행하게 하는 실행 가능한 명령들을 포함하는 메모리를 포함하는,
컴퓨터 구현 시스템.
64. 실행 가능한 명령들을 저장되어 있는 비-일시적인 컴퓨터 판독 가능 저장 매체로서,
명령들은 컴퓨터 시스템의 프로세서를 통해 실행되는 결과로서, 컴퓨터 시스템으로 하여금, 적어도 조항 1 내지 조항 62 중 어느 한 조항에 청구된 바와 같은 방법의 실시예를 적어도 수행하게 하는,
비-일시적인 컴퓨터 판독 가능 저장 매체.
참고문헌 | 저자, 날짜, 이름 및 위치 |
[1] | "Global Retail E-Commerce Market Size 2014-2021," Statista, 2019. [Online]. Available: https://www.statista.com/statistics/379046/worldwide-retail-e-commerce-sales/ [Accessed 5 June 2019]. |
[2] | [Online]. Available: https://slideplayer.com/slide/4254412/ [Accessed 11 April 2019]. |
[3] | C. Paar and J. Pelzl, Understanding Cryptography, Berlin: Springer, 2010. |
[4] | [Online]. Available: https://en.wikipedia.org/wiki/Certificate_authority [Accessed 11 April 2019]. |
[5] | [Online]. Available: https://letsencrypt.org/getting-started/ [Accessed 11 April 2019]. |
[6] | [Online]. Available: https://premium.wpmudev.org/blog/ssl-certificate-authorities-reviewed/ [Accessed 11 April 2019]. |
[7] | [Online]. Available: https://sachi73blog.wordpress.com/2013/11/21/x509-certificate-asymmetric-encryption-and-digital-signatures/ [Accessed 11 April 2019]. |
[8] | [Online]. Available: https://www.ncipher.com/resources/research-reports-and-white-papers/securing-your-pki [Accessed 11 April 2019]. |
[9] | [Online]. Available: https://www.tutorialspoint.com/cryptography/public_key_infrastructure.htm [Accessed 11 April 2019]. |
[10] | [Online]. Available: https://en.wikipedia.org/wiki/Chain_of_trust#/media/File:Chain_of_trust.svg [Accessed 11 April 2019]. |
[11] | [Online]. Available: https://askubuntu.com/questions/363207/what-is-the-difference-between-the-rsa-dsa-and-ecdsa-keys-that-ssh-uses/363221 [Accessed 11 April 2019]. |
[12] | [Online]. Available: https://security.stackexchange.com/questions/178958/what-are-the-differences-between-the-rsa-dsa-and-ecdsa-keys-that-ssh-uses?noredirect=1&lq=1 [Accessed 11 April 2019]. |
[13] | [Online]. Available: https://www.digicert.com/ecc.htm [Accessed 11 April 2019]. |
[14] | A. M. Antonopoulos, "Chapter 5," in Mastering Bitcoin, California, O’Reilly, 2017, pp. 93-98 |
[15] | [Online]. Available: https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki [Accessed 11 April 2019]. |
Claims (64)
- 블록체인 상에 보증된 데이터를 저장하는 방법으로서,
제1 블록체인 트랜잭션을 생성하는 단계 ― 상기 제1 블록체인 트랜잭션의 제1 출력은 암호화 시스템의 제1 개인/공개 키 쌍의 제1 공개 키에 기초한 제1 데이터를 포함하며, 상기 제1 개인/공개 키 쌍은 제1 개인 키 및 제1 공개 키를 포함하고, 상기 제1 블록체인 트랜잭션은 암호화 시스템의 제2 개인/공개 키 쌍의 제2 개인 키에 의해 서명된 제1 디지털 서명을 포함하고, 상기 제2 개인/공개 키 쌍은 제2 개인 키 및 제2 공개 키를 포함하고, 상기 제1 디지털 서명은 상기 제1 공개 키와 관련된 제2 데이터를 포함하는 입력을 가짐 ― ; 및
상기 제1 블록체인 트랜잭션을 상기 블록체인에 브로드캐스트(broadcast)하는 단계를 포함하는,
블록체인 상에 보증된 데이터를 저장하는 방법. - 제1 항에 있어서,
적어도 하나의 제2 블록체인 트랜잭션을 생성하는 단계 ― 상기 제2 블록체인 트랜잭션의 제1 출력은 암호화 시스템의 제3 개인/공개 키 쌍의 제3 공개 키에 기초한 제3 데이터를 포함하며, 상기 제3 개인/공개 키 쌍은 제3 개인 키 및 제3 공개 키를 포함하고, 상기 제2 블록체인 트랜잭션은 암호화 시스템의 제4 개인/공개 키 쌍의 제4 개인 키에 의해 서명된 제2 디지털 서명을 포함하고, 상기 제4 개인/공개 키 쌍은 제4 개인 키 및 제4 공개 키를 포함하고, 상기 제2 디지털 서명은 상기 제3 공개 키와 관련된 제4 데이터를 포함하는 입력을 가짐 ― ; 및
상기 제2 블록체인 트랜잭션을 상기 블록체인에 브로드캐스트하는 단계를 더 포함하는,
블록체인 상에 보증된 데이터를 저장하는 방법. - 제2 항에 있어서,
상기 제2 블록체인 트랜잭션의 제1 출력은 상기 제3 데이터, 상기 제4 데이터 및 상기 제2 디지털 서명을 포함하고, 상기 제2 디지털 서명은 상기 제3 데이터를 포함하는 입력을 갖는,
블록체인 상에 보증된 데이터를 저장하는 방법. - 제2 항 또는 제3 항에 있어서,
상기 제2 블록체인 트랜잭션의 입력은 상기 제1 블록체인 트랜잭션의 출력에 대응하는,
블록체인 상에 보증된 데이터를 저장하는 방법. - 제4 항에 있어서,
상기 제2 블록체인 트랜잭션의 상기 입력은 상기 제2 개인 키에 의해 서명된 디지털 서명을 포함하는,
블록체인 상에 보증된 데이터를 저장하는 방법. - 제2 항 내지 제5 항 중 어느 한 항에 있어서,
상기 제4 데이터는 상기 제2 블록체인 트랜잭션의 제1 출력에 포함되고 상기 제3 공개 키와 관련된 데이터에 단방향 함수를 적용함으로써 도출되는,
블록체인 상에 보증된 데이터를 저장하는 방법. - 제2 항 내지 제6 항 중 어느 한 항에 있어서,
상기 제2 블록체인 트랜잭션의 제2 출력은 미리 결정된 공개 키에 대응하는 개인 키에 의해 소비 가능하며, 상기 미리 결정된 공개 키는 상기 제4 공개 키와 상이한,
블록체인 상에 보증된 데이터를 저장하는 방법. - 제2 항 내지 제7 항 중 어느 한 항에 있어서,
상기 제3 공개/개인 키 쌍 및 결정론적 개인/공개 키 쌍으로부터 적어도 하나의 추가 공개/개인 키 쌍을 생성하는 단계를 더 포함하는,
블록체인 상에 보증된 데이터를 저장하는 방법. - 제2 항 내지 제8 항 중 어느 한 항에 있어서,
상기 제2 블록체인 트랜잭션의 제3 출력은 미리 결정된 공개 키에 대응하는 개인 키에 의해 소비 가능한,
블록체인 상에 보증된 데이터를 저장하는 방법. - 제9 항에 있어서,
상기 제2 블록체인 트랜잭션의 제3 출력은 시간-잠금되는(time-locked),
블록체인 상에 보증된 데이터를 저장하는 방법. - 제2 항 내지 제10 항 중 어느 한 항에 있어서,
상기 제1 공개 키 및 상기 제4 공개 키는 동일한 공개 키인,
블록체인 상에 보증된 데이터를 저장하는 방법. - 제2 항 내지 제10 항 중 어느 한 항에 있어서,
상기 제2 공개 키 및 상기 제4 공개 키는 동일한 공개 키인,
블록체인 상에 보증된 데이터를 저장하는 방법. - 제2 항 내지 제12 항 중 어느 한 항에 있어서,
상기 제3 데이터는 상기 제3 공개 키를 포함하는 데이터에 단방향 함수를 적용함으로써 도출되는,
블록체인 상에 보증된 데이터를 저장하는 방법. - 전술한 청구항 중 어느 한 항에 있어서,
상기 제1 데이터는 상기 제1 공개 키를 포함하는 데이터에 단방향 함수를 적용함으로써 도출되는,
블록체인 상에 보증된 데이터를 저장하는 방법. - 전술한 청구항 중 어느 한 항에 있어서,
업데이트된 제1 블록체인 트랜잭션을 생성하는 단계 ― 상기 업데이트된 제1 블록체인 트랜잭션의 제1 출력은 업데이트된 제1 공개 키에 기초한 업데이트된 제1 데이터를 포함하고, 상기 업데이트된 제1 블록체인 트랜잭션은 상기 제2 개인 키에 의해 서명된 업데이트된 제1 디지털 서명을 포함하고, 상기 업데이트된 제1 디지털 서명은 상기 업데이트된 제1 공개 키와 관련된 업데이트된 제2 데이터를 포함하는 입력을 가짐 ― ; 및
상기 업데이트된 제1 블록체인 트랜잭션을 상기 블록체인에 브로드캐스트하는 단계를 더 포함하는,
블록체인 상에 보증된 데이터를 저장하는 방법. - 제15 항에 있어서,
상기 업데이트된 제1 블록체인 트랜잭션의 제1 출력은 상기 업데이트된 제1 데이터, 상기 업데이트된 제2 데이터 및 상기 업데이트된 제1 디지털 서명을 포함하고, 상기 업데이트된 제1 디지털 서명은 상기 업데이트된 제2 데이터를 포함하는 입력을 갖는,
블록체인 상에 보증된 데이터를 저장하는 방법. - 전술한 청구항 중 어느 한 항에 있어서,
상기 제1 블록체인 트랜잭션의 제1 출력은 상기 제1 데이터, 상기 제2 데이터 및 상기 제1 디지털 서명을 포함하고, 상기 제1 디지털 서명은 상기 제2 데이터를 포함하는 입력을 갖는,
블록체인 상에 보증된 데이터를 저장하는 방법. - 전술한 청구항 중 어느 한 항에 있어서,
상기 제2 데이터는 상기 제1 블록체인 트랜잭션의 제1 출력에 포함되고 상기 제1 공개 키와 관련된 데이터에 단방향 함수를 적용함으로써 도출되는,
블록체인 상에 보증된 데이터를 저장하는 방법. - 전술한 청구항 중 어느 한 항에 있어서,
상기 제1 블록체인 트랜잭션의 제2 출력은 미리 결정된 공개 키에 대응하는 개인 키에 의해 소비 가능하며, 상기 미리 결정된 공개 키는 상기 제2 공개 키와 상이한,
블록체인 상에 보증된 데이터를 저장하는 방법. - 전술한 청구항 중 어느 한 항에 있어서,
적어도 하나의 상기 제1 출력은 소비 불가능한 출력인,
블록체인 상에 보증된 데이터를 저장하는 방법. - 전술한 청구항 중 어느 한 항에 있어서,
상기 제1 블록체인 트랜잭션의 제1 입력은 상기 제2 개인 키에 의해 서명된 디지털 서명을 포함하는,
블록체인 상에 보증된 데이터를 저장하는 방법. - 전술한 청구항 중 어느 한 항에 있어서,
상기 제1 블록체인 트랜잭션의 제2 출력은 미리 결정된 공개 키에 대응하는 개인 키에 의해 소비 가능한,
블록체인 상에 보증된 데이터를 저장하는 방법. - 제22 항에 있어서,
상기 제1 블록체인 트랜잭션의 제2 출력은 시간-잠금되는,
블록체인 상에 보증된 데이터를 저장하는 방법. - 전술한 청구항 중 어느 한 항에 있어서,
상기 제1 블록체인 트랜잭션의 제3 출력은 미리 결정된 공개 키에 대응하는 개인 키에 의해 소비 가능하며, 상기 미리 결정된 공개 키는 상기 제2 공개 키와 상이한,
블록체인 상에 보증된 데이터를 저장하는 방법. - 전술한 청구항 중 어느 한 항에 있어서,
상기 제1 공개/개인 키 쌍 및 결정론적 개인/공개 키 쌍으로부터 적어도 하나의 추가 공개/개인 키 쌍을 생성하는 단계를 더 포함하는,
블록체인 상에 보증된 데이터를 저장하는 방법. - 제8 항 또는 제25 항에 있어서,
적어도 하나의 상기 추가 개인 키 및 대응하는 결정론적 개인 키에 의해 서명된 디지털 서명들을 제공하는 단계를 더 포함하는,
블록체인 상에 보증된 데이터를 저장하는 방법. - 제8 항 또는 제25 항에 있어서,
적어도 하나의 상기 추가 개인 키에 의해 서명된 디지털 서명을 제공하고 대응하는 결정론적 개인 키와 관련된 데이터를 제공하는 단계를 더 포함하는,
블록체인 상에 보증된 데이터를 저장하는 방법. - 제27 항에 있어서,
상기 대응하는 결정론적 개인 키는 상기 대응하는 결정론적 개인 키와 관련된 데이터에 단방향 함수를 적용함으로써 도출되는,
블록체인 상에 보증된 데이터를 저장하는 방법. - 제8 항 또는 제25 항 내지 제28 항 중 어느 한 항에 있어서,
결정론적 키의 암호화된 버전 및 검증자에 의해 선택된 값에 기초하여, 상기 결정론적 개인 키에 대한 지식 증명(proof of knowledge)을 상기 검증자에게 제공하는 단계를 더 포함하는,
블록체인 상에 보증된 데이터를 저장하는 방법. - 전술한 청구항 중 어느 한 항에 있어서,
제1 당사자의 개인 키 및 제2 당사자의 공개 키에 기초하여 상기 제1 및 제2 당사자들 간에 비밀 값을 공유하는 단계를 더 포함하고,
상기 비밀은 또한 상기 제1 당사자의 공개 키 및 상기 제2 당사자의 개인 키로부터 결정될 수 있는,
블록체인 상에 보증된 데이터를 저장하는 방법. - 전술한 청구항 중 어느 한 항에 있어서,
데이터에 대한 단방향 함수의 반복된 적용에 의해 복수의 결정론적 키들을 생성하는 단계를 더 포함하는,
블록체인 상에 보증된 데이터를 저장하는 방법. - 제31 항에 있어서,
업데이트될 개인 키는 상기 업데이트된 키에 대한 단방향 함수의 적용에 기초하는,
블록체인 상에 보증된 데이터를 저장하는 방법. - 전술한 청구항 중 어느 한 항에 있어서,
상기 제1 블록체인 트랜잭션의 제1 출력은 데이터 오프체인(data off-chain)의 로케이션(location)을 표시하기 위한 로케이션 데이터를 포함하는,
블록체인 상에 보증된 데이터를 저장하는 방법. - 블록체인 트랜잭션에 저장된 보증된 데이터를 검증하는 방법으로서,
(i) 암호화 시스템의 제1 개인/공개 키 쌍의 제1 공개 키에 기초한 제1 데이터 및 (ii) 블록체인 트랜잭션에 저장된 제1 디지털 서명을 식별하는 단계 ― 상기 제1 개인/공개 키 쌍은 제1 개인 키 및 제1 공개 키를 포함하고, 상기 블록체인 트랜잭션의 제1 출력은 상기 제1 데이터를 포함하고, 상기 제1 디지털 서명은 암호화 시스템의 제2 개인/공개 키 쌍의 제2 개인 키에 의해 서명되고, 상기 제2 개인/공개 키 쌍은 제2 개인 키 및 제2 공개 키를 포함하고, 상기 제1 디지털 서명은 상기 제1 공개 키와 관련된 제2 데이터를 포함하는 입력을 가짐 ― ; 및
상기 제2 공개 키에 의해 상기 제1 디지털 서명을 검증하는 단계를 포함하는,
블록체인 트랜잭션에 저장된 보증된 데이터를 검증하는 방법. - 제34 항에 있어서,
상기 블록체인 트랜잭션의 제1 출력은 상기 제1 데이터, 상기 제2 데이터 및 상기 제1 디지털 서명을 포함하고, 상기 제1 디지털 서명은 상기 제1 데이터를 포함하는 입력을 갖는,
블록체인 트랜잭션에 저장된 보증된 데이터를 검증하는 방법. - 제34 항 또는 제35 항에 있어서,
적어도 하나의 상기 제1 출력은 소비 불가능한 출력이고,
상기 방법은 상기 소비 불가능한 출력으로부터 상기 제1 디지털 서명 및 상기 제1 공개 키를 식별하는 단계를 더 포함하는,
블록체인 트랜잭션에 저장된 보증된 데이터를 검증하는 방법. - 제34 항 내지 제36 항 중 어느 한 항에 있어서,
상기 제2 데이터는 상기 블록체인 트랜잭션의 제1 출력에 포함되고 상기 제1 공개 키와 관련된 데이터에 단방향 함수를 적용함으로써 도출되고,
상기 방법은,
상기 제2 데이터 및 상기 제1 출력에 포함된 상기 데이터를 식별하는 단계, 및
상기 단방향 함수를 상기 제1 출력에 포함된 상기 데이터에 적용하고 결과 데이터가 상기 제1 데이터에 대응한다는 것을 검증하는 단계를 더 포함하는,
블록체인 트랜잭션에 저장된 보증된 데이터를 검증하는 방법. - 제34 항 내지 제37 항 중 어느 한 항에 있어서,
상기 트랜잭션에 대응하는 블록체인 상의 식별 데이터에 의해 상기 블록체인 트랜잭션을 식별하는 단계를 더 포함하는,
블록체인 트랜잭션에 저장된 보증된 데이터를 검증하는 방법. - 제34 항 내지 제38 항 중 어느 한 항에 있어서,
상기 제1 데이터는 상기 제1 공개 키에 기초한 데이터에 단방향 함수를 적용함으로써 도출되는,
블록체인 트랜잭션에 저장된 보증된 데이터를 검증하는 방법. - 제34 항 내지 제39 항 중 어느 한 항에 있어서,
상기 블록체인 트랜잭션이 소비되지 않았는지를 결정하는 단계를 더 포함하는,
블록체인 트랜잭션에 저장된 보증된 데이터를 검증하는 방법. - 제34 항 내지 제40 항 중 어느 한 항에 있어서,
상기 제1 디지털 서명은 블록체인에 대한 상기 블록체인 트랜잭션의 제출에 후속적으로 상기 제2 공개 키에 의해 검증되는,
블록체인 트랜잭션에 저장된 보증된 데이터를 검증하는 방법. - 제1 참가자와 제2 참가자 사이에서 암호화 시스템의 공개 키를 공유하는 방법으로서,
상기 제1 참가자는 준동형 속성(homomorphic property)을 갖는 암호화 시스템의 제1 공개 키 및 제1 개인 키를 포함하는 제1 개인/공개 키 쌍의 상기 제1 개인 키를 갖고, 상기 제2 참가자는 상기 암호화 시스템의 제2 공개 키 및 제2 개인 키를 포함하는 제2 개인/공개 키 쌍의 상기 제2 개인 키를 갖고, 제1 디지털 서명은 제3 개인 키에 의해 서명되며, 상기 제1 디지털 서명은 상기 제1 공개 키와 관련된 제1 데이터를 포함하는 입력을 갖고, 제2 디지털 서명은 상기 제3 개인 키에 의해 서명되며, 상기 제2 디지털 서명은 상기 제2 공개 키와 관련된 제2 데이터를 포함하는 입력을 가지며, 상기 방법은,
상기 제1 참가자에 의해, 상기 제1 개인 키 및 상기 제2 공개 키에 의해 공통 비밀을 결정하는 단계 ― 상기 공통 비밀은 또한 상기 제2 개인 키 및 상기 제1 공개 키에 의해 결정될 수 있음 ― ; 및
상기 제1 참가자에 의해, 상기 제1 공개 키 및 상기 공통 비밀에 기초하여 상기 암호화 시스템의 적어도 하나의 추가 공개 키를 결정하는 단계를 포함하는,
제1 참가자와 제2 참가자 사이에서 암호화 시스템의 공개 키를 공유하는 방법. - 제42 항에 있어서,
상기 암호화 시스템은 타원 곡선 암호화 시스템 또는 디지털 서명 알고리즘에 기초한 암호화 시스템인,
제1 참가자와 제2 참가자 사이에서 암호화 시스템의 공개 키를 공유하는 방법. - 제42 항 또는 제43 항에 있어서,
적어도 하나의 상기 추가 공개 키는 상기 공통 비밀에 기초한 데이터에 대한 결정론적 함수의 적용에 의해 결정되는 결정론적 키 및 상기 제1 공개 키에 기초하여 결정되는,
제1 참가자와 제2 참가자 사이에서 암호화 시스템의 공개 키를 공유하는 방법. - 제44 항에 있어서,
상기 결정론적 함수는 단방향 함수인,
제1 참가자와 제2 참가자 사이에서 암호화 시스템의 공개 키를 공유하는 방법. - 제44 항 또는 제45 항에 있어서,
상기 공통 비밀에 기초한 데이터에 대한 상기 결정론적 함수의 반복된 적용에 의해 결정된 복수의 결정론적 키들 및 상기 제1 공개 키로부터 복수의 상기 추가 공개 키들을 결정하는 단계를 더 포함하는,
제1 참가자와 제2 참가자 사이에서 암호화 시스템의 공개 키를 공유하는 방법. - 제44 항 내지 제46 항 중 어느 한 항에 있어서,
적어도 하나의 상기 추가 공개 키에 대응하는 개인 키에 의해 서명된 디지털 서명을 제공하고 적어도 하나의 대응하는 상기 결정론적 키와 관련된 데이터를 제공함으로써 상기 제1 개인 키의 소유권을 증명하는 단계를 더 포함하는,
제1 참가자와 제2 참가자 사이에서 암호화 시스템의 공개 키를 공유하는 방법. - 제47 항에 있어서,
적어도 하나의 상기 결정론적 키에 대응하는 개인 키는 대응하는 상기 결정론적 키와 관련된 데이터에 단방향 함수를 적용함으로써 도출되는,
제1 참가자와 제2 참가자 사이에서 암호화 시스템의 공개 키를 공유하는 방법. - 제42 항 내지 제48 항 중 어느 한 항에 있어서,
영지식 증명(zero knowledge proof)에 의해 상기 제1 개인 키의 소유권을 증명하는 단계를 더 포함하는,
제1 참가자와 제2 참가자 사이에서 암호화 시스템의 공개 키를 공유하는 방법. - 제42 항 내지 제491 항 중 어느 한 항에 있어서,
준동형 속성을 갖는 암호화 시스템의 개개의 개인 키들에 기초하여 디지털 서명들의 쌍을 제공함으로써 상기 제1 개인 키의 소유권을 증명하는 단계를 더 포함하고, 상기 개개의 개인 키들은 상기 제1 개인 키에 의해 서로 관련되는,
제1 참가자와 제2 참가자 사이에서 암호화 시스템의 공개 키를 공유하는 방법. - 제42 항 내지 제50 항 중 어느 한 항에 있어서,
제1 상기 디지털 서명은 제1 블록체인 트랜잭션에 포함되는,
제1 참가자와 제2 참가자 사이에서 암호화 시스템의 공개 키를 공유하는 방법. - 제42 항 내지 제51 항 중 어느 한 항에 있어서,
제2 상기 디지털 서명은 제2 블록체인 트랜잭션에 포함되는,
제1 참가자와 제2 참가자 사이에서 암호화 시스템의 공개 키를 공유하는 방법. - 암호화 시스템의 적어도 하나의 개인 키를 생성하는 방법으로서,
제1 디지털 서명은 제2 개인 키에 의해 서명되고, 상기 제1 디지털 서명은 준동형 속성을 갖는 암호화 시스템의 제1 공개 키 및 제1 개인 키를 포함하는 제1 개인/공개 키 쌍의 상기 제1 공개 키와 관련된 제1 데이터를 포함하는 입력을 갖고,
상기 방법은, 상기 제1 개인 키 및 결정론적 개인 키에 기초하여 상기 암호화 시스템의 적어도 하나의 제3 개인 키를 생성하는 단계를 포함하는,
암호화 시스템의 적어도 하나의 개인 키를 생성하는 방법. - 제53 항에 있어서,
상기 암호화 시스템은 타원 곡선 암호화 시스템 또는 디지털 서명 알고리즘에 기초한 암호화 시스템인,
암호화 시스템의 적어도 하나의 개인 키를 생성하는 방법. - 제53 항 또는 제54 항에 있어서,
적어도 하나의 상기 결정론적 개인 키는 데이터에 대한 결정론적 함수의 적용에 의해 결정되는,
암호화 시스템의 적어도 하나의 개인 키를 생성하는 방법. - 제55 항에 있어서,
상기 결정론적 함수는 단방향 함수인,
암호화 시스템의 적어도 하나의 개인 키를 생성하는 방법. - 제55 항 또는 제56 항에 있어서,
데이터에 대한 상기 결정론적 함수의 반복된 적용에 의해 결정된 복수의 상기 결정론적 키들을 결정하는 단계를 더 포함하는,
암호화 시스템의 적어도 하나의 개인 키를 생성하는 방법. - 제53 항 내지 제57 항 중 어느 한 항에 있어서,
적어도 하나의 상기 제3 개인 키에 의해 서명된 디지털 서명을 제공하고 적어도 하나의 대응하는 상기 결정론적 개인 키와 관련된 데이터를 제공함으로써 상기 제1 개인 키의 소유권을 증명하는 단계를 더 포함하는,
암호화 시스템의 적어도 하나의 개인 키를 생성하는 방법. - 제53 항 내지 제58 항 중 어느 한 항에 있어서,
영지식 증명에 의해 상기 제1 개인 키의 소유권을 증명하는 단계를 더 포함하는,
암호화 시스템의 적어도 하나의 개인 키를 생성하는 방법. - 제53 항 내지 제59 항 중 어느 한 항에 있어서,
준동형 속성을 갖는 암호화 시스템의 개개의 개인 키들에 기초하여 디지털 서명들의 쌍을 제공함으로써 상기 제1 개인 키의 소유권을 증명하는 단계를 더 포함하고,
상기 개개의 개인 키들은 상기 제1 개인 키에 의해 서로 관련되는,
암호화 시스템의 적어도 하나의 개인 키를 생성하는 방법. - 제60 항에 있어서,
제1 상기 디지털 서명은 제1 블록체인 트랜잭션에 포함되는,
암호화 시스템의 적어도 하나의 개인 키를 생성하는 방법. - 제60 항 또는 제61 항에 있어서,
제2 상기 디지털 서명은 제2 블록체인 트랜잭션에 포함되는,
암호화 시스템의 적어도 하나의 개인 키를 생성하는 방법. - 컴퓨터 구현 시스템으로서,
프로세서; 및
상기 프로세서에 의한 실행의 결과로서, 상기 시스템으로 하여금, 제1 항 내지 제62 항 중 어느 한 항에 청구된 바와 같은 컴퓨터 구현 방법의 임의의 실시예를 수행하게 하는 실행 가능한 명령들을 포함하는 메모리를 포함하는,
컴퓨터 구현 시스템. - 실행 가능한 명령들을 저장되어 있는 비-일시적인 컴퓨터 판독 가능 저장 매체로서,
상기 명령들은 컴퓨터 시스템의 프로세서를 통해 실행되는 결과로서, 상기 컴퓨터 시스템으로 하여금, 적어도 제1 항 내지 제62 항 중 어느 한 항에 청구된 바와 같은 방법의 실시예를 적어도 수행하게 하는,
비-일시적인 컴퓨터 판독 가능 저장 매체.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB201913704A GB201913704D0 (en) | 2019-09-23 | 2019-09-23 | Computer implemented method and system for storing certified data on a blockchain |
GB1913704.1 | 2019-09-23 | ||
PCT/IB2020/058256 WO2021059057A1 (en) | 2019-09-23 | 2020-09-04 | Computer implemented method and system for storing certified data on a blockchain |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20220065049A true KR20220065049A (ko) | 2022-05-19 |
Family
ID=68281762
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020227013481A KR20220065049A (ko) | 2019-09-23 | 2020-09-04 | 블록체인 상의 보증된 데이터를 저장하기 위한 컴퓨터 구현 방법 및 시스템 |
Country Status (8)
Country | Link |
---|---|
US (1) | US20220368539A1 (ko) |
EP (1) | EP4035304A1 (ko) |
JP (1) | JP2022549070A (ko) |
KR (1) | KR20220065049A (ko) |
CN (1) | CN114503508A (ko) |
GB (1) | GB201913704D0 (ko) |
TW (1) | TW202131659A (ko) |
WO (1) | WO2021059057A1 (ko) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11431477B2 (en) | 2018-05-14 | 2022-08-30 | nChain Holdings Limited | Computer-implemented systems and methods for using a blockchain to perform an atomic swap |
US11645632B2 (en) * | 2020-05-26 | 2023-05-09 | Derek Norman La Salle | System and method for a decentralized portable information container supporting privacy protected digital information credentialing, remote administration, local validation, access control and remote instruction signaling utilizing blockchain distributed ledger and container wallet technologies |
CN113541938A (zh) * | 2021-06-25 | 2021-10-22 | 国网山西省电力公司营销服务中心 | 一种基于无欺骗非阻塞信道的计算量非对称的存证方法 |
US12101418B2 (en) * | 2022-03-08 | 2024-09-24 | SanDisk Technologies, Inc. | Cryptographic keys for authorization requests from a data storage device |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AU2017223133B2 (en) | 2016-02-23 | 2022-09-08 | nChain Holdings Limited | Determining a common secret for the secure exchange of information and hierarchical, deterministic cryptographic keys |
KR20180115768A (ko) * | 2016-02-23 | 2018-10-23 | 엔체인 홀딩스 리미티드 | 블록체인으로부터 데이터의 안전한 추출을 위한 암호화 방법 및 시스템 |
US20170346639A1 (en) * | 2016-05-24 | 2017-11-30 | Business Information Exchange System Corp. | Public Key Infrastructure based on the Public Certificates Ledger |
US10715312B2 (en) * | 2016-07-29 | 2020-07-14 | Workday, Inc. | System and method for blockchain-based device authentication based on a cryptographic challenge |
US10382485B2 (en) * | 2016-12-23 | 2019-08-13 | Vmware, Inc. | Blockchain-assisted public key infrastructure for internet of things applications |
US10530585B2 (en) * | 2017-06-07 | 2020-01-07 | Bar-Ilan University | Digital signing by utilizing multiple distinct signing keys, distributed between two parties |
WO2019161412A1 (en) * | 2018-02-16 | 2019-08-22 | Verimatrix, Inc. | Systems and methods for decentralized certificate hierarchy using a distributed ledger to determine a level of trust |
-
2019
- 2019-09-23 GB GB201913704A patent/GB201913704D0/en not_active Ceased
-
2020
- 2020-09-04 US US17/762,341 patent/US20220368539A1/en active Pending
- 2020-09-04 JP JP2022513942A patent/JP2022549070A/ja active Pending
- 2020-09-04 WO PCT/IB2020/058256 patent/WO2021059057A1/en unknown
- 2020-09-04 CN CN202080066988.5A patent/CN114503508A/zh active Pending
- 2020-09-04 KR KR1020227013481A patent/KR20220065049A/ko unknown
- 2020-09-04 EP EP20768121.4A patent/EP4035304A1/en active Pending
- 2020-09-11 TW TW109131385A patent/TW202131659A/zh unknown
Also Published As
Publication number | Publication date |
---|---|
WO2021059057A1 (en) | 2021-04-01 |
JP2022549070A (ja) | 2022-11-24 |
TW202131659A (zh) | 2021-08-16 |
US20220368539A1 (en) | 2022-11-17 |
EP4035304A1 (en) | 2022-08-03 |
GB201913704D0 (en) | 2019-11-06 |
CN114503508A (zh) | 2022-05-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11936774B2 (en) | Determining a common secret for the secure exchange of information and hierarchical, deterministic cryptographic keys | |
US12021971B2 (en) | Computer-implemented systems and methods for performing computational tasks across a group operating in a trust-less or dealer-free manner | |
US10547457B1 (en) | Systems and methods for notary agent for public key infrastructure names | |
US11115197B1 (en) | Secret sharing information management and security system | |
CN112131316B (zh) | 应用于区块链系统的数据处理方法及装置 | |
US20220368539A1 (en) | Computer implemented method and system for storing certified data on a blockchain | |
Varshney et al. | Authentication & encryption based security services in blockchain technology | |
TWI807125B (zh) | 用以分配數位簽署資料之份額的電腦實施系統及方法 | |
CN111615810A (zh) | 获取数字签名的数据的计算机实现方法和系统 | |
WO2020212796A1 (en) | Computer implemented method and system for encrypting data | |
CN115885498A (zh) | 阈值签名 | |
US20230299975A1 (en) | Time-based digital signature | |
Li et al. | A Blockchain‐Based Public Auditing Protocol with Self‐Certified Public Keys for Cloud Data | |
Sathya et al. | A comprehensive study of blockchain services: future of cryptography | |
TW202232913A (zh) | 共享金鑰產生技術 | |
CN116349203A (zh) | 识别拒绝服务攻击 | |
CN115885497A (zh) | 数字签名 | |
Xia et al. | An improved privacy preserving construction for data integrity verification in cloud storage | |
Yang et al. | A minimal disclosure signature authentication scheme based on consortium blockchain | |
Rehman et al. | Securing cloud storage by remote data integrity check with secured key generation | |
RU2755672C1 (ru) | Способ безопасного хранения и обновления данных в распределенном реестре с помощью сетей квантовых коммуникаций | |
Azeem | URS–A universal revocation service for applying in self-sovereign identity | |
Zhao et al. | Dual‐Server Identity‐Based Encryption with Authorized Equality Test for IoT Data in Clouds | |
CN117837127A (zh) | 生成数字签名 | |
Yue et al. | A 2 SHE: An Anonymous Authentication Scheme for Health Emergencies in Public Venues |