Отправка расширенного APDU на Javacard

У меня есть устройство чтения карт Samrt ACR38 и несколько Javacard [2.1.1], совместимых с GP Spec [02].

Насколько мне известно, существует два типа APDU: Short-APDU [APDU с LC или / и LE короче, чем 255] и Extended-APDU [APDU с LC или / и LE больше 255].

это правильно?

Мы отправляем Short-APDU в T=0 протоколе и отправляем Extended-APDU в T=1 протоколе.

это правильно?


Я успешно отправил Short-APDU на свою карту. [через GPJ, GPShell, OpenSC-Tool].

А теперь я хочу знать:

1: если я хочу использовать расширенный APDU, моя карта должна его поддерживать? или мой Читатель должен это поддерживать? или оба!? или все карты и все считыватели поддерживают как Short-APDU, так и Extended-APDU?

2: если они должны поддерживать EXTENDED-APDU, как я могу проверить, соответствуют ли они требованиям?

3: Нужен ли мне другой инструмент или я могу использовать тот же инструмент GPJ, GPShell и Opensc для отправки Extended-APDU? как?


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

Чтобы иметь возможность использовать расширенный APDU, вам необходимо иметь:

  • A T = 1 карта
  • Устройство чтения смарт-карт, работающее в TPDU или Extended APDU

Считыватель смарт-карт может работать с 4 различными уровнями обмена:

  • Характер
  • TPDU
  • Короткий APDU
  • Короткий и расширенный APDU

Уровень персонажа. Лишь очень немногие читатели работают с этим методом. Я не знаю, поддерживают ли они расширенный APDU.

Уровень TPDU: на этом уровне обмена большая часть работы выполняется в драйвере. В частности, поддержка расширенного APDU управляется драйвером, а драйвер CCID реализует это.

Короткий APDU: эти считыватели просты в использовании с точки зрения драйвера, но тогда они ограничиваются только короткими APDU. В этом случае поддержка расширенного APDU невозможна.

Некоторые читатели утверждают, что они поддерживают только короткие APDU, но могут использовать расширенный APDU при использовании с драйвером Windows производителя. Может драйвер Windows переключает ридер в режим TPDU или что-то подобное. Это не задокументированная функция CCID, поэтому она не используется в моем драйвере CCID. Если вы можете получить информацию об этом от производителя считывателя, я могу включить поддержку расширенного APDU для считывателя в свой драйвер.

Короткий и расширенный APDU: Читатель предлагает поддержку расширенного APDU.

Я думаю, что на основе приведенного выше раздела обновлений я прихожу к выводу, что карта и устройство чтения должны поддерживать EXTENDED-APDU. И для проверки их совместимости с расширенным APDU я должен искать документы продукта, а также сайты, которые предоставляют нам список считыватели, поддерживающие расширенный APDU. это правильно?


person TheGoodUser    schedule 16.06.2014    source источник
comment
Вы сами пришли к ответу на свой вопрос. Есть еще что-то, о чем вы хотите спросить?   -  person Anurag Sharma    schedule 16.06.2014
comment
К вашему сведению ... вы также можете отправить расширенный APDU в T = 0, но для этого ваша карта должна поддерживать javacardx.apdu. См. ссылку в javadoc   -  person Anurag Sharma    schedule 16.06.2014
comment
дорогой @AnuragSharma, я еще не знаю ответа на свой вопрос в разделе 3. Нужны ли мне другие инструменты? или GPJ и opensc-tool хватит? и как я могу понять, что моя карта поддерживает javacardx.apdu или нет? Благодарность   -  person TheGoodUser    schedule 16.06.2014
comment
Чтобы узнать, поддерживает ли ваша карта javacardx.apdu, вы можете закодировать апплет, который реализует этот интерфейс, а затем загрузить этот файл cap на ur-карту, если успех, то ur-карта поддерживает это. У меня нет более глубоких знаний об этих инструментах (поэтому оставляю кого-то другого отвечать).   -  person Anurag Sharma    schedule 16.06.2014


Ответы (1)


вы также можете отправить расширенный APDU в T = 0, но для этого ваша карта должна поддерживать "javacardx.apdu". Пожалуйста, обратитесь по ссылке javadoc

Вот способ узнать, что поддерживает ваша карта.

00 A4 04 00 <length of Card manager AID> <AID> [Select card manager]

00 20 00 00 08 <Card manager PIN> [verify card manager PIN]

00 80 F2 20 00 02 4F 00 - [get status command with P1 20] and [Executable Load Files and Executable Modules 4F00]

В ответ на эту команду вы получите AID всего пакета, затем выполните поиск AID «A0000000620209».

если доступно, то поддерживается javacardx.apdu. Для получения дополнительной информации о команде «Получить статус» обратитесь к GP 2.2.1.

person Anurag Sharma    schedule 17.06.2014
comment
Спасибо, дорогой анураг. как насчет инструментов? насколько я знаю, GPJ, GPShell и opensc-tool по умолчанию работают в T = 0. Это верно? если да, то как я могу это изменить? Возможно ли это, или я должен использовать другой инструмент? И что такое Card manager PIN ?! Это что-то отличается от этих 3 КЛЮЧЕЙ? (40414243...4F) - для чего эта проверка ?! Я использовал эту команду раньше, но для карт памяти, таких как SLE4432 / 42, а не для javacard! - person TheGoodUser; 17.06.2014
comment
@ user3739919 Cardmanager является центральным администратором карты, и ключ диспетчера карт подтверждает, что вы являетесь подлинным пользователем. Это действительно для всех карт, соответствующих спецификации Global plateform. И да, для отправки расширенного APDU я предлагаю вам создать свою собственную программу на java с помощью SmartcardIO и отправьте расширенный APDU через эту программу ... так что больше не будет зависимости от инструментов :) - person Anurag Sharma; 18.06.2014
comment
Наличие ключей S_ENC, S_MAC и DEK не доказывает, что я подлинный пользователь ?! Что такое ключ по умолчанию в Диспетчере карт? И, когда я использую эту команду Verify Card Manager PIN? После команд Initial Update и External Authentication или до? Какие возможности карты активируются для использования после этой проверки? Спасибо. - person TheGoodUser; 18.06.2014
comment
@ user3739919, если вы используете расширенную аутентификацию, забудьте про диспетчер автомобилей, вы уже находитесь в защищенном канале, теперь отправьте команду "Получить статус" после внешней аутентификации. - person Anurag Sharma; 18.06.2014
comment
Вы имели в виду, что я могу доказать менеджеру карты, что я являюсь подлинным пользователем, с помощью команды External-Authenticate или Verify-PIN? Все javacard поддерживают оба или каждая карта использует один из этих методов? Я думаю, что PIN-код обычно используется для Sim-карт, Mifares и карт памяти, а аутентификация - для карт Java. Какое значение по умолчанию для 8-байтового ПИН-кода диспетчера карт? - person TheGoodUser; 18.06.2014
comment
@ user3739919 Cardmanager является владельцем карты, и Card Manager можно рассматривать как три объекта: • GlobalPlatform Environment (OPEN); • Домен безопасности эмитента; и • Услуги по проверке держателей карт. Итак, чтобы запустить любую команду GP, вы должны подтвердить себя в cardmanager .... используя обновление init и внешнюю аутентификацию, вы открываете безопасный канал для выполнения задачи администратора с картой, которая снова является командами GP. PIN-код Carmanager зависит от поставщика.Чтобы узнать больше о Глобальная форма пластины см. [Ссылка] win.tue.nl/pinpasjc/docs/ GPCardSpec_v2.2.pdf и прочтите страницу 18, чтобы узнать больше о карте arh. - person Anurag Sharma; 18.06.2014
comment
@ user3739919 К вашему сведению ... Карты mifare не соответствуют требованиям GP. - person Anurag Sharma; 18.06.2014
comment
Ах! В ПОРЯДКЕ! :/ Спасибо. - person TheGoodUser; 18.06.2014
comment
Уважаемый шарма, у меня есть javacard, и я использую все функции GP (устанавливаю апплеты, удаляю их, отправляю APDU и получаю SW его апплетов) без проверки! Я могу делать все что угодно после внешней аутентификации! Что случилось? Я не чувствую необходимости в проверке! - person TheGoodUser; 18.06.2014
comment
@ user3739919 вот что я говорю, есть 2 метода для доступа к carmanager, один - выбрать диспетчер карт и проверить PIN-код диспетчера карт, затем отправить команды GP .... другой - команды init update и ext auth, с помощью которых вы открываете безопасный канал для запуска, связанного с администратором команды. - person Anurag Sharma; 18.06.2014
comment
В ПОРЯДКЕ! Будьте здоровы! [Если вы ему верите :)] - person TheGoodUser; 18.06.2014
comment
@ user3739919 Большое спасибо ... я верю :) - person Anurag Sharma; 18.06.2014
comment
Фактически, в соответствии с Глобальной платформой, существуют различные типы безопасности аутентификации, предоставляемые в соответствии с использованием: 1-Verify CARD MANAGER PIN-безопасность (т.е. PIN-код CVM-PIN-код проверки держателя карты): в основном этот PIN-код используется для проверки того, используется ли карта проверенным лицом. Владелец карты, которому выпущена карта. Означает, что после успешной проверки этого глобального PIN-кода вы можете отправлять команды в диспетчер карт (ISD). 2- Безопасность SCP: SCP02 в основном обеспечивает лучшую безопасность, чем просто проверка PIN-кода, SCP02 (InitializedUpdate + ExternalAuthenticate) обеспечивает взаимную аутентификацию, целостность и конфиденциальность. - person Bhanu; 30.11.2014
comment
По соображениям безопасности теперь проверка PIN-кода отключена в состоянии постпроизводства карты (т. Е. Когда карта находится на рынке). Состояния постпроизводства означают состояние жизненного цикла карты после защищенного, и в это время используется безопасность SCP (может быть SCP02, SCP03 или SCP80), поскольку SCP обеспечивает большую безопасность, а также заботится о взаимной аутентификации, целостности и конфиденциальности, которые VerifyPIN не обеспечивает. . Для получения дополнительных сведений см. Global Platform GPC_Specification 2.2.1 Рад помочь - ›Ankit - person Bhanu; 30.11.2014