Описание: хеширование |
Поиск в теме | Версия для печати |
Валерий |
Отправлено: 05 Сентября, 2006 - 16:04:41
|
Админ-3
Покинул форум
Сообщений всего: 2676
Дата рег-ции: Янв. 2005
Откуда: Беларусь
Карма 16
|
Леголегс
Вы, давители свободомыслия на форуме!
Наблюдай за сим написанным и тормози в нужном месте.
Что такое кодирование? Это запись чего-то чем-то таким, что непонятно для других.
Простейшее кодирование – замена одних букв (цифр) другими по некоему принципу. Принцип зовется ключом.
Скажем, число 333 можем записать как 999. Ключ – 3, враги ни в жисть не догадаются, что у нас было 333 огрызка яблока…
Если догадаются, тогда мы умножим на три, поделим на четыре, переставим в итоге первое число на последнее.
Это уже – алгоритм кодирования.
Служил в армии, был у меня ЗАС – засекречивающая аппаратура связи. Был специальный блок, в нем планки – ключи. Эти ключи устанавливались по специальной бумажке, которая действовала определенное время. Установил ключи – получил новый алгоритм кодирования (или шифрования)
К чему такое вступление?
А вот к чему.
Пока алгоритм не изменен, А будет записываться как буки, а Б – как глаголь.
Собрав много-много кода, ЭВМ расшифрует любой код. И смена алгоритма, да еще в неизвестное для врага время – самый эффектный выход. Практически не расшифровываемый.
А сейчас смотрим на хеширование у юзера номер 1.
Вот внизу два пароля
47bc e5c7 4f58 9f48 67db d57e 9ca9 f808 ---aaa
08f8 e026 0c64 4185 10ce fb2b 06ee e5cd ---bbb
Полный атас, правда?
Но – смотрим на этот атас и видим, что все знаки - 16-ая система счисления.
0123456789ABCDEF
восемь групп по четыре цифры
если я что-то вспомнил, то 47bc, это 0010 1110 1101 0011
А теперь делаем кое-что еще.
Заходим другим юзером и ставим свой пароль уже знакомый нам ааа
получили
47bc e5c7 4f58 9f48 67db d57e 9ca9 f808
bbb и получили
08f8e0260c64418510cefb2b06eee5cd
И вот это уже говорит о том, что алгоритм всегда один и тот же, действует он только на знаки пароля. Это говорит о том, что есть правило преобразования и это правило постоянное. А если знать правило – разве же нельзя «расхешировать» пароль?
Если алгоритм программы не сильно сложен, то захешировав штук надцать паролей типа 0001, 0010, 0100, 0110, 0111… и глядя на результат, уже увидим нечто. А если алгоритм очень сложен? Ну, тогда можно скормить нашей машине тысяч пару захешированных паролей, написать программу и ждать ответа.
Расхеширует.
Все. Ниспровергайте
|
|
|
SviMik |
Отправлено: 06 Сентября, 2006 - 10:06:52
|
Где-то там...
Покинул форум
Сообщений всего: 3538
Дата рег-ции: Окт. 2004
Откуда: Tallinn, Estonia
Карма 4
|
Валерий
Обьясняю хеширование (и принцип необратимости) на твоих огрызках яблок.
У тебя их 333. Делаем так: складываем все цифры. Итог: 9.
Ты можешь сказать, что имея цифру 9 что огрызков было 333 а не 63 или 36?
(Также и в хэшировании разные пароли могут иметь одинаковые хэши. Это называется коллизиями. Но алгоритм настолько сложный, что этого на практике не встречается. )
Для чего это нужно. Форум будет хранить число 9, и админ, ессно, не будет знать скока огрызков ты указал при регистрации. Но когда форум спрашивает, сколько же у тебя огрызков, ты пишешь 333, он складывает и получает тоже 9, из чего следует, что это именно твои огрызки.
Или, например, использование для сравнения больших файлов.
(наверняка видел, как иногда на сайте даётся рядом с ссылкой хеш файла. А p2p сети типа ed2k без этого вообще не могли бы существовать)
Для простоты предположим, буква "а" будет иметь код "1", "б" - 2 и т.д.
Ты скачал "Войну и мир", но сомневаешся, не побился ли файл.
Спрашиваешь: сложи коды всех букв, потом раздели на код той буквы, которая чаще всего встречается, прибавь кол-во пробелов, и подели на размер файла, делённого на количество запятых.
В результате получишь совсем коротенькую строчку вместо огромного файла. Проделав тоже самое над своим файлом, при расхождении хотябы в 1 байт ты получишь другое число. Если получится тоже самое - то 99.99% вероятность, что файлы полностью соответствует.
А теперь попробуй по этой строке восстановить книгу, и автор WinRar обанкротится
Открывай прогу Калькулятор (не забудь перейти в расширенный режим). Пиши своё число. Потом кликай на Hex (находится слева) и читай тоже самое в шестнадцатиричном виде. Всё что получилось - строка стало короче. На этом весь смысл и заканчивается. Ну ещё в этом виде компу удобнее цифры крутить. Не пытайся в этом искать что-то особенное
ЗЫ. Поправьте меня, если написал бред |
|
|
Валерий |
Отправлено: 06 Сентября, 2006 - 16:18:49
|
Админ-3
Покинул форум
Сообщений всего: 2676
Дата рег-ции: Янв. 2005
Откуда: Беларусь
Карма 16
|
SviMik
Красота!
давай дальше рассуждать
Безусловно, все так.
И понял я в отношении хеширования файла – тут нет вопросов, система придумано достаточно умна – это не файл, а информация о файле. В отношении Войны и мира это наглядно и просто. В отношении куска текста это тоже наглядно и просто.
Но пароль…
Это не кусок текста.
Это три-четыре-пять букв.
Минимум – три.
А представляем мы информацию об этих трех цифрах целым рядом.
Поэтому я и говорю, что в этой явно избыточной информации можно найти и саму цифру.
Игра такая есть в автобусе: один стоит спиной ко всем, кто-то поднялся и сел.
Первый должен узнать, кто поднимался, используя минимум вопросов с «да -1» «нет-0».
По сути, то же хеширование:
Он сидит у окна 0
С ним рядом девушка 1
Он одет в пиджак 1
У него есть галстук 0
В руках у него газета 1
Вот и хеш пассажира 01101
Но пока под этого пассажира подходит несколько человек – это тот самый вариант, когда один и тот же пароль может (теоритически) иметь одинаковый хеш.
Увеличим число вопросов – увеличим наш хеш пассажира – и мы постепенно отсекаем всех остальных, делая хеш одного пассажира уникальный.
В итоге получим что-то типа 011011101
Теперь, допустим, у нас есть хеш 10010001
Смотрим наверх и и на хеш и видим, что:
Пассажир сидит у окна
Рядом с ним парень
Он не в пиджаке
Он в галстуке
У него нет газеты…
Условно порядок вопросов и истинность ответов назовем алгоритмом. И так, если мы знаем алгоритм, хеш пассажира, нам элементарно его вычислить.
Да, нельзя восстановить кусок большого текста и даже предложение типа «загасим Валерия его же способом»
Но мы говорим о трех символах.
Давайте так: кто знает программу, которая бы находила закономерность в ряде чисел?
И еще нужно точно знать коды клавиатуры (вот же были где-то записаны, потерял…)
Только не спрашивайте, чего я заморичился…
|
|
|
SviMik |
Отправлено: 07 Сентября, 2006 - 13:31:58
|
Где-то там...
Покинул форум
Сообщений всего: 3538
Дата рег-ции: Окт. 2004
Откуда: Tallinn, Estonia
Карма 4
|
Валерий
Представим, нам нужно узнать имя человека, зная только лишь
Валерий пишет:Пассажир сидит у окна
Рядом с ним парень
Он не в пиджаке
Он в галстуке
У него нет газеты…
Весь смысл в том, что пассажир ЕСТЬ. А представим, пассажира на глазах нет. И что ты будешь делать?
Тоесть: есть пароль, мы его разглядываем и составляем описание.
Представим, у нас список из 30 паролей(пассажиров) и один хэш(описание). Тут всё элементарно. Хешируем каждый пароль и сравниваем с описанием.
Как ты это применишь в реале? Ведь списка-то нет.
Есть такой вариант: метод перебора. Подбираем каждый пароль по очереди. Никто тебе это делать не мешает. И такое практикуется, но с одним НО.
Прикинем из скольких пассажиров тебе придётся выбирать. Прикинем ОЧЕНЬ приблизительно, чтоб иметь представление о количестве.
В алфавите, предположим, 30 букв. Всего их предположим 2 (рус, англ). Каждая бува может быть и большой и маленькой. Итого: 120. Прибавим 10 цифр и 20 спец. символов.
Получилось 150. Значит, для пароля из одного символа, тебе надо проглядеть 150 пассажиров.
Для пароля из 2 символов будет 150*150=22500 пассажиров.
Для пароля из 3 символов будет 150*150*150=3375000 пассажиров.
Для пароля из 4 символов будет 150*150*150*150=506250000 пассажиров.
Для пароля из 5 символов будет 150*150*150*150*150=75937500000 пассажиров.
Если интересно - продолжишь сам. |
|
|
|
Поиск в теме | Версия для печати |
Страниц (3): « 1 [2] 3 » |
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0, скрытых: 0) |
« ExBB Full Mods » |
Все гости форума могут просматривать этот раздел. Только администраторы и модераторы могут создавать новые темы в этом разделе. Только администраторы и модераторы могут отвечать на сообщения в этом разделе.
|
|
|