KR20200099149A - 낮은 엔트로피 패스워드로 블록체인 트랜잭션을 승인하기 위한 컴퓨터 구현 시스템 및 방법 - Google Patents

낮은 엔트로피 패스워드로 블록체인 트랜잭션을 승인하기 위한 컴퓨터 구현 시스템 및 방법 Download PDF

Info

Publication number
KR20200099149A
KR20200099149A KR1020207018322A KR20207018322A KR20200099149A KR 20200099149 A KR20200099149 A KR 20200099149A KR 1020207018322 A KR1020207018322 A KR 1020207018322A KR 20207018322 A KR20207018322 A KR 20207018322A KR 20200099149 A KR20200099149 A KR 20200099149A
Authority
KR
South Korea
Prior art keywords
transaction
group
node
requestor
signature
Prior art date
Application number
KR1020207018322A
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 KR20200099149A publication Critical patent/KR20200099149A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/382Payment protocols; Details thereof insuring higher security of transaction
    • G06Q20/3821Electronic credentials
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3239Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/382Payment protocols; Details thereof insuring higher security of transaction
    • G06Q20/3823Payment protocols; Details thereof insuring higher security of transaction combining multiple encryption tools for a transaction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/382Payment protocols; Details thereof insuring higher security of transaction
    • G06Q20/3825Use of electronic signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/382Payment protocols; Details thereof insuring higher security of transaction
    • G06Q20/3829Payment protocols; Details thereof insuring higher security of transaction involving key management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/085Secret sharing or secret splitting, e.g. threshold 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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0863Generation of secret information including derivation or calculation of cryptographic keys or passwords involving passwords or one-time passwords
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3066Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving algebraic varieties, e.g. elliptic or hyper-elliptic curves
    • 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/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q2220/00Business processing using cryptography
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/26Testing cryptographic entity, e.g. testing integrity of encryption key or encryption algorithm
    • H04L2209/38
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/56Financial cryptography, e.g. electronic payment or e-cash

Abstract

요청자와 노드 그룹을 수반하는 블록체인 구현 보안 방법이 제공될 수 있으며, 이는 요청자에 의해 선택된 패스워드와 노드 그룹에 의해 송신된 제 1 수량에 기초하여 요청자의 암호화 키를 생성하는 단계를 포함한다(노드 그룹의 비공개키 지분과 타원 곡선 상의 이선형 매핑을 사용하는 디지털 서명 체계의 생성기 함수로부터 도출됨). 서명이 요청자의 암호화 키에 해당하는 경우, 요청자 블록체인 트랜잭션에 대한 암호화 서명이 생성될 수 있다. 서명은 노드 그룹에서 송신한 패스워드와 제 2 수량(그룹 비공개키 지분으로부터 도출될 수 있음)에 기초할 수 있다. 이 방법은 요청자의 암호화 키를 사용하여 블록체인 트랜잭션의 암호화 서명을 검증하는 단계를 더 포함할 수 있다. 추가적으로 또는 대안적으로, 이 방법은 요청자가 패스워드로 거래를 승인할 수 있도록 노드 그룹을 포함하는 합의 메커니즘을 사용할 수 있다. 이 방법은 초기화 단계, 펀딩 단계 및 지불 승인 단계(사전 지출 트랜잭션과 지출 트랜잭션을 포함함)를 포함하여 논리적인 일련의 단계로 구분될 수 있다.

Description

