Top Banner
Security Forum Workshop April, 2011 Programming on Programming on Encrypted Data D B h K thl Fi h Dan Boneh, Kathleen Fisher, John Mitchell
23

Programming on Encrypted Data - Stanford Computer · PDF fileBased on Haskell, ... ThesequenceoperatorThe sequence operator “; ... programming on encrypted data Leverage

Mar 06, 2018

Download

Documents

buitram
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Programming on Encrypted Data - Stanford Computer  · PDF fileBased on Haskell, ... ThesequenceoperatorThe sequence operator “; ... programming on encrypted data Leverage

Security Forum Workshop April, 2011

Programming onProgramming on Encrypted Data

D B h K thl Fi hDan Boneh, Kathleen Fisher, John Mitchell

Page 2: Programming on Encrypted Data - Stanford Computer  · PDF fileBased on Haskell, ... ThesequenceoperatorThe sequence operator “; ... programming on encrypted data Leverage

ChallengeChallenge

Cryptography gives us great toolsCryptography gives us great tools Secure function evaluation Secret sharingg Homomorphic encryption

How do we make these tools useful to a wider community of software developers?

Page 3: Programming on Encrypted Data - Stanford Computer  · PDF fileBased on Haskell, ... ThesequenceoperatorThe sequence operator “; ... programming on encrypted data Leverage

Clo d comp tingCloud computing

Computeservers? servers

Cloud Storage

Application

?

servers

Page 4: Programming on Encrypted Data - Stanford Computer  · PDF fileBased on Haskell, ... ThesequenceoperatorThe sequence operator “; ... programming on encrypted data Leverage

Specific challengeSpecific challenge

Can we send computation to the cloud,Can we send computation to the cloud, without revealing program or data?

Page 5: Programming on Encrypted Data - Stanford Computer  · PDF fileBased on Haskell, ... ThesequenceoperatorThe sequence operator “; ... programming on encrypted data Leverage

Specific challengeSpecific challenge

Can we send computation to the cloud,Can we send computation to the cloud, without revealing program or data?

Helpful ideas Trusted local computation + untrusted cloudp

Trusted preprocessing Trusted post-processing

S ffi t l th bl f d t Suffices to solve the problem for data Program can be “Universal Turing Machine”

= Interpreter that receives program, input(but consider other programs as examples too )

Page 6: Programming on Encrypted Data - Stanford Computer  · PDF fileBased on Haskell, ... ThesequenceoperatorThe sequence operator “; ... programming on encrypted data Leverage

Homomo phic enc ptionHomomorphic encryption

Computeenc(x)x

Compute function f on encrypted

dataf(x) enc(f(x)) dataf(x) enc(f(x))

Page 7: Programming on Encrypted Data - Stanford Computer  · PDF fileBased on Haskell, ... ThesequenceoperatorThe sequence operator “; ... programming on encrypted data Leverage

Sec et sha ingSecret sharingCompute shareshares(x) Compute share

of f(x) from share of x

shares(x)

x

f(x)

Compute share of f(x) from share of x

f(x)

shares(f(x))Compute share

of f(x) from shares(f(x)) ( )share of x

For n,k-secret sharing, secure if <k servers collude

Page 8: Programming on Encrypted Data - Stanford Computer  · PDF fileBased on Haskell, ... ThesequenceoperatorThe sequence operator “; ... programming on encrypted data Leverage

Basic software approachBasic software approach

Develop Domain Specific Language (DSL)Develop Domain Specific Language (DSL) Based on Haskell, pure functional language

Support code that allows later crypto choiceSupport code that allows later crypto choice Homomorphic encryption Secret sharing

Key technical concept that gets us going Haskell monads Homomorphic encryption, secret sharing are both

instances of monads, with similar operations

Page 9: Programming on Encrypted Data - Stanford Computer  · PDF fileBased on Haskell, ... ThesequenceoperatorThe sequence operator “; ... programming on encrypted data Leverage

VisionVision Secret sharing monad (library)

on “cloud” platformsDomain-specific

language embeddedin Haskell

Replicated Haskell runtime

Debugging Homomorphicgg gEnvironment (no crypto)

Standard Haskell

pencryption monad

(library)

Optimized custom

Write Haskell code once using generic monad

Standard Haskell runtime

Optimized custom crypto runtime

