Как списать деньги с карты через nfc

Обновлено: 24.04.2024

Объясняем, действительно ли деньги со счёта в смартфоне легко украсть, а технология NFC — Near Field Communication — ненадёжна.

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

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

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

Когда банковские карты только появились, некоторые говорили, что мошенник может запомнить ваше имя, номер карты и CVC-код, а затем купить что-то по телефону (интернетом для покупок в то время практически не пользовались).

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

Конечно, время показало, что все эти выдуманные опасения всего лишь фикция. Массовых краж денег со счетов по причине того, что кто-то запомнил данные карты и воспользовался этим, практически не происходило. А в тех единичных случаях, когда случалось нечто подобное, банки возвращали деньги клиентам и выпускали новые карты.

Устройство такой карты очень простое – это NFC-чип, который связывается с терминалом оплаты и передаёт данные. Обычно в банках не требуется ввод PIN-кода для определённых сумм. В некоторых банках такой лимит возможно определить самостоятельно.

Оплата в них происходит по тому же принципу – используется технология NFS. Неважно какой у вас смартфон и система оплаты: Apple Pay, Google Pay или Samsung Pay. Человек вносит данные своей банковской карты, подтверждает их, снимает небольшой платёж, который потом возвращается ему. После этого человек может пользоваться оплатой с помощью мобильного устройства.

Списать деньги с карты при помощи NFC возможно. Однако не всё так просто. Расстояние, на котором действует считывание NFC с карты составляет, как правило, несколько миллиметров. Так что мошеннику придётся вплотную прижаться к карману жертвы.

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

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

Резюмируя, можно сделать вывод, что описанная городская легенда — вымысел. Появилась она как рекламная кампания производителя кошельков для банковских карт, которые защищены от внешнего считывания.

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

Легенда о том, что кто-то может украсть деньги со смартфона, так ею и остается.


Кому-то этот пост покажется капитанством, но на самом деле даже на Хабре приходится встречать комментарии типа нафига козе баян зачем телефонам NFC, ведь даже в Москве нигде бесконтактные платежи не работают. А вот и не правда, уже работают – причём места, где можно расплатиться просто приложив телефон к считывателю, появляются буквально на глазах – этот пост я собрался писать больше месяца назад, и за это время только рядом с моим домом NFC-терминалы для приёма платежей появились в одной международной сети закусочных (не шаурма), например. Но обо всём по порядку.

Идея этой статьи возникла сразу после анонса партнёрства МТС, продвигающего свой сервис «NFC-платежи» и Sony Mobile Communications. Первым официально протестированным смартфоном, поддерживающим этот сервис, стал Sony Xperia Sola, который я как раз взял на тест. Поэтому я отправился в ближайший салон МТС за пакетом «NFC-платежи», включающем в себя банковскую карту МТС-Деньги и специальную SIM-карту. Для владельцев телефонов без поддержки NFC выдаётся ещё NFC-антенна, которая крепится непосредственно к симке – благодаря этому, воспользоваться радостями бесконтактных платежей могут владельцы самых разных телефонов без встроенного NFC (но не всех – на сайте МТС-денег написано об ограничениях поподробнее).

Для смартфонов со встроенными NFC-чипами ситуация даже сложнее: в настоящий момент на совместимость работы с комплектом «NFC-платежи» проверены телефоны следующих моделей: Sony Xperia sola, HTC one X, LG Prada, Samsung galaxy S3, Sony Xperia S, Sony Xperia P, Sony Xperia ION. На сайте этой информации пока нет, так что это, можно сказать, эксклюзив — only for Habr (: Проверка на совместимость подразумевает, что с какими-то телефонами теоретически комплект может не работать — в этом случае специалисты дорабатывают ПО. Поэтому для телефонов с NFC-чипами не из этого списка гарантировать совместимость со 100%-ой вероятностью мне не смогли.

Как подключить


Владельцам симок МТС карту просто заменят на новую с сохранением номера. Карту МТС-Деньги оформляют там же, на месте. Вариантов, как водится, два: дебетовая и с кредитным лимитом. Во втором случае вам перезвонят – практически сразу, в течение пятнадцати минут (если с первого раза не дозвонятся – перезвонят позже; я не услышал звонка и меня перенабрали через полчаса) для небольшого телефонного анкетирования. Затем, в течение часа, придёт SMS с уведомлением о решении МТС-банка насчёт открытия вам кредитного лимита. Подводные камни, как водится – стоимость кредита. 55% годовых – это, мягко говоря, много. Поэтому в минус лучше не уходить или вообще оформлять карту без кредитного лимита. В этом случае МТС банк будет вам начислять 5% годовых на сумму остатка.

Как это работает

SIM-карта «МТС денег» сама по себе является платёжным инструментом, и в личном кабинете отображается как карта SIM MasterCard (в отличие от обычного мастеркарда, который вам также выдали в офисе МТС). Баланс на SIM MasterCard имеет доступ к тому же картсчёту, что и просто MasterCard — и, соответственно, на них всегда одинаковый баланс, который, однако, не равен балансу на счёте телефона. Это одно из распространённых заблуждений, которое было и у меня: баланс телефона был, есть и будет есть отдельно от баланса вашей карты. При оплате по NFC средства списываются не с телефонного счёта, а с привязанного банковского.

Где и как платить

Это самое интересное. NFC-платежи в России развивает платёжная система MasterCard, терминалы MasterCard PayPass которой потихонечку населяют просторы нашей бескрайней. Неполный список торговых, аптечных и ресторанных сетей, поддерживающих технологию NFC-платежей можно посмотреть у них на сайте — как видите, там далеко не только Москва. Неполный же этот список потому, что там нет, например, упоминания сети «Бургер Кинг» в ресторанах которой теперь можно расплатиться карточкой за бургер; видел терминалы PayPass я и в кинотеатре «Октябрь» (другие кинотеатры сети «Каро-фильм» я не проверял). Появляются они буквально на глазах.

Сам же процесс оплаты происходит очень быстро и просто: вы подносите телефон на пару секунд к терминалу, затем идёт обработка и затем платёж проходит (если у вас, конечно, достаточно денег на счету). Если сумма больше 1000 рублей, то вам потребуется ввести PIN-код. Для микроплатежей NFC сейчас самый удобный вариант, удобнее даже банковской карточки – всё-таки телефон всегда под рукой.

Я уже рассказывал ранее на примере Android SDK, как не ограничиваясь фреймом и WebView, встроить нативную форму приема платежей по банковской карте в мобильное приложение, и при этом не попасть под аудит PCI DSS. С тех пор наше SDK довольно существенно расширилось и к обычной форме ввода карты в Android и iOS добавился такой функционал:
— React Native библиотека для Android и iOS
— кастомизация верстки layout формы с реквизитами карты
— функция оптического сканирования карты
— прием бесконтактных платежей в Android по технологии NFC
В этой публикации я расскажу что вообще можно делать с платежами в мобильных приложениях, какие есть лайфхаки и подводные камни, и напоследок приведу пример кода демо-приложения и расскажу, как списать карточный долг с друга при помощи NFC ридера своего смартфона.

Кейс 1. Привязываем карту клиента к бэкенду для регулярных списаний или платежей в 1 клик.

Тут важно понимать, что если ваш бэкенд не сертифицирован по PCI DSS, то номер карты и ее срок действия вы не можете хранить в своей базе данных. Поэтому, прежде чем привязать идентификатор карты к аккаунту клиента, необходимо сначала карту токенизировать. Для этого вам необходимо осуществить через мобильное приложение первый платеж с участием клиента, и желательно с 3D-Secure, заблокировав на карте небольшую сумму, например 1 единицу валюты. 3D-secure в данном случае необходим в первую очередь, чтобы обезопасить себя, как торговую точку, от финансовых претензий (чарджбеков) по будущим рекурентным списаниям, а во вторую очередь — чтобы улучшить конверсию, так как например по картам Сбербанка в России и Приватбанка в Украине в большинстве случаев транзакция без 3D-Secure не пройдет.
Итак, чтобы получить токен карты, необходимо передать параметры requiredRecToken и verification (более подробно как создать мобильное приложение смотрите в статье, ссылку на которую я указал в начале, а также в коде демо-приложения на github):


Параметр requiredRecToken требует возвратить токен карты при успешной авторизации карты, а verification — что средства с карты списывать не нужно, а достаточно их заблокировать, а потом вернуть (платежный шлюз возвращает их автоматически).
В ответ платежный шлюз вернет параметры recToken — токен карты, recTokenLifeTime — срок действия токена (по сути срок действия карты) и maskedCard — маскированный номер карты, который необходимо привязать в бекенде к токену для дальнейшего отображения клиенту при выборе способа оплаты.
Теперь, имея токен карты вы можете в любой момент по требованию клиента или при наступлении срока оплаты, вызвать метод списания по токену через server-to-server API и списать необходимую сумму.
Подводные камни:
По нашей статистике у довольно значимой части картодержателей не получается оплатить через 3DSecure на мобильном устройстве по ряду причин, от него и шлюза не зависящих:
— может не приходить SMS, или пользователь переключаясь между SMS-приложением и вашим, потерял форму с вводом пароля 3D-Secure, так как она открывается в WebView или системном браузере
— полезла верстка 3D-Secure страницы банка на смартфоне или планшете (банки очень редко адаптируют такие страницы)
— веб-сервер банка отключил поддержку небезопасного протокола TSL 1.0, что делает 3D-Secure недоступным для Android версии Лайфхак:
Мы на платежном шлюзе умеем включать/отключать налету 3D-Secure, и если все-таки у клиента не получается оплатить, мы под него подстраиваемся, и пытаемся сделать оплату без 3D-Secure пароля.
Также стоит помнить, что если вы сохраняете токены одного платежного провайдера в своей системе, то использовать их на другом провайдере уже не получится, разве что если провайдеры не договорятся между собой о миграции токенов, что в принципе в нашей практике уже было несколько раз.

Кейс 2. Кастомизируем верстку формы ввода номера карты.

Часто возникает необходимость разместить поля для ввода номера карты, срока действия и cvv2 в другой последовательности, чем это предусмотрено стандартным layout в SDK. Но из-за требований PCI DSS вы не можете просто взять, и заменить поле ввода номера карты на стандартный компонент EditText. Для этих целей мы разработали flexible layout. Flexible layout наследует стили вашего мобильного приложения и позволяет располагать элементы формы в любой последовательности и в любом дизайне и при этом предотвращает случайную передачу карточных данных на сторону вашего бекэнда.

Для организации ввода карты в SDK есть два механизма:
CardInputView — готовый view для использования;
CardInputLayout — лишь layout wrapper для потроение view в собственном стиле разметки.

По сути CardInputView = CardInputLayout + CardNumberEdit + CardExpMmEdit + CardExpYyEdit + CardCvvEdit.
Упрощенную структуру CardInputView в XML можно запиться так:

Следовательно можно абсолютно свободно кастомизировать и располагать элементы ввода на сколько хватит фантазии. Есть лишь одно правило которое нужно соблюдать — каждый из элементов ввода (CardNumberEdit,CardExpMmEdit,CardExpYyEdit,CardCvvEdit) должен быть в CardInputLayout один раз, при этом не играет роли уровень вложенности View.
Вот как это может выглядеть:

Подводные камни:
Кастомизируя поля ввода стоит помнить:
— cvv2 может быть длиной как 3, так и 4 символа
— номер карты может быть от 14 до 19 символов
— можно добиться максимально точной кастомизации к вашему дизайну, сделав форк SDK и внеся изменения уже в своей реализации layout (это не запрещено делать, если вы не начинаете пропускать реквизиты карты через свой бэкенд). Но сделав форк вы теряете поддержку обновлений SDK со стороны шлюза и интеграцию новых фич
Лайфхак:
Часто можно встретить на форме ввода реквизитов карты инпуты для ввода имени и фамилии картодержателя и его ZIP кода. Для платежей по СНГ нет практической необходимости это делать в 99% случаев — только некоторые банки США, Канады и Великобритании поддерживают эту технологию, которая называется Address Verification System, при этом чтобы проверка сработала, ее должны поддерживать как банк-эквайер, так и банк-эмитент

Кейс 3. Подключаем возможность сканирования карты через камеру и NFC

Функция оптического сканирования карты реализована для Android в библиотеке android-sdk-optical, для iOS в библиотеке CloudipspOptical с использованием card.io SDK.
NFC сканирование реализовано при помощи библиотек android-sdk-nfc и react-native-cloudipsp-nfc и доступно только для Android. Хотя Apple и открыла начиная с версии iOS 11+ сторонним разработчикам возможность читать RFID метки, но чтение EMV тегов с банковских карт по прежнему остается недоступным.


Отличается от обычной реализации наличием NfcCardBridge и навешиванием Intent на него для ожидания события, что карта прочитана (readCard)
Подводные камни:
Хотя считывание карты и выполняется посредством NFC, протоколом финансовой авторизации карты по-прежнему служит обычный card not present. Т.е. для полноценной работы этой функциональности, карта должна быть открыта для платежей в интернет.
Лайфхак:
Написав простое приложение, вы сможете использовать его для перевода средств с чужой карты на свою, поднеся чужую карту к телефону. Например это может быть удобно, если вам необходимо списать небольшую сумму с друга в счет карточного долга. С одной стороны это будет практично и удобно, с другой — вполне эффектно. Для того, чтобы воспользоваться сервисом переводов с карты на карту, необходимо будет предварительно зарегистрироваться на сайте платежной платформы Fondy и привязать банковскую карту, на которую будут поступать средства, в свои финансовые настройки. С целью обеспечения безопасности, сумма, которую можно списать посредством NFC без поддержки 3D-Secure может быть не более эквивалента $4.

Может ли злоумышленник украсть данные карты или деньги, незаметно используя бесконтактные NFC-платежи?

Тема безопасности бесконтактных платежей, основанных на технологии NFC, продолжает будоражить общественность. Исследователи во всем мире пробуют эту технологию «на прочность», проверяя, не слишком ли мы все беспечны, таская карточки в карманах рюкзаков и сумочек. Что можно потерять — только данные карточки или, быть может, и деньги тоже, невзирая на все меры безопасности?

Как преступник может получить деньги или данные с карты, используя терминалы бесконтактной оплаты

Тема-то потенциально серьезная. Мои коллеги по работе уже писали об этом не так давно. Изменилось ли что-то за полгода?

Незаметное считывание

Опыты показали, что стандартные приборы для бесконтактной оплаты: телефоны, PoS-терминалы и тому подобное — действительно работают только на ОЧЕНЬ маленьком расстоянии. Получается, что злоумышленники, конечно, могут извлечь какие-то данные вашей карты, но шанс маленький. К тому же требуются довольно недвусмысленные действия, которые можно заметить со стороны. Считыватель, спрятанный в кармане куртки, тут не поможет…

…При условии, что он стандартный. Из не слишком дорогого набора деталей исследователям удалось собрать комплект, позволявший «подслушивать» транзакции и считывать данные карты на расстоянии до 45 см. Набор, правда, включал в себя рюкзак и тележку из супермаркета, в котором, собственно, и проводился опыт. В общем, с нестандартным считывателем шанс получить данные карты сильно возрастает, но требуется крупногабаритное оборудование.

Несколько интереснее выглядело заражение троянцем Android-телефона с NFC-модулем. В варианте «храню телефон и деньги у сердца» картина вырисовывалась не слишком приятная: считать карты в таком случае гораздо легче, а главное — никто и не заметит. При желании злоумышленники могли бы установить связь с другим телефоном через сотовый канал связи и, пользуясь таким своеобразным «удлинителем», даже купить что-то на сумму менее тысячи рублей — в пределах ограничения «беспиновой» мини-транзакции. Очень хлопотный и неудобный способ, но вроде как реалистичный.

Однако за прошедшее с момента публикации исследования время мне так и не удалось обнаружить ни одного подтвержденного случая успешного «удаленного» покушения на NFC-карты.

Данные…

Многочисленные исследования показали, что хакеру с его супермощным считывателем проще всего частично получить данные карты: номер и дату истечения срока действия плюс некоторую информацию о нескольких последних транзакциях. Маловато для чего-то серьезного? В целом скорее да. Однако исследователи из Which?, например, смогли обнаружить магазин, где полученных данных хватило, чтобы совершить покупку, заметно превышающую лимит «мини-транзакции», не требующей PIN.

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

Простейший вариант — вам звонит по телефону некая девушка «из банка» и с целью проверки/расследования инцидента/по другой очень убедительной причине просит вас назвать дополнительные данные карты, достраивая существующий набор до более полного. Понятно, что на самом деле барышня не из банка, потому что настоящие представители банков никогда так не делают.

…или деньги?

Обычных людей больше всего пугает то, что с их карты могут в теории снять деньги, используя функцию «мини-транзакции», когда для списания денег не нужно вводить PIN-код. Считать, конечно, можно — были бы терминал, способный проводить бесконтактные транзакции, и возможность подобраться с ним поближе к карте.

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

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

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

Что, если…

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

Что делать-то?

Да и надо ли вообще что-то делать? Каждый решает сам. Просто помните, что эксперимент, требующий рюкзака и тележки из супермаркета, завтра может стать реальностью.

Как известно, из-за санкций смартфоны Honor и Huawei не работают с Google Pay. Но вместо него оплачивать покупки можно через систему «Кошелек Pay». Как это работает и с какими трудностями могут столкнуться пользователи антиамериканских смартфонов, разбираемся в статье.


Вместо Google Pay: как платить смартфоном через приложение Кошелек

Приложение «Кошелек»: что это за зверь


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

«Кошелек» поддерживает только карточки от 40 банков

Добавить в приложение любую карту не получится — программа работает только с определенным списком банков/ До недавнего времени она и вовсе поддерживала только карты платежной системы Mastercard, но теперь есть возможность подключать карточки Visa. Владельцы «Мир» все еще остаются с носом, а это очень большое количество людей.

Что касается банков, то их список пока ограничен 40 компаниями, но будет постепенно пополняться. Среди самых известных, которые уже поддерживает «Кошелек Pay», есть Тинькофф, Райффайзен, Альфа, ВТБ и Открытие. Ожидается присоединение Газпромбанка и Мегафона. Однако все еще нет возможности привязывать карты Сбербанка, что мы считаем большим упущением, хотя и объяснимым — недавно российский банк запустил собственную платежную систему SberPay.


Список всех доступных банков можно открыть прямо из приложения или на сайте «Кошелька». Там же указано, какие компании присоединятся к системе в скором времени. Обязательно проверьте актуальные данные перед тем, как решите купить смартфон Huawei или Honor с NFC.

Какой Honor лучше купить: выбираем модель на любой бюджет

Бонусы для пользователей

Если вам повезло и звезды сошлись — то есть, если у вас карточка Mastercard от одного из доступных банков, — вы сможете поучаствовать в розыгрыше призов от Huawei. Для этого надо добавить в приложение свою карту и совершить покупку через «Кошелек Pay».


Понятно, что подобные акции нужны, чтобы привлечь новых пользователей — но все равно приятно иметь возможность что-то выиграть «просто так».

Как все настроить и начать платить

В этом плане все просто и довольно очевидно — справится даже тот, кто раньше не пользовался Google Pay и смартфонами с NFC. Однако просто добавить карту в приложение недостаточно, надо связать ее с функцией оплаты.

Для этого откройте настройки NFC (на Android в них можно перейти через долгий тап по иконке в шторке) и выберите в качестве приложения по умолчанию «Кошелек». Все — теперь можно смело прикладывать телефон к платежным терминалам в магазинах.


Все трансакции, которые проходят через «Кошелек Pay», сохраняются в истории платежей. Чтобы открыть список покупок, перейдите к своей карте в приложении, тапните по трем полоскам в левом верхнем углу и выберите пункт «История операций». Здесь можно узнать время, сумму и название компании, которой ушли деньги. В целом, интерфейс похож на Google Pay.

Удобно ли это?

Мы тестировали приложение на смартфоне Huawei, выпущенном до санкций, поэтому у нас была возможность сравнить работу Google Pay и «Кошелек Pay». Во время оплаты покупок в магазинах проблем не возникло — все терминалы в супермаркетах, аптеках и кафе легко считывали информацию о карте и принимали платеж. Показалось, что Google Pay срабатывает немного быстрее, но это субъективно — время мы не измеряли.

Другое дело, что банковскую карту, привязанную к системе Google, можно использовать не только для оплаты покупок в офлайне — но и при онлайн-переводах. Например, через Google Pay можно оплачивать заказы во многих онлайн-магазинах и сервисах доставки, таких как Delivery Club. С «Кошельком» такая фишка не работает — и неясно, появится ли в ближайшее время.

В конечном итоге можно сделать такой вывод: если вы хотите купить новый смартфон Huawei или Honor, но при этом переживаете за возможность бесконтактной оплаты — то не переживайте. С карточкой Mastercard от одного из «разрешенных» банков с оплатой не будет никаких проблем. Но если ваш телефон поддерживает Google Pay — переходить на «Кошелек Pay» нет никакого смысла. А вот использовать приложение для хранения карт магазинов — очень удобно.

Автор статьи

Куприянов Денис Юрьевич

Куприянов Денис Юрьевич

Юрист частного права

Страница автора

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