Как устроена смарт-карта


Чтобы понимать, как использовать смарт-карты, давайте разберёмся, как они работают. Понимание внутреннего устройства смарт-карты поможет в дальнейшем при проектировании и эксплуатации решений на базе смарт-карт.
Итак, приступим.

Смарт карту с USB контроллером, или USB-ключ можно представить в виде схемы (по большому счёту USB-ключ отличается от смарт-карты лишь наличием/отсутствием контроллера шины USB):



Как видно из рисунка, в смарт-карте обычно присутствуют 3 раздела памяти:
  • Системная память – содержит файловую систему и операционную систему. В ней хранятся данные необходимые для проверки правильности вводимых PIN-кодов и паролей администратора.
  • Открытая память – содержит данные, которые возможно прочитать без PIN-кода. Имясмарт-карты, идентификатор смарт-карты и другие.
  • Закрытая память – содержит данные доступ к которым возможет только по PIN-коду.

Процессор работает с этими тремя областями памяти и может писать и читать во все вышеописанные области памяти.

Для работы с процессором на низком уровне используются APDU (Application Protocol DataUnit) команды. С использованием APDU команд возможно даже получить доступ к файловой системе смарт-карты, хотя без необходимых знаний делать это категорически не рекомендуется. Описание APDU команд можно получить у производителя смарт-карты, но обычно эта информация предоставляется далеко не всем.

Самым интересным компонентом является чип смарт карты, который обеспечивает:
  • Хранение информации во внутреннем хранилище чипа смарт-карты. Причём, необходимо отметить, что информацию из этого хранилища извлечь невозможно. Чип смарт-карты не содержит команда по извлечению данных из хранилища. В этом хранилище находятся закрытые ключи цифровых сертификатов (несколько неграмотная фраза, но суть надеюсь понятна).
  • Генерацию ключевой пары. В чипе смарт-карты содержится датчик случайных чисел(не знаю, почему в отечественной литературе это называется датчиком, я со школы привык называть генератором случайных чисел). После генерации ключевой пары, закрытый ключ попадает в хранилище чипа смарт карты и никогда не выходит за пределы чипа смарт карты, открытый ключ передаётся процессору, который генерирует запрос на сертификат и посылает его за пределы смарт-карты (в центр выдачи цифровых сертификатов).
  • Аппаратную реализацию симметричных алгоритмов шифрования. Однако в силу ограниченности ресурсов, симметричное шифрование в чипе смарт карты процесс очень долгий. В связи с этим не рекомендуется производить симметричное шифрование больших объёмов информации средствами чипа смарт-карты.
  • Аппаратную реализацию алгоритмов хэширования.
  • Аппаратную реализацию ассиметричных алгоритмов.

Возможности чипов смарт карт отличаются в зависимости от производителей, но эти различия незначительны. Различия связаны с алгоритмами аппаратной реализацией алгоритмов шифрования и хэширования, различные производители реализовывают различные алгоритмы. Но такие алгоритмы как RSA (асимметричное шифрование), DES(симметричное шифрование) и SHA-1(хэширование), думаю реализованы практически во всех чипах смарт карты.

Так как основное предназначение смарт-карты это работы с цифровыми сертификатами, то эту работу можно представить следующим образом:
  • Процессор получает из внешней среды команду генерации ключевой пары.
  • Процессор транслирует эту команду в чип смарт-карты.
  • В чипе смарт карты датчик случайных чисел генерирует ключевую пару, закрытый ключ которой помещается в хранилище чипа смарт-карты, а открытый ключ передаётся процессору.
  • Процессор генерирует запрос на сертификат(в формате PKCS#10), в котором содержится открытый ключ сгенерированной ключевой пары.
  • Процессор передаёт сгенерированный запрос во внешнюю среду. Данный запрос попадает в центр выдачи сертификатов и на основании этого запроса выдаёт сертификат, который возвращается в смарт-карту.
  • Получив сертификат процессор записывает его в закрытую область памяти.

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

Переход на java-машины позволил расширить функционал смарт-карт. Например, приложений на java смарт-карте может быть не одно и каждое приложение реализует собственную функциональность. Например, разные приложения реализуют различные криптографические алгоритмы

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



Приложения и данные (сертификаты и ключевые носители) занимают память ключевого носителя, следовательно, чем больше приложений на ключевом носителе, тем меньше памяти остаётся под данные.

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

Нет комментариев