paint-brush
암호화로 온라인 투표를 보호하는 방법~에 의해@nerv
628 판독값
628 판독값

암호화로 온라인 투표를 보호하는 방법

너무 오래; 읽다

원격 전자투표의 가장 큰 과제는 통제되지 않은 환경과 안전하지 않은 플랫폼에서 높은 수준의 보안을 달성하는 것입니다. 최소 요구 사항을 설정하는 전자 투표 속성과 다양한 분류가 이미 설정되어 있습니다. 목표는 항상 상호 배타적으로 보이는 두 가지 타당성, 즉 검증 가능성과 개인 정보 보호를 조화시키는 것입니다.
featured image - 암호화로 온라인 투표를 보호하는 방법
Network Emergency Response Volunteers HackerNoon profile picture


참고: 여기에 제시된 정보 중 일부는 의도적으로 지나치게 단순화되었습니다. 동일한 목표를 달성하는 다양한 방법과 대체 암호화 기술이 있으므로 특정 세부 사항은 실제 구현에 따라 달라집니다.


"원격 전자투표의 가장 큰 과제는 통제되지 않은 환경과 안전하지 않은 플랫폼에서 높은 수준의 보안을 달성하는 것입니다. 전자투표 속성과 최소 요구 사항을 설정하는 다양한 분류가 이미 확립되어 있습니다. 이러한 분류 중 일부는 동일합니다. 원격 전자투표의 가장 큰 과제는 통제되지 않은 환경과 안전하지 않은 플랫폼에서 높은 수준의 보안을 달성하는 것입니다. 전자투표 속성과 최소 요구 사항을 설정하는 다양한 분류가 이미 확립되어 있습니다. 목표는 항상 상호 배타적으로 보이는 두 가지 권리를 조화시키는 것입니다. : 기밀성, 무결성, 개인 정보 보호, 민주주의, 보편성, 검증 가능성 등과 같은 다른 이름의 검증 가능성 및 개인 정보 보호 속성. 그럼에도 불구하고 목표는 항상 명백히 상호 배타적인 두 가지 타당성, 즉 검증 가능성과 개인 정보 보호를 조화시키는 것입니다."


온라인 투표의 기본 아이디어는 투표가 암호화되어 공개되어 전체 절차가 정기적으로 수행되었음을 유권자에게 확신시킬 수 있다는 점에서 검증 가능성입니다. 이것이 어떻게 달성될 수 있는지 살펴보겠습니다. 하지만 기사의 나머지 부분을 읽기 전에 Ron Rivest의 이 아이디어 프레젠테이션[ 1 ]을 5:07까지 시청하는 것이 좋습니다.


그런 다음 다음을 고려해 보겠습니다.


블록체인에 게시된 사이버 보안 폴링 이후 투표에 대한 추가 전용 공개 테이블


유권자는 자신의 투표에 해당하는 항목을 고유하게 알고 있습니다.


유권자 ID는 암호화되어 있습니다

여기서 v는 개인 키를 사용해야만 완전히 해독될 수 있는 투표이고 E(v)는 추가된 암호화입니다.


이제 여기에 수학의 마법이 있습니다...


E(v1), E(v2), E(v3) 및 E(v4)에서 동형 암호화를 사용하면 E(v1)+ E(v2) + E(v3) + E(v4) = E( v1+v2+v3+v4) !


따라서 최종 집계는 D( E(v1+v2+v3+v4) )입니다. 여기서 D는 투표가 끝나면 누구나 v에 개별적으로 액세스할 필요 없이 계산할 수 있는 암호 해독 함수입니다. D(E(v1) ), D(E(v2) ) 등은 개인 키를 사용해야만 복호화할 수 있습니다.


개인키 보유


유권자 자신만이 v를 개별적으로 해독하고 실제로 자신의 투표가 올바르게 등록되었는지 확인할 수 있습니다! 결론적으로, 유권자는 자신의 투표와 최종 집계를 개인 정보 보호와 정확성으로 모두 확인할 수 있습니다!


동형암호


우와! 내 투표가 올바른지 확인할 수 있습니다! 하지만 개인 키를 사용하지 않고 다른 사람이 투표한 투표도 합법적인지 어떻게 확신할 수 있습니까?


