# Cryptographie

## Les bases

### Objectifs de la sécurité

- Confidentialité : info accessible que par les gens qui ont le droit
- Intégrité : assurer la non altération d'un message envoyé
- Authentification : chaque personne est bien qui elle prétend être
- Non répudiation : une action ne peut être niée

### Outil de protection des données

- Croptologie : science des message secrect
- Stéganographie : dissimulation d'information en clair
- Watermarker : infos de copyright sur un fichier

### La cryptologie

- Cryptographie : Chiffrer / Déchiffrer (avec clé)
- Cryptanalyse : Décrypter (sans clé)

### Définitions

- Cryptogramme : message chiffré
- Crypto-système : Algorithme de chiffrement

### Crypto-systèmes classiques

Ne permet plus de rendre du texte confidentiel.

#### Chiffrement par substitution

- Mono-alphabétique : décalage dans l'alphabet (ex : Code de César)
- Poly-alphabétique : décalage qui dépend d'une clé (ex : Vigenère)

#### Chiffrement par transposition

On dispose le message dans une matrice et on la transpose.

## Cryptographie Moderne

Principe de Kerkhoffs : La sécurité d'un système de chiffrement ne doit reposer que sur le secret de sa clé.

### Cryptographie Symétrique

On dispose d'une clé pour chiffrer et déchiffrer.

Chiffrement par flux (Stream Cipher) :

  - Message traité bit par bit (pour la communication temps réel)
  - Permet de traiter des données de longueur quelconque

Chiffrement par Bloc (Bloc Cipher) :

  - Le message est traité par blocs de taille fixe.

Objectifs : 

- Transformer le message en un suite qui semble le plus possible aléatoire pour limiter les attques par analyse statistique

Avantages :

- Simple à mettre en oeuvre
- Chiffrement rapide
- Pas coûteux en ressources

Inconvénients :

- Pb de l'échange de clés
- Pb de gestion des clés

#### DES

- Utilise une clé de 56 bits.
- Texte &rarr; Permutation &rarr; Substitution (16 itérations) basée sur le schéma de Feistel &rarr; Permutation inverse &rarr; Texte
- Plus utilisé car une clé de 56 bits peut être brut forcée avec le puissance de calcul actuelle.


### AES

- Crypto-système symétrique par blocs
- Toujouts d'actualité
- Basé sur un réseau de substitution et permutations
- Supporte différentes combinaisons de longueur de clé / de bloc

### Cryptographie Asymétrique

Utilise une clé publique pour chiffrer et une clé privée pour déchiffrer.

#### Notions

- Fonction à sens unique : soit une fonction $f$, il est possible de calculer facilement $f(x)$ à partir de $x$ mais l'opération inverse est difficile.
- Fonction à sens unique à trappe : Le problèmes est du à résoudre sauf pour ceux qui connaissent la trappe secrète.
- Problème non polynomiaux : le calcul de la solution ne se fait pas en temps polynomial par rapport à la taille des données.

#### Exemples

- Factorisation de grands nombres
  - RSA
  - Rabin
- Logarithme discret
  - Diffie-helman
  - El Gamal
- Courbes elliptiques
  - ECDH
  - ECDSA

Avantages :
- Résoud le pb d'échange des clés 

Inconvénients : 
- Lent
- Couteux
- Authentification

#### Histoire

- 1976 : Découverte de la cryptographie asymétrique
- 1978 : Premier algorithme asymétrique, RSA par Rivest, Shamir et Adleman
- 1985 : Découverte de la cryptographie sur les coubres elliptiques

#### Diffie Hellman

Repose sur le calcul d'un exposant qui est difficile à inverser.

1. On définit des valeurs connues transmises en clair, $p$ et $alpha$
2. Chaque parti choisit respectivement un nombre $a$ pour Alice et $b$ pour Bob entre $1$ et $p-1$
3. Chaque partie calcule $A$ (resp $B$) congru à $alpha$ elevé à la puissance $a$ (resp $b$) mod $p$
4. Les partis échangent leur $A$ et $B$
5. Les partis calculent le secret $k$ à partir de $B$ (resp $A$) elevé à la puissance $a$ (resp $b$) mod $p$

#### RSA

1. Bob choisit deux grands nombres premiers $p$ et $q$ et calcule $n = p * q$
2. Il choisit un nombre $e$ premier avec $(p - 1)(q - 1)$ et calcul $d$, l'inverse de $e$ mod $(p - 1)(q - 1)$.
3. $n$ et $e$ sont publiés (c'est la clé publique)

On ne dévoile pas $p$,$q$,$d$ (c'est la clé privée)

Un message est un entier $x$ mod $n$

4. Alice chiffre $x$ avec la formule suivante : $y$ congru à $x$ exposant $e$ mod $n$
5. Bob déchiffre $y$ par la formule $x$ congru à $y$ exposant $d$ mod $n$

### Signature numérique

Permet de garantir l'intégrité des données. Doit être : 
- Authentique
- Infalsifiable
- Non réutilisable
- Inaltérable
- Irrévocable

&rarr; La signature est une fonction du message

### Fonctions de hachage

FOnction à sens unique rapide à calculer mais dont l'opération inverse est dans la classe des problèmes NP. Elle transforme un message de longueur arbitraire en une empreinte numérique de taille fixe, 160bits en général.

- Exemples : MD5, SHA-1, SHA-256
- Garantir l'intégrité du message
- Stocker les mots de passe
- Hachage avec clé : Message Authentication Code (MAC)

### PKI


#### Composantes
- Authorité d'enregistrement (RA)
  - Enregistre la demande et vérifie l'ID du demendeur
- Authorité de certification  (CA)
  - Signe les certificats
- CRL (Certificat Revocation)
  - List des révocations de certificat
- OCSP (Online Certficat Status Protocol)

#### Modèles de confiance
- Monopoliste : Une CA pour tout le monde
- Monopoliste avec Autorité d'enregistrement : Une CA, plusieurs RA pour vérifier les identités
- Délégation de pouvoir de certification : Une CA délègue le pouvoir à d'autres entités qui deviennent CA en leur donnant un certificat qui affirme leur capacité d'être CA.
- Modèle Anarchique : Chacun établit à qui il fait confiance

#### Validation d'un certificat

- Signature de l'AC (Authenticité)
- Chemin de certificat (Possible de remonter à un AC de confiance)
- Période de validité (pas expiré)
- Status (pas révoqué)

#### Le certificat

- Lie une identité à une clé publique
- Signé numériquement, il atteste que l'identité correspond bien à la clé publique associée
- Signé numériquement par une authorité de confiance dont la clé publique est connue de tous

### TLS / SSL

SSL / TLS : Secure Socket Layer / Transport Layer Security.
- Sécurise les échanges client / serveur
- Standard RFC

Service assurés : 
- Confidentialité : chiffrement symétrique
- Intégrité MAC : Message Authentication Code
- Authentification : certificats X.509 et MAC

#### Fonctionnement

Handshake
- Authentification mutuelle
- Négociation des algorithmes
- Echanges des clés

Record
- Utilise les paramètre définit au Handshake pour garantir la sécurité des échanges