Все критяне лжецы
Feb. 21st, 2012 09:38 pmЧто-то дальше мозги не едут. Подтолкните кто-нибудь.
Итак, заводим три таблицы. В одной пиры регистрируют сами себя. Выигрывает тот, кто первым запросил себе это имя (для этого к запросу прикладывается unixtime). Чтобы предупредить жульничество, можно установить таймаут: если запрос на регистрацию слишком старый (допустим, ему более часа), происходит отлуп с соответствующей диагностикой.
Аналогично происходит захват домена второго уровня. Вторая таблица.
Далее. На каждого пира заводится запись, содержащая его имя, официальный адрес, время регистрации и уровень недоверия. В зависимости от поведения пира, уровень недоверия меняется от 1 для указанных админом trusted до некоторого большого числа. Пиры, набравшие еще больше баллов, блокируются на фаерволе, исходящие от них данные более не принимаются. Можно блокировать и административно.
Для каждого адреса, поступающего на узел, в третьей табличке прописывается не только пара имя-адрес, но и тип адреса (A, MX... что еще может понадобиться?), суммарное недоверие, имя владельца домена, имя узла, от которого получена информация, и unixtime создания записи владельцем домена.
Как это работает: получив запись от соседа, узел прибавляет к уже накопленному недоверию свой рейтинг недоверия к этому соседу. Если сумма больше определенного предела, адрес отличается от известного, а время создания записи больше, чем у существующей (при отсутствии существующей она считается отличающейся и более старой) узел идет к владельцу домена и напрямую запрашивает соответствующую запись. Если запись от владельца получена и соответствует только что полученной, она заменяет все известные и недоверие выставляется в уровень недоверия к владельцу домена. Если владелец не откликается, новая запись тихо уходит в /dev/null. Если владелец возвращает копию ранее существовавшей записи, уровень недоверия к источнику дезы повышается.
При прочих равных и если уровень недоверия ниже предела, приоритетной считается более новая запись либо та же с меньшим уровнем недоверия. Абсолютно верит узел только своему админу.
Кроме того, счетчик кармы увеличивается, если источник несет околесицу (чтобы попасть в игнор с фаерволом, не нужно даже быть пиром, достаточно один раз кинуть на соответствующий порт несколько мегабайт мусора), присылает формально кривые записи или не соблюдает протокол. Наконец, есть тусовки, где админы узлов обмениваются компроматом на вычисленных злодеев.
Узкие места и непонятки.
Проверка имени на незанятость получается чертовски затратным мероприятием. Да и распространение информации лучше бы как-то обуздать. Если каждый знает всех, возникает вопрос, кому слать апдейты и запросы. Всем — провода вскипят. Только одному — в большой сети получится долго, да еще и в петлю может попасть. Где золотая середина?
Стоит ли инициировать беседы с сильно проштрафившимся и что получится, если исключить их из круга общения и не посылать апдейтов? Мы ведь не можем отличить обманщика от обманутого.
Пересылка всей таблицы (или ее существенной части) дело хлопотное. Опять-таки, надо придумать, кому давать, а кому не давать.
Вот узел вынужден сменить адрес. Как позволить ему это сделать, но не позволить злодеям-захватчикам? Криптоподписи отпадают из-за громоздкости. Если старый адрес еще будет какое-то время доступен, разрулить можно. И все равно получается уязвимость: если все по наводке провокаторов кинутся переспрашивать, узел может и прилечь под нагрузкой.
Что делать, если владелец домена долго не отвечает? Когда освобождать имя пира и его домены?
Итак, заводим три таблицы. В одной пиры регистрируют сами себя. Выигрывает тот, кто первым запросил себе это имя (для этого к запросу прикладывается unixtime). Чтобы предупредить жульничество, можно установить таймаут: если запрос на регистрацию слишком старый (допустим, ему более часа), происходит отлуп с соответствующей диагностикой.
Аналогично происходит захват домена второго уровня. Вторая таблица.
Далее. На каждого пира заводится запись, содержащая его имя, официальный адрес, время регистрации и уровень недоверия. В зависимости от поведения пира, уровень недоверия меняется от 1 для указанных админом trusted до некоторого большого числа. Пиры, набравшие еще больше баллов, блокируются на фаерволе, исходящие от них данные более не принимаются. Можно блокировать и административно.
Для каждого адреса, поступающего на узел, в третьей табличке прописывается не только пара имя-адрес, но и тип адреса (A, MX... что еще может понадобиться?), суммарное недоверие, имя владельца домена, имя узла, от которого получена информация, и unixtime создания записи владельцем домена.
Как это работает: получив запись от соседа, узел прибавляет к уже накопленному недоверию свой рейтинг недоверия к этому соседу. Если сумма больше определенного предела, адрес отличается от известного, а время создания записи больше, чем у существующей (при отсутствии существующей она считается отличающейся и более старой) узел идет к владельцу домена и напрямую запрашивает соответствующую запись. Если запись от владельца получена и соответствует только что полученной, она заменяет все известные и недоверие выставляется в уровень недоверия к владельцу домена. Если владелец не откликается, новая запись тихо уходит в /dev/null. Если владелец возвращает копию ранее существовавшей записи, уровень недоверия к источнику дезы повышается.
При прочих равных и если уровень недоверия ниже предела, приоритетной считается более новая запись либо та же с меньшим уровнем недоверия. Абсолютно верит узел только своему админу.
Кроме того, счетчик кармы увеличивается, если источник несет околесицу (чтобы попасть в игнор с фаерволом, не нужно даже быть пиром, достаточно один раз кинуть на соответствующий порт несколько мегабайт мусора), присылает формально кривые записи или не соблюдает протокол. Наконец, есть тусовки, где админы узлов обмениваются компроматом на вычисленных злодеев.
Узкие места и непонятки.
Проверка имени на незанятость получается чертовски затратным мероприятием. Да и распространение информации лучше бы как-то обуздать. Если каждый знает всех, возникает вопрос, кому слать апдейты и запросы. Всем — провода вскипят. Только одному — в большой сети получится долго, да еще и в петлю может попасть. Где золотая середина?
Стоит ли инициировать беседы с сильно проштрафившимся и что получится, если исключить их из круга общения и не посылать апдейтов? Мы ведь не можем отличить обманщика от обманутого.
Пересылка всей таблицы (или ее существенной части) дело хлопотное. Опять-таки, надо придумать, кому давать, а кому не давать.
Вот узел вынужден сменить адрес. Как позволить ему это сделать, но не позволить злодеям-захватчикам? Криптоподписи отпадают из-за громоздкости. Если старый адрес еще будет какое-то время доступен, разрулить можно. И все равно получается уязвимость: если все по наводке провокаторов кинутся переспрашивать, узел может и прилечь под нагрузкой.
Что делать, если владелец домена долго не отвечает? Когда освобождать имя пира и его домены?
no subject
Date: 2012-02-22 07:44 pm (UTC)no subject
Date: 2012-02-22 08:04 pm (UTC)no subject
Date: 2012-02-22 08:10 pm (UTC)no subject
Date: 2012-02-23 05:46 am (UTC)