SMARTCARDS






INTRODUCCION Y EVOLUCION DE LAS TARJETAS.

Las tarjetas se pueden definir de un modo generico como un medio de identificacion , que es util en diferentes ambitos.
La evolucion tecnologica ha permitido el diseño de diferentes tipos de tarjetas con unas prestaciones muy diferentes dependiendo de uso que se le fuera a dar.Pero todos estos tipos presentan ciertas caracteristicas comunes como por ejemplo las dimensiones, que estab definidas en el estandar ISO 7810.
Las primeras tarjetas que surgieron fueron las tarjetas de visita , donde los datos se  imprimian en la misma superficie de la tarjeta, y donde esta claro que el metodo de fabricacion es totalmente inseguro, dada su facil falsificacion.La duracion de la tarjeta es muy corta debido al material utilizado.Dicho  tipo de tarjetas  centran su utilidad en aspectos sociales (presentacion o introduccion social).
Para resolver los problemas de durabilidad de las tarjetas de visita de empezaron a utilizar las tarjetas plasticas, fabricadas con PVC o Cloruro de Polivinilo y la informacion de estas tarjetas se restringe a la zona de estampado, en la que se incluye el nombre e identificacion del propietario, ademas se incluye una region en la que el propietario introduce su firma , asi es posible autentificar que el portador de la tarjeta es el propietario.
Un gran paso que permitio el uso generalizado de las tarjetas fue la introduccion de una banda magnetica en la tarjeta plastica, donde los datos se almacenaban en dicha banda magnetica con la ayuda de un campo magnetico, suministrado por por nu electroiman y cuya polaridad depende de la direccion de la corriente electrica.El uso que se le dio a estas tarjetas fue principalmente el uso bancario y aunque en un principio presentaban un cierto nivel de seguridad , actualmente el nivel de seguridad es insuficiente en el ambito financiero y se requiere de unas tarjetas con mayor seguridad, esto dio lugar al desarrollo de las tarjetas donde ya  se incluyen circuitos integrados en el interior de las tarjetas.Estas tarjetas pueden llevar un procesador o no llevarlo.Si no disponen de un procesador pueden dividirse en :

            -tarjetas de memoria :
    Estan compuestas por una memoria EEPROM sobre la que se pueden realizar ciertas funciones predefinidas.La capacidad de estas tarjetas pueden variar desde los 256 bytes a las decenas de Kbytes, y no existe ningun control de acceso a los datos que aparecen en esta tarjeta, por lo que son consideradas como un simple almacen de datos.
 

        -tarjetas de logica cableada:
    Se componen tambien de una memoria EEPROM y de unas funciones predefinidas, y la unica diferencia con las anteriores es la existencia de una unidad de control de acceso a los datos.

mientras que si disponen de procesador son las denominadas tarjetas inteligentes o smartcards  y  pueden dividirse en :
        -tarjetas con contactos: Donde hay contacto fisico con el terminal a traves de las patillas de la tarjeta.
        -tarjetas sin contactos: La transmision de los datos  se produce por radiofrecuencia.

Dentro de las  tarjetas con procesador hay un tipo de tarjeta que reciben el nombre de tarjetas superinteligentes, y cuyo desarrollo empezo en 1988.Estructuralmente, estas tarjetas cumplen con el estandar ISO 7810, y poseen un microprocesador y un conjunto de circuitos como una tarjeta inteligente, poseen tambien una pantalla de cristal liquido de 16 cracteres alfanumericos y un teclado de 20 caracteres .La tarjeta es alimentada con una bateria y posee tambien una  banda magnetica estandard, que se peude sustituir por un transductor que emulara el contenido de la banda magnetica.La ventaja de dichas tarjetas es que no requieren de un terminal  para realizar la transaccion.El usuario activara la tarjeta e introducira el pin, cuando la tarjeta compruebe la clave permite al usuario repasar los ultimos cargos, entonces el usuario decide la cuenta en la que desea relizar el cargo e introduce la cantidad, que es verificada por el vendedor,despues la tarjeta muestra un codigo que debe ser anotado por el vendedor.Mediante este sistema se intenta eliminar los problemas asociados a una smartcard con el uso de un terminal.Pero esta tecnologia es muy cara y ademas presenta problemas ergonomicos.

Tambien cabe nombrar otro tipo de tarjetas , las llamadas tarjetas opticas, son las ultimas aparecidas en el mercado y se caracterizan por poseer una capacidad de datos mucho mayor a las demas tarjetas.El grabado de datos en estas tarjetas se realiza mediante la aplicacion de  calor  sobre  la superficie optica, en la que se produce ciertas marcas.El problema de estas tarjetas es que no se pueden reutilizar, ya que resulta imposible restituir la superficie optica.
 
 
 

ESTRUCTURA INTERNA DE UNA SMARTCARD

Una smartcard puede tratarse de un pequeño ordenador personal ya que posee los elementos tipicos de un ordenador; presenta una interface con el exterior, una serie de elementos necesarios para el procesamiento de datos (memoria y procesador) y ademas todos estos elementos son gestionados por un sistema operativo (denominado mascara).
 

Tarjetas con contactos.

En el tipo de tarjetas smartcards  con contactos, el dialogo se realiza a traves de una matriz de contactos situados en la superficie de la tarjeta, cuya posicion y dimensiones de esta matriz aparecen definidos en el estandard 7816/2.
 
 


  figura 1

Como se puede ver en la figura 1 la matriz esta compuesta por 8 contactos con una estructura espacial 4x2.Los contactos se nombran como Cx , donde x se enumera de 1 a 8 , de arriba abajo y de izquierda a derecha.La direccion minima que debe tener un contacto es de 1,7 mm x 2mm y dicho contactos se fabrican de cobre recubierto de una fina capa de oro o de una aleacion de paladio y plata.
 
 
 
 

