diff --git a/easy.typ b/easy.typ index 1fe9d73..a8ef558 100644 --- a/easy.typ +++ b/easy.typ @@ -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(), ) diff --git a/src/bigbook-frontmatter.typ b/src/bigbook-frontmatter.typ index bf1875d..8063eac 100644 --- a/src/bigbook-frontmatter.typ +++ b/src/bigbook-frontmatter.typ @@ -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, diff --git a/src/intro.typ b/src/intro.typ index c8e538b..e6743ed 100644 --- a/src/intro.typ +++ b/src/intro.typ @@ -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 @@ -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