Установка апплета в javacard

Я сделал файл .cap популярного кода javacard «Hello World» через Eclipse.

И теперь я хочу загрузить его в реальную javacard через GPSShell и считыватель смарт-карт ACR38.

вопрос: Нужен ли ключ для загрузки .cap файла в карту? Я имею в виду, должен ли я аутентифицироваться перед загрузкой моего апплета на карту или это не обязательно? Я думаю, что это обязательно для аутентификации. нерационально загружать .cap без аутентификации. но я не знаю, как аутентифицировать. вопрос: что в этом плохого?

C:\Users\ghasemi>java -jar e:\gpj\gpj.jar -load e:\helloWorld.cap -install
Found terminals: [PC/SC terminal ACS CCID USB Reader 0]
javax.smartcardio.CardException: connect() failed
        at sun.security.smartcardio.TerminalImpl.connect(Unknown Source)
        at net.sourceforge.gpj.cardservices.GlobalPlatformService.main(Unknown S
ource)
Caused by: sun.security.smartcardio.PCSCException: SCARD_E_SHARING_VIOLATION
        at sun.security.smartcardio.PCSC.SCardConnect(Native Method)
        at sun.security.smartcardio.CardImpl.<init>(Unknown Source)
        ... 2 more
Found card in terminal: ACS CCID USB Reader 0
java.lang.NullPointerException
        at net.sourceforge.gpj.cardservices.GlobalPlatformService.main(Unknown S
ource)

C:\Users\ghasemi>java -jar e:\gpj\gpj.jar -load e:\helloWorld.cap -install

Found terminals: [PC/SC terminal ACS CCID USB Reader 0]

Found card in terminal: ACS CCID USB Reader 0

ATR: 3B 7F 94 00 00 80 31 80 65 B0 85 02 02 ED 12 0F FF 82 90 00

DEBUG: Command  APDU: 00 A4 04 00 07 A0 00 00 01 51 00 00

DEBUG: Response APDU: 6A 82

Failed to select Security Domain GP211 A0 00 00 01 51 00 00 , SW: 6A 82
DEBUG: Command  APDU: 00 A4 04 00 08 A0 00 00 00 18 43 4D 00

DEBUG: Response APDU: 6F 65 84 08 A0 00 00 00 18 43 4D 00 A5 59 73 4A 06 07 2A 8
6 48 86 FC 6B 01 60 0C 06 0A 2A 86 48 86 FC 6B 02 02 01 01 63 09 06 07 2A 86 48
86 FC 6B 03 64 0B 06 09 2A 86 48 86 FC 6B 04 01 05 65 0B 06 09 2B 85 10 86 48 64
 02 01 03 66 0C 06 0A 2B 06 01 04 01 2A 02 6E 01 02 9F 6E 06 12 91 20 11 02 02 9
F 65 01 FF 90 00

Successfully selected Security Domain GemaltoXpressPro A0 00 00 00 18 43 4D 00
DEBUG: Command  APDU: 80 50 00 00 08 17 2A 53 4F AC DF 8D 16

DEBUG: Response APDU: 69 82

javax.smartcardio.CardException: Wrong initialize update, SW: 69 82
        at net.sourceforge.gpj.cardservices.GlobalPlatformService.openSecureChan
nel(Unknown Source)
        at net.sourceforge.gpj.cardservices.GlobalPlatformService.main(Unknown S
ource)

спасибо


person Ebrahim Ghasemi    schedule 08.05.2014    source источник
comment
Вы уверены, что домен безопасности вашей карты: A0 00 00 00 18 43 4D 00. Какой тип карты вы используете?   -  person Kamen Goranchev    schedule 09.05.2014
comment
@KamenGoranchev Он вернул 90 00, не так ли? И я думаю, вы можете проверить, является ли A0 00 00 00 18 RID Gemalto, но я предполагаю, что это так.   -  person Maarten Bodewes    schedule 09.05.2014


Ответы (3)


Вы должны запросить о состоянии глобальной платформы карты. 6982 — это слово общего состояния, которое означает «Статус безопасности не удовлетворен», поэтому ваша карта может находиться в неправильном состоянии (например, в состоянии Global Platform LOCKED или TERMINATED).

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

Свяжитесь с поставщиком смарт-карты о состоянии карты и о том, какие ключи следует использовать.

person Maarten Bodewes    schedule 09.05.2014
comment
PS не уверен, но, возможно, ему придется что-то делать с делегированием или неявной аутентификацией. Опять же, спросите у провайдера. - person Maarten Bodewes; 09.05.2014
comment
Не похоже ли это больше на то, что карта или домен безопасности находятся в состоянии LOCKED или TERMINATED? В противном случае он должен принять как минимум команду INITIALIZE UPDATE в SCP01... - person Michael Roland; 09.05.2014
comment
@ Майкл Роланд Да, это так, и это вопрос. Это не впереди, потому что я не уверен, что это наиболее вероятная причина. Карта, похоже, не использует обычный менеджер карт (или она прячется за старым A0000000030000 AID). (измененный ответ на основе ваших замечаний) - person Maarten Bodewes; 09.05.2014

Код ответа 6A 82 используется для Security_Status_Not_Satisfied.

При выборе Security Domain это слово состояния может появиться по одной из следующих двух причин:

  • Любая карта Life Cycle State (CLCS) карты имеет номер LOCKED или TERMINATED, поэтому выбор домена безопасности невозможен, потому что, если CLCS равен LOCKED, то можно выбрать только тот домен безопасности и/или приложение, которое имеет привилегию блокировки карты, а если CLCS равен TERMINATED, то если домен безопасности имеет привилегию конечного приложения, должна обрабатываться только команда GET DATA, все остальные команды должны быть отключены и должны возвращать ошибку. привилегию и попытайтесь переместить состояние жизненного цикла карты (CLCS) в SECURED с помощью команды SETSTATUS с помощью SCP session, в противном случае, если CLCS равно TERMINATED, то CLCS не сможет переключиться обратно в ЗАЩИЩЕННОЕ, так как это состояние необратимо.

  • ИЛИ Security Domain, который вы пытаетесь выбрать, сам находится в состоянии LOCKED, в этом случае этот домен безопасности может быть предотвращен от дальнейшего выбора с помощью OPEN и возвращается слово состояния ошибки.

@CLCS — состояние жизненного цикла карты.

Рад был помочь.

person Bhanu    schedule 03.12.2014

Card Manager AID показывает, что это карта Gemalto XPresso Card. карты по умолчанию для этой карты 47454d5850524553534f53414d504c45 попробуйте установить эти ключи. в случае, если это не работает, карта изменила ключи CM или карта может быть заблокирована, имейте в виду, что слишком частая попытка аутентификации с неправильными ключами может привести к блокировке карты.

person Paul Bastian    schedule 13.05.2014
comment
Уважаемый Павел, вы уверены, что этот ключ является ключом по умолчанию? Я думаю, что 40414243444546448494A4B4C4D4E4F является ключом по умолчанию! кстати, я пробую оба в JCManager! и ни мой ключ, ни твой ключ не подошли! - person Ebrahim Ghasemi; 19.05.2014
comment
глядя на вывод отладки, я думаю, вы можете попробовать init-update с другим номером ключа, который хранится в P1, например. 01 если это не работает, я тоже полагаю, что карта заблокирована - person Paul Bastian; 19.05.2014