Разграничение математических моделей

В теоретической части разбери принципиальную разницу в назначении алгоритмов. Симметричное шифрование вроде AES или надстройки Fernet создавалось для конфиденциальной передачи данных с возможностью их обратного прочтения по секретному ключу. Хеширование решает задачу контроля целостности и аутентификации без сохранения исходного текста.

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

Анализ модели угроз и хранение ключей

Центральный вопрос реферата — поведение системы при полной компрометации базы данных. Построй сравнительную таблицу рисков по следующим направлениям:

  • Утечка базы данных при симметричном шифровании позволяет злоумышленнику быстро получить доступ к паролям пользователей, если он также завладел конфигурационным файлом сервера с ключом шифрования.
  • Утечка базы хешей без соли оставляет риск атак по радужным таблицам и заранее вычисленным словарям популярных паролей.
  • Использование криптографической соли делает каждый хеш уникальным даже для одинаковых паролей разных пользователей, исключая пакетный подбор.
  • Специализированные функции формирования ключа вроде PBKDF2, bcrypt или Argon2 расходуют вычислительные ресурсы процессора и памяти, делая атаку перебором на видеокартах экономически нецелесообразной.

Практическая часть на Python

Реализуй два компактных модуля. В первом используй встроенную библиотеку hashlib: напиши функцию хеширования пароля с генерацией случайной 16-байтной соли через os.urandom и алгоритм PBKDF2-HMAC-SHA256 на 600 000 итераций. Добавь функцию сверки введенного пароля с сохраненным хешем через безопасное сравнение hmac.compare_digest для предотвращения атак по времени.

Во втором модуле задействуй библиотеку cryptography. Реализуй симметричное шифрование строки пароля классом Fernet, покажи генерацию ключа, процесс шифрования в ciphertext и последующую расшифровку. В выводах к коду наглядно объясни уязвимость этого подхода: пароль в расшифрованном виде неизбежно появляется в оперативной памяти сервера при каждой операции проверки.

Что проверяет преподаватель

В этой теме преподаватель информатики оценивает строгость терминологии и понимание архитектуры безопасности. Ошибочно называть хеширование «односторонним шифрованием». Шифрование всегда предполагает наличие алгоритма расшифровки, которого у хеш-функций нет по определению.

Также проверяется глубина анализа вычислительной сложности. Преподаватель обратит внимание на то, понимаешь ли ты, почему быстрые алгоритмы вроде SHA-256 или MD5 сегодня непригодны для хранения паролей в чистом виде, даже если к ним добавлена соль.

Где искать стандарты и данные

Для теоретической базы используй профильные криптографические документы. Главный первоисточник — руководство NIST Special Publication 800-63B «Digital Identity Guidelines», где четко сформулированы современные требования к хранению секретов аутентификации.

Рекомендации по выбору алгоритмов и параметров итераций бери из отчетов OWASP Password Storage Cheat Sheet. Механику работы алгоритма защиты паролей Argon2 смотри в спецификации RFC 9106, а детали реализации встроенных модулей — в официальной документации Python по модулям hashlib, secrets и hmac.

Частые вопросы

Можно ли применять симметричное шифрование вместе с хешированием?

Да, эта концепция называется добавлением криптографического «перца» (pepper). Хеш пароля с солью дополнительно шифруют симметричным ключом, который хранится в отдельном защищенном аппаратном модуле (HSM) вне базы данных.

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

Алгоритм разрабатывался для максимального быстродействия при обработке файлов. Современная видеокарта перебирает миллиарды комбинаций SHA-256 в секунду, поэтому для паролей применяют ресурсоемкие алгоритмы Argon2, scrypt или PBKDF2.