보안

아무도 믿을 필요가 없도록 설계

Crocodile은 서버도, 네트워크도, 심지어 방을 호스트하는 친구조차 여러분의 말을 읽을 수 없도록 설계되었습니다. 이 페이지에서는 무엇이 보호되고 무엇이 보호되지 않는지, 그리고 어떻게 보호되는지 설명합니다.

보호되는 것

내 목소리

통화에 참여한 사람만 들을 수 있습니다. 컴퓨터를 떠나기 전에 컴퓨터에서 프레임 단위로 암호화됩니다.

내 메시지

지금도 나중에도 스페이스나 다이렉트 메시지의 멤버만 읽을 수 있습니다. 멤버의 기기에 저장되며 서버에는 절대 저장되지 않습니다.

내 신원

내 기기와 복구 키를 가진 사람에게만 있습니다. 시스템 키체인으로 암호화되어 저장됩니다.

서버가 보는 것과 보지 못하는 것

사람과 사람을 연결하는 시스템 중 메타데이터가 전혀 없는 것은 없습니다. Crocodile이 정확히 어디에 선을 긋는지 보여 드립니다.

서버가 절대 보지 못하는 것

  • 내가 쓰거나 말한 내용: 선택 사항인 릴레이나 메일박스를 쓸 때도 내용은 종단 간 암호화됩니다.
  • 전화번호, 이메일, 비밀번호: Crocodile은 어느 것도 요구하지 않습니다.
  • 친구 목록과 차단 목록: 내 기기만 읽을 수 있도록 암호화됩니다.
  • 누가 친구 요청을 보냈는지: 요청은 보낸 사람을 밝히지 않는 봉인된 노트로 전달됩니다.

서버가 보는 것

  • 공개 프로필, 스페이스 이름, 채널 목록, 멤버십, 기기 이름.
  • 누가 온라인인지, 누가 어느 음성 방에 있는지.
  • 연결되어 있는 동안: 누구의 접속 상태를 지켜보는지, 누구와 다이렉트 메시지나 통화를 시작하는지(저장되지 않고 다른 서버와 공유되지 않음).
  • 앱을 서로 연결하는 데 필요한 IP 주소. 방의 호스트도 멤버의 IP 주소를 봅니다.

누가 시도할 수 있고, 무엇을 얻는가

위협 모델은 가능한 공격자와 각 공격자가 할 수 있는 일과 없는 일을 정리한 것입니다. 다음은 우리 위협 모델의 요약입니다.

공격자할 수 있는 일할 수 없는 일
네트워크를 감시하는 사람어떤 IP 주소와 얼마나 오래 통신하는지 보기.내용이나 메타데이터를 읽거나, 패킷 크기로 무슨 말을 하는지 알아내기.
지금 기록하고 나중에 해독하는 사람암호화된 트래픽을 몇 년이고 보관하기.미래의 양자 컴퓨터로 해독하기: 모든 키 교환은 하이브리드 양자 내성 방식입니다.
악의적인 서버누가 온라인인지 거짓말하기, 연결을 지연하거나 끊기, 메타데이터 기록하기.내용 읽기, 프로필·스페이스·초대 위조하기, 누군가의 키 바꿔치기, 두 앱 사이에 끼어들기.
릴레이나 메일박스 운영자중계된 패킷의 크기와 타이밍, 또는 누가 누구에게 메시지를 몇 개 남겼는지 보기.그것을 읽거나, 변경하거나, 위조하기.
방을 호스트하는 친구멤버의 IP 주소와 누가 언제 말하는지 보기.다른 멤버가 할 수 없는 일을 하기: 호스트의 릴레이는 암호화된 패킷만 전달합니다.
스페이스를 떠난 사람이전에 본 것을 간직하기.떠난 뒤에 오간 말을 읽기: 누군가 나가면 키가 교체됩니다.
키를 훔친 사람한 대화의 현재 30분짜리 키 주기를 최대한 읽기.그 이전 메시지(키 삭제됨)나 이후 메시지(새 키)를 읽기.
잠금이 풀린 내 컴퓨터를 손에 넣은 사람내가 할 수 있는 모든 것. 디스크 암호화를 사용하고, 잃어버린 기기는 다른 기기에서 제거하세요.기기를 제거한 뒤 새 메시지를 받기.

암호 기술

감사를 거친 오픈 소스 라이브러리(@noble)에서 가져온, 충분히 연구된 구성 요소를 표준적인 방식으로 조합했습니다.

Ed25519모든 레코드, 메시지, 연결 오퍼에 대한 서명
X25519 + ML-KEM-768모든 쌍별 비밀 값을 위한 하이브리드 양자 내성 키 교환
AES-256-GCM메시지, 음성 프레임, 서버 연결의 암호화
HKDF-SHA256키 도출과 앞으로만 가는 래칫
DTLS-SRTP그 아래에 있는 WebRTC의 암호화된 전송
Padmé · CBR Opus메시지 길이와 말하는 패턴 숨기기

알려진 한계

다른 곳보다 저희에게서 먼저 듣는 편이 낫다고 생각합니다.

  • 아직 독립 감사 없음. 설계와 코드는 공개되어 있지만 아직 외부 업체의 감사를 받지 않았습니다. 감사를 받기 전까지는 신변의 안전이 걸린 상황에서 Crocodile에 의존하지 마세요.
  • 기기들이 하나의 계정 키를 공유. 기기를 제거하면 새 메시지와 키가 더는 전달되지 않지만, 도난당한 기기는 여전히 내 이름으로 서명할 수 있습니다. 기기별 서명 키를 계획하고 있습니다.
  • 일부 메타데이터는 보입니다. 서버는 멤버십과, 연결되어 있는 동안 누구와 연락하는지를 봅니다. 이를 줄이는 것이 계획에 있습니다.
  • 아주 큰 그룹. Crocodile은 MLS 대신 래칫 방식의 발신자 키를 사용하므로 그룹이 커질수록 키 교체 비용이 늘어납니다. 아주 큰 스페이스를 위해 MLS를 계획하고 있습니다.
  • 키 확인은 수동. 친구와 보안 번호를 비교할 수는 있지만, 앱이 그렇게 하도록 안내하지는 않습니다.

문제를 발견했나요?

공개되기 전에 수정할 수 있도록 보안 문제는 GitHub를 통해 비공개로 신고해 주세요.