Несомненно, каждый поставщик оборудования объединяет информацию, подобную упомянутой в чипе. К сожалению, это оставляет следующие проблемы:
- информация может быть или не быть сделаны доступны в операционной системе
- Существует мало общего между несколькими поставщиками оборудования под один байт производителя ID, который поддерживается в глобальном масштабе (см., например, chip manufacturer byte); поэтому координаты x и y на пластине могут быть на разных смещениях в зависимости от производителя, и длина этого блока может даже варьироваться в зависимости от чипа. В любом случае требуется аппаратное справочное руководство.
Резюме: Если вам нужна уникальная информация, спецификация должна была заявить об этом в самом начале, скорее всего, с помощью указанной инструкции для ее получения. В среде с несколькими поставщиками все остальное может потерпеть неудачу. Единственным оставшимся выбором является добавление своего идентификатора в качестве пользовательских данных под вашим собственным руководством.
приложена Авраамом:
Поскольку вопрос помечается javacard
, мы приходим к выводу, что ваша карта совместимая карта GlobalPlatform.
1: Для карт GP SD (защитный домен: обязательный апплет, установленный на карточке по умолчанию) отвечает за возврат определенных данных карты, включая дату изготовления IC, серийный номер IC и идентификатор партии IC и т. Д. До тех пор, пока вы не используете безопасный канал между картой и внекорневой сущностью, вы не можете доверять ответу SD. Но почему? Поскольку любой злонамеренный пользователь может написать простой апплет с AID, равный AID вашей карты SD, который возвращает свои произвольные данные в вашу команду и устанавливает их на смарт-карту и делает ее выбранной по умолчанию. В этом случае, когда он положил карту на ваших читателей, его апплет отвечает на вашу команду приложения вне карты, и вы не можете обнаружить поддельные карты.
2: Как уважаемое руководство, упомянутое выше, другая карта может поддерживать или не поддерживать равные команды для возврата этих данных карты.
Итак, я предлагаю вам добавить к вашему апплету методы setSerialNumber()
и getSerialNumber()
и реализовать безопасный канал между вашим offcard и вашим апплетом, чтобы быть уверенным в уникальности ваших карт.
Эта ссылка может помочь решить эту проблему: http://stackoverflow.com/questions/37640130/get-data-apdu-command-different-tags-and-response-format – MJay
Проверка команды APDU 'GET Data' в GlobalPlatform Спецификация карты. Посмотрите на вывод 'gp.exe -l -v -d -i'. Там вы можете увидеть связанные APDU comamnds и их выходные данные для получения IC Serial Number, IC Fabrication Data и т. Д. – Abraham
Почему вы не пишете простую пару методов 'setSerialNum' и' getSerialNum() 'для вашего собственного апплета для возврата уникального серийного номера? Вы беспокоитесь о том, как имитировать методы апплета? Я заверяю вас, что хакер может имитировать уникальный ответ карты. Хакер может написать апплет с AID SD карты вашей карты и сделать его по умолчанию выбранным, и каждый раз, когда вы запрашиваете Security Domain для SN, его апплет возвращает произвольное значение (если вы не используете защищенный канал). В случае безопасного канала нет никакой разницы между безопасным сеансом для вашего апплета или для домена безопасности.) – Abraham