17319

cdc wiki
Com222 (토론 | 기여)님의 2022년 6월 19일 (일) 16:35 판
이동: 둘러보기, 검색

프로젝트 개요

기술개발 과제

국문 : 블록체인을 이용한 컴퓨터과학부 전자투표 시스템

영문 : Electronic Voting System Based on Blockchain for CS Students

과제 팀명

17319

지도교수

안상현 교수님

개발기간

2022년 3월 ~ 2022년 6월 (총 4개월)

구성원 소개

서울시립대학교 컴퓨터과학부 2017XXX0** 김준규(팀장)

서울시립대학교 컴퓨터과학부 2017XXX0** 이재원

서울시립대학교 컴퓨터과학부 2017XXX0** 이강산

서울시립대학교 컴퓨터과학부 2019XXX0** 이현민

서론

개발 과제의 개요

개발 과제 요약

이번 프로젝트는 서울시립대 컴퓨터 과학부 학생들을 위한 블록체인 기반 전자투표 서비스 개발이 목표이다. 프로젝트를 개발하는 과정에서 투표의 4대 원칙을 기본으로 준수하여 진행할 것이며, 나아가 투표 내용을 암호화하여 블록체인에 저장하고 투표가 종료되면 암호화된 투표 내용을 복호화하지 않은 상태에서 집계할 수 있도록 만들고자 한다. 이를 통해 기존 전자투표 서비스의 문제점 중 보안과 신뢰성 문제점들을 보다 개선해 나갈 것이며, 더 나아가 8가지의 평가 기준[1] 을 적용하여 프로젝트를 통해서 개발된 서비스의 안전성을 평가할 것이다.

개발 과제의 배경

기존에 널리 사용되던 전자투표 서비스들을 조사하면서 여러 문제점을 발견하였다. 우선 구글 폼에서는 선거의 기본 4대 원칙 중 하나인 평등선거가 보장되지 않을 가능성이 존재한다. 선거 주체가 1인 1 투표를 설정할 수 있으나, 임의로 설정을 변경하여, 실제 투표 결과와는 무관하게 다중 투표로 투표조작이 가능하다. 또 사용자 인증을 구글 계정으로 진행하기 때문에, 1인 다 계정이 가능한 구글 계정이기 때문에 이 또한 평등선거를 보장하지 않는다. 그렇다고 이러한 문제를 막기 위해 구글 계정 정보를 입력받으면 비밀선거가 보장되지 않는다. 최근 사용하는 유니보트의 경우 개인키암호화와 Shamir 알고리즘으로 비밀키를 나누어 저장하는 등 보안성은 신뢰할 수 있으나, 개인의 투표가 집계 과정에서 어떻게 처리되는지 투표자가 알기 어렵다. [2]

이에 기존의 투표방식의 단점에서 자유로운 투명성이 보장되는 블록체인 전자투표를 개발하고자 한다.

블록체인은 프라이빗 블록체인인 하이퍼레저 패브릭을 이용한다. 공개형 블록체인은 누구나 참여할 수 있고 누구나 검증 가능한 플랫폼이지만 블록 생성과 전파에 많은 컴퓨팅 자원과 네트워크 리소스를 필요로 하는 단점이 있다. 반면, 허가형 블록체인은 인증받은 사용자만 접근하기 때문에 블록 생성을 위한 리소스가 공개형 블록체인 기술에 비해 상대적으로 적고 인증과 인가를 적용하여 원장 조회 및 갱신을 통해서 안정적으로 운영할 수 있다는 장점이 있다. 더불어 하이퍼레저 패브릭은 기존에 다루어지던 이더리움 기반 투표 시스템이나 자체로 구현한 공개형 블록체인 솔루션에 문제점으로 지적되고 있는 블록 생성 시 합의 비용이 적다는 강점도 있다. 프로젝트의 적용 범위가 학과 혹은 학교 내의 학생으로 제한되기 때문에 쉽게 허가형으로 네트워크를 구성하여 프로젝트를 진행할 수 있기에, 허가형 블록체인 기술인 하이퍼레저 패브릭을 활용하는 것이 적합하다고 판단했다.[3]

전자투표를 이용하는 유권자가 수행한 투표의 내용이 중간에 바뀌지 않아야 한다. 블록체인의 분산되어 저장된 데이터의 위변조가 불가능하다는 특성을 이용하면 투표자의 투표내용을 수정하는 행위를 막아 투표 내역의 일관성을 보존할 수 있다.

또한 전자투표에서는 투표 내역을 통해 투표자의 투표 내용을 유추할 수 없어야 한다.

비밀키 암호화로는 집계 과정에서 투표 내역과 유권자 정보의 노출 위험성이 존재한다. 이에 동형암호를 이용하여 집계할 때 암호화된 투표내역을 복호화하여 정보를 처리하지 않고 암호화된 상태로 더하여 집계하여 비밀 투표의 원칙을 지킬 수 있도록 한다. 동형암호는 라이브러리 node-seal [4] 을 사용한다.


17319-009.png

사진) 동형암호를 사용하는 투표 집계[5]


성공적으로 개발이 이루어지면 선거 개최자의 입장에서는 선거 관리자와 같은 중개기관 없이 신뢰성 있는 투표를 제공할 수 있고, 오프라인 투표 대비 투표 과정의 간소화를 통해 비용 절감 효과를 기대할 수 있다. 투표 참여자의 관점에서는 비제한적인 투표 장소로 인하여 물리적 한계를 벗어나 투표에 참여할 수 있고, 오프라인 투표 대비 쉬운 참여로 인해 투표율 증가를 기대할 수 있다.

개발 과제의 목표 및 내용

개발 과제의 목표는 기존 교내에 사용되는 구글 폼 형식의 투표방식에서 벗어나 보다 신뢰성과 편의성을 강조하는 컴퓨터 과학부 전용 전자투표 서비스를 개발한다.

