En seguridad, existe una idea llamada "triángulo de la CIA", que representa tres cualidades de seguridad básicas: confidencialidad, integridad y disponibilidad. El cifrado generalmente trata la confidencialidad, mientras que el hash generalmente aborda la integridad.
El cifrado se utiliza para garantizar la confidencialidad de las comunicaciones, siempre que la confidencialidad sea importante. No importa si es una persona o un servicio o un robot que recibe esas comunicaciones; Si necesitan protegerse contra escuchas ilegales, el cifrado puede ser una herramienta efectiva.
El cifrado también se utiliza para garantizar la confidencialidad de los datos en el futuro. Es posible que desee cifrar un archivo hoy y recuperarlo el próximo año, pero no quiero que nadie más acceda a él mientras tanto.
El cifrado es recuperable. Cuando se necesita el mensaje original, la clave correcta lo pone a disposición. Esto lo hace ideal para comunicaciones.
(Como beneficio adicional, el cifrado también es una herramienta efectiva de destrucción instantánea: si tiene un disco cifrado, al destruir todas las copias existentes de la clave, todos los datos del disco se vuelven irrecuperables, independientemente de la cantidad de datos que haya. El disco. Este es un proceso mucho más rápido que sobrescribir y eliminar terabytes de datos.)
Un resumen de mensaje (hash) se usa principalmente para garantizar la integridad de los datos, para saber que no se dañó en tránsito, durante el almacenamiento, ni fue alterado por un atacante. Da una forma de comparar dos piezas de datos ocultos. Un ejemplo común es probar que un certificado o mensaje fue firmado con una clave privada, conocida solo por el remitente.
Los resúmenes de mensajes son útiles para demostrar el conocimiento de los secretos para su uso en operaciones de comparación sin exponerlos directamente. La implementación obvia es calcular el valor de hash de una contraseña y almacenar solo el hash en su base de datos. La próxima vez que el usuario ingrese su contraseña, usted calcula el valor hash y lo compara con el valor almacenado. Esto puede probar que el usuario sabía la contraseña, pero el valor hash no le dirá a un observador cuál es la contraseña. Al mantener los datos de la contraseña original en un estado no recuperable, parece estar bien protegido, pero eso no es suficiente.
Un resumen de mensaje conserva la propiedad de ocultar el secreto si y solo si los datos secretos originales no son adivinables. Las contraseñas son cortas y adivinables. Los números de las cuentas bancarias son cortos y adivinables. Los PIN son cortos y adivinables. Entonces, para ayudar a proteger ese tipo de secretos adivinables, se usan medidas adicionales, como agregar sal aleatoriamente, limitar el acceso al sistema de comparación (es decir, ingresar 3 contraseñas incorrectas en una fila y está bloqueado), y aplicar recursivamente el algoritmo hash miles de veces antes de almacenar el valor de hash.
Si el secreto es adivinable y el atacante conoce el valor de hash, el atacante simplemente puede probar millones o miles de millones de valores probables como entradas a la rutina de hash, y si su salida coincide con el hash almacenado, sabe que su entrada Trabajar como una contraseña válida. Además, si un atacante puede simplemente robar una copia del hash y presentarla como si el usuario la hubiera ingresado, la comparación todavía pasará, eliminando la necesidad de recuperar la contraseña original. La implementación de software en estos escenarios requiere conocimiento y cuidado para evitar estos (y otros) errores comunes.