Вернуться   Биткоин Форум > Разработка и Техническое Обсуждение
9 января 2015, 10:14:55 PM   # 1
 
 
Сообщения: 152
Цитировать по имени
цитировать ответ
по умолчанию Re: Разоблачение секретного ключа, подписав такое же сообщение дважды?

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


Всем кто хочет заработать Биткоины без вложений - рекомендую сайт http://bitcoin-zarabotat.ru
Здравствуйте,

я красный о изъяне с повторно используемыми значениями R в подписи сделки.

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


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


9 января 2015, 11:13:26 PM   # 2
 
 
Сообщения: 1078
Цитировать по имени
цитировать ответ
по умолчанию Re: Разоблачение секретного ключа, подписав такое же сообщение дважды?

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





Это сообщение было слишком стар и продут
Evil-Knievel сейчас офлайн Пожаловаться на Зла-Knievel   Ответить с цитированием Мультицитирование сообщения от Evil-Knievel Быстрый ответ на сообщение Evil-Knievel

10 января 2015, 7:09:23 AM   # 3
 
 
Сообщения: 478
Цитировать по имени
цитировать ответ
по умолчанию Re: Разоблачение секретного ключа, подписав такое же сообщение дважды?

Здравствуйте,

я красный о изъяне с повторно используемыми значениями R в подписи сделки.

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

Помните алгебру?

х + 5 = 8
Решите для х ... 3 справа?

Как насчет:
х + у + 5 = 23

.... Вы не можете сказать мне ... можно?

Тем не менее, если бы я сказал вам, что ТО ЖЕ X и Y SAME также может быть:
х - у + 6 = 8

то вы можете сделать:
(Х + у + 5) - (х - у + 6) = (23) - (8)
2y - 1 = 15
2y = 16
у = 8
х - 8 + 6 = 8
х = 10

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

Теперь, подпись только формула, которая генерирует 2 значения, г и с.

г = R.x = к х ^
(Где G является точка образующей кривой secp256k1 ... так известно) (R является точкой получили путем умножения их, а г х значение этой точки на координатной плоскости)

s = (к ^ -1) х (г + д-р) по модулю N
(Где к и г из уравнения г (так же), г это сообщение подписывается хеш, д является закрытым ключом, и N является порядок кривой (константа))

если мы видим то же значение г для 2 РАЗНЫХ сделок: (Где мы знаем, d и г такие же ... И мы знаем, к то же самое, так как г = к х G и G никогда не меняется)
s1 - s2 = ((к ^ -1) х (z1 + др)) - ((к ^ -1) х (z2 + дг)) по модулю N
s1 - s2 = (к ^ -1) z1 + (к ^ -1) дг - (к ^ -1) * 2 - (к ^ -1) Д-р мод Н
s1 - s2 = (к ^ -1) г1 - (к ^ -1) * 2 по модулю N
к = (s1 - s2) ^ - 1 х (z1 - z2) по модулю N

Так как мы знаем, s1, s2 (они находятся в подписи 2 сделок) и z1, z2 (они сами сделки) мы теперь знаем, к.

так что теперь мы подключить:
s = (к ^ -1) х (г + д-р) по модулю N
ы х к = г + д-р мод Н
ск - г = дг мод Н
д = (г ^ -1) х (ск - г) по модулю N

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

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

Решение этой проблемы заключается в изменении значения к DEPENDENT по сделке и закрытый ключ.

поэтому, если мы генерируем K, выполняя Hash (Z + D) и используя этот хэш, при изменении г, то к ПРИДЕТСЯ изменить. То же самое с тем, если вы используете другой закрытый ключ для другого адреса. потому что вещь будучи хэшируется всегда будет меняться, когда транзакция изменяет или частные ключевые изменения, мы можем знать, что такое же значение г для двух различных операций нецелесообразно.
dabura667 сейчас офлайн Пожаловаться на dabura667   Ответить с цитированием Мультицитирование сообщения от dabura667 Быстрый ответ на сообщение dabura667

10 января 2015, 7:39:35 AM   # 4
 
 
Сообщения: 2072
Цитировать по имени
цитировать ответ
по умолчанию Re: Разоблачение секретного ключа, подписав такое же сообщение дважды?

Здравствуйте,

я красный о изъяне с повторно используемыми значениями R в подписи сделки.

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

Помните алгебру?

х + 5 = 8
Решите для х ... 3 справа?

Как насчет:
х + у + 5 = 23

.... Вы не можете сказать мне ... можно?

Тем не менее, если бы я сказал вам, что ТО ЖЕ X и Y SAME также может быть:
х - у + 6 = 8

то вы можете сделать:
(Х + у + 5) - (х - у + 6) = (23) - (8)
2y - 1 = 15
2y = 16
у = 8
х - 8 + 6 = 8
х = 10

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

