Kihagyás

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 + scope mező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él 2 volt) — 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)

  1. 32 byte random nonce generálása
  2. encryption_key + mac_key származtatása HKDF-fel (ECDH shared secret-ből)
  3. Plaintext prefixelése hosszal → padding zérókkal → ChaCha20 titkosítás
  4. nonce || kind || scope_len || scope || ciphertext → HMAC
  5. 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 és scope kötelezően egyeznie kell az elvárttal → cross-context replay ellen védelem

Mi változott a v2-höz képest?

  1. kind + scope context — a v2-ben nem volt authentikált plusz adat, ez a legnagyobb újítás
  2. Továbbfejlesztett padding — finomhangolt rész paraméterek
  3. 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.

Vissza a tetejére