Профіль 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 не змяняе нічога важнага, а адгадванне новай дырэктывы на адным кліенце — гэта спосаб ператварыць працоўны тунэль у зламаны. Праверце змену на адным кліенце і адным серверы, перш чым кранаць рэшту парку. Трымайце стары профіль даступным для адкату, пакуль новы шыфр не пройдзе поўны цыкл злучэння.

Захоўвайце праверку сертыфікатаў і аўтэнтыфікацыю ўліковых запісаў падчас змены. Яны адказваюць на розныя пытанні: паспяховы ўваход не можа пашырыць блок, а лепшы шыфр даных не апраўдвае даверу не таму серверу.

Завяршыце праверку, зноў прачытаўшы ўзгоднены шыфр на новым злучэнні, і потым пераканайцеся, што стары шыфр больш не прымаецца. Калі бок усё яшчэ прапануе яго, міграцыя не завершана, што б ні казаў профіль на іншым баку.

Падобныя артыкулы