Hoppa till innehållet
Tillbaka till Nymchat

Kunskapsbas Att prata med folk

Kvantbeständig kryptering

Privata meddelanden och gruppchattar mellan Nymchat-användare kan krypteras så Att spela in dem idag köper ingenting för en angripare, inte ens när kvantdatorer anländer.

Problemet det löser

Vanlig Nostr-kryptering — NIP-44, vilket är vad privata meddelanden och gruppchattar är byggda på — har två halvor. Hälften det förvränger faktiskt texten (ChaCha20, HMAC-SHA256, HKDF) håller bra mot ett kvantum dator. Hälften som håller med om nyckeln gör inte det.

Det nyckelavtalet är Diffie-Hellman med elliptisk kurva på secp256k1, samma matematik som Bitcoin använder. Shors algoritm löser det direkt. Alla som kör det mot en offentlig nyckel återställer privat nyckel, och med den varje delad hemlighet som nyckeln någonsin producerats.

Skörda nu, dekryptera senare

Detta är inte ett problem som börjar när kvantdatorer kommer. En motståndare med tillräckligt lagring kan registrera krypterad trafik i dag, sitt på den och dekryptera den flera år senare. Allt du skickar nu som fortfarande är viktigt då är redan exponerat. Det är det specifika attackera denna funktion nederlag.

Hur det fungerar

Nymchat lämnar NIP-44-meddelandet helt ensamt. Nyckelavtalet som den redan använder är orört; en andra, oberoende en läggs till runt den.

  • standarden secp256k1 ECDH, precis som förut;
  • ML-KEM-768, post-kvantalgoritmen NIST standardiserad som FIPS 203. Dess säkerhet vilar på gallerproblem, som Shors algoritm inte berör.

De två är Lagrad, inte blandadMeddelandet är krypterat med NIP-44 precis som det alltid var, och den färdiga krypterade texten förseglas sedan en andra gång inuti det postkvantiska skiktet – ChaCha20-Poly1305, nyckeln från den delade ML-KEM-hemligheten.Sändarens nyckel, mottagarens nyckel, inkapslingen krypterad text och mottagarens ML-KEM-nyckel är bundna till den härledningen som ett sammanhang, så ett skikt kan inte lyftas från en utbyte och spelas upp på en annan.

En kombinator som X-Wing eller Signals PQXDH blandar båda hemligheterna i en nyckel istället. Nymchat gör det inte, och anledningen är praktisk snarare än kryptografisk: blandning behöver den råa ECDH-utgången, och en webbläsartillägg eller fjärrsignatur kommer aldrig att lämna tillbaka det - det returnerar en färdig krypterad text, vilket är hela punkten att hålla nyckeln där appen inte kan nå den.

Den viktiga egenskapen är densamma på något sätt: resultatet är minst lika stark som den starkaste halvanLäsa meddelandet innebär att komma igenom båda skikten.Om galler kryptografi visar sig vara svagare än förväntat, bryter ML-KEM bara bort det yttre skiktet och lämnar dagens NIP-44 under. Om secp256k1 faller till en kvantdator öppnas det inre skiktet men det yttre inte.

Varje meddelande får ett nytt post-kvantutbyte, så att återställa ett meddelandes nyckel avslöjar ingenting om de andra.

Den postkvantala halvan behöver en egen nyckel, och varifrån den nyckeln kommer är det som avgör om hela saken är värd någonting. inte arbetat ut ur din nsecEn kvantdator som bryter den klassiska halvan återställer din nsec från din offentliga nyckel, och allt som härrör från nsec genom en publicerad formel kommer ut med det – två lås öppnas av en paus. Så Nymchat genererar en separat Postkvantkoden för varje konto, en gång, från slumpmässiga bytes som inget offentligt värde avslöjar. nympq1… och sitter bredvid din nsec Det är inte ett lösenord och inte en andra inloggning: det är nyckelmaterial du kan spara, precis som nsec.

Det finns inget att sätta på

Det här är inte en inställning. Postkvantkryptering är helt enkelt hur Nymchat pratar med Nymchat på samma sätt som vanlig kryptering är hur den pratar med allt annat. Det gäller automatiskt för varje privat meddelande och gruppchatt med en annan Nymchat-användare.

Inställningar › Sekretess & Säkerhet visar om det är aktivt och hur många av dina kontakter det för närvarande når, men bara som information - det finns ingen växling.

Detta fungerar oavsett hur du loggar in. En webbläsartillägg (NIP-07) eller fjärrsignatör (NIP-46) inloggning ger aldrig din identitetsnyckel till appen, vilket är hela poängen med att använda en - och det behöver inte. De två halvorna av krypteringen hålls åtskilda: din signator gör den del det alltid har gjort, och appen gör den post-kvantdel med din återställningskod, som den håller direkt.

Inget du redan har påverkas. Varje meddelande i din historia förblir läsbar på alla enheter med inget annat än din nsec, precis som tidigare, och stannar så för livet av kontot. nympq1… Återställningskoden är det kvantbeständiga material som skrivs från och med nu: nya meddelanden, och de synkroniserade inställningarna och arkivet som reser med dem.

Så en enhet måste hålla den koden innan den kan öppna dem, och lägga till en enhet nu tar ett extra steg. nympq1… Det är en gång per enhet, inte en gång per inloggning. Det steget är inte friktion vi misslyckades med att ta bort: en kod som kunde komma på en ny enhet av sig själv skulle behöva resa dit inom ett vanligt meddelande, och det meddelandet är exakt vad angriparen denna funktion existerar för att sluta spela in. Steget är anledningen till att skyddet är verkligt.

Appen genererar den nympq1… kod för dig, så det finns inget att välja och inget att uppfinna. för att se det: tryck på din nym för att öppna Visa eller redigera Nym's detaljerOch då Avslöja denna nyms privata nyckel och återställningskodDen sitter precis under din nsec, med samma visa och kopiera knappar. Du behöver aldrig tänka på det förrän dagen du lägger till en andra enhet.

Den fortsätter att läsa allt skrivet under den äldre krypteringen och fortsätter att skicka normalt, och när du länkar den går den tillbaka och öppnar de kvantmotståndsmeddelanden som den inte kunde läsa tidigare.

Dina andra enheter

En andra enhet behöver två saker: en aktuell version av appen och nympq1… En äldre build fortsätter att fungera – den är inte avstängd – men den kan inte läsa det aktuella formatet, så medan den fortfarande är på kontot faller kopiorna du behåller för dig själv tillbaka till den äldre som den kan. En uppdaterad enhet som inte har länkats ännu läser din gamla historia och ber om koden.

Vem får du det med

Båda sidor behöver det. Varje Nymchat-klient publicerar en liten signerad, utgången meddelande som säger så, och inkluderar sin post-kvantnyckel när den har en. Hålla en giltig annons för någon är vad som gör appen använda den starkare utbytet med dem. Det finns ingen förhandling att störa: antingen nyckeln är där eller det är inte, och eftersom annonsen är signerad av dess författare, skulle en ersatt nyckel behöva förfalskas snarare än bara serveras.

Vilken anfallare som kontrollerar en relä kan Det kostar post-quantum skydd för dessa meddelanden; det kan inte göra en oläslig, och det kan inte få dig att acceptera en nyckel som inte är din.

Dessa meddelanden varar en vecka och uppdaterar sig dagligen medan du använder appen. Om du är borta längre än så, försvinner dina meddelanden och du läses som en vanlig Nostr-klient under en tid: meddelanden som skickas till dig i det gapet krypteras på det normala sättet snarare än det kvantbeständiga sättet. De kommer fortfarande, och du kan fortfarande läsa dem - och inget du fick tidigare påverkas.

Alla andra fortsätter att jobba precis som tidigare. Bitchat användare och alla andra Nostr-klienter får standard NIP-17, oförändrat. ingenting bryts när du meddelar någon utanför Nymchat.

Ett postkvantbudskap ersätter standarden snarare än att skickas bredvid den. Att skicka båda skulle vara meningslöst: en angripare skulle helt enkelt bryta den svagare kopian.

Kopiorna adresserade till du skaffa det också - den som dina andra enheter läser, den arkiv bakom det, och dina synkroniserade inställningar, som reser samma väg och bär din konversationslista, dina gruppnycklar och din meddelandehistorik. Lämna någon av dem på det gamla kryptering skulle ha gjort dem till det svagaste du lagrar: läsbara för alla som går sönder dagens kryptografi, oavsett hur noggrant själva meddelandena förseglades.

Håller sig läsbar av Bitchat

Bitchat kan inte läsa Nymchats meddelandeformat, så historiskt har Nymchat skickat en andra kopia av varje meddelande i Bitchats format till alla som kanske använder det - vilket för någon du aldrig hade hört från, menade alla.

Tillkännagivandet ovan gör den gissningen onödig. Om någon har publicerat en så är de det kör Nymchat, så Bitchat-kopian släpps och bara det starkare meddelandet skickas. Om de har inte, ingenting har förändrats: de får fortfarande båda formaten, precis som tidigare, så ingenting du skickar kan bli oläslig eftersom appen gissade fel om vilken klient någon använder.

Precis som själva krypteringen är detta automatiskt och har ingen inställning.

Varför inte bara gissa från offentlig verksamhet

Nymchat kunde sluta sig till vem som driver vad från offentlig kanalaktivitet, och det skulle upptäcka människor tidigare. Men den slutsatsen är ibland fel, och att ha fel här betyder att skicka ett meddelande till någon att deras app inte kan öppnas, utan fel och inget nytt försök. En publicerad tillkännagivandet är signerat av dess författare och kan inte fejkas, så det används istället.

I gruppchattar

Gruppmeddelanden är redan krypterade separat för varje medlem, så en grupp kan blanda båda typerna fritt — medlemmar vars klienter stödjer det får den starkare krypteringen, resten får standard ett, och gruppen fungerar normalt i båda riktningarna.

På grund av det markeras ett gruppmeddelande endast som kvantresistent när varje medlem fick det så. Om ens ett exemplar använde standardutbytet, bär det exemplaret detsamma meddelande, så meddelandet som helhet är bara lika skyddat som dess svagaste kopia. Appen säger "kvantbeständig mot 8 av 10 medlemmar" snarare än att avrunda uppåt.

Gruppchattar behåller också sina roterande engångsknappar, som döljer vem som är i en grupp från alla som tittar på en stafett. Det skyddet är opåverkat och fungerar precis som det gjorde.

Läser märket

Varje privat meddelande och grupp meddelande bär en liten skydda bredvid padlock. Tapping antingen märket förklarar vad det visar.

MarkMenande
HänglåsVem skickade den — om signaturen stämmer överens med den påstådda författaren.
SkyddaBåda sidorna höll en egen postkvantkod, och hybridutbytet användes för varje kopia av detta meddelande.
Streckad sköldDelvis kvantbeständig – ett gruppmeddelande som bara vissa medlemmar fick en skyddad kopia av. Eftersom de andra bär samma text behandlar du meddelandet som konventionellt krypterat i sin helhet.
Struck-Through SköldStandard NIP-44-kryptering – fortfarande end-to-end krypterad, och fortfarande oläslig för någon utom deltagarna idag.
Ingen sköldPublic channel inlägg är läsbara på relä efter design, så inga krypteringsmärken tillämpas.

Ett saknat märke skulle vara tvetydigt - det kan lika mycket betyda “inte kvantmotståndskraftigt”, “denna byggnad är för gammal” eller “indikatorn är trasig” - och en säkerhetsindikator som inte kan särskiljas från en trasig säger dig ingenting.

Det sitter bredvid låset i stället för att ersätta det eftersom de två svarar på olika frågor, och ett meddelande kan vara ett utan det andra - kvantmotstånd men från en okontrollerad avsändare, eller verifierad men konventionellt krypterad.

Äldre meddelanden håller slaggen genom skölden permanent. Allt som skickades innan båda sidor var på en kvantbeständig byggnad förseglades med den konventionella utbytet, och att krypterad text redan existerar på reläerna - det kan inte förseglas igen efter det faktum.

Vad det inte gör

Detta skyddar innehåll av dina meddelanden. Det gör inte varje del av Nostr kvantsäker, och det är värt att vara exakt om skillnaden.

  • Signaturer är fortfarande secp256k1. Nostr identitetsskylt med Schnorr på samma kurva. En motståndare som redan hade en fungerande kvantdator kunde smida en underteckna och imitera någon i realtid. Vad hybridväxeln stoppar är att läsa registrerad trafik – konfidentialitet, inte autentisering.
  • Det finns ingen framåtgående hemlighet. Båda nycklarna är långlivade: NIP-44 härleder sin nyckel från din nsec, och det postkvantiska skiktet inkapslas till ML-KEM-nyckeln bakom din nympq1… Varje meddelande får en ny inkapsling, så ett meddelandes nyckel öppnar inte nästa - men den som hamnar med dessa långsiktiga nycklar kan läsa allt de någonsin registrerat, inte bara vad som kom efter. Utgångna meddelanden minska, och det är därför den här funktionen syftar till att skörda-nu-dekryptera-senare snarare än en nyckel som tas.
  • Metadata är oförändrad. En relä ser fortfarande att en händelse riktades till en nyckel, och ungefär när. Det hanteras av presentförpackning och engångsnycklar, inte av detta.
  • Bluetooth mesh är inte täckt. Ett meddelande som fördes över och Mesh reser inom en Noise XX-session, som är stark, aktuell kryptering men en klassisk nyckelutbyte - så det bär inte post-quantum-skiktet, även mellan två Nymchat-användare. Badgeten återspeglar detta: ett meddelande som levereras över nätet är inte märkt kvantmotstånd. Lägga till det där innebär att ändra handskakningen själv, vilket båda kamraterna skulle behöva göra samtidigt, utan en relä att falla tillbaka genom och medan det förblir läsbart av Bitchat.
  • Din återställning kod är en andra sak att hålla. Det börjar med nympq1 Och du hittar den i Dina nymars detaljeri samma panel som din nsec - tryck på din nym, sedan “Upptäck denna nyms privata nyckel och återställningskod”. nsec på egen hand inte återuppbygger din postkvantnyckel - det är precis varför det fungerar - så om ingen enhet håller den koden och du inte har någon kopia av den, kan det som var förseglat på den inte öppnas igen. nsec.
  • Det kan inte skydda vad den andra sidan gör. En mottagare kan fortfarande skärmdumpa, kopiera eller behålla ett meddelande.

Detta är samma position som Signal tar med sin egen post-kvantuppgradering: fixa nyckelutbytet nu, eftersom det är den del en angripare kan agera på retroaktivt, och behandla signaturer som en separat problem för när standarderna kommer ikapp.

Kontrollerar arbetet

ML-KEM-implementeringen testas mot den officiella test vektorer NIST publicerar För FIPS 203Webb-appen och mobilappen hålls dessutom till en delad uppsättning testvektorer, vilket är vad som garanterar att ett meddelande skrivet av en kan läsas av den andra.

Båda är Öppen källa under AGPL-3.0, och webbappens byggnader är reproducerbara – se verifiera en konstruktion.

Att gå djupare: Post-Quantum Key Agreement i Nymchat — en teknisk vitbok om hur ML-KEM-nyckeln distribueras utan en katalog, den exakta konstruktionen som kombinerar de två nyckelväxlarna och de mönster som avvisades.