Примитивы: симметрика, асимметрика, хеши, MAC
Криптография и инфраструктура открытых ключейЧто обеспечивает каждый примитив, где их применяют и почему нельзя изобретать свои схемы.
Зачем это нужно
- Выбор примитива определяет, какие свойства безопасности вы действительно получаете.
- Понимание различий объясняет, почему одни схемы ломаются на практике, а другие нет.
- Ошибки применения криптографии встречаются чаще, чем слабости самих алгоритмов.
Теория
Симметричное шифрование использует один ключ для шифрования и расшифрования: современный стандарт — AES с режимами, обеспечивающими аутентификацию (например, GCM). Плюс: высокая скорость. Минус: задача распространения ключа. Асимметричное шифрование использует пару ключей: RSA или схемы на эллиптических кривых; применяется для обмена ключами и цифровых подписей, но медленнее и требует аккуратного выбора параметров и заполнения.
Хеш-функции обеспечивают сжатие и стойкость к нахождению прообраза и коллизий: SHA-256, SHA-3. Пароли нельзя хранить по быстрым хешам — используются специализированные схемы с солью и высокой вычислительной стоимостью: Argon2 (предпочтительно), scrypt, bcrypt, PBKDF2. Код аутентификации сообщения (HMAC) и конструкции AEAD дают целостность и аутентификацию данных.
Практические правила: не изобретать собственные схемы; не использовать режимы без аутентификации (ECB, чистый CBC); не переиспользовать одноразовые числа и векторы; использовать проверенные библиотеки и обновлять их; выбирать длину ключа с запасом; помнить о компромиссе между сменой ключа и сложностью системы. Для долгоживущих данных учитывать план перехода на постквантовые схемы: NIST уже стандартизировал первые алгоритмы обмена ключами и подписей, и гибридные схемы внедряются в протоколы.
Ключевые концепции
- AEAD
- Схема, одновременно обеспечивающая конфиденциальность и целостность: например AES-GCM и ChaCha20-Poly1305.
- Хеширование паролей
- Медленная схема с солью и параметрами стоимости: Argon2, scrypt, bcrypt, PBKDF2.
- HMAC
- Код аутентификации на основе хеш-функции и секретного ключа.
- Эфемерный обмен ключами
- Схема, дающая стойкость к компрометации долговременного ключа в прошлом (forward secrecy).
- Постквантовые схемы
- Алгоритмы, устойчивые к атакам квантовых компьютеров; внедряются гибридно с классическими.
- Криптографическая agility
- Способность системы заменять алгоритмы без переписывания продукта.
Инструменты
- openssl — практическая работа с алгоритмами, ключами и сертификатами.
- age и GPG — шифрование файлов и подписи.
- hashcat и john (только для своих хешей и учебных наборов) — оценка стойкости паролей.
- Библиотеки libsodium и аналоги — рекомендованные реализации высокоуровневых схем.
- Инструменты проверки: testssl.sh, шифрсьюты-сканеры собственных сервисов.
Практика в легальных лабораториях
- Зашифруйте файл в лаборатории симметричным и асимметричным способом и сравните размеры и время.
- Подпишите и проверьте документ; затем измените один байт и убедитесь, что проверка падает.
- Сравните хеширование пароля быстрым алгоритомом и схемой с параметрами стоимости; замерьте время.
- Настройте гибридный сеанс: обмен ключами асимметрично, данные шифруются симметрично.
- Составьте таблицу: задача → примитив → рекомендуемые параметры.
Защита, детект и защитные меры
- Используйте только проверенные реализации и обновляйте библиотеки по графику.
- Храните ключи отдельно от кода: в хранилище секретов или аппаратном модуле.
- Планируйте ротацию ключей и алгоритмов заранее, а не после инцидента.
- Контролируйте инвентарь: где какие алгоритмы и длины ключей применяются.
Правовая рамка и этика
- Экспортные ограничения и требования регуляторов к криптографии зависят от страны: проверяйте требования для своего продукта.
- Использование инструментов подбора паролей допустимо только для собственных хешей и учебных наборов.
Типичные ошибки
- Применять режимы без аутентификации и получать незаметное изменение данных.
- Хранить пароли по быстрым хеш-функциям.
- Переиспользовать одноразовые числа и векторы инициализации.
- Самостоятельно реализовывать криптографические протоколы.
Чек-лист «умею»
- Объясняю разницу между симметрикой и асимметрикой и когда что выбирать.
- Знаю, какие схемы допустимы для хранения паролей.
- Умею подписать данные и проверить подпись.
- Понимаю, зачем нужна стойкость к компрометации прошлых ключей.
- Слежу за планом перехода на постквантовые схемы.
Вопросы на интервью
- Почему нельзя хранить пароли по SHA-256?
- Что такое AEAD и почему ECB не подходит для данных?
- Как вы организуете ротацию ключей в сервисе?