|
Overview
Like most computer hardware, the price of smart cards is
steadily decreasing, while performance and capacity are improving all the time. You can
now buy a fully-functional computer, the size of your thumb-nail, for just a euro or two.
However, before the BasicCard arrived, the cost of developing software for smart cards was
out of all proportion to the cost of the hardware. A typical development project might
take six months and cost a quarter of a million euros. This was a major barrier to the
widespread use and acceptance of smart cards.
But now you can program your own smart card in an
afternoon, with no previous experience required. If you can program in Basic, you can
design and implement a custom smart card application. With ZeitControls BasicCard,
the development cycle of writing code, downloading, and testing takes a few minutes
instead of weeks.
The Smart Card Environment
Obviously, programming a smart card is not the same as
programming a desktop computer. It has no keyboard or screen, for a start. So how does a
smart card receive its input and communicate its output? It talks to the outside world
through its bi-directional I/O contact. Communication takes place at 9600 baud or more,
according to the T=0 and T=1 protocols defined in ISO/IEC standards 7816-3 and 7816-4. But
this is completely invisible to the Basic programmer all you have to do is define a
command in the card, and program it like an ordinary Basic procedure. Then you can call
this command from a ZC-Basic program running on the PC. Again, the command is called as if
it was an ordinary procedure.
The BasicCard operating system takes care of all the
communications for you. It will even encrypt and decrypt the commands and responds if you
ask it to. All you have to do is specify a different two-byte ID for each command that you
define. (If you are familiar with ISO/IEC 7816-4: Interindustry commands for
interchange, you will know these two bytes as CLA and INS, for Class and
Instruction.)
Here is a simple example. Suppose you run a discount
warehouse, and you are issuing the BasicCard to members to store pre-paid credits. You
will want a command that returns the number of credits left in the card. So you might
define the command GetCustomerCredits, and give it an ID of &H20 &H01 (&H is
the hexadecimal prefix):
Eeprom CustomerCredits ' Declare a permanent
Integer variableCommand &H20
&H01 GetCustomerCredits (Credits)
Credits = CustomerCredits
End Command
You can call this command from the PC with the following
code:
Const swCommandOK = &H9000Declare Command &H20 &H01 GetCustomerCredits
(Credits)
Status = GetCustomerCredits (Credits)
If Status <> swCommandOK Then GoTo
CancelTransaction
The value &H9000 is defined in ISO/IEC 7816-4 as
the status code for a successful command. This value is automatically returned to the
caller unless the ZC-Basic code specifies otherwise. The return value from a command
should always be checked, even if the command itself has no error conditions for
instance, the card may have been removed from the reader.
Its as simple as that. Of course, there is a lot more
going on below the surface, but you dont have to know about it to write a BasicCard
application.
Technical Summary
All BasicCard families (Compact, Enhanced, and
Professional) contain:
- a full implementation of the T=1 block-level
communications protocol defined in ISO/IEC 7816-3: Electronic signals and
transmission protocols, including chaining, retries, and WTX requests;
- a command dispatcher built around the structures defined in ISO/IEC
7816-4: Interindustry commands for interchange (CLA INS P1 P2 [Lc
IDATA] [Le] );
- built-in commands for loading EEPROM, enabling encryption,
etc.;
- a Virtual Machine for the execution of ZeitControls
P-Code;
- code for the automatic encryption and decryption of commands
and responses, using the AES, DES, or SG-LFSR symmetric-key
algorithm.
Enhanced and Professional BasicCards contain in addition:
- a directory-based, DOS-like file system;
- IEEE-compatible floating-point arithmetic.
The functionality of the Enhanced BasicCard family can be
further extended using Plug-In Libraries.
Professional BasicCards contain in addition:
- a Public-Key algorithm (RSA or EC);
- a full implementation of the T=0 byte-level
communications protocol defined in ISO/IEC 7816-3: Electronic signals and
transmission protocols;
- the SHA-1 Secure Hash Algorithm.
The data sheet on the next page contains details of
available BasicCards versions, and the cryptographic algorithms that they support.
Development Software
The ZeitControl MultiDebugger software support
package consists of:
- ZCPDE, the Professional Development Environment;
- ZCMDTERM and ZCMDCARD, debuggers for Terminal
programs and BasicCard programs;
- ZCMBASIC, the compiler for the ZC-Basic language;
- ZCMSIM, for low-level simulation of Terminal and
BasicCard programs;
- BCLOAD, for downloading P-Code to the BasicCard;
- KEYGEN, a program that generates random keys for use
in encryption;
- BCKEYS, for downloading cryptographic keys to the
Compact and Enhanced BasicCards.
Compact BasicCard
Version |
EEPROM |
RAM |
Protocol |
Encryption |
Floating-Point
Support |
File System |
ZC1.1 |
1K |
256 bytes |
T=1 |
SG-LFSR |
None |
No |
Enhanced BasicCard
Version |
EEPROM |
RAM |
Protocol |
Encryption |
Extras |
FP Support |
File System |
ZC3.1 |
2K |
256 bytes |
T=1 |
DES |
|
Full |
Yes |
ZC3.2 |
4K |
256 bytes |
T=1 |
DES |
|
Full |
Yes |
ZC3.3 |
8K |
256 bytes |
T=1 |
DES |
|
Full |
Yes |
ZC3.4 |
16K |
256 bytes |
T=1 |
DES |
|
Full |
Yes |
ZC3.5 |
6K |
256 bytes |
T=1 |
DES |
EC-FSA1 |
Full |
Yes |
ZC3.6 |
14K |
256 bytes |
T=1 |
DES |
EC-FSA1 |
Full |
Yes |
ZC3.7 |
2K |
256 bytes |
T=1 |
DES |
|
Full |
Yes |
ZC3.8 |
4K |
256 bytes |
T=1 |
DES |
|
Full |
Yes |
ZC3.9 |
8K |
256 bytes |
T=1 |
DES |
|
Full |
Yes |
1 EC-FSA:
Fast Signature Algorithm for Elliptic Curve Cryptography
Plug-In Libraries for the Enhanced
BasicCard: EC-161, AES, SHA-1, IDEA
Professional BasicCard
Version |
PK Algorithm |
EEPROM |
RAM |
Protocol |
Encryption |
Extras |
FP Support |
File System |
ZC4.5A |
RSA |
30K |
1K |
T=0,
T=1 |
AES |
SHA-1 |
Partial1 |
Yes |
ZC4.5D |
RSA |
30K |
1K |
T=0,
T=1 |
DES |
SHA-1 |
Partial1 |
Yes |
ZC5.4 |
EC-167 |
16K |
1K |
T=0,
T=1 |
AES &
DES |
SHA-1 |
Full |
Yes |
ZC5.5 |
EC-167 |
31K |
1.7K |
T=0,
T=1 |
EAX/OMAC/
AES/ DES |
SHA-1 |
Full |
Yes |
1 Single-to-String
conversion not supported
MultiApplication BasicCard
Version |
PK Algorithm |
EEPROM |
RAM |
Protocol |
Encryption |
Extras |
FP Support |
File System |
ZC6.5 |
EC-167 |
31K |
1.7K |
T=0,
T=1 |
EAX/OMAC/
AES/ DES |
SHA-1 |
Full |
Yes |
Public-Key Algorithms
| Name |
Description |
Key size |
Reference |
| RSA |
Rivest-Shamir-Adleman algorithm |
1024 bits |
IEEE P1363: Standard
Specifications for Public Key Cryptography |
| EC-167 |
Elliptic Curve Cryptography over
the field
GF(2167 ) |
167 bits |
| EC-161 |
Elliptic Curve Cryptography over
the field
GF(2168 ) |
161 bits |
Symmetric-Key Algorithms
| Name |
Description |
Key size |
Reference |
| EAX |
Encryption with Authentication
for Transfer (using AES) |
128/192/
256 bits |
EAX: A Conventional
Authenticated-Encryption Mode1
M. Bellare, P. Rogaway, D. Wagner |
| OMAC |
One-Key CBC-MAC (using AES) |
128/192/
256 bits |
OMAC: One-Key CBC MAC1
Tetsu Iwata and Kaoru Kurosawa
Department of Computer and Information Sciences, Ibaraki University
4121 Nakanarusawa, Hitachi,
Ibaraki 316-8511, Japan |
| AES |
Advanced Encryption Standard |
128/192/
256 bits |
Federal Information Processing
Standard FIPS 197 |
| DES |
Data Encryption Standard |
56/112 bits |
ANSI X3.92-1981: Data Encryption
Algorithm |
| SG-LFSR |
Shrinking Generator Linear
Feedback Shift Register |
64 bits |
D. Coppersmith, H. Krawczyk, and
Y. Mansour, The Shrinking Generator, Advances in Cryptology CRYPTO 93
Proceedings, Springer-Verlag, 1994 |
| IDEA |
International Data Encryption
Algorithm |
128 bits |
X. Lai, On the Design and
Security of Block Ciphers, ETH Series in Information Processing, v. 1, Konstanz:
Hartung-Gorre Verlag, 1992 |
1 These
documents are available at http://csrc.nist.gov/CryptoToolkit/modes/proposedmodes/
Data Hashing Algorithms
| Name |
Description |
Reference |
| SHA-1 |
Secure Hash Algorithm,
revision 1 |
Federal Information Processing
Standard FIPS 180-1 |
Communication Protocols
| Name |
Description |
Reference |
| T=0 |
Byte-level transmission protocol |
ISO/IEC 7816-3:
Electronic signals and transmission protocols |
| T=1 |
Block-level transmission protocol |
Download Development
Software
Contact: Sales@basiccard.com
This page was last changed on:
08/07/2004, 15:00 UTC |