크라우니 클라우드/메모 아키텍처 딥리서치 (2026-06-16)
자가호스팅 개인 클라우드+노트 best practice 조사(opus, Fable 5 가용불가로 분업 상향). 우리 아키텍처(콘텐츠주소화 blob + owner localStorage 동기화 + SHA-256 해시체인 앵커 + 공유토큰)에 매핑.
요약
- 동기화가 진짜 갭: "로컬에 없을 때만 채택" 병합은 멀티기기 동시편집 시 데이터손실. 메타/스칼라=per-field LWW + HLC, 노트본문=시퀀스 CRDT(중기)·충돌보존(단기).
- convergent encryption 비권장: dedup과 양립하나 confirmation-of-file/partial-info 공격 내재. per-owner 키 유도(cross-owner dedup 포기)가 현실적.
- 공유링크 96bit 적정: 진짜 갭은 토큰이 아니라 referrer/크롤러 누출 위생.
- 재개가능 업로드: 64MB 상한 초과 시 필요. tus offset 개념만 차용(외부의존 0).
- 무결성 앵커 견고: 머클 체크포인트로 O(log n) 검증. 단 외부 타임스탬프 없이 서버 self-equivocation은 원천차단 불가(정직한 한계).
즉시 반영한 권고 (2026-06-16 구현 완료)
- #1 항목별 LWW 머지 → 신규
/api/merge(항목 id별 ts LWW + 툼스톤). 공용/api/store(30+서비스)는 무수정, 클라/메모 전용 결선. 멀티기기 데이터손실 해결 검증. - #2 공유링크 위생 →
/api/share에Referrer-Policy: no-referrer+X-Robots-Tag: noindex, nofollow, 토큰 96→128bit. - #5 무결성 검증 →
GET /api/anchor?verify=1(체인 재계산 intact 판정).
차기 (권고됨, 미구현)
- 노트 본문 시퀀스 CRDT(동시 텍스트 협업) — 별도 설계 세션 필요.
- 재개가능 업로드(offset append + 세션 + TTL 청소) — 64MB 초과가 실제 발생 시.
- 머클 체크포인트 + Ed25519 head 서명 — 부인방지(self-equivocation 한계는 잔존).
- E2E는 "공유로 나간 blob"에만 선택적. 위협모델이 본인서버면 비용대비 효과 낮음.
정직한 한계
- 시퀀스 CRDT 본문은 권고만, 설계 미완. 충돌보존은 임시방편.
- 실제 코드 미열람(프롬프트 서술 기반) — 후속 코드 확인은 메인세션이 수행함.
- self-equivocation은 외부 신뢰앵커 없이 이론적 해소 불가 = KPS 정책 결정사항(토르 3진체인 앵커링 트레이드오프).
출처(대표)
- mattweidner.com/2023/09/26/crdt-survey-3.html · imfeld.dev/writing/crdts_for_mortals (CRDT/HLC)
- smarx.com/posts/2020/09/convergent-encryption · eprint.iacr.org/2012/631.pdf (convergent enc 공격)
- w3.org/2001/tag/doc/capability-urls · web.dev/articles/referrer-best-practices (공유링크)
- tus.io/protocols/resumable-upload (재개 업로드)