하이퍼레저 패브릭 네트워크 노드를 구성한다. 블록체인의 위변조 불능의 특성을 위하여 블록 데이터를 보유하는 4개의 Peer 노드와 Orderer 노드를 구성한다.

사용자 클라이언트에서 블록체인과 상호작용할 수 있도록 통신을 구현한다.

투표 내역을 암호화하기 위해 동형암호 알고리즘을 이용한다. 투표 내역은 벡터 형식으로 n번 후보에게 표를 행사할 시 n번째 벡터의 값만 1이고 나머지는 0인 벡터를 만들어 암호화하게 된다. 블록체인에 암호화된 선거 내역을 저장하여 투표 내역의 일관성을 유지하고, 개표 시에는 각 암호문을 복호화하지 않고 이를 합산하여 복호화하는 과정을 구현한다. 복호화를 최종 합산 결과에서만 실행하여 비밀투표를 구현한다.

학생 인증을 통해 네트워크에 참여한다. 학생들에 대해 네트워크에 접근하기 위한 인증서를 발급하여 활용한다. 투표는 블록체인의 컨트랙트를 통해 중복투표를 방지하도록 하고 인증서에 접근 권한을 설정하여 유권자만 권리가 있는 투표에 참여하도록 한다.

기존 블록체인은 가명성은 제공하지만, 익명성은 제공하지 않는다. 가명성이란 특정 주소를 소유자와 연결할 수는 없지만, 해당 주소의 투표 내역을 지우거나 감출 수 없기 때문에, 해당 사용자를 특정할 수는 없지만 어떤 곳에 투표했는지 알 수 있는 특징이며, 익명성이란 특정 주소를 소유자와 연결할 수 없음은 물론이고 투표 내역 등도 연결할 수 없는 특징을 의미한다. [6]

이를 최소화하기 위해 사용자의 투표 내용을 암호화된 상태 합산하여 투표 결과를 산출, 조회하도록 구현하여 익명성을 제공하도록 한다.

투표 개설, 투표 참여, 투표 집계는 스마트 컨트랙트로 작성한다.

관련 기술의 현황

관련 기술의 현황 및 분석(State of art)

  • 전 세계적인 기술현황

블록체인

블록체인은 분산 컴퓨팅을 기반으로 하는 데이터 위변조 방지 기술이다. P2P 방식으로 모든 데이터들이 체인 형태로 연결되어 분산저장하여 동일한 데이터를 통해 임의로 수정할 수 없고, 새로운 데이터에 대하여 네트워크에 참여한 노드의 절반 이상으로부터 검증을 받아 유효한 데이터만이 새로 등록될 수 있도록 한다.


Hyperledger Fabric

기업을 대상으로 하는 조건들을 만족하도록 구상된 프라이빗 블록체인 프로젝트

허가형 블록체인 Hyperledger Fabric에서는 CA에서 인증서 발급을 통해 허가된 참여자들만 접근을 허용한다. 퍼블릭 블록체인은 모든 사람이 참여할 수 있어, 검증 및 블록생성 합의 과정에서 비용이 적고 블록 생성 속도가 빠르다.

스마트 컨트랙트 작성에 일반 프로그래밍 언어 사용 Hyperledger Fabric는 블록체인 네트워크에서 사용되는 스마트 컨트랙트를 ‘체인코드’로 작성한다. 그리고 이더리움에서 스마트컨트랙트를 작동시키기 위해 Solidity로 작성된 프로그램을 만들어야 하지만 Hyperledger Fabric은 Go, Java, Javascript 같은 일반 프로그래밍 언어를 사용한다.

멀티 블록체인 패브릭에서는 채널이라는 개념을 통해 전체 시스템을 다수의 채널로 구분하고 채널마다 다른 블록체인인 레저를 유지하여 다수의 블록체인과 같은 개념을 지원할 수 있다. 채널 별로 독립된 블록과 참여자를 유지할 수 있으며 한 참여자는 특정 다수 채널에 참여할 수 있다.


동형암호

암호화된 상태에서 연산을 수행할 수 있는 암호체계로 초기에는 유한동형암호를 설계하여, 연산 시 증폭되는 에러 제한 안에서 연산할 수 있도록 하였으나, 이에 bootstrapping을 통해 다수의 연산을 가능하도록 한 것이 완전동형암호이다.

BGV[7]

RLWE를 기반으로 하는 그 이전보다 성능이 더 좋은 완전 동형암호 기술로, L의 arithmetic circuit complexity에서 bootstrapping 없이 게이트 당 , bootstrapping으로 최적화 시 의 성능을 보장한다.

CKKS[8]

CKKS는 실수에 적용할 수 있는 완전 동형암호 기술로, 암호문을 만들 때 보안을 위하여 약간의 error로 동작하는 noise를 추가하고 이 암호문에 대한 근사 덧셈과 곱셈을 지원한다. 이 때 추가하는 noise를 근사 연산할 때 발생하는 오차 수준으로 유지한다. 연산 과정에서 커지는 modulus를 줄이는 Rescaling을 통해 연산 결과의 암호문을 기존 평문의 근사치에 대한 암호문으로 만든다.


  • 특허조사 및 특허 전략 분석

