◀◀좋아요 누르고 민중의소리를 페이스북으로 구독하세요

“온라인투표는 기술적으로 클리어 됐다. 그런데...”

[단독 인터뷰] 통합진보당 온라인투표 시스템 운영업체의 사장 A씨

이정무 기자 jmlee@vop.co.kr

입력 2012-05-01 22:47:34 l 수정 2012-05-02 00:02:57

1일 오후 A씨로부터 전화가 왔다. A씨는 통합진보당의 온라인 투표 시스템을 개발한 업체의 사장이다. A씨는 신원을 노출하지 않는 것을 전제로 인터뷰를 하자고 했다. 익명을 요구한 이유는 단순했다. “아직까지 업계나 정부 기관에서는 민주노동당이나 통합진보당과 일하는 것에 선입견이 있다”는 것이다.

A씨는 그 동안 진행된 통합진보당 비례대표 선거 부정 의혹의 ‘조사 대상자’였다. 1일 오후 마지막 조사를 받은 A씨는 “뭔가 말하지 않으면 안 될 것 같은 생각이 들어서” 인터뷰 요청을 했다고 밝혔다. 가급적 설명 없이 A씨의 주장을 요약했다.

- 왜 인터뷰를 요청했나?
= “어제 어떤 기사에 내가 ‘10년 동안 민주노동당 덕분에 밥 먹고 산 사람’이라고 나온 걸 봤다. 그 때까지는 참을 수 있었는데... 오늘 마지막 조사를 받으면서 이대로 가면 나만 바보가 되고 말 것이라는 느낌을 받았다.”

- 민주노동당과 꾸준히 일해 온 것은 사실인가?
= “내가 OO대 89학번이다. 학생 시절엔 데모도 좀 했다. 졸업하고 나서 운동하는 친구들 보면서 늘 마음의 빚이 있었다. 민주노동당 일을 한 것도 비슷한 이유에서였다. IT업계 들어온 지 19년이고, 창업한 것은 2005년이다. 민주노동당과는 2007년부터 일을 했다. 그 때 당원관리시스템 개발을 했고, 2008년부터는 유지보수만 했다. 작년 우리 회사 매출이 6억이 넘는다. 그 전 해는 9억이 넘었고. 작년에 민주노동당으로 부터 당원관리시스템의 유지 보수로 받은 돈이 한 달에 100만원이다. 부가세 포함으로 받는다. 그러니까 사업이 잘 안되었던 작년 기준으로도 2%가 채 되지 않는다. 그런데 당원 시스템 관리는 계속 잡다한 일이 있다. 전담 요원 한 명이 최소한 한 달에 1주일, 그러니까 1/4맨먼스(M/M - IT업계의 공임 계산 단위)는 들어간다. 회사에 아무런 이익도 남지 않는다. 그런데 내가 민주노동당 덕분에 밥 먹고 산 사람이라니... 어이가 없다.”

“조작도 아니지만 조작 아닌 것도 아니다?, 이건 국어가 아니다”

- 단순히 그것 때문에 인터뷰를 요청하지는 않았을 것 같다. 이번 비례대표 선거 부정 의혹과 관련해 할 말이 있는 것 아닌가?
= “그 동안 조사를 받았다. 어찌되었건 내가 관련된 일이니 성실하게 조사를 받았다. 조사위원으로 참여한 기술진들도 다 서로 이해를 했고, 클리어 됐다고 생각했다. 그런데 오늘(1일) 보니 그런 게 아니었다.”

- 어떤 결론이 나올 것이라는 느낌이 든 건가?
= “만약 온라인 선거에서 부정이 있었다고 치자. 그렇다면 그건 내가 한 일이다. 나를 거치지 않고 온라인 선거의 부정이란 있을 수 없다. 만약 진상조사위원회가 온라인 선거에서의 부정을 사실이라고 말한다면 나는 선거 부정을 저지른 장본인이 된다. IT 업계에서 19년을 밥 먹고 살아왔지만 그럴 정도로 양심 없이 살지는 않았다. 내가 왜 그런 짓을 하겠나?”

- 양심의 문제를 다루는 것이 조사는 아니지 않나?
= “그 정도는 나도 안다. 그래서 말을 하기로 한 것이다. 기술적으로 다 클리어 된 상황인데, ‘조작의 증거는 없지만, 조작이 없었다고도 말할 수 없다’ 수준의 결론이 나온 것 같다. 정치에서는 통용되는 말일지 모르지만, 이건 ‘국어가 아니다’. 나로서는 무슨 의미인지, 무슨 의도인지를 모르겠다.”

