Base de conhecimento Sob o capô
Protocolo e eventos
O que o Nymchat realmente coloca na rede, para qualquer um que esteja construindo contra ele, auditá-lo ou ler eventos de outro cliente Nostr.
Esta página foi traduzida automaticamente por conveniência. O original em inglês é a versão aplicável.
Tipos de eventos
| Tipo | Usado para | Notas |
|---|---|---|
0 | Metadados de perfil | Perfil Nostr padrão: nome, foto, banner, sobre, lud16. |
5 | Solicitações de exclusão | NIP-09. |
7 | Reações | NIP-25, com ['k', originalKind] tag para que uma reação seja arquivada contra o tipo de canal correto. |
13 | Selo | A camada intermediária de uma mensagem NIP-17. |
14 | Boato de mensagem privada | Não assinado e nunca publicado por conta própria. |
1059 | Embrulho para presente | NIP-59. O que realmente atinge um retransmissor para mensagens privadas e bate-papos em grupo. |
1984 | Relatórios | NIP-56. |
9734 / 9735 | Solicitação de Zap e recebimento de Zap | NIP-57. |
10030 | Listas de pacotes de emojis personalizados | NIP-30. |
20000 | Mensagem do canal Geohash | Efêmero, marcado ['g', geohash]. |
23333 | Mensagem do canal nomeado | Efêmero, marcado ['d', channel]. |
24420 / 24421 | Indicadores públicos de digitação e recibos de leitura | Específico do Nymchat, para canais públicos. |
25051 / 25052 | Sinalização ponto a ponto e status de transferência de arquivos | Específico do Nymchat. |
30030 | Conjuntos de emojis personalizados | NIP-30. |
30078 | Dados do aplicativo | NIP-78. Enquetes e sincronização de configurações criptografadas. |
69420 | Recibos de leitura privados e status de entrega | Específico do Nymchat, divulgado como boato dentro de uma embalagem de presente. Um tipo separado de 14 deliberadamente, para que outros clientes NIP-17 não renderizem mensagens diretas em branco para cada recibo. |
NIPs que Nymchat implementa
| BELISCAR | O que isso oferece ao Nymchat |
|---|---|
| NIP-07 | Faça login com uma extensão do navegador. |
| NIP-09 | Solicitações de exclusão. |
| NIP-13 | Prova de trabalho. As mensagens de saída são extraídas em pelo menos 16 bits. |
| NIP-17 | Mensagens diretas privadas e base para bate-papos em grupo. |
| NIP-25 | Reações. |
| NIP-30 | Emoji personalizado. |
| NIP-40 | Carimbos de data e hora de expiração – mensagens que desaparecem. |
| NIP-44 | Criptografia versionada, usada para selos, wraps e sincronização de configurações. |
| NIP-46 | Assinatura remota — bunker://. |
| NIP-56 | Relatórios. |
| NIP-57 | Relâmpagos. |
| NIP-59 | Embrulhos para presente. |
| NIP-78 | Dados de aplicação arbitrários. |
| NIP-98 | Autenticação HTTP, para os endpoints hospedados. |
Criptografia
| Onde | O que |
|---|---|
| Identidade e assinaturas | secp256k1 com assinaturas Schnorr (BIP-340), conforme especifica Nostr. |
| Mensagens privadas e bate-papos em grupo | NIP-44 v2: ECDH em secp256k1, HKDF-SHA256, ChaCha20 com HMAC-SHA256 e preenchimento para que o comprimento do texto cifrado não revele o comprimento da mensagem. |
| Sessões de malha Bluetooth | Ruído XX — X25519, ChaCha20-Poly1305 (IETF), Ed25519 para assinaturas de anúncio, SHA-256 e HMAC abaixo. |
| Identidade em repouso | AES-GCM-256. A chave vem de PBKDF2-SHA256 em 310.000 iterações para uma senha ou PIN, ou de uma saída WebAuthn PRF por meio de HKDF-SHA256 para uma chave de acesso ou biométrica. |
| Chamadas e transferências de arquivos | O próprio DTLS-SRTP do WebRTC, negociado sobre sinalização encapsulada em NIP-17. |
| Aleatoriedade | Toda a plataforma CSPRNG – chaves, nonces e o jitter do carimbo de data/hora do embrulho para presente. |
Proteção de metadados
Vale a pena destacar dois detalhes no caminho do embrulho para presente, porque são eles que separam o NIP-59 de "criptografado, mas obviamente de você para eles":
- Cada envoltório é assinado por um chave única gerado apenas para essa mensagem, portanto, não há dois wraps que compartilhem um remetente.
- Cada envoltório
created_até retroativo aleatoriamente em até dois horas usando o CSPRNG, portanto, os tempos de envio e recebimento não podem ser alinhados.
Bate-papos em grupo adicionam efêmero rotativo destinatário teclas em cima disso - veja Como funciona a criptografia de grupo.
As cripto primitivas estão em js/nym-crypto.js e
js/modules/key-vault.js no aplicativo da web e em
android-ios-app/lib/core/crypto/ e
lib/services/mesh/noise/ no aplicativo Flutter. O
repositório
é AGPL-3.0 e completo – não há nenhum componente fechado para confiar.