Prečo dlhší kľúč Blowfish neopraví 64-bitový blok
Kľúče Blowfish môžu mať 448 bitov, zatiaľ čo blok zostáva 64-bitový. Skontrolujte vyjednanú šifru a naplánujte podporovanú náhradu namiesto dlhšieho kľúča.
Profil VPN ponúka Blowfish s 448-bitovým kľúčom a niekto navrhuje použiť najdlhší kľúč, aby sa šifra zachovala. Dĺžka kľúča je skutočná, ale je to nesprávne číslo na optimalizáciu. Blowfish spracúva 64-bitové bloky bez ohľadu na dĺžku kľúča a šírka bloku je to, čo obmedzuje, koľko prevádzky môže jeden kľúč bezpečne chrániť. Vykonajte nižšie uvedené kontroly v poradí a zastavte sa pri prvej, ktorá službu oslobodí, pretože neskorší krok nemôže opraviť skorší.
Skontrolujte, čo si strany skutočne vyjednajú
Prečítajte šifru dátového kanála na oboch koncoch, nie z profilu, ktorý ste chceli nasadiť. Konfigurácia klienta môže uvádzať viacero šifier a vybraná je výsledkom vyjednávania medzi dvoma implementáciami a ich verziami. Zvýšte podrobnosť záznamu na testovacom pripojení a prečítajte riadok dátového kanála, ktorý uvádza šifru a skutočne inicializovanú veľkosť kľúča.
Ak je vyjednanou šifrou AES-GCM alebo ChaCha20-Poly1305, zastavte sa tu. Tieto konštrukcie používajú 128-bitový blok a overujú užitočné zaťaženie, takže sa na ne nižšie uvedený argument o 64-bitových kolíziách nevzťahuje.
Oddeľte dĺžku kľúča od šírky bloku
Blowfish prijíma kľúče od 32 do 448 bitov a dokumentácia autora algoritmu uvádza obe čísla oddelene. Kľúč je tajomstvo; blok je jednotka transformácie. Dlhšie tajomstvo sťažuje hádanie a nič nemení na šírke bloku, ktorý šifra spracúva.
V režime CBC sa šifra aplikuje na bloky pevnej šírky, zreťazené s predchádzajúcim blokom šifrovaného textu a na konci doplnené. Pre Blowfish je táto šírka 64 bitov, teda osem bajtov. Rozvrh kľúčov môže byť ľubovoľne veľký; reťaz sa napriek tomu posúva o osem bajtov naraz.
Preto dlhší kľúč nie je zmiernením. Rieši hrubú silu proti kľúču, zatiaľ čo riziko kolízie nižšie je vlastnosťou šírky bloku a režimu.
Aplikujte narodeninovú aritmetiku na veľkosť bloku
64-bitový blok má narodeninovú mierku približne 2^32 blokov zašifrovaných jedným kľúčom, kým sa kolízie stanú pravdepodobnými. Každý blok nesie osem bajtov, takže tá istá mierka je asi 2^35 bajtov, teda 32 GiB dát pod jedným kľúčom.
Berte to ako mierku, nie ako kvótu. Kolízie sú pravdepodobnostné a to, či niektorá niečo prezradí, závisí od režimu, vzoru prevádzky a od toho, či útočník dokáže rozpoznať alebo ovplyvniť okolitý otvorený text. Prvý bajt za 32 GiB nie je udalosťou dešifrovania a prvých 32 GiB nie je certifikovaných ako bezpečné.
Výskumníci Sweet32 v roku 2016 predviedli praktické útoky na 64-bitové blokové šifry, vrátane scenára OpenVPN, za podmienok vyžadujúcich pozorovanie a generovanie prevádzky. Ich zverejnené predvolené hodnoty a verzie softvéru sú historickým kontextom, nie opisom vášho nasadenia.
Rozhodnite, či tu záleží na opätovnom použití CBC
V CBC opakovaný blok šifrovaného textu znamená, že sa dva bloky otvoreného textu líšia známym vzťahom, pretože sa reťazový XOR vyruší. Útočník, ktorý môže pozorovať šifrovaný text a pozná alebo môže ovplyvniť jeden z otvorených textov, môže získať informácie o druhom. Kľúč Blowfish na to nikdy nie je potrebný.
Relevantné otázky teda sú, ako dlho kľúč zostáva v prevádzke, koľko prevádzky pod ním prejde a či niekto môže túto prevádzku sledovať a riadiť. Obnova kľúčov znižuje počet blokov na kľúč, ale časový interval nie je bajtovým limitom: vyťažený tunel môže za rovnakú hodinu preniesť oveľa viac dát ako nečinný. Ak si ponecháte staršiu šifru, odvoďte limit z konštrukcie a skutočného objemu, nie z okrúhleho čísla.
Ak nameraný objem na kľúč zostáva hlboko pod narodeninovou mierkou, expozícia je menšia. Stále však nie je nulová a stále je dôvodom plánovať migráciu, namiesto toho aby ste sa prestali obávať.
Nahraďte šifru, nie kľúč
Presuňte službu na podporovanú šifru AEAD a potvrďte, že ju obe strany, ich verzie a ich kryptografické backendy dokážu vyjednať. Dlhší kľúč Blowfish nemení nič podstatné a hádanie novej direktívy na jednom klientovi je spôsob, akým sa fungujúci tunel stane nefunkčným. Otestujte zmenu na jednom klientovi a jednom serveri, skôr než sa dotknete zvyšku flotily. Ponechajte starý profil dostupný na vrátenie, kým nová šifra neprejde celým cyklom pripojenia.
Počas zmeny zachovajte overovanie certifikátov a autentizáciu účtov. Odpovedajú na rôzne otázky: úspešné prihlásenie nemôže rozšíriť blok a lepšia dátová šifra neospravedlňuje dôveru nesprávnemu serveru.
Kontrolu uzavrite opätovným prečítaním vyjednanej šifry na novom pripojení a potvrdením, že stará šifra už nie je prijímaná. Ak ju strana stále ponúka, migrácia nie je dokončená, nech profil na druhej strane hovorí čokoľvek.