12 marzo 2012

Análisis de USB cifrado: Kingston DataTraveler 6000




Cada vez es más frecuente leer noticias en las que saltan las alarmas porque se hace público un gran secreto industrial o datos personales de clientes/usuarios que viajaban en un pendrive USB que ha sido extraviado. Normal que se pierdan, los hacen tan tan pequeños!!!

Uno de los consejos que solía dar siempre es que los datos sensibles que llevásemos en nuestro pendrive, fuesen en un contenedor cifrado. Para ello recomendaba herramientas como Truecrypt o Bestcrypt.

De esta manera, cada vez que queramos leer o escribir en la parte cifrada del pendrive, deberemos montar el contenedor con el software correspondiente. Esto implicará que si utilizamos el pendrive en un ordenador que no es el nuestro, habrá que llevar la versión Windows/Linux/Mac del software de cifrado correspondiente.

Desde hace tiempo, existe en el mercado diferentes modelos de pendrives USB que incorporan una partición sin cifrar, de sólo lectura, con software para montar un volumen interno que almacena contenido de forma cifrada.

El caso del pendrive que analizamos es el Kingston DataTraveler 6000, que cifra los datos con AES 256 y ECC. Para ello, incluye un chip que realiza de forma autónoma las operaciones criptográficas de cifrado. Además cumple la normativa FIPS 140-2 Nivel 3.

Al insertarlo en mi Mac, aparece el contenido de la partición de sólo lectura, con el software para Windows y Apple, así como un manual de usuario.



Al iniciar la aplicación para Mac, detecta que el pendrive nunca ha sido inicializado, y nos guía para ello.


Aceptamos el EULA


Introducimos una contraseña para acceso al dispositivo.


Dicha contraseña tiene que cumplir unos requisitos mínimos de complejidad... Hasta 128 caracteres!


Introducimos información de contacto para que si alguien se lo encuentra, me lo devuelva (ingenuo de mí...)


Una vez montada la partición cifrada aparece, además, el nuevo volumen.


Cada vez que lo tengamos que volver a montar, al ejecutar el programa de gestión para Mac, nos pedirá la contraseña que introdujimos.



Y por fin ya tenemos acceso a nuestras cositas confidenciales que nadie más debería poder ver si extraviamos el pendrive




Por otra parte, he querido comprobar el rendimiento del dispositivo, si lo comparamos con un contenedor cifrado con Truecrypt, contenido en un pendrive cualquiera. 

Para ello hice un dd de 1 GB del mismo fichero en ambos casos. Los resultados son los siguientes:

En un contenedor Truecrypt en un pendrive normal


dd bs=1024 count=1000000 if=./BT5R2-GNOME-64.iso of=/Volumes/NO\ NAME/algo_de_1_GB.iso
1000000+0 records in
1000000+0 records out
1024000000 bytes transferred in 96.499814 secs (10611419 bytes/sec)

En Kingston Datatraveler 

dd bs=1024 count=1000000 if=./BT5R2-GNOME-64.iso of=/Volumes/KINGSTON/algo_de_1_GB.iso
1000000+0 records in
1000000+0 records out
1024000000 bytes transferred in 175.302194 secs (5841342 bytes/sec)
Como se puede ver, incluso es bastante más rápido utilizar un contenedor Truecrypt que el pendrive autocifrado.

Como ventaja añadida al dispositivo Kingston, hay que decir que el dispositivo trae configurado, de fábrica, un sistema de autodestrucción de los datos si se introduce 10 veces una contraseña de desbloqueo incorrecta. De esta forma, evitamos ataques basados en fuerza bruta o diccionario que sí que son posibles (aunque dudo de su efectividad) en contenedores Truecrypt con herramientas como Passware Kit Forensic.

Estoy seguro que si Chema Alonso hubiera tenido custodiada la versión de la FOCA en uno de estos, no habría sufrido aquel "incidente de seguridad".

8 comments :

Rodrigo Moreno dijo...

Justamente me habéis leído la mente he estado viendo algunos pendrive que incluyan cifrado y vi este, ahora me has convencido de comprarlo.

drey dijo...

En mi opinion se ha quedado un poco corto  el analisis. Fotos del bicho abierto? Estan realmente cifrados los datos , es verdaderamente el hardware quien lo hace?  El bloqueo y "autodestruccion" es el firmware quien lo hace o el software cliente?

... dijo...

Y si substituyes el programa de gestión por un keylogger que imite apariencia y se lo devuelves al dueño?

Lorenzo_Martinez dijo...

Pues que quieres que te diga Dreyer. La verdad es que por lo que ví, Linux detecta dos /dev/sdX. El primer dispositivo sólo puede montarse en modo Read-Only. Cualquier intento de leer algo del segundo dispositivo es inútil con herramientas normales. Fdisk -l devuelve vacío, un dd if=/dev/sdc of /tmp/algo también me devuelve un error de lectura.

Imagino que con herramientas como las que comentaron Vierito y Esanfeliz en Rooted se podría acceder al contenido de la memoria USB de alguna otra forma. Otra opción es desmontar el cacharro, pero, sinceramente, prefiero poderlo seguir utilizando :D

Respecto a quién destruye los datos, imagino que será el propio firmware quien lo hace tras 10 veces de llamadas incorrectas a su API.

Lorenzo_Martinez dijo...

 La partición con el soft cliente sólo se puede montar, inicialmente, como solo lectura... No parece trivial modificar esa partición, quizá con herramientas como las que comentaba Dreg en http://www.securitybydefault.com/2011/04/usb-con-unidad-de-solo-lectura-caso.html podría borrar la partición. No sé si sería posible recrearla con formato Read-Only de nuevo y con "mi soft modificado" para engañar al usuario, pero no voy a arriesgarme a inutilizar este pendrive. El análisis no pretende poner en riesgo su integridad :D

John Doe dijo...

Lorenzo, te centras en que la partición de sólo lectura no se puede (en principio) modificar, pero creo que la pregunta de @... no es relativa a modificar esa memoria.

A lo que entiendo que se refiere es a no montar esa partición y ejecutar desde local un SW con la misma apariencia e indicarle que meta su contraseña para grabar sus credenciales.

Para esto yo usaaría directamente un keylogger de teclado pero bueno. 

Para que la autenticación fuese segura debería ser out-of-the-box y realizarse directamente en el dispositivo, aunque claro, las medidas de protección a implantar deben ser acordes al nivel de criticidad de los datos a proteger, es decir, no es lo mismo proteger tus fotos de veranos con el bañador de Borat que el lanzamiento de un nuevo producto de tu compañía (por supuesto lo primero es MUCHO más crítico)

Saludos.

John Doe dijo...

Le he estado echando un ojo y tiene muy buena pinta.

- La comunicación con la memoria también se hace a través de un canal cifrado con AES ¿CBC?, el cual se establece con Curvas Elípticas.
- El cifrado es AES-XTS (256) el cual para acceso aleatorio en vez de secuencia es MUCHO más óptimo.
- Usan una FPGA en vez de un procesador para el cifrado lo cual le da MUCHO más rendimiento.
- Existe una clave maestra que sólo puede ver el Crypto Officer (entiendo q alguien de Kingston) y que se debe autenticar por una clave firmada con ECDSA (esto creo que es un contra y no un pro).

No me queda claro que curva usan para el ECDH ni que clave usan para el cifrado del canal (he hecho una lectura rápida) pero con que los mínimos que ponen (P.256 y AES 128) creo que es suficiente.

Sólo veo 3 inconvenientes:
 - La autenticación requiere de un S.O. independiente del dispositivo (leer mi anterior comentario).
 - No es tamper-response, "sólo" es tamper evidence, por lo que si lo pierdes y alguien le da por abrirlo "sólo" tendrá que quitar la resina y actuar directamente sobre el HW.
 - El precio.


En general MUY buen cacharro aunque algo caro.

tiritutirutirutirititraun dijo...

Hola.

Las pruebas que haces con dd no tienen demasiada validez si no les añades un "oflag=direct". Sin este parámetro cuando el dd termina no tienes garantía alguna de que el kernel haya, efectivamente, escrito en el pendrive todos los datos. De hecho muy probablemente estarán en memoria aún.

Por otra parte el hecho de que uses dos pendrives diferentes también es un problema. ¿O es el mismo pendrive cifrado nativamente/ con truecrypt ?

Saludos,
Salva