от Nikolay Hristov(18-12-2011)
рейтинг (15)
[ добре ]
[ зле ]
Вариант за отпечатване Какво е DNSCurve?
DNSCurve е надстройка на стандартния DNS протокол като
идеята е да направи трафика между DNS сървърите криптиран.
По този начин се избягват по-голямата част от проблемите на
дизайна на DNS протокол.
Как работи?
DNSCurve работи като препращащ (forwarding) dns сървър.
DNS or DNSCurve clients <-> DNSCurve
server <-> Authoritative name server
(tinydns/PowerDNS/…)
За целта трябва да имате инсталиран DNSCurve сървър на
вашите NS записи. Дали това ще е само forwarding сървър или
authoritative+dnscurve зависи от имплементацията. Има
няколко имплементации за момента - curvedns (forwarding
only), gdnsd (authoritative+dnscurve), dnscrypt (cache
proxy+client), djbdns dnschache patch за dnscurve
поддръжка.
Установяване на криптирана връзка между dns клиент/сървър
без надстройки на текущия DNS протокол.
Идеята е публичните ключове за криптирането да се разменят
чрез DNS записи. В общи линии се случва следното
DNS клиентът (или cache сървърът) казва - Кои
са DNS-ите, които отговарят за horizon9.org?
Отговорът на заявката е:
horizon9.org NS
uz5wy8l27yn2668yfcm2nvw8nxvr2gldcdvmuhju5d4j6lkmz1gg4r.ns1.horizon9.org
horizon9.org NS
uz519s6hhsm8z379wvkwl80z3mzph8u5wbdhdnlhq33kkd49d892ft.ns2.horizon9.org
DNS клиентът взема публичния ключ и с него
криптира следващата заявка.
Както се досещате, клиентът също трябва да
има генерирани ключове, които се генерират при инсталирането
му.
От тук нататък всичките запитвания към
horizon9.org минават по криптиран път.
Предимства
* Предимството на DNSCurve е, че заявките се
побират в 512 bytes. Това означава, че се побира в
един стандартен UDP dns пакет който би минал без проблем и
през неадекватно настроените firewalls по пътя. За това не
са нужни никакви промени по текущия DNS протокол и не е
нужно да се ползва TCP имплементацията (което води по
принцип до забавяне на отговорите).
* Ключовете са сървърно базирани, тоест ако
поддържате повече от 1 домейн, е нужно да генерирате само 1
двойка ключове като сложите публичния в NS записите на всеки
от домейните
uz5p6wlnqkgbrz6kbupkdylhqsb3btf6265pr0nl6vl6pwny16pb8p.ns1.horizon9.org
uz5p6wlnqkgbrz6kbupkdylhqsb3btf6265pr0nl6vl6pwny16pb8p.ns1.drundrun.org
uz5p6wlnqkgbrz6kbupkdylhqsb3btf6265pr0nl6vl6pwny16pb8p.ns1.alabala.com
......
* Съвместим е с DNSSEC (който аз лично не съм
имплементирал на моите сървъри)
* Поддържа UDP и TCP заявки.
Инсталиране на curvedns + djb tinydns
Стандартът DNSCurve бе предложен преди 2 години от Dan
Bernstein и вече си има имплементация. Идеята му е много
добра и проблемът, че все още не е внедрен навсякъде,
най-вероятно се дължи на това, че повечето хора го
мразят, защото се държи като задник по мейлинг листите. Това
не пречи идеята му да е опростена и напълно приложима.
Имплементацията се нарича curvedns, използваща networking
and cryptography library. Направена е да работи с djb
daemontools. Ето и принципа на работа на curvedns.
* ns1.horizon9.org 193.22.103.2
* dns curve сървърът слуша на IP
193.22.103.2
* истинският dns сървър слуша на
127.0.0.1
* dns curve сървърът обработва запитванията
относно *.horizon9.org като ги препраща към 127.0.0.1:53
където работи истинския authoritative сървър обслужващ
зоната horizon9.org
* ако заявката е стандартна просто се
препраща към 127.0.0.1:53
* ако заявката е тип DNSCurve първо се
установява сигурна връзка между запитващия и сървъра и след
това се предава заявката към 127.0.0.1:53 като данните са
обменени по криптиран път.
Това решение предлага без много проблеми да се инсталира
поддръжка за dnscurve протокола.
На практика за да може крайният потребител да се възползва
от това нововъведение, той трябва да има dns клиент или поне
dns cache сървър който да поддържа протокола DNSCurve .
djb dnscache patch за поддръжка на dnscurve протокола
Djbdns пакета съдържа и dns cache server. Matthew
Dempsky направи patch който позволява dnscache да
"разбира" протокола dnscurve. Този patch променя и
начина на записване на лога. Добавени са 2 символа: + и -.
Когато в лога има +, това означава че връзката по която е
получена dns информацията за даден домейн е била криптирана
(dnscurve протокол). Ако е с -, това означава че
информацията е придобита по стандартения некриптиран
път.
`--# host -t ns yp.to
yp.to name server
uz5dz39x8xk8wyq3dzn7vpt670qmvzx0zd9zg4ldwldkv6kx9ft090.ns.yp.to.
yp.to name server
uz5hjgptn63q5qlch6xlrw63tf6vhvvu6mjwn0s31buw1lhmlk14kd.ns.yp.to.
`--#
`--# cat
/service/dnscache/log/main/current|grep +
@400000004eeba4660a5e3a6c tx 0 2 yp.to.
yp.to. + 839b478f 83c1208e
@400000004eeba47c303bc54c tx 0 1 cr.yp.to.
yp.to. + 839b478f 83c1208e
`--#
OpenDNS dnscrypt
OpenDNS съвсем наскоро пуснаха версии поддържащи протокола
DNSCurve. Клиентска и сървърна част може да изтеглите от
тук: https://github.com/opendns.
За момента има клиентска част прекопилирана само за MacOSX.
Компилира се на linux, *BSD (не съм го тествал лично, но
така пише в README-то). Windows версия все още няма, но е в
процес на разработка.
gdnsd - още една имплементация на протокола dnscurve.
gdns e оше една имплементация на authoritative dns server,
който е в активна разработка.
Networking and Cryptographic library (nacl)
Проект за разработка на библиотека която предлага текущи
решения за проблемите в мрежовата криптография (основно -
бързодействие, сигурен алгоритъм, малко увеличение на
критираният пакет - x1.15 според DJB). Проектът се ръководи
от Tanja Lange (Technische Universiteit Eindhoven) и Daniel
J. Bernstein (University of Illinois at Chicago). Тъй като и
аз не съм много навътре в математиката и криптографията няма
да ви отегчавам с подробности които не разбирам. Алгоритъма
който се използва е Curve25519. Библиотеката предлага C, C++
и Python API-та за момента.
По-интересното в тази библиотека е един протокол предложен
от DJB - CurveCP.
CurveCP - криптираме целият интернет за нула време?
Проблемът в момента в интернет е че текущите протоколи за
криптирана връзка са прекалено тежки за процесорите на
машините на големите сайтове. Големите доставчици на web
услуги не предлагат изцяло криптирани връзки поради
недостинг на процесорна мощ. Google, например, има разлики
ако се използва през http или https. През https липсват
картинки, флаш, видео и всякакви натоварващи трафика
неща.
Представете си че една dnscurve стане стандарт в близките 5
години, тоест по-голямата част от DNS зоните имат public key
в NS записите си. Сега си представете че искате да проверите
пощата си през уеб браузър. Браузърът ви ще се опита да
установи SSL критирана връзка в уеб базирания мейл по https.
За целта трябва да се разменят пубичните ключове и да се
стартира сесията. Защо да си разменят наново ключове след
като публичните ключове могат да се дистрибутират чрез DNS?
Просто записа в DNS-а за www.horizon9.org ще стане по
следният начин.
uz5p6wlnqkgbrz6kbupkdylhqsb3btf6265pr0nl6vl6pwny16pb8p.horizon9.org
-> 195.177.249.170
www.horizon9.org -> CNAME ->
uz5p6wlnqkgbrz6kbupkdylhqsb3btf6265pr0nl6vl6pwny16pb8p.horizon9.org
От тук нататък клиентът има всичко необходимо за да
установи криптирана връзка с отсрещния сървър. За да
проработи това:
* или браузърът и отсрещния сървър да бъдат пачнати за
поддръжка на CurveCP, тоест CurveCP да стане стандарт.
* или бързото и лесно решение - използване на CurveCP proxy
и трафикът да бъде прехвърлян през него. Това би ставало
незабелязано за крайният клиент.
Това би трябвало да важи не само за уеб, но и за всичките
използвани протоколи в интернет.
В nacl библиотеката е включено и curvecp proxy.
Като заключение мога да кажа, че nacl и dnscurve са една
много правилна стъпка напред в интернет - сигурността.
Доколко това ще се възприеме - времето ще покаже. Хубавото е
че ако го инсталирате на вашите DNS сървъри, това не би
попречило на нормалната им работа. Инсталацията определено е
максимално опростена.
За повече подробности прегледайте използваните ресурси.
Горещо Ви препоръчвам, ако сте заинтересован от DNSCurve да
изгледате лекцията на Dan Bernstein публикувана като видео
във vimeo.com (има линк по-долу)
Използвани ресурси:
http://cr.yp.to/ - DJB site.
http://dnscurve.org/ - DNSCurve
protocol спецификация.
http://curvedns.on2it.net/ -
Forwarding proxy имплементация на DNSCurve протокола.
http://nacl.cr.yp.to/ -
Networking and Cryptography library.
http://dankaminsky.com/2011/01/05/djb-c...
- Дан Камински блог.
http://vimeo.com/18417770 - Видео
на лекцията на Dan Bernstein за DNSSEC, DNSCurve,
CurveCP.
Копие на статията може да намерите тук: http://geroyblog.blogspot.com/2011/12/d...
<< Въведение в daemontools (DJB Way) | sbopkg >>
|