암호화 방식
- 1:1 채팅: X3DH 키 합의 + 더블 래칫(Double Ratchet), Signal 프로토콜과 같은 계열.
- 그룹: 보낸 사람마다 별도의 키 체인을 쓰고, 메시지에는 보낸 사람의 Ed25519 서명이 붙습니다.
- 기본 알고리즘: Ed25519, X25519, AES-GCM, HKDF-SHA256.
- 암호화에 실패한 메시지는 전송되지 않으며 평문으로 대신 보내지 않습니다.
정확히 말하면, Gather의 메시지 내용은 종단 간 암호화되며 서버는 평문을 보관하지 않습니다. 아래에서 구체적인 방식과 아직 부족한 부분을 설명합니다.
말은 알맞은 사람에게, 열쇠는 내 손 안에.
메시지를 전달하려면 네트워크가 일부 정보를 알아야 합니다. 이를 숨기지 않겠습니다.
| 정보 | 노드 |
|---|---|
| 메시지 본문, 사진·음성·파일의 내용과 파일 이름 | 볼 수 없음 |
| 닉네임, 프로필 사진 등 개인 프로필 | 볼 수 없음 |
| 그룹 이름과 공지 | 볼 수 없음 |
| 그룹 멤버 목록(노드에 저장되지 않음) | 볼 수 없음 |
| IP 주소와 연결 신원 | 접속한 입구 노드는 볼 수 있음 |
| 언제, 얼마나 자주 메시지를 보내는지 | 접속한 입구 노드는 볼 수 있음 |
| 메시지의 수신자 | 접속한 입구 노드는 볼 수 있음 |
노드끼리 메시지를 중계할 때는 보낸 사람을 숨기며, 오프라인 보관 메시지는 매일 바뀌는 메일함 식별자에만 연결됩니다. 다만 내가 접속한 입구 노드는 내가 누구와 대화하는지 알고 있습니다.
상대가 오프라인이면 메시지는 암호문 상태로 여러 노드에 보관됩니다. 보관 노드에는 매일 바뀌는 메일함 식별자와 암호문만 보이며, 보낸 사람과 받는 사람은 보이지 않습니다. 가져갈 권리를 증명할 수 있는 것은 받는 사람뿐입니다. 최대 30일간 보관됩니다.
보안 설명은 한계까지 솔직하게 밝힐 때 의미가 있습니다.