Author

Topic: What would it take to make a 51% attack on the whole bitcoin network? (Read 1815 times)

newbie
Activity: 28
Merit: 0
Просто игнорируя все честные блоки захватчик и обеспечивает максимальную длину своей цепочки
Стоп. Все-все блоки после последнего вшитого в клиент? Huh
Все-все, начиная с момента атаки. Если засранцы будут строить свою собственную цепочку, то она при любом раскладе выйдет длиннее, чем получится у законопослушных майнеров
LZ
legendary
Activity: 1722
Merit: 1072
P2P Cryptocurrency
Звучит логично. Получается, клиент в момент получения новой цепочки должен
проверить не пропущены ли в ней какие-либо транзакции, при наличие таковых
сразу ретранслировать эти транзакции или отказаться от такой цепочки. Лично
я выбрал бы вариант с повторной ретрансляцией, чем совсем отказываться от
более сильной цепочки. Как-то уж больно радикально, а на 100% нельзя быть
уверенным, что это мошенничество. Однако, если же в новой цепочке будут
транзакции с теми же монетами на другие адреса, тогда уже вполне можно.

В общем, полезу-ка я в исходный код, посмотрю, как там сейчас дела... Undecided

Просто игнорируя все честные блоки захватчик и обеспечивает максимальную длину своей цепочки
Стоп. Все-все блоки после последнего вшитого в клиент? Huh
newbie
Activity: 28
Merit: 0
Еще непонятно как игнорирование работы честных клиентов может дать преимущество захватчику. Если я
правильно понимаю, это лишь незначительно увеличит скорость хеширования, так как ему
не придется перезапускать задачу при получении новых данных. Или я тут что-то упускаю?
Просто игнорируя все честные блоки захватчик и обеспечивает максимальную длину своей цепочки

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

Допустим, мошенничество обнаружено, а дальше что делать? У нас же сеть анонимная..
Легальные клиенты просто продолжают работать по старой, хоть и более короткрой цепочке. В чем проблема?
newbie
Activity: 28
Merit: 0
Quote from: rPman
А как определить, какая из цепочек не валидная?
По текущим правилам обе цепочки валидные до тех пор, пока не нужно принимать решение о разветвлении

Quote from: rPman
и мне непонятно, каким алгоритмом это можно было бы выявить..
Ну, во-первых она опаздывает на час, и вместе с ней еще 6 новых блоков, во-вторых она уже обработана другими участниками...

Quote from: rPman
нет никаких правил по выбору, какие транзакции включать в блок, а цепочка атакующего отличается от обычной только отсутствием в ней определенных транзакций
Жестких правил нет, но алгоритм выбора у всех клиентов сейчас общий (хотя может отличаться незначительно в зависимости от версии)
Я предлагаю ввести обязательное правило - если транзакция поступила в сеть более, чем 10 минут назад (я надеюсь этого достаточно, чтобы она достигла всех майнеров), и для нее есть место в блоке, то она обязана быть в него включена. Хотя, наверное, проще будет обязать всех майнеров обрабатывать ВСЕ транзакции из orphaned блоков
Может быть, еще ввести максимально допустимую комиссию, при уплате которой, транзакция получает максимальный приоритет и будет обработана в любом случае - можно не ждать подтверждений, если такая транзакция попадает в сеть

Quote from: rPman
Если я правильно понял, как все описал, то для успешной атаки достаточно мощностей среднего пула, с 20-30% мощности и везения
Вроде все правильно, разве что монеты из отменяемой транзакции нужно перевести куда-нибудь в другое место - иначе ее все равно включат в новые блоки
LZ
legendary
Activity: 1722
Merit: 1072
P2P Cryptocurrency
Ну не может же транзакция распространяться по сети целый час...
Нет, распространяется мгновенно. Эти 6 блоков - это условная мера защиты от двойного платежа.
Однако, двойной платеж сомнительная цель при неразумных затратах "в 100-130кг бумажных денег".

