중계만 하는 서버
암호화된 메시지는 서버에 14일간 암호화된 채로 수신자가 받을 수 있도록 호스팅합니다. 그 외에 서버가 저장하는 것은 서비스 작동을 위한 최소한의 정보뿐입니다.
그레이게이트는 왜 필요한가
전 세계 많은 국가들에는 여전히 자유로운 의사소통을 억압하는 법과 정책이 존재합니다. 그레이게이트는 이러한 환경에서도 안전하게 의사소통할 수 있는 도구를 제공합니다.
구조
암호화된 메시지는 서버에 14일간 암호화된 채로 수신자가 받을 수 있도록 호스팅합니다. 그 외에 서버가 저장하는 것은 서비스 작동을 위한 최소한의 정보뿐입니다.
모든 메시지는 14일 안에 수신자가 앱을 통해 받지 않으면 서버에서 자동으로 삭제됩니다.
현재 그레이게이트는 초대 코드로만 가입할 수 있습니다. 사용을 원하시면 초대 코드를 가진 사용자에게 요청하시기 바랍니다.
작동 방식
가입할 때 RSA 키 쌍을 기기 안에서 만듭니다. 개인 열쇠는 iOS Keychain과 Android Keystore 밖으로 나가지 않습니다. 서버로 보내지 않으니 서버에서는 아무 메시지도 읽을 수 없습니다.
각 기기가 방 비밀번호에서 방 열쇠를 직접 유도합니다. 서버가 갖는 것은 비밀번호가 맞는지 확인할 해시뿐이고, 비밀번호도 열쇠도 서버에 도착하지 않습니다.
메시지는 암호화되어 전송됩니다. 푸시 알림은 내용도, 보낸 사람도, 방 이름도 담지 않고 새 메시지가 있다는 사실만 전합니다.
복호화한 대화는 그 기기에만 저장합니다. 기기를 바꾸면 과거 대화는 따라오지 않습니다. 불편한 결과지만 제약이 아니라 설계이고, 대화가 서버를 거치지 않았다는 사실의 증거가 바로 이것입니다.
전달됨까지만 알립니다. 언제 읽었는지는 표시하지 않을 뿐만 아니라 서버에 저장하지도 않습니다.
접속 상태와 타이핑 상태 역시 서버에서 알 수 없습니다. 서버는 메시지를 옮기는 일만 할 뿐, 누가 접속했는지도 누가 입력 중인지도 알지 못합니다.
서버는 사용자의 메시지를 중계할 뿐 아무것도 보관하지 않습니다. 모든 데이터는 기기에만 저장됩니다.
서비스에는 어떤 개인정보 수집 수단이나 분석 도구도 쓰지 않습니다. 또한 소셜 로그인을 비롯한 모든 형태의 외부 계정 로그인을 지원하지 않습니다. 사용자의 프라이버시를 최우선으로 고려합니다.
기기별 추가 보호
iOS Face ID와 Android BiometricPrompt로 앱 접근을 보호합니다. 생체인증이 없는 기기는 앱 PIN을 씁니다.
앱 전환 화면에서는 내용을 가립니다. Android는 OS 차원에서 화면 캡처를 막고, iOS는 캡처를 감지해 같은 방에 알립니다.
방마다 자동 삭제(1일·7일·30일)를 켜서 기기에 메시지를 남기지 않을 수 있습니다.
상대의 열쇠를 영단어 12개와 숫자 그룹으로 확인합니다. 이를 통해 서버가 중간에서 바꿔치기하는 공격을 막습니다.
아닙니다. 가입하려면 초대 코드를 받아야 합니다.
되찾을 수 없습니다. 방 관리자에게 다시 초대를 받거나 비밀번호를 알려 달라고 요청해야 합니다.
가입할 때 받은 복구 문구 12단어로 비밀번호와 앱 잠금 PIN을 초기화할 수 있습니다. 이때 과거 대화와 방 열쇠는 돌아오지 않습니다. 복구 문구가 없다면 그 계정은 되찾을 수 없습니다.
동기화되지 않습니다. 모든 정보는 사용자의 기기에만 저장됩니다.
삭제는 자신의 기기에만 적용됩니다. 상대 기기에서 지우려면 상대가 직접 삭제해야 합니다.