Download Desarrollo de una Aplicación para Control de Acceso Usando Smart

Document related concepts
no text concepts found
Transcript
Desarrollo de una Aplicación para Control de
Acceso Usando Smart Cards
Edwin Vargas-García, Jaime Velasco-Medina
Grupo de Bio-nanoelectrónica
Escuela EIEE, Universidad del Valle, A.A. 25360, Cali, Colombia
E-mail: vargare@gmail.com, jvelasco@univalle.edu.co
Resumen—En este trabajo se presenta el desarrollo de una
aplicación para control de acceso usando Smart Cards, la cual es
implementada usando cuatro módulos independientes, es decir,
no considera una base de datos para la integración. En este caso,
las Smart Cards realizan la integración de una manera muy
segura, debido a los algoritmos de encriptación que estas tarjetas
procesan. Los módulos desarrollados tienen en cuenta algunas
características para la implementación de un carné universitario.
Entonces, un carne universitario basado en usar Smart Cards es
una alternativa eficiente para controlar las actividades y
procedimientos al interior de una universidad.
Palabras Claves—Criptografía, Carné universitario, Curvas
elípticas, Smart Cards.
L
I. INTRODUCCIÓN
A identificación de usuarios y el control de acceso se
puede realizar de diversas maneras, que van desde
procedimientos basicos hasta aplicaciones más elaboradas.
Actualmente, en muchos casos, la identificación de usuarios
se realiza con un carné que contienen datos estáticos, es decir,
el carné tiene impreso los datos de la persona con su
respectiva fotografía, y contiene un dato único que lo
identifica ante un sistema central. Los sistemas de
identificación con las características anteriores más usados
son: códigos de barras, tarjetas de banda magnética y tarjetas
de radiofrecuencia; en estos casos, una aplicación software se
encarga de leer los datos que identifican al usuario para
posteriormente enviarlos y verificarlos ante el sistema central,
este tipo de aplicación presenta algunas limitaciones para la
seguridad del sistema, por ejemplo las tarjetas de banda
magnética, usada en entidades financieras, pueden ser leídas y
copiadas muy fácilmente, teniendo como consecuencias
fraudes en el sistema financiero; usando la tecnología Smart
Card una alta seguridad es alcanzada debido al uso de
algoritmos criptográficos, adicionalmente estas pueden
incorporar diversas aplicaciones, lo cual proporciona una
mayor eficiencia y flexibilidad.
Teniendo en cuenta las consideraciones anteriores, este
artículo presenta el diseño de un carné universitario usando
Smart Cards, el cual es la mejor alternativa tecnológica para
implementar las diversas actividades y procedimientos que se
llevan a cabo en un ambiente universitario.
Este trabajo está organizado de la siguiente forma.
Inicialmente la sección 2 describe algunas consideraciones
tecnológicas sobre Smart Cards. Posteriormente, la sección 3
presenta el diseño de un carné universitario usando Smart
Cards, y finalmente, la sección 4 presenta las conclusiones y
el trabajo futuro.
II. CONSIDERACIONES TECNOLÓGICAS DE LAS SMART CARDS
Una Smart Card, conocida como tarjeta inteligente, es una
tarjeta que usa un chip, el cual es capaz de almacenar datos y
ejecutar órdenes. El chip es un microcomputador con un
tamaño de 25 mm2 como máximo [1] [2].
A. Aplicaciones communes
Una Smart Card es un computador portátil, éstas pueden ser
usadas para almacenar toda clase de información confidencial,
como una clave secreta, de una manera muy segura. En el caso
de dinero electrónico, en la tarjeta se puede almacenar el saldo
actual de la cuenta bancaria sin necesidad de estar en línea con
el banco, debido a la capacidad para procesar y almacenar
datos. Una tarjeta de banda magnética puede ser copiada
fácilmente y ser mal usada; esto nunca podría pasar con una
tarjeta de crédito basada en Smart Card, pues una de las
características más importantes de las Smart Cards es que la
información que contienen no puede ser copiada o alterada,
por lo tanto, las Smart Card son reconocidas como la siguiente
generación de tarjetas para transacciones financieras [1], y
tienen los siguientes usos:
1) Sistema de acceso: En este caso la tarjeta puede ser
usada para guardar los datos requeridos para abrir una puerta,
los mismos datos pueden después autenticar el empleado para
el uso de su computador, o pueden ser usados para pagar en la
cafetería de la compañía.
2) Sector bancario: La tarjeta puede ser usada en una red
pública para autenticar el usuario y la entidad bancaria, esto es
más seguro que las contraseñas usadas hoy en día.
3) Sistema de transporte masivo: En este caso la tarjeta
puede reemplazar los tiquetes, la tarifa puede ser calculada de
acuerdo a la distancia; esto puede ser realizado cuando el
usuario abandone el sistema de transporte masivo y la tarifa
puede ser deducida de la tarjeta en ese instante; usando una
tarjeta sin contactos el viajero podría incluso dejar la tarjeta en
su bolsillo.
4) Industria de las telecomunicaciones: En este caso las
tarjetas telefónicas prepago, son de gran importancia, pues
requieren poco mantenimiento y ofrecen un mecanismo
antifraude para acceder a teléfonos públicos sin necesidad de
usar monedas. Hoy, las industrias de telecomunicación
inalámbrica están usando Smart Card para la seguridad. El
más notable ejemplo es Sistema Global para comunicación
Móvil (GSM: Global System for Mobile Communication). Un
teléfono inalámbrico GSM tiene un módulo para la
identificación del subscriptor (SIM: Subscriber Identity
Module), que es una Smart Card que se acopla al teléfono. La
SIM Card identifica el usuario y suministra claves de
encriptación para la transmisión digital de voz, esta clave
generada por la SIM Card es temporal y es cambiada con cada
uso, esto hace que sea más difícil interceptar números
telefónicos en los teléfonos celulares.
5) Sector de la salud: En este caso la Smart Card puede
reducir la complejidad del manejo de la información en la
historia clínica de los pacientes. La tarjeta puede grabar datos
para administrar la asignación de los beneficios y
procedimientos para los pacientes, además la tarjeta puede
guardar información de clínicas, hospitales y farmacias.
6) Internet: Smart Card puede ser usada para la
autenticación de usuarios y firmas digitales para controlar el
acceso a páginas Web y realizar transacciones de forma
segura.
Estas tarjetas pueden ser programadas en su mayoría usando
cualquier lector Smart Card y se pueden clasificar de la
siguiente manera:
a) Sin protección: Estas tarjetas contienen circuitos de
memoria que pueden ser accesibles directamente a través de
los contactos usando un protocolo asíncrono, este tipo de
tarjeta es usada en algunas tarjetas telefónicas, pero hoy en día
no representan mayor seguridad.
b) Protegidas. Las tarjetas protegidas más comunes, tienen
como mínimo, un área protegida, la memoria de este tipo de
tarjeta generalmente es EEPROM, la cual es dividida en dos
áreas, cuyo acceso es restringido.
c) Secure-Logic: Son tarjetas que no sólo controlan el
acceso a la memoria, sino que también pueden restringir la
lectura o escritura por parte de aplicaciones externas; este tipo
de tarjeta es usada en aplicaciones que requieren alto grado de
seguridad. La mayoría de las tarjetas telefónicas modernas, las
tarjetas de transporte público y las tarjetas prepago siguen este
modelo [3].
Microprocessor Cards. Este tipo de tarjetas contienen
procesador, memoria, interfaces y bloques de seguridad. En
una tarjeta con microprocesador, los datos nunca están
disponibles para aplicaciones externas, pues, éstos tienen que
pasar a través del microprocesador. La mayoría de los
fabricantes de Smart Card adoptaron la arquitectura
convencional Von Neumann [1] [3], como se muestra en la
¡Error! No se encuentra el origen de la referencia..
Microprocesador
B. Clasificación de las tarjetas con chip
1) Según su función: La ¡Error! No se encuentra el origen
de la referencia. presenta un diagrama que muestra la
clasificación de las tarjetas con chip de acuerdo a su función.
•
•
RAM
1K
bits
3.7 a 5 MHz,
5V
ROM
24 K
S.O.
Seguridad
(RSA, ECC)
EEPROM
16 K
AREA2
Aplicaciones
AREA1
Claves
SECURE-LOGIC
Coprocesado
r
(Opcional)
Generador
de números
aleatorios
(Opcional)
Puerto serie
de Entrada/
salida
Energía,
reset y señal
de reloj
Figura 2 Componentes de una Smart Card
Figura 1 Clasificación funcional de las Chip Cards.
Memory Cards. En este tipo de tarjeta el chip es un simple
bloque de memoria con interfaces. Son usados principalmente
para sistemas de pago, tal como teléfonos públicos y servicios.
Así como el procesador, la memoria, y la fuente de
alimentación, también son importantes los circuitos para la
seguridad y la comunicación con el hardware externo a la
tarjeta. Dentro de la tarjeta, los datos pasan a través de un bus,
bajo el control del Secure-Logic que controla el acceso a las
memorias. En las áreas más importantes de la memoria se
almacenan las claves secretas propias de la tarjeta.
Un extenso grupo de Smart Cards son usadas para
aplicaciones que requieren realizar funciones criptográficas
especializadas, muchas de estas funciones requieren aritmética
usando operandos muy grandes ocasionando que el
procesador se torne demasiado lento, por esta razón muchas
Smart Cards tienen un coprocesador aritmético, que ayuda con
las funciones criptográficas.
Algunas tarjetas tienen un generador de números aleatorios,
que se usa cuando se requiere autenticación bidireccional.
También, las tarjetas tienen un simple puerto de
Entrada/Salida, o un puerto serie bidireccional, o una interfase
inalámbrica. Todas las Smart Cards tienen alguna forma para
el suministro de energía y señal de reloj. Desde el punto de
vista de seguridad, cualquier Smart Card es considerada
imposible de falsificar.
C. Software de seguridad para smart cards
En adición al papel de transportar datos, la Smart Card
también es usada con módulos de encriptación como medio de
autorización. La criptografía es usada principalmente para
autenticar sistemas de entidades, como usuarios, tarjetas, y
terminales.
Aunque la criptografía por si misma no garantiza seguridad,
los sistemas y programas frecuentemente pueden beneficiarse
del uso de la criptografía, cuando se aplica correctamente
ofrece las siguientes cualidades de seguridad, que son
mutuamente independientes:
• Confidencialidad: asegura privacidad, evita que
personas no autorizadas puedan ver los datos secretos.
• Integridad: asegura exactitud, los datos originales no
pueden ser cambiados o sustituidos sin el previo
conocimiento.
• Autenticación: asegura la verdadera identidad,
determina que la gente con quien se está comunicando
electrónicamente es realmente quien afirma ser.
En la tecnología de encriptación existen tres tipos de datos.
El primero es el texto plano (“plaintext”), el cual es un dato
sin encriptar. El dato encriptado es conocido como texto
cifrado (“ciphertext”). Finalmente está la clave (“Key”), una o
más de las cuales son requeridas para la encriptación y la
desencriptación. Estos tres tipos de datos son procesados por
un algoritmo matemático de encriptación. Generalmente los
algoritmos usados en Smart Card son orientados a bloques,
mediante los cuales el texto plano y el texto cifrado solamente
pueden ser procesados en paquetes con longitud fija. La
desencriptación es el proceso inverso de la encriptación, éste
toma el ciphertext para recuperar el texto original.
Generalmente, se utiliza un algoritmo para encriptar y otro
para desencriptar los datos. Conceptualmente se puede pensar
que una clave es un valor secreto, como una contraseña o un
PIN. Pero, generalmente una clave es una secuencia de
números, y se usa en la fórmula matemática del algoritmo; por
lo tanto, si se encripta el mismo texto plano con diferentes
claves, se obtienen diferentes textos cifrados. Recíprocamente,
el texto plano se puede recuperar partiendo del texto cifrado,
usando la clave apropiada. Usar claves secretas en los
algoritmos de transformación, permite que éstos puedan ser de
dominio público sin perder seguridad.
• El criterio para seleccionar un algoritmo criptográfico y
la longitud de la clave es que el costo y el esfuerzo
requerido para encontrar la clave o romper la seguridad,
debería ser más grande que la máxima recompensa
posible. Este criterio es importante para los sistemas
basados en tarjetas, debido a que éstas tienen un limitado
rango de algoritmos y longitudes de clave disponibles.
Existen dos importantes clases de algoritmos criptográficos
en el entorno Smart Card:
1) Algoritmos Criptográficos Simétrico: Usan la misma
clave tanto para la encriptación como para la desencriptación
de los datos, entre los más comunes se encuentra el algoritmo
DES (Data Encryption Standard) es un algoritmo que
funciona en bloques, es decir, un algoritmo que divide los
datos que va a encriptar en bloques. La clave de 56 bits usada
en el algoritmo DES es muy pequeña, teniendo en cuenta la
potencia de los computadores hoy en día, el algoritmo DES
ofrece sólo una seguridad media, la clave de 56 bits puede ser
quebrada en menos de 24 horas [1].
Para superar las limitaciones del algoritmo DES se creó el
algoritmo Triple DES que está basado en el algoritmo DES,
pero usa una clave de 112 bits. La clave es divida en dos
claves de 56 bits, K1 y K2. Los datos son encriptados con la
clave K1, luego desencriptados con K2 y nuevamente
encriptados con K1. Este proceso es conocido como el modo
EDE (Encrypt-Decrypt-Encrypt). El algoritmo Triple DES
ofrece un alto nivel de seguridad. No es viable un ataque de
fuerza bruta como contra el algoritmo Triple DES, porque la
búsqueda de la clave incrementa exponencialmente con el
tamaño de ésta, es decir, encontrar una clave de 112 bits toma
256 veces más que encontrar una de clave de 56 bits.
El algoritmo AES (Advanced Encryption Standard) es el
sucesor del algoritmo DES y está basado en el algoritmo
Rijndael, el cual es un cifrador de bloque con longitudes de
bloque y de clave variables, esto permite usar claves de 128,
192 o 256 bits para encriptar bloques con una longitud de 128,
192 o 256 bits. En el algoritmo Rijndael son posibles nueve
combinaciones de longitud de clave y longitud de bloque y es
posible extender ambas longitudes de bloque y de clave a
múltiplos de 32 bits.
2) Algoritmos Criptográficos Asimétricos: Estos algoritmos
usan dos claves matemáticamente relacionadas, una clave
pública para encriptar los datos y una clave privada para
desencriptar tales datos. La clave privada sólo puede ser
conocida por una sola entidad (tarjeta ó terminal) y debe ser
guardada en secreto. Esto elimina los problemas asociados con
el intercambio y distribución de claves secretas simétricas a
través de canales inseguros. La clave pública puede ser usada
para verificación de firmas digitales o para encriptar la
información, y no necesita ser guardada en secreto, porque
con dicha clave es imposible calcular la clave privada. Las
claves privadas pueden ser usadas para la generación de
firmas digitales, que pueden ser verificadas por cualquier
persona, o para desencriptar información privada encriptada
con una clave pública. En el entorno Smart Card es muy
común el algoritmo RSA, el cual está basado en la dificultad
para factorizar números primos grandes. RSA usa pares de
claves generadas a partir de dos números primos grandes
seleccionados aleatoriamente, para alcanzar máxima
seguridad, la longitud de estos debería ser igual. Hoy en día
las Smart Cards usualmente presentan tamaño para las claves,
entre 512 y 1024 bits. Un módulo de 1024 bits es considerado
con un nivel de seguridad razonable para aplicaciones como
firmas digitales y encriptación de documentos. Una Smart
Card, con CPU de 8-bits, normalmente no es capaz de
desempeñar una computación RSA en poco tiempo, es
necesario un microprocesador con un procesador aritmético
suplementario que haya sido desarrollado especialmente para
cálculos exponenciales rápidos.
Las Curvas Elípticas fueron primero propuestas para uso
en cripto-sistemas de clave pública en 1985. Los algoritmos
que usan curvas elípticas son más rápidos que RSA y
requieren claves de tamaño más pequeña para el mismo nivel
de seguridad; por ejemplo, se requiere la misma complejidad
computacional para romper un ECC (“Elliptic Curve
Cryptosystem”) con una clave de 160-bits que para un
algoritmo RSA con una clave de 1024-bits. Un ECC con una
clave de 320-bits, con referencia a su criterio computacional,
corresponde a un sistema RSA con una clave de 5120-bits
[17].
Las ventajas de las Curvas Elípticas, las convierten en
excelentes candidatas para ser usadas en Smart Cards, la
computación puede ser realizada incluso en Smart Cards sin
coprocesador criptográfico y la clave puede ser almacenada en
la memoria de la Smart Card, debido a su pequeño tamaño.
3) Algoritmos Híbridos: Este tipo de algoritmo usa claves
de sesión, que limitan el tiempo para el cual la clave es válida,
una nueva clave es generada para cada sesión o cada
transacción. Los algoritmos simétricos son más rápidos, pero
tienen la desventaja de ser imprácticos en redes conectando
muchas entidades. Por otra parte, los algoritmos asimétricos
de clave pública tienen ventaja en redes pero son lentos. Sin
embargo, las ventajas de ambos pueden ser combinadas
evitando sus desventajas. Los algoritmos híbridos usan claves
de sesión generadas aleatoriamente para algoritmos simétricos
usados para las encriptaciones simétricas de gran tamaño.
Entonces, las claves de sesión están encriptadas usando un
algoritmo asimétrico. El hecho que los algoritmos asimétricos
son lentos no importa en este caso, porque solamente es
encriptada la clave de sesión usando ese algoritmo.
dinámicos (“dynamic”). En un procedimiento estático, los
mismos datos son usados siempre para la autenticación.
Mientras que en un procedimiento dinámico, cada
autenticación está basada en datos diferentes. También existe
una diferencia fundamental entre procedimientos de
autenticación unilateral y mutua. Una autenticación unilateral,
establece la autenticidad de una de las dos partes de la
comunicación, mientras que la autenticación mutua establece
la autenticidad de ambas partes de la comunicación. Los
procedimientos de autenticación están basados en algoritmos
criptográficos y se pueden dividir en procedimientos
simétricos y procedimientos asimétricos, dependiendo del tipo
de algoritmo usado.
Para establecer la autenticidad de mensajes o documentos
transmitidos electrónicamente se realizan firmas digitales. Es
posible determinar si el mensaje o documento ha sido alterado
mediante la verificación de la firma digital, como se muestra
en la Figura 3.
Una firma digital tiene la característica de ser generada por
un individuo, pero puede ser verificada por cualquiera que
reciba el mensaje, o quien tenga disponible una copia para la
comparación. Una de las características especiales de las
firmas digitales es que sólo una persona o una Smart Card
puede “firmar” un documento.
Generalmente el mensaje o documento para ser firmado es
por lo menos de unos miles de bytes de longitud. Es necesario
hacer una compresión de los datos por medio de una función
“Hash”. Esta compresión no es reversible, es decir, los datos
originales no pueden ser reconstruidos a partir del valor
“Hash” (datos comprimidos).
Además de los procedimientos de encriptación, los
algoritmos criptográficos asimétricos ofrecen técnicas de
autenticación para verificar la identidad y autenticidad en la
comunicación entre entidades. Para que la autenticación sea
posible, ambas partes de la comunicación deben tener un
secreto común.
Con un procedimiento de autenticación, no es posible
descubrir el secreto común fácilmente en el canal de
comunicación, ya que éste no es enviado abiertamente. Los
procesos de autenticación pueden ser estáticos (“static”) o
A. Introducción
En el diseño de sistemas que usan Smart Cards, se deben
tener en cuenta varios aspectos, que dependerán en gran parte
del tipo de aplicación que se quiera desarrollar, desde el punto
de vista técnico, estos aspectos se encuentran muy
relacionados con el nivel de seguridad, la funcionalidad y los
recursos disponibles. Teniendo en cuenta estás características,
se diseñó y desarrolló un sistema para control de acceso
usando Smart Cards. Dicho control de acceso consiste, en
identificación de usuarios con alto nivel de seguridad (casi
Figura 3 Procedimiento para verificar una firma digital
III. DISEÑO DE UNA APLICACIÓN PARA CONTROL
DE ACCESO USANDO SMART CARDS
imposible de falsificar), registro de actividades y
almacenamiento de datos con autorizaciones.
Este sistema presenta las características de un carné
universitario inteligente, con aplicaciones propias de la
Universidad del Valle. Un carné primero debe ser programado
y luego debe pasar por la aplicación “Administrador” que
corresponde a la etapa de personalización, cuando el carné ha
sido personalizado debe pasar a la aplicación “Usuario” en la
que cada persona coloca su PIN secreto, cuando se ha
realizado este proceso la tarjeta puede pasar a una aplicación
en particular, es decir, “CDU” o “ServicioMedico” según sea
el caso, si el usuario bloquea la tarjeta en cualquiera de las
aplicaciones que requieren PIN, tendría que regresar al
“Administrador” para que le asigne uno nuevo, pero esto sería
un caso especial, lo característico es que el carné se encuentre
interactuando en las aplicaciones “CDU”, “ServicioMedico” o
“Usuario”.
B. Módulo Administrador
Cuando se ejecuta la aplicación “Administrador” se
despliega la ventana que se muestra en la Figura 4. La
aplicación “Administrador”, permite llevar a cabo la
personalización de las tarjetas, es decir, esta es la primera
aplicación por la que debe pasar cada tarjeta.
Figura 4 Interfaz de la aplicación Administrador
Cuando se inserta una tarjeta, se realiza la conexión del
programa con la tarjeta por medio del lector y se verifica la
validez de la tarjeta, esto significa que el programa Terminal,
busca en la tarjeta el programa con el cual tiene que
interactuar, este procedimiento se hace por medio del ID de la
tarjeta, que es la identificación del programa onCard, con esto
aseguramos que esta aplicación solamente leerá las tarjetas
que tienen el programa adecuado. El paso siguiente es
completar correctamente el formulario de la aplicación y
presionar el botón “Personalizar” para enviar la información a
la tarjeta e individualizarla, en este procedimiento primero se
verifica que los datos estén completos, luego se busca en la
tarjeta los parámetros de dominio EC de la curva elíptica, que
se han determinado para realizar los procedimientos
criptográficos. Una vez ambos programas (Terminal y tarjeta)
tiene la misma curva elíptica, se genera una clave privada para
el Terminal y luego se generan las claves pública y privada
para la tarjeta, las cuales son generadas por la misma tarjeta.
Primero se genera la clave privada de forma aleatoria, para
mayor seguridad la generación aleatoria se hace a partir de un
banco de datos, que cambia para cada tarjeta, el banco de
datos se compone de algunos valores aleatorios y algunos
datos del usuario, por ejemplo los nombres, la cédula, etc.
Generar la clave privada de esta manera asegura que las
claves que se generen para otras tarjetas van a ser
completamente distintas. Es importante destacar que para la
generación de claves, el programa Terminal solamente envía
el banco de datos a la tarjeta, no la clave privada, es decir, la
tarjeta produce sus propias claves de encriptación y la clave
privada nunca sale de la tarjeta, esto asegura que tal clave no
es enviada a ningún programa, por lo tanto no existe la
posibilidad de ser interceptada en la comunicación con un
programa Terminal. Posteriormente la tarjeta calcula la clave
pública asociada y la envía al Terminal. Una vez la tarjeta
tiene sus claves de encriptación se pueden realizar todos los
procedimientos referentes a la seguridad. Antes de enviar los
datos a la tarjeta se le solicita a ésta que realice una firma
digital, entonces el Terminal produce un número aleatorio y
envía a la tarjeta, con este número la tarjeta realiza la firma y
la entrega al Terminal, la aplicación “Administrador” usa el
número aleatorio generado, la firma y la clave pública de la
tarjeta para verificar la autenticidad de la firma digital, para
llevar a cabo esta comprobación, el programa Terminal genera
un valor hash a partir del número aleatorio que generó
previamente, con este valor y la clave pública de la tarjeta
verifica la autenticidad de la firma digital. El procedimiento
descrito anteriormente tiene como objetivo verificar la
integridad de los datos en el canal de comunicación, en este
caso el lector.
Cuando el Terminal ha comprobado la firma digital envía
su clave pública a la tarjeta para que ésta genere y almacene
en la memoria EEPROM un dato que se conoce como secreto
compartido (“Shared Secret”). Para generar el secreto
compartido se requiere un algoritmo asimétrico, en este caso
EC-161, que nos proporciona un alto nivel de seguridad, pero
es un procedimiento relativamente lento (toma cerca de siete
segundos en generar este dato), lo importante es que este
procedimiento se realiza una sola vez en el ciclo de vida de la
tarjeta, el secreto compartido es muy importante en la
seguridad del sistema, es por esta razón que primero se realizó
una comprobación de integridad por medio de la firma digital.
Con el secreto compartido y otros valores conocidos como
parámetros de derivación de claves (“KPD”) se generan las
claves de sesión, que son claves criptográficas simétricas, es
decir, estás claves sirven para encriptar y desencriptar datos
con algoritmos simétricos, los cuales son más rápidos que los
algoritmos asimétricos, pero ambas partes de la comunicación
deben tener la misma clave. Los valores “KPD” se generan en
el programa Terminal para generar la clave de sesión,
simultáneamente el Terminal envía a la tarjeta estos datos para
que ésta genere su propia clave de sesión, no importa que el
canal de comunicación sea inseguro, porque la clave que se
utilizará es generada en ambas partes y borrada con cada
transferencia.
Una vez se ha generado la clave de sesión en el Terminal y
la tarjeta, se utiliza esta clave para encriptar con el algoritmo
Triple-DES los datos personales del usuario (nombres,
apellidos, cedula, etc.) y enviarlos a la tarjeta, para que ésta
los almacene en la memoria EEPROM y puedan ser usados en
otras
aplicaciones,
adicionalmente
la
aplicación
“Administrador” crea un PIN para la tarjeta, que en este caso
consta de los últimos cuatro números de la cédula, pero debe
ser cambiado por el usuario cuando reciba la tarjeta. Además
en la tarjeta se almacenan, la fecha de personalización y se
calcula una fecha de expiración, que para esta aplicación
dependerá del semestre en que se personalizó la tarjeta. Para
tener un control más riguroso, cada vez que se personaliza una
tarjeta se registra la fecha, la hora y los datos principales del
usuario en archivos clasificados por la categoría del usuario
(estudiantes, profesores, empleados y médicos).
Adicionalmente el módulo Administrador permite
almacenar algunos datos necesarios para el módulo
ServicioMedico, también permite asignar un nuevo PIN
cuando ha sido bloqueado por el usuario.
C. Módulo Usuario
En la Figura 5 se muestra la interfaz de esta aplicación, que
tiene como principal objetivo brindar a los usuarios un
módulo para que puedan cambiar su PIN y/o consultar
algunos eventos registrados en la tarjeta, como prestamos,
medicamentos, multas, etc.
Figura 5 Interfaz de la Aplicación Usuario
Lo primero que se verifica al insertar una tarjeta es el ID de
la aplicación “onCard” (de igual manera que en la aplicación
“Administrador” y las otras aplicaciones), esta verificación
tiene como objetivo comunicar el programa Terminal con su
correspondiente programa en la tarjeta, con este primer nivel
de seguridad se evita que tarjetas cargadas con otros
programas puedan ejecutar ordenes que podrían coincidir con
las instrucciones del programa diseñado para funcionar con la
aplicación “Usuario”, causando errores en la ejecución del
programa, las tarjetas que no coincidan con el ID que espera el
programa Terminal son reconocidas como tarjetas falsas. El
segundo paso es verificar la vigencia del carné que consiste en
enviar a la tarjeta la fecha actual, para que ésta la compare
internamente con su fecha de vencimiento y determine si la
tarjeta puede ser usada por la aplicación. Adicionalmente, en
este procedimiento se verifica que el carné esté personalizado
y no tenga el PIN bloqueado o vencido, el PIN será bloqueado
cuando el usuario ingresa más de tres veces un PIN incorrecto,
en este caso el usuario debería llevar su carné a la aplicación
“Administrador”, para que le sea asignado un nuevo PIN a su
tarjeta. Cuando se presiona el botón “CambiarPIN” se debe
digitar el PIN actual, el nuevo PIN y la confirmación de este
último. Una vez se presiona el botón “OK”, se verifica que los
datos ingresados sean cuatros números, luego se verifica que
el nuevo PIN sea igual en los campos que lo solicitaron, si
estas verificaciones son correctas, se envía el PIN viejo a la
tarjeta, para que ésta lo compare con el PIN que tiene en su
memoria, si el PIN que se envió es correcto, se envía el nuevo
PIN para reemplazar el existente, pero, si el PIN no es
correcto, el programa de la tarjeta registra internamente este
evento iniciando un conteo de errores, el cual le permitirá
máximo tres errores antes de que sea bloqueada la tarjeta. Para
realizar la actividad de consulta se utiliza el botón
“VerPrestamos”, que al presionarlo, busca en la tarjeta los
elementos que el usuario tiene prestados y muestra un mensaje
con el nombre del elemento, la cantidad y la fecha en la que se
realizó tal préstamo.
D. Módulo CDU
La aplicación “CDU” es para acceder al Centro Deportivo
Universitario. La cual tiene las características típicas de un
sistema que controla tanto acceso a servicios, como al
préstamo de elementos deportivos. Para hacer uso de esta
aplicación, es necesario que la tarjeta tenga almacenadas sus
claves de encriptación, también debe tener los datos del
usuario y el PIN que el usuario ha elegido. Para confirmar
estos requisitos la aplicación “CDU” utiliza los mismos
procedimientos que las otras aplicaciones, como la
confirmación del ID del programa on-card y la verificación de
vigencia de la tarjeta. Como parte de la verificación de
vigencia de la tarjeta, el programa Terminal examina si la
tarjeta está personalizada, si el PIN asignado por el
administrador se cambió o si está bloqueado por mala
utilización. Una vez cumplido este procedimiento, se realiza
una autenticación dinámica y asimétrica, por medio de una
firma digital, si la autenticación es exitosa se leen los datos
desde la tarjeta y se cargan en la ventana, como se muestra en
la Figura 6. Adicionalmente, se habilitan todos los botones de la
ventana, que están divididos en dos grupos, el primer grupo
corresponde al préstamo y entrega de artículos, y el segundo
grupo corresponde a los servicios que presta el CDU.
hacer uso de estos servicios en una nueva oportunidad. Si el
botón “Salida” se presiona, la tarjeta solicitará el PIN para
confirmar que la tarjeta este siendo usada por la persona
correcta, cumplido este procedimiento, la aplicación “CDU”
comprueba si en la tarjeta el usuario tiene registrado algún
servicio, si el usuario no tiene registro de servicios, esta
aplicación muestra un mensaje anunciando esta situación, con
la particularidad de informar la fecha y la hora del último
ingreso.
Figura 6 Interfaz de la aplicación CDU
Cuando se presiona el botón “Prestamo” se debe
seleccionar solamente uno de los artículos disponibles y la
cantidad, luego la aplicación solicita una autorización para
este préstamo, que se hace por medio del PIN del usuario, con
este procedimiento se asegura que solamente el usuario puede
realizar el préstamo. Teniendo en cuenta que la prioridad es la
seguridad, los datos como el PIN o la clave privada, nunca
salen de la tarjeta, solamente se utilizan en procedimientos
internos, esta es una de las grandes ventajas que tienen los
sistemas que utilizan la tecnología Smart Card. Después de
verificar el PIN, se registra en la tarjeta el préstamo con la
respectiva fecha y hora. Si el usuario ya tiene prestado un
articulo, por ejemplo un balón de fútbol, y solicita otro, por
ejemplo una balón de baloncesto, la tarjeta primero verificará
la autenticidad del PIN y luego examina si existe registrado
algún préstamo, si esto ocurre, la tarjeta envía al Terminal el
nombre del artículo, la cantidad y la fecha en la que se realizó
el préstamo, en este caso no se autoriza el procedimiento.
En el caso de devolución de un artículo, se tiene que hacer
clic en el botón “Entrega”, para que el programa busque
inmediatamente los préstamos registrados; para poder efectuar
la entrega de dicho implemento es imprescindible que el
usuario ingrese su PIN, cumplido este procedimiento,
automáticamente el programa de la tarjeta concluye el
préstamo y deja a paz y salvo al usuario con el centro
deportivo universitario, lo que permite que el usuario pueda
hacer uso de este servicio en otra ocasión.
Cuando el usuario quiere acceder a los servicios del CDU,
se le solicita el ingreso del PIN, esto con el fin de confirmar
que la tarjeta corresponde a la persona que está solicitando el
servicio. Una vez confirmado el PIN, la tarjeta hace una
verificación adicional, que consiste en constatar que el usuario
no está haciendo uso de alguno de los servicios del CDU, es
decir, la tarjeta controla el acceso a una zona determinada, en
este caso, la persona solamente puede estar en el gimnasio o la
piscina, pero no en ambos sitios simultáneamente. Puede
ocurrir que un usuario quiera ingresar a la piscina o al
gimnasio, cuando ya se ha registrado en uno de estos
servicios, en tal caso, se mostrará un mensaje indicando esta
situación.
Para el caso en que el usuario termina su actividad
deportiva en el gimnasio o la piscina, el usuario debe registrar
este evento en la tarjeta, con el fin de dejar a paz y salvo al
usuario con el centro deportivo, permitiendo de esta manera
E. Módulo ServicioMedico
Las aplicaciones “CDU” y “ServicioMedico” tienen un
funcionamiento específico, en el caso de la aplicación “CDU”,
se representa un sistema típico para controlar acceso, mientras
que la aplicación “ServicioMedico” incorpora de una manera
básica una “HealthCard”, que es una Smart Card que contiene
información personal, médica y de seguridad utilizada por los
sistemas de servicios médicos. La tarjeta puede ser leída por
lectores de tarjetas o Terminales ubicados en diferentes sitios,
por ejemplo: hospitales, sistemas de emergencia médica
móvil, farmacias, clínicas, consultorios particulares, etc.
Las principales ventajas que ofrece el uso de
la
“HealthCard” es reducción de gastos asociados a papelería,
trámites y fraudes, además la SmartCard brinda un valor
agregado cuando no es posible tener la información
centralizada; por ejemplo en sistemas de emergencia móvil y
sistemas de salud sin conexión a un sistema central.
Al ejecutar la aplicación “ServicioMedico” y después
insertar la tarjeta en el lector, se realizan los mismos
procedimientos de seguridad que en las otras aplicaciones
antes de efectuar cualquier acción. Las tarjetas que interactúan
con esta aplicación deben estar completamente personalizadas,
es decir, es necesario que hayan pasado por las aplicaciones
“Administrador” y “Usuario” previamente, pero es indiferente
el uso de la aplicación “CDU” debido a que es completamente
independiente de esta aplicación. Después de hacer las
comprobaciones de seguridad en la tarjeta del usuario, el paso
siguiente es insertar la tarjeta del médico para que autorice el
procedimiento de servicio médico, en este caso, la aplicación
revisa si la tarjeta corresponde con a un médico, en caso
contrario la aplicación no permite operaciones en la tarjeta. En
la ¡Error! No se encuentra el origen de la referencia. se
puede observar (en la parte superior de la fotografía) que la
categoría del usuario es estudiante, por lo tanto los botones no
están habilitados.
origen de la referencia.. Adicionalmente, se despliega una
nueva ventana en la que se muestra información adicional del
paciente, como tipo de sangre, sexo, etc.
Figura 7 Interfaz de la aplicación ServicioMedico
Para la correcta ejecución de esta aplicación se ha
determinado que la primera tarjeta deba ser de un medico por
razones de seguridad, esta condición es necesaria debido a la
delicadeza y confidencialidad de la información que se está
manipulando. La idea principal es que en la tarjeta se guardan
algunos datos de la historia clínica, pero estos datos no pueden
ser modificados por cualquier persona, es necesario que un
médico autorice cualquier cambio. Cuando la tarjeta del
médico se inserta, la aplicación solicita el PIN del médico,
este procedimiento tiene como propósito confirmar que el
médico asume la responsabilidad de la información que se
registre en las tarjetas de los pacientes. Con este sistema se
reducen los trámites e irregularidades, debido a que se puede
confiar en la información que se ha suministrado en la tarjeta
y la autorización que ha proporcionado el médico, el paciente
no necesitará de autorizaciones adicionales, que obstaculizan
los procedimientos, y por el contrario podría ir directamente a
la farmacia en el caso de medicamentos o a la clínica
correspondiente en el caso de intervenciones quirúrgicas o
tratamientos especializados. Cuando la tarjeta autentica el PIN
del medico permite que la aplicación cargue los datos de esta
persona, como se muestra en la Figura 8, se puede observar en
esta figura que los botones están habilitados, esto se debe a
que la aplicación ha capturado el código del médico y lo
utilizará para autorizar las acciones que se desarrollen en las
tarjetas de los pacientes.
Figura 8 Interfaz de la aplicación ServicioMedico cuando se inseta la
tarjeta del medico
Una vez la aplicación captura el código del médico, esta
persona podrá retirar su tarjeta e insertar las tarjetas de los
pacientes, caso en el cual los botones seguirán habilitados,
como se puede observar en la ¡Error! No se encuentra el
Figura 9 Interfaz de la aplicación “ServicioMedico” cuando se inserta la
tarjeta de un paciente
Esta aplicación permite almacenar información médica en
la tarjeta de los pacientes, sin embargo, el objetivo de esta
aplicación no es almacenar toda la información de una historia
clínica de un paciente, sino almacenar la información que
puede ser determinante en una emergencia médica o en una
situación en la que no se pueda acceder fácilmente a la historia
clínica del paciente (alergias, fármacos, enfermedades
crónicas, diagnósticos y procedimientos).
La dificultad que se presenta en este tipo de aplicación, es
la administración de la memoria disponible en la tarjeta,
debido a que se deben almacenar datos de tipo estático, por
ejemplo nombres, apellidos, documento de identidad, etc. y
datos de tipo dinámico, como medicamentos, procedimientos,
etc. En los datos de tipo estático, el problema consiste en el
tamaño de las variables para los datos del usuario, que varían
dependiendo de dicho usuario, por ejemplo los nombres tienen
diferentes tamaños, pero se debe definir un tamaño que los
incorpore a todos, en la mayoría de los casos los nombres son
relativamente cortos, desaprovechando el espacio asignado.
En los datos de tipo dinámico, además de los problemas
asociados a los nombres, existe otra dificultad que se relaciona
con la diversidad de los pacientes, es decir, la cantidad de
elementos en los diferentes ítems de información depende
mucho de cada paciente. Por ejemplo, puede haber un
paciente sin enfermedades crónicas, pero al que se le han
realizado varios procedimientos, o necesita muchos
medicamentos. Por consiguiente, poner un tope arbitrario
puede traer otros problemas, además, los límites no pueden ser
muy amplios como para obviar el problema, debido a las
restricciones de espacio. En la aplicación “ServicioMedico” se
utilizan diez registros para almacenar la información clínica
del paciente, no importa su tipo, por ejemplo, el paciente
puede tener los diez registros solamente en medicamentos, o
cualquier otra combinación, este procedimiento se realiza por
medio del botón “AddDatos”. Una vez el medico se ha
identificado con la aplicación puede ver la información clínica
que se almacenó anteriormente, con su autorización o la de
otro médico, por medio del botón “VerDatos” se puede
obtener esta información. Al hacer clic sobre este botón, la
aplicación busca en la tarjeta la información que tiene
almacenada, si no existen datos, se muestra un mensaje
indicando esta condición, pero si existen datos, la aplicación
los recibe y busca en los archivos el nombre del medico, la
clínica (para los procedimientos) y las dosis (para los
medicamentos). Luego la aplicación “ServicioMedico”
organiza y clasifica por categorías esta información, para
después mostrarla al médico que la solicitó.
IV. CONCLUSIONES
En el diseño de cualquier sistema en el que se incluyan
personas, siempre existirán variables de diseño diferentes de
los aspectos técnicos, como son aspectos culturales, sociales,
políticos, económicos y demás, que varían de acuerdo al
contexto en el que se encuentra cada sistema.
Las Smart Cards son, para muchas aplicaciones, el más
económico y conveniente medio para almacenar datos y claves
con un adecuado nivel de seguridad.
Debido a la limitación de recursos que se tienen en una
Smart Card (memoria principalmente) el diseño de los
sistemas que incluyen el uso de esta tecnología se debe
realizar de manera diferente que las aplicaciones desarrolladas
para los computadores personales, con esta tecnología
siempre se debe tener en cuenta la memoria disponible en la
tarjeta y encontrar la manera de optimizar su uso.
Existen muchos fabricantes de Smart Cards, algunos de
ellos limitan los usos de esta tecnología usando “cajas negras”
para la seguridad, es decir, la seguridad ya está programada y
no se tiene acceso a ésta, mientras que en este proyecto
determinamos todos los parámetros para la generación de
claves de manera autónoma.
Aunque la tarjeta puede realizar muchas comprobaciones,
no es necesario sobrecargarla con funciones que se pueden
realizar en el programa Terminal, por ejemplo, verificación de
datos y funciones sobre cadenas de texto. Sin embargo, las
funciones ligadas a la seguridad, como la verificación del PIN
y la vigencia de la tarjeta, las debe hacer la tarjeta de manera
independiente.
Debido a las técnicas de seguridad basadas en los
criptosistemas de curvas elípticas que se han implementado en
la programación de las tarjetas, resulta prácticamente
inviolable la información almacenada en la tarjeta, tanto por
parte del usuario como por parte del funcionario, por ejemplo,
préstamo y devolución de elementos deportivos en la
aplicación “CDU” y registro de medicamentos en la aplicación
“ServicioMedico”.
Uno de los criterios más importantes que se deben
establecer al diseñar aplicaciones usando la tecnología Smart
Card es el nivel de seguridad a implementar, es decir, el tipo
de algoritmo y el tamaño de las claves de encriptación, porque
los procedimientos de seguridad pueden utilizar gran parte de
la memoria en una tarjeta.
REFERENCIAS
[1]
HANSMANN Uwe; NICKLOUS Martin S.; SCHÄCK Thomas;
SCHNEIDER Achim and SELIGER Frank. Smart Card Application
Development Using Java. Springer, 2002.
[2]
CHEN Zhiqun. Java Card™ Technology for Smart Card: Architecture
and Programmer’s Guide. Addison Wesley, 2000.
[3]
HENDRY Mike. Smart Card Security and Applications. Artech House,
2001.
[4]
JURGENSEN Timothy M. and GUTHERY Scout B. SMART CARDS
the Developer’s Toolkit. Prentice Hall, 2002.
[5]
http://java.sun.com/products/javacard
[6]
http://www.opencard.org
[7]
http://www.kriptopolis.com/more.php?id=172_0_1_3_M2
[8]
http://www.divulcat.com/enciclopedia/Curvas_el%EDpticas
[9]
HALVORSON Michael.
McGraw-Hill, 1999.
Aprenda Microsoft Visual Basic® 6.0 ya.
[10] GUILFOYLE Tony. BasicCard Manual [online]. Document version
5.07. Minden, Germany. 20 de Julio, 2004. Disponible desde Internet:
<http://www.BasicCard.com>.
[11] http://www.ZeitControl.de
[12] JÁCOME CALDERÓN, Germán Eduardo.
Implementación En
Hardware Del Algoritmo Rijndael. Santiago de Cali, 2003. Trabajo de
grado (Ingeniero Electrónico). Universidad del Valle. Facultad de
Ingeniería. Escuela de Ingeniería Eléctrica y Electrónica.
[13] TRUJILLO OLAYA Vladimir. Diseño de un Procesador Criptográfico
para Curvas Elípticas. Santiago de Cali, 2003. Trabajo de grado
(Ingeniero Electrónico). Universidad del Valle. Facultad de Ingeniería.
Escuela de Ingeniería Eléctrica y Electrónica.
[14] APONTE VARGAS Alberto. Implementación en Software de Curvas
Elípticas. Santiago de Cali, 2003. Trabajo de grado (Ingeniero de
Sistemas). Universidad del Valle. Facultad de Ingeniería. Escuela de
Ciencias de la Computación.
[15] CORNELL Gary. Manual de Visual Basic 4 para Windows 95.
McGraw-Hill, 1996.
[16] MIPS TECHNOLOGIES. Smart Card: The Computer In Your Wallet.
Inc 2002.
[17] RANKL Wolfgang and EFFING Wolfgang. Smart Card Handbook. 2
ed. Wiley, 2001.
[18] FERGUSON Niels and SCHNEIER Bruce.
Wiley 2003.
Practical Cryptography.
[19] STANLLINGS William. Cryptography and Network Security Principles
and Practice. Prentice Hall, 2003.
[20] RODRÍGUEZ Leonardo; PEROVICH Daniel y VARELA Martín.
Historias Clínicas en Tarjetas Inteligentes [online].
Montevideo
Uruguay.
Disponible
desde
Internet:
http://www.sis.org.ar/tlibres/A/a_31.PDF.
[21] http://www.criptored.upm.es/guiateoria/gt_m117a.htm