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