Take the 2-minute tour ×
Cryptography Stack Exchange is a question and answer site for software developers, mathematicians and others interested in cryptography. It's 100% free, no registration required.

I want to implement some of the basic encryption algorithms on smart card, could any body guide me, how to program a smart card, which tools (hardware and software) i should have ,and are these tools are free?

further i need to explore, is it possible to implement Bi-linear pairing on smart cards or ECC algorithms?

thanks

share|improve this question
add comment

1 Answer

Generally it is not advisable to create your own cryptographic operations on a smart card. When programming a smart card you need to understand the risks of side-channel attacks and perturbation attacks. For instance, you may need to program your way around DPA (Differential Power Analysis) and LFI attacks (Laser Fault Injection).

Normally you program on top of an operating system. This operating system contains cryptographic libraries (normally written in C). These libraries in turn depend on the cryptographic co-processor(s) on the smart card. In general the co-processors consists of one or more specialized implementations of block ciphers (DES and AES) and an asymmetric co-processor that contains a Montgomery multiplier.

If you want to implement your own routines you probably need a development environment for a specific smart card OS. It is likely that your level of access requires an IDE to perform C-written code for a specific processor. I think that the KEIL development tools are most commonly used.

ECC algorithms are present on a lot of high end smart cards. Be aware that RSA may still be more secure regarding side channel attacks. Unfortunately I don't have information about Bi-linear pairing on a smart card.

share|improve this answer
    
Nice answer. I hesitate to mention Java Card Smart Cards. Development tools for that are easily obtainable. JC is nice for many applications using TDES, RSA, SHA-1, increasingly ECDSA, AES, SHA-256. However, bi-linear pairing performance would be abyssal if using the tiny subset of Java available, and security questionable; and the existing API to the crypto hardware tends to be too high level. Some Java Card implementations allow modular exponentiation in $\mathbb Z_N$ by importing a fake RSA private key then using a raw RSA decryption API, but can bi-linear paring be built on top of that? –  fgrieu Jun 8 '13 at 8:47
    
@fgrieu As you know I'm pretty much involved with Java Card development, but Java Card is not something you use to create (low level) cryptographic algorithms. –  owlstead Jun 8 '13 at 12:14
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.