Skip to content

Commit

Permalink
Add fourth easy piece to intro
Browse files Browse the repository at this point in the history
  • Loading branch information
tideofwords committed Sep 5, 2024
1 parent db63402 commit fe32c1f
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 4 deletions.
4 changes: 2 additions & 2 deletions easy.typ
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@
}

#show: evan.with(
title: "Three Easy Pieces in Programmable Cryptography",
long-title: [Three Easy Pieces in \ Programmable \ Cryptography],
title: "Four Easy Pieces in Programmable Cryptography",
long-title: [Four Easy Pieces in \ Programmable \ Cryptography],
author: "0xPARC",
date: datetime.today(),
)
Expand Down
2 changes: 1 addition & 1 deletion src/bigbook-frontmatter.typ
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
= About this novel

This novel _Notes on Programmable Cryptography_ is a sequel
to the novella _Three Easy Pieces in Programmable Cryptography_,
to the novella Four Easy Pieces in Programmable Cryptography_,
from the #link("https://0xparc.org", "0xPARC Foundation").
Whereas the novella was short enough to print and give to friends
as a souvenir to read on a plane ride,
Expand Down
26 changes: 25 additions & 1 deletion src/intro.typ
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ statements of the form:
once the statement is encoded as a system of equations. One such statement would be "I know $M$ such that $sha(M) = Y$."

SNARKS are an active area of research, and many different SNARKs are known.
Our work focuses on a particular example, PLONK (@plonk).
We will focus on a particular example, PLONK (@plonk).

== FHE: Fully homomorphic encryption

Expand All @@ -106,6 +106,30 @@ another language and give you $Enc(y)$, where $y$ is the translation of $x$.
You can then decrypt and obtain $y$, knowing that the server cannot extract
anything meaningful from $Enc(x)$ without your secret key.

== ORAM: Oblivious RAM

You want to perform a private computation on a large database.
The database is so large that you can't store it yourself --
and you don't trust the server it's stored on.

First off, you'll encrypt the data, so the server can't read it.
But the server still has an attack:
they can study your #emph[access patterns].
For example, they can see which records you access most frequently,
or which records you access at the same time as other records.
In many applications this is enough for the server to learn
sensitive information.

Oblivious RAM protects against exactly this sort of attack.
Oblivious RAM is an algorithm you use to "scramble" your
memory access requests.
When you feed your request into the ORAM algorithm,
the ORAM algorithm sends some scrambled
read and write requests to the server.
Only one of the scrambled requests is the request you are interested in;
the others keep the server from learning
which request you care about.

= Programmable Cryptography in the World

In the past decade, there has been a surprisingly high amount of theoretical work but also
Expand Down

0 comments on commit fe32c1f

Please sign in to comment.