등록번호/일자 1023810280000 (2022.03.28), 출원인 신철우 블록체인 이용 전자 투표 관리 시스템 및 방법(본 발명은 블록체인을 이용하여 투표 처리하면서 각종 투표 방식들을 전자 투표로 통합적으로 관리 및 운용함과 동시에 미러링 백업 동기화를 수행하도록 구현한 블록체인 이용 전자 투표 관리 시스템 및 방법에 관한 것으로, 미러링 백업 서버가 전자 투표 제공 서버의 전자 투표 처리에 대해 미러링 백업을 수행하여 전자 투표 제공 서버와의 동기화를 유지. 이를 통하여 전자 투표 제공 서버 에러 발생시 대신하여 운용 가능하며, 투표 값 정보를 서로 공유하기 때문에 이를 대조해서 데이터 위조나 변조를 수행할 수 없도록 저장해둔 후 블록체인 서버에 전송. 블록체인 서버에서는 전송받은 정보를 포함한 투표 블록 생성, 정보 상호 검증이 완료되면 체인에 결합하여 투표를 완료하는 것이 특징.) 효과로 관리자가 유권자들의 투표 내용을 확인할 수 없어 투표 진행 중의 상황 파악이나 투표 내용 조작을 할 수 없도록 하며, 이에 전자 투표의 활성화는 물론이고 전자 투표의 비밀성 및 보안성을 강화할 수 있으며, 투표 과정 전반에 걸쳐 발생하는 투표 이력에 대한 관리뿐만 아니라, 중복투표 및 무자격자에 의한 투표 검증 등 투표 전반에 걸친 과정의 신뢰성을 완전하게 검증할 수 있어, 보다 높은 수준의 무결성을 보증해 줄 수 있다는 것이다. 투표에 소모되는 시간이 대폭 단축되며, 실시간으로 진행되기 때문에 투표가 끝남과 동시에 개표 결과를 바로 확인 가능. 개표 인원이 필요치 않아 개표 업무가 효율적이며, 무효표 발생을 방지할 수 있다. 미러링 백업 운영으로 중앙 서버의 부담을 감소시키면서 데이터 처리 용량을 분산시켜 효율적인 운영이 가능. 전자 투표 제공 서버에 문제가 발생했을 때, 미러링 백업 서버로 대신 운용 가능.


등록번호/일자 1021435300000 (2020.08.05), 출원인 ㈜ 엔티시스 블록체인 기반의 온라인 비밀 투표 시스템을 구축하는 전자투표 서버 및 이의 동작 방법(본 발명의 다양한 실시예 중 하나에 따른 전자투표 서버는, 사용자 단말기로부터의 디지털 인증서 요청에 따른 디지털 인증서 발급을 수행하는 인증서 서버로부터 사용자의 인증 결과를 수신하는 사용자 인증 확인부; 상기 사용자 단말기로부터 투표 개설에 대한 정보를 수신하여 블록체인 시스템 상에서 특정 투표의 개설을 수행하는 투표 개설 관리부; 상기 디지털 인증서를 통해 상기 특정 투표에 대한 투표권을 보유한 것으로 인증된 사용자에게 블록체인 지갑 주소를 발급하는 사용자 정보 관리부; 블록체인의 노드별 데이터에 대한 위변조 탐지를 실시간 또는 임의의 시간 간격으로 수행하는 위변조 탐지부; 투표가 종료된 이후 투표 결과에 대한 집계 처리를 수행하여 투표 집계 결과를 생성하는 개표 집계부; 및 상기 개표 집계부에 의해 생성된 투표 집계 결과에 대한 검증을 수행하는 투표 결과 검증부를 포함하여 구성될 수 있다.) 효과로, 투표자들과 관련된 정보는 전자투표 서버 상에서 관리하고 투표와 직접 관련된 정보는 블록체인 시스템의 각 노드 상에서 관리되도록 함으로써 비밀 투표 원칙을 구현할 수 있으며, 전자투표 서버 및 블록체인 시스템의 각 노드들에서 관리되는 투표 관련 데이터의 해시값 비교 등을 통해 데이터의 위변조 감지를 수행할 수 있다.


등록번호/일자 1023574600000 (2022.01.26), 출원인 한양대학교 산학협력단, 국민대학교 산학협력단 동형 암호 기술 기반 전자 투표 시스템 및 그 방법(본 발명은 외압 저항성과 확인 보장성을 만족, 블록체인을 통해 투표과정에 대한 조작 방지가 가능하도록 할 수 있는 동형 암호 기술 기반 전자 투표 시스템 및 그 방법을 제공하고자 한다. 또한, 비상호적 영지식 증명과의 연결을 통해 정당한 투표자임을 증명할 수 있으며, 투표 메시지가 정당한 범위 내에 있는 것을 증명할 수 있고자 했으며, 검증 가능 복호화 및 동형 암호 기술을 통해 관리자가 복호화하여 공개한 투표 결과가 조작되지 않으며, 블록체인의 투표들을 그대로 집계한 결과라는 것을 보장할 수 있다는 것이 특징이다.)


등록번호/일자 017535280000 (2017.06.27.), 출원인 인하대학교 산학협력단 동형 암호를 이용한 실시간 온라인 투표 방법 및 장치(본 발명의 실시예에 따른 온라인 투표 방법은, 동형 암호용 공개키, 개인키의 쌍을 생성하여 상기 개인키를 저장하고, 상기 공개키를 사용자 단말로 전송한다. 상기 사용자 단말로부터 투표가 실시됨에 따라 상기 투표에 대한 투표 값을 상기 공개키를 이용하여 각각 암호화하여 계산하고, 중간 집계 서버에서 상기 암호화된 투표 값에 대한 중간 집계를 수행하며 상기 암호화된 투표 값에 대한 유효성 확인 벡터가 전송됨에 따라 상기 유효성 확인 벡터의 구성요소 각각에 대하여 상기 개인키를 이용하여 복호화하는 단계를 거친다. 또한, 상기 복호화된 투표 값들에 기초하여 최대값을 생성하는 후보자를 당선자로 선정하게 된다. 이를 통해서 본 발명의 실시 예에 따른 온라인 투표 시스템은 모든 유권자로부터 투표가 종료됨에 따라 실시간으로 집계가 가능한 실시간성을 보장하며, 무효표 역시 실시간으로 선별이 가능한 장점을 지닌다.)

  • 특허전략

매년 블록체인 관련 특허출원이 늘어나고 있고, 우리 팀에서 사용하려는 동형암호를 이용하여 확인을 보장하려는 방식이나 하이퍼레저 패브릭 CA에서 인증서를 발급하여 사용자를 관리하는 방식에서 특허 침해를 주장할 가능성이 있다. 서로 다른 투표를 병렬 진행하기 위하여 채널을 구성할 때 CA를 다수 구성하는 방식이 하나의 온라인 투표 및 인증서 서버를 할당하는 방식과 다르다는 점과 최종 암호문을 확인하기 위한 연산을 지원한다는 점이 영지식 증명을 이용하여 최종 암호문과 비밀키를 사용자에게 제공하는 것과 차이가 존재함을 강조한다.

  • 기술 로드맵

