Remove useless data from the CRT private key.
[crypto_lab3.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{graphicx}
9 \usepackage{listings}
10 \usepackage{url}
11 \usepackage{upquote}
12 \usepackage{color}
13 \usepackage[usenames,dvipsnames]{xcolor}
14
15 \title{ICR - Labo \#3 : \textit{Attaque par faute contre RSA-CRT}}
16 \author{G.Burri}
17
18
19 \begin{document}
20
21 \nocite{*}
22
23 \maketitle
24
25
26 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
27 \section{Introduction}
28
29
30
31 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
32 \section{RSA-CRT}
33
34 \subsection{Implémentation}
35
36 L'implémentation utilise le langage \emph{C++11}, le compilateur \emph{GCC} 4.9.1, la \emph{library} \emph{GMP} 6.0.0 ainsi que la système de \emph{build} \emph{QBS}~\footnote{\url{http://qt-project.org/wiki/qbs}}.
37
38 Le fichier \emph{*.qbs} peut-être ouvert à l'aide de l'environnement de développement \emph{Qt Creator}~\footnote{\url{http://qt-project.org/wiki/Category:Tools::QtCreator}}.
39
40
41 \subsubsection*{Question 1.1 : Comment s'assure-t-on que les routines implémentées fonctionnent correctement ?}
42
43 Pour chaque version, standard et restes chinois, une paire de clefs est générée puis trois messages sont testés avec des valeurs différentes correspondantes à $n$, $n-1$ et $n / 2$. Pour le premier cas la vérification de la signature ne doit pas fonctionner car le \emph{plaintext} est trop grand, dans les deux autres cas, on vérifie la signature ainsi qu'une signature altérée (incrémentée de 1).
44
45 Les tests peuvent être lancés avec la commande suivante :
46
47 \begin{verbatim}
48 qbs run -- tests
49 \end{verbatim}
50
51
52 \subsubsection*{Question 1.2 : Quel est le gain en terme de temps d'exécution lors de la création d'une signature avec \emph{RSA-CRT} par rapport à la version standard ?}
53
54 Les mesures sont réalisées en générant $20'000$ signatures. Vingt paires de clefs différentes sont utilisées.
55
56 Les temps sont mesurés à l'aide de la commande suivante :
57
58 \begin{verbatim}
59 qbs run release -- time-measures
60 \end{verbatim}
61
62 \begin{itemize}
63 \item \emph{RSA} standard : $14'800\, ms$ ($740\, \mu s$ par signature).
64 \item \emph{RSA CRT} : $4'466\, ms$ ($223, \mu s$ par signature).
65 \end{itemize}
66
67 La génération de signature avec \emph{RSA CRT} est en moyenne 3.25 fois plus rapide.
68
69
70 \subsubsection*{Question 1.3 : Quels sont les valeurs que l'on peut pré-calculer est stocker hormis $n$ et $d$ afin d'améliorer la vitesse de calcul d'une signature avec \emph{RSA-CRT} ?}
71
72 [TODO]
73
74
75 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
76 \section{L'attaque de \emph{Boneh-DeMillo-Lipton}}
77
78 \subsection{Fonctionnement}
79
80 http://crypto.stanford.edu/~dabo/abstracts/faults.html
81
82 (maths)
83
84 \subsubsection*{Question 2.1 : En pratique, comment est-il possible d'introduire des fautes dans l'implémentation d'un algorithme cryptographique ?}
85
86
87
88 \subsubsection*{Est-ce que cette attaque fonctionne dans le cas d'un bourrage non détérministe ?}
89
90
91 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
92 \section{Le \flqq truc \frqq de \emph{Shamir}}
93
94 \subsection{Fonctionnement}
95
96 (maths)
97
98 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
99 \section{Conclusion}
100
101
102 % http://en.wikipedia.org/wiki/RSA_%28cryptosystem%29
103
104 %\bibliographystyle{plain}
105 %\bibliography{main}
106
107 \end{document}