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