Ga naar de inhoud
Terug naar Nymchat

Kennisbank Praten met mensen

Kwantumbestendige codering

Privéberichten en groepschats tussen Nymchat-gebruikers kunnen zo worden gecodeerd dat het vandaag opnemen ervan een aanvaller niets oplevert, zelfs niet als kwantumcomputers arriveren.

Het probleem dat het oplost

Gewone Nostr-codering — NIP-44, wat is wat privé berichten En groepschats zijn gebouwd op - heeft twee helften. De helft daarvan vervormt feitelijk de tekst (ChaCha20, HMAC-SHA256, HKDF) houdt prima stand tegen een kwantum computer. De helft die het eens is over de sleutel, is dat niet.

Die belangrijke overeenkomst is de elliptische curve van Diffie-Hellman op secp256k1, dezelfde wiskunde die Bitcoin gebruikt. Het algoritme van Shor lost het regelrecht op. Iedereen die het tegen een openbare sleutel uitvoert, herstelt de privésleutel, en daarmee elk gedeeld geheim dat die sleutel ooit heeft voortgebracht.

Oogst nu, ontsleutel later

Dit is geen probleem dat begint wanneer kwantumcomputers arriveren. Een tegenstander met genoeg opslag kan versleuteld verkeer registreren Vandaag, ga erop zitten en decodeer het jaren later. Alles wat u nu verzendt en er nog steeds toe doet, is al zichtbaar. Dat is het specifieke aanval deze functie nederlagen.

Hoe het werkt

Nymchat laat het NIP-44-berichtenformaat helemaal alleen. De sleutelovereenkomst die het al gebruikt, is ongedeerd; er wordt er een tweede, onafhankelijke toegevoegd.

  • de standaard secp256k1 ECDH, precies zoals voorheen;
  • ML-KEM-768, het postkwantumalgoritme NIST gestandaardiseerd als FIPS 203. De veiligheid ervan berust op roosterproblemen, waar het algoritme van Shor niets aan doet.

De twee zijn Gemaakt, niet gemengdHet bericht wordt gecodeerd met NIP-44 precies zoals het altijd was, en dat voltooide encryptietext wordt vervolgens een tweede keer verzegeld in de post-quantumlaag – ChaCha20-Poly1305, gesleept van het gedeelde ML-KEM-geheim.De sleutel van de afzender, de sleutel van de ontvanger, de encapsulatie-cryptietext en de ML-KEM-sleutel van de ontvanger zijn in die derivatie gebonden als context, zodat een laag niet van de ene uitwisseling kan worden opgeheven en op de andere kan worden herspel.

Een mixer zoals X-Wing of Signal's PQXDH mengt beide geheimen in plaats daarvan in één sleutel. Nymchat doet dat niet, en de reden is praktisch in plaats van cryptografisch: mixen heeft de ruwe ECDH-uitvoer nodig, en een browser-extensie of externe handtekening zal dat nooit teruggeven - het retourneert een voltooide encryptie, wat het hele punt is van het houden van de sleutel waar de app het niet kan bereiken.

De belangrijke eigenschap is op beide manieren hetzelfde: het resultaat is minstens zo sterk als de sterkste helftHet lezen van het bericht betekent dat je door beide lagen komt.Als de cryptografie van het raster zwakker blijkt te zijn dan verwacht, breekt ML-KEM alleen de buitenste laag en laat de huidige NIP-44 eronder.Als secp256k1 valt op een kwantumcomputer, wordt de binnenste laag geopend, maar de buitenste niet.

Elk bericht krijgt een nieuwe post-kwantumuitwisseling, dus het terugvinden van de sleutel van één bericht onthult niets over de anderen.

De post-quantum helft heeft een eigen sleutel nodig, en waar die sleutel vandaan komt, is wat bepaalt of het hele ding iets waard is. niet Werkt uit uw nsecEen kwantumcomputer die de klassieke helft breekt, herstelt je nsec van uw publieke sleutel, en alles wat afkomstig is van de nsec door een gepubliceerde formule komt er met - twee sloten geopend door een pauze. De post-quantum code voor elk account, eenmaal, uit willekeurige bytes die geen openbare waarde blootstelt. nympq1… Zit naast je nsec Het is geen wachtwoord en geen tweede login: het is sleutelmateriaal dat je kunt opslaan, net als de nsec.

Er valt niets aan te zetten

