언더스코어 하나가 바꾼 18개월의 삶: 억울하게 감옥에 갇힌 무고한 남성의 이야기

언더스코어 하나가 바꾼 18개월의 삶: 억울하게 감옥에 갇힌 무고한 남성의 이야기

보안개인정보보호데이터베이스경찰포렌식사법

데이터 소스:HN + web research · HN

2026년 7월 24일, 캐나다 노바스코샤주 항소법원은 이례적인 판결을 내렸습니다. 브랜든 클레이미(Brandon Klayme) 씨에 대한 모든 혐의를 조건 없이 철회하고 현장에서 즉시 무죄를 선포한 것입니다. 판결문에는 다음과 같이 적혀 있었습니다. “클레이미 씨는 사실 관계상 완전한 무죄입니다. 그는 기소조차 되지 말았어야 하며, 유죄 판결은 더더욱 말이 되지 않습니다.”

절대 일어나지 말았어야 할 이 억울한 사건의 시작은 단 하나의 언더스코어였습니다.

경찰이 킥(Kik) 사에 계정 정보 조회를 요청하는 영장을 발부할 때, 사용자 이름 “fus__ro_dah”를 “fus_ro_dah”로 잘못 적었습니다. 언더스코어 두 개가 하나로 줄어든 것입니다. 이 단 한 글자의 차이 때문에, 피해자를 만난 적조차 없는 한 캐나다 남성이 체포와 재판, 유죄 판결을 거쳐 18개월의 실형을 모두 살고 나오는 참담한 사법 절차를 겪어야 했습니다.

감옥의 철창 사진 출처: 게티 이미지(Getty Images). 단 한 글자의 차이가 한 사람의 인생 궤적을 송두리째 바꿔놓았습니다.

어긋난 수사망의 연쇄 반응

사건 자체는 단순했습니다. 2018년 미국 위스콘신주 매디슨에서 한 12세 소녀의 어머니가 딸이 킥(Kik) 메신저 앱을 통해 한 성인 남성과 부적절한 사진이 포함된 메시지를 주고받은 사실을 발견하고 경찰에 신고했습니다.

데인 카운티 경찰국이 수사에 착수했습니다. 소녀의 휴대폰을 디지털 포렌식 분석한 결과, 사용자 이름 “fus__ro_dah”(fus 뒤에 언더스코어 2개)를 쓰는 사용자와 125통의 메시지를 주고받은 흔적이 발견되었습니다. 이는 유명 게임 ‘엘더스크롤 5: 스카이림’에 나오는 용의 포효 주문 이름인 “fus ro dah”에서 따온 사용자 이름이었습니다.

경찰은 이 인물을 찾기 위해 킥(Kik) 사에 해당 사용자 이름의 가입자 정보를 요구하는 수사 영장을 발송했습니다.

하지만 영장에 적힌 이름은 언더스코어가 하나뿐인 “fus_ro_dah”였습니다.

킥(Kik) 사는 영장에 적힌 사용자 이름대로 해당 계정에 연결된 이메일 주소를 경찰에 제공했습니다. 이 이메일을 토대로 구글(Google) 기록을 조회한 결과, 연관된 IP 주소가 캐나다로 확인되었습니다. 사건은 캐나다 핼리팩스 지역 경찰로 이송되었습니다. 핼리팩스 경찰은 인터넷 서비스 제공업체(Bell Aliant)를 통해 해당 IP의 물리적 주소를 추적했고, 그곳은 바로 브랜든 클레이미 씨의 집이었습니다.

경찰은 클레이미 씨의 집을 압수수색하고 휴대폰과 노트북을 압수했습니다. 하지만 압수한 기기에서는 범죄와 관련된 그 어떤 증거도 나오지 않았습니다. 피해 아동의 사진도, 킥 대화 기록도 없었으며, 사건 당시 클레이미 씨가 킥 앱을 사용했다는 증거조차 찾을 수 없었습니다.

그럼에도 불구하고 검찰은 그를 기소했습니다. 14세 미만 미성년자 온라인 유인, 아동 음란물 제공, 아동 음란물 소지 등 세 가지 혐의였습니다.

재판이 진행되었고, 2023년 유죄 판결에 이어 2024년 징역 18개월이 선포되었습니다. 클레이미 씨는 18개월의 형기를 감옥에서 모두 채웠습니다.

항소 과정에 이르러서야 클레이미 씨의 변호인단은 빠져 있던 언더스코어를 발견했습니다. 클레이미 씨는 당시를 이렇게 회상했습니다. “항소 이유서를 준비하는 마지막 단계에서야 영장에 내 인생을 송두리째 바꿔버린 미세한 오류가 있었다는 사실을 깨달았습니다.”

검찰 측도 재검토 후 항소를 받아들여야 한다고 인정했습니다. 항소법원은 수사가 정상적으로 이루어졌다면 증거가 “캘리포니아에 IP 주소를 둔 ‘제이(Jay)‘라는 이름의 피의자를 가리켰을 것”이라고 지적했습니다.

왜 단 한 글자로 이런 일이 벌어졌는가

이 사건을 기술적인 관점에서 분석해 보면, 여러 단계가 사슬처럼 연결된 오류의 연쇄 반응을 볼 수 있습니다. 초기 단 한 글자의 오차가 각 시스템 단계를 거치며 증폭되어 돌이킬 수 없는 인재로 발전한 일종의 ‘디지털 나비효과’였습니다.

첫 번째 고리: 킥(Kik)의 사용자 이름 시스템. 킥의 사용자 이름은 대소문자는 구분하지 않지만 언더스코어의 개수는 엄격하게 구분합니다. 데이터베이스상에서 “fus__ro_dah”와 “fus_ro_dah”는 완전히 다른 두 개의 레코드입니다. 이는 시스템의 버그가 아니라 사칭을 막기 위해 정확히 일치하는 값만 찾도록 설계된 결과입니다. 그러나 경찰의 영장에 오자가 포함되었을 때, 이 엄격한 일치 검색은 양날의 검이 되었습니다.

두 번째 고리: 데이터베이스 조회의 완전 일치 방식. 경찰이 영장을 작성할 때, 포렌식 보고서에 있던 사용자 이름을 법적 서류에 수동으로 옮겨 적었습니다. 이 과정에 유사 검색이나 검증 메커니즘은 없었습니다. 영장을 받은 킥(Kik) 사 역시 입력된 문자열과 정확히 일치하는 계정 정보만 조회하여 반환했습니다. 시스템은 명령받은 대로 정확하게 동작했지만, 대상 자체를 잘못 찾은 것입니다.

세 번째 고리: 국가 간 정보 전달 과정의 블라인드 스폿. 위스콘신에서 핼리팩스에 이르기까지, 정보 전달 사슬에 참여한 모든 기관은 “피의자가 fus_ro_dah로 확인되었다”는 잘못된 전제를 의심 없이 교환했습니다. 엔지니어링 관점에서 볼 때, 이 국경을 넘나드는 공조 수사 전체 체계에 ‘원천 데이터를 검증하는’ 절차가 단 하나도 없었습니다.

네 번째 고리: 재판 과정에서의 확증 편향. 법정에서 검찰은 겉보기에 완벽한 증거 사슬을 제시했습니다. 킥이 이메일을 제공했고, 구글이 IP를 연결했으며, 통신사가 주소를 확인했습니다. 각 단계는 겉보기에 엄밀해 보였습니다. 하지만 그 누구도 가장 원천이 되는 사용자 이름이 제대로 입력되었는지 뒤돌아보지 않았습니다. 이는 개인의 실수가 아니라 프로세스 설계상의 구조적 결함이었습니다.

사법 IT 시스템의 증거 사슬 단절 증거 수집부터 판결까지 모든 단계가 타당해 보였지만, 원천의 오류 하나가 단계별로 증폭되었습니다.

사법 IT 시스템의 ‘1픽셀’ 결함

소프트웨어 공학에서는 이러한 문제를 **‘입력 검증 사슬의 단절(Broken Input Validation Chain)‘**이라고 부릅니다. 데이터가 서로 다른 시스템, 조직, 법적 관할 구역을 거쳐 이동할 때, 초기 입력의 미세한 오류가 전달될 때마다 고착화되고 증폭되며 ‘정당화’되는 현상입니다.

이 사건에서 드러난 주요 기술적 설계 결함을 살펴보겠습니다.

결함 1: 퍼지 매칭(유사 검색) 기능의 부재.

수사 기관의 데이터베이스 조회는 통상 ‘정확한 일치(exact match)‘를 기본 전략으로 사용합니다. 유사한 이름 때문에 억울한 사람이 체포되는 것을 막기 위한 것이므로 대부분의 상황에서는 합리적입니다. 그러나 문제는 안전장치가 없는 정확한 일치 검색은 안전장치가 없는 총과 같다는 점입니다.

만약 킥의 조회 시스템이 정확히 일치하는 결과가 나왔더라도 레벤슈타인 거리(Levenshtein distance) 알고리즘을 이용한 1글자 차이 유사 검색을 자동으로 수행하여 “fus_ro_dah”와 “fus__ro_dah”를 ‘매우 유사한 레코드’로 표시하고 담당자에게 알렸다면 어땠을까요? 이 기능은 대단히 첨단 기술을 요구하지도 않습니다. 표준 SQL의 SOUNDEX 함수나 포스트그레스QL(PostgreSQL)의 pg_trgm 확장 모듈로도 손쉽게 구현할 수 있습니다.

