BC/NW 2014 №2 (25):3.2

 

ОТКРЫТЫЙ ПРОТОКОЛ ЭЛЕКТРОННОЙ КОММЕРЦИИ

Борхаленко В.А.

(ФГБОУ ВПО “Национальный исследовательский университет “МЭИ”, Москва, Россия)

Широкое развитие технологий сетевого обмена информации в сети Интернет, особенно при совершении финансовых транзакций с помощью разнообразных платежных систем, поставило перед многими участниками электронных транзакций ряд вопросов [4]:

·        Является ли отправитель полученного письма заявленным участником протокола;

·        Не было ли письмо перехвачено и подменено кем-то другим;

·        Не является ли пришедшее письмо повторно отправленным;

·        Гарантируется ли конфиденциальность данных заказа и платежа;

·        Существует ли неопровержимое доказательство факта проведения электронного платежа.

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

Рассмотрим протокол, предлагаемый автором. В транзакции принимают участие три стороны: покупатель (С), продавец (S) и сервер платежной системы (T).

Предполагается, что держатель электронных кошельков выполняет роль центра сертификации, нотариальные функции и является доверенной стороной при проведении платежей [1].

Продавец и покупатель устанавливают программное обеспечение (ПО) с сервера посредника. Предполагается, что ПО и открытый ключ кошелька PKt передаются по аутентичному каналу связи. Закрытый ключ кошелька SKt известен только ему самому [1]. Процесс совершения электронной транзакции, основанной на приведенном протоколе проходит в три этапа.

Первым этапом является этап пополнения электронного кошелька. Рассмотрим подробнее действия, выполняемые участниками протокола и содержание сообщений протокола на этапе 1:

1.1.            C->T: Сообщение, содержащее запрос о начале регистрации, метку времени Tc и сеансовый ключ симметричного шифрования Nc (являющийся одновременно и случайным числом C), сгенерированный покупателем, зашифрованное на открытом ключе кошелька [2]: PKt{Запрос о начале регистрации ||Tc||Nc}.

1.2.            T->C: Ответ на запрос, содержащий зашифрованный на закрытом ключе кошелька хэш-образ двух случайных чисел и число (нонс) Nt, зашифрованные на ключе Nc: Nc{SKt{H[Nc||Nt]}||Nt}.

1.3.            Покупатель расшифровывает сообщение с помощью Nc, тем самым убеждаясь в актуальности сообщения, далее расшифровывает хэш с помощью открытого ключа кошелька, поставляемого вместе с ПО : PKt{SKt{H[Nt||Nc]}}  и вычисляет самостоятельно хэш, сравнивая его с расшифрованным. Если дайджесты совпадают, покупатель генерирует пару ключей ассиметричного шифрования (PKc и SKc) [3] и отправляет сообщение, содержащее персональные данные (реквизиты банковской карты, электронный адрес), сгенерированный открытый ключ, Nt, хэш сообщения, зашифрованное на открытом ключе  кошелька: C->T: PKt{Адрес покупателя||Реквизиты карты||PKc||Nt||SKc{H}}.

1.4.            ПО кошелька расшифровывает сообщение, вычисляет хэш с помощью полученного открытого ключа покупателя, проверяет случайное число Nt, чем убеждается в актуальности данного сообщения и в том, что покупатель аутентифицировал сервер кошелька, проверяет реквизиты покупателя и генерирует уникальный идентификатор клиента (CID), подписывает открытый ключ, присланный покупателем. Кошелек отправляет письмо покупателю, зашифрованное на открытом ключе покупателя, содержащее сертификат открытого ключа покупателя [3]: PKc{Namec||Namet||CID||PKc||SKt{H}}, где

·        Namec - имя покупателя;

·        CID - персональный идентификатор покупателя в сети посредника;

·        Namet - имя центра сертификации (ЦС) (держателя электронных кошельков, выдавшего сертификат);

·        PKcоткрытый ключ покупателя;

