Вернуться   Биткоин Форум > Разработка и Техническое Обсуждение
20 августа 2011, 4:12:27 AM   # 1
 
 
Сообщения: 1428
Цитировать по имени
цитировать ответ
по умолчанию Re: Защита от 0 / неподтвержденных двойному расходов

Взлом Биткоин адресов.
500 Биткоинов взломаны в "мозговом кошельке" с паролем "bitcoin is awesome"
Адрес кошелька: 14NWDXkQwcGN1Pd9fboL8npVynD5SfyJAE
Приватный ключ: 5J64pq77XjeacCezwmAr2V1s7snvvJkuAz8sENxw7xCkikceV6e
подробнее...


Всем кто хочет заработать Биткоины без вложений - рекомендую сайт http://bitcoin-zarabotat.ru
Я слышал много о том, как маленькая точка продажи (Pos) сделки не представляется возможным, потому что это слишком опасно принимать их на "0 / неподтвержденный" государство. Тем не менее, я не знаю, почему это должно быть проблемой, и до сих пор, я не смог найти какой-либо дискуссии по этому поводу.  Если мои предположения верны, то любой человек может очень надежно защитить от 0 / неподтвержденный дважды проводят с не более чем простой модификации клиента. В худшем случае, небольшая модификация протокола может сделать этот вектор атаки практически невозможно.    Я буду описывать предположения и вектор атаки, а затем раствор после этого.


Предположения:

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

Атака:

Атакующий ставит специальное программное обеспечение на свой телефон, который используется для оплаты торговцев в PoS ситуациях. Это программное обеспечение предназначено таким образом, что всякий раз, когда он инициирует транзакцию, телефон будет транслировать "верный" ТЙ до половины узлов он подключен, а затем 0.1 секунды спустя транслируемых в секунду, конфликтует ПРД на другую половину узлов. Второй ТХ будет переходом к себе с использованием тех же результатов, как первые ТМИ они видели.

Первая сделка будет рассматриваться ~ 70% сети первого, и злоумышленник надеется коммерсант узел увидит его первым, тоже. Шахтеры в этом 70% будут считать, что это реальный ОЙ и начать пытаться включить его в блоке. Остальные 30% первым увидит вторую сделку, считают его "реальный", Начинают пытаться включить его в блок. Обе группы узлов получит слово из другой транзакции, когда он проходит дальше, но будет молча игнорировать его, потому что он конфликтует с первой сделкой, которую они получили.

На данный момент, забыть о 30% вероятности того, что продавец первым видит ненужную операцию (как только человек тяготит это злоумышленником). Предположим, что коммерсант находится в 70% группе. Торговец будет видеть ожидаемый ТХ, как 0 / неподтвержденные, и покупатель берет свой товар и выходит из магазина. Тем не менее, есть 30% вероятность того, что ТЕ к себе заканчивается в следующем блоке и 0 / неподтвержденный ТХ купеческого будет недействительным. В этом случае клиент уже вышел из магазина, и его сделка является анонимной достаточно что торговец может просто есть потери $ 100 вместо того, чтобы пытаться получить его исследовали.

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


Обороны:

В этой ситуации, торговец узел имеет 20+ сверстников, и с 30% сетей будучи убеждено, что другая транзакция действительно, по крайней мере, один из этих коллег будут посылать ему противоречивую сделку. Путь клиента написано сейчас, сделка просто отклонен, поскольку он конфликтует с первым. Тем не менее, я не понимаю, почему клиентское программное обеспечение не может быть разработан, чтобы видеть, что вторая сделка является угрозой для первого ТХ и, вместо того, чтобы отвергнуть его, предупреждая пользователя, что есть угроза для одного из его собственных операций. Это очень надежный, потому что для того, чтобы нападение, чтобы иметь шансы на успех, злоумышленник должен немедленно транслировать второй ТХ после первого, либо 99% + сети будет увидеть первый TX, а второй будет DOA и не распространяются.  Таким образом, либо второй ТХ не распространяется, и атака не удается, или торговец немедленно см противоречивой сделки и принять соответствующие меры: отказать в обслуживание, позвоните в полицию, держать деньги, и т.д. Я не могу думать о уважительных причинах, почему конфликтует ТМ будет распространяющимися в то же время, если не был злой умыслом. 

