![](https://habrastorage.org/files/19f/71b/7af/19f71b7af3844df191ae1d99cf8a0592.jpg)
HCE (Host-based Card Emulation) – это технология, которая дает возможность писать софт, не требующий для исполнения выделенного криптопроцессора, чтобы обеспечить сеанс связи с платежным терминалом. Приложение исполняется на основном процессоре мобильного устройства, в окружении операционной системы телефона.
HCE для NFC имеет открытую архитектуру, что позволяет эмулировать не только банковские карты, но и карты программ лояльности, транспортные карты, пропуска и так далее. Технология позволяет заметно ускорить процесс внедрения платежных NFC-сервисов, потому что не нужно координировать и согласовывать действия с производителями телефонов, кроме того, решаются многие проблемы совместимости.
Мы сделали такой HC-эмулятор в своём приложении. До появления технологии HCE информацию для осуществления NFC-транзакций в мобильных устройствах можно было хранить тремя способами: либо на SIM-карте (принцип SIM centric NFC), либо в специальном элементе на телефоне (Embeded Secure Elements, eSE), либо на специальной MicroSD.
Как обстояли дела ранее?
У классических способов до HCE имеются существенные недостатки. При подходе SIM centric требуются специальные SIM-карты, которые значительно дороже стандартных карт, обязательна процедура посещения пользователем точки продаж для замены SIM-карты и т.д.
При eSE-подходе сложностей и ограничений ещё больше – моделей телефонов, имеющих специальный блок для хранения информации о карте, на рынке крайне мало, стоимость персонализации элемента в телефоне весьма высокая, появляется зависимость от производителя телефона и провайдера услуг персонализации «по воздуху» (Over-The-Air Service Provider). Эти ограничения, аппаратные и организационные барьеры до последнего времени не давали возможности сделать сервис бесконтактных платежей при помощи мобильных устройств массовым.
Раньше, чтобы запустить сервис NFC-платежей, его провайдеру нужно было договариваться с вендором о получении ключей для записи на телефон платежных данных. Некоторые производители телефонов предоставляли собственный облачный сервис, с которым провайдеру платежного сервиса необходимо было интегрироваться, передавать ему платежные данные для дальнейшей заливки этих данных в телефон. По пути «закрытой» технологии сейчас пошел и Apple – для работы платежного приложения используется криптопроцессор, ключи есть только у производителя аппарата, и только он может загружать платежные данные.
Для пользователей основным неудобством этих hard подходов является привязка системы безопасности к аппаратным средствам а, следовательно, неизбежная необходимость смены SIM-карты или даже телефона для подключения сервиса NFC-платежей.
Google: мы пойдем другим путем
Другой подход избрали в Google, рассудив, что зависимость от вендоров (производителей телефонов и Secure Elements) радикально снижает адаптивность технологии и препятствует массовому тиражированию платежных сервисов. Рассудив так, Google реализовала подход, при котором NFC-контроллер напрямую связан с основным процессором, непосредственно обеспечивающим работу платежного приложения, хранение данных, подпись транзакций и т.д. А информационная безопасность обеспечивается программными средствами.
В декабре 2013 года Google выпустила версию Android 4.4 KitKat, в которой была реализована возможность взаимодействия NFC-контроллера не только с SE, но и с обычным приложением в телефоне. Проще говоря, отпала необходимость промышленной прогрузки информации в специальные устройства, стало достаточно просто установить на смартфон платежное приложение, работающее по технологии HCE.
Как это работает?
У нас есть карта «Билайн» — обычная дебетовая MasterCard, которую можно получить бесплатно в любом салоне «Билайн». Ежегодная абонентская плата за обслуживание нашей карты не взимается. Карта работает как обычный MC по всему миру, только при совершении покупок возвращается от 1,5% потраченной суммы на счет в виде бонусов. Накопленные бонусы могут быть использованы при оплате услуг мобильной связи, нашего проводного интернета, разных товаров в наших и партнёрских магазинах.
Карта эмулируется на телефоне.
По сути, технология HCE дает возможность эмулировать в телефоне бесконтактные smart-карты. В нашем случае виртуальная карта является дополнительной функцией физического носителя – пластиковой карты «Билайн». Владелец такой карты, являющийся одновременно владельцем телефона на платформе Android KitKat, оснащенного NFC-модулем, устанавливает на него мобильное приложение карты «Билайн». При входе в мобильное приложение для активации функции бесконтактных платежей достаточно ввести ЕАN карты и свой пароль. Приложение проверяет наличие/доступность HCE на устройстве, и если все ок, пользователю предлагается подключить функционал.
Если пользователь подтверждает свое согласие на подключение сервиса, ответив на полученную sms вводом одноразового пароля, то производится эмиссия виртуальной карты – в мобильное приложение из процессингового центра загружаются данные, необходимые для совершения NFC-платежей. Собственно, на этом всё – телефон стал инструментом бесконтактной оплаты.
![](https://habrastorage.org/files/7b7/448/faa/7b7448faa0d042cda06ae58f27e95a2b.png)
![](https://habrastorage.org/files/7db/57d/937/7db57d9379df48fa9ee4cb8613b377e0.png)
На телефоне HCE функционирует как фоновый сервис, что позволяет использовать HCE, не запуская приложение для этого взаимодействия. При взаимодействии с терминалом Android’у необходимо выбрать приложение, которому отправить данные для обработки. Такой выбор делается на базе Application ID (AID), который содержит до 16 байт информации, и известен для популярных платежных систем, таких как Visa или MasterCard. Приложение может обрабатывать несколько различных AID, которые объединяются в группу. Каждая группа может быть связана с определенной категорией. В настоящий момент определено две категории: CATEGORY_PAYMENT (для приложений оплаты) и CATEGORY_OTHER (для остальных). В телефоне может быть установлено несколько приложений для одного и того же AID, для разных категорий может быть применена разная политика выбора приложения, для платежных приложений определяется одно активное приложение по умолчанию.
Для реализации HCE нам было необходимо расширить сервис HostApduService и реализовать методы: processCommandApdu() – вызывается, когда приложение взаимодействует с терминалом и onDeactivated() – если связь с терминалом потеряна, или другой NFC-ридер пытается установить соединение. Данный сервис декларируется в манифесте приложения и должен содержать intent-фильтр для SERVICE_INTERFACE, доступ android.permission.BIND_NFC_SERVICE и метаданные, определяющие, какие AID обрабатывают наш сервис. Также тут мы можем определить, требуется ли разблокировка устройства для совершения оплаты с его помощью. Разрешение BIND_NFC_SERVICE гарантирует, что все взаимодействия с NFC-модулем будут осуществляться через операционную систему Android. А безопасность хранимых данных базируется на стандартной системе «песочницы» для приложения.
Схема взаимодействия элементов в процессе бесконтактной оплаты по технологии HCE
![](https://habrastorage.org/files/589/768/3ea/5897683eabf444c28c4344975f4be942.jpeg)
Элементами системы являются:
NFC-контроллер – передает команды от терминала платежному приложению.
Мобильная платформа – серверная часть мобильного банка, включающая функции управления платежным приложением.
Хост эмитента – процессинговый центр эмитента, который для обслуживания мобильного приложения умеет взаимодействовать с мобильной платформой.
Хост эквайера – процессинговый центр эквайера.
При совершении бесконтактной оплаты терминал взаимодействует с NFC-контроллером телефона по протоколу ISO 14443 (APDU T=CL).
NFC-контроллер взаимодействует с Платежным приложением по внутреннему протоколу, специфицированному в Android 4.4 и выше.
Платежное приложение получает от терминала ключевые данные транзакции (сумма, валюта, время операции, свойства терминала и т.д.), проводит проверку возможности совершения операции и в случае успеха генерирует уникальную криптограмму (ARQC) на уникальном секретном ключе Платежного приложения. Данные, на которых рассчитывается криптограмма, включают случайное число.
В зависимости от суммы и свойств терминала у клиента может быть запрошен пин-код, который вводится клиентом на терминале (или пин-паде).
Терминал на хост эквайра формирует авторизационный запрос, который включает ARQC и шифрованный пин-код, если он был введен клиентом.
Далее с хоста эквайера авторизационный запрос через платежную систему маршрутизируется на хост эмитента, где принимается решение об одобрении или отказе авторизации.
Проверки на хосте эмитента включают:
1. Проверку криптограммы (ARQC).
2. Проверку пин-кода (если он был введен клиентом).
3. Проверку правил обслуживания карты.
4. Проверку лимитов карты и счета.
5. Проверку анти-фродовых правил, включая специфические правила для бесконтактной оплаты телефоном.
В результате обработки авторизации на хосте эмитента формируется ответ, который по обратной цепочке доставляется в терминал.
Что нужно для использования сервиса в России
Для того чтобы пользоваться сервисом бесконтактной оплаты, необходимо в любом офисе «Билайн» бесплатно получить предоплаченную карту «Билайн». Далее – скачать на Google Play мобильное приложение карты «Билайн» и активировать функцию бесконтактной оплаты. Аппаратные и программные ограничения: операционная система Android, версия не ниже 4.4, наличие в телефоне NFC-модуля.
Какие еще есть особенности?
Например, если у пользователя не один, а несколько телефонов на Android 4.4, то сервис бесконтактной оплаты, привязанный к его основной карте, может быть установлен на все устройства владельца этой карты. Это удобно, например, для использования сервиса семьей. При этом на одном телефоне может существовать только одна виртуальная карточка.
При оплате, когда телефон подносится к терминалу, на экране отображается сумма покупки и информация об успешности проведения платежа.
Оплата производится только при разблокированном экране, поэтому важно, чтобы телефон был защищен паролем. При этом само приложение может быть закрытым. При удалении приложения с телефона виртуальная карта блокируется. При восстановлении приложения происходит повторная эмуляция карты, поэтому придется проходить процесс настройки бесконтактной оплаты с нуля. Повторная активация услуги потребуется также, если в приложении отключить сервис бесконтактной оплаты. Однако удалять приложение или отключать сервис вовсе не обязательно – для временной блокировки можно использовать функцию «Приостановить бесконтактную оплату».
![](https://habrastorage.org/files/fac/27c/70c/fac27c70c5f64814838a81e40187d2d0.png)
Активность сервиса бесконтактной оплаты подтверждается оранжевым цветом соответствующей иконки
В чем профит?
Итак, что нам дает сервис бесконтактной оплаты с помощью мобильного телефона? Можно забыть дома кошелек, оставить в квартире паспорт или даже водительское удостоверение, но почти со 100% вероятностью сотовый телефон будет при вас. А если на этом телефоне инсталлировано приложение для бесконтактной оплаты, значит, вы всегда «при деньгах».
Далее. NFC-транзакция – это мгновенная оплата. Даже для того чтобы расплатиться пластиковой карточкой, её для начала нужно извлечь из бумажника, а перед этим – бумажник из кармана или сумки. При расчете наличными добавляется момент пересчета, передачи денег, получения и проверки сдачи и т.д. Транзакции до 1000 рублей, совершенные при помощи NFC и HCE, даже не требуют ввода ПИН-кода, и расчет без всякого преувеличения происходит в один момент и в одно касание.
После совершения транзакции на телефон приходит sms-сообщение о прошедшей операции и об остатке на счете, т.е. вы всегда в курсе состояния своего электронного кошелька.
Кстати, интересная деталь – в приложении карты «Билайн» реализована технология единого ПИНа для нескольких карт, в данном случае – для основной карты «Билайн» и карты, эмулированной мобильным приложением. То есть и при расчете по пластиковой картой, и используя сервис бесконтактных платежей, вы вводите один и тот же пароль.
Сервис бесплатный, никаких комиссий за NFC-транзакции не взимаются.
Где можно платить?
Конечно, развитость инфраструктуры приема бесконтактных платежей зависит от конкретного региона, однако сегодня уже порядка 5% платежных терминалов уже оснащены функцией NFC. В масштабах всей России это, по экспертным оценкам, около 30 тысяч устройств. Лидеры рынка производства POS-терминалов – VenFone и Ingenico – уже не первый год оснащают свои устройства поддержкой NFC в качестве базовой стандартной функции.
При оплате следует ориентироваться на наличие на POS-терминале значка, обозначающего, что аппарат оснащен бесконтактным функционалом.
Если говорить о конкретных точках, то это сети, крупные магазины, фаст-фуды, заправки. McDonald's, Starbucks, Subway, гипермаркеты «Ашан», О'КЕЙ, «Магнит», «Аэроэкспресс», крупные сети сотового ритиейла, магазины глобальных производителей косметики и парфюмерии, модные места проведения досуга.
Безопасность
Наиболее очевидное на сегодняшний день тонкое место технологии HCE – безопасность. Данные, необходимые и достаточные для осуществления NFC-платежей, хранятся непосредственно в памяти смартфона. Однако для мобильного приложения карты «Билайн» используется комплекс мер, которые сводят к минимуму вероятность взлома. Мы делали внутренний конкурс на взлом системы, с очень хорошим вознаграждением, анализ кода.
Разберем некоторые аспекты информационной безопасности технологии HCE, реализованные для мобильного приложения карты «Билайн».
Операции по заблокированному телефону невозможны. В этом смысле HCE-решение защищено лучше, чем обычная пластиковая карта с бесконтактным интерфейсом – чтобы совершить платежную операцию злоумышленник должен разблокировать телефон. В случае обычной карты – достаточно получить саму карту. При использовании мобильного приложения карты «Билайн» невозможен, например, сценарий, когда в метро в плотном потоке людей с виртуальной карты незаметно списывают деньги, прикладывая к карману ридер.
Продукт защищен от взлома и клонирования как на уровне самого приложения, так и на уровне процессинга. Все данные шифрованы, приложение само отслеживает попытки взлома и при обнаружении такой попытки зачищает все критичные данные. При этом приложение периодически сообщает процессингу свое состояние, при всех операциях хост проверяет ожидаемое состояние и сравнивает с фактически полученным. При несовпадении, что может быть вызвано попыткой клонирования, карта блокируется. Кроме того, в процессинговом центре настроены специальные правила эмитентского фрод-мониторинга, которые контролируют количество беспиновых операций и блокируют карту при обнаружении подозрительной активности.
Операции на сумму свыше 1000 рублей защищены онлайн пин-кодом, который вводится в пинпад терминала. Перехват пин-кода через взлом приложения невозможен – просто потому, что пин-код на телефоне никогда не вводится.
При утере телефона порядок действий практически ничем не отличается от стандартных мероприятий, выполняемых при утере обычной банковской карты: звонок в контакт-центр, блокировка карты «Билайн» по EAN, получение в салоне связи новой карты. На новую карту будут перенесены все остатки денежных средств, бонусы и так далее. При этом, естественно, номер карты поменяется, а у злоумышленника будет на руках телефон, в котором будет эмулирована старая карта, операции по которой совершить уже невозможно, поскольку она заблокирована.
Кстати, следует обратить еще на один нюанс, связанный с безопасностью технологии NFC в целом. Существует представление, что уязвимым является сам сеанс передачи данных от смартфона к POS-терминалу. На самом деле каждая транзакция защищена уникальной криптограммой, без которой авторизация невозможна. Из тех данных, которые передаются по радиоканалу, практически невозможно извлечь никакой информации, которая помогла бы злоумышленникам похитить средства со счета, подписав другие транзакции.
Будет ли работать этот сервис на платформе iOS?
Apple пошли по пути phone-based и используют встроенный Secure Element, куда никто, кроме Apple, карточные ключи загрузить не может. Поэтому единственный реалистичный в настоящее время вариант – это интеграция с новой технологией Visa Token Service (генерация временных ключей для оплаты), на основе которой Apple Pay, собственно, и работает.
Прогнозы
Можно прогнозировать, что рынок NFC-платежей в России переходит из стадии становления в фазу активного роста. Растет число телефонов, поддерживающих технологию NFC, появляются интеграционные проекты, реализуемые совместно вендорами, платежными системами и ритейлерами.
В I полугодии 2014 г. в России было реализовано 1,2 млн. смартфонов, поддерживающих технологию NFC. Это на 21% больше, чем за аналогичный период прошлого года. NFC-смартфоны составили 14% от всех продаж смартфонов в стране. Понятно, что бурный рост может быть обусловлен только удобством применения бесконтактных технологий, а массовость сервису может придать мощный драйвер. Такой, например, как бесконтактная оплата проезда в общественном транспорте, прежде всего в метрополитене.
Если же говорить о емкости рынка NFC-платежей в России, то эксперты называют цифру порядка 15 млрд. рублей (оценка агентства J'son & Partners).