Вопросы и ответы по мобильной разработке NFC для Android и Symbian (FAQ)

Давайте поделимся общими идеями о развитии NFC, технологии… Я тепло приветствую любые ваши комментарии - как об Android или Symbian SDK, так и о NFC в целом.

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

Я думаю, что есть ожидания, что NFC откроет двери для множества услуг и возможностей для разработчиков - но так ли это? Разница между NFC и другими беспроводными технологиями (BT, WiFi) заключается в том, что в ней уже есть основные варианты использования - оплата, транспортные билеты и ключи (доступ в здание). Но для всех этих случаев использования вам нужен безопасный элемент, который

  • либо контролируется производителем телефона, например Google - см. Google Wallet, который использует исключительно встроенный NXP SecureMX на Nexus S (и это то, что вряд ли можно изменить, если мы не хотим ставить под угрозу безопасность),
  • или доступный через UICC на SIM-карте (также на Android и Symbian / и MeeGO / телефоне); здесь сделка должна быть сделана с операторами.

Но имея 3 или 4 оператора в стране, насколько вероятно, что компания среднего размера разрешит запускать свои апплеты на SIM-картах? А как насчет других решений по всему миру? Все вышеупомянутые услуги / варианты использования требуют тщательной координации всех участников и хорошо налаженной экосистемы (банки, MNO, производители чипов NFC, производители телефонов, TSM…).

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

Я думаю, что шансы могут быть больше, если в телефоне будет NFC-WI(S2C) - наличие этого интерфейса (указанного ECMA) и карт micro SD с поддержкой NFC-WI (уже указано ассоциацией SD-карт), возможно, позволит покупать SD-карты с элементы безопасности для произвольной компании… Но на рынке его нет и не похоже, что скоро что-то появится.

Каково ваше видение и опыт разработки NFC и мобильных телефонов?


person STeN    schedule 09.08.2011    source источник


Ответы (2)


Чтобы быть немного более практичным, а не только теоретическим, я разместил несколько патчей на xda-developers, чтобы включить режим эмуляции карты на уникальном в настоящее время телефоне Android с поддержкой NFC (Nexus S). Возможно, вам и другим будет интересно поиграть с режимом эмуляции карты. Учтите, что это только для экспериментальных целей.

Они применимы к Gingerbread версии 2.3.4_r1 исходников AOSP. Они разрешают:

  • Включение режима эмуляции карты NFC на Nexus S. Этот режим всегда включен.
  • Отключение режима чтения, позволяющее работать только с эмуляцией карты.
  • Выбор внешнего защищенного элемента (в UICC) вместо встроенного (в чипе SmartMX).
  • Хотя это не связано, удаление ограничения по времени для возможности обнаружения Bluetooth.

Что я узнал об эмуляции карты NFC на Android:

  • Эмуляция карты по умолчанию отключена для стоковых изображений и требует модификации прошивки. Переделка системного приложения Nfc и системная библиотека libnfc-nxp - вот на что стоит обратить внимание.
  • Встроенный чип SmartMX внутри Nexus S представляет собой двойную смарт-карту. Программируемый (с возможностью установки на него кардлетов) на базе Mifare и 4K.
  • Карта 4K Mifare имеет ключи по умолчанию, поэтому ее можно писать / читать с внешнего устройства чтения.
  • Программируемая карта должна быть GP, но никто, кроме Google, не может возиться с ней, поскольку ключи доступа не общественные.
  • Nexus S поддерживает SWP и позволяет работать с защищенным элементом, расположенным внутри UICC.
  • Приложения не могут получить прямой доступ к какому-либо содержимому защищенных элементов. С одной стороны, встроенный SE недоступен, потому что мы не знаем ключей. С другой стороны, внешний элемент доступен извне с помощью SWP (который подключается к контроллеру NFC), но не изнутри, потому что AFAIK слот для SIM-карты не подключен другими способами к контроллеру NFC. Это оставляет нам только один путь - процессор основной полосы частот. Однако прошивка BB является частной и контролируется производителями. Компания Samsung не реализовала техническую спецификацию 3GPP TS 27.007 для взаимодействия с это в его прошивке ББ.
  • Должен быть возможен OTA-доступ к внешним SE, это находится в руках операторов мобильной связи. Некоторые из них могут предлагать услуги TSM, позволяющие сторонним лицам получить доступ к SE внутри UICC.

Кстати, упомянутая вами технология (NFC-WI) уже используется в Nexus S для соединения контроллера NFC со встроенным защищенным элементом.

Обновить

Подводя итог, я отвечаю на вопросы Стена:

Поскольку область Mifare 4K имеет ключи по умолчанию, любой, у кого есть внешний считыватель NFC, может изменять ключи и безопасно хранить там значения - это правильно? Вы пробовали это? Есть ли здесь какие-нибудь трудности?

Короткий ответ да, я получил доступ к Mifare 4K с внешнего устройства чтения. Мне тоже удалось изменить ключи по умолчанию. Сложности возникают из-за изменения исходных текстов системы и самостоятельного создания кастомной прошивки.

Является ли использование внешнего считывателя NFC единственным способом доступа к пространству Mifare?

Теоретически нет. Другой альтернативой была бы отправка APDU на SIM-карту, содержащих команды Mifare для выполнения на карте Mifare.

Может, например, приложение, установленное на телефоне Android, читает / записывает некоторые данные в Mifare 4K с использованием некоторого API (через контроллер NFC и путь NFC-WI)? Может, например, seek-for-android help там?

Пока нет. Хотя вы модифицируете исходники AOSP с помощью патчей поиска для Android (я сделал это сам), ваше приложение просто вылетает со стандартными телефонами. Причина в том, что они не реализовали техническую спецификацию 3GPP TS 27.007, что позволяет процессору приложений отправлять APDU непосредственно на SIM-карту (UICC).

Однако впереди туннель может быть свет, поскольку в проекте гражданина во Франции уже используется режим защищенных элементов NFC. с телефонами Android, используя подход защищенных элементов UICC. На самом деле существует измененный используемая модель Samsung Galaxy SII и новая Acer Liquid Express также скоро будет доступен для интеграции в гражданство. Эти телефоны обязательно должны иметь требуемую спецификацию TS 27.007, реализованную в их микропрограммном обеспечении процессора основной полосы частот. Что касается процессора приложений, я не знаю, взяли ли они SEEK-for-android из G&D или OpenNFC из Insecure. Будучи французом, я бы поставил олл-ин на последнего.

person Fernando Miguélez    schedule 29.09.2011
comment
Привет, ПРИЯТНЫЙ вклад: Короче говоря, нельзя получить доступ к Mifare 4K, если Google не поделится ключами с соответствующей компанией или не арендует место через TSM - это, я думаю, теоретически возможно для некоторых компаний, поскольку все еще должно быть доступно много свободных секторов (если кошелек Goolge не занимает все 3440 байт). Но я не уверен, как в таком случае (т.е. даже с разрешения Google) кардлеты могут быть установлены на телефоне, встроенном в SmartMX - возможно ли это через OTA? Продолжение следует - person STeN; 03.10.2011
comment
Другой вариант - SIM-карта - есть способ получить к ней доступ через NFC через SWP или напрямую (BB) через USB или аналогичный - но для загрузки программы на SIM-карту существуют те же ограничения, что и для встроенного элемента безопасности ... Это оставил нам карты памяти micro SD, я думаю. - person STeN; 03.10.2011
comment
Ну, вы не можете получить доступ к Mifare 4K с телефона, но вы можете получить доступ к внешнему считывателю RFID (ключи имеют значения по умолчанию). Если вы имеете в виду OTA, обычный MNO OTA, я не думаю, что к нему можно получить доступ таким образом, поскольку OTA предназначен для доступа к SIM-карте, а не к внутренним устройствам телефона. - person Fernando Miguélez; 03.10.2011
comment
Насколько я понял, экспериментируя с Nexus S, SWP используется только для подключения UICC ‹-› NFC Controller в радиосвязи. Этот канал (я не нашел как) недоступен из прикладного процессора. Единственный путь для доступа к SE из прикладного процессора через контроллер NFC - это интерфейс NFC-WI, который используется исключительно для встроенной связи SE. Единственный предполагаемый способ доступа к UICC из прикладного процессора - через процессор основной полосы частот (который подключен к UICC), который должен реализовывать одобренные AT-команды для экспорта этой функциональности. - person Fernando Miguélez; 03.10.2011
comment
Если вы включите режим эмуляции карты с помощью упомянутой выше модификации, вы не сможете одновременно использовать эмуляцию карты из UICC / SmartMX. Проблема: как сообщить UICC отключить эмуляцию карты без изменения программы? Это тупик имхо. - person Nils Pipenbrinck; 28.11.2011
comment
Вы можете работать с эмуляцией карты, используя встроенный SmartMX SE или внешний SE внутри UICC. Не в то же время, но с предоставленными исправлениями вы можете указать, предпочитаете ли вы внешний вместо встроенного, если он доступен или нет. - person Fernando Miguélez; 28.11.2011

Итак, чтобы продолжить обсуждение, я просто резюмирую его: микроконтроллер NXP SmartMX состоит из двух отдельных защищенных элементов. Первый является программируемым, запускает некоторую операционную систему (например, MULTOS или Sm @ rtCafe или другую) и виртуальную машину JavaCard, но он заблокирован, и ключи доступа к производственной среде находятся только в руках Google или TSM. Здесь нет возможности установить приложение JavaCard для тестирования, так как невозможно разблокировать защищенный элемент для тестовых целей.

Также нет способа использовать SIM-карту, потому что, даже если это технически возможно, для коммерческого приложения необходимо иметь дело с MNO. Давайте остановимся на Mifare 4K, который кажется наиболее многообещающим:

Поскольку область Mifare 4K имеет ключи по умолчанию, любой, у кого есть внешний считыватель NFC, может изменять ключи и безопасно хранить там значения - это правильно? Вы пробовали это? Есть ли здесь какие-нибудь трудности?

Является ли использование внешнего считывателя NFC единственным способом доступа к пространству Mifare? Может, например, приложение, установленное на телефоне Android, читает / записывает некоторые данные в Mifare 4K с использованием некоторого API (через контроллер NFC и путь NFC-WI)? Может, например, seek-for-android help там?

Спасибо STeN

person STeN    schedule 06.10.2011
comment
Я сомневаюсь, что нам нравится этот формат на сайте вопросов и ответов. (Это не дискуссионный форум!) - person Arjan; 27.11.2011
comment
Mifare4K - это тупик, потому что ни один контроллер NFC, кроме семейства NXP, не поддерживает этот тег. Стандарт NFC не требует этого, и NXP требует лицензии на свой сломанный алгоритм Crypto-1. Поэтому все известные мне NFC-чипы не поддерживают классические теги Mifare. - person Nils Pipenbrinck; 28.11.2011