1128 lines
40 KiB
TeX
1128 lines
40 KiB
TeX
\documentclass[a4paper,french,12pt]{article}
|
|
|
|
\title{Algèbre non linéaire}
|
|
\author{}
|
|
\date{Dernière compilation~: \today{} à \currenttime}
|
|
|
|
\usepackage{styles}
|
|
\usepackage{tikz}
|
|
\usetikzlibrary{shapes.multipart}
|
|
\DeclareMathOperator\pgcd{pgcd}
|
|
\usepackage{xcolor,colortbl}
|
|
\definecolor{Red}{rgb}{1,0.2,0.2}
|
|
\newcolumntype{r}{>{\columncolor{Red}}c}
|
|
|
|
\begin{document}
|
|
|
|
\maketitle
|
|
\tableofcontents
|
|
|
|
\clearpage
|
|
|
|
\section{Arithmétique}
|
|
|
|
Nous nous intéressons à la division euclidienne, sur nombres entiers strictement positifs.
|
|
|
|
\begin{equation*}
|
|
a = bq + r \quad\text{ avec } 0 \leq r < b
|
|
\end{equation*}
|
|
|
|
Quand $r = 0$, $a$ est un \emph{multiple} de $b$ et $b$ est un \emph{diviseur} de $a$.
|
|
On notera $b|a$.
|
|
|
|
À part 1, tout nombre $n$ a au moins 2 diviseurs, 1 et $n$.
|
|
Certains nombres n'en ont \emph{que} deux.
|
|
Ce sont des nombres \emph{premiers}~:
|
|
|
|
$2,3,5,7,11,13,17,19,23,29,31,37,41,43,47\ldots$
|
|
|
|
\subsection{Théorême fondamental de l'arithmétique}
|
|
|
|
Tout nombre entier se décompose sous forme de produit de puissances de nombres premiers qui est unique.
|
|
\begin{align*}
|
|
10 &= 2 \times 5 \\
|
|
16 &= 2 \times 2 \times 2 \times 2 \\
|
|
&= 2^4 \\
|
|
54 &= 2 \times 3 \times 3 \times 3 \\
|
|
&= 2 \times 3^3 \\
|
|
54 &= 2 \times 2 \times 13 \times 3 \\
|
|
&= 2^2 \times 13
|
|
\end{align*}
|
|
|
|
\subsection{PGCD de $a$ et $b$}
|
|
|
|
Le Plus Grand Commun Diviseur se note de manière équivalente~: $\pgcd(a,b)$ ou $a \wedge b$.
|
|
|
|
\begin{align*}
|
|
54 &= 2 \times 3 \times 3 \times 3 \\
|
|
52 &= 2 \times 2 \times 13 \\
|
|
&\implies \pgcd(52, 54) = 2
|
|
\end{align*}
|
|
|
|
Si le PGCD de deux nombres est égal à 1, ils sont premiers entre eux.
|
|
Deux nombres premiers entre eux ne sont pas forcément individuellement premiers.
|
|
\begin{align*}
|
|
3 \times 7 &= 21 &\text{n'est pas premier} \\
|
|
5 \times 11 &= 55 &\text{n'est pas premier} \\
|
|
\pgcd(21,55) &= 1 &\implies \text{ ils sont premiers entre eux}
|
|
\end{align*}
|
|
|
|
Pour calculer le PGCD de deux nombres, on commence par les décomposer séparément.
|
|
C'est cette décomposition qui est lente, d'autant plus quand on ajoute des chiffres aux nombres à décomposer.
|
|
|
|
\subsection{Algorithme d'Euclide}
|
|
|
|
\begin{center}
|
|
\begin{tabularx}{0.5\linewidth}{YYY}
|
|
\toprule
|
|
$a$ & $b$ & $r$ \\
|
|
\toprule
|
|
$a$ & $b$ & $r$ \\
|
|
\midrule
|
|
$b$ & $r$ & $r'$ \\
|
|
\midrule
|
|
$r$ & $r'$ & $r''$ \\
|
|
\midrule
|
|
$r'$ & $r''$ & $\ldots$ \\
|
|
\bottomrule
|
|
\end{tabularx}
|
|
\end{center}
|
|
|
|
À chaque ligne, on calcule la division euclidienne de $a$ par $b$.
|
|
Les restes calculés dans la colonne $r$ sont décroissants.
|
|
Il suffit donc de s'arrêter quand on obtient 0.
|
|
|
|
Exemple~:
|
|
|
|
\begin{center}
|
|
\begin{tabularx}{0.5\linewidth}{YYYl}
|
|
\toprule
|
|
$a$ & $b$ & $r$ & \\
|
|
\toprule
|
|
247 & 134 & 113 & \\
|
|
\midrule
|
|
134 & 113 & 21 & \\
|
|
\midrule
|
|
113 & 21 & 8 & \\
|
|
\midrule
|
|
21 & 8 & 5 & \\
|
|
\midrule
|
|
8 & 5 & 3 & \\
|
|
\midrule
|
|
5 & 3 & 2 & \\
|
|
\midrule
|
|
3 & 2 & $\boxed{1}$ & $\leftarrow$ le PGCD est là \\
|
|
\midrule
|
|
2 & 1 & 0 \\
|
|
\bottomrule
|
|
\end{tabularx}
|
|
\end{center}
|
|
|
|
Le PGCD est le dernier reste, avant 0.
|
|
|
|
\subsection{Identité de Bezout}
|
|
|
|
\begin{equation*}
|
|
\forall \; a, b \in \mathbb{N} : \exists\, (u,v) \in \mathbb{Z} \; / \; a \times u + b \times v = \pgcd(a,b)
|
|
\end{equation*}
|
|
|
|
\begin{align*}
|
|
\left.
|
|
\begin{array}{ll}
|
|
a &= 247 \\
|
|
b &= 134 \\
|
|
\end{array}
|
|
\right\}
|
|
\exists\, (u,v)\; /\; 247u + 134v = \pgcd(247,134) = 1
|
|
\end{align*}
|
|
|
|
\subsection{Algorithme d'Euclide étendu}
|
|
|
|
\begin{enumerate}
|
|
|
|
\item Initialisation~: \\
|
|
Se fait sur deux lignes.
|
|
$u$ étant le coefficient de Bezout de $a$ et $v$ le coefficient de Bezout de $b$, on met leur cases à 1.
|
|
|
|
\item Séquence~: \\
|
|
On calcule $q$ avec la division euclidienne.
|
|
Puis, la ligne $i$ = ligne $(i-2) - q \times$ ligne $(i-1)$.
|
|
|
|
\end{enumerate}
|
|
|
|
\begin{center}
|
|
\begin{tabularx}{0.5\linewidth}{YYYY}
|
|
\toprule
|
|
$r$ & $u$ & $v$ & $q$ \\
|
|
\toprule
|
|
$a$ & 1 & 0 & \\
|
|
\midrule
|
|
$b$ & 0 & 1 & $q$ \\
|
|
\midrule
|
|
$a-q\times b$ & $1 - q \times 0$ & $0 - q \times 1$ & \\
|
|
\midrule
|
|
$\vdots$ & & & \\
|
|
$\downarrow$ & & & \\
|
|
\midrule
|
|
0 & & & \\
|
|
\bottomrule
|
|
\end{tabularx}
|
|
\end{center}
|
|
|
|
Exemple~:
|
|
|
|
\begin{center}
|
|
\begin{tabularx}{\linewidth}{YYYY}
|
|
\toprule
|
|
$r$ & $u$ & $v$ & $q$ \\
|
|
\toprule
|
|
247 & 1 & 0 & \\
|
|
\midrule
|
|
134 & 0 & 1 & 1 \\
|
|
\midrule
|
|
113 & $1 - (1 \times 0)$ & $0 - (1 \times 1)$ & 1 \\
|
|
& = 1 & = -1 & \\
|
|
\midrule
|
|
21 & -1 & 2 & 5 \\
|
|
\midrule
|
|
8 & $ 1 - (5 \times -1)$ & $-1 - (5 \times -2)$ & 2 \\
|
|
& $ = 6$ & $= -11$ & \\
|
|
\midrule
|
|
5 & -13 & 24 & 1 \\
|
|
\midrule
|
|
3 & 19 & -35 & 1 \\
|
|
\midrule
|
|
2 & -32 & 59 & 1 \\
|
|
\midrule
|
|
1 & 51 & -94 & 2 \\
|
|
\bottomrule
|
|
0 & -134 & 247 & \\
|
|
\bottomrule
|
|
\end{tabularx}
|
|
\end{center}
|
|
|
|
On a donc~:
|
|
\begin{align*}
|
|
a \times u + b \times v &= \pgcd(a,b) \\
|
|
247 \times 51 + 134 \times (-94) &= 1 \\
|
|
12597 - 12596 &= 1
|
|
\end{align*}
|
|
|
|
\subsection{L'ensemble $\frac{\mathbb{Z}}{n\mathbb{Z}}$}
|
|
|
|
$\mathbb{N}, \mathbb{Z}, \mathbb{Q}, \mathbb{R}, \mathbb{C}$
|
|
|
|
Choisissons $n \geq 2$.
|
|
$r$ est le reste de la division euclidienne de $a$ par $n$.
|
|
On peut regrouper les nombres qui ont le même reste quand ils sont divisés par $n$.
|
|
|
|
Par exemple, pour $n=11$~:
|
|
\begin{align*}
|
|
a &= 5 &r = 5 \\
|
|
a &= 14 &r =3 \\
|
|
a &= 16 &r = 5 \\
|
|
a &= 27 &r = 5
|
|
\end{align*}
|
|
|
|
Il y a 11 restes possibles (de 0 à 10), donc 11 ``familles'' de nombres.
|
|
|
|
Famille pour $r=5 : \{5, 16, 27, \ldots\}$.
|
|
On note cette famille $\overline{5}$.
|
|
|
|
\begin{equation*}
|
|
\frac{\mathbb{Z}}{11\mathbb{Z}} = \{
|
|
\overline{0},
|
|
\overline{1},
|
|
\overline{2},
|
|
\overline{3},
|
|
\overline{4},
|
|
\overline{5},
|
|
\overline{6},
|
|
\overline{7},
|
|
\overline{8},
|
|
\overline{9},
|
|
\overline{10}
|
|
\}
|
|
\end{equation*}
|
|
|
|
$\frac{\mathbb{Z}}{n\mathbb{Z}}$ possède $n$ éléments, de $\overline{0}$ à $\overline{n - 1}$.
|
|
|
|
Calculs dans $\frac{\mathbb{Z}}{n\mathbb{Z}}$~: modulo $n$.
|
|
|
|
Addition~: $\oplus$~:
|
|
\begin{equation*}
|
|
\overline{a}\oplus\overline{b} = \overline{(a + b)[n]}
|
|
\end{equation*}
|
|
|
|
Multiplication~: $\otimes$~:
|
|
\begin{equation*}
|
|
\overline{a}\otimes\overline{b} = \overline{(a \times b)[n]}
|
|
\end{equation*}
|
|
|
|
Au sens formel, la soustraction et la division n'existent pas.
|
|
La soustraction n'est que l'addition avec son opposé.
|
|
La division n'est que la multiplication avec son inverse.
|
|
|
|
Pour $n=14$~: $\left(\frac{\mathbb{Z}}{14\mathbb{Z}}, \oplus, \otimes\right)$
|
|
\begin{align*}
|
|
\overline{1} \oplus \overline{8} &= \overline{9} \\
|
|
\overline{5} \oplus \overline{11} &= \textcolor{red}{\overline{16}} = \overline{16[14]} = \overline{2} &\quad \text{ on ne note pas } \overline{16} \text{ car on n'a que jusqu'à } \overline{13} \\
|
|
\overline{3} \oplus \overline{11} &= \overline{0} &\quad \overline{3} \text{ et } \overline{11} \text{ sont opposés } \\
|
|
\text{quel est l'opposé de } \overline{6} \text{~? C'est } \overline{8} : \\
|
|
\overline{6} \oplus \overline{8} &= \overline{0} \\
|
|
\\
|
|
\overline{0} \otimes \overline{12} &= \overline{0} \\
|
|
\overline{3} \otimes \overline{3} &= \overline{9} \\
|
|
\overline{7} \otimes \overline{3} &= \overline{7} \\
|
|
\overline{6} \otimes \overline{7} &= \overline{42[14]} = \overline{0} \\
|
|
\overline{13} \otimes \overline{13} &= \overline{1} & \overline{13} \text{ est l'inverse de } \overline{13} \\
|
|
\overline{3} \otimes \overline{5} &= \overline{1} & \overline{3} \text{ est l'inverse de } \overline{5} \\
|
|
& & \overline{5} \text{ est l'inverse de } \overline{3} \\
|
|
\overline{6} \text{ et } \overline{7} \text{ n'ont pas d'inverse dans } \frac{\mathbb{Z}}{14\mathbb{Z}}
|
|
\end{align*}
|
|
|
|
Comment savoir si un élément a un inverse~?
|
|
|
|
\begin{equation*}
|
|
\text{dans } \frac{\mathbb{Z}}{n\mathbb{Z}}, \overline{a} \text{ est inversible } \implies \pgcd(a,n) = 1
|
|
\end{equation*}
|
|
|
|
Exemples~:
|
|
|
|
Pour $n=7$~: \hfill
|
|
\begin{tabularx}{0.6\linewidth}{YYY}
|
|
\toprule
|
|
Élément & PGCD & Inverse~? \\
|
|
\toprule
|
|
$\overline{0}$ & 0 & non \\
|
|
\midrule
|
|
$\overline{1}$ & 1 & oui \\
|
|
\midrule
|
|
$\overline{2}$ & 1 & oui \\
|
|
\midrule
|
|
$\overline{3}$ & 1 & oui \\
|
|
\midrule
|
|
$\overline{4}$ & 1 & oui \\
|
|
\midrule
|
|
$\overline{5}$ & 1 & oui \\
|
|
\midrule
|
|
$\overline{6}$ & 1 & oui \\
|
|
\bottomrule
|
|
\end{tabularx}
|
|
|
|
Pour $n=10$~: \hfill
|
|
\begin{tabularx}{0.6\linewidth}{YYY}
|
|
\toprule
|
|
Élément & PGCD & Inverse~? \\
|
|
\toprule
|
|
$\overline{0}$ & 0 & jamais \\
|
|
\midrule
|
|
$\overline{1}$ & 1 & toujours \\
|
|
\midrule
|
|
$\overline{2}$ & 2 & non \\
|
|
\midrule
|
|
$\overline{3}$ & 1 & oui \\
|
|
\midrule
|
|
$\overline{4}$ & 2 & non \\
|
|
\midrule
|
|
$\overline{5}$ & 5 & non \\
|
|
\midrule
|
|
$\overline{6}$ & 2 & non \\
|
|
\midrule
|
|
$\overline{7}$ & 1 & oui \\
|
|
\midrule
|
|
$\overline{8}$ & 2 & non \\
|
|
\midrule
|
|
$\overline{9}$ & 1 & toujours \\
|
|
\bottomrule
|
|
\end{tabularx}
|
|
|
|
\paragraph{Inverse}
|
|
|
|
\begin{equation*}
|
|
\overline{a} \text{ est inversible dans } \frac{\mathbb{Z}}{n\mathbb{Z}} \iff \pgcd(a,n) = 1
|
|
\end{equation*}
|
|
|
|
Ils sont donc premiers entre eux.
|
|
En utilisant Bezout~:
|
|
\begin{align*}
|
|
\exists \, (u,v) \in \mathbb{Z} \, / \, au+nv = 1
|
|
&\implies a[n] \times u[n] + n[n] \times v[n] = 1[n] \\
|
|
&\implies a[n] \times u[n] = 1 \quad \text{ car } n[n] = 0 \\
|
|
&\implies \overline{a} \otimes \overline{u[n]} = \overline{1} \\\\
|
|
\overline{u[n]} \text{ est l'inverse de } \overline{a} \text{ dans } \frac{\mathbb{Z}}{n\mathbb{Z}}
|
|
\left\{
|
|
\begin{array}{l}
|
|
\text{Si $u$ est positif, } u[n] = u \\
|
|
\text{Si $u$ est négatif, } u[n] = u+n \\
|
|
\end{array}
|
|
\right.
|
|
\end{align*}
|
|
|
|
\begin{multicols}{2}
|
|
|
|
Exemple~:
|
|
$\overline{7}$ est-il inversible dans $\frac{\mathbb{Z}}{15\mathbb{Z}}$~?
|
|
|
|
$u=-2$, $u+n = 13$ donc l'inverse de $\overline{7}$ est $\overline{13}$.
|
|
|
|
\begin{tabularx}{\linewidth}{YYY}
|
|
\toprule
|
|
r & u & q \\
|
|
\midrule
|
|
15 & 0 & \\
|
|
7 & 1 & 2 \\
|
|
1 & -2 & 7 \\
|
|
0 & & \\
|
|
\end{tabularx}
|
|
|
|
\end{multicols}
|
|
|
|
\section{Éléments de cryptographie}
|
|
|
|
\begin{center}
|
|
\begin{tikzpicture}
|
|
\node (src) at (0,0) {émetteur};
|
|
|
|
\node (kc) at (5,1.5) {$k_c$};
|
|
\node [rectangle,draw,thick] (chiff) at (5,0) {\parbox{2.5cm}{\centering fonction de \\ chiffrement}};
|
|
\draw [-latex] (kc) -- (chiff);
|
|
|
|
\node (kd) at (10,1.5) {$k_d$};
|
|
\node [rectangle,draw,thick] (dechiff) at (10,0) {\parbox{2.5cm}{\centering fonction de \\ déchiffrement}};
|
|
\draw [-latex] (kd) -- (dechiff);
|
|
|
|
\node (dst) at (15,0) {destinataire};
|
|
|
|
\draw [-latex] (src) -- (chiff) node[above,midway]{\parbox{2cm}{\centering$m$ \\ message \\ en clair}};
|
|
\draw [-latex]
|
|
(chiff) -- (dechiff)
|
|
node[above,midway]{\parbox{2cm}{\centering$c$ \\ message \\ chiffré}}
|
|
node[below,midway]{\parbox{2cm}{\centering canal \\ public}}
|
|
;
|
|
\draw [-latex] (dechiff) -- (dst) node[above,midway]{\parbox{2cm}{\centering$m$ \\ message \\ en clair}};
|
|
\end{tikzpicture}
|
|
\end{center}
|
|
|
|
Les fonctions sont publiques.
|
|
Cela leur permet notamment d'être bien testées.
|
|
Il faut donc un élément qui peut rester privé~: les clés de chiffrement et de déchiffrement.
|
|
|
|
Pour déchiffrer un message, il suffit de connaître le message chiffré (public), la fonction de déchiffrement (public) et la clé de déchiffrement.
|
|
Cette clé est donc l'unique élément privé, et c'est son partage qui va poser problème.
|
|
|
|
\subsection{Chiffrement de César}
|
|
|
|
Alphabet~:
|
|
\begin{equation*}
|
|
\begin{array}{lllll}
|
|
a & b & c & \cdots & z \\
|
|
0 & 1 & 2 & \cdots & 25 \\
|
|
\end{array}
|
|
\end{equation*}
|
|
|
|
Fonction de chiffrement~:
|
|
\begin{equation*}
|
|
c = (m + k)[26]
|
|
\end{equation*}
|
|
|
|
Fonction de déchiffrement~:
|
|
\begin{equation*}
|
|
m = c - k
|
|
\end{equation*}
|
|
|
|
\subsection{Chiffrement symmétrique}
|
|
|
|
Si l'on connaît la clé de chiffrement ($k_c$), on connaît la clé de déchiffrement ($k_d$).
|
|
$k_d$ est donc la ressource critique.
|
|
Les clés sont secrètes.
|
|
|
|
Enigma, utilisé par les Allemands pendant la Seconde Guerre Mondiale, est symmétrique.
|
|
|
|
\subsection{Chiffrement affine}
|
|
|
|
\begin{multicols}{2}
|
|
|
|
On a un alphabet de $n$ symboles. \\
|
|
Par exemple ici $n=6$.
|
|
|
|
\begin{tabularx}{\linewidth}{YY}
|
|
& $\frac{\mathbb{Z}}{6\mathbb{Z}}$ \\ \\
|
|
a & $\overline{0}$ \\
|
|
b & $\overline{1}$ \\
|
|
c & $\overline{2}$ \\
|
|
x & $\overline{3}$ \\
|
|
! & $\overline{4}$ \\
|
|
- & $\overline{5}$ \\
|
|
\end{tabularx}
|
|
|
|
\end{multicols}
|
|
|
|
Clé~:
|
|
\begin{equation*}
|
|
k_c = (\overline{a}, \overline{b})
|
|
\end{equation*}
|
|
|
|
Chiffrement~:
|
|
\begin{equation*}
|
|
c = (\overline{a} \otimes m) \oplus \overline{b}
|
|
\end{equation*}
|
|
|
|
Donc~:
|
|
\begin{equation*}
|
|
\text{xab!} \implies \bar{3} \bar{0} \bar{1} \bar{4}
|
|
\end{equation*}
|
|
|
|
\begin{tabularx}{\linewidth}{YYYYY}
|
|
xab! & $\overline{3}$ & $\overline{0}$ & $\overline{1}$ & $\overline{4}$ \\
|
|
$(\overline{a}\otimes m) \oplus \overline{b}$ & $\downarrow$ & $\downarrow$ & $\downarrow$ & $\downarrow$ \\
|
|
& $(\overline{5}\otimes \overline{3}) \oplus \overline{2}$ & $(\overline{5}\otimes \overline{0}) \oplus \overline{2}$ & $(\overline{5}\otimes \overline{1}) \oplus \overline{2}$ & $(\overline{5}\otimes \overline{4}) \oplus \overline{2}$ \\
|
|
& $=\overline{5}$ & $=\overline{2}$ & $=\overline{1}$ & $=\overline{4}$ \\
|
|
& $\downarrow$ & $\downarrow$ & $\downarrow$ & $\downarrow$ \\
|
|
& - & c & b & $!$ \\
|
|
\end{tabularx}
|
|
|
|
On a donc \texttt{xab!} $\rightarrow$ \texttt{-cb!}.
|
|
|
|
\begin{align*}
|
|
&c = am + b &&c = \overline{a} \otimes m \oplus \overline{b} \\
|
|
&c - b = am &&c \oplus (\overline{-b}) = \overline{a} \otimes m \\
|
|
&\frac{c - b}{a} = m &&\overline{a}^{-1} \otimes (c \oplus (\overline{-b})) = m
|
|
\end{align*}
|
|
|
|
\begin{equation*}
|
|
m = \overline{a}^{-1} \otimes c \oplus (\overline{a}^{-1} \otimes (\overline{-b}))
|
|
\end{equation*}
|
|
\begin{equation*}
|
|
k_c : (\overline{a}, \overline{b}), \overline{a} \text{ inversible}
|
|
\end{equation*}
|
|
\begin{equation*}
|
|
k_d : (\overline{a}^{-1}, \overline{a}^{-1} \otimes (\overline{-b}))
|
|
\end{equation*}
|
|
|
|
\subsection{Digrammes~: 2 caractères ou symboles}
|
|
|
|
2 caractères, en clair $\rightarrow$ 2 caractères, chiffrés.
|
|
|
|
Par exemple~:
|
|
|
|
\begin{align*}
|
|
\begin{array}{l}
|
|
\text{et} \rightarrow \text{cx} \\
|
|
\text{er} \rightarrow \text{dp} \\
|
|
\end{array}
|
|
\end{align*}
|
|
|
|
Le changement d'un seul des deux caractères change les \emph{deux} caractères chiffrés.
|
|
Cela évite les analyses fréquentielles.
|
|
|
|
\paragraph{Clé de chiffrement~: $(A,B)$}
|
|
|
|
\begin{itemize}
|
|
|
|
\item A est une matrice $2 \times 2$ dans $\frac{\mathbb{Z}}{n\mathbb{Z}}$. Il doit être inversible.
|
|
|
|
\item B est un vecteur colonne.
|
|
|
|
\end{itemize}
|
|
|
|
\begin{align*}
|
|
m =
|
|
\begin{pmatrix}
|
|
m_1 \\
|
|
m_2
|
|
\end{pmatrix}
|
|
\quad A =
|
|
\begin{pmatrix}
|
|
a & b \\
|
|
c & d
|
|
\end{pmatrix}
|
|
\quad b =
|
|
\begin{pmatrix}
|
|
b_1 \\
|
|
b_2
|
|
\end{pmatrix}
|
|
\end{align*}
|
|
|
|
\paragraph{Chiffrement}
|
|
|
|
\begin{equation*}
|
|
c = A \otimes m \oplus B
|
|
\end{equation*}
|
|
\begin{align*}
|
|
\begin{pmatrix}
|
|
a & b \\
|
|
c & d
|
|
\end{pmatrix}
|
|
\begin{pmatrix}
|
|
m_1 \\
|
|
m_2
|
|
\end{pmatrix}
|
|
+
|
|
\begin{pmatrix}
|
|
b_1 \\
|
|
b_2
|
|
\end{pmatrix}
|
|
=
|
|
\begin{pmatrix}
|
|
c_1 \\
|
|
c_2
|
|
\end{pmatrix}
|
|
\end{align*}
|
|
|
|
\section{RSA}
|
|
|
|
Nommée d'après les initiales de ses inventeurs (Rivest, Shamir, Adleman), le RSA est un chiffrement asymmétrique, contrairement à ceux vus jusqu'ici.
|
|
|
|
Les chiffrements symmétriques l'étaient parce qu'on arrivait à résoudre l'équation de chiffrement.
|
|
La simplicité de cette résolution vient du fait qu'il s'agissait d'équations linéaires.
|
|
|
|
Pour RSA, nous allons voir des équations non linéaires.
|
|
|
|
\subsection{Chiffrement (clé publique)~: $(n,e)$}
|
|
|
|
\begin{equation*}
|
|
c = m^e [n]
|
|
\end{equation*}
|
|
|
|
\begin{itemize}
|
|
|
|
\item Peut-on chiffrer et déchiffrer~?
|
|
|
|
\item La sécurité des transmissions est-elle assurée~?
|
|
|
|
\item Peut-on faire les calculs ``rapidement''~?
|
|
Par exemple, calculer $17^{27}[34]$.
|
|
Multiplier 17 par lui-même 26 fois, puis faire le modulo, est trop gourmand, et crée des chiffres souvent trop grands pour être représentés fidèlement.
|
|
On peut aussi faire le modulo à chaque étape.
|
|
Cela crée des nombres plus petits, mais le temps de calcul devient vite très long.
|
|
On a en fait une \emph{complexité linéaire}~: le temps de calcul est proportionnel à $e$.
|
|
|
|
\end{itemize}
|
|
|
|
Calcul rapide de $23^{27}[34]$~:
|
|
|
|
\begin{itemize}
|
|
|
|
\item Décomposer $e=27$ en puissances de 2
|
|
\begin{align*}
|
|
\left.
|
|
\begin{array}{ll}
|
|
27 &= 16 + 11 \\
|
|
&= 16 + 8 + 3 \\
|
|
&= 16 + 8 + 2 + 1 \\
|
|
\end{array}
|
|
\right\}
|
|
\implies 23^{27} = 23^{16+8+2+1} \\ \\
|
|
\implies 23^{16+8+2+1} = 23^{16} \times 23^{8} \times 23^{2} \times 23
|
|
\end{align*}
|
|
|
|
\item Simplifier la puissance
|
|
\begin{align*}
|
|
\left.
|
|
\begin{array}{ll}
|
|
(a^b)^2 &= a^b \times a^b = a^{2b} \\
|
|
a^2 &= a^2 \\
|
|
a^4 &= (a^2)^2 \\
|
|
a^8 &= (a^4)^2 \\
|
|
a^{16} &= (a^8)^2 \\
|
|
\end{array}
|
|
\right\}
|
|
\begin{array}{ll}
|
|
23^2 [34] &= (23 \times 23) [34] = 19 \\
|
|
23^4 [34] &= (19 \times 19) [34] = 21 \\
|
|
23^8 [34] &= (21 \times 21) [34] = 33 \\
|
|
23^{16} [34] &= (33 \times 33) [34] = 1 \\
|
|
\end{array}
|
|
\\
|
|
(23 \times 19 \times 21 \times 33 \times 1) [34] = 5 \times 1 = 5
|
|
\end{align*}
|
|
|
|
\end{itemize}
|
|
|
|
La complexité est maintenant logarithmique.
|
|
|
|
\subsection{Déchiffrement (clé privée)~: $(n,d)$}
|
|
|
|
\begin{center}
|
|
\begin{tikzpicture}
|
|
\node [rectangle,draw,thick]
|
|
(src) at (-5,0)
|
|
{\parbox{4cm}{\centering
|
|
émetteur \\
|
|
partie privée \\
|
|
information privée \\
|
|
clé privée $(n,d)$
|
|
}}
|
|
;
|
|
|
|
\node [rectangle,draw,thick]
|
|
(public) at (0,0)
|
|
{\parbox{4cm}{\centering
|
|
espace publique \\
|
|
clé publique $(n,e)$ \\
|
|
formule de chiffrement
|
|
}}
|
|
;
|
|
\node [rectangle,draw,thick]
|
|
(dst) at (5,0)
|
|
{\parbox{4cm}{\centering
|
|
destinataire \\
|
|
partie privée \\
|
|
message en clair $m$ \\
|
|
$c = m^e [n]$
|
|
}}
|
|
;
|
|
\draw [-latex] (src) -- (public);
|
|
\draw (dst.south) -- (5,-2);
|
|
\draw (5,-2) -- (-5,-2) node[above,midway]{$c$};
|
|
\draw [-latex] (-5,-2) -- (src);
|
|
\end{tikzpicture}
|
|
\end{center}
|
|
|
|
On connaît $n,e,c$.
|
|
On sait que $c=m^e [n]$.
|
|
Pour trouver $m$ à partir de $n$, $e$ et $c$, on a besoin du logarithme discret.
|
|
En théorie de la complexité, il s'agit d'un \emph{problème difficile}.
|
|
On ne sait pas le résoudre efficacement.
|
|
La solution mathématique existe, mais il faudrait plusieurs milliards d'années pour la résoudre.
|
|
|
|
Pour déchiffrer, on va utiliser une clé privée $(n,d)$.
|
|
Le calcul est alors exactement le même que pour le chiffrement~:
|
|
|
|
\begin{equation*}
|
|
m = c^d [n]
|
|
\end{equation*}
|
|
|
|
En recevant $c$ (rappel~: $c = m^e [n]$)~:
|
|
\begin{align*}
|
|
c^d [n] &= (m^e [n])^d [n] \\
|
|
&= m^{ed} [n]
|
|
\end{align*}
|
|
|
|
Or, pour déchiffrer, il faut obtenir le message en clair, donc \emph{il faut que} $m^{ed} [n] = m [n]$.
|
|
On ne peut donc pas choisir $e$ et $d$ au hasard.
|
|
$e$ et $d$ sont liés.
|
|
|
|
\subsection{$\varphi(n)$~: Indicatrice d'Euler}
|
|
|
|
Dans $\frac{\mathbb{Z}}{n\mathbb{Z}}$~:
|
|
\begin{tabular}{cc|cccccrc}
|
|
\multicolumn{2}{c}{$n=7$} & \multicolumn{7}{c}{puissances} \\
|
|
\toprule
|
|
élément & est-il inversible~? & 1 & 2 & 3 & 4 & 5 & 6 & 7 \\
|
|
\midrule
|
|
$\overline{0}$ & jamais & $\overline{0}$ & $\overline{0}$ & $\overline{0}$ & $\overline{0}$ & $\overline{0}$ & $\overline{0}$ & $\overline{0}$ \\
|
|
$\overline{1}$ & toujours & $\overline{1}$ & $\overline{1}$ & $\overline{1}$ & $\overline{1}$ & $\overline{1}$ & $\overline{1}$ & $\overline{1}$ \\
|
|
$\overline{2}$ & oui & $\overline{2}$ & $\overline{4}$ & $\overline{1}$ & $\overline{2}$ & $\overline{4}$ & $\overline{1}$ & $\overline{2}$ \\
|
|
$\overline{3}$ & oui & $\overline{3}$ & $\overline{2}$ & $\overline{6}$ & $\overline{4}$ & $\overline{5}$ & $\overline{1}$ & $\overline{3}$ \\
|
|
$\overline{4}$ & oui & $\overline{4}$ & $\overline{2}$ & $\overline{1}$ & $\overline{4}$ & $\overline{2}$ & $\overline{1}$ & $\overline{4}$ \\
|
|
$\overline{5}$ & oui & $\overline{5}$ & $\overline{4}$ & $\overline{6}$ & $\overline{2}$ & $\overline{3}$ & $\overline{1}$ & $\overline{5}$ \\
|
|
$\overline{6}$ & oui & $\overline{6}$ & $\overline{1}$ & $\overline{6}$ & $\overline{1}$ & $\overline{6}$ & $\overline{1}$ & $\overline{6}$ \\
|
|
\bottomrule
|
|
\end{tabular}
|
|
|
|
\begin{itemize}
|
|
\item 6 éléments inversibles
|
|
\item toutes les puissances 6 des éléments valent $\overline{1}$
|
|
\item toutes les puissances 7 des éléments sont ces éléments
|
|
\end{itemize}
|
|
|
|
On constate que si un élément à $n$ éléments inversibles, toutes les puissances $n$ valent $\overline{1}$.
|
|
Le nombre d'éléments inversibles $\frac{\mathbb{Z}}{n\mathbb{Z}}$ se note $\varphi(n)$, l'indicatrice d'Euler.
|
|
|
|
\begin{equation} \label{eq:phi1}
|
|
\text{Si $p$ est un nombre premier, } \varphi(p) = p - 1
|
|
\end{equation}
|
|
\begin{equation} \label{eq:phi2}
|
|
\text{Si $p$ est premier et } k \geq 2, \quad \varphi(p^k) = (p-1)\cdot p^{(k-1)}
|
|
\end{equation}
|
|
\begin{equation} \label{eq:phi3}
|
|
\text{Si $a$ et $b$ sont premiers entre eux } (\pgcd(a,b)=1), \quad \varphi(ab) = \varphi(a) \times \varphi(b)
|
|
\end{equation}
|
|
|
|
Ces trois règles vont nous permettre de trouver le nombre d'éléments inversibles très rapidement.
|
|
|
|
Exemples~:
|
|
|
|
Règle~\eqref{eq:phi1}~:
|
|
\begin{align*}
|
|
\varphi(2) = 2 - 1 = 1
|
|
\end{align*}
|
|
|
|
Règle~\eqref{eq:phi2}~:
|
|
\begin{align*}
|
|
\varphi(81) = \varphi(3^4) = (3-1) \times 3^{(4-1)} = 2 \times 3^3 = 54
|
|
\end{align*}
|
|
|
|
Règle~\eqref{eq:phi3}~:
|
|
\begin{align*}
|
|
\varphi(15) = \varphi(3 \times 5) &= \varphi(3) \times \varphi(5) \\
|
|
&= 2 \times 4 \\
|
|
&= 8
|
|
\end{align*}
|
|
|
|
Ceci implique que, par exemple~:
|
|
\begin{align*}
|
|
\text{Dans } \frac{\mathbb{Z}}{200\mathbb{Z}}\;: \varphi(200) = 80 \implies 80 \text{ éléments inversibles} \\
|
|
\overline{37} \text{ est inversible} \\
|
|
\quad \overline{37}^{80} &= \overline{1} & 37^{80}[200] &= 1 \\
|
|
\quad \overline{37}^{81} &= \overline{37} & 37^{81}[200] &= 37 \\
|
|
\end{align*}
|
|
|
|
Si $n$ est le produit de deux nombres premiers $p$ et $q$, alors~:
|
|
|
|
\begin{equation} \label{eq:rsa}
|
|
\forall a \in [1, n-1] \quad a^{\varphi(n)}[n] = 1, \quad a^{(\varphi(n) + 1)}[n] = a
|
|
\end{equation}
|
|
|
|
\eqref{eq:rsa} est le théorême fondamental de RSA\@.
|
|
|
|
\subsection{$\varphi(n)$ appliqué à l'identité de Bezout}
|
|
|
|
Le fonctionnement de RSA se base sur $\varphi(n)$ appliqué à l'identité de Bezout.
|
|
|
|
Pour rappel~:
|
|
\begin{equation*}
|
|
\forall \; (a,b) \in \mathbb{N}^2 : \exists\, (u,v) \in \mathbb{Z}^2 \; / \; a \times u + b \times v = \pgcd(a,b)
|
|
\end{equation*}
|
|
|
|
Soit $n=p \times q$ \quad on a $\varphi(n)$ \quad on choisit $e \; / \pgcd(e, \varphi(n)) = 1$
|
|
|
|
En appliquant Bezout à $e$ et $\varphi(n)$~:
|
|
\begin{equation*}
|
|
\exists\, (d,k) \; / \; e \cdot d + k \cdot \varphi(n) = 1
|
|
\end{equation*}
|
|
\begin{align*}
|
|
\text{Soit } a \in [1,n-1] \quad
|
|
&a^{(ed + k\varphi(n))} = a^1 \\
|
|
\iff & a^{ed} \times a^{k\varphi(n)} = a \\
|
|
\iff & a^{ed} \times (a^{\varphi(n)})^k = a \\
|
|
\iff & a^{ed}[n] \times (a^{\varphi(n)}[n])^k = a
|
|
\quad\text{ or d'après RSA~: } a^{\varphi(n)}[n] = 1 \\
|
|
\text{donc } & a^{ed}[n] \times 1^k = a \\
|
|
\iff & a^{ed}[n] = a
|
|
\end{align*}
|
|
\begin{equation*}
|
|
\text{alors } \exists\, d\; /\; \forall\; a \in [1,n-1] \quad a^{ed}[n] = a
|
|
\end{equation*}
|
|
\hfill
|
|
où $d$ est le coefficient de Bezout associé à $e$.
|
|
|
|
\begin{center}
|
|
\begin{tikzpicture}
|
|
\node[label=below:\parbox{2cm}{\centering \small message \\ en clair}] (a1) at (0,0) {\large $a$};
|
|
\node[
|
|
label=below:\parbox{2cm}{\centering \small message \\ chiffré},
|
|
label=above:{\small $e$ = clé de chiffrement}
|
|
]
|
|
(chiff) at (3,0) {\large $a^e[n]$};
|
|
\draw[-latex] (a1) -- (chiff);
|
|
\node[label=above:{\small $d$ = clé de déchiffrement}]
|
|
(dechiff) at (8,0) {\large $(a^e[n])^d[n] = a^{ed}[n]$};
|
|
\draw[-latex] (chiff) -- (dechiff);
|
|
\node[label=below:\parbox{2cm}{\centering \small message \\ en clair}] (a2) at (11,0) {\large $a$};
|
|
\draw[-latex] (dechiff) -- (a2);
|
|
\end{tikzpicture}
|
|
\end{center}
|
|
|
|
\begin{itemize}
|
|
|
|
\item $(n,e)$ est la clé publique
|
|
|
|
\item $(n,d)$ est la clé privée
|
|
|
|
\end{itemize}
|
|
|
|
Hypothèses~:
|
|
|
|
\begin{itemize}
|
|
|
|
\item $n = p \times q$ \hfill données publiques
|
|
|
|
\item $\pgcd(e, \varphi(n)) = 1$ \hfill \textcolor{red}{données privées}
|
|
|
|
\end{itemize}
|
|
|
|
\begin{center}
|
|
\begin{tikzpicture}
|
|
\node[rectangle,thick, draw] (alice) at (0,0) {
|
|
\parbox{4cm}{\centering Alice \\ $n_A,e_A,\textcolor{red}{d_A}$}
|
|
};
|
|
\node (key) at (5,2) {
|
|
\parbox{3cm}{$(n_A,e_A)$ \\ \small ``Pour m'envoyer un message, utilisez $(n_A,e_A)$''}
|
|
};
|
|
\draw[-latex] (alice) -- (key);
|
|
\node[rectangle,thick, draw] (bob) at (10,0) {
|
|
\parbox{4cm}{\centering Bob \\ $c=\textcolor{red}{m}^{e_A}[n_A]$}
|
|
};
|
|
\draw[-latex] (bob) -- (alice) node[below,midway]{$c$};
|
|
\end{tikzpicture}
|
|
\end{center}
|
|
|
|
Si je veux intercepter $c$, je connais $c, n_A, e_A$, je sais que $c=m^{e_A}[n_A]$ mais ce n'est pas une équation linéaire.
|
|
Je ne peux pas trouver $m$ en calcul direct.
|
|
|
|
Seule la clé \textcolor{red}{$d_A$} permet de déchiffrer.
|
|
Pour trouver $d_A$~: c'est le coefficient de Bezout de $e_A$ quand on utilise Bezout en $e_A$ et $\varphi(n_A)$.
|
|
Je dois donc faire la décomposition en facteurs premiers de $n_A$.
|
|
\begin{align*}
|
|
\varphi(n_A) = \varphi(p \times q) &= \varphi(p) \times \varphi(q) \\
|
|
&= (p-1)(q-1)
|
|
\end{align*}
|
|
Donc $d_A$ est calculé à partir de $p$ et $q$.
|
|
|
|
\subsection{Signature de message}
|
|
|
|
\begin{center}
|
|
\begin{tikzpicture}
|
|
\node[rectangle,thick,draw,red] (alice) at (0,0) {
|
|
\parbox{4cm}{\centering Alice \\ $d_A$}
|
|
};
|
|
\node[rectangle,thick,draw,blue] (bob) at (10,0) {
|
|
\parbox{4cm}{\centering Bob \\ $d_B$ \\ preuve d'identité}
|
|
};
|
|
\node (alicekey) at (3.5,1) {$(n_A,e_A)$};
|
|
\node (bobkey) at (6.5,1) {$(n_B,e_B)$};
|
|
\node (bobcode) at (6,0) {$AC_B$};
|
|
\draw[-latex] (alice) -- (alicekey);
|
|
\draw[-latex] (bob) -- (bobkey);
|
|
\draw[-latex] (bob) -- (bobcode);
|
|
\end{tikzpicture}
|
|
\end{center}
|
|
|
|
Bob publie un code d'authentification $AC_B$.
|
|
Sa signature se fait en deux étapes~:
|
|
|
|
\begin{enumerate}
|
|
|
|
\item Il calcule $AC_B^{d_B}[n_B] = V$.
|
|
Cette valeur $V$, seul Bob est capable de la produire.
|
|
|
|
\item Il la chiffre avec la clé d'Alice~: $(n_A, e_A)$.
|
|
|
|
\end{enumerate}
|
|
|
|
On a donc $(S_{B\rightarrow A})$, la signature de Bob à Alice.
|
|
Pour vérifier la signature, Alice va aussi procéder en deux étapes~:
|
|
|
|
\begin{enumerate}
|
|
|
|
\item Elle reçoit $(S_{B\rightarrow A})$, qu'elle déchiffre avec $(n_A, d_A)$, ce qui lui donne $V$.
|
|
|
|
\item Elle fait le calcul $V^{e_B}[n_B]$, ce qui doit lui donner $AC_B$.
|
|
|
|
\end{enumerate}
|
|
|
|
Pour signer un message, il faut donc savoir deux choses~:
|
|
|
|
\begin{enumerate}
|
|
|
|
\item Qui fabrique la signature~?
|
|
Qui s'authentifie~?
|
|
|
|
$\rightarrow$ l'émetteur utilise \textcolor{red}{sa clé privée}.
|
|
|
|
\item Qui est le destinataire~?
|
|
|
|
$\rightarrow$ l'émetteur utilise \textcolor{blue}{la clé publique du destinataire}.
|
|
|
|
\end{enumerate}
|
|
|
|
$t$ veut s'authentifier auprès de $s$.
|
|
\textcolor{red}{$(n_t,d_t)$} et \textcolor{blue}{$(n_s,e_s)$}.
|
|
|
|
\begin{center}
|
|
\begin{tabularx}{0.3\linewidth}{YY}
|
|
\toprule
|
|
\multicolumn{2}{c}{$S$ et $T$} \\
|
|
\midrule
|
|
$(n_s,e_s)$ & $(n_t,e_t)$ \\
|
|
\midrule
|
|
\textcolor{red}{$d_s$} & \textcolor{blue}{$d_t$} \\
|
|
\midrule
|
|
$AC_s$ & $AC_t$ \\
|
|
\bottomrule
|
|
\end{tabularx}
|
|
\end{center}
|
|
|
|
\begin{center}
|
|
\begin{tikzpicture}
|
|
\draw[help lines, dashed] (0,0) grid (7,5);
|
|
\draw[-latex] (0,0) -- (7,0);
|
|
\draw[-latex] (0,0) -- (0,5);
|
|
|
|
\node at (2.5,3) {$n_s$};
|
|
\draw[thick]
|
|
(2,0) -- (2,2.5)
|
|
plot[domain=2:3]({\x}, {2.5})
|
|
(3,2.5) -- (3,0)
|
|
;
|
|
|
|
\node at (4.5,4) {$n_t$};
|
|
\draw[thick]
|
|
(4,0) -- (4,3.5)
|
|
plot[domain=4:5]({\x}, {3.5})
|
|
(5,3.5) -- (5,0)
|
|
;
|
|
|
|
\node (act) at (0.5,2) {$AC_t$};
|
|
\draw[-latex] (act) -- (2,2);
|
|
\draw[-latex,red] (2,2) -- (3,1) node[below,midway]{$e_s$};
|
|
\draw[-latex] (3,1) -- (4,1);
|
|
\draw[-latex,blue] (4,1) -- (5,3) node[above,midway]{$d_t$};
|
|
\node (sts) at (6.5,3) {$S_{t\rightarrow s}$};
|
|
\draw[-latex] (5,3) -- (sts);
|
|
|
|
\node (emetteur) at (0,-0.5) {
|
|
\parbox{2cm}{\centering émetteur \\ $t$}
|
|
};
|
|
\node (destinataire) at (7,-0.5) {
|
|
\parbox{2cm}{\centering destinataire \\ $s$}
|
|
};
|
|
\draw[-latex,red] (emetteur) -- (destinataire) node[below,midway]{
|
|
\parbox{2.5cm}{\centering construit sa \\ signature}
|
|
};
|
|
\end{tikzpicture}
|
|
\end{center}
|
|
|
|
\section{ElGamal}
|
|
|
|
\subsection{Groupe cyclique}
|
|
|
|
On utilise plusieurs puissances dans un \emph{groupe cyclique}.
|
|
On travaille dans $\frac{\mathbb{Z}}{p\mathbb{Z}}$ avec $p$ premier.
|
|
Tous les éléments sauf $\overline{0}$ sont alors inversibles.
|
|
Si on se limite aux éléments inversibles, on a l'ensemble $(\mathbb{F}_p^*, \otimes)$.
|
|
|
|
Par exemple, pour $p=7\,: \frac{\mathbb{Z}}{7\mathbb{Z}}$ sauf $\overline{0}$~: $\{\overline{1}, \overline{2}, \overline{3}, \overline{4}, \overline{5}, \overline{6}\}$.
|
|
|
|
Il y a au moinss un élément qui génère tous les autres par $\otimes$.
|
|
On peut multiplier l'élément par lui-même (modulo $p$) autant de fois que l'on veut, on va finir par retomber au point de départ (une fois arrivé sur $\overline{1}$).
|
|
|
|
\begin{center}
|
|
\begin{tabular}{l|l}
|
|
\toprule
|
|
$\overline{1}$ & $\overline{1}, \overline{1}, \overline{1}, \overline{1} \ldots$ \\
|
|
\midrule
|
|
$\overline{2}$ & $\overline{2}, \overline{4}, \overline{1}, \overline{2}, \overline{4}, \overline{1} \ldots$ \\
|
|
\midrule
|
|
$\overline{3}$ & $\overline{3}, \overline{2}, \overline{6}, \overline{4}, \overline{5}, \overline{1} \ldots$ \\
|
|
\bottomrule
|
|
\end{tabular}
|
|
\end{center}
|
|
|
|
Dans cet exemple, un tel générateur est $\overline{3}$.
|
|
|
|
Un tel groupe s'appelle un \emph{groupe cyclique}.
|
|
|
|
\begin{equation*}
|
|
\forall\, p \text{ premier } > 3, (\mathbb{F}_p^*, \otimes) \text{ est un groupe cyclique}
|
|
\end{equation*}
|
|
|
|
\subsection{Génération des clés}
|
|
|
|
Ici encore, $e$ sera la clé publique et $d$ la clé privée.
|
|
Dans $\mathbb{F}_p^*$, on calcule modulo $p$.
|
|
Pour choisir des clés pour ElGamal~:
|
|
|
|
\begin{itemize}
|
|
|
|
\item On choisit un nombre premier $p$ pour calculer dans $\mathbb{F}_p^*$.
|
|
|
|
\item On trouve un générateur $g$~: un élément qui génère les autres par $\otimes$.
|
|
|
|
\item On choisit $d$ entier, tel que $1<d<p-1$.
|
|
|
|
\item On calcule $e = g^d[p]$.
|
|
|
|
\end{itemize}
|
|
|
|
Exemple dans $(\mathbb{F}_{11}^*)$ (on note sans les ``barres'')~:
|
|
|
|
\begin{center}
|
|
\begin{tabularx}{0.7\linewidth}{cXc}
|
|
\toprule
|
|
élément & puissances & taille de la ``famille'' \\
|
|
\midrule
|
|
1 & 1 & 1 \\
|
|
\midrule
|
|
10 & 10, 1 & 1 \\
|
|
\midrule
|
|
2 & 2, 4, 8, 5, 10, 9, 7, 3, 6, 1 & 10 \\
|
|
\midrule
|
|
3 & 3, 9, 5, 4, 1 & 5 \\
|
|
\midrule
|
|
4 & 4, 5, 9, 3, 1 & 5 \\
|
|
\bottomrule
|
|
\end{tabularx}
|
|
\end{center}
|
|
|
|
Domaine public~: $(\mathbb{F}_{11}^*), g = 2$
|
|
|
|
\begin{align*}
|
|
\boxed{d=7} \quad &e = g^d[p] = 2^7[11] = 7 \\
|
|
\boxed{d=5} \quad &e = g^d[p] = 2^5[11] = 10 \\
|
|
\end{align*}
|
|
|
|
\subsection{Chiffrement}
|
|
|
|
Pour envoyer un message à A qui a publié $\boxed{p, g, e_A}$~:
|
|
|
|
Soit $x$ le message à chiffrer.
|
|
|
|
\begin{itemize}
|
|
|
|
\item L'émetteur du message choisit en secret une clé privée jetable $k$ tel que $(1<k<p-1)$.
|
|
|
|
\item Il calcule deux valeurs~:
|
|
\begin{align*}
|
|
\left\{
|
|
\begin{array}{l}
|
|
r = g^k[p] \\
|
|
y = x \cdot e_A^k[p] \\
|
|
\end{array}
|
|
\right.
|
|
\end{align*}
|
|
|
|
\item Le message chiffré est $(r, y)$.
|
|
|
|
\end{itemize}
|
|
|
|
\subsection{Déchiffrement}
|
|
|
|
A reçoit $(r, y)$.
|
|
Il connaît $d_A$ mais pas $k$.
|
|
|
|
\begin{equation*}
|
|
x = y \cdot (r^{d_A})^{-1}[p]
|
|
\end{equation*}
|
|
|
|
\subsection{Démonstration}
|
|
|
|
\begin{align*}
|
|
r^{d_A}[p] &= (g^k[p])^{d_A}[p] \\
|
|
&= g^{(kd_A)}[p] \\
|
|
(r^{d_A}[p])^{-1} &= (g^{(kd_A)}[p])^{-1} \\ \\
|
|
y &= x \cdot e_A^k[p] \quad \text{or}\quad e_A = g^{d_A}[p] \\
|
|
y &= x \cdot (g^{d_A}[p])^k[p] \\
|
|
&= x \cdot (g^{kd_A}[p]) \\ \\
|
|
x &= y \cdot (r^{d_A})^{-1}[p] \\
|
|
&= x \cdot (g^{kd_A}[p]) \cdot (g^{(kd_A)}[p])^{-1} \\
|
|
&= x \cdot 1 \\
|
|
&= x
|
|
\end{align*}
|
|
|
|
\subsection{Échange de clés}
|
|
|
|
\begin{tabularx}{\linewidth}{YYYY}
|
|
\toprule
|
|
A & \multicolumn{2}{c}{$p,g,e_A$} & B \\
|
|
\textcolor{red}{connu de A seul} & \multicolumn{2}{c}{\textcolor{green}{public}} & \textcolor{blue}{connu de B seul} \\
|
|
\midrule
|
|
\textcolor{red}{$d_A$} & $\rightarrow e_A = g^{\textcolor{red}{d_A}}$ & $r = g^{\textcolor{blue}{k}}\leftarrow$ & \textcolor{blue}{$k$} \\
|
|
& \multicolumn{2}{c}{C} & \\
|
|
\bottomrule
|
|
\end{tabularx}
|
|
|
|
\end{document}
|