피드로 돌아가기
I Built a Zero-Knowledge Encrypted Habit Tracker with Elixir & Phoenix LiveView
Dev.toDev.to
Security

LiveView와 E2E Encryption 결합을 통한 Zero-Knowledge 습관 추적 시스템 구축

I Built a Zero-Knowledge Encrypted Habit Tracker with Elixir & Phoenix LiveView

Mark Thayer2026년 4월 16일3advanced

Context

기존 습관 추적 서비스의 평문 데이터 저장 방식에 따른 프라이버시 침해 우려 해결 필요. 서버가 데이터 내용을 알 수 없는 Zero-Knowledge 아키텍처 구현을 위해 Client-side Encryption 도입 결정.

Technical Solution

  • libsodium-wrappers-sumo 및 ML-KEM-768/X25519 기반 Hybrid Post-quantum key encapsulation을 통한 강력한 클라이언트 암호화 체계 구축
  • 서버 렌더링 방식인 LiveView의 한계를 극복하기 위해 서버는 Skeleton UI를 제공하고 JS Hook이 클라이언트에서 복호화 후 데이터를 채우는 비동기 렌더링 파이프라인 설계
  • 데이터베이스 보안 강화를 위해 HMAC blind index를 활용한 이메일 조회 체계 및 Cloak AES-256-GCM과 LUKS를 포함한 3중 암호화 계층 적용
  • Web Crypto API의 non-extractable AES-256-GCM wrapping key를 IndexedDB에 저장하여 세션 유지 시 패스워드 재입력 최소화
  • 서버 사이드 검색 포기 및 클라이언트 사이드 필터링 채택을 통한 완전한 Zero-knowledge 무결성 유지
  • 복구 키(Recovery Key) flow 설계를 통해 서버의 개인키 접근 없이 사용자 데이터 복구 가능성 확보

- Server-side Rendering 환경에서 E2E Encryption 도입 시 Placeholder-to-JS-Hook 패턴 검토 - 사용자 식별자가 암호화된 경우, 조회를 위해 HMAC 기반의 Blind Index 생성 및 저장 전략 활용 - Post-quantum 시대에 대비한 ML-KEM 등 하이브리드 키 캡슐화 메커니즘 적용 고려 - 보안성과 UX의 Trade-off 발생 시, 복구 키 시스템을 통한 데이터 영구 손실 위험 관리

원문 읽기