Java Card

Technologie Java Card umožňuje bezpečný běh aplikací, nazývaných applety (Java Card applety), na paměťových kartách a dalších podobných zařízeních s vlastní pamětí. Java Card je tedy cílena především do malých vestavěných zařízení a umožňuje uživateli programovat konkrétní aplikace pro konkrétní zařízení. Tato technologie je nezávislá na platformě a je kompatibilní se všemi standardy paměťových karet, je také široce využívána v kartách SIM pro mobilní telefony a ATM kartách do bankomatů. Díky této univerzálnosti Java Card lze aplikace rychle vytvářet, testovat a zavádět do praxe a také snadno integrovat do komplexních projektů řešených v Javě. První produkt s Java Card byl představen v roce 1996 společností Schlumberger (její divizí zabývající se platebními kartami, která se později sloučila s Gemplus ze skupiny Gemalto). Produkty Java Card jsou založené na specifikacích platformy Java Card vyvinuté společností Sun Microsystems (dceřiná společnost Oracle Corporation). Většina těchto produktů je také založená na specifikacích GlobalPlatform pro zabezpečení aplikací a jejich správy na kartách.

Využitelnost a přenositelnost

Multiplatformnost – applety vytvořené pomocí Java Card jsou nezávislé na hardwaru, jedinými omezeními mohou být velikost paměti karty a podpora komunikačních protokolů a šifrovacích algoritmů. Java Card aplikace jsou dynamické, to znamená, že existuje možnost bezpečné instalace aplikací na paměťovou kartu i po jejím vydání zákazníkovi, což umožňuje pružně reagovat na měnící se potřeby trhu. Java Card nachází uplatnění především v následujících zařízeních:

Bezpečnost

Technologie Java Card byla původně vyvinuta pro účely zabezpečení citlivých informací uložených na čipových kartách. Java Card, stejně jako všechny javovské technologie, zajišťuje bezpečné vývojové i provozní prostředí. Bezpečnost je určena několika aspekty:

  • Zapouzdření dat. Data jsou uložena v samotné aplikaci a tyto Java Card aplikace jsou spouštěny v izolovaném prostředí (Java Card Virtual Machine), oddělené od základního operačního systému a hardwaru.
  • Applet Firewall. Na rozdíl od ostatních Java Virtual Machine, Java Card VM obvykle spravuje několik aplikací, z nichž každá samozřejmě obsahuje svá citlivá data. Různé aplikace jsou tedy od sebe odděleny pomocí applet firewallu a zabezpečení, které zamezuje přístup k datům jedné aplikace jinou aplikací.
  • Šifrování. Běžně používanými šifrovacími algoritmy jsou DES, Triple DES, AES, RSA a algoritmy na bázi eliptických křivek. Dále jsou podporovány i ostatní kryptografické služby jako je elektronický podpis, generování a výměnu klíčů.

Java Card versus Java

Jazyk

Veškeré konstrukce v Java Card jsou totožné s konstrukcemi v jazyce Java. Nicméně, mnoho datových typů a funkcí jazyka Java Java Card nepodporuje (typy char, double, float, long; klonování; vlákna; vícerozměrná pole)

Bytekód

Java Card bytekód běžící na Java Card VM je funkční podmnožinou Java (Java Platform, Standard Edition) bytekódu běžící na Java Virtual Machine, s rozdílem použití jiného kódování optimalizovaného pro velikost (malé nároky na paměť). Java Card applety obvykle používají bytekód (nebo část) získaný kompilací zdrojového kódu jiného Java appletu. Tím se šetří paměť, což je hlavní omezení malých karet. Jak již bylo uvedeno výše, nejsou podporovány všechny funkce jazyka Java a jsou zde i jistá omezení ve velikost, např. bloky s kódem aplikace nesmí být větší než 64 KiB.

Knihovny

Standardní knihovna Java Card se podstatně liší od té v Javě, společného toho mají jen málo. Například Java Security Manager není v Java Card podporován, veškerá zabezpečení jsou prováděna v Java Card Virtual Machine, naopak jiné funkce standardně obsažené v Javě jsou součástí speciálních Java Card knihoven.

Specifické znaky

Java Card Runtime a Java Card Virtual Machine podporují funkce, které jsou specifické pro platformu Java Card:

  • Stálost. Java Card objekty jsou automaticky uloženy do paměti ROM (RAM je v čipových kartách velice malá a slouží k ukládání dočasných dat). Celé prostředí stejně jako bytekód se tomuto omezení musí přizpůsobit.
  • Atomicita. Karty mají jen omezené vnější napájení (při připojení k terminálu), znamená to tedy, že prováděné operace musejí být atomické (žádné seskupení úkonů, vše musí být rozdělené na konkrétní požadavky, příkazy, apod.).
  • Izolace appletů. Java Card firewall je mechanismus, který od sebe izoluje různé applety na kartě. Explicitně tento firewall obsahuje možnosti, jak mezi sebou mohou applety sdílet některé objekty.

Licence a vývoj

Techniky psaní programu v Java Card se významně liší od těch používaných v Java programech. I tak lze využít prostředí Java (protože Java Card je stále podmnožinou Java) pro vytváření a ladění Java Card aplikací. Lze tak simulovat chování paměťové (bankovní,…) karty a zároveň pomocí obslužných programů v Javě ovládat tyto karty a provádět transakce. Vlastníky licence pro technologii Java Card na paměťových kartách je více než 90 % světových vydavatelů těchto karet.[1], což znamená velmi rychlý vývoj veškerých aplikací především v oblasti bankovnictví a telekomunikací. Držitelé licence pro Java Card technologii získávají přístup k Java Card Technology Compatibility Kit (TCK), Java Card Toolkit nebo Java Card Protection Profile. Java Card Toolkit je Java Card simulátor a debugger. Java Card Protection Profile poskytuje sadu bezpečnostních požadavků specifikovaných pro Java Card platformu.

Java Card 3.0

Specifikace Java Card verze 3.0 (návrh z března 2008) je vytvořena ve dvou edicích [2]: Classic Edition a Connected Edition.

  • Classic Edition je vývoj platformy Java Card verze 2.2.2 s podporou tradičních kartových appletů.
  • Connected Edition nabízí nový virtuální stroj a vylepšené prostředí pro spouštění síťově orientovaných programů. Aplikace mohou být vyvíjeny jako klasické applety pro karty (APDU), nebo jako Java servlety pomocí protokolu HTTP pro podporu on-line komunikace (HTML, REST, SOAP, ...) s kartou.

Reference

Související články

Externí odkazy

V tomto článku byl použit překlad textu z článku Java Card na anglické Wikipedii.

Média použitá na této stránce

Duke (Java mascot) waving.svg
Autor: sbmehta converted to SVG from Sun Microsystems AI version., Licence: BSD
Duke, the Java Mascot, in the waving pose. Duke images are now Free Graphics see duke:Project Home Page for more details.