Category Archives: Java Card 2.x

Information about the current generation of Java Card. The posts could be tricks, tips, blogs, or just about anything useful about the existing Java Card specs.

JC101-12C: Defending against attacks

UPDATED (05/06/08): Fixed problem with loops that zapped examples. UPDATED (06/06/08): Fixed some bugs. In the previous entry, we have looked at a few common attacks on smart cards. In this one, we will look at possible defenses against such attacks. Instead of applying them to our example, we will look at one simple example, […]

JC101-9C: Authentication and lifecycle

We now have reached the point where we have a fully functional password manager, which is able to store login information. However, this application is not complete, since it does not include any protection of these sensitive assets. Anybody who is able to select the application and who knows the application’s protocol will be able […]

Fault induction for dummies

Yesterday, I gave a talk at the SIT Smart Card Workshop in Darmstadt, a German conference on smart cards. It was my first appearance talking about Java Card 3, and the presentation was prepared on short notice. Still, there was a great welcome, although not everybody was convinced that this move was realistic. We’ll get […]

JC101-6C: Specifying the APDU’s

In our previous posts, we have written a class that is able to manage login information as password entries. This time, we will look at our application’s user interface. Well, user interface may be a bit overstated, since we will simply be defining a way to exchange information between the card and a terminal to […]

JC101-5C: Data management and transactions

The Java Card framework is very limited, and it does not include any container classes. A simple way to organize data is to use linked lists. This structure is very classical, so we will use this opportunity to discuss the way in which Java Card manages the atomicity of updates.

Happy Birthday, Java Card 2.0 !

I think that today marks the real anniversary of Java Card technology, as the first official release of the Java Card 2.0 specification is dated October 13, 1997. This is just 6 months after the creation of the Java Card Forum, and the result is far from negligible. Many of the concepts that are still […]

Mesure and more

Trusted Labs is involved in the Mesure project, whose goal is to develop open benchmarks for Java Card. There are few partners to this project (CNAM, INRIA/POPS, and us), and in particular, no major manufacturer. Yet, the idea is here to start a community that will publish some results. Performance is a sensitive piece information […]

Should we deprecate DESKey.getKey() ?

The DESKey.getKey(byte[], short) method definitely is one of the most controversial methods of the Java Card 2.1 API. This method is quite simple; as stated in its description, it “Returns the Key data in plain text”. This definition is of course a nightmare for smart card security people: not only does it access the value […]

Open Source or Security through Obscurity ?

I strongly believe that keeping things secret is not a good idea, and that security cannot be achieved through obscurity. There are many convincing examples of this, even in the smart card industry. The infamous GSM algorithms are a perfect example: cryptography using secret algorithms is a bad idea, because the algorithms get broken. Following […]

Cards are OK, but is Chip & PIN OK ?

A significant part of my job is to evaluate the security of smart cards, in particular in the banking sector. The level of security achieved in today’s card is definitely quite good, and getting a PIN out of a banking smart card remains a very difficult task. Nevertheless, the latest paper of Cambridge’s research lab […]