Improve the report.
[crypto_lab2.git] / rapport / main.tex
index 2addf92..7a603ce 100644 (file)
@@ -10,6 +10,7 @@
 \usepackage{url}
 \usepackage{upquote} 
 \usepackage{color}
+\usepackage[usenames,dvipsnames]{xcolor}
 
 %%% URLs %%%
 \urldef{\dotnetcrypto}\url{http://msdn.microsoft.com/en-us/library/System.Security.Cryptography%28v=vs.110%29.aspx}
@@ -31,13 +32,13 @@ mutable, if, then, else, cloud, async, static, use, abstract, interface, inherit
   xleftmargin=\parindent,
   aboveskip=\bigskipamount,
         tabsize=4,
-  morecomment=[l][\color{greencomments}]{///},
-  morecomment=[l][\color{greencomments}]{//},
-  morecomment=[s][\color{greencomments}]{{(*}{*)}},
+  morecomment=[l][\color{OliveGreen}]{///},
+  morecomment=[l][\color{OliveGreen}]{//},
+  morecomment=[s][\color{OliveGreen}]{{(*}{*)}},
   morestring=[b]",
   showstringspaces=false,
   literate={`}{\`}1,
-  stringstyle=\color{redstrings},
+  stringstyle=\color{red},
 }
 
 \begin{document}
@@ -67,7 +68,7 @@ Le but de ce laboratoire est de définir les algorithmes cryptographique et leur
 
 \subsection{Comment s'assure-t-on que les données sont stockées de manière confidentielle ? En particulier ce qui concerne les méta-données}
 
-Les méta-données ainsi que les données sont chiffrées ensemble. Voir le format du container décrit ci après.
+Les méta-données ainsi que les données sont chiffrées ensemble. Voir le format du container décrit ci-après.
 
 
 \subsection{Comment s'assure-t-on que les données stockées sont authentiques ? Quels sont les risques à prendre en compte ?}
@@ -136,6 +137,8 @@ Les méta-données (\texttt{meta-data}) peuvent contenir, par exemple, le nom du
 
 Le type \texttt{vint} correspond à un entier de taille variable, initialement occupant un octet.
 
+Comme les clefs (\emph{AES} et \emph{HMAC-SHA256}) sont différentes à chaque chiffrement, que le \emph{MAC} dépend de sa clef et des données chiffrées et que la signature dépend du \emph{MAC} alors l'ensemble des octets des différentes parties du fichier résultat va être fortement différent d'un chiffrement à l'autre pour le même fichier en entrée.
+
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 \section{processus}
@@ -204,7 +207,7 @@ Deux \emph{assemblies} sont crées :
 
 \subsection{Utilisation}
 
-Il est possible de compiler la solution à l'aide de \emph{MonoDevelop}\footnote{\monodevelop}. Le script \emph{Bash} \texttt{labo2-fsharp/run\_tests.sh} permet de compiler la solution puis d'exécuter un certain nombre de tests.
+Il est possible de compiler la solution à l'aide de \emph{MonoDevelop}\footnote{\monodevelop} ou de \emph{Visual Studio 2012}. Le script \emph{Bash} \texttt{labo2-fsharp/run\_tests.sh} permet de compiler la solution puis d'exécuter un certain nombre de tests.
 
 À partir du dossier \texttt{labo2-fsharp} et après avoir compiler en \emph{release} la solution, voici ce qu'il est possible d'effectuer :
 
@@ -219,7 +222,7 @@ Les clefs publiques et privées pour le chiffrement ainsi que pour la réalisati
 
 \subsection{Organisation du code}
 
-La \emph{ĺibrary} \emph{CryptoFile} est composé de trois fichiers :
+La \emph{ĺibrary} \emph{CryptoFile} est composée de trois fichiers :
 
 \begin{itemize}
    \item \emph{Types.fs} : Quelques types publics.
@@ -230,8 +233,15 @@ La \emph{ĺibrary} \emph{CryptoFile} est composé de trois fichiers :
 
 \subsubsection{API}
 
+Voici la partie publique de la \emph{library} \emph{CryptoFile}.
+
+\begin{minipage}{\linewidth} % Pour éviter que le listing soit séparé sur deux pages.
 \begin{lstlisting}[language=FSharp, frame=single, basicstyle=\ttfamily\footnotesize]
 module API =
+    (* Generate a key pair (public * private)
+       for using in the next two functions. 
+       You have the reponsability to keep
+       the private part secret *)
     let generatKeysPair : Key * Key
     
     let encryptFile (inputFilePath : string)
@@ -244,11 +254,12 @@ module API =
                     (signaturePubKey: Key)
                     (decryptPrivKey : Key)
 \end{lstlisting}
+\end{minipage}
 
 
 \subsection{Mesures de performance}
 
-Quelques mesures sur un fichier de 871 MiB.
+Quelques mesures sur un fichier de 871 MiB. Sous \emph{Linux} avec \emph{Mono} 3.10.0. Des résultats similaires ont été obtenus sous \emph{Windows 8} avec \emph{Visual Studio 2012}.
 
 Chiffrement :
 
@@ -271,12 +282,12 @@ Déchiffrement :
 
 \subsection{Quelles sont les parties critiques du code et comment s'assure-t-on que ces parties soit correctement implémentées ?}
 
-La génération des clefs \emph{AES} doit être faite avec un générateur cryptographique. Dans notre cas nous utilisons \emph{System.Security.Cryptography.RSACryptoServiceProvider}\footnote{\rsacryptoserviceprovider}.
+La génération des clefs \emph{AES} doit être faite avec un générateur cryptographique. Dans notre cas nous utilisons \emph{RSACryptoServiceProvider}\footnote{\rsacryptoserviceprovider}.
 
 La mémoire correspondant aux clefs générées devrait être effacé, dans notre cas si un attaquant a accès à la mémoire de notre programme alors il a accès au contenu des fichiers à chiffrer, il n'y a donc pas de précautions prise en particulier à ce sujet.
 
 
-\subsection{Quels sont les points-faibles restants et quelles sont les possibilités de les corriger ?}
+\subsection{Quels sont les points faibles restants et quelles sont les possibilités de les corriger ?}
 
 Les deux clefs privées \emph{RSA} doivent absolument rester secrètes, pour ce faire il faudrait chiffrer les fichiers contenant ces clefs à l'aide d'une \emph{passphrase} robuste et garder celle-ci en sécurité.
 
@@ -284,10 +295,9 @@ Les deux clefs privées \emph{RSA} doivent absolument rester secrètes, pour ce
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 \section{Conclusion}
 
-% http://stephenhaunts.com/2013/03/04/cryptography-in-net-advanced-encryption-standard-aes/
-% http://stephenhaunts.com/2013/03/26/cryptography-in-net-rsa/
-% http://en.wikipedia.org/wiki/Digital_signature
-%\bibliographystyle{plain}
-%\bibliography{main}
+
+
+\bibliographystyle{plain}
+\bibliography{main}
 
 \end{document}