10-го августа стало известно о том, что исходный код VPN-протокола Lightway опубликован под лицензией GPL версии 2. За разработкой протокола стоит компания ExpressVPN, которая, как несложно догадаться, предлагает VPN-услуги. Независимый аудит реализации сделала компания Cure53, занимающаяся кибербезопасностью, и дала высокую оценку качеству кодовой базы. Тем не менее, в результате аудита были выявлены несколько уязвимостей, которые уже исправлены. Таким образом, к безопасности Lightway претензий нет. А что касается производительности, то компания-разработчик сравнивает свое детище с известной реализацией VPN под названием OpenVPN, но очень не охотно вспоминает в этом контексте о WireGuard. И здесь пользователи негодуют, а компания не дает четких ответов. Поэтому предлагаю разобраться во всем по порядку. Читайте о результатах моего расследования ниже или смотрите в ролике (отмотайте на 02:13, чтобы сразу начать с этой темы).
В отличии от Lightway, появление WireGuard было вполне обосновано. Дело в том, что OpenVPN на протяжении многих лет оставался полярным свободным решением для построения виртуальных частных сетей, но скорость этого решения оставляла желать лучшего, а сложность реализации из-за раздутой кодовой базы осложняла аудит. Так, назрела необходимость создать новое свободное решение, которое было бы компактным и быстрым. Этим решением стал WireGuard, разработанный исследователем безопасности Джейсоном Доненфилдом (Jason A. Donenfeld), который, в свою очередь, представляет компанию Edge Security.
WireGuard задуман как решение, работающее в пространстве ядра. Тем не менее, там, где ядерной поддержки пока нет может использоваться кросс-платформенная реализация в пространстве пользователя, но производительность в таком случае будет очевидно ниже, чем у нативного решения, работающего на уровне ядра. (Напомню, что в таких случаях максимальной производительности можно добиться только за счет исключения операций переключения контекста и копирования содержимого пакетов из ядра в пространство пользователя.) Но разработчик не ищут легких путей и предлагают ядерную поддержку своего протокола во все популярные операционные системы. К примеру, 2-го августа Доненфилд представил проект WireGuardNT, который является портом WireGuard на ядро Windows.
Что касается Lightway, то это решение появилось на свет потому, что компанию ExpressVPN, которая, напомню, стоит за разработкой этого протокола, не устроил WireGuard. Клиенты компании на протяжении долгого времени просили поддержку WireGuard, но компания отвечала на это лишь тем, что этот протокол был разработан без оглядки на конфиденциальность и безопасность. К примеру, вот как вице-президент компании Гарольд Ли ответил на вопрос «Почему не WireGuard?»:
Вариант типа WireGuard, который мы очень уважаем, не был, на наш взгляд, спроектирован для больших VPN-сетей, в которых во главу угла ставится конфиденциальность и безопасность. Таким образом, мы разработали Lightway, чтобы вам не пришлось идти на компромиссы в плане скорости, конфиденциальности, безопасности или удобства. И мы действительно считаем, что он включает все из перечисленного.
В качестве подтверждения своим словам ExpressVPN также указывала на секцию «Work in Progress» на главной странице WireGuard, где говорилось, что работа еще не окончена и код еще не проходил аудит безопасности. Других доказательств своих слов компания не представляла. Стоит заметить, что 9-го апреля 2020-го этот раздел с сайта пропал, но разработка нового протокола судя по всему уже шла полным ходом.
Lightway получился полной противоположностью WireGuard: закрытый и работающий только в пространстве пользователя. Предложив в качестве альтернативы закрытое решение, ExpressVPN как будто бы посмеялась над самой собой: компания упрекала WireGuard в том, что тот был разработан без оглядки на конфиденциальность и безопасность, но при этом ExpressVPN выкатила закрытое решение, к которому невольно возникали те же вопросы по поводу конфиденциальности и безопасности. Таким образом, компания приняла решение открыть исходный код своей реализации и опубликовать его под свободной лицензией.
Что касается работы в пространстве пользователя, то здесь Гарольд сказал, что когда они разрабатывали Lightway, то приняли осознанное решение не помещать его в пространство ядра. Вот пара причин, которые назвал Гарольд.
Во-первых, они хотели, чтобы Lightway разделял как можно больше кода между платформами. Очевидно, что реализация протокола в пространстве ядра более трудозатратная, т.к. у каждого ядра свои особенности, тогда как в пространстве пользователя плюс-минус все унифицировано и можно без труда создать реализацию, переносимую на уровне исходного кода.
Во-вторых, в реализации протокола используется встраиваемая SSL/TLS-библиотека под названием wolfSSL, которая, очевидно, работает в пространстве пользователя. Эту библиотеку в компании хотели видеть в качестве основы своего протокола.
Реализация протокола в пространстве ядра будет быстрее, чем реализация протокола в пространстве пользователя, поэтому именно WireGuard претендует на звание самого быстрого свободного решения в области VPN. Что касается безопасности, то первой ядерной реализацией этого протокола стал модуль ядра Linux, который успешно прошел рецензирования и был принят в основное дерево исходных текстов ядра. Он разрабатывался специалистом в области безопасности и его код изучался и продолжает изучаться другими специалистами в области безопасности. Подход WireGuard более трудозатратен по сравнению с Lightway, но именно эти дополнительные затраты и позволяют добиться лучшей производительности. ExpressVPN, в свою очередь, не скрывает, что хочет сильно удешевить свое решение, но в то же время даже не делает намека на то, что это негативно скажется на производительности, что, на мой взгляд, немного не честно. Тем не менее, от еще одной свободной альтернативы в области VPN уж точно никому хуже не станет. Но надеюсь, что в недалеком будущем ExpressVPN подключится к разработки и аудиту WireGuard, и добавит поддержку этого протокола для своих клиентов.
Что предпочитаете вы, OpenVPN или WireGuard? Есть планы попробовать Lightway или вы уже его счастливый пользователь?