Programovanie

Pochopenie karty Java Card 2.0

Tento článok začína prehľadom inteligentných kariet a krátkym prehľadom normy ISO 7816, štandardu inteligentných kariet. Vzhľadom na pozadie na čipových kartách v predchádzajúcom Vývojár Java stĺpcoch sa táto časť začne odpoveďou na otázku „Čo je karta Java?“ a prehľad architektúry systému Java Card. Ďalej sa zameriame na veľa problémov špecifických pre kartu Java Card, vrátane životného cyklu karty Java Card; podmnožina jazykov Java Card 2.0 a triedy knižníc API; a zabezpečenie Java Card. Potom prediskutujeme runtime prostredie Java Card a ukážeme si, ako Java Card beží. Na záver objasníme príklad: Aplikácia elektronickej peňaženky napísaná iba pre kartu Java Card.

Od tejto chvíle sa všetky odkazy na kartu Java Card implicitne vzťahujú na kartu Java Card 2.0.

Čo je to čipová karta?

Identická s veľkosťou kreditnej karty, inteligentná karta ukladá a spracováva informácie prostredníctvom elektronických obvodov zabudovaných v kremíku v plastovom podklade jej tela. Existujú dva základné druhy inteligentných kariet: An inteligentná inteligentná karta obsahuje mikroprocesor a ponúka schopnosť čítať, zapisovať a počítať ako malý mikropočítač. A pamäťová karta, na druhej strane nemá mikroprocesor a je určený iba na ukladanie informácií. Pamäťová karta používa na riadenie prístupu do pamäte bezpečnostnú logiku.

Všetky čipové karty obsahujú tri typy pamäte: trvalá nemeniteľná pamäť; pretrvávajúca premenlivá pamäť; a perzistentná premenlivá pamäť. ROM, EEPROM a RAM sú najbežnejšie používanou pamäťou pre tri príslušné typy súčasných čipových kariet. Trvalá pamäť sa nazýva aj energeticky nezávislá pamäť. Budeme používať podmienky vytrvalý a neprchavý zameniteľné v tomto článku.

ISO 7816 časť 1-7, definovaná Medzinárodnou organizáciou pre normalizáciu, obsahuje súbor noriem, ktoré pokrývajú rôzne aspekty inteligentných kariet. ISO 7816 pozostáva z:

  • Fyzikálne vlastnosti (časť 1)

  • Rozmery a umiestnenie kontaktov (časť 2)

  • Elektronické signály a prenosové protokoly (časť 3)

  • Medziodvetvové príkazy na výmenu (časť 4)

  • Identifikátory aplikácií (časť 5)

  • Medziodvetvové dátové prvky (časť 6)

  • Medziodvetvové príkazy pre SCQL (časť 7)

Nasledujúci diagram ilustruje fyzikálne vlastnosti inteligentnej karty, ktoré sú definované v ISO 7816, časť 1.

Viac informácií o norme ISO 7816 a inteligentných kartách nájdete v časti „Inteligentné karty: základný náter“.

Čipová karta zvyčajne neobsahuje napájací zdroj, displej ani klávesnicu. Interakcia s vonkajším svetom prebieha pomocou sériového komunikačného rozhrania prostredníctvom jeho ôsmich kontaktných bodov. Rozmery a umiestnenie kontaktov sú obsiahnuté v časti 2 normy ISO 7816. Tento diagram zobrazuje kontakty na čipovej karte.

Čipová karta je vložená do zariadenia na prijímanie kariet (CAD), ktoré sa môže pripojiť k inému počítaču. Ostatné pojmy používané pre zariadenie na prijímanie kariet sú terminál, čitateľa IFD (zariadenie rozhrania). Všetky poskytujú rovnaké základné funkcie, a to napájanie karty a nadviazanie spojenia prenášajúceho dáta.

Keď dva počítače navzájom komunikujú, vymieňajú si dátové balíčky, ktoré sú zostavené podľa sady protokolov. Podobne čipové karty komunikujú s vonkajším svetom pomocou vlastných dátových balíkov - tzv APDU (Dátové jednotky aplikačného protokolu). APDU obsahuje buď príkaz, alebo správu s odpoveďou. Vo svete kariet sa používa model typu master-slave, pričom čipová karta hrá vždy pasívnu úlohu. Inými slovami, inteligentná karta vždy čaká na príkaz APDU z terminálu. Potom vykoná akciu uvedenú v APDU a odpovie na terminál s odpoveďou APDU. Príkazové APDU a APDU odpovede sa vymieňajú alternatívne medzi kartou a terminálom.

Nasledujúce tabuľky ilustrujú formáty APDU príkazov a odpovedí. Štruktúra APDU je opísaná v ISO 7816, časť 4.

Velenie APDU
Povinná hlavičkaPodmienečné telo
CLAINSP1P2LcDátové poleLe

Hlavička kóduje vybraný príkaz. Skladá sa zo štyroch polí: trieda (CLA), inštrukcia (INS) a parametre 1 a 2 (P1 a P2). Každé pole obsahuje 1 bajt:

  • CLA: Bajt triedy. Na mnohých čipových kartách sa tento bajt používa na identifikáciu aplikácie.

  • INS: inštrukčný bajt. Tento bajt označuje kód inštrukcie.

  • P1-P2: Bajty parametrov. Tieto poskytujú ďalšiu kvalifikáciu veleniu APDU.

Lc označuje počet bajtov v dátovom poli príkazu APDU; Le označuje maximálny počet bajtov očakávaný v dátovom poli nasledujúcej odpovede APDU.

Odpoveď APDU
Podmienečné teloPovinná upútavka
Dátové poleSW1SW2

Stavové byty SW1 a SW2 označujú stav spracovania príkazu APDU na karte.

Čo je karta Java?

Java Card je inteligentná karta, ktorá je schopná spúšťať programy Java. Špecifikácia karty Java Card 2.0 bola zverejnená na stránke //www.javasoft.com/javacard. Obsahuje podrobné informácie o zostavení virtuálneho stroja Java Card a aplikačnom programovacom rozhraní (API) na čipových kartách. Minimálna požiadavka na systém je 16 kilobajtov pamäte iba na čítanie (ROM), 8 kilobajtov EEPROM a 256 bajtov pamäte s náhodným prístupom (RAM).

Architektúra systému na karte Java Card je znázornená na nasledujúcom obrázku.

Ako je zrejmé z obrázku, karta Java Card VM je postavená na konkrétnej implementácii integrovaného obvodu (IC) a natívneho operačného systému. Vrstva JVM skrýva patentovanú technológiu výrobcu so spoločným jazykom a systémovým rozhraním. Rámec karty Java Card definuje množinu tried aplikačného programovacieho rozhrania (API) na vývoj aplikácií Java Card a na poskytovanie systémových služieb týmto aplikáciám. Špecifické odvetvie alebo podnik môže dodať doplnkové knižnice na poskytovanie služieb alebo vylepšenie modelu zabezpečenia a systému. Aplikácie Java Card sa volajú applety. Na jednej karte môže byť uložených viac appletov. Každý applet je jednoznačne identifikovaný POMOC (identifikátor aplikácie), ako je definované v ISO 7816, časť 5.

Dôležitým bodom, ktorý treba mať na pamäti, je to, aké sú čipové karty niesu: Nie sú to osobné počítače. Majú obmedzené pamäťové zdroje a výpočtový výkon. Používatelia by si nemali myslieť na kartu Java Card 2.0 iba ako na orezanú verziu JDK.

Životnosť karty Java Card

Životnosť karty Java Card začína, keď sa natívny operačný systém, karta Java Card VM, knižnice tried API a voliteľne aj applety vypália na ROM. Tento proces zápisu permanentných komponentov do nemennej pamäte čipu na vykonávanie prichádzajúcich príkazov sa nazýva maskovanie.

