Кіріспе
Ақылды карта
Java Card – Java негізіндегі қосымшаларды (аплеттерді) ақылды карталарда және жалпы алғанда, «қауіпсіз элементтер» (SE) деп аталатын ұқсас қауіпсіз, кішкентай жадты құрылғыларда қауіпсіз түрде іске қосуға мүмкіндік беретін бағдарламалық технология. Бүгінде қауіпсіз элемент ақылды карталармен және басқа да алынып-қойылатын криптографиялық токендермен ғана шектелмейді; құрылғы тақтасына тікелей орнатылған кіріктірілген SE және жалпы мақсаттағы чиптерге енгізілген жаңа қауіпсіздік дизайндары да кеңінен қолданылады. Java Card осы аппараттық фрагментацияны және ерекшеліктерді ескереді, сонымен бірге Java ұсынған кодтың тасымалдану мүмкіндігін сақтайды. Java Card – кіріктірілген құрылғыларға арналған ең кішкентай Java платформасы. Java Card пайдаланушыға құрылғыларды бағдарламалау және оларды нақты мақсаттарға бағыттау мүмкіндігін береді. Ол түрлі салаларда кеңінен қолданылады: SIM карталары мен кіріктірілген SIM карталарындағы сымсыз телекоммуникация, банк карталарындағы және NFC ұялы төлемдер, сондай-ақ жеке куәліктер, денсаулық сақтау карталары мен паспорттар үшін. Көптеген IoT өнімдері, мысалы, шлюздер, бұлттық қызметтермен байланысты қамтамасыз ету үшін Java Card негізіндегі өнімдерді пайдаланады. Алғашқы Java Card 1996 жылы Schlumberger компаниясының карта бөлімшесінде ұсынылған, кейіннен ол Gemplus компаниясымен бірігіп Gemalto құрды. Java Card өнімдері Sun Microsystems (кейін Oracle Corporation еншілес компаниясы) спецификацияларына негізделген. Көптеген Java Card өнімдері картадағы қосымшаларды қауіпсіз басқару үшін GlobalPlatform спецификацияларын пайдаланады (көшіру, орнату, жекелендіру, жою). Java Card технологиясының негізгі мақсаттары – тасымалдану, қауіпсіздік және кері үйлесімділік.
Көшіруге қабілеттілік
Java Card стандартты смарт-карта есептеу ортасын құруға бағытталған, бұл бір Java Card апплетін әртүрлі смарт-карталарда іске қосуға мүмкіндік береді, дәл сияқты Java апплеті әртүрлі компьютерлерде жұмыс істейтіндей. Java сияқты, бұл виртуалды машина (Java Card Virtual Machine) және жақсы анықталған орындалу кітапханасының үйлесімі арқылы іске асырылады, ол апплетті смарт-карталар арасындағы айырмашылықтардан көп бөлігін қорғайды. Портативтілік мәселелері жад көлемі, өнімділік және орындалу кезіндегі қолдау (мысалы, байланыс протоколдары немесе криптографиялық алгоритмдер үшін) арқылы шектеулі болып қалады.
Қауіпсіздік
Java Card технологиясы бастапқыда смарт-карталарда сақталған құпия ақпаратты қорғау мақсатында әзірленді. Бұл технологияның әртүрлі аспектілері қауіпсіздікті анықтайды: Деректерді капсулациялау Деректер қосымшаның ішінде сақталады, ал Java Card қосымшалары негізгі операциялық жүйе мен аппараттық құралдардан бөлек, оқшауланған ортада (Java Card VM) іске қосылады. Applet firewall Басқа Java VM-дерден өзгеше, Java Card VM әдетте бірнеше қосымшаны басқарады, олардың әрқайсысы құпия деректерді басқарады. Сондықтан әртүрлі қосымшалар апплеттің өрт қабырғасы арқылы бір-бірінен бөлінеді, ол бір аплеттің дерек элементтеріне екінші аплеттің кіруін шектейді және тексереді. Криптография DES, Triple DES, AES сияқты кеңінен қолданылатын симметриялық кілт алгоритмдері, сондай-ақ RSA сияқты асимметриялық кілт алгоритмдері, эллипстік қисық криптографиясы, қолтаңба қою, кілт жасау және кілт алмасу сияқты басқа криптографиялық қызметтер қолдау көрсетіледі. Аплет Аплет – тек кіріс командалық сұрауларды өңдейтін және деректерді немесе жауап мәртебесін интерфейс құрылғысына қайта жіберу арқылы жауап беретін күй машинасы.
Data encapsulation Data is stored within the application, and Java Card applications are executed in an isolated environment (the Java Card VM), separate from the underlying operating system and hardware. Applet firewall Unlike other Java VMs, a Java Card VM usually manages several applications, each one controlling sensitive data. Different applications are therefore separated from each other by an applet firewall which restricts and checks access of data elements of one applet to another. Cryptography Commonly used symmetric key algorithms like DES, Triple DES, AES, and asymmetric key algorithms such as RSA, elliptic curve cryptography are supported as well as other cryptographic services like signing, key generation and key exchange. Applet The applet is a state machine which processes only incoming command requests and responds by sending data or response status words back to the interface device.
Дизайн
Тіл деңгейінде Java Card – Java-ның нақты кіші жиынтығы: Java Card-тың барлық тілдік құрылымдары Java-да бар және олар бірдей жұмыс істейді. Мұның мәнісі, стандартты құрастыру циклінің бір бөлігі ретінде Java Card бағдарламасы Java компиляторы арқылы Java кластық файлына компиляцияланады; кластық файл Java Card платформасына тән құралдармен өңделеді. Дегенмен, Java Card көптеген Java тілінің мүмкіндіктерін қолдамайды (әсіресе char, double, float және long типтері; өтпелі модификаторы; enum-дар; бір өлшемнен артық массивтер; финализация; объектілерді көшіру; жіптер). Сонымен қатар, Java-ның кейбір кең таралған мүмкіндіктері көптеген нақты смарт-карталарда орындалу кезінде қолжетімді емес (әсіресе Java өрнегінің әдепкі түрі болып табылатын int типі және объектілердің қоқыс жинауы).
Байт коды
Java Card Virtual Machine орындайтын Java Card байт коды – стандартты Java Virtual Machine орындайтын Java 2 байт кодының функционалдық кіші жиынтығы, бірақ көлемін оңтайландыру үшін басқа түрде кодталған. Сондықтан, Java Card апплеті бірдей Java бастапқы кодынан құрастырылған гипотетикалық Java апплетіне қарағанда әдетте аз байт кодты пайдаланады. Бұл жадты сақтап қалуға мүмкіндік береді, бұл смарт-карталар сияқты ресурстары шектеулі құрылғылар үшін қажет. Дизайндық шарттылық ретінде, кейбір Java тілінің мүмкіндіктеріне (жоғарыда айтылғандай) және көлем шектеулеріне қолдау жоқ. Көлем шектеулерін айналып өту үшін әдістер бар, мысалы, қолданба кодын 64 КиБ лимітінен төмен пакеттерге бөлу.
Кітапхана және орындалу уақыты
Стандартты Java Card сыныптар кітапханасы мен орындалу ортасы Java-дан көп ерекшеленеді, ал олардың ортақ бөлігі минималды. Мысалы, Java Security Manager класы Java Card-та қолдау таппайды, себебі қауіпсіздік саясаты Java Card виртуалды машинасы арқылы іске асырылады; ал уақытша айнымалылар (сақтаусыз, жылдам RAM айнымалылары, сынып мүшелері бола алады) Java Card сыныптар кітапханасы арқылы қолдауға ие, ал Java-да олар тілдің өзінде қолдауға ие.
Даму
Java Card бағдарламасында қолданылатын кодтау техникалары, қарапайым Java бағдарламасында қолданылатын техникалардан едәуір өзгеше. Алайда, Java Card Java тілінің дәл кіші жиынтығын қолдану оқу процесін жеңілдетеді және Java Card бағдарламасын жасау және түзету үшін Java ортасын пайдалануға мүмкіндік береді (ескерту: түзету Java байт-кодымен жүргізілсе де, сынып файлының Java Card тілінің шектеулеріне сәйкес келетінін Java Card байт-кодына түрлендіру арқылы тексеріңіз; сондай-ақ, өнімділік туралы түсінік алу үшін нағыз Java Card смарт-картасында ертерек сынап көріңіз); сонымен қатар, смарт-картаға орналастырылатын қосымшаға арналған Java Card кодын және смарт-картаны пайдаланатын хост-жүйедегі Java қосымшасын бірдей ортада іске қосуға және түзетуге болады.
Java Card 3.0 нұсқасы
Java Card спецификациясының 3.0 нұсқасы (2008 жылдың наурыз айында жарияланған жоба) екі басылымға бөлінген: Классикалық басылым және Қосылған басылым. Классикалық басылым (қазіргі уақытта 3.0.5 нұсқасы 2015 жылдың маусымында жарияланды) Java Card Platform нұсқасының 2-нің (соңғы 2.2.2 нұсқасы 2006 жылдың наурызында жарияланды) дамуы болып табылады, ол ресурстары шектеулі құрылғыларда, мысалы, смарт-карталарда дәстүрлі карта апплеттерін қолдайды. Ескі апплеттер әдетте жаңа Classic Edition құрылғыларымен үйлесімді, ал жаңа құрылғыларға арналған апплеттер жаңа кітапхана функцияларын пайдаланбаса, ескі құрылғылармен де үйлесімді болуы мүмкін. Java Card Classic Edition-ды іске асыратын смарт-карталар бірнеше өндірушілермен қауіпсіздік сертификатынан өтті және коммерциялық түрде қолжетімді. Қосылған басылым (қазіргі уақытта 2009 жылдың желтоқсанында жарияланған 3.0.2 нұсқасы) желілік мүмкіндіктері бар жаңа виртуалды машинаны және кеңейтілген орындау ортасын ұсынуды мақсат етеді. Қолданбалар APDU командаларымен сұралған классикалық карта апплеттері ретінде немесе картамен веб-негізгі байланыс схемаларын (HTML, REST, SOAP) қолдау үшін HTTP қолданатын сервлеттер ретінде жасалуы мүмкін. Орындалу уақыты Java-ның (1.) 6 байт-кодының бір бөлігін, қозғалмалы нүктесіз (Floating Point) қолданады; ол уақытша объектілерді (қоқыс жинау), көп өрістілікті, қолданбалар арасындағы байланыс құралдарын, сақталуын, транзакцияларды және карта басқару құралдарын қолдайды. 2021 жылға дейін коммерциялық смарт-карталарда қолданылуы шектеулі болды, сондықтан Java Card туралы сілтемелер (оның ішінде осы Wikipedia бетінде) көбінесе Қосылған басылымды ескермейді.
Java Card 3.1 (жазбаша)
Java Card 3.1 2019 жылдың қаңтар айында жарық көрді.