Bitcoin Forum
November 09, 2024, 08:55:14 PM *
News: Latest Bitcoin Core release: 28.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: « 1 [2]  All
  Print  
Author Topic: Доказательство P=NP: пострадает ли криптоалг&  (Read 2923 times)
ZeroTheGreat
Hero Member
*****
Offline Offline

Activity: 644
Merit: 500


View Profile
January 29, 2014, 11:13:21 PM
 #21

Вообще-то коллизии заведомо существуют для любого алгоритма хэширования - и не надо быть профессором математики, чтобы это доказать. Могу продемонстрировать доказательство, если хотите.
М? Я читал, что было доказано математически, что Keccak работает точно так же, как искомый "чёрный ящик". Была статья на Хабре. В таком случае коллизий существовать не должно по идее, или их нахождение ничего не даст (я не криптограф, не кидайтесь тапками).
ri
Full Member
***
Offline Offline

Activity: 140
Merit: 118


View Profile
January 29, 2014, 11:55:05 PM
 #22

Вообще-то коллизии заведомо существуют для любого алгоритма хэширования - и не надо быть профессором математики, чтобы это доказать. Могу продемонстрировать доказательство, если хотите.
М? Я читал, что было доказано математически, что Keccak работает точно так же, как искомый "чёрный ящик". Была статья на Хабре. В таком случае коллизий существовать не должно по идее, или их нахождение ничего не даст (я не криптограф, не кидайтесь тапками).

Фишка в том, что ограничена длина хэша. Предположим, мы используем keccak - ну или абсолютно любой другой алгоритм с длиной хэша n бит. В этом случае максимально возможное количество значений хэша будет 2n. Возьмем 2n+1 сообщений и вычислим хэши для каждого из них. Очевидно, что поскольку количество сообщений больше, чем количество возможных значений хэша, то хотя бы у двух сообщений хэши окажутся одинаковыми - вот вам и коллизия.

n теоретически может быть сколь угодно велико (на практике крайне редко используется значение больше 512), однако оно должно быть конечным - иначе для вычисления и сохранения хэша нам понадобятся бесконечные ресурсы, в то же время как количество возможных сообщений теоретически бесконечно.
ZeroTheGreat
Hero Member
*****
Offline Offline

Activity: 644
Merit: 500


View Profile
January 30, 2014, 01:19:35 AM
 #23

Фишка в том, что ограничена длина хэша. Предположим, мы используем keccak - ну или абсолютно любой другой алгоритм с длиной хэша n бит. В этом случае максимально возможное количество значений хэша будет 2n. Возьмем 2n+1 сообщений и вычислим хэши для каждого из них. Очевидно, что поскольку количество сообщений больше, чем количество возможных значений хэша, то хотя бы у двух сообщений хэши окажутся одинаковыми - вот вам и коллизия.
Ммм, ясно. Но ведь мало найти коллизию, надо ещё определить какого она рода и насколько опасна?

А если сообщения с одинаковым хэшем вообще никак аналитически не стыкуются, то это будет значить, что коллизия безопасна, так? По идее, именно такое тогда должно быть доказательство соответствия "чёрному ящику". Который может зажевать любое число бит, но выплюнет только n.
ri
Full Member
***
Offline Offline

Activity: 140
Merit: 118


View Profile
January 30, 2014, 03:07:08 PM
 #24

Но ведь мало найти коллизию, надо ещё определить какого она рода и насколько опасна?

Ну, собственно, приведенное доказательство только указывает на существование коллизий, но не дает ответа, как, кроме брутфорса, их находить. Нахождение коллизий представляет серьезную сложность даже для устаревших алгоритмов, вышедших (md4) или постепенно выходящих (md5) из употребления.

А если сообщения с одинаковым хэшем вообще никак аналитически не стыкуются, то это будет значить, что коллизия безопасна, так?

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

Пример: разработчик программы, которому вы доверяете, выложил архив с пакетом на множество зеркал для разгрузки своего сайта. Одно или несколько из этих зеркал могут быть мошенническими, т.е. их владельцы стремятся добавить внутрь программы свой вредоносный код. Разработчик на своем сайте кроме ссылок на зеркала опубликовал md5-хэш архива (напомню, на сегодняшний день md5 уже считается ненадежным). Вы качаете архив и проверяете соответствие его md5 значению, выложенному на сайте, и если они совпадают - считаете файл надежным.

Для злоумышленника это выглядит так - любая произвольная найденная коллизия совершенно не годится для его целей, т.к. выложив файл с произвольными данными, чья md5-сумма равна целевой он ничего не добьется. Во-первых, ваш архиватор сразу же откажется работать с этим файлом, не найдя в ней корректного формата для данного типа архивов. Во-вторых, если даже ему удастся подобрать такую коллизию, что файл действительно будет соответствовать корректному формату - совсем необязательно (точнее, практически невероятно), что там окажется тот самый вредоносный код, которых хотел внедрить злоумышленник. Ну и поскольку вы ожидаете, что запустить установку нужно, кликнув setup.exe (например), то файл, запускающий вредоносный код должен после распаковки называться именно так - и никак иначе.

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

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

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

Касательно использования чужих средств - кроме взлома двух применяемых при генерации адресов алгоритмов хэширования необходимо также уметь генерировать закрытый ключ из открытого для асимметричного шифрования на основе эллиптических кривых. Последний пункт во многих случаях позволит красть чужие средства (хотя и не любые - только те, для которых уже был опубликован публичный ключ) без взлома алгоритмов хэширования. А если использовать умение нахождения коллизий для нахождения открытого ключа - то коллизия тоже должна быть не любая, а такая, которая даст правдоподобный открытый ключ. Правда, каким он должен быть - не знаю, это фактически зависит от того, к любому ли числу можно подобрать пару, которая в случае использования в качестве закрытого ключа даст соответствующий открытый ключ. Плюс к тому - скорее всего (хотя и не уверен), клиент bitcoin проверяет длину ключа - чтобы его длина была не более целевой, в этом случае коллизии нужно находить в области сравнительно малых чисел.
Pages: « 1 [2]  All
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!