28 septiembre 2009

E-Pasaporte (mitos y leyendas)

Una de las cosas que mas profundamente me molesta es leer o escuchar a gente criticar cosas de las que en realidad sabe poco, y cuya única fuente de información son documentos de corte sensacionalista que únicamente contienen titulares al estilo 'El Pasaporte electrónico es inseguro' o 'RFID es una tecnología insegura'

Como ejercicio didáctico propongo que cualquiera que escuche un comentario así, acto seguido pregunte: '¿Cuando hablas de RFID, podrías decirme a que frecuencias te refieres?' y '¿Perdona, me podrías indicar al menos 3 protocolos RFID que conozcas?' Si el interlocutor duda en las respuestas, estamos ante otro caso de 'yo es que leí en nosedonde que ...'

Conste que yo no estoy defendiendo nada, de hecho me he propuesto escribir este post basado en certezas y pruebas sobre MI pasaporte, las conclusiones las dejo para cada cual.

Para realizar este pequeño estudio utilicé un lector RFID de la marca Omnikey Cardman y me valí de las estupendas librerías / herramientas de RFIDIOT, que, por cierto, es una pena que el autor haya elegido tan desafortunado nombre ya que son, en mi opinión, las librerías mas completas, mas fiables y útiles para trabajar con RFID y creo que el nombre puede dar lugar a equívocos.

Voy a obviar en este post los datos mas academicistas sobre las implementaciones ICAO del pasaporte electrónico, ¿por que? básicamente porque pretendo que resulte ameno y creo que el artículo de la Wikipedia es lo suficientemente avanzado para el que quiera meterse en nomenclaturas e ir a la parte low-level.

Punto uno: ¿Que contiene el E-pasaporte?

Mucha gente confunde y mezcla e-pasaporte con DNI Electrónico y son conceptos absolutamente diferentes. El DNI Electrónico está orientado a la identificación 'fuerte' de una persona y proveer de una herramienta que permita asegurar la integridad de unos datos en nombre de la persona que los firma. El Passaporte está orientado a proveer ciertos datos y a asegurar que esos datos son fidedignos. Mas claro: con el DNI puedes identificarte y decir 'yo soy Juan', con el E-Passaporte alguien dice que tu eres Juan.

Otro mito sobre el e-passaporte es su contenido, haciendo uso de la estupenda herramienta que viene con RFIDIOT llamada 'mrpkey' se puede leer el contenido completo del pasaporte, y lo que hay es:
-Tu nombre y apellidos
- DNI
-País de nacimiento
-Fecha de nacimiento
-Certificado de la CA raíz de la Policía Nacional
-Certificado de la CA subordinada de la Policía Nacional
-Una foto
-La firma digital de los datos identificatívos (hecha por la CA subordinada)


Punto Dos: ¿Cualquiera puede leer mi Pasaporte?

NO ! Para acceder al contenido del pasaporte hace falta una clave de acceso, y esa clave de acceso está impresa en el pasaporte en lo que se conoce como 'Machine Readable Zone' [Mrz] que va impresa en la hoja donde aparece tu nombre y tu foto.

Un ejemplo de un pasaporte Belga:

Entonces, lo que se hace para leer el contenido del pasaporte en los puntos de control, es ponerlo frente a un lector OCR que 'lee' ese campo y lo usa como clave para autenticarse frente al chip RFID y extraer los datos. Evidentemente los datos 'en transito' (Lector RFID <--> Pasaporte) van debidamente cifrados y, si bien puntualmente en algunas implementaciones se encontraron fallos, que yo sepa en España no se ha dado el caso.

Así que, de entrada, el mito de que un señor en el metro con un portátil y un lector obtiene tus datos privados ... bye bye

Punto tres: ¿Se puede clonar los datos de un E-Pasaporte?

Si, una vez eres capaz de leer su contenido es perfectamente posible hacer una copia valida empleando una tarjeta RFID de tipo 'Java Card'.

Pero ojo, una cosa es clonar y otra cosa es ALTERAR esos datos y que permanezcan validos. Toda la información que contiene el chip RFID está firmada digitalmente por la PKI de la policía nacional (tecnología estándar, claves RSA, firmas digitales ...) por tanto, si modificas por ejemplo la foto, a la hora de verificar la información, la verificación saldrá negativa, lógico ¿no?

Y ahora alguien salta: 'Pero yo escuché que habían clonado un Pasaporte con la foto de Bin Laden' (y además mientras lo dice, se ríe)

Fue un caso que se promovió de una forma especialmente sensacionalista y el hecho, sucedió ... pero si vamos un poco mas allá del titular, el asunto tiene una explicación lógica. Como decíamos antes, todos los datos del pasaporte van firmados digitalmente por una CA, y como bien sabéis, para realizar una verificación de un dato firmado digitalmente, es necesario disponer del certificado del firmante y de la CA raíz. Por ejemplo, todos sabemos que los navegadores contienen un almacén de certificados que permite realizar las verificaciones SSL.

¿ Y que pasa cuando eres la Unión Europea y tienes que realizar una acción coordinada entre múltiples países ? Que la haces mal, en este caso no se habían distribuido los certificados de las CAs raíces de los distintos países miembros a los puntos de fronteras. ¿Resultado? que únicamente se verificaba que el pasaporte tuviera los datos con el formato correcto, de esa forma podías crearte un pasaporte de 'YJ-Land' y al llegar al punto de control, se verificaba únicamente que el pasaporte tuviera tu nombre, dni, etc etc y que hubiera una firma digital, lo que dio lugar al caso 'pasaporte Bin Laden'.

Lo divertido del asunto es que, creo, a día de hoy ese tema no está resuelto pese a que existe un directorio público en el que 'en teoría' deben estar los certificados de las CAs.

Y ahora que cada cual opine

6 comments :

Román Ramírez dijo...

Cuando comentas que no puedes acceder al contenido del pasaporte sin la clave... ¿quieres decir que no se puede leer en forma alguna el contenido sin ella? Es decir, que el chip tiene una lógica y una capacidad "activa" de determinar que la clave es o no correcta y decide no enviar un chorro de datos... o te refieres a que, "recibes los datos pero sin la clave correcta no los puedes interpretar"? :)

¿Y la clave qué longitud tiene? Y si los datos están cifrados en el pasaporte o "chorro de datos leídos por rf"... ¿con qué algoritmo?

¿Necesito modificar datos del pasaporte para utilizarlo? ¿No basta con que me parezca levemente a la persona de la foto?

Sin entrar en discusiones sobre el papel albal en la cabeza... yo sí veo muchas pegas al hecho de que alguien pueda hacer una lectura remota de mis datos de identidad "oficial".

Yago Jesus dijo...

Hola Roman, dejando a un lado que nada es al 100% y que nada está a salvo de que se implementen técnicas para eludir protecciones ... En princpio lo que debe hacer el lector RFID es autenticarse contra el Passaporte (si no hay autorizacion, no hay acceso a ningun dato) y la comunicación emplea 3DES para cifrar los datos. El chip RFID es parecido a un chip de una smartcard, ya que es capaz de hacer tareas criptográficas. La longitud total del string de conexión que debes enviar es de 40 caracteres, pero de esos solo 22 forman parte de la clave (un numero aleatorio para cada pasaporte + tu fecha nacimiento + fecha expiración del pasaporte. Otra cosa que, tal vez, me he dejado por decir es que, cada vez que el lector 'habla' con el pasaporte, el pasaporte se identifica con un UID aleatorio, de forma que a priori, no puedes asociar ID con persona, es decir, no puedes hacer 'tracking' de mi pasaporte puesto que en cada sesión cambia el identificador.

primolarry dijo...

Hola Yago,

¿Sabes si el pasaporte americano también cifra los datos?Lo digo porque al menos en 2004,parece que no lo hacía.

http://www.privacylawyer.ca/blog/2004/10/bruce-schneider-on-rfid-passports.html

Saludos

Román Ramírez dijo...

Me parece interesante el mecanismo. Luego el chip es activo y funciona como un chip smart.

Al margen de toda consideración sobre longitudes de claves, predictibilidad de la clave etc., ¿no hay forma de que "al paso" (es decir, acechando) obtengas el contenido de los datos para hacer criptoanálisis posterior?

Tal y cómo lo describes sí tiene pinta de ser bastante seguro (insisto, al margen de consideraciones sobre si la clave es o no fuerte).

Yago Jesus dijo...

@primolarry No me carga el link que has dejado, no obstante no he tenido oportunidad de 'tocar' un pasaporte americano, aun así se que no es como el Europeo.

@Román Ramírez: Sobre el papel, si no haces 'login' en el chip no deberías obtener ningún dato, la única forma es descubriendo un fallo en la implementación (que, supongo, esa posibilidad siempre estará ahí)

akae dijo...

Buena explicación. Parece que por lo menos parte del sistema se hace "a derechas". Ahora falta que las aduanas se pongan de acuerdo con las entidades certificadoras, aunque creo que en España eso puede ir para largo... véase los certificados de la FNMT, red.es o de otros organismos oficiales que ni vienen en los navegadores.
PD: curioso, el captcha que me ha salido es petar