Comme le titre l'indique, je suis curieux de savoir pourquoi vous ne pouvez pas travailler en arrière en utilisant un message, une clé publique et un message crypté pour savoir comment décrypter le message!
Je ne comprends pas comment un message peut être chiffré à l'aide d'une clé et comment vous ne pouvez pas revenir en arrière pour "défaire" le chiffrement?
Il y a fonctions unidirectionnelles en informatique (non prouvée mathématiquement, mais vous serez riche et célèbre si vous prouvez le contraire). Ces fonctions sont faciles à résoudre dans un sens mais difficiles à inverser, par exemple il vous est facile de calculer 569 * 757 * 911 = 392397763
dans une minute ou deux sur un morceau de papier. De l'autre, si je vous ai donné 392397763
et vous a demandé de trouver les facteurs premiers, vous auriez beaucoup de mal. Maintenant, si ces chiffres sont vraiment élevés, même l'ordinateur le plus rapide du monde ne pourra pas inverser la factorisation dans un délai raisonnable.
Dans la cryptographie à clé publique, ces fonctions à sens unique sont utilisées de manière intelligente pour permettre à quelqu'un d'utiliser la clé publique pour chiffrer quelque chose, mais il est très difficile de déchiffrer le message résultant. Vous devriez lire l'article Wiki RSA cryptosystem .
Votre question est un peu comme ça (avec excuses à Tom Stoppard ): "pourquoi puis-je incorporer la confiture dans mon riz au lait, mais pas la remuer à nouveau? "
Certaines opérations mathématiques sont aussi faciles à faire en arrière qu'en avant. Par exemple, vous pouvez ajouter 100 à un nombre aussi facilement que soustraire 100. Cependant, certains sont plus difficiles à inverser. Par exemple, si je prends x
et que je trouve g(x) = a(x^5)+b(x^4)+c(x^3)+d(x^2)+ex+f
, je dois simplement multiplier et ajouter. Mais revenir de g(x)
à x
est difficile (de manière algébrique) car il n'y a pas de solution algébrique générale à une équation quintique . Il n'est pas immédiatement évident pourquoi cela devrait être le cas (par opposition à une équation quadratique), mais c'est le cas. Pour un exemple plus approprié, si je vous disais que 34129 et 105319 étaient tous les deux des nombres premiers (ce qu'ils sont), vous seriez en mesure de déterminer rapidement que leur produit était 3594432151. Cependant, si je vous demandais de trouver les deux facteurs premiers de 3594432151 , vous trouverez probablement cela plus difficile.
La cryptographie à clé publique prend une paire de clés. En général, la clé privée fournit aux paramètres un algorithme difficile à inverser allant dans une direction (par exemple, du texte brut au texte chiffré), et la clé publique fournit des paramètres pour un algorithme difficile à inverser allant dans l'autre.
Donc, la raison pour laquelle vous ne pouvez pas travailler en arrière est simplement parce que l'algorithme est conçu pour rendre cela difficile.
Le jonglage est facile: il suffit de lancer les balles au bon moment, pour avoir la main libre quand elles tombent. Avec une ou deux balles, c'est trivial. Avec trois, c'est assez facile. Avec plus de balles, cela devient (étonnamment) plus difficile. Même sensiblement plus difficile.
En général, "inverser" le chiffrement en utilisant une clé n - bit est comme jongler avec 2n des balles. Avec une clé de 2048 bits est comme ce 32317006071311007300714876688669951960444102669715484032130345427524655138867890893197201411522913463688717960921898019494119559150490921095088152386448283120630877367300996091750197750389652106796057638384067568276792218642619756161838094338476170470581645852036305042887575891541065808607552399123930385521914333389668342420684974786564569494856176035326322058077805659331026192708460314150258592864177116725943603718461857357598351152301645904403697613233287231227125684710820209725157101726931323469678542580656697935045997268352998638215525166389437335543602135433229604645318478604952148193555853611059596230656 balles. Ou alors.
(Bien sûr, puisque les algorithmes à clé publique utilisent beaucoup de structure mathématique, les esprits intelligents ont utilisé les mathématiques pour réduire ce nombre de billes à 162259276829213363391578010288128, ce qui est considérablement inférieur, mais toujours bien au-delà de la puissance totale de tous les ordinateurs existants sur Terre.)
Max, le meilleur outil jamais créé pour penser à la cryptographie est le Rubik's cube. Si vous présumez un monde où les résoudre est un problème non résolu, il existe des analogues directs pour DiffieHellmanKeyExchange, la signature RSA, le cryptage RSA, etc. Vous pouvez jouer des tours en écrivant des mouvements et en les exécutant sur des cubes et en les échangeant; et les équations de la théorie des groupes sont les mêmes pour les cubes crypto et rubiks.
Mais la chose clé à garder à l'esprit, qui je pense est ce qui doit vous déranger: vous avez raison. Il est "possible" d'inverser toutes ces opérations. Techniquement, nous avons f(x) et f_inverse (x), où f(x) s'exécute en temps polynomial (c'est-à-dire: vous pouvez chiffrer rapidement de grands nombres ), tandis que f_inverse (x, s) s'exécute en temps exponentiel (c'est-à-dire que même les nombres moyens sont infaisables) - à moins que vous n'ayez le bon secret s pour vous connecter à f_inverse. De telles paires de fonctions sont appelées trappes. Les trappes communes sont des problèmes de théorie des nombres tels comme factorisation principale et logarithmes discrets.
Ce que vous devez faire, c'est lire sur la cryptographie à clé publique. La réponse courte est qu'elle est basée sur un algorithme qui permet à une clé de chiffrer et à l'autre clé de faire le déchiffrement, c'est pourquoi vous ne pouvez pas travailler en arrière.
C'est une explication simplifiée de ce qui se passe, si vous voulez aller au cœur du problème, vous pouvez regarder des sources telles que les suivantes, mais soyez averti que cela descend rapidement de la falaise dans des mathématiques qui peuvent ou non être faciles à suivre: http://nrich.maths.org/22
En règle générale, vous ne pouvez pas travailler en arrière, de manière évidente, car vous ne disposez pas de suffisamment d'informations.
RSA dépend de la difficulté de factoriser de grands nombres. Vous générez votre module RSA n en multipliant deux grands nombres premiers, p et q. La multiplication de p par q est facile. Vous pouvez également inverser l'opération en calculant q = n / p
(ou p = n / q
). Ce que vous ne pouvez pas faire facilement, c'est jeter à la fois p et q, puis les calculer à partir de n. C'est un problème différent, pas une inversion d'un processus que vous avez déjà utilisé.
De même, le chiffrement RSA d'un message m à l'aide de la clé de chiffrement e implique le calcul de (m ^ e) mod n
. Vous pourriez théoriquement inverser m ^ e
en utilisant des journaux, mais sans l'opération modulo, ce nombre serait trop grand pour fonctionner. Dans tous les cas, l'opération modulo supprime une partie du nombre, donc encore une fois vous n'avez pas toutes les informations dont vous auriez besoin pour travailler en arrière de manière triviale.
Dans ce cryptage à clé publique (ou inscription asymétrique), pour crypter quelque chose, vous procédez comme suit:
Prenez votre message à transmettre (sous forme de nombre): disons que c'est 5.
Calculez 3 ^ 5 (3 élevés au "secret") = 243
Calculez le module de celui-ci, divisé par un autre nombre: disons 143. Donc, 243/143 = 100.
Voilà. Votre secret crypté est 100.
Pour trouver le secret, sans la clé privée, il vous suffit de trouver un nombre qui, divisé par 143, laisse 100 comme résultat, puis de trouver le radix cubique de celui-ci.