KR20190023894A - 전자 투표 시스템 및 방법 - Google Patents

전자 투표 시스템 및 방법 Download PDF

Info

Publication number
KR20190023894A
KR20190023894A KR1020170110274A KR20170110274A KR20190023894A KR 20190023894 A KR20190023894 A KR 20190023894A KR 1020170110274 A KR1020170110274 A KR 1020170110274A KR 20170110274 A KR20170110274 A KR 20170110274A KR 20190023894 A KR20190023894 A KR 20190023894A
Authority
KR
South Korea
Prior art keywords
block
transaction
node
voting
received
Prior art date
Application number
KR1020170110274A
Other languages
English (en)
Other versions
KR101962686B1 (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 세종대학교산학협력단
Priority to KR1020170110274A priority Critical patent/KR101962686B1/ko
Publication of KR20190023894A publication Critical patent/KR20190023894A/ko
Application granted granted Critical
Publication of KR101962686B1 publication Critical patent/KR101962686B1/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
    • G06Q50/00Information and communication technology [ICT] specially adapted for implementation of business processes of specific business sectors, e.g. utilities or tourism
    • G06Q50/10Services
    • G06Q50/26Government or public services
    • GPHYSICS
    • G07CHECKING-DEVICES
    • G07CTIME OR ATTENDANCE REGISTERS; REGISTERING OR INDICATING THE WORKING OF MACHINES; GENERATING RANDOM NUMBERS; VOTING OR LOTTERY APPARATUS; ARRANGEMENTS, SYSTEMS OR APPARATUS FOR CHECKING NOT PROVIDED FOR ELSEWHERE
    • G07C13/00Voting apparatus
    • 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
    • G06Q2230/00Voting or election arrangements

Landscapes

  • Business, Economics & Management (AREA)
  • Tourism & Hospitality (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • General Health & Medical Sciences (AREA)
  • Primary Health Care (AREA)
  • Health & Medical Sciences (AREA)
  • Economics (AREA)
  • Development Economics (AREA)
  • Human Resources & Organizations (AREA)
  • Marketing (AREA)
  • Educational Administration (AREA)
  • Strategic Management (AREA)
  • General Business, Economics & Management (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Time Recorders, Dirve Recorders, Access Control (AREA)

Abstract

전자 투표 시스템 및 방법이 개시된다. 본 발명의 일 실시예에 따른 전자 투표 시스템은 전자 투표의 투표 결과에 대한 블록 체인을 구성하기 위한 초기 블록을 생성하여 배포하는 선거 관리 노드; 투표자로부터 복수의 후보자 중 어느 하나의 후보자에 대한 선택값을 포함하는 일반 트랜잭션을 생성하는 하나 이상의 투표 노드; 및 상기 하나 이상의 투표 노드로부터 수신된 상기 일반 트랜잭션을 검증하고, 검증된 일반 트랜잭션을 집계하여 하나 이상의 블록을 생성하는 하나 이상의 집계 노드를 포함한다.

Description

전자 투표 시스템 및 방법{SYSTEM AND METHOD FOR ELECTRONIC VOTING}
본 발명의 실시예들은 신뢰성 있는 전자 투표 제공 기술과 관련된다.
전자 투표란 집단의 구성원들의 의사를 묻는 방식 중 하나인 투표를 전자적인 방식에 의해 실시하는 것을 의미한다. 예를 들어, 대통령 선거를 전자 투표 방식으로 진행할 경우, 유권자들은 투표소에 설치된 투표 단말, 또는 투표 클라이언트가 설치된 개인 단말(개인용 컴퓨터, 또는 스마트폰 등의 이동 단말 등)을 이용하여 대통령 후보로 등록한 후보자들 중 한 명을 선택하게 된다.
이러한 전자 투표의 경우 투표를 위한 별도의 투표용지 등을 사용하지 않으므로 기존의 아날로그 투표 방식에 비해 선거 비용을 절감할 수 있으며, 개표가 매우 빠르게 이루어진다는 장점이 있다. 그러나 전자 투표는 악의적인 집단에 의한 투표 결과의 위조, 변조 등의 문제가 있어 기존의 투표 방식을 대체하는 데 한계가 존재하였다.
대한민국 등록특허공보 제10-1167647호 (2012. 07.16)
본 발명의 실시예들은 신뢰성 있는 전자 투표를 구현하기 위한 기술적인 수단을 제공하기 위한 것이다.
예시적인 실시예에 따르면, 전자 투표의 투표 결과에 대한 블록 체인을 구성하기 위한 초기 블록을 생성하여 배포하는 선거 관리 노드; 투표자로부터 복수의 후보자 중 어느 하나의 후보자에 대한 선택값을 포함하는 일반 트랜잭션을 생성하는 하나 이상의 투표 노드; 및 상기 하나 이상의 투표 노드로부터 수신된 상기 일반 트랜잭션을 검증하고, 검증된 일반 트랜잭션을 집계하여 하나 이상의 블록을 생성하는 하나 이상의 집계 노드를 포함하며, 상기 투표 노드 및 상기 집계 노드는 상기 집계 노드에서 생성된 상기 하나 이상의 블록을 검증하고, 검증된 블록을 상기 블록 체인에 연결하는, 전자 투표 시스템이 제공된다.
상기 초기 블록은, 상기 전자 투표에 참여한 총 유권자 수, 상기 선거 관리 노드의 서명값, 상기 하나 이상의 집계 노드의 공개키 및 상기 복수의 후보자들 각각의 공개키 해시값을 포함할 수 있다.
상기 일반 트랜잭션은, 상기 투표자의 PIN 번호, 상기 투표자가 선택한 후보자의 공개키 해시값, 상기 투표자의 개인키 서명값, 및 상기 투표자의 공개키를 포함할 수 있다.
상기 투표 노드는, 상기 투표자로부터 입력받은 PIN 번호의 유효성을 검증하고, 상기 유효성이 검증된 상기 투표자로부터 후보자 선택값을 입력받아 상기 일반 트랜잭션을 생성하며, 생성된 상기 일반 트랜잭션을 타 투표 노드 또는 상기 집계 노드로 송신할 수 있다.
상기 투표 노드는, 타 투표 노드로부터 상기 일반 트랜잭션이 수신되는 경우, 수신된 상기 일반 트랜잭션에 포함된 상기 PIN 번호와 중복되는 PIN 번호의 존재 여부, 후보자의 공개키 해시값의 유효 여부, 및 상기 투표자의 개인키 서명값의 유효 여부에 따라 수신된 상기 일반 트랜잭션을 검증하고, 검증된 일반 트랜잭션을 타 투표 노드 또는 상기 집계 노드로 송신할 수 있다.
상기 투표 노드는, 상기 검증 결과 중복된 PIN 번호가 존재하거나, 상기 후보자의 공개키 해시값이 유효하지 않거나, 또는 상기 투표자의 개인키 서명값이 유효하지 않을 것으로 판단되는 경우, 수신된 상기 일반 트랜잭션을 폐기할 수 있다.
상기 집계 노드는, 타 투표 노드로부터 상기 일반 트랜잭션이 수신되는 경우, 수신된 상기 일반 트랜잭션에 포함된 상기 PIN 번호와 중복되는 PIN 번호의 존재 여부, 후보자의 공개키 해시값의 유효 여부, 및 상기 투표자의 개인키 서명값의 유효 여부에 따라 수신된 상기 일반 트랜잭션을 검증하고, 검증된 일반 트랜잭션을 현재 생성중인 블록에 추가할 수 있다.
상기 집계 노드는, 기 설정된 블록 생성 주기에 도달한 경우, 베이스 트랜잭션을 생성하여 상기 현재 생성중인 블록에 추가하고, 생성된 상기 블록을 타 투표 노드 또는 타 집계 노드로 송신할 수 있다.
상기 베이스 트랜잭션은, 상기 복수의 후보자들 각각의 공개키 해시값, 및 상기 베이스 트랜잭션이 속한 블록 내에서 집계된 상기 복수의 후보자들 각각의 득표수를 포함할 수 있다.
상기 블록을 수신한 상기 투표 노드 또는 상기 집계 노드는, 수신된 상기 블록의 베이스 트랜잭션에 기록된 총 투표수와 수신된 상기 블록에 포함된 일반 트랜잭션으로부터 계산된 총 투표수의 일치 여부, 수신된 상기 블록의 베이스 트랜잭션에 기록된 상기 복수의 후보자 각각의 득표수와 수신된 상기 블록에 포함된 일반 트랜잭션으로부터 계산된 각 후보자별 득표수의 일치 여부, 블록 체인에 상기 블록에 포함된 PIN 번호와 중복된 PIN 번호가 존재하는지의 여부, 및ㅍ상기 블록에 포함된 머클 루트 해시값의 유효 여부를 판단함으로써 상기 수신된 블록을 검증하고,ㅍ검증된 블록에 자신의 서명값을 추가하여 타 투표 노드 또는 타 집계 노드로 송신할 수 있다.
상기 블록을 수신한 상기 투표 노드 또는 상기 집계 노드는, 상기 검증된 블록에 포함된 서명값의 개수가 기 설정된 값 이상인 경우, 상기 검증된 블록을 상기 블록 체인에 연결할 수 있다.
다른 예시적인 실시예에 따르면, 선거 관리 노드에서, 전자 투표의 투표 결과에 대한 블록 체인을 구성하기 위한 초기 블록을 생성하여 배포하는 단계; 투표 노드에서, 투표자로부터 복수의 후보자 중 어느 하나의 후보자에 대한 선택값을 포함하는 일반 트랜잭션을 생성하는 단계; 집계 노드에서, 상기 투표 노드로부터 수신된 상기 일반 트랜잭션을 검증하고, 검증된 일반 트랜잭션을 집계하여 블록을 생성하는 단계; 및 상기 투표 노드 또는 상기 집계 노드에서, 생성된 상기 블록을 검증하고, 검증된 블록을 상기 블록 체인에 연결하는 단계를 포함하는, 전자 투표 방법이 제공된다.
상기 초기 블록은, 상기 전자 투표에 참여한 총 유권자 수, 상기 선거 관리 노드의 서명값, 상기 하나 이상의 집계 노드의 공개키 및 상기 복수의 후보자들 각각의 공개키 해시값을 포함할 수 있다.
상기 일반 트랜잭션은, 상기 투표자의 PIN 번호, 상기 투표자가 선택한 후보자의 공개키 해시값, 상기 투표자의 개인키 서명값, 및 상기 투표자의 공개키를 포함할 수 있다.
상기 일반 트랜잭션을 생성하는 단계는, 상기 투표자로부터 입력받은 PIN 번호의 유효성을 검증하고, 상기 유효성이 검증된 상기 투표자로부터 후보자 선택값을 입력받아 상기 일반 트랜잭션을 생성하며, 생성된 상기 일반 트랜잭션을 타 투표 노드 또는 상기 집계 노드로 송신하도록 구성될 수 있다.
상기 투표 노드는, 타 투표 노드로부터 상기 일반 트랜잭션이 수신되는 경우, 수신된 상기 일반 트랜잭션에 포함된 상기 PIN 번호와 중복되는 PIN 번호의 존재 여부, 후보자의 공개키 해시값의 유효 여부, 및 상기 투표자의 개인키 서명값의 유효 여부에 따라 수신된 상기 일반 트랜잭션을 검증하고, 검증된 일반 트랜잭션을 타 투표 노드 또는 상기 집계 노드로 송신할 수 있다.
상기 투표 노드는, 상기 검증 결과 중복된 PIN 번호가 존재하거나, 상기 후보자의 공개키 해시값이 유효하지 않거나, 또는 상기 투표자의 개인키 서명값이 유효하지 않을 것으로 판단되는 경우, 수신된 상기 일반 트랜잭션을 폐기할 수 있다.
상기 블록 생성 단계는, 수신된 상기 일반 트랜잭션에 포함된 상기 PIN 번호와 중복되는 PIN 번호의 존재 여부, 후보자의 공개키 해시값의 유효 여부, 및 상기 투표자의 개인키 서명값의 유효 여부에 따라 수신된 상기 일반 트랜잭션을 검증하고, 검증된 일반 트랜잭션을 현재 생성중인 블록에 추가하도록 구성될 수 있다.
상기 블록 생성 단계는, 기 설정된 블록 생성 주기에 도달한 경우, 베이스 트랜잭션을 생성하여 상기 현재 생성중인 블록에 추가하고, 생성된 상기 블록을 타 투표 노드 또는 타 집계 노드로 송신하는 단계를 더 포함할 수 있다.
상기 베이스 트랜잭션은, 상기 복수의 후보자들 각각의 공개키 해시값, 및 상기 베이스 트랜잭션이 속한 블록 내에서 집계된 상기 복수의 후보자들 각각의 득표수를 포함할 수 있다.
상기 블록 검증 및 블록 체인 연결 단계는, 수신된 상기 블록의 베이스 트랜잭션에 기록된 총 투표수와 수신된 상기 블록에 포함된 일반 트랜잭션으로부터 계산된 총 투표수의 일치 여부,수신된 상기 블록의 베이스 트랜잭션에 기록된 상기 복수의 후보자 각각의 득표수와 수신된 상기 블록에 포함된 일반 트랜잭션으로부터 계산된 각 후보자별 득표수의 일치 여부, 블록 체인에 상기 블록에 포함된 PIN 번호와 중복된 PIN 번호가 존재하는지의 여부, 및 상기 블록에 포함된 머클 루트 해시값의 유효 여부를 판단함으로써 상기 수신된 블록을 검증하고, 검증된 블록에 자신의 서명값을 추가하여 타 투표 노드 또는 타 집계 노드로 송신하도록 구성될 수 있다.
상기 블록 검증 및 블록 체인 연결 단계는, 상기 검증된 블록에 포함된 서명값의 개수가 기 설정된 값 이상인 경우, 상기 검증된 블록을 상기 블록 체인에 연결하도록 구성될 수 있다.
본 발명의 실시예들에 따르면, 전자 투표 결과가 변조되거나 위조되는 것을 방지하고 신뢰성 있는 전자 투표 시스템을 제공할 수 있다.
도 1은 본 발명의 일 실시예에 따른 전자 투표 시스템(100)의 구성을 설명하기 위한 블록도
도 2는 본 발명의 일 실시예에 따른 초기 블록(Genesis Block)의 구조를 설명하기 위한 예시도
도 3은 본 발명의 일 실시예에 따른 일반 블록의 구조를 설명하기 위한 예시도
도 4는 본 발명의 일 실시예에 따른 일반 트랜잭션 구조를 설명하기 위한 예시도
도 5는 본 발명의 일 실시예에 따른 베이스(Base) 트랜잭션 구조를 설명하기 위한 예시도
도 6은 본 발명의 일 실시예에 따른 각 투표 노드에서의 투표 및 일반 트랜잭션 생성 과정을 설명하기 위한 흐름도
도 7은 본 발명의 일 실시예에 따른 각 투표 노드에서의 일반 트랜잭션 검증 과정을 설명하기 위한 흐름도
도 8은 본 발명의 일 실시예에 따른 각 집계 노드, 또는 선거 관리 노드에서의 일반 트랜잭션 검증, 수집 및 블록 생성 과정(800)을 설명하기 위한 흐름도
도 9는 본 발명의 일 실시예에 따른 각 투표 노드, 집계 노드, 또는 선거 관리 노드에서의 블록 검증 과정(900)을 설명하기 위한 흐름도
도 10은 본 발명의 일 실시예에 따른 전자 투표 시스템에서 전술한 과정을 거쳐 블록 체인을 형성하는 과정을 설명하기 위한 예시도
이하, 도면을 참조하여 본 발명의 구체적인 실시형태를 설명하기로 한다. 이하의 상세한 설명은 본 명세서에서 기술된 방법, 장치 및/또는 시스템에 대한 포괄적인 이해를 돕기 위해 제공된다. 그러나 이는 예시에 불과하며 본 발명은 이에 제한되지 않는다.
본 발명의 실시예들을 설명함에 있어서, 본 발명과 관련된 공지기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략하기로 한다. 그리고, 후술되는 용어들은 본 발명에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다. 상세한 설명에서 사용되는 용어는 단지 본 발명의 실시예들을 기술하기 위한 것이며, 결코 제한적이어서는 안 된다. 명확하게 달리 사용되지 않는 한, 단수 형태의 표현은 복수 형태의 의미를 포함한다. 본 설명에서, "포함" 또는 "구비"와 같은 표현은 어떤 특성들, 숫자들, 단계들, 동작들, 요소들, 이들의 일부 또는 조합을 가리키기 위한 것이며, 기술된 것 이외에 하나 또는 그 이상의 다른 특성, 숫자, 단계, 동작, 요소, 이들의 일부 또는 조합의 존재 또는 가능성을 배제하도록 해석되어서는 안 된다.
도 1은 본 발명의 일 실시예에 따른 전자 투표 시스템(100)의 구성을 설명하기 위한 블록도이다. 도시된 바와 같이, 본 발명의 일 실시예에 다른 전자 투표 시스템(100)은 하나 이상의 투표 노드(102), 하나 이상의 집계 노드(104) 및 선거 관리 노드(106)를 포함한다.
투표 노드(102)(Voter Node, 또는 VN으로 줄여 칭함)는 전자 투표에 참여하는 투표자가 사용하는 단말이다. 일 실시예에서, 투표 노드(102)는 투표소 등에 설치된 투표 전용 장치일 수 있다. 다른 실시예에서, 투표 노드(102)는 투표자가 사용하는 데스크탑 컴퓨터, 노트북 컴퓨터, 태블릿, 스마트폰 등의 컴퓨팅 장치일 수 있다. 전자 투표시 투표자 인증을 위하여, 각 투표자들은 전자 투표일 이전에 별도의 투표자 검증 시스템(미도시)을 통하여 유권자 자격 검증 절차를 수행하고 PIN 번호를 부여받을 수 있다. 예를 들어, 상기 투표자 검증 시스템은 정부 기관, 또는 전자투표를 관리하는 별도의 공공 기관 등에서 제공되는 시스템일 수 있다. 보안을 위하여 PIN 번호와 각 유권자(투표자)의 개인 정보는 각각 다른 저장소에 저장될 수 있다. \해당 선거에 입후보한 후보자들은 그들의 공개키 해시값을 공개하기 위하여 투표 노드(102)를 이용하여 선거일 이전에 미리 투표를 진행할 수 있다.
일 실시예에서, 투표 노드(102)는 투표자의 투표(선거에 입후보한 후보자들 중 어느 하나의 후보자를 선택하는 행위)에 따라 트랜잭션(transaction)을 생성한다. 이때 투표 노드(102)가 생성하는 트랜잭션은 후술할 베이스 트랜잭션과의 구분을 위하여 일반 트랜잭션이라고 칭하기로 한다. 또한, 투표 노드(102)는 타 투표 노드가 생성한 일반 트랜잭션 및 집계 노드(104)가 생성한 블록을 검증하는 역할을 수행한다.
집계 노드(104)(Aggregator Node, 또는 AN으로 줄여 칭함)는 투표 노드(102)가 생성한 일반 트랜잭션을 검증하고, 검증된 일반 트랜잭션을 수집하여 블록을 생성한다. 또한 집계 노드(104)는 타 집계 노드가 생성한 블록을 검증하는 역할을 수행한다.
선거 관리 노드(106)(Electoral Authority Node, 또는 EAN으로 줄여 칭함)는 전자 투표를 관리하는 주체에서 사용하는 단말이다. 선거 관리 노드(106)는 초기 블록(Genesis Block)을 생성하여 이를 네트워크를 통해 배포한다. 일 실시예에서, 초기 블록은 전자 투표의 결과로 생성되는 블록 체인(Block Chain)을 구성하는 가장 첫 번째 블록으로서, 전자 투표와 관련된 기본 정보를 포함한다.
또한, 선거 관리 노드(106)는 전자 투표 과정에서 집계 노드(104)와 마찬가지로 투표 노드(102)가 생성한 일반 트랜잭션을 검증하고, 검증된 일반 트랜잭션을 수집하여 블록을 생성하며, 타 집계 노드가 생성한 블록을 검증하는 역할을 수행한다.
일 실시예에서, 하나 이상의 투표 노드(102), 하나 이상의 집계 노드(104) 및 선거 관리 노드(106)는 하나 이상의 프로세서 및 그 프로세서와 연결된 컴퓨터 판독 가능 기록 매체를 포함하는 컴퓨팅 장치 상에서 구현될 수 있다. 컴퓨터 판독 가능 기록 매체는 프로세서의 내부 또는 외부에 있을 수 있고, 잘 알려진 다양한 수단으로 프로세서와 연결될 수 있다. 컴퓨팅 장치 내의 프로세서는 각 컴퓨팅 장치로 하여금 본 명세서에서 기술되는 예시적인 실시예에 따라 동작하도록 할 수 있다. 예를 들어, 프로세서는 컴퓨터 판독 가능 기록 매체에 저장된 명령어를 실행할 수 있고, 컴퓨터 판독 가능 기록 매체에 저장된 명령어는 프로세서에 의해 실행되는 경우 컴퓨팅 장치로 하여금 본 명세서에 기술되는 예시적인 실시예에 따른 동작들을 수행하도록 구성될 수 있다.
한편, 하나 이상의 투표 노드(102), 하나 이상의 집계 노드(104) 및 선거 관리 노드(106)는 통신 네트워크(108)를 통하여 서로 데이터를 송수신할 수 있다. 몇몇 실시예들에서, 통신 네트워크는 인터넷, 하나 이상의 로컬 영역 네트워크(local area networks), 광역 네트워크(wire area networks), 셀룰러 네트워크, 모바일 네트워크, 그 밖에 다른 종류의 네트워크들, 또는 이러한 네트워크들의 조합을 포함할 수 있다.
도 2는 본 발명의 일 실시예에 따른 초기 블록(Genesis Block)의 구조를 설명하기 위한 예시도이다. 전술한 바와 같이, 본 발명의 실시예들에서 초기 블록은 블록 체인을 구성하는 가장 첫 번째 블록으로서, 전자 투표와 관련된 기본 정보를 포함한다. 이와 같은 초기 블록은 선거 관리 노드(106)에 의해서만 생성될 수 있다. 도시된 바와 같이, 본 발명의 일 실시예에 따른 초기 블록은 헤더(Header) 영역 및 트랜잭션(Transaction) 영역을 포함한다.
먼저, 헤더 영역에 포함되는 항목은 다음과 같다.
- Block ID: 초기 블록을 다른 블록과 구별하기 위한 식별자이다.
- Block Type: 해당 블록이 초기 블록인지, 또는 일반 블록인지를 구별하기 위한 값이 저장된다.
- Previous Hash: 본 블록과 연결된 이전 블록의 해시값이 저장되는 영역이나, 초기 블록의 경우 이전 블록이 없으므로 본 항목은 아무런 값도 가지지 않는다.
- Version: 전자 투표에 사용되는 블록체인의 버전을 나타낸다.
- Merkle Root: 초기 블록에 포함된 트랜잭션으로부터 생성된 머클 트리(Merkle Tree)의 루트 해시값이 저장된다.
- Timestamp: 초기 블록의 생성 시각을 나타낸다.
- All number of Voters: 해당 선거에 참여하기 위하여 PIN을 지급받은 총 유권자 수를 나타낸다.
- EAN Signature: 선거 관리 노드(Electoral Authority Node)의 서명값이다.
초기 블록의 트랜잭션 영역에는 다음의 두 개의 트랜잭션을 포함한다.
- 1번째 트랜잭션(Tx1): 적합한 검증 절차를 통해 선정된 집계 노드들의 공개키들을 포함하는 트랜잭션이다.
- 2번째 트랜잭션(Tx2): 해당 선거에 입후보한 후보자들의 공개키 해시를 포함하는 트랜잭션이다.
도 3은 본 발명의 일 실시예에 따른 일반 블록의 구조를 설명하기 위한 예시도이다. 본 발명의 실시예들에서, 일반 블록은 초기 블록 이후에 생성되는 블록으로서, 각 투표 노드(102)의 투표시 생성되는 트랜잭션이 저장된다. 일반 블록 또한 초기 블록과 마찬가지로 헤더(Header) 영역 및 트랜잭션(Transaction) 영역을 포함한다.
먼저, 일반 블록의 헤더 영역에 포함되는 항목은 다음과 같다.
- Block ID: 해당 일반 블록을 다른 블록과 구별하기 위한 식별자이다.
- Block Type: 해당 블록이 초기 블록인지, 또는 일반 블록인지를 구별하기 위한 값이 저장된다.
- Previous Hash: 본 블록과 연결된 이전 블록의 해시값이 저장되는 영역이다.
- Version: 전자 투표에 사용되는 블록체인의 버전을 나타낸다.
- Merkle Root: 일반 블록에 포함된 트랜잭션들로부터 생성된 머클 트리(Merkle Tree)의 루트 해시값이 저장된다.
- Timestamp: 해당 일반 블록의 생성 시각을 나타낸다.
- Transaction Count: 해당 일반 블록에 포함되는 트랜잭션의 수를 나타낸다.
- Signatures: 해당 일반 블록을 검증한 노드(투표 노드, 집계 노드, 선거 관리 노드)의 서명값이 저장된다.
일반 블록의 트랜잭션 영역에는 투표 노드에서 수행된 각 유권자들의 투표 결과가 트랜잭션 형태로 저장된다. 즉, 본 발명의 실시예에서 하나의 트랜잭션은 유권자들의 한 표와 대응된다.
도 4는 본 발명의 일 실시예에 따른 일반 트랜잭션 구조를 설명하기 위한 예시도이다. 전술한 바와 같이, 본 발명의 실시예들에서 일반 트랜잭션은 투표 노드(102)에서의 투표 과정에서 생성되는 트랜잭션이다. 도시된 바와 같이, 본 발명의 일 실시예에 따른 일반 트랜잭션은 헤더(Header)와 본문(Body)을 포함한다.
일반 트랜잭션의 헤더에는 다음과 같은 항목을 포함한다.
- Transaction ID: 해당 일반 트랜잭션을 다른 트랜잭션과 구별하기 위한 식별자이다.
- Transaction Type: 해당 트랜잭션의 종류를 나타내는 식별자로서, 해당 트랜잭션이 일반 트랜잭션인지 또는 베이스(Base) 트랜잭션인지를 구분하기 위하여 사용된다.
- Version: 전자 투표에 사용되는 블록체인의 버전을 나타낸다.
- Timestamp: 해당 일반 트랜잭션의 생성 시각을 나타낸다.
일반 트랜잭션의 본문에는 다음과 같은 항목을 포함한다.
- PIN: 해당 트랜잭션을 생성한 투표자가 유권자 검증절차를 거쳐 지급받은 PIN이 저장된다.
- Candidate's Public Key Hash: 해당 트랜잭션을 생성한 투표자가 선택한 후보자의 공개키 해시값이 저장된다.
- Voter's Signature: 해당 투표자의 개인키 서명값이 저장된다.
- Voter's Raw Public Key: 해당 투표자의 공개키이며, 서명값 검증을 위해 사용된다.
도 5는 본 발명의 일 실시예에 따른 베이스(Base) 트랜잭션 구조를 설명하기 위한 예시도이다. 본 발명의 실시예들에서 베이스 트랜잭션은 기 설정된 블록 생성 주기마다 집계 노드(104)에 의하여 생성되는 트랜잭션이다. 도시된 바와 같이, 일반 트랜잭션과 마찬가지로, 본 발명의 일 실시예에 따른 일반 트랜잭션은 헤더(Header)와 본문(Body)을 포함한다.
베이스 트랜잭션의 헤더는 다음과 같은 항목을 포함한다.
- Transaction ID: 해당 베이스 트랜잭션을 다른 트랜잭션과 구별하기 위한 식별자이다.
- Transaction Type: 해당 트랜잭션의 종류를 나타내는 식별자로서, 해당 트랜잭션이 일반 트랜잭션인지 또는 베이스(Base) 트랜잭션인지를 구분하기 위하여 사용된다.
- Version: 전자 투표에 사용되는 블록체인의 버전을 나타낸다.
- Timestamp: 해당 베이스 트랜잭션의 생성 시각을 나타낸다.
베이스 트랜잭션의 본문에는 다음과 같은 항목을 포함한다.
- Each Candidate's Public Key Hash: 각 후보자들의 공개키 해시값이다.
- Each Candidate's Number of Votes: 해당 베이스 트랜잭션이 속한 블록 내 트랜잭션 집계 결과로서, 해당 블록 내에서 각 후보자들의 득표수를 나타낸다.
도 6은 본 발명의 일 실시예에 따른 각 투표 노드(102)에서의 투표 및 일반 트랜잭션 생성 과정(600)을 설명하기 위한 흐름도이다. 도시된 흐름도에서는 상기 방법을 복수 개의 단계로 나누어 기재하였으나, 적어도 일부의 단계들은 순서를 바꾸어 수행되거나, 다른 단계와 결합되어 함께 수행되거나, 생략되거나, 세부 단계들로 나뉘어 수행되거나, 또는 도시되지 않은 하나 이상의 단계가 부가되어 수행될 수 있다.
단계 602에서, 투표 노드(102)는 투표자로부터 PIN 번호를 입력받는다. 전술한 바와 같이, 상기 PIN 번호는 각 투표자들이 투표일 이전에 별도의 투표자 검증 시스템 등을 통하여 부여받은 것일 수 있다.
단계 604에서, 투표 노드(102)는 입력된 상기 PIN 번호의 유효성을 검증한다. 일 실시예에서, 투표 노드(102)는 상기 투표자 검증 시스템과 연계하여 상기 PIN 번호의 유효성을 검증하도록 구성될 수 있다.
만약 상기 604 단계의 수행 결과 입력된 PIN 번호의 유효성 검증에 성공한 경우, 단계 606에서 투표 노드(102)는 해당 선거에 입후보한 후보자들 중 하나의 후보자에 대한 투표자의 선택값을 입력받는다. 즉, 본 단계는 PIN 번호의 인증에 성공한 투표자가 실제 투표를 진행하는 단계이다. 이를 위하여 투표 노드(102)는 상기 투표자의 후보자 선택을 위한 적절한 사용자 인터페이스를 출력하도록 구성될 수 있다.
한편 상기 604 단계의 수행 결과 입력된 PIN 번호의 유효성 검증에 성공하지 못한 경우, 단계 608에서 투표 노드(102)는 투표 과정을 종료하게 된다.
단계 610에서, 투표 노드(102)는 투표자의 PIN 번호 및 후보자 선택값을 포함하는 일반 트랜잭션을 생성한다. 상기 일반 트랜잭션의 상세 구성에 대해서는 도 4에서 설명한 바와 같다.
단계 612에서, 투표 노드(102)는 생성된 상기 일반 트랜잭션을 타 노드로 송신한다. 본 발명의 실시예들에서, 투표 노드(102)에서 생성된 일반 트랜잭션은 타 투표 노드(102), 집계 노드(104) 또는 선거 관리 노드(106) 중 어느 하나로 전송될 수 있다.
도 7은 본 발명의 일 실시예에 따른 각 투표 노드(102)에서의 일반 트랜잭션 검증 과정(700)을 설명하기 위한 흐름도이다. 도시된 흐름도에서는 상기 방법을 복수 개의 단계로 나누어 기재하였으나, 적어도 일부의 단계들은 순서를 바꾸어 수행되거나, 다른 단계와 결합되어 함께 수행되거나, 생략되거나, 세부 단계들로 나뉘어 수행되거나, 또는 도시되지 않은 하나 이상의 단계가 부가되어 수행될 수 있다.
단계 702에서, 투표 노드(102)는 전자 투표에 참여하는 타 투표 노드로부터 일반 트랜잭션을 수신한다.
단계 704에서, 투표 노드(102)는 해당 시점의 블록 체인에 수신된 상기 일반 트랜잭션에 포함된 PIN 번호와 중복되는 PIN 번호가 존재하는지의 여부를 판단한다.
상기 704 단계의 판단 결과 중복된 PIN 번호가 존재하지 않는 경우, 단계 706에서 투표 노드(102)는 상기 일반 트랜잭션에 포함된 후보자의 공개키 해시값이 유효한지의 여부를 판단한다. 일 실시예에서, 투표 노드(102)는 상기 일반 트랜잭션에 포함된 후보자의 공개키 해시값을 초기 블록의 공개키 해시값과 비교하여 상기 유효성 여부를 판단할 수 있다.
상기 706 단계의 판단 결과 상기 공개키 해시값이 유효한 경우, 단계 708에서 투표 노드(102)는 상기 일반 트랜잭션에 포함된 투표자의 개인키 서명값을 검증한다. 일 실시예에서, 투표 노드는 상기 일반 트랜잭션에 포함된 투표자의 공개키를 이용하여 상기 개인키 서명값을 검증할 수 있다.
상기 708 단계의 수행 결과 상기 개인키 서명값의 검증에 성공한 경우, 단계 710에서 투표 노드(102)는 수신한 상기 일반 트랜잭션을 타 노드로 송신한다. 본 발명의 실시예들에서, 투표 노드(102)는 상기 일반 트랜잭션을 타 투표 노드(102), 집계 노드(104) 또는 선거 관리 노드(106) 중 어느 하나로 전송할 수 있다.
한편, 상기 704 단계에서 중복된 PIN 번호가 존재하거나, 상기 706 단계에서 공개키 해시값이 유효하지 않거나, 또는 상기 708 단계에서 서명값 검증에 실패한 경우, 단계 712에서 투표 노드(102)는 수신된 상기 일반 트랜잭션을 폐기한다.
도 8은 본 발명의 일 실시예에 따른 각 집계 노드(104), 또는 선거 관리 노드(106)에서의 일반 트랜잭션 검증, 수집 및 블록 생성 과정(800)을 설명하기 위한 흐름도이다. 이하의 설명에서는 편의를 위해 집계 노드(104)에서 일반 트랜잭션을 검증하고 블록을 생성하는 것으로 가정하였으나, 이하의 단계들은 각 투표 노드(102) 및 선거 관리 노드(106)에서도 동일하게 수행될 수 있다. 도시된 흐름도에서는 상기 방법을 복수 개의 단계로 나누어 기재하였으나, 적어도 일부의 단계들은 순서를 바꾸어 수행되거나, 다른 단계와 결합되어 함께 수행되거나, 생략되거나, 세부 단계들로 나뉘어 수행되거나, 또는 도시되지 않은 하나 이상의 단계가 부가되어 수행될 수 있다.
단계 802에서, 집계 노드(104)는 전자 투표에 참여하는 투표 노드(102)로부터 일반 트랜잭션을 수신한다.
단계 804에서, 집계 노드(104)는 해당 시점에 생성 중인 블록에 이미 포함되어 있는 일반 트랜잭션 중 상기 802 단계에서 수신된 일반 트랜잭션의 PIN 번호와 중복되는 PIN 번호가 존재하는지의 여부를 판단한다.
상기 804 단계의 판단 결과 중복된 PIN 번호가 존재하지 않는 경우, 단계 806에서 집계 노드(104)는 상기 일반 트랜잭션에 포함된 후보자의 공개키 해시값이 유효한지의 여부를 판단한다. 일 실시예에서, 집계 노드(104)는 상기 일반 트랜잭션에 포함된 후보자의 공개키 해시값을 초기 블록의 공개키 해시값과 비교하여 상기 유효성 여부를 판단할 수 있다.
상기 806 단계의 판단 결과 상기 공개키 해시값이 유효한 경우, 단계 808에서 집계 노드(104)는 상기 일반 트랜잭션에 포함된 투표자의 개인키 서명값을 검증한다. 일 실시예에서, 투표 노드는 상기 일반 트랜잭션에 포함된 투표자의 공개키를 이용하여 상기 개인키 서명값을 검증할 수 있다.
상기 808 단계의 수행 결과 상기 개인키 서명값의 검증에 성공한 경우, 단계 810에서 집계 노드(104)는 수신된 상기 일반 트랜잭션을 집계 노드(104)에서 현재 생성중인 블록에 추가한다.
한편, 상기 804 단계에서 중복된 PIN 번호가 존재하거나, 상기 806 단계에서 공개키 해시값이 유효하지 않거나, 또는 상기 808 단계에서 서명값 검증에 실패한 경우, 단계 812에서 집계 노드(104)는 수신된 상기 일반 트랜잭션을 폐기한다.
단계 814에서, 집계 노드(104)는 기 설정된 블록 생성 주기에 도달했는지의 여부를 판단한다. 만약 아직 블록 생성 주기가 아닌 경우, 집계 노드(104)는 802 단계로 돌아가 일반 트랜잭션의 수집하고 검증하는 과정을 반복한다.
만약 상기 814 단계의 판단 결과 블록 생성 주기에 도달한 경우, 단계 816에서 집계 노드(104)는 일반 트랜잭션 수집을 멈추고 베이스 트랜잭션을 생성한다. 전술한 바와 같이, 상기 베이스 트랜잭션은 현재 생성된 블록의 마지막 트랜잭션으로서, 해당 블록 내에서의 각 후보자들의 득표수 집계 결과를 포함한다.
단계 816에서, 집계 노드(104)는 생성된 상기 블록을 타 노드로 송신한다. 본 발명의 실시예들에서, 집계 노드(104)는 상기 블록을 타 투표 노드(102), 집계 노드(104) 또는 선거 관리 노드(106) 중 어느 하나로 전송할 수 있다.
도 9는 본 발명의 일 실시예에 따른 각 투표 노드(102), 집계 노드(104), 또는 선거 관리 노드(106)에서의 블록 검증 과정(900)을 설명하기 위한 흐름도이다. 이하의 설명에서는 편의를 위해 집계 노드(104)에서 블록을 검증하는 것으로 가정하였으나, 이하의 단계들은 각 투표 노드(102) 및 선거 관리 노드(106)에서도 동일하게 수행될 수 있다. 도시된 흐름도에서는 상기 방법을 복수 개의 단계로 나누어 기재하였으나, 적어도 일부의 단계들은 순서를 바꾸어 수행되거나, 다른 단계와 결합되어 함께 수행되거나, 생략되거나, 세부 단계들로 나뉘어 수행되거나, 또는 도시되지 않은 하나 이상의 단계가 부가되어 수행될 수 있다.
단계 902에서, 집계 노드(104)는 타 노드로부터 블록을 수신한다. 본 발명의 실시예들에서, 집계 노드(104)는 타 투표 노드(102), 집계 노드(104) 또는 선거 관리 노드(106) 중 어느 하나로부터 블록을 수신할 수 있다.
단계 904에서, 집계 노드(104)는 수신된 블록에 포함된 베이스 트랜잭션의 총 투표수가 실제 블록이 포함하고 있는 트랜잭션으로부터 계산된 총 투표수와 일치하는지 여부를 판단한다.
상기 904 단계의 판단 결과 일치하는 경우, 단계 906에서 집계 노드(104)는 베이스 트랜잭션에 기록된 각 후보자별 득표수가 실제 블록이 포함하고 있는 트랜잭션으로부터 계산된 각 후보자별 득표수와 일치하는지 여부를 판단한다.
상기 906 단계의 판단 결과 일치하는 경우, 단계 908에서 집계 노드(104)는 블록 체인을 조회하여 블록 내에 포함된 PIN 번호 중 상기 블록 체인에 포함된 PIN 번호와 중복된 PIN 번호가 존재하는지의 여부를 판단한다.
상기 908 단계의 판단 결과 중복된 PIN 번호가 존재하지 않는 경우, 단계 910에서 집계 노드(104)는 블록에 저장된 머클 루트 해시값을 검증함으로써 블록 내 트랜잭션의 위변조 여부를 확인한다.
상기 910 단계의 검증 결과 머클 루트 해시값의 검증에 성공하는 경우, 단계 912에서 집계 노드(104)는 수신된 블록의 헤더에 자신의 서명값을 추가한다.
한편, 상기 904 단계에서 총 투표수가 일치하지 않거나, 상기 906 단계에서 후보자별 득표수가 일치하지 않거나, 상기 908 단계에서 중복된 PIN 번호가 존재하거나, 또는 상기 910 단계에서 머클 루트 해시값의 검증에 실패한 경우, 단계 914에서 집계 노드(104)는 수신된 블록을 폐기한다.
단계 916에서, 집계 노드(104)는 블록에 포함된 서명의 개수가 임계값 이상인지의 여부를 판단한다. 예를 들어, 상기 임계값은 상기 전자 투표에 참여하는 네트워크 내 전체 노드의 개수의 50%로 설정될 수 있다. 다만 본 발명의 실시예들은 특정 임계값에 한정되는 것은 아니다.
상기 916 단계의 판단 결과 서명 개수가 임계값 이상인 경우, 단계 918에서 집계 노드(104)는 수신된 블록을 블록 체인에 연결한다.
이와 달리 상기 916 단계의 판단 결과 서명 개수가 임계값 미만인 경우, 단계 920에서 집계 노드(104)는 수신된 상기 블록을 타 노드로 송신한다. 본 발명의 실시예들에서, 집계 노드(104)는 상기 블록을 타 투표 노드(102), 집계 노드(104) 또는 선거 관리 노드(106) 중 어느 하나로 전송할 수 있다.
도 10은 본 발명의 일 실시예에 따른 전자 투표 시스템(100)에서 전술한 과정을 거쳐 블록 체인을 형성하는 과정을 설명하기 위한 예시도이다. 도시된 바와 같이, 투표 노드(102)에서의 투표자들의 투표 결과 일반 트랜잭션 TX1, TX2, TX3이 생성된다. 이 중 TX1, TX2는 집계 노드(104)에 의해 블록 2001에 추가되고, TX3은 다른 집계 노드(104)에 의해 블록 2002에 추가된다. 블록 생성 주기가 되면, 블록 2001을 생성한 집계 노드(104)는 TX1, TX2의 투표 결과를 종합하여 베이스 트랜잭션 BTX를 생성하여 블록 2001의 마지막 트랜잭션으로 추가하고 해당 블록을 블록 체인에 연결한다. 블록 체인의 첫 번째 블록인 Block 0은 초기 블록에 해당하며, Block 1부터는 일반 블록이 된다.
이와 같이 블록 체인을 이용하여 투표 결과를 집계할 경우 악의적인 사용자가 투표 결과를 위조하거나 변조하는 것이 사실상 불가능하게 된다. 따라서 본 발명의 실시예들에 따를 경우 전자 투표에 있어 신뢰성과 안정성을 담보할 수 있다.
본 발명의 실시예는 본 명세서에서 기술한 방법들을 컴퓨터상에서 수행하기 위한 프로그램, 및 상기 프로그램을 포함하는 컴퓨터 판독 가능 기록매체를 포함할 수 있다. 상기 컴퓨터 판독 가능 기록매체는 프로그램 명령, 로컬 데이터 파일, 로컬 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체는 본 발명을 위하여 특별히 설계되고 구성된 것들이거나, 또는 컴퓨터 소프트웨어 분야에서 통상적으로 사용 가능한 것일 수 있다. 컴퓨터 판독 가능 기록매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체, CD-ROM, DVD와 같은 광 기록 매체, 및 롬, 램, 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 상기 프로그램의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함할 수 있다.
이상에서 본 발명의 대표적인 실시예들을 상세하게 설명하였으나, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 상술한 실시예에 대하여 본 발명의 범주에서 벗어나지 않는 한도 내에서 다양한 변형이 가능함을 이해할 것이다. 그러므로 본 발명의 권리범위는 설명된 실시예에 국한되어 정해져서는 안 되며, 후술하는 특허청구범위뿐만 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.
100: 전자 투표 시스템
102: 투표 노드
104: 집계 노드
106: 선거 관리 노드

Claims (22)

  1. 전자 투표의 투표 결과에 대한 블록 체인을 구성하기 위한 초기 블록을 생성하여 배포하는 선거 관리 노드;
    투표자로부터 복수의 후보자 중 어느 하나의 후보자에 대한 선택값을 포함하는 일반 트랜잭션을 생성하는 하나 이상의 투표 노드; 및
    상기 하나 이상의 투표 노드로부터 수신된 상기 일반 트랜잭션을 검증하고, 검증된 일반 트랜잭션을 집계하여 하나 이상의 블록을 생성하는 하나 이상의 집계 노드를 포함하며,
    상기 투표 노드 및 상기 집계 노드는 상기 집계 노드에서 생성된 상기 하나 이상의 블록을 검증하고, 검증된 블록을 상기 블록 체인에 연결하는, 전자 투표 시스템.
  2. 청구항 1에 있어서,
    상기 초기 블록은,
    상기 전자 투표에 참여한 총 유권자 수, 상기 선거 관리 노드의 서명값, 상기 하나 이상의 집계 노드의 공개키 및 상기 복수의 후보자들 각각의 공개키 해시값을 포함하는, 전자 투표 시스템.
  3. 청구항 1에 있어서,
    상기 일반 트랜잭션은,
    상기 투표자의 PIN 번호, 상기 투표자가 선택한 후보자의 공개키 해시값, 상기 투표자의 개인키 서명값, 및 상기 투표자의 공개키를 포함하는, 전자 투표 시스템.
  4. 청구항 3에 있어서,
    상기 투표 노드는,
    상기 투표자로부터 입력받은 PIN 번호의 유효성을 검증하고, 상기 유효성이 검증된 상기 투표자로부터 후보자 선택값을 입력받아 상기 일반 트랜잭션을 생성하며, 생성된 상기 일반 트랜잭션을 타 투표 노드 또는 상기 집계 노드로 송신하는, 전자 투표 시스템.
  5. 청구항 4에 있어서,
    상기 투표 노드는,
    타 투표 노드로부터 상기 일반 트랜잭션이 수신되는 경우,
    수신된 상기 일반 트랜잭션에 포함된 상기 PIN 번호와 중복되는 PIN 번호의 존재 여부, 후보자의 공개키 해시값의 유효 여부, 및 상기 투표자의 개인키 서명값의 유효 여부에 따라 수신된 상기 일반 트랜잭션을 검증하고, 검증된 일반 트랜잭션을 타 투표 노드 또는 상기 집계 노드로 송신하는, 전자 투표 시스템.
  6. 청구항 5에 있어서,
    상기 투표 노드는,
    상기 검증 결과 중복된 PIN 번호가 존재하거나, 상기 후보자의 공개키 해시값이 유효하지 않거나, 또는 상기 투표자의 개인키 서명값이 유효하지 않을 것으로 판단되는 경우, 수신된 상기 일반 트랜잭션을 폐기하는, 전자 투표 시스템.
  7. 청구항 4에 있어서,
    상기 집계 노드는,
    타 투표 노드로부터 상기 일반 트랜잭션이 수신되는 경우,
    수신된 상기 일반 트랜잭션에 포함된 상기 PIN 번호와 중복되는 PIN 번호의 존재 여부, 후보자의 공개키 해시값의 유효 여부, 및 상기 투표자의 개인키 서명값의 유효 여부에 따라 수신된 상기 일반 트랜잭션을 검증하고,
    검증된 일반 트랜잭션을 현재 생성중인 블록에 추가하는, 전자 투표 시스템.
  8. 청구항 7에 있어서,
    상기 집계 노드는,
    기 설정된 블록 생성 주기에 도달한 경우, 베이스 트랜잭션을 생성하여 상기 현재 생성중인 블록에 추가하고, 생성된 상기 블록을 타 투표 노드 또는 타 집계 노드로 송신하는, 전자 투표 시스템.
  9. 청구항 8에 있어서,
    상기 베이스 트랜잭션은,
    상기 복수의 후보자들 각각의 공개키 해시값, 및 상기 베이스 트랜잭션이 속한 블록 내에서 집계된 상기 복수의 후보자들 각각의 득표수를 포함하는, 전자 투표 시스템.
  10. 청구항 8에 있어서,
    상기 블록을 수신한 상기 투표 노드 또는 상기 집계 노드는,
    수신된 상기 블록의 베이스 트랜잭션에 기록된 총 투표수와 수신된 상기 블록에 포함된 일반 트랜잭션으로부터 계산된 총 투표수의 일치 여부,
    수신된 상기 블록의 베이스 트랜잭션에 기록된 상기 복수의 후보자 각각의 득표수와 수신된 상기 블록에 포함된 일반 트랜잭션으로부터 계산된 각 후보자별 득표수의 일치 여부,
    블록 체인에 상기 블록에 포함된 PIN 번호와 중복된 PIN 번호가 존재하는지의 여부, 및
    상기 블록에 포함된 머클 루트 해시값의 유효 여부를 판단함으로써 상기 수신된 블록을 검증하고,
    검증된 블록에 자신의 서명값을 추가하여 타 투표 노드 또는 타 집계 노드로 송신하는, 전자 투표 시스템.
  11. 청구항 10에 있어서,
    상기 블록을 수신한 상기 투표 노드 또는 상기 집계 노드는,
    상기 검증된 블록에 포함된 서명값의 개수가 기 설정된 값 이상인 경우, 상기 검증된 블록을 상기 블록 체인에 연결하는, 전자 투표 시스템.
  12. 선거 관리 노드에서, 전자 투표의 투표 결과에 대한 블록 체인을 구성하기 위한 초기 블록을 생성하여 배포하는 단계;
    투표 노드에서, 투표자로부터 복수의 후보자 중 어느 하나의 후보자에 대한 선택값을 포함하는 일반 트랜잭션을 생성하는 단계;
    집계 노드에서, 상기 투표 노드로부터 수신된 상기 일반 트랜잭션을 검증하고, 검증된 일반 트랜잭션을 집계하여 블록을 생성하는 단계; 및
    상기 투표 노드 또는 상기 집계 노드에서, 생성된 상기 블록을 검증하고, 검증된 블록을 상기 블록 체인에 연결하는 단계를 포함하는, 전자 투표 방법.
  13. 청구항 12에 있어서,
    상기 초기 블록은,
    상기 전자 투표에 참여한 총 유권자 수, 상기 선거 관리 노드의 서명값, 상기 하나 이상의 집계 노드의 공개키 및 상기 복수의 후보자들 각각의 공개키 해시값을 포함하는, 전자 투표 방법.
  14. 청구항 12에 있어서,
    상기 일반 트랜잭션은,
    상기 투표자의 PIN 번호, 상기 투표자가 선택한 후보자의 공개키 해시값, 상기 투표자의 개인키 서명값, 및 상기 투표자의 공개키를 포함하는, 전자 투표 방법.
  15. 청구항 14에 있어서,
    상기 일반 트랜잭션을 생성하는 단계는,
    상기 투표자로부터 입력받은 PIN 번호의 유효성을 검증하고, 상기 유효성이 검증된 상기 투표자로부터 후보자 선택값을 입력받아 상기 일반 트랜잭션을 생성하며, 생성된 상기 일반 트랜잭션을 타 투표 노드 또는 상기 집계 노드로 송신하도록 구성되는, 전자 투표 방법.
  16. 청구항 15에 있어서,
    상기 투표 노드는,
    타 투표 노드로부터 상기 일반 트랜잭션이 수신되는 경우,
    수신된 상기 일반 트랜잭션에 포함된 상기 PIN 번호와 중복되는 PIN 번호의 존재 여부, 후보자의 공개키 해시값의 유효 여부, 및 상기 투표자의 개인키 서명값의 유효 여부에 따라 수신된 상기 일반 트랜잭션을 검증하고, 검증된 일반 트랜잭션을 타 투표 노드 또는 상기 집계 노드로 송신하는, 전자 투표 방법.
  17. 청구항 16에 있어서,
    상기 투표 노드는,
    상기 검증 결과 중복된 PIN 번호가 존재하거나, 상기 후보자의 공개키 해시값이 유효하지 않거나, 또는 상기 투표자의 개인키 서명값이 유효하지 않을 것으로 판단되는 경우, 수신된 상기 일반 트랜잭션을 폐기하는, 전자 투표 방법.
  18. 청구항 15에 있어서,
    상기 블록 생성 단계는,
    수신된 상기 일반 트랜잭션에 포함된 상기 PIN 번호와 중복되는 PIN 번호의 존재 여부, 후보자의 공개키 해시값의 유효 여부, 및 상기 투표자의 개인키 서명값의 유효 여부에 따라 수신된 상기 일반 트랜잭션을 검증하고, 검증된 일반 트랜잭션을 현재 생성중인 블록에 추가하도록 구성되는, 전자 투표 방법.
  19. 청구항 18에 있어서,
    상기 블록 생성 단계는,
    기 설정된 블록 생성 주기에 도달한 경우, 베이스 트랜잭션을 생성하여 상기 현재 생성중인 블록에 추가하고, 생성된 상기 블록을 타 투표 노드 또는 타 집계 노드로 송신하는 단계를 더 포함하는, 전자 투표 방법.
  20. 청구항 19에 있어서,
    상기 베이스 트랜잭션은,
    상기 복수의 후보자들 각각의 공개키 해시값, 및 상기 베이스 트랜잭션이 속한 블록 내에서 집계된 상기 복수의 후보자들 각각의 득표수를 포함하는, 전자 투표 방법.
  21. 청구항 19에 있어서,
    상기 블록 검증 및 블록 체인 연결 단계는,
    수신된 상기 블록의 베이스 트랜잭션에 기록된 총 투표수와 수신된 상기 블록에 포함된 일반 트랜잭션으로부터 계산된 총 투표수의 일치 여부,
    수신된 상기 블록의 베이스 트랜잭션에 기록된 상기 복수의 후보자 각각의 득표수와 수신된 상기 블록에 포함된 일반 트랜잭션으로부터 계산된 각 후보자별 득표수의 일치 여부,
    블록 체인에 상기 블록에 포함된 PIN 번호와 중복된 PIN 번호가 존재하는지의 여부, 및
    상기 블록에 포함된 머클 루트 해시값의 유효 여부를 판단함으로써 상기 수신된 블록을 검증하고,
    검증된 블록에 자신의 서명값을 추가하여 타 투표 노드 또는 타 집계 노드로 송신하도록 구성되는, 전자 투표 방법.
  22. 청구항 21에 있어서,
    상기 블록 검증 및 블록 체인 연결 단계는,
    상기 검증된 블록에 포함된 서명값의 개수가 기 설정된 값 이상인 경우, 상기 검증된 블록을 상기 블록 체인에 연결하도록 구성되는, 전자 투표 방법.
KR1020170110274A 2017-08-30 2017-08-30 전자 투표 시스템 및 방법 KR101962686B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020170110274A KR101962686B1 (ko) 2017-08-30 2017-08-30 전자 투표 시스템 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170110274A KR101962686B1 (ko) 2017-08-30 2017-08-30 전자 투표 시스템 및 방법

Publications (2)

Publication Number Publication Date
KR20190023894A true KR20190023894A (ko) 2019-03-08
KR101962686B1 KR101962686B1 (ko) 2019-03-27

Family

ID=65801589

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170110274A KR101962686B1 (ko) 2017-08-30 2017-08-30 전자 투표 시스템 및 방법

Country Status (1)

Country Link
KR (1) KR101962686B1 (ko)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110933098A (zh) * 2019-12-05 2020-03-27 全链通有限公司 基于区块链的电子投票方法、设备及存储介质
KR102120882B1 (ko) * 2019-09-11 2020-06-09 이민재 블록체인 기반 컨테스트 네트워크 시스템 및 컨테스트 방법
JP2020161112A (ja) * 2019-03-26 2020-10-01 ベイジン バイドゥ ネットコム サイエンス アンド テクノロジー カンパニー リミテッド イーサリアムに基づく改ざんされたトランザクションの処理方法、デバイス及び記憶媒体
KR102169695B1 (ko) * 2019-05-15 2020-10-23 김동영 자가검증이 가능한 블록체인 전자투표 관리 방법
KR102173426B1 (ko) * 2020-07-08 2020-11-03 주식회사 아이오트러스트 Did 환경의 프라이버시 보호를 지원하는 공개키 인프라구조 기반 서명 및 검증 시스템과 방법
KR20210004667A (ko) * 2019-07-05 2021-01-13 로버트 제임스 히갈티 스포츠 투표 시스템
KR102248401B1 (ko) * 2019-11-22 2021-05-11 (주)레몬클라우드 선거 관리 장치 및 선거 관리 방법
KR20210114127A (ko) * 2020-03-10 2021-09-23 주식회사 샌드스퀘어 블록 체인 분산 시스템 및 블록 체인의 트랜잭션 처리 방법
KR20210120514A (ko) * 2020-03-27 2021-10-07 한양대학교 산학협력단 동형 암호 기술 기반 전자 투표 시스템 및 그 방법
KR20220001101A (ko) * 2020-06-29 2022-01-05 한국전자통신연구원 블록체인 시스템의 블록 생성 방법 및 장치

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200114188A (ko) 2019-03-28 2020-10-07 권형석 스마트 컨트랙트 기반 블록체인을 활용한 전자투표 방법 및 시스템.
KR102051454B1 (ko) 2019-04-23 2019-12-04 에스지에이블록체인 주식회사 조건 검증에 의한 블록체인 기반 의사결정 시스템

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20090001497A (ko) * 2006-12-01 2009-01-09 한국전자통신연구원 신뢰 컴퓨팅 환경에서 각 참여자가 상호 보증 기능을 갖는인터넷 전자투표 방법 및 시스템
KR101167647B1 (ko) 2010-09-14 2012-07-20 주식회사 이맥소프트 전자투표 시스템
US20160027229A1 (en) * 2014-07-25 2016-01-28 Blockchain Technologies Corporation System and method for securely receiving and counting votes in an election

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20090001497A (ko) * 2006-12-01 2009-01-09 한국전자통신연구원 신뢰 컴퓨팅 환경에서 각 참여자가 상호 보증 기능을 갖는인터넷 전자투표 방법 및 시스템
KR101167647B1 (ko) 2010-09-14 2012-07-20 주식회사 이맥소프트 전자투표 시스템
US20160027229A1 (en) * 2014-07-25 2016-01-28 Blockchain Technologies Corporation System and method for securely receiving and counting votes in an election

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11436604B2 (en) 2019-03-26 2022-09-06 Beijing Baidu Netcom Science And Technology Co., Ltd. Method, apparatus and storage medium for processing ethereum-based falsified transaction
JP2020161112A (ja) * 2019-03-26 2020-10-01 ベイジン バイドゥ ネットコム サイエンス アンド テクノロジー カンパニー リミテッド イーサリアムに基づく改ざんされたトランザクションの処理方法、デバイス及び記憶媒体
KR20200115019A (ko) * 2019-03-26 2020-10-07 베이징 바이두 넷컴 사이언스 앤 테크놀로지 코., 엘티디. 이더리움 기반의 변조된 거래의 처리 방법, 장치 및 저장 매체
KR102169695B1 (ko) * 2019-05-15 2020-10-23 김동영 자가검증이 가능한 블록체인 전자투표 관리 방법
KR20210004667A (ko) * 2019-07-05 2021-01-13 로버트 제임스 히갈티 스포츠 투표 시스템
CN112789823A (zh) * 2019-09-11 2021-05-11 李敏宰 基于区块链的竞选网络系统及竞选方法
WO2021049702A1 (ko) * 2019-09-11 2021-03-18 이민재 블록체인 기반 컨테스트 네트워크 시스템 및 컨테스트 방법
KR102120882B1 (ko) * 2019-09-11 2020-06-09 이민재 블록체인 기반 컨테스트 네트워크 시스템 및 컨테스트 방법
CN112789823B (zh) * 2019-09-11 2023-12-22 李敏宰 基于区块链的竞选网络系统及竞选方法
KR102248401B1 (ko) * 2019-11-22 2021-05-11 (주)레몬클라우드 선거 관리 장치 및 선거 관리 방법
CN110933098A (zh) * 2019-12-05 2020-03-27 全链通有限公司 基于区块链的电子投票方法、设备及存储介质
CN110933098B (zh) * 2019-12-05 2022-04-08 全链通有限公司 基于区块链的电子投票方法、设备及存储介质
KR20210114127A (ko) * 2020-03-10 2021-09-23 주식회사 샌드스퀘어 블록 체인 분산 시스템 및 블록 체인의 트랜잭션 처리 방법
KR20210120514A (ko) * 2020-03-27 2021-10-07 한양대학교 산학협력단 동형 암호 기술 기반 전자 투표 시스템 및 그 방법
KR20220001101A (ko) * 2020-06-29 2022-01-05 한국전자통신연구원 블록체인 시스템의 블록 생성 방법 및 장치
KR102173426B1 (ko) * 2020-07-08 2020-11-03 주식회사 아이오트러스트 Did 환경의 프라이버시 보호를 지원하는 공개키 인프라구조 기반 서명 및 검증 시스템과 방법

Also Published As

Publication number Publication date
KR101962686B1 (ko) 2019-03-27

Similar Documents

Publication Publication Date Title
KR101962686B1 (ko) 전자 투표 시스템 및 방법
CN112446785B (zh) 跨链交易方法、系统、装置、设备和存储介质
US11290441B1 (en) Systems and methods for blockchain validation of user identity and authority
CN110245186B (zh) 一种基于区块链的业务处理方法及相关设备
CN111464518B (zh) 一种跨链通信数据的发送、验证方法及装置
US11388179B2 (en) Centralized threat intelligence
US11917050B1 (en) Systems and methods for generating a blockchain-based user profile
CN112632629B (zh) 基于区块链的投票管理方法、装置、介质及电子设备
CN113256297B (zh) 基于区块链的数据处理方法、装置、设备及可读存储介质
CN109166040B (zh) 基于区块链的交易审计方法、装置、设备及存储介质
US11362836B2 (en) Consensus protocol for permissioned ledgers
CN109242663A (zh) 一种基于区块链技术的记账方法及系统
CN112738253A (zh) 基于区块链的数据处理方法、装置、设备及存储介质
CN109831310A (zh) 一种身份验证方法、系统及相关装置
CN111209339B (zh) 区块同步方法、装置、计算机以及存储介质
CN111476640B (zh) 认证方法、系统、存储介质及大数据认证平台
CN110597864A (zh) 一种基于区块链的个人信息管理方法及装置
US20220239668A1 (en) Blockchain-based message processing method and apparatus, device, and storage medium
CN110321730A (zh) 一种操作数据处理的方法、区块链节点及存储介质
CN111967061A (zh) 基于区块链的可信账户转账交易方法及装置
JP2022517042A (ja) 分散型台帳システムへのデータの記録の誤ったコピーの送信を防止する
CN111865595A (zh) 一种区块链的共识方法及装置
KR102317656B1 (ko) 블록체인 기반 전자투표 이력 관리 시스템
CN112465516B (zh) 基于区块链网络的设备管理方法,相关设备及存储介质
CN116781269A (zh) 基于区块链的数据处理方法、装置、设备、介质及产品

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant