Add the report.
[crypto_lab1.git] / rapport / main.tex
1 \documentclass[a4paper,10pt]{article}
2
3 \usepackage[francais]{babel}
4 \usepackage[utf8]{inputenc}
5 \usepackage[T1]{fontenc}
6 \usepackage{lmodern}
7
8 \usepackage{listings}
9 \usepackage{url}
10
11 \title{ICR - Labo \#1 : \textit{MAC-and-Encrypt and Padding Oracles}}
12 \author{G.Burri}
13
14 \begin{document}
15
16 \lstset{language=C}
17 \nocite{*}
18
19 \maketitle
20
21
22 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
23 \section{Introduction}
24
25 Le but de ce laboratoire est d'expérimenter le chiffrement symétrique \emph{AES} ainsi que l'authentification par \emph{MAC}, de mettre en évidence des problèmes de sécurité liés à un protocole choisi propre et de montrer des solutions afin de corriger ces problèmes.
26
27 Nous utiliseront \emph{AES-256} en mode \emph{CBC} pour chiffrer les données ainsi que \emph{HMAC-SHA256} pour l'authentification.
28
29
30 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
31 \section{Protocol simulator}
32
33 \subsection{Structure du code}
34
35 \subsection{Quelle est la stratégie recommendée en pratique parmi les trois listées ci après ?}
36
37 \begin{itemize}
38 \item \emph{MAC-and-Encrypt} : $Enc(M)|MAC(M)$ ;
39 \item \emph{MAC-then-Encrypt} : $Enc(M|MAC(M))$ ;
40 \item \emph{Encrypt-then-MAC} : $Enc(M)|MAC(Enc(M))$.
41 \end{itemize}
42
43 \subsubsection{Quelle stratégie est utilisée par \emph{TLS} ?}
44
45 \emph{TSL} utilise la deuxième version (\emph{MAC-then-Encrypt}). À noté que le \emph{MAC} est optionnel.
46
47 Une proposition \footnote{https://tools.ietf.org/html/draft-ietf-tls-encrypt-then-mac-02} existe afin d'utiliser du \textit{Encrypt-then-MAC} pour \emph{TSL}.
48
49
50 \subsubsection{Quelle stratégie est utilisée par \emph{SSH} ?}
51
52 \emph{SSH} utilise la même méthode utilisée dans ce laboratoire, c'est à dire la première : \emph{MAC-and-Encrypt}.
53
54 \subsection{Quel est le rôle du timestamp en terme de sécurité ?}
55
56 Permet de minimiser certaines attaques comme l'attaque par rejeu (\emph{replay attack})\cite{wiki-replay-attack} où un attaquant réutilise tel-quel tout ou une partie d'un message intercepté au préalable.
57
58 Dans notre cas un attaquant ne pourra pas rejouer une commande tel quelle, elle serait rejetée par le serveur ayant un \emph{timestamp} supérieur. Si l'attaquant essaie de renvoyer un paquet avec un timestamp modifié, alors les données décodées ne seront plus validées par la \emph{MAC} car le vecteur d'initialisation utilisé (\emph{IV}) lors du déchiffrement est composé en partie par le \emph{timestamp}.
59
60
61 \subsection{Y a-t-il un moyen d'effectuer une attaque de type \emph{denial-of-service} sur notre dispositif ?}
62
63 Via une \emph{replay attack} en modifiant le \emph{timestamp} pour qu'il soit valide le dispositif va devoir déchiffrer les données puis calculer le \emph{MAC} avant de se rendre compte que le paquet est invalide et envoyer une réponse qui sera chiffrée et authentifiée. Dans ce cas on peut faire travailler énormément le dispositif en lui envoyant le plus de paquet à déchiffrer que le permet le débit du moyen de communication utilisé. Cela peut amener le dispositif a être surchargé.
64
65
66 \subsection{À la place d'utiliser un \emph{IV} aléatoire, le mode \emph{CBC} implémente une approche basée sur un \emph{nonce}. Que peut-on dire de sa sécurité ?}
67
68
69
70 \subsection{Remarques concernant la sécurité de notre protocole}
71
72
73 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
74 \section{Utilisation du serveur comme d'un Oracle de déchiffrement}
75
76 \subsection{Historique de l'attaque par oracle à l'aide du remplissage}
77
78
79
80 \subsection{Explication de l'attaque pour notre cas}
81
82 \subsection{Calcul de la complexité moyenne de l'attaque}
83
84
85 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
86 \section{Correction du protocole}
87
88 \subsection{Description}
89
90
91
92 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
93 \section{Conclusion}
94
95
96 %http://crypto.stackexchange.com/a/205
97 %https://en.wikipedia.org/wiki/Malleability_%28cryptography%29
98
99 \bibliographystyle{plain}
100 \bibliography{main}
101
102 \end{document}