\chapter{Exemples} \section{Destributeurs de billets} Dans les années 70, au moment de Pâques, une organisation criminelle a vider tous les distributeurs de billets de Paris en copiant la bande magnétique de carte avant débit puis en réécrivant sur la carte l'état de la bande magnétique avant le débit. \section{Changeurs de devises} Changement du taux de change par modem invisible grâce à l'effacement des logs de la machine. \section{Ralentissement de SWIFT} SWIFT~: réseau connectant les banques entre-elles. En ralantissant le réseau de quelques heures, on peut réussir à gagner de l'argent en plaçant l'argent pendant quelques heures, en différant chaque virements de quelques heures. \chapter{Intro} \section{Accussé de réception} Problème si l'accusé de reception de perd~: l'émetteur pense que le destinataire n'a pas reçu le message alors que le destinataire l'a lu. \section{Principe de base de la protection} Lorsque l'on fait de la sécurité, il faut chiffrer les différents coûts~: voir combient d'argent serait prêt à dépenser pour accéder à quelque chose, \ldots Tout a un prix~: on est à la merci des failles humaines (trahison, enrichissement, malveillance, vengeance, jeu, \ldots).\\ On est à la merci des progrès de la techmnique et des mathématiques. En effet, beaucoup de principe de chiffrement sont basés sur le fait qu'il est actuellement beaucoup trop long de casser les algorithmes actuels. \textbf{La solidité d'une chaîne est celle de son maillon le plus faible.} \section{Les éléments de la sécurité} \begin{itemize} \item \textbf{Authentification~:} on peut accepter un algorithme lent, le temps d'établir une connexion sécurisé. \item \textbf{Contrôle~:} accusé de réception, non répudiation (l'emetteur ne doit pas pouvoir dire ne pas être l'émetteur du message), le sceau (le message ne doit pas pouvoir être vu/modifié avant d'être arrivé à destination). \end{itemize} \chapter{Exemples de codes de cryptage} \section{Code de César} On décale de $n$ lettres chaque lettres du message. Il n'y a donc que 26 possibilités. \section{Code de Vigenère} La clé de chiffrement peut être aussi longue que le code. Pour chiffrer ou déchiffrer, on se base sur un tableau des lettres, où les lignes représente les lettres de la clef, et les colonnes la phrase à coder. \section{Masques XOR} On applique juste un XOR sur un message avec une clef. \section{Multicannaux} On peut envoyer le message chiffré sur un cannal et le masque sur un autre cannal. Le message d'origine se retrouve donc en faisait un masque XOR avec les deux cannaux. Deux cannaux~: ligne téléphonique, pigeaon voyageur, courrier, \ldots \section{\textsc{DES} -- Data Encryption Standard} Chiffrage par blocs de 64 bits, c'était un standard aux États-Unis en 1977. Il a été remplacé par AES du fait de son affaiblissement vis-à-vis de la puissance grandissante des ordinateurs actuels. \section{RSA} Chiffrement asymétrique basé sur les nombres premiers. Un seul peut chiffrer et tout le monde peut déchiffrer ou tout le monde peut chiffrer et un seul peut déchiffrer. C'est un algorithme assez lent, à la merci des progrès des mathématiques et des problèmes de génération/gestion des clefs. \section{Enigma} 3 rotors qui mélangent l'alphabet a la manière du code de César. Cassé par les alliés. \section{Stéganographie} Le fait de cacher un message codé dans un message (texte, image, \ldots) anodain. \chapter{DES} Crée en 1977, il est facile à implémenté (implémentable en 300 lignes de Fortran). Implémentation logiciel lente, mais matérielle rapide. Il utilise des clefs de 56 bits (7*8~: car à l'époque, dans le code ASCII, le 8e bit servait de bit de parité). La seule attaque connue de nos jours reste d'essayer toutes les clefs, soit $72/times 10^15$ possibilités. Cassable en une bonne journée avec le matériel actuel. Son fonctionnement est basé sur un schéma de Feistel à 16 états.\\ Une amélioration du DES conciste à faire un Triple DES. \chapter{AES} Choisi le 2 octobre 2000 par le NIST. Il n'a pas de faille connue. \chapter{Fonctions à sens unique} \section{Arithmétique modulo N très grand ($10^{300}$)} \begin{itemize} \item \textbf{Addition~:} Facile (temps en $\log(n)$). \item \textbf{Multiplication~:} À peine plus difficile (temps en $\log^2(n)$). \item \textbf{Division~:} Un peu plus dur (Bézout). \item \textbf{Modulo~:} Il existe des algorithmes dec omplexité équivalente à celle de la multiplication. \item \textbf{Puissance $a^b$~:} Très facile (en $\log(b)$). \item \textbf{Logarithme discret~:} $a^x=y$~: on ne sait pas faire dans $\frac{\mathbb{Z}}{\mathbb{NZ}}$. \end{itemize} Évidemment, de nombreux calculs cryptographique se basent sur ce dernier point. \section{Diffie Hellman (échange de clef sur un réseau public)} On se base sur une valeur pour $n$ connue de tout le monde. On choisi un nombre premier ayant certaines caractéristiques, que l'on publie aussi. On choisi un nombre $g$ public aussi. A et B gardent privé chacun un nombre premier $a$ et $b$. A envoi à B $g^a$ et B envoi à A $g^b$. Puis chacun multipli la réponse de chacun pour obtenir $g^{a.b}$. Un pirate peur retrouver $g^{a+b}$, mais pas $g^{a.b}$.\\ Cependant, cet algorithme est cassable par l'attaque de \emph{man in the middle}. \section{Système de El Gamal} Alice génére un $a$ secret, puis calcul $g^a$ qu'elle publie. Pour envoyer un message, B génére un $k$, puis calcul $g^{ak}$ puis chiffre le message en faisant un XOR entre le message et $g^{ak}$. Il envoie ensuite le message avec $g^k$. Seul Alice pourra alors déchiffrer le message puisqu'il est nécessaire de connaître $a$. \section{Génération de nombres premiers aléatoires} La suite des aléas générés doir ressembler à une suite au hasard ; la suite des aléas générés doit être parfaitement imprévisible par le pirate. Les générateurs aléatoires purs (basés sur un phénomène aléatoire)~: \begin{itemize} \item bruit de fond d'un circuit électronique~; \item diode Zener au point d'instabilité~; \item Trafic sur un réseau informatique~; \item Checksum de la mémoire vive. \end{itemize} \section{À propos des ordres de grandeur} Avec un processeur à 1GHz, il est possible de casser DES en un an avec une seule machine. Avec un chiffrement AES, il faut compter plus de 20 milliards d'années avec un milliard de supercalculateurs actuels. Mais les ressources ne;cessaures au pirate croissent comme la racine carrée de N. \section{Théorème de Fermat} Pour $p$ premier, $a\neq 0[p]$, on a $a^{p-1}\equiv 1[p]$. \section{La fonction d'Euler} $a$ est premier à $n$ si et seulement s'il est inversible dans $\mathbb{Z}/n\mathbb{Z}$. \section{Le théorème d'Euler} Cas général du théorème de Fermat~: pour $a\in U_n$, on a $a^\Phi(n)\equiv 1[n]$. Mais on ne peut pas en conclure que pour tout $a\in(\mathbb{Z}/n\mathbb{Z})a^{\Phi(n)+1\equiv a[n]}$. \subsection{Cas particulier} RSA se base sur un cas particulier du théorème d'Euler. \section{RSA} De quoi à-t-on besoin~: \begin{itemize} \item Addition, multiplication~; \item Division modulo $\Phi(n)$ pour le calcul des clefs~; \item Réduction modulo $n$~; \item Exponentuation. \end{itemize} \subsection{Casser RSA~?} Il faut prendre quelques précautions quand au choix des nombres premiers choisis (ils doivent être suffisamment grands et ne pas être trop proche).