값 0은 폴링 중인 특정 정책 제안에 대한 거부를 의미하고 1은 일치함을 의미하여 가능한 답변 집합 {0,1}을 형성한다고 가정해 보겠습니다. 누구나 될 수 있는 검증자는 추가 전용 테이블에 게시된 모든 항목이 가능한 답변 집합의 유효한 요소에 해당하는지 확인하고 값이 100인 항목과 같은 다른 요소에 해당하는지 확인하기를 원할 수 있습니다. 영지식 증명은 이를 정확하게 허용합니다. 방법을 이해하려면 먼저 ZKP가 실제로 무엇인지 이해하는 것이 도움이 될 수 있습니다. "암호화에서 영지식 증명 또는 영지식 프로토콜은 한 당사자(증명자)가 다른 당사자(검증자)에게 주어진 진술이 사실임을 증명할 수 있는 동시에 증명자가 다음 정보 이외의 추가 정보를 전달하지 않는 방법입니다. 그 진술이 실제로 사실이라는 사실."[ 2 ]


영지식 증명


모순적으로 보일 수도 있지만 ZKP를 사용하면 모든 유권자가 자신의 투표의 타당성을 명확하게 증명할 수 있습니다! 다시 말하지만, 투표는 가능한 선택 집합 중 하나의 요소를 나타내는 것일 뿐입니다. ZKP가 투표에 어떻게 적용되어야 하는지 이해하려면 이 질문을 더 자세히 다루는 다음 기사[ 3 ], [ 4 ]를 살펴보는 것이 좋습니다.


ZKP 검증


그런 다음 이 기술을 확장하여 동형 암호화와 ZKP의 수학적 속성을 유지하면서 {0,1}보다 큰 집합을 포함할 수 있으므로 단순한 예, 아니요/동의, 동의하지 않음 답변보다 더 복잡한 폴링이 가능합니다. 이는 여러 후보 선거, 단일 특정 문제에 대해 서로 다른 솔루션 제안을 가질 수 있는 국민투표, 시장 조사 설문지와 같은 흥미로운 사용 사례를 만듭니다.


우리는 방금 최종 집계를 어떻게 확인할 수 있는지, 자신의 투표가 의도한 투표인지, 그리고 다른 모든 투표가 어떻게 합법적인지 논의했습니다! 유권자의 개인 정보를 보호하는 동시에! 동형암호와 ZKP의 적절성을 보존하기 위해 이러한 알고리즘을 조합하는 방식은 복잡하며 수학적으로 사실로 입증될 수 있는 암호화에 대한 깊은 지식이 필요합니다.[ 5 ]


모든 유권자는 제3자에 의존하지 않고 스스로 이러한 검증을 수행할 수 있습니다! 적절한 원격 전자투표 애플리케이션에서 유권자는 투표의 감사자입니다!


적어도 이더리움과 같이 모든 거래를 공개로 유지하는 블록체인에는 스텔스 주소[ 6 ]를 사용하는 것과 같이 사이버 보안 온라인 투표에 관한 다른 세부 정보 및 암호화 기술이 있습니다. 이는 유권자와 지갑의 연결을 방지하는 데 사용됩니다. 그러나 우리는 이것이 시스템 신뢰 구축에 도움이 되는 지식을 가진 동형 암호화 및 ZKP와는 달리 온라인 투표의 모든 사용자가 알아야 할 것이 아니라 소프트웨어 개발자에게만 관심이 있는 기술적인 세부 사항이라고 생각합니다.


보안을 손상시키지 않으면서 이러한 개인 키를 어떻게 생성하여 유권자에게 제공합니까?


궁극적으로 이중 지출을 방지하려면 개인 키를 사용자의 실제 신원과 연결해야 합니다. 한 가지 접근 방식은 국가 신원 스마트 카드에 내장된 국가 발행 eID와 같이 신뢰할 수 있는 기관에서 제공하는 PKI를 사용하는 것입니다. 왜냐하면 분명히 공공 기관에서는 이러한 키를 안전하게 유지하기 위한 자체 메커니즘을 생각해 왔기 때문입니다.


어쨌든 이는 독자가 너무 많은 세부 사항을 보지 않고 정보를 더 잘 정리할 수 있도록 향후 기사에서 분석할 디지털 신원 자체와 더 관련된 문제입니다. 디지털 신원 자체는 그 자체로 복잡한 문제이지만, 개인의 신원을 증명하는 작업을 통해 여러 신뢰할 수 있는 엔터티에 권한을 부여함으로써 각 디지털 인물이 고유하다는 상대적인 확신을 보장할 수 있는 방법이 있다고 말하면 충분합니다. Bob Marley의 인용문은 우리가 주장할 내용을 정확하게 설명합니다.


