Signito
블로그

주소록을 넘기면 누구까지 드러날까

  • 주소록
  • 개인정보

앱을 처음 열면 연락처에 접근해도 되겠냐고 묻는다. 친구를 찾아 주려는 것이니 나를 위한 동의처럼 보인다. 그런데 이 동의로 넘어가는 것은 내 정보가 아니다.

허용을 누르면 올라가는 것

올라가는 것은 내 폰에 저장된 번호와 이름이다. 전부 남의 것이다.

내 번호 하나를 내주는 동의라면 판단은 내 몫이다. 주소록은 다르다. 내가 저장해 둔 번호가 그 사람들에게 묻지 않고 함께 올라간다. 동의 화면에 그 사람들 이름은 나오지 않는다.

번호만 가는 것도 아니다. 내가 붙여 둔 이름이 붙어서 간다. “김부장”이나 “아빠”나 병원 이름 같은 것이 그대로다.

가입하지 않은 사람도 알려진다

올라온 번호 중에는 그 메신저를 쓰지 않는 사람의 번호도 있다.

서버는 그 번호가 아직 가입하지 않았다는 사실을 알게 된다. 올라온 목록을 서버가 보관하는 방식이라면 누가 그 번호를 저장해 두었는지도 함께 남는다. 가입한 적 없는 사람인데도 누가 그를 아는지의 그림이 먼저 만들어진다.

나중에 그 사람이 가입하면 그림은 즉시 이어 붙는다. 처음 들어온 사람에게 아는 얼굴이 이미 떠 있는 경험이 여기서 나온다.

연락처 권한은 내 정보를 내주는 동의가 아니다. 내가 저장해 둔 사람들의 번호가 함께 올라가고 그중에는 그 서비스에 가입한 적 없는 사람도 있다.

해시로 올리면 정말 모를까

흔한 해명이 있다. 번호를 그대로 올리지 않고 해시로 바꿔서 올리니 서버도 원래 번호를 모른다는 것이다.

해시는 정해진 계산으로 값을 전혀 다른 값으로 바꾸는 것이다. 바꾼 값에서 원래 값으로 돌아오는 계산은 없다. 그런데 성질이 하나 있다. 같은 번호는 언제나 같은 값이 된다. 그래서 되돌릴 필요가 없다. 번호를 미리 전부 계산해 두고 올라온 값과 같은 것을 찾으면 된다.

이 해명은 비밀번호에는 맞고 전화번호에는 맞지 않는다. 차이는 경우의 수다.

한국 휴대전화 번호는 010으로 시작하고 뒤에 여덟 자리가 붙는다. 전부 세어도 1억 개다. 1억 개짜리 표는 만들 수 있다. 비밀번호는 경우의 수가 훨씬 커서 전부 계산해 둘 수가 없지만 전화번호는 된다.

2021년 연구가 실제로 해 봤다. 연구진이 쓴 방법은 전부 밀리초 안에 올라온 해시에서 원래 번호를 찾아냈다.

같은 연구가 반대 방향도 보여 줬다. 번호를 하나씩 넣어 가입 여부를 물어보는 방식으로 한 서비스를 상대로는 미국 휴대전화 번호 전체를 실제로 조회했다. 해시로 올리든 하나씩 물어보든 번호의 경우의 수가 적다는 사실은 달라지지 않는다.

그럼에도 다들 쓰는 이유

이 기능이 있어서 친구 찾기가 성립한다. 아이디를 주고받을 필요 없이 번호만 저장해 두면 연결된다. 메신저가 빠르게 퍼진 이유의 큰 부분이 여기 있다.

고치려는 시도도 이어지고 있다. 조회 횟수를 더 조이는 방법과 양쪽이 서로의 목록을 드러내지 않고 겹치는 번호만 찾아내는 암호 기술이 제안돼 있다. 다만 이용자가 아주 많은 서비스에서 실용적으로 돌리는 것은 아직 풀리지 않은 문제다.

그래서 지금 할 수 있는 판단은 하나다. 이 편의가 필요한 앱인지 보는 것이다. 번호로 사람을 찾을 일이 없는 앱이 연락처를 요구하면 편의가 아니라 수집이다. 번호 하나에 얼마나 많은 것이 걸려 있는지 생각하면 기준은 더 분명해진다.

시그니토(Signito)는 연락처 권한을 요구하지 않는다. 친구는 닉네임을 정확히 알아야 찾을 수 있고 번호로는 찾아지지 않는다.

자주 묻는 질문

이미 허용했는데 되돌릴 수 있나요

권한은 설정에서 언제든 끌 수 있다. 다만 끄는 것은 앞으로 올리지 않겠다는 뜻이고 이미 올라간 것은 그 서비스의 삭제 절차를 따로 밟아야 한다.

그 앱을 쓰지도 않는데 어떻게 제 번호를 아나요

남이 나를 저장해 두었기 때문이다. 내 동의와 상관없이 나를 저장한 사람이 주소록을 올리면 내 번호도 함께 간다. 내가 그 앱을 한 번도 켜지 않았어도 그렇다.

해시가 소용없으면 왜 쓰나요

안 하는 것보다는 낫기 때문이다. 서버 기록이 통째로 새어 나갔을 때 번호가 그대로 읽히지는 않는다. 다만 맞춰 보는 비용이 낮아서 가려졌다고 믿을 값은 아니다.

번호 대신 아이디로 찾는 메신저는 뭐가 다른가요

찾는 쪽이 이미 아는 값을 넣어야 한다. 번호는 1억 개를 전부 넣어 볼 수 있지만 아이디는 그 사람이 정한 문자열이라 경우의 수가 비교가 안 된다. 연결의 편의는 줄고 노출도 줄어든다.

참고한 연구