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