Тест
Sergey StupinДля пользовательского PIN используется PKCS12 PBE с SHA1 и 3DES CBC. Вычисление зависит от challenge, PIN-кода и 20-байтового значения salt, считанного из файла 0x3F00\0x6666\0x5000\0x000F:
a. 3DESKEY(24) = PBE_KEY_ SHA1 ( PIN, SALT, 999 итераций)
b. RESPONSE(8) = DES3_ENCRYPT_CBC ( 3DESKEY, CHALLENGE )
Для PIN администратора response зависит только от challenge и PIN-кода следующим образом:
a. A(16) = MD5 hash от 0x00 + PIN
b. B(16) = MD5 hash от 0x01 + PIN
c. C(32) = A + B
d. 3DESKEY(24) = C[0...20] за счёт того, что верхние биты (0x80) всех байтов ключа равны нулю
e. RESPONSE(8) = DES3_ENCRYPT_ECB ( 3DESKEY, CHALLENGE )
Ожидаемые ответы смарт-карты:
90 00
Команда выполнена успешно
63 00
Неверный PIN-код