Как я могу убедить своих потребителей, что они на самом деле платят правильному человеку? (предотвратить MITM-атаки)

Существует множество атак на сетевом уровне, которые дают кому -то из «Человека посередине» возможность заменить мой биткойн-адрес своим собственным.

Поскольку отменить транзакцию невозможно, и лучше всего генерировать уникальный адрес для каждого отправителя...

  • Как я могу убедить своих потребителей, что они на самом деле платят правильному человеку?

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

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

Ответы (3)

Существует множество свидетельств того, что атаки типа «человек посередине» распространены , и это хороший вопрос для рассмотрения сообществом биткойнов.

При публикации биткойн-адреса на веб-странице вы либо будете использовать статический адрес (один адрес для многих отправителей), либо создадите новый адрес для этого конкретного пользователя.

Независимо от частоты генерации нового адреса, суть в том, что если вы отправляете свой биткойн-адрес по HTTP, вам необходимо защитить инфраструктуру DNS, SSL и убедиться, что ваш сайт защищен от атак XSS, CSRF на основе HTTP.

Вот несколько ссылок, которые помогут вам начать работу по защите HTTP:

Ультрасовременная безопасность DNS

  • Используйте DNSSec с доверенным корневым доменом, который поддерживает DNSSEC в корне (.com, .org и т. д.)
  • Используйте TLSA RFC6698 для самостоятельной публикации ключей SSL в DNS .

Для клиентов ТЗ

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

Как правило, атака не специфична для биткойнов. Это просто вопрос безопасного получения любых данных между двумя сторонами. Это становится все более и более сложным в зависимости от ограничений, которые вы применяете — может ли злоумышленник изменить обе стороны связи, есть ли какой-либо безопасный канал, какой-то секрет, которым обмениваются стороны, или они знают что-нибудь друг о друге?

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

Гэвин Андресен написал: «Нам нужен платежный протокол со встроенной защитой от отказа».

Он предлагает метод, в котором закрытый ключ для адреса становится правом подписи платежных запросов для объекта.

В качестве альтернативы, внешний по отношению к биткойну уровень может быть построен с использованием GPG.

В этой теме рассматриваются вопросы и возможные решения:

Прочитав вопрос, я сразу подумал о вашей ветке и проекте Гэвина, но это только позволяет доказать, что обе стороны согласовали платежный адрес до того, как произошла транзакция. Не могли бы вы уточнить, чем это решение лучше, чем, скажем, SSL, если процесс захватывается с самого начала MITM?
Что лучше, чем SSL? TLS 3.2 с TLSA (RFC6698) плюс DNSSec ~или~ адрес ToR .onion. Биткойн будет поддерживать текущие лучшие практики, если он сделает это.
@Серит, не уверен, что ты имеешь в виду под «обе стороны согласны». Если запрос включает подписанное сообщение, то одна сторона представляет адрес, а отправитель выбирает подтверждение или отправку без подтверждения. Но позже, если отправитель утверждает, что не получил средства, у отправителя есть подписанное сообщение, подтверждающее, что средства были отправлены на запрошенный адрес.