Mikä on VPN:n nonce ja miksi uudelleenkäyttö rikkoo tunnelin
Nonce on viestikohtainen arvo, joka ei saa koskaan toistua saman avaimen alla, ja se kulkee yleensä selväkielisenä. Sen muokkaaminen käsin on virhe, jota on vältettävä.
Useimmat kohtaavat sanan nonce VPN-profiilissa ja olettavat sen olevan vielä yksi jaettu salaisuus, joka kopioidaan osapuolten välillä. Se ei ole. Nonce on arvo, joka ei saa koskaan toistua saman avaimen alla, ja useimmissa nonce-pohjaisissa salauksissa se kulkee selväkielisenä. Hämmennys pysyy harmittomana, kunnes joku muokkaa sitä käsin, ja siitä todellinen vaurio alkaa.
Mistä nonce oikeasti tulee
Todennettu salaus tarvitsee eri noncen jokaiselle avaimen alla salatulle viestille. Protokollat täyttävät tämän vaatimuksen eri tavoin: monotonisesti kasvava laskuri, paketin tunnisteeseen yhdistetty suola tai riittävän pitkä satunnaisarvo. IKEv2 vaihtaa nonceja alkuvaihdon aikana, ja ne ovat julkisia syötteitä avainten johtamiseen, eivät salaisuuksia.
Ainutlaatuisuus voi olla rakenteellista tai todennäköisyysperusteista. Laskuri ei voi toistua ennen kuin se kiertyy ympäri, minkä vuoksi protokolla määrittää avaimen uusimispisteen kauan ennen sitä. Satunnaisarvo nojaa riittävään bittimäärään, jotta törmäys on epätodennäköinen viestirajan sisällä, mikä on erilainen argumentti erilaisella vikatilalla. Protokollan dokumentaatio kertoo, kumpi menetelmä pätee, ja molemmat ovat turvallisia vain, kun ilmoitettua rajaa noudatetaan.
| Design | Where uniqueness comes from | Exhaustion is handled by |
|---|---|---|
| AES-GCM records | An IV, typically a counter | Rekey before the counter wraps |
| ChaCha20-Poly1305 | A 96-bit nonce from a counter or generator | A message limit per key |
| WireGuard | A per-key 64-bit counter | Rekey at a message cap |
| OpenVPN AEAD | Packet identifier plus implicit key material | Rekey on the packet-id limit |
| IKEv2 | Fresh nonces per exchange | A new security association |
Mitä uudelleenkäyttö todella maksaa
Noncen käyttäminen uudelleen saman avaimen alla ei ole pieni tehokkuuskysymys. GCM:ssä kaksi viestiä, jotka jakavat IV:n, antavat tarkkailijalle mahdollisuuden palauttaa todennusavain ja laskea kahden selväkielisen tekstin poissulkeva tai. Virtapohjaiset rakenteet käyttävät avainvirtaa uudelleen samalla tavalla, mikä muuttaa salakirjoituksen salaisuuden sijaan arvoitukseksi.
Siksi toteutukset uusivat avaimen ennen kuin laskuri kiertyy ympäri, ja siksi ne pysähtyvät jatkamisen sijaan, kun niiden tila on epävarma. Uudelleenkäynnistys, joka nollaa laskurin, kun vastapuolella on yhä vanha avain, tai virtuaalikone, joka palautetaan istunnon keskeltä otetusta tilannekuvasta, on täsmälleen se tilanne, jonka estämiseksi rajat ovat olemassa. Hyökkääjää ei tarvita; tavalliset toiminnot riittävät.
Miksi käsin muokkaaminen on väärä korjaus
Laskurit, suolat ja pakettien tunnisteet ovat tilakoneita, jotka molemmat päät jakavat. Yhden puolen muuttaminen desynkronoi toisen, ja tunneli epäonnistuu tavoilla, jotka näyttävät reititysongelmalta. Tuettu vipu on tuore avainvaihto, joka nollaa tilan molemmissa päissä kerralla.
Salasanoilla ja nonceilla on myös eri roolit. Salasana on salainen syöte avainten johtamiseen; nonce on julkinen syöte viestiä kohden. Profiilikenttä, joka on merkitty nonceksi ja pyytää pitkää salaisuutta, on yleensä staattinen avain tai ennalta jaettu salaisuus toisella nimellä, joten lue kyseisen kentän dokumentaatio sen sijaan, että oletat.
Kun turvallisuustiedote koskee noncen käsittelyä, korjaus on ylläpitäjän korjattu versio, ei toinen salaus tai lyhyempi avain. Salauksen vaihtaminen sanan nonce välttämiseksi siirtää ongelmaa sen ratkaisemisen sijaan.
Varoituksen lukeminen arvaamatta
Lokirivi laskureista tai nonceista kuvaa yleensä menetettyä tilaa, ei hyökkäystä. Tarkista, onko toinen osapuoli käynnistetty uudelleen, onko kloonattu virtuaalikone käyttänyt samaa identiteettiä uudelleen ja ovatko molemmat päät samaa mieltä avaimen uusimisasetuksista. Perusta sitten uusi istunto ja seuraa, palaako viesti.
Pidä diagnoosi erillään liittymättömistä vioista. Sivu, joka ei lataudu, tai kirjautumiskehote, joka toistuu silmukassa, ei ole todiste noncen uudelleenkäytöstä, ja sen käsitteleminen sellaisena lähettää sinut salauskerrokseen, kun ongelma on sen yläpuolella.
Tavalliseen käyttöön turvallinen sääntö on lyhyt: anna toteutuksen hallita noncea, pidä molemmat päät tuetuissa versioissa ja käsittele mitä tahansa tilan nollausta syynä uusia avain sen sijaan, että muokkaisit arvoa. Jos profiilikenttä ei ole toimittajan dokumentaatiossa, älä keksi sille arvoa. Tunnelin korjaaminen alkaa siitä, että tiedät, mitä kerrosta katsot.