Используем NFC для автоматизации – «Хакер»

Алгоритм работы NFC

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

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

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

Первым главным отличием NFC от RFID является способ взаимодействия peer-to-peer, который реализован с помощью ГОСТ Р ИСО/МЭК 18092. Обмен данными P2P реализуется двумя протоколами — протоколом подуровня управления логической связью (LLCP — logical link control protocol) и простым протоколом обмена данными NDEF (SNEP — simple NDEF exchange format).

Как устроены пластиковые карты

Используем NFC для автоматизации - «Хакер»

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

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

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

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

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

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

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

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

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

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

Функции технологии NFC в повседневной жизни

NFC

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

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

Итоговое назначение зависит от желаний и фантазии пользователя и практически не имеет ограничений (в пределах разумного и возможностей телефонов).

Для оплаты

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

  1. привязать банковскую карту к гаджету;
  2. поднести устройство к терминалу (как стандартный «пластик» с технологией PayPass)
  3. дождаться считывания платёжной информации;
  4. ввести пин-код.
  5. После чего останется забрать оплаченный товар.

В доме

Использование НФС в доме зависит в первую очередь от фантазии пользователя. Желающие воспользоваться возможностями системы способны:

  • автоматически выключать wi-fi при выходе из квартиры;
  • запускать приложение с записной книжкой по утрам;
  • отключать ненужные опции перед сном;
  • включать будильник.

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

устройство с настроенным сервисом;

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

Используем NFC для автоматизации - «Хакер»

Чтобы запустить или выключить wi-fi, нужно совершить всего пару действий:

  1. поднести сотовый к метке;
  2. дождаться её считывания;
  3. после чего аппарат выполнит предусмотренную настройками задачу.

Ничего дополнительного делать не придётся, поскольку подключение к интернету (или отключение раздачи трафика) уже произойдёт.

В офисе

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

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

В автомобиле

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

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

Secure Element может быть либо встроенным в материнскую плату телефона, либо находиться на отделяемом модуле: SIM-карте или SD-карте.

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

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

Используем NFC для автоматизации - «Хакер»

Есть несколько распространённых типов NDEF-записей:

  1. Обычные текстовые записи. В них можно отправить любую строку, они не содержат инструкций для цели, но содержат метаданные об языке текста и кодировке.
  2. URI. Такие записи содержат данные об интернет-ссылках. Цель, получившая такую запись, откроет её в том приложении, которое сможет её отобразить. Например, веб-браузере.
  3. Умная запись. Содержит не только веб-ссылки, но и текстовое описание к ним, чтобы было понятно, что находится по этой ссылке. В зависимости от данных записи телефон может открыть информацию в нужном приложении, будь то SMS или e-mail, либо сменить настройки телефона (громкость звука, яркость экрана и т.д.).
  4. Подпись. Она позволяет доказать, что информация, которая была передана или передаётся, достоверна.

Можно использовать несколько видов записей в одном NDEF-сообщении.

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

Второе главное различие между NFC и RFID — формат обмена данными NFC (NDEF — NFC data exchange format). NDEF определяет формат данных в сообщениях, которые в свою очередь состоят из NDEF записей. Есть несколько видов записей, о которых будет рассказано более подробно чуть ниже. NDEF делает возможным с помощью программного кода управлять процессом чтения и записи NFC-меток, обмена данными при помощи peer-to-peer и эмулирования карт.

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

Используем NFC для автоматизации - «Хакер»

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

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

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

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

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

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

Когда телефон на 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 не сработали.

Используем NFC для автоматизации - «Хакер»

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

Когда это возможно, запускается 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 -{amp}gt;
            val messages: List = rawMessages.map { it as NdefMessage }
            // Обработка массива сообщений.
            ...
        }
    }
}
@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 {amp}lt; rawMessages.length; i  ) {
                messages[i] = (NdefMessage) rawMessages[i];
            }
            // Обработка массива сообщений.
            ...
        }
    }
}

Kotlin

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

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

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

Используем NFC для автоматизации - «Хакер»

Kotlin

Запись платежной карты в телефон

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

Первыми в РФ попытались перенести карту в телефон сотовые операторы, например, «МТС» и банк «Русский Стандарт», «Мегафон» и транспортная карта в г. Екатеринбург, «Билайн» и транспортная карта в г. Казань и т.п. Чтобы сделать это, им понадобилось закупить специальные SIM-карты с Secure Element, договориться с транспортной компанией или банком о записи на эти карты платежного приложения, осуществить процесс «контактной персонализации», а затем обменивать старые SIM-карты абонентов на новые.

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

Удаленная загрузка карт

К счастью, телефон является интерактивным устройством, которое всегда на связи. Следовательно, в него можно удаленно записывать платежные карты и именно тех поставщиков услуг, которые нужны конкретным пользователям. Для осуществления этой функции была сформулирована роль TSM (Trusted Service Manager), который объединяет с одной стороны поставщиков услуг (Service Provider TSM), а с другой стороны чипы Secure Element в любых форма-факторах (Secure Element Issuer TSM). Такая платформа TSM и была разработана нами в компании i-Free и сертифицирована на соответствие всем необходимым мировым стандартам.

НФС расшифровка

TSM позволяет владельцам Secure Element не интегрироваться с каждым поставщиком услуг и не отвозить к ним всем «носители карт» для контактной персонализации, а поставщикам услуг не подключаться ко всем операторам и производителям телефонов. Сотовым операторам, производителям телефонов и поставщикам услуг достаточно подключиться к TSM по стандартному протоколу и они одновременно интегрируются с множеством партнеров.

Читайте на сайте

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

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

И только третье отличие не в пользу Near Field Communication: средняя скорость передачи данных у него ниже – 424 Кбит/с.

Kotlin

Kotlin

Взаимодействие смартфона и платформы TSM

Платформа TSM удаленно управляет чипами Secure Element в телефонах пользователей через безопасный канал связи, используя сам телефон в качестве модема. Ключи от Secure Element хранятся на специальных серверах HSM (Hardware Security Module), являющихся неотъемлемой частью TSM, и без участия последнего получить доступ к чипу невозможно.

На основании распоряжения поставщика услуги TSM записывает (или удаляет, например, в случае утери смартфона) данные карты в Secure Element, а также позволяет проводить удаленный аудит выпущенных карт или, например, просматривать актуальный баланс по картам оплаты проезда или картам лояльности для отображения на экране телефона.

расположение модуля нфс

Для какой именно выпущенной карты активировать режим оплаты выбирает пользователь, через пользовательское приложение «Кошелёк», которое отображает выпущенные и доступные для выпуска карты, а также принимает заявки на выпуск новых. Поставщик услуги, получая заявку на выпуск карты, передает эти данные Secure Element телефона через платформу TSM.

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

  • расплачиваться гаджетами в магазинах;
  • запускать с помощью меток приложения и программы;
  • передавать информацию, используя НФС вместо Bluetooth.

Оплата банковской картой в телефоне

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

Местонахождение антенны различается в зависимости от модели телефона. Например, в смартфонах Philips Xenium W336 и Philips Xenium W5888 антенна находится чуть ниже центра задней панели, а вот в HTC One она расположена выше — за задней камерой, так как корпус телефона металлический,  радио сигнал проходит через узкие пластиковые участки в форме буквы «Т».

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

При оплате банковской картой в телефоне, как и при оплате обычной пластиковой картой, вас могут попросить ввести PIN-код (который можно получить по звонку в банк) или поставить подпись на чеке. Для покупок на сумму менее 1000 рублей ни PIN-код, ни подпись не потребуются.

Заключение

Технология 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».

Приложение «Кошелёк»

Как активировать НФС

Приложение «Кошелёк» не является электронным кошельком или платежной системой, как скажем, многим известный Visa QIWI Wallet и аналоги. «Кошелёк» — это в первую очередь универсальный интерфейс к приложениям (картам) в Secure Element. Благодаря такому подходу, телефон становится «универсальной интерактивной пластиковой картой».

Основная роль приложения заключается в отображении выпущенных или доступных к выпуску карт и обеспечении канала связи между Secure Element и TSM. Также «Кошелёк» дает пользователю возможность интерактивно управлять картами, загруженными в Secure Element.

Приложение предустанавливается на совместимые телефоны на производстве или добавляется с обновлением программного обеспечения таких телефонов (на момент написания текста это HTC One, Philips W8555 и Philips Xenium W336, а в ближайшее время добавятся HTC One Dual SIM, HTC One Max, HTC One SV, HTC Desire 500 и HTC Desire 600). Другие модели и производители появятся позже.

Первая карта, которая доступна в «Кошельке» уже сегодня — предоплаченная банковская карта «ТКС Банка». «Предоплаченная» означает, что карта выпускается без заключения письменного договора с банком, не связана с вашими другими картами в банке, а также в соответствии с законодательством РФ имеет ограничения на одну операцию (не более 15 000 рублей) и общую сумму операций за месяц (не более 40 000 рублей). При выполнении заявки пользователя на выпуск, карта доставляется в телефон в среденем в течение 10 минут.

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

Любая карта в любом телефоне

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

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

Автор текста: Константин Савченко

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

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