블록체인 블록체인은 분산 컴퓨팅을 기반으로 하는 데이터 위변조 방지 기술이다. P2P 방식으로 모든 데이터들이 체인 형태로 연결되어 분산저장하여 동일한 데이터를 통해 임의로 수정할 수 없고, 새로운 데이터에 대하여 네트워크에 참여한 노드의 절반 이상으로부터 검증을 받아 유효한 데이터만이 새로 등록될 수 있도록 한다. 가장 초기에 위 개념을 실증한 것은 사토시 나카모토의 비트코인이다. 가장 초기 블록체인으로 원장에 기록되는 것은 특정 소유주에서 다른 특정 소유주로 이전하기 위한 트랜잭션을 주로 다룬다. 이후 이더리움으로 대표되는 보다 넓은 범위에서 특정 상태를 변화시킬 수 있는 스마트 컨트랙트를 지원하는 블록체인들이 등장한다. 그리고 공개된 사용자를 위한 네트워크에서 만족시킬 수 없는 성능이나 공개성을 보완하기 위해 참여자를 제한하는 프라이빗 블록체인도 등장한다.

동형암호 17319-010.png 동형암호의 동형은 대수학의 준동형에서 유래한 단어로 암호화(Encryption)된 데이터를 복화화없이 연산할 수 있는 암호문 상태에서 연산한 결과가 복호화 시 평문으로 연산한 결과와 동일한 값을 도출하는 4세대 암호기술을 의미한다. 1978년 최초 동형암호[9] 의 발표 당시에는 이론과 안정성의 한계로 사용에 제약이 있었으나, 2009년 Gentry의 유한동형암호(SHE, Somewhat Homomorphic Encryption, 제한된 횟수의 연산만 수행가능한 암호)와 완전동형암호(FHE, Fully Homomorphic Encryption, 암호화된 상태의 데이터를 원하는 모든 연산을 적용하여 복잡한 연산이 가능한 암호)제안 이후에 꾸준한 연구를 지속해 왔고. BGV, CKKS 등의 알고리즘을 사용하는 SEAL, Helib, Hean 등 오픈소스 라이브러리가 공개되고 있다.

시장상황에 대한 분석

  • 경쟁제품 조사 비교

현행 종이 투표(대면)

특징은 지정된 투표소에서 종이 명부에 의한 선거 인명 확인 및 종이 투표지에 직접 기표, 투표 결과는 개표소에서 집계

강점은 수작업 투표 및 개표 진행으로 시스템 장애 가능성이 거의 없다. 투표 결과에 대한 조작 시비가 상대적으로 적다. 전통적인 투표방식으로 정보화 소외계층 및 노령층이 투표하기가 쉽다. 엎치락뒤치락하는 개표 과정을 드라마틱하게 확인할 수 있다.

약점은 투·개표에 드는 인력과 비용이 많이 소모된다. 투표 실수 또는 투표지 오염에 따라 무효표가 발생할 수 있다. 개표원의 판단기준에 따라 투표 결과가 매번 달라질 수 있다.


유니 보트 비대칭암호화, Shamir Secret Sharing(SSS) 알고리즘을 이용한다.

특징은 비대칭암호화 방식으로 암호화를 하며, 해당 암호의 암호키를 Shamir Secret Sharing(SSS) 알고리즘을 이용해서 선관위 위원들이 나눠 가진다.

강점은 비대칭암호화를 사용하기 때문에 암호화와 복호화에 필요한 키가 서로 달라서 대칭키 암호화 방식보다 보안성이 우수하다. Shamir Secret Sharing(SSS) 알고리즘을 이용하여 비밀키를 관리한다. 따라서 복호화를 위해서는 Threshold 이상의 조각들이 필요하기 때문에 조각의 일부가 소실되거나, 유출되더라도 공격으로부터 안전하다.

약점은 비대칭 암호화 알고리즘의 속도가 매우 느리며, 키 길이 또한 매우 길기 때문에 보다 많은 연산 능력을 필요로 하고 있다. 모든 구성원이 가지는 shared secret이 동등하기 때문에 shared key를 보안 등급에 따라 분류하거나 나누기 어렵다. 또한, 복호화나 비밀 키 재설정을 위해 shared key를 공유할 때,일부러 틀린 비밀 키를 주는 것을 방지할 수 없다.


코나 체인 블록체인 주주총회, 설문 여론조사[10]

특징은 코나아이라는 회사가 지역화폐 플랫폼에 블록체인 기술을 기반으로 한 투표 및 여론조사 서비를 접목하고자 만든 것이다. 블록체인 기술 중에서도 하이퍼레저 패브릭을 이용하여 구현했다.

강점은 지속적인 참여 동기를 제공하기 위해 참여에 대한 보상을 지역화폐 포인트로 제공한다.[11] 기존 온라인 설문조사 서비스 대비 비용도 30~50% 절감. 실시간으로 설문조사 진행 현황을 확인할 수 있다.

약점은 개인이 투표를 개설하는 부분에 있어서 다소 불편한 감이 있다. 현재 익명 투표 서비스 이용이 불가능하다. 관련 기술에 대한 서술이 부족하다. PC전용 UI가 없다.


더 폴 블록체인 기반 survey poll 서비스

특징은 DID를 이용하여 투표 참여를 위한 개인 인증 정보는 사용자의 휴대폰에만 저장되고 속성정보를 익명으로 하여 익명성을 보장한다.

강점은 투표 및 설문 조사에 대한 리워드로 메타 코인을 지급하여 참여율을 높인다.

약점은 사용자에게 credential을 발급하는 과정에서 발급 주체를 신뢰해야 한다. 이러한 신뢰 관계를 바탕으로 탈중앙화를 이룬다.

  • 마케팅 전략 제시
