OpenVPN без CA: як peer-fingerprint правярае партнёраў
Адбітак пальца замацоўвае адзін сертыфікат, а не агульны сакрэт. Прасочыце, што ахоплівае дайджэст, як кожны бок будуе свае дазволы і колькі каштуе абнаўленне.
Невялікае разгортванне цягнецца да адбіткаў пальцаў, бо ўстанова сертыфікатаў выглядае як інфраструктура, на якую ні ў кога няма часу. Інстынкт разумны, а кароткі шлях, які людзі замест гэтага выбіраюць—капіраванне аднаго сакрэту канала даных на абодва канцы—не такі. Наладка peer-fingerprint захоўвае структуру TLS цэлай: кожны бок па-ранейшаму трымае свой прыватны ключ і сертыфікат, і кожны бок па-ранейшаму правярае іншага. Змяняецца тое, дзе замацавана праверка: ад даверанай установы да кароткага спіса замацаваных дайджэстаў. Паколькі дайджэст ахоплівае ўвесь сертыфікат, а не імя, абнаўленне ператвараецца ў аперацыю, якая сапраўды забірае час.
Да чаго насамрэч абавязвае адбітак
Адбітак сертыфіката — гэта дайджэст усяго сертыфіката ў кадаванні DER, а не яго публічнага ключа і не імя яго суб’екта. Таму два сертыфікаты з аднолькавымі імёнамі і адным і тым жа ключом, але рознымі датамі дзейнасці маюць розныя адбіткі. Менавіта гэта робіць замацаванне дакладным, і гэта ж робіць абнаўленне перарывістым. Замацаванне не можа азначаць давер да ключа наогул, бо яно называе адзін артэфакт у адзін момант яго жыцця. Дайджэст можа ведаць любы, і само веданне яго нічога не даказвае.
openssl x509 -in server.crt -noout -fingerprint -sha256
openssl x509 -in client-07.crt -noout -fingerprint -sha256
Валоданне адпаведным прыватным ключом — гэта тое, што даказвае, што партнёр трымае гэты сертыфікат, а дайджэст — гэта тое, як іншы бок вырашае, ці чакаў ён гэты сертыфікат наогул. Гэтае размежаванне — прычына, чаму гэты дызайн не стары парадак з агульным сакрэтам: агульны ключ аўтэнтыфікуе любога, хто ведае тыя ж байты, а замацаванне аўтэнтыфікуе адзін сертыфікат. Іншая прылада атрымлівае свой уласны запіс, а не копію таго ж сакрэту, што ёсць невялікай розніцай у файлах і вялікай — у маштабе шкоды.
Карта ўзаемная, а не сіметрычная
Кожнаму канцу патрэбныя дзве рэчы: свой прыватны ключ разам з сертыфікатам і заява пра тое, якія сертыфікаты партнёраў ён прыме. На кліенце гэтая заява — дайджэст сертыфіката сервера; на серверы — спіс дайджэстаў зарэгістраваных кліентаў. Афіцыйны прыклад для маленькай наладкі для Community 2.6 паказвае ўстройства з peer-fingerprint, і яго варта прачытаць перад выбарам гэтай мадэлі даверу для рэальнага разгортвання. Два напрамкі — не адзін перавернуты спіс, і яны не адмаўляюць адначасова.
| Verification direction | What is pinned | What never leaves that endpoint | How a wrong pin shows up |
|---|---|---|---|
| Client checks the server | One digest, for the server certificate | The server private key | The client aborts during the TLS handshake |
| Server checks the client | A digest per enrolled client | Each client private key | The server rejects the peer before a tunnel exists |
Даданне прылады рэдагуе спіс дазволаў на серверы, без капіравання прыватнага матэрыялу існуючага кліента і без перамяшчэння ключа сервера куды-небудзь. Два напрамкі таксама адмаўляюць незалежна, што карысна пры дыягностыцы: той бок, які зачыняе рукапоціск, і ёсць бок, чыё чаканне не апраўдалася. Калі кліент адхіляе сервер, дайджэст не супадае з прадстаўленым сертыфікатам. Калі сервер адхіляе кліента, дайджэст гэтага кліента адсутнічае ў спісе альбо кліент прадстаўляе іншы сертыфікат, чым зарэгістраваны.
Рэгістрацыя: як далучаецца новая прылада
Стварыце ключ і сертыфікат новай прылады там, дзе будзе жыць прыватны ключ, затым перанясіце толькі публічны артэфакт таму боку, якому трэба яго замацаваць. Перадайце чаканы дайджэст праз канал, якому вы ўжо давяраеце, і параўнайце поўны сертыфікат, а не знаёмае імя. Дайджэст, скапіяваны з таго ж неправеранага спампоўвання, што і сертыфікат, даказвае толькі тое, што два файлы ўзгадняюцца адзін з адным. Гэта праверка ўзгодненасці, а не праверка асобы, і гэта самы ціхі спосаб, якім гэты дызайн слабее.
На серверы даданне дайджэста — змена канфігурацыі, якая ідзе праз звычайны мэнэджар і суправаджаецца перападлучэннем. Пацвердзіце, што новая прылада падключаецца, а прылада, чый дайджэст выдалены, ужо не. Тэст, які пакрывае толькі станоўчы выпадак, пакідае спіс дазволаў неправераным, і гэта менавіта той стан, у якім вы будзеце праз шэсць месяцаў.
Абнаўленне — дарагі момант
Кожны сертыфікат сканчаецца, і новы сертыфікат мае новы дайджэст, нават калі ключ і імёны застаюцца тымі ж. Пад установай абнаўленне празрыстае для партнёраў, якія давяраюць гэтай установе; пад замацаваннем яно — падзея рэгістрацыі для кожнага партнёра, які замацоўвае сертыфікат.
Плануйце парадак да даты заканчэння, а не пасля яе. Размеркаваць новы дайджэст бакам, якія яго правяраюць, ужыць змену і толькі потым замяніць сертыфікат на канцы. Такі парадак не пакідае акна, у якім два бакі не згодныя наконт таго, які сертыфікат актуальны. Трымайце сам спіс пад пераглядам, бо замацаваны спіс назапашвае запісы прылад, выведзеных месяцы таму. Кожны састарэлы запіс — гэта асоба, якая ўсё яшчэ аўтэнтыфікуецца, калі яе ключ выжыве, таму выдаленне — гэта бяспекавая дзея, а не прыборка.
Што карта даверу не вырашае
Аўтэнтыфікацыя — гэта адзін слой, і замацаваная карта нічога не кажа пра пул адрасоў, прасоўваемыя маршруты, MTU шляху або палітыку фаеруола. Яны застаюцца асобнай канфігурацыяй з асобнымі рэжымамі збою. Тунель, які аўтэнтыфікуецца і не прапускае трафік, — гэта іншае расследаванне, чым той, што ніколі не ўзнімаецца.
Карта таксама не масштабуецца бясконца, і PKI на аснове ўстановы — гэта тое, да чаго прыходзяць большыя разгортванні. Гэтая перавага пра аперацыі, а не пра крыптаграфію, бо дадаваць і выводзіць асобы праз адну ўстанову танней, чым рэдагаваць спіс на кожным партнёры па меры росту флоту. Там, дзе рэалізацыя кліента не падтрымлівае опцыю, адказ — сумяшчальная мадэль даверу, якую дакументуе гэты кліент, або падтрыманая замена. Заглушэнне папярэджання пра праверку не дадае гэтай падтрымкі, і ўся каштоўнасць дызайну ў тым, што праверка ўсё яшчэ адбываецца.