diff --git a/.vscode/settings.json b/.vscode/settings.json index 33e06df93825b628690fac889abfb859303d2232..82fb776ac967efff25ed1ad1e1d1d9b507728f06 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -10,6 +10,8 @@ "ORAM", "Untrusted", "alertblock", + "allcaps", + "allsmallcaps", "amsalpha", "beamer", "bijection", @@ -26,6 +28,8 @@ "parametrization", "progressbar", "providecommand", + "smallcaps", + "titleformat", "usetheme" ] } \ No newline at end of file diff --git a/bibfile.bib b/bibfile.bib index abb8f35bc7557faa06ca050e14c626fbc99095aa..8307e9806bf0c96bedb285515afcfb0bea65e4dc 100644 --- a/bibfile.bib +++ b/bibfile.bib @@ -17,4 +17,22 @@ publisher = {ACM}, address = {New York, NY, USA}, keywords = {pseudorandom functions, simulation of random access machines, software protection}, +} + +@article{Chang:2016:ORD:2994509.2994528, + author = {Chang, Zhao and Xie, Dong and Li, Feifei}, + title = {Oblivious RAM: A Dissection and Experimental Evaluation}, + journal = {Proc. VLDB Endow.}, + issue_date = {August 2016}, + volume = {9}, + number = {12}, + month = aug, + year = {2016}, + issn = {2150-8097}, + pages = {1113--1124}, + numpages = {12}, + url = {http://dx.doi.org/10.14778/2994509.2994528}, + doi = {10.14778/2994509.2994528}, + acmid = {2994528}, + publisher = {VLDB Endowment}, } \ No newline at end of file diff --git a/build.sh b/build.sh index 7f39a7da6f526023ea41ad03533882b5d2c27e6f..270fed7c660ad946394b042761891d09005b0d9d 100755 --- a/build.sh +++ b/build.sh @@ -3,7 +3,7 @@ shopt -s globstar set -e -INTERACTION=nonstopmode +INTERACTION=batchmode OUTDIR=dist JOBNAME=presentation ITERATIONS=3 @@ -44,7 +44,7 @@ while getopts "i:vgt" o; do case "${o}" in g) DEBUG=true - INTERACTION=batchmode + INTERACTION=nonstopmode ;; v) VERBOSE=true diff --git a/main.tex b/main.tex index 0b1168fdbc935e979c81789cbd851670a0d10bc2..0d16ef84e7816de9486ac8c0a24f41274060199b 100644 --- a/main.tex +++ b/main.tex @@ -3,6 +3,8 @@ \documentclass{beamer} \input{version} + +\input{packages} \input{preamble} \begin{document} @@ -11,6 +13,18 @@ \begin{frame}{Table of Contents} \tableofcontents + + \note{ + \begin{itemize} + \item + Start with the problem statement. + What an ORAM is and why we need it. + \item + Talk about what ORAMs are already there and what they disadvantages are. + \item + Then go in the same order as paper goes. + \end{itemize} + } \end{frame} \input{sections/oblivious-memory} @@ -23,7 +37,6 @@ \input{sections/applications-and-extensions} \input{sections/conclusion} - \begin{frame}[standout] Questions? \end{frame} @@ -32,7 +45,11 @@ \bibliographystyle{amsalpha} \bibliography{bibfile} \end{frame} - + \maketitle + + \appendix + + \input{sections/appendix} \end{document} diff --git a/packages.tex b/packages.tex new file mode 100644 index 0000000000000000000000000000000000000000..9f17ac704107675c11f849dd88854f81ff9d879d --- /dev/null +++ b/packages.tex @@ -0,0 +1,6 @@ +% cSpell:disable + +\usepackage{appendixnumberbeamer} +\usepackage{pgfpages} +\usepackage{booktabs} +\usepackage{bm} \ No newline at end of file diff --git a/preamble.tex b/preamble.tex index 93ab60e9561e5a034119cad47a1d3fc1a84b2815..f6b7331dc52d6c99d03e92382eea7684e4eebf79 100644 --- a/preamble.tex +++ b/preamble.tex @@ -1,8 +1,15 @@ -\usetheme[progressbar=frametitle]{metropolis} +% cSpell:disable -\title{Path ORAM: An Extremely Simple Oblivious RAM Protocol} % chktex 13 +\usetheme[ + progressbar=frametitle, + titleformat section=smallcaps +]{metropolis} -\subtitle{Discussion} +\setbeameroption{show notes on second screen} + +\title{Data-X Talk} % chktex 13 + +\subtitle{Path ORAM:\@An Extremely Simple Oblivious RAM Protocol} \date{Built from \href{https://git.dbogatov.org/bu/PathORAM-Talk/commit/\version}{\emph{\version}} on \today} @@ -17,3 +24,15 @@ keepaspectratio ]{static/logo.eps}\hspace{325pt}\vspace{-30pt} } + +\makeatletter +\def\beamer@framenotesbegin{% at beginning of slide + \usebeamercolor[fg]{normal text} + \gdef\beamer@noteitems{}% + \gdef\beamer@notes{}% +} +\makeatother + + +\newcommand{\BigO}[1]{\mathcal{O}\left(#1\right)} +\newcommand{\RAM}{\textbf{RAM}} \ No newline at end of file diff --git a/sections/oblivious-memory.tex b/sections/oblivious-memory.tex index 7d5c3152bcc1284dce393357ce1ba6b73168ae20..89a79fe382a10957c28e2e18433df2535cdaf9ea 100644 --- a/sections/oblivious-memory.tex +++ b/sections/oblivious-memory.tex @@ -14,6 +14,19 @@ Adversary still sees the \textbf{access pattern}. \end{alertblock} + \note{ + The idea is to build a secure cloud, and more specifically --- secure database. + The server is untrusted --- we assume an adversary can read every byte on the disk and track all CPU operations. + The first step is encrypting the database, so that only client can decrypt. + But that is just the first step --- what are we missing? + + An adversary can see the access pattern. + It can see which records are accessed more often. + Which records are accessed only after some other records were touched. + How ofter read vs write operations occur. + + \emph{What are the examples of attacks when access pattern is leaked?} + } \end{frame} \begin{frame}{Oblivious RAM} @@ -22,4 +35,39 @@ A machine is \emph{oblivious} if the sequence in which it accesses memory locations is equivalent for any two inputs with the same running time~\cite{Goldreich:1996:SPS:233551.233553}. \end{block} + \note{ + A solution is to design an oblivious memory access system. + This definition of oblivious machine is cited from the original paper on ORAMs by Goldreich and others from May 1996 --- around my birthday. + Among the other things the paper states a number of theorems on computational bounds of generic ORAMs. + + Although the paper analyzes generic ORAMs, 20 years ago people were more concerned about CPU working with RAM access patterns. + The cloud did not really exist at that time. + + So the one purpose of ORAM is to hide the access pattern. + We will come to more formal security definition in a couple of slides. + } \end{frame} + + \begin{frame}{Theoretical bounds} + + \begin{block}{Theorems} + Let $\RAM(m)$ denote a \RAM\ with $m$ memory locations and access to a random oracle. + Then $t$ steps of an arbitrary $\RAM(m)$ can be simulated by + \begin{itemize} + \item + at most $\BigO{t \cdot (\log_2 t)^3}$ steps of an oblivious $\RAM(m \cdot (\log_2 m)^2 )$ + \item + at least $\max \{ m, (t-1) \cdot \log_2 m \}$ steps of an oblivious $\RAM(m)$ + \end{itemize} + + \cite{Goldreich:1996:SPS:233551.233553} % chktex 2 + + \end{block} + + \note{ + This are some theorems stated and proved in the paper. + I am not going to do proofs here. + The idea is that these are theoretical bounds for generic ORAMs. + Designing our owm ORAM the aim is to come as close as possible to lower bounds. + } + \end{frame} \ No newline at end of file diff --git a/sections/overview-of-other-orams.tex b/sections/overview-of-other-orams.tex index 87c38907eafd1110e7cc376bac8d39dd01a0fcf6..16f11d5634db7673d09631167ffa98db6789111d 100644 --- a/sections/overview-of-other-orams.tex +++ b/sections/overview-of-other-orams.tex @@ -1 +1,37 @@ \section{Overview of other ORAMs} + + \begin{frame}{ORAMs Experimental Evaluation} + + \begin{tabular}{ l c c c c } + + \toprule% + + $ORAM$ & Computation & Communication & Server & Client \\ + + \midrule% + + Basic-SR & $N \log N$ & $N \log N$ & $N$ & $1$ \\ + IBS-SR & $N$ & $\sqrt{N}$ & $N$ & $\sqrt{N}$ \\ + 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}}$} + + \end{tabular} + + Table 2 from~\cite{Chang:2016:ORD:2994509.2994528}. + Worst-case scenarios shown. + + \note{ + Chang and others published a great paper a year ago doing accurate comparison of known ORAM systems. + They analyzed space and time complexity of the systems. + The result is on the table. + + Computational overhead is a composite of communication, encryption/decryption and client running overheads. + Communication overhead measures how much information is transmitted during a round of read and write. + Server and client respectively show how much space is used by an ORAM on the server and on the client. + + I am not going to elaborate on all ORAMs, but it is clear that one of them wins in every category. + This is why we have chosen it for our secure cloud. + } + \end{frame} diff --git a/static/papers/orams-comparison.pdf b/static/papers/orams-comparison.pdf new file mode 100644 index 0000000000000000000000000000000000000000..38462f6852ea830a07ddf04d21bd92efd8476569 Binary files /dev/null and b/static/papers/orams-comparison.pdf differ