Descripción del cifrado y el código hash
Una manera de mitigar las amenazas de ciberseguridad más comunes es cifrar datos confidenciales o valiosos. El cifrado es el proceso de hacer que los datos sean ilegibles e inutilizables para los visores no autorizados. Para usar o leer datos cifrados, debe descifrarse, lo que requiere el uso de una clave secreta. Incluso si un atacante intercepta o obtiene acceso a los datos cifrados, sigue siendo inútil para ellos sin la clave correspondiente.
Tipos de cifrado
Hay dos tipos principales de cifrado: simétrico y asimétrico.
Cifrado simétrico
El cifrado simétrico usa la misma clave para cifrar y descifrar datos. Dado que solo hay una clave implicada, el cifrado simétrico es computacionalmente rápido y adecuado para cifrar grandes cantidades de datos, por ejemplo, archivos almacenados en un disco duro o registros de una base de datos.
El principal desafío con el cifrado simétrico es la distribución de claves: ambas partes necesitan acceder a la misma clave secreta y compartir de forma segura esa clave , especialmente a través de una red, pueden ser difíciles.
Cifrado asimétrico
El cifrado asimétrico usa un par de claves: una clave pública y una clave privada. Estas claves están relacionadas matemáticamente, pero no se puede derivar la clave privada de la clave pública.
- Los datos cifrados con la clave pública solo se pueden descifrar con la clave privada correspondiente.
- Los datos firmados con la clave privada se pueden comprobar con la clave pública correspondiente.
Dado que la clave pública se puede compartir libremente, el cifrado asimétrico resuelve el problema de distribución de claves del cifrado simétrico. Cualquier persona puede cifrar los datos mediante la clave pública, pero solo usted , que contiene la clave privada, puede descifrarlos. El cifrado asimétrico se usa en muchos protocolos de seguridad con los que interactúa diariamente, incluido HTTPS, que protege los sitios web y el cifrado de correo electrónico.
Firmas digitales
El cifrado asimétrico también permite firmas digitales, que comprueban tanto la autenticidad como la integridad de los datos. Cuando un remitente firma datos con su clave privada, cualquier persona con la clave pública del remitente puede comprobar que:
- Los datos proceden del remitente esperado (autenticidad).
- Los datos no se modificaron después de firmarlos (integridad).
Las firmas digitales se usan para comprobar las descargas de software, autenticar mensajes de correo electrónico y proteger documentos electrónicos y transacciones.
Cifrado por estado de datos
Cifrado de datos en reposo
Los datos en reposo son datos almacenados en un dispositivo físico, como un disco duro de servidor, una base de datos o una cuenta de almacenamiento en la nube. El cifrado de datos en reposo garantiza que los datos no se puedan leer sin las claves necesarias para descifrarlos.
Si un atacante obtuviera una unidad de disco duro con datos cifrados, pero no tuviera acceso a las claves de cifrado, no podría leer los datos. Esta protección permanece incluso si se roba el medio de almacenamiento físico o se accede a la cuenta de almacenamiento sin autorización.
Cifrado de datos en tránsito
Los datos en tránsito son los datos que se mueven de una ubicación a otra, como a través de Internet, entre servicios o a través de una red privada. Los datos en tránsito son vulnerables a la interceptación por parte de cualquier persona que pueda observar el tráfico de red.
El cifrado de datos en tránsito los protege de la escucha y la interceptación. HTTPS es el ejemplo más conocido: cuando se accede a un sitio web a través de HTTPS, la conexión se protege mediante la seguridad de la capa de transporte (TLS), lo que garantiza que los datos intercambiados entre el explorador y el servidor no puedan ser leídos por terceros. El mismo principio se aplica a los datos que se mueven entre los servicios en la nube y a las conexiones VPN que protegen el tráfico a través de redes públicas.
Cifrado de datos en uso
Los datos en uso hacen referencia a los datos que se procesan activamente, por ejemplo, los datos cargados en la memoria (RAM) de un equipo o que una CPU trabaja en ellos. El cifrado tradicional protege los datos en reposo y en tránsito, pero normalmente los datos se descifran cuando se cargan en la memoria para su procesamiento, creando una ventana de exposición potencial.
El cifrado de datos en uso se logra mediante tecnologías de computación confidencial que crean entornos de ejecución protegidos, a veces denominados enclaves seguros, donde los datos se pueden procesar sin exponerse incluso al sistema operativo o al hipervisor. Esto es especialmente importante en entornos multiinquilino en los que diferentes clientes pueden compartir el mismo hardware físico.
Administración de claves
El cifrado solo es tan seguro como las claves usadas para cifrar los datos. Una clave de cifrado que se roba o expone hace que los datos cifrados sean accesibles para los atacantes, lo que derrota el propósito del cifrado. La administración de claves explica cómo se generan, almacenan, protegen, rotan y finalmente se retiran las claves de cifrado.
Entre las mejores prácticas de administración de claves se incluyen:
- Almacenar claves por separado de los datos que protegen: si las claves se almacenan junto con los datos cifrados, un atacante que obtiene acceso a uno automáticamente tiene ambos.
- Uso de hardware dedicado para el almacenamiento de claves: los módulos de seguridad de hardware (HSM) son dispositivos especializados y resistentes a alteraciones diseñados específicamente para almacenar y proteger claves criptográficas.
- Rotación de claves periódicamente: el cambio de claves de cifrado limita periódicamente la cantidad de datos expuestos si alguna vez se pone en peligro una clave.
- Controlar estrechamente el acceso a las claves: solo los usuarios y sistemas autorizados deben poder acceder a las claves de descifrado, que se aplican mediante la autenticación segura y los principios de acceso con privilegios mínimos.
Los servicios de administración de claves en la nube, como Azure Key Vault, proporcionan un servicio centralizado y administrado para almacenar y administrar claves de cifrado, certificados y secretos. Estos servicios reducen el riesgo de exposición de claves, admiten flujos de trabajo de rotación de claves e integran con otros servicios en la nube para proporcionar cifrado sin exponer material clave al código de aplicación o a los administradores.
Aplicación de algoritmo hash
Hashing usa un algoritmo para convertir cualquier entrada en una cadena de longitud fija de caracteres denominado hash (o resumen). A diferencia del cifrado, el hash es un proceso unidireccional: no se puede invertir un hash para recuperar la entrada original. Cada vez que se aplica un hash a la misma entrada mediante el mismo algoritmo, se genera el mismo valor hash, lo que hace que el hash sea una huella digital única confiable para esos datos.
El hash es diferente del cifrado en que no usa claves y el valor hash no se puede revertir a los datos originales. Esto hace que el hash sea útil en escenarios en los que necesite comprobar los datos sin necesidad de almacenar ni leer el valor original.
Cómo protege las contraseñas mediante hash
El hash se usa ampliamente para proteger las contraseñas almacenadas. En lugar de almacenar la contraseña real de un usuario, un sistema solo almacena el hash de esa contraseña. Cuando un usuario inicia sesión, el sistema aplica un hash a la contraseña que escribe y lo compara con el hash almacenado. Si los hash coinciden, la autenticación se realiza correctamente, sin que el sistema almacene o transmita la contraseña real en texto sin formato.
Esto es más seguro que almacenar contraseñas de texto sin formato porque incluso si se roba la base de datos de contraseñas, el atacante solo obtiene hashes. Sin embargo, el hash básico tiene una vulnerabilidad conocida: dado que las funciones hash son deterministas, los atacantes pueden precomputar hashes para millones de contraseñas comunes y buscarlas en tablas, denominadas tablas arco iris o ataques de diccionario, para encontrar coincidencias.
Cifrado con sal
Para defenderse contra ataques precomputados, las contraseñas normalmente se aplica un cifrado con sal (valor aleatorio) antes de generar el código hash. Un cifrado con sal es un valor único generado aleatoriamente creado para cada contraseña específica y se añade a esta antes de generar el código hash. Dado que cada contraseña recibe un salt diferente, dos usuarios con la misma contraseña generan hashes distintas en la base de datos. Esto hace que las tablas de arco iris precalutadas sean ineficaces, ya que el atacante necesitaría una tabla de búsqueda independiente para cada valor de sal posible.
La práctica de "cifrado con sal" es un técnica recomendada en el almacenamiento seguro de contraseñas y es esencial en cualquier sistema de autenticación implementado correctamente.