NFC функция в телефоне — 9 особенностей технологии

NFC функция в телефоне - 9 особенностей технологии NFC

Nfc кольцо, что это такое и как использовать

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

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

Что насчёт безопасности в устройствах с nfc

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

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

Путем экспериментов было выявлено нарушение связи устройств, путем глушения сигнала. Радиосигнал, как известно, очень легко исказить, а RFID-модуль к этому очень чувствителен.

Почему для совершения операция нельзя использовать Bluetooth?

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

Nfc – в каких телефонах есть и как включить

Я покажу на примере Android телефона. При покупке вы наверняка читали характеристики смартфона, и наверняка там была строчка «Поддержка NFC». Если вы не помните, то это можно посмотреть в настройках системы.

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

Если в шторке уведомлений функции нет, тогда переходим в настройки. У меня стоит Android 7.1.2 с оболочкой LineageOS, поэтому покажу на её примере. В разделе «Беспроводные сети» нажимаем по кнопке «Ещё».

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

Tnf_absolute_uri (тип uri, зависит от типа)

Создать NDEF-запись TNF_ABSOLUTE_URI можно следующим образом:

Kotlin

Tnf_mime_media (mime-тип, зависит от типа записи)

Создать NDEF-запись TNF_MIME_MEDIA можно следующим образом:

1. Используя метод createMime():

Kotlin

Tnf_well_known с rtd_text (mime-тип с записью простого текста)

Создать NDEF-запись TNF_WELL_KNOWN можно следующим образом:

Kotlin

fun createTextRecord(payload: String, locale: Locale, encodeInUtf8: Boolean): NdefRecord { val langBytes = locale.language.toByteArray(Charset.forName("US-ASCII")) val utfEncoding = if (encodeInUtf8) Charset.forName("UTF-8") else Charset.forName("UTF-16") val textBytes = payload.toByteArray(utfEncoding) val utfBit: Int = if (encodeInUtf8) 0 else 1 shl 7 val status = (utfBit langBytes.size).toChar() val data = ByteArray(1 langBytes.size textBytes.size) data[0] = status.toByte() System.arraycopy(langBytes, 0, data, 1, langBytes.size) System.arraycopy(textBytes, 0, data, 1 langBytes.size, textBytes.size) return NdefRecord(NdefRecord.TNF_WELL_KNOWN, NdefRecord.RTD_TEXT, ByteArray(0), data)
}

Java

public NdefRecord createTextRecord(String payload, Locale locale, boolean encodeInUtf8) { byte[] langBytes = locale.getLanguage().getBytes(Charset.forName("US-ASCII")); Charset utfEncoding = encodeInUtf8 ? Charset.forName("UTF-8") : Charset.forName("UTF-16"); byte[] textBytes = payload.getBytes(utfEncoding); int utfBit = encodeInUtf8 ? 0 : (1 << 7); char status = (char) (utfBit langBytes.length); byte[] data = new byte[1 langBytes.length textBytes.length]; data[0] = (byte) status; System.arraycopy(langBytes, 0, data, 1, langBytes.length); System.arraycopy(textBytes, 0, data, 1 langBytes.length, textBytes.length); NdefRecord record = new NdefRecord(NdefRecord.TNF_WELL_KNOWN, NdefRecord.RTD_TEXT, new byte[0], data); return record;
}

Intent-фильтр для такой NDEF-записи будет таким:

Tnf_well_known с rtd_uri (тип uri, базирующийся на полезной информации)

Создать NDEF-запись TNF_WELL_KNOWN можно следующим образом:

1. Используя метод createUri(String):

Kotlin

Архитектура nfc

В архитектуре NFC есть несколько уровней. Самый низкий из них — физический, который реализован ЦПУ и другим аппаратным комплексом, через который происходит взаимодействие. В середине находятся данные о пакетах и транспортный уровень, затем формат данных уровней, и в конце программное обеспечение.

На физическом уровне NFC работает по алгоритму, описанному в ГОСТ для RFID (ГОСТ Р ИСО/МЭК 14443-2-2021), где говорится о маломощных радиосигналах частотой 13,56 МГц. Затем идёт уровень, который описывает разбивку потока данных на фреймы (ГОСТ Р ИСО/МЭК 14443-3-2021).

Любые радиоконтроллеры, которые используются в телефоне, планшете или подсоединяются к компьютеру или микроконтроллеру, являются отдельными аппаратными компонентами. Они взаимодействуют с главным процессором посредством одного или нескольких стандартных последовательных протоколов между устройствами: универсальный асинхронный приёмопередатчик (UART), последовательный периферийный интерфейс (SPI), последовательная шина данных для связи интегральных схем (I2C) или универсальная последовательная шина (USB).

Проблемы NFC:  Отзывы покупателей о 5.5" Смартфон Oukitel K10000 Pro 64 ГБ черный | 1286232. Интернет-магазин DNS

Над этим находится несколько протоколов команд RFID, базирующихся на двух спецификациях. NFC чтение и запись меток базируется на оригинальном RFID ГОСТ Р ИСО/МЭК 14443A. Протоколы Philips/NXP Semiconductors Mifare Classic и Mifare Ultralight и NXP DESFire совместимы с ГОСТ Р ИСО/МЭК 14443A.

Обмен данными P2P NFC базируется на ГОСТ Р ИСО/МЭК 18092. Также на этом же стандарте базируются RFID-карты и метки Sony FeliCa, которые доступны в основном в Японии. Можно читать и записывать метки, основанные на этих стандартах, и не использовать NFC.

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

Бесконтактная оплата

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

В чем особенность технологии и где применяется

Затрагивая смартфоны, здесь есть несколько вариантов применения из данного типа устройств:

  • Использование в качестве платежной системы (привязка кредитах карт, подарочных и скидочных карт);
  • Передача данных между двумя устройствами (напомню, расстояние между устройствами не менее 10 см);
  • Использование в качестве идентификации пользователя;
  • Соединение по технологии Bluetooth для передачи данных;
  • Считывание меток RFID для получения какой-либо информации, например, с досок объявлений.

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

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

Дверные замки и ручки

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

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

Как использовать метки с android устройством

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

Как передавать файлы по nfc

Скорее всего для этого есть программы в Android Play, но они на сейчас не понадобиться. Если вы хотите отправить какой-то файл, необходимо его выделить (можно несколько файлов), потом нажать по значку «Поделиться». Появится всплывающее окно, где необходимо выбрать опцию «Android Beam».

Теперь прикоснитесь к телефону, куда хотите отправить файл и ждите. На самом деле этот вариант передачи данных сильно уступает Bluetooth или Wi-Fi, но если нужно передать, какие-то сверхсекретные данные, то маленький радиус действия и минимальная вероятность перехвата вам это обеспечат.

Помимо стандартной передачи файлов с помощью Android Beam можно передать:

  • Открытую ссылку в браузере;
  • Данные с Google Maps (определённого маршрута или места);
  • Контакты – отправляется без фотографии;
  • Приложения из Google – отправляется ссылка;
  • Любые типы файлов – от текстовых до медиа.

Какой длины может быть ndef-сообщение?

Место на информацию в NDEF-записи ограниченно по размерам 2^32-1 байтами, однако можно делать цепочки записей внутри сообщения, чтобы переслать информацию большего размера. В теории нет ограничений на NDEF-сообщения, но на практике размер сообщения ограничивается возможностями устройств или меток, участвующих в обмене информацией.

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

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

Для того чтобы передать большой объем информации, устройства придётся держать друг рядом с другом длительное время, это может быть неудобным. Если нужно длительное взаимодействие между устройствами, то можно воспользоваться NFC для быстрого обмена данными о возможностях устройств и последующего включения одного из более подходящих способов передачи данных (Bluetooth, Wi-Fi и т.д.).

Проблемы NFC:  Что делать, если в телефоне нет NFC модуля.: spayte — LiveJournal

