diff --git a/.vscode/settings.json b/.vscode/settings.json index 314663037274c2f256cb030019e72d86ec25126c..95962b5df03d32972e811106c6fe7215a50b68c4 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -34,6 +34,7 @@ "bijective", "binom", "bmatrix", + "bottomrule", "captionof", "cheatsheets", "chktex", @@ -74,6 +75,8 @@ "midrule", "mnode", "multicols", + "multicolumn", + "multirow", "multline", "mydescription", "myenumerate", @@ -96,6 +99,7 @@ "psset", "rearrangeable", "recurse", + "scalability", "scalebox", "smallcaps", "sqcases", diff --git a/main.tex b/main.tex index f631af9c74dd022808962ecbb877ed4c6cb47a34..2480b10845bcc67df544195b455b6920b8857531 100644 --- a/main.tex +++ b/main.tex @@ -54,5 +54,9 @@ \printbibliography% \end{frame} + + \appendix + + \input{sections/appendix} \end{document} diff --git a/packages.tex b/packages.tex index 30d2a6faa227e9c62c5ce63dee1243f1acfaab73..20eb8a89e6ef75529ab6331b71018f4927095b6c 100644 --- a/packages.tex +++ b/packages.tex @@ -12,6 +12,7 @@ \usepackage{xpatch} \usepackage{hyperref} \usepackage{hyperxmp} +\usepackage{multirow} \usepackage[ backend=biber, diff --git a/sections/appendix.tex b/sections/appendix.tex new file mode 100644 index 0000000000000000000000000000000000000000..003e3ccb91c1bef9a5b8932f7f85c5c309c69a16 --- /dev/null +++ b/sections/appendix.tex @@ -0,0 +1,60 @@ +% cSpell:ignore DBLP + +\begin{frame}{Max stash size grows linearly with $\lambda$} + + \begin{center} + + \includegraphics[ + height=5cm, + keepaspectratio + ]{static/images/max-stash-size-linear.png} + + \end{center} + + Figure 3 from~\cite{DBLP:journals/corr/abs-1202-5150}. + +\end{frame} + +\begin{frame}{Max stash size does not depend on $N$} + + \begin{center} + + \includegraphics[ + height=5cm, + keepaspectratio + ]{static/images/stash-size-does-not-depend-on-n.png} + + \end{center} + + Figure 4 from~\cite{DBLP:journals/corr/abs-1202-5150}. + +\end{frame} + +\begin{frame}{Max stash size for large security parameters} + + \begin{center} + + \begin{tabular}{ l c c c } + + \toprule% + + \multirow{3}{*}{\textbf{Security parameter} $\lambda$} & \multicolumn{3}{c}{\textbf{Bucket size} $Z$} \\ + & 4 & 5 & 6 \\ + & \multicolumn{3}{c}{\textbf{Max stash size}} \\ + + \midrule% + + 80 & 89 & 63 & 53 \\ + 128 & 147 & 105 & 89 \\ + 256 & 303 & 218 & 186 \\ + + \bottomrule% + + \end{tabular} + + \end{center} + + Figure 5 from~\cite{DBLP:journals/corr/abs-1202-5150}. + +\end{frame} + diff --git a/sections/conclusion.tex b/sections/conclusion.tex index 5e874985bdd3f12dbca18f532da6f556be699173..3a2787a54672baa3b6e49b438e564df802f22241 100644 --- a/sections/conclusion.tex +++ b/sections/conclusion.tex @@ -1 +1,22 @@ +% cSpell:ignore DBLP + \section{Conclusion} + + \begin{frame}{Conclusion} + + \begin{quote} + + Partly due to its simplicity, PathORAM is the most practical ORAM scheme known-to-date under a small amount of client storage. + We formally prove asymptotic bounds on PathORAM, and show that its performance is competitive with or asymptotically better than the best known construction (for a small amount of client storage), assuming reasonably large block sizes. + We also present simulation results that confirm our theoretic bounds.~\cite{DBLP:journals/corr/abs-1202-5150} + + \end{quote} + + \note{ + The conclusion given in the paper is very concise, so I have just copied it down from the paper. + To iterate, pathORAM is simple, practical, requires small client storage. + The paper proves asymptotic bounds and negligible probability of failure. + Lastly, the practical evaluation of theoretical results is given. + } + + \end{frame} diff --git a/sections/evaluation.tex b/sections/evaluation.tex index cd3fc7fa4ae187605271dd7840cc3987aebc8a35..abf257cdca30a72862c573c24976e855487cae2a 100644 --- a/sections/evaluation.tex +++ b/sections/evaluation.tex @@ -1 +1,104 @@ \section{Evaluation} + + \begin{frame}{Stash Occupancy Distribution} + + \begin{block}{Experiment setup} + + \begin{itemize} + \item + PathORAM uses a binary tree with height $L = \ceil*{\log_2 N} - 1$. + % TODO: why? + \item + \emph{Stash occupancy} is the number of overflowing blocks. + Represents client's \emph{persistent} local storage. + \item + First load $N$ blocks into ORAM and then access each block in a round-robin pattern. + Worst-case access pattern in terms of stash occupancy. + \item + Single run for about 250 billion accesses after doing 1 billion accesses for warming-up. + \end{itemize} + + \end{block} + + \note{ + In the experiments, authors used a binary tree of height $\ceil*{\log_2 N} - 1$. + + Let us define \emph{stash occupancy} is the number of overflowing blocks. + Thus, this would be a client's persistent local storage in addition to $Z \log_2 N$ transient storage for storing single path. + + We access PathORAM in a round-robin fashion --- it is proven to be the worst-case scenario for PathORAM\@. + Round-robin fashion is like $\{ 1, 2, \ldots, N, 1, 2, \ldots, N, \ldots, 1, 2, \ldots \}$. + + Finally, they perform around billion accesses for warming-up, then 250 billion accesses for actual experiment. + } + + \end{frame} + + \begin{frame}{Stash Occupancy Distribution} + + \begin{block}{Results} + + \begin{itemize} + \item + Required stash size grows linearly with the security parameter. + Failure probability decreases exponentially with the stash size. + See appendix. + \item + Extrapolate those results for realistic values of $\lambda$. + See appendix. + \item + It is by definition infeasible to simulate for practically adopted security parameters (e.g., $\lambda = 128$) + \item + Required stash size for a low failure probability does not depend on $N$. + This shows PathORAM has good scalability. + See appendix. + \end{itemize} + + \end{block} + + \note{ + Some of the key observations made after simulation. + + Required stash size grows linearly with the security parameter, which is consistent with the theorem that failure probability decreases exponentially with the stash size. + + This linearity was used to predict required stash size for realistic security parameters. + Note that it is by definition infeasible to simulate for practically adopted security parameters, since if we can simulate a failure in any reasonable amount of time with such values, they would not be considered secure. + + Finally, it is discovered that required stash size does not depend on $N$, which proves that PathORAM is highly scalable. + } + + \end{frame} + + \begin{frame}{Bucket Load} + + \begin{block}{Results} + + \begin{itemize} + \item + For $Z \ge 5$, the usage of a subtree is close to the number of buckets in it. + Also holds for $Z = 4$. + % TODO why? + \item + For the levels close to the root, the bucket load is indeed 1 block. + \item + Leaves have slightly heavier loads as blocks accumulate at the leaves of the tree. + \item + $Z = 3$, however, exhibits a different distribution of bucket load and produces much larger stash sizes in practice. + \end{itemize} + + \end{block} + + \note{ + Another set of observations about bucket load. + + For $Z \in \{ 4, 5 \}$, the usage of a subtree is close to the number of buckets in it. + + For the levels close to the root, the bucket load is 1 block. + + Leaves have slightly heavier loads as blocks accumulate at the leaves of the tree. + + $Z = 3$ is different. + It produces much larger stash sizes in practice, so should not be used in production. + } + + \end{frame} diff --git a/sections/overview-of-other-orams.tex b/sections/overview-of-other-orams.tex index f32069edf38d9cec08fbb81689b3e92c352437df..3013338775aca967b57392efe7543c2778df77d4 100644 --- a/sections/overview-of-other-orams.tex +++ b/sections/overview-of-other-orams.tex @@ -15,7 +15,9 @@ Basic-HR & $N \log^2 N$ & $N \log^2 N$ & $N \log N$ & $1^b$ \\ BB-ORAM & $\log^2 N$ & $N \log^2 N$ & $N \log N$ & $1$ \\ TP-ORAM & $\sqrt{N}$ & $1$ & $N$ & $\sqrt{N} + \frac{N}{B}$ \\ - \textbf{Path-ORAM} & $\bm{\log N}$ & $\bm{1}$ & $\bm{N}$ &\footnote{$\BigO{\log N} \cdot \omega(1) + \BigO{\frac{N}{B}}$} + \textbf{Path-ORAM} & $\bm{\log N}$ & $\bm{1}$ & $\bm{N}$ &\footnote{$\BigO{\log N} \cdot \omega(1) + \BigO{\frac{N}{B}}$} \\ + + \bottomrule% \end{tabular} diff --git a/static/images/max-stash-size-linear.png b/static/images/max-stash-size-linear.png new file mode 100755 index 0000000000000000000000000000000000000000..57b5074b984d09e677df1f8bf9d61bf38513e421 Binary files /dev/null and b/static/images/max-stash-size-linear.png differ diff --git a/static/images/stash-size-does-not-depend-on-n.png b/static/images/stash-size-does-not-depend-on-n.png new file mode 100755 index 0000000000000000000000000000000000000000..548bf2415d75930569d8cbfbc9829cbf31a4433d Binary files /dev/null and b/static/images/stash-size-does-not-depend-on-n.png differ