Gå til innholdet
Tilbake til Nymchat

Kunnskapsgrunnlag Snakker med folk

Kvantebestandig kryptering

Private meldinger og gruppechatter mellom Nymchat-brukere kan krypteres slik at opptak av dem i dag ikke kjøper en angriper, selv når kvantedatamaskiner kommer.

Problemet det løser

Vanlig Nostr-kryptering — NIP-44, som er hva private meldinger og gruppechatter er bygget på — har to halvdeler. Den halve som blander faktisk teksten (ChaCha20, HMAC-SHA256, HKDF) holder seg fint mot et kvante datamaskin. Halvparten som er enig om nøkkelen, gjør det ikke.

Den nøkkelavtalen er Diffie-Hellman med elliptisk kurve på secp256k1, den samme matematikken som Bitcoin bruker. Shors algoritme løser det direkte. Alle som kjører den mot en offentlig nøkkel, gjenoppretter privat nøkkel, og med den hver delte hemmelighet som nøkkelen noensinne har produsert.

Høst nå, dekrypter senere

Dette er ikke et problem som starter når kvantedatamaskiner kommer. En motstander med nok lagring kan registrere kryptert trafikk i dag, sett deg på den og dekrypter den år senere. Alt du sender nå som fortsatt betyr noe da, er allerede avslørt. Det er det spesifikke angripe denne funksjonen nederlag.

Hvordan det fungerer

Nymchat forlater NIP-44-meldingsformatet helt alene. Nøkkelavtalen den allerede bruker er uberørt; en annen, uavhengig en legges til rundt den.

  • standarden secp256k1 ECDH, akkurat som før;
  • ML-KEM-768, post-kvantealgoritmen NIST standardisert som FIPS 203. Sikkerheten hviler på gitterproblemer, som Shors algoritme ikke berører.

De to er Lagret, ikke blandetMeldingen er kryptert med NIP-44 akkurat som den alltid var, og den ferdige krypterteksten er deretter forseglet en annen gang inne i det post-kvante laget – ChaCha20-Poly1305, nøkkel fra den delte ML-KEM-hemmeligheten.Senderens nøkkel, mottakerens nøkkel, encapsulasjonens kryptertekst og mottakerens ML-KEM-nøkkel er bundet inn i den derivasjonen som kontekst, slik at et lag ikke kan løftes fra en utveksling og spilles på en annen.

En kombinerer som X-Wing eller Signals PQXDH blander begge hemmeligheter i én nøkkel i stedet. Nymchat gjør det ikke, og årsaken er praktisk i stedet for kryptografisk: blanding trenger den rå ECDH-utgangen, og en nettleserutvidelse eller fjernsigner vil aldri gi den tilbake - den returnerer en ferdig kryptertekst, som er hele poenget med å holde nøkkelen der appen ikke kan nå den.

Den viktige egenskapen er den samme på begge måter: resultatet er minst like sterk som den sterkere halvdelenHvis kryptografien viser seg å være svakere enn forventet, bryter ML-KEM bare det ytre laget og etterlater dagens NIP-44 under.

Hver melding får en ny post-kvanteutveksling, så gjenoppretting av en meldings nøkkel avslører ingenting om de andre.

Den post-kvante halvdelen trenger en nøkkel av seg selv, og hvor den nøkkelen kommer fra er det som bestemmer om hele tingen er verdt noe. ikke Arbeidet ut av din nsecEn kvante datamaskin som bryter den klassiske halvdelen, gjenoppretter din nsec fra din offentlige nøkkel, og alt som stammer fra nsec ved en publisert formel kommer ut med det - to låser åpnet av en pause. Postkvantekode for hver konto, en gang, fra tilfeldige bytes som ingen offentlig verdi avslører. nympq1… og sitter ved siden av deg nsec Det er ikke et passord og ikke en annen innlogging: det er nøkkelmateriale du kan lagre, akkurat som nsec.

Det er ingenting å slå på

Dette er ikke en innstilling. Post-kvantekryptering er ganske enkelt hvordan Nymchat snakker med Nymchat på samme måte som vanlig kryptering er hvordan den snakker med alt annet. Det gjelder automatisk for hver privat melding og gruppechat med en annen Nymchat-bruker.

Innstillinger › Personvern & Sikkerhet viser om det er aktivt og hvor mange av dine kontakter det nås for øyeblikket, men bare som informasjon - det er ingen bryter.

En nettleserutvidelse (NIP-07) eller fjernsigner (NIP-46) logger aldri ut identitetsnøkkelen din til appen, som er hele poenget med å bruke en - og det trenger ikke å. De to halvdelene av krypteringen holdes fra hverandre: din signer gjør den delen det alltid har gjort, og appen gjør den post-kvante delen med gjenopprettingskoden din, som den holder direkte. Utvidelse og fjernsignerlogins er vanlige deltakere i begge retninger.

Hver melding i historien din forblir lesbar på alle enheter med ingenting annet enn din nsec, akkurat som før, og forblir slik for livet av kontoen. nympq1… gjenopprettingskode er det kvantebestandige materialet skrevet fra nå av: nye meldinger, og de synkroniserte innstillingene og arkivet som reiser med dem.

Så en enhet må holde den koden før den kan åpne dem, og å legge til en enhet tar nå et ekstra skritt. nympq1… Det er en gang per enhet, ikke en gang per pålogging. Det trinnet er ikke friksjon vi ikke klarte å fjerne: en kode som kunne komme på en ny enhet av seg selv ville måtte reise der inne i en vanlig melding, og at meldingen er akkurat hva angriperen denne funksjonen eksisterer for å stoppe er registrering.

Appen genererer nympq1… kode for deg, så det er ingenting å velge og ingenting å oppfinne. for å se det: trykk på nym for å åpne Vis eller rediger Nym's detaljerDeretter Åpne denne nym's private nøkkel og gjenopprettingskodeDen ligger rett under din nsecDu trenger aldri å tenke på det før dagen du legger til en annen enhet.

Den fortsetter å lese alt skrevet under den eldre krypteringen og fortsetter å sende normalt, og når du kobler den, går den tilbake og åpner de kvantebestandige meldingene den ikke kunne lese før.

Dine andre enheter

En annen enhet trenger to ting: en gjeldende versjon av appen, og nympq1… En eldre build fortsetter å fungere – den er ikke kuttet av – men den kan ikke lese det nåværende formatet, så mens den fortsatt er på kontoen, faller kopiene du beholder for deg selv tilbake til den eldre som den kan. En oppdatert enhet som ikke har blitt koblet ennå leser din gamle historie og ber om koden.

Hvem du får det med

Begge parter trenger det. Hver Nymchat-klient publiserer en liten signert, utløpende kunngjøring som sier det, og inkluderer sin post-quantumnøkkel når den har en. Å holde en gyldig kunngjøring for noen er det som gjør at appen bruker den sterkere utvekslingen med dem. Det er ingen forhandlinger å forstyrre: enten nøkkelen er der eller den er ikke, og fordi kunngjøringen er signert av forfatteren, må en erstattet nøkkel forfalskes i stedet for bare betjenes.

Hva en angriper som kontrollerer en relay Kan Det koster post-kvantebeskyttelse for disse meldingene; det kan ikke gjøre en uleselig, og det kan ikke få deg til å akseptere en nøkkel som ikke er din.

Disse kunngjøringene varer i en uke og oppdaterer seg daglig mens du bruker appen.Hvis du er borte lenger enn det, forsvinner dine og du leses som en vanlig Nostr-klient for en stund: meldinger sendt til deg i det gapet er kryptert på vanlig måte i stedet for kvantebestandig måte.De kommer fortsatt, og du kan fortsatt lese dem - og ingenting du mottok tidligere er påvirket.Åpne appen publiserer din kunngjøring, og den sterkere krypteringen gjenopptas på egen hånd.Det er ingenting å gjenopprette.

Alle andre fortsetter å jobbe akkurat som før. Bitchat brukere og enhver annen Nostr-klient mottar standard NIP-17, uendret.Ingenting bryter når du sender en melding til noen utenfor Nymchat.

En post-kvante melding erstatter standarden i stedet for å bli sendt ved siden av den. Å sende begge ville være meningsløst: en angriper ville ganske enkelt bryte den svakere kopien.

Kopiene adressert til du få det også - den andre enhetene dine leser, den arkivet bak den, og dine synkroniserte innstillinger, som reiser samme vei og bærer din samtaleliste, gruppenøklene og meldingsloggen. La noen av dem stå på den gamle kryptering ville ha gjort dem til det svakeste du lagrer: lesbare for alle som bryter dagens kryptografi, uansett hvor nøye selve meldingene ble forseglet.

Forblir lesbar av Bitchat

Bitchat kan ikke lese Nymchats meldingsformat, så historisk sett sendte Nymchat en andre kopi av hver melding i Bitchats format til alle som kan bruke den - som for noen du aldri hadde hørt fra, mente alle.

Kunngjøringen ovenfor gjør den gjettingen unødvendig. Hvis noen har publisert en, er de det kjører Nymchat, så Bitchat-kopien blir droppet og bare den sterkere meldingen sendes. Hvis de har ikke, ingenting har endret seg: de mottar fortsatt begge formatene, akkurat som før, så ingenting du sender kan bli uleselig fordi appen gjettet feil om hvilken klient noen bruker.

I likhet med selve krypteringen er dette automatisk og har ingen innstilling.

Hvorfor ikke bare gjette fra offentlig aktivitet

Nymchat kunne utlede hvem som driver hva fra offentlig kanalaktivitet, og det ville oppdage folk før. Men den slutningen er av og til feil, og å være feil her betyr å sende noen en melding om at appen deres ikke kan åpnes, uten feil eller forsøk på nytt. En publisert kunngjøringen er signert av forfatteren og kan ikke forfalskes, så den brukes i stedet.

I gruppechatter

Gruppemeldinger er allerede kryptert separat for hvert medlem, så en gruppe kan blande begge typer fritt - medlemmer hvis klienter støtter det får sterkere kryptering, resten får standard én, og gruppen fungerer normalt uansett.

På grunn av det blir en gruppemelding bare merket som kvantebestandig når hver eneste medlem mottok det på den måten. Hvis til og med ett eksemplar brukte standardutvekslingen, har denne kopien det samme melding, så meldingen som helhet er bare like beskyttet som den svakeste kopien. Appen sier "kvantebestandig mot 8 av 10 medlemmer" i stedet for å runde opp.

Gruppechatter beholder også sine roterende engangstaster, som skjuler hvem som er i en gruppe fra alle som ser på en stafett. Denne beskyttelsen er upåvirket og fungerer akkurat som den gjorde.

Leser merket

Hver private melding og gruppe melding bærer en liten skjold ved siden av padlock. Tapping enten mark forklarer hva det viser.

MerkeBetydning
HengelåsHvem sendte den – om signaturen samsvarer med den påståtte forfatteren.
SkjoldBegge sider holdt sin egen post-kvantekode, og hybridutvekslingen ble brukt for hver kopi av denne meldingen.
Stiplet skjoldDelvis kvantebestandig – en gruppemelding bare noen medlemmer fikk en beskyttet kopi av. Fordi de andre bærer samme tekst, behandle meldingen som konvensjonelt kryptert som helhet.
Struck-through skjoldStandard NIP-44-kryptering - fortsatt end-to-end-kryptert, og fortsatt uleselig for noen bortsett fra deltakerne i dag.
Ingen skjoldOffentlige kanalinnlegg er lesbare på relay etter design, så ingen krypteringsmerke gjelder.

Et manglende merke ville være tvetydig - det kan også bety “ikke kvantemotstandsdyktig”, “denne bygningen er for gammel”, eller “indikatoren er ødelagt” - og en sikkerhetsindikator som ikke kan skilles fra en ødelagt en ikke forteller deg noe.

