피드로 돌아가기
Dev.toSecurity
원문 읽기
Local-First 기반 AES-256-GCM E2EE 보안 아키텍처 구현
How I Implemented a Local-First, E2EE Architecture with Sync in My App
AI 요약
Context
사용자 데이터 프라이버시 보호와 오프라인 사용성 보장을 위한 Local-First 노트 애플리케이션 설계 필요성 대두. 서버가 데이터 평문을 알 수 없는 구조와 기기 간 정밀한 데이터 동기화 메커니즘 구축이 핵심 과제로 식별됨.
Technical Solution
- BIP39 기반 12단어 복구 문구 및 Argon2id를 통한 256-bit Master Key 생성 체계 구축
- HKDF-SHA256를 활용한 노트 및 첨부파일용 암호화 키 분리 및 AES-256-GCM 기반 로컬 암호화 처리
- 네트워크 부하 및 배터리 소모 최적화를 위한 10초 Debounce 및 2분 주기 Safety Timer 기반 Sync 엔진 설계
- 데이터 무결성 및 삭제 전파를 위한 Tombstone 방식의 삭제 추적 메커니즘 도입
- ID-based Diffing 기술을 통한 중복 다운로드 방지 및 첨부파일 전송 효율 극대화
- E2EE 저장소와 분리된 전용 Public DB 및 Next.js ISR 기반의 공개 노트 공유 구조 설계
실천 포인트
1. E2EE 구현 시 Master Key 하나로 모든 데이터를 암호화하지 말고 HKDF를 통해 용도별 하위 키로 분리할 것
2. Local-First Sync 설계 시 무분별한 실시간 전송보다 Debounce와 주기적 강제 동기화를 조합해 리소스 최적화할 것
3. 삭제 데이터의 동기화 누락을 방지하기 위해 Soft-delete 형태의 Tombstone 기록을 반드시 유지할 것
4. 암호화 데이터 저장소와 공개 데이터 저장소를 물리적/논리적으로 완전히 분리하여 보안 모델의 일관성을 유지할 것