\documentclass{beamer} % Copyright 2004 by Till Tantau . % % 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 { \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} \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}