What is Nostr?
Song Jong
npub1uyk…w258
2024-03-27 00:57:12

Song Jong on Nostr: #tuxdobananil #explains #nips #nip-44 ### NIP-44: Cargas Úteis Criptografadas ...

#tuxdobananil #explains #nips #nip-44

### NIP-44: Cargas Úteis Criptografadas (Versionadas) 🔒🔑

**O que é NIP-44?** 🤔
- NIP-44 introduz um novo formato de dados para criptografia baseada em pares de chaves, permitindo múltiplas escolhas de algoritmos. Embora possa ser usado para diversos fins, seu uso é obrigatório no contexto de um evento assinado, conforme descrito no NIP-01.

### Versões de Algoritmos: 🔄
- `0x00` - Reservado.
- `0x01` - Obsoleto e indefinido.
- `0x02` - secp256k1 ECDH, HKDF, padding, ChaCha20, HMAC-SHA256, base64.

### Limitações: ⚠️
- **Chaves Públicas**: Cada usuário Nostr tem sua própria chave pública, facilitando a distribuição de chaves.
- **Arquitetura Baseada em Relay**: Dificulta a implementação de protocolos de mensagens privadas mais robustos, como ocultação de metadados, segredo futuro e segredo pós-comprometimento.
- **Segurança**: Mensagens enviadas neste esquema têm várias limitações importantes, como falta de denegabilidade, segredo futuro, segredo pós-comprometimento e segurança pós-quântica.
- **Vazamentos**: Endereços IP dos usuários podem ser vistos pelos relays, a data de criação (`created_at`) é pública, e o tamanho limitado da mensagem apenas obscurece parcialmente o comprimento real da mensagem. Anexos não são suportados.

### Versão 2: 🛠️
- **Autenticação de Cargas Úteis**: Autenticadas usando um MAC antes da assinatura.
- **Uso de ChaCha**: Preferido ao AES por sua velocidade e melhor segurança contra ataques de multi-chave.
- **Uso de HMAC-SHA256**: Preferido ao Poly1305 por ser mais difícil de forjar.
- **Codificação Base64**: Usada para compressão por ser amplamente disponível e já utilizada no Nostr.

### Criptografia: 🔐
1. **Chave de Conversa**: Calculada via ECDH e HKDF com a chave pública do destinatário e a chave privada do remetente.
2. **Nonce**: Gera um nonce aleatório de 32 bytes.
3. **Chaves de Mensagem**: Geradas a partir da chave de conversa e do nonce.
4. **Padding**: Adiciona padding ao conteúdo antes da criptografia.
5. **Criptografia**: Usa ChaCha20 com a chave e o nonce.
6. **MAC**: Calcula o Código de Autenticação de Mensagem (MAC).
7. **Codificação**: Base64-encode da concatenação de versão, nonce, texto cifrado, e MAC.

### Descriptografia: 🔓
- Validar a chave pública e a assinatura do evento conforme definido no NIP-01 antes da descriptografia.

### Auditoria e Código: 📋
- A versão 2 foi auditada por [Cure53](https://cure53.de) em dezembro de 2023.
- Implementações em diferentes linguagens estão disponíveis em [nip44 no GitHub](https://github.com/paulmillr/nip44).

### Conclusão: 💡
NIP-44 oferece uma solução para criptografia de cargas úteis no contexto de eventos assinados no Nostr, focando em simplicidade. É crucial considerar o modelo de ameaça dos usuários ao aplicar este NIP, especialmente para situações de alto risco, onde softwares de mensagens E2EE especializados devem ser preferidos.
Author Public Key
npub1uykpm4luredxa7spwas287eewlhykl79rxauagl88ufhggvyk4tsl7w258