[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: md5 или sha1?
Dimaz
Сегодня провел эксперимент, сначала вычислил хеш строки функцией md5(), затем функцией sha1(). Подсчитал, что функция md5() возвращает 32-разрядный хеш, а sha1() 40-разрядный. Сразу бросается в глаза, что функцией sha1() получается более сложный хеш. И вот я подумал, не эффективнее ли будет использовать функцию sha1()? По идее 40-разрядный хеш сложнее подобрать хакеру, чем 32-разрядный. Просвятите меня, действительно ли это так. Заранее благодарю за ваши ответы! biggrin.gif



Спустя 44 минуты, 27 секунд (4.02.2010 - 17:36) Gabriel написал(а):
Dimaz
у тебя будет из одного и из мульена символов получатся 32/40 символов

Спустя 7 минут, 36 секунд (4.02.2010 - 17:44) Dimaz написал(а):
И что это значит, что лучше не будет если использовать sha1()?

Спустя 5 минут, 56 секунд (4.02.2010 - 17:49) twin написал(а):
Дело тут не столько в криптостойкости. Хотя теоретически алгоритм sha1 считается взломанным, на практике это осуществить практически невозможно.
Количество колизий (одинаковых слепков на разные исходные тексты) на сколько мне извесно у MD5 гораздо меньше.
Тут палка о двух концах. 40-разрядный хэш sha1() занимает больше места, а значит потребует больше ресурсов для хранения. Но с другой стороны ресурсоемкость самой функции md5() на порядки выше, чем у sha1(). Так что нужно выбирать по месту. Допустим при авторизации md5 предпочтительнее, так как регистрация и авторизация - вещи не столь частые, а база пухнет неподецки.
А вот при работе с файлами (сравнение их хэшей) к примеру, sha1() удобнее.

Спустя 12 минут, 46 секунд (4.02.2010 - 18:02) Dimaz написал(а):
Twin Спасибо разжевал smile.gif Так и сделаем)

Спустя 11 месяцев, 11 дней, 20 часов, 5 минут, 34 секунды (16.01.2011 - 14:08) @dmir@l написал(а):
Заранее сорри за мусор в топик!
Ребят, расскажите о функции md5 подробнее, не пойму зачем она нужна!?

huh.gif

Спустя 2 часа, 38 минут, 26 секунд (16.01.2011 - 16:46) phpdreamer написал(а):
Цитата (@dmir@l @ 16.01.2011 - 11:08)
Заранее сорри за мусор в топик!
Ребят, расскажите о функции md5 подробнее, не пойму зачем она нужна!?

huh.gif

чтобы хранить пароли в закрытом от глаз (зашифрованном) виде

почитай про соль

Спустя 1 час, 49 минут, 7 секунд (16.01.2011 - 18:35) Arni написал(а):
Если кому интересно, предоставляю некоторые вырезки из книжки которую купил еще будучи студентом.

Нильс Фергюсон и Брюс Шнайер - Практическая криптография.

Цитата

Функция хэширования отображает строку m произвольной длинны на значение h(m) фиксированной длинны. Обычно длинна результата функции хеширования составляет от 128 до 512 бит. К функции хеширования предъявляется несколько требований. Самое простое из них односторонность: для любого сообщения m легко вычислить значение  h(m), однако для любого значения х невозможно найти такое m, что h(m) = х. Среди многих других свойств, которыми должна обладать хорошая функция хєширования, наиболее часто упоминается сопротивляемость коллизиям.


Также авторы книги признают факт.

Цитата

На свете слишком мало хороших функций хєширования. На данный момент наш выбор ограничен лишь семейством функций SHA да еще, пожалуй, функцией MD5. Существуют и другие  опубликованные предложения, но ни одно из них не привлекло внимание критиков настолько, чтобы ему можно было доверять.


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

Вот что пишут про MD5

Цитата

Разработана Роном Райвестом 128 - битовая функция хеширования является дальнейшим усовершенствованием функции MD4.

....

Для большинства областей областей применения 128-битового размера хеш-кода явно недостаточно. Используя парадокс задачи о днях рождения, можно найти реальную коллизию для функции MD5 примерно за 18 446 744 073 709 551 616 оцениваний функции хєширования, что совершенно не подходит для современных систем. Поэтому мы не советуем использование MD5



Собственно я прислушался к мнению, и просто напрочь не использую MD5

Относительно SHA.

Цитата

Защищенный алгоритм хєширования разработанный Управлением национальной безопастности США и стандартизирован институтом NSA.

....

SHA-1 - это 160-битовая функция хэширования, основанная на алгоритме MD4. Наличие общего предшественника делает SHA-1 весьма схожей с MD5, однако SHA-1 обладает более консервативной структурой,  и работает в два-три раза медленнее, чем MD-5. Тем не менее никаких проблем безопасности , связанных с SHA-1, пока не возникло, а потому данная функция получила самое широкое применение. Основным недостатком SHA-1 является 160 битовый размер результата. функции хеширования. Для генерации коллизий достаточно выполнить 1 208 925 819 614 629 174 706 176 шагов. что значительно ниже уровня безопасности современных блочных шифров.


