KR20200041338A - 블록체인 네트워크를 통해 엔티티에 의해 제공되는 데이터의 통신, 저장 및 처리를 위한 시스템 및 방법 - Google Patents

블록체인 네트워크를 통해 엔티티에 의해 제공되는 데이터의 통신, 저장 및 처리를 위한 시스템 및 방법 Download PDF

Info

Publication number
KR20200041338A
KR20200041338A KR1020207006731A KR20207006731A KR20200041338A KR 20200041338 A KR20200041338 A KR 20200041338A KR 1020207006731 A KR1020207006731 A KR 1020207006731A KR 20207006731 A KR20207006731 A KR 20207006731A KR 20200041338 A KR20200041338 A KR 20200041338A
Authority
KR
South Korea
Prior art keywords
way
candidate
voting
blockchain
transaction
Prior art date
Application number
KR1020207006731A
Other languages
English (en)
Other versions
KR102669763B1 (ko
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 KR20200041338A publication Critical patent/KR20200041338A/ko
Application granted granted Critical
Publication of KR102669763B1 publication Critical patent/KR102669763B1/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
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0637Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/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/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/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
    • 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/46Secure multiparty computation, e.g. millionaire problem
    • H04L2209/463Electronic voting

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)

Abstract

블록체인에서 의사결정을 하는 컴퓨터-구현 방법이 제공된다. 이 방법은 선정(A, B)과 연계되는 제1 서명(σ(Am), σ(Bm)) 및 선정과 연계되는 제2 서명(σ(A), σ(B))에 의해 상환 가능한 블록체인 투표 커미트먼트 트랜잭션(2)을 제공하는 단계, 상기 제2 서명을 실행하기 위해 임계 개수의 공유가 필요한 적어도 하나의 각각의 비밀 값(kA, kB)의 적어도 하나의 공유(kA,i, kB,i)를 복수의 참여자(Ui) 각각에게 제공하는 단계, 및 블록체인 투표 커미트먼트 트랜잭션(2)을 블록체인에 제출하는 단계를 포함한다.

Description

블록체인 네트워크를 통해 엔티티에 의해 제공되는 데이터의 통신, 저장 및 처리를 위한 시스템 및 방법
본 발명은 일반적으로 암호화 방식으로 실시되는 데이터 기록 및 처리 시스템에 관한 것이다. 특히, 본 발명은 블록체인 네트워크를 경유하여 또는 통해 엔티티에 의해 시스템에 제공되는 데이터를 통신, 기록 및/또는 저장하기 위한 기술적인 해법에 관한 것이다. 데이터는, 예를 들어, 선정, 선택, 피드백 및/또는 의사결정을 나타낼 수 있다. 본 발명은 블록체인 네트워크를 통해 엔티티들 사이에서 이러한 데이터의 안전한 저장 및 통신을 위한 기술을 제공하고, 전송된 및 전송-후 사용된 데이터의 무결성을 보장한다. 또한, 네트워크에서 이러한 데이터의 소스를 식별하는 것과 관련된 문제를 완화해서, 공인된 활동을 방지한다. 본 발명은, 투표, 전자 피드백 제출, 또는 집계 애플리케이션, 또는 데이터 무결성, 소스 은닉 및 사용 할당량 또는 한도의 시행이 중요할 수 있는 다른 애플리케이션에 적합하다(다만, 이에 한정되는 것은 아님).
본 명세서에 있어서는, '블록체인(blockchain)'이라는 용어를 모든 형태의 전자적인, 컴퓨터-기반의, 분산 원장(distributed ledgers)을 포함한다는 의미로 사용한다. 이는 컨센서스-기반의 블록체인 및 트랜잭션-체인 기술, 허가 및 무허가 원장, 공유 원장 및 이들의 변형을 포함한다. 다른 블록체인 구현예들이 제안되고 개발되었지만, 가장 널리 알려져 있는 블록체인 기술의 애플리케이션은 비트코인(Bitcoin) 원장이다. 본 명세서에서는 편의 및 예시의 목적으로 비트코인이 언급될 수 있지만, 본 발명은 비트코인 블록체인에 사용하는 것으로 한정되지 않으며 대안적인 블록체인 구현예 및 프로토콜도 본 발명의 범위 내에 있는 것이라는 점에 유의해야 한다. "사용자(user)"라는 용어는 본 명세서에서는 인간 또는 프로세서 기반의 리소스를 의미할 수 있다.
블록체인은, 결국 트랜잭션들로 구성된 블록들로 구성되는 컴퓨터-기반의 탈-중앙집중형 분산 시스템으로 구현된 컨센서스-기반의 전자 원장이다. 각각의 트랜잭션은 블록체인 시스템 참여자들 사이의 디지털 자산의 제어의 전송을 인코딩하는 데이터 구조이며, 적어도 하나의 입력 및 적어도 하나의 출력을 포함한다. 각각의 블록이 이전 블록의 해시를 포함하고, 해당 블록들이 함께 연쇄되어 그 개시 이래로 블록체인에 작성된 모든 트랜잭션의 영구적인 불변의 레코드를 생성한다. 트랜잭션은 그 입력 및 출력에 내재된 스크립트라고 하는 소규모 프로그램을 포함하고, 이는 트랜잭션의 출력에 액세스할 수 있는 방법 및 대상을 특정한다. 비트코인 플랫폼의 경우, 이러한 스크립트는 스택(stack)-기반 스크립팅 언어를 사용해서 작성된다.
블록체인에 트랜잭션이 작성되게 하기 위해서는, 트랜잭션이 "유효성 검증(validated)"되어야 한다. 네트워크 노드(채굴자)는, 각각의 트랜잭션이 유효함을 보장하고, 무효한 트랜잭션이 네트워크로부터 거부되게 하는 작업을 수행한다. 네트워크 노드에 인스톨된 소프트웨어 클라이언트는 그 잠금 및 잠금 해제 스크립트를 실행함으로써 아직 소비되지 않은 트랜잭션(UTXO)에 대하여 이 유효성 검증 작업을 수행한다. 잠금 및 잠금 해제 스크립트의 실행이 TRUE로 평가되면, 트랜잭션은 유효하고, 트랜잭션이 블록체인에 작성된다. 따라서, 블록체인에 트랜잭션이 작성되게 하기 위해서는, i) 트랜잭션을 수신하는 제1 노드에 의해 유효성 검증되어야 하고 - 트랜잭션이 유효성 검증되면, 해당 노드가 네트워크 내의 다른 노드들에 트랜잭션을 중계하고; ii) 채굴자에 의해 구축되는 신규 블록에 추가되어야 하고; iii) 채굴, 즉 과거 트랜잭션들의 공공 원장에 추가되어야 한다. 일단 기록되면, 임의의 주어진 블록의 데이터는 모든 후속 블록 및 네트워크 과반수의 공모를 변경하지 않고는 소급적으로 변경될 수 없다.
트랜잭션은 하나의 노드로부터 다른 노드로의 하나 이상의 토큰의 전송을 수반한다. 토큰은 네트워크 리소스의 장래의 제어를 나타낼 수 있다. 경우에 따라, 토큰은 자산 또는 가치를 나타낼 수 있지만, 필수적인 것은 아니다. 예를 들어, 경우에 따라, 토큰은 암호 화폐로서 이해될 수 있다. 그러나, 본원은 암호 화폐와 관련된 구현예에 한정되지 않으며, 제어 토큰의 분산 전송을 위한 블록체인 네트워크와 관련된 것으로 더욱 광범위하게 이해된다.
블록체인은 검증 가능하고 영구적인 방식으로 파티들간의 트랜잭션들을 기록할 수 있는 공공 원장으로서의 역할을 한다. 블록체인은, 다양한 애플리케이션에서 사용하기에 적합하게 만드는, 온-체인 저장된 정보의 취소 불가능성(irrevocability) 및 탈-중앙집중형 컨센서스를 통해 확립되는 신뢰성(trust)과 같은 다수의 특성을 갖고 있다. 이러한 애플리케이션의 하나가 전자 투표이다. "투표 시스템(voting system)"이라는 용어는 본 명세서에서 정치적 또는 행정적 맥락으로 한정되는 것이 아니라, 포괄적인 관점에서 단순히 선정, 선택, 의사결정 또는 파라미터(즉, 투표)가 어떤 방식으로든 전송, 기록, 저장, 처리 및/또는 등록될 수 있게 하는 시스템을 의미하도록 사용된다는 점에 유의해야 한다. 따라서, 본 발명은 엔티티들간의 향상된 데이터의 통신, 저장 및 보안과 관련된다.
많은 유형의 컴퓨터-구현 시스템은 선택/의사결정의 표시 또는 그 밖의 데이터가 네트워크를 통해 통신될 수 있게 해서 해당 데이터가 어떤 방식으로든 실행 또는 처리될 수 있게 할 필요가 있다. 많은 경우에, 선정이 이루어질 수 있는 횟수와 관련된 특정한 규칙 또는 기준을 시행할 수 있는 것이 바람직하다. 다시 말해서, 선정 또는 선택이 이루어질 수 있는 횟수에 대한 할당량 또는 한도가 있을 수 있다. 단지 편의성 및 참조의 용이함을 위해, 이러한 시스템을 "e-투표(e-voting)" 시스템이라고 할 수 있지만, 이는 본 발명을 정치적 또는 행정적 맥락에 한정하는 것으로 해석되지 않아야 한다. 대안으로서, 본 발명의 보다 폭넓은 적용 가능성을 반영하기 위해 "데이터 기록 시스템(data recording system)"이라는 용어가 사용될 수 있다. 본 발명은 수신, 기록 및 저장되는 데이터의 유형 또는 특성과 관련하여 제한되지 않는다.
최근, 안전한 전자 투표를 위한 프로토콜을 설계하기 위해 온라인 기술을 이용하는 것에 대한 관심이 증가하고 있다. 이러한 노력의 목표는 사용자 그룹이 개인 선호도, 비밀이 유지된 선호도에 기초하여 공유된 의사결정을 할 수 있게 하는 것이다. 전자 투표와 관련된 과제로서는, 제2 파티가 사용자의 투표를 결정하는 능력을 거부하는 것, 투표의 취소 불가능성을 보장하는 것, 그리고 프로세스 전반에 걸쳐 해당 프로세스의 투표자 신뢰성을 얻는 데 필요한 투명성을 제공하는 것이 포함된다.
암호 화폐 프로토콜의 기준으로서 블록체인의 도입은 이러한 분산 원장의 불변성 및 투명성 속성의 이용을 제공한다. 이러한 원장은 이용 가능한 암호화 해법과 결합하여, 블록체인을 통상적으로 전자 (서버) 및 비-전자 투표 프로세스에 존재하는 신뢰할 수 있는 제3자의 효과적인 대체 수단으로 사용할 수 있는 고유한 기회를 제공한다.
다양한 기존의 서비스에서의 사용을 위해, 전세계 정보 통신 기술 커뮤니티, 및 특히 인터넷에 의한 광범위한 채택으로 인해, 전자 투표에 대한 고려가 불가피해졌다. 웹 기반의 여론조사는 사용자의 정서를 확인하는 일반적인 방법이지만, 관공서 및 기타 상황과 관련된 선거에 전자 투표를 사용하는 것에 대해서는 주목할 만한 반대가 있었다. 이러한 저항에 직면하여, 전자 투표가 더 큰 성공을 거두려면, 제안된 시스템이 다양한 사회-기술적 장애물을 만족시키는 임무를 맡아야 할 것이다.
전자 투표 시스템이 달성하려고 노력해야 하는, 바람직한 것으로 간주되는 일부 기준은 다음과 같다:
정확도(correctness): 모든 투표가 정확하게 고려된다; 즉, 무효한 또는 비공인된 투표권은 제외되고, 모든 유효한 투표가 최종 결과에 포함된다.
프라이버시(privacy): 투표가 투표자 자신과는 다른 참여자에게 알려지지 않는다.
이중 투표 방지(prevent double voting): 투표가 2번 제출되지 않는다, 즉, 공격자가 다른 투표자에 의해 이미 제출된 투표를 복제할 수 없어야 한다.
적격성(eligibility): 공인된 투표자만이 프로토콜에서 자신의 투표권을 행사할 수 있다.
투표가 정확하게 고려되었음을 검증하는 검증 가능성(verifiability).
암호 화폐 비트코인을 통한 블록체인 기술의 출현은 전자 투표 프로토콜을 구축함에 있어서 블록체인의 특성을 활용할 기회를 제공했다. 블록체인 자체는 트랜잭션의 유효성 검증에서 신뢰할 수 있는 제3자에 대한 필요성을 제거하는 변경 불가능한 공공 원장이다. 이러한 특성은 앞서 언급한 5가지 기준을 하나 이상 수용하거나 및/또는 가능하게 함으로써 전자 투표에 적용할 수 있을 것으로 생각된다.
블록체인은 모든 종류의 투표의 조작을 회피하기 위해 투표 및 의견이 공개적으로 및 영구적으로 기록될 수 있는 적절한 환경을 구성한다. 이러한 능력에도 불구하고, 블록체인에서 안전한 투표를 생성하기 위해 해결되어야 할 여러 문제가 있다. 이는 복수의 투표권 제출을 방지하는 것에서부터 사용자의 프라이버시 및 크리덴셜 확인을 유지하는 것에 이른다.
탈-중앙집중화는 온라인 e-투표 및 평가 프로토콜의 가장 큰 과제 중 하나이고: 즉, 일반적으로 기존의 해법은 남용을 방지하는 방식으로 구성되지만, 이는 투표 또는 피드백을 유효성 검증하고 고려하기 위해 중앙 기관에 의존한다.
중앙 기관은 은닉 서명(blind signature) 및 동형 암호(homomorphic encryption)와 같은 상이한 암호화 프리미티브를 사용해서 투표권 투표에 기밀성 및 적격성 검증을 추가할 수 있다. 차움(Chaum)의 프로토콜에서, 참여자는 투표-투표자 링크를 위장하기 위해 브로드캐스트 전에 믹스 네트워크(Mix Nets) 설정을 사용해서 투표를 리셔플링(reshuffle; 다시 섞기) 및 암호화하는 믹싱 기관에 자신의 투표를 송신한다. 이는 Chaum, D. L. (1981) - "Untraceable electronic mail, return addresses, and digital pseudonyms", Communications of the ACM, 24(2), 84-90에서 더욱 상세하게 설명된다.
따라서, 두 가지의 가능한 옵션 중에서, 투표자들이 선호 후보자에게 자신의 투표권을 행사하기 위해서 뿐만 아니라 일정량의 비트코인 또는 토큰을 우승 후보자에게 커미트(commit)하기 위해서 비트코인 트랜잭션을 활용하는 비트코인-호환 가능한 투표 프로토콜을 제공하는 것이 바람직한다. 이 프로토콜은 분산 키 공유 스킴을 이용해서 충분한 투표를 획득한 후보자에 대한 보상을 가능하게 한다.
그래서, 이러한 개선된 해법이 현재 고안되었다.
따라서, 본 발명에 따르면, 첨부된 청구항들에서 정의되는 바와 같은 방법이 제공된다.
본 발명에 따르면, 블록체인에서 투표하는 컴퓨터-구현 방법으로서, 복수의 투표자 각자에게 적어도 하나의 비밀 값 공유를 제공- 각각의 비밀 값은 선정과 연계됨 -하는 단계; (i) 우승 선정의 비밀 값으로부터 결정 가능한 제1 서명; 및 (ii) 우승 선정의 아이덴티티를 나타내는 제2 서명의 제공시에 우승 선정을 드러내기 위해 상환 가능한 커미트먼트 트랜잭션(commitment transaction)을 제공한는 단계; 및 커미트먼트 트랜잭션을 블록체인에 제출하는 단계를 포함하는 방법이 제공될 수 있으며, 우승 선정의 비밀 값은 적어도 하나의 투표자에 의해 제공되는 투표 아이템의 개수를 사용해서 결정 가능하고, 각각의 투표 아이템은 적어도 하나의 공유를 포함하고, 개수는 소정의 값을 초과한다.
이러한 방법을 제공함으로써, 블록체인의 사용자들은 변조 방지(tamper-proof) 최다 득표 당선(first-past-the-post) 방식의 투표 시스템으로 안전하게 투표권을 행사할 수 있다.
적어도 하나의 투표자는 암호화 자산을 나타내는 적어도 하나의 서명된 입력을 커미트먼트 트랜잭션에 추가할 수 있다.
이는 투표 프로세스에의 경솔한 또는 악의적인 참여의 의욕을 꺾는 장점을 제공한다.
이 방법은, 잠금시간(locktime) 조건의 충족시에, 암호화 자산의 적어도 일부분을 적어도 하나의 투표자에게 반환하기 위해 상환 가능한 반환 트랜잭션을 제공하는 단계를 더 포함할 수 있다.
이는 우승 선정이 없을 경우 자금 손실을 최소화하는 메커니즘의 장점을 제공한다.
커미트먼트 트랜잭션은 n개 중 m개(m-of-n)의 다중 서명 상환 스크립트를 포함할 수 있고, 적어도 하나의 투표 아이템이 이 상환 스크립트에 추가될 수 있다.
이는 적어도 하나의 투표 아이템의 저장 및 공개의 가시화를 가능하게 한다는 장점을 제공한다.
적어도 하나의 투표 아이템은 적어도 하나의 선정의 제1 공개 키로 암호화될 수 있다.
이는 선택된 선정만이 투표 아이템을 복호하고 공유에 액세스하는 것을 가능하게 한다는 장점을 제공한다.
적어도 하나의 투표 아이템은 적어도 하나의 선정을 식별하는 적어도 하나의 식별 아이템을 포함할 수 있다.
투표 아이템의 성공적인 복호시에, 이는 공유가 나중에 쉽게 식별될 수 있게 한다는 장점을 제공한다.
적어도 하나의 투표 아이템은 적어도 하나의 공유 및 적어도 하나의 식별 아이템의 연결(concatenation)을 포함할 수 있다.
투표자에게 공유를 제공하는 단계는: (i) 딜러 엔티티가 투표자에게 공유를 제공하는 것; 및 (ii) 투표자가 공유를 생성하는 것 중 적어도 하나를 포함할 수 있다.
이는 딜러-기반 투표 시스템 및 딜러-없는 투표 시스템을 모두 가능하게 하고, 그에 따라 투표 방법의 다양성이 증가된다.
이 방법은 커미트먼트 트랜잭션을 블록체인에 제출하기 전에는 어떤 투표자가 어떤 투표 아이템을 제공하는지를 숨기는 단계를 더 포함할 수 있다.
이는 투표자가 자신의 투표 아이템으로부터 식별되는 것을 방지하고, 그에 따라 투표 방법의 보안을 증가시키는 장점이 제공된다.
이 방법은 커미트먼트 트랜잭션을 상환하도록 구성되는 상환 트랜잭션을 제공하는 단계를 더 포함할 수 있다.
이는 우승 선정의 아이덴티티를 투표자에게 표시하는 간단한 방식의 장점을 제공한다.
이 방법은 적어도 하나의 제2 공개 키를 사용해서 적어도 하나의 공유를 유효성 검증하는 단계를 더 포함할 수 있다.
이는 투표자가 공유의 유효성을 확인할 수 있게 하고, 그에 따라 투표 방법의 견고성을 증가시키는 장점이 제공된다.
복수의 투표자는 공유들의 적어도 하나의 서브세트를 조합하는 데 협업해서 적어도 하나의 상기 제2 공개 키를 결정할 수 있다.
이는 투표 방법의 적어도 일부를 탈-중앙집중화하는 수단을 제공하고, 그에 따라 방법의 다양성을 더욱 증가시키는 장점이 제공된다.
부가적으로 또는 대안으로서, 본 발명에 따르면, 블록체인에서 투표의 우승 선정을 결정하는 컴퓨터-구현 방법으로서, 적어도 하나의 투표 아이템으로부터 적어도 하나의 비밀 값의 적어도 하나의 공유를 결정- 각각의 비밀 값은 선정과 연계됨 -하는 단계; 우승 선정의 비밀 값을 적어도 하나의 투표 아이템에 의해 제공되는 그 공유의 개수를 사용해서 결정- 개수는 소정의 값을 초과함 -하는 단계; 우승 선정의 비밀 값으로부터 제1 서명을 결정하는 단계; 및 (i) 제1 서명; 및 (ii) 우승 선정의 아이덴티티와 연계되는 제2 서명을 모두 제공함으로써 우승 선정을 드러내기 위해 커미트먼트 트랜잭션을 상환하는 단계를 포함하는 방법이 제공될 수 있다.
이러한 방법을 제공함으로써, 블록체인에서 수행되는 투표 방법의 우승 선정의 아이덴티티가 안전하고 투명한 방식으로 결정 및 확인될 수 있다.
본 발명은 또한, 시스템으로서,
프로세서; 및
프로세서에 의한 실행의 결과로서, 시스템으로 하여금 본 명세서에서 설명되는 컴퓨터-구현 방법의 임의의 실시형태를 수행하게 하는 실행 가능 명령어를 포함하는 메모리를 포함하는 시스템을 제공한다.
본 발명은 또한, 컴퓨터 시스템의 프로세서에 의한 실행의 결과로서, 컴퓨터 시스템으로 하여금 적어도 본 명세서에서 설명되는 컴퓨터-구현 방법의 실시형태를 수행하게 하는 실행 가능 명령어를 저장하는 비일시적인 컴퓨터-판독 가능 저장 매체를 제공한다.
본원은, 사용자들에 의해 블록체인에 제출된 데이터 아이템들을 암호화하고, 유효성 검증하고, 브로드캐스팅하기 위한 스킴의 안전하고, 암호화 방식으로 시행되고, 효율적인 구현을 가능하게 하는 시스템 및 방법을 설명한다. 일부 유용한 애플리케이션에 있어서, 사용자는 투표 또는 피드백 플랫폼의 참여자일 수 있다. 일부 구현예에 있어서, 본원은 악의적인 행위자로부터의 데이터 제출을 방지하도록 설계된 프로토콜을 제공한다. 이는 수신된 데이터에 기초하여 시스템에 의해 생성된 결과에 대한 무결성 및 신뢰성을 보존할 수 있다.
본 발명의 이들 및 다른 양태들은 본 명세서에서 설명되는 실시형태로부터 분명해지며 이를 참조하여 설명될 것이다. 이제, 본 발명의 실시형태가 첨부 도면을 참조하여 단지 예시로서 설명될 것이다:
도 1은 본 발명의 3가지 트랜잭션의 상호작용을 도시하는 개략도를 예시한다.
도 2는 본 발명에 따른 투표자의 수, 우승자로 결정되기 위한 선정에 필요한 임계 투표 수, 및 다항식의 차수 사이의 관계를 도시하는 표이다.
도 3은 본 발명을 예시하는 흐름도를 도시한다.
도 4는 투표 커미트먼트 트랜잭션을 도시한다.
도 5는 2가지의 우승자 지불 트랜잭션을 도시한다.
도 6은 환불 트랜잭션을 도시한다.
도 7은 다양한 실시형태가 구현될 수 있는 컴퓨팅 환경을 예시하는 개략도이다.
본원은 일련의 투표자들이 한 쌍의 후보자 사이에서 선택하도록 요청받는 시스템- 여기서, 우승 후보자가 각각의 투표자에 의해 커미트된 xBTC를 수령함 -인 임계치 비밀 공유 투표(Threshold Secret Share Voting)(TSSV) 시스템을 설명한다. 우승 후보자는 과반수의 투표 및 지정된 임계치를 넘는 다수의 투표를 모두 득표해야 한다. TSSV 프로토콜은 비밀 키 공유들의 분산을 이용하고, 하나 이상의 참여자가 악의적으로 행동하거나 프로토콜의 예상을 벗어나는 경우에는 커미트된 모든 비트코인을 회수할 수 있도록 설계된다.
약어 "BTC"는 본 명세서에서 비트코인 프로토콜의 임의의 변형에 대한 속기로서 사용될 수 있다. 이는 제한으로서 해석되거나 또는 어느 하나의 특정한 비트코인-관련 프로토콜을 가리키는 것으로 해석되지 않아야 한다.
비밀 공유(Secret sharing)
임계치 암호 체계는 (t;n)-임계치로 정의되고, 여기서 n은 파티의 수이고, t+1은 비밀을 재구성하는 데 필요한 최소 파티 수이다. 비밀 공유 스킴은, 비밀 k가 n명의 플레이어 사이에 분할되어, k를 재구성하기 위한 협업에 적어도 t+1명의 참여자가 필요해지도록 하는, 임계치 암호 체계의 실시예이다. 비밀 k의 임의의 t개의 부분에 대한 지식으로는 비밀이 미결정인 채로 남아 있게 된다.
샤미르의 비밀 공유(Shamir's secret sharing)(또는 SSS)는 다항식 보간법에 기초하고, 보편성을 훼손함이 없이 비밀은 유한 필드 F의 요소인 것으로 가정된다. 이 스킴은 딜러(물론, 딜러 없는 버전도 존재함), n명의 참여자 집합(U1, ..., Un) 및 액세스 구조 A, 즉 비밀을 재구성할 수 있는 플레이어 그룹을 포함한다. 이는 Shamir, A. (1979) "How to share a secret", Communications of the ACM, 22(11), 612-613에서 더욱 상세하게 설명된다.
샤미르의 해법의 경우, 임의의 랜덤 비밀은 t차 다항식 f(x)에서 f(0)으로서 저장되고 플레이어 i만이 그 공유 f(xi)를 계산할 수 있다. n명의 플레이어 중에서 t+1명이 협업하면, 이들은 라그랑즈 다항식 보간법(Lagrange Polynomial Interpolation)을 사용해서 f(x1), f(x2), ..., f(xn)에 대응하는 (키 k의) 그 공유들 k1, k2, ..., kn으로 f(x) 상의 임의의 점을 재구성할 수 있다.
라그랑즈 다항식 보간법을 사용해서, 차수가 t인 함수 f(x)가 t+1개의 점으로 다음과 같이 재구성될 수 있고,
Figure pct00001
Figure pct00002
여기서
Figure pct00003
Figure pct00004
이고,
Figure pct00005
이라는 점에 유의한다.
딜러가 있을 경우, 딜러는 사이즈 p(p는 소수)의 유한 필드 F의 요소인 것으로 가정된 비밀
Figure pct00006
를 단순히 선정하고, 다항식
Figure pct00007
의 계수를 나타내는 t-1개의 양의 정수
Figure pct00008
을 무작위로 선택한다. 이후, 딜러는 다항식에 속하는 n개의 점
Figure pct00009
을 연산해서 참여자들에게 분산시킨다.
딜러 없는 공유 분산 단계에 있어서:
1. 각각의 플레이어 Ui에게는 모두에게 알려진 xi가 할당된다. 각각의 xi는 고유한 것이어야 한다.
2. 각각의 플레이어 Ui는 차수가 t인 랜덤 다항식
Figure pct00010
를 생성한다.
3. 각각의 플레이어 Ui는 다항식
Figure pct00011
상의 그들 각각의 점을 다른 모든 플레이어에게 비밀리에 송신한다(수신자의 공개 키로 암호화됨).
4. 각각의 플레이어 Ui는 그들의 수신된
Figure pct00012
(모두
Figure pct00013
이고, 여기서 n은 타원 곡선 상의 점 G에 의해 생성되는 그룹의 위수임)를 모두 합산해서 다음을 형성하고,
Figure pct00014
이는 다항식
Figure pct00015
상의 공유이다.
임계치 서명 계산의 중요한 요소는 k×G의 결정이고, 여기서 k는 비밀 키이며, G는 타원 곡선(Elliptic Curve) 상의 점이다.
f(x)가 t차 다항식이면, 비밀 k는
Figure pct00016
에 의해 보간될 수 있고, 여기서 π는 공유들
Figure pct00017
의 사이즈 t+1 서브세트이고, b는 보간 팩터이다. π는 그들의 공유 ki를 드러내지 않고 k×G를 계산하기 위해 협업하는 t+1명의 플레이어 그룹이다. k는 t-차 다항식 상의 x=0 점이다.
· 각각의 플레이어 Ui
Figure pct00018
부분을 계산한다.
· π의 모든 플레이어는 그들의 부분을 함께 가산(라그랑즈 보간법을 통해 비밀 k를 재구성)하고 다음이 주어진다:
Figure pct00019
Q = kG를 계산하는 이 프로세스를 비밀 공유 가담(Secret Share Joining)이라고 한다.
공개 검증 가능한 비밀 공유 스킴(Public verifiable secret sharing schemes)
TSSV 프로토콜에서는, 투표자들이 정확한 비밀 공유를 제공받는지를 검증할 수 있는 것이 바람직하다. 실제로, 일치되지 않는 공유들이 플레이어들 사이에 분산되면, 투표자들의 부정확한 공유/투표가 투표자의 선호 후보자에게 기여하지 못하게 된다. 공유 검증을 위해, 본원에서는 투표자들이 자신의 공유 뿐만 아니라 다른 투표자들의 공유도 검증할 수 있게 하는 공개적으로 검증 가능한 비밀 공유 스킴(Publicly Verifiable Secret Sharing scheme)(PVSS)을 채용한다. 이는 Stadler, M. (1996, May), "Publicly verifiable secret sharing" - International Conference on the Theory and Applications of Cryptographic Techniques (pp.190-199), Springer Berlin Heidelberg에서 더욱 상세하게 설명된다.
PVSS 스킴에 있어서, 각각의 참여자 Ui는 상응하는 공개 암호화 기능 Ei로 암호화된 정보에 액세스할 수 있는 복호 기능 Di를 갖는다. 이렇게 해서, 딜러는 공개 암호화 기능을 사용해서 공유들을 분산시키고 다음 형태로 공개할 수 있다.
Figure pct00020
따라서, 암호화된 공유들은, 아래에서 상세하게 설명하는 바와 같이, 임의의 관심 있는 개인에 의해 공개적으로 검증될 수 있다. 참여자들이 자신의 공유를 검증할 수 있을 뿐만 아니라, 누구든지 참여자들이 정확한 공유를 수신했는지, 즉 딜러가 정직했었는지의 여부를 검증할 수 있다.
이 프로토콜의 주요 단계는 다음과 같다:
1- 비밀 공유(secret sharing): 딜러는 알고리즘
Figure pct00021
을 실행해서 공유들을 연산하여 참여자들 사이에 분산시킨다.
2- 재구성(reconstruction): 참여자들은 알고리즘 Recover, 즉
Figure pct00022
를 실행해서 비밀을 재구성할 수 있다.
3- 검증(verification): 알고리즘 PubVerify가 암호화된 공유들을 유효성 검증하는 데 사용된다. 알고리즘
Figure pct00023
Figure pct00024
가 실행되면, 딜러는 정직하고 공유들은 일치된다.
PVSS 스킴은 회수 단계에서 필요에 따라 상호적이거나 비-상호적일 수 있다.
비트코인 트랜잭션에서 입력으로부터 출력을 연결 해제하기(De-linking outputs from inputs in bitcoin transaction)
투표 프로토콜의 설계는 우승 후보자에게 지불하는 트랜잭션이 개별 투표자들의 투표도 포함하도록 하는 것이다. 투표 프로토콜의 참여자, 후보자, 또는 임의의 외부 파티가 임의의 다른 참여자의 투표(및/또는 그 암호화된 값)를 알지 못하게 하기 위해서는, 임의의 다른 참여자가 이 암호화된 값을 그 투표자 소스에 연결할 수 없게 하면서, 각각의 참여자가 그 암호화된 투표에 기여할 수 있게 하는 해법을 통합하는 것이 중요하다.
이 요건은 Maxwell, G. (2013, August) - "CoinJoin: Bitcoin privacy for the real world" - Post on Bitcoin Forum에서 더욱 상세하게 설명된 대중적인 비트코인 코인 믹싱 해법 CoinJoin의 요건과 유사하다. http://tinyurl.com/gn6kmx4. CoinJoin에서는, 각각의 참여자 집합이 비트코인 트랜잭션의 입력들 중 하나를 기여 및 표현하고; 이 트랜잭션은 다수의 출력을 포함하며, 여기서 각각의 출력 어드레스가 입력의 참여자들에 의해 제공된다. 코인 믹싱 프로세스의 익명성을 강화하기 위해서는, 입력 참여자를 그 출력 어드레스로부터 연결 해제하는 것이 중요하다. 이 문제를 해결하기 위해, 다양한 셔플링(shuffling) 해법이 개발되었고, 여기서 참여자들은 임의의 다른 참여자 또는 외부 적대자가 참여자를 특정한 출력 어드레스에 연계시킬 수 없게 하면서, 그들의 출력 어드레스를 제공할 수 있다.
셔플링 해법은 CoinShuffle(Ruffing, T., Moreno-Sanchez, P., & Kate, A. (2014, September), "CoinShuffle: Practical decentralized coin mixing for Bitcoin" - European Symposium on Research in Computer Security (pp.345-364), Springer International Publishing에서 더욱 상세하게 설명됨), CoinShuffle++(Ruffing, T., Moreno-Sanchez, P., & Kate, A. (2016) - "P2P mixing and unlinkable Bitcoin transactions" NDSS'17. https://goo.gl/QrfMhp에서 더욱 상세하게 설명됨), 및 Circle Shuffle을 포함한다.
임계치 비밀 공유 투표(Threshold secret share voting)
도 1 내지 도 6을 참조하면, 블록체인에서 의사결정을 하는 방법이 제공된다. 의사결정은 원하는 행동 과정, 선거에서의 선호 후보자, 또는 임의의 다른 의사결정의 형태로 될 수 있다. 다수의 참여자, 또는 투표자에게는, 의사결정의 하나 이상의 결과와 연계되는 각각의 비밀 값들로 공유들이 제공된다. 결과는 선거에 입후보한 후보자일 수 있다. 이후, 참여자들은 해당 결과에 연계되는 공유를 포함하는 입력(4)을 제1의, 또는 커미트먼트 트랜잭션(2)에 제공함으로써 그들의 선호 결과, 선정, 또는 후보자에게 투표한다. 커미트먼트 트랜잭션(2)(도 4 참조)은 결과들 중 하나와 연계되는 제1 서명(6a, 6b), 및 해당 결과와 연계되는 제2 서명(8a, 8b)을 모두 제공할 때에만 상환 가능해지도록 구성된다. 도 4 내지 도 6에서, 공개 키 X에 대한 서명은 σ(X)로 표시된다. 적어도 비밀 값의 임계 개수의 공유들이 제공되면, 충분한 정보를 이용해서 제2 서명(8a, 8b)을 실행하고, 그에 따라 커미트먼트 트랜잭션(2)의 요건을 충족시키고, 결과를 드러내거나 및/또는 의사결정을 수행한다.
임계치 비밀 공유 투표(Threshold Secret Share Voting)(TSSV) 프로토콜의 경우, 참여자 집합 {Ui}가 하나 이상의 선정, 또는 후보자에 대한 투표를 선택할 수 있는 시나리오를 상정한다. 이 실시예에 있어서는, AB로 지정된 2명의 후보자가 존재한다. 각각의 후보자는 메인 개인-공개 키 쌍
Figure pct00025
Figure pct00026
을 갖고, 여기서 공개 키들은 모든 투표자가 이용할 수 있다. 각각의 투표자는 하나의 투표권을 갖고, 우승 후보자는 다음을 갖는 후보자이다:
· 최고 득표,
· AND 지정된 임계치를 넘는 충분한 투표.
실시예로서, 9명의 참여자(투표자)가 있을 경우, 우승 후보자는 적어도 5표를 받도록 요청될 수 있다.
투표자들은, 자신의 투표와 결합하여, 자신의 투표와 함께 특정 수량의 자금(예컨대, 비트코인)을 커미트하도록 요청받는다. 모든 투표자들로부터 축적된 커미트된 자금은 우승 후보자에게 제공될 것이다. 이러한 자금은 우승자에 대한 보상으로서, 또는 투표 프로세스에의 경솔한 또는 악의적인 참여의 의욕을 꺾는 것으로서 간주될 수 있거나, 또는 그러한 역할을 할 수 있다.
TSSV 프로토콜은 3가지 트랜잭션을 사용한다. 이들 트랜잭션은 투표 커미트먼트 트랜잭션(Vote Commitment Transaction)(2)(도 4), 우승자 지불(또는 상환) 트랜잭션(Winners Payment (or Redemption) Transaction)(10)(도 5), 및 환불 트랜잭션(Refund Transaction)(12)(도 6)으로 분류된다. 이들 트랜잭션에는 다음과 같은 책임이 있다.
투표 커미트먼트 트랜잭션: 투표 커미트먼트 트랜잭션(VCT)(2)은 각각의 투표자의 비트코인 커미트먼트 및 투표 커미트먼트를 모두 포함하는 트랜잭션이다. 제안된 TSSV 설계의 경우, 이 트랜잭션(2)은 전체 투표자 집합으로부터의 입력(4)을 포함하지만, 모든 투표자가 투표를 제공할 필요는 없다. VCT(2)는 모든 사용자 투표를 기록할 뿐만 아니라 하나의 출력(14)에 비트코인 커미트먼트를 모집(pool)한다. 이들 투표가 암호화된다.
환불 트랜잭션: 환불 트랜잭션(RT)(12)은, 지정된 시간 전에 후보자가 투표자들의 축적된 비트코인을 수집할 수 없을 경우에, 투표자들이 자신이 커미트한 자금을 회수하기 위한 절대 안전한 조치이다. RT(12)는 사용자들이 투표하고 VCT(2)가 생성된(다만, 제출되지는 않음) 후에 생성 및 서명된다.
우승자 지불 트랜잭션: 우승자 지불 트랜잭션(WPT)(10), 또는 상환 트랜잭션은 축적된 비트코인을 우승 후보자에게 지불하는 트랜잭션이다. 우승 후보자는 모집된 비트코인들을 수집할 수 있는 유일한 사람, 후보자 또는 그 외의 자가 될 것이다. 도 5는 2가지의 가능한 상환 트랜잭션(10a, 10b)을 도시하며, 즉 (a)는 후보자 A가 우승한 경우의 상환 트랜잭션(10a)을 도시하고, (b)는 후보자 B가 우승한 경우의 상환 트랜잭션(10b)을 도시한다.
이들 3가지 트랜잭션(2, 10, 12)과 모집된 비트코인들 사이의 상호작용의 시각적 표현이 도 1에 도시된다.
투표 커미트먼트 트랜잭션(VCT)(2)은 사용자 투표를 포함하는 트랜잭션이다. 투표자가 VCT에 대하여 행해야만 하는 2가지 커미트먼트(투표 및 비트코인) 중에서, BTC 자금을 만드는 프로세스는 가장 쉽게 이해되는 것이고 비트코인 프로토콜에 의해 가장 용이해지는 것이다.
비트코인 커미트먼트의 경우에, 각각의 사용자는 아직 소비되지 않은 BTC를 그들이 제어/소유하는 특정 어드레스에서 이용하고, 이를 커미트먼트 트랜잭션(2)의 입력(4)으로서 포함하고, 그 입력(4)에 서명한다. 커미트먼트 트랜잭션(2)에서의 투표자의 입력(4)은 투표자가 커미트먼트 트랜잭션(2)의 기타 이용 가능한 세부사항에 만족하는 경우에 투표자에 의해서만 서명된다. 또한, 환불 트랜잭션(12)은 모든 관련 파티들에 의해 서명되어야 한다. 각각의 사용자는 동일한 수량(xBTC)의 비트코인을 그들의 투표에 커미트할 것으로 예상되지만, 이것이 필수적인 것은 아니다.
'투표 커미트먼트(vote commitment)'의 경우, TSSV 프로토콜의 맥락에서 후보자 B에 대한 투표자 Ui에 의한 투표 vi는 Ui에게 주어지는 키 kB의 비밀 공유 kB,i 및 후보자 B에 대한 식별 값의 연결로서 표현된다. 투표는 다음과 같은 방식으로, 즉
Figure pct00027
로 표현될 수 있고, 여기서 kB,i는 키 kB의 투표자 Ui가 보유한 공유이고, ||는 연결을 나타낸다.
vi의 키 공유 구성요소는 후보자 B가 충분한 투표를 얻을 수 있을 경우 후보자 B가 모든 투표자의 축적된 커미트된 자금을 청구할 수 있게 하는 데 관여하게 된다. 투표 vi는 반드시 그대로 VCT(2)에 내재될 필요는 없으며; 먼저 투표자 Ui가 투표하고 싶어 하는 후보자(이 실시예에서는 후보자 B)의 공개 키로 암호화되는 것이 바람직하다. 암호화된 투표는
Figure pct00028
로 표현될 수 있다.
후보자 B
Figure pct00029
를 복호하려고 시도할 경우, 구성요소 IDCandidateB는 후보자 B에 대한 성공적으로 복호를 수행했다는 지시자로서 기능한다. IDCandidateB의 비트 사이즈는 부정확한 복호 (비밀) 키가 암호문
Figure pct00030
로부터 값 string||IDCandidateB를 생성할 것 같지 않을 정도로 충분히 커야 한다.
비트코인 트랜잭션이 메타데이터 저장 전용 필드를 갖지 않는다는 점을 고려하면, TSSV 프로토콜의 성공 여부는 참여자들의 투표를 기록할 적절한 장소를 찾는 데 달려 있다. 프로토콜의 설계가 모든 투표가 하나의 커미트먼트 트랜잭션(VCT(2))에서 표현되도록 하는 것이라는 점을 고려하면, 이는 투표 커미트먼트 세트를 통합하는 데 약간의 제약을 가한다.
TSSV 프로토콜의 제안된 설계의 경우, 투표는 m-of-n 다중-서명 트랜잭션에 대한 비트코인의 스크립트를 사용해서 저장된다. m-of-n 다중-서명 스크립트는 다음과 같은 포맷을 취한다:
OP_0 Sig1 Sig2 ... NumSigs Pub1 Pub2 Pub3 Pub4 ... NumKeys OP_CHECKMULTSIG
여기서, 굵은 글씨체로 된 내용은 <scriptPubKey>이고 밑줄친 내용은 <scriptSig>이다. <scriptPubKey>는 트랜잭션 출력이 이용되게 할 수 있는 규칙 세트이다. <scriptSig>는 <scriptPubKey>를 만족시키는 데 필요한 내용이다. NumSigs는 필요한 서명의 수이고, NumKeys는 가능한 서명의 수이고, PubX는 서명 SigX에 대응하는 공개 키이다. 이 스크립트가 m-of-n 서명을 위한 것인 반면, 상환 스크립트의 PubX 요소는 메타데이터의 저장소로 사용하기에 적합한 것일 수 있다.
실시예로서, 2-of-4 다중-서명 스크립트가 도시되고, 여기서는 공개 키(Public Keys)에 대하여 예약된 4개의 데이터 요소 중 2개가 메타데이터를 저장하는 데 이용된다. 이 스크립트는 다음과 같은 포맷을 취한다:
OP_0 SigA SigB OP_2 meta1 meta2 PubA PubB OP_4 OP_CHECKMULTSIG
이를 위해, 이들 메타데이터 요소는 사용자들의 암호화된 투표 집합
Figure pct00031
을 나타낼 수 있다.
실시예로서, 1-of-7 다중-서명 스크립트가 도시되고, 여기서는 공개 키(Public Keys)에 대하여 예약된 7개의 요소 중 5개가 암호화된 투표를 저장하는 데 이용되고, 2개가 진정한 공개 키에 대하여 이용된다. 이 스크립트는 다음과 같은 포맷을 취한다:
OP_0 SigB OP_1
Figure pct00032
Figure pct00033
Figure pct00034
Figure pct00035
Figure pct00036
PubA PubB OP_7 OP_CHECKMULTSIG
현재 버전의 비트코인 프로토콜의 경우, 다중서명(multisig) 출력에서 허용되는 공개 키의 최대 개수는 15개이다. 이러한 이유로, 설명된 m-of-n 스크립트가 허용할 수 있는 투표(투표자)의 최대 개수는 13개이다(2개의 자리(15개 중)는 후보자 A 또는 B의 공개 키를 위해 예약된다는 점에 유념한다). 각각의 후보자(예컨대, 후보자 A)에는 적어도 2개의 공개 키, 즉 메인 공개 키 및 kA,i 키 공유에 기초하여 협업적으로 도출된 공개 키가 첨부된다. 그러나, 중요하게는, 다수의 m-of-n 다중서명 스크립트가 하나의 보다 큰 스크립트 내에서 이용될 수 있다. 실시예로서, 어느 후보자가 지불받는지를 결정하기 위해 스크립트 내에서 if-else 조건문이 이용될 수 있다. 스크립트 내의 옵션들 각각은 스크립트 내에 그 자신의 m-of-n 세그먼트를 가질 수 있으며, 이로 인해 적어도 26가지의 가능한 투표가 포함된다. 더 많은 투표를 통합하기 위해 더욱 정교한 스크립트를 구성할 수 있지만, 스크립트의 최대 사이즈가 현재 10 킬로바이트(비트코인 스크립트 인터프리터(Bitcoin Script Interpreter) - https://github.com/bitcoin/bitcoin/blob/fcf646c9b08e7f846d6c99314f937ace50809d7a/src/script/interpreter.cpp#L256에서 더욱 상세하게 설명됨)인 점 및 트랜잭션 비용이 트랜잭션의 사이즈에 따라 달라진다는 점을 유념한다.
m-of-n 비트코인 스크립트의 공개 키 요소를 사용하려면, 비트코인 프로토콜의 공개 키에 대한 사이즈 제약을 고려할 필요가 있다. 이는, 공개 키가
Figure pct00037
를 저장하기에 적절한 것이어야 하고, 여기서
Figure pct00038
는 동일한 비트 길이로 이루어지고 v i =k B,i ||IDCandidateB의 암호화라는 점을 염두에 두고 있다.
제안된 TSSV 프로토콜의 경우, 비트코인 타원 곡선 디지털 서명 알고리즘(ECDSA) 서명(우승 후보자가 그들의 자금을 청구하기 위해 궁극적으로 필요함)이 256-비트 개인 키(예를 들어, Private Key https://en.bitcoin.it/wiki/Private_key를 참조한다)를 필요로 한다는 점에 유의한다. 256-비트(32 바이트) 개인 키를 구성하려면, 키 공유들 자체도 길이가 256 비트여야 한다.
비트코인 프로토콜은 (256 비트 길이의) 타원 곡선(EC) 암호화를 이용하고, 여기서 공개 키 kG는 해당 곡선 상의 점이고; 각각의 좌표는 256 비트로 이루어진다. 이는 Franco, P., 2014. Understanding Bitcoin: Cryptography, engineering and economics. John Wiley & Sons에서 더욱 상세하게 설명된다. 비트코인 프로토콜은 EC 공개 키를 압축된 또는 비압축된 점으로 표현할 수 있게 한다. 압축된 점의 경우 EC 점의 x-값(256 비트)만이 저장되는 반면, 비압축된 점의 경우에는 x 값 및 y 값이 모두 저장(각각 256 비트로 이루어짐)된다.
이것은, 비압축된 공개 키가 m-of-n 스크립트에서 이용될 경우, 256-비트 키 공유 및 후보자 ID를 연결하기에 충분한 저장 공간이 존재한다는 것을 함축하고 있다. EC 점의 x-값의 256 비트는 키 공유 kB,i에 사용될 수 있는 반면, y-값에 대하여 예약되는 다른 256 비트는 후보자 ID를 저장하는 데 이용될 수 있다.
투표 시스템에서는, 일반적으로 사용자의 투표가 투표자에게 추적되지 않는 것이 바람직하다. 제안된 TSSV 프로토콜의 경우, 투표자가 그들의
Figure pct00039
를 기존의
Figure pct00040
세트/리스트에 추가하는 것만으로, 다른 투표자가 자체적으로 또는 협업하여 투표자의
Figure pct00041
를 결정할 수 있다. 첫 번째 투표자가 그
Figure pct00042
를 투표 리스트에 추가하는 경우를 고려한다. 두 번째 투표자는 이미 리스트에 있는 (암호화된) 투표가 첫 번째 투표자의 것이라는 점을 손쉽게 알 수 있을 것이다. 이는 vi 자체가 아닌 암호문
Figure pct00043
만을 알게 하는 것이기는 하지만, 이로 인해 악의적인 투표자/참여자는 투표자를 vi에 연결짓는 더 나은 위치에 놓이게 된다.
더 중요하게는, 투표의 암호화가 2명의 후보자 중 1명의 공개 키로 행해질 경우, 투표 셔플링은 후보자(A 또는 B)가 투표자를 투표에 연결짓는 것을 방지한다. 셔플링이 없었다면, 후보자가
Figure pct00044
를 복호할 수 있을 경우, 하나 이상의 투표자의 도움을 받는 후보자는 투표자를 투표에 연결짓는 것이 가능할 수 있다. TSSV 프로토콜에 2명의 후보자만이 존재할 경우, 투표를 복호할 수 없는 후보자는 투표가 다른 후보자를 위한 것임을 암시한다는 점에도 유의해야 한다.
이러한 이유로, TSSV 프로토콜의 경우, 사용자들이 그들의 투표를 <scriptPubKey>에 제공하는 과정에 셔플링 해법이 통합된다. 셔플링 해법의 실시예들은 위에서 설명되어 있으며, 그 중 어느 것이나 TSSV 프로토콜의 인스턴스에서 이용될 수 있다. TSSV 프로토콜에 이용되는 셔플링 해법의 기본적인 책임은, 임의의 다른 투표자 또는 비-투표자가 어느 (암호화된) 투표가 어느 투표자에서 비롯되는지를 결정할 수 없게 하면서, 각각의 투표자가 그들의 (암호화된) 투표를 제공할 수 있게 하는 것에 있다.
따라서, 암호화된 투표 세트
Figure pct00045
은 임의의 투표자 또는 후보자(또는 그 밖의 자)가 해당 세트의 어느 요소가 어느 투표자에서 비롯한 것인지 알지 못한 채 생성될 수 있다.
TSSV 프로토콜은 성공적인 후보자만이 모집된 비트코인들을 수집할 수 있게 되는 방식으로 설계된다. 이러한 제약은 임계치 비밀 스킴에 의해 가능해지고, 여기서, 이러한 스킴의 경우, 공유 세트
Figure pct00046
의 t+1개의 공유가 비밀 k를 결정하는 데 사용될 수 있으며, t는 비밀 키 공유를 계산하는 데 사용되는 다항식의 차수이다.
2명의 후보자(AB) 각각에는 공개 키가 할당된다.
Figure pct00047
Figure pct00048
여기서, G는 타원 곡선(EC)의 기준점이고, kG는 EC '스칼라에 의한 점 곱셈(point-multiplication-by-scalar)'의 실시예이다. G는 EC 상의 기준점이고 k는 스칼라 값이다.
kA 및 kB의 값은 프로토콜의 더 이전의 단계들에서는 (어느 누구, 후보자 또는 투표자에게는) 미지의 값이다. 이들 kA 및 kB 값은 사용자들이 특정 후보자에게 충분한 수의 투표를 제출했을 때에만 결정될 수 있다. 이들 사용자 투표에는 투표자의 선택 후보자에 따른 kA 또는 kB의 키 공유가 포함된다. kA 및 kB의 키 공유는 다음과 같다:
Figure pct00049
Figure pct00050
실시예로서, 후보자 B에게 투표하기로 선택했다면, 투표자의 투표 커미트먼트는 다음과 같다:
Figure pct00051
값 kB,i는 키 kB의 키 공유, 즉 투표자 Ui에게 이전에 분산된 공유이다.
이론적으로 키-공유의 분산은 딜러-기반 또는 딜러-없는 분산일 수 있다. 딜러-기반 분산에 있어서는, 딜러가 kA 및 kB를 알고 있고 kA 및 kB 모두의 키 공유를 분산시킨다. 공유 kB,i 및 공유 kA,i를 소유한 참여자는 정당한 참여자로서 간주될 수 있다. 이 딜러는 어느 후보자도 아니어야 하고, 대신 제3자이다. 후보자 A 또는 B가 딜러였을 경우, 악의적인 후보자가 모든 비밀 키를 알고 있다면, 필요한 투표를 획득하지 못했음에도 불구하고 어느 후보자든지 TSSV의 출력에 서명해서, 모집된 자금을 전부 수금할 수 있다. 딜러-없는 구현예의 경우, 각각의 투표자는 그들 자신의 키 공유를 구성한다. 투표자들은 전술한 바와 같은 비밀 공유 가담(Secret Share Joining)을 사용해서 공개 키
Figure pct00052
Figure pct00053
를 계산하도록 협업한다.
PVSS 스킴은 PubA 및 PubB를 고려하여 키 공유를 유효성 검증하기 위해 후보자 및 투표자에게 이용된다. 딜러가 키 공유를 분산시키도록 하면, 적격인 투표자 리스트에 대한 적절한 전거 제어(authority control)가 부여되는데; 이는 키 공유의 소유권이 투표 적격 증명으로서 간주될 수 있기 때문이다.
후보자 B가 충분한 투표(kB,i 공유)를 얻을 수 있으면, 후보자 B는 모집된 커미트된 비트코인들을 수집하기 위해 비밀 kB를 구성하고 이 kB를 투표 커미트먼트 트랜잭션(Voting Commitment Transaction)(2)의 출력에 서명하는 데 이용할 수 있게 된다.
샤미르의 비밀 공유(Shamir's Secret Sharing)의 구현을 위한 다항식의 차수는 후보자가 우승하는 데 필요한 투표자의 수 및 투표의 수를 고려해서 선택되어야 한다. 우승 후보자는 최고 득표를 달성해야만 하고, 또한 우승 후보자가 득표한 투표의 수는 지정된 임계치보다 높아야만 한다. 예시로서, 도 2는 후보자가 우승하는 데 필요한 투표의 수 및 다양한 수의 투표자에 대한 다항식의 차수를 도시한다. 더 큰 임계치가 요망될 경우에는, 우승 후보자에게 필요한 최소 투표가 더 높아질 수 있다. 실시예로서, 정부의 국민 투표에서는, 정책 제안이 승인되려면 과반수 및 적어도 75%의 투표가 모두 필요해질 수 있다.
우승 상금을 수금하기 위해, 우승 후보자 B는 서명(8b) 이상을 PubB에 제공할 필요가 있다(도 4). 상응하는 개인 키가 분할되는 공개 키 PubA/PubB가 할당되는 것 외에도, 후보자 AB는 모두 제각기 그들 자신의 별도의 (메인) 공개 키 PubA m PubB m 을 소유한다. 후보자 APubA m 에 대한 개인 키를 알고 있고, 후보자 BPubB m 에 대한 개인 키를 알고 있다.
이러한 가외의 공개 키에 대한 필요성은 t+1명의 투표자로 이루어진 임의의 집합이 이론적으로 협업하고, kB를 계산해서, 축적된 자금을 훔칠 수 있다는 사실에 기인한다. 이는 가외의 공개 키에 기초한 서명(6b)에 대한 요건이 없다는 사실에 기인하고, 후보자에게만 알려지는 그 개인 키(공개 키에 대응) 때문에 더욱 그러하다. 이러한 이유로, 우승 후보자(후보자 B)가 축적된 자금을 청구하기 위해서는 공개 키 pubB M 에 대한 우승 후보자의 서명(6b)이 또한 필요하다.
이를 염두에 두고, 비트코인 스크립트에 따라, 모집된 비트코인들이 청구될 수 있는 상이한 방식들을 고려한다. 투표 커미트먼트 트랜잭션(2)의 <scriptPubKey>는 3가지 수금 방식을 고려한다.
이들 규칙 세트 중 첫 번째('규칙 세트(ruleset)'는 메인 <scriptPubKey> 기능의 불린(Boolean) 서브-기능으로 해석될 수 있음)는 하기의 서브스크립트에 의한 <scriptPubKey>로 표현된다:
OP_DUP OP_HASH160 <
Figure pct00054
> OP_EQUALVERIFY OP_CHECKSIG
여기서, 서브스크립트(subscript)라는 용어는 더 큰 스크립트의 세그먼트를 설명하기 위해 사용된다. 이 경우, 참조되는 더 큰 스크립트는 <scriptPubKey>이다. 이 스크립트는 대부분의 비트코인 트랜잭션 출력이 보호되는 기본적인 방식을 보여주고; 포함된 공개 키에 대한 서명만을 필요로 한다. 투표 커미트먼트 트랜잭션(VCT)(2)의 경우, TSSV 프로토콜의 실행이 계획대로 진행되지 않으면, 즉, 우승 선정이 없으면, 또는 우승 선정이 투표 커미트먼트 트랜잭션을 상환하지 않으면, 이 서브스크립트는 그 커미트된 비트코인의 환불을 받는 사용자들의 능력을 제어한다. 블록체인에 대한 환불 트랜잭션(12)의 성공적인 제출은 공개 키 PubS에 대한 서명을 포함하는 <scriptSig>에 의존한다. 이 공개 키는 투표자들 중 하나가 서명할 수 있는 공개 키일 수 있거나, 또는 별도의 분산된 키 공유 세트에 기초하는 공개 키일 수 있다. 후자의 옵션의 경우, PubS의 서명을 취득하는 것은 개인 키를 구성하고 서명을 생성하기 위한 적어도 t+1명의 투표자 사이의 공동의 노력이다. 다음에 유의한다:
· 서명된 환불 트랜잭션(12)의 복사본은 VCT(2)가 블록체인에 제출되기 전에 모든 투표자에게 이용가능하다.
· 환불 트랜잭션(12)에는 nLockTime 값이 포함되어 있으며, 이 값은 지정된 시점(예컨대, Unix 시간 또는 블록 높이)이 경과하지 않는 한 블록체인에 대한 환불 트랜잭션(12)의 제출을 방지한다.
· 환불 트랜잭션(12)은 사용자가 커미트한 비트코인을 각각의 사용자에게 반환한다.
VCT(2)의 모집된 자금을 청구하는 이들 옵션 중 두 번째 규칙 세트는 2가지 필요한 서명(6a, 8a)(도 4)을 생성할 수 있는 후보자 A의 능력에 따라 후보자 A가 모집된 자금을 청구할 수 있도록 하는 것이다. 서브스크립트(아래에 도시됨)는 2-of-15 다중서명이고, 즉, 15개의 공개 키 필드 세트 내에서 확인되는 2개의 공개 키 필드와 대응하는 서명을 필요로 한다. 투표자가 13명 미만이면, 15개보다 적은 필드가 있을 수 있다.
OP_2 <
Figure pct00055
> <
Figure pct00056
> ... <
Figure pct00057
> <
Figure pct00058
> <Pub
Figure pct00059
> <Pub
Figure pct00060
> OP_15 OP_CHECKMULTSIG
서브스크립트는 이중 목적에 적합하다. 이러한 책임 중 첫 번째는 암호화된 투표(최대 13개)를 포함하는 것이고, 두 번째는 후보자 A가 공개 키 PubA 및 PubAm의 각각의 서명(8a, 6a)을 생성할 수 있을 경우 모집된 비트코인을 청구할 수 있게 하는 것이다. PubA = kAG이고, PubA의 서명(8a)은 kA를 확인하기 위해
Figure pct00061
값들 내에서 확인된 비밀 값들을 사용해서 취득된다. 물론, 이는 스크립트 내에 후보자 A에 대한 충분한 투표가 있는지에 달려 있다. 후보자 A에 대한 각각의 투표는 키 공유 kA,i를 갖고, 후보자 A의 공개 키(바람직하게는, PubAm)로 암호화된다. PubAm은 후보자 A에 의해 생성되는 공개 키이기 때문에, 후보자 A는 이 (메인) 공개 키에 대한 서명(6a)을 생성할 수 있어야 한다. PubAm의 서명(6a)은, PubAm을 생성하고 PubAm의 상응하는 개인 키 PrivAM을 소유하고 있는 것이 후보자 A였기 때문에, 후보자 A의 책임이다.
세 번째 규칙 세트는 두 번째 규칙 세트의 내용과 유사하고, 추가적인 투표를 포함하도록 의도된 것일 뿐만 아니라, 적어도 2개의 서명을 제공하는 것에 기초하여 후보자 B가 VCT 자금을 청구하는 능력을 허가 또는 거부하도록 의도된 것이다. 이는 아래에 도시된다.
OP_2 <
Figure pct00062
> <
Figure pct00063
> ... <
Figure pct00064
> <
Figure pct00065
> <Pub
Figure pct00066
> <Pub
Figure pct00067
> OP_15 OP_CHECKMULTSIG
이 경우, m-of-n 서브스크립트에서는, 마찬가지로 투표/메타데이터에 대하여 적합한 최대 13개의 필드가 있지만, 2개의 필드는 정당한 공개 키로서의 사용을 위해 할당된다. 실제로 서명을 필요로 하는 공개 키는 PubB 및 PubBm이다. PubB = kBG는 kB,i 공유에 대응하는 공개 키이다. 후보자 B의 m-of-n 스크립트에 존재하는 후보자 B에 대한 적어도 t+1개의 투표는 후보자 B가 kB,i 키 공유를 이용해서 PubB에 대한 서명(8b)을 생성할 수 있게 한다. 후보자 B는 PubBm을 생성했으므로 그 서명(8a)을 생성할 수 있어야 한다. 이들 서명(8a, 8a)을 모두 제공하면, 후보자 B는 투표 커미트먼트 트랜잭션(2)의 모집된 비트코인들을 수집할 수 있게 된다.
다음 사항에 유의해야 한다:
· 암호화된 투표가 2개의 m-of-n 서브스크립트 중 어느 것에서 확인되는지는 중요치 않으며; 모든
Figure pct00068
가 블록체인에서 두 후보자에게 가시화되고, 두 후보자는 서명이 필요한 그들의 공개 키의 키 공유를 검색하려는 노력의 일환으로 후보자 A 또는 후보자 B의 m-of-n 서브스크립트로부터
Figure pct00069
를 복호하려 할 수 있다.
· t+1은 후보자가 우승하는 데 필요한 임계 투표 수량이고, 여기서 t는 다항식-기반의 비밀 공유 메커니즘에서 사용되는 다항식의 차수이다.
· t+1이 2명의 후보자 사이에서의 선택인 투표의 과반수가 되는 것을 보증하도록 t가 선택된다.
도 3을 참조하면, 본 발명을 구체화한 프로세스(300)를 예시하는 흐름도가 도시된다. 처음에, 단계(302)에서, 투표자의 수 n에 대한 의사결정이 이루어진다. 전술한 키 공유 기술을 사용해서, 단계(304)에서, 개인 키 kA에 대하여 n개의 공유가 생성된다. 유사하게, 키 kB에 대하여 n개의 공유가 생성된다. 이들 개인 키는 제각기 공개 키 PubA 및 PubB에 대응한다.
이후, 단계(306)에서, 각각의 투표자에게 kA의 고유한 공유 kA,i 및 kB의 고유한 공유 kB,i가 부여된다. 이후, 투표자들은 비밀 공유 가담을 사용하여 단계(308)에서 kA,i 키 공유를 사용해서 PubA = kAG를 계산하도록 협업하고, 유사하게 kB,i 키 공유를 사용해서 PubB = kBG를 계산하도록 협업한다. 이후, PubA 및 PubB가 단계(310)에서 모든 투표자 및 후보자에게 통신되고, PubA 및 PubB를 고려하여 키 공유를 유효성 검증하기 위해 키 공유 스킴이 사용된다. 이후, 후보자 A 및 B는 각각 단계(312)에서 별도의 메인 공개 키PubAm 및 PubBm을 제각기 생성한다.
단계(314)에서, 각각의 투표자는 그 비밀 공유를 그 선택 후보자의 ID와 연결하는 것에 의해 투표해서 다음을 제공한다.
Figure pct00070
단계(316)에서, 각각의 투표자는 그 투표를 그 선택 후보자의 공개 키로 암호화한다. 예를 들어, 후보자 B의 경우, 암호화된 투표는 다음과 같다:
Figure pct00071
단계(318)에서 각각의 투표자는 그 투표를 리스트에 제공하고, 이는 사용자와 투표에 대한 링크가 없도록 전술한 바와 같은 셔플링 기술을 사용해서 행해진다. 이후, 단계(320)에서 투표자 커미트먼트 트랜잭션(2)이 생성된다. 이는 각각의 투표자로부터의 입력을 포함한다. 각각의 투표자는 비트코인의 xBTC 수량을 제공한다.
단계(322)에서, 값 nxBTC의 투표자 커미트먼트 트랜잭션(2)의 출력은 pubkey 요소가 암호화된 투표의 저장소로서 사용하기에 적합해지는 m-of-n 스크립트에 의해 관리된다. 투표자 커미트먼트 트랜잭션(2)의 이 출력 스크립트는 다음을 허용한다:
각각의 투표자에 대한 xBTC의 환불
서명 σ(Am) 및 σ(A)를 사용해서 xBTC를 수집하는 후보자 A
서명 σ(Bm) 및 σ(B)를 사용해서 nxBTC를 수집하는 후보자 B
이후, 단계(324)에서, 환불 트랜잭션(12)이 생성되고, 서명되며, 복사본이 각각의 투표자에게 분산된다. 이후, 투표자 커미트먼트 트랜잭션(2)이 블록체인에 제출된다.
단계(326)에서, 후보자 B가
Figure pct00072
값들을 전부 복호하려고 시도한다. 복호 프로세스가 후보자 B의 ID를 vi의 후자 세그먼트로서 나타내면, 후보자 B는 vi의 첫 번째 세그먼트를 비밀 공유 kB,i로 인식한다. 후보자 B는 충분한 투표(공유)를 득표할 경우에, 출력에 서명할 수 있다. 후보자 A는 후보자 B로 수행되는 프로세스와 실질적으로 동일한 프로세스를 수행한다.
마지막으로, 단계(328)에서, 환불 트랜잭션(12)의 nLockTime 전에 어떤 후보자도 우승 상금을 청구할 수 없으면, 임의의 투표자에 의해 환불 트랜잭션(12)이 제출되고, 트랜잭션 비용을 뺀 각각의 투표자의 커미트된 자금이 해당 투표자에게 반환된다.
이제, 도 7을 참조하면, 본 개시물의 적어도 하나의 실시형태를 실시하는 데 사용될 수 있는 컴퓨팅 장치(2600)의 예시적인 간략화된 블록도가 제공된다. 다양한 실시형태들에 있어서, 컴퓨팅 장치(2600)는 상기에 예시 및 설명된 시스템들 중 어느 하나를 구현하는 데 사용될 수 있다. 예를 들어, 컴퓨팅 장치(2600)는 데이터 서버, 웹 서버, 휴대용 컴퓨팅 장치, 개인용 컴퓨터, 또는 임의의 전자 컴퓨팅 장치로서 사용하도록 구성될 수 있다. 도 7에 도시된 바와 같이, 컴퓨팅 장치(2600)는, 메인 메모리(2608) 및 영구 스토리지(2610)를 포함하는 스토리지 서브시스템(2606)과 통신하도록 구성될 수 있는, 하나 이상의 캐시 메모리 레벨 및 메모리 제어기를 갖는 하나 이상의 프로세서(총괄하여 2602로 표시됨)를 포함할 수 있다. 메인 메모리(2608)는 도시된 바와 같이 동적 랜덤-액세스 메모리(DRAM)(2618) 및 리드-온리 메모리(ROM)(2620)를 포함할 수 있다. 스토리지 서브시스템(2606) 및 캐시 메모리(2602)는 본 개시물에서 설명되는 바와 같은 트랜잭션 및 블록과 연계되는 세부사항과 같은 정보의 저장에 사용될 수 있다. 프로세서(들)(2602)는 본 개시물에서 설명되는 바와 같은 임의의 실시형태의 단계 또는 기능을 제공하기 위해 이용될 수 있다.
프로세서(들)(2602)는 또한, 하나 이상의 사용자 인터페이스 입력 장치(2612), 하나 이상의 사용자 인터페이스 출력 장치(2614), 및 네트워크 인터페이스 서브시스템(2616)과 통신할 수 있다.
버스 서브시스템(2604)은 컴퓨팅 장치(2600)의 다양한 컴포넌트들 및 서브시스템들이 의도된 대로 서로 통신할 수 있게 하는 메커니즘을 제공할 수 있다. 버스 서브시스템(2604)이 단일의 버스로서 개략적으로 도시되어 있지만, 버스 서브시스템의 대체 실시형태들은 다수의 버스를 이용할 수 있다.
네트워크 인터페이스 서브시스템(2616)은 다른 컴퓨팅 장치들 및 네트워크들에 대한 인터페이스를 제공할 수 있다. 네트워크 인터페이스 서브시스템(2616)은 컴퓨팅 장치(2600)로부터 다른 시스템들에 데이터를 전송하고 다른 시스템들로부터 데이터를 수신하기 위한 인터페이스로서 기능할 수 있다. 예를 들어, 네트워크 인터페이스 서브시스템(2616)은 데이터 기술자가 데이터 센터와 같은 원격 위치에 있는 장치로 데이터를 전송하고 또한 해당 장치로부터 데이터를 수신할 수 있도록 데이터 기술자가 장치를 네트워크에 연결하게 할 수 있다.
사용자 인터페이스 입력 장치(2612)는 키보드와 같은 하나 이상의 사용자 입력 장치; 통합형 마우스, 트랙볼, 터치패드, 또는 그래픽스 태블릿과 같은 포인팅 장치; 스캐너; 바코드 스캐너; 디스플레이에 포함되는 터치 스크린; 음성 인식 시스템, 마이크로폰과 같은 오디오 입력 장치; 및 그 밖의 유형의 입력 장치들을 포함할 수 있다. 일반적으로, "입력 장치(input device)"라는 용어의 사용은 컴퓨팅 장치(2600)에 정보를 입력하기 위한 가능한 모든 유형의 장치 및 메커니즘을 포함하도록 의도된다.
하나 이상의 사용자 인터페이스 츨력 장치(2614)는 디스플레이 서브시스템, 프린터, 또는 오디오 출력 장치와 같은 비-시각적 디스플레이 등을 포함할 수 있다. 디스플레이 서브시스템은 CRT(cathode ray tube), 또는 LCD(liquid crystal display), LED(light emitting diode) 디스플레이, 또는 프로젝션과 같은 플랫-패널 장치 또는 그 밖의 디스플레이 장치일 수 있다. 일반적으로, "출력 장치(output device)"라는 용어의 사용은 컴퓨팅 장치(2600)로부터 정보를 출력하기 위한 가능한 모든 유형의 장치 및 메커니즘을 포함하도록 의도된다. 하나 이상의 사용자 인터페이스 출력 장치(2614)는, 예를 들어, 사용자 상호작용이 적절할 수 있을 경우, 설명되는 프로세스들 및 그 변형들을 수행하는 애플리케이션들과의 그러한 사용자 상호작용을 용이하게 하기 위해 사용자 인터페이스를 제시하는 데 사용될 수 있다.
스토리지 서브시스템(2606)은 본 개시물의 적어도 하나의 실시형태의 기능을 제공할 수 있는 기본 프로그래밍 및 데이터 구조를 저장하기 위한 컴퓨터-판독 가능 저장 매체를 제공할 수 있다. 하나 이상의 프로세서에 의한 실행시에, 애플리케이션(프로그램, 코드 모듈, 명령어)은 본 개시물의 하나 이상의 실시형태의 기능을 제공할 수 있고, 스토리지 서브시스템(2606)에 저장될 수 있다. 이들 애플리케이션 모듈 또는 명령어는 하나 이상의 프로세서(2602)에 의해 실행될 수 있다. 스토리지 서브시스템(2606)은 본 개시물에 따라 사용되는 데이터를 저장하기 위한 저장소를 부가적으로 제공할 수 있다. 예를 들어, 메인 메모리(2608) 및 캐시 메모리(2602)는 프로그램 및 데이터를 위한 휘발성 스토리지를 제공할 수 있다. 영구 스토리지(2610)는 프로그램 및 데이터에 대한 영구적인 (비-휘발성) 스토리지를 제공할 수 있으며, 플래시 메모리, 하나 이상의 솔리드 스테이트 드라이브, 하나 이상의 자기 하드 디스크 드라이브, 이동식 매체와 연계되는 하나 이상의 플로피 디스크 드라이브, 이동식 매체와 연계되는 하나 이상의 광학 드라이브(예컨대, CD-ROM 또는 DVD 또는 블루레이(Blue-Ray)), 및 그 밖의 유사한 스토리지 매체를 포함할 수 있다. 이러한 프로그램 및 데이터는 본 개시물에서 설명된 바와 같은 하나 이상의 실시형태의 단계들을 수행하기 위한 프로그램 뿐만 아니라, 본 개시물에서 설명된 바와 같은 트랜잭션 및 블록과 연계되는 데이터를 포함할 수 있다.
컴퓨팅 장치(2600)는 휴대용 컴퓨터 장치, 태블릿 컴퓨터, 워크스테이션, 또는 후술되는 임의의 다른 장치를 포함하여, 다양한 유형으로 될 수 있다. 부가적으로, 컴퓨팅 장치(2600)는 하나 이상의 포트(예컨대, USB, 헤드폰 잭, 라이트닝(Lightning) 커넥터 등)를 통해 컴퓨팅 장치(2600)에 연결될 수 있는 다른 장치를 포함할 수 있다. 컴퓨팅 장치(2600)에 연결될 수 있는 장치는 광섬유 커넥터를 수용하도록 구성되는 복수의 포트를 포함할 수 있다. 따라서, 이 장치는 광 신호를, 처리를 위해 장치를 컴퓨팅 장치(2600)에 연결하는 포트를 통해 전송될 수 있는 전기 신호로 변환하도록 구성될 수 있다. 컴퓨터 및 네트워크는 시시각각 변하기 때문에, 도 7에서 묘사되는 컴퓨팅 장치(2600)의 설명은 장치의 바람직한 실시형태를 예시할 목적으로 특정 실시예로서만 의도된다. 도 7에서 묘사되는 시스템보다 더 많거나 적은 컴포넌트를 갖는 많은 다른 구성들이 가능하다.
전술한 실시형태들은 본 발명을 한정하는 것이 아니라 예시하는 것이며, 당업자라면, 첨부된 청구항들에 의해 규정되는 바와 같은 발명의 범위로부터 일탈함이 없이, 다양한 대안적인 실시형태들을 설계할 수 있을 것이라는 점에 유의해야 한다. 청구항들에 있어서, 괄호 안의 임의의 참조 부호는 해당 청구항들을 제한하는 것으로 해석되지 않아야 한다. "포함하는(comprising)" 및 "포함한다(comprises)" 등의 단어는 전체적으로 임의의 청구항 또는 명세서에 열거된 요소들 또는 단계들 이외의 것들의 존재를 배제하지 않는다. 본 명세서에 있어서, "포함한다"는 "구비한다 또는 구성된다(includes or consists of)"를 의미하고, "포함하는"은 "구비하는 또는 구성되는(including or consisting of)"을 의미한다. 요소의 단수형 참조는 그러한 요소들의 복수형 참조를 배제하지 않으며, 그 반대도 마찬가지이다. 본 발명은 몇 개의 별개의 요소를 포함하는 하드웨어에 의해, 그리고 적절하게 프로그래밍된 컴퓨터에 의해 구현될 수 있다. 몇 개의 수단을 열거하는 장치 청구항에 있어서, 이들 수단 중 몇몇은 하나의 동일한 하드웨어 아이템에 의해 구체화될 수 있다. 단지 특정 조치들이 서로 다른 종속 청구항들에서 인용된다는 사실만으로 이들 조치의 조합이 유리하게 사용될 수 없다는 것을 나타내는 것은 아니다.

Claims (14)

  1. 블록체인에서 의사결정을 하는 컴퓨터-구현 방법으로서,
    선정과 연계되는 제1 서명 및 상기 선정과 연계되는 제2 서명에 의해 상환 가능한 제1 블록체인 트랜잭션을 제공하는 단계;
    적어도 하나의 각각의 비밀 값의 적어도 하나의 공유를 복수의 참여자 각자에게 제공하는 단계 - 상기 제2 서명을 실행하기 위해 임계 개수의 공유가 필요함 -; 및
    상기 제1 블록체인 트랜잭션을 상기 블록체인에 제출하는 단계를 포함하는
    방법.
  2. 제1항에 있어서,
    적어도 하나의 참여자는 암호화 자산을 나타내는 적어도 하나의 서명된 입력을 상기 제1 블록체인 트랜잭션에 추가하는
    방법.
  3. 제2항에 있어서,
    잠금시간(locktime) 조건의 충족시에, 상기 암호화 자산의 적어도 일부분을 적어도 하나의 참여자에게 반환하기 위해 상환 가능한 제2 블록체인 트랜잭션을 제공하는 단계를 더 포함하는
    방법.
  4. 제1항 내지 제3항 중 어느 한 항에 있어서,
    상기 제1 블록체인 트랜잭션은 n개 중 m개(m-of-n)의 다중 서명 상환 스크립트를 포함하고, 적어도 하나의 공유가 상기 상환 스크립트에 추가되는
    방법.
  5. 제4항에 있어서,
    적어도 하나의 공유는 적어도 하나의 의사결정의 제1 공개 키로 암호화되는
    방법.
  6. 제5항에 있어서,
    상기 제1 공개 키에 의한 암호화 전에, 적어도 하나의 공유를 선정을 식별하는 식별 데이터와 조합하는 단계를 더 포함하는
    방법.
  7. 제6항에 있어서,
    상기 조합은 상기 적어도 하나의 공유와 상기 식별 데이터의 연결(concatenation)을 포함하는
    방법.
  8. 제1항 내지 제7항 중 어느 한 항에 있어서,
    상기 공유들을 상기 참여자들에게 제공하는 단계는 (i) 딜러 엔티티가 상기 공유들을 상기 참여자들에게 제공하는 것; 및 (ii) 상기 참여자들이 그들 사이에 상기 공유들을 생성하는 것 중 적어도 하나를 포함하는
    방법.
  9. 제1항 내지 제8항 중 어느 한 항에 있어서,
    상기 제1 블록체인 트랜잭션을 상기 블록체인에 제출하기 전에는 어떤 참여자가 어떤 공유를 제공하는지를 숨기는 단계를 포함하는
    방법.
  10. 제1항 내지 제9항 중 어느 한 항에 있어서,
    상기 제1 블록체인 트랜잭션을 상환하도록 구성되는 제3 블록체인 트랜잭션을 제공하는 단계를 더 포함하는
    방법.
  11. 제1항 내지 제10항 중 어느 한 항에 있어서,
    적어도 하나의 제2 공개 키를 사용해서 적어도 하나의 공유를 유효성 검증하는 단계를 더 포함하는
    방법.
  12. 제11항에 있어서,
    상기 복수의 참여자는 공유들의 적어도 하나의 서브세트를 조합하는 데 협업해서 적어도 하나의 상기 제2 공개 키를 결정하는
    방법.
  13. 컴퓨터-구현 시스템으로서,
    프로세서; 및
    상기 프로세서에 의한 실행의 결과로서, 상기 시스템으로 하여금 제1항 내지 제12항 중 어느 한 항에 기재된 컴퓨터-구현 방법의 임의의 실시형태를 수행하게 하는 실행 가능 명령어를 포함하는 메모리를 포함하는
    컴퓨터-구현 시스템.
  14. 컴퓨터 시스템의 프로세서에 의한 실행의 결과로서, 상기 컴퓨터 시스템으로 하여금 제1항 내지 제12항 중 어느 한 항에 기재된 방법의 실시형태를 적어도 수행하게 하는 실행 가능 명령어를 저장하는 비일시적인 컴퓨터-판독 가능 저장 매체.
KR1020207006731A 2017-08-29 2018-08-29 블록체인 네트워크를 통해 엔티티에 의해 제공되는 데이터의 통신, 저장 및 처리를 위한 시스템 및 방법 KR102669763B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1713800.9 2017-08-29
GBGB1713800.9A GB201713800D0 (en) 2017-08-29 2017-08-29 Computer-implemented system and method
PCT/IB2018/056576 WO2019043589A1 (en) 2017-08-29 2018-08-29 SYSTEMS AND METHODS FOR COMMUNICATING, STORING AND PROCESSING DATA PROVIDED BY AN ENTITY TO A BLOCK CHAIN NETWORK

Publications (2)

Publication Number Publication Date
KR20200041338A true KR20200041338A (ko) 2020-04-21
KR102669763B1 KR102669763B1 (ko) 2024-05-29

Family

ID=60037295

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020207006731A KR102669763B1 (ko) 2017-08-29 2018-08-29 블록체인 네트워크를 통해 엔티티에 의해 제공되는 데이터의 통신, 저장 및 처리를 위한 시스템 및 방법

Country Status (9)

Country Link
US (2) US11546144B2 (ko)
EP (3) EP4117228B1 (ko)
JP (2) JP7203829B2 (ko)
KR (1) KR102669763B1 (ko)
CN (1) CN111066283A (ko)
GB (1) GB201713800D0 (ko)
SG (1) SG11202000809XA (ko)
WO (1) WO2019043589A1 (ko)
ZA (1) ZA202000685B (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102308997B1 (ko) * 2020-08-21 2021-10-06 윤여국 여론 조사 및 투표 관리 방법, 및 이를 수행하는 장치들
KR102368525B1 (ko) 2020-08-20 2022-03-02 에이아이오티홀딩스 주식회사 블록체인과 ipfs를 활용한 디지털 문서 관리 시스템 및 방법

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3429122B1 (en) * 2017-07-11 2022-03-30 Panasonic Intellectual Property Corporation of America Method and apparatus for controlling electronic voting
WO2019217937A1 (en) * 2018-05-11 2019-11-14 Civic Technologies, Inc. Rewards and penalties of the reward function for the attestation game
US10972274B2 (en) * 2018-08-29 2021-04-06 International Business Machines Corporation Trusted identity solution using blockchain
US11556925B2 (en) * 2018-09-12 2023-01-17 International Business Machines Corporation Ensuring information fairness and input privacy using a blockchain in a competitive scenario governed by a smart contract
US11018848B2 (en) * 2019-01-02 2021-05-25 Bank Of America Corporation Blockchain management platform for performing asset adjustment, cross sectional editing, and bonding
US11012232B2 (en) 2019-01-02 2021-05-18 Bank Of America Corporation Blockchain management platform for performing asset adjustment, cross sectional editing, and bonding
US11115186B2 (en) 2019-01-02 2021-09-07 Bank Of America Corporation Blockchain management platform for performing asset adjustment, cross sectional editing, and bonding
US10790990B2 (en) * 2019-06-26 2020-09-29 Alibaba Group Holding Limited Ring signature-based anonymous transaction
CN110943828B (zh) * 2019-11-05 2021-01-08 武汉理工大学 秘密数运算转换方法及系统
US11636520B1 (en) * 2020-03-16 2023-04-25 Matthew R Olden Blockchain-based digital advertising and marketing system and method
CN111476571B (zh) * 2020-04-02 2023-09-15 百度国际科技(深圳)有限公司 基于区块链的资产处理方法、装置、设备和存储介质
CN114299655B (zh) * 2020-09-23 2023-09-05 成都中科信息技术有限公司 一种电子投票系统及其工作方法
CN112543101B (zh) * 2020-12-17 2021-08-17 广州欧赛斯信息科技有限公司 一种基于时间释放的可追踪匿名投票方法及系统
CN112910870B (zh) * 2021-01-22 2021-11-09 西安电子科技大学 基于区块链的协同隐私计算数据通信方法
CN117242473A (zh) * 2021-02-25 2023-12-15 Nym技术股份公司 去中心化激励混合网络
CN113591116B (zh) * 2021-08-04 2023-09-05 天津大学 一种高效门限可验证多秘密分享方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20120028160A (ko) * 2010-09-14 2012-03-22 주식회사 이맥소프트 유권자 개인정보 보호용 전자투표 시스템과 방법 및 그 프로그램 소스를 저장한 저장매체
EP2905922A1 (en) * 2014-02-10 2015-08-12 Thomson Licensing Signing method delivering a partial signature associated to a message, threshold signing method, signature verification method, and corresponding computer program and electronic devices

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3381853B2 (ja) * 1992-12-10 2003-03-04 日本電信電話株式会社 電子投票方法および電子投票装置
US6845447B1 (en) * 1998-11-11 2005-01-18 Nippon Telegraph And Telephone Corporation Electronic voting method and system and recording medium having recorded thereon a program for implementing the method
JP5732429B2 (ja) * 2012-05-18 2015-06-10 日本電信電話株式会社 秘密分散システム、データ分散装置、データ復元装置、秘密分散方法、およびプログラム
US9836908B2 (en) 2014-07-25 2017-12-05 Blockchain Technologies Corporation System and method for securely receiving and counting votes in an election
WO2016022864A2 (en) * 2014-08-06 2016-02-11 Blockchain Technologies Corporation System and method for securely receiving and counting votes in an election
JP6176228B2 (ja) 2014-12-11 2017-08-09 マツダ株式会社 車両の前部車体構造
US11488147B2 (en) 2015-07-14 2022-11-01 Fmr Llc Computationally efficient transfer processing and auditing apparatuses, methods and systems
EP3323080B1 (en) * 2015-07-14 2020-11-04 Fmr Llc Computationally efficient transfer processing, auditing, and search apparatuses, methods and systems
US20170352219A1 (en) * 2015-08-06 2017-12-07 Blockchain Technologies Corporation System and method for securely receiving and counting votes in an election
US20170109955A1 (en) 2015-10-20 2017-04-20 Follow My Vote, Inc. Blockchain electronic voting system and method
RU2015157157A (ru) 2015-12-31 2017-07-06 Дмитрий Сергеевич Ермолаев Способ учёта акций и долей предприятий и голосований по ним в средах учёта вроде bitcoin и next
US10805072B2 (en) * 2017-06-12 2020-10-13 Change Healthcare Holdings, Llc System and method for autonomous dynamic person management

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20120028160A (ko) * 2010-09-14 2012-03-22 주식회사 이맥소프트 유권자 개인정보 보호용 전자투표 시스템과 방법 및 그 프로그램 소스를 저장한 저장매체
EP2905922A1 (en) * 2014-02-10 2015-08-12 Thomson Licensing Signing method delivering a partial signature associated to a message, threshold signing method, signature verification method, and corresponding computer program and electronic devices

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Zhichao Zhao 외, "How to Vote Privately Using Bitcoin", MICCAI 2015 (2016.03.05.)* *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102368525B1 (ko) 2020-08-20 2022-03-02 에이아이오티홀딩스 주식회사 블록체인과 ipfs를 활용한 디지털 문서 관리 시스템 및 방법
KR102308997B1 (ko) * 2020-08-21 2021-10-06 윤여국 여론 조사 및 투표 관리 방법, 및 이를 수행하는 장치들

Also Published As

Publication number Publication date
GB201713800D0 (en) 2017-10-11
JP2020532221A (ja) 2020-11-05
JP7482982B2 (ja) 2024-05-14
EP3676988A1 (en) 2020-07-08
EP3676988B8 (en) 2022-09-14
EP4254857A2 (en) 2023-10-04
US11546144B2 (en) 2023-01-03
ZA202000685B (en) 2023-08-30
EP4254857A3 (en) 2023-12-13
EP4117228A1 (en) 2023-01-11
WO2019043589A1 (en) 2019-03-07
CN111066283A (zh) 2020-04-24
EP4117228B1 (en) 2023-10-04
KR102669763B1 (ko) 2024-05-29
JP2023036876A (ja) 2023-03-14
EP3676988B1 (en) 2022-07-27
US20230216669A1 (en) 2023-07-06
JP7203829B2 (ja) 2023-01-13
US20200351083A1 (en) 2020-11-05
SG11202000809XA (en) 2020-03-30

Similar Documents

Publication Publication Date Title
KR102669763B1 (ko) 블록체인 네트워크를 통해 엔티티에 의해 제공되는 데이터의 통신, 저장 및 처리를 위한 시스템 및 방법
Dimitriou Efficient, coercion-free and universally verifiable blockchain-based voting
Abuidris et al. Secure large‐scale E‐voting system based on blockchain contract using a hybrid consensus model combined with sharding
Ziegeldorf et al. Coinparty: Secure multi-party mixing of bitcoins
US11341487B2 (en) System and method for information protection
KR102120882B1 (ko) 블록체인 기반 컨테스트 네트워크 시스템 및 컨테스트 방법
JP2019053269A (ja) 電子投票によって収集した投票者の票を判定するシステムおよび方法
JP7240402B2 (ja) コンピュータにより実施される意思決定システム及び方法
KR20210065995A (ko) 디지털 리소스에 대한 액세스를 전송하기 위한 컴퓨터 구현된 시스템 및 방법
Qu et al. A electronic voting protocol based on blockchain and homomorphic signcryption
CN112470423A (zh) 用于资产混合的计算机实现的系统和方法
Faour Transparent voting platform based on permissioned blockchain
Li et al. AvecVoting: Anonymous and verifiable E-voting with untrustworthy counters on blockchain
JP3910529B2 (ja) 電子投票システム
Pan et al. Enhanced name and vote separated E‐voting system: an E‐voting system that ensures voter confidentiality and candidate privacy
Emami et al. A scalable decentralized privacy-preserving e-voting system based on zero-knowledge off-chain computations
JP2006195844A (ja) 最少トランザクションによる電子権利譲渡管理方法および権利譲渡処理装置、権利譲受装置権利譲渡管理装置、並びにそのプログラム
Gurushankar et al. Decentralized universally verifiable stake voting system with perfect privacy
Sun et al. An Ownership Verification Mechanism Against Encrypted Forwarding Attacks in Data-Driven Social Computing
Zaghloul Privilege-Based Decentralized Data Sharing
Longo et al. Multiple Candidates Coercion-Resistant Blockchain-Based E-Voting Protocol With Receipts.
Ronge Security and Privacy of Cryptocurrency Signatures
Razzaque et al. Enhancing E-Voting Security with Blockchain-Backed Decentralized Authorization
Li A privacy preserving ethereum-based E-voting system
Zhu Privacy Preservation & Security Solutions in Blockchain Network

Legal Events

Date Code Title Description
A201 Request for examination
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
X701 Decision to grant (after re-examination)