본문 바로가기
C.W.K.
Stream
Lesson 06 of 06 · published

At-Rest 암호화 — 가림막 (Peace of Mind)

~11 min · encryption, fernet

Level 0호기심
0 XP0/69 lessons0/17 achievements
0/100 XP to next level100 XP to go0% complete

무엇을 암호화

모든 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에 접근할 수 있는 단호한 attacker까지 막진 못해. 그런 척도 안 해.

plain + 암호화 공존

read path 가 첫 byte 로 auto-detect: { 가 plain JSON, g 가 Fernet base64. 한 JSONL 이 마이그레이션 동안/후 둘 다 carry 가능, read 가 어느 쪽이든 처리.

원칙: threat model 정직하게 명명. shoulder-surfing 방어하는 'at-rest 암호화' 가 정말 유용 — 'attacker 에 대한 보호' 라 부르는 건 거짓말. 정직한 scope 가 design 을 일관성 있게 만들어.

가림막이라는 이름 덕분에 운영 결정도 선명해져. backup Mac은 key 없이 blob을 보관할 수 있고, 복원할 때만 승인된 Keychain에서 passphrase를 받아. 반대로 이미 로그인된 계정과 Keychain을 장악한 공격자까지 이 층 하나로 막겠다고 말하진 않아. 그 위협은 account, device, access control 문제야.

암호화 migration은 형식보다 복구가 먼저야. plain line과 Fernet line이 섞인 중간 상태를 reader가 받아들이면 한 번에 전부 다시 쓰다가 파일을 잃는 위험을 피할 수 있어. writer는 새 형식을 쓰고 reader는 전환 기간의 둘을 읽어. 완전히 옮겼다는 검증 뒤에만 오래된 경로를 걷어 내.

사실 peace of mind는 약한 목표가 아니야. 대화 archive가 Finder preview에 우연히 펼쳐지지 않는 것만으로도 실제 생활의 불안을 줄여. 다만 그 이득의 이름을 정확히 붙여야 다음 사람이 이 가림막을 금고로 착각하지 않아.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고
💛 by 똘이warm💛 by 피파warm

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.