Miksi pidempi Blowfish-avain ei korjaa 64-bittistä lohkoa
Blowfish-avaimet voivat olla 448-bittisiä, kun taas lohko pysyy 64-bittisenä. Tarkista neuvoteltu salaus ja suunnittele tuettu korvaaja pidemmän avaimen sijaan.
VPN-profiili tarjoaa Blowfishin 448-bittisellä avaimella, ja joku ehdottaa pisimmän avaimen käyttöä salauksen säilyttämiseksi. Avaimen pituus on todellinen, mutta se on väärä luku optimoitavaksi. Blowfish muuntaa 64-bittisiä lohkoja riippumatta avaimen pituudesta, ja lohkon leveys rajoittaa, kuinka paljon liikennettä yksi avain voi turvallisesti suojata. Suorita alla olevat tarkistukset järjestyksessä ja pysähdy ensimmäiseen, joka vapauttaa palvelun, koska myöhempi vaihe ei voi korjata aikaisempaa.
Tarkista, mitä osapuolet todella neuvottelevat
Lue datakanavan salaus molemmista päistä, älä profiilista, jonka aioit ottaa käyttöön. Asiakasohjelman kokoonpano voi luetella useita salauksia, ja valittu on kahden toteutuksen ja niiden versioiden neuvottelun tulos. Kasvata lokin yksityiskohtaisuutta testiyhteydellä ja lue datakanavan rivi, joka nimeää tosiasiassa alustetun salauksen ja avaimen koon.
Jos neuvoteltu salaus on AES-GCM tai ChaCha20-Poly1305, pysähdy tähän. Nämä rakenteet käyttävät 128-bittistä lohkoa ja todentavat hyötykuorman, joten alla oleva 64-bittisten törmäysten argumentti ei koske niitä.
Erota avaimen pituus lohkon leveydestä
Blowfish hyväksyy avaimia 32–448 bittiä, ja algoritmin kirjoittajan dokumentaatio luettelee molemmat luvut erikseen. Avain on salaisuus; lohko on muunnoksen yksikkö. Pidempi salaisuus vaikeuttaa arvaamista eikä tee mitään salauksen käsittelemän lohkon leveydelle.
CBC-tilassa salaus kohdistetaan kiinteäleveyksiin lohkoihin, ketjutettuna edelliseen salatekstilohkoon ja täytettynä lopussa. Blowfishilla tämä leveys on 64 bittiä eli kahdeksan tavua. Avainohjelma voi olla miten suuri tahansa; ketju etenee silti kahdeksan tavua kerrallaan.
Siksi pidempi avain ei ole lievennys. Se kohdistuu avaimen raakaan voimaan, kun taas alla oleva törmäysriski on lohkon leveyden ja tilan ominaisuus.
Sovella syntymäpäiväaritmetiikkaa lohkon kokoon
64-bittisen lohkon syntymäpäiväasteikko on noin 2^32 lohkoa salattuna yhdellä avaimella ennen kuin törmäyksistä tulee todennäköisiä. Jokainen lohko kantaa kahdeksan tavua, joten sama asteikko on noin 2^35 tavua eli 32 GiB dataa yhden avaimen alla.
Käsittele sitä asteikkona, älä kiintiönä. Törmäykset ovat todennäköisyyspohjaisia, ja se, vuotaako jokin jotain, riippuu tilasta, liikennekuviosta ja siitä, voiko hyökkääjä tunnistaa tai vaikuttaa ympäröivään selkokieliseen tekstiin. Ensimmäinen tavu 32 GiB:n jälkeen ei ole salauksen purkamistapahtuma, eikä ensimmäisiä 32 GiB:tä ole sertifioitu turvallisiksi.
Sweet32-tutkijat esittelivät vuonna 2016 käytännön hyökkäyksiä 64-bittisiä lohkosalauksia vastaan, mukaan lukien OpenVPN-skenaarion, olosuhteissa, jotka vaativat havainnointia ja liikenteen tuottamista. Heidän julkaistut oletusarvonsa ja ohjelmistoversionsa ovat historiallista kontekstia, eivät kuvaus käyttöönotostasi.
Päätä, onko CBC:n uudelleenkäytöllä merkitystä tässä
CBC:ssä toistuva salatekstilohko tarkoittaa, että kaksi selkokielistä lohkoa eroavat tunnetulla suhteella, koska ketjun XOR kumoaa itsensä. Hyökkääjä, joka voi havainnoida salatekstiä ja tuntee tai voi vaikuttaa toiseen selkokieliseen tekstiin, voi mahdollisesti paljastaa tietoa toisesta. Blowfish-avainta ei koskaan tarvita siihen.
Olennaiset kysymykset ovat siis, kuinka kauan avain pysyy käytössä, kuinka paljon liikennettä sen alla kulkee ja voiko joku havainnoida ja ohjata sitä liikennettä. Avainten vaihto pienentää lohkojen määrää avainta kohden, mutta aikaväli ei ole tavuraja: kiireinen tunneli voi siirtää samassa tunnissa paljon enemmän dataa kuin joutilas. Jos pidät vanhan salauksen, johda raja rakenteesta ja todellisesta määrästä, älä pyöreästä luvusta.
Jos mitattu määrä avainta kohden pysyy selvästi syntymäpäiväasteikon alapuolella, altistus on pienempi. Se ei silti ole nolla ja on edelleen syy suunnitella siirtymä sen sijaan, että lakkaisi huolehtimasta.
Vaihda salaus, älä avainta
Siirrä palvelu tuettuun AEAD-salaukseen ja varmista, että molemmat osapuolet, niiden versiot ja niiden salauskirjastot voivat neuvotella sen. Pidempi Blowfish-avain ei muuta mitään merkityksellistä, ja uuden direktiivin arvaaminen yhdellä asiakkaalla on tapa, jolla toimiva tunneli rikkoutuu. Testaa muutos yhdellä asiakkaalla ja yhdellä palvelimella ennen kuin kosket muuhun laivastoon. Pidä vanha profiili saatavilla palautusta varten, kunnes uusi salaus on läpäissyt täyden yhteyksien kierron.
Säilytä varmenteiden tarkistus ja tilien todentaminen muutoksen ajan. Ne vastaavat eri kysymyksiin: onnistunut kirjautuminen ei voi leventää lohkoa, eikä parempi datasalaus vapauta luottamasta väärään palvelimeen.
Päätä tarkistus lukemalla neuvoteltu salaus uudelleen uudella yhteydellä ja vahvistamalla sitten, ettei vanhaa salausta enää hyväksytä. Jos osapuoli tarjoaa sitä yhä, siirtymä ei ole valmis, mitä tahansa toisen puolen profiili sanoo.