Add some tests.
[crypto_lab2.git] / rapport / main.tex
index 1c25220..508355d 100644 (file)
@@ -14,6 +14,7 @@
 %%% URLs %%%
 \urldef{\dotnetcrypto}\url{http://msdn.microsoft.com/en-us/library/System.Security.Cryptography%28v=vs.110%29.aspx}
 \urldef{\monodevelop}\url{http://www.monodevelop.com/}
+\urldef{\rsacryptoserviceprovider}\url{http://msdn.microsoft.com/en-us/library/system.security.cryptography.rsacryptoserviceprovider%28v=vs.110%29.aspx}
 
 \title{ICR - Labo \#2 : \textit{Conception et implémentation d'un container sécurisé pour des données médicales}}
 \author{G.Burri}
@@ -198,17 +199,17 @@ Deux \emph{assemblies} sont crées :
 
 \begin{itemize}
    \item \emph{CryptoFile} : \emph{Library} mettant à disposition l'\emph{API} de chiffrement de fichier et de déchiffrement de container.
-   \item \emph{CryptoFileTests} : Exécutable utilisant la \emph{Library} \emph{CryptoFile} et permettant d'utiliser l'\emph{API} à l'aide d'arguments fournis.
+   \item \emph{CryptoFileTests} : Exécutable utilisant la \emph{library} \emph{CryptoFile} et permettant d'utiliser l'\emph{API} à l'aide d'arguments fournis par la ligne de commande.
 \end{itemize}
 
 \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} montre un exemple de compilation à la ligne de commande, puis de chiffrement d'un fichier suivit du déchiffrement du container ainsi créé.
+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.
 
 À partir du dossier \texttt{labo2-fsharp} et après avoir compiler en \emph{release} la solution, voici ce qu'il est possible d'effectuer :
 
 \begin{itemize}
-   \item \texttt{CryptoFileTests/bin/Release/CryptoFileTests.exe tests} : Réalise un série de tests.
+   \item \texttt{CryptoFileTests/bin/Release/CryptoFileTests.exe tests} : Réalise une série de tests.
    \item \texttt{CryptoFileTests/bin/Release/CryptoFileTests.exe encrypt <file> <container>} : Chiffre le fichier \texttt{<file>} ver le container \texttt{<container>}.
    \item \texttt{CryptoFileTests/bin/Release/CryptoFileTests.exe decrypt <container> <output directory>} : Déchiffre le container \texttt{<container>} dans le dossier \texttt{<output directory>}.
 \end{itemize}
@@ -223,7 +224,7 @@ La \emph{ĺibrary} \emph{CryptoFile} est composé de trois fichiers :
 \begin{itemize}
    \item \emph{Types.fs} : Quelques types publics.
    \item \emph{Crypto.fs} : Contient toutes les primitives cryptographique nécessaire.
-   \item \emph{Tests.fs} : Contient quelques tests unitaires du module \emph{Crypto}.
+   \item \emph{UnitTests.fs} : Contient quelques tests unitaires du module \emph{Crypto}.
    \item \emph{API.fs} : Contient l'interface publique de la \emph{library}. Elle est détaillée ci après.
 \end{itemize}
 
@@ -252,13 +253,16 @@ module API =
 
 \section{Analyse de la sécurité de l'implémentation}
 
-\subsection{Quelles sont les parties critiques du code ?}
+\subsection{Quelles sont les parties critiques du code et comment s'assure-t-on que ces parties soit correctement implémentées ?}
 
-\subsection{Comment s'est-on assuré que ces parties soient 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}.
 
-\subsection{Quels sont les points-faibles restants ?}
+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 possibilités pour corriger ces points faibles ?}
+
+\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é.
 
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%