«Почему в требованиях ФСТЭК неразрывно связаны шифрование и хэширование? Потому что настоящая безопасность — это не просто ‘закрыть на замок’. Это уверенность в том, что содержимое не подменили в пути, и что отправитель — именно тот, за кого себя выдаёт. Криптография — это не магия, а набор строгих инструментов, где каждый решает конкретную задачу: одни защищают секреты, другие — ловят малейшие изменения.»
Хэширование: цифровой отпечаток данных
Чтобы понять, изменился ли файл с момента создания, недостаточно просто его посмотреть. Нужен инструмент, который превращает данные любой длины в уникальную короткую строку-идентификатор — хэш. Принцип похож на контрольную сумму, но с криптографической стойкостью: восстановить исходник по хэшу нельзя, а любая правка, даже в один байт, радикально меняет результат. Это называется лавинным эффектом.
Вот как это работает на практике: отправитель вычисляет хэш файла и передаёт его получателю отдельным каналом. Получатель, получив файл, вычисляет хэш самостоятельно. Совпадение двух значений означает, что в процессе передачи файл не был повреждён и не подвергся модификации.
Что делает хэш-функцию криптографически стойкой
- Детерминированность: одинаковые входные данные всегда дают один и тот же хэш.
- Скорость: вычисление хэша происходит быстро даже для больших объёмов данных.
- Необратимость (стойкость к прообразу): по имеющемуся хэшу вычислительно невозможно восстановить исходные данные.
- Лавинный эффект: минимальное изменение входных данных (например, один бит) полностью меняет выходной хэш.
- Устойчивость к коллизиям: практически невозможно найти два разных набора данных, которые дадут одинаковый хэш.

Пределы простого хэширования и переход к подписи
Описанный подход с передачей хэша уязвим для активного нападения. Злоумышленник, контролирующий канал связи, может перехватить и файл, и его хэш, заменить файл на свой, вычислить для него новый хэш и отправить подменённую пару дальше. Получатель проверит целостность и ничего не заподозрит. Простой хэш гарантирует, что данные не исказились, но не гарантирует, что они пришли от доверенного источника.
Для решения этой проблемы требуется криптографически связать хэш данных с идентификатором отправителя. Так появляется концепция электронной подписи.
Электронная подпись: целостность + аутентификация
Электронная подпись использует связку из двух технологий: хэш-функции и асимметричного шифрования. Отправитель действует так:
- Вычисляет криптографический хэш от подписываемого документа.
- Шифрует этот хэш своим закрытым ключом. Полученная зашифрованная строка и есть электронная подпись.
- Передаёт получателю исходный документ и подпись.
Получатель, имея открытый ключ отправителя:
- Расшифровывает подпись открытым ключом и получает хэш, который заявил отправитель.
- Самостоятельно вычисляет хэш от полученного документа.
- Сравнивает два хэша. Их совпадение даёт три гарантии:
- Аутентичность источника: подпись мог создать только владелец закрытого ключа.
- Целостность данных: документ не был изменён после подписания.
- Неотрекаемость: отправитель не сможет позже отрицать факт подписания.
Эволюция алгоритмов хэширования
| Алгоритм | Длина хэша | Статус и применение |
|---|---|---|
MD5 |
128 бит | Считается криптографически сломанным. Коллизии находят за реальное время. Не должен использоваться для защиты целостности или в новых системах. |
SHA-1 |
160 бит | Устарел. Теоретические атаки стали практическими. Миграция на семейство SHA-2 давно является обязательной. |
SHA-256 |
256 бит | Текущий стандарт де-факто. Широко применяется в TLS, блокчейне, системах электронной подписи и для проверки целостности ПО. |
SHA-3 (Keccak) |
224–512 бит | Современный стандарт, построенный на принципиально иной конструкции (губка). Рассматривается как перспективный кандидат в эпоху постквантовой криптографии. |
Шифрование: инструмент для другой задачи
Важно разделять понятия. Хэширование и подпись защищают целостность и аутентичность. Для защиты конфиденциальности — то есть для предотвращения чтения данных посторонними — используется шифрование. На практике эти механизмы почти всегда работают вместе.
Симметричное шифрование
Использует один ключ и для шифрования, и для расшифровки. Главное преимущество — высокая скорость работы с большими данными. Главная проблема — безопасная доставка ключа всем участникам.
Примеры: AES-256 (стандарт для шифрования данных на покое), ChaCha20 (популярен в мобильных и высокопроизводительных системах).
Асимметричное шипрование
Использует пару ключей: открытый (public) для шифрования, закрытый (private) для расшифровки. Решает проблему распределения ключей, но работает значительно медленнее симметричного.
Примеры: RSA (традиционный, с большими размерами ключей), ECC (криптография на эллиптических кривых, обеспечивает ту же стойкость при меньших размерах ключей и большей скорости).
В реальных протоколах (например, TLS) асимметричное шифрование используется на начальном этапе для аутентификации и безопасной передачи симметричного сессионного ключа, которым затем шифруется основной трафик.
Управление ключами: фундамент, на котором всё держится
Самый стойкий алгоритм бесполезен, если ключи скомпрометированы. Управление жизненным циклом криптографических ключей (Key Management) — критическая операционная задача.
- Генерация: Должна выполняться с использованием криптографически стойких генераторов случайных чисел (CSPRNG). Для ключей повышенной важности (корневых, CA) используются аппаратные модули безопасности (HSM).
- Распределение: Безопасная передача ключей, часто с использованием вышестоящих ключей или защищённых протоколов.
- Хранение: Ключи никогда не хранятся в открытом виде. Используются защищённые хранилища: HSM, TPM, программные keystore с аппаратной изоляцией, облачные KMS.
- Использование: Строгий контроль и аудит операций. Принцип разделения обязанностей (например, для активации ключа нужны несколько ответственных лиц).
- Ротация: Плановая замена ключей до истечения периода их криптостойкости. Ключи имеют версии для поддержки плавного перехода.
- Уничтожение: Безопасное удаление, гарантирующее невозможность восстановления ключа из носителя (многократная перезапись). В случае аппаратных HSM — физическое уничтожение.
Современные протоколы: синтез технологий
Ни один механизм не работает изолированно. Возьмём TLS 1.3 — протокол, на котором держится защищённый веб:
- Асимметричная криптография (ECDHE): Используется для аутентификации сервера (иногда клиента) и выработки общего секрета без его передачи по сети.
- Симметричное шифрование (AES-GCM, ChaCha20-Poly1305): Зашифровывает весь последующий трафик с помощью высокоскоростных алгоритмов.
- Хэширование и коды аутентификации (HMAC, Poly1305): Обеспечивают целостность и аутентичность каждого передаваемого зашифрованного блока. Фактически, это симметричная подпись на основе общего сессионного ключа.
Этот комплексный подход, где целостность данных неразрывно связана с их конфиденциальностью и аутентичностью источника, и лежит в основе требований современных стандартов информационной безопасности.