Выбор алгоритма обратимого шифрования Mcrypt

BaNru

Гуру форума
Регистрация
20 Ноя 2008
Сообщения
162
Реакции
81
Какой из алгоритмов самый устойчивый к взлому?

На данный момент нашел только 6 алгоритмов в мануале:
- MCRYPT_DES
- MCRYPT_3DES
- MCRYPT_RIJNDAEL_128
- MCRYPT_RIJNDAEL_256
- MCRYPT_GOST
- MCRYPT_BLOWFISH

Шифроваться будет текст кода.
 
MCRYPT_RIJNDAEL_128 (он же AES 128). Альтернатива - twofish, но его в списке нету.
DES был национальным стандартом США в 1977—1980 гг., но в настоящее время DES используется (с ключом длины 56 бит) только для устаревших систем, чаще всего используют его более криптоустойчивый вид (3DES, 2DES). 3DES является простой эффективной заменой DES, и сейчас он рассмотрен как стандарт. В ближайшее время DES и Triple DES будут заменены алгоритмом AES (Advanced Encryption Standard — Расширенный Стандарт Шифрования).
 
Какой из алгоритмов самый устойчивый к взлому?

На данный момент нашел только 6 алгоритмов в мануале:
- MCRYPT_DES
- MCRYPT_3DES
- MCRYPT_RIJNDAEL_128
- MCRYPT_RIJNDAEL_256
- MCRYPT_GOST
- MCRYPT_BLOWFISH

Шифроваться будет текст кода.
Зачем использовать это, если в openssl есть все что нужно, даже больше. Из списка - все устаревшие. Какая версия? В 2.6.8 есть TWOFISH - используйте его если нужен именно mcrypt.
Вообще советую openssl (aes-256-cbc).
 
MCRYPT_RIJNDAEL_128 (он же AES 128). Альтернатива - twofish, но его в списке нету.
В названии размер ключа, размер блока у AES 128 бит, Twofish альтернатива AES-256, но он медленнее AES-256, с тем же крипто эффектом.
Вообще советую слегка подмешивать алгоритм, чтобы он не был идентичный доступным поумолчанию, тогда будет стойкий крипт, самый стойкий блочный крипт это комбинация ECB + CBC.
 
Никто даже AES128 не будет брутфорсом ломать ради вашего кода, так что не стоит зря усложнять алгоритмы и замедлять расшифровку. AES128 в свежих версиях openssl ускоряются аппаратно, так что это лучший выбор. IMHO.
 
Никто даже AES128 не будет брутфорсом ломать ради вашего кода, так что не стоит зря усложнять алгоритмы и замедлять расшифровку. AES128 в свежих версиях openssl ускоряются аппаратно, так что это лучший выбор. IMHO.
Да ты прав, брутфорсом не будут, есть на много быстрее методы атаки, 128 битный ключ ломают за трое суток, это 32 знака, даже при грубом переборе, при 6.334028666297328e+49 возможных комбинаций, на средней GPU ломанут за двое - трое суток.
Как показала практика, OpenSSL медленнее чем Mcrypt, при 10 000 повторов и 64Кб входных данных, OpenSSL Rijndael 256 CBC - 1.54 сек, Mcrypt Rijndael 256 CBC - 1.47 сек, время за весь цикл, что и следовало ожидать, так как OpenSSL предназначался для других целей, не стоит плодить ***но код и лепить то, что там ни к месту, нет понятия ускоряется аппаратно, есть понятие оптимизация под инструкции, в репозиториях большинство пакетов собраны с SSE2/SSE3, редко где SSE4, в моем случае оба пакета собраны в Gentoo с SSE4.
 
