Как стать автором
Обновить

Использование Java смарт-карт для защиты ПО. Глава 3. Установка и настройка IDE

Время на прочтение5 мин
Количество просмотров7.6K
image

В данном цикле статей пойдет речь об использовании Java смарт-карт (более дешевых аналогов электронных ключей) для защиты программного обеспечения. Цикл разбит на несколько глав.

Для прочтения и осознания информации из статей вам понадобятся следующие навыки:
  • Основы разработки ПО для Windows (достаточно умения программировать в любой визуальной среде, такой как Delphi или Visual Basic)
  • Базовые знания из области криптографии (что такое шифр, симметричный, ассиметричный алгоритм, вектор инициализации, CBC и т.д. Рекомендую к обязательному прочтению Прикладную Криптографию Брюса Шнайера).
  • Базовые навыки программирования на любом языке, хотя бы отдаленно напоминающем Java по синтаксису (Java, C++, C#, PHP и т.д.)

Цель цикла — познакомить читателя с Ява-картами (литературы на русском языке по их использованию крайне мало). Цикл не претендует на статус «Руководства по разработке защиты ПО на основе Ява-карт» или на звание «Справочника по Ява-картам».

Состав цикла:




1. Установка необходимого ПО


Нормальной IDE, которая бы полностью поддерживала Javacard SDK 2.2.1 мне не попадалось. Ну разве что JCOP Tools, которые IBM продала NXP, а NXP где-то потеряла. Но даже если вы найдете этот комплект — он платный. Для его использования по слухам требуется еще и подписание NDA. Есть несколько платных SDK из которых я работал только с CyberFlex SDK. Не понравилось.

NetBeans 6.9+ включает в себя плагин Javacard Tools, который действительно довольно-таки мощный. Но, к сожалению, этот плагин пока поддерживает только разработку карт, совместимых с Javacard SDK 3.0 Connected. А таких карт на рынке мало. Впрочем, никто не мешает разрабатывать апплет в этой среде без использования возможностей Java Card API 3.x, а потом просто скомпилировать / сконвертировать исходники апплета обычным SDK 2.2.1.

Для разработок я долгое время использовал обычный Eclipse IDE for Java Developers, который я немного довел до ума путем встраивания нужных утилит из SDK. Итак, качаем последнюю версию Eclipse IDE for Java Developers с сайта Eclipse.

Скачанный архив просто распакуйте куда-нибудь (не в Program Files желательно) на жесткий диск. Я обычно помещаю его в корень диска в папку eclipse-java. Здесь и далее нежелательно использовать в именах папок русские буквы и пробелы.

Далее нам понадобится Java SDK любой версии. Называется он обычно JavaSE (Java Standard Edition SDK), JDK. Поскольку Oracle купила Sun, ссылка может поменяться, но Google вам поможет, если это случиться. Пока что скачать можно отсюда. Он снабжен инсталлятором, поэтому просто установите его как обычно.

И еще нам понадобится Java Card Development Kit 2.2.1. Я его тоже обычно помещаю в корень жесткого диска.

Теперь нужно немного настроить систему. Нажмите Windows + Break вместе на клавиатуре или просто откройте свойства Моего Компьютера. Перейдите на вкладку Дополнительно и нажмите кнопку Переменные среды. В системные переменные нужно добавить следующие:

JC_HOME=C:\java_card_kit-2_2_1 — путь, куда вы распаковали Java Card Development Kit
JAVA_HOME=c:\j2sdk1.4.1 — путь, куда установился Java SDK. Если он установился в Program Files, лучше использовать короткий 8.3 путь «C:\Progra~1\...».

А теперь нужно добавить в конец переменной PATH значение ";%JC_HOME%\bin;%JAVA_HOME%\bin;". Причем переменные %..% лучше раскрыть и указать в PATH пути полностью.

Проверить корректность установки можно запустив файл build_samples.bat, находящийся в папке с Java Card SDK (подкаталог samples). Правда, если вы используете Java Developer Kit отличный от 1.3 или 1.4, придется его немного подкорректировать. Откройте файл build_samples.bat и добавьте в строку «set JCFLAGS» параметры "-target 1.2 -source 1.2" (без кавычек, конечно). Это необходимо, поскольку конвертер файлов для карточек ожидает, что файлы скомпилированы совместимым компилятором).

После запуска и корректной отработки build_samples, в папке %JC_HOME%\samples\classes\com\sun\javacard\samples\HelloWorld\javacard\ должны появиться файлы HelloWorld.cap, HelloWorld.exp, HelloWorld.jca. Файл HelloWorld.cap готов к немедленной заливке в карту.