“일부 사람을 몇 번 속일 수는 있지만 모든 사람을 항상 속일 수는 없습니다.”


유권자가 사기를 발견하거나 특정 방식으로 투표하도록 물리적으로 강요당하는 경우 어떻게 됩니까?


취해야 할 첫 번째 조치는 이러한 상황이 고려될 수 있도록 사람들이 이러한 상황을 보고할 수 있는 채널을 제공하는 것입니다. 예를 들어, 그들이 전체 투표의 0.01%를 대표하는 미미한 경우, 민주적 가치를 수호해야 하는 매우 민감한 국민투표에 대해 논의하고 최종 집계가 최종 집계에 근접하지 않는 한 이는 실제로 문제가 되는 상황이 되지 않습니다. 50/50 상황과 같습니다. 이는 여론조사가 유효한 것으로 간주되려면 다수의 합의가 55/45와 같이 더 높아야 완화할 수 있습니다.


누군가 자신의 투표가 잘못 등록된 것을 목격한 시나리오에서 전체 장치가 블록체인에 의해 지원되어 서비스를 제공하는 특정 시스템 관리자의 통제를 받지 않는다는 점을 고려하면 투표 기계 자체가 손상되었다고 가정하는 것이 더 합리적인 접근 방식입니다. 전체 블록체인 자체는 아닙니다. 그때 취해야 할 가장 직접적인 보호 조치는 유권자가 기계 및/또는 OS를 변경하는 것입니다. 이 문제는 사회 공학 및 맬웨어와 같은 사이버 보안 위협과 더 관련이 있습니다. 오픈 소스 하드웨어 및 소프트웨어를 사용하는 것은 물론 기억상실 OS[ 7 ]도 사용하는 것이 좋습니다. 기억 소거 소프트웨어는 항상 초기 구성 상태로 돌아가므로 유권자가 의도하지 않게 바이러스를 클릭하고 실행하여 악성 코드를 설치하더라도 시스템을 재부팅하면 소프트웨어가 변경되지 않은 구성으로 롤백되어 이러한 발생을 효과적으로 완화할 수 있습니다.


설명하고 싶은 또 다른 상황은 유권자가 물리적으로나 협박을 통해 특정 방식으로 투표하도록 강요받는 상황입니다. 품위 있는 사회에서 사는 것 외에 강압을 방어하는 유일한 방법은 동일한 여론 조사에서 투표가 취소되도록 허용하는 것입니다. 이 분야에 대한 연구[ 8 ]가 있지만, 이 기술을 위에 언급된 다른 모든 기술과 병합하는 방법은 아직 구현되지 않은 상태입니다. 분명히 방법이 있습니다. 어쨌든 폴링 단계를 다시 여는 것은 항상 가능합니다. 강압을 방지하면 명백한 이유로 투표 판매도 방지할 수 있다는 점에도 유의해야 합니다.


우리는 최소한 현장에서 종이 투표가 정체성(실제 또는 디지털)을 테스트할 수 있는 훌륭한 기회이기 때문에 종이 투표의 완전한 포기를 주장하지 않습니다. 정치는 보다 빠르게 합의를 도출할 수 있는 보완 도구이자 종이 투표 결과를 확인하는 2차 소스이기도 합니다.

우리는 아직있다?

컴퓨터 과학자인 Jeffrey Dean은 다음과 같이 설득력 있게 표현했습니다.


“현대 컴퓨터 암호의 원동력은 보안이 아니라 효율성입니다. 문제는 안전한 암호를 만들 수 있느냐는 것이 아닙니다. 당신은 할 수 있습니다. 문제는 거대한 데이터 세트나 매우 제한된 하드웨어에서 효율적으로 작동하는 것을 만들 수 있는지 여부입니다."


블록체인 기술의 과제는 바로 사용자 기반과 계산 수요가 증가함에 따라 확장할 수 있는 능력입니다. 블록체인을 기반으로 하는 온라인 투표에서 암호화 알고리즘의 현재 구현은 이더리움에서 구현된 대로 투표당 비용이 약 $10로 추정됩니다.[ 14 ] Brightgov에서는 다음을 사용하여 이 값을 $1 미만으로 낮추기 위한 개선이 이루어질 수 있다고 믿습니다. 더 빠른 블록체인을 만들고 기본 수학적 알고리즘을 조정합니다.


