Я получаю uid тега NFC, отправляя и получая APDU с карты. Хранение их в базе данных. Во время входа в систему я сравниваю идентификатор вошедшего в систему пользовательского тега с базой данных для аутентификации. Это работает, но правильный ли это способ аутентификации NFC в соответствии со стандартной политикой безопасности? Я немного сбит с толку, поскольку PKI включает в себя обработку сертификатов и привязку пользователей с открытыми ключами.
NFC-аутентификация
Ответы (1)
Использование UID для аутентификации не является хорошей идеей, так как он доступен для чтения всем, и любой может скопировать его и использовать для программирования одной из карт, которые позволяют это делать. Некоторые бесконтактные устройства генерируют разные случайные UID при каждом включении питания.
Есть много альтернатив, таких как эти две довольно упрощенные:
Используйте один из стандартных защищенных каналов (SCP02, SCP03) для выполнения взаимной аутентификации кард-ридера, а затем отправьте идентификатор. Каждая карта должна быть снабжена набором симметричных ключей (3DES или AES в приведенных выше случаях), а считыватель должен иметь средства для их получения из некоторого уникального идентификатора карты.
Используйте открытые-закрытые ключи. Например, вы можете сохранить закрытый ключ на карте во время регистрации, а затем использовать его для аутентификации, чтобы подписать вызов, выданный считывателем, + некоторый идентификатор, связанный с открытым ключом в сертификате.
Возможно, вы сможете найти гораздо лучшие идеи, осмотревшись вокруг. Удачи!