Wirte crypto symétrique
This commit is contained in:
parent
b257151d6e
commit
a07db6f0f2
1 changed files with 106 additions and 2 deletions
|
@ -213,8 +213,6 @@
|
|||
On va considérer les sous-chaînes de lettres obtenues en prenant les lettres à différents intervalles donnés.
|
||||
À chaque fois, on calcule l'IC et on sélectionne l'intervalle dont l'IC correspond à la langue du texte.
|
||||
|
||||
\section{Cryptographie symmétrique}
|
||||
|
||||
\section{Stéganographie}
|
||||
|
||||
La stéganographie, en grec \emph{écriture couverte}, cache les messages dans un support.
|
||||
|
@ -300,6 +298,112 @@
|
|||
\item écrire les caractères correspondant aux codes ASCII obtenus
|
||||
\end{enumerate}
|
||||
|
||||
\section{Cryptographie symétrique}
|
||||
|
||||
La clé qui chiffre le message sert aussi à le déchiffrer.
|
||||
Ceci pose le problème du partage de clé, car les deux côtés de l'échange doivent posséder la même.
|
||||
On va donc échanger la clé via un canal fiable, différent de celui utilisé pour la communication.
|
||||
|
||||
\subsection{Chiffrement par bloc}
|
||||
|
||||
Avec un chiffrement par bloc, on chiffre des blocs de taille fixe.
|
||||
|
||||
\begin{center}
|
||||
\begin{tikzpicture}
|
||||
\draw[latex-latex] (-4,2) -- (-2,2) node[above,midway]{$b$ bits};
|
||||
\node[rectangle,draw,thick,minimum width=2cm] (plain1) at (-3,1.5) {plaintext};
|
||||
\node (k1) at (-5.5,0) {clé (K)};
|
||||
\node[rectangle,draw,thick,fill=gray!30] (encryption) at (-3,0) {\parbox{2.5cm}{\centering Algorithme de \\ chiffrement}};
|
||||
\node[rectangle,draw,thick,minimum width=2cm] (cipher1) at (-3,-1.5) {ciphertext};
|
||||
\draw[latex-latex] (-4,-2) -- (-2,-2) node[below,midway]{$b$ bits};
|
||||
\draw[-latex] (k1) -- (encryption);
|
||||
\draw[-latex] (plain1) -- (encryption);
|
||||
\draw[-latex] (encryption) -- (cipher1);
|
||||
|
||||
\draw[latex-latex] (4,2) -- (2,2) node[above,midway]{$b$ bits};
|
||||
\node[rectangle,draw,thick,minimum width=2cm] (cipher2) at (3,1.5) {ciphertext};
|
||||
\node (k2) at (0.5,0) {clé (K)};
|
||||
\node[rectangle,draw,thick,fill=gray!30] (decryption) at (3,0) {\parbox{2.5cm}{\centering Algorithme de \\ déchiffrement}};
|
||||
\node[rectangle,draw,thick,minimum width=2cm] (plain2) at (3,-1.5) {plaintext};
|
||||
\draw[latex-latex] (4,-2) -- (2,-2) node[below,midway]{$b$ bits};
|
||||
\draw[-latex] (k2) -- (decryption);
|
||||
\draw[-latex] (cipher2) -- (decryption);
|
||||
\draw[-latex] (decryption) -- (plain2);
|
||||
|
||||
\draw[-latex] (cipher1) -- (-0.75,-1.5) -- (-0.75,1.5) -- (cipher2);
|
||||
\end{tikzpicture}
|
||||
\end{center}
|
||||
|
||||
\subsection{Chiffrement par flot}
|
||||
|
||||
Avec un chiffrement par flot, on chiffre des données de taille quelconque.
|
||||
|
||||
\begin{center}
|
||||
\begin{tikzpicture}
|
||||
\node[rectangle,draw,thick,fill=gray!30,text height=4cm,minimum width=3cm] (encryption) at (-3,0) {chiffrement};
|
||||
\node[rectangle,draw,thick,fill=white] (bitstream1) at (-3,1) {\parbox{2cm}{bit-stream \\ generation}};
|
||||
\node (k1) at (-6,1) {clé ($K$)};
|
||||
\draw[-latex] (k1) -- (bitstream1);
|
||||
\node (plain1) at (-6,-1) {\parbox{2cm}{\centering plaintext\\($p_i$)}};
|
||||
\node[circle,draw,thick,fill=white,minimum width=0.5cm] (xor1) at (-3,-1) {};
|
||||
\draw[thick] (-3.25,-1) -- (-2.75,-1); \draw[thick] (-3,-1.25) -- (-3,-0.75);
|
||||
\draw[-latex] (bitstream1) -- (xor1) node[midway,left]{$k_i$};
|
||||
\draw[-latex] (plain1) -- (xor1);
|
||||
|
||||
\node (cipher) at (0,-1) {\parbox{2cm}{\centering ciphertext\\($c_i$)}};
|
||||
|
||||
\node[rectangle,draw,thick,fill=gray!30,text height=4cm,minimum width=3cm] (decryption) at (3,0) {déchiffrement};
|
||||
\node[rectangle,draw,thick,fill=white] (bitstream2) at (3,1) {\parbox{2cm}{bit-stream \\ generation}};
|
||||
\node (k2) at (0,1) {clé ($K$)};
|
||||
\draw[-latex] (k2) -- (bitstream2);
|
||||
\node (plain2) at (6,-1) {\parbox{2cm}{\centering plaintext\\($p_i$)}};
|
||||
\node[circle,draw,thick,fill=white,minimum width=0.5cm] (xor2) at (3,-1) {};
|
||||
\draw[thick] (3.25,-1) -- (2.75,-1); \draw[thick] (3,-1.25) -- (3,-0.75);
|
||||
\draw[-latex] (bitstream2) -- (xor2) node[midway,left]{$k_i$};
|
||||
\draw[-latex] (xor1) -- (cipher);
|
||||
\draw[-latex] (cipher) -- (xor2);
|
||||
\draw[-latex] (xor2) -- (plain2);
|
||||
\end{tikzpicture}
|
||||
\end{center}
|
||||
|
||||
\subsection{Mode opératoire}
|
||||
|
||||
On parle de mode d'opération pour parler de la manière de traiter les blocs de texte clairs et chiffrés au sein d'un algorithme de chiffrement par bloc.
|
||||
Chaque mode propage différemment les erreurs lors des différentes étapes de modification de données pendant le chiffrement.
|
||||
Historiquement, on cherchait à garantir l'intégrité.
|
||||
Aujourd'hui, il existe des mécanismes associant chiffrement et authentification.
|
||||
|
||||
\begin{tabularx}{\linewidth}{XXX}
|
||||
\toprule
|
||||
\textbf{Mode} & \textbf{Description} & \textbf{Application} \\
|
||||
\toprule
|
||||
Electronic Code Book (ECB) & Chaque bloc est chiffré indépendemment avec la même clé. & Transmission de valeurs uniques (comme une clé de chiffrement). \\
|
||||
\midrule
|
||||
Cipher Block Chaining (CBC) & Un XOR du ciphertext du bloc précédent et du plaintext du bloc suivant sert d'entrée à l'algorithme de chiffrement. & Transmission générique orientée par bloc, authentification. \\
|
||||
\bottomrule
|
||||
\end{tabularx}
|
||||
|
||||
\paragraph{Electronic Code Book (ECB)}
|
||||
|
||||
Le message à chiffrer est subdivisé en plusieurs blocs qui sont chiffrés séparément les uns après les autres.
|
||||
|
||||
L'avantage est qu'on peut paralléliser le chiffrement et le déchiffrement.
|
||||
|
||||
L'inconvénient est que deux blocs identiques seront chiffrés de la même manière.
|
||||
On peut donc construire un dictionnaire (\emph{codebook}) associant texte chiffré et texte en clair.
|
||||
Cela veut dire un produit non aléatoire et permet donc une attaque par rejeu.
|
||||
|
||||
\paragraph{Cipher Block Chaining (CBC)}
|
||||
|
||||
C'était le mode le plus largement déployé dans le passé.
|
||||
|
||||
Ses défauts~:
|
||||
|
||||
\begin{itemize}
|
||||
\item Il nécessite un bourrage (\emph{padding}) pour produire un multiple de la taille du bloc.
|
||||
\item Il est vulnérable aux \emph{padding oracle attacks} (comme POODLE sur SSL).
|
||||
\end{itemize}
|
||||
|
||||
\section{Cryptographie appliquée au WiFi}
|
||||
|
||||
\subsection{Les attaques sur WiFi}
|
||||
|
|
Loading…
Reference in a new issue