La plupart des méthodes de cryptage actuelles, telles que RSA, reposent sur la factorisation entière, qui n'est pas considérée comme un problème complexe, mais appartient au BQP, ce qui la rend vulnérable aux ordinateurs quantiques. Je me demande pourquoi il n’existe pas d’algorithme de chiffrement basé sur un problème NP-hard connu. Il semble (du moins en théorie) que cela constituerait un meilleur algorithme de cryptage que celui dont il n’est pas prouvé qu’il est NP-difficile.
Il y a eu.
Un tel exemple est le cryptosystème McEliece, basé sur la dureté du décodage d'un code linéaire.
Un autre exemple est NTRUEncrypt, qui est basé sur le problème de vecteur le plus court, connu pour être NP-Hard.
Un autre système, le cryptosystème de sac à dos Merkle-Hellman, a été brisé.
Note: Je n'ai aucune idée si les deux premiers sont cassés / à quel point ils sont bons. Tout ce que je sais, c'est qu'elles existent et je les ai obtenues en effectuant une recherche sur le Web.
la source
Je peux penser à quatre obstacles majeurs qui ne sont pas entièrement indépendants:
Notez que je n'ai aucune expertise en cryptographie; ce ne sont que des algorithmes resp. objections de la complexité théorique.
la source
La cryptographie à clé publique telle que nous la connaissons aujourd’hui repose sur des permutations à une trappe à sens unique , et la trappe est essentielle.
Pour qu'un protocole soit publiquement sécurisé, vous avez besoin d'une clé disponible pour tout le monde et d'un moyen de chiffrer un message à l'aide de cette clé. Évidemment, une fois chiffré, il devrait être difficile de récupérer le message d'origine en ne connaissant que son chiffrement et la clé publique: le chiffrement ne doit être déchiffrable qu'avec certaines informations supplémentaires, à savoir votre clé privée.
Dans cet esprit, il est facile de construire un système cryptographique primitif basé sur toute permutation à une trappe à sens unique.
La difficulté est maintenant de trouver de véritables permutations unidirectionnelles dans les trappes, et il existe de nombreuses fonctions que nous pensons être de bons candidats (RSA, logarithme discret, quelques variations du problème du réseau). Cependant, si nous pouvons trouver avec certitude une fonction à sens unique, nous prouvons également que , prouvant ainsi qu'une fonction à sens unique est intraitable.P≠NP
Inversement, si nous prouvons que , nous prouvons également qu’il existe une classe entre (intermédiaire), des problèmes rencontrés dans mais pas -hard. Quelques bons candidats pour des problèmes dans sont également candidats à des permutations à sens unique, car nous n’avons pas encore été en mesure de prouver qu’ils sont -hard.N P I N P N P N P I N PP≠NP NPI NP NP NPI NP
Donc, pour répondre à votre question, nous n’utilisons pas les problèmes - car nous avons besoin d’une permutation à sens unique avec les trappes, et ces fonctions spéciales résident probablement dans une classe entre et -dur.N P N PNP NP NP
la source
Juste pour donner un argument heuristique, basé sur l'expérience pratique.
Presque tous les cas, presque tous les problèmes NP-complets, sont faciles à résoudre. Il existe des problèmes pour lesquels ce n'est pas vrai, mais ils sont difficiles à trouver et il est difficile d'être certain que vous ayez une classe de ce genre.
Cela est apparu à plusieurs reprises dans la pratique lorsque des personnes ont essayé d'écrire des générateurs de problèmes aléatoires pour certaines classes célèbres de NP-complete, telles que Constraint Programming, SAT ou Travelling Salesman. À une date ultérieure, une personne trouve une méthode pour résoudre presque toutes les instances générées de manière triviale par un générateur aléatoire. Bien sûr, si c'était le cas pour un système de cryptage, nous aurions de sérieux problèmes!
la source
Les cryptosystèmes Merkle-Hellman sont basés sur des problèmes de sac à dos binaire (somme de sous-ensemble).
la source