Vous êtes sur la page 1sur 23

Sécurité des données

Ali KARTIT : Docteur en Sécurité des Réseaux Informatiques alikartit@gmail.com


Sommaire
A. Cryptographie classique
A.1 principe de la cryptographie classique
A.2 chiffrement par substitution
A.3 chiffrement par transposition
B. Cryptographie moderne symétrique
B.1. Généralités & Définitions
B.2. Chiffrement par flux
B.2.1 mode de chiffrement de VERNAM
B.2.2 mode de chiffrement RC4
B.2.3 mode de chiffrement LFSR

B.3. Chiffrement par bloc


B.3.1 mode de chiffrement ECB
B.3.2 mode de chiffrement CBC
B.3.3 mode de chiffrement CFB
B.3.4 mode de chiffrement OFB
B.3.5 mode de chiffrement CTR
B.3.6 mode de chiffrement DES
B.3.7 mode de chiffrement AES
Ali KARTIT : Docteur en Sécurité des Réseaux Informatiques alikartit@gmail.com
Sommaire (suite)

C. Cryptographie moderne asymétrique


C.1. Généralités & Définitions
C.2. Rappel mathématiques
C.2.1 congruences
C.2.2 fonctions à sens unique
C.2.3 permutations
C.2.4 fonctions de hachage
C.3. Algorithmes Cryptographiques Asymétriques
C.3.1 RSA
C.3.2 Diffie-Hellman
C.3.3 El Gamal
C.4. Signature Numérique
C.5. Certificats Électroniques
D. Cryptographie à l’aide des Courbes elliptiques
Ali KARTIT : Docteur en Sécurité des Réseaux Informatiques alikartit@gmail.com
La cryptographie moderne asymétrique
Généralités & Définitions
Principe de Kerckhoffs: La sécurité d’un système cryptographique ne doit pas reposer sur la
non divulgation des fonctions de chiffrement et de déchiffrement utilisées mais sur la non
divulgation des clés utilisées pour les paramétrer.

Deux grandes familles


• Algorithmes symétriques ou à clef secrète
• Relativement rapides
• Utilisés pour le chiffrement de données
• Algorithmes asymétriques ou à clef publique
• Nécessitent beaucoup de ressources
• Utilisés pour les échanges de clefs
• Utilisés pour la signature
Services
• Confidentialité
• Intégrité
• Authentification
• Non-répudiation
• Authenticité = Authentification + intégrité

Ali KARTIT : Docteur en Sécurité des Réseaux Informatiques alikartit@gmail.com


La cryptographie moderne asymétrique
Généralités & Définitions
Cryptographie symétrique:
Limitation: Pas d'intégrité et d'identification de l'auteur
Si Alice, Bob et Cédric partage le même lien de communication alors ils partagent la même
clé de chiffrement symétrique.

Ali KARTIT : Docteur en Sécurité des Réseaux Informatiques alikartit@gmail.com


La cryptographie moderne asymétrique
Généralités & Définitions
Cryptographie asymétrique:
La cryptographie asymétrique désigne un ensemble de mécanismes reposant sur des fonctions
mathématiques asymétriques, qui sont faciles à calculer mais dont l'inverse est difficile à
calculer pour quiconque sauf celui qui connaît la clé privée.
Algorithmes à clef publique
K1K2
K2 ne peut pas être calculée à partir de K1
K1 peut être publique
K2 doit être secrète (clef privée)

 Utilisation d’une paire de clés:


• Publique: Connue par tout le monde, utilisée généralement pour crypter ou
vérifier la signature des messages.
• Privée: Connue uniquement par le détenteur, utilisée pour décrypter et
signer des messages.
 Impossible de trouver la clé privée à partir de la clé publique.

Ali KARTIT : Docteur en Sécurité des Réseaux Informatiques alikartit@gmail.com


La cryptographie moderne asymétrique
Généralités & Définitions
 Exemples: RSA, Diffie-Hellman, El Gamal.
 Généralement 10 fois jusqu’à 100 fois plus lent que le cryptage symétrique.
 Utilisé généralement pour
• Cryptage / décryptage: assurer la confidentialité.
• Signature numérique: assurer l’authentification et la non répudiation.
• Distribution de clés: se mettre d’accord sur une clé de session.
 Clés à grande taille (ex: RSA: 1024-2048-…)
Chiffrement

Signature

Ali KARTIT : Docteur en Sécurité des Réseaux Informatiques alikartit@gmail.com


La cryptographie moderne asymétrique
Généralités & Définitions
Avantages:
 Assure l’authentification et la non-répudiation
 N’est pas limité par la distribution des clés
 Seule la clé privée a besoin d’être conservée de manière secrète.
 Selon l’usage, une paire de clés (publique/privée) peut être utilisée plus
longtemps qu’une clé symétrique.

Inconvénients:
 Système très lent
 Les performances des systèmes asymétriques sont beaucoup moins bonnes que
celles des systèmes symétriques car ces systèmes nécessitent de pouvoir
calculer sur des grands nombres.
 La taille des clés est généralement plus grande pour ces systèmes que pour les
systèmes à clé secrète.
Ali KARTIT : Docteur en Sécurité des Réseaux Informatiques alikartit@gmail.com
La cryptographie moderne asymétrique
Rappel mathématiques
Congruences
Lorsqu'on effectue une division a / m: a = k .m + b
Modulo m : je divise par m; Résidu b : le reste b de cette division.
Définition : Soit n un entier naturel non nul. On dit que les deux entiers relatifs a et b
sont congrus modulo n si a-b = kn avec kZ  On écrit alors a  b mod n.
Proposition : a  b (mod n) indique que a = b + kn pour un certain entier k. Si a et b sont
positifs et si b est plus petit que n, vous pouvez considérer que b est le reste de la division de a
par n.
On a aussi la propriété que a et b donnent le même reste quand ils sont divisés par n. Parfois, b
est appelé le résidu de a modulo n.
On dit aussi que a est congru à b modulo n (ou a et b sont congrus modulo n) si n divise a-b
(kZ tq: a -b = kn ). Ce ne sont que différentes manières de dire la même chose.

L’ensemble des entiers de 0 à n-1 forme ce que l’on appelle l’ensemble de tous les résidus
modulo n.
Par exemple : 5 mod 3 = 2.
Lorsque vous programmez en langage C, l’opérateur % correspond à l’opération modulo,
le résultat peut être négatif si l’un des opérandes est négatif. Dans ce cas, le résultat est
compris entre -n-1 et n-1, si le résultat est négatif il ne faut pas oublier d’ajouter n pour
avoir un résultat compris entre 0 et n-1.
Ali KARTIT : Docteur en Sécurité des Réseaux Informatiques alikartit@gmail.com
La cryptographie moderne asymétrique
Rappel mathématiques
Congruences
Propriétés :
(a + b) mod n = (b+a) mod n.
(a * b) mod n = (b*a) mod n. [Commutativité]
a+ (b + c) mod n = (a+b)+c mod n
a* (b * c) mod n = (a*b)*c mod n [Associativité]

(a + b) mod n = ((a mod n) + (b mod n)) mod n.


(a - b) mod n = ((a mod n) - (b mod n)) mod n. [Réductibilité]
(a  b) mod n = ((a mod n)  (b mod n)) mod n.
(a  ( b + c)) mod n=(((a  b) mod n) + ((a  c) mod n)) mod n. [Distributivité]

Théorème :
Soient a, b , c, d, n des entiers tels que:
a ≡ b mod n et c ≡ d mod n. On a alors les résultats suivants :
a + c ≡ b + d mod n
a  c ≡ b  d mod n
k N, ak ≡ bk mod n.

Ali KARTIT : Docteur en Sécurité des Réseaux Informatiques alikartit@gmail.com


La cryptographie moderne asymétrique
Rappel mathématiques
Congruences
En cryptographie, on fait un usage intensif de l’arithmétique modulo n. Celle-ci permet
de restreindre la taille de tous les résultats intermédiaires et de la valeur finale. C’est
indispensable, par exemple, pour le calcul de logarithmes discrets ou de racines carrées
qui sont des opérations très coûteuses en ressources de calcul (temps et espace mémoire).
Pour un modulo n qui peut être représenté par k bits, le résultat de toute addition,
soustraction ou multiplication peut être représenté par au plus 2k bits.
Comme on peut appliquer la réduction modulo n pour toutes les étapes intermédiaires
d’un calcul, on ne devra jamais manipuler des nombres représentés par plus de 2k bits.

On peut ainsi, par exemple, calculer des exponentielles en arithmétique modulo n sans
engendrer des résultats intermédiaires démesurés.
Elever un nombre à une puissance entière modulo n,
ax mod n = (a mod n)x mod n
se fait par une série de multiplications et de divisions, mais il existe des techniques pour
effectuer cela efficacement. Une de ces techniques consiste à minimiser le nombre de
multiplications modulo n ; une autre consiste à optimiser le calcul de la multiplication
modulo n.
Comme l’arithmétique modulo n est distributive, il est plus efficace d’entrelacer les
multiplications avec les réductions modulo n à chaque étape intermédiaire.
Ali KARTIT : Docteur en Sécurité des Réseaux Informatiques alikartit@gmail.com
La cryptographie moderne asymétrique
Rappel mathématiques
Congruences
Par exemple, si vous voulez calculer a8 mod n, n’utilisez pas l’approche simpliste qui consiste
à effectuer 7 multiplications suivies d’une coûteuse réduction modulo n finale :
(a  a  a  a  a  a  a  a) mod n
Il est plus avantageux d’effectuer 3 multiplications plus petites ainsi que 3 réductions modulo
n également plus petites :
((a² mod n)² mod n)² mod n

La même technique appliquée à une puissance 16 donne :


a16 mod n = (((a² mod n)² mod n)² mod n)² mod n.
Calculer ax mod n quand x n’est pas une puissance de 2 n’est qu’un tout petit peu plus
difficile. Illustrons cela pour x=25. La première étape consiste à représenter x en notation
binaire (c’est-à-dire, comme une somme de puissances de 2).
La représentation binaire de 25 est 11001 et donc 25 = 24 + 23 + 20 . Ensuite, quelques
transformations élémentaires donnent :
a25 mod n = (a  a8  a16) mod n
= (a  ((a²)²)²  (((a²)²)²)² mod n
= ((((a²  a)²)²)²  a) mod n
Ali KARTIT : Docteur en Sécurité des Réseaux Informatiques alikartit@gmail.com
La cryptographie moderne asymétrique
Rappel mathématiques
Congruences
Par un arrangement judicieux de la mémorisation des résultats intermédiaires, il y a moyen de
n’effectuer que 6 multiplications :
(((((((a² mod n)a) mod n)² mod n)² mod n)² mod n)  a) mod n
Cette technique de calcul s’appelle la sommation en chaîne. Elle utilise une suite d’additions
simples et évidentes qui est basée sur la représentation binaire. Cela peut être codée en
Langage C par la fonction suivante :

long expo_modulo(long a, long x, long n){


long s;
s=1;
while(x) {
if (x&1) /* x est-il impair? */
s = (s*a)%n ;
x>>=1;
a = (a*a)%n;
}
return(s);
}
Ali KARTIT : Docteur en Sécurité des Réseaux Informatiques alikartit@gmail.com
La cryptographie moderne asymétrique
Congruences Rappel mathématiques
Pierre Fermat :
Si on utilise un nombre premier comme module, alors quand on élève un
nombre à la puissance (nombre premier -1), on obtient 1
Pour n'importe quel nombre m et pour p premier :
m( p – 1 ) mod p = 1
Exemple : 7 10 mod 11 = 1 …pas besoin de calcul car 11 est premier
Leonhard Euler :
Lorsqu'on utilise un module comme étant le produit de deux nombres premiers on a :
Soit n = p * q, avec p et q premiers, et quelque soit m
m( p – 1 ) ( q – 1 ) mod n = m( p – 1 ) ( q – 1 ) mod p*q =1
Exemple : soit p = 11 et q = 5, n = 55 et (p – 1)(q – 1) = 10 * 4 = 40
38 40 mod 55 = 1
Si on manipule le résultat d'Euler en multipliant par m l'équation :
m * m( p – 1 ) ( q – 1 ) mod n = m
m( p – 1 ) ( q – 1 ) + 1 mod n = m( p – 1 ) ( q – 1 )+1 mod p*q= m
Dans l’exemple précédent : 38 41 mod 55 = 38 40+1 mod 55 = 38

Ali KARTIT : Docteur en Sécurité des Réseaux Informatiques alikartit@gmail.com


La cryptographie moderne asymétrique
Rappel mathématiques
Fonctions
Soit f une fonction d’un ensemble X vers un ensemble Y.
Notation: f : X Y, si x X et y = f(x), y est l’image de x, x est l’antécédent de y.
L’ensemble  y  Y /  x  X avec y = f(x) } = Imf  Y.

Exemple: Soit X={ 1, 2, 3, …, 10} et f la fonction f(x) = rx, où rx est le reste de la


division euclidienne de x² par 11.
f(1)=1, f(2)=4, f(3)=9, f(4)=5, f(5)=3
( 25  3 mod 11), f(6)=3, f(7)=5, f(8)=9, f(9)=4 et f(10)=1 (100  1 mod 11).
Y = Imf = { 1, 3, 4, 5, 9}.
Définition: Une fonction f : X  Y est une fonction à sens unique si :
• Étant donné x il est facile de calculer f(x)
• Pour presque tout les f(x) il est difficile de trouver x.
Où la facilité est bien évidemment un compromis entre le temps et la puissance de
calcul.
Ali KARTIT : Docteur en Sécurité des Réseaux Informatiques alikartit@gmail.com
La cryptographie moderne asymétrique
Rappel mathématiques
Fonctions à sens unique
 Une fonction à sens unique est une fonction relativement aisée à calculer mais
considérablement plus difficile à inverser. En d’autres termes, étant donné un x, il est
facile de calculer f(x), mais étant donné f(x) il est difficile de calculer x.
 Dans ce contexte, "difficile" veut dire qu’il faudrait des millions d’années pour calculer
la fonction inverse même si on utilise tous les ordinateurs du monde.
 Elles sont utiles pour garder sous forme inaccessibles des mots de passe.

Casser une assiette est un bon exemple de fonction à sens unique. Il est facile de casser
l’assiette en mille morceaux. Toutefois, il est très difficile de recoller les morceaux
ensembles pour reconstruire l’assiette.

Exemple1 : (fonction à sens unique)


Soit X={1, 2, 3, …, 16} et on définie f par f(x)= rx pour tout xX où rx est le reste de la
division de 3x par 17.

x 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

f(x) 3 9 10 13 5 15 11 16 14 8 7 4 12 2 6 1

Ali KARTIT : Docteur en Sécurité des Réseaux Informatiques alikartit@gmail.com


La cryptographie moderne asymétrique
Rappel mathématiques
Fonctions à sens unique
Etant donné un nombre entier compris entre 1 et 16, il est relativement facile de trouver son image par f.
Par contre, si on prend un nombre comme 7, sans avoir la table en face, il est très difficile de trouver x tel
que f(x)=7.
Si le nombre est 3 il est évident que x=1 (f(1)=3), mais pour la majorité des éléments de Imf = Y, il est
difficile de trouver leurs antécédents.
Remarque : On peut calculer efficacement f(x) même pour x assez grand, en utilisant l’algorithme
"exponentielle rapide", par contre trouver x à partir de f(x) est très difficile.

Exemple 2 : (fonction à sens unique)


Soient deux nombres premiers p = 48611, q = 53993, on a n = pq = 2624653723 et soit X={1, 2, 3, …, n-
1}. On définie une fonction f sur X par f(x)=rx pour tout x X, où rx est le reste de la division de x3 par n.
Par exemple f(2489991) = 1981394214 puisque 24899913 = 5881949859  n + 1981394214. (a = b + kn)

Calculer f(x) est relativement facile, mais la réciproque est plus difficile ; c’est-à-dire étant donné un reste
rx, trouver la valeur x telle que x3 = rx mod n. C’est le calcul de la racine cubique modulo n. Si n est assez
grand, on ne peut pas donner sa décomposition en nombres premiers, le problème est très difficile à
résoudre. Par contre si les facteurs p et q de n sont données, on a un algorithme efficace pour calculer les
racines cubiques modulo n.
Mais à quoi sert les fonctions à sens unique? On ne peut pas les utiliser telles quelles pour le chiffrement.
Un message chiffré à l’aide d’une fonction à sens unique n’est pas d’une grande utilité: personne ne peut
le déchiffrer. Pour la cryptographie à clef publique, nous avons besoin de ce que l’on appelle une fonction
à sens unique à brèche secrète.
Ali KARTIT : Docteur en Sécurité des Réseaux Informatiques alikartit@gmail.com
La cryptographie moderne asymétrique
Rappel mathématiques
Fonctions à sens unique et brèches secrètes
Définition : Une fonction f : X Y est une fonction à sens unique et brèche secrète
(trapdoor) si étant donné f(x) et avec une information supplémentaire (brèche secrète) il
est facile de trouver x X.
Une montre est un bon exemple de fonction à sens unique à brèche secrète. Il est facile de
démonter une montre en ses centaines de pièces. Il est très difficile de remettre les pièces
ensemble pour reconstruire une montre qui fonctionne. Toutefois, grâce à l’information
secrète que constitue le plan de montage de la montre, il est bien plus facile de reconstruire
la montre.

Exemple : L’exemple précédent [étant donné un reste rx, trouver la valeur x telle que x3
= rx mod n] illustre le concept de la fonction à sens unique avec une brèche secrète,
puisque avec une condition supplémentaire qui est la factorisation de n = 2624653723 (p =
48611 et q = 53993) il devient plus facile de trouver la racine cubique modulo n. Si on
prend p et q avec une centaine de chiffres le problème devient très difficile à résoudre,
même avec les ordinateurs les plus puissants.

Remarque : Il n’existe mathématiquement aucune preuve de l’existence de fonctions à


sens unique et de fonctions à sens unique et brèches secrètes. Ces deux types de fonctions
jouent un rôle important en cryptographie.
Ali KARTIT : Docteur en Sécurité des Réseaux Informatiques alikartit@gmail.com
La cryptographie moderne asymétrique
Rappel mathématiques
Fonctions de permutation
Définitions : Soit S un ensemble fini d’éléments. Une permutation  de S est une bijection de
S dans S.
Exemple : (permutation)
Soit S ={1, 2, 3, 4, 5}, une permutation
 1 2 3 4 5 
 : S  S est définie par :
     1 3 4 2 5
(1)=3, (2)=5, (3)=4, (4)=2 et (5)=1.
 3 5 4 2 1
Ce qui signifie que 1 donne 3 (3 est l'image de 1) qui donne 4, qui à son tour donne 2, qui
donne 5 et en fin, 5 donne 1. C’est une permutation circulaire.
Exemple : (fonction à sens unique à brèche secrète)
Soit X={0, 1, 2, …, pq-1} où p et q sont deux nombres premiers distincts et très
grands ( de l’ordre d’une centaine de chiffres) et on suppose que ni p-1 ni q-1 n’est
divisible par 3. Alors la fonction (x) = rx, rx est le reste de la division de 3x par 17,
est une permutation.
Déterminer l’inverse de cette permutation est très difficile avec les ordinateurs
d’aujourd’hui, sauf si p et q sont connus. C’est l’exemple d’une fonction à sens
unique avec brèches secrètes.
Ali KARTIT : Docteur en Sécurité des Réseaux Informatiques alikartit@gmail.com
La cryptographie moderne asymétrique
Rappel mathématiques
Fonctions de Hachage
Une fonction de hachage est une fonction qui convertit une chaîne de caractères de longueur
quelconque en une chaîne de caractères de taille fixe (souvent de taille inférieure, cette chaîne est
appelée empreinte). Ainsi, on peut appliquer le même algorithme de cryptage aux données, ou
encore envoyer le message en plusieurs parties, réduisant le risque de pertes de données au cours de
la transmission.

Exemple : Un exemple de fonction de hachage simple est une fonction qui à partir d’une chaîne de
caractères calculerait un octet qui serait le résultat du ou exclusif de tous les caractères de la chaîne
donnée.
Une fonction de hachage à sens unique est une fonction de hachage qui est aussi une fonction à sens
unique ; il est aisé de calculer l’empreinte à partir de la chaîne d’entrée mais il est difficile
d’engendrer des chaînes qui ont une certaine empreinte.
La fonction de hachage précédente (correspondante au ou exclusif) n’est pas à sens unique : étant
donné un octet, il est trivial d’engendrer une chaîne dont le "ou exclusif" de ses caractères donne cet
octet-là. On ne peut pas faire cela pour des fonctions de hachage à sens unique. Avec une bonne
fonction de hachage à sens unique, il est aussi difficile de produire deux chaînes ayant la même
empreinte.

Si on veut vérifier que quelqu’un possède un fichier donné (que vous avez aussi) sans qu’il vous
l’envoie, vous lui demandez alors l’empreinte du fichier. S’il vous envoie la bonne empreinte, alors il
est très probable que la personne a le fichier en question. C’est particulièrement adapté aux transactions
financières où l’on ne veut pas qu’un retrait de cent dirhams devienne un retrait de mille dirhams.

Ali KARTIT : Docteur en Sécurité des Réseaux Informatiques alikartit@gmail.com


La cryptographie moderne asymétrique
Rappel mathématiques
Fonctions de Hachage : propriété mathématique
 Utilisation
• Contrôle d’intégrité (comparer les deux empreintes)
• Signature (chiffrer le haché à l’aide de sa clé privée = sceau)
• Scellement : mécanisme de création de sceau (destinataire déchiffre le sceau avec la clé publique
de l'expéditeur, puis compare le haché obtenu avec la fonction de hachage au haché reçu en pièce
jointe)
 Fonctionnement
• Convertit une chaîne de longueur variable en une empreinte de taille inférieure et généralement fixe
• Fonctionnement à sens unique (one-way function)
• Facile à calculer, difficile à inverser
• Il est très difficile de créer deux messages différents ayant la même empreinte
Entrée: message M avec contenu et taille arbitraire.
Sortie: message de taille fixe h=H(M).
H(M) est appelé condensât, ou empreinte, ou fingerprint, ou message digest
Irréversible:
Étant donnée h, il est difficile de trouver x tel que: h = H(x)
Complexité de l’ordre de 2n, n est le nombre de bits du digest.
Résistance forte à la collision:
Étant donné x, il est impossible de trouver y avec H(x) = H(y)
Il est impossible de trouver une paire x, y tel que H(x) = H(y)
Calcul facile et rapide (plus rapide que le cryptage symétrique).
Ali KARTIT : Docteur en Sécurité des Réseaux Informatiques alikartit@gmail.com
La cryptographie moderne asymétrique
Rappel mathématiques
Fonctions de Hachage : principes

Ali KARTIT : Docteur en Sécurité des Réseaux Informatiques alikartit@gmail.com


La cryptographie moderne asymétrique
Rappel mathématiques
Fonctions de Hachage: exemple
 MD5 : Message Digest 5
 Développé par Ron Rivest
 Génère une empreinte de taille 128 bits

 SHA-1 : Secure Hash Algorithm


 Développé par NIST en collaboration avec NSA
 Génère une empreinte de taille 160 bits

Exemple
Introduction à la Cryptographie
5aa769e719f153611c3d0dbb4bb02e23
Introduction à la cryptographie
af575f3a9216b4158bdcd2c4201d6527
Ali KARTIT : Docteur en Sécurité des Réseaux Informatiques alikartit@gmail.com

Vous aimerez peut-être aussi