Java Card

Daripada Wikipedia, ensiklopedia bebas.

Java Card merupakan teknologi yang membolehkan aplikasi berasaskan Java dijalankan dengan selamat pada kad-kad pintar dan peranti-peranti kecil yang beringatan kecil. Java Card adalah pelantar Java terkecil yang dibangunkan untuk peranti-peranti terbenam. Ia membolehkan penggunanya mengatur cara peranti-perantinya serta mengkhususkan aplikasi.

Java Card yang pertama telah diperkenalkan pada tahun 1996 oleh bahagian kad Schlumberger yang kemudiannya bergabung dengan Gemplus bagi membentuk Gemalto. Produk-produk Java Card adalah berasaskan spesifikasi yang dibangunkan oleh Sun Microsystems (yang kemudiannya menjadi anak syarikat Oracle Corporation). Kebanyakan produk-produk Java card turut bergantung kepada spesifikasi GlobalPlatform bagi pengurusan keselamatan aplikasi pada kad (muat turun, pemasangan, pemperibadian, penghapusan).

Matlamat utama reka bentuk teknologi Java Card ialah kemudahalihan dan keselamatan.[1]

Versi[sunting | sunting sumber]

Java Card 2.2.2[sunting | sunting sumber]

Java Card 2.2.2 dikeluarkan pada Mac 2006.[2] Keluaran ini menyediakan beberapa ciri-ciri baharu, antaranya:

  • sokongan bagi ISO7816-4:2005 dan 20 saluran logik
  • bantuan-bantuan kebolehaturcaraan applet untuk APDU panjang tambahan yang diterangkan dalam ISO 7816
  • sokongan bagi algoritma cincangan untuk SHA-256, SHA-384, SHA-512.

Java Card 3.0[sunting | sunting sumber]

Tentuan Java Card versi 3.0 (drafnya dikeluarkan pada bulan Mac 2008) dibahagikan kepada dua versi iaitu Classic Edition (edisi klasik) dan Connected Edition (edisi tersambung).[3]

Antara ciri baharu dalam Connected Edition ialah sokongan bagi servlet, sokongan bagi rentetan (string) dan shareable interface object (objek antara muka boleh kongsi, SIO).

Java Card 3.0 Classic Edition adalah serasi kebelakang dengan Java Card 2.22.

Contoh[sunting | sunting sumber]

Berikut ialah contoh ringkas bagi aplikasi yang digunakan sebagai dompet elektronik:

public class DompetApplet extends Applet {
    private final byte PENGESAHAN = (byte)0x20;
    private final byte MASUK_DUIT = (byte)0x6a;
    private final byte KELUAR_DUIT = (byte)0x6b;
    private final short MAKSIMUM_KELUAR = (short)0x0bb8; // RM300
    private short baki;
    private OwnerPIN pin;
 
    public static void install(byte[] bArray, short bOffset, byte bLength) {
        new DompetApplet(bArray, bOffset, bLength);
    }
 
    protected DompetApplet(byte[] bArray, short bOffset, byte bLength) {
        register();
        pin.update(bArray, bOffset, bLength);
        baki = (short)0;
    }
 
    @Override
    public void process(APDU apdu) {
        byte[] buffer = apdu.getBuffer();
        short lc = apdu.getIncomingLength();
        short duit;
 
        if (!selectingApplet()) {
            switch (buffer[ISO7816.OFFSET_INS]) {
                case PENGESAHAN:
                     if (pin.getTriesRemaining() != 0) {
                         pin.check(buffer, ISO7816.OFFSET_CDATA, (byte)lc);
                     }
                     break;
                case MASUK_DUIT:
                     if (pin.isValidated()) {
                         duit = Util.getShort(buffer, ISO7816.OFFSET_CDATA);
                         baki += duit;
                     }
                     break;
                case KELUAR_DUIT:
                     if (pin.isValidated()) {
                         duit = Util.getShort(buffer, ISO7816.OFFSET_CDATA);
                         if ((baki - duit) > 0 && duit <= MAKSIMUM_KELUAR) {
                             baki -= duit;
                         } else {
                             ISOException.throwIt(ISO7816.SW_WRONG_DATA);
                         }
                     }
                     break;
                default:
                     ISOException.throwIt(ISO7816.SW_INS_NOT_SUPPORTED);
            }
        }
    }
}

Rujukan[sunting | sunting sumber]

  1. ^ Ahmed Patel, Kenan Kalajdzic, Laleh Golafshan, Mona Taghavi (2011). "Design and Implementation of a Zero-Knowledge Authentication Framework for Java Card". 5 (3). IGI: 1–18. Unknown parameter |booktitle= ignored (bantuan); Cite journal requires |journal= (bantuan)CS1 maint: multiple names: authors list (link)
  2. ^ "Release Notes - Java Card(TM) Specification Version 2.2.2". Oracle. Dicapai pada 3 April 2013.
  3. ^ "Release Notes - Java Card 3.0 Platform Specification". Oracle. Dicapai pada 6 Mac 2013.