- 우선 진상조사 초기부터 ‘투표 중간에 소스 코드를 열어봤다’는 의혹이 제기된 바 있다. 이런 것들이 다 해명되었다는 말인가?
= “프로그램 소스를 수정한 것은 여섯 번으로 기억한다. 처음 두 가지는 투표를 시작할 때 생긴 시스템 오류 때문이었다. 현장 투표를 하면 선거인 명부에서 ‘투표한 사람’으로 표시를 해 둬야 하는 데 이 부분에서 오류가 생겼다. 또 같은 핸드폰으로는 투표를 할 수 없게 해 두어야 하는 데 이게 체크에서 빠져있었다. 클라이언트 측에서 연락이 왔고, 곧바로 수정을 했다. 세 번째는 화면의 글씨를 바꿔달라고 했고, 네 번째는 후보자를 색깔로 구분해 달라고 했고, 다섯번째는 선거 방법을 설명하는 팝업이 닫히지 않게 해 달라고 했다. 모두 그렇게 해 줬다. 마지막은 각 선본이 투표상황을 모니터링할 수 있도록 화면을 만들어달라고 해서 해 줬다. 모두 클라이언트(통합진보당)의 공식적인 요구를 받아서 한 것이고 진상조사위에 다 보고했다.”

- 그래도 투표 중간에 소스 코드를 고치는 것은 문제가 아닌가? 가령 그 때까지 어떤 후보가 몇 표를 얻었는지도 알 수 있는 것이고...
= “그런 요청을 받은 바도 없고 해 준 적도 없다. 어떤 후보가 몇 표를 얻었는지는 중간에 알기 힘들었다. 실제 개표를 할 때도 한 시간이 넘게 걸렸고 지역별 통계는 선거 끝나고서도 한참 시간이 지나서 나왔다. 모든 투표 정보는 SHA256방식으로 암호화하고, 그것도 단방향이기 때문에 단순히 복호화하는 것이 아니라 일일이 케이스별로 재현해서 대조해야 한다. 이런 일은 시간이 꽤 걸린다. 그런데 중간에 어떻게 결과를 알아내겠나?”

- 단방향 암호화라는 게 무슨 의미인가?
= “포털 사이트의 비밀번호를 잊어서 전화를 걸었다고 하자. 그러면 비밀번호를 알려주는 게 아니라, 새로 비밀번호를 정해준다. 한 쪽 방향으로만 암호를 걸어서 복호화가 안 되기 때문이다. 그런 원리다.”

- 예를 들어 어떤 유권자가 1번을 골랐는데, 시스템에서 2번을 고른 것으로 처리할 수도 있는 것 아닌가?
= “진상조사 과정에서 지구당별, 시간대별 득표 통계도 다 보내줬다. 어떤 지구당은 어떤 후보가 강할 것이고, 다른 곳은 또 다른 후보가 강할 수 있다고 하더라. 그런 걸 보면 조작되었는지 아닌지 알 수 있을 것 아닌가? 나는 당원도 아니고, 비례 후보들 이름도 이번에 처음 들었다. 당 상황을 잘 아는 사람들이라면 한 눈에 조작된 건지 아닌지 알아볼 수 있었을 것이다. 시간대별로 득표 추이도 마찬가지다. 이런 데서 아무 문제가 없었다. 솔직히 이런 말도 안 되는 이야기에도 대답을 해야 하는 상황이 답답하다.”

- 그런 것이라면 개표 직후에 통계를 보여줬으면 아예 논란이 없었을 것 아닌가?
= “총선 전이다. 비례대표 개표가 끝나고 나서 유시민 대표가 나를 불러서 온라인 투표에서 지구당별, 시간대별 개표 통계를 달라고 했다. 시스템을 처음 설계할 때는 그런 요구사항이 없었다. 또 아까 말한 것처럼 단방향 암호화를 해 놓은 것이어서 재현하고 대조하자면 얼추 한 달은 걸릴 것이라 대답했다. 그 이후 통합진보당의 지시에 따라 원본 데이터를 봉인하고, 복제한 데이터베이스를 가지고 개표 통계를 다시 냈다. 1주일이 걸리더라. 이런 건 다 진상조사위에 제출을 했다. 지금은 프로그램을 많이 개선해서 하루면 해 낼 수 있다.”

“민주당의 모바일 투표도 고치고 또 고쳤다”

- 그렇다면 시스템은 완벽했다는 말인가?
= “그렇지는 않았다. 진상조사 마지막에 나도 처음 알게 된 문제가 있었다. 개표 과정에서 약간의 오차가 있었다.”

- 온라인에서도 오차라는 게 있나?
= “표를 집계하는 로직에서 실수가 있었다. 암호화된 투표 데이터와 득표 집계용 대조군을 비교하는 과정에서 실수가 있었다. 컴퓨터에서 만드는 랜덤 값(Random-Value)은 케이스가 많아지면 중복이 된다. 그런데 나는 랜덤 값이 고유(Unique)하다고 생각했고 그걸 기준으로 투표 데이터와 대조군을 조인(join-데이터베이스의 기술용어)해서 득표 결과를 생성했다. 그래서 후보자당 적게는 1표에서 많게는 24표까지 집계에서 오차가 났다.”

