Выбор апплета NFC SWP возвращает 6999

У меня на SIM-карте установлен простой апплет JavaCard. Я пытаюсь связаться со своим апплетом с помощью считывателя Omnikey 5121 CL и Sony Xperia L с поддержкой NFC через NFC/SWP (протокол с одним проводом).

Проблема в том, что я не могу выбрать апплет - в качестве слова состояния я получаю 6999. Светодиод горит, поэтому я предполагаю, что между считывателем и SIM-картой есть какая-то связь. Более того, я тоже не могу выбрать свой домен безопасности.

Однако, когда я вставляю SIM-карту в стандартный контактный считыватель смарт-карт, все работает нормально.

Есть ли какая-либо дополнительная конфигурация ОС Android, SIM-карты, модема NFC и т. д., которую мне нужно настроить перед обменом данными с SIM-картой через NFC? Есть идеи?

Дополнительная информация:

ATR SIM-карты, доступ к которой осуществляется контактным способом:

3B9F96C00A3FC6A08031E073FE211F65D001900F3B810FE6

ATR (сгенерированный PCSC из ATS) SIM-карты, доступ к которой осуществляется через NFC бесконтактным способом:

3B8880010000000000817000F8

Мой INSTALL для INSTALL APDU: (наконец-то сработало!)

80E6040C32 //CLA INS P1 P2 Lc
0CF0AAAAAAAAAAAAAAAABBBBBB // AIDs
09F0AAAAAAAAAAAAAAAA
09F0AAAAAAAAAAAAAAAA
01
 00 //privileges
0B //length of parameters
 EF07 //system parameters
  A005A5038201FF
 C900 //applet parameters
00

person vojta    schedule 26.05.2015    source источник
comment
Не связано с проверкой PIN-кода?   -  person Ebrahim Ghasemi    schedule 26.05.2015
comment
@ Авраам, я мало что знаю об этом ... Не могли бы вы быть более конкретным?   -  person vojta    schedule 26.05.2015
comment
На самом деле я не уверен в этом. Но одна из ситуаций, когда вы получаете 0x6999 вместо 0x9000, — это когда карте требуется проверка PIN-кода, а вы ее игнорируете. Я просто предположил, что, возможно, эта проверка PIN-кода включена на вашей SIM-карте. Когда вы вставляете SIM-карту в устройство чтения мобильного телефона (например), на этапе включения вы вводите PIN-код и подтверждаете его, поэтому вы можете выбрать CM и апплеты. . Но когда вы используете вышеупомянутый ридер, вы забываете сделать проверку и поэтому не можете их выбрать. кстати это просто идея! ;)   -  person Ebrahim Ghasemi    schedule 26.05.2015
comment
@ Авраам, спасибо, интересная идея. Однако он работает в считывателе смарт-карт (телефон не задействован, ПИН-код не проверен) и не работает в телефоне (ПИН-код успешно проверен во время загрузки телефона)...   -  person vojta    schedule 26.05.2015
comment
Разве это не двухчиповая смарт-карта с двойным интерфейсом? (Я думаю, что это комбинированная или гибридная карта). В картах такого типа, когда вы устанавливаете апплет через контактный интерфейс, апплет устанавливается на чип1, а когда вы устанавливаете его через бесконтактный интерфейс, апплет устанавливается на чип2. Поэтому, если вы устанавливаете его через контактный интерфейс, вы не можете выбрать его через бесконтактный интерфейс.   -  person Ebrahim Ghasemi    schedule 26.05.2015
comment
Вы сделали выбор апплета через бесконтактный (SWP) интерфейс? (В параметрах бесконтактного протокола команды ISTALL FOR INSTALL MAKE SELECTABLE)   -  person Michael Roland    schedule 26.05.2015
comment
@MichaelRoland Он также не может выбрать домен безопасности. Я думаю, это означает, что причина проблемы не в этих параметрах, верно?   -  person Ebrahim Ghasemi    schedule 26.05.2015
comment
Домен безопасности, который нельзя выбрать через бесконтактный интерфейс, не является чем-то необычным для SIM-карты.   -  person Michael Roland    schedule 26.05.2015
comment
@MichaelRoland спасибо, на самом деле я этого не делал! Однако я не могу установить апплет через SWP, потому что не могу выбрать SD. Можно ли это как-то сделать через контактный интерфейс?   -  person vojta    schedule 26.05.2015
comment
Как я уже писал ранее, вы должны установить правильные параметры бесконтактного протокола в команде INSTALL FOR INSTALL MAKE SELECTABLE (или путем обновления реестра). Конечно, вы бы сделали это через любой интерфейс, который вы используете для управления картами / апплетами (следовательно, контактный интерфейс в вашем случае). Дополнительную информацию см. в Поправке C к спецификации Global Platform Card.   -  person Michael Roland    schedule 26.05.2015
comment
@МайклРоланд Спасибо! Я пытаюсь указать параметры бесконтактного протокола, но все равно получаю 6999 через бесконтактный интерфейс. Не могли бы вы взглянуть на мою УСТАНОВКУ для УСТАНОВКИ APDU, которую я добавил к своему вопросу? Я не совсем уверен в значениях в теге B0... Есть ли способ их заполнения по умолчанию?   -  person vojta    schedule 27.05.2015
comment
Требуется ли какое-либо приложение или системная служба при использовании SIM-карты? Насколько мне известно, вам нужно приложение или системная служба, чтобы получать команду apdu NFC и пересылать ее на SIM-карту, а также отправлять ответ apdu на NFC при получении с SIM-карты.   -  person JavaCardOS    schedule 27.05.2015
comment
@Ellisun Благодаря SWP приложение не требуется - SWP перенаправляет связь с модема NFC на SIM-карту.   -  person vojta    schedule 27.05.2015
comment
@MichaelRoland Это работает!!! Я могу выбрать свой апплет!!! Большое спасибо, вы действительно спасли мой день! Пожалуйста, оставьте свой комментарий в качестве ответа, я хотел бы принять его.   -  person vojta    schedule 27.05.2015
comment
@vojta У меня 2 вопроса. Отправляются ли эти APDU в ISD? когда я это делаю, он возвращает 6A 80 (неправильные данные!), что означает, что я отправляю неправильное поле данных TLV. Почему ваш P1 равен 04, я думаю, что он должен быть 40, и почему привилегия равна 00, это домен безопасности?   -  person MJay    schedule 15.12.2020
comment
@vojta в вашем INSTALL для INSTALL APDU, как вы выбрали параметр P2? согласно спецификации GP, INSTALL для INSTALL (80 E6 ...) Параметр P2 может иметь только три значения (00, 01 или 03).   -  person MJay    schedule 14.02.2021
comment
@vojta и еще вопрос, что за тег A5 используется в системных параметрах? не могли бы вы помочь мне найти ссылку? Я искал в GP и поправке GP C   -  person MJay    schedule 16.02.2021


Ответы (1)


Получение кода состояния 6999 в ответ на команду SELECT (от AID) является явным признаком того, что апплет не найден/недоступен для выбора. Если апплет был установлен и доступен для выбора (с использованием того же AID) через контактный интерфейс карты UICC/SIM, то он, вероятно, не будет доступен для выбора через интерфейс SWP (бесконтактный). Обычно безопасные элементы позволяют выборочно включать/отключать апплеты для определенных интерфейсов (в дополнение к этому апплеты могут определять, через какой интерфейс они выбраны, и реагировать соответствующим образом).

Обычно апплеты должны быть явно доступны для выбора через бесконтактный интерфейс, задав параметры бесконтактного протокола в команде INSTALL (для MAKE SELECTABLE) (или позже, выполнив обновление реестра). Дополнительную информацию см. в Поправке C к спецификации Global Platform Card.

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

person Michael Roland    schedule 27.05.2015