Ключът е маршрутът: Защо Verimesh работи на WireGuard
Много от нас са прекарали повече часа, отколкото бихме желали да признаем, наблюдавайки хора, които се опитват да установят IPsec тунел между две firewalls от различни производители. Всеки, който преживя VPN войните на 2000-те години, помни усещането: конфигурационен файл с четиридесет параметъра, половината от които трябваше да съвпадат точно с другата страна, и debug логове, които нищо не казваха, когато не го правеха.
След това през 2018 един разработчик, Jason Donenfeld, предостави WireGuard за включване в Linux ядрото, и Linus Torvalds, някой, за когото е известно, че не пестелит думите си, написа, че может да “се надева” да бъде включен скоро, наричайки го “произведение на изкуството” в сравнение с “ужасите на OpenVPN и IPSec”. Това е висока похвала. Той беше включен в mainline през 2020.
Така че когато Palo Alto Networks, която продава тежкотежните security устройства, които WireGuard мълчаливо прави да изглеждат преразмерени, публикува Cyberpedia обяснител, който похвала неговата малка база код, фиксирана модерна криптография и скорост, то това си струва внимание.
Криптираната mesh под Verimesh работи на WireGuard, и ние правим едно нещо отгоре му, което, доколкото знам, никой друг не прави: ключът на тунела се производи от същия корен като идентичността на приложението.
Това, което Palo Alto одобрява
WireGuard не отговаря на пакети, които не може да удостовери. Изпратете сондиране от неизвестен ключ и не получавате нищо обратно: без баннер, без отговор, дори без слушащ socket за отпечатване. За сканиране на портове мрежата просто не съществува, и не можете да нападнете повърхност, която не можете да намерите.
След това има размера на кода. WireGuard е приблизително 4 000 реда код. OpenVPN е около 100 000. IPsec, като се брои разпространението на стандарти и имплементации, е по-близо до 400 000. База код, която можете да прочетете в един следобед, е такава, която един човек може наистина да одити. И одитируемостта в този мащаб е сама по себе си свойство на сигурност, което не можете да приложите отново към нещо два порядъка по-голямо.
Криптографията е фиксирана. Без конфигурируеми набори от цифри, без договаряне на алгоритми, без “нека да се понижим до това, което и двамата поддържаме” стъпка. Просто Curve25519 за обмена на ключове, ChaCha20-Poly1305 за данните, BLAKE2s за хеширане, Noise_IKpsk2 който го държи заедно. Цялото семейство на атаки с понижаване не съществува тук, защото няма нищо за договаряне.
И WireGuard маршрутизира по ключ. Неговата крипто-ключева таблица на маршрутизиране свързва публичния ключ на всеки peer с IP диапазоните, които този peer може да използва. Изходящо, адресът на дестинацията избира ключа на peer, който избира ключа на сесията; входящо, декриптиран пакет се приема само ако неговата източник попада във възложения диапазон на този peer. Няма отделна “кой си ти” проверка, прикрепена до “какво можеш да изпратиш” проверка. Публичният ключ е маршрутът. Идентичност и достъпност се оказват едно и също нещо.
Един корен, не два
В почти всяко WireGuard разгръщане, което съм видял, ключовете живеят собствен живот. Някой пуска wg genkey, раздава публичната половина, файлова приватната половина някъде, и завършва с мрежов ключ, който няма нищо общо с идентичността, която приложението отгоре му вярва. Два корена на доверие, съгласувани чрез електронна таблица и добри намерения.
В Verimesh има един корен. Curve25519 ключовете на тунела на всяка организация са закрепени в нейния собствен Decentralized Key Management (DKMS) материал. Същата инфраструктура за идентичност, на която слоят на приложението вече работи. Никой не ги издава. Няма издател на сертификати в пътеката, който да решава кои тунели са позволени, и няма празнина между кой си ти на мрежовия слой и кой си ти над него.
Тъй като ключовете проследяват назад към собствения ключов материал на организацията, всеки тунел може да бъде проверен спрямо логът на ключови события: можете да попитате коя идентичност донесе кой тунел и кога, и да проверите отговора криптографски, вместо да верувате на собствения доклад на сървъра. Когато ключовете се ротират, те се ротират в стъпка с DKMS пред-ротация (построена на KERI), така че идентичността на тунела преживява жизнения цикъл на ключа, вместо да се скъша, когато ключ се промени. И тъй като цялото нещо е самостойно разместено, никой посредник не седи в средата, притежавайки потока на данни.
Значи защо просто не използвам mTLS, което вече свързва идентичност в handshake на транспорта?
Защото разделянето на слоевете е точката. WireGuard премества удостоверени, криптирани пакети между пиърови, които притежават правилния ключ, и след това спира. Той не знае какво е оттегляне на съгласие, коя авторизация носи съобщение, или дали удостоверение е отозвано. Тази логика принадлежи над жицата, в DKMS. mTLS има тенденция да издърпа авторизация надолу в handshake на транспорта, докато вече не можете да одитирате двамата отделно. Ние ги разделяме нарочно и ги градим на същия корен.
Суверен надолу до жицата
Стекът е Open Source от начало до край. WireGuard е в ядрото; слоят DKMS отгоре му е наш, публикуван под AGPLv3. Никой SaaS control plane не седи в пътеката. Никой трети страна, която може да бъде призвана за ключовете, никой мълчаливо логиращ кой говори с кого. За швейцарската здравеопазване, където данните не могат да напуснат страната и доверието не може да напусне институцията, това трябва да се издържи надолу до транспорта. Суверенност, която спира на слоя на приложението и наема своя мрежова тръба от някой друг, не е наистина суверенност.
Което търгуваме
Никоя архитектура не е безплатна, и хората, които управляват тези системи, могат да я помирисат, когато преправяте като че ли е другояче. WireGuard поиска три търговии, за които ние сме прозрачни:
Първо, това е слой-3 тунел. Той носи IP пакети, не потоци, така че не получавате родното мултиплексиране на потоци, което TLS- или QUIC-базираният транспорт ви дава безплатно. Всичко, което се нуждае от мултиплексиране, го гради над тунела. За mesh, носещ удостоверен обмен между институции, това е вероятно правото място за него, но то е реално ограничение, не не-проблем.
Второ, повърхността на конфигурация на peer растат с mesh. WireGuard не доставя control plane, която раздава и отзова пиърове централно; всеки възел знае пиъровете, с които говори. В малък, управляван mesh на хъбове и възли, това е функция. Нищо централно за компрометиране. В мащабна експлоатация това становява реална работа, и администриране на ключовете чрез DKMS е това, което го держи от срива в електронната таблица кошмара от по-рано.
Трето, то е по-младо от IPsec. Palo Alto поставя това на списъка на минусите и има смисъл. Но нещото, което прави WireGuard младо, е същото нещо, което го прави одитируем: Donenfeld хвърли тридесет години събрана опционалност и започна отново. Това е вид търговия, която правим с удоволствие.
Квантовото въпрос
WireGuard има опционален пред-делен-ключ слой, който смесва симетричен тайна в handshake. Това купува едно нещо: трафик, уловен днес, не става четим по-късно дори ако обменът на елипсична крива в крайна сметка е нарушен. Атаката на съхранение-сега-дешифриране-по-късно спира да работи. Това не е същото като безопасност след-квант в NIST смисъл, и ние сме осведомени за това. То е ефективна надстройка.
Маршрутът покрай надстройката има име: Rosenpass, Open Source проект, който пуска истински post-quantum обмен на ключе пред този пред-делен-ключ слот. Това е интеграционен път за mesh, не нещо, което Verimesh доставя днес.
То, което е наше, е това, което се случва след. Тъй като ключовете на тунела се производят от DKMS, приемане на post-quantum алгоритми е рутинна ротация на ключ на съществуващия логът на ключови събития. Не принудена, всичко-наведнъж пре-издаване на сертификат във всяко имущество. CA-издадено разместване на транспорт не получава да каже това.
Един корен, от жицата нагоре
Mesh, където мрежовият ключ и идентичност на приложението растат от същия DKMS материал, затваря шева, където седят повечето интересни атаки и почти всички скучни одит провали: празнината между кой мрежата си мисли, че си ти и кой приложението си мисли, че си ти. WireGuard ни дава транспорт прост достатъчно да доверим; DKMS му дава същата идентичност, която вече всичко останало в Verimesh вярва.
Това е транспортът под Verimesh разгръщане с HIN, под всичко в Trust Architecture, където пълния път от ключ до тунел до одитиран съобщение е изложен край до край. То, което работи отгоре е Verimesh себе си.
Добрата тръба е видът, който никога не трябва да мислиш. Това е цялата идея.