Java Card

Java Card

Назад  СодержаниеВперед

ЧТО ТАКОЕ JAVA CARD?

Java Card - это смарт-карта, способная выполнять программы на Java. Спецификация Java Card 2.0 опубликована на Web-узле http://www.javasoft.com/javacard. Там содержится подробная информация о способах построения виртуальной машины Java Card и прикладного программного интерфейса (API) смарт-карт. Минимальные системные требования - наличие 16 Кбайт памяти ROM (read-only memory), 8 Кбайт EEPROM и 256 байт RAM (random access memory).

picture 3
Рис. 3. Архитектура Java Card

Системная архитектура Java Card представлена на рис. 3, из которого видно, что виртуальная машина Java Card находится на более верхнем уровне по сравнению со встроенной операционной системой и функциями специализированных интегральных схем (integrated circuit, IC). Уровень JVM скрывает технологические решения производителя за общим языком и системным интерфейсом. Структура Java Card определяет набор классов прикладного программного интерфейса (API), предназначенного для разработки приложений Java Card, и набор системных служб для нормального функционирования этих приложений. Необходимость дополнительных библиотек, которые реализуют расширенные служебные функции, обеспечивающие безопасность и описывающие системную модель, определяется спецификой решаемых задач. Приложения Java Card называются апплетами. На одной карте может выполняться несколько различных апплетов. Каждый апплет однозначно определяется идентификатором приложения (application identifier, AID), который описывается в пятой части стандарта ISO 7816.

Следует помнить об основных ограничениях смарт-карт. Нельзя приравнивать их к персональным компьютерам. Объем памяти и вычислительная мощность смарт-карт крайне малы, а Java Card 2.0 - это не просто урезанная версия JDK, а весьма специализированный продукт.

СРОК СЛУЖБЫ JAVA CARD

Функционирование Java Card начинается после того, как операционная система, виртуальная машина Java Card, библиотеки классов API и приложения записываются в ROM. Процесс размещения основных программных компонентов, реагирующих на внешние команды, в постоянной памяти микросхемы называется созданием маски. Перед тем как положить Java Card в свой бумажник, необходимо завершить инициализацию и персонализацию карты. Инициализация заключается в загрузке в постоянную память информации общего назначения. Эти данные не являются уникальными, они могут быть одинаковыми для большой партии карт (в качестве примера можно привести сведения об эмитенте).

На следующем этапе, который называется персонализацией, в карту заносится информация, позволяющая однозначно идентифицировать ее владельца. Персонализация может быть физической или электронной. Физическая персонализация заключается в выдавливании или выжигании лазером имени пользователя и номера карточки на ее пластиковом корпусе. Электронная означает загрузку данных о владельце в постоянную память карты. Этими данными могут быть имя пользователя, персональный код или личный идентификационный номер.

Процесс инициализации и персонализации может проводиться по-разному в зависимости от производителя и конкретной модели карты. Чаще всего для хранения этой информации используется постоянная память EEPROM.

Итак, Java Card готова к применению. Ее можно приобрести непосредственно у эмитента или у другого продавца. Карты, распространяемые независимыми продавцами, называются картами общего назначения процесс персонализации у них, как правило, отсутствует.

Теперь вы можете вставить карту в устройство считывания и заставить апплеты, записанные в постоянную память карты, выполнить команды APDU, или же можете загрузить в карту дополнительные апплеты.

Java Card действует до истечения срока службы или до тех пор, пока неисправимая ошибка не заблокирует ее работу.

СРОК СЛУЖБЫ ВИРТУАЛЬНОЙ МАШИНЫ JAVA CARD

В отличие от виртуальной машины Java (JVM), функционирующей на ПК или рабочей станции, виртуальная машина Java Card постоянно находится в активном состоянии.

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

СРОК СЛУЖБЫ АППЛЕТОВ И ОБЪЕКТОВ JAVA CARD

Срок службы апплетов начинается с момента их установки и регистрации в таблице системного реестра и заканчивается после удаления из этой таблицы. Возможность повторного использования свободного пространства, оставшегося после удаления апплета, определяется наличием или отсутствием механизма "сборки мусора". Апплеты в карте находятся в неактивном состоянии до тех пор, пока они явно не будут запущены терминалом.

Объекты создаются в постоянной памяти (например, в EEPROM). Они могут быть потеряны или удалены механизмом "сборки мусора", если на них не ссылаются другие постоянные объекты. Однако запись в EEPROM выполняется на три порядка медленнее по сравнению с записью в RAM.

Доступ к некоторым объектам осуществляется достаточно часто, и содержимое их полей не нужно сохранять в неизменном состоянии. Java Card поддерживает временные (temporary) объекты, хранящиеся в памяти RAM. Если объект объявлен временным, его содержимое не может размещаться в постоянной памяти.

ПОДМНОЖЕСТВО ЯЗЫКА JAVA CARD 2.0