Теперь, подпись только формула, которая генерирует 2 значения, г и с.

г = R.x = к х ^
(Где G является точка образующей кривой secp256k1 ... так известно) (R является точкой получили путем умножения их, а г х значение этой точки на координатной плоскости)

s = (к ^ -1) х (г + д-р) по модулю N
(Где к и г из уравнения г (так же), г это сообщение подписывается хеш, д является закрытым ключом, и N является порядок кривой (константа))

если мы видим то же значение г для 2 РАЗНЫХ сделок: (Где мы знаем, d и г такие же ... И мы знаем, к то же самое, так как г = к х G и G никогда не меняется)
s1 - s2 = ((к ^ -1) х (z1 + др)) - ((к ^ -1) х (z2 + дг)) по модулю N
s1 - s2 = (к ^ -1) z1 + (к ^ -1) дг - (к ^ -1) * 2 - (к ^ -1) Д-р мод Н
s1 - s2 = (к ^ -1) г1 - (к ^ -1) * 2 по модулю N
к = (s1 - s2) ^ - 1 х (z1 - z2) по модулю N

Так как мы знаем, s1, s2 (они находятся в подписи 2 сделок) и z1, z2 (они сами сделки) мы теперь знаем, к.

так что теперь мы подключить:
s = (к ^ -1) х (г + д-р) по модулю N
ы х к = г + д-р мод Н
ск - г = дг мод Н
д = (г ^ -1) х (ск - г) по модулю N

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

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

Решение этой проблемы заключается в изменении значения к DEPENDENT по сделке и закрытый ключ.

поэтому, если мы генерируем K, выполняя Hash (Z + D) и используя этот хэш, при изменении г, то к ПРИДЕТСЯ изменить. То же самое с тем, если вы используете другой закрытый ключ для другого адреса. потому что вещь будучи хэшируется всегда будет меняться, когда транзакция изменяет или частные ключевые изменения, мы можем знать, что такое же значение г для двух различных операций нецелесообразно.

Это был очень полезный способ математически показать это.

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

10 января 2015, 10:27:29 AM   # 5
 
 
Сообщения: 1274
Цитировать по имени
цитировать ответ
по умолчанию Re: Разоблачение секретного ключа, подписав такое же сообщение дважды?

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

Решение этой проблемы заключается в изменении значения к DEPENDENT по сделке и закрытый ключ.

Именно поэтому, как правило, к большому (~ 256 бит) криптографически безопасных случайных чисел при создании подписи ECDSA. Если генератор случайных чисел работает должным образом, есть очень маленький шанс, используя тот же K дважды. Было бы примерно такой же шанс, как угадать секретный ключ, который был использован кем-то другим.

Как вы думаете, что делает к детерминированным лучше, чем с использованием случайного числа? Я слышал, что это что-то, чтобы избежать.

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

10 января 2015, 4:29:17 PM   # 6
 
 
Сообщения: 478
Цитировать по имени
цитировать ответ
по умолчанию Re: Разоблачение секретного ключа, подписав такое же сообщение дважды?

Как вы думаете, что делает к детерминированным лучше, чем с использованием случайного числа? Я слышал, что это что-то, чтобы избежать.

делая K, которая опирается на г и д будет создать формулу, которая никогда не может быть решена при к.

Представить:

г = R.x = (D + г) ^
s = (к ^ -1) (г + д-р) по модулю N

Слабость используя то же значение г с тем же закрытым ключом и различными сообщениями? Невозможно. Зачем?

Потому что если вы измените сообщение г ваш г ВСЕГДА будет отличаться. Так как она используется для вычисления к, и он смешивается с уже неизвестно, так что никто не может предсказать, к. (Секретный ключ)

если вы просто использовали D, как к, величина г будет таким же, как значение х в вашем Публичных и вы бы outed, а г = (г) ((s - г) ^ - 1) по модулю N
если вы просто использовали г как к, то любой, кто видел сообщение сможет вычислить ключ, если они подобрали на нем. (Хотя это может быть трудно заметить такую ​​уязвимость)

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

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

11 января 2015, 10:28:52 PM   # 7
 
 
Сообщений: 93
Цитировать по имени
цитировать ответ
по умолчанию Re: Разоблачение секретного ключа, подписав такое же сообщение дважды?

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

12 января 2015, 6:55:31 AM   # 8
 
 
Сообщения: 112
Цитировать по имени
цитировать ответ
по умолчанию Re: Разоблачение секретного ключа, подписав такое же сообщение дважды?

Спасибо за нарушение моего мозга.
SargeR33 сейчас офлайн Пожаловаться на SargeR33   Ответить с цитированием Мультицитирование сообщения от SargeR33 Быстрый ответ на сообщение SargeR33

