Pull to refresh

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

Information Security *
Долгое время работая со смарт-картами, я сам имел не очень чёткое представление об их внутренностях. Вот получив некий документ, описывающий структуру и схему работы смарт-карты делюсь этой информацией.


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

image

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

Соответственно процессор работает с этими тремя областями памяти, существует возможность чтения и записи во все вышеописанные области памяти.

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

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

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

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


P.S. Данный топик был написан на основе материалов компании Aladdin. Если у кого-то есть техническое описание аппаратной составляющей ключей других производителей, поделитесь, пожалуйста, буду очень признателен.
Tags:
Hubs:
Total votes 58: ↑55 and ↓3 +52
Views 32K
Comments Comments 59