Найти тему
Технологии денег

Как устроен Apple Pay (и другие подобные), ч.2

Часть 1
Часть 2 - вы здесь
Часть 3
Часть 4

В прошлый раз я рассказывал краткую историю технологии мобильных платежей с применением Secure Element (SE). Сегодня расскажу, как эта технология работает.

Давайте вспомним, зачем вообще нужен этот Secure Element, почему вокруг него было столько ажиотажа. Да, это как бы кусочек пластиковой карты (главная ее часть), но чем он таким занимается? В принципе, я много об этом писал, но повторить не помешает, repetitio est mater studiorum (не зря же я в детстве заучивал несколько латинских фраз).

Итак, чип пластиковой карты (и чип Secure Element) устроен так, что данные туда записать можно, а вытащить - нельзя. Ниппель. В смысле, какие-то данные он наружу выдает, конечно же, но - строго осмысленные. Так что если вы захотите записать в него PIN-код, то это можно сделать довольно-таки смело: наружу он потом этот код не отдаст даже под пытками. Более того, если чип заподозрит, что его пытаются взломать, он может необратимо заблокироваться. Вполне себе такой сейф.

Если требуется проверить PIN, так вы просто отправляйте ему комманду: "дорогой чип, проверь, пожалуйста, подходит ли тебе PIN 1234?". И он в ответ скажет, подошло или нет. А если вы несколько раз подряд спросите неверный PIN - он через сколько-то попыток заблокируется. Ну не весь, только платежное приложение на нем... Так что подобрать перебором не выйдет, чип не дурак. Т.е. внутри себя он хранит много какой информации, бОльшая часть которой недоступна извне. И внутри себя умеет использовать эту информацию, как того требует процедура проверки, электронной подписи, шифрования и т.д.

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

В общем, очень продуманная штука, реально цифровой мини-сейф. Вот такой чип в виде специальной SIM-карты, или в виде встроенного на плату Secure Element, или в виде комбинированной MicroSD-SE карты и находится в телефоне.

-2

Чтобы ваш телефон стал "банковской картой", надо установить платежное приложение с необходимыми настройками и записать ключи банка-издателя (предъявив управляющий ключ). А в нашем случае есть много контор, у кого этот управляющий ключ может быть. Если у нас смартфон со встроенным SE - то ключ есть у производителя телефона. Если у нас SIM-centric решение, то ключ - у сотового оператора. Если у нас специальная MicroSD-SE - то ключ у производителя этой карты.

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

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

-3

Именно поэтому единственной достаточно масштабной системой, построенной вокруг Secure Element, был и остается Apple. Он же был пионером на рынке платежей с помощью смартфонов. Остальной игрок подтянулся немного позже.

Кстати, в часах - отдельный Secure Element.

Итак, на ваш смартфон надо записать данные вашей пластиковой карты, и тогда смартфон сможет прикинуться картой.

"Добавление" карты в телефон на любой платформе - интересный и многоступенчатый процесс, который заслуживает отдельного поста (а может быть, и нескольких), и мы сейчас в деталях его разбирать не будем. Главное, что после этого самого процесса в Secure Element телефона (независимо от конкретной платформы) оказывается некий токен и ключи для платежного приложения.

Токен с т.зр. терминала очень похож на платежную карту, это номер вроде PAN, и обрабатывается он практически так же, за исключением некоторых деталей, о которых я тоже расскажу в другой части. Если не придираться к подробностям, то теримнал не видит разницы между приложенной к нему бесконтактной картой и телефоном.

Транзакционный запрос должен быть подписана криптограммой, а для этого используются ключи, находящиеся в Secure Element. Точно так же, как бесконтактная карта подписывает запрос ключами, находящимися в ее чипе.

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

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

-4

Один из режимов работы NFC-контроллера - эмуляция карты, и платеж как раз проходит в этом режиме.

NXP NFC Controller
NXP NFC Controller

Кассир вводит сумму, считыватель включает электромагнитное поле, передавая запрос на считывание. Вы подносите телефон, и телефон "слышит" запрос с помощью NFC-контроллера, который включен в режим эмуляции карты. Между терминалом и NFC-контроллером происходит диалог, как если бы вместо телефона была обычная бесконтактная карта. В какой-то момент приложение в Secure Element подписывает транзакционный запрос спрятанными в чипе ключами и выдает через NFC-контроллер подписанный запрос терминалу. Терминал, если не брать во внимание пару деталей, даже не понимает, что перед ним не карта, а телефон.

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

В общем, тут вообще не надо, чтобы телефон был подключен к интернету или даже вообще сеть ловил. Все необходимое есть в Secure Element.

Телефон с NFC и Secure Element теоретически может быть даже выключен: бесконтактной карте достаточно наведенного поля считывателя теримнала, чтобы включиться и ответить. Так и NFC-контроллер теоретически может работать без всего остального телефона, взаимодействуя напрямую с Secure Element. Это один из режимов работы NFC-контроллера.

Но так сейчас не делают - несекьюрно, поэтому севшим телефоном расплатиться все-таки не выйдет. Что ж поделать... У всего в этом мире есть цена.

Подытожим

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