From: Sergey Matveev Date: Mon, 24 Sep 2018 19:38:50 +0000 (+0300) Subject: Разница между DNSCurve и DNSSEC, почему DNSSEC так хотят? X-Git-Url: http://www.git.stargrave.org/?a=commitdiff_plain;h=108669cb34dc8b1fd2d91f77214906350ac5f76b;p=stargrave-blog.git Разница между DNSCurve и DNSSEC, почему DNSSEC так хотят? https://dnscurve.io/faq/differences-between-dnscurve-and-dnssec.html Перевожу на русский, плюс свои дополнения: * DNSCurve зашифрован (блюдёт вашу приватность и конфиденциальность) DNSSEC не зашифрован * DNSCurve использует curve25519 алгоритм (быстрый, компактный, безопасный) DNSSEC использует RSA (медленный, ресурсоёмкий, сложно реализуемый безопасно) * DNSCurve имеет 128-бит уровень безопасности DNSSEC по-умолчанию 80-бит (1024-бит RSA ключи) * DNSCurve не требует ни одного дополнительного пакета при работе DNSSEC требует более чем половину больше * DNSCurve не требует новых типов записей DNS DNSSEC требует DS, DNSKEY, DLV, TLSA, RRSIG, NSEC, NSEC3, NSEC3PARAM * DNSCurve не требует дополнительного пользовательского интерфейса DNSSEC требует для каждого registrar поддерживающего DNSSEC * DNSCurve неуязвим для атак перепроигрывания (replay) DNSSEC уязвим * DNSCurve не сливает никаких данных DNSSEC сливает содержимое зон через NSEC/NSEC3 * DNSCurve противостоит цензуре в сетях DNSSEC вообще никак не защищает от неё * DNSCurve лишь чуть-чуть увеличивает размер пакетов DNSSEC существенно (что может потребовать TCP) * DNSCurve не может являться источником DDoS DNSSEC может * DNSCurve не использует PKI DNSSEC, будучи зависимым от PKI, может контролироваться правительствами Как работает DNSCurve, вкратце? Авторитарный сервер и resolver должны поддерживать этот протокол. Иначе будет использоваться обычный DNS. Как resolver заранее узнает что авторитарный сервер поддерживает DNSCurve? После того, как администратор установит DNSCurve ПО, то он помещает его публичный ключ в DNS NS запись. Например, вместо запроса к серверу ns1.example.com он может прописать uz5jmyqz3gz2bhnuzg0rr0cml9u8pntyhn2jhtqn04yt3sm5h235c1.example.com Здесь DNS имя uz5jmyqz3gz2bhnuzg0rr0cml9u8pntyhn2jhtqn04yt3sm5h235c1 начинается с магической строчки uz5, после которой идёт Base32 закодированный Curve25519 публичный ключ. Видя это, resolver понимает что сервер поддерживает DNSCurve. Resolver затем вычисляет общий ключ, используя свой эфемерный приватный ключ и известный публичный сервера. Используя этот ключ, он шифрует запрос XSalsa20-Poly1305 и посылает его серверу вместе со своим эфемерным публичным ключом. Сервер дешифрует запрос, используя свой приватный ключ и эфемерный отправителя. Затем шифрует ответ и отправляет назад. Так почему же DNSSEC при всей своей монструозности жив? Потому-что на нём можно делать огромный бизнес (кучу софта поменять, админки поменять, PKI построить), потому-что его безопасность могут нивелировать правительства, потому-что можно всё-равно устраивать цензуру и смотреть кто что запрашивает. Сплошной profit для бизнесменов, пытающихся убедить людей в том что тут речь про безопасность. DNSCurve слишком красив, прост, эффективен и безопасен, плюс бизнеса никакого не организуешь. ---