Kvifor ein lengre Blowfish-nøkkel ikkje kan retta opp ein 64-bits blokk
Blowfish-nøklar kan nå 448 bitar medan blokka blir ståande på 64 bitar. Sjekk den forhandla chifferen og planlegg ei støtta erstatning i staden for ein lengre nøkkel.
Ein VPN-profil tilbyr Blowfish med ein 448-bits nøkkel, og nokon føreslår å bruka den lengste nøkkelen for å behalda chifferen. Nøkkellengda er reell, men det er feil tal å optimalisera. Blowfish handsamar 64-bits blokker uansett kor lang nøkkelen er, og det er blokkbredda som avgrensar kor mykje trafikk éin nøkkel trygt kan verna. Køyr kontrollane nedanfor i rekkjefølgje og stopp ved den første som friskmelder tenesta, for eit seinare steg kan ikkje reparera eit tidlegare.
Sjekk kva partane faktisk forhandlar
Les chifferen til datakanalen frå begge endar, ikkje frå profilen du hadde tenkt å rulla ut. Ein klientkonfigurasjon kan lista fleire chiffer, og den valde er resultatet av forhandling mellom to implementasjonar og versjonane deira. Auk loggdetaljane på ei testtilkopling og les datakanallinja, som namngir chifferen og nøkkelstorleiken som faktisk vart initialisert.
Viss den forhandla chifferen er AES-GCM eller ChaCha20-Poly1305, stopp her. Dei konstruksjonane brukar ei 128-bits blokk og autentiserer nyttelasta, så argumentet om 64-bits kollisjonar nedanfor gjeld ikkje for dei.
Skil nøkkellengd frå blokkbredd
Blowfish godtar nøklar frå 32 til 448 bitar, og algoritmeforfattaren dokumenterer begge tala kvar for seg. Nøkkelen er hemmelegheita; blokka er transformasjonseininga. Ei lengre hemmelegheit gjer gjettingsarbeidet tyngre og gjer ingenting med bredda på blokka chifferen handsamar.
I CBC-modus blir chifferen brukt på blokker med fast bredd, kjeda saman med førre chiffertekstblokk og polstra til slutt. For Blowfish er den bredda 64 bitar, eller åtte byte. Nøkkelskjemaet kan vera så stort du vil; kjeda flyttar seg framleis åtte byte om gongen.
Difor er ein lengre nøkkel inga mottiltak. Han rettar seg mot brute force mot nøkkelen, medan kollisjonsrisikoen nedanfor er ein eigenskap ved blokkbredda og modusen.
Rekn bursdagsaritmetikken på blokkstorleiken
Ei 64-bits blokk har ein bursdagsskala på om lag 2^32 blokker krypterte under éin nøkkel før kollisjonar blir sannsynlege. Kvar blokk ber åtte byte, så same skala er rundt 2^35 byte, eller 32 GiB data under éin einaste nøkkel.
Behandle det som ein skala, ikkje ein kvote. Kollisjonar er probabilistiske, og om ein lek noko avheng av modusen, trafikkmønsteret og av om åtakaren kan kjenna att eller påverka klarteksten rundt. Den første byten forbi 32 GiB er inga dekrypteringshending, og dei første 32 GiB er ikkje sertifiserte som trygge.
Sweet32-forskarane demonstrerte i 2016 praktiske åtak mot 64-bits blokkchiffrar, mellom anna eit OpenVPN-scenario, under vilkår som kravde observasjon og trafikkgenerering. Dei publiserte standardverdiane og programvareversjonane deira er historisk kontekst, ikkje ei skildring av utrullinga di.
Avgjer om gjenbruk av CBC har noko å seia her
I CBC tyder ei gjenteken chiffertekstblokk at dei to klartekstblokkene skil seg med eit kjent forhold, fordi kjeda sin XOR blir oppheva. Ein åtakar som kan observera chifferteksten og kjenner eller kan påverka ein av klartekstane, kan mogeleg få informasjon om den andre. Blowfish-nøkkelen trengst aldri for det.
Dei relevante spørsmåla er altså kor lenge ein nøkkel er i bruk, kor mykje trafikk som passerer under han, og om nokon kan sjå og styra den trafikken. Nøkkelbyte senkjer blokkantalet per nøkkel, men eit tidsintervall er inga bytegrense: ein travel tunnel kan flytta langt meir data enn ein ledig i same time. Viss du held på ein eldre chiffer, må du utleia grensa frå konstruksjonen og det faktiske volumet, ikkje frå eit rundt tal.
Viss det målte volumet per nøkkel ligg langt under bursdagsskalaen, er eksponeringa mindre. Ho er framleis ikkje null og framleis ein grunn til å planleggja ein migrasjon i staden for å slutta å uroa seg.
Byt ut chifferen i staden for nøkkelen
Flytt tenesta til ein støtta AEAD-chiffer, og stadfest at begge partar, versjonane deira og dei kryptografiske backendane deira kan forhandla han. Ein lengre Blowfish-nøkkel endrar ingenting som tel, og å gjetta på eit nytt direktiv på éin klient er måten ein fungerande tunnel blir ein øydelagd. Test endringa på éin klient og éin server før du rører resten av flåten. Hald den gamle profilen tilgjengeleg for tilbakerulling til den nye chifferen har gått gjennom ein full tilkoplingssyklus.
Hald sertifikatverifisering og kontopålogging på plass under endringa. Dei svarar på ulike spørsmål: ei vellukka innlogging kan ikkje gjera ei blokk breiare, og ein betre datachiffer er inga unnskyldning for å stola på feil server.
Avslutt kontrollen ved å lesa den forhandla chifferen på nytt på ei ny tilkopling, og stadfest deretter at den gamle chifferen ikkje lenger blir godteken. Viss ein part framleis tilbyr han, er migrasjonen ikkje ferdig, uansett kva profilen på den andre sida seier.