Эмуляция nfc метки телефоном: Эмуляция пропусков и других БСК через NFC — Хабр Q&A

Содержание

Эмуляция карты NFC Android — почему нет доступного элемента защиты

Что требуется для эмуляции

Имеется совершенно конкретная технология HCE (Host Card Emulation), которая позволяет воспроизвести дубликат NFC-карты, то есть бесконтактной по методу соединения с внешним миром. Естественно, понадобится некое программное обеспечение, с его помощью и произойдет второе рождение вашего «пластика». О чем речь?

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

https://www.youtube.com/watch?v=ytaboutru

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

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

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

Нужно заметить, что работает связка NFC Android с помощью аккаунта от Google, предварительно заведенного вами, в случае установленной другой операционной системы (на ум приходит только продукция компании Apple) на мобильном устройстве, сделать из него двойник вашего платежного инструмента получится средствами самого телефона. Это значит, что в нем есть вмонтированный чип, в котором лежит буквально все, что касается вашего счета в банке и идентификационных данных.

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

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

Уже упомянутый NFC Card Emulator и Root-права в вашем устройстве. Все дело в том, что для изменения настроек в NFC (без этого не обойтись) придется кое-что изменить в системных файлах. Что под силу только суперпользователю.

Именно здесь кроется подвох, о чем нельзя не упомянуть. Предыдущее описание производства виртуальной платежной карты возможно только на совершенно «чистом» телефоне. Что я имею в виду. У вас должна стоять официальная прошивка, Root-права должны отсутствовать.

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

Метим территорию

Итак, наш план действий: научить смарфтон реагировать определенным образом на определенную же метку NFC. У каждой метки есть идентификатор. Гаджет должен опознать его и выполнить «запрограммированные» действия. Чтобы привязать действия к ID метки нам понадобится одно из подходящих приложений – например, NFC ReTag Free.

ШАГ 1. Качаем из магазина, запускаем. Подносим нашу метку – в данном случае транспортную карту. Приложение опознает ее и сообщает нам идентификатор.

ШАГ 2. Даем метке более понятное обозначение. Жмем на зеленую кнопку «Действия» и видим список действий, которые можем привязать к этой метке.

Тут много всего интересного – запуск приложений, включение Wi-Fi, изменение громкости сигнала, звонок на определенный номер…

 ШАГ 3. Выбираем для примера запуск Яндекс.Навигатора.

ШАГ 4. Ждем кнопку ОК – собственно, все готово. Проверяем результат. Подносим разблокированный смартфон к транспортной карте, и вуаля: навигатор запускается автоматически. Мы взяли самую «доступную» метку NFC, но можно купить и более практичную, в форме наклейки. Такую можно наклеить, например, на держатель для смартфона в автомобиле — установите в него гаджет, и навигатор загрузится автоматически.

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

https://www.youtube.com/watch?v=ytcreatorsru

До 2017 года был написан не один десяток статей на эту тему. С приходом новых приложений, таких как Google Pay, Samsung Pay и Apple Pay, страсти улеглись. Процесс виртуализации физического «пластика» заметно упростился и многие проблемы, связанные с этой процедурой, отпали сами собой. В марте прошлого года был запущен проект Android Pay (детище Google, впоследствии переработанное в современный вариант), детально описанный и донельзя конкретизированный. Изменения в алгоритме эмуляции с тех пор почти не произошли.

Вот как это работает сегодня.

Можно программировать не одно событие, а целую цепочку. Экспериментируйте!

Возможные проблемы

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

https://www.youtube.com/watch?v=ytcopyrightru

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

11 приложений для создания NFC-меток

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

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

NFC Tools (Windows, macOS, Android, iOS)

NFC Tools — одно из первых приложений, которое приходит на ум. С его помощью можно читать, записывать и программировать NFC- и RFID-совместимые метки.

Всё работает довольно просто. Запускаете приложение, прикладываете метку, задаёте нужные действия. Кроме простой записи информации, NFC Tools позволяет запрограммировать автоматизацию рутинных действий: включить Bluetooth, установить будильник, изменить громкость, передать конфигурацию Wi-Fi и многое другое.

На вкладке «Чтение» можно узнать такую информацию о метке, как:

  • Производитель;
  • Тип;
  • Стандарт;
  • Технология;
  • Серийный номер;
  • Размер;
  • Данные на ней;
  • Возможность записи на неё;
  • Режим «только для чтения»;
  • Все данные (формат NDEF).

А на вкладке «Запись» все вышеперечисленные пункты можно добавить на метку.

Скачать

NFC TagWriter (Android)

NFC TagWriter поможет записать на метку контакты, закладки, геолокацию, данные о Bluetooth Handover, email, текстовые сообщения и многое другое.

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

У разработчиков также есть NFC TagInfo, которое служит для чтения всех данных, хранящихся на метках, включая транспортные билеты и тому подобные вещи.

Скачать

TagXplorer (Windows)

TagXplorer сделан теми же ребятами, что делали приложения выше. И, по сути, является их аналогом, но для Windows-платформы. Поэтому отдельно рассказывать про софтину не буду.

Скачать

Smart NFC (iOS)

Как и аналоги, Smart NFC может читать и записывать NFC-метки. На метку можно добавить любой из поддерживаемых технологией тегов.

Если вы iOS-пользователь, то именно с этого приложения стоит начать.

Скачать

NFC Assistant (Android)

NFC Assistant нужен для выполнения различных действий при распознавании метки. Приложение умеет:

  • Отображать сообщение;
  • Читать заданный текст;
  • Устанавливать будильник;
  • Изменять режим «Не беспокоить»;
  • Управлять Bluetooth;
  • Получать данные о событиях календаря;
  • Получать данные о погоде;
  • Запускать приложение или сайт;
  • Управлять умными устройствами.

Скачать

«Черная» метка NFC. Особенности и возможности технологии

Услышав недавно радостную новость о решении компании Google закрыть Android Pay и Google Wallet, а вместо них сделать единую платёжную систему Google Pay, решил написать о технологии NFC. Рассказать подробно и простым языком, откуда, что и куда.

Mifare Windows Tool (Windows)

Не обращайте внимания на скриншот, в приложении есть английский язык.

Mifare Windows Tool — хоть и простая утилита, но она будет интересна опытным любителям NFC-технологии. С её помощью можно читать, записывать, анализировать и даже клонировать метки.

Если вы знаете хотя бы базово спецификацию MIFARE Classic, и знаете, как применить эти знания, обратите внимание на Mifare Windows Tool.

Скачать

Если у вас под рукой есть карта формата MIFARE DESFire EV1, то вам нужно это приложение, чтобы получить с неё информацию. Поддерживаются типы шифрования AES, (3)DES и 3K3DES.

Скачать

Tx Systems Contactless ID Reader (Windows)

Сразу хочу сказать, что утилита платная ($49,95), и, судя по всему, она больше не поддерживается разработчиком. Хотя купить её можно без проблем.

Tx Systems Contactless ID Reader — Windows-приложение для чтения информации с большинства RFID-совместимых карт. Благодаря технологии эмуляции клавиатуры полученную информацию можно вывести на курсор мыши Windows.

Если честно, я не понял, зачем это нужно. Судя по всему, это упрощает работу с RFID-картами и системами безопасности без необходимости закупки оборудования.

Скачать

Read-a-Card (Windows)

Ещё одно платное и специфическое приложение. Оно необходимо для получения информации с RFID-метки и передачи её в специализированный софт для дальнейшей работы.

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

Скачать

IDTransfer (Windows, Linux)

IDTransfer из той же «оперы», что и два приложения выше. С его помощью можно произвести авторизацию пользователя по RFID-карте в системе. Однако здесь вам понадобится отдельный USB-считыватель карт.

Скачать

Mifare Classic Tool (Windows)

Mifare Classic Tool — очень простая утилита для Windows. Она поможет считать информацию с UID или Mifare карт, записать на них информацию или заменить ключи.

Скачать

Как добавить пропуск в телефон через NFC: привязать, записать

Современная технология бесконтактных соединений имеет ограниченный радиус действия, составляющий не более десяти сантиметров. Процесс происходят на частоте в 13.56 МГц. Считывания информации выполняется автоматически, если пара гаджетов оказалась в зоне действия связи. Устройство НФС не только передает сведения, но и считывает метки, используется, как эмулятор пластиковых карточек, выполняет идентификацию пользователя, позволяя применять мобильное устройство вместо пропускной карты. Предлагаем разобраться, как добавить пропуск в телефон через NFC.

Суть работы

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

Для стабильной работы потребуются:

  • мобильный гаджет на операционной системе Андроид либо iOS;
  • установка мобильного приложения;
  • модуль НФС на телефоне;
  • система СКУД.

Преимущества применения НФС в СКУД

В этой системе возможно применение любого устройства с НФС в качестве:

  • идентификатора – сотрудник, имеющий смартфон, применяет его вместо карточки доступа;
  • считывающего устройства – через смартфон возможна организация контроля за доступом.

Преимуществами при пользовании НФС в СКУД являются:

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

Мобильный телефон с NFC может использоваться, как пропуск на работу, в нескольких контролирующих системах одновременно.

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

Для сотрудника организации такой вариант пропускной системы удобен тем, что в случае потери или отказа бесконтактной карты проблемы не возникнут – смартфон продублирует пропуск.

Безопасность

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

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

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

Чтобы повысить эффективность, в общую систему СКУД разрешается подключать прочие элементы контроля, одним из примеров которых являются видеокамеры.

Как интегрировать пропуск в телефон?

Единственным способом, как скопировать пропуск в смартфон с чипом НФС, считается перестановка микрочипа из карты в телефон вручную. В этом случае адаптер начнет функционировать при любых условиях.

Записать его, как платежную карточку, не получится, потому что чип пропускной карточки функционирует на другой частоте, составляющей 125 КГц, и для дополнительной защиты имеет специальную кодировку.

Итак, как привязать пропуск к телефону с NFC? Алгоритм действий выглядит следующим образом:

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

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

Заключение

Теперь вы знаете, как самостоятельно эмулировать пропуск на мобильном телефоне с NFC. Проверить качество работы можно только при посещении рабочего места.

Мобильное приложение Parsec Card Emulator | Программное обеспечение

Описание Примечание
Модуль АРМ бюро пропусков Интеграция с VisitorControl, Блокхост-АСЗП
Стандартная версия программного обеспечения с возможностью поддержки 8 точек прохода
Дополнительная рабочая станция для системы
Модуль учета рабочего времени с генератором отчетов
Стандартная версия программного обеспечения с возможностью поддержки неограниченного числа точек прохода
Расширенная версия программного обеспечения для построения крупных территориально распределенных систем безопасности
Модуль интеграции с системами распознавания лиц на основе стандартов Onvif и биометрическими терминалами
Мобильный терминал доступа
Модуль видео верификации в режиме реального времени
Модуль интеграции с системами видеонаблюдения Интеграция с Goal, ITV, LTV, Macroscop, Trassir
Модуль интеграции с системами распознавания лиц и биометрическими терминалами (поканальная лицензия)
Стандартная версия программного обеспечения с возможностью поддержки 32 точек прохода
Стандартная версия программного обеспечения с возможностью поддержки 16 точек прохода
Модуль подготовки шаблонов печати пластиковых карт
Модуль интеграции с оборудованием и системами ОПС Интеграция с ОПС «Стрелец», ПСО «Мурена», ИСО «Орион»
Мобильное приложение-справочник
Модуль автоматического ввода документов со сканера и их распознавание с целью автоматизации оформления заявок на пропуска Интеграция с Regula
Модуль автоматического ввода документов со сканера и их распознавание с целью автоматизации оформления заявок на пропуска Интеграция с ABBYY

Эмуляция карты с помощью программного обеспечения NFC Oh! Android

Прочитав много вопросов, я решил опубликовать это. Я читал, что версия запаса Android не поддерживает API для эмуляции карты. Кроме того, мы не можем писать собственные приложения для защиты элементов, встроенных в контроллеры nfc, из-за ключей, управляемых Google / Самсунгом.

Мне нужно подражать карте (mifare или desfire и т. Д.). Опция, которую я вижу, выполняет с помощью программного обеспечения. У меня есть считыватель ACR122U, и я тестировал, что режим NFC P2P отлично работает с Nexus-S, который у меня есть.

1) Я наткнулся на сайт, в котором говорится, что NFC-контроллер nexus s (pn532) может эмулировать карточку mifare 4k. Если это правда, могу ли я написать / прочитать команды apdu для этой эмулируемой карты? (Возможно, если я использую модифицированный ром, как цианогенмод)

2) Могу ли я написать приложение для Android, которое считывает команды apdu, отправленные от читателя, и генерирует соответствующие ответы (если не полностью, то только в некоторой степени). Для этого я обыскал, что нам нужно исправлять связи с cynagenmod. Кто-то пробовал эмулировать карту с помощью этого метода?

Я вижу, что это возможно, поскольку у нас есть продукты от компаний контроля доступа, предлагающих мобильные приложения, через которые можно открывать двери, например http://www.assaabloy.com/en/com/Products/seos-mobile-access/

Некоторые факты, которые могут помочь в ваших поисках:

  • Контроллер NFC в Nexus S (и Galaxy Nexus, Nexus 7 и многие другие устройства Android) – это PN544
  • Эмуляция карты может быть выполнена либо защищенным элементом, подключенным к контроллеру NFC, либо хост-устройством (в данном случае это устройство Android). Nexus S имеет безопасный элемент, который может быть использован для этого (используется в Google Кошельке). Эмуляция карты с главного устройства не является особенностью контроллера PN544 NFC, хотя некоторые утверждают, что им удалось заставить его работать.
  • Вы можете включить эмуляцию карты защищенным элементом, укоренив свое устройство и следуя инструкциям на https://stackoverflow.com/a/10506299/1202968 (не пробовал это с 4.x JB, но я предполагаю, что он все еще работает).
  • Эмуляция карты MIFARE Classic может быть выполнена защищенным элементом в Nexus S, но не хост-устройством. Эмуляция карты DESFire не поддерживается защищенным элементом в Nexus S.
  • Я исследовал аналогичный продукт дверного замка, который сам использовал эмуляцию карты для связи с мобильным устройством NFC, используя режим чтения / записи карт для связи с контрольными картами доступа.

IMO, двумя простейшими параметрами являются: использование P2P-связи (Android Beam) или использование эмуляции карты в устройстве считывателя (если оно поддерживается). Все остальные варианты требуют таких вещей, как укорененные устройства и пользовательские ПЗУ, которые не являются надежными для будущего и не могут быть переведены на реальный продукт.

2) Эмуляция карт с помощью программного обеспечения должна быть возможна, но не показана в текущих API Android. Вам придется углубиться в libnfc-nxp (и, возможно, ниже). Это может быть сложно. Эта функция предлагается на чипах Inside Secure, как показано в их справочной реализации OpenNFC. Вопрос только в том, требуется ли изменение прошивки CLF. Если нет, вы можете взломать его в программный образ.

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

Я считаю, что SEOS основана на ISO14443-4, а не на Mifare. Это означает, что вам нужен безопасный элемент для его запуска.

