시크릿의 익명성

by Yun

시크릿(Secret)이라는 서비스는 일종의 익명 소셜 네트워크 플랫폼이다.

시크릿의 원리는 간단하게 소개해서:

  1. 내 연락처에 있는 전화번호/이메일을 검색하여 시크릿 사용자를 찾아낸다.
  2. 찾아낸 시크릿 사용자는 모두 익명으로 친구 추가가 된다. 이 경우, 다른 사용자와 내가 모두 서로의 연락처를 갖고 있어야만 ’친구’로 등록이 된다.
  3. 내 친구들이 익명으로 비밀을 이야기하는 것을 보거나 내가 익명으로 비밀을 올릴 수 있다.

혹자는 물어볼 것이다. 내 전화번호부에 등록된 사람이 적을 경우 누가 쓴 글인지 짐작할 수 있지 않겠느냐고, 즉 일종의 삼각측량(Triangulate)으로 짐작해낼 수 있지 않느냐고.

시크릿은 사용자의 신분이 알려지지 않도록 빈틈없는 시스템을 구축해 두었다. 시크릿 사용자는 그저 모호한 짐작으로 ‘내 연락처에 추가된 사람 중 한 명이겠거니’ 정도만 추측만 가능할 뿐이다.

우선 시크릿에서의 ‘친구(Friend)’ 개념은 트위터의 일방향적 팔로우 개념과는 다르다. 시크릿에서 누군가 당신의 ’친구’이려면 그 사람과 당신 모두 서로의 연락처에 등록이 돼 있어야 한다. 즉, 특정 누군가를 염탐하기 위해 내가 어떤 사람의 전화번호나 이메일을 연락처에 등록해 놓아도 그 사람이 내 연락처를 갖고 있지 않을 경우 그 사람의 포스트를 볼 수 없다.

또한, 위 기준에 맞는 친구가 3명 이하일 경우 그 사람들이 올린 어떠한 포스트도 볼 수 없다. 각각 누구인지 알 수 없는 친구가 3명 이상 시크릿을 사용하는 경우에만 내 스트림에 그 사람들의 포스트가 노출된다.

그리고 각 사용자가 포스트를 작성해서 올려도 즉시 모든 친구에게 해당 포스트가 노출되는 것이 아니다. 임의의 시간차를 두고 임의의 순서로 노출된다. 시간 순서대로 각 포스트가 올라오는 트위터의 타임라인과는 다르다.

시크릿에 올라오는 포스트는 글쓴이의 이름이 표시되지 않는다. 내가 한 포스트에 내 정체성을 드러내는 내용을 적으면 다른 사람들은 그 글의 글쓴이가 나라고 짐작 가능할 뿐, 내가 올린 다른 글과 나를 연결하는 것은 불가능하다.

스트림에 올라오는 포스트는 크게 다섯 가지 타입으로 구분된다. 각 포스트의 왼쪽 아래에 표시된 꼬리표로 이 타입을 구분할 수 있다. 각 타입의 포스트가 내 스트림에 노출되는 이유와 해당 포스트에 대한 나의 권한(좋아요[1], 댓글 쓰기 가능 여부)이 어떻게 되는지 간략하게 적어보겠다. ’징검다리’는 나와 특정 사용자 사이에 몇 번의 거리가 있는지를 말한다.

  • Friend: 1 징검다리. 싸이월드의 ’일촌’처럼 직접적인 친구 관계인 사용자의 포스트를 말한다. 위에서 이야기한 ’친구’가 올린 포스트. 포스트를 올린 사람과 당신이 서로를 연락처에 추가했다는 것을 의미한다. 좋아요와 댓글 쓰기 모두 가능하다.
  • Friend of Friend: 2 징검다리. A라는 내 친구가 B라는, 내 친구는 아니지만 A의 친구인 사용자의 포스트에 ’좋아요’를 누르면 나에게도 해당 포스트가 노출된다. 이때 그 포스트의 왼쪽 아래 끝에 Friend of Friend라고 표시된다. 물론 A와 B가 누구인지 알 수 없다. 좋아요와 댓글 쓰기 모두 가능하다.
  • 특정 지역 이름: Stockholm, London처럼 일반적인 지역 이름(General Location)이 표시된 포스트는 3 징검다리 이상 건너온 포스트다. 좋아요만 가능하다.
  • 별표 + 특정 지역 이름: 많은 사람에게 좋아요를 받아서 노출되는 포스트(Popular or Featured). 친구 여부와는 전혀 관련이 없다. 좋아요만 가능하다.
  • 거리가 표시된 포스트(Nearby): 100 meters, 7.5 miles와 같이 상대적인 거리로 표시되는 포스트는 앱 설정에서 Turn On Nearby를 체크해야만 스트림에 보인다. 좋아요와 댓글 쓰기 모두 가능하다.

