Java Card

редактировать
Смарт-карта

Карта Java относится к программная технология, позволяющая безопасно запускать приложения на основе Java (апплеты ) на смарт-картах и подобных устройствах с малым объемом памяти. Java Card - самая маленькая из платформ Java, предназначенная для встраиваемых устройств. Java Card дает пользователю возможность программировать устройства и настраивать их для конкретных приложений. Он широко используется в картах ATM. Первая карта Java Card была представлена ​​в 1996 году подразделением карт Schlumberger, которое позже объединилось с Gemplus и образовало Gemalto. Продукты Java Card основаны на спецификациях платформы Java Card Platform, разработанных Sun Microsystems (позже дочерней компанией Oracle Corporation ). Многие продукты для карт Java также полагаются на спецификации GlobalPlatform для безопасного управления приложениями на карте (загрузка, установка, персонализация, удаление).

Основными целями разработки технологии Java Card являются мобильность и безопасность.

Содержание

  • 1 Портативность
  • 2 Безопасность
  • 3 Дизайн
    • 3.1 Байт-код
    • 3.2 Библиотека и время выполнения
    • 3.3 Особенности
    • 3.4 Разработка
  • 4 Версии
  • 5 Java Card 3.0
  • 6 См. также
  • 7 Ссылки
  • 8 Внешние ссылки

Переносимость

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

Безопасность

Технология Java Card изначально была разработана с целью защиты конфиденциальной информации, хранящейся на смарт-картах. Безопасность определяется различными аспектами этой технологии:

Инкапсуляция данных
Данные хранятся в приложении, а приложения Java Card выполняются в изолированной среде (виртуальная машина Java Card), отдельно от базового операционная система и оборудование.
Брандмауэр апплета
В отличие от других виртуальных машин Java, виртуальная машина Java Card обычно управляет несколькими приложениями, каждое из которых контролирует конфиденциальные данные. Таким образом, различные приложения отделены друг от друга брандмауэром апплета, который ограничивает и проверяет доступ элементов данных одного апплета к другому.
Криптография
Обычно используемые алгоритмы с симметричным ключом, такие как DES, Triple DES, AES и алгоритмы асимметричного ключа, такие как RSA, криптография эллиптической кривой, а также другие криптографические такие услуги, как подписание, генерация ключей и обмен ключами.
Аплет
Апплет - это конечный автомат, который обрабатывает только входящие запросы команд и отвечает, отправляя данные или слова состояния ответа обратно на интерфейсное устройство.

Дизайн

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

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

Байт-код

Байт-код Java Card, выполняемый виртуальной машиной Java Card, является функциональным подмножеством байт-кода Java 2, выполняемого стандартной виртуальной машиной Java, но с другой кодировкой оптимизировать по размеру. Таким образом, апплет Java Card обычно использует меньше байт-кода, чем гипотетический Java-апплет, полученный путем компиляции того же исходного кода Java. Это экономит память, что необходимо для устройств с ограниченными ресурсами, таких как смарт-карты. В качестве компромисса с дизайном нет поддержки некоторых функций языка Java (как упоминалось выше) и ограничений по размеру. Существуют методы преодоления ограничений по размеру, такие как разделение кода приложения на пакеты, размер которых меньше 64 KiB.

Библиотека и среда выполнения

Стандартная библиотека классов Java Card и поддержка среды выполнения сильно отличаются от таковой в Java, и общее подмножество минимально. Например, класс Java Security Manager не поддерживается в Java Card, где политики безопасности реализуются виртуальной машиной Java Card; и переходные процессы (непостоянные, быстрые переменные RAM, которые могут быть членами класса) поддерживаются через библиотеку классов Java Card, в то время как они имеют поддержку собственного языка в Java.

Особые функции

Среда выполнения Java Card и виртуальная машина также поддерживают функции, характерные для платформы Java Card:

Стойкость
С Java Card объекты по умолчанию хранится в постоянной памяти (оперативной памяти на смарт-картах очень мало, и она используется только для временных или важных для безопасности объектов). Таким образом, среда выполнения, а также байт-код были адаптированы для управления постоянными объектами.
Атомарность
Так как смарт-карты получают внешнее питание и полагаются на постоянную память, постоянные обновления должны быть атомарными. Таким образом, отдельные операции записи, выполняемые отдельными инструкциями байт-кода и методами API, гарантируются атомарными, а среда выполнения Java Card включает в себя ограниченный механизм транзакций.
Изоляция апплета
Брандмауэр Java Card - это механизм, который изолирует различные апплеты, присутствующие на карте, друг от друга. Он также включает механизм совместного использования, который позволяет апплету явно делать объект доступным для других апплетов.

Разработка