낮은 엔트로피 패스워드로 블록체인 트랜잭션을 승인하기 위한 컴퓨터 구현 시스템 및 방법
본 발명은 일반적으로 분산 시스템에 관한 것으로, 보다 상세하게는 블록체인에 유지되는 암호화된 자산(cryptographically-enforced asset)(비트코인과 같은 암호화 화폐를 포함함)의 보안성, 신뢰성 및 유용성을 개선하기 위한 방법 및 시스템에 관한 것이다.
본 명세서에서는 '블록체인'이라는 용어를 사용하는데, 이는 모든 형태의 전자, 컴퓨터 기반의 분산 원장을 포함한다. 이것에는 블록체인 및 트랜잭션 체인 기술, 허가 및 미허가 원장, 공유 원장 및 이들의 변형이 포함되지만, 이것으로 제한되는 것은 아니다. 다른 블록체인 구현예가 제안되고 개발되었지만, 가장 널리 알려진 블록체인 기술의 애플리케이션은 비트코인 원장이다. 편의 및 예시의 목적으로 비트코인이 본 명세서에서 참조될 수 있지만, 본 발명은 비트코인 블록체인에 사용되는 것으로만 제한되지 않고, 대안적인 블록체인 구현예 및 프로토콜이 본 발명의 범주 내에 속한다는 점에 유의해야 한다. 본 명세서에서는 용어 "비트코인"을 사용하여 비트코인 프로토콜로부터 도출하는 임의의 모든 프로토콜을 지칭한다.
블록체인은 합의 기반(consensus-based) 전자 원장으로서, 블록으로 구성된 컴퓨터 기반의 탈집중화된(decentralised), 분산형 시스템으로 구현되며, 이는 결국 트랜잭션 정보와 기타 정보로 구성된다. 비트코인의 경우, 각 트랜잭션은 블록체인 시스템 내의 참여자간의 디지털 자산의 제어권 이전(transfer of control)을 인코딩하는 데이터 구조이며, 적어도 하나의 입력과 적어도 하나의 출력을 포함한다. 각 블록에는, 블록이 함께 체인화되어 초기부터 블록체인에 기입된 모든 트랜잭션에 대한 영구적이고 변경할 수 없는 기록을 생성하도록 이전 블록의 해시가 포함된다. 트랜잭션에는 입력 및 출력에 포함된 스크립트로 알려진 작은 프로그램이 포함되어 있는데, 이는 트랜잭션의 출력에 액세스할 수 있는 방법과 대상을 특정한다. 비트코인 플랫폼에서 이들 스크립트는 스택 기반(stack-based) 스크립팅 언어를 이용하여 기입된다.
트랜잭션이 블록체인에 기입되기 위해서는 "유효성 검증 완료(validated)"라야 한다. 일부 네트워크 노드는 채굴기 역할을 하고, 각 트랜잭션이 유효한지 확인하기 위한 작업을 수행하여, 유효하지 않은 트랜잭션은 네트워크에서 거부된다. 예를 들어, 노드에 설치된 소프트웨어 클라이언트는 UTXO(unspent transaction output)를 참조하는 트랜잭션에 대해 이 유효성 검증 작업을 수행한다. 잠금 및 잠금 해제 스크립트를 실행하여 유효성 검증을 수행할 수 있다. 잠금 및 잠금 해제 스크립트의 실행이 TRUE로 평가되고, (충분한 채굴 비용 등을 포함하는) 다른 특정 조건들이 충족되면, 그 트랜잭션은 유효하며, 블록체인에 해당 트랜잭션이 기입될 수 있다. 따라서, 트랜잭션을 블록체인에 기입하기 위해서는, i) 트랜잭션을 수신하는 노드에 의해 유효성이 검증되어야 하고 - 트랜잭션의 유효성이 검증되면, 노드는 네트워크의 다른 노드에 트랜잭션을 중계함 -, ii) 채굴기가 구축한 새로운 블록에 추가되어야 하고, iii) 채굴, 즉, 과거 트랜잭션의 공개 원장에 추가되어야 한다. 블록체인에 블록을 충분히 추가하여 사실상 트랜잭션을 되돌릴 수 없게 만들 때, 트랜잭션이 확인(confirmed)되는 것으로 간주된다.
비공개키(private key)는, 블록체인에 유지되는 암호화 화폐를 지출하는 것과 같이, 블록체인에 유지되는 암호화 보안 자산에 대한 액세스를 제어하는 데 일반적으로 사용된다. 보다 구체적으로, 사용자가 보유한 다른 암호화 자산에 대한 암호화 코인이나 토큰을 송수신하기 위해 공개 어드레스와 비공개키가 사용자에게 통상 제공된다. 비공개키는 사용자가 보유한 암호화 코인이나 다른 암호화 자산이 지출, 인출되거나 또는 다른 방식으로 양도되거나 담보로 제공될 수 있게 하는 비밀 번호이다. 비트코인에서, 비공개키는 보통 256비트 수이다. 공개 어드레스는 사용자의 암호화 자산이 예치 및 수신되는 곳이다. 공개키는 수학적 알고리즘을 통해 비공개키로부터 생성된다. 그러나 공개키로부터 비공개키를 생성하여 프로세스를 반전시키는 것은 현실적으로 불가능하다.
전형적으로 디지털 지갑은 사용자의 비공개키를 저장하는 데 사용된다. 사용자가 보유한 암호화 자산을 지출, 인출 또는 다른 방식으로 양도하거나 담보로 제공하기 위해 트랜잭션이 사용자에 의해 시작되면, 디지털 지갑은 비공개키로 트랜잭션을 처리함으로써 디지털 서명을 생성한다. 어떤 트랜잭션에 대해 유효 서명을 생성하는 유일한 방법은, 비공개키에 해당하는 공개 어드레스에 대해 트랜잭션의 서명이 유효하도록 그 비공개키를 사용하는 것뿐이기 때문에, 시스템의 보안이 유지된다. 서명과 공개 어드레스는 트랜잭션이 (공개 어드레스에 대응하는 비공개키의 보유자인) 사용자로부터 왔는지 검증하고, (송금액이나 수취인 어드레스와 같은) 보안이 필수적인 트랜잭션 요소가 브로드캐스트된 후에는 변경될 수 없도록 하는 데 사용된다. 이들 트랜잭션 요소가 변경되면, 사용자의 서명과 공개 어드레스에 기초한 트랜잭션의 검증이 실패할 것이다.
사용자가 자신의 비공개키를 잃어버린 경우, 사용자는 더 이상 비공개키와 연관된 사용자의 암호화 자산을 지출, 인출 또는 다른 방식으로 양도하거나 담보로 제공할 수 없다. 따라서, 비공개키를 안전한 위치에 보관하는 것이 필수적이다. 디지털 지갑이 사용자의 비공개키를 저장할 수 있는 방법에는 여러 가지가 있다.
일 예에서, 트랜잭션이 사용자의 비공개키로 체결되어야 할 때, 비공개키를 검색할 수 있도록 종이 양식이나 전자 문서에 프린트될 수 있다. 예를 들어, 트랜잭션이 사용자의 비공개키로 체결되어야 할 때, 비공개키가 스캔될 수 있는 QR 코드 형태로 프린트될 수도 있다. 비공개키는 콜드 스토리지(cold-storage)나 하드웨어 지갑을 이용하여 저장될 수도 있는데, 이는 일반적으로 사용자의 비공개키를 안전하게 저장하고 사용자의 비공개키를 이용하여 오프라인에서 트랜잭션에 서명하는 스마트카드나 USB 장치를 사용한다. 다른 예에서, 비공개키는 핫 월렛(hot wallet)을 이용하여 저장될 수 있는데, 일반적으로 비공개키를 저장하고 인터넷에 어떤 방식으로 든 온라인으로 연결된 시스템을 이용하여 트랜잭션에 서명한다.
비공개키를 분실하였을 때, 암호화 자산을 복구하는 것은 암호화 화폐에서 풀리지 않은 유명한 문제이다. 이를 해결할 수 있는 탈중앙화 메커니즘(decentralised mechanism)의 결여는 일반적으로 암호화 화폐의 광범위한 채택에 대한 가장 중요한 장벽 중 하나로 인식된다. 예를 들어, 하드 드라이브 충돌이나 비공개키 분실로 인해 2700개 이상의 비트코인이 사실상 분실된 것으로 추정되었다. 비공개키가 분실되면, 수십억 달러의 가치가 있을지 모르는 비트코인이 사용할 수 없는 지갑에 갇히게 된다.
실제로 비공개키를 분실하면, 온라인 뱅킹 패스워드를 분실한 것과 마찬가지로 보일 수 있다. 그러나 여기에는 적어도 2개의 중요한 차이가 있다. 첫째, 금융 시스템 거래에서는 추적이 가능하고 가역적일 수 있으며, 도난당한 자금은 부정 트랜잭션을 역전시킴으로써 복구할 수 있다. 이에 비해, 비트코인과 같은 암호화 화폐에서는 트랜잭션이 불가역적이며, 부정 발생 시, 중재할 중앙 통제권이 없기 때문에 분명히 불가능한 일이다. 둘째, 은행 패스워드는 사용자가 은행에 자신의 신분을 증명함으로써 복구하거나 재발급 받을 수 있다. 대조적으로, https://walletrecoveryservices.com/와 같은 패스워드 복구 서비스는 몇몇 암호 화폐 지갑에 대해 이용될 수 있다. 그러나 이러한 패스워드 복구 서비스는 일반적으로 성공률이 낮으며(일반적으로 약 30%이며, 사용자가 제공하는 정보에 따라 달라짐), 이 서비스의 수수료는 일반적으로 상당히 비싸다(즉, 패스워드 복구에 성공한 경우, 수수료가 지갑 보유 금액의 최대 20%까지로 될 수 있음).
비공개키를 분실하였을 때, 암호화 자산을 복구하기 위해 제안된 또 다른 해법은 브레인 월렛(brainwallet)으로 지칭되며, 이 경우 비공개키는 사용자가 직접 생성한 충분히 긴 패스워드나 패스프레이즈(passphrase)를 해싱하여 생성된다. 이 해법은 패스워드를 지갑 자체에 저장할 필요없이 '사용자의 두뇌'에 보관할 수 있게 하여 키 저장 문제를 해결하려고 한다. https://brainwallet.io/, https://paper.dash.org/ 등과 같은 온라인 플랫폼은 패스워드/패스프레이즈 및 일부 솔트(salt), 즉, 해싱 단방향 함수에 대한 추가 입력으로 사용되는 임의의 데이터가 주어지면 결정론적 암호 화폐 비공개키를 쉽게 생성할 수 있다. 브레인 월렛 패스워드/패스프레이즈는 안전하고 동시에 기억하기 쉬워야 한다는 점에 유의한다. 이 경우, 보안은 공격자가 패스워드/패스프레이즈를 해독하는 데 필요한 시간을 기준으로 하고, 암기는 기억해야 할 정보의 양에 의존한다. 분명히 두 측면은 서로 반대적인 상관 관계가 있으며, 선택한 패스워드의 엔트로피에 의존한다.
브레인 월렛의 한 가지 문제점은, 공격자가 지갑 자체 내의 잠겨져 있는 암호화 자산에의 완전한 액세스를 가능하게 하기 때문에, 비공개키를 생성하는 데 사용되는 패스워드/패스프레이즈 및 솔트를 크래킹하려고 시도하는 높은 동기가 된다는 점이다. 공격자는 다양한 패스워드/패스프레이즈 및 솔트를 시도하여, 생성된 비공개키가 존재하는지 암호화 자산과 연관되어 있는지를 확인하는 무차별 크래킹 알고리즘(brute force cracking algorithm)을 사용할 수 있다. 현재의 기술로, 칩은 초당 약 236번의 시도를 수행할 수 있다. 또한, 복잡한 패스워드를 사용하고 새롭고 더 빠른 알고리즘을 사용하더라도, 브레인 월렛이 안전하지 않다는 것이 실제 공격으로 나타났다. 특히, 실제 공격은 각 스레드에서 초당 16,250개의 패스워드를 찾아 18,000개 이상의 브레인 월렛 어드레스를 크래킹하였다. 또한, 최근에는 브레인 월렛 비공개키를 생성하기 위해 사용자의 습관을 재구성하고 더 빠른 알고리즘을 설계하여 패스워드/패스프레이즈 및 솔트를 크래킹할 수 있는 해커에게 수백만 개의 실제 유출된 패스워드가 제공되고 있다. 동일 패스워드로부터 도출된 브레인 월렛 어드레스가 트랜잭션 스크립트의 일부로서 블록체인에 저장될 때, 추가적인 취약점이 발생할 수 있다. 그 다음에 여러 어드레스가 동일 시드로부터 도출될 때, 패스워드를 추측하는 것은 더 쉬워진다.
키 스트레칭 기술(Key stretching technique)은 브레인 월렛 어드레스를 크래킹하기 더 어렵게 만드는 데 사용될 수 있다. 이러한 키 스트레칭 기술은 최적화하기 어려운 해시 함수(예컨대, SHA256, SHA1)를 여러 번 사용하여 간단한 패스워드로부터 비공개키를 도출한다. 이러한 기술은 공격 비용을 더 비싸게 하는 데 도움이 되지만, 미래에 대한 보안을 보장하지는 않는다. 실제로, 계산 능력이 향상된 새로운 하드웨어가 생산될 수 있으므로, 비용과 실현 가능성의 관점에서 계산 도전을 더 저렴하게 할 수 있다. 더욱이, 계정 내의 자금의 가치를 상승시키면, 크래킹 당했을 때의 대가가 계정을 크래킹하는 데 필요한 투자액보다 더 큰 비율로 되기 때문에, 상승된 자금의 가치는 불안정해진다. 개인용 컴퓨터가 초당 대략 6,500개의 SHA-1 해시를 수행할 수 있다는 점을 고려하면, 키 스트레칭 해법이 금방 불안정하게 된다는 것을 쉽게 알 수 있다. 키 스트레칭 프로그램은 6,500회의 해시를 사용하고 약 1초 동안 사용자를 지연시킬 수 있다. 공격자의 관점에서 볼 때, 일반적인 패스워드 테스트는 통상 한번의 해시 연산이 필요하므로, 키 스트레칭을 사용하면 공격자의 작업량이 216배 증가한다(정규 패스워드에 추가된 추가 16비트의 엔트로피와 동일). 무어의 법칙(Moore's law)에 따르면, 속도 관점에서 컴퓨터 성능은 1.5년마다 두 배씩 증가되어야 하는 데, 이는 1.5년마다 한 비트 이상의 키 강도(key strength)가 더 쉽게 결정될 수 있다는 것을 의미한다. 일정한 수준의 보안을 유지하기 위해, 키 스트레칭 회수를 1.5년마다 두 배로 해야 하지만, 이는 (i) 사용자가 키 스트레칭을 수행하는 데 더 비싼 계산 비용을 필요로 하고, (ii) 키 스트레칭 알고리즘의 설계자는 이러한 측면을 고려하여 시스템의 수명을 결정해야 한다. 블록체인 채굴기는 또한 '채굴하는 동안' 키 스트레칭 프로세스의 계산 작업을 수행하는 데 사용될 수 있으므로, 추가 비용이 거의 발생하지 않고, 또한, 사용자의 패스워드를 채굴기에 공개하지 않고도 이 작업을 수행할 수 있다. 그러나 이러한 방식은 채굴기가 사용자의 패스워드를 '무료로' 강제하려고 시도할 수 있게 하여 키 스트레칭의 전체적인 목적을 무너뜨린다.
따라서, 사용자가 강화된 보안을 제공할 수 있는 방식에서 패스워드로 트랜잭션을 승인할 수 있고, 패스워드를 역 설계하여 패스워드에 의해 제어되는 암호화 자산을 이전하려는 공격을 저지할 수 있는 개선된 방법과 장치를 제공하는 것이 바람직하다.
따라서, 본 발명에 따르면, 첨부된 청구 범위에 정의된 바와 같은 방법이 제공된다.
따라서, 본 발명에 따르면, 블록체인 구현 방법 및 대응 시스템이 제공될 수 있다. 본 발명은 블록체인 구현 보안 방법(들) 및 대응 시스템(들)으로서 기술될 수 있다.
본 방법은 요청자(requestor) 및 노드 그룹을 수반하며, 이는 요청자에 의해 선택된 패스워드 및 노드 그룹에 의해 송신된 복수의 제 1 수량에 기초하여 요청자의 암호화 키를 생성하는 단계를 포함할 수 있다. 복수의 제 1 수량은 노드 그룹의 비공개키 지분과 타원 곡선(elliptic curve)에서 이선형 매핑(bilinear mapping)을 사용하는 디지털 서명 체계(digital signature scheme)의 생성기 함수(generator function)에 기초할 수 있다. 이 방법은 요청자의 블록체인 트랜잭션에 대한 암호화 서명을 생성하는 단계를 더 포함할 수 있고, 암호화 서명은 디지털 서명 체계의 타원 곡선상의 이선형 매핑에 기초하는 요청자의 암호화 키에 대응한다. 암호화 서명은 요청자에 의해 선택된 패스워드와 노드 그룹에 의해 송신된 복수의 제 2 수량에 기초할 수 있다. 복수의 제 2 수량은 노드 그룹의 비공개키 지분에 기초할 수 있다. 이 방법은 요청자의 암호화 키를 사용하여 블록체인 트랜잭션의 암호화 서명을 검증하는 단계를 더 포함할 수 있다.
추가적으로 또는 대안적으로, 이 방법은 사용자(요청자)가 패스워드로 트랜잭션을 안전하게 승인할 수 있도록 노드 그룹을 포함하는 합의 메커니즘을 채택할 수 있다. 패스워드는 방법의 모든 단계에서 직접 노출되지 않는다. 패스워드의 엔트로피가 높을 필요가 없고(따라서 낮을 수도 있음), 패스워드의 정보량이 패스워드의 엔트로피에 비례하므로 패스워드의 기억 가능성을 향상시킬 수 있다.
추가적으로 또는 대안적으로, 본 방법은 각 노드가 디지털 자산을 그룹으로 이전하여 그룹에 가입하고, 그룹의 각 노드가 대응하는 비공개키 지분을 저장하는 노드 그룹을 채택한다.
추가적으로 또는 대안적으로, 이 방법은 노드 그룹이 요청자에 의해 브로드캐스팅된 펀딩 트랜잭션을 수신하는 펀딩 단계를 포함할 수 있으며, 여기서, 펀딩 트랜잭션은 요청자의 하나 이상의 디지털 자산을 특정하며, 이러한 디지털 자산의 전부 또는 일부는 요청자가 선택한 패스워드를 사용하여 이전될 수 있다.
추가적으로 또는 대안적으로, 이 방법은 노드 그룹이 펀딩 트랜잭션에 특정된 대로 요청자의 하나 이상의 디지털 자산의 일부를 이전하는 지출 트랜잭션을 수신하는 지불 승인 단계를 포함할 수 있다. 지출 트랜잭션은 요청자의 암호화 키에 대응하는 암호화 서명을 포함한다. 노드 그룹은 요청자의 암호화 키를 사용하여 지출 트랜잭션의 서명을 검증한다.
추가적으로 또는 대안적으로, 상기 방법은 노드 그룹이 요청자에 의해 브로드캐스트된 초기화 트랜잭션을 수신하는 초기화 단계를 더 포함할 수 있고, 여기서, 초기화 트랜잭션은 요청자와 연관된 패스워드를 설정하고자 하는 요구를 나타낸다. 노드 그룹은 초기화 트랜잭션에 응답하여 각각의 제 1 수량을 생성하고, 각각의 제 1 수량을 포함하는 요청자에게 각각의 제 1 메시지를 송신한다.
추가적으로 또는 대안적으로, 지불 승인 단계는 요청자에 의해 브로드캐스트된 사전 지출 트랜잭션을 수신하는 그룹을 포함할 수 있고, 여기서, 사전 지출 트랜잭션은 트랜잭션 예치금을 이전하고 지출 트랜잭션의 적어도 일부의 해시를 포함하며, 지출 트랜잭션의 적어도 일부의 해시는 디지털 서명 체계의 해시 함수에 기초한다. 노드 그룹은 사전 지출 트랜잭션에 응답하여 각각의 제 2 수량을 생성하고, 각각의 제 2 수량을 포함하는 요청자에게 각각의 제 2 메시지를 송신한다.
추가적으로 또는 대안적으로, 초기화 트랜잭션은 요청자에 의해 그룹에 지불되는 초기화 비용을 포함할 수 있다. 초기화 비용은 그룹과 연관된 공개 그룹 어드레스로 지불할 수 있다. 그룹의 적어도 하나의 노드가 일치하지 않는 제 1 수량을 요청자에게 송신하는 경우에 초기화 비용을 요청자에게 반환할 수 있다. 제 1 수량의 불일치는 검증 가능한 비밀 공유 체계를 사용하여 결정될 수 있다.
추가적으로 또는 대안적으로, 사전 지출 트랜잭션의 트랜잭션 예치금은 노드 그룹과 연관된 공개키로 잠길 수 있다. 사전 지출 트랜잭션에는 지출 비용이 포함될 수 있다. 그룹은 검증에 성공하는 경우, 지출 비용을 뺀 트랜잭션 예치금을 선택적으로 요청자에게 다시 이전할 수 있다. 검증에 실패한 경우, 그룹은 트랜잭션 예치금을 선택적으로 몰수할 수 있다. 그룹 노드 중 적어도 하나의 노드가 일치하지 않는 제 2 수량을 요청자에게 송신하는 경우에 트랜잭션 예치금을 요청자에게 반환할 수 있다. 제 2 수량의 불일치는 바람직하게는 검증 가능한 비밀 공유 체계를 사용하여 결정될 수 있다.
추가적으로 또는 대안적으로, 지출 비용은 노드 그룹과 연관된 공개키에 지불될 수 있다. 그룹의 노드는 지출 비용이 충분한지 검증할 수 있으며, 지출 비용의 충분성은 바람직하게는 제 3 트랜잭션과 지출 트랜잭션을 처리하는 데 필요한 계산 자원에 기초한다. 그룹의 노드는 지출 비용의 충분성 검증에 실패한 경우, 사전 지출 트랜잭션의 추가 처리를 선택적으로 건너뛸 수 있다. 그룹의 노드는 지출 비용을 그룹에 선택적으로 분배할 수 있다.
추가적으로 또는 대안적으로, 펀딩 트랜잭션은 요청자의 하나 이상의 디지털 자산이 요청자의 암호화 키에 의해 잠기므로 대응하는 암호화 서명에 의해 소비될 수 있음을 특정할 수 있다. 본 실시예에서, 노드 그룹과 선택적으로 해당 그룹에 속하지 않는 다른 노드에 의해 요청자의 암호화 키를 사용하여 서명된 지출 트랜잭션의 암호화 서명을 검증할 수 있다.
추가적으로 또는 대안적으로, 펀딩 트랜잭션은 요청자의 하나 이상의 디지털 자산이 그룹의 공개키에 의해 잠기므로 그룹의 비공개키 지분의 임계값 수(threshold number)에 기초한 서명에 의해 지출될 수 있음을 특정할 수 있다. 본 실시예에서, 노드 그룹만이 요청자의 암호화 키를 사용하여 서명된 지출 트랜잭션의 서명을 검증할 수 있다. 서명된 지출 트랜잭션의 서명을 성공적으로 검증하면, 그룹은 그룹의 비공개키 지분의 임계값 수에 기초하여 서명을 생성하고, 이 서명을 포함하는 2차 지출 트랜잭션을 구성하기 위해 협력할 수 있다.
실시예에서, 제 1 수량은 그룹의 각 노드로부터 요청자에게 송신된 비공개 메시지에 포함될 수 있고 요청자의 공개키로 암호화될 수 있다. 그룹의 노드는 노드의 비공개키 지분을 저장하는 신뢰할 수 있는 실행 환경을 가질 수 있으며, 노드의 신뢰할 수 있는 실행 환경은 노드의 비공개키 지분과 서명 체계의 생성기 함수에 적어도 부분적으로 기초하여 제 1 수량을 생성할 수 있다. 각 비공개 메시지는 노드의 신뢰할 수 있는 실행 환경의 공개키와 연관될 수 있고, 노드의 신뢰할 수 있는 실행 환경의 대응하는 비공개키로 서명될 수 있다.
실시예에서, 제 2 수량은 그룹의 각 노드로부터 요청자에게 송신되는 비공개 메시지에 포함될 수 있고 요청자의 공개키로 암호화될 수 있다. 그룹의 노드는 노드의 신뢰할 수 있는 실행 환경을 가질 수 있으며, 이 실행 환경은 노드의 제 3 트랜잭션 및 비공개키 지분에 포함된 서명되지 않은 지출 트랜잭션의 해시에 적어도 부분적으로 기초하여 제 2 수량을 생성한다. 각 비공개 메시지는 노드의 신뢰할 수 있는 실행 환경의 공개키와 연관될 수 있고, 노드의 신뢰할 수 있는 실행 환경의 대응하는 비공개키로 서명될 수 있다.
실시예에서, 하나 이상의 노드는 작업 증명(proof-of-work) 블록체인에 저장하기 위해 펀딩 트랜잭션과 서명된 지출 트랜잭션을 채굴할 수 있다.
본 발명에 따르면, 프로세서, 컴퓨터 메모리 및 네트워크 인터페이스 장치를 포함하는 전자 장치가 제공될 수 있다. 메모리는, 실행될 때, 본 명세서에 설명된 방법을 수행하도록 프로세서를 구성하는 컴퓨터 실행 가능 명령어를 저장한다.
본 발명에 따르면, 컴퓨터 판독 가능 저장 매체가 제공될 수 있다. 컴퓨터 판독 가능 저장 매체는 컴퓨터 실행 가능 명령어를 포함하는 데, 이 명령어가 실행될 때, 본 명세서에 설명된 방법을 수행하도록 프로세서를 구성한다.
본 발명의 이들 및 다른 양태는 여기에 설명되는 실시예를 참조하여 명백해지고 명확해질 것이다. 본 발명의 실시예는 첨부 도면을 참조하여, 단지 예로서, 이하에 상세히 설명될 것이다.
도 1(a)는 예시적인 블록체인 네트워크의 블록도를 도시한다.
도 1(b)는 비트코인 블록체인 환경에 대한 특정 블록체인 트랜잭션의 예를 나타낸다.
도 2는 블록체인 네트워크에서 노드로 기능할 수 있는 예시적인 전자 장치의 블록도를 도시한다.
도 3은 사용자가 패스워드로 거래를 안전하게 승인할 수 있도록 하기 위해 위원회(congress)를 포함하는 합의 메커니즘을 이용하는 예시적인 방법의 상위 레벨 흐름도이다.
도 4는 위원회를 설립하는 도 3의 단계의 예시적인 상세를 나타내는 흐름도이다.
도 5a 내지 도 5d는 도 3의 초기화 단계의 예시적인 상세를 집합적으로 나타내는 흐름도이다.
도 6은 도 3의 펀딩 단계의 예시적인 상세를 나타내는 흐름도이다.
도 7a 내지 도 7d는 도 3의 지불 승인 단계의 예시적인 상세를 집합적으로 나타내는 흐름도이다.
도 8a 및 도 8b는 사용자가 패스워드로 거래를 안전하게 승인할 수 있도록 하기 위해 위원회를 포함하는 합의 메커니즘을 이용하는 다른 예시적인 방법의 흐름도이다.
블록체인 네트워크
먼저, 블록체인와 연관된 예시적인 블록체인 네트워크(100)를 블록도 형식으로 도시한 도 1(a)를 참조할 것이다. 블록체인 네트워크는 공개 블록체인 네트워크일 수 있으며, P2P(peer-to-peer) 공개 멤버쉽 네트워크는 초대없이 또는 다른 회원의 동의없이 누구나 참여할 수 있다. 블록체인 네트워크(100)가 작동하는 블록체인 프로토콜의 인스턴스를 실행하는 분산형 전자 장치는 블록체인 네트워크(100)에 참여할 수 있다. 이러한 분산형 전자 장치는 노드(102)로 지칭될 수 있다. 블록체인 프로토콜은, 예를 들어, 비트코인 프로토콜일 수 있다.
블록체인 프로토콜을 실행하고 블록체인 네트워크(100)의 노드(102)를 형성하는 전자 장치는, 예를 들어, 데스크탑 컴퓨터, 랩톱 컴퓨터, 태블릿 컴퓨터, 서버, 스마트 폰과 같은 휴대기기, 스마트 워치나 기타 전자 장치와 같은 웨어러블 컴퓨터를 포함하는 다양한 유형일 수 있다.
블록체인 네트워크(100)의 노드(102)는 유무선 통신 기술을 포함할 수 있는 적절한 통신 기술을 사용하여 서로 연결된다. 이러한 통신은 블록체인과 연관된 프로토콜을 준수한다. 예를 들어, 블록체인이 비트코인 블록체인인 경우, 비트코인 프로토콜이 사용될 수 있다.
노드(102)는 블록체인 상의 모든 트랜잭션의 글로벌 원장(global ledger)을 유지한다. 따라서 글로벌 원장은 분산 원장이다. 각 노드(102)는 글로벌 원장의 완전한 사본이나 부분 사본을 저장할 수 있다. 작업 증명(proof-of-work)에 의해 확보된 블록체인의 경우, 글로벌 원장에 영향을 미치는 노드(102)에 의한 트랜잭션은 다른 노드(102)에 의해 검증되어 글로벌 원장의 유효성이 유지된다. 또한, 블록체인이 작업 증명 기반 블록체인인 경우, 블록과 함께 제출된 작업 증명을 확인하여 블록을 검증한다.
노드(102) 중 적어도 일부는 블록체인 네트워크(100)의 채굴기(104)로서 동작한다. 도 1(a)의 블록체인 네트워크(100)는 블록체인에서의 트랜잭션을 용이하게 하기 위해, 채굴기(104)가 대량의 연산을 수행하는 작업 증명 블록체인이다. 예를 들어, 작업 증명 블록체인은 채굴기가 암호화 문제를 해결하도록 요구할 수 있다. 비트코인에서, 채굴기(104)는 블록 헤더(block header)가 SHA-256을 이용하여 현재 난이도(current difficulty)에 따라 정의된 값보다 작은 수로 해싱하도록 논스(nonce)를 찾는다. 작업 증명 알고리즘에 요구되는 해싱 능력이란, 어떤 수 이상의 블록이 채굴된 후에는, 트랜잭션이 사실상 불가역적인 것으로 간주된다는 것을 의미한다. 암호화 문제를 해결하는 채굴기(104)는 블록체인에 대한 신규 블록을 생성하고, 신규 블록을 다른 노드(102)에 브로드캐스트한다. 다른 노드(102)는 채굴기(104)가 실제로 암호화 문제를 해결했으며, 따라서 블록이 블록체인에 추가되어야 한다는 것을 승인하기 전에 작업 증명을 충분히 입증했는지를 검증한다. 블록은 노드(102)의 합의(consensus)에 의해 블록체인(예컨대, 분산 글로벌 원장)에 추가된다.
채굴기(104)에 의해 생성된 블록은 노드(102)에 의해 블록체인에 브로드캐스트된 트랜잭션을 포함한다. 예를 들어, 블록은 노드(102) 중 하나와 연관된 어드레스로부터 노드(102) 중 다른 하나와 연관된 어드레스로의 트랜잭션을 포함할 수 있다. 이러한 방식으로, 블록은 하나의 어드레스로부터 다른 어드레스로의 트랜잭션의 레코드로서 기능한다. 트랜잭션이 블록에 포함되도록 요청한 당사자는 그들의 공개키에 대응하는 비공개키를 이용하여 요청에 서명함으로써 (예컨대, 비트코인의 경우, 비트코인을 지출할 수 있는) 이전(transfer) 개시 권한이 있음을 증명한다. 이전은 요청이 유효하게 서명된 경우에만 블록에 추가될 수 있다.
비트코인의 경우, 공개키와 어드레스 사이에 일대일 대응 관계가 있다. 즉, 각 공개키는 단일 어드레스와 연관된다. 따라서, 본 명세서에서 공개키로(또는 공개키로부터) 디지털 자산을 이전하는 것(예컨대, 공개키에 지불)과 그 공개키와 연관된 어드레스로(또는 어드레스로부터) 디지털 자산을 이전하는 것에 대한 설명은 공통의 동작을 참조한다.
일부 노드(102)는 유효성 검증 노드로서 참여할 수 있고, 또한 채굴기로서 동작할 수 있다(또는 동작하지 않을 수 있다). 유효성 검증 노드는 서명(들) 확인, 유효한 UTXO에 대한 참조 확인 등을 포함할 수 있는 트랜잭션의 유효성 검증을 수행한다.
도 1(a)의 예는 5개의 노드(102)를 포함하고, 그 중 3개는 채굴기(104)로서 참여하고 있다. 실제로, 노드(102)나 채굴기(104)의 수는 상이할 수 있다. 많은 블록체인 네트워크에서, 노드(102)와 채굴기(104)의 수는 도 1(a)에 도시된 수보다 훨씬 많을 수 있다.
도 1(b)는 비트코인 블록체인에 저장될 수 있는 트랜잭션(150)의 예를 도시한다. 유사한 기능의 다른 변형도 가능하다. 트랜잭션의 데이터 요소나 필드는 도 1(b)에 도시된 바와 같을 수 있고, 본 발명에서 설명된 것 이외의 추가 필드를 포함할 수 있다. 도시된 바와 같이, 트랜잭션(150)의 블록체인 프로토콜 버전을 나타내는 값을 포함하는 블록체인 버전 필드(152)가 존재한다. #vin 필드(154)는 트랜잭션(150)에 몇 개의 트랜잭션 입력(아래에 설명됨)이 존재하는지를 표시한다. 도시되지는 않았지만, 다른 필드들이 존재할 수 있고, 각각의 트랜잭션 입력(여기에서는 Vin[y](160)으로 예시됨)에 대해, 이전 트랜잭션의 트랜잭션 ID(TxID)(161), 이전 트랜잭션(트랜잭션 입력(160)과 일치하도록 트랜잭션 출력을 제공하는 트랜잭션)의 출력 중 하나에 대한 인덱스(162)를 포함하는 필드 세트가 존재하며, 여기서, TxID(161)와 인덱스(162)는 함께 이전 트랜잭션의 출력을 참조하는 포인터(163)를 형성한다. 본 명세서에서 사용되는 바와 같이, 현재 또는 현존 트랜잭션(current or present transaction)과 관련한 맥락에서 사용될 때, 용어 "이전 트랜잭션"은 현재 또는 현존 트랜잭션에 의해 참조된(및 "지출된") 트랜잭션 출력을 갖는 특정한 이전 트랜잭션(또는 트랜잭션)를 지칭한다. 예에서, 현재 또는 현존 트랜잭션은 "지출(spending) 트랜잭션"이라고 지칭될 수 있다.
일부 블록체인 구현예에서는, 고유 TxID 값을 할당하기 위한 중앙 집중형 메커니즘이 없고, 대신 트랜잭션 자체 내용의 해시를 생성하는 것과 같이 트랜잭션에 대한 고유 TxID를 생성하기 위한 분산형 메커니즘이 존재한다. 유효 트랜잭션이 다른 유효 트랜잭션과 완전히 동일한 내용을 모두 가질 수 없으므로, 각각의 유효 트랜잭션은 TxID에 대해 고유한 해시를 포함할 것이다(해시 충돌의 천문학적으로 낮은 확률은 제외). 그러나, 본 명세서에서는 각 트랜잭션이 고유한 트랜잭션 ID를 가지고 있다고 가정한다. 해싱의 특성상, 트랜잭션의 내용으로부터 TxID가 생성되면, 해당 내용의 어느 것도 변경할 수 없으며, TxID가 해당 트랜잭션에 대해 유효하게 유지되도록 한다.
도 1(b)에 도시된 바와 같이, 트랜잭션 입력 Vin[y](160)에 대한 필드 세트는 또한 다음에 오는 잠금 해제 스크립트의 길이를 나타내는 Unlocking_Script_Length 필드(164)와, 포인터(163)에 의해 표시된 트랜잭션 출력의 대응하는 잠금 스크립트를 “잠금 해제”하는 Vin[y](160)에 대한 잠금 해제 스크립트(일반적으로 비트코인 프로토콜에서 "scriptSig"로 지칭됨)를 포함하는 Unlocking_Script 필드(165), 및 트랜잭션(150)을 제한하는 데 사용될 수 있는 Sequence# 필드(166)를 포함한다.
도 1(b)는 하나의 트랜잭션 입력과 하나의 트랜잭션 출력만을 명시적으로 나타내지만, 각각은 하나보다 많을 수 있다. 트랜잭션 입력에 뒤이어, 트랜잭션(150)에 몇 개의 트랜잭션 출력(이하에 더 설명됨)이 존재하는 지를 나타내는 #vout 필드(180)가 존재한다. 각 트랜잭션 출력(여기서는 Vout[x](180)를 예로 들어 설명함)에는, 이 트랜잭션 출력 Vout[x](180)에 의해 제공된 트랜잭션 값을 나타내는 출력값 필드(181)와 뒤이어 오는 잠금 스크립트의 길이를 나타내는 Locking_Script_Length 필드(182), 및 이 트랜잭션 출력 Vout[x](180)에 대한 잠금 스크립트(일반적으로 비트코인 프로토콜에서 "scriptPubKey"로 지칭됨)를 포함하는 Locking_Script 필드(183)를 포함하는 필드 세트가 존재한다. 전술한 바와 같이, 이 트랜잭션 출력의 트랜잭션 값은, 잠금 해제 스크립트를 포함하는, 그 잠금 해제 스크립트와 잠금 스크립트를 사용하여 검증을 수행할 때 블록체인 노드가 TRUE로 검증할 트랜잭션 입력을 구비하는 지출 트랜잭션을 생성할 수 있는 사람이라면 누구나 “지출”할 수 있다. 특정된 미래 시간 이전이나 특정된 미래 블록 이전에 활성화되지 않도록 트랜잭션(150)을 제한할 수 있는 잠금 시간 필드(190)와 같은 다른 필드는 트랜잭션 출력 필드에 뒤따를 수 있다. 지출 트랜잭션의 각 트랜잭션 입력이 이전 트랜잭션 출력 중 대응하는 트랜잭션 출력을 가리키고, 이전 트랜잭션 출력이 트랜잭션 값을 포함하는 경우, 트랜잭션 입력은 그 트랜잭션 값을 나타내는 필드를 포함할 필요는 없다.
이하에서 설명되는 바와 같이, 다양한 노드(102)는 여기서 위원회(congress)(110)로 지칭될 그룹을 형성하도록 협력할 수 있다. 예시된 예에서, 3개의 노드(102)가 위원회(110)에 참여하는 것으로 도시되어 있다. 그러나 실제 위원회(110)의 수는 훨씬 더 많을 수 있다.
위원회(110)는 위원회(110)와 연관된 풀(pool)에 충분한 지분을 제출하면 임의의 노드(102)에 의해 가입될 수 있는 공개 멤버쉽 그룹(open-membership group)이다. 예를 들어, 노드는 디지털 화폐(예컨대, 비트코인), 토큰 또는 기타 지분이나 가치와 같은 디지털 자산을 위원회(110)와 연관된 계정으로 이전하는 것을 통해 위원회에 가입할 수 있다. 위원회에 가입하는 노드(102)는 채굴 노드와 비채굴 노드의 양쪽 모두를 포함하는 블록체인 네트워크의 임의의 노드일 수 있다. 위원회의 적어도 일부 응용에서는, 위원회 회원으로서 활동하는 노드가 전체 블록체인을 다운로드한다(그러나 반드시 유지되는 것은 아님)는 의미에서 블록체인을 모니터링한다. 위원회(110)를 확립하고 유지하기 위한 기술은 2017년 4월 11일자로 출원된 독일 특허 출원 제1705867.8호(대리인 관리 번호: P510727/CEJ) 및 2017년 4월 11일자로 출원된 독일 특허 출원 제1705869.4호(대리인 관리 번호: P510728/CEJ)에 기술되어 있다.
위원회의 회원은 대안적인 체인 네트워크(120)를 형성할 수 있다. 대안적인 체인 네트워크(120)는 대안 체인으로 지칭될 분산 원장을 생성하고 유지한다. 대안적인 체인 네트워크(120)는 블록체인 네트워크(100)에서 생성된 알고리즘 관련 분쟁을 중재하기 위해 배치될 수 있다. 한 노드의 프로세서 생성 작업 제품의 신뢰성에 다른 노드가 이의를 제기하는 경우 그러한 분쟁이 생길 수 있다. 대안적인 체인 네트워크(120)는 다른 목적을 위해 배치될 수도 있다.
블록체인 네트워크(100)와 연관된 블록체인은 작업 증명 블록체인(proof-of-work blockchain)이지만, 대안 체인은 지분 증명 블록체인이다. 지분 증명 기반의 대안적인 체인 네트워크(120)는 합의를 달성하기 위한 대안적인 메커니즘을 제공한다. 지분 증명 대안 체인에서, 블록체인은 작업 증명이 아닌 지분 증명에 의해 보호된다. 지분 증명에 따라, 대안 체인의 채굴기(125)는 디지털 자산의 예치금을 예치하고, 블록을 채굴하기 위한 노드로 선택될 확률은 예치금으로 제공되는 디지털 자산의 양자(quantum)에 비례한다. 이러한 지분 증명 블록체인 시스템은 일반적으로 작업 증명 블록체인에서 채굴에 필요한 계산 비용과 에너지를 회피하기 위해 사용될 수 있다.
복수의 노드(102)는 대안적인 체인 네트워크(120)의 채굴기(125)로서 기능한다. 대안적인 체인 네트워크(120)의 채굴기(125) 중 적어도 일부는 블록체인 네트워크(100)의 채굴기(104)로서 기능하지 않을 수 있다. 대안적인 체인 네트워크(120)는 지분 증명 블록체인 네트워크이기 때문에, 채굴기(125)는 채굴기로 포함되기 위해 디지털 자산을 예치한다. 보다 구체적으로, 대안 체인용 채굴기(125)는 대안적인 체인 네트워크(120)에서 채굴하기 위해 결합된 유효성 검증기 세트를 형성한다. 이들 채굴기(125)는 또한 작업 증명 블록체인 네트워크(100)와 연관된 위원회(110)의 회원일 수 있다. 즉, 작업 증명 블록체인 네트워크(100)와 대안적인 체인 네트워크(120)의 일부인 노드(102)는 대안적인 체인 네트워크(120)에 대한 채굴기(125)와 작업 증명 블록체인 네트워크(100)에 확립된 위원회(110)의 회원으로서 작동한다. 이들 채굴기(125)는 위원회(110)에 가입하여 아래에 설명된 방법에 따라 위원회(110)에 참가한다. 위원회 풀에 그들의 디지털 자산을 예치하는 것은 작업 증명 블록체인으로 이루어진다. 즉, 위원회 회원은 작업 증명 블록체인 네트워크(100)에 자신의 "지분(stake)"를 예치하여, 결합된 유효성 검증기 세트를 형성함으로써 대안 체인에서 채굴기(125)로 동작할 수 있게 하는 위원회 회원으로 된다.
실시예에서, 대안 체인 네트워크(120)의 대안 체인은 지분 증명 고스트 체인일 수 있으며, 이는 임시 지분 증명 블록체인이다. 기존 블록체인과 달리, 지분 증명 고스트 체인은 일단 목적을 달성하면 종료되도록 구성된다. 즉, 고스트 체인은 일단 목적이 달성되면 사라지는 단일 목적의 블록체인이다. 지분 증명 고스트 체인은 제 1 블록을 포함하는 데, 이 블록은 기원 블록(genesis block)으로 지칭될 수 있으며, 지분 증명 고스트 체인이 자신의 목적을 위해 전개될 때만 생성된다. 지분 증명 고스트 체인 네트워크에 대한 자세한 내용은 2017년 4월 11일자로 출원된 독일 특허 출원 제1705869.4호(대리인 관리 번호 P510728/CEJ)에 기술되어 있다.
노드로서 작동하는 전자 장치
도 2는 블록체인 네트워크(100)(도 1(a))에서 노드(102)(도 1(a))로서 기능할 수 있는 예시적인 전자 장치(200)의 구성 요소를 도시하는 블록도이다. 예시적인 전자 장치(200)는 또한 처리 장치로 지칭될 수 있다. 전자 장치는, 예를 들어, 데스크탑 컴퓨터, 랩톱 컴퓨터, 태블릿 컴퓨터, 서버, 스마트 폰과 같은 모바일 장치, 스마트 워치와 같은 웨어러블 컴퓨터, 또는 다른 유형의 형태를 포함하는 다양한 형태를 취할 수 있다.
전자 장치(200)는 프로세서(210), 메모리(220) 및 네트워크를 통한 데이터 통신을 위한 네트워크 인터페이스 장치(230)를 포함한다. 이들 구성 요소는 서로 직접 또는 간접적으로 연결되어 서로 통신할 수 있다. 예를 들어, 프로세서(210), 메모리(220) 및 네트워크 인터페이스 장치(230)는 버스(240)를 통해 서로 통신할 수 있다. 메모리(220)는 본 명세서에 기술된 기능을 수행하기 위한 기계 판독 가능 명령어와 데이터를 포함하는 컴퓨터 소프트웨어 프로그램을 저장한다. 예를 들어, 메모리는, 프로세서(210)에 의해 실행될 때, 전자 장치로 하여금 여기에 설명된 방법을 수행하게 하는 프로세서 실행 가능 명령어를 포함할 수 있다. 프로세서 실행 가능 명령어는, 프로세서(210)에 의해 실행될 때, 전자 장치로 하여금 블록체인 네트워크(100)와 연관된 프로토콜을 구현하게 하는 명령어를 포함할 수 있다(도 1(a)). 예를 들어, 명령어는 비트코인 프로토콜을 구현하기 위한 명령어를 포함할 수 있다.
메모리(220)는 블록체인 네트워크(100)의 글로벌 원장(도 1(a))이나 그 일부를 저장할 수 있다. 즉, 메모리(220)에는 블록체인의 모든 블록이나 가장 최근의 블록과 같은 블록의 일부, 또는 일부 블록 내의 정보의 일부가 저장될 수 있다. 또한, 대안 체인(예컨대, 고스트 체인)이 전개될 때, 메모리(220)는 대안 체인(예컨대, 고스트 체인)이나 그 일부를 저장할 수 있다.
메모리(220)가 도 2에 단일 블록으로 도시되어 있지만, 실제로 전자 장치(200)는 다수의 메모리 구성 요소를 포함할 수 있다. 메모리 구성 요소는, 예를 들어, RAM, HDD, SSD, 플래시 드라이브 등을 포함하는 다양한 유형일 수 있다. 상이한 유형의 메모리는 상이한 목적에 적합할 수 있다. 또한, 메모리(220)는 프로세서(210)와 별개로 도시되어 있지만, 프로세서(210)는 내장 메모리를 포함할 수 있다.
도 2에 도시된 바와 같이, 프로세서(210)는 TEE(Trusted Execution Environment)(250)로 지칭되는 보안 영역을 포함할 수 있다. TEE(250)는 분리된 실행 환경, 신뢰할 수 있는 애플리케이션의 무결성 및 자산 보안성과 같은 전자 장치(200)에 추가적인 보안을 제공하는 분리된 실행 환경이다. TEE(250)는 TEE(250) 내에서 실행된 명령어와 데이터가 나머지 전자 장치(200)와, 전자 장치의 소유자와 같은 외부 당사자의 액세스와 조작으로부터 보호되도록 적어도 부분적으로 하드웨어 수준으로 구현된다. TEE(250) 내의 데이터와 계산은 TEE(250)를 포함하는 노드(102)를 운영하는 당사자로부터 보호된다. TEE(250)는 실행 공간과 데이터 저장 장치를 제공하여 TEE(250) 내부에 로드된 컴퓨터 명령어와 데이터가 보안성과 무결성 측면에서 보호되도록 보장할 수 있다. TEE(250)는 프로세서(210) 상에서 실행되는 보안 가상 기계로도 구현될 수 있다. 대안적인 실시예에서, TEE(250)는 프로세서(210)와 분리되어 별개의 전용 보안 프로세서에 의해 구현될 수 있다. TEE(250)는 키와 같은 중요한 리소스의 무결성과 보안성을 보호하는 데 사용될 수 있다. TEE(250)는 TEE(250) 내에서 실행된 명령어와 데이터가 나머지 전자 장치(200)와, 전자 장치의 소유자와 같은 외부 당사자의 액세스와 조작으로부터 보호되도록 적어도 부분적으로 하드웨어 수준으로 구현될 수 있다. TEE(250) 내의 데이터와 계산은 TEE(250)를 포함하는 노드(102)를 운영하는 당사자로부터 보호될 수 있다.
TEE(250)는 엔클레이브(enclave)를 인스턴스화한 다음, 누적하여 해싱하면서 한 번에 하나씩 메모리 페이지를 추가하도록 동작할 수 있다. 원격 머신(개발자 머신 또는 다른 머신일 수도 있음)에서 유사한 동작을 수행하여 원격 머신이 예상되는 해시를 결정하고 저장할 수 있다. 따라서, 임의의 원격 머신에 의해 엔클레이브의 내용이 검증되어 엔클레이브가 승인된 알고리즘을 실행하고 있는지 확인할 수 있다. 이 검증은 해시를 비교하여 수행될 수 있다. 엔클레이브가 완전히 구축되면 잠긴다. TEE(250)에서 코드를 실행하고 비밀을 코드로 송신할 수 있지만, 코드는 변경할 수 없다. 최종 해시는 증명 키(TEE 내부에 있음)에 의해 서명될 수 있고, 데이터 소유자가 임의의 비밀을 엔클레이브로 송신하기 전에 데이터 소유자가 이것을 검증 가능하게 할 수 있다.
TEE(250)는 위원회(110)에 의해 사용된 위원회 공개키와 연관된 비공개키 지분의 보안성 및 무결성을 보호하기 위해 사용될 수 있다(도 1(a)). 예를 들어, TEE(250)는 비공개키 지분의 생성 및 저장을 위해 사용될 수 있다. TEE(250)는 회원이 TEE(250) 엔클레이브 내에 보관된 비공개키 지분, 또는 회원간 통신이나 엔클레이브 내부 통신으로부터의 다른 비공개키 지분에 대한 정보를 직접 얻을 수 없도록 하기 위한 것이다. 프로토콜은 또한 엔클레이브 임계값의 손상(compromise)에 대해 강력하다. 또한, TEE(250)는 다른 노드(102)에 TEE(250)가 진본이고 위원회(110)에 의해 구현된 프로토콜에 대하여 승인된 컴퓨터 실행 가능 명령어를 실행하고 있다는 것을 증명하기 위해 노드(102)(도 1(a))에 의해 사용될 수 있는 원격 증명이 가능할 수 있다. 원격 증명이 특정 코드를 실행하고, 엔클레이브용 내부 증명 키로 서명된 엔클레이브 내부의 코드의 해시를 송신함으로써 TEE(250)에 의해 제공될 수 있다.
TEE(250)는, 이전에 전자 장치(200)에 비공개키 지분을 사용했던 위원회(110)의 회원이 위원회를 탈퇴하기로 선택한 경우, 비공개키 지분의 삭제를 증명하기 위해 사용될 수 있다. 전자 장치(200)는 TEE(250)에 제공된 원격 증명 프로토콜을 통해 다른 위원회 회원에게 삭제 증명을 시그널링할 수 있다. 회원이 회원 예치금을 인출하기 전에 삭제 증명이 필요할 수 있다. 즉, 예치금은 회원의 엔클레이브 내에 보관된 비공개키 지분의 삭제에 대한 증명 상태에 따라 반환될 수 있다.
TEE(250)는 비공개키, 랜덤 챌린지 또는 다른 랜덤 데이터를 생성하는 데 사용될 수 있는 TEE의 엔클레이브 내부에 있는 보안 난수 생성기(secure random number generator)를 구비할 수 있다. TEE(250)는 또한 외부 메모리로부터 데이터를 판독하고 외부 메모리에 데이터를 기록하도록 구성될 수 있다. 이러한 데이터는 엔클레이브 내부에만 있는 비밀 키로 암호화될 수 있다.
TEE(250)는 TPM(Trusted Platform Module)이나 SGX(Intel Software Guard Extensions)와 같은 다양한 플랫폼을 사용하여 구현될 수 있다. 예를 들어, SGX는 원격 증명을 지원하고, 이를 통해 엔클레이브가 쿼트(quote)이라고 알려진 회원의 주어진 해시를 사용하여 특정 엔클레이브를 실행하는 프로세서로부터 서명된 스테이트먼트(statement)를 얻을 수 있다. IAS(Intel Attestation Service)와 같은 제 3 자 증명 서비스에서는 이러한 서명된 스테이트먼트가 SGX 사양을 준수하는 인증된 TEE로부터 기원하는 것임을 인증할 수 있다.
전자 장치(200)는 블록체인 네트워크(100)의 노드(102)로 작동하고(도 1(a)), 위원회(110)에 가입하여 참여할 수 있다(도 1(a)). 블록체인 네트워크(100)(도 1(a))에 의해 지원되는 디지털 화폐, 토큰 또는 다른 지분이나 가치와 같은 디지털 자산의 보유자 그룹이 디지털 자산을 풀링할 때, 위원회(110)가 형성되고, 그 디지털 자산 풀은 하나의 공개키(위원회 공개키)로 잠겨져 있어서 대응하는 비공개키의 지분이 해당 풀에 기여하는 자산의 양에 비례하여 위원회의 회원이(바람직하게는 위원회 회원의 TEE 내부에) 보유한다. 전자 장치(200)는 대안적인 체인 네트워크(120)의 노드(102)로 작동할 수도 있다(도 1(a)).
위원회
위원회(110)는 허가 그룹 또는 무허가 그룹일 수 있다. 즉, 위원회(110)는 블록체인 네트워크(100)의 임의의 노드에 의해(즉, 블록체인에서 정보의 적어도 일부를 모니터링하고 저장하는 임의의 노드에 의해) 가입될 수 있다(도 1(a)). 위원회(110)에 가입하기 위해, 노드(102)는 하나 이상의 디지털 자산을 위원회(110)와 연관된 디지털 자산 풀(즉, 위원회의 다른 회원과 연관된, 결국, 하나 이상의 디지털 자산과 연관된 공개 그룹 어드레스)로 이전한다. 이 디지털 자산 풀은 위원회 풀이라고 지칭될 수 있다. 예를 들어, 노드(102)는 그러한 디지털 자산을 위원회 풀과 연관된 어드레스(즉, 공개 그룹 어드레스라고도 지칭될 수 있는 "위원회 어드레스")로 이전(즉, 예치)함으로써 위원회(110)에 가입할 수 있다. 디지털 자산은 위원회 공개키라고 하는 단일 공개키로 그룹 임계값 서명(group threshold signature)의 통제 하에 놓인다. 위원회 위원은 분배적으로 생성된 비공개키 지분을 보유한다. 특정 위원회 회원이 보유한 지분(shares)의 수는 해당 회원이 풀에 예치한 금액에 비례할 수 있다.
위원회(110)에 의해 통제되는 디지털 자산은 위원회 어드레스로 이전되는 임의의 디지털 자산을 포함하고, 임계값 서명 체계(threshold signature scheme)의 통제 하에 놓일 수 있다. 임계값 서명 체계 하에서, 디지털 자산이 위원회(110)의 통제에서 벗어나 이전될 수 있도록 하는 유효 서명을 생성하기 위해서는 총 비공개키 지분 보유분이 임계값을 초과하는 회원들의 그룹이 필요하다. 즉, 위원회(110)에 의해 통제되는 디지털 자산의 외부로의 이전을 위한 유효 서명을 생성하기 위해서는 비공개키 지분들이 임계값 수 이상 사용되어야 한다.
위원회 공개키나 CPK는 비공개키 지분에 대한 대가로 위원회(110)의 회원에 의해 위원회 풀에 예치된 디지털 자산과, 비공개키 지분을 얻는 것 이외의 이유로 위원회의 회원이나 비회원에 의해 위원회 풀과 연관된 어드레스에 예치된 모든 디지털 자산(즉, 위원회의 전체, 부분 또는 조건부 제어 하에 배치됨)을 보관한다. 비회원 또는 회원은 다양한 이유로 위원회와 연관된 어드레스에 디지털 자산을 예치할 수 있다.
동일한 위원회 공개키는 회원 예치금(즉, 비공개키 지분에 대한 대가로 위원회 회원이 제공한 디지털 자산)과 다른 목적을 위해 회원 또는 비회원이 제공한 디지털 자산을 모두 보관할 수 있으므로, 위원회 공개키에 대한 적어도 일부 예치금은 예치금의 유형을 나타내기 위해 특별히 플래깅될 수 있다. 예를 들어, 위원회 공개키로 디지털 자산을 이전하는 트랜잭션에는 예치금의 성격을 나타내는 플래그, 식별자 또는 다른 속성이 포함될 수 있다. 예를 들어, 위원회에 가입하거나 위원회 멤버쉽에서 지분을 늘릴 목적으로 만들어지지 않은 위원회 공개키로 디지털 자산을 이전하는 트랜잭션에는 다른 목적으로 예치금이 예치되어 있음을 나타내는 특별한 식별자가 포함될 수 있다. 이러한 식별자는, 비공개키 생성을 관리할 때, 위원회(110)와 연관된 노드(102)에 의해 사용될 수 있다. 보다 구체적으로, 그룹 가입을 목적으로 디지털 자산을 예치한 노드(102)는 (디지털 자산의 예치 결과로서) 위원회(110)에 대한 비공개키 지분을 할당받는 반면, 다른 목적으로(예컨대, 사이드체인(sidechain)으로 이전하기 위해) 디지털 자산을 예치한 다른 노드(102)는 위원회에 대한 위원회 비공개키 지분(즉, 위원회 공개키에 해당)을 보유하지 않을 수 있다.
위원회(110)는 회원 예치금의 전부 또는 일부를 몰수하겠다는 위협을 통해 협력 행동을 강요하는 자치 그룹(self-governing group)으로서 행동할 수 있다. 비협조적이거나 악성 회원은 다수의 정직한 회원이 협력 프로토콜에 참여함으로써 그러한 디지털 자산을 몰수당할 수 있다. 또한, 위원회 회원이 위원회(110)를 탈퇴를 원할 때, 그들은 자신의 회원 예치금을 인출할 수 있다(즉, 위원회(110)가 해당 회원 예치금을 그 회원의 개인 어드레스로 반환하도록 요청함). 그러나 유효한 디지털 서명을 생성하는 데 필요한 임계값을 초과하는 다수의 비공개키 지분이 인출을 승인하도록 그룹(즉, 위원회)의 회원에 의해 사용되는 경우에만, 자금 인출이 수행된다.
위원회(110)에 의해 구현되는 임계값 서명 체계는 다양한 유형일 수 있다. 예를 들어, 임계값 서명 체계는, 비공개키 지분의 임계값 수 이상이 유효 서명을 생성하는 데 기여하는 한, n개의 당사자 사이에서 서명 권한을 공유하게 할 수 있다. 임계값보다 작은 서브세트는 유효 서명을 생성할 수 없다. 임계값 서명 체계는 타원 곡선 디지털 서명 알고리즘(Elliptic Curve Digital Signature Algorithm, ECDSA) 체계일 수 있다. 예를 들어, ECDSA 체계는 "A robust threshold elliptic curve digital signature providing a new verifiable secret sharing scheme"(회로 및 시스템에 관한 중서부 심포지엄, 2003년 EIII 제46회, 1:276-280(2003))에서 Ibrahim 등에 의해 제안된 유형일 수 있다. 이 임계값 서명 체계는 n개의 키 공유 보유자의 당사자로부터 t+1개의 키 지분이 비공개키를 재구성하기 위해 필요한 타원 곡선 암호화 기반 알고리즘인 디지털 서명 체계의 확장이다. 이 체계는 비공개키를 재구성하지 않고 또한 임의의 당사자가 자신의 키 지분을 다른 당사자에게 공개하지 않고도 유효 서명을 구성하는 데 사용될 수 있다. 위원회(110)에 의해 다른 적절한 서명 체계 검사가 구현된다는 점에 유의한다.
사용자가 패스워드로 거래를 승인할 수 있도록 위원회를 포함하는 합의 메커니즘을 사용하는 예시적인 방법
이제 도 3 내지 도 8b를 참조하면, 사용자(본 명세서에서는 "요청자"로 지칭됨)가 자신이 선택한 패스워드로 하나 이상의 거래를 승인할 수 있도록 하기 위해 위원회를 포함하는 합의 메커니즘을 이용하는 방법이 도시되어 있다. 도 3에 도시된 바와 같이, 합의 메커니즘은 위원회 설립 단계(301), 초기화 단계(303)(초기화 트랜잭션이 포함됨), 펀딩 단계(305)(펀딩 트랜잭션이 포함됨) 및 지불 승인 단계(307)(사전 지출 트랜잭션과 지출 트랜잭션을 포함함)를 포함하는 단계 수순으로 논리 구분될 수 있다. 패스워드는 방법의 모든 단계에서 직접 노출되지 않는다. 패스워드의 엔트로피가 높을 필요가 없고(따라서 낮을 수도 있음), 패스워드의 정보량이 패스워드의 엔트로피에 비례하므로 패스워드의 기억 가능성을 향상시킬 수 있다. 지불 승인 단계(307)는 요청자가 패스워드를 사용하여 펀딩 트랜잭션에 특정된 자금을 이전하기 위해 복수회 반복될 수 있다. 또한, 단계(301)에서 위원회가 설립되면, 다수의 개별 사용자가 자신이 선택한 패스워드로 하나 이상의 트랜잭션을 승인할 수 있도록 하기 위해 초기화 단계(303), 펀딩 단계(305) 및 지불 승인 단계(307)의 동작이 다수의 사용자에 대해 복제될 수 있다.
실시예에서, 합의 메커니즘은 타원 곡선 상에 이선형 맵(bilinear map)을 사용하는 디지털 서명 체계를 이용한다. 이러한 이선형 맵은 2개의 암호화 그룹의 요소간의 페이링(pairing)을 맵핑(e)이 있는 제 3 그룹에 사용하는 페어링 기반 암호화의 한 형태이다. 이산 대수 문제(discrete logarithm problem)가 두 그룹 모두에서 생기지 않도록 동일한 소수 차수(q)의 2개의 유한 순환 그룹 (G 1 = <P>,·),(G 2 ,·)를 고려한다. 맵핑(e): G 1 ×G 2 G 2 는 다음 세 가지 조건이 충족되는 경우에 한해서만 이선형 맵이라고 한다.
1. 이선성(Bilinearity):
Figure pct00001
2. 비퇴행성(Nondegeneracy): G 1 = <P> => <e(P,P)> = G 2
3. 매핑(e)은 다항 시간(polynomial time)으로 계산할 수 있다.
타원 곡선에서 이선형 맵을 사용하는 결정론적 서명 체계는 "Short Signatures from the Weil Pairing"(암호와 정보 보안의 이론과 응용에 관한 국제 회의, ASIACRYPT 2001, pp 514-532)에서 D.Boned, B.Lynn, H.Sachem에 의해 공개되었다. 이 체계에서 보안은 임의의 오라클 모델에서 적절하게 선택된 G 1 , G 2 를 가정하여 입증된다. 보다 구체적으로, 서명자의 비밀 키를
Figure pct00002
라 하고, 대응하는 공개키 y = g x G 1 = <g>의 요소이다. H: {0,1} * →G 1 을 해시 함수라고 한다. 메시지(m)의 서명 및 검증 단계는 다음과 같다.
(Sign(m)): 메시지(m)의 서명(σ)은 H(m) x 이다(G 1 에서).
Verify(σ,m): e(g,σ) = e(y,H(m))인 경우에 한해서만 승인한다.
Bone, Lynn 및 Sachem의 서명 체계는, "Efficient Threshold Signature, Multisignature and Blind Signature Schemes Based on the Gap-Diffie-Hellman-Group Signature Scheme"(PKC 2003, LNCS 2139, pp.31-46, Springer-Verlag, 2003)에서 A.Boldyreva에 의해 t-out-of-n 임계값 서명 체계를 통해 일반화되었다. 이 경우, n개 그룹의 t명의 서명자는 메시지(m)에 서명할 수 있다. i번째 서명자의 비밀 키를
Figure pct00003
라고 하고, 대응하는 공개키 y i = g xi G 1 = <g>의 요소라고 한다. 여기서, 마스터 비밀
Figure pct00004
이고, 여기서, L i 는 라그랑주 계수(Lagrange coefficient)이고, 이는 이용 가능한 it값에 의존한다. 마스터 공개키 y = g x 이고, 개별 공개키 y i = g xi 이다. 메시지(m)의 서명 및 검증 단계는 다음과 같다.
Sign(m): t명의 서명자 각각은 서명의 지분을 생성함: σ i = H(m) xi
e(g,σ i ) = e(y i ,H(m))인지 확인하여 각 σ i 의 유효성을 검증할 수 있다는 점에 유의한다.
서명(σ)은 it명의 값에 대해
Figure pct00005
로 결정될 수 있다.
Verify(m,σ): e(g,σ) = e(y,H(m))인 경우에만 승인한다.
도 3 내지 도 8의 합의 메커니즘의 실시예에 의해 사용된 디지털 서명 체계는, 아래에 상세하게 설명하는 바와 같이, 사용자가 선택한 패스워드를 디지털 서명 체계에 통합하여 Boldyreva의 t-out-of-n 임계값 서명 체계를 확장시킨다. 위원회 설정 단계(301)는 도 4의 동작 401 내지 동작 405를 포함한다. 초기화 단계(303)는 도 5a 내지 도 5d의 동작 501 내지 동작 537을 포함한다. 펀딩 단계(305)는 도 6의 동작 601 내지 동작 605를 포함한다. 지불 승인 단계(307)는 본 발명의 일 실시예에 대한 도 7a 내지 도 7d의 동작 701 내지 동작 751을 포함하거나, 본 발명의 다른 실시예에 대한 도 8의 동작 737' 내지 동작 751'를 포함한다.
요청자(또는 본 예에서 “Alice”)가 대표적으로 수행하는 동작은 도 3 내지 도 8의 왼쪽에 도시되고, 위원회의 회원인 노드(102)가 대표적으로 수행하는 동작은 도 3 내지 도 8의 오른쪽에 도시되어 있음에 주목한다. 요청자(또는 그 일부)가 대표적으로 수행하는 동작에는 디지털 지갑이 포함될 수 있다. 이러한 디지털 지갑은 하드웨어 지갑일 수 있으며, 통상 특정 기능(예컨대, 키 생성, 키 저장 및 트랜잭션 서명)에 스마트 카드나 USB 장치를 사용한다. 대안적으로, 디지털 지갑은 온라인으로 어떤 방식으로든 인터넷에 연결된 시스템을 사용하는 핫 월렛(hot wallet)일 수 있다.
도 4는 위원회(110) 확립 단계(301)의 상세를 도시한다.
동작 401에서, 위원회의 회원으로서 참여할 노드(102)가 식별되어 위원회(110)를 확립한다. 위원회(110)를 확립하고 유지하기 위한 기술은 2017년 4월 11일에 출원된 독일 특허 출원 제1705867.8호(대리인 관리 번호: P510727/CEJ) 및 2017년 4월 11일에 제출된 독일 특허 출원 제1705869.4호(대리인 관리 번호: P510728/CEJ)에 기술되어 있다.
동작 403에서, 위원회(110)는 타원 곡선(예컨대, 제 1 그룹(G1), 제 2 그룹(G2) 매핑 함수(e) 및 해시 함수(H)) 상의 이선형 맵핑을 채택하는 디지털 서명 체계에 대한 파라미터를 결정한다.
동작 405에서, 위원회(110)의 회원은 분산 프로토콜을 사용하고, 이것에 의해 위원회의 각 회원(i)에 대한 TEE는 위원회 비공개키(x)에서 자신의 비공개키 지분(x i )을 결정하고 보유한다. 본 실시예에서, 디지털 서명 체계의 이선형 맵핑의 이선형성 조건(bilinearity condition)에 따른 비공개키(x)는
Figure pct00006
이다. 분산 프로토콜은 또한 위원회 비공개키(x)에 대응하는 위원회 공개키(CPK)를 결정한다.
도 5a 내지 도 5d는 초기화 단계(303)의 상세를 도시한다.
동작 501에서, 요청자(Alice)는 초기화 트랜잭션(T I )를 생성한다. 요청자(Alice)는 공개키(Pk)를 포함하는 계정을 가지고 있다고 가정한다. 초기화 트랜잭션(T I )은 요청자(Alice)와 연관된 패스워드를 설정하려는 요구를 위원회(110)에 표시하거나 시그널링한다. 초기화 트랜잭션(T I )은 공개키(Pk)와 함께 요청자의 계정으로부터 이전되어 CPK에 지불되는 초기화 비용(F I )을 특정한다. 실시예에서, 초기화 트랜잭션(T I )은 초기화 비용(F I )이 위원회 공개키(CPK)에 의해 잠겨 있다고 명시할 수 있고, 따라서 대응하는 위원회 비공개키(x)에 기초하는 서명으로 서명된 트랜잭션에 의해 지출될 수 있다. 초기화 트랜잭션(T I )을 처리하여 초기화 단계(303)에 참여하는 대가로 위원회(110)로 초기화 비용(F I )이 이전될 것이라는 점에 유의한다.
실시예에서, 초기화 트랜잭션(T I )은 요청자 계정의 UTXO와 이 UTXO를 잠금 해제하는 연관된 잠금 해제 스크립트(예컨대, scriptSig)를 특정하는 하나 이상의 트랜잭션 입력뿐만 아니라, 위원회 공개키(CPK)로 초기화 비용(F I )을 잠그는 관련 잠금 스크립트(예컨대, scriptPubKey)를 포함하는 초기화 비용(F I )과 등가인 값을 특정하는 트랜잭션 출력을 포함할 수 있고, 그에 따라 위원회 공개키(CPK)와 대응 위원회 비공개키(x)에 기초한 서명을 제공하는 잠금 해제 스크립트(예컨대, scriptSig)와 함께 트랜잭션 입력을 포함하는 지출 트랜잭션에 의해 지출될 수 있다. 초기화 트랜잭션(T I )은 요청자의 계정으로 반환된 변경을 위한 다른 트랜잭션 출력을 포함할 수 있으며, 이는 트랜잭션 입력(들)의 UTXO와 임의의 암묵적인 트랜잭션 비용보다 적은 초기화 비용(F I )간의 차이를 나타낸다.
동작 503에서, 요청자(Alice)는 초기화 트랜잭션(T I )을 블록체인 네트워크(100)에 브로드캐스트함으로써 초기화 트랜잭션(T I )을 위원회(110)의 회원에게 전달한다. 그런 다음 요청자(Alice)의 동작은 동작 517로 진행된다.
동작 505에서, 블록체인 네트워크(110)의 노드(위원회(110)의 회원 및 가능하면 다른 비회원 노드도 포함함)는 초기화 트랜잭션(T I )의 유효성 검증을 행하고, 블록체인 네트워크(100)의 채굴 노드(위원회(110)의 회원일 필요는 없음)는 블록체인 네트워크(100)의 블록체인에 저장하기 위해 유효성 검증된 초기화 트랜잭션(T I )을 채굴할 수 있으며, 이는 초기화 비용(F I )이 위원회(110)의 CPK로 이전되는 것을 확인한다. 초기화 트랜잭션(T I )은 모든 채굴된 트랜잭션의 필수 조건을 충족시키기 위해 필요할 수 있다는 점에 유의한다(예컨대, 이러한 조건 중 하나는 초기화 트랜잭션(T I )이 채굴기에 충분한 트랜잭션 비용을 제공한다는 것임).
동작 507에서, 위원회(110)의 각 회원(i)은 초기화 트랜잭션(T I )을 수신하여 처리한다.
동작 509에서, 위원회(110)의 각 회원(i)에 대한 TEE는 해시 함수(H)를 사용하여 요청자(Alice)가 보유하는 공개키(Pk)를 해싱함으로써 제 1 그룹(G1)에 대한 생성기 함수(g)를 결정한다. 실시예에서, 생성기 함수(g)는 압도적인 확률로 요청자(Alice)에게 고유할 수 있다.
동작 511에서, 위원회(110)의 각 회원(i)에 대한 TEE는 동작 509에서 결정한 대로 생성기 함수(g)를 사용하여, 그것의 비공개키 지분(x i )에 기초하여 수량(g xi )을 생성한다. 실시예에서, 수량(g xi )은 그룹(G1)의 반복된 적용을 통해 얻어질 수 있으며, 여기서, 동작은 그룹에 따라, - 덧셈이나 곱셈 - 합 또는 지수승(exponentiation)에 대응할 것이다. 실시예에서, 수량(g xi )은 단순히 지수승으로 나타내는 그룹의 반복적인 적용을 이용하여 그룹
Figure pct00007
의 반복적인 적용으로부터 얻어질 수 있다.
동작 513에서, 위원회(110)의 각 회원(i)의 TEE는 요청자(Alice)에게 비공개 메시지(M(g xi ))를 생성한다. 비공개 메시지(M(g xi ))는 요청자(Alice)가 보유하는 공개키(Pk)로 암호화될 수 있는 수량(g xi )을 포함한다. 실시예에서, 비공개 메시지(M(g xi ))는 회원(i)의 TEE와 연관된 공개키와 연관될 수 있고, 회원(i)의 TEE의 대응하는 비공개키로 서명될 수 있다. 비공개 메시지(M(g xi ))는 위원회의 비공개키 지분(x i )을 요청자(Alice)에게 공개하지 않지만, 요청자(Alice)가 수량(g xi )의 일관성을 검증할 수 있게 하는 특정 블라인드 수량(blinded quantities)을 포함할 수 있고, 이는 Ibrahim 등의 "A robust threshold elliptic curve digital signature providing a new verifiable secret sharing scheme"(회로 및 시스템에 관한 중서부 심포지엄, 2003년 EIII 제46회, 1:276-280(2003))에서 설명된 기술에 기초할 수 있다.
동작 515에서, 위원회(110)의 각 회원(i)은 비공개 메시지(M(g xi ))를 요청자(Alice)에게 송신하고, 위원회(110)의 회원의 동작은 동작 531로 진행한다.
동작 517에서, 요청자(Alice)는 위원회(110)의 회원에 의해 요청자(Alice)에게 송신된 비공개 메시지(M(g xi ))를 수신하고 처리한다. 각 비공개 메시지(M(g xi ))의 진위 여부는 회원(i)의 TEE와 연관된 대응하는 공개키를 사용하여 비공개 메시지(M(g xi ))의 서명을 검증함으로써 확인할 수 있다.
동작 519에서, 요청자(Alice)는 수량(g xi )이 일치하는 지를 판단한다. 동작 519의 일관성 검사는 다수의 잘 알려진 검증 가능한 비밀 공유 체계 중 어느 하나를 사용하여 수행될 수 있다. https://en.wikipedia.org/wiki/Verifiable_secret _sharing를 참조한다. 동작 519의 일관성 검사는 Stadler, M.의 "Publicly verifiable secret sharing"(암호화 기술의 이론 및 응용에 관한 국제 컨퍼런스, 1996년 5월, 190-199쪽)에 기술된 바와 같이 공개 가능한 비밀 공유 체계를 사용하여 수행될 수도 있다. 이들 체계는 (i) 일치하지 않는 공유량을 식별하고, (ii) 당사자에게 '비밀로 전송된' 수량이나 공유량이 블라인드 수량 또는 브로드캐스팅되는 공유량과 다른지 여부를 확인하고, 이는 Ibrahim 등에 의해 설명된 기술에 기초될 수 있다. 일관성 검사를 수행하기 위해, 수량(g xi )은 공개키(Pk)에 대응하는 요청자(Alice)가 보유한 비공개키를 사용하여 해독될 수 있다.
동작 521에서, 요청자(Alice)는 동작 519의 일관성 결정의 결과를 보고하는 트랜잭션(Tc1)을 생성하고, 트랜잭션(Tc1)을 블록체인 네트워크(100)에 브로드캐스트함으로써 트랜잭션(Tc1)을 위원회(110)의 회원에게 전달한다. 실시예(들)에서, 트랜잭션(Tc1)의 결과는 일치하지 않는 수량(g xi)(예컨대, 해당 노드의 TEE에 대한 공개키)을 제공한 노드에 대한 참조를 포함하거나, 또는 모든 수량(g xi )이 일치하면, 널(null) 참조를 포함할 수 있다.
동작 523에서, 요청자(Alice)는 트랜잭션(Tc1)을 평가하여, 수량(g xi )이 일치한다는 것을 나타내는 지를 확인한다. '예'이면, 요청자(Alice)의 동작은 동작 525에서 동작 529로 계속되고, '아니오'이면, 요청자(Alice)의 동작은 다른 초기화 트랜잭션(T I )을 생성 및 브로드캐스트하기 위해 동작 501로 되돌아갈 수 있다.
동작 525에서, 요청자(Alice)는 패스워드(Pw)를 선택하거나 입력한다.
동작 527에서, 요청자(Alice)는 해시 함수(H)를 사용하여 공개키(Pk)를 해싱함으로써, 제 1 그룹(G1)에 대한 생성기 함수(g)를 결정한다.
동작 529에서, 요청자(Alice)는 생성기 함수(g)를 사용하여 패스워드(Pw)와 수량(g xi )에 기초하여 공개키(y)를 구성하고, 초기화 단계에서의 요청자(Alice)의 동작은 종료된다. 실시예에서, 공개키(y)는 다음과 같이 구성될 수 있다.
Figure pct00008
(1)
여기서, L i 는 적절한 라그랑주 계수(Lagrange coefficient)이다.
Pw가 낮은 엔트로피임에도 불구하고, 공개키(y)는 Pk가 있으므로 압도적인 확률로 고유하고, 그에 따라 g도 마찬가지로 될 것이라는 점에 유의한다.
동작 531에서, 위원회(110)의 회원은 트랜잭션(Tc1)를 수신하고 처리한다.
동작 533에서, 위원회(110)의 각 회원(i)은 트랜잭션(Tc1)을 평가하여 수량(g xi )이 일치한다는 것을 나타내는 지를 확인한다. '예'이면, 동작은 동작 535로 계속되고, '아니오'이면, 동작은 동작 537로 계속된다.
동작 535에서, 위원회(110)는 초기화 비용(F I )을 위원회(110)의 회원에게 분배하는 조치를 취할 수 있고, 초기화 단계에서의 위원회(110) 회원의 동작은 종료된다.
동작 537에서, 위원회(110)는 (이 단계에서 요청자의 오류가 없기 때문에) 초기화 비용(F I )을 요청자(Alice)에게 반환하기 위한 단계를 취할 수 있고, (트랜잭션(Tc1)의 결과에 의해 보고된 바와 같이) 불일치한 수량(g xi )을 제공하는 위원회(110)의 임의의 악성 회원 노드에 대한 예치금을 압류할 수 있다. 실시예에서, 위원회 회원은 위원회(110)의 임의의 악성 회원 노드에 대한 보안 예치금을 몰수하기 위해 지분 증명 대안 체인(예컨대, 고스트 체인)을 이용할 수 있다. 몰수된 보안 예치금은 위원회(110)의 다른 회원에게 이전되거나 몰수된 보안 예치금을 소비할 수 없는 어드레스로 이전함으로써 소각될 수 있다. 동작 537 이후에, 초기화 단계에서 위원회(110) 회원의 동작이 종료될 수 있다.
도 6은 펀딩 단계(305)의 상세를 도시한다.
동작 601에서, 요청자(Alice)는 펀딩 트랜잭션(T F )을 생성하는 데, 이는 자금(f)의 일부 또는 전부가 패스워드(Pw)를 사용하여 이전될 수 있는 요청자(Alice)의 자금(f)을 특정한다. 펀딩 트랜잭션(T F )은 또한 i) 트랜잭션 예치 금액 (Dt*f)가 패스워드를 사용하여 자금(f)의 일부나 전부를 이전하는 데 제공되어야 하는 트랜잭션 예치분(transaction deposit fraction), ii) 생성기 함수(g), 및 iii) 자금(f)을 잠그는 공개키(y)를 특정한다.
본 실시예에서, 자금(f)은 공개키(y)에 의해 잠기고(보관되고), 따라서 패스워드(Pw)로부터 생성된 지출 서명(σ s )과 동작 735에서의 위원회 회원의 임계값 수으로부터 송신된 수량(σ s,i )을, 메타 데이터로서, 포함하는 하나 이상의 서명된 트랜잭션(각각은 서명된 지출 트랜잭션(T S )을 참조함)에 의해 지출될 수 있다. 본 실시예에서, 블록체인 네트워크(100)의 노드(여기에는 위원회(110)의 회원과 위원회(110)의 회원이 아닌 노드가 포함될 수 있음)는 서명된 지출 트랜잭션(T S )을 검증하는 것의 일부로서 공개키(y)를 이용하여(이하의 동작 743 참조) 지출 서명(σ s )를 검증하도록 동작할 수 있으며, 이는 펀딩 트랜잭션(T F )의 자금(f)에 대한 공개키(y)를 포함하는 잠금(방해물(encumbrance))을 사실상 해제한다.
실시예에서, 초기화 트랜잭션(T F )은 요청자 계정의 UTXO와 UTXO를 잠금 해제하는 연관된 잠금 해제 스크립트(예컨대, scriptSig)를 특정하는 하나 이상의 트랜잭션 입력뿐만 아니라, 공개키(y)로 자금(f)를 잠그는 연관된 잠금 스크립트(예컨대, scriptPubKey)를 포함하는 자금(f)과 등가인 값을 특정하는 트랜잭션 출력을 포함할 수 있고, 그에 따라 위원회 공개키(y)와, 패스워드(Pw) 및 위원회 공개키(x)로부터 도출된 지출 서명(σ s )을 제공하는 잠금 해제 스크립트(예컨대, scriptSig)와 함께 트랜잭션 입력을 포함하는 지출 트랜잭션에 의해 지출될 수 있다. 펀딩 트랜잭션(T F )은 또한 트랜잭션 예치분(D T )과 생성기 함수(g)를 특정하는 다른 트랜잭션 출력(사용 불가능)을 포함할 수 있다. 펀딩 트랜잭션(T F )은 또한 요청자의 계정으로 반환된 변경에 대한 또 다른 트랜잭션 결과를 포함할 수 있으며, 이는 트랜잭션 입력(들)의 UTXO와 임의의 암묵적 트랜잭션 비용보다 적은 자금(f)간의 차이를 나타낸다.
동작 603에서, 요청자(Alice)는 펀딩 트랜잭션(T F )을 블록체인 네트워크(100)에 브로드캐스트한다.
동작 605에서, 블록체인 네트워크(100)의 노드(위원회(110)의 회원 및 가능하면 다른 비회원 노드도 포함함)는 펀딩 트랜잭션(T F )의 유효성 검증을 행하고, 블록체인 네트워크(100)의 채굴 노드(위원회(110)의 회원일 필요는 없음)는 블록체인 네트워크(100)의 블록체인에 저장하기 위해 유효성 검증된 펀딩 트랜잭션(T F )을 채굴할 수 있다. 펀딩 트랜잭션(T F )은 모든 채굴된 트랜잭션의 필수 조건을 충족시키기 위해 필요할 수 있다는 점에 유의한다(예컨대, 이러한 조건 중 하나는 펀딩 트랜잭션(T F )이 채굴기에 충분한 트랜잭션 비용을 제공한다는 것임).
도 7a 내지 도 7d는 지불 승인 단계(307)의 상세를 도시한다.
동작 701에서, 요청자(Alice)는 서명되지 않은 지출 트랜잭션(T S )을 생성하고, 이는 펀딩 트랜잭션(T F )에 의해 잠겨진 자금(f)을 참조한다. 서명되지 않은 지출 트랜잭션(T S )은 (아래의 동작 739와 동작 741에서 서명되고 브로드캐스트된 경우) 자금(f)의 일부를 수취인에게 이전할 것이다.
실시예에서, 서명되지 않은 지출 트랜잭션(T S )은 요청자의 펀딩 트랜잭션(T F )에 의해 잠겨진 자금(f)을 지칭하는 트랜잭션 입력과 수취인의 공개키에 기초하여 이 값을 잠그는 연관된 잠금 스크립트(예컨대, scriptPubKey)와 함께 자금(f)의 일부와 등가인 값을 특정하는 제 1 트랜잭션 출력을 포함할 수 있고, 따라서, 수취인의 비공개키에 기초하여 수취인의 공개키와 서명을 제공하는 잠금 해제 스크립트(예컨대, scriptSig)와 함께 트랜잭션 입력을 구비하는 지출 트랜잭션에 의해 소비될 수 있다.
동작 703에서, 요청자(Alice)는 위원회 공개키(CPK)에 의해 잠겨진 트랜잭션 예치 금액 (D T *f)를 이전하는 사전 지출 트랜잭션(T PS )을 생성한다. 사전 지출 트랜잭션(T PS )은 또한 지출 비용(F s ), 대응하는 서명되지 않은 지출 트랜잭션(T S )의 해시(즉, H(T S )) 및 공개키(Pk')를 포함한다. 지출 비용(F s )은 요청자(Alice)가 사전 지출 트랜잭션(T PS ) 및 지출 트랜잭션(T S )을 처리하기 위해 위원회(110)에 제공하고자 하는 비용이다. 공개키(Pk')는 요청자가 자금을 이전하려는 계정의 어드레스이다. 이 어드레스는 예치금을 이전하는 데 사용된 공개키(Pk)와 같거나 같지 않을 수 있다.
실시예에서, 사전 지출 트랜잭션(T PS )은 요청자 계정의 UTXO와 UTXO를 잠금 해제하는 연관된 잠금 해제 스크립트(예컨대, scriptSig)를 지칭하는 하나 이상의 트랜잭션 입력뿐만 아니라, 위원회 공개키(CPK)로 금액 (D T *f)를 잠그는 관련 잠금 스크립트(예컨대, scriptPubKey)를 포함하는 금액 (D T *f)와 등가인 값을 특정하는 트랜잭션 출력을 포함할 수 있고, 그에 따라 위원회 공개키(CPK)와 위원회 비공개키(x)를 사용하여 생성된 서명을 제공하는 잠금 해제 스크립트(예컨대, scriptSig)와 함께 트랜잭션 입력을 포함하는 지출 트랜잭션에 의해 지출될 수 있다. 사전 지출 트랜잭션(T PS )은 지출 비용(F s ), 대응하는 서명되지 않은 지출 트랜잭션(T S )의 해시(즉, H(T S )) 및 공개키(Pk')를 특정하는 다른 트랜잭션 출력(사용 불가능)을 포함할 수 있다. 사전 지출 트랜잭션(T PS )은 요청자의 계정으로 반환된 변경을 위한 다른 트랜잭션 출력을 포함할 수 있으며, 이는 트랜잭션 입력(들)의 UTXO와 임의의 암묵적인 트랜잭션 비용보다 적은 금액 (D T *f )간의 차이를 나타낸다.
동작 705에서, 요청자(Alice)는 사전 지출 트랜잭션(T PS )을 블록체인 네트워크(100)에 브로드캐스트하여 사전 지출 트랜잭션(T PS )을 위원회(110)의 회원에게 전달하고, 요청자(Alice)의 동작은 동작 723으로 진행한다.
동작 707에서, 블록체인 네트워크(100)의 노드(위원회(110)의 회원 및 가능하면 다른 비회원 노드를 포함함)는 사전 지출 트랜잭션(T PS )을 검증하고, 채굴 노드(위원회(110)의 회원일 필요는 없음)는 블록체인 네트워크(100)의 블록체인에 저장하기 위해 검증된 사전 지출 트랜잭션(T PS )을 채굴할 수 있으며, 이는 트랜잭션 예치 금액 (D T *f)의 이전을 확인한다. 사전 지출 트랜잭션(T PS )은 모든 채굴된 트랜잭션의 필수 조건을 충족시키기 위해 필요할 수 있다는 점에 유의한다(예컨대, 이러한 조건 중 하나는 사전 지출 트랜잭션(T PS )이 채굴기에 충분한 트랜잭션 비용을 제공한다는 것임).
동작 709에서, 위원회(110)의 회원은 사전 지출 트랜잭션(T PS )을 수신하고 처리하여, 사전 지출 트랜잭션(T PS )에 의해 특정된 지출 비용(F s )이 충분한지 결정한다. 지출 비용(F s )의 충분성은 사전 지출 트랜잭션(T PS )을 처리하는 데 필요한 계산 작업의 양에 따라 달라질 수 있다(이는 후술되는 바와 같이, 동작 709 내지 동작 749를 포함함).
동작 711에서, 위원회(110)의 회원은 지출 비용(F s )의 충분성 결정을 평가한다. 지출 비용(F s )이 불충분하다고 결정되면, 동작은 동작 713으로 계속되고, 그렇지 않으면(지출 비용(F s )이 충분하다고 결정되는 경우), 동작은 동작 715 내지 동작 719로 계속된다.
실시예에서, 동작 709에서 지출 비용(F s )의 충분성의 결정은 이더리움 블록체인 네트워크(Ethereum blockchain network)에서 "가스(gas)"와 유사한, 위원회 회원에 의해 수행된 동작의 계산 작업을 반영하는 특정 작업 단위를 포함할 수 있다. 사전 지출 트랜잭션(T PS )을 처리할 때, 위원회(110)의 회원에 의해 수행되는 각각의 특정 계산 동작은 그 특정 계산 동작을 실행하는 데 필요한 계산 자원에 따라 이 특수 유닛의 특정 양이 할당된다. 사전 지출 트랜잭션(T PS )을 처리할 때, 위원회(110)의 회원에 의해 수행되는 모든 계산 동작에 대한 이러한 특수 유닛의 특정량은 총계와 특수 유닛당 가격을 곱하여 지출 비용(F s )의 필수 임계값을 결정한다. 지출 비용(F s )이 이 임계값을 초과하면, 지출 비용(F s )은 동작 711에서 충분한 것으로 간주된다. 지출 비용(F s )이 이 임계값을 초과하지 않으면, 지출 비용(F s )은 동작 711에서 불충분한 것으로 간주된다.
동작 713에서 위원회(110)는 지출 트랜잭션(T S )에 대한 후속 동작(동작 741 내지 동작 749)뿐만 아니라 사전 지출 트랜잭션(T PS )에 대한 추가 처리(동작 715 내지 동작 719 및 동작 729 내지 동작 733)를 건너뛰기 위한 단계를 취할 수 있다.
동작 715에서, 위원회(110)의 각 회원(i)에 대한 TEE는, 사전 지출 트랜잭션(T PS )에 포함된 바와 같이, 그것의 비공개키 지분(xi)과 서명되지 않은 지출 트랜잭션(T S )의 해시(H(T S )로 표기됨)를 사용하여 대응하는 수량(σ s,i )을 생성한다. 실시예에서, 수량(σ s,i )은 σ s,i = H(T s ) xi 로 생성될 수 있다. 위원회(110)의 다른 회원은 이 단계에서 지출 트랜잭션(T S )을 알지 못한다.
동작 717에서, 위원회(110)의 각 회원(i)의 TEE는 요청자(Alice)에게 비공개 메시지(M(σ s,i ))를 생성한다. 비공개 메시지(M(σ s,i ))는 요청자(Alice)의 공개키(Pk)로 암호화될 수 있는 동작 363에서 생성된 수량(σ s,i )을 포함한다. 실시예에서, 비공개 메시지(M(σ s,i ))는 회원(i)의 TEE의 공개키와 연관될 수 있고, 회원(i)의 TEE의 대응하는 비공개키로 서명될 수 있다. 비공개 메시지(M(σ s,i ))는 요청자(Alice)에게 위원회의 비공개키 지분(x i )을 공개하지 않지만 요청자(Alice)가 수량(σ s,i )의 일관성을 검증할 수 있게 하는 특정 블라인드 수량(blinded quantities)을 포함할 수 있고, 이는 Ibrahim 등의 "A robust threshold elliptic curve digital signature providing a new verifiable secret sharing scheme"(회로 및 시스템에 관한 중서부 심포지엄, 2003년 EIII 제46회, 1:276-280(2003))에서 설명된 기술에 기초할 수 있다.
동작 719에서, 위원회(110)의 각 회원(i)은 비공개 메시지(M(σ s,i ))를 요청자(Alice)에게 송신하고, 동작은 동작 729로 진행한다.
동작 721에서, 요청자(Alice)는 위원회(110)의 회원에 의해 요청자(Alice)에게 송신된 비공개 메시지(M(σ s,i ))를 수신하고 처리한다. 각 비공개 메시지(M(σ s,i ))의 진위 여부는 회원(i)의 TEE와 연관된 대응하는 공개키를 사용하여 비공개 메시지(M(σ s,i ))의 서명을 검증함으로써 확인할 수 있다.
단계 723에서, 요청자(Alice)는 수신된 비공개 메시지(M(σ s,i ))에 포함된 수량(σ s,i )이 일치하는 지를 결정한다. 동작 723의 일관성 검사는 동작 519에 대한 전술한 검증 가능한 비밀 공유 체계 중 어느 하나를 사용하여 수행될 수 있다. 일관성 검사를 수행하기 위해, 수량(σ s,i )은 요청자(Alice)가 보유하고 공개키(Pk)에 대응하는 비공개키를 사용하여 해독될 수 있다.
동작 725에서, 요청자(Alice)는 동작 723의 일관성 결정의 결과를 보고하는 트랜잭션(Tc2)을 생성하고, 트랜잭션(Tc2)을 블록체인 네트워크(100)에 브로드캐스트함으로써 트랜잭션(Tc2)을 위원회(110)의 회원에게 전달한다. 실시예(들)에서, 트랜잭션(Tc2)의 결과는 일치하지 않는 수량(σ s,i )(예컨대, 해당 노드의 TEE에 대한 공개키)을 제공한 노드에 대한 참조를 포함하거나, 또는 모든 수량(σ s,i )이 일치하면, 널(null) 참조를 포함할 수 있다.
동작 727에서, 요청자(Alice)는 트랜잭션(Tc2)을 평가하여, 수량(σ s,i )이 일치하는 것을 나타내는 지를 확인한다. '예'이면, 요청자(Alice)의 동작은 동작 735 내지 동작 739로 계속되고, '아니오'이면, 요청자(Alice)의 동작은 동작 701로 돌아가서 또 다른 서명되지 않은 지출 트랜잭션(T S )과 후속 처리를 생성할 수 있다.
동작 729에서, 위원회(110)의 회원은 트랜잭션(Tc2)을 수신 및 처리하여 수신된 수량(σ s,i )이 일치하는 것을 나타내는 지를 확인한다.
동작 731에서, 위원회(110)의 각 회원(i)은 동작 729의 처리가 수신된 수량(σ s,i )이 일정하다는 것을 나타내는 지를 결정한다. '예'이면, 동작은 동작 741로 계속되고, '아니오'이면, 동작은 동작 733으로 계속된다.
동작 733에서, 위원회(110)는 사전 지출 트랜잭션(T SP )에 의해 특정되고 위원회 공개키(CPK)에 따라 잠겨진 트랜잭션 예치 금액 (D T *f)를 (요청자가 이 단계에서 잘못이 없으므로) 요청자에 의해 특정된 공개키(Pk')로 이전하는 조치와, (트랜잭션(Tc2)의 결과에 의해 보고된 바와 같이) 일치하지 않는 수량(σ s,i )이 제공된 후, 지출 트랜잭션(T S )에 대한 후속 동작을 건너뛴 위원회(110)의 임의의 악성 회원 노드에 대해 예치금을 몰수하는 조치를 취할 수 있다. 실시예에서, 위원회 회원은 위원회(110)의 임의의 악성 회원 노드에 대한 보안 예치금을 몰수하기 위해 지분 증명 대안 체인(예컨대, 고스트 체인)을 이용할 수 있다. 몰수된 보안 예치금은 위원회(110)의 다른 회원에게 이전되거나 몰수된 보안 예치금을 소비할 수 없는 어드레스로 이전함으로써 소각될 수 있다. 동작 733 이후에, 지불 승인 단계에서 위원회(110) 회원의 동작이 종료될 수 있다.
동작 735에서, 요청자(Alice)는 서명되지 않은 지출 트랜잭션(T S )의 해시(즉, H(T S )), 패스워드(Pw) 및 위원회 회원의 임계값 수로부터 수신된 수량(σ s,i )를 사용하여 계약 서명(σ s )을 생성한다. 비공개키 지분(x i )이 위원회 회원에게 분배될 때, 초기화 단계에서 위원회 회원의 임계값 수를 결정할 수 있다. 실시예(들)에서, 계약 서명(σ s )은
Figure pct00009
로 생성될 수 있다.
동작 737에서, 요청자(Alice)는 동작 735에서 생성된 서명(σ s )을 지출 트랜잭션(T S )(초기에 동작 701에서 생성됨)에 대한 서명으로서 포함한다. 일 예에서, 서명(σ s )은 지출 트랜잭션(T S )의 트랜잭션 입력의 잠금 해제 스크립트(예를 들어, scriptSig)의 일부로서 포함될 수 있으며, 여기서, 트랜잭션 입력은 공개키(y)에 의해 잠긴 자금(f)를 참조한다.
동작 739에서, 요청자(Alice)는 지출 트랜잭션(T S )(이제 계약 서명(σ s )으로 서명됨)을 블록체인 네트워크(100)에 브로드캐스트한다.
동작 741에서, 블록체인 네트워크의 노드(위원회(110)의 회원과 가능하면 다른 비회원 노드를 포함함)는 지출 트랜잭션(T S )의 유효성 검증을 행하고, 여기에는 대응하는 펀딩 트랜잭션(T F )의 공개키(y)에 대해 지출 트랜잭션(T S )의 서명(σ s )을 검증하는 동작이 포함된다. 이러한 검증은 디지털 서명 체계의 맵핑 함수(e) 및 펀딩 트랜잭션(T F )에 특정된 생성기 함수(g)를 사용할 수 있다. 예를 들어, 그러한 검증은 e(g,σ s ) = e(y,H(T s ))인 경우에 한해서만 지출 트랜잭션(T S )의 서명(σ s )을 승인할 수 있다. 실시예에서, 공개키(y)에 대한 지출 트랜잭션(T S )의 서명(σ s )을 검증하는 동작은 지출 트랜잭션(T S )의 트랜잭션 입력의 잠금 해제 스크립트(예컨대, scriptSig)(여기서, 트랜잭션 입력은 요청자의 펀딩 트랜잭션(T F )에 의해 잠긴 자금(f)을 지칭함) 및 요청자의 참조된 펀딩 트랜잭션(T F )의 대응하는 트랜잭션 출력의 잠금 스크립트(예컨대, scriptPubKey)(공개키(y)를 사용하여 자금(f)을 잠금)에 의해 특정될 수 있다.
동작 743에서 블록체인 네트워크의 노드(위원회(110)의 회원 및 가능하면 다른 비회원 노드를 포함함)는 동작 741에서 수행된 펀딩 트랜잭션(T F )의 유효성 검증을 평가한다. 펀딩 트랜잭션(T F )의 유효성 검증이 성공한 경우(그에 따라 지출 트랜잭션(T S )의 서명(σ s )은 대응하는 펀딩 트랜잭션(T F )의 공개키(y)에 대해 성공적으로 검증됨), 동작은 동작 745와 동작 747로 계속된다. 그렇지 않으면(대응하는 펀딩 트랜잭션(T F )의 공개키(y)에 대한 지출 트랜잭션(T S )의 서명(σ s )의 검증이 실패했기 때문에, 펀딩 트랜잭션(T F )의 유효성 검증이 실패한 경우), 동작은 동작 749로 계속된다.
동작 745에서, 채굴 노드(위원회(110)의 회원일 필요는 없음)는 블록체인 네트워크(100)의 블록체인에 저장하기 위해 지출 트랜잭션(T S )을 채굴할 수 있고, 이는 지출 트랜잭션(T S )의 수취인에게 자금(f) 일부의 이전을 확인한다.
동작 747에서, 위원회(110)의 회원은 사전 지출 트랜잭션(T SP )에서 언급한대로 위원회 공개키(CPK)에 의해 잠겨진 금액 (D T *f-F s )를 공개키(Pk')로 이전하고, 위원회(110)의 회원에게 지출 비용(F s )을 이전하는 조치를 취할 수 있다. 이것은 위원회 공개키(CPK)에 따른 잠금을 해제하는 위원회 생성 서명과 공개키(Pk')로 해당 금액 (D T *f-F s )을 이전하는 제 1 트랜잭션 출력을 포함하는 잠금 해제 스크립트(예컨대, scriptSig)를 사용하여 위원회 공개키(CPK)로 잠긴 사전 지출 트랜잭션(T SP )의 트랜잭션 출력을 지칭하는 제 1 트랜잭션 입력으로 트랜잭션을 생성하는 위원회(110)를 포함할 수 있다. 트랜잭션은 또한 위원회 공개키(CPK) 하에서 잠금을 해제하는 위원회 생성 서명과 위원회(110)의 위원회 공개키(CPK)로 지출 비용(F s )을 이전하는 제 2 트랜잭션 출력을 포함하는 잠금 해제 스크립트(예컨대, scriptSig)를 사용하여 위원회 공개키(CPK)로 잠긴 사전 지출 트랜잭션(TSP)의 트랜잭션 출력을 지칭하는 제 2 트랜잭션 입력을 포함할 수 있다. 블록체인 네트워크의 노드(위원회(110)의 회원 및 가능하면 다른 비회원 노드도 포함함)는 이 트랜잭션의 유효성을 검증할 수 있고, 채굴 노드(위원회(110)의 회원일 필요는 없음)는 블록체인 네트워크(100)의 블록체인에 저장하기 위해 유효성 검증된 트랜잭션을 채굴할 수 있다.
동작 749에서, 지출 트랜잭션(T S )이 유효하지 않은 것으로 간주되고, 위원회(110)는 사전 지출 트랜잭션(T SP )에서 언급한 대로 위원회 공개키(CPK)에 의해 잠긴 트랜잭션 예치 금액 (DT*f)를 몰수하고, 트랜잭션 예치 금액 (Dt*f)을 위원회(110)의 회원에게 분배하는 조치를 취할 수 있다. 이것은 트랜잭션 예치 금액 (DT*f)의 지분을 위원회(110)의 회원에게 이전하는 트랜잭션을 포함할 수 있으며, 여기서, 각 트랜잭션에는 트랜잭션 예치 금액 (DT*f)를 위원회(110)의 CPK로 이전하는 사전 지출 트랜잭션(T SP )을 지칭하는 트랜잭션 입력이 포함된다. 트랜잭션 입력은 또한 위원회 비공개키(x)(비공개키 지분(x i )을 사용함)로부터 도출된 위원회 생성 서명을 포함하는 잠금 해제 스크립트(예컨대, scriptSig)를 포함한다. 이 잠금 해제 스크립트는 이전 트랜잭션의 CPK에서 잠긴 트랜잭션 예치 금액 (DT*f)에 대한 잠금을 해제한다. 블록체인 네트워크의 노드(위원회의 회원 및 가능하면 다른 비회원 노드도 포함함)는 이들 트랜잭션의 유효성을 검증할 수 있고, 하나 이상의 채굴 노드(위원회의 회원일 필요는 없음)는 블록체인 네트워크(100)의 블록체인에 저장하기 위해 유효성 검증된 트랜잭션을 채굴할 수 있다.
대안적인 실시예에서, 펀딩 트랜잭션(T F )은 자금(f)이 위원회 공개키(CPK)(전술한 공개키(y)를 대신함)에 의해 잠기고, 그에 따라 위원회 비공개키(x)(위원회 회원의 비공개키 지분(x i )을 이용함)를 사용하여 트랜잭션에 서명하기 위해 협력하는 위원회 회원의 임계값에 의해 잠금 해제될 수 있음을 특정할 수 있다. 이 경우, 서명된 지출 트랜잭션(T S )은 공개키(y)를 포함하고, 위원회(110)의 회원은 공개키(y)를 이용하여 서명된 지출 트랜잭션(T S )의 계약 서명(σ s )을 검증하도록 동작한다. 따라서, 본 실시예에서, 위원회 회원만이 공개키(y)에 대해 서명된 지출 트랜잭션(T S )의 서명(σ s )을 검증할 필요가 있다(동작 743' 내지 동작 751' 참조). 위원회(110) 회원의 임계값 수가 공개키(y)를 사용하여 서명된 지출 트랜잭션(T S )의 계약 서명(σ s )을 성공적으로 검증하면, 위원회의 회원은 위원회 비공개키(x)(위원회 회원의 비공개키 지분(x i )을 이용함)를 사용하여 2차 트랜잭션 거래를 구성 및 서명하기 위해 협력한다. 2차 트랜잭션 거래는 지출 트랜잭션(T S )으로부터 복제될 수 있지만, 요청자의 펀딩 트랜잭션(T F )에 의해 잠긴 자금(f)을 지칭하는 트랜잭션 입력에 대한 잠금 해제 스크립트(예컨대, scriptSig)를 포함하고, 이러한 잠금 해제 스크립트는 위원회 비공개키(x)로부터 도출된 위원회 생성 서명을 포함한다. 이 잠금 해제 스크립트는 펀딩 트랜잭션(T F ) 내의 CPK 하에 잠긴 자금(f)에 대한 잠금을 해제한다. 또한, 본 실시예에서, 사전 지출 트랜잭션(T PS )에 의해 이전된 트랜잭션 예치 금액 (D T *f)는 위원회(110)의 CPK에 의해 잠긴다는 점에 유의한다. 본 실시예에서, 지출 단계의 동작은 도 8a와 도 8b에 도시된 바와 같이 수정될 수 있다.
동작 735'에서, 요청자(Alice)는 패스워드(Pw)와 위원회 회원의 임계값 수로부터 수신된 수량(σ s,i )을 사용하여 서명(σ s )을 생성한다. 비공개키 지분(x i )이 위원회 회원에게 분배될 때, 초기화 단계에서 위원회 회원의 임계값 수가 결정될 수 있다. 실시예(들)에서, 계약 서명(σ s )은
Figure pct00010
로 생성될 수 있다.
동작 737'에서, 요청자(Alice)는 서명(σ s )을 지출 트랜잭션(T S )(초기에 동작 701에서 생성됨)에 대한 서명으로서 포함한다.
동작 739'에서, 요청자(Alice)는 지출 트랜잭션(T S )(계약 서명(σ s )을 포함함)을 블록체인 네트워크(100)에 브로드캐스트함으로써 지출 트랜잭션(T S )을 위원회(110)의 회원에게 전달한다.
동작 741'에서, 위원회(110)의 회원은 지출 트랜잭션(T S )에 포함된 공개키(y)를 사용하여 지출 트랜잭션(T S )의 계약 서명(σ s )을 검증하기 위해 지출 트랜잭션(T S )을 처리한다. 이러한 검증은 펀딩 트랜잭션(T F )에 포함된 생성기 함수(g)와 디지털 서명 체계의 매핑 함수(e)를 사용할 수 있다. 예를 들어, 이러한 검증은 e(g,σ) = e(y,H(T S ))인 경우에 한해서만 지출 트랜잭션(T S )의 계약 서명(σ s )을 승인할 수 있다.
동작 743'에서 위원회(110)의 회원은 동작 741'에서 수행된 공개키(y)를 사용하여 지출 트랜잭션(T S )의 계약 서명(σ s )의 검증을 단독으로 평가한다. 지출 트랜잭션(T S )의 서명(σ s ) 검증이 실패하면, 동작은 동작 745'로 계속된다. 그렇지 않으면(지출 트랜잭션(T S )의 계약 서명(σ s ) 검증에 성공한 경우), 동작은 동작 747' 내지 동작 755'로 계속된다.
동작 745'에서, 지출 트랜잭션(T S )이 유효하지 않은 것으로 간주되고, 위원회(110)는 사전 지출 트랜잭션(T SP )에 의해 특정되고 위원회 공개키(CPK)에 의해 잠긴 트랜잭션 예치 금액 (DT*f)를 몰수하고, 트랜잭션 예치 금액 (Dt*f)을 위원회(110)의 회원에게 분배하는 조치를 취할 수 있다. 이것은 트랜잭션 예치 금액 (DT*f)의 지분을 위원회(110)의 회원에게 이전하는 트랜잭션을 포함할 수 있으며, 여기서, 각 트랜잭션에는 위원회 공개키(CPK)에 의해 잠긴 사전 지출 트랜잭션(T SP )의 트랜잭션 출력을 나타내는 트랜잭션 입력이 포함된다. 트랜잭션 입력은 또한 위원회 비공개키(x)(비공개키 지분(x i )을 사용함)로부터 도출된 위원회 생성 서명을 포함하는 잠금 해제 스크립트(예컨대, scriptSig)를 포함한다. 이 잠금 해제 스크립트는 사전 지출 트랜잭션(T SP )의 위원회 공개키(CPK)에 의해 잠긴 트랜잭션 예치 금액 (DT*f)에 대한 잠금을 해제한다. 블록체인 네트워크의 노드(위원회의 회원 및 가능하면 다른 비회원 노드도 포함함)는 이들 트랜잭션의 유효성을 검증할 수 있고, 하나 이상의 채굴 노드(위원회의 회원일 필요는 없음)는 블록체인 네트워크(100)의 블록체인에 저장하기 위해 유효성 검증된 트랜잭션을 채굴할 수 있다.
동작 747'에서, 채굴 노드(위원회(110)의 회원일 필요는 없음)는 블록체인 네트워크(100)의 블록체인에 저장하기 위해 지출 트랜잭션(T S )을 채굴할 수 있다.
동작 749'에서, 위원회(110)의 회원(및 다른 비회원 노드는 없음)은 위원회 비공개키(x)(회원의 비공개키 지분(x i )을 이용함)를 사용하여 지출 트랜잭션(T S )에 대한 서명을 생성하기 위해 협력한다.
동작 751'에서, 위원회(110)의 회원(및 다른 비회원 노드는 없음)은 지출 트랜잭션(T S )을 복제함으로써 2차 지출 트랜잭션을 구성한다. 동작 749'의 위원회 생성 서명은 2차 지출 트랜잭션에 포함되어, 펀딩 트랜잭션(T F )에서 특정된 CPK에 의해 잠긴 자금(f)을 해제한다.
동작 753'에서, 블록체인 네트워크의 노드(위원회(110)의 회원 및 가능하면 다른 비회원 노드도 포함함)는 2차 지출 트랜잭션의 유효성을 검증할 수 있고, 채굴 노드(위원회(110)의 회원일 필요는 없음)는 블록체인 네트워크(100)의 블록체인에 저장하기 위해 유효성 검증된 2차 지출 트랜잭션을 채굴할 수 있다.
동작 755'에서, 위원회(110)의 회원은 사전 지출 트랜잭션(T SP )에 의해 특정되고 위원회 공개키(CPK)에 의해 잠겨진 금액 (D T *f-F s )를 공개키(Pk')로 이전하고, 위원회(110)의 회원에게 지출 비용(F s )을 이전하는 조치를 취할 수 있다. 이것은 (CPK에 의한 잠금을 해제하는) 동작 749'의 위원회 생성 서명과 공개키(Pk')로 해당 금액 (D T *f-F s )을 이전하는 제 1 트랜잭션 출력을 포함하는 잠금 해제 스크립트(예컨대, scriptSig)를 사용하여 위원회 공개키(CPK)에 의해 잠긴 사전 지출 트랜잭션(T SP )의 트랜잭션 출력을 지칭하는 제 1 트랜잭션 입력으로 트랜잭션을 생성하는 위원회(110)를 포함할 수 있다. 트랜잭션은 또한 (위원회 공개키(CPK)에 의한 잠금을 해제하는) 동작 749'의 위원회 생성 서명과 위원회(110)의 위원회 공개키(CPK)로 지출 비용(F s )을 이전하는 제 2 트랜잭션 출력을 포함하는 잠금 해제 스크립트(예컨대, scriptSig)를 사용하여 위원회 공개키(CPK)에 의해 잠긴 사전 지출 트랜잭션(T SP )의 트랜잭션 출력을 지칭하는 제 2 트랜잭션 입력을 포함할 수 있다. 블록체인 네트워크의 노드(위원회(110)의 회원 및 가능하면 다른 비회원 노드도 포함함)는 이 트랜잭션의 유효성을 검증할 수 있고, 채굴 노드(위원회(110)의 회원일 필요는 없음)는 블록체인 네트워크(100)의 블록체인에 저장하기 위해 유효성 검증된 트랜잭션을 채굴할 수 있다.
위원회(110)의 회원이 아닌 블록체인 네트워크(100)의 노드는 동작 741' 및 동작 743'에서 공개키(y)를 이용하여 지출 트랜잭션(T S )의 지출 서명(σ s )을 검증하는 데 참여하지 않음에 유의한다. 이것은 비회원 노드뿐만 아니라 위원회(110)의 회원이 지출 트랜잭션(T S )의 유효성을 검증하는 데 참여할 수 있는 도 7a 내지 도 7d의 실시예의 동작 741과 동작 743과는 상이하다.
도 7a 내지 도 7d의 실시예는 위원회(110)가 위원회 비공개키(x)(비공개키 지분(x i )을 사용함)를 사용하여 트랜잭션(T S )에 대한 서명을 생성할 필요가 없고, 또한 대응하는 펀딩 트랜잭션(T F )의 CPK에 대한 이 서명의 유효성을 검증할 필요가 없기 때문에 큰 위원회에 효율적일 수 있음에 유의한다. 그러나, 도 8a 및 도 8b의 실시예는 '제 2 계층' 프로토콜에 의해 구현될 수 있다는 이점이 있다. 예를 들어, 비트코인 합의 규칙을 수정할 필요없이 비트코인 블록체인 네트워크에서 구현될 수 있다.
본 명세서에 설명된 향상된 디지털 서명 체계의 보안은 패스워드(Pw)와 D T 의 길이의 함수이다. 초기화 단계에서, g := H(Pk)(여기서, Pk는 비용(FI)이 전송되는 계정의 공개키 내에 있음)를 선택하는 것은, 요청자만이 Pk에 대응하는 비공개키를 구비하(는 것으로 가정할 수 있)기 때문에, g가 요청자에게 고유하다는 것을 의미하고, 이는 비용(FI)의 이전을 승인하는 데 필요하다.
다음의 공격을 고려한다. 상대방(adversary)은 대응하는 암호(Pw)에 대한 지식없이도 일부 자금(f)을 지출하고자 한다. 상대방은 필요한 예치금 (D T *f)를 위원회 공개키(CPK)로 이전하고, 비공개키를 보유하는 공개키(Pk)를 특정하는 사전 지출 트랜잭션(T ps )을 브로드캐스트할 것이다. 사전 지출 트랜잭션(T ps )은 또한 H(T s )를 특정하고, 여기서, T s 는 자금을 자신들에게 지출한다. 상대방은 위원회로부터 σ i = H(T s ) xi 를 수신할 것이다. 그러나 상대방은 패스워드(Pw)를 모르므로 Pw의 반복적인 추측을 통해 σ를 구성해야 한다. Pw의 추측이 실패할 때마다, 상대방은 D T *f를 잃는다. 패스워드(Pw)가 두 자리 수 'PIN'으로 구성된 경우, D T = 1/25이라고 하면, 정확한 추측을 위해 평균 50회의 시도가 필요하고, 이는 2f(계정 내 자금의 2배)의 소비를 필요로 한다. 따라서 경제적인 관점에서는 공격이 불가능하다.
다른 실시예에서, 요청자는 요청자가 보유한 비공개키(s)로 서명하는 '일반 방법'과 같이 펀딩 트랜잭션에 의해 잠긴 디지털 자산을 이전하기 위한 다른 옵션을 특정할 수 있다. 이 경우, 요청자는 패스워드를 사용하는 것보다 비용이 적게 들기 때문에(위원회에 어떤 요금도 지불할 필요가 없기 때문에) 일반 방법을 사용하여 거래하는 것을 선호할 수 있다. 이 시나리오에서, 요청자가 선택한 패스워드에 기초한 사전 지출 트랜잭션과 지출 트랜잭션에 대한 트랜잭션 처리는 요청자가 비공개키(s)를 잃어버린 경우에만 사용될 수 있다.
또 다른 실시예에서, 트랜잭션 각각의 서명의 검증이 성공적인지 여부에 관계없이, 본 명세서에 설명된 하나 이상의 트랜잭션을 블록체인에 저장하기 위해 채굴할 수 있다.
전술한 예는 특정 작업 증명 블록체인 네트워크(예컨대, 비트코인 블록체인 네트워크)를 참조했지만, 본 명세서에 설명된 방법은 다른 유형의 작업 증명 블록체인 네트워크 및 다른 가능한 지분 증명 블록체인 네트워크와 함께 사용될 수도 있다.
전술한 방법은 일반적으로 노드에서 수행되는 것으로 설명되었지만, 이 방법의 특징은 다른 노드와의 협력에 의존하여 다른 곳에서 수행될 수도 있다.
위에 언급된 실시예는 본 발명을 제한하기 보다는 예시하는 것이며, 당업자라면 첨부된 청구 범위에 의해 한정된 바와 같이, 본 발명의 범주를 벗어나지 않고도 많은 대안적인 실시예를 설계할 수 있다는 것에 주목해야 한다. 청구 범위에서, 괄호 안의 모든 참조 부호는 청구 범위를 제한하는 것으로 해석되지 않아야 한다. "포함하는(comprising)" 및 "포함하다(comprises)" 등의 단어는 청구항 또는 명세서 전체에 열거된 것 이외의 요소나 단계의 존재를 배제하지 않는다. 본 명세서에서, "포함하다"는 "구성하다 또는 이루어지다"를 의미하고, "포함하는"은 "구성하는 또는 이루어지는"을 의미한다. 요소의 단일 참조는 그러한 요소의 복수 참조를 배제하지 않으며, 그 반대도 마찬가지이다. 본 발명은 몇 개인가의 개별 요소를 포함하는 하드웨어와 적절히 프로그래밍된 컴퓨터에 의해 구현될 수 있다. 여러 수단을 열거하는 장치 청구항에서, 이들 수단 중 일부는 하나의 동일한 하드웨어 항목에 의해 구현될 수 있다. 특정 조치가 서로 다른 종속항에서 인용된다는 사실은 이들 조치의 조합이 유리하게 사용될 수 없다는 것을 나타내는 것은 아니다.