내부환경
강점 약점
1) 동형암호를 이용한 투표내용 암호화.

2) 기존 온라인 투표 서비스보다 보안성과 신뢰성 보안.

3) 컴퓨터과학부 전용이기 때문에 접근성 상승

1) 사용자가 투표한 결과가 체인 서버에 올라가기까지의 과정에서 보완 취약이 존재.

2) 개인이 투표하는 과정에서 외부 환경적 요소가 개입하였을 때, 부정투표의 존재 가능.

3) 시스템 제공자가 비밀키를 소유하고 있어서 완전 비밀투표를 보장하기 어렵다.

4) 기술력 한계

외부 환경
기회 위협
1) 비대면 수업으로 인한 투표의 어려움 존재

2) 대면 투표 대비 비용 절약

3) 현재 사회적으로 봤을 때, 온라인 투표를 활성화하려는 모습들이 보인다.

1) 투표자들이 느끼는 보안에 대한 위협.(개인정보, 투표조작 등)

2) 실질적으로 투표 결과에 영향을 주는 투표조작 행위

전략
S+O 전략 W+O 전략 S+T 전략 W+T 전략
1) 비대면 투표방식을 제시할 수 있다.

2) 기존 투표 서비스보다 투표 개설시 비용 절감.

1) 온라인 투표의 사회적 필요성을 어필하면서 온라인 투표을 부정적으로 바라보는 사람들의 인식을 개선한다.

2) 이용 약관을 통해 시스템 상에서의 부정행위가 없음을 알린다.

1) 동형암호 공개키로 암호화된 투표 내용을 블록체인에 등록, 집계 과정에서 만들어지는 복호화직전의 최종 암호문과 블록체인의 등록된 암호문들의 합을 비교해서 투표 집계 과정의 무결성을 보여준다. 1) 다수의 peer 노드를 활성화 하여 외부로부터의 투표조작 행위의 난이도를 높인다.

2) 투표 종료시 투표 결과를 누구나 조회 가능하게 구현한다.

3) 여러 사례를 공부하여 보안을 강화할 수 있는 방안을 강구한다.

따라서 마케팅 전략으로 비용적인 측면 강조, 컴퓨터과학부에서 투표로 사용하기 위한 접근성을 증가시켜 더 다양한 투표에서 사용하기 편리한 전자투표 서비스를 제공한다. 차별화로는 동형암호 개인 키로 복호화하기 전의 암호문을 블록체인에 등록하여 투표자들이 모두 공개된 내용들을 합산하여 확인할 수 있도록 한다.

개발과제의 기대효과

기술적 기대효과

  • 기존 온라인 투표 서비스보다 보안성과 신뢰성이 보완된 서비스를 사용 가능.
  • 투표 집계 과정의 무결성 검증 가능.
  • 비밀 투표의 원칙 보장.

경제적, 사회적 기대 및 파급효과

  • 투표 개설시 비용 절감.
  • 교내 전용으로 접근성 상승.
  • 비대면 투표방식으로 시/공간 제약이 비교적 덜 함.


기술개발 일정 및 추진체계

개발 일정

단계별 세부개발 내용 담당자 시작일 마감일 소요일
하이퍼레저 네트워크 노드 구성 김준규, 이강산 4월 1일 4월 8일 7일
클라이언트 네트워크 통신 이재원, 이현민 4월 8일 4월 15일 7일
학생 인증 이재원, 이현민 4월 15일 4월 22일 14일
투표 개설 체인코드 작성 김준규, 이현민 4월 22일 5월 6일 14일
투표 참여 체인코드 작성 김준규, 이현민 4월 25일 5월 9일 14일
투표 집계 체인코드 작성 김준규, 이현민 4월 28일 5월 12일 14일
참여 가능한 투표 조회 김준규, 이강산 4월 28일 5월 12일 14일
백엔드 김준규, 이현민 4월 28일 5월 12일 14일
프론트 이강산, 이재원 4월 28일 5월 12일 14일
테스트 및 보수 김준규, 이강산, 이재원, 이현민 5월 12일 6월 1일 20일

구성원 및 추진체계

구성원 추진체계
김준규 하이퍼레저 노드 관리, 투표관련 체인코드 구현, 백엔드 개발, 동형암호 적용
이강산 하이퍼레저 노드 관리, 프론트 개발
이재원 하이퍼레저 노드 관리, 디자인 및 프론트 개발
이현민 하이퍼레저 노드 관리, 백엔드 개발

설계

설계사양

제품의 요구사항

번호 요구사항 D or W 비고
1 각 채널의 CA를 통해 재학생 인증 및 유권자 등록 D
2 동형암호 공개키로 투표내용(어느 유권자에게 표를 행사했는지) 암호화 D
3 블록체인에 암호화된 투표내용 등록(IPFS와 연계하여) D
4 투표관리자는 요청을 통해 채널에서 체인코드를 이용해 투표 개설 D
5 사용자는 웹을 통해 투표 참여 D
6 투표 시간 마감 이후 암호화된 데이터를 취합하여 투표 집계 D
7 다수의 채널에 등록된 유권자는 참여 가능한 투표 조회 가능 D
8 다수의 채널에 등록된 유권자는 참여 가능한 투표 조회 가능 D

설계 사양

개념설계안

1번 요구사항은 User는 사용자 등록을 통해 Server에 사용자 정보 및 계정을 등록하고 이 과정 중 서버는 Fabric CA와 통신해 네트워크 참여자로 등록하고 인증서를 발급한다. Server에서는 Fabric CA에 등록하기 위한 admin 정보를 보유하고 있고, 이를 통해 register 요청이 오면 네트워크 참여자로 register 명령을 실행한다.

2번, 3번, 5번 요구사항은 User는 웹에서 투표를 진행하며 서버로부터 만들어진 공개키를 받아 node-seal 라이브러리를 이용해 암호문을 만들고 암호문은 서버로 전송되어 IPFS에 암호문을 등록하고 파생되는 해쉬 값을 Fabric 상에 등록한다.

