Limited Entropy Dot Com Not so random thoughts on security featured by Eloi Sanfèlix

15Nov/075

Smart cards: Introducción

Puesto que este cuatrimestre estoy haciendo una asignatura basada al 90% en smart cards, aprovecho para contar aquí algunas cosillas de las mismas que tal vez resulten de interés :). En este primer artículo veremos qué es exactamente una smart card, comentando sus principales bloques funcionales y para qué se pueden utilizar. Más adelante comentaré algunas peculiaridades de la programación de smart cards usando la plataforma JavaCard.

Arquitectura típica de una smart card

Básicamente una smart card es un computador embedido en un pequeño chip, capaz de almacenar y procesar de forma segura datos. Generalmente se divide en varios tipos de smart cards, en función de sus posibilidades:

  • Tarjetas de memoria: almacenan datos que pueden ser leídos a posteriori, posiblemente con cierto control de acceso o con mecanismos de memoria destructiva ( write-only ). Toda la funcionalidad de estas tarjetas está en una memoria ROM, de forma que siempre responden de la misma forma a una instrucción (leyendo la dirección de memoria correspondiente).
  • Tarjetas con microprocesador: Además de almacenar información, estas tarjetas incorporan un microprocesador para el tratamiento de dicha información mediante el software correspondiente.

A veces se incluye (vease tarjetas inteligentes en wikipedia) otro tipo de tarjetas llamado tarjetas criptográficas, que incluye además un coprocesador criptográfico capaz de realizar cifrado utilizando por ejemplo RSA, DES o triple DES. Sin embargo yo este tipo lo incluiría en el grupo de tarjetas con microprocesador.

Aquí me centraré en las tarjetas con microprocesador, puesto que las podemos programar y son capaces de ofrecer funciones de seguridad bastante interesantes. Generalmente estas tarjetas llevan 3 tipos de memoria:

  • ROM: Incluye el sistema operativo de la tarjeta.
  • EEPROM: El disco duro de estas tarjetas.
  • RAM:Espacio de trabajo donde encontramos la pila, variables temporales como claves criptográficas válidas durante la sesión actual, etc.

Según los datos que yo tengo de la asignatura HW & OS Security , una tarjeta actual típica puede tener unos 512 bytes de RAM, 16K de ROM y 64K de EEPROM. En principio se usaban SO propietarios y cada tarjeta se programaba con su propia API en C, pero actualmente existen sistemas como JavaCard que ofrecen una API común que los fabricantes pueden implementar en sus tarjetas. Más adelante veremos cómo realizar aplicaciones básicas con JavaCard ;).

Aplicaciones de las smart cards

Para finalizar con este post introductorio simplemente voy a comentar algunas de las aplicaciones comunes de las smart cards.

  • Firma digital: Puesto que las tarjetas son capaces de realizar funciones criptográficas, pueden utilizarse para firmar documentos digitalmente. Simplemente se almacenan en la tarjeta las claves criptográficas correspondientes al usuario (clave privada RSA por ejemplo) y cuando se le pasa un documento a la tarjeta ésta lo firma. El problema que puede surgir aquí es que realmente no sabemos lo que se está mandando a la tarjeta para firmarlo, así que habría que autenticar de alguna forma el terminal usado.
  • Dinero electrónico: Se pueden utilizar estas tarjetas como monedero electrónico. Por ejemplo, en Holanda tienen el sistema Chipknip.
  • TV de pago: televisiones como Digital+ utilizan este tipo de tarjeta para identificar al usuario. La tarjeta se introduce en el decodificador y con ella se tiene acceso al contenido de pago, mediante claves de cifrado contenidas en la tarjeta.

Posted by Eloi Sanfèlix

Comments (5) Trackbacks (1)
  1. Pinta interesante el tema y la verdad es que conozco CERO de este tema.

    😛 En el portátil tengo chip TPM y para SmartCards si quieres a un betatester…xD

  2. Compañero yo tambien estudio las smartcard me gustaria ponerme en contacto con tigo.

  3. hola, queria saber si tenes información sobre la programación de las smart cards para el pic16f877, contestame al mail por favor!
    Muchas gracias

  4. Hola, estoy investigando sobre las tarjetas Smart Card, y su programación. Me he interesado en este página http://www.cardlogix.com/, hay información de las tarjetas Smart Card.
    Si tienes alguna información sobre programación de las Smart Card enviame a mi correo, te lo agradeceré mucho.
    Zarbio Rómulo Ordóñez Dávila.

  5. A person essentially help to make seriously articles I might state. This is the very first time I frequented your web page and so far? I surprised with the research you made to make this particular post incredible. Great job!


Leave a comment