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

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

Оглавление
Часть 1
Часть 2
Часть 3 - вы здесь
Часть 4

В прошлый раз мы говорили о технологии токенизации, построенной вокруг "железного" решения на базе Secure Element. Сегодня поговорим о том, как быть тем, у кого не фруктовый телефон.

"Раз у нас на борту нет специального чипа для хранени ключей платежного приложения, то надо его как-то эмулировать" - подумал кто-то из инженеров. Но хранить ключ в самом телефоне слегка небезопасно... Масса всяких угроз возможна - от вируса до кражи телефона. В принципе, от кражи немного защищает блокировка всякими там паролями и графическими ключами (плюс отпечатки пальцев, Face ID и т.д.), но есть теоретическая возможность получить доступ к внутренности телефона в обход всех этих блокировок (например, через Recovery). И тогда злоумышленнику в руки может попасть ключ от платежного приложения карты. А это серьезная опасность.

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

Тогда процедура платежа должна была выглядеть как-то так: при взаимодействии с терминалом телефон выходит на связь с сервером кошелька, сервер подписывают EMV-транзакцию, возвращают результат на телефон, а тот предъявляет эту подпись терминалу. С т.зр. безопасности стало полегче, но появилось явное беспокойство по поводу доступности такой услуги. Небольшие задержки связи, нахождение где-нибудь в сложных условиях приема - и выполнить транзакцию становится невозможно. Очевидно, что это одно из узких мест технологии. Но тут придумали довольно изящное решение.

LUK/SUK (Limited-use keys/single-use key)

-2

На EMV-карте есть разные счетчики и журналы, и один из этих счетчиков - ATC (Application Transaction Counter). В нем хранится последовательный номер транзакции. Т.е. если вы попробуете обмануть EMV-карту, последовательно предъявив два абсолютно одинаковых запроса на оплату (даже с той же датой и временем) - у вас ничего не получится, потому что для второй транзакции этот внутренний счетчик уже будет другой (увеличенный на единицу). Плюс в транзакционном запросе еще есть непредсказуемое случайное число - я напоминаю об этом, чтобы вы вспомнили, почему копировать диалог с картой в технологии EMV абсолютно бессмысленно.

Так вот, идея заклчается в следующем. Берем платежный мастер-ключ приложения (который находится на сервере кошелька), и из него с помощью разных криптографических алгоритмов формируем десяток-другой одноразовых ключей. При формировании каждого следующего ключа последовательно используем увеличивающийся ATC. Т.е. для формирования первого ключа используется, например, ATC=731, для второго ATC=732, для третьего ATC=733 и т.д. И вот теперь эту пачку одноразовых ключей загружаем в телефон.

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

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

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

Токен устройства и токен пользователя

Будьте внимательны, речь пока еще не о том токене, который заменяет номер карты. Что поделать, не хватает тут мощности английского языка - приходится использовать слово "токен" для разнородных понятий.
-3

Помимо всех этих одноразовых ключей, приложение-кошелек при установке и инициализации генерирует еще пару важных значений.

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

Второй важный токен, который генерируется приложением-кошельком - это токен пользователя. Тут все интереснее.

Дело в том, что в технологии EMV есть такая вещь, как CVM - Cardholder Verification Method - метод проверки пользователя. До технологии токенизации сюда относилась проверка PIN и рукописной подписи в разных комбинациях. Т.е. покупатель предъявлял карту, а затем вводил PIN или подписывал чек или как-то комбинировал эти способы.

Но современные мобильные устройства имеют несколько дополнительных, достаточно интересных способов проверить, кто ими пользуется. Сюда относится и сканирование отпечатков пальцев, и Face ID, и разные альтернативные способы идентификации. Как бы то ни было, вместо совсем не интерактивной карты теперь в руках покупателя находится пользовательское устройство (Customer Device), которое само умеет взаимодействовать с пользователем, и POS-терминалу теперь не надо получать PIN через свою клавиатуру. Это теперь делает телефон вместо него. Это одно из мест, в котором EMV-транзакция с телефоном для терминала все-таки отличается от EMV-транзакции с бесконтактной картой. Терминал должен уметь обработать CDCVM - Customer Device Cardholder Verification Method. Т.е. тупо он должен распознать соответствующее значение, которое ему передает телефон, и затем должен его передать в процессинг в определенном поле запроса.

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

Про Большого Брата

-4

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

Зачем? Чтобы можно было совершать покупки и без POS-терминала. Например, покупать платные приложения или оплачивать товары через интернет.

Прямо мечта разработчика и пользователя! :) Опять же - никаких комиссий за всю эту роскошь!

Зачем же это Большому Брату?

Все просто.

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

Вроде бы все это просто помогает максимально прицельно предлагать вам рекламу. Ради вашего же удобства: вам не придется долго искать что-то, любезный Брат все сам вам подскажет.

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

А в следующих сериях мы, наконец, узнаем, что же такое - токен (на этот раз - то самый, который в слове "токенизация"), и как он подставляется вместо PAN карты.

Хотя, если вдруг я что-то объяснил не очень понятно - пишите в комментариях, внесем интерактивность в наш токенизированный сериал. И не жалейте лайков - мне хотелось бы понимать, что вам интересно :)

Понравилась статья? Тогда обязательно поставьте лайк, подпишитесь, поделитесь в соцсетях!

Читайте также: