KR20220065049A - 블록체인 상의 보증된 데이터를 저장하기 위한 컴퓨터 구현 방법 및 시스템 - Google Patents

블록체인 상의 보증된 데이터를 저장하기 위한 컴퓨터 구현 방법 및 시스템 Download PDF

Info

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
Application number
KR1020227013481A
Other languages
English (en)
Inventor
크레이그 스티븐 라이트
클로이 세렌 타르탄
알렉산더 테니슨 맥케이
Original Assignee
엔체인 홀딩스 리미티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 엔체인 홀딩스 리미티드 filed Critical 엔체인 홀딩스 리미티드
Publication of KR20220065049A publication Critical patent/KR20220065049A/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3239Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols 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]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/006Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols involving public key infrastructure [PKI] trust models
    • H04L9/007Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols involving public key infrastructure [PKI] trust models involving hierarchical structures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic 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/3252Cryptographic 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3263Cryptographic 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/3265Cryptographic 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees

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은 다양한 실시예들이 구현될 수 있는 컴퓨팅 환경을 예시하는 개략도이다.
체인 상의 디지털 인증서들
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)할 때 그 프리픽스를 질의한다. 프리픽스의 예들은 다음을 포함한다:
Figure pct00001
여기서 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
3. CTX가 채굴될 때, CA는 앨리스에게 트랜잭션 ID,
Figure pct00002
를 제공한다.
PKA에 대한 인증서는
Figure pct00003
이다.
소위 인증서 트랜잭션(CTX)은 도 8에서 예시되며, 이는 공개 키 PKA를 보증하기 위해 CA에 의해 생성되는 트랜잭션 ID,
Figure pct00004
를 갖는 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
Figure pct00005
를 앨리스에게 발급한다. 앨리스는 후속적으로 이 인증서 트랜잭션 ID에 대해 온-체인으로 자신의 아이덴티티를 검증하고자 하는 모든 신뢰 당사자들에서 지시할 수 있다.
블록체인 디지털 인증서의 공개 키 PKA는 해시 함수에 의해 난독화된다(obfuscated). 이는 온-체인 프라이버시를 제공하는 데 매우 유용할 수 있지만, 여전히 오프-체인 공개 키를 아는 누군가는 이를 해시 다이제스트에 링크할 수 있다. 이는 또한 블록체인 디지털 인증서가 표준 디지털 인증서보다 더 유연하게 될 수 있게 한다.
검증
앨리스의 디지털 서명은 그녀의 보증된 공개 키를 통해 검증될 수 있다. 검증 프로세스의 제1 부분은, 트랜잭션 ID가 UTXO 세트 내에 존재한다는 것을 체크함으로써 초기 유효성 체크가 수행되는 다음의 검증 알고리즘을 채택한다.
검증
앨리스로부터의 디지털 서명을 검증하기 위해, 사용자가 먼저 그녀의 공개 키를 검증할 필요가 있다.
1. PKA
Figure pct00006
가 주어지면,
Figure pct00007
가 조사된다.
2. 그 트랜잭션의 입력이 CA의 공개 키를 포함한다는 것을 체크한다.
3. 그 트랜잭션의 제1 출력이 UTXO 세트에 있는지를 체크한다. 만약 아니라면, PKA를 거부하고 중지한다.
4. OP_RETURN 출력을 체크하고
Figure pct00008
로서 콘텐츠를 파싱한다.
5.
Figure pct00009
인지를 체크한다. 만약 아니라면, PKA를 거부하고 중지한다.
6. PKA를 수락한다.
제2 출력 내에 제공된 정보가 앨리스의 공개 키를 보증한다는 것을 검증하기 위해, X.509 인증서 내의 콘텐츠를 검증하도록 검증 알고리즘이 확장될 필요가 있다. 업데이트된 알고리즘은 다음과 같다:
1. PKA
Figure pct00010
가 주어지면,
Figure pct00011
가 조사된다.
2. 그 트랜잭션의 제1 출력이 UTXO 세트에 있는지를 체크한다. 만약 아니라면, PKA를 거부하고 중지한다.
3. OP_RETURN 출력을 체크하고
Figure pct00012
로서 CA의 서명을 제외한 X.509 인증서의 콘텐츠를 파싱한다.
4. 인증서에서 식별자에 의해 표시되는 해시 알고리즘을 사용하여 다이제스트
Figure pct00013
를 생성한다.
5.
Figure pct00014
를 사용하여 인증서의 말미의 서명을 검증하고 인클로징된 메시지 다이제스트
Figure pct00015
를 획득한다.
6.
Figure pct00016
인지를 체크한다. 만약 아니라면, PKA를 거부하고 중지한다.
7. PKA를 수락한다.
블록체인 플랫폼의 트랜잭션들은 기본 타원 곡선 암호화 시스템을 사용하여 그의 생성자(creator)들에 의해 서명된다. CTX는 CA의 개인 키에 의해 디지털로 서명되며; 이는 X.509 인증서(CA 서명)의 최종 엔트리가 중복되게 한다. 유사하게, 블록체인 트랜잭션들 내로 디지털 인증서들을 내장하는 것은 모든 트랜잭션들이 ECDSA를 사용하여 서명되기 때문에 X.509 표준 내의 서명 알고리즘 식별자에 대한 필드를 무효화한다(nullify). 따라서 디지털 인증서 내에 내장된 데이터는 블록체인 플랫폼에 내재된 암호화 정보를 사용하여 최적화될 수 있다.
갱신 및 폐기
디지털 인증서들은 폐기 및 업데이트에 대한 다음의 프로세스들에 따라 갱신 및 폐기될 수 있다.
폐기
앨리스의 공개 키를 폐기하기 위해, CA는 PKA를 참조하는 CTX의 제1 출력을 소비하는데, 그 이유는 이것이 검증 프로세스의 단계 2로 하여금 실패하게 하기 때문일 것이다.
업데이트
공개 키들이 업데이트될 필요가 있는 시나리오들이 존재한다. 예컨대, 앨리스가 자신의 개인 키를 분실했거나 그녀의 개인 키가 손상되었다.
앨리스가 새로운 공개 키
Figure pct00017
를 CA에 제출하고 CA는 앨리스가 실제로 그녀가 신청하는 사람이라고 확신한다고 가정한다.
1. CA는 인증서 트랜잭션(CTX)을 생성한다.
a. 입력:
Figure pct00018
로부터의 출력 1 및 CA의 서명을 포함하는 잠금해제 스크립트
b. 출력 1: P2PKH(CA에 의해 선택된 독립적인 공개 키, 즉
Figure pct00019
)
c. 출력 2: OP_RETURN:
Figure pct00020
2. CTX가 채굴될 때, CA는 앨리스에게 트랜잭션 ID,
Figure pct00021
를 제공한다.
폐기의 경우, CA는 검증 알고리즘의 단계 2가 실패하도록 단순히 CTX의 제1 출력을 소비할 수 있다. 디지털 인증서들을 업데이트하기 위해, 아래 도 9 ― 이는 업데이트된 공개 키
Figure pct00022
(x-y = Tx 수수료)를 보증하기 위해 CA에 의해 생성된 트랜잭션 ID
Figure pct00023
를 갖는 CTX를 도시함 ― 에 도시된 바와 같이 트랜잭션 입력을 사용하여 이전 CTX ID에 링크하는 새로운 CTX가 생성될 수 있다. CA, 사용자 또는 다중-당사자 폐기 체계들에 의존하여 폐기 메커니즘을 맞춤제작하는 것이 바람직할 수 있는 상이한 사용자 사례들이 존재한다는 것이 주의되어야 한다.
인증서 만료(시한부(timed) 키들)
각각의 디지털 인증서에 도 1 및 도 7의 데이터 구조에서 도시된 바와 같이 그의 유효 기간에 관한 정보를 포함한다. 이 정보를 추출함으로써, 시간은 인증서 트랜잭션(CTX) 출력의 잠금 스크립트에 대한 변수로서 추가될 수 있고 그리하여 의사-자율 인증서 만료/갱신을 통합하기 위한 스크립트의 기능성을 향상시킨다.
OP_CHECKLOCKTIMEVERIFY(CLTV)를 사용하여, 디지털 인증서를 포함하는 CTX가 특정 시간에 트랜잭션을 소비함으로써 만료하도록 만들어질 수 있다. 시간은 UNIX 또는 향후의 언젠가의 블록 높이로 동기화될 수 있다. 이는 임의의 시간-동기식 디바이스들이 '시한부' 키로 유효성 검증/무효화될 수 있음을 의미한다.
사용자가 CSR을 상업적 CA에 제출할 때, 이들은 인증서가 특정 시간까지 유효하게 유지되도록 관련 지불을 전달한다. 이 정보를 (nLockTime 또는 CLTV를 사용하여) 스크립트에 인코딩함으로써, 서명된 CTX는 특정량의 시간이 경과할 때까지 UTXO 세트로부터 제거될 수 없다(소비될 수 없음).
온 체인 방법
도 10은 아래에 약술된 방법을 동반하는 CTX를 도시한다. 트랜잭션은 업데이트된 공개 키
Figure pct00024
(x ― y = Tx 수수료)를 보증하기 위해 CA에 의해 생성된 트랜잭션 ID,
Figure pct00025
를 갖는다. UTXO 등록은 인증서 만료일까지 UTXO가 소비될 수 없도록 보장하는 CLTV opcode들을 포함한다.
단계 1: 인증서 발급자는 인증서 트랜잭션 CTX를 생성한다. 만료일은 데이터 <expiry time>를 사용하여 제1 출력(UTXO 등록 출력) 내로 인코딩된다.
단계 2: 일단 발급되면, 디지털 인증서는 만료일에 도달될 때까지 유효하고 UTXO는 소비 가능하다.
단계 3: 일단 <expiry time> 경과하면,
Figure pct00026
는 UTXO를 소비하고 그리하여 인증서를 폐기할 수 있다.
이 방법은 폐기를 보장하기 위해 인증서 발급자
Figure pct00027
에 의한 능동적 참여를 여전히 요구한다는 것이 주의되어야 한다.
보증된 지갑들
지갑은 키들/어드레스들의 모음이다. 통상적인 블록체인 사용자는 모든 그의 자금들이 한 장소에 로케이팅되지 않도록 그리고 그의 개인 키들이 트랜잭션 서명들을 생성하는 데 반복적으로 사용되지 않도록 자신의 어드레스들을 정기적으로 업데이트한다. 대부분의 (보안) 지갑 소프트웨어 구현들은 사용자로부터의 입력 없이 일련의 단일-사용 키들을 자동으로 생성할 것이다. 이러한 애플리케이션 층 제약이 주어지면, 최종 사용자가 날마다 요구할 수 있는, 모든 각각의 단일 키에 서명할 것을 CA에 요구하는 것은 비현실적이다.
대신, 트랜잭션들에서 직접 사용되지 않고 지갑 어드레스들의 도출 경로에 사용될 공개 키에 대한 인증서들을 발급함으로써 전체 지갑에 대해 단일 디지털 인증서가 발급될 수 있다.
계층적 키들
지금까지, 블록체인 상에서 개별 키 쌍들을 보증하기 위한 디지털 인증서들의 구현이 설명되었다. 보안상 이유들로, 사용자 자금들의 위협을 방지하기 위해 주기적으로 키들을 갱신하고 새로고침 하는 것이 매우 바람직하다. 블록체인 사용자가 자신의 키들을 관리하고 업데이트하기 위한 일반적인 방법은 (위에 정의된) HD 지갑들에서 계층적 키들을 사용하는 것이다. PKI의 계층 및 HD 지갑들의 계층 간의 차이점을 강조하는 것이 중요한데; 전자는 (루트 CA 키로부터 시작하는) 디지털로 서명된 키들을 통해 설정되는 반면, 후자는 (마스터 키로부터 시작하는) 계층적 키들의 결정론적 생성을 통해 생성된다.
두 당사자들 간에 키들을 공유할 때 국제 특허 출원 WO 2017/145016에서 설명된 비밀 값 분배 기술의 사용이 부가적으로 고려될 수 있다. 이 방법은 비밀(관련된 두 당사자들에게만 알려짐)인 공유된 키들의 계층을 어떻게 셋업하는지를 설명하고 오리지널 공유된 비밀로부터 비밀들을 생성하는 효율적인 방법이다. 재차, PKI의 계층과 오리지널 공유된 비밀의 순차적 해시로부터 생성된 비밀 키들의 계층 간의 차이가 강조된다.
이러한 미묘한 차이들을 감안하여, 동일한 작업량에 대해 계층적 키들의 시스템에서 부모(마스터 또는 루트) 키의 바람직한 특징들을 추정하기 위해 상이한 기술들이 결합될 수 있다. 예컨대, HD 지갑들은 온-체인의 ECDSA 키쌍들의 준동형 속성을 이용한다. 이 속성은 HD 지갑 내의 보증된 마스터 키로부터 모든 자식/손자 키들의 보증을 추론함으로써 추가로 이용될 수 있다. 이는 또한 공유된 비밀 키들의 계층으로 확장될 수 있다. 이러한 계층적 키들의 암시적 품질은 보증된 지갑들의 개념을 도입함으로써 아래에서 설명된다.
결정론적-기반 키 업데이트들
방법:
1. 앨리스가 결정론적 지갑을 소유한다고 가정한다. 그녀는 공개 키
Figure pct00028
를 CA에 등록한다. 어떻게
Figure pct00029
가 등록되고 디지털 인증서를 발급하는지에 대한 방법은 위에서 설명된다. 앨리스는
Figure pct00030
를 자유롭게 브로드캐스트할 수 있다. 그녀는
Figure pct00031
를 사용하여 서명을 생성하지 않을 것이다.
2. 결정론적인 지갑 설계를 사용하여, 그녀는 자식 키들을 생성한다.
Figure pct00032
여기서
Figure pct00033
는 앨리스에게만 알려진 시드에 기초한 결정론적 키이다. 개인 키들이 또한
Figure pct00034
와 관련된다.
3. 앨리스는 트랜잭션들에 서명함으로써
Figure pct00035
를 사용하여 지불한다. 그녀는 공개 키 당 하나의 서명만을 사용한다.
4. 누군가가 앨리스의 키
Figure pct00036
에 도전하는 경우, 그녀는 서명
Figure pct00037
를 제공함으로써
Figure pct00038
의 개인 키를 알고 있음을 그리고
Figure pct00039
라는 것을 증명할 수 있다. 이는
Figure pct00040
로 서명한 것과 상이한 메시지여야 한다는 것에 주의한다.
Figure pct00041
Figure pct00042
에 대한 두 서명들은 앨리스가
Figure pct00043
에 대응하는 개인 키를 알고 있음을 증명한다.
특징들:
·앨리스는 단 하나의 공개 키만이 CA에 의해 보증될 것을 요구한다. 모든 다른 키들은 증명 가능하게, 링크될 수 있다.
·
Figure pct00044
는 자유롭게 네트워크에 브로드캐스트될 수 있다. 이는 트랜잭션에 서명하는 데 사용되지 않는다.
·결정론적 지갑 규약들이 본 개시의 실시예로서 사용되었다. 그러나 이는 이러한 것으로 국한되지 않는다. 필요한 것은
Figure pct00045
라는 것이며, 여기서
Figure pct00046
개인 키가 앨리스에게 알려진다.
·분해를 사용하여,
Figure pct00047
가 스크립트에서 검증될 수 있어, 흥미로운 소비 조건들을 허용한다.
보증된 키 업데이트들
위에서 설명된 결정론적-기반 키 업데이트들을 제공하기 위한 방법은 HD 지갑들로 확장될 수 있다. 결정론적으로 도출된 키들의 기본 세트로서
Figure pct00048
를 사용하는 대신, 기본 세트는 예컨대, BIP0032 프로토콜을 사용하여 도출된 지갑이다. 지갑을 보증하기 위한 방법은 HD 지갑에 의해 생성된 모든 각각의 키에 보증된 공개 키를 단순히 추가하는 것이다.
Figure pct00049
여기서
Figure pct00050
이다.
HD 지갑들
사용자는 먼저 시드 S, 일반적으로 12-단어 구를 선택한다. 그 후, 마스터 노드(또는 마스터 개인 키)는 HMAC-SHA512의 1 내지 50,000 라운드들을 사용하여 시드로부터 도출된다. 마스터 키로부터, 모든 지갑 어드레스들이 생성되며,
Figure pct00051
여기서 i는 계정 번호를 표현하고, j는 키 번호를 표현하고, H는 SHA256 해시 함수이다(키 도출 방법들에 대한 추가 세부사항에 대해, [https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki]를 참조함). 대응하는 공개 키들은 개인 키들에 secp256k1 생성기를 곱함으로써 계산된다:
Figure pct00052
보증된 HD 지갑들
지갑을 보증하기 위해, 사용자는 단순히 지갑의 모든 각각의 키에
Figure pct00053
를 추가할 필요가 있다. 새로운 보증된 키들은 다음 형태로 이루어지고
Figure pct00054
대응하는 공개 키들은 다음과 같다:
Figure pct00055
도 12는 보증된 HD 지갑에 대한 도출 경로를 도시한다. 보증된 키의 소유권을 증명하기 위해, HD 지갑의 사용자는 대응하는
Figure pct00056
Figure pct00057
로부터 메시지들에 서명하는, 위에서 설명된 결정론적-기반 키 업데이트 프로세스의 단계 4를 따를 수 있다. 또는 대안적으로, 위에서 설명된 바와 같이 영지식 증명 프로토콜을 따를 수 있다.
분석
이 방법은 디지털 인증서가 발급된 공개 키에 보증된 지갑으로부터의 키들이 암호화 방식으로 링크되는 것을 가능하게 한다. 이 방법의 핵심적인 특징들은 다음과 같다:
·보증된 키는 보호되고,
·CA에 대한 요건들인 최소임.
또한, 전체 지갑을 보증하는 것은 단지 지갑 개인 키들에 상수를 추가할 것을 요구하므로, 최종 사용자에 대한 요건들이 또한 최소화된다. 결과적으로, 도출 경로는 이에 따라 근본적으로 변경되지 않고 어떠한 추가 보안 고려사항들도 요구되지 않는다.
보증된 지불 채널들
디지털 인증서들이 KYC를 가능하게 하는데 중요하지만, 이들은 보증된 당사자의 프라이버시를 감소시키는 바람직하지 않은 영향을 미칠 수 있다. 예컨대, 어떤자의 실제 아이덴티티를 공개 키에 링크하는 온-체인 디지털 인증서는 누군가가 그 사람의 재정 활동을 모니터링할 수 있게 할 것이다. 일부 경우들에서, 트랜잭팅 당사자들은 초기에, 디지털 인증서들의 발급을 통해 신뢰를 구축하기를 원할 수 있지만, 일단 신뢰가 구축되면, 대중으로부터 그의 어드레스들을 모호하게 할 수 있다. 보증된 지불 채널들은 한 쌍의 엔티티들이 안전하고 사적인 방식으로 트랜잭팅할 수 있게 함으로써 이 문제를 해결한다.
셋업
앨리스 및 밥은 유효한 디지털 인증서들이 발급된 키들을 가져야 한다. 이들은
Figure pct00058
Figure pct00059
로서 지칭된다. 앨리스 및 밥 둘 모두가 지불 채널을 생성하기 전에 서로의 실세계의 아이덴티티들을 검증할 수 있도록 디지털 인증서들이 요구된다. 디지털 인증서들을 발급하고 참조하기 위한 정확한 메커니즘은 위에서 설명되었다.
온 체인 방법
단계 1: 앨리스 및 밥은 타원 곡선 디피 헬먼(Elliptic Curve Diffie Hellman)을 사용하여 공유된 비밀을 생성한다.
단계 1a: 앨리스는 그녀의 비밀 키를 밥의 공개 키로 곱한다
Figure pct00060
단계 1b: 밥은 그의 비밀 키를 앨리스의 공개 키로 곱한다
Figure pct00061
Figure pct00062
임을 관찰한다.
단계 1c: 공유된 비밀은 공동으로 도출된 타원 곡선 지점의 x-좌표이다
Figure pct00063
S는 단지, 앨리스에 대해 개인 키
Figure pct00064
및 밥에 대해 공개 키
Figure pct00065
둘 모두 또는 그 반대를 알고 있는 누군가에 의해서만 실현 가능하게 도출될 수 있다.
단계 2: 이 공유된 비밀은 비밀 키들의 해시 체인을 생성하는 데 사용된다.
Figure pct00066
이는 공유 비밀 시드를 사용하는 결정론적 키 생성 경로의 한 예일 뿐이다. 국제 특허 출원 WO 2017/145016에서 설명된 방법들과 같은 다른 방법들이 사용될 수 있다. 또한, 실제로 결정론적 지갑들은 HMAC(hash-based message authentication code)들을 사용하여 개인 키들을 생성한다는 것이 주의되어야 한다. 본 개시의 목적들을 위해, HMAC() 및 H()는 상호 교환 가능하고, 키들을 생성하는데 사용되는 정확한 함수는 구현 세부사항인 것으로 가정될 수 있다.
단계 3: 업데이트 공개 키들은 N번째 비밀 키부터 생성된다.
Figure pct00067
업데이트 키들은 추가된 보안을 위해 sN에서 시작하여 s1로 끝나도록 역방향으로 도출된다는 것이 주의되어야 한다.
단계 4: 앨리스 및 밥 둘 모두는 이러한 업데이트 키들을 사용하여 인덱싱된 어드레스들의 시퀀스를 생성한다.
Figure pct00068
앨리스 및 밥은 이제 지불들을 주고 받는 인덱싱된 공개 키 어드레스들의 시퀀스를 갖는다. 키들이 공유된 비밀을 사용하여 도출되었으므로, 지불 채널의 어드레스들은 앨리스 및 밥에게만 알려져, 프라이버시를 보장하도록 이들이 보안 지불 채널을 설정하는 것을 가능하게 할 것이다.
분석
보증된 지불 채널 알고리즘은 비밀 공유 및 결정론적 키 업데이트들을 결합하고 그의 보안 모델은 ECC 및 해시 기능들 둘 모두에 의존한다. 공격자가 단일 업데이트 키(Pk의 경우 sk)의 개인 키를 결정할 수 있는 경우에도, 이들은
Figure pct00069
또는
Figure pct00070
을 결정할 수 없을 것이다.
이 방법에 대한 예시적인 사용 사례는 가입자와 공급자 사이에 지불 채널이 셋업되는 페이-에즈-유-고(pay-as-you-go) 스트리밍 서비스 이를테면, 케이블 TV 서비스들이다. 초기 신뢰를 확립하기 위해, 서비스 사용자는 지불 어드레스들이 실제로 서비스 제공자에 속한다는 것이 보장되어야 한다. 반대로, 서비스 제공자는 지불들을 각각의 고객 ID에 링크할 수 있을 필요가 있을 것이다. 보안 및 유연성 둘 모두를 위해, 보증된 지불 채널 알고리즘은 공급자 및 사용자 둘 모두에 대해 다수의 키들을 생성하고 그의 트랜잭션 정보가 온-체인인 동안 제3자들로부터 모호하게 유지되도록 보장한다.
보증된 키 증명
디지털 서명들
보증된 키의 소유권은 2개의 디지털 서명들:
Figure pct00071
에 대해 하나 및
Figure pct00072
에 대해 하나를 증명함으로써 쉽게 입증될 수 있다
Figure pct00073
. 캐롤(Carol)이 앨리스가 보증된 공개 키
Figure pct00074
의 소유자임을 검증하기를 원한다고 하자. 그러나 앨리스는
Figure pct00075
로 메시지들에 직접 서명하기를 원치 않는다. 그녀는 다음 알고리즘을 사용할 수 있다.
단계 1: 캐롤은 앨리스에게 메시지 M을 전송한다. 이는 랜덤-생성 비트 스트링일 수 있다.
단계 2: 앨리스는 메시지 M에 대해 2개의 서명들로 응답한다:
Figure pct00076
여기서
Figure pct00077
Figure pct00078
에 대해 유효하고
Figure pct00079
Figure pct00080
에 대해 유효하다. 서명들이 유효한 경우, 이는 앨리스가
Figure pct00081
Figure pct00082
을 알고 있음을 증명한다.
단계 3:
Figure pct00083
를 고려하면, 캐롤은 다음을 검증할 수 있다:
Figure pct00084
.
따라서 캐롤은 앨리스가
Figure pct00085
를 알고 있다고 추론할 수 있다.
해시 사전이미지
Figure pct00086
의 대한 지식을 증명하기 위한 보다 효율적인 방법은 PA1에 대한 하나의 서명 및
Figure pct00087
에 대한 개인 키를 생성하는 해시 사전이미지를 제공하는 것이다. 다음이 주의되어야 한다:
Figure pct00088
여기서,
Figure pct00089
이고,
여기서 N은 지불 채널/지갑의 키들의 수이다.
알고리즘(키 증명 방법 2)
단계 1: 캐롤은 앨리스에게 메시지 M을 전송한다. 이는 랜덤-생성 비트 스트링일 수 있다.
단계 2: 앨리스는
Figure pct00090
및 다음 서명들을 전송함으로써 응답하며;
Figure pct00091
여기서
Figure pct00092
Figure pct00093
에 대해 유효하고
Figure pct00094
이며, 여기서
Figure pct00095
이다.
모든 3개의 정보 조각들은, 앨리스가
Figure pct00096
Figure pct00097
를 알고 있음을 증명한다.
단계 3: 다음을 고려하면,
Figure pct00098
캐롤은 다음을 검증하고:
Figure pct00099
다음을 추론할 수 있다:
Figure pct00100
따라서 캐롤은 앨리스가
Figure pct00101
를 알고 있다고 추론할 수 있다.
이 방법은 이전 방법보다
Figure pct00102
에 대한 더 많은 개인 정보를 드러내기 때문에 암호학적으로 덜 안전하다는 것이 주의되어야 한다. 그러나 이는 캐롤에 대한 보다 효율적인 검증을 가능하게 한다. 캐롤은 결정론적 키들의 체인 ― 이에 의존하여, 해시 사전이미지가 제공됨 ― 을 결정할 수 있고, 그리하여 매우 다수의 서명들이 검증되는 것을 가능하게 한다는 점에서 효율성의 개선들이 일어난다.
영지식 증명들
Figure pct00103
에 대한 지식(및 암묵적으로
Figure pct00104
)을 증명하기 위해 서명들을 제공하는 것에 대한 대안으로서, 앨리스는 그녀가 개인 키
Figure pct00105
를 알고 있다는 영지식 증명을 제공할 수 있다.
Figure pct00106
가 되도록
Figure pct00107
에 대한 지식을 증명하기 위한 (앨리스와 밥 사이의) 영지식 프로토콜은 다음과 같다:
알고리즘(키 증명 방법 3)
셋업:
시스템의 공개적으로 알려진 공유 파라미터들은 E(그룹), n(차수), G(EC 생성기 포인트)이다.
방법:
1. 앨리스는 랜덤 증인(정수)
Figure pct00108
을 생성하고
Figure pct00109
를 컴퓨팅한다.
2. 앨리스는 W를 밥에게 전송한다.
3. 밥은 랜덤 챌린지
Figure pct00110
를 선택하고 c를 앨리스에게 전송한다. 이 챌린지는 또한 메시지 해시일 수 있다는 것이 주의되어야 한다.
4. 앨리스는 응답
Figure pct00111
을 계산하고 r을 밥에게 다시 전송한다.
5. 밥은 r, c 및 W를 사용하여 동등성:
Figure pct00112
를 체크한다.
a. 참인 경우, 증명이 유효하다.
b. 거짓인 경우, 증명이 무효이다.
단계들 1-5는 도 11에서 예시되며, 여기서 굵게 강조된 모든 값들은 비밀로 유지되고 밑줄이 그어진 모든 값들은 드러나고/공개적이다.
검증의 완성도:
r 및 c가 주어지면, 단계 5의 방정식의 LHS가 RHS와 동일하다는 것이 체크될 수 있다
Figure pct00113
유한 필드 타원 곡선들의 대수적 속성들로 인해, 개인 키를 안전하게 마스킹하고 여전히 타원 곡선 연산들을 사용하여 소유권을 증명하는 것이 용이하다. 그러나
Figure pct00114
에 대한 영지식 증명의 부가적인 중요한 특징들은 랜덤 챌린지의 발급자(밥)만이 증명을 통해 확신될 수 있다는 것이다.
그 이유는 W, c, r이 생성/수신되는 순서(W→c→r)가 증명 그 자체의 부분이기 때문이다. 즉, 랜덤
Figure pct00115
Figure pct00116
을 선택하고 그 후 검증 방정식(단계 5)이 참으로서 유효성 검증되도록 W를 계산하는 것은 용이하다. 결과적으로, 밥은 앨리스에 의해 생성된 데이터를 취할 수 없고 앨리스가
Figure pct00117
을 알고 있다는 사실을 다른 사람에게 확신시킬 수 없다. 이는, 메시지에 대한 단일 서명이 서명자가 개인 키를 소유하고 있음을 다수의 검증자들에게 확신시킬 수 있는 디지털 서명과 다르다.
확장들
PKI 온 체인
블록체인은 CA 키들 및 루트 인증서를 공개적으로 등록하는데 사용될 수 있다. 현재의 3가지 핵심 PKI 표준은 블록체인 아키텍처에 고유한 트랜잭션 입력들 및 출력들을 사용하여 블록체인 상에서 쉽게 복제될 수 있다.
CA PKI 온 체인
이 방법에서, CA가 다수의 개인/공개 키 쌍들을 생성할 수 있는 지갑을 갖는다는 것이 가정될 것이다. 디지털 인증서들을 발급을 위한 PKI는 3개의 키들을 요구한다:
· 루트 키
Figure pct00118
· 하위 키
Figure pct00119
· 발급 키
Figure pct00120
CA는 블록체인 트랜잭션들을 사용하여 계층에서 이 3개의 키들을 링크할 수 있다.
도 13 내지 도 15는 블록체인 상에서 트랜잭션들을 사용하기 위한 방법을 예시하고
Figure pct00121
Figure pct00122
간의 링크를 설명한다. 루트 키를 포함하는 트랜잭션은 OP_RETURN 또는 ScriptPubKey 그 자체에 루트 인증서를 포함해야 한다(OP_PUSHDATAx<Certificate byte size><Certificate> OP_DROP). 루트 인증서는 자체 서명되므로, 이는 블록체인과 독립적으로 검증될 수 있는 데이터, 즉 루트 공개 키가 발견될 수 있는 CA에 대한 웹사이트를 포함해야 한다.
등록:
단계 1: CA는 도 14에 도시된 바와 같이,
Figure pct00123
에 의해 서명된 하나의 입력 및 3개의 출력들을 갖는 트랜잭션 Tx1을 생성한다. 하나의 출력은
Figure pct00124
에 의해 소비될 수 있고 폐기 도구를 제공한다. 제2 출력은 하위 키
Figure pct00125
를 포함하는 P2PK(Pay-to-public-key)이다. 이는 하위 키에 서명하는 것과 동일하다는 점이 주의되어야 한다. 제3 출력은 루트 인증서의 직렬화된 형태를 포함하는 OP_RETURN이다.
단계 2:
Figure pct00126
를 등록하기 위해, CA는 도 15에 도시된 바와 같이, 하나의 입력이 Tx1로부터의 제2 출력을 소비하는,
Figure pct00127
에 의해 서명되는 트랜잭션 Tx2을 생성한다. Tx2에는 3개의 출력들을 갖는다. 제1 출력은
Figure pct00128
에 의해 소비될 수 있고 폐기 도구를 제공한다. 제2 출력은 하위 키
Figure pct00129
를 포함하는 P2PK(Pay-to-public-key)이다. 이는 발급 키에 서명하는 것과 동일하며 발급 키를 루트 키에 증명 가능하게 링크한다는 것이 주의되어야 한다. 제3 출력은 중간 키 등록 인증서의 직렬화된 형태를 포함하는 OP_RETURN이다.
단계 3: 최종 단계로서, CA는 하나의 입력이 Tx2로부터의 제2 출력을 소비하는,
Figure pct00130
에 의해 서명되는 도 13에 도시된 Tx3을 생성함으로써
Figure pct00131
에 등록한다. Tx3은 2개의 출력들을 갖는다. 첫째는 키 폐기의 경우에
Figure pct00132
에 의해 소비될 수 있다. 둘째는 CA 데이터를 포함하는 발급 키 등록 인증서의 직렬화된 형태를 포함하는 OP_RETURN이다.
단계 4: 모든 3개의 트랜잭션들은 블록체인 상에 게시된다. 대응하는 소비되지 않은 출력들은 UTXO 세트에서 발견될 수 있다. 트랜잭션들은 함께 블록체인 PKI 신뢰 체인을 형성한다.
루트 인증서 메타데이터는 Tx1의 OP_RETURN에 포함된다. 전체 Tx(OP_RETURN 데이터를 포함함)는 루트 키에 의해 서명된다. 중간 인증서 메타데이터는 Tx2의 OP_RETURN에 포함되며 하위 키에 의해 서명된다.
검증:
디지털 인증서에 의한 승인을 요구하는 임의의 후속 트랜잭션에 대해, 등록 증명은 UTXO 세트의 3개 아웃포인트들에 대한 108-바이트 참조가 된다. 이 참조로부터, 어느 누구는 (블록체인을 통해)
Figure pct00133
Figure pct00134
및 루트 인증서에 링크하는 경로를 구성할 수 있으며, 이는 차례로 신뢰된 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 공개 키를 포함하고, 상기 제1 블록체인 트랜잭션은 암호화 시스템의 제2 개인/공개 키 쌍의 제2 개인 키에 의해 서명된 제1 디지털 서명을 포함하고, 상기 제2 개인/공개 키 쌍은 제2 개인 키 및 제2 공개 키를 포함하고, 상기 제1 디지털 서명은 상기 제1 공개 키와 관련된 제2 데이터를 포함하는 입력을 가짐 ― ; 및
    상기 제1 블록체인 트랜잭션을 상기 블록체인에 브로드캐스트(broadcast)하는 단계를 포함하는,
    블록체인 상에 보증된 데이터를 저장하는 방법.
  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 출력은 시간-잠금되는(time-locked),
    블록체인 상에 보증된 데이터를 저장하는 방법.
  11. 제2 항 내지 제10 항 중 어느 한 항에 있어서,
    상기 제1 공개 키 및 상기 제4 공개 키는 동일한 공개 키인,
    블록체인 상에 보증된 데이터를 저장하는 방법.
  12. 제2 항 내지 제10 항 중 어느 한 항에 있어서,
    상기 제2 공개 키 및 상기 제4 공개 키는 동일한 공개 키인,
    블록체인 상에 보증된 데이터를 저장하는 방법.
  13. 제2 항 내지 제12 항 중 어느 한 항에 있어서,
    상기 제3 데이터는 상기 제3 공개 키를 포함하는 데이터에 단방향 함수를 적용함으로써 도출되는,
    블록체인 상에 보증된 데이터를 저장하는 방법.
  14. 전술한 청구항 중 어느 한 항에 있어서,
    상기 제1 데이터는 상기 제1 공개 키를 포함하는 데이터에 단방향 함수를 적용함으로써 도출되는,
    블록체인 상에 보증된 데이터를 저장하는 방법.
  15. 전술한 청구항 중 어느 한 항에 있어서,
    업데이트된 제1 블록체인 트랜잭션을 생성하는 단계 ― 상기 업데이트된 제1 블록체인 트랜잭션의 제1 출력은 업데이트된 제1 공개 키에 기초한 업데이트된 제1 데이터를 포함하고, 상기 업데이트된 제1 블록체인 트랜잭션은 상기 제2 개인 키에 의해 서명된 업데이트된 제1 디지털 서명을 포함하고, 상기 업데이트된 제1 디지털 서명은 상기 업데이트된 제1 공개 키와 관련된 업데이트된 제2 데이터를 포함하는 입력을 가짐 ― ; 및
    상기 업데이트된 제1 블록체인 트랜잭션을 상기 블록체인에 브로드캐스트하는 단계를 더 포함하는,
    블록체인 상에 보증된 데이터를 저장하는 방법.
  16. 제15 항에 있어서,
    상기 업데이트된 제1 블록체인 트랜잭션의 제1 출력은 상기 업데이트된 제1 데이터, 상기 업데이트된 제2 데이터 및 상기 업데이트된 제1 디지털 서명을 포함하고, 상기 업데이트된 제1 디지털 서명은 상기 업데이트된 제2 데이터를 포함하는 입력을 갖는,
    블록체인 상에 보증된 데이터를 저장하는 방법.
  17. 전술한 청구항 중 어느 한 항에 있어서,
    상기 제1 블록체인 트랜잭션의 제1 출력은 상기 제1 데이터, 상기 제2 데이터 및 상기 제1 디지털 서명을 포함하고, 상기 제1 디지털 서명은 상기 제2 데이터를 포함하는 입력을 갖는,
    블록체인 상에 보증된 데이터를 저장하는 방법.
  18. 전술한 청구항 중 어느 한 항에 있어서,
    상기 제2 데이터는 상기 제1 블록체인 트랜잭션의 제1 출력에 포함되고 상기 제1 공개 키와 관련된 데이터에 단방향 함수를 적용함으로써 도출되는,
    블록체인 상에 보증된 데이터를 저장하는 방법.
  19. 전술한 청구항 중 어느 한 항에 있어서,
    상기 제1 블록체인 트랜잭션의 제2 출력은 미리 결정된 공개 키에 대응하는 개인 키에 의해 소비 가능하며, 상기 미리 결정된 공개 키는 상기 제2 공개 키와 상이한,
    블록체인 상에 보증된 데이터를 저장하는 방법.
  20. 전술한 청구항 중 어느 한 항에 있어서,
    적어도 하나의 상기 제1 출력은 소비 불가능한 출력인,
    블록체인 상에 보증된 데이터를 저장하는 방법.
  21. 전술한 청구항 중 어느 한 항에 있어서,
    상기 제1 블록체인 트랜잭션의 제1 입력은 상기 제2 개인 키에 의해 서명된 디지털 서명을 포함하는,
    블록체인 상에 보증된 데이터를 저장하는 방법.
  22. 전술한 청구항 중 어느 한 항에 있어서,
    상기 제1 블록체인 트랜잭션의 제2 출력은 미리 결정된 공개 키에 대응하는 개인 키에 의해 소비 가능한,
    블록체인 상에 보증된 데이터를 저장하는 방법.
  23. 제22 항에 있어서,
    상기 제1 블록체인 트랜잭션의 제2 출력은 시간-잠금되는,
    블록체인 상에 보증된 데이터를 저장하는 방법.
  24. 전술한 청구항 중 어느 한 항에 있어서,
    상기 제1 블록체인 트랜잭션의 제3 출력은 미리 결정된 공개 키에 대응하는 개인 키에 의해 소비 가능하며, 상기 미리 결정된 공개 키는 상기 제2 공개 키와 상이한,
    블록체인 상에 보증된 데이터를 저장하는 방법.
  25. 전술한 청구항 중 어느 한 항에 있어서,
    상기 제1 공개/개인 키 쌍 및 결정론적 개인/공개 키 쌍으로부터 적어도 하나의 추가 공개/개인 키 쌍을 생성하는 단계를 더 포함하는,
    블록체인 상에 보증된 데이터를 저장하는 방법.
  26. 제8 항 또는 제25 항에 있어서,
    적어도 하나의 상기 추가 개인 키 및 대응하는 결정론적 개인 키에 의해 서명된 디지털 서명들을 제공하는 단계를 더 포함하는,
    블록체인 상에 보증된 데이터를 저장하는 방법.
  27. 제8 항 또는 제25 항에 있어서,
    적어도 하나의 상기 추가 개인 키에 의해 서명된 디지털 서명을 제공하고 대응하는 결정론적 개인 키와 관련된 데이터를 제공하는 단계를 더 포함하는,
    블록체인 상에 보증된 데이터를 저장하는 방법.
  28. 제27 항에 있어서,
    상기 대응하는 결정론적 개인 키는 상기 대응하는 결정론적 개인 키와 관련된 데이터에 단방향 함수를 적용함으로써 도출되는,
    블록체인 상에 보증된 데이터를 저장하는 방법.
  29. 제8 항 또는 제25 항 내지 제28 항 중 어느 한 항에 있어서,
    결정론적 키의 암호화된 버전 및 검증자에 의해 선택된 값에 기초하여, 상기 결정론적 개인 키에 대한 지식 증명(proof of knowledge)을 상기 검증자에게 제공하는 단계를 더 포함하는,
    블록체인 상에 보증된 데이터를 저장하는 방법.
  30. 전술한 청구항 중 어느 한 항에 있어서,
    제1 당사자의 개인 키 및 제2 당사자의 공개 키에 기초하여 상기 제1 및 제2 당사자들 간에 비밀 값을 공유하는 단계를 더 포함하고,
    상기 비밀은 또한 상기 제1 당사자의 공개 키 및 상기 제2 당사자의 개인 키로부터 결정될 수 있는,
    블록체인 상에 보증된 데이터를 저장하는 방법.
  31. 전술한 청구항 중 어느 한 항에 있어서,
    데이터에 대한 단방향 함수의 반복된 적용에 의해 복수의 결정론적 키들을 생성하는 단계를 더 포함하는,
    블록체인 상에 보증된 데이터를 저장하는 방법.
  32. 제31 항에 있어서,
    업데이트될 개인 키는 상기 업데이트된 키에 대한 단방향 함수의 적용에 기초하는,
    블록체인 상에 보증된 데이터를 저장하는 방법.
  33. 전술한 청구항 중 어느 한 항에 있어서,
    상기 제1 블록체인 트랜잭션의 제1 출력은 데이터 오프체인(data off-chain)의 로케이션(location)을 표시하기 위한 로케이션 데이터를 포함하는,
    블록체인 상에 보증된 데이터를 저장하는 방법.
  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 참가자는 준동형 속성(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 참가자 사이에서 암호화 시스템의 공개 키를 공유하는 방법.
  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 항 내지 제491 항 중 어느 한 항에 있어서,
    준동형 속성을 갖는 암호화 시스템의 개개의 개인 키들에 기초하여 디지털 서명들의 쌍을 제공함으로써 상기 제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 항 중 어느 한 항에 청구된 바와 같은 방법의 실시예를 적어도 수행하게 하는,
    비-일시적인 컴퓨터 판독 가능 저장 매체.
KR1020227013481A 2019-09-23 2020-09-04 블록체인 상의 보증된 데이터를 저장하기 위한 컴퓨터 구현 방법 및 시스템 KR20220065049A (ko)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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