@node ЧАВО
-@unnumbered Часто задаваемые вопросы
+@section Часто задаваемые вопросы
-@table @asis
+@menu
+* Почему вы не используете TLS?: Почему не TLS.
+* Почему вы не используете SSH?: Почему не SSH.
+* Почему вы не используете IPsec?: Почему не IPsec.
+* Почему GoVPN написан на Go?: Почему Go.
+* Почему вы аутентифицируете по парольной фразе?: Почему парольные фразы.
+* Почему вся настройка сети делается вручную?: Почему ручная настройка сети.
+* Почему нет поддержки OS X или Windows?: Почему нет поддержки проприетарных ОС.
+* Что вы подразумеваете под совершенной прямой секретностью?: Что такое PFS.
+* Что вы подразумеваете когда говорите что клиенты анонимны?: Что такое анонимность.
+* Что вы подразумеваете под цензуроустойчивостью?: Что такое цензуроустойчивость.
+* Когда я должен использовать нешифрованный режим?: Когда нешифрованный режим.
+* Когда я должен использовать noise опцию?: Когда noise опцию.
+* Когда я должен использовать опцию синхронизации времени?: Когда синхронизацию времени.
+* Могу ли я сделать DoS (отказ в обслуживании) демона?: Можно ли DoS демона.
+* Почему YAML для конфигурации?: Почему YAML.
+@end menu
-@item Почему вы не используете TLS?
-Это сложный протокол. Он использует Аутентификацию-затем-Шифрование
-порядок использования алгоритмов -- это не безопасно. Более того, его
-библиотеки огромный и сложны для чтения, ревью и анализа.
+@node Почему не TLS
+@subsection Почему вы не используете TLS?
-@item Почему вы не используете SSH?
-Его первые версии использовали Аутентификацию-и-Шифрование порядок,
-однако более поздние поддерживают даже ChaCha20-Poly1305 алгоритм. Его
-исходный код не тривиален и достаточно большой для чтения и ревью.
-OpenSSH не поддерживает сильные протоколы аутентификации по паролю с
-нулевым неразглашением.
+@itemize
+@item Это сложный плохо спроектированный протокол.
+@item Он использует Аутентификацию-затем-Шифрование порядок
+использования алгоритмов.
+@item Его библиотеки огромны и сложны для чтения, ревью и анализа.
+@end itemize
-@item Почему вы не используете IPsec?
-Это достаточно хороший протокол, поддерживаемый большинством ОС. Но в
-нём нет сильного протокола аутентификации по паролю с нулевым
+@node Почему не SSH
+@subsection Почему вы не используете SSH?
+
+@itemize
+@item Его первые версии использовали Аутентификацию-и-Шифрование
+порядок, однако более поздние поддерживают даже ChaCha20-Poly1305
+алгоритм.
+@item OpenSSH не поддерживает сильные протоколы аутентификации по паролю
+с нулевым неразглашением.
+@end itemize
+
+@node Почему не IPsec
+@subsection Почему вы не используете IPsec?
+
+В нём нет сильного протокола аутентификации по паролю с нулевым
неразглашением и, снова, его код сложно читать.
-@item Почему вы не используете XXX?
-По тем же самым причинам: большинство ПО не предоставляют сильных
-протоколов аутентификации, высокой криптографической безопасности и,
-большая часть, написана на C -- на нём сложно правильно писать.
+@node Почему Go
+@subsection Почему GoVPN написан на Go?
-@item Почему GoVPN написан на Go?
Go очень легко читается, поддаётся ревью и поддержке. Он усложняет
написание сложного кода. Он предоставляет всё что нужно для C языка:
проверки границ массивов, сборщик мусора и конкурентные примитивы. Он
более чем 750 Mbps пропускной способности), но большую надёжность и
гораздо меньше строк кода.
-@item Почему вы аутентифицируете по парольной фразе?
-Человек способ запоминать достаточно длинные парольные фразы (не
+@node Почему парольные фразы
+@subsection Почему вы аутентифицируете по парольной фразе?
+
+Человек способен запоминать достаточно длинные парольные фразы (не
пароли): 100-200 символов, что даёт возможность использовать её как
высокоэнтропийный ключ. Вам нужно доверять только себе, не аппаратному
токену или другому устройству хранения. Это удобно.
-@item Почему вся настройка сети делается вручную?
+@node Почему ручная настройка сети
+@subsection Почему вся настройка сети делается вручную?
+
Потому-что существует так много вариантов использования, конфигураций и
-установок, что или я поддерживаю их всех, или использую громоздкие
+установок, что или я поддерживаю их все, или использую громоздкие
протоколы типы PPP, или просто даю право выбора администратору. VPN это
всего-лишь прослойка.
-@item Почему нет поддержки OS X или Windows?
+@node Почему нет поддержки проприетарных ОС
+@subsection Почему нет поддержки OS X или Windows?
+
Любые проприетарные системы с закрытым исходным кодом не дают
возможности управлять компьютером. Вы не можете безопасно использовать
всё что касается криптографии без контроля над нижестоящим
вычислительным устройством. Выбирайте другую операционную систему.
-@item Что вы подразумеваете под совершенной прямой секретностью?
+@node Что такое PFS
+@subsection Что вы подразумеваете под совершенной прямой секретностью?
+
Что вы не можете дешифровать ранее перехваченный трафик если ваши
долгоживущие ключи будут скомпрометированы. Это свойство работает на
уровне сессии: оно не спасёт если сессионный ключ скомпрометирован из
памяти.
-@item Что вы подразумеваете когда говорите что клиенты анонимны?
+@node Что такое анонимность
+@subsection Что вы подразумеваете когда говорите что клиенты анонимны?
+
Что третьей лицо не может отличить одного клиента от другого, смотря на
трафик (транспортный или рукопожатия).
-@item Что вы подразумеваете под цензуроустойчивостью?
+@node Что такое цензуроустойчивость
+@subsection Что вы подразумеваете под цензуроустойчивостью?
+
Невозможность определить GoVPN ли это трафик или просто
@code{cat /dev/urandom | nc somehost}. Если вы не можете отличить один
вид трафика от другого, то при цензуре ваше единственный вариант это
заблокировать все его виды.
-@item Когда я должен использовать @ref{Noise, noise} опцию?
+@node Когда нешифрованный режим
+@subsection Когда я должен использовать @ref{Encless, нешифрованный режим}?
+
+Если вы работаете под юрисдикциями где суды могут привлечь вас к
+ответственности за использование шифрования или могут вынудить вас
+как-либо выдать ваши ключи шифрования (хотя сессионные ключи шифрования
+генерируются каждую сессию). В большинстве случаев, эти суды не могут
+требовать аутентификационные ключи или ключи для ЭЦП.
+
+@strong{Не позволяйте} названию режима вас смутить: он всё-равно
+обеспечивает конфиденциальность и аутентичность передаваемых данных! Но
+имейте в виду, что этот режим требователен к ресурсам и трафику и пока
+работает только в TCP режиме.
+
+Если всё что не может быть прочитано кем-угодно считается шифрованием,
+то этот режим вам не поможет. Представьте что вы говорите на другом
+иностранном языке или просто используете другую схему кодирования данных.
+
+@node Когда noise опцию
+@subsection Когда я должен использовать @ref{Noise, noise} опцию?
+
В большинстве случаев она вам не нужна без включённого
@ref{CPR, постоянного по скорости трафика} (CPR). Без CPR и шума, в
GoVPN трафике (так же как и в TLS, IPsec, SSH и других VPN протоколах)
происходить в сети. Без CPR опции вы можете только сказать в online ли
кто или нет -- ни больше, ни меньше.
-@item Могу ли я сделать DoS (отказ в обслуживании) демона?
+@node Когда синхронизацию времени
+@subsection Когда я должен использовать опцию @ref{Timesync, синхронизации времени}?
+
+Без этой опции, если кто-либо перехватит первоначальный пакет
+рукопожатия от настоящего клиента, то он сможет его повторить и получить
+пакет рукопожатия от сервера в ответ. Это может быть использовано для
+определения известен ли определённый пользователь серверу и то что мы
+имеем дело именно с GoVPN сервером. Timesync опция заставляет добавлять
+временные штампы в пакеты рукопожатия, разрешая быть пакетам
+действительными только в указанном временном окне. Если вы имеете более
+или менее синхронизированные часы между вашими клиентами и сервером, то
+можете всего использовать эту опцию.
+
+@node Можно ли DoS демона
+@subsection Могу ли я сделать DoS (отказ в обслуживании) демона?
+
Каждый транспортный пакет первым делом аутентифицируется очень быстрым
UMAC алгоритмом -- в большинстве случаев потребление ресурсов TCP/UDP
слоёв будет выше чем проверка UMAC. Каждое сообщение рукопожатия
обрабатывается только если зашифрованный @ref{Identity, идентификатор}
клиента найден: он использует быстрый PRP без потребления энтропии.
-@end table
+@node Почему YAML
+@subsection Почему YAML для конфигурации?
+
+Есть не так много хорошо известных форматов позволяющих комментировать,
+легко редактировать людьми (XML совсем не дружелюбен к человеку, JSON
+более менее). Возможно самое важное свойство это шаблоны YAML: очень
+удобно сохранить много клиентов, имеющих схожие настройки, в одном
+конфигурационном файле.