4번 요구사항은 특정 유저에 대해 투표를 개설할 수 있는 권한을 주고 투표 개설할 수 있도록 한다. 투표 생성시 공개키와 비밀키를 저장하고 User에게 공개키를 제공할 수 있도록 공개된 S3 버킷에 저장한다.

6번 요구사항은 서버에서 비밀키를 이용하여 최종 계산된 RESULT를 복호화하여 결과를 게시한다. RSEULT는 사용자들이 모든 암호문을 이용해 결과를 비교할 수 있도록 하기 위해 IPFS에 등록한다.

7번 요구사항은 참여 불가능한 투표의 경우 서버에서 요청 거부할 수 있도록 하고, 투표 생성 시 학부에 대한 정보를 담아, 학부 수준에서 투표 참여를 제한하도록 한다.

8번의 경우 IPFS로 공개된 암호문을 모두 다운받고 node-seal을 이용해 RESULT를 만들어낼 수 있는 방법을 고지하고 최종 결과 암호문을 공개하여 두 파일의 내용이 같은지 검증할 수 있도록 한다.

프라이빗 블록체인으로 Hyperledger Fabric을 사용하여 인증서 제공을 위한 CA서버와 블록체인 유지를 위한 4개의 Peer와 Orderer를 구성한다.

IPFS는 분산저장을 위한 노드로 외부 서비스를 활용해 유저들의 암호문을 분산 저장한다.

이론적 계산 및 시뮬레이션

상세설계 내용

UI정의

17319-011.png

  1. Sign up & Login Flow

17319-012.png

  1. User’s voting flow

17319-013.png

  1. Create New Vote flow

17319-014.png

  1. Vote result

17319-015.png

유즈케이스 다이어그램

17319-016.png

액터 목록
액터 구분 설명
인증하지 않은 사용자 소비자 학생인증이 되지 않은 방문자
유권자 소비자 인증완료한 유권자, 자격있는 학생
투표 관리자 소비자 투표 개설 및 유권자 관리
서비스 관리자 공급자 서비스 제공


이름 회원가입 및 인증 관련 액터 인증하지 않은 사용자
설명 인증하지 않은 사용자가 회원가입
사건흐름 기본흐름 1. 인증하지 않은 사용자가 메인 화면에서 회원가입을 선택한다.

2. 회원 정보를 입력한다. 3. 서울시립대 포털 이메일을 입력한다. 4. 이메일 인증 여부를 확인한다. 5. 회원가입 완료

대안흐름
예외 흐름 이미 있는 회원 정보의 경우 오류메시지 출력 웹메일과 학번 매칭 안 될 경우, CA 폐기
조건 사전 조건 인증을 완료하지 않은 사용자
사후조건 CA에서 인증서 발급
참고사항 학번 사용자가 입력하고 id로 사용 secret은 사용자 임의로 입력


이름 로그인 관련 액터 유권자, 투표 관리자, 인증하지 않은 사용자
설명 사용자가 어플리케이션에 로그인
사건흐름 기본흐름 사용자가 id/pw를 입력하고 정보가 알맞으면 로그인 요청을 승인함
대안흐름 인증하지 않는 사용자가 로그인을 시도하면 회원가입 창으로 넘어갈 수 있도록 함
예외 흐름 사용자의 id/pw가 매칭이 되지 않으면, 경고 표시와 함께 로그인 창을 유지함
조건 사전 조건 학생 인증과 회원가입이 되어 있어야 함.
사후조건 로그인 완료
참고사항


이름 투표 개설 관련 액터 투표 관리자, 서비스 관리자
설명 투표 관리자가 원하는 투표 항목을 개설
사건흐름 기본흐름 1. 투표 이름 결정

2. 후보자 및 공약 등록 3. 투표 참가 가능 범위 결정 4. 투표 가능 기간 결정 5. 정족수 설정 6. 승인 요청

대안흐름
예외 흐름 투표가 승인되지 않으면 &투표 승인 불가& 출력
조건 사전 조건 투표 관리자 인증이 되어야 함
사후조건 새 투표를 투표 목록에 시작 전인 투표로 추가
참고사항 승인 결과 조회까지는 확인 과정이 필요하여 시간이 걸린다.


이름 투표 목록 조회 관련 액터 유권자
설명 유권자가 참여한 투표, 참여 가능한 투표 조회
사건흐름 기본흐름 참여 가능한 투표 목록을 리스트로 표시.
대안흐름
예외 흐름 투표 목록이 없을시, &투표 목록이 없습니다& 라는 문구 출력
조건 사전 조건 유권자로 로그인 상태여야 한다.
사후조건 디스플레이에 투표 목록 표시
참고사항
이름 투표 목록 조회 관련 액터 투표 관리자
설명 개설한 투표 조회
사건흐름 기본흐름 관리자가 개설한 투표 목록을 리스트로 표시
대안흐름
예외 흐름 투표 목록이 없을시, &투표 목록이 없습니다& 라는 문구 출력
조건 사전 조건 투표 관리자로 로그인된 상태여야 한다.
사후조건 디스플레이에 투표 목록 표시
참고사항


이름 투표 현황 조회 관련 액터 유권자
설명 진행 중인 투표 현황 조회 및 투표 결과 조회.
사건흐름 기본흐름 1. 진행 중일 시 참여율 퍼센테이지 조회

2. 투표 종료 시 해당 투표 결과 조회 3. 투표 참여 버튼 출력

대안흐름
예외 흐름 3-a. 아직 시작을 안 한 투표의 경우, &아직 투표가 시작되지 않았습니다& 문구 출력
조건 사전 조건 투표 목록 조회가 이루어진 상황이어야 함
사후조건 조회한 투표 현황, 투표 페이지로 넘어가는 버튼이 표시됨
참고사항


