NFC: что такое, с чем едят и как не подавиться

нфс_фб

В 1945 году Лев Термен изобрёл подслушивающее устройство, чтобы Советский Союз мог шпионить за американским послом в Москве. Он использовал пассивные методы для передачи аудиосигнала. На базе этого появился FRID (Radio Frequency IDentification), а затем NFC. Рассказываем о структуре и составляющих последнего в нашей статье.

Near field communication, или NFC, дословно переводится как «коммуникация ближнего поля». Это способ обмена данными без проводов и контакта вообще, единственное условие — расстояние между устройствами должно быть меньше или равно 4 см.

Фактически, NFC — простое расширение стандарта бесконтактных карт (ISO 14443). Оно объединяет интерфейс смарт-карты и считывателя в одно устройство. На настоящий момент совместимо со всеми NFC-носителями, в том числе умными часами.

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

NFC: структура и составляющие

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

FRID

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

FRID-считыватели бывают 2 видов: пассивные и активные.

Устройство первого типа посылает радиосигнал метке, которая поглощает его и посылает в ответ свой идентификатор. Это отражение, которое «питает» пассивный считыватель. 

Устройство второго типа может генерировать собственный радиосигнал, так как имеет личный источник питания. По той же причине активный FRID-считыватель способен работать на больших дистанциях.

Оба RFID-считывателя не рассчитаны на обмен серьёзными данными. Их цель — идентификация. Дальше в работу вступает NFC.

NFC

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

Это почти как Bluetooth, только ещё круче. Вы можете прикоснуться своим смартфоном к колонке, и если у них есть NFC и Wi-Fi модуль, они мгновенно начнут обмен данными. Когда процесс закончится (это буквально пара секунд), телефон начнёт транслировать музыку на колонку через Wi-FI.

С помощью NFC вы можете обменяться данными с другим смартфоном. Однако они не должны быть тяжёлыми. Максимум, что вам получится перекинуть и (или) принять в ответ: пароль, инструкция и сопряжение. 

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

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

    Если вам жизненно важно скинуть знакомому документ или какой-нибудь трек (например звукиболи.mp3), пока вы скучаете в офисе, пользуйтесь Wi-Fi, Bluetooth или другими расширенными протоколами обмена данными.

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

Типы NFC-меток

NFC-форум описал 4 типа меток, каждая из которых базируется на RFID-протоколах.

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

Второй тип базируется на NXP/PhilipsMifareUltralight (т. е. как и первый, на ГОСТР ИСО/МЭК 14443A). Память и функционал аналогичны. Скорость взаимодействия — 106 кбит/с. Защищён от коллизий. Яркий пример — NXP Mifare Ultralight.

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

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

Существует пятый тип NFC-метки. Это собственность NXPSemiconductors. Память — 192, 768 или 3584 байта, скорость — 106 кбит/с. Присутствует защита от коллизий. Примеры: NXP Mifare Classic 1K, Mifare Classic 4K, Mifare Classic Mini.

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

Рассмотрим три способа работы NFC-устройства.

1. Чтение информации с цели или записи на неё.

2. Эмулирование карты и имитация поведения RFID-метки (происходит в поле другого NFC или RFID устройства). 

3. Работа в режиме peer-to-peer (P2P), т. е. обмен данными сразу в двух направлениях. Это происходит с помощью двух протоколов: протокола подуровня управления логической связью и простого протокола обмена данными NDEF. LLCP, или logical link control protocol и SNEP, simple NDEF exchange format.

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

Архитектура NFC строится в несколько уровней. Представьте пирамиду, в основе лежит физический уровень, который реализуют ЦПУ и аппаратный комплекс, через который идёт взаимодействие. В середине находятся данные о пакетах и транспортный уровень. Над ними располагается формат данных уровней. Вершина — это ПО.

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

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

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

NDEF

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

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

Существует 4 распространённых типа NDEF-записи:

  • обычная текстовая запись — позволяет отправить любую строку, но не содержит инструкцию для цепи. В обычную текстовую запись автоматически включены метаданные о языке текста и кодировке;
  • URI — записи с данными об интернет-ссылках, по которым будет переходить принимающее устройство. Ссылки открываются в том приложении, в котором «приёмник» сможет это сделать. Обычно это браузер;
  • умная запись — кроме веб-ссылок включает их текстовое описание. Фактически, это усовершенствованная URI с пояснением. Смартфон, на который приходит умная запись, может открыть информацию в SMS, e-mail, а также изменить настройки: яркость, громкость и т. д.;
  • подпись — необходимо для подтверждения того, что передаваемая информация достоверна.

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

Структура NDEF

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

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

Длина NDEF-сообщения

Чаще всего NDEF-сообщения короткие, ведь обмен NFC-данными происходит в момент касания устройств. Этого времени хватит для передачи лишь одного сообщения. Логично, что оно вряд ли будет включать объёмный и длинный текст.

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

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

Как читать NDEF-сообщение

Чтобы смартфон считал NFC-метку, сначала он должен её обработать и опознать, потом передать данные об этой метки в нужное приложения, чтобы создать intent. Если на телефоне несколько приложений с возможностью использовать NFC, появится меню выбора.

Систему распознавания определяют 3 intent:

1. ACTION_NDEF_DISCOVERED

Первый по приоритету. Если в метке присутствует NDEF-сообщение, используется для запуска аctivity.

2. ACTION_TECH_DISCOVERED

Второй по приоритету. Используется в случае, когда activity для intent ACTION_NDEF_DISCOVERED не зарегистрировано. Также будет запущен (причём сразу), если NDEF-сообщение не подходит под MIME-тип или URI или в метка нет сообщения в принципе.

3. ACTION_TAG_DISCOVERED

Третий по приоритету. Запускается, когда два предыдущих не сработали.

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

  • EXTRA_TAG — обязательное. В нём находится объект Tag, который описывает отсканированную метку;
  • EXTRA_NDEF_MESSAGES — необязательное. Содержит массив NDEF-сообщений, который просчитывает с метки. Появляется только при использовании intent ACTION_NDEF_DISCOVERED;
  • EXTRA_ID — необязательное. Это низкоуровневый идентификатор метки.

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

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

Безопасное хранение данных

Прежде всего нужно использовать Защищённый Элемент (Security Element). Это один из вариантов хранения учётных данных карты на смартфоне. Фактически, он представляет из себя чип, который может быть частью аппаратной платформы смартфона, SIM- или SD-карты. 

На чип установлены апплеты приложений с конфиденциальными данными. Этими апплетами и информацией на Защищённом Элементе управляет TSM, доверенный менеджер услуг. Поэтому все личные данные в нём защищены так же, как на обычной физической карте. 

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

Это можно сделать с помощью вспомогательных средств. Например, спецификации доверенной среды исполнения, или TEE, которую не так давно выпустили Global Platform. TEE представляет из себя «прослойку» между Защищённым Элементом и ОС смартфона, которая защищает команды и обмен данных.

Использование технологии HCE

Ещё один способ защиты — Host Card Emulation, или HCE. В таком случае команды NFC можно направлять непосредственно в API ОС смартфона. И хотя сама технология HCE не предъявляет требований к хранению и обработки данных, не предоставляет методы обеспечения безопасности, любая необходимая защита на ОС Android последних версий реализуется поверх HCE.

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

Безопасные платежи

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

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

Безопасный автомобиль

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

Цифровой ключ (SmartKey или Digital Key, в зависимости от вида) — один из способов защиты машины. Это уникальный набор данных, зашитый производителем автомобиля в прошивку вместе с набором функций. Функции в данном случае будут доступны только по ключу.

Такую технологию разработали так, чтобы ключ не хранился и не передавался в открытом виде вообще.  Даже пользователь не может его увидеть. Это реализовано следующим образом: производитель выступает как TSM (Trusted Service Manager) для владельца машины, он передаёт человеку зашифрованные данные. Эти данные хранятся в Защищённом Элементе смартфона и служат дешифратором для уникального ключа.

NFC используется для передачи этих зашифрованных данных из телефона в автомобиль. «Угнать» ключи к ключу очень сложно из-за лимита, в данном случае это около 10 см. Нужно либо вести постоянную слежку и сидеть наготове, либо быть экстрасенсом. А если водитель использует TEE, шансы угнать автомобиль снижаются ещё больше.

Вывод

NFC — технология настоящего и, вероятно, будущего. Стоит уметь работать с ней и понимать её, чтобы не потерять актуальность на современном рынке IT-услуг. Мало того, что NFC-технология очень удобна, она ещё и достаточно безопасна. Поэтому рекомендуем начать изучение, если вы ранее не работали с NFC, или следить за обновлениями, если вы уже профи.