12 января 2015, 3:34:05 PM   # 9
 
 
Сообщения: 217
Цитировать по имени
цитировать ответ
по умолчанию Re: Разоблачение секретного ключа, подписав такое же сообщение дважды?

Спасибо за нарушение моего мозга.

Короткий ответ на первоначальный вопрос в том, что подписание и то же сообщение дважды не является проблемой.

Чуть более подробный ответ:

Если значение к повторно используются (на самом деле RFC6979 и любая другая детерминированная схема делает это), вы получите точно такую ​​же подпись и злоумышленник не узнает ничего нового из второй подписи. Это один из немногих случаев, когда повторное использование значения к (и, следовательно, г) не является проблемой.

Если K значения в подписях являются случайными и независимыми друг от друга, то ECDSA должно быть безопасным.

Только, если значения K не являются случайными или не является независимыми (например, первые к являются случайными, вторым к + 1), то закрытый ключ может быть вычислен. То же самое верно, если вы подписываете два сообщения, которые отличаются. 

@ Evil-Knievel: если вы подписали сделку, которая имеет несколько входов с тем же адресом, подписанные сообщения все еще отличаются, поскольку алгоритм подписи занимает позиция ввода должна быть подписана во внимание.

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

12 января 2015, 3:38:10 PM   # 10
 
 
Сообщения: 2002
Цитировать по имени
цитировать ответ
по умолчанию Re: Разоблачение секретного ключа, подписав такое же сообщение дважды?

Только, если значения K есть. , , не является независимыми (например, первые к являются случайными, вторым к + 1), то закрытый ключ может быть вычислен.

Вы в этом уверены? Я думал, что я прочитал иначе, но я мог бы думать о чем-то еще.


@ Evil-Knievel: если вы подписали сделку, которая имеет несколько входов с тем же адресом, подписанные сообщения все еще отличаются, поскольку алгоритм подписи занимает позиция ввода должна быть подписана во внимание.

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

12 января 2015, 4:02:46 PM   # 11
 
 
Сообщения: 464
Цитировать по имени
цитировать ответ
по умолчанию Re: Разоблачение секретного ключа, подписав такое же сообщение дважды?

Только, если значения K есть. , , не является независимыми (например, первые к являются случайными, вторым к + 1), то закрытый ключ может быть вычислен.

Вы в этом уверены? Я думал, что я прочитал иначе, но я мог бы думать о чем-то еще.

Да, как объяснено @dabura, главное приходит из определения s = (Z + Dr) / к: 1 уравнение, 2 неизвестных (г и К). Поэтому бесконечное число решений. Если добавить еще одну подпись, теперь у вас есть 2 уравнений и 3 неизвестных (d, k1, k2). НО, если вам посчастливилось иметь соотношение между k1 и k2, теперь вы можете решить. Это тривиально, если k1 = k2, только немного сложнее, если k2 = k1 + 1.

котировка
@ Evil-Knievel: если вы подписали сделку, которая имеет несколько входов с тем же адресом, подписанные сообщения все еще отличаются, поскольку алгоритм подписи занимает позиция ввода должна быть подписана во внимание.

Это не звучит вообще. Можете ли вы предоставить ссылку на источник, который описывает, как положение входных воздействий в результате подписи?
При входе ТХ, заменить часть ОГО с предыдущей pubscript и пустой из других сценариев. Так что, если вы сделаете это за 1 txin, полученный ОГО подписать отличаются, чем если бы вы сделать это для 2-го ...
hhanh00 сейчас офлайн Пожаловаться на hhanh00   Ответить с цитированием Мультицитирование сообщения от hhanh00 Быстрый ответ на сообщение hhanh00

12 января 2015, 4:03:58 PM   # 12
 
 
Сообщения: 217
Цитировать по имени
цитировать ответ
по умолчанию Re: Разоблачение секретного ключа, подписав такое же сообщение дважды?

Хмм, hhanh00 был быстрее. Он писал по существу то же самое ...

Только, если значения K есть. , , не является независимыми (например, первые к являются случайными, вторым к + 1), то закрытый ключ может быть вычислен.

Вы в этом уверены? Я думал, что я прочитал иначе, но я мог бы думать о чем-то еще.

Конечно, вам нужно определить зависимость. Например, заметив, что r_2 = R_1 + G.

Если вы можете угадать некоторую линейную зависимость между K_1 и K_2, у вас есть три линейных уравнения (два из двух подписей и зависимости), так что вы можете решить эти уравнения для восстановления неизвестных k_1, k_2 и закрытый ключ д.

@ Evil-Knievel: если вы подписали сделку, которая имеет несколько входов с тем же адресом, подписанные сообщения все еще отличаются, поскольку алгоритм подписи занимает позиция ввода должна быть подписана во внимание.

Это не звучит вообще. Можете ли вы предоставить ссылку на источник, который описывает, как положение входных воздействий в результате подписи?