Claims (15)

  1. 요청자와 노드 그룹을 수반하는 블록체인 구현 보안 방법으로서,
    i) 상기 요청자에 의해 선택된 패스워드와, ii) 상기 노드 그룹에 의해 송신된 복수의 제 1 수량에 기초하여 상기 요청자의 암호화 키를 생성하는 단계 - 상기 복수의 제 1 수량은 상기 노드 그룹의 비공개키 지분(private key shares) 및 타원 곡선 상의 이선형 매핑(bilinear mapping)을 사용하는 디지털 서명 체계(digital signature scheme)의 생성기 함수에 기초함 - 와,
    상기 요청자의 블록체인 트랜잭션에 대한 암호화 서명을 생성하는 단계 - 상기 암호화 서명은 상기 디지털 서명 체계의 타원 곡선 상의 상기 이선형 맵핑에 기초하여 상기 요청자의 상기 암호화 키에 대응하고, 상기 암호화 서명은, i) 상기 요청자에 의해 선택된 상기 패스워드와, ii) 상기 노드 그룹에 의해 송신된 복수의 제 2 수량에 기초하며, 상기 복수의 제 2 수량은 상기 노드 그룹의 비공개키 지분에 기초함 - 과,
    상기 요청자의 상기 암호화 키를 사용하여 상기 블록체인 트랜잭션의 상기 암호화 서명을 검증하는 단계
    를 포함하는 블록체인 구현 보안 방법.
  2. 제 1 항에 있어서,
    적어도 하나의 통신 네트워크를 통해 서로 동작 가능하게 연결된 노드 그룹을 확립하는 단계 - 상기 그룹의 각 노드는 디지털 자산을 상기 그룹으로 이전함 -, 및/또는
    상기 요청자로부터 펀딩 트랜잭션을 (바람직하게는 상기 노드 그룹에 속하는 적어도 하나의 노드에 의해) 수신하는 단계 - 상기 펀딩 트랜잭션은 상기 요청자의 하나 이상의 디지털 자산을 특정하고, 이러한 디지털 자산의 전부 또는 일부가 상기 요청자에 의해 선택된 패스워드를 사용하여 이전될 수 있음 -, 및/또는
    상기 펀딩 트랜잭션에서 특정된 대로 상기 요청자의 하나 이상의 디지털 자산의 일부를 이전하는 지출 트랜잭션을 (바람직하게는 상기 노드 그룹에 속하는 적어도 하나의 노드에 의해) 수신하는 단계 - 상기 지출 트랜잭션은 상기 요청자의 상기 암호화 키에 대응하는 상기 암호화 서명을 포함함 -, 및/또는
    상기 요청자의 상기 암호화 키를 사용하여 상기 지출 트랜잭션에 포함된 상기 암호화 서명을 (바람직하게는 상기 노드 그룹에 속하는 적어도 하나의 노드에 의해) 검증하는 단계
    를 더 포함하는 블록체인 구현 보안 방법.
  3. 제 2 항에 있어서,
    상기 요청자로부터 초기화 트랜잭션을 (바람직하게는 상기 노드 그룹에 속하는 적어도 하나의 노드에 의해) 수신하는 단계 - 상기 초기화 트랜잭션은 상기 요청자와 연관된 패스워드를 설정하기 위한 요구를 나타냄 -, 및/또는
    상기 초기화 트랜잭션에 응답하여 제 1 수량을 (바람직하게는 상기 노드 그룹에 속하는 적어도 하나의 노드에 의해) 생성하는 단계, 및/또는
    상기 요청자에게 상기 제 1 수량을 포함하는 제 1 메시지를 (바람직하게는 상기 노드 그룹에 속하는 적어도 하나의 노드에 의해) 송신하는 단계
    를 더 포함하는 블록체인 구현 보안 방법.
  4. 제 2 항에 있어서,
    상기 요청자로부터 사전 지출 트랜잭션을 (바람직하게는 상기 노드 그룹에 속하는 적어도 하나의 노드에 의해) 수신하는 단계 - 상기 사전 지출 트랜잭션은, 트랜잭션 예치금을 이전하고 상기 지출 트랜잭션의 적어도 일부의 해시를 포함하며, 상기 지출 트랜잭션의 적어도 일부의 상기 해시는 상기 디지털 서명 체계의 해시 함수에 기초함 -, 및/또는
    상기 사전 지출 트랜잭션에 응답하여 제 2 수량을 (바람직하게는 상기 노드 그룹에 속하는 적어도 하나의 노드에 의해) 생성하는 단계, 및/또는
    상기 요청자에게 상기 제 2 수량을 포함하는 제 2 메시지를 (바람직하게는 상기 노드 그룹에 속하는 적어도 하나의 노드에 의해) 송신하는 단계
    를 더 포함하는 블록체인 구현 보안 방법.
  5. 제 1 항에 있어서,
    상기 노드 그룹으로의 통신을 위해 상기 요청자로부터 펀딩 트랜잭션을 브로드캐스트하는 단계 - 상기 펀딩 트랜잭션은 상기 요청자의 하나 이상의 디지털 자산을 특정하고, 이러한 디지털 자산의 전부 또는 일부가 상기 요청자에 의해 선택된 패스워드를 사용하여 이전 가능함 -, 및/또는
    상기 노드 그룹으로의 통신을 위해 상기 요청자로부터 지출 트랜잭션을 브로드캐스트하는 단계 - 상기 지출 트랜잭션은 상기 펀딩 트랜잭션에 특정된 대로 상기 요청자의 상기 하나 이상의 디지털 자산의 일부를 이전하고, 상기 지출 트랜잭션은 상기 암호화 서명을 포함함 -
    를 더 포함하는 블록체인 구현 보안 방법.
  6. 제 5 항에 있어서,
    상기 노드 그룹으로의 통신을 위해 상기 요청자로부터 초기화 트랜잭션을 브로드캐스트하는 단계 - 상기 초기화 트랜잭션은 상기 요청자와 연관된 패스워드를 설정하기 위한 요구를 나타내며, 상기 복수의 제 1 수량은 상기 초기화 트랜잭션에 응답하여 상기 노드 그룹에 의해 생성되고 송신됨 -, 및/또는
    상기 요청자에 의해 선택된 상기 패스워드 및 상기 초기화 트랜잭션에 응답하여 상기 노드 그룹에 의해 송신된 상기 복수의 제 1 수량에 적어도 부분적으로 기초하여 상기 암호화 키를 생성하는 단계
    를 더 포함하는 블록체인 구현 보안 방법.
  7. 제 5 항에 있어서,
    상기 노드 그룹으로의 통신을 위해 상기 요청자로부터 사전 지출 트랜잭션을 브로드캐스트하는 단계를 더 포함하되,
    상기 사전 지출 트랜잭션은 트랜잭션 예치금을 이전하고 상기 지출 트랜잭션의 적어도 일부의 상기 해시를 포함하며, 상기 지출 트랜잭션의 적어도 일부의 상기 해시는 상기 디지털 서명 체계의 해시 함수에 기초하며, 상기 복수의 제 2 수량은 상기 사전 지출 트랜잭션에 응답하여 상기 노드 그룹에 의해 생성되고 송신되는,
    블록체인 구현 보안 방법.
  8. 제 5 항에 있어서,
    적어도 하나의 통신 네트워크를 통해 서로 동작 가능하게 연결된 상기 노드 그룹을 확립하는 단계 - 상기 그룹의 각 노드는 상기 그룹에 디지털 자산을 이전하고, 상기 그룹의 각 노드는 대응하는 비공개키 지분을 저장함 -, 및/또는
    요청자 시스템에 의해, 상기 요청자로부터 상기 그룹으로의 통신을 위해 초기화 트랜잭션을 브로드캐스트하는 단계 - 상기 초기화 트랜잭션은 상기 요청자와 연관된 패스워드를 설정하기 위한 요구를 나타냄 - 와,
    상기 그룹의 상기 노드에 의해, 상기 초기화 트랜잭션에 응답하여 복수의 제 1 수량을 생성하는 단계 - 주어진 노드에 의해 생성된 상기 제 1 수량은 상기 노드의 비공개키 지분과 상기 디지털 서명 체계의 생성기 함수에 적어도 부분적으로 기초함 - 와,
    상기 그룹의 상기 노드에 의해, 각각의 제 1 메시지를 상기 요청자에게 송신하는 단계 - 상기 제 1 메시지는 상기 복수의 제 1 수량을 포함함 - 와,
    상기 요청자 시스템에 의해, 상기 요청자가 선택한 상기 패스워드와 상기 복수의 제 1 수량에 기초하여 상기 암호화 키를 생성하는 단계와,
    상기 요청자 시스템에 의해, 상기 요청자로부터 상기 그룹으로의 통신을 위해 펀딩 트랜잭션을 브로드캐스트하는 단계 - 상기 펀딩 트랜잭션은 상기 요청자의 하나 이상의 디지털 자산을 특정하고, 이러한 디지털 자산의 전부 또는 일부가 상기 요청자가 선택한 상기 패스워드를 사용하여 이전 가능함 - 와,
    상기 요청자 시스템에 의해, 상기 요청자로부터 상기 그룹으로의 통신을 위해 사전 지출 트랜잭션을 브로드캐스트하는 단계 - 상기 사전 지출 트랜잭션은 트랜잭션 예치금을 이전하고 상기 디지털 서명 체계의 해시 함수를 사용하는 상기 요청자의 소정 자금의 일부분을 이전하는 서명되지 않은 지출 트랜잭션의 해시를 포함함 - 와,
    상기 그룹의 상기 노드에 의해, 상기 사전 지출 트랜잭션에 응답하여 복수의 제 2 수량을 생성하는 단계 - 주어진 노드에 의해 생성된 상기 제 2 수량은 상기 사전 지출 트랜잭션 및 상기 노드의 상기 비공개키 지분에 포함된 상기 서명되지 않은 지출 트랜잭션의 상기 해시에 적어도 부분적으로 기초함 - 와,
    상기 그룹의 상기 노드에 의해, 제 2 메시지를 상기 요청자에게 송신하는 단계 - 상기 제 2 메시지는 상기 복수의 제 2 수량을 포함함 - 와,
    상기 요청자 시스템에 의해, 상기 요청자가 선택한 상기 패스워드와 상기 복수의 제 2 수량에 기초하여 상기 암호화 서명을 생성하는 단계와,
    상기 요청자 시스템에 의해, 상기 요청자로부터 상기 그룹으로의 통신을 위해 지출 트랜잭션을 브로드캐스트하는 단계 - 상기 지출 트랜잭션은 상기 요청자의 소정 자금의 일부를 이전하고, 상기 지출 트랜잭션은 상기 서명되지 않은 지출 트랜잭션에 기초하며 상기 암호화 서명을 포함함 -, 및
    적어도 상기 그룹의 상기 노드에 의해, 상기 요청자의 상기 암호화 키를 사용하여 상기 지출 트랜잭션의 상기 암호화 서명을 검증하는 단계
    를 더 포함하는 블록체인 구현 보안 방법.
  9. 제 3 항, 제 6 항 또는 제 8 항 중 어느 한 항에 있어서,
    상기 초기화 트랜잭션은, 상기 요청자가 상기 그룹에 지불하는 초기화 비용을 포함하고/포함하거나,
    상기 초기화 비용은, 바람직하게는 상기 그룹과 연관된 공개 그룹 어드레스로 지불되고/지불되거나,
    상기 초기화 비용은 바람직하게는 상기 그룹의 적어도 하나의 노드가 일치하지 않는 제 1 수량을 상기 요청자에게 송신하는 경우에 상기 요청자에게 반환되고/반환되거나,
    상기 제 1 수량의 불일치는 바람직하게는 검증 가능한 비밀 공유 체계를 사용하여 결정되는,
    블록체인 구현 보안 방법.
  10. 제 4 항, 제 7 항 또는 제 8 항 중 어느 한 항에 있어서,
    상기 사전 지출 트랜잭션은 지출 비용을 추가로 정의하고/정의하거나,
    상기 트랜잭션 예치금은 상기 그룹과 연관된 상기 공개 그룹 어드레스에 잠겨 있고/있거나,
    상기 그룹은, 상기 검증이 성공하는 경우, 상기 지출 비용을 뺀 상기 트랜잭션 예치금을 상기 요청자에게 선택적으로 이전하고/이전하거나,
    상기 그룹은, 상기 검증이 실패하는 경우, 상기 트랜잭션 예치금을 선택적으로 몰수하고/몰수하거나,
    상기 트랜잭션 예치금은 바람직하게는 상기 노드 그룹의 적어도 하나의 노드가 일치하지 않는 제 2 수량을 상기 요청자에게 송신하는 경우에 상기 요청자에게 반환되고/반환되거나,
    상기 제 2 수량의 불일치는 바람직하게는 검증 가능한 비밀 공유 체계를 사용하여 결정되고/결정되거나,
    상기 지출 비용은 바람직하게는 상기 그룹과 연관된 공개 그룹 어드레스로 지불되고/지불되거나,
    상기 그룹의 상기 노드는 상기 지출 비용이 충분한지 검증하고, 상기 지출 비용의 충분성은 바람직하게는 제 3 트랜잭션과 상기 지출 트랜잭션을 처리하는 데 필요한 계산 자원에 기초하고/기초하거나,
    상기 그룹의 상기 노드는 상기 지출 비용의 충분성 검증에 실패한 경우, 상기 사전 지출 트랜잭션의 추가 처리를 선택적으로 건너뛰고/건너뛰거나,
    상기 그룹은 상기 지출 트랜잭션의 상기 서명을 성공적으로 검증한 경우, 상기 지출 비용을 상기 그룹에 선택적으로 분배하는,
    블록체인 구현 보안 방법.
  11. 제 2 항 내지 제 10 항 중 어느 한 항에 있어서,
    상기 펀딩 트랜잭션은 상기 요청자의 하나 이상의 디지털 자산이 상기 암호화 키에 의해 잠겨서 상기 암호화 서명에 의해 지출되는 것을 특정하고 ,
    상기 지출 트랜잭션의 상기 서명을 검증하는 것은 상기 그룹에 의해 수행되고, 상기 그룹에 속하지 않는 다른 노드에 의해 선택적으로 수행되는,
    블록체인 구현 보안 방법.
  12. 제 2 항 내지 제 10 항 중 어느 한 항에 있어서,
    상기 펀딩 트랜잭션은 상기 요청자의 하나 이상의 디지털 자산이 상기 그룹의 공개키에 의해 잠겨서 상기 그룹의 비공개키 지분의 임계값 수(threshold number)에 기초한 서명에 의해 지출되는 것을 특정하고,
    상기 지출 트랜잭션의 상기 서명을 검증하는 것은 상기 그룹에 의해서만 수행되며,
    상기 지출 트랜잭션의 상기 서명을 성공적으로 검증하면, 상기 그룹은 상기 그룹의 비공개키 지분의 임계값 수에 기초하여 서명을 생성하고, 상기 서명을 포함하는 2차 지출 트랜잭션을 구성하기 위해 협력하는,
    블록체인 구현 보안 방법.
  13. 제 2 항 내지 제 12 항 중 어느 한 항에 있어서,
    상기 복수의 제 1 수량은 상기 그룹의 상기 노드로부터 상기 요청자에게 송신된 비공개 메시지에 포함되고/포함되거나, 상기 요청자의 공개키로 암호화되고/암호화되거나,
    상기 그룹의 상기 노드는 각각 상기 노드의 상기 비공개키 지분을 저장하는 신뢰할 수 있는 실행 환경을 포함하고/포함하거나,
    상기 노드의 상기 신뢰할 수 있는 실행 환경은 상기 노드의 상기 비공개키 지분 및 상기 디지털 서명 체계의 상기 생성기 함수에 적어도 부분적으로 기초하여 상기 제 1 수량을 생성하고/생성하거나,
    상기 복수의 제 2 수량은 상기 그룹의 상기 노드로부터 상기 요청자에게 송신된 비공개 메시지에 포함되고/포함되거나, 상기 요청자의 공개키로 암호화되고/암호화되거나,
    상기 노드의 신뢰할 수 있는 실행 환경은 상기 노드의 상기 사전 지출 트랜잭션과 상기 비공개키 지분에 포함된 대로 상기 서명되지 않은 지출 트랜잭션의 해시에 적어도 부분적으로 기초하여 상기 제 2 수량을 생성하고/생성하거나,
    상기 그룹의 노드로부터 상기 요청자에게 송신된 상기 비공개 메시지는 상기 노드의 상기 신뢰할 수 있는 실행 환경의 상기 공개키와 연관되고, 상기 노드의 상기 신뢰할 수 있는 실행 환경의 상기 대응하는 비공개키로 서명되고/서명되거나,
    하나 이상의 노드는 작업 증명(proof-of-work) 블록체인에 저장하기 위해 상기 펀딩 트랜잭션과 상기 지출 트랜잭션을 채굴하는,
    블록체인 구현 보안 방법.
  14. 실행되는 경우, 프로세서가 제 1 항 내지 제 13 항 중 어느 한 항의 방법 중 임의의 부분을 수행하도록 구성하는 컴퓨터 실행 가능 명령어를 포함하는 컴퓨터 판독 가능 저장 매체.
  15. 전자 장치로서,
    인터페이스 장치와,
    상기 인터페이스 장치에 연결된 프로세서와,
    상기 프로세서에 연결된 메모리
    를 포함하고,
    상기 메모리는 상기 프로세서가 제 1 항 내지 제 13 항 중 어느 한 항의 방법 중 임의의 부분을 수행하도록 구성하는 컴퓨터 실행 가능 명령어를 저장하는
    전자 장치.