이 글을 읽는 대부분의 한국 사용자들은 위에서 이야기한 다섯 가지의 포스트 중 Friend나 Friend of Friend라고 표시된 포스트가 없을 것이다. 대신 Your Circle이라고 표시된 포스트를 발견할 것이다. 시크릿에 내 친구가 3명 이상이더라도 개발자가 이야기하는 충분한 숫자가 아닐 경우 Friend의 포스트와 Friend of Friend의 포스트를 모두 Your Circle이라고 뭉뚱그려 표시한다. 익명성을 보장하기 위한 기발한 기교다.

댓글을 쓸 때에는 귀여운 아이콘으로 각 사용자를 표시한다. 동일한 한 포스트의 댓글에서는 각 사용자가 하나의 같은 아이콘으로 표시되지만, 다른 포스트의 댓글에서는 또 다른 임의의 아이콘으로 표시 된다. 예를 들어 A라는 포스트에 댓글을 달 때에는 파란색 티셔츠 모양의 아이콘으로 내가 표시되고, A라는 포스트에 몇 번이고 댓글을 달아도 계속해서 파란 티셔츠로 나를 표시하지만, B라는 다른 포스트에서 댓글을 달 때에는 보라색 별모양의 아이콘으로 나를 표시한다. 내가 올린 포스트에 내가 댓글을 달 경우에는 왕관 모양으로 Author임을 알려준다.

기술적인 암호화의 방법은 이해하기 힘들어서 설명하기 어렵지만, 중요한 것 중 하나는 사용자의 전화번호와 이메일 주소가 절대로 폰을 떠나 개발자에게 넘어가지 않는다는 점이다. 해시를 이용해 사용자의 전화번호/이메일을 암호화한 후 서버로 전송되며, 이를 통해 각 사용자를 인증한다.[2] 시크릿의 기술적인 암호화 방법이나 데이터 보안을 알고 싶다면 이 글을 읽어보길.

첨언: 최근 시크릿의 안드로이드 버전이 출시되면서 기존의 iOS앱과는 다르게 ’Friends’와 ‘Explore’ 두 개의 탭으로 스트림을 나눴다. 직접 써보진 않았지만 스크린샷으로 판단컨대 ‘Friends’ 스트림에는 Friend, Friend of Friend, Nearby 포스트를, ‘Explore’ 탭에는 Popular or Featured 포스트를 넣는 방식으로 나눈 것 같다. iOS 버전도 곧 이 업데이트가 적용될 것이라고 한다.


  1. 시크릿 개발자는 공식적으로 Love라는 단어를 사용하는데 한글 문맥에서는 이미 ’좋아요’가 너무 익숙하기에 이 글에서는 ’좋아요’로 적었다.  ↩

  2. 만일 해커가 암호화 방법 자체를 알아낼 경우 사용자의 연락처 정보를 알아내는 것이 아주 불가능한 것은 아니다. 하지만 그러려면 먼저 구글 서버를 해킹해서 해시 처리된 데이터를 빼내야 하는데, 사실상 거의 불가능한 방법처럼 들린다.  ↩