1) Не слишком уверен в этом, я полагаю, что это все равно будет аппаратно (например, зависит от встроенного защищенного элемента, такого как SmartMX от NXP.

Другая альтернатива – начать разработку на безопасном элементе. Самый простой способ – получить некоторые тестовые SIM-карты с поддержкой SWP / HCI. Существует бесплатный набор разработчика под названием IzyNFC, который вы можете использовать для javacard, а также технические документы GSMA и AFSCM для стороннего приложения Android.

отличия, преимущества и недостатки, сферы использования


Технологии ближней бесконтактной связи (NFC) и радиочастотной идентификации (RFID) используются для обмена данными с помощью радиоволн. Их родство очевидно – обе технологии работаю на радиоволнах. Но когда выбирают между RFID и NFC отличия в диапазоне волн и дальности передачи сигнала являются решающим критерием.


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

RFID и NFC: в чем разница?


RFID-система состоит из трех компонентов: радиочастотной метки, считывающего информацию ридера и специализированного ПО. RFID-системы могут быть пассивными и активными. В пассивных


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


Связь между меткой и ридером в RFID-системах однонаправленная – данные записаны на метке, ридер может их сканировать, дополнять и кодировать, однако сам никаких данных не хранит. NFC-системы используются для более сложной коммуникации с получением обратной связи. Каждое устройство может выступать одновременно и считывателем, и меткой. Это позволяет осуществлять не только однонаправленную, но и двунаправленную (равноправную) связь в режиме P2P (peer-to-peer) – обмен информацией возможен в 2-х направлениях одномоментно.


RFID и NFC

RFID-технология: преимущества и недостатки


Для поиска и считывания информации в RFID-системах нет необходимости в прямой видимости маркированного объекта или контакте метки и ридера. Поиск и считывание меток могут выполняться даже через упаковку или на расстоянии – от 20 см до 300 м.


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


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


RFID

NFC-технология: преимущества и недостатки


NFC-технология не подходит для взаимодействия между устройствами, расположенными на расстоянии больше 10 см. Однако близкий контакт имеет и плюсы: затрудняет перехват конфиденциальной информации и не потребляет много энергии.


Также к ограничениям NFC относят невысокую скорость передачи – около 400 кбит/с. Она не подходит для быстрой передачи файлов большого размера, как Bluetooth или Wi-fi, зато справляется с обменом короткими сигналами, что позволяет использовать ее в сфере быстрых бесконтактных платежей с помощью мобильного телефона. Импульс который телефон посылает терминалу длится 0,1 с, что ускоряет процесс оплаты.


NFC

Метки RFID и NFC: отличия и сфера применения


Отличия RFID и NFC заключаются во внешних характеристиках, технических параметрах и сфере использования.


Размер RFID метки – от 3 мм до 20 см. Она состоит из антенны, отвечающей за обмен сигналом с ридером, и чипа, хранящего данные. Размер NFC-метки меньше – около 25-38 мм. Оба чипа могут быть встроены в пластиковую карту, брелок, удостоверение личности и т.д, однако NFC-модули применяются также в телефонах.

Основные различия


В зависимости от мощности метки и ридера RFID работает на трех частотах: низких (от 125 до 164 кГц, LF), высоких (13.56 МГц, HF) и сверхвысоких (от 860 до 960 МГц, UHF). Лимит RFID доходит до 300 м.


Радиус действия и мощность NFC ограничены исключительно HF-частотами (13.56 МГц), что объясняет некоторые особенности их применения – метка считывается с расстояния до 10 сантиметров.


Еще одна разница RFID и NFC заключается в том, что RFID-технология не способна устанавливать двустороннюю связь и не доступна для использования в смартфонах.

Где используются чипы RFID и NFC


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


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

Примеры эмуляции RFID при помощи NFC


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


Поэтому обе технологии используются в гостиничной и банковской сферах, в общественном транспорте, СКУД, но в разных форматах – карта и телефон.


NFC-устройства могут читать пассивные метки HF RFID. Такие метки встречаются в рекламных объявлениях и постерах и действуют по аналогии с QR-кодами, однако не требуют установки специального сканера. После взаимодействия с HF RFID-меткой мобильное устройство получит команду запустить необходимое приложение или открыть ссылку.


Также отличия RFID и NFC заключаются в том, что RFID-технология уже активно применяется во всем мире, а NFC находится на стадии внедрения в глобальное использование. Благодаря NFC-технологии ограничения частоты 13.56 МГц превращаются в уникальную связь ближнего поля, аналогов которой пока не придумано.


чипы RFID и NFC

Как настроить теги NFC с iPhone?

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

Как обычно, в этой технологической гонке лидирует компания Apple. Сейчас мы не будем касаться их системы умного дома HomeKit. Помимо нее, они активно работают над совершенствованием мобильной операционной системы iOS.

Пользователи уже нескольких поколений iPhone имеют возможность бесконтактно оплачивать покупки через модуль NFC и фирменное приложение Apple Wallet. С выходом iOS 13, владельцы яблочных смартфонов получили возможность расширенного использования модуля. Например, взаимодействие с метками NFC.

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

Как записывать теги на NFC-метку?

Если пользователь хочет хранить собственную информацию на NFC-метке, придется скачать отдельное приложение для настройки. Мы рассказываем на примере приложения «NFC Tools», но логика работы у такого софта примерно одинаковая.

Скачайте и запустите приложение. Дальнейшие действия:

  1. Кликните по кнопке «Писать».
  2. Выберите пункт «Добавить запись».
  3. Выберите нужный пункт, что требуется записать на NFC-метку.
  4. Приложите метку к тыльной стороне смартфона и дождитесь окончания записи.

При желании, можно стирать записанные данные с метки или перезаписывать информацию.

Если вам нужно срабатывание команд из приложения «Команды», то их настраивать еще проще. В этом приложении уже встроенная функция срабатывания команды при соприкосновении с NFC-меткой.

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

Как NFC-метка облегчает нашу жизнь?

Сама по себе NFC-метка вещь достаточно бесполезная. Объема памяти не хватает на запись чего-то существенного. Максимум, это ссылка на скачивание чего-то или какое-то видео на YouTube. Можно настроить запуск приложения, но это достаточно странный кейс. Компания Apple не просто так внедрила их поддержку только с iOS 13.

NFC-метка в сочетании с приложением «Команды» становятся мощным и удобным инструментом автоматизации рутинных задач. Можно настроить метку так, что при поднесении к ней iPhone, автоматически запустится какой-то запрограммированный сценарий. Сколько у вас будет меток, столько и сценариев.

Несколько практических кейсов использования NFC-меток:

  1. Повесьте NFC-метку на выходе из квартиры. При сканировании, iPhone сам покажет время пути до офиса с учетом пробок, рассказывает прогноз погоды, запустит режим умного дома «Я ухожу».
  2. Перед сном мы кладем смартфон на одно определенное место. На это место можно наклеить NFC-метку, и прикладывая смартфон, может срабатывать: завод будильника, включается режим «Не беспокоить», в системе умного дома включается режим «Спокойной ночи» (все ненужное выключается, нужное включается), Siri рассказывает прогноз погоды на завтрашний день.
  3. Наклейте несколько меток в машине. Сможете автоматически открывать и закрывать гараж, прокладывать путь по навигатору к разным точкам города.

Конечно, это далеко не все возможные кейсы. В интернете полно реальных историй использования NFC-меток для дома и офиса. Можно удариться в футуризм, заклеить метку под обоями и настроить ее на открытие потайной двери в доме или автоматический экстренный вызов служб спасения.

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

Как эмулировать nfc-тег на телефоне android

Для аппарата на складе KitKat 4.4

В Android KitKat 4.4 возможность использовать телефон как карту NFC встроена в операционную систему, поэтому вам больше не нужно полагаться на Cyanogenmod или пользовательское ПЗУ. Это не позволяет телефону действовать как метка Mifare Classic как таковая, но я добился отличных результатов в том, чтобы заставить мой телефон взаимодействовать с считывателем ACR122, поэтому я определенно рекомендую этот вариант, если вы можете получить 4.4 на вашем устройстве.

Если вы хотите работать ниже 4.4 и хотите использовать Cyanogenmod

Можно загружать приложения на ваше устройство, и они довольно легко обмениваются данными со считывателем через NFC, однако вы должны использовать Cyanogenmod, эта функция присутствует в CM 9.1.

Желание запустить Gingerbread (старый ответ)

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

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

Вот ссылка на блог, описывающий весь процесс: http://techshek4u.blogspot.co.uk/2012/01/applying-card-emulation-patch-to_03.html

Вот ссылка на оригинальный пост на форуме с патчем для 2.3.4, чтобы включить его:
http://forum.xda-developers.com/showthread.php?t=1281946

И ссылка на исходное обсуждение, где различные разработчики пытаются заставить его работать, в зависимости от ваших технических знаний Android и NFC это может быть более или менее интересно: https://groups.google.com/forum/#!msg / android-developers / 1fw1qfFqpGc / 6dlzvTqExN4J

Предостережение: согласно NFCGuy из его ответа «Не беспокойтесь о понижении уровня вашего телефона до ГБ, если на нем работает ICS. Вы не можете понизить версию прошивки NFC, чтобы снова быть совместимой с ГБ, поэтому NFC просто не будет работать, если вы перепрограммируете свое устройство. с ГБ.«

android — использовать устройство NFC в качестве тега NFC

В зависимости от вашего устройства NFC это может быть возможно. Однако я не согласен с kamituel, что это делается несколькими приложениями через Android Beam.

Android Beam использует одноранговый режим NFC , который (хотя он может иметь аналогичный эффект) — это , а не при использовании одного устройства в качестве считывателя ( режим чтения / записи ) и одного устройства в качестве тега. . В одноранговом режиме для связи используется другой стек протоколов, чем в режиме чтения / записи.Т.е. NDEF поверх SNEP поверх LLCP для связи в одноранговом режиме и NDEF поверх одной из спецификаций Tag Operation для режима чтения / записи, обеспечивающего доступ к тегам NFC.

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

Если устройство NFC, с помощью которого вы хотите эмулировать тег, является устройством Android, у вас есть некоторые требования и ограничения, когда дело доходит до эмуляции тега NFC :

  • Эмулирующее устройство должно работать под управлением Android 4.4 или более поздней версии.
  • Эмулирующее устройство должно поддерживать эмуляцию карты на основе хоста. Это , а не , как у многих устройств с контроллером NFC NXP PN544.
  • Вы можете только эмулировать NFC-метку в соответствии со спецификацией NFC Forum Type 4 Tag Operation.Это связано с ограничением в Android HCE, которое разрешает только эмуляцию структур приложений ISO / IEC 7816-4 поверх ISO / IEC 14443-4.

Параллельно с возможностями HCE устройство Android также объявляет о своих возможностях однорангового режима другим устройствам. Как следствие, если вы хотите получить доступ к тегу NFC, эмулированному Android HCE, с другого устройства Android, это другое устройство Android вместо этого увидит возможности однорангового режима и не будет автоматически обрабатывать сообщения NDEF из эмулированного тега.

Чтобы обойти это ограничение, читающее устройство Android также должно иметь Android 4.4 или более позднюю версию. Начиная с этой версии платформы, вы можете отключить обнаружение в одноранговом режиме с помощью API режима чтения. Только когда вы это сделаете, вы сможете получить доступ к эмулированному тегу NFC со второго устройства Android.

Обзор эмуляции карты на основе хоста | Разработчики Android

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

Android 4.4 и выше предоставляют дополнительный метод эмуляции карты, который
не включает в себя безопасный элемент, называемый эмуляцией карты на основе хоста . Этот
позволяет любому приложению Android эмулировать карту и напрямую взаимодействовать с NFC
читатель. В этом разделе описывается, как эмуляция карты на основе хоста (HCE) работает на
Android и как вы можете разработать приложение, которое имитирует карту NFC с помощью этого
техника.

Эмуляция карты с защищенным элементом

Если эмуляция карты NFC обеспечивается с использованием защищенного элемента, карта должна быть
emulated предоставляется в защищенный элемент на устройстве через Android
заявление. Затем, когда пользователь держит устройство над терминалом NFC, NFC
контроллер в устройстве направляет все данные от считывателя непосредственно в безопасную
элемент. Рисунок 1 иллюстрирует эту концепцию:

Рисунок 1. Эмуляция карты NFC с защищенным элементом.

Защищенный элемент сам осуществляет связь с терминалом NFC, и
в транзакции не участвует приложение Android. После транзакции
завершено, приложение Android может запросить защищенный элемент напрямую для
статус транзакции и уведомить пользователя.

Эмуляция карты на основе хоста

Когда карта NFC эмулируется с помощью эмуляции карты на основе хоста, данные маршрутизируются
напрямую к центральному процессору, а не к защищенному элементу.фигура 2
показывает, как работает эмуляция карты на основе хоста:

Рисунок 2. Эмуляция карты NFC без защитного элемента.

Поддерживаемые карты и протоколы NFC

Рисунок 3. Протокол HCE для Android
куча.

Стандарты NFC предлагают поддержку множества различных протоколов, и есть
различные типы карт, которые можно подражать.

Android 4.4 и выше поддерживает несколько распространенных на рынке протоколов.
Cегодня.Многие существующие бесконтактные карты уже основаны на этих протоколах,
такие как бесконтактные платежные карты. Эти протоколы также поддерживаются многими
Считыватели NFC на рынке сегодня, в том числе устройства Android NFC, работающие как
сами читатели (см. IsoDep
класс). Это позволяет создавать и развертывать комплексное решение NFC вокруг
HCE с использованием только устройств на базе Android.

В частности, Android 4.4 и выше поддерживает эмуляцию карт, основанных на
спецификация NFC-Forum ISO-DEP (на основе ISO / IEC 14443-4) и процесс
Блоки данных прикладного протокола (APDU), как определено в ISO / IEC 7816-4
Технические характеристики.Android требует эмуляции ISO-DEP только поверх Nfc-A
(ISO / IEC 14443-3, тип A). Поддержка Nfc-B (ISO / IEC 14443-4, тип B)
технология не является обязательной. На рисунке 3 показано расположение всех этих слоев.
технические характеристики.

Услуги HCE

Архитектура HCE в Android основана на Android.
Service компонентов (известных как HCE
услуги
). Одним из ключевых преимуществ службы является то, что она может работать в
фон без какого-либо пользовательского интерфейса.Это естественно для многих HCE.
приложения, такие как карты лояльности или транзитные карты, которые пользователю не нужны
запустите приложение для использования. Вместо этого начинается прикосновение устройства к считывателю NFC.
правильный сервис, если он еще не запущен и выполняет транзакцию
на заднем фоне. Конечно, вы можете запустить дополнительный пользовательский интерфейс (например,
уведомления пользователей) от вашего сервиса, когда это необходимо.

Выбор услуги

Когда пользователь подносит устройство к считывателю NFC, системе Android необходимо знать
с какой службой HCE хочет общаться считыватель NFC.ИСО / МЭК 7816-4
спецификация определяет способ выбора приложений, сосредоточенных вокруг
Идентификатор приложения (AID). AID состоит из 16 байтов. Если вы подражаете
карты для существующей инфраструктуры считывателей NFC, AID, которые эти считыватели
поиск обычно хорошо известны и публично зарегистрированы (например,
AID платежных сетей, таких как Visa и MasterCard).

Если вы хотите развернуть новую инфраструктуру считывателя для своего собственного приложения, вы
необходимо зарегистрировать свои собственные AID. Процедура регистрации AID определена в
спецификации ISO / IEC 7816-5.Мы рекомендуем регистрировать AID согласно 7816-5.
если вы развертываете приложение HCE для Android, потому что оно позволяет избежать коллизий.
с другими приложениями.

Группы помощи

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

Список AID, которые хранятся вместе, называется группой AID. Для всех AID в
Группа AID, Android гарантирует одно из следующего:

  • Все AID в группе направляются в эту службу HCE.
  • Никакие идентификаторы AID в группе не маршрутизируются на эту службу HCE (например, потому что
    пользователь предпочел другую службу, которая запрашивала один или несколько AID в вашей группе
    также).

Другими словами, нет промежуточного состояния, когда некоторые AID в группе могут
перенаправляться на одну службу HCE, а некоторые — на другую.

Группы и категории ПИР

Каждую группу AID можно связать с категорией. Это позволяет Android группировать
Службы HCE вместе по категориям, что, в свою очередь, позволяет пользователю устанавливать
по умолчанию на уровне категории, а не на уровне AID.Избегайте упоминания СПИДа
в любых пользовательских частях вашего приложения, потому что они ничего не значат
среднему пользователю.

Android 4.4 и выше поддерживает две категории:

Примечание: Только одна группа AID в категории CATEGORY_PAYMENT может быть включена в
система в любой момент времени. Обычно это приложение, которое
понимает основные протоколы оплаты кредитными картами и может работать в любом
торговец.

Для замкнутых приложений платежей, которые работают только в одном
продавец (например, карты с сохраненной стоимостью), используйте CATEGORY_OTHER .Группы помощи в
эта категория может быть всегда активной, и ей может быть отдан приоритет с помощью NFC.
считыватели при выборе AID, если необходимо.

Внедрение услуги HCE

Для эмуляции карты NFC с помощью эмуляции карты на основе хоста необходимо создать
Служба — компонент, обрабатывающий транзакции NFC.

Проверить поддержку HCE

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

Реализация услуги

Android 4.4 и выше предоставляет удобный класс Service , который вы можете использовать
в качестве основы для реализации услуги HCE:
HostApduService класс.

Первым шагом является расширение HostApduService , как показано в следующем коде.
образец:

Котлин

class MyHostApduService: HostApduService () {

    переопределить забавный процессCommandApdu (commandApdu: ByteArray, extras: Bundle?): ByteArray {
       ...
    }

    переопределить веселье onDeactivated (причина: Int) {
       ...
    }
} 

Ява

открытый класс MyHostApduService расширяет HostApduService {
    @Override
    public byte [] processCommandApdu (byte [] apdu, Bundle extras) {
       ...
    }
    @Override
    public void onDeactivated (int reason) {
       ...
    }
}
 

HostApduService объявляет два абстрактных метода, которые необходимо переопределить, и
осуществлять. Один из тех,
processCommandApdu () ,
вызывается всякий раз, когда считыватель NFC отправляет блок данных протокола приложения (APDU)
к вашим услугам.APDU определены в спецификации ISO / IEC 7816-4. APDU
— это пакеты уровня приложения, которыми обмениваются считыватель NFC и
ваш сервис HCE. Этот протокол уровня приложения является полудуплексным: считыватель NFC.
отправляет вам командный APDU и ждет, пока вы отправите ответный APDU в
возвращение.

Примечание: Спецификация ISO / IEC 7816-4 также определяет концепцию множественных
логические каналы, что позволяет иметь несколько параллельных APDU
обмены по отдельным логическим каналам.Реализация HCE для Android,
однако поддерживает только один логический канал, поэтому есть только
однопоточный обмен APDU.

Как упоминалось ранее, Android использует AID, чтобы определить, какая служба HCE
читатель хочет поговорить. Как правило, первый APDU, который считыватель NFC отправляет на ваш
устройство SELECT AID APDU; этот APDU содержит AID, который хочет читатель
говорить с. Android извлекает этот AID из APDU и преобразует его в HCE.
service, а затем пересылает этот APDU в разрешенную службу.

Вы можете отправить APDU ответа, вернув байты APDU ответа из
processCommandApdu () . Обратите внимание, что этот метод вызывается в основном потоке
вашего приложения, которое вы не должны блокировать. Если вы не можете вычислить и вернуть
ответный APDU немедленно, верните ноль. Затем вы можете выполнить необходимую работу над
другой поток и используйте
sendResponseApdu ()
метод, определенный в классе HostApduService для отправки ответа, когда вы
сделано.

Android продолжает пересылать новые APDU от устройства чтения в вашу службу, пока
из следующего происходит:

  • Считыватель NFC отправляет еще один APDU SELECT AID , который ОС разрешает в
    другой сервис.
  • Связь NFC между устройством чтения NFC и вашим устройством нарушена.

В обоих случаях ваш класс
деактивировано ()
реализация вызывается с аргументом, указывающим, какой из двух произошел.

Если вы работаете с существующей инфраструктурой считывателя, вы должны реализовать
существующий протокол уровня приложения, который читатели ожидают от вашей службы HCE.

Если вы развертываете новую инфраструктуру считывателей, которую также контролируете, вы
можете определить свой собственный протокол и последовательность APDU.Попробуйте ограничить количество APDU
и размер данных для обмена: это гарантирует, что у ваших пользователей есть только
держать устройство над устройством чтения NFC на короткое время. А
разумная верхняя граница составляет около 1 КБ данных, что обычно может быть
обмен в течение 300 мс.

Декларация сервисного манифеста и регистрация AID

Вы должны объявить свою службу в манифесте как обычно, но вы должны добавить некоторые
дополнительные детали к сервисной декларации:

  1. Чтобы сообщить платформе, что это служба HCE, реализующая
    HostApduService , добавьте фильтр намерений для
    SERVICE_INTERFACE
    действие к вашей декларации о предоставлении услуг.

  2. Чтобы сообщить платформе, какие группы AID запрашиваются этой службой, включите
    а
    SERVICE_META_DATA
    тег в объявлении службы, указывающий на XML
    ресурс с дополнительной информацией об услуге HCE.

  3. Установите для атрибута android: exported значение true и потребуйте
    разрешение android.permission.BIND_NFC_SERVICE в декларации службы.
    Первый гарантирует, что к сервису могут быть привязаны внешние приложения.Последний затем обеспечивает, чтобы только внешние приложения,
    android.permission.BIND_NFC_SERVICE разрешение может быть привязано к вашей службе.
    Поскольку android.permission.BIND_NFC_SERVICE является системным разрешением, это
    эффективно обеспечивает, чтобы только ОС Android могла связываться с вашим сервисом.

Ниже приведен пример декларации манифеста HostApduService :


    
        <действие android: name = "android.nfc.cardemulation.action.HOST_APDU_SERVICE" />
    
    <метаданные android: name = "android.nfc.cardemulation.host_apdu_service"
               android: resource = "@ xml / apduservice" />

 

Этот тег метаданных указывает на файл apduservice.xml . Ниже приводится
пример такого файла с одним объявлением группы AID, содержащим два
проприетарные AID:


    
        <помощь-фильтр android: name = "F0010203040506" />
        <помощь-фильтр android: name = "F0394148148100" />
    

 

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

должен содержать один или несколько тегов . Каждый
Тег необходим для выполнения следующих действий:

  • Содержит атрибут android: description , содержащий удобный для пользователя
    описание группы AID, подходящее для отображения в UI.
  • Установите атрибут android: category для указания категории AID.
    группа принадлежит, например строковые константы, определенные в CATEGORY_PAYMENT
    или CATEGORY_OTHER .
  • Содержит один или несколько тегов , каждый из которых содержит один AID.
    Укажите AID в шестнадцатеричном формате и убедитесь, что он содержит четный
    количество символов.

Ваше приложение также должно содержать
NFC разрешение на регистрацию в качестве
Сервис HCE.

Разрешение конфликта AID

Несколько компонентов HostApduService могут быть установлены на одном устройстве, и
один и тот же AID может быть зарегистрирован более чем одной службой. Android разрешает AID
конфликтует по-разному в зависимости от того, к какой категории принадлежит AID. Каждый
категория может иметь другую политику разрешения конфликтов.

Для некоторых категорий, таких как оплата, пользователь может выбрать значение по умолчанию.
в пользовательском интерфейсе настроек Android. Для других категорий политика может заключаться в
всегда спрашивайте пользователя, какую службу вызывать в случае конфликта.Для информации
о том, как запросить политику разрешения конфликтов для определенной категории, см.
getSelectionModeForCategory () .

Проверьте, является ли ваша служба по умолчанию

Приложения могут проверять, является ли их служба HCE службой по умолчанию для
определенная категория с помощью
isDefaultServiceForCategory ()
API.

Если ваша служба не является службой по умолчанию, вы можете запросить ее использование по умолчанию.
с использованием
ACTION_CHANGE_DEFAULT .

Платежные приложения

Android рассматривает службы HCE, которые объявили группу AID с
платеж категория как платежные приложения.Android 4.4 и выше содержит
верхний уровень Настройки пункт меню под названием Tap & Pay , в котором перечислены все
такие платежные приложения. В этом меню настроек пользователь может выбрать
платежное приложение по умолчанию, которое вызывается при касании платежного терминала.

Необходимые средства для платежных приложений

Чтобы обеспечить более привлекательный внешний вид пользователей, платежные приложения HCE
необходимы для предоставления служебного баннера.

Установите размер этого ресурса 260×96 dp и задайте его в XML-файле метаданных с помощью
добавление атрибута android: apduServiceBanner к
тег, который указывает на доступный для рисования ресурс.Ниже приведен пример:


    
        <помощь-фильтр android: name = "F0010203040506" />
        <помощь-фильтр android: name = "F0394148148100" />
    

 

Отключение экрана и поведение при блокировке экрана

Поведение служб HCE зависит от версии Android, работающей на
Устройство.

Android 12 и выше

В приложениях, предназначенных для Android 12 (уровень API 31) и выше, вы можете включить NFC.
платежи без включения экрана устройства, установив
requireDeviceScreenOn to
ложь .

Android 10 и выше

Устройства под управлением Android 10 (уровень API 29) или выше, поддержка
Безопасный
NFC. Пока безопасен
NFC включен, все эмуляторы карт (хост-приложения и приложения вне хоста) включены.
недоступен, когда экран устройства выключен. Пока безопасный NFC выключен, вне хоста
приложения доступны при выключенном экране устройства.Вы можете проверить
Безопасная поддержка NFC с помощью
isSecureNfcSupported () .

На устройствах под управлением Android 10 и выше такой же функционал для настройки
android: requireDeviceUnlock от до true применяется как с устройствами
под управлением Android 9 и ниже, но только при выключенном Secure NFC. То есть, если
Безопасный NFC включен, службы HCE не могут работать с экрана блокировки
вне зависимости от настройки android: requireDeviceUnlock .

Android 9 и ниже

На устройствах под управлением Android 9 (уровень API 28) и ниже контроллер NFC и
процессор приложений полностью выключается, когда экран
устройство выключено.Поэтому службы HCE не работают, когда экран выключен.

Также на Android 9 и ниже службы HCE могут работать с экрана блокировки.
Однако это контролируется атрибутом android: requireDeviceUnlock в
тег вашей службы HCE. По умолчанию разблокировка устройства
не требуется, и ваша служба будет активирована, даже если устройство заблокировано.

Если вы установите для атрибута android: requireDeviceUnlock значение true для HCE
службы, Android предлагает пользователю разблокировать устройство при следующих
случиться:

  • пользователь касается считывателя NFC.
  • считыватель NFC выбирает AID, который разрешен для вашей службы.

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

Сосуществование с картами защищенных элементов

Этот раздел представляет интерес для разработчиков, развернувших приложение.
который полагается на безопасный элемент для эмуляции карты.Реализация HCE для Android
предназначен для работы параллельно с другими методами реализации карты
эмуляция, в том числе использование безопасных элементов.

Примечание. Android не предлагает API для прямого взаимодействия с безопасным
сам элемент.

Это сосуществование основано на принципе, называемом маршрутизацией AID . NFC
контроллер хранит таблицу маршрутизации, которая состоит из (конечного) списка маршрутизации
правила. Каждое правило маршрутизации содержит AID и пункт назначения. Пункт назначения может
либо центральный процессор, на котором запущены приложения Android, либо подключенный безопасный
элемент.

Когда устройство чтения NFC отправляет APDU с SELECT AID , контроллер NFC анализирует
он и проверяет, совпадают ли AID с каким-либо AID в его таблице маршрутизации. Если оно
совпадает, этот APDU и все следующие за ним APDU отправляются в пункт назначения
связан с AID, пока не будет получен другой APDU SELECT AID или NFC
ссылка не работает.

Примечание: Хотя ISO / IEC 7816-4 определяет концепцию частичных совпадений, также ,
это не поддерживается устройствами Android HCE.

Рисунок 4 иллюстрирует эту архитектуру:

Рисунок 4. Android, работающий как с защищенным элементом, так и с эмуляцией хост-карты.

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

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

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

Регистрация AID защищенного элемента

Приложения, использующие защищенный элемент для эмуляции карты, могут объявить
off-host service в их манифесте.Декларация такой услуги
почти идентично объявлению службы HCE. Исключения:
следует:

  • Действие, используемое в фильтре намерений, должно быть установлено на
    СЕРВИС_ИНТЕРФЕЙС .
  • Атрибут имени метаданных должен быть установлен на
    ДАННЫЕ_СЕРВИСА .
  • XML-файл метаданных должен использовать корневой тег .

    
      
          <действие android: name = "android.nfc.cardemulation.action.OFF_HOST_APDU_SERVICE" />
      
      <метаданные android: name = "android.nfc.cardemulation.off_host_apdu_service"
                 android: resource = "@ xml / apduservice" />
    
     

Ниже приведен пример соответствующего файла apduservice.xml .
регистрация двух AID:


    
        <помощь-фильтр android: name = "F0010203040506" />
        <помощь-фильтр android: name = "F0394148148100" />
    

 

Атрибут android: requireDeviceUnlock не применяется к службам вне хоста,
потому что центральный процессор не участвует в транзакции и, следовательно, не может
предотвратить выполнение транзакций защищенным элементом, когда устройство
заблокирован.

Атрибут android: apduServiceBanner необходим для внешних служб.
которые являются платежными приложениями и могут быть выбраны в качестве платежа по умолчанию
заявление.

Вызов службы за пределами хоста

Android никогда не запускается и не связывается со службой, объявленной как «вне хоста»,
потому что фактические транзакции выполняются защищенным элементом, а не
сервис Android. Декларация службы просто позволяет приложениям
зарегистрируйте AID, присутствующие в защищенном элементе.

HCE и безопасность

Архитектура HCE обеспечивает один ключевой элемент безопасности: потому что ваша
сервис защищен
BIND_NFC_SERVICE
системное разрешение, только ОС может связываться с вашей службой и взаимодействовать с ней.
Это гарантирует, что любой APDU, который вы получаете, на самом деле является APDU, полученным
ОС от контроллера NFC, и что любой APDU, который вы отправляете обратно, идет только в
ОС, которая, в свою очередь, напрямую пересылает APDU контроллеру NFC.

Последняя оставшаяся проблема — где вы получаете данные, которые отправляет ваше приложение.
к считывателю NFC.Это намеренно развязано в конструкции HCE; оно делает
неважно, откуда берутся данные, он просто следит за тем, чтобы они были в безопасности
переносится на контроллер NFC и выводится на считыватель NFC.

Для безопасного хранения и извлечения данных, которые вы хотите отправить с HCE
службы, вы можете, например, полагаться на песочницу приложения Android, которая
изолирует данные вашего приложения от других приложений. Подробнее об Android
безопасности, прочтите советы по безопасности.

Параметры и детали протокола

Данный раздел представляет интерес для разработчиков, которые хотят понять, какой протокол
параметры, используемые устройствами HCE на этапах предотвращения столкновений и активации
протоколы NFC.Это позволяет построить инфраструктуру считывателя, которая
совместим с устройствами Android HCE.

Протокол Nfc-A (ISO / IEC 14443 тип A) анти-коллизия и активация

В рамках активации протокола Nfc-A происходит обмен несколькими кадрами.

В первой части обмена устройство HCE представляет свой UID; Устройства HCE
следует предполагать, что он имеет случайный UID. Это означает, что при каждом нажатии UID
который представлен читателю — это случайно сгенерированный UID. Из-за этого,
Считыватели NFC не должны зависеть от UID устройств HCE как формы
аутентификация или идентификация.

Считыватель NFC может впоследствии выбрать устройство HCE, отправив SEL_REQ
команда. Ответ SEL_RES устройства HCE имеет как минимум 6-й бит
(0x20) установлен, указывая, что устройство поддерживает ISO-DEP. Обратите внимание, что другие биты в
SEL_RES также может быть установлен, указывая, например, на поддержку NFC-DEP
(p2p) протокол. Поскольку могут быть установлены другие биты, читатели, желающие взаимодействовать с
Устройства HCE должны явно проверять только 6-й бит, а не сравнивать
полный SEL_RES со значением 0x20.

Активация ISO-DEP

После активации протокола Nfc-A считыватель NFC инициирует ISO-DEP.
активация протокола. Он отправляет RATS (запрос ответа на выбор)
команда. Контроллер NFC генерирует ответ RATS, ATS; ATS не
настраивается службами HCE. Однако реализации HCE должны соответствовать NFC Forum.
требования к ответу ATS, чтобы считыватели NFC могли рассчитывать на эти параметры
устанавливается в соответствии с требованиями NFC Forum для любого устройства HCE.

В разделе ниже представлены более подробные сведения об отдельных байтах ATS.
ответ, предоставленный контроллером NFC на устройстве HCE:

  • TL: длина ответа ATS. Длина не должна превышать 20
    байтов.
  • T0: биты 5, 6 и 7 должны быть установлены на всех устройствах HCE, указывая TA (1), TB (1)
    и TC (1) включены в ответ ATS. Биты с 1 по 4 обозначают FSCI,
    кодирование максимального размера кадра. На устройствах HCE значение FSCI должно быть
    между 0ч и 8ч.
  • T (A) 1: определяет скорость передачи данных между считывателем и эмулятором, и может ли они быть
    асимметричный. Нет никаких требований к битрейту или гарантий для устройств HCE.
  • T (B) 1: биты с 1 по 4 указывают целое число времени защиты кадра при запуске (SFGI). На
    Устройства HCE, SFGI должен быть <= 8h. Биты с 5 по 8 указывают на ожидание кадра. целое число времени (FWI) и кодирует время ожидания кадра (FWT). На устройствах HCE FWI должно быть <= 8ч.
  • T (C) 1: бит 5 указывает на поддержку «функций расширенного протокола».Устройства HCE
    может поддерживать или не поддерживать «Расширенные функции протокола». Бит 2 указывает на поддержку
    для DID. Устройства HCE могут поддерживать или не поддерживать DID. Бит 1 указывает на поддержку
    НАД. Устройства HCE не должны поддерживать NAD и установить бит 1 в ноль.
  • Исторические байты: устройства HCE могут возвращать до 15 исторических байтов. NFC
    читатели, желающие взаимодействовать с услугами HCE, не должны делать никаких предположений о
    содержимое исторических байтов или их наличие.

Обратите внимание, что многие устройства HCE, вероятно, выполнены в соответствии с требованиями протокола.
что платежные сети, объединенные в EMVCo, указали в своих «Бесконтактных
Протокол связи ».В частности:

  • FSCI в T0 должно быть между 2ч и 8ч.
  • T (A) 1 должен быть установлен на 0x80, что указывает на то, что скорость передачи данных составляет только 106 кбит / с.
    поддерживается, а асимметричный битрейт между ридером и эмулятором не поддерживается.
    поддерживается.
  • FWI в T (B) 1 должно быть <= 7h.

APDU обмена данными

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

Как эмулировать nfc-тег на телефоне android

Как эмулировать nfc-тег на телефоне android

У меня есть телефон Android (nexus s, sdk v15), который должен отправлять строку на плату разработки, работающую в режиме nfc-reader / writer-mode, с помощью эмуляции тегов. Я знаю, что это официально не поддерживается Android, поэтому я мог сделать это изначально, напрямую обращаясь к драйверу (?).

Есть ли какой-нибудь пример, когда кто-то делал это раньше, или приложение, которое делает это (и желательно с открытым исходным кодом?)

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

Я не хочу получать доступ к защищенному элементу или выполнять какие-либо действия со смарт-картами, которые должны быть одобрены поставщиком / поставщиком. Я просто хочу передать строку. Я также знаю, что это можно сделать с помощью методов android api через p2p, но это не работает с платой, поэтому я попробую этот подход.

Ответ № 1:

Для аппарата на складе KitKat 4.4

В Android KitKat 4.4 возможность использовать телефон как карту NFC встроена в операционную систему, поэтому вам больше не нужно полагаться на Cyanogenmod или пользовательское ПЗУ.Это не позволит телефону действовать как метка Mifare Classic как таковая, но у меня были отличные результаты в том, чтобы заставить мой телефон взаимодействовать с устройством чтения ACR122, поэтому я определенно рекомендую этот вариант, если вы можете получить 4.4 на своем устройстве.

Если вы хотите работать ниже 4.4 и хотите использовать Cyanogenmod

Можно загружать приложения на ваше устройство, и они довольно легко обмениваются данными со считывателем через NFC, однако вы должны использовать Cyanogenmod, эта функция присутствует в CM 9.1.

Желание запустить Gingerbread (старый ответ)

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

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

Вот ссылка на блог, описывающий весь процесс: http://techshek4u.blogspot.co.uk/2012/01/applying-card-emulation-patch-to_03.html

Вот ссылка на исходное сообщение форума с патчем для 2.3.4, чтобы включить его:
http://forum.xda-developers.com/showthread.php?t=1281946

И ссылка на исходное обсуждение, где различные разработчики пытаются заставить его работать, в зависимости от ваших технических знаний Android и NFC, это может быть более или менее интересно: https: // groups.google.com/forum/#!msg/android-developers/1fw1qfFqpGc/6dlzvTqExN4J

Предостережение: согласно NFCGuy из его ответа «Не беспокойтесь о понижении уровня вашего телефона до ГБ, если на нем работает ICS. Вы не можете понизить версию прошивки NFC, чтобы снова быть совместимой с ГБ, поэтому NFC просто не будет работать, если вы перепрограммируете свое устройство. с ГБ «.

Ответ № 2:

Если вы рутируете свое устройство, можно создать приложение, которое включает режим эмуляции карты. Это не так уж сложно, см. E.грамм. https://stackoverflow.com/a/10506299/1202968.

Однако эмуляция карты полностью выполняется Secure Element. У вашего приложения нет доступа к передаваемым данным. Единственный способ получить контроль над этим — создать и установить апплет Java Card на Secure Element. Однако для этого вам потребуется доступ к секретным ключам аутентификации, которые известны только Google.

PS: Не беспокойтесь о понижении уровня вашего телефона до ГБ, если он работает под управлением ICS. Вы не можете понизить версию прошивки NFC, чтобы она снова стала совместимой с ГБ, поэтому NFC просто не будет работать, если вы перепрограммируете свое устройство с ГБ.

Emulate Nfc Tag Android

Оставьте свои комментарии?

Как эмулировать nfctag на телефоне Android Стек…

9 часов назад С Android KitKat 4.4 возможность использовать телефон как карту NFC встроена в операционную систему, поэтому вам больше не нужно полагаться на Cyanogenmod или кастомном ПЗУ. Это не позволит телефону действовать как тег Mifare Classic как таковой, но у меня были отличные результаты в том, чтобы заставить мой телефон взаимодействовать с считывателем ACR122, поэтому я определенно рекомендую этот

Веб-сайт: Stackoverflow.com