А ты не задумывался, почему дажее к самым дорогим и фирменным
прогам пишут кейгены?
Там хешируются имена, а толку что?
От кейгенов спасает только Асимм_Хеш(Обычный_Хеш(Имя))).
Здравствуйте!
У меня есть вопрос скорее к криптоаналитикам чем к криптографам. Проблемма в следующем: Я придумал и реализовал алгоритм хэширования паролей. По моим испытаниям рассеивание не плохое, но я хотел бы посоветоваться с профессионалами. Как мне можно узнать характеристики данной функции и насколько она годиться для использования в системах безопасности?
Алгоритм могу дать. Реализован на Ассемблере.
Заранее спасибо.
Характеристики Хэша24.03.03 19:05 Автор: ZLynxZ Статус: Незарегистрированный пользователь
Алгоритм буду описывать на псевдокоде, как в "Основах современной криптографии".
Алгоритм заключается в следущем: Пусть есть пароль длины n символов и его привязка из 4-х символов (идею привязки cgbplbk из Unix).
---------------------------------
P[] - буфер пароля
A, B - имеют размерность 32 бита
c - размерность 8 бит
A = B = Привязка
For i = 1 to n {
A = A xor P[i]
B = ((B + A) mod 2^32) <<< 1
c = P[n-i+1] and 00011111b
A = A >>> c
}
Выход = A xor B
---------------------------------
Ну там потом ещё декодиг хэша должен идти, типа чтобы он состоял из одних букв, но на криптостойкость это не влияет... Поэтому не загружаю форум ;)))
Мда, на Асме она больше выглядит... Ну да ладно... Подскажите что с ней ещё можно сделать, что бы повысить время вычисления, и необратимость...
Заранее всем спасибо.
а ты его в лоб пробовал?25.03.03 08:23 Автор: cybervlad <cybervlad> Статус: Elderman
> Подскажите что с ней ещё можно сделать, что бы повысить > время вычисления, и необратимость... ну, необратим он по определению - если пароль 8 символов, то из 32 бит ты его не восстановишь в общем случае.
насчет сложности. в свое время, в процессе изучения системы аутентификации netware, меня очень заинтересовала возможность подбора пароля по данным handshake. пароль там сначала хешируется (размер хеша - 128 бит, 16 байт то есть), причем алгоритм "немноожко" потяжелее, чем у тебя. тем не менее, лобовая атака (bruteforce) до определенного предела имеет смысл.
результат здесь:
http://cybervlad.port5.com/nwpass/netware.pdf (полный вариант)
http://cybervlad.port5.com/nwpass/index.html (журнальный вариант)
также рекомендую посмотреть проект Pandora на www.nmrc.org, там есть подбиралка пароля под нетваревый хеш в стиле John the Ripper.
Характеристики Хэша. дык отож25.03.03 03:35 Автор: andrew Статус: Незарегистрированный пользователь
> Алгоритм буду описывать на псевдокоде, как в "Основах > современной криптографии". > Алгоритм заключается в следущем: Пусть есть пароль длины n > символов и его привязка из 4-х символов (идею привязки > cgbplbk из Unix). увы, не в курсе, что за зверь, но вообще не важно, если оно однократное...
> --------------------------------- > P[] - буфер пароля > A, B - имеют размерность 32 бита навскидку - мало. сейчас хэш - минимум 128, есть и 160, а в ГОСТе 256 бит
> c - размерность 8 бит > > A = B = Привязка > > For i = 1 to n { > A = A xor P[i] ах, не однократное! то тут тонкость, мне не очень понятная...
> B = ((B + A) mod 2^32) <<< 1 младший бит = нулю
> c = P[n-i+1] and 00011111b а тут 3 старших
> A = A >>> c если это не циклический сдвиг, то
> } > > Выход = A xor B можно предсказать 4 бита из 32 на предыдущем цикле, 2^28 бит/2^4 еще на предыдущем, итого за 8 циклов можно подобрать нужный хэш -требуется "аппендикс" в 24 байта.
стоимость перебора (2^4*2^32*2^3)/2= 2^38. даже не разговор. можно еще понизить на порядки (двоичные) за счет таблицы, но потребуется память и предвычисления. аналог алгоритма голича - балансировка "время-память".
> --------------------------------- > Ну там потом ещё декодиг хэша должен идти, типа чтобы он > состоял из одних букв, но на криптостойкость это не > влияет... Поэтому не загружаю форум ;))) а и верно...
> Мда, на Асме она больше выглядит... Ну да ладно... дык он и помладше псевдокода будет, петька (почти анекдот 8-))
> Подскажите что с ней ещё можно сделать, что бы повысить > время вычисления, и необратимость... повысить время? вставь с десяток пустых циклов... 8-))
а по делу - дык шеннон давно все сказал - берем туеву хучу тривиальных функций (подстановка и перемешивание) и пользуем их, бедолаг, совместно (есть такое слово - суперпозиция)
у тебя направление мысли верное, но биты предыдущего цикла не "размазываются" на весь массив хэша, а это @#$ово. я бы на твоем месте издевался над двумерным МАССИВОМ хэша типа 8х8 (примерно как сделано в АЕС) - в четных циклах над строками, а внечетных над столбцами. всего 2 доп. указателя, а как хреново становится жить аналитику 8-). на последнем цикле "свертывал" этот массив по медиане (ну или главной диагонали) для пущей вредности 8-))
заходи на ru.crypt там таких добрых много
8-))
а еще почитай ЧаВО - последовательно заходи, ручками, а то прямая ссылка сваливается почему-то:
ftp://ftp.wtc-ural.ru/ pub/
ru.crypto/
faq/
rucrypt.faq
32 бита очень мало24.03.03 20:20 Автор: leo <Леонид Юрьев> Статус: Elderman Отредактировано 24.03.03 20:23 Количество правок: 1
Выход в 32 бита очень мал для хеширования пароля. Нужно как минимум 64.
Кроме этого, очень легко вычислить/подобрать некоторый пароль, который даст заданный хэш. Можно просто перебором (атакой в лоб), а если немного подумать то еще быстрее...
Чтобы получить более-менее приемлемые параметры, нужно дополнительно задействовать mul, и сдедать не менее 5 "больших" циклов.
Например так:
A = B = xxx
for i = 0 to 8
{
for j = 0 to n - 1
{
A = A xor P[j] + B
B = (A * B + j) <<< 5
A = A >>> P[n-j]
}
}
Выход = (A << 32) + B
---
Удачи.
Ну давай :-)21.03.03 18:41 Автор: leo <Леонид Юрьев> Статус: Elderman Отредактировано 21.03.03 18:43 Количество правок: 1
> Ну давай :-) > Не обижайся, но думаю за час-два анализа мы твой алгоритм > "угробим"...
Откуда такая уверенность?
> Чем он лучше чем RIPEMD-128/160, SHA-1, HAVAL или MD5 ?
Может быть и ничем. Но легко придумать алгоритм, отличный от известных, который потребует куда больше чем "час-два анализа", а то и будет ничуть не хуже перечисленных.
Создан именно для паролей22.03.03 11:31 Автор: ZLyxZ Статус: Незарегистрированный пользователь
Я создал этот алгоритм для хэширования паролей... И мне хотелось бы только узнать его характеристики и предложения по улучшению... Если вы возьмётесь за его испытание, то оставьте свой Е-Майл и я пришлю вам саму реализацию и заодно програмку для проверки... Спасибо.
Создан именно для паролей24.03.03 11:32 Автор: andrew Статус: Незарегистрированный пользователь
> Я создал этот алгоритм для хэширования паролей... И мне > хотелось бы только узнать его характеристики и предложения > по улучшению... Если вы возьмётесь за его испытание, то > оставьте свой Е-Майл и я пришлю вам саму реализацию и > заодно програмку для проверки... Спасибо. а зачем реализация? я может и ассемблера то не знаю 8-))
опубликуй алгоритм, тогда будет предмет для обсуждения, а сейчас это сотрясение воздуха
А ты не задумывался, почему дажее к самым дорогим и фирменным
прогам пишут кейгены?
Там хешируются имена, а толку что?
От кейгенов спасает только Асимм_Хеш(Обычный_Хеш(Имя))).
Ерунда! разумеется, бред!25.03.03 03:01 Автор: andrew Статус: Незарегистрированный пользователь
> А ты не задумывался, почему дажее к самым дорогим и > фирменным > прогам пишут кейгены? задумывался. видимо денег зарабатывают. нет?
> Там хешируются имена, а толку что? > От кейгенов спасает только Асимм_Хеш(Обычный_Хеш(Имя))). я стесняюсь спросить, это ко мне вопрос?
тогда попрошу уточнений, что такое "обычный хэш"? "ассиметричный хэш (видимо ЭЦП или ассим. алгоритм в режиме ГСЧ)?
и наконец - вопрос победителю: что есть сильный и слабый MDC ?
причем, цинично замечу, что в схеме (просто сильный хэш, определяющий искажения) мне никто не помешает заранее рассовать значение хэша по всем Инетовским заборам и даже написать "в общественном парижском туалете". и чем это отличается от распространения "открытого ключа" в предложенной мне схеме?
при использовании СИЛЬНОГО хэша, потребуется очень нехилый математик, класса - кочера, заломавшего pkzip за 2^38, против 2^96, заложенных в алгоритме...
позволю себе еще и последнее - когда я писал свое письмо, то исходил из закона керкхоффа, а не из "security by ostrich".