Logo Studenta

Desarrollo_de_una_interfaz_en_Java_para

¡Estudia con miles de materiales!

Vista previa del material en texto

Desarrollo de una interfaz en Java para las Tarjetas Inteligentes ACOS2 
utilizando el OpenCard Framework 
 
 
Jorge Eduardo Ibarra Esquer
1
, Ricardo Cásarez García
2
 y Julia Palencia Soto
3
 
GRupo de INvestigación en TArjetas INteligentes (GRINTAIN) 
Facultad de Ingeniería Mexicali, Universidad Autónoma de Baja California 
1
jorgeeie@uabc.mx, 
2
ricasares@hotmail.com,
 3
julia.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 cardhandbook. 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.

Continuar navegando