이름 투표 하기 관련 액터 유권자
설명 진행 중인 투표의 내용(후보자 정보, 제목 등)조회 및 투표 행사
사건흐름 기본흐름 1. 진행 중인 투표의 내용(후보자 정보, 제목 등) 조회

2. 사용자가 원하는 후보자 선택 3. 투표 완료 버튼 선택

대안흐름
예외 흐름 3-a. 사용자가 후보자를 선택하지 않은 경우 &선택한 항목이 없습니다& 출력
조건 사전 조건 투표 현황 조회가 이루어진 상황이어야 함
사후조건 블록체인 서버에 투표 내역 저장 및 투표 현황 조회에 반영
참고사항
이름 투표 집계 관련 액터 투표 관리자, 서비스 관리자
설명 유권자들의 투표 내용을 취합하여 투표 결과를 집계.
사건흐름 기본흐름 1. 서버에서 채널에 취합되어 있는 암호문을 수집 및 연산

2. 연산된 암호문을 채널 분산원장에 등록 3. 개설 시 생성한 비밀키를 이용해 복호화하고 결과 전송

대안흐름
예외 흐름
조건 사전 조건 해당 투표의 투표 가능 기간이 지나야 한다.
사후조건 집계된 투표 내용이 출력.
참고사항


이름 암호문 검증 관련 액터 유권자
설명 유권자들의 투표 내용을 취합하여 분산원장에 등록된 최종 암호문과 비교
사건흐름 기본흐름 1. 채널에 취합된 암호문 수집 및 연산

2. 채널 분산원장에 등록된 값과 연산 결과가 동일한지 비교

대안흐름 1-a. 자신의 암호화된 투표 내역을 제거하고 연산 가능.
예외 흐름
조건 사전 조건 해당 투표의 투표 가능 기간이 지나야 한다.
사후조건 연산 결과가 같은지 검증한다.
참고사항


소프트웨어 설계

17319-017.png

데이터베이스 설계

17319-018.png

결과 및 평가

완료 작품의 소개

프로토타입 사진 혹은 작동 장면

  • 투표 기능

17319-019.png

  • 투표 검증 기능

17319-020.png

  • 메인 화면

로그인을 하지 않았을 때 17319-021.png


로그인을 했을 때 17319-022.png

    • 투표 목록이 없을 경우

17319-023.png

    • 투표 목록이 있을 경우

17319-024.png

  • 회원가입

회원가입 폼에 정보를 입력하고 회원가입 버튼을 누른다. 단, 학번: xxxx92xxxx 형식, 이메일은 학교 포털 이메일 형식을 요구한다. 17319-025.png


올바른 형식이 아니거나 모든 절차를 수행하지 않았을 경우, 이를 알려주는 알림창이 나온다. ex) 학번 형식이 올바르지 않을 경우 17319-026.png


인증번호 전송 버튼을 누르면 전송 완료 문구가 나타나는 동시에 해당 메일로 인증번호가 전송된다. 17319-027.png 17319-028.png


인증번호를 정확히 입력 후, 확인 버튼을 누른다. 인증번호가 정확하면 완료되었다는 문구가 나오고 정확하지 않다면 인증번호 확인을 요청하는 문구가 나온다. 17319-029.png


비밀번호까지 정확히 입력하여 가입하기 버튼을 누른다. 17319-030.png

  • 로그인

로그인 창에서 로그인을 한다. 17319-031.png


메인 화면인 투표 목록 화면으로 리다이렉트된다.

  • 투표 개설

상단 헤더 바에서 투표 개설 버튼을 클릭한다. 17319-032.png


투표 개설 페이지에 있는 내용들(투표명, 투표 기간, 투표 정보, 후보 정보, 정족수, 유권자 수)을 형식에 맞게 기입한다. 17319-033.png 17319-034.png

    • 후보 정보 기입 시

17319-035.png


단, 투표 기간의 시작일이 개설 시간보다 이전의 시간으로 설정할 수는 없다. 17319-036.png 17319-037.png


하단에 관련 사항을 확인하고 동의한다. 17319-038.png

마지막으로 활성화된 하단 투표개설승인요청 버튼을 눌러서 개설 요청을 한다. 17319-039.png


개설 요청이 완료 시, 메인 페이지로 리다이렉트되어 개설한 투표를 확인할 수 있다. 17319-040.png

  • 투표하기

원하는 투표를 클릭하여 해당 투표 정보 및 투표 현황을 통해 해당 투표의 진행도까지 확인할 수 있다. 17319-041.png 17319-042.png


하단 투표 참여하기 버튼을 통해서 투표 페이지로 넘어간다. 17319-043.png


원하는 후보자를 선택 후, 관련 사항에 동의하고 결과 제출하기 버튼을 누름으로써 표를 행사한다. 17319-044.png


투표 정보가 블록체인에 등록된다는 문구가 나오고 이후 투표 현황을 통해서 표가 제대로 행사되었음을 확인할 수 있다. 17319-045.png 17319-046.png 17319-047.png


  • 투표 결과

투표 종료 시간이 되면 해당 투표 정보를 통해서 투표 결과를 확인할 수 있다. 17319-048.png

  • 투표 검증

유권자가 해당 투표에 표를 행사했을 때부터 해당 투표에 대한 해쉬 정보를 확인할 수 있다. 단, 전체 합산 해쉬 주소는 해당 투표가 종료되고 결과가 나왔을 때 확인할 수 있다.

    • 해당 투표 종료 이전

17319-049.png

    • 해당 투표 종료 이후

17319-050.png

원하는 해쉬 주소를 누르면 해당 파일을 다운로드 받을 수 있다. 17319-051.png


이렇게 다운받은 파일들은 하단 “관련 정보 확인하러 가기”를 통해서 자체적으로 투표 검증하는 방법을 확인하고 이에 사용할 수 있다. 17319-052.png

포스터

관련사업비 내역서

항목 수량 단가 금액 비고
하이퍼레저 블록체인 개발 패브릭과 컴포저로 탈중앙화 앱 dApp 만들기 3 31500 94500
AWS 서버비용 1 4123 4123
AWS 서버비용 1 4123 4123
합계 98623 98623

