Дакумент пратаколу — гэта кантракт паміж рэалізацыямі, і ўважлівае чытанне паказвае, што два адпаведныя бакі будуць абменьваць і якія ўласцівасці распрацоўшчыкі мелі намер забяспечыць. Ён не кажа, які бінарны файл працуе на серверы, да якога вы падключаецеся, як гэты сервер наладжаны і што потым адбываецца з вашым уліковым запісам. Гэта тры розныя віды доказаў, і стаўленне да спецыфікацыі як да ўсіх трох адначасова — гэта тое, з чаго назва пратаколу пачынае рабіць працу, якую не можа. Раздзяленне гэтых трох і ёсць сутнасць практыкавання.

Дакумент — гэта пачатак аргументу, а не яго выснова.

Што дакумент насамрэч вызначае

Для WireGuard апісанне пратаколу вызначае рукапоцісканне Noise IK, фіксаваны набор прымітываў, структуры паведамленняў і транспартнае афармленне, якое далей пераносіць пакеты. Для IKEv2 параўнальны дакумент — RFC 7296, які вызначае абмены, карысныя нагрузкі і ўзгадненне прапаноў. У абодвух выпадках абсяг дакладны: паведамленні, машына станаў і дапушчэнні, пры якіх выконваюцца мэты бяспекі.

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

Дзе заканчваюцца гарантыі

Фармальны аналіз адказвае на пытанне пра мадэль. Праца па верыфікацыі WireGuard выкарыстоўвае сімвалічную мадэль у даказніку Tamarin, які можа паказаць, што дызайн супрацьстаіць пэўным атакам пры яго дапушчэннях; ён не паказвае, што пастаўленая рэалізацыя ў прасторы карыстальніка не мае памылкі бяспекі памяці. Менавіта ў гэтым разрыве паміж мадэллю і машынай жывуць рэальныя інцыдэнты. Чытаць доказ як сертыфікат рэалізацыі — гэта памылка катэгорыі.

Перадавая сакрэтнасць ілюструе тую ж мяжу. Уласцівасць залежыць ад знішчэння ключоў так, як мае на ўвазе пратакол, а гэта ўласцівасць рэалізацыі і яе асяроддзя, а не фармату паведамлення. Дызайн, які прадугледжвае сціранне, не можа патрабаваць яго на платформе, што скідвае памяць на дыск.

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

Прасочвайце байты да самай зборкі

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

openvpn --version | head -3
wg --version
dpkg -l | grep -E 'openvpn|wireguard|libssl'
ss -lunp | grep -E '1194|51820'
sha256sum ./wireguard-tools_1.0.20210914_amd64.deb

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

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

Трымайце аперацыйныя практыкі асобна

Уліковыя запісы, плацежныя даныя і звароты ў падтрымку — гэта рашэнні аператара, якія не абмяжоўвае ніякі тэкст пратаколу. Аўдытарская справаздача ахоплівае названыя кампаненты ў заяўленых межах, а палітыка прыватнасці апісвае намеры і практыкі; ні адно не замяняе другое, і ні адно не з’яўляецца крыптаграфічным сцвярджэннем.

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

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