Прикладная криптография и IAM
Все объяснения, задачи и лабораторная в одном месте.
Можно сохранить страницу в PDF через печать браузера. Для печати разборы ответов раскрываются автоматически.
1. Hash, MAC, symmetric и public-key crypto
Объяснение
Хеш даёт отпечаток, MAC подтверждает целостность при общем секрете, подпись использует пару ключей. Шифрование и аутентификация решают разные задачи; для прикладных данных нужны проверенные схемы authenticated encryption.
Задача для самостоятельного решения
Может ли обычный хеш файла доказать автора?
Показать разбор ответа
Нет: любой может вычислить новый хеш изменённого файла. Нужна подпись или MAC с доверенным ключом в подходящей модели.
2. TLS, certificates и PKI
Объяснение
TLS проверяет сертификат, имя узла и цепочку доверия. Сертификат связывает имя с публичным ключом. Шифрование без проверки имени может защитить канал к неправильному серверу.
Задача для самостоятельного решения
Почему нельзя отключать certificate verification при ошибке домена?
Показать разбор ответа
Клиент теряет проверку личности сервера. Исправьте DNS, SAN сертификата или цепочку; не превращайте ошибку настройки в постоянное отсутствие аутентификации.
3. Passwords, MFA и credential lifecycle
Объяснение
Пароль хранится в виде медленного salted hash. MFA разделяет факторы, а восстановление учётной записи является частью модели безопасности. Самый сильный вход бесполезен при слабом сбросе пароля.
Задача для самостоятельного решения
Зачем уникальная соль при одинаковых паролях?
Показать разбор ответа
Чтобы хеши различались и предварительные таблицы не переиспользовались для всех пользователей. Соль не является секретом и не заменяет стоимость хеширования.
4. OAuth 2.0, OIDC и token threats
Объяснение
OAuth делегирует доступ, OIDC добавляет identity-слой. Access token и ID token имеют разные аудитории и назначение. Redirect URI, state и PKCE помогают связать поток с клиентом.
Задача для самостоятельного решения
Можно ли принимать любой подписанный token как разрешение API?
Показать разбор ответа
Нет: проверяйте issuer, audience, срок и полномочия. Валидная подпись токена для другого сервиса не даёт доступ этому API.
5. Authorization models и policy engines
Объяснение
RBAC связывает права с ролями, ABAC учитывает атрибуты субъекта, ресурса и контекста. Политика по умолчанию должна явно определять отказ. Решения нужны на сервере для каждой защищённой операции.
Задача для самостоятельного решения
Как разрешить редактору только свои черновики?
Показать разбор ответа
Проверить роль, владельца и статус ресурса совместно. Одна роль editor без атрибутов слишком широка.
6. Key management, rotation и zero trust
Объяснение
Жизненный цикл ключа включает создание, выдачу, использование, ротацию, отзыв и уничтожение. Zero trust не означает доверия отсутствует вообще: доверие выдаётся конкретному запросу по проверяемым условиям.
Задача для самостоятельного решения
Что нужно кроме выпуска нового ключа при ротации?
Показать разбор ответа
Переключить потребителей, проверить использование, обеспечить ограниченный переход и отозвать старый ключ. Иначе старые полномочия продолжают действовать.
Лабораторная работа
Подготовка
Python 3, синтетический секрет только для локального опыта.
Учебный пример
import hashlib,hmac
key=b'local-training-key'
message=b'amount=100'
tag=hmac.new(key,message,hashlib.sha256).digest()
other=hmac.new(key,b'amount=101',hashlib.sha256).digest()
print(hmac.compare_digest(tag,other))Как работает пример и что ожидать
Вывод False: изменение сообщения меняет MAC. Ключ в исходнике допустим только для синтетического примера; production требует управления секретом. MAC подтверждает знание общего ключа и не даёт публично проверяемую подпись.
Итоговая работа
Спроектируйте identity, роли, срок токенов, ротацию и отзыв. Проверьте неверную audience и истёкший токен. Опишите, кто хранит ключ, кто может его использовать и как прекращается доступ после компрометации.
Проверка результата
1. Опишите исходные данные и условия запуска, чтобы другой человек мог повторить работу.
2. Приложите результат обычного сценария и сравните его с ожидаемым.
3. Проверьте неверный вход, граничный случай и отказ зависимости, если она есть.
4. Объясните выбранное решение и известное ограничение.
5. Сохраните исправления после самопроверки вместе с примером, который раньше не работал.
Как оценить работу
По каждому пункту поставьте 0 (не выполнено), 1 (выполнено с пробелами) или 2 (результат воспроизводим и объяснён). Если обязательный сценарий не работает, вернитесь к нему независимо от общей суммы. Это рубрика самопроверки: сайт не исполняет присланный код и не выдаёт автоматическую оценку проекта.