NIP-44 define um padrão versionado de criptografia para payloads do Nostr, substituindo o esquema falho da NIP-04 por primitivas criptográficas modernas.

Como funciona

A versão 2 da NIP-44 usa um processo de criptografia em várias etapas:

  1. Key agreement: ECDH, secp256k1, entre chaves públicas do remetente e do destinatário produz um segredo compartilhado
  2. Key derivation: HKDF-extract com SHA256 e salt nip44-v2 cria uma conversation key
  3. Per-message keys: HKDF-expand deriva chave ChaCha, nonce e chave HMAC a partir de um nonce aleatório
  4. Padding: o conteúdo recebe padding para esconder o comprimento da mensagem
  5. Encryption: ChaCha20 criptografa o conteúdo com padding
  6. Authentication: HMAC-SHA256 fornece integridade da mensagem

A saída é um payload base64 versionado que vai dentro de um evento Nostr assinado normal. A spec exige que clientes validem a assinatura externa do evento NIP-01 antes de descriptografar o payload interno NIP-44.

Escolhas criptográficas

  • ChaCha20 em vez de AES: mais rápido, com melhor resistência a ataques multi-key
  • HMAC-SHA256 em vez de Poly1305: MACs polinomiais são mais fáceis de falsificar
  • SHA256: consistente com as primitivas existentes do Nostr
  • Formato versionado: permite upgrades futuros de algoritmo

Propriedades de segurança

  • Authenticated encryption: mensagens não podem ser adulteradas
  • Length hiding: padding obscurece o tamanho da mensagem
  • Conversation keys: usar a mesma chave para conversas contínuas reduz custo computacional
  • Auditado: a auditoria de segurança da Cure53 não encontrou vulnerabilidades exploráveis

Notas de implementação

A NIP-44 não é um substituto drop-in para payloads da NIP-04. Ela define um formato de criptografia, não um kind de evento de mensagem direta. Protocolos como NIP-17 e NIP-59 definem como payloads criptografados são usados em fluxos reais de mensagens.

A entrada plaintext é texto UTF-8 com comprimento entre 1 e 65535 bytes. Essa é uma limitação real para implementadores: se sua aplicação precisa criptografar blobs binários arbitrários, você precisa de uma codificação adicional ou de um formato de contêiner diferente.

Limitações

A NIP-44 não fornece:

  • Forward secrecy: chaves comprometidas expõem mensagens antigas
  • Post-compromise security: recuperação após comprometimento de chave
  • Deniability: mensagens são comprovadamente assinadas por chaves específicas
  • Metadata hiding: a arquitetura de relay limita a privacidade

Para necessidades de segurança alta, a NIP-104, double ratchet, ou protocolos baseados em MLS como Marmot oferecem garantias mais fortes.

História

A revisão 3 da NIP-44 foi mergeada em dezembro de 2023 após uma auditoria independente da Cure53. Ela forma a base criptográfica para DMs privadas da NIP-17 e gift wrapping da NIP-59.


Fontes primárias:

Mencionado em:

Veja também: