Ru-WireGuard
Ru-WireGuard — былинный отечественный импортозамещённый форк некогда хипстерского, а ныне почти мейнстримного VPN-протокола WireGuard. Запилен в содружестве сумрачных гениев из BI.ZONE (эти которые типа секьюрити-эксперты и киберполигоны строят) и НПК «Криптонит» (эти которые совсем крипто-гики и научные сотрудники, возможно, в шарашке). Представляет собой попытку скрестить ежа с ужом, а именно — минималистичный и шустрый WireGuard с тяжеловесной, но сертифицированной отечественной криптографией.
Рождение Чуда[править]
Как гласит официальная легенда, где-то в конце декабря 2020 года, аккурат под ёлочку, исследовательское подразделение BI.ZONE и научные умы из «Криптонита» возжелали странного. Вместо того чтобы спокойно пить шампанское и резать оливье, они решили, что миру (читай: российскому регулятору и госзаказчику) не хватает ещё одного велосипеда, на этот раз криптографического.
Дескать, буржуйский WireGuard хорош всем: и код короткий (какие-то жалкие 3800 строк на тот момент, по сравнению с монстрами типа OpenVPN или IPsec), и дизайн простой, и от DoS-атак вроде как защищён, и даже формально верифицирован (что бы это ни значило для конечного юзера), и быстрый, аж сам Линус в ядро принял. Но есть один нюанс — использует он криптографию нескрепную, заморскую: Curve25519, ChaCha20-Poly1305, BLAKE2s… Сплошная бездуховность и криптоколониализм!
А тут как раз импортозамещение шагает по стране, санкции крепчают, Чебурнет не за горами. Ну как тут без отечественного аналога? Партия сказала «надо», комсомол ответил «есть»! За три месяца ударного труда (или сколько там они реально пилили?) спецы BI.ZONE наваяли черновик спецификации и даже несколько реализаций на разных языках, а «Криптонит» выступил в роли экспертов-консультантов, подсказав, какие именно ГОСТы куда прикрутить, чтобы компетентные органы одобрили.
Техномагия под грифом «Сделано у нас»[править]
Вместо изящных эллиптических кривых от DJB и потоковых шифров, в Ru-WireGuard завезли суровый набор отечественных криптоалгоритмов:
- ГОСТ Р 34.10-2012 для согласования ключей (алгоритм VKO, он же «Выработка Ключа Общего», на эллиптических кривых, конечно же, из ГОСТа).
- Блочный шифр «Кузнечик» (ГОСТ Р 34.12-2015). Just google it, как говорится. Звучит мило, но криптоаналитики спорят.
- Режим аутентифицированного шифрования MGM (Р 1323565.1.026-2019) для «Кузнечика». Потому что просто шифровать — неинтересно, надо ещё и аутентифицировать.
- Хеш-функция «Стрибог» (ГОСТ Р 34.11-2012). Тоже звучит грозно.
- HMAC и KDF (функция диверсификации ключей KDF_TREE) на базе всё того же «Стрибога». Чтобы два раза не вставать.
Особо доставляет раздел «Константы» в спецификации, где вместо лаконичных строк оригинала красуются монстры вроде `Noise_IKpsk2_GC256A_GOST_R_341112_256_WITH_KUZNYECHIK_MGM` (57 байт!) или `RU WireGuard v1 2020 zx2c4 Jason@zx2c4.com` (а вот автор оригинала в курсе, что его именем тут размахивают?). Сразу видно — серьёзный подход.
Кроме базовой версии, разработчики зачем-то осилили и пороговую (threshold) версию протокола. Это когда для расшифровки нужно собрать кворум из нескольких участников. Зачем это нужно в VPN — вопрос открытый. Возможно, для особо параноидальных сценариев, или просто потому что могли (и грант освоили?). Сами авторы туманно намекают на уязвимости HSM/TPM/SGX и что их пороговая криптография — это типа труъ альтернатива.
Реакция и Перспективы[править]
Результаты титанического труда были выложены на GitHub (спека, реализация на Go, клиент под Окошки). Все желающие могут форкнуть, изучить и даже запулить реквест. Правда, в README к Go-реализации честно предупреждают:
Warnings
- Maturity: The code is experimental. You must not use this in production
- Audit: The code is not audited
- Stability: Breaking changes are expected
- Performance: elliptic curve and MGM implementations are extremely slow
То есть, пользоваться этим (особенно в проде) категорически не рекомендуется, оно не аудировано, может сломаться в любой момент, а главное — ЧРЕЗВЫЧАЙНО МЕДЛЕННОЕ. Вся хвалёная производительность оригинального WireGuard помножена на ноль неоптимизированными реализациями ГОСТов на Go. Классика!
Кому же нужен этот Ru-WireGuard? Сами создатели говорят про «отечественные перспективные сетевые, распределенные и облачные технологии», «проекты в условиях импортозамещения». На практике это, скорее всего, означает тендеры, госконтракты и обязательное использование в госконторах и компаниях с госучастием, где ФСБ или ФСТЭК требуют сертифицированную криптографию.
Обычному анонимусу, желающему просто скрыть свой IP от провайдера или зайти на заблокированный сайт, этот ГОСТ-овый WireGuard нафиг не упал. Он медленный, почти проприетарный по духу (несмотря на открытые исходники, стандарт-то закрытый), и Большой Брат наверняка имеет к нему особый интерес. Так что продолжаем сидеть на оригинальном WireGuard или OpenVPN, пока РКН и до них не добрался.
А BI.ZONE и «Криптонит»? А они молодцы, освоили бюджеты, отчитались об успехах, получили профит. Капитализм, счастье, зашибись.