4.1.8.8 NFC и беспроводные интерфейсы приложений

Что внутри тега?

С технической точки зрения 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 метки. Они бывают двух видов.

  1. Те, на которые можно записывать информацию. Они выглядят как маленькие наклейки. Обычно доступный объем памяти — около 700 байт. Подобные выпускала компания Sony.

Тут можно хранить кучу всего, например:

Такую метку прочитает любой телефон с NFC.

Что делать, если у вас нет NFC меток? Их можно заказать, стоят копейки.

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

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

Если у вас Android, можно поставить приложение например MacroDroid или NFC ReTag. В них можно назначать примерно такие же действия на NFC-теги. Включать/выключать Wi-Fi и звонок, запускать приложения, включать ночной режим. Например, можно сделать так, что когда вы кладете телефон на карту «Тройка», у вас автоматом открывается канал Droider. Рекомендую!

Кстати вот так выглядит содержимое «Тройки».


А еще можете почитать на

Введение в разработку nfc под android

Android поддерживает NFC с помощью двух пакетов: android.nfc и android.nfc.tech.

Основными классами в android.nfc являются:

NfcManager: Устройства под Android могут быть использованы для управления любыми обнаруженными NFC адаптерами, но поскольку большинство Android устройств поддерживают только один NFC адаптер, NfcManager обычно вызывается с getDefaultAdapter для доступа к конкретному адаптеру.


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

NDEF: Стандарты NFC определяют общий формат данных, называемый NFC Data Exchange Format (NDEF), способный хранить и передавать различные типы объектов, начиная с MIME и заканчивая ультра-короткими RTD-документами, такими как URL. NdefMessage и NdefRecord – два типа NDEF для определенных NFC форумом форматов данных, которые будут использоваться в коде-примере.

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

Пакет android.nfc.tech также содержит множество важных подклассов. Эти подклассы обеспечивают доступ к функциям работы с метками, включающими в себя операции чтения и записи. В зависимости от используемого типа технологий, эти классы разбиты на различные категории, такие как NfcA, NfcB, NfcF, MifareClassic и так далее.

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

Здесь мы используем целевой фильтр для работы со всеми типами информации начиная с TECH_DISCOVERED до ACTION_TECH_DISCOVERED. Файл nfc_tech_filter.xml используется для всех типов, определенных в метке. Подробности можно найти в

. Рисунок ниже показывает схему действий при обнаружении метки.

Использование смарт-карт и карт лояльности.

Эмуляция банковских карт не самое простой процесс, если быть честным. Потому начну с карт лояльности. Их разновидностей существует достаточное количество: и с магнитной лентой, с QR-кодом, и со штрих-кодом. Добавив карту лояльности в Google Pay, Вы упрощаете свою жизнь, уменьшая количество переносимого пластика.

Но допольнительной функцией является реализация метода для передачи данных о карте лояльности в систему торговой точки (POS) продавца, то есть возможные скидки по карте лояльности будут учитываться прямо во время оплаты заказа, никаких вам «а теперь приложите бонусную карту». (Уточнение: карта лояльности должна содержать в себе NFC. Карты со штрихкодом или QR-кодом необходимо предоставить до оплаты для сканирования их с экрана телефона).

Карты лояльности сохраняются в платежном приложении вместе с привязанной банковской картой и используются в режиме эмуляции карты NFC. Эти данные хранятся в защищенном элементе (Security Element или SE) в телефоне. Вкратце, SE — это защищенная от взлома платформа, как правило, это чип с памятью, которая позволяет безопасно хранить конфиденциальные данные, защищенные криптографическими ключами.

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

В работе бесконтактной карты добавляется NFC модуль, который обеспечивает бесконтактное соединение со считывателем банковских карт.Что же происходит в случае эмулирования карты мобильным телефоном. Чтобы не записывать на чип SE в мобильном устройстве платежные приложения всех банковских карт, которыми пользуется владелец устройства, которые к тому же надо персонализировать, т.е. передать данные о выпущенных картах и хранить их в защищенном виде, была сформулирована роль TSM (Trusted Service Manager), который объединяет с одной стороны поставщиков услуг (Service Provider TSM), а с другой стороны чипы Secure Element (Secure Element Issuer TSM).

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

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

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

