NIP-04: 암호화된 다이렉트 메시지 (지원 중단)
NIP-04는 kind 4 이벤트와 ECDH 파생 공유 비밀을 사용하여 암호화된 다이렉트 메시지를 정의한다. Nostr의 최초 DM 방식이었으나 현재는 레거시 기술이며, 새로운 비공개 메시지 작업은 NIP-17로 이전되었다.
작동 방식
메시지는 다음과 같은 기본 흐름의 kind 4 이벤트를 사용한다:
- 발신자가 secp256k1 ECDH로 공유 비밀을 도출한다.
- 평문을 AES-256-CBC로 암호화한다.
- 이벤트에 수신자를 지정하는
p태그를 포함한다. - 암호문을 base64로 인코딩하여 IV와 함께
content에 저장한다.
이벤트 자체는 여전히 일반적인 서명된 Nostr 이벤트이므로, 릴레이는 평문을 읽을 수 없지만 외부 메타데이터는 볼 수 있다.
보안 및 프라이버시 한계
NIP-04에는 상당한 프라이버시 결함이 있다:
- 메타데이터 유출 - 발신자의 pubkey가 모든 메시지에서 공개적으로 보임
- 발신자 프라이버시 없음 - 누가 누구에게 메시지를 보내는지 누구나 볼 수 있음
- 정확한 타임스탬프 - 메시지 타이밍이 랜덤화되지 않음
- 비표준 키 처리 - ECDH 포인트의 X 좌표만 사용하는 방식으로, 라이브러리 간 정확성 확보가 어려웠고 프로토콜 발전 여지가 적었음
명세는 이것이 “암호화 통신의 최신 기술에 전혀 미치지 못한다"고 명시적으로 경고한다.
대체된 이유
NIP-04는 메시지 내용을 암호화하지만 소셜 그래프를 숨기지 않는다. 릴레이 운영자는 누가 이벤트를 보냈는지, 누가 수신하는지, 언제 발행되었는지를 여전히 볼 수 있다. 이 정도의 메타데이터만으로도 페이로드를 복호화하지 않고 대화를 매핑하기에 충분하다.
NIP-17은 NIP-44 페이로드 암호화와 NIP-59 gift wrapping을 결합하여 이 문제를 해결하며, 릴레이와 일반 관찰자로부터 발신자를 숨긴다. 새 구현에서는 NIP-04를 호환성 전용으로 취급해야 한다.
구현 현황
레거시 클라이언트와 서명자는 여전히 NIP-04 암호화/복호화 메서드를 노출하는데, 이전 대화와 오래된 앱이 여전히 사용 중이기 때문이다. 이 호환성 레이어는 마이그레이션에 중요하지만, kind 4 이벤트 위에 새 기능을 구축하는 것은 보통 기존의 프라이버시 한계를 그대로 가져가는 것을 의미한다.
주요 출처:
언급된 뉴스레터:
같이 보기: