¿Podemos hacer criptografía o encriptación sin usar una clave?

Algunas formas de criptografía se pueden hacer sin una clave . Específicamente estoy pensando en hashes criptográficos. Una función hash asigna datos de tamaño arbitrario a un “hash” o “resumen” de un tamaño fijo. Un hash criptográfico tiene la propiedad de que es difícil crear un mensaje de inicio que se asigne a un hash particular. Esta propiedad permite el uso de un hash criptográfico para obtener un nivel de seguridad de que el mensaje original no ha sido alterado.

El cifrado es un subconjunto de la criptografía. El cifrado es un proceso algorítmico que transforma los datos de entrada en algo que “el atacante” no puede volver al mensaje original. No podemos hacer un cifrado útil a gran escala sin usar claves.

¿Porque preguntas?

Un algoritmo de cifrado debe ser:

  1. Reversible: necesitamos poder volver a convertir el mensaje codificado (cifrado) en el mensaje original. Esto se llama descifrado.
  2. Necesitamos permitir el descifrado de algunos y no permitir el descifrado de otros.

Asumiremos que el número 1 (crear un algoritmo de cifrado reversible) es razonablemente alcanzable.

Para alcanzar el # 2 tenemos básicamente 2 opciones.

Podemos usar un algoritmo secreto o podemos usar un algoritmo con clave y mantener la clave en secreto.

Hay 2 problemas con el uso de un algoritmo secreto (creo que hay 2 de todo, supongo). La primera es que si alguien descubre nuestro algoritmo secreto, nunca podremos usarlo nuevamente. Tenemos que llegar a otro. El segundo problema es que cada par de comunicadores necesitaría un algoritmo secreto completamente único. Dije anteriormente que podríamos asumir que era bastante fácil crear un algoritmo de encriptación reversible, pero no tanto como para crear uno diferente para cada par de comunicadores y luego cada vez que se rompe el algoritmo de alguien. Esto no escala bien.

Eso nos deja con un algoritmo con clave . Solo necesitamos crear uno (no solo uno, sino uno para cada caso de uso), un algoritmo con clave realmente bueno para todos y no necesitamos mantenerlo en secreto. Se requiere la clave para descifrar, por lo que solo necesitamos mantener la clave en secreto y todos pueden usar una clave diferente. Si su clave se ve comprometida, simplemente deje de usarla y elija una diferente. Esto escala muy bien.

Una de las mayores consecuencias del uso de algoritmos con clave es que podemos tener métodos de cifrado estándar. Esto permite cosas como la banca en línea segura. Su banco puede configurar un sitio web sin decirle nada sobre cómo lo hicieron. Google, Microsoft y Mozilla pueden crear un navegador web sin hablar con usted o con el banco sobre cómo lo hicieron. Puede elegir cualquier navegador web que desee sin consultar con su banco y luego obtener una conexión segura y encriptada desde su computadora al sitio web de su banco.