Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

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

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

Переносимость [ править ]

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  КиБ .

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

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

Особенности [ править ]

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

Упорство
При использовании Java Card объекты по умолчанию хранятся в постоянной памяти (на смарт-картах ОЗУ очень мало, и она используется только для временных или чувствительных к безопасности объектов). Поэтому среда выполнения, а также байт-код были адаптированы для управления постоянными объектами.
Атомарность
Поскольку смарт-карты имеют внешнее питание и полагаются на постоянную память, постоянные обновления должны быть атомарными. Таким образом, отдельные операции записи, выполняемые отдельными инструкциями байт-кода и методами API, гарантируются атомарными, а среда выполнения Java Card Runtime включает в себя ограниченный механизм транзакций.
Изоляция апплета
Брандмауэр 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, и единственный способ узнать, какое подмножество спецификации реализовано, - это протестировать карту. [4]

  • Версия 3.1 (17.12.2018) [5]
    • Добавлена ​​настраиваемая поддержка генерации пар ключей, поддержка именованных эллиптических кривых, поддержка новых алгоритмов и операций, дополнительных режимов 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 для всех алгоритмов подписи.
  • Версия 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 . [6]

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

См. Также [ править ]

  • Java Card OpenPlatform

Ссылки [ править ]

  1. Перейти ↑ Chen, Z. (2000). Технология Java Card для смарт-карт: Руководство по архитектуре и программисту . Серия Java Эддисона-Уэсли. Эддисон-Уэсли. ISBN 978-0-201-70329-0. Проверено 9 апреля 2019 .
  2. ^ Oracle Learning Library ( 30 января 2013 г. ), Разработка приложений для карт Java , получено 18 апреля 2019 г.
  3. ^ Ахмед Патель; Кенан Калайджич; Лале Голафшан; Мона Тагави (2011). «Разработка и реализация инфраструктуры аутентификации с нулевым разглашением для карты Java» . 5 (3). IGI: 1–18. Цитировать журнал требует |journal=( помощь )
  4. ^ «JCAlgTest - база данных поддерживаемых алгоритмов JavaCard» . Проверено 27 января +2016 .
  5. ^ Понсини, Николас. «Представление Java Card 3.1: новые криптографические расширения» . blogs.oracle.com . Проверено 18 апреля 2019 .
  6. ^ Самойлов, Н. (2018). Введение в программирование: научитесь программировать на Java со структурами данных, алгоритмами и логикой . Packt Publishing. п. 13. ISBN 978-1-78883-416-2. Проверено 9 апреля 2019 .

Внешние ссылки [ править ]

  • Обзор Java Card (Oracle)
  • Defcon 21: Тайная жизнь SIM-карт на YouTube
  • JavaCards-OpenSC