315 lines
15 KiB
TeX
315 lines
15 KiB
TeX
\documentclass[a4paper,french,12pt]{article}
|
|
|
|
\title{Théorie de l'information et Cryptologie}
|
|
\author{}
|
|
\date{Dernière compilation~: \today{} à \currenttime}
|
|
|
|
\usepackage{styles}
|
|
|
|
\begin{document}
|
|
|
|
\maketitle
|
|
\tableofcontents
|
|
|
|
\clearpage
|
|
|
|
\section{Chiffrement symétrique}
|
|
|
|
L'algorithme de chiffrement est \emph{connu publiquement}.
|
|
C'est le principe de Kirshoff.
|
|
Il faut se baser sur la qualité de l'algorithme et la taille des clés.
|
|
Un algorithme gardé secret finira tôt ou tard par être rendu publique (sur un forum par exemple).
|
|
|
|
\subsection{Cas d'usage}
|
|
|
|
\begin{itemize}
|
|
\item Clé à usage unique
|
|
\item Chiffrement de fichiers
|
|
\item Signatures numériques
|
|
\item Communication anonyme
|
|
\item Monnaie numérique
|
|
\item Élection privée
|
|
\item Enchère
|
|
\end{itemize}
|
|
|
|
\section{Une science rigoureuse}
|
|
|
|
\paragraph{Les trois étapes de la cryptographie}
|
|
|
|
\begin{itemize}
|
|
\item spécifier avec précision le \emph{modèle de menace}
|
|
\item proposer une construction
|
|
\item prouver que briser la construction résoudra un problème difficile sous-jacent
|
|
\end{itemize}
|
|
|
|
\paragraph{Choses à retenir}
|
|
|
|
La cryptographie est un outil formidable et à la base de nombreux mécanismes de sécurité.
|
|
Mais elle n'est \emph{pas}~:
|
|
|
|
\begin{itemize}
|
|
\item la solution à tous les problèmes
|
|
\item fiable à moins d'être implémentée et utilisée correctement
|
|
\item quelque chose à essayer d'inventer soi-même
|
|
\end{itemize}
|
|
|
|
\section{Chiffrement de César}
|
|
|
|
\section{Chiffrement monoalphabétique}
|
|
|
|
\section{Chiffres de substitution polygrammiques}
|
|
|
|
\section{Chiffrement polyalphabétique}
|
|
|
|
\section{Chiffrement de Vigénère}
|
|
|
|
Le chiffrement de Vigénère utilise non pas un mais 26 alphabets décalés pour chiffrer un message.
|
|
Cela réduit les possibilités d'analyse fréquentielle.
|
|
|
|
\subsection{Déchiffrement}
|
|
|
|
\paragraph{Méthode Babage-Kasiski}
|
|
|
|
On cherche des séquences de lettres qui apparaissent plus d'une fois dans le texte.
|
|
Deux cas se présentent~:
|
|
|
|
\begin{itemize}
|
|
\item soit la même séquence de lettres du texte clair a été chiffrée avec la même partie de la clef
|
|
\item soit deux suites de lettres différentes dans le texte clair ont par pure coïncidence engendré la même suite dans le texte chiffré
|
|
\end{itemize}
|
|
|
|
Comme le premier cas est le plus probable, il permettra de deviner la longueur de la clef.
|
|
|
|
\paragraph{Méthode Bazeries}
|
|
|
|
Cette méthode se base sur l'existence d'un mot \emph{probable} et préconise la recherche du mot-clef.
|
|
|
|
\paragraph{Méthode Friedman}
|
|
|
|
L'indice de coïncidence (IC) est la probabilité que deux lettres choisies aléatoirement dans un texte soient identiques.
|
|
|
|
\begin{align*}
|
|
IC = \frac{n_A(n_A - 1) + n_B(n_B - 1) + \cdots + n_Z(n_Z -1)}{n(n-1)}
|
|
\end{align*}
|
|
|
|
\begin{tabularx}{\linewidth}{lllllllll}
|
|
\textbf{Langue} & allemand & anglais & espagnol & esperanto & français & italien & norvégien & suédois \\
|
|
\textbf{IC} & $0.072$ & $0.065$ & $0.074$ & $0.069$ & $0.074$ & $0.075$ & $0.073$ & $0.071$ \\
|
|
\end{tabularx}
|
|
|
|
Cet indice a des propriétés très intéressantes~:
|
|
|
|
\begin{itemize}
|
|
\item Pour une langue avec un alphabet de 26 lettres où chaque lettre a la même fréquence ($\frac{1}{26}$), $IC=0.038$.
|
|
\item Pour toute substitution monoalphabétique et pour toute transposition, la distribution des fréquences est invariante, donc l'IC sera la même que pour le texte clair.
|
|
\item Donc, si l'on calcule l'IC d'un texte chiffré avec un chiffrement monoalphabétique, on devrait trouver un IC égal environ à 0.074 en français.
|
|
Si l'IC est beaucoup plus petit (par exemple 0.050), le chiffrement est probablement polyalphabétique.
|
|
\end{itemize}
|
|
|
|
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{Stéganographie}
|
|
|
|
\section{Cryptographie appliquée au WiFi}
|
|
|
|
\subsection{Les attaques sur WiFi}
|
|
|
|
Le WiFi fonctionne en half-duplex.
|
|
|
|
\paragraph{L'espionnage}
|
|
|
|
Il est plus facile avec les communications radio, typiquement dans les 30 mètres.
|
|
|
|
\paragraph{Wardriving}
|
|
|
|
\begin{itemize}
|
|
\item Découverte des réseaux
|
|
\end{itemize}
|
|
|
|
\paragraph{DoS}
|
|
|
|
\subsection{Premières solutions}
|
|
|
|
\begin{itemize}
|
|
\item Planification radio (limiter les débordements)
|
|
\item Éviter les AP pirates (rogue AP)~: par exemple en utilisant des controlleurs WiFi
|
|
\item Masquer le SSID~: mauvaise solution, car l'attaque le trouvera de toute façon dans toutes les trames
|
|
\item Filtrage par adresse MAC~: lourd à mettre en \oe{}uvre, et pas très utile
|
|
\item Créer un réseau WiFi isolé avec des VLANs~: pas productif
|
|
\end{itemize}
|
|
|
|
\subsection{Chronologie}
|
|
|
|
\begin{itemize}
|
|
|
|
\item 1999, \emph{802.11} d'origine --- authentification 802.11 \emph{native}, chiffrement \emph{WEP statique}.
|
|
L'objectif était de fournir le même niveau de sécurité que le filaire (donc aucune sécurité).
|
|
Aussi, la cryptographie était limitée par la puissance des appareils et par la loi (interdiction d'avoir des clés trop grandes, interdiction d'exporter les algorithmes).
|
|
|
|
\item 2001, \emph{802.1X} avec WEP (LEAP) --- authentification \emph{802.1X} avec gestion des clés, protection des données par \emph{WEP}.
|
|
Le protocole 802.1X, au niveau MAC, va contacter un serveur d'authentification.
|
|
Ces serveurs sont appelés AAA (Authentication, Authorisation, Accounting).
|
|
802.1X permet également de changer les clés, contrairement au \emph{WEP statique}.
|
|
|
|
\item 2003, \emph{WPA} --- authentification \emph{802.1X} avec une gestion des clés améliorée, protection des données par \emph{TKIP}.
|
|
On a patché le WEP avec TKIP parce que WEP avait été cassé.
|
|
|
|
\item 2004, \emph{WPA2} --- \emph{standard IEEE 802.11i}, authentification 802.1X avec une gestion des clés améliorée, protection des données par \emph{AES} et \emph{pré-authentification}.
|
|
|
|
\item 2018, \emph{WPA3} --- handshake \emph{dragonfly}, \emph{PFS} (Perfect Forward Secrecy), management frames protection (obligatoire).
|
|
Deux chercheurs ont trouvé une faille dans WPA2 en 2017.
|
|
Le consortium WiFi (des industriels) ont développé WPA3, mais ce n'est pas un organisme de standardisation, donc le standard n'est pas encore sorti.
|
|
|
|
\end{itemize}
|
|
|
|
\subsection{Résumé}
|
|
|
|
\begin{tabularx}{\linewidth}{YYYYY}
|
|
\toprule
|
|
& \textbf{WEP} & \textbf{WPA} & \textbf{WPA2} & \textbf{WPA23} \\
|
|
\toprule
|
|
\textbf{Acronyme} & Wired Equivalent Privacy & WiFi Protected Access & WiFi Protected Access 2 & WiFi Protected Access 3 \\
|
|
\midrule
|
|
\textbf{Année de développement} & 1997 & 2003 & 2004 & 2018 \\
|
|
\midrule
|
|
\textbf{Niveau de sécurité} & Très faible & Faible & Élevé & Très élevé \\
|
|
\midrule
|
|
\textbf{Chiffrement} & RC4 & TKIP et RC4 & AES-CCMP & AES-CCMP et AES-GCMP \\
|
|
\midrule
|
|
\textbf{Taille de clé} & 64bit, 128bit & 128bit & 128bit & 128bit, 256bit \\
|
|
\midrule
|
|
\textbf{Authentification} & Open System et clé partagée & clé pré-partagée et 802.1X avec EAP & clé pré-partagée et 802.1X avec EAP & AES-CCMP et AES-GCMP \\
|
|
\midrule
|
|
\textbf{Intégrité} & CRC-32 & MIC 64bit & CCMP avec AES & SHA-2 \\
|
|
\bottomrule
|
|
\end{tabularx}
|
|
|
|
\subsection{WEP}
|
|
|
|
La confidentialité est assurée par un chiffrement grâce à un algorithme à flot continu.
|
|
|
|
\paragraph{RC4}
|
|
|
|
Conçu par Ron Rivest en 1987 pour RSA Labs.
|
|
L'algorithme a été gardé secret jusqu'en 1994, puis a été communiqué sur la liste de diffusion de Cypherpunks.
|
|
|
|
Il est \emph{bytes-oriented}~: il génère caractère par caractère (un seul octet à chaque étape).
|
|
Un secret partagé est nécessaire (par mot de passe par exemple), souvent de 40 bits (5 caractères) ou 128 bits (13 caractères).
|
|
|
|
Les algorithmes stream cipher n'utilisent que des opérations basiques avec des XOR (pas d'exponentielle, de factorielle, de multiplication\ldots).
|
|
Ils sont donc simples à implémenter et à déchiffrer.
|
|
Par ailleurs, pas besoin de faire de bourrage (rendre la taille des blocs identiques).
|
|
|
|
\paragraph{Attaque sur RC4}
|
|
|
|
\subsection{WPA}
|
|
|
|
L'objectif, urgent, était de remplacer WEP\@.
|
|
Le standard est WPA2.
|
|
|
|
On a ajouté un compteur pour empêcher les attaques par rejeu.
|
|
Le vecteur d'initialisation a une taille de 48 bits.
|
|
Les clés sont actualisées dynamiquement grâce à TKIP\@.
|
|
Dans WPA2, on utilise AES à la place de RC4.
|
|
|
|
\paragraph{WPA Personnel et Entreprise}
|
|
|
|
Il y a deux façons d'utiliser WPA\@.
|
|
|
|
\begin{enumerate}
|
|
|
|
\item Personnel --- Utilise des clés pré-partagées (PSK).
|
|
Chaque appareil connecté à l'AP utilise le même secret.
|
|
L'utilisateur doit entrer une clé de 256 bits.
|
|
|
|
\item Entreprise --- Authentification par serveur IEEE 802.1X, qui distribue différentes clés aux utilisateurs.
|
|
Souvent le serveur utilisé est Radius, ce qui permet de centraliser la gestion des informations d'identification des utilisateurs.
|
|
|
|
\end{enumerate}
|
|
|
|
\paragraph{Robust Security Network (RSN)}
|
|
|
|
\begin{itemize}
|
|
\item Contrôle d'accès~: on se base sur 802.1.
|
|
Le contrôle d'accès est basé sur le port.
|
|
Quand on est branché cela ne veut donc pas dire qu'on est authentifié.
|
|
\item Authentification et génération des clés~: on utilise Extensible Authentication Protocol (EAP).
|
|
\item Confidentialité, authenticité, intégrité et protection anti rejeu~: on utilise TKIP et CCMP\@.
|
|
\end{itemize}
|
|
|
|
\paragraph{Le modèle 802.1X}
|
|
|
|
\begin{center}
|
|
\begin{tikzpicture}
|
|
\node [rectangle,draw,thick,minimum height=3cm] (supplicant) at (0,0) {Système Supplicant};
|
|
\node [rectangle,draw,thick] at (0,-1) {Client PAE};
|
|
\node [rectangle,draw,thick] at (4,-1) {Controlleur PAE};
|
|
\node [rectangle,draw,thick] (radius) at (8,0) {\parbox{3.1cm}{\centering Serveur \\ d'authentification \\ (Radius)}};
|
|
\end{tikzpicture}
|
|
\end{center}
|
|
|
|
\paragraph{Phases opérationnelles de 802.11i}
|
|
|
|
\begin{enumerate}
|
|
|
|
\item Politique de sécurité ---
|
|
|
|
\item Authentification ---
|
|
Le probe request (Open System 802.11) renvoie toujours un ``Authentication Success'', pour des raisons de compatibilité des équipements.
|
|
La véritable authentification se fait dans la phase 2.
|
|
|
|
Après avoir détecté qu'on est en WPA Entreprise (pas de PSK), on va joindre un client Radius, qui demande une identité, \emph{Request Identity}, à laquelle sera répondue une \emph{Response Identity} (802.1X/EAP).
|
|
Le client Radius fait alors une \emph{Request Identity} au serveur Radius.
|
|
Ce serveur Radius va alors dériver la clé maîtresse dans un message EAP spécifique.
|
|
Puis un \emph{Radius Accept} est envoyé au client Radius, qui renvoie un \emph{802.1X Success} au Supplicant.
|
|
|
|
Le client Radius (AP), ne décapsule pas toute la trame reçue.
|
|
Il s'arrête à EAP, ce qui le rend plus léger~: il n'a qu'un protocole à implémenter.
|
|
|
|
EAP propose plusieurs méthodes de chiffrement pour permettre une négociation.
|
|
\texttt{md5} n'est pas utilisé, car il ne génère pas de clé maîtresse.
|
|
\texttt{TLS} nécessite un certificat.
|
|
Le plus utilisé est PEAP (Protected EAP).
|
|
On crée un tunnel SSL avec le certificat du serveur Radius.
|
|
C'est dans ce tunnel que l'on authentifie le client.
|
|
|
|
On peut aussi utiliser EAP/TTLS (Tunneled TLS), ce qui permet de supporter d'anciennes méthodes non supportées par EAP, car on les encapsule dans un tunnel.
|
|
On peut alors par exemple utiliser \texttt{md5}, même s'il ne génère pas de clé maîtresse.
|
|
|
|
\item Dérivation et distribution des clés ---
|
|
Une fois que le client est authentifié, le point d'accès initie un 4-way handshake.
|
|
Il permet de~:
|
|
|
|
\begin{itemize}
|
|
\item confirmer la connaissance de la PMK par le client
|
|
\item dériver une nouvelle PTK
|
|
\item installer les clés de chiffrement et d'intégrité
|
|
\item
|
|
\end{itemize}
|
|
|
|
\begin{enumerate}
|
|
\item L'AP envoie un ANonce (Nonce = Number used Once), aléatoire.
|
|
\item Le client dérive la PTK et envoie un SNonce aléatoire.
|
|
\item L'AP dérive la PTK, initialise la GMK et calcule la GTK\@.
|
|
Puis il envoie la GTK chiffrée.
|
|
\item Les deux entités sont synchronisées avant le chiffrement, puis le client envoie un ACK\@.
|
|
\end{enumerate}
|
|
|
|
Le port 802.1X est alors ouvert, le client et l'AP installent la PTK et la GTK\@.
|
|
|
|
\begin{itemize}
|
|
\item MK --- Master Key.
|
|
C'est une PSK pour WPA Personnel.
|
|
\item PMK --- Pairwise Master Key.
|
|
\item PTK --- Pairwise Transient Key (pour l'unicast).
|
|
\item GTK --- Group Transient Key (pour le multicast).
|
|
\end{itemize}
|
|
|
|
\end{enumerate}
|
|
|
|
\subsection{AES}
|
|
|
|
\url{https://formaestudio.com/rijndaelinspector/archivos/Rijndael_Animation_v4_eng-html5.html}
|
|
|
|
\end{document}
|