"Keep 은 자기 열쇠를 안 쥐어. 뇌한테 너를 체크인시켜 달라 하고, 이 머신에서만, 일주일 동안 작동하는 손목띠를 건네."
Keep 은 PIN 을 안 저장해
정문은 PIN 인데, 반전이 여기 있어: Keep 은 자기 PIN 을 안 저장해. loopback 으로 cwkPippa 에 PIN 검증을 위임해. PIN 을 입력하면 Keep 이 로컬 머신에서 cwkPippa 한테 '이거 맞아?' 를 묻고, cwkPippa 가 답해. Keep 은 비밀을 절대 안 쥐어. 그게 의도적 경계야 — 정체성을 소유하는 시스템(cwkPippa)이 credential 체크도 소유하고, 금융 표면인 Keep 은 비밀-저장 사업에서 완전히 빠져. PIN 이 사는 곳 하나가 줄면 샐 수 있는 곳 하나가 줄어.
손목띠: IP-bound, 시간-bound 쿠키
성공한 체크는 여러 의도적 속성을 가진 세션 쿠키를 mint 해. HMAC-서명(변조 감지 — 위조나 편집 못 해), IP-bound(발급된 주소에서만 작동, 그래서 훔친 쿠키가 다른 데선 쓸모없음), 7일(만료돼, 접근이 영구 아님), HttpOnly(JavaScript 가 못 읽어, script injection 절도를 무디게), SameSite=Strict(cross-site 요청에 안 실려, CSRF 한 부류 차단). 각 속성이 특정 공격을 닫고; 함께면 손목띠를 훔치기 어렵고 훔쳐도 쓸모없게 만들어.
대부분 놓치는 HTTP/HTTPS 분리
Keep 은 두 방식으로 닿아: LAN/tailnet 의 평문 HTTP, 그리고 Tailscale Serve 의 HTTPS. 설계가 다루는 미묘한 함정이 여기 있어: 브라우저 쿠키는 hostname 으로 scope 되지 port 로 안 돼. 그래서 HTTP port 용 쿠키와 HTTPS port 용 쿠키가 순진하면 이름을 공유하고 조용히 서로 덮어, 덜 안전한 세션이 더 안전한 걸 대체하게 둬. Keep 은 HTTP 와 HTTPS 에 별개 쿠키 이름을 써 정확히 두 세션이 서로 못 뭉개게. 그리고 HTTPS 세션은 Secure flag 를 받고(신뢰된 loopback proxy 헤더로) HTTP 는 못 받아 — 그래서 더 안전한 경로가 우연히 downgrade 되지 않고 진짜로 더 안전해.