KR100653361B1 - 투표결과의 반영 여부를 검증 가능한 전자투표 방법 및시스템 - Google Patents

투표결과의 반영 여부를 검증 가능한 전자투표 방법 및시스템 Download PDF

Info

Publication number
KR100653361B1
KR100653361B1 KR1020040040946A KR20040040946A KR100653361B1 KR 100653361 B1 KR100653361 B1 KR 100653361B1 KR 1020040040946 A KR1020040040946 A KR 1020040040946A KR 20040040946 A KR20040040946 A KR 20040040946A KR 100653361 B1 KR100653361 B1 KR 100653361B1
Authority
KR
South Korea
Prior art keywords
ballot
voting
management server
voter
server
Prior art date
Application number
KR1020040040946A
Other languages
English (en)
Other versions
KR20050116050A (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 KR1020040040946A priority Critical patent/KR100653361B1/ko
Priority to JP2004202657A priority patent/JP3854978B2/ja
Publication of KR20050116050A publication Critical patent/KR20050116050A/ko
Application granted granted Critical
Publication of KR100653361B1 publication Critical patent/KR100653361B1/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/00Systems or methods specially adapted for specific business sectors, e.g. utilities or tourism
    • G06Q50/10Services
    • G06Q50/26Government or public services
    • G06Q50/265Personal security, identity or safety

Abstract

본 발명은 투표결과의 반영 여부를 검증 가능한 전자투표 방법 및 시스템에 관한 것으로, 투표관리서버와 개표관리서버로 구성된 전자투표 시스템에서의 전자투표 방법에 있어서, 투표관리서버가 투표자명단을 생성하고, 개표관리서버가 투표관리서버로부터 전송받은 투표자명단에 포함되어 있는 투표자 수에 대응하는 티켓을 생성하는 투표사전단계; 개표관리서버가 투표자 단말기에 티켓을 암호화하여 전송하고, 투표관리서버가 투표자 단말기로부터 수신한 암호화된 티켓을 복호화한 티켓과 투표내용 및 개표검증비밀번호가 개표관리서버의 공개키로 암호화된 투표값을 수신하여 투표함에 저장하는 투표단계; 및 개표관리서버가 투표관리서버로부터 수신된 투표함에 저장된 암호화된 투표값을 개표관리서버의 비밀키로 복호화하여 투표내용을 집계하여 공개하고, 복호화된 투표내용과 개표검증비밀번호를 공개하는 개표단계로 구성된다. 이와같이 투표 결과에 대하여 검증하기 위한 검증 자료를 개표결과 공고시 함께 공개함으로써 개표결과에 대해 신뢰할 수 있는 전자투표 방법 및 시스템을 제공한다.

Description

투표결과의 반영 여부를 검증 가능한 전자투표 방법 및 시스템{Electronic voting method and system which is able to identify a voter`s ballot effective in counting of electronic vote}
도 1은 본 발명의 일실시예에 따른 투표사전과정을 나타낸 흐름도이다.
도 2a 내지 도 2c는 본 발명의 일실시예에 따른 투표과정을 나타낸 흐름도이다.
도 3은 본 발명의 일실시예에 따른 개표과정을 나타낸 흐름도이다.
도 4는 본 발명의 다른 일실시예에 따른 투표사전과정을 나타낸 흐름도이다.
도 5a 내지 도 5c는 본 발명의 다른 일실시예에 따른 투표과정을 나타낸 흐름도이다.
도 6은 본 발명의 다른 일실시예에 따른 개표과정을 나타낸 흐름도이다.
도 7은 본 발명의 일실시예에 대한 전자투표 시스템의 블럭도이다.
본 발명은 전자투표 방법 및 시스템에 관한 것으로, 더욱 상세하게는 투표 결과에 대하여 검증하기 위한 검증 자료를 개표결과 공고함으로써 투표결과의 반영 여부를 검증 가능한 전자투표 방법 및 시스템에 관한 것이다.
전자투표는 기존 오프라인에서의 투표와 달리 투표의 모든 과정이 인터넷을 통해 이뤄지는 것을 말한다. 투표자는 투표를 위해 투표소를 방문할 필요가 없고 인터넷을 사용할 수 있는 공간 어디에서나 투표에 참여할 수 있어 편리하다. 장애우처럼 선거참여가 쉽지 않았던 사람들도 쉽게 투표권을 행사할 수 있으며, 선거비용도 대폭 감소시킬 수 있다. 하지만, 이러한 장점들을 가진 전자투표가 우리 사회의 민주주의에 큰 도구로 이용되기 위해서는 어떤 불법적 개입에 대해서도 안전한 전자투표시스템이 필요하다. 많은 사람들이 참여하는 전자투표가 특정 공격에 취약하다면 사회적으로 큰 혼란을 불러 올 수 있다. 그러므로 전자투표는 가장 높은 수준의 암호학적 안전성을 요구하게 된다.
전자투표 시스템은 공개키 암호를 이용하여 투표 내용의 기밀성과 투표자의 익명성을 보장하면서도 투표자가 직접 자신의 의견이 투표결과에 반영되었는지 검증 가능한 안전한 시스템이다. 공개키 암호를 사용하고 있기 때문에 공개키 기반 구조에서도 쉽게 활용가능하고 특정 암호 알고리즘에 한정되지 않아 보안정책에 따라 응용가능성도 높다.
안전하고 효율적인 전자투표 프로토콜에 관한 연구는 오랫동안 이뤄져 왔다. homomorphic encryption, mix-net, 은닉 서명(blind signature)등 여러 가지 암호학적 기법을 통해 고안된 전자투표 프로토콜들이 많이 있다. 하지만, 전자투표 요구사항들을 모두 만족하더라도 많은 수의 투표자에 대하여 계산적, 저장 공간적으로 효율적이고 현실에 적용하여 구현 가능한 프로토콜은 많지 않았다. 전자투표는 투표와 관련된 일련의 과정들이 공정하고 안전하게 유지되도록 암호기법을 사용해서 이뤄진다.
이러한 전자투표 시스템이 갖춰야할 요구사항으로는 다음과 같이 7가지가 있다.
① 완전성(Completeness) : 모든 정당한 유효 투표는 정확하게 투표 결과에 집계되어야 한다.
② 건전성(Soundness) : 부정 투표자에 의하여 투표가 방해되어서는 안 되며, 투표 결과에 부정 투표가 집계되어서도 안된다.
③ 비밀성(Privacy) : 모든 투표는 비밀리에 이뤄져야하며, 투표자의 투표내용을 알 수 없어야 한다.
④ 이중투표불가성(Unreusability) : 정당한 투표자는 두 번이상의 투표를 할 수 없어야한다.
⑤ 권한성(Eligibility) : 투표권이 없는 사람은 투표에 참여 할 수 없어야 한다.
⑥ 공정성(Fairness) : 투표에 영향을 미치는 일이 없어야한다. 특히, 투표과정중 일부분의 투표내용이 알려져 투표에 영향을 미쳐서는 안된다.
⑦ 검증성(Verifiability) : 투표결과를 조작할 수 없도록 누구라도 자신의 투표내용이 투표결과에 반영되었는지 검증할 수 있어야 한다.
위의 전자투표의 요구사항을 만족하면서도 현실적으로 사용가능한 전자투표시스템으로는 은닉 서명과 bit-commitment를 이용한 “A Practical Secret Voting Scheme for Large Scale Election“가 있다. 1992년 제안된 이 프로토콜은 공개키 암호 알고리즘을 사용하고 있다. 하지만, 투표자가 개표시에 다시 모두 참여해야한다는 문제점을 가지고 있다.
이러한 단점을 현실적으로 수정한 것이 1999년 제안된 ”An Improvement on a Practical Secret Voting Scheme“이다. 이 프로토콜은 Elgamal 암호화 기법을 응용한 은닉서명과 threshold 암호기법을 사용해 고안된 것이다.
하지만, 이산대수문제에 기반한 은닉서명을 사용했기 때문에 지수승 계산이 부가적으로 더 필요하고, 암복호화와 서명/검증 작업이 많기 때문에 계산량이 많다. 특히 하나의 평문에 대해 암호문이 두개로 증가하는 Elgamal 암호와 DSA를 사용할 경우에는 투표자와 선거, 개표, 혼합서버 간에 전송되는 메시지 양이 기하 급수적으로 증가하기 때문에 매우 비효율적이다.
위의 전자투표 시스템과 유사한 ”공개키 기반 구조하에서의 안전한 인터넷 전자투표 프로토콜“등이 있으나, 투표자와 투표내용에 대한 연계정보를 감추기 위해 혼합서버를 따로 사용하기 때문에 메시지 전송 횟수와 암복호화 횟수를 더 증가시키는 요인이 된다. 또한, 선거관리위원회에서 부정투표를 삽입할 가능성도 있다.
본 발명이 이루고자 하는 기술적 과제는, 투표자의 투표 과정을 간편화 시키면서도 투표 결과에 대한 검증을 위한 검증 자료를 개표 결과 공고시 함께 공개하므로 개표결과에 대해 신뢰할 수 있는 전자투표 방법 및 시스템을 제공하는 것이 다.
상기 기술적 과제를 이루기 위한 본 발명의 투표결과의 반영 여부를 검증 가능한 전자투표 방법은, 투표관리서버와 개표관리서버로 구성된 전자투표 시스템에서의 전자투표 방법에 있어서, (a) 상기 투표관리서버가 투표자명단(UserDB)을 생성하고, 상기 개표관리서버가 상기 투표관리서버로부터 전송받은 상기 투표자명단에 포함되어 있는 투표자 수에 대응하는 티켓(T)을 생성하는 투표사전단계; (b) 상기 개표관리서버가 투표자 단말기에 상기 티켓(T)을 암호화하여 전송하고, 상기 투표관리서버가 상기 투표자 단말기로부터 수신한 상기 암호화된 티켓(CT)을 복호화한 티켓과 투표내용(v) 및 개표검증비밀번호(r)가 상기 개표관리서버의 공개키로 암호화된 투표값(xi)을 수신하여 투표함(VoteDB)에 저장하는 투표단계; 및 (c) 상기 개표관리서버가 상기 투표관리서버로부터 수신된 상기 투표함(VoteDB)에 저장된 암호화된 투표값(xi)을 상기 개표관리서버의 비밀키로 복호화하여 상기 투표내용(v)을 집계하여 공개하고, 상기 복호화된 투표내용과 개표검증비밀번호를 공개하는 개표단계;를 포함하는 것을 특징으로 가진다.
상기 기술적 과제를 이루기 위한 본 발명의 투표결과의 반영 여부를 검증 가능한 전자투표 시스템은, 투표관리서버와 개표관리서버로 구성된 전자투표 시스템에 있어서, 투표자명단(UserDB) 및 전체 투표자 수에 해당하는 투표관리를 위한 무작위 수열을 생성하고, 상기 개표관리서버로부터 투표자 단말기로 전송된 암호화된 티켓(CT)을 복호화한 티켓과 투표자로부터 입력받은 투표내용(v)과 개표검증비밀번 호(r)를 상기 개표관리서버의 공개키로 산출된 암호화된 투표값(xi)을 상기 투표자 단말기로부터 수신하여 투표함에 저장하고 무작위 수열에 의해 정렬하는 투표관리서버; 및 전체 투표자 수에 해당하는 개표관리를 위한 무작위 수열을 생성하고, 상기 투표자 단말기로 상기 암호화된 티켓(CT)을 송신하며, 상기 투표관리서버로부터 수신된 상기 투표함을 재정렬하고 상기 투표함에 저장되어 있는 상기 암호화된 투표값(xi)을 상기 개표관리서버의 비밀키로 복호화하여 상기 투표내용을 집계한 후 공개하고, 상기 티켓, 투표내용 및 개표검증비밀번호를 공개하는 개표관리서버;를 포함하는 것을 특징으로 가진다.
이하에서 본 발명의 일실시예와 본 발명의 다른 일실시예에서 설명하는 기호의 정의는 다음과 같다.
A : 투표관리서버,
A_공개키, A_비밀키 : 투표관리서버의 공개키와 비밀키,
C : 개표관리서버,
C_공개키, C_비밀키 : 개표관리서버의 공개키와 비밀키,
Vi : i번째 투표자의 투표자 단말기,
Vi_공개키, Vi_비밀키 : i번째 투표자의 투표자 단말기의 공개키와 비밀키,
VN : 전체 투표자 수,
Ti : i번째 티켓,
Ts : 타임스탬프(Timestamp),
ViC_key : i번째 투표자의 투표자 단말기와 개표관리서버간의 대칭키 암호통 신을 위한 비밀 세션키,
xor : Exclusive-OR 연산,
v : 투표자가 선택한 투표내용,
r : 투표자가 개표결과 검증을 위해 선택한 자신만이 알고 있는 개표검증비밀번호,
Hash() : 일방향 해쉬 함수,
Enc(), Dec() : 공개키 암호 알고리즘을 사용한 암호화 함수, 복호화 함수,
사용예) C = Enc공개key(P) : P를 공개key로 암호화하여 C 생성
P = Dec비밀key(C) : C를 비밀key로 복호화하여 P 생성
Sign(), Verify() : 전자 서명 함수, 전자 서명 검증 함수,
사용예) S = Sign비밀key(P) : P를 비밀key로 서명하여 서명값 S 생성
Verify공개key(S,P) = True or False : (서명값 S, 평문 P)를 공개key로 서명 검증,
SE() : 비밀키(대칭키) 암복호화 알고리즘,
사용예) C = SEkey(P) : P를 key로 암호화하여 C 생성
P = SEkey(C) : C를 key로 복호화하여 P 생성
Hashn( ) : 일방향 해쉬함수를 n번 수행.
이하에서는 본 발명의 바람직한 일실시예에 대한 투표의 전체적인 과정을 상세히 설명하기로 한다.
본 발명의 일실시예에 대한 설명에 있어서, 투표관리서버와 개표관리서버간 의 담합이 존재하지 않아야 한다는 가장 현실적이고 최소한의 가정에 기반을 둔다. 이는, Honest Verifier, Honest Randomizer와 같은 가상의 증명자나, 투표자 단말기와 투표관리서버의 도청 불가능한 안전한 채널등과 같이 현실세계에 적용하기 어려운 가정(Assumption)에 기반하고 있는 기존의 다른 전자 투표 프로토콜과 크게 차별되는 점이다.
도 1은 본 발명의 일실시예에 따른 투표사전과정을 나타낸 흐름도이다.
본 발명의 일실시예와 관련되어 사용되는 데이터베이스에 대하여는 표1에 투표자명단(UserDB)과 표2에 투표함(VoteDB)이 나타나 있다.
필드 명 내 용 쓰기 권한(읽기는 모두 가능)
투표관리서버 개표관리서버
ID 주민등록번호
Name 성명
CA 인증서 발급기관
Serial 인증서 일련번호
Certificate 인증서
Vote Timestamp 투표 시간
Vote IP 투표에 사용된 IP
VC 투표자의 투표종료확인 서명값
EC 투표자의 투표종료확인 코드
필드 명 내 용
number 투표함을 섞을 때 사용되는 숫자(random sort sequence)
xi 개표관리서버의 공개키로 암호화된 투표 값
yi xi에 대한 투표관리서버의 서명 값
Valid yi가 xi에 대한 올바른 서명 값인지에 대한 여부
도 1을 살펴보면, 투표관리서버(A)에서는 해당 선거 또는 투표의 내용을 공 개하고 적정 기준에 의거하여 투표자를 선별한다(S100). 그리고 투표관리서버(A)에서는 선별된 투표자 개인들에게 투표권 여부를 우편, 전화, 이메일등의 방법으로 송신한다(S102).
투표자들은 자신의 투표권 여부를 투표관리서버(A)의 공개게시판에서 확인할 수 있으며 투표권에 대한 이의를 제기할 수 있다(S104).
투표관리서버(A)는 일정시간까지 투표자 단말기(B)에 의한 투표권 이의제기를 받고 이를 확인 조정한 후, 투표자명단을 완성한다. 즉, 투표자명단 데이터베이스인 투표자명단(UserDB)에 아이디(ID), 성명(Name)을 기재하고 최종 투표자명단를 생성한다(S106). 그리고 투표관리서버(A)에서는 생성된 최종 투표자 단말기에 최종 투표자임을 확인할 수 있도록 최종 투표자 확인 정보를 송신하게 된다(S108).
투표권을 가진 투표자의 투표자 단말기(B)는 자신이 공인인증서를 소유하고 있는지 확인하고, 없을시에는 자신의 비밀키와 공개키를 생성하고 이를 이용하여 공인인증서버에서 공인인증서를 발급받는다(S110). 여기에서, 구체적인 공인인증서 발급과 관련된 사항은 “전자서명법"과 "국내 공인인증서버의 인증업무준칙"에 명시된 바에 따른다.
투표자명단(UserDB)이 생성되면 투표관리서버(A)는 전체 투표자 수에 맞추어 무작위 수열(random sort sequence)을 생성한다(S112).
그리고, 투표관리서버(A)는 개표관리서버(C)로 투표자명단을 전송하게 된다(S114). 여기에서 개표관리서버(C)로 투표자명단을 전송하는 S114단계는 투표자명단이 생성되고 최종 투표자 확인 정보를 송신하는 S108단계와 동시에 이루어 질 수 있다.
투표자명단을 전송받은 개표관리서버(C)는 전체 투표자 인원에 맞추어 무작위 수열(random sort sequence)을 생성한다(S116).
S112단계와 S116단계에서의 무작위 수열이란 만약 투표자가 10명일 때 5,6,4,8,9,0,2,3,1,7과 같이 서로 겹치는 숫자가 없도록 무작위로 나열한 수열을 말한다. 이와 같은 무작위 수열은 투표관리서버(A)와 개표관리서버(C)가 각각 생성하고 외부로 유출되지 않도록 비밀로 유지하게 된다.
개표관리서버(C)는 서로 다른 k 종류의 티켓 VN(VN은 전체 투표자수에 해당)개를 생성한다(S118). 티켓생성의 예를 들어보면, Ti(i번째 티켓) = 무작위숫자 8자리, 0<= i < k로 나타낸다.
개표관리서버(C)는 VN개의 티켓을 무작위로 섞는다(S120). 예를 들어보면, k가 5이고 VN이 20일때 { T2, T4, T3, T1, T4, T0, T3, T2, T1, T4, T2, T0, T4, T1, T3, T2, T0, T3, T1, T0 }과 같이 무작위로 섞게 된다.
투표관리서버(A)와 개표관리서버(C)는 각각 자신의 비밀키와 공개키를 생성한다(S122)(S124). 투표관리서버(A)와 개표관리서버(C)는 각각 자신의 비밀키와 공개키를 이용하여 공인인증서버에서 공인 인증서를 발급받게 된다(S126)(S128).
투표관리서버(A)와 개표관리서버(C)는 서로의 공인 인증서를 교환한다(S130)(S132).
도 2a 내지 도 2c는 본 발명의 일실시예에 따른 투표과정을 나타낸 흐름도이다. 상세한 설명에서 기재되는 i번째 투표자의 투표자 단말기(Vi)는 유선에 의한 유선단말기 뿐만 아니라 무선에 의한 무선단말기도 포함한다.
도 2a 내지 도 2c를 살펴보면, 투표를 원하는 i번째 투표자의 투표자 단말기(Vi)는 무작위 숫자(random number)(또는 난수) sk2, 투표종료확인코드인 EC를 생성하고, 투표를 위한 로그인 메시지로 사용하기 위해 수학식1과 같은 서명값 VC를 생성한다(S200).
VC = Signvi_비밀키(Hash(EC) || Ts)
i번째 투표자의 투표자 단말기(Vi)는 투표관리서버(A)와 개표관리서버(C)에게 (VC, Ts, Hash(EC), Vi의 인증서)를 전송한다(S202)(S204).
투표관리서버(A)는 (VC, Ts, Hash(EC), Vi의 인증서)를 전송받은 후 서명값 VC를 수학식2를 통하여 검증하고, 공인인증서버과 통신하여 i번째 투표자의 투표자 단말기(Vi)의 인증서 유효성을 검증한다(S206).
VerifyVi_공개키(VC,Hash(EC) || Ts)
투표관리서버(A)는 투표자명단(UserDB)에 투표종료확인 코드인 EC항목이 기재되어 있는지 확인하여 이미 투표한 자인지 검증한다(S208). S208단계의 검증결과, 아직 투표하지 않은 정당한 i번째 투표자임이 검증되면, 투표관리서버(A)의 공개키가 포함된 공인인증서를 i번째 투표자의 투표자 단말기(Vi)에게 전송한다(S210).
개표관리서버(C)도 상기 S206단계 내지 S210단계의 과정을 동일하게 수행하 여 아직 투표하지 않은 정당한 투표자인지 확인하고 개표관리서버(C)의 공개키가 포함된 공인인증서를 i번째 투표자의 투표자 단말기(Vi)에게 전송한다(S212) (S214)(S216).
i번째 투표자의 투표자 단말기(Vi)는 투표관리서버(A), 개표관리서버(C)로부터 전송받은 공인인증서에 대하여 그 유효성을 검증한다(S218). S218단계에 의하여 그 유효성이 검증되면 아래 과정이 진행되며, 그 유효성이 검증되지 않으면 아래 과정은 진행되지 않는다.
개표관리서버(C)는 무작위 숫자(random number) sk1를 생성하고(S220), 이를 수학식3과 같이 i번째 투표자의 투표자 단말기(Vi)의 공개키로 암호화하여 i번째 투표자의 투표자 단말기(Vi)에 전송한다(S222).
CSK1 = EncVi_공개키(sk1)
i번째 투표자의 투표자 단말기(Vi)는 CSK1을 전송받은 후, 이를 수학식4와 같이 복호화하여 sk1을 획득하고, 수학식5와 같이 자신이 생성했던 sk2를 sk1으로 대칭키 암호알고리즘으로 암호화하여 CSK2를 생성한다(S224).
sk1 = DecVi_비밀키(CSK1)
CSK2=SEsk1(sk2)
i번째 투표자의 투표자 단말기(Vi)는 암호화하여 생성된 CSK2를 개표관리서 버(C)에게 전송한다(S226).
개표관리서버(C)는 CSK2를 전송받은 후, 수학식6과 같이 sk1으로 복호화하여 sk2를 획득한다(S228).
sk2 = SEsk1(CSK2)
i번째 투표자의 투표자 단말기(Vi)와 개표관리서버(C)는 서로의 세션키 ViC_key를 수학식7과 같이 생성한다(S230)(S232).
ViC_key = sk1 xor sk2
개표관리서버(C)는 사전단계에서 생성해 놓았던 무작위로 섞어진 티켓중 순서대로 하나를 뽑아 수학식8과 같이 i번째 투표자의 투표자 단말기(Vi)와의 세션키로 암호화하여 i번째 투표자의 투표자 단말기(Vi)에게 전송한다(S234).
CT = SEvi_key(T)
i번째 투표자의 투표자 단말기(Vi)는 개표관리서버(C)에게서 암호화된 티켓(CT)을 받아 이를 세션키로 복호화하여 티켓 T를 획득하고, i번째 투표자는 자신이 원하는 투표내용(v)과 개표검증비밀번호(r)를 선택하여 i번째 투표자의 투표자 단말기(Vi)에 입력된다(S236).
i번째 투표자의 투표자 단말기(Vi)는 수학식9와 같이 개표관리서버(C)의 공개키로 암호화된 투표값 xi를 생성하고, 수학식 10과 같이 암호화된 투표값 xi를 i 번째 투표자의 투표자 단말기(Vi)의 비밀키로 서명하여 서명암호화투표값 si를 생성한다(S238).
xi=EncC_공개키(T || v || r)
si=SignVi_비밀키(xi)
i번째 투표자의 투표자 단말기(Vi)는 암호화된 투표값 xi, 서명암호화투표값 si를 투표관리서버(A)에 전송한다(S240).
투표관리서버(A)는 암호호된 투표값 xi, 서명암호화투표값 si를 획득하여 수학식11과 같이 서명암호화투표값 si의 서명을 검증한다(S242).
VerifyVi_공개키(si, xi)
투표관리서버(A)는 서명암호화투표값 si의 서명 검증이 성공하면 투표자명단(UserDB)에 i번째 투표자의 투표자 단말기(Vi)의 인증서 일련번호, 인증서 발급기관, 인증서, 타임스탬프 Ts, 인터넷 접근주소(IP) 및 서명값 VC 등을 저장하게 된다(S244).
투표관리서버(A)는 암호화된 투표값 xi를 수학식12와 같이 자신의 비밀키로 서명하여 서명투표값 yi를 생성(S246)하여 i번째 투표자의 투표자 단말기(Vi)에게 전송한다(S248).
yi = Sign A_비밀키(xi)
i번째 투표자의 투표자 단말기(Vi)는 투표관리서버(A)에게서 서명투표값 yi를 받아 수학식13과 같이 검증한다(S250).
VerifyA_공개키(yi, xi)
S250단계에서 서명투표값 yi에 대한 서명검증이 이루어지게 되면, 자신의 투표가 올바르게 투표함에 전송되어 투표가 완료되었다는 의미로 EC를 개표관리서버(C)와의 세션키로 암호화하여 수학식14와 같이 CEC를 생성하여(S252) 개표관리서버(C)에 전송한다(S254).
CEC = SEViC_key(EC)
개표관리서버(C)는 i번째 투표자의 투표자 단말기(Vi)에게서 CEC를 전송받아 수학식15와 같이 세션키로 복호화하여 EC를 획득한다(S256).
EC = SEViC_key(CEC)
개표관리서버(C)는 UserDB에 저장된 값들과 i번째 투표자의 투표자 단말기(Vi)에게서 전송받은 EC를 이용하여 S204단계에서 전송받았던 VC가 만들어지는지 검증함으로써 올바른 EC가 전송되었는지, 투표관리서버에서 UserDB에 관련값들을 올바르게 기록되었는지 검증한다(S258).
개표관리서버(C)에서 올바르게 이루어졌다고 검증이되면 i번째 투표자의 투 표자 단말기(Vi)의 투표가 올바르게 성공하였다는 확인으로 Hash(EC+1)를 i번째 투표자의 투표자 단말기(Vi)에게 전송하고(S260), EC값을 UserDB에 기록한다(S262).
i번째 투표자의 투표자 단말기(Vi)는 Hash(EC+1)를 전송받아 자신의 EC에 맞는 값인지 검증하고(S264), 검증이 올바르다고 판단되면 투표가 성공적으로 종료됨에 동의한다는 의미로 Hash(EC+2)를 투표관리서버(A)에게 전송한다(S266).
투표관리서버(A)에서는 Hash(EC+2)를 전송받아 투표자명단(UserDB)에 기록된 EC가 올바른 값인지 검증한다(S268).
S268단계에서의 검증이 올바르다고 판단되면 투표가 올바르게 종료되었음을 i번째 투표자의 투표자 단말기(Vi)에게 알리고(S270), 투표함(VoteDB)에 random sort sequence[i], xi 및 yi를 저장한다(S272).
투표관리서버(A)와 개표관리서버(C)는 현재까지의 총 투표자수를 공개장치(공개개시판) 등을 이용하여 공개한다(S274)(S276).
투표과정 중에서 투표관리서버(A)와 개표관리서버(C)에서 각각 이루어지는 검증작업에서 검증이 실패하는 경우에는 i번째 투표자의 투표자 단말기(Vi)에게 재투표를 요청하며, i번째 투표자의 투표자 단말기(Vi)는 티켓을 개표관리서버(C)에게 반환하고 S200단계부터 다시 시작한다.
i번째 투표자의 투표자 단말기(Vi)가 아닌 다른 투표자의 투표자 단말기에서 투표요청이 입력되는 경우에는 S200단계부터 시작하게 된다.
여기에서, 투표자 단말기와 개표관리서버(C)간의 대칭암호통신은 SSL 또는 TLS 통신등으로 대체가 가능하다.
도 3은 본 발명의 일실시예에 따른 개표과정을 나타낸 흐름도이다.
도 3을 살펴보면, 투표 시간이 종료된 후 개표관리서버(C)는 티켓 종류별 발행 개수를 공개한다(S300).
투표관리서버(A)는 투표 종료 후 부여된 랜덤 수열에 의해 투표함의 암호화된 투표값 xi, 서명투표값 yi 쌍을 정렬(Sort)한다(S302).
투표관리서버(A)는 VoteDB에 기재된 Number를 삭제하고(S304), 개표관리서버(C)에게 전송한다(S306).
개표관리서버(C)는 투표함(VoteDB)에 기재된 내용을 받아 사전단계에서 생성했던 수와 서로 다른 수로 이루어진 난수 수열을 암호화된 투표값 xi, 서명투표값 yi 쌍에 부여(Random Sequence 부여)한다(S308).
개표관리서버(C)는 위에서 부여된 난수 수열에 의해 투표함의 암호화된 투표값 xi와 서명투표값 yi 쌍을 정렬(Sort)한다(S310).
개표관리서버(C)는 투표함(VoteDB)에 기재된 번호(Number)를 삭제하고 투표함을 공개하여 개표한다(S312).
개표관리서버(C)는 투표 마감자수와 투표함(VoteDB)의 투표수가 일치하는지 검증한다(S314).
개표관리서버(C)는 각각의 암호화된 투표값 xi와 서명투표값 yi쌍에 대하여 수학식16과 같이 투표관리서버(A)의 공개키로 서명투표값 yi의 서명을 검증한다(S316).
VerifyA_공개키(yi,xi)
개표관리서버(C)는 암호화된 투표값 xi를 수학식17과 같이 개표관리서버(C)의 비밀키로 복호화하여 티켓(T), 투표내용(v) 및 개표검증비밀번호(r)를 획득한다(S318).
(T || v || r) = DecC_비밀키(xi)
개표관리서버(C)는 티켓 발행내역과 검증하여 올바른 티켓이 포함되었는지, 그리고 그 개수는 발행현황과 일치하는지를 검증하고 투표내용을 집계한다. 이와같은 결과를 집계하여 발표하고, 개표검증자료로 티켓(T), 투표내용(v) 및 개표검증비밀번호(r)를 공개한다(S320).
투표자들은 개표검증자료중에서 자신이 골랐던 개표검증비밀번호(r)이 있는지 찾고 그 것에 대응되는 투표내용(v)값이 자신이 선택한 투표내용인지 검사하여 자신의 투표내용이 정확히 개표결과에 반영되었는지 확인할 수 있게 된다(S322). 또한 투표자는 전체 투표자수와 개표결과 발표된 총 집계 결과가 일치하는지, 티켓 발행 현황은 일치하는지를 검사하여 투표관리서버(A)와 개표관리서버(C)의 부정여부를 검사할 수 있게 된다.
상기와 같은 과정을 통하여 투표관리서버(A)에서 만든 가짜 투표 1개가 유효하게 삽입될 확률은 1/k이다. 또한, 상기와 같은 과정을 통해 개표관리서버(C)에서 투표자의 투표내용을 예측할 확률은 k/VN이다.
도 1 내지 도 3에서는 공인인증서버를 기반으로 설명하였지만, 공인인증서버(공인인증기관)가 존재하지 않는 환경에서도 패스워드를 이용한 투표자 인증밥법을 기반으로 본 발명의 일실시예를 구현할 수 있다. 그리고, 나아가 공인인증서버(공인인증기관)가 아닌 별도의 사설인증서버를 기반으로도 본 발명의 일실시예를 구현할 수 있다.
도 4는 본 발명의 다른 일실시예에 따른 투표사전과정을 나타낸 흐름도이다.
본 발명의 다른 일실시예와 관련되어 사용되는 데이터베이스에 대하여는 표3에 투표자명단(UserDB)과 표4에 투표함(VoteDB)이 나타나 있다.
필드 명 내 용 쓰기 권한(읽기는 모두 가능)
투표관리서버 개표관리서버
ID 주민등록번호
Name 성명
패스워드해쉬값(PCV) Hash3(password)
Public Key 공개키
Vote Timestamp 투표 시간
Vote IP 투표에 사용된 IP
VC 투표자의 투표종료확인 서명 값
EC 투표자의 투표종료확인 code
필드 명 내 용
number 투표함을 섞을 때 사용되는 숫자(random sort sequence)
xi 개표관리서버의 공개키로 암호화된 투표 값
yi xi에 대한 투표관리서버의 서명 값
Valid yi가 xi에 대한 올바른 서명 값인지에 대한 여부
도 4를 살펴보면, 투표관리서버(A)에서는 해당 선거 또는 투표의 내용을 공지하고 적정 기준에 의거하여 투표자를 선별한다(S400). 그리고 투표관리서버(A)에서는 선별된 투표자들의 투표자에게 투표권 여부를 우편, 전화, 이메일등의 방법 으로 송신한다(S402).
투표자들은 자신의 투표권 여부를 투표관리서버(A)의 공개장치(공개게시판)에서 확인할 수 있으며 투표권에 대한 이의를 제기할 수 있다(S404).
투표관리서버(A)는 일정시간까지 투표자의 투표권 이의제기를 받고 이를 확인 조정한 후, 투표자명단을 생성한다. 즉, 투표자명단 데이터베이스인 투표자명단(UserDB)에 아이디(ID), 성명(Name)을 기재하고 투표자명단을 생성한다(S406).
투표자명단이 생성되면 투표관리서버(A)는 전체 투표자 인원에 맞추어 무작위 수열(random sort sequence)을 생성한다(S408).
그리고, 투표관리서버(A)는 개표관리서버(C)로 최종 투표자명단을 전송하게 된다(S410).
최종 투표자명단을 전송받은 개표관리서버(C)는 전체 투표자 수에 맞추어 무작위 수열(random sort sequence)을 생성한다(S412).
S408단계와 S412단계에서의 무작위 수열이란 만약 투표자가 10명일 때 5,6,4,8,9,0,2,3,1,7과 같이 서로 겹치는 숫자가 없도록 무작위로 나열한 수열을 말한다. 이와 같은 무작위 수열은 투표관리서버(A)와 개표관리서버(C)가 각각 생성하고 외부로 유출되지 않도록 비밀로 유지하게 된다.
개표관리서버(C)는 서로 다른 k 종류의 티켓 VN(VN은 전체 투표자수에 해당)개를 생성한다(S414). 티켓생성의 예를 들어보면, Ti(i번째 티켓) = 무작위숫자 8자리, 0<= i < k로 나타낸다.
개표관리서버(C)는 VN개의 티켓을 무작위로 섞는다(S416). 예를 들어보면, k가 5이고 VN이 20일때 { T2, T4, T3, T1, T4, T0, T3, T2, T1, T4, T2, T0, T4, T1, T3, T2, T0, T3, T1, T0 }과 같이 무작위로 섞게 된다.
투표관리서버(A)와 개표관리서버(C)는 각각 자신의 비밀키와 공개키를 생성한다(S418)(S420). 투표관리서버(A)와 개표관리서버(C)는 각각의 공개키를 상호 교환하게 된다(S422)(S424).
투표관리서버(A)에서는 생성된 최종 투표자들의 투표자 단말기에 최종 투표자임을 확인할 수 있도록 통지하게 된다(S426).
투표자 단말기는 자신의 투표자 단말기를 통하여 투표관리서버(A)에 수학식18과 같이 투표자 자신이 선택한 로그인용 패스워드(password)를 3회 Hash한 패스워드해쉬값(PCV)과 자신의 ID(주민등록번호)를 생성하여(S428), 투표관리서버(A)에 패스워드해쉬값(PCV)과 아이디(ID)를 전송한다(S430).
패스워드해쉬값(PCV) = Hash3(password)
(여기에서, 수학식 18은 password를 3회 해쉬(Hash)했다는 의미로 Hash(Hash(Hash(password)))와 동일한 의미이다.)
S430단계후에, 투표관리서버(A)는 투표자명단(UserDB)에 패스워드해쉬값(PCV)을 저장한다(S432). S432 단계후에 투표관리서버(A)는 투표자명단(UserDB)에 저장되어 있는 패스워드해쉬값(PCV)를 개표관리서버에 전송한다. 도 4에서는 최종 투표자 명단 전송과 관련되어 S410에서 전송하였지만, S428, S430 및 S432 단계후에 투표관리서버는 최종 투표자 명단을 생성하여 최종 투표자 명단 과 함께 패스워드해쉬값(PCV)를 개표관리서버(C)에 전송할 수도 있다.
도 5a 내지 도 5c는 본 발명의 다른 일실시예에 따른 투표과정을 나타낸 흐름도이다.
도 5a 내지 도 5c를 살펴보면, 도 5에서의 투표과정은 도2에서 설명된 부분과 유사하므로 아래에서 설명되지 않은 부분에 대하여는 도 2에 설명된 내용을 참조하기로 한다. 여기에서, 도 2와 도 5에서 상호 대응되는 부분은 십단위의 숫자가 동일한 단계에 대하여 대응되는 것이다.
투표를 원하는 i번째 투표자의 투표자 단말기(Vi)는 무작위 숫자(random number)(또는 난수) sk2를 생성하고 수학식19와 같이 투표종료확인 코드인 EC를 생성한다. 그리고, 투표를 위한 로그인 메시지로 사용하기 위해 수학식20과 같은 서명값 VC를 생성한다(S500).
EC = Hash(password)
VC = Signvi_비밀키(Hash(EC) || Ts)
i번째 투표자의 투표자 단말기(Vi)는 투표관리서버(A)와 개표관리서버(C)에게 (VC, Ts, Hash(EC), Vi의 공개키)를 전송한다(S502)(S504).
투표관리서버(A)는 (VC, Ts, Hash(EC), Vi의 공개키)를 전송받은 후 서명값 VC를 수학식21을 통하여 검증하고, 투표자명단(UserDB)에 투표종료확인 코드인 EC항목이 기재되어 있는지 확인하여 이미 투표한 자인지를 검증한다(S506).
VerifyVi_공개키(VC,Hash(EC) || Ts)
투표관리서버(A)는 Hash(EC)를 다시 Hash하여 투표자명단(UserDB)의 패스워드해쉬값(PCV)과 동일한지 검증한다(S508). S508단계의 검증결과, 아직 투표하지 않은 정당한 i번째 투표자의 투표자 단말기(Vi)임이 확인되면, 투표관리서버(A)의 공개키를 i번째 투표자의 투표자 단말기(Vi)에게 전송한다(S510).
개표관리서버(C)도 상기 S506단계 내지 S510단계의 과정을 동일하게 수행하여 아직 투표하지 않은 정당한 투표자인지 확인하고 개표관리서버(C)의 공개키를 i번째 투표자의 투표자 단말기(Vi)에게 전송한다(S512)(S514)(S516).
도 5에서는 공인인증서에 기반을 두지 않으므로 공인인증서에 대하여 그 유효성을 검증하는 S218단계에 대응하는 과정은 없다.
S244단계와 대응되는 S544단계에서는 투표관리서버(A)는 si의 서명 검증이 성공하면 투표자명단(UserDB)에 i번째 투표자의 투표자 단말기(Vi)의 공개키, 타임스탬프 Ts, 인터넷 접근주소(IP) 및 서명값 VC등을 저장하게 된다(S544).
나머지 대응되는 단계에 대하여는 상기에서 언급한 바와 같이 도 2에서의 설명을 참조하기로 한다.
도 6은 본 발명의 다른 일실시예에 따른 개표과정을 나타낸 흐름도이다.
도 6은 도 3에서 설명된 부분에서의 과정과 동일하므로 도 3에 설명된 내용을 참조하기로 한다.
도 7은 본 발명의 일실시예에 대한 전자투표 시스템의 블럭도이다.
투표관리서버(700)는 투표자명단(UserDB)을 생성하여 생성하고, 전체 투표자 수에 해당하는 투표관리 난수를 생성하며 투표자 단말기로부터 투표자에 의하여 선택된 투표내용(v)과 개표검증비밀번호(r)를 각각 수신하여 상기 개표관리서버의 공개키로 암호화된 투표값(xi)을 투표함에 저장하고 랜덤수열에 의해 정렬하게 된다.
투표관리서버(700)는 투표자 명단을 생성하고, 투표 관리 난수를 생성하기 위한 생성부(701), 암호화된 투표값을 저장하기 위한 저장부(702), 투표자 단말기와 개표관리서버와 각각 데이터를 송수신 하기위한 송수신부(703), 암호화된 투표값을 투표함에 저장하고 랜덤수열에 의해 정렬하기 위한 혼합부(704), 투표자 단말기와 개표관리서버와 각각 데이터를 송수신함에 있어서 상기 데이터의 정확성 여부를 검증하기 위한 검증부(705) 및 투표단계에서 총 투표자수를 공개하기 위한 공개부(706)를 포함한다.
상기에서 설명한 바와 같이, 생성부(701)는 S106단계, S112단계, S122단계, S246단계, S106단계, S406단계, S408단계 및 S546단계 등에서 수행되어진다. 저장부(702)는 S244단계, S272단계, S544단계 및 S572단계 등에서 수행되어진다. 송수신부(703)는 상기에서 설명한 바와 같이 투표자 단말기(740)와 개표관리서버(720) 및 공인인증서버(760)과의 데이터를 송수신하는 것에 수행되어진다. 혼합부(704)는 S302단계 및 S602단계 등에서 수행되어진다. 검증부(705)와 관련되어서는 S206단계, S208단계, S242단계, S268단계, S506단계, S508단계, S542단계 및 S568단계 등에서 수행되어진다. 공개부(706)는 S100단계, S274단계, S400단계 및 S574단계 등에서 수행되어진다.
개표관리서버(720)는 전체 투표자 수에 해당하는 개표관리 난수를 생성하고, 상기 투표자 단말기에 암호화된 티켓을 전송하며 상기 투표관리서버로부터 전송된 상기 투표함을 재정렬하고 이에 저장된 암호화된 투표값을 상기 투표관리서버의 비밀키로 공개하여 상기 투표내용을 집계하여 공개하고, 상기 투표내용과 개표검증비밀번호를 공개하게 된다.
개표관리서버(720)는 개표 관리 난수를 생성하기 위한 생성부(721), 투표단계에서 투표종료확인 코드인 EC를 저장하기 위한 저장부(722), 투표자 단말기와 투표관리서버와 각각 데이터를 송수신 하기위한 송수신부(723), 투표관리서버로부터 전송된 상기 투표함을 재정렬하기 위한 혼합부(724), 투표자 단말기와 투표관리서버와 각각 데이터를 송수신함에 있어서 상기 데이터의 정확성 여부를 검증하기 위한 검증부(725) 및 투표내용과 개표검증비밀번호를 공개하기 위한 공개부(726)를 포함한다.
상기에서 설명한 바와 같이, 생성부(721)는 S116단계, S118단계, S124단계, S220단계, S232단계, S412단계, S414단계, S420단계, S520단계 및 S532단계 등에서 수행되어진다. 저장부(722)는 S262단계 및 S562단계 등에서 수행되어진다. 송수신부(723)는 상기에서 설명한 바와 같이 투표자 단말기(740)와 투표관리서버(700) 및 공인인증서버(760)과의 데이터를 송수신하는 것에 수행되어진다. 혼합부(724)는 S120단계, S310단계, S416단계 및 S610단계 등에서 수행되어진다. 검증부(725)와 관련되어서는 S212단계, S214단계, S258단계, S314단계, S316단계, S512단계, S514단계, S558단계, S614단계 및 S616단계 등에서 수행되 어진다. 공개부(726)는 S276단계, S300단계, S576단계 및 S600단계 등에서 수행되어진다.
투표자 단말기(740)와 공인인증서버(760) 사이를 점선으로 표시한 것은, 상기에서 설명한 본 발명의 일실시예에서는 투표자 단말기(740)와 공인인증서버(760)사이의 송수신이 수행되지만, 상기에서 설명한 본 발명의 다른 일실시예에서는 투표자 단말기(740)와 공인인증서버(760)사이의 송수신이 수행되지 않기 때문이다.
본 발명의 일실시예에서 기술된 투표관리서버(A)와 개표관리서버(C)는 하나의 운영주체 내에 구성되어 실시될 수 있고, 나아가 별도의 운영주체내에 구성되어 실시될 수도 있다.
본 발명은 또한 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다. 컴퓨터가 읽을 수 있는 기록매체의 예로는 ROM, RAM, CD_ROM, 자기테이프, 플로피디스크 및 광데이터 저장장치 등이 있으며, 또한 캐리어 웨이브(예를 들어 인터넷을 통한 전송)의 형태로 구현되는 것도 포함한다. 또한 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산방식으로 컴퓨터가 읽을 수 있는 코드로 저장되고 실행될 수 있다.
이상에서와 같이 도면과 명세서에서 최적 실시예가 개시되었다. 여기서 특정한 용어들이 사용되었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사 용된 것은 아니다. 그러므로 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.
본 발명은 투표결과의 반영 여부를 검증 가능한 전자투표 방법 및 시스템에 관한 것으로 다음과 같은 효과가 있다.
첫째, 투표자의 투표 과정을 가장 간편화 시키면서도 투표 결과에 대한 검증을 위한 검증 자료를 개표 결과 공고시 함께 공개하므로 개표결과에 대해 신뢰할 수 있다.
둘째, 투표자와 투표내용간의 연관성을 제거시키는 혼합서버 또는 믹스서버(Mix Server)의 기능을 "투표관리서버"와 "개표관리서버"에 분산시킴으로써 암호화와 복호화, 서명 및 검증 연산과 같은 과정을 줄일 수 있다. 이와 같이 혼합서버 운영에 필요한 하드웨어 또는 소프트웨어의 비용을 절감할 수 있고, 혼합서버가 존재하지 않으므로 혼합서버에 대한 DDOS공격이나 해킹등의 시스템 공격에 노출되지 않는다.
셋째, 다양한 공개키 암호 알고리즘이 적용 가능함으로써, 지수승을 많이 요구하고 암호문이 2배로 증가되는 ElGamal 암호 알고리즘 사용 하지 않을 수 있다. 이와 같이 특정 공개키 암호 알고리즘에 의존하지 않고 RSA, ECC 등의 공개키 암호 알고리즘 적용이 가능하다. 또한, 기존 국내 PKI 인증서에서 사용하고 있는 암호 키를 그대로 사용할 수 있으므로 국내 PKI와의 연동이 쉬우며, 별도의 인증 체계 관리 시스템이 필요 없으며, 기존의 암호학적 라이브러리(Cryptographic Library)를 그대로 사용할 수 있다.
넷째, 암호화 알고리즘으로 ECC를 적용할 경우엔 모바일 환경에서도 투표가 가능하기 때문에 시스템 확장력이 높고, 언제 어디서든 비밀 투표가 가능하다. 또한, 본 발명의 다른 일실시예에서 공인인증서를 활용하지 않는 환경이라면 큰 변경없이도 패스워드를 사용한 투표자 인증을 사용할 수 있다.
다섯째, 공개키 기반 구조(PKI)에 입각하여 설계되었으므로 주민 개개인에게 주어진 인증서를 통해 인증 및 투표에 활용 할 수 있다. 또한, 찬반 혹은 양자택일의 주민 투표제에서도 투표내용의 비밀성과 투표자의 익명성이 유지될 수 있다.
여섯째, 투표관리서버와 개표관리서버에 의한 부정투표행위를 최소화 할 수 있다. 개표관리서버는 다수개 종류의 티켓을 생성하여 이를 무작위 수열로 서열화하고 이를 다시 혼합하여 투표자 단말기에 암호화된 티켓을 송신함으로써 투표관리서버와 개표관리서버 상호의 부정투표행위를 견제할 수 있게 된다. 개표관리서버가 k종류의 서버를 상기와 같은 과정을 통하여 투표관리서버(A)에서 만든 가짜 투표 1개가 유효하게 삽입될 확률은 1/k이다. 또한, 상기와 같은 과정을 통해 개표관리서버(C)에서 투표자의 투표내용을 예측할 확률은 k/VN이다.

Claims (24)

  1. 삭제
  2. 삭제
  3. 삭제
  4. 투표관리서버와 개표관리서버로 구성된 전자투표 시스템에서의 전자투표 방법에 있어서,
    (a) 상기 투표관리서버가 투표자명단(UserDB)을 생성하고, 상기 개표관리서버가 상기 투표관리서버로부터 전송받은 상기 투표자명단에 포함되어 있는 투표자 수에 대응하는 티켓(T)을 생성하고, 상기 티켓(T)을 무작위로 섞는 투표사전단계;
    (b) 상기 개표관리서버가 투표자 단말기에 상기 티켓(T)을 암호화하여 전송하고, 상기 투표자 단말기는 상기 수신한 티켓(T)에 투표자로부터 입력받은 투표내용(v)과 개표검증비밀번호(r)를 상기 개표관리서버의 공개키로 암호화한 투표값(xi)을 생성하고 상기 암호화된 투표값(xi)을 상기 투표관리서버로 전송하고, 상기 투표자 단말기가 자신의 투표가 완료되었음을 나타내는 투표종료확인코드(EC)를 상기 개표관리서버로 전송하고, 상기 투표관리서버가 상기 투표자 단말기로부터 수신한 상기 암호화된 티켓(CT)을 복호화한 티켓과 상기 암호화된 투표값(xi)을 투표함(VoteDB)에 저장하는 투표단계; 및
    (c) 상기 개표관리서버가 상기 투표함(VoteDB)에 저장된 암호화된 투표값(xi)을 상기 개표관리서버의 비밀키로 복호화하여 상기 투표내용(v), 상기 개표검증비밀번호(r) 및 상기 티켓(T)을 공개하는 개표단계를 포함하고,
    상기 (b)단계는,
    (b-1) 상기 투표자 단말기가 제1난수(sk2), 투표종료확인코드(EC) 및 투표를 위한 로그인 메시지로 사용하기 위한 서명값(VC)을 생성하는 단계;
    (b-2) 상기 투표자 단말기가 상기 투표관리서버와 상기 개표관리서버로 상기 서명값(VC), 타임스탬프(Ts), 상기 투표종료확인코드(EC)의 Hash 함수인 Hash(EC) 및 상기 투표자 단말기의 인증 수단을 전송하는 단계;
    (b-3) 상기 투표자 단말기가 상기 투표관리서버로부터 상기 투표관리서버의 인증 수단과 상기 개표관리서버로부터 상기 개표관리서버로의 인증 수단을 전송받아 각각의 인증 수단의 유효성을 검증하는 단계;
    (b-4) 상기 투표자 단말기가 상기 투표관리서버와 상기 개표관리서버로부터 전송받은 각각의 인증 수단의 유효성이 검증되면 상기 개표관리서버와의 세션키를 통하여 상기 개표관리서버로부터 티켓(T)을 수신하는 단계;
    (b-5) 상기 투표자 단말기는 상기 수신한 티켓(T)에 투표자로부터 입력받은 투표내용(v)과 개표검증비밀번호(r)를 상기 개표관리서버의 공개키로 암호화된 투표값(xi)을 생성하고, 상기 암호화된 투표값(xi)을 상기 투표자 단말기의 비밀키로 서명하여 암호화서명투표값(si)을 생성하는 단계;
    (b-6) 상기 투표자 단말기가 상기 암호화된 투표값(xi)과 암호화서명투표값(si)을 상기 투표관리서버로 전송하는 단계;
    (b-7) 상기 투표자 단말기가 상기 투표관리서버로부터 상기 암호화된 투표값(xi)에 대한 상기 투표관리서버의 서명값(yi)을 전송받아 상기 투표관리서버의 공개키로 검증하는 단계;
    (b-8) 상기 투표자 단말기가 자신의 투표가 완료되었음을 나타내기 위하여 상기 투표종료확인코드(EC)를 상기 개표관리서버와의 세션키로 암호화한 후 상기 개표관리서버로 전송하는 단계; 및
    (b-9) 상기 투표자 단말기는 상기 개표관리서버로부터 Hash(EC+1)을 전송받아 검증하고, 검증이 이루어지면 Hash(EC+2)를 상기 투표관리서버에 전송하는 단계를 포함하고,
    상기 투표관리서버와 상기 개표관리서버는 각각 상기 투표자명단(UserDB)에서 상기 투표확인종료코드(EC)가 존재하지 않는 것으로 검증되는 것을 특징으로 하는 투표결과의 반영 여부를 검증 가능한 전자투표 방법.
  5. 제 4 항에 있어서,
    상기 서명값(VC)은 상기 투표종료확인코드(EC)의 Hash 함수인 Hash(EC)와 타임스탬프(Ts)를 상기 투표자 단말기의 비밀키로 서명하여 산출되는 것을 특징으로 하는 투표결과의 반영 여부를 검증 가능한 전자투표 방법.
  6. 제 4 항에 있어서,
    상기 투표자 단말기의 인증 수단은 상기 투표자 단말기의 공개키와 비밀키를 소정의 인증서버로 송신한 후 상기 인증서버로부터 상기 투표자 단말기로 송신되는 인증서이고,
    상기 투표관리서버의 인증 수단은 상기 투표관리서버의 공개키와 비밀키를 상기 인증서버로 송신한 후 상기 인증서버로부터 상기 투표관리서버로 송신되는 인증서이며,
    상기 개표관리서버의 인증 수단은 상기 개표관리서버의 공개키와 비밀키를 상기 인증서버로 송신한 후 상기 인증서버로부터 상기 개표관리서버로 송신되는 인증서로 이루어지는 것을 특징으로 하는 투표결과의 반영 여부를 검증 가능한 전자투표 방법.
  7. 제 6 항에 있어서,
    상기 투표관리서버와 상기 개표관리서버는 각각 상기 투표자명단(UserDB)에서 투표확인종료코드(EC)가 존재하지 않는 것으로 검증되고, 상기 투표자 단말기로부터 전송받은 상기 투표자 단말기의 인증서를 통하여 상기 인증서버에 송신하여 상기 인증서버로부터 인증이 이루어지면 각각의 인증서를 상기 투표자 단말기로 전송하는 것을 특징으로 하는 투표결과의 반영 여부를 검증 가능한 전자투표 방법.
  8. 제 4 항에 있어서,
    상기 투표자 단말기의 인증 수단은 상기 투표자 단말기의 공개키이고,
    상기 투표관리서버의 인증 수단은 상기 투표관리서버의 공개키이며,
    상기 개표관리서버의 인증 수단은 상기 개표관리서버의 공개키인 것을 특징으로 하는 투표결과의 반영 여부를 검증 가능한 전자투표 방법.
  9. 제 8 항에 있어서,
    상기 투표관리서버와 상기 개표관리서버는 상기 (a)단계에서 상기 투표자 단말기로부터 상기 투표자 단말기의 패스워드를 해쉬(Hash)한 패스워드해쉬값(PCV)을 수신하고,
    상기 투표관리서버와 상기 개표관리서버는 상기 (b-2)단계에서 수신한 상기 Hash(EC)를 각각 해쉬(Hash)하여 상기 투표자명단(UserDB)에서 패스워드해쉬값(PCV)이 존재하지 않는 것으로 검증이 이루어지면 각각의 공개키를 상기 투표자 단말기에 전송하는 것을 특징으로 하는 투표결과의 반영 여부를 검증 가능한 전자투표 방법.
  10. 제 4 항에 있어서,
    상기 (b-4)단계는,
    (b-41) 상기 투표자 단말기가 상기 개표관리서버에서 생성된 제2난수(sk1)를 상기 개표관리서버로부터 상기 투표자 단말기의 공개키로 암호화한 제2난수암호값(CSK1)을 수신하는 단계;
    (b-42) 상기 투표자 단말기가 상기 제2난수암호값(CSK1)을 상기 투표자 단말기의 비밀키로 복호화하여 상기 제2난수(sk1)를 구하는 단계;
    (b-43) 상기 투표자 단말기가 상기 제2난수(sk1)를 이용한 대칭키 암호알고리즘으로 상기 제1난수(sk2)를 암호화하여 제1난수암호값(CSK2)을 생성하여 상기 개표관리서버로 전송하는 단계;
    (b-44) 상기 투표자 단말기가 상기 제2난수(sk1)와 제1난수(sk2)를 XOR(exclusive-OR) 연산을 하여 세션키(ViC_key)를 구하는 단계;
    (b-45) 상기 투표자 단말기는 상기 개표관리서버로부터 상기 (a)단계에서 생성된 서로 다른 종류의 티켓중 하나인 티켓(T)을 암호화한 암호화된 티켓(CT)을 수신하는 단계; 및
    (b-46) 상기 투표자 단말기가 상기 암호화된 티켓(CT)을 상기 세션키(ViC_key)로 복호화하여 상기 티켓(T)을 생성하는 단계;를 포함하는 것을 특징으로 하는 투표결과의 반영 여부를 검증 가능한 전자투표 방법.
  11. 제 10 항에 있어서,
    상기 개표관리서버는 상기 투표자 단말기로부터 전송받은 상기 제1난수암호값(CSK2)을 상기 제2난수(sk1)로 복호화하여 상기 제1난수(sk2)를 구하고, 상기 제2난수(sk1)와 제1난수(sk2)를 XOR(exclusive-OR) 연산을 하여 세션키(ViC_key)를 구하며, 상기 (a)단계에서 생성된 서로 다른 종류의 티켓중 하나인 티켓(T)을 상기 세션키(ViC_key)로 암호화한 암호화된 티켓(CT)을 구하는 것을 특징으로 하는 투표결과의 반영 여부를 검증 가능한 전자투표 방법.
  12. 제 10 항에 있어서,
    상기 대칭키 암호알고리즘은 상기 투표자 단말기와 상기 개표관리서버와의 SSL 통신 및 TLS 통신 중 어느 하나로 대체가능한 것을 특징으로 하는 투표결과의 반영 여부를 검증 가능한 전자투표 방법.
  13. 제 4 항에 있어서,
    상기 암호화된 투표값(xi)은 상기 투표내용(v), 상기 개표검증비밀번호(r) 및 상기 티켓(T)를 상기 개표관리서버의 공개키로 암호화하여 산출되는 것을 특징으로 하는 투표결과의 반영 여부를 검증 가능한 전자투표 방법.
  14. 제 4 항에 있어서,
    상기 (b-7)단계는,
    (b-71) 상기 투표관리서버가 상기 암호화된 투표값(xi)과 암호화서명투표값(si)를 획득하여 상기 투표자 단말기의 공개키로 상기 암호화서명투표값(si)의 서명을 검증하는 단계;
    (b-72) 상기 암호화서명투표값(si)의 서명 검증이 이루어지면 상기 투표관리서버가 상기 투표자명단(UserDB)에 상기 투표자 단말기의 인증 수단, 타임스탬프(Ts) 및 서명값(VC)을 저장하는 단계;
    (b-73) 상기 투표관리서버가 상기 암호화된 투표값(xi)을 상기 투표관리서버의 비밀키로 서명하여 상기 서명투표값(yi)를 생성하는 단계; 및
    (b-74) 상기 투표관리서버가 상기 서명투표값(yi)를 상기 투표자 단말기로 전송하는 단계;를 포함하는 것을 특징으로 하는 투표결과의 반영 여부를 검증 가능한 전자투표 방법.
  15. 제 4 항에 있어서,
    상기 투표관리서버는 Hash(EC+2)를 전송받으면 상기 투표자명단(UesrDB)에 기록된 상기 투표종료확인코드(EC)가 올바른 값인지 검증하고, 상기 투표종료확인코드(EC)가 올바른 값으로 검증되면 상기 투표함(VoteDB)에 난수 서열, 암호화된 투표값(xi) 및 서명투표값(yi)를 저장하는 것을 특징으로 하는 투표결과의 반영 여 부를 검증 가능한 전자투표 방법.
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
  21. 삭제
  22. 삭제
  23. 삭제
  24. 삭제
KR1020040040946A 2004-06-04 2004-06-04 투표결과의 반영 여부를 검증 가능한 전자투표 방법 및시스템 KR100653361B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020040040946A KR100653361B1 (ko) 2004-06-04 2004-06-04 투표결과의 반영 여부를 검증 가능한 전자투표 방법 및시스템
JP2004202657A JP3854978B2 (ja) 2004-06-04 2004-07-09 転造フィンチューブ用フォーミングディスク

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020040040946A KR100653361B1 (ko) 2004-06-04 2004-06-04 투표결과의 반영 여부를 검증 가능한 전자투표 방법 및시스템

Publications (2)

Publication Number Publication Date
KR20050116050A KR20050116050A (ko) 2005-12-09
KR100653361B1 true KR100653361B1 (ko) 2006-12-06

Family

ID=35495626

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020040040946A KR100653361B1 (ko) 2004-06-04 2004-06-04 투표결과의 반영 여부를 검증 가능한 전자투표 방법 및시스템

Country Status (2)

Country Link
JP (1) JP3854978B2 (ko)
KR (1) KR100653361B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012033535A2 (en) * 2010-09-11 2012-03-15 Chaum, David Remote voting with integrity and resistance to improper influence

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4714482B2 (ja) * 2005-02-28 2011-06-29 株式会社日立製作所 暗号通信システムおよび方法
KR100856007B1 (ko) * 2006-09-06 2008-09-02 성균관대학교산학협력단 암호화 기기의 동작 검증 방법 및 이를 이용한 전자투표검증 시스템
KR100848314B1 (ko) * 2006-11-06 2008-07-24 한국전자통신연구원 무선 단말기를 이용한 전자투표 장치 및 방법
KR100912532B1 (ko) * 2006-12-01 2009-08-18 한국전자통신연구원 신뢰 컴퓨팅 환경에서 각 참여자가 상호 보증 기능을 갖는인터넷 전자투표 방법 및 시스템
JP5401701B2 (ja) * 2009-06-29 2014-01-29 東海ゴム工業株式会社 筒状金具の製造方法及び該筒状金具を用いた防振ゴムブッシュの製造方法
KR101139898B1 (ko) * 2010-09-14 2012-04-30 주식회사 이맥소프트 전자투표 방법
KR101133183B1 (ko) * 2010-09-14 2012-04-06 주식회사 이맥소프트 개인정보 보호를 강화한 전자투표방법
CN105043153A (zh) * 2015-07-28 2015-11-11 成信绿集成股份有限公司 一种用于低低温省煤器的新型换热管

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20010091742A (ko) * 2000-03-17 2001-10-23 이임영 안전한 전자 투표 시스템

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20010091742A (ko) * 2000-03-17 2001-10-23 이임영 안전한 전자 투표 시스템

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012033535A2 (en) * 2010-09-11 2012-03-15 Chaum, David Remote voting with integrity and resistance to improper influence
WO2012033535A3 (en) * 2010-09-11 2012-08-09 Chaum, David Remote voting with integrity and resistance to improper influence

Also Published As

Publication number Publication date
JP2005342786A (ja) 2005-12-15
JP3854978B2 (ja) 2006-12-06
KR20050116050A (ko) 2005-12-09

Similar Documents

Publication Publication Date Title
CN110224993B (zh) 基于区块链的可追责匿名电子投票方法及系统
Liaw A secure electronic voting protocol for general elections
Joaquim et al. REVS–a robust electronic voting system
ES2255455B1 (es) Metodo para votacion electronica segura y protocolos criptograficos empleados.
Feng et al. P2BA: A privacy-preserving protocol with batch authentication against semi-trusted RSUs in vehicular ad hoc networks
Heiberg et al. Improving the verifiability of the Estonian Internet Voting scheme
JP4818264B2 (ja) リスト署名を生成する方法及びシステム
Chow et al. Robust Receipt-Free Election System with Ballot Secrecy and Verifiability.
Chen et al. The design of a secure anonymous internet voting system
KR20190076535A (ko) 블록체인을 이용한 익명 투표 시스템 및 그 방법
CN112995136A (zh) 一种基于联盟链的k-out-of-m匿名投票方法
Nguyen Thi et al. Enhanced security in internet voting protocol using blind signatures and dynamic ballots
Wei et al. Blockchain-based electronic voting protocol
Wu et al. An electronic voting mechanism for fighting bribery and coercion
Kulyk et al. Coercion-resistant proxy voting
KR100653361B1 (ko) 투표결과의 반영 여부를 검증 가능한 전자투표 방법 및시스템
Chang et al. An anonymous voting mechanism based on the key exchange protocol
Smart et al. True trustworthy elections: remote electronic voting using trusted computing
Haines et al. Sok: Secure e-voting with everlasting privacy
Acquisti Receipt-free homomorphic elections and write-in voter verified ballots
Malina et al. Secure electronic voting based on group signatures
Buccafurri et al. Allowing continuous evaluation of citizen opinions through social networks
JP4309367B2 (ja) 電子投票システム及び電子投票方法
KR100362603B1 (ko) 전자 투표 방법
Chung et al. Casting ballots over internet connection against bribery and coercion

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
J201 Request for trial against refusal decision
N231 Notification of change of applicant
B701 Decision to grant
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20121004

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20140120

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20160426

Year of fee payment: 10

LAPS Lapse due to unpaid annual fee