Question:
Pourquoi ne pouvez-vous pas travailler à rebours avec une clé publique pour déchiffrer un message?
Max
2015-04-22 18:51:02 UTC
view on stackexchange narkive permalink

Comme le titre l'indique, je suis curieux de savoir pourquoi vous ne pouvez pas travailler à l'envers en utilisant un message, une clé publique et un message chiffré pour savoir comment déchiffrer 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 "annuler" le chiffrement?

Une belle vidéo sur le cryptage RSA: https://www.youtube.com/watch?v=M7kEpw1tn50 Cela m'a aidé à comprendre pourquoi il est si difficile à craquer :)
J'aime cette vidéo qui utilise le mélange des couleurs: https://www.youtube.com/watch?&v=3QnD2c4Xovk#!
L'intérêt du chiffrement par clé asymétrique est que la clé que vous utilisez pour chiffrer * ne peut pas * être utilisée pour déchiffrer - vous avez besoin de son homologue.
@BadSkillz - Merci ... maintenant je vais finir de perdre le reste de ma journée à regarder leurs autres vidéos. : P
Pourquoi ne pouvez-vous pas simplement travailler en arrière avec un hachage MD5 pour trouver l'entrée d'origine? (ou au moins * une * entrée qui vous donne le même hachage)
En fait, vous pouvez! Le problème est d'aller de l'avant et de reculer, ce n'est pas quelque chose que vous pouvez faire avec la même efficacité. Nous comptons sur le fait que le travail à rebours est hors de portée en termes de temps pour le faire.
@BadSkillz Vidéo assez bonne, mais elle présente quelques défauts. Cela suggère que RSA est utilisé en mode ECB, c'est une mauvaise idée pour plusieurs raisons. De plus, l'utilisation d'un module pair est légèrement trompeuse.
Voici quelques réponses supplémentaires qui sont peut-être plus utiles pour certaines personnes. Je pense que l'intention initiale de la question était "si X étapes avec des entrées Y sont bien connues, alors pourquoi ne peuvent-elles pas être faites à l'envers en sachant déjà qu'elles pour obtenir la réponse originale?" lié les mécanismes spécifiques réels de fonctionnement des algorithmes, et pas tellement l'obscurcissement / entropie humaine plus évidente en utilisant la partie mathématique. Le lien: https://crypto.stackexchange.com/questions/18658/why-cant-you-decrypt-an-encrypted-message-with-just-the-public-key
Il est en fait possible pour un pirate de déchiffrer le message en utilisant uniquement la clé publique.Mais c'est extrêmement difficile pour n'importe quel ordinateur aujourd'hui.Parce que la restauration de ce message chiffré à l'aide de cette clé publique est une opération mathématique très difficile, en particulier lorsque cette clé est aussi grande qu'un nombre de 2048 bits.La force de l'opération mathématique repose sur la dureté de la factorisation première d'un grand nombre. Voici une superbe vidéo expliquant cela https://www.youtube.com/watch?v=wXB-V_Keiu8
Sept réponses:
Lucas
2015-04-22 20:32:30 UTC
view on stackexchange narkive permalink

Il existe des fonctions à sens unique en informatique (non prouvées 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 ex. il est facile pour vous de calculer 569 * 757 * 911 = 392397763 en une minute ou deux sur une feuille de papier. D'autre part, si je vous donnais 392397763 et vous demandais de trouver les facteurs premiers, vous auriez beaucoup de mal. Maintenant, si ces chiffres sont vraiment importants, 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 unidirectionnelles sont utilisées de manière intelligente pour permettre à quelqu'un d'utiliser la clé publique pour crypter quelque chose, mais il est très difficile de décrypter le message résultant. Vous devriez lire l'article Wiki RSA cryptosystem.

Des affirmations audacieuses. L'existence de fonctions à sens unique est-elle prouvée mathématiquement (il y a quelques années non)? Y a-t-il une preuve que les fonctions utilisées dans les systèmes cryptographiques à clé publique sont vraiment à sens unique?
@jknappen Prouver leur existence ou leur absence reviendrait à résoudre P = NP. Cependant, nous n'avons pas à nous fier à ce qu'ils soient mathématiquement prouvés comme étant à sens unique pour les utiliser pour la sécurité informatique: personne n'a encore réussi à trouver un moyen rapide de factoriser de grands nombres premiers.
@AronFoster: Nous ne savons pas si quelqu'un l'a fait.
@jknappen:Fair assez (j'ai ajouté une note entre parenthèses). Prouver mathématiquement l'existence de fonctions à sens unique s'est avéré extrêmement difficile, mais les crypto-systèmes fonctionnent sous l'hypothèse qu'ils existent et je pense que la grande majorité des mathématiciens et des informaticiens supposent également qu'ils existent.
@GuntramBlohm Et nous ne savons pas si chaque puce Intel a une porte dérobée qui permettra à la NSA de lire tout ce que vous écrivez. Il existe un nombre infini de risques, et il y a un moment où quelque chose est si improbable qu'il ne vaut pas la peine de concentrer votre attention.
Ces remarques sont vraiment hors de portée de la question, qui est évidemment une question de débutant. Être avocat-y en soulignant que nous n'avons pas prouvé techniquement l'existence de fonctions à sens unique alors qu'en pratique elles sont utilisées tout le temps en tant que telles, cela ne fera que semer la confusion chez le demandeur et n'apportera aucune valeur réelle. Donc ce n'est pas "assez juste" et je n'aurais pas dû le modifier.
@AndreasBonini, ce serait une instance de [mentir aux enfants] (https://en.wikipedia.org/wiki/Lie-to-children)
@GuntramBlohm Être capable de factoriser rapidement le produit de grands nombres premiers n'est pas quelque chose qui resterait un secret bien gardé par certains gouvernements. Ce serait une réalisation mathématique majeure qui se produit peut-être une fois par génération.
@AronFoster Nous n'avons pas? Je pensais que tout le monde savait que c'était le cas.
Vous n'avez pas besoin simplement d'une fonction à sens unique (comme une fonction de hachage), mais généralement d'une fonction à sens unique de trappe. (De plus, vous n'en avez pas besoin uniquement pour exister, mais en fait, la fonction que vous utilisez en est une.)
Les sites @AndreasBonini Stack Exchange ne sont pas réservés uniquement à la personne qui pose la question. Ils sont aussi pour d'autres qui posent la même question. Il n'est pas nécessaire d'omettre intentionnellement des détails: expliquez-les simplement en termes simples (comme Lucas l'a fait).
@AronFoster: La factorisation de grands nombres premiers est facile. La factorisation des non-nombres premiers sans petits diviseurs premiers est difficile.
@mason: cela dépend de la façon dont les détails sont pédants. Cela revient à mentionner la perturbation potentielle des rayons cosmiques lorsque quelqu'un demande comment faire une multiplication en C ++
@AronFoster Je ne pense pas que le problème d'affacturage soit équivalent à P = NP (ou du moins pas prouvé).
@AndreasBonini Non, ce n'est pas du tout similaire. Lucas a expliqué en termes clairs le fonctionnement du cryptage, et il est très pertinent de comprendre les limites de ce processus. Il ne faut pas un génie pour comprendre ce que Lucas a écrit, ce qui en fait une bonne réponse. N'encouragez pas les gens à laisser de côté des détails importants sur Stack Exchange, car les réponses sont pour * tout le monde *, pas seulement pour la première personne à les poser. C'est un principe de base des sites SE.
@tomasz "Factor large [semiprimes] (http://mathworld.wolfram.com/Semiprime.html)" était probablement destiné.
abligh
2015-04-23 17:21:57 UTC
view on stackexchange narkive permalink

Votre question est un peu comme celle-ci (avec mes excuses à Tom Stoppard): "Pourquoi puis-je mélanger la confiture dans mon riz au lait sans 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 faire de simples multiplications et ajouts. Mais revenir de g (x) à x est difficile (de manière algébrique) car il n’existe 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 premiers (ce qu'ils sont), vous seriez en mesure de déterminer rapidement que leur produit est 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 les paramètres d'un algorithme difficile à inverser allant dans un sens (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 à l'envers est simplement parce que l'algorithme est conçu pour rendre cela difficile.

Meilleure réponse par rapport au reste.
Thomas Pornin
2015-04-22 19:12:50 UTC
view on stackexchange narkive permalink

La jonglerie est facile: il suffit de lancer les balles au bon moment, de manière à avoir les mains libres lorsqu'elles tombent. Avec une balle ou deux balles, c'est trivial. Avec trois, c'est assez facile. Avec plus de balles, cela devient (étonnamment) plus difficile. Encore substantiellement plus difficile.

En général, le chiffrement «inversé» effectué à l'aide d'une clé n bits revient à jongler avec 2 n boules. Avec une clé de 2048 bits est comme ce 32317006071311007300714876688669951960444102669715484032130345427524655138867890893197201411522913463688717960921898019494119559150490921095088152386448283120630877367300996091750197750389652106796057638384067568276792218642619756161838094338476170470581645852036305042887575891541065808607552399123930385521914333389668342420684974786564569494856176035326322058077805659331026192708460314150258592864177116725943603718461857357598351152301645904403697613233287231227125684710820209725157101726931323469678542580656697935045997268352998638215525166389437335543602135433229604645318478604952148193555853611059596230656 balles. Ou alors.

(Bien sûr, comme les algorithmes à clé publique utilisent beaucoup de structure mathématique, les esprits intelligents ont exploité les mathématiques pour réduire ce nombre de balles à 162259276829213363391578010288128, ce qui est considérablement plus bas, mais toujours bien au-delà de l'agrégat puissance de tous les ordinateurs existants sur Terre.)

Hahaha! Pour être complet, pourriez-vous mentionner à quoi sert une métaphore?
Il s'agit d'une métaphore de la première ligne d'une exploration en profondeur d'un graphe qui représente le système de chiffrement exprimé sous la forme d'un automate à états finis.
@ThomasPornin: Excellente réponse! Pouvez-vous citer la valeur de "162259276829213363391578010288128"? Cela ressemble à 2 ^ 107, et j'ai trouvé ceci: https://www.imperialviolet.org/2011/04/09/multiprime.html, mais je me demandais si vous aviez une source plus fiable ou une explication que vous préfériez .
Il existe différents organismes qui tentent d'estimer la façon dont les tailles de clé RSA se comparent aux clés symétriques. En fin de compte, il n'y a pas une seule réponse puisque nous comparons des types d'algorithmes distincts (pour le craquage de clé symétrique, la RAM ne compte pas; alors qu'elle compte beaucoup pour la factorisation d'entiers). L'équivalence pour RSA est donc comprise entre environ 100 et 112 bits, selon la personne à qui vous demandez et ce que vous considérez comme une opération "unitaire". "107" dérivé de l'application brute de la complexité du [General Number Field Sieve] (http://en.wikipedia.org/wiki/General_number_field_sieve).
Si vous voulez des sources "faisant autorité", jetez un œil à [ce site] (http://www.keylength.com/en/). En particulier, l'application des équations d'ECRYPT II (à partir de leur dernier rapport annuel disponible, qui semble daté de 2012 ...) conduit à ce que RSA-2048 soit "équivalent" à un algorithme symétrique de 103 bits.
Cette réponse manque un peu le point car elle peut donner l'impression que le chiffrement avec une telle clé est une tâche tout aussi difficile.
Bien que cette réponse soit divertissante pour quiconque comprend réellement les bases de la cryptographie, elle n'est guère informative et je ne pense pas qu'elle réponde réellement à la question posée.
Rob
2015-04-23 07:31:56 UTC
view on stackexchange narkive permalink

Max, le meilleur outil jamais créé pour réfléchir à 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, ce qui, je pense, 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 (ie: même moyen les nombres sont irréalisables) - à moins que vous n'ayez le bon secret pour vous connecter à f_inverse. Ces paires de fonctions sont appelées trappes. Les trappes courantes sont des problèmes de théorie des nombres tels que la factorisation des nombres premiers et les logarithmes discrets.

Penser à un Rubik's Cube comme une analogie pour le cryptage conduirait à se poser la question du PO. Si je fais un tas d'étapes (la clé) avec un cube dans un état donné (texte en clair) pour finir avec un cube dans un état différent (texte chiffré), je peux alors faire les mêmes étapes en arrière pour revenir à l'état d'origine ( texte en clair). Que cela ne s'applique pas au cryptage asymétrique est la question posée.
Dans la notation de cube Rubiks, l'opération d'inversion et l'opération de commutation sont les mêmes. Pour inverser une opération, appliquez non seulement les fonctions inverses, mais appliquez-les dans l'ordre inverse. c'est-à-dire: (L * F * U) .inv == (U.inv * F.inv * L.inv). La différence avec le chiffrement asymétrique est que l'opération .inv est conçue pour être si inefficace que vous ne pouvez pas le faire sans l'aide d'une clé secrète.
Cette idée s'étend aux hachages. Un hachage est une fonction pour laquelle l'opération .inv est inefficace, et il n'y a pas de clé secrète pour la rendre efficace. Le chiffrement à clé symétrique est l'endroit où la clé .inv est efficace. c'est-à-dire: Msg * SymmetricKey = CipherText. CipherText * SymmetricKey == Msg. Parce que X * X.inv == 1.
Le fait est qu'il a en fait raison. Il n'est pas "impossible" d'annuler le cryptage. C'est inefficace. Non seulement cela, pour les systèmes de trappe que nous utilisons, il n'est même pas prouvé que c'est inefficace. Nous espérons que personne ne comprendra bientôt la factorisation principale.
BeepBeep
2015-04-22 19:16:03 UTC
view on stackexchange narkive permalink

Ce que vous devez faire est de lire sur la cryptographie à clé publique. La réponse courte est qu'il est basé sur un algorithme qui permet à une clé de crypter et à l'autre clé de faire le décryptage, c'est pourquoi vous ne pouvez pas travailler à l'envers.

C'est une explication simplifiée de ce qui se passe, si vous voulez aller au cœur du problème, vous pouvez consulter des sources telles que les suivantes, mais sachez que cela descend rapidement de la falaise dans quelques mathématiques qui peut ou non être facile à suivre pour vous: http://nrich.maths.org/2200

Et il y a une introduction plus simple sur http://doctrina.org/How-RSA-Works-With-Examples.html
woliveirajr
2015-04-23 17:43:47 UTC
view on stackexchange narkive permalink

Dans ce chiffrement à clé publique (ou inscription asymétrique), pour chiffrer quelque chose, vous faites ce qui suit:

Prenez votre message à transmettre (sous forme de nombre): disons qu'il est 5.

Calculez 3 ^ 5 (3 élevé au "secret") = 243

Calculez le module de celui-ci, divisé par un autre nombre: disons 143. Donc, 243/143 = 100.

Et voilà. Votre secret chiffré est 100.

Pour trouver le secret, sans la clé privée, il vous suffit de trouver un nombre qui, divisé par 143, en laisse 100, puis de trouver la base cubique de celui-ci.

D'où vient le 143? Quelle est la clé publique ici et quelle est la clé privée? Cette réponse laisse beaucoup à désirer, mais elle est réparable.
Merci @ChrisCudmore, je vais éditer pour l'améliorer comme vous l'avez commenté
Il semble que «5» soit le message.
Pete
2015-04-25 21:48:18 UTC
view on stackexchange narkive permalink

En général, vous ne pouvez pas travailler à rebours - de manière évidente - car vous ne disposez pas de suffisamment d'informations.

Le 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. Multiplier 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 est de jeter p et q, puis de 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 les logs, mais sans l'opération modulo, ce nombre serait trop grand pour travailler avec. 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 à l'envers de manière triviale.



Ce Q&R a été automatiquement traduit de la langue anglaise.Le contenu original est disponible sur stackexchange, que nous remercions pour la licence cc by-sa 3.0 sous laquelle il est distribué.
Loading...