TECH 으로 돌아가기
TECH HACKER NEWS 오늘 7분 읽기 27 READS

에스토니아 온라인 투표 시스템 IVXV 소스코드 들여다보기: 국가 선거를 인터넷으로 치르는 설계

에스토니아 온라인 투표 시스템 IVXV 소스코드 들여다보기: 국가 선거를 인터넷으로 치르는 설계
SOURCE IMAGE · HACKER NEWS
에스토니아 온라인 투표 시스템 IVXV 소스코드 들여다보기: 국가 선거를 인터넷으로 치르는 설계

국가 선거를 인터넷으로 치르는 나라

에스토니아는 2005년부터 국가 단위 선거에서 인터넷 투표(i-voting)를 써왔어요. 집에서 노트북에 신분증 카드를 꽂거나 휴대폰 기반 전자 신원 인증(Mobile-ID, Smart-ID)으로 로그인하면 국회의원 선거에 투표할 수 있어요. 2023년 총선에서는 처음으로 온라인 투표가 전체 투표의 절반을 넘었고요.

이 시스템의 현재 세대인 IVXV의 소스코드가 GitHub(valimised/ivxv)에 공개되어 있어요. “valimised”는 에스토니아어로 “선거”라는 뜻이에요. 국가 선거 시스템 코드를 누구나 들여다볼 수 있다는 것 자체가 꽤 과감한 결정인데요, 그 바탕에는 보안 업계의 오래된 원칙이 있어요. 케르크호프스의 원칙이라는 건데요, “설계가 비밀이라서 안전한 게 아니라, 설계가 다 공개돼도 키만 지키면 안전하게 만들어야 한다”는 생각이에요.

핵심 아이디어: 이중 봉투

IVXV를 이해하는 가장 쉬운 방법은 우편 투표의 이중 봉투를 떠올려보는 거예요.

1. 투표용지를 속봉투에 넣어요. 속봉투엔 이름이 없어요.
2. 속봉투를 겉봉투에 넣고, 겉봉투에 내 이름을 쓰고 서명해요.
3. 개표할 때는 겉봉투로 “투표 자격이 있는지, 중복은 없는지”를 확인하고, 겉봉투는 버린 다음 속봉투만 모아서 섞고 열어요.

디지털 버전에서는 속봉투가 선거용 공개키로 암호화한 표, 겉봉투가 신분증 기반 전자서명이에요. 투표 앱이 내 PC에서 표를 암호화하고 서명해서 서버로 보내는 구조죠.

시스템은 대략 이런 부품들로 나뉘어요.

코드는 주로 Java와 Go로 되어 있어서, 백엔드 개발자라면 생각보다 읽기 어렵지 않을 거예요.

내 표가 제대로 들어갔는지 확인하는 법

온라인 투표의 가장 큰 약점은 유권자의 PC예요. 내 컴퓨터에 악성코드가 있으면 암호화되기 전에 표를 바꿔치기할 수 있거든요. 그래서 에스토니아는 투표 직후 화면에 QR 코드를 띄우고, 스마트폰 검증 앱으로 찍으면 서버에 저장된 표가 내가 고른 후보가 맞는지 정해진 시간 안에 확인할 수 있게 했어요. PC와 폰을 동시에 해킹하는 건 훨씬 어렵다는 점을 이용한 거죠.

또 하나 재미있는 장치가 재투표예요. 온라인으로는 여러 번 투표할 수 있고 마지막 표만 인정돼요. 누가 옆에서 협박하거나 표를 사려 해도 나중에 혼자 있을 때 다시 투표하면 되니까, 강요가 힘을 잃는 거예요.

그래도 논쟁은 계속돼요

물론 완벽하진 않아요. 2014년 미시간대가 주도한 연구팀은 운영 보안 문제와 클라이언트 쪽 공격 가능성을 지적했어요. 2017년에는 인피니언 칩의 RSA 키 생성 취약점(ROCA) 때문에 에스토니아 전자 신분증 수십만 장의 인증서를 급하게 교체해야 했고요. 소스코드가 공개돼 있어도 실제 서버에서 그 코드가 그대로 돌고 있는지는 별개 문제라는 비판도 꾸준히 나와요.

다른 나라와 비교하면 차이가 더 잘 보여요. 스위스는 스위스포스트의 전자투표 시스템을 공개 검증에 부쳤다가, 2019년 연구자들이 검증 로직에서 심각한 결함을 찾아내 도입을 미뤘어요. 이후 보완을 거쳐 일부 지역에서 제한적으로 다시 쓰고 있고요. 미국은 대부분 종이 투표를 유지하고 있어요. 전 국민 전자신분증이라는 탄탄한 인프라 위에서 20년 가까이 실전 운영해왔다는 점에서 에스토니아는 독보적인 사례예요.

한국 개발자에게 주는 시사점

한국 국가 선거는 종이 투표지만, 중앙선관위가 단체나 기관 선거용으로 K-보팅이라는 온라인 투표 서비스를 운영하고 있어요. 그러니까 완전히 남의 나라 얘기만은 아니에요.

실무 관점에서도 배울 게 많아요. 전자서명, 공개키 암호화, 믹스넷, 키 분산 같은 개념이 교과서가 아니라 실제 국가 인프라에서 어떻게 맞물려 돌아가는지 볼 수 있는 레퍼런스가 흔하지 않거든요. 특히 “운영자도 믿지 않는 설계”, 그러니까 서버 관리자가 마음먹어도 조작하기 어렵게 만드는 구조는 결제, 감사 로그, 의료 기록처럼 무결성이 중요한 시스템을 설계할 때 그대로 응용할 수 있어요.

마무리

정리하면 IVXV는 “코드를 공개해도 안전한 투표 시스템”을 20년 가까이 실전에서 다듬어온 결과물이에요. 레포의 문서와 구조를 한 번 훑어보기만 해도 보안 설계 감각이 꽤 늘 거예요.

여러분은 한국 국가 선거에도 온라인 투표를 도입해도 된다고 보시나요? 소스코드 공개만으로 충분한 신뢰가 생길 수 있을까요?


🔗 출처: Hacker News

SOURCE · HACKER NEWS
원문 전체 보기 → https://github.com/valimised/ivxv
SHARE
NEXT · CHOOSE

변화를 읽었다면,
내가 만들 수익 구조를 고릅니다.

정보를 더 모으는 데서 멈추지 않고, 광고·외주·판매·중개·구독 중 내 상황에 맞는 출발점을 정해보세요.

21가지 수익 구조 살펴보기 →
처리 중...