Вот те на, как сами ведите, они обламывают оба алгоритма.

И что же делать?

Цитата

Несколько лет назад NIST опубликовал черновой стандарт, содержащий три новых функции хеширования, которые выдают 256-, 384 - и 512- битовые результаты соответственно.Эти функции разработаны для применения с 128- 192- и 265- битовыми ключами алгоритма AES. Структура этих функций очень схожа со структурой SHA-1.
   Эти функции хеширования слишком новы. Мы не хотели бы рекомендовать их для практического применения, однако альтернативы все равно нет. Чтобы достигнуть уровня безопасности, превышающего то, который в состоянии обеспечить нам SHA-1 , требуется функция хеширования  с результатом большей длинны. Ни один из опубликованных алгоритмов хеширования с результатом большего размера еще не был достаточно проанализирован в публичных источниках. Что же касается функций семейства SHA, они по крайней мере были исследованы в NSA. А эта организация вроде бы знает что делает.


Ну и вот еще дают краткое описание 3 этим функциям.

Цитата

Функция SHA-256 работает намного медленнее, чем  SHA-1.

....

Это не так уж плохо. Поскольку для для криптографического сообщества хеширование оказалось более сложной проблемой, чем шифрование. не удивительно, что функция хеширования работает медленнее чем функция шифрования. Напротив, удивляет высокая скорость работы SHA-1 и MD5. С другой стороны возможности осуществления атак на эти функции хеширования исследованы очень мало - во всяком случае несопоставимо меньше, чем возможности нападения на блочные шифры.

Функция SHA-384 довольно бесполезна. Для вычисления ее результата необходимо проделать столько же работы, как и для функции SHA-512, а затем отбросить некоторые биты. Непонятно, зачем для этого понадобилось вводить отдельную функцию. Рекомендуем придерживаться функции SHA-256 и SHA-512.


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


to: @dmir@l


Тут речь идет скорее про криптографическую, профессиональную параною. Я бы не хотел наводить пример о банках, потому что врятли они юзают md5 smile.gif. Нам ближе ситуация. Пример.

У вас есть проект где у всех пользователей есть свой баланс. На нем определенная сумма и они могут вводить выводить свои деньги с баланса. И тут интересный момент, я не буду говорить что вашу базу украли хакеры. У вас супер система защиты, и хрен пролезеш и.т.д. Тоисть допустим что уровень защиты ого-го. Но не стоит забывать, что ваш сервер стоит в дата-центре. И кокойто нумбс, редиска и.т.д. Которого уволили, успел прихватить вашу базу данных. А поскольку он был админом, и имел полный физический доступ к серверу, то такое предположить можно легко. Через полгода. Он садится в нет, и ночью тайком начинает смыкать у ваших юзерей по 10 центов. Пропажи начнут замечать но не все. Пока вы отследите что-то украсть он успеет это точно.

Почему я привел именно такой пример? А разве хакерство это просто взломать сайт и написать тут был Вася? Или вы будете утверждать что это не честный взлом, а просто кража. Говорите все что угодно, но факт есть факт. Вся ваша супер система защиты оказалась железобетонным столбом который обошли просто.

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

Но тут важно понимать одну вещь. Вся эта мера предосторожности дает вам только чуток времени. Не более ... Вот почему пароли нужно переодически менять.


Яволь. Если кто считает что я заслуживаю + в репу буду благодарен. Материал перепечатал с книги лежащей на столе. Студентом я был довольно таки недавно. Материал свежий smile.gif

Спустя 4 минуты, 6 секунд (16.01.2011 - 18:39) Hoodzon написал(а):
md5(md5($var))
:)

Спустя 4 минуты, 24 секунды (16.01.2011 - 18:44) DmitryOpalev написал(а):
:D
$string = 'Шифр';
for($i = 0; $<=10; $++)
{
$string = md5($string);
}

Спустя 19 минут, 34 секунды (16.01.2011 - 19:03) Guest написал(а):
Hoodzon

md5(md5(md5(md5(md5(md5(md5(md5(md5(md5(md5(md5(md5(md5(md5(md5(md5(md5(md5(md5(md5(md5(md5(md5(md5( md5(md5(md5($var))))))))))))))))))))))))))))

так еще круче )))

Спустя 16 минут, 3 секунды (16.01.2011 - 19:19) DmitryOpalev написал(а):
for($j = 0; $j <=100; $j++)
{
$string = 'Шифр';
for($i = 0; $<=10; $++)
{
$string = md5($string);
}
}

Уж извините за флейм :lol:

Спустя 2 часа, 31 минута, 46 секунд (16.01.2011 - 21:51) Snus написал(а):
$val = 'TEXT';
$key = md5('KEY');
for($i = 0; $i < 10; $i++){
$val = md5($val.$key);
}


Лол ))) а чтоб совсем наверняка...
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.