Escolar Documentos
Profissional Documentos
Cultura Documentos
720 3847 2 PB
720 3847 2 PB
UTILIZAO DE JAVA CARD COMO PLATAFORMA PARA O DESENVOLVIMENTO DE APLICAES EM SMART CARD.
Lucas Plis Dolce, Francisco Assis da Silva, Silvio Antonio Carro
Faculdade de Informtica (FIPP) Universidade do Oeste Paulista (UNOESTE) Presidente Prudente SP. E-mail: silvio@unoeste.br
RESUMO Com o crescimento da tecnologia Java Card e o aumento do uso de Smart Cards no mercado, aumentaram-se a demanda pelo desenvolvimento de aplicaes que so executadas nos cartes. Essas aplicaes necessitam oferecer alm de portabilidade, comodidade e segurana, servios com qualidade e alta disponibilidade para os usurios. Nesse artigo so abordados os conceitos principais da tecnologia Smart Card bem como o uso destas para desenvolver pequenas aplicaes usando a linguagem Java Card focando o uso para sistemas de controle nas quais o carto serviria de repositrio de alguns dados e instrumento de consulta de sistemas maiores. Palavras-chave: cartes inteligentes - Java Card - Applets
ABSTRACT With the growth of Java Card technology and the increased use of smart cards in the market, demand for the development of applications that run on the cards has risen. These applications need to offer besides portability, convenience and safety, service quality and high availability for users. This article examines the main concepts of Smart Card technology and use these to develop small applications using the Java Card focusing on the use for control systems where the card would serve as a repository of some data and query tool for larger systems. Keywords: Smart card - Java Card - Applets
156
um ou mais terminais de captura off-line (que so os leitores de carto), por um ou mais cartes comerciante (usados para armazenar as
maneira
pessoas
comunicarem umas com as outras, o mundo se tornou conectado e os negcios evoluram do modelo tradicional frente a frente para o modelo virtual onde atravs de poucos cliques as pessoas fazem compras sem sair de suas casas ou escritrios. Esse grande crescimento do comrcio eletrnico no abriu novos caminhos apenas para os comerciantes, mas tambm trouxe vrias oportunidades para as indstrias alcanarem novos clientes e objetivos. Outro grande responsvel no pelo crescimento a rea da de
informaes dos abastecimentos), por um ou mais cartes consumidor (pertencentes ao dono da frota) e possui um software de gesto via web que proporciona um relacionamento transparente e confivel entre o posto e o frotista, elimina discordncias entre relatrios de consumo e possibilita a reduo de despesas administrativas com coleta e digitao de dados das bombas de combustvel, preparao e emisso de relatrios. Este trabalho tem como objetivo o
desenvolvido de uma aplicao em dois mdulos, o primeiro uma aplicao host que tem as funes de acessar, gravar e consultar
tecnologia
mercado
telecomunicao mvel, com os chips GSM, no qual a maior parte deles utiliza a tecnologia Java Card. Os Smart Cards oferecem uma maneira segura, confivel, conveniente e eficaz para garantir a segurana de comrcio eletrnico e permitir uma ampla gama de novas aplicaes [Chen 2000]. Como exemplos de aplicaes que usam Java Card e trazem benefcios para a populao e para o comrcio em geral tem-se o Projeto RIC Registro de Identidade Civil [Projeto RIC 2009] que tem como objetivo substituir o RG, CPF, Ttulo de Eleitor, CNH, Passaporte e Carteira de Trabalho por um nico carto que contenha todos essas informaes como forma de tentar acabar com as fraudes e duplicidades em servios pblicos e facilitar a vida dos cidados. J na rea comercial existe o sistema nomeado
informaes no Smart Card e o segundo so as applets Java Card que devem ser instaladas nos Smart Cards. Foram investigadas algumas tecnologias e recursos como: Java Card, que foi a linguagem de programao utilizada para o desenvolvimento do projeto; o Smart Card responsvel por armazenar as aplicaes desenvolvidas; o
Protocolo de Comunicao APDU responsvel pela comunicao entre o carto e a leitora e o ambiente de desenvolvimento Eclipse com
SMART CARD Parecido com os cartes de crdito de tarja magntica, os Smart Cards possuem
capacidade de armazenamento e processamento de informaes de maneira segura e confivel. O Smart Card independente de sistema
WhiteCard [Comsoft 2006] que um sistema que atende a necessidade de controle de informaes sobre abastecimentos de frotas em postos de combustveis, garantindo agilidade no
corporativo e de banco de dados, o seu funcionamento de forma isolada. Sistemas convencionais tm seu funcionamento
atendimento por no depender de nenhum sistema on-line em funcionamento no momento do abastecimento. Com base na mais avanada tecnologia disponvel, o sistema composto por
157
podem ser desenvolvidos para funcionar de maneira off-line usando Smart Cards para
Existem dois tipos de Smart Card (carto inteligente): com contato e sem contato. Smart Cards com contato necessitam de contato fsico para se comunicar e trocar informaes com o exterior, so aqueles que necessitam de um leitor de carto, como exemplo os cartes de crdito atuais que precisam ser inseridos em um leitor no caixa eletrnico para realizar determinado
armazenar as informaes sem a necessidade de consultar constantemente o banco de dados. Ao contrrio das prticas de tecnologia da informao no mbito do PC, o desenvolvimento das funcionalidades dos Smart por Cards
fortemente
influenciado
padres
internacionais como, por exemplo, ISO/IEC. A razo para isso que a interoperabilidade um fator muito importante para o Smart Card, portanto todas as suas caractersticas fsicas e eltricas so guiadas por normas e padres [Rankl 2007]. A Figura 1 representa um Smart Card.
servio. J Smart Cards sem contato so aqueles que no precisam de contato fsico para se comunicar e trocar informao com o exterior, eles possuem uma antena embutida em seu interior e se comunicam por meio de rdio frequncia, como exemplo os cartes de
transporte coletivo o qual ao se aproximar de um equipamento transmissor de rdio frequncia faz a comunicao e a troca das informaes necessrias [Rankl 2007]. Todo Smart Card contm alguns
elementos de hardware que so obrigatrios (EEPROM ou Flash, RAM, ROM e CPU) como a Figura 2, mas tambm podem conter vrios outros elementos que so opcionais e servem para determinados tipos de servios e aplicaes Figura 1. Smart Card como, por exemplo: Timer, USB, Co-processador para trabalhar com criptografia e outros.
Figura 2. Diagrama de blocos de um microcontrolador de um carto inteligente com uma interface de contato
158
No projeto foi utilizado o Smart Card JCOP - SmartMX JCOP21 V2.3.1 on Secure PKI com 36 KB de capacidade de armazenamento, com um Co-Processador auxiliar para trabalhar com funes criptogrficas RSA e ECC podendo gerar chaves RSA com comprimento de at 2432 bits, habilitado para executar algoritmos como SHA-1, MD5 e CRC e com suporte s interfaces de contato do tipo T=0 e T=1 definidas pela ISO/IEC 7816-3 [Scm 2006]. Em um Smart Card pode ser instalado qualquer tipo de aplicao de pequeno porte que seja possvel de ser executado com as limitaes do hardware existentes e que necessitem de portabilidade, comodidade e segurana como, por exemplo, aplicaes para TV a cabo ou satlite, telecomunicaes autenticao, em geral, eletrnica, identificao, controle de
memria EEPROM ou flash. Devido a limitao de hardware existente em um Smart Card a especificao Java Card suporta algumas funcionalidades da linguagem Java enquanto outras no so suportadas. A Tabela 1 relaciona algumas das funcionalidades suportadas e no suportadas.
Funcionalidades suportadas Tipos primitivos: boolean, byte, short Suporte ao tipo int opcional Arrays unidimensionais
moeda
Arrays multidimensionais
Pacotes, classes, JAVA CARD A idia da tecnologia Java Card colocar um software Java em um sistema de carto inteligente, preservando o espao suficiente para as aplicaes, no entanto, o hardware de um microcontrolador de um carto inteligente tem poder de processamento significativamente interfaces e excees Herana
Threads
Clone de objetos
A mquina virtual Java Card presente no carto dividida em duas partes: uma que executada off-card e outra que executada oncard. A parte on-card da mquina virtual responsvel por executar os arquivos CAP (Converted Applet) independente do hardware envolvido (arquivos CAP possuem uma
menor do que o hardware de um PC, ento apenas um subconjunto da linguagem Java definida pelas especificaes da linguagem Java Card. Para desenvolver aplicaes Java Card aconselhado levar em conta todos os aspectos da especificao desde o incio do processo de desenvolvimento, pois caso contrrio ser
representao binria do aplicativo desenvolvido) e a parte off-card responsvel por realizar a converso dos arquivos de classe em arquivos CAP. Essa diviso necessria devido as
bastante difcil aumentar a velocidade ou diminuir o tamanho de um programa caso necessrio [Rankl 2007].
limitaes de recursos nos dispositivos envolvidos [Chen 2000]. A Figura 3 mostra os componentes da mquina virtual.
159
JCRE
(Java
Card
Runtime
comunicao ser possvel inserir, consultar e excluir dados do carto. 2 Criar as applets: escrever o cdigo Java Card da aplicao. 3 Gerar os arquivos .class: atravs do ambiente de desenvolvimento, realiza a
Environment) o ambiente de execuo no carto inteligente, responsvel por executar os aplicativos, gerenciar os recursos do carto, comunicao e segurana. inicializado apenas uma vez e isso ocorre durante o perodo de fabricao do carto no qual so inicializados a mquina virtual e os objetos que prestam servios para o ambiente de execuo. Quando a energia removida, o JCRE suspenso e mantm seu estado, objetos e dados em memria persistente. Quando o carto re-energizado o JCRE reiniciado e carrega os dados que esto na memria persistente retomando o seu
compilao da aplicao e automaticamente so criados os arquivos .class. 4 Definir o AID: um array de bytes em hexadecimal que permite que a aplicao seja selecionada, toda vez que for necessrio utilizar uma aplicao a primeira coisa a ser feita selecionar a aplicao atravs desse AID para depois realizar a troca de informaes com o carto. 5 Gerar o arquivo .cap: todas os arquivos .class devem ser convertidos em um nico arquivo .cap como se fosse um pacote no qual todas as classes foram convertidas em um nico arquivo. 6 Instalar a applet no carto: atravs do ambiente de desenvolvimento possvel instala a aplicao no Smart Card. 7 Envio e recebimento de comandos APDUs: aps as etapas anteriores a aplicao j est pronta para ser utilizada, para se comunicar com a aplicao Java Card deve-se enviar
funcionamento no estado exato em que tinha sido deixado, a partir desse momento o JCRE fica aguardando algum comando enviado pelo
aplicativo host. O JCRE se mantm em estado de execuo durante uma sesso entre o carto e o leitor (uma sesso o tempo em que um carto permanece conectado e energizado pelo leitor) [Chen 2000]. Na sequncia so mostradas as etapas passo a passo desde a criao de uma applet Java Card at a sua instalao e execuo no Smart Card. 1 Definir as APDUs de comando e resposta: atravs desse protocolo de
160
Figura 4. Etapas para o desenvolvimento de uma aplicao Java Card CLA: identifica a categoria dos comandos PROTOCOLO DE COMUNICAO APDU (Application Protocol Data Unit) um protocolo em nvel de aplicao e foi utilizado nesse projeto para realizar a comunicao e a troca de informaes entre o Smart Card e a aplicao host. Ele trabalha atravs de mensagens que podem ser divididas em duas estruturas: a primeira que utilizada pela aplicao host para enviar comandos para o carto e a segunda que utilizada pelo carto para enviar respostas para a aplicao host. Toda mensagem de comando APDU combinada com uma mensagem de resposta APDU [Chen 2000]. As Figuras 5 e 6 representam o formato de um comando e de uma resposta APDU respectivamente. Data field: dados enviados pelo carto como resposta ao comando APDU, com o Cabealho obrigatrio CLA INS P1 P2 Corpo opcional Lc Data field Figura 5. Formato de um comando APDU Le tamanho igual ao especificado no campo Le do comando APDU (Figura 5) . SW1 e SW2: so chamados de palavras de status, retornam cdigos hexadecimais, por exemplo, 0x9000 que indicam se o comado foi Corpo Opcional Data field Cabealho obrigatrio SW1 SW2 e respostas APDU. INS: especifica qual o comando. P1 e P2: usados quando necessrio para fornecer mais informaes para a instruo. Lc: especifica o tamanho em bytes do campo Data field. Data field: contm os dados que so enviados instruo. Le: especifica o numero de bytes para o carto executar alguma
161
executado com sucesso ou no e o que aconteceu caso tenha ocorrido algum problema.
Figura 7. Combinaes de comandos e repostas APDUs AMBIENTE DE DESENVOLVIMENTO Para desenvolver o mdulo on-card foi utilizada a verso do plugin JCOP Tools 3.1.1b acompanhado das verses JDK 1.5, Eclipse Galileu 3.5.0, Java Card 2.2.1 e Global Platform 2.1.1, as bibliotecas Java Card e Global Platform j acompanham o plugin dispensando a sua instalao e tambm um kit de desenvolvimento com dois cartes JCOP21 36k e uma leitora de cartes ACR38. O mdulo off-card foi desenvolvido por meio da IDE NetBeans 6.8 acompanhado da biblioteca Java Card 2.2.1 e da API SmartcardIO. Com todas essas ferramentas e Mdulo on-card Seguindo as etapas de como desenvolver uma applet Java Card a primeira coisa realizada foi a definio dos comandos e respostas APDUs, pelos quais o mdulo on-card se comunica com o mdulo off-card. A tabela 2 mostra todos os comandos APDUs definidos: DESENVOLVIMENTO DE APLICAES Para demonstrar o processo de trecho da comunicao entre os mdulos internos ao carto. A aplicao foi dividida em dois mdulos: o primeiro um mdulo on-card, ou seja, um mdulo que trata todas as classes, funes e servios que foram inseridos no carto e o segundo um mdulo off-card, ou seja, um mdulo que trata toda a parte da interface grfica da aplicao host e de como o usurio interage, se comunica e troca informaes com o carto.
bibliotecas instaladas tem-se o ambiente grfico que automatizou o uso das ferramentas
desenvolvimento de uma aplicao Java Card, este artigo traz um exemplo de uma aplicao como trechos de cdigo para enviar e receber comandos APDUs no mdulo off-card e um
162
INS_SET_CURSOPALESTRA
INS_DEL_CURSOPALESTRA
INS_GET_NTOTALCURSOPALESTRA
INS_GET_LISTATODOSCURSOPALESTRA
Funo Define a classe de comando e resposta para essa aplicao Realiza a inscrio de cursos e (ou) palestras passados por parmetro. Realiza o cancelamento da inscrio dos cursos e (ou) palestras passados por parmetro. Retorna o numero total de inscries de cursos e palestras. Retorna o cdigo de todos os cursos e palestras que esto inscritos no carto.
(byte) 0x10
(byte) 0x20
(byte) 0x30
(byte) 0x40
applet alguns
principal mtodos
reescreve devido ao
quem tem a responsabilidade de criar uma nova instncia da applet executando o seu construtor. O mtodo process quem recebe os comandos APDUs, verifica se eles so vlidos e direciona a aplicao para executar o comando APDU. Outros dois mtodos de extrema
obrigatoriamente
relacionamento de herana que possui com a classe Applet (javacard.framework.Applet) como: Seletc, deSelect, install e process. O mtodo Select responsvel por selecionar a aplicao e retorna um valor true caso a aplicao seja selecionada. O mtodo deSelect pelo contrrio retira a seleo da aplicao, ou seja, deixa o carto liberado para utilizar outra applet. J o mtodo install o primeiro a ser acessado dentro da applet toda vez que ela for selecionada esse mtodo pode ser comparado ao mtodo main de uma aplicao Java e ele
importncia para a aplicao so os mtodos que enviam (Figura 8) e recebem (Figura 9) dados do mdulo off-card.
1 private void enviarDados(APDU apdu, byte[] dados) { 2 3 short dataLen = (short) dados.length; 4 byte[] buffer = apdu.getBuffer(); 5 Util.arrayCopyNonAtomic(dados, (short) 0, buffer, (short) 0, dataLen); 6 apdu.setOutgoingAndSend((short) 0, dataLen); 8 } Figura 8. Mtodo que envia dados para a aplicao host
163
1 private byte[] receberDados(APDU apdu) { 2 3 byte[] dados = new byte[127]; 4 byte[] buffer = apdu.getBuffer(); 5 short lengthDados = (short) (buffer[ISO7816.OFFSET_CDATA] & 0x00FF); 6 if (lengthDados == 0) 7 ISOException.throwIt(ISO7816.SW_WRONG_LENGTH); 8 Util.arrayCopy(buffer, (short) ((ISO7816.OFFSET_CDATA) & 0x00FF), 9 dados, (short) 0, (short) 100); 10 return dados; 12 } Figura 9. Mtodo que recebe dados da aplicao host
Mdulo off-card Para o desenvolvimento desse mdulo foi utilizada a API SmartcardIO que d suporte para trabalhar com a leitora de carto e com o carto. A API prev funes que listam as leitoras disponveis, as leitoras conectadas e tambm
funes que ajudam a identificar se existem cartes ou no conectados s leitoras. A Figura 10 mostra a tela principal do mdulo off-card por onde o usurio realiza a interao com o mdulo on-card.
Figura 10. Interface grfica do mdulo off-card O mdulo off-card faz toda a troca de informaes com o mdulo on-card atravs de envios e recebimentos de comandos APDUs, a Figura 11 mostra um trecho de cdigo que realiza essa operao.
164
1 if (c.getTerminal().isCardPresent()) { 2 c.iniciaComunicacao(); 3 4 byte[] select = {(byte) 0x00, (byte) 0xA4, (byte) 0x04, (byte) 0x00, (byte) 0x08, (byte) 0x43, (byte) 0x6f, 5 (byte) 0x6e, (byte) 0x74, (byte) 0x72, (byte) 0x6f, (byte) 0x6c, (byte) 0x61}; 6 byte[] apdu = {(byte) 0xB0, (byte) 0x30, (byte) 0x00, (byte) 0x00, (byte) 0x00}; 7 8 ResponseAPDU r_select = c.getCanal().transmit(new CommandAPDU(select)); 9 ResponseAPDU r = c.getCanal().transmit(new CommandAPDU(apdu)); 10 11 Informacao.append(r + "\n\n"); 12 JOptionPane.showMessageDialog(null, Host.paraStringHexa(r.getData())); 13 } else { 14 JOptionPane.showMessageDialog(null, "Carto no conectado!"); 15 } Figura 11. Acessando o mdulo on-card por meio da aplicao host No trecho de cdigo da Figura 11 podese observar a criao dos comandos APDUs (linhas 4 e 8), o comando select (linhas 4 e 5) montado agregando o AID da aplicao (43 6f 6e 74 72 6f 6c 61) em hexadecimal. Na linha 6 a aplicao selecionada e fica pronta para uso, aps isso enviado (linha 9) um comando APDU montado na linha 8 na classe de comandos e respostas APDU 0xB0 e a instruo 0x30. Feito isso a aplicao on-card retorna o nmero total de cursos e palestras inscritas no carto e uma palavra de status (SW) com valor igual a 9000 que significa que o comando foi executado com sucesso. COMSOFT. (2006). Disponvel em <http://www.comsoft.com.br/?q=produtos/whitecar d>. Acessado em: 12 dez 2010. Projeto RIC. (2009) Disponvel em: <http://jus.uol.com.br/revista/texto/17931/a-novacarteira-de-identidade-e-o-projeto-ric>. Acessado em: 10 dez. 2010. RANKL, W. (2007) Smart Card Applications: Design models for using and programming in smart cards, Edited by Kenneth Cox, John Wiley & Sons ltd., England. Scm. (2006). Disponvel em: <http://www.scmmicro.ru/upload/catalog/items/doc s/JCOP21_SPI.pdf> Acessado em: 10 dez 2010 REFERNCIAS CHEN, Z. (2000) Java Card Technology for Smart Cards: Architecture and Programmers Guide, Edited by Addison Wesley, U.S.A. citadas nesse artigo para desenvolver pequenas aplicaes de controle que venham servir de base para desenvolver outros tipos de aplicaes futuramente.
CONSIDERAES FINAIS Este trabalho foi desenvolvido com o intuito de demonstrar que os Smart Cards esto evoluindo tecnologicamente, e uso destes est cada vez mais amplo, no se concentrando apenas nas suas caractersticas e
funcionalidades originais. Cada vez mais esto sendo agregadas novas funcionalidades,
podendo ser utilizadas no apenas para efetuar transaes bancrias, mas para uma grande quantidade de aplicaes e solues. No tratado nesse artigo a parte de segurana, que envolve os cartes e o acesso s informaes armazenadas nele, pois o principal objetivo do projeto foi utilizar-se das tecnologias
Colloquium Exactarum, Presidente Prudente, v. 3, n. 2, p. 155-164, jul/dez 2011. DOI: 10.5747/ce.2011.v03.n2.e039