В 2022 году Дугом Йегером и Тедом Фифельски, основателями SimplyTapp, Inc. был придуман термин «эмуляция хост-карты» (Host Card Emulation) , который описывал возможность открытия канала связи между терминалом бесконтактных платежей и удаленным размещенным защищенным элементом, содержащим финансовые данные, данные платежной карты, позволяющие проводить финансовые операции в терминале торговой точки.

Они внедрили эту новую технологию в операционной системе Android, начиная с версии 4.4. HCE требует, чтобы протокол NFC направлялся в основную операционную систему мобильного устройства, а не в локальную микросхему защищенного аппаратного элемента (SE). Итак, начиная с версии Android 4.4 KitKat управление платежными операциями взял на себя не физический элемент, а API, точнее Google Pay API. Эмуляция карты неотделима от понятия «токенизация», потому что это следующая ступень защиты платежных данных в виртуальном мире после TSM, который выдавал ключи.

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

Когда вы вводите номер карты в мобильное приложение, обеспечивающее возможность мобльных платежей, например, номер карты 4111 1111 1111 1234, удаленный поставщик токенов (remote token service server) возвращает вместо номера карты токен вида 4281 **** **** 2819, который хранится в мобильном устройстве.

Токенизация при использовании Google Pay:1. Когда пользователь добавляет в Google Pay свою кредитную или дебетовую карту, приложение запрашивает у банка-эмитента токен. Затем Google Pay шифрует токенизированную карту, и она становится доступна для оплаты.2.

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

При этом:

  • Google Pay не обрабатывает и не авторизует транзакции. Сервис только токенизирует карты и передает токены и другую информацию о клиентах платежным системам.
  • Продавец является получателем платежей. Он обязан вести бухгалтерский учет и удерживать необходимые налоги.
  • Продавцу не нужно менять свою систему обработки платежей.

Автомобили

Консорциум Car Connectivity Consortium (CCC), в которую входят практически все основные технологические компании и автомобильные производители, утвердил первую версию электронного ключа. С его помощью владельцы автомобилей смогут закрывать и открывать двери, а также заводить свою машину через приложение.

Что касается безопасности такого подхода:Технология цифрового ключа или SmartKey (или Digital Key) разработана таким образом, что ключ не хранится и не передается в открытом виде. Цифровой ключ, это какой-то оригинальный набор данных, которые производитель автомобиля зашивает в прошивку автомобиля вместе с набором функций, которые доступны по этому ключу.

Он же (производитель автомобиля) является TSM (Trusted Service Manager) для пользователей ключа, т.е. пользователь не получает ключ от автомобиля, он получает набор зашифрованных данных, которые являются ключом к расшифровке оригинального ключа, и хранятся они в SE мобильного устройства, соответственно.

NFC используется только для передачи этих зашифрованных данных автомобилю. Учитывая, что NFC работает на расстоянии около 10 см., практически невозможно просканировать и узнать эти данные. Еще важной частью архитектуры безопасности является TEE, это так называемая Trusted Execution Environment или безопасная среда исполнения, является безопасной площадью основного процессора и гарантирует защиту кода и данных, загруженных внутри, в отношении конфиденциальности и целостности.

NFC-метки

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

Технические характерстики меток:

  • Срок хранения наклеек – до 10 лет.
  • NFC-чипы способны пережить даже попадание в воду (при надлежащей конструкции).
  • Не потерять ценные качества при температурах от -25 до 85 градусов.
  • Рабочая частота – 13,56 МГц.
  • Объем памяти – зависит от конкретного производителя, но обычно приближается к 888 байтам.
  • Скорость чтения – 106 Кбит/c.

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

Начнём, пожалуй с цены: на Aliexpress вполне возможно заказать разные виды меток начиная от 50-70 рублей за комплект от 5-6 штук, за 100 рублей — 10 штук. При желании можно найти на Авито или Олх, если хотите «здесь и сейчас».Чтобы что-то записать на метку необходим смартфон и приложение на выбор:Android: NFC TagWriter by NXP

NFC Tools

IOS: Simply NFC

Переходим в Tasks, выбираем необходимые нам задачи, прикладываем метку к примерному расположению NFC в смартфоне и нажимаем «Write».

Убираем метку после оповещения об окончании записи и проверяем работоспособность. Если всё сделали правильно, то всё заработает.Повторюсь:Для чего вообще создаются подобные технологии? Для автоматизации, ускорения и упрощения работы, создания комфортного использования устройств.

Nfc — техническая составляющая

NFC основан на стандартах ISO/IEC 18092 NFC IP-1, JIS X 6319-4 и ISO/IEC 14443 для бесконтактных смарт-карт. NFC устройство работает на частоте 13,56 МГц и состоит из считывателя (ридера) и антенны, или из метки и антенны.

Ридер генерирует радиочастотное поле, которое может взаимодействовать с меткой или с другим ридером. Ридер – это устройство NFC, работающее в режиме активной коммуникации. Метка – это устройство NFC, которое работает в режиме пассивной коммуникации.

ISO/IEC 14443 — стандарт, описывающий частотный диапазон, метод модуляции и протокол обмена бесконтактных пассивных карт (RFID) ближнего радиуса действия (до 10 см) на магнитосвязанных индуктивностях.

Стандарт предназначен для карт с малой дальностью чтения и большими скоростями обмена данными. В основном это рынок платежных средств и идентификации личности.NFC был одобрен как ISO/IEC стандарт 8 декабря 2003 года. До стандартов NFC существовали другие стандарты, которые позже были взяты в основу стандарта NFC, например, ISO 14443.

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

NFC — технология с открытой платформой, стандартизированная в ECMA-340 и ISO/IEC 18092. Эти стандарты определяют схемы модуляции, кодирование, скорости передачи и радиочастотную структуру интерфейса устройств NFC, а также схемы инициализации и условия, требуемые для контроля над конфликтными ситуациями во время инициализации — и для пассивных, и для активных режимов NFC.

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).
Читаем NFC-тег
Читаем NFC-тег

Беспроводные метки nfc

4.1.8.8 NFC и беспроводные интерфейсы приложений

Технический прогресс не стоит на месте, появляющиеся новые технологии со временем дешевеют и становятся доступны практически всем желающим. Как пример можно привести мобильные телефоны. Середина 80-ых — начало 90-ых были переносные таксофоны с ручками или кирпичи стоимостью несколько тысяч $, конец 90-ых — большого размера трубки, с торчащими антеннами со стоимостью от 100$ Такую же аналогию можно провести с NFC метками, используемыми в учетных целях.

В идеальном варианте и оборудование и расходники (метки) могут ничего не стоить при условии, что у работника имеется смартфон с поддержкой NFC и сам работник не против его использования. Ну и, конечно же, удалось раздобыть необходимое количество использованных билетов. На Ali стоимость от 6 рублей с лишним за метку.

4.1.8.8 NFC и беспроводные интерфейсы приложений

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

Для обмена можно использовать http или web сервисы, ботов телеграмм или иное месенджероподобное решение.

Описанное нигде не подглядывал, видел когда-то статью про запись пароля wifi на билет, а также имел опыт работы с ТСД (штрих.кодами rdp на винмобайл), огромным и дорогим, на мой взгляд неудобным. С тех пор было желание повторить что-то подобное на более удобном смартфоне.

Группы из 4 байтов называются страницами. Первые несколько страниц, как правило заняты служебной информацией, на одном из скриншотов можно увидеть ID метки NFC на первых двух страницах.

4.1.8.8 NFC и беспроводные интерфейсы приложений

Кроме ID также может содержаться информация о заблокированных readonly байтах. А также масса другой информации все зависит от типа метки и поддерживаемых возможностей. Также служебная информация может быть записана в конце метки на последних страницах. Более подробно описанное можно увидеть программе для чтения меток, например TagInfo.

4.1.8.8 NFC и беспроводные интерфейсы приложений

Рекомендуется записывать данные с 8 страницы для пустых — купленных меток.

Для билетов рекомендуется записывать с 16 страницы. Длина имени справочника не должна превышать 60 символов, в случае использования билета.

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

Данная разработка позволит быстро интегрировать в ваше мобильное приложение функционал чтения записи NFC.a меток.

Возможные варианты использования:
Складской учет номенклатуры, упаковок, ячеек, мест хранения.
Учет ОС, МБП: шкафов, столов, компьютеров.
Мобильный пропускной пункт.
И так далее.

Исходники приложения доступны по ссылке https://github.com/PloAl/RfIdTool

