![]() |
Что уже устарело в Криптография, расшифровка хешей — кто сталкивался?
Давайте сразу по делу — криптография и работа с хешами постоянно развиваются. То, что еще пару лет назад казалось железобетонной защитой, сегодня может быть легко взломано или вызывать подозрения у специалистов. В этой теме хочу обсудить, что конкретно устарело в криптографии и расшифровке хешей, а также поделиться своими наблюдениями и послушать, с чем вы сталкивались на практике.
Что такое криптография и хеширование Для начала пару слов о том, с чем имеем дело. Криптография — это наука и практика защиты информации с помощью шифров. Цель — сделать данные нечитаемыми для посторонних. В повседневной практике это может быть шифрование сообщений, паролей, файлов и многое другое. Хеширование — немного другая история. Это процесс преобразования произвольного объема данных в строку фиксированной длины, которую обычно называют хешем. Главный момент — хеш-функция односторонняя, то есть по хешу нельзя вернуть исходный текст. Это классно для хранения паролей, проверки целостности, цифровых подписей и прочего. Но тут важно, какой именно алгоритм стоит использовать и как. Где всё это используется в реальной жизни - Хранение паролей на сайтах и в приложениях. Никому не нужны ваши пароли в открытом виде, потому и используют хеши. - Цифровые подписи, чтобы подтвердить подлинность документов. - Безопасная передача сообщений — например, через TLS (HTTPS). - Контроль целостности файлов и загрузок (сравнивают хеши). - Криптовалюты и блокчейн — хеши и шифры тут в основе. Что именно устарело или перестало использоваться, и почему 1. MD5 и SHA-1. Это классика из ранних 2000-х. В свое время MD5 был мега-популярен для хеширования паролей и проверки целостности, а SHA-1 — чуть круче по размеру хеша. Но — оказалось, MD5 и SHA-1 слишком быстро поддаются коллизиям, то есть разным данным, дающим одинаковые хеш-значения. Это упрощает взлом или подделку. Сейчас большинство специалистов и сервисов либо полностью отказались от них, либо используют только для нестратегических задач. 2. Примитивные способы хранения паролей. Просто сделать хеш пароля и записать — это уже не защита. Надо использовать соли (случайные данные, добавляемые к паролю перед хешированием), чтобы не получилось, что пароли одинаковые по хешам. Еще лучше — использовать адаптивные алгоритмы вроде bcrypt, Argon2, scrypt с возможностью настройки сложности. 3. Симметричные протоколы с устаревшей длиной ключей. Например, DES с 56-битным ключом уже не воспринимается как безопасный — сегодня необходим минимум 128 бит. AES с 256 битами — более-менее стандарт. 4. Вектор инициализации (IV) и режимы работы шифров. Уже не та мода, когда IV был константным или вообще отсутствовал. Сейчас это важно, чтобы не повторять одни и те же параметры при шифровании разных данных. 5. Протоколы шифрования, уязвимые к атакам типа POODLE, BEAST и другим. Старые версии TLS 1.0 и TLS 1.1 практически не используют, снимают поддержку. TLS 1.2 и 1.3 — новое время. Практические примеры из жизни - Недавно на одном проекте столкнулся с тем, что разработчики пытались проверить пароли с помощью простого MD5. Ну, в общем, спустя пару дней работы и пару статей в сети — рекомендовал перейти на bcrypt и добавить соль. Одно только это изменение значительно улучшило защиту от атак с перебором и радужных таблиц. - Вот еще: видел в open-source проекте, что использовали SHA-1 в цифровой подписи. Странно было, конечно. Промониторил, и реально этот алгоритм уже считается потенциально небезопасным для таких задач. Я предложил перейти на SHA-256 или лучше. - В администрировании сервера тоже встретил ситуацию с TLS 1.0 — старое ПО не обновлялось, а по факту посетители заходили через небезопасное соединение. Решили просто выключить поддержку устаревших версий протокола — без особых проблем. Чек-лист: что проверить и обновить в системах - Выбраны ли безопасные алгоритмы хеширования для паролей? (bcrypt, Argon2, scrypt) - Используются ли соли при хешировании? - Не применяется ли MD5 или SHA-1 для критичных функций? - Актуальны ли версии TLS и шифры на сервере? (От TLS 1.2 и выше) - Длина ключей в шифровании — минимально 128 бит, лучше 256. - Режимы шифрования — правильно настроенные с рандомным IV. - Насколько адаптивен механизм защиты паролей — возможно ли добавить "торможение" при попытках перебора? - Проверяются ли генераторы случайных чисел для криптографических задач? Типичные ошибки, которые продолжают встречаться - Хранение паролей в простом виде или с простыми хешами без соли. - Использование устаревших и уязвимых алгоритмов (MD5, SHA-1). - Настройка TLS без отключения старых протоколов, что открывает двери атакам. - Ключи шифрования маленькой длины. - Использование одинаковых IV в шифровании разных данных. - Отсутствие мониторинга и обновления криптографических библиотек. - Игнорирование рекомендаций по постепенному переходу на новые стандарты. FAQ Вопрос: Почему нельзя просто взять MD5 для хеширования паролей, если это быстро? Ответ: MD5 — слишком быстрый алгоритм, что облегчает перебор паролей при атаке. К тому же существуют радужные таблицы для быстрого взлома MD5-хешей. Лучше использовать специальные алгоритмы с задержкой, например bcrypt. Вопрос: Что лучше — SHA-256 или SHA-3? Ответ: SHA-3 — новый стандарт с другим принципом работы, но SHA-256 нестираем и широко поддерживается. Для большинства задач сегодня можно спокойно использовать SHA-256, но SHA-3 отлично подойдет, если нужна свежая альтернатива. Вопрос: Как часто нужно обновлять крипто-библиотеки и алгоритмы? Ответ: Чем чаще, тем лучше. Обновления включают исправления уязвимостей. По крайней мере стоит следить за новостями и официальными рекомендациями, а критически важные проекты обновлять быстро. Вопрос: Можно ли "расшифровать" хеш пароля? Ответ: В прямом смысле — нет, потому что хеш односторонний. Но если хеш слабый (например, MD5 без соли), то с помощью перебора и радужных таблиц можно подобрать исходные данные. Обсуждайте, делитесь своим опытом, на что наткнулись в своих проектах или администрировании. Какие еще устаревшие методы встречали? Что посоветуете новичкам, кто только начинает работать с криптографией и хешами? Тема живет и развивается, и чем больше обмена опытом — тем лучше для всех. |
Помню, как в моей первой работе MD5 был везде — пароли, проверки, даже логику не мудрили. Сейчас это звучит почти как нонсенс, но тогда казалось нормой. Время идёт, и старые методы шляются на свалку — без соли и с MD5 сейчас только в учебниках у школьников. Главное — не зацикливаться на классике и вовремя менять железо на более защищённое.
|
MD5 и SHA-1 уже давно не вариант для серьезной защиты, слишком уязвимы к коллизиям. Сегодня пароли лучше хешировать с солью и алгоритмами типа bcrypt или Argon2 — они замедляют атаки перебора. TLS 1.0 вообще лучше забыть, сейчас стандарт — минимум TLS 1.2, а лучше 1.3. В общем, без свежих алгоритмов и грамотной настройки криптозащита — просто формальность.
|
Когда смотришь на старые алгоритмы вроде MD5 и SHA-1, удивляешься, как их раньше везде использовали. Сейчас понятно, что без соли и замедления атаки — это просто билет в руки взломщикам. Интересно, что многие проекты до сих пор дергают эти устаревшие методы, хотя уже давно есть варианты гораздо надежнее и современнее. Главное — не держаться за прошлое, чтобы не создавать дырки в безопасности.
|
MD5 и SHA-1 уже давно не катят для серьезных задач — коллизии легко находят, и перебор стал совсем дешевым. Пароли без соли и с быстрым хешем — просто дар гостю на блюде. Сейчас главное — брать что-то типа bcrypt или Argon2, где есть замедление, иначе смысл в защите теряется. TLS 1.0 тоже уже «мёртвый» стандарт, не стоит его оставлять. Всегда лучше идти в ногу со временем, чтобы не ловить неприятности потом.
|
MD5 и SHA-1 реально уже отслужили, их коллизии давно известны, и ставить их на пароли — это просто позор. Лучше сразу брать bcrypt или Argon2, они учитывают современные реалии с перебором и радужными таблицами. TLS 1.0 с его уязвимостями — тоже прошлый век, обновляйтесь хотя бы до 1.2, иначе отдаёте гостям доступ на халяву. В общем, кто ещё где старые алгоритмы тащит, тот просто рискует.
|
MD5 и SHA-1 уже давно пережиток — коллизии и радужные таблицы их просто убивают. Сегодня главное — использовать что-то адаптивное типа bcrypt или Argon2 с солью, чтобы защититься от перебора. TLS 1.0 с его уязвимостями лучше сразу забыть, иначе рискуешь впустить ненужных гостей. В общем, устаревшие алгоритмы — прямой путь к проблемам.
|
| Время: 03:06 |