Qu’est-ce que le cryptage RSA et comment fonctionne-t-il ?
Le cryptage RSA est un système qui résout ce qui était autrefois l'un des plus gros problèmes de cryptographie : Comment envoyer un message codé à quelqu'un sans avoir la possibilité de partager au préalable le code avec eux ?
Cet article vous apprendra tout ce que vous devez savoir sur comment le cryptage RSA a été développé , Comment ça fonctionne , le calcul derrière tout ça , à quoi il sert ainsi que certains des les plus gros problèmes de sécurité auxquels il est confronté . En savoir plus sur RSA vous donnera des connaissances de base qui vous aideront à comprendre combien d’éléments de notre vie en ligne sont sécurisés.
Qu’est-ce que le cryptage RSA ?
Disons que vous voulez révéler un secret à votre ami. Si vous êtes juste à côté d’eux, vous pouvez simplement le murmurer. Si vous êtes aux deux coins du pays, cela ne fonctionnera évidemment pas. Vous pouvez l'écrire et le leur envoyer par courrier, ou utiliser le téléphone, mais chacun de ces canaux de communication n’est pas sécurisé et toute personne suffisamment motivée pourrait facilement intercepter le message.
Si le secret était suffisamment important, vous ne prendriez pas le risque de l’écrire normalement : des espions ou un employé des postes malhonnêtes pourraient fouiller dans votre courrier. De même, quelqu’un pourrait mettre votre téléphone sur écoute à votre insu et enregistrer chaque appel que vous passez.
Une solution pour empêcher les oreilles indiscrètes d'accéder au contenu des messages consiste à le chiffrer . Cela signifie essentiellement ajouter un code au message qui le transforme en un désordre confus. Si votre code est suffisamment complexe, alors les seules personnes qui pourront accéder au message d'origine sont celles qui ont accès au code.
Si vous avez eu l'occasion de partager le code avec votre ami au préalable, alors chacun de vous peut envoyer un message crypté à tout moment , sachant que vous êtes les seuls à pouvoir lire le contenu du message. Mais que se passe-t-il si vous n’avez pas eu la possibilité de partager le code au préalable ?
C’est l’un des problèmes fondamentaux de la cryptographie, abordé par schémas de chiffrement à clé publique (également appelés chiffrement asymétrique) comme RSA .
Avec le cryptage RSA, les messages sont cryptés avec un code appelé Clé publique , qui peut être partagé ouvertement. En raison de certaines propriétés mathématiques distinctes de l'algorithme RSA, une fois qu'un message a été chiffré avec la clé publique, il ne peut être déchiffré que par une autre clé, dite clé privée . Chaque utilisateur RSA dispose d'une paire de clés composée de ses clés publique et privée. Comme son nom l’indique, la clé privée doit rester secrète.
Les schémas de chiffrement à clé publique diffèrent de chiffrement à clé symétrique, où les processus de chiffrement et de déchiffrement utilisent la même clé privée . Ces différences rendent le chiffrement à clé publique tel que RSA utile pour communiquer dans des situations où il n'y a eu aucune possibilité de distribuer les clés en toute sécurité au préalable.
Les algorithmes à clé symétrique ont leurs propres applications, telles que le cryptage de données pour un usage personnel ou lorsqu'il existe des canaux sécurisés sur lesquels les clés privées peuvent être partagées.
Voir également: Cryptographie à clé publique
Où le cryptage RSA est-il utilisé ?
Le cryptage RSA est souvent utilisé dans combinaison avec d'autres schémas de cryptage , ou pour signatures numériques qui peut prouver l’authenticité et l’intégrité d’un message. Il n’est généralement pas utilisé pour chiffrer des messages ou des fichiers entiers, car il est moins efficace et plus gourmand en ressources que le chiffrement à clé symétrique.
Pour rendre les choses plus efficaces, un fichier sera généralement chiffré avec un algorithme à clé symétrique, puis la clé symétrique sera chiffrée avec le chiffrement RSA. Dans le cadre de ce processus, seule une entité ayant accès à la clé privée RSA pourra déchiffrer la clé symétrique.
Sans pouvoir accéder à la clé symétrique, le le fichier original ne peut pas être déchiffré . Cette méthode peut être utilisée pour sécuriser les messages et les fichiers, sans prendre trop de temps ni consommer trop de ressources informatiques.
Le cryptage RSA peut être utilisé dans un certain nombre de systèmes différents. Il peut être implémenté dans OpenSSL, wolfCrypt, cryptlib et un certain nombre d'autres bibliothèques cryptographiques.
En tant que l'un des premiers systèmes de chiffrement à clé publique largement utilisés, RSA a jeté les bases d'une grande partie de nos communications sécurisées. C'était traditionnellement utilisé dans TLS et c'était aussi l'algorithme original utilisé dans Chiffrement PGP . RSA est toujours présent dans une gamme de navigateurs Web, de courrier électronique, de VPN, de chat et d'autres canaux de communication.
RSA est également souvent utilisé pour établir des connexions sécurisées entre les clients VPN et les serveurs VPN. Sous des protocoles comme OpenVPN, les poignées de main TLS peuvent utiliser l'algorithme RSA pour échanger des clés et établir un canal sécurisé.
Le contexte du cryptage RSA
Comme nous l’avons mentionné au début de cet article, avant le chiffrement à clé publique, il était difficile de communiquer en toute sécurité s’il n’y avait pas eu la possibilité d’échanger des clés en toute sécurité au préalable. S’il n’y avait pas la possibilité de partager le code à l’avance, ni un canal sécurisé par lequel les clés pourraient être distribuées, il n’y aurait aucun moyen de communiquer sans la menace d’ennemis capables d’intercepter et d’accéder au contenu du message.
Ce n’est que dans les années 1970 que les choses ont vraiment commencé à changer. Le premier développement majeur vers ce que nous appelons aujourd’hui la cryptographie à clé publique a été publié au début de la décennie par James H. Ellis. Ellis n'a pas trouvé de moyen de mettre en œuvre son travail, mais son collègue l'a développé. Clifford Bites pour devenir ce que nous appelons maintenant Cryptage RSA .
La dernière pièce du puzzle est ce que nous appelons maintenant le Échange de clés Diffie-Hellman . Malcolm J. Williamson, un autre collègue, a mis au point un système permettant à deux parties de partager une clé de cryptage, même si la chaîne était surveillée par des adversaires.
Tout ce travail a été réalisé au sein de l’agence de renseignement britannique, le Government Communications Quarters (GCHQ), qui a gardé la découverte classifiée . En partie à cause de limitations technologiques, le GCHQ ne voyait pas d’utilité à la cryptographie à clé publique à l’époque, de sorte que le développement restait les bras croisés sur les étagères, ramassant la poussière. Ce n'est qu'en 1997 que l'ouvrage a été déclassifié et que les inventeurs originaux du RSA ont été reconnus. .
Quelques années plus tard, des concepts similaires commençaient à se développer dans la sphère publique. Ralph Merkle a créé une première forme de cryptographie à clé publique , qui a influencé Whitfield Diffie et Martin Hellman dans la conception de l'échange de clés Diffie-Hellman.
Il manquait aux idées de Diffie et Hellman un aspect important qui ferait de leur travail le fondement de la cryptographie à clé publique. C'était un fonction à sens unique qui serait difficile à inverser . En 1977, Ron Rivest, Adi Shamir et Leonard Adleman , dont les noms forment l'acronyme RSA, a trouvé une solution après un an de travail sur le problème.
Les universitaires du MIT ont fait leur percée après une fête de Pâque en 1977. Après une nuit de beuverie, Rivest rentra chez lui, mais au lieu de dormir, il passa la soirée écrire fébrilement un article cela a formalisé son idée de la fonction à sens unique nécessaire.
L’idée a été brevetée en 1983 par le MIT, mais ce n’est qu’aux débuts d’Internet que l’algorithme RSA a commencé à être largement adopté en tant qu’outil de sécurité important.
Comment fonctionne le cryptage RSA ?
Ce qui suit va être un peu simpliste, car trop de lecteurs ont probablement été marqués par leur professeur de mathématiques au lycée. Pour éviter que les calculs ne deviennent trop incontrôlables, nous allons simplifier certains concepts et utiliser des nombres beaucoup plus petits . En réalité, le cryptage RSA utilise des nombres premiers d’une ampleur beaucoup plus grande et il existe quelques autres complexités.
Il existe plusieurs concepts différents que vous devrez comprendre avant de pouvoir expliquer comment tout cela s'articule. Ceux-ci inclus fonctions de trappe, génération de nombres premiers, fonction totale de Carmichael et les processus distincts impliqués dans calculer les clés publiques et privées utilisé dans les processus de cryptage et de décryptage.
Fonctions de la trappe
Le cryptage RSA fonctionne en partant du principe que l'algorithme est facile à calculer dans un sens, mais presque impossible dans l'autre sens . Par exemple, si on vous disait que 701 111 est le produit de deux nombres premiers, seriez-vous capable de comprendre ce que sont ces deux nombres ?
Même avec une calculatrice ou un ordinateur, la plupart d’entre nous ne sauraient pas par où commencer, et encore moins seraient capables de trouver la réponse. Mais si on inverse les choses, cela devient beaucoup plus facile. Quel est le résultat de :
907 x 773
Si vous vous ennuyiez suffisamment, vous auriez pu sortir votre téléphone ou peut-être le calculer dans votre tête pour découvrir que la réponse est le 701 111 mentionné précédemment. Ces 907 et 773 sont les nombres premiers qui répondent à notre première question, qui nous montre que certaines équations peuvent être faciles à comprendre dans un sens, mais apparemment impossibles dans l'autre sens.
Un autre aspect intéressant de cette équation est qu’il est simple de déterminer l’un des nombres premiers si l’on connaît déjà l’autre, ainsi que le produit. Si on vous dit que 701 111 est le résultat de 907 multiplié par un autre nombre premier, vous pouvez déterminer l’autre nombre premier avec l’équation suivante :
701 111 ÷ 907 = 773
Puisque la relation entre ces nombres est simple à calculer dans un sens, mais incroyablement difficile à calculer dans l’autre sens, l’équation est connue sous le nom de fonction trappe . Sachez que même si l’exemple ci-dessus est difficile à comprendre, les ordinateurs peuvent effectuer l’opération en un temps record.
Pour cette raison, RSA utilise des nombres beaucoup plus grands. La taille des nombres premiers dans une implémentation réelle de RSA varie, mais dans un RSA de 2 048 bits, ils se rassembleraient pour créer des clés de 617 chiffres. Pour vous aider à le visualiser, une clé serait un nombre de cette taille :
99999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 999 999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 99999999999999999999999 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 99999999999999999999999999999 999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 99999999999999999999999999999999999999999999999999999999999999999999999999999999999999 9999
Générer des nombres premiers
Les fonctions de trappe mentionnées ci-dessus constituent la base du fonctionnement des systèmes de chiffrement à clé publique et privée. Leurs propriétés permettent de partager des clés publiques sans mettre en danger le message ni révéler la clé privée . Ils permettent également de chiffrer les données avec une clé de manière à ce qu'elles ne puissent être déchiffrées que par l'autre clé de la paire.
La première étape du chiffrement d'un message avec RSA consiste à générer les clés . Pour ce faire, nous avons besoin deux nombres premiers ( p et q ) qui sont sélectionnés avec un test de primalité. Un test de primalité est un algorithme qui trouve efficacement les nombres premiers, tels que Test de primalité de Rabin-Miller .
Les nombres premiers en RSA doivent être très grands et relativement éloignés les uns des autres. Les nombres petits ou plus rapprochés sont beaucoup plus faciles à déchiffrer. Malgré cela, notre exemple utilisera des nombres plus petits pour rendre les choses plus faciles à suivre et à calculer.
Disons que le test de primalité nous donne les nombres premiers que nous avons utilisés ci-dessus, 907 et 773. L'étape suivante consiste à découvrir le module (n), en utilisant la formule suivante :
n=pXq
Oùp= 907 etq= 773
Donc:
n= 907 x 773
n= 701 111
Fonction totale de Carmichael
Une fois que nous avonsn, nous utilisons Fonction totale de Carmichael :
je(n) =lcm(p−1,q−1)
Si cela fait un moment que vous n’avez pas lu les manuels de mathématiques, ce qui précède peut paraître un peu terrifiant. Vous pouvez ignorer cette partie et simplement avoir confiance que les calculs fonctionnent, sinon restez avec nous pour quelques calculs supplémentaires. Tout sera expliqué de la manière la plus détaillée possible pour vous aider à comprendre les bases.
Pour ceux qui ne le savent pas, λ(n) représente le total de Carmichael pour n , alors que lcm signifie le plus petit commun multiple , qui est le nombre le plus petit que les deuxpetqpeut se diviser en. Il existe plusieurs façons de comprendre cela, mais la plus simple est de faire confiance à un calculateur en ligne pour faire l'équation pour vous. Alors mettons nos chiffres dans l’équation :
je(701 111) =lcm(907−1,773−1)
je(701 111) =lcm(906, 772)
En utilisant le calculateur lié ci-dessus, cela nous donne :
je ( 701 111 ) = 349 716
Générer la clé publique
Maintenant que nous avons le total de Carmichael de nos nombres premiers, c’est il est temps de découvrir notre clé publique. Au titre du RSA, les clés publiques sont constituées d'un nombre premier et , ainsi que le module n (nous expliquerons ce que signifie module dans quelques paragraphes). Le nombreetpeut être n'importe quoi entre 1 et la valeur deje(n), qui dans notre exemple est 349 716.
La clé publique étant partagée ouvertement, elle n’est pas si importante pouretêtre un nombre aléatoire. En pratique,etest généralement fixé à 65 537 , car lorsque des nombres beaucoup plus grands sont choisis au hasard, le cryptage est beaucoup moins efficace. Pour l’exemple d’aujourd’hui, nous garderons les nombres petits pour rendre les calculs efficaces. Disons:
et= 11
Nos données chiffrées finales sont appelées le texte chiffré (c). Nous le déduisons de notre message en clair (m), en appliquant la clé publique avec la formule suivante :
c=metcontre m
Comme nous l'avons mentionné,etcontre mest la clé publique. Nous avons déjà conçuetet nous savonsnaussi. La seule chose que nous devons expliquer estcontre. C’est un peu hors du sujet de cet article, mais il fait référence à un fonctionnement modulo , ce qui signifie essentiellement le reste restant lorsque vous divisez un côté par l’autre. Par exemple:
dixcontre3 = 1
En effet, 3 entre trois fois dans 10, avec un reste de 1.
Revenons à notre équation. Pour faire simple, disons que le message ( m ) que nous souhaitons chiffrer et garder secret n'est qu'un seul numéro, 4 . Branchons tout :
c=metcontre n
c= 4onze contre 701 111
c= 4 194 304contre701 111
Encore une fois, pour faire le fonctionnement modulo facile, nous utiliserons un calculateur en ligne , mais vous pouvez le découvrir par vous-même. En saisissant 4 194 304 dans le calculateur en ligne, cela nous donne :
c= 688 749
Par conséquent, lorsque nous utilisons RSA pour chiffrer notre message, 4 , avec notre clé publique, cela nous donne le texte chiffré de 688 749 . Les étapes précédentes ont peut-être semblé un peu trop mathématiques, mais il est important de réitérer ce qui s’est réellement passé.
Nous avions un message du 4 , que nous voulions garder secret. Nous lui avons appliqué une clé publique, ce qui nous a donné le résultat crypté de 688 749 . Maintenant qu'il est crypté, nous pouvons envoyer en toute sécurité le numéro 688 749 au propriétaire de la paire de clés . Ils sont les seuls à pouvoir le déchiffrer avec leur clé privée. Quand ils le décrypteront, ils verront le message que nous envoyions réellement, 4 .
Générer la clé privée
Dans le cryptage RSA, une fois qu'une donnée ou un message a été transformé en texte chiffré avec une clé publique, il ne peut être déchiffré que par la clé privée de la même paire de clés. Les clés privées sont composées de d et n . Nous savons déjàn,et l'équation suivante est utilisée pour trouverd:
d=1/etmod l(n)
Dans le Générer la clé publique section ci-dessus, nous avons déjà décidé que dans notre exemple,etserait égal à 11. De même, nous savons queje(n) est égal à 349 716 d’après nos travaux antérieurs sous Fonction totale de Carmichael . Les choses se compliquent un peu quand on tombe sur cette section de la formule :
1/etcontre
Cette équation peut sembler vous demander de diviser 1 par 11, mais ce n’est pas le cas. Au lieu de cela, cela symbolise simplement que nous devons calculer le inverse modulaire deet(qui dans ce cas est 11) etje(n) (qui dans ce cas est 349 716).
Cela signifie essentiellement que au lieu d'effectuer une opération modulo standard, nous utiliserons plutôt l'inverse . Ceci se trouve normalement avec l’algorithme euclidien étendu, mais cela sort un peu du cadre de cet article, nous allons donc simplement tricher et utiliser un calculateur en ligne plutôt. Maintenant que nous comprenons tout ce qui se passe, insérons nos informations dans la formule :
d=1/onzecontre349 716
Pour effectuer cette opération, saisissez simplement 11 (ou toute valeur que vous pourriez avoir pouretsi vous essayez cela avec votre propre exemple) où il est dit Entier et 349 716 (ou toute valeur que vous pourriez avoir pourje(n) si vous essayez cela avec votre propre exemple) où il est dit Module dans le calculateur en ligne lié ci-dessus. Si vous l'avez fait correctement, vous devriez obtenir un résultat où :
d= 254, 339
Maintenant que nous avons la valeur ded, nous pouvons décrypter les messages chiffrés avec notre clé publique en utilisant la formule suivante :
m=cdcontre m
Nous pouvons maintenant revenir au texte chiffré que nous avons chiffré sous le Générer la clé privée section. Lorsque nous avons chiffré le message avec la clé publique, cela nous a donné une valeur pour c de 688 749 . D'en haut, nous savons que d est égal à 254 339 . Nous savons aussi que n est égal à 701 111 . Cela nous donne :
m= 688 749254 339 contre701 111.
Comme vous l'avez peut-être remarqué, essayer de porter un nombre à la puissance 254 339 peut s'avérer un peu excessif pour la plupart des calculatrices normales. Au lieu de cela, nous utiliserons un outil en ligne Calculateur de décryptage RSA . Si vous souhaitez utiliser une autre méthode, vous appliquerez les puissances comme vous le feriez normalement et effectuerez l'opération de module de la même manière que nous l'avons fait dans l'exemple précédent. Générer la clé publique section.
Dans la calculatrice liée ci-dessus, entrez 701 111 là où il est indiqué Module d'alimentation : N , 254 399 où il est écrit Clé de décryptage : D , et 688 749 où il est écrit Message chiffré sous forme numérique , comme indiqué ci-dessous:
Une fois que vous avez saisi les données, appuyez sur Décrypter , qui soumettra les numéros à la formule de décryptage répertoriée ci-dessus. Cela vous donnera le message original dans la case ci-dessous. Si vous avez tout fait correctement, vous devriez obtenir une réponse de 4 , qui était le message original que nous avons chiffré avec notre clé publique.
Comment fonctionne le cryptage RSA en pratique
Les sections ci-dessus devraient vous donner une compréhension raisonnable du fonctionnement des calculs derrière le chiffrement à clé publique. Cela peut être un peu déroutant, mais même ceux qui n’ont pas compris les subtilités des équations pourront, espérons-le, retenir des informations importantes sur le processus.
Dans les étapes listées ci-dessus, nous avons montré comment deux entités peuvent communiquer en toute sécurité sans avoir préalablement partagé un code. Premièrement, ils doivent chacun configurer leurs propres paires de clés et partager la clé publique entre eux . Les deux entités doivent garder leurs clés privées secrètes afin que leurs communications restent sécurisées.
Une fois que l’expéditeur dispose de la clé publique de son destinataire, il peut l’utiliser pour crypter les données qu’il souhaite sécuriser. Une fois chiffré avec une clé publique, il ne peut être déchiffré que par la clé privée de la même paire de clés. . Même la même clé publique ne peut pas être utilisée pour décrypter les données. Cela est dû aux propriétés de fonctions de la trappe que nous avons évoqué plus haut.
Lorsque le destinataire reçoit le message crypté, il utilise sa clé privée pour accéder aux données. Si le destinataire souhaite renvoyer les communications de manière sécurisée, ils peuvent ensuite chiffrer leur message avec la clé publique de l'interlocuteur avec lequel ils communiquent . Encore une fois, une fois qu'elles ont été chiffrées avec la clé publique, la seule façon d'accéder aux informations est via la clé privée correspondante.
De cette manière, le cryptage RSA peut être utilisé par des parties jusque-là inconnues pour envoyer des données en toute sécurité entre elles. Des pans importants des canaux de communication que nous utilisons dans nos vies en ligne ont été construits sur cette base.
Comment les messages plus complexes sont-ils chiffrés avec RSA ?
Dans notre exemple, nous avons beaucoup simplifié les choses pour que ce soit plus facile à comprendre, c'est pourquoi nous n'avons chiffré qu'un message de « 4 ». Pouvoir chiffrer le chiffre 4 ne semble pas particulièrement utile, alors vous vous demandez peut-être comment chiffrer un ensemble de données plus complexe , comme une clé symétrique (qui est l'utilisation la plus courante de RSA), ou même un message.
Certaines personnes peuvent être perplexes quant à la façon dont une clé comme « n38cb29fkbjh138g7fqijnf3kaj84f8b9f… » ou un message comme « achète-moi un sandwich » peut être crypté par un algorithme comme RSA, qui traite des chiffres et non des lettres. La réalité est que toutes les informations traitées par nos ordinateurs sont stockées en binaire (1 et 0) et nous utilisons des normes de codage telles que ASCII ou Unicode pour les représenter d'une manière que les humains peuvent comprendre (lettres).
Cela signifie que des touches comme « n38cb29fkbjh138g7fqijnf3kaj84f8b9f… » et des messages comme « achète-moi un sandwich » existent déjà sous forme de chiffres , qui peut facilement être calculé dans l'algorithme RSA. Les nombres par lesquels ils sont représentés sont beaucoup plus grands et plus difficiles à gérer pour nous, c'est pourquoi nous préférons traiter avec des caractères alphanumériques plutôt qu'avec un fouillis de caractères binaires.
Si tu voulais chiffrer une clé de session plus longue ou un message plus complexe avec RSA, cela impliquerait simplement un nombre beaucoup plus important .
Rembourrage
Lorsque RSA est implémenté, il utilise quelque chose appelé rembourrage pour aider à prévenir un certain nombre d'attaques . Pour expliquer comment cela fonctionne, nous commencerons par un exemple. Disons que vous envoyiez un message codé à un ami :
Chère Karen,
J'espère que tu vas bien. Est-ce qu'on dîne encore demain ?
Cordialement,
James
Disons que vous avez codé le message de manière simple, en changer chaque lettre par celle qui la suit dans l'alphabet . Cela changerait le message en :
Efbs Lbsfo,
J ipqf zpv bsf xfmm. Bsf xf tujmm ibwjoh ejoofs upnpsspx ?
zpvst tjodfsfmz,
Kbnft
Si vos ennemis ont intercepté cette lettre, il existe une astuce qu'ils pourraient utiliser pour tenter de déchiffrer le code. Ils pourraient regardez le format de votre lettre et essayez de deviner ce que pourrait dire le message. Ils savent que les gens commencent normalement leurs lettres par « Salut », « Bonjour », « Cher » ou un certain nombre d'autres conventions.
S’ils essayaient d’appliquer « Salut » ou « Bonjour » comme premier mot, ils verraient que cela ne correspondrait pas au nombre de caractères. Ils pourraient alors essayer « Cher ». Cela convient, mais cela ne veut forcément rien dire. Les attaquants essayaient simplement de le faire et voyaient où cela les menait. Ils remplaceraient donc les lettres « e », « f », « b » et « s » par « d », « e », « a » et « r » respectivement. Cela leur donnerait :
Cher Laséo,
J ipqe zpv sont xemm. Est-ce que xe tujmm iawjoh djooes upnpsspx ?
Zpvrt tjoderemz,
Canard
Cela semble encore assez déroutant, donc les attaquants pourraient essayer d'examiner d'autres conventions, comme la façon dont nous concluons nos lettres . Les gens ajoutent souvent « De » ou « Cordialement » à la fin, mais aucun de ces éléments ne correspond au format. Au lieu de cela, les attaquants pourraient essayer « Votre sincèrement » et remplacer les autres lettres pour voir où cela les mène. En remplaçant « z », « p », « v », « t », « j », « o », « d » et « m » par « y », « o », « u », « s », « i', 'n', 'c' et 'l' respectivement, ils obtiendraient :
Cher Lasen,
Je ioqe tu es xell. Est-ce que tuill iawinh dinnes uonossox ?
Cordialement,
Canard
Après cette modification, il semble que les attaquants commencent à avancer quelque part. Ils ont trouvé les mots « je », « tu » et « êtes », en plus des mots qui constituaient leurs suppositions initiales.
Étant donné que les mots sont dans l’ordre grammatical correct, les attaquants peuvent être sûrs qu’ils vont dans la bonne direction. À présent, ils ont probablement également réalisé que le code impliquait que chaque lettre soit remplacée par celle qui la suit dans l’alphabet. Une fois qu'ils s'en rendent compte, il est facile de traduire le reste et de lire le message original. .
L'exemple ci-dessus n'était qu'un simple code, mais comme vous pouvez le voir, la structure d'un message peut donner aux attaquants des indices sur son contenu . Bien sûr, il a été difficile de comprendre le message uniquement à partir de sa structure et cela a nécessité quelques conjectures éclairées, mais vous devez garder à l’esprit que les ordinateurs sont bien meilleurs que nous pour ce faire. Cela signifie qu'ils peuvent être utilisés pour comprendre des codes beaucoup plus complexes en un temps beaucoup plus court. , basé sur des indices provenant de la structure et d’autres éléments.
Si la structure peut conduire au piratage d'un code et révéler le contenu d'un message, nous avons alors besoin d'un moyen de masquer la structure afin de garantir la sécurité du message. Cela nous amène à rembourrage .
Lorsqu'un message est complété, des données aléatoires sont ajoutées pour masquer les indices de formatage d'origine qui pourraient conduire à la rupture d'un message crypté . Avec RSA, les choses sont un peu plus compliquées, car une clé chiffrée n’a pas le format évident d’une lettre qui nous a aidé à nous donner des indices dans notre exemple ci-dessus.
Malgré cela, les adversaires peuvent recourir à un certain nombre d’attaques pour exploiter les propriétés mathématiques d’un code et pirater des données chiffrées. En raison de cette menace, les implémentations de RSA utilisent des schémas de remplissage comme OAEP pour intégrer des données supplémentaires dans le message . L'ajout de ce remplissage avant que le message ne soit chiffré rend RSA beaucoup plus sécurisé.
Signer des messages
RSA peut être utilisé pour bien plus que le simple chiffrement de données. Ses propriétés en font également un système utile pour confirmer qu'un message a été envoyé par l'entité qui prétend l'avoir envoyé, ainsi que prouver qu'un message n'a pas été modifié ou falsifié .
Quand quelqu'un veut prouver l'authenticité de son message, il peut calculer un hacher (une fonction qui prend des données d'une taille arbitraire et les transforme en une valeur de longueur fixe) du texte brut, puis signez-le avec leur clé privée. Ils signez le hachage en appliquant la même formule que celle utilisée pour le décryptage (m = cdcontre m). Une fois le message signé, ils envoient cette signature numérique au destinataire avec le message.
Si un destinataire reçoit un message avec une signature numérique, il peut utiliser le signature pour vérifier si le message a été authentiquement signé par la clé privée de la personne qui prétend l'avoir envoyé . Ils peuvent également voir si le message a été modifié par des attaquants après son envoi.
Pour vérifier la signature numérique, le destinataire utilise d'abord la même fonction de hachage pour trouver la valeur de hachage du message qu'il a reçu. Le destinataire applique ensuite le clé publique de l'expéditeur à la signature numérique, en utilisant la formule de cryptage (c = metcontre n),pour leur donner le hachage de la signature numérique.
Par comparer le hachage du message reçu avec le hachage de la signature numérique cryptée , le destinataire peut savoir si le message est authentique. Si les deux valeurs sont identiques, le message n'a pas été modifié depuis sa signature par l'expéditeur d'origine. Si le message avait été modifié ne serait-ce que par un seul caractère, la valeur de hachage serait complètement différente.
Sécurité et attaques RSA
Comme la plupart des systèmes cryptographiques, la sécurité de RSA dépend de la manière dont il est mis en œuvre et utilisé. Un facteur important est la taille de la clé. Le plus le nombre de bits dans une clé (essentiellement la longueur de la clé), plus il est difficile de déjouer les attaques telles que le forcement brut et l'affacturage.
Étant donné que les algorithmes à clé asymétrique tels que RSA peuvent être brisés par une factorisation entière, alors que les algorithmes à clé symétrique comme AES ne le peuvent pas, les clés RSA doivent être beaucoup plus longues pour atteindre le même niveau de sécurité.
Actuellement, le la plus grande taille de clé prise en compte est de 768 bits . Cela a été fait par un équipe d'universitaires sur une période de deux ans, en utilisant des centaines de machines.
Étant donné que l'affacturage a été achevé fin 2009 et que la puissance de calcul a considérablement augmenté depuis lors, on peut supposer qu'une tentative d'intensité similaire pourrait désormais prendre en compte une clé RSA beaucoup plus grande .
Malgré cela, le temps et les ressources nécessaires à ce type d’attaque la mettent hors de portée de la plupart des pirates informatiques et relèvent du domaine des États-nations. La meilleure longueur de clé à utiliser dépendra de votre modèle de menace individuel. L'Institut national des normes et de la technologie recommande une taille de clé minimale de 2048 bits , mais des clés de 4096 bits sont également utilisées dans certaines situations où le niveau de menace est plus élevé.
L’affacturage n’est qu’un moyen parmi d’autres de briser le RSA. Un certain nombre d'autres attaques ont le potentiel de briser le chiffrement avec une quantité moindre de ressources, mais celles-ci dépendent de la mise en œuvre et d'autres facteurs, pas nécessairement de RSA lui-même. Certains d'entre eux incluent :
Les nombres premiers sont-ils vraiment aléatoires ?
Certaines implémentations de RSA utilisent des générateurs de nombres aléatoires faibles pour générer les nombres premiers. Si ces chiffres ne sont pas suffisamment aléatoires, il est beaucoup plus facile pour les attaquants de les prendre en compte et de briser le cryptage. Ce problème peut être évité en utilisant un générateur de nombres pseudo-aléatoires cryptographiquement sécurisé .
Mauvaise génération de clé
Les clés RSA doivent respecter certains paramètres pour qu’elles soient sécurisées. Si les nombres premiers p et q sont trop rapprochés, la clé peut facilement être découverte . De même, le numéro d qui constitue une partie de la clé privée ne peut pas être trop petit . Une valeur faible facilite la résolution. Il est important que ces numéros soient d’une longueur adéquate pour assurer la sécurité de votre clé.
Attaques par canal secondaire
Il s’agit d’un type d’attaque qui ne brise pas directement RSA, mais utilise plutôt les informations de sa mise en œuvre pour donner aux attaquants des indications sur le processus de chiffrement. Ces attaques peuvent inclure des choses comme analyser la quantité d'énergie utilisée , ou analyse de prédiction de branche , qui utilise des mesures de temps d'exécution pour découvrir la clé privée.
Un autre type d’attaque par canal secondaire est connu sous le nom d’attaque temporelle. Si un attaquant a la possibilité de mesurer le temps de décryptage sur l’ordinateur de sa cible pour un certain nombre de messages cryptés différents, ces informations peuvent permettre à l’attaquant de connaître la clé privée de la cible .
La plupart des implémentations de RSA évitent cette attaque en ajoutant une valeur unique lors du processus de chiffrement, ce qui supprime cette corrélation. Ce processus est appelé aveuglement cryptographique .
Le cryptage RSA est-il sûr pour l’avenir ?
La bonne nouvelle est que RSA est actuellement considéré comme sûr à utiliser, malgré ces attaques possibles. La mise en garde est que il doit être implémenté correctement et utiliser une clé qui correspond aux paramètres corrects. Comme nous venons de le dire, les implémentations qui n’utilisent pas de remplissage, qui utilisent des nombres premiers de taille inadéquate ou qui présentent d’autres vulnérabilités ne peuvent pas être considérées comme sûres.
Si vous souhaitez utiliser le cryptage RSA, assurez-vous que vous utilisez une clé d'au moins 1024 bits . Ceux qui présentent des modèles de menace plus élevés doivent s'en tenir à des clés de 2 048 ou 4 096 bits s'ils souhaitent utiliser RSA en toute confiance.
Tant que vous êtes conscient des faiblesses de RSA et que vous l'utilisez correctement, vous devriez vous sentir en sécurité lorsque vous utilisez RSA pour le partage de clés et d'autres tâches similaires nécessitant un cryptage par clé publique.
Même si le RSA est sûr pour l’instant, l’essor de l’informatique quantique devrait poser certains défis à l’avenir.
L’informatique quantique affectera-t-elle le RSA ?
Le domaine de l’informatique quantique continue de progresser régulièrement, mais il faudra encore quelques années avant qu’il soit vraiment utilisé en dehors du contexte de la recherche. Si les ordinateurs quantiques ont un immense potentiel pour faire progresser nos capacités, ils entraîneront également certaines complications dans le monde de la cryptographie.
En effet, les ordinateurs quantiques peuvent être capables de résoudre facilement certains problèmes qui sont actuellement considérés comme extrêmement difficiles, et cette difficulté est souvent ce qui sécurise nos systèmes cryptographiques. Dans le cas d'algorithmes à clé symétrique comme AES, de puissants ordinateurs quantiques exécutant L'algorithme de Grover serait capable d’accélérer considérablement les attaques.
Bien que cela représente certainement une menace pour nos mécanismes cryptographiques actuels, il est également relativement facile à corriger. Il suffira de doubler la taille de la clé pour protéger ces algorithmes à clé symétrique.
Lorsqu’il s’agit de cryptographie à clé publique comme RSA, nous sommes confrontés à un problème bien plus important. Une fois que les ordinateurs quantiques seront suffisamment puissants pour pouvoir exécuter efficacement l’algorithme de Shor, il sera possible de résoudre les trois problèmes mathématiques suivants :
- Le problème de factorisation entière
- Le problème de logarithme discret
- Le problème de logarithme discret à courbe elliptique
C’est une mauvaise nouvelle, car la sécurité de nos algorithmes à clé publique les plus couramment utilisés repose sur le principe selon lequel il est actuellement impossible de les résoudre avec les ressources informatiques actuelles. Dans le cas de RSA, c’est le problème de la factorisation entière.
Même si l’informatique quantique et l’algorithme de Shor constituent certainement une menace future pour RSA, la bonne nouvelle est que nous avons le temps de modifier notre infrastructure cryptographique pour assurer notre sécurité future.
Bien qu’il soit difficile de savoir exactement quand il sera possible pour les ordinateurs quantiques de briser le RSA, d’importants travaux de recherche et de développement sont déjà en cours. L’Institut national américain des normes et technologies (NIST) est actuellement en train de solliciter et d’évaluer divers algorithmes à clé publique qui seront sécurisés dans un monde post-quantique.
Au moment de la rédaction de cet article, le NIST en est à troisième tour et évalue actuellement 15 candidats pour la cryptographie à clé publique et les signatures numériques. La normalisation est un processus lent, il faudra donc encore plusieurs années avant que les algorithmes finaux soient sélectionnés. D’ici là, nous n’avons pas trop de raisons de nous inquiéter, car les menaces de l’informatique quantique sont encore plus lointaines.
Voir également: Types de cryptage courants expliqués