·        SKt{H} – Электронная цифровая подпись (ЭЦП) [3] ЦС.

1.5.            Покупатель расшифровывает сообщение, проверяет ЭЦП и убеждается в том, что кошелек аутентифицировал его. Пополнение кошелька завершено. Аналогично данный этап выполняется и для продавца.

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

2.1.            Покупатель отправляет продавцу открытое сообщение, содержащее запрос о начале регистрации.

2.2.            В ответ продавец отправляет свой полученный от кошелька идентификатор (SID), отметку времени (Tst), случайное число (Nst) и ЭЦП, зашифрованные на открытом ключе кошелька: S->C: PKt{SID||Tst||Nst||SKs{H}}.

2.3.            Покупатель отправляет серверу кошельку случайное число Nct, CID, полученное зашифрованное сообщение продавца, отметку времени Tct и ЭЦП, зашифрованные на открытом ключе кошелька: C->T: PKt{Nct||Tct||CID||PKt{SID||Tst||Nst||SKs{H}}||SKc{H}}.

2.4.            Так как сервер кошелька является центром сертификации, у него уже имеются открытые ключи покупателя и продавца. Сервер кошелька расшифровывает сообщение, проверяет его актуальность и целостность. Сервер кошелька отправляет покупателю сгенерированный ключ симметричного шифрования (Kcs), Nct, Nst и ЭЦП всего сообщения, а также, ключ симметричного шифрования Kcs, сертификат открытого ключа покупателя, ЭЦП сообщения, зашифрованные на открытом ключе продавца. Все сообщение шифруется  на открытом ключе покупателя : T->C: PKc{PKs{Nst||Nct||Kcs||Сертификат открытого ключа покупателя||SKc{H}}||Kcs||Nct||SKc{H}}.

2.5.            Покупатель расшифровывает сообщение, проверяет ЭЦП, проверяет Nct, чем и удостоверяется в свежести симметричного ключа и свежести сообщения. Покупатель передает часть сообщения, зашифрованную на ключе продавца: С->S: PKs{Nst||Kcs||Nct||Сертификат открытого ключа покупателя||SKc{H}}.

2.6.            Продавец расшифровывает сообщение, проверяет подпись сообщения, проверяет случайное число Nst, убедившись в свежести сообщения, тем самым удостоверившись в свежести ключа Kcs  и аутентифицировав покупателя. В ответ продавец отправляет подписанное сообщение, содержащее сертификат открытого ключа продавца и случайное число Nsc. S->C: Kcs{Nsc||Сертификат открытого ключа продавца||SKs{H}}.

2.7.            Покупатель расшифровывает полученное сообщение,  убеждается в свежести Nsc, так как уверен в свежести Kcs, проверяет ЭЦП полученным ключом и тем самым аутентифицирует продавца. Покупатель отправляет подписанное сообщение, содержащее Nsc-1, зашифрованное на ключе симметричного шифрования: C->S: Kcs{Nsc-1||SKc{H}}.

2.8.            Продавец расшифровывает сообщение, проверяет ЭЦП и Nsc-1, тем самым убедившись, что покупатель его аутентифицировал.

После того, как две стороны убедились во взаимной аутентификации, оба участника вычисляют сеансовый ключ для шифрования сообщений K, применением хэш-функции к ключу Kcs и случайным числам Nct и Nsc. K=H[Kcs||Nct||Nsc]. Данное действие и является финальным на втором этапе. Далее следует завершающий этап процесса проведения платежа, содержащий в себе фазы согласования цены и оплаты заказа. Рассмотрим более детально действия, выполняемые участниками на финальном третьем этапе протокола, а также содержание передаваемых сообщений на этапе 3:

3.1.            Покупатель отправляет запрос, зашифрованный на сеансовом ключе K, содержащий данные о покупателе, информацию о запрашиваемом продукте, цену товара, случайный ключ симметричного шифрования K1, подпись сообщения: C->S: K{PKs{K1}||Данные о покупателе||Информация о запрашиваемом товаре||Цена товара||SKc{H}}. Данные о покупателе передаются для возможного получения скидок.

