La mayor parte del cifrado actual, como el RSA, se basa en la factorización de enteros, que no se cree que sea un problema NP-hard, pero pertenece a BQP, lo que lo hace vulnerable a las computadoras cuánticas. Me pregunto, ¿por qué no ha habido un algoritmo de cifrado basado en un problema NP-hard conocido? Parece (al menos en teoría) que sería un mejor algoritmo de encriptación que uno que no es NP-hard.
109
Ha habido.
Un ejemplo de ello es el criptosistema McEliece, que se basa en la dureza de decodificar un código lineal.
Un segundo ejemplo es NTRUEncrypt, que se basa en el problema de vector más corto que creo que se sabe que es NP-Hard.
Otro es el criptosistema de mochila Merkle-Hellman que se ha roto.
Nota: No tengo idea si los dos primeros están rotos / qué tan buenos son. Todo lo que sé es que existen, y los obtuve haciendo una búsqueda en la web.
fuente
Puedo pensar en cuatro obstáculos principales que no son completamente independientes:
Tenga en cuenta que no tengo experiencia en criptografía; estos son meramente algorítmicos resp. objeciones teóricas de complejidad.
fuente
La criptografía de clave pública tal como la conocemos hoy se basa en permutaciones de trampillas unidireccionales , y la trampilla es esencial.
Para que un protocolo sea público seguro, necesita una clave disponible para todos y una forma de cifrar un mensaje con esta clave. Obviamente, una vez encriptado, debería ser difícil recuperar el mensaje original conociendo solo su cifrado y la clave pública: el cifrado solo debe ser descifrable con alguna información adicional, es decir, su clave privada.
Con eso en mente, es fácil construir un sistema criptográfico primitivo basado en cualquier permutación de trampilla unidireccional.
fuente
Solo para dar un argumento heurístico, basado en la experiencia práctica.
Casi todas las instancias, de casi todos los problemas de NP completo, son fáciles de resolver. Hay problemas en los que esto no es cierto, pero son difíciles de encontrar, y es difícil estar seguro de que tienes esa clase de sonido.
Esto ha surgido en la práctica varias veces cuando las personas intentan escribir generadores de problemas aleatorios para alguna clase famosa de NP completo, como Programación de restricciones, SAT o Vendedor ambulante. En una fecha posterior, alguien encuentra un método para resolver casi todas las instancias que el generador aleatorio produce trivialmente. Por supuesto, si ese fuera el caso de un sistema de cifrado, ¡estaríamos en serios problemas!
fuente
Los criptosistemas Merkle-Hellman se basan en problemas de mochila binarios (suma de subconjuntos).
fuente