Cryptographie
Concepts
Calcul homomorphique
Permet de faire des calculs sur des données chiffrées sans avoir besoin de les déchiffrer
Permet d'obtenir un résultat juste même si les calculs se font sur des données chiffrées
Les schémas de chiffrement homomorphique sont conçus de manière spécifique
Certaines opérations sur les données chiffrées correspondent aux mêmes opérations sur les données non chiffrées
Pour que le calcul fonctionne il faut impérativement utiliser un algorithme de chiffrement homomorphique, ex:
RSA pour l'opération de multiplication
FHE (Fully Homomorphic Encryption)
Fonctionnement:
On transforme les données en une forme chiffrée pour les protéger
On fait des opérations (comme additionner ou multiplier) directement sur les données chiffrées
On transforme le résultat chiffré en une forme lisible et compréhensible
Chiffrement par bloc
Type de chiffrement où les données sont divisées en morceaux appelés "blocs"
Chaque bloc est chiffré séparément
Fonctionnement:
Les données sont découpées en blocs de taille fixe
Chaque bloc est chiffré avec une clé en utilisant un algorithme (RSA, AES...)
Selon le mode de chiffrement les blocs peuvent être chiffrés indépendamment ou avec des liens entre eux (afin notamment de ne pas produire le même chiffré depuis le même bloc avec la même clé)
Chiffrement par flot
Type de chiffrement où les données sont chiffrées bit par bit ou octet par octet
Est souvent plus rapide que le chiffrement par bloc
Souvent utilisé lorsque le flux de données est constant
Fonctionnement:
Un flux de clés pseudo-aléatoire est généré à partir d'une clé secrète
Chaque bit ou octet des données en clair est chiffré en appliquant une opération
Les données peuvent être chiffrées et déchiffrées en continu, sans besoin de diviser en blocs
Courbes Elliptiques
Utilisées en cryptographie pour protéger les informations
Servent à chiffrer des données
Fonctionnent avec des équations mathématiques spéciales qui dessinent des courbes
Ex: y2=x3+ax+by2=x3+ax+b
Sur cette courbe, chaque point correspond à une paire de nombres (x,y)
.
Elle a une forme spéciale, un peu comme une vague ou une boucle
Ces points peuvent être utilisés pour des calculs.
Permet notamment de générer une clé publique et privée à partir de points sur la courbe
Les courbes non élliptiques n'ont pas les mêmes propriétés mathématiques:
Elles ne peuvent pas être utilisées de la même manière pour la cryptographie
Elles ne permettent pas les calculs nécessaires pour sécuriser les communications de façon aussi efficace.
L’addition de points sur une courbe elliptique permet de variabiliser le comportement de l’algorithme de chiffrement
Entropie (d'un fichier)
Signifie que le fichier contient des données aléatoires
Plus l'entropie est élevée, plus il est difficile de deviner ou de prédire le contenu car il y a beaucoup de données aléatoires
Cela peut indiquer que le fichier est chiffré ou compressé
Calculer l'entropie:
Lister le nombre de symboles différents et calculer la fréquence de chaque symbole
Utiliser la formule d'entropie de Shannon avec ces valeurs
Faire ensuite la somme des résultats obtenus pour chaque symbole, cela te donnera l'entropie totale du fichier, exprimée en bits par symbole.
Mode d'opération (pour le chiffrement)
Détermine comment un chiffrement est appliqué sur des données dans leur ensemble.
Introduit de la variation dans le chiffrement pour éviter les schémas répétitifs.
Est indépendant de l'algo de chiffrement en tant que tel:
L'algorithme de chiffrement définit comment un bloc de données est chiffré ou déchiffré avec une clé
Le mode d'opération détermine comment appliquer cet algorithme aux données
Tous les modes ne sont pas compatibles avec tous les algo de chiffrement (notamment pour les algo de chiffrement par flots)
Les principaux modes:
ECB (Electronic Codebook) : avec un algo et une clé, produit toujours le même chiffré
CBC (Cipher Block Chaining) :
Chaque bloc est chiffré après avoir été combiné avec le bloc précédent avec un XOR
introduit un vecteur d'initialisation (IV) pour chiffrer le premier bloc
CFB (Cipher Feedback) :
Transforme un chiffrement par bloc en chiffrement par flot
Chaque bloc est combiné avec le chiffrement du précédent, puis transmis.
Particulièrement utilisé dans les chiffrement par flot
OFB (Output Feedback) : Similaire à CFB, mais génère un flux pseudo-aléatoire indépendant des données en clair.
CTR (Counter Mode) :
Un compteur différent est utilisé pour chaque bloc, ce qui garantit aussi que les résultats seront différents
Chaque bloc est chiffré indépendamment, ce qui permet une parallélisation du chiffrement et du déchiffrement.
Lors du déchiffrement il faut:
Connaitre la clé
Connaitre l'algo de chiffrement
Connaitre le mode
Connaitre les paramètres du mode (ex: le vecteur d'initialisation)
Zero Knowledge Proof
Preuve à divulgation nulle de connaissance
Permet à une personne de prouver qu'elle connaît une information sans révéler cette information elle-même.
Exemple:
Bob veut s'assurer qu'Alice connait un secret cependant ils ne veulent pas s'échanger directement le secret (les murs on des oreilles...)
Imagine une grotte avec deux entrées, A et B, qui forment un cercle.
Au fond de la grotte, il y a une porte magique fermée par un mot secret.
Alice, connaît ce mot, mais elle ne veut pas le dire à Bob.
Alice va dans la grotte par l'entrée A ou B, mais Bob ne sait pas laquelle.
Bob demande à Alice de ressortir par l'entrée A ou B.
Si Alice connaît le mot secret, elle peut ouvrir la porte et ressortir par l'entrée que Bob a choisie.
Si elle ne connaît pas le mot, elle ne pourra pas toujours choisir la bonne sortie.
Après plusieurs essais, si Alice ressort toujours par la bonne sortie, Bob est convaincu qu'elle connaît le mot sans qu'elle ne l'ait révélé.
Chiffrements
AES
Advanced Encryption Standard
Algorithme de chiffrement:
Chiffre les données par blocs de 128 bits, avec des tailles de clé de 128, 192, ou 256 bits.
Robustesse : Très sécurisé et utilisé dans de nombreuses applications modernes
DES
= Data Encryption Standard
Algorithme de chiffrement par bloc
Chiffre les données par blocs de 64 bits avec une clé de 56 bits
Robustesse : Aujourd'hui considéré comme insecure , car la taille de la clé est trop courte
RSA
= Rivest Shamir Adleman
Algorithme de chiffrement:
Asymétrique (clé publique + privée)
Robustesse :
Repose sur la difficulté de factoriser de grands nombres, ce qui rend le décryptage sans la clé privée très compliqué
Sécurisé à condition d'utiliser des clés suffisamment grandes (2048 bits ou plus)
Fonctionnement:
Deux clés sont créées : une clé publique et une clé privée
La clé publique est distribuée aux clients, elle ne sert qu'a déchiffrer
La clé privée reste secrète, elle ne sert qu'à chiffrer
Signature Numérique
Prouve 2 choses:
Prouve l'authenticité de l'auteur d'un document
Prouve que le document n'a pas été changé
XOR
= OU exclusif
Opération logique qui compare deux bits
Donne comme résultats:
0
si les 2 bits sont identiques (0
avec 0
ou 1
avec 1
)
1
si les 2 bits sont différents (0
avec 1
)
Les données sont réversibles:
Si on applique la même opération avec la même clé sur les données chiffrées alors on déchiffre
Ex: clé = 1010
, données à chiffrer = 1101
Résultat chiffré = 1010 XOR 1101 = 0111
Résultat déchiffré = 1101 XOR 0111 = 1010