Программы для Java Card, естественно, пишутся на языке Java и компилируются с использованием стандартных компиляторов Java. Однако вследствие ограниченных ресурсов памяти и малой вычислительной мощности не все возможности, описанные в спецификации языка Java, могут быть реализованы в Java Card. В частности, Java Card не обеспечивает:
  • динамическую загрузку классов;
  • диспетчер безопасности;
  • потоки и синхронизацию;
  • клонирование объектов;
  • большинство примитивных типов данных (float, double, long и char).

  •  

     
     
     
     
     
     
     
     
     

    Понятно, что ключевые слова, поддерживающие описанные типы данных, также исключены из языка. Разработчики виртуальных машин могут поддерживать 32-разрядные целые, а также собственные методы апплетов, предназначенных для усовершенствованных смарт-карт с большим объемом памяти. Такие апплеты устанавливаются на карту уже после того, как она выпущена эмитентом.

    ПЛАТФОРМА JAVA CARD 2.0

    Смарт-карты существуют уже около 20 лет, и большинство из них совместимы со стандартами ISO 7816 (части 1-7) или EMV. Стандарт ISO 7816 мы уже рассмотрели. А что представляет собой EMV? EMV, совместимый с Europay, MasterCard и Visa, базируется на стандарте ISO 7816 и обладает дополнительными возможностями поддержки финансовой отрасли. Для обеспечения работы со смарт-картами и приложений была создана платформа Java Card Framework. Она скрывает детали инфраструктуры смарт-карт и предлагает производителям приложений для Java Card относительно простой и открытый программный интерфейс.

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

    БЕЗОПАСНОСТЬ JAVA CARD

    Действие апплетов Java Card ограничивается системой безопасности Java, однако модель безопасности Java Card существенно отличается от стандартной модели, принятой в Java. Java Card не поддерживает класс диспетчера безопасности (Security Manager). Политика безопасности реализуется средствами виртуальной машины.

    Апплеты Java создают объекты, которые в состоянии манипулировать данными и сохранять их. Владельцем объекта является создавший его апплет. Хотя любой апплет может ссылаться на объект, он все же не способен вызывать методы объекта до тех пор, пока не станет владельцем объекта или пока объект не будет совместно использоваться в явном виде. Апплет может разделять свои объекты с каким-то другим апплетом или со всеми апплетами сразу.

    Апплет в архитектуре Java Card является независимой единицей. Его запуск, выполнение и функциональные возможности не оказывают никакого воздействия на другие объекты, хранящиеся в памяти карты.

    ПРИНЦИПЫ ВЗАИМОДЕЙСТВИЯ ОСНОВНЫХ КОМПОНЕНТОВ JAVA CARD

    Среда выполнения Java Card (Java Card Runtime Environment, JCRE) взаимодействует с виртуальной машиной Java Card и классами Java Card Framework. Каждому апплету Java Card соответствует уникальный идентификатор AID, назначаемый JCRE.

    После загрузки апплета в постоянную память карты и установления его связей с Java Card Framework и другими библиотеками начинается последний этап настройки. Общедоступный статический метод установки реализуется классом апплета, он предназначен для создания экземпляра программы и его регистрации в среде JCRE. Поскольку объем памяти карты ограничен, хорошим решением является создание и инициализация объектов на время работы апплета.

    Апплет, хранящийся в памяти карты, остается в неактивном состоянии до тех пор, пока он не будет явно запущен на выполнение. Терминал посылает среде JCRE команду "SELECT APDU". Среда JCRE приостанавливает выполнение активного апплета, вызывает метод завершения его работы и при необходимости очищает память. Затем JCRE помечает апплет, идентификатор AID которого совпадает с идентификатором, заданным в команде "SELECT APDU", и вызывает метод запуска этого апплета на выполнение. Метод запуска координирует проведение необходимых подготовительных операций. Среда JCRE переадресует команды APDU активному апплету до тех пор, пока не будет получена очередная команда "SELECT APDU".

    ЗАКЛЮЧЕНИЕ

    С приходом Java Card мир Java приобрел новую оригинальную платформу. Конечно, для популяризации и широкого распространения Java Card потребуется немало времени и серьезных маркетинговых усилий. Пользователи ждут от разработчиков множество разных приложений и утилит. В то же время с большой долей уверенности можно предсказать, что количество проданных устройств Java Card в ближайшие несколько лет будет измеряться в миллионах. А это значит, что вскоре в вашем бумажнике появится маленькая карточка, предназначенная для хранения персональной информации и выполнения разного рода приложений.


    Платформа Java Card 2.0

    javacard.framework

    Это базовый пакет карты. Он определяет классы Applet и PIN, служащие для построения основных блоков программ Java Card и команд APDU, операционной системы и утилит, обеспечивающих реализацию сервисных функций Java Card, таких как управление командами APDU и совместное использование объектов.

    javacardx.framework

    Этот пакет предлагает объектно-ориентированную архитектуру файловой системы, совместимой со стандартом ISO 7816-4. Он поддерживает элементарные файлы (elementary files, EF), выделенные файлы (dedicated files, DF), а также ориентированные на работу с файлами команды APDU, определенные в стандарте ISO 7816.

    javacardx.crypto и javacardx.cryptoEnc

    Эти два пакета реализуют криптографические возможности, поддерживаемые смарт-картами.


    Назад  СодержаниеВперед