Pull to refresh

Смарт-карты. Часть 1. Принципы работы

Reading time4 min
Views54K
Все мы пользуемся разными видами смарт-карт в повседневной жизни. Наиболее яркими примерами смарт-карт являются: SIM-карты, кредитные карты, электронные документы и т.д.

По сути, смарт-карта — это оптимизированный для криптографии микроконтроллер с повышенным уровнем безопасности. Что это означает? В отличие от стандартного микроконтроллера доступ к памяти смарт-карты строго контролируется процессором. Таким образом, чтение данных с карты их написание на ней регулируются ПО самой карты. Более того, производители чипов предпринимают меры по предотвращению несанкционированного доступа (копирования всей памяти, перепрограммирования) к карте на электронном и физическом уровне.

Применение смарт-карты


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

С технической точки зрения карта наделена следующими функциями:
  • Сохранение идентификационных данных обладателя карты (чаще всего ID-номера, а не контактные данные обладателя).
  • Сохранение и проверка PIN-кодов для осуществления двухфакторной аутентификации.
  • Генерация и сохранение криптографических ключей и сертификатов. Обычно данные ключи используются исключительно для исполнения других функции внутри карты и не подлежат чтению.
  • Генерация цифровой подписи.
  • Аутентификация по схеме «Вызов-ответ».
  • Иные специфические функции, присущие тому или иному виду карты.

Работа смарт-карты


Карты не работают автономно, а только в связке с так называемым терминалом (телефон, банкомат, иной проводной или беспроводной электронный читатель). Читатель обеспечивает карту электричеством и посылает команды. Карта никогда не инициирует коммуникацию, а всегда обязательно отвечает на любые посланные ей терминалом команды. В случае отсутствия ответа карта будет считаться «MUTED», т.е. не работающей. В подобной ситуации терминал либо никак не реагирует на ошибку, либо пытается восстановить общение с картой после осуществления RESET.

На логическом уровне коммуникация между терминалом и картой происходит в формате APDU, описанном стандартом ISO7816-4. Что касается физического уровня, то выше упомянутое общение регулируется не каким-то одним определенным стандартом, а их множеством. К примеру, существуют стандарты для контактного (ISO7816-3 T=0 и T=1, USB и т.д.) и бесконтактного (ISO14443, NFC/SWP) общения.

Я бы хотел поподробнее описать коммуникацию терминал с картой. Она происходит следующим образом:
  1. Инициализация физического канала (Cold reset, ATR, и т.д.)
  2. Выбор с помощью команды SELECT желаемой программы. Данный шаг является опциональным. В случае если он не исполняется, то общение будет осуществляться с программой, выбранной по умолчанию при инициализации канала
  3. Дальнейшее общение для реализации конкретных задач

Стоит упомянуть, что на карте может быть установлена более чем одна программа. К тому же, терминал имеет возможность параллельного общения с одной или несколькими программами с помощью так называемых логических каналов. Количество поддерживаемых логических каналов зависит от конкретной карты. Стандарт ISO7816-4 позволяет карте поддерживать не более чем 20 каналов. Однако, на практике большинство карт поддерживают только 4 канала.

Карты Native и Javacard


Некоторые смарт-карты выходят в производство с уже заранее установленными на них и не подлежащими изменению, дополнению, либо удалению одной или более программами, предназначенными для исполнения конкретных функций (SIM и USIM, EMV и т.д.). Подобные карты, носящие название Native, являются привлекательными благодаря их низкой цене (при оптовых закупках) и относительной простоте используемого для их программирования кода, что уменьшает вероятность проблем с безопасностью карты. Однако наиболее интересными, на мой взгляд, картами являются карты на основе JavaCard и Global Platform, в которых ОС карты — это платформа, на которой можно установить различные приложения. Приложения, написанные для JavaCard, с использованием стандартных API, можно будет загрузить на все карты, поддерживающие совместимую версию платформы, вне зависимости от производителя карты. Что касается Global Platform, то это набор спецификаций, регулирующий безопасную администрацию карты, в том числе установку, блокировку либо удаление тех или иных приложений, а также управление жизненным циклом (Life Cycle) карты.

Маленькое примечание по поводу администрации карты. Пользователь карты, как правило, не является владельцем и администратором карты. К примеру, администратором SIM-Карты является оператор мобильной связи, а не абонент. Только оператор имеет право устанавливать или удалять приложения на/с карты. Тем не менее, существует также возможность приобрести «пустые» карты для собственной разработки приложений.

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

  1. краткому описанию формата APDU по стандарту ISO7816-4
  2. описанию формата BER-TLV
  3. понятию и сущности JavaCard
  4. различным аспектам Global Platform

Ресурсы


Смарт-карта, Википедия
ISO7816-4

Остальные части статьи


Часть 2. APDU
Часть 3. TLV
Tags:
Hubs:
Total votes 16: ↑15 and ↓1+14
Comments5

Articles