Структура
JaCarta OS USB-токена JaCarta SF/ГОСТ включает в себя следующие компоненты:
- ядро;
 - библиотеку драйверов LPC Lib;
 - библиотеку уровня аппаратной абстракции, включающую в себя библиотеки для управления
                    
- USB-интерфейсом;
 - микроконтроллером смарт-карты;
 - периферийными устройствами;
 
 - специальный процесс JaCarta OS.
 
Ядро и библиотеки драйверов и уровня аппаратной абстракции составляют базовую часть JaCarta OS. Специальный процесс JaCarta OS (App) при своей работе взаимодействует с базовой частью JaCarta OS, а именно с библиотекой уровня аппаратной абстракции.
                
            
Специальный процесс JaCarta OS
Специальный процесс содержит логику реализации функционального назначения JaCarta OS.
В состав специального процесса JaCarta OS входят следующие модули:
- фильтр APDU-команд (Firewall);
 - диспетчер APDU-команд;
 - служебный апплет;
 - виртуальный апплет;
 - авторизационный апплет;
 - блок служебных функций специального процесса.
 
                
            
Фильтр APDU-команд
Фильтр APDU-команд (Firewall) выполняет блокировку APDU-команд, не отвечающих критериям, которые задаются специальными масками.
Диспетчер APDU-команд
Диспетчер APDU-команд осуществляет маршрутизацию APDU-команд к апплету, функционирующему в рамках специального процесса JaCarta, либо в составе СКЗИ "Криптотокен 2 ЭП".
Маршрутизация APDU-команд осуществляется по принципу триггера с множеством устойчивых состояний.
Служебный апплет
Служебный апплет выполняет следующие функции:
- запись блока конфигурационных данных о USB-токене в процессе его производства;
 - получение конфигурационных данных о USB-токене в процессе его эксплуатации;
 - получение дополнительной служебной и эксплуатационной информации о USB-токене:
                    
- номера версии апплета;
 - размера блока конфигурационных данных;
 - объёма свободной памяти ЭСППЗУ на микроконтроллере смарт-карты USB-токена;
 
 - получение значений эксплуатационных параметров JaCarta SF/ГОСТ:
                    
- номера этапа жизненного цикла карты памяти;
 - счётчика подключений JaCarta SF/ГОСТ к порту USB;
 - счётчика прерванных APDU-команд;
 - счётчика невыполненных APDU-команд "Отключить скрытые разделы";
 - счётчика общего времени работы JaCarta SF/ГОСТ;
 - версии JaCarta OS;
 - кода последней ошибки, сохранённого в оперативной памяти JaCarta SF/ГОСТ;
 
 - получение информации об ЭСППЗУ ведущего микроконтроллера, в частности следующих значений
                    
- полного размера доступного ЭСППЗУ;
 - текущего смещения используемой на данный момент ячейки памяти относительно начала ЭСППЗУ;
 - размера ячейки хранения служебных счётчиков;
 - счётчика фактов записи в текущую ячейку хранения служебных счётчиков;
 - счётчика подключений JaCarta SF/ГОСТ к порту USB;
 - счётчика прерванных APDU-команд;
 - счётчика невыполненных APDU-команд "Отключить скрытые разделы" из состояния подключённых скрытых разделов;
 - счётчика общего времени работы JaCarta SF/ГОСТ (с начала эксплуатации) в минутах;
 
 - получение комплекса данных для аудита JaCarta SF/ГОСТ.
 
Приведённые выше функции реализуются в процессе обработки набора APDU-команд служебного апплета.
Виртуальный апплет
Виртуальный апплет выполняет следующие функции:
- получение серийного номера ведущего микроконтроллера;
 - получение данных о виртуальном апплете, в частности:
                    
- версии виртуального апплета;
 - признак возможности инвалидации контрольной суммы векторов прерываний;
 - контрольной суммы параметров виртуального апплета;
 
 - получение сведений о конфигурации USB-токена JaCarta SF/ГОСТ, в частности
                    
- кода последней ошибки, сохранённого в оперативной памяти;
 - серийного номера смарт-карты;
 - счётчика включений JaCarta SF/ГОСТ;
 - версии JaCarta OS;
 - поля "Служебная информация производства" (mdata);
 
 - получение параметров загрузчика JC SF GOST Booter;
 - управление прошивкой средствами загрузчика JC SF GOST Booter.
 
