Download Desarrollo de una interfaz en Java para las Tarjetas
Document related concepts
no text concepts found
Transcript
Desarrollo de una interfaz en Java para las Tarjetas Inteligentes ACOS2 utilizando el OpenCard Framework Jorge Eduardo Ibarra Esquer1, Ricardo Cásarez García2 y Julia Palencia Soto3 GRupo de INvestigación en TArjetas INteligentes (GRINTAIN) Facultad de Ingeniería Mexicali, Universidad Autónoma de Baja California 1 jorgeeie@uabc.mx, 2ricasares@hotmail.com, 3julia.palencia@gmail.com Resumen El objetivo de este trabajo es presentar la implementación de una interfaz para desarrollo de aplicaciones en Java para las tarjetas inteligentes ACOS2. Se hace uso del OpenCard Framework para codificar los comandos de transferencia de datos de las tarjetas, a partir del APDU correspondiente a cada comando. Se describe el proceso de desarrollo de aplicaciones para estas tarjetas y se plantean algunas recomendaciones para el desarrollo de aplicaciones múltiples con tarjetas inteligentes. 1. Introducción Las tarjetas inteligentes permiten realizar transacciones de forma sencilla. Son utilizadas actualmente en comercios, máquinas expendedoras automáticas, parquímetros, teléfonos públicos y aparatos de televisión interactivos, así como en aplicaciones de identificación y seguridad en informática. Un sistema que hace uso de tarjetas inteligentes requiere de varios componentes [1][2]. En cuestión de hardware, son necesarios las tarjetas, un lector o dispositivo aceptador (CAD) y una terminal a la cual se encuentre conectado el CAD. En términos de software, se hace la diferencia entre el software dentro de la tarjeta y el software que se ejecuta en la terminal. A este último, se le denomina la aplicación cliente. Para el desarrollo de estas aplicaciones, se han publicado distintos estándares e iniciativas de la industria [1][2][3][4]. Los principales son ISO 7816, EMV, GlobalPlatform, PC/SC y OpenCard Framework. Estos definen desde las características físicas de las tarjetas, las señales eléctricas que se utilizan y los comandos para el intercambio de datos entre la tarjeta y la terminal a través del CAD. Es este último punto el que genera inconvenientes a los desarrolladores de aplicaciones, puesto que los fabricantes de tarjetas inteligentes no siempre basan los sistemas operativos de sus tarjetas en los comandos definidos por los estándares, provocando con esto una incompatibilidad entre distintas plataformas y la necesidad de implementar comandos específicos para distintos modelos de tarjetas. Para el desarrollo de las aplicaciones cliente, se cuenta con herramientas como el OpenCard Framework (OCF) [2][4]. Este es un marco de referencia escrito en el lenguaje de programación Java para el acceso a la información de las tarjetas inteligentes. Proporciona interfaces bien definidas que permiten la separación de las funciones del CAD, la tarjeta y el sistema operativo; esto sin mencionar las ventajas que brinda el uso del lenguaje Java. Por otro lado, en la selección de la tarjeta inteligente a utilizar en una aplicación específica, se deben tomar en cuenta diversos factores. Entre ellos se encuentran la capacidad de memoria, mecanismos de seguridad de los datos, compatibilidad con los estándares existentes y el costo [5]. A estos se deben agregar los requerimientos específicos de la aplicación a desarrollar. 2. Desarrollo de una interfaz para las tarjetas ACOS2 con el OCF Tomando en consideración los criterios mencionados anteriormente para la selección de tarjetas inteligentes, se decidió trabajar con las tarjetas ACOS2 para un proyecto en particular [5]. Estas tarjetas cumplen con los apartados 1, 2 y 3 del estándar ISO 7816, más no con el apartado 4, que es donde se definen los comandos para transferencia de datos entre la tarjeta y el CAD [3]. Por tal motivo, es necesario implementar dichos comandos para poder realizar la comunicación en el contexto de una aplicación. Se desarrolló una interfaz para programar aplicaciones en Java utilizando el OCF. El manual de referencia de las tarjetas ACOS2 [6] proporciona las Unidades de Datos de Protocolo de Aplicación (APDU) [1] específicos para cada uno de los comandos soportados por el sistema operativo de la tarjeta. Estos se utilizaron para programar una interfaz que contiene los diferentes arreglos de bytes que componen cada APDU de comando y de respuesta reconocido por dichas tarjetas. Con ellos se crean los APDU, utilizando las clases CommandAPDU y ResponseAPDU, contenidas en el paquete opencard.core.terminal del OCF. Una vez desarrollada esta interfaz, resultó sencillo utilizarla para incorporar las tarjetas inteligentes ACOS2 en aplicaciones implementadas en Java. En la siguiente sección, se hace una breve descripción de los pasos que se deben considerar para el desarrollo de una aplicación. 3. Programación de una aplicación utilizando la interfaz para las tarjetas ACOS2 Es necesario conocer la estructura interna de la tarjeta a utilizar antes del desarrollo de una aplicación. Las tarjetas ACOS2 poseen una estructura de archivos con registros de tamaño fijo. Esto, aunque puede provocar que se desperdicie un poco de espacio, facilita la programación de las aplicaciones. Otro aspecto importante es el ciclo de vida de las tarjetas inteligentes [6]. En este caso se tiene una etapa de manufactura, en la cual el fabricante configura aspectos generales del funcionamiento de la tarjeta, y agrega datos como el número de serie y modelo de la misma. Posteriormente, se presenta la etapa de personalización. Esta es la etapa más importante de la tarjeta, ya que es donde se define la estructura de los archivos y las condiciones de seguridad que serán necesarias para la aplicación. Por último, se llega a la etapa de usuario, en la cual la tarjeta es utilizada en la aplicación para la que fue configurada o personalizada. Es recomendable que la aplicación que se desarrolle cuente con un módulo que trabaje sobre la etapa de personalización. En esta etapa se definirá la estructura de archivos y se guardará la información general del usuario. Este módulo debe crear, de manera automática, los archivos que se necesitarán, así como indicar el tamaño y número de registros que existirán en cada archivo y los permisos de lectura y escritura para cada uno de ellos. La interfaz para las tarjetas ACOS2 puede incorporarse a una aplicación escrita en Java y utilizarse con el OCF. Los pasos a seguir son: 1. Inicializar el OCF mediante una llamada a SmartCard.start(); 2. Esperar que una tarjeta se inserte en el lector. 3. Obtener un identificador y un servicio para la tarjeta. A través del servicio, la aplicación envía los comandos a la tarjeta, teniendo acceso así a la información almacenada en la misma. 4. Conclusiones En México el uso de las tarjetas inteligentes es cada vez mayor. Se siguen implementando diversos tipos de sistemas, tanto por parte de empresas privadas, como por diversos organismos gubernamentales. Por tal motivo, se debe destacar la importancia de desarrollar esta tecnología dentro del país. La interfaz desarrollada para las tarjetas ACOS2, permite acelerar el desarrollo de aplicaciones en Java que utilicen dichas tarjetas. Este modelo puede seguirse para la implementación de servicios de tarjetas no conformes con el estándar ISO 7816-4. Un punto importante es que los fabricantes de estos dispositivos, cubran en su totalidad los estándares definidos. Obviamente, hacerlo incrementa el costo de las tarjetas, pero contribuye a facilitar el trabajo de los desarrolladores, promueve la interoperabilidad entre los distintos componentes de un sistema basado en tarjetas inteligentes y permite que una misma tarjeta pueda ser utilizada por diferentes aplicaciones. 5. Referencias [1] Rankl, W. y Effing, W.. Smart card handbook. 3era edición. Inglaterra. John Wiley and Sons Ltd. 2003. [2] Jurgensen, T. M. and Guthery, S. B. Smart Cards, The developer´s Toolkit. Prentice Hall PTR. USA. 2002. [3] International Organization for Standardization. ISO/IEC 7816 1-11. Consultado el 20 de febrero de 2006 de http://www.iso.org. 2006. [4] OpenCard Consortium. General Information Web Document. 2da ediciòn. Consultado el 2 de mayo de 2006 de http://www.opencard.org/docs/gim/ocfgim.html. 1998 [5] Castillo R., Julio C. Diseño de un sistema para el almacenamiento y Recuperación de Expedientes Curriculares Electrónicos utilizando Tarjetas Inteligentes. Tesis de maestría. Universidad Autónoma de Baja California. México. 2007. [6] Advanced Card Systems. ACOS2 Smart Card Reference Manual, versión 2.3. Hong Kong. 2006.