Методы кодирования, используемые в практической программе Java Card, значительно отличаются от тех, которые используются в программе Java. Тем не менее, эта Java Card использует точное подмножество языка Java, ускоряет процесс обучения и позволяет использовать среду Java для разработки и отладки программы Java Card (предостережение: даже если отладка происходит с помощью байт-кода Java, убедитесь, что файл класса соответствует ограничению языка Java Card, преобразовывая его в байт-код Java Card; и протестируйте на реальной смарт-карте Java Card на раннем этапе, чтобы получить представление о производительности); кроме того, можно запускать и отлаживать как код Java Card для приложения, которое будет встроено в смарт-карту, так и приложение Java, которое будет находиться на хосте с помощью смарт-карты, и все они будут работать совместно в одной среде.

Версии

Oracle выпустила несколько спецификаций платформы Java Card и предоставляет инструменты SDK для разработки приложений. Обычно поставщики смарт-карт реализуют только подмножество алгоритмов, указанных в целевой платформе Java Card, и единственный способ узнать, какая часть спецификации реализована, - это проверить карту.

  • Версия 3.1 (17.12.2018)
    • Добавлена ​​поддержка настраиваемой генерации пары ключей, поддержка именованных эллиптических кривых, поддержка новых алгоритмов и операций, дополнительных режимов AES и китайских алгоритмов.
  • Версия 3.0.5 (03.06.2015)
    • Oracle SDK: Java Card Classic Development Kit 3.0.5u1 (03.06.2015)
    • Добавлена ​​поддержка модульного возведения в степень Диффи-Хеллмана, сохранения данных домена для ключей Диффи-Хеллмана, эллиптических кривых и ключей DSA, RSA-3072, SHA3, plain ECDSA, AES CMAC, AES CTR.
  • Версия 3.0.4 (06.08.2011)
    • Oracle SDK: Java Card Classic Development Kit 3.0.4 (06.11.2011)
    • Добавлена ​​поддержка DES MAC8 ISO9797.
  • Версия 3.0.1 (15.06.2009)
    • Oracle SDK: Java Card Development Kit 3.0.3 RR (11.11.2010)
    • Добавлена ​​поддержка SHA-224, SHA-2 для всего алгоритма подписи hms.
  • Версия 2.2.2 (03.2006)
    • Oracle SDK: Java Card Development Kit 2.2.2 (03.2006)
    • Добавлена ​​поддержка SHA-256, SHA-384, SHA- 512, ISO9796-2, HMAC, корейский SEED MAC NOPAD, корейский SEED NOPAD.
  • Версия 2.2.1 (10.2003)
    • Oracle SDK: Java Card Development Kit 2.2.1 (10.2003)
  • Версия 2.2 (11.2002)
    • Добавлена ​​поддержка инкапсуляции ключей шифрования AES, алгоритмов CRC, инкапсуляции ключей криптографии с эллиптическими кривыми, обмена ключами Диффи-Хеллмана с использованием ECC, ключей ECC для двоичных полиномиальных кривых и для простых целочисленных кривых, AES, ECC и RSA с переменной длиной ключа.
  • Версия 2.1.1 (18.05.2000)
    • Oracle SDK: Java Card Development Kit 2.1.2 (05.04.2001)
    • Добавлена ​​поддержка RSA без заполнения.
  • Версия 2.1 (07.06.1999)

Java Card 3.0

Версия 3.0 спецификации Java Card (черновик выпущен в марте 2008 г.) разделена на две редакции: Classic Edition и Connected Edition.

  • Classic Edition (в настоящее время версия 3.0.5 выпущен в июне 2015 г.) является развитием платформы Java Card Platform версии 2 (последняя версия 2.2.2 была выпущена в марте 2006 г.), которая поддерживает традиционные апплеты карт на устройствах с ограниченными ресурсами, таких как смарт-карты. Старые апплеты обычно совместимы с новыми устройствами Classic Edition, а апплеты для этих новых устройств могут быть совместимы со старыми устройствами, если не относятся к новым функциям библиотеки. Смарт-карты, реализующие Java Card Classic Edition, были сертифицированы по безопасности несколькими поставщиками и коммерчески доступны.
  • Connected Edition (в настоящее время версия 3.0.2 выпущена в декабре 2009 г.) предназначена для создания новой виртуальной машины и улучшенная среда выполнения с сетевыми функциями. Приложения можно разрабатывать как классические апплеты карт, запрашиваемые командами APDU, или как сервлеты, использующие HTTP для поддержки сетевых схем связи (HTML, REST, SOAP...) с картой. Среда выполнения использует подмножество 6-байтового кода Java (1.) без плавающей точки; он поддерживает изменчивые объекты (сборка мусора ), многопоточность, средства связи между приложениями, постоянство, транзакции, средства управления картами... По состоянию на 2017 год коммерчески доступные смарт-карты мало использовались, поэтому упоминание Java Card (в том числе на текущей странице Википедии) часто неявно исключает Connected Edition.

См. Также

  • значок Портал компьютерного программирования

Ссылки

Внешние ссылки

Последняя правка сделана 2021-05-24 03:56:58
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте