le cryptage RSA est un système qui résout ce qui était autrefois l’un des plus gros problèmes de cryptographie: Comment Pouvez-vous envoyer un message codé à quelqu’un sans avoir la possibilité de partager le code avec lui?
Cet article vous apprendra tout ce que vous devez savoir sur la façon dont le cryptage RSA a été développé, comment il fonctionne, les mathématiques derrière, ce qu’il est utilisé ainsi que certains des plus grands problèmes de sécurité auxquels il est confronté., L’apprentissage de RSA vous donnera des connaissances fondamentales qui vous aideront à comprendre combien de parties de notre vie en ligne sont sécurisées.
qu’est-ce que le chiffrement RSA?
disons que vous voulez dire à votre ami un secret. Si vous êtes juste à côté d’eux, vous pouvez simplement murmure. Si vous êtes de l’autre côté du pays, cela ne fonctionnera évidemment pas. Vous pouvez l’écrire et l’envoyer par la poste ou utiliser le téléphone, mais chacun de ces canaux de communication n’est pas sûr et toute personne suffisamment motivée pourrait facilement intercepter le message.,
Si le secret était assez important, vous ne risqueriez pas de l’écrire normalement–des espions ou un employé postal voyous pourraient regarder dans votre courrier. De même, quelqu’un pourrait taper sur votre téléphone à votre insu et enregistrer chaque appel que vous faites.
Une solution pour empêcher les écoutes d’accéder au contenu du message consiste à le crypter. Cela signifie essentiellement ajouter un code au message qui le transforme en un désordre confus. Si votre code est suffisamment complexe, les seules personnes qui pourront accéder au message d’origine sont celles qui ont accès au code.,
Si vous avez eu la chance de partager le code avec votre ami au préalable, l’un ou l’autre 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 chance de partager le code au préalable?
c’est L’un des problèmes fondamentaux de la cryptographie, qui a été résolu par des systèmes de chiffrement à clé publique (également connus sous le nom de chiffrement asymétrique) comme RSA.
sous le chiffrement RSA, les messages sont chiffrés avec un code appelé clé publique, qui peut être partagé ouvertement., En raison des propriétés mathématiques de l’algorithme RSA, une fois qu’un message a été chiffré avec la clé publique, il ne peut être déchiffré par une autre clé, la clé privée. Chaque utilisateur RSA dispose d’une paire de clés composée de leurs clés publiques et privées. Comme son nom l’indique, la clé privée doit être gardée secrète.
Les schémas de chiffrement à clé publique diffèrent du chiffrement à clé symétrique, où le processus de chiffrement et de déchiffrement utilise la même clé privée., Ces différences rendent le chiffrement à clé publique comme RSA utile pour communiquer dans des situations où il n’y a eu aucune possibilité de distribuer des clés en toute sécurité au préalable.
les algorithmes à clé symétrique ont leurs propres applications, telles que le cryptage des 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 aussi: cryptographie à clé publique
où le chiffrement RSA est-il utilisé?
le chiffrement RSA est souvent utilisé en combinaison avec d’autres systèmes de chiffrement, ou pour les signatures numériques qui peuvent 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 lourd 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 cryptage RSA. Dans le cadre de ce processus, seule une entité qui a accès à la clé privée RSA sera en mesure de déchiffrer la clé symétrique.
Sans pouvoir accéder à la clé symétrique, le fichier d’origine 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 ou consommer trop de ressources de calcul.
le chiffrement 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. Il était traditionnellement utilisé dans TLS et était également l’algorithme d’origine utilisé dans le cryptage PGP., RSA est toujours visible dans une gamme de navigateurs web, e-mail, VPN, chat et 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, TLS handshakes peut utiliser L’algorithme RSA pour échanger des clés et établir un canal sécurisé.
l’arrière-plan du chiffrement 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 de chance 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, ou un canal sécurisé par lequel les clés pourraient être distribuées, il n’y avait aucun moyen de communiquer sans la menace d’ennemis pouvant intercepter et 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 maintenant la cryptographie à clé publique a été publié au début de la décennie par James H. Ellis., Ellis n’a pas pu trouver un moyen de mettre en œuvre son travail, mais il a été développé par son collègue Clifford Cocks pour devenir ce que nous connaissons maintenant sous le nom de cryptage RSA.
la dernière pièce du puzzle est ce que nous appelons maintenant L’échange de clés Diffie-Hellman. Malcolm J. Williamson, un autre collègue, a mis au point un système qui permettait à deux parties de partager une clé de cryptage, même si le canal était surveillé par des adversaires.
Tout ce travail a été entrepris à L’agence de renseignement britannique, le Government Communications Headquarters (GCHQ), qui a gardé la découverte classifiée., En partie en raison de limitations technologiques, le GCHQ ne pouvait pas voir une utilisation pour la cryptographie à clé publique à l’époque, de sorte que le développement restait les bras croisés sur l’étagère. Ce n’est qu’en 1997 que l’œuvre a été déclassifiée et que les inventeurs originaux de RSA ont été reconnus.
Plusieurs 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.,
Les idées de Diffie et Hellman manquaient d’un aspect important qui ferait de leur travail une base de la cryptographie à clé publique. C’était une fonction qui serait difficile à inverser. En 1977, Ron Rivest, Adi Shamir et Leonard Adleman, dont les noms de famille forment L’acronyme RSA, ont 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 est rentré chez lui, mais au lieu de dormir, il a passé la soirée fébrilement à écrire un papier qui formalisait 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’au début de l’Internet que L’algorithme RSA a commencé à être largement adopté comme un outil de sécurité important.
Comment fonctionne le chiffrement RSA?
ce qui suit va être un peu une simplification, parce que trop de lecteurs ont probablement été marqués par leur professeur de mathématiques de lycée., Pour éviter que les mathématiques 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 beaucoup plus importants et il existe quelques autres complexités.
Il y a plusieurs concepts différents que vous devrez obtenir votre tête autour avant que nous puissions expliquer comment tout cela va ensemble. Il s’agit notamment des fonctions trapdoor, de la génération de nombres premiers, de la fonction Totient de Carmichael et des processus distincts impliqués dans le calcul des clés publiques et privées utilisées dans les processus de chiffrement et de déchiffrement.,
trappe fonctions
de cryptage RSA fonctionne selon le principe que l’algorithme est facile à calculer, dans un sens, mais presque impossible dans le sens inverse. Par exemple, si on vous disait que 701 111 est un 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 n’auraient aucune idée de par où commencer, et encore moins être en mesure de trouver la réponse. Mais si nous retournons 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. Ce 907 et 773 sont les nombres premiers qui répondent à notre première question, ce qui nous montre que certaines équations peuvent être faciles à comprendre dans un sens, mais apparemment impossibles à l’envers.
un Autre aspect intéressant de cette équation est qu’elle est simple à comprendre, l’un des premiers numéros si vous avez déjà de 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 comprendre 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 en sens inverse, l’équation est connue comme une fonction de trappe. Sachez que bien que l’exemple ci-dessus soit difficile à comprendre pour les gens, les ordinateurs peuvent effectuer l’opération en un temps insignifiant.
pour cette raison, RSA utilise des nombres beaucoup plus grands., La taille des nombres premiers dans une implémentation RSA réelle varie, mais dans RSA 2048 bits, ils se réuniraient pour créer des clés de 617 chiffres. Pour vous aider à le visualiser, une clé serait un nombre de cette taille:
générer des nombres premiers
Les fonctions de trappe mentionnées ci-dessus forment la base du fonctionnement des schémas de chiffrement à clé publique et privée. Leurs propriétés permettent de partager des clés publiques sans mettre en danger le message ou révéler la clé privée. Ils permettent aussi à des données chiffrées avec une clé d’une manière qui ne peut être déchiffré 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 de 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 des nombres premiers, tels que le test de primalité de Rabin-Miller.
Les nombres premiers dans RSA doivent être très grands, et aussi relativement éloignés les uns des autres. Les nombres qui sont 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é ci-dessus, 907 et 773. L’étape suivante consiste à découvrir le module (n), en utilisant la formule suivante:
N = P X q
où P = 907 et q = 773
Par conséquent:
N = 907 x 773
n = 701,111
fonction Totient de Carmichael
Une fois que nous avons n, Nous utilisons fonction totient:
λ(N) = LCM (p − 1, Q − 1)
si cela fait un moment que vous n’avez pas atteint les manuels de mathématiques, ce qui précède peut sembler un peu terrifiant., Vous pouvez sauter cette partie et simplement faire confiance que les mathématiques fonctionnent, sinon restez avec nous pour quelques calculs supplémentaires. Tout sera expliqué avec autant de détails que possible pour vous aider à vous familiariser avec les bases.
pour ceux qui ne le savent pas, λ(n) représente le totient de Carmichael pour n, tandis que lcm signifie le multiple commun le plus bas, qui est le nombre le plus bas en lequel p et q peuvent se diviser. Il existe plusieurs façons de comprendre cela, mais le plus simple est de faire confiance à une calculatrice en ligne pour faire l’équation pour vous., Donc, il faut mettre les chiffres dans l’équation:
λ(701,111) = lcm (907 − 1, 773 − 1)
λ(701,111) = ppcm (906, 772)
à l’Aide de la calculatrice ci-dessus, ce qui nous donne:
λ(701,111) = 349,716
la Génération de la clé publique
Maintenant que nous avons Carmichael l’indicateur de nos nombres premiers, il est temps de comprendre notre clé publique. Sous RSA, les clés publiques sont composées d’un nombre premier e, ainsi que de N. Le nombre e peut être n’importe quoi entre 1 et la valeur de λ(n), qui dans notre exemple est 349 716. ,
étant donné que la clé publique est partagée ouvertement, il n’est pas si important que e soit un nombre aléatoire. En pratique, e est généralement fixé à 65 537, car lorsque des nombres beaucoup plus importants sont choisis au hasard, cela rend le cryptage beaucoup moins efficace. Pour l’exemple d’aujourd’hui, nous garderons les nombres petits pour rendre les calculs efficaces. Disons:
e = 11
nos données chiffrées finales s’appellent le texte chiffré (c). Nous le dérivons de notre message en clair (m), en appliquant la clé publique avec la formule suivante:
c = me mod n
Nous avons déjà trouvé e et nous connaissons également N., La seule chose que nous devons expliquer est mod. C’est un peu hors de la profondeur de cet article, mais il fait référence à une opération modulo, ce qui signifie essentiellement le reste restant lorsque vous divisez un côté par l’autre. Par exemple:
10 mod 3 = 1
C’est parce que 3 à 10 à trois reprises, avec un reste de 1.
de Retour à notre équation. Pour garder les choses simples, disons que le message (m) que nous voulons crypter et garder secret n’est qu’un seul numéro, 4., Branchons Tout:
C = me mod n
c = 411 mod 701,111
c = 4,194,304 mod 701,111
encore une fois, pour faciliter l’opération modulo, nous utiliserons une calculatrice en ligne, mais vous êtes invités à le comprendre par vous-même. En entrant 4,194,304 dans la calculatrice en ligne, cela nous donne:
c = 688,749
donc 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 lourdes en mathématiques, mais il est important de réitérer ce qui s’est réellement passé.
nous avions un message de 4, que nous voulions garder secret. Nous lui avons appliqué une clé publique, ce qui nous a donné le résultat chiffré 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 la seule personne qui sera en mesure de le déchiffrer avec sa clé privée. Quand ils le décrypteront, ils verront le message que nous envoyions vraiment, 4.,
génération de la clé privée
dans le chiffrement RSA, une fois que des données ou un message ont été transformés en texte chiffré avec une clé publique, ils ne peuvent être déchiffrés 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 connaissons déjà n, et l’équation suivante est utilisée pour trouver d:
d =1/E Mod λ(n)
dans la section Génération de la clé publique ci-dessus, nous avons déjà décidé que dans notre exemple, e serait égal à 11. De même, nous savons que λ(n) est égal à 349 716 de nos travaux antérieurs sous la fonction Totient de Carmichael., Les choses deviennent un peu plus compliquées lorsque nous rencontrons cette section de la formule:
1/e mod
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 l’inverse modulaire de e (qui dans ce cas est 11) et λ(n) (qui dans ce cas est 349 716).
cela signifie essentiellement qu’au lieu d’effectuer une opération modulo standard, Nous utiliserons l’inverse à la place., Cela se trouve normalement avec L’algorithme euclidien étendu, mais c’est un peu en dehors de la portée de cet article, nous allons donc tricher et utiliser une calculatrice en ligne à la place., Maintenant que nous comprenons tout ce qui se passe, branchons nos informations dans la formule:
d =1/11 mod 349,716
pour effectuer cette opération, entrez simplement 11 (ou toute valeur que vous pourriez avoir pour e si vous essayez cela avec votre propre exemple) où il est dit entier et 349,716 (ou toute valeur que vous pouvez avoir pour λ(n) Si vous essayez cela avec votre propre exemple) où il est dit Modulo dans la calculatrice en ligne qui a été liée ci-dessus., Si vous l’avez fait correctement, vous devriez obtenir un résultat où:
d = 254, 339
maintenant que nous avons la valeur pour d, nous pouvons déchiffrer les messages qui ont été chiffrés avec notre clé publique en utilisant la formule suivante:
m = cd mod n
Nous pouvons maintenant revenir au texte chiffré que nous avons chiffré dans la section Générer la clé privée. 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 également que n est égal à 701 111. Cela nous donne:
m = 688,749254,339 mod 701,111.,
comme vous l’avez peut-être remarqué, essayer de prendre un nombre à la 254 339 power Puissance pourrait être un peu beaucoup pour la plupart des calculatrices normales. Au lieu de cela, nous utiliserons une calculatrice de décryptage RSA en ligne. Si vous vouliez utiliser une autre méthode, vous appliqueriez les puissances comme vous le feriez normalement et effectueriez l’opération de module de la même manière que nous l’avons fait dans la section Génération de la clé publique.,
dans la calculatrice liée ci-dessus, entrez 701,111 où il est dit module D’alimentation: N, 254,399 où il est dit clé de déchiffrement: D, et 688,749 où il est dit message chiffré sous forme numérique, comme indiqué ci-dessous:
Une fois que vous avez entré les données, appuyez sur décrypter, qui cela a été énuméré 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 chiffrement RSA dans la pratique
Les sections ci-dessus devraient vous donner une idée raisonnable du fonctionnement du chiffrement à clé publique. Cela peut être un peu déroutant, mais même ceux qui n’ont pas compris les subtilités des équations peuvent, espérons-le, emporter des informations importantes sur le processus.
dans les étapes énumérées ci-dessus, nous avons montré comment deux entités peuvent communiquer en toute sécurité sans avoir préalablement partagé un code. Tout d’abord, ils doivent chacun configurer leurs propres paires de clés et partager la clé publique les uns avec les autres., Les deux entités doivent garder leurs clés privées secrètes pour que leurs communications restent sécurisées.
Une fois que l’expéditeur a la clé publique de son destinataire, il peut l’utiliser pour chiffrer les données qu’il souhaite sécuriser. Une fois qu’il a été 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échiffrer les données. Cela est dû aux propriétés des fonctions de trappe que nous avons mentionnées ci-dessus.
lorsque le destinataire reçoit le message chiffré, 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, il peut alors chiffrer son message avec la clé publique de la partie avec laquelle il communique. Encore une fois, une fois qu’il a été chiffré avec la clé publique, le seul moyen d’accéder aux informations est via la clé privée correspondante.
de cette façon, le cryptage RSA peut être utilisé par des parties inconnues auparavant pour envoyer des données en toute sécurité entre elles. Des parties importantes des canaux de communication que nous utilisons dans nos vies en ligne ont été construites à partir de cette fondation.,
comment les messages plus compliqués sont-ils chiffrés avec RSA?
Dans notre exemple, nous avons simplifié les choses pour le rendre plus facile à comprendre, c’est pourquoi nous ne chiffré un message de « 4”. Pouvoir chiffrer le nombre 4 ne semble pas particulièrement utile, vous vous demandez peut-être comment chiffrer un ensemble de données plus compliqué, comme une clé symétrique (qui est l’utilisation la plus courante de RSA), ou même un message.,
certaines personnes peuvent être perplexes devant la façon dont une clé comme « n38cb29fkbjh138g7fqijnf3kaj84f8b9f…” ou un message comme « achetez-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 que nos ordinateurs traitent sont stockées en binaire (1s et 0s) et nous utilisons des normes de codage comme ASCII ou Unicode pour les représenter de manière que les humains peuvent comprendre (lettres).,
cela signifie que des clés comme « n38cb29fkbjh138g7fqijnf3kaj84f8b9f…” et des messages comme « achetez-moi un sandwich” existent déjà sous forme de nombres, qui peuvent facilement être calculés 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 des caractères alphanumériques plutôt qu’un fouillis de binaire.
Si vous vouliez chiffrer une clé de session plus longue ou un message plus complexe avec RSA, cela impliquerait simplement un nombre beaucoup plus grand.,
Padding
lorsque RSA est implémenté, il utilise quelque chose appelé padding pour aider à prévenir un certain nombre d’attaques. Pour expliquer comment cela fonctionne, nous allons commencer par un exemple. Disons que vous envoyiez un message codé à un ami:
chère Karen,
j’espère que vous allez bien. Sommes-nous encore en train de dîner demain?
cordialement,
James
disons que vous avez codé le message d’une manière simple, en changeant chaque lettre à 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 y a une astuce qu’ils pourraient utiliser pour essayer de déchiffrer le code. Ils pourraient regarder le format de votre lettre et essayer de deviner ce que le message pourrait dire. Ils savent que les gens commencent normalement leurs lettres avec « 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 correspond, mais cela ne veut pas nécessairement dire quoi que ce soit. Les attaquants l’essayaient et voyaient où cela les menait. Ils vont donc modifier les lettres « e”, « f”, « b” et « s” avec « d”, « e”, « a” et « r”, respectivement. Cela leur donnerait:
cher Laseo,
J ipqe zpv sont xemm. Est-ce que tujmm iawjoh djooes upnpsspx?
Zpvrt tjoderemz,
Kanet
cela semble toujours assez déroutant, donc les attaquants pourraient essayer de regarder d’autres conventions, comme la façon dont nous concluons nos lettres. Les gens ajoutent souvent « de » ou « cordialement » à la fin, mais aucun d’entre eux ne correspond au format., Au lieu de cela, les attaquants pourraient essayer « Sincèrement vôtre” et remplacer les autres lettres pour voir où il les obtient. En changeant le « z”, « p”, « v”, « t”, « j”, « o”, « d” et « m” par « y”, « o”, « u”, « s”, « i”, « n”, « c” et « l”, respectivement, ils se seraient:
Chers Lasen,
je ioqe vous xell. Sont xe tuill iawinh dinnes uonossox?
cordialement,
Kanet
Après cette modification, il semble que les attaquants commencent à arriver à quelque chose. Ils ont trouvé les mots » je”, « vous” et « sont », en plus des mots qui composaient leurs suppositions initiales.,
vu que les mots sont dans l’ordre grammatical correct, les attaquants peuvent être assez confiants qu’ils se dirigent dans la bonne direction. À présent, ils ont probablement également réalisé que le code impliquait que chaque lettre soit changée en 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 était difficile de comprendre le message à partir de sa structure et il a fallu des conjectures éclairées, mais vous devez garder à l’esprit que les ordinateurs sont beaucoup mieux à faire que nous. Cela signifie qu’ils peuvent être utilisés pour comprendre des codes beaucoup plus complexes dans un temps beaucoup plus court, sur la base d’indices provenant de la structure et d’autres éléments.
Si la structure peut conduire à un code étant fissuré et révéler le contenu d’un message, alors nous avons besoin d’un moyen de cacher la structure afin de garder le message sécurisé. Cela nous amène au rembourrage.,
lorsqu’un message est complété, des données randomisées 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é cryptée n’a pas le formatage évident d’une lettre qui a aidé à nous donner des indices dans notre exemple ci-dessus.
malgré cela, les adversaires peuvent utiliser un certain nombre d’attaques pour exploiter les propriétés mathématiques d’un code et casser des données crypté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é.
signature des messages
RSA peut être utilisé pour plus que simplement crypter des données. Ses propriétés en font également un système utile pour confirmer que le message a été envoyé par l’entité qui prétend avoir envoyé, ainsi que pour prouver qu’un message n’a pas été modifié ou falsifié.,
lorsque quelqu’un veut prouver l’authenticité de son message, il peut calculer un hachage (une fonction qui prend des données de taille arbitraire et les transforme en une valeur de longueur fixe) du texte en clair, puis le signer avec sa clé privée. Ils signent le hachage en appliquant la même formule que celle utilisée dans le décryptage (m = cd mod n). Une fois le message signé, ils envoient cette signature numérique au destinataire à côté du message.,
Si un destinataire reçoit un message avec une signature numérique, ils peuvent utiliser la 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ée. 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’ils ont reçu., Le destinataire applique ensuite la clé publique de l’expéditeur à la signature numérique, en utilisant la formule de cryptage (c = me mod n), pour lui donner le hachage de la signature numérique.
en comparant le hachage du message qui a été reçu avec le hachage de la signature numérique cryptée, le destinataire peut dire si le message est authentique. Si les deux valeurs sont identiques, le message n’a pas été modifié depuis qu’il a été signé par l’expéditeur d’origine. Si le message avait été modifié par un seul caractère, la valeur de hachage serait complètement différente.,
RSA security& attaques
comme la plupart des cryptosystèmes, la sécurité de RSA dépend de la façon dont il est implémenté et utilisé. Un facteur important est la taille de la clé. Plus le nombre de bits dans une clé est grand (essentiellement la durée de la clé), plus il est difficile de percer des attaques telles que le forçage brutal et l’affacturage.
étant donné que les algorithmes à clé asymétrique tels que RSA peuvent être cassés par factorisation d’entiers, 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, la plus grande taille de clé qui a été factorisée est de 768 bits. Cela a été fait par une équipe d’universitaires sur une période de deux ans, en utilisant des centaines de machines.
étant donné que l’affacturage a été achevé à la fin de 2009 et que la puissance de calcul a considérablement augmenté depuis, on peut supposer qu’une tentative d’intensité similaire pourrait maintenant factoriser une clé RSA beaucoup plus grande.
malgré cela, le temps et les ressources nécessaires pour ce type d’attaque le mettent hors de portée de la plupart des pirates et dans le domaine des États-nations., La meilleure longueur de clé à utiliser dépendra de votre modèle de menace individuel. Le National Institute of Standards and Technology 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 de casser RSA. Un certain nombre d’autres attaques ont le potentiel de casser le cryptage avec une plus petite quantité de ressources, mais celles-ci dépendent de l’implémentation et d’autres facteurs, pas nécessairement 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 créer les nombres premiers. Si ces chiffres ne sont pas suffisamment aléatoires, il est beaucoup plus facile pour les attaquants de les factoriser et de casser 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és
Les clés RSA doivent entrer dans 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 nombre d qui constitue une partie de la clé privée ne peut pas être trop petit., Une faible valeur le rend facile à résoudre. Il est important que ces numéros soient de longueur suffisante pour garder votre clé en sécurité.
attaques par canal latéral
Il s’agit d’un type d’attaque qui ne casse pas RSA directement, mais utilise plutôt les informations de son implémentation pour donner aux attaquants des indications sur le processus de cryptage. Ces attaques peuvent inclure des choses comme l’analyse de la quantité d’énergie utilisée, ou l’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 de canal latéral est connu sous le nom d’attaque de synchronisation., Si un attaquant a la capacité de mesurer le temps de déchiffrement sur l’ordinateur de sa cible pour un certain nombre de messages cryptés différents, cette information peut permettre à l’attaquant de déterminer la clé privée de la cible.
la plupart des implémentations de RSA évitent cette attaque en ajoutant une valeur unique pendant le processus de chiffrement, ce qui supprime cette corrélation. Ce processus est appelé aveuglement cryptographique.
le chiffrement RSA est-il sûr pour l’avenir?
la bonne nouvelle est que RSA est considéré comme sûr à utiliser, malgré ces attaques possibles., La mise en garde est qu’il doit être implémenté correctement et utiliser une clé qui relève des paramètres corrects. Comme nous venons de Le discuter, les implémentations qui n’utilisent pas de remplissage, utilisent des nombres premiers de taille inadéquate ou ont d’autres vulnérabilités ne peuvent pas être considérées comme sûres.
Si vous voulez utiliser le cryptage RSA, assurez-vous que vous utilisez une clé d’au moins 1024 bits. Ceux qui ont des modèles de menace plus élevés doivent s’en tenir à des clés de 2048 ou 4096 bits s’ils veulent utiliser RSA en toute confiance., Tant que vous êtes conscient des faiblesses de RSA et que vous l’utilisez correctement, vous devez vous sentir en sécurité pour utiliser RSA pour le partage de clés et d’autres tâches similaires nécessitant un cryptage à clé publique.
Voir aussi: explication des types de chiffrement courants