crypto


hash


# fichier de md5
$ john --format=raw-md5 -w ./a.txt

encoding


Transformer des données d’un format à un autre en utilisant une table de correspondance. Il est facile de retrouver les données en connaissant la table.
Ex: ASCII, base64,...


encryption


Transformer des données pour les garder secrètes (non compréhensible par un tier). On utilise pour cela un algorithme et un système de clé pour chiffrer et déchiffrer les données.

Ces algorithmes sont classés de deux maniéres:

  • utilisation de couple clé secrète/publique ou d’une clé partagée, on parle de chiffrement asymétrique ou symétrique.
  • utilisant des blocs ou des flux de données à l’entrée du chiffrement, on parle de chiffrement par flux ou par blocs.

Algorithme asymétriques:

  • Échange de clé de Diffie-Hellman
  • Rivest Shamir Adleman (RSA) <- used
  • Elliptic Curve Cryptography (ECC)

Algorithme symétriques:

  • Data Encryption Standard (DES)
  • Triple DES (3DES)
  • Advanced Encryption Standard (AES) <- used
  • Rivest Cipher 4 (RC4)

Modes de chiffrement par blocs:

  • Electronic Code Book (ECB)
  • Cipher Block Chaining (CBC)
  • Counter (CTR)

Ex: AES, RSA, Blowfish,...


hashing


Permet de garantir l’intégrité (ce que l’on envoi == ce que l’on reçoit) des données lors d’un échange. Si les données ont changé, on peut facilement le remarquer. L’ajout d’un sel (salt) concaténé à ce que l’on veut hacher va permettre par exemple pour un même mot de passe, d’avoir des hachés différents (car les salts sont différents.)

Caractèristiques importantes:

  • la même entrée donne la même sortie.
  • différentes entrées ne doivent pas donner la même sortie.
  • il n’est pas possible de retrouver l’entrée à partir de la sortie de l’algorithme.
  • un changement de l’entrée doit donner une sortie drastiquement différentes.

Fonctions de hachages:

  • MD5 (Message Digest 5)
  • SHA (Secure Hashing Algorithm) v1 and v2
  • NT et NTLM, utilisé par Windows pour stocker les mdp, basé sur MD4

Ex: SHA-256, SHA-512, MD5,...


obfuscation


Rendre un message difficile à lire en réalisant des transformations sur ce dernier. Il est souvent utilisé pour protéger une propriété intelectuelle. L’obfurcation n’est pas considéré comme un moyen sûr de protéger de l’information.

Ex: l’obfurcation de code JavaScript est utilsé pour empécher le debuggage ou protéger intellectuellemnt un code propriétéaire.

sources