Если бы вам пришлось и шифровать, и сжимать данные при передаче, что бы вы сделали сначала и почему?
Сжатие использует закономерности в данных для уменьшения их размера.
Шифрование предназначено для рандомизации данных, чтобы их нельзя было интерпретировать без секретного ключа.
Если сначала зашифровать, а потом сжимать, то сжатие будет бесполезным. Сжатие не работает со случайными данными.
Если сначала сжать, а потом зашифровать, то злоумышленник может найти закономерности в длине сообщения (степень сжатия), чтобы узнать что-то о данных и потенциально свести на нет шифрование (как в атаке CRIME)
Что такое межсайтовая подделка запроса (CSRF)? И как от неё защищаться?
Это когда злоумышленник заставляет браузер жертвы отправлять запросы с учётными данными жертвы
Пример: если тег изображения (``) указывает на URL с соответствующим действием, например https://foo.com/logout
Защита включает, но не ограничивается:
проверка заголовка origin и заголовка referer
проверка CSRF-токенов или nonce
Что такое межсайтовый скриптинг (XSS)? Какие существуют типы XSS? Как защищаться от XSS?
XSS — это когда злоумышленники заставляют браузер жертвы выполнять некоторый код (обычно JavaScript) в её браузере
Традиционно типы подразделялись на хранимые (Stored) и отражённые (Reflected) XSS-атаки.
Хранимый XSS — это код, который злоумышленник смог сохранить в базе данных, и который извлекается и показывается жертвам (например, на форуме)
Отражённый XSS обычно представлен в виде вредоносного URL, содержащего вредоносный код. Когда пользователь переходит по ссылке, код выполняется в его браузере
В последнее время ведутся дискуссии о DOM-based XSS, который возникает, когда злоумышленники могут управлять DOM-элементами, добиваясь XSS без отправки каких-либо запросов на сервер
Категории XSS имеют тенденцию пересекаться, поэтому гораздо лучше описывать XSS в таких терминах, как хранимый на сервере XSS (Server Stored XSS), отражённый на сервере XSS (Server Reflected XSS), хранимый на клиенте XSS (Client Stored XSS) (например, хранимый DOM-based XSS) или отражённый на клиенте XSS (Client Reflected XSS) (например, отражённый DOM-based XSS)
Защита включает:
кодирование вывода (более важно)
проверку ввода (менее важно)
Как HTTP обрабатывает состояние?
HTTP не сохраняет состояние
Состояние хранится в cookie
Архитектор
Разрабатывали ли вы меры безопасности, охватывающие пересекающиеся информационные домены?
Можете ли вы привести несколько примеров требований к архитектуре безопасности?
Какие особые проблемы безопасности создаёт сервис-ориентированная архитектура (SOA)?
Проектировали ли вы решение безопасности, включающее SaaS-компоненты? С какими трудностями вы столкнулись?
Участвовали ли вы в проекте, где заинтересованные стороны решили принять выявленные риски безопасности, которые вас беспокоили? Как вы справились с ситуацией?
Как вы справляетесь с требованиями разных заинтересованных сторон, которые конфликтуют друг с другом?
Как вы обеспечиваете, чтобы архитекторы решений разрабатывали безопасные решения?
Как вы обеспечиваете устойчивость решения перед лицом evolving угроз?
Как вы думаете, какая технология сейчас самая важная? Как мы будем её защищать?
Синяя команда
Имея журнал HTTP-трафика между машиной в вашей сети и сторонним сайтом (например, Google), как бы выглядели порты источника и назначения?
Порт источника может быть числом выше порта 1024 (так называемый эфемерный порт)
Порт назначения может быть 80 (HTTP) или 443 (HTTPS)
Шифрование
В чём разница между кодированием, шифрованием и хешированием?
Кодирование обеспечивает целостность сообщения. Легко обратимо. Пример: base64
Шифрование гарантирует конфиденциальность сообщения. Обратимо только с использованием соответствующих ключей дешифрования. Пример: AES256
Хеширование — это односторонняя функция. Его нельзя обратить. Результат имеет фиксированную длину и обычно меньше входа.
Использует ли TLS симметричное или асимметричное шифрование?
Оба.
Первоначальный обмен выполняется с помощью асимметричного шифрования, но основное шифрование данных выполняется с помощью симметричного. См. следующий вопрос для дополнительной информации.
Опишите процесс установки TLS-сессии, когда кто-то посещает защищённый веб-сайт.
Клиент отправляет сообщение hello, в котором перечисляется криптографическая информация, такая как версия SSL/TLS и порядок предпочтений клиента в отношении наборов шифров. Сообщение также содержит случайную байтовую строку, которая используется в последующих вычислениях. Клиент может также включить методы сжатия данных в сообщение hello.
Сервер отвечает сообщением hello, которое содержит выбранный сервером набор шифров, цифровой сертификат сервера и ещё одну случайную байтовую строку. Если сервер требует аутентификацию клиентского сертификата, сервер также отправит клиенту запрос клиентского сертификата.
Клиент проверяет цифровой сертификат сервера.
Клиент отправляет случайную байтовую строку, зашифрованную открытым ключом сервера, чтобы и клиент, и сервер могли вычислить секретный ключ, используемый для последующего шифрования между клиентом и сервером.
Криминалистика
Общие вопросы
Безопаснее ли проекты с открытым исходным кодом, чем проприетарные?
У обеих моделей есть плюсы и минусы.
Есть примеры небезопасных проектов, вышедших из обоих лагерей.
Модель открытого исходного кода поощряет «множество глаз» в проекте, но это не обязательно означает более безопасные продукты.
Важно не открытый исходный код против проприетарного, а контроль качества проекта.
Кем вы восхищаетесь в сфере информационной безопасности? Почему?
Откуда вы получаете новости о безопасности?
Реагирование на инциденты
Сети
Красная команда
Управление уязвимостями
Какие классы уязвимостей эксплуатируются чаще всего?
Как часто нужно проводить сканирование?
В чём разница между внешним и внутренним сканированием?
В чём разница между аутентифицированным и неаутентифицированным сканированием?
Как сканирование может определить ОС по отпечаткам?
Что такое оценка CVSS?
Как следует разбивать сканирования?
Как бы вы посоветовали разным организациям, что патчить в первую очередь?
Что такое уязвимость?
Знакомы ли вы с какими-либо отраслевыми стандартными способами отслеживания уязвимостей?
Что такое CVE и почему важна стандартизация, которую он обеспечивает?
Куда бы вы обратились за дополнительной информацией об уязвимости?
В чём разница между эксплойтом и уязвимостью?
Если есть угроза, но нет уязвимости, можно ли сказать, что риск всё равно существует? А если есть уязвимость, но нет угрозы?
Можете ли вы перечислить какие-либо уязвимости, о которых вы недавно слышали?
Знакомы ли вы с какими-либо инструментами, используемыми для сканирования уязвимостей? Если нет, можете ли вы назвать какие-нибудь?
Можете ли вы перечислить какие-либо инструменты, используемые для устранения уязвимостей в масштабах предприятия?
Что такое SCCM?
Знакомы ли вы с какими-либо инструментами с открытым исходным кодом, обычно используемыми для эксплуатации уязвимостей?
Можете ли вы перечислить какое-либо программное обеспечение, которое известно тем, что в нём постоянно обнаруживаются уязвимости?
Как часто выпускаются исправления Microsoft (не экстренные)?
Если сервер запросил клиентский сертификат, клиент отправляет случайную байтовую строку, зашифрованную закрытым ключом клиента, вместе с цифровым сертификатом клиента или предупреждением об отсутствии цифрового сертификата. Это предупреждение является лишь предупреждением, но некоторые реализации приведут к сбою рукопожатия, если аутентификация клиента обязательна.
Сервер проверил цифровой сертификат клиента.
Клиент отправляет сообщение finished, зашифрованное вычисленным секретным ключом.
Сервер отправляет сообщение finished, зашифрованное вычисленным секретным ключом.
На протяжении всей TLS-сессии сервер и клиент могут обмениваться сообщениями, симметрично зашифрованными общим секретным ключом.
Прямая секретность — это система, которая использует эфемерные сеансовые ключи для фактического шифрования данных TLS, так что даже если закрытый ключ сервера будет скомпрометирован, злоумышленник не сможет использовать его для расшифровки перехваченных данных, которые ранее отправлялись на этот сервер.