Interested Article - Java Card
- 2021-02-13
- 1
Java Card — версия Java -платформы для устройств с крайне ограниченными вычислительными ресурсами. По сравнению с другими версиями Java изменен байткод, требования к исполняющей платформе, состав стандартных библиотек.
Основное назначение продукта, как следует из названия, — применение в смарткартах . В связи с этим основной упор был сделан на поддержку стандартных криптоалгоритмов.
Java Card дает возможность безопасным образом устанавливать и исполнять небольшие Java -приложения ( апплеты ) на смарт-картах и других устройствах с весьма ограниченным объёмом памяти . Эта платформа позволяет поставщику программировать устройства и делать их адаптированными под конкретное применение. Java Card широко используется в SIM-картах и банкоматах . Разработана компанией Schlumberger , представлена публике 29 октября 1996 года несколькими компаниями, включая тогдашнее подразделение Schlumberger по производству смарт-карт (теперь компания Gemalto ). Программная платформа Java Card описывается спецификациями, разрабатываемыми компанией Sun Microsystems . Кроме того, (организация по стандартизации) разрабатывает стандарты для безопасной установки апплетов Java Card на устройства.
Портируемость
Java Card описывает стандартную среду исполнения на смарт-картах с целью дать возможность одному и тому же приложению работать на различных устройствах, так же, как апплеты Java SE / Java EE исполняются на различных по программной и аппаратной части компьютерах, а мидлеты Java ME — на различных телефонах. Как и в более сложных платформах Java, это достигается комбинацией виртуальной машины (Java Card Virtual Machine, JCVM ) и стандартизированной библиотеки классов, что позволяет апплету значительно абстрагироваться от особенностей конкретных моделей смарт-карт . Однако это все же не дает полной гарантии переносимости приложения на любую смарт-карту, поскольку остаются такие факторы, как объём памяти, производительность, или доступность особых интерфейсов (например, коммуникационных протоколов или криптографических алгоритмов).
Java Card OpenPlatform ( JCOP )
JCOP — это комплекс мер для разработки единого стандарта операционной системы с виртуальной машиной Java Card для систем сильной идентификации личности и платежных систем. Разработана IBM с широкой интеграцией с организациями , ICAO . На сегодня является практически синонимом JCVM .
Безопасность
Безопасность данных на смарт-картах была одним из основных приоритетов при разработке Java Card . Она обеспечивается различными свойствами платформы:
- Сокрытие данных . Приложения запускаются в изолированной среде ( виртуальная машина Java Card) и могут получать доступ к операционной системе и аппаратному обеспечению только через специализированные интерфейсы .
- Экран (экранирование) апплетов ( англ. Application Firewall ). Несколько апплетов может быть активно одновременно, однако они изолированы по модели « песочницы »: приложению выделяется контекст , к данным которого оно имеет доступ. Данные других приложений ограждены экраном. Для обеспечения совместной работы нескольких приложений есть механизм переключения контекстов, который выполняется через процесс, контролируемый виртуальной машиной .
- Криптография . Поддерживаются популярные алгоритмы шифрования, такие, как DES , 3DES , AES , RSA . Также поддерживаются другие криптографические сервисы: цифровые подписи , генерирование электронных ключей и обмен ими.
- Механизм апплетов . Апплет Java Card — это, по сути, конечный автомат , который обрабатывает входящие команды и отвечает, посылая данные или возвращая информацию о статусе.
Отличия Java Card от Java
Язык
На уровне языка Java Card — это подмножество более полных платформ Java : все языковые конструкции Java Card присутствуют в Java и ведут себя в точности так же. Более того, при стандартной последовательности компиляции используется обычный компилятор Java (javac) без каких-либо специальных опций, и лишь потом результат обрабатывается специфичной для Java Card программой, чтобы получить файл, который можно будет установить на смарт-карту. Однако многие возможности языка Java не поддерживаются в Java Card, например, типы char , double , float и long , ключевое слово transient , перечислимые типы ( enum ), многомерные массивы, финализаторы , клонирование объектов, потоки .
Байткод
Байткод, выполняемый виртуальной машиной Java Card, функционально является подмножеством , однако он кодируется иным образом для минимизации размера приложения. Таким образом, апплет Java Card обычно занимает меньше места, чем гипотетический апплет Java SE , полученный компилированием того же исходного кода. Такая экономия памяти смарт-карты имеет и обратную сторону: отсутствие поддержки некоторых свойств языка (как описано выше) и ограничение по размеру апплета. Существуют возможности обойти ограничение на размер: например, разделив код приложения на пакеты не более 64 кБ каждый.
Разработка
Приемы программирования, используемые в типичном приложении Java Card, значительно отличаются от применяемых в Java SE. Однако тот факт, что Java Card является строгим подмножеством языка Java, значительно ускоряет обучение этой технологии, а также позволяет использовать среду Java SE для разработки и отладки приложений. Более того, можно совместно запускать и отлаживать в одной среде и приложение для Java Card, и его серверную часть, которую предполагается выполнять на PC.
Однако при этом следует периодически проверять, что приложение соответствует ограничениям Java Card, компилируя его в соответствующий байткод, а также проверять его работу на настоящей смарткарте, чтобы получить представление о производительности реального устройства.
Ссылки
См. также
Примечания
- U.S. provisional application Serial No. 60/029,057, filed Oct. 25, 1996, non-provisional application No. 957512 filed on 10/24/1997, issued as patent
- Sun Microsystems Announces Java Card API , Business Wire, Oct. 29, 1996
- . Дата обращения: 2 августа 2008. 20 июля 2008 года.
- . Дата обращения: 8 августа 2008. 29 мая 2008 года.
- 2021-02-13
- 1