무엇을 암호화
모든 JSONL line 이 append 전에 Fernet (AES-128-CBC + HMAC-SHA256) 로 암호화. passphrase 가 local OS keystore 에 (security find-generic-password -s {service-name} -a {account-name}). passphrase 의 SHA-256 이 Fernet key 결정적으로 derive — passphrase 아는 어느 Mac 이든 어느 암호화 JSONL 든 read. Keychain entry 없는 peer Mac 은 암호화 file 을 blob-backup endpoint 로 opaquely 저장.
가림막 — peace of mind
threat model 정직하게 명명: 가림막. 우발적 가시성 — Pathfinder preview, shoulder surf, fleet sync 가 새 곳 가는 것 — 에 방어, filesystem + Keychain access 있는 단호한 attacker 에 방어 X. 그렇지 않은 척 X.
plain + 암호화 공존
read path 가 첫 byte 로 auto-detect: { 가 plain JSON, g 가 Fernet base64. 한 JSONL 이 마이그레이션 동안/후 둘 다 carry 가능, read 가 어느 쪽이든 처리.
원칙: threat model 정직하게 명명. shoulder-surfing 방어하는 'at-rest 암호화' 가 정말 유용 — 'attacker 에 대한 보호' 라 부르는 건 거짓말. 정직한 scope 가 design 을 일관성 있게 만들어.