Организацию защищенного информационного обмена с использованием криптосредств между сервером и клиентами рассмотрим на примере платежной системы.
В данной схеме принимают участие три стороны: Банк, Платежная Система, Удостоверяющий Центр. Рассмотрим более подробно каждого из участников.
Банк - Клиент платежной системы, осуществляющий сбор и передачу платежей в Платежную Систему.
Платежная Система - система, посредством которой происходит сбор и обработка виртуальных денежных потоков.
Удостоверяющий Центр - это организация или подразделение организации, которая выпускает сертификаты ключей электронной цифровой подписи.
Этапы процесса на стороне Банка:
- Подпись исходного сообщения своим закрытым ключом. На данном этапе в одной из информационных систем Банка формируется сообщение о транзакции в формате, предоставленным Платежной Системой(К примеру XML, SOAP и т.д.). На исходную транзакцию своим закрытым ключом ставится Электронная Цифровая Подпись(ЭЦП). Наложение ЭЦП позволяет убедиться, что отправитель сообщения не выдает себя за другого. Так же ЭЦП позволяет избежать модификации сообщения в ходе передачи.
- Внедрение в подписанное сообщение своего открытого ключа. На данном этапе в подписанное ранее сообщение внедряется свой открытый ключ. Результат формируется в формате PKCS#7 (Cryptographic Message Syntax Standard).
- Шифрование полученного пакета открытым ключом Платежной Системы. На данном этапе полученный пакет(PKCS#7) шифруется открытым ключом платежной системы. Шифруем пакет, для сокрытия данных от глаз злоумышленников, так как если злоумышленник получит просто подписанный пакет(PKCS#7), то он без труда сможет разглядеть конфидециальные данные, такие как сумма платежа, номер счет, а это, как известно, является банковской тайной.
- Передача полученного пакета в Платежную Систему. Тут все просто. Обычно передачи идет через веб-сервис Платежной Системы.
- Получение подписанного ответа от Платежной Системы. После отправки сообщения в Платежную Систему от обычно возвращается какой-либо ответ. В нашем случае ответ возвращается подписанный со стороны Платежной системы, это позволяет удостовериться, что ответ действительно пришел от Платежной Системы, а не от злоумышленника.
- Извлечение из подписанного ответа открытого ключа Платежной Системы. На данном этапе происходит извлечения открытого ключа Платежной Системы, для последующего снятия подписи.
- Проверка подлинности извлеченного ключа в Удостоверяющем Центре. Данное действие необязательное. Я бы не рекомендовал его использовать в высоконагруженных системах, так как любое обращение к третьей стороне отнимает драгоценное время.
- Снятие подписи. Тут все еще проще, происходит снятие подписи и получение исходного сообщения, после чего происходить его дальнейшая обработка.
Этапы процесса на стороне Платежной Системы:
- Получение сообщения от Банка. Тут все ясно. К Платежную Систему пришло подписанное зашифрованное сообщение.
- Дешифрование сообщения закрытым ключом Платежной Системы. На данном этапе происходит дешифрование сообщения закрытым ключом Платежной Системы для дальнейшей обработки.
- Извлечение из дешифрованного пакета открытого ключа Банка. На данном этапе идет извлечение открытого ключа Банка, для его проверки и снятия подписи.
- Проверка подлинности извлеченного ключа в Удостоверяющем Центре. Для надежности нужно проверить ключ в Удостоверяющем Центре, ведь ключ мог быть утерян или украден и уже недействителен, об этих случаях непременно будет известно в случае проверки.
- Снятие подписи извлеченным ключом. На данном этапе происходит снятие подписи и получение исходного сообщения.
- Обработка сообщения. Обработка сообщения Платежной Системой.
- Подготовка и подпись ответа закрытым ключом Платежной Системы с вложением открытого ключа Платежной Системы. На данном этапе Платежная Система создает ответ на сообщение Банка, подписывает его своим закрытым ключом с вложением своего открытого ключа(PKCS#7 (Cryptographic Message Syntax Standard)) и передает его Банку.
Этапы процесса на стороне Удостоверяющего Центра:
- Получение запросов от Платежной Системы и ее клиентов. Обработка всех входящих запросов.
- Удостоверение соответствия открытого ключа подписи/шифрования закрытому ключу, а также подтверждение достоверности ключа. Без комментариев, у каждого Удостоверяющего Центра специфика работы своя.