Защо по-дълъг ключ на Blowfish не поправя 64-битов блок
Ключовете на Blowfish могат да достигнат 448 бита, докато блокът остава 64-битов. Проверете договорения шифър и планирайте поддържана замяна вместо по-дълъг ключ.
Профил за VPN предлага Blowfish с 448-битов ключ и някой предлага да се използва най-дългият ключ, за да се запази шифърът. Дължината на ключа е реална, но това е грешното число за оптимизиране. Blowfish преобразува 64-битови блокове независимо колко е дълъг ключът и именно ширината на блока ограничава колко трафик един ключ може безопасно да защити. Изпълнете проверките по-долу по ред и спрете на първата, която отхвърля съмненията за услугата, защото по-късна стъпка не може да поправи по-ранна.
Проверете какво всъщност договарят страните
Прочетете шифъра на канала за данни от двата края, а не от профила, който сте възнамерявали да разположите. Конфигурацията на клиента може да изброява няколко шифъра и избраният е резултат от договарянето между две реализации и техните версии. Увеличете подробността на журнала при тестова връзка и прочетете реда на канала за данни, който посочва действително инициализираните шифър и размер на ключа.
Ако договореният шифър е AES-GCM или ChaCha20-Poly1305, спрете тук. Тези конструкции използват 128-битов блок и удостоверяват полезния товар, така че аргументът за 64-битови сблъсъци по-долу не се отнася за тях.
Отделете дължината на ключа от ширината на блока
Blowfish приема ключове от 32 до 448 бита и документацията на автора на алгоритъма посочва двете числа поотделно. Ключът е тайната; блокът е единицата на преобразуването. По-дълга тайна затруднява отгатването и не прави нищо за ширината на блока, който шифърът обработва.
В режим CBC шифърът се прилага към блокове с фиксирана ширина, свързани с предишния блок шифрован текст и допълнени в края. За Blowfish тази ширина е 64 бита, или осем байта. Графикът на ключовете може да бъде колкото желаете голям; веригата все пак напредва с осем байта наведнъж.
Затова увеличаването на дължината на ключа не е смекчаваща мярка. То адресира грубата сила срещу ключа, докато рискът от сблъсъци по-долу е свойство на ширината на блока и режима.
Приложете аритметиката на рождения ден към размера на блока
64-битовият блок има скала на рождения ден от приблизително 2^32 блока, шифровани с един ключ, преди сблъсъците да станат вероятни. Всеки блок носи осем байта, така че същата скала е около 2^35 байта, или 32 GiB данни под един ключ.
Отнасяйте се към това като към скала, а не като към квота. Сблъсъците са вероятностни и дали един ще издаде нещо зависи от режима, модела на трафика и от това дали нападателят може да разпознае или повлияе на околния открит текст. Първият байт над 32 GiB не е събитие на дешифриране и първите 32 GiB не са сертифицирани като безопасни.
Изследователите на Sweet32 през 2016 година демонстрираха практични атаки срещу 64-битови блокови шифри, включително сценарий с OpenVPN, при условия, изискващи наблюдение и генериране на трафик. Публикуваните им стойности по подразбиране и версии на софтуера са исторически контекст, а не описание на вашето разполагане.
Решете дали повторното използване на CBC има значение тук
В CBC повторен блок шифрован текст означава, че двата блока открит текст се различават по известно съотношение, защото XOR на веригата се съкращава. Нападател, който може да наблюдава шифрования текст и знае или може да повлияе на един от откритите текстове, може да възстанови информация за другия. Ключът на Blowfish никога не е необходим за това.
И така, важните въпроси са колко дълго ключът остава в експлоатация, колко трафик минава под него и дали някой може да наблюдава и насочва този трафик. Обновяването на ключове намалява броя блокове на ключ, но интервалът от време не е лимит в байтове: натоварен тунел може да премести много повече данни от бездействащ за същия час. Ако запазите остарял шифър, изведете лимита от конструкцията и действителния обем, а не от кръгло число.
Ако измереният обем на ключ остава много под скалата на рождения ден, излагането е по-малко. То все още не е нула и все още е причина да планирате миграция, вместо да спрете да се тревожите.
Заменете шифъра, а не ключа
Преместете услугата на поддържан AEAD шифър и потвърдете, че двете страни, техните версии и техните криптографски библиотеки могат да го договорят. По-дълъг ключ на Blowfish не променя нищо важно и отгатването на нова директива на един клиент е начинът работещ тунел да стане счупен. Тествайте промяната на един клиент и един сървър, преди да докоснете останалата част от парка. Дръжте стария профил достъпен за връщане назад, докато новият шифър не премине пълен цикъл на свързване.
Запазете проверката на сертификати и удостоверяването на акаунти по време на промяната. Те отговарят на различни въпроси: успешно влизане не може да разшири блок и по-добър шифър на данни не оправдава доверие на грешния сървър.
Завършете проверката, като прочетете отново договорения шифър при нова връзка и след това потвърдите, че старият шифър вече не се приема. Ако страна все още го предлага, миграцията не е завършена, каквото и да казва профилът от другата страна.