피드로 돌아가기
Dev.toSecurity
원문 읽기
브라우저 기반 E2E 암호화 P2P 메신저의 Blind Relay 설계
I built a fully anonymous, E2E-encrypted P2P messenger that runs entirely in the browser #webdev #privacy #javascript #cryptography
AI 요약
Context
중앙 서버의 데이터 열람 가능성을 원천 차단하는 완전 익명 P2P 통신 구조 필요. 기존 메신저의 서버 신뢰 모델을 배제한 수학적 기반의 Privacy 보장 설계 추구.
Technical Solution
- x25519 Pubkey 기반 Identity 설계를 통한 사용자 조회 테이블 제거
- Client-side Hash 기반 Vault ID 생성을 통한 서버 저장소 내 사용자 식별 정보 배제
- Service Worker를 활용한 Push Payload의 Ciphertext 처리로 푸시 서비스의 데이터 가시성 차단
- IndexedDB의 Compound Index [conversationId, timestamp] 적용을 통한 메시지 조회 성능 최적화
- tweetnacl-util 라이브러리 채택을 통한 암호화 레이어의 구현 안정성 확보
- Relay 서버를 단순 메시지 전달자로 제한하여 서버 운영자의 메시지 복호화 불가능 구조 설계
실천 포인트
1. 브라우저 내 대량 데이터 처리 시 localStorage 대신 IndexedDB의 Compound Index 활용 검토
2. Push 알림 구현 시 Service Worker 단계에서 복호화를 수행하여 전송 구간 보안 강화
3. 암호화 기능 구현 시 커스텀 래퍼 작성을 지양하고 검증된 표준 라이브러리 우선 채택
4. 사용자 식별자를 서버에 저장하지 않는 Hash 기반 Identity 설계 적용 가능성 검토