Хеш: длительность поиска исходных данных методом прямого перебора

Тема в разделе "WASM.BEGINNERS", создана пользователем kiprirrpik, 13 окт 2007.

  1. kiprirrpik

    kiprirrpik New Member

    Публикаций:
    0
    Регистрация:
    21 сен 2007
    Сообщения:
    10
    Здравствуйте, уважаемые.

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

    Спасибо.
     
  2. nitrotoluol

    nitrotoluol New Member

    Публикаций:
    0
    Регистрация:
    5 сен 2006
    Сообщения:
    848
    Зависит от многих факторов. От частоты процесора, оперативки, от непосредственно алгоритмов генерации входных данных и генерации хэша.
    Скорость выполнения различных инструкций так же варьируется

    Учитывая все вышеприведенные факторы, однозначно ответить нельзя, кто дождется окончания перебора, прапрапраправнуки или прапрапрапрапрапрапраправнуки
     
  3. flankerx

    flankerx New Member

    Публикаций:
    0
    Регистрация:
    2 июл 2004
    Сообщения:
    423
    Адрес:
    Moscow, Russia
    kiprirrpik
    В такой постановке задачи — приблизительно 2^127 операций генераций "(вероятно) хеша".
     
  4. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
  5. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    поэтому и 2^127 а не 2^128 =)
    PS: Скорее всего еще куча коллизий будет, так что однозначно трудно сказать.
     
  6. flankerx

    flankerx New Member

    Публикаций:
    0
    Регистрация:
    2 июл 2004
    Сообщения:
    423
    Адрес:
    Moscow, Russia
    MSoft
    2^128/2 = 2^127 :derisive:

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

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    flankerx
    эм... пошел учить теорию... :)))
     
  8. kiprirrpik

    kiprirrpik New Member

    Публикаций:
    0
    Регистрация:
    21 сен 2007
    Сообщения:
    10
    Господа, опечатался. В оригинале необходимо читать "8 байт", т.е. 64 бита. По силам ли среднему комьютерую сделать полный переобор? Уж больно не хочется патчить программу :dntknw:
     
  9. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    полный перебор - это долго, а вот перебрать половину - вполне реально
     
  10. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    Можно вставлю свои чайниковские пять копеек? Получение хэша - процесс односторонний. Даже делая полный перебор всех вариантов хэша, Вы не получите входные данные, т.к. при такой постановке задачи входные данные могут иметь любой размер, и о структуре входных данных тоже ничего не сказано. Отсюда, вспоминая обсуждение принципа Дирихле в третьем классе, для "худшего" хэша размером 8 байт может быть, например, не менее 2^64 вариантов входных данных, размером в 16 байт. Для идеального алгоритма хэширования слово "худший" можно опустить, т.к. каждый хэш будет соответствовать одинаковому числу вариантов входных данных.
    Может я совсем тупой, чтобы осилить программу третьего класса? Ну тогда поправьте, если ошибаюсь.
     
  11. flankerx

    flankerx New Member

    Публикаций:
    0
    Регистрация:
    2 июл 2004
    Сообщения:
    423
    Адрес:
    Moscow, Russia
    Нет. Но я уверен что должен быть способ помимо патча :)
     
  12. kiprirrpik

    kiprirrpik New Member

    Публикаций:
    0
    Регистрация:
    21 сен 2007
    Сообщения:
    10
    flankerx
    Вы говорите загадками. Уточню, что меня интересует именно вариант решения данной проблемы, когда возможно получение оригинального или другого ключа, главное чтобы он подошёл.

    Наверное надо было указать ранее, что в качестве входного массива принимается строка из 13 символов, содержащая цифры от 0 до 9 и латинские буквы от 'а' до 'z'.
     
  13. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    kiprirrpik
    Если проверка правильности ключа идет только по хешу, тогда возможно использовать перебор вариантов. Следует учесть, что в процессе перебора могут попасться разные строки, но хеш у которых будет одинаков.

    Что же касается времени перебора, то расчитывается оно элементарно:
    количество всех вариантов ключей: 36^13 (flankerx правильно? :))
    количество вариантов хешей: 2^64
    по теории вероятности "достаточно" перебрать: 2^63

    Чтобы узнать время, за которое ты достигнешь цели, раздели количество вариантов на скорость перебора на твоем компе.
     
  14. flankerx

    flankerx New Member

    Публикаций:
    0
    Регистрация:
    2 июл 2004
    Сообщения:
    423
    Адрес:
    Moscow, Russia
    MSoft
    Правильно :)

    kiprirrpik
    Я говорю не загадками. Просто задача сформулирована не очень четко, поэтому мне приходится делать предположения.

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

    Что касается времени перебора... В озвученных условиях это будет выглядеть примерно так:
    скорость перебора ~10 млн. паролей на одном ядре
    нужно перебрать примерно 2^63 вариантов (т.к. 36^13=2^67, т.е. больше чем мощность пространства хешей).
    Делим одно на другое, получаем 10,6 млн. суток. Думаю, все понятно? :)