결함 2: 시스템 간 상호 검증 체계 부재.

클레이미 씨의 기기에서 아무런 범죄 증거가 나오지 않았을 때, 이 거대한 ‘이상 신호’는 자동화된 재검증 절차를 작동시켰어야 했습니다. 엔지니어링 관점에서는 간단한 규칙 엔진으로도 해결할 수 있는 문제입니다. “A 시스템의 원본 사용자 이름”과 “B 시스템에서 조회에 사용한 사용자 이름”이 일치하지 않을 경우 ‘불일치’ 상태로 지정하고 사람의 재검토를 필수화하는 것입니다.

하지만 현실에서 각 수사 기관의 IT 시스템은 개별적으로 도입되고 운영됩니다. 위스콘신 경찰의 사건 관리 시스템, 킥의 계정 데이터베이스, 핼리팩스 경찰의 포렌식 시스템 사이에는 그 어떤 구조화된 데이터 검증 인터페이스도 존재하지 않았습니다.

결함 3: 시스템 효율성에 희생된 사람의 검증.

시스템의 설계 목표는 ‘정확도 향상’보다는 ‘빠른 사건 처리’에 집중되는 경우가 많습니다. 이는 공학적 타협의 문제이지만, 그 결과가 한 시민의 자유와 직결될 때 천칭이 어느 쪽으로 기울어야 하는지는 명백합니다.

항소법원은 판결문에서 매우 솔직하게 지적했습니다. “사용자 이름에 관한 정보는 재판 당시에도 이미 존재했으나, 이것이 어떻게 간과되었는지를 확인하거나 설명할 수 있는 증거가 없다.” 이를 엔지니어링 언어로 번역하면 다음과 같습니다. “데이터는 거기에 있었지만, 데이터를 검증하는 프로세스를 그 누구도 설계하지 않았다.”

기술적인 예방책(포카요케)

‘포카요케(Poka-yoke)‘는 실수나 오류가 일어날 수 없도록 만들거나 오류가 발생했을 때 즉시 눈에 띄게 만드는 제조공학 분야의 개념입니다. 사법 IT 시스템에서도 이러한 비극의 재발을 막기 위해 최소 세 가지 레이어의 예방책을 구축할 수 있습니다.

첫 번째 레이어: 입력 시 자동 교정 및 경고 알림.

수사관이 영장 작성 시스템에 사용자 이름을 입력할 때, 시스템은 해당 사건의 포렌식 기록에 ‘비슷하지만 다른’ 문자열이 존재하는지 자동으로 검사해야 합니다. 예를 들어 “fus_ro_dah”를 입력하면, 시스템이 포렌식 보고서의 “fus__ro_dah”를 감지하여 제출 전에 “입력한 문자열이 증거 기록(fus__ro_dah)과 1글자 다릅니다. 확인해 주십시오.”라는 경고 팝업을 띄우는 방식입니다.

이 로직의 구현 난이도는 어느 정도일까요? 컴퓨터공학과 2학년 학생이 레벤슈타인 거리 알고리즘을 사용해 반나절이면 작성할 수 있는 수준입니다.

두 번째 레이어: 기관 간 조회 시 자동 크로스 체크.

미국 경찰이 해외 사업자에 조회를 요청할 때, 시스템이 영장에 기재된 사용자 이름과 원본 포렌식 보고서의 사용자 이름을 자동으로 대조합니다. 불일치가 감지되면 킥(Kik)으로 요청을 보내지 않고 자동으로 ‘보류 상태’로 전환합니다. 기술적으로는 두 조직 사이에 검증 미들웨어 레이어를 하나 더 두는 셈입니다.

세 번째 레이어: 증거 충돌 시 자동 검토.

물리적 증거(압수 기기 분석 결과)와 디지털 증거(사업자가 제공한 계정 정보)가 정면으로 충돌할 경우, 시스템은 해당 사건을 ‘증거 충돌 상태’로 자동 지정하고 검토 큐로 보냅니다. 일반적인 기소 절차를 따라 자동으로 진행되지 않도록 제어하는 것입니다.

오류가 남긴 실질적 대가

클레이미 씨는 결국 누명을 벗었고 항소법원도 이례적으로 자신들의 실수를 솔직히 인정했습니다. 하지만 이번 사건이 피해자에게 남긴 손실은 실재하며 돌이킬 수 없습니다. 18개월의 옥살이, 범죄 기록(나중에 무죄로 판명되었으나 완전히 삭제되기 전까지 취업과 일상생활에 치명적인 피해를 줌), 그리고 ‘아동 대상 성범죄자’라는 낙인이 준 정신적 트라우마가 그것입니다.

