fin crypto

This commit is contained in:
Béranger 2021-10-05 17:32:48 +02:00
parent d2218d9e5d
commit e10897a646
6 changed files with 137 additions and 1 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 136 KiB

BIN
Crypto/Images/ECB.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

BIN
Crypto/Images/IND-CPA.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

BIN
Crypto/Images/spnet_sch.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 131 KiB

View file

@ -174,4 +174,138 @@ Une autre techinque de chiffrement consiste à faier passer le message dans une
- Plus il y a de round, plus le chiffré en sortie sera uniforme
- Ici, on considère que le niveau de sécurité est proche de celui d'une attaque par force brute qui est une recherche à tatons de la clé de chiffrement
on a donc ici $nb_{itération de recherches} = 2^{security level} = 2^{taille de la clé}$
En pratique, on va avoir un algorithme qui délivre une clé maitre qui sera dérivée pour chaque étage. autrement dit, les clés de chaque étagesont conditionnées par une seule clé maître, et ne sont pas toutes indépendantes.
on a donc ici $nb_{itération de recherches} = 2^{security level} = 2^{taille de la clé}$
<p align="center">
<img src="./Images/spnet_sch.png">
</p>
On parle de S-Box pour les substitions et P-Box ou D-Box pour Permutation ( Ou diffusion).
## S-Box
Substitue un symbole pour un autre. Cela contribue à la confusion puisque ça rend la sortie inintelligible. D'une pière deux coups, cela accentue également la non linéarité de la sortie.
## P-Box ou D-Box
Echange deux symboles les uns par rapport aux autres. Cela contribue à la diffusion puisque cela déplace les symboles d'un endroit à l'autre. Par contre cela n'a aucun effet sur la linéarité de la sortie.
# AES
Il s'agit d'un mécanisme basé sur un réseau de S/P. Sa conception est très intéressante puisque la sécurité et l'implémentation ont été étudié lors du design de la solution.
Nous sommes ici avec un chiffrement symétrique.
<p align="center">
<img src="./Images/AES_round1.png">
</p>
On est sur des blocs de 128 bits en général.
L'état interne est composé d'une matrice d'octets de 4x4. 4 operations sont exécutées sur l'état interne à chacun des rounds.
1 - AddRoundKey
- xor between state and round-key.
- if message independant from key, and key uniform, then the new state
- looks uniform.
2 - SubBytes
- Non-linearity: Minimization of input-output correlation.
- Complexity: Complex expression in GF(28).
- Simple implementation: Look-up table (and must be since litteral expression complex).
3 - ShiftRows
- Variable byte rotation of each line depending on line index.
- First line: no rotation.
- Second row: 1 byte rotation.
- Third row: 2 bytes rotation.
- Fourth row: 3 bytes rotation.
4 - MixColumns
- Column per column scrambling of coefficients. Equivalent to multiplying each column by following matrix:
$\begin{pmatrix}
2 & 3 & 1 & 1\\
1 & 2 & 3 & 1\\
1 & 1 & 2 & 3\\
3 & 1 & 1 & 2
\end{pmatrix}$
# Chiffrement de grands messages
## Electronic Code Block
<p align="center">
<img src="./Images/ECB.png">
</p>
The message is split into blocks matching the size of Block-Ciphers block
length. Each block is encrypted with the same key.
Pros:
- Simplest construction.
- Destination can decrypt a specific block without extra computations.
- Vulnerabilities?
# Comment évaluer la sécurité ?
Propriétés de Sécurité :
Sans information sur la clé, aucune info du chiffré n'informe d'aucune info du clair. : Sécurité Sémantique
Adversary capabilities are defined as indistinguishability games:
- IND-KPA (known plaintext-attack): adversary sees pairs $(m_i
, Enc(m_i))$.
- IND-CPA (chosen plaintext-attack): adversary SELECTS messages mi
and ASKS an entity to encrypt $m_i$
- IND-CCA: More information during asymmetric encryption lesson.
## IND-CPA
<p align="center">
<img src="./Images/IND-CPA.png">
</p>
Win condition
- L'adversaire gagne si : $Pr[b = b'] > 1/2$.
- Si Pr[b = b'] = 1/2, alors l'adversaire peut seulement deviner au hasard quel message a été chiffré.
- Advantage: $ACPA = |Pr[b = b'] 1/2| = \in$
# Intégrité et Authentification
## Cahier des charges
- On voudrait un petit bout de code comparé à la donnée à checker.
- On souhaiterait une robustesse intrinseque aux bitflips.
- On voudrait qu'il soit impossible de trouver un antécédant du code chiffré à partir de ce petit bout code.
On parle ici de **codes de contrôles d'intégrité**, ou **fonction de Hash**.
Propriétés usuelles :
- En connaissant $h_{m_1} = H(m_1)$, trouver $m_2$ est difficile tel que $H(m_2)=h_{m1}$
- Pour un message $m_1$, trouver $m_2$ tel que $H(m_1) = H(m_2)$ est difficile
- Trouver $m_1$ et $m_2$ tel que $H(m_1)=H(m_2)$ est difficile.
# Etude de la sécurité des fonctions de hashage
## Est ce que la pire des attaques concernant les fonctions de hashage est la recherche exhausitve
On parle d'attaque annivesaire en lien avec le paradoxe de l'anniversaire.
## Notation
Soit $\mathbb{Z}_M -> \mathbb{Z}_H$ une fonction de Hash avec H sorties possibles. On note
- p(n;H) la probabilité de trouver au moins une collision après n essais
- n(p,H) le nombre d'essais avant de trouver une collision avec une probabilité p.
## Estimation of p(n; H)
- $p(n; H) = \frac{365!}{(365n)!365^n} \simeq 1 e^{n2 /(2H)}$.
- (Birthday attack exact formula + application of stirling formula
- $(n! \simeq \sqrt{2\pi n}(\frac{n}{e})^n)$
+ application of taylor expansion at order 2).
Estimation of n(p; H)
- $n(p; H) = \sqrt{2H\ln\frac{1}{1p}} $

2
Réseau/TP/tp_ran.md Normal file
View file

@ -0,0 +1,2 @@
# Installation Réseau