Desfire EV1 Communication - Как назначить IV - PullRequest
0 голосов
/ 26 сентября 2018

Процесс аутентификации AES-128 с картами Desfire EV1 выглядит следующим образом:

  • Получение идентификаторов приложения: 90 6A 00 00 00
  • Выбор приложения: 90 5A 00 00 03 10 00 00 00 (AID: 0x000010)
  • Запуск аутентификации с помощью ключа: 90 AA 00 00 01 02 00 (ключ: 0x02)
  • Ответы карты со случайным 16-байтовым массивом, давайте назовем это RANDOM_B
  • Теперь карте нужно больше данных для продолжения аутентификации, поэтому мы сделаем это
  • Расшифруйте RANDOM_B с KEY и пустой IV , давайте назовем это RANDOM_B_DEC
  • Сдвиг влево на 1 байт RANDOM_B_DEC , давайте назовем это RANDOM_B_DEC_LS
  • Создать случайный массив длиной 16 байтов, давайте назовем это RANDOM_A
  • Объединение RANDOM_A и RANDOM_B_DEC_LS в единый 32-байтовый массив, позволяет назвать это ARRAY
  • Шифрование этого ARRAY с использованием KEY и RANDOM_B как IV , давайте назовем это ARRAY_ENC
  • Отправить ARRAY_ENC для продолжения процесса аутентификации: 90 AF 00 00 20 + ARRAY_ENC + 00
  • Теперь ответы карты смещены на 16 байти зашифрованы RANDOM_A , и нам нужно расшифровать и сравнить это с нашим собственным RANDOM_A , который мы создали ранее

Вот мой вопрос: во время расшифровки получил RANDOM_A (последний шаг) какой массив IV я должен использовать?

После этого, как я могу прочитать данные из файла в выбранном и аутентифицированном приложении?Эти данные также получены в зашифрованном виде?Если да, что я буду использовать в качестве IV-массива для расшифровки?

Спасибо

...