NIP-44 v3 — Aszimmetrikus titkosítás Nostr-ra (Draft)¶
Forrás: https://github.com/nostr-land/nip44v3/blob/master/nip44v3.md
Összegzés¶
A NIP-44 v3 a NIP-44 v2 továbbfejlesztése, új aszimmetrikus titkosítási sémát vezet be Nostr eseményekhez. Bináris plaintext → Base64 ciphertext (Nostr eventekbe illeszthető).
Mit tud?¶
- Authentikált adatok:
kind+scopemezők csatolhatók a ciphertext-hez → cross-context replay védelem, signerek korlátozhatják a titkosítás/visszafejtés hozzáférését - Padding: korlátozott üzenetméret-elrejtés paddinggel (továbbfejlesztett algoritmus a v2-höz képest)
- Verziószám: a ciphertext első byte-ja
3(v2-nél2volt) — visszafelé kompatibilitás megőrizve
Mit NEM tud?¶
- Nincs forward secrecy — privát kulcs kiszivárgása esetén minden korábbi ciphertext visszafejthető
- Nincs metadata rejtés — author, timestamp látható marad
- Nincs deniability (tagadhatóság) önmagában
- Durva üzenetméret látszik paddinggel is
Ezeket az alkalmazásnak kell saját protokollokkal megoldania.
Technikai részletek¶
Kriptográfiai primitívek¶
| Komponens | Algoritmus |
|---|---|
| Kulcsszármaztatás | HKDF (SHA-256) |
| MAC | HMAC-SHA256 |
| Szimmetrikus titkosítás | ChaCha20 (96-bit zéró nonce) |
| Kulcscsere | ECDH (BIP-340 x-only pubkey, secp256k1) |
| Kódolás | Base64 (RFC4648) |
Context (authentikált, de titkosítatlan)¶
kind: unsigned 32-bit integer — az event kind, amiben az üzenet van (65535 feletti értékek reserváltak)scope: UTF-8 string — további scop-oláshoz
Padding algoritmus¶
A v2-höz hasonló, de finomhangolva:
- minimum_size: 32 byte
- Small/large rész felosztás: 4 / 8 alegység
- Threshold: 32768 byte
- A célméret a következő 2-hatványra kerekít, majd rész-okra oszt
Titkosítás lépései (röviden)¶
- 32 byte random nonce generálása
encryption_key+mac_keyszármaztatása HKDF-fel (ECDH shared secret-ből)- Plaintext prefixelése hosszal → padding zérókkal → ChaCha20 titkosítás
nonce || kind || scope_len || scope || ciphertext→ HMAC- Végső:
base64_encode(0x03 || nonce || mac || kind || scope_len || scope || ciphertext)
Visszafejtés¶
- Verzióellenőrzés (0x03), MAC ellenőrzés (constant-time), padding validáció (minden zéró)
- A
kindésscopekötelezően egyeznie kell az elvárttal → cross-context replay ellen védelem
Mi változott a v2-höz képest?¶
kind+scopecontext — a v2-ben nem volt authentikált plusz adat, ez a legnagyobb újítás- Továbbfejlesztett padding — finomhangolt rész paraméterek
- Formális specifikáció — pszeudokód szintű definíciók, erősebb típusosság
Státusz¶
⚠️ Draft — még nem véglegesített NIP.