- 심각한 문제 아닌가?
= “투표 데이터가 중복된 게 아니라 (총선 전 개표를 할 때의) 표를 세기위한 대조군이 중복된 것이다. 랜덤 값의 중복은 일정한 비율로 나타나기 때문에 득표수가 많으면 오차도 많고, 득표수가 적으면 오차도 적다. 몇 백표를 받은 후보는 실수로 더해진 표가 1~2표였고, 최대 오차(24표)가 난 건 1만 표를 넘게 받은 후보였다. 진상조사위의 기술진들이 이 문제를 지적했고, 나도 곧바로 인정을 했다. 지금은 진상조사위 기술진과 나 사이에 의견이 일치한 상태다. 결국 (총선 전의) 개표 때 발표된 득표 숫자가 약간 잘못된 것이지만, 순위는 그대로고, 후보 간의 표 격차도 거의 차이가 없었다.”

- 결과가 큰 차이가 아니라고 하지만 심각하게 느낄 수도 있을 것 같다.
= “변명 같지만 프로젝트 발주가 너무 늦었다. 선거를 1달 앞두고 발주를 했는데, 우선 민주노동당과 국민참여당의 당원 데이터베이스를 합쳐야 했다. 이게 끝나고 나서 투표 시스템을 개발했다. 처음 만든 시스템을 충분한 테스트 없이 곧바로 실제상황에 투입할 수밖에 없었다.”

- 그런 것이 오해를 불러왔다고 생각하지 않나?
= “민주당이 올해 초에 처음으로 모바일 투표를 도입했다. 기술적으로는 인터넷 투표나 모바일 투표나 똑같다. (민주당도) 투표를 시작하자마자 시스템이 섰고, 고치고, 또 고쳤다. 비슷한 상황이었다. 그러나 이런 게 데이터 조작과 무슨 관계가 있나?”

- 진상조사위의 기술진들도 같은 판단인가?
= “사실 그 분들의 이름도 나는 모른다. 그러나 진상조사위의 기술진들과 검토할 때 기술적으로 이해가 되지 않았던 문제는 없었다. 물론 아까 말한 것 같은 크고 작은 버그는 있었다. 이것은 부정과는 아무 관계가 없다. 만약 나의 개발 실력이 부족했다고 지적하면 듣겠다. 인정한다. 그래서 불이익을 받으라고 하면 받겠다. 하지만 부정으로 몰고 가는 건 용납이 안 된다.”

“지금은 누가 누구를 찍었는지 알려면 다 알 수 있는 상황”

- 진상조사 과정은 어떠했나?
= “TV에서 보는 청문회와 비슷했다. 범죄자가 된 기분이었다. 물론 기술자들끼리 나가서 담배 피우고 할 때는 편하게 이야기하기도 했다. 나를 주로 조사했던 박무 조사위원은 전화로 ‘데이터 조작은 없었던 것으로 본다’고 말하기도 했다.”

- 그래도 의구심이 남을 수 있지 않나? 기술적 백그라운드가 없으면 이런 설명을 들어도 흔쾌하지는 않을 것 같다.
= “지금 투표 데이터는 암호가 다 풀려있는 상태다. 누가 누구를 찍었는지 알려면 다 알 수 있는 상황이니 이걸 확인해 보면 될 것 아닌가? 못 믿겠다는 사람들이 자기 표를 확인해 보면 된다.”

- 누가 누구를 찍었는지 알 수 있다는 것인가?
= “진상조사위원회는 처음부터 암호화된 투표 결과 값을 풀어달라고 했다. 내가 생각할 때 이건 비밀투표 원칙을 깨는 것이었다. 그러나 조사위 공문으로도 왔고, 조준호 진상조사위원장이 ‘일기를 쓴 사람이 일기장을 달라고 하는 데 왜 안 된다는 거냐’고 언성을 높이기도 했다. 나로서는 심각하게 생각했지만, ‘갑(甲)’이 달라고 하는 데 해줘야지 어쩌겠나. 기왕 다 풀었으니 그걸 가지고 속 시원하게 검증이라고 해 줬으면 좋겠다. 당원들에게 누구 찍었냐고 물어보고 데이터를 확인해 보면 되지 않나.”

- 마지막으로 하고 싶은 이야기는?
= “온라인 투표에서 한 표라도 부정이나 조작이 있다면 회사 접고 업계에서 은퇴할 거다. 돈 물어달라면 재산이 되는 한 얼마든지 물어줄 생각이 있고 감옥에 가라면 가겠다. 조사위원 중에는 나한테 ‘무조건 검찰 고발할 거다’라고 하는 분이 있던데, 솔직히 그렇게 됐으면 좋겠다.”

A씨의 인터뷰에는 그 동안 잘 알려지지 않았던 여러 가지 문제들에 대한 ‘단서’들이 나와 있다. 이것을 분류하고 부각하는 건 이번 기사의 주제가 아니다. 가급적 A씨의 주장을 있는 그대로 보여주는 것에 그치는 이유다. A씨를 조사했던 통합진보당 진상조사위원회의 조사결과는 2일 발표될 예정이다.
많이 읽은 기사