Un grave fallo de seguridad en Google Walletdeja al descubierto las carencias de la tecnología NFC, según informa The New York Times. Este problema permite a un usuario sin conocimientos técnicos hacer uso del dinero acumulado en un terminal.

La raíz del problema es que la tarjeta prepago de Google está vinculada al propio aparato y no a una cuenta específica. Por lo tanto, si pierdes o vendes tu smartphone, todo lo que tendría que hacer alguien es resetear la configuración de Google Wallet e introducir un nuevo PIN para empezar a gastar tu dinero.

Así de sencillo es reventar Google Wallet. Hace tiempo estuve estudiando la seguridad en NFC, y hay que decir que es poca o nula. Soy tajante al decir que no se puede securizar una comunicación NFC de forma práctica para un usuario final. Yo jamás usaría NFC para realizar pagos, y la razón la tenemos en el elemento seguro (SE), necesario para securizar la comunicación (guarda la información del usuario, parecido al criptograma que se guarda en la tarjeta SIM de vuestros móviles y que os autentica en la red de vuestro operador).

Voy a repasar algún documento que generé mientras estudié esta tecnología. Ese elemento seguro, y ese criptograma, se puede almacenar en varios sitios:

  • Procesador de la banda base: este elemento, fundamental en los terminales móviles, puede permitir almacenar en su memoria el elemento seguro de las comunicaciones. Sin embargo, si se pierde el móvil, se estropea o se cambia por otro, el SE debe ser cambiado. Poco práctico en general.
  • Hardware embebido: proporciona la seguridad de una smartcard, cumpliendo todos sus estándares, pero no puede ser extraído del terminal. Hay que dárselo configurado al usuario, y además, para manejarlo utiliza un protocolo propietario.
  • Secure Memory Card (SMC): se trata de una tarjeta SD que se puede llevar de un móvil a otro. Da la seguridad de una smartcard, y evita compartir zonas seguras con los operadores móviles. Por otro lado, el protocolo de comunicación entre la SMC y NFC no está estandarizado. Además, no todos los terminales pueden hacer uso de estas tarjetas.
  • Universal Integrated Circuit Card (UICC): es una tarjeta SIM capaz de almacenar programas (incluso java), información y datos, así como criptogramas para el pago seguro. El problema que tiene, y por el que no se utiliza para NFC, aunque está pensado para ello, es que requiere autenticar el terminal a través de Internet al realizar cada pago. Por lo tanto no serviría para franquear los tornos del metro o realizar compras si no estás conectado por WiFi o 3G/LTE a Internet.

Dicho esto, Google ha decidido usar la opción del hardware embebido, que tiene la pega que ha provocado este fallo de seguridad (que me parece increíble que no lo hayan tenido en cuenta): que el criptograma es siempre el mismo en el terminal y no se puede cambiar sin cambiar de móvil.

Por eso, aunque Google haya puesto un PIN entre medias para poder utilizar NFC para realizar pagos, como el elemento seguro es siempre el mismo para el terminal, si cambias el PIN te haces con el control del elemento seguro y por lo tanto lo puedes utilizar. Y es ese SE el que guarda el dinero de tu monedero, y al perder o cambiar de usuario, podrán usar el dinero almacenado en el SE.

Hace tiempo que tenía curiosidad por saber cómo habían resuelto este problema (desde que vi la noticia del Google Wallet en el segundo trimestre del año pasado), y la respuesta es: no lo han solucionado.

Utilizad NFC bajo vuestra propia responsabilidad. Y perdonad si hay inexactitudes en mi opinión sobre NFC, pero podemos debatirlas en los comentarios de esta noticia (y os los agradeceré).

También se puede hackear usando un programa de fuerza bruta sobre el archivo del teléfono en el que se guarda el PIN. Con este hack, obtenemos el PIN y con ello el control sobre el dinero almacenado en Google Wallet.

Vídeo