Новости на nfc forum

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

На ресурсе вы сможете найти необходимую информацию об NFC и новости, скорее связанные с соответствием стандартов в каких-то устройствах.

Оплата проезда

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

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

Принцип работы nfc

Казалось бы, что функция сильно отличается от других беспроводных моделей, а еще и уступает им. Принцип работы NFC заключается в том, что устройство, где встроен модуль данной технологии работает на скорости примерно 400 Кбит/с (явно уступает Wi-Fi), взаимодействие происходит на расстоянии 10 см, то есть вы практически прикладываете устройства друг к другу, хотя время соединения обычно мгновенное.

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

Что касается безопасности, то создатели вообще об этом не думали. Защита должна осуществляться на уровне устройства, где модуль NFC используется. Другими словами, если вы используете платежную систему Android Pay, то о безопасности совершения платежей можно не волноваться.

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

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

Создаём распространённые ndef-записи

Существует несколько методов для создания NDEF-записи: createUri(), createExternal() и createMime(). Лучше использовать один из них во избежание ошибок, которые могут возникнуть при создании записи вручную. Все примеры, представленные ниже, следует отправлять первым сообщением при записи метки, либо сопряжением с другим устройством.

Создание меток

Для создания меток вам понадобится заготовка, форм-фактор может быть на любой вкус. Обычные круглые метки можно приобрести как в России, так в интернете, например, на Aliexpress за 80 рублей.

Теперь на смартфон можно установить приложение (нам же надо как-то записать инфу на метку?). Я могу предложить TagInfo или TagWriter.

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

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

Структура ndef

NDEF содержит информацию о байтовом представлении сообщений, которые могут содержать несколько записей. У каждой записи есть заголовок, в котором находятся метаданные (тип, длина и т.д.), и информацию для отправки. Если вернуться к аналогии с параграфом, то параграф формируется из предложений, относящихся к одной теме, так и в NDEF-сообщениях — хорошо, когда все записи относятся к одной тематике.

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

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

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

Проблемы NFC:  Как получить 10 кэшбэка за покупки в супермаркетах

Типы nfc-меток

Существует четыре типа меток, описанных NFC-форумом, все они базируются на RFID-протоколах. Это делает NFC метки частично совместимыми со многими уже существующими RFID системами (например, Mifare и FeliCa). Хотя эти более старые системы не поддерживают NDEF, они, однако, могут опознавать NFC метки, которые совместимы с ними.

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

Типы 1, 2 и 4 основаны на ГОСТ Р ИСО/МЭК 14443A (состоит из четырёх частей: 1, 2, 3, 4), тип 3 — на ГОСТ Р ИСО/МЭК 18092. Более подробно про каждый из типов можно прочитать под спойлером.

Тип 1:
  • Основан на ГОСТ Р ИСО/МЭК 14443A;
  • Может быть как только для чтения, так и для чтения/записи;
  • Содержит от 96 байт до 2 кбайт памяти;
  • Нет защиты данных от коллизий (прим. — коллизии могут возникнуть; когда два активных источника передают данные одновременно);
  • Примеры: Innovision Topaz, Broadcom BCM20203.

Тип 2:

  • Аналогично типу 1 основан на NXP/PhilipsMifareUltralight метках (ГОСТ Р ИСО/МЭК 14443A);
  • Может быть как только для чтения, так и для чтения/записи;
  • Содержит от 96 байт до 2 кбайт памяти;
  • Скорость взаимодействия 106 кбит/с;
  • Поддержка анти-коллизий;
  • Пример: NXP Mifare Ultralight.

Тип 3:

  • Основан на метках SonyFeliCa (ГОСТ Р ИСО/МЭК 18092 и JIS-X-6319-4) без поддержки шифрования и аутентификации, которая предоставлена спецификацией FeliCa;
  • Может быть либо только для чтения, либо для чтения/записи;
  • Скорость взаимодействия 212 или 424 кбит/с;
  • Поддержка анти-коллизий;
  • Пример: Sony FeliCa.

Тип 4:

  • Аналогично типу 1, тип 4 основан на ГОСТ Р ИСО/МЭК 14443A;
  • Может быть либо только для чтения, либо для чтения/записи;
  • 2, 4 или 8 кбайт памяти;
  • Скорость взаимодействия 106, 212 или 424 кбит/с;
  • Поддержка анти-коллизий;
  • Пример: NXP DESFire, SmartMX-JCOP.

Пятый тип является собственностью NXPSemiconductors и, вероятно, самым распространённым на сегодняшний день MifareClassictag (ГОСТ Р ИСО/МЭК 14443A):

  • Память: 192, 768 или 3584 байта;
  • Скорость взаимодействия 106 кбит/с;
  • Поддержка анти-коллизий;
  • Пример: NXP Mifare Classic 1K, Mifare Classic 4K, Mifare Classic Mini.

Читаем ndef-сообщение

Когда телефон на Android считывает NFC-метку, он сначала её обрабатывает и распознает, а затем передаёт данные о ней в соответствующее приложение для последующего создания intent. Если с NFC может работать больше одного приложения, то появится меню выбора приложения. Система распознавания определяется тремя intent, которые перечислены в порядке важности от самой высокой до низкой:

  1. ACTION_NDEF_DISCOVERED: Этот intent используется для запуска аctivity, если в метке содержится NDEF-сообщение. Он имеет самый высокий приоритет, и система будет запускать его в первую очередь.
  2. ACTION_TECH_DISCOVERED: Если никаких activity для intent ACTION_NDEF_DISCOVERED не зарегистрировано, то система распознавания попробует запустить приложение с этим intent. Также этот intent будет сразу запущен, если найденное NDEF-сообщение не подходит под MIME-тип или URI, или метка совсем не содержит сообщения.
  3. ACTION_TAG_DISCOVERED: Этот intent будет запущен, если два предыдущих intent не сработали.

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

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

Если activity запускается из-за NFC intent, то можно получить информацию с отсканированной NFC-метки из этого intent. Intent может содержать следующие дополнительные поля (зависит от типа отсканированной метки):

  • EXTRA_TAG (обязательное): объект Tag, описывающий отсканированную метку.
  • EXTRA_NDEF_MESSAGES (опциональное): Массив NDEF-сообщений, просчитанный с метки. Это дополнительное поле присуще только intent ACTION_NDEF_DISCOVERED.
  • EXTRA_ID (опциональное): Низкоуровневый идентификатор метки.

Ниже представлен пример, проверяющий intent ACTION_NDEF_DISCOVERED и получающий NDEF-сообщения из дополнительного поля.

Kotlin

override fun onNewIntent(intent: Intent) { super.onNewIntent(intent) ... if (NfcAdapter.ACTION_NDEF_DISCOVERED == intent.action) { intent.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES)?.also { rawMessages -> val messages: List = rawMessages.map { it as NdefMessage } // Обработка массива сообщений. ... } }
}

Java

@Override
protected void onNewIntent(Intent intent) { super.onNewIntent(intent); ... if (NfcAdapter.ACTION_NDEF_DISCOVERED.equals(intent.getAction())) { Parcelable[] rawMessages = intent.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES); if (rawMessages != null) { NdefMessage[] messages = new NdefMessage[rawMessages.length]; for (int i = 0; i < rawMessages.length; i ) { messages[i] = (NdefMessage) rawMessages[i]; } // Обработка массива сообщений. ... } }
}

Также объект Tag можно получить из intent, который будет содержать полезную информацию и позволит перечислить технологии метки:

Kotlin

val tag: Tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG)

Java

Tag tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);

Заключение

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

Более подробно об NFC или NDEF можно почитать в книге Tom Igoe, Don Coleman, and Brian Jepson «Beginning NFC. Near Field Communication with Arduino, Android, and PhoneGap».

Оцените статью
NFC в смартфонах