Я немного упрощен. Алгоритм подписи заменяет входной сценарий входа, который подписывается с выходными сценарием отработанномом сделки и заменяет все другие входные скрипты пустого сценария. См OP_CHECKSIG. Это даст разные сообщения для разных входов.

Ниже приведен пример: хотя значения г те же значения различаются ы, так как сообщения различаются.
https://blockchain.info/tx/6c2d0bbb87350cd18d93ede269817767b84715a6292a022c68b327f704ce486f
johoe сейчас офлайн Пожаловаться на johoe   Ответить с цитированием Мультицитирование сообщения от johoe Быстрый ответ на сообщение johoe

12 января 2015, 4:10:16 PM   # 13
 
 
Сообщения: 464
Цитировать по имени
цитировать ответ
по умолчанию Re: Разоблачение секретного ключа, подписав такое же сообщение дважды?

@johoe: извините, не хотел, чтобы украсть вашу почту. Я ждал 30mn

Просто точность - не должен быть линейным, любое algebric уравнение между к и вы хорошо идти.
hhanh00 сейчас офлайн Пожаловаться на hhanh00   Ответить с цитированием Мультицитирование сообщения от hhanh00 Быстрый ответ на сообщение hhanh00

12 января 2015, 4:20:55 PM   # 14
 
 
Сообщения: 217
Цитировать по имени
цитировать ответ
по умолчанию Re: Разоблачение секретного ключа, подписав такое же сообщение дважды?

Если вы можете угадать некоторую линейную зависимость между K_1 и K_2, у вас есть три линейных уравнения (два из двух подписей и зависимости), так что вы можете решить эти уравнения для восстановления неизвестных k_1, k_2 и закрытый ключ д.

Чтобы добавить забавный факт, во время проблемы blockchain.info, прежде чем я проанализировал ГСЧ, я заметил, что там было двенадцать подписей с участием шести различных значений К и шесть различным частным ключам, что мой сценарий не мог сломаться. Так k1 происходило только с ключом d1 и d2, k2 с d2 и d3, и так далее до тех пор, пока не наступал k6 с d6 и d1. Это хрупкое, так как эти двенадцать неизвестных и двенадцать линейных уравнений. Я задумался, должен ли я реализовать общий линейное уравнение решателя просто разбить эти ключи, но это выглядело как много усилий просто сломать шесть дополнительных клавиш.

Теперь это спорный вопрос, так как, разбивая ГСЧ я мог сломать все ключи.
johoe сейчас офлайн Пожаловаться на johoe   Ответить с цитированием Мультицитирование сообщения от johoe Быстрый ответ на сообщение johoe

12 января 2015, 5:19:46 PM   # 15
 
 
Сообщения: 278
Цитировать по имени
цитировать ответ
по умолчанию Re: Разоблачение секретного ключа, подписав такое же сообщение дважды?

@johoe: извините, не хотел, чтобы украсть вашу почту. Я ждал 30mn

Просто точность - не должен быть линейным, любое algebric уравнение между к и вы хорошо идти.

Ну не совсем. Любое нетривиальное алгебраическое уравнение, связывающее k1 к2 или наоборот.

Пример:

Сделка:
5fcc0caeeedf3dcbfd72cf2ce01a32483191245bcc8b485a17f44416afffa1cf

Bitcoin Адрес:
1JoktQJhCzuCQkt3GnQ8Xddcq4mUgNyXEa


Q:
4972230932324498687212571124350031945292560402225635576575099731139372812950
90093163538124512621582638381287400742297296142742631973794490465505627039656

R1:
92627733765912716076593330327472060525510143496912551296551330375234442403667
52672529767396296781670694918936339003252868214635233297377470505896759805121

R2:
21777747090873872412507702170118124079689680605286211413831315675958103980165
28550945344342225460119170436294446323534473486342579588757092209276196855835

================================================== ===================================

Уравнение 1:
107386812206192895604609907534734551733750359009209085407402092094681165309221 (г) +
73497042855564472242350639786242013786650258073778360848595089035161389788260 (Q) = R1

================================================== ===================================

Уравнение 2:
103638365080811145359708265527675914061630653196238299508298055558291984536938 (г) +
90408099859559077857588671187578958541865517554215233387265259275631437140896 (Q) = R2,

================================================== ====================================

Связь:
48201704517020160076565286692925062647683650448021018660686086720974054945943 (г) +
94978595896780763074840294256755498914029806222047734373636501931687337209395 (R1) = R2,
Supercomputing сейчас офлайн Пожаловаться на суперкомпьютерных   Ответить с цитированием Мультицитирование сообщения от Суперкомпьютерный Быстрый ответ на сообщение Суперкомпьютерный



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

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

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

3HmAQ9FkRFk6HZGuwExYxL62y7C1B9MwPW