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.
- Alice donne la permutation à sens unique au public et garde la trappe pour elle-même.
- Bob a mis son entrée dans la permutation et a transmis le résultat à Alice.
- Alice utilise la trappe pour inverser la permutation avec la sortie de Bob.
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≠NPNPINPNPNPINP
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 PNPNPNP