Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
PathORAM-Talk
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Iterations
Wiki
Requirements
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Locked files
Build
Pipelines
Jobs
Pipeline schedules
Test cases
Artifacts
Deploy
Releases
Container registry
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Code review analytics
Issue analytics
Insights
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
GitLab community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
This is an archived project. Repository and other project resources are read-only.
Show more breadcrumbs
Boston University PhD
PathORAM-Talk
Commits
afe128dd
There was a problem fetching the pipeline summary.
Verified
Commit
afe128dd
authored
Nov 27, 2017
by
Dmytro Bogatov
Browse files
Options
Downloads
Patches
Plain Diff
Refactor examples.
parent
504f23ce
Branches
Branches containing commit
No related tags found
Loading
Pipeline
#
Changes
2
Pipelines
1
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
example/definitions.tex
+60
-0
60 additions, 0 deletions
example/definitions.tex
sections/example.tex
+195
-231
195 additions, 231 deletions
sections/example.tex
with
255 additions
and
231 deletions
example/definitions.tex
+
60
−
0
View file @
afe128dd
...
...
@@ -12,3 +12,63 @@
\newif\ifnodetwonew
%
\newif\ifnodethreenew
%
\newif\ifnodefournew
%
%
% 1 - caption
%
\newcommand
%
{
\drawTree
}
[1]
{
\begin{figure}
\centering
\input
{
example/tree
}
\caption
{
#1
}
\end{figure}
}
%
% 1- map - default initial
% 2 - caption
%
\newcommand
%
{
\drawMap
}
[2]
[initial]
{
\begin{figure}
\centering
\input
{
example/#1-map
}
\caption
{
#2
}
\end{figure}
}
%
% 1 - frame name
% 2 - settings
% 3 - upper block
% 4 - lower block
% 5 - notes
%
\newcommand
%
{
\exampleFrame
}
[5]
{
\begin{frame}
{
#1
}
#2
#3
\vspace
{
-12pt
}
#4
\note
{
#5
}
\end{frame}
}
This diff is collapsed.
Click to expand it.
sections/example.tex
+
195
−
231
View file @
afe128dd
...
...
@@ -4,73 +4,46 @@
\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
}
\exampleFrame
%
{
Initial state
}
{}
{
\drawTree
{
Initial underlying tree
}}
{
\drawMap
{
Initial position map
}}
{
Here we see the initial state before we access an element.
Buckets are filled greedily from bottom to the top.
Leaves are numbered left to right.
Each number in the buckets corresponds to encrypted data block and each empty set symbol corresponds to dummy data block.
Position table shows the mapping from data blocks to leaves.
}
\exampleFrame
%
{
\textsc
{
Access
}$
(
5
)
$}
{
\selectedtrue
}
{
\drawTree
{
Select block with ID 5
}}
{
\drawMap
{
Find leaf for block with ID 5
}}
{
Let us access the data block with ID 5.
We first lookup position map to see, which leaf it corresponds to.
We see we need a path to the leaf number 6.
}
\exampleFrame
%
{
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
}
}
{
\drawTree
{
Select path
$
\mathcal
{
P
}
(
6
)
$}}
{
\drawMap
{
Find leaf for block with ID 5
}}
{
We read the whole path from the root to the leaf number 6.
}
\exampleFrame
%
{
Remap block
}
{}
{
\begin{block}
{
Stash
}
\begin{gather*}
...
...
@@ -80,8 +53,11 @@
S =
\{
10, 1, 2,
\textcolor
{
blue
}{
5
^
\prime
}
, 8, 7, 13, 15
\}
\end{gather*}
\end{block}
Re-encrypt all blocks in the stash.
\end{block}
}
{
\begin{block}
{
Remap
}
Assign random leaf
...
...
@@ -91,25 +67,29 @@
\]
\end{block}
\end{frame}
\begin{frame}
{
Write path back
}
}
{
Now all those data blocks appear in stash.
We now for a fact that our block of interest is there as well.
We extract it to data variable.
We change block's data and re-encrypt all data blocks.
We then put it back to stash.
It is important that we also re-map the block.
Let say we assign it new leaf --- number 3.
Now we need to write path back.
}
\exampleFrame
%
{
Write path back
}
{
\selectedtrue
%
\pathreadtrue
%
\nodeonenewtrue
%
\begin{figure}
\centering
\input
{
example/tree
}
\caption
{
Write bucket on level
$
L
=
3
$}
\end{figure}
\vspace
{
-12pt
}
}
{
\drawTree
{
Write bucket on level
$
L
=
3
$}}
{
\begin{block}
{
Stash
}
\begin{gather*}
...
...
@@ -118,26 +98,23 @@
\end{gather*}
\end{block}
\end{frame}
\begin{frame}
{
Write path back
}
}
{
We start filling buckets with data blocks greedily from leaves.
We pick those
$
Z
=
3
$
blocks from stash which can be placed on the level in path not breaking invariant.
If fewer than
$
Z
$
blocks can be placed, we pad it with dummy blocks.
}
\exampleFrame
%
{
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
}
}
{
\drawTree
{
Write bucket on level
$
L
-
1
=
2
$}}
{
\begin{block}
{
Stash
}
\begin{gather*}
...
...
@@ -146,27 +123,22 @@
\end{gather*}
\end{block}
\end{frame}
\begin{frame}
{
Write path back
}
}
{
We repeat the process for the next level.
}
\exampleFrame
%
{
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
}
}
{
\drawTree
{
Write bucket on level
$
L
-
2
=
1
$}}
{
\begin{block}
{
Stash
}
\begin{gather*}
...
...
@@ -175,28 +147,23 @@
\end{gather*}
\end{block}
\end{frame}
\begin{frame}
{
Write path back
}
}
{
Now, only one data block can be placed not breaking the invariant, so we pad.
}
\exampleFrame
%
{
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
}
}
{
\drawTree
{
Write bucket on level
$
L
-
3
=
0
$
--- root
}}
{
\begin{block}
{
Stash
}
\begin{gather*}
...
...
@@ -205,33 +172,30 @@
\end{gather*}
\end{block}
\end{frame}
\begin{frame}
{
Final state
}
}
{
Finally, we put last block in the root, because it is the only place along the path where
$
\mathcal
{
P
}
(
6
)
$
and
$
\mathcal
{
P
}
(
3
)
$
intersect.
}
\exampleFrame
%
{
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}
}
{
\drawTree
{
Tree after the execution
}}
{
\drawMap
[final]
{
Position map after the execution
}}
{
That is how our tree looks like after the operation.
Please note that the adversary only sees that we have read whole path and written whole path.
She is not able to see which data block was modified because we re-encrypted everything.
Keep in mind that it is possible that stash is not empty at the end of operation.
It is unlikely to happen.
The stash is emptied during the next accesses.
}
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment