Генерация асимметричного ключа смарт-карты
Я зашел в тупик в исследовании того, как генерировать асимметричные ключи из карты PIV. Я просмотрел стандарты NIST sp800-73-3, но не смог этого добиться. Обрисованный в части 3 этого документа, он показывает, что для этого используется INS 47, но я получаю ошибку 6D00. Есть ли другая команда, которую нужно отправить, прежде чем ее можно будет получить?
Также, пожалуйста, исправьте меня, если я ошибаюсь, но из моего понимания, когда генерируется ключ, закрытый ключ сохраняется на карте, а открытый ключ возвращается. Чтобы зашифровать данные с помощью закрытого ключа, данные должны быть отправлены на карту, и зашифрованная информация возвращается. Это точно? Сколько ключей может хранить карта одновременно?
1 ответ
Стандарты - хорошая вещь, но в большинстве случаев ее недостаточно для смарт-карт. Вам необходимо руководство по вашей конкретной карте, описывающее, какие части стандартов она поддерживает. Для генерации ключей рекомендуется ознакомиться с ISO 7816, часть 8 (в дополнение к руководству по карте). Существуют варианты команд, которые возвращают открытый ключ, а другие оставляют его в карточке для последующего извлечения. По вашей ошибке: возможно, ваша карта находится в фазе жизненного цикла, когда генерация ключей больше не доступна, но стоит попробовать даже четный код инструкции 46.
Команда для шифрования - Perform Security Operation, также описанная в 7816-8. Обратите внимание, что использование асимметричного ключа для шифрования необычно для значительного количества открытого текста. Обычно текст шифруется с использованием симметричного шифра, и только симметричный ключ передается с использованием асимметричного шифрования по соображениям производительности.