Приложение является «служебным» и не имеет основной activity, также нет в меню приложений android. Запуск происходит из других приложений, туда же передаются считанные данные или передаются данные для записи в метку.

Ниже на картинке видна, полупрозрачная область «Запись метки NFC» это единственная activity приложения.

4.1.8.8 NFC и беспроводные интерфейсы приложений

Пример использование в android приложении:

protected void nfcStart(boolean read, String readedId) {
    
    if (read)) {
        Intent intent = new Intent("com.ploal.rfidtool.NFCREAD");
        intent.putExtra("IdLabel", readedId); //множественное чтение, предыдущий id метки 
    }
    else{
        Intent intent = new Intent("com.ploal.rfidtool.NFCWRITE");
        intent.putExtra("PageNumber", PageNumber); //глоб. переменная номер страницы 
        intent.putExtra("WriteString", WriteString); //глоб. переменная текст для записи
    }
    startActivityForResult(intent, 1);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (null != data) {
        String event = data.getStringExtra("event");
        String uid = data.getStringExtra("uid");
        String result = data.getStringExtra("result");
        String text = data.getStringExtra("text");
        String[] techArr = data.getStringArrayExtra("tech");
        //обработка полученных данных ...
    }
}

Пример использование в мобильном приложении(клиенте) 1с:

&НаКлиенте
Процедура ЗапускПриложенияNFC(Чтение=Истина,ПрочитанныйID="")
    ЗПМУ = Новый ЗапускПриложенияМобильногоУстройства();
        
    Если Чтение Тогда
        ЗПМУ.Действие = "com.ploal.rfidtool.NFCREAD";
        ЗПМУ.ДополнительныеДанные.Добавить("IdLabel",ПрочитанныйID);
    Иначе
        ЗПМУ.Действие = "com.ploal.rfidtool.NFCWRITE";
        ЗПМУ.ДополнительныеДанные.Добавить("PageNumber","" НомерСтраницы);
        ЗПМУ.ДополнительныеДанные.Добавить("WriteString",ТекстЗаписи);
    КонецЕсли;
    
    Если ЗПМУ.ПоддерживаетсяЗапуск() Тогда
        ЗПМУ.Запустить(Истина);	
        Событие = "";
        Для Каждого Стр Из ЗПМУ.ДополнительныеДанные Цикл
            Если Стр.Ключ = "event" Тогда
                Событие = Стр.Значение;
            ИначеЕсли Стр.Ключ = "uid" Тогда
                УИД = Стр.Значение;	
            ИначеЕсли Стр.Ключ = "result" Тогда
                Результат = Стр.Значение; //HEX строка
            ИначеЕсли Стр.Ключ = "text" Тогда
                Текст = Стр.Значение;	
            ИначеЕсли Стр.Ключ = "tech" Тогда
                Техлист = Стр.Значение;	
            КонецЕсли;
        КонецЦикла;
        //обработка полученных данных ...
    КонецЕсли;	
КонецПроцедуры 

Другие беспроводные технологии

RFID ушёл на второй план по сравнению с NFC. Bluetooth ещё живёт и развивается, но как долго он будет полезным — неизвестно. Wi-Fi — актуален всегда, тем более вышел Wi-Fi 6. В целом, я Вам советую пересмотреть своё отношение к NFC, если Вы им не пользуетесь.

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

Два года назад был создан новый альянс, который по моим ощущениям, создаст новые возможности для развития технологий в ближайшие 5 лет. UWB Alliance был создан в 2022 году с целью развития технологии сверхширокой полосы и создания стандарта IEEE 802.15.4z.

UWB (Ultra-Wide Band, сверхширокая полоса) — это беспроводная технология связи на малых расстояниях при низких затратах энергии, использующая в качестве несущей сверхширокополосные сигналы с крайне низкой спектральной плотностью мощности.

Использование сверхширокой полосы частот (не менее 500 МГц) позволяет UWB достичь скорости передачи до 480 Мбит/с на расстоянии до 3 м. На расстояниях до 10 м технология позволяет достичь лишь 110 Мбит/с.

Цель стандарта IEEE 802.15 — предложить нижние слои основания сети для сетей типа беспроводных персональных сетей, ориентированных на низкую стоимость, низкую скорость повсеместной связи между устройствами.

Что из этого выйдет, узнаем в ближайшее время.

Таки спасибо за прочтение и всего Вас доброго!

Ещё немного про безопасность

Одним из вариантов хранения учетных данных карты и конфиденциальной информации на смартфоне является Security Element. Мы помним, что SE это физический чип, на который установлены апплеты каких-то приложений с конфиденциальными данными, например, апплет платежного приложения, транспортного и т.д.

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

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

И вот, еще одна некоммерческая организация, которая занимается разработкой спецификаций для безопасных цифровых экосистем в США, Global Platform выпустили спецификацию доверенной среды исполнения, или TEE. Эта среда, такой слой между ОС мобильного устройства и SE, в котором обмен данными и командами защищен. Вот тут спецификации Global Platform по криптографическим алгоритмам, системной архитектуре TEE и т.д.

Trusted Execution Environment — доверенная среда исполнения.GlobalPlatform TEE Internal API — внутренний API доверенной среды исполнения. Trusted Core Environment — доверенная среда ядра. Trusted Functions — доверенные функции. TEE Kernel — ядро доверенной среды исполнения.

HardWare secure resources — аппаратные ресурсы безопасности. Hardware Platform — аппаратная платформа. Rich OS — операционная система. GlobalPlatform TEE client API — клиентские API доверенной среды исполнения. Rich OS application environment — основная среда исполнения приложений в операционной системе.

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

Любая необходимая защита должна быть реализована поверх реализации HCE. Приложение может пересылать команды NFC в любое место, доступное для смартфона. Это делает варианты реализации виртуальной карты практически безграничными — от полностью облачной карты до хранения (части) виртуальной карты в SE.

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

Как использовать программируемые теги nfc

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

  • Дома: Вы можете запрограммировать теги NFC и прикрепить их к двери или на столе, чтобы вам было проще выполнять такие действия, как включение Wi-Fi, выключение Bluetooth, приглушенный свет. Вы также можете прикрепить программируемую метку NFC к прикроватной тумбочке и запрограммировать ее на отключение звука, включение будильника, отключение автосинхронизации, выключение световых сигналов.
  • Во время движения:  Очень важно сделать метку NFC и прикрепить ее рядом с приборной панелью или средней панелью управления, чтобы помочь вам быстро подключиться к Bluetooth вашего автомобиля и воспроизвести свои любимые песни.
  • Готовьтесь к работе:  Создайте несколько тегов NFC в своем кабинете или офисе и запрограммируйте его на отключение звука, включение Wi-Fi, открытие ежедневных событий, переход в музыкальное приложение и другие задачи в зависимости от ваших предпочтений.
  • Подключите WIFI:  Если вы хотите, чтобы гости дома (или в офисе) использовали Wi-Fi без необходимости вводить пароль, создайте тег NFC WiFi, чтобы ваши гости могли легко подключаться к вашему Wi-Fi.
  • Брелок NFC:  Прикрепите метку NFC к существующей цепочке ключей и запрограммируйте ее на то, что вы часто делаете, например, переводить телефон в горячий режим, включать любимую песню или звонить кому-то из ваших контактов. Тогда вы сможете справиться с этими задачами проще и удобнее, особенно когда вы находитесь в переполненном общественном транспорте или на улице.

Пишем данные

Для записи данных будем использовать NFC TagWriter. Пользоваться приложением довольно просто. Запускаем, тапаем по пункту Create, write and store, выбираем New, далее выбираем тип записываемых данных. Наиболее полезные типы: контакт, простой текст, телефонный номер, данные для Bluetooth-соединения, URI и приложение. В списке есть даже закладка веб-браузера и email-сообщение, но для чего они нужны, не совсем понятно.

Главный экран NFC TagWriter
Главный экран NFC TagWriter

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

NFC TagWriter: опции сообщения
NFC TagWriter: опции сообщения

Вновь нажимаем Next и подносим смартфон к тегу. Вуаля, наши данные в нем. Теперь их можно прочитать любым смартфоном с поддержкой NFC. Но что это в конечном итоге дает?

Пример 1. разработка nfc приложения для чтения/записи меток.

Следующий пример показывает функции чтения/записи NFC метки. Для того, чтобы получить доступ к аппаратной части NFC и корректно обрабатывать NFC информацию, объявите эти позиции в файле AndroidManifest.xml.

