\documentclass{report}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{textcomp}
\usepackage{geometry}
\geometry{top=15mm, bottom=15mm, left=1cm, right=1cm}
\usepackage[french]{babel}
\usepackage{pslatex}
\usepackage[colorlinks=true,urlcolor=black]{hyperref}
\usepackage{graphicx}
\usepackage{fancyhdr}
\pagestyle{fancy}
\renewcommand{\footrulewidth}{0.4pt}
\fancyfoot[L]{Uubu.fr}
\fancyfoot[R]{lun. mars 5 21:13:00 CET 2012}
\lfoot{\Large \textit{Uubu.fr}}
\hypersetup{pdfinfo={
Title={PKCS\#1},
Author={Sylvain Girod},
Creator={Bash script from uubu.fr's format version 1},
Producer={Bash script and PDFLaTeX},
Subject={RSA Cryptography Standard},
CreationDate={D:20120305211300},
ModDate={D:20120305211300},
Keywords={PKI;sécurité;chiffrement}
}}
\begin{document}
 
\begin{center}
{\Huge PKCS\#1 }
\end{center}
\vspace{1cm}
 
\begin{flushleft}
 
{\large RSA Cryptography Standard}
 
\vspace{10mm}
 
\hspace{1mm}  RSA (Rivest Shamir Adleman) est un algorithme asymétrique.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Génération des clés }
 
\
 
\hspace{1mm} Pour calculer une paire de clé privée/publique RSA, l’algorithme s’appuie sur 2 nombres premiers, p et q. Une fois ces 2 nombres déterminés, on obtient 2 nombres: \\
\hspace{1mm} \textbf{n = p x q} \\
\hspace{1mm} \textbf{z = ( p - 1 ) x ( q - 1 )} \\
\hspace{1mm} On calcul ensuite l’indicatrice d’Euler e de z (inférieur à z), qui doit nécessairement être premier avec z: \\
\hspace{1mm} \textbf{d = e-1 mod((p - 1)(q - 1))} \\
 
\hspace{1mm}  le couple (\textbf{n,e}) est la clé publique, le couple (\textbf{n,d}) est la clé privée. Une fois \textbf{e}, \textbf{d} et \textbf{n} caclulés, il faut détruire \textbf{p}, \textbf{q}, et \textbf{z} pour des raisons évidentes de sécurité. La clé privée est généralement chiffrée avec un algorithme symmetrique pour la conserver de façon sûre.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Chiffrement et déchiffrement }
 
\
 
\hspace{1mm} Pour chiffrer un nombre, il faut le mettre à la puissance de e. Le reste modulo n représente le nombre chiffré: \\
\hspace{1mm} \textbf{c = t\up{e} mod n} \\
\hspace{1mm} pour déchiffrer, on utilise la même opération, mais à la puissance d: \\
\hspace{1mm} \textbf{t = c\up{d} mod n} \\
\hspace{1mm} exemple simple utilisant de petits nombres: \\
\hspace{1mm} pour chiffrer le texte suivant: "Hello World", on choisis p = 37 et q = 43. \\
\hspace{1mm} on déduit : \\
\hspace{1mm} \textbf{n = 37 x 43 = 1591} \\
\hspace{1mm} \textbf{z = 36 x 42 = 1512} \\
\hspace{1mm} on choisit e = 19, premier avec 1512. L’inverse de 19 modulo 1512 est d = 955. \\
\hspace{1mm} pour chiffrer chaque caractère: \\
\hspace{1mm} \textbf{Hello World = 72 101 108 108 111 32 87 111 114 108 100} \\
 
{\ttfamily
H\_\_\_e\_\_\_l\_\_\_l\_\_\_o\_\_\_ \_\_\_W\_\_\_o\_\_\_r\_\_\_l\_\_\_d\\ 72\_\_101\_108\_108\_111\_32\_\_87\_\_111\_114\_108\_100\\
}
\vspace{8mm}
 
\hspace{1mm} on caclule chaque caractère avec: \\
\hspace{1mm} \textbf{7219 [1591] = 335 ; 10119 [1591] = 1174 ; etc…} \\
 
{\ttfamily
72\_\_\_\_101\_\_\_\_108\_\_\_\_108\_\_\_\_111\_\_\_32\_\_\_\_87\_\_\_\_111\_\_\_114\_\_\_108\_\_\_\_100\\ 335\_\_\_1174\_\_\_1329\_\_\_1329\_\_\_703\_\_\_930\_\_\_431\_\_\_703\_\_\_632\_\_\_1329\_\_\_396\\
}
\vspace{8mm}
 
\hspace{1mm} On déchiffre avec: \\
\hspace{1mm} \textbf{335955 [1591] = 72 ; 1174955 [1591] = 101 ; etc…} \\
 
\vspace{1cm}{\huge Notes }
 
\
 
\hspace{1mm}  Plusieurs techniques permettent de déchiffrer ou déduire la clé privée:
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge  }
 
\
 
\begin{description} \normalsize
\item[\hspace{1mm} -]{si \textbf{p} et \textbf{q} sont trop petits, un brute force ne prend que très peu de temps à déterminer la clé privée. il faut donc choisir des valeures très grandes (minimum 1024 bits)}
\item[\hspace{1mm} -]{Le chiffrement par caractère comme dans l’exemple ci-dessus, peut être cassé en déterminant la fréquence des octets (analyse fréquentielle). Il est préférable de chiffrer un bloc d’octets.}
\item[\hspace{1mm} -]{\textbf{n} ne doit pas être inférieur au bloc d’octets à chiffrer, sinon plusieurs valeurs initiales peuvent donner le même nombre chiffré, donnant des erreurs au déchiffrement.}
\item[\hspace{1mm} -]{on peut déterminer la taille d’une clé privée en déterminant le temps que prend le déchiffrement d’un message. Toute la sécurité RSA repose sur le temp nécessaire pour calculer \textbf{p} et \textbf{q} à partir de \textbf{n}.}
\end{description}
\end{flushleft}
\end{document}
