Cryptography tool kit on JAVA card.
Charnchai Patthananuphap
Dept of Computer and Electrical Engineering, Cornell Univ.,
Ithaca N.Y., USA
CP75@cornell.edu
Introduction
As the innovation of smart card, the full

fledged programmable objects emerge and can be
readily integrated inside
information systems using publicly available interfaces and widespread programming languages. JAVA card is one of the
new ways to fulfill the security and privacy requirement, which have never been achieved before. With its buil
t in
programmability, the card can be developed for the cryptography implementation. To conquer this challenge, various
services or JAVA card APIs have to be provided.
Objective
This project is to create and to develop a tool kit on Java Card Virtual Mach
ine for supporting Smart Card. Cryptography
and security libraries are employed to provide convenient, secure, and effective low

level interfaces for various
applications including blind signatures, secret sharing and digital signatures. The main algorithm
used in this project is
based on RSA public key (Encrypt
–
Decrypt method, Digital signature and Blind signature). The secret sharing scheme is
based on LaGrange Interpolating Polynomial Scheme.
Digital Signature & Blind Signature scheme.
Digital signatu
re uses MD5 hash function to compute the message digest and encrypts with the private key of the signer to
generate signature. Verify method is done in reverse way. The signature will be decrypted by the signer’s public key and
compare with the message dig
est from the data.
Blind signature is more complicated than regular signature. We can see this scenario displays the scheme. Suppose Alice
has a message
m
that she wishes to have signed by Bob, and she does not want Bob to learn anything about
m
. Let (
n
,
e
)
be Bob's public key and (
n
,
d
) be his private key. Alice generates a random value
r
such that gcd(
r
,
n
) = 1 and sends
x
=
(
r
e
m
) mod
n
to Bob. The value
x
is “blinded” by the random value
r
; hence Bob can derive no useful information from it.
Bob returns t
he signed value
t
=
x
d
mod
n
to Alice. Since
x
d
= (
r
e
m
)
d mod n
=
r m
d
mod n
Alice can obtain the true signature
s
of
m
by computing
s
=
r

1
t
mod
n
.(from www.rsa.security.com)
Secret Sharing.
Secret sharing is a method to distribute secret into n
parts and allow the m parts of shares to construct the original secret
(m<n). Random data and polynomial equations are used to compute the shares of the secret. To retrieve secret we need
at least m shares to calculate the secret back.
Polynomial functi
on used to calculate secret sharing is as follow.
To generate (m,n) secret sharing.
F(x) = (a
m
x
m
+ a
m

1
x
m

1
+ … + a
1
x +M)mod p
When a is randomly chosen, p is a large prime number and M is the secret. To construct the secret needs m part of shares
to solve
the equation.
Conclusion.
At present this project is in progress. All codes are implemented by sun java card tool kit 2

1

2 and tested in jcwde java
card simulator.
Comments 0
Log in to post a comment