%% This is a LaTeX document. Hey, Emacs, -*- latex -*- , get it? \documentclass[12pt]{article} \usepackage[francais]{babel} \usepackage[latin1]{inputenc} \usepackage{times} % A tribute to the worthy AMS: \usepackage{amsmath} \usepackage{amsfonts} \usepackage{amssymb} \usepackage{amsthm} % \usepackage{mathrsfs} \usepackage{wasysym} \usepackage{url} % \theoremstyle{definition} \newtheorem{comcnt}{Tout}[subsection] \newcommand\thingy{% \refstepcounter{comcnt}\smallbreak\noindent\textbf{\thecomcnt.} } \newtheorem{defn}[comcnt]{Définition} \newtheorem{prop}[comcnt]{Proposition} \newtheorem{lem}[comcnt]{Lemme} \newtheorem{thm}[comcnt]{Théorème} \newtheorem{cor}[comcnt]{Corollaire} \newtheorem{rmk}[comcnt]{Remarque} \newtheorem{exmps}[comcnt]{Exemples} \newcommand{\limp}{\mathrel{\Rightarrow}} \newcommand{\liff}{\mathrel{\Longleftrightarrow}} \newcommand{\pgcd}{\operatorname{pgcd}} \newcommand{\ppcm}{\operatorname{ppcm}} \newcommand{\signe}{\operatorname{signe}} \newcommand{\tee}{\mathbin{\top}} \newcommand{\Frob}{\operatorname{Fr}} \renewcommand{\qedsymbol}{\smiley} % % % \begin{document} \title{Rappels maths pour crypto} \author{David A. Madore} \maketitle {\footnotesize \begin{center} CVS: \verb=$Id: rappels-maths.tex,v 1.11 2008-10-21 16:11:12 david Exp $= \end{center} \par} \pretolerance=10000 \tolerance=8000 % % % \section{Entiers} \subsection{L'anneau des entiers} $\mathbb{Z}=\{\ldots,-3,-2,-1,0,1,2,3,\ldots\}$ ensemble des entiers relatifs. Sous-ensemble $\mathbb{N}$. Opérations : $+$, $\times$. Rappeler : $(\mathbb{Z},0,+)$ est un groupe abélien, $(\mathbb{Z},0,+,1,\times)$ est un anneau commutatif. Mieux : anneau intègre (si $uv=0$ alors $u=0$ ou $v=0$). Éléments inversibles : $1$ et $-1$. Relation d'ordre... % \subsection{Écriture $b$-adique} Si $b\geq 2$ est un entier naturel, tout entier naturel $A$ s'écrit de façon unique $A = \sum_{i=0}^{+\infty} a_i b^i$ avec $0\leq a_i1$, il y a toujours un nombre premier $p$ tel que $x\leq p < 2x$ (\v Ceby\v sëv : « postulat de Bertrand »). Le nombre $\pi(x)$ de nombres premiers $\leq x$ est équivalent à $\frac{x}{\ln x}$ lorsque $x\to +\infty$ (Hadamard \& de la Vallée Poussin : « théorème des nombres premiers »). Moralement : la probabilité qu'un nombre de $n$ bits aléatoire soit premier est environ $\frac{1}{n\,\ln 2}$. Beaucoup de questions ouvertes. Par exemple : Conjecture des nombres premiers jumeaux : existe-t-il une infinité de nombres premiers $p$ tels que $p+2$ soit aussi premier (tels que $3$, $5$, $11$, $17$, $29$, $41$, $59$, $71$...) ? \smallbreak \textbf{Lemme de Gauß :} pour $p$ premier, si $p$ divise $ab$ alors $p$ divise $a$ ou $p$ divise $b$. % \subsection{Décomposition en facteurs premiers} Pour tout entier $n$ \emph{non nul}, il existe une écriture \emph{unique} (à l'ordre près) de $n$ comme produit d'une \emph{unité} ($1$ ou $-1$) et de nombres premiers : en regroupant les facteurs premiers $p$, \[ n = u\, 2^{v_2(n)} \, 3^{v_3(n)} \cdots p^{v_p(n)}\cdots \] Ici, $v_p(n)$ (un entier naturel) est l'exposant de la plus grande puissance de $p$ qui divise $n$ : on l'appelle \emph{valuation $p$-adique} de $n$. Presque tous ces nombres sont nuls, ce qui permet de donner un sens au produit infini. Dire que $b|a$ signifie $v_p(b) \leq v_p(a)$ pour tout $p$. Quant à $u$, c'est simplement le signe de $n$. % \subsection{Remarques sur la complexité} Toujours pour des nombres de $n$ bits. \textbf{Tests de primalité :} \emph{polynomiaux}. Un test polynomial \emph{déterministe} est connu depuis seulement récemment (Agrawal-Kayal-Saxena), démontrablement en $O(n^{12})$, sans doute meilleur ($O(n^3)$ ?). En pratique, des tests probabilistes sont suffisants et plus efficaces (p.e., Miller-Rabin « pratiquement » en $O(n^2)$) éventuellement complétés par des certificats de primalité (p.e., test d'Atkin). \textbf{Algorithmes de factorisation :} \emph{lents}. Font appel à des résultats difficiles de théorie algébrique et analytique des nombres. La meilleure méthode connue (« méthode du crible général de corps de nombres ») a une complexité « attendue » (et heuristique) en $O(e^{n^{1/3}\,(\log n)^{2/3}\,(\textrm{cte}+o(1))})$ (avec $\textrm{cte} \approx 2$). On ne pourra donc pas envisager d'utiliser la décomposition en facteurs premiers pour calculer les pgcd. % \subsection{Valuation $p$-adique} Si $n$ est un entier et $p$ un nombre premier, $v_p(n)$ est l'exposant de la plus grande puissance de $p$ qui divise $n$. Si $a/b$ est un rationnel, on pose $v_p(a/b) = v_p(a)-v_p(b)$ (ne dépend pas de la représentation $a/b$ choisie). Par convention, $v_p(0) = +\infty$. Quelle est la valuation $2$-adique de $192$ ? $3$-adique ? $5$-adique ? Quelles sont les valuations $p$-adiques de $-\frac{24}{11}$, pour tous les $p$ possibles ? Propriétés de $v_p$ : produit (cf. lemme de Gauß), inégalité sur la somme (et cas d'égalité)... Dire que $x \in \mathbb{Q}$ est entier signifie exactement $v_p(x) \geq 0$ pour tout $p$. % \subsection{Division euclidienne} Si $a$ est un entier relatif et $b$ un entier naturel \emph{non nul}, il existe un unique couple $(q,r)$ tel que : \begin{itemize} \item $q$ est un entier relatif, \item $r$ est un entier naturel tel que $0\leq r0$ contient un $\mathbb{Z}/p\mathbb{Z}$, qui en est un sous-corps $\mathbb{F}_p$ (donc $p$ est premier) : on dit que c'est le sous-corps premier. Le corps est alors un espace vectoriel dessus : le corps est fini, et si $d$ est sa dimension, son nombre d'éléments est $p^d$. Moralité : le nombre d'éléments d'un corps fini est une puissance $q = p^d$ d'un nombre premier $p$ (il n'y a pas de corps à $6$ ou $10$ éléments !), et le corps contient alors $\mathbb{F}_p = \mathbb{Z}/p\mathbb{Z}$ qu'on appelle son corps premier ; et $p$ s'appelle la caractéristique. % \subsection{Unicité} Dans un corps $F$ à $q$ éléments, on a $a^{q-1} = 1$ pour tout $a \in K^\times$ (par Lagrange) donc on a $a^q = a$ pour tout $a \in K$ (« petit théorème de Fermat » généralisé). Comme le polynôme $t^q-t$, de degré $q$, ne peut avoir que $q$ racines, si $F$ est contenu dans un corps $L$ plus gros, alors $F = \{x\in L : x^q = x\}$. Moralité : un corps ne peut contenir qu'un seul corps fini à $q$ éléments (pour $q$ fixé). En particulier, le sous-corps premier $\mathbb{F}_p$ d'un corps $L$ de caractéristique $p$ est $\mathbb{F}_p = \{x\in L : x^p = x\}$. On admet également l'unicité à isomorphisme près : deux corps finis à $q$ éléments, pour le même $q$, sont isomorphes. % \subsection{Morphisme de Frobenius} Si $K$ est un corps de caractéristique $p$ alors $\Frob\colon K\to K, x\mapsto x^p$ (le morphisme de Frobenius) est un morphisme de corps ($\Frob(xy) = \Frob(x)\,\Frob(y)$ toujours vrai, et $\Frob(x+y) = \Frob(x) + \Frob(y)$ car on est en caractéristique $p$ donc tous les coefficients binomiaux intermédiaires sont multiples de $p$ donc nuls). On le note aussi $\Frob_p$ pour éviter l'ambiguïté. Si $q = p^d$, on a souvent besoin d'introduire $\Frob^d = \Frob_q \colon x \mapsto x^q$ (composée $d$-ième du Frobenius). Notamment, dans un corps à $q = p^d$ éléments, puisque $x^q = x$ pour tout $x$, la composée $d$ fois de $\Frob_p$, soit $\Frob_q$, est l'identité. (Pour cette raison, on dit aussi que $\Frob_q$ est le Frobenius \emph{au-dessus} de $\mathbb{F}_q$.) % \subsection{Existence et inclusions des corps finis} Pour tout nombre premier $p$ et tout $d \geq 1$, il existe un corps à $q = p^d$ éléments, qu'on peut noter $\mathbb{F}_q$. On peut le voir comme $\mathbb{F}_q \cong \mathbb{F}_p[t]/(f)$ pour un certain polynôme $f \in \mathbb{F}_p[t]$ irréductible de degré $d$ (l'affirmation est qu'il en existe !). Si $q = p^d$ et $q' = p^{\prime d'}$, alors $\mathbb{F}_q$ est contenu dans $\mathbb{F}_{q'}$ (plus proprement : $\mathbb{F}_{q'}$ contient un sous-corps ayant $q$ éléments) si et seulement si : (1) $p=p'$ et (2) $d|d'$. Cela équivaut encore à : $q'$ est une puissance de $q$, soit $q' = q^e$. (Exemple : $\mathbb{F}_4$ est contenu dans $\mathbb{F}_{16}$ mais pas dans $\mathbb{F}_8$.) Lorsque c'est le cas, alors $\mathbb{F}_{q'} \cong \mathbb{F}_q[t]/(f)$ pour un certain polynôme $f \in \mathbb{F}_q[t]$ irréductible de degré $e = d'/d$. On va voir plus loin comment tester l'irréductibilité d'un polynôme sur un corps fini, et comment en produire. % \subsection{Polynôme minimal} [Dans les quelques sections qui suivent, le cas important est $q = p$ premier (lire alors $p^d$ pour $q^e$). On peut ignorer le cas plus général.] Rappel : dans $\mathbb{F}_q[t]/(f)$ (avec $f$ irréductible unitaire pour fixer les idées), on a $f(\bar t) = 0$, c'est-à-dire que $\bar t$ est racine de $f$. A contrario : \textbf{Prop :} Soit $x \in \mathbb{F}_{q^e}$, alors $x$ est racine d'un unique polynôme irréductible unitaire sur $\mathbb{F}_q$, et celui-ci est de degré divisant $e$. Ce polynôme s'appelle \textbf{polynôme minimal} de $x$ sur $\mathbb{F}_q$, et son degré (divisant $e$, donc) s'appelle le \textbf{degré} de $x$ sur $\mathbb{F}_q$. Naturellement, dans $\mathbb{F}_q[t]/(f)$, avec $f$ irréductible unitaire, le polynôme minimal de $\bar t$ sur $\mathbb{F}_q$ est $f$. Lorsque $a \in \mathbb{F}_q$, le polynôme minimal de $a$ est $t-a$, de degré $1$ ; réciproquement, un élément de $\mathbb{F}_{q^e}$ est dans $\mathbb{F}_q$ si et seulement si son degré est $1$. Si $x \in \mathbb{F}_{q^e}$ est de degré exactement $e$ (c'est-à-dire : pas moins), et que $f$ est son polynôme minimal, alors $\mathbb{F}_{q}[t]/(f) \cong \mathbb{F}_{q^e}$ (ce qu'on savait déjà...) en envoyant $\bar t$ sur $x$, et plus généralement la classe de $g \in \mathbb{F}_q[t]$ sur $g(x)$. Si on ne précise pas, le polynôme minimal s'entend sur le corps premier. Exercice : déterminer dans $\mathbb{F}_4$ vu comme $\mathbb{F}_2[t]/(t^2+t+1)$ les polynômes minimaux des différents éléments, et les degrés sur $\mathbb{F}_2$. (Réponse : $0$ et $1$ ont polynôme minimal $t$ et $t+1$ respectivement, et tous deux degré $1$ ; $\bar t$ a polynôme minimal $t^2+t+1$ et $\bar t+1$ aussi, tous deux ont degré $2$.) % \subsection{Éléments conjugués} [On peut toujours imaginer $q = p$ premier.] Si $f$ est irréductible unitaire de degré $e$ sur $\mathbb{F}_q$ alors dans $\mathbb{F}_q[t]/(f)$ les racines de $\bar t$ sont : $\bar t$, $\bar t^q$, $\bar t^{q^2}$, ..., $\bar t^{q^{e-1}}$. Cette situation porte un nom : On dit que deux éléments $x, x' \in \mathbb{F}_{q^e}$ sont \textbf{conjugués} lorsqu'ils vérifient les conditions équivalentes suivantes : \begin{itemize} \item $x$ et $x'$ ont le même polynôme minimal sur $\mathbb{F}_q$, \item il existe $i$ (qu'on peut prendre entre $0$ et $e-1$) tel que $x' = x^{q^i}$ (= on passe de l'un à l'autre en appliquant suffisamment de fois le Frobenius $\Frob_q$). \end{itemize} Le nombre d'éléments conjugués à $x$ (en comptant $x$ lui-même) est le degré de $x$. On parle d'un ensemble complet de conjugués (sur $\mathbb{F}_q$). % \subsection{Factorisation de $t^{q^e}-t$} [On peut toujours imaginer $q = p$ premier.] Dans la décomposition en facteurs irréductibles de $t^{q^e}-t$ dans $\mathbb{F}_q$ : \begin{itemize} \item chaque polynôme irréductible de degré divisant $e$ sur $\mathbb{F}_q$ apparaît une et une seule fois, \item chaque facteur correspond à un ensemble complet de conjugués (de cardinal égal au degré du facteur) dans $\mathbb{F}_{q^e}$, \item le nombre de facteurs de degré exactement $e$ est $\frac{1}{e}$ fois le nombre d'éléments appartenant à $\mathbb{F}_{q^e}$ mais à aucun $\mathbb{F}_{q^{e_1}}$ pour $e_1$ divisant strictement $e$. \end{itemize} \smallbreak Exercice : Expliquer pourquoi $t^{64}-t$ se décompose en irréductibles sur $\mathbb{F}_2$ en : $2$ facteurs de degré $1$, $1$ de degré $2$, $2$ de degré $3$ et $9$ de degré $6$. \medbreak Le nombre de polynômes irréductibles unitaires de degré $e$ dans $\mathbb{F}_q[t]$ est approximativement $\frac{1}{e}q^e$ (l'erreur est $O(q^{e/2})$). Autrement dit, la probabilité qu'un polynôme unitaire aléatoire dans $\mathbb{F}_q[t]$ soit irréductible est environ $\frac{1}{e}$ où $e$ est son degré. (Cf. théorème des nombres premiers.) \medbreak \textbf{Test d'irréductibilité de Rabin :} Étant donné $f \in \mathbb{F}_q[t]$ de degré $e$, il est irréductible si et seulement si les deux conditions suivantes sont vérifiées : \begin{itemize} \item $f$ divise $t^{q^e}-t$, et \item $f$ est premier avec $t^{q^{e_1}}-t$ pour tout diviseur strict $e_1$ de $e$. \end{itemize} (Remarque : le premier s'écrit $t^{q^e}\equiv t \pmod{f}$, et pour le vérifier on applique un algorithme d'exponentiation rapide\footnote{Par exemple, dans ce cas, tout simplement élever $e$ fois successivement à la puissance $q$.} dans $\mathbb{F}_q[t]/(f)$. De même, la seconde condition se teste avec l'algorithme d'Euclide en commençant par calculer $t^{q^{e_1}}$ modulo $f$.) \smallskip Exercice : Vérifier que $f = t^4 + t + 1$ est irréductible dans $\mathbb{F}_2[t]$. (On a $t^4 \equiv t+1 \pmod{f}$ donc $t^8 \equiv t^2+1$ donc $t^{16} \equiv t^4 + 1 \equiv t$ donc le premier critère est vérifié. Pour le second, $t^4-t \equiv 1 \pmod{f}$ donc l'algorithme d'Euclide termine immédiatement et $t^4-t$ et $f$ sont bien irréductibles.) Vérifier que $g = t^4 + t^3 + 1$ est irréductible dans $\mathbb{F}_2[t]$. (On a $t^4 \equiv t^3+1 \pmod{g}$ donc $t^8 \equiv t^6+1 \equiv t^3+t^2+t$ donc $t^{16} \equiv t^6+t^4+t^2 \equiv t$ donc le premier critère est vérifié. Pour le second, $t^4-t \equiv t^3+t+1 \pmod{g}$ puis $g = t^4+t^3+1 \equiv t^2 \pmod{t^3+t+1}$ et enfin $t^3+t+1 \equiv 1 \pmod{t^2}$ donc $t^4-t$ et $g$ sont bien irréductibles.) \bigbreak \textbf{Note :} Contrairement à la situation dans les entiers, on peut effectuer efficacement la factorisation des polynômes sur les corps finis. % \subsection{Récapitulation : comment manipuler les $\mathbb{F}_q$} Moralité des paragraphes précédents : comment faire des calculs dans $\mathbb{F}_q$ avec $q = p^d$ ? On sait travailler dans $\mathbb{F}_p = \mathbb{Z}/p\mathbb{Z}$ (travailler dans $\mathbb{Z}$ et faire des divisions euclidiennes par $p$). Trouver un polynôme irréductible unitaire $f$ de degré $d$ dans $\mathbb{F}_p[t]$ : pour cela, choisir un polynôme unitaire aléatoire de degré $d$ parmi les $p^d$ possibles, utiliser le test de Rabin pour tester son irréductibilité, et recommencer jusqu'à obtenir un $f$ qui passe le test (en moyenne, on fera environ $d$ essais). Représenter les éléments de $\mathbb{F}_q \cong \mathbb{F}_p[t]/(f)$ par des polynômes de degré $