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
[email protected], [email protected], [email protected]
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.