JavaCard
Teknologjia JavaCard kombinon nënbashkësinë e gjuhës programuese Java me ambientin e ekzekutimit të optimizuar për smart kartela apo pajisje të ngjashme me resurse të kufizuara. Në vitin 1990 në kompaninë Sun filloi zhvillimi i gjuhës së re programuese Java. Objektivat e kësaj gjuhe ishin që të krijohen programe që janë të pavarura nga hardueri, të sigurta e që mund të përdoren për mikrokontrollera. Benefiti kryesorë nga gjuha Java për smart kartela është mundësia që cilido zhvillues mund të krijojë aplikacione për smart kartela. Kjo për arsye se Java është një gjuhë e lehtë, ekzekutohet në shumë platforma dhe tashmë veçse është e njohur për programerët. Java për smart kartela është nënbashkësi e gjuhës Java për kompjuterë, pra disa opsione janë larguar e disa janë shtuar në mënyrë që Java të përshtatet për smart kartela. Së pari applet-i kalon nëpër “bytecode verifier”, i cili kontrollon fajllin, sintaksen, metodat e argumentet e tyre. Ngarkuesi(ang. loader) merr kodin dhe e dërgon atë përmes fajllit të formatit CAP(Card Application) tek interpreteri. Ky kalim duhet të jetë i siguruar përmes nëshkrimeve digjitale nga rreziku i manipulimit gjatë kalimit nga një pjesë e kartelës në tjetrën. Interpreteri e merr këtë kod dhe e kthen në kod të makinës dhe e dërgon në procesor për ekzekutim. Menaxheri i sigurisë vazhdimisht përcjellë interpretimin, e nëse vërehet ndonjë problem inicon përjashtim dhe ndërpren interpretimin. Meqë Java për smart kartela është nënbashkësi e Java-s për kompjuterë, në vazhdim do të përmenden disa dallime dhe të përbashkëta në mes tyre:

  • Thread-ët nuk përkrahen në Java për smart kartela sepse CPU-ja e thjeshtë e smart kartelave

nuk mundëson ekzekutimin efiçientë të disa thread-ëve paralelisht.

  • Garbage Collector(klasifikues i mbeturinave në memorje) nuk përkrahet nga Java për smart

kartela, kështuqë në programet me smart kartela nuk mund të përdoret funksioni finalize(), i cili aktivizon “garbage collector”.

  • Fushat e të Dhënave, përkrahen vetëm ato një dimensionale(vektorët) për arsye të memorjes

së kufizuar. Tipet e anëtarëve të vektorit duhet të jenë vetëm tipe primitive të përkrahura nga JavaCard teknologjia.

  • Trashegimia përkrahet plotësisht edhe në Java-n për smart kartela.
  • Përjashtimet(ang. Exceptions) përkrahen plotësisht nga Java për smart kartela dhe

mundësojnë kontrollimin dhe shmangjen e gabimeve fatale që ndodhin. Pra edhe në smart kartela mund të përdoren funksionet try(), catch(), finally(), throw().

  • Tipet primitive që përkrahen në Java smart kartela janë bool, byte e short. Këto tipe në

përgjithësi përkrahen në të gjitha smart kartelat me JavaCard. Tipi i të dhënave int është alternativë, dhe iplementohet vetëm tek procesorët me të avancuar. Te smart kartelat nuk përkrahen tipet string, double, float apo long. Java për smart kartela përmes librarive javacardx.crypto përkrah enkriptimin simetrik, duke mundësuar krijimin e çelësit, dhe enkriptimin e dekriptimin përmes DES, si dhe dekriptimin përmes Triple DES(3DES) algoritmit. Gjithashtu JavaCard teknologjia përkrah edhe ekzekutimin e algoritmeve asimetrike, konkretisht atë RSA(Rivest Shamir Adleman), përmes së cilit bëhet authentikimi dhe verefikimi, në fakt authentikimi është më i zakonshëm në smart kartela. Përveq sigurisë që smart kartelat duhet të ofrojnë për përdoruesin përmes algoritmeve kriptografike, gjithashtu smart kartela duhet që të jetë e siguruar në mënyrë që të mos manipulohet. Java smart kartelat mundësojnë këtë siguri duke ofruar një ambient të sigurtë të ekzekutimit. Pikë së pari aplikacionet mbrohen nga njëri tjetri me anë të firewall(“mur mbrojtës”) i cili i pamundëson aplikacioneve që të ndërhynë në hapësirën memorike që i takon një aplikacioni tjetër. Kjo siguri është e domosdoshme për smart kartelat me shumë aplikacioni sikurse që janë Java smart kartelat.

Klasat qe perdore Java Smart Kartela

Klasat e JavaCard API-t janë më me pak librari dhe janë më kompakte se sa ato të Java platformës. Zhvilluesit që kanë punuar më parë në Java platformë mund të mos i njohin disa klasa kryesore që përdoren në Java smart kartela përveç java.lang e cila përdoret në të dy platformat. Klasat si String, IO, Net e të tjera, nuk përdoren në Java smart kartela për arsye të kufizimeve në memorje. Në vazhdim do të përmendim disa nga klasat kryesore që përdorë JavaCard teknologjia me nga një përshkrim të shkurtër për secilën:

  • java.io, kjo paketë është nënbashkësi e java.io paketës së Java-s standarde. Përmbanë klasën

IOException e cila shërben për të dërguar sinjal se një gabim ka ndodhur në I/O modulet e smart kartelës.

  • java.lang, kjo paketë gjithashtu është e derivuar nga java.lang e platformës Java. Kjo paketë

përmbanë funksinalitetin kryesorë që kërkohet nga . Klasa kryesore këtu është Throwable, e cila është klasa bazë për përjashtimet(ang. Exceptions).

  • javacard.framework, kjo paketë ofron një bashkësi të klasave për të krijuar funkisonalitetin,

komunikuar dhe punuar me JavaCard applet-ët. Këto klasa shërbejnë për të realizuar funksionalitet bazë, për funksione tjera duhet të shtohen librari tjera. Klasat kryesore të kësaj pakete jane:

  • javacard.framework.AID, mbanë 5-16 bajtat e AID(Application ID)-së sikurse është

e specifikuar në ISO7816-5 standardin.

  • javacard.framework.APDU, ofron metoda për pranimin dhe dërgimin e të dhënave

në mes të smart kartelës dhe terminalit përmes APDU mesazheve.

  • javacard.framework.OwnerPIN, ofron funksione për manovrim me PIN-in e

mbajtësit të kartelës.

  • javacard.security, kjo paketë posedon klasa që shërbejnë për të implementuar sigurinë dhe

algoritmet kriptografike në Java smart kartela. Gjithashtu në anën e sigurisë të smart kartelës është edhe paket javacardx.crypto e cila është e dedikuar për të mundësuar dekriptimin.[1]

References

Redakto
  1. ^ Sun Microsystems, Inc., Java Card™ 2.2 Application Programming Interface, September 2002