역사를 통틀어 암호화는 사건의 흐름을 바꾸는 데 중요한 역할을 해왔습니다. 가장 간단한 암호 중 하나인 카이사르 암호는 2000년 전 로마 황제가 사용한 것으로 유명합니다. 일본의 암호 기계인 Purple과 독일의 Enigma로 암호화된 메시지를 가로채고 해독하는 연합군의 능력은 제2차 세계 대전을 종식시키는 데 필요한 주요 이점을 제공하는 데 결정적인 역할을 했습니다.


프로그래밍 방법을 알고 있고 더 많은 것을 배우고 싶은 분들은 저희 연구 논문을 읽어 보시기 바랍니다.[ 15 ] 또한 CryptoBallot을 사용하여 이러한 유형의 소프트웨어에 대해 알아볼 수도 있습니다.[ 16 ]


결론적으로, 사이버보안 온라인 여론조사는 가능할 뿐만 아니라 매우 필요합니다. 정치적 공간에서의 채택은 우리 일생에서 가장 파괴적인 사건 중 하나가 될 가능성이 있습니다... 당신이 해야 할 일은 컴퓨터와 블록체인에서 실행되는 알고리즘을 신뢰하는 것뿐입니다. 그렇지 않다면 언제든지 그렇게 할 수 있습니다. 펜과 종이로 직접 수학을 해보세요.


참고자료:


[1] " 당신의 투표가 계산되었습니까? (feat. 동형 암호화) ", Numberphile 교수 Ron Rivest, YouTube, 2016. https://www.youtube.com/watch?v=BYRTvoZ3Rho


[2] Wikipedia의 영지식 증명 항목, https://en.wikipedia.org/wiki/Zero-knowledge_proof


[3] " 집합이나 구성원을 노출하지 않고 집합 멤버십을 증명하기 위해 ZKP를 사용하는 방법" 작성자 블로그, Anders Borch, 2019. https://blog.cyborch.com/how-to-use-cryptographic-accumulators-to -집합 또는 구성원을 노출하지 않고 집합 구성원 증명/


[4] " 집합 멤버십을 위한 영지식 증명 ", Dario Fiore, ZKProof 표준, 2020. https://zkproof.org/2020/02/27/zkp-set-membership/


[5] " 동형 암호화의 비대화형 영지식 "(Ivan Damg̊ard et al., Theory of Cryptography Conference, 2006). https://cs.nyu.edu/\~nicolosi/papers/NonIntSi.pdf


[6] " 스텔스 주소(암호화폐) " 작성자: Jake Frankenfield, Investopedia, 2022. https://www.investopedia.com/terms/s/stealth-address-cryptocurrency.asp


[7] Wikipedia의 Tails(운영 체제) 항목, https://en.wikipedia.org/wiki/Tails_(operating_system)


[8] " VoteAgain: 확장 가능한 강압 저항 투표 시스템 "(Wouter Lueks 외, Spring Labs, Universidad Carlos III de Madrid, 2020) . https://arxiv.org/pdf/2005.11189.pdf


[9] 헤리티지 재단 , https://www.heritage.org/


[10] " Ainda mais indícios de cheate nas Legislativas 2022? " YouTube 항목, 2022년 포르투갈어 . https://www.youtube.com/watch?v=L8fA9aOuR9k


[11] " AnaKarina denuncia "FRAUDE ELEITORAL" por parte da CNE " YouTube 항목, 포르투갈어, 앙골라, 2022. https://www.youtube.com/watch?v=hLm8ocLgXCU


[12] " 자주 묻는 질문 - 유권자 사기 ", https://www.voteaustralia.org.au/faq_voter_fraud


[13] " 민주주의 지수 2020: 질병과 건강? " 보고서, The Economist Intelligence Unit, 2020. https://www.eiu.com/n/campaigns/democracy-index-2020/


[14] " ethVote: 분산 원장을 사용한 보안 투표를 향하여 "(Johannes Mols et Emmanouil Vasilomanolakis, Aalborg University, 덴마크, 2020년). https://www.researchgate.net/publication/341000573_ethVote_Towards_secure_voting_with_distributed_ledgers


[15] NERV의 " 원격 전자투표 개요 ", 2021년 제14차 ICEGOV 회의에 제출된 논문, https://ia601401.us.archive.org/33/items/remote-e-voting-overview/Remote e -투표개요.pdf


[16] CryptoBallot , https://github.com/cryptoballot/cryptoballot


여기에도 나타납니다.