Nothing is more powerful than an idea whose time has come.
—Victor HugoThis chapter turns the smallest Java Virtual Machine (JVM) running on a smart card into a powerful key that can open all doors.
WHAT IS A SMART CARD?
Imagine a regular plastic card (often called “plastic”) with either a microprocessor and/or a memory chip embedded into the card. The microprocessor can manipulate information on the card, whereas a memory chip (e.g., the one in a prepaid phone card) can undertake only a predefined operation performed by a card reader.
Smart cards, unlike magnetic-stripe cards, do not require remote access at the time of the transaction; they can carry all the necessary functions and information right on the card. Today, there are three categories of smart cards: microprocessor, memory, and optical memory.
Microprocessor cards have an 8-bit processor, 16 KB of read-only memory, and 512 bytes of random access memory. Their processing power is similar to the first personal computers. These cards can perform cryptography algorithms and are used to access, hold, and otherwise manage digital money; provide secure access to computer and phone networks; secure set-top boxes; and perform other functions.
Memory cards, which can hold up to 1 to 4 KB of data, represent the bulk of the 600 million smart cards sold last year, primarily for prepaid, disposable card applications like prepaid phone cards. Card readers (also known as card-accepting devices) perform fixed operations (e.g., add, subtract, and delete) on memory cards.
Optical memory cards have a piece of (optical) compact disk glued on their surface. Up to 4 MB of data can be stored on the card, once and forever.