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.