Protótipo em tecnologia Java Card para unificar o acesso a serviços

Transcrição

Protótipo em tecnologia Java Card para unificar o acesso a serviços
UNI *CARD: Protótipo em tecnologia Java Card para
unificar o acesso a serviços universitários básicos
Adriana Fernandes Alves1, Fernanda Strapazzon1, Roberson Fernandes Alves1
1
Universidade do Oeste de Santa Catarina – Campus de São Miguel do Oeste
(UNOESC)
Rua Oiapoc, 211 – Agostini – 89900-000 – São Miguel do Oeste – SC – Brasil.
{adriana.alves,roberson.alves}@unoesc.edu.br,
[email protected]
Abstract. This article presents a summary of the study and implementation of
Smart Card with Java Card technology in the context of universities. Aiming
to demonstrate the advantages and difficulties offered by these technologies,
we developed the prototype UNI*CARD which is divided into two parts:
Desktop application and Java Card application. Through the UNI*CARD
sought to represent the actual shape the applicability of the technologies
studied.
Resumo. Este artigo apresenta uma síntese do estudo e da implementação de
Smart Card com tecnologia Java Card no contexto de universidades. Com o
objetivo de demonstrar as vantagens e também as dificuldades
proporcionadas pelo uso dessas tecnologias, foi desenvolvido o protótipo
UNI*CARD que está divido em duas partes: aplicação Desktop e aplicação
Java Card. Através do UNI*CARD buscou-se representar de forma real a
aplicabilidade das tecnologias estudadas.
1. Introdução
A busca pela segurança e mobilidade impulsiona o desenvolvimento de muitas
tecnologias, como: celulares, netbooks, palmtops, entre outros. Muitas destas
tecnologias requerem dispositivos menores que ofereçam mais recursos, sejam
portáveis, e que garantam segurança ao seu proprietário.
Seguindo esta tendência, surgiram os Smarts Cards, cartões com chip inseridos,
que além de melhorar processos, menor uso de papel, trouxeram comodidade aos
usuários e maior confiabilidade aos dados. Eles apresentam diversas aplicabilidades,
como cartões de créditos, cartões de celulares, cartões de acessos, e cada dia estão mais
inseridos no cotidiano da maioria das pessoas. É por estes motivos que o uso de cartões
inteligentes fazem parte da evolução da tecnologia sem fio e juntamente com
plataformas de alto nível como o Java Card vem ganhando espaço em diversas áreas
(JURGENSEN; GUTHERY, 2002).
No leque de serviços oferecidos pelas Universidades é comum utilizarem
sistemas diferentes para gerenciá-los, estes possuem pouco, ou às vezes nenhuma
integração. Essa fraca integração dos sistemas administrativos aumenta a chance de
dados redundantes, erros, complexidade nas formas de atendimento, conflitos
operacionais e organizacionais, entre outros. Para o usuário se torna exaustivo e
inseguro a necessidade de carregar “consigo” diferentes formas de identificação e
memorizar diversos código e senhas (HENDRY, 2007).
O uso de Smart Card com a tecnologia Java Card não é uma aplicação
desconhecida em IES (Instituição de Ensino Superior). Nos EUA (Estados Unidos da
América) várias universidades utilizam esta tecnologia para integrar vários serviços em
um único cartão. O cartão aproxima os serviços universitários dos usuários e permite
criar barreiras de proteção para este grupo (HENDRY, 2007). A universidade Unicamp
(Universidade Estadual de Campinas) é um dos exemplos de aplicação de Smart Cards
e Java Card, com sucesso no Brasil. O projeto foi iniciado em 2002 e proporcionou a
melhora na qualidade dos serviços da universidade (UNICAMP, c2009).
Este artigo visa, portanto, demonstrar o estudo realizado sobre a tecnologia Java
Card e a inserção da mesma no cenário universitário, a partir de um prototipo. Para
facilitar a compreensão, está dividido em quatro seções: a presente Introdução; Smart
Card e Java Card, contemplando as tecnologias estudadas; UNI*CARD, onde são
expostas as características e desenvolvimento do protótipo; os Resultados obtidos
através deste estudo e, para finalizar as Conclusões sobre o mesmo.
2. Smart Card e Java Card
O Smart Card pode ser considerado um computador portátil. Apesar da aparência com
um simples cartão, contém todos os elementos no que se refere a uma plataforma de
computação (limitada): um processador e vários tipos de memória (RAM, ROM,
EEPROM). Os Smart Cards fornecem segurança, portabilidade e armazenamento de
dados programáveis, permitindo assim, segurança dos dados, privacidade e mobilidade
aos seus usuários (JURGENSEN; GUTHERY, 2002).
Os Smart Cards possuem algumas características que lhe oferecem vantagens
sobre outros tipos de cartões. Segundo Lisbôa (2003) essas características são:
segurança, processamento, presença de micro-processador e co-processador,
armazenamento de dados, baixo consumo de energia, maior produtividade, resistência e
durabilidade. Ainda é possível citar, segundo Cunha (2004), a confiabilidade, pois
seguem a norma ISO 7816 (International Organization for Standardization) e permitem
vários ciclos de leitura/escrita.
A tecnologia Java Card é uma plataforma de desenvolvimento para aplicativos
que possuem uma capacidade de processamento e armazenamento limitados, como por
exemplo: os Smart Cards (SUN MICROSYSTEMS, c1994-2009a). Mantém o conceito
da linguagem Java, de independência de hardware, ou neste caso independência em
relação ao Smart Card utilizado. Para Jurgensen e Guthery (2002), a tecnologia Java
Card é líder quase absoluta no segmento de desenvolvimento de sistemas para cartões
em comparação a outras tecnologias existentes.
Segundo Chen (2000), por ser uma plataforma para aplicativos limitados, Java
Card também suporta apenas um subconjunto dos recursos pertinentes à tecnologia
Java. Apesar disso, garante um ambiente seguro para aplicações em Smart Cards.
Como características importantes da tecnologia Java Card devem ser citadas a
interoperabilidade, a segurança, a multiaplicação, a dinâmica e o suporte a normas –
ISO 7816, que rege as especificações de Smart Cards a nível mundial; EMV (Europay-
Mastercard-Visa Standards) e
MICROSYSTEMS, c1994-2009b).
especificações
da
GlobalPlatform
(SUN
3. UNI*CARD
O protótipo UNI*CARD está dividido em duas aplicações: a aplicação desktop e a
aplicação Java Card. O aplicativo desktop comunica-se com as aplicações no Smart
Card, e por meio de comandos realiza a leitura e escrita de dados no cartão. Contempla
uma interface (em Java) que permite a interação com os dados do cartão e acesso a um
banco de dados no PC (Personal Computer). Já a aplicação Java Card está gravada no
próprio cartão, contém miniaplicações para cada módulo universitário e guarda os dados
relevantes dos usuários.
No desenvolvimento do protótipo UNI*CARD, foram utilizados hardwares
específicos e softwares de apoio. As tecnologias utilizadas são descritas no Quadro 1.
Tecnologias Utilizadas
Hardware
1) Um Cartão Smart Card modelo JCOP 21; do tipo Contact Card (com contato), com
suporte a tecnologia Java Card 2.2.1;
2) Um CAD (Dispositivo de reconhecimento de cartão), modelo SCM Microsystems Inc.
SCR33x USB Smart Card Reader, suporte a PC/SC.
1) Framework PC/SC: Arquitetura para conectar um PC a um Smart Card.
2) Java Development Kit (JDK): Kit de desenvolvimento da tecnologia Java, utilizado na
criação da aplicação desktop.
Software
3) Java Card Development Kit (JCDK): Kit de desenvolvimento da tecnologia Java Card,
utilizado para simulação de aplicações antes da gravação no cartão.
4) Aplicativo de desenvolvimento NetBeans (aplicação Desktop).
5) Aplicativo de desenvolvimento Eclipse com o plugin JCOP Tools (Java Card).
Quadro 1: Tecnologias utilizadas para o desenvolvimento do protótipo
UNI*CARD (Fonte: Os autores, 2010).
O protótipo foi baseado nas tecnologias Java e Java Card, por isso as
ferramentas e tecnologias de desenvolvimento utilizadas são Open Source ou gratuitas.
3.1 Modelagem UNI*CARD
Para modelagem foram selecionadas apenas algumas atividades consideradas básicas
em instituições de ensino superior: Biblioteca, Financeiro e Secretaria (TACHIZAWA;
ANDRADE, 1999). O serviço da Cantina também foi utilizado, pois este permite
demonstrar o funcionamento do Smart Card como moeda eletrônica.
Como metodologia de desenvolvimento foi utilizada a Prototipação Descartável,
já que ajuda a compreender todos os requisitos que não estão bem definidos e avalia os
custos de desenvolvimento de um software (SOMMERVILLE, 2004).
A plataforma Java Card não possui uma modelagem específica, mas se tratando
de uma linguagem Orientada a Objetos foi optado pelo uso da UML (Unified Modeling
Language). Ela é uma linguagem de modelagem gráfica estruturada em um conjunto de
diagramas, onde cada diagrama permite um nível de detalhamento diferente (FOWLER,
2005). No projeto UNI*CARD optou-se pelo Diagrama de Casos de Uso e o de Classes.
Ainda no processo de modelagem foi definida a forma de funcionamento geral.
A figura 1 demonstra como o hardware e o software interagem, desde as camadas de
alto nível até as mais internas de cada tecnologia envolvida.
Figura 1: funcionamento do UNI*CARD (Fonte: Os autores, 2010).
O protótipo visa demonstrar o uso da tecnologia Java Card em Smart Card
através de uma estrutura simples que simula os serviços universitários mencionados
anteriormente. Porém essa tecnologia poderia ser integrada a sistemas já existentes
baseados na linguagem Java, apenas integrando-se as bibliotecas necessárias, como a
API Smart Card I/O.
3.2. Aplicação Desktop
Para que o usuário do sistema interaja com as aplicações no cartão é preciso uma
interface de comunicação, sendo este o papel da aplicação desktop. Possui uma divisão
por módulos, conforme Figura 2, que representam os serviços universitários escolhidos.
Figura 2: tela Principal da aplicação Desktop UNI*CARD (Fonte: Os autores, 2010).
O UNI*CARD implementa duas formas de segurança: a senha, visível ao
usuário, e o PIN (Personal Identification Number), encapsulado no código da aplicação.
A primeira verificação realizada é a autenticação do PIN (Figura 3). Esse número está
armazenado no banco de dados da aplicação e toda vez que o UNI*CARD necessitar
selecionar um applet no cartão é realizada a verificação do PIN. Este processo ocorre
internamente, sem conhecimento do usuário. É uma maneira de garantir que apenas a
aplicação desktop do UNI*CARD consiga se comunicar com o Smart Card.
A segunda verificação é através do uso da senha do usuário. Conforme a Figura
3, o usuário é identificado e fornece a senha, que é verificada dentro do Smart Card.
Figura 3: processo de validação e autenticação de usuários (Fonte: Os autores, 2010).
A tecnologia Java Card permite combinar elementos que oferecem mais
confiabilidade ao Smart Card. Na Figura 4 é possível observar que quanto mais fatores
envolvidos e combinados, maior é o nível de segurança.
Figura 4: níveis de segurança do Smart Card (Fonte: Adaptado de Roos, 2004).
Efetuado o processo de validação é possível que os módulos interajam com as
aplicações no cartão.
3.3. Comunicação com Smart Cards
A especificação PC/SC (Personal Computer/Smart Card) pertence e é definida pelo
PC/SC Workgroup, um grupo formado pelas principais empresas da indústria de Smart
Cards. A partir dela as funcionalidades do cartão são encapsuladas e podem ser
acessadas por meio de interfaces de programação de alto nível, permitindo maior
interoperabilidade entre Smart Cards e PCs. (PC/SC WORKGROUP, 1996).
Para utilizar a solução Java PC/SC, é necessária uma interface de comunicação
(wrapper JNI - Java Native Interface) com esta tecnologia. A API Smart Card I/O é
esta solução, e permite que a aplicação desktop interaja com o cartão. Esta API é
proveniente da JSR 268 e foi incluída no Java 6. É muito fácil de utilizar e implementa
as especificações PC/SC e ISO 7816 (MEDEIROS, 2007).
O APDU (Application Protocol Data Unit) é o protocolo que permite a
comunicação entre o Smart Card e a aplicação desktop. Esse protocolo se divide em
dois mecanismos: a mensagem enviada pela aplicação desktop (command APDU) e a
resposta enviada pelo Smart Card (response APDU). Essa troca de mensagens ocorre
de forma half-duplex, ou seja, APDUs podem ser enviados e respondidos pelo cartão,
mas apenas uma mensagem pode ser enviada por vez (CHEN, 2000).
Figura 5: trecho de código do envio do comando APDU (Fonte: Os autores, 2010).
A Figura 5 mostra como a API Smart Card I/O permite a troca de APDUs entre
a aplicação desktop e o cartão. O próprio APDU, por ser um padrão ISO, permite que
uma aplicação host possa se comunicar com o Smart Card sem necessidade de o cartão
possuir um sistema especial.
3.4. Aplicação Java Card
A aplicação que reside dentro do cartão é denominada applet, também conhecida como
cardlet (applet para Smart Cards). Um Smart Card que obedece a padrões estabelecidos
pela plataforma Java Card tem a capacidade de suportar multiaplicações, ou seja, é
capaz de ter mais de um applet (CHEN, 2000). Os applets do UNI*CARD foram
projetados para atender os serviços universitários selecionados, conforme Quadro 2.
Applet
Descrição
Métodos
Aluno
Contém todos os dados referentes aos serviços da Gerenciar: Matricula, Nome, Curso,
universidade em que o usuário seja um Aluno.
Validade, Senha, Status.
Cliente
Contém os dados referentes aos serviços da Cantina, Gerenciar: Código, Nome, Créditos,
funcionando como dinheiro eletrônico.
Senha.
Security
Contém o PIN global, compartilhado entre os outros Gerenciar: PIN,
applets. Garante segurança ao cartão.
Unblocking Code)
PUK
(Personal
Quadro 2: descrição dos Applets da aplicação Java Card (Fonte: Os autores, 2010).
Para selecionar um applet a aplicação desktop envia um comando APDU com o
AID de instância do mesmo. Após selecioná-lo é preciso escolher a instrução desejada.
A instrução está definida no applet selecionado.
3.5. Validação do protótipo
Como a metodologia de desenvolvimento é a prototipação descartável o projeto visa
avaliar a viabilidade desta solução. Os testes foram realizados pelos autores conforme
desenvolvimento, levando em consideração a intregação do cartão e aplicação Desktop,
segurança, capacidade de armazenamento/processamento e facilidade de uso do cartão.
Na realizaçãos dos testes foram utilizados, para dados de entrada, informações
reais dos próprios autores do protótipo. A validação/verificação ocorreu executando-se
o sistema, utilizando alguns dados de entrada e verificando se seu comportamento
estava de acordo com o esperado. Não foram realizados testes com usuários reais.
Apesar de ser um protótipo, UNI*CARD possibilitou ampliar o processo de
análise de requisitos e fornecer informações que beneficiam projetos futuros, e poderá
ser utilizado como uma referência a aplicação desta tecnologia em instituições reais.
4. Resultados
As tecnologias Java Card e Smart Cards permitem várias aplicações coexistindo de
forma harmônica dentro do cartão. Nos testes o firewall interno do cartão protegeu os
applets e os limitou ao seu contexto. O PIN e a senha não são visíveis fora do cartão. E
os dados contidos no cartão só são acessíveis após a validação do PIN e senha do
usuário. Esses processos garantem um grande nível de segurança.
Os sistemas operacionais dos Smart Cards trabalham com limitações de
memória, devido a pouca capacidade do cartão, ficando em torno 3kb a 250kb, entre
ROM e EEPROM. Foi observado que as aplicações Java Card devem ser otimizadas,
evitando redundância de código ou instanciar muitos objetos para melhorar o
desempenho.
Apesar dessa restrição de armazenamento (Smart Card utilizado possuía 36k de
memória), muita informação pôde ser inserida no cartão. Essa vantagem decorre da
forma como as informações são guardadas, ou seja, em forma de bytes, o tipo de dado
inteiro que guarda as mesmas informações que outros tipos, porém ocupa o menor
espaço de memória (CHEN, 2000). Existem cartões no mercado com mais memória que
o modelo utilizado, e muitos projetos, em breve realidade, de cartões com mais de 1Mb
(Um Megabyte) de memória.
Há uma dificuldade inicial para trabalhar com o APDU. Este comando trabalha
com informações em nível de bytes em hexadecimal, toda e qualquer informação
trocada com o cartão necessita da aplicação de uma conversão para ser compreendida
por ambas.
A linguagem Java Card é muito semelhante à Java, o que facilita muito seu
estudo para quem possui conhecimento desta. Porém, adota diversos padrões como a
ISO 7816, exigindo maior rigorosidade no código fonte. Pela escassez de
desenvolvedores é difícil encontrar material sobre as tecnologias, principalmente em
Língua Portuguesa.
5. Conclusão
O protótipo UNI*CARD implementa apenas uma parte das funcionalidades que a
tecnologia Java Card possibilita. É imprescindível notar a facilidade que um cartão de
crédito proporciona a quem necessita usá-lo fora do país de origem, ou a segurança das
ligações realizadas por maio de celulares.
Foi concluído que utilizar a tecnologia Java Card em Smart Cards traz
benefícios aos seus utilizadores, como: mobilidade, segurança, interoperabilidade,
multiaplicação e mais qualidade a todos os serviços oferecidos. Por isso, é possível
vislumbrar que essa tecnologia engrandece as instituições que a utilizam.
Referências
CHEN, Zhiqun. Java Card™ Technology for Smart Cards: Architecture and
Programmer's Guide. New Jersey: Prentice Hall, 2000. 400 p.
CUNHA, Ricardo Marquini.
Smart Card e e-TAG. 2004. Disponível em:
<http://www.gta.ufrj.br/grad/04_2/smartcard/>. Acesso em: 21 ago. 2009.
FOWLER, Martin. UML Essencial: Um breve guia para a linguagem-padrão de
Modelagem de Objetos. 3. ed. Porto Alegre: Bookman, 2005. 160 p.
HENDRY, Mike. Multi-application Smart Cards: Technology and Applications. New
York: Cambridge University Press, 2007. 245 p.
JURGENSEN, Timothy M.; GUTHERY, Scott B.. Smart Cards: The Developer's
Toolkit. New Jersey: Prentice Hall, 2002. 432 p.
LISBÔA, Carlos Arthur Lang. Smart Cards: Requisitos da Aplicação. 2003. Disponível
em: <http://www.inf.ufrgs.br/~flavio/ensino/cmp502/SmartCards.ppt>. Acesso em:
07 ago. 2009.
MEDEIROS, Igor. Smart Card I/O: Terminais Desktop Java para Smart Cards em 10
minutos. Revista MundoJava. Rio de Janeiro: Mundo, ano V, n. 25, p. 42-48,
set./out. 2007.
PC/SC WORKGROUP. PC/SC Technical Overview. 1996. Disponível em:
<http://www.pcscworkgroup.com/library/presentations.php>. Acesso em: 10 jun.
2010.
RANKL , Wolfgang; EFFING, Wolfgang. Smart Card Handbook. 3. ed. Chichester:
John Wiley & Sons Ltda, 2003. 1088 p.
ROOS, Alexis. Mobility With Security Using Java Card Technology and Biometrics.
Java Sun Developer Conference. Sun Microsystems. 2004. 47p.
SOMMERVILLE, Ian. Engenharia de Software. 6. ed. São Paulo: Pearson AddisonWesley, 2004. 592 p.
SUN MICROSYSTEMS. About Java Technology. c1994-2009a. Disponível em:
<http://www.sun.com/java/about/>. Acesso em: 30 set. 2009.
______. Java Card Technology Overview.
c1994-2009b. Disponível
<http://java.sun.com/javacard/overview.jsp>. Acesso em: 02 set. 2009.
em:
TACHIZAWA, Takeshy; ANDRADE, Rui Otávio Bernardes de. Gestão de instituições
de ensino. 3 ed. Rio de Janeiro: FGV, 1999. 280p.
UNICAMP.
Cartão
Universitário
Inteligente.
c2009.
Disponível
em:
<http://www.smartcard.unicamp.br/smartcard/index.html>. Acesso em: 13 ago. 2009

Documentos relacionados