Crypto Part 2
Crypto Part 2
Crypto Part 2
Introduction
Le concept de la cryptographie asymétrique a été introduit pour la première fois par
Whitfield Diffie et Martin Hellman en 1976. Utilise l’exponentielle modulaire. L’idée neuve
dans le domaine était d’utiliser deux clés différentes pour chiffrer et déchiffrer un message
et qu’il était impossible de générer une clé à partir de l’autre. Une des clés sera publiée et
l’autre doit être maintenu secrète.
Les algorithmes RSA, ElGamal et Rabin seront à la fois pour le chiffrement et les signatures
numériques. Utilise également l’exponentielle modulaire. Chiffrement et déchiffrement,
l’échange des clés symétriques et l’authentification des messages.
Les algorithmes à clé publique sont conçus pour résister aux attaques à texte en clair choisi;
leur sécurité dépend à la fois de la difficulté de déduire la clé privée à partir de la clé
publique et la difficulté de déduire le texte en clair à partir du texte chiffré.
Avantages
Chiffrer et échanger des clés de session des algorithmes symétrique dans un réseau
non sécurisée.
Elle est facile à calculer dans un sens et elle est difficile à inverser (le logarithme discret)
Un nombre premier est un entier dont les seuls facteurs soit 1 et lui-même. Deux nombres a
et b entiers sont premiers entre eux si leurs pgcd(a,b) = 1. C-à-d quand il n’ont d’autre
facteur en commun que 1. Par exemple, 2, 3, 5, 7, 11, 13, 17, 19, 23, 29 … sont des nombres
premiers.
L’algorithme le plus utilisé pour tester la primalité d’un entier de grande valeur est celui de
Rabin-Miller.
Propriétés :
1. Addition modulo :
(a + b) mod n = [(a mod n) + (b mod n)] mod n;
2. Soustraction modulo :
(a - b) mod n = [(a mod n) - (b mod n)] mod n;
3. Multiplication modulo :
(a x b) mod n = [(a mod n) x (b mod n)] mod n;
4. Distributivité :
(a x (b + c) ) mod n = [ ((a x b) mod n) + ((a x c) mod n)] mod n.
Exemple : a8 mod n ,
a8 mod n = (a x a x a x a x a x a x a x a ) mod n
Le calcul de l’inverse modulaire est un problème difficile à résoudre par rapport à l’inversion
classique ( l’inverse de 4 est x=1/4 car on a 4 x = 1) .
Remarque : Algorithme Euclide permet de calculer le pgcd(a, b). Or, pgcd(a, b)=d = a x + b y.
Par contre, la version étendue permet de calculer les coefficients de Bézout (x, y) et d.
5. Fonction d’Euler
Théorème d’Euler: Si a et n sont premiers entre eux alors aФ(n) mod n =1. Donc, il est facile
de calculer l’inverse de a modulo n. La résolution de ax mod n =1 est aФ(n)-1 mod n.
Factorisation La factorisation d’un nombre consiste à chercher tous les facteurs premiers
qui les composent (10 = 2 x 5, 60 = 2 x 2 x 3 x 5).
Remarque : e-1 peut être également calculé par l’algorithme d’Eculide étendu d = e -1 mod
Ф (n) avec d Є {2 ,…, Ф (n) – 1}. (d , n) représente la clé privée Kpr =(d,n)à garder secrète.
Si la valeur retourner par l’algorithme est négatif, alors il faut chercher une valeur u = u + k
Ф (n) tel que 2<u< Ф (n) et k =-1, -2, -3, ….
Les nombres p, q et Ф (n) doivent être détruits après leurs utilisations dans le
chiffrement/déchiffrement. Ainsi, le chiffrement d’un message M est effectué par C=M e
mod n et le déchiffrement du message C par M = Cd mod n.
Exemple 1:
Choix de e dans l’ensemble {2 , …, n-1} premier avec Ф (n), par exemple e =11 (Vérification
à travers l’algorithme d’Euclide étendu).
Kp = ( 11 , 15 )
Tout d’abord, il faut représenter le message M comme un nombre tel que 1<m<n. Avec la clé
publique générée ci-dessus le cryptogramme obtenu est : C = 811 mod 15 =2
M = 23 mod 15 =8
Exemple 2
3. Choix de e, par exemple e = 3674911 et vérifie qu’il est premier avec grâce à
l’algorithme d’EUCLIDE ;
4. Trouver d aussi par cet algorithme tel que e d mod Ф (n)=1. On trouve : d, et
donc la clé privée est (d,n)=(422191, , 6012707)
2. Calcul de e et d
3. Choix de e dans {2 , …, 900} premier avec Ф(n) par exemple e=83. Donc la clé
publique est Kp = ( 83 , 901 )
L’inconvénient majeur : est que M peut être déchiffré par n’importe qui puisque la clé Kp
=(e, n) est publique. Donc, n’importe qui peut qui ayant l’accès à cette clé vérifier la
signature. La signature du message n’est pas son chiffrement.
En combinant les deux protocoles signé et chiffré, on peut créer des messages à la fois
chiffrés et signés. L’expéditeur commence par joindre sa signature numérique au message,
puis chiffre la paire message-signature par la clé publique du destinataire. Ce dernier
déchiffre le cryptogramme par sa clé privée pour obtenir à la fois le message en clair et sa
signature numérique. Maintenant, il peut vérifier la signature avec la clé publique de
l’expéditeur.
Scénario 1 :
Scénario 2 :
Sécurité de RSA :
La sécurité de RSA réside au niveau de la longueur des nombres p et q qui doivent être très
grands. Ces deux nombres ont été codés sur 512 bits, 640 bits et 1024 bits. Actuellement
sont codés sur 2048 et 4096 bits.
Performances :
Le RSA est moins rapide que le DES à cause des calculs des puissances modulo. Dans les
réalisations matérielles le RSA est environ 1000 fois plus lente que le DES. Au niveau logiciel,
le chiffrement de RSA est bien plus rapide si vous choisissez bien la valeur de e (les plus
courants sont 3, 17 et 65537).
Conclusion sur RSA:
Le RSA est le plus populaire parmi les algorithmes à clé publique. Vu la complexité de calculs,
le RSA est souvent utilisé au début des communications pour échanger des clés de session
(faible quantité d’information à communiquer), puis des algorithmes symétriques qui seront
utilisés pour effectuer des communications en différés ou en temps réel.
gm mod n,
Où g et n sont deux grands entiers premiers entre eux et sont publiques, m est un entier
aléatoire gardé secret.
Pour trouver les clés privées X et Y un attaquant doit résoudre l’inverse de g X mod n ou gY
mod n. Cette résolution reste un problème très redoutable en mathématique. Le protocole
d’échange des clés secrètes se déroule comme suit :
Ainsi, la valeur K s= gYX mod n reçue par les deux parties devient leur secret partagé et par
conséquent, elle peut être utilisé comme clé de session pour communiquer en utilisant un
algorithme à clé symétrique comme DES et AES.
Algorithme d’ElGamal
La version de base de cet algorithme, publiée en 1985, a été utilisée pour effectuer des
signatures numériques. Elle tire également sa sécurité sur la difficulté de calculer les
logarithmes discrets. Une autre version modifiée a été proposée pour le chiffrement et le
déchiffrement des messages.
Ce qui permet de générer : Une clé publique Kp =(y, g, n); Une clé privée Kpr = x. La
signature d’un message M nécessite le choix d’un nombre aléatoire k tel que k et n-1 soient
premiers entre eux. Cette signature sera composée de deux parties:
a = gk mod n.
Exemple de signature
1- Clé publique et privée de A
• nA = 11, gA = 2 < nA , xA < nA , xA = 8, yA = gAxA mod nA = 28 mod 11 =3.
Chiffrement d’ElGamal
Un correspondant B envoie un message m au correspondant A, en utilisant la clé publique de
A : KAp = ( yA, gA , nA). Le message chiffré sera composé de deux parties comme suit :
kB est un nombre aléatoire choisi par B et premier avec nA-1. Le couple C = (ψ1, ψ2) est le
cryptogramme obtenu dont la taille est le double de celle de m.
Déchiffrement d’ElGamal
Le correspondant A reçoit le cryptogramme C et le déchiffre avec sa clé privée xA en utlisant
l’expression suivante :
ψ2 ψ1 nA-1-xA (mod nA) ≡ m ykBA (gkBA)-xA (mod nA) ≡ m (gxAA)kBA (gkBA)-xA (mod nA) = m
Exemple de chiffrement
Clés publique et privée de A sont :
KAp = (yA, gA, nA) = ( 3, 2, 11) et KApr = xA =8.
B chiffre le message m=5 en utilisant sa clé kB = 3, pgcd( 3,10 ) =1. Il trouve alors les deux
parties suivantes:
ψ1= 2^3 mod 11 = 8,
ψ2 = 33 x 5 mod 11 = 3^3 mod 11 x 5 mod 11 = 5 x 5 mod 11 =3.
Ensuite, B envoie au récepteur A le cryptogramme C=(8, 3). A utilise sa clé privée xA = 8 et
déchiffre C et trouve le message en clair suivant
Conclusion
La caractéristique principale des algorithmes asymétriques est que sont très coûteux en
temps de calcul et bien entendu en espace mémoire nécessaire.
Utilisation courante : Echange des clés de session des algorithmes symétriques (8 caractères
(64 bits) à 32 caractères (256 bits)) en utilisant le service de chiffrement / déchiffrement.
Signature et l’authentification des messages plus longs n’est possible que sur des résumés
des messages.
Puisque une partie de la clé est publique une garantie et vérification de la relation entre
cette partie et le correspondant est nécessaire et ce qui possible via la certification des clés
publiques – PKI : Public Key Infrastructure.
La signature numérique doit avoir les mêmes caractéristiques qu’une signature manuscrite à
savoir :
1. Elle ne peut être limitée pour prouver que le signataire a délabrement signé son
document;
2. Pour les messages de grandes tailles, il faut utiliser une fonction de contraction ou de
condensation appelée fonction de hachage à sens unique. Elle permet de générer
un résumé du message appelé une empreinte digitale ou un condensé ou un digit du
document initial.
Définition de hachage :
C’est une fonction mathématique facile à calculer dans un sens (chiffrement facile) et est
extrêmement difficile à calculer dans le sens inverse (déchiffrement difficile). Elle opère sur
un message M de taille quelconque et donne un résumé (hachage) de taille fixe.
8. très difficile de trouver deux messages aléatoires qui donnent la même signature.
Principe de fonctionnement :
Le message M est décomposé en des sous blocs Mi de même taille. Donc, on a M = M0 M1
…MN-1. Chaque bloc Mi subira un hachage : H(Mi) = f(Mi, H(Mi-1)): f est la fonction de
hachage à sens unique.
Pour le premier bloc M0, une constante sera utilisée comme valeur initiale, pour le bloc M1,
H(M0) représente une valeur d’initiation et ainsi de suite. A la fin du hachage, H (M N-1)
représente l’empreinte digitale du message M.
Elle utilise aussi un algorithme asymétrique comme RSA & ELGAMAL. ou bien utilise le
standard de signature numérique (DSS) : DSA Digital Signature
S(M)=EKApr(H(M))
Remarque :
Le message M peut être clair ou chiffré avec un algorithme symétrique dont la clé a été
préalablement échangée entre A et B en utilisant un algorithme asymétrique. Dans ce cas B
reçoit C= EKBp(M) et S(M)
1. H(M)=EKAp(S(M))=EKAp(DkApr(H(M));
les clés publiques sont bien celles des utilisateurs à qui elles sont associées;
l’organisme qui publie les clés publiques doit être digne de confiance (tiers de
confiance);
La gestion technique et administrative de ces certificats sont assurées par une infrastructure
de gestion des clés IGC ou Public Key Infrastructure (PKI). Une PKI repose sur les organismes
suivants :
Autorité d’Enseignement (AE), dont la fonction est de vérifier que le demandeur est
bien la personne qu’il prétend être, conformément aux règles définies par l’autorité de
certification. Elle garantit la validité des informations contenues dans le certificat.
L’autorité d’enseignement est le lien entre l’opérateur de certification et l’abonné.
Codé la taille du message initial sur 64 bits, et concaténer ces 64 bits au résultat précédent.
Le nouveau message est M’.
Chaque bloc Bi est découpé en 16 sous blocs de 32 bits chacun, Bi M[0], M[1], …, M[15].
A = 01 23 45 67 B = 89 AB CD EF
C = FE DC BA 98 D = 76 54 32 10
AA = A, BB = B,
CC = C, DD = D.
Dans chaque ronde, on calcul de nouvelles valeurs des variables A, B, C, D à partir des
anciennes valeurs en utilisant dans chaque ronde une fonction non linéaire. Elle permet
d’évoluer ces variables de manière non-linéaire, et d'assurer les propriétés de sens unique.
Ronde 1
Ronde 2
Ronde 4
Où X, Y et Z dénotent l’un des variables A, B,C ou D. Ces fonctions renvoient des valeurs sur
32 bits qui seront ajoutées à la 4 eme variable (non impliquée dans le calcul), et au sous bloc
considéré et à une constante T. Ce nouveau résultat sera ensuite décalé circulairement vers
la gauche de S positions. Enfin, le résultat de ce décalage est ajouté à l’une des variables
A,B,C ou D.
Ronde 1
Ronde 2
Ronde 3
F, G, et H dénotent des fonctions non-linéaires. M[i] dénote le bloc (32 bits) courant du
message en clair. M[j] : j (0 à 15) ème bloc, T[i] : constante calculée à l’itération i par
429467296 . abs(sin[i]) (i en radian). S[i] : nombre de décalages correspondant à l’itération i
(0 à 63).
Ronde 4
A = A + AA B = B + BB
C = C + CC D = D + DD
Ces 4 variables seront utilisées comme entrée pour le traitement du bloc suivant B1.
Les 4 rondes sont effectuées autant de fois qu’il y a de blocs de 512 bits dans le message
complété M’.
L’empreinte du message sera codée sur 128 bits en regroupant les 4 variables A, B, C et D de
32 bits.
Concurrents de MD5
SHA 1 : empreinte sur 160 bits;
SHA 2 : 3 choix 256, 384 ou 512 bits;
RIPEMD 160 : empreinte sur 160 bits;
L’algorithme de signature à clé publique (DSA : Digital Signature Algorithme) a été proposée
par le NIST en 1991, comme standard de signature numérique (DSS : Digital Signature
Standard).
Vérification de la signature
Un correspondant B reçoit l’empreinte Ha(M) et (Ra, Sa). Il utilisera la clé publique de A pour
calculer :
W = S-1A mod qA
U1 = (HA(M)*W mod qA
U2 = RA*W mod qA
V = ((gU1A*yU2A) mod nA ) mod qA.
Si V=RA alors la signature est vérifiée. Donc, A a bien signé le message M en utilisant HA(M)
avec sa clé privée xA et le nombre KA.
Exemple :
Génération d’une paire de clés d’un correspondant A : nA= 124540019 nombre premier entre
512 et 1024;
Signature par A de l’empreinte HA(M) d’un message M. Choix aléatoire de KA=9557 <qA
Vérification de la signature
Il trouve V=RA=34 alors la signature est validée. Donc, A a bien signé le message M en
utilisant HA(M) avec sa clé privée xA = 12496 et le nombre KA= 9557.
Norme X.509
X 509 est un standard de cryptographie de l’Union international des télécommunications
pour els infrastructures à clés publique. X509 établit entre autres les formats standards de
certificats électroniques et un algorithme de validation de chemin de certification. X509 a
été créé en 1988 dans le cadre du standard X500. Il repose sur un système hiérarchique
d’autorités de certifications.
Exercice :
Certificat X.509
Euclide Etendu:
Quel est le plus grand diviseur commun (=pgcd) de 126 et 462? On apprend au collège à
calculer ce pgcd en décomposant les 2 nombres en produits de facteurs premiers, et en
réunissant les facteurs en commun. Cette méthode n'est plus envisageable quand les entiers
deviennent grands (plusieurs centaines de chiffres décimaux), car la factorisation est un
problème difficile. On calcule donc le pgcd en appliquant l'algorithme d'Euclide, qui repose
sur la constation suivante :
Si a et b sont deux entiers avec par exemple a>=b, si r est le reste de a par b, alors le pgcd de
a et b vaut le pgcd de b et r. On effectue donc des divisions euclidiennes, jusqu'à ce qu'on
trouve un reste nul. Le dernier reste non nul est le pgcd de a et b.
Ex : Pour 255 et 141, on élimine tout ce qui n'est pas ni 255, ni 141, ni 3.
27=4×6+3, 114=4×27+6 ×(-4) (on élimine les 6). 141=1×114+27 ×17 (on élimine les 27, il y
en a 1 à gauche, et -16 à droite). 255=1×141+114 ×(-21) (on élimine les 114). On somme
tout, on regroupe, et on trouve : 38×141-21×255=3