Origine du mot : cryptographie vient du grec "kryptós" qui signifie caché et "grápho" qui signifie écrire. La cryptographie est donc l’art de cacher ou de protéger l’information en utilisant des codes et des algorithmes de chiffrement.
"kryptós"
"grápho"
Elle a été utilisée depuis l’Antiquité pour envoyer des messages secrets et protéger les informations sensibles !
Ensemble des techniques et des méthodes qui permettent de protéger l’information et de la rendre illisible à toute personne qui n’est pas autorisée à la lire.
Les techniques de Cryptographie consistent à chiffrer l’information à l’aide d’algorithmes mathématiques complexes, qui permettent de la transformer en un code indéchiffrable.
Cryptographie
Elle est utilisée dans les domaines suivants :
Cette vidéo aborde la sécurité avec la notion de HTTPS et donc de SSL/TLS
C’est un algorithme de chiffrement asymétrique qui permet de sécuriser la communication entre deux parties.
Principe : Repose sur la difficulté de factoriser un grand nombre premier 1 en produit de deux nombres premiers plus petits.
Pourquoi est-ce si difficle de factoriser un grand nombre premier en produit de deux nombres premiers plus petits ?
Vous l’avez deviné, cette opération est très coûteuse en termes de temps de calcul !
En effet, même s’il existe des algorithmes pour effectuer cette opération,ces derniers nécessitent énormément de puissance de calcul pour fonctionner efficacement sur des nombres premiers de grande taille.
C’est pourquoi il est souvent difficile de factoriser un grand nombre premier en produit de deux nombres premiers plus petits.
Illustration :
Imaginons que nous avons un nombre premier p = 131.
p = 131
Pour le factoriser, nous devons trouver deux nombres premiers a et b tels que p = a * b. En fait, dit comme cela, ça parait simple ;))
p = a * b
Si nous essayons de trouver ces 2 nombres en testant tous les nombres inférieurs à p, nous ne trouverons pas de solution car a et b doivent être premiers !
p
a
b
Nous devons donc utiliser un algorithme de factorisation pour trouver ces nombres.
L’un des algorithmes les plus courants est l’algorithme de Pollard-Rho, qui utilise des algorithmes de division euclidienne pour trouver ces nombres. Cet algorithme est assez efficace pour de petits nombres, mais devient de plus en plus lent pour des nombres plus grands.
Imaginez pour des nombres de l’ordre de magnitude de 1000 bits 2 (1000 chiffres binaires, soit l’équivalent de 302 décimales) ! Cela peut prendre plusieurs années pour trouver les nombres a et b.
La difficulté de factoriser de grands nombres est l’un des principes de base de la cryptographie moderne, et c’est ce qui rend les algorithmes de cryptage comme RSA sécurisés.
c = m^e mod n
m = c^d mod n
En résumé :
Ce principe permet de garantir que seul le destinataire du message peut le lire, même si l’expéditeur et le message chiffré sont interceptés en transit.
La clé publique RSA est représentée par une paire de nombres :
n
e
Exemple, la clé publique (n=55, e=3) est valide.
(n=55, e=3)
Elle se compose des éléments suivants :
Voici un exemple de message chiffré avec cette clé publique:
Notre message est : “BONJOUR”
Le message chiffré serait : (12, 29, 53, 36, 25, 50)
Pour déchiffrer ce message, vous devez utiliser une clé privée qui correspond à cette clé publique. La clé privée est généralement représentée par un autre nombre appelé d.
d
En utilisant la clé privée, vous pouvez déchiffrer le message et obtenir le message original.
Dans notre exemple, la clé privée serait une autre paire de nombres (n, d) telle que n est le même nombre utilisé pour chiffrer le message et d est un autre nombre qui permet de déchiffrer le message chiffré.
(n, d)
Pour déchiffrer notre message top secret, on utilise la formule ci-dessous :
message = (chiffré ^ d) mod n
La formule indique que pour déchiffrer un message chiffré, il faut calculer la puissance d de ce message chiffré modulo n, c’est-à-dire le reste de la division euclidienne 3 de la puissance d du message chiffré par n.
Pour simplifier : 7 = (2 x 3) + 1 soit a = bq + r
a = bq + r
En utilisant cette formule, on peut déchiffrer le message chiffré en utilisant la clé privée (n, d).
… bientôt ;)
bit : Un bit est la plus petite unité de donnée informatique. Il prend la valeur 0 ou 1, qui peuvent être utilisées pour représenter des valeurs binaires. La valeur d’un bit est souvent utilisée pour représenter l’état d’un élément, comme par exemple “allumé” ou “éteint”. Un octet, qui est l’unité de mesure de l’espace de stockage informatique, est égale à 8 bits.
log2() : Fonction mathématique qui calcule le logarithme en base 2 d’un nombre. Par exemple, log2(8) renvoie 3 (2x2x2 => 2 à la puissance 3) car 2^3=8. Elle peut être utilisée dans divers contextes, par exemple pour calculer le nombre de bits nécessaire pour représenter un entier naturel donné en binaire.
log2(8)
3
2^3=8
fonction logarithmique : Fonction mathématique qui a pour base un nombre choisi (généralement 10 ou 2) et qui associe à chaque valeur de sa variable une valeur qui est le logarithme de cette valeur dans la base choisie. Par exemple, la fonction logarithmique à base 10 s’écrit log10(x) et pour une valeur donnée de x, elle renvoie le logarithme de x dans la base 10. En d’autres termes, si y = log10(x), alors x = 10^y. La fonction logarithmique permet de calculer l’exposant à partir duquel il faut élever une base donnée pour obtenir un nombre donné.
log10(x)
Le logarithme d’un nombre en base b est égal au puissance à laquelle il faut élever b pour obtenir ce nombre.
Dans notre exemple : pour trouver l’exposant à partir duquel il faut élever 2 pour obtenir 8, on utilise la fonction logarithmique log2(). Si on calcule log2(8), on obtient 3, car 2^3 = 8 (si b est la base 2 et le nombre est 8, alors il faut élever 2 à la puissance 3 pour obtenir 8).
la fonction logarithme décimal (log10) permet de trouver l’exposant à partir duquel il faut élever 10 pour obtenir un nombre donné. Si on calcule log10(1000), on obtient 3, car 10^3 = 1000.
Dans l’exemple, log2(8) = 3 et log10(1000) = 3, 8 et 1000 sont égaux à 2^3 et 10^3 respectivement.
Cette égalité peut être utilisée lorsque l’on doit effectuer des conversions entre différentes bases de numération.
Ainsi, comme log2(8) = log10(1000) on en déduit que 8 en binaire donne 1000.
Par exemple, si l’on souhaite convertir un nombre donné de la base 2 (binaire) vers la base 10 (décimale), on peut utiliser cette égalité pour trouver la valeur de ce nombre en décimale.
Cela peut être utile dans le cas où l’on travaille avec des ordinateurs qui utilisent généralement la base 2 pour représenter les nombres stockés et traités en binaire, car cela permet de simplifier les opérations de manipulation des données. Cela signifie que lorsque l’on souhaite travailler avec des nombres en décimale, il peut être nécessaire de les convertir en binaire avant de les utiliser. La fonction logarithmique peut être utilisée pour effectuer cette conversion !
Nombres binaires de 1 à 20 :
1 = 1 2 = 10 3 = 11 4 = 100 5 = 101 6 = 110 7 = 111 8 = 1000 9 = 1001 10 = 1010 11 = 1011 12 = 1100 13 = 1101 14 = 1110 15 = 1111 16 = 10000 17 = 10001 18 = 10010 19 = 10011 20 = 10100
Un nombre premier est un nombre entier naturel qui n’est divisible que par 1 et par lui-même. Par exemple, 2, 3, 5 et 7 sont des nombres premiers, mais 4, 6 et 9 ne le sont pas. Un entier naturel (ou nombre naturel) est un nombre entier qui est supérieur ou égal à 0. Les entiers naturels sont généralement notés N. Un nombre naturel est positif et n’a pas de partie fractionnaire, cependant, le nombre 3,0 est un nombre naturel alors que 3,8 estun nombre décimal. C’était juste un petit rappel. ;) ↩
3,0
Pour convertir un nombre en décimale en nombre de bits, vous pouvez utiliser la formule nombre de bits = log2(nombre en décimale). Si vous voulez connaître le nombre de bits nécessaires pour représenter le nombre 123456 en binaire, vous pouvez utiliser cette formule nombre de bits = log2(123456) = ~17.78 bits. Soit, pour représenter le nombre *123456 en binaire, il vous faut environ **18 bits. ↩
nombre de bits = log2(nombre en décimale)
nombre de bits = log2(123456) = ~17.78 bits
Algorithme qui permet de calculer le quotient et le reste de la division de deux entiers. En d’autres termes, la division euclidienne permet de trouver le résultat de la division d’un nombre a par un nombre b sous la forme a = bq + r, où q est le quotient et r le reste de la division. ↩