Base de coñecemento Baixo o capó
Protocolo e eventos
O que Nymchat pon realmente no fío, para quen constrúa contra el, auditándoo ou lendo eventos doutro cliente Nostr.
Esta páxina está traducida por máquina para maior comodidade. O orixinal en inglés é a versión que se aplica.
Tipos de eventos
| amable | Usado para | Notas |
|---|---|---|
0 | Metadatos do perfil | Perfil estándar de Nostr: nome, imaxe, banner, sobre, lud16. |
5 | Solicitudes de eliminación | NIP-09. |
7 | Reaccións | NIP-25, con a ['k', originalKind] etiqueta para que se presente unha reacción contra o tipo de canle correcto. |
13 | Selo | A capa media dunha mensaxe NIP-17. |
14 | Rumor de mensaxe privada | Sen asinar, e nunca publicado por si só. |
1059 | Papel de agasallo | NIP-59. O que realmente chega a un relé para mensaxes privadas e chats de grupo. |
1984 | Informes | NIP-56. |
9734 / 9735 | Solicitude de zap e recibo de zap | NIP-57. |
10030 | Listas de paquetes de emoji personalizadas | NIP-30. |
20000 | Mensaxe da canle Geohash | Efímero, etiquetado ['g', geohash]. |
23333 | Mensaxe da canle nomeada | Efímero, etiquetado ['d', channel]. |
24420 / 24421 | Indicadores de mecanografía pública e recibos de lectura | Específico de Nymchat, para canles públicas. |
25051 / 25052 | Sinalización punto a punto e estado de transferencia de ficheiros | Específico de Nymchat. |
30030 | Conxuntos de emoji personalizados | NIP-30. |
30078 | Datos da aplicación | NIP-78. Sincronización de enquisas e configuración cifrada. |
69420 | Recibos de lectura privados e estado de entrega | Específico de Nymchat, levado como un rumor dentro dunha envoltura de agasallo. Un tipo separado de 14 deliberadamente, para que outros clientes NIP-17 non emitan mensaxes directas en branco para cada recibo. |
NIP implementos Nymchat
| NIP | O que dá a Nymchat |
|---|---|
| NIP-07 | Inicie sesión cunha extensión do navegador. |
| NIP-09 | Solicitudes de eliminación. |
| NIP-13 | Proba de traballo. As mensaxes de saída extraen polo menos 16 bits. |
| NIP-17 | Mensaxes directas privadas e a base para os chats en grupo. |
| NIP-25 | Reaccións. |
| NIP-30 | Emoji personalizado. |
| NIP-40 | Marcas de tempo de caducidade: mensaxes que desaparecen. |
| NIP-44 | Cifrado con versións, usado para selos, envolturas e sincronización de configuracións. |
| NIP-46 | sinatura remota - bunker://. |
| NIP-56 | Informes. |
| NIP-57 | Zaps de raios. |
| NIP-59 | Papel de agasallo. |
| NIP-78 | Datos de aplicación arbitraria. |
| NIP-98 | Autorización HTTP, para os puntos finais aloxados. |
Criptografía
| Onde | Que |
|---|---|
| Identidade e sinaturas | secp256k1 con sinaturas Schnorr (BIP-340), como especifica Nostr. |
| Mensaxes privadas e chats en grupo | NIP-44 v2: ECDH en secp256k1, HKDF-SHA256, ChaCha20 con HMAC-SHA256 e recheo para que a lonxitude do texto cifrado non diga a lonxitude da mensaxe. |
| Sesións de malla Bluetooth | Ruído XX: X25519, ChaCha20-Poly1305 (IETF), Ed25519 para sinaturas de anuncio, SHA-256 e HMAC debaixo. |
| Identidade en repouso | AES-GCM-256. A clave provén de PBKDF2-SHA256 en 310.000 iteracións para un contrasinal ou PIN, ou dunha saída WebAuthn PRF a través de HKDF-SHA256 para unha clave de acceso ou biométrica. |
| Chamadas e transferencias de ficheiros | O propio DTLS-SRTP de WebRTC, negociado sobre a sinalización envuelta en NIP-17. |
| Aleatoriedade | A plataforma CSPRNG en todas partes: claves, nonces e a vibración da marca de tempo do envoltorio de agasallo. |
Protección de metadatos
Dous detalles no camiño do envoltorio de agasallos merecen a pena destacar, porque son os que separan a NIP-59 de "cifrado, pero obviamente de ti a eles":
- Cada envoltura está asinada por a chave única xerado só para esa mensaxe, polo que non hai dous envoltorios que compartan un remitente.
- Cada envoltura
created_até retrodatados aleatoriamente ata dous horas usando o CSPRNG, polo que os horarios de envío e recepción non se poden aliñar.
Os chats de grupo engaden efémeros rotativos destinatario teclas enriba diso - ver Como funciona o cifrado de grupo.
Os primitivos criptográficos están en js/nym-crypto.js e
js/modules/key-vault.js na aplicación web e baixo
android-ios-app/lib/core/crypto/ e
lib/services/mesh/noise/ na aplicación Flutter. O
repositorio
é AGPL-3.0 e completo; non hai ningún compoñente pechado para asumir a confianza.