Разработка ТСР-сервера в Delphi.

  1. Нанесем на форму Delphi компоненту TidServer с вкладки IndyServer.
  2. В его свойстве Bindings укажем IP-адрес данного компьютера и номер порта, на котором сервер будет ожидать вызова от клиента (номер порта – произвольное число от 1 до 65767, но желательно использовать номера выше 1024, т.к. порты с меньшими номерами зарезервированы для стандартных служб),
  3. В свойстве MaxConnections укажите 5 (максимальное число соединений к серверу), в свойство Default Port запишите значение порта по умолчанию, а в свойство Active запишите true.
  4. Добавьте на форму элемент типа TMemo для вывода в него сообщений, полученных от клиента,
  5. При вызове клиента вырабатывается событие OnExecute элемента IdServer1. Для его обработка откройте вкладку Events Инспектора объектов и щелкните дважды в поле процедуры OnExecute.
  6. В открывшей процедуре введите следующий код:

Procedure TForm1.IdTCTServer1Execute(Athread:TidPeerConnection);

Begin

with Athread.Connection do

begin

Memo1.Lines.Add(CurrentReadBuffer);

Writeln(‘Сообщение получено’);

Disconnect;

end;

End;

Приложение TCT-клиент в Delphi.

  1. Нанесите на форму элемент TidTCPClient с панели IndyClient, два элемента типа Tedit для ввода сообщений серверу и получения ответа, и кнопку TButton.
  2. В свойстве Host элемента TidTCPClient укажите IP-адрес сервера, а в свойстве Port задайте номер порта (тот же, что у сервера).
  3. Щелкните дважды по элементу Button1 и в появившемся окне введите следующий код:

Procedure TForm1.Button1click(Sender: TObject);

Begin

IdTCPClient1.Connect;

IdTCPClient1.Writeln(Edit1.Text);

Edit2.Text:= IdTCPClient1.ReadLn;

IdTCPClient1.Disconnect;

End;

  1. Добавьте код функции MD5, взятый из описания лабораторной работы №3.
  2. Запустите оба приложения и протестируйте полученную программу.

КОНТРОЛЬНЫЕ ВОПРОСЫ

  1. На какой вкладке Delphi находятся компоненты для создания клиент-серверного приложения?
  2. Какие основные свойства надо установить в компоненте Indy Server?
  3. Какие основные свойства надо установить в компоненте Indy Client?
  4. Какой протокол используют компоненты Indy Server и Indy Client для установления связи по локальной сети? Можно ли использовать приложение в сети Интернет?

ЛАБОРАТОРНАЯ РАБОТА № 4

Название работы.Решение в локальной сети задачи аутентификация пользователей.

Цель. Ознакомиться с основными алгоритмами аутентификации пользователей в сети, электронно- цифровой подписи, сертификации. Разработать комплекс программ в Delphi для пересылки и проверки идентификаторов пользователей, решения задачи распределения секретного ключа, идентификации посланий на основе электронно- цифровой подписи и сертификатов.

Программно-аппаратные средства.Компьютерная лаборатория, состоящая из компьютеров, соединенных в локальную сеть, пакет Delphi 7 (Delphi 2005).

Задание на лабораторную работу

  1. Изучить теоретический материал по данной лабораторной работе.
  2. Разработать программный комплекс в среде Delphi генерации параметров метода RSA и пересылки (публикации) открытого ключа в сети.
  3. Реализовать алгоритм генерации электронно- цифровой подписи с использование закрытого ключа метода RSA и функции хеширования MD5.
  4. Реализовать алгоритм проверки электронно- цифровой подписи с использование открытого ключа метода RSA и функции хеширования MD5.
  5. Выполнить пробную пересылку данных в рамках локальной сети компьютерного класса, снабженных ЭЦП. Вставить в отчет полученные данные, описать методику выполнения задания.
  6. Ответить на контрольные вопросы в конце задания.

Теоретический материал.

Одной из наиболее важных служб безопасности является аутентификация. Аутентификация – это подтверждение пользователем информационных услуг своего идентификатора. Аутентификация выполняется с помощью разных методов, из которых простейшим является предъявления пользователем серверу секретного слова – пароля, известного только пользователю и серверу.

Хеш-функции

Хеш-функции играют в информационной защите важную роль, создавая для электронного документа его «моментальный снимок» и тем самым защищая документ от дальнейшей модификации или подмены.

В широком смысле функцией хеширования называется функция H, удовлетворяющая следующим основным свойствам:

  1. Хеш-функция Н может применяться к блоку данных любой длины.
  2. Хеш-функция Н создает выход фиксированной длины (равно, например, 128 бит для классической функции хеширования MD5, и 160 бит для функции SHA1).
  3. Н (М) вычисляется относительно быстро (за полиномиальное время от длины сообщения М).
  4. Для любого данного значения хеш-кода h вычислительно невозможно найти M такое, что Н (M) = h.
  5. Для любого данного х вычислительно невозможно найти y Разработка ТСР-сервера в Delphi. - student2.ru x, что H(y) = H(x).
  6. Вычислительно невозможно найти произвольную пару (х, y) такую, что H(y) = H (x).

Термин вычислительно невозможно означает здесь, что в настоящее время решение этой задачи либо требует слишком большого интервала времени (например, более сотни лет), либо использования слишком больших вычислительных ресурсов, чтобы решение задачи имело смысл.

Первые три свойства требуют, чтобы хеш-функция создавала хеш-код для любого сообщения. Четвертое свойство определяет требование односторонности хеш-функции: легко создать хеш-код по данному сообщению, но невозможно восстановить сообщение по данному хеш-коду.

Схемы аутентификации.

Поскольку при передаче данных по сети никто не застрахован от возможности чтения данных на промежуточных узлах, то передача пароля по сети в открытом виде является опасным. Поэтому для надежной аутентификации и сохранения пароля от взлома используются разные схемы сетевой аутентификации. Здесь мы рассмотрим следующие три схемы:

Наши рекомендации