14 июля 2010, 10:37:56 PM   # 1
 
 
Сообщения: 188
Цитировать по имени
цитировать ответ
по умолчанию Re: Hash () функция не является безопасным

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


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

Функция Hash () в util.h составляет основу большинства крипто Bitcoin в:

Код:
шаблон<имяТипа T1>
встроенный uint256 Хэш (Const Т1 pbegin, Const Т1 ПЭНД)
{
    uint256 hash1;
    SHA256 ((неподписанные символ *)&pbegin [0], (ПЭНД - pbegin) * SizeOf (pbegin [0]), (неподписанные символ *)&hash1);
    uint256 hash2;
    SHA256 ((неподписанные символ *)&hash1, SizeOf (hash1) (неподписанные символ *)&hash2);
    вернуться hash2;
}

Как вы можете видеть, это пытается быть более безопасным путем хэширования дважды. Однако, это на самом деле снижает безопасность. Для того, чтобы сломать чистую SHA256, злоумышленник должен найти д 'что SHA256 (d') == SHA256 (d), для известного д. Это также достаточно, чтобы сломать Hash (). Однако злоумышленник может также атаковать внешний слой хэш, находя д»таким образом, что SHA256 (SHA256 (д ')) == SHA256 (SHA256 (г)), даже если SHA256 (д')! = SHA256 (д). Как вы можете видеть, двойное хеширование здесь делает _easier_ сломать хэш!

Лучшим решением было бы что-то вроде:

Код:
шаблон<имяТипа T1>
рядный вектор<неподписанные символ> HashV (Const Т1 pbegin, Const Т1 ПЭНД)
{
    uint256 sharesult;
    uint160 riperesult;
    SHA256 ((неподписанные символ *)&pbegin [0], (ПЭНД - pbegin) * SizeOf (pbegin [0]), (неподписанные символ *)&sharesult);
    Ripemd160 ((неподписанные символ *)&pbegin [0], (ПЭНД - pbegin) * SizeOf (pbegin [0]), (неподписанные символ *)&riperesult);

    вектор<неподписанные символ> RET;
    ret.insert (ret.end () (неподписанные символ *) (&sharesult) (неподписанные символ *) (&sharesult + 1));
    ret.insert (ret.end () (неподписанные символ *) (&riperesult) (неподписанные символ *) (&riperesult + 1));
    вернуться в отставке;
}

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

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


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


14 июля 2010, 10:38:51 PM   # 2
 
 
Сообщения: 188
Цитировать по имени
цитировать ответ
по умолчанию Re: Hash () функция не является безопасным

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





Кстати, аналогичная проблема существует с Hash160, только хуже - злоумышленник может нарушить _either_ ripemd160 или SHA256, и выиграть. По крайней мере, с Hash () атакующий _должны_ перерыв SHA256.
bdonlan сейчас офлайн Пожаловаться на bdonlan   Ответить с цитированием Мультицитирование сообщения от bdonlan Быстрый ответ на сообщение bdonlan

15 июля 2010, 12:41:15 AM   # 3
 
 
Сообщений: 92
Цитировать по имени
цитировать ответ
по умолчанию Re: Hash () функция не является безопасным

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

15 июля 2010, 1:05:21 AM   # 4
 
 
Сообщения: 1652
Цитировать по имени
цитировать ответ
по умолчанию Re: Hash () функция не является безопасным

Как вы можете видеть, это пытается быть более безопасным путем хэширования дважды. Однако, это на самом деле снижает безопасность. Для того, чтобы сломать чистую SHA256, злоумышленник должен найти д 'что SHA256 (d') == SHA256 (d), для известного д. Это также достаточно, чтобы сломать Hash (). Однако злоумышленник может также атаковать внешний слой хэш, находя д»таким образом, что SHA256 (SHA256 (д ')) == SHA256 (SHA256 (г)), даже если SHA256 (д')! = SHA256 (д). Как вы можете видеть, двойное хеширование здесь делает _easier_ сломать хэш!

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

Таким образом, это снижает безопасность SHA256 с коэффициентом 2 ... которая просто не имеет большого значения. Bitcoin использует, по существу, SHA255 вместо SHA256. Он по-прежнему будет занимать больше времени, чем навсегда, чтобы найти столкновение ...
Гэвин Андресен сейчас офлайн Пожаловаться на Гэвин Андресен   Ответить с цитированием Мультицитирование сообщения от Gavin Andresen Быстрый ответ на сообщение Гэвин Андресен

15 июля 2010, 1:22:27 AM   # 5
 
 
Сообщения: 188
Цитировать по имени
цитировать ответ
по умолчанию Re: Hash () функция не является безопасным

Как вы можете видеть, это пытается быть более безопасным путем хэширования дважды. Однако, это на самом деле снижает безопасность. Для того, чтобы сломать чистую SHA256, злоумышленник должен найти д 'что SHA256 (d') == SHA256 (d), для известного д. Это также достаточно, чтобы сломать Hash (). Однако злоумышленник может также атаковать внешний слой хэш, находя д»таким образом, что SHA256 (SHA256 (д ')) == SHA256 (SHA256 (г)), даже если SHA256 (д')! = SHA256 (д). Как вы можете видеть, двойное хеширование здесь делает _easier_ сломать хэш!

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

Таким образом, это снижает безопасность SHA256 с коэффициентом 2 ... которая просто не имеет большого значения. Bitcoin использует, по существу, SHA255 вместо SHA256. Он по-прежнему будет занимать больше времени, чем навсегда, чтобы найти столкновение ...

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

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

15 июля 2010, 1:45:03 AM   # 6
 
 
Сообщения: 2870
Цитировать по имени
цитировать ответ
по умолчанию Re: Hash () функция не является безопасным

Вы пытаетесь решить:
SHA256 (SHA256 (д ')) == 256-битное число

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

15 июля 2010, 2:12:37 AM   # 7
 
 
Сообщения: 322
Цитировать по имени
цитировать ответ
по умолчанию Re: Hash () функция не является безопасным

Вы пытаетесь решить:
SHA256 (SHA256 (д ')) == 256-битное число

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

Для грубой силы вашего 256bit хэша, вы либо угадать, начиная строку или второй хэш строку. Это значит, вы должны догадаться, конвертировать 256, конвертировать в 256 раз и посмотреть, если это соответствует. Если вы атакуете второй хэш, вы не можете начать догадываться 0000000 ..... 1, например, вы знаете, что это уже другой номер 256bit, которые должны начать с. Это похоже на попытку грубой силы пароля и зная заранее, пароль у парня был длиной 100 цифр. Это делает это проще? Ну нет, потому что первые 99 цифр может быть 0, а последний 1, но в любом случае вам все равно придется попробовать все между ними.

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

15 июля 2010, 2:28:36 AM   # 8
 
 
Сообщения: 1652
Цитировать по имени
цитировать ответ
по умолчанию Re: Hash () функция не является безопасным

Есть переполнение стека Вопрос о двойном хеширования, кстати. Консенсус в том, что это не менее безопасным. Это слишком поздно для моего мозга обрабатывать нюансы хэширования ...
Гэвин Андресен сейчас офлайн Пожаловаться на Гэвин Андресен   Ответить с цитированием Мультицитирование сообщения от Gavin Andresen Быстрый ответ на сообщение Гэвин Андресен

15 июля 2010, 2:31:52 AM   # 9
 
 
Сообщений: 70
Цитировать по имени
цитировать ответ
по умолчанию Re: Hash () функция не является безопасным

Может ли это быть исправлено в следующей версии? Мы как раз обсуждали, что произойдет, если дефект был найден: Здесь мы идем, наш первый реальный тест ситуации. 
Bitcoiner сейчас офлайн Пожаловаться на Bitcoiner   Ответить с цитированием Мультицитирование сообщения от Bitcoiner Быстрый ответ на сообщение Bitcoiner

15 июля 2010, 2:41:56 AM   # 10
 
 
Сообщения: 188
Цитировать по имени
цитировать ответ
по умолчанию Re: Hash () функция не является безопасным

Может ли это быть исправлено в следующей версии? Мы как раз обсуждали, что произойдет, если дефект был найден: Здесь мы идем, наш первый реальный тест ситуации. 
Неа! По крайней мере, не так легко - блочные и транзакционные идентичности на основе этого хэша, между прочим, так что это будет разорвать цепь. Вы должны были бы сделать поэтапную откачку - первый, добавить поддержку разбора всех клиентов, то устаревшие старые клиенты, затем раскатать новую версию, которая генерирует новую версию формата блока сериализации с использованием нового метода хеширования.
bdonlan сейчас офлайн Пожаловаться на bdonlan   Ответить с цитированием Мультицитирование сообщения от bdonlan Быстрый ответ на сообщение bdonlan

15 июля 2010, 2:42:43 AM   # 11
 
 
Сообщения: 2870
Цитировать по имени
цитировать ответ
по умолчанию Re: Hash () функция не является безопасным

Я не сомневаюсь, что хэширования несколько раз является безопасным, так как указано в PKCS # 5 и другие стандарты:
котировка
Счетчик итераций традиционно служило цели увеличения затрат на производство ключей от пароля, тем самым увеличивая сложность атаки. Для методов в данном документе, рекомендуется минимум 1000 итераций. Это увеличит стоимость исчерпывающего поиска значительно паролей, без заметного влияния на стоимость получения индивидуальных ключей.
theymos сейчас офлайн Пожаловаться на theymos   Ответить с цитированием Мультицитирование сообщения от theymos Быстрый ответ на сообщение theymos

15 июля 2010, 3:23:53 AM   # 12
 
 
Сообщений: 70
Цитировать по имени
цитировать ответ
по умолчанию Re: Hash () функция не является безопасным

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

Все лучше практиковать сейчас, в то время как сеть еще молода! Ну, если это не реальный недостаток, это не нужно, но это было бы хорошей практикой. Это всегда можно сделать первый в тестовой сети.
Bitcoiner сейчас офлайн Пожаловаться на Bitcoiner   Ответить с цитированием Мультицитирование сообщения от Bitcoiner Быстрый ответ на сообщение Bitcoiner

15 июля 2010, 3:52:34 AM   # 13
 
 
Сообщений: 92
Цитировать по имени
цитировать ответ
по умолчанию Re: Hash () функция не является безопасным

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

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

15 июля 2010, 7:37:54 AM   # 14
 
 
Сообщения: 2870
Цитировать по имени
цитировать ответ
по умолчанию Re: Hash () функция не является безопасным

PKCS # 5 используется TrueCrypt (и GPG, я думаю). Если каждая итерация уменьшить сложность обнаружения столкновений, как предполагает bdonlan, то TrueCrypt будет легко сломать. Вы бы просто атаковать алгоритм хеширования, чтобы найти мастер-ключ.
theymos сейчас офлайн Пожаловаться на theymos   Ответить с цитированием Мультицитирование сообщения от theymos Быстрый ответ на сообщение theymos

15 июля 2010, 12:44:59 PM   # 15
 
 
Сообщений: 51
Цитировать по имени
цитировать ответ
по умолчанию Re: Hash () функция не является безопасным

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

Следует отметить, что это обсуждение имеет в виду хеширования паролей - и самый upvoted комментарий явно обсуждать такие с этим в виду. Попытка сделать словарную атаку не имеет согласованного значения, а кто-то непосредственно атакуя алгоритмы, лежащие в Bitcoin, очевидно, не начать там. Он будет атаковать алгоритм.
Некоторый Mouse сейчас офлайн Пожаловаться на Some Mouse   Ответить с цитированием Мультицитирование Сообщения от Some Mouse Быстрый ответ на сообщение Некоторые мыши

15 июля 2010, 3:56:42 PM   # 16
 
 
Сообщения: 157
Цитировать по имени
цитировать ответ
по умолчанию Re: Hash () функция не является безопасным

То, что хэшируются в этой функции?  <- давайте назовем этот элемент х

Если общее число возможных х меньше, чем 256-битной пространства, которое обеспечивает sha256, чем атака придет в виде таблицы всех значений SHA256 (х).

Если все возможные комбинации из й-х больше 256bit пространства, то здесь некоторая математика для вас (атака будет на самой хэш-значении, а не таблицы на известном SHA256 (х)):

Далее следует из www.atmel.com/dyn/resources/prod_documents/doc8668.pdf

Если есть 256 бит в ключе, то после 2 ^ 255 попыток злоумышленник имеет 50% шанс найти правильный ключ и после того, как 2 ^ 256 попыток он перепробовал все возможные ключи и гарантированно нашел ключ.

Вот некоторые оценки больших чисел:

2 ^ 66 Количество песчинок на земле
2 ^ 76 Число звезд во Вселенной
2 ^ 79 число Авогадро. Число атомов углерода в 12 граммах угля.
2 ^ 96 Числа атомов в кубическом метре воды
2 ^ 190 Количество атомов в ВС
2 ^ 255 Количество попыток найти ключевое значение сверху

Но что очень хорошо финансируются организациями, как Агентства национальной безопасности США (NSA)? Могут ли они построить машину, чтобы взломать 256 битный ключ? Предположит, что они могли бы построить теоретический нанокомпьютер, который выполняет 10 ^ 13 операций в секунду (приблизительная скорость колебаний атомов) в пространстве кубы со стороной, которая является 5.43nm через (Это приблизительный размер кремния ширину lattice10 атомов, или кристалл, содержащий 1000 атомов кремния). Предположим, что он может вычислить попытку через 10 циклов. Такой компьютер размера земли будет принимать более чем 10 ^ 13 лет (примерно в 58 раз по оценкам, возраст Земли), чтобы атаковать алгоритм 256 бит с помощью грубой силы.
mcdett сейчас офлайн Пожаловаться на mcdett   Ответить с цитированием Мультицитирование сообщения от mcdett Быстрый ответ на сообщение mcdett

15 июля 2010, 5:55:22 PM   # 17
 
 
Сообщения: 199
Цитировать по имени
цитировать ответ
по умолчанию Re: Hash () функция не является безопасным

Я хочу, чтобы некоторые нанокомпьютеры!
Ласло сейчас офлайн Пожаловаться на Laszlo   Ответить с цитированием Мультицитирование сообщения от Laszlo Быстрый ответ на сообщение Laszlo

15 июля 2010, 6:05:23 PM   # 18
 
 
Сообщений: 70
Цитировать по имени
цитировать ответ
по умолчанию Re: Hash () функция не является безопасным

То, что хэшируются в этой функции?  <- давайте назовем этот элемент х

Если общее число возможных х меньше, чем 256-битной пространства, которое обеспечивает sha256, чем атака придет в виде таблицы всех значений SHA256 (х).

Если все возможные комбинации из й-х больше 256bit пространства, то здесь некоторая математика для вас (атака будет на самой хэш-значении, а не таблицы на известном SHA256 (х)):

Далее следует из www.atmel.com/dyn/resources/prod_documents/doc8668.pdf

Если есть 256 бит в ключе, то после 2 ^ 255 попыток злоумышленник имеет 50% шанс найти правильный ключ и после того, как 2 ^ 256 попыток он перепробовал все возможные ключи и гарантированно нашел ключ.

Вот некоторые оценки больших чисел:

2 ^ 66 Количество песчинок на земле
2 ^ 76 Число звезд во Вселенной
2 ^ 79 число Авогадро. Число атомов углерода в 12 граммах угля.
2 ^ 96 Числа атомов в кубическом метре воды
2 ^ 190 Количество атомов в ВС
2 ^ 255 Количество попыток найти ключевое значение сверху

Но что очень хорошо финансируются организациями, как Агентства национальной безопасности США (NSA)? Могут ли они построить машину, чтобы взломать 256 битный ключ? Предположит, что они могли бы построить теоретический нанокомпьютер, который выполняет 10 ^ 13 операций в секунду (приблизительная скорость колебаний атомов) в пространстве кубы со стороной, которая является 5.43nm через (Это приблизительный размер кремния ширину lattice10 атомов, или кристалл, содержащий 1000 атомов кремния). Предположим, что он может вычислить попытку через 10 циклов. Такой компьютер размера земли будет принимать более чем 10 ^ 13 лет (примерно в 58 раз по оценкам, возраст Земли), чтобы атаковать алгоритм 256 бит с помощью грубой силы.

Квантовые вычисления и шифрование: http://stackoverflow.com/questions/2768807/quantum-computing-and-encryption-breaking
Bitcoiner сейчас офлайн Пожаловаться на Bitcoiner   Ответить с цитированием Мультицитирование сообщения от Bitcoiner Быстрый ответ на сообщение Bitcoiner

15 июля 2010, 6:20:38 PM   # 19
 
 
Сообщения: 873
Цитировать по имени
цитировать ответ
по умолчанию Re: Hash () функция не является безопасным

Если есть 256 бит в ключе, то после 2 ^ 255 попыток злоумышленник имеет 50% шанс найти правильный ключ и после того, как 2 ^ 256 попыток он перепробовал все возможные ключи и гарантированно нашел ключ.

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

Немецкий источник:
котировка
Als Reaktion Ауф умереть bekanntgewordenen Angriffe GEGEN SHA-1 hielt дас Национального института стандартов и технологий (NIST) им Октябре 2005 Einen Workshop аб, в дем-дер-Aktuelle Стенд kryptologischer Hashfunktionen diskutiert Würde. NIST empfiehlt ден Ьbergang фон SHA-1 цу Hashfunktionen дер ША-2-Familie (SHA-224, SHA-256, SHA-384, SHA-512). Langfristig Sollen Diese Durch Einen Neuen Стандартный SHA-3 Заменено Верден. Dazu ruft дас NIST Vorbild дез ны Advanced Encryption Standard (AES) ца Эйнего Ausschreiben Ауфы. Die endgьltige Wahl унд Benennung де Хэш-стандарты ист fьr 2012 vorgesehen.
http://de.wikipedia.org/wiki/Secure_Hash_Algorithm#Empfehlungen
SmokeTooMuch сейчас офлайн Пожаловаться на SmokeTooMuch   Ответить с цитированием Мультицитирование сообщения от SmokeTooMuch Быстрый ответ на сообщение SmokeTooMuch

15 июля 2010, 11:06:29 PM   # 20
 
 
Сообщений: 51
Цитировать по имени
цитировать ответ
по умолчанию Re: Hash () функция не является безопасным

...

2 ^ 255 Количество попыток найти ключевое значение сверху

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

2) Ваши уравнения предполагают, что алгоритм является абсолютно безопасным. Учитывая, что NIST довольно чрезмерно восторженный о развитии SHA-3, я не очень уверен в этом анализе.

3) Злоумышленник не нужно найти определенный ключ к компромиссу системы, они просто должны найти ключи к чьей-то бумажник. Если вы хотите, чтобы быть жизнеспособной валютой для населения Земли, а также корпоративные счета, вы уронили пространство поиска на 10 ^ 10 до 10 ^ 12.

Это 2 ^ 256 пространство поиска может получить свели вниз к диапазону 2 ^ 110 к концу века. Предполагая, что никаких серьезных нападений на его целостности существуют.

Я особо не продается по технической надежности этой программы, если честно. Зачем использовать SHA256, а не Whirlpool или SHA512?
Некоторый Mouse сейчас офлайн Пожаловаться на Some Mouse   Ответить с цитированием Мультицитирование Сообщения от Some Mouse Быстрый ответ на сообщение Некоторые мыши



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

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

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

3HmAQ9FkRFk6HZGuwExYxL62y7C1B9MwPW