Las tarjetas inteligentes o SmartCards son pequeños dispositivos de las dimensiones de una tarjeta de crédito que contienen una memoria electrónica y posiblemente in circuito integrado (IC).
A pesar de su reducido tamaño estas tarjetas permiten almacenar información, encriptarla y así evitar su lectura por parte de personas no autorizadas. Otra característica destacable es que para poder utilizarse es necesaria una clave de acceso o PIN. Esto las hace ideales para almacenamiento y procesamiento de datos confidenciales.
Estos pequeños dispositivos están en auge en la actualidad, por el alto rendimiento que ofrecen tanto en fiabilidad como seguridad y su uso esta muy extendido en varias aplicaciones: instituciones médicas, bancos, DNI electrónico...
Precisamente debido a este auge, han surgido estándares como el PC/SC que facilitan el desarrollo con estos dispositivos ya que permite abstraerse del diseño físico de los mismos. Incluso podemos ir más alla, y encontramos bibliotecas software que permiten escribir código que funcione con cualquier tipo de tarjeta y de lector. Por ejemplo el Open Card Framework.
Un par de ejemplos en JAVA que demuestran lo fácil que es trabajar con la OCF:
Precisamente debido a este auge, han surgido estándares como el PC/SC que facilitan el desarrollo con estos dispositivos ya que permite abstraerse del diseño físico de los mismos. Incluso podemos ir más alla, y encontramos bibliotecas software que permiten escribir código que funcione con cualquier tipo de tarjeta y de lector. Por ejemplo el Open Card Framework.
Un par de ejemplos en JAVA que demuestran lo fácil que es trabajar con la OCF:
//Para obtener el ID de la tarjeta:
CardID cardID = smartCard.getCardID();
//Para enviar un comendo a la tarjeta:
PassThruCardService ptcs = (PassThruCardService) smartCard.getCardService(PassThruCardService.class, true);
CommandAPDU command = new CommandAPDU(5+numDatos);
ResponseAPDU response;
//Creamos el comando
command.setLength(0);
command.append(LECTURA_MEMORIA_PRINCIPAL);
command.append((byte) comienzo);
command.append((byte) numDatos);
//Enviamos el comando y obtenemos la respuesta del dispositivo
try{
response = ptcs.sendCommandAPDU(command);
return response.getBytes();
} catch (CardTerminalException e) {
System.err.println("Excepcion: '" + e.getClass() + "' - " + e.getMessage() );
return null;
}
No hay comentarios:
Publicar un comentario