|
. Nikolay Hristov - Какво е DNSCurve? |
|
Какво е DNSCurve? 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?Предимства * Предимството на DNSCurve е, че заявките се побират в 512 bytes. Това означава, че се побира в един стандартен UDP dns пакет който би минал без проблем и през неадекватно настроените firewalls по пътя. За това не са нужни никакви промени по текущия DNS протокол и не е нужно да се ползва TCP имплементацията (което води по принцип до забавяне на отговорите). * Ключовете са сървърно базирани, тоест ако поддържате повече от 1 домейн, е нужно да генерирате само 1 двойка ключове като сложите публичния в NS записите на всеки от домейнитеИнсталиране на curvedns + djb tinydns Стандартът DNSCurve бе предложен преди 2 години от Dan Bernstein и вече си има имплементация. Идеята му е много добра и проблемът, че все още не е внедрен навсякъде, най-вероятно се дължи на това, че повечето хора го мразят, защото се държи като задник по мейлинг листите. Това не пречи идеята му да е опростена и напълно приложима. Имплементацията се нарича curvedns, използваща networking and cryptography library. Направена е да работи с djb daemontools. Ето и принципа на работа на curvedns. * ns1.horizon9.org 193.22.103.2Това решение предлага без много проблеми да се инсталира поддръжка за 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 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От тук нататък клиентът има всичко необходимо за да установи криптирана връзка с отсрещния сървър. За да проработи това: * или браузърът и отсрещния сървър да бъдат пачнати за поддръжка на 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-ccc/ - Дан Камински блог. http://vimeo.com/18417770 - Видео на лекцията на Dan Bernstein за DNSSEC, DNSCurve, CurveCP.
|