Криптография и TLS
Симметричное и асимметричное шифрование, TLS/HTTPS-рукопожатие, сертификаты и цепочка доверия, безопасное хранение паролей.
21 вопросов
JuniorТеорияОчень частоЧто такое цифровой сертификат и чем он отличается от ключа?
Что такое цифровой сертификат и чем он отличается от ключа?
Сертификат связывает личность (домен, организацию) с открытым ключом и подписан доверенным удостоверяющим центром (CA). Голый открытый ключ ничего не говорит о владельце; сертификат добавляет заверенную CA привязку. Браузер доверяет ему, проверяя подпись по цепочке вплоть до уже доверенного корневого CA.
Типичные ошибки
- ✗Считать, что сертификат содержит закрытый ключ
- ✗Думать, что браузер доверяет любому самоподписанному сертификату
- ✗Не понимать роль подписи CA в проверке подлинности
Уточняющие вопросы
- →Как браузер выстраивает цепочку доверия от сертификата сайта до корневого CA?
- →Почему самоподписанный сертификат вызывает предупреждение в браузере?
JuniorТеорияОчень частоКак хранить пароли в БД? Можно ли использовать MD5 или SHA-1?
Как хранить пароли в БД? Можно ли использовать MD5 или SHA-1?
Никогда не храните пароль открыто и не используйте быстрые хэши вроде MD5/SHA-1 — их перебирают миллиардами в секунду. Применяйте медленный солёный хэш для паролей: bcrypt, scrypt или Argon2. Уникальная соль ломает радужные таблицы, а медленность делает перебор невыполнимым.
Типичные ошибки
- ✗Считать солёный MD5/SHA-1 достаточным — они слишком быстры для паролей
- ✗Шифровать пароли вместо хэширования (даёт обратимость и точку отказа в виде ключа)
- ✗Использовать одну общую соль вместо уникальной на каждого пользователя
Уточняющие вопросы
- →Зачем нужна уникальная соль, если хэш и так необратим?
- →Что такое work factor в bcrypt и как его подбирать?
JuniorТеорияОчень частоЧем симметричное шифрование отличается от асимметричного?
Чем симметричное шифрование отличается от асимметричного?
Симметричное шифрование берёт один общий секретный ключ для шифрования и расшифровки (AES) — быстро, но ключ надо безопасно передать. Асимметричное — пара ключей: открытый шифрует, закрытый расшифровывает (RSA) — решает доставку, но медленнее.
Типичные ошибки
- ✗Считать асимметричное шифрование быстрее симметричного — оно на порядки медленнее
- ✗Путать асимметричное шифрование с хэшированием (хэш необратим)
- ✗Думать, что симметричный ключ можно безопасно передать по открытому каналу без обмена ключами
Уточняющие вопросы
- →Почему на практике соединение шифруют симметрично, а пару ключей используют лишь в начале?
- →Что произойдёт, если симметричный ключ перехватят при передаче?
SeniorТеорияОчень частоЧто именно проверяет клиент, прежде чем довериться сертификату сервера?
Что именно проверяет клиент, прежде чем довериться сертификату сервера?
Клиент строит цепочку от конечного сертификата до корня в своём хранилище доверия, проверяя каждую подпись и то, что промежуточный сертификат — CA с правом подписи. Также сверяются сроки действия, имя хоста с записями SAN и статус отзыва. Одно неудачное звено рушит цепочку.
Типичные ошибки
- ✗Забывать, что имя хоста должно совпадать с записью SAN, а не с устаревшим Common Name
- ✗Считать, что любой подписанный CA сертификат годится для любого имени хоста
- ✗Принимать недоступный сервис отзыва за успешно пройденную проверку
Уточняющие вопросы
- →Почему устаревшего поля Common Name уже недостаточно для сверки имени хоста?
- →Что добавляет закрепление сертификата (pinning) и какой эксплуатационный риск оно создаёт?
JuniorТеорияЧастоЧто даёт аутентифицированное шифрование по сравнению с обычным?
Что даёт аутентифицированное шифрование по сравнению с обычным?
Шифрование само по себе скрывает данные, но не выявляет подмену: изменённый шифротекст всё равно расшифруется в текст, на который повлиял атакующий. Режимы AEAD вроде AES-GCM добавляют тег аутентификации, поэтому любая правка ведёт к отказу расшифровки.
Типичные ошибки
- ✗Считать, что одно шифрование защищает от изменения данных
- ✗Вычислять MAC по открытому тексту вместо шифротекста
- ✗Использовать расшифрованные данные, хотя тег аутентификации не сошёлся
Уточняющие вопросы
- →Почему правильный порядок композиции — encrypt-then-MAC?
- →Что должно делать приложение, если тег аутентификации не проверился?
JuniorТеорияЧастоЧем различаются хэширование, шифрование и кодирование и где здесь base64?
Чем различаются хэширование, шифрование и кодирование и где здесь base64?
Хэширование одностороннее — дайджест фиксированной длины, из которого не получить исходные данные. Шифрование обратимо при наличии ключа и именно оно даёт конфиденциальность. Кодирование — обратимая смена формата без ключа, поэтому base64 ничего не защищает.
Типичные ошибки
- ✗Считать base64 способом скрыть или защитить данные
- ✗Думать, что хэш обратим, если сохранена соль
- ✗Применять хэш там, где на деле нужно обратимое шифрование
Уточняющие вопросы
- →Чем полезна хэш-функция, если её нельзя обратить?
- →Что из трёх вы выберете для значения, которое нужно потом прочитать?
JuniorТеорияЧастоЧем salt отличается от pepper при хэшировании паролей?
Чем salt отличается от pepper при хэшировании паролей?
Salt — уникальное случайное значение для каждого пользователя рядом с хэшем; из-за него одинаковые пароли дают разные хэши, а предвычисленные таблицы бесполезны. Pepper — один секрет вне базы, в конфиге или KMS, поэтому украденного дампа мало для проверки догадок.
Типичные ошибки
- ✗Считать, что сам salt нужно держать в секрете
- ✗Использовать один общий salt для всех пользователей
- ✗Хранить pepper в той же базе, что и защищаемые им хэши
Уточняющие вопросы
- →Почему salt допустимо хранить открыто рядом с хэшем?
- →Где должен лежать pepper, чтобы дамп базы его не раскрыл?
MiddleТеорияЧастоЧто такое forward secrecy и как её гарантирует транспортный протокол TLS 1.3?
Что такое forward secrecy и как её гарантирует транспортный протокол TLS 1.3?
Forward secrecy означает, что записанный сегодня трафик не расшифруется, даже если ключ сервера украдут позже. В TLS 1.3 каждое рукопожатие — эфемерный обмен (EC)DHE, чьи закрытые значения уничтожаются, а ключ сертификата лишь подписывает обмен: статический перенос ключа убрали.
Типичные ошибки
- ✗Думать, что forward secrecy даёт шифр, а не обмен ключами
- ✗Считать, что украденный ключ сертификата расшифрует ранее записанные сессии
- ✗Путать смену ключа внутри живой сессии с forward secrecy
Уточняющие вопросы
- →Какую роль в рукопожатии TLS 1.3 всё ещё играет закрытый ключ сертификата?
- →Почему возобновление сессии требует осторожности, если нужно сохранить forward secrecy?
MiddleДизайнЧастоВы проектируете шифрование данных при хранении для мультиарендного SaaS, который держит документы клиентов в одном объектном хранилище и одном кластере PostgreSQL на тысячи арендаторов. Ограничения — арендаторы должны быть криптографически разделены, чтобы компрометация ключа одного не раскрывала данные другого; ключи должны ротироваться без перешифрования терабайтов документов; при уходе арендатора его данные должны стать невосстановимыми в течение суток; серверы приложения без состояния и автомасштабируются, поэтому ничего нельзя привязывать к конкретному хосту; аудиторам нужна запись о каждом использовании ключа. Опишите иерархию ключей, где живёт каждый ключ, как работают шифрование и ротация и как обеспечивается удаление арендатора.
Вы проектируете шифрование данных при хранении для мультиарендного SaaS, который держит документы клиентов в одном объектном хранилище и одном кластере PostgreSQL на тысячи арендаторов. Ограничения — арендаторы должны быть криптографически разделены, чтобы компрометация ключа одного не раскрывала данные другого; ключи должны ротироваться без перешифрования терабайтов документов; при уходе арендатора его данные должны стать невосстановимыми в течение суток; серверы приложения без состояния и автомасштабируются, поэтому ничего нельзя привязывать к конкретному хосту; аудиторам нужна запись о каждом использовании ключа. Опишите иерархию ключей, где живёт каждый ключ, как работают шифрование и ротация и как обеспечивается удаление арендатора.
Применяйте конвертное шифрование: ключ арендатора в KMS или HSM оборачивает ключ данных, свой для каждого документа и хранимый рядом с шифротекстом. Ротация перезаворачивает ключи данных, а не сами данные. Уничтожение ключа арендатора делает его данные невосстановимыми, а KMS логирует обращения.
Типичные ошибки
- ✗Использовать один общий ключ, считая изоляцию арендаторов задачей фильтра в приложении
- ✗Планировать ротацию как массовое перешифрование всех хранимых данных
- ✗Хранить ключевой материал в той же базе, что и защищаемые им данные
Уточняющие вопросы
- →Что защищает данные, если сервер приложения скомпрометирован во время работы?
- →Как вы докажете аудитору, что данные ушедшего арендатора невосстановимы?
MiddleТеорияЧастоПочему подпись не делает данные конфиденциальными и как совместить одно с другим?
Почему подпись не делает данные конфиденциальными и как совместить одно с другим?
Подпись считается по хэшу данных и проверяется открытым ключом, поэтому содержимое читаемо: она даёт целостность, подлинность и неотказуемость, но не секретность. Безопасный симметричный порядок — encrypt-then-MAC, а схемы с подписью связывают обе стороны внутри сообщения.
Типичные ошибки
- ✗Думать, что подпись скрывает содержимое сообщения
- ✗Считать, что порядок подписи и шифрования не важен
- ✗Принимать MAC на общем ключе за источник неотказуемости
Уточняющие вопросы
- →Почему код аутентификации сообщения (
MAC) не даёт неотказуемости? - →Что ломается, если проверка целостности выполняется только после расшифровки?
MiddleТеорияЧастоЧто происходит во время TLS-рукопожатия при установке HTTPS?
Что происходит во время TLS-рукопожатия при установке HTTPS?
Клиент и сервер согласуют набор шифров, затем сервер предъявляет сертификат, а клиент проверяет его по цепочке до доверенного CA. Асимметричная криптография вырабатывает общий симметричный сессионный ключ, дальше трафик шифруется симметрично — это даёт конфиденциальность и аутентификацию сервера.
Типичные ошибки
- ✗Думать, что весь HTTPS-трафик шифруется асимметрично (только обмен ключом)
- ✗Считать, что сервер передаёт клиенту закрытый ключ
- ✗Забывать о проверке сертификата как части рукопожатия
Уточняющие вопросы
- →Зачем после обмена ключами переходить на симметричное шифрование?
- →Что такое forward secrecy и как её обеспечивает обмен ключами?
JuniorТеорияИногдаЧем опасен режим блочного шифра ECB и что меняют CBC и CTR?
Чем опасен режим блочного шифра ECB и что меняют CBC и CTR?
ECB шифрует каждый блок независимо, поэтому одинаковые блоки дают одинаковый шифротекст и структура остаётся видимой. CBC сцепляет блоки и требует случайного непредсказуемого IV на сообщение; CTR строит поток и требует неповторяющегося nonce.
Типичные ошибки
- ✗Считать, что стойкий ключ делает ECB приемлемым
- ✗Переиспользовать фиксированный или предсказуемый IV в CBC
- ✗Думать, что nonce в CTR может повторяться под тем же ключом
Уточняющие вопросы
- →Почему вектор инициализации в CBC должен быть непредсказуемым, а не просто уникальным?
- →Какое свойство защиты эти режимы сами по себе всё ещё не дают?
JuniorТеорияИногдаПочему один общий симметричный ключ перестаёт работать при росте числа участников?
Почему один общий симметричный ключ перестаёт работать при росте числа участников?
Симметричный ключ нужно доставить каждому по уже защищённому каналу, и любой держатель может и читать, и подделывать сообщения. Попарная секретность между n участниками требует n(n-1)/2 ключей, а исключение одного меняет ключи всем. Открытый ключ можно публиковать.
Типичные ошибки
- ✗Упускать, что общий ключ надо доставить по уже защищённому каналу
- ✗Забывать, что любой держатель симметричного ключа может и подделывать сообщения
- ✗Считать, что открытый ключ надо держать в секрете, а не просто подтверждать его подлинность
Уточняющие вопросы
- →Что всё же нужно гарантировать про открытый ключ, прежде чем на него полагаться?
- →Чем отличается исключение участника в схеме с общим ключом и в схеме с открытыми ключами?
JuniorТеорияИногдаЧто такое открытый и закрытый ключ и как они связаны?
Что такое открытый и закрытый ключ и как они связаны?
Пара ключей математически связана: открытый ключ можно свободно раздавать, закрытый держат в секрете. Что зашифровано одним ключом, расшифровывается только другим. Шифруют открытым ключом получателя — для конфиденциальности; подписывают своим закрытым (проверяют открытым) — для подлинности.
Типичные ошибки
- ✗Думать, что закрытый ключ можно восстановить из открытого
- ✗Путать, каким ключом шифруют для конфиденциальности, а каким подписывают
- ✗Считать, что раздача открытого ключа компрометирует систему
Уточняющие вопросы
- →Каким ключом создают цифровую подпись и каким её проверяют?
- →Почему конфиденциальность обеспечивает именно открытый ключ получателя?
JuniorТеорияИногдаПочему 256-битный ключ на эллиптических кривых по стойкости равен 3072-битному RSA?
Почему 256-битный ключ на эллиптических кривых по стойкости равен 3072-битному RSA?
Длину ключа можно сравнивать только внутри одного семейства алгоритмов. Стойкость RSA держится на факторизации, которую атакуют субэкспоненциальные методы, поэтому ключи длинные. Кривые опираются на дискретный логарифм с корневыми атаками, поэтому 256 бит дают около 128 бит стойкости.
Типичные ошибки
- ✗Сравнивать длины ключей разных семейств алгоритмов
- ✗Считать, что более длинный ключ всегда стойче
- ✗Путать размер ключа с итоговым уровнем стойкости в битах
Уточняющие вопросы
- →Что на деле означает уровень стойкости, выраженный в битах?
- →Почему более длинный ключ
RSAдороже за операцию, чем равностойкий ключ на кривой?
SeniorДебаггингИногдаСервис шифрует каждую запись AEAD-шифром AES-GCM с одним фиксированным IV — что ломается?
Сервис шифрует каждую запись AEAD-шифром AES-GCM с одним фиксированным IV — что ломается?
Повтор nonce в GCM под одним ключом катастрофичен, а не просто нежелателен: поток шифрования повторяется, утекают соотношения между текстами, а подключ аутентификации становится восстановимым — целостность теряется для всего ключа. Нужен уникальный nonce и новый ключ.
Открыть задачу →Типичные ошибки
- ✗Считать повтор nonce мелкой потерей энтропии, а не отказом на уровне всего ключа
- ✗Думать, что более длинный ключ компенсирует переиспользованный nonce
- ✗Полагать, что nonce влияет только на тег аутентификации, но не на поток шифрования
Уточняющие вопросы
- →Какие стратегии генерации nonce остаются безопасными при перезапусках и нескольких писателях?
- →Что меняет в этом отказе режим, устойчивый к неправильному использованию nonce?
JuniorТеорияРедкоЧем различаются список отзыва CRL, протокол статуса OCSP и OCSP stapling?
Чем различаются список отзыва CRL, протокол статуса OCSP и OCSP stapling?
CRL — подписанный список, скачиваемый клиентом периодически: он громоздкий и устаревает между публикациями. OCSP запрашивает у CA статус одного сертификата, что стоит обращения и раскрывает CA историю посещений. Stapling заставляет сервер приложить свежий подписанный ответ.
Типичные ошибки
- ✗Считать, что отзыв надёжно блокирует скомпрометированный сертификат
- ✗Путать, кто именно отвечает на OCSP-запрос статуса
- ✗Не учитывать приватностную цену живых OCSP-запросов
Уточняющие вопросы
- →Почему браузеры обычно мягко игнорируют несостоявшуюся проверку отзыва?
- →Чего достигает короткий срок жизни сертификата, чего не даёт отзыв?
JuniorТеорияРедкоПочему ключ шифрования, зашитый в исходный код, равносилен отсутствию шифрования?
Почему ключ шифрования, зашитый в исходный код, равносилен отсутствию шифрования?
Зашитый ключ разделяет границу доверия с кодом: он лежит в репозитории, в каждом артефакте сборки и образе контейнера, а также в истории у всех, кто когда-либо делал clone. Его нельзя ротировать без передеплоя, и одна утечка раскрывает всё, что было им зашифровано.
Типичные ошибки
- ✗Считать, что закрытый репозиторий делает вшитый ключ безопасным
- ✗Забывать, что ключи остаются в истории git, образах и бэкапах
- ✗Принимать вынос в переменную окружения за полноценное управление ключами
Уточняющие вопросы
- →Что нужно сделать, если зашитый ключ обнаружен в истории репозитория?
- →Где вместо этого должны храниться ключи приложения и как они попадают в рантайм?
MiddleТеорияРедкоПочему конфиденциальные данные передают гибридным шифрованием?
Почему конфиденциальные данные передают гибридным шифрованием?
Асимметричная криптография медленна и ограничена малым объёмом (сообщение ≤ длины ключа), а симметричная быстра, но требует безопасной доставки ключа. Гибридное шифрование совмещает их: генерируют случайный симметричный ключ, шифруют им данные, сам ключ шифруют открытым ключом получателя и шлют оба. Так защищают объёмные данные CMS и TLS.
Типичные ошибки
- ✗Считать, что асимметричным шифром можно эффективно шифровать большие объёмы
- ✗Думать, что гибридное шифрование — это двойное симметричное шифрование
- ✗Не понимать, что асимметрией шифруется только сам симметричный ключ
Уточняющие вопросы
- →Что ограничивает максимальный размер сообщения при чистом RSA-шифровании?
- →Как гибридная схема соотносится с тем, что делает TLS-рукопожатие?
SeniorТеорияРедкоЧто ослабляет модель доверия удостоверяющих центров (CA) и что добавляет Certificate Transparency?
Что ослабляет модель доверия удостоверяющих центров (CA) и что добавляет Certificate Transparency?
Любой доверенный корень может поручиться за любой домен, поэтому система прочна настолько, насколько прочен слабейший CA: одна ошибка выпуска даёт валидный сертификат на ваш сайт. Certificate Transparency пишет каждый выпуск в публичные журналы только на дозапись, и владелец замечает чужой.
Типичные ошибки
- ✗Считать, что CA может выпускать сертификаты только для уже обслуживаемых доменов
- ✗Думать, что Certificate Transparency предотвращает ошибочный выпуск, а не выявляет его
- ✗Полагать, что CA держит копию закрытого ключа сервера
Уточняющие вопросы
- →Как оператор по журналам CT замечает несанкционированный сертификат на свой домен?
- →Что ограничивает DNS-запись
CAA(Certification Authority Authorization)?
SeniorТеорияРедкоЧто такое harvest-now-decrypt-later и как поэтапно проводят постквантовую миграцию?
Что такое harvest-now-decrypt-later и как поэтапно проводят постквантовую миграцию?
Противник копит зашифрованный трафик сегодня и расшифрует его, когда падут RSA и ECC, поэтому данные с долгим сроком секретности под угрозой уже сейчас. Миграцию начинают с гибридного обмена ключами из классического и постквантового KEM, затем подписи; симметричным схемам нужны большие параметры.
Типичные ошибки
- ✗Считать, что под угрозой лишь будущий трафик, и миграцию можно отложить
- ✗Думать, что симметричные шифры под такой же угрозой, как RSA и ECC
- ✗Принимать постквантовые алгоритмы за прямую замену с прежними размерами ключей и подписей
Уточняющие вопросы
- →Почему на время миграции предпочитают гибридный обмен ключами, а не чисто постквантовый?
- →У каких ваших систем срок конфиденциальности данных достаточно долгий, чтобы мигрировать первыми?