TCC Projeto Johni Douglas Marangon

Click here to load reader

  • date post

    02-Jul-2015
  • Category

    Documents

  • view

    220
  • download

    2

Embed Size (px)

Transcript of TCC Projeto Johni Douglas Marangon

1

UNIVERSIDADE DO OESTE DE SANTA CATARINA UNOESC CAMPUS DE SO MIGUEL DO OESTE

JOHNI DOUGLAS MARANGON

ESTUDO COMPARATIVO DE FERRAMENTAS PARA DESENVOLVIMENTO DE APLICATIVOS UTILIZANDO A PLATAFORMA JAVA CARD

So Miguel do Oeste (SC) 2009

2

JOHNI DOUGLAS MARANGON

ESTUDO COMPARATIVO DE FERRAMENTAS PARA DESENVOLVIMENTO DE APLICATIVOS UTILIZANDO A PLATAFORMA JAVA CARD

Projeto de Trabalho de Concluso de Curso apresentado Universidade do Oeste de Santa Catarina UNOESC, Campus de So Miguel do Oeste como requisito parcial obteno do grau de Bacharel em Sistemas de Informao

Orientador: Prof. Esp. Roberson Junior Fernandes Alves

So Miguel do Oeste (SC) 2009

3

LISTAS DE ILUSTRAESDesenho 1: Desenho 2 : Desenho 3: Desenho 4: Desenho 5: Desenho 6: Desenho 7: Desenho 8: Carto Cidado de Portugal..............................................................................................09 Arquitetura tpica de um carto de memria com contato com lgica de segurana.......15 Arquitetura tpica de um carto com processador e co-processador................................16 Pontos de contato do carto..............................................................................................16 Estrutura de um comando APDU.....................................................................................19 Estrutura de uma resposta APDU. ...................................................................................20 Estrutura Java Card...........................................................................................................26 Java Card Virtual Machine...............................................................................................29

4

LISTAS DE QUADROS

Quadro 1: Quadro 2: Quadro 3: Quadro 4: Quadro 5:

Marcos no desenvolvimento da tecnologia de carto inteligente.....................................13 Tipos de memria comumente utilizadas em cartes inteligentes....................................14 Resumo dos protocolos de transmisso de acordo com a norma ISSO/IEC 7816-3........18 Recursos Java suportados e no suportados.....................................................................26 Pacotes Java Card.............................................................................................................31

5

LISTA DE ABREVIATURAS E SIGLAS

JCDK JCVM JCRE CAP IC ATM SPOM CAD HD ROM RAM EEPROM ISO RFID ATR IEC EMV PC/SC API GSM SIM HTML LGPL PKCS MUSCLE OCF APDU C-APDU R-APDU POS PVC

Java Card Development Kit Java Card Virtual Machine Java Card Runtime Environment Converted Applet Integrated Circuit Automated Teller Machine Self Programmable One-chip Microcom Card Acceptance Device Hard Disk Read Only Memory Random Access Memory Eletrically Erasable Programmable Read Only Memory International Organization for Standardization Radio Frequency IDentification Answer To Resset International Electrotechnical Commission Europay, Mastercard, VISA Personal Computer/Smart Card Application Programming Interface Global System for Mobile Subscriber Identity Module HyperText Markup Language Lesser General Public License Public Key Cryptography Standards Movement for the Use of Smart Cards in a Linux Environment Open Card Framework Application Protocol Data Unit Command Application Protocol Data Unit Response Application Protocol Data Unit Point Of Sale Policloreto de Vinilo

6

SUMRIO

1.

INTRODUO........................................................................................................................... 7

1.1. OBJETIVOS............................................................................................................................... 7 1.1.1. Geral........................................................................................................................................ 8 1.1.2. Especficos .............................................................................................................................. 8 1.2. JUSTIFICATIVA/PROBLEMATIZAAO............................................................................... 8 2. REVISO DA LITERATURA ................................................................................................ 11 2.1. SMART CARDS...................................................................................................................... 11 2.1.1. Histria dos Smart Card ..................................................................................................... 12 2.1.2. Estrutura de um Smart Card ............................................................................................. 14 2.1.2.1. Memrias utilizadas em Smart Card................................................................................. 14 2.1.2.2. Cartes de memria .......................................................................................................... 14 2.1.2.3. Cartes com microprocessador:........................................................................................ 15 2.1.2.4. Cartes com Contato (Contact Card) ............................................................................... 16 2.1.2.5. Cartes sem Contato (Contactless Card).......................................................................... 17 2.1.2.6. Cartes Hbridos (Hibrid Card)........................................................................................ 17 2.1.2.7. Duas Interfaces (Combi Cards) ........................................................................................ 18 2.1.3. Protocolos de transmisso ................................................................................................... 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. Especificaes e normas tcnicas........................................................................................ 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 aplicao com Smart Card.................................................................................. 22 2.1.7.1. Identificao fsica............................................................................................................ 23 2.1.7.2. Controle de acesso fsico .................................................................................................. 23 2.1.7.3. Servios 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 MTODOS 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 MTODOS .................................................................................................... 33 REFERNCIAS .................................................................................................................................... 36 APENDICE A Partes que compem a norma ISO/ICE 7816 ............................................................ 38 APENDICE B - Exemplo de cdigo Java Card .................................................................................... 39

7

1.

INTRODUO

Atualmente com a evoluo de dispositivos mveis observa-se uma forte tendncia de migrao no processamento e armazenamento de dados que deixam de ser centralizados e passam a ser distribudos fazendo com que a informao esteja sempre disponvel em qualquer lugar e a qualquer hora. Um simples carto pode conter uma quantidade significativa de informaes que por ventura provem os mais variados servios e ficam a disposio do usurio sempre que for requisitado de forma prtica e acessvel. No presente trabalho ser desenvolvido um documento que conter as principais informaes sobre ferramentas que auxiliam o desenvolvimento de aplicativos para cartes inteligentes utilizando a tecnologia Java Card visando apoiar a criao de aplicaes para os mesmos. No documento iro conter informaes sobre a estrutura de funcionamento de cartes inteligentes, reas que podero ser exploradas para implantao de sistemas que utilizam cartes e mtodos de instalao e manipulao de aplicativos no carto de forma genrica. Para as ferramentas estudas ser apresentado um passo a passo de instalao e utilizao visando aproveitar melhor as caractersticas de cada uma. Durante o desenvolvimento do projeto ser criado pequenos exemplos da utilizao de cada ferramenta em ambiente de produo com o objetivo de explorar a sua utilizao. Atravs das informaes levantadas e o conhecimento obtido ser possvel criar aplicativos para cartes inteligentes de forma rpida e simples diminuindo os custos e complexidade envolvidos e aumentado a produtividade. O momento demanda um estudo dessa proporo, pois o potencial uso de cartes inteligentes visto pelo acadmico como uma oportunidade para inmeros estudantes que ainda no trabalham na rea se prepararem para desenvolver uma profisso alem de agregar conhecimento ao acadmico que poder ser utilizado em projetos futuros.

1.1.

OBJETIVOS

Nessa seo sero descritos os objetivos que se pretendem alcanar com desenvolvimento do presente trabalho.

8

1.1.1. Geral

Pretende-se desenvolver um estudo em relao s ferramentas de desenvolvimento Java Card a fim de realizar um comparativo entre as ferramentas analisadas produzindo um documento de referncia para desenvolvedores que utilizam essa tecnologia.

1.1.2. Especficos

Os objetivos especficos que se espera alcanar com o projeto so:

Estudar as principais caractersticas dos cartes inteligentes. Compreender o funcionamento e utilizao de um carto inteligente. Estudar a tecnologia Java Card e suas principais especificaes a fim de orientar a sua utilizao para uma determina rea de aplicao. Identificar as principais vantagens no uso de Java Card em relao a solues semelhantes j existentes. Demonstrar o uso de Java Card no desenvolvimento de aplicativos para cartes inteligentes. Apresentar algumas das ferramentas disponveis que auxiliam os

desenvolvedores Java Card. Desenvolver pequenos prottipos demonstrando o uso com as ferramentas. Analisar e apresentar os resultados obtidos na pesquisa como forma de contribuio para o meio acadmico.

1.2.

JUSTIFICATIVA/PROBLEMATIZAAO

Os Smart Cards ou cartes inteligentes so muito populares na Europa e o seu uso impulsionado principalmente pela capacidade de armazenar e processar as informaes contidas no carto. Essa caracterstica faz com que o carto inteligente seja um grande aliado na segurana de informao preservando todas as informaes contidas nele, pois toda a informao criptografada num circuito eletrnico e fica disponvel para ser utilizada somente pelas partes autorizadas evitando assim fraudes (CUNHA, 2009).

9

A evoluo por parte de grupos industriais fez com que o emprego de cartes inteligentes fosse estendido para outras reas sendo hoje uma tecnologias em constante evoluo, 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 administrao pblica quer do lado do setor privado. Hoje o uso dos cartes inteligentes se estende a inmeras reas de aplicao, dentre elas podemos destacar a telefonia, identificao pessoal, sistema de segurana por computador, controle de acesso, vale transporte, vale alimentao, convnios, sistemas de fidelidade e TV via satlite (HSBC, 2009). No mbito mundial existe em Portugal o uso do Carto Cidado que um carto de identificao utilizado no pas. Esse carto oferece identificao visual e eletrnica do usurio, alem de permitir acesso aos principais servios pblicos e privados unindo praticamente todos os documentos em um. Esse projeto e um grande fator de modernizao da administrao pblica e traz muitas vantagens para os seus usurios.

Desenho 1: Carto Cidado de Portugal Fonte: Zetes ([200-]).

No Brasil os trabalhos de maior expresso a nvel governamental o uso de cartes inteligentes para certificao digital com os projetos e-CPF e e-CNPJ, esse projetos so mantidos pelo Governo Federal e so utilizados para garantir a identidade de destinatrios e remetentes na autenticao de documentos eletrnicos atravs de chaves pblicas e privadas (ITI, [200-]). Outra rea de aplicao que est ganhando destaque so os Sistemas de Bilhetagem Eletrnicas com destaque para o carto de transporte utilizado na cidade de Curitiba, Paran. O novo sistema substituiu as fichas de metal e os vales de papel que estavam sendo falsificados e utilizados como moedas paralelas causando prejuzos para as empresas,

10

alem do seu uso evitar filas na compra de bilhetes e evitar a necessidade de transportar dinheiro (URBS, c2008). A grande evoluo no uso dos cartes 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 aplicaes para cartes inteligentes. A tecnologia Java Card permite que desenvolvedores executem todo o ciclo de desenvolvimento de uma aplicao Java comum reduzindo os custos no desenvolvimento de uma aplicao e garantindo interoperabilidade entre diferentes fabricantes de cartes. Os desenvolvedores possuem vantagens nativas da linguagem Java adaptadas para executar em dispositivos com recursos limitados e maior modularidade e reutilizao de cdigo com o paradigma orientado a objeto. O JCDK oferece as principais ferramentas para o desenvolvimento e implementao de aplicativos escritos em Java, incluindo a JCVM e diversas ferramentas de gesto e testes. Hoje se observa uma grande dificuldade para iniciar os estudos sobre a tecnologia Java Card. uma tecnologia que est em ascenso e cada vez mais sendo adotada pelo mercado da tecnologia de informao. Entre as maiores dificuldades encontradas esto falta de bibliografia em portugus sobre tcnicas e meios de desenvolvimento de aplicativos para cartes utilizando Java Card, falta de orientao para escolha de dispositivos que podem ser usados com Java Card, preparao de ambiente para desenvolvimento, simulao 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 acadmico e desenvolver um documento que possa ser utilizado para minimizar essas dificuldades.

11

2.

REVISO DA LITERATURA

Nesse tpico sero apresentados os principais conceitos literrios envolvidos no desenvolvimento de aplicativos para cartes inteligentes utilizando a plataforma Java Card. Esses conceitos literrios so fortemente apoiados pelos mais conceituados autores da rea. Ser apresentada a histria e a estrutura de um carto inteligente na seqncia ser apresentada a tecnologia Java Card como principal ferramenta utilizada no desenvolvimento de aplicativos para cartes inteligentes, e por fim sero apresentadas algumas ferramentas que podero ser utilizadas no desenvolvimento do presente trabalho.

2.1.

SMART CARDS

Segundo Mayes e Markantonakis (2008, p. ix) A idia de inserir um chip em um carto de plstico quase to antiga quanto criptografia de chave pblica. H trinta anos comearam a surgir os primeiros cartes com circuto integrado, esses cartes possuam inmeras limitaes de processamento e armazenamento, hoje a indstria evoluiu e surgem novas geraes de cartes com mais capacidade de processamento e armazenamento. Por conta disso ocorrem aberturas de novos mercados para o uso de cartes. Segundo (RANKEL, 2007, p. xi) a tendncia atual a utilizao de cartes inteligentes por conta de suas caractersticas positivas, em vez de simplesmente porque eles existem. Os cartes inteligentes desempenham um papel importante na rea de tecnologia de informao so considerados meios portveis de armazenamento de dados, suas maiores preocupaes so segurana e integridade de dados o que garante uma maior a eficincia no uso dessa tecnologia. De acordo com Jurgensen e Guthery (2002, p. 1):Um carto inteligente um computador. Ele no inclui o teclado e visor como possuem nossos computadores pessoais, mas tem todos os elementos de uma plataforma de computao de propsito geral. De longe parece um carto de crdito com uma pequena placa de metal na sua face. Essa placa a interface eltrica para um computador muito pequeno e altamente integrado sob o plstico. Este computador inclui um processador e vrios tipos de memria, por vezes, at mesmo inclui um processador auxiliar que ajud-lo em clculos intensos. Assim, enquanto ele menor do que o PC em sua mesa e tambm uma plataforma de computao razoavelmente segura.

Os cartes inteligentes possuem mais capacidade de armazenamento de informao em relao aos cartes magnticos alem de possurem alta durabilidade podem trabalhar offline dispensando o acesso e interao com outras fontes de informao, como servidores por

12

exemplo. O carto inteligente pode ser considerado inviolvel e possui armazenamento de dados que pode chegar a 32 MB, possuem comumente modestos processadores de 8 bits e 16 bits a sofisticados processadores de 32 bits j sendo utilizados em alguns cartes. Seu poder de processamento pode ser comparado a computadores de inicio da dcada de 80 (JURGENSEN; GUTHERY, 2002).

2.1.1. Histria dos Smart Card

O uso dos cartes de plstico iniciou nos Estados Unidos na dcada de 50 onde a Dinners Club comeou a emitir cartes para serem aceitos como forma de pagamento em alguns restaurantes e hotis. Esses cartes 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 participao no mercado de cartes de plstico onde iniciou um grande avano tecnolgico e passou-se a utilizar cartes com tarja magntica e impresso em alto relevo que permitia a leitura de dados adicionais no carto porem no garantia total segurana j que qualquer equipamento adequado podia ler excluir e apagar os dados na tarja magntica. Posteriormente surgiram os cartes com circuito integrado que tinham um nvel maior de segurana (RANKEL; EFFING, 2003) e (PETRI, 1999). Na dcada de 70 com inicio dos avanos na microeletrnica foi possvel produzir chips em quantidade e com qualidade a preos acessveis. Em 1968 o primeiro pedido de patente de um carto com circuito integrado foi solicitado pelos engenheiros alemes Jrgen Dethloff e Helmut Grttrup e tiveram na seqncia em 1970 o pedido de patente semelhante feito no Japo por Kunitaka Arimura. As maiores contribuies na rea foram realizadas por Ronald Moreno um jornalista Frances que entre 1974 e 1979 solicitou 47 pedidos de patentes relacionadas com cartes inteligentes em 11 pases. (JURGENSEN; GUTHERY, 2002) Em 1977 tem inicio a produo em massa de cartes 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 especificaes do SPOM. O grande avano no uso de cartes inteligentes teve inicio no ano de 1984 quando Servio Postal e de Telecomunicaes da Franca (French PTT) iniciou os testes em cartes telefnicos com chips em ATMs. No mesmo ano tem inicio na Franca e na Alemanha testes com o uso de cartes inteligentes em operaes bancarias. Segundo (PETRI, 1999) em 1986, muitos milhes de cartes

13

inteligentes em telefones estavam em circulao na Frana. Seu nmero chegou a quase 60 milhes em 1990, e 150 milhes foram projetadas para 1996. Trs anos mais tarde em 1989 iniciam na Alemanha testes com o uso de cartes telefnicos com diversas tecnologias entre elas banda magntica e armazenamento ptico (RANKEL; EFFING, 2003). Dentro de dois anos mais tarde em 1986 o uso dos cartes inteligentes se expandiu em todo o mundo. No Quadro 1 apresentado um histrico da evoluo dos cartes inteligentes.

Descrio Dr. Kunitaka Arimura do Japo registrou a primeira patente sobre o conceito de Smart Card. Roland Moreno da Frana registrou a patente original para o carto IC, posteriormente apelidado de "smart card". 1977 Trs fabricantes comerciais, Bull CP8, SGS Thomson e Schlumberger comearam a desenvolver o carto IC. 1979 Motorola desenvolveu o primeiro chip micro controlador para utilizao no setor bancrio francs. 1982 Testes com cartes de memria so iniciados na Frana, o primeiro teste do mundo com carto IC. 1984 Teste com cartes bancrios em ATM com chips foram realizados com sucesso. 1986 14.000 cartes equipados com o CP8 Bull foram distribudos aos clientes do Banco da Virgnia e de Maryland National Bank. 50.000 cartes Casio foram distribudos aos clientes do First National Palm Beach e do Banco Mall. 1993 Testes com cartes multi-aplicao em Rennes na Frana onde a funo Telecarte (para telefones pblicos) foi ativado em um Banco de Smart Card. 1994 Europay, MasterCard e Visa (EMV) publicam especificaes comuns para o microchip baseada em cartes bancrios (cartes inteligentes). Na Alemanha comea a emisso de 80 milhes de cartes de memria em srie com chips de cartes de sade do cidado. 1995 Mais de 3 milhes de assinantes de telefonia mvel digital no mundo inteiro comeam fazer chamadas com cartes inteligentes. Os primeiros 40.000 cartes multifuncionais com chips de tecnologia MARC foram emitidos para Marinha Americana no Hava. 1996 Mais de 1,5 milhes cartes VISA Cash de valor armazenado foram emitidos nos Jogos Olmpicos de Atlanta. MasterCard e Visa comeam o patrocnio de consrcios para trabalhar na resoluo dos problemas de interoperabilidade de cartes inteligentes. Duas solues de cartes 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 Servio de Administrao (GSA) inicia o projeto Smart ID, Smart Access Comum ID Card, o programa estabeleceu um contrato de veculos para utilizao por todas as agncias federais para adquirir um padro de interoperabilidade do carto de identificao do empregado, a partir de um ou mais fornecedores, capazes de fornecer tanto acesso fsico como lgico (sistema / rede) e o acesso a todos os empregados do Governo. O Governo Americano (General Services Administration) comeou uma aplicao piloto utilizando Java Card em Washington na regio metropolitana. Quadro 1: Marcos no desenvolvimento da tecnologia de carto inteligente Fonte: Adaptado de Cardwerk (2008).

Data 1970 1974

Na atualidade o uso de cartes inteligentes fortemente impulsionado por questes de segurana onde por natureza os cartes no so clonados facilmente e com os expressivos

14

avanos tecnolgicos est cada vez mais intenso o uso de cartes inteligentes (MAYES; MARKANTONAKIS, 2008).

2.1.2. Estrutura de um Smart Card

Nessa seo ser apresentado as principais caractersticas fsicas dos cartes inteligentes visando um melhor entendimento sobre o seu funcionamento.

2.1.2.1. Memrias utilizadas em Smart Card

Por se tratar de dispositivos que realizam armazenamento e processamento de informaes os cartes possuem alguns tipos de memria que so utilizados para armazenar programas e dados. Basicamente existem trs tipos de memrias comumente utilizados em cartes inteligentes. O Quadro 2 apresenta a definio dos tipos de memria usados em cartes inteligentes.

Descrio Tipo de memria somente leitura, quando usada em cartes inteligentes armazena informaes do sistema operacional e algumas outras rotinas, esses dados so gravados pelo fabricante do carto durante o processo de fabricao do mesmo, possui baixo custo e ocupa pouco espao no chip. EEPROM (Electrically Erasable E a memria no voltil em cartes inteligentes, funciona de forma Programmable Read-Only Memory) semelhante a um HD de um computador pessoal armazenando dados no carto quando o mesmo no alimentado por energia. RAM (Random Access Memory) Memria de acesso rpido e utilizada pelos aplicativos durante a interao entre o CAD e o carto. Quadro 2: Tipos de memria comumente utilizadas em cartes inteligentes Fonte: Adaptado de Rankel (2007, p. 6-9).

Tipo ROM (Read Only Memory)

Os recursos de memria so controlados pelo sistema operacional do carto, assegurando que a aplicao somente pode acessar os recursos alocados em seu espao de memria evitando assim acesso no autorizados.

2.1.2.2. Cartes de memria

Os cartes de memria no realizam nenhum tipo de processamento e possuem apenas a capacidade de armazenar dados em sua memria para posterior utilizao. Os dados podem ser alterados, apagados e includos. Esses cartes possuem memria ROM que contm

15

algumas informaes do chip e os dados so controlados por uma lgica de segurana contra excluso e gravao de dados, em outros casos existem cartes com lgicas de segurana mais complexas que utilizam esquemas simples de criptografia (RANKEL; EFFING, 2003).

Desenho 2: Arquitetura tpica de um carto de memria com contato e lgica de segurana Fonte: Rankel e Effing (2003, p. 19).

Os cartes de memrias so de baixo custo e utilizados geralmente em sistemas de estacionamentos, transporte pblico, cartes pr-pagos de telefones, cartes de seguro de sade entre outras reas que demandam um custo menor (RANKEL; EFFING, 2003).

2.1.2.3. Cartes com microprocessador:

Esses cartes possuem um chip com microcontrolador que realiza operaes aritmticas. O chip composto por um sistema operacional que controla o acesso aos dados do carto onde fica impossvel alterar informaes sem as devidas permisses. Existem sistemas operacionais que suportam mltiplas aplicaes em um mesmo carto e no permite que os dados sejam diretamente acessados por aplicaes externas. Esses cartes possuem esquema de segurana em nvel de hardware e software dificultando a sua violao. Os cartes podem possuir tambm co-processadores que servem para auxiliar o processador principal na realizao de clculos. Os cartes com co-processador so muito utilizados para realizar processamento criptogrfico que exige maior capacidade de processamento (MAYES; MARKANTONAKIS, 2007).

16

Desenho 3: Arquitetura tpica de um carto com processador e co-processador Fonte: Rankel e Effing, (2003, p. 20).

Os principais sistemas operacionais Java Card so IBM JCOP licenciado para os principais fabricantes de cartes e o Prisma desenvolvido pela Proton World International e que atualmente faz parte da ST Microelectronics. Esses sistemas operacionais operam com as principais caractersticas e especificaes do ambiente Java Card (HENDRY, 2007).

2.1.2.4. Cartes com Contato (Contact Card)

A troca de informaes feita atravs de contato fsico do carto com o CAD. So utilizados em inmeras reas de aplicao e possibilitam o processamento de um grande nmero de informao. O carto possui 8 contatos conforme norma ISO 7816-2 porm apenas 6 so usados (MAYES; MARKANTONAKIS, 2008).

Desenho 4: Pontos do carto com chip Fonte: Mayes e Markantonakis (2008, p. 5).

17

Conforme exibido no Desenho 3 os contatos possuem as seguintes funes:

VCC: Fornece energia para o carto, geralmente 3 ou 5 volts. RST: Sinal usado para indicar o estado do circuito integrado. CLK: a velocidade usada como referncia na comunicao com o terminal e o carto. RFU: Contato auxiliar no usado e reservado para uso futuro. GND: Tenso de terra de referencia entre o carto de o terminal. VPP: Fornecesse uma fonte de energia separada. I/O: Entrada e sada de dados, fornece o canal de comunicao entre o terminal e o carto. RFU: Contato auxiliar no usado e reservado para uso futuro.

2.1.2.5. Cartes sem Contato (Contactless Card)

um carto que possui um pequena antena incorporada ao chip e se comunica com CAD atravs de radiofreqncia utilizando a tecnologia RFID. Esses cartes dispensam qualquer contato fsico como CAD e a energia nesse caso e fornecida pelo CAD atravs de campos eletromagnticos. Esses cartes podem ser cartes com microprocessador ou cartes com memria (RANKEL, 2007). recomendvel que cartes sem contato sejam utilizados em ambiente com pouco rudo eltrico o que garante um bom desempenho e confiabilidade. Os cartes sem contato so mais caros que cartes com contato e exigem equipamentos e infra-estrutura mais sofisticada aumentando o custo de implementao (RANKEL, 2007).

2.1.2.6. Cartes Hbridos (Hibrid Card)

Possui dois chips em um mesmo carto sendo que um acessado atravs de seus contatos fsicos e outro acessado atravs de radiofreqncia (ID EDGE, 2009).

18

2.1.2.7. Duas Interfaces (Combi Cards)

O carto tem duas interfaces, onde um mesmo microcontrolador pode ser acessado atravs de contato fsico ou atravs de radiofreqncia (ID EDGE, 2009).

2.1.3. Protocolos de transmisso

Para Rankel (2007, p. 24) Os protocolos de transmisso definem os processos de comunicao entre o terminal e o carto inteligente no caso de operaes bem sucedidas e mecanismos a serem utilizados para lidar com erros de transmisso quando detectados. A comunicao e feita no principio de mestre-escravo onde o terminal atua como mestre e o carto como escravo onde a comunicaao half-duplex (RANKEL, 2007). Segundo Rankel e Effing (2003) existe um total de 15 protocolos de comunicao, estes so apresentados no Quadro 3.

Protocolo Significado T=0 Assncrona, half-duplex, orientado a byte, especificado na norma ISO / IEC 7816-3 T=1 Assncrona, half-duplex, orientado a bloco, especificados na norma ISO / IEC 7816-3 T=2 Assncrona, full-duplex, orientado a bloco, especificados na norma ISO / IEC 10536-4 T=3 Full-duplex, ainda no especificado T=4 Assncrona, half-duplex, orientado a byte, extenso de T = 0, ainda no especificado T =5 ... T = 13 Reservado para uso futuro, ainda no especificado T = 14 Para uso nacional ainda no padronizados pela ISSO T = 15 Reservado para uso futuro e ainda no especificado Quadro 3: Resumo dos protocolos de transmisso de acordo com a norma ISO / IEC 7816-3 Fonte: Rankel e Effing (2003, p. 396).

Apenas dois protocolos de transmisso so utilizados atualmente por normas e padres internacionais. O T=0 foi o primeiro a ser utilizados e parte do princpio de envio byte a byte, tem a vantagem de consumir menos memria, muito utilizado em cartes para comunicao mvel definido pela norma ISO / IEC 7816-3. J o protocolo T=1 que envia blocos de bytes tambm definido pela norma ISO / IEC 7816-3. Por ser orientado a bloco toda a vez que um bloco e enviado do terminal para o carto a resposta do mesmo devolvida pelo carto mantendo uma alternncia de envio e retorno de informao. um protocolo mais robusto e possui mecanismos de deteco e reenvio de blocos que contem erros, utilizado em sistemas de cartes de pagamento e identificao pelo fato de exigirem uma um trafego maior de informaes (RANKEL, 2007).

19

Existem ainda os protocolos T=2 que esta e fase de definio e baseado no T=1 e o protocolo USB que possui uma taxa de transmisso maior que o T=0 e T=1 podendo chegar a 1,5 Mbps. O protocolo USB possui a vantagem de ser altamente compatvel com ambiente PC (RANKEL, 2007).

2.1.4. Protocolo APDU

O protocolo APDU (Application Protocol Data Unit) um pacote de dados utilizado para realizar a comunicao entro o host e o carto. Para Wolfgang e Wolfgang (2003, p. 421) O APDU uma unidade de dados padronizado internacionalmente para a camada de aplicao que a camada 7 do modelo OSI . O protocolo APDU pode ser divido em dois formatos. C-APDU que o pacote de comando e R-APDU que o pacote de resposta. Para cada APDU de comando existe um APDU de resposta. Segundo Rankel e Effing (2003, p. 422) o protocolo APDU cumpre as especificaes da norma ISO/IEC 7816-4 e independente do protocolo de transmisso.

2.1.4.1. Estrutura de um comando APDU Para Rankel e Effing (2003) o comando APDU composto por um corpo e um cabealho.

Desenho 5: Estrutura de um comando APDU Fonte: Ranekl e Effing (2003, p. 422).

O byte CLA o byte de classe e usado para identificar a aplicao. E obrigatrio o preenchimento desse campo, porem no precisa representar nenhum valor. O byte INS o byte de instruo que identifica o comando envidado para o carto. Esse byte sempre deve ter valor e tratado como um cdigo pr-definido que identifica uma solicitao de comando realizada pela aplicao. obrigatrio o preenchimento desse campo. Os byte P1 e P2 so bytes de parmetros e podem ser utilizados para prover informaes sobre o comando enviado. O preenchimento desse campo obrigatrio

20

O byte LC Field identifica o comprimento do corpo opcional de dados, o Data Field. opcional o preenchimento desse campo. O Data Field e o campo de dados que ser enviado para o carto para executar a operao solicitada no cabealho do comando. E um campo opcional. O byte LE Field identifica tamanho de resposta esperado pelo host em relao ao comando enviado. opcional o preenchimento desse campo.

2.1.4.2. Estrutura de uma resposta APDU

Segundo Rankel e Effing (2003) a resposta APDU deve ser envaida pelo carto sempre que for recebido um comando APDU.

Desenho 6: Estrutura de uma resposta APDU Fonte: Rankel e Effing (2003, p. 424).

Data Field e o campo de dados que contm informaes sobre a resposta, seu tamanho defino pelo LE da estrutura de comando. um campo opcional Os bytes SW1 e SW2 so bytes que identificam o cdigo de retorno, esses cdigos so predefinidos por algumas especificaes e tambm podem ser pr-definidos pela aplicao. Por exemplo, o cdigo 90 00 identifica que o comando foi completado com sucesso. obrigatrio do preenchimento desses campos.

2.1.5. ATR

O Answer to Reset uma string de caracteres que enviado pelo carto, esses caracteres contm informaes sobre o protocolo de transmisso e dados do carto, enviado depois que o carto foi alimentado com tenso eltrica no momento do contato como terminal, caso o comando no seja enviado corretamente o terminal ir rejeitar o carto. 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 mximo permitido. Na maioria das vezes consiste de apenas alguns bytes, isso se deve

21

principalmente ao fato de que as aplicaes so executadas rapidamente sendo que se tornaria invivel processar todos os campos do ATR (RANKEL; EFFING, 2003).

2.1.6. Especificaes e normas tcnicas

Os cartes so fortemente acompanhados por normas internacionais e especificaes tcnicas que garantem a interoperabilidades dos cartes e sua aplicabilidade numa variedade de infra-estruturas. As normas e especificaes so utilizadas pelos fabricantes de cartes, desenvolvedores de sistemas operacionais e desenvolvedores de aplicaes e so publicadas por organismos de padronizao e rgos governamentais. As normas esto sempre evoluindo, devido complexidade envolvida no uso de cartes inteligentes (RANKEL, 2007).

2.1.6.1. ISO/IEC 7816

A norma ISSO/IEC 7816 define as caractersticas dos cartes para utilizao com dispositivos externos. Essas caractersticas visam manter a interoperabilidade entre cartes de diferentes fabricantes padronizando propriedades fsicas e eltricas, caractersticas de comunicao, identificao de chip e dados nele contidos. Essa norma amplamente utilizada e considera como uma referncia para a utilizao de cartes inteligentes, alem de ser uma padronizao contnua. A norma ISO/IEC 7816 possui 15 partes e as mesmas podem ser vistas em detalhes no Apndice A (SMARTCARD BASICS, c2009).

2.1.6.2. EMV

um padro de interoperabilidade de cartes inteligentes usados em terminais como POS e ATMs utilizando cartes de crdito e dbito. Segundo (EMVCO, 2008) No 1 trimestre de 2008 existiam mais de 730 milhes de cartes de pagamento em uso no mundo compatvel com o padro EMV. Inicialmente a especificao foi formada pela bandeiras VISA, MarterCard, e Europay. Em 2004 a JCB (Japan Credit Bureau) se juntou as especificaes e em 2009 foi a vez da American Express. A especificao esto atualmente na verso 4.2 e consiste em quatro livros (EMVCO, 2008).

22

2.1.6.3. PC/SC - Personal Computer/Smart Card

O PC/SC uma especificao que define a integrao de cartes inteligentes em ambiente computacional. Define uma interface de baixo nvel de dispositivos e API de aplicativos independentes permitindo que vrios aplicativos compartilham recursos de carto. baseada nas normas ISO/IEC 7816 e EMV e foi desenvolvida para facilitar o uso de cartes inteligentes em ambientes computacionais, atualmente esta na verso 2.01.7 que foi lanada em Julho de 2009, e esta divida em 10 partes (PC/SC WORKGRUP, 2009).

2.1.6.4. GlobalPlataform

uma organizao sem fins lucrativos que define especificaes tcnicas utilizada em cartes inteligentes. formada pelas principais fabricantes e desenvolvedoras de cartes inteligentes, sua misso definir especificaes tcnicas que garantem interoperabilidade de cartes inteligentes, dispositivos e sistemas (GLOBAL PLATAFORM, 2008). As especificaes do GlobalPlataform definem algumas regras para desenvolvimento de Apples Java Card.

2.1.7. reas de aplicao com Smart Card

Os cartes inteligentes so usados em todo o mundo em uma grande variedade de aplicaes. Vrios fatores determinam e so levados em considerao para determinar qual tipo de carto pode ser utilizado em determinada soluo de mercado. Segundo Jurgensen e Guthery (2002, p. 88)Os cartes inteligentes fornecem um componente pessoal de aplicao. Seja qual forem os efeitos da aplicao o carto inteligente transportado por um indivduo e periodicamente utilizados em configuraes de equipamentos diversos para alcanar os resultados ou obter os servios prestados por essas configuraes. A caracterstica mais comum dos cartes inteligentes em um aplicativo estabelecer ou autenticar a identidade do titular e o direito do titular do carto (permisso) para acessar e usar o aplicativo em questo. Em outros casos, alm de autenticao de identidade o carto inteligente pode prover informaes adicionais necessrias para o aplicativo. Por exemplo, em dbito financeiro e pedidos de crdito, o carto inteligente pode armazenar um nmero de conta (ou nmeros), que so utilizados em servidores backend envolvidos no pedido.

Algumas reas de aplicao obedecem rigorosamente alguns padres e especificaes estabelecidos por rgos competentes. Geralmente os cartes inteligentes so usados em aplicaes que necessitam de uma quantidade pequena de informaes armazenadas e que a

23

segurana um fator notvel. Algumas das aplicaes mais notveis sero apresentadas nessa seo.

2.1.7.1. Identificao fsica

H uma grande necessidade dos crachs serem confiveis e a prova de adulteraes, os cartes oferecem meios confiveis de identificao e possuem dentro dele informaes sobre o titular. Geralmente os cartes utilizados para esse fim apresentam a foto do titular do carto o que permite uma identificao prvia, utilizam tambm uma tarja magntica para leitura de informaes em equipamentos no compatveis. Um exemplo de seu uso seria para carteiras de motorista, passaportes eletrnicos e identidades civis (JURGENSEN; GUTHERY, 2002).

2.1.7.2. Controle de acesso fsico

So cartes utilizados para identificao do titular e fornecem o direito de acesso a locais como edifcios e salas com acesso restrito. Geralmente possuem uma foto do titular e dentro do carto possuem informaes que podem ser extradas para garantir a identidade dos usurios. Podem ser usados em conjunto com a biometria para garantir com eficcia a identidade dos usurios. Um exemplo do uso de biometria em conjunto com o carto a identificao atravs do uso de impresso digital. Um exemplo pratico de uso seria um funcionrio com acesso a determinadas salas, no carto ele possui um documento assinado digitalmente que lhe permite esse acesso (JURGENSEN; GUTHERY, 2002).

2.1.7.3. Servios financeiros

Um dos servios precursores no uso de cartes inteligentes e um dos servios mais beneficiados com seu uso a rea financeira. O uso de cartes aparece de trs maneiras, crdito, dbito e dinheiro. Em operaes de crdito e dbito o carto usado somente para identificao j em aplicaes de dinheiro o carto armazena pequenas quantidades monetrias que ficam a disposio de seus usurios (JURGENSEN; GUTHERY, 2002).

24

2.1.7.4. Transporte

O uso de cartes inteligentes no transporte est se tornando uma das areas que mais cresce, pois oferece flexibilidade, agilidade e reduo no nmero de fraudes em bilhetes, alem de evitar a necessidade de levar dinheiro diminuir o nmero de filas em bilheterias e de ser possvel disponibilizar outros servios agregados ao carto (MAYES; MARKANTONAKIS, 2008).

2.2. PLATAFORMA JAVA CARD A linguagem Java surgiu da necessidade de se desenvolver software para rodarem em processadores de eletrodomsticos, e que fossem independentes da plataforma ao qual os equipamentos eram desenvolvidos. Em 1990 uma equipe da Sun inicia a especificao de uma nova linguagem de programao para pequenos dispositivos eletrnicos, em 1991 apresentada a linguagem Oak. O primeiro projeto desenvolvido utilizando a linguagem Oak foi iniciado em 1993 e foi chamado de Green Project o seu objetivo era desenvolver uma interface para controle de aparelhos eletrnicos em uma residncia. O desenvolvimento de equipamentos eletrnicos no cresceu conforme esperava a Sun e a linguagem desenvolvida se tronavam invivel para utilizao. Com o advento da World Wide Web a Sun decidiu desenvolver uma linguagem independente da plataforma, segura e robusta, a linguagem teve o nome mudado de Oak para Java e comeou a ser desenvolvida com o propsito de rodar em programas em browser (DEITEL; DEITEL, 2003). A Sun desenvolve um browser chamado de HotJava que rodava programa escritos em Java dentro de pagina HTML. O navegador HotJava no atingiu as expectativas comercias, porm a linguagem abriu uma nova porta para os desenvolvedores que podiam criar paginas HTML dinmicas. O grande boom do Java comeou com o lanamento de uma verso do Netsacpe Navigator que dava suporte a programas escritos em Java embutidos em documentos HTML, conseqentemente a Microsoft fez o mesmo com o seu browser o Internet Explorer e o Java se tornou popular. De l para c a linguagem sofre inmeras alteraes e hoje muito popular sendo utilizada em diversas plataformas e para inmeros fins. (DEITEL; DEITEL, 2003). A plataforma Java Card surgiu da necessidade de desenvolver aplicaes para cartes inteligentes que no dependesse de hardware. Em 1996 Schlumberger anunciou que estava utilizando Java para desenvolver aplicativos para cartes inteligentes, at o momento a nica

25

forma de escrever programa em cartes inteligentes era atravs do fabricante do carto que carregava o software no momento da fabricao. No mesmo ano a Sun apresenta a primeira tentativa de utilizar Java em cartes inteligentes lanando a verso 1.0 da especificao Java Card . No final 1997 lanada a verso 2.0 da especificao Java Card que continha novos recursos e funcionalidades. A verso 2.1 foi lanada no incio de 1999 e continha melhoramentos da verso 2.0. Na seqncia teve o lanamento a verso 2.2.1 com novas funcionalidades implementadas principalmente em mtodos RMI e o lanamento da verso 2.2.2 da plataforma Java Card onde foram melhorados os algoritmos de criptografia, suporte a biometria e interoperabilidade de cartes (JURGENSEN; GUTHERY, 2002 ). Atualmente a verso da especificao Java Card esta na 3.0.1 e apresenta uma nova arquitetura. Para SUM MICROSYSTEMS(c1994-2009) a verso est separada em duas partes.

Classic Edition: Baseada na verso 2.2.2 da API Java Card, foram acrescentados novos algoritmos de segurana, mantendo compatibilidade com verses antigas j em uso da especificao.

Connected Edition: Apresenta um novo ambiente para execuo, foi criado uma nova mquina virtual, e includo novas funcionalidades como recursos para execuo em ambientes de rede e para aplicativos que exigem mais robustez.

Java Card um subconjunto da linguagem Java com limitaes devido s caractersticas e recursos disponveis em seu ambiente de execuo. Uma aplicao Java Card nada mais que um applet armazenado em um carto que quando utilizado e carregado em memria e executa bibliotecas de classes que so geralmente armazenadas em memria ROM. Uma das caractersticas mais interessante da plataforma Java Card a sua capacidade de ser multiplicao, permitindo que em um mesmo carto possa ser instalado e executado (no ao mesmo tempo) mais de um applet, alem da instalao de novos applets ser feita durante o ciclo de vida do carto. (MAYES; MARKANTONAKIS, 2008). Java Card oferece simplicidade e rapidez no desenvolvimento de aplicativos para carto inteligente alem disso oferece um ambiente seguro contra acessos no autorizado de informaes. No Quadro 4 apresentado alguns recursos no suportados pela plataforma Java Card.

26

Caractersticas Java suportadas Tipos de dados primitivos pequenos: boolean, byte, short. Arrays unidimensionais. Java packages, classes, interfaces, e exceptions.. Caractersticas Java orientado a objeto: herana, mtodos virtuais, sobrecarga e criao de mtodos dinmicos, regras obrigatrias. A palavra-chave int e inteiro de 32 bits e apoio a tipo de dados opcionais.Quando 4 : Recursos Java suportados e no suportados Fonte: Chen (2000, p. 31).

Caractersticas Java no suportadas Tipos de dados primitivos longos: long, Double, float. Caracteres e strings. Arrays multidimensionais. Carregamento dinmico de classes. Security manager. Coleta de lixo(Garbage collection) e finalizao. Threads. Serializao de objetos. Clonagem de objetos.

Java Card herda a caracterstica 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 cartes de diferentes fabricantes, porm isso depende do fabricante do carto que deve dar suporte a as especificaes Java Card para que a mquina virtual possa rodar sobre o sistema operacional. Essa caracterstica mantm a portabilidade de programas desenvolvidos em Java Card. A tecnologia Java Card separa o ambiente de execuo do programa do acesso aos dados do sistema operacional (RANKEL; EFFING, 2003). No Apndice B apresentado um exemplo de cdigo Java Card.

Desenho 7: Estrutura Java Card Fonte: Hendry (2007, p. 77)

O applet Java Card armazenado na memria EEPROM e executado pela mquina virtual, os applets so carregados no carto sobre a forma de packages Java onde cada pacote contem um applet (RANKEL; EFFING, 2003).

27

Segundo Mayes e Markantonakis (2008) os passos para criao e download de um applet Java Card so:

Primeiramente a aplicao ser desenvolvida utilizando editor de cdigo-fonte Java (IDE de desenvolvimento). O processo de compilao ser realizado e ter como base o arquivo Java. Como sada ser gerado um arquivo de classes que contem o bytecodes e um arquivo de importao que contem algumas informaes complementares.

Na seqencia o conversor e o verificador Java Card sero executados a fim de transformar os arquivos de classes em arquivos CAP (que o formato utilizado na plataforma Java Card) e o arquivo de exportao. O conversor executado fora do carto e tem como objetivo verificar se a aplicao esta em conformidade com a API Java Card.

Por fim o arquivo CAP ser instalado no carto e ficara disponvel para ser utilizado pelo aplicativo host.

Um dos principais meios de segurana em Java Card o seu mecanismo de firewall. O firewall isola as aplicaes dentro do carto evitando qualquer comunicao entre elas. A comunicao entre applets caso necessrio feita atravs de mecanismos de partilha que com as devidas permisses possibilitam o compartilhamento de servios e dados (MAYES; MARKNTONAKIS 2008).

2.2.1. JCRE - Java Card Runtime Environment

O JCRE define ambiente de execuo Java Card e responsvel pela alocao de memria, gerenciamento de memria e execuo de bytecodes, as classes definidas no ambiente so responsveis por interagir com o sistema operacional atravs dos mtodos nativos. A instalao do ambiente realizada no momento do da fabricao do carto e permanecesse ate o final da vida til do carto. O JCRE consiste na Maquina Virtual Java Card que responsvel por interpretar os bytecodes e o Java Card API responsvel por implementar especificaes e classes do sistema. O ambiente Java Card fornece uma interface

28

simples para execuo de applets que so executados independentemente do sistema (CHEN, 2001). Segundo Chen (2001, 37) O JCRE inicializado apenas uma vez durante a vida do carto, o que difere do ambiente de execuo de Java tradicional realizado em um computador pessoal onde o ambiente de execuo encerrado junto com o sistema operacional, nesse momento o JCRE inicializa a mquina virtual e os servios. Os objetos do carto e os dados quando utilizados so criados e mantidos em memria persistente o que faz com que quando o carto fica sem energia as informaes so preservadas e a mquina virtual desativa e os objetos e dados so manntidos em memria no voltil. Quando o carto 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 comunicao com o CAD segundo Chen (2001, 39) o JCRE entra em um loop, esperando que comando APDU. Aps 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 trs caractersticas adicionais em tempo de execuo.

Objetos persistentes e transitrios. Java Card mantm objetos em memria persistente, porm podem ser usados tambm objetos transientes que so manipulados em memria RAM (motivos de velocidade e segurana).

Operaes atmicas e transaes Define a gravao de um campo como sendo atmica, ou seja, a cada gravao garante que o novo valor seja gravado ou o valor anterior restaurado. O ambiente Java Card oferece tambm mecanismos de controle de transao onde uma operao em um applet pode ser controla, caso ocorra alguma falha na transao ela pode ser cancelada.

Applet firewall e mecanismos de compartilhamento O firewall isola os applets, onde o funcionamento de um applet no interfere no funcionamento de outro. A troca de dados e servios entre applets feito atravs de mecanismos de compartilhamento.

29

2.2.1.1. JCVN Java Card Virtual Machine

A mquina virtual um componente essencial para executar programas escritos em Java ela fornece recursos suficientes para executar esses programas independentemente do hardware envolvido. Conforme Chen (2001) a maquina virtual Java Card est dividida em duas partes separadas, o interpretador e o conversor. Essas partes so responsveis por prover as principais funcionalidades para executar um applet.

Conversor: o processo de converso trabalha com base em um package, onde a ferramenta converter pega um arquivo class gerados pelo compilador Java e transforma em um arquivo CAP, que a unidade binria utilizadas pelo interpretador. O processo de converso executado fora do carto e realiza uma srie de checagem como verificao de violao da sublinguagem, inicializao de variveis estticas que garantem a integridade das classes e otimizao de bytecodes.

Interpretador: o interpretador Java Card garante a independncia de hardware e executa os apples Java Card dentro do carto. As principais funes do

interpretador so executar os bytecodes dos apples, criar objetos, alocar memria e garantir a segurana durante a execuo de applets.

No Desenho 8 apresentado a estrutura da JCVM.

Desenho 8: Java Card Virtual Machine Fonte: Chen (2001, p. 31).

30

2.2.1.2. Java Card API

Originalmente os cartes inteligentes no permitiam que sistemas de terceiros fossem carregados no carto e no possuam interfaces que permitiam o desenvolvimento de aplicaes independentes. Com o tempo surgiram sistemas operacionais como o MULTOS e os sistemas operacionais que suportassem Java Card que passaram a permitir que os desenvolvedores independentes carregassem seus prprios programas no carto. Esses sistemas operacionais so fortemente apoiados por rotinas que fazem parte de APIs que do acesso a funes nativas do sistema operacional. Segundo Rankel e Effing (2003, p. 249) praticamente todos os sistemas operacionais tm suas prprias APIs internas, mas essas APIs no so projetados para uso externo e geralmente so confidenciais (RANKEL; EFFING, 2003). Atualmente existem os padres industriais de APIs Java Card e MULTOS que so predominantes no mercado, elas oferecem dentro de suas caractersticas especificas funes de acesso a gerenciamento de arquivos, funes de criptografia e envio e recebimento de dados. Segundo Chen (2001, p. 40) as APIs Java Card consistem de um conjunto de classes personalizadas para programao de aplicaes para o carto inteligente de acordo com a norma ISO/IEC 7816, ela uma extenso da API Java e foi otimizada para as necessidades do carto inteligente, possui alguns recursos que no so suportados devido as limitaes de um carto inteligente, entre os recursos no suportados esto suporte a formulrios e interfaces GUI devido aos cartes no possurem visor, recursos de rede e algumas classes que no so suportadas devido a requisitos de memria (CHEN, 2001). A API Java Card oferece basicamente quatro pacotes que simplificam a programao Java Card. Trs desses pacotes so obrigatrios para qualquer carto Java e um opcional sendo que uma extenso. Existem tambm pacotes de aplicaes especficas que fornecem funes para o desenvolvimento para SIM Cards e outros componentes. O Quadro 5 descreve os principais pacotes Java Card.

31

Pacote java.lang

javacard.framework javacard.security javacardx.crypto

Descrio 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 excees. E um pacote que fornece estrutura para a execuo de applets. Oferecem suporte as principais especificaes da norma ISO/IEC 7816 Baseado no java.security esse pacote oferece uma variedade de funes de suporte a criptografia. Esse pacote de extenso 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 clculos criptogrficos.

Quadro 5: Pacotes Java Card Fonte: Adaptado de (CHEN, 2001)

Usar mtodos da API Java Card no desenvolvimento de aplicaes garante uma melhor utilizao de recursos e portabilidade entre cartes de diversos fabricantes alem de aperfeioar a utilizao da memria e melhorar a segurana atravs de mtodos de verificao de autenticao (RANKL, 2007).

2.3. FERRAMENTAS E MTODOS PARA DESENVOLVIMENTO SMART CARD

Nessa seo sero apresentadas algumas ferramentas que poder ser utilizadas para apoiar o desenvolvimento de aplicativos Java Card. Esse ferramentas podem ser utilizadas no desenvolvimento do trabalho.

2.3.1. Open Card Framework

Criado em 1997 pelo Consorcio OpenCard formado pela IBM e Gemplus o OCF fornece um conjunto de API Java para terminais. No conteste de aplicaes host o OCF oferece funcionalidade e uma interface de alto nvel para desenvolvedores criem servios que se comuniquem com o carto. A implementao 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 correes de bugs. O projeto Open Source (CARDCONTACT, c2008).

32

2.3.2. OpenSC

um projeto Open Source que fornece bibliotecas para acesso a cartes inteligentes, seu principal objetivo e fornecer recursos de criptografia de informao para poder oferecer segurana no acesso a recursos do carto. Pode ser utilizada em aplicaes de correio eletrnico, assinatura digital e autenticao. O projeto desenvolvido por uma equipe internacional e esta licenciado sob a licena LGPL. O projeto possui uma lista de equipamentos e sistemas operacionais compatveis com as suas especificaes. As ferramentas OpenSC fornecessem recursos para implementar PKCS #15 que em uma norma que define o uso de tecnologias para utilizao de criptografia em tokens (OPENSC, 2009).

2.3.3. MUSCLE

Movimento para o Uso dos Cartes Inteligentes em um Ambiente Linux, um projeto que tem como objetivo desenvolver drivers, APIs para uso em cartes inteligentes e leitores em ambiente Linux com o objetivo de implemetar recuros de criptografia se chaves de segurana, O MUSCLE oforece compatibilidade com diversos fabricante de tokens Machintox e

criptogrficos alem de oferecer portabilidade com as plataformas Unix,

Windows, suas especificaes esto baseadas na plataforma PC/SC e um projeto Open Source (MUSCLE [200-]).

2.3.4. SIM Toolkit

SIM Tookit um conjunto de comandos para cartes SIM Card utilizados em telefones GSM, esses comandos so utilizados independentemente da rede ou aparelho utilizado. Basicamente os aplicativos so usados para autenticar o usurio do aparelho na rede e servios de Mobile Bank permitindo, por exemplo, que seja realizado pagamentos com valores pequenos, sendo que em alguns casos pode ate ser utilizado para exibir menus e permitir entrada de dados. Atualmente o SIM Toolkit est especificado na norma GSM 11.14

33

3. MATERIAIS E MTODOS

Nessa seo sero apresentados os matrias e mtodos utilizados para que os objetivos sejam alcanados. Em um primeiro momento sero investigados em revistas, sites, livros, artigos e qualquer meio de informao similar as principais ferramentas que auxiliam o desenvolvimento de aplicativos para cartes inteligentes utilizando a plataforma Java Card. No contexto de ferramentas o acadmico ir explorar bibliotecas, extenes, plug-ins, IDEs, APIs e qualquer outro mecanismo computacional que auxlio o desenvolvedor Java Card. Aps o levantamento inicial, os resultados encontrados sero refinados a fim de que seja selecionado apenas as ferramentas que sejam definidas com importantes para o desenvolvimento do trabalho. No momento no foram definidos critrios de eliminao ou seleo de ferramentas. Esses critrios sero estudas e definidos pelo acadmico no decorrer do desenvolvimento do trabalho. Isso necessrio devido pequena quantidade de

ferramentas existentes e a complexidade das mesmas. As ferramentas selecionadas sero estudadas e ser desenvolvido pequenos prottipos que demonstraro o uso de cada uma. Devido a pequena quantidade de cartes existentes e as suas particularidades o acadmico ira na medida do possvel utilizar ferramentas que possibilitem a criao de prottipos e que seja Opem Source. A prototipao de alguma ferramentas pode se tornar invivel devido a custos e disponibilidade de equipamentos, nesses casos ser utilizado simuladores e para as que no disponibilizarem simuladores e ferramentas ser fundamentalizada. Ser criado um documento de referncia que ser utilizado pelo acadmico para sua avaliao final. Esse documento ter as principais caractersticas da ferramenta estudada e sua potencial rea de utilizao. Isso ser utilizado para cada ferramenta avaliada, pois as mesmas sero estudadas de forma independente e depois comparadas. A aquisio de equipamentos est sendo estudada e j foram levantados alguns modelos de leitores e gravadores que sero usados. Os levantamentos iniciais indicam que o leitor e gravador de cartes hoje esta sendo comercializado por valores que variam de R$ 100,00 a R$ 200,00, j os cartes foram encontrados por valores que variam entre R$ 20,00 e R$ 100,00 dependendo do modelo escolhido. importante ressaltar que o acadmico ir se responsabilizar por quaisquer custos que porventura surgirem no decorrer do projeto.

34

Algumas ferramentas que podero ser utilizas para realizar o trabalho.

JCOP Plugin Eclipse Open Card Framework EclipseJCDE BSmart Plugin Eclipse Java Card PKI Java OpenPGPCard Jaccal MUSCLE OpenSC SIM Toolkit Java Card 3 Plataform NetBeans

As ferramentas sero selecionadas a partir dos critrios definidos durante a execuo do trabalho. O acadmico ir utilizar um blog como forma de captar informao e de compartilhar o conhecimento que o mesmo ir adquirir no decorrer do trabalho.

35

4.

CRONOGRAMA E EXECUO

Atividades Pesquisa de ferramentas disponveis e aquisio de equipamentos necessrios Estudos de viabilidade das ferramentas encontradas Definio de critrios e seleo de ferramentas Implementao dos prottipos e testes nas ferramentas Avaliao e comparao das ferramentas analisadas Artigo TCC II Monografia TCC III

Meses 2009 2010 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

36

REFERNCIAS CARDWERK. History of Smart Cards. 2008. Disponvel em: . Acesso em: 20 out. 2009. CARDCONTACT, OpenCard Framework. Disponvel em: . Acesso em: 02 nov. 2009. CHEN, Zhiqun. Java Card Technology for Smart Cards: Architecture and programmers Guid. California: Ed. Prentice Hall, 2000. 400 p. CUNHA, Ricardo Marquino. Smart Card e e-TAG. 2004. Disponvel em: . Acesso em: 21 ago. 2009. DEITEL, H.M.; DEITEL, P. J.. Java: como programar. 4.ed. Porto Alegre: Bookman, 2003. 1386p. EMVCO. Specifications. 2008. Disponvel em: . Acesso em: 20 out. 2009. GLOBAL PLATAFORM. About GlobalPlataform. c2008. Disponvel em: < http://www.globalplatform.org/aboutus.asp>. Acesso em: 25 out. 2009. HENDRY, Mike Multi-application Smart Cards: Technology and Applications, Ed. Cambridge University Press 2007. 266p. HSBC, Smart card, inovao tecnologia, 2009. Disponvel em: . Acesso em: 30 ago. 2009. ID EDGE. Hybrid Cards. 2009. Disponvel em: < http://www.idedge.com/index.cfm/fuseaction/category.display/category_id/93/hybrid_smart_ cards.htm>. Acesso em: 20 out. 2009. ID EDGE. Combi Cards. 2009. Disponvel em: < http://www.idedge.com/index.cfm/fuseaction/category.display/category_id/93/hybrid_smart_ cards.htm>. Acesso em: 20 out. 2009. ITI, Saiba como obter um Certificado Digital e quais os benefcios para sua vida, [200-] Disponvel em: . Acesso em 19 out. 2009. JURGENSEN Timothy M. GUTHERY Scott B. Smart Card: The Developers Toolkit. Ed Prentice Hall, 2002. 432p. MAYES, Keith.; MARKANTONAKIS, Konstantinos. Smart Cards, Tokens, Security and Applications, Ed. Springer, 2008. 392p. MUSCLE, Movement for the Use of Smart Cards in a Linux Environment, [200-]. Disponvel em: . Acesso em: 02 nov. 2009.

37

OPENSC, OpenSC Project. Disponvel em: < http://www.opensc-project.org/opensc>. Acesso em: 02 nov. 2009. OPENSC, OpenSC Project, 2009. Disponvel em: . Acesso em: 23 out. 2009. PC/SC WORKGROUP. PC/SC Workgroup Specifications Overview, 2009. Disponvel em: . Acesso em: 25 out 2009. PETRI, Steve. An Introducion To Smart Card. 1999. Disponvel em: . Acesso em: 12 out. 2009. 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. SARGENTO, Claudia. Smart Cards em franca ascenso, 2007. Disponvel em: . Acesso em: 30 ago. 2009. SMARTCARD BASICS, Smart Card Standards, c2009. Disponvel em: . Acesso em: 02 nov. 2009. SUN MICROSYSTEMS, Java Card Technology Overview, c1994-2009. Disponvel em: . Acesso em: 02 nov. 2009. SUM MICROSYSTEMS. Java Card Technology APIs & Documentation, c1994-2009 Disponvel em: . Acesso em: 02 nov. 2009. URBS, Carto Transporte, c2008, Disponvel em: . Acesso em: 02 nov. 2009. ZETES. Carto do Cidado, [200-]. Disponvel . Acesso em: 02 nov. 2009.

38

APENDICE A Partes que compem a norma ISO/ICE 7816 Abaixo apresentado as partes que compes a norma ISSO/ICE 7816. As informaes contidas na tabela formam colhidas em site e matriais tcnicos. ISO Parte 7816 1 7816 2 7816 3 7816 4 7816 5 7816 6 7816 7 7816 8 7816 9 7816 10 7816 11 7816 12 7816 13 7816 15 Descrio Define as caractersticas fsicas do carto como dimenso e posio do cihp no carto de plstico. Define as dimenses, localizao e caractersticas eltricas dos contatos do carto. Define os sinais eltricos, os protocolos de transmisso e os requisitos de tenso e corrente dos contatos do carto Define o padro entre a troca de comandos do carto, padro bsico de comunicao entre o carto e o host Define as normas para o protocolo de numerao Define o meio de transferncia de dados, nessa parte esto definidos os protocolos de transmisso T=0 e T=1 Define o padro de comandos Structured Query Language Card (SCQL) para consultas em base de dados. Definem um padro de segurana em comandos internos, tcnicas de criptografia Especificam comandos para gerenciamento de arquivos no carto, arquivos de incluso e excluso, cobrem o ciclo de vida do carto. Define os sinais eletrnicos e ATR para cartes Especifica padro para uso em identificao pessoal atravs de mtodos biomtricos Define a condies de funcionamento utilizando comunicao USB Documento que esta em desenvolvimento e integra mtodos do GlobalPlataforn Contem informaes sobre a funcionalidade de criptografia no carto

39

APENDICE B - Exemplo de cdigo Java Card Exemplo de cdigo Java Card que envia para o terminal um Hello Word. Para maiores informaes consulta http://forums.sun.com/thread.jspa?threadID=5391233.

package hello; import javacard.framework.APDU; public class HelloWorld extends javacard.framework.Applet { static byte[] hello = {'H','e','l','l','o',' ','W','o','r','l','d'}; protected HelloWorld(byte[] baBuffer, short sOffset, byte bLength) { register(baBuffer, (short) (sOffset + 1), (byte) baBuffer[sOffset]); } public static void install(byte[] baBuffer, short sOffset, byte bLength) { new HelloWorld(baBuffer, sOffset, bLength); }

public void process(APDU apdu) { if(selectingApplet()) return; sendResponse(apdu, hello, (short)0, (short)hello.length); } private void sendResponse(APDU apdu, byte[] sendBuffer, short offset, short len) { apdu.setOutgoing(); apdu.setOutgoingLength(len); apdu.sendBytesLong(sendBuffer, offset, len); } }