Все мы пользуемся разными видами смарт-карт в повседневной жизни. Наиболее яркими примерами смарт-карт являются: SIM-карты, кредитные карты, электронные документы и т.д.
По сути, смарт-карта — это оптимизированный для криптографии микроконтроллер с повышенным уровнем безопасности. Что это означает? В отличие от стандартного микроконтроллера доступ к памяти смарт-карты строго контролируется процессором. Таким образом, чтение данных с карты их написание на ней регулируются ПО самой карты. Более того, производители чипов предпринимают меры по предотвращению несанкционированного доступа (копирования всей памяти, перепрограммирования) к карте на электронном и физическом уровне.
Применение смарт-карты
Смарт-карта используется в тех случаях, когда необходимо удостоверить подлинность ее обладателя. Примером тому служит SIM-карта. Ее главной ролью является доказать оператору, что телефон, подключившийся к сети, принадлежит конкретному абоненту. После подобной проверки оператор сможет направлять коммуникацию с номера и на номер абонента именно тому телефону, а также регистрировать платежный баланс абонента.
С технической точки зрения карта наделена следующими функциями:
- Сохранение идентификационных данных обладателя карты (чаще всего ID-номера, а не контактные данные обладателя).
- Сохранение и проверка PIN-кодов для осуществления двухфакторной аутентификации.
- Генерация и сохранение криптографических ключей и сертификатов. Обычно данные ключи используются исключительно для исполнения других функции внутри карты и не подлежат чтению.
- Генерация цифровой подписи.
- Аутентификация по схеме «Вызов-ответ».
- Иные специфические функции, присущие тому или иному виду карты.
Работа смарт-карты
Карты не работают автономно, а только в связке с так называемым терминалом (телефон, банкомат, иной проводной или беспроводной электронный читатель). Читатель обеспечивает карту электричеством и посылает команды. Карта никогда не инициирует коммуникацию, а всегда обязательно отвечает на любые посланные ей терминалом команды. В случае отсутствия ответа карта будет считаться «MUTED», т.е. не работающей. В подобной ситуации терминал либо никак не реагирует на ошибку, либо пытается восстановить общение с картой после осуществления RESET.
На логическом уровне коммуникация между терминалом и картой происходит в формате APDU, описанном стандартом ISO7816-4. Что касается физического уровня, то выше упомянутое общение регулируется не каким-то одним определенным стандартом, а их множеством. К примеру, существуют стандарты для контактного (ISO7816-3 T=0 и T=1, USB и т.д.) и бесконтактного (ISO14443, NFC/SWP) общения.
Я бы хотел поподробнее описать коммуникацию терминал с картой. Она происходит следующим образом:
- Инициализация физического канала (Cold reset, ATR, и т.д.)
- Выбор с помощью команды SELECT желаемой программы. Данный шаг является опциональным. В случае если он не исполняется, то общение будет осуществляться с программой, выбранной по умолчанию при инициализации канала
- Дальнейшее общение для реализации конкретных задач
Стоит упомянуть, что на карте может быть установлена более чем одна программа. К тому же, терминал имеет возможность параллельного общения с одной или несколькими программами с помощью так называемых логических каналов. Количество поддерживаемых логических каналов зависит от конкретной карты. Стандарт ISO7816-4 позволяет карте поддерживать не более чем 20 каналов. Однако, на практике большинство карт поддерживают только 4 канала.
Карты Native и Javacard
Некоторые смарт-карты выходят в производство с уже заранее установленными на них и не подлежащими изменению, дополнению, либо удалению одной или более программами, предназначенными для исполнения конкретных функций (SIM и USIM, EMV и т.д.). Подобные карты, носящие название Native, являются привлекательными благодаря их низкой цене (при оптовых закупках) и относительной простоте используемого для их программирования кода, что уменьшает вероятность проблем с безопасностью карты. Однако наиболее интересными, на мой взгляд, картами являются карты на основе JavaCard и Global Platform, в которых ОС карты — это платформа, на которой можно установить различные приложения. Приложения, написаные для JavaCard, с использованием стандартных API, можно будет загрузить на все карты, поддерживающие совместимую версию платформы, вне зависимости от производителя карты. Что касается Global Platform, то это набор спецификаций, регулирующий безопасную администрацию карты, в том числе установку, блокировку либо удаление тех или иных приложений, а также управление жизненным циклом (Life Cycle) карты.
Маленькое примечание по поводу администрации карты. Пользователь карты, как правило, не является владельцем и администратором карты. К примеру, администратором SIM-Карты является оператор мобильной связи, а не абонент. Только оператор имеет право устанавливать или удалять приложения на/с карты. Тем не менее, существует также возможность приобрести «пустые» карты для собственной разработки приложений.
Таким образом, в данной части своей статьи я коснулся базиса работы смарт-карты, как на внешнем, так и на внутреннем уровне, а также дал краткое определение понятия смарт-карты. Следующие части статьи я хотел бы посвятить:
- краткому описанию формата APDU по стандарту ISO7816-4
- понятию и сущности JavaCard
- различным аспектам Global Platform
Ресурсы
Смарт-карта, Википедия
ISO7816-4
Автор: brainnolo