Smartcards - Universidad de Buenos Aires

Anuncio
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
Descargar