This repository has been archived on 2021-03-01. You can view files and clone it, but cannot push or open issues or pull requests.
cours-ing1/mathsecu/cours.tex

224 lines
7.4 KiB
TeX

\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{Accusé 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émenter (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 consiste à 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 cessent de croître 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 a-t-on besoin~:
\begin{itemize}
\item Addition, multiplication~;
\item Division modulo $\Phi(n)$ pour le calcul des clefs~;
\item Réduction modulo $n$~;
\item Exponentiation.
\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).