Научная статья на тему 'Процесс разработки программного обеспечения для Java смарт-карт'

Процесс разработки программного обеспечения для Java смарт-карт Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
645
177
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
JAVA СМАРТ-КАРТЫ / АППЛЕТЫ / АППАРАТНАЯ ЗАЩИТА

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Краснов Никита Олегович

Рассмотрен процесс разработки апплета для Java смарт-карты, исследованы возможности данного аппаратного средства защиты информации.

i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Краснов Никита Олегович

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «Процесс разработки программного обеспечения для Java смарт-карт»

_МЕЖДУНАРОДНЫЙ НАУЧНЫЙ ЖУРНАЛ «СИМВОЛ НАУКИ» №5/2016 ISSN 2410-700X_

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

1. Коник, Н.В. Товарные знаки: монография. - М.: Журн. «Управление персоналом, 2006 - 144 с. ISBN: 59563-0059-0

2. Коник, Н.В. Особенности управления качеством в сельском хозяйстве / Н.В. Коник, О.А. Голубенко, Е.В. Максименко, В.А. Коновалов // Актуальные вопросы науки и техники: Сборник научных трудов по итогам международной научно-практической конференции. - Саратов: Инновационный центр развития образования и науки, 2015.- С. 165-168

3. Коник, Н.В. Современные представления о безопасности и качестве / Н.В. Коник, О.А. Голубенко, О.А. Шутова // Актуальные вопросы науки и техники: Сборник научных трудов по итогам международной научно-практической конференции. - Саратов: Инновационный центр развития образования и науки, 2015. - С. 171-174

4. Максименко, Е.В. Метрологический анализ процессов в сельском хозяйстве / Е.В. Максименко, В.А. Коновалов, Н.В. Коник // Актуальные проблемы ветеринарной медицины, пищевых и биотехнологий: Материалы Всероссийской научно-практической конференции. - Саратов, 2015. С. 311-316.

5. Ребрин Ю.И. Управление качеством. Учебное пособие. Таганрог: Изд-во ТРТУ, 2004. - 174 с.

© Коник Н.В., Прокофьев А.И., 2016

УДК 004.087.5

Краснов Никита Олегович

выпускник СГУ им. Н.Г. Чернышевского

г.Саратов, РФ E-mail: [email protected]

ПРОЦЕСС РАЗРАБОТКИ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ДЛЯ JAVA СМАРТ-КАРТ

Аннотация

Рассмотрен процесс разработки апплета для Java смарт-карты, исследованы возможности данного аппаратного средства защиты информации.

Ключевые слова

Java смарт-карты, апплеты, аппаратная защита.

Введение

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

Рассмотрим процесс разработки программного обеспечения для Java смарт-карт, на примере модели NXP J2A40.

Смарт-карты

Смарт-карты представляет собой пластиковые карты, оснащенные встроенной электронной микросхемой, которая, в основном, состоит из микропроцессора (контактного чипа), операционной системы,

_МЕЖДУНАРОДНЫЙ НАУЧНЫЙ ЖУРНАЛ «СИМВОЛ НАУКИ» №5/2016 ISSN 2410-700X_

контролирующего устройства.

Смарт-карты можно подразделить на контактные и бесконтактные. Контактные карты, в свою очередь, обладают высокой степенью защиты данных, надежностью и широкой сферой применения: здравоохранение, транспортные, социальные проекты, банковские операции и т.д. В зависимости от выполняемых функций смарт-карты можно разделить на три типа: карты-счетчики, карты с памятью, микропроцессорные карты.

Карты-счетчики. Этот вид смарт-карт применяется для такого типа расчетов, когда требуется вычитание фиксированной суммы за каждую платежную операцию. Такие карты-счетчики применяются при подписке на платное телевидение, при оплате за проезд, автостоянку и т.п. [1]

Карты с памятью. Этот вид смарт-карт оснащен памятью и выделен весьма условно, он является промежуточным между картами-счетчиками и микропроцессорными картами. Карты подобного типа, в основном, используются для хранения информации о пользователе. Существуют два подтипа подобных карт: с незащищенной и с защищенной памятью. Они отличаются друг от друга степенью защищенности от несанкционированного доступа к данным карты. Второй тип в этом отношении обладает более высоким «интеллектом», но не сравнится с микропроцессорными. Карты с незащищенной памятью называют еще картами с полнодоступной памятью, т.е. можно читать и изменять данные без введения специального кода доступа. Память в таких картах можно программировать, копировать или обновлять при помощи определенных команд. Карты с незащищенной памятью очень опасно использовать в качестве платежных. В моделях с защищенной памятью предусмотрен специальный механизм для редактирования и удаления информации. Чтобы получить разрешение на чтение или стирание данных, нужно предъявить карте секретный код для установления связи с ключом защиты внутри карты. Если код идентифицирован, сама карта «сообщит» об этом устройству чтения/записи, и вы получите разрешение на проведение платежей. [1] Микропроцессорные карты. Это наиболее современные разработки в области смарт-карт и их область применения гораздо больше. Они используются для выполнения задач, требующих сложной обработки информации. Микропроцессорная карта содержит микроконтроллер, центральный процессор. Такие карты оснащены встроенной операционной системой, выполняющей набор необходимых сервисных операций и оснащенной всеми средствами безопасности.

Вся информация представлена в виде многоуровневой структуры, разделенной на блоки и разграничивающей доступ к информации.

В микропроцессорных картах могут быть встроены традиционные зарубежные криптографические алгоритмы, обеспечивающие шифрование информации и проверку цифровой подписи. [1] Java смарт-карты

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

Проведя исследования возможностей Java смарт-карт, можно сказать следующее: апплеты пишутся на слегка усеченном варианте языка Java, затем компилируются в байт-код обычным Java-компилятором, в результате чего получаются *.class файлы, и преобразовываются специальной программой-конвертером для непосредственной загрузки в карту, как правило, в *.cap или *.ijc файлы. Из-за ограничений, накладываемых ресурсами карты, большинство из них поддерживают только одно- или двухбайтовые типы данных, такие как: byte, short. Вариант языка Java, используемый для написания апплетов облегчен таким образом, чтобы апплеты были максимально быстрыми и компактными. Например, из языка убрана поддержка таких типов, как string, а большая часть карточек не поддерживает long. [2, с. 2-4]

Общение с такой картой осуществляется посредством передачи APDU (application protocol data unit) команд (рисунок 1), в ответ карта может ответить двухбайтовым кодом: либо кодом ошибки, либо кодом, означающим успешное выполнение операции (как правило, 0x90 0x00).

Рисунок 1 - Структура APDU команды.

_МЕЖДУНАРОДНЫЙ НАУЧНЫЙ ЖУРНАЛ «СИМВОЛ НАУКИ» №5/2016 ISSN 2410-700X_

Вместе с кодом успешного исполнения операции карта может передать приложению поток байт, соответствующий результату исполнения команды, например, расшифрованные данные. APDU команда имеет секцию заголовка и секцию данных. Длина заголовка равна 5 байтам:

• первый байт называется классом инструкции (CLA), он обычно имеет значение либо 0, либо 0x80, представленное в шестнадцатиричном виде;

• второй байт - код инструкции (INS), по данному коду производится управление загруженными на карту апплетами;

• третий и четвертый байты - параметры (P1, P2), используются в некоторых служебных операциях;

• пятый байт - длина передаваемых данных (Lc). [3, с. 8-12]

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

В Java-карту владельцем может быть загружен один или несколько апплетов, реализующих практически любые алгоритмы. Но эти апплеты не могут быть прочитаны из карты никем, включая владельца карты, т.к. апплет можно только стереть и записать новый на его место, т.е. всё общение с картой сводится к передачи апплету некоторой команды и получение ответа. Таким образом, смарт-карта представляет собой идеальный «черный ящик».

Прежде чем использовать возможности апплета, хранящегося в смарт-карте, необходимо его загрузить. Рассмотрим данный процесс на примере простой программы, которая проверяет введенный код доступа и, если он верный, возвращает нам последовательность байт, 0x68, 0x65, 0x6C, 0x6C, 0x6F записанных в шестнадцатиричном виде.

package com.jc; import javacard.framework.*; public class TApplet extends Applet {

private final static byte[] defaultPIN = new byte[]{5, 5, 5, 5};

private final static byte[] helloCode = new byte[]{104, 101, 108, 108, 111};

private final static byte PINTRYLIMIT = (byte) 0x05;

private final static byte MAXPINSIZE = (byte) 0x08;

public final static byte LOGIN = (byte) 0x61;

public final static byte GET = (byte) 0x62;

public final static short AUTHERROR = (short) 0xff90;

private OwnerPINpin;

protected TApplet() {

pin = new OwnerPIN(PIN_TRY_LIMIT, MAXPINSIZE); pin.update(defaultPIN, (byte) 0, (byte) defaultPIN.length);

register(); }

public static void install(byte[] bArray, short bOffset, byte bLength) {

new TApplet(); }

public voidprocess(APDUapdu) {

byte[] buffer = apdu.getBuffer();

if (buffer[ISO7816.OFFSETINS] == (byte) (0xA4)) {

return; }

switch (buffer[ISO7816. OFFSET INS]) { case LOGIN:

_МЕЖДУНАРОДНЫЙ НАУЧНЫЙ ЖУРНАЛ «СИМВОЛ НАУКИ» №5/2016 ISSN 2410-700X_

checkLogin(apdu);

return;

case GET:

get(apdu);

return;

default:

ISOException. throwIt(ISO 7816. SWINSNOTSUPPORTED); }

}

private void checkLogin(APDUapdu){ byte[] buffer = apdu.getBuffer();

byte byteRead = (byte)(apdu.setIncomingAndReceive()); if (!pin.check(buffer, ISO7816. OFFSET CDATA, byteRead))

ISOException. throwIt(pin. getTriesRemaining()); }

private void get(APDU apdu) { if (!pin.isValidated()) ISOException. throwIt(AUTHERROR); apdu.setOutgoing();

apdu.setOutgoingLength((short) helloCode.length);

apdu.sendBytesLong(helloCode, (short) 0, (short) helloCode.length); }

}

В данном апплете выделяются методы install и process. Они являются переопределенными методами классаjavacard.framework.Applet. Метод install вызывается один раз при установке апплета на карту и должен создать единственный экземпляр класса. Для контроля над созданием экземпляров конструктор имеет модификатор доступа protected, это делается по причине ограниченности памяти карты и отсутствия сборщика мусора. В конструкторе определяется код доступа к карте, положим его равным 0x5, 0x5, 0x5, 0x5 в шестнадцатиричной системе счисления. Метод process вызывается каждый раз при посылке APDU команд смарт-карте. Для получения доступа к карте, и последовательности байт необходимо послать соответствующие APDU команды из таблицы 1.

Таблица 1

Используемые APDU команды.

Назначение CLA INS P1 P2 Lc Data field

Проверка кода доступа 0x80 0x61 0 0 0x04 0x5, 0x5, 0x5, 0x5

Получение последовательности байт 0x80 0x62 0 0 0 -

Подготовленный программный код необходимо скомпилировать в байт-код при помощи компилятора Java, при этом необходимо указать компилятору, что делать это нужно в режиме совместимости с версией Java 1.5. Делается это потому, что Java смарт-карты поддерживают усеченную версию языка Java, который почти эквивалентен указанной выше версии языка. После компиляции в байт-код, необходимо подготовить специальный файл формата .cap, который далее будет загружен в память смарт-карты. Для упрощения процесса разработки использовался сборщик проектов Ant, инструкция для которого представлена ниже. <?xml version="1.0"?>

<project name="Java Card(TM) Tasks Sample" default="all" basedir=". "> <property name="sourceroot" value="./src"/> <property name="classroot" value = "./classes "/> <property name="samples.eeprom" value="eeprom"/>

_МЕЖДУНАРОДНЫЙ НАУЧНЫЙ ЖУРНАЛ «СИМВОЛ НАУКИ» №5/2016 ISSN 2410-700X_

<property name="samples.scripts" value="scripts"/> <property name="exportmap" value= "exportmap"/> <property name="jcardkithome" value="C: \jc_sdk"/>

<property name="jcardkit_exports" value="${jcardkit_home}/api_export_files"/> <taskdef name = "convert" classname="com.sun.javacard.ant.tasks.ConverterTask" classpath="${jcardkit_home}/ant-tasks/lib/jctasks.jar " />

