\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}
\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}
\urldef{\rsasecurity}\url{http://en.wikipedia.org/wiki/RSA_Security}
\urldef{\wikiml}\url{http://en.wikipedia.org/wiki/ML_%28programming_language%29}
\urldef{\rsasecurity}\url{http://en.wikipedia.org/wiki/RSA_Security}
\urldef{\wikiml}\url{http://en.wikipedia.org/wiki/ML_%28programming_language%29}
-D'après \cite{wiki-key-size}, la société \emph{RSA Security}\footnote{\rsasecurity} annonce qu'une taille de clefs \emph{RSA} de 2048 bits est suffisante jusqu'en 2030. Cela dépend également du niveau d'importance des documents que l'on souhaite chiffrer dans la mesure ou une attaque demande énormément de moyens.
+D'après~\cite{wiki-key-size}, la société \emph{RSA Security}\footnote{\rsasecurity} annonce qu'une taille de clefs \emph{RSA} de 2048 bits est suffisante jusqu'en 2030. Cela dépend également du niveau d'importance des documents que l'on souhaite chiffrer dans la mesure ou une attaque demande énormément de moyens.
-Toujours d'après \cite{wiki-key-size}, une taille de clef \emph{AES} de 128 bits reste, actuellement, hors de portée de toutes attaques.
+Toujours d'après~\cite{wiki-key-size}, une taille de clef \emph{AES} de 128 bits reste, actuellement, hors de portée de toutes attaques.
Processus :
\begin{enumerate}
\item Génération d'une clef 128 bits pour \emph{AES} $\rightarrow k_c$.
\item Génération d'une clef 256 bits pour \emph{MAC} $\rightarrow k_a$.
\item Génération d'un \emph{IV} 128 bits pour le mode \emph{CBC} $\rightarrow iv$.
Processus :
\begin{enumerate}
\item Génération d'une clef 128 bits pour \emph{AES} $\rightarrow k_c$.
\item Génération d'une clef 256 bits pour \emph{MAC} $\rightarrow k_a$.
\item Génération d'un \emph{IV} 128 bits pour le mode \emph{CBC} $\rightarrow iv$.
\item Chiffrement du $plaintext$ avec \emph{AES-CBC128}, $k_c$ et $iv \rightarrow ciphertext$.
\item Calcul du \emph{HMAC-SHA256} de $ciphertext$ $\rightarrow mac$.
\item Signature de $mac$ avec $k_{signpriv}$ $\rightarrow sig$.
\item Chiffrement de $k_c + k_a + iv$ avec $k_{pub} \rightarrow keys$.
\item Chiffrement du $plaintext$ avec \emph{AES-CBC128}, $k_c$ et $iv \rightarrow ciphertext$.
\item Calcul du \emph{HMAC-SHA256} de $ciphertext$ $\rightarrow mac$.
\item Signature de $mac$ avec $k_{signpriv}$ $\rightarrow sig$.
\item Chiffrement de $k_c + k_a + iv$ avec $k_{pub} \rightarrow keys$.
\item Vérification de la signature avec $k_{signpub}$.
\item Déchiffrement de $k_c + k_a + iv$ avec $k_{priv}$.
\item Vérification de la signature avec $k_{signpub}$.
\item Déchiffrement de $k_c + k_a + iv$ avec $k_{priv}$.
\end{enumerate}
Ce processus nécessite deux cycles de lecture des données, le premier pour le calcul de $mac'$ et le deuxième pour le déchiffrement. Le deuxième cycle n'est effectué que si l'intégrité et l'authenticité ont été validées.
\end{enumerate}
Ce processus nécessite deux cycles de lecture des données, le premier pour le calcul de $mac'$ et le deuxième pour le déchiffrement. Le deuxième cycle n'est effectué que si l'intégrité et l'authenticité ont été validées.
\item \emph{Types.fs} : Quelques types publics.
\item \emph{Crypto.fs} : Toutes les primitives cryptographiques nécessaires.
\item \emph{UnitTests.fs} : Quelques tests unitaires du module \emph{Crypto}.
\item \emph{Types.fs} : Quelques types publics.
\item \emph{Crypto.fs} : Toutes les primitives cryptographiques nécessaires.
\item \emph{UnitTests.fs} : Quelques tests unitaires du module \emph{Crypto}.
-Quelques mesures sur un fichier de 871 MiB ont été effectuées sous \emph{Linux} avec \emph{Mono} 3.10.0 ainsi que sous \emph{Windows 8} avec \emph{Visual Studio 2012}. Il est a noter que l'implémentation \emph{AES} de \emph{Mono} est en \emph{C\#} et n'utilise évidemment pas l’accélération matérielle d'\emph{Intel} présente sur la machine : \emph{AES-NI}.
+Quelques mesures sur un fichier de 871 MiB ont été effectuées sous \emph{Linux} avec \emph{Mono} 3.10.0 ainsi que sous \emph{Windows 8.1} avec \emph{Visual Studio 2012}. Il est a noter que l'implémentation \emph{AES} de \emph{Mono} est en \emph{C\#} et n'utilise évidemment pas l’accélération matérielle d'\emph{Intel} présente sur la machine : \emph{AES-NI}.