Dit is geen instelling. Post-kwantumversleuteling is eenvoudigweg de manier waarop Nymchat met Nymchat praat, de op dezelfde manier waarop gewone encryptie met al het andere communiceert. Het is automatisch van toepassing op elk privébericht en groepschat met een andere Nymchat-gebruiker.

Settings › Privacy & Security toont of het actief is en hoeveel van uw contacten het momenteel bereikt, maar alleen als informatie - er is geen schakelaar.

Een browser-extensie (NIP-07) of remote-signer (NIP-46) login geeft nooit je identiteitscode naar de app, wat het hele punt is om er één te gebruiken - en het hoeft niet. De twee helften van de encryptie worden gescheiden gehouden: je signer doet het deel dat het altijd heeft gedaan, en de app doet het post-quantum deel met je herstelcode, die het rechtstreeks houdt.

Alle berichten in je geschiedenis blijven leesbaar op elk apparaat met niets anders dan je nsec, precies zoals voorheen, en blijft zo voor de levensduur van het account. nympq1… Recovery code is het kwantumbestendige materiaal dat vanaf nu is geschreven: nieuwe berichten, en de gesynchroniseerde instellingen en het archief dat ermee reist.

Dus een apparaat moet die code vasthouden voordat het deze kan openen, en het toevoegen van een apparaat neemt nu een extra stap. nympq1… Het is één keer per apparaat, niet één keer per login. Die stap is geen wrijving die we niet konden verwijderen: een code die op een nieuw apparaat zou kunnen aankomen op zichzelf zou er binnen een gewoon bericht moeten reizen, en dat bericht is precies wat de aanvaller deze functie bestaat om te stoppen met opnemen.

De app genereert de nympq1… code voor u, dus er is niets om te kiezen en niets om uit te vinden. om het te zien: tik op uw nym om te openen Bekijk of bewerk de details van NymEn dan Onthul de private sleutel en herstelcode van deze nymHet zit direct onder je nsecJe hoeft er nooit over na te denken tot de dag dat je een tweede apparaat toevoegt.

Een ongebonden apparaat wordt in de tussentijd niet uitgesloten. het blijft alles lezen dat is geschreven onder de oudere encryptie en blijft normaal verzenden, en zodra je het verbindt, gaat het terug en opent de kwantumbestendige berichten die het niet eerder kon lezen.

Uw andere apparaten

Een tweede apparaat heeft twee dingen nodig: een huidige versie van de app en de nympq1… Een oudere build blijft werken - het wordt niet afgesneden - maar het kan het huidige formaat niet lezen, dus terwijl het nog op het account staat, vallen de kopieën die u voor uzelf bewaart terug naar de oudere die het kan. Een up-to-date apparaat dat nog niet is gekoppeld, leest uw oudere geschiedenis en vraagt om de code.

Met wie je het krijgt

Beide partijen hebben het nodig. Elke Nymchat-client publiceert een kleine ondertekende, vervallen aankondiging die dat zegt, en bevat zijn post-quantum-sleutel wanneer het er een heeft. Het houden van een geldige aankondiging voor iemand is wat de app maakt het gebruik van de sterkere uitwisseling met hen.

Wat een aanvaller die een relay controleert kan Do is het vasthouden van de aankondiging, dus de afzender ziet nooit een sleutel en valt terug naar de gewone encryptie. Dat is de moeite waard om duidelijk te stellen. Het kost post-quantum bescherming voor die berichten; het kan niet een onleesbaar maken, en het kan je niet laten accepteren een sleutel die niet van jou is.

Deze aankondigingen duren een week en vernieuwen zich dagelijks terwijl je de app gebruikt.Als je langer weg bent dan dat, worden je aankondigingen verloren en worden je een tijdje als een gewone Nostr-client gelezen: berichten die je in die kloof worden verzonden, worden op de normale manier versleuteld in plaats van op de kwantumbestendige manier.Ze komen nog steeds aan en je kunt ze nog steeds lezen - en niets dat je eerder hebt ontvangen wordt beïnvloed.

Alle anderen blijven precies werken zoals voorheen. Bitchat gebruikers en elke andere klant van Nostr ontvangen standaard NIP-17, ongewijzigd. niets breekt als je iemand buiten Nymchat bericht.

Een postkwantumbericht vervangt de standaardversie in plaats van dat deze ernaast wordt verzonden. Beide verzenden zou zinloos zijn: een aanvaller zou eenvoudigweg de zwakkere kopie kapot maken.

De kopieën zijn geadresseerd aan Jij krijg het ook - degene die uw andere apparaten lezen, de archief erachter, en uw gesynchroniseerde instellingen, die dezelfde kant op reizen en uw conversatielijst, uw groepssleutels en uw berichtengeschiedenis. Laat een van deze op de oude staan encryptie zou ze tot het zwakste ding hebben gemaakt dat je opslaat: leesbaar voor iedereen die kapot gaat hedendaagse cryptografie, hoe zorgvuldig de berichten zelf ook werden verzegeld.

Leesbaar blijven voor Bitchat

Bitchat kan het berichtformaat van Nymchat niet lezen, dus historisch gezien stuurde Nymchat een tweede exemplaar van elk bericht in het formaat van Bitchat naar iedereen die het mogelijk gebruikt – en dat voor iemand waar je nog nooit van had gehoord, bedoelde iedereen.

De bovenstaande aankondiging maakt dat raden overbodig. Als iemand er een heeft gepubliceerd, is hij dat wel waarop Nymchat wordt uitgevoerd, zodat de Bitchat-kopie wordt verwijderd en alleen het sterkere bericht wordt verzonden. Als zij niet, er is niets veranderd: ze ontvangen nog steeds beide formaten, precies zoals voorheen, dus niets die u verzendt, kan onleesbaar worden omdat de app verkeerd heeft geraden welke client iemand gebruikt.

Net als de codering zelf is dit automatisch en heeft geen instelling.

Waarom niet gewoon raden op basis van publieke activiteiten

Nymchat zou uit de activiteit van publieke kanalen kunnen afleiden wie wat beheert, en het zou dit opmerken mensen eerder. Maar die gevolgtrekking is af en toe verkeerd, en verkeerd zijn betekent hier dat iemand een bericht sturen dat de app niet kan openen, zonder fouten en zonder opnieuw proberen. Een gepubliceerd aankondiging is ondertekend door de auteur en kan niet worden vervalst, dus wordt deze in plaats daarvan gebruikt.

In groepschats

Groepsberichten worden voor elk lid al afzonderlijk gecodeerd, zodat een groep beide soorten kan combineren vrijelijk – leden van wie de klanten het ondersteunen, krijgen de sterkere codering, de rest krijgt de standaard één, en de groep werkt hoe dan ook normaal.

Daarom wordt een groepsbericht alleen als kwantumbestendig gemarkeerd als elk lid heb het zo ontvangen. Als zelfs maar één exemplaar de standaarduitwisseling gebruikte, draagt dat exemplaar hetzelfde bericht, dus het bericht als geheel is slechts zo beschermd als de zwakste kopie. De app zegt "kwantumbestendig tegen 8 van de 10 leden" in plaats van naar boven af te ronden.

Groepschats behouden ook hun waarde roterende eenmalige sleutels, die verbergen wie er in een groep zit van iedereen die naar een estafette kijkt. Die bescherming blijft onaangetast en werkt precies zoals voorheen.

Het kenteken lezen

Elk privébericht en groepsbericht bevat een klein schild naast de padlock. Tapping een van de merken verklaart wat het toont.

MarkeringBetekenis
HangslotWie heeft het verzonden – of de handtekening overeenkomt met de geclaimde auteur.
SchildBeide partijen hielden een post-quantum code van hun eigen, en de hybride uitwisseling werd gebruikt voor elke kopie van dit bericht.
Gestippeld schildDeels kwantumbestendig - een groepsboodschap waarvan slechts enkele leden een beschermde kopie hebben ontvangen.Omdat de anderen dezelfde tekst dragen, behandelt u het bericht als conventioneel versleuteld.
Struck-through schildStandaard NIP-44-versleuteling - nog steeds end-to-end versleuteld, en nog steeds onleesbaar voor iedereen behalve de deelnemers vandaag.
Geen schildPublic channel posts zijn leesbaar op de relay door ontwerp, dus geen encryptie-markering wordt toegepast.

Het schild is altijd aanwezig op een versleuteld bericht, en zegt duidelijk wanneer het antwoord nee is. een ontbrekende markering zou dubbelzinnig zijn - het kan ook betekenen “niet kwantum-resistent”, “deze constructie is te oud”, of “de indicator is gebroken” -en een beveiligingsindicator die niet kan worden onderscheiden van een gebroken één zegt je niets.

