VPN profil nudi Blowfish s ključem od 448 bita, a netko predlaže upotrebu najduljeg ključa kako bi se šifra zadržala. Duljina ključa je stvarna, ali to je pogrešan broj za optimizaciju. Blowfish pretvara 64-bitne blokove bez obzira na duljinu ključa, a širina bloka je ono što ograničava koliko prometa jedan ključ može sigurno zaštititi. Provedite donje provjere redom i zaustavite se na prvoj koja oslobađa uslugu, jer kasniji korak ne može popraviti raniji.

Provjerite što strane zapravo dogovaraju

Pročitajte šifru podatkovnog kanala na oba kraja, ne iz profila koji ste namjeravali uvesti. Konfiguracija klijenta može navesti nekoliko šifri, a odabrana je rezultat pregovora između dvije implementacije i njihovih verzija. Povećajte razinu detalja zapisa na testnoj vezi i pročitajte redak podatkovnog kanala koji navodi šifru i stvarno inicijaliziranu veličinu ključa.

Ako je dogovorena šifra AES-GCM ili ChaCha20-Poly1305, zaustavite se ovdje. Te konstrukcije koriste 128-bitni blok i provjeravaju vjerodostojnost sadržaja, pa se donji argument o 64-bitnim kolizijama na njih ne odnosi.

Odvojite duljinu ključa od širine bloka

Blowfish prihvaća ključeve od 32 do 448 bita, a dokumentacija autora algoritma navodi oba broja odvojeno. Ključ je tajna; blok je jedinica pretvorbe. Dulja tajna otežava pogađanje i ne mijenja ništa na širini bloka koji šifra obrađuje.

U načinu CBC šifra se primjenjuje na blokove fiksne širine, lančano s prethodnim blokom šifriranog teksta i na kraju dopunjene. Za Blowfish je ta širina 64 bita, odnosno osam bajtova. Raspored ključeva može biti proizvoljno velik; lanac se ipak pomiče osam bajtova odjednom.

Zato dulji ključ nije ublažavanje. Rješava grubu silu protiv ključa, dok je rizik kolizije donje svojstvo širine bloka i načina.

Primijenite rođendansku aritmetiku na veličinu bloka

64-bitni blok ima rođendansku ljestvicu od otprilike 2^32 bloka šifriranih pod jednim ključem prije nego što kolizije postanu vjerojatne. Svaki blok nosi osam bajtova, pa je ista ljestvica oko 2^35 bajtova, ili 32 GiB podataka pod jednim ključem.

Tretirajte to kao ljestvicu, ne kao kvotu. Kolizije su vjerojatnosne, a o tome hoće li neka nešto odati ovisi o načinu, uzorku prometa i o tome može li napadač prepoznati ili utjecati na okolni otvoreni tekst. Prvi bajt nakon 32 GiB nije događaj dešifriranja, a prvih 32 GiB nije certificirano kao sigurno.

Istraživači Sweet32 su 2016. pokazali praktične napade na 64-bitne blokovne šifre, uključujući scenarij OpenVPN, u uvjetima koji su zahtijevali promatranje i generiranje prometa. Njihove objavljene zadane vrijednosti i verzije softvera povijesni su kontekst, ne opis vaše implementacije.

Odlučite je li ponovna upotreba CBC-a ovdje važna

U CBC-u ponovljeni blok šifriranog teksta znači da se dva bloka otvorenog teksta razlikuju za poznat odnos, jer se lančani XOR poništava. Napadač koji može promatrati šifrirani tekst i poznaje ili može utjecati na jedan od otvorenih tekstova može dobiti informacije o drugome. Blowfish ključ za to nikada nije potreban.

Relevantna pitanja su dakle koliko dugo ključ ostaje u upotrebi, koliko prometa prolazi pod njim i može li ga netko promatrati i usmjeravati. Obnavljanje ključeva smanjuje broj blokova po ključu, ali vremenski interval nije bajtovno ograničenje: zauzet tunel može premjestiti mnogo više podataka od besposlenog u istom satu. Ako zadržite stariju šifru, ograničenje izvedite iz konstrukcije i stvarnog obujma, ne iz okruglog broja.

Ako izmjereni obujam po ključu ostane daleko ispod rođendanske ljestvice, izloženost je manja. Još uvijek nije nula i još uvijek je razlog za planiranje migracije umjesto prestanka brige.

Zamijenite šifru, ne ključ

Premjestite uslugu na podržanu AEAD šifru i potvrdite da je obje strane, njihove verzije i njihovi kriptografski pozadinski sustavi mogu dogovoriti. Dulji Blowfish ključ ne mijenja ništa važno, a pogađanje nove direktive na jednom klijentu način je na koji radni tunel postaje pokvaren. Testirajte promjenu na jednom klijentu i jednom poslužitelju prije nego što dotaknete ostatak flote. Držite stari profil dostupnim za vraćanje dok nova šifra ne prođe cijeli ciklus veze.

Tijekom promjene zadržite provjeru certifikata i autentifikaciju računa. One odgovaraju na različita pitanja: uspješna prijava ne može proširiti blok, a bolja podatkovna šifra ne opravdava povjerenje u pogrešan poslužitelj.

Zatvorite provjeru ponovnim čitanjem dogovorene šifre na novoj vezi i potvrdom da stara šifra više nije prihvaćena. Ako je strana još nudi, migracija nije dovršena, što god profil na drugoj strani govorio.

Povezani članci