<commit_before>\documentclass[12pt,a4paper]{report}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[french]{babel}
\usepackage{libertine}
\usepackage{inconsolata}

\usepackage{tikz}

\usepackage{amssymb}
\usepackage{hyperref}

\newcommand{\burl}[1]{\texttt{<}\url{#1}\texttt{>}}

\title{\og Super AES \fg}
\author{Antoine \bsc{Catton} et Jessy \bsc{Mauclair-Richalet}}
\date{Mardi 13 novembre 2013}

\begin{document}

\maketitle

\tableofcontents

\chapter{Introduction}

\begin{figure}[h!]
\centering
\begin{tikzpicture}[scale=1.5]
\draw[thick] (0,0) grid (4,4);
\foreach \y in {0,...,3}
{
    \foreach \x in {0,...,3}
    {
        \draw ({\x + 0.5},{3 - \y + 0.5}) node {$a_{\y,\x}$};
    }
}
\fill[green!50,fill opacity=0.40] (-0.1,4.1) rectangle (1.1,2.9);
\fill[red!50,fill opacity=0.40] (-0.1,2.1) rectangle (4.1,0.9);
\end{tikzpicture}
\label{fig:aesbloc}
\caption{Représentation d'un bloc sous AES}
\end{figure}

\section{Vocabulaire}

L'algorithme de chiffrement AES est un algorithme de chiffrement \og par bloc
\fg.  Cela signifie que le message à chiffrer est découpé en cellules de même
taille, représenté par la figure~\ref{fig:aesbloc}. Un bloc est représenté par
une matrice de 4 sur 4 \og atomes \fg\ (surligné en vert dans la
figure~\ref{fig:aesbloc}).

Une ligne de cette matrice est appelé un \og mot \fg\ (surligné en rouge dans
la figure~\ref{fig:aesbloc}).

\section{Contexte}

De nos jours, le standard de chiffrement symétrique le plus utilisé est AES
\footnote{\emph{Advanced Encryption Standard}}.  Il est notamment destiné à remplacer le
standard DES\footnote{\emph{Data Encryption Standard}} qui peut être
\og brute-forcé \fg.\footnote{\url{https://en.wikipedia.org/wiki/EFF_DES_cracker}}

AES est reconnu dans le monde de la cryptographie comme étant le standard le plus sûr.
(au jour où ce rapport est rédigé) Il est notamment, au jour où ce rapport est rédigé,
utilisé par le gouvernement des États-Unis pour sécuriser ses données.

AES repose un enchainement de fonctions non-linéaires qui mélange et substituent les
atome d'un bloc des données à chiffrer. Dans un sens, on pourrait le définir comme une
version améliorer d'Enigma.\footnote{\url{https://fr.wikipedia.org/wiki/Enigma_(machine)}}.

La non-linéarité de ces fonctions reposent sur les corps de finis de Galois. Le
corps fini de Galois utilisé pour AES contient $2^{8}$ éléments. Les atômes
sont donc représentés sur un octet. (soit 8 bits)

\section{Objectif}

Dans le cadre de l'unité de valeur GS15 \og Cryptologie et signature
électronique \fg, nous devions implémenter un algorithme de chiffrement
reposant sur le principe d'AES. Contrairement à AES, cet algorithme de
chiffrement devra utiliser un corps de Galois à $2^{16}$ éléments ; les atomes
de l'algorithme seront donc représentés sur deux octets. (soit 16 bits)

Ce projet a donc été baptisé \og SuperAES \fg\ dû au fait qu'il double la complexité
de l'algorithme AES.


\chapter{Modélisation mathématique}

\section{Choix des constantes}

Nous avons choisi les constantes de notre projet en utilisant au maximum des
nombres premiers. Il est a noté qu'il y a aucune preuve mathématique que
cela ne rend pas plus difficile la cryptanalyse de notre algorithme.<commit_msg>Typo in report<commit_after>\documentclass[12pt,a4paper]{report}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[french]{babel}
\usepackage{libertine}
\usepackage{inconsolata}

\usepackage{tikz}

\usepackage{amssymb}
\usepackage{hyperref}

\newcommand{\burl}[1]{\texttt{<}\url{#1}\texttt{>}}

\title{\og Super AES \fg}
\author{Antoine \bsc{Catton} et Jessy \bsc{Mauclair-Richalet}}
\date{Mardi 13 novembre 2013}

\begin{document}

\maketitle

\tableofcontents

\chapter{Introduction}

\begin{figure}[h!]
\centering
\begin{tikzpicture}[scale=1.5]
\draw[thick] (0,0) grid (4,4);
\foreach \y in {0,...,3}
{
    \foreach \x in {0,...,3}
    {
        \draw ({\x + 0.5},{3 - \y + 0.5}) node {$a_{\y,\x}$};
    }
}
\fill[green!50,fill opacity=0.40] (-0.1,4.1) rectangle (1.1,2.9);
\fill[red!50,fill opacity=0.40] (-0.1,2.1) rectangle (4.1,0.9);
\end{tikzpicture}
\label{fig:aesbloc}
\caption{Représentation d'un bloc sous AES}
\end{figure}

\section{Vocabulaire}

L'algorithme de chiffrement AES est un algorithme de chiffrement \og par bloc
\fg.  Cela signifie que le message à chiffrer est découpé en cellules de même
taille, représenté par la figure~\ref{fig:aesbloc}. Un bloc est représenté par
une matrice de 4 sur 4 \og atomes \fg\ (surligné en vert dans la
figure~\ref{fig:aesbloc}).

Une ligne de cette matrice est appelé un \og mot \fg\ (surligné en rouge dans
la figure~\ref{fig:aesbloc}).

\section{Contexte}

De nos jours, le standard de chiffrement symétrique le plus utilisé est AES
\footnote{\emph{Advanced Encryption Standard}}.  Il est notamment destiné à remplacer le
standard DES\footnote{\emph{Data Encryption Standard}} qui peut être
\og brute-forcé \fg.\footnote{\url{https://en.wikipedia.org/wiki/EFF_DES_cracker}}

AES est reconnu dans le monde de la cryptographie comme étant le standard le plus sûr.
(au jour où ce rapport est rédigé) Il est notamment, au jour où ce rapport est rédigé,
utilisé par le gouvernement des États-Unis pour sécuriser ses données.

AES repose un enchainement de fonctions non-linéaires qui mélange et substituent les
atome d'un bloc des données à chiffrer. Dans un sens, on pourrait le définir comme une
version améliorer d'Enigma.\footnote{\url{https://fr.wikipedia.org/wiki/Enigma_(machine)}}.

La non-linéarité de ces fonctions reposent sur les corps de finis de Galois. Le
corps fini de Galois utilisé pour AES contient $2^{8}$ éléments. Les atômes
sont donc représentés sur un octet. (soit 8 bits)

\section{Objectif}

Dans le cadre de l'unité de valeur GS15 \og Cryptologie et signature
électronique \fg, nous devions implémenter un algorithme de chiffrement
reposant sur le principe d'AES. Contrairement à AES, cet algorithme de
chiffrement devra utiliser un corps de Galois à $2^{16}$ éléments ; les atomes
de l'algorithme seront donc représentés sur deux octets. (soit 16 bits)

Ce projet a donc été baptisé \og SuperAES \fg\ dû au fait qu'il double la complexité
de l'algorithme AES.


\chapter{Modélisation mathématique}

\section{Choix des constantes}

Nous avons choisi les constantes de notre projet en utilisant au maximum des
nombres premiers. Il est a noter qu'il y a aucune preuve mathématique que
cela ne rend pas plus difficile la cryptanalyse de notre algorithme.
{'fraction_non_alphanumeric': 0.10868226600985222, 'fraction_numerical': 0.020320197044334975, 'mean_word_length': 4.557741659538067, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 5, 'https://': 4, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '184302', 'n_tokens_mistral': 2423, 'n_tokens_neox': 2322, 'n_words': 793}