KR1020207018322A 2017-12-15 2018-12-12 낮은 엔트로피 패스워드로 블록체인 트랜잭션을 승인하기 위한 컴퓨터 구현 시스템 및 방법 KR20200099149A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1721049.3 2017-12-15
GB201721049 2017-12-15
PCT/IB2018/059921 WO2019116249A1 (en) 2017-12-15 2018-12-12 Computer-implemented systems and methods for authorising blockchain transactions with low-entropy passwords

Publications (1)

Publication Number Publication Date
KR20200099149A true KR20200099149A (ko) 2020-08-21

Family

ID=65013745

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020207018322A KR20200099149A (ko) 2017-12-15 2018-12-12 낮은 엔트로피 패스워드로 블록체인 트랜잭션을 승인하기 위한 컴퓨터 구현 시스템 및 방법

Country Status (7)

Country Link
US (2) US11429956B2 (ko)
EP (2) EP4235479A1 (ko)
JP (2) JP7289298B2 (ko)
KR (1) KR20200099149A (ko)
CN (1) CN111480315A (ko)
SG (1) SG11202005570XA (ko)
WO (1) WO2019116249A1 (ko)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11238450B2 (en) * 2016-12-21 2022-02-01 Nchain Licensing Ag Computer-implemented systems and methods to enable complex functionality on a blockchain while preserving security-based restrictions on script size and opcode limits
GB201701589D0 (en) 2017-01-31 2017-03-15 Nchain Holdings Ltd Computer-implemented system and method
SG11202005570XA (en) * 2017-12-15 2020-07-29 Nchain Holdings Ltd Computer-implemented systems and methods for authorising blockchain transactions with low-entropy passwords
US11188897B2 (en) * 2018-02-13 2021-11-30 Bank Of America Corporation Multi-tiered digital wallet security
CN112119611A (zh) 2018-05-14 2020-12-22 区块链控股有限公司 使用区块链执行原子交换的计算机实现的系统和方法
EP3671599A1 (de) * 2018-12-21 2020-06-24 Siemens Aktiengesellschaft Verfahren zum betreiben eines verteilten datenbanksystems, verteiltes datenbanksystem und industrieautomatisierungssystem
GB2585010B (en) * 2019-06-24 2022-07-13 Blockstar Developments Ltd Cryptocurrency key management
CN110189131B (zh) * 2019-06-26 2020-11-06 创新先进技术有限公司 采用环签名的机密区块链交易的实现方法及装置
US11238447B2 (en) 2019-06-26 2022-02-01 Advanced New Technologies Co., Ltd. Blockchain transactions with ring signatures
CN110335042B (zh) * 2019-06-26 2020-10-20 创新先进技术有限公司 基于环签名的匿名交易方法及装置
US10790990B2 (en) 2019-06-26 2020-09-29 Alibaba Group Holding Limited Ring signature-based anonymous transaction
CN110544167B (zh) * 2019-07-25 2022-03-01 晋商博创(北京)科技有限公司 基于cpk的联盟链的数据处理方法、服务器及存储介质
CN110519059B (zh) * 2019-09-29 2023-05-05 四川师范大学 一种基于双线性映射的区块链双密钥隐匿地址处理方法
CN111160905B (zh) * 2019-12-17 2023-07-18 浙江大学 一种区块链节点用户请求处理保护方法及装置
CN111371558B (zh) * 2020-02-26 2024-01-16 百度在线网络技术(北京)有限公司 区块链数据处理方法、装置、电子设备及介质
US11424911B2 (en) * 2020-03-03 2022-08-23 International Business Machines Corporation Storage and communication environment for cryptographic tags
US11080412B1 (en) 2020-08-20 2021-08-03 Spideroak, Inc. Efficiently computing validity of a block chain
CN112241553B (zh) * 2020-10-27 2022-11-04 上海万向区块链股份公司 一种基于多账本架构的区块链隐私保护方法及系统
CN112636929B (zh) * 2020-12-29 2023-01-17 北京百度网讯科技有限公司 群组业务实现方法、装置、设备和存储介质
CN113393225B (zh) * 2021-06-30 2022-10-28 杭州链网科技有限公司 数字货币加密支付方法及系统
CN113538140A (zh) * 2021-07-05 2021-10-22 杭州宇链科技有限公司 一种基于可信执行环境与门限签名的数据交易方法
US11496327B1 (en) * 2021-07-07 2022-11-08 Ava Labs, Inc. Secure and trustworthy bridge for transferring assets across different networks
US11677552B2 (en) * 2021-09-09 2023-06-13 Coinbase Il Rd Ltd. Method for preventing misuse of a cryptographic key
WO2023238172A1 (ja) * 2022-06-06 2023-12-14 日本電信電話株式会社 鍵発行システム、鍵発行方法、およびプログラム

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1633776A (zh) 2002-04-15 2005-06-29 美国多科摩通讯研究所股份有限公司 利用双线性映射的签名方案
EP1687931B1 (en) * 2003-10-28 2021-12-29 BlackBerry Limited Method and apparatus for verifiable generation of public keys
US20060153364A1 (en) 2005-01-07 2006-07-13 Beeson Curtis L Asymmetric key cryptosystem based on shared knowledge
KR100718687B1 (ko) * 2005-12-23 2007-05-15 학교법인 대전기독학원 한남대학교 겹선형 쌍 함수를 이용한 아이디 기반의 문턱 서명 방법
US9489522B1 (en) * 2013-03-13 2016-11-08 Hrl Laboratories, Llc Method for secure and resilient distributed generation of elliptic curve digital signature algorithm (ECDSA) based digital signatures with proactive security
GB201309702D0 (en) * 2013-05-30 2013-07-17 Certivox Ltd Security
WO2015160839A1 (en) * 2014-04-17 2015-10-22 Hrl Laboratories, Llc A method for secure and resilient distributed generation of elliptic curve digital signature algorithm (ecdsa) based digital signatures with proactive security
US10255479B2 (en) * 2014-04-23 2019-04-09 Signpass Ltd. Methods and systems for signature analysis and authentication
EP2975570A1 (de) 2014-07-17 2016-01-20 draglet GmbH Verfahren und eine Vorrichtung zur Absicherung von Zugriffen auf Wallets in denen Kryptowährungen abgelegt sind
WO2016049406A1 (en) * 2014-09-26 2016-03-31 Technicolor Usa, Inc. Method and apparatus for secure non-interactive threshold signatures
US9830480B2 (en) * 2015-05-27 2017-11-28 Google Llc Policies for secrets in trusted execution environments
EP3318041A1 (en) 2015-06-30 2018-05-09 Raghav Bhaskar User friendly two factor authentication
US9948467B2 (en) * 2015-12-21 2018-04-17 Mastercard International Incorporated Method and system for blockchain variant using digital signatures
US9565020B1 (en) 2016-02-02 2017-02-07 International Business Machines Corporation System and method for generating a server-assisted strong password from a weak secret
WO2017147696A1 (en) 2016-02-29 2017-09-08 Troy Jacob Ronda Systems and methods for distributed identity verification
US9800411B1 (en) * 2016-05-05 2017-10-24 ISARA Corporation Using a secret generator in an elliptic curve cryptography (ECC) digital signature scheme
US11361316B2 (en) 2016-06-06 2022-06-14 Refinitiv Us Organization Llc Systems and methods for providing a personal distributed ledger
US10681038B1 (en) * 2016-10-26 2020-06-09 Marvell Asia Pte, Ltd. Systems and methods for efficient password based public key authentication
CN106357401B (zh) * 2016-11-11 2019-09-10 武汉理工大学 一种私钥存储及使用方法
TWI765019B (zh) * 2017-04-11 2022-05-21 安地卡及巴布達商區塊鏈控股有限公司 區塊鏈上之快速分散式共識
GB201707168D0 (en) * 2017-05-05 2017-06-21 Nchain Holdings Ltd Computer-implemented system and method
CN110754061A (zh) * 2017-06-14 2020-02-04 区块链控股有限公司 用于避免或减少区块链网络上的加密滞留资源的系统和方法
CN107395367B (zh) * 2017-08-08 2020-08-04 三峡大学 一种基于量子密钥的群签名系统
CN113765657B (zh) 2017-08-28 2023-10-24 创新先进技术有限公司 一种密钥数据处理方法、装置及服务器
CN107483205B (zh) * 2017-09-28 2019-08-20 武汉理工大学 一种基于加密的私钥秘密的数字签名生成方法及系统
CN107623569A (zh) 2017-09-30 2018-01-23 矩阵元技术(深圳)有限公司 基于秘密共享技术的区块链密钥托管和恢复方法、装置
SG11202005570XA (en) * 2017-12-15 2020-07-29 Nchain Holdings Ltd Computer-implemented systems and methods for authorising blockchain transactions with low-entropy passwords

Also Published As

Publication number Publication date
EP3725029B1 (en) 2023-07-12
US20210158342A1 (en) 2021-05-27
EP3725029A1 (en) 2020-10-21
US11429956B2 (en) 2022-08-30
SG11202005570XA (en) 2020-07-29
EP4235479A1 (en) 2023-08-30
WO2019116249A1 (en) 2019-06-20
JP2023109981A (ja) 2023-08-08
JP2021507564A (ja) 2021-02-22
CN111480315A (zh) 2020-07-31
US20230131970A1 (en) 2023-04-27
JP7289298B2 (ja) 2023-06-09

Similar Documents

Publication Publication Date Title
US20230131970A1 (en) Computer-implemented systems and methods for authorising blockchain transactions with low-entropy passwords
US11799637B2 (en) Methods and systems for blockchain-implemented event-lock encryption
JP7442606B2 (ja) 動的ノードグループのための秘密鍵のセキュアな再利用
EP3613189B1 (en) Secure blockchain-based consensus

Legal Events

Date Code Title Description
E902 Notification of reason for refusal