Электронная коммерция

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

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

Приложения для совершения покупок
Некоторое время назад электронная коммерция выглядела довольно просто. Web-торговцы создавали HTML-версии форм для заказа, покупатели их заполняли, распечатывали и присылали по обычной почте. Каталоги продавцов были интерактивными, но сам процесс заказа таковым не являлся.

Затем появились формы заказа, которые покупатели могли пересылать по Интернет. Для этого требовались клиентские HTML-формы, взаимодействующие с заказчиками, а также серверные интерфейс CGI и специальные приложения, принимающие и обрабатывающие данные. От пользователей требовалось занести данные в одну или несколько HTML-форм. Часто внешний HTML-интерфейс генерировался динамически, в зависимости от базы данных товаров.

Позднее были разработаны более сложные приложения: теперь пользователи могли просматривать интерактивные каталоги и заносить предметы с нескольких страниц в виртуальные списки покупок (virtual shopping cart). Система, установленная на сервере, запоминала все выбранные предметы и объединяла их в общий список по окончании посещение виртуального магазина. Такие приложения известны как приложения для совершения покупок (shopping cart application).

Чтобы сохранить список выбранных предметов, приложения для совершения покупок используют специальные маркеры (cookies) и HTTP-заголовки. Помните, что HTTP - протокол без памяти (см. главу 12), то есть каждая HTTP-команда выполняется независимо от предшествующей. По этой причине обычно используется некоторый маркер, позволяющий логически объединить последовательности действий в HTTP-транзакции. Этот маркер должен быть доступен серверу, для чего его указывают как параметр в последующих URL динамических HTML-страниц или включают в другой HTTP-заголовок.

Открытый HTTP
Web-транзакции могут выполняться с применением обычных Web-протоколов и кредитных карт. Пользователь может посылать продавцу информацию о платеже посредством HTML-страниц и HTML-форм. Однако, поскольку сообщения протокола HTTP никак не защищены (вся информация передается в открытом виде как ASCII-текст), вероятен анализ перехваченных открытых данных и извлечение платежной информации, например, номеров кредитных карт.

S-HTTP
Защищенный протокол S-HTTP (Secure HTTP), разработанный компанией Enterprise Integration Technology (EIT), является расширением протокола HTTP. Он позволяет браузерам и серверам подписывать, аутентифицировать и шифровать сетевые HTTP-пакеты. Данный протокол, так же как и обычный HTTP, использует MIME (Multipurpose Internet Mail Extensions) для добавления заголовков, указывающих на необходимость специальной обработки, и для хранения информации о сертификатах и ключах. Процесс установления связи между браузером, поддерживающим протокол S-HTTP, и сервером несколько сложнее аутентификации в обычном HTTP. В настоящее время протокол S-HTTP используется редко, потому что его в значительной степени потеснил SSL (Secure Sockets Layers).

HTTP и SSL
SSL (Secure Sockets Layer) - это метод шифрования, разработанный компанией Netscape Communications для сокетов TCP/IP. Как и S-HTTP, SSL обеспечивает защиту сетевых HTTP-пакетов. Отличие же в том, что S-HTTP работает только на уровне протокола HTTP, а SSL - на уровне сокетов, обеспечивая безопасность ряда других протоколов Интернета, использующих сокеты. Процесс согласования между клиентом, поддерживающим SSL, и сервером подобен процессу согласования обычных сокетов, но в первом случае (с SSL) клиент и сервер дополнительно передают сообщения для выбора алгоритма шифрования и обмена информацией о сертификатах и ключах.

При применении SSL с протоколом HTTP, Web-браузер использует URL-схемы вида <https://> вместо <http://> , как для открытого HTTP. Многие Web-браузеры сообщают пользователю (с помощью диалоговых окон, изображений ключиков скрепленных или порванных связей, и т. д.), что транзакции на основе HTTPS более безопасны, чем обычные HTTP-транзакции.

Сейчас SSL используется повсеместно для обеспечения безопасности Web-транзакций общего назначения и практически заменил S-HTTP. Развитием SSL (и протоколов транспортного уровня) занимается рабочая группа Transport Level Security (TLS) в составе IETF.

