2016-09-21 2 views
3

Я ищу способ найти уникальный номер для каждой смарт-карты, с которой я работаю. Я слышал, что есть дата изготовления IC, серийный номер IC и идентификатор пакета IC, которые уникальны для каждой карты.Как получить уникальный идентификатор смарт-карты?

Как я могу получить эту информацию с моей карты?

+1

Эта ссылка может помочь решить эту проблему: http://stackoverflow.com/questions/37640130/get-data-apdu-command-different-tags-and-response-format – MJay

+2

Проверка команды APDU 'GET Data' в GlobalPlatform Спецификация карты. Посмотрите на вывод 'gp.exe -l -v -d -i'. Там вы можете увидеть связанные APDU comamnds и их выходные данные для получения IC Serial Number, IC Fabrication Data и т. Д. – Abraham

+3

Почему вы не пишете простую пару методов 'setSerialNum' и' getSerialNum() 'для вашего собственного апплета для возврата уникального серийного номера? Вы беспокоитесь о том, как имитировать методы апплета? Я заверяю вас, что хакер может имитировать уникальный ответ карты. Хакер может написать апплет с AID SD карты вашей карты и сделать его по умолчанию выбранным, и каждый раз, когда вы запрашиваете Security Domain для SN, его апплет возвращает произвольное значение (если вы не используете защищенный канал). В случае безопасного канала нет никакой разницы между безопасным сеансом для вашего апплета или для домена безопасности.) – Abraham

ответ

3

Несомненно, каждый поставщик оборудования объединяет информацию, подобную упомянутой в чипе. К сожалению, это оставляет следующие проблемы:

  • информация может быть или не быть сделаны доступны в операционной системе
  • Существует мало общего между несколькими поставщиками оборудования под один байт производителя ID, который поддерживается в глобальном масштабе (см., например, chip manufacturer byte); поэтому координаты x и y на пластине могут быть на разных смещениях в зависимости от производителя, и длина этого блока может даже варьироваться в зависимости от чипа. В любом случае требуется аппаратное справочное руководство.

Резюме: Если вам нужна уникальная информация, спецификация должна была заявить об этом в самом начале, скорее всего, с помощью указанной инструкции для ее получения. В среде с несколькими поставщиками все остальное может потерпеть неудачу. Единственным оставшимся выбором является добавление своего идентификатора в качестве пользовательских данных под вашим собственным руководством.


приложена Авраамом:

Поскольку вопрос помечается javacard, мы приходим к выводу, что ваша карта совместимая карта GlobalPlatform.

1: Для карт GP SD (защитный домен: обязательный апплет, установленный на карточке по умолчанию) отвечает за возврат определенных данных карты, включая дату изготовления IC, серийный номер IC и идентификатор партии IC и т. Д. До тех пор, пока вы не используете безопасный канал между картой и внекорневой сущностью, вы не можете доверять ответу SD. Но почему? Поскольку любой злонамеренный пользователь может написать простой апплет с AID, равный AID вашей карты SD, который возвращает свои произвольные данные в вашу команду и устанавливает их на смарт-карту и делает ее выбранной по умолчанию. В этом случае, когда он положил карту на ваших читателей, его апплет отвечает на вашу команду приложения вне карты, и вы не можете обнаружить поддельные карты.

2: Как уважаемое руководство, упомянутое выше, другая карта может поддерживать или не поддерживать равные команды для возврата этих данных карты.

Итак, я предлагаю вам добавить к вашему апплету методы setSerialNumber() и getSerialNumber() и реализовать безопасный канал между вашим offcard и вашим апплетом, чтобы быть уверенным в уникальности ваших карт.

+0

Дорогой Гидот, извините, если это редактирование вас беспокоило. Вы можете отменить его, если считаете, что это плохо. – Abraham

1

Для большинства случаев использования PC/SC UID должно быть достаточно. Это идентификатор длиной от 4 до 7 байтов, который считывается в любом случае при создании контактной связи . Хотя некоторые карты могут быть настроены для возврата случайных UID, однако это не проблема, если у вас есть карты для вашего проекта под контролем

+4

Этот * UID * предназначен для решения только выбора правильной карты, когда несколько одновременно находятся в поле читателя (поэтому он обращается к проблеме протокола низкого уровня). Учитывая, что исходный вопрос не упоминает бесконтактный и не помечен соответствующим образом и, наконец, обусловлен внутренней слабостью (вероятностью вместо уникальности), приводит к моему понижению. – guidot

+0

Я действительно не понимаю. Ответы - это предложения, и я явно закрепил ** бесконтактную ** часть и объяснил энтропийную прочность PC/SC UID. Его вопросы даже требуют «уникального идентификатора смарт-карты», который в значительной степени является переводом идентификатора ПК/SC. Ответ отнюдь не является неправильным и предложением с указанными обстоятельствами. Не согласен с вами. –

+0

И, кстати, все может быть связано с определенными вещами, и это очень распространено, они также используются другими способами. Я знаю много примеров использования, таких как принтеры, которые просто полагаются на идентификатор ПК/SC, чтобы идентифицировать пользователей ... –

Смежные вопросы