KR101962686B1 - System and method for electronic voting - Google Patents

System and method for electronic voting Download PDF

Info

Publication number
KR101962686B1
KR101962686B1 KR1020170110274A KR20170110274A KR101962686B1 KR 101962686 B1 KR101962686 B1 KR 101962686B1 KR 1020170110274 A KR1020170110274 A KR 1020170110274A KR 20170110274 A KR20170110274 A KR 20170110274A KR 101962686 B1 KR101962686 B1 KR 101962686B1
Authority
KR
South Korea
Prior art keywords
block
transaction
node
voting
received
Prior art date
Application number
KR1020170110274A
Other languages
Korean (ko)
Other versions
KR20190023894A (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 세종대학교산학협력단
Priority to KR1020170110274A priority Critical patent/KR101962686B1/en
Publication of KR20190023894A publication Critical patent/KR20190023894A/en
Application granted granted Critical
Publication of KR101962686B1 publication Critical patent/KR101962686B1/en

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)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Tourism & Hospitality (AREA)
  • Marketing (AREA)
  • Educational Administration (AREA)
  • General Health & Medical Sciences (AREA)
  • Human Resources & Organizations (AREA)
  • Health & Medical Sciences (AREA)
  • Primary Health Care (AREA)
  • Strategic Management (AREA)
  • Economics (AREA)
  • General Business, Economics & Management (AREA)
  • Development Economics (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

전자 투표 시스템 및 방법이 개시된다. 본 발명의 일 실시예에 따른 전자 투표 시스템은 전자 투표의 투표 결과에 대한 블록 체인을 구성하기 위한 초기 블록을 생성하여 배포하는 선거 관리 노드; 투표자로부터 복수의 후보자 중 어느 하나의 후보자에 대한 선택값을 포함하는 일반 트랜잭션을 생성하는 하나 이상의 투표 노드; 및 상기 하나 이상의 투표 노드로부터 수신된 상기 일반 트랜잭션을 검증하고, 검증된 일반 트랜잭션을 집계하여 하나 이상의 블록을 생성하는 하나 이상의 집계 노드를 포함한다.An electronic voting system and method are disclosed. An electronic voting system according to an embodiment of the present invention includes an election management node for generating and distributing an initial block for constituting a block chain of a vote result of an electronic voting; One or more voting nodes for generating a generic transaction containing a selection value for any one of a plurality of candidates from a voter; And one or more aggregation nodes for verifying the generic transaction received from the one or more voting nodes and aggregating verified generic transactions to generate one or more blocks.

Description

전자 투표 시스템 및 방법{SYSTEM AND METHOD FOR ELECTRONIC VOTING}[0001] SYSTEM AND METHOD FOR ELECTRONIC VOTING [0002]

본 발명의 실시예들은 신뢰성 있는 전자 투표 제공 기술과 관련된다.Embodiments of the present invention relate to a reliable electronic voting technology.

전자 투표란 집단의 구성원들의 의사를 묻는 방식 중 하나인 투표를 전자적인 방식에 의해 실시하는 것을 의미한다. 예를 들어, 대통령 선거를 전자 투표 방식으로 진행할 경우, 유권자들은 투표소에 설치된 투표 단말, 또는 투표 클라이언트가 설치된 개인 단말(개인용 컴퓨터, 또는 스마트폰 등의 이동 단말 등)을 이용하여 대통령 후보로 등록한 후보자들 중 한 명을 선택하게 된다.Electronic voting means conducting electronic voting, which is one of the ways to ask members of the group. For example, if the presidential election is conducted by electronic voting, the voters are candidates who have registered as presidential candidates by using voting terminals installed at the polling stations or personal terminals (personal computers, mobile terminals such as smart phones, etc.) And then selects one of them.

이러한 전자 투표의 경우 투표를 위한 별도의 투표용지 등을 사용하지 않으므로 기존의 아날로그 투표 방식에 비해 선거 비용을 절감할 수 있으며, 개표가 매우 빠르게 이루어진다는 장점이 있다. 그러나 전자 투표는 악의적인 집단에 의한 투표 결과의 위조, 변조 등의 문제가 있어 기존의 투표 방식을 대체하는 데 한계가 존재하였다.Such electronic voting does not use a separate ballot for voting, so it can reduce the election cost compared to the existing analog voting method and has the advantage that the canvassing is performed very quickly. However, electronic voting has the problem of forgery and alteration of the result of voting by a malicious group, and there is a limit to replacing the existing voting method.

대한민국 등록특허공보 제10-1167647호 (2012. 07.16)Korean Registered Patent No. 10-1167647 (2012. 07.16)

본 발명의 실시예들은 신뢰성 있는 전자 투표를 구현하기 위한 기술적인 수단을 제공하기 위한 것이다.Embodiments of the present invention are intended to provide a technical means for implementing reliable electronic voting.

예시적인 실시예에 따르면, 전자 투표의 투표 결과에 대한 블록 체인을 구성하기 위한 초기 블록을 생성하여 배포하는 선거 관리 노드; 투표자로부터 복수의 후보자 중 어느 하나의 후보자에 대한 선택값을 포함하는 일반 트랜잭션을 생성하는 하나 이상의 투표 노드; 및 상기 하나 이상의 투표 노드로부터 수신된 상기 일반 트랜잭션을 검증하고, 검증된 일반 트랜잭션을 집계하여 하나 이상의 블록을 생성하는 하나 이상의 집계 노드를 포함하며, 상기 투표 노드 및 상기 집계 노드는 상기 집계 노드에서 생성된 상기 하나 이상의 블록을 검증하고, 검증된 블록을 상기 블록 체인에 연결하는, 전자 투표 시스템이 제공된다.According to an exemplary embodiment, an election management node for generating and distributing an initial block for constituting a block chain for voting results of electronic voting; One or more voting nodes for generating a generic transaction containing a selection value for any one of a plurality of candidates from a voter; And one or more aggregation nodes for verifying the generic transaction received from the one or more voting nodes and aggregating verified generic transactions to generate one or more blocks, wherein the voting node and the aggregation node generate Verifying the one or more blocks that have been verified, and connecting verified blocks to the block chain.

상기 초기 블록은, 상기 전자 투표에 참여한 총 유권자 수, 상기 선거 관리 노드의 서명값, 상기 하나 이상의 집계 노드의 공개키 및 상기 복수의 후보자들 각각의 공개키 해시값을 포함할 수 있다.The initial block may include a total number of voters participating in the electronic voting, a signature value of the election management node, a public key of the one or more aggregation nodes, and a public key hash value of each of the plurality of candidates.

상기 일반 트랜잭션은, 상기 투표자의 PIN 번호, 상기 투표자가 선택한 후보자의 공개키 해시값, 상기 투표자의 개인키 서명값, 및 상기 투표자의 공개키를 포함할 수 있다.The general transaction may include a PIN number of the voter, a public key hash value of the candidate selected by the voter, a signature value of the voter's private key, and a public key of the voter.

상기 투표 노드는, 상기 투표자로부터 입력받은 PIN 번호의 유효성을 검증하고, 상기 유효성이 검증된 상기 투표자로부터 후보자 선택값을 입력받아 상기 일반 트랜잭션을 생성하며, 생성된 상기 일반 트랜잭션을 타 투표 노드 또는 상기 집계 노드로 송신할 수 있다.Wherein the voting node verifies the validity of the PIN number input from the voter, receives the candidate selection value from the verified voter, generates the general transaction, and transmits the generated general transaction to another voting node or the voting node To the aggregation node.

상기 투표 노드는, 타 투표 노드로부터 상기 일반 트랜잭션이 수신되는 경우, 수신된 상기 일반 트랜잭션에 포함된 상기 PIN 번호와 중복되는 PIN 번호의 존재 여부, 후보자의 공개키 해시값의 유효 여부, 및 상기 투표자의 개인키 서명값의 유효 여부에 따라 수신된 상기 일반 트랜잭션을 검증하고, 검증된 일반 트랜잭션을 타 투표 노드 또는 상기 집계 노드로 송신할 수 있다.Wherein the voting node determines whether a PIN number that is duplicated with the PIN number included in the received general transaction when the general transaction is received from another voting node, whether the candidate's public key hash value is valid, Verifies the received generic transaction according to the validity of the private key signature value of the private key signature value, and transmits the verified generic transaction to the other voting node or the aggregation node.

상기 투표 노드는, 상기 검증 결과 중복된 PIN 번호가 존재하거나, 상기 후보자의 공개키 해시값이 유효하지 않거나, 또는 상기 투표자의 개인키 서명값이 유효하지 않을 것으로 판단되는 경우, 수신된 상기 일반 트랜잭션을 폐기할 수 있다.Wherein the voting node is further configured to determine that the public key hash value of the candidate is not valid or that the voter's private key signature value is not valid, Can be discarded.

상기 집계 노드는, 타 투표 노드로부터 상기 일반 트랜잭션이 수신되는 경우, 수신된 상기 일반 트랜잭션에 포함된 상기 PIN 번호와 중복되는 PIN 번호의 존재 여부, 후보자의 공개키 해시값의 유효 여부, 및 상기 투표자의 개인키 서명값의 유효 여부에 따라 수신된 상기 일반 트랜잭션을 검증하고, 검증된 일반 트랜잭션을 현재 생성중인 블록에 추가할 수 있다.Wherein the aggregation node is configured to, when receiving the general transaction from another voting node, determine whether a PIN number that is duplicated with the PIN number included in the received general transaction, whether the candidate's public key hash value is valid, The validated generic transaction may be verified according to the validity of the private key signature value of the validated generic transaction, and the validated generic transaction may be added to the block being currently generated.

상기 집계 노드는, 기 설정된 블록 생성 주기에 도달한 경우, 베이스 트랜잭션을 생성하여 상기 현재 생성중인 블록에 추가하고, 생성된 상기 블록을 타 투표 노드 또는 타 집계 노드로 송신할 수 있다.When the predetermined block generation period has been reached, the aggregation node may generate a base transaction, add the base transaction to the currently generated block, and transmit the generated block to another voting node or another aggregation node.

상기 베이스 트랜잭션은, 상기 복수의 후보자들 각각의 공개키 해시값, 및 상기 베이스 트랜잭션이 속한 블록 내에서 집계된 상기 복수의 후보자들 각각의 득표수를 포함할 수 있다.The base transaction may include a public key hash value of each of the plurality of candidates and a number of votes of each of the plurality of candidates aggregated in the block to which the base transaction belongs.

상기 블록을 수신한 상기 투표 노드 또는 상기 집계 노드는, 수신된 상기 블록의 베이스 트랜잭션에 기록된 총 투표수와 수신된 상기 블록에 포함된 일반 트랜잭션으로부터 계산된 총 투표수의 일치 여부, 수신된 상기 블록의 베이스 트랜잭션에 기록된 상기 복수의 후보자 각각의 득표수와 수신된 상기 블록에 포함된 일반 트랜잭션으로부터 계산된 각 후보자별 득표수의 일치 여부, 블록 체인에 상기 블록에 포함된 PIN 번호와 중복된 PIN 번호가 존재하는지의 여부, 및ㅍ상기 블록에 포함된 머클 루트 해시값의 유효 여부를 판단함으로써 상기 수신된 블록을 검증하고,ㅍ검증된 블록에 자신의 서명값을 추가하여 타 투표 노드 또는 타 집계 노드로 송신할 수 있다.Wherein the voting node or the aggregation node having received the block determines whether the total number of votes recorded in the base transaction of the received block matches the total number of votes calculated from the general transaction included in the received block, Whether the number of votes of each of the plurality of candidates recorded in the base transaction of the block matches the number of votes of each candidate calculated from the general transaction included in the received block, Verifies the received block by judging whether or not the PIN number is present and whether the muckle root hash value included in the block is validated and adds its signature value to the verified block to determine whether the voting node To the aggregation node.

상기 블록을 수신한 상기 투표 노드 또는 상기 집계 노드는, 상기 검증된 블록에 포함된 서명값의 개수가 기 설정된 값 이상인 경우, 상기 검증된 블록을 상기 블록 체인에 연결할 수 있다.The voting node or the aggregation node receiving the block may connect the verified block to the block chain when the number of signature values included in the verified block is equal to or greater than a predetermined value.

다른 예시적인 실시예에 따르면, 선거 관리 노드에서, 전자 투표의 투표 결과에 대한 블록 체인을 구성하기 위한 초기 블록을 생성하여 배포하는 단계; 투표 노드에서, 투표자로부터 복수의 후보자 중 어느 하나의 후보자에 대한 선택값을 포함하는 일반 트랜잭션을 생성하는 단계; 집계 노드에서, 상기 투표 노드로부터 수신된 상기 일반 트랜잭션을 검증하고, 검증된 일반 트랜잭션을 집계하여 블록을 생성하는 단계; 및 상기 투표 노드 또는 상기 집계 노드에서, 생성된 상기 블록을 검증하고, 검증된 블록을 상기 블록 체인에 연결하는 단계를 포함하는, 전자 투표 방법이 제공된다.According to another exemplary embodiment, at the election management node, generating and distributing an initial block for constituting a block chain for voting result of electronic voting; Generating, at the voting node, a generic transaction containing a selection value for any one of a plurality of candidates from a voter; At the aggregation node, verifying the generic transaction received from the voting node and aggregating the verified generic transaction to generate a block; And verifying the generated block at the voting node or the aggregation node, and coupling the verified block to the block chain.

상기 초기 블록은, 상기 전자 투표에 참여한 총 유권자 수, 상기 선거 관리 노드의 서명값, 상기 하나 이상의 집계 노드의 공개키 및 상기 복수의 후보자들 각각의 공개키 해시값을 포함할 수 있다.The initial block may include a total number of voters participating in the electronic voting, a signature value of the election management node, a public key of the one or more aggregation nodes, and a public key hash value of each of the plurality of candidates.

상기 일반 트랜잭션은, 상기 투표자의 PIN 번호, 상기 투표자가 선택한 후보자의 공개키 해시값, 상기 투표자의 개인키 서명값, 및 상기 투표자의 공개키를 포함할 수 있다.The general transaction may include a PIN number of the voter, a public key hash value of the candidate selected by the voter, a signature value of the voter's private key, and a public key of the voter.

상기 일반 트랜잭션을 생성하는 단계는, 상기 투표자로부터 입력받은 PIN 번호의 유효성을 검증하고, 상기 유효성이 검증된 상기 투표자로부터 후보자 선택값을 입력받아 상기 일반 트랜잭션을 생성하며, 생성된 상기 일반 트랜잭션을 타 투표 노드 또는 상기 집계 노드로 송신하도록 구성될 수 있다.The generating of the generic transaction may include verifying the validity of the PIN number input from the voter, receiving the candidate selection value from the validated voter, generating the generic transaction, To the voting node or to the aggregation node.

상기 투표 노드는, 타 투표 노드로부터 상기 일반 트랜잭션이 수신되는 경우, 수신된 상기 일반 트랜잭션에 포함된 상기 PIN 번호와 중복되는 PIN 번호의 존재 여부, 후보자의 공개키 해시값의 유효 여부, 및 상기 투표자의 개인키 서명값의 유효 여부에 따라 수신된 상기 일반 트랜잭션을 검증하고, 검증된 일반 트랜잭션을 타 투표 노드 또는 상기 집계 노드로 송신할 수 있다.Wherein the voting node determines whether a PIN number that is duplicated with the PIN number included in the received general transaction when the general transaction is received from another voting node, whether the candidate's public key hash value is valid, Verifies the received generic transaction according to the validity of the private key signature value of the private key signature value, and transmits the verified generic transaction to the other voting node or the aggregation node.

상기 투표 노드는, 상기 검증 결과 중복된 PIN 번호가 존재하거나, 상기 후보자의 공개키 해시값이 유효하지 않거나, 또는 상기 투표자의 개인키 서명값이 유효하지 않을 것으로 판단되는 경우, 수신된 상기 일반 트랜잭션을 폐기할 수 있다.Wherein the voting node is further configured to determine that the public key hash value of the candidate is not valid or that the voter's private key signature value is not valid, Can be discarded.

상기 블록 생성 단계는, 수신된 상기 일반 트랜잭션에 포함된 상기 PIN 번호와 중복되는 PIN 번호의 존재 여부, 후보자의 공개키 해시값의 유효 여부, 및 상기 투표자의 개인키 서명값의 유효 여부에 따라 수신된 상기 일반 트랜잭션을 검증하고, 검증된 일반 트랜잭션을 현재 생성중인 블록에 추가하도록 구성될 수 있다.Wherein the block generating step includes a step of receiving the public key hash value of the voter, the validity of the public key hash value of the candidate, and the validity of the private key signature value of the voter, Verifying the generic transaction, and adding the verified generic transaction to the block currently being created.

상기 블록 생성 단계는, 기 설정된 블록 생성 주기에 도달한 경우, 베이스 트랜잭션을 생성하여 상기 현재 생성중인 블록에 추가하고, 생성된 상기 블록을 타 투표 노드 또는 타 집계 노드로 송신하는 단계를 더 포함할 수 있다.The step of generating a block may further include generating a base transaction and adding the generated base transaction to the currently generated block when the preset block generation period is reached, and transmitting the generated block to another voting node or another aggregation node .

상기 베이스 트랜잭션은, 상기 복수의 후보자들 각각의 공개키 해시값, 및 상기 베이스 트랜잭션이 속한 블록 내에서 집계된 상기 복수의 후보자들 각각의 득표수를 포함할 수 있다.The base transaction may include a public key hash value of each of the plurality of candidates and a number of votes of each of the plurality of candidates aggregated in the block to which the base transaction belongs.

상기 블록 검증 및 블록 체인 연결 단계는, 수신된 상기 블록의 베이스 트랜잭션에 기록된 총 투표수와 수신된 상기 블록에 포함된 일반 트랜잭션으로부터 계산된 총 투표수의 일치 여부,수신된 상기 블록의 베이스 트랜잭션에 기록된 상기 복수의 후보자 각각의 득표수와 수신된 상기 블록에 포함된 일반 트랜잭션으로부터 계산된 각 후보자별 득표수의 일치 여부, 블록 체인에 상기 블록에 포함된 PIN 번호와 중복된 PIN 번호가 존재하는지의 여부, 및 상기 블록에 포함된 머클 루트 해시값의 유효 여부를 판단함으로써 상기 수신된 블록을 검증하고, 검증된 블록에 자신의 서명값을 추가하여 타 투표 노드 또는 타 집계 노드로 송신하도록 구성될 수 있다.Wherein the block verification and block chain concatenation step comprises: comparing whether the total number of votes recorded in the base transaction of the received block matches the total number of votes calculated from the general transaction included in the received block; Whether there is a match between the number of votes of each of the plurality of candidates recorded in the block and the number of votes of each candidate calculated from the general transaction included in the received block and the PIN number duplicated in the block chain with the PIN number included in the block And verifies the received block by judging whether or not the muckle root hash value included in the block is valid, adds its signature value to the verified block, and transmits it to the other voting node or other aggregation node .

상기 블록 검증 및 블록 체인 연결 단계는, 상기 검증된 블록에 포함된 서명값의 개수가 기 설정된 값 이상인 경우, 상기 검증된 블록을 상기 블록 체인에 연결하도록 구성될 수 있다.The block verification and block chain connection step may be configured to connect the verified block to the block chain when the number of signature values included in the verified block is equal to or greater than a predetermined value.

본 발명의 실시예들에 따르면, 전자 투표 결과가 변조되거나 위조되는 것을 방지하고 신뢰성 있는 전자 투표 시스템을 제공할 수 있다.According to the embodiments of the present invention, electronic voting results can be prevented from being altered or falsified, and a reliable electronic voting system can be provided.

도 1은 본 발명의 일 실시예에 따른 전자 투표 시스템(100)의 구성을 설명하기 위한 블록도
도 2는 본 발명의 일 실시예에 따른 초기 블록(Genesis Block)의 구조를 설명하기 위한 예시도
도 3은 본 발명의 일 실시예에 따른 일반 블록의 구조를 설명하기 위한 예시도
도 4는 본 발명의 일 실시예에 따른 일반 트랜잭션 구조를 설명하기 위한 예시도
도 5는 본 발명의 일 실시예에 따른 베이스(Base) 트랜잭션 구조를 설명하기 위한 예시도
도 6은 본 발명의 일 실시예에 따른 각 투표 노드에서의 투표 및 일반 트랜잭션 생성 과정을 설명하기 위한 흐름도
도 7은 본 발명의 일 실시예에 따른 각 투표 노드에서의 일반 트랜잭션 검증 과정을 설명하기 위한 흐름도
도 8은 본 발명의 일 실시예에 따른 각 집계 노드, 또는 선거 관리 노드에서의 일반 트랜잭션 검증, 수집 및 블록 생성 과정(800)을 설명하기 위한 흐름도
도 9는 본 발명의 일 실시예에 따른 각 투표 노드, 집계 노드, 또는 선거 관리 노드에서의 블록 검증 과정(900)을 설명하기 위한 흐름도
도 10은 본 발명의 일 실시예에 따른 전자 투표 시스템에서 전술한 과정을 거쳐 블록 체인을 형성하는 과정을 설명하기 위한 예시도
1 is a block diagram illustrating a configuration of an electronic voting system 100 according to an embodiment of the present invention.
2 is an exemplary diagram for explaining the structure of an initial block (Genesis Block) according to an embodiment of the present invention.
3 is an exemplary diagram illustrating a structure of a general block according to an embodiment of the present invention.
4 is an exemplary diagram illustrating a general transaction structure according to an embodiment of the present invention.
5 is an exemplary diagram for explaining a base transaction structure according to an embodiment of the present invention.
FIG. 6 is a flowchart illustrating a process of generating a vote and a general transaction in each voting node according to an embodiment of the present invention.
7 is a flowchart for explaining a general transaction verification process in each voting node according to an embodiment of the present invention.
8 is a flowchart illustrating a general transaction verification, collection and block generation process 800 at each aggregation node or election management node according to an embodiment of the present invention.
9 is a flowchart illustrating a block verification process 900 at each voting node, an aggregation node, or an election management node according to an embodiment of the present invention.
10 is an exemplary diagram for explaining a process of forming a block chain in the electronic voting system according to an embodiment of the present invention through the above-

이하, 도면을 참조하여 본 발명의 구체적인 실시형태를 설명하기로 한다. 이하의 상세한 설명은 본 명세서에서 기술된 방법, 장치 및/또는 시스템에 대한 포괄적인 이해를 돕기 위해 제공된다. 그러나 이는 예시에 불과하며 본 발명은 이에 제한되지 않는다.Hereinafter, specific embodiments of the present invention will be described with reference to the drawings. The following detailed description is provided to provide a comprehensive understanding of the methods, apparatus, and / or systems described herein. However, this is merely an example and the present invention is not limited thereto.

본 발명의 실시예들을 설명함에 있어서, 본 발명과 관련된 공지기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략하기로 한다. 그리고, 후술되는 용어들은 본 발명에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다. 상세한 설명에서 사용되는 용어는 단지 본 발명의 실시예들을 기술하기 위한 것이며, 결코 제한적이어서는 안 된다. 명확하게 달리 사용되지 않는 한, 단수 형태의 표현은 복수 형태의 의미를 포함한다. 본 설명에서, "포함" 또는 "구비"와 같은 표현은 어떤 특성들, 숫자들, 단계들, 동작들, 요소들, 이들의 일부 또는 조합을 가리키기 위한 것이며, 기술된 것 이외에 하나 또는 그 이상의 다른 특성, 숫자, 단계, 동작, 요소, 이들의 일부 또는 조합의 존재 또는 가능성을 배제하도록 해석되어서는 안 된다.DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS Hereinafter, exemplary embodiments of the present invention will be described in detail with reference to the accompanying drawings. In the following description, well-known functions or constructions are not described in detail since they would obscure the invention in unnecessary detail. The following terms are defined in consideration of the functions of the present invention, and may be changed according to the intention or custom of the user, the operator, and the like. Therefore, the definition should be based on the contents throughout this specification. The terms used in the detailed description are intended only to describe embodiments of the invention and should in no way be limiting. Unless specifically stated otherwise, the singular form of a term includes plural forms of meaning. In this description, the expressions " comprising " or " comprising " are intended to indicate certain features, numbers, steps, operations, elements, parts or combinations thereof, Should not be construed to preclude the presence or possibility of other features, numbers, steps, operations, elements, portions or combinations thereof.

도 1은 본 발명의 일 실시예에 따른 전자 투표 시스템(100)의 구성을 설명하기 위한 블록도이다. 도시된 바와 같이, 본 발명의 일 실시예에 다른 전자 투표 시스템(100)은 하나 이상의 투표 노드(102), 하나 이상의 집계 노드(104) 및 선거 관리 노드(106)를 포함한다.1 is a block diagram for explaining a configuration of an electronic voting system 100 according to an embodiment of the present invention. As shown, an electronic voting system 100 in accordance with an embodiment of the present invention includes one or more voting nodes 102, one or more aggregation nodes 104, and an election management node 106.

투표 노드(102)(Voter Node, 또는 VN으로 줄여 칭함)는 전자 투표에 참여하는 투표자가 사용하는 단말이다. 일 실시예에서, 투표 노드(102)는 투표소 등에 설치된 투표 전용 장치일 수 있다. 다른 실시예에서, 투표 노드(102)는 투표자가 사용하는 데스크탑 컴퓨터, 노트북 컴퓨터, 태블릿, 스마트폰 등의 컴퓨팅 장치일 수 있다. 전자 투표시 투표자 인증을 위하여, 각 투표자들은 전자 투표일 이전에 별도의 투표자 검증 시스템(미도시)을 통하여 유권자 자격 검증 절차를 수행하고 PIN 번호를 부여받을 수 있다. 예를 들어, 상기 투표자 검증 시스템은 정부 기관, 또는 전자투표를 관리하는 별도의 공공 기관 등에서 제공되는 시스템일 수 있다. 보안을 위하여 PIN 번호와 각 유권자(투표자)의 개인 정보는 각각 다른 저장소에 저장될 수 있다. \해당 선거에 입후보한 후보자들은 그들의 공개키 해시값을 공개하기 위하여 투표 노드(102)를 이용하여 선거일 이전에 미리 투표를 진행할 수 있다.A voting node 102 (abbreviated as Voter Node or VN) is a terminal used by voters participating in electronic voting. In one embodiment, the voting node 102 may be a voting device, such as a polling place. In another embodiment, the voting node 102 may be a computing device, such as a desktop computer, a notebook computer, a tablet, a smartphone, etc., used by the voter. For voter authentication in electronic voting, each voter can conduct a voter qualification procedure and receive a PIN number through a separate voter verification system (not shown) before the electronic voting day. For example, the voter verification system may be a system provided by a government agency, or a separate public entity that manages electronic voting. For security purposes, the PIN number and the personal information of each voter (voter) can be stored in different repositories. Candidates wishing to run for the election may vote in advance of the election day using the ballot node 102 to publish their public key hash value.

일 실시예에서, 투표 노드(102)는 투표자의 투표(선거에 입후보한 후보자들 중 어느 하나의 후보자를 선택하는 행위)에 따라 트랜잭션(transaction)을 생성한다. 이때 투표 노드(102)가 생성하는 트랜잭션은 후술할 베이스 트랜잭션과의 구분을 위하여 일반 트랜잭션이라고 칭하기로 한다. 또한, 투표 노드(102)는 타 투표 노드가 생성한 일반 트랜잭션 및 집계 노드(104)가 생성한 블록을 검증하는 역할을 수행한다.In one embodiment, the voting node 102 generates a transaction in accordance with a voter's vote (the act of selecting one of the candidate candidates for the election). At this time, the transaction generated by the voting node 102 will be referred to as a general transaction in order to distinguish it from a base transaction to be described later. The voting node 102 also verifies the general transaction generated by the other voting node and the block generated by the aggregation node 104.

집계 노드(104)(Aggregator Node, 또는 AN으로 줄여 칭함)는 투표 노드(102)가 생성한 일반 트랜잭션을 검증하고, 검증된 일반 트랜잭션을 수집하여 블록을 생성한다. 또한 집계 노드(104)는 타 집계 노드가 생성한 블록을 검증하는 역할을 수행한다.An aggregator node 104 (abbreviated as an Aggregator Node) verifies the generic transaction generated by the voting node 102, and collects the verified generic transaction to generate a block. In addition, the aggregation node 104 performs a role of verifying blocks generated by other aggregation nodes.

선거 관리 노드(106)(Electoral Authority Node, 또는 EAN으로 줄여 칭함)는 전자 투표를 관리하는 주체에서 사용하는 단말이다. 선거 관리 노드(106)는 초기 블록(Genesis Block)을 생성하여 이를 네트워크를 통해 배포한다. 일 실시예에서, 초기 블록은 전자 투표의 결과로 생성되는 블록 체인(Block Chain)을 구성하는 가장 첫 번째 블록으로서, 전자 투표와 관련된 기본 정보를 포함한다.An electoral authority node 106 (abbreviated as EAN) is a terminal used in a subject who manages electronic voting. The election management node 106 generates an initial block (Genesis Block) and distributes it through the network. In one embodiment, the initial block is the first block of a block chain that is generated as a result of electronic voting, including basic information related to electronic voting.

또한, 선거 관리 노드(106)는 전자 투표 과정에서 집계 노드(104)와 마찬가지로 투표 노드(102)가 생성한 일반 트랜잭션을 검증하고, 검증된 일반 트랜잭션을 수집하여 블록을 생성하며, 타 집계 노드가 생성한 블록을 검증하는 역할을 수행한다.In addition, the election management node 106 verifies the generic transaction generated by the voting node 102 as well as the aggregation node 104 in the electronic voting process, collects the verified general transaction to generate a block, It verifies the generated block.

일 실시예에서, 하나 이상의 투표 노드(102), 하나 이상의 집계 노드(104) 및 선거 관리 노드(106)는 하나 이상의 프로세서 및 그 프로세서와 연결된 컴퓨터 판독 가능 기록 매체를 포함하는 컴퓨팅 장치 상에서 구현될 수 있다. 컴퓨터 판독 가능 기록 매체는 프로세서의 내부 또는 외부에 있을 수 있고, 잘 알려진 다양한 수단으로 프로세서와 연결될 수 있다. 컴퓨팅 장치 내의 프로세서는 각 컴퓨팅 장치로 하여금 본 명세서에서 기술되는 예시적인 실시예에 따라 동작하도록 할 수 있다. 예를 들어, 프로세서는 컴퓨터 판독 가능 기록 매체에 저장된 명령어를 실행할 수 있고, 컴퓨터 판독 가능 기록 매체에 저장된 명령어는 프로세서에 의해 실행되는 경우 컴퓨팅 장치로 하여금 본 명세서에 기술되는 예시적인 실시예에 따른 동작들을 수행하도록 구성될 수 있다.In one embodiment, one or more voting nodes 102, one or more aggregation nodes 104 and an election management node 106 may be implemented on a computing device that includes one or more processors and a computer readable recording medium coupled to the processor have. The computer readable recording medium may be internal or external to the processor, and may be coupled to the processor by any of a variety of well known means. A processor in the computing device may cause each computing device to operate in accordance with the exemplary embodiment described herein. For example, a processor may execute instructions stored on a computer-readable recording medium, and instructions stored on the computer readable recording medium may cause a computing device to perform operations in accordance with the exemplary embodiments described herein For example.

한편, 하나 이상의 투표 노드(102), 하나 이상의 집계 노드(104) 및 선거 관리 노드(106)는 통신 네트워크(108)를 통하여 서로 데이터를 송수신할 수 있다. 몇몇 실시예들에서, 통신 네트워크는 인터넷, 하나 이상의 로컬 영역 네트워크(local area networks), 광역 네트워크(wire area networks), 셀룰러 네트워크, 모바일 네트워크, 그 밖에 다른 종류의 네트워크들, 또는 이러한 네트워크들의 조합을 포함할 수 있다.On the one hand, one or more voting nodes 102, one or more aggregation nodes 104, and election management node 106 may send and receive data to each other via communications network 108. In some embodiments, the communication network may be an Internet, one or more local area networks, a wire area networks, a cellular network, a mobile network, other types of networks, .

도 2는 본 발명의 일 실시예에 따른 초기 블록(Genesis Block)의 구조를 설명하기 위한 예시도이다. 전술한 바와 같이, 본 발명의 실시예들에서 초기 블록은 블록 체인을 구성하는 가장 첫 번째 블록으로서, 전자 투표와 관련된 기본 정보를 포함한다. 이와 같은 초기 블록은 선거 관리 노드(106)에 의해서만 생성될 수 있다. 도시된 바와 같이, 본 발명의 일 실시예에 따른 초기 블록은 헤더(Header) 영역 및 트랜잭션(Transaction) 영역을 포함한다.2 is an exemplary diagram illustrating a structure of an initial block according to an embodiment of the present invention. As described above, in the embodiments of the present invention, the initial block is the first block constituting the block chain, and includes basic information related to electronic voting. Such an initial block may only be generated by the election management node 106. As shown, an initial block according to an embodiment of the present invention includes a header area and a transaction area.

먼저, 헤더 영역에 포함되는 항목은 다음과 같다.First, the items included in the header area are as follows.

- Block ID: 초기 블록을 다른 블록과 구별하기 위한 식별자이다.- Block ID: This is an identifier for distinguishing the initial block from other blocks.

- Block Type: 해당 블록이 초기 블록인지, 또는 일반 블록인지를 구별하기 위한 값이 저장된다.- Block Type: A value for distinguishing whether the block is an initial block or a general block is stored.

- Previous Hash: 본 블록과 연결된 이전 블록의 해시값이 저장되는 영역이나, 초기 블록의 경우 이전 블록이 없으므로 본 항목은 아무런 값도 가지지 않는다.- Previous Hash: This field has no value because there is no previous block in the area where the hash value of the previous block connected with this block is stored or the initial block.

- Version: 전자 투표에 사용되는 블록체인의 버전을 나타낸다.- Version: Indicates the version of the block chain used for electronic voting.

- Merkle Root: 초기 블록에 포함된 트랜잭션으로부터 생성된 머클 트리(Merkle Tree)의 루트 해시값이 저장된다.- Merkle Root: The root hash value of the Merkle Tree created from the transactions contained in the initial block is stored.

- Timestamp: 초기 블록의 생성 시각을 나타낸다.- Timestamp: Indicates the creation time of the initial block.

- All number of Voters: 해당 선거에 참여하기 위하여 PIN을 지급받은 총 유권자 수를 나타낸다.- All number of Voters: Indicates the total number of voters who received a PIN to participate in the election.

- EAN Signature: 선거 관리 노드(Electoral Authority Node)의 서명값이다.- EAN Signature: The signature value of the Electoral Authority Node.

초기 블록의 트랜잭션 영역에는 다음의 두 개의 트랜잭션을 포함한다.The transaction area of the initial block contains the following two transactions:

- 1번째 트랜잭션(Tx1): 적합한 검증 절차를 통해 선정된 집계 노드들의 공개키들을 포함하는 트랜잭션이다.- first transaction (Tx1): a transaction that contains the public keys of selected aggregation nodes through an appropriate validation procedure.

- 2번째 트랜잭션(Tx2): 해당 선거에 입후보한 후보자들의 공개키 해시를 포함하는 트랜잭션이다.The second transaction (Tx2) is a transaction that contains the public key hash of candidates for the election.

도 3은 본 발명의 일 실시예에 따른 일반 블록의 구조를 설명하기 위한 예시도이다. 본 발명의 실시예들에서, 일반 블록은 초기 블록 이후에 생성되는 블록으로서, 각 투표 노드(102)의 투표시 생성되는 트랜잭션이 저장된다. 일반 블록 또한 초기 블록과 마찬가지로 헤더(Header) 영역 및 트랜잭션(Transaction) 영역을 포함한다.3 is an exemplary diagram illustrating a structure of a general block according to an embodiment of the present invention. In the embodiments of the present invention, a normal block is a block generated after an initial block, and a transaction generated at the time of voting of each voting node 102 is stored. The normal block also includes a header area and a transaction area as in the initial block.

먼저, 일반 블록의 헤더 영역에 포함되는 항목은 다음과 같다.First, the items included in the header area of the general block are as follows.

- Block ID: 해당 일반 블록을 다른 블록과 구별하기 위한 식별자이다.- Block ID: It is an identifier to distinguish the general block from other blocks.

- Block Type: 해당 블록이 초기 블록인지, 또는 일반 블록인지를 구별하기 위한 값이 저장된다.- Block Type: A value for distinguishing whether the block is an initial block or a general block is stored.

- Previous Hash: 본 블록과 연결된 이전 블록의 해시값이 저장되는 영역이다.- Previous Hash: This area stores the hash value of the previous block connected with this block.

- Version: 전자 투표에 사용되는 블록체인의 버전을 나타낸다.- Version: Indicates the version of the block chain used for electronic voting.

- Merkle Root: 일반 블록에 포함된 트랜잭션들로부터 생성된 머클 트리(Merkle Tree)의 루트 해시값이 저장된다.- Merkle Root: Stores the root hash value of the Merkle Tree generated from the transactions contained in the normal block.

- Timestamp: 해당 일반 블록의 생성 시각을 나타낸다.- Timestamp: Indicates the generation time of the normal block.

- Transaction Count: 해당 일반 블록에 포함되는 트랜잭션의 수를 나타낸다.- Transaction Count: It indicates the number of transactions included in the general block.

- Signatures: 해당 일반 블록을 검증한 노드(투표 노드, 집계 노드, 선거 관리 노드)의 서명값이 저장된다.- Signatures: The signature values of nodes (voting node, aggregation node, election management node) that verified the general block are stored.

일반 블록의 트랜잭션 영역에는 투표 노드에서 수행된 각 유권자들의 투표 결과가 트랜잭션 형태로 저장된다. 즉, 본 발명의 실시예에서 하나의 트랜잭션은 유권자들의 한 표와 대응된다.In the transaction area of the normal block, the voting results of each voter performed at the voting node are stored in transaction form. That is, in the embodiment of the present invention, one transaction corresponds to one vote of the voters.

도 4는 본 발명의 일 실시예에 따른 일반 트랜잭션 구조를 설명하기 위한 예시도이다. 전술한 바와 같이, 본 발명의 실시예들에서 일반 트랜잭션은 투표 노드(102)에서의 투표 과정에서 생성되는 트랜잭션이다. 도시된 바와 같이, 본 발명의 일 실시예에 따른 일반 트랜잭션은 헤더(Header)와 본문(Body)을 포함한다.4 is an exemplary diagram illustrating a general transaction structure according to an embodiment of the present invention. As described above, in the embodiments of the present invention, the generic transaction is a transaction generated in the voting process at the voting node 102. [ As shown, a general transaction according to an embodiment of the present invention includes a header and a body.

일반 트랜잭션의 헤더에는 다음과 같은 항목을 포함한다.The header of a generic transaction contains the following items:

- Transaction ID: 해당 일반 트랜잭션을 다른 트랜잭션과 구별하기 위한 식별자이다.- Transaction ID: It is an identifier to distinguish the general transaction from other transactions.

- Transaction Type: 해당 트랜잭션의 종류를 나타내는 식별자로서, 해당 트랜잭션이 일반 트랜잭션인지 또는 베이스(Base) 트랜잭션인지를 구분하기 위하여 사용된다.- Transaction Type: An identifier indicating the kind of transaction, and is used to distinguish whether the transaction is a general transaction or a base transaction.

- Version: 전자 투표에 사용되는 블록체인의 버전을 나타낸다.- Version: Indicates the version of the block chain used for electronic voting.

- Timestamp: 해당 일반 트랜잭션의 생성 시각을 나타낸다.- Timestamp: Indicates the creation time of the corresponding generic transaction.

일반 트랜잭션의 본문에는 다음과 같은 항목을 포함한다.The body of a generic transaction contains the following items:

- PIN: 해당 트랜잭션을 생성한 투표자가 유권자 검증절차를 거쳐 지급받은 PIN이 저장된다.- PIN: The PIN that the voter who generated the transaction has passed the voter verification procedure is stored.

- Candidate's Public Key Hash: 해당 트랜잭션을 생성한 투표자가 선택한 후보자의 공개키 해시값이 저장된다.- Candidate's Public Key Hash: The public key hash value of the candidate selected by the voter who created the transaction is stored.

- Voter's Signature: 해당 투표자의 개인키 서명값이 저장된다.- Voter's Signature: The voter's private key signature value is stored.

- Voter's Raw Public Key: 해당 투표자의 공개키이며, 서명값 검증을 위해 사용된다.- Voter's Raw Public Key: This is the public key of the voter and is used to verify the signature value.

도 5는 본 발명의 일 실시예에 따른 베이스(Base) 트랜잭션 구조를 설명하기 위한 예시도이다. 본 발명의 실시예들에서 베이스 트랜잭션은 기 설정된 블록 생성 주기마다 집계 노드(104)에 의하여 생성되는 트랜잭션이다. 도시된 바와 같이, 일반 트랜잭션과 마찬가지로, 본 발명의 일 실시예에 따른 일반 트랜잭션은 헤더(Header)와 본문(Body)을 포함한다.5 is an exemplary diagram illustrating a base transaction structure according to an embodiment of the present invention. In the embodiments of the present invention, the base transaction is a transaction generated by the aggregation node 104 every predetermined block generation period. As shown, the general transaction according to an exemplary embodiment of the present invention includes a header and a body.

베이스 트랜잭션의 헤더는 다음과 같은 항목을 포함한다.The header of the base transaction contains the following items.

- Transaction ID: 해당 베이스 트랜잭션을 다른 트랜잭션과 구별하기 위한 식별자이다.- Transaction ID: It is an identifier to distinguish the corresponding base transaction from other transactions.

- Transaction Type: 해당 트랜잭션의 종류를 나타내는 식별자로서, 해당 트랜잭션이 일반 트랜잭션인지 또는 베이스(Base) 트랜잭션인지를 구분하기 위하여 사용된다.- Transaction Type: An identifier indicating the kind of transaction, and is used to distinguish whether the transaction is a general transaction or a base transaction.

- Version: 전자 투표에 사용되는 블록체인의 버전을 나타낸다.- Version: Indicates the version of the block chain used for electronic voting.

- Timestamp: 해당 베이스 트랜잭션의 생성 시각을 나타낸다.- Timestamp: Indicates the creation time of the corresponding base transaction.

베이스 트랜잭션의 본문에는 다음과 같은 항목을 포함한다.The body of the base transaction contains the following items:

- Each Candidate's Public Key Hash: 각 후보자들의 공개키 해시값이다.Each Candidate's Public Key Hash is the public key hash value of each candidate.

- Each Candidate's Number of Votes: 해당 베이스 트랜잭션이 속한 블록 내 트랜잭션 집계 결과로서, 해당 블록 내에서 각 후보자들의 득표수를 나타낸다.- Each Candidate's Number of Votes: The number of votes for each candidate in the block as a result of the aggregation of transactions in the block to which the corresponding base transaction belongs.

도 6은 본 발명의 일 실시예에 따른 각 투표 노드(102)에서의 투표 및 일반 트랜잭션 생성 과정(600)을 설명하기 위한 흐름도이다. 도시된 흐름도에서는 상기 방법을 복수 개의 단계로 나누어 기재하였으나, 적어도 일부의 단계들은 순서를 바꾸어 수행되거나, 다른 단계와 결합되어 함께 수행되거나, 생략되거나, 세부 단계들로 나뉘어 수행되거나, 또는 도시되지 않은 하나 이상의 단계가 부가되어 수행될 수 있다.FIG. 6 is a flowchart illustrating a voting and generic transaction generation process 600 at each voting node 102 according to an embodiment of the present invention. In the illustrated flow chart, the method is described as being divided into a plurality of steps, but at least some of the steps may be performed in reverse order, combined with other steps, performed together, omitted, divided into detailed steps, One or more steps may be added and performed.

단계 602에서, 투표 노드(102)는 투표자로부터 PIN 번호를 입력받는다. 전술한 바와 같이, 상기 PIN 번호는 각 투표자들이 투표일 이전에 별도의 투표자 검증 시스템 등을 통하여 부여받은 것일 수 있다. In step 602, the voting node 102 receives the PIN number from the voter. As described above, the PIN number may be given to each voter through a separate voter verification system before the election day.

단계 604에서, 투표 노드(102)는 입력된 상기 PIN 번호의 유효성을 검증한다. 일 실시예에서, 투표 노드(102)는 상기 투표자 검증 시스템과 연계하여 상기 PIN 번호의 유효성을 검증하도록 구성될 수 있다.In step 604, the voting node 102 verifies the validity of the entered PIN number. In one embodiment, the voting node 102 may be configured to validate the PIN number in conjunction with the voter verification system.

만약 상기 604 단계의 수행 결과 입력된 PIN 번호의 유효성 검증에 성공한 경우, 단계 606에서 투표 노드(102)는 해당 선거에 입후보한 후보자들 중 하나의 후보자에 대한 투표자의 선택값을 입력받는다. 즉, 본 단계는 PIN 번호의 인증에 성공한 투표자가 실제 투표를 진행하는 단계이다. 이를 위하여 투표 노드(102)는 상기 투표자의 후보자 선택을 위한 적절한 사용자 인터페이스를 출력하도록 구성될 수 있다.If the verification of the validity of the entered PIN number is successful as a result of step 604, the voting node 102 receives the voter's selection value for one of the candidates for the election in step 606. That is, in this step, the voter who successfully authenticates the PIN number performs the actual voting. To this end, the voting node 102 may be configured to output an appropriate user interface for voter candidate selection.

한편 상기 604 단계의 수행 결과 입력된 PIN 번호의 유효성 검증에 성공하지 못한 경우, 단계 608에서 투표 노드(102)는 투표 과정을 종료하게 된다.On the other hand, if the verification of the validity of the entered PIN number is unsuccessful as a result of step 604, the voting node 102 terminates the voting process in step 608.

단계 610에서, 투표 노드(102)는 투표자의 PIN 번호 및 후보자 선택값을 포함하는 일반 트랜잭션을 생성한다. 상기 일반 트랜잭션의 상세 구성에 대해서는 도 4에서 설명한 바와 같다.In step 610, the voting node 102 creates a generic transaction that includes the voter ' s PIN number and the candidate selection value. The detailed configuration of the general transaction is as described in FIG.

단계 612에서, 투표 노드(102)는 생성된 상기 일반 트랜잭션을 타 노드로 송신한다. 본 발명의 실시예들에서, 투표 노드(102)에서 생성된 일반 트랜잭션은 타 투표 노드(102), 집계 노드(104) 또는 선거 관리 노드(106) 중 어느 하나로 전송될 수 있다.In step 612, the voting node 102 transmits the generated generic transaction to the other node. In embodiments of the present invention, the generic transaction generated at the voting node 102 may be transmitted to either the voting node 102, the aggregation node 104, or the election management node 106.

도 7은 본 발명의 일 실시예에 따른 각 투표 노드(102)에서의 일반 트랜잭션 검증 과정(700)을 설명하기 위한 흐름도이다. 도시된 흐름도에서는 상기 방법을 복수 개의 단계로 나누어 기재하였으나, 적어도 일부의 단계들은 순서를 바꾸어 수행되거나, 다른 단계와 결합되어 함께 수행되거나, 생략되거나, 세부 단계들로 나뉘어 수행되거나, 또는 도시되지 않은 하나 이상의 단계가 부가되어 수행될 수 있다.FIG. 7 is a flowchart illustrating a general transaction verification process 700 at each voting node 102 in accordance with an embodiment of the present invention. In the illustrated flow chart, the method is described as being divided into a plurality of steps, but at least some of the steps may be performed in reverse order, combined with other steps, performed together, omitted, divided into detailed steps, One or more steps may be added and performed.

단계 702에서, 투표 노드(102)는 전자 투표에 참여하는 타 투표 노드로부터 일반 트랜잭션을 수신한다.At step 702, the voting node 102 receives a generic transaction from another voting node participating in the electronic voting.

단계 704에서, 투표 노드(102)는 해당 시점의 블록 체인에 수신된 상기 일반 트랜잭션에 포함된 PIN 번호와 중복되는 PIN 번호가 존재하는지의 여부를 판단한다.In step 704, the voting node 102 determines whether there is a PIN number that overlaps with the PIN number included in the general transaction received in the block chain at that point in time.

상기 704 단계의 판단 결과 중복된 PIN 번호가 존재하지 않는 경우, 단계 706에서 투표 노드(102)는 상기 일반 트랜잭션에 포함된 후보자의 공개키 해시값이 유효한지의 여부를 판단한다. 일 실시예에서, 투표 노드(102)는 상기 일반 트랜잭션에 포함된 후보자의 공개키 해시값을 초기 블록의 공개키 해시값과 비교하여 상기 유효성 여부를 판단할 수 있다.If it is determined in step 704 that there is no duplicated PIN number, the voting node 102 determines in step 706 whether the public key hash value of the candidate included in the general transaction is valid. In one embodiment, the voting node 102 may determine the validity of the candidate by comparing the candidate's public key hash value included in the generic transaction with the public key hash value of the initial block.

상기 706 단계의 판단 결과 상기 공개키 해시값이 유효한 경우, 단계 708에서 투표 노드(102)는 상기 일반 트랜잭션에 포함된 투표자의 개인키 서명값을 검증한다. 일 실시예에서, 투표 노드는 상기 일반 트랜잭션에 포함된 투표자의 공개키를 이용하여 상기 개인키 서명값을 검증할 수 있다.If it is determined in step 706 that the public key hash value is valid, the voting node 102 verifies the voter's private key signature value included in the general transaction in step 708. In one embodiment, the voting node may verify the private key signature value using the voter ' s public key included in the generic transaction.

상기 708 단계의 수행 결과 상기 개인키 서명값의 검증에 성공한 경우, 단계 710에서 투표 노드(102)는 수신한 상기 일반 트랜잭션을 타 노드로 송신한다. 본 발명의 실시예들에서, 투표 노드(102)는 상기 일반 트랜잭션을 타 투표 노드(102), 집계 노드(104) 또는 선거 관리 노드(106) 중 어느 하나로 전송할 수 있다.If verification of the private key signature value is successful as a result of step 708, the voting node 102 transmits the received general transaction to another node in step 710. In embodiments of the present invention, the voting node 102 may send the generic transaction to either the voting node 102, the aggregation node 104, or the election management node 106.

한편, 상기 704 단계에서 중복된 PIN 번호가 존재하거나, 상기 706 단계에서 공개키 해시값이 유효하지 않거나, 또는 상기 708 단계에서 서명값 검증에 실패한 경우, 단계 712에서 투표 노드(102)는 수신된 상기 일반 트랜잭션을 폐기한다.If the PIN number is duplicated in step 704, the public key hash value is not valid in step 706, or the signature value verification fails in step 708, then in step 712, the voting node 102 transmits the received The general transaction is discarded.

도 8은 본 발명의 일 실시예에 따른 각 집계 노드(104), 또는 선거 관리 노드(106)에서의 일반 트랜잭션 검증, 수집 및 블록 생성 과정(800)을 설명하기 위한 흐름도이다. 이하의 설명에서는 편의를 위해 집계 노드(104)에서 일반 트랜잭션을 검증하고 블록을 생성하는 것으로 가정하였으나, 이하의 단계들은 각 투표 노드(102) 및 선거 관리 노드(106)에서도 동일하게 수행될 수 있다. 도시된 흐름도에서는 상기 방법을 복수 개의 단계로 나누어 기재하였으나, 적어도 일부의 단계들은 순서를 바꾸어 수행되거나, 다른 단계와 결합되어 함께 수행되거나, 생략되거나, 세부 단계들로 나뉘어 수행되거나, 또는 도시되지 않은 하나 이상의 단계가 부가되어 수행될 수 있다.FIG. 8 is a flow diagram illustrating a general transaction validation, collection, and block generation process 800 at each aggregation node 104, or election management node 106, in accordance with an embodiment of the present invention. In the following description, it is assumed that the aggregation node 104 verifies the generic transaction and generates a block for convenience. However, the following steps may be performed in the same manner at each of the voting node 102 and the election management node 106 . In the illustrated flow chart, the method is described as being divided into a plurality of steps, but at least some of the steps may be performed in reverse order, combined with other steps, performed together, omitted, divided into detailed steps, One or more steps may be added and performed.

단계 802에서, 집계 노드(104)는 전자 투표에 참여하는 투표 노드(102)로부터 일반 트랜잭션을 수신한다.At step 802, the aggregation node 104 receives a generic transaction from the voting node 102 participating in the electronic voting.

단계 804에서, 집계 노드(104)는 해당 시점에 생성 중인 블록에 이미 포함되어 있는 일반 트랜잭션 중 상기 802 단계에서 수신된 일반 트랜잭션의 PIN 번호와 중복되는 PIN 번호가 존재하는지의 여부를 판단한다.In step 804, the aggregation node 104 determines whether there is a PIN number that overlaps with the PIN number of the general transaction received in step 802 among the general transactions already included in the block currently being generated.

상기 804 단계의 판단 결과 중복된 PIN 번호가 존재하지 않는 경우, 단계 806에서 집계 노드(104)는 상기 일반 트랜잭션에 포함된 후보자의 공개키 해시값이 유효한지의 여부를 판단한다. 일 실시예에서, 집계 노드(104)는 상기 일반 트랜잭션에 포함된 후보자의 공개키 해시값을 초기 블록의 공개키 해시값과 비교하여 상기 유효성 여부를 판단할 수 있다.If it is determined in step 804 that there is no duplicated PIN number, the aggregation node 104 determines whether the public key hash value of the candidate included in the general transaction is valid in step 806. In one embodiment, the aggregation node 104 may compare the public key hash value of the candidate contained in the generic transaction with the public key hash value of the initial block to determine the validity.

상기 806 단계의 판단 결과 상기 공개키 해시값이 유효한 경우, 단계 808에서 집계 노드(104)는 상기 일반 트랜잭션에 포함된 투표자의 개인키 서명값을 검증한다. 일 실시예에서, 투표 노드는 상기 일반 트랜잭션에 포함된 투표자의 공개키를 이용하여 상기 개인키 서명값을 검증할 수 있다.If it is determined in step 806 that the public key hash value is valid, the aggregation node 104 verifies the private key signature value of the voter included in the general transaction in step 808. In one embodiment, the voting node may verify the private key signature value using the voter ' s public key included in the generic transaction.

상기 808 단계의 수행 결과 상기 개인키 서명값의 검증에 성공한 경우, 단계 810에서 집계 노드(104)는 수신된 상기 일반 트랜잭션을 집계 노드(104)에서 현재 생성중인 블록에 추가한다.If the verification of the private key signature value is successful as a result of step 808, the aggregation node 104 adds the received general transaction to the block currently being generated in the aggregation node 104 in step 810.

한편, 상기 804 단계에서 중복된 PIN 번호가 존재하거나, 상기 806 단계에서 공개키 해시값이 유효하지 않거나, 또는 상기 808 단계에서 서명값 검증에 실패한 경우, 단계 812에서 집계 노드(104)는 수신된 상기 일반 트랜잭션을 폐기한다.If the PIN number is duplicated in step 804, the public key hash value is not valid in step 806, or the signature value verification fails in step 808, in step 812, the aggregation node 104 transmits the received PIN number The general transaction is discarded.

단계 814에서, 집계 노드(104)는 기 설정된 블록 생성 주기에 도달했는지의 여부를 판단한다. 만약 아직 블록 생성 주기가 아닌 경우, 집계 노드(104)는 802 단계로 돌아가 일반 트랜잭션의 수집하고 검증하는 과정을 반복한다. In step 814, the aggregation node 104 determines whether or not a predetermined block generation period has been reached. If not yet, the aggregation node 104 returns to step 802 and repeats the process of collecting and verifying the generic transaction.

만약 상기 814 단계의 판단 결과 블록 생성 주기에 도달한 경우, 단계 816에서 집계 노드(104)는 일반 트랜잭션 수집을 멈추고 베이스 트랜잭션을 생성한다. 전술한 바와 같이, 상기 베이스 트랜잭션은 현재 생성된 블록의 마지막 트랜잭션으로서, 해당 블록 내에서의 각 후보자들의 득표수 집계 결과를 포함한다.If it is determined in step 814 that the block generation period has been reached, the aggregation node 104 stops the general transaction collection and generates a base transaction in step 816. As described above, the base transaction is the last transaction of the currently generated block, and includes the result of counting the number of votes of each candidate in the block.

단계 816에서, 집계 노드(104)는 생성된 상기 블록을 타 노드로 송신한다. 본 발명의 실시예들에서, 집계 노드(104)는 상기 블록을 타 투표 노드(102), 집계 노드(104) 또는 선거 관리 노드(106) 중 어느 하나로 전송할 수 있다.In step 816, the aggregation node 104 transmits the generated block to another node. In embodiments of the present invention, the aggregation node 104 may send the block to any of the voting node 102, the aggregation node 104, or the election management node 106.

도 9는 본 발명의 일 실시예에 따른 각 투표 노드(102), 집계 노드(104), 또는 선거 관리 노드(106)에서의 블록 검증 과정(900)을 설명하기 위한 흐름도이다. 이하의 설명에서는 편의를 위해 집계 노드(104)에서 블록을 검증하는 것으로 가정하였으나, 이하의 단계들은 각 투표 노드(102) 및 선거 관리 노드(106)에서도 동일하게 수행될 수 있다. 도시된 흐름도에서는 상기 방법을 복수 개의 단계로 나누어 기재하였으나, 적어도 일부의 단계들은 순서를 바꾸어 수행되거나, 다른 단계와 결합되어 함께 수행되거나, 생략되거나, 세부 단계들로 나뉘어 수행되거나, 또는 도시되지 않은 하나 이상의 단계가 부가되어 수행될 수 있다.FIG. 9 is a flow diagram illustrating a block verification process 900 at each voting node 102, aggregation node 104, or election management node 106, in accordance with an embodiment of the present invention. In the following description, it is assumed that the aggregation node 104 verifies the block for the sake of convenience. However, the following steps may be performed in the voting node 102 and the election management node 106 as well. In the illustrated flow chart, the method is described as being divided into a plurality of steps, but at least some of the steps may be performed in reverse order, combined with other steps, performed together, omitted, divided into detailed steps, One or more steps may be added and performed.

단계 902에서, 집계 노드(104)는 타 노드로부터 블록을 수신한다. 본 발명의 실시예들에서, 집계 노드(104)는 타 투표 노드(102), 집계 노드(104) 또는 선거 관리 노드(106) 중 어느 하나로부터 블록을 수신할 수 있다.At step 902, the aggregation node 104 receives the block from the other node. In embodiments of the present invention, the aggregation node 104 may receive a block from either the voting node 102, the aggregation node 104, or the election management node 106.

단계 904에서, 집계 노드(104)는 수신된 블록에 포함된 베이스 트랜잭션의 총 투표수가 실제 블록이 포함하고 있는 트랜잭션으로부터 계산된 총 투표수와 일치하는지 여부를 판단한다.At step 904, the aggregation node 104 determines whether the total number of votes of the base transaction included in the received block matches the total number of votes calculated from the transaction that the actual block contains.

상기 904 단계의 판단 결과 일치하는 경우, 단계 906에서 집계 노드(104)는 베이스 트랜잭션에 기록된 각 후보자별 득표수가 실제 블록이 포함하고 있는 트랜잭션으로부터 계산된 각 후보자별 득표수와 일치하는지 여부를 판단한다.If it is determined in step 904 that the numbers match, the aggregation node 104 determines in step 906 whether or not the number of votes for each candidate recorded in the base transaction matches the number of votes for each candidate calculated from the transaction included in the actual block do.

상기 906 단계의 판단 결과 일치하는 경우, 단계 908에서 집계 노드(104)는 블록 체인을 조회하여 블록 내에 포함된 PIN 번호 중 상기 블록 체인에 포함된 PIN 번호와 중복된 PIN 번호가 존재하는지의 여부를 판단한다.If it is determined in step 906, the aggregation node 104 inquires of the block chain in step 908 and determines whether there is a PIN number included in the block chain among the PIN numbers included in the block .

상기 908 단계의 판단 결과 중복된 PIN 번호가 존재하지 않는 경우, 단계 910에서 집계 노드(104)는 블록에 저장된 머클 루트 해시값을 검증함으로써 블록 내 트랜잭션의 위변조 여부를 확인한다.If it is determined in step 908 that the duplicated PIN number does not exist, the aggregation node 104 verifies whether the transaction in the block is forged or not by verifying the hash value stored in the block in step 910.

상기 910 단계의 검증 결과 머클 루트 해시값의 검증에 성공하는 경우, 단계 912에서 집계 노드(104)는 수신된 블록의 헤더에 자신의 서명값을 추가한다.If verification of the muckle hash value is successful in step 910, the aggregation node 104 adds its signature value to the header of the received block in step 912.

한편, 상기 904 단계에서 총 투표수가 일치하지 않거나, 상기 906 단계에서 후보자별 득표수가 일치하지 않거나, 상기 908 단계에서 중복된 PIN 번호가 존재하거나, 또는 상기 910 단계에서 머클 루트 해시값의 검증에 실패한 경우, 단계 914에서 집계 노드(104)는 수신된 블록을 폐기한다.On the other hand, if the total number of votes does not match in step 904, the number of votes of each candidate does not match in step 906, the PIN number exists in step 908, or the verification of the muckle root hash value fails in step 910 In step 914, the aggregation node 104 discards the received block.

단계 916에서, 집계 노드(104)는 블록에 포함된 서명의 개수가 임계값 이상인지의 여부를 판단한다. 예를 들어, 상기 임계값은 상기 전자 투표에 참여하는 네트워크 내 전체 노드의 개수의 50%로 설정될 수 있다. 다만 본 발명의 실시예들은 특정 임계값에 한정되는 것은 아니다.At step 916, the aggregation node 104 determines whether the number of signatures included in the block is greater than or equal to a threshold value. For example, the threshold may be set to 50% of the total number of nodes in the network participating in the electronic voting. However, the embodiments of the present invention are not limited to specific threshold values.

상기 916 단계의 판단 결과 서명 개수가 임계값 이상인 경우, 단계 918에서 집계 노드(104)는 수신된 블록을 블록 체인에 연결한다.If it is determined in step 916 that the number of signatures is greater than or equal to the threshold value, the aggregation node 104 connects the received block to the block chain in step 918.

이와 달리 상기 916 단계의 판단 결과 서명 개수가 임계값 미만인 경우, 단계 920에서 집계 노드(104)는 수신된 상기 블록을 타 노드로 송신한다. 본 발명의 실시예들에서, 집계 노드(104)는 상기 블록을 타 투표 노드(102), 집계 노드(104) 또는 선거 관리 노드(106) 중 어느 하나로 전송할 수 있다.On the other hand, if it is determined in step 916 that the number of signatures is less than the threshold value, the aggregation node 104 transmits the received block to another node in step 920. In embodiments of the present invention, the aggregation node 104 may send the block to any of the voting node 102, the aggregation node 104, or the election management node 106.

도 10은 본 발명의 일 실시예에 따른 전자 투표 시스템(100)에서 전술한 과정을 거쳐 블록 체인을 형성하는 과정을 설명하기 위한 예시도이다. 도시된 바와 같이, 투표 노드(102)에서의 투표자들의 투표 결과 일반 트랜잭션 TX1, TX2, TX3이 생성된다. 이 중 TX1, TX2는 집계 노드(104)에 의해 블록 2001에 추가되고, TX3은 다른 집계 노드(104)에 의해 블록 2002에 추가된다. 블록 생성 주기가 되면, 블록 2001을 생성한 집계 노드(104)는 TX1, TX2의 투표 결과를 종합하여 베이스 트랜잭션 BTX를 생성하여 블록 2001의 마지막 트랜잭션으로 추가하고 해당 블록을 블록 체인에 연결한다. 블록 체인의 첫 번째 블록인 Block 0은 초기 블록에 해당하며, Block 1부터는 일반 블록이 된다.FIG. 10 is an exemplary diagram illustrating a process of forming a block chain in the electronic voting system 100 according to an embodiment of the present invention. As shown, voting results at the voting node 102 result in generic transactions TX1, TX2, and TX3. Of these, TX1 and TX2 are added to block 2001 by the aggregation node 104, and TX3 is added to the block 2002 by another aggregation node 104. [ When the block generation cycle is reached, the aggregation node 104 generating the block 2001 generates a base transaction BTX based on the voting results of TX1 and TX2, adds it to the last transaction of the block 2001, and connects the block to the block chain. Block 0, which is the first block of the block chain, corresponds to the initial block.

이와 같이 블록 체인을 이용하여 투표 결과를 집계할 경우 악의적인 사용자가 투표 결과를 위조하거나 변조하는 것이 사실상 불가능하게 된다. 따라서 본 발명의 실시예들에 따를 경우 전자 투표에 있어 신뢰성과 안정성을 담보할 수 있다.In this way, when the voting results are aggregated using a block chain, it is virtually impossible for a malicious user to forge or tamper with the results of the voting. Therefore, according to the embodiments of the present invention, reliability and stability in electronic voting can be ensured.

본 발명의 실시예는 본 명세서에서 기술한 방법들을 컴퓨터상에서 수행하기 위한 프로그램, 및 상기 프로그램을 포함하는 컴퓨터 판독 가능 기록매체를 포함할 수 있다. 상기 컴퓨터 판독 가능 기록매체는 프로그램 명령, 로컬 데이터 파일, 로컬 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체는 본 발명을 위하여 특별히 설계되고 구성된 것들이거나, 또는 컴퓨터 소프트웨어 분야에서 통상적으로 사용 가능한 것일 수 있다. 컴퓨터 판독 가능 기록매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체, CD-ROM, DVD와 같은 광 기록 매체, 및 롬, 램, 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 상기 프로그램의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함할 수 있다.An embodiment of the present invention may include a program for performing the methods described herein on a computer, and a computer-readable recording medium including the program. The computer-readable recording medium may include a program command, a local data file, a local data structure, or the like, alone or in combination. The media may be those specially designed and constructed for the present invention, or may be those that are commonly used in the field of computer software. Examples of computer-readable media include magnetic media such as hard disks, floppy disks and magnetic tape, optical recording media such as CD-ROMs and DVDs, and specifically configured to store and execute program instructions such as ROM, RAM, flash memory, Hardware devices. Examples of such programs may include machine language code such as those produced by a compiler, as well as high-level language code that may be executed by a computer using an interpreter or the like.

이상에서 본 발명의 대표적인 실시예들을 상세하게 설명하였으나, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 상술한 실시예에 대하여 본 발명의 범주에서 벗어나지 않는 한도 내에서 다양한 변형이 가능함을 이해할 것이다. 그러므로 본 발명의 권리범위는 설명된 실시예에 국한되어 정해져서는 안 되며, 후술하는 특허청구범위뿐만 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.While the present invention has been particularly shown and described with reference to exemplary embodiments thereof, it is to be understood that the invention is not limited to the disclosed exemplary embodiments, but, on the contrary, . Therefore, the scope of the present invention should not be limited to the above-described embodiments, but should be determined by equivalents to the appended claims, as well as the appended claims.

100: 전자 투표 시스템
102: 투표 노드
104: 집계 노드
106: 선거 관리 노드
100: Electronic voting system
102: Voting node
104: Aggregation node
106: election management node

Claims (22)

전자 투표의 투표 결과에 대한 블록 체인을 구성하기 위한 초기 블록을 생성하여 배포하는 선거 관리 노드;
투표자로부터 복수의 후보자 중 어느 하나의 후보자에 대한 선택값을 포함하는 일반 트랜잭션을 생성하는 하나 이상의 투표 노드; 및
상기 하나 이상의 투표 노드로부터 수신된 상기 일반 트랜잭션을 검증하고, 검증된 일반 트랜잭션을 집계하여 하나 이상의 블록을 생성하는 하나 이상의 집계 노드를 포함하며,
상기 투표 노드 및 상기 집계 노드는 상기 집계 노드에서 생성된 상기 하나 이상의 블록을 검증하고, 검증된 블록을 상기 블록 체인에 연결하며,
상기 집계 노드는,
검증된 일반 트랜잭션을 현재 생성중인 블록에 추가하고, 기 설정된 블록 생성 주기에 도달한 경우, 베이스 트랜잭션을 생성하여 상기 현재 생성중인 블록에 추가하고, 생성된 상기 블록을 타 투표 노드 또는 타 집계 노드로 송신하는, 전자 투표 시스템.
An election management node for generating and distributing an initial block for constituting a block chain for voting results of electronic voting;
One or more voting nodes for generating a generic transaction containing a selection value for any one of a plurality of candidates from a voter; And
One or more aggregation nodes for verifying the generic transaction received from the one or more voting nodes and aggregating verified generic transactions to generate one or more blocks,
The voting node and the aggregation node verifying the one or more blocks generated at the aggregation node, connecting the verified block to the block chain,
The aggregation node comprising:
Adds the verified general transaction to the block currently being created, and when the predetermined block generation period is reached, adds the base transaction to the block currently being generated, and transfers the generated block to another voting node or another aggregation node Transmitting electronic voting system.
청구항 1에 있어서,
상기 초기 블록은,
상기 전자 투표에 참여한 총 유권자 수, 상기 선거 관리 노드의 서명값, 상기 하나 이상의 집계 노드의 공개키 및 상기 복수의 후보자들 각각의 공개키 해시값을 포함하는, 전자 투표 시스템.
The method according to claim 1,
Wherein the initial block comprises:
The total voter number participating in the electronic voting, the signature value of the election management node, the public key of the one or more aggregation nodes, and the public key hash value of each of the plurality of candidates.
청구항 1에 있어서,
상기 일반 트랜잭션은,
상기 투표자의 PIN 번호, 상기 투표자가 선택한 후보자의 공개키 해시값, 상기 투표자의 개인키 서명값, 및 상기 투표자의 공개키를 포함하는, 전자 투표 시스템.
The method according to claim 1,
The generic transaction,
A PIN number of the voter, a public key hash value of the candidate selected by the voter, a signature value of the voter's private key, and a public key of the voter.
청구항 3에 있어서,
상기 투표 노드는,
상기 투표자로부터 입력받은 PIN 번호의 유효성을 검증하고, 상기 유효성이 검증된 상기 투표자로부터 후보자 선택값을 입력받아 상기 일반 트랜잭션을 생성하며, 생성된 상기 일반 트랜잭션을 타 투표 노드 또는 상기 집계 노드로 송신하는, 전자 투표 시스템.
The method of claim 3,
The voting node,
The validity of the PIN number input from the voter is verified, the candidate selection value is received from the validated voter, the generic transaction is generated, and the generated general transaction is transmitted to the other voting node or the aggregation node , Electronic voting system.
청구항 4에 있어서,
상기 투표 노드는,
타 투표 노드로부터 상기 일반 트랜잭션이 수신되는 경우,
수신된 상기 일반 트랜잭션에 포함된 상기 PIN 번호와 중복되는 PIN 번호의 존재 여부, 후보자의 공개키 해시값의 유효 여부, 및 상기 투표자의 개인키 서명값의 유효 여부에 따라 수신된 상기 일반 트랜잭션을 검증하고, 검증된 일반 트랜잭션을 타 투표 노드 또는 상기 집계 노드로 송신하는, 전자 투표 시스템.
The method of claim 4,
The voting node,
If the general transaction is received from another voting node,
Verifying the received generic transaction according to whether the PIN number contained in the received generic transaction exists in a duplicate PIN number, whether the candidate's public key hash value is valid, and whether the voter's private key signature value is valid. And transmits a verified common transaction to another voting node or said aggregation node.
청구항 5에 있어서,
상기 투표 노드는,
상기 일반 트랜잭션에 대한 검증 결과 중복된 PIN 번호가 존재하거나, 상기 후보자의 공개키 해시값이 유효하지 않거나, 또는 상기 투표자의 개인키 서명값이 유효하지 않을 것으로 판단되는 경우, 수신된 상기 일반 트랜잭션을 폐기하는, 전자 투표 시스템.
The method of claim 5,
The voting node,
If it is determined that there is a duplicated PIN number as a result of the verification of the generic transaction, the public key hash value of the candidate is invalid, or that the voter's private key signature value is invalid, Electronic voting system to discard.
청구항 4에 있어서,
상기 집계 노드는,
타 투표 노드로부터 상기 일반 트랜잭션이 수신되는 경우,
수신된 상기 일반 트랜잭션에 포함된 상기 PIN 번호와 중복되는 PIN 번호의 존재 여부, 후보자의 공개키 해시값의 유효 여부, 및 상기 투표자의 개인키 서명값의 유효 여부에 따라 수신된 상기 일반 트랜잭션을 검증하는, 전자 투표 시스템.
The method of claim 4,
The aggregation node comprising:
If the general transaction is received from another voting node,
Verifying the received generic transaction according to whether the PIN number contained in the received generic transaction exists in a duplicate PIN number, whether the candidate's public key hash value is valid, and whether the voter's private key signature value is valid. Electronic voting system.
삭제delete 청구항 7에 있어서,
상기 베이스 트랜잭션은,
상기 복수의 후보자들 각각의 공개키 해시값, 및 상기 베이스 트랜잭션이 속한 블록 내에서 집계된 상기 복수의 후보자들 각각의 득표수를 포함하는, 전자 투표 시스템.
The method of claim 7,
The base transaction includes:
A public key hash value of each of the plurality of candidates, and a number of votes of each of the plurality of candidates aggregated in the block to which the base transaction belongs.
청구항 7에 있어서,
상기 블록을 수신한 상기 투표 노드 또는 상기 집계 노드는,
수신된 상기 블록의 베이스 트랜잭션에 기록된 총 투표수와 수신된 상기 블록에 포함된 일반 트랜잭션으로부터 계산된 총 투표수의 일치 여부,
수신된 상기 블록의 베이스 트랜잭션에 기록된 상기 복수의 후보자 각각의 득표수와 수신된 상기 블록에 포함된 일반 트랜잭션으로부터 계산된 각 후보자별 득표수의 일치 여부,
블록 체인에 상기 블록에 포함된 PIN 번호와 중복된 PIN 번호가 존재하는지의 여부, 및
상기 블록에 포함된 머클 루트 해시값의 유효 여부를 판단함으로써 상기 수신된 블록을 검증하고,
검증된 블록에 자신의 서명값을 추가하여 타 투표 노드 또는 타 집계 노드로 송신하는, 전자 투표 시스템.
The method of claim 7,
Wherein the voting node or the aggregation node, which has received the block,
Whether or not the total number of votes recorded in the base transaction of the received block matches the total number of votes calculated from the general transaction included in the received block,
Whether the number of votes of each of the plurality of candidates recorded in the base transaction of the received block matches the number of votes of each candidate calculated from the general transaction included in the received block,
Whether or not a PIN number included in the block exists in the block chain,
Verifying the received block by determining whether the muckle hash value included in the block is valid,
Adds the signature value to the verified block, and sends it to the other voting node or other aggregation node.
청구항 10에 있어서,
상기 블록을 수신한 상기 투표 노드 또는 상기 집계 노드는,
상기 검증된 블록에 포함된 서명값의 개수가 기 설정된 값 이상인 경우, 상기 검증된 블록을 상기 블록 체인에 연결하는, 전자 투표 시스템.
The method of claim 10,
Wherein the voting node or the aggregation node, which has received the block,
And connects the verified block to the block chain if the number of signature values included in the verified block is equal to or greater than a predetermined value.
선거 관리 노드에서, 전자 투표의 투표 결과에 대한 블록 체인을 구성하기 위한 초기 블록을 생성하여 배포하는 단계;
투표 노드에서, 투표자로부터 복수의 후보자 중 어느 하나의 후보자에 대한 선택값을 포함하는 일반 트랜잭션을 생성하는 단계;
집계 노드에서, 상기 투표 노드로부터 수신된 상기 일반 트랜잭션을 검증하고, 검증된 일반 트랜잭션을 집계하여 블록을 생성하는 단계; 및
상기 투표 노드 또는 상기 집계 노드에서, 생성된 상기 블록을 검증하고, 검증된 블록을 상기 블록 체인에 연결하는 단계를 포함하고,
상기 블록 생성 단계는,
검증된 일반 트랜잭션을 현재 생성중인 블록에 추가하는 단계; 및
기 설정된 블록 생성 주기에 도달한 경우, 베이스 트랜잭션을 생성하여 상기 현재 생성중인 블록에 추가하고, 생성된 상기 블록을 타 투표 노드 또는 타 집계 노드로 송신하는 단계를 더 포함하는, 전자 투표 방법.
Generating and distributing an initial block for constituting a block chain to the voting result of the electronic voting at the election management node;
Generating, at the voting node, a generic transaction containing a selection value for any one of a plurality of candidates from a voter;
At the aggregation node, verifying the generic transaction received from the voting node and aggregating the verified generic transaction to generate a block; And
Verifying the generated block at the voting node or the aggregation node, and coupling the verified block to the block chain,
Wherein the block generation step comprises:
Adding a verified generic transaction to a block currently being created; And
Generating a base transaction, adding the generated base transaction to the currently generated block, and transmitting the generated block to another voting node or another aggregating node when the predetermined block generating period is reached.
청구항 12에 있어서,
상기 초기 블록은,
상기 전자 투표에 참여한 총 유권자 수, 상기 선거 관리 노드의 서명값, 상기 하나 이상의 집계 노드의 공개키 및 상기 복수의 후보자들 각각의 공개키 해시값을 포함하는, 전자 투표 방법.
The method of claim 12,
Wherein the initial block comprises:
The total number of voters participating in the electronic voting, the signature value of the election management node, the public key of the one or more aggregation nodes, and the public key hash value of each of the plurality of candidates.
청구항 12에 있어서,
상기 일반 트랜잭션은,
상기 투표자의 PIN 번호, 상기 투표자가 선택한 후보자의 공개키 해시값, 상기 투표자의 개인키 서명값, 및 상기 투표자의 공개키를 포함하는, 전자 투표 방법.
The method of claim 12,
The generic transaction,
A PIN number of the voter, a public key hash value of the candidate selected by the voter, a signature value of the voter's private key, and a public key of the voter.
청구항 14에 있어서,
상기 일반 트랜잭션을 생성하는 단계는,
상기 투표자로부터 입력받은 PIN 번호의 유효성을 검증하고, 상기 유효성이 검증된 상기 투표자로부터 후보자 선택값을 입력받아 상기 일반 트랜잭션을 생성하며, 생성된 상기 일반 트랜잭션을 타 투표 노드 또는 상기 집계 노드로 송신하도록 구성되는, 전자 투표 방법.
15. The method of claim 14,
Wherein the generating the generic transaction comprises:
The validity of the PIN number input from the voter is verified, the candidate selection value is received from the validated voter, the generic transaction is generated, and the generated general transaction is transmitted to the other voting node or the aggregation node The electronic voting method comprising:
청구항 15에 있어서,
상기 투표 노드는,
타 투표 노드로부터 상기 일반 트랜잭션이 수신되는 경우,
수신된 상기 일반 트랜잭션에 포함된 상기 PIN 번호와 중복되는 PIN 번호의 존재 여부, 후보자의 공개키 해시값의 유효 여부, 및 상기 투표자의 개인키 서명값의 유효 여부에 따라 수신된 상기 일반 트랜잭션을 검증하고, 검증된 일반 트랜잭션을 타 투표 노드 또는 상기 집계 노드로 송신하는, 전자 투표 방법.
16. The method of claim 15,
The voting node,
If the general transaction is received from another voting node,
Verifying the received generic transaction according to whether the PIN number contained in the received generic transaction exists in a duplicate PIN number, whether the candidate's public key hash value is valid, and whether the voter's private key signature value is valid. And transmits the verified common transaction to another voting node or the aggregation node.
청구항 16에 있어서,
상기 투표 노드는,
상기 일반 트랜잭션에 대한 검증 결과 중복된 PIN 번호가 존재하거나, 상기 후보자의 공개키 해시값이 유효하지 않거나, 또는 상기 투표자의 개인키 서명값이 유효하지 않을 것으로 판단되는 경우, 수신된 상기 일반 트랜잭션을 폐기하는, 전자 투표 방법.
18. The method of claim 16,
The voting node,
If it is determined that there is a duplicated PIN number as a result of the verification of the generic transaction, the public key hash value of the candidate is invalid, or that the voter's private key signature value is invalid, Discard, electronic voting method.
청구항 15에 있어서,
상기 블록 생성 단계는,
수신된 상기 일반 트랜잭션에 포함된 상기 PIN 번호와 중복되는 PIN 번호의 존재 여부, 후보자의 공개키 해시값의 유효 여부, 및 상기 투표자의 개인키 서명값의 유효 여부에 따라 수신된 상기 일반 트랜잭션을 검증하도록 구성되는, 전자 투표 방법.
16. The method of claim 15,
Wherein the block generation step comprises:
Verifying the received generic transaction according to whether the PIN number contained in the received generic transaction exists in a duplicate PIN number, whether the candidate's public key hash value is valid, and whether the voter's private key signature value is valid. The electronic voting method.
삭제delete 청구항 18에 있어서,
상기 베이스 트랜잭션은,
상기 복수의 후보자들 각각의 공개키 해시값, 및 상기 베이스 트랜잭션이 속한 블록 내에서 집계된 상기 복수의 후보자들 각각의 득표수를 포함하는, 전자 투표 방법.
19. The method of claim 18,
The base transaction includes:
A public key hash value of each of the plurality of candidates, and a number of votes of each of the plurality of candidates aggregated in the block to which the base transaction belongs.
청구항 18에 있어서,
상기 블록 검증 및 블록 체인 연결 단계는,
수신된 상기 블록의 베이스 트랜잭션에 기록된 총 투표수와 수신된 상기 블록에 포함된 일반 트랜잭션으로부터 계산된 총 투표수의 일치 여부,
수신된 상기 블록의 베이스 트랜잭션에 기록된 상기 복수의 후보자 각각의 득표수와 수신된 상기 블록에 포함된 일반 트랜잭션으로부터 계산된 각 후보자별 득표수의 일치 여부,
블록 체인에 상기 블록에 포함된 PIN 번호와 중복된 PIN 번호가 존재하는지의 여부, 및
상기 블록에 포함된 머클 루트 해시값의 유효 여부를 판단함으로써 상기 수신된 블록을 검증하고,
검증된 블록에 자신의 서명값을 추가하여 타 투표 노드 또는 타 집계 노드로 송신하도록 구성되는, 전자 투표 방법.
19. The method of claim 18,
Wherein the block verification and block chain connection step comprises:
Whether or not the total number of votes recorded in the base transaction of the received block matches the total number of votes calculated from the general transaction included in the received block,
Whether the number of votes of each of the plurality of candidates recorded in the base transaction of the received block matches the number of votes of each candidate calculated from the general transaction included in the received block,
Whether or not a PIN number included in the block exists in the block chain,
Verifying the received block by determining whether the muckle hash value included in the block is valid,
And adding its signature value to the verified block and sending it to another voting node or another aggregating node.
청구항 21에 있어서,
상기 블록 검증 및 블록 체인 연결 단계는,
상기 검증된 블록에 포함된 서명값의 개수가 기 설정된 값 이상인 경우, 상기 검증된 블록을 상기 블록 체인에 연결하도록 구성되는, 전자 투표 방법.
23. The method of claim 21,
Wherein the block verification and block chain connection step comprises:
And to connect the verified block to the block chain if the number of signature values included in the verified block is greater than or equal to a predetermined value.
KR1020170110274A 2017-08-30 2017-08-30 System and method for electronic voting KR101962686B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020170110274A KR101962686B1 (en) 2017-08-30 2017-08-30 System and method for electronic voting

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170110274A KR101962686B1 (en) 2017-08-30 2017-08-30 System and method for electronic voting

Publications (2)

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

Family

ID=65801589

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170110274A KR101962686B1 (en) 2017-08-30 2017-08-30 System and method for electronic voting

Country Status (1)

Country Link
KR (1) KR101962686B1 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102051454B1 (en) 2019-04-23 2019-12-04 에스지에이블록체인 주식회사 A decision-making system using blockchains by verifying conditions
KR20200114188A (en) 2019-03-28 2020-10-07 권형석 Electronic voting method using smart contract based block chain And system

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110086780B (en) * 2019-03-26 2021-11-02 北京百度网讯科技有限公司 Method and device for processing tampered transaction based on Ether house and storage medium
KR102169695B1 (en) * 2019-05-15 2020-10-23 김동영 A self-verifiable blockchain electronic voting management method
KR102282928B1 (en) * 2019-07-05 2021-07-28 로버트 제임스 히갈티 Sport voting system
KR102120882B1 (en) * 2019-09-11 2020-06-09 이민재 Block chain based contest system and method for contesting
KR102248401B1 (en) * 2019-11-22 2021-05-11 (주)레몬클라우드 Apparatus of election administration and method thereof
CN110933098B (en) * 2019-12-05 2022-04-08 全链通有限公司 Electronic voting method, device and storage medium based on block chain
KR102392980B1 (en) * 2020-03-10 2022-05-03 주식회사 미버스랩스 Blockchain Distributed System and Method for Processing Blockchain Transaction
KR102357460B1 (en) * 2020-03-27 2022-01-28 한양대학교 산학협력단 Electronic voting system and method based on homogeneous cryptography
KR102582359B1 (en) * 2020-06-29 2023-09-25 한국전자통신연구원 Method and apparatus for generating block in blockchain system
KR102173426B1 (en) * 2020-07-08 2020-11-03 주식회사 아이오트러스트 Privacy preserving public key infrastructure based self sign and verification system and method in decentralized identity

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160027229A1 (en) * 2014-07-25 2016-01-28 Blockchain Technologies Corporation System and method for securely receiving and counting votes in an election

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100912532B1 (en) * 2006-12-01 2009-08-18 한국전자통신연구원 Internet Voting method for all participants having mutual attestation functions on trusted computing environment and system thereof
KR101167647B1 (en) 2010-09-14 2012-07-20 주식회사 이맥소프트 An Electron Vote Symtem

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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 (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200114188A (en) 2019-03-28 2020-10-07 권형석 Electronic voting method using smart contract based block chain And system
KR102051454B1 (en) 2019-04-23 2019-12-04 에스지에이블록체인 주식회사 A decision-making system using blockchains by verifying conditions

Also Published As

Publication number Publication date
KR20190023894A (en) 2019-03-08

Similar Documents

Publication Publication Date Title
KR101962686B1 (en) System and method for electronic voting
CN112446785B (en) Cross-chain transaction method, system, device, equipment and storage medium
US11290441B1 (en) Systems and methods for blockchain validation of user identity and authority
US11799660B2 (en) Optimizations for verification of interactions system and method
CN111464518B (en) Method and device for sending and verifying cross-link communication data
EP3859644B1 (en) Block chain-based data check system and method, computing device, and storage medium
CN110245186B (en) Service processing method based on block chain and related equipment
US20220353281A1 (en) Centralized threat intelligence
US11917050B1 (en) Systems and methods for generating a blockchain-based user profile
CN112632629B (en) Voting management method, device, medium and electronic equipment based on block chain
CN113256297B (en) Data processing method, device and equipment based on block chain and readable storage medium
CN109166040B (en) Transaction auditing method, device, equipment and storage medium based on block chain
CN111209339B (en) Block synchronization method, device, computer and storage medium
CN111556115B (en) Block chain-based data processing method, device, equipment and storage medium
CN109242663A (en) A kind of bookkeeping methods and system based on block chain technology
CN112738253A (en) Data processing method, device and equipment based on block chain and storage medium
CN110597864A (en) Block chain-based personal information management method and device
CN111476640B (en) Authentication method, system, storage medium and big data authentication platform
CN110321730A (en) A kind of method, block chain node and the storage medium of operation data processing
US20220239668A1 (en) Blockchain-based message processing method and apparatus, device, and storage medium
JP2022517042A (en) Preventing erroneous copies of data records from being sent to distributed ledger systems
CN111865595A (en) Block chain consensus method and device
CN110689343A (en) Transaction verification method and device based on directed acyclic graph
KR20210083457A (en) Electronic vote record management system based on blockchain
CN110728504A (en) Data processing method, device and equipment of block chain and readable storage medium

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