NIP-4E는 fiatjaf가 제안한 공개 초안으로, 모든 기기가 사용자의 주요 Nostr 신원 키를 보유하지 않고도 사용자 자신의 기기들 사이에서 비공개 데이터를 공유하기 위한 것입니다. 아직 병합되지 않았으며 draft/optional 제안으로 남아 있습니다.

이 제안이 다루는 문제

NIP-51 목록과 NIP-60 Cashu 지갑을 포함한 많은 기존 NIP는 나중에 어느 기기에서든 다시 읽을 수 있도록 신원 키를 사용해 사용자가 자신에게 데이터를 암호화합니다. 이 방식은 신원 키에 직접 접근할 수 없을 때 무너집니다. 예를 들어 원격 서명자가 FROST 임계값 조각, MuSig2, 또는 호스팅된 보안 엔클레이브로 보호되는 경우, 암호화와 복호화를 할 때마다 그 서명자와 왕복 통신이 필요해집니다. 또한 서명 키가 원격 bunker에 있으면 오프라인 암호화가 불가능해집니다.

작동 방식

NIP-4E는 기기별 “클라이언트 키"를 사용자의 신원 키가 아닌 공유 “암호화 키"로부터 분리합니다:

  1. 사용자가 처음 설정하는 클라이언트가 무작위 암호화 키쌍을 생성하고, 그 공개 절반을 사용자의 신원 키로 서명한 kind:10044 이벤트에 공표합니다.
  2. 해당 사용자를 위해 데이터를 암호화하거나 복호화하려는 다른 클라이언트는 신원 키가 아니라 공표된 암호화 키에 대해 Diffie-Hellman 공유 비밀을 계산합니다.
  3. 두 번째 기기가 새 클라이언트를 설치하면, 그 클라이언트는 자체 로컬 “클라이언트 키"를 생성하고 첫 번째 클라이언트에게 암호화 키를 공유해 달라고 요청하는 kind:4454 공표를 (역시 사용자의 신원 키로 서명해) 게시합니다.
  4. 원래 클라이언트가 새 kind:4454 공표를 감지하면, NIP-44를 사용해 공유 암호화 키를 새 클라이언트의 키로 암호화한 뒤 게시하여 새 클라이언트가 이후 복호화해 사용할 수 있게 합니다.

그 결과, 클라이언트가 공유 암호화 키를 로컬에 보유한 뒤로는 암호화와 복호화에 신원 키 서명자에게 물어볼 필요가 전혀 없으며, 신원에는 원격 서명자 구성(FROST, MuSig2, 호스팅된 엔클레이브)을 쓰면서도 일반 암호화는 빠르게 유지되고 오프라인에서도 작동합니다.

왜 중요한가

NIP-4E는 매번의 암호화/복호화 호출마다 원격 서명자에 의존하지 않고 드라이브 전체 또는 계정 전체 대칭 키가 필요한 다른 제안들의 토대로 인용됩니다. 여기에는 비공개 암호화 드라이브 제안(PR #2412)과 같은 아이디어를 NIP-17에 한정해 좁힌 버전(PR #2361)이 포함됩니다. 둘 다 NIP-4E 자체와 함께 열린 상태로 남아 있어, 이 영역은 완성된 구성 요소라기보다 활발하고 아직 정리되지 않은 프로토콜 영역입니다.


주요 출처:

언급된 곳:

함께 보기: