Агульная група DH і свежыя сакрэты: чаму атака таннее
Свежыя сакрэты сесіі не выпраўляюць слабую групу канечнага поля. Паўторнае выкарыстанне адной групы размеркаваў найдаражэйшую стадыю атакі на кожны абмен, які яе ўзгадняе.
Параметры групы публічныя па задуме, і менавіта гэтая публічнасць робіць іх лёгкімі для ігнаравання. У Diffie-Hellman над канечным полем модуль і генератар агульныя, а прыватныя паказчыкі і вытворныя ключы сесіі — не. Даражэйшая стадыя атакі рэшатам па лікавым полі залежыць ад групы, а не ад аднаго абмену, таму адна слабая група, выкарыстаная ўсюды, становіцца агульнай адказнасцю. Назваць параметры публічнымі — дакладна і не па сутнасці, бо кошт, які паўторна выкарыстоўваецца, — гэта кошт атакі на гэтую групу.
Публічная палова не ёсць уразлівай паловай, і ў гэтым пастка
Звычайная паўдаводка кажа: параметры апублікаваныя ў стандарце, значыць атакоўца іх ужо ведае і хаванне іх нічога не змяніла б. Абедзве часткі праўдзівыя, і ні адна не вынікае з другой. Пастаўленая па змаўчанні група публічная, а прыватная група, якую вы стварылі на мінулым тыдні, таксама бачная любому, хто завяршае рукапацісканне. Сакрэтнасць ніколі не была сродкам кантролю; імі з'яўляюцца трываласць і праверка.
Што змяняецца, дык гэта колькасць месцаў, якія падзяляюць адну і тую ж слабасць. Адна арганізацыя, якая стварае ўласную групу на 2048 біт, плаціць за ўласны кошт атакі, а пратакольнае значэнне па змаўчанні, абранае мільёнамі, амартызуе адзін кошт на ўсіх. Менавіта ў гэтым сэнсе незвычайная група не аўтаматычна лепшая. Незвычайная група, якая занадта малая, — гэта проста драбнейшы агульны сакрэт з меншай колькасцю вачэй над ім.
Праверка важная не менш за памер. Пір, які дасылае модуль з малымі множнікамі або модуль не той формы, якой чакае пратакол, можа выдаць інфармацыю пра прыватны паказчык, нават калі даўжыня ў бітах выглядае паважна. Бібліятэкі, якія адхіляюць няправільныя параметры на ўваходзе, робяць сапраўдную працу, таму самаробны разбор параметраў — дрэннае месца для эканоміі намаганняў.
Што папярэдні разлік сапраўды дае атакоўцу
У рэшата па лікавым полі ёсць стадыя, якая залежыць толькі ад простага ліку, і яе вынік можна паўторна выкарыстаць супраць кожнага абмену, што ўжывае гэты просты лік. Увесь механізм гістарычнай трывогі менавіта такі: дарагая частка аплачваецца аднойчы, і гранічны кошт кожнай наступнай сесіі зніжаецца. Свежыя паказчыкі ўсё яшчэ абараняюць кожны асобны абмен ад пасіўнага назіральніка, пакуль група дастаткова вялікая, каб зрабіць рэшата немагчымым. Абедзве сцвярджэнні сумяшчальныя, і большасць спрэчак на гэтую тэму ўзнікае з таго, што бяруць адно і адкідваюць другое.
Праца Logjam 2015 года прадэманстравала зніжэнне да Diffie-Hellman экспартнага ўзроўню на 512 біт і ацаніла, чаго каштавала б атака на буйнейшыя шырока паўторна выкарыстоўваныя групы пры значних рэсурсах. Дэманстрацыя была канкрэтнай, ацэнкі былі ацэнкамі, і ні адно не было доказам таго, што пэўную сесію VPN расшыфравалі.
Спасылайцеся на працу дзеля механізму і прадэманстраванага зніжэння, а не як на вымярэнне вашага разгортвання. Старая статыстыка пра тое, колькі сервераў дзялілі групу па змаўчанні, апісвае інтэрнэт таго года, а не сетку, якую вы можаце агледзець сёння. Карыснае, што варта пераняць, — гэта пытанне: ці ўсё яшчэ вашы прылады ўзгадняюць групу, малую або слаба правяраную?
Стандартызаванасць не тое самае, што слабасць
RFC 7919 вызначае названыя групы канечнага поля, каб абодва бакі ўзгаднялі групу па ідэнтыфікатары і ўжывалі ўзгодненую палітыку. Быць стандартызаваным — гэта перавага, бо гэта прыбірае неадназначнасць перамоваў і дазваляе рэалізацыі адмаўляць непадтрымліваныя памеры. Названая група слабая толькі тады, калі яе памер ніжэйшы за палітыку, якой вы нібыта трымаецеся, а не таму, што яна з'яўляецца ў дакуменце. Тая ж логіка датычыцца груп эліптычных крывых, якія маюць іншую структуру і іншыя рэжымы адмоў.
Трымайце канструкцыі асобна, калі разважаеце пра іх. Выснова пра Diffie-Hellman над канечным полем нічога не кажа пра X25519, а выснова пра групу MODP на 1024 біт нічога не кажа пра групу на 3072 біт. Палітыка трываласці вызначаецца для кожнага механізму, кожнага памеру і кожнай версіі пратаколу, таму фраза «моцная крыптаграфія» не з'яўляецца правяральным сцвярджэннем.
Аўтэнтыфікацыя — гэта другая палова, і яна не замяняе. Моцная група без праверкі піра пакідае атакоўцу ў сярэдзіне, а сапраўдны сертыфікат не ўратуе абмен на 768 біт. Разглядайце іх як дзве незалежныя лініі, потым пацвердзіце, што абедзве сапраўды ўзгодненыя.
Чытайце ўзгодненую групу на рэальным злучэнні
Чытайце ўзгодненую групу з прылады, а не з шаблону канфігурацыі. Шаблоны апісваюць намер, а цікавае значэнне — тое, пра якое абодва бакі дамовіліся падчас апошняга рукапаціскання. На канцы IPsec вывад стану звычайна друкуе выбраную прапанову, уключаючы групу MODP.
Зафіксуйце гэты радок да і пасля змены палітыкі і захавайце абодва ў запісе змены. Параўнанне і ёсць доказ.
ipsec statusall | grep -Ei "proposal|ESP|IKE"
openssl dhparam -in /etc/vpn/dh3072.pem -check -nooutКалі пасля змены стан усё яшчэ паказвае старую групу, злучэнне не пераўзгаднілася, і праўка канфігурацыі нічога не даказала. Перазапусціце пір або ачысціце асацыяцыю бяспекі, потым зноў прачытайце стан. Палітыка, што ўжываецца толькі да новых злучэнняў, пакіне доўгажывучыя тунэлі на старых параметрах, пакуль яны трымаюцца.
Правярайце групу і асобу піра асобна
Аддзяліце тое, што абараняе група, ад таго, хто на другім канцы. Запішыце метад абмену ключамі, памер групы і метад аўтэнтыфікацыі як тры палі, бо яны адмаўляюць незалежна. Тунэль, які ўзгадніў групу на 3072 біт, але прымае любы сертыфікат, — гэта не той жа рызыка, што тунэль, які замацоўвае піра і выкарыстоўвае групу на 2048 біт.
Запішыце крытэрыі прыняцця да пачатку агляду, каб вынік быў параўнаннем, а не меркаваннем. Мінімальны памер групы для кожнай версіі пратаколу, белы спіс названых груп і абавязковая праверка піра дастатковыя, каб зрабіць рашэнне механічным. Неадназначнасць у гэтым спісе і ператварае агляд у спрэчку, а спрэчкі не выпраўляюцца. Тады вынік — спіс канцавых пунктаў, якія парушаюць заяўленае правіла.
ipsec statusall | grep -Ei "peer|auth|cert"
openssl s_client -connect vpn.acme.example:443 -brief -cipher 'DHE-RSA-AES256-GCM-SHA384'Замкніце цыкл, перачытаўшы ўзгодненыя значэнні пасля выпраўлення. Адпаведны файл канфігурацыі не доказ таго, што тунэль яго падхапіў. Вывад стану і адно свежае рукапацісканне — гэта доказ, і іх збор займае менш часу, чым нарада пра тое, ці патрэбныя яны.