Содержание
Что внутри тега?
С технической точки зрения NFC-тег — это микрокомпьютер наподобие тех, что находятся внутри SIM и банковских карт. Здесь есть свой процессор, оперативная и постоянная память, но нет традиционного источника питания. Электрический ток он получает посредством электромагнитной индукции, которая возникает между антеннами считывателя и метки, так же как это происходит в беспроводных зарядных устройствах и пассивных радиоприемниках.
Антенна занимает около 99% площади метки и передает данные на частоте 13,56 МГц со скоростью 106, 212, или 424 Кбит/с. Стандарты NFC определяют несколько протоколов передачи данных, в том числе несколько реализаций протокола обмена данными (они обозначаются буквами A, B и так далее), которые могут быть дополнены производителем самой метки.
Безопасность данных обеспечивается несколькими путями:
- Малая дальность действия. Десять сантиметров — очень приватная зона.
- Защита от клонирования с помощью уникального серийного номера.
- Возможность защиты от перезаписи и защиты данных паролем.
- Опциональное шифрование данных в памяти и при передаче.
Ведущий производитель NFC-тегов — компания NXP Semiconductors. Они производят теги семейства Mifare, которые стали настолько популярны, что совместимость с ними обеспечивают не только другие производители тегов, но и производители NFC-чипов для смартфонов (на уровне эмуляции тегов).
Зачем? что нам это даёт?
Помимо уже очевидных сценариев: пропуска, оплата и проездные — есть приложения, которые умеют класть деньги на карту «Тройка» и другие транспортные карты.
Есть приложение — Считыватель банковских карт. Оно например может показать последние транзакции по карте. Не уверен, что это очень этично, но приложение лежит в Play Market.
Кстати, многих интересует, почему Google и Apple Pay не работают с картами Мир? Дело не в технических особенностях. Просто платежная система не договорилась с сервисами. Платить можно через свое приложение под Android — Мир Pay. Правда оно глючное, а под iPhone его вовсе нет!
Кстати, лайфхак. Если у вашего Android нет NFC, но платить очень хочется, что делать? Можно положить карточку под чехол. Обращайтесь. Правда толстые чехлы могут не пропускать волны даже встроенного NFC — так что проверяйте.
Мы уже поговорили про устройства, но есть вторая важная часть — это NFC метки. Они бывают двух видов.
- Те, на которые можно записывать информацию. Они выглядят как маленькие наклейки. Обычно доступный объем памяти — около 700 байт. Подобные выпускала компания Sony.
Тут можно хранить кучу всего, например:
Такую метку прочитает любой телефон с NFC.
Что делать, если у вас нет NFC меток? Их можно заказать, стоят копейки.
Но можно взять обычную банковскую карту или транспортную, вроде «Тройки». Это закрытые для записи метки. Типичный пример — ваша банковская карта. На них нельзя ничего записать.
Но ваш смартфон можно запрограммировать на любые действия, когда к нему приложат такую штуку.
https://www.youtube.com/watch?v=JqxmDBnCUOs
Если у вас Android, можно поставить приложение например MacroDroid или NFC ReTag. В них можно назначать примерно такие же действия на NFC-теги. Включать/выключать Wi-Fi и звонок, запускать приложения, включать ночной режим. Например, можно сделать так, что когда вы кладете телефон на карту «Тройка», у вас автоматом открывается канал Droider. Рекомендую!
Кстати вот так выглядит содержимое «Тройки».
А еще можете почитать на
Что такое emv карта?
EMV — это международный стандарт для банковских карт с чипом. В разработке этого стандарта принимали участия
E
uropay
M
asterCard
V
ISA, отсюда и название. Попробуем разобраться, как же все таки карта общается с POS-терминалом по бесконтактному интерфейсу.
Начнем с самых основ.
Бесконтактная EMV карта на физическом уровне работает почти так же, как и RFID метка. Если базисно то, чип попадает в электромагнитное поле, а в замкнутом проводящем контуре (в нашем случае это будет антенна, расположенная по периметру), помещенном в переменное магнитное поле, образуется переменный электрический ток.
Этот ток заряжает специальный конденсатор, подключенный параллельно к резонансному контуру карты. Энергия, запасенная в конденсаторе, используется для выполнения микросхемой карты различных операций. Когда ридер изменяет электромагнитное поле, изменения сразу будут заметны на чипе.
Используя модуляцию сигнала, мы можем передавать информацию в бинарном виде. Если на карте подключить нагрузочное сопротивление и или изменить емкость конденсатора, то можно изменить силу тока в контуре карты, что приведет к изменению создаваемого им электромагнитного поля в области контура ридера, таким образом карточка передает данные.
Сам чип карты представляет собой смарт карту, на которой работает JavaCard, отдельная версия Java для платформ с малыми вычислительными ресурсами и поддержкой криптографических алгоритмов. На JavaCard загружаются апплеты, которые, и являются приложениями.
Также существует GlobalPlatform это некий стандарт для JavaCard, который предоставляет возможность безопасного управления данными на карте и позволяет загружать, изменять и удалять приложения на карте. В этой статье механизмы безопасности самой смарт карты мы рассматривать не будем.
Также еще напомню немного терминологии, для тех, кто не знаком.
POS-терминал (Point of Sale) — устройство продавца, которое считывает карту и инициирует платеж. Далее будем называть это устройство просто терминалом. Банк эмитент — это банк, который выпустил вашу карту.Банк эквайер — банк, который выдает продавцам POS-терминалы и обрабатывает платежи с них.
Платежная система — центральное звено между банком эквайером и банком эмитентом, через нее проходят абсолютно все платежи, и она знает какой банк какому сколько должен перевести денег. Платежных систем в мире не мало, кроме всем известных Visa и MasterCard есть ещё и American Express, China UnionPay и российская платежная система МИР.
Хорошо, карта и ридер могут общаться. Они посылают друг другу APDU-команды в виде Tag-Length-Value т.е. передается название тэга в шестнадцатеричном виде, его длина и само значение. Все команды описаны конечно же в документации и выглядят примерно так:
Стандартная EMV транзакция проходит в несколько этапов, я опишу полный алгоритм взаимодействия в случае контактного интерфейса, для бесконтактного интерфейса алгоритм несколько укорочен:
Коротко рассмотрим каждую операцию.
Выбор приложения. Часто бывает, что на одной карте может быть несколько приложений. Например, банковская карта и проездной билет. И терминалу как-то необходимо разобраться, где и какой алгоритм ему использовать. Для выбора приложения используются так называемые Идентификационные Коды приложения (Application Identifier – AID).
Что бы в этом разобраться терминал посылает команду SELECT. Например, AID карты Visa Classic будет выглядеть следующим образом: A0000000031010. Если в ответ придет несколько таких кодов и терминал умеет работать с несколькими приложениями, то терминал выведет на экран список и предложит выбрать нужное нам приложение. Если терминал не поддерживает ни один из кодов приложений, то операция будет отклонена терминалом.
Инициализация обработки приложения. Здесь сначала проверяется географическое место пребывания. Например, карты Maestro Momentum могут работать для оплаты только в России. Этот этап сделан для того, чтобы предоставить эмитентам возможность применять существующие онлайн методы риск-менеджмента при проведении офлайн операций.
На этом этапе EMV-транзакция может быть отменена по инициативе самой карты, если данный тип операции запрещен в данной стране мира эмитентом. Далее карта передает терминалу набор специально структурированной информации, содержащей описание функциональности карты и приложения.
Считывание данных приложения. Терминалу передаются различные данные карты необходимые для транзакции, например номер карты, expiration date, счетчик транзакций и много других данных. О некоторых из них будет сказано далее.
Пример данных:
Также передается сертификат публичного ключа банка эмитента и самой карты. Для того чтобы терминал был способен проверить цифровую подпись некоторых данных карты используется PKI-инфраструктура (Public Key Infrastructure). Вкратце, у платежной системы есть пара ключей — публичный и приватный и платежная система является для всех участников CA (Center Authority).
По сути платежная система для каждого банка эмитента выпускает новую пару ключей, и при этом формирует сертификат публичного ключа банка эмитента, подписывая его приватным ключом CA. Далее, когда банк выпускает новую карту, он соответственно генерирует для карточки пару ключей, и также формирует сертификат публичного ключа карты, подписывая его с помощью приватного ключа банка.
В терминалах обычно зашит сертификат публичного ключа для различных платежных систем. Таким образом, когда карточка передает сертификат публичного ключа банка эмитента и сертификат самой карты, терминал может с легкостью проверить всю цепочку, используя публичный ключ платежной системы.
Терминал с помощью публичного ключа платежной системы сначала проверяет подлинность сертификата банка эмитента, если он подлинный, то значит ему можно доверять и теперь с помощью сертификата банка эмитента можно проверить сертификат самой карты. Более подробней в статье про безопасность EMV .
Офлайн аутентификация. Терминал определяет тип поддерживаемого метода оффлайн аутентификации. Существует статичная (Static Data Authentication – SDA), динамическая (Dynamic Data Authentication – DDA) и комбинированная (Combined Data Authentication – CDA).
Эти методы также построены на основе PKI. SDA это просто подписанные данные на приватном ключе банка эмитента, DDA — терминал посылает какое-то случайное число и карточка должна подписать его, используя свой приватный ключ, а терминал проверит эту подпись используя полученный ранее сертификат карты, таким образом терминал удостовериться в том, что карточка и правда обладает приватным ключом — следовательно является подлинной. CDA это просто комбинация обоих способов.
Обработка ограничений. Здесь терминал проверяет полученные ранее данные с карты на условие пригодности для данной операции. Например, проверяет срок начала/окончания действия приложения Application Expiration Date (Tag ‘5F24’) и Application Effective Date (Tag ‘5F25’).
Также производится проверка версии приложения. Результаты операций, проводимых на данном этапе, также записываются в отчет TVR (Terminal verification results). По результатам этого этапа транзакция не может быть отменена, даже в случае, если, например, срок действия приложения истек.
Проверка держателя карты. Верификация держателя карты производится для того, чтобы аутентифицировать человека, предоставившего карту и проверить, является ли он подлинным владельцем карты. Стандарт EMV предоставляет различные методы верификации держателя карты (Cardholder Verification Method).
Список поддерживаемых методов верификации:
Вот
также есть интересная информация на эту тему.
Риск-менеджмент на стороне терминала. На этом этапе терминал проводит внутреннюю проверку параметров транзакции, исходя из установок риск-менеджмента банка-эквайера. Процедуры риск-менеджмента могут быть выполнены терминалом в любое время между моментами завершения процесса чтения данных карты и формирования терминалом первой команды GENERATE AC. Риск-менеджмент на стороне терминала включает в себя три механизма:
Анализ действий терминала. На этом этапе терминал анализирует результаты предыдущих шагов транзакции. По результатам анализа терминал принимает решение о том, следует ли провести операцию в online-режиме, разрешить ее проведение в офлайн режиме или отклонить операцию.
Риск-менеджмент на стороне карты. Карта, получив из команды GENERATE AC данные, касающиеся транзакции, терминала и результатов проверок терминала, в свою очередь выполняет собственные процедуры управления рисками и выносит собственное решение о способе завершения операции.
Анализ действий карты. На этом этапе карта завершает проведение процедур риск-менеджмента и формирует ответную криптограмму терминалу. Если карта решает одобрить транзакцию, то формируется Transaction Certificate. Если карта принимает решение о выполнение операции в режиме реального времени, то она формирует ARQC (Authorization Request Cryptogram).
Еще одна криптограмма ARPC (Authorization Response Cryptogram) нужна для аутентификации эмитента. Эмитент формирует криптограмму ARPC и отсылает криптограмму карте, если карта подтвердит пришедшую криптограмму, то следовательно, эмитент аутентифицирован картой.
Немного о безопасности ключей и взаимной аутентификации карты и эмитента из книги И. М. Голдовского:
Смысл взаимной аутентификации заключается в том, что карта и терминал аутентифицируют друг друга с помощью проверки подлинности криптограмм ARQC и ARPC. Криптограммы представляют собой данные, формируемые с использованием секретного ключа (который известен карте и банку эмитенту), номера транзакции, случайного числа, сгенерированного терминалом, а также некоторых реквизитов транзакции, терминала и карты. В случае ARPC к перечисленным данным еще добавляется авторизационный код ответа эмитента. Без знания секретного ключа карты для генерации криптограммы вычислить значения ARQC/ARPC невозможно за обозримое время с текущим уровнем технологий, и потому факт их успешной верификации указывает на подлинность карты и эмитента. Онлайн аутентификация является наиболее надежным способом аутентификации карты. Это связано с тем, что она выполняется непосредственно эмитентом, без посредника в виде терминала. Кроме того, для онлайновой аутентификации используется алгоритм 3DES с временным ключом размером 112 битов, криптостойкость которого соответствует криптостойкости алгоритма RSA с длиной модуля асимметричного ключа, используемого для офлайн аутентификации приложения карты, более 1700 бит. Использование на карте асимметричных ключей такой длины все еще достаточная редкость. Обычно используются ключи с модулем длиной 1024, 1152 или 1408 бит.
В конечном итоге онлайн транзакция проходит по цепочке: Карта <–> POS-Терминал <–> Банк Эквайер <–> Платежная Система <–> Банк Эмитент.
Google pay (гугл пей, gpay, или ранее android pay)
Система от IT-гиганта. Устанавливается на ОС Android. Установит можно из официального магазина Google Play. Для этого нужна учетная запись в Гугл.
Внимание! Если у вас телефон, от компании которая находится под санкциями США – могут быть проблемы.
После установки, при первом запуске, вас попросят внести информацию о себе. Адрес, телефон. Это требование законодательства.
Обязательно нужна будет блокировка экрана. Неважно каким образом, пароль, графический ключ….
Затем привязываем банковскую карту. Выбираем пункт “ добавить способ оплаты”. Вносим всю необходимую информацию. Дожидаемся смс с кодом активации. Ждем несколько минут, пока не придет уведомление от банка. Все, теперь можно оплачивать с использованием NFC модуля. Если несколько привязанных платежных средств- установите одну, по умолчанию.
В магазине, просто запустите приложение. На экране смартфона увидите выбранную карту и значок готовности. Поднесите к терминалу. Услышите характерный звук – все прошло.
Приложение покажет стоимость, название магазина (берется из данных терминала). Все будет сохраняться в истории платежей.
Отдельно стоит отметить, что GPay можно оплачивать в онлайн магазинах ( их количество увеличивается, даже многие интернет провайдеры сейчас подключились к нему). Также в приложение можно добавить идентификатор программы лояльности.
Google Pay (Гугл пей, GPay, или ранее android Pay)
Nfc taginfo
Для начала разберемся, что за теги нам достались. Китайцы обычно никаких подробностей на этот счет не сообщают, а уж о картах метро я вообще молчу. Запускаем NFC TagInfo и подносим смартфон к тегу. Далее тапаем по пункту Tag Information и смотрим (скриншот «Читаем NFC-тег»), что мы имеем:
- UID — уникальный идентификатор тега;
- RF Technology — стандарт, поддерживаемый тегом. В данном случае это ISO/IEC 14443 Type A, то есть обычный RFID-тег c поддержкой первой версии протокола обмена данными (Type A);
- Tag Type — тип (или, лучше сказать, «модель») тега. В данном случае NTAG203 — это Mifare Ultralight C, самый дешевый на данный момент тег. Буква C означает поддержку криптозащиты данных. Еще бывает Topaz 512, который вмещает 450 байт информации, и Mifare Classic 1K (716 байт), используемый в тегах TecTile и нередко в картах метро;
- Manufacturer — производитель тега. NXP Semiconductors — 90% всех NFC-тегов делают они (семейство Mifare).

Sim-карты
Внешне симки с NFC модулем выглядят также, как и обычные. Есть форматы:
Приобрести такую несложно в мобильном салоне. При наличии карты без НФС, пользователь имеет возможность произвести бесплатную замену на ту, которая с модулем. При помощи такого встраиваемого чипа, можно переводить деньги со счета на счет, осуществлять бесконтактные платежи в торговых точках, платить за проезд, покупать билеты в кино.
В данном случае следует учитывать, что:
- потребуется привязать к сим-карте банковскую карту;
- во время проплат не будет никакой идентификации личности, что не совсем безопасно;
- порой приходится менять оператора, так как не все выпускают сим-карты с НФС (поддерживают технологию операторы: Билайн, МТС, Мегафон, Йота, Теле2).
Для установки карточки с чипом бесконтактной оплаты, нужно:
- Позвонить в салон и убедиться в наличии симки с модулем.
- Посетить офис и обменять старую карточку или просто купить новую СИМ.
- Поставить симку в смартфон.
- Осуществить привязку банковского инструмента.
Одна симка может держать в себе несколько платежных инструментов. Поддерживаемыми финансовыми организациями являются:
- МТС;
- Райфайзен;
- ВТБ24;
- Яндекс Деньги;
- Тинькофф;
- Сбербанк и др.
Узнать, можно ли карту вашего банка привязать к сим-карте, несложно у консультанта самого финансового учреждения.
Чтобы пополнить счет сим-карты с модулем НФС, можно:
- сделать банковский перевод;
- открыть онлайн-приложение;
- воспользоваться банкоматом;
- использовать официальный сайт мобильного оператора;
- посетить кассу банка.
Нужная сумма поступит на счет за секунды.
Вместо введения
NFC расшифровывается как Near Field Communication или «ближняя бесконтактная связь», если по-русски. По своей сути это небольшой чип, который может быть встроен в смартфон с целью передачи данных на очень короткие расстояния с весьма мизерной скоростью.
NFC очень близка к технологии RFID, которая уже давным-давно используется для пометки продуктов в супермаркетах, но базируется на ее более позднем стандарте ISO/IEC 14443 (смарт-карты) и спроектирована для использования в переносной электронике (читай: смартфонах) и выполнения безопасных транзакций (читай: оплаты покупок).
Как и в случае со стандартом ISO/IEC 14443, дальность действия NFC всего 5–10 см, но разница в том, что чип NFC способен выполнять функцию тега и считывателя одновременно. Другими словами, оснащенный NFC смартфон может быть как смарт-картой (картой метро, например), которую достаточно поднести к считывателю, чтобы расплатиться, так и самим считывателем, что можно использовать, например, для перевода средств между картами-смартфонами и превращения реальных карт с поддержкой стандарта ISO/IEC 14443 в виртуальные.
Но это только «одно из» и наиболее очевидное применение NFC. Благодаря тому, что чип NFC способен передавать данные в обе стороны и не требует аутентификации устройств, его можно использовать как простую и более удобную замену Bluetooth. С помощью NFC, например, можно делиться ссылками, паролями, контактными и другими данными между смартфонами, просто поднеся их друг к другу.
Появившаяся в Android 4.0 технология Beam еще больше расширяет границы применения NFC, позволяя быстро переносить между устройствами целые файлы и папки, что достигается с помощью предварительной аутентификации Bluetooth-устройств по NFC и последующей установки Bluetooth-соединения и отправки файлов.
Как и в предыдущем случае, все, что требуется для передачи, — просто поднести телефоны друг к другу. В прошивках Samsung эта функция носит имя S-Beam и позволяет использовать в качестве «транспортного канала» не только синезуб, но и Wi-Fi (один из смартфонов превращается в точку доступа).
Еще одна возможность — использование пассивных NFC-тегов. Такие теги в виде небольших наклеек можно приобрести за полдоллара за штуку и перепрограммировать с помощью смартфона. Каждый из них может вмещать в себя 137 байт информации (в случае самого распространенного и дешевого тега Mifire Ultralight C), для считывания которой опять же достаточно просто поднести смартфон.
В тег можно записать пароль от домашнего Wi-Fi и приклеить на роутер. Или кодовое слово, на которое будет реагировать смартфон. Можно организовать автоматический запуск навигатора при установке смартфона в держатель в автомобиле или включение бесшумного и энергосберегающего режимов, когда телефон находится на прикроватной тумбочке. Небольшой список покупок в 137 байт тоже вполне вместится.
В этой статье мы поговорим обо всех возможных применениях NFC на практике, но так как в нашей стране оплата покупок с его помощью внедрена примерно нигде, то речь пойдет преимущественно об автоматизации на основе меток.
Поддержка в смартфонах
Первым телефоном с интегрированной поддержкой NFC был Nokia 6131, выпущенный еще в 2006 году. Тогда встроенный NFC-чип был всего лишь игрушкой для демонстрации возможностей созданной два года назад технологии. Смартфон был оснащен софтом для считывания NFC-меток, но ввиду их тогдашней дороговизны и почти нулевой популярности технологии ни на какое серьезное применение данная особенность смартфона не претендовала.
После некоторого затишья популяризацией NFC занялась компания Google, выпустившая в 2022 году смартфон Samsung Nexus S и приложение Google Wallet, которое позволяло расплачиваться виртуальными кредитками, используя NFC. На следующий год Google стала ведущим участником NFC Forum и представила Android 4.0 и основанный на нем смартфон Samsung Galaxy Nexus, который теперь мог похвастаться наличием той самой функции Beam. Позже появился Nexus 4, и наконец начали подтягиваться другие производители.
Сегодня NFC оснащаются почти все выпускаемые смартфоны. Соответствующий модуль есть даже в сверхбюджетных чипах Mediatek, так что большая часть новых китайских смартфонов стоимостью 5000 рублей тоже им оснащены. В любом случае присутствие чипа NFC легко проверить по наличию пункта «Беспроводные сети -> NFC» в настройках.
Для чего нужен
Модуль NFC сегодня значительно облегчает жизнь человеку. Его используют в различных областях. Один из них — платежные операции в магазинах и супермаркетах. Микрочип NFC заменяет банковские карты. Для оплаты покупок достаточно просто приложить разблокированный смартфон к терминалу. Контакт ближнего действия нередко используют в повседневной жизни для решения каких-либо задач:
- Ключ от дверного замка. НФС помогает открывать двери, оснащенные специальным ридером. Система работает в небольшом диапазоне — до 15-20 см.
- В западных странах НФС постепенно вытесняет QR-код, теперь информацию о товарах в магазине можно отслеживать новым способом. Однако в России этот метод используют нечасто, поэтому при просмотре информации придется немного подождать, пока данные загрузятся.
- Управление устройствами, имеющими метку. При снабжении некоторых устройств модулями НФС, можно управлять ими при помощи телефона. К примеру, включать колонки или принтеры путем прикладывания телефона к ним. Технология позволяет сопрягать смартфоны с фитнес-браслетами, айподами, планшетами и считывать с них необходимую информацию.
PayPass: что это в карте, как работает, как пользоваться
Module NFC помогает обмениваться данными между двумя гаджетами. Для этого нужно приложить телефоны задними панелями друг к другу и дождаться окончания загрузки выбранных файлов.
Важно! Сегодня модуль NFS работает на Android и IOS. Пользоваться можно на телефонах разных производителей (Xiaomi, iPhone, Самсунг и др.).
Домашняя автоматизация
Наиболее простой и очевидный способ использования тегов — это просто расклеить их по дому с целью получить своего рода систему автоматизации. Здесь существует множество различных вариантов. Приведу наиболее интересные и полезные.
- Пароль от домашнего Wi-Fi. Клеим тег на роутер и записываем в него пароль с помощью приложения InstaWifi. Пригодится не только тем, кто часто принимает гостей, но и любителям экспериментов с прошивками.
- Запуск автосинхронизации или приложения для обмена данными с ПК. Тег можно приклеить на ноутбук или системник и прописать в него запуск приложения для синхронизации данных (AirDroid, WiFi ADB и другие).
- Включение точки доступа. Опять же клеим тег на ноутбук, далее устанавливаем приложение Trigger. В нем добавляем новое задание, в качестве триггера выбираем NFC, пропускаем выбор ограничений, в качестве действия выбираем «Беспроводные и локальные сети -> Wifi-зона», пропускаем следующий экран (добавление переключателя) и на последнем экране подносим к NFC-тегу.
- Включение режима полета на ночь. Клеим метку куда-нибудь ближе к кровати. Запускаем Trigger, новое задание -> триггер: NFC -> действие: «Экспериментальные -> Режим в самолете». Как вариант, вместо включения режима самолета можно настроить отключение передачи данных и Wi-Fi, добавив соответствующие действия в задание.
Зарядка
Если к этому моменты вы решили, что все знаете об NFC и устали от этих унылых применений. То вот вам кое-что бомбическое.
Есть такая организация NFC Forum, которая сертифицирует NFC. Вообще у каждой технологии есть такая организация, и хорошо если она одна.
И вот на днях они выложили очередной апдейт стандарта. И знаете что? Теперь NFC поддерживает беспроводную зарядку. Да, по сути, это четвёртый режим работы.
Как спросите вы? Электромагнитная индукция, помните? При помощи нее.
К слову Qi-зарядка работает точно по такому же принципу. Только там катушка побольше.
Но есть одна проблема. Катушка у NFC маленькая, а значит и мощность зарядки маленькая — всего 1 Ватт.
Можно ли зарядить смартфон с такой скоростью? Не стоит даже пробовать. Впрочем, функцию для этого и не придумывали.
Основное назначение ровно противоположное — зарядка смартфоном других устройств. Это вроде реверсивной зарядки в Galaxy и других смартфонах. Например, можно подпитать сами беспроводные наушники, а не кейс от них. По сути, перед нами очень дешевая беспроводная зарядка, которая есть в любом смартфоне и которую легко вставить в любое умное устройство.
Кстати 1 Ватт это не то чтобы слишком мало. Для сравнения со всеми iPhone кроме 11 Pro, кладут 5-ваттную зарядку. А мощность обратной беспроводной зарядки в современных флагманах колеблется на отметке 5 или 7 Вт.
Но есть одно но — на текущих моделях эта фича не заработает. Смартфоны с с такой фишкой скорее всего начнут появляться через год-полтора. Так что ждите рекламу этой штуки от Samsung.
Как добавить чип nfc в смартфон
Что делать, если модуля в телефоне нет? Для начала стоит проверить, так ли это, для чего можно снять крышку (при том условии, что модель девайса подразумевает эту возможность) и осмотреть батарею. Если девайс поддерживает NFC, здесь будет соответствующее обозначение.
В ситуации, когда конструкция не предполагает снятия крышки, значок или надпись размещается на внешней стороне корпуса. Кроме того, смартфоны, поддерживающие технологию, позволяют активировать или деактивировать опцию в настройках. Чтобы узнать, есть ли на вашем смартфоне НФС, идём в «Настройки» – «Беспроводные сети» – «Ещё». Здесь вы увидите нужный пункт меню при наличии NFC.
Если чип отсутствует, это не означает, что воспользоваться технологией вы не сможете, причём для этого необязательно покупать новый смартфон. Добавить поддержку NFC можно практически в любой мобильный девайс одним из нескольких способов, возможность реализации которых напрямую зависит от конструктивных особенностей аппарата. Решение состоит в добавлении специального внешнего модуля, представленного в одном из вариантов:
- метки НФС, выполненные в виде наклеек, брелоков, колец, браслетов и т. д.;
- SIM-карты со встроенным модулем NFC;
- антенны, устанавливаемые под крышку телефона.
При этом внешние модули могут быть пассивными или активными. Первые не дают возможности полноценного обмена данными, вторые предполагают передачу информации с применением Bluetooth и Wi-fi, что повысит расход заряда батареи.
Как проверить, поддерживает ли телефон nfc
Сразу нужно предупредить, что не все мобильные устройства поддерживают такую технологию, особенно это касается устаревших моделей. Сейчас разработчики стараются установить данный чип в каждый свой телефон. У популярного бренда Apple модули стали появляться с Айфона 6 версии и выше, а у Самсунг у последних линеек с буквой S и J в наименовании.
Если не знаете, но хотите проверить, установлен ли у вас модуль NFC, то существует несколько простых способов уточнить это:
- Попробуйте снять заднюю крышку мобильного устройства, если она съемная. На поверхности аккумуляторной батареи или внутренней стороне крышки увидите соответствующий значок NFC.
- Иногда смартфоны выпускаются с цельным корпусом и встроенной батареей. В данном случае значок располагается на задней стенке самого телефона.
- Чтобы не заморачиваться в сборке и разборке девайса, зайдите в его системные настройки. Перейдите в раздел беспроводного доступа, если технология доступна для вас, то в перечне функций найдете ее.
На некоторых смартфонах NFC встроен в конструкцию, но требует ручной активации, иначе он работать не будет. Для запуска потребуется:
- Зайти в настройки мобильного телефона и выбрать вкладку сетей беспроводного доступа.
- Найти пункт NFC и нажать на него.
- На дисплее появится меню наладки. Поставить флажок в активное состояние.
- Аналогичным способом запуск можно произвести из всплывающего верхнего меню.
Клонируем карту mastercard в режиме magstripe
Перейдем непосредственно к принципу клонирования. Данный метод атаки на бесконтактные карты был опубликован двумя исследователями
из Австрийского университета. В его основе лежит общий принцип, который называется
Skimming
. Это такой сценарий, при котором злоумышленник крадет деньги с банковской карточки путем считывания (копирования) информации с этой карты. В общем случае здесь важно сохранять PIN-код в тайне и не допускать его утечки. Но в методе австрийских ребят это нам знать не нужно.
(MasterCard PayPass M/Chip)MagStripe (MasterCard PayPass MagStripe)
режим.
MagStripe — это режим поддержки карт с магнитной полосой. Этот режим реализуется на картах MasterCard с бесконтактным интерфейсом. Режим MagStripe скорее нужен для банков которым сложно переводить всю инфраструктуру для поддержки чиповых бесконтактных EMV транзакций. Кстати, у карт Visa также есть аналогичный режим работы — PayWave MSD (Magnetic Stripe Data).
Процесс обработки транзакции для бесконтактных карт урезан в сравнении с чиповыми и обычно работает в следующем режиме:
- Терминал отправляет команду SELECT PPSE (Proximity Payment System Environment). Карта шлет список поддерживаемых приложений.
- Терминал отправляет команду SELECT. В ответ получает необходимые детали приложения.
- Терминал отправляет команду GET_PROCESSING_OPTIONS. Карта отвечает какой тип аутентификации она поддерживает и существует ли там верификация держателя карты.
- Терминал отправляет команду READ_RECORDS. Карта в ответе посылает Track1 и Track2 практически аналогичный тому, что записан на магнитной полосе карты.
- Терминал отправляет команду COMPUTE_CRYPTOGRAPHIC_CHECKSUM. Которая означает, что карта должна на основе переданного Unpredictable Number сгенерировать значение CVC3.
Карта поддерживает специальную команду COMPUTE CRYPTOGRAPHIC CHECKSUM, аргументом которой являются данные, определенные в объекте Unpredictable Number Data Object (UDOL).
В результате карта с помощью алгоритма 3DES и секретного ключа вычисляет динамическую величину CVC3 (Card Verification Code).
В качестве аргумента функции 3DES используется конкатенация данных UDOL и счетчика транзакции (Application Transaction Counter,ATC).
Таким образом, значение величины CVC3 всегда зависит от объектов UN и ATC.
Другими словами, эта команда нужна, чтобы карта сгенерировала некую “подпись” для того, чтобы эмитент мог верифицировать карту. Однако, в этой подписи отсутствует подпись самой транзакции. В подписи содержатся значения ATC — 2 байта, CVC3 (Track1)
— 2 байта, CVC3 (Track2) — 2 байта, которые генерируются картой на основе секретного ключа, который также знает банк-эмитент и счетчика транзакций (ATC). При этом также для генерации подписи POS-терминал сообщает карте UN (Unpredictable Number)
— 4 байта, который также используется в генерации подписи. Unpredictable Number препятствует формированию кодов аутентификации на реальной карте для последующего использования в мошеннических транзакциях. Для атаки нам сильно мешает UN, поскольку 4 байта не представляется возможным перебрать, не выйдя за пределы счетчика транзакций. Однако, в спецификации этого есть некоторые слабости.
Во-первых, спецификация ограничивает UN кодировкой чисел, а именно Двоично-Десятичным Кодом (BCD), что по сути означает что, если мы посмотрим на такое закодированное число в HEX, то мы увидим только цифры от 0 до 9, все остальные значения считаются как бы запрещенными. Таким образом, количество UN уменьшается с 4,294,967,295 до 99,999,999.
Во-вторых, количество значащих цифр UN определяется картой. Таким образом в зависимости от специальных параметров в треках количество цифр в UN может быть от 10 до 10000 в зависимости от типа карты, на практике чаще всего встречается 1000 значений.
Таким образом план атаки выглядит следующий:
- Считываем карту и узнаем количество значащих цифр у UN, которое будет предоставлять терминал
- Перебираем все UN, получаем все возможные значения функции COMPUTE_CRYPTOGRAHIC_CHECKSUM, сохраняем их в соответствующей таблице с мапингом UN -> Result
- Подносим к POS-терминалу, узнаем число, которое просит POS-терминал.
- Выбираем из таблицы нужный результат и подставляем его в ответ терминалу.
- Транзакция уходит.
- PROFIT. Но успех одобрения транзакции не гарантирован, поскольку банк эмитент может отклонить такую транзакцию.
Стоит отметить также, что счетчик транзакций (ATC) препятствует повторному использованию ранее использованных кодов аутентификации, а значит что если мы использовали такую атаку, то необходимо копировать карту заново, поскольку счетчик транзакции уже использовался для получения информации и был использован в подписи, что значит, что если мы имели счетчик транзакций 1000, а после отправили транзакцию в банк, то банк уже не примет транзакции со счетчиком ниже <1001.
В большинстве случаев передаваемые данные с карты статические для всех транзакций. Конечно, кроме COMPUTE_CRYPTOGRAPHIC_CHECKSUM. Для генерации динамического CVC3 кода, приложение карты должно быть прочитано командой SELECT, затем GET_PROCESSING_OPTIONS, а только потом COMPUTE_CRYPTOGRACHIC_CHECKSUM и это довольно важный момент.
Для работы с терминалом и картой использовалась программа Terminal Simulator от MasterCard. Он прекрасно работает с различными NFC-считывателями и считывателями смарт карт. К тому же он абсолютно бесплатен. Он позволяет тестировать карты при различных настройках POS-терминала и ведет подробный лог всех запросов от терминала и ответов карты. Также его можно использовать для тестирования приложения на телефоне, работающего в режиме карты.
Для чтения карты использовался NFC считыватель ACR122.
Теперь давайте попробуем все это преобразовать в код. Приложение будем писать на языке Kotlin под Android. Сначала попытаемся описать общую структуру команды.
data class Command(
var CLA: String = 0x00.toString(),
var INS: String = 0x00.toString(),
var P1: String = "",
var P2: String = "",
var Lc: String = "",
var Nc: String = "",
var Le: String = "",
var Nr: String = "",
var SW1WS2: String = ""
) {
fun split(): ByteArray {
return getHexString().hexToByteArray()
}
fun getHexString() = CLA.plus(INS).plus(P1).plus(P2).plus(Lc).plus(Nc).plus(Le).plus(Nr).plus(SW1WS2)
}
Для начала нам нужно настроить работу с NFC. На телефоне мы можем работать в двух режимах. В режиме карты, это когда мы отвечаем на команды от терминала, и в режиме терминала когда отсылаем команды и производим считывание, например карты. Т.е. сначала мы можем клонировать карту, а потом сделать так чтобы на запросы от терминала мы отвечали уже заготовленными командами.
Далее упрощенная реализация взаимодействия с NFC:
private var nfcAdapter: NfcAdapter? = null /*!< represents the local NFC adapter */
private var tag: Tag? = null /*!< represents an NFC tag that has been discovered */
private lateinit var tagcomm: IsoDep /*!< provides access to ISO-DEP (ISO 14443-4) */
private val nfctechfilter = arrayOf(arrayOf(NfcA::class.java.name)) /*!< NFC tech lists */
private var nfcintent: PendingIntent? = null
....
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
nfcAdapter = NfcAdapter.getDefaultAdapter(this)
nfcintent = PendingIntent.getActivity(this, 0, Intent(this, javaClass).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), 0)
cardEmulation = CardEmulation.getInstance(nfcAdapter)
nfcAdapter?.enableForegroundDispatch(this, nfcintent, null, nfctechfilter)
}
....
override fun onNewIntent(intent: Intent) {
super.onNewIntent(intent)
tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG)
cardReading(tag)
}
.....
override fun onResume() {
super.onResume()
if (canSetPreferredCardEmulationService()) {
this.cardEmulation?.setPreferredService(this, ComponentName(this, "com.nooan.cardpaypasspass.NfcService"));
}
}
override fun onPause() {
if (canSetPreferredCardEmulationService()) {
this.cardEmulation?.unsetPreferredService(this)
}
super.onPause()
}
private fun cardReading(tag: Tag?) {
tagcomm = IsoDep.get(tag)
try {
tagcomm.connect()
} catch (e: IOException) {
error = "Reading card data ... Error tagcomm: " e.message
Toast.makeText(applicationContext, error, Toast.LENGTH_SHORT).show()
return
}
try {
when {
commands != null -> readCardWithOurCommands()
mChip -> readCardMChip()
else -> readCardMagStripe()
}
} catch (e: IOException) {
error = "Reading card data ... Error tranceive: " e.message
Toast.makeText(applicationContext, error, Toast.LENGTH_SHORT).show()
return
} finally {
tagcomm.close()
}
}
protected fun execute(command: Command, log:Boolean): ByteArray {
val bytes = command.split()
listLogs.add(bytes.toHex())
val recv = tagcomm.transceive(bytes)
listLogs.add(recv.toHex())
return recv
}
Здесь описывается последовательность команд и перебор значений Unpredictable Number в цикле от 0 до 999, в нужную нам команду изменяем Nc на «00000${String.format(»d”, i)}”.replace(“..(?!$)”.toRegex(), “$0 “). И не забываем выполнять GET_PROCESSING_OPTIONS каждый раз перед COMPUTE_CRYPTOGRAPHIC_CHECKSUM иначе чек сумма подсчитываться не будет.
В результате это все можно записать в файл и использовать уже при работе с настоящим терминалом. Здесь же мы получаем Имя и Номер карточки, можем отобразить это на экране.
Пишем данные
Для записи данных будем использовать NFC TagWriter. Пользоваться приложением довольно просто. Запускаем, тапаем по пункту Create, write and store, выбираем New, далее выбираем тип записываемых данных. Наиболее полезные типы: контакт, простой текст, телефонный номер, данные для Bluetooth-соединения, URI и приложение. В списке есть даже закладка веб-браузера и email-сообщение, но для чего они нужны, не совсем понятно.

Далее заполняем необходимые поля (например, адрес веб-сайта в случае с URI), нажимаем Next и попадаем на экран опций (скриншот «NFC TagWriter: опции сообщения»). Здесь можно указать приложение, которое будет запущено после прочтения метки (Add launch application) и установить защиту на перезапись сторонним устройством (Apply Soft Protection).

Вновь нажимаем Next и подносим смартфон к тегу. Вуаля, наши данные в нем. Теперь их можно прочитать любым смартфоном с поддержкой NFC. Но что это в конечном итоге дает?
Разблокировка смартфона
У Motorola есть довольно интересный аксессуар для смартфонов под названием Motorola Skip. Это клипса на одежду для быстрой разблокировки смартфона без необходимости введения PIN-кода или графического ключа. Аксессуар в некоторых случаях довольно полезный, но работает он только со смартфонами той же компании. К счастью, аналогичную штуковину можно собрать на коленке.
Не буду рассказывать, как сделать саму клипсу, — тут каждый волен проявить свою фантазию, NFC-тег можно и на руку наклеить, — а вместо этого скажу, как настроить разблокировку смартфона при ее касании. Есть несколько способов, но самый простой и эффективный — это Xposed-модуль NFC LockScreenOff Enabler.
Дело в том, что в целях безопасности Android запрещает использовать NFC до тех пор, пока экран не будет разблокирован (не просто включен, а именно разблокирован), что сводит на нет многие эффективные приемы его использования. NFC LockScreenOff Enabler решает эту проблему.
