Proč delší klíč Blowfish neopraví 64bitový blok
Klíče Blowfish mohou mít 448 bitů, zatímco blok zůstává 64bitový. Zkontrolujte vyjednanou šifru a naplánujte podporovanou náhradu místo delšího klíče.
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.