На самом деле 51% от суммарной производительности - это и есть 102% мощности легальных узлов. И в этом случае вообще все блоки будут генериться захватчиком, т.к. он игнорирует работу честных клиентов и его цепочка получится длиннее
Действительно. Я был невнимателен. Однако, 102% явно недостаточно, чтобы генерировать
каждый 1 блок. Время от времени будут проходить и блоки других майнеров. Еще непонятно
как игнорирование работы честных клиентов может дать преимущество захватчику. Если я
правильно понимаю, это лишь незначительно увеличит скорость хеширования, так как ему
не придется перезапускать задачу при получении новых данных. Или я тут что-то упускаю?

Я говорю про обычный приоритет - тот который сейчас задается величиной комиссии и прочими факторами.
Теперь становится понятно. Я предполагал, что речь идет о неком подобии Web of Trust.

Т.е. если транзакция в сеть поступила - все легальные клиенты ее получили и обработали, но по какой-то причине, вдруг, оказывается, что появляется новая более длинная цепочка, без этой транзакции. По-моему, очевидно что это мошенничество и кто-то генерит блоки по своим собственным правилам...
Ну, мне было не очень очевидно. Благодарю, что описали подробнее. Впрочем, я и сейчас
сомневаюсь, что этого достаточно для однозначного обвинения в мошенничестве. Это же
мог быть и обычный сплит с последующим добавлением пропущенных транзакций в блок.
Ну, забыли одну-другую транзакцию добавить, нельзя же сразу сказать - что мошенники.
Допустим, мошенничество обнаружено, а дальше что делать? У нас же сеть анонимная...

Если я правильно понял, как все описал, то для успешной атаки достаточно мощностей среднего пула, с 20-30% мощности и везения.
Возможно. Но как я уже вроде говорил, тут сомнительная выгода при очень больших затратах.
 
legendary
Activity: 1120
Merit: 1069
4. подключает свой клиент к общей сети и информация о новой цепочке уходит в сеть - и эти 6 блоков становятся orphaned
Вы можете объяснить, зачем легальные клиенты принимают новые 6 блоков, если очевидно, что в них содержится мошенническая операция? Ну не может же транзакция распространяться по сети целый час... Но если даже такое происходит, то это явно проблемы с сетью у того майнера, который сгенерил эти 6 блоков
А как определить, какая из цепочек не валидная? нет никаких правил по выбору, какие транзакции включать в блок, а цепочка атакующего отличается от обычной только отсутствием в ней определенных транзакций, и мне непонятно, каким алгоритмом это можно было бы выявить.. хотя идей есть, пока я хочу понять только сам механизм атаки.

Если я правильно понял, как все описал, то для успешной атаки достаточно мощностей среднего пула, с 20-30% мощности и везения.
newbie
Activity: 28
Merit: 0
4. подключает свой клиент к общей сети и информация о новой цепочке уходит в сеть - и эти 6 блоков становятся orphaned
Вы можете объяснить, зачем легальные клиенты принимают новые 6 блоков, если очевидно, что в них содержится мошенническая операция? Ну не может же транзакция распространяться по сети целый час... Но если даже такое происходит, то это явно проблемы с сетью у того майнера, который сгенерил эти 6 блоков

Quote from: lzsaver
Так как невероятно маловероятно, что новая цепочка будет отличаться от старой более
чем на 100 блоков, то практически ни одна трансакция из старой цепочки не пропадет.
Честный захват регулярно происходит непроизвольно при сплитах сети. Проблемы нет.
Однако, проблемы могут возникнуть, если захватчик будет обладать более 100% всей
мощности сети (причем скорее всего - значительно больше 100%) и сможет каким-то
образом вбрасывать в сеть по 100+ блоков или генерировать каждый 1-ый блок сети.
Это весьма маловероятно, и речь уже идет не о 51%, а о 100%+ мощности всей сети
На самом деле 51% от суммарной производительности - это и есть 102% мощности легальных узлов. И в этом случае вообще все блоки будут генериться захватчиком, т.к. он игнорирует работу честных клиентов и его цепочка получится длиннее

Quote from: lzsaver
Допустим. Но кто будет выставлять приоритет?
Я говорю про обычный приоритет - тот который сейчас задается величиной комиссии и прочими факторами. Т.е. если транзакция в сеть поступила - все легальные клиенты ее получили и обработали, но по какой-то причине, вдруг, оказывается, что появляется новая более длинная цепочка, без этой транзакции. По-моему, очевидно что это мошенничество и кто-то генерит блоки по своим собственным правилам...
LZ
legendary
Activity: 1722
Merit: 1072
P2P Cryptocurrency
Это относится к усложнению хэширования и введению рейтинга для узлов?
Да, именно.

Для начала нам требуется выявить основные аксиомы работы сети.
1. Есть общие правила работы сети, все честные узлы сети соблюдают эти правила.
2. Блоки и транзакции бывают двух типов: совместимые с правилами и несовместимые.
3. Невозможно обмануть честные узлы, нарушив правила; такие действия игнорируются.
4. Захват возможен только при соблюдении захватчиком всех общих правил сети Bitcoin.
5. Нечестный захват возможен только при переводе всех узлов на несовместимый клиент.

задача сводится к идентификации правонарушителя
Хорошо, сеть заметила нарушителя, как это может принести какую либо пользу?
В следующий раз он выйдет в сеть с другого IP, что сводит к 0 возможную пользу.

Но, конечно, не в том смысле, чтобы отслеживать

денежные потоки или IP адреса злоумышленника.
Ну, а какую еще информацию можно получить от факта идентификации нарушителя?

Цель простая - нужно определить, какая из двух

цепочек настоящая, а какая поддельная
Ну, а почему нельзя просто игнорировать блоки, которые генерит атакующий?
Сейчас это проделывает каждый узел сети для каждой транзакции и для каждого блока.
Несовместимые действия - просто игнорируются. То есть нечестный захват не пройдет.
Допустим, что появилась цепочка не имеющая переводов, а только геренацию по 50 BTC
на адрес захватчика. Допустим, данная цепочка "сильнее" старой, то есть рассмотрим
вариант честного захвата. Захватчик соединяется с честными узлами и передает новую
более сильную цепочку. Однако, тем самым он делает услугу сети, так как увеличивает
криптостойкость системы. Такая услуга должна быть оплачена, и на мой взгляд 50 BTC
за каждый более сильный блок - достойная награда. Транзакции, которые были в блоках
старой цепочки, будут сразу добавлены в новую более сильную сразу, как только некий
честный майнер сможет сгенерировать очередной новый блок для новой сильной цепочки.
Так как невероятно маловероятно, что новая цепочка будет отличаться от старой более
чем на 100 блоков, то практически ни одна транзакция из старой цепочки не пропадет.
По факту такое регулярно происходит непроизвольно при сплитах сети. Проблемы нет.
Однако, проблемы могут возникнуть, если захватчик будет обладать более 100% всей
мощности сети (причем скорее всего - значительно больше 100%) и сможет каким-то
образом вбрасывать в сеть по 100+ блоков или генерировать каждый 1-ый блок сети.
Это весьма маловероятно, и речь уже идет не о 51%, а о 100%+ мощности всей сети.

Если приходится выбирать одну цепочку из двух, то просто выбирать ту, в которой обрабатывается большинство валидных транзакций с достаточным приоритетом.
Допустим. Но кто будет выставлять приоритет? Сколько будет стоить получить приоритет?
Не будет ли такого вида атака значительно дешевле захвата 100%+ мощности всей сети?
Что помешает захватчику годами копить приоритет, а затем резко обмануть весь мир?

В любом случае, не вижу смысла оставлять дыру в безопасности, если ее можно легко заделать
Я уверен, что эта "дыра в безопасности" - лишь плод воображения неспециалистов.
legendary
Activity: 1120
Merit: 1069
Как выглядит атака 51% на практике? а именно, как долго необходимо обладать большими мощностями и что именно нужно делать?

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

