You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
220 lines
9.6 KiB
220 lines
9.6 KiB
\documentclass[a4paper,10pt]{article}
|
|
|
|
% To include images
|
|
\usepackage{graphicx}
|
|
|
|
% Change the margins of the document
|
|
\usepackage[top=1.5cm,bottom=2cm,left=1.5cm,right=1.5cm]{geometry}
|
|
|
|
% No indentation but a wider space between the paragraphs
|
|
\setlength{\parindent}{0cm}
|
|
\setlength{\parskip}{2mm}
|
|
|
|
% Add a rule between the two columns and enlarge the space
|
|
\usepackage{multicol}
|
|
\setlength{\columnseprule}{.5pt}
|
|
\setlength{\columnsep}{1cm}
|
|
|
|
% French language
|
|
\usepackage[francais]{babel}
|
|
\usepackage[utf8]{inputenc}
|
|
|
|
% Math extensions
|
|
\usepackage{amsfonts}
|
|
\usepackage{amstext}
|
|
\usepackage{amsmath}
|
|
\usepackage{mathbbol}
|
|
|
|
% Customize theorems
|
|
\usepackage{theorem}
|
|
\theoremstyle{break}
|
|
|
|
% Some useful shortcuts
|
|
\newcommand{\A}{\mathcal{A}}
|
|
\newcommand{\C}{\mathcal{C}}
|
|
\newcommand{\F}{\mathbb{F}}
|
|
\newcommand{\Poly}{\mathbb{P}}
|
|
\newcommand{\FF}{\F_2}
|
|
\newcommand{\FFn}[1]{\FF^{#1}}
|
|
\newcommand{\Zn}[1]{\mathbb{Z}_{#1}}
|
|
\newcommand{\Zp}{\Zn{p}}
|
|
\newcommand{\dg}[1]{\mathrm{d}^\circ(#1)}
|
|
\newcommand{\cy}[1]{{<}#1{>}}
|
|
|
|
% Definition of new environments
|
|
\newtheorem{mydef}{Définition}
|
|
\newtheorem{myprop}{Proposition}
|
|
\newtheorem{myth}{Théorème}
|
|
\newtheorem{mylemma}{Lemme}
|
|
\newtheorem{mycor}{Corolaire}
|
|
|
|
\newenvironment{note}[1]
|
|
{\textbf{#1}:}
|
|
{}
|
|
|
|
\newenvironment{mydem}
|
|
{\begin{note}{Démonstration}}
|
|
{\end{note}}
|
|
|
|
\newenvironment{myproof}
|
|
{\begin{note}{Preuve}}
|
|
{\end{note}}
|
|
|
|
\newenvironment{remarque}
|
|
{\begin{note}{Remarque}}
|
|
{\end{note}}
|
|
|
|
\newenvironment{proprietes}
|
|
{\begin{note}{Propriétés}}
|
|
{\end{note}}
|
|
|
|
\newenvironment{exemple}
|
|
{\begin{note}{Exemple}}
|
|
{\end{note}}
|
|
|
|
% Metadata
|
|
\title{Hachage avec $SL_2$}
|
|
\author{Nicolas MASSE \\ \texttt{nicolas27.masse@laposte.net}}
|
|
\date{2 mars 2007}
|
|
|
|
\begin{document}
|
|
|
|
\maketitle
|
|
|
|
\begin{abstract}
|
|
Ce document est un résumé de l'article \og Hashing with $SL_2$~\fg~de Jean-Pierre Tillich et Gilles Zémor de l'ENST.
|
|
Ils proposent une nouvelle famille de fonctions de hachage basées sur des calculs sur un corps fini de caractéristique 2.
|
|
Ces fonctions peuvent être calculées rapidement, détecter de petites modifications du texte d'entrée, et leur sécurité
|
|
est équivalente à un problème mathématique précis. Elles reposent sur l'arithmétique du groupe de matrices $SL_2$.
|
|
\end{abstract}
|
|
|
|
\vspace{1cm}
|
|
|
|
\begin{multicols}{2}
|
|
\section{Introduction}
|
|
Une fonction de hachage $H$ fait correspondre un ensemble de textes de longueur variable sur un alphabet $\A$ vers un
|
|
ensemble de textes de longueur fixe que l'on nomme \textit{hachés}.
|
|
$$ H:\A^* \longmapsto \A^n $$
|
|
Une fonction de hachage doit avoir les propriétés suivantes~:
|
|
\begin{itemize}
|
|
\item Elle doit être facilement calculable
|
|
\item Il doit être calculatoirement difficile de trouver des collisions, c'est-à-dire deux textes ayant le même haché.
|
|
\end{itemize}
|
|
|
|
Les fonctions de hachage sont largement utilisées dans les protocoles cryptographiques. Malgré tout le travail réalisé
|
|
dans ce domaine, la sécurité de nombreuses propositions s'est révelée être faible et celles dont la sécurité n'a pas encore
|
|
été mise en doute, restent toujours formellement non prouvée.
|
|
|
|
La fonction proposée permet d'obtenir la propriété de sécurité inconditionnelle suivante~: \textit{les petites modifications
|
|
du texte d'entrée sont toujours détectées}. Elle dispose également des propriétés suivantes~:
|
|
\begin{itemize}
|
|
\item L'algorithme peut être aisément implémenté logiciellement en utilisant uniquement des opérations de base sur des corps
|
|
finis de caractéristique 2 à $2^n$ éléments ($130 \le n \le 170$), ce qui autorise des calculs rapides.
|
|
\item Il est facilement parallélisable.
|
|
\item Sa sécurité est équivalente à un problème mathématique précis.
|
|
\end{itemize}
|
|
|
|
\section{Stratégie de conception}
|
|
\subsection{Construction générale}
|
|
Soient un groupe fini $G$ et un ensemble de générateurs $S$ de la même taille que l'alphabet $\A$.
|
|
On choisit une fonction $\pi: \A \longrightarrow S$ qui établit une bijection entre $\A$ et $S$.
|
|
|
|
Le haché du texte $x_1x_2 \ldots x_k$ est alors l'élément du groupe
|
|
$$\pi(x_1)\pi(x_2) \ldots \pi(x_k)$$
|
|
|
|
Cette construction présente deux avantages : la fonction dispose de la propriété de concaténation et
|
|
il est possible d'associer à cette construction un graphe de Cayley dont certains paramètres sont
|
|
applicables à la sécurité.
|
|
|
|
La propriété de concaténation se définit comme suit. \textit{Si $x$ et $y$ sont deux textes, alors leur
|
|
concaténation a pour haché $H(xy) = H(x)H(y)$.} Il en résulte que la fonction est aisément parallèlisable
|
|
et si certaines parties du message sont connues à l'avance, il est possible de pré-calculer le haché de
|
|
ces parties.
|
|
|
|
Le graphe de Cayley $\C(G,S)$ associé à $G$ permet de déterminer les paramètres de sécurité de la fonction.
|
|
|
|
\begin{mydef}[Circonférence d'un graphe]
|
|
La circonférence $\partial$ d'un graphe $G$ est le plus grand entier tel que, étant donné deux sommets $v$ et $w$,
|
|
n'importe quelle paire de chemins joignant $v$ à $w$ est telle qu'un de ces deux chemins a une longueur
|
|
de $\partial$ ou plus.
|
|
\end{mydef}
|
|
|
|
En particulier, une large circonférence $\partial$ de $\C(G,S)$ permet de se prémunir des modifications
|
|
locales. En effet, si on remplace $k$ symboles consécutifs d'un texte
|
|
$$ x = x_1x_2 \ldots x_i \ \boxed{x_{i+1} \ldots x_{i+k}} \ x_{i+k+1} \ldots x_t $$
|
|
par une chaine de $h$ symboles telle que le texte résultant
|
|
$$ x' = x_1x_2 \ldots x_i \ \boxed{y_{i+1} \ldots y_{i+h}} \ x_{i+k+1} \ldots x_t $$
|
|
ait le même haché, alors ${\rm sup}(k, h) \ge \partial$.
|
|
|
|
Une fonctionnalité importante des fonctions de hachage est l'équidistribution des hachés. Cette propriété
|
|
est garantie si le graphe de Cayley $\C(G,S)$ associé satisfait :
|
|
|
|
\textit{Si $\C(G,S)$ est un graphe de Cayley tel que le PGCD de la longueur de ses cycles vaut 1, alors les hachés de
|
|
longueur $n$ de la fonction correspondante tendent vers l'équidistribution lorsque $n$ tend vers l'infini.}
|
|
|
|
\subsection{Le choix de $SL_2$}
|
|
Les groupes $SL_2(\F_q)$ de matrices $2 \times 2$ de déterminant 1 sur un corps fini $\F_q$ semblent être
|
|
un choix prometteur pour des fonctions de hachage de qualité et ceci pour deux raisons. Premièrement,
|
|
la fonction résultante est facile à calculer. Pour chaque bit du message on effectue quelques additions
|
|
sur $\F_q$ (rapide si $q=2^n$). Deuxièmement, il est assez facile avec ces groupes d'obtenir des graphes
|
|
de Cayley ayant une large circonférence. Enfin, avec ces groupes la fonction tend rapidement vers
|
|
l'équidistribution.
|
|
|
|
\subsection{Résistance aux collisions}
|
|
Une autre fonctionnalité intéressante de ce schéma de hachage est que la résistance aux collisions
|
|
peut être exprimé en termes mathématiques. En effet, ce problème se réduit à trouver deux chaines de générateurs
|
|
telles que les produits donnent le même résultat dans $G$. C'est à dire trouver $s_1,s_2, \ldots, s_n, \sigma_1,
|
|
\sigma_2, \ldots, \sigma_m \in S$ tels que
|
|
$$ s_1s_2 \ldots s_n = \sigma_1\sigma_2 \ldots \sigma_m $$
|
|
Bien sûr, il existe toujours des factorisations triviales dans un groupe fini ($s^{|G|} = 1, \forall s \in S$).
|
|
Cependant, au vu de la taille du groupe considéré ($|G| = 2^{500}$), ces factorisations sont sans objet.
|
|
|
|
De plus, trouver la plus courte factorisation d'un élément choisi d'un groupe à partir d'un ensemble de générateurs
|
|
a été prouvé être Pspace-complet et le choix de $SL_2$ pour $G$ accentue encore la difficulté de ce problème.
|
|
|
|
\section{Définition}
|
|
La fonction de hachage peut être définie de la manière suivante~:
|
|
On choisit un polynôme irréductible $P_n(X)$ de degré $n$.
|
|
Soient $A$ et $B$ les matrices suivantes.
|
|
$$ A = \begin{pmatrix} X & 1 \\ 1 & 0 \end{pmatrix} \hspace{1cm} B = \begin{pmatrix} X & X + 1 \\ 1 & 1 \end{pmatrix} $$
|
|
On définit l'application suivante.
|
|
\begin{eqnarray*}
|
|
\pi : \{0,1\} & \rightarrow & \{A,B\} \\
|
|
0 & \mapsto & A \\
|
|
1 & \mapsto & B
|
|
\end{eqnarray*}
|
|
Le haché du message binaire $x_1x_2 \ldots x_k$ est simplement le produit matriciel
|
|
$$ \pi(x_1)\pi(x_2) \ldots \pi(x_k) $$
|
|
où les calculs sont faits sur le corps fini $\F_{2^n} = \F_2[X] / P_n(X)$ à $2^n$ éléments.
|
|
Le hashé est donc un élément du groupe $SL_2(\F_{2^n})$ de matrices $2 \times 2$ ayant un
|
|
déterminant égal à 1 sur $\F_{2^n}$. $3n + 1$ bits sont nécessaires pour encoder le haché
|
|
(c'est-à-dire 390-510 bits).
|
|
|
|
\subsection{Protection contre les modifications locales}
|
|
On sait qu'un graphe de Cayley ayant une large circonférence protège des modifications
|
|
locales. De plus, la circonférence d'un graphe de Cayley $\C(SL_2(\F_{2^n}), A, B)$ est
|
|
plus grande que $n$. C'est-à-dire qu'à $n$ fixé, on est sûr de détecter toute modification
|
|
d'au plus $n$ bits consécutifs.
|
|
|
|
\subsection{Résistance aux attaques par densité}
|
|
Ces attaques consistent à trouver une chaîne de bits dont le haché est l'identité. La chaîne
|
|
ainsi trouvée peut être insérée n'importe où sans changer le haché du message.
|
|
|
|
Pour mener à bien cette attaque, il faut (étape 1) trouver une matrice $U$ de $SL_2(\F_2[X])$
|
|
qui est égale à l'identité modulo $P_n(X)$, puis (étape 2) décomposer cette matrice $U$ sous
|
|
forme d'un produit de $A$ et $B$ dans $SL_2(\F_2[X])$ (si possible).
|
|
|
|
La première étape est plutôt facile, mais la probabilité que l'étape 2 réussisse (c'est-à-dire
|
|
que $U$ est décomposable en un produit de $A$ et $B$) est $$O\left(\frac{1}{2^n}\right)$$
|
|
|
|
\section{Conclusion}
|
|
Cette nouvelle famille de fonction de hachage basées sur des calculs dans $SL_2(\F_{2^n})$
|
|
est rapide (au plus quelques shifts et XOR de 150 bits,
|
|
par bit du message), facilement parallèlisable et sa sécurité est équivalente à un
|
|
problème mathématique précis.
|
|
|
|
|
|
\end{multicols}
|
|
|
|
\end{document}
|
|
|
|
|