Seguridad y hashing de contraseñas de WordPress

Publicado: 2017-11-10

Las contraseñas son una forma de autenticación que está vinculada a usuarios o procesos. Se utilizan para validar la identidad de un usuario o un proceso frente a un sistema informático o recursos. En la web moderna actual de ultraconectividad, de dispositivos IoT y móviles, la seguridad de las contraseñas es un tema más serio que nunca. Las filtraciones de bases de datos de contraseñas ocurren todo el tiempo, y las principales empresas como LinkedIn, Tumblr y Yahoo se ven afectadas. Bob Diachenko de MacKeeper Security, escribió a principios de este año sobre una lista gigante de 560 millones de correos electrónicos/contraseñas que se encontró flotando libremente en Internet.

Entonces, en este artículo, hablaremos sobre tres cosas relacionadas con las contraseñas y WordPress:

  1. Fuerte generación y gestión de contraseñas.
  2. Cómo hace WordPress el hash de contraseñas.
  3. Implementación de su propio hash de contraseña.

Contraseñas débiles y fuertes

La seguridad de la contraseña, en términos de complejidad de fuerza bruta, es un tema de mucho debate, y la noción de qué tan fuerte es una contraseña se ha redefinido en gran medida a lo largo de las décadas, a medida que los recursos informáticos más potentes están disponibles para el individuo. El experto en seguridad de renombre mundial Bruce Schneier ha escrito una excelente publicación sobre la seguridad de las contraseñas y cómo elegir contraseñas seguras.

Cuando se habla de la seguridad de la contraseña, se debe incluir el contexto y el nivel de amenaza:

Es diferente y mucho más difícil cuando el atacante intenta adivinar su contraseña de WordPress que si él o ella ha comprometido su seguridad y tiene acceso a toda la lista de contraseñas codificadas.

En la primera situación, el atacante será rápidamente bloqueado por el servicio de autenticación debido a demasiados intentos de inicio de sesión en un corto período de tiempo. Por lo general, los atacantes descubren las contraseñas a través de otros medios, distintos de la fuerza bruta, como el phishing, el malware, etc. Sin embargo, si el objetivo ha elegido una contraseña utilizando información relativamente pública, como la fecha, el nombre/apellido, etc., al atacante le resultará más fácil adivinarla.

En la segunda situación, si el atacante tiene acceso al archivo de contraseñas, podría ser cuestión de tiempo, especialmente si la función hash utilizada es MD5. Se rompió y demostró ser inseguro hace mucho tiempo. El atacante puede usar hardware moderno (como placas GPU) combinado con tablas de "arco iris" precalculadas para descifrar todo el archivo de contraseñas en muy poco tiempo. Además, en algunos casos extremos, las contraseñas de todos los usuarios se almacenan en "texto sin formato" en la base de datos. En ambos casos, se anula la "fortaleza" de su contraseña.

Cómo generar y almacenar contraseñas seguras

Es mejor dejar la generación y administración de contraseñas en una computadora en la que confíe, en lugar de tratar de pensar en contraseñas seguras con regularidad. Eres humano e inevitablemente te equivocarás y elegirás algo que una computadora considera una elección débil.

Usar un administrador de contraseñas para generar y almacenar contraseñas para cada servicio es eficiente y con la menor cantidad de amenazas. Si bien la idea de mantener todas sus contraseñas en un solo lugar puede ser desconcertante, en realidad es una ventaja: al saber que todas sus contraseñas están en un solo lugar, puede protegerlas más fácilmente. Se acabó el uso de hojas de papel al azar o permutaciones de contraseñas débiles que puede recordar fácilmente pero que también se pueden adivinar fácilmente. Además, un administrador de contraseñas puede ayudarlo a generar contraseñas seguras sin ningún problema.

La opción más popular (y costosa) es 1Password, pero puede intentar usar la que se proporciona en su sistema operativo (como iCloud KeyChain de Apple) o usar una solución multiplataforma de código abierto como KeePass.

Aloje su sitio web con Pressidium

GARANTÍA DE DEVOLUCIÓN DE DINERO DE 60 DÍAS

VER NUESTROS PLANES

Hashing de contraseñas de WordPress

El hash de contraseña es una técnica mediante la cual la contraseña de texto sin formato se pasa a una función hash y se convierte en un valor alfanumérico largo. WordPress usa esto para almacenarlos en la base de datos, evitando que miradas indiscretas lean las contraseñas de WordPress directamente. Cuando inicia sesión en WordPress y envía su contraseña, calcula el hash y lo compara con el de la base de datos. Si es el mismo, se le otorga acceso, si no, se le niega. Este método funciona porque una cadena de texto específica (una contraseña de WordPress en este caso) siempre generará el mismo valor hash. Dado que un valor hash no se puede volver a convertir al texto original, WordPress solo puede saber que ha ingresado el correcto si el valor hash de la contraseña que proporcionó y el que está almacenado en la base de datos son idénticos.

De forma predeterminada, la función wp_hash_password() de WordPress utiliza un algoritmo MD5 de 8 pasos para generar hashes. Sin embargo , MD5 se ha descifrado con éxito utilizando una combinación de hardware moderno y una técnica llamada tablas de arco iris que contiene una gran cantidad de valores precalculados. Estos ayudan a un atacante a probar miles de millones de combinaciones por segundo, en una sola GPU moderna.

Implemente su propio hash de contraseña de WordPress

Puede (y debe) seleccionar una implementación diferente, como Bcrypt, pasando la tupla (16, FALSO) al objeto PasswordHash en la creación de instancias. Ambas funciones, wp_hash_password() y wp_set_password() , se pueden conectar, por lo que puede proporcionar su propia implementación. Se pueden encontrar en wp-includes/pluggable.php.

Roots.io (la gente detrás del sistema de WordPress repetitivo de Trellis, Bedrock y Sage) también ha lanzado un complemento de WordPress que implementa la funcionalidad bcrypt para las funciones hash predeterminadas de WordPress.

Conclusión

Para asegurarse de usar contraseñas seguras y cambiarlas con frecuencia, es mejor usar un administrador de contraseñas. Esto puede ayudar a mantener todas sus contraseñas organizadas en un solo lugar y recordarle cuándo es el momento de cambiarlas. Cuando se trata de hash de contraseñas, es mejor usar un algoritmo criptográficamente seguro como SHA-2 o Bcrypt en lugar de recurrir al valor predeterminado de WordPress. Es mejor evitar hacer rodar su propia función hash, ya que un error puede introducir problemas de seguridad.