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

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

Augusto Lange Eduardo Schneider Jeferson Ghisio 1.

Apresentações semelhantes


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

1 Augusto Lange Eduardo Schneider Jeferson Ghisio 1

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

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

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

5 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. 5

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

7 7

8 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) 8

9 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) 9

10 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) 10

11 Análise de um ATR 3B A A TS = 3B Direct Convention (bit menos significativo) T0 = A7 00 (Historical bytes) TD = 40 Protocol T = 0 + Historical bytes: A Gemplus GPK

12 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 12

13 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. 13 ObrigatórioCorpo OpcionalObrigatório ACKNULLData FieldSW1SW2

14 É utilizada paridade par para testar os dados transmitidos. 14

15 Aplicacao 15

16 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 16

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

18 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 18

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

20 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]); } 20

21 // 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); 21

22 // 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); } Java Card 22

23 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); } 23

24 Java Card (site oficial) JSR 268 index.html Portal Java Card Brasil OpenCard Framework Wikipedia 24


Carregar ppt "Augusto Lange Eduardo Schneider Jeferson Ghisio 1."

Apresentações semelhantes


Anúncios Google