SlideShare une entreprise Scribd logo
1  sur  2
Télécharger pour lire hors ligne
Niveau : 1                                                                                       Jaune



                                   La primitive RSA


1 Définition de la primitive RSA
La primitive RSA est construite à l’aide de deux grands nombres premiers p et q distincts et de tailles
similaires. Le module n est le produit de ces deux grands nombres premiers :

                                                n = pq.

Pour des applications cryptographiques, on conseille actuellement une taille d’au moins 2048 bits
pour n et en tous les cas, supérieure à 1024 bits.
On introduit aussi la valeur de la fonction d’Euler de n :

                                        Φ(n) = (p − 1)(q − 1).

Soit e un entier 1 < e < Φ(n) (en général tiré au sort, mais pas toujours) premier avec Φ(n) :

                                          pgcd(e, Φ(n)) = 1.

On détermine alors l’entier d tel que 1 < d < Φ(n) inverse de e modulo Φ(n) :

                                            ed ≡ 1       Φ(n).

On définit alors la primitive RSAe,n comme fonction de l’intervalle d’entier [0, n − 1] dans lui même
par :
                                    RSA(e,n) (x) = xe mod n.


2 Propriétés de la primitive RSA

            Théorème 2.1 La fonction RSAe,n est une bijection de l’intervalle
            d’entiers [0, n − 1] sur lui-même, et la bijection réciproque est RSAd,n .


Preuve.C’est une conséquence immédiate du Théorème 3.2 énoncé dans la fiche "fichecrypto_ 106"
sur le "Petit Théorème de Fermat et ses généralisations".
La primitive RSA est considérée comme une "fonction à sens unique avec trappe". C’est une fonc-
tion "facile à calculer", "difficile à inverser" en pratique pour les tailles de modules considérées (fonc-
tion à sens unique). Elle devient "facile à inverser" si on connaît un secret : d (la trappe), ou de
manière équivalente en pratique, la factorisation de n. De ce fait, un système de chiffrement RSA
simplifié fonctionne de la manière suivante. Tout utilisateur A possède une clé publique (n, e) et une

                                                     1
clé privée d. L’utilisateur A est le seul à connaitre d. En revanche tout le monde connaît la clé publique
(n, e) de A. Si un utilisateur B veut envoyer un message m à A (m est assimilé pour simplifier à un
entier vérifiant 0 ≤ m < n) il calcule le chiffré

                                            c = me       mod n

et l’envoie à A. Le destinataire A utilise sa clé privée d pour déchiffré le message reçu :

                                           m = cd        mod n.

On utilise aussi la primitive RSA pour la signature.


3 Construire une primitive RSA
La construction des nombres premiers p et q se fait par tirage au sort d’un nombre impair puis par test
probabiliste (Miller Rabin par exemple) pour savoir si le nombre tiré est premier ou pas. S’il n’est pas
premier on retire un nombre impair au hasard et on teste à nouveau. On réitère ces opérations jusqu’à
tomber sur un nombre premier. Quand le test de Miller Rabin décrète qu’un nombre est premier, il
peut se tromper avec une probabilité très faible. On ne peut pas utiliser en boucle un test qui donne une
réponse sûre. En revanche, une fois qu’un nombre a été décrété premier par le test de Miller-Rabin,
il est possible si l’importance des sommes mises en jeu le commande et si on a du temps, de vérifier
avec un test déterministe que le nombre construit est bien premier (ceci est réalisable en pratique,
mais est long).
Pour construire e on peut penser à trois manières, qui sont effectivement utilisées dans les applica-
tions :
– la plus courante : On tire e au sort jusqu’à ce qu’il soit premier avec Φ(n) ;
– pour des applications bien particulières : on fixe e à priori (par exemple e = 3 et on construit p
   et q avec la contrainte (p − 1)(q − 1) premier avec e ;
– construction astucieuse : On construit un nombre premier e plus grand que p et q et plus petit que
   (p − 1)(q − 1).


4 Sécurité de la primitive RSA
Il existe des attaques de la primitive RSA dans des cas de mauvaise utilisation. On renvoie aux livres
classiques de cryptographie ou à l’annexe 6 du cours de formation générale en cryptographie donné
sur ce site pour avoir des détails sur diverses attaques de la primitive RSA.


5 Remarques
On peut utiliser λ(n) = ppcm(p − 1, q − 1) au lieu de Φ(n). Les systèmes concrets enrobent la
primitive RSA dans un mécanisme plus complexe de manière à rendre le chiffrement probabiliste (si
on chiffre deux fois le même texte on obtient des résultats différents), de manière à traiter le cas de
textes courts (chiffrements de clés) ou de textes longs qu’on doit découper. On a ainsi par exemple les
systèmes RSA-OAEP ou RSA-KEM pour le chiffrement, RSA-PSS pour la signature.

                                Auteur : Ainigmatias Cruptos
                              Diffusé par l’Association ACrypTA

                                                     2

Contenu connexe

Tendances

Chapitre iii récursivité et paradigme diviser pour régner
Chapitre iii récursivité et paradigme diviser pour régnerChapitre iii récursivité et paradigme diviser pour régner
Chapitre iii récursivité et paradigme diviser pour régner
Sana Aroussi
 
Technique de Cryptographie AES, DES et RSA
Technique de Cryptographie AES, DES et RSATechnique de Cryptographie AES, DES et RSA
Technique de Cryptographie AES, DES et RSA
Houda Elmoutaoukil
 
Serie algos approximationx
Serie algos approximationxSerie algos approximationx
Serie algos approximationx
mohamed_SAYARI
 
Chapitre i introduction et motivations
Chapitre i introduction et motivationsChapitre i introduction et motivations
Chapitre i introduction et motivations
Sana Aroussi
 
Algorithmes d'approximation
Algorithmes d'approximationAlgorithmes d'approximation
Algorithmes d'approximation
mohamed_SAYARI
 
Chapitre ii complexité et optimalité
Chapitre ii complexité et optimalitéChapitre ii complexité et optimalité
Chapitre ii complexité et optimalité
Sana Aroussi
 
Chap13 fin--ts-exp
Chap13  fin--ts-expChap13  fin--ts-exp
Chap13 fin--ts-exp
sikora233
 

Tendances (20)

Chapitre iii récursivité et paradigme diviser pour régner
Chapitre iii récursivité et paradigme diviser pour régnerChapitre iii récursivité et paradigme diviser pour régner
Chapitre iii récursivité et paradigme diviser pour régner
 
Cryptographie
CryptographieCryptographie
Cryptographie
 
Technique de Cryptographie AES, DES et RSA
Technique de Cryptographie AES, DES et RSATechnique de Cryptographie AES, DES et RSA
Technique de Cryptographie AES, DES et RSA
 
Serie algos approximationx
Serie algos approximationxSerie algos approximationx
Serie algos approximationx
 
Chapitre 4 récursivité
Chapitre 4 récursivitéChapitre 4 récursivité
Chapitre 4 récursivité
 
DCT1 4SI
DCT1  4SIDCT1  4SI
DCT1 4SI
 
Cours algo: Les pointeurs
Cours algo: Les pointeursCours algo: Les pointeurs
Cours algo: Les pointeurs
 
Récursivité
RécursivitéRécursivité
Récursivité
 
Chapitre i introduction et motivations
Chapitre i introduction et motivationsChapitre i introduction et motivations
Chapitre i introduction et motivations
 
bac info : série récursivité
bac info : série récursivitébac info : série récursivité
bac info : série récursivité
 
Projet Traitement Du Signal
Projet Traitement Du SignalProjet Traitement Du Signal
Projet Traitement Du Signal
 
Algorithmes d'approximation
Algorithmes d'approximationAlgorithmes d'approximation
Algorithmes d'approximation
 
Exercices pascal tous les chapitres
Exercices pascal tous les chapitresExercices pascal tous les chapitres
Exercices pascal tous les chapitres
 
Chapitre ii complexité et optimalité
Chapitre ii complexité et optimalitéChapitre ii complexité et optimalité
Chapitre ii complexité et optimalité
 
Formation C# - Cours 2 - Programmation procédurale
Formation C# - Cours 2 - Programmation procéduraleFormation C# - Cours 2 - Programmation procédurale
Formation C# - Cours 2 - Programmation procédurale
 
Chap13 fin--ts-exp
Chap13  fin--ts-expChap13  fin--ts-exp
Chap13 fin--ts-exp
 
Deep learning pour les données séquentielles de grande dimension
Deep learning pour les données séquentielles de grande dimensionDeep learning pour les données séquentielles de grande dimension
Deep learning pour les données séquentielles de grande dimension
 
Chapitre 3 NP-complétude
Chapitre 3 NP-complétudeChapitre 3 NP-complétude
Chapitre 3 NP-complétude
 
Chapitre 6 hachage statique
Chapitre 6 hachage statiqueChapitre 6 hachage statique
Chapitre 6 hachage statique
 
Chapitre 2 problème de plus court chemin
Chapitre 2 problème de plus court cheminChapitre 2 problème de plus court chemin
Chapitre 2 problème de plus court chemin
 

Similaire à Fichecrypto 110

Cours algorithmique et complexite complet
Cours algorithmique et complexite completCours algorithmique et complexite complet
Cours algorithmique et complexite complet
Chahrawoods Dmz
 
Cours algorithmique et complexite
Cours algorithmique et complexite Cours algorithmique et complexite
Cours algorithmique et complexite
Saddem Chikh
 
Cours algorithmique et complexite complet
Cours algorithmique et complexite completCours algorithmique et complexite complet
Cours algorithmique et complexite complet
Chahrawoods Dmz
 
TP_Réseaux_de_neurones_Safae_ElOmari.pdf
TP_Réseaux_de_neurones_Safae_ElOmari.pdfTP_Réseaux_de_neurones_Safae_ElOmari.pdf
TP_Réseaux_de_neurones_Safae_ElOmari.pdf
SafaeElOmari
 
Estimation d’harmoniques dans un bruit multiplicatif à valeurs complexes
Estimation d’harmoniques dans un bruit multiplicatif à valeurs complexesEstimation d’harmoniques dans un bruit multiplicatif à valeurs complexes
Estimation d’harmoniques dans un bruit multiplicatif à valeurs complexes
Cynthia Pozun
 

Similaire à Fichecrypto 110 (17)

Tp rsa1
Tp rsa1Tp rsa1
Tp rsa1
 
RSA
RSARSA
RSA
 
CryptographieRSA.pdf
CryptographieRSA.pdfCryptographieRSA.pdf
CryptographieRSA.pdf
 
Cours algorithmique et complexite complet
Cours algorithmique et complexite completCours algorithmique et complexite complet
Cours algorithmique et complexite complet
 
Cours algorithmique et complexite
Cours algorithmique et complexite Cours algorithmique et complexite
Cours algorithmique et complexite
 
Cours algorithmique et complexite complet
Cours algorithmique et complexite completCours algorithmique et complexite complet
Cours algorithmique et complexite complet
 
Veille Quantique (1).pptx
Veille Quantique (1).pptxVeille Quantique (1).pptx
Veille Quantique (1).pptx
 
Diviser Pour Régner
Diviser Pour RégnerDiviser Pour Régner
Diviser Pour Régner
 
Algorithmique programmation2018
Algorithmique programmation2018Algorithmique programmation2018
Algorithmique programmation2018
 
Rapport tp RSA
Rapport  tp  RSARapport  tp  RSA
Rapport tp RSA
 
Cours - TC - Histoire Algorithmique.pdf
Cours - TC - Histoire Algorithmique.pdfCours - TC - Histoire Algorithmique.pdf
Cours - TC - Histoire Algorithmique.pdf
 
TP_Réseaux_de_neurones_Safae_ElOmari.pdf
TP_Réseaux_de_neurones_Safae_ElOmari.pdfTP_Réseaux_de_neurones_Safae_ElOmari.pdf
TP_Réseaux_de_neurones_Safae_ElOmari.pdf
 
cours algorithme
cours algorithmecours algorithme
cours algorithme
 
Estimation d’harmoniques dans un bruit multiplicatif à valeurs complexes
Estimation d’harmoniques dans un bruit multiplicatif à valeurs complexesEstimation d’harmoniques dans un bruit multiplicatif à valeurs complexes
Estimation d’harmoniques dans un bruit multiplicatif à valeurs complexes
 
Correction
CorrectionCorrection
Correction
 
To_understand_transformers_together presentation
To_understand_transformers_together presentationTo_understand_transformers_together presentation
To_understand_transformers_together presentation
 
Traitement des données massives (INF442, A4)
Traitement des données massives (INF442, A4)Traitement des données massives (INF442, A4)
Traitement des données massives (INF442, A4)
 

Fichecrypto 110

  • 1. Niveau : 1 Jaune La primitive RSA 1 Définition de la primitive RSA La primitive RSA est construite à l’aide de deux grands nombres premiers p et q distincts et de tailles similaires. Le module n est le produit de ces deux grands nombres premiers : n = pq. Pour des applications cryptographiques, on conseille actuellement une taille d’au moins 2048 bits pour n et en tous les cas, supérieure à 1024 bits. On introduit aussi la valeur de la fonction d’Euler de n : Φ(n) = (p − 1)(q − 1). Soit e un entier 1 < e < Φ(n) (en général tiré au sort, mais pas toujours) premier avec Φ(n) : pgcd(e, Φ(n)) = 1. On détermine alors l’entier d tel que 1 < d < Φ(n) inverse de e modulo Φ(n) : ed ≡ 1 Φ(n). On définit alors la primitive RSAe,n comme fonction de l’intervalle d’entier [0, n − 1] dans lui même par : RSA(e,n) (x) = xe mod n. 2 Propriétés de la primitive RSA Théorème 2.1 La fonction RSAe,n est une bijection de l’intervalle d’entiers [0, n − 1] sur lui-même, et la bijection réciproque est RSAd,n . Preuve.C’est une conséquence immédiate du Théorème 3.2 énoncé dans la fiche "fichecrypto_ 106" sur le "Petit Théorème de Fermat et ses généralisations". La primitive RSA est considérée comme une "fonction à sens unique avec trappe". C’est une fonc- tion "facile à calculer", "difficile à inverser" en pratique pour les tailles de modules considérées (fonc- tion à sens unique). Elle devient "facile à inverser" si on connaît un secret : d (la trappe), ou de manière équivalente en pratique, la factorisation de n. De ce fait, un système de chiffrement RSA simplifié fonctionne de la manière suivante. Tout utilisateur A possède une clé publique (n, e) et une 1
  • 2. clé privée d. L’utilisateur A est le seul à connaitre d. En revanche tout le monde connaît la clé publique (n, e) de A. Si un utilisateur B veut envoyer un message m à A (m est assimilé pour simplifier à un entier vérifiant 0 ≤ m < n) il calcule le chiffré c = me mod n et l’envoie à A. Le destinataire A utilise sa clé privée d pour déchiffré le message reçu : m = cd mod n. On utilise aussi la primitive RSA pour la signature. 3 Construire une primitive RSA La construction des nombres premiers p et q se fait par tirage au sort d’un nombre impair puis par test probabiliste (Miller Rabin par exemple) pour savoir si le nombre tiré est premier ou pas. S’il n’est pas premier on retire un nombre impair au hasard et on teste à nouveau. On réitère ces opérations jusqu’à tomber sur un nombre premier. Quand le test de Miller Rabin décrète qu’un nombre est premier, il peut se tromper avec une probabilité très faible. On ne peut pas utiliser en boucle un test qui donne une réponse sûre. En revanche, une fois qu’un nombre a été décrété premier par le test de Miller-Rabin, il est possible si l’importance des sommes mises en jeu le commande et si on a du temps, de vérifier avec un test déterministe que le nombre construit est bien premier (ceci est réalisable en pratique, mais est long). Pour construire e on peut penser à trois manières, qui sont effectivement utilisées dans les applica- tions : – la plus courante : On tire e au sort jusqu’à ce qu’il soit premier avec Φ(n) ; – pour des applications bien particulières : on fixe e à priori (par exemple e = 3 et on construit p et q avec la contrainte (p − 1)(q − 1) premier avec e ; – construction astucieuse : On construit un nombre premier e plus grand que p et q et plus petit que (p − 1)(q − 1). 4 Sécurité de la primitive RSA Il existe des attaques de la primitive RSA dans des cas de mauvaise utilisation. On renvoie aux livres classiques de cryptographie ou à l’annexe 6 du cours de formation générale en cryptographie donné sur ce site pour avoir des détails sur diverses attaques de la primitive RSA. 5 Remarques On peut utiliser λ(n) = ppcm(p − 1, q − 1) au lieu de Φ(n). Les systèmes concrets enrobent la primitive RSA dans un mécanisme plus complexe de manière à rendre le chiffrement probabiliste (si on chiffre deux fois le même texte on obtient des résultats différents), de manière à traiter le cas de textes courts (chiffrements de clés) ou de textes longs qu’on doit découper. On a ainsi par exemple les systèmes RSA-OAEP ou RSA-KEM pour le chiffrement, RSA-PSS pour la signature. Auteur : Ainigmatias Cruptos Diffusé par l’Association ACrypTA 2