В статье рассмотрена разработка программного модуля управления файловой системой SIM-карты. Данный модуль предоставляет телефону доступ к данным, хранящимся на SIM-карте, и по этой причине является одной из важных частей операционной системы SIM-карты. Особенностью реализации модуля является то, что он создан в первую очередь на базе команд из ГОСТ Р ИСО/МЭК 7816–4–2013, благодаря чему достаточно просто адаптируется для операционных систем других видов Smart-карт.
Ключевые слова: SIM-карта, программный модуль, файловая система.
Введение
SIM-карта — это чип с микропроцессором, использующийся, в первую очередь, для аутентификации абонентов в сотовых сетях. Однако современный уровень развития микроэлектроники позволяет записывать на SIM-карту дополнительные приложения, тем самым расширяя ее функциональность. Для хранения и упорядочивания информации, необходимой для работы SIM-карты, а также предоставления мобильному устройству доступа к ней, создается файловая система (ФС). К файловой системе предъявляется ряд требований, касающихся ее структуры (для обеспечения совместимости с различными мобильными устройствами) и безопасности хранения информации. Одним из пунктов в этом списке является поддержка SIM-картами российских криптографических алгоритмов. В связи с этим разработка SIM-карты и программного обеспечения для нее (в том числе программного модуля управления файловой системой SIM-карты — ПМ УФСК) полностью на предприятии в России весьма актуальна.
Обзор существующих решений
Smart-карты, одним из вариантов которых является SIM-карта, используются во многих сферах жизни общества. Причем базовые принципы работы и интерфейс взаимодействия карты и терминала одинаковы для всех Smart-карт, поэтому для анализа подходят реализации программного модуля управления файловой системой для разных видов Smart-карт. Данный модуль входит в состав операционной системы карты. Существующими аналогами разрабатываемого программного модуля являются его реализации в операционной системе (ОС) Магистра 1.30 компании «Смарт-парк», ОС Рутокен, ОС микроконтроллера ACOS6 компании «ACS» и ОС Крепость.
Главным недостатком аналогичных решений является то, что доступ к исходному коду их операционных систем (и, в частности, разрабатываемого модуля), а также соответствующей документации, отсутствует.
Для анализа выбраны еще несколько критериев. Рассматривается полнота реализации команд стандарта ГОСТ Р ИСО/МЭК 7816–4–2013 и поддержка российских криптографических алгоритмов. Еще одним немаловажным критерием является наличие различных механизмов для уменьшения объема энергонезависимой памяти микроконтроллера, используемого файловой системой.
Результаты сравнения аналогов приведены в таблице 1.
Таблица 1
Сравнительный анализ существующих аналогов
Реализация модуля в ОС Критерий |
ОС Магистра 1.30 [1] |
ОС Рутокен [2] |
ОС ACOS6 [3] |
ОС Крепость [4] |
ПМ УФСК |
Доступность исходного кода ОС |
- |
- |
- |
- |
+ |
Доступность документации на ОС |
+ |
- |
+ |
+ |
+ |
Реализация всех команд по ГОСТ Р ИСО/МЭК 7816–4–2013 |
- |
- |
- |
+ |
+ |
Поддержка российских криптографических алгоритмов |
+ |
+ |
- |
+ |
+ |
Поддержка файлов записей переменной длины |
+ |
- |
+ |
+ |
+ |
Наличие механизмов для уменьшения объема памяти, занимаемой ФС |
+ |
+ |
- |
- |
+ |
Таким образом, по предложенным критериям ПМ УФСК является лучше рассмотренных аналогов.
Концептуальная модель ПМ УФСК
SIM-карта является ведомым устройством, поэтому любая операция в ней выполняется только после получения соответствующей команды от мобильного оборудования. Следовательно, напрямую SIM-карта взаимодействует только с этим устройством, а оно, в свою очередь, обменивается данными с сотовой сетью. При этом в операционной системе SIM-карты выделены отдельные модули, выполняющие свои функции. К таким модулям относятся разрабатываемый ПМ УФСК, контроллер Flash-памяти, Hardware Abstraction Level (HAL) и другие. При работе ПМ УФСК пользуется интерфейсом, предоставляемым контроллером Flash-памяти, потому что все файлы хранятся именно в ней. В функции main также происходит взаимодействие ПМ УФСК с HAL, при котором функция из HAL получает данные от мобильного оборудования и передает их на обработку функции ПМ УФСК.
Диаграмма вариантов использования представлена на рис. 1.
Рис. 1. Диаграмма вариантов использования ПМ УФСК
Из-за работы SIM-карты в режиме ведомого все варианты использования, представленные на диаграмме, сводятся к реализации команд стандартов ГОСТ Р ИСО/МЭК 7816–4–2013 и ETSI TS 102 221. Стандарт ETSI TS 102 221 регламентирует только работу SIM-карт, поэтому в нем определены не все команды из ГОСТ Р ИСО/МЭК 7816–4–2013, а для некоторых из них сокращен список возможных параметров и режимов работы. По этой причине за основу взяты команды из ГОСТ, которые впоследствии адаптируются не только под SIM-карту, но и под любую другую Smart-карту.
Реализация ПМ УФСК
ПМ УФСК начинает свою работу в тот момент, когда телефон присылает SIM-карте заголовок какой-либо команды. В нем содержится информация об исполняемой команде, по которой ПМ УФСК определяет, нужно ли ожидать от терминала байты поля данных команды или нет. Если команда принадлежит к типу case 3 или case 4, то ПМ УФСК отправляет терминалу процедурный байт, равный байту INS, демонстрирующий готовность к приему следующей части входных данных. Далее телефон отправляет поле данных команды, в котором содержится необходимая для ее успешного выполнения информация.
Следующий этап подготовки к выполнению команды — проверка условий доступа к ней. Она состоит из нескольких этапов. Во-первых, необходимо наличие выбранного файла elementary file (EF), если это подразумевается командой. Во-вторых, структура выбранного файла должна соответствовать структуре файла, с которым умеет работать команда. В-третьих, проверяются условия секретности.
Если все проверки выполнены успешно, то по байту INS команды выбирается и исполняется нужная функция. Результатом ее работы является статус выполнения команды, а в случае с командами case 2 и case 4 — еще и поле данных ответа. Эти данные возвращаются из подпрограммы, реализующей команду, в основную функцию ПМ УФСК.
Если команда завершена неуспешно, то высылаются только два байта — байты статуса SW1 и SW2. Только статус выполнения команды также отправляется в случае команд типа case 1 и case 3, потому что в них не предполагается наличие поля данных ответа. При использовании протокола T=0 байты специального статуса без поля данных ответа отправляются и для команд case 4, потому что в данном протоколе невозможно в одной паре командного и ответного TPDU передать два поля данных. Сам ответ телефон получает, отправляя сразу за исполнившейся командой служебную команду GET RESPONSE.
Один цикл описанного алгоритма работы приведен на рис. 2.
Рис. 2. Схема алгоритма работы одного цикла ПМ УФСК
Для программной реализации ПМ УФСК необходимо выбрать язык программирования. Микроконтроллер обладает значительно меньшими ресурсами (оперативной и энергонезависимой памятью) по сравнению с процессорами для компьютеров, поэтому от выбора языка программирования зависит возможность исполнения программы. В частности, если код плохо оптимизирован компилятором, объем программы превысит отведенное в энергонезависимой памяти для секции текста место. Другим негативным сценарием является нехватка оперативной памяти для размещения переменных или места на стеке для выполнения функций. Для более оптимального использования ресурсов также необходима поддержка языком программирования механизмов ручного управления памятью.
Указанным выше требованиям в той или иной степени соответствуют следующие языки программирования: ассемблер, С и С++. Однако также существует технология Java Card, позволяющая писать апплеты для Smart-карт на адаптированном под них языке Java.
Сравнение рассматриваемых языков программирования по перечисленным критериям приведено в таблице 2.
Таблица 2
Сравнение языков программирования
Язык Характеристики |
Ассемблер [5] |
С [6] |
С++ [7] |
Java [8] |
Нативная программа (компилируется в машинный код) |
+ |
+ |
+ |
- |
Ручное управление памятью |
+ |
+ |
+ |
- |
Прямой доступ к регистрам и низкоуровневым функциям |
+ |
+ |
+ |
- |
Высокоуровневый язык |
- |
+ |
+ |
+ |
Независимость программы от микроконтроллера, на котором она должна исполняться |
- |
+ |
+ |
+ |
Поддержка процедурного программирования |
+ |
+ |
+ |
- |
По результатам сравнения получается, что наиболее подходящим языком для написания ПМ УФСК является С.
Выводы
В результате разработки получен программный модуль управления файловой системой SIM-карты, отвечающий требованиям стандартов ГОСТ Р ИСО/МЭК 7816–4–2013 и ETSI TS 102 221. Благодаря реализации всех команд по ГОСТ, модуль является достаточно универсальным и легко адаптируемым для использования в других Smart-картах.
После создания и отладки модуля проведено его тестирование, а также сравнительные испытания SIM-карт различных производителей, в том числе SIM-карты с разработанным программным модулем. По результатам испытаний выявлено ускорение инициализации SIM-карты в среднем в 2 раза, что свидетельствует об уменьшении времени выполнения одной команды.
Литература:
- Операционная система смарт-карты Магистра 1.30. Руководство программиста-пользователя. Платформа ST23 (сокращенная версия). Москва: ООО «СмартПарк», 2013. 94 с.
- Смарт-карты Рутокен [Электронный ресурс]: Рутокен — URL: https://www.rutoken.ru/products/all/smart-card/#spec (дата обращения: 20.11.2024)
- ACOS6 Multi-application & Purse Card [Электронный ресурс]: Advanced Card Systems Ltd. — URL: https://www.acs.com.hk/en/products/480/acos6-multi-application-purse-card/ (дата обращения: 20.11.2024)
- Техническое описание 58191855.00017–01 99 01. Москва, 2008. 250 с.
- SHAKTI Development Team RISC-V ASSEMBLY LANGUAGE. Programmer Manual. Мадрас: IIT, 2021. 138 с.
- Керниган, Брайан У., Ритчи, Деннис М. Язык программирования C, 2-е издание.: Пер. с англ. — М.: Издательский дом «Вильямс», 2012. 304 с.: ил. — Парал. Тит. Англ.
- C++ language: [Электронный ресурс]. URL: https://cplusplus.com (дата обращения: 17.01.2025)
- Java: [Электронный ресурс]. URL: https://www.java.com/ru/ (дата обращения: 17.01.2025)