TRABAJO PRACTICO FINAL DE CRIPTOGRAFIA Y SEGURIDAD INFORMATICA (66.69) SMART CARDS PROFESOR: Ing. Dams Alberto INTEGRANTES: Bluvstein Alejandro Lehmann Marcelo Nardini Sergio Sanin Dario CURSO: 1er. Cuatrimestre 1998 71322 71367 71774 71354 SMART CARDS La gran ventaja de las SMART CARDS respecto de las tarjetas magneticas es que permite ejecutar algoritmos criptográficos en su circuitería interna. Estas brindan máxima seguridad en todos los sistemas en las que participan. Que es una SMART CARD? La idea de insertar un chip en una tarjeta plastica es tan antigua como la criptografia de clave pública. Recien unos pocos años atrás aparecieron las aplicaciones prácticas de clave pública debido a las limitaciones que existía anteriormente respecto a la capacidad de almacenamiento y procesamiento en la tecnología de los circuitos. Hoy en día existe una nueva generación de tarjetas y aplicaciones mas ambiciosas como por ejemplo RSA. La mayor demanda en las SMARTS CARDS de clave pública se da en las compañias operadoras de teléfono, bancos y corporaciones de seguro. El soporte fisico de una SMART CARD convencional es un rectangulo de plastico impreso con información concerniente a la aplicación. De acuerdo con la International Organization for Standardization (ISO) Standard 7816, el micromódulo contiene una cadena de 8 contactos pero actualmente sólo 6 son conectados al chip, distribuidos de la siguiente manera: 2 son para tensión, 1 para tierra, 1 para RESET, 1 para CLOCK y el restante I/O (vínculo de comunicación de datos serie). Las CPUs de las tarjetas son microcontroladores de 8 bits, los mas comunes son Motorola 68HC05, Intel 80C51. El microprocesador de la tarjeta ejecuta un programa escrito en una memoria ROM el cual no puede ser modificado de ninguna manera. Esto garantiza que el fabricante controla el código en forma estricta. Para almacenar datos individuales de cada usuario específico, la primera generación de smart cards de memorias no volatiles usaban EPROM (memorias programables electricamente). Estas requerían una fuente extra de “alto voltaje” tipicamente de 15 a 20V. En cambio las mas actuales contienen EEPROM (electrically erasable programmable memory), las cuales pueden ser escritas y borradas ciento de veces. Tambien es posible a veces importar programas dentro de la EEPROM de la tarjeta de acuerdo a las necesidades. El tamaño de la EEPROM es un punto crítico a la hora del diseño de aplicaciones de clave pública, donde las claves son relativamente largas. Consecuentemente los programadores de smart cards frecuentemente adoptan típicas técnicas de optimización como por ejemplo regenerar la clave pública a partir de una secreta, regenerar una clave secreta a partir de una semilla mas corta (números secretos mas cortos), evitando esquemas de claves largas, implementando algoritmos de compresión para los datos redundantes. Diversos fabricantes han desarrollado sistemas operativos completos para este propósito. Finalmente la tarjeta contiene un port serial de comunicación (trabajando en forma asincrónica) para intercambiar datos e información de control entre la tarjeta y el mundo externo. Una tasa de bits común es de 9600 bits por segundo, pero hay interfaces mucho SMART CARD 2 mas veloces que son comunmente usadas ( desde 19200 hasta 115200 bits por segundo) estando totalmente de acuerdo con la norma ISO 7816. La primera regla de seguridad es juntar todos los elementos en un solo chip como se muestra en la siguiente figura: Chip En la figura anterior se observa el procedimiento de fabricación de las SMART CARDS. Los pasos son: 1) Armado del chip + micromodulo, 2) chip + micromódulo + tarjeta de plastico. Si esto no es hecho ( juntar todo en un solo chip) podría existir una posible ruta de penetración para un acceso ilegal a la tarjeta. El standard ISO especifica las características de la tarjeta para resistir una serie de fatigas mecánicas. El tamaño del chip está consecuentemente limitado, y presenta restricciones, especialmente en la memoria y en la capacidad criptográfica. Los chips de las smarts cards son muy confiables y la mayoría de los fabricantes garantizan las propiedades electricas de sus chips por 10 años o mas. Los standards ISO especifican como debe ser protejida una tarjeta contra las agresiones mecánicas, eléctricas o químicas. SMART CARD 3 Los sensores de seguridad permiten al microcontrolador prevenir intentos de monitoreo por reseteo de la RAM/EEPROM. Detectores de clock reaccionan ante una muy elevada, o una muy baja frecuencia de clock. Por obvias razones de seguridad, la información acerca de los detectores de seguridad, habitualmente es bastante dificil de obtener de los fabricantes. En general, las SMARTS CARDS pueden ayudar en situaciones que requieran objetos portatiles seguros. La calidad de la tarjeta con respecto a la falsificación de la misma, combinado con la criptografía de clave pública, generalmente provée una solución adecuada para muchos de los problemas de seguridad existentes hoy en día. Comunicaciones y formatos de comandos: Las comunicaciones con las SMARTS CARDS están de acuerdo a lo escrito por el standard 7816-3 de la ISO. Habitualmente este standard solamente define 2 protocolos: orientado al byte T=0, y orientado al bloque T=1. Sin embargo el standard reserva hasta 14 protocolos (T=14 es muy raro y significa que el protocolo es propietario). De esta manera, los niveles eléctricos y los errores de handshake así como también la frecuencia utilizada, imponen un hardware específico del lado externo, el cual es el equivalente de un UART (universal asynchronous receiver/transmitter) con más funciones sofisticadas. El mínimo hardware que se necesita para operar una tarjeta consiste en: • • • Una interfase mecánica, el conector. Una interfase electrónica, el acoplador; y Un estuche conteniendo los dos primeros elementos, el lector de la smart card. Los lectores mas simples son bastantes similares a los modems y manejan solamente los protocolos de comunicación ISO sin interactuar inteligentemente con el sistema operativo de la tarjeta. Estos lectores stransparentes deberían (pero, en la practica, deben) operar con cualquier smart card proveniente de cualquier vendedor que esté cumpliendo con el standard ISO. Los lectores más sofisticados aceptan ser programados con partes de una aplicación y contienen datos (claves públicas RSA o DSA), archivos y programas. Estos pueden ejecutar funciones criptográficas, practicamente reemplazan a una PC: tienen teclados, pines, o displays; y generalmente usan un lenguaje de programación específico. Estos lectores no aceptan todos los tipos de Smart cards, a pesar de que estas cumplen con el standard ISO, porque a menudo estos trabajan con una serie de comandos particulares dedicados a una tarjeta dada. Para operar una tarjeta el lector debe implementar las siguientes 4 funciones: • Encendido y apagado de la tarjeta. • Reseteo de la tarjeta. • Leer datos de la misma (obtener comandos), y • Escribir datos en la misma (insertar comandos). Cada uno de estos comandos que se inserta o que se obtiene de la tarjeta posée un header acorde a como la tarjeta procesa los datos entrantes ( el header actualmente es una función de código consistente de 5 bytes designados por: CLA, INS, P1, P2, y LEN – clase, instrucción, parametro1, parametro2, y longitud). La tarjeta envía un byte de acknowledge y dos bytes de status ( SW1 y SW2) durante y después de la ejecución de cada comando. SMART CARD 4 Coprocesadores aritmeticos La multiplicación modular (d=t mod n donde t=a.b) es probablemente la operación que con mayor frecuencia se realiza en la criptografía moderna. La eficiencia, medida en terminos de la velocidad y la complejidad del hardware, para realizar este tipo de operación es uno de los puntos claves para este tipo de aplicaciones. Sin embargo, en la mayoría de los sistemas criptográficos, a y b cambian mucho mas frecuentemente que n, y por lo tanto la mayoría de los aceleradores criptográficos son optimizados para realizar aritmetica modular trabajando sobre la base de un cambio poco frecuente de n. Un coprocesador aritmético (ACP) es un hrdware dedicado para obtener el valor de d, o en algunos casos una exponenciación modular entera. Generalmente los microcontroladores de las tarjetas tratan con el ACP como un conjunto de direcciones RAM especiales, donde los datos son escritos bajo la forma (a,b,n), o leídos (d). Usualmente los ACPs operan con los siguientes pasos ( posiblemente integrados como un comando macro en una librería que es provista por el fabricante): 1. 2. 3. 4. Reseteo del hardware e inicialización. Carga ( o refresco) de los operandos a,b, y (opcionalmente) n. Multiplicación (posiblemente repetida); y Descargar el resultado. El ACP realiza el paso 1, el cual no depende del tamaño del operando N, en un número constante de ciclos de clock ( tiempo constante para una dada frecuencia de clock). Los pasos 2 y 4, consisten en el manipuleo de cantidades de datos de longitud generalmente igual o proporcional a N, son lineales en N. Habitualmente, las multiplicaciones (paso 3) requiere un número de ciclos de clock que crece con el cuadrado de N. Por lo tanto, el tiempo total resultante generalmente es proporcional a un polinomio de segundo grado de N. Algunos de los algoritmos mas usados para obtener d son: Montgomery (utilizado por los chips de Motorola), de Waleffe and Quisquater (utilizado por los chips de Philips), Levy-dit-Vehel and Naccache (utilizado por Gemplus), Bucci and other variants of Barrett (usado por Amtec), Sedlak (utilizado por Siemens). El SC49: Un microcontrolador de clave pública. Motorola ha tenido una participación muy activa en el desarrollo de las SMARTS CARDS. Con el Groupe Bull, este desarrollo los primeros dos y un chip microcontrolador de SMART CARD a fines de los años 70 y desde ese momento ha estado involucrado continuamente en tecnología e innovación en seguridad. Motorola ha introducido el MC68HC05SC49 (SC49 para abreviar) especialmente para direccionar la performance y los requerimientos computacionales de las aplicaciones de criptografía de clave pública y privada. Como el resto de la serie de microcontroladores de SMART CARD de Motorola, el corazon de la serie SC49 es el MC68HC05, una variante del HCMOS de baja potencia para sistemas de seguridad. SMART CARD 5 El SC49 trabaja con un coprocesador, llamado MAP (modular arithmetic processor) el cual trabaja con los calculos del algoritmo de Montgomery. El hardware del MAP tiene una capacidad de multiplicación modular de 512*512 bits, pero en conjunto con el software del HC05 puede realizar multiplicacion modular de 768 y 1024 bits. Este realiza una firma de 512 bits de RSA en menos de 500 ms sin la utilización del Chinese Remainder Theorem (CRT), y toma 125 ms con el mismo. El coprocesador MAP está completamente bajo el control del HC05. El SC49 incorpora una librería de firmware de rutinas MAP incluyendo algoritmos de clave secreta privada y pública (DES, RSA, DSS y SHA) y un rango de funciones matemáticas. Las funciones de librería pueden ser expandidas como sea necesario para soportar nuevas técnicas. La velocidad tipica del bus para el SC49 está entre 1MHz y 5 MHz. Un PLL eleva la frecuencia del clock interno para manejar un clock de alta frecuencia dentro del MAP. Un generador de números random produce la semilla para la generación de las claves. La habilidad del coprocesador para generar claves significa que el coprocesador nunca revela la clave secreta afuera del microcontrolador de la SMART CARD, este es un elemento crucial en la seguridad del sistema. El SC49 corre el código con una ROM de 13.3 Kbytes y 512 bytes de RAM, también provée almacenamiento de datos entre los datos del usuario y el software de los drivers MAP. Además están disponible para el usuario 4 Kbytes de EEPROM con un tiempo de escritura de 2 ms. La EEPROM asegura 10 años de retención de datos. La tecnología de encripción de clave pública para SMART CARD está aún en su infancia. Los dispositivos del futuro requerirán diferentes configuraciones de memoria o incluso diferentes tipos de memorias para satisfacer necesidades de sistemas especificos. Algoritmos alternativos y con mayor performance manejarán el desarrollo de microprocesadores avanzados. Por supuesto que todo esto está en continuo crecimiento para obtener una mayor seguridad, confianza, posibilidad de fabricación y calidad, necesaria para el comercio electrónico. SMART CARD 6 Montgomery Chips de Motorola, Thomson y Universidad católica de Louvain usan este método. En 1987 Montgomery publicó un algoritmo elegante para calcular d' = ab2^-N mod n. Este método cancela los 1's menos significativos de t sumándole a t adecuados múltiplos de n y desplazando a t a la derecha. Como la salida es d', los programadores deben corregir el resultado aplicando el algoritmo a d' y una constante 4^N mod n. El algoritmo es muy simple (inicialmente d' = 0) for i = 0 to N - 1 d' = d' + b a[i] d' = d' + n d'[0] d' >> 1 if d' < n then return (d') else return (d' - n) EJEMPLOS N=4 a=5 i d’= + b a(i) d’= + n d’(0) d’ >> 1 b=7 n = 11 0 7 18 9 1 9 20 10 2 17 28 14 3 14 14 7 El valor de salida es d’= 7 , como 4^N mod n = 3 , se usa el algoritmo de nuevo usando como a y b a estos dos últimos resultados y se obtiene el valor real de d = 2. N=8 a = 37 i d’= + b a(i) d’= + n d’(0) d’ >> 1 b = 19 0 19 120 60 n = 101 1 60 60 30 2 49 150 75 3 75 176 88 4 88 88 44 5 63 164 82 6 82 82 41 7 41 142 71 El valor de salida es d’= 71 , como 4^N mod n = 88 , se usa el algoritmo de nuevo usando como a y b a estos dos últimos resultados y se obtiene el valor real de d = 97. de Waleffe y Quisquater Chips de Philips usan este algoritmo. Los autores observaron que podían usar la caja negra, f(y,x,c) = yx + c, donde x es un entero de N bits, y es un registro de v bits, (generalmente de 24 bits) y c es un acumulador de N + v bits, para: • calcular el producto t (c es el acumulador de la multiplicación, x es a, e y es la iecima parte de b de v bits. • reducir el obtenido t mod n sumando a c = t un múltiplo y = k de x = -n = complemento a 2 de n apropiado. Es fácil estimar k cuando los n bits más significantes de v son 10000000 (cualquier n SMART CARD 7 puede ser multiplicado por un factor u apropiado para lograrlo). El siguiente lazo calcula d (inicialmente d = 0) for i = n -1 to 0 con pasos de -v reduce d = f(2^v,d,f(b[i],a,0)) con v bits usando f. Levy-dit-Vehel y Naccache Chips de Gemplus usan este algoritmo, que calcula t con una triple multiplicación serieparalelo, este es un bloque de hardware que multiplican ax, ay y az simultáneamente, siempre que x ^ y = x ^ z = y ^ z = 0 Este algoritmo ejecuta los siguientes pasos: 1. Separar a b en 2 bloques de N/2 bits b = b" | b', y hacer x = b' ^ b" 2. Calcular {u = ax, v = a(b' + x), w = a(b" + x)} 3. Calcular t = delay [u + w] + u + v Bucci y otras variantes de Barrett Chips de Amtec usan este algoritmo. Barrett aproxima d con un cuasireducido d' = d tal que d' < d + 2n. El algoritmo usa un parámetro L que limita el máximo tamaño de t (L = 2N) y una constante k = [2^L / n] precalculada, los pasos son: 1. d = t - n((k(t >> (N - 1))) >> (L - N +1)) 2. while d >= n do d = d - n (esto se hace al menos 2 veces) 3. return(d) En diseños óptimos, Barrett y Montgomery son mas o menos equivalentes en numero de compuertas. Para una performance dada y argumentos de 512 bits, los benchmarks revelan un poco largo coeficiente de segundo grado de Barrett. Sedlak Siemens usa este algoritmo de reducción, en cuales comparaciones de t con 1/3, 1/6, ... de n juegan un rol muy importante, asume que durante la división de t por n, n estaba ya desplazada y restada varias veces de t, y el resto guardado en t. El algoritmo asegura que |t| < n/3. Esto será verdad para los siguientes pasos. Por suposición t cae en uno de los siguientes rangos. Rango 2 Rango 3 ....... Rango i n/6 < |t| < n/3 n/12 < |t| < n/6 n/[3(2^(i-1))] < |t| < n/[3(2^(i-2))] para alguna i > 1. Ahora n es desplazada i bits a la derecha, y para el resultado n' = n/2 tenemos 2^i n'/[3(2^(i-1))] < |t| < 2^i n'/[3(2^(i-2))] => -n'/3 < |t| - n'< n'/3 SMART CARD 8 Para el resultado, t' = t + n'<= n'/3 da igual. Probado que esta condición siempre se cumple, n se desplaza en todos los pasos por lo menos i = 2 bits. Sin embargo, el valor esperado de i es 3, lo cual impone una reducción complementaria por un factor estimado de 1/3 cuando se compara a la reducción bit a bit. Tecnología Hemos compilado un catalogo de características de las tecnologias existentes y vendidas. SMART CARD 9 SMART CARD 10 Implementaciones de alto nivel Generalmente es recomendado separar los sistemas de cryptografia (RSA, DSA, Rabin, Gost y otros) de las operaciones de cryptografia (firmas, verificación, encriptado, desencriptado, hash y intercambio de claves). Los diseñadores realizan esto implementando un buffer de I/O en la tarjeta en el cual la terminal escribe datos a los procesos. En este modelo, los pasos siguientes son realizados que la tarjeta ejecuta una operación de cryptografia. 1. Un comando de escritura selecciona un archivo clave especifico a un sistema 2. Un comando de escritura escribe datos de un proceso (mensajes, texto cifrado, firma y otros) al buffer de I/O RAM. 3. Un comando de lectura (especifico a una operación) devuelve el resultado de la tarjeta. Semejante aproximación resulta en un set de comandos reducido y permite un upgrade de la tarjeta sin sumar nuevos códigos de comandos. El siguiente ejemplo ilustra: • • • la encripcion de un mensaje "process me that" con clave RSA contenida en un archivo 2401 la firma del mensaje "123" con archivo DSA 334A y intercambio de claves Diffie-Hellman con las claves contenidas en el archivo E1F3 select file 2401 {RSA, 768, s/e/i} intercambio ISO: tarjeta a lectora /* = TYPE en DOS */ El archivo seleccionado devuelve un tipo de clave (768 bits RSA) y la operación de crypyografia permitida con este archivo (s = firma y verificación, e = encriptado y desencriptado, i = identificación y verificado, k = intercambio de claves). put data {"process me that"} intercambio ISO: lectora a tarjeta /* datos a procesar */ get data: encrypt 0000 {"E32A371B908AB37"} intercambio ISO: tarjeta a lectora /* = ENCRYPY.EXE */ El 0000 envia a la tarjeta (P1 = P2 = 00), significa que el resultado (acá el texto cifrado con E32) debe ser enviado a la terminal. Un código distinto de cero indicaría el ID de un archivo donde el texto cifrado debería ser escrito. select file 334A {DSA, 512, s} intercambio ISO: tarjeta a lectora /* = TYPE en DOS */ put data {"123"} intercambio ISO: lectora a tarjeta /* datos a procesar */ get data: SMART CARD 11 sign 0000 {"ADE603B826FDE04"} intercambio ISO: tarjeta a lectora /* = SIGN.EXE */ select file E1F3 {D-H, 512, k} intercambio ISO: tarjeta a lectora /* = TYPE en DOS */ put data {"process me that"} intercambio ISO: lectora a tarjeta /* a ^ x mod p */ get data: key exchange 2010 {"AE589EB6A564CDD"} intercambio ISO: tarjeta a lectora /* = KEY_EXCHANGE.EXE devuelve a ^ y mod p */ Durante un intercambio de claves, el usuario debe especificar un ID de un archivo de destino (acá 2010) para la clave común. El mundo externo no puede acceder a este valor nunca. Un usuario usa típicamente este archivo para las operaciones de triple-DES. Performance Philips, Siemens, Thomson y Motorola dominan el mercado de smart-card estos años. La existencia de aplicaciones y prototipos confirman esto. Nos enfocaremos en esta sección en chips de estas 4 compañías. La tabla 2 lista características de recientes aplicaciones de coprocesadores de smartcard. La tabla 3 compara las velocidades de varios chips de smart-card, listando los tiempos de procesos para firma, verificación y generación de claves. Nuestros benchmarks indican que la diferencia de velocidades entre ST16CF54/A y la SLE44C200 es relativamente importante. Aunque más lento que estos el diseño antiguo de Philips (P83C852) parece el más elegante, ambos en termino de área de silicio y simplicidad de algoritmos y circuitos. En la tabla 4 se muestra el diseño más flexible en términos de tamaño de operación es generalmente mas lento. SMART CARD 12 SMART CARD 13 Figura 2 y 3 muestra las curvas que subrayan diferencias en performance y área. Figura 4 muestra que la performance esta cercanamente relacionada con el área ACP. SCALPS merece su nombre muy bien (Smart Card for Low Payment Systems); su tamaño es la mitad que los chips basados en microprocesadores. Antes de elegir un cryptoprocesador hay que saber que es lo que se necesita, muchos fabricantes venden 3 o 4 productos genéricos que cubren un gran porcentaje de la necesidad del mercado. Algunas consideraciones para tener en cuenta son performance del tiempo, precio, fácil desarrollo, seguridad física, herramientas de desarrollo, modularidad, portabilidad, espacio de EEPROM para aplicaciones dedicadas, disponibilidad de un generador real de números al azar, y otros. SMART CARD 14 SMART CARD 15 SCALPS (Smart Cards for Limited Payment Systems) Las tarjetas de transferencia de dinero siguen teniendo aceptación en el comercio. Actualmente existen 3 tipos de tarjetas, cintas magnéticas, con memoria y las inteligentes. Las tarjetas magnéticas son las mas económicas y se usan para pequeños montos de dinero. Las de memoria pueden tener varios megabytes de capacidad. Las Smart cards permiten acceder a algoritmos criptográficos permitiendo realizar procesos de autentificación, firma digital, etc. La principal limitación de las smart cards es la capacidad de memoria (típicamente 512 bytes de RAM, 16 Kbytes de ROM y 8 Kbytes de EEPROM). Asimismo las especificaciones eléctricas y físicas y la organización de los datos como el protocolo de transmisión o la jeraraquia de archivo están standarizadas bajo la ISO7816-1 a -6-. La mayoría de estas tarjetas usan al 8051 o al 6805 como microcontroladores. Debido a limitaciones de memoria las mismas solo pueden manejar algoritmos de clave secreta como el DES o algoritmos de clave pública en muy pocas aplicaciones. Actualmente las tarjetas utilizan, además del CPU, un coprocesador criptográfico que permite realizar exponenciaciones de hasta 512 bits. La contrapartida de esto es el costo que ronda en los $10 contra $1 que es el costo de una tarjeta magnética. Protocolo de Pago. Un sistema on-line requiere de un enlace permanente entre la terminal y el banco, como por ejemplo los ATM (cajeros automáticos). Por otro lado una tarjeta-terminal de bajo costo, bajo un ambiente off-line parece ser mas atractivo. En este ultimo sistema, la tarjeta contiene una cantidad determinada de dinero, la cual debe ser (idealmente): • • • • Impersonal - no relacionable a una persona en particular. Agotable - tienen un tiempo de vida limitado. Universal - pueden ser usadas en cualquier lugar Autentificable - puede certificar al receptor que es verdaderamente autorizada. Un sistema prepago electrónico no necesita un enlace permanente con el banco. Mayormente se presentan los siguientes escenarios: • • Sistema no monopolico - cuando la tarjeta es rellenada en un cajero del banco, el terminal también debita una cuenta correspondiente a los créditos colocados en la tarjeta., cuando el usuario realiza un pago, la tarjeta se autentifica por si misma y debe asegurar que retira la cantidad correcta de dinero de la memoria. Durante el pago, la tarjeta debe transmitir un número de referencia que corresponde al proceso de carga de la tarjeta por parte del banco, de manera tal que el que recibe el pago pueda luego contactar al banco correspondiente de manera de poder recibir el dinero. Este esquema posibilita el carácter anónimo del usuario. Sistema monopólico - Cuando la tarjeta se rellena, la terminal del banco debita la cuenta. También transfiere el dinero dinero correspondientes a los créditos de la tarjeta directamente al sistema administrador de créditos , S.A.C., (operadores telefónicos con sistema de pago telefónico entre otros). Alternativamente el usuario puede comprar los créditos desde el S.A.C. El pago debe ser igual que en el sistema SMART CARD 16 no monopólico pero el esquema finaliza aquí pues ya que la terminal de pago es también propiedad del S.A.C.. Ya que la idea es implementar un sistema de bajo costo, con tarjetas descartables, no tenemos que incluir un protocolo que incluya la recarga de la tarjeta.. Nuestra implementación se adapta mejor con els sistema monopólico. La siguiente figura describe un protocolo de pagos ideal, entre una tarjeta y una terminal de pagos. Reset Verificador (Terminal) Tarjeta ID, N Prueba α a ser pagado Autentificac ión Pago Prueba Donde ID es la identificación que la tarjeta le envia al terminal, N es el dinero que queda disponible en la tarjeta y α es la cantidad de creditos para retirar de la tarjeta. Durante la autentificación la tarjeta despacha su identidad y el número de créditos remanentes y luego prueba su posesión por medio de una relación secreta con la identidad. Similarmente, durante el pago, la terminal envia el número de créditos para pagar, luego la tarjeta prueba que realmente hizo el retiro de este numero de su memoria. Un oponente (persona desautorizada tratando de acceder a los datos de tarjeta), va a tratar de: • • • • • • Modificar la identidad Modificar N Modificar α Alterar la prueba Repetir una prueba Tomar el lugar de la terminal. En el ultimo item, el oponente trata de obtener información de la tarjeta y extraer su secreto. Cabe aclarar que las fases de pago y autentificación deberán estar enlazadas, pues un oponente tratara de simular un pago con la terminal sin que realmente se produzca dicho proceso con la verdadera tarjeta. SMART CARD 17 Algoritmos Criptograficos Es necesario un algoritmo para que autentifique a la tarjeta por si misma y que garantice la cantidad de dinero a ser pagado. Una solución es usar un algoritmo de clave secreta y almacenar dicha clave en la terminal y en la tarjeta. La tarjeta cifra un número aleatorio enviado por la terminal, la cual verifica el resultado realizando la misma operación. Luego la terminal envia a la tarjeta un numero aleatorio cifrado concatenado con la cantidad de dinero a pagarse. En este caso el protocolo es vulnerable ataques físicos pues el atacante puede intentar extraer la claves secreta que reside en la memoria de la tarjeta. Otra alternativa es el uso de un sistema de clave publica. La terminal simplemente verificará la autenticidad de la tarjeta sin poseer ningun secreto o clave secreta, solamente utilizando informacion publica. La terminal verifica que la tarjeta posea una clave secreta guardada por la autoridad apropiada o por el proveedor del servicio (para el caso de un sistema monopolico). Usando algoritmos conocidos, tales como RSA, DSS o El Gamal, una tarjeta puede autentificarse y probar que tiene una determinada cantidad de dinero. Desafortunadamente los cómputos necesarios son pesados con números de 512 o aun 768 bits. Por ejemplo para que una tarjeta se autentifique tiene que “firmar” un número aleatorio con su clave privada, lo que significa a aproximadamente 1.600.000 multiplicaciones de 16x16 bits sobre operandos de 512 bits. Esquemas recientes que utilizan el sistema de Cero conocimiento son mas apropiados para el entorno de smart cards. Estos son Fiat-Shamir (FS) o GuillouQuisquater (GQ). Comparando los distintos sistemas, teniendo en cuenta la misma capacidad de memoria para almacenar las claves se llega a concluir que el mas efectivo (en cuanto a tiempo insumido) es el esquema GQ. Realización Práctica Se seleccionó una versión modificada de GQ con conocimiento cero, donde simultaneamente se autentifica la tarjeta y el monto pagado. La siguiente figura muestra el esquema: SMART CARD 18 n = p.q J = red (ID) B = J -v mod n AUTORIDAD v,n v, n, semilla, ID, N, B TARJETA TERMINAL Reset ID, N α T=h (rv + α) mod n ≠ h(α) T d ε [1, v - 1]] t = r Bd mod n t T = h.(tv Jd + α) mod n Antes que la tarjeta sea usada en un sistema práctico, alguna autoridad deber personalizar la tarjeta. Esta autoridad setea el nivel de seguridad v y el modulo n en la terminal y en la tarjeta. Una semilla (numero inicial secreto) se envia a la tarjeta para el generador ramdom de numeros. Observando la figura anterior, despues que la terminal resetea la tarjeta, la tarjeta envia su ID y el dinero disponible N a la terminal. Entonces la terminal envia el monto de pago a la tarjeta, la cual luego elije r que es un número aleatorio entre 2 y n-1, computando luego T. Despues de recibir T, la terminal toma en nro. d en forma aleatoria entre 1 y v-1, y se lo envia a la tarjeta como un “desafio”; luego la tarjeta computa t usando el numero secreto B. Finalmente el hecho de que B sea obtenido a traves de v y J hace que la terminal se convenza de que la tarjeta es autentica y que no fue modificada. Los 4 ultimos pasos del esquema pueden repetirse varias veces para incrementar el nivel de seguridad. SMART CARD 19 Solamente B, p y q son secretos en este esquema. Notar que r no se revela directamente y ademas enmascara a B. Ni la tarjeta ni la terminal necesitan saber sobre p y q. Como sabemos este esquema se basa en la dificultad que representa factorizar n. En nuestro caso n es un número de 512 bits. Por otro lado en este esquema se usa redundancia, red(), para prevenir potenciales ataques en la exponenciación modular. Puede ser una funcion hash como la descripta en ISO –9796. En este esquema, nosotros podemos adaptar el nivel de seguridad para las aplicaciones en uso. Es interesante reducir el número de cómputos para aumentar la velocidad. En cada round los oponentes tienen exactamente 1 posibilidad en v-1 para engañar al verificador (terminal). SMART CARD 20 Implementando al Algoritmo de Montgomery: La arquitectura esta basada en un sumador de 10 bit. Una multiplicación de 8x8 se ejecuta en 8 ciclos de reloj. El registro Ai (8 bits) retiene al operando ai y el registro B al operando bi. Si el bit saliente luego de hacer un corrimiento de un bit a la derecha de Ai es 1, el contenido del registro AC es sumado al contenido del registro B y guardado nuevamente en AC. De hecho la salida del sumador es desplazada a la derecha en un bit antes de ser guardado en AC, y el bit saliente es desplazado hacia ML. Si el bit saliente de Ai es 0, el contenido de AC es simplemente desplazado un bit en el registro ML. Luego de 8 ciclos de reloj, el byte menos significativo del resultado se encontrara en ML, y el mas significativo en AC. Los pasos a realizar para hacer ab son 1- Cargar el operando ai y guardarlo en el registro Ai 2- Cargar el byte correspondiente del resultado intermedio S y guardarlo en el registro B. Limpiar el registro AC 3- Sumar el contenido de B a AC. Al mismo tiempo cargar el operando bi, y guardarlo en el registro B. 4- Testear los 8 bits de Ai y sumar y desplazar AC según corresponda(hacer una multiplicación 8x8) 5- Descartar el primer resultado (este es igual a cero) en los pasos de reducción. 6- Guardar el resultado de vuelta en memoria (S) 7- Incrementar el contador j e ir para atrás hasta el paso 2 El registro Sn retiene el 65th byte de resultado intermedio despues del paso de multiplicación. Este resultado puede algunas veces ser de 9 bits (ab+S) y por lo tanto 1 registro de 1 bit L retiene este noveno bit luego de la multiplicación completa. Sin tomar en cuenta el termino lineal, el numero total de operaciones es 2xt2xk+10xt2. Donde t es el numero de bytes en un operando, y k es el numero de bits usados en un byte. Se eligió trabajar con números de 8 bits debido a que el numero de operaciones es tal que el protocolo GQ puede ser computado en un razonable periodo de tiempo ( aprox. 1 segundo), con un nivel de seguridad suficente (1/66). Generador de números aleatorios El problema de un generador de números aleatorios es crucial debido a que este puede cambiar el protocolo. Sin un buen generador, la seguridad del protocolo puede ser dramáticamente reducida. Como es bien sabido solamente generadores de secuencias pseudoaleatorias son prácticamente implementadas en SmartCards. El mayor problema es la semilla del generador. Nosotros debemos asegurar que en cada situación, tales como una caída de tensión, nosotros hemos actualizado la semilla. En el siguiente uso de la tarjeta, el numero pseudoaleatorio generado debe ser distinto del anterior. Otro problema es la necesidad de usar EEPROM para almacenar la semilla. Como el tiempo de programación no es despreciable es importante cambiar solo una pequeña parte de la semilla. Todos esos problemas relativos al uso de la SmartCard reducen dramáticamente el numero de posibles generadores. Nosotros reducimos nuestros estudios a generadores SMART CARD 21 basados en la exponenciacion modular, porque este recurso fue previamente implementado en el chip. Se eligió la función r=g3 mod n como el generador. La forma mas simple de generar una secuencia de semilla para el generador es empezar de un numero aleatorio secreto concatenado con un contador. Se reinyecta 64 bits del ultimo numero aleatorio generado dentro de la semilla, nunca directamente revelando el numero generado. El contador es siempre necesario para evitar un ciclo del generador. Un ciclo arriba cuando luego de cierto lapso de tiempo el generador de números aleatorios siempre genera la misma secuencia; además este contador también almacena la cantidad de dinero almacenada en la tarjeta. Generador de números Aleatorios Arquitectura del Chip: SMART CARD 22 En la figura se observa la arquitectura completa del microchip. El registro de desplazamiento D retienen los exponentes (v y d) permitiendo que cada bit sea testeado. Para realizar la exponenciacion se utiliza el método de elevar al cuadrado y luego multiplicar. El inversor antes del registro B permite la substracción de n después de realizarse el algoritmo de Montgomery. Un conjunto de contadores controlan los bytes que están siendo cargados en la memoria (RAM y EEPROM) y en los registros de desplazamiento. Un punto importante es minimizar el numero de memoria RAM estática debido a que esta toma mucha mas área física que la RAM o EEPROM. Si todos los números involucrados en el protocolo (secretos, públicos y aleatorios) están almacenados en una memoria no volátil del tipo EPROM o EEPROM, se necesitan solamente 128 bytes de RAM cuando estamos trabajando con números de 512 bits. La unidad de control consiste de dos arreglos lógicos programables con 7 entradas y 30 salidas que tienen todo el protocolo mas dos pequeños arreglos lógicos programables (PLAs) que recodifican la salida. Se escribe la unidad de control como una tabla con ocho entradas y aproximadamente 60 salidas. Dos pequeñas tablas y demultiplexores inmediatamente recodifican la salida, dejando a la unidad central de control con aproximadamente 30 salidas. Debido a las restricciones con las herramientas de generación automática, la tabla fue dividida en dos partes. Cada tabla es simplificada y el bloque resultante es SMART CARD 23 menor que la ROM optimización. correspondiente debido a que no hay decodificadores y debido a la El programa puede ser escrito en un lenguaje tipo C y un pequeño interprete traslada el programa a la unidad de control. El código del algoritmo de Montgomery y el protocolo de comunicación son escrito como procedimientos separados. Este proceso parece complicar el desarrollo de nuevas aplicaciones. de hecho solo se necesitare compilar nuevas PLAs de la unidad de control describiendo los nuevos protocolos y luego hacer una nueva mascara. Aunque parezca mas complicado es el mismo proceso que se hace en las actuales Smart-Cards en las cuales el uso de ROMs también implica, para nuevas aplicaciones la realización de una nueva mascara. Una pila de tres niveles guarda la dirección de retorno de una pieza de código llamada. El programa es limitado a 256 líneas de código, equivalentes a 256 líneas en la tabla de la unidad de control. SMART CARD 24 Breve resumen y analisis de: IBM Smarts Card Solution Elements Inicialmente el articulo comienza con una descripción general de cuales son algunos de los sectores que abarca el uso de las Smarts Cards y las aplicaciones que a esta se le puede dar: pago sin efectivo, medicina prepaga, seguridad social, control de acceso, autenticación, estos son solo algunos ejemplos. En los proximos años las aplicaciones se irán expandiendo cada vez mas hacia nuevos campos. Luego se describen una serie de características concernientes a la Smart Card de IBM: Multifuncionalidad: Se enumera las principales aplicaciones que se puedeobtener con la misma, la mayoria de estas fueron enumeradas anteriormente.La multifuncionalidad demanda un alto grado de interoperabilidad y seguridad. Seguridad: Refiere a la utilización de Passwords, Algoritmos de Encripción, confidenciabilidad de datos, firmas electrónicas, etc. Interoperatibilidad:Esta solamente se puede lograr estando de acuerdo con los standards internacionales. IBM trabaja con los standards ISO y CEN, así como también iniciativas llevadas a cabo por las industrias: EMV, The OpenCard Framework y especificaciones PS/SC. Este tema de los diferentes standards es tratado en el articulo más adelante. Flexibilidad: Como la tecnología de la tarjeta multifunción de IBM está basada en un microprocesador, esta provée flexibilidad y la base para actualizaciones dinámicas de la tarjeta con nuevas aplicaciones. Service & Consultancy: Esto está descripto como una característica, es decir es un atributo de IBM para poder diferenciarse del resto de las Smart Cards, hace referencia al soporte que ellos les brindan a sus clientes. IBM Multifunction Cards (MFC) En esta parte, el articulo comienza a hablar sobre el producto específico que brinda IBM y que es la tarjeta Multifunción. Hace referencia al sistema operativo de la misma, a las características de seguridad y a los standards de seguridad relacionados con las Smart Cards. Sistema operativo de la IBM MFC Protocolo de comunicación: Soporta el protocolo de transferencia de bloque ISO 7816-3 T=1, puede soportar otras protocolos como el ISO 7816-3 T=0. Sistema de archivos: El sistema de archivos de una IBM MFC tiene una estructura de arbol y puede ser comparada con la estructura de archivos del disco duro de una PC. Esta tiene un Master File, Dedicated Files y Elementary Files (EF). Existe una breve descripción acerca de cada uno de ellos. SMART CARD 25 Condiciones de Acceso: Cada archivo contenido en el arbol de directorios en la EEPROM de la IBM MFC contiene condiciones de acceso predefinidas asignadas para los diferentes métodos de acceso como: Solo lectura, Poder realizar cambios y Administrador. Luego se enumera una serie de condiciones de acceso las cuales pueden ser especificadas por la IBM MultiFunction Card. Comandos: Se brinda varias tablas con los diferentes comandos soportados por la IBM MFC, los cuales están basados en los standards internacionales. Los mismos están agrupados de acuerdo a su funcionalidad en los siguientes grupos: • • • • • • Comandos de aplicación de datos. Comandos de seguridad. Comandos adicionales/modificados disponibles con tarjetas de algoritmos de clave pública (PKA). Comandos del Management de la tarjeta. Electronic Purse Commands. Comandos miscelaneos. Funciones de Personalización: Durante los diferentes pasos de producción (fabricación del chip, fabricación y testeo del módulo, fabricación de la tarjeta, inicialización y personalización) la IBM MultiFunction Card pasa a travez de diferentes estados lógicos, los principales son: Vaciado, Inicializado y Personalizado (en el articulo existe una breve descripción de cada uno de ellos). Seguridad Una de las mayores ventajas de las Smart Cards “inteligentes” es el alto nivel de seguridad que estas brindan. Una Smart Card real, por ej. un chipcard con un procesador completo consiste de: Una CPU, una memoria ROM, una memoria EEPROM, una memoria RAM y opcionalmente un coprocesador criptográfico. Existe un grafico bastante explícito que muestra como interactúan dentro del Chip las diferentes partes anteriormente descriptas, y cual es la participación de cada una de ellas en la seguridad del sistema. La tarjeta multifunción de IBM provée servicios de seguridad tales como: Card Holder verification, autenticación del mundo exterior, autenticación de la tarjeta, integridad de los datos, confidenciabilidad de los datos y firmas digitales. Cada uno de estos items está descripto en el articulo de IBM. Standards La estandarización juega un rol importante en la aceptación y el crecimiento de la industria de las Smart Cards. Solamente los estandares internacionales apropiados pueden asegurar que una Smart Card pueda ser aceptada por los diferentes lectores de tarjetas y terminales en las diferentes partes del mundo. SMART CARD 26 La estandarización de las Smart Card es llevada a cabo desde dos lados: • • Las organizaciones internacionales de estandarización ( ISO, ANSI, CEN, etc ). La industria, basada en los mercados emergentes y en los productos. Ejemplo de esto son: Visa, Mastercard y Europay, quienes decidieron migrar de las tarjetas magneticas a las Smart Cards. El articulo hace referencia a que las tarjetas multifunción de IBM están basadas en los estandares internacionales y que continuarán con los mismos. Luego de esto existe una descripción detallada de cada uno de los estandares internacionales y de las iniciativas llevadas a cabo por la industria y los estandares de la misma. Tarjetas Híbridas Las tarjetas híbridas son una combinación de las Smart Cards convencionales con contactos y las tarjetas sin contactos. Estas combinan la funcionalidad de dos tarjetas independientes (con y sin contacto) en una misma tarjeta plastica. Un ejemplo de aplicación de esto podría ser una tarjeta de pago y una aplicación de acceso sin contacto. Tarjetas con interfase dual La tarjeta de interfase dual integra las ventajas de las Smart Cards con y sin contacto en un mismo chip. Esta brinda la posibilidad de poder acceder a una misma fuente con dos interfases diferentes. Tarjetas Opticas Cuando trabajamos con aplicaciones para las cuales la memoria común de la chipcard no es suficiente, es adecuado emplear tarjetas ópticas, las cuales ofrecen capacidades de varios Mbytes. Aplicaciones para este tipo de tarjetas son por ejemplo en el campo del cuidado de la salud, en donde se almacena los datos de los pacientes. Debido a la gran capacidad de este tipo de tarjetas incluso permiten guardar fotografías de rayos X. Luego el articulo brinda una tabla con las versiones disponibles de las tarjetas Multifuncion de IBM. El mismo brinda la pagina de Internet donde poder obtener una actualización de esta. La Arquitectura Abierta de las Smart Cards La Arquitectura Abierta de las Smart Cards toma en cuenta el ciclo de vida completo de las smart cards. Esta está diseñada con el standard ISO 7816, en principio la arquitectura está basada sobre tres componentes principales: SMART CARD 27 • • • The Smart Card Compiler: Para la creación de las Smart Cards, este crea desde un alto nivel de descripción todos los datos requeridos para la inicialización y personalización de la tarjeta. The Smart Card Agent: Maneja el sistema operativo de la tarjeta, este cubre la parte de la interfase de aplicación para una smart card. The Smart Card Agency: Este ayuda a manejar el uso de diferentes Smart Card Agents y ofrece a la aplicación un tipo de smart card independiente de la interfase. Luego se brinda una explicación muy detallada de cada una de estas partes y de las que componen a estas. Existen una serie de graficos que muestran en una manera muy clara como trabajan cada una de estas partes y como se relacionan entre sí. SMART CARD 28