circuitcellar.com
Magazine Support   Digital Library   Products & Services   Suppliers Directory 
 
 





 

Issue 96 July 1998
Designing for Smart Cards
Part 1: What's a Smart Card All About


by Carol Hovenga Fancher

The appropriate development environment hinges on the need for a proprietary versus standard solution (e.g., configurable off-the-shelf). You also have to take into account the developer’s expertise, timeframe, and resources.

The traditional, most hands-on, resource-intensive, and time-consuming setup is to develop software using development tools specific to the smart card controller. This task usually requires assembly-code development.

However, tools specific to smart-card devices are often treated as confidential. They often require customer qualification before being provided (another security aspect that limits the access to smart- card information to those that have a need to know).

This method results in the most proprietary solution, is most tailored to the application’s need, and is most efficient in code space. However, it restricts the available pool of knowledgeable developers and requires the longest development cycle.

You can also customize an available operating system to the specific application. Several companies offer OSs that target a particular application area and provide commonly used data structures, functionality, security techniques, and some customization.

These environments are provided with a higher level development tool and usually include the basics of a smart-card system (i.e., a handful of cards and a reader). This approach supports a faster time-to-market and requires less device-level expertise.

However, the resulting software may not be optimal. Tradeoffs often have to be made to fit within the customization options available, and the result is less efficient and proprietary code.

Advances in the smart-card controller also offer possible solutions. The advent of object-oriented software, such as Java interpretive code for smart cards, has radically changed the potential development environment.

You can develop an application applet using a commercial Java development environment and a smart card Java development kit, which contains a handful of cards with the interpretive code. The Java layer provides management and partitioning for a number of applications.

This approach minimizes time-to-market, considerably widens the field of potential developers, and results in a unique solution for the system. Most importantly, it supports the growing demand for multiapplication cards.

The major disadvantage is that, as a new technology, there are limited sources for the Java cards, and current smart-card microcontrollers are pushed to their performance limits by the demands of an interpreted layer. But, both of these concerns will rapidly change with new products coming to the market.

SMART CARDS AND SECURITY

By combining portability, computing power, and improved security, smart cards can be used in a growing number of applications. This proven technology has mature standards and a global-components infrastructure, so we’re sure to see major technological advances in the next several years.

The biggest challenge to developing a smart-card system is also its greatest asset—security. Security pervades every level of the system, software, and chip design.