Copyright, 2004-2005 Igor Medeiros Todos os Direitos Reservados - All Rights Reserved.

Documentos relacionados
Java Card & Java 6. Agenda Smart cards Leitoras de smart cards Arquitetura de software Controle de Comunicação. Arquiteturas. Igor Medeiros APDU PC/SC

DOCUMENTOS E DINHEIRO ELETRÔNICO COM SMART CARDS UTILIZANDO A TECNOLOGIA JAVA CARD. Cleber Giovanni Suavi Orientador: Marcel Hugo

UTILIZAÇÃO DE JAVA CARD COMO PLATAFORMA PARA O DESENVOLVIMENTO DE APLICAÇÕES EM SMART CARD.

Orientado por Marcel Hugo. Eduardo Paniz Mallmann

UNIVERSIDADE ANHEMBI MORUMBI DAVI PEREIRA DO CARMO JULIANO ASSUNÇÃO MEDEIROS DE SOUZA RODRIGO LOVAGLIO BEZERRA TIAGO GODOI

SMART INTERFACE: FERRAMENTA DE AUXÍLIO AO DESENVOLVIMENTO DE APLICAÇÕES JAVA CARD

Java Card Next Generation

CARDS / 2001 SMART CARDS & O DESAFIO DO DESENVOLVIMENTO DE APLICAÇÕES PARA A SAÚDE PROTEA INFORMÁTICA ISABEL PELLEGRINO

Aula 09 Introdução à Java. Disciplina: Fundamentos de Lógica e Algoritmos Prof. Bruno Gomes

Cartão de Cidadão Portuguese Electronic Identity Card (PTeID) André Zúquete, João Paulo Barraca SEGURANÇA INFORMÁTICA E NAS ORGANIZAÇÕES

Manual do Desenvolvedor Criptografia de Arquivos do WebTA

Criptografia e Segurança das Comunicações. Cartões inteligentes

Um pouco do Java. Prof. Eduardo

JCML - Java Card Modeling Language: Definição e Implementação

Desenvolvimento Web TCC Turma A-1

CURSO DE PROGRAMAÇÃO EM JAVA

Java Laboratório Aula 1. Divisões da Plataforma. Introdução a Plataforma Java. Visão geral da arquitetura da

Programação de Computadores II TCC Turma A-1

Sintaxe Básica de Java Parte 1

ESQUEMA AULA PRÁTICA 1 Familiarização com o Ambiente de Desenvolvimento Eclipse Introdução à Linguagem de Programação JAVA

PROGRAMAÇÃO JAVA. Parte 1

P n o t n ifíci c a a Un U i n ve v r e si s da d d a e d e C a C t a ól ó ica c a d o d o R i R o o d e d e J a J n a e n i e ro o PU P C U -Ri R o

Programação de Computadores - I. Profª Beatriz Profº Israel

ESQUEMA AULA PRÁTICA 1 Familiarização com o Ambiente de Desenvolvimento NetBeans Introdução à Linguagem de Programação JAVA

Linguagem de Programação JAVA. Técnico em Informática Professora Michelle Nery

MIDDLEWARE Aplicativos RMI, RPC e eventos Camadas Protocolo Requesição-Respostal Middleware Representação Externa dos Dados Sistemas Operacionais

Java - Introdução. Professor: Vilson Heck Junior. vilson.junior@ifsc.edu.br

Linguagem de Programação JAVA. Professora Michelle Nery Nomeclaturas

Universidade Federal de Uberlândia

Teleprocessamento e Redes (MAB-510) Gabarito da Segunda Lista de Exercícios 01/2010

Orientação a Objetos com Java

Introdução à Linguagem Java

Programação Orientada a Objetos

UNI *CARD: Protótipo em tecnologia Java Card para unificar o acesso a serviços universitários básicos

Programação por Objectos. Java

Acesso a Bancos de Dados em Java (JDBC)

Invocação de Métodos Remotos RMI (Remote Method Invocation)

Procedimentos para Configuração do Ambiente J2EE e J2SE em Ambiente Windows

Computação II Orientação a Objetos

Programação de Computadores - I. Profª Beatriz Profº Israel

Java ME e suas principais tecnologias de conectividade. Gracieli Begia Mateus

Universidade da Beira Interior Cursos: Matemática /Informática e Ensino da Informática

Utilização de dispositivos de hardware portáteis em criptografia

1. Apresentação Objetivos

Integração dos Leitores RFID no autómato programável

O Valor do Browser no POS Soluções e Cases

Uma Introdução ao. Computação Móvel (MAC5743/MAC330) Prof. Alfredo Goldman Monitores: Rodrigo Barbosa Daniel Cordeiro

Pontifícia Universidade Católica de São Paulo Departamento de Ciência da Computação

Instituto Superior de Engenharia de Lisboa

Capítulo 1. Introdução ao Java. Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

JADE Java Agent DEvelopment Framework

Módulo 02 Programação Orientada a Objetos. Última atualização: 07/06/2010

Bruno Emerson Gurgel Gomes. BSmart: Desenvolvimento Rigoroso de Aplicações Java Card com base no Método Formal B

Fundamentos de Programação II. Introdução à linguagem de programação C++

Java para Desktop. Introdução à Plataforma Java JSE

TECLADO PAINEL OPERADOR USB COM DISPLAY GRÁFICO. Código : FT 023/09 REV: 02

ROTEIRO PARA CONFIGURAÇÃO DO AMBIENTE PARA ACESSO AO PERSUS MÓDULO DE GESTÃO DE CONTAS E PROTOCOLO DE IMPUGNAÇÕES E RECURSOS ANS Agência Nacional de

Linguagens de. Aula 02. Profa Cristiane Koehler

Programação Orientada a Objetos

Algoritmia e Programação APROG. Linguagem JAVA. Básico. Nelson Freire (ISEP DEI-APROG 2012/13) 1/31

Programação Orientada a Objetos (DPADF 0063)

OSGi Um Sistema Dinâmico de Módulos para Java

NETALARM GATEWAY Manual Usuário

Manual HDBS Revisão 1.1

Sistemas Distribuídos

Objetivos do Curso. Você será capaz de:

PLATAFORMA DE DESENVOLVIMENTO PINHÃO PARANÁ INSTALAÇÃO DE CERTIFICADO DIGITAL EM APLICAÇÃO WEB JBOSS.

Aula 03-04: Modelos de Sistemas Distribuídos

Um Driver NDIS Para Interceptação de Datagramas IP

Fundamentos de Java. Prof. Marcelo Cohen. 1. Histórico

MANUAL DE INSTALAÇÃO E PROGRAMAÇÃO CONVERSOR - IP / USB / SERIAL RV1

Mini-curso Gratuito. Globalcode - The Developers Company Slide 1

Características técnicas Baseado no ATMega da empresa AVR, fabricante de micro-controladores em plena ascensão e concorrente do PIC Pode usar ATMega

Algoritmos e Programação 2. Introdução à Programação Orientada a Objetos. Orientação a Objetos. O que é um paradigma de programação?

Linguagem de Programação Orientada a Objeto. Introdução a Orientação a Objetos Professora Sheila Cáceres

UNIVERSIDADE FEDERAL DO PARANÁ

SISTEMAS DISTRIBUÍDOS

CH & TCR. Tecnologias de Identificação

Descrição. Implementação. Departamento de Informática e Estatística Universidade Federal de Santa Catarina LAB 4 Transferência de Arquivos

Programação com Acesso a Banco de Dados

Capítulo 8. Software de Sistema

Arquitetura Java ME (J2ME) & Tecnologias Java Embarcadas Relacionadas

JAVA. Introdução. Marcio de Carvalho Victorino. Page 1 1/40 2/40

Introdução à linguagem

Tutorial RMI (Remote Method Invocation) por Alabê Duarte

Guia Rápido LINKER SAT REV. 2.1 MAI / 2015

Linguagem Java. Arquitetura e Ambiente de Desenvolvimento. Arquitetura e Ambiente de Desenvolvimento Prof. Anderson Augustinho Uniandrade

Smart Cards. Uma tecnologia abrindo o seu caminho

Programação online em Java

A Linguagem Java. Apresentação. Java. A Linguagem da Internet

Sistemas Operacionais e Introdução à Programação. Módulo 1 Sistemas Operacionais

O que significa programar e a razão da sua importância. os sistemas informáticos dependem da interacção de inúmeros programas

Práticas de Desenvolvimento de Software

Transcrição:

Java Card no Mercado Brasileiro Igor Medeiros www.igorm edeiros.com.br

Agenda Mercado Brasileiro Smart cards Arquitetura de software e hardware Arquitetura de conectividade Nova Smart Card I/ O API (Java 6) Java Card

Palestrante Evangelista Java Card Bacharel em ciência da computação Trabalha cerca de 4 anos com Java Igor Medeiros Pioneiro na produção de literatura Java Card no Brasil Escreve para a revista MundoJava Colunista do PortalJava.com Mantenedor do Portal Java Card

O que é um Smart Card? Cartão com ch ip em bu tid o Tran sm ite, arm az en a e p rocessa d ad os Características d efin id as n a ISO 7816

Aplicações com Cartões inteligentes e- CPF Certificação digital

Aplicações com Cartões inteligentes Bilhete único Transporte público de São Paulo

Aplicações com Cartões inteligentes Controle de estimativa de tráfego do trânsito de veículos em São Paulo

Aplicações com Cartões inteligentes GSM SIM Cards

Aplicações com Cartões inteligentes Uso de RFID contra falsificação de remédios

Aplicações com Cartões inteligentes Controle de acesso

Aplicações com Cartões inteligentes Cartão de sócio do clube

Aplicações com Cartões inteligentes Ingressos para a copa 2006 Com chips RFID

Motivação Quantidade de Smart Cards no Brasil (milhões) 300 250 200 150 Smart Cards 100 50 0 2005 2011 Fonte: Frost & Sullivan

Motivação Crescimento da Receita (milhões de US$) 400 350 300 250 200 150 100 50 0 2005 2011 Receita Fonte: Frost & Sullivan

Motivação Desenvolvedores para Smart Card no Brasil?

Motivação 99% dos POS Visanet aceitam smart cards 25% ATMs aceitam smart cards Internautas Brasileiros perderam US$ 120 m ilhões pela internet (só 2005!)

Arquitetura de Hardware & Software

Tipos de cartões inteligentes Diferenças entre funcionalidades e preço Contato físico Rádio frequência Sem contato (contactless)

Arquitetura (smart card de contato) Processador JCRE (Java Card Runtine Environment) RAM 256-4096 bytes CPU 8/ 16/ 32 bits ROM 6-64 KBytes EEPROM 4-128 KBytes I/ O CLK RST Vcc GND Java Card Applets

Cartões multi- aplicação Suporte a mais de um aplicativo (applet) Java Card MULTOS Smart Card for Windows Applets API Serviços nativos

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)

Estrutura APDU Comando-APDU Cabeçalho obrigatório opcional CLA INS P1 P2 Lc Data Field Le Resposta-APDU Corpo opcional Data Field SW1 obrigatório SW2

Casos de APDU APDU T= 0 / T= 1 host Comando Resposta Device Cabeçalho SW Cabeçalho Le Data SW Cabeçalho Lc Data SW Cabeçalho Lc Data Le Data SW

Exemplos APDU Get Challenge > > 00 84 00 00 08 < < 05 7F 16 4E E5 7E 37 F9 90 00 Delete Master File > > 80 E4 00 00 02 3F 00 (FORMAT C:) < < 90 00

ATR (Answer To Reset) Cadeia de caracteres com informações do próprio smart card Obtido quando o smart card é conectado Exemplos 3B 23 00 35 13 FF (Schlumberger MicroPayflex) 3B 1F 11 00 67 80 42 46 49 53 45 10 52 66 FF 81 90 00 (Nokia branded SC) 3B 1F 94 00 6A 01 38 46 49 53 45 10 8C 02 FF 07 90 00 (GSM- SIM Saunalahti) PPS ATR 3B 1F 11 00 67 80 42 46 49 53 45 10 52 66 FF 81 90 00

Análise de um ATR 3B A7 00 40 18 80 65 A2 08 01 01 52 ATR_analysis '3B A7 00 40 18 80 65 A2 08 01 01 52' ATR: 3B A7 00 40 18 80 65 A2 08 01 01 52 + TS = 3B - - > Direct Convention + T0 = A7, Y(1): 1010, K: 7 (historical bytes) TB(1) = 00 - - > Programming Param P: 0, I: 0 TD(1) = 40 - - > Y(i+ 1) = 0100, Protocol T = 0 TC(2) = 18 - - > Work waiting time: 960 x 24 x (Fi/ F) + Historical bytes: 80 65 A2 08 01 01 52 Possibly identified card: 3B A7 00 40 18 80 65 A2 08 01 01 52 Gemplus GPK8000

Java Card

Plataforma Java Card

Aplicação com smart card

Subset Tipos primitivos grandes : long, double, float; Caracteres e strings Arrays m ultidim ensionais Carga dinâmica de classes Security m anager Garbage collector Serialização e clone de objetos

Java Card Applets Pequenos aplicativos que executam em Java Cards ( Cardlets ) Applet AID 0xA00000B0 Todo applet deve conter um AID (Application Identifier) RID (5 bytes) Resource Identifier AID PIX (0-11 bytes) Proprietary Identifier Extension Todo applet deve estender javacard.framework.applet

Framework javacard.fram ework Abstrações de Applet, PIN, APDU, System e Util javacardx.fram ework Implementação de rotinas ISO 7816-4 (file system) javacardx.crypto Suporte a criptografia

Ferramentas de desenvolvimento Sun Java Card Development Kit (gratuito) http:/ / java.sun.com/ products/ javacard/ dev_kit.html Axalto VIEWS (evaluation) htt p:/ / www.simagine.org (requer login) JCOP (Plug eclipse) http:/ / www.zurich.ibm.com/ jcop/ news/ news.html JCardEx press (Projeto opensource brasileiro) http:/ / jcardexpress.dev.java.net Outras http:/ / www.igormedeiros.com.br/ sdk

Desenvolvendo um applet HelloWorld 1/ 4 Definição do CLA e das INStruções // CLA Byte final static byte HELLO_CLA = (byte) 0xB0; // Verify PIN final static byte INS_HELLO = (byte) 0x20;

Desenvolvendo um applet HelloWorld 2/ 4 Implementação do método install public static void install(byte[] barray, short boffset, byte blength) { } (new HelloWorldJC()).register( barray, (short) (boffset + 1), barray[boffset]);

Desenvolvendo um applet HelloWorld 3/ 4 Implementação do método process // processa o comando APDU public void process(apdu apdu) { byte[] buffer = apdu.getbuffer(); // Select the apropriate instruction (Byte INS) switch (buffer[iso7816.offset_ins]) { case INS_HELLO : gethello(apdu); return; default : ISOException.throwIt(ISO7816.SW_INS_NOT_SUPPORTED); } }

Desenvolvendo um applet HelloWorld 4/ 4 Implementação do método process 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 apdu.setoutgoing(); short totalbytes = (short) hello.length; // informa ao JCRE o tamanho da mensagem em bytes apdu.setoutgoinglength(totalbytes); // envia a mensgem para o host apdu.sendbyteslong(hello, (short) 0, (short) hello.length);

Processo de desenvolvimento JAVA JAVA JAVA JDK Emulador javac JAVA JAVA CLASS CAP Off- card installation JAR converter EXP EXP EXP EXP On- card installation JCDK Dispositivo

Ciclo de vida create INATIV O select (AID) ATIVO processa o comando deselect

Envio de APDU para Applets Comando Comando APDU JCRE APDU Host Resposta Resposta Dispositivo

PC/ SC Arquitetura para conectar um PC (desktop, laptop, etc) a um Smart Card Inclui um Resource Manager controle da leitora e smart card para o nível de aplicação Trata eventos como cartão inserido, cartão rem ovido Obtém status da leitora e do cartão Transmissão e recebimento de APDU

PC/ SC

Mustang: Novo Smart Card I/ O Mustang : Java 6! JSR 268: Smart Card I/ O JCE Provider (Wrapper JNI) API que provê funcionalidades PC/ SC e APDU em aplicativos Java: javax.smartcardio

Mustang: Novo Smart Card I/ O Funcionalidades Estabelecer conexão com o smart card Listar leitoras instaladas no S.O. Obter status da leitora (ex.: presença do cartão) Transmitir APDUs e receber resultado

Mustang: Novo Smart Card I/ O Camadas Aplicativo Java Provider JCE (Wrapper JNI) Binário - > j2pcsc.dll PC/ SC

Mustang: Novo Smart Card I/ O lib\ security\ java.security # # List of providers and their preference orders (see above): # security.provider.1=sun.security.provider.sun security.provider.2=sun.security.rsa.sunrsasign security.provider.3=com.sun.net.ssl.internal.ssl.provider security.provider.4=com.sun.crypto.provider.sunjce security.provider.5=sun.security.jgss.sunprovider security.provider.6=com.sun.security.sasl.provider security.provider.7=org.jcp.xml.dsig.internal.dom.xmldsigri security.provider.8=sun.security.smartcardio.sunpcsc security.provider.9=sun.security.mscapi.sunmscapi

Exemplo 1/ 2 public class TesteSmarCardIO { public static void main(string[] args) { // show the list of available terminals TerminalFactory factory = TerminalFactory.getDefault(); List<CardTerminal> terminals = factory.terminals(); System.out.println("Terminals: " + terminals); // get the first terminal CardTerminal terminal = terminals.get(0);

Exemplo 2/ 2 try { // establish a connection with the card Card card = terminal.connect("t=0"); System.out.println("card: " + card); CardChannel channel = card.getbasicchannel(); byte[] comando = {(byte) 0x00, (byte) 0x84, (byte) 0x00, (byte) 0x00, (byte) 0x08}; ResponseAPDU r = channel.transmit(new CommandAPDU(comando)); } } System.out.println("ATR: " + card.getatr()); System.out.println("Protocolo: " + card.getprotocol()); System.out.println("response: " + r.tostring()); // disconnect card.disconnect(false); } catch (CardException e) { e.printstacktrace(); }

Aplicativo Java 6 PC/ SC

Frameworks off card complexos OCF (OpenCard Fram ework) Java Card RMI Aplicativo J2SE Proxy A Proxy B Proxy C Encapsulamento APDU appletc.setvalor( 2 ) Applet A Applet B Applet C

Futuro próximo Java Card 3.0 Smart cards com limitações menores de hardware

Perguntas

Conclusões Smart card é realidade no Brasil, mão- de- obra não! Java Card promove uma série de benefícios que atraem indústria e desenvolvedores PC/ SC é a arquitetura mais sólida e utilizada para conectar PCs à Smart Cards Um framework para host deve incluir conceitos de inteoperabilidade, segurança, serviços específicos para cada cartão, etc A nova API Smart Card I/ O: Simplicidade (API leve) e Versatilidade (Provider de serviços JCE)

Referências Java Card (site oficial) http:/ / java.sun.com/ products/ javacard JSR 268 http:/ / jcp.org/ aboutjava/ communityprocess/ edr/ jsr268/ index.html Portal Java Card Brasil http:/ / www.javacard.com.br PC/ SC WorkGroup http:/ / www.pcscworkgroup.com JPC/ SC PC/ SC Lite http:/ / www.musclecard.com/ middle.html ITI Brasil http:/ / www.iti.gov.br OpenCard Framework http:/ / www.opencard.org

Bibliografia ISBN: 0201703297 ISBN: 3540658297 ISBN: 0-470- 85668-8

OBRIGADO! Igor Medeiros igor@igormedeiros.com.br www.igormedeiros.com.br MSN: javacardman