Отменяет ли выбор файла после выбора апплета апплет? - PullRequest
0 голосов
/ 23 октября 2018

В спецификации JCRE упоминается, что выбранный в настоящее время метод "отмены выбора" апплетов вызывается, если есть новый apdu выбора для другого апплета.Как насчет выбора файла из файловой системы?вызывает ли выбор файла вызов метода отмены выбора текущего выбранного апплета?

Ответы [ 3 ]

0 голосов
/ 25 октября 2018

Я отвечу, основываясь на своем опыте, и я открыт для обсуждения, так как это проблема, которую я всегда нахожу довольно странной.Команда для выбора апплета и DF очень похожа, хотя в выбранной DF вы можете реализовать все, что вам нравится INS в вашем приложении;)

00 A4 04 00 LC AID/DFID

Предположим, у вас есть два приложения на карте:

  • AppA - AID 0102030405060A с DF ABABABABABAB
  • AppB - AID 0102030405060B с DF 0102030405060A

Трасса APDU будетчто-то вроде этого:

> 00 A4 04 00 07 0102030405060A
< 90 00 --> AppA selected
> 00 A4 04 00 06 ABABABABABAB
< 90 00 --> DF within AppA selected
> 00 A4 04 00 07 0102030405060B
> 90 00 --> AppB selected
> 00 A4 04 00 07 0102030405060A
< 90 00 --> AppA selected

По крайней мере, на каком-то тесте, который я делал недавно, поведение было таким.Команда выбора А4 сначала обрабатывается диспетчером карт, а затем, если нет приложения, соответствующего идентификатору, она перенаправляется на текущее выбранное приложение.

Я попытаюсь повторить эти тесты, если у меня будет какое-то времяи сообщите вам.

PS: Я обычно работаю с картами Optelio и не знаю, зависит ли это поведение от карты.

0 голосов
/ 02 ноября 2018

Нет, выбор файла не отменяет выбор апплета.Текущий активный контекст остается активным.Среда выполнения Java-карты системы перехватывает любой SELECT по имени APDU и обрабатывает его.Это означает, что только XX A4 04 YY APDU, за которыми следует AID, способны выбирать апплеты и, следовательно, отменять выбор (я игнорирую каналы в этом ответе).

Это имеет некоторые - возможно, неожиданные - проблемы:

  • невозможно выбрать файлы с помощью зашифрованного SELECT по имени APDU (без поддержки защищенных каналов);
  • невозможно выбрать апплет с помощью SELECT по идентификатору файла или SELECT по пути;
  • невозможно выбрать выбранный по умолчанию апплет с помощью SELECT MF или аналогичных команд;
  • выбор по имени отменяет выбор, а затем выбирает (то есть повторно выбирает) апплет, даже если он уже является текущим выбранным апплетом.

Хотя Java Card использует APDU, она несколько отличается от карт файловой системы.Изначально Java Card поставляется с API файловой системы, что упрощает имитацию полной карты файловой системы ISO 7816-4.Это, однако, давно прошло;в основном Java Card теперь просто использует SELECT by Name для выбора апплета.

Если на карте есть какие-либо другие функции файловой системы, то они либо являются частью расширенной среды выполнения - есть файловая системаcard / Java Card гибриды - или функции файловой системы просто реализованы в апплете.Один апплет может быть установлен как выбранный по умолчанию апплет, который выбирается после включения питания или сброса карты.Этот апплет также может реализовывать файловую систему, но он все равно будет отменен после того, как среда выполнения обработает (успешную) команду SELECT by Name.

Относительно особым апплетом в этом смысле является Card Manager, который также реализуетдомен безопасности.И это подводит меня к последнему пункту: чтобы понять, как все это работает, вероятно, лучше прочитать правильные разделы в свободно доступной Глобальной платформе по спецификации карт, а не только спецификации карт Java.Обратите внимание, что только GP (используется для?) Определяет APDU короткой длины, что означает, что SELECT по имени APDU, которые используют расширенную длину , вполне может дать сбой .

Обратите внимание, что SELECT по имени APDU всегда передаютсятекущему активному апплету (если есть) после , когда среда выполнения обработала его.Это позволяет апплету обрабатывать SELECT по имени для незарегистрированных AID.Он также позволяет апплету возвращать информацию управления файлом в случае, если P2 не установлен на 0C (в этом случае апплет должен не возвращать никакой информации).


Из-заИзменения в моей рабочей среде Я не смог присоединиться к группе Global Platform, чтобы внести изменения в работу выбора апплета Java Card.Чрезвычайно сложно реализовать протоколы, основанные на файловой системе, включающей много файлов в MF.Очевидно, что требуется более сфокусированный подход, который дает больше места для выбора / отмены выбора апплета с использованием различных средств, таких как SELECT by Path.

К сожалению, в таких протоколах, как ePassport, действительно используются некоторые довольно неприятные функции, определенные в ISO 7816-4, включая расширенныеиспользование MF.Это такая же ошибка в протоколе ePassport, как и проблема с картой Java.Тот факт, что ISO 7816-4 оставляет много деталей для реализации протокола / файловой системы, не помогает.Это может быть просто худшим стандартом;его неясность и неоднозначность совпадают только с его популярностью.

0 голосов
/ 23 октября 2018

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

...