Распределённая система имён в Интернете

    Это досужие рассуждения, никакого кода или даже описания протокола взаимодействия у меня нет. Оригинальное исследование в чистом виде, как это называют в Википедии.

    … Нам нужна система идентификации сайта, такая, чтобы мы не зависели от воли третьих лиц при определении домена. Точнее, чтобы уйти от терминологии DNS, просто имени. И связанного с ним множества ресурсных записей.

    Очевидно, что достигается это цифровой подписью под именем. В этом случае чужие изменения в RR зоны не будут приняты. Вопрос только в том, что считать достоверной подписью.

    Тут, мне кажется, стоит подумать о системе GPG/PGP, как менее централизованной (напомню, есть две модели управления ключами — PKI и GPG, PKI предусматривает бинарность доверия — либо доверяем в пределах политики удостоверяющего центра, либо нет). У человека есть набор корневых сертификатов, которым он доверяет. Через них удостоверяются другие УЦ и предъявители сертификатов.

    Модель GPG подразумевает иной подход. Вместо множества авторитетных УЦ, которым доверяет пользователь (что в реалиях современных браузеров означает, что за пользоваеля решает создатель браузера), у пользователя есть лишь один абсолютный центр доверия — это он сам. Если он подписал, что А=Б, то мы можем точно считать, что А=Б. (в нашем вопросе, это означает, что Б может подписывать данные А, и что это правда). У нас есть люди (знакомые, службы в интернете и т.д.) с разным уровнем доверия к их подписям, и итоговое доверие вычисляется по подписи.

    Например, закадычный приятель, который точно не будет подписывать ахинею, говорит, что А=Б, наверное, это так. Если же большинство из френдов считают, что thepiratebay.org=194.71.107.15, то наверное, это так. Как бы нас не убеждал в обратном гугль (с уровнем доверия 5 из 10).

    Таким образом, система имён выглядит следующим образом: человек заходит на сайт (оставляем в стороне то, как он узнал первое имя, это проблема курицы и яйца, и она была решена даже при запуске DNS, не говоря уже про возможность использовать DNS как kickstart для новой системы), видит ссылку. Ссылка ссылается на имя и хэш подписи.

    Если же человек хочет зайти на нужный ему ресурс, то он (человек и его воплощающий браузер) проверяет по «базам друзей» какой хеш наиболее авторитетен для указанного имени. Если есть консенсус, то, человек идёт на указанный сайт. Если есть разногласия, то появляется список:
    vodka:

    Homepage about homemaid vodka: 7.3 балла (миша — 3 балла, natsu 3 балла, google 1.3 балла), PGP key ABC687A687684CFA3…
    vodka: best site about vodka, site selling for vodka, vodka for selling. 1.31 балла (yandex 1.3 балла, kibersquater 0 баллов, sellingdomains 0 баллов, somerandomcontact — 0.01 балла).
    vodka: under construction 0.1 балла (вася пупкин 0.1 балла).


    Если человек считает, что именно это имя соответствует имени сайта, то он подписывает подпись на записе о сайе. И с этого момента никакие усилия RIAA, USA, кровавой гэбни и т.д. не сделают так, чтобы подпись была инвалидирована. Если сайт меняет адреса, то он переподписывает новую запись (и мы, доверяя Б в вопросе подписания сайта об «А» автоматом доверяем новой записи).

    Если мы потеряли наш список доверия, мы можем восстановить его по контактам знакомых (из кейринга), с большой вероятностью у людей одного круга будет одинаковое мнение о том, какой сайт есть кто.

    Дополнительно, небольшие баллы накидываются за регулярные посещения сайта (если посещаем, значит, это оно).

    В такой модели мы получаем полностью распределённую систему имён для сайтов, не связанную ни с кем, кроме самого человека и его знакомых. Отсутствует во-первых единый центр уязвимости (нет тех IP, которые можно блокировать, тех организаций, что разделегируют), во-вторых автоматом решается проблема киберсквотинга, ибо пустое имя никого не волнует.

    Понятно, что в этой модели есть масса вопросов:
    • Где брать подписанные данные? (гипотеза, подобие p2p или keyring'ов)
    • Раскол интернета (одни считают, что ПравительствоРФ — это клёвый сайт с голыми тётками, вторые — что унылый сайт с престарелыми мужиками в галстуках).
    • Мириады возможностей компрометации ключей. Введеление в заблуждение, захват чужих ключей для воздействия на соседей (посмотрите что происходит с контактлистами аськи).
    • Утеря ключа владельцем сайта означает утрату сайта в ближайшей перспективе.
    • Усложнение процесса сёрфинга (нужно выбирать среди (возможно) равнозначных по весу вариантов.
    Share post

    Similar posts

    Comments 73

      0
      Я некоторое время назад продумывал схожую схему с именами, и вот что надумал:
      1. Эта штука очень важна, ибо даёт настоящую возможность обмениваться информацией (свобода слова) и проверять её (чтобы правдой было не то, что говорят по каким-то конкретным каналам информации, а то, чему доверяю я и моя сеть).
      2. Реализация такой сети должна быть децентрализованной принципиально, иначе смысл теряется. Это значит, что нельзя выполнять запросы на валидацию данных (в данном случае данных об именах) в какой-то сервис, который уже выдаст степень доверия моих соседей из сети. Такие запросы должны идти непосредственно к этим самым соседям в сети.
      3. В существовании такой «сети валидации данных на доверии» заинтересован очень небольшой процент пользователей, что даёт минусы — нельзя сразу решить проблему глобально -, и плюсы всякие негодяи не сразу заметят сеть, как не сразу заметили интернет.
      4. Проблема нехватки информации о доверии тому или иному факту будет появляться достаточно часто, пока в сеть не будет включён весь мир.
        +4
        Существенный минус — человек, публикующий ссылку на сайте, не знает, куда она приведет посетителя. Единственный очевидный для меня вариант — внедрять pgp-ключ в саму ссылку.

        В противном случае, ссылаясь на проект нового налогового кодекса на рада.гов.юа можно направить читателей на какой-нибудь triple penetration (что хоть и близко по смыслу, но все-таки не совсем то, что имели ввиду).
          0
          Кстати, да. Ведь это будет единственный метод обнаружения ресурсов. Вероятнее всего, ссылка будет указывать на конкретный хеш и ресурс на сайте с этим хэшом.

          Сейчас поправлю.
            +1
            >> Единственный очевидный для меня вариант — внедрять pgp-ключ в саму ссылку.

            Примерно как всё описано в статье, всё организовано в i2p, только что данные имя-ключ берутся из различных источников, которые указываются в настройках, а не у соседей. Добавление ключа в ссылку там также может использоваться.
            0
            интересная идея, но, по-моему, эффективна в основном для закрытых сообществ. По-моему, в TOR есть нечто похожее.
              0
              А если сайт скатится в сраное говно? Отпитаться никак нельзя?
                0
                Ранжирование по времени оставленного «отзыва». Доверие к недавно выставленным оценкам выше, чем более старым.
                  0
                  Можно перестать ходить. Или, в совсем запущенных случаях, отозвать подпись.
                  +1
                  А если у меня нет достаточно большого списка знакомых? Конечно, р2р — отличная вещь. Но лепить её на всё подряд не стоит. Не везде оно работает лучше централизованного подхода.
                    0
                    Ну а как вы находите информацию сейчас? Идёте в гугль, за неимением другого, верите ему.
                      +1
                      Нужно понять, что есть «лучше». Лучше — это быстрее? Нет, p2p обычно медленее. Надёжнее? Да. Коллекция пиров имеет большую устойчивость против блокирования и административного выключения, чем несколько DNS-серверов. Удобнее? Нет, DNS удобнее. Защищённее? Да, так как имя сайта перестаёт зависеть от административного произвола регистратора.
                      +2
                      Как Вы представляете хранение в распределенной базе из максимум 100 Ваших знакомых, перечня из 200.000.000 ныне существующих доменных имен?
                      Действующая система DNS выживает только благодаря тому, что утрированно «за каждой сотней-тысячей серверов наблюдает отдельный DNS-сервер».
                        +3
                        200млн / 100 = 2 млн строк? Ваш вопрос я так понял — куда на современном компьютере можно сохранить 20-100 мегабайт данных?
                          0
                          посчитай правильно.
                          200 млн записей — каждая по 28 байт (12+3 байт на адрес + 1 на пробел + 12 символов средняя длина доменного имени) — в сумме 5,5 гб
                          немало на какую-то несчастную и мало кого интересующую днс
                            0
                            Почему 200 миллионов? Откуда у ваших друзей мнение о 200 миллионах сайтов?
                              0
                              много, да
                              надо поискать по истории, сколько сайтов посещает средний чувак
                              ведь грузишь хабрахабр, а запросы к днс сайтам к 20 наверное идут — всякие банеры-хуянеры
                                0
                                Посещение не означает доверия. Да и ссылки на баннеры не будут вести на «имена» (почему вообще кто-то решил, что ссылка будет «относительной»?), а на хеши — уникальные идентификаторы ссылок.
                          0
                          А вам нужны эти 200 миллионов сайтов? Вам новый сайт предъявляет подпись. Вы «пробиваете» подпись по знакомым (ведь у ваших знакомых тоже будет не 200 миллионов сайтов в списках) и сервисам, которым вы доверяете (де-факто, всякие антифишинговые сайты уже что-то подобное делают). Объём базы — единицы, десятки, ну в запущенных случаях сотни мегабайт. Объём невосстановимых даннных — сотни килобайт-единицы мегабайт.
                          +1
                          Автор, а чем Вас не устроили распределенные базы данных ключ-значение (thepiratebay.org-xxx.xxx.xxx.xx) тот же Византийский Паксос (Byzantine Paxos), например, устойчив к лжи и подлогу внутри сети, отказам части сети и т.п…

                          Проблема тут будет в том, что сквоттеры уже через час будут владеть всеми доменами, которые только хоть как-то осмысленны. Сейчас их останавливает только то, что за домены надо платить хоть сколько-то. А в такой сети какой ограниченный ресурс будет использоваться для сдерживания?
                            +1
                            Доверие. Я же специально привёл список для «vodka». Вопрос не в том, что киберсквотер считает, что это его домен. Вопрос в том, что я так не считаю. И мои френды не считают.
                            +3
                            i2p — «чтобы мы не зависели от воли третьих лиц»
                              +1
                              Я регистрирую крутой домен, раскручиваю его, приходит какой-то гигант, подписывает своих посетителей, они связывают его айпи и мой домен, я теряю свой домен.
                                –2
                                здоровая конкуренция, не?
                                  0
                                  Не здоровая, а монополия. Любой крупный игрок с легкостью задушит конкурирующий, активно развивающийся стартап
                                    0
                                    Как он его задушит? Вы представляете себе ситуацию в категориях DNS, где каждый FQDN уникален.

                                    Я же говорю про ситуацию, когда у каждого (каждой группы) своё представление о том, какой сайт этот, а не тот.

                                    Возможность точной ссылки остаётся благодаря хешу. Возможность выбора между именами тоже остаётся. А их ранжирование зависит от того, кто список просматривает.
                                      0
                                      я создаю мего-крутую сеть example.com. за месяц посещаемость выростает до 10000 уников в сутки. ВКонтакте чувствует конкуренцию и сообщает, что открывает сайт example.com, просит добавить его себе в днс. за месяц четверть пользователей ВК а также их друзья считает, что example.com — это не мой сайт, а сайт-частичка вконтакте. Если кто-то даст ссылку на форуме — они попадут не ко мне.
                                        –1
                                        Ещё раз: ссылка содержит хеш. Она ссылается именно туда, куда ссылается, а не на имя «example.com». А вот если кто-то в гугле наберёт example.com, то он увидит, что 80% считают, что это проект вконтакта, а 20% — что это ваш проект.

                                        Более того, вам не надо называть его example.com, достаточно назвать его «Сайт Васи Пупкина о примерах коммерции».
                                          +1
                                          за идеей распределенного днс потерялась идея доменных имен в принципе. я не говорю, что это плохо. просто это так.
                                            0
                                            Разумеется, потому что доменное имя (обратите внимание, я сразу в начале статьи сказал, что никаких доменных имён, просто имена) основывается на идеологии единого корня, авторитетности серверов и права вышестоящего разделегировать нижестоящего. Это фундаментальные принципы DNS, и запись FQDN однозначно эту иерархию показывает (стыдливо скрывая американскую точку в конце FQDN).

                                            Если делать распределённую систему, то каждый сам себе корень. Поддомены, да, можно делегировать DNS-подобным стилем, хотя вовсе не обязательно.
                                              0
                                              В принципе идея доменных имен все равно потихоньку отмирает. Идея была в том, что доменное имя легко запомнить, легче, чем 4 числа IP. Можно было сказать человеку — «пойди на microsoft.com», и этого было достаточно. Но сегодня, если Вас кто-то спросит, где скачать последнюю версию медиа плеера, ответить «пойди на микрософт.ком» уже недостаточно, потому что сайт слишком разросся. В 99% случаев Вам придется дать человеку ссылку, и тот факт, что часть ссылки составляет доменное имя, уже не очень важен.
                                                0
                                                У DNS есть ещё одна функция — создание независимого от нижележащих адресов идентификатора (поменяли IP — а сайт остался с таким же именем). В случае использования хешей, эта задача выполняется.
                                        0
                                        Ну, стартап-то, допустим, он не задушит. А за имя — поконкурирует: если в DNS кто первый занял — того и тапки, то в такой системе имя закрепится «в народе» за тем, кто лучше этому имени будет соответствовать.
                                          0
                                          это плохо. я не могу быть уверенным за свое имя. это все равно, что развивать ресторан зная, что в любой момент может прийти кто-то крутой и забрать здание.
                                            0
                                            не здание, а имя.
                                            повесить тоже самое название ресторана на другом здании.
                                            те, кто знают ваш ресторан — приведут к вам.
                                            а толпы хомячков вконтакта или получателей спамрассылки ломанутся в другое место.
                                            поймать их и наставить на путь истиный будет не просто.
                                            конкуренция здоровее :)
                                              0
                                              тогда зачем вообще это имя?
                                                0
                                                потому что вам хочется куда-то заходить. Не по ссылке. Простейший контекстный поиск в браузере по имени сайта.
                                      0
                                      Его посетители по-прежнему ваши. Ссылки на ваш сайт (по хешу) — тоже ваши. И да, у нас получается два сайта — один про яблоки, второй про бамперы к ипадам. Различаться они будут по заголовку (потому что в этой системе только лентяй будет называть свой сайт одним словом, когда можно назвать его фразой).
                                      0
                                      Я думал о такой системе и у меня всё сводилось к 3 нужным отсутствующим в данное время вещам:
                                      — Распределённый DNS, который умеет делегировать не только по DNS`овскому протоколу, но и по набору других (в частности, через идентификаторы в p2p-сети). Делегация понадобится, т.к. в реальной жизни требуется часто обращаться к сайтам, которых ещё нет в локальных пирах. Отношение делегации, таким образом сгенерирует путь к тому или иному ресурсу по принципу uucp путей (естественно, разных в каждой части сети, но с некоторым временем жизни).
                                      — Открытая P2P сеть. Сейчас P2P сети привязаны к определённым задачам, нельзя через них, к примеру, с помощью консольных утилиток и демонов организовать передачу произвольных данных, организовать потоковое соединение «точка-точка».
                                      — Система взаимозачёта усилий/рейтингов — типа применяющихся в P2P приложениях, только, опять же отвязанных от конкретных задач и от задачи P2P — для контроля роста %% соотношения фрирайдеров.

                                      Распределённые IP
                                        0
                                        Не дописалось: распределённые системы с IP-псевдонимами уже есть, равно как есть распределённые системы ключ-значение, но там нельзя ограничить своё участие в таких системах.
                                        0
                                        Вот тоже интересный вариант A Netsukuku Domain Name Architecture
                                          0
                                          DNS нетсукуку, если там ничего не поменяли, подвержен сплитам, как IRC, хоть их труднее предсказать, т.к топология более динамическая. Так что для заявленной в топике независимости от 3х лиц данный вариант не подходит.
                                            0
                                            кто такие сплиты?
                                              0
                                              две иерархии, не доверяющие друг другу.
                                                0
                                                а по подробнее? в чем это будет выражаться, если идею ANDNA перенести в нынешний интернет?
                                                  0
                                                  Что подробнее? Поднимите свой корневой DNS, пропишите туда какие хотите сайты — вот вам и сплит между вселенной и вами персонально. Если сплит произойдёт из-за споров, кто главный в IANNA, то будет хуже.
                                                    0
                                                    В этом смысле…
                                                    IMHO Любая альтернативная система ведет к подобному расколу. Единственное, в топике решается тем, что используется дополнительная информация — у каждого своя подпись.
                                                    К стати, в ANDNA никто не мешает резолвить не ip адрес, а последовательность цифровая подпись — ip адрес.
                                          0
                                          А какже гугл с яндексом будут работать?
                                            0
                                            Будут доверять друг другу в вопросах, какой из нескольких сайтов с одним именем настоящий :)

                                            А индексировать сайты будут не просто по доменным именам, а по именам + ключам.
                                              0
                                              Угу. Ровно так же, как сейчас куча народу ищет сайт по имени. Это не поменяется. Но появится возможность запомнить, что этот сайт — это ЭТОТ, а не тот, который окажется с тем же именем через два года.
                                              0
                                              А как они сейчас работают? Обходят все известные узлы, собирают их названия, ранжируют, показывают пользователю.
                                                0
                                                Допустим я ищу хабр, вбиваю «хабр» в гугл. Далее гугл выдает мне habrahabr.ru, который ОН считает хабром, я перехожу по ссылке и попадаю на тот хабр, который считается хабром у какой-то массы пользователей, но совершенно отличный от того, что думает гугл. В итоге все в обломе.
                                                  0
                                                  Вы вбиваете «хабр», гугль вам показывает ссылку, которая использует ХЭШ, который приведёт ВСЕГДА (хэш, в отличие от имени, уникален) на то, что гугль считает хабр №1 (ниже там будет хабр №2 и хабр №3, как обычно, в результатах поиска).
                                                    0
                                                    И как мне узнать какой хабр мне нужен? Посмотреть все 3 результата?
                                                    А если мне Вася по телефону скажет: «Зайди на хабр»? Требовать хэш от Васи?
                                                      +1
                                                      А как вы сейчас ищите хабр? Вот, представьте, вы хотите зайти на сайт авангарда. Вы про банк или про питерский ADSL? А там ещё пачка авангардов есть. Вы заходите на каждый из, смотрите кто есть кто, если он нужный, отмечаете для себя «это тот авангард, который мне нужен». В следующий раз, слово «авангард» вас приведёт именно в салон мод, а не на сайт банка или адсла.
                                                        +1
                                                        Если адрес у сайта читабелен, то я сразу на него и захожу, а не ищу его три часа по дурацким схемам
                                              0
                                              система очень сложная у вас — обычные пользователи освоят её очень нескоро. И я так и не понял — зачем это всё? Разве сейчас ДНС не справляется?
                                              Это ж сколько времени потребуется на разрешение каждого запроса?
                                              А как насчёт изменения записи, как быстро реплицируются изменения?
                                                  0
                                                  спасибо за ссылку. Как я понял, про региональные домены типа .ru там же речь не идёт?
                                                    0
                                                    До тех пор, пока США не решат разделегировать чей-нибудь национальный домен (например, .iq по случаю войны, взрыва очередного бизнес-центра или падению кукурузника на особо охраняемую лужайку).
                                                      +1
                                                      Региональные домены начали разделегировать домены ещё раньше. Т.е. если у вас, к примеру, раньше был бы привязан openid к какому-нибудь torrents.ru, то по желанию левой пятки должностного лица доступ на сайты, куда вы по нему заходили, потерялся, и более того, если сей домен делегируют кому-нибудь с плохими намерениями, эти злоумышленники с бОльшей лёгкостью провернут identity theft, чем при ситуации, когда они не имеют доступ к домену жертвы.
                                                    0
                                                    Тут речь немного о другом, не о распространении информации, а об определении «кто из» говорит правду. В принципе, если у домена в RR будет указано множество «хранителей» (заменим ими единственного делегирующего в DNS), то по существующей записи о зоне можно будет обновить её, получив адреса новых NS-серверов. А какой из NS говорит правду, а какой нет, будет определяться подписью.
                                                    0
                                                    хорошая идея, это как номера телефонов в сотовом — каждый называет абонента по-своему, а сам номер как подпись
                                                      0
                                                      Собственно, это оно же. С возможностью искать в коллективной адресной книге, основываясь на книгах знакомых.
                                                        0
                                                        значит, если провести обратную аналогию, то можно пополнять свои списки номеров извлекая х из телефонных книг френдов
                                                          0
                                                          Пополняя, не совсем так, скорее, сверяясь «какой у Васи номер»?
                                                      0
                                                      Эту тему уже озвучивали. Решение — аналог поисковика, где результаты отвортированы по сумме рейтингов: рейтинг источника + рейтинг посещаемости.
                                                        0
                                                        Колоссальный косяк метода:
                                                        Берём крупный бот-нет. (это не проблема). Тысячи если не десятки тысяч компьютеров (а при организованной атаке несколкими бот-нетами и того больше). Большей частью это компьютеры домохозяек и пользователей, который не сильно разбираются в компьютерах (от того и проблемы с безопасностью). Они получили имена по «доверию» к от других пользователей. Сами они ни о чём подобном не думают.
                                                        А теперь фокус. Заставляем бот подменить адрес google.com на нечто другое. И всё — если нашлась достаточно большая группа взаимно-доверяющих пользователей, то волну не остановить — те пользователи, которые разбираются по-определению в меньшинстве и что бы они ни делали леменги будут бежать друг-за другом, так как их большое и они друг-другу «доверяют».
                                                        В пределе получаем обычный DNS — однажды привязав имя к адресу изменить его уже нельзя, т.к. слишком много пассивных пользователей доверяют друг-другу. В лучше случае получаем хаос — у одной группы пользователей один google, у другой — другой. И масса шокированных пользователей, слабосвязанных с группами или сильно связанных с несколько группами — у таких гугели будут всё время разные :)
                                                        В общем, есть проблема количества пассивных пользователей пользователей — их всегда больше и принятое ими решение изменить уже никак нельзя. Как решать будете?
                                                          0
                                                          Очень просто. Если пользователь УЖЕ знает, что «гугль это гугль», то сколько бы друзья его не убеждали в обратном, он не пойдёт по их пути (себе максимальное доверие). Вот для новых пользователей это будет работать.

                                                          Понимаете, почему-то из указанной схемы всем кажется, что если друзья начинают вас «переубеждать», то вы самопереубеждаетесь. Нет, друзья нужны только для момента, когда вас заинтересовало название впервые. После этого вы подтверждаете, что «название это то, где я сейчас» и с этого момента название — только для этого сайта.

                                                          Все СЛИШКОМ прилипли к FQDN. Нет никакого «google.com», есть «Search with Google». Без .com, site.subdomain.example.org и т.д.
                                                            0
                                                            крупные ботнеты уже давно прекрасно заваливают и DNS прописывая всякую фигню в /etc/hosts
                                                              0
                                                              Сегодня крупный ботнет может изменить содержимое файла hosts на компьютерах леммингов, и у них будет другой гугл и вообще другой интернет, до DNS дело вообще не дойдет.
                                                                0
                                                                Разница в том, что в этом случае бот нет начнёт влиять на компьютеры не входящие в ботнет
                                                              0
                                                              таки в i2p что-то похожее уже сделано…
                                                                0
                                                                Я тут на выходных подумал и понял, что не очень понял, что вы предлагаете. :)

                                                                Поисковик с учётом доверия к авторитетам — это то, о чем, в частности, долго говорит Тим Бернерс-Ли, описывая «Семантическую сеть». В которой можно создать запрос к поисковику (возможно, локальному): «дай мне адрес ресурса по ключевому слову vodka». При этом, другие люди прикрутили к поиску индексы доверия к результатам.

                                                                Но при чём здесь ЭЦП (к тому же, из текста топика непонятно, про подписывание владельцем ресурса или про подписывание другом идёт речь)? Понятно, можно распространять, к примеру, подписанные _владельцем_ресурса_ RDF`ки <<kw:vodka rt:uri [ «12.34.56.78/ .», «vodka.com», «magnet:XXYYZZ» ]>>, но тогда всё равно придётся где-то хранить/доверять (a) ссылку на открытый ключ подписывающего и/или его фингерпринт и (b) ссылку на ресурс с RDF`кой. А поскольку у владельцев обычно не больше 2-3 ресурсов, таких наборов информации будет очень много.

                                                                Уточните, плз, для чего конкретно вы предлагаете привлечь ЭЦП?

                                                                Only users with full accounts can post comments. Log in, please.