Стандарты связи со смарт-картами

В чем разница между APDU ISO 14443-3 и ISO 7816-4? Я спрашиваю об этом, потому что кажется, что некоторые карты используют первый для связи с ридером, некоторые второй. Я смущен этим, хотел бы получить хорошее представление об этом. Например, я думаю, что Mifare Classic использует ISO 14443-3. Но что меня здесь смутило, так это то, что когда я писал приложение для связи с Mifare classic, я отправлял ему APDU.


person Community    schedule 03.10.2013    source источник


Ответы (2)


Стандарт ISO 14443 определяет физический транспортный протокол RF для связи между картой и считывателем (см., например, http://www.openpcd.org/ISO14443 для краткого обзора). Он стандартизирует такие вещи, как использование битов четности, алгоритмы CRC, размер кадра, механизм подтверждения и т. д. По сути, определены 2 различных типа связи: тип A и тип B. Причина этого во многом историческая: существовали разные виды продукты на рынке до определения стандарта, которые более или менее соответствуют типу А и типу В в части 3 стандарта ISO 14443.

Часть 4 стандарта по существу определяет коммуникационный уровень, поверх которого становится возможным общий тип связи. Обычно это ISO 7816-4, хотя существуют бесконтактные карты (например, MIFARE DESFire и MIFARE Plus), которые (также) вместо этого используют собственную структуру команд.

ISO 7816 — это набор стандартов контактных смарт-карт. Часть 4 стандартизирует формат команд-ответов и ряд команд: APDU. Это создает ситуацию, когда с программной точки зрения нет реальной разницы между общением с помощью контактного считывателя смарт-карт и бесконтактного. В обоих случаях программное обеспечение может использовать APDU для связи со смарт-картой. Так много программных библиотек, реализующих поддержку считывателя смарт-карт, используют APDU в качестве основного модуля связи с картой.

Это очень удобно, за исключением того факта, что некоторые популярные бесконтактные карты, такие как MIFARE Classic, не понимают APDU (так как они даже не поддерживают ISO 14443-4). Поэтому производители бесконтактных считывателей карт создали своего рода «виртуальный» формат APDU (с использованием проприетарного байта класса в APDU) для решения этой проблемы. Микропрограмма кард-ридера (или драйвер на ПК) перехватывает C-APDU и переводит их в соответствующую команду MIFARE Classic, а ответ карты переводит в R-APDU. Таким образом, разработчики программного обеспечения могут использовать свою предпочитаемую коммуникационную библиотеку смарт-карт и по-прежнему взаимодействовать с картами MIFARE Classic.

Карты MIFARE DESFire предлагают аналогичный механизм, но на самом деле именно карта управляет трансляцией APDU из собственного набора команд и в него. Это возможно, потому что карта использует связь ISO 14443-4.

Хорошая инфографика, показывающая множество стандартов и спецификаций бесконтактных смарт-карт и NFC по отношению друг к другу, можно найти по адресу http://open-nfc.org/documents/PRE_NFC_0804-250%20NFC%20Standards.pdf

Обзор других стандартов смарт-карт см., например. http://www.smartcardbasics.com/smart-card-standards.html. Этот вопрос также может содержать соответствующую информацию.

person NFC guy    schedule 04.10.2013
comment
Спасибо NFC, парень. Теперь я более или менее понимаю эти вещи. 1. То есть каждый ридер переводит APDU в команды Mifare, верно? Но как это отражается на совместимости? Если я использую определенный набор APDU для общения с Mifare classic, смогу ли я общаться с Mifare Classic, используя те же APDU, но другой ридер? - person ; 07.10.2013
comment
Этот перевод APDU не стандартизирован, насколько я знаю, поэтому он может не работать на другом ридере. - person NFC guy; 07.10.2013
comment
Пользуясь случаем, задам вам еще один вопрос: что проще реализовать, Mifare Plus? или Desfire EV? - person ; 08.10.2013
comment
Если вы переходите с существующей системы MIFARE Classic, я бы предложил MIFARE Plus. Во всех остальных случаях я бы рекомендовал DESFire EV1. - person NFC guy; 08.10.2013
comment
а как же ультралайт С? В любом случае, теперь, когда я смотрю на это, я думаю, что сначала я должен посмотреть на ридер, который у меня есть (не так ли?), посмотреть, какая поддержка (например, SDK и т. д.) у него есть (хорошая или плохая) для некоторых конкретных Мифарная карта. А потом посмотрите, как это реализовать, разве это не общее правило? (ps. это новая система, а не миграция) - person ; 09.10.2013

На самом деле 14443-3 соответствует 7816-3, потому что здесь мы говорим о проблемах протокола. Карты Mifare (как простые карты памяти) не понимают APDU. Чтобы вообще обращаться к ним через PCSC, драйверы считывателей предлагают APDU (которые не стандартизированы и поэтому могут различаться для разных марок считывателей). Они не передаются на карту, а выбираются и интерпретируются считывателем или его драйвером. Существует также семейство смарт-карт, понимающих настоящие APDU на основе 14443 и использующих протокол T-CL, как проездные документы, соответствующие требованиям ИКАО.

person guidot    schedule 03.10.2013
comment
хм... хорошо, я использовал руководство для считывателя ACR122U, чтобы собрать команды APDU для отправки на считыватель для связи с Mifare Classic. Но затем я использовал эти APDU для связи с Mifare Classic с помощью считывателя Omnikey — и он все еще работал, так что, кажется, эти два считывателя используют общий формат APDU, верно? - person ; 03.10.2013
comment
На этот раз вам повезло, поэтому я написал, возможно, по-другому. (Производители могут быть достаточно умны, чтобы сходиться.) Но с технической точки зрения они могут быть совершенно разными, потому что они не зависят от карты. - person guidot; 03.10.2013
comment
спасибо гидо. Можете ли вы сказать мне, где я могу узнать больше об этой теме? (например, то, что вы описали в основном). Я немного программировал на Mifare, но эта информация, которую вы сказали, была для меня новой, поэтому я хотел бы хорошо знать, как там все происходит / работает. пс. Большинство примеров, которые я видел на SO для связи с Mifare Classic, похоже, используют похожий APDU, поэтому, возможно, для Classic эти APDU в основном совпадают. - person ; 03.10.2013