프린스턴 연구자, $20짜리 AI 코딩 에이전트로 조지아 비밀투표 150만 장 순서 복원
- 프린스턴 CITP의 Max Springer가 공개 기록과 LLM 코딩 에이전트만으로 조지아 2026년 5월 예비선거 대면 투표용지의 98.9%(150만 장) 투입 순서를 복원함
- 원인은 2022년 공개된 결함으로, 투표용지 스캐너가 용지마다 붙이는 무작위 번호가 실제로는 결정적 알고리즘에서 나와 셔플을 역산할 수 있음. 조지아를 포함한 21개 주가 영향을 받고 일부는 아직 패치하지 않음
- 비용은 월 $20 코딩 에이전트 구독뿐이었고, 취약점 논문과 카운티 사전투표 명부, CVR 파일을 결합해 어떤 유권자가 어느 용지를 냈는지 좁힘. 소규모 카운티에서는 모든 유권자의 투표 내용이 특정됨
- 저자는 투표기를 만지거나 네트워크를 뚫거나 소스코드를 보지 않았고, 누구나 요청할 수 있는 공개 자료만 사용함
- CVR 파일은 선거 결과를 제3자가 검증할 수 있게 하려고 공개하는 자료인데, 투입 순서 정보와 결합하면 비밀투표를 깨는 도구가 됨
Hacker News 의견들
프린스턴 연구자가 조지아 투표용지 스캐너의 알려진 결함을 그대로 써서 대면 투표의 99% 가까운 순서를 복원했대. 114개 카운티가 해당되고 작은 카운티에선 비밀투표가 아예 깨진다고 함.
'load-bearing'이라는 말이 첫 문장에 나오는 순간 머리가 꺼졌음. 억지로 다시 읽었는데 클로드 트라우마가 진짜 있음.
이 글 자체가 LLM 출력 같음. 제일 큰 문제는 뭘 해냈는지가 흐릿하다는 거야. 읽어보면 사전투표 기간 용지를 다룬 건데 본투표 당일 용지를 해독한 것처럼 써놨음.
CITP에 있던 사람인데 저건 사람이 쓴 농담이 맞음.
Pangram이 0% AI라고 나온 게 신기하네. 'Tied to a specific ballot...' 같은 문장은 완전 클로드체인데, 작가가 Pangram 돌려가며 문장을 조금씩 고쳐서 0%를 만든 것 같음. 사람도 결과물을 AI 판별기로 한번 걸러야 함.
이웃이 투표했는지 아는 건데, 솔직히 개인이 투표일에 뭘 했는지가 남의 알 바인가 싶음. 투표율 올리는 데도 도움 안 됐고 나도 계속 비공개인 줄 알았음.
그 명부가 공개된 역사가 꽤 오래됐고 지금도 이유가 있음. 원래 마을 사람들이 다 서로를 알아서 투표소에 들어가는 게 다 보였음. 지금도 내가 동네 투표소를 맡고 있는데 유권자 상당수를 얼굴로 알아봄. 명부가 공개돼야 유령 유권자나 투표함 채우기를 잡을 수 있음.
빠진 각도는 사람들이 공표된 결과를 믿으려면 원칙적으로 검증 가능해야 한다는 점인 것 같음. 시민들이 실제로 모여서 대조하긴 비현실적이지만, 가능성이 남아 있는 것만으로도 사기 칠 사람이 걱정할 게 하나 늘어남.
내가 딱 한 번 투표했다는 걸 아는 게, 여러 번 투표하지 않았다는 걸 확인하는 제일 쉬운 방법임.
해결책은 간단한데 의사난수를 진짜 난수로 바꾸든가(돈이 들지만), 아니면 그 '무작위' 번호를 기록에서 아예 빼면 됨. 아니면 그냥 종이 투표용지 쓰면 되고.
그 기계 내 투표소에서 쓰는 것 같은데 이미 종이 투표용지임. 펜으로 표시하고 기계는 잉크를 읽는 자동 개표기일 뿐임. 용지에 일련번호 붙이는 건 정말 불필요한 단계고.
조지아도 2020년부터 종이 투표용지 쓰고 있음. 문제는 위험 제한 감사(RLA)를 하려면 용지 내용을 표로 만든 기록이 필요하다는 데서 생김. 손으로 세는 과정에서도 같은 문제가 생길 수 있음.
텍사스는 2024년부터 모든 용지에 연속 번호를 붙이게 했음. 50장이나 100장 묶음으로 와서 선거 관리관이 10~20장을 꺼내 서명하고 섞은 다음 번호가 아래로 가게 놓으면 유권자가 하나를 골라 가져감.
손으로 하는 k-익명성이라고 할 수 있겠네.
애초에 비밀이 아니었던 거임. 종이 투표용지로 충분한데 왜 기계를 쓰는지 모르겠음. 2008년 지방선거 세 번에서 전자투표 해봤다가 사용성 문제로 법원이 결과를 무효화했음.