Доклады, выступления, видео и электронные публикации

ПСКЗИ Шипка: Поддержка Java

Матвей Муха

Презентация: скачать.

ПСКЗИ ШИПКА представляет собой специализированное мобильное устройство, позволяющее надежно выполнять криптографические преобразования и хранить ключи. Криптографическая функциональность включает в себя шифрование, ЭЦП, вычисление хэш-функций, генерацию ключей, долговременное хранение ключей и сертификатов.

Возможности ПСКЗИ Шипка определяются заранее предопределенным набором, устанавливаемым встроенным программным обеспечением устройства. Расширение функциональности устройства возможно путем обновления внутреннего программного обеспечения специальным безопасным способом. Однако, новые версии программы, выполняемой в Шипке, могут быть выпущены лишь производителем устройства. Возникает потребность предоставить возможность пользователям устройства написание и загрузки сторонних приложений на ПСКЗИ Шипка.

Существует два подхода к решению такого рода задач. Первый подход состоит в предоставлении способа исполнения на устройстве сторонних программ, разработанных под архитектуру процессора устройства и скомпилированных в машинный код процессора (программы можно писать, наприсмер, на Си или ассемблере). Второй способ состоит в предоставлении возможности загружать программы на интерпретируемом языке и выполнение их в виртуальной машине на устройстве (программы можно писать в том числе на Java или Python).

Программы, написанные на интерпретируемых языках менее гибки и обладают меньшим быстродействием, чем программы на Си или ассемблере. Но при этом они обеспечивают способ предоставить ограниченный, но контролируемый интерфейс программирования. У программы, написанной пользователем, отсутствует возможность своей неправильной работой нарушить функционирование устройства, нарушить данные или код, не принадлежащие программе, что особенно важно для криптографического устройства. Так как большинство кода, зависящего от аппаратной части, является частью виртуальной машины, пользователь может сосредоточиться на самом приложении. Если у пользователя появляется устройство с установленным интерпретатором, ему не обязательно думать о самом аппаратном обеспечении. Более того, ему не нужны компиляторы для устройства. Все что ему нужно — это стандартный компилятор используемого языка программирования. С аппаратной абстракцией, которую предоставляют виртуальные машины, пользователю даже нет нужды учитывать тип процессора, на котором основано устройство.

В свете вышеизложенного наиболее удачным выбором для устройств класса ПСКЗИ Шипка является использование интерпретируемого языка программирования и виртуальной машины.

Для ПСКЗИ Шипка была реализована виртуальная машина языка java. Так как устройство обладает весьма ограниченными вычислительными ресурсами и объемом оперативной памяти и памяти команд, то виртуальная машина поддерживает лишь часть языка java и стандартной библиотеки и некоторые методы, относящиеся к взаимодействию java программ с функциями ПСКЗИ Шипка.

Реализация рассчитана на использование как можно меньшего количества ресурсов при работе. Виртуальная машина и несколько нативных классов, помещается в 8 килобайт флеш памяти команд микроконтроллера AVR ATmega128 (из 128 возможных), использующегося в ПСКЗИ Шипка. В работе виртуальная машина использует 256 байт оперативной памяти (из 4096, предоставляемый микроконтроллером).

Виртуальная машина обладает следующими характеристиками:

• Поддержку стандартного байткода Java

• 15 или 31 битовая целочисленная арифметикя (по выбору)

• Возможность включить поддержку арифметики с плавающей точкой

• Сборщик мусора

• Протестирована с Suns JDK и IBMs jike

• Поддерживает наследование

• Объединенная архитектура стека и кучи

• Быстродействие на уровне 40 тысяч команд в секунду

• Поддерживаемые нативные классы включают:

- java/lang/Object

- java/lang/System

- java/io/PrintStream

- java/lang/StringBuffer

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

Виртуальная машина использует свой формат файлов, отличный от class файлов java. Перед тем, как загрузить приложение в ПСКЗИ Шипка, class файлы, получившиеся при компиляции необходимо при помощи специальной программы преобразовать во внутренний формат виртуальной машины. Это преследует следующие цели:

• Уменьшается размер файлов

• Все зависящие друг от друга class файлы соединяются в один файл

• Происходит оптимизация кода

В программном обеспечении ПСКЗИ Шипка для персонального компьютера предусмотрен специальный программный интерфейс управления виртуальной машиной, при помощи которого можно выполнять следующие действия:

• Приложения могут быть загружены в ПСКЗИ Шипка (максимально доступная память для хранения приложений — 8 мегабайт).

• Приложение может быть удалено из ПСКЗИ Шипка.

• Запуск приложения. При этом ПСКЗИ Шипка передается имя приложения и данные, которые приложению необходимо обработать. Приложение запускается и при помощи специальных нативных классов может получить доступ к переданному буферу. После обработки данных приложение может записать результат вычислений в буфер, который после завершения выполнения приложения передается назад программе, обращавшейся к ПСКЗИ Шипка.

Реализованная виртуальная машина языка java позволяет пользователем ПСКЗИ Шипка писать и выполнять приложения на устройстве. При этом достигается приемлемый уровень быстродействия и обеспечивается контролируемая среда выполнения программ.

Автор: Муха М. Д.

Дата публикации: 01.01.2009

Библиографическая ссылка: Муха М. Д. ПСКЗИ ШИПКА: Поддержка Java // Комплексная защита информации. Материалы XIV международной конференции (19–22 мая 2009 года). Мн., 2009. С. 171–172.


Scientia potestas est
Кнопка связи