diff --git a/docs/presentations/autre/WinterSchoolGDRCyber2026/convergence_hc.tex b/docs/presentations/autre/WinterSchoolGDRCyber2026/convergence_hc.tex new file mode 100755 index 0000000..fb60dce --- /dev/null +++ b/docs/presentations/autre/WinterSchoolGDRCyber2026/convergence_hc.tex @@ -0,0 +1,41 @@ +\resizebox{\columnwidth}{!}{ + \begin{tikzpicture}[ + roundnode/.style={circle, draw=black, fill=black, very thick, minimum size=1pt,}, + ignorednode/.style={circle, draw=black!20, fill=black!20, very thick, minimum size=1pt,}, + arrow/.style={|->, thick,}, + message/.style={->, blue!50, dashed, -{Circle[length=4pt,]}}, + ] + + \node[roundnode] (11) {}; + \node[left] at (11.west) {$p_0$}; + \node[above] at (11.north) {$w(1)$}; + \node[roundnode] (12) [right=of 11] {}; + \node[above] at (12.north) {$I(a)$}; + \node[roundnode] (13) [right=of 12] {}; + \node[above] at (13.north) {$r/(0,1)$}; + \node[roundnode] (14) [right=35pt of 13] {}; + \node[above] at (14.north) {$r/(1,2)^w$}; + + \draw[arrow] (11) -- (12); + \draw[arrow] (12) -- (13); + \draw[arrow] (13) -- (14); + + \node[roundnode] (21) [below=of 11] {}; + \node[left] at (21.west) {$p_1$}; + \node[below] at (21.south) {$w(2)$}; + \node[roundnode] (22) [right=of 21] {}; + \node[below] at (22.south) {$R/\emptyset$}; + \node[roundnode] (23) [right=of 22] {}; + \node[below] at (23.south) {$r/(0,2)$}; + \node[roundnode] (24) [right=35pt of 23] {}; + \node[below] at (24.south) {$r/(1,2)^w$}; + + \draw[arrow] (21) -- (22); + \draw[arrow] (22) -- (23); + \draw[arrow] (23) -- (24); + + \draw (24) -- (14); + + \draw[dashed] ($(14)!0.5!(13) + (0,1)$) -- ++(0, -3.5); + \end{tikzpicture} +} \ No newline at end of file diff --git a/docs/presentations/autre/WinterSchoolGDRCyber2026/images/carte_criteres.png b/docs/presentations/autre/WinterSchoolGDRCyber2026/images/carte_criteres.png new file mode 100755 index 0000000..cd71ddc Binary files /dev/null and b/docs/presentations/autre/WinterSchoolGDRCyber2026/images/carte_criteres.png differ diff --git a/docs/presentations/autre/WinterSchoolGDRCyber2026/images/logo-amu.svg b/docs/presentations/autre/WinterSchoolGDRCyber2026/images/logo-amu.svg new file mode 100644 index 0000000..bb05caf --- /dev/null +++ b/docs/presentations/autre/WinterSchoolGDRCyber2026/images/logo-amu.svg @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/presentations/autre/WinterSchoolGDRCyber2026/images/logo-lis-2024.svg b/docs/presentations/autre/WinterSchoolGDRCyber2026/images/logo-lis-2024.svg new file mode 100644 index 0000000..2fbde76 --- /dev/null +++ b/docs/presentations/autre/WinterSchoolGDRCyber2026/images/logo-lis-2024.svg @@ -0,0 +1,37 @@ + + + + + + Created by potrace 1.16, written by Peter Selinger 2001-2019image/svg+xml + + Layer 1 + + + + + + + + + + + LABORATOIRE + + + + + UMR 7020 + + + + & DES SYSTÈMES + + + D'INFORMATIQUE + + + + + + diff --git a/docs/presentations/autre/WinterSchoolGDRCyber2026/images/logo_AMU.svg b/docs/presentations/autre/WinterSchoolGDRCyber2026/images/logo_AMU.svg new file mode 100644 index 0000000..453333c --- /dev/null +++ b/docs/presentations/autre/WinterSchoolGDRCyber2026/images/logo_AMU.svg @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/presentations/autre/WinterSchoolGDRCyber2026/images/logo_dalgo.svg b/docs/presentations/autre/WinterSchoolGDRCyber2026/images/logo_dalgo.svg new file mode 100644 index 0000000..df5cbd2 --- /dev/null +++ b/docs/presentations/autre/WinterSchoolGDRCyber2026/images/logo_dalgo.svg @@ -0,0 +1,128 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/presentations/autre/WinterSchoolGDRCyber2026/images/logo_row_gradient.svg b/docs/presentations/autre/WinterSchoolGDRCyber2026/images/logo_row_gradient.svg new file mode 100644 index 0000000..f573ade --- /dev/null +++ b/docs/presentations/autre/WinterSchoolGDRCyber2026/images/logo_row_gradient.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/presentations/autre/WinterSchoolGDRCyber2026/images/parsec.png b/docs/presentations/autre/WinterSchoolGDRCyber2026/images/parsec.png new file mode 100644 index 0000000..7b6e72c Binary files /dev/null and b/docs/presentations/autre/WinterSchoolGDRCyber2026/images/parsec.png differ diff --git a/docs/presentations/autre/WinterSchoolGDRCyber2026/localiteetat_hc.tex b/docs/presentations/autre/WinterSchoolGDRCyber2026/localiteetat_hc.tex new file mode 100755 index 0000000..3d46230 --- /dev/null +++ b/docs/presentations/autre/WinterSchoolGDRCyber2026/localiteetat_hc.tex @@ -0,0 +1,34 @@ +\resizebox{\columnwidth}{!}{% + \begin{tikzpicture}[ + roundnode/.style={circle, draw=black, fill=black, very thick, minimum size=1pt,}, + ignorednode/.style={circle, draw=black!20, fill=black!20, very thick, minimum size=1pt,}, + arrow/.style={|->, thick,}, + message/.style={->, blue!50, dashed, -{Circle[length=4pt,]}}, + ] + + \node[roundnode, draw=red, fill=red] (11) {}; + \node[left] at (11.west) {$p_0$}; + \node[above] at (11.north) {$w(1)$}; + \node[roundnode, draw=blue, fill=blue] (12) [right=of 11] {}; + \node[above] at (12.north) {$r/(0,0)$}; + \node[roundnode, draw=blue, fill=blue] (13) [right=of 12] {}; + \node[above] at (13.north) {$r/(0,2)^w$}; + + \draw[arrow] (11) -- (12); + \draw[arrow] (12) -- (13); + + \node[roundnode, draw=blue, fill=blue] (21) [below=of 11] {}; + \node[left] at (21.west) {$p_1$}; + \node[below] at (21.south) {$w(2)$}; + \node[roundnode, draw=red, fill=red] (22) [right=of 21] {}; + \node[below] at (22.south) {$r/(0,0)$}; + \node[roundnode, draw=red, fill=red] (23) [right=of 22] {}; + \node[below] at (23.south) {$r/(0,1)^w$}; + + \draw[arrow] (21) -- (22); + \draw[arrow] (22) -- (23); + + \draw[message] (11) -- ($(22)!0.5!(23)$); + \draw[message] (21) -- ($(12)!0.5!(13)$); + \end{tikzpicture} +} \ No newline at end of file diff --git a/docs/presentations/autre/WinterSchoolGDRCyber2026/main.tex b/docs/presentations/autre/WinterSchoolGDRCyber2026/main.tex new file mode 100644 index 0000000..95c3af9 --- /dev/null +++ b/docs/presentations/autre/WinterSchoolGDRCyber2026/main.tex @@ -0,0 +1,265 @@ +\documentclass{beamer} +\usetheme{Boadilla} +\usecolortheme{orchid} + +\usepackage[T1]{fontenc} +\usepackage[utf8]{inputenc} +\usepackage[french]{babel} +\usepackage{stackengine} + +\addtobeamertemplate{navigation symbols}{}{% + \usebeamerfont{footline}% + \usebeamercolor[fg]{footline}% + \hspace{1em}% + \insertframenumber/\inserttotalframenumber +} +\usepackage{ulem} +\usepackage{tkz-tab} +\setbeamertemplate{blocks}[rounded]% +[shadow=true] +\AtBeginSection{% + \begin{frame} + \tableofcontents[sections=\value{section}] + \end{frame} +} + +\usepackage{tikz} +\usetikzlibrary{positioning} +\usetikzlibrary{calc} +\usetikzlibrary{arrows.meta} + +\title{Amaury JOLY - Winter School GDR Cybersécurité} +\author{Amaury JOLY} +\institute{Université Aix-Marseille \\ Laboratoire d'Informatique et Systèmes (LIS)} +\date{Janvier 2026} + +\begin{document} + +\begin{frame} + \titlepage + \vspace{-1.2em} + + \begin{center} + \includegraphics[height=1cm]{images/logoamu}\hspace{1cm}% + \includegraphics[height=1.5cm]{images/logolis}\hspace{1cm} + \includegraphics[height=0.9cm]{images/logodalgo}\hspace{1cm}% + \includegraphics[height=0.6cm]{images/logoparsec} + \end{center} +\end{frame} + + +\begin{frame}{Who am I?} + \begin{itemize} + \item \textbf{Amaury JOLY} + \item 3rd-year PhD candidate at the \textbf{Laboratory of Informatics and Systems (LIS)} + \item \textbf{Distributed Algorithms} team + \item Supervised by \textbf{Emmanuel GODARD} and \textbf{Corentin TRAVERS} + \item \textbf{CIFRE} PhD with the company \textbf{Parsec} + \end{itemize} +\end{frame} + +%------------------------------------------------------------ +\begin{frame}{Parsec: company \& product} + \begin{itemize} + \item \textbf{Parsec} develops an end-to-end encrypted file sharing platform + \item Client--server solution: users collaborate through shared workspaces + \item \textbf{End-to-end encryption}: the server only sees \emph{ciphertexts} + \item \textbf{Distributed PKI management among clients} (keys/identities handled at the edge) + \item \alert{one central server stores encrypted data and redistributes it to clients} + \end{itemize} +\end{frame} + +%------------------------------------------------------------ +\begin{frame}{My topic (high level)} + \begin{block}{Problem statement} + \textit{``Weak consistency in a zero-trust cloud for real-time collaborative applications.''} + \end{block} + + \vspace{0.4em} + \begin{itemize} + \item Real-time collaboration: concurrent updates, low latency, intermittent connectivity + \item We want \textbf{weak consistency} (e.g., eventual / causal behaviors) with clear semantics under concurrency + \item \textbf{Zero-trust cloud} (Parsec-like setting): + \begin{itemize} + \item central server trusted for \textbf{availability} only + \item server can be \textbf{honest-but-curious} (observes metadata, stores/forwards ciphertexts) + \item \textbf{no trust assumptions on clients} (they may be compromised or mutually distrustful) + \end{itemize} + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{Our Model} + \begin{block}{Assumptions} + \begin{itemize} + \item The system is highly connected + \item The system is not partitionable + \item The system is asynchronous (i.e., no assumption on message delays or relative process speeds) + \item Nodes can fail by \textbf{crash} (i.e., stop functioning) + \item Nodes can be \textbf{Byzantine} (i.e., arbitrary behavior) + \item The communication network is reliable but byzantine nodes can delay or reorder messages + \item There is a Reliable Broadcast abstraction available + \end{itemize} + \end{block} +\end{frame} + +\begin{frame} + \frametitle{Consistency classes} + \begin{columns} + \column{0.5\textwidth} + \resizebox{\columnwidth}{!}{ + \includegraphics{images/carte_criteres.png} + } + + \column{0.5\textwidth} + One approach to define the consistency of an algorithm is to place the concurrent history it produces into a consistency class. \\ + We can define 3 consistency classes: + \begin{itemize} + \item \textbf{State Locality} (LS) + \item \textbf{Validity} (V) + \item \textbf{Eventual Consistency} (EC) + \end{itemize} + \end{columns} +\end{frame} + +\begin{frame} + \frametitle{State Locality (LS)} + + \begin{columns} + \column{0.4\textwidth} + \include{localiteetat_hc} + \column{0.6\textwidth} + \begin{block}{Definition} + For every process $p$, there exists a linearization containing all of $p$'s read operations. \\ + \end{block} + \begin{math} + \begin{array}{ll} + e.g.: & \textcolor{blue}{C_{p_1} = \{r/(0,0), r/(0,2)^w, w(2)\}}, \\ + & \textcolor{red}{C_{p_2} = \{r/(0,0), r/(0,1)^w, w(1)\}}, \\ + & \textcolor{blue}{r/(0,0) \bullet w(2) \bullet r/(0,2)^w} \\ + & \textcolor{red}{r/(0,0) \bullet w(1) \bullet r/(0,1)^w} \\ + \end{array} + \end{math} + \end{columns} + + + \begin{flushright} + \begin{math} + LS = \left\{ + \begin{array}{l} + \mathcal{T} \rightarrow \mathcal{P}(\mathcal{H}) \\ + T \rightarrow \left\{ + \begin{tabular}{lll} + $H \in \mathcal{H}:$ & \multicolumn{2}{l}{$\forall p \in \mathcal{P}_H, \exists C_p \subset E_H,$} \\ + & & $\hat{Q}_{T,H} \subset C_p$ \\ + & $\land$ & $lin(H[p \cap C_p / C_p]) \cap L(T) \neq \emptyset$ \\ + \end{tabular} + \right. \\ + \end{array} + \right. + \end{math} + \end{flushright} +\end{frame} + + +\begin{frame} + \frametitle{Validity (V)} + + \begin{columns} + \column{0.4\textwidth} + \include{validite_hc} + \column{0.6\textwidth} + \begin{block}{Definition} + There exists a co-finite set of events such that for each of them, a linearization of all write operations justifies them. \\ + \end{block} + \begin{math} + \begin{array}{ll} + e.g.: & E' = \{r/(2,1)^w, r/(1,2)^w\} \\ + & w(2) \bullet w(1) \bullet \textcolor{red}{r/(2,1)^w} \\ + & w(1) \bullet w(2) \bullet \textcolor{red}{r/(1,2)^w} \\ + \end{array} + \end{math} + \end{columns} + + + \begin{flushright} + \begin{math} + V = \left\{ + \begin{array}{l} + \mathcal{T} \rightarrow \mathcal{P}(\mathcal{H}) \\ + T \rightarrow \left\{ + \begin{array}{lll} + H \in \mathcal{H}: & \multicolumn{2}{l}{|U_{T,H}| = \infty} \\ + & \lor & \exists E' \subset E_H, (|E_H \setminus E'| < \infty \\ + & & \land \forall e \in E', lin(H[E_H / {e}]) \cap L(T) \neq \emptyset) \\ + \end{array} + \right. \\ + \end{array} + \right. + \end{math} + \end{flushright} +\end{frame} + + +\begin{frame} + \frametitle{Eventual Consistency (EC)} + + \begin{columns} + \column{0.4\textwidth} + \include{convergence_hc}% + \column{0.5\textwidth} + \begin{block}{Definition} + There exists a co-finite set of events such that for each of them, a single linearization justifies them. \\ + \end{block} + \begin{math} + \begin{array}{ll} + e.g.: & E' = \{r/(1,2)^w, r/(1,2)^w\} \\ + & w(1) \bullet w(2) \bullet \textcolor{red}{r/(1,2)^w} \\ + \end{array} + \end{math} + \end{columns} + + + \begin{flushright} + \begin{math} + EC = \left\{ + \begin{array}{l} + \mathcal{T} \rightarrow \mathcal{P}(\mathcal{H}) \\ + T \rightarrow \left\{ + \begin{array}{lll} + H \in \mathcal{H}: & \multicolumn{2}{l}{|U_{T,H}| = \infty} \\ + & \lor & \exists E' \subset E_H, |E_H \setminus E'| < \infty \\ + & & \land \displaystyle\bigcap_{e \in E'} \delta_T^{-1}(\lambda(e)) \neq \emptyset \\ + \end{array} + \right. \\ + \end{array} + \right. + \end{math} + \end{flushright} +\end{frame} + +\begin{frame}{Main Work} + \begin{itemize} + \item We designed a distributed algorithm that use a \textbf{byzantine-tolerant eventually consistent register} in our model to achieve Agreement with $t < n/3$ Byzantine nodes. + \item I'm working on a framework using this algorithm to build collaborative applications for the context of a zero-trust cloud. + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{Thank you for your attention!} + \vfill + \begin{center} + \includegraphics[height=1cm]{images/logoamu}\hspace{1cm}% + \vspace{1em} + + \includegraphics[height=1.5cm]{images/logolis}\hspace{1cm}% + \vspace{1em} + + \includegraphics[height=0.9cm]{images/logodalgo}\hspace{1cm}% + \vspace{1em} + + \includegraphics[height=0.6cm]{images/logoparsec} + \end{center} +\end{frame} + +\end{document} \ No newline at end of file diff --git a/docs/presentations/autre/WinterSchoolGDRCyber2026/validite_hc.tex b/docs/presentations/autre/WinterSchoolGDRCyber2026/validite_hc.tex new file mode 100755 index 0000000..2d0b836 --- /dev/null +++ b/docs/presentations/autre/WinterSchoolGDRCyber2026/validite_hc.tex @@ -0,0 +1,31 @@ +\resizebox{\columnwidth}{!}{% + \begin{tikzpicture}[ + roundnode/.style={circle, draw=black, fill=black, very thick, minimum size=1pt,}, + ignorednode/.style={circle, draw=black!20, fill=black!20, very thick, minimum size=1pt,}, + arrow/.style={|->, thick,}, + message/.style={->, blue!50, dashed, -{Circle[length=4pt,]}}, + ] + + \node[roundnode] (11) {}; + \node[left] at (11.west) {$p_0$}; + \node[above] at (11.north) {$w(1)$}; + \node[roundnode] (12) [right=of 11] {}; + \node[above] at (12.north) {$r/(0,1)$}; + \node[roundnode] (13) [right=of 12] {}; + \node[above] at (13.north) {$r/(2,1)^w$}; + + \draw[arrow] (11) -- (12); + \draw[arrow] (12) -- (13); + + \node[roundnode] (21) [below=of 11] {}; + \node[left] at (21.west) {$p_1$}; + \node[below] at (21.south) {$w(2)$}; + \node[roundnode] (22) [right=of 21] {}; + \node[below] at (22.south) {$r/(0,2)$}; + \node[roundnode] (23) [right=of 22] {}; + \node[below] at (23.south) {$r/(1,2)^w$}; + + \draw[arrow] (21) -- (22); + \draw[arrow] (22) -- (23); + \end{tikzpicture} +} \ No newline at end of file