Да ты прав, брутфорсом не будут, есть на много быстрее методы атаки, 128 битный ключ ломают за трое суток, это 32 знака, даже при грубом переборе, при 6.334028666297328e+49 возможных комбинаций, на средней GPU ломанут за двое - трое суток.
Не совсем понимаю, откуда взялось число 6.334028666297328e+49, если 2^128 = 3,4e+38 и можно подробнее, про взом AES128 за 3-е суток? По поводу уменьшения сложность до 8,5e+37 еще слышал, в про такой быстрый взлом уже что-то новенькое, есть ссылки?
Про openssl - это в первую очередь набор библиотек, который использует множество ПО, так что о каких других целях речь?
Под аппаратным ускорением я имею ввиду поддержку специализированных инструкций Для просмотра ссылки Войди или Зарегистрируйся, можно конечно называть это и "оптимизацией под инструкции", но это все-же команды, рассчитанные именно на AES, а не общего назначения, как SSE.
 
Не совсем понимаю, откуда взялось число 6.334028666297328e+49, если 2^128 = 3,4e+38 и можно подробнее, про взом AES128 за 3-е суток? По поводу уменьшения сложность до 8,5e+37 еще слышал, в про такой быстрый взлом уже что-то новенькое, есть ссылки?
Про openssl - это в первую очередь набор библиотек, который использует множество ПО, так что о каких других целях речь?
Под аппаратным ускорением я имею ввиду поддержку специализированных инструкций Для просмотра ссылки Войди или Зарегистрируйся, можно конечно называть это и "оптимизацией под инструкции", но это все-же команды, рассчитанные именно на AES, а не общего назначения, как SSE.
AES-NI во первых еще не один компилятор не умеет полностью использовать данную инструкцию, во вторых еще не каждый имеет процессор с данной инструкцией, в третьих эта инструкция хз как работает, так как в финальном конкурсе AES было 5 алгоритмов и каждый с отличительными особенностями.
36^(128/4), 36 символов, 32 байта, откуда 2^128?
Холивар OpenSSL vs Mcrypt? Mcrypt направленна на скорость крипта, OpenSSL на шифрование дигитальных подписей.
На хабре была статья про 4xGTX480 и брут Rijndael_CBC_128 за 72 часа.
 
AES-NI во первых еще не один компилятор не умеет полностью использовать данную инструкцию, во вторых еще не каждый имеет процессор с данной инструкцией, в третьих эта инструкция хз как работает, так как в финальном конкурсе AES было 5 алгоритмов и каждый с отличительными особенностями.
Все современные процессоры поддерживают, там где нет поддержки, то используются старые, без оптимизации, в чем проблема?
Для использования AES-NI компилятор особо и не нужен, можно написать реализацию чисто на ассемблере, хотя и gcc / visual c отлично с ним работает, как доказательство - openssl 1.x, который есть на всех платформах и использует AES-NI (которые появились еще вроде в 2008 году) и какие могут быть вопросы в работе инструкций тоже не ясно, они просто выполняют раунды шифрования в соответствии со стандартом (где-то есть пруфлинки на проблемы с ними?)

36^(128/4), 36 символов, 32 байта, откуда 2^128?
Бред какой-то, откуда 36 символов? Длина Chiper-key для AES 128 - 128 бит (а не символов), т.е. 2^128, есть алгоритмы, которые позволяют уменьшить сложность в 4 раза, т.е. 2^126

Холивар OpenSSL vs Mcrypt? Mcrypt направленна на скорость крипта, OpenSSL на шифрование дигитальных подписей.
Хм, а ничего, что apache/nginx для шифрования трафика использует OpenSSL, хотя подписи используются только на этапе инициализации соединения?

На хабре была статья про 4xGTX480 и брут Rijndael_CBC_128 за 72 часа.
Пруфлинк или небыло.
 
Лично я делаю так.
PHP:
// Генерируем ключ доступа
                    $salt = '$2y$11$'.substr(md5(uniqid(rand(), true)), 0, 22);
                    $key = crypt($password, $salt);
                    // Генерируем хеш доступа
                    $salt = '$2y$11$'.substr(md5(uniqid(rand(), true)), 0, 22);
                    $hash = crypt($password, $salt);


PHP:
// Генерируем хеш на основе crypt
                $hash_tmp = crypt($password, $data_user['hash']);
                // Проверяем совпадение
                if ($data_user['hash'] == $hash_tmp)
                {
 
Назад
Сверху