Системы торговых серверов
В настоящее время в Web-коммерции используются в основном традиционные Web-протоколы, а для передачи конфиденциальной информации о платежах - HTTP, зашифрованный средствами SSL. Существует много приложений для совершения покупок, которые обеспечивают подобные функциональные возможности. Специализированные серверные системы заменяются коммерческими продуктами для торговых серверов. Эти программы обычно содержат инструментальные средства для помещения информации о товарах из базы данных в Web посредством сценариев и HTML-страниц. Они также включают модульные подсистемы для обработки оплаты, поставки и объединения с другими компьютерными системами.

Более сложные системы выполнят проверку правильности платежа в реальном времени, что требует взаимодействия с банком, обслуживающим счета продавца. Менее сложные системы откладывают проверку правильности платежа до тех пор, пока запрошенная транзакция не будет перенесена в обычную расчетную систему продавца.

Вот несколько примеров крупных коммерческих программ: Microsoft Site Server, Netscape Merchant System, Open Market Commerce Server, Net Commerce от IBM и Electronic Commerce Suite от iCat.

Протокол SET
SET (Secure Electronic Transaction) - это протокол электронных платежей на основе банковских карт, разработанный консорциумом компаний во главе с MasterCard и Visa. Он превращает финансовые операции в виртуальные, чем-то напоминающие манипуляции с кредитной карточкой.

Покупая товары с помощью обычных кредитных карт, покупатели взаимодействует с продавцами. Последние для проверки сделки обращаются к банкам, принимающим карточки к оплате, а банки-эммитенты взаимодействуют с держателями карт для получения денег за покупку. Применив эту, всем знакомую схему к электронным транзакциям, компании MasterCard, Visa и другие разработали протокол SET. Он использует тот же самый базовый процесс, но заменяет реальную кредитную карточку интерактивным протоколом. Протокол SET сохраняет иерархию доверительных отношений, что существует между продавцом и банком, принимающим платеж, а также владельцем карты и банком-эммитентом. В электронном варианте эта иерархия доверия формализована посредством цифровых сертификатов и иерархии сертификационных служб (аналог финансовой системы экономики).

SET заменяет две отдельных технологии: STT (Secure Transaction Technology) от Visa и Microsoft и SEPP (Secure Electronic Payment Protocol) от MasterCard и IBM. К счастью, преимущества единой инфраструктуры были настолько очевидны, что два протокола объединили в один - SET.

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

Протокол SET не привязан ни к HTTP, ни к Web-коммерции. Его можно использовать с самыми разными протоколами. SET не простой протокол: его сообщения и структуры данных описаны в формате ASN.I (Abstract Syntax Notation One). В отличие от SSL, SET шифрует сами сообщения, а не канал связи. В результате возможны более сложные шифры, нежели многоцелевые (как в SSL).

Структура SET-запроса разбивается на две части - информация о заказе (Order Information, 01) и информация о платеже (Payment Information, PI). Последняя нужна банку; но не продавцу. (Продавцу достаточно получить от банка подтверждение платежа.) Все данные, относящиеся к одной транзакции, скрепляются методом двойной подписи (dual signature).

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

Каждое сообщение обрабатывается алгоритмом дайджеста сообщений, который вырабатывает 160-битный дайджест. Затем два дайджеста соединяются, и результат обрабатывается этим же алгоритмом. Конечный вариант покупатель подписывает с помощью своего личного ключа. Это и есть двойная подпись. Затем покупатель отправляет два сообщения. Одно - продавцу, в нем описаны детали заказа и содержится дайджест сообщения, посланного банку. Другое сообщение - в банк; в нем указана стоимость транзакции и содержится дайджест сообщения, посланного продавцу.

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

SET явно использует два вида шифрования: симметричное и асимметричное, а также сертификаты для сопоставления открытого и личного ключей. Многие компании, производящие программное обеспечение, выпускают API для работы с протоколом SET. Большинство приложений, использующих SET, например системы торговых серверов и аналогичные им объекты клиентской стороны (своего рода виртуальные кошельки), применяют эти программные библиотеки.

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

Для большинства видов электронных денег разработаны специальные протоколы обмена финансовыми заявками между клиентом, продавцом и эммитентом денег (банком). Эти протоколы реализованы как для серверного ПО, так и для клиентского - электронного бумажника.

Вот некоторые примеры существующих технологий электронных денег:

• CyberCash и CyberCoin от CyberCash Inc.
   http://www.cybercash.com

eCash от DigiCash Inc.
   http://www.digicash.com

• Millicent от Digital Equipment
  http://www.millicent.digital.com