3.2.            Сторона продавца расшифровывает сообщение, проверяет ЭЦП и отправляет ответное сообщение, зашифрованное на ключе K1, содержащее предложение, идентификатор транзакции (TID), ЭЦП и следующий случайный сеансовый ключ K2: S->C: K1{PKc{K2}||Информация о запрашиваемом товаре||Цена товара со скидкой||TID||SKs{H}}.

3.3.            Покупатель проверяет ЭЦП и в случае одобрения предложения продавца, генерирует сообщение о согласии, зашифрованное на ключе K2, содержащее дату и время и ЭЦП, чем и подтверждает свое согласие с условиями сделки, а также следующий зашифрованный сеансовый ключ K3: C->S:K2{Согласие с условиями сделки||PKs{K3}||SKc{H}}.

3.4.            Продавец расшифровывает сообщение и отправляет покупателю ответное сообщение, содержащее зашифрованный сеансовый ключ K4, ЭЦП  и накладную, содержащую информацию о заказе, номер заказа в реестре продавца (TID) и время данного заказа, ЭЦП накладной, зашифрованную на сгенерированном случайном ключе KG: S->C: K3{PKc{K4}||KG{Накладная заказа||SKs{H}}||SKs {H}}.

3.5.            Покупатель расшифровывает K4, проверяет ЭЦП, в случае успешной проверки создает электронный платежный ордер [1], содержащий зашифрованный на  открытом ключе сервера  кошелька номер счета, идентификатор транзакции (TID), дату и время транзакции, персональный идентификатор покупателя CID, цену товара и ЭЦП сообщения:  S->C: K4{PKt{Реквизиты покупателя||CID||Дата и время||TID||SKc{H}}||SKc{H}}.

3.6.            Продавец расшифровывает сообщение и проверяет ЭЦП покупателя, присоединяет к данному письму номер своего счета, ключ KG, уникальный идентификатор транзакции в реестре платежной системы (PID) [1], содержащий в себе три поля: SID, дату и время транзакции, уникальный номер транзакции в реестре продавца. C->T: PKt{PKt{Реквизиты покупателя||CID||Дата и время||TID||SKc{H}}||SID||Дата и время||TID||Банковские реквизиты продавца||KG||SKs{H}}.

3.7.            Сервер кошелька расшифровывает сообщение проверяет ЭЦП, расшифровывает своим закрытым ключом информацию, предоставленную покупателем, сверяет цены, время, TID, заявленные покупателем и продавцом, проверяет ЭЦП покупателя, проверяет персональные данные участников. Далее, при успешной проверке, пересылает покупателю секретный ключ для расшифровки накладной KG  и подписанное сообщение о списании средств покупателя, зашифрованные на открытом ключе покупателя: T->C: PKc{KG||Уведомление о списании средств||SKt{H}}. Также отправляет продавцу подписанное уведомление о начислении средств: T->S: PKs{Уведомление о начислении средств||SKt{H}}.

 

В данной работе был предложен открытый протокол осуществления электронного платежа. Также в следующей работе автор с помощью средств теоретико-доказательственного подхода: BAN-логики и метода резолюции будет доказано удовлетворение данным протоколом необходимым условиям безопасности.

Литература

1.     Деднев М.А., Дыльнов Д.В., Иванов М.А. Защита информации в банковском деле и электронном бизнесе. – М.: Изд-во КУДИЦ-ОБРАЗ, 2004.

2.     Панасенко С.П., Батура В.П. Основы криптографии для экономистов. – М.: Финансы и статистика, 2005.

3.     Хорев П.Б. – Криптографические интерфейсы и их использование. – Горячая линия – Телеком, 2007.

4.     Черемушкин А.В. – Криптографические протоколы. Основные свойства и уязвимости. – М.: Академия, 2009.