Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas

Desenvolvimento de Aplicações para Smart Cards usando Java Card, Notas de estudo de Informática

Neste artigo, os conceitos básicos da tecnologia smart card e seu uso para desenvolver pequenas aplicações usando a linguagem java card são abordados. O artigo também apresenta o projeto ric, um exemplo de aplicação que utiliza java card e oferece benefícios para a população e comercio em geral. O objetivo deste trabalho é desenvolver duas módulos: um módulo host e duas applets java card. Algumas tecnologias e recursos investigados incluem java card, smart card, protocolo de comunicação apdu e o ambiente de desenvolvimento.

Tipologia: Notas de estudo

2013

Compartilhado em 29/04/2013

ricardo-baptista-9
ricardo-baptista-9 🇧🇷

1 documento

1 / 10

Toggle sidebar

Documentos relacionados


Pré-visualização parcial do texto

Baixe Desenvolvimento de Aplicações para Smart Cards usando Java Card e outras Notas de estudo em PDF para Informática, somente na Docsity! 155 Colloquium Exactarum, Presidente Prudente, v. 3, n. 2, p. 155-164, jul/dez 2011. DOI: 10.5747/ce.2011.v03.n2.e039 UTILIZAÇÃO DE JAVA CARD COMO PLATAFORMA PARA O DESENVOLVIMENTO DE APLICAÇÕES EM SMART CARD. Lucas Plis Dolce, Francisco Assis da Silva, Silvio Antonio Carro Faculdade de Informática (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 aplicações que são executadas nos cartões. Essas aplicações necessitam oferecer além de portabilidade, comodidade e segurança, serviços com qualidade e alta disponibilidade para os usuários. Nesse artigo são abordados os conceitos principais da tecnologia Smart Card bem como o uso destas para desenvolver pequenas aplicações usando a linguagem Java Card focando o uso para sistemas de controle nas quais o cartão serviria de repositório de alguns dados e instrumento de consulta de sistemas maiores. Palavras-chave: cartões inteligentes - Java Card - Applets USING JAVA CARD AS A PLATFORM FOR DEVELOPING APPLICATIONS IN SMART CARD. 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 Colloquium Exactarum, Presidente Prudente, v. 3, n. 2, p. 155-164, jul/dez 2011. DOI: 10.5747/ce.2011.v03.n2.e039 INTRODUÇÃO O advento da Internet alterou rapidamente a maneira das pessoas se comunicarem umas com as outras, o mundo se tornou conectado e os negócios evoluíram do modelo tradicional frente a frente para o modelo virtual onde através de poucos cliques as pessoas fazem compras sem sair de suas casas ou escritórios. Esse grande crescimento do comércio eletrônico não abriu novos caminhos apenas para os comerciantes, mas também trouxe várias oportunidades para as indústrias alcançarem novos clientes e objetivos. Outro grande responsável pelo crescimento da tecnologia no mercado é a área de telecomunicação móvel, com os chips GSM, no qual a maior parte deles utiliza a tecnologia Java Card. Os Smart Cards oferecem uma maneira segura, confiável, conveniente e eficaz para garantir a segurança de comércio eletrônico e permitir uma ampla gama de novas aplicações [Chen 2000]. Como exemplos de aplicações que usam Java Card e trazem benefícios para a população e para o comércio em geral tem-se o Projeto RIC – Registro de Identidade Civil [Projeto RIC 2009] que tem como objetivo substituir o RG, CPF, Título de Eleitor, CNH, Passaporte e Carteira de Trabalho por um único cartão que contenha todos essas informações como forma de tentar acabar com as fraudes e duplicidades em serviços públicos e facilitar a vida dos cidadãos. Já na área comercial existe o sistema nomeado WhiteCard [Comsoft 2006] que é um sistema que atende a necessidade de controle de informações sobre abastecimentos de frotas em postos de combustíveis, garantindo agilidade no atendimento por não depender de nenhum sistema on-line em funcionamento no momento do abastecimento. Com base na mais avançada tecnologia disponível, o sistema é composto por um ou mais terminais de captura off-line (que são os leitores de cartão), por um ou mais cartões comerciante (usados para armazenar as informações dos abastecimentos), por um ou mais cartões consumidor (pertencentes ao dono da frota) e possui um software de gestão via web que proporciona um relacionamento transparente e confiável entre o posto e o frotista, elimina discordâncias entre relatórios de consumo e possibilita a redução de despesas administrativas com coleta e digitação de dados das bombas de combustível, preparação e emissão de relatórios. Este trabalho tem como objetivo o desenvolvido de uma aplicação em dois módulos, o primeiro é uma aplicação host que tem as funções de acessar, gravar e consultar informações no Smart Card e o segundo são 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 programação utilizada para o desenvolvimento do projeto; o Smart Card responsável por armazenar as aplicações desenvolvidas; o Protocolo de Comunicação APDU responsável pela comunicação entre o cartão e a leitora e o ambiente de desenvolvimento Eclipse com integração da biblioteca JCOP TOOLS. SMART CARD Parecido com os cartões de crédito de tarja magnética, os Smart Cards possuem capacidade de armazenamento e processamento de informações de maneira segura e confiável. O Smart Card é independente de sistema corporativo e de banco de dados, o seu funcionamento é de forma isolada. Sistemas convencionais têm seu funcionamento prejudicado caso ocorra uma falha na rede de comunicação devido ao não acesso às informações no banco de dados, esses sistemas 159 Colloquium Exactarum, Presidente Prudente, v. 3, n. 2, p. 155-164, jul/dez 2011. DOI: 10.5747/ce.2011.v03.n2.e039 Figura 3. JCVM (Máquina Virtual Java Card) O JCRE (Java Card Runtime Environment) é o ambiente de execução no cartão inteligente, é responsável por executar os aplicativos, gerenciar os recursos do cartão, comunicação e segurança. É inicializado apenas uma vez e isso ocorre durante o período de fabricação do cartão no qual são inicializados a máquina virtual e os objetos que prestam serviços para o ambiente de execução. Quando a energia é removida, o JCRE é suspenso e mantém seu estado, objetos e dados em memória persistente. Quando o cartão é re-energizado o JCRE é reiniciado e carrega os dados que estão na memória persistente retomando o seu 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 mantém em estado de execução durante uma sessão entre o cartão e o leitor (uma sessão é o tempo em que um cartão permanece conectado e energizado pelo leitor) [Chen 2000]. Na sequência são mostradas as etapas passo a passo desde a criação de uma applet Java Card até a sua instalação e execução no Smart Card. 1 – Definir as APDUs de comando e resposta: através desse protocolo de comunicação será possível inserir, consultar e excluir dados do cartão. 2 – Criar as applets: escrever o código Java Card da aplicação. 3 – Gerar os arquivos .class: através do ambiente de desenvolvimento, realiza a compilação da aplicação e automaticamente são criados os arquivos .class. 4 – Definir o AID: é um array de bytes em hexadecimal que permite que a aplicação seja selecionada, toda vez que for necessário utilizar uma aplicação a primeira coisa a ser feita é selecionar a aplicação através desse AID para depois realizar a troca de informações com o cartão. 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 cartão: através do ambiente de desenvolvimento é possível instala a aplicação no Smart Card. 7 – Envio e recebimento de comandos APDUs: após as etapas anteriores a aplicação já está pronta para ser utilizada, para se comunicar com a aplicação Java Card deve-se enviar comandos APDUs definidos na primeira etapa. 160 Colloquium Exactarum, Presidente Prudente, v. 3, n. 2, p. 155-164, jul/dez 2011. DOI: 10.5747/ce.2011.v03.n2.e039 A Figura 4 ilustra todos os passos citados anteriormente para o desenvolvimento de uma aplicação Java Card. Figura 4. Etapas para o desenvolvimento de uma aplicação Java Card PROTOCOLO DE COMUNICAÇÃO APDU (Application Protocol Data Unit) é um protocolo em nível de aplicação e foi utilizado nesse projeto para realizar a comunicação e a troca de informações entre o Smart Card e a aplicação host. Ele trabalha através de mensagens que podem ser divididas em duas estruturas: a primeira que é utilizada pela aplicação host para enviar comandos para o cartão e a segunda que é utilizada pelo cartão para enviar respostas para a aplicação 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. Cabeçalho obrigatório Corpo opcional CLA INS P1 P2 Lc Data field Le Figura 5. Formato de um comando APDU CLA: identifica a categoria dos comandos e respostas APDU. INS: especifica qual o comando. P1 e P2: usados quando necessário para fornecer mais informações para a instrução. Lc: especifica o tamanho em bytes do campo Data field. Data field: contém os dados que são enviados para o cartão executar alguma instrução. Le: especifica o numero de bytes esperado como resposta a esse comando. Corpo Opcional Cabeçalho obrigatório Data field SW1 SW2 Figura 6. Formato de uma resposta APDU Data field: dados enviados pelo cartão como resposta ao comando APDU, com o tamanho igual ao especificado no campo Le do comando APDU (Figura 5) . SW1 e SW2: são chamados de palavras de status, retornam códigos hexadecimais, por exemplo, “0x9000” que indicam se o comado foi 161 Colloquium Exactarum, Presidente Prudente, v. 3, n. 2, p. 155-164, jul/dez 2011. DOI: 10.5747/ce.2011.v03.n2.e039 executado com sucesso ou não e o que aconteceu caso tenha ocorrido algum problema. Os possíveis casos de combinação de comando e resposta APDU são mostrados na Figura 7. Figura 7. Combinações de comandos e repostas APDUs AMBIENTE DE DESENVOLVIMENTO Para desenvolver o módulo on-card foi utilizada a versão do plugin JCOP Tools 3.1.1b acompanhado das versões 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 instalação e também um kit de desenvolvimento com dois cartões JCOP21 36k e uma leitora de cartões ACR38. O módulo 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 bibliotecas instaladas tem-se o ambiente gráfico que automatizou o uso das ferramentas disponíveis para o desenvolvimento do projeto. DESENVOLVIMENTO DE APLICAÇÕES Para demonstrar o processo de desenvolvimento de uma aplicação Java Card, este artigo traz um exemplo de uma aplicação como trechos de código para enviar e receber comandos APDUs no módulo off-card e um trecho da comunicação entre os módulos internos ao cartão. A aplicação foi dividida em dois módulos: o primeiro é um módulo on-card, ou seja, um módulo que trata todas as classes, funções e serviços que foram inseridos no cartão e o segundo é um módulo off-card, ou seja, um módulo que trata toda a parte da interface gráfica da aplicação host e de como o usuário interage, se comunica e troca informações com o cartão. Módulo on-card Seguindo as etapas de como desenvolver uma applet Java Card a primeira coisa realizada foi a definição dos comandos e respostas APDUs, pelos quais o módulo on-card se comunica com o módulo off-card. A tabela 2 mostra todos os comandos APDUs definidos:
Docsity logo



Copyright © 2024 Ladybird Srl - Via Leonardo da Vinci 16, 10126, Torino, Italy - VAT 10816460017 - All rights reserved