Приведённые выше функции реализуются в процессе обработки набора APDU-команд виртуального апплета.
Авторизационный апплет
Авторизационный апплет содержит основную логику поддержки карты памяти (управления её жизненными циклами), обеспечения аутентификации и авторизации пользователя для работы с картой памяти, а также защищённую запись и чтение информации с карты памяти USB-токена JaCarta SF/ГОСТ. В частности, авторизационный апплет выполняет следующие функции:
- разметку и переразметку карты памяти на разделы (открытые и скрытые разделы RW и CD-ROM);
 - подключение открытых разделов на постоянной основе для записи и чтения из них (раздел RW) или только чтения (раздел CD-ROM);
 - установку размеров ISO-образов для их последующей записи на карту памяти;
 - получение блока служебной информации о карте памяти;
 - удаление с карты памяти всех разделов и обнуление содержимого всех секторов;
 - предоставление программного интерфейса для реализации протоколов аутентификации и авторизации пользователя,
                    подключения скрытых разделов / автономного подключения скрытых разделов на карте памяти, в частности
                    
- получения данных о карте памяти для вычисления ключей авторизации и специального преобразования скрытых разделов;
 - записи мастер-ключа (массива ключей) авторизации / записи ключа (массива ключей) авторизации и передачи данных для вычисления контрольной суммы ключа специального преобразования скрытых разделов;
 - активации мастер-ключа / ключа авторизации;
 - генерации параметров инициализации для USB-токена пользователя;
 - подготовки USB-токена пользователя к автономному подключению скрытых разделов;
 - подключеня скрытых разделов RW и CD-ROM;
 - выработки служебной последовательности для подключения скрытых разделов на USB-токен пользователя;
 - подключения скрытых разделов RW и CD-ROM на USB-токен пользователя в автономном режиме;
 - инициации протокола подключения скрытых разделов RW и CD-ROM на USB-токен пользователя;
 - отключения скрытых разделов RW и CD-ROM.
 
 
Приведённые выше функции реализуются в процессе обработки набора APDU-команд авторизационного апплета.
Блок служебных функций специального процесса
Служебные функции специального процесса включают в себя:
- функции работы с микроконтроллером смарт-карты;
 - функции прикладного уровня работы со смарт-картой;
 - функции прикладного уровня поддержки интерфейса USB CCID;
 - функции прикладного уровня поддержки интерфейса USB;
 - функции поддержки работы с CD-ROM-разделами карты памяти;
 - функции контроля целостности ПО JaCarta OS;
 - функции вычисления контрольных сумм CRC32;
 - функции прикладного уровня для специального преобразования скрытых разделов карты памяти;
 - функции управления ячейкой хранения служебных счётчиков в ЭСППЗУ;
 - функции хранения массива ключей авторизации в ЭСППЗУ;
 - функции прикладного уровня для работы с ЭСППЗУ;
 - функции эмуляции временных дисков на период записи ISO-образов в разделы CD-ROM карты памяти;
 - функции работы с файловой системой;
 - функции прикладного уровня поддержки светодиодного индикатора;
 - функции прикладного уровня для обращения к скрытым разделам карты памяти;
 - функции специального преобразования скрытых разделов карты памяти;
 - функции вычисления контрольной суммы с использованием ключа специальных преобразований;
 - функции вычисления контрольной суммы.
 
Вызов служебных функций осуществляется непосредственно из функциональных модулей (апплетов, диспетчера APDU-команд) специального процесса.
Используемые технические средства
JaCarta OS поставляется в составе USB-токена JaCarta SF/ГОСТ. Помимо указанного аппаратного обеспечения для корректного функционирования программы требуется наличие:
- микроконтроллера смарт-карты с установленными и настроенными на нём компонентами СКЗИ "Криптотокен 2 ЭП";
 - карты microSD (карты памяти).
 
Вызов и загрузка
Загрузка программы JaCarta OS выполняется автоматически при подаче электропитания на микроконтроллеры в составе USB-токена JaCarta SF/ГОСТ.
Входные и выходные данные
Параметры входных и выходных данных программы JaCarta OS при взаимодействии с микроконтроллером смарт-карты определяются спецификациями I2C и ISO/IEC 7816-4.
Параметры входных и выходных данных JaCarta OS при взаимодействии с ПО терминала определяются спецификациями USB, CCID и ISO/IEC 7816-4.
Входные данные
Входными данными JaCarta OS являются APDU-команды, поступающие от ПО терминала.
Выходные данные
Выходными данными JaCarta OS является информация, формируемая
- служебными функциями специального процесса;
 - служебным апплетом;
 - виртуальным апплетом;
 - авторизационным апплетом;
 
а также APDU-команды, передаваемые диспетчером средству криптографической защиты "Криптотокен 2 ЭП".