Должны ли мы доверять хотя бы одному DNS-семени?

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

Итак, во время фазы начальной загрузки семена DNS являются точками входа для новых узлов. Посмотрев исходный код BitcoinJ:

   dnsSeeds = new String[] {
            "seed.bitcoin.sipa.be",         // Pieter Wuille
            "dnsseed.bluematt.me",          // Matt Corallo
            "dnsseed.bitcoin.dashjr.org",   // Luke Dashjr
            "seed.bitcoinstats.com",        // Chris Decker
            "seed.bitnodes.io",             // Addy Yeow
            "bitseed.xf2.org",              // Jeff Garzik
            "seed.bitcoin.jonasschnelli.ch" // Jonas Schnelli
    };

Они в значительной степени жестко закодированы в программном обеспечении. Что делать, если все эти семена DNS являются нечестными узлами? В этом случае новые узлы будут окружены нечестными узлами, и у него нет шансов подключиться даже к одному честному узлу и получить подлинную блок-цепочку. Поэтому в этом случае новые узлы будут обмануты.

Означает ли это, что биткойн-сеть по-прежнему нуждается в некоторой степени доверия? И будет ли это проблемой на самом деле?

6 голосов | спросил Bo Ye 6 J000000Thursday17 2017, 14:36:12

1 ответ


1

То, что вы говорите, правильно.

Я быстро расскажу о том, почему требуются эти твердые кодированные dns-семена. Атака, которую вы упоминаете, называется «отражением списка сверстников», стратегией, которая может использоваться для выделения кого-либо из сети. Существует два основных типа отравления одноранговым списком:

  1. Нечестные узлы: злоумышленник отравляет ваш список сверстников с реальными узлами, но вредоносных. Все ваши транзакции всегда будут вынуждены проходить через эти узлы.
  2. Пустоты: злоумышленник отравляет ваш список сверстников с нерабочими узлами, стратегию, часто используемую для демонтажа вредоносные ботнеты P2P .

Вы можете подумать, что для семени DNS требуется элемент доверия, но это не так. Есть способы проверить, что семя DNS честно: если вы запускаете собственный 24-битный биткойн-узел с правильной настройкой, то ваш адрес должен быть доступен в списке, возвращаемом семенем DNS. Они сканируют всю сеть и регулярно пересматривают известные узлы, чтобы проверить их доступность. Семена DNS не возвращаются полный список, поэтому это не очень практично.

Существуют альтернативы использованию семян DNS, таких как обход сети самостоятельно или даже грубая проверка IP-адресов и попытка подключения.

ответил Penquin 6 J000000Thursday17 2017, 15:02:03

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132