피드로 돌아가기
Dev.toSecurity
원문 읽기
Web Crypto API 기반 Zero-Knowledge 설계로 파일 서버의 데이터 가독성 완전 제거
How I built a file-sharing tool where even I can't read your files (zero-knowledge architecture in Next.js)
AI 요약
Context
기존 휘발성 파일 공유 도구들이 DB 상의 삭제 마킹이나 클라이언트 렌더링 차단에 의존하여 실제 데이터가 서버에 잔존하는 한계 존재. 서버 운영자조차 데이터에 접근할 수 없는 완전한 제어권 보장을 위한 Zero-Knowledge 아키텍처 필요성 대두.
Technical Solution
- Web Crypto API를 통한 브라우저 단 AES-GCM 암호화 수행으로 서버 전송 전 데이터 은닉
- Decryption Key를 URL Hash Fragment(#)에 포함하여 HTTP 요청 시 서버 전송을 원천 차단하는 설계
- Supabase RPC를 통한 view_count 업데이트와 Storage 삭제를 원자적(Atomic)으로 처리하여 동기적 삭제 구현
- SHA-256 해싱을 통한 수신자 이메일의 익명화 저장으로 개인 식별 정보의 서버 저장 배제
- Canvas element 기반 렌더링 방식을 채택하여 브라우저 기본 저장 및 자동 스크래핑 기능 무력화
- v1의 Cron 기반 백그라운드 삭제 방식에서 발생하는 5분간의 데이터 노출 윈도우를 RPC 기반 실시간 삭제로 해결
실천 포인트
- 서버에 절대 저장해서는 안 될 민감 정보는 URL Fragment를 활용해 클라이언트에만 유지하는 패턴 검토 - 데이터 삭제의 엄격함이 요구되는 시스템은 Background Job 대신 Atomic Transaction 내 삭제 로직 배치 - 개인정보 보호가 필요한 식별자는 서버 저장 전 클라이언트 사이드 해싱 처리 적용 - 정적 파일의 단순 다운로드를 방지해야 하는 경우 Canvas 렌더링을 통한 1차 방어선 구축