Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Создание профиля (http://www.flasher.ru/forum/showthread.php?t=109863)

iNils 22.03.2008 20:03

Цитата:

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

WindWalker 22.03.2008 20:17

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

А уж как хранить пароли - это оооочень большая тема. Ей не то, что отдельного топика - ей отдельного форума мало будет.

P.S.
Вариант md5(pass) + md5(pass+salt) тоже имеет недостаток.
Взлом первого хеша может упростить взлом второго (если мы нашли то самое слово). Кроме того, вероятно существует (но возможно пока неизвестен) алгоритм, который может восстанавливать сразу из двух хешей, благо это даёт нам больше информации.

P.P.S.
В IPB, если я не ошибаюсь, используется md5(md5(pass)+md5(salt))

iNils 22.03.2008 20:21

Цитата:

Сообщение от WindWalker
Вариант md5(pass) + md5(pass+salt) тоже имеет недостаток.
Взлом первого хеша может упростить взлом второго (если мы нашли то самое слово).

А вы уверены, что два разных слова имеющих одинаковый хеш, при добавлении к ним другого слова, опять дадут одинаковый хеш?
Если нет, то это значит, что получив слово PASS2 из HASH1 (хотя оригинал был PASS1) и добавив к нему ключевой слово KEY (PASS2+KEY), вы получите HASH3. Хотя PASS1 + KEY дадут HASH2.
Где бы взять два слово дающих коллизию для проверки? :D
Цитата:

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

В IPB, если я не ошибаюсь, используется md5(md5(pass)+md5(salt))
А сделайете md5(md5(pass)+md5(pass)+md5(salt)) и работа у взломщиков пойдет впустую.

Вывод один. Храня пароль не как хеш первого порядка, вы ставите злоумышлинников в тупиковое положение, так как не зная алгорим сохранения, а они даже теоретически не смогут получить из хеша пароль.

WindWalker 22.03.2008 21:58

Цитата:

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

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

Цитата:

А сделайете md5(md5(pass)+md5(pass)+md5(salt)) и работа у взломщиков пойдет впустую.
Если они не знают, что мы используем именно такой алгоритм - то да.

А если знают, то автоматически они знают, что у нас 1-й символ равен 33-му, 2-й символ равен 34-му и т.д.
Кроме того, они знают, что у нас используются только цифры и буквы a, A, b, B, c, C, d, D, e, E, f, F.
Таким образом по крайний мере "верхний" md5 сковырнуть уже будет проще.

---------------
Хотел поискать в гугле примеры коллизий MD5. Два коротких слова, состоящих из ASCII символов не нашёл, зато нашёл исходник генератора коллизий:

http://www.stachliu.com/md5coll.c

iNils 22.03.2008 22:36

Цитата:

Сообщение от WindWalker
количество вариантов у нас уже резко сокращается, так как мы знаем часть исходной строки.

Ха-ха :)Да нет же.

Допустим
1.
Пароль был WORD1.
У вас есть HASH1 и HASH2.
Задача: выяснить значение WORD1

2.
md5 (WORD1) = HASH1
md5 (WORD2) = HASH1
И заметьте, WORD1 и WORD2 могут быть различной длины.

3. (если это действительно так, иначе смысла разговор не имеет на эту тему)
md5 (WORD1 + KEY) = HASH2
md5 (WORD2 + KEY) = HASH3

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

Теперь у вас есть WORD2 и HASH2. Только толку то? Посомтрите на пункт 3. Знание WORD2 ни как не приблизило вас к узнаванию WORD1, у вас из трех значение WORD1, KEY и HASH2, есть только HASH2.
А для вычисления KEY через WORD2, надо знать значения HASH3. Но его у вас нет, и будет (понято почему?)

WindWalker 22.03.2008 22:54

Ну я сразу же заметил:
Цитата:

Взлом первого хеша может упростить взлом второго (если мы нашли то самое слово).
Т.е. если мы нашли WORD1 - то это уже какое-то подспорье. Не могу точно судить, насколько серьёзное, но всё же неопределённости уже имеем меньше.

Если же нашли WORD2 - значит нам крупно неповезло. Действительно крупно, потому что вероятность такого события крайне мала.

Кстати, на plain-text, насколько я понял, ищут строки ограниченной длины и состоящие из ограниченного набора символов. Поэтому всегда или находят WORD1, или не находят ничего.
------------

Ну да ладно. Тема это вечная. Я сразу сказал, что md5(pass) - это примитивнейший вариант.
Действительно md5(pass+key) - это уже гораздо лучше.
А md5(md5(md5(pass)+md5(pass+key))+md5(key)) - это совсем здорово.
А если md5 заменить на sha1 - то совсем супер.

Вот только я так и не понял, чем шары хуже кукисов, если во всём, кроме способа хранения на компе юзера, принцип один и тот же :)

iNils 22.03.2008 23:02

Так в том то и дело, что вероятность найти WORD1 ничтожна мала (на один хеш можно приходиться 1000, 10000, 100000 и тп коллизий ). Из WORD1...WORDN имеющих одинаковый хеш, можно получить только одно слово. А как узнать другие?


Часовой пояс GMT +4, время: 08:29.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.