2. Настраиваем Eclipse


Запустите Eclipse. При первом запуске вас спросят о желаемом расположении рабочей области. Я обычно оставляю расположение по умолчанию.

Создайте новый Java-проект. File -> New -> Project -> Java -> Java Project. Назовите его как-нибудь. Можете разместить вне рабочей области, если вам так удобно. Остальные настройки можно оставить как есть. Нажмите Next. Перейдите на вкладку Libraries и удалите оттуда все то, что там есть. Нажмите кнопку Add External JAR и выберите файл %JC_HOME%\lib\api.jar (%JC_HOME% = внутри Java Card SDK, который вы распаковали). Нажмите Finish.

Слева появится окно Package Explorer. Щелкните правой кнопкой на папке src и выберите New -> Package. Мы должны создать пакет, в который будет входить наш тестовый апплет. Назовите его как вам нравится. Например, testpackage. Щелкните правой кнопкой по иконке пакета в Package Explorer. Выберите New -> Class. В качестве суперкласса (класса, от которого будет унаследован класс нашего апплета) нужно выбрать «javacard.framework.Applet». Отметьте создание всех заглушек, которые предлагает Eclipse, кроме main() (Constructors from superclass, Inherited abstract methods). Введите имя класса апплета. Например, TestApplet. Нажмите Finish.

Как видите, Eclipse сгенерировал заглушку апплета, которую в следующих главах нам предстоит превратить в полнофункциональный апплет.

Теперь нам нужно немного облегчить себе жизнь, написав файлы для автоматизации процесса компиляции апплета и его конвертации в *.cap файл. Для этого нам понадобится создать два файла. Один для компиляции и конвертации и апплета, а другой для загрузки в карту. Впрочем, если захотите, можете в один файл все объединить. Обратите внимание, что мы назвали пакет mytestapplet, а апплет MyTestApplet.

Итак, build.bat:

@echo off
set APPLET_HOME=C:\Work\JavaCard\MyTestApplet
set PACKAGE_NAME=mytestapplet
set APPLET_NAME=MyTestApplet
del /q %APPLET_HOME%\bin\%PACKAGE_NAME%\*.class
del /q %APPLET_HOME%\bin\%PACKAGE_NAME%\javacard\*.*
%JAVA_HOME%\bin\javac -g -d %APPLET_HOME%\bin -classpath %JC_HOME%\samples\classes\;%JC_HOME%\lib\api.jar;%JC_HOME%\lib\installer.jar -source 1.2 -target 1.2 %APPLET_HOME%\src\
%JC_HOME%\bin\converter -config %APPLET_HOME%\%APPLET_NAME%.opt
pause


Думаю, тут все понятно без комментариев. И образец MyTestApplet.opt файла, из которого читает информацию конвертер (предпоследняя строка *.bat):

-out CAP JCA
-exportpath E:\java_card_kit-2_2_1\api_export_files;D:\java_card_kit-2_2_1\lib\api.jar
-classdir C:\Work\JavaCard\MyTestApplet\bin\
-d C:\Work\JavaCard\MyTestApplet\bin\
-verbose
-applet  0xa0:0x46:0x52:0x41:0x43:0x54:0x41:0x4c:0x0:0x1 mytestapplet.MyTestApplet
mytestapplet
0xa0:0x46:0x52:0x41:0x43:0x54:0x41:0x4c:0x0 1.0


Обратите внимание на -applet директиву (она указывает AID апплета) и на последнюю строку (AID и версия пакета). *.cap файл после наших манипуляций должен оказаться в папке C:\Work\JavaCard\MyTestApplet\bin\.

Добавить данный файл в меню Eclipse можно через Run -> External Tools -> External Tools Configurations. Думаю, там все достаточно тривиально и не потребует объяснений.

3. IntelliJ (JetBrains) IDEA


Должен сказать, что я фанат IDEA. IDEA — это для меня идеал идеальной среды идеальной разработки (простите за повторы, расчувствовался). Поэтому, какое-то время спустя я ушел с Eclipse, пересел на IDEA, а bat файлы трансформировал в простые задания Ant. Получившимся я вполне доволен.

Очень рекомендую вам сделать тоже самое. Хотя, конечно, на вкус и цвет…

4. Благодарность терпеливым читателям


Спасибо всем, кто дочитал до этого места. Благодарности и негодования принимаются.

Буду рад любым вопросам в комментариях и постараюсь обновлять статью так, чтобы она включала ответы.
Теги:
Хабы:
Всего голосов 23: ↑13 и ↓10+3
Комментарии1

Публикации

Истории

Работа

Ближайшие события