| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java Card > JCOPv241 Security Domain AID? |
| Автор: sptim 17.5.2012, 19:00 |
| Добрый день! В наличии карты NXP JCOP J2A v2.4.1 36k (по спецификации продавца) (из ATR: JCOPv241). Заюзал gpshell 1.4.4 (libgeneralplatform 6.0.0) под WinXP, ридеры Omnikey 3821 & SDI011G (на обоих картина одинаковая). Карту видно нормально, ATR читается без проблем. Проблемы начались при попытке выполнить загрузку аплета. При выборе secyrity domain app - возвращает ошибку #6A82 - "приложение отсутствует". (пробовал оба варианта AID A0000000030000 и A000000003000000) На обоих картах ситуация одинаковая. Возможно ли, что другой AID надо юзать? Что-то с картами? ... На дуальной карте JCOP31/72k выбор нормально проходит (правда возникла ошибка взаимной авторизации при открытии канала) - завтра добавлю листинг выполнения. p.s. Ну и вопросы рабочие еще имеются, но сначала хотелось бы с ошибками разобраться. |
| Автор: neutrino 17.5.2012, 23:06 |
| Скорее всего неправильный AID Card Manager-а. Это может быть из-за того, что карта уже преперсонализирована и имеет AID отличный от дефолтного. Такие вещи как AID Card Manager и ключи для взаимной аутентификации надо спрашивать у поставщика карт. Чтобы выбрать апплет установленный в Security Domain-е, необходимо заранее выбрать SD (аутентифицироваться) и затем уже выбрать апплет. Прежде всего это правило распространяется на Card Manger (SD находящийся на самом верху). С ключами опять же, может быть они отличны от дефолтных (спросите вендора карт). |
| Автор: sptim 18.5.2012, 07:45 | ||||||||||
Так бывает? Обычные карты, только куплены в isbc, с моей стороны никаких действий не было.
Сделал запрос, жду ответ.
До этого, сам понимаешь, дело не доходит - т.к. не может выбрать приложение Card Manager (правильно ли я понял, что он является Security Domain верхнего уровня?). Плагин в NetBeans умеет работать только с встроенной платформой-эмулятором? Т.е. окончательная заливка и тестирование на реальной карте осуществляются "ручками"? p.s. Обещаные логи (может какой-то другой тег надо юзать?): Карта JCOPv241/36k, пробую хотя бы просто выбрать CM:
Карта JCOP31/72k, пробую выбрать CM, создать канал:
|
| Автор: nonedub 19.5.2012, 18:57 |
| Хе-хе! Я сам сейчас разбираюсь с подобной ситуацией. Итак, с чего надо начинать работу с любой новой картой JCOP, пришедшей от продавца: 1. Первым делом надо выполнить апплет IDENTIFY. Вызывается он стандартным APDU select: 00 A4 04 00 09 A0 00 00 01 67 41 30 00 FF 00 или командой /identify в JCOPShell. Результатом вызова этого апплета будет строка байтов. По смещению 14 (десятичному) находится байт, принимающий следующие значения: 00 - карта не персонализирована; 01 - карта персонализирована. Я рекомендую топикстартеру проделать вышеописанную процедуру, проверить байт персонализации и отписаться в теме. Наиболее вероятной причиной того, что не может быть вызван Card Manager, является тот факт, что карта не персонализирована. В зависимости от результатов этой проверки строится алгоритм последующих действий. P.S. Процедура персонализации карт JCOPv241 описана в full-даташите на эти чипы. Да где ж его взять... |
| Автор: sptim 21.5.2012, 08:32 |
Сделал. Ответ: 05 06 01 31 00 00 00 00 4E 58 38 31 35 42 00 03 9E 00 7A 6A 82 (NX8115B) По указанному смещению = 0, т.е. карта не перонализирована (или правильнее - "не преперсонализирована"?)... из чего вытекают два вопроса: 1. Это нормально? Т.е. сие ДОЛЖНО было быть сделано в обязательном порядке до продажи продавцом? 2. Что делать? |
| Автор: nonedub 21.5.2012, 10:28 |
| О! У меня практически такая же карта. Только отличаются FABKEY ID и PATCH ID (смещения 0 и 1 соответственно). 1. В принципе, это нормально. Хотя некоторые продавцы (скорее те, кто закатывает чипы в пластик) пре-персонализируют карты с дефолтовыми ключами. Но китайцы, как правило, не пре-персонализируют карты... 2. Надо делать пре-персонализацию самому. В самом простом случае этот процесс состоит из пяти пунктов: - командой Select выбрать т.н. ROOT апплет. AID рут-апплета равен Транспортному Ключу (Transport Key). Транспортный Ключ вы должны вытрясти из вашего вендора (поставщика) карты. В противном случае вы не сможете пре-персонализировать карту и пользоваться ею. Команда: 00 A4 04 00 10 <TANSPORT KEY> - выполнить команду BOOT: 00 F0 00 00 - тремя командами WRITE записать три ключа DES_K1, DES_K2, DES_K3. Формат этой команды хитрый. В ее теле используется трехбайтовый адрес <a2><a1><a0> EEPROM-памяти чипа, в котором будет хранится данный ключ. Эти адреса различаются для разных версий чипов NXP JCOP и приведены в full-даташите на чип JCOP v241. Команда: <a2> D6 <a1> <a0> 10 <DES_KEY> - выполнить команду PROTECT: 00 10 00 00 - выполнить команду FUSE. Эта команда блокирует апплет ROOT, поэтому ее рекомендуется делать после проверки работоспособности карты. Команда: 00 00 00 00 После данной процедуры карту необходимо сбросить командой /atr. |
| Автор: nonedub 21.5.2012, 22:26 | ||
Да вы знаете, в принципе - это тоже выход. Во-первых, зная транспортный ключ, вы делаете пре-персонализацию на свой страх и риск. То есть, в случае ошибки легко угробить карты без шанса восстановления их работоспособности. Во-вторых, для пре-персонализации, помимо транспортного ключа, необходимо знать адресное пространство EEPROM вашей карты. В случае, если вы запишете пре-персонализационные данные не в те адреса, это может стать причиной неработоспособности карты. Адресное пространство EEPROM приведено в full-даташите на данный тип карт, "достать" который - также большая проблема. Так что пусть ваш поставщик сам пре-персонализирует карты в соответствии со стандартом Global Platform. При этом он может установить либо дефолтные значения: Card Manager AID = A000000003000000 DES_K1 = DES_K2 = DES_K3 = 404142434445464748494A4B4C4D4E4F Либо, если данные параметры пре-персонализированной карты установлены отличными от дефолтных, должен сообщить их вам. |
| Автор: sptim 22.5.2012, 15:01 |
Угу. Единственный в моём случае. Сегодня отправил - посмотрим чем всё закончится. Так бы ничего, да времени много уходит на пересылку. |