Интегрированные сети ISDN

         

Обработка запроса покупки



Рисунок 4.6.2.16. Обработка запроса покупки

Прежде чем послать запрос покупки покупатель (владелец карты) должен заполнить форму заказа, одобрить условия сделки и выбрать платежную карту. Для того чтобы послать запрос продавцу, владелец карты должен иметь копию ключей расчетного центра. Обработка заказа начинается, когда программа владельца карты запрашивает копию сертификата расчетного центра. В этом сообщении содержится информация о выборе платежной системы. Когда продавец получает запрос, он присваивает транзакции уникальный идентификатор. После этого продавец пересылает свой сертификат и сертификат расчетного центра вместе с этим идентификатором владельцу карты. Программа владельца карты верифицирует полученные сертификаты и запоминает их для использования в последующей обработке заказов. Приложение владельца карты формирует данные заказа OI (Order Information) и платежные инструкции PI. OI и PI снабжаются идентификатором транзакции, для того чтобы расчетный центр мог связать их вместе при авторизации запроса продавца. Заметим, что OI не содержит таких данных как описание товара или условий поставки. Эта информация получается на фазе сделки, предшествующей операциям SET (например, в рамках протокола IOTP).

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

Когда программа продавца получает заказ, она верифицирует сертификат подписи владельца карты, используя общедоступный ключ владельца карты и дайджест PI (заключенный в OI), проверяет цифровую подпись, чтобы убедиться в не искаженности заказа и в том, что сообщение подписано секретным ключом владельца карты.
Заметим, что продавцу не обязательно выполнять авторизацию до посылки отклика владельцу карты. Последний может позднее определить, была ли выполнена авторизация, послав информационный статусный запрос. После обработки OI продавец генерирует отклик и снабжает его цифровой подписью. Этот отклик содержит в себе сертификат подписи продавца и указывает на факт получения заказа от владельца карты. Если отклик авторизации указывает на одобрение транзакции, продавец поставляет товар или услугу, указанные в заказе.

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

Сообщение PReq не обязательно следует за сообщениями PInitReq/PInitRes. Сообщение же PRes может быть прислано до выполнения авторизации и оплаты. Если владелец карты обладает сертификатом, то для обеспечения целосности и аутентичности сообщения выполняется двойная подпись.

PReq представляет собой наиболее сложное сообщение в протоколе. Оно состоит из двух частей: инструкции-заказа OI (Order Instruction) для продавца и платежной инструкции PI (Payment Instruction), которая проходит транзитом через продавца в расчетный центр. Эти две части принципиально должны подписываться независимо. Продавец получает описание заказа OD (Order Description) и PurchAmt. В PI включаются хэши OD и PurchAmt (HODINput). Расчетный центр проверяет, что хэш передан покупателем (владельцем карты) через продавца и равен хэшу, выданному продавцом в AuthReq. Некоторые владельцы карт могут не иметь сертификатов. Сообщения от таких владельцев не будут подписаны, вместо этого PIHead связывается с OIData. Целостность таких сообщений обеспечивается следующими мерами:

  • C PI используется OAEP


  • В блок OAEP включается H(PIHead) (вместе с PANData)




  • С PIHead используется H(OIData)


  • Расчетным центром производится сравнение H(OIData), присланного продавцом, с H(OIData) из PIHead.


  • Владелец карты формирует сообщение PReq следующим образом (эти действия предпринимаются как для PReqUnsigned так и для PreqDualSigned).



    Шаг
    Действие
    1 Извлечь PurchAmt и OD
    2 Сформировать OIData следующим образом:
    a) Если имел место обмен PInitReq/ PInitRes: Скопировать TransIDs из PInitRes
    В противном случае: Для формирования TransIDs владелец карты сгенерирует PreqDate (текущие дата/время), LID-C и XID
    b) Сформировать новый RRPID, запомнить его значение для сверки с откликом продавца
    Если имел место обмен PInitReq/PInitRes: Скопировать Chall-c из PInitRes
    В противном случае: Сформировать новый Chall-C
    c) Сформировать новый ODSalt
    d) Сформировать HODInput посредством следующей процедуры:


    • Скопировать OD из данных процесса инициализации SET


    • Записать PurchAmt cо значением, одобренным владельцем карты на фазе инициации SET.


    • Скопировать ODSalt из пункта 2 с)


    • Если владелец карты намерен выполнить инсталляцию или последовательные платежи, то записать InstallRecurData


    • Опционно: добавить любые ODExtensions
    e) Сформировать HOD с HODInput из пункта 2 d
    f) Если имел место обмен PInitReq/ PInitRes: Скопировать Chall-M из PInitRes и не заполнять BrandID
    В противном случае: Не заполнять Chall-M

    Записать BrandID, указав предпочтительный тип карты
    g) Произвести записьв поле BIN с HODInput из пункта 2d
    h) Если HODInput из шага 2.d имеет какие-то расширения OIExtensions, внести ODExtOIDs со всеми OID в ODExtensions. ODExtOIDs будут перечислены в том же порядке, что и расширения ODExtensions, таким образом продавец сможет вычислить тот же самый хэш
    i) Опционно: добавить любые расширения OIExtensions.
    3 Сформировать PIHead следующим образом:
    a) Скопировать TransIDs, вычисленные в пункте 2.а
    b) Сгенерировать Inputs согласно процедуре:

    • Скопировать HOD из пункта 2.е


    • Скопировать PurchAmt из шага 2.d.2
    c) Скопировать MerchandID из сертификата продавца в PInitRes, или из CD-ROM-каталога
    d) Скопировать InstallRecurData из пункта 2.d.4 (если имеется)
    e) Сформировать TransStain, как HMAC, используя XID в качестве данных и CardSecret - в качестве ключа. Если владелец карты не имеет сертификата, использовать CardSecret, заполненный нулями.
    f) Записать SWIdent, который получен из локальных данных. Это значение будет соответствовать коду в цифровом конверте сообщения
    g) Если присутствует туннельное расширение Cert_PE, сформировать AcqBackInfo следующим образом:

  • Найти туннельное расширение для алгоритма шифрования, приемлемое для владельца карты. Если такое найдено, заполнить AcqBackAlg, в противном случае, не формировать AcqBackInfo и перейти к пункту f.


  • Сформировать новый AcqBackKey (приемлемый для AcqBackAlg)
  • h) Опционно добавить любые PIExtensions
    4 Сформировать PANData
    5 Сгенерировать PU-OIData c L-оператором, используя PIHead из пункта 3 (параметр t1) и OIData из пункта 2 (параметр t2)
    6 Используя результат пунктов 2, 3 и 4, сгенерировать PreqDualSigned, если владелец карты имеет сертификат или PreqUnsigned, если сертификата нет.
    <


    /p> Когда расчетный центр готов шифровать данные для конечного пользователя (ЕЕ), его сертификат содержит список симметричных алгоритмов шифрования, которые он поддерживает, в порядке их предпочтения. Конечный пользователь, который хочет иметь шифрованные данные, выбирает первый алгоритм из списка, который он способен использовать. Ключ для этого алгоритма передается расчетному центру в сообщении PReq.

    Реализация PReqDualSigned рассмотрена ниже.

    Шаг Действие
    1 Сформировать PISignature:

  • Сформировать PI-TBS:




      1. Сгенерировать HPIData в виде дайджеста PIData


      2. Сгенерировать HOIData в виде дайджеста OIData




        1. Выполнить PISinature c оператором S0, используя сертификат владельца карты (параметр s) и PI-TBS (параметр t).


    2 Применить оператор EX, используя общедоступный ключ расчетного центра (параметр r), PI-OILink от владельца карты создает PReq шаг 5 (параметр t), а PANData от владельца карты создает PReq шаг 4 (параметр p)
    3 Образовать PIDualSigned как объединение подписи PISignature, вычисленной в пункте 1, и шифрованных данных, полученных на шаге 2.
    4 Генерируем PIData как объединение HIHead из PReq владельца карты, (см. пункт 3 предшествующей таблицы), и PANData владельца карты, которая создается в пункте 4 при формировании PReq (см. предшеств. табл.).
    5 Генерируем OIDualSigned, посредством оператора L, используя OIData от владельца карты, создаем PReq - пункт 2 (параметр t1) и данные PIData, полученные в пункте 4 (параметр t2)
    6 Генерируем PReqDualSigned как объединение PIDualSigned из пункта 3 и OIDualSigned из пункта 5.
    Сообщение запроса покупки PReq содержит инструкцию заказа OI для продавца и платежную инструкцию для передачи транзитом в зашифрованном виде через продавца в расчетный центр. Аутентичность и целостность сообщений достигается за счет использования двойной подписи, если владелец карты имеет сертификат (PReqDualSigned). Если владелец карты не имеет сертификата, для тех же целей применяются хэши в ОАЕР-конверте (PReqUnsigned).Структура данных в случае PreqDualSigned показана в таблице 4.6.2.57.




    Содержание раздела