sexta-feira, 3 de dezembro de 2010

A Arquitetura Java Card


O Java Card.
Smart Cards representam uma das menores plataformas computacionais do mundo, isso quer dizer são limitados em recurso de processamento e memória.
Conforme visto é de se imaginar o enorme desafio que foi implementar a plataforma Java e ainda otimizar recursos para instalação de diversos Applets, confiram. 


 Java Card Virtual Machine (JCVM).

A JCVM é responsável pela interpretação do bytecode (compilação do código escrito em Java)  e diferente da JVM dos Desktops, a JCVM foi estratégicamente dividida em duas partes, uma "off-card"(fora do cartão) e outra "on-card"(dentro do cartão).
A parte off-card é responsável por todo serviço pesado e roda no PC onde está sendo desenvolvida a aplicação, essa parte cuida do Class Loading, verificação do bytecode, linking e otimizações.
A parte on-card como é de se esperar interpreta o bytecode, porém devida aos limitados recursos dos cartões apenas um Subset Java (parte da linguagem) é suportada, alguns cartões implementam o Garbage Collector porém é opcional.

Caracteristicas Java Suportadas (Java Card 2.2.2):
  • Tipos Primitivos : boolean, byte e short.
  • Arrays de Uma Dimensão.
  • Java packages, classes, interfaces e exceptions.
  • Orientação a Objetos, heranças, métodos virtuais, sobrecarga e escopo de acessos.
  • O Tipo int de 32 bit integer é opcional (logo não use). 
Caracteristicas Java Não Suportadas (Java Card 2.2.2):
  • Tipos Primitivos: long, double e float.
  • char e String.
  • Arrays Multi-Dimensionais.
  • Carga de Classe Dinamica.
  • Gerenciador de Segurança.
  • Garbage Collector (alguns cartões implementam) e finalizador.
  •  Threads.
  • Serialização de Objetos.
  • Clonagem de Objetos.
 Arquivos CAP e Export.
Uma explicação sucinta sobre o que é um arquivo CAP, ele nada mais é que um JAR com a mesma estrutura inclusive zipado. Ou seja é o binário executavel do Java Card.
Export files não são usados no processo on-card, eles são como arquivos Header para linking como os da Linguagem C, na parte em que eu for explicar sobre como compilar Applets mostrarei como se usa os arquivos EXP.

Java Card Virtual Machine
 Java Card Runtime Environment (JCRE).
Como o própio nome diz "Ambiente de Execuçao Java Card", é o coração do Java Card.
O JCRE provê uma clara separação entre o sistema do Smart Card e as Aplicações (Applets).
O JCRE é responsável pelo gerenciamento de recursos, rede de comunicações, execução dos Applets provendo todo serviço on-card (JCVM), instala os Applets, gerencia segurança, emcapsula e oculta o Hardware do fabricante, etc.
Muitos fabricantes embutem suas próprias API's nessa camada como sendo um diferencial no produto, como por exemplo algorítimos de Criptografia não suportadas nativamente pela API padrão do Java Card, emulador de cartões MiFare, implementações PKCS#15 usados para certificação digital, ou até implementações do prórpio cliente. Para isso se dá o nome de customização da Máscara da ROM do cartão.
Como pode ser visto o JCRE faz tudo no cartão, não entrarei a fundo sobre isso pois é assunto para um livro.


Java Card Runtime Environment 2.2.2


Java Card  Runtime Environment 3.0.1


Java Card API's.
Consiste de um grupo padrão de classes para desenvolvimento de aplicações de acordo com o modelo ISO7816.
Uma analogia com o JDK(Java Development Kit) onde temos:
java.lang.System
No JCDK(Java Card Development Kit) temos :
javacard.framework.JCSystem
Para quem está acostumado no desenvolvimento Java, é simples assim sem segredos.


Essa é a arquitetura Java Card de maneira resumida, no próximo artigo estarei introduzindo o ISO7816 Parte 4 que é praticamente o Dialeto que usaremos para se comunicar-se com o cartão.


Bibliografia : Java Card TM Technology for Smart Cards, Autor : Zhiqun Chen, Editora : Addison-Wesley, ISBN : 0-201-70329-7
 
Até a Próxima, Abraços!

4 comentários:

  1. Ricardo, um cliente me trouxe um Smart Card modelo JCOP 2.4.1 e pediu que eu faça um software que envie a nele um comando que gere internamente no cartão as chaves publicas e privadas RSA 1024. Tenho pesquisado muito e não tenho conseguido muito progresso na comunicação com o cartão, pode me ajudar? Desde já agradeço, Sergio. sergio_rib@uol.com.br - contato@nse.com.br.

    ResponderExcluir
  2. Amigo, onde eu encontro uma JCVM? estou procurando há 2 dias...

    ResponderExcluir

Observação: somente um membro deste blog pode postar um comentário.