Команда удаления APDU с SSD AID в поле данных возвращает 6985.

У меня есть карта Javacard, которая содержит SSD (домен дополнительной безопасности), и я хочу ее удалить. Обычно, когда я хочу удалить апплет или пакет со своей карты, я отправляю следующую команду DELETE APDU после успешного процесса взаимной аутентификации (шифрование MAC-адреса или поля данных не выполняется). требуется, а Security Level == 0 достаточно для команды DELETE APDU):

--> 80 E4 00 00 LC 4F <AID Len> <AID>
<-- 90 00

Приведенная выше команда отлично работает для обычных апплетов. Но когда я вставляю в него AID своего SSD, карта отвечает словами состояния 69 85, что означает Условия использования не удовлетворены..

Поскольку в моей карте включена функция Делегированное управление, а в ISD загружены ключ Public Token и ключ Receipt, я подумал, что, возможно, упомянутое ошибка возникает из-за того, что не используется Удалить токен в команде УДАЛИТЬ APDU. Поэтому я рассчитал токен удаления, как показано ниже:

Спецификация Global Platform Card 2.2.0.7: Рисунок C-8: Удаление расчета токена введите здесь описание изображения

DeleteToken = RSA_Sign("00 00 LC 4F <SSD AID Len> <SSD AID>", TokenPrivateKey)

Затем я попытался удалить SSD с помощью следующей команды:

--> 80 E4 00 00 <LC+Len(DeleteToken)> 4F <SSD AID Len> <SSD AID> 9E <Len(DeleteToken> <DeleteToken>
<-- 69 85

Но я снова получил 6985 статусных слов. Кто-нибудь знает, где проблема и как я могу ее решить?

Обновление:

Я даже попробовал команду DELETE APDU с P2 = 0x80, чтобы удалить SSD со всеми связанными объектами. Но и это не удалось:

-->  80 E4 00 80 09 4F <SSD AID Len> <SSD AID>
<--  6A 86 (= Incorrect P1 or P2 parameter)

Обновление 2:

Я даже пытался отправить команду DELETE APDU по защищенному каналу (SecLevel = 03). Но опять же, я получил 6985 статусных слов. Какой хэш-алгоритм мне нужно использовать для создания маркера удаления? Насколько я знаю, Спецификация GP не определяет алгоритм хеширования.

Обновление 3:

Упомянутый SSD создается из пакета ISD карты с привилегией 0E, что означает:

Домен безопасности + Делегированное управление + Проверка DAP

Обновление 4:

Кажется, я нашел проблему!

Цитата из 2.1.1_Mapping_guidelines_v1.0.1 -Final.pdf:

6.1. УДАЛИТЬ

6.1.2. Рекомендация

Поле данных, отправленное в командном сообщении

(бла-бла)

В реализации, поддерживающей дополнительные домены безопасности, если предпринимается попытка удалить экземпляр дополнительного домена безопасности, а дополнительный домен безопасности имеет привилегию проверки DAP (бит 7 набора байтов привилегий), Домен безопасности не удаляется, и возвращается ответ «6985».

Вопрос 1. Есть идеи, почему это реализовано/рекомендуется именно так? Какова цель сделать этот тип SSD (SSD с привилегией DAP Verification) несъемным?

Обновление 5:

Я попытался изменить привилегии своего SSD, чтобы удалить с него привилегию DAP Verification с помощью УСТАНОВИТЬ ОБНОВЛЕНИЕ РЕГИСТРА, а затем удалить SSD. Но это не удалось с 6A 80 словами состояния (что означает, что параметры в поле данных неверны).

-->  00 A4 04 00 08 A0 00 00 00 03 00 00 00
<--  6F 10 84 08 A0 00 00 00 03 00 00 00 A5 04 9F 65 01 FF 90 00

-->  80 50 00 00 08 DF 4B 4B B7 15 35 5A 93
<--  00 00 41 89 00 24 94 97 41 21 01 02 00 77 5C 2B 50 27 5A F4 8A 18 C0 8B 2D C2 20 50 90 00

-->  84 82 00 00 10 30 AD 04 C4 60 A2 80 8B 5A 61 7E 49 3A 39 B6 C6
<--  90 00

-->  80 E6 40 00 16 08 A0 00 00 00 03 00 00 00 00 07 <SSD AID> 01 80 00 00
<--  6A 80

Вопрос 2. Что не так с командой УСТАНОВИТЬ для обновления реестра?


person Ebrahim Ghasemi    schedule 15.11.2020    source источник
comment
› Вопрос 1: В той же спецификации говорится несколькими строками выше: В реализации, поддерживающей дополнительные домены безопасности, команда DELETE может удалить экземпляр дополнительного домена безопасности, который имеет привилегию проверки DAP, однако домен безопасности с привилегией Mandated DAP не может быть удален. Этот раздел какой-то нелогичный. Для Mandated DAP это имеет смысл, иначе, удалив SSD, можно было бы обойти обязательные проверки DAP для управления апплетами. Для SSD только с DAP — нет. Возможно, разработчики просто следовали спецификации здесь.   -  person k_o_    schedule 25.11.2020


Ответы (1)


Делегированный токен управления при использовании RSA должен использовать SHA-1 в качестве механизма хеширования со схемой PKCS#1. У меня есть непроверенный код подписи и для сборка данных токена. Может быть, это полезно для начала.

Относительно вопроса 2:

Я не делал этого раньше, но вы передаете SSD AID, а в качестве AID приложения снова . AID приложения необходим только в том случае, если вы хотите изменить привилегии приложения, например. выбранная по умолчанию привилегия.

Вместо:

80 E6 40 00 16 08 A0 00 00 00 03 00 00 00 00 07 <SSD AID> 01 80 00 00

Я бы попробовал вот этот:

80 E6 40 00 16 <Length SSD AID> <SSD AID> 00 01 80 00 00
person k_o_    schedule 15.11.2020
comment
Я пробовал их, но все они потерпели неудачу. P2=0x80 лог решения добавлен к вопросу. Спасибо. - person Ebrahim Ghasemi; 16.11.2020
comment
Может SSD просто нельзя удалить? Например, в eUICC есть ECASD, и его удаление убьет большую часть функций карты. - person k_o_; 16.11.2020
comment
Ну, я уверен, что его можно удалить, потому что я сам создавал и устанавливал этот SSD. - person Ebrahim Ghasemi; 16.11.2020