완료작품의 평가

평가항목 평가방법 적용기준 개발목표치 비중(%) 평가결과
완전성 투표를 참여한 유권자 수와 실제 블록체인 네트워크에 올라간 투표수를 확인한다. 동일 여부를 확인 동일 13 동일
건전성 부정한 투표가 일어나는지 여러 테스트 케이스를 통해 검증한다. 1.로그인 하지 않은 사용자의 투표제한

2.의도된 흐름(투표 목록-투표정보-투표)가 아닌 바로 투표페이지로 접근할 경우 투표제한 3.직접 api호출 제한

전부 투표를 제한하도록 13 전부 투표 제한
비밀성 모든 투표가 암호화 되어 확인 불가능 한지 테스트 케이스를 통해 검증한다. 1.사용자의 투표정보(누구를 선택 했는지)가 프론트에서 암호화 되어 서버에 전송 되는지

2.개인의 투표 내용으로 그 개인을 확인 할 수 없는지 3.그 누구도 유권자의 투표 내용을 확인할 수 없는지

전부 완료 13 33% 완료

(1:완료, 2,3: 현재 운영중인 시스템으로 불가)

이중투표불가성 정당한 투표자가 두 번 이상 투표할 수 없는지 테스트 케이스를 통해 검증한다. 1.사용자가 다시 투표 페이지에 접근 불가능 하도록

2.사용자가 직접 서버api를 호출할 경우 투표가 처리되지 않도록

전부 완료 13 전부 완료
적임성 투표 권한이 없는 경우(서울시립대 켬퓨터과학부를 제외한 모든 인원) 투표가 불가능 한지 테스트 케이스를 통해 검증한다. 1.투표 권한이 없는 경우 회원가입을 제한한다.

2.식별토큰이 없는 경우 서버 api 호출이 불가능하게 한다.

전부 완료 12 전부 완료
공정성 사용자가 투표 결과를 미리 알아 투표 결과에 영향을 미치는 경우가 있는지 테스트케이스를 통해 검증 1.사용자는 투표 결과를 미리 알 수 있는지

2.서비스관리자는 투표 결과를 미리 알 수 있는지

전부 완료 12 50% 완료(1:완료, 2:서비스 관리자가 비밀키를 가지고 있어 합산전에 투표 결과를 미리 알 수 있다.)
검증성 블록체인에 올라간 암호화된 투표 내용을 모든 유권자가 확인할 수 있도록 하여 투표결과를 검증할 수 있도록 한다. 투표 내용 확인 및 검증이 가능한지 전부 완료 12 전부 완료
응답속도 사용자가 투표한 내용이 암호화 되어 블록체인에 등록되고 이에 대한 응답을 받기까지의 시간을 측정한다. 시간 측정 1s 12 10s

향후계획

비밀키를 단독으로 관리하지 않는 정도로 마무리하여 초기에 생각했던 비밀 투표의 경우 구현하지 못했는데, 동형암호가 특정 후보자의 표를 하나 증가시키는 정보만을 암호화하고 이를 사용자가 서버에 전송하고 등록하는 과정에서 그 사용자 정보를 서버에서 알 수 있기에 발생하는 문제라고 파악했다. DID와 같은 기술을 통해 인증에 필요한 정보만 받고 투표자를 특정할 수 있는 정보 없이 사용자 인증을 할 수 있도록 구현하면 이를 해소할 수 있을 것으로 기대한다.

하나의 투표에서 여러 주제에 대한 투표가 가능하도록 구현. 예를 들어, 지금 정/부회장 투표라는 목적을 갖고 투표를 개설하게 되면 회장 후보와 부회장 후보를 그룹화하여 하나의 표를 통해서 두 명을 뽑는 구조이다. 하지만, 이렇게 러닝메이트 구조가 아닌 경우, 불필요하게 회장과 부회장을 각각 나누어 투표 따로 개설해야 한다. 그렇게 되면 사용자 입장에서 불편함을 느낄 수 있다고 판단되기에 하나의 투표에서 여러 주제에 대한 표를 행사할 수 있도록 구현해보고자 한다.

설문 기능 구현으로 사용자에게 또 다른 선택지를 줘서 보다 많은 이들이 사용할 수 있는 서비스를 제공한다.

특허 출원 내용

  1. 허원근, 김희선, 김광조.(2000).전자선거 프로토콜의 요구사항 연구.정보보호학회지,10(1),63-69.
  2. 유니보트 서비스 소개서, https://www.univote.co.kr/
  3. 황원용, 김효관.(2020).Hyperledger Fabric을 활용한 블록체인 투표시스템 구현에 관한 연구.한국정보전자통신기술학회 논문지,13(4),298-305.
  4. https://github.com/morfix-io/node-seal
  5. 한상우, 배민수, 황경호. (2019). 동형암호를 사용한 블록체인 기반 전자투표 시스템 개발. 한국통신학회논문지, 44(1), 171-174.
  6. 이윤호. (2021). 블록체인 기반 익명 전자투표 시스템. 정보화연구(구 정보기술아키텍처연구), 18(2), 199-204.
  7. Z. Brakerski, C. Gentry, V. Vaikuntanathan, (2011), Fully Homomorphic Encryption without Bootstrapping,
  8. Cheon, Jung Hee, Kim, Andrey, Kim, Miran, Song, Yongsoo, (2017), Homomorphic encryption for arithmetic of approximate number, ASIA CRYPT 2017, Springer, Cham. 409–437p.
  9. Rivest, Ronald; Adleman, Len; Dertouzos, Michael.(1978). ON DATA BANKS AND PRIVACY HOMOMORPHISMS. Foundations of secure computation 4(11). 169–180p
  10. 코나아이, (2022) , https://konai.com/business/blockchain/KonaChain
  11. Metro,“코나아이 블록체인 기반 설문·투표 서비스 제공”,(2022), https://www.metroseoul.co.kr/article/20220330500067