From 5eca201549d542a6ba1b785d49d4a87bb912b1d4 Mon Sep 17 00:00:00 2001 From: Sergey Matveev Date: Fri, 13 Nov 2015 21:23:06 +0300 Subject: [PATCH] FAQ section Signed-off-by: Sergey Matveev --- doc/faq.ru.texi | 86 +++++++++++++++++++++++++++++++++++++++++++++++++ doc/faq.texi | 83 +++++++++++++++++++++++++++++++++++++++++++++++ doc/govpn.texi | 4 +++ 3 files changed, 173 insertions(+) create mode 100644 doc/faq.ru.texi create mode 100644 doc/faq.texi diff --git a/doc/faq.ru.texi b/doc/faq.ru.texi new file mode 100644 index 0000000..2023b76 --- /dev/null +++ b/doc/faq.ru.texi @@ -0,0 +1,86 @@ +@node ЧАВО +@unnumbered Часто задаваемые вопросы + +@table @asis + +@item Почему вы не используете TLS? +Это сложный протокол. Он использует Аутентификацию-затем-Шифрование +порядок использования алгоритмов -- это не безопасно. Более того, его +библиотеки огромный и сложны для чтения, ревью и анализа. + +@item Почему вы не используете SSH? +Его первые версии использовали Аутентификацию-и-Шифрование порядок, +однако более поздние поддерживают даже ChaCha20-Poly1305 алгоритм. Его +исходный код не тривиален и достаточно большой для чтения и ревью. +OpenSSH не поддерживает сильные протоколы аутентификации по паролю с +нулевым неразглашением. + +@item Почему вы не используете IPsec? +Это достаточно хороший протокол, поддерживаемый большинством ОС. Но в +нём нет сильного протокола аутентификации по паролю с нулевым +неразглашением и, снова, его код сложно читать. + +@item Почему вы не используете XXX? +По тем же самым причинам: большинство ПО не предоставляют сильных +протоколов аутентификации, высокой криптографической безопасности и, +большая часть, написана на C -- на нём сложно правильно писать. + +@item Почему GoVPN написан на Go? +Go очень легко читается, поддаётся ревью и поддержке. Он усложняет +написание сложного кода. Он предоставляет всё что нужно для C языка: +проверки границ массивов, сборщик мусора и конкурентные примитивы. Он +обеспечивает меньшую производительность (хотя на моём ноутбуке даёт +более чем 750 Mbps пропускной способности), но большую надёжность и +гораздо меньше строк кода. + +@item Почему вы аутентифицируете по парольной фразе? +Человек способ запоминать достаточно длинные парольные фразы (не +пароли): 100-200 символов, что даёт возможность использовать её как +высокоэнтропийный ключ. Вам нужно доверять только себе, не аппаратному +токену или другому устройству хранения. Это удобно. + +@item Почему вся настройка сети делается вручную? +Потому-что существует так много вариантов использования, конфигураций и +установок, что или я поддерживаю их всех, или использую громоздкие +протоколы типы PPP, или просто даю право выбора администратору. VPN это +всего-лишь прослойка. + +@item Почему нет поддержки OS X или Windows? +Любые проприетарные системы с закрытым исходным кодом не дают +возможности управлять компьютером. Вы не можете безопасно использовать +всё что касается криптографии без контроля над нижестоящим +вычислительным устройством. Выбирайте другую операционную систему. + +@item Что вы подразумеваете под совершенной прямой секретностью? +Что вы не можете дешифровать ранее перехваченный трафик если ваши +долгоживущие ключи будут скомпрометированы. Это свойство работает на +уровне сессии: оно не спасёт если сессионный ключ скомпрометирован из +памяти. + +@item Что вы подразумеваете когда говорите что клиенты анонимны? +Что третьей лицо не может отличить одного клиента от другого, смотря на +трафик (транспортный или рукопожатия). + +@item Что вы подразумеваете под цензуроустойчивостью? +Невозможность определить GoVPN ли это трафик или просто +@code{cat /dev/urandom | nc somehost}. Если вы не можете отличить один +вид трафика от другого, то при цензуре ваше единственный вариант это +заблокировать все его виды. + +@item Когда я должен использовать @ref{Noise, noise} опцию? +В большинстве случаев она вам не нужна без включённого +@ref{CPR, постоянного по скорости трафика} (CPR). Без CPR и шума, в +GoVPN трафике (так же как и в TLS, IPsec, SSH и других VPN протоколах) +утекает информация о размерах и временных характеристиках пакетов +нижележащего уровня. Вы можете делать анализ трафика и предполагать что +происходить в сети. Без CPR опции вы можете только сказать в online ли +кто или нет -- ни больше, ни меньше. + +@item Могу ли я сделать DoS (отказ в обслуживании) демона? +Каждый транспортный пакет первым делом аутентифицируется очень быстрым +UMAC алгоритмом -- в большинстве случаев потребление ресурсов TCP/UDP +слоёв будет выше чем проверка UMAC. Каждое сообщение рукопожатия +обрабатывается только если зашифрованный @ref{Identity, идентификатор} +клиента найден: он использует быстрый PRP без потребления энтропии. + +@end table diff --git a/doc/faq.texi b/doc/faq.texi new file mode 100644 index 0000000..a3269f3 --- /dev/null +++ b/doc/faq.texi @@ -0,0 +1,83 @@ +@node FAQ +@unnumbered Frequently Asked Questions + +@table @asis + +@item Why do not you use TLS? +It is complicated protocol. It uses Authenticate-then-Encrypt ordering +of algorithms -- it is not secure. Moreover its libraries are huge and +hard to read, review and analyze. + +@item Why do not you use SSH? +Its first protocol versions used A-a-E ordering, however later ones +supports even ChaCha20-Poly1305 algorithms. But its source code is not +so trivial and rather big to read and review. OpenSSH does not support +strong zero-knowledge password authentication. + +@item Why do not you use IPsec? +It is rather good protocol, supported by all modern OSes. But it lacks +strong zero-knowledge password authentication and, again, its code is +hard to read. + +@item Why do not you use XXX? +For the same reasons: most of software do not provide strong password +authentication, high cryptographic protocol security, and most of this +software is written in C -- it is hard to write right on it. + +@item Why GoVPN is written on Go? +Go is very easy to read, review and support. It makes complex code +writing a harder task. It provides everything needed to the C language: +array bounds checking, garbage collection and concurrency primitives. It +provides lesser performance (however my setup on the notebook gives more +than 750 Mbps of throughput), but higher reliability and much fewer +lines of code. + +@item Why do you authenticate with passphrases? +Human is capable of memorizing rather long passphrases (not passwords): +100-200 characters, that gives ability to use it as a high-entropy key. +You need to trust only yourself, not hardware token or some other +storage device. It is convenient. + +@item Why all network configuration must be done manually? +Because there are so many use-cases and setups, so many various +protocols, that either I support all of them, or use complicated +protocol setups like PPP, or just give right of the choice to the +administrator. VPN is only just a layer. + +@item Why there is no either OS X or Windows support? +Any closed source proprietary systems do not give ability to control the +computer. You can not securely use cryptography-related stuff without +controlling the underlying computing device. Choose another operating +system. + +@item What do you mean by perfect forward secrecy? +You can not decrypt previously saved traffic by compromising long-lived +keys. PFS property is per-session level: it won't protect from leaking +the session key from the memory. + +@item What do you mean by saying that clients are anonymous? +That third-party can not differentiate one client from another looking +at the traffic (transport and handshake). + +@item What do you mean by censorship resistance? +Unability to distinguish either is it GoVPN-traffic is passing by, or +just @code{cat /dev/urandom | nc somehost}. If you can not differentiate +one kind of traffic from another, then your only option is to forbid all +kinds of it. + +@item When should I use @ref{Noise, noise} option? +In most cases you won't need it without @ref{CPR, constant packer rate} +turned on. Without CPR and noise options GoVPN traffic (like TLS, IPsec, +SSH and other VPN protocols) leaks underlying interface's packets +timestamps and sizes. You can run traffic analysis and predict what is +going on in the network. With CPR option enabled you can tell either +somebody is online, or not -- nothing less, nothing more. + +@item Can I DoS (denial of service) the daemon? +Each transport packet is authenticated first with the very fast UMAC +algorithm -- in most cases resource consumption of TCP/UDP layers will +be higher then UMAC verifying. Each handshake message is processed only +when an encrypted client's @ref{Identity, identity} is found: it uses +fast PRP without any entropy usage. + +@end table diff --git a/doc/govpn.texi b/doc/govpn.texi index 8033b91..ca719ea 100644 --- a/doc/govpn.texi +++ b/doc/govpn.texi @@ -26,6 +26,8 @@ A copy of the license is included in the section entitled "Copying conditions". @menu * About (russian): О демоне. +* Frequently Asked Questions: FAQ. +* Часто задаваемые вопросы: ЧАВО. * News:: * Installation:: * Precautions:: @@ -39,6 +41,8 @@ A copy of the license is included in the section entitled "Copying conditions". @end menu @include about.ru.texi +@include faq.texi +@include faq.ru.texi @include news.texi @include installation.texi @include precautions.texi -- 2.44.0