Asignacion de los pins
C1(Vcc) Contacto que suministra la tension y la intensidad necesaria para el funcionamiento del circuito integrado de la tarjeta.
C2(RST) Contacto encargado de transmitir la señal reset a la tarjeta,que inicia su dialogo con el terminal.
C3(CLK) Aporta la frecuencia que marca la transmision  del ATR y el funcionamiento del procesador.
C4(RFU) No tiene tarea especifica, se puede optar no incluir estos contactos o utilizar estos conectactos para otros usos como contacto de entrada salida.
C5(GND) Se aporta la señal de tierra utilizada como referencia  para el resto de señales transmitidas.
C6(Vpp) Aporta el voltaje e intensidad que requiere la memoria EEPROM para su grabado y borrado
C7(I/O) Sobre este contacto se produce la transmision de informacion entre la tarjeta y el terminal.
C8(RFU) No tiene tarea especifica, se puede optar no incluir estos contactos o utilizar estos conectactos para otros usos como contacto de entrada salida.

En cuanto a los valores de tension, inicialmente se utilizaban circuitos TTL por lo que se requeria una tension de 5 voltios, aunque en nuestros dias se utilizan otro tipo de tecnologias como MOS o CMOS, qu eno requieren esta tension pero funcionan con ella.Por su parte las tarjetas GSM requieren solo de · voltios por lo que incluyen un conversor en los telefonos para que realice este cambio de tension.En  un futuro las smartcards funcionaran  a un rango de tension de 3  a 5 voltios, asi se evitaran los posibles problemas de insercion de una tarjeta en u lector con tension no adecuada, este rango de tensiones sera obligatorio para todos los procesadores y el inconveniente es que resulta muy complejo integrar memorias EEPROM con este rango de tension.

Tambien hay que tener en cuenta que el consumo del circuito integrado de la tarjeta depende en gran medida de la frecuencia de funcionamiento, y en menor medida de la temperatura.La intensidad maxima de funcionamiento varia en funcion del estandard que se analice; El standard ISO 7816/3 especifica un valor maximo de 200 mA mientras que el estandard GSM 11.11 solo admite 10 mA.
La mayoria de estos circuitos no requieren un nivel de 200 mA para su funcionamiento pero en estos consumos pueden llegar a aparecer ciertos picos de consumo cortos , y para evitar su influencia se puede poner un condensador que resuelva este problema.
Otras tarjetas pueden presentar  un modo de ahorro de energia en el que el procesador pasa a un estado de consumo minimo y la memoria RAM y la circuiteria asociada a I/O permanecen inactivos tambien desconectandose el resto decircuitos, asi se produce un gran ahorro de energia , de gran utilidad en telefonos moviles.

En cuanto al tema de la señal de reloj, en las primeras tarjetas podia haber un circuito de generacion de reloj, por lo que la señal recibida por la tarjeta no era utilizada para el funcionamiento general de la tarjeta y su uso se centraba en la fase de de iniciacion de la tarjeta, este planteamiento se sigue manteniendo en la actualidad aunque las tarjetas ya no suelen tener circuito de reloj interno.
La señal de reloj definitiva se utiliza en la transmision de datos a traves de I/O y en la frecuencia del procesador, aunque no es necesario que el procesador actue a la señal de reloj transmitida, sino que es posible modificarla.Asi , algunos procesadores incluyen un multiplicador de la señal de reloj, con el objetos de aumentar la velocidad del procesador.Habitualmente se utiliza un multiplicador de 2.

La transmision de los datos se realiza a traves de I/O mediante un metodo de comunicacion half-duplex y bidireccional, por lo tanto existen dos metodos de funcionamiento:

           -transmision:   Emision tarjeta     ------> Terminal
           -Recepcion:    Emision Terminal ------>  Tarjeta
Tanto la tarjeta como  el terminal poseen dos niveles de tension para indicar que ellos estan preparados para enviar o recibir.Cuando ninguno de ellos desea enviar , la linea pasa a nivel alto, y si alguno de ellos desea tranmitir, la linea pasa a nivel bajo indicando esta circunstancia.Dicho comportamiento esta controlado por la circuiteria asociada a la linea que incluye una resistencia de pull-up, mediante esta resistencia se evita que el envio de dos señales a nivel alto, con su consumo de intensidad asociado, genere algun problema en los circuitos de la tarjeta o del terminal.
 
 

Tarjetas sin contactos.

El terminal debe enviar y recibir informacion de la tarjeta para que esta funcione correctamente (tension, señal de reloj , datos desde/a la tarjeta , etc), dicha informacion ya hemos comentado anteriormente como se realiza en las tarjetas con contactos, pero con las tarjetas sin contactos resulta necesario habilitar algun modo alternativo para realizar esta transferencia de informacion, por lo que se han desarrollado diferentes tecnicas con diferentes propiedades entre las que destacan la tranmision por ondas , transmision optica, acoplado capacitivo y acoplado inductivo.Las tecnicas de acoplado capacitivo y acoplado inductivo son las mas habituales debido al formato de las tarjetas y se han definido como estandares.La tecnica de acoplado inductivo puede ser utilizada para la transmision de la tension y de los datos.

El consumo de una tarjeta sin contactos define la distancia maxima a la que puede funcionar.Las tarjetas asociadas  a realizar solo operaciones de lectura de informacion solo consumen decimas de µW y por tanto pueden actuar hasta a un metro de distancia mientras que las tarjetas que soportan operaciones de escritura de informacion , su consumo puede llegar a 100 µW , por lo que la distancia a la que se limita es mucho menor (tan solo 10 cm).Por ultimo las tarjetas con microprocesador requieren un consumo de 100 mW, por lo que la distancia de funcionamiento se limita a pocos milimetros.
Independientemente de la distancia maxima de funcionamiento, todas las tarjetas basadas en el acoplamiento por induccion se basan en las propiedades electromagneticas de las bobinas, la unica diferencia aparece en la frecuencia de la corriente portadora , que varia entre 100-300Khz y llega hasta algunos Mhz.

En el acoplamiento inductivo , la transmision de informacion se produce a traves de las propiedades elctromagneticas de las bobinas.En el terminal y en la tarjeta aparecen una o mas bobinas, cuando aparece una corriente electrica en la bobina del terminal se produce un campo magnetico, el cual genera una diferencia de potencial en la bobina de la tarjeta, si la bobina aparece  en un circuito cerrado, se genera una corriente electrica que da lugar a un nuevo campo magnetico, cuya intensidad puede ser modificada al cambiar el diseño del circuito cerrado de la tarjeta.
Habitualmente la corriente que circula en la bobina es alterna y su frecuencia se denomina frecuencia portadora.
El estandard que caracteriza a las tarjetas con circuitos integrados y sin contactos, que funcionan a una distancia muy corta es el ISO 10536, donde estan definidas las caracteristicas fisicas, las dimensiones y localizacion de areas de acoplamiento, señales electronicas y funcionamiento del reset y ATR y protocolos de transmision.Externamente una tarjeta sin contactos se parece a una tarjeta con contactos en la que tambien es posible incluir contactos,tambien se habilita la posiblidad del acoplamiento inductivo y del capacitivo, por lo tanto, los lectores y las tarjetas pueden soportar ambos tipos de comunicacion.
El estandard relativo a las tarjetas de mayor distancia es el ISO 14443 y todavia se encuentra en periodo de desarrollo.
 

Tipos de microprocesadores

Los microprocesadores utilizados en el ambito de las tarjetas inteligentes so ordenadores completos con su procesador, memoria y un sistema de entrada/salida.
Existen diferentes tipos de memoria ROM, RAM y EEPROM, cada una con funcionalidades distintas.
El circuito de I/O o entrada/salida suele ser una unidad especifica que el procesador puede direccionar como una posicion mas de memoria.
Estos microprocesadores deben cumplir una serie de caracteristicas basicas , como son su coste de fabricacion minimo eliminando los elementos que no son necesarios.Tambien deben cumplir una funcionalidad y una seguridad , con lo que se incluyen todos los elementos necesarios para posibilitar un buen nivel de seguridad  activo y pasivo.Tambien hay que controlar la minimizacion del tamaño del chip, evitando su ruptura por cualquier agresion externa , y la disponibilidad reducida, para eliminar la posibilidad de un duplicado del chip.
La eleccion del procesador a utilizar es una de las decisiones mas importantes, por eso es importante destacar la fiabilidad del procesador a la hora de elegir el apropiado y es mas fiable utilizar procesadores bien conocidos y que han sido probado en diferentes ambitos, de este modo el proceso de fabricacion y el funcionamiento del procesador resultan muy seguros, a su vez esti tambien facilita el desarrollo de los sistemas operativos, ya que sus programadores poseen librerias ajustadas a los procesadores.
Otras consideraciones a tener en cuenta son las velocidad de proceso y la capacidad de la tarjeta, ambas consideraciones recomiendan el uso de procesadores de 8 bits, en los que incluyen un busde direcciones de 16 bits.
El conjunto de instrucciones suele ser normalmente de tipo CISC, aunque en algun caso puede utilizarse una arquitectura RISC.
 

Tipos de memoria

Una tarjeta cmo cualquier ordenador requiere diferentes tipos de memoria para almacenar datos con propiedades distintas.Necesitara de una memoria de consulta en la que la informacion solo puede ser consultada, tambien una memoria de almacenamiento variable que contiene los datos que se modifican, y por ultimo una memoria volatil en la que se almacenaran datos intermedios.
Para el tipo de memoria de consulta  suele utilizarse la memoria ROM, cuyo contenido se imprime en el proceso de fabricacion, mientras que para la memoria de almacenamiento variable suele utilizarse un gran tipo de memorias, como puede ser la EPROM, la EEPROM(la mas extendida) o la flash-EEPROM y la FRAM.
EL tipo de memoria que se utiliza para la memoria volatil es de tipo RAM , que puede ser estatica o dinamica.Inicialmente se utilizo DRAM debido a su sencillez, aunque en la actualidad se suele usar SRAM, ya que no requiere refresco, por lo que se puede eliminar la señal de reloj.

Es interesante saber el funcionamiento de los diferentes tipos de memoria no volatil que se utilizan, como puede ser la EPROM, la cual solo puede ser  borrada mediante la interaccion de rayos ultravioletas, por lo que su uso en las tarjetas  inteligentes no es interesante.Por otro lado esta la memoria EEPROM que actualmente es la mas utilizada, aunque presenta una serie de inconvenientes como son su programacion, ya que tanto su escritura como su borrado requiere de una tension de 17 voltios.Para alcanzar esta tension se debe incluir un circuito especifico denominado bomba de carga o charge pump y su coste es bastante alto, ademas el ciclo de escritura suele ser 3-10 ms.
Otro tipo de memoria usada en las memorias no volatiles es la flash-EEPROM con una tecnologia similar EEPROM pero la tension de programacion que usa es de 12 voltios y el ciclo de escritura es de 10µs.
La memoria mas moderna usada para este tipode memorias es la FRAM , con una tension de programacion de 5 voltios y un ciclo de escritura de 100 ns, el unico inconveniente es que requiere un cierto refresco , lo que impide su introduccion en este ambito.
 

Otras unidades

Tambien suelen aparecer distintos componentes que mejorar las caracteristicas de las trajetas , como pueden ser coprocesadores, por ejemplo los algoritmos de cifrado de informacion mediante clave publica requieren el calculo de exponenciales y el calculo del modulo de grandes numeros, por lo que el coste de estos algoritmos suele ser bastante alto por lo que se utilizan circuitos especificos para este fin.Cuando se requieren realizar una operacion de ese tipo, el procesador ordena su desarrollo al coprocesador y espera a que este termine.
Otro caso en el que resulte util la utilizacion de otras unidades puede ser en los procesos de autentificacion que requieren la generacion de un numero aleatorio real, que no sea pseudo-aleatorio, dicho numero no debe ser predecible desde el exterior, por lo que no debe relacionarse con ninguna de las informaciones recibidas por la tarjeta, como la tension o a la temperatura, y su valor se suele construir a traves de varios estados logicos del procesador , como el contenido de los registros, el valor obtenido se introduce en un registro de desplazamiento en bucle cerrado, a partir del cual  es posible generar numeros aleatorios.
Tambien pueden existir otras unidades para la deteccion de errores en la EEPROM.El limites de vida de la tarjeta se asocia con el de la memoria EEPROM que posee, y con el objetivo de aumentar al maximo su ciclo de vida, se pueden incluir algoritmos para la deteccion y correccion de errores.Si se desea un algoritmo realmente efectivo, el tamaño del codigo puede  llegar a ocupar la mitad de la capacidad de la tarjeta, este hecho provoca una dura decision, entre la capacidad real de la tarjeta y su ciclo de vida.
Por ultimo nombrar algunas unidades mas , como pueden ser para aumentar la velocidad de tranmision de los datos via hardware, o cuando con el paso del tiempo se requiere una mayor capacidad del procesamiento de la tarjeta, dicho aumento se puede obtener mediante el duplicado de la señal de reloj externa.
 

SEGURIDAD EN LAS TARJETAS INTELIGENTES

Una de las ventajas mas importantes de las tarjetas inteligentes es el nivel de seguridad que suministran, por lo que esta caracteristica es la fundamental para el uso de esta tecnologia frente a otro tipo de tarjetas.
Desde un punto de vista hardware, el objetivo es el diseño de un circuito que no pueda ser falsificado, para ello se deben incorporar al circuito todos los elementos que eviten una manipulacion no adecuada.Mientras que desde un punto de vista software se requiere un control sobre la ejecucion de ordenes en la tarjeta, dicho control debe prevenir la modificacion de zonas de memoria reservadas y el acceso de usuarios no autorizados, en este ultimo aspecto resulta de gran interes el metodo de la identificacion del usuario y la autentificacion del terminal y de la tarjeta.Tambien se debe controlar que el dialogo con la tarjeta sea correcto y sin interferencias por lo que el manejo de claves de acceso , asi como el uso de algoritmos de cifrado son elementos basicos de estos aspectos.
 

Seguridad hardware

Existe una gran variedad de metodologias que permiten proteger el microprocesador de una tarjeta inteligente, estas soluciones pueden agruparse en dos clases:

        -Soluciones pasivas: En donde no resulta necesario que la tarjeta este alimentada.La idea es mejorar el proceso de fabricacion de la tarjeta con el objeto de proteger los diferentes elementos de la tarjeta de un analisis externo.

        -Soluciones activas: Requieren  que la tarjeta este alimentada.Se asocian a un conjunto de sensores activos que se integran con el resto de elementos de la tarjeta.Las medidas de estos sensores se controlan en el funcionamiento normal de la tarjeta, aunque solo son utiles si la tarjeta esta conectada.Normalmente, estos sensores son de uso muy especifico , por lo que solo son utiles en la deteccion de un unico ataque externo, ademas incluso puede suceder que un valor tomado como peligroso se deba a un simple cambio en el entorno, por lo tanto la eleccion de el numero y la funcion de los sensores utilizados es fundamental.
 

La mayoria de los ataques hardware que sufre una smartcard utilizan un equipamiento de alta tecnologia, los mas utilizados son microscopios, cortadores laser,micromanipuladores, utiles para la separacion quimica de componentes y computadores de altas prestaciones para el analisis de datos.El objetivo de estos ataques es la memoria EEPROM, ya que en ella se encuentra toda la informacion de la tarjeta inteligente.Asi pues la lectura de la memoria permitiria el posterios manejo de la tarjeta para su modificacion, ya que seria posible leer la copia cifrada del pin, y descifrarlo utilizando la funcion de cifrado que tambien aparece en la memoria.Existen diferentes opciones para posibilitar estos ataques como pueden ser el cambio de estado de la tarjeta , ya que el microprocesador puede pasar a un modo de test en el que es posible acceder a toda la memoria de la EEPROM sin ningun tipo de control.Este modo se controla por un fusible fisico, que se funde cuando se verifica el funcionamiento de la tarjeta en la ultima etapa del proceso de fabricacion, y este fusible fundido aparece comouna gran superficie plana en el circuito , que al menos teoricamente puede ser cortocircuitado de modo mecanico.Para resolver este problema aparece en las tarjetas una zona de la EEPROM que permite complementar la tarea del fusible,esta zona de la EEPROM funciona como un fusible logico respecto del transito al estado de test, y dado que el acceso a la EEPROM requiere la desactivacion de  los dos fusibles, y el fusible logico se encuentra en la propia memoria EEPROM, se bloquea el transito al modo de test.

Otro ataque puede ser el de acceso directo a memoria, dicho ataque requiere la extraccion de la superficie de silicio de su envoltorio, para lo cual es necesario aplicar distintas caracteristicas, ya que dicha operacion requiere de gran delicadeza, pues cualquier maniobra inadecuada podria romper el circuito.La escala de integracion actual imposibilita un ataque directo sobre los bits de la memoria, por lo que resulta necesario abordar el problema desde otro punto de vista.Una posibilidad aunque realmente compleja, es el acceso directo a las pistas que conectan los diferentes componentes de la tarjeta, de este modo es posible leer las memorias ROM y EEPROM sin necesidad de alimentarlas electricamente.Este ataque resulta poco probable ya que las tecnicas micromecanicas que lo posibilitarian estan poco desarrolladas.En cualquier caso los circuitos estan provistos de tecnicas para preveerlo, como el cambio en el orden de las pistas en los buses.Tambien es posible leer el contenido de una memoria ROM mediante la utilizacion de un microscopio optico, para evitar este problema, la memoria ROM no se encuentra en la capa superior del circuito, reduciendo el riesgo de este ataque.

Los numeros aleatorios son utilizados por la tarjeta y  por el terminal en la autentificacion, y la idea de este mecanismoes verificar que se puede descifrar un numero que ha sido cifrado por el otro comunicante, comprobando que ambos poseen el mismo algoritmo de cifrado.El principal objetivo de esta tarea es asegurar la individualizacion de un dialogo entre una tarjeta y el terminal, de este modo se imposibilita la reproduccion de una sesion anterior que pudiera haber sido grabada.Un posible ataque fuerza a la tarjeta a generar una secuencia de numeros aleatorios que sea la suficientemente grande para que llegue a ser predecible.Para resolver este problema , el generador de la tarjeta posee un periodo que es mayor que la longevidad de la propia tarjeta.Otra posibilidad es generar una secuencia de numeros aleatorios tan grande que llegue un momento en el cual el generador de numeros aleatoriosse bloquee ysiempre genere el mismo numero.En este caso, la tarjeta imposibilita posteriores procesos de autentificacion, que tendria una influencia directa sobre  el funcionamiento de la tarjeta.

En cuanto a las soluciones activas, los circuitos estan recubiertos de una envoltura de material que lo protege contra la oxidacion  u otros procesos quimicos, por lo que cuando se desea manipular el circuito resulta necesarioretirar esta capa pasiva.Para controlar la existencia de esta capa, se incluye un sensor que verifica la resistencia o la capacitancia que dicha capa genera, dicho sensor genera una señal que bloquea el circuito si detecta una medida erronea.
Tambien es posible incluir un regulador de la tension cuyo objeto  es el de asegurar que la tarjeta funcione a los niveles adecuados, una tension fuera de los limites podria cambiar el valor de ciertas zonas como el contador de programa lo que originaria un funcionamiento aleatorio.
Una frecuencia de relos inadecuada podria permitir un analisis pormenorizado de la tarjeta, incluyendo el consumo de potencia, de modo que se pudiera predecir su funcionamiento, para evitar este analisis tambien aparece un regulador de la frecuencia de reloj.
 
 

Seguridad software

La seguridad software hace referencia a los diferentes mecanismos de seguridad que la tarjeta posee para imposibilitar un acceso a la memoria no deseado.Algunos ataques se restringen al funcionamiento interno de la tarjeta, en donde las diferentes zonas de memoria se encuentran protegidas para evitar accesos no deseados, y otros ataques se refieren a la conexion externa de la tarjeta y pueden incluir la manipulacion del dialogo con el terminal o la emulacion de la tarjeta o del terminal para detectar los fundamentos del dialogo.
La unica via de comunicacion de la tarjeta con el exterior se produce a traves de uno de sus contactos, que es el de I/O, por lo tanto una alteracion de su flujo de datos podria llegar a introducir ordenes en las que se modificara el contenido de la memoria, una  posibilidad es la inclusion de un dispositivo formado por dos contactos separados por un material aislante, uno de ellos se situaria sobre el contacto I/O de la tarjeta y el otro estaria conectado a un ordenador de altas prestaciones, de este modo el ordenador podria eliminar e incorporar instrucciones y datos de modo que se alternara el dialogo del terminal y la tarjeta.Una solucion a este problema es la inclusion de un obturador que imposibilitara la existencia de un cable conectado a cualquier contacto, pero dado que esta posibilidad y que en el futuro puede desarrollarse con mayor vigor, resulta necesario incluir alguna tecnica que resuelva estos problemas, estas denominan de modo generico  como control I/O y en ellas participan diferentes elementos del sistema operativo, uno de estos es el gestor de transporte que es el encargado de verificar que el dialogo entre el terminal y la tarjeta es valido.

Otra importante via de ataque es la emulacion de alguno de los elementos del dialogo.Mediante la emulacion de la tarjeta es posible averiguar que operaciones solicita el terminal, y su posterior analisis puede llegar a desarrollar una tarjeta que responda a estas ordenes.El problema aparece en el momento en que se inicia un proceso de autentificacion, ya que la clave no es  conocida por el terminal, y esta solucion se complementa con el control del numero de serie de las tarjetas validas en las que se excluyan las tarjetas que tengan un funcionamiento sospechoso.
La emulacion del terminal permite verificar el juego de instrucciones de la tarjeta, mediante la transmision de todos los valores posibles de los bytes que las definen.Este dato permite conocer el rango valido de los parametros y otras instrucciones que no esten documentadas.Tambien es posible deducir  las claves relativas al proceso de autentificacion controlando el coste temporal del descifrado del mensaje, para evitar este problema, la implementacion de estos procesos aseguran que el coste es independiente de la clave y del mensaje, y otra opcion es incluir un controlador que controle el numero de errores en la autentificacion.

La operacion de escritura sobre la memoria EEPROM utiliza la bomba de carga que genera un aumento en el consumo de potencia de la tarjeta, este consumo puede ser detectado mediante la inclusion de una resistencia en el contacto Vcc de la tarjeta, por lo tanto un incremento en el consumo de potencia suciente infiere una intencion de realizar una escritura en la memoria EEPROM.Este conocimiento puede ser utilizado para la busqueda del PIN o cualquier otra clave de la tarjeta.Normalmente la tarjeta comprueba el valor de la clave y posteriormente actualiza el valor del campo de errores producido, antes de enviar el codigo de error correspondiente, si esta situacion es detectada se puede llegar a desactivar la tarjeta con el objeto de evitar que el decremento del contador se produzcaExisten dos posibles soluciones para esto, la primera es incrementar siempre el valor del contador antes de comparar el valor de la clave, que sera decrementada si la clave es correcta.
Todos  los esfuerzos realizados por el sistema operativo para proteger a la tarjeta contra ataques externos pueden ser insuficientes, por esta razon resulta necesario definir algun tipo de seguridad propio de la aplicacion.La primera solucion es manejar un conjunto de tarjetas cuyo numero de serie sea unico que se puede complementar con una lista de las tarjetas cuyo funcionamiento sea dudoso.Algunas de las tecnicas descritas para evitar ataques se fundamentan en la repeticion de una misma experiencia hasta que esta genere un valor correcto, por esta razon se suele imposibilitar  el intento de ejecutar una instruccion on adecuada.Los ficheros de protocolo asociados a una  aplicacion en el que aparecen las incidencias asociadas a una sesion, facilitan la seguridad de la aplicacion, de este modo se mantiene la integridad de la informacion almacenada en la tarjeta.El cifrado de la informacion es una herramienta basica pero no puede ser utilizada en exceso, ya que su uso indiscriminado para ralentizar el funcionamiento de la tarjeta.Su uso se debe restringir a la transmision de las claves y al proceso de autentificacion que controlan el acceso adecuadamente.
 

Cifrado de informacion

Desde el principio de los tiempos el cifrado ha sido utilizado para proteger la transferencia de informacion confidencial.Su utilizacion en una tarjeta inteligente permite aumentar la seguridad del sistema.El campo de la ciencia que estudia este tema es la criptologia, dentro del cual se encuntra el campo de la critografia, que estudia metodos para el cifrado y descifrado de la informacion.Otro campo es el del criptoanalisis, en el que se estudian tecnicas para el desccifrado fraudulento de mensajes.
Los sistemas criptograficos poseen el objetivo de la seguridad y la autenticidad.Los sistemas actuales se basan en el principio de Kerckhoff, que afirma que la seguridad de un algoritmo se encuentra en la seguridad de la clave y no en el propio algoritmo, es por ello que la mayoria de algoritmos estan publicados e incluso patentados, ya que su confidencialidad es fundamental.Aplicando esta norma aparecen tres tipos de datos en un algoritmo de cifrado, el mensaje original, el cifrado y la clave.
Las operaciones que pueden aparecer en un sistema criptografico son:

        -Cifrado de informacion: en el que se obtiene el mensaje cifrado utilizando una clave y el mensaje    original.
        -Descifrado de informacion: Que tiene como objeto la obtencion del mensaje original a partir de una clave y el mensaje cifrado
        -Funcion de Resumen: Cuyo objetivo es la obtencion de una version mas compacta del mensaje original mediante la utilizacion de una clave.

El cifrado y descifrado de informacion estan relacionados de modo que todo algoritmo de cifrado tiene un algoritmo de descifrado asociado, que a veces es el mismo.

Existen diferentes tipos de algoritmos que se diferencian por el numero y modo en el que se utilizan las claves:
    -Sistemas simetricos.
    -Sistemas asimetricos.
 

Sistemas simetricos

La simetria de estos sistemas se fundamentan en el hecho de que el cifrado y el descifrado de informacion
utilizan la misma clave, es por ello que la confidencialidad de la clave resulta basica para asegurar la seguridad de estos sistemas, que solo debe ser conocida  por el emisor y el receptor del mensaje.Por esta razon, estos sistemas se aseguran los dos objetivos basicos de estos sistemas; La seguridad aparece por la privacidad de la clave, y si el receptor sabe descifrar el mensaje, sabe que ha sido enviado por el emisor.
El manejo de las claves es basica , ya que ellas aportan al sistema seguridad y autenticidad.Por tanto su intercambio debe realizarse del modo mas seguro posible.Otro problema es el numero de claves  que son necesarias para conectar todos los usuarios  de un sistema.
El  sistema simetrico mas comun es el DES o estandard de difrado de datos, que cifra bloques de 8 bytes.La clave tambien es un bloque de 8 bytes, cada uno de los cuales contiene un bit de paridad , por lo que el numero de claves distintas es 256 .Dicho sistema se basa en dos operaciones, la primera es la de confusion, que intenta desligar los valores estadisticos de los caracteres del mensaje original y del cifrado, mientras que la segunda es la difusion, en donde el resultado depende del mayor numero de bits del valor inicial.Existen cuatro modos de funcionamiento de este sistema , pero destacan dos, que son el Libro de Codigos Electronicos (ECB), en el que cada bloque de datos se cifra de modo independiente.El segundo tipo es el cifrado de bloques encadenados (CBC) , en el cual el cifrado de bloques depende del cifrado de los anteriores.
Para aumentar la seguridad del sistema , se definio una variable del metodo, llamada triple-DES , cuyo objetivo es unir fases de cifrado.Las propiedades algebraicas del sistema obligan a que esta union intercale cifrados y descifrados.
 

Sistemas asimetricos

Estos sistemas utilizan dos claves distintas para el cifrado y descifrado de la informacion.Cada usuario de estos sistemas poseen dos claves diferentes, la primera es la clave privada y es solo conocida por el usuario, mientras que la segunda es la clave publica y es conocida por todos los usuarios que pueden recibir el mensaje, por lo que tambien se les denomina sistemas de clave publica.
El uso de estos sistemas solo pueden asegurar uno de los objetivos de la criptografia.Si el emisor usa la clave publica del receptor, el mensaje solo puede ser descifrado por este, aunque puede haber sido enviado por cualquier emisor, mientras que si utiliza su clave privada se asegura que el mensaje solo puede haber sido enviado por el emisor, pero puede ser descifrado por cualquier receptor.Para conseguir tanto la seguridad como la autenticidad resulta necesario aplicar dos procesos de cifrado, cada uno asegurando uno de los objetivos anteriores.

El sistema que se suele usar es el sistema RSA , que se fundamenta en la aritmetica de grandes numeros enteros y sobretodo en la dificultad de factorizar el producto de dos numeros grandes que son primos.Tanto el cifrado como el descifrado de la informacion se realiza del mismo modo, en primer lugar se calcula la exponencial respecto de una de sus claves.Posteriormente se aplica el modulo definido por el producto de dos numeros primos.El producto utilizado en la operacion modulo tambien es un valor publico que se relaciona con el valor de las claves.El coste de estas operaciones suele ser alto, aunque se puede resolver con circuiteria de uso exclusivo.
En concreto las claves se calculan primero obteniendo dos numeros primos p y q, y con ellos su producto es n.La clave publica es el numero que cumple que el maximo comun divisor respecto de z=(p-1)(q-1) es 1, y la clave privada d cumple que el modulo respecto de z del producto d por e es 1.
Este metodo funciona para cualquier tamaño de la clave , por lo que se suele utilizar claves muy grandes que aumenten la seguridad.
 

Funcion de resumen

En algunos casos resulta interesante obtener una version reducida de un mensaje, como en el caso de las firmas digitales.Dado un mensaje que puede tener cualquier tamaño, las funciones de resumen obtienen un valor de tamaño fijo, y para que estas funciones sean eficientes es necesario que cumplan las propiedades de longitud fija del valor resultante, tambien la sencillez del calculo dal valor resultante, lo que permitira aumentar su rendimiento, otras propiedades a cumplir son que sea irreversible e imposible de obtener el mensaje original desde el valor resultante en la funcion resumen, tambien tiene que ser resistente a las colisiones.
Estas funciones pueden sufrir dos ataques, dado un mensaje con un valor resultante se busca otro mensaje con sentido que tenga el mismo valor resultante.El segundo ataque es definir dos mensajes que tengan el mismo valor resultante con la inclusion de caracteres especiales y alternar el envio de cada uno, este ultimo es mucho mas efectivo ya que los dos documentos son conocidos de antemano.
 

Autentificacion

El objetivo de este proceso es la identificacion de uno de los participantes en un dialogo por el otro participante.La base del proceso es una informacion que es secreta y comun a ambos participantes.En este ambito se refiere a la identificacion de la tarjeta o del terminal, y se fundamenta en un intercambio de informacion entre ambos.existen varios tipos de procesos, los mas comunes son:

        -Simetrico unidireccional:
En este caso se desea identificar a uno de los participantes que tienen en comun la clave utilizada en la transmision de informacion.
La parte que desea identificar genera un numero aleatorio y lo envia, entonces la otra parte cifra el numero y lo envia, el valor recibido es descifrado y comparado con el valor original.Dado que este numero es aleatorio, se imposibilita la grabacion externa de la sesion, con el objeto de replicarla.La seguridad esta en la clave sobre la cual hay que incluir mecanismos de seguridad.El primero es utilizar una clave individualizada para cada tarjeta, de este modo se evita que su descubrimiento revele todo el sistema y normalmente esta clave puede ser calculada por el terminal a partir del numero de serie de la tarjeta que es unico.Tambien es habitual que parte del numero de serie es la version cifrada de la clave utilizada en este proceso mediante la utilizacion de la clave maestra , que solo es conocida por el terminal.Por lo tanto la seguridad de la clave maestra es basica para un correcto funcionamiento de la autentificacion.

        -Simetrico bidireccional:
Esta doble identificacion se podria realizar mediante el desarrollo de dos procesos simetricos unidireccionales, pero el coste temporal seria demasiado alto para considerar esta posibilidad.Ademas se puede comprobar que el sistema es mas seguro , ya que desde el exterior no se puede interferir las dos fases del proceso.
El terminal obtiene el numero de serie de la tarjeta para calcular su clave, tambien genera un numero aleatorio n1, y solicita un numero aleatorio de la tarjeta n2 el terminal luego cifra la concatenacion de n1 y n2 y envia el resultado a la tarjeta, luego la tarjeta descifra el mensaje y compara el valor de n2 con el valor local de n2, la tarjeta cifra la concatenacion de n2 y n1 y envia al terminal el resultado, por ultimo el terminal descifra el mensaje y compara el valor de n1 con su valor local.
Una mejora al anterior sistema es el envio  , por parte de la tarjeta del numero aleatorio y del numero de serie en un unico mensaje.

        -Asimetrico estatica:
La utilizacion de una autentificacion asimetrica resulta interesante , ya que en su violacion es necesario localizar dos claves.El coste de la inclusion de una unidad para el cifrado asimetrico en una tarjeta inteligente, aconsejo en un primer momento la utilizacion de una autenticidad estatica.El funcionamiento es el siguiente, en la tarjeta se almacena una informacion y su cifrado mediante un sistema asimetrico,el terminal puede leer ambos valores con el objeto de verificar su validez mediante la utilizacion de una clave publica.
Uno de los problemas basicos de este sistema es que puede ser reproducido, reduciendo el nivel de seguridad, ademas se plantea el problema de la clave elegida en su desarrollo, si siempre se utiliza la misma clave publica, y la clave privada asociada es descubierta, todo el sistema es descubierto, asi que la mejor opscion es utilizar pares de claves diferentes para cada tarjeta.

        -Asimetrico dinamica:
Si la inclusion de una unidad para el cifrado asimetrico no presenta un coste demasiado alto, resulta aconsejable la utilizacion de una autentificacion dinamica, en estos casos el terminal genera un numero aleatorio que se convierte en un punto de inicio del proceso, dicho numero aleatorio es cifrado en la tarjeta utilizando la clave privada y posteriormente enviando al terminal.el terminal solo tiene que descifrar el mensaje utilizando la clave publica correspondiente y comprobando el resultado con el numero que el habia generado.Este sistema se puede implementar , tanto si existe una unica pareja de claves , como si existe una pareja asociada a la tarjeta.
 
 

Firma digital

Cuando la informacion se transmite a traves de cualquier medio electronico, resulta necesario verificar que dicha informacion no es alterada , y la utilizacion de la firma puede resolver este problema , aunqeu su definicion debe variar.En este ambito se entiende como un bloque que se añade al propio mensaje, y que el receptor puede  volver a calcular para verificar la autenticidad del mensaje.La firma debe permitir verificar acualquiera de sus receptores que el mensaje proviene del emisor y que no se ha modificado.Por esta razon el valor de la firma depende del contenido del mensaje y de un valor que solo es conocido por el emisor.Ambos criterios pueden ser cubiertos mediante la utilizacion de un sistema criptografico que utilice una clave que solo sea conocida por el emisor del mensaje.La utilizacion de un sistema asimetrico es mas versatil ya que la firma podra ser verificada por cualquier receptor que posea la clave publica del emisor, mientras que los mensajes asimetricos solo permiten verificar la autenticidad del mensaje a los recptores que conozcan la clave

En los sistemas simetricos la versatilidad es menor ya que el mensaje solo puede ser verificado por un numero reducido de receptores, por esta razon los bloques obtenidos cuando se utilizan estos sistemas se suelen denominar simplemente firmas o tambien codigos de autentificacion de mensajes.El sistema mas comunmente utilizado es el DES en modo CBC, ya que presenta un nivel de difusion mas amplio y por tanto los cambios son mas complejos.Dado que el tamaño de la firma modifica el coste de comunicacion del mensaje, resulta interesante reducir al maximo su tamaño.Con este fin la firma solo contiene los ultimos 4 bytes del ultimo bloque cifrado por el sistema de cifrado, esta informacion es mas que suficiente para la verificacion del emisor del mensaje.EL problema se presenta cuando en el dialogo aparecen mas de dos comunicaciones , ya que cualquiera de ellos puede ser el emisordel mensaje.Por esta razon , resulta necesaria la existencia de una clave para cada una de las posibles comunicaciones.

En los sistemas asimetricos  la utilizacion de estos sistemas da lugar a las firmas digitales propiamente dichas, y tambien en estos sistemas es importante reducir al maximo el tamaño de la firma.En este caso la solucion mas interesante es la utilizacion de una funcion resumen.El emisor aplica la funcion de resumen sobre el mensaje y cifra el resultado mediante la utilizacion de su clave provada que es la firma.El emisor envia el mensaje y su firma, entonces el receptor aplica la funcion de resumen al mensaje y descifra la firma comparando los dos valores resultantes.
Ademas del sistema RSA tambien es posible utilizar otros tipos de sistemas para generar una firma digital.Uno de ellos es el algoritmo de firma digital o DSA que no puede utilizarse para el cifrado de informacion.

Manejo de claves

En los sistemas de cifrado de informacion que se utilizan en los procesos de autentificacion y de firma digital, es importante el uso de claves, y la privacidad de estas resulta basica por lo que el desarrollo de tecnicas que la aumenten son fundamentales.
Una tecnica comun para preservar la privacidad de las claves son las llamadas claves derivadas.Las tarjetas inteligentes pueden sufrir un analisis profundo lejano al terminal que puede llegar a descubrir su conjunto de claves.Si la tarjeta no posee una clave maestra que permita un control completo, dicho analisis es menos productivo, en estos casos la clave maestra aparece en el terminal, y las claves de la tarjeta se obtienen a partir de la clave maestra y de informacion propia de la tarjeta com oel numero de serie.Para el calculo de la clave suele utilizarse un algoritmo de cifrado como el DES o tambien el triple DES.
Otra tecnica es la basada en multiples claves y versiones de claves.En la multiplicacion de las claves se asigna para cada uno de los procesos que utilicen sistemas de cifrado, normalmente cada clave se obtienen de una clave  maestra, para aumentar el nivel de seguridad.La privacidad de una clave maestra no es eterna y dado que de su valor dependen las claves de todo un sistema resulta fundamental la actualizacion de su valor.Dicha actualizacion puede realizarse cuando la clase resulta comprometida , o mediante una planificacion predefinida.