Prosisa Informática
     Atuação
     :: Segurança Digital
     :: Informática
     :: Telecomunicações
     Soluções
      :: Smarty
      :: Safe Boot
      :: Flash Path
      :: My Smart
      :: Pass Faces
      :: Comsense
     Parceiros
     :: Fischer
     :: SmartDisk
     :: My Smart
     :: Comsense
TreinamentoFale conosco
Prosisa | Treinamento | Artigo


Cartões Inteligentes
Andrew Ryan

Está na Internet e nos jornais. Os políticos e técnicos afirmam que os cartões inteligentes terão um papel importante em nossa vida no futuro. No posto de gasolina do bairro ou nas lojas dos centros comerciais, as pessoas nos oferecem cartões de plástico decorados com contatos dourados e brilhantes. Mas, afinal, o que é que faz esses cartões inteligentes?

A empresa que quiser aderir a esses cartões vai descobrir que o desenvolvimento de um sistema de cartões inteligentes é algo bem diferente dos fólios brilhantes, cartões impressos e belos folhetos. Esta conferência tem como objetivo desmistificar o mundo dos cartões inteligentes e apresentar algumas das duras realidades atuais ligadas ao desenvolvimento desses sistemas, além da promessa de novos avanços. Afinal, o que é um cartão inteligente?

O cartão inteligente é um cartão de plástico que tem um chip embutido. Tem a forma de um cartão de crédito e pode desempenhar as funções deste. Pode também conter informações impressas em relevo e uma tarja magnética no verso para torná-lo compatível com os sistemas existentes. Em poucas palavras, o cartão inteligente é como qualquer outro cartão de plástico. A diferença é o chip revestido de metal brilhante.

A designação de "inteligente" provém do fato de o cartão ter seu próprio processador, contido no chip. O microprocessador permite ao cartão fazer operações com seus próprios dados e interagir com seu possuidor (por meio de uma leitora ou um terminal), se necessário. O processador é a parte "inteligente" do cartão. E isso nos leva a uma das várias noções errôneas sobre a tecnologia dos cartões inteligentes: a de que um cartão de memória é um cartão inteligente.

Há dois tipos básicos de cartão inteligente: os cartões com microprocessadores, tal como descrevemos acima ( e que são, muitas vezes, chamados de cartões assíncronos) e os cartões de memória (também chamados de cartões síncronos), que permitem armazenar dados de estado sólido. Os cartões de memória não podem ser considerados inteligentes porque não têm processador. São meras formas alternativas de guardar de dados, que oferecem algumas vantagens (em termos de capacidade e durabilidade) em relação às fitas magnéticas.

O número dos chamados cartões inteligentes emitidos em 1997 foi estimado em 684 milhões. A maioria, contudo, é constituída de cartões de memória, sendo grande parte deles cartões telefônicos descartáveis pagos antecipadamente.

Embora o conceito de cartão inteligente exista desde 1974, há muito poucos cartões com processador em uso nos dias de hoje.

Nosso objetivo aqui é tratar unicamente dos cartões com microprocessador. Atualmente, os cartões disponíveis baseiam-se em microprocessadores de 8 bits (embora já estejam começando a aparecer cartões com 16 e 32 bits) com uma pequena quantidade de memória EEPROM não volátil (geralmente entre 1KB e 32KB) e uma quantidade menor ainda de memória RAM (geralmente entre 100 e 1000 bytes). São muito semelhantes, em termos de poder de processamento, aos microcomputadores do início dos anos 80.

O único meio de comunicação do cartão inteligente com o mundo exterior é uma conexão serial simples. Esta conexão é feita em um folio dourado, que também fornece energia ao chip. Em alguns casos, o cartão é energizado e comunica-se por meio de um acoplamento indutivo.

O que posso fazer com um cartão inteligente?

Há, dizem, muitos usos para os cartões inteligentes. Eles podem substituir os cartões de crédito, fornecer acesso a registros e serem usados para pagar serviços de saúde. Podem controlar acesso a computadores e edifícios. Podem ser usados para armazenar valores eletrônicos ou pontuações de programa de fidelidade. E, pelo menos na Europa, já existem cartões inteligentes embutidos em telefones celulares que guardam o número de sua conta e números telefone.

Os cartões sem contato, aqueles com acoplamento indutivo, estão sendo usados em sistemas de transporte para pagamento de passagens ou pedágio.

Em todos esses sistemas, o papel do cartão inteligente é simples: ele armazena e protege dados, não volumosos é verdade, mas muito úteis. São dados que provam a identidade do portador do cartão e, portanto, funcionam como uma "senha" para outros sistemas ou informações. Além disso, ou de forma alternativa, os dados armazenados podem representar "valores", como dinheiro ou pontuações de programas de fidelidade. A diferença entre um cartão com microprocessador e qualquer outra forma de armazenagem de dados é que o cartão inteligente guarda e protege os dados. Ele pode autenticar seu portador (por exemplo, com uma senha ou PIN - número de identificação pessoal) e também o computador com o qual está comunicando (por exemplo, através de senha criptográfica). Em um sistema bem projetado, só quando o cartão "tem confiança" no seu portador ou no seu ambiente é que ele libera os dados. É isso que faz esses cartões inteligentes.

Nos sistemas seguros, os dados armazenados pelo cartão - as senhas criptográficas - não precisam ser liberados. Muitos cartões inteligentes contêm algoritmos criptográficos e, em alguns casos, funcionalidade criptográfica no hardware, que permite operação de criptografia ou assinatura digital usando-se as senhas contidas no cartão. Esta funcionalidade adicional permite que as senhas possam ser usadas pelo aplicativo, mas nunca liberadas. Esta característica é de particular importância no campo da criptografia pública, onde o uso da senha privativa pode ser gerado pelo cartão, mas não precisa existir fora dele.

Um cartão, muitos usos

Assim, é de se esperar que os cartões de plástico que carregamos nos bolsos tornem-se cada vez mais inteligentes, o que lhes proporcionará maior segurança (e maior desejabilidade). Também podemos esperar que uma nova gama de cartões passe a competir pelo espaço em nossas carteiras, na medida em que esta tecnologia relativamente nova torna viáveis outras tecnologias (como no caso do "dinheiro eletrônico"). Contudo, apesar das garantias dadas pelos fabricantes de cartões inteligentes que estes terão um custo reduzido, seu preço ainda é alto. O que, muito provavelmente, explica o fato de a adoção dos Smart Cards ser lenta.

Uma das formas de reduzir o custo de um sistema de cartões inteligentes traz também uma grande vantagem para o usuário: o uso múltiplo do cartão não só reduz seu custo mas também permite que carreguemos menos plástico. Isto é especialmente verdade no caso dos programas de fidelidade, pois os consumidores não estão preparados para carregar um número muito grande cartões e sempre deixam os menos úteis em casa ou jogam-nos fora.

Consequentemente, uma das mais novas tendências nos sistemas de Smart Cards é o cartão de aplicações múltiplas. Na verdade, não existe nenhuma razão pela qual um cartão inteligente não possa ser usado com mais de uma finalidade. Nenhuma de suas aplicações usa, por si só, todo o espaço de armazenagem de dados.

Para as aplicações que exigem a autenticação do usuário por meio de senha ou PIN, há uma vantagem adicional na combinação de aplicações múltiplas em um só cartão. Uma única senha ou PIN podem ser usados para liberar diferentes aplicativos, logrando-se, assim, alcançar aquela característica desejável dos sistemas de segurança: uma única entrada.

Dizem que o maior emissor de Smart Cards no Reino Unido é a Boots The Chemist, com o sucesso fenomenal do cartão "Vantagem". Isto talvez permita à Boots não só alcançar os objetivos de seu programa de fidelidade (aumentar a lealdade do consumidor e coletar informações sobre ele), mas também aumentar seus lucros, vendendo para outros varejistas um espaço nos cartões que já estão nas mãos dos consumidores.

Vale a pena notar que os projetos de cartões inteligentes de pequena escala também são viáveis e econômicos. Você não precisa ser um grande banco com milhões de cartões. É possível garantir o acesso dos dez funcionários da sua empresa a qualquer sistema com os Smart Card.

Como usar um cartão inteligente?

Para iniciar um projeto baseado em cartões inteligentes, é preciso, primeiro, desfazer-se de algumas noções falsas sobre esta tecnologia e sobre o ramo dos Smart Cards em geral. A noção mais falsa que muitas pessoas (não sem razão) têm é a seguinte: "O folheto diz que este cartão inteligente tem um certificado ISO 7816. Assim, se eu o colocar na minha leitora ISO 7816 e conectá-la ao meu computador, com certeza alguma coisa acontece."

Infelizmente, a vida não é tão simples assim. Você pode querer que um cartão inteligente se comporte como um CD ROM, capaz de ler dados de qualquer Smart Card. Porém, a tecnologia atual ainda não chegou a esse nível de padronização e interoperabilidade.

Em parte, esta noção provém da terminologia. Uma leitora de Smart Cards deveria ser chamada, mais corretamente, de "dispositivo de interface de cartão inteligente", ou IFD (smart card interface device). Ela não só lê os dados do cartão. Ela é, na verdade, um canal de comunicação de mão dupla entre dois computadores: de um lado, o PC e, do outro, o cartão inteligente. O que esses dois computadores podem fazer depende dos requisitos do aplicativo. A flexibilidade também é um problema quando se trata do desenvolvimento e da interoperabilidade do sistema.

Para criar um sistema baseado em cartões inteligentes, é preciso escolher o cartão de acordo com sua funcionalidade e suas características. É preciso escolher também a leitora (ou terminal) de acordo com sua conectividade, custo e características. Depois, é preciso desenhar e desenvolver sua aplicação codificada e baseada naquilo que se espera que o cartão inteligente faça. Poucos são, atualmente, os sistemas de smart cards já prontos destinados a satisfazer necessidades específicas. A maioria dos sistemas precisa ser desenvolvida de maneira customizada.

Então, como escolher o cartão para a sua aplicação? Uma boa maneira de começar é dar uma olhada nos folhetos ou sites dos fabricantes. Desta forma, terá uma idéia do que os diversos cartões oferecem. A maioria dos fabricantes oferece um conjunto de "ferramentas de desenvolvimento", que geralmente compreende documentação, programa de interface, leitora e algumas amostras de cartão. Como esses pacotes de ferramentas custam muito caro, é melhor, se possível, conseguir um a título de demonstração. Só com as ferramentas na mão é que você vai poder avaliar a distância entre as promessas do fabricante e o produto oferecido. Por isso, é bom dar uma olhada nos kits de desenvolvimento de mais de um fabricante.

A maior parte dos kits de desenvolvimento oferecidos pelos grandes fabricantes inclui uma interface de alto nível, geralmente na linguagem de programação C como uma biblioteca ou uma DLL. A interface de alto nível esconde a complexidade da leitora de cartões e do conjunto de comandos e apresenta um grande número de funções úteis, como funções de registro no cartão, mudança de PIN, leitura e entrada de dados nos arquivos guardados no cartão e aplicação da criptografia que o cartão pode suportar. Esta é, talvez, a maneira mais fácil de desenvolver um aplicativo com cartões inteligentes.

Infelizmente, o uso da interface incluída no kit de desenvolvimento vai torná-lo cliente cativo do mesmo fabricante no que diz respeito aos futuros cartões e leitoras. Caso você queira usar um tipo alternativo de leitora (por exemplo, quando você não tiver uma porta serial sobrando em todos os seus computadores), talvez não possa fazê-lo. Se quiser comprar cartões (melhores ou mais baratos) de outro fornecedor, você vai ter que modificar o aplicativo.

E, se você espera que, com todas as normas já publicadas a respeito dos sistemas de smart card, os kits de ferramenta funcionem com todas as leitoras e com todos os cartões, vai se surpreender negativamente.

Normas? Que normas?

A principal norma relativa aos cartões inteligentes é a ISO/IEC 7816. Essa norma, que tem seis partes com muitas revisões, não é uma leitura fácil. Quando as primeiras partes foram publicadas em 1989, essa norma era uma tentativa de unificar as diversas "normas" já em uso pelos fabricantes de cartão inteligente e desenvolvedores de sistemas. Infelizmente, embora o documento procure padronizar as características físicas e elétricas do cartão inteligente, permite um grande número de variações na implementação dos protocolos de comunicação e nos comandos operacionais. Os chamados "comandos de intercâmbio" [Inter-industry Commands for Interchange] que a norma define são geralmente ignorados ou adaptados de maneira a impedir completamente o intercâmbio. O problema é que, para ter um certificado ISO 7816, você só precisa obedecer uma parte das especificações.

Esses problemas da ISO 7816 são reconhecidos pelo mercado de cartões inteligentes e já existem muitas iniciativas tentando melhorar a situação. No setor de banco eletrônico, o Europay, a Mastercard e a Visa reuniram-se e produziram o EMV, uma especificação destinada aos sistemas de autenticação de usuários e terminais para transações eletrônicas. Contudo, o EMV, como a ISO 7816, não especifica um conjunto de comandos operacionais exatos, o que impede a interoperabilidade entre cartões de diferentes fabricantes.

O grupo de trabalho PC/SC foi formado para tratar das questões de interoperabilidade no uso de cartões inteligentes com PCs. O primeiro grupo começou com a Microsoft, Schlumberger, Bull e Hewlett Packard, mas muitos outros interessados juntaram-se a ele depois. A versão PC/SC 1.0 foi publicada em dezembro de 1997 e tratou de muitos problemas ligados à interoperabilidade entre os cartões e as leitoras de diferentes fabricantes. Ao especificar as API's (interfaces de programação de aplicativos) para as leitoras de cartões inteligentes e para representações de alto nível da funcionalidade dos cartões, permite que cada fabricante conecte módulos de software para suportar seus sistemas operacionais e leitoras, dentro de um quadro que já faz parte do Windows 98. Isto significa que, quando você escreve aplicativos de cartão inteligente usando o PC/SC, pode usar cartões ou leitoras alternativas, instalando os drivers fornecidos com o programa. Assim, para passar de uma leitora a outra, basta, em tese, instalar um novo modem ou cartão gráfico.

Naturalmente, o PC/SC ainda está na versão 1.0 e apresenta muitas omissões. Os fabricantes de cartões inteligentes estão demorando um pouco para fazer produtos compatíveis com o PC/SC. Por isso, talvez seja um pouco cedo para depender do PC/SC para desenvolver aplicativos com cartões inteligentes. Mas, vale como exercício, para os desenvolvedores, conhecer a estrutura e as funções dentro do PC/SC e desenhar seus sistemas para que o próximo passo seja mais fácil.

Como o PC/SC define a API de funções de alto nível para a funcionalidade mais comum do smart card, novos projetos podem ser escritos para usar esta API, independentemente do fato de ser obtida, em curto prazo, pelo quadro do PC/SC em si ou por um wrapper parecido em cima de uma API de alto nível de algum fabricante ou conjunto de comandos operacionais (de baixo nível). Esta abordagem permite que a especificação do PC/SC seja usada como interface padrão, independentemente de ser suportada pelo sistema operacional do PC ou do cartão.

Outra grande iniciativa está, atualmente, nos sistemas operacionais de smart cards "padronizados" (também conhecidos como "sistemas operacionais de smart cards de terceira geração). Estas especificações não são patenteadas por nenhum fabricante. Foram desenvolvidas por consórcios e licenciadas para vários fornecedores. Há dois grandes concorrentes nessa área: Java Cards e MULTOS.

A API da Java Cards foi inicialmente proposta pela Javasoft e é suportada pelo Visa em seu VisaCash. Sua especificação é coordenada pelo Java Card Forum. A MULTOS foi desenvolvida inicialmente pela Mondex International para o sistema de caixa eletrônico da Mondex (cuja maior parte pertence agora ao Mastercard). Seu desenvolvimento é coordenado por um consórcio chamado MAOSCO.

Tanto a Java Cards como a MULTOS têm os mesmos objetivos: permitir o desenvolvimento de cartões de múltipla aplicação fazendo com que os cartões rodem em módulos de programas que podem ser baixados em ambientes seguros. Esses módulos de aplicativos são escritos em linguagem de alto nível e compilados em um código virtual de máquina para serem executados por um intérprete no sistema operacional do cartão. Podem ser carregados e removidos da área de memória do aplicativo, conforme a necessidade. Isto dá boa flexibilidade ao desenvolvedor de aplicativo de smart card porque, se o cartão não tiver a funcionalidade que seu aplicativo precisa, você pode carregar um novo módulo de programas no cartão. O inconveniente é que esta característica exige bastante dos recursos limitados dos microprocessadores existentes no cartão. Assim, esses sistemas operacionais só estão disponíveis nos hardwares mais poderosos e mais caros.

Tanto a Java Card como a MULTOS têm pontos fortes e fracos. Ambos os sistemas ainda estão na infância e precisam ser totalmente comprovados. Com os dois maiores atores do cenário financeiro eletrônico divididos entre os dois sistemas, é impossível não pensar na guerra entre o VHS e o Betamax pela supremacia no campo dos vídeo cassetes. A guerra ainda não está decidida, mas, como no caso VSH versus Betamax, parece que haverá só um ganhador.

A maior parte dos sistemas de cartão inteligentes em desenvolvimento hoje não justificam a despesa extra dos cartões Java Cards ou MULTOS, na medida em que só precisam da funcionalidade mais básica dos smart cards: guardar e proteger pequenas quantidades de dados. Esta funcionalidade básica é dada pela maioria dos cartões com microprocessador atualmente disponíveis. Infelizmente, a maioria desses cartões trazem esta funcionalidade básica de formas muito diferentes.

Segurança, qualidade e responsabilidade

Por fim, se você já desenhou e implementou um sistema de segurança baseado em cartões inteligentes, quem é o responsável se houver problema no sistema operacional ou se o hardware permitir uma quebra da segurança? Esta é uma pergunta que os fabricantes de cartão inteligente relutam em responder. Mas, é uma pergunta que vale a pena fazer. Afinal, a principal razão de você usar um cartão inteligente é a segurança. É surpreendente o número de projetos de smart cards que usam peças não garantidas pelos fabricantes para proteger o sistema.

Vale a pena lembrar também que não é só o hardware e o sistema operacional que devem ser rigorosamente qualificados. Qualquer software de API de alto nível deve ser qualificado no mesmo padrão: um pequeno problema na criação de direitos de acesso aos arquivos do cartão ou na configuração do PIN pode invalidar totalmente sua segurança.

Às vezes, o desenvolvimento de aplicativos de cartão inteligente parece um passeio no pântano. Avançamos muito lentamente e podemos ficar cobertos de lama. Mas, quando conhecemos as armadilhas escondidas no desenvolvimento de aplicativos de cartões inteligentes, não é difícil explorar essa tecnologia poderosa e produzir sistemas bastante seguros.

© 1998, Andrew Ryan. Todos os direitos reservados.
Agente para direitos do autor no Brasil: Prosisa Informática Ltda.
 
Melhor visualizado em 800 x 600, IE 3.0 ou superior. Prosisa | 2001 - Todos os direitos reservados