전미형사변호사협회(NACDL)의 데이터에 따르면 미국에서는 매년 데이터베이스 조회 오류, 지문 감정 실수, 목격자 오인 등 IT 및 절차적 결함으로 인한 억울한 사건이 수천 건 발생합니다. 전미 억울한 누명 등록부(National Registry of Exonerations)에 기록된 사건 중 약 43%가 어떤 형태로든 포렌식이나 디지털 증거 오류와 관련되어 있습니다.

이는 엔지니어로서 경각심을 깨우는 통계입니다. 운영 중인 사법 IT 시스템의 오류율이 단 0.01%에 불과하더라도, 연간 수백만 건의 조회가 이뤄지는 환경에서는 수백 건의 억울한 피해자가 발생한다는 의미입니다.

항소법원 판결문의 마지막은 이렇게 끝납니다. “사용자 이름 정보는 재판 시에도 존재했으나, 그것이 어떻게 간과되었는지 확인하거나 설명할 데이터가 없다.” 이것이 가장 두려운 현실입니다. 시스템은 처음부터 ‘자신이 틀릴 수 있다’는 가능성을 전혀 고려하지 않고 설계되었던 것입니다.

엔지니어링 관점에서의 성찰

이 사건이 허망한 이유는 **‘얼마든지 막을 수 있었다’**는 점에 있습니다. 제로데이 허점이 있었던 것도 아니고, 고도의 사이버 공격이나 내부자의 악의적인 방해 공작도 아니었습니다. 단지 글자 하나 때문이었습니다. 소프트웨어 개발에서 이러한 문제를 수정하는 비용은 사실상 0에 가깝습니다. 입력창 뒤에 몇 줄의 유사 검색 로직을 넣고, 시스템 간 데이터 전달 시 검증 레이어를 추가하면 그만입니다.

하지만 기술적 구현을 막는 진짜 장애물은 조직적 동기 부여의 불일치입니다. 수사 기관의 IT 예산은 ‘조회 속도 향상’, ‘데이터베이스 범위 확대’, ‘AI 얼굴 인식 도입’과 같이 ‘겉보기에 화려한’ 기능에 우선 배정되며, ‘오류 감소’, ‘검증 단계 추가’, ‘정확도 향상’과 같은 ‘눈에 보이지 않는’ 시스템 개선은 뒤전으로 밀리기 일쑤입니다.

전자의 성과는 연례 보고서에 자랑스럽게 쓸 수 있지만, 후자의 가치는 ‘사고가 나지 않았다’는 사실에 있으며, ‘사고가 나지 않았다’는 성과는 숫자로 측정하기 어렵기 때문입니다.

이 사건의 본질을 엔지니어링 시각에서 다시 바라보면 더 보편적인 질문에 도달하게 됩니다. 사회가 사법, 경찰, 금융, 의료 등 핵심 기능을 대형 IT 시스템에 점차 더 의존하고 있지만, 시스템 설계자들의 ‘오류 모드(Failure Modes)‘에 대한 이해는 ‘정상 모드(Happy Path)‘에 대한 이해보다 훨씬 뒤처져 있다는 점입니다.

소프트웨어 업계에서 자주 인용되는 통계에 따르면 심각한 결함의 약 60%는 요구사항 분석 단계의 오류에서 비롯됩니다. 그렇다면 사법 IT 시스템의 요구사항 명세서 중 ‘입력 값이 사건 기록과 완전히 일치하지 않을 때 어떻게 처리해야 하는가’를 명시한 문장이 몇 줄이나 될까요?

아마도 단 한 줄도 없을 것입니다.

마침글

노바스코샤주 항소법원은 판결문에 마지막 한 문장을 덧붙였습니다. “이 모든 일은 대단히 유감스럽다. 그러나 본 법원이 지금 해야 할 일은 이 오류를 바로잡는 것이다.”

소프트웨어 엔지니어에게 이 문장은 모든 시스템 설계서 첫 페이지에 새겨져야 할 문구입니다. “우리가 만드는 것은 시스템이지만, 그 시스템이 영향력을 미치는 것은 사람의 인생이다.” 코드 속 언더스코어 하나는 단 1바이트의 차이일 뿐이지만, 현실 세계에서는 한 무고한 남성의 18개월간의 자유였습니다.

참고 링크:

  • Ars Technica: Police missed one underscore, sent wrong man to prison
  • CBC News: A subtle mistake — how a single underscore led to an innocent Halifax man’s conviction
  • HN 토론 (item?id=49076116)
  • Nova Scotia Court of Appeal decision
  • 전미 억울한 누명 등록부 (National Registry of Exonerations)