Skip to content

Security

Sangyong Bae edited this page Aug 11, 2026 · 5 revisions

보안 모델

SSOT: docs/04 무해화 · docs/08 ADR-0002 · docs/17 ADR-0005 · docs/29 와이어 감사

신원과 신뢰

  • 신원 = 기기 키 지문(PeerId = X25519 정적 공개키). 이름·IP·사용자 주장은 신원의 근거가 아니다.
  • TOFU: 첫 접촉에서 키를 핀하고, 이후 같은 키만 신뢰를 잇는다. 이름이 같아도 다른 키에 신뢰가 옮겨가지 않는다(불상속). 이름 재사용은 경고.
  • 핀은 암호화 영속 — 재시작해도 유지(MITM 창 상시 개방 문제 해소). 핀 파일은 "내가 아는 상대 전체 목록"이라 그 자체를 암호화한다. 파일 손상·키 불일치 시 fail-closed(전부 미검증 취급 + 잠김 표시 — 조용한 재핀 오염 금지).
  • SAS(안전 번호) 대조로 FingerprintVerified 승격(UX 노출은 진행 중).

전송 경로

  • 발견 패킷은 서명 없는 힌트 — 존재·이름·포트만 싣고, 프로필·연락처·메시지는 절대 싣지 않는다(허용 목록 심사).
  • 표시 이름 기본값은 정제된 호스트명(실명 추정 부분 제거 · 판별 불가 시 지문 라벨) — 실명이 LAN에 평문 방송되지 않는다.
  • 세션은 Noise_XX — 핸드셰이크가 키 소유를 증명하고, 이후 전 페이로드가 AEAD 암호화된다. 와이어 평문 부재는 tap 테스트로 고정.

수신 파일 무해화 (4단계 게이트)

보낸 사람이 누구든 믿지 않는다 — 신원과 무관하게 항상 적용.

  1. 협상 — 자격(핀+양방향 대화)·수신 정책(자동/기간/수동/거부)·용량·속도 합의
  2. 격리 — 원본은 실체화되지 않고 .beepq 봉인(해시·메타 포함)으로 격리함에
  3. 검사 — 위험 등급 판정(확장자·매직 fail-closed) · (예정) AV/AMSI 어댑터
  4. 승인 실체화 — 사람이 승인해야 다운로드 폴더로. 해시 재검증·실행비트 제거·OS 격리 표식(macOS quarantine · Windows MotW Zone.Identifier) — 복원 후에도 OS 보호(SmartScreen·Gatekeeper)가 이어진다

앱은 수신 파일을 실행하지 않고, 링크를 자동으로 열지 않으며, 아카이브를 자동 해제하지 않는다.

저장 보호

  • 마스터 저장 키 = 무작위 생성 → 기기 키 파생 래핑 키로 한 겹(보호 수준 전환 시 재암호화 불필요). 승격 옵션: OS 보안 저장소 / 사용자 암호.
  • 설정 파일은 평문(민감하지 않은 값만) · 신뢰 핀·(예정) 대화 기록은 암호화.
  • 신원 키 파일은 평문(래핑 원료 자체라 자신을 감쌀 수 없음 — 구조적 한계로 문서화) · Unix 0600 · 백업은 사용자 책임 고지.

알려진 한계 (숨기지 않는다)

  • 최초 접촉 MITM은 원천 차단 불가(TOFU의 본질) — SAS 대조가 완화책.
  • 고정 공개키 주기 광고 = 재식별자(R-18) — 감수 vs 광고 끄기 옵션 판단 대기.
  • 기기 자체 탈취(키 파일 동봉)는 기본 구성이 못 막는다 — 승격 옵션이 보완.
  • 서명·공증 전: macOS는 Cask가 격리 표식을 제거(임시방편), Windows는 SmartScreen 경고 가능.

Clone this wiki locally