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 developers 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 applications 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 were sure to see major technological advances
in the next several years.
The
biggest challenge to developing a smart-card system
is also its greatest assetsecurity. Security
pervades every level of the system, software, and
chip design.