Минимальную версию SDK, которую должно поддерживать ваше приложение — 10, объявите об этом в файле AndroidManifest.xml


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

@Override
	    protected void onNewIntent(Intent intent){
	        if(NfcAdapter.ACTION_TAG_DISCOVERED.equals(intent.getAction())){
	        mytag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);  // get the detected tag
	        Parcelable[] msgs =
	intent.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES);
	            NdefRecord firstRecord = ((NdefMessage)msgs[0]).getRecords()[0];
	            byte[] payload = firstRecord.getPayload();
	            int payloadLength = payload.length;
	            int langLength = payload[0];
	            int textLength = payloadLength - langLength - 1;
	            byte[] text = new byte[textLength];
	            System.arraycopy(payload, 1 langLength, text, 0, textLength);
	            Toast.makeText(this, this.getString(R.string.ok_detection) new String(text), Toast.LENGTH_LONG).show();
	                    }
	    }

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

	If (mytag==Null){
	    ……
	}
	else{
	……
	write(message.getText().toString(),mytag);
	……
	}
	    private void write(String text, Tag tag) throws IOException, FormatException {
	        NdefRecord[] records = { createRecord(text) };
	        NdefMessage  message = new NdefMessage(records);
	// Get an instance of Ndef for the tag.
	        Ndef ndef = Ndef.get(tag); // Enable I/O
	        ndef.connect(); // Write the message
	        ndef.writeNdefMessage(message); // Close the connection
	        ndef.close();
	    }

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

Разблокировка смартфона

У Motorola есть довольно интересный аксессуар для смартфонов под названием Motorola Skip. Это клипса на одежду для быстрой разблокировки смартфона без необходимости введения PIN-кода или графического ключа. Аксессуар в некоторых случаях довольно полезный, но работает он только со смартфонами той же компании. К счастью, аналогичную штуковину можно собрать на коленке.

Не буду рассказывать, как сделать саму клипсу, — тут каждый волен проявить свою фантазию, NFC-тег можно и на руку наклеить, — а вместо этого скажу, как настроить разблокировку смартфона при ее касании. Есть несколько способов, но самый простой и эффективный — это Xposed-модуль NFC LockScreenOff Enabler.

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

NFC LockScreenOff Enabler: разблокировка NFC-тегом
NFC LockScreenOff Enabler: разблокировка NFC-тегом

Спецификации nfc forum

В июне 2006 года, всего через 18 месяцев после своего основания, Форум официально обрисовал архитектуру технологии NFC. На сегодняшний день Форум выпустил 16 спецификаций. Спецификации предоставляют своего рода «дорожную карту», которая позволяет всем заинтересованным сторонам создавать новые продукты.

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

Например, в спецификации NFC Analog Technical Specification рассматриваются аналоговые радиочастотные характеристики устройства с поддержкой NFC. Эта спецификация включает в себя требования к мощности антенны, требования к передаче, требования к приемнику и формы сигналов (время /частота /характеристики модуляции).

Спецификация NFC Analog 2.0 ввела активный режим связи для обмена данными P2P и технологию NFC-V в режиме опроса. Версия 2.0 обеспечивает полную совместимость с устройствами, соответствующими ISO/IEC 14443 или ISO/IEC 18092.По этим спецификациям существует следующие способы связи для устройств NFC:

NFC-AТип связи NFC-A основан на стандарте ISO/IEC 14443A для бесконтактных карт. Типы связи отличаются используемыми режимами кодирования сигнала и модуляции. NFC-A использует код Миллера и амплитудную модуляцию.

NFC-BТип связи NFC-B основан на стандарте ISO/IEC 14443B для бесконтактных карт. NFC-B использует метод манчестерского кодирования. Двоичные данные также передаются со скоростью около 106 Кбит/с. Здесь вместо 100% используется 10% -ое изменение амплитуды для двоичного 0 (то есть низкого уровня)

NFC-FТип связи NFC-F основан на стандарте FeliCA JIS X6319-4, также известный как просто FeliCa. Стандарт регулируется японской jicsap. Там эта технология, и наиболее популярна. Скорость передачи данных 212 / 424 Кбит/с, используется манчестерское кодирование и амплитудная модуляция.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *