NIP-104: Double Ratchet DMs
NIP-104는 Double Ratchet 프로토콜(Signal 아키텍처 기반)을 사용한 종단간 암호화 다이렉트 메시지를 정의하며, Nostr 대화에 forward secrecy와 post-compromise security를 제공합니다.
왜 중요한가
기존 Nostr DM 솔루션에는 한계가 있습니다:
- NIP-04: 콘텐츠를 암호화하지만 메타데이터가 유출됨
- NIP-17 + NIP-59: gift-wrapping을 통해 메타데이터 유출을 해결하지만 forward/backward secrecy가 없음
NIP-104는 전체 그림을 완성합니다: 사용자의 개인 키가 손상되더라도 공격자는 과거 메시지를 읽을 수 없고(forward secrecy) 미래 메시지를 무기한으로 계속 읽을 수도 없습니다(post-compromise security).
작동 방식
초기 설정 (X3DH)
두 당사자가 신원 키와 prekeys를 사용하여 확장된 삼중 Diffie-Hellman 교환을 수행하여 초기 공유 루트 키를 도출합니다.
Double Ratchet
- DH Ratchet: 당사자가 메시지를 교환할 때마다 새로운 Diffie-Hellman 키가 생성되어 새로운 루트 키와 체인 키를 생성
- Symmetric Ratchet: 별도의 송신 및 수신 체인이 각 메시지에 대한 개별 메시지 키를 도출
이러한 지속적인 키 회전은 하나의 키가 손상되더라도 최소한의 메시지 내용만 노출되도록 보장합니다.
Event Kinds
- Kind 442: X3DH 초기화를 위한 사용자 prekeys 게시
- Kind 443: 암호화된 첫 번째 메시지가 포함된 초기 대화 설정
- Kind 444: 확립된 대화에서의 후속 암호화 메시지
모든 암호화된 메시지는 메타데이터 보호를 위해 kind 1059 GiftWrap 이벤트로 래핑됩니다.
주요 태그
p- 수신자의 공개 키prekey- DH 계산을 위한 수신자의 prekeydh_sending- 현재 DH 송신 공개 키current_index- 체인 내 메시지 번호previous_length- 이전 메시지 체인의 길이
제한 사항
메시지는 장치-클라이언트 쌍별로 작동합니다. 여러 장치 간 동기화에는 각 장치에 대한 별도의 초기화가 필요하며, 이는 향상된 보안을 위한 트레이드오프입니다.
주요 출처:
언급:
참고: