Рекомендации по выбору интерфейса
По мере развития смарткарточных технологий вокруг них было создано множество технологий, которые описывают правила взаимодействия их с различными системами.
Самые удачные технологии реализовались в международные стандарты ISO или общепризнанные отраслевые стандарты.
Интерфейсы высокого уровня
Интерфейсы высокого уровня предназначены для разработчиков программ и программных комплексов прикладного уровня.
Они абстрагируют программиста от такого понятия, как файловая система, особенностей работы смарт-карточной операционной системы
Наиболее распространенными интерфейсами высокого уровня, подходящими для разработчиков прикладных приложений являются стандарты RSALabs PKCS#11 и Microsoft CryptoAPI.
RSALabs PKCS#11 (CryptoKi)
Стандарт разработан исследовательской группой RSALabs как попытка стандартизовать высокоуровневый кросплатформенный программный интерфейс доступа к функциональности смарт-карт и usb-токенов.
PKCS#11 благодаря своей логичности и относительной простоте получил широкое распространение и в настоящий момент является де-факто индустриальным стандартом для приложений работающих со смарткартами.
Ответственность за реализацию интерфейса в виде динамически подгружаемой библиотеки лежит на производителях смарт-карт (usb-токенов).
Рекомендуется к использованию при разработке приложений прикладного уровня для различных платформ в том числе кроссплатформенных приложений, кроме случаев, когда требуется глубокая интеграция приложения в операционные системы Windows.
Достоинства
- Кроссплатформенный (Windows, Mac OS X, Linux, UNIX, Java и т.п)
- Простой интерфейс для языка Си
- Широко распространен (кроме Windows)
- Достаточно высокий уровень абстракции
- Легкая портируемость программного обеспечения
Недостатки
- Недостаточная поддержка в Windows и в прикладных приложениях для Windows
Microsoft CryptoAPI
Microsoft CryptoAPI можно рассматривать как расширение обширного Windows API в части касающейся криптографии и инфраструктуры открытых ключей.
Фукнции предоставляются либо встроенными криптопровайдерами, входящими в состав Windows, либо внешними поставляемыми производителями смарт-карт или usb-токенов.
Microsoft CryptoAPI глубоко интегрирован в операционные системы Windows и другое прикладное программное обеспечение от Microsoft и является стандартом для Windows платформы.
Рекомендуется к использованию при разработке приложений прикладного уровня для Windows, когда требуется глубокая интеграция приложения в операционную систему и программное обеспечение Microsoft.
Достоинства
- Глубоко интегрирован в Windows и прикладное программное обеспечение
- Достаточно простой интерфейс
- Высокий уровень абстракции
- Легкая портируемость программного обеспечения (в пределах платформы)
Недостатки
- Совершенно не используется вне Windows
- установка криптопровайдера требует наличия административных прав в системе
Интерфейсы низкого уровня
Программный интерфейс PC/SC
Низкоуровневый программный интерфейс описывающий взаимодействие прикладного программного обеспечения и смарт-карточного оборудования.
Общение прикладной программы и смарт-карт (usb-токенов) по большей части представляет собой обмен особыми массивами данных в режиме запрос-ответ.
Интерфейс первоначально был разработан компанией Microsoft, однако получился настолько удачным, что был портирован и на другие операционные системы.
Реализация взаимодействия на уровне протокола PC/SC довольно трудоемка и требует знания достаточно большого количества специфичных аспектов, которые могут довольно сильно отличаться у разных производителей.
Рекомендуется к использованию только для разработчиков встраиваемых систем, при доработке уже существующего программного обеспечения, либо при острой необходимости использования функций специфичных только для Рутокен.
Достоинства
- Кроссплатформенный
- Широко распространён
- Позволяет задействовать специфичный для конкретной модели смарт-карты (usb-токена) фукнционал.
Недостатки
- Крайне сложен в реализации
- Требует знания большого количества специфичных для каждого производителя
- Чрезвычайно высокая сложность портирования
Аппаратный уровень ISO/IEC 7816
На наиболее низком уровне (ближайшем к смарт-карте или токену) обосновалось семейство стандартов ISO/IEC 7816.
Различные части этого стандарта описывают физические параметры карт, расположение и назначение контактов, электрические параметры интерфейса и принципы установления связи, протокол обмена и механизм действия команд.
Практически все выпускаемые смарт-карты так или иначе поддерживают этот стандарт с некоторыми вариациями.
Рекомендуется к использованию только для разработчиков аппаратных систем (не совместимых с PC).