Два объекта OwnerPIN в Java Card

Я работаю над приложением Java Card, где наше требование состоит в том, чтобы хранить некоторые статические данные и баланс в карте.

Для безопасности я думал сделать 2 объекта OwnerPIN. Один объект предназначен для аутентификации терминала (т. Е. Терминалу необходимо отправить 8 байтов данных для аутентификации), а другой объект - для аутентификации пользователя (т. Е. Пользователю необходимо ввести 4-значный PIN-код для своей аутентификации).

Только если обе аутентификации успешны, мы можем прочитать данные или обновить баланс.

Или есть какой-то другой совет о том, как обеспечить безопасность на карте, чтобы избежать кражи?

Также есть ли какое-либо руководство по выбору проприетарного класса и байтов инструкций при разработке апплета?

1 ответ

Решение

Для аутентификации пользователя OwnerPIN, безусловно, является хорошим способом (есть альтернатива, конечно, но OwnerPIN предоставляет функции безопасности (например, защита от разрыва), которые в противном случае вам пришлось бы применять вручную).

Для терминальной аутентификации ничто не должно мешать вам использовать подход, основанный на экземпляре OwnerPIN. Однако, в зависимости от ваших требований безопасности, вы можете выбрать какую-либо форму взаимной аутентификации вместо простого PIN-кода. Если терминал просто отправляет PIN-код (особенно если он делает это открытым текстом), злоумышленник может просто перехватить этот PIN-код (при отправке на карту) и затем использовать этот обнаруженный PIN-код для создания своего собственного (вредоносного) терминала.

Что касается класса и байта инструкции (и особенно в отношении стандартных операций, таких как проверка PIN-кода), я бы предложил придерживаться стандартов. ИСО / МЭК 7816-4 определяет множество инструкций для таких стандартных операций.

Другие вопросы по тегам