<path id="classpath" description="Sets the classpath to Java Card API and tools">

<pathelement path="${jcardkit_home}/lib/api.jar"/>

<pathelement path="${jcardkit_home}/lib/converter.jar"/>

<pathelement path="${jcardkit_home}/lib/offcardverifier.jar"/>

<pathelement path="${jcardkit_home}/lib/scriptgen.jar"/>

<pathelement path="${jcardkit_home}/lib/apdutool.jar"/>

<pathelement path="${jcardkit_home}/lib/apduio.jar"/>

<pathelementpath=". "/>

</path>

<path id="export" description="set the export file path"> <pathelement path="${jcardkit_exports}"/> <pathelement path="./classes"/> </path>

<target name="compile_sources" description="Build classes "> <mkdir dir="${classroot}"/>

<javac debug="yes" optimize="no"srcdir="${sourceroot}/com/jc"destdir="${classroot}" includeantruntime = "false " target="1.5 "> <classpath refid="classpath"/> </javac> </target>

<target name="convert" depends="compile_sources">

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

<convert dir="${classroot}/" Configfile="src/com/jc/TApplet.opt">

<classpath refid="classpath"/>

</convert>

</target>

<target name="clean"> <delete dir="${classroot}"/> <delete dir="${samples.eeprom}"/> </target>

<target name="all" depends="clean, convert"/> </project>

Для формирования файла .cap, который используется для загрузки на смарт-карты, необходимо создать файл TApplet.opt, содержимое которого представлено ниже, положить его рядом с TApplet.java и запустить сборщик проектов Ant.

-out EXP JCA CAP -exportpath "C:\jc_sdk\api_exportJiles\"

-applet 0xa0:0x1:0x1:0x1:0x62:0x3:0x1:0xc:0x1:0x1 com.jc.TApplet com.jc

0xa0:0x1:0x1:0x1: 0x62:0x3:0x1: 0xc: 0x11.0

В файле TApplet.opt указываются два уникальных значения в шестнадцатеричном виде - это идентификаторы апплета, или AID, (0xA0, 0x1, 0x1, 0x1, 0x62, 0x3, 0x1, 0xC, 0x1, 0x1) и его пакета (0xA0, 0x1, 0x1, 0x1, 0x62, 0x3, 0x1, 0xC, 0x1), также необходимо прописать путь к Java классу. Идентификатор, в данном случае, может быть длины от 5 до 16 байт, именно по нему происходит обращение к апплету через APDU

МЕЖДУНАРОДНЫЙ НАУЧНЫЙ ЖУРНАЛ «СИМВОЛ НАУКИ» №5/2016 ISSN 2410-700X

команды.

После формирования .cap файла нужно загрузить его на смарт-карту. Для этого используется свободно распространяемое программное обеспечение «GPShell» [4], оно позволяет облегчить монотонные действия по написанию инструкций в бинарном виде. Инструкция, применяемая для загрузки апплета, приведена ниже.

mode_211

enabletrace

enabletimer

establishcontext

cardconnect

select -AID a000000003000000

open sc -security 1 -keyind 0 -keyver 0 -mackey 404142434445464748494a4b4c4d4e4f-enckey 404142434445464748494a4b4c4d4e4f // Open secure channel delete -AID a00101016203010c0101 delete -AID a00101016203010c01

install -file ../classes/com/jc/javacard/jc.cap -nvDataLimit 2000 -instParam 00 -priv 2

carddisconnect

releasecontext

В результате запуска инструкции апплет будет загружен в память смарт-карты. Для его проверки также воспользуемся программой «GPShell». Инструкция, применяемая для проверки, приведена ниже. mode_211 establishcontext enabletrace cardconnect

select -AID a00101016203010c0101 sendapdu -sc 0 -APDU806100000405050505 sendapdu -sc 0 -APDU8062000000 carddisconnect releasecontext

Для выбора апплета используется команда select -AID a00101016203010c0101 где указывается его идентификатор. Для отправки APDU команды, которая проверит код доступа, используется инструкция send apdu -sc 0 -APDU 80610000040505050, после этого можно запросить последовательность байт -send apdu -sc 0 -APDU8062000000. Рассмотрим результат выполнения инструкций на рисунке 2.

Администратор: C:\Wind ows\system32\cmd.K<e

release_contextcommand ti me: 0 ms

D:\cw5\upload>gpshell t.txt mode_211

establish_context enabl e_trace car cLconnect

select -AID a00101D162QDD10cDl Command --> ООА4040009Й00101016203010С01 Wrapped command --> 00A4040009A00101016203010C01 Response <-- 9000

send_apdu -sc 0 -APDU Ё06100000405050505 Command --> 806100000405050505 Wrapped command --> Ё06100000405050505 Response <-- 9000

send_APDUО returns 0x80209000 (9000: Success. No error.)

send_apdu -sc 0 -APDU Ё062000000

Command --> 8062000000

Wrapped command --> Ё062000000

Response <— 68656C6C6F9000

send_APDUО returns 0x80209000 (9000: Success. No error.) card_di sconnect release_context

D:\cw5\upload>_

Рисунок 2 - Результат выполнения инструкций «GPShell».

_МЕЖДУНАРОДНЫЙ НАУЧНЫЙ ЖУРНАЛ «СИМВОЛ НАУКИ» №5/2016 ISSN 2410-700X_

Обратим внимание на надпись «Response <-- 68656C6C6F9000», здесь последовательность 68656C6C6F - это результат выполнения APDU команды 8062000000, а 9000 - код возврата. Заключение

Т.о. был рассмотрен весь процесс разработки апплетов для Java смарт-карт, на примере NXP J2A40. Описанный процесс позволяет расширить функционал Java смарт-карт и реализовать полезные функции, например, по обеспечению безопасности.

Список использованной литературы

1. Смарт-карты [Электронный ресурс] // ZontCard [Электронный ресурс]. URL: http://www.zontcard.ru/forms_card/smart-karta/ (дата обращения: 10.05.2016). Загл. с экрана. Яз. рус.

2. Virtual Machine Specification Java Card™ Platform, Version 2.2.2 // Java Community Process. URL: http : //download. oracle .com/otn-pub/j cp/j ava_card_kit-2.2.1 -fr-oth-J Spec/j ava_card_kit-2_2_1 -fr-spec. zip (дата обращения: 10.05.2016).

3. Runtime Environment Specification, Java Card Platform, Version 2.2.2 // Java Community Process. URL: http : //download. oracle .com/otn-pub/j cp/j ava_card_kit-2.2.1 -fr-oth-J Spec/j ava_card_kit-2_2_1 -fr-spec. zip (дата обращения: 10.05.2016).

4. GlobalPlatform [Электронный ресурс] // Sourceforge [Электронный ресурс]. URL: http://sourceforge.net/projects/globalplatform/?source=navbar (дата обращения: 10.05.2016). Загл. с экрана. Яз. англ.

© Краснов Н.О., 2016

УДК 004.8

Лавренков Юрий Николаевич

канд. техн. наук, доцент КФ МГТУ им. Н.Э. Баумана,

г. Калуга, РФ, e-mail: [email protected]

ОРГАНИЗАЦИЯ КОЛЕБАТЕЛЬНОГО РЕЖИМА РАБОТЫ В ОДНОРОДНЫХ ВЗАИМОДЕЙСТВУЮЩИХ НЕЙРОННЫХ КОЛЬЦАХ

Аннотация

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

Ключевые слова

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

Популяционные алгоритмы оптимизации, инспирированные неживой природой, алгоритмы эволюции разума и стохастического диффузионного поиска требуют применения не классических генераторов случайных чисел, а хаотических последовательностей, позволяющих выполнить равномерное распределение индивидов в области поиска оптимального решения [1]. Для решения проблемы предлагается применение адаптивных кольцевых осциллирующих структур, с возможностью изменения внутреннего состояния с помощью нейросетевой системы управления, которая способна выполнить перестройку осциллятора в случае изменения внешних факторов: температуры, напряжения питания и т.д. Система способна поддерживать необходимые случайные характеристики выходного битового потока [2]. Структура системы

i Надоели баннеры? Вы всегда можете отключить рекламу.