• iKP (Internet Keyed Payment Protocols) от IBM
  http://www.zurich.ibm.ch/Technology/Security/extern/ecommerce/iKP.html

• NetCheque, производитель - University of Southern California's Information Sciences Institute
  http://www.netcheque.org

• NetBill, производители - Carnegie Mellon University's Information Networking Institute,
  Mellon Bank и CyberCash
  http://www.netbill.com

• Mondex от Mondex International
  http://www.mondex.com

• Interactive Messaging Platform от First Virtual (на 07.07.2000 не работала - прим. Тим)
  http://www.firstvirtual.com/services/imp/index.html

• Netscape LivePayment от Netscape
  http://live.netscape.com/comprod/products/iapps/livepayment.html

• MiniPay от IBM (на 07.07.2000 не работала - прим. Тим)
  http://www.hrl.il.ibm.com/mpay/

Микроплатежи
Электронные деньги имеют значительное преимущество перед реальными: они позволяют осуществлять микроплатежи - платежи, размер которых меньше, чем существующие денежные единицы. В США это означает возможность расчетов на суммы менее одного цента. Система кредитных карт этого не допускает. Микроплатежи часто связаны с “нематериальными товарами“
<нематериальными товарами>, такими, как доступ к Web-страницам. Существующие системы для обычных платежей не всегда корректно работают со столь малыми суммами.

Электронные бумажники
Многие виды электронных денег требуют наличия у клиента так называемого электронного бумажника - программного обеспечения, которое посылает информацию о финансовой сделке на сервер, используя специальный протокол. Некоторые разработчики программного обеспечения создают API, чтобы для различных электронных денег Вы могли использовать один и тот же <бумажник> - так же, как в реальный бумажник Вы не задумываясь кладете кредитные карты различных платежных систем.

Другие компании применяют электронные бумажники для иных целей. Некоторые Web-узлы имеют гостевые книги, в которые пользователей просят сообщить информацию о себе и о своих предпочтениях для динамического формирования содержания узла. Часть этой информации хранят в <бумажниках>. Когда такие сведения помещены в одно место, где четко определены процедуры их запроса и обработки, удобнее использовать электронный бумажник (небольшую клиентскую базу данных, содержащую, например, номер кредитной карточки, информацию о цифровой подписи и сведения для идентификации и аутентификации) для нефинансовой информации. Кстати, в обычном бумажнике часто мы тоже храним массу нужных нам вещей, не имеющих отношения к деньгам: листочки с телефонами, записочки, фотографии и др.

Смарт- карты
Смарт-карты (или <интеллектуальные карты>) внешне напоминают обычные кредитные карточки, но содержат микропроцессор, который запоминает определенную информацию. Их применяют в основном при финансовых сделках. Смарт-карты используют цифровые подписи и другие криптографические методы защиты, что делает их более защищенными от фальсификаций, чем обычные кредитные карточки.

Существует целый ряд стандартов для смарт-карт. Организация ISO разработала стандарты ISO 7816, определяющие совместимость на аппаратном уровне и на уровне канального протокола контактных смарт-карт на основе интегральных микросхем. Europay, MasterCard и Visa разработали спецификации смарт-карт, расширяющие стандарты ISO 7816. Эти спецификации содержат дополнительные типы данных и правила кодирования, позволяющие применять смарт-карты в финансовой сфере. Специалисты GSM (Global System for Mobile Communications) разработали спецификации, позволяющие с помощью смарт-карт идентифицировать и аутентифицировать пользователей мобильных телефонов. Рабочая группа PC/SC (Personal Computer / Smart Card) определила схему и API для взаимодействия смарт-карт с персональных компьютерами, а OpenCard Framework - для взаимодействия с OpenCard-совместимыми платформами (включая сетевые компьютеры).

Java Commerce
Java Commerce - это совокупность технологий, переносящих электронную коммерцию на платформу Java. Существует расширение платформы Java - Java Electronic Commerce Framework (JECF), позволяющее использовать приложения для электронной коммерции, например, Java Wallet. Средствами программного интерфейса Java Commerce API можно создавать торговые системы для платформы Java. Java Commerce API расширен посредством "кассет" - объектов, подобных компонентам JavaBean.

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

Ссылки
Дополнительную информацию об электронной коммерции Вы найдете в книге Давида Козье (David Kosiur) (Microsoft Press, 1997).