Шифрование MD5(MD5(...))

Vladson

Сильнобухер
Автор оригинала: paDLa
Ситуация: кулхацкер спер базу и коды. Как сделать так чтобы ему от этого небыло слишком приятно?
Элементарно, делаем свой метод шифрования (или извращаемся с md5(sha($psw)) или типа того) пихаем его в отдельный файл и кодируем Zend-oм, в итоге код остаётся открытым, а критическая информация закрытой...
В итоге чтоб разшифровать пароль нужно не просто юзать брут-форс, а писать свой чтоб он включал в себя этот модуль (а если он ещё и работает медленно, например "sleep(1);" то и это встанет на его пути)
 

Alexandre

PHPПенсионер
dzimedrol и что тебе даст крипт?
код открыт - можно вытащить ключ, по коду без труда можно отследить ход шифрования, и дешифрования.

по этому использование крипто для хранения не обоснованно - это криптомания.
использование крипто в основном используется для передачи

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

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

Wicked

Новичок
Возможных комбинаций даже в этом случае 3,4*10^38, что аналогично использованию пароля из любых знаков (все ASCII коды - 255 знаков), длиной в 16 символов. так что не хило. Стойкость вполне нормальная.
В абсолютных велечинах да, вполне нормальная. А в относительных, сравнивая с "одноразовым" md5 - значительно меньше.

Может быть проверим? Я 1000 раз закодирую при помощи MD5 какой-нибудь 5-ти значный пароль, использую случайные английские маленькие буквы. Обычный MD5 восстанавливается при помощи программы PasswordPro за 2 минуты 5 сек, а посмотрим, сколько потребуется для этого вам?
Щас возьму листик и ручку, и начну считать :)

У меня используется 1000 MD5, у другого - 1007 MD5 и коллизия, которая работает у меня, не будет работать у других.
Кхм... сравнимо с MD5($pass."1000"), MD5($pass."1007"), только в 1000 раз медленнее. Между прочим, дополнительные 1000 попыток хакеру можно обеспечив, добавив к salt'у 2 alphanumeric символа. Ессно, salt подразумевается нераскрытым секретом.

-~{}~ 18.05.06 19:37:

А какие у crypt<md5> есть еще приемущества перед md5($pass.constant("SALT")), кроме того, что в crypt генерится в каждом случае свой salt? Что-то не доходит :)
 

kruglov

Новичок
Wicked
А какие у md5 преимущества? Что за него так цепляются-то?
Вам salt'а уже мало? И почему вы сравниваете с crypt<md5>, а не с crypt<что_там_еще_есть>
 

Wicked

Новичок
kruglov
1) За md5 я не цепляюсь. Хочу для себя понять, какие у crypt'а (в частности md5 vs. md5) приемущества. А уж присовокупить разницу мд5 с другими хэш-алгоритмами я смогу.

2) так уж случилось, что на данный момент
var_dump(CRYPT_BLOWFISH); //int(0)
var_dump(CRYPT_EXT_DES); //int(0)
а STD_DES просто мимо. Так что методом исключения выбор падает на мд5.

ПС: а почему blowfish в крипте используется как хэш, когда по своей природе он есть шифр?
 

Wicked

Новичок
Alexandre
От чего оторванные?
Да, у меня винда, если ты это имеешь в виду. PHP Version 4.4.1.
Ну и на всякий случай: это predefined constants
 

kruglov

Новичок
Wicked
Если вы пишете только под свой Windows-сервер и твердо знаете, что никогда и ничего апгрейдить не будете - пишите md5.

>а почему blowfish в крипте используется как хэш
Э... А почему вы так думаете?
 

SiMM

Новичок
> Если вы пишете только под свой Windows-сервер и твердо знаете, что никогда и ничего апгрейдить не будете - пишите md5.
А какая связь между Windows, сервером, тем, что он именно свой, возможными апгейдами и md5?
 

LongHornKms

Новичок
2Vladson:
>а если он ещё и работает медленно, например "sleep(1);" то и это встанет на его пути<
Когда кулхацкер вздумает писать программу для брутфорса, он этот sleep(1) не будет включать в свою программу - нафиг ему пауза? Необходимо встроить в систему физический барьер - так что бы задержка была вызвана именно громоздкостью вычислений, а не вызовом функции.

2 Wicked :
>В абсолютных велечинах да, вполне нормальная. А в относительных, сравнивая с "одноразовым" md5 - значительно меньше.<
Согласен. Но это голая теория, на практике же все гораздо печальнее : разнообразие символов на входе подается мизерное (более 50% паролей пользователей - из цифр), длина - менее 6 символов. И именно по этому, как ни странно, стандартный MD5 крякают быстро.
 

kruglov

Новичок
SiMM
Такая, что у него blowfish (и будущие, еще не придуманные) не поддерживается.
 

Vladson

Сильнобухер
LongHornKms
Ты не понял мою идею, есть модуль/файл закодированный зендом (или просто bcompiler-ом)
PHP:
<?php
function md5v2($pass) {
   sleep(1);
   return md5('!@$%jgnvueJYUJF' . $pass . '!@$%jgnvueJYUJF');
}
?>
Сайт инклудит его каждый раз когда он нужен

Итог, когда хакер скачал все РНР файлы он видит всё, кроме этой функции и чтоб пробрутфорсить он вынужден вызывать именно эту функцию в не изменённом виде и именно из этого файла !!!
 

LongHornKms

Новичок
Только в том случае, если кулхацкер не разберет сам алгоритм и не сделает программу. И кстати, программу для брута лучше всего писать не на PHP, однако, а на прикладных языках - скорость-то нужна высокая. Вот, у PasswordsPro вообще модуль перебора на ASM написан.
 

zerkms

TDD infected
Команда форума
LongHornKms
такое ощущение что тебе за пиар этого самого PasswordsPro тебе платят ;)
 

SiMM

Новичок
> Такая, что у него blowfish (и будущие, еще не придуманные) не поддерживается.
А md5 то тут при чём? Или фразу надо читать как
> Если вы пишете только под свой Windows-сервер и твердо знаете, что никогда и ничего апгрейдить не будете - НЕ ИСПОЛЬЗУЙТЕ md5.
Но опять же непонятна связь с апргейдами - не думаю, что md5 куда-то исчезнет.
> И кстати, программу для брута лучше всего писать не на PHP, однако, а на прикладных языках - скорость-то нужна высокая.
Гениально. Спасибо, что сказал. Просвятил прям. Теперь я буду нести свет в массы.
 

Vladson

Сильнобухер
LongHornKms
А как кулхацкер разберет алгоритм ? (может хакеру это и под силу, но уж явно не кулхацкеру) :)
 

kruglov

Новичок
SiMM
> А md5 то тут при чём? Или фразу надо читать как
Так имелось в виду "нафига мне использовать crypt вместо md5, если он на моей машине все равно по алгоритму md5 шифрует"
 

Wicked

Новичок
Автор оригинала: kruglov
Так имелось в виду "нафига мне использовать crypt вместо md5, если он на моей машине все равно по алгоритму md5 шифрует"
Да, именно это и имелось в виду.

-~{}~ 19.05.06 13:54:

Я просто стараюсь отделить разницу между crypt() и md5() от разницы между конкретными алгоритмами шифрования.
 

kruglov

Новичок
Md5 шифрует определенным алгоритмом.

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

Системы бывают разные.

Продукт надо писать так, чтобы он получал преимущества от использования на лучших системах.

Кто купит современную 3d игрушку, у которой графика одинаково галимая на Geforce-MX и Geforce-7900?

p.s. Уж не знаю, который раз я эти мысли излагаю.
 

LongHornKms

Новичок
Я взял пароль, состоящий из *6* *случайных* *маленьких* *английских* букв.
Вычислил из него обычный MD5 и полученный хеш скормил программе PasswordsPro с настройками искать пароль в диапазоне маленьких английских букв и только шестизначные. Программа работала 2 минуты 05 секунд и успешно нашла пароль.

А вот хеш MD5-1000: f9513053f364f315e4f54272f20c087a
Кто-нибудь! Найдите мне исходный пароль! Итак, 6 маленьких англицких букв! Скажите пароль и время, за которое его удалось найти... Я предполагаю время не менее суток! А то и больше!


ЗЫ. ZerKms, да, мне платят за пиар PasswordsPro. По 10 баксов за каждое упоминание в тему! :-D
 
Сверху