Пример защищенного обмена данными с шифрованием CNG
Пример безопасного обмена данными с шифрованием CNG моделирует решение шифрования, позволяющее защититься от атаки "злоумышленник в середине".В нем имитируется обмен информацией между тремя сотрудниками вымышленного рекламного агентства Алисой, Бобом и Мэллори.В примере для демонстрации защиты от атаки "злоумышленник в середине" используются классы CNG, именованные каналы и интерактивные окна консоли.
Пример ориентирован на опытного читателя, знакомого с шифрованием, межпроцессным взаимодействием и сетевой безопасностью.
Примечание
Классы CNG доступны только в Windows Vista и операционных системах Windows более поздних версий.
В этом разделе приведены общие сведения о данном примере CNG.В нем описаны следующие вопросы.
Сценарий примера
Уязвимости средства обмена мгновенными сообщениями
Версия 1. Именованные каналы
Версии 2–5. Последовательное совершенствование защиты
Результаты испытаний
Код примера
Соглашения об именах
Подробные сведения
Сценарий примера
Рекламное агентство разрабатывает средство обмена мгновенными сообщениями, которое работает на настольных компьютерах.Все сотрудники могут видеть сообщения, введенные в это средство.
Алиса и Боб работают в отделе продаж.Они используют средство обмена мгновенными сообщениями для передачи друг другу контактных данных клиентов.Мэллори работает инженером по сетям в отделе обслуживания систем.Он тайно отслеживает сообщения Алисы и Боба.Раз в месяц он копирует контактные данные ценных клиентов и продает их конкурентам для получения личной выгоды.
Через несколько месяцев в компании поняли, что кто-то крадет контактные данные клиентов и что это происходит при обмене данными внутри отдела.Принимается решение создать новое средство обмена мгновенными сообщениями, и начинается анализ системы безопасности действующего средства.
Уязвимости средства обмена мгновенными сообщениями
Компания выявила следующие уязвимости используемого средства обмена мгновенными сообщениями:
сообщения передаются в виде открытого текста (без шифрования);
сообщения распространяются по сети компании;
сообщения могут просматриваться и даже сохраняться любым сотрудником компании.
Компания решила, что для устранения этих проблем в новом средстве обмена мгновенными сообщениями будет использоваться взаимодействие "точка-точка" по сети компании.
Версия 1. Именованные каналы
Компания создает новое средство обмена мгновенными сообщениями, в котором для межпроцессного взаимодействия используются именованные каналы.В этой версии не используется шифрование или цифровые подписи.
Алиса и Боб получают следующие инструкции.
Создать первоначальное подключение по каналу с именем PublicChannel.
Отправить имя закрытого канала друг другу, а затем сразу отключиться от канала PublicChannel.
Установить подключение по закрытому каналу и обмениваться контактными данными клиентов по нему.
В компании надеются, что применение каналов "точка-точка" обеспечит участникам разговора достаточный уровень изоляции от остальной части сети компании.Вскоре они узнают, что это решение неэффективно.Мэллори находит способ обойти новую систему.Он продолжает красть данные и начинает скрывать свою деятельность, осторожно изменяя контактные данные и адреса клиентов.
Компания принимает решение добавить в средство для обмена сообщениями дополнительные механизмы защиты, чтобы остановить утечку информации.
Версии 2–5. Последовательное совершенствование защиты
Новое программное обеспечение тестируется и совершенствуется в течение нескольких месяцев.К моменту завершения испытаний созданы четыре дополнительных версии средства обмена мгновенными сообщениями.Каждая последующая версия основана на предыдущей.
В версии 2 добавлено шифрование на основе CNG с использованием пар открытых и закрытых ключей.
В версии 3 для подписывания ключей шифрования и сообщений используются цифровые подписи.
В версии 4 добавляется закрытый канал для передачи цифровых подписей, с помощью которых подписываются ключи шифрования и сообщения.
В версии 5 атака прерывается путем завершения всех сеансов обмена мгновенными сообщениями, которые получают подписанные ключи с недействительными подписями.
Результаты испытаний
В версии 2 используется очень надежный алгоритм шифрования.Взлом шифра требует большого количества времени и ресурсов.Поэтому в компании были очень удивлены, когда узнали, что решение удалось обойти.
Версия 3 с использованием цифровых подписей также не смогла предотвратить утечку информации.Однако эта версия помогла компании выявить очень важный факт. Поскольку ключи шифрования и цифровые подписи перехватываются и подменяются, источником проблемы должен быть канал, по которому передаются ключи и подписи.
Чтобы проверить эту теорию, в версии 4 был добавлен закрытый канал для передачи цифровых подписей.Кроме того, в версии 4 отображается предупреждение, если подпись ключа или сообщения недействительна.Версию 4 получили только два человека в компании — Алиса и Боб.Как только Алиса и Боб обменялись первыми сообщениями, начали появляться предупреждения системы безопасности.Компания наконец поняла, что ее сеть подвержена воздействию атаки "злоумышленник в середине".
Версия 5 идентична версии 4, но в ней сеанс завершается при первом нарушении системы безопасности.Сразу после установки этой версии кража контактных данных клиентов прекратилась.
Код примера
Входящий в состав примера код моделирует эти пять версий системы безопасности.Общие сведения о коде представлены в разделе Общие сведения об исходном коде (пример CNG).
Примечание
Этот пример не является полноценным решением для обеспечения безопасности.Он предназначен лишь для демонстрации возможностей интерфейса API CNG в реальной ситуации.Создание полноценного приложения для обеспечения безопасности выходит за рамки этого примера.
Соглашения об именах
В документации к этому примеру пять версий ПО и соответствующие уровни безопасности обозначаются номерами (например, "версия 1", "версия 2" и т. д.).
В зависимости от контекста имена Alice, Bob и Mallory могут относиться к трем действующим лицам описываемого сценария или к трем приложениям Visual Studio.Для простоты в документе используются одни и те же имена при упоминании элементов обоих типов.Например, фраза "Алиса автоматически загружает Боба и Мэллори" означает, что приложение Алисы автоматически загружает приложения Боба и Мэллори.
Подробные сведения
В следующих разделах приводятся более подробные сведения об этом примере и его коде.
Реализация атаки "злоумышленник в середине". Описание того, как в примере реализована подмена законного пользователя, которая обычно сопровождает атаку "злоумышленник в середине".
Общие сведения об алгоритме ECDH. Краткое описание математической основы алгоритма ECDH.
Пошаговое описание процесса обмена ключами и сообщениями. Пошаговое руководство по процедурам обмена ключами и сообщениями, которые используются в пяти версиях примера.
Инструкции. Построение и запуск примера CNG. Описание архитектуры примера и инструкции по его построению, запуску и использованию.В этом разделе приведен текст исходного кода.
Общие сведения об исходном коде. Описание взаимодействия компонентов кода и порядка их выполнения.
Анализ кода классов Utility. Описание содержимого и назначения файла Utilities.cs.
Анализ кода класса ChannelManager. Описание содержимого и назначения файла ChannelManager.cs.
Анализ кода класса Communicator. Описание содержимого и назначения файла Communicator.cs.
Ожидаемый результат. Результат выполнения кода примера.
См. также
Основные понятия
Модель криптографии .NET Framework