LISTAS DE ILUSTRAÇÕES
LISTAS DE QUADROS
SUMÁRIO
1. INTRODUÇÃO........................................................................................................................... 7
1.1. OBJETIVOS............................................................................................................................... 7
1.1.1. Geral........................................................................................................................................ 8
1.1.2. Específicos .............................................................................................................................. 8
1.2. JUSTIFICATIVA/PROBLEMATIZAÇAO............................................................................... 8
2. REVISÃO DA LITERATURA ................................................................................................ 11
2.1. SMART CARDS...................................................................................................................... 11
2.1.1. História dos Smart Card ..................................................................................................... 12
2.1.2. Estrutura de um Smart Card ............................................................................................. 14
2.1.2.1. Memórias utilizadas em Smart Card................................................................................. 14
2.1.2.2. Cartões de memória .......................................................................................................... 14
2.1.2.3. Cartões com microprocessador:........................................................................................ 15
2.1.2.4. Cartões com Contato (Contact Card) ............................................................................... 16
2.1.2.5. Cartões sem Contato (Contactless Card).......................................................................... 17
2.1.2.6. Cartões Híbridos (Hibrid Card)........................................................................................ 17
2.1.2.7. Duas Interfaces (Combi Cards) ........................................................................................ 18
2.1.3. Protocolos de transmissão ................................................................................................... 18
2.1.4. Protocolo APDU................................................................................................................... 19
2.1.4.1. Estrutura de um comando APDU ..................................................................................... 19
2.1.4.2. Estrutura de uma resposta APDU ..................................................................................... 20
2.1.5. ATR20
2.1.6. Especificações e normas técnicas........................................................................................ 21
2.1.6.1. ISO/IEC 7816 ................................................................................................................... 21
2.1.6.2. EMV 21
2.1.6.3. PC/SC - Personal Computer/Smart Card .......................................................................... 22
2.1.6.4. GlobalPlataform................................................................................................................ 22
2.1.7. Áreas de aplicação com Smart Card.................................................................................. 22
2.1.7.1. Identificação física............................................................................................................ 23
2.1.7.2. Controle de acesso físico .................................................................................................. 23
2.1.7.3. Serviços financeiros.......................................................................................................... 23
2.1.7.4. Transporte......................................................................................................................... 24
2.2. PLATAFORMA JAVA CARD................................................................................................ 24
2.2.1. JCRE - Java Card Runtime Environment ....................................................................... 27
2.2.1.1. JCVN – Java Card Virtual Machine ................................................................................. 29
2.2.1.2. Java Card API................................................................................................................... 30
2.3. FERRAMENTAS E MÉTODOS PARA DESENVOLVIMENTO SMART CARD .............. 31
2.3.1. Open Card Framework ....................................................................................................... 31
2.3.2. OpenSC................................................................................................................................. 32
2.3.3. MUSCLE .............................................................................................................................. 32
2.3.4. SIM Toolkit .......................................................................................................................... 32
3. MATERIAIS E MÉTODOS .................................................................................................... 33
REFERÊNCIAS .................................................................................................................................... 36
APENDICE A – Partes que compõem a norma ISO/ICE 7816 ............................................................ 38
APENDICE B - Exemplo de código Java Card .................................................................................... 39
7
1. INTRODUÇÃO
1.1. OBJETIVOS
1.1.1. Geral
1.1.2. Específicos
1.2. JUSTIFICATIVA/PROBLEMATIZAÇAO
Os Smart Cards ou cartões inteligentes são muito populares na Europa e o seu uso é
impulsionado principalmente pela capacidade de armazenar e processar as informações
contidas no cartão. Essa característica faz com que o cartão inteligente seja um grande aliado
na segurança de informação preservando todas as informações contidas nele, pois toda a
informação é criptografada num circuito eletrônico e fica disponível para ser utilizada
somente pelas partes autorizadas evitando assim fraudes (CUNHA, 2009).
9
A evolução por parte de grupos industriais fez com que o emprego de cartões
inteligentes fosse estendido para outras áreas sendo hoje uma tecnologias em constante
evolução, segundo Sargento (2009) “o investimento das empresas em Smart Cards tem vindo
a crescer progressivamente num mercado que vai se agitando com diferentes projetos que
surgem quer do lado da administração pública quer do lado do setor privado”.
Hoje o uso dos cartões inteligentes se estende a inúmeras áreas de aplicação, dentre
elas podemos destacar a telefonia, identificação pessoal, sistema de segurança por
computador, controle de acesso, vale transporte, vale alimentação, convênios, sistemas de
fidelidade e TV via satélite (HSBC, 2009).
No âmbito mundial existe em Portugal o uso do Cartão Cidadão que é um cartão de
identificação utilizado no país. Esse cartão oferece identificação visual e eletrônica do
usuário, alem de permitir acesso aos principais serviços públicos e privados unindo
praticamente todos os documentos em um. Esse projeto e um grande fator de modernização da
administração pública e traz muitas vantagens para os seus usuários.
alem do seu uso evitar filas na compra de bilhetes e evitar a necessidade de transportar
dinheiro (URBS, c2008).
A grande evolução no uso dos cartões inteligentes ocorreu principalmente pelo seu
poder de processamento e de armazenamento de dados, isso fez com que surgisse e
amadurecesse tecnologias que pudessem ser empregadas no desenvolvimento de aplicações
para cartões inteligentes. A tecnologia Java Card permite que desenvolvedores executem todo
o ciclo de desenvolvimento de uma aplicação Java comum reduzindo os custos no
desenvolvimento de uma aplicação e garantindo interoperabilidade entre diferentes
fabricantes de cartões.
Os desenvolvedores possuem vantagens nativas da linguagem Java adaptadas para
executar em dispositivos com recursos limitados e maior modularidade e reutilização de
código com o paradigma orientado a objeto. O JCDK oferece as principais ferramentas para o
desenvolvimento e implementação de aplicativos escritos em Java, incluindo a JCVM e
diversas ferramentas de gestão e testes. Hoje se observa uma grande dificuldade para iniciar
os estudos sobre a tecnologia Java Card. É uma tecnologia que está em ascensão e cada vez
mais sendo adotada pelo mercado da tecnologia de informação.
Entre as maiores dificuldades encontradas estão falta de bibliografia em português
sobre técnicas e meios de desenvolvimento de aplicativos para cartões utilizando Java Card,
falta de orientação para escolha de dispositivos que podem ser usados com Java Card,
preparação de ambiente para desenvolvimento, simulação e testes, materiais que contribuem
para o desenvolvimento de aplicativos e ferramentas que auxiliam o desenvolvedor Java Card.
Portanto devido a esses fatores foi observado uma grande oportunidade de contribuir
com o meio acadêmico e desenvolver um documento que possa ser utilizado para minimizar
essas dificuldades.
11
2. REVISÃO DA LITERATURA
O uso dos cartões de plástico iniciou nos Estados Unidos na década de 50 onde a
Dinners Club começou a emitir cartões para serem aceitos como forma de pagamento em
alguns restaurantes e hotéis. Esses cartões eram feitos de PVC o que garantia uma vida útil
maior do que os feitos de papel. A partir daí empresas como VISA e MasterCard iniciaram a
sua participação no mercado de cartões de plástico onde iniciou um grande avanço
tecnológico e passou-se a utilizar cartões com tarja magnética e impressão em alto relevo que
permitia a leitura de dados adicionais no cartão porem não garantia total segurança já que
qualquer equipamento adequado podia ler excluir e apagar os dados na tarja magnética.
Posteriormente surgiram os cartões com circuito integrado que tinham um nível maior de
segurança (RANKEL; EFFING, 2003) e (PETRI, 1999).
Na década de 70 com inicio dos avanços na microeletrônica foi possível produzir
chips em quantidade e com qualidade a preços acessíveis. Em 1968 o primeiro pedido de
patente de um cartão com circuito integrado foi solicitado pelos engenheiros alemães Jürgen
Dethloff e Helmut Gröttrup e tiveram na seqüência em 1970 o pedido de patente semelhante
feito no Japão por Kunitaka Arimura. “As maiores contribuições na área foram realizadas por
Ronald Moreno um jornalista Frances que entre 1974 e 1979 solicitou 47 pedidos de patentes
relacionadas com cartões inteligentes em 11 países”. (JURGENSEN; GUTHERY, 2002)
Em 1977 tem inicio a produção em massa de cartões inteligentes lideradas pelas
fabricantes Bull CP8, SGS Thomson, Schlumberger, em 1978 a BULL registra a patente do
SPOM (Self Programmable One Chip Microcomputador), que define a estrutura de um chip
que integra todos os elementos em um micro controlador. Em 1980 a Motorola desenvolve o
primeiro chip baseado nas especificações do SPOM. O grande avanço no uso de cartões
inteligentes teve inicio no ano de 1984 quando Serviço Postal e de Telecomunicações da
Franca (French PTT) iniciou os testes em cartões telefônicos com chips em ATMs. No
mesmo ano tem inicio na Franca e na Alemanha testes com o uso de cartões inteligentes em
operações bancarias. Segundo (PETRI, 1999) “em 1986, muitos milhões de cartões
13
Data Descrição
1970 Dr. Kunitaka Arimura do Japão registrou a primeira patente sobre o conceito de Smart Card.
1974 Roland Moreno da França registrou a patente original para o cartão IC, posteriormente
apelidado de "smart card".
1977 Três fabricantes comerciais, Bull CP8, SGS Thomson e Schlumberger começaram a
desenvolver o cartão IC.
1979 Motorola desenvolveu o primeiro chip micro controlador para utilização no setor bancário
francês.
1982 Testes com cartões de memória são iniciados na França, é o primeiro teste do mundo com
cartão IC.
1984 Teste com cartões bancários em ATM com chips foram realizados com sucesso.
1986 14.000 cartões equipados com o CP8 Bull foram distribuídos aos clientes do Banco da
Virgínia e de Maryland National Bank. 50.000 cartões Casio foram distribuídos aos clientes
do First National Palm Beach e do Banco Mall.
1993 Testes com cartões multi-aplicação em Rennes na França onde a função Telecarte (para
telefones públicos) foi ativado em um Banco de Smart Card.
1994 Europay, MasterCard e Visa (EMV) publicam especificações comuns para o microchip
baseada em cartões bancários (cartões inteligentes).
Na Alemanha começa a emissão de 80 milhões de cartões de memória em série com chips de
cartões de saúde do cidadão.
1995 Mais de 3 milhões de assinantes de telefonia móvel digital no mundo inteiro começam fazer
chamadas com cartões inteligentes.
Os primeiros 40.000 cartões multifuncionais com chips de tecnologia MARC foram emitidos
para Marinha Americana no Havaí.
1996 Mais de 1,5 milhões cartões VISA Cash de valor armazenado foram emitidos nos Jogos
Olímpicos de Atlanta.
MasterCard e Visa começam o patrocínio de consórcios para trabalhar na resolução dos
problemas de interoperabilidade de cartões inteligentes. Duas soluções de cartões diferentes
foram desenvolvidas, o JavaCard apoiado pela Visa, e o Multi-application Operating System
(MULTOS) apoiado pela MasterCard.
1999 O Governo dos EUA junto com o Serviço de Administração (GSA) inicia o projeto Smart ID,
Smart Access Comum ID Card, o programa estabeleceu um contrato de veículos para
utilização por todas as agências federais para adquirir um padrão de interoperabilidade do
cartão de identificação do empregado, a partir de um ou mais fornecedores, capazes de
fornecer tanto acesso físico como lógico (sistema / rede) e o acesso a todos os empregados do
Governo.
O Governo Americano (General Services Administration) começou uma aplicação piloto
utilizando Java Card em Washington na região metropolitana.
Quadro 1: Marcos no desenvolvimento da tecnologia de cartão inteligente
Fonte: Adaptado de Cardwerk (2008).
avanços tecnológicos está cada vez mais intenso o uso de cartões inteligentes (MAYES;
MARKANTONAKIS, 2008).
Tipo Descrição
ROM (Read Only Memory) Tipo de memória somente leitura, quando usada em cartões
inteligentes armazena informações do sistema operacional e
algumas outras rotinas, esses dados são gravados pelo fabricante do
cartão durante o processo de fabricação do mesmo, possui baixo
custo e ocupa pouco espaço no chip.
EEPROM (Electrically Erasable E a memória não volátil em cartões inteligentes, funciona de forma
Programmable Read-Only Memory) semelhante a um HD de um computador pessoal armazenando
dados no cartão quando o mesmo não é alimentado por energia.
RAM (Random Access Memory) Memória de acesso rápido e utilizada pelos aplicativos durante a
interação entre o CAD e o cartão.
Quadro 2: Tipos de memória comumente utilizadas em cartões inteligentes
Fonte: Adaptado de Rankel (2007, p. 6-9).
algumas informações do chip e os dados são controlados por uma lógica de segurança contra
exclusão e gravação de dados, em outros casos existem cartões com lógicas de segurança mais
complexas que utilizam esquemas simples de criptografia (RANKEL; EFFING, 2003).
Os principais sistemas operacionais Java Card são IBM JCOP licenciado para os
principais fabricantes de cartões e o Prisma desenvolvido pela Proton World International e
que atualmente faz parte da ST Microelectronics. Esses sistemas operacionais operam com as
principais características e especificações do ambiente Java Card (HENDRY, 2007).
A troca de informações é feita através de contato físico do cartão com o CAD. São
utilizados em inúmeras áreas de aplicação e possibilitam o processamento de um grande
número de informação. O cartão possui 8 contatos conforme norma ISO 7816-2 porém apenas
6 são usados (MAYES; MARKANTONAKIS, 2008).
Possui dois chips em um mesmo cartão sendo que um é acessado através de seus
contatos físicos e outro acessado através de radiofreqüência (ID EDGE, 2009).
18
O cartão tem duas interfaces, onde um mesmo microcontrolador pode ser acessado
através de contato físico ou através de radiofreqüência (ID EDGE, 2009).
Protocolo Significado
T=0 Assíncrona, half-duplex, orientado a byte, especificado na norma ISO / IEC 7816-3
T=1 Assíncrona, half-duplex, orientado a bloco, especificados na norma ISO / IEC 7816-3
T=2 Assíncrona, full-duplex, orientado a bloco, especificados na norma ISO / IEC 10536-4
T=3 Full-duplex, ainda não especificado
T=4 Assíncrona, half-duplex, orientado a byte, extensão de T = 0, ainda não especificado
T =5 ... T = 13 Reservado para uso futuro, ainda não especificado
T = 14 Para uso nacional ainda não padronizados pela ISSO
T = 15 Reservado para uso futuro e ainda não especificado
Quadro 3: Resumo dos protocolos de transmissão de acordo com a norma ISO / IEC 7816-3
Fonte: Rankel e Effing (2003, p. 396).
Apenas dois protocolos de transmissão são utilizados atualmente por normas e padrões
internacionais.
O T=0 foi o primeiro a ser utilizados e parte do princípio de envio byte a byte, tem a
vantagem de consumir menos memória, é muito utilizado em cartões para comunicação móvel
é definido pela norma ISO / IEC 7816-3. Já o protocolo T=1 que envia blocos de bytes
também é definido pela norma ISO / IEC 7816-3. Por ser orientado a bloco toda a vez que um
bloco e enviado do terminal para o cartão a resposta do mesmo é devolvida pelo cartão
mantendo uma alternância de envio e retorno de informação. É um protocolo mais robusto e
possui mecanismos de detecção e reenvio de blocos que contem erros, é utilizado em sistemas
de cartões de pagamento e identificação pelo fato de exigirem uma um trafego maior de
informações (RANKEL, 2007).
19
Existem ainda os protocolos T=2 que esta e fase de definição e é baseado no T=1 e o
protocolo USB que possui uma taxa de transmissão maior que o T=0 e T=1 podendo chegar a
1,5 Mbps. O protocolo USB possui a vantagem de ser altamente compatível com ambiente PC
(RANKEL, 2007).
Segundo Rankel e Effing (2003) a resposta APDU deve ser envaida pelo cartão
sempre que for recebido um comando APDU.
Data Field e o campo de dados que contém informações sobre a resposta, seu tamanho
é defino pelo LE da estrutura de comando. É um campo opcional
Os bytes SW1 e SW2 são bytes que identificam o código de retorno, esses códigos são
predefinidos por algumas especificações e também podem ser pré-definidos pela aplicação.
Por exemplo, o código 90 00 identifica que o comando foi completado com sucesso. É
obrigatório do preenchimento desses campos.
2.1.5. ATR
O Answer to Reset é uma string de caracteres que é enviado pelo cartão, esses
caracteres contêm informações sobre o protocolo de transmissão e dados do cartão, é enviado
depois que o cartão foi alimentado com tensão elétrica no momento do contato como terminal,
caso o comando não seja enviado corretamente o terminal irá rejeitar o cartão. A estrutura do
comando ATR é definida pela norma ISSO/IEC 7816-3 e possui cerca de 33 bytes de
tamanho. Conforme Rankel e Effing (2003, p. 378) “É muito raro um ATR ter o comprimento
máximo permitido. Na maioria das vezes consiste de apenas alguns bytes”, isso se deve
21
principalmente ao fato de que as aplicações são executadas rapidamente sendo que se tornaria
inviável processar todos os campos do ATR (RANKEL; EFFING, 2003).
A norma ISSO/IEC 7816 define as características dos cartões para utilização com
dispositivos externos. Essas características visam manter a interoperabilidade entre cartões de
diferentes fabricantes padronizando propriedades físicas e elétricas, características de
comunicação, identificação de chip e dados nele contidos. Essa norma é amplamente utilizada
e é considera como uma referência para a utilização de cartões inteligentes, alem de ser uma
padronização contínua. A norma ISO/IEC 7816 possui 15 partes e as mesmas podem ser
vistas em detalhes no Apêndice A (SMARTCARD BASICS, c2009).
2.1.6.2. EMV
2.1.6.4. GlobalPlataform
É uma organização sem fins lucrativos que define especificações técnicas utilizada em
cartões inteligentes. É formada pelas principais fabricantes e desenvolvedoras de cartões
inteligentes, sua missão é definir especificações técnicas que garantem interoperabilidade de
cartões inteligentes, dispositivos e sistemas (GLOBAL PLATAFORM, 2008).
As especificações do GlobalPlataform definem algumas regras para desenvolvimento
de Apples Java Card.
segurança é um fator notável. Algumas das aplicações mais notáveis serão apresentadas nessa
seção.
2.1.7.4. Transporte
O uso de cartões inteligentes no transporte está se tornando uma das areas que mais
cresce, pois oferece flexibilidade, agilidade e redução no número de fraudes em bilhetes, alem
de evitar a necessidade de levar dinheiro diminuir o número de filas em bilheterias e de ser
possível disponibilizar outros serviços agregados ao cartão (MAYES; MARKANTONAKIS,
2008).
forma de escrever programa em cartões inteligentes era através do fabricante do cartão que
carregava o software no momento da fabricação. No mesmo ano a Sun apresenta a primeira
tentativa de utilizar Java em cartões inteligentes lançando a versão 1.0 da especificação Java
Card . No final 1997 é lançada a versão 2.0 da especificação Java Card que continha novos
recursos e funcionalidades. A versão 2.1 foi lançada no início de 1999 e continha
melhoramentos da versão 2.0. Na seqüência teve o lançamento a versão 2.2.1 com novas
funcionalidades implementadas principalmente em métodos RMI e o lançamento da versão
2.2.2 da plataforma Java Card onde foram melhorados os algoritmos de criptografia, suporte
a biometria e interoperabilidade de cartões (JURGENSEN; GUTHERY, 2002 ).
Atualmente a versão da especificação Java Card esta na 3.0.1 e apresenta uma nova
arquitetura. Para SUM MICROSYSTEMS(c1994-2009) a versão está separada em duas
partes.
Java Card herda a característica Java de que “escrever uma vez, rode em qualquer
lugar” isso significa que ao escrever um applet em Java Card o mesmo pode ser utilizado em
diversos outros cartões de diferentes fabricantes, porém isso depende do fabricante do cartão
que deve dar suporte a as especificações Java Card para que a máquina virtual possa rodar
sobre o sistema operacional. Essa característica mantém a portabilidade de programas
desenvolvidos em Java Card. A tecnologia Java Card separa o ambiente de execução do
programa do acesso aos dados do sistema operacional (RANKEL; EFFING, 2003). No
Apêndice B é apresentado um exemplo de código Java Card.
simples para execução de applets que são executados independentemente do sistema (CHEN,
2001).
Segundo Chen (2001, 37) “O JCRE é inicializado apenas uma vez durante a vida do
cartão”, o que difere do ambiente de execução de Java tradicional realizado em um
computador pessoal onde o ambiente de execução é encerrado junto com o sistema
operacional, nesse momento o JCRE inicializa a máquina virtual e os serviços. Os objetos do
cartão e os dados quando utilizados são criados e mantidos em memória persistente o que faz
com que quando o cartão fica sem energia as informações são preservadas e a máquina virtual
é desativa e os objetos e dados são manntidos em memória não volátil. Quando o cartão
recebe energia novamente o JCRE reinicia e carrega os dados persistidos, no retorno o JCRE
inicia no momento em que ele tinha sido encerrado preservando o applet que tinha sido
criado. No processo de comunicação com o CAD segundo Chen (2001, 39) “o JCRE entra em
um loop, esperando que comando APDU”. Após o JCRE identificar o comando APDU o
applet é selecionado, processa o comando recebido, monta a resposta e envia de volta para o
CAD.
Para Chen (2001) Java Card suporta três características adicionais em tempo de
execução.
Pacote Descrição
java.lang É um subconjunto do pacote java.lang da linguagem Java, fornecesse
suporta as classes Object que define a hierarquia Java Card e Throwable
que fornecesse suporte a classes de exceções.
javacard.framework E um pacote que fornece estrutura para a execução de applets. Oferecem
suporte as principais especificações da norma ISO/IEC 7816
javacard.security Baseado no java.security esse pacote oferece uma variedade de funções de
suporte a criptografia.
javacardx.crypto Esse pacote de extensão e é opcional, e contem classes de apoio a
criptografia. Normalmente o JCRE oferece classe que programam as
principais interfaces de criptografia como Signature, MessageDigest e
Cipher, nesses casos é utilizado um co-processador para o auxilio de
cálculos criptográficos.
Quadro 5: Pacotes Java Card
Fonte: Adaptado de (CHEN, 2001)
Nessa seção serão apresentadas algumas ferramentas que poder ser utilizadas para
apoiar o desenvolvimento de aplicativos Java Card. Esse ferramentas podem ser utilizadas no
desenvolvimento do trabalho.
Criado em 1997 pelo Consorcio OpenCard formado pela IBM e Gemplus o OCF
fornece um conjunto de API Java para terminais. No conteste de aplicações host o OCF
oferece funcionalidade e uma interface de alto nível para desenvolvedores criem serviços que
se comuniquem com o cartão. A implementação do OCF foi interrompida em fevereiro de
2000 (JURGENSEN; GUTHERY 2002). O OCF oferece principalmente recursos para
manipular comandos APDU conforme definido na norma ISSO/IEC 7816-4. Atualmente esta
sendo mantido pela empresa CardContact Software & System Consulting da Alemanha onde
formam implementados poucos recursos novos e algumas correções de bugs. O projeto é
Open Source (CARDCONTACT, c2008).
32
2.3.2. OpenSC
É um projeto Open Source que fornece bibliotecas para acesso a cartões inteligentes,
seu principal objetivo e fornecer recursos de criptografia de informação para poder oferecer
segurança no acesso a recursos do cartão. Pode ser utilizada em aplicações de correio
eletrônico, assinatura digital e autenticação. O projeto é desenvolvido por uma equipe
internacional e esta licenciado sob a licença LGPL. O projeto possui uma lista de
equipamentos e sistemas operacionais compatíveis com as suas especificações. As
ferramentas OpenSC fornecessem recursos para implementar PKCS #15 que em uma norma
que define o uso de tecnologias para utilização de criptografia em tokens (OPENSC, 2009).
2.3.3. MUSCLE
3. MATERIAIS E MÉTODOS
Nessa seção serão apresentados os matérias e métodos utilizados para que os objetivos
sejam alcançados.
Em um primeiro momento serão investigados em revistas, sites, livros, artigos e
qualquer meio de informação similar as principais ferramentas que auxiliam o
desenvolvimento de aplicativos para cartões inteligentes utilizando a plataforma Java Card.
No contexto de ferramentas o acadêmico irá explorar bibliotecas, extenções, plug-ins, IDEs,
APIs e qualquer outro mecanismo computacional que auxílio o desenvolvedor Java Card.
Após o levantamento inicial, os resultados encontrados serão refinados a fim de que
seja selecionado apenas as ferramentas que sejam definidas com importantes para o
desenvolvimento do trabalho. No momento não foram definidos critérios de eliminação ou
seleção de ferramentas. Esses critérios serão estudas e definidos pelo acadêmico no decorrer
do desenvolvimento do trabalho. Isso é necessário devido à pequena quantidade de
ferramentas existentes e a complexidade das mesmas.
As ferramentas selecionadas serão estudadas e será desenvolvido pequenos protótipos
que demonstrarão o uso de cada uma. Devido a pequena quantidade de cartões existentes e as
suas particularidades o acadêmico ira na medida do possível utilizar ferramentas que
possibilitem a criação de protótipos e que seja Opem Source. A prototipação de alguma
ferramentas pode se tornar inviável devido a custos e disponibilidade de equipamentos, nesses
casos será utilizado simuladores e para as que não disponibilizarem simuladores e ferramentas
será fundamentalizada.
Será criado um documento de referência que será utilizado pelo acadêmico para sua
avaliação final. Esse documento terá as principais características da ferramenta estudada e sua
potencial área de utilização. Isso será utilizado para cada ferramenta avaliada, pois as mesmas
serão estudadas de forma independente e depois comparadas.
A aquisição de equipamentos está sendo estudada e já foram levantados alguns
modelos de leitores e gravadores que serão usados. Os levantamentos iniciais indicam que o
leitor e gravador de cartões hoje esta sendo comercializado por valores que variam de R$
100,00 a R$ 200,00, já os cartões foram encontrados por valores que variam entre R$ 20,00 e
R$ 100,00 dependendo do modelo escolhido. É importante ressaltar que o acadêmico irá se
responsabilizar por quaisquer custos que porventura surgirem no decorrer do projeto.
34
4. CRONOGRAMA E EXECUÇÃO
Meses
2009 2010
Atividades
Dez Jan Fev Mar Abr Mai Jun Jul Ago Set Out Nov
1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2
Pesquisa de ferramentas
disponíveis e aquisição de
equipamentos necessários
Estudos de viabilidade das
ferramentas encontradas
Definição de critérios e seleção
de ferramentas
Implementação dos protótipos e
testes nas ferramentas
Avaliação e comparação das
ferramentas analisadas
Artigo TCC II
Monografia
TCC III
36
REFERÊNCIAS
CHEN, Zhiqun. Java Card Technology for Smart Cards: Architecture and programmer´s
Guid. California: Ed. Prentice Hall, 2000. 400 p.
DEITEL, H.M.; DEITEL, P. J.. Java: como programar. 4.ed. Porto Alegre: Bookman, 2003.
1386p.
ITI, Saiba como obter um Certificado Digital e quais os benefícios para sua vida, [200-]
Disponível em: <http://www.iti.gov.br/twiki/bin/view/Certificacao/CertificadoObterUsar>.
Acesso em 19 out. 2009.
MUSCLE, Movement for the Use of Smart Cards in a Linux Environment, [200-].
Disponível em: <http://www.linuxnet.com/info.html>. Acesso em: 02 nov. 2009.
37
RANKEL, Wolfgang. Smart card applications: Design Models for Using and Programming
Smart Cards. Ed. John Wiley & Sons, 2007. 217p.
RANKL, Wolfgang; EFFING Wolfgang. Smart Card Handbook. 3. ed: Ed. John Wiley &
Sons, 2003. 1088p.
Exemplo de código Java Card que envia para o terminal um Hello Word. Para maiores
informações consulta http://forums.sun.com/thread.jspa?threadID=5391233.
package hello;
import javacard.framework.APDU;
if(selectingApplet())
return;
private void sendResponse(APDU apdu, byte[] sendBuffer, short offset, short len) {
apdu.setOutgoing();
apdu.setOutgoingLength(len);
apdu.sendBytesLong(sendBuffer, offset, len);
}