Два объекта OwnerPIN в Java Card
Я работаю над приложением Java Card, где наше требование состоит в том, чтобы хранить некоторые статические данные и баланс в карте.
Для безопасности я думал сделать 2 объекта OwnerPIN. Один объект предназначен для аутентификации терминала (т. Е. Терминалу необходимо отправить 8 байтов данных для аутентификации), а другой объект - для аутентификации пользователя (т. Е. Пользователю необходимо ввести 4-значный PIN-код для своей аутентификации).
Только если обе аутентификации успешны, мы можем прочитать данные или обновить баланс.
Или есть какой-то другой совет о том, как обеспечить безопасность на карте, чтобы избежать кражи?
Также есть ли какое-либо руководство по выбору проприетарного класса и байтов инструкций при разработке апплета?
1 ответ
Для аутентификации пользователя OwnerPIN, безусловно, является хорошим способом (есть альтернатива, конечно, но OwnerPIN предоставляет функции безопасности (например, защита от разрыва), которые в противном случае вам пришлось бы применять вручную).
Для терминальной аутентификации ничто не должно мешать вам использовать подход, основанный на экземпляре OwnerPIN. Однако, в зависимости от ваших требований безопасности, вы можете выбрать какую-либо форму взаимной аутентификации вместо простого PIN-кода. Если терминал просто отправляет PIN-код (особенно если он делает это открытым текстом), злоумышленник может просто перехватить этот PIN-код (при отправке на карту) и затем использовать этот обнаруженный PIN-код для создания своего собственного (вредоносного) терминала.
Что касается класса и байта инструкции (и особенно в отношении стандартных операций, таких как проверка PIN-кода), я бы предложил придерживаться стандартов. ИСО / МЭК 7816-4 определяет множество инструкций для таких стандартных операций.