Cryptology Academy · Урок

Почему обычный SHA-256 не подходит для паролей

Разберитесь в радужных таблицах, скорости перебора и соли

Урок 1 из 413 шагов

«Почему обычный SHA-256 не подходит для паролей» — бесплатный урок Cryptology Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Cryptology Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Cryptology Academy содержит 4 уроков всего.

Добро пожаловать

Безопасное хранение паролей — одна из самых неправильно понимаемых тем в безопасности. На этом уроке мы поймём, почему быстрые хеши вроде SHA-256 категорически не подходят для паролей.

Что происходит при утечке баз данных

Утечки баз данных происходят постоянно. В 2024 году RockYou2024 раскрыл 10 миллиардов паролей. Если пароли ваших пользователей хранятся в форме, позволяющей их восстановить, злоумышленники их восстановят.

Наивное хранение SHA-256

Плохой шаблон: hashed = sha256(password) store(username, hashed) Проблемы: (1) sha256 работает чрезвычайно быстро, (2) для одного и того же пароля получается один и тот же хеш (нет соли), (3) для распространённых паролей существуют радужные таблицы.

Атака с помощью радужной таблицы

Радужная таблица — это заранее вычисленное соответствие хешей и паролей для миллионов распространённых паролей. SHA-256('password') всегда даёт один и тот же хеш. Поиск в таблице позволяет мгновенно подобрать большинство паролей.

Роль соли

Соль = случайные байты, добавленные перед паролем перед хешированием. hash = sha256(salt + password) Каждый пользователь получает уникальную соль. Радужные таблицы становятся бесполезными: злоумышленнику приходится подбирать пароль каждого пользователя отдельно.

Но одной соли недостаточно

Современный GPU вычисляет 10 BILLION хешей SHA-256 в секунду. Даже при уникальных солях злоумышленник с утёкшими хешами может подобрать пароли длиной 8 символов за несколько минут.

Проблема скорости

SHA-256 разработан для высокой скорости — например, для проверки целостности файлов, TLS и других задач. Скорость мешает хешированию паролей. Нужны намеренно медленные алгоритмы, устойчивые к перебору.

Растягивание ключа

Растягивание ключа многократно применяет функцию хеширования: for i in range(100000): h = sha256(h). Это замедляет работу и злоумышленника, и защитника, но преимущество оборудования по-прежнему на стороне злоумышленника.

Функции с высокой потребностью в памяти

Современные средства хеширования паролей требуют большого объёма RAM, а не только циклов CPU. У GPU меньше RAM на ядро по сравнению с CPU. Высокие требования Argon2 к памяти нейтрализуют преимущества GPU и ASIC.

Распространённые ошибки

Не следует: - sha256(password) - sha256(salt + password) без многократного применения - md5(password) (или любой MD5) - шифровать пароли (их можно расшифровать) - sha256(sha256(password)) (всё ещё слишком быстро)

Что использовать вместо этого

Используйте: bcrypt (наиболее широко применяемый), Argon2id (рекомендуется OWASP, требует много памяти), PBKDF2-SHA256 (соответствует FIPS, приемлемый вариант). Все три алгоритма намеренно медленные и по умолчанию используют соль.

Быстрая проверка

Почему SHA-256 не подходит для хеширования паролей даже при использовании соли?

Итоги

SHA-256 не подходит для паролей. Далее мы изучим bcrypt — алгоритм, который намеренно замедляет хеширование и делает его устойчивым к преимуществам оборудования.
Можно начать бесплатно

Изучай Cryptology Academy с ИИ-репетитором — бесплатно

Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.

Курсы
67
Уроки
261

Часто задаваемые вопросы

Урок «Почему обычный SHA-256 не подходит для паролей» бесплатный?

Да — полный текст урока «Почему обычный SHA-256 не подходит для паролей» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Cryptology Academy, подпишись на CoddyKit PRO. Курс Cryptology Academy содержит 4 уроков всего.

Чему я научусь в уроке «Почему обычный SHA-256 не подходит для паролей»?

Разберитесь в радужных таблицах, скорости перебора и соли Ты практикуешь Cryptology Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Cryptology Academy?

Предыдущий опыт не требуется. Cryptology Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.

Сколько времени занимает урок «Почему обычный SHA-256 не подходит для паролей»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Cryptology Academy?

Да. Каждый урок Cryptology Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Почему обычный SHA-256 не подходит для паролей
  2. bcrypt: алгоритм и фактор вычислительной стоимости
  3. Argon2: хеширование паролей с высокой потребностью в памяти
  4. PBKDF2 и выбор подходящего алгоритма
← Назад к Cryptology Academy