Het zit naast het padlock in plaats van het te vervangen omdat de twee verschillende vragen beantwoorden, en een bericht kan één zonder de andere zijn - kwantumbestendig maar van een niet-geverifieerde zender, of geverifieerd maar conventioneel gecodeerd.

Oudere berichten houden het doorlopende schild permanent. Alles wat werd verzonden voordat beide partijen op een kwantumbestendige constructie waren, werd verzegeld met de conventionele uitwisseling, en dat encryptie-tekst bestaat al op de relays - het kan niet opnieuw worden verzegeld na het feit.

Wat het niet doet

Dit beschermt de inhoud van uw berichten. Het maakt niet elk onderdeel uit Nostr kwantumbestendig, en het is de moeite waard om precies te zijn over het verschil.

  • Handtekeningen zijn nog steeds secp256k1. Nostr-identiteitenteken met Schnorr op dezelfde bocht. Een tegenstander die al een werkende kwantumcomputer had, zou een onderteken en imiteer iemand in realtime. Wat de hybride beurs tegenhoudt, is lezen opgenomen verkeer — vertrouwelijkheid, geen authenticatie.
  • Er is geen vooruitstrevend geheim. Beide sleutels hebben een lange levensduur: NIP-44 ontleent de sleutel aan uw nsec, en de post-quantumlaag encapsuleert naar de ML-KEM-toets achter uw nympq1… Elk bericht krijgt een nieuwe encapsulatie, dus de sleutel van een bericht opent de volgende niet - maar wie uiteindelijk die langdurige sleutels vasthoudt, kan alles lezen wat ze ooit hebben opgenomen, niet alleen wat er daarna kwam. Verlopende berichten verminderen, en daarom is deze functie gericht op oogst-nu-decrypt-later in plaats van op een sleutel die wordt genomen.
  • Metagegevens zijn ongewijzigd. Een relais ziet nog steeds dat een gebeurtenis is geadresseerd een sleutel, en ongeveer wanneer. Dat wordt afgehandeld door cadeauverpakking en eenmalige sleutels, niet door dit.
  • De Bluetooth mesh is niet gedekt. Een boodschap die over Het mesh reist binnen een Noise XX-sessie, die een sterke, huidige encryptie is, maar een klassieke sleuteluitwisseling - dus het draagt de post-quantumlaag niet, zelfs tussen twee Nymchat-gebruikers. Het badge weerspiegelt dit: een bericht dat over het mesh wordt geleverd, is niet gemarkeerd als kwantumbestendig.
  • Uw herstelcode is een tweede ding om te behouden. Het begint met nympq1 En je zult het vinden in De details van NymIn hetzelfde paneel als uw nsec - tik je nym, dan “Overleg deze nym's privé sleutel en herstelcode”. nsec op zichzelf herbouwt uw post-quantum-sleutel niet - dat is precies waarom het werkt - dus als geen enkel apparaat die code bewaart en u geen kopie ervan hebt, kan wat erop is verzegeld niet opnieuw worden geopend. nsec.
  • Het kan niet beschermen wat de andere partij doet. Een ontvanger kan nog steeds een screenshot maken, een bericht kopiëren of bewaren.

Dit is hetzelfde standpunt dat Signal inneemt met zijn eigen post-kwantum-upgrade: repareer de sleuteluitwisseling nu, omdat dat het deel is waar een aanvaller met terugwerkende kracht op kan reageren en handtekeningen als een Een apart probleem voor wanneer de normen hun inhaalslag maken.

Het controleren van het werk

De ML-KEM-implementatie wordt getest tegen de officiële test vectoren NIST publiceert voor FIPS 203De webapp en de mobiele app worden bovendien gehouden aan een gedeelde reeks testvectoren, wat garandeert dat een bericht geschreven door de een door de ander kan worden gelezen.

Beide zijn Open source onder de AGPL-3.0, en de builds van de webapp zijn reproduceerbaar — zie een constructie verifiëren.

En dieper gaan: Post-Quantum Key Agreement in Nymchat - een technisch whitepaper over hoe de ML-KEM-sleutel wordt verspreid zonder een directory, de exacte constructie die de twee sleuteluitwisselingen combineert en de ontwerpen die zijn verworpen.