NIP-44: cargas criptografadas
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:
- Key agreement: ECDH, secp256k1, entre chaves públicas do remetente e do destinatário produz um segredo compartilhado
- Key derivation: HKDF-extract com SHA256 e salt
nip44-v2cria uma conversation key - Per-message keys: HKDF-expand deriva chave ChaCha, nonce e chave HMAC a partir de um nonce aleatório
- Padding: o conteúdo recebe padding para esconder o comprimento da mensagem
- Encryption: ChaCha20 criptografa o conteúdo com padding
- 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:
- Newsletter #4: NIP Deep Dive
- Newsletter #3: dezembro de 2023
- Newsletter #3: dezembro de 2024
- Newsletter #12: Marmot
- Newsletter #13: Vector
- Newsletter #19: migração do nostter para NIP-44
- Newsletter #19: nowhere criptografa tráfego Nostr
Veja também: