NIP-04는 kind 4 이벤트와 ECDH 파생 공유 비밀을 사용하여 암호화된 다이렉트 메시지를 정의한다. Nostr의 최초 DM 방식이었으나 현재는 레거시 기술이며, 새로운 비공개 메시지 작업은 NIP-17로 이전되었다.

작동 방식

메시지는 다음과 같은 기본 흐름의 kind 4 이벤트를 사용한다:

  1. 발신자가 secp256k1 ECDH로 공유 비밀을 도출한다.
  2. 평문을 AES-256-CBC로 암호화한다.
  3. 이벤트에 수신자를 지정하는 p 태그를 포함한다.
  4. 암호문을 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 이벤트 위에 새 기능을 구축하는 것은 보통 기존의 프라이버시 한계를 그대로 가져가는 것을 의미한다.


주요 출처:

언급된 뉴스레터:

같이 보기: