Encriptar contraseñas con Node

En este post de programación con JavaScript del lado del servidor en el entorno de Node te mostraré cómo asegurar las contraseñas de los usuarios; esto es, encriptarlas.

De hecho me parece que el término correcto es hashear, pues encriptar es convertir algo plano a encriptado y luego poder hacer lo contrario; en cambio hashear es convertir algo plano a encriptado, pero ya no poder obtener el valor original a partir del encriptado.

Como sea, te mostraré cómo asegurar, encriptar o cifrar las contraseñas. Vamos a usar el algoritmo bcrypt pues es perfecto para hashear contraseñas en Node.

(más…)

Cifrar y descifrar información con PHP

En este artículo te voy a mostrar cómo encriptar y desencriptar datos usando PHP, para mantener los datos seguros. Veremos cómo:

  • Cifrar datos
  • Descifrar datos
  • Cifrar datos usando la contraseña de un usuario
  • Descifrar datos usando la contraseña de un usuario

Estos dos últimos ejemplos funcionan muy bien para cuando queremos asegurar la información incluso para los desarrolladores de la aplicación.

Recuerda que encriptar es distinto a hashear; porque cuando encriptamos un valor con PHP lo hacemos de esa manera para desencriptarlo más tarde. En cambio, al hashear una contraseña, su valor no es reversible.

La librería que vamos a usar para encriptar y desencriptar datos en PHP se llama php-encryption y su repositorio en GitHub lo puedes ver aquí.

Nota: voy a usar encriptar y cifrar como sinónimos para este post, al igual que desencriptar y descifrar.

(más…)

Un ransomware para Linux usando GPG

Hoy vamos a ver cómo crear un ransomware programado para Linux (será un shell script) utilizando GPG y el cifrado asimétrico; será más que nada un ejercicio didáctico pero claro que se puede llevar a la práctica (cosa que no recomiendo, en serio),

Si no sabes qué es un ransomware veamos lo que dice la wikipedia:

Un ransomware (del inglés ransom, «rescate», y ware, acortamiento de software) o “secuestro de datos” en español, es un tipo de programa dañino que restringe el acceso a determinadas partes o archivos del sistema operativo infectado, y pide un rescate a cambio de quitar esta restricción.

El ransomware que vamos a programar va a cifrar archivos con nuestra clave pública (que se va a descarga en la PC de la víctima), los cuales solo vamos a descifrar con nuestra clave privada (la cual solo posee el atacante).

Ransomware en Linux

Será un script de bash muy sencillo pero poderoso, con la única dependencia de GPG.

(más…)

Cifrar unidad de disco en Linux Ubuntu con LUKS

LUKS (Linux Unified Key Setup) es una especificación de cifrado de disco creado por Clemens Fruhwirth.

Esta especificación permite cifrar discos completos en Linux utilizando AES-256 y algunas otras características de seguridad.

En este post vamos a ver cómo cifrar una memoria USB aunque se puede cifrar un disco duro completo o una partición del mismo.

Así, podemos guardar datos con la seguridad de que nadie sin la clave podrá leerlos, sin importar el sistema operativo.

(más…)

Hashear contraseñas en Python usando bcrypt

Hashear contraseñas con Python y bcrypt

Anteriormente vimos cómo generar una contraseña segura en Python cuando necesitamos un token o una clave segura, ahora veremos cómo hashear una contraseña en Python, usando bcrypt.

El algoritmo de bcrypt es usado también por PHP al hashear contraseñas. Igualmente está disponible en Go.

Hashear contraseñas en Python usando bcrypt

Hashear contraseñas en Python usando bcrypt

Hashear contraseñas es un estándar que debemos seguir al implementar autenticación de usuarios, por ejemplo. Pero bueno, vamos al tutorial en donde veremos:

  1. Cómo instalar la librería de bcrypt usando pip
  2. Cómo hashear una contraseña con bcrypt y Python
  3. Cómo comprobar si una contraseña coincide con el hash de bcrypt en Python
  4. Costos y límites de bcrypt en Python

(más…)