Это сложный протокол. Он использует Аутентификацию-затем-Шифрование порядок использования алгоритмов – это не безопасно. Более того, его библиотеки огромный и сложны для чтения, ревью и анализа.
Его первые версии использовали Аутентификацию-и-Шифрование порядок, однако более поздние поддерживают даже ChaCha20-Poly1305 алгоритм. Его исходный код не тривиален и достаточно большой для чтения и ревью. OpenSSH не поддерживает сильные протоколы аутентификации по паролю с нулевым неразглашением.
Это достаточно хороший протокол, поддерживаемый большинством ОС. Но в нём нет сильного протокола аутентификации по паролю с нулевым неразглашением и, снова, его код сложно читать.
По тем же самым причинам: большинство ПО не предоставляют сильных протоколов аутентификации, высокой криптографической безопасности и, большая часть, написана на C – на нём сложно правильно писать.
Go очень легко читается, поддаётся ревью и поддержке. Он усложняет написание сложного кода. Он предоставляет всё что нужно для C языка: проверки границ массивов, сборщик мусора и конкурентные примитивы. Он обеспечивает меньшую производительность (хотя на моём ноутбуке даёт более чем 750 Mbps пропускной способности), но большую надёжность и гораздо меньше строк кода.
Человек способ запоминать достаточно длинные парольные фразы (не пароли): 100-200 символов, что даёт возможность использовать её как высокоэнтропийный ключ. Вам нужно доверять только себе, не аппаратному токену или другому устройству хранения. Это удобно.
Потому-что существует так много вариантов использования, конфигураций и установок, что или я поддерживаю их всех, или использую громоздкие протоколы типы PPP, или просто даю право выбора администратору. VPN это всего-лишь прослойка.
Любые проприетарные системы с закрытым исходным кодом не дают возможности управлять компьютером. Вы не можете безопасно использовать всё что касается криптографии без контроля над нижестоящим вычислительным устройством. Выбирайте другую операционную систему.
Что вы не можете дешифровать ранее перехваченный трафик если ваши долгоживущие ключи будут скомпрометированы. Это свойство работает на уровне сессии: оно не спасёт если сессионный ключ скомпрометирован из памяти.
Что третьей лицо не может отличить одного клиента от другого, смотря на трафик (транспортный или рукопожатия).
Невозможность определить GoVPN ли это трафик или просто
cat /dev/urandom | nc somehost
. Если вы не можете отличить один
вид трафика от другого, то при цензуре ваше единственный вариант это
заблокировать все его виды.
Если вы работаете под юрисдикциями где суды могут привлечь вас к ответственности за использование шифрования или могут вынудить вас как-либо выдать ваши ключи шифрования (хотя сессионные ключи шифрования генерируются каждую сессию). В большинстве случаев, эти суды не могут требовать аутентификационные ключи или ключи для ЭЦП. Не позволяйте названию режима вас смутить: он всё-равно обеспечивает конфиденциальность и аутентичность передаваемых данных! Но имейте в виду, что этот режим требователен к ресурсам и трафику и пока работает только в TCP режиме.
Если всё что не может быть прочитано кем-угодно считается шифрованием, то нет, этот режим вам не поможет. Представьте что вы говорите на другом иностранном языке или просто используете другую схему кодирования данных.
В большинстве случаев она вам не нужна без включённого постоянного по скорости трафика (CPR). Без CPR и шума, в GoVPN трафике (так же как и в TLS, IPsec, SSH и других VPN протоколах) утекает информация о размерах и временных характеристиках пакетов нижележащего уровня. Вы можете делать анализ трафика и предполагать что происходить в сети. Без CPR опции вы можете только сказать в online ли кто или нет – ни больше, ни меньше.
Каждый транспортный пакет первым делом аутентифицируется очень быстрым UMAC алгоритмом – в большинстве случаев потребление ресурсов TCP/UDP слоёв будет выше чем проверка UMAC. Каждое сообщение рукопожатия обрабатывается только если зашифрованный идентификатор клиента найден: он использует быстрый PRP без потребления энтропии.
Есть не так много хорошо известных форматов позволяющих комментировать, легко редактировать людьми (XML совсем не дружелюбен к человеку, JSON более менее). Возможно самое важное свойство это шаблоны YAML: очень удобно сохранить много клиентов, имеющих схожие настройки, в одном конфигурационном файле.