Skip to content

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:
    • Par bloc
    • Symétrique
  • 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