Практическое руководство. Построение и запуск примера CNG
В этом разделе описана архитектура файлов примера защищенного обмена данными с шифрованием CNG и даны инструкции по построению и запуску этого примера.
Для построения примера CNG необходимо создать три консольных исполняемых файла.При одновременном запуске этих файлов происходит демонстрация единого интерактивного примера.
Пример CNG написан на языке C#.Для его работы требуется Visual Studio 2008 или более поздней версии.
Построение примера
Пример CNG состоит из трех проектов Visual Studio.
Alice
Bob
Mallory
Пример содержит шесть файлов, которые можно открыть и скопировать в следующих разделах.
В каждом проекте имеется файл CS с кодом, относящимся только к конкретному проекту (Alice.cs, Bob.cs и Mallory.cs).А файлы Utilities.cs, ChannelManager.cs и Communicator.cs являются общими для всех трех проектов.Они явным образом включены в проект Alice и неявным (через связи файлов) — в проекты Bob и Mallory.
Построение проектов Alice, Bob и Mallory
Запустите Visual Studio.
В меню Файл последовательно выберите пункты Создать и Проект.
Откроется диалоговое окно Новый проект.
В списке Типы проектов выберите Visual C#.
В области Шаблоны щелкните Консольное приложение.
В поле Имя введите Alice.
В поле Расположение введите расположение для сохранения проекта Alice.
Нажмите кнопку ОК.
Скопируйте исходный код Alice в файл с именем Alice.cs и сохраните файл в папке проекта Alice.При появлении соответствующего сообщения подтвердите, что необходимо заменить файл Alice.cs по умолчанию.
Скопируйте исходный код ChannelManager, Communicator и Utilities в отдельные файлы с именами ChannelManager.cs, Communicator.cs и Utilities.cs и сохраните их в папке проекта Alice.Добавьте эти три файла в проект Alice, выполнив следующие действия.
В меню Вид выберите пункт Обозреватель решений.
В обозревателе решений щелкните правой кнопкой мыши папку Alice, выберите команду Добавить и пункт Существующий элемент.
Откроется диалоговое окно Добавление существующего элемента с папкой проекта Alice.
Выберите файлы ChannelManager.cs, Communicator.cs и Utilities.cs и нажмите кнопку Добавить.
Повторите шаги 2–8 для проектов Bob и Mallory.Удостоверьтесь, что исходный код файла Bob.cs сохранен в папке проекта Bob, а исходный код файла Mallory.cs — в папке проекта Mallory.
Повторите шаг 9 для проектов Bob и Mallory.Но в шаге 9.c вместо выбора команды Добавить нажмите стрелку рядом с кнопкой Добавить и выберите вариант Добавить как связь.
Настройте выходные каталоги проектов Bob и Mallory следующим образом.
В меню "Проект" выберите Свойства, а затем перейдите на вкладку Построение.
В поле "Путь выходного файла" укажите расположение построения, которое используется в проекте Alice.Скорее всего, оно имеет вид \bin\Debug\ в каталоге проекта Alice, выбранном в шаге 6.
Для построения каждого из решений в меню Построение выберите команду Построить решение.
Убедитесь, что построение всех проектов выполняется без ошибок, и что в каталоге проекта Alice появились исполняемые файлы Alice.exe, Bob.exe и Mallory.exe.
Запуск примера
Пример можно запускать из Visual Studio или как автономное приложение.Результат в обоих случаях будет одинаковым.
Запуск примера CNG
Чтобы запустить пример из Visual Studio, дважды щелкните файлы SLN для всех трех проектов (Alice.sln, Bob.sln и Mallory.sln), чтобы открыть три экземпляра Visual Studio.В проекте Alice в меню Отладка выберите пункт Начать отладку.Повторите эту операцию для проектов Bob и Mallory.
- или -
Чтобы запустить пример как автономное приложение, скопируйте исполняемые файлы (EXE) всех трех проектов в один каталог.В проводнике Windows дважды щелкните файл Alice.exe.Программа Alice вызовет исполняемые файлы Bob.exe и Mallory.exe через встроенный автоматический загрузчик.
Примечание
Кроме того, исполняемый файл Alice можно запустить из окна консоли. Для этого необходимо перейти в каталог, в котором хранятся все три исполняемых файла, ввести в командной строке имя файла alice.exe.
После запуска всех трех исполняемых файлов появляется три окна консоли.Заголовки окон содержат имена проектов, а размер и положение окон подбираются таким образом, чтобы пользователь мог видеть обмен сообщениями на экране разрешением 1280 x 1024 точек.Пользователь может перемещать окна и изменять их размер для наиболее удобного отображения их содержимого.
При появлении запроса версии системы безопасности введите в окне Alice номер от 1 до 5.Для первого испытания введите 1.
Эти номера соответствуют пяти версиям программы, описанным в разделе Общие сведения о примере CNG.
При выборе версий с номерами от 2 до 5 пользователь получит приглашение получать подробные выходные данные.Введите n для работы в обычном режиме и y для получения подробных результатов.
В обычном режиме отображаются только сообщения с открытым текстом
В режиме подробного вывода отображаются сообщения с открытым текстом, ключи цифровых подписей, ключи шифрования, векторы инициализации, зашифрованный текст и цифровые подписи.
При появлении приглашения отключить Мэллори, введите n, чтобы не делать этого, и y, чтобы отключить Мэллори.
Если Мэллори отключен, он не будет получать сообщений и будет оставаться бездейственным.Алиса и Боб будут взаимодействовать без вмешательства Мэллори.
Следите за сценарием общения между Алисой и Бобом.
Содержание беседы зависит от номера версии, выбранного на шаге 2.Каждое окно создает цикл сообщений, который переключается между режимами приема и отправки.Режим отправки обозначается символами :>.На режим получения указывает пустая строка.Если Алиса находится в режиме отправки, Боб находится в режиме получения.Когда Боб получает сообщение, он переключается в режим отправки, а Алиса — в режим получения.
Внимательно читайте сообщения Алисы и Боба.Мэллори изменяет второе сообщение Алисы Бобу и ответ Боба Алисе.
После завершения заранее написанного сценария общения, Алиса предложит пользователю пообщаться с Бобом.
Чтобы отправить собственное сообщение, в командной строке выполните следующие действия.
Введите сообщение и нажмите клавишу ВВОД.Алиса отправит сообщение Бобу.
Перейдите в окно Bob, введите сообщение и нажмите клавишу ВВОД.Боб отправит сообщение Алисе.
Чтобы обменяться дополнительными сообщениями, повторите два предыдущих шага.
Чтобы завершить работу, нажмите клавишу ВВОД в окнах Алисы и Боба, когда они находятся в режиме отправки (в них отображаются символы :>).
Три окна будут возвращены к исходному состоянию, соответствующему шагу 2.
Примечание
Если попытаться закрыть окно с помощью кнопки Закрыть, окно может перестать отвечать.В этом случае необходимо будет закрыть все открытые окна и перезапустить пример.
Запустите пример с различными параметрами.При выборе режима подробного вывода и версий 2, 3, 4 или 5 можно сравнить зашифрованные строки, которые отправляет Алиса, с зашифрованными строками, которые получает Боб.Если Мэллори отключен, они должны в точности совпадать.Обратите также внимание на то, что знаки, код ASCII которых превышает 128, отображаются как знаки вопроса (?), поскольку их вывод невозможен.