diff --git a/example/definitions.tex b/example/definitions.tex new file mode 100644 index 0000000000000000000000000000000000000000..48628304194ef3bc465ce64091af3d02d833db8d --- /dev/null +++ b/example/definitions.tex @@ -0,0 +1,12 @@ +\DeclareDocumentCommand + {\oramNode} + { O{$\varnothing$} O{$\varnothing$} O{$\varnothing$} } + {#1, #2, #3} + +\newif\ifselected +\newif\ifpathread + +\newif\ifnodeonenew +\newif\ifnodetwonew +\newif\ifnodethreenew +\newif\ifnodefournew diff --git a/example/final-map.tex b/example/final-map.tex new file mode 100644 index 0000000000000000000000000000000000000000..adf8a69491ea580d57556b67e183bcded0502e9a --- /dev/null +++ b/example/final-map.tex @@ -0,0 +1,9 @@ +\begin{tabular}{ l | *{9}{c} } % chktex 44 + + Block ID & 1 & 2 & 3 & 4 & \textcolor{red}{$5$} & 6 & $\ldots$ & 37 \\ + + \midrule% + + Leaf ID & 6 & 5 & 5 & 1 & \textcolor{red}{$3$} & 5 & $\ldots$ & 7 \\ + +\end{tabular} diff --git a/example/final-tree.tex b/example/final-tree.tex new file mode 100644 index 0000000000000000000000000000000000000000..bc3e9d8e859acaa9ab0890c081eeaffcf7188356 --- /dev/null +++ b/example/final-tree.tex @@ -0,0 +1,67 @@ +\newcommand +{\blockFive} +{ + \ifselected + \textcolor{red}{$5$} + \else + $5$ + \fi +} + +\newcommand + {\leafSix} +{ + \ifselected + \textcolor{red}{$6$} + \else + $6$ + \fi +} + +\ifpathread + \newcommand{\selectedNode}{blue} +\else + \newcommand{\selectedNode}{black} +\fi + +\begin{tikzpicture}[scale=0.8] +\Tree + [.\node[rounded corners, draw/.expand once=\selectedNode]{\oramNode}; + [.\node[rounded corners, draw]{\oramNode[$4$]}; + [.\node[rounded corners, draw]{\oramNode[$12$][$17$]}; + [.\node[rounded corners, draw]{\oramNode[$22$][$23$]}; + 1 + ] + [.\node[rounded corners, draw]{\oramNode[$26$][$28$][$30$]}; + 2 + ] + ] + [.\node[rounded corners, draw]{\oramNode[$24$][$29$][$33$]}; + [.\node[rounded corners, draw]{\oramNode[$27$][$31$][$35$]}; + 3 + ] + [.\node[rounded corners, draw]{\oramNode[$34$][$32$][$21$]}; + 4 + ] + ] + ] + [.\node[rounded corners, draw/.expand once=\selectedNode]{\oramNode[$10$][$1$]}; + [.\node[rounded corners, draw/.expand once=\selectedNode]{\oramNode[$2$][\blockFive][$8$]}; + [.\node[rounded corners, draw]{\oramNode[$3$][$6$][$11$]}; + 5 + ] + [.\node[rounded corners, draw/.expand once=\selectedNode]{\oramNode[$7$][$13$][$15$]}; + \node[]{\leafSix}; + ] + ] + [.\node[rounded corners, draw]{\oramNode[$9$][$13$]}; + [.\node[rounded corners, draw]{\oramNode[$20$][$14$][$16$]}; + 7 + ] + [.\node[rounded corners, draw]{\oramNode[$25$][$18$][$19$]}; + 8 + ] + ] + ] + ] +\end{tikzpicture} diff --git a/example/initial-map.tex b/example/initial-map.tex new file mode 100644 index 0000000000000000000000000000000000000000..a55021d8224e1ba1c1970ac178c2bb2c66e1ed60 --- /dev/null +++ b/example/initial-map.tex @@ -0,0 +1,29 @@ +\newcommand + {\blockFive} + { + \ifselected + \textcolor{red}{$5$} + \else + $5$ + \fi + } + +\newcommand + {\leafSix} + { + \ifselected + \textcolor{red}{$6$} + \else + $6$ + \fi + } + +\begin{tabular}{ l | *{9}{c} } % chktex 44 + + Block ID & 1 & 2 & 3 & 4 & \blockFive & 6 & $\ldots$ & 37 \\ + + \midrule% + + Leaf ID & 6 & 5 & 5 & 1 & \leafSix & 5 & $\ldots$ & 7 \\ + +\end{tabular} diff --git a/example/tree.tex b/example/tree.tex new file mode 100644 index 0000000000000000000000000000000000000000..4cd17e03b2a512c126517c1b63f96d2a293fc7a5 --- /dev/null +++ b/example/tree.tex @@ -0,0 +1,107 @@ +\newcommand + {\blockFive} + { + \ifselected + \textcolor{red}{$5$} + \else + $5$ + \fi + } + +\newcommand + {\leafSix} + { + \ifselected + \textcolor{red}{$6$} + \else + $6$ + \fi + } + +\ifpathread + \newcommand{\selectedNode}{blue} +\else + \newcommand{\selectedNode}{black} +\fi + +\newcommand + {\nodeLevelOne} + { + \ifnodeonenew + \oramNode[\textcolor{blue}{$8$}][\textcolor{blue}{$7$}][\textcolor{blue}{$1$}] + \else + \oramNode[$7$][$13$][$15$] + \fi + } + +\newcommand + {\nodeLevelTwo} + { + \ifnodetwonew + \oramNode[\textcolor{blue}{$2$}][\textcolor{blue}{$10$}][\textcolor{blue}{$15$}] + \else + \oramNode[$2$][\blockFive][$8$] + \fi + } + +\newcommand + {\nodeLevelThree} + { + \ifnodethreenew + \oramNode[\textcolor{blue}{$13$}] + \else + \oramNode[$10$][$1$] + \fi + } + +\newcommand + {\nodeLevelFour} + { + \ifnodefournew + \oramNode[\textcolor{blue}{$5^\prime$}] + \else + \oramNode + \fi + } + +\begin{tikzpicture}[scale=0.8] + \Tree + [.\node[rounded corners, draw/.expand once=\selectedNode]{\nodeLevelFour}; + [.\node[rounded corners, draw]{\oramNode[$4$]}; + [.\node[rounded corners, draw]{\oramNode[$12$][$17$][$36$]}; + [.\node[rounded corners, draw]{\oramNode[$22$][$23$]}; + 1 + ] + [.\node[rounded corners, draw]{\oramNode[$26$][$28$][$30$]}; + 2 + ] + ] + [.\node[rounded corners, draw]{\oramNode[$24$][$29$][$33$]}; + [.\node[rounded corners, draw]{\oramNode[$27$][$31$][$35$]}; + 3 + ] + [.\node[rounded corners, draw]{\oramNode[$34$][$32$][$21$]}; + 4 + ] + ] + ] + [.\node[rounded corners, draw/.expand once=\selectedNode]{\nodeLevelThree}; + [.\node[rounded corners, draw/.expand once=\selectedNode]{\nodeLevelTwo}; + [.\node[rounded corners, draw]{\oramNode[$3$][$6$][$11$]}; + 5 + ] + [.\node[rounded corners, draw/.expand once=\selectedNode]{\nodeLevelOne}; + \node[]{\leafSix}; + ] + ] + [.\node[rounded corners, draw]{\oramNode[$9$][$13$][$37$]}; + [.\node[rounded corners, draw]{\oramNode[$20$][$14$][$16$]}; + 7 + ] + [.\node[rounded corners, draw]{\oramNode[$25$][$18$][$19$]}; + 8 + ] + ] + ] + ] +\end{tikzpicture} diff --git a/main.tex b/main.tex index 2480b10845bcc67df544195b455b6920b8857531..58d965eb5f1218c442c88f0c8b3f71ef964caef3 100644 --- a/main.tex +++ b/main.tex @@ -41,6 +41,7 @@ \input{sections/overview-of-other-orams} \input{sections/problem-definition} \input{sections/path-oram-protocol} + \input{sections/example} \input{sections/recursion-and-parametrization} \input{sections/bounds-on-stash-usage} \input{sections/evaluation} diff --git a/packages.tex b/packages.tex index 20eb8a89e6ef75529ab6331b71018f4927095b6c..2542b46a848c79b2b5761ace1410ca25129f7922 100644 --- a/packages.tex +++ b/packages.tex @@ -13,6 +13,9 @@ \usepackage{hyperref} \usepackage{hyperxmp} \usepackage{multirow} +\usepackage{tikz-qtree} +\usepackage{xparse} +\usepackage{caption} \usepackage[ backend=biber, diff --git a/sections/example.tex b/sections/example.tex new file mode 100644 index 0000000000000000000000000000000000000000..bda62a5e8e80bbd1527b6b5b0f9863057a03cd89 --- /dev/null +++ b/sections/example.tex @@ -0,0 +1,235 @@ +\input{example/definitions} + +\section{Example} + + \begin{frame}{Initial state} + + \begin{figure} + \centering + + \input{example/tree} + \caption{Initial underlying tree} + \end{figure} + + \vspace{-12pt} + + \begin{figure} + \centering + + \input{example/initial-map} + \caption{Initial position map} + \end{figure} + + \end{frame} + + \begin{frame}{\textsc{Access}$(5)$} + + \selectedtrue + + \begin{figure} + \centering + + \input{example/tree} + \caption{Select block with ID 5} + \end{figure} + + \vspace{-12pt} + + \begin{figure} + \centering + + \input{example/initial-map} + \caption{Find leaf for block with ID 5} + \end{figure} + + \end{frame} + + \begin{frame}{Read path} + + \selectedtrue + \pathreadtrue + + \begin{figure} + \centering + + \input{example/tree} + \caption{Select path $\mathcal{P}(6)$} + \end{figure} + + \vspace{-12pt} + + \begin{figure} + \centering + + \input{example/initial-map} + \caption{Find leaf for block with ID 5} + \end{figure} + + \end{frame} + + \begin{frame}{Remap block} + + \begin{block}{Stash} + + \begin{gather*} + S = \{ 10, 1, 2, \textcolor{red}{5}, 8, 7, 13, 15 \} \\ + data = \textsc{DecryptBlock}(\textcolor{red}{5}) \\ + \textcolor{blue}{5^\prime} \gets \textsc{EncryptData}(data^{\mbox{*}}) \\ + S = \{ 10, 1, 2, \textcolor{blue}{5^\prime}, 8, 7, 13, 15 \} + \end{gather*} + + \end{block} + + \begin{block}{Remap} + + Assign random leaf + + \[ + \text{position}[5] := 3 + \] + + \end{block} + + \end{frame} + + \begin{frame}{Write path back} + + \selectedtrue + \pathreadtrue + + \nodeonenewtrue + + \begin{figure} + \centering + + \input{example/tree} + \caption{Write bucket on level $L = 3$} + \end{figure} + + \vspace{-12pt} + + \begin{block}{Stash} + + \begin{gather*} + S^\prime = \{ 8, 7, 1 \} \\ + S = \{ 10, 2, \textcolor{blue}{5}, 13, 15 \} + \end{gather*} + + \end{block} + + \end{frame} + + \begin{frame}{Write path back} + + \selectedtrue + \pathreadtrue + + \nodeonenewtrue + \nodetwonewtrue + + \begin{figure} + \centering + + \input{example/tree} + \caption{Write bucket on level $L - 1 = 2$} + \end{figure} + + \vspace{-12pt} + + \begin{block}{Stash} + + \begin{gather*} + S^\prime = \{ 2, 10, 15 \} \\ + S = \{ \textcolor{blue}{5}, 13 \} + \end{gather*} + + \end{block} + + \end{frame} + + \begin{frame}{Write path back} + + \selectedtrue + \pathreadtrue + + \nodeonenewtrue + \nodetwonewtrue + \nodethreenewtrue + + \begin{figure} + \centering + + \input{example/tree} + \caption{Write bucket on level $L - 2 = 1$} + \end{figure} + + \vspace{-12pt} + + \begin{block}{Stash} + + \begin{gather*} + S^\prime = \{ 13 \} \\ + S = \{ \textcolor{blue}{5} \} + \end{gather*} + + \end{block} + + \end{frame} + + \begin{frame}{Write path back} + + \selectedtrue + \pathreadtrue + + \nodeonenewtrue + \nodetwonewtrue + \nodethreenewtrue + \nodefournewtrue + + \begin{figure} + \centering + + \input{example/tree} + \caption{Write bucket on level $0$} + \end{figure} + + \vspace{-12pt} + + \begin{block}{Stash} + + \begin{gather*} + S^\prime = \{ \textcolor{blue}{5} \} \\ + S = \varnothing + \end{gather*} + + \end{block} + + \end{frame} + + \begin{frame}{Final state} + + \selectedtrue + \pathreadtrue + + \nodeonenewtrue + \nodetwonewtrue + \nodethreenewtrue + \nodefournewtrue + + \begin{figure} + \centering + + \input{example/tree} + \caption{Tree after the execution} + \end{figure} + + \vspace{-12pt} + + \begin{figure} + \centering + + \input{example/final-map} + \caption{Position map after the execution} + \end{figure} + + \end{frame} diff --git a/settings.tex b/settings.tex index 9f8e68203e70af3c8379ee2411577e0b41a55458..575faee62627fdf5906860ed4043ecebab7814eb 100644 --- a/settings.tex +++ b/settings.tex @@ -68,3 +68,5 @@ pdfmenubar=false, pdfpagelayout=SinglePage } + +\captionsetup[figure]{labelformat=empty}