Predtým, ako karta Java Card pristane v peňaženke, musí prejsť inicializáciou a personalizáciou. Inicializácia znamená načítanie všeobecných údajov do energeticky nezávislej pamäte karty. Tieto údaje sú rovnaké pre veľké množstvo kariet a nie sú špecifické pre jednotlivca; príkladom môže byť názov emitenta alebo výrobcu.

Ďalší krok, personalizácia, spočíva v pridelení karty osobe. Môže k tomu dôjsť prostredníctvom fyzickej personalizácie alebo elektronickej personalizácie. Fyzická personalizácia sa týka razenia alebo laserového gravírovania vášho mena a čísla karty na plastovom povrchu karty. Elektronická personalizácia znamená načítanie osobných údajov do energeticky nezávislej pamäte karty, napríklad váš osobný kľúč, meno a číslo PIN.

Inicializácia a prispôsobenie sa líši od dodávateľa k predajcovi a vydavateľa k vydavateľovi. V obidvoch sa na ukladanie údajov často používa EEPROM (typ energeticky nezávislej pamäte).

V tomto okamihu je karta Java Card pripravená na použitie. Kartu Java môžete získať od vydavateľa alebo si ju môžete kúpiť u maloobchodníka. Karty predávané maloobchodníkom sú univerzálne a v takom prípade sa personalizácia často vynecháva.

Teraz môžete vložiť svoju kartu Java Card do čítačky a odoslať príkazy APDU na applety umiestnené na karte alebo stiahnuť viac appletov alebo údajov na kartu.

Karta Java Card zostáva aktívna, kým nevyprší jej platnosť alebo nie je zablokovaná z dôvodu neodstrániteľnej chyby.

Životnosť virtuálneho stroja Java Card

Na rozdiel od virtuálneho stroja Java (JVM) v počítači alebo na pracovnej stanici beží virtuálny stroj Java Card navždy.

Väčšina informácií uložených na karte musí byť zachovaná aj po odpojení napájania - teda po vybratí karty z čítačky. Virtuálna karta Java Card vytvára objekty v EEPROM na uchovanie pretrvávajúcich informácií. Životnosť vykonania Java Card VM je životnosť karty. Ak nie je k dispozícii napájanie, VM beží v nekonečnom hodinovom cykle.

Životnosť appletov a objektov Java Card

Životnosť appletu začína, keď je správne nainštalovaný a zaregistrovaný v tabuľke registra systému, a končí odstránením z tabuľky. Miesto odstráneného appletu sa môže, ale nemusí znova použiť, v závislosti od toho, či je na karte implementovaný zber odpadu. Applet na karte je v neaktívnom stave, kým ho terminál výslovne nevyberie.

Objekty sa vytvárajú v trvalej pamäti (napríklad EEPROM). Môžu byť stratené alebo zhromaždené, ak na ne iné trvalé objekty neodkazujú. Je však tisíckrát pomalšie zapisovať do EEPROM ako do RAM.

Niektoré objekty sú prístupné často a obsah ich polí nemusí byť trvalý. Karta Java Card podporuje prechodný (dočasné) objekty v RAM. Keď je objekt označený ako prechodný, jeho obsah nie je možné presunúť späť do trvalej pamäte.

Podmnožina jazykov Java Card 2.0

Programy Java Card sú samozrejme písané v jazyku Java. Zostavujú sa pomocou bežných kompilátorov Java. Kvôli obmedzeným pamäťovým zdrojom a výpočtovému výkonu nie sú na karte Java Card podporované všetky jazykové funkcie definované v špecifikácii jazyka Java. Karta Java konkrétne nepodporuje:

  • Dynamické načítanie triedy

  • Bezpečnostný manažér

  • Vlákna a synchronizácia

  • Klonovanie objektov

  • Finalizácia

  • Veľké primitívne dátové typy (float, double, long a char)

Nie je prekvapením, že kľúčové slová podporujúce tieto funkcie sú z jazyka taktiež vynechané. Implementátori virtuálnych počítačov sa môžu rozhodnúť, že budú pre applety po vydaní podporovať 32-bitový celočíselný typ alebo natívne metódy, ak pracujú na vyspelejšej inteligentnej karte s väčšou pamäťou. Aplety po vydaní sú tie applety, ktoré sa nainštalujú na kartu Java Card po vydaní karty držiteľovi karty.

Rámec Java Card 2.0

Čipové karty sú na trhu už 20 rokov a väčšina z nich je všeobecne kompatibilná s normami ISO 7816, časti 1-7 a / alebo EMV. Už sme sa pozreli na ISO 7816. Čo je EMV? Norma EMV definovaná spoločnosťami Europay, MasterCard a Visa je založená na sérii noriem ISO 7816 s ďalšími vlastnými vlastnosťami, aby vyhovovala špecifickým potrebám finančného odvetvia. Java Card Framework je navrhnutý tak, aby ľahko podporoval systémy a aplikácie inteligentných kariet. Skrýva podrobnosti o infraštruktúre inteligentných kariet a poskytuje vývojárom aplikácií Java Card relatívne ľahké a priame programovacie rozhranie.

Rámec Java Card obsahuje štyri balíčky:

Názov balíkaPopis
javacard.frameworkToto je základné balenie na karte. Definuje triedy ako napr a , ktoré sú základnými stavebnými kameňmi programov Java Card a , a , ktoré poskytujú runtime a systémové služby programom Java Card, ako je napríklad manipulácia s APDU a zdieľanie objektov
javacardx.framework Tento balík poskytuje objektovo orientovaný dizajn pre súborový systém kompatibilný s ISO 7816-4. Podporuje základné súbory (EF), vyhradené súbory (DF) a súborovo orientované APDU uvedené v norme ISO7816
javacardx.crypto a javacardx.cryptoEnc Tieto dva balíčky podporujú kryptografické funkcie požadované na čipových kartách

V súlade s konvenciou pomenovania Java, Java Cardx balíčky sú rozšírením rámca Java Card. Nie je potrebné, aby ste ich na karte podporovali.

Zabezpečenie karty Java

Na applety Java sa vzťahujú bezpečnostné obmedzenia Java, avšak bezpečnostný model systémov Java Card sa v mnohom líši od štandardnej Javy.

Trieda Security Manager nie je na karte Java Card podporovaná. Politiky zabezpečenia jazyka sú implementované virtuálnym strojom.

Applety Java vytvárajú objekty, ktoré ukladajú a manipulujú s údajmi. Objekt vlastní applet, ktorý ho vytvára. Aj keď môže applet obsahovať odkaz na objekt, nemôže sa dovolávať metód objektu, pokiaľ objekt nevlastní alebo nie je objekt výslovne zdieľaný. Applet môže zdieľať ktorýkoľvek zo svojich objektov s konkrétnym appletom alebo so všetkými appletmi.

Applet je nezávislá entita v rámci karty Java Card. Jeho výber, vykonávanie a funkčnosť nie sú ovplyvnené inými appletmi nachádzajúcimi sa na tej istej karte.

Ako veci spolupracujú na karte Java Card

Vo vnútri karty Java Card odkazuje JCRE (Java Card Runtime Environment) na virtuálny stroj Java Card a triedy v rámci Java Card Framework. Každý applet na karte Java Card je spojený s jedinečným AID prideleným JCRE.

Po správnom zavedení appletu do perzistentnej pamäte karty a jeho prepojení s architektúrou Java Card Framework a inými knižnicami na karte zavolá JCRE ako posledný krok procesu inštalácie appletu spôsob inštalácie appletu. Verejná statická metóda, Inštalácia, musí byť implementovaná triedou appletu na vytvorenie inštancie appletu a jeho registráciu v JCRE. Pretože pamäť je obmedzená, je v tomto okamihu dobrým programovacím postupom vytvárať a inicializovať objekty, ktoré bude applet počas svojej životnosti potrebovať.

$config[zx-auto] not found$config[zx-overlay] not found