Det sitter ved siden av låsen i stedet for å erstatte den fordi de to svarer på forskjellige spørsmål, og en melding kan være en uten den andre - kvantebestandig, men fra en uverifisert avsender, eller verifisert, men konvensjonelt kryptert.

Eldre meldinger holder skjoldet gjennom slag permanent. Alt som ble sendt før begge sider var på en kvantebestandig konstruksjon, ble forseglet med den konvensjonelle utvekslingen, og at krypteringstekst allerede eksisterer på relayene - det kan ikke forsegles igjen etter det faktum.

Hva den ikke gjør

Dette beskytter innhold av meldingene dine. Det gjør ikke alle deler av Nostr kvantesikker, og det er verdt å være presis på forskjellen.

  • Signaturene er fortsatt secp256k1. Nostr identiteter skilt med Schnorr på samme kurve. En motstander som allerede hadde en fungerende kvantedatamaskin kunne smi en signatur og etterligne noen i sanntid. Det hybridbørsen stopper er å lese registrert trafikk - konfidensialitet, ikke autentisering.
  • Det finnes ingen forhåndshemmelighet. Begge nøkler har lang levetid: NIP-44 får nøkkelen sin fra nsec, og det postkvante laget innkapsles til ML-KEM-nøkkelen bak nympq1… Hver melding får en ny innkapsling, slik at en meldings nøkkel ikke åpner den neste - men den som ender opp med å holde de langsiktige nøklene, kan lese alt de noensinne har registrert, ikke bare det som kom etter. Utløper meldinger redusere, og det er derfor denne funksjonen er rettet mot høst-nå-dekryptere-senere i stedet for på en nøkkel som blir tatt.
  • Metadata er uendret. En stafett ser fortsatt at en hendelse var adressert til en nøkkel, og omtrent når. Det håndteres av gaveinnpakning og engangsnøkler, ikke av dette.
  • Bluetooth mesh er ikke dekket. Et budskap båret over av Mesh reiser innenfor en Noise XX-sesjon, som er sterk, nåværende kryptering, men en klassisk nøkkelutveksling - så det bærer ikke det post-kvante laget, selv mellom to Nymchat-brukere. Badgen gjenspeiler dette: en melding levert over nettet er ikke merket med kvantemotstand.
  • Din gjenopprettingskode er en annen ting å holde. Det begynner med nympq1 Du vil finne den i Nyms detaljerPå samme sted som din nsec - trykk på din nym, og deretter “Offentliggjøre denne nym's private nøkkel og gjenopprettingskode”. nsec på egen hånd gjenoppbygger ikke din post-quantumnøkkel - det er nettopp derfor det fungerer - så hvis ingen enhet holder den koden og du ikke har noen kopi av den, kan det som ble forseglet til den ikke åpnes igjen. nsec.
  • Den kan ikke beskytte det den andre siden gjør. En mottaker kan fortsatt skjermdumpe, kopiere eller beholde en melding.

Dette er den samme posisjonen Signal tar med sin egen post-kvanteoppgradering: fiks nøkkelutvekslingen nå, fordi det er den delen en angriper kan handle på med tilbakevirkende kraft, og behandle signaturer som en eget problem for når standardene tar igjen.

Kontrollerer arbeidet

ML-KEM-implementeringen testes mot den offisielle Test vektorer NIST publiserer for FIPS 203Web-appen og mobilappen holdes dessuten til et felles sett av testvektorer, som er det som garanterer en melding skrevet av en kan leses av den andre.

Begge er Åpen kilde under AGPL-3.0, og webapps bygg er reproduserbare – se verifisere en konstruksjon.

Går dypere inn: Post-Quantum Key Agreement i Nymchat en teknisk whitepaper om hvordan ML-KEM-nøkkelen distribueres uten et katalog, den nøyaktige konstruksjonen som kombinerer de to nøkkelutvekslingene, og designene som ble avvist.