A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Augusto Lange Eduardo Schneider Jeferson Ghisio

Apresentações semelhantes


Apresentação em tema: "Augusto Lange Eduardo Schneider Jeferson Ghisio"— Transcrição da apresentação:

1 Augusto Lange Eduardo Schneider Jeferson Ghisio
Smart Card & Java Card Augusto Lange Eduardo Schneider Jeferson Ghisio

2 Smart Card O que é um Smart Card?
Cartão com chip embutido que transmite, armazena e processa dados; Características definidas na ISO 7816

3 Smart Card Aplicações: - CPF - Controle de acessos - ID - TRI
- Celular

4 Smart Card Mercado dos Smart Cards:
Quantidade de Smart Cards no Brasil (milhões):

5 Smart Card Porque investir em Smart Cards?
99% dos POS Visanet aceitam smart cards 25% ATMs aceitam smart cards POS - Máquinas que lêem cartões de crédito e de débito utilizadas em restaurantes, etc.. ATM – Máquinas que se retira dinheiro do banco.

6 Smart Card Tipos de Smart Card:
Contato Físico Radio Frequência Sem contato físico (contactless)

7 Smart Card Arquitetura (smart card de contato):

8 Smart Card Controle de comunicação – APDU (Application Protocol Data Units) Comunicação half- duplex T= 0 (envio byte- a- byte) T= 1 (envio de blocos de bytes)

9 Smart Card • Cartão é introduzido no leitor • Leitor verifica que o cartão está devidamente posicionado • Leitor aplica energia aos contactos • Leitor activa o sinal de Reset • Cartão responde com ATR (Answer To Reset)

10 Smart Card ATR (Answer To Reset)
Seqüência de inicialização de leitura de um smart card Cadeia de caracteres com informações do próprio smart card Obtido quando o smart card é conectado Define várias características da comunicação que se seguirá (ritmo, protocolo, etc) Exemplos: – 3B FF (Schlumberger MicroPayflex) – 3B 1F FF (Nokia branded SC) – 3B 1F A C 02 FF (GSM- SIM Saunalahti)

11 Smart Card Análise de um ATR 3B A7 00 40 18 80 65 A2 08 01 01 52
TS = 3B  Direct Convention (bit menos significativo) T0 = A7 00  (Historical bytes) TD = 40 Protocol T = 0 + Historical bytes: A Gemplus GPK8000

12 Smart Card Estrutura APDU (Aplication Protocol Data Unit)
- CLA (1-byte) - define a classe da instrução – INS (1-byte) - define a instrução específica de entre o conjunto de instruções definido por CLA. – P1 (1-byte) - especifica o modo de endereçamento usado pela instrução [CLA, INS]. – P2 (1-byte) - também especifica o modo de endereçamento usado pela instrução [CLA, INS]. - Lc - Número de bytes do campo “Data field” - Le - Número de bytes a enviar para o cartão

13 Smart Card - ACK (1-byte) - Indica recepção de dados. (igual INS)
Resposta-APDU - ACK (1-byte) - Indica recepção de dados. (igual INS) – NULL (1-byte) – Manda mensagem para leitora não enviar nenhum dado para o cartão pois este está a trabalhar ainda em um comando. – SW1 (1-byte) – Campo utilizado pelo cartão para mandar uma resposta sobre o Status da transmissão de volta para o leitor. – SW2 (1-byte) - (opcional) Campo que pode ser incluído nos bytes de processos, devolve um status para o leitor. Obrigatório Corpo Opcional ACK NULL Data Field SW1 SW2

14 Smart Card  É utilizada paridade par para testar os dados transmitidos.

15 Java Card Aplicacao

16 Java Card Limitações da Linguagem
• Tipos primitivos “grandes”: long, double, float ; • Caracteres e strings • Arrays multidimensionais • Carga dinâmica de classes • Security manager • Serialização e clone de objetos

17 Java Card Java Card Applets
Pequenos aplicativos que executam em Java Cards (“Cardlets”)

18 Java Card Frameworks • javacard.framework
– Abstrações de Applet, PIN, APDU, System e Util • javacardx.framework – Implementação de rotinas ISO (file system) • javacardx.crypto – Suporte a criptografia

19 Java Card Ferramentas para desenvolvimento:
• Sun Java Card Development Kit (gratuito) • Axalto VIEWS (evaluation) (requer login) • JCOP (Plug eclipse) • JCardExpress (Projeto opensource brasileiro)

20 Java Card Exemplo do Hello World
public class HelloWorldJC extends javacard.framework.Applet { // CLA Byte final - PROCESS static byte HELLO_CLA = (byte) 0xB0; // Verifica PIN final static byte INS_HELLO = (byte) 0x20; public static void install (byte[] bArray, short bOffset, byte bLength) (new HelloWorldJC()).register( bArray, (short) (bOffset + 1), Array[bOffset]); }

21 Java Card // processa o comando APDU public void process(APDU apdu) { byte[] buffer = apdu.getBuffer(); if ((buffer[ISO7816.OFFSET_CLA] == 0) && (buffer[ISO7816.OFFSET_INS] == (byte) (0xA4))) return; // Valida o CLA byte if (buffer[ISO7816.OFFSET_CLA] != HELLO_CLA) ISOException.throwIt(ISO7816.SW_CLA_NOT_SUPPORTED);

22 Java Card // Seleciona a instrução apropriada (Byte INS) switch (buffer[ISO7816.OFFSET_INS]) { case INS_HELLO : getHello(apdu); return; default : ISOException.throwIt(ISO7816.SW_INS_NOT_SUPPORTED); } 22

23 Java Card private void getHello(APDU apdu) { // cadeia de bytes com a mensagem: "hello world" byte[] hello = { 'h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', ‘d’}; // informa ao JCRE que será enviado uma resposta short le = apdu.setOutgoing(); short totalBytes = (short) hello.length; // informa ao JCRE o tamanho da mensagem em bytes apdu.setOutgoingLength(totalBytes); // envia a mensagem para o host apdu.sendBytesLong(hello, (short) 0, (short) hello.length); }

24 Referências • Java Card (site oficial) • JSR index.html • Portal Java Card Brasil • OpenCard Framework • Wikipedia


Carregar ppt "Augusto Lange Eduardo Schneider Jeferson Ghisio"

Apresentações semelhantes


Anúncios Google