ВЗАИМНАЯ АУТЕНТИФИКАЦИЯ ПРОГРАММНЫХ УРОВНЕЙ
MUTUAL AUTHENTICATION OF PROGRAM LEVELS

ПЕРЕКРЕСТНЫЕ ССЫЛКИ НА РОДСТВЕННЫЕ ЗАЯВКИ
[0001] Эта заявка притязает на приоритет предварительной заявки на патент США № 62/132289, поданной 12 марта 2015 г., которая с помощью ссылки включена в данный документ во всей своей полноте для всех целей.
ПРЕДПОСЫЛКИ ИЗОБРЕТЕНИЯ
[0002] Программное приложение может иметь несколько программных компонентов или программных уровней (также могут быть названы программными библиотеками), которые осуществляют связь или обмениваются данными друг с другом. Например, код, исполняемый на одном уровне, может вызывать функции, реализованные на другом уровне, или код, исполняемый на одном уровне, может передавать параметры или данные на другой уровень. Вследствие модульного характера такой среды уязвимость безопасности может существовать на незащищенном интерфейсе между программными уровнями. К примеру, приложение посредника может перехватить данные, передаваемые между программными уровнями, для получения чувствительной информации, или неавторизованный код может прямо задействовать функции, реализованные в совместно используемом программном уровне, и получать чувствительные данные, обрабатываемые этим совместно используемым программным уровнем.
[0003] Варианты осуществления настоящего изобретения устраняют эти и другие недостатки по отдельности и вместе.
КРАТКОЕ ОПИСАНИЕ ИЗОБРЕТЕНИЯ
[0004] Варианты осуществления настоящего изобретения предусматривают способы, которые могут быть использованы для взаимной аутентификации программных уровней, которые осуществляют связь друг с другом. В некоторых вариантах осуществления программные уровни могут представлять собой часть программного приложения, исполняемого на вычислительном устройстве. Для установления взаимной аутентификации между первым программным уровнем и вторым программным уровнем приложения связывающий алгоритм может быть выполнен при инициализации приложения для обмена секретными ключами между программными уровнями. После этого, во время выполнения приложения данные, обмен которыми производится между программными уровнями, могут быть зашифрованы с использованием ключа шифрования данных, сформированного на основе совместно используемых секретных ключей, сгенерированных во время инициализации приложения. В некоторых вариантах осуществления способ установления взаимной аутентификации между первым программным уровнем и вторым программным уровнем приложения может включать использование ключа шифрования данных, сформированного на основе первого одноразового случайного или псевдослучайного значения (nonce), сгенерированного первым программным уровнем, и второго nonce, сгенерированного вторым программным уровнем, во время инициализации приложения.
[0005] Согласно некоторым вариантам осуществления во время выполнения способ установления взаимной аутентификации, выполняемый первым программным уровнем, может включать извлечение первым программным уровнем приложения, исполняемого на вычислительном устройстве, связывающей информации, сохраненной первым программным уровнем во время инициализации приложения, и расшифровку связывающей информации для получения второго nonce, которое было сгенерировано вторым программным уровнем во время инициализации. Способ может дополнительно включать прием первым программным уровнем зашифрованного первого nonce со второго программного уровня приложения, расшифровку зашифрованного первого nonce для получения первого nonce. Первый программный уровень может затем формировать ключ шифрования данных на основе первого nonce и второго nonce и после этого шифровать данные, отправляемые с первого программного уровня на второй программный уровень, с использованием ключа шифрования данных. Ключ шифрования данных также может быть использован для расшифровки данных, принятых со второго программного уровня. В некоторых вариантах осуществления ключ шифрования данных может быть сформирован дополнительно на основе динамической временной информации.
[0006] Согласно некоторым вариантам осуществления во время выполнения способ установления взаимной аутентификации, выполняемый вторым программным уровнем, может включать извлечение вторым программным уровнем, исполняемым на вычислительном устройстве, связывающей информации, сохраненной вторым программным уровнем во время инициализации приложения, и расшифровку связывающей информации для получения первого nonce. Способ может также включать прием вторым программным уровнем зашифрованного второго nonce с первого программного уровня и расшифровку зашифрованного второго nonce для получения второго nonce. Второй программный уровень может затем формировать ключ шифрования данных на основе первого nonce и второго nonce и после этого шифровать данные, отправляемые со второго программного уровня на первый программный уровень, с использованием ключа шифрования данных. Ключ шифрования данных также может быть использован для расшифровки данных, принятых с первого программного уровня. В некоторых вариантах осуществления ключ шифрования данных может быть сформирован дополнительно на основе динамической временной информации.
[0007] Согласно некоторым вариантам осуществления вычислительное устройство может содержать процессор и память, соединенную с процессором и хранящую машиночитаемый код для реализации приложения, имеющего первый программный уровень и второй программный уровень. Машиночитаемый код при исполнении процессором может приводить к выполнению первым программным уровнем и вторым программным уровнем их соответствующих способов взаимной аутентификации.
КРАТКОЕ ОПИСАНИЕ ГРАФИЧЕСКИХ МАТЕРИАЛОВ
[0008] Фиг. 1 представляет собой структурную схему вычислительного устройства согласно некоторым вариантам осуществления.
[0009] Фиг. 2 представляет собой блок-схему способа взаимной аутентификации программных уровней согласно некоторым вариантам осуществления.
[0010] Фиг. 3 представляет собой функциональную схему прохождения информации способа взаимной аутентификации программных уровней согласно некоторым вариантам осуществления.
[0011] Фиг. 4 представляет собой блок-схему связывающего алгоритма, выполняемого программным уровнем, согласно некоторым вариантам осуществления.
[0012] Фиг. 5 представляет собой блок-схему алгоритма формирования ключа, выполняемого программным уровнем, согласно некоторым вариантам осуществления.
[0013] Фиг. 6 представляет собой блок-схему связывающего алгоритма, выполняемого другим программным уровнем, согласно некоторым вариантам осуществления.
[0014] Фиг. 7 представляет собой блок-схему алгоритма формирования ключа, выполняемого другим программным уровнем, согласно некоторым вариантам осуществления.
[0015] Фиг. 8 представляет собой функциональную схему прохождения информации одного иллюстративного осуществления связывающего алгоритма согласно некоторым вариантам осуществления.
[0016] Фиг. 9 представляет собой функциональную схему прохождения информации одного иллюстративного осуществления алгоритма формирования ключа согласно некоторым вариантам осуществления.
[0017] Фиг. 10 представляет собой структурную схему системы согласно некоторым вариантам осуществления.
[0018] Фиг. 11 представляет собой структурную схему портативного вычислительного устройства согласно некоторым вариантам осуществления.
ПОДРОБНОЕ ОПИСАНИЕ ИЗОБРЕТЕНИЯ
[0019] Варианты осуществления настоящего изобретения предусматривают способы, которые могут быть использованы для взаимной аутентификации программных уровней, которые осуществляют связь друг с другом. В некоторых вариантах осуществления программные уровни могут представлять собой часть программного приложения, исполняемого на вычислительном устройстве. Чтобы устранить уязвимости на интерфейсе программных уровней, каждый программный уровень может быть аутентифицирован друг для друга, чтобы гарантировать, что функции на программном уровне вызываются известным субъектом или известным программным компонентом, и что вызывающая сторона авторизована задействовать вызываемую функцию. Данные, передаваемые туда и обратно между программными уровнями, также могут быть зашифрованы, чтобы оставаться непрозрачными для любого перехвата посредником при передаче данных, чтобы гарантировать конфиденциальность и целостность данных.
[0020] Согласно некоторым вариантам осуществления во время первоначальной инициализации программных уровней (например, когда программное приложение впервые компилируют и устанавливают на устройстве, или в первый раз, когда программное приложение исполняют) программные уровни выполняют связывающий алгоритм для обмена секретными ключами для связывания программных уровней друг с другом. Во время последующего выполнения программного приложения программные уровни выполняют алгоритм формирования ключа во время выполнения, чтобы сочетать секретные ключи, распределенные во время инициализации, с динамической временной информацией для генерирования ключа шифрования данных. Программные уровни могут затем безопасно передавать данные друг другу путем шифрования и расшифровки данных, обмен которыми производится между программными уровнями, с использованием динамически сгенерированного ключа шифрования данных.
[0021] Совместно используемые секретные ключи и связывающий алгоритм, выполняемый при первоначальной инициализации, обеспечивают способ для программных уровней взаимно аутентифицировать друг друга во время выполнения, поскольку неавторизованное приложение не будет обладать информацией о секретных ключах, распределенных во время инициализации. Это может противостоять попыткам мошеннического приложения задействовать функции в одном из программных уровней, поскольку мошенническое приложение не будет иметь возможности сгенерировать правильный ключ шифрования данных для осуществления связи с вызываемым программным уровнем. Шифрование данных, передаваемых между программными уровнями, с использованием ключа шифрования данных также препятствует перехвату посредником, поскольку данные, передаваемые между программными уровнями, не отправляют в явном виде, а вместо этого отправляют в зашифрованной форме, и их можно расшифровать только правильным ключом шифрования данных. Включение динамической временной информации в алгоритм формирования ключа также препятствует взлому ключа, поскольку ключ шифрования данных является динамически генерируемым во время выполнения и изменяется со временем. Способы, описанные в данном документе, также являются масштабируемыми и могут быть легко развернуты на миллионах устройств, поскольку связывающий алгоритм и алгоритм формирования ключа могут быть развернуты как часть кода, написанного на программных уровнях, и, в отличие от способов с использованием цифровых сертификатов, динамический характер алгоритма формирования ключа не требует периодического обновления у внешнего субъекта.
[0022] Перед обсуждением деталей некоторых вариантов осуществления настоящего изобретения для понимания различных вариантов осуществления может быть полезным описание некоторых терминов.
[0023] «Устройство связи» может представлять собой устройство, которое содержит один или более электронных компонентов (например, интегральную схему), которые могут осуществлять связь с другим устройством. Например, устройство связи может представлять собой вычислительное устройство, которое содержит по меньшей мере один процессор, соединенный с памятью, которая хранит команды или код для исполнения процессором. «Портативное устройство связи» может представлять собой устройство связи, которое может переносить и эксплуатировать пользователь и которое может содержать один или более электронных компонентов (например, интегральную схему). Портативное устройство связи может обеспечивать возможности удаленной связи c сетью. Портативное устройство связи может быть выполнено с возможностью передачи и приема данных или сообщений на другие устройства и от них. Портативное устройство связи может иметь вид мобильного устройства, такого как мобильный телефон (например, смартфон, сотовый телефон и т. д.), планшетных устройств, портативного медиа-проигрывателя, устройств персональных цифровых помощников (PDA), носимого устройства (например, часов, устройства слежения за здоровьем, такого как фитнес-браслет, и т. д.), электронного устройства считывания и т. д., или вид карты (например, смарт-карты) или брелока и т. д. Примеры портативных устройств связи могут также включать портативные вычислительные устройства (например, портативные компьютеры, нетбуки, ультрабуки и т. д.). Портативное устройство связи может также иметь вид транспортного средства (например, автомобиля) или быть встроено как часть транспортного средства (например, информационная система транспортного средства).
[0024] «Серверный компьютер» может включать мощный компьютер или кластер компьютеров. Например, серверный компьютер может представлять собой крупный универсальный компьютер, кластер мини-компьютеров или группу серверов, функционирующих как один элемент. В одном примере серверный компьютер может представлять собой сервер баз данных, подключенный к веб-серверу. Серверный компьютер может быть подключен к базе данных и может содержать любое аппаратное обеспечение, программное обеспечение, другую логическую часть или сочетание предыдущего для обслуживания запросов от одного или более клиентских компьютеров. Серверный компьютер может содержать одно или более вычислительных устройств и может использовать любую из множества вычислительных структур, компоновок и компиляций для обслуживания запросов от одного или более клиентских компьютеров.
[0025] «Эмитент» может, как правило, относиться к субъекту предпринимательства (например, банку), который поддерживает счет для пользователя, который связан с портативным устройством связи, такой как счет, внесенный в реестр мобильного приложения, установленного на портативном устройстве связи. Эмитент может также выдавать параметры счета, связанные со счетом, на портативное устройство связи. Эмитент может быть связан с главной системой, которая выполняет некоторые или все функции эмитента от имени эмитента. В некоторых вариантах осуществления эмитент может относиться к поставщику программного приложения.
[0026] «Продавец», как правило, может представлять собой субъект, который вовлечен в транзакции и может продавать товары или услуги или предоставлять доступ к товарам или услугам.
[0027] «Эквайер» может, как правило, представлять собой субъект предпринимательства (например, коммерческий банк), который имеет коммерческую связь с конкретным продавцом или другим субъектом. Некоторые субъекты могут выполнять функции как эмитента, так и эквайера. Некоторые варианты осуществления могут охватывать такие единые субъекты эмитентов-эквайеров.
[0028] «Устройство доступа» может представлять собой любое подходящее устройство для осуществления связи с компьютером продавца или сетью обработки транзакций и для взаимодействия с устройством для транзакций (например, платежным устройством), вычислительным устройством пользователя и/или мобильным устройством пользователя. Устройство доступа может в целом быть расположено в любом подходящем месте, таком как местоположение продавца. Устройство доступа может иметь любую подходящую форму. Некоторые примеры устройств доступа включают POS-устройства, сотовые телефоны, устройства PDA, персональные компьютеры (PC), планшетные компьютеры, специализированные ручные устройства считывания, приставки, электронные кассовые аппараты (ECR), автоматические кассовые машины (ATM), виртуальные кассовые аппараты (VCR), киоски, системы безопасности, системы доступа, веб-сайты и т. п. Устройство доступа может использовать любой подходящий контактный или бесконтактный режим работы для отправки или приема данных от портативного устройства связи или связанных с ним данных. В некоторых вариантах осуществления, в которых устройство доступа может содержать POS-терминал, может быть использован любой подходящий POS-терминал, и он может содержать устройство считывания, процессор и машиночитаемый носитель. Устройство считывания может иметь любой подходящий контактный или бесконтактный режим работы. Например, для взаимодействия с портативным устройством связи иллюстративные устройства считывания карт могут содержать радиочастотные (RF) антенны, оптические сканеры, устройства считывания штрих-кодов или устройства считывания магнитных полос.
[0029] «Сообщение с запросом авторизации» может представлять собой электронное сообщение, отправляемое для запроса авторизации для транзакции. Сообщение с запросом авторизации может быть отправлено в сеть обработки транзакций и/или эмитенту карты транзакций (например, платежной карты). Сообщение с запросом авторизации согласно некоторым вариантам осуществления может соответствовать ISO 8583, который является стандартом для систем, которые обмениваются информацией электронных транзакций, связанной с платежом, сделанным пользователем с помощью устройства для транзакций или счета для транзакций. Сообщение с запросом авторизации может содержать информацию, которая может быть использована для идентификации счета. Сообщение с запросом авторизации может также содержать дополнительные элементы данных, такие как одно или более из кода услуги, даты завершения срока действия и т. д. Сообщение с запросом авторизации также может содержать информацию транзакции, такую как любая информация, связанная с текущей транзакцией, такая как сумма транзакции, идентификатор продавца, местоположение продавца и т. д., а также любую другую информацию, которая может быть использована при определении, следует ли идентифицировать и/или авторизовать транзакцию. Сообщение с запросом авторизации также может содержать другую информацию, такую как информация, которая идентифицирует устройство доступа, которое сгенерировало сообщение с запросом авторизации, информация о местоположении устройства доступа и т. д.
[0030] «Сообщение с ответом авторизации» может представлять собой ответ электронным сообщением на сообщение с запросом авторизации. Сообщение с ответом авторизации может быть сгенерировано финансовой организацией-эмитентом или сетью обработки транзакций. Сообщение с ответом авторизации может содержать, только в качестве примера, один или более из следующих индикаторов состояния: «одобрение» -транзакция была одобрена; «отклонение» -транзакция не была одобрена; или «вызов центра» -ответ, требующий больше информации, при этом продавец должен позвонить по бесплатному телефонному номеру для авторизации. Сообщение с ответом авторизации также может содержать код авторизации, который может представлять собой код, который выдавший кредитную карту банк возвращает в ответ на сообщение с запросом авторизации в электронном сообщении (или прямо, или через сеть обработки транзакций) на компьютер продавца, который обозначает одобрение транзакции. Код может служить подтверждением авторизации. Как указано выше, в некоторых вариантах осуществления сеть обработки транзакций может генерировать или направлять сообщение с ответом авторизации продавцу.
[0031] «Маркер» может включать заменяющий идентификатор для некоторой информации. Например, маркер транзакции может включать идентификатор для счета для транзакций, являющийся заменой идентификатора счета, такого как номер основного счета (PAN). Например, маркер может включать ряд цифробуквенных символов, который может быть использован в качестве замены оригинального идентификатора счета. Например, маркер «4900 0000 0000 0001» может быть использован вместо PAN «4147 0900 0000 1234». В некоторых вариантах осуществления маркер может быть «сохраняющим формат» и может иметь численный формат, который соответствует идентификаторам счетов, используемым в существующих сетях обработки транзакций (например, формат сообщения финансовой транзакции ISO 8583). В некоторых вариантах осуществления маркер может быть использован вместо PAN для инициирования, авторизации, проведения или принятия транзакции. Маркер также может быть использован для представления оригинальных удостоверяющих данных в других системах, где обычно были бы предоставлены оригинальные удостоверяющие данные. В некоторых вариантах осуществления значение маркера может быть сгенерировано так, что восстановление оригинального PAN или другого идентификатора счета по значению маркера не может быть произведено вычислительным путем. Кроме того, в некоторых вариантах осуществления формат маркера может иметь такую конфигурацию, чтобы позволять субъекту, принимающему маркер, идентифицировать его как маркер и распознавать субъект, который выдал маркер.
[0032] «Реальный идентификатор счета» может включать оригинальный идентификатор счета, связанный со счетом. Например, реальный идентификатор счета может представлять собой номер основного счета (PAN), выданный эмитентом для карточного счета (например, кредитной карты, дебетовой карты и т. д.). К примеру, в некоторых вариантах осуществления реальный идентификатор счета может содержать численное значение из шестнадцати знаков, такое как «4147 0900 0000 1234». Первые шесть знаков реального идентификатора счета (например, «414709») могут представлять реальный идентификатор эмитента (BIN), который может идентифицировать эмитента, связанного с реальным идентификатором счета.
[0033] «Параметры счета» могут относиться к информации, связанной со счетом, которая может быть использована для проведения транзакции со счетом. Примеры параметров счета могут включать информацию, которая может быть использована для идентификации счета пользователя (например, реальный идентификатор счета, альтернативный идентификатор счета, маркер и т. д.), данные или информацию, относящуюся к состоянию счета, один или более ключей, которые применяются для генерирования криптографической информации, данные или информацию, относящиеся к одному или более ключам, и т. д. Параметр счета может быть полустатическим или динамическим. Динамический параметр счета может представлять собой параметр счета, который имеет ограниченный срок существования и который после завершения срока действия больше не может быть использован для проведения транзакции, пока параметр счета не будет продлен, обновлен или восстановлен. Динамический параметр счета может быть продлен неоднократно во время срока существования счета. Полустатический параметр счета может представлять собой параметр счета, который имеет увеличенный срок существования, который больше, чем у динамического параметра счета, и может быть продлен не так часто, как динамический параметр счета, или вовсе не продлен во время срока существования счета.
[0034] «Ключ» может относиться к элементу информации, применяемому в криптографическом алгоритме для преобразования входных данных в другое представление. Криптографический алгоритм может представлять собой алгоритм шифрования, который преобразовывает оригинальные данные в альтернативное представление, или алгоритм дешифрования, который преобразовывает зашифрованную информацию обратно в оригинальные данные. Примеры криптографических алгоритмов могут включать тройной стандарт шифрования данных (TDES), стандарт шифрования данных (DES), улучшенный стандарт шифрования (AES) и т. д.
[0035] «Ключ ограниченного использования», или «LUK», может относиться к ключу, который может быть использован лишь в течение ограниченного времени или ограниченного числа транзакций и может нуждаться в обновлении или продлении при исчерпании ограниченного использования. LUK может быть связан с набором из одного или более порогов ограниченного использования, ограничивающим использование LUK, при этом, когда использование LUK исчерпало или превысило набор из одного или более порогов ограниченного использования, дальнейшие транзакции, проводимые с использованием этого LUK, будут отклонены даже в случае, если искомый счет все еще находится в хорошем положении. Набор из одного или более порогов ограниченного использования может включать по меньшей мере одну из ряда транзакций, для которых может быть использован LUK, срок существования, указывающий длительность времени, в течение которого LUK является действительным, и/или совокупную сумму транзакции, указывающую общую сумму транзакции, сложенную в течение одной или более транзакций, для которых LUK является действительным, или любое их сочетание.
[0036] «Порог ограниченного использования» может относиться к условию, которое ограничивает использование элемента информации. Порог ограниченного использования может быть превышен или исчерпан при удовлетворении основного условия. Например, порог ограниченного использования может включать время продолжительности существования, которое указывает отрезок времени, в течение которого элемент информации является действительным, и когда этот отрезок времени истекает, порог ограниченного использования превышается или исчерпывается, и элемент информации может становиться недействительным и больше не может быть использован. В качестве другого примера, порог ограниченного использования может включать количество раз, сколько может быть использован элемент информации, и когда элемент информации был использован это количество раз, порог ограниченного использования превышается или исчерпывается, и элемент информации может становиться недействительным и больше не может быть использован.
[0037] «Сеть обработки транзакций» может включать сеть, которая может обрабатывать и направлять сообщения с запросом транзакции. Иллюстративная сеть обработки транзакций может содержать подсистемы, сети и операции обработки данных, применяемые для поддержки и доставки услуг авторизации, услуг стоп-листов, услуг оценки транзакций и услуг клиринга и расчетов. Примером сети обработки транзакций может служить VisaNet™. Сети обработки транзакций, такие как VisaNet™, могут обрабатывать транзакции кредитных карт, транзакции дебетовых карт и другие типы коммерческих транзакций. VisaNet™, в частности, может содержать систему VIP (систему комплексных платежей Visa), которая обрабатывает запросы авторизации, и систему Base II, которая выполняет услуги клиринга и расчетов.
[0038] Далее будут описаны детали некоторых вариантов осуществления настоящего изобретения.
[0039] Фиг. 1 представляет собой схему программной рабочей среды в вычислительном устройстве 100 согласно некоторым вариантам осуществления. Вычислительное устройство 100 может представлять собой компьютер, устройство связи, портативное устройство связи в форме мобильного устройства, такого как мобильный телефон (например, смартфон, сотовый телефон и т. д.), планшетное устройство, портативный медиа-проигрыватель, устройство персональных цифровых помощников (PDA), носимое вычислительное устройство (например, часы), электронное устройство считывания, портативный переносной компьютер, нетбук, ультрабук и т. д., или в форме карты (например, смарт-карты) или брелока и т. д. В некоторых вариантах осуществления вычислительное устройство 100 также может быть частью транспортного средства (например, автомобиля). Вычислительное устройство 100 может содержать аппаратное обеспечение 104 устройства, такое как один или более процессоров, операционную систему 114 и приложение 112, исполняемое на вычислительном устройстве 100. В некоторых вариантах осуществления приложение 122 может быть исполнено в виртуальной машине 110.
[0040] Приложение 112 может содержать несколько программных уровней. Например, приложение 122 может содержать программный уровень 120 и программный уровень 130. Программные уровни 120 и 130 могут быть предоставлены одним и тем же разработчиком или быть предоставлены разными субъектами. В некоторых вариантах осуществления программные уровни 120 и 130 могут быть написаны на одном и том же или на разных языках программирования. Например, программный уровень 120 может быть написан на языке программирования высокого уровня, таком как Java, и может быть реализован в виде комплекта разработки программного обеспечения (SDK). Программный уровень 130 может представлять собой собственный уровень или собственную библиотеку и может быть написан на языке программирования низкого уровня, таком как C или C++. В некоторых вариантах осуществления программный уровень 130 может представлять собой собственную библиотеку, которая распределена среди компонентов, исполняемых в виртуальной машине 110. Программный уровень 120 может осуществлять связь с программным уровнем 130 для обмена данными и задействования функций, реализованных в программном уровне 130, и наоборот, посредством интерфейса между двумя программными уровнями. В некоторых вариантах осуществления интерфейс между программными уровнями 120 и 130 может представлять собой Java Native Interface (собственный интерфейс Java, JNI).
[0041] Также следует отметить, что в некоторых вариантах осуществления программные уровни 120 и 130 являются частью одного единого приложения 112. Таким образом, например, приложение 112, содержащее программные уровни 120 и 130, может быть загружено изначально из магазина приложений в виде единого пакета приложения и установлено на устройстве 100 связи как единое приложение. Приложение 112, содержащее программные уровни 120 и 130, может быть представлено в виде одного значка на интерфейсе пользователя устройства 100 связи, и приложение 112, содержащее программные уровни 120 и 130, может быть обработано операционной системой 114 как одно приложение.
[0042] Согласно некоторым вариантам осуществления приложение 112 может представлять собой приложение, которое использует или обрабатывает чувствительную информацию. Например, приложение 112 может представлять собой приложение для транзакций, которое используют для проведения транзакций с удостоверяющими данными счета пользователя. Вследствие модульной природы приложения 112, без надлежащих мер предосторожности интерфейс между программными уровнями 120 и 130 может быть восприимчив к перехвату посредником или неавторизованному задействованию функций, реализованных в программных уровнях. Например, мошенническое приложение 152 (например, неавторизованный код, вредоносное программное обеспечение и т. д.) может наблюдать за функциями, вызываемыми программными уровнями, и параметрами, передаваемыми между программными уровнями (что указано каналом M передачи данных). Если вызовы функций и параметры отправляют в явном виде, мошенническое приложение 152 может иметь возможность получить чувствительную информацию, такую как удостоверяющие данные счета пользователя, из наблюдаемых данных. В качестве другого примера, если программные уровни 120 и 130 не требуют надлежащей аутентификации вызывающей стороны, мошенническое приложение 152 может прямо задействовать функции, реализованные на программном уровне 130, для получения чувствительных данных, доступных для программного уровня 130 (что указано каналом N передачи данных).
[0043] Фиг. 2 представляет собой блок-схему способа 200, который может быть использован для взаимной аутентификации программных уровней (например, программных уровней 120 и 130), чтобы устранять эти уязвимости, согласно некоторым вариантам осуществления. Следует понимать, что способы, описанные в данном документе, могут быть применены к любому программному приложению, которое имеет несколько программных уровней, и что в некоторых вариантах осуществления программное приложение может иметь боле двух программных уровней. На этапе 202 способ 200 может генерировать связывающую информацию, которая связывает первый программный уровень со вторым программным уровнем во время первоначальной инициализации программного приложения, исполняемого на вычислительном устройстве. В некоторых вариантах осуществления этап 202 может быть выполнен только один раз в течение срока существования программного приложения (например, когда программное приложение первоначально устанавливают на вычислительном устройстве или когда программное приложение исполняют или используют в первый раз). Целью этапа 202 является связывание вместе программных уровней посредством обмена и безопасного сохранения некоторых секретных данных, которые могут быть использованы позднее во время выполнения для аутентификации программными уровнями друг друга. Этап 202 в идеальном случае представляет собой первые строки кода программного приложения. Связывание, установленное на этапе 202, позволяет доверять последующим вызовам функций между программными уровнями как таким, которые задействует аутентифицированная сторона. В некоторых вариантах осуществления наличие связывающей информации на вычислительном устройстве может определять, необходимо ли выполнение этапа 202. Отсутствие связывающей информации на вычислительном устройстве может указывать, что программное приложение используется впервые, и поэтому следует выполнить этап 202.
[0044] На этапе 204, во время исполнения программного приложения, способ 200 может выполнять алгоритм формирования ключа для формирования ключа шифрования данных на основе связывающей информации, сгенерированной на этапе 202. Ключ шифрования данных может также быть дополнительно основан на динамической временной информации. Динамическая временная информация может представлять, например, количество времени, прошедшего с момента, когда этап 202 был выполнен при первоначальной инициализации, до момента, когда впоследствии выполняют этап 204. Этап 204 можно выполнять каждый раз, когда программное приложение запускается или используется на вычислительном устройстве (например, когда вычислительное устройство включается, когда пользователь запускает программное приложение или когда пользователь использует программное приложение для выполнения задачи и т. д.). Этап 204 может обеспечивать взаимную аутентификацию программных уровней, поскольку только авторизованные программные уровни будут обладать знанием связывающей информации, сгенерированной на этапе 202. Ключ шифрования данных, сформированный на этапе 204, может затем быть использован при последующей связи между программными уровнями для шифрования вызовов функций и данных на программные уровни или от них с обеспечением конфиденциальности данных. Следует отметить, что в некоторых вариантах осуществления, поскольку в способ формирования ключа входит динамическая временная информация, при каждом выполнении этапа 204 может быть сгенерирован разный ключ шифрования данных, и поэтому ключ шифрования данных является динамическим по природе и изменяется со временем по мере использования приложения для предотвращения взлома ключа.
[0045] На этапе 206 способ 200 шифрует данные, передаваемые между первым программным уровнем и вторым программным уровнем, с использованием ключа шифрования данных, сформированного на этапе 204. Принимающий программный уровень может расшифровывать зашифрованные данные с использованием своего собственного ключа шифрования данных. Следует отметить, что в некоторых вариантах осуществления сам канал связи между программными уровнями не является зашифрованным. Скорее в некоторых вариантах осуществления могут быть зашифрованы параметры входных данных и любые ответные данные, которые требуют конфиденциальности. Этапы 204 и 206 могут быть повторены каждый раз, когда программное приложение запускается на вычислительном устройстве.
[0046] В некоторых вариантах осуществления могут быть обеспечены дополнительные меры предосторожности для защиты программных уровней от мошеннических приложений и неавторизованного доступа. Например, для скрытия исходного кода могут быть использованы способы запутывания кода. Меры предосторожности во время выполнения могут включать определение того, вызывается ли программный уровень в сеансе отладки или работает ли программный уровень с полномочиями администратора. Обнаружение этих сценариев может указывать на потенциальную брешь, и затронутому программному уровню может быть указано прекратить связь с другими программными уровнями или отклонять аутентификацию с другими программными уровнями.
[0047] Фиг. 3 представляет собой функциональную схему прохождения информации обзора иллюстративного способа установления взаимной аутентификации между первым программным уровнем (например, программным уровнем-A 120) и вторым программным уровнем (например, программным уровнем-B 130) согласно некоторым вариантам осуществления. Способ может включать связывающий алгоритм, который выполняется во время первоначальной инициализации приложения, и алгоритм формирования ключа, который выполняется во время выполнения приложения. Для легкости объяснения этапы, выполняемые в связывающем алгоритме во время первоначальной инициализации, обозначены как «I-Xn», где X обозначает программный уровень, а n - этап, выполняемый этим программным уровнем. Этапы, выполняемые в алгоритме формирования ключа во время выполнения, обозначены как «S-Xn», где X обозначает программный уровень, а n - этап, выполняемый этим программным уровнем. В некоторых вариантах осуществления программный уровень-A 120 может представлять собой SDK (например, написанный на Java), а программный уровень-B может представлять собой собственную библиотеку (например, написанную на C или C++), или наоборот. В некоторых вариантах осуществления два программных уровня могут быть написаны на одном и том же языке.
[0048] Процесс взаимной аутентификации может быть инициирован программным уровнем, который выполняется первым, когда приложение запускается (например, программным уровнем-A 120). В некоторых вариантах осуществления инициирующий программный уровень не обязан быть программным уровнем, который выполняется первым, когда приложение запускается. Если приложение выполняет особо важные для безопасности функции, особо важные для безопасности функции могут быть реализованы на программном уровне, отличном от программного уровня, который инициирует процесс взаимной аутентификации (например, программном уровне-B 130). В некоторых вариантах осуществления особо важные для безопасности функции могут быть реализованы на программном уровне, который инициирует процесс взаимной аутентификации.
[0049] На этапе I-A1 программный уровень-A 120 начинает свое выполнение связывающего алгоритма и генерирует случайное число RN1, которое используют в качестве первого nonce. RN1, например, может иметь битовую длину, составляющую 256 бит. На этапе IA-2 программный уровень-A 120 отправляет RN1 на программный уровень-B 130. RN1 служит в качестве секретного ключа, сгенерированного программным уровнем-A 120 и совместно используемого с программным уровнем-B 130 для связывания двух программных уровней. В некоторых вариантах осуществления RN1 не сохраняется программным уровнем-A 120.
[0050] На этапе I-B1 программный уровень-B 130 генерирует свое собственное случайное число (RN2), которое используют в качестве второго nonce. В некоторых вариантах осуществления программный уровень-B 130 может генерировать RN2 в ответ на прием RN1 с программного уровня-A 120. RN2, например, может иметь битовую длину, составляющую 256 бит. RN2 служит в качестве секретного ключа, сгенерированного программным уровнем-B 130 и совместно используемого с программным уровнем-A 120 для связывания двух программных уровней. На этапе I-B2 программный уровень-B 130 определяет информацию TM о времени инициализации, которая указывает текущее время, в которое выполняется связывающий алгоритм. В некоторых вариантах осуществления информация TM о времени инициализации может представлять собой метку времени или численное значение, полученное из метки времени, например, путем сочетания метки времени с RN1 и/или RN2 с использованием одной или более подходящих вычислительных операций (например, TM=метка времени+(RN1 xor RN2)). На этапе I-B3 программный уровень-B 130 сохраняет RN1 с первого программного уровня-A 120 и информацию TM о времени инициализации как связывающую информацию. На этапе I-B4 программный уровень-B 130 отправляет RN2 и информацию TM о времени инициализации на программный уровень-A 120. В некоторых вариантах осуществления RN2 не сохраняется программным уровнем-B 130.
[0051] На этапе I-A3 программный уровень-A 120 сохраняет RN2 и TM, принятые с программного уровня-B 130, в качестве связывающей информации. Когда оба программных уровня сохранили свою соответствующую связывающую информацию, связывающий алгоритм может быть завершен. Программный уровень-A 120 теперь имеет RN2 и TM с программного уровня-B 130, а программный уровень-B 130 теперь имеет RN1 с программного уровня-B 130. Таким образом, два программных уровня обменялись совместно используемыми секретными ключами для связывания двух программных уровней друг с другом. Совместно используемые секретные ключи могут быть использованы во время исполнения, чтобы формировать ключ шифрования данных для шифрования и расшифровки данных, передаваемых между двумя программными уровнями. Таким образом, может быть обеспечена взаимная аутентификация программных уровней, поскольку только авторизованные программные уровни будут обладать знанием правильной связывающей информации для генерирования действительного ключа шифрования данных.
[0052] Во время исполнения приложения на этапе S-A1 программный уровень-A 120 начинает алгоритм формирования ключа путем извлечения RN2 и TM, которые были ранее сохранены программным уровнем-A 120 в качестве связывающей информации во время инициализации. На этапе S-A2 программный уровень-A 120 определяет динамическую временную информацию DTM_A, которая предоставляет указание времени, прошедшего с момента выполнения связывающего алгоритма (как указано TM) до текущего момента, в который выполняется алгоритм формирования ключа. Например, DTM_A может представлять собой разницу между текущим временем и TM. Эта динамическая временная информация DTM_A может быть конкатенирована со связывающей информацией для генерирования ключа шифрования данных на последующих этапах. На этапе S-A3 программный уровень-A 120 отправляет RN2 на программный уровень-B 130.
[0053] На этапе S-B1 программный уровень-B 130 извлекает RN1 и TM, которые были ранее сохранены программным уровнем-B 130 в качестве связывающей информации во время инициализации. На этапе S-B2 программный уровень-B 130 определяет динамическую временную информацию DTM_B. Например, DTM_B может представлять собой разницу между текущим временем и TM. На этапе S-B3 программный уровень-B 130 формирует свой ключ DEK шифрования данных на основе первого nonce RN1, второго nonce RN2, принятого с программного уровня-A 120, и динамической временной информации DTM_B. DEK используется программным уровнем-B 130 для шифрования и расшифровки последующих данных, передаваемых между двумя программными уровнями в текущем сеансе времени выполнения. На этапе S-B4 программный уровень-B 130 отправляет RN1 на программный уровень-A 120.
[0054] На этапе S-A4 программный уровень-A 120 формирует свой ключ DEK шифрования данных на основе первого nonce RN1, принятого с программного уровня-B 130, второго nonce RN2 и динамической временной информации DTM_A. DEK используется программным уровнем-A 120 для шифрования и расшифровки последующих данных, передаваемых между двумя программными уровнями в текущем сеансе времени выполнения.
[0055] Когда оба программных уровня сформировали свои соответствующие ключи шифрования данных, программные уровни могут начинать передавать данные друг другу. Данные, обмен которыми производится между программными уровнями, могут быть зашифрованы и расшифрованы с использованием их соответствующих ключей шифрования данных. Два программных уровня теперь взаимно аутентифицированы, поскольку неавторизованный программный компонент не будет иметь возможности сформировать правильный ключ шифрования данных для шифрования и расшифровки данных, обмен которыми производится.
I. СПОСОБЫ ПЕРВОГО ПРОГРАММНОГО УРОВНЯ
[0056] Фиг. 4-5 представляют собой блок-схемы способов 400 и 500, соответственно, которые могут быть выполнены первым программным уровнем, исполняемым на вычислительном устройстве, для обеспечения взаимной аутентификации и безопасной передачи данных между первым программным уровнем и вторым программным уровнем, согласно некоторым вариантам осуществления. Способ 400 реализует связывающий алгоритм, который может быть выполнен первым программным уровнем, и может быть выполнен как часть этапа 202 в способе 200 во время первоначальной инициализации. Способ 500 реализует алгоритм формирования ключа, который может быть выполнен первым программным уровнем, и может быть выполнен как часть этапа 204 в способе 200 во время последующих сеансов времени выполнения.
[0057] Обращаясь к фиг. 4, на этапе 402 во время первоначальной инициализации программного приложения первый программный уровень генерирует первое nonce и шифрует первое nonce. В некоторых вариантах осуществления первое nonce, генерируемое первым программным уровнем, может представлять собой случайное или псевдослучайное число. Первое nonce может быть зашифровано с использованием связывающего ключа, сформированного из связанного с вычислительным устройством идентификатора вычислительного устройства (например, международного идентификатора оборудования мобильной станции (IMEI), серийного номера устройства и т. д.), связанного с эмитентом приложения идентификатора эмитента или любого их сочетания. На этапе 404 зашифрованное первое nonce отправляют на второй программный уровень. Это первое nonce служит в качестве секретного ключа от первого программного уровня, совместно используемого со вторым программным уровнем.
[0058] На этапе 406 первый программный уровень принимает зашифрованное второе nonce и зашифрованную информацию о времени инициализации со второго программного уровня. Второе nonce может представлять собой случайное или псевдослучайное число, генерируемое вторым программным уровнем, и служит в качестве секретного ключа, предоставленного вторым программным уровнем. Информация о времени инициализации может представлять собой информацию, указывающую текущее время, в которое выполняется связывающий алгоритм. На этапе 408 зашифрованное второе nonce и зашифрованная информация о времени инициализации расшифровываются первым программным уровнем для получения второго nonce и информации о времени инициализации в их незашифрованной форме.
[0059] На этапе 410 второе nonce и информацию о времени инициализации повторно шифруют для генерирования повторно зашифрованного второго nonce и повторно зашифрованной информации о времени инициализации. На этапе 412 первый программный уровень сохраняет повторно зашифрованное второе случайное значение и повторно зашифрованную информацию о времени инициализации в качестве связывающей информации, например, во внешнем файле или аппаратном модуле безопасности (HSM). Ключ шифрования, используемый первым программным уровнем для повторного шифрования второго nonce и информации о времени инициализации, может отличаться от ключа, который был использован вторым программным уровнем. Например, ключ шифрования, используемый первым программным уровнем для повторного шифрования второго nonce и информации о времени инициализации, может быть связывающим ключом, сформированным путем сочетания первого nonce и одного или более идентификаторов вычислительных устройств, связанных с вычислительным устройством. Это позволяет сохранять второе nonce и информацию о времени инициализации в форме, отличающейся от той, которая была отправлена со второго программного уровня. Когда программное приложение запускается в последующих сеансах времени выполнения, связывающая информация, сохраненная первым программным уровнем, может быть извлечена и предоставлена на второй программный уровень для аутентификации первого программного уровня на втором программном уровне. Связывающая информация может также быть использована в алгоритме формирования ключа, таком как способ 500, для формирования ключа шифрования данных в каждом сеансе времени выполнения для шифрования данных, передаваемых между двумя программными уровнями.
[0060] Обращаясь к фиг. 5, способ 500 может быть выполнен первым программным уровнем во время каждого последующего сеанса времени выполнения программного приложения для динамического формирования ключа шифрования данных для каждого сеанса. На этапе 502 первый программный уровень извлекает связывающую информацию, сохраненную первым программным уровнем во время выполнения связывающего алгоритма, описанного выше, при инициализации приложения. Например, связывающая информация может быть извлечена из внешнего файла или HSM. На этапе 504 связывающую информацию расшифровывают для получения второго nonce и информации о времени инициализации. На этапе 506 динамическую временную информацию определяют на основании информации о времени инициализации. Например, динамическая временная информация может указывать время, прошедшее с момента первоначальной инициализации программного приложения. Другими словами, динамическая временная информация может быть представлением количества времени, прошедшего между выполнением способа 400 и выполнением способа 500.
[0061] На этапе 508 первый программный уровень принимает зашифрованное первое nonce со второго программного уровня. На этапе 510 зашифрованное первое nonce расшифровывают для получения первого nonce в незашифрованной форме. На этапе 512 первый программный уровень формирует ключ шифрования данных на основе первого nonce, второго nonce и динамической временной информации. В некоторых вариантах осуществления ключ шифрования данных может быть сформирован путем сочетания первого nonce и второго nonce для генерирования комбинированного nonce, конкатенации комбинированного nonce с динамической временной информацией и хеширования результата конкатенации. Например, ключ шифрования данных для первого программного уровня может быть сформирован путем применения хеша к конкатенации: (1) результата применения логической операции XOR к первому nonce и второму nonce; и (2) динамической временной информации.
[0062] На этапе 514 первый программный уровень зашифровывает данные, отправляемые с первого программного уровня на второй программный уровень, с использованием сформированного ключа шифрования данных, так что данные, передаваемые между первым и вторым программными уровнями во время выполнения, являются зашифрованными. Первое nonce, принятое со второго программного уровня (которое изначально было сгенерировано первым программным уровнем и предоставлено на второй программный уровень во время инициализации), может быть использовано первым программным уровнем для аутентификации второго программного уровня. Если первое nonce, принятое со второго программного уровня, является неверным, то ключ шифрования данных, сформированный частично на основе этого первого nonce, принятого со второго программного уровня, будет неправильным ключом, и первый программный уровень не будет иметь возможности правильно расшифровать сообщения со второго программного уровня и не будет иметь возможности отвечать второму программному уровню. Таким образом, этот механизм формирования ключа шифрования данных с использованием связывающей информации, сгенерированной при инициализации, может обеспечить неявную аутентификацию программных уровней.
II. СПОСОБЫ ВТОРОГО ПРОГРАММНОГО УРОВНЯ
[0063] Фиг. 6-7 представляют собой блок-схемы способов 600 и 700, соответственно, которые могут быть выполнены вторым программным уровнем, исполняемым на вычислительном устройстве, для обеспечения взаимной аутентификации и безопасной передачи данных между первым программным уровнем и вторым программным уровнем, согласно некоторым вариантам осуществления. Способ 600 реализует связывающий алгоритм, который может быть выполнен вторым программным уровнем, и может быть выполнен как часть этапа 202 в способе 200 во время первоначальной инициализации. Способ 700 реализует алгоритм формирования ключа, который может быть выполнен вторым программным уровнем, и может быть выполнен как часть этапа 204 в способе 200 во время последующих сеансов времени выполнения.
[0064] Обращаясь к фиг. 6, на этапе 602, во время первоначальной инициализации программного приложения, второй программный уровень принимает зашифрованное первое nonce с первого программного уровня для инициирования связывающего алгоритма на втором программном уровне. Первое nonce может представлять собой случайное или псевдослучайное число, генерируемое первым программным уровнем, и служит в качестве секретного ключа, предоставленного первым программным уровнем. На этапе 604 зашифрованное первое nonce расшифровывают для получения первого nonce в незашифрованной форме. На этапе 606 первое nonce повторно зашифровывают для генерирования повторно зашифрованного первого nonce. На этапе 608 информацию о времени инициализации зашифровывают на втором программном уровне для генерирования первой зашифрованной информации о времени инициализации. Информация о времени инициализации может представлять собой информацию, указывающую текущее время, в которое выполняется связывающий алгоритм.
[0065] На этапе 610 повторно зашифрованное первое nonce и первую зашифрованную информацию о времени инициализации сохраняют как связывающую информацию, например, во внешнем файле или HSM. Ключ шифрования, используемый вторым программным уровнем для повторного шифрования первого nonce и информации о времени инициализации, может отличаться от ключа, который был использован первым программным уровнем. Например, ключ шифрования, используемый вторым программным уровнем для повторного шифрования первого nonce и информации о времени инициализации, может быть связывающим ключом, сформированным из сочетания второго nonce и одного или более идентификаторов вычислительных устройств, связанных с вычислительным устройством. Это позволяет сохранять первое nonce и информацию о времени инициализации в форме, отличающейся от той, которая была отправлена с первого программного уровня. Когда программное приложение запускается в последующих сеансах времени выполнения, эта связывающая информация, сохраненная вторым программным уровнем, может быть извлечена и предоставлена на первый программный уровень для аутентификации второго программного уровня на первом программном уровне. Связывающая информация может также быть использована в алгоритме формирования ключа, таком как способ 700, для формирования ключа шифрования данных в каждом сеансе времени выполнения для шифрования данных, передаваемых между двумя программными уровнями.
[0066] На этапе 612 второй программный уровень генерирует второе nonce и шифрует второе nonce. В некоторых вариантах осуществления второе nonce, генерируемое вторым программным уровнем, может представлять собой случайное или псевдослучайное число. Второе nonce может быть зашифровано с использованием связывающего ключа, сформированного из связанного с вычислительным устройством идентификатора вычислительного устройства (например, IMEI, серийного номера устройства и т. д.), связанного с эмитентом приложения идентификатора эмитента, первого nonce, которое было сгенерировано первым программным уровнем и принято с него, или любого их сочетания. Это второе nonce служит в качестве секретного ключа от второго программного уровня, совместно используемого с первым программным уровнем. На этапе 614 информацию о времени инициализации зашифровывают для генерирования второй зашифрованной информации о времени инициализации. Информация о времени инициализации может быть зашифрована с использованием того же связывающего ключа, который используется для шифрования второго nonce. На этапе 616 зашифрованное второе nonce и вторую зашифрованную информацию о времени инициализации отправляют на первый программный уровень для обеспечения первого программного уровня связывающей информацией, сгенерированной вторым программным уровнем.
[0067] Обращаясь к фиг. 7, способ 700 может быть выполнен вторым программным уровнем во время каждого последующего сеанса времени выполнения программного приложения для динамического формирования ключа шифрования данных для каждого сеанса. На этапе 702 второй программный уровень извлекает связывающую информацию, сохраненную вторым программным уровнем во время инициализации приложения. Связывающая информация может быть извлечена, например, из внешнего файла или HSM. На этапе 704 связывающую информацию расшифровывают для получения первого nonce и информации о времени инициализации. На этапе 706 динамическую временную информацию определяют на основании информации о времени инициализации. Например, динамическая временная информация может указывать время, прошедшее с момента первоначальной инициализации программного приложения. Другими словами, динамическая временная информация может быть представлением количества времени, прошедшего между выполнением способа 600 и выполнением способа 700.
[0068] На этапе 708 второй программный уровень принимает зашифрованное второе nonce с первого программного уровня. На этапе 710 зашифрованное второе nonce расшифровывают для получения второго nonce в его незашифрованной форме. На этапе 712 второй программный уровень формирует ключ шифрования данных на основе первого nonce, второго nonce и динамической временной информации. В некоторых вариантах осуществления ключ шифрования данных может быть сформирован путем сочетания первого nonce и второго nonce для генерирования комбинированного nonce, конкатенации комбинированного nonce с динамической временной информацией и хеширования результата конкатенации. Например, ключ шифрования данных для второго программного уровня может быть сформирован путем применения хеша к конкатенации: (1) результата применения логической операции XOR к первому nonce и второму nonce; и (2) динамической временной информации.
[0069] На этапе 714 второй программный уровень зашифровывает данные, отправляемые со второго программного уровня на первый программный уровень, с использованием сформированного ключа шифрования данных, так что данные, передаваемые между первым и вторым программными уровнями во время выполнения, являются зашифрованными. Второе nonce, принятое с первого программного уровня (которое изначально было сгенерировано вторым программным уровнем и предоставлено на первый программный уровень во время инициализации), может быть использовано вторым программным уровнем для аутентификации первого программного уровня. Если второе nonce, принятое с первого программного уровня, является неверным, то ключ шифрования данных, сформированный частично на основе этого второго nonce, принятого с первого программного уровня, будет неправильным ключом, и второй программный уровень не будет иметь возможности правильно расшифровать сообщения с первого программного уровня и не будет иметь возможности отвечать первому программному уровню. Таким образом, этот механизм формирования ключа шифрования данных с использованием связывающей информации, сгенерированной при инициализации, может обеспечить неявную аутентификацию программных уровней.
III. ИЛЛЮСТРАТИВНОЕ ОСУЩЕСТВЛЕНИЕ СВЯЗЫВАЮЩЕГО АЛГОРИТМА
[0070] Фиг. 8 представляет собой функциональную схему прохождения информации одного иллюстративного осуществления связывающего алгоритма для связывания первого программного уровня (например, программного уровня-A 120) со вторым программным уровнем (например, программным уровнем-B 130) во время первоначальной инициализации программного приложения согласно некоторым вариантам осуществления. В некоторых вариантах осуществления программный уровень-A 120 может представлять собой SDK (например, написанный на Java), а программный уровень-B может представлять собой собственную библиотеку (например, написанную на C или C++), или наоборот. В некоторых вариантах осуществления два программных уровня могут быть написаны на одном и том же языке. Для легкости объяснения этапы, выполняемые в связывающем алгоритме во время первоначальной инициализации, обозначены как «I-Xn», где X обозначает программный уровень, а n - этап, выполняемый этим программным уровнем. Различные ключи шифрования (называемые связывающими ключами) формируют и используют в связывающем алгоритме. Связывающие ключи, используемые в связывающем алгоритме, обозначены как BKn.
[0071] На этапе I-A1 программный уровень-A 120 генерирует случайное число RN1, которое используют в качестве первого nonce. RN1, например, может иметь битовую длину, составляющую 256 бит. На этапе IA-2 первый связывающий ключ BK1 формируют из информации о вычислительном устройстве и/или программном приложении, известной программным уровням. Например, BK1 может быть сформирован путем применения криптографической функции (Func) к идентификатору устройства и идентификатору эмитента (IssuerID). В вариантах осуществления, в которых вычислительное устройство представляет собой мобильный телефон, идентификатор устройства может представлять собой международный идентификатор оборудования мобильной станции (IMEI), связанный с мобильным телефоном. IssuerID может представлять собой идентификатор поставщика программного приложения. В вариантах осуществления, в которых программное приложение представляет собой приложение для транзакций, IssuerID может представлять собой неизменяемый идентификатор, уникальным образом идентифицирующий того эмитента счета, удостоверяющие данные которого используются приложением для транзакций для проведения транзакций. Следует отметить, что IssuerID не является тем же, что и метка версии кода (или version ID), поскольку Version ID является изменяемым и изменяется с версиями программного обеспечения.
BK1
BK1
BK1
BK1
[0072] На этапе I-A3 программный уровень-A 120 шифрует RN1 посредством BK1 с получением RN1_enc. Используемая функция шифрования может представлять собой AES (улучшенный стандарт шифрования) или другой подходящий алгоритм шифрования. На этапе I-A4 программный уровень-A 120 вызывает связывающую функцию в программном уровне-B 130 с RN1_enc в качестве параметра и передает RN1_enc на программный уровень-B 130. RN1 служит в качестве секретного ключа, сгенерированного программным уровнем-A 120 и совместно используемого с программным уровнем-B 130 для связывания двух программных уровней. Следует отметить, что RN1_enc не отправляют в явном виде, а отправляют в зашифрованной форме для предотвращения получения RN1 посредником.
BK1
BK2
[0073] На этапе I-B1 программный уровень-B 130 начинает свое выполнение связывающей функции и формирует BK1 с использованием той же информации, которая была использована программным уровнем-A 120 (например, IMEI и IssuerID). На этапе I-B2 RN1_enc, принятое с программного уровня-A 120, расшифровывают посредством BK1 для получения RN1. На этапе I-B3 программный уровень-B 130 генерирует свое собственное случайное число (RN2), которое используют в качестве второго nonce. RN2, например, может иметь битовую длину, составляющую 256 бит. На этапе I-B4 программный уровень-B 130 формирует второй связывающий ключ BK2 путем применения Func к RN2 и информации о вычислительном устройстве. Например, информация о вычислительном устройстве может представлять собой серийный номер (Serial#) и IMEI, связанные с вычислительным устройством. На этапе I-B5 RN1 шифруют посредством BK2 с использованием AES или других подходящих алгоритмов шифрования с получением RN1_enc.
BK3
BK2
BK3
[0074] На этапе I-B6 программный уровень-B 130 определяет информацию TM о времени инициализации, которая указывает текущее время, в которое выполняется связывающий алгоритм. На этапе I-B7 программный уровень-B 130 формирует третий связывающий ключ BK3 на основе информации о вычислительном устройстве и/или программном приложении и TM. Например, BK3 может быть сформирован путем применения Func к серийному номеру, IMEI, IssuerID и хешу TM. На этапе I-B8 TM шифруют посредством BK3 с использованием AES или других подходящих алгоритмов шифрования с получением TM_enc. На этапе I-B9 программный уровень-B 130 сохраняет RN1_enc и TM_enc в качестве связывающей информации во внешнем файле или HSM. Следует отметить, что и RN1, и TM сохраняют в зашифрованной форме для защиты фактических значений связывающей информации.
BK4
BK4
BK4
[0075] На этапе I-B10 программный уровень-B 130 формирует четвертый связывающий ключ BK4 путем применения Func к RN1 и информации о вычислительном устройстве, такой как серийный номер, связанный с вычислительным устройством. На этапе I-B11 RN2 и TM шифруют посредством BK4 с использованием AES или других подходящих алгоритмов шифрования с получением RN2_TM_enc. На этапе I-B12 программный уровень-B 130 возвращает значение RN2_TM_enc на программный уровень-A 120. RN2 служит в качестве секретного ключа, сгенерированного программным уровнем-B 130 и совместно используемого с программным уровнем-A 120 для связывания двух программных уровней. Следует отметить, что RN2_TM_enc не отправляют в явном виде, а отправляют в зашифрованной форме для предотвращения получения RN2 и TM посредником. На этапе I-B13 при завершении связывающего алгоритма для программного уровня-B 130 незашифрованные формы RN1, RN2 и TM уничтожают или удаляют из памяти. Связывающие ключи BK1, BK2, BK3 и BK4, используемые программным уровнем-B 130, также уничтожают или удаляют из памяти.
BK4
BK4
BK5
BK5
[0076] После приема RN2_TM_enc в качестве ответных данных из вызова связывающей функции в программном уровне-B 130, на этапе I-A5 программный уровень-A 120 формирует BK4 с использованием той же информации, которую использовал программный уровень-B 130. Например, BK4 может быть сформирован путем применения Func к RN1 и серийному номеру. На этапе I-A6 программный уровень-A 120 расшифровывает RN2_TM_enc посредством BK4 для получения RN2 и TM в их незашифрованной форме. На этапе I-A7 программный уровень-A 120 формирует пятый связывающий ключ BK5 на основе информации о вычислительном устройстве и/или программном приложении и необязательного пользовательского ввода (например, PIN или кода доступа), если имеется. Например, BK5 может быть сформирован путем применения Func к IMEI, серийному номеру и IssuerID и дополнительного применения Func к тому результату и пользовательскому вводу (если имеется). На этапе I-A8 программный уровень-A 120 шифрует RN2 и TM посредством BK5 с использованием AES или других подходящих алгоритмов шифрования с получением RN2_TM_enc. На этапе I-A9 программный уровень-A 120 сохраняет RN2_TM_encв качестве связывающей информации во внешнем файле или HSM. Следует отметить, что RN2 и TM сохраняют в зашифрованной форме для защиты фактических значений связывающей информации. На этапе I-A10 при завершении связывающего алгоритма для программного уровня-A 120 незашифрованные формы RN1, RN2 и TM уничтожают или удаляют из памяти. Связывающие ключи BK1, BK4 и BK5, используемые программным уровнем-A 120, также уничтожают или удаляют из памяти.
[0077] Обращаясь снова к генерированию BK5, в некоторых вариантах осуществления, если возможности взаимодействия с пользователем программного приложения могут позволить запрос введения пользовательского ввода (например, PIN или кода доступа) при использовании программного приложения, пользовательский ввод, который не хранится на устройстве статически, может быть включен в алгоритмы для увеличения уровня гарантии безопасности. Включение пользовательского ввода, знанием которого будет обладать только уполномоченный пользователь, может предотвратить выполнение программных уровней неуполномоченными пользователями. В некоторых вариантах осуществления включение пользовательского ввода может быть опущено из алгоритмов для улучшения впечатления пользователя (чтобы избежать необходимости пользователю вручную вводить PIN или код доступа). В таких вариантах осуществления BK5 может быть сгенерирован без пользовательского ввода, и способы, описанные в данном документе, по-прежнему могут обеспечивать достаточный уровень гарантии безопасности, поскольку алгоритмы включают использование динамической временной информации (как более подробно описано ниже), которая также не хранится статически на устройстве.
IV. ИЛЛЮСТРАТИВНОЕ ОСУЩЕСТВЛЕНИЕ АЛГОРИТМА ФОРМИРОВАНИЯ КЛЮЧА
[0078] Фиг. 9 представляет собой схему последовательности действий одного иллюстративного осуществления алгоритма формирования ключа для генерирования ключей шифрования данных первым программным уровнем (например, программным уровнем-A 120) и вторым программным уровнем (например, программным уровнем-B 130) во время сеансов времени выполнения программного приложения согласно некоторым вариантам осуществления. Способ, представленный на фиг. 9, может быть выполнен каждый раз, когда программное приложение запускается или используется после первоначальной инициализации. Для легкости объяснения этапы, выполняемые в алгоритме формирования ключа во время сеансов времени выполнения, обозначены как «S-Xn», где X обозначает программный уровень, а n - этап, выполняемый этим программным уровнем. Различные ключи шифрования (называемые ключами сеанса) формируют и используют в алгоритме формирования ключа. Ключи сеанса, используемые в алгоритме формирования ключа, обозначают как SKn.
BK5
BK5
[0079] На этапе S-A1 программный уровень-A 120 извлекает RN2_TM_enc из внешнего файла или HSM, которое было сохранено программным уровнем-A 120 в качестве связывающей информации из первоначальной инициализации. На этапе S-A2 программный уровень-A 120 формирует первый ключ SK1 сеанса, который является эквивалентом BK5. Например, SK1 может быть сформирован путем применения Func к IMEI, серийному номеру и IssuerID и дополнительного применения Func к тому результату и пользовательскому вводу (если имеется). На этапе S-A3 RN2_TM_enc расшифровывают посредством SK1 для получения RN2 и TM. На этапе S-A4 программный уровень-A 120 определяет динамическую временную информацию DTM_A, которая предоставляет указание времени, прошедшего с момента выполнения связывающего алгоритма (как указано TM) до текущего момента, в который выполняется алгоритм формирования ключа. Например, DTM_A может быть вычислена путем хеширования абсолютного значения разности между текущим временем и TM. Эта динамическая временная информация DTM_A может быть конкатенирована со связывающей информацией для генерирования ключа шифрования данных на последующих этапах.
SK2
SK2
[0080] На этапе S-A5 программный уровень-A 120 формирует второй ключ SK2 сеанса на основе информации о вычислительном устройстве и/или программном приложении и DTM_A. Например, SK2 может быть сформирован путем применения Func к IMEI, IssuerID и DTM_A. На этапе S-A6 RN2 шифруют посредством SK2 с использованием AES или других подходящих алгоритмов шифрования с получением RN2_enc. На этапе S-A7 программный уровень-A 120 задействует функцию формирования ключа в программном уровне-B 130 с параметрами RN2_enc и хешем TM.
BK2
BK3
BK3
[0081] На этапе S-B1 программный уровень-B 130 начинает свое выполнение функции формирования ключа и извлекает из внешнего файла или HSM RN1_enc и TM_enc, которые были ранее сохранены программным уровнем-B 130 в качестве связывающей информации из связывающего алгоритма во время первоначальной инициализации. На этапе S-B2 программный уровень-B 130 формирует третий ключ SK3 сеанса, который является эквивалентом BK3. Например, SK3 может быть сформирован путем применения Func к серийному номеру, IMEI, IssuerID и хешу TM. Хеш TM является одним из параметров, принятых с программного уровня-A 120. На этапе S-B3 TM_enc расшифровывают посредством SK3 для получения TM в незашифрованной форме. На этапе S-B4 программный уровень-B 130 определяет динамическую временную информацию DTM_B, которая предоставляет указание времени, прошедшего с момента выполнения связывающего алгоритма (как указано TM) до текущего момента, в который выполняется алгоритм формирования ключа. Например, DTM_B может быть вычислена путем хеширования абсолютного значения разности между текущим временем и TM. Эта динамическая временная информация DTM_B может быть конкатенирована со связывающей информацией для генерирования ключа шифрования данных на последующих этапах. В некоторых вариантах осуществления, чтобы гарантировать, что DTM_A и DTM_B имеют одно и то же значение, текущее время, используемое при определении динамической временной информации, выражают в минутах (в противоположность меньшим единицам измерения времени, таким как секунды или миллисекунды).
SK2
BK2
BK2
[0082] На этапе S-B5 программный уровень-B 130 формирует четвертый ключ SK4 сеанса, который является эквивалентом SK2. Например, SK4 может быть сформирован путем применения Func к IMEI, IssuerID и DTM_B, как определено программным уровнем-B 130. На этапе S-B6 RN2_enc, принятое с программного уровня-A 120, расшифровывают с использованием SK4 для получения RN2 в его незашифрованной форме. На этапе S-B7 программный уровень-B 130 формирует пятый ключ SK5 сеанса, который является эквивалентом BK2, с использованием незашифрованного RN2. Например, SK5 может быть сформирован путем применения Func к RN2, серийному номеру и IMEI, связанным с вычислительным устройством. На этапе S-B8 RN1_enc, принятое с программного уровня-A 120, расшифровывают посредством SK5 с получением RN1 в его незашифрованной форме. На этапе S-B9 программный уровень-B 130 формирует свой ключ DEK шифрования данных путем применения хеша к результату применения логической операции XOR к RN1 и RN2, конкатенированным с DTM_B. DEK используется программным уровнем-B 130 для шифрования и расшифровки последующих данных, передаваемых между двумя программными уровнями в текущем сеансе времени выполнения. На этапе S-B10 RN1_enc возвращают на программный уровень-A 120 в качестве ответных данных. На этапе S-B11 при завершении алгоритма формирования ключа для программного уровня-B 130 незашифрованные формы RN1, RN2, TM и DTM_B уничтожают или удаляют из памяти. Ключи SK3, SK4 и SK5 сеанса, используемые программным уровнем-B 130, также уничтожают или удаляют из памяти.
BK2
BK2
[0083] После приема RN1_enc в качестве ответных данных из вызова функции формирования ключа в программном уровне B 130, на этапе S-A8 программный уровень-A 120 формирует SK5, который является эквивалентом BK2. Например, SK5 может быть сформирован путем применения Func к RN2, серийному номеру и IMEI. На этапе S-A9 RN1_enc расшифровывают посредством SK5 для получения RN1 в его незашифрованной форме. На этапе S-A10 программный уровень-A 120 формирует свой ключ DEK шифрования данных путем применения хеша к результату применения логической операции XOR к RN1 и RN2, конкатенированным с DTM_A. DEK используется программным уровнем-A 120 для шифрования и расшифровки последующих данных, передаваемых между двумя программными уровнями в текущем сеансе времени выполнения. Этот DEK должен быть эквивалентным DEK, сформированному программным уровнем-B 130, если два программных уровня были правильно связаны при первоначальной инициализации. На этапе S-A11 при завершении алгоритма формирования ключа для программного уровня-A 120 незашифрованные формы RN1, RN2, TM и DTM_A уничтожают или удаляют из памяти. Ключи SK1, SK2 и SK5 сеанса, используемые программным уровнем-A 120, также уничтожают или удаляют из памяти. Когда оба программных уровня сформировали свои соответствующие DEK, последующие данные, передаваемые между программными уровнями, могут быть зашифрованы посредством DEK.
V. КРИПТОГРАФИЧЕСКАЯ ФУНКЦИЯ
[0084] Согласно некоторым вариантам осуществления криптографическая функция Func, описанная в данном документе, для формирования различных связывающих ключей и ключей сеанса может представлять собой многопутевую криптографическую функцию, в которой путь вычисления выбирают на основе входных данных криптографической функции. Каждый путь может быть эквивалентным в плане вычислений (использовать одни и те же вычислительные операции), но операнды, передаваемые на вычисление, могут включать разные фрагменты входных данных. Биты входных данных во время выполнения могут быть использованы для выбора того, какой из вычислительных путей использовать.
[0085] Например, криптографическая функция может содержать ряд разных вычислительных путей. Вычислительный путь может быть выбран на основе значений конкретных битов входных данных криптографической функции. Каждый путь эквивалентен в плане вычислений и может создавать, например, хеш (например, алгоритмом безопасного хеширования SHA-256) на входных данных, конкатенированных с результатом умножения выбранного байта из входных данных на другой выбранный байт из входных данных. Конкретные байты, выбранные для умножения, и порядок конкатенации могут изменяться в зависимости от того, какой выбран вычислительный путь. Использование такого многопутевого подхода может придавать алгоритму большую сложность для предотвращения обратной разработки алгоритмов злоумышленником.
[0086] Один пример криптографической функции, которая имеет восемь вычислительных путей, представлен ниже.
<u>Путь</u>
<u>Вычисление</u>
000
OUT_data=Хеш(IN_data+(IN_data[3] * IN_data[5]))
001
OUT_data=Хеш(IN_data+(IN_data[4] * IN_data[6]))
010
OUT_data=Хеш(IN_data+(IN_data[5] * IN_data[7]))
011
OUT_data=Хеш(IN_data+(IN_data[6] * IN_data[8]))
100
OUT_data=Хеш((IN_data[3] * IN_data[5]) +IN_data)
101
OUT_data=Хеш((IN_data[4] * IN_data[6]) +IN_data)
110
OUT_data=Хеш((IN_data[5] * IN_data[7]) +IN_data)
111
OUT_data=Хеш((IN_data[6] * IN_data[8]) +IN_data)
В этом примере выбор одного из восьми вычислительных путей может быть сделан с использованием трех битов из входных данных (IN_data). Например, в качестве битов для выбора вычислительного пути могут быть использованы самые старшие три бита, самые младшие три бита или три бита в конкретных битовых положениях. В качестве примера, если три бита входных данных имеют вид '000', выбирают первый вычислительный путь, и выходом криптографической функции (OUT_data) является хеш конкатенации ('+') входных данных (IN_data) с результатом умножения третьего байта входных данных (IN_data[3]) и пятого байта входных данных (IN_data[5]). Как показывает этот пример, вычислительные операции для каждого вычислительного пути являются одинаковыми, за исключением того, что разные операнды (например, вариации или сегменты входных данных) или разный порядок конкатенации используют в зависимости от выбранного вычислительного пути. Следует понимать, что криптографическая функция в других вариантах осуществления может иметь любое число разных вычислительных путей в зависимости от желаемой сложности, и что вычисления могут включать другие типы операций, не описанных отдельно.
VI. ИЛЛЮСТРАТИВНАЯ СИСТЕМА
[0087] Фиг. 10 представляет собой структурную схему иллюстративной системы 1000, в которой могут быть использованы способы взаимной аутентификации, описанные в данном документе, согласно некоторым вариантам осуществления. Система 1000 может представлять собой, например, облачную систему транзакций для проведения облачных транзакций. Следует понимать, что способы взаимной аутентификации, описанные в данном документе, могут быть применены к другим типам систем, которые могут относиться или не относиться к обработке транзакций.
[0088] Система 1000 содержит портативное устройство 1010 связи (например, мобильное устройство), облачную платформу 1080 транзакций (CBP) и платформу 1070 мобильных приложений (MAP). CBP 1080 может быть реализована с использованием одного или более вычислительных устройств и может быть связана с эмитентом, обработчиком транзакций и/или другими подходящими субъектами или находиться под их управлением. CBP 1080 реализует набор функциональных возможностей, включая управление счетами и генерирование и продление параметров счетов, для обеспечения возможностей проведения облачных транзакций посредством портативного устройства 1010 связи.
[0089] MAP 1070 используется для облегчения связи между CBP 1080 и мобильным приложением 1014 (например, приложением для транзакций) в портативном устройстве 1010 связи. MAP 1070 может быть реализована с использованием одного или более вычислительных устройств и может быть связана с поставщиком услуг мобильного приложения 1014 (например, мобильного программного приложения), таким как эмитент, поставщик мобильного кошелька, продавец и/или другие подходящие субъекты, или находиться под его управлением. В некоторых вариантах осуществления MAP 1070 может быть связана с тем же субъектом, что и CBP 1080, или находиться под его управлением, или они могут быть разными. MAP 1070 применяется для распределения запросов между мобильным приложением 1014 и CBP 1080 и для обеспечения осуществления запросов и ответов, инициированных любой стороной, при установлении подключения к портативному устройству 1010 связи, например, посредством сети 1082 связи (например, Интернет, мобильной или сотовой сети и т. д.). Следует понимать, что в некоторых вариантах осуществления одна или более функциональных возможностей CBP 1080, MAP 1070 и/или эмитента или главной системы 1072 обработки могут быть встроены в одну и ту же вычислительную систему или разные вычислительные системы.
[0090] Портативное устройство 1010 связи может быть использовано для проведения облачных транзакций (например, платежных транзакций), которые обеспечиваются CBP 1080 и/или MAP 1070. Портативное устройство 1010 связи содержит аппаратное обеспечение 1032 устройства, мобильную операционную систему (ОС) 1022 и среду 1012 приложений. Аппаратное обеспечение 1032 устройства содержит бесконтактный интерфейс 1034, который может осуществлять бесконтактную связь или иным образом предоставлять информацию на другое устройство, такое как бесконтактное устройство 1062 считывания устройства 1060 доступа. Примеры бесконтактного интерфейса 1034 могут включать интерфейс ближней бесконтактной связи (NFC), который может отправлять и принимать сообщения с использованием радиочастоты, или другие протоколы бесконтактной связи, такие как Bluetooth, Bluetooth с низким энергопотреблением (BLE), Wi-Fi и т. д. Примеры бесконтактного интерфейса 1034 могут также включать оптический интерфейс, такой как дисплей, для представления информации, такой как коды быстрого ответа (QR), штрих-коды и т. д.
[0091] Среда 1012 приложений портативного устройства 1010 связи может содержать мобильное приложение 1014, такое как приложение для транзакций, предоставленное поставщиком услуг (например, эмитентом). Например, если поставщик услуг мобильного приложения 1014 является эмитентом, мобильное приложение 1014 может представлять собой приложение мобильного банкинга или приложение мобильных платежей. Если поставщик услуг является поставщиком мобильного кошелька, таким как оператор мобильной сети или поставщик кошелька третьей стороны, который поддерживает множество эмитентов, мобильное приложение 1014 может представлять собой приложение мобильного кошелька. Для продавцов мобильное приложение 1014 может представлять собой собственное приложение для транзакций продавца, с которого потребители могут осуществлять транзакции электронной торговли или покупок, или приложение мобильного кошелька, поддерживающее множество продавцов.
[0092] В некоторых вариантах осуществления мобильное приложение 1014 может содержать находящуюся на устройстве логику управления облачными транзакциями, встроенную в мобильное приложение 1014, для поддержки облачных транзакций. Находящаяся на устройстве логика управления облачными транзакциями выполняет функции по упрощению облачных транзакций, такие как получение параметров счета, предоставляемых для использования в платежных транзакциях, и доставка их на мобильную операционную систему 1022 для передачи по бесконтактному интерфейсу 1034. Например, находящаяся на устройстве логика управления облачными транзакциями может использовать криптограммный ключ (например, ключ ограниченного использования), выданный с CBP 1080, для генерирования криптограммы транзакции, которую передают по бесконтактному интерфейсу на устройство 1060 доступа для проведения платежной транзакции. Криптограмма транзакции может быть отправлена в сеть 1084 обработки транзакций для получения авторизации для платежной транзакции. Находящаяся на устройстве логика управления облачными транзакциями также управляет начальными параметрами профиля услуг, предоставляемыми после обеспечения счета, чтобы гарантировать, что запросы на продление параметров счета и другие операции управления параметрами счета инициированы.
[0093] Для обеспечения возможности работы портативного устройства 1010 связи с облачными платежными транзакциями CBP 1080 может быть использована для настройки портфелей счетов, связанных с эмитентами, и для обеспечения портативного устройства 1010 связи параметрами счета для использования при проведении облачных транзакций. Портфели счетов, установленные платформой CBP 1080, могут включать такие признаки, как параметры риска (например, управление скоростью), которые управляют триггерами, указывающими, когда параметры счета на обеспеченном устройстве будет необходимо обновлять для счетов в каждом портфеле. Для обеспечения надежной производительности и удобства, платформой CBP 1080 может быть реализован набор минимальных параметров, настраиваемых в профиле услуг. Чтобы гарантировать, что облачные платежные транзакции обрабатываются согласно правилам, указанным в профиле услуг для портфеля счетов, CBP 1080 выполняет различные ключевые функции в течение срока существования счета, который был активирован. Эти функции могут включать обеспечение, управление активными счетами, проверку платежей, обработку транзакций, управление сроками существования и последующую оплату.
[0094] CBP 1080 может создавать профиль услуг для портфеля до обеспечения счета как счета облачных транзакций. Обеспечение может включать взятие зарегистрированного счета, создание информации о счете, такой как альтернативный идентификатор счета (например, альтернативный номер основного счета (PAN)) или маркер, действующий как заменитель идентификатора счета, который может быть использован вместо реального идентификатора счета (например, реального PAN) для проведения транзакций, и наследование профиля услуг, который был установлен для портфеля. Когда счет обеспечен, соответствующие детали профиля услуг сообщают как обрабатывающей транзакции, так и находящейся на устройстве логике управления облачными транзакциями, чтобы гарантировать, что может быть принято решение при обработке транзакции и во время использования мобильного приложения пользователем.
[0095] Когда счет обеспечен, платформой CBP 1080 может быть выполнено управление активным счетом. Управление активным счетом может быть инициировано либо из операции обработки транзакции, либо из операции мобильного приложения. После того, как счет был обеспечен, функциональная возможность управления активным счетом генерирует начальный набор параметров счета для передачи на портативное устройство 1010 связи. Параметры счета могут содержать информацию о счете, генерируемую во время обеспечения (например, альтернативный идентификатор счета или маркер), а также динамическую информацию, чтобы гарантировать, что набор параметров счета имеет лишь ограниченное использование или ограниченный срок существования после доставки на устройство. Динамическая информация может содержать криптограммные ключи или динамические данные ограниченного использования в зависимости от типа поддерживаемой транзакции. Например, динамическая информация может содержать ключи ограниченного использования (LUK) для вычисления криптограмм, а также динамические данные ограниченного использования для поддержки наследуемых реализаций на основе динамического проверочного параметра или кода карты.
[0096] Во время обработки транзакции, если параметры профиля услуг, поддерживаемые платформой CBP 1080 для конкретного счета, указывают, что параметры счета на портативном устройстве 1010 связи необходимо заменить, функциональная возможность управления активным счетом платформы CBP 1080 может соединяться с портативным устройством 1010 связи посредством MAP 1070 для продления параметров счета. Аналогично, если находящиеся на устройстве параметры профиля услуг, хранимые на портативном устройстве 1010 связи, указывают, что продление параметров счета необходимо или приближается к такой необходимости (т. е. путем отслеживания порогов параметров счета), то мобильное приложение 1014 может осуществлять запрос на CBP 1080 на продление параметров счета.
[0097] Когда портативное устройство 1010 связи было обеспечено для проведения облачных транзакций, транзакции могут быть проведены посредством портативного устройства 1010 связи путем взаимодействия с бесконтактным устройством 1062 считывания устройства 1060 доступа (например, в местоположении продавца). Компоненты устройства 1060 доступа могут содержать терминал 1064 в точке продажи (POS-терминал) и/или электронный кассовый аппарат 1066. Устройство 1060 доступа может быть соединено с эквайером 1074 (например, посредством не показанного компьютера продавца). Эквайер 1074 может быть соединен с эмитентом или главной системой 1072 обработки посредством сети 1084 обработки транзакций. Сеть 1084 обработки транзакций может содержать один или более серверных компьютеров. Как правило, серверный компьютер представляет собой мощный компьютер или кластер компьютеров. Например, серверный компьютер может представлять собой крупный универсальный компьютер, кластер мини-компьютеров или группу серверов, функционирующих как один элемент. В одном примере серверный компьютер может представлять собой сервер баз данных, подключенный к веб-серверу. Сеть 1084 обработки транзакций может использовать любую подходящую проводную или беспроводную сеть, включая Интернет.
[0098] Сеть 1084 обработки транзакций может содержать подсистемы, сети и операции обработки данных, применяемые для поддержки и доставки услуг авторизации, услуг стоп-листов, услуг оценки транзакций и услуг клиринга и расчетов. Примером сети обработки транзакций может служить VisaNet™. Сети обработки транзакций, такие как VisaNet™, могут обрабатывать транзакции кредитных карт, транзакции дебетовых карт и другие типы коммерческих транзакций. VisaNet™, в частности, содержит систему VIP (систему комплексных платежей Visa), которая обрабатывает запросы авторизации, и систему Base II, которая выполняет услуги клиринга и расчетов.
[0099] Каждый из субъектов (например, эквайер 1074, сеть 1084 обработки транзакций, эмитент или главная система 1072 обработки) может содержать один или более компьютеров для обеспечения связи или для выполнения одной или более функций, описанных в данном документе.
[0100] Для проведения облачной транзакции пользователь портативного устройства 1010 связи может коснуться портативным устройством 1010 связи по бесконтактному устройству 1062 считывания (например, посредством NFC) устройства 1060 доступа или показать изображение, такое как штрих-код или QR-код, на экране портативного устройства 1010 связи, которое может быть отсканировано бесконтактным устройством 1062 считывания (например, оптическим сканером или устройством считывания) устройства 1060 доступа. В некоторых вариантах осуществления портативное устройство 1010 связи может обеспечивать устройство 1060 доступа идентификатором счета (например, альтернативным идентификатором счета, маркером и т. д.) и дополнительной информацией, такой как параметры ограниченного использования для счета, или информацией, полученной из параметров ограниченного использования для счета. Например, идентификатор счета или маркер и/или дополнительная информация (например, криптограмма транзакции) могут быть закодированы в штрих-коде или QR-коде, который сканируют устройством 1060 доступа; или идентификатор счета или маркер и/или дополнительная информация могут быть переданы на устройство 1060 доступа посредством NFC. В некоторых вариантах осуществления параметры ограниченного использования для счета могут включать криптограмму транзакции.
[0101] Устройство 1060 доступа или компьютер продавца, соединенный с устройством 1060 доступа, может генерировать сообщение с запросом авторизации, содержащее идентификатор счета и дополнительную информацию (например, параметры ограниченного использования для счета или информацию, полученную из параметров ограниченного использования для счета), и направлять сообщение с запросом авторизации эквайеру 1074. Сообщение с запросом авторизации затем отправляют в сеть 1084 обработки транзакций. Сеть 1084 обработки транзакций затем направляет сообщение с запросом авторизации соответствующим эмитенту или главной системе 1072 обработки, связанной с эмитентом счета, связанного с портативным устройством 1010 связи.
[0102] После того, как эмитент или главная система 1072 обработки принимает сообщение с запросом авторизации, сообщение с запросом авторизации может быть разобрано, и информация в сообщении с запросом авторизации может быть отправлена для проверки на CBP 1080. Сообщение с ответом авторизации затем отправляют назад в сеть 1084 обработки транзакций с указанием, авторизована ли (или не авторизована) текущая транзакция. Сеть 1084 обработки транзакций затем направляет сообщение с ответом авторизации обратно эквайеру 1074. В некоторых вариантах осуществления сеть 1084 обработки транзакций может отклонить транзакцию, даже если эмитент или главная система 1072 обработки авторизовали транзакцию, например, в зависимости от величины оценки риска потерь от мошенничества или в зависимости от того, проверены ли платформой CBP 1080 параметры ограниченного использования для счета. Затем эквайер 1074 отправляет сообщение с ответом авторизации на компьютер продавца и/или устройство 1060 доступа. Результаты ответа авторизации могут быть отображены устройством 1060 доступа или могут быть напечатаны на физической квитанции. Альтернативно, если транзакция представляет собой онлайн-транзакцию, продавец может предоставить веб-страницу или иное указание сообщения с ответом авторизации в качестве виртуальной квитанции. Квитанции могут содержать данные транзакции для транзакции.
[0103] В конце дня обычный процесс клиринга и расчетов может быть проведен сетью 1084 обработки транзакций. Процесс клиринга представляет собой процесс обмена детальной финансовой информацией между эквайером и эмитентом для облегчения проводок по расчетному счету потребителя и сверки положения расчетов пользователя.
[0104] Фиг. 11 представляет собой структурную схему портативного устройства 1101 связи (например, реализующего портативное устройство 1010 связи), в котором могут быть осуществлены некоторые варианты осуществления способов, описанных в данном документе. Портативное устройство 1101 связи может содержать аппаратное обеспечение 1104 устройства, соединенное с памятью 1102. Аппаратное обеспечение 1104 устройства может содержать процессор 1105, подсистему 1109 связи, интерфейс 1106 пользователя, экран 1107 просмотра (который может быть частью интерфейса 1106 пользователя) и бесконтактный интерфейс 1108. Процессор 1105 может быть реализован в виде одной или более интегральных схем (например, одного или более микропроцессоров и/или микроконтроллеров с одним ядром или несколькими ядрами) и применяется для управления работой портативного устройства 1101 связи. Процессор 1105 может исполнять множество программ в ответ на программный код или машиночитаемый код, хранимый в памяти 1102, и может поддерживать несколько параллельно исполняющихся программ или процессов. Подсистема 1106 связи может содержать один или более РЧ приемопередатчиков и/или коннекторов, которые могут быть использованы портативным устройством 1101 связи для осуществления связи с другими устройствами и/или подключения к внешним сетям. Интерфейс 1106 пользователя может содержать любое сочетание элементов ввода и вывода для предоставления пользователю возможности взаимодействовать с портативным устройством 1101 связи и применять его функциональные возможности. В некоторых вариантах осуществления экран 1107 просмотра может быть частью интерфейса 1106 пользователя.
[0105] Бесконтактный интерфейс 1108 может содержать один или более РЧ приемопередатчиков для взаимодействия с бесконтактным устройством считывания устройства доступа для проведения транзакции (например, платежной транзакции, транзакции доступа, обмена информацией и т. д.). В некоторых вариантах осуществления к бесконтактному интерфейсу 1108 может осуществлять доступ мобильная ОС 1114 с использованием интерфейсов API 1116 эмуляции карты, не требуя использования элемента безопасности. В некоторых вариантах осуществления дисплей 1107 также может быть частью бесконтактного интерфейса 1108 и используется, например, для выполнения транзакций с использованием QR-кодов, штрих-кодов и т. д.
[0106] Память 1102 может быть реализована с использованием любого сочетания любого числа энергонезависимых устройств памяти (например, флэш-памяти) и энергозависимых устройств памяти (например, ДОЗУ, СОЗУ) или любого другого постоянного запоминающего носителя или сочетания указанных носителей. Память 1102 может хранить мобильную ОС 1114 и среду 1110 мобильных приложений, где находится одно или более мобильных приложений, включая приложение 1112 для транзакций (например, приложение мобильного кошелька, приложение мобильного банкинга, приложение мобильных платежей, приложение продавца и т. д.), которые должны быть исполнены процессором 1105. В некоторых вариантах осуществления мобильная ОС 1114 может реализовывать набор API 1116 эмуляции карты, которые могут быть вызваны приложением 1112 для транзакций с целью осуществления доступа к бесконтактному интерфейсу 1108 для взаимодействия с устройством доступа.
[0107] Согласно некоторым вариантам осуществления приложение 1112 для транзакций может содержать несколько программных уровней. Например, приложение 1112 для транзакций может содержать первый программный уровень 1120 (например, SDK) и второй программный уровень 1130 (например, NDK). Первый программный уровень 1120 может содержать набор открытых API, используемый для выполнения не особо важных для безопасности функций, таких как функции, связанные с интерфейсом пользователя, функции работы в сети или функции связи, а также функций, которые могут задействовать особо важные для безопасности функции, реализованные на втором программном уровне 1130. Первый программный уровень 1120 может быть написан на языке программирования высокого уровня, таком как Java. Второй программный уровень 1130 может содержать собственную библиотеку для реализации особо важных для безопасности функций, таких как функция 1134 запроса маркера, функция 1136 продления параметров счета, функция 1138 генерирования криптограмм и т. д. Второй программный уровень 1130 может быть написан на языке программирования низкого уровня, таком как C или C++.
[0108] Функция 1134 запроса маркера может быть задействована для осуществления запроса маркера с удаленного сервера (например, CBP или эмитента или главной системы обработки). Маркер может быть использован в качестве замены для реального идентификатора счета для проведения транзакций, например, путем отправки маркера на устройство доступа. Использование маркера вместо реального идентификатора счета может быть более безопасным, поскольку реальный идентификатор счета не передается при проведении транзакции. Функция 1134 запроса маркера может быть задействована, например, во время регистрации для запроса начального маркера или когда срок существования текущего маркера истек.
[0109] Функция 1136 продления параметров счета может быть задействована для продления или обновления параметров счета, таких как ключ ограниченного использования, с удаленного сервера (например, CBP или эмитента или главной системы обработки). Во время транзакции ключ ограниченного использования используют для генерирования криптограммы транзакции, которую предоставляют на устройство доступа для проведения транзакции. Ключ ограниченного использования может быть связан с набором или одним или более порогами ограниченного использования (например, действительными в течение предопределенного периода времени, предопределенного числа транзакций и/или предопределенной совокупной суммы транзакции) для ограничения использования LUK. Когда один или более из порогов ограниченного использования LUK истек или приближается к истечению, функция 1136 продления параметров счета может быть задействована для запроса нового LUK.
[0110] Функция 1138 генерирования криптограмм может быть задействована во время транзакции для генерирования криптограммы транзакции, которую предоставляют на устройство доступа для проведения транзакции. Криптограмма транзакции может быть сгенерирована путем приема динамических данных транзакции с устройства доступа (например, суммы транзакции, даты транзакции, непредсказуемого номера и т. д.) и шифрования динамических данных транзакции с помощью LUK. В некоторых вариантах осуществления криптограмма транзакции может быть сгенерирована путем шифрования статической строки, а не с помощью LUK (например, если устройство доступа не поддерживает передачу динамических данных на портативное устройство связи).
[0111] Согласно некоторым вариантам осуществления особо важные для безопасности функции, реализованные на втором программном уровне 1130 (например, функция 1134 запроса маркера, функция 1136 продления параметров счета, функция 1138 генерирования криптограмм и т. д.), могут быть защищены от вредоносного кода и атак посредника с помощью способов взаимной аутентификации, описанных в данном документе. Когда первый программный уровень 120 задействует эти функции на втором программном уровне 130, данные и параметры, передаваемые между программными уровнями, могут быть зашифрованы и расшифрованы с использованием ключей шифрования данных, сформированных из связывающей информации, распределенной между программными уровнями во время инициализации приложения 1112 для транзакций, согласно способам взаимной аутентификации, описанным в данном документе.
[0112] Хотя в описании выше были представлены способы взаимной аутентификации для использования в приложении, имеющем первый программный уровень и второй программный уровень, следует понимать, что способы могут быть использованы для защиты функций, реализованных в любом программном уровне приложения. Кроме того, приложение не ограничено наличием только двух программных уровней и может иметь любое количество программных уровней (например, три или более программных уровней, частей или библиотек). Более того, способы взаимной аутентификации, описанные в данном документе, также могут быть перенесены на программные компоненты, которые не являются частью одного приложения. Например, способы взаимной аутентификации, описанные в данном документе, могут быть использованы для установления взаимной аутентификации двух программных приложений, которые осуществляют связь друг с другом, или между программным приложением и операционной системой и т. д.
[0113] Любые из вычислительных устройств, устройств связи, компьютеров, серверов и т. п., описанных в данном документе, могут быть реализованы с использованием одного или более процессоров, соединенных с памятью, которая хранит код или команды, которые при исполнении одним или более процессорами приводят к выполнению устройством одного или более способов и процессов, описанных в данном документе. Память, запоминающие носители и машиночитаемые носители для хранения кода или частей кода, описанные в данном документе, могут включать любые соответствующие носители, известные или используемые в данной области техники, включая запоминающие носители и средства связи, такие как, но без ограничения, энергозависимые и энергонезависимые, съемные и несъемные носители, реализованные любым способом или технологией для хранения и/или передачи информации, такой как машиночитаемые команды, структуры данных, программные модули или другие данные, включая ОЗУ, ПЗУ, ЭСППЗУ, флэш-память или другую запоминающую технологию, CD-ROM, цифровой универсальный диск (DVD) или другой оптический носитель, магнитные кассеты, магнитную ленту, запоминающее устройство на магнитных дисках или другие магнитные запоминающие устройства, сигналы данных, передачи данных или любой другой носитель, который может быть использован для хранения или передачи желаемой информации и к которому может осуществить доступ компьютер. На основании описания и указаний, представленных в данном документе, для специалиста в данной области техники будут очевидны другие пути и/или способы для осуществления разных вариантов осуществления.
[0114] Описание выше является иллюстративным и не является ограничительным. Многие модификации различных вариантов осуществления могут стать очевидными специалистам в данной области техники по прочтении данного описания. Следовательно, объем изобретения может быть определен не со ссылкой на вышеприведенное описание, а вместо этого может быть определен со ссылкой на рассматриваемые пункты формулы изобретения наряду с их полным объемом или эквивалентами.
[0115] Способы и процессы, описанные в данном документе, являются иллюстративными по своей сути, и способы и процессы согласно некоторым вариантам осуществления могут выполнять один или более этапов в другом порядке по сравнению с описанными в данном документе, включать один или более дополнительных этапов, не описанных отдельно, опускать один или более этапов, сочетать один или более этапов в одном этапе, разбивать один или более этапов на несколько этапов и/или включать любое сочетание вышеуказанного.
[0116] Можно понять, что некоторые варианты осуществления, как описанные выше, могут быть исполнены в форме управляющей логики с использованием компьютерного программного обеспечения в модульном или целостном режиме. На основании описания и указаний, представленных в данном документе, специалисту в данной области техники могут быть понятны и очевидны другие пути и/или способы реализации настоящего изобретения с помощью аппаратного обеспечения и сочетания аппаратного и программного обеспечения.
[0117] Любые из программных компонентов или функций, описанных в данной заявке, могут быть реализованы в виде программного кода, который должен быть исполнен процессором, с использованием любого подходящего компьютерного языка, такого как, например, Java, C++ или Perl, с использованием, например, традиционных или объектно-ориентированных подходов. Программный код может быть сохранен в виде последовательности инструкций или команд на машиночитаемом носителе, таком как оперативное запоминающее устройство (ОЗУ), постоянное запоминающее устройство (ПЗУ), магнитный носитель, например, жесткий диск или гибкий диск, или оптический носитель, например, CD-ROM. Любой такой машиночитаемый носитель может находиться на или в одном вычислительном устройстве и может присутствовать на или в разных вычислительных устройствах в пределах системы или сети.
[0118] Один или более признаков из любого варианта осуществления можно сочетать с одним или более признаками любого другого варианта осуществления без отхода от объема настоящего изобретения.
[0119] Формы единственного числа обозначают «один или более», если иное не указано отдельно.