Write Haskell code once using generic monadExecute code later on chosen platform

Page 10: Programming on Encrypted Data - Stanford Computer  · PDF fileBased on Haskell, ... ThesequenceoperatorThe sequence operator “; ... programming on encrypted data Leverage

HaskellHaskell

Haskell is a programming language that isHaskell is a programming language that is Functional: general-purpose, strongly typed, higher-

order, type inference, interactive and compiled use Lazy: purely functional core, extensible w/ effects

Designed by committee in 80’s and 90’s to f h ff l lunify research efforts in lazy languages.

Haskell 1.0 in 1990, Haskell ‘98, Haskell ongoing

Page 11: Programming on Encrypted Data - Stanford Computer  · PDF fileBased on Haskell, ... ThesequenceoperatorThe sequence operator “; ... programming on encrypted data Leverage

Higher-Order FunctionsHigher-Order FunctionsFunctions that take other functions as arguments or return a function as a resultCommon Examples: Map: applies argument function to each element in a collection Reduce: takes a collection, an initial value, and a function, and

combines the elements in the collection according to function.

Google uses Map/Reduce to parallelize and distribute i d t i t k

list = [1,2,3]r = foldl (\accumulator i -> i + accumulator) 0 list

massive data processing tasks [Dean, Ghemawat, OSDI 2004](Haskell had these functional programming concepts long before Google)

Page 12: Programming on Encrypted Data - Stanford Computer  · PDF fileBased on Haskell, ... ThesequenceoperatorThe sequence operator “; ... programming on encrypted data Leverage

MonadsMonads

General concept from category theoryGeneral concept from category theory Adopted in Haskell for I/O, side effects, …

A monad consists of:A monad consists of: A type constructor M A function bind :: M a -> ( a -> M b) -> M b A function return :: a -> M a

Plus: Laws about how these operations interact

Page 13: Programming on Encrypted Data - Stanford Computer  · PDF fileBased on Haskell, ... ThesequenceoperatorThe sequence operator “; ... programming on encrypted data Leverage

Monad ExamplesMonad ExamplesError handling M(A) = A {error}

dd l “ l ” Add a special “error value” to a type Define sequencing operator “;” to propagate error

Information-flow tracking M(A) = A Labels Add information flow label to each value Define “;” to check and propagate labels

Homomorphic encryption M(A) = HomEnc(A) Represent values by encrypted values Define “;” to homomorphically apply next function

Secret sharing M(A) = Shares(A) Represent value by list of shares Define “;” to apply next function to shares

Can write code to compute on A, but run it using M(A)

Page 14: Programming on Encrypted Data - Stanford Computer  · PDF fileBased on Haskell, ... ThesequenceoperatorThe sequence operator “; ... programming on encrypted data Leverage

Monad “do” and “bind” notationMonad do and bind notation

The special notationThe special notation

is “syntactic” sugar for the ordinary expressiondo {v1 <- e1; e2}

is syntactic sugar for the ordinary expression

where >>= (called bind) sequences actionse1 >>= \v1 -> e2

where >> (called bind) sequences actions

The value returned by the first action needs to be

(>>=) :: M a -> (a -> M b) -> M b

The value returned by the first action needs to be passed to the second; hence the 2nd arg to >>=is a function (often an explicit lambda). ( p )

Page 15: Programming on Encrypted Data - Stanford Computer  · PDF fileBased on Haskell, ... ThesequenceoperatorThe sequence operator “; ... programming on encrypted data Leverage

Monad feature of HaskellMonad feature of Haskell

Define monad for each type of encrypted datayp yp Secret sharing, executed on independent platforms Homomorphic encryption

“Identity” monad with no encryption (for testing) Identity monad with no encryption (for testing) Conventional imperative notation Haskell code for computing over monadic values looks

like standard imperative codeInterpreted using operations of monad The sequence operator “;” of the monad composes The sequence operator ; of the monad composes

functions on encrypted data

Page 16: Programming on Encrypted Data - Stanford Computer  · PDF fileBased on Haskell, ... ThesequenceoperatorThe sequence operator “; ... programming on encrypted data Leverage

Homomorphic encryption monadHomomorphic encryption monadHomomorphic encryption providesp yp p For all encryptable types S and T, a map

(S T) Encrypt(S,k) Encrypt(T,k)that allows a function on public data to be applied p ppto encrypted data, producing encrypted results

Haskell monadic programming requires For all types S and T a map For all types S and T, a map

Encrypt(S,k) (S Encrypt(T,k)) Encrypt(T,k)that is used as the “;” for programming

MismatchMismatch Resolved using circular-secure encryption (next slide)

Page 17: Programming on Encrypted Data - Stanford Computer  · PDF fileBased on Haskell, ... ThesequenceoperatorThe sequence operator “; ... programming on encrypted data Leverage

Circular-secure encryptionCircular-secure encryptionProxy re-encryptiony yp

Encrypt(S,k1) Encrypt(Encrypt(S,k1),k2) Encrypt(S,k2)

Circular-secure proxy re-encryptionCircular secure proxy re encryptionEncrypt(Encrypt(S,k),k) Encrypt(S,k)

Homomorphic encryption providesEncrypt(S k) (S Encrypt(T k))Encrypt(S,k) (S Encrypt(T,k))

Encrypt(Encrypt(T,k),k)Monad condition satisfied

l f h h h Compose result from homomorphism property with map associated with proxy re-encryption

Page 18: Programming on Encrypted Data - Stanford Computer  · PDF fileBased on Haskell, ... ThesequenceoperatorThe sequence operator “; ... programming on encrypted data Leverage

Additional technical issueAdditional technical issueHomomorphic encryption providesp yp p For all encryptable types S and T, …

Haskell monadic programming requires For all types S and T, For all types S and T, …

Problem Haskell assumes every type can be monadic

Encryption applies only to numbers pairs Encryption applies only to numbers, pairs, … Homomorphism defined for functions representable by

circuits How do we resolve this without complicating the How do we resolve this without complicating the

design and use of the programming language?

Page 19: Programming on Encrypted Data - Stanford Computer  · PDF fileBased on Haskell, ... ThesequenceoperatorThe sequence operator “; ... programming on encrypted data Leverage

Some building blocksSome building blocksInformation-flow analysisy Functions on encrypted data must not leak confidential

values through control flow, i.e., language must prevent implicit information flowTh h b id bl h t ti d There has been considerable research on static and dynamic information flow analysis

Language-based computational complexityF i d d i d i Functions on encrypted data must terminate and in some cases must have poly-size circuits

S. Cook and students have produced language-based characterizations of complexity classes that yield typecharacterizations of complexity classes that yield type systems characterizing polynomial time

Page 20: Programming on Encrypted Data - Stanford Computer  · PDF fileBased on Haskell, ... ThesequenceoperatorThe sequence operator “; ... programming on encrypted data Leverage

Current activitiesCurrent activities

Define core expression languageDefine core expression language Two types of integers: secret, public Operations: add, multiply, if-then-else, …p , p y, ,

Provide two semantics Trusted sequential execution Distributed execution on shares of secrets

State and prove basic results Compare sequential and distributed execution

Page 21: Programming on Encrypted Data - Stanford Computer  · PDF fileBased on Haskell, ... ThesequenceoperatorThe sequence operator “; ... programming on encrypted data Leverage

Basic theorems (in progress)Basic theorems (in progress)

Expressivenessp ess e ess For any computable function f: Int Int, with

computable time bound t, there is a program P : PInt × SInt SInt with P(t(|x|) x) f(x)P : PInt × SInt SInt with P(t(|x|), x) = f(x)

Secrecy At each step in any distributed computation on At each step in any distributed computation on

shares of a secret input, each node has learned only shares of the secret intermediate results computed by the corresponding centralizedcomputed by the corresponding centralized trusted computation

Page 22: Programming on Encrypted Data - Stanford Computer  · PDF fileBased on Haskell, ... ThesequenceoperatorThe sequence operator “; ... programming on encrypted data Leverage

SummarySummary

Exciting crypto possibilitiesg yp p Homomorphic encryption Secret sharing

Current work on languages tools forCurrent work on languages, tools for programming on encrypted dataLeverageg Functional programming, monad concept Program semantics, equivalence proofs

Related work on secure multiparty computation crypto Related work on secure multiparty computation, crypto programming languages, information flow, …

Page 23: Programming on Encrypted Data - Stanford Computer  · PDF fileBased on Haskell, ... ThesequenceoperatorThe sequence operator “; ... programming on encrypted data Leverage