1-2 блока разница, и получаем типичную ситуацию с orphaned блоками.. но 1-2 блока недостаточно для подтверждения транзакции, необходимо минимум 6

т.е. получается атакующий должен:
1. создать транзакцию в общей сети
2. разорвать связь между своим клиентом и реальным (точнее блоки можно загружать для 'посмотреть', но использовать только те данные, что были до транзакции)
3. как только в основной сети наберется 6 блоков (у атакующего должно набраться больше), атакующий делает свое черное дело (получает услуги/бабки за средства в той транзакции)
4. подключает свой клиент к общей сети и информация о новой цепочке уходит в сеть - и эти 6 блоков валидной сети становятся orphaned?
2.1. для большей достоверности атакующий может включать в свои блоки транзакции из реальной сети, кроме своей собственной и всех других, использующих монеты, затронутые отменяемой транзакцией.

факты:
* блоки идут сериями X коротких Y длинных (чаще всего соотношение 3 к 1)... т.е. для успешной атаки необходимо чтобы атакующему повезло и у него получилось больше блоков чем у остальной сети - а это уже не 51% а 30% мощности.. или даже меньше (все сводится к увеличению попыток)

p.s. я все верно описал?
newbie
Activity: 28
Merit: 0
Это относится к усложнению хэширования и введению рейтинга для узлов?

Ну, а почему нельзя просто игнорировать блоки, которые генерит атакующий?
Quote from: pioneer
Самое примитивное решение. Если приходится выбирать одну цепочку из двух, то просто выбирать ту, в которой обрабатывается большинство валидных транзакций с достаточным приоритетом

Quote
требуемые для атаки невероятные затраты не оправдывают извлеченной выгоды
Мне трудно оценивать выгоду, которую смогут получить "террористы" на данном этапе развития, также неизвестно какая часть мощности им уже принадлежит... В любом случае, не вижу смысла оставлять дыру в безопасности, если ее можно легко заделать
LZ
legendary
Activity: 1722
Merit: 1072
P2P Cryptocurrency
Хорошо, что Вам небезразлична судьба сети. Однако, не вижу пользы в обоих вариантах.

Цель задачи: препятствовать захвату 51% от всей мощности вычислительной сети Bitcoin.
Что делает 1 вариант: обычные пользователи уйдут из майнинга, дорога к захвату открыта.
Что делает 2 вариант: захватчик сделает все, чтобы накрутить себе рейтинг и захватит сеть.

А вообще прочитайте/перечитайте Миф #20. Если желаете, можем обсудить более детально.
newbie
Activity: 28
Merit: 0
Собственно, проблема в чем? Существует опасность, что некоторая криминальная организация может подготовить террористическую атаку, и получить контроль над более, чем 51% мощности сети. Затраты на финансирование подобной атаки оцениваются всего-лишь в 100-130кг бумажных денег
В англоязычной ветке уже идет обсуждение по данному вопросу. В основном, предлагают как-то усложнять алгоритм хэширования, путем повышения требований к ресурсам процессора и/или памяти

Но мне кажется, что более рациональным будет сделать чего-нибудь в подобном направлении:
I think the better way to find the decision is to think about changing a way of cooperation of nodes. For example it is possible to create a system of trust between nodes. If one node makes some suspicious actions (destributes a new block that not contains a majority part of transactions or new block chain that removes the last 10 blocks), its "rank" decreases. If a node destribute good information, its "rank" increased. Information from nodes with too low "rank" is skipped. Its only a raw idea, I know. I just want to show the direction of how else it could be.
Т.е. задача сводится к идентификации правонарушителя. Но, конечно, не в том смысле, чтобы отслеживать денежные потоки или IP адреса злоумышленника. Цель простая - нужно определить, какая из двух цепочек настоящая, а какая поддельная, т.е. скорректировать условие valid chain = longer chain

Самое примитивное решение. Если приходится выбирать одну цепочку из двух, то просто выбирать ту, в которой обрабатывается большинство валидных транзакций с достаточным приоритетом. Пока не понял, какие проблемы могут возникнуть, если такое реализовать?
Jump to: