
\section*{Motivations}

Les informations traitées par un ordinateur ne sont, \textit{in fine},
que discrètes: les flottants (sur un nombre fini de bits) sont une
interprétation des réels, les \textit{longs} une interprétation finie
des entiers\ldots
Les phénomènes physiques ou naturels peuvent aussi être modélisés par des
approches discrètes:
il n'est parfois pas nécessaire de suivre exactement tous les états par
lesquels peut passer l'élément d'étude. Pour peu que l'on sache 
identifier les seuils de son domaine (c'est-à-dire les valeurs
critiques permettant au système global de changer),
il est parfois suffisant de réduire le domaine de l'état de l'élément
à un ensemble fini d'intervalles définis par ces seuils.
Un élément passe d'un état $i$ à un état $j$ si dans la version continue il
passe d'un état de l'intervalle numéro $i$ à un état de l'intervalle numéro $j$.
En abstrayant à l'extrême,
on peut considérer pour chaque élément  seulement deux états:
1 pour le fait d'être présent et 0 pour le fait d'être absent, ou bien
1 pour le fait d'avoir une valeur supérieure à un seuil et 0 pour le fait qu'elle y soit inférieure.
Ces réseaux particuliers sont qualifiés de \emph{réseaux booléens}.


Soit ${\mathsf{N}}$ un entier naturel représentant le nombre 
d'éléments étudiés (le nombre de bits qu'un générateur veut engendrer,
le nombre de pixels que l'on veut modifier\ldots) un réseau booléen  est 
défini à partir d'une fonction booléenne $f:\Bool^{\mathsf{N}}\to\Bool^{\mathsf{N}}$
et un mode de  mise à jour.
A chaque étape, on peut intuitivement ne modifier qu'une partie des
$\mathsf{N}$ éléments.
En fonction des éléments qui sont susceptibles d'être modifiés à chaque étape,
on peut se poser les questions de savoir si le réseau atteint un point fixe (et qu'il peut donc converger) ou 
s'il possède des attracteurs cycliques (et qu'il diverge donc).

Détecter la convergence ou son contraire  peut se faire \textit{a priori} dans
certains cas. En effet, de nombreux travaux ont énoncé des conditions 
suffisantes sur les réseaux booléens garantissant leur convergence
ou leur divergence. Lorsqu'aucune d'entre elles ne s'applique, on peut penser
à étendre ces résultats théoriques et compléter ceci par des simulations.
Lorsque la convergence est pratiquement observée, il reste à vérifier que
celle-ci est indépendante  du choix des parties à modifier, par exemple.
Une vérification \textit{a posteriori} s'impose, sauf si la méthode de
simulation a été prouvée comme exhaustive.

Une fonction qui admet un attracteur cyclique égal à l'ensemble
des sommets diverge. Admet-il cependant un comportement chaotique?
Les théories mathématiques du chaos ont énoncé des critères permettant
de décider si le comportement d'une fonction est chaotique
ou non, et plus récemment
si certains réseaux booléens l'étaient. Se pose légitimement
la question de savoir si cette caractérisation s'étend quels que soient
les parties modifiées à chaque étape. Naturellement, ceci n'a un sens
pratique que si le nombre de réseaux booléens qui possèdent cette
caractéristique est suffisamment grand et que l'on sait engendrer
algorithmiquement de tels réseaux.

Les liens entre chaos et aléas sont certes intuitifs, mais sont-ils suffisants
pour espérer construire un générateur de nombres pseudo-aléatoires (PRNG)
à partir de fonctions au comportement chaotique? La réponse est certes
positive, mais pas triviale. Il est nécessaire de définir les propriétés 
attendues de la sortie d'un PRNG et
l'uniformité de sa distribution est sans doute la première
des propriétés à assurer.  
Comment alors générer des fonctions chaotiques dont les itérations 
peuvent converger vers une distribution uniforme?
Combien d'itérations suffit-il alors
d'effectuer pour s'approcher suffisamment de celle-ci?

Les liens entre chaos et marquage d'information sont aussi faciles à établir:
de tout média marqué même attaqué, la marque doit pouvoir être extraite.
Cette propriété du marquage est proche en effet de celle de régularité 
des opérateurs chaotiques. Il est alors naturel d'envisager exploiter les
fonctions chaotiques extraites dans ce contexte et donc de modifier
certains bits d'un média pour y insérer de l'information: la marque.


Les compétences acquises dans l'étude des algorithmes d'insertion d'une marque
dans une image nous permettent aussi d'adresser le problème d'insérer un message dans une image. Cependant, il s'agit de privilégier
cette fois l'imperceptibilité et non plus la robustesse. Ainsi, tandis que
l'idée principale était d'étaler le message sur un ensemble conséquent
de pixels pour garantir la robustesse, il s'agit ici de sélectionner finement
ceux dont les modifications seraient le moins perceptibles possible.
On pense immédiatement à insérer ces messages dans les pixels
contenant les zones les plus perturbées.
Les outils mathématiques d'analyse permettant d'identifier les lignes de niveaux
pour ensuite voir lesquelles sont les moins régulières (les plus perturbées)
sont le gradient et la matrice Hessienne.
Cependant, ces modèles d'analyse  ne sont définis que pour des fonctions de $\R^n$ dans $\R$.
Se pose alors la question sur la possibilité de les adapter au cadre discret 
puisque les images à traiter sont construites à partir de pixels dont les
valeurs sont discrètes.


\section*{Organisation de ce mémoire}
Ce mémoire est organisé en quatre parties.

La première partie sur les réseaux discrets.
Dans celle-ci, le chapitre~\ref{chap:sdd} formalise la notion de réseaux booléens
et leurs modes opératoires. On y définit notamment un nouveau mode opératoire
assurant la convergence et ce en un temps réduit. Les résultats de convergence suffisants à la compréhension de ce mémoire y sont rappelés et ceux relatifs à ce nouveau mode y sont prouvés.

Le chapitre~\ref{chap:promela} montre comment nous avons développé une démarche
de preuve automatique de convergence de réseaux discrets. La démarche  est
prouvée correcte et complète: le verdict donné par l'outil est celui qui serait
donné par une preuve mathématique.

La seconde partie établit globalement le lien entre les réseaux discrets et
le chaos. Le chapitre~\ref{chap:carachaos} rappelle tout d'abord les notions
suffisantes concernant la théorie du chaos. Une caractérisation des fonctions engendrant des itérations
chaotiques y est donnée, selon le mode unaire et le mode généralisé,
les deux modes au c{\oe}ur de ce mémoire. Un théorème,
démontré, propose un algorithme permettant de générer des fonctions possédant
cette caractéristique.

Les itérations unaires de telles fonctions étant chaotiques, nous avons étudié
au chapitre~\ref{chp:ANN} la possibilité de les faire apprendre par un réseau de neurones, plus précisement par un perceptron multi-couches.

Le titre de la troisième partie donne une idée de la conclusion de
cette étude puisqu'on y étudie une famille PRNG construite à partir de fonctions 
dont les itérations sont chaotiques.
Plus précisément, le chapitre~\ref{chap:PRNG:chao} caractérise les PRNG
construits à partir de réseaux booléens qui sont chaotiques en donnant
des conditions suffisantes sur la fonction à itérer.
Le chapitre~\ref{chap:PRNG:gray} s'intéresse donc à générer
ce type de fonction de manière autrement plus efficace qu'à partir de
la méthode décrite au chapitre~\ref{chap:carachaos}. On y présente aussi un
majorant du nombre d'itérations à effectuer pour obtenir une distribution
uniforme.

Comme annoncé dans les motivations à ce travail, les itérations chaotiques
peuvent s'appliquer au marquage de média et plus généralement
au masquage d'information. C'est l'objectif de la quatrième partie.

Dans le premier chapitre de celle-ci (chapitre~\ref{chap:watermarking}), nous
formalisons le processus de marquage d'information. Grâce à cette formalisation,
nous pouvons étudier des propriétés de stégo-securité et chaos-sécurité.

Les deux chapitres suivants (chapitre~\ref{chap:watermarking:pdf} et
chapitre~\ref{chap:stabylo}) sont une parenthèse
au domaine discret puisqu'on s'intéresse au marquage de document PDF par une
méthode classique et au masquage d'information par une technique de détection
de bords.

Le dernier chapitre  des contributions (chapitre~\ref{chap:th:yousra})
retourne dans le monde discret. Il montre qu'on peut approximer efficacement
à l'aide de matrices discrètes des calculs de gradients pour, \textit{in fine},
construire des lignes de niveau et embarquer de l'information dans les lignes
de niveau les moins régulières.

Une conclusion et des perspectives sont données en dernière partie.

\section*{Publications en tant qu'enseignant-chercheur}
Le tableau de la figure~\ref{fig:bilan} donné 
ci dessous synthétise les références auxquelles j'ai participé 
depuis  mon intégration en tant qu'enseignant chercheur.

\begin{figure}[h]
\begin{center}
\begin{tabular}{|c|c|}
\hline
%& \multicolumn{2}{|c|}{Internationaux} &  {Nationaux} &  \\
%\hline
 Journaux & Conférences  \\
 internationaux & internationales  
\\ \hline  
%journaux
\cite{bcg12:ij,bcg11:ij,bcgs12:ij}
&
% conf inter
\cite{aagc+15:ip,bcfg12a:ip,bcfg12b:ip,bcfg+13:ip,bcg11:ip}



\\ 
%journaux
\cite{cds13:ij,ccg15:ij,BDCC16}
&
% conf inter


\cite{bcg11b:ip,acgs13:onp,chgw+14:onp}


\\ %\hline  

%journaux
\cite{ccgh16}
&
% conf inter
\cite{bcgr11:ip,bcgw11:ip,cds12:ip,chgw+14:oip,fccg15:ip}


\\ %\hline  

%journaux

&
% conf inter
\cite{accfg15:ip,DBLP:conf/secrypt/MohammedCG16,ccfg16:ip,kcm16:ip}



%%%%%%%%%%%%%


\\ \hline  
\end{tabular}
\end{center}
\caption{Bilan synthétique des publications}\label{fig:bilan}
\end{figure}

