Profil VPN nabízí Blowfish s 448bitovým klíčem a někdo navrhuje použít nejdelší klíč, aby se šifra zachovala. Délka klíče je skutečná, ale je to špatné číslo k optimalizaci. Blowfish zpracovává 64bitové bloky bez ohledu na délku klíče a šířka bloku je to, co omezuje, kolik provozu může jeden klíč bezpečně chránit. Proveďte níže uvedené kontroly v pořadí a zastavte se u první, která službu zprostí, protože pozdější krok nemůže opravit dřívější.

Zkontrolujte, co si strany skutečně vyjednají

Přečtěte šifru datového kanálu na obou koncích, ne z profilu, který jste chtěli nasadit. Konfigurace klienta může uvádět několik šifer a vybraná je výsledkem vyjednávání mezi dvěma implementacemi a jejich verzemi. Zvyšte podrobnost protokolu na testovacím připojení a přečtěte řádek datového kanálu, který uvádí šifru a skutečně inicializovanou velikost klíče.

Pokud je vyjednanou šifrou AES-GCM nebo ChaCha20-Poly1305, zastavte se zde. Tyto konstrukce používají 128bitový blok a ověřují užitečné zatížení, takže se na ně níže uvedený argument o 64bitových kolizích nevztahuje.

Oddělte délku klíče od šířky bloku

Blowfish přijímá klíče od 32 do 448 bitů a dokumentace autora algoritmu uvádí obě čísla odděleně. Klíč je tajemství; blok je jednotka transformace. Delší tajemství ztěžuje hádání a nic nemění na šířce bloku, který šifra zpracovává.

V režimu CBC se šifra aplikuje na bloky pevné šířky, zřetězené s předchozím blokem šifrovaného textu a na konci doplněné. Pro Blowfish je tato šířka 64 bitů, tedy osm bajtů. Rozvrh klíčů může být libovolně velký; řetěz se přesto posouvá o osm bajtů najednou.

Proto delší klíč není zmírněním. Řeší hrubou sílu proti klíči, zatímco riziko kolize níže je vlastností šířky bloku a režimu.

Aplikujte narozeninovou aritmetiku na velikost bloku

64bitový blok má narozeninové měřítko zhruba 2^32 bloků zašifrovaných jedním klíčem, než se kolize stanou pravděpodobnými. Každý blok nese osm bajtů, takže stejné měřítko je asi 2^35 bajtů, tedy 32 GiB dat pod jedním klíčem.

Berte to jako měřítko, ne jako kvótu. Kolize jsou pravděpodobnostní a to, zda nějaká něco prozradí, závisí na režimu, vzoru provozu a na tom, zda útočník dokáže rozpoznat nebo ovlivnit okolní otevřený text. První bajt za 32 GiB není událostí dešifrování a prvních 32 GiB není certifikováno jako bezpečné.

Výzkumníci Sweet32 v roce 2016 předvedli praktické útoky na 64bitové blokové šifry, včetně scénáře OpenVPN, za podmínek vyžadujících pozorování a generování provozu. Jejich zveřejněné výchozí hodnoty a verze softwaru jsou historickým kontextem, nikoli popisem vašeho nasazení.

Rozhodněte, zda zde záleží na opětovném použití CBC

V CBC opakovaný blok šifrovaného textu znamená, že se dva bloky otevřeného textu liší známým vztahem, protože se řetězový XOR vyruší. Útočník, který může pozorovat šifrovaný text a zná nebo může ovlivnit jeden z otevřených textů, může získat informace o druhém. Klíč Blowfish k tomu nikdy není potřeba.

Relevantní otázky tedy jsou, jak dlouho klíč zůstává v provozu, kolik provozu pod ním projde a zda někdo může tento provoz sledovat a řídit. Obnova klíčů snižuje počet bloků na klíč, ale časový interval není bajtovým limitem: vytížený tunel může za stejnou hodinu přenést mnohem více dat než nečinný. Pokud si ponecháte starší šifru, odvoďte limit z konstrukce a skutečného objemu, ne z kulatého čísla.

Pokud naměřený objem na klíč zůstává hluboko pod narozeninovým měřítkem, je expozice menší. Stále však není nulová a stále je důvodem plánovat migraci, místo abyste se přestali obávat.

Nahraďte šifru, ne klíč

Přesuňte službu na podporovanou šifru AEAD a potvrďte, že ji obě strany, jejich verze a jejich kryptografické backendy dokážou vyjednat. Delší klíč Blowfish nemění nic podstatného a hádání nové direktivy na jednom klientovi je způsob, jak se fungující tunel stane nefunkčním. Otestujte změnu na jednom klientovi a jednom serveru, než se dotknete zbytku flotily. Ponechte starý profil dostupný pro vrácení, dokud nová šifra neprojde celým cyklem připojení.

Během změny zachovejte ověřování certifikátů a autentizaci účtů. Odpovídají na různé otázky: úspěšné přihlášení nemůže rozšířit blok a lepší datová šifra neomlouvá důvěru ve špatný server.

Kontrolu uzavřete opětovným přečtením vyjednané šifry na novém připojení a potvrzením, že stará šifra již není přijímána. Pokud ji strana stále nabízí, migrace není dokončena, ať profil na druhé straně říká cokoli.

Související články