Основан ли OpenSC полностью на PC/SC или он также использует другие команды?

Я пытаюсь изучить основы программирования смарт-карт и хотел бы добавить в карту поддержку PKCS#11. Производитель не предоставляет модуль PKCS#11, поэтому я хотел бы использовать OpenSC (карта не указана как совместимая с OpenSC).

Насколько я знаю, сценарий должен быть таким:

  1. Программное обеспечение на компьютере использует API-интерфейсы PKCS#11, реализованные OpenSC.
  2. OpenSC работает вместе с PC/SC для создания и отправки APDU на карту.
  3. Карта обрабатывает командные APDU и отвечает ответными APDU.

Мне нужно знать, достаточно ли будет реализовать апплет, способный распознавать и обрабатывать все команды, указанные в ISO-7816, или нет.

В частности, я не могу понять, полагается ли вся реализация OpenSC только на команды, указанные в ISO-7816, или она использует также определенные команды (тот факт, что OpenSC не совместим со всеми смарт-картами, заставляет меня думать, что он использует проприетарные команды ).


person matteof93    schedule 09.08.2019    source источник


Ответы (2)


тот факт, что OpenSC не совместим со всеми смарт-картами, наводит меня на мысль, что он использует проприетарные команды

Нет, не совсем так, скорее наоборот. В ISO 7816-4 перечислены многие команды для смарт-карт на основе файлов или записей. Существует несколько карт, которые полностью реализуют все команды, написанные в ISO 7816-4. Кроме того, даже если бы они это сделали, в стандарте есть много пробелов, таких как нечеткое описание условий ошибки, множество вариантов даже в отношении того, что находится в «корне» файловой системы, проприетарные параметры, проприетарные команды, отсутствие четкого безопасного обмен сообщениями и т. д. и т. д. и т. п..

В этом смысле это ужасный стандарт; вы должны рассматривать это как неудачную попытку индустрии производителей карт с файловой системой создать что-то, чего они все могли бы придерживаться.


Кроме того, поддержка 7816-4 не означает, что поддерживается какой-либо конкретный вариант использования. Там нет описания того, как вы получаете подпись. Существует по крайней мере PKCS#15 (теперь также отраженный как стандарт ISO), который указывает, где можно найти файлы и ключи. Однако, если вы создаете подпись, вы также должны знать, какой тип подписи создается и какую команду следует использовать для этого.

Другими словами, обычно «промежуточное программное обеспечение», такое как OpenSC, всегда должно делать что-то для поддержки определенных карт. Тот факт, что одна карта не поддерживается, никоим образом не говорит о том, что OpenSC «неправильный», это просто означает, что поддержка карты — если она является действительно картой с файловой системой или программируемой картой — не поддерживалась. еще проверено/внедрено.


Обратите внимание, что PC/SC — это просто стандартизированный способ работы со смарт-картами в операционной системе (начиная с ОС Windows, из которой она возникла). Эти команды просто должны соответствовать стандарту ISO 7816-4, но ему совершенно все равно, какие команды отправляются и в каком порядке. Не существует смарт-карт, совместимых с ПК/SC, есть только совместимые считыватели (или, поскольку они не могут просто читать, интерфейсные устройства для смарт-карт или IFD) для смарт-карт, совместимых со стандартом ISO 7816-4. карты.

Некоторые аппаратные токены также могут быть совместимы с ПК/SC просто потому, что они эмулируют комбинацию считывателя и чипа или потому, что внутри они представляют собой считыватель и чип (более дешевые/медленные). Другие работают на более высоком уровне и используют PKCS#11, который напрямую определяет интерфейс для криптографических токенов и, возможно, и объективно лучше определен, чем ISO 7816-4 или -15 вместе взятые.

person Maarten Bodewes    schedule 18.08.2019

Самая большая проблема при написании таких реализаций — как и где данные хранятся на карте. В то время как типизированные данные и команды для доступа к ним действительно стандартизированы в ISO-7816, команды для записи — нет. Кроме того, карты сильно различаются в зависимости от того, какие типы файлов разрешены, и они также часто требуют проприетарных расширений для стандартных команд ISO.

Что делает OpenSC, так это пытается создать приложение PKCS#15 на карте для использования для доступа PKCS#11. Если вы не можете написать это или данные уже представлены в проприетарном формате, все может стать очень сложным.

person mat    schedule 09.08.2019