commit
afc8f21107
4 changed files with 698 additions and 0 deletions
@ -0,0 +1,155 @@ |
|||
\documentclass[a4paper,10pt,twocolumn]{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 |
|||
\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{Devoir de Cryptographie} |
|||
\author{Nicolas MASSE \\ \texttt{nicolas27.masse@laposte.net}} |
|||
\date{2006-2007} |
|||
|
|||
\begin{document} |
|||
|
|||
\maketitle |
|||
|
|||
\section{Preuves de sécurité} |
|||
|
|||
\subsection{Question 1} |
|||
Il est possible de vérifier la signature en utilisant la signature, la clé publique et le condensé du message : |
|||
$$ P\sigma \stackrel{?}{=} A.H(m) $$ |
|||
|
|||
En effet, $P\sigma = P.a.H(m) = A.H(m)$. |
|||
\subsection{Question 2} |
|||
La sécurité de référence pour un schéma de signature a été présenté par \textsc{Goldwasser}, \textsc{Mirali} |
|||
et \textsc{Rivest}. Il s'agit d'EF-CMA (Existential Forgery, Chosen Message Attack). Il s'agit de l'attaque |
|||
la plus facile à mener pour un attaquant. |
|||
|
|||
\subsection{Question 4} |
|||
Le problème calculatoire Diffie-Hellman (CDH) consiste à retrouver $g^{ab}$ à partir de $g^a$ et $g^b$. |
|||
|
|||
\subsection{Question 5} |
|||
L'idée serait d'utiliser la relation $e(aP,bP) = e(P,P)^{ab}$ avec $e(P,P) = g$. |
|||
|
|||
\section{Logarithme composite} |
|||
\subsection{Question 1} |
|||
On sait que $g \in \Zn{n}^{*}$; c'est à dire que $g$ est inversible. On en déduit alors que |
|||
$$pgcd(g,n) = 1$$ |
|||
Et d'après le théorème d'Euler, on a $g^{\varphi(n)} \equiv 1 \mod n$. |
|||
|
|||
On sait que $g^{\varphi(n)} = 1$. On a donc |
|||
\begin{eqnarray*} |
|||
g^{\varphi(n)} & = & g^0 \\ |
|||
g^{(p-1)(q-1)} & = & g^0 \\ |
|||
g^{pq-p-q+1} & = & g^0 \\ |
|||
g^{pq+1} g^{-(p+q)} & = & g^0 \\ |
|||
g^{n+1} & = & g^{p+q} |
|||
\end{eqnarray*} |
|||
|
|||
\subsection{Question 2} |
|||
On sait que |
|||
\begin{eqnarray*} |
|||
\varphi(n) & = & (p-1)(q-1) \\ |
|||
& = & pq -p -q +1 \\ |
|||
& = & n -(p+q) +1 |
|||
\end{eqnarray*} |
|||
|
|||
C'est-à-dire que si on connait $n$ et $p+q$, on connait également $\varphi(n)$. |
|||
Et à partir de $\varphi(n)$ on peut retrouver $p$ et $q$. |
|||
|
|||
\begin{eqnarray*} |
|||
\varphi(n) & = & (p-1)(q-1) \\ |
|||
\varphi(n) & = & (p-1)(\frac{n}{p}-1) \\ |
|||
\varphi(n) & = & n - p - \frac{n}{p} + 1 \\ |
|||
\varphi(n) - n + p + \frac{n}{p} - 1 & = & 0 \\ |
|||
p^2 + (\varphi(n) - n - 1)p + n & = & 0 |
|||
\end{eqnarray*} |
|||
|
|||
Et connaissant $p$, il est trivial de trouver $q$. |
|||
|
|||
\subsection{Question 3} |
|||
|
|||
Si $f > p + q$, alors il est possible d'utiliser l'algorithme A pour factoriser $n$: |
|||
|
|||
\begin{eqnarray*} |
|||
g^{n + 1} & = & g^{\varphi(n) + (p+q)} \\ |
|||
& = & g^{\varphi(n)} . g^{p+q} \\ |
|||
& = & g^{p+q} |
|||
\end{eqnarray*} |
|||
|
|||
Le calcul de $\log_{(n,g)}(g^{n+1})$ permet de retrouver $p + q$, et donc de factoriser $n$. La complexité de B est alors équivalente à celle de A. |
|||
|
|||
\subsection{Question 4} |
|||
|
|||
La réciproque, c'est à dire la construction de A à partir de B n'est pas vraie, la factorisation de $n$ ne suffisant pas pour obtenir le logarithme discret. |
|||
|
|||
|
|||
\end{document} |
|||
|
|||
@ -0,0 +1,220 @@ |
|||
\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} |
|||
|
|||
@ -0,0 +1,323 @@ |
|||
\documentclass{beamer} |
|||
|
|||
% Copyright 2004 by Till Tantau <tantau@users.sourceforge.net>. |
|||
% |
|||
% In principle, this file can be redistributed and/or modified under |
|||
% the terms of the GNU Public License, version 2. |
|||
% |
|||
% However, this file is supposed to be a template to be modified |
|||
% for your own needs. For this reason, if you use this file as a |
|||
% template and not specifically distribute it as part of a another |
|||
% package/program, I grant the extra permission to freely copy and |
|||
% modify this file as you see fit and even to delete this copyright |
|||
% notice. |
|||
|
|||
\newcommand{\A}{\mathcal{A}} |
|||
\newcommand{\C}{\mathcal{C}} |
|||
\newcommand{\F}{\mathbb{F}} |
|||
|
|||
\mode<presentation> |
|||
{ |
|||
\usetheme{Warsaw} |
|||
% or ... |
|||
|
|||
%\setbeamercovered{transparent} |
|||
% or whatever (possibly just delete it) |
|||
} |
|||
|
|||
|
|||
\usepackage[french,english]{babel} |
|||
|
|||
\usepackage[utf8]{inputenc} |
|||
|
|||
\usepackage{times} |
|||
%\usepackage[T1]{fontenc} |
|||
% Or whatever. Note that the encoding and the font should match. If T1 |
|||
% does not look nice, try deleting the line with the fontenc. |
|||
|
|||
|
|||
\title{Hachage avec $SL_2$} |
|||
|
|||
\subtitle{Exposé M2-AMI} |
|||
|
|||
\author{N.~MASSE} |
|||
|
|||
\institute |
|||
{ |
|||
M2-AMI\\ |
|||
Université de CAEN |
|||
} |
|||
|
|||
\date{2 Mars 2007} |
|||
|
|||
\subject{Cryptographie} |
|||
|
|||
% If you have a file called "university-logo-filename.xxx", where xxx |
|||
% is a graphic format that can be processed by latex or pdflatex, |
|||
% resp., then you can add a logo as follows: |
|||
|
|||
\pgfdeclareimage[height=0.5cm]{university-logo}{unicaen} |
|||
\logo{\pgfuseimage{university-logo}} |
|||
|
|||
|
|||
|
|||
% Delete this, if you do not want the table of contents to pop up at |
|||
% the beginning of each subsection: |
|||
\AtBeginSubsection[] |
|||
{ |
|||
\begin{frame}<beamer> |
|||
\frametitle{Outline} |
|||
\tableofcontents[currentsection,currentsubsection] |
|||
\end{frame} |
|||
} |
|||
|
|||
|
|||
% If you wish to uncover everything in a step-wise fashion, uncomment |
|||
% the following command: |
|||
|
|||
%\beamerdefaultoverlayspecification{<+->} |
|||
|
|||
|
|||
\begin{document} |
|||
|
|||
\begin{frame} |
|||
\titlepage |
|||
\end{frame} |
|||
|
|||
\begin{frame} |
|||
\frametitle{Sommaire} |
|||
\tableofcontents |
|||
% You might wish to add the option [pausesections] |
|||
\end{frame} |
|||
|
|||
|
|||
% Structuring a talk is a difficult task and the following structure |
|||
% may not be suitable. Here are some rules that apply for this |
|||
% solution: |
|||
|
|||
% - Exactly two or three sections (other than the summary). |
|||
% - At *most* three subsections per section. |
|||
% - Talk about 30s to 2min per frame. So there should be between about |
|||
% 15 and 30 frames, all told. |
|||
|
|||
% - A conference audience is likely to know very little of what you |
|||
% are going to talk about. So *simplify*! |
|||
% - In a 20min talk, getting the main ideas across is hard |
|||
% enough. Leave out details, even if it means being less precise than |
|||
% you think necessary. |
|||
% - If you omit details that are vital to the proof/implementation, |
|||
% just say so once. Everybody will be happy with that. |
|||
|
|||
\section{Introduction} |
|||
|
|||
\begin{frame} |
|||
\frametitle{Fonction de Hachage} |
|||
\begin{definition} |
|||
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 $$ |
|||
\end{definition} |
|||
|
|||
\begin{example} |
|||
MD5, SHA-1, RIPEMD |
|||
\end{example} |
|||
\end{frame} |
|||
|
|||
\begin{frame} |
|||
\frametitle{Fonction de Hachage (2)} |
|||
\begin{itemize} |
|||
\item Propriétés |
|||
\begin{itemize} |
|||
\item Facilement calculable |
|||
\item Calculatoirement difficile de trouver des collisions |
|||
\end{itemize} |
|||
\item En général, pas de preuve formelle de la sécurité |
|||
\end{itemize} |
|||
\end{frame} |
|||
|
|||
\begin{frame} |
|||
\frametitle{Fonction proposée} |
|||
\begin{itemize} |
|||
\item Implémentation simple et rapide |
|||
\item Facilement parallèlisable |
|||
\item Sécurité équivalente à un problème mathématique précis |
|||
\end{itemize} |
|||
\end{frame} |
|||
|
|||
\section{Fonctionnement} |
|||
\subsection{Construction générale} |
|||
|
|||
\begin{frame} |
|||
\frametitle{Construction} |
|||
\begin{enumerate} |
|||
\item Soient un groupe fini $G$ et un ensemble de générateurs $S$ de la même taille que l'alphabet $\A$. |
|||
\pause |
|||
\item On choisit une fonction bijective $$ \pi: \A \longrightarrow S$$ |
|||
\pause |
|||
\item Le haché du texte $x_1x_2 \ldots x_k$ est alors l'élément $$ \pi(x_1)\pi(x_2) \ldots \pi(x_k) $$ |
|||
\end{enumerate} |
|||
\end{frame} |
|||
|
|||
\begin{frame} |
|||
\frametitle{Avantages} |
|||
\begin{itemize} |
|||
\item Propriété de concaténation |
|||
\item Paramètres de sécurité définis par le graphe de Cayley |
|||
\end{itemize} |
|||
\pause |
|||
\begin{definition}[Concaténation] |
|||
Si $x$ et $y$ sont deux textes, alors leur concaténation a pour haché $H(xy) = H(x)H(y)$. |
|||
\end{definition} |
|||
\end{frame} |
|||
|
|||
\begin{frame} |
|||
\frametitle{Graphe de Cayley} |
|||
|
|||
\begin{definition}[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{definition} |
|||
\pause |
|||
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$. |
|||
\end{frame} |
|||
|
|||
\begin{frame} |
|||
\frametitle{Équidistribution} |
|||
|
|||
L'équidistribution est garantie si le graphe de Cayley $\C(G,S)$ associé satisfait~: |
|||
\begin{theorem} |
|||
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. |
|||
\end{theorem} |
|||
\end{frame} |
|||
|
|||
\subsection{Choix de $SL_2$} |
|||
\begin{frame} |
|||
\frametitle{$SL_2$} |
|||
|
|||
\begin{itemize} |
|||
\item $SL_2(\F_q)$ : groupe des matrices $2 \times 2$ \\ de déterminant 1 sur $\F_q$ |
|||
\item Plusieurs avantages |
|||
\begin{itemize} |
|||
\item Rapidité de calcul (pour $q=2^n$) |
|||
\item Graphe de Cayley de large circonférence |
|||
\item Tend rapidement vers l'équidistribution |
|||
\end{itemize} |
|||
\end{itemize} |
|||
\end{frame} |
|||
|
|||
\subsection{Résistance aux collisions} |
|||
|
|||
\begin{frame} |
|||
\frametitle{Résistance aux collisions} |
|||
\begin{itemize} |
|||
\item C'est un problème mathématique ! |
|||
\item 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 $$ |
|||
\pause |
|||
\item Les factorisations triviales existent |
|||
$$ s^{|G|} = 1, \forall s \in S $$ |
|||
\pause |
|||
\item mais sont futiles car $|G|$ est grand ($|G| = 2^{500}$) |
|||
\end{itemize} |
|||
\end{frame} |
|||
|
|||
\begin{frame} |
|||
\frametitle{Complexité} |
|||
\begin{block}{Complexité de la factorisation} |
|||
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. |
|||
\end{block} |
|||
\end{frame} |
|||
|
|||
\section{Choix des paramètres} |
|||
|
|||
\begin{frame} |
|||
\frametitle{Définition de la fonction} |
|||
On choisit un polynôme irréductible $P_n(X)$ de degré $n$ ($130 \le n \le 170$). |
|||
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} $$ |
|||
\pause |
|||
On définit l'application suivante. |
|||
\begin{eqnarray*} |
|||
\pi : \{0,1\} & \rightarrow & \{A,B\} \\ |
|||
0 & \mapsto & A \\ |
|||
1 & \mapsto & B |
|||
\end{eqnarray*} |
|||
\end{frame} |
|||
|
|||
\begin{frame} |
|||
\frametitle{Définition de la fonction} |
|||
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. |
|||
\pause |
|||
\begin{block}{Encodage} |
|||
$|SL_2(\F_{2^n})| = 2^n(2^{2n} - 1) \Rightarrow 3n + 1$ bits sont nécessaires |
|||
pour encoder le haché (c'est-à-dire 390-510 bits). |
|||
\end{block} |
|||
\end{frame} |
|||
|
|||
\subsection{Protection contre les modifications locales} |
|||
|
|||
\begin{frame} |
|||
\frametitle{Protection contre les modifications locales} |
|||
|
|||
\begin{theorem} |
|||
La circonférence d'un graphe de Cayley $\C(SL_2(\F_{2^n}), A, B)$ est |
|||
plus grande que $n$. |
|||
\end{theorem} |
|||
|
|||
$\Longrightarrow$ À $n$ fixé, on est sûr de détecter toute modification d'au plus $n$ bits consécutifs. |
|||
\end{frame} |
|||
|
|||
\subsection{Résistance aux attaques par densité} |
|||
|
|||
\begin{frame} |
|||
\frametitle{Attaques par densité} |
|||
|
|||
\begin{block}{Description} |
|||
\begin{itemize} |
|||
\item Trouver une chaîne de bits dont le haché est l'identité |
|||
\item Elle peut être insérée n'importe où sans changer le haché du message |
|||
\end{itemize} |
|||
\end{block} |
|||
\pause |
|||
\begin{block}{Déroulement de l'attaque} |
|||
\begin{enumerate} |
|||
\item trouver une matrice $U$ de $SL_2(\F_2[X])$ qui est égale à l'identité modulo $P_n(X)$ |
|||
\item décomposer cette matrice $U$ sous forme d'un produit de $A$ et $B$ dans $SL_2(\F_2[X])$ (si possible) |
|||
\end{enumerate} |
|||
\end{block} |
|||
\end{frame} |
|||
|
|||
\begin{frame} |
|||
\frametitle{Résistance aux attaques par densité} |
|||
\begin{itemize} |
|||
\item Première étape $\rightarrow$ plutôt facile |
|||
\pause |
|||
\item 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)$$ |
|||
\end{itemize} |
|||
\end{frame} |
|||
|
|||
\subsection{Conclusion} |
|||
|
|||
\begin{frame} |
|||
\frametitle{Conclusion} |
|||
Cette nouvelle famille de fonctions de hachage basées sur $SL_2$ sont |
|||
\begin{itemize} |
|||
\item rapides (quelques shifts/XOR de 150 bits, par bit de message), |
|||
\item parallèlisables, |
|||
\item et leur sécurité est équivalente à un problème mathématique précis. |
|||
\end{itemize} |
|||
\end{frame} |
|||
|
|||
\end{document} |
|||
|
|||
|
|||
|
After Width: | Height: | Size: 257 KiB |
Loading…
Reference in new issue