Независимо от намерения / легальности, торговец имеет оправдание, чтобы отказаться от услуг на товарах до ТХОВ является подтверждены в блоке. Клиент может избежать вынужден ждать 1+ подтверждений просто не пытаюсь двойным потратить. Если нет конфликтующих транзакций, то первая / только сделка почти гарантированно будет включено в следующий блок на 0 / неподтвержденный, и клиент не может ничего сделать, чтобы обратить его вспять.

Более далеко идущие, но еще более надежным, клиентское программное обеспечение может быть установлено с новым сообщением протокола специально для этого события. Если Любые узел принимает транзакцию, которая конфликтует с транзакцией в настоящее время в блоке он пытается решить, это просто транслирует новое "dsalert" сообщение, которое содержит два хэш конфликтующих сделок в вопросе. Тогда, даже если только 1% узлы думают, что конфликтующие ОЕ является действительным, и торговец не имеет себе равные в этой группе, они все равно станут известны в течение нескольких секунд, что они должны ждать подтверждения, прежде чем разрешить клиенту оставить его товар.  Все, что необходимо для дополнительного цикла в коде, чтобы проверить только что полученные операции против всех неподтвержденных операций и уведомляет пользователя / коллег, если он видит одну.

Так? 
Если мои предположения и оценка верна, то, казалось бы, что торговец фактически не нуждается в третьей стороне, чтобы избежать 0 / неподтверждённую двойной расходы. Если атака имеет шанс на успех, то не было бы прямым доказательством того, что клиент пытается обмануть их. Где я буду неправильно во всем этом?
 
etotheipi сейчас офлайн Пожаловаться на etotheipi   Ответить с цитированием Мультицитирование сообщения от etotheipi Быстрый ответ на сообщение etotheipi


Как заработать Биткоины?
Без вложений. Не майнинг.


20 августа 2011, 5:02:40 AM   # 2
 
 
Сообщения: 1232
Цитировать по имени
цитировать ответ
по умолчанию Re: Защита от 0 / неподтвержденных двойному расходов

Получил 1806 Биткоинов
Реальная история.





это открывает банку с червями. я мог бы найти весь баланс сайта, если можно депонировать / снимать с 0 подтверждает на велосипеде всех ключей там бумажник.

Кроме того, вы можете заменить операции с использованием последовательности недействительности старого ТМ.

не хорошая идея
genjix сейчас офлайн Пожаловаться на genjix   Ответить с цитированием Мультицитирование сообщения от genjix Быстрый ответ на сообщение genjix

20 августа 2011, 5:06:21 AM   # 3
 
 
Сообщения: 1260
Цитировать по имени
цитировать ответ
по умолчанию Re: Защита от 0 / неподтвержденных двойному расходов

Если предположить, что мы не обращая внимания на атаки Финней, вы также должны иметь в виду, что это открывает большой DoS отверстие, позволяя злоумышленнику иметь сеть ретрансляции нескольких сообщений в транзакции.
Магид сейчас офлайн Пожаловаться на Maged   Ответить с цитированием Мультицитирование сообщения от Maged Быстрый ответ на сообщение Maged

20 августа 2011, 5:07:39 AM   # 4
 
 
Сообщения: 1372
Цитировать по имени
цитировать ответ
по умолчанию Re: Защита от 0 / неподтвержденных двойному расходов

Моя идея устойчивой гарантии транзакций службы будет идти, как это: "связь" система. депозиты клиентов деньжат "банка"И торговцы могут сделать API вызовы к "банка" чтобы гарантировать неподтвержденные транзакции XYZ. Баланс клиента блокируется на шесть блоков.  

Если сделка состоится, то все хорошо. Если нет, то продавец получает от банка, который вычитает его из баланса клиента.
casascius сейчас офлайн Пожаловаться на casascius   Ответить с цитированием Мультицитирование сообщения от casascius Быстрый ответ на сообщение casascius

20 августа 2011, 5:24:19 AM   # 5
 
 
Сообщения: 140
Цитировать по имени
цитировать ответ
по умолчанию Re: Защита от 0 / неподтвержденных двойному расходов

Кроме того, вы можете заменить операции с использованием последовательности недействительности старого ТМ.

Вы referering в поле nSequence входов сделки?

Я думал, что был заблокирован.
samr7 сейчас офлайн Пожаловаться на samr7   Ответить с цитированием Мультицитирование сообщения от samr7 Быстрый ответ на сообщение samr7

20 августа 2011, 5:36:02 AM   # 6
 
 
Сообщения: 1428
Цитировать по имени
цитировать ответ
по умолчанию Re: Защита от 0 / неподтвержденных двойному расходов

@genjix:  Я не вижу, как порядковый номер может быть использован здесь. Прежде всего, я думал, что были отключены нестандартные порядковые номера. Во-вторых, торговцы вполне способны требовать клиентам использовать 0xffffffff порядковые номера, и можно увидеть порядковый номер в / неподтвержденные транзакции 0. Любой клиент, который не согласен должен ждать подтверждения.

@Maged:  Финни атаки совершенно неуместные здесь. Для того, чтобы выполнить атаку Финней вы не только должны иметь огромное количество вычислительной мощности и быть очень повезло, чтобы добиться успеха, но вы рискуете потерять 50 BTC вы могли бы получили, если вы только что передали блок, когда вы его нашли.  Сделка, вероятно, должна быть более чем $ 1000 / 100BTC для атакующего статистически безубыточным пытаемся стянуть Финную атаку.   Это обсуждение о PoS сделок, таких как покупка продуктов или получить новый принтер в Best Buy. Любой не-идиот торговец требует как минимум одно подтверждение для сделок более 50 BTC, что вполне разумно для крупных покупок.

Кроме того, я не говорю, что единственный способ реализации этой защиты является внедрение нового сообщения. Вы все еще можете получить 95% от обороны, просто поставив галочку в собственном клиенте, как я описал. Но даже если бы мы сделали следующее предупреждение, не будет добавить огромное количество безопасности в сети очень мало затрат (возможно, мое понимание того, что замедляет сеть выключена)? Каждый узел будет транслировать только вперед / 100-байтовое оповещение один раз, когда это происходит, что было бы очень редко по сравнению с общим количеством сделок. Сравните это с 500+ байт, которые должны были быть обработаны узлом, чтобы получить два противоположных сделок с самого начала. Это не случается часто, и это не тонны дополнительных данных. Кроме того, любой узел, который пытается DoS разослав множество конфликтующих ТХ будет отключен в любом случае для рассылки спама.

@casascius Ваша идея вполне допустима. Но цель Bitcoin является удаление посторонних лиц в максимально возможной степени. Почему мы должны платить дополнительные сборы третьей стороной для обработки этих типов "облигации" как вы описываете, когда все мы вполне способны справиться с ним самим? Если моя идея является случайностью, то ваша идея, вероятно, идеально. Но все предпочел бы оставить посторонние лицо из наших сделок (для третьих сторон, за исключением).

etotheipi сейчас офлайн Пожаловаться на etotheipi   Ответить с цитированием Мультицитирование сообщения от etotheipi Быстрый ответ на сообщение etotheipi

20 августа 2011, 10:37:32 AM   # 7
 
 
Сообщения: 249
Цитировать по имени
цитировать ответ
по умолчанию Re: Защита от 0 / неподтвержденных двойному расходов

Во-первых: Я согласен, что мониторинг сети для конфликтующих операций является хорошим способом, чтобы сделать двойной атаки тратить гораздо сложнее. Будь или не изменить протокол, что является предметом обсуждения. Идея ввести некоторый тип двойного сообщения израсходует оповещения также недавно обсуждалась в списке рассылки, но консенсус, кажется, на данный момент не вводить какую-либо дополнительных связи для этого.

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

Однако:

Финни атаки совершенно неуместные здесь. Для того, чтобы выполнить атаку Финней вы не только должны иметь огромное количество вычислительной мощности и быть очень повезло, чтобы добиться успеха, но вы рискуете потерять 50 BTC вы могли бы получили, если вы только что передали блок, когда вы его нашли.  

Я бы не стал увольнять нападение Финней так легко. Давайте представим себе такой сценарий: Жулик оператор бассейн обеспечивает небольшой побочный бизнес, который принимает сделки, которые конфликтуют с текущими неподтвержденными транзакциями и будет включать их в следующий блок, если бассейн будет один, который находит следующий блок. Скажем, этот бассейн имеет 5% хеширования мощности сети.

Теперь, когда я плачу купец, я представить противоречивую сделку в пул (пул не транслирует эту сделку, так что сеть не будет знать об этом). Если бассейн не найти следующий блок, ничего не происходит. Но если пул находит следующий блок (шанс на 5%) я получить свои деньги обратно, и только придется заплатить определенную плату мошенника бассейна для проведения атаки. Главное, хотя в том, что ни бассейн, ни я рискую ничего пытается эту атаку.

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

Я нахожу этот сценарий атаки довольно реалистично и, как таковой, я не уверен, если я бы посоветовал купец сегодня принимать нулевые операции подтверждения даже с двойным механизмом обнаружения проводят, как описано вами.
JAV сейчас офлайн Пожаловаться на JAV   Ответить с цитированием Мультицитирование сообщения от яв Быстрый ответ на сообщение яв

20 августа 2011, 1:36:10 PM   # 8
 
 
Сообщения: 1428
Цитировать по имени
цитировать ответ
по умолчанию Re: Защита от 0 / неподтвержденных двойному расходов

Ааа. Если злоумышленник имеет "друзья" с любым значительным количеством вычислительной мощности, что не будет повторно транслировать полученные транзакции, то конфликтующая сделка будет надежно скрыта от всех других узлов. Я не могу видеть, как обойти это. Я думаю, единственный оставшийся поток у меня здесь в том, что мы все еще говорим о небольших сделках Pos. Так же, как описано в других местах, это может быть еще дешевле 7-11, чтобы принять такие сделки для мелких покупок, и есть потери, когда это происходит. Я думаю, что если 10% всех пользователей пытались это нападение, это было бы чрезвычайно высока, но это означало бы лишь 0,5% сделок будет в конечном итоге вспять. Это, вероятно, по-прежнему дешевле, чем платить VISA $ 0,50 обрабатывать бутерброд с $ 6,79. Было бы легко установить разумный порог (намного ниже, чем атаки порога Финни я упоминал выше), что делает это практически несущественным для торговца.

Конечно, если это оказывается последовательным 5% шанс на успех для покупателя без риска быть пойманным или жулик бассейн поимки, 10% пользователей, пытающихся это может быть не так смешно. Тем не менее, я не чувствую, что это относится к категории А "Финни атака," так как никто не держит на блок решения с риском потерять его. Это просто более-продвинутая версия атаки я описал в моей должности. Но, метка не имеет никакого значения, так что я отвлекся ...

Я буду продолжать думать об этом, но это звучит, как это понятие уже выявлены, обсуждены и "отвергнуто" люди умнее меня. Я до сих пор считаю, что обнаружение DS это отличная идея, и может быть включено в клиент по умолчанию всплывающего уведомления, когда их собственный клиент обнаружит попытку DS, но я вижу, что это не решает проблему.
etotheipi сейчас офлайн Пожаловаться на etotheipi   Ответить с цитированием Мультицитирование сообщения от etotheipi Быстрый ответ на сообщение etotheipi

20 августа 2011, 8:29:46 PM   # 9
 
 
Сообщения: 1372
Цитировать по имени
цитировать ответ
по умолчанию Re: Защита от 0 / неподтвержденных двойному расходов


Предположения:

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

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

  • Узлы будут работать, чтобы включать в ТХ они видят первый в блок, и исключить его из своей очереди, если новый блок решается, что конфликты с ним.

Я думаю, что шахтеры будут скорее работать на ТЙ с более высокой платой, даже если они получили его позже.
jtimon сейчас офлайн Пожаловаться на jtimon   Ответить с цитированием Мультицитирование сообщения от jtimon Быстрый ответ на сообщение jtimon



Как заработать Биткоины?

Bitcoin Wallet * Portefeuille Bitcoin * Monedero Bitcoin * Carteira Bitcoin * Portafoglio Bitcoin * Bitcoin Cüzdan * 比特币钱包

bitcoin-zarabotat.ru
Почта для связи: bitcoin-zarabotat.ru@yandex.ru

3HmAQ9FkRFk6HZGuwExYxL62y7C1B9MwPW