JASoft.org

El blog de José Manuel Alarcón Aguín. Programación web y mucho más...

MENÚ - JASoft: JM Alarcón

La solución al problema de las claves seguras: NullPass+

En la actualidad utilizamos tantos servicios on-line diferentes y heterogéneos que es muy complicado gestionar todas las claves que debemos manejar. Yo mismo manejo varios centenares de claves diferentes, lo cual por si mismo es todo un reto. Pero es que además, si realmente quieres que sean seguras, deberías usar una clave compleja, larga y diferente para cada uno de los servicios que utilices.

La realidad es que, al final, la mayor parte de los usuarios hacen justo lo que jamás deberían hacer: utilizar una misma clave, sencilla y fácil de recordar, para todos los servicios. Problema resuelto para ellos, pero luego pasan "cosas extrañas".

Algunas opciones para guardar tus claves de manera segura

Lo de las claves es algo que ha mejorado bastante en los últimos años gracias a la posibilidad de loguearse en muchos sitios usando tu cuenta en algún servicio popular como GMail, Facebook o Twitter. Lo bueno de eso es que solo tienes que preocuparte de una cuenta, así que puedes tener una clave robusta que recordar. Lo malo es que en muchos sitios no es posible hacerlo, y en otros simplemente no te da la gana de darles acceso a tus datos personales en la red social de turno. Así que es poco más que un paliativo.

Otra opción cada vez más popular es usar un gestor de claves on-line como LastPass o similar. Yo personalmente no lo veo una opción. Ningún sistema está blindado en lo que respecta a seguridad y me da igual que solo se puedan descifrar las claves usando tu clave principal: tarde o temprano aparecen problemas.

También existen gestores de claves seguros que funcionan off-line (en local) y que permiten sincronizar las claves entre equipos a través de alguna "nube" de archivos como Dropbox. A mi personalmente me gusta bastante KeePass, que encima es gratuito y funciona en casi cualquier dispositivo que te puedas imaginar. Lo que me ocurre con este tipo de servicios es que los veo poco operativos: tienes que mantener las claves bien clasificadas, localizarlas para leerlas, cambiarlas, etc... Y es un engorro mayor si tienes que acceder a ellas desde el móvil.

Al final tradicionalmente he venido utilizando un enorme archivo de texto que guardo en una unidad encriptada con una clave fuerte, que es la única que debo recordar. Esta unidad encriptada la sincronizo entre los diferentes equipos usando un disco "cloud". Me facilita la vida porque el manejo del archivo de texto es muy sencillo y ágil, pero sigue siendo un verdadero engorro, sobre todo -nuevamente- en el móvil :-S

Una solución mejor

Hace un par de semanas estaba en un restaurante con unos amigos, cuando surgió el tema de las malditas claves. Ellos son usuarios "de a pié", pero usan multitud de cuentas de todo tipo y deben recordar decenas de claves. Al final acababan haciendo lo de todo el mundo: usan una o dos claves sencillas en todas partes. ¡Error!.

Así que a raíz de esa conversación y de ver las malas prácticas que la situación está provocando, se me ocurrió pensar si habría algún sistema mejor para solucionar el problema, algo que no me había planteado antes.

Lo que pensé es que el sistema ideal debería cumplir los siguientes requisitos:

  1. Solo sería necesario recordar una única clave.
  2. Las claves no deberían almacenarse en ningún lado. Esto nos evita tener que andar almacenándolas en la nube, sincronizar archivos o dar la posibilidad de que alguien pueda acceder a ellas. Simplemente no estarían guardadas.
  3. Debería valer para cualquier tipo de servicio, aunque tengan requisitos de complejidad o longitud muy altos.

Y se me vino a la cabeza enseguida un sistema bastante sencillo pero efectivo capaz de conseguir todo lo anterior. Se trataba de crear un generador de claves que, a partir de una única clave larga y segura y el nombre del servicio, sería capaz de generar siempre la misma clave compleja, sin necesidad de anotarla en ningún lado.

Esto, tal y como lo enuncias en voz alta, clama al cielo al uso de un algoritmo de hash seguro.

La idea me pareció tan sencilla que me parecía increíble que nadie la hubiera pensado antes. Y por supuesto así era. Busqué un poco por ahí y encontré que ya una gente de Stanford había tenido una idea similar hace 10 años (El Stanford Pwdhash) y que existían diversas implementaciones de la idea ya en marcha por ahí, como por ejemplo:

¡Genial! De todos modos para mi había un problema: todas ellas necesitaban conexión a Internet para trabajar o bien eran para un sistema operativo móvil que yo no uso (soy uno de los Quijotes que usa Windows Phone).

Así que, en lugar de ponerme a hacerlo yo desde cero como tenía pensado, aproveché que la que más me gustaba, NullPass, era Open Source y le he metido "esteroides" para que funcione como yo quería ;-)

El resultado es NullPass+.

NullPass+

Esta aplicación está basada en NullPass de Adam MacLeod un programador australiano.

Es un gestor de claves seguras que solamente necesita una clave maestra y no almacena las claves en ningún lado. No es posible obtener la clave original a partir de las claves generadas.

Está basada en HTML y JavaScript. No necesita instalación y puede funcionar incluso en local y sin servidor web.

Las características principales que le he añadido respecto a la original son:

  • Genera claves seguras de la longitud que queramos entre 6 y 88 caracteres. Garantiza que siempre habrá al menos letras, números y símbolos no convencionales en la clave generada.
  • Funciona sin conexión. No es necesaria conexión a internet para poder usarlo. Con que te conectes una vez a la aplicación, se descarga automáticamente y ya nunca más volverá a conectarse a internet para nada.
  • Es una app móvil universal: basta que visites la app en tu navegador móvil y que uses la opción de añadirla a la pantalla de inicio. Tendrás un icono de acceso directo que hará que la aplicación se abra como una aplicación más de tu teléfono y puedas generar las claves. Funciona en iOS, Android , Windows Phone, Windows 8 y Windows 10.
  • Mejor validación que la original.
  • Más fácil copiar la clave resultante desde dispositivos móviles. Con el original en Windows Phone, por ejemplo, era imposible copiarla al portapapeles para poder pegarla en una pantalla de login.

Este es el aspecto de la aplicación ejecutándose en un navegador de escritorio (pulsa para aumentar):

NullPassPlus-Browser

Así (abajo a la izquierda) es como queda el icono cuando la conviertes en una app en el móvil. En este caso en Windows Phone con un icono pequeño (pero soporta otros tamaños y todos los sistemas operativos):

NullPassPlus-WP

En otros sistemas operativos se ve muy parecido.

y este es su aspecto como app móvil (en un iPhone 6 Plus):

NullPassPlus-Mobile

Como ves, lo único que es necesario introducir es:

  • La clave maestra.
  • El identificador del servicio para el que la quieres calcular (Domain).
  • La longitud de la clave a generar. Por defecto la longitud es 12, pero puedes variarla entre 6 y 88 como quieras.

Para acceder a ella y poder usarla solo tienes que visitar esta dirección una única vez:

http://www.jasoft.org/nullpass/

Y te funcionará siempre aunque no tengas internet. Lo mejor es que la añadas a tus favoritos en el navegador y a la página de inicio de tu móvil.

Tienes el código fuente completo en GitHub.

Consejos de uso

Si la empiezas a usar y a sustituir tus claves por las generadas por NullPass+ verás que tendrás una clave segura y larga, diferente para cada sitio y que nunca más tienes que guardarla para recordarla.

Para evitarte problemas y usar la app de manera confiable sigue estos consejos:

  • Invéntate una clave maestra larga y no obvia. Esta es la única que debes recordar, pero debe ser muy segura para evitar problemas. De hecho, debes saber que es mejor usar una frase larga y con sentido (más fácil de recordar) que una clave complicadísima. Esta famosa viñeta de XKCD te demuestra el porqué:


    password_strength


  • Si vas a calcular la clave para un servicio en el que esperas tener una única cuenta, utiliza el dominio de primer nivel como identificador del servicio. Sin embargo si vas a tener varias cuentas puedes usar un identificador que incluya la cuenta y el servicio, siendo siempre consistente en cómo lo haces para todos los servicios. Así, por ejemplo, si vas a tener una única cuenta en Facebook puedes usar como identificador "facebook.com" pero si vas a usar más de una podrías usar cuenta1@facebook.com y cuenta2@facebook.com. Para una cuenta de email lo mejor es usar la cuenta completa como identificador, por ejemplo, cuenta1@gmail.com y cuenta2@gmail.com.
  • Aunque la longitud por defecto de las claves generadas es de 12, dado que no tienes que recordarla y te cuesta la mismo, yo te recomendaría que escogieses una longitud mayor y usaras siempre esa. Yo suelo usar siempre 20 o 30 como mínimo, dependiendo del servicio. Más seguridad por el mismo precio ;-)
  • Aunque no tengas que acordarte de la clave puede que te resulte complicado acordarte de en qué servicios tienes cuenta o no. Yo a veces no recuerdo si estoy dado de alta o no en algún servicio que utilizo raramente o en el que me di de alta hace tiempo para probar y me vuelvo a encontrar. Es interesante que hagas una lista en un simple .txt de los servicios en los que tienes cuenta y en los cuales usas NullPass+. Así si tienes duda puedes ir a verlo ahí en cualquier momento y no comprometes la seguridad tampoco. Incluso podrías anotar en algunos el nombre de usuario que has utilizado por si te olvidas, aunque en eso deberías ser consistente también.

Adiós a los problemas para recordar cientos de claves Smile

Recuerda: http://www.jasoft.org/nullpass/

¡Espero que te resulte útil!

José Manuel Alarcón José Manuel Alarcón
Fundador y director de campusMVP.es, el proyecto de referencia en formación on-line para programadores en lengua española. Autor de varios libros y cientos de artículos. Galardonado como MVP de Microsoft desde 2004. Gallego de Vigo, amante de la ciencia y la tecnología, la música y la lectura. Ayudando a la gente en Internet desde 1996.
Descarga GRATIS mi último libro (no técnico): "Tres Monos, Diez Minutos".
Banner

Comentarios (5) -

Spain Eduardo OzoresBaltar

muy bueno
te haré caso... mañana...

Responder

Spain afriend027

Perdona mi ignorancia, pero en el momento que pones www.... ya tienes un problema, o más bien puedes tener un problema. No sabes o no te fías de lo que haya detrás del www.....
No me parece mala idea, pero prefiero keepass. Y si trabajas en sistemas es mejor el keepass, pero para uso particular la base en la que te apoyas me parece genial y cómoda, eso siempre y cuando te acuerdes que has metido como servicio.
Porque como tengas dos o más cuentas para un servicio, estas jodido.
De todas formas me lo apunto.

Responder

Spain José M. Alarcón

Hola:

Si te fijas una cosa importante de mi implementación es que no necesitas conexión para utilizarla. El www. lo necesitas para descargar la App la primera vez, a partir de ahí no se vuelve a conectar jamás. Es más, dado que es Open Source, la puedes colgar un momento en cualquier servidor tuyo, conectarte para bajarla, quitarla de ahí y jamás necesitarás volver conectarte a Internet para usarla. Más seguridad imposible.

En cuanto a acordarte de los servicios en donde la usas: ya comento que es útil tener una lista si crees que la vas a necesitar. Es más, yo apunto aquellos sitios a los que accedo usando una cuenta de Google, Twitter, Facebook o Live, ya que al no tener que acordarte de una clave a veces no sabes en cuáles te has anotado con qué. Pero eso lo puedes hacer en cualquier archivo de texto plano, mucho más fácil de gestionar que Keepass. Si quieres puedes tenerlo cifrado también, aunque no es necesario.

Para sistemas estoy de acuerdo contigo: no lo veo operativo tampoco, sobre todo si te tienes que loguear todo el rato. Yo, por ejemplo la clave de mi equipo al que accedo cada día no la tengo así porque tendría que calcular la clave varias veces al día y es un peñazo. Pero para la mayoría de los servicios en los que te logueas de pascuas en ramos (ya que normalmente los dejas para no meter la clave todo el tiempo), me parece una solución estupenda.

Saludos!

Responder

Me lo apunto para utilizarlo, me convence la idea. Sencilla y efectiva.
Saludos y gracias!

Responder

Spain José M. Alarcón

Por cierto, si os interesa ver por qué los de XKCD ponen que la passphrase del caballo tiene 44 bits de entropía (es discutible) este hilo de stackexchange lo explica muy bien: security.stackexchange.com/.../confused-about-password-entropy

Muy interesante.

Responder

Agregar comentario