X-Git-Url: http://www.git.cypherpunks.ru/?a=blobdiff_plain;f=doc%2Ffaq.ru.texi;h=d89c4293acf1a4a9ec6c71c30903d5bb60e9d24a;hb=cd2eb69447506141d9491961160d5f2b375f141a;hp=2023b76654c4cc14480f86a575a56bd4563af561;hpb=5eca201549d542a6ba1b785d49d4a87bb912b1d4;p=govpn.git diff --git a/doc/faq.ru.texi b/doc/faq.ru.texi index 2023b76..d89c429 100644 --- a/doc/faq.ru.texi +++ b/doc/faq.ru.texi @@ -1,31 +1,54 @@ @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 языка: проверки границ массивов, сборщик мусора и конкурентные примитивы. Он @@ -33,41 +56,73 @@ Go очень легко читается, поддаётся ревью и по более чем 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 протоколах) @@ -76,11 +131,33 @@ GoVPN трафике (так же как и в TLS, IPsec, SSH и других V происходить в сети. Без 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: очень +удобно сохранить много клиентов, имеющих схожие настройки, в одном +конфигурационном файле.