Indistinguishability Obfuscation for all Circuits

48
Indistinguishabilit y Obfuscation for all Circuits Sanjam Garg, Craig Gentry*, Shai Halevi* , Mariana Raykova, Amit Sahai, Brent Waters Faces in Modern Cryptography, Oct-2013 A Celebration in Honor of Goldwasser and Micali’s Turing Award * Supported by IARPA contract number D11PC20202

description

Indistinguishability Obfuscation for all Circuits. Sanjam Garg , Craig Gentry*, Shai Halevi* , Mariana Raykova , Amit Sahai , Brent Waters Faces in Modern Cryptography, Oct-2013 A Celebration in Honor of Goldwasser and Micali’s Turing Award. - PowerPoint PPT Presentation

Transcript of Indistinguishability Obfuscation for all Circuits

Page 1: Indistinguishability  Obfuscation for all Circuits

Indistinguishability Obfuscation for all CircuitsSanjam Garg, Craig Gentry*, Shai Halevi*,Mariana Raykova, Amit Sahai, Brent Waters

Faces in Modern Cryptography, Oct-2013A Celebration in Honor of Goldwasser and Micali’s Turing Award

* Supported by IARPA contract number D11PC20202

Page 2: Indistinguishability  Obfuscation for all Circuits

Indistinguishability Obfuscation 2

Code ObfuscationMake programs “unintelligible” while

maintaining their functionality◦Example from Wikipedia:

Why do it?How to define “unintelligible”?Can we achieve it?

10/4/2013

@P=split//,".URRUU\c8R";@d=split//,"\nrekcah xinU / lreP rehtona tsuJ";sub p{ @p{"r$p","u$p"}=(P,P);pipe"r$p","u$p";++$p;($q*=2)+=$f=!fork;map{$P=$P[$f^ord ($p{$_})&6];$p{$_}=/ ^$P/ix?$P:close$_}keys%p}p;p;p;p;p;map{$p{$_}=~/^[P.]/&& close$_}%p;wait until$?;map{/^r/&&<$_>}%p;$_=$d[$q];sleep rand(2)if/\S/;print

Page 3: Indistinguishability  Obfuscation for all Circuits

Indistinguishability Obfuscation 3

Why Obfuscation?Hiding secrets in software

◦AES encryption10/4/2013

strutpatent.com

Plaintext

Ciphertext

Page 4: Indistinguishability  Obfuscation for all Circuits

Indistinguishability Obfuscation 4

Why Obfuscation?Hiding secrets in software

◦AES encryption Public-key encryption10/4/2013

Plaintext

Ciphertext

@P=split//,".URRUU\c8R";@d=split//,"\nrekcah xinU / lreP rehtona tsuJ";sub p{ @p{"r$p","u$p"}=(P,P);pipe"r$p","u$p";++$p;($q*=2)+=$f=!fork;map{$P=$P[$f^ord ($p{$_})&6];$p{$_}=/ ^$P/ix?$P:close$_}keys%p}p;p;p;p;p;map{$p{$_}=~/^[P.]/&& close$_}%p;wait until$?;map{/^r/&&<$_>}%p;$_=$d[$q];sleep rand(2)if/\S/;print

Page 5: Indistinguishability  Obfuscation for all Circuits

Indistinguishability Obfuscation 5

Why Obfuscation?Hiding secrets in software

◦Distributing software patches10/4/2013

Vulnerableprogram

Patchedprogram

1,2d0 < The Way that can be told of is not the eternal Way; < The name that can be named is not the eternal name4c2,3 < The Named is the mother of all things. --- > The named is the mother of all things. 11a11,13 > They both may be called deep and profound. > Deeper and more profound, > The door of all subtleties!

Page 6: Indistinguishability  Obfuscation for all Circuits

Indistinguishability Obfuscation 6

Why Obfuscation?Hiding secrets in software

◦Distributing software patcheswhile hiding vulnerability

10/4/2013

Vulnerableprogram

Patchedprogram

@P=split//,".URRUU\c8R";@d=split//,"\nrekcah xinU / lreP rehtona tsuJ";sub p{ @p{"r$p","u$p"}=(P,P);pipe"r$p","u$p";++$p;($q*=2)+=$f=!fork;map{$P=$P[$f^ord ($p{$_})&6];$p{$_}=/ ^$P/ix?$P:close$_}keys%p}p;p;p;p;p;map{$p{$_}=~/^[P.]/&& close$_}%p;wait until$?;map{/^r/&&<$_>}%p;$_=$d[$q];sleep rand(2)if/\S/;print

Page 7: Indistinguishability  Obfuscation for all Circuits

Indistinguishability Obfuscation 7

Why Obfuscation?Hiding secrets in software

◦Uploading my expertise to the web10/4/2013

Nextmove

http://www.arco-iris.com/George/images/game_of_go.jpg

Game of Go

Page 8: Indistinguishability  Obfuscation for all Circuits

Indistinguishability Obfuscation 8

Why Obfuscation?Hiding secrets in software

◦Uploading my expertise to the webwithout revealing my strategies

10/4/2013

Nextmove

@P=split//,".URRUU\c8R";@d=split//,"\nrekcah xinU / lreP rehtona tsuJ";sub p{ @p{"r$p","u$p"}=(P,P);pipe"r$p","u$p";++$p;($q*=2)+=$f=!fork;map{$P=$P[$f^ord ($p{$_})&6];$p{$_}=/ ^$P/ix?$P:close$_}keys%p}p;p;p;p;p;map{$p{$_}=~/^[P.]/&& close$_}%p;wait until$?;map{/^r/&&<$_>}%p;$_=$d[$q];sleep rand(2)if/\S/;print

Game of Go

Page 9: Indistinguishability  Obfuscation for all Circuits

Indistinguishability Obfuscation 9

Contemporary Obfuscation

Used fairly widely in practiceMostly as an art form

◦Some rules-of-thumb, sporadic tool support◦Relies on human ingenuity, security-via-obscurity◦“At best, obfuscation merely makes it time-consuming,

but not impossible, to reverse engineer a program” (from Wikipedia)

Can it be done the Goldwasser-Micali way?◦Definitions, constructions, concrete assumptions◦Question addressed 1st by Barak et al. in 2001

[B+01]

10/4/2013

Page 10: Indistinguishability  Obfuscation for all Circuits

Indistinguishability Obfuscation 10

Defining ObfuscationAn efficient public procedure O(*)

◦Everything is known about it◦Except the random coins that it uses

Takes as input a program ◦E.g., encoded as a circuit

Produce as output another program ◦ computes the same function as ◦ at most polynomially larger than ◦ is “unintelligible”

Okay, defining this is tricky10/4/2013

Page 11: Indistinguishability  Obfuscation for all Circuits

Indistinguishability Obfuscation 11

What’s “Unintelligible”?What we want: cannot do much more

with than running it on various inputs◦At least: If depends on some secrets that

are not readily apparent in its I/O, then does not reveal these secrets

[B+01] show that even this is impossible:◦Thm: If PRFs exist, then there exists PRF

families , for which it is possible to recover from any circuit that computes . These PRFs are unobfuscatable

10/4/2013

Page 12: Indistinguishability  Obfuscation for all Circuits

Indistinguishability Obfuscation 12

What’s “Unintelligible”?Okay, some function are bad, but

can we get O() that does “as well as possible” on every function?

[B+01] suggested the weaker notion of “indistinguishability obfuscation” (iO)◦Gives the “best-possible” guarantee

[GR07]◦It turns out to suffice for many

applications (examples in [GGH+13, SW13,…])

10/4/2013

Page 13: Indistinguishability  Obfuscation for all Circuits

Indistinguishability Obfuscation 13

Indistinguishability ObfuscationDef: If compute the same function

(and ) then ◦Indistinguishable even if you know

Note: Inefficient iO is always possible◦ = lexicographically 1st circuit computing

the same function as

(canonical form)

◦Canonicalization is inefficient (unless P=NP)10/4/2013

Page 14: Indistinguishability  Obfuscation for all Circuits

Best-Possible Obfuscation

Some circuit

C

Best Obfuscation

Indist. Obfuscation

x

C(x)

Some circuit

C

PaddingIndist.

Obfuscation

x

C(x)

≈Computationally Indistinguishabl

e

Page 15: Indistinguishability  Obfuscation for all Circuits

Many Applications of iOAES public key encryption [GGH+13, SW13]

Witness encryption: Encrypt so only someone with proof of Riemann Hypothesis can decrypt [GGSW13]

Functional encryption: Noninteractive access control [GGH+13], Dec(Key, Enc())F()

Many more (all of them this year)…One notable thing iO doesn’t give us (yet):

Homomorphic Encryption (HE)

Page 16: Indistinguishability  Obfuscation for all Circuits

Indistinguishability Obfuscation 16

Beyond iOFor very few functions, we know

how to achieve stronger notions than iO◦“Virtual Black Box” (VBB)

Point-functions / cryptographic locks

◦[C97, CMR98, LPS04, W05] ◦Many extensions, generalizations

[DS05, AW07, CD08, BC10, HMLS10, HRSV11, BR13]

10/4/2013

Page 17: Indistinguishability  Obfuscation for all Circuits

Indistinguishability Obfuscation 17

Aside: Obfuscation vs. HE

10/4/2013

F Obfuscation F

F Encryption F

x

+ F(x)Result in the clear

x

+ F(x)x or Result encrypted

Page 18: Indistinguishability  Obfuscation for all Circuits

Indistinguishability Obfuscation 18

OUR CONSTRUCTION

10/4/2013

Page 19: Indistinguishability  Obfuscation for all Circuits

Indistinguishability Obfuscation 19

Obfuscating Arbitrary Circuits

A two-step construction1. Obfuscating “shallow circuits” (NC1)

This is where the meat is Using multilinear maps Security under a new (ad-hoc) assumption

2. Bootstrapping to get all circuits Using homomorphic encryption with NC1

decryption Very simple, provable, transformation

10/4/2013

Page 20: Indistinguishability  Obfuscation for all Circuits

Indistinguishability Obfuscation 20

NC1 ObfuscationP Obfuscation

10/4/2013

FHomomorph

ic Encryption

F

x

+ F(x)Encrypted-result + eval transcript

NC1 Circuit If describes homomorphic evaluation that takes x,F to , then use sk to decrypt

F(x)CondDec

Page 21: Indistinguishability  Obfuscation for all Circuits

Indistinguishability Obfuscation 21

NC1 ObfuscationP Obfuscation

10/4/2013

x

+ F(x)Encrypted-result + eval transcript

@P=split//,".URRUU\c8R";@d=split//,"\nrekcah xinU / lreP rehtona tsuJ";sub p{ @p{"r$p“…

F(x)

Obfuscateonly this part

NC1 Circuit

Output of P obfuscator

FHomomorph

ic Encryption

F

CondDec

Page 22: Indistinguishability  Obfuscation for all Circuits

Conditional Decryption with iOWe have iO, not “perfect”

obfuscation

But we can adapt the CondDec approach◦We use two HE secret keys

Page 23: Indistinguishability  Obfuscation for all Circuits

iO for CondDec → iO for All Circuits

CondDecF,SK0(·, …, ·)

Indist. Obfuscation

π, x, and two ciphertexts c0 = EncPK0(F(x)) and c1 = EncPK1(F(x))

F(x) if π verifies

≈ CondDecF,SK1(·, …, ·)

Indist. Obfuscation

π, xi’s, and two ciphertexts c0 = EncPK0(F(x)) and c1 = EncPK1(F(x))

F(x) if π verifies

Page 24: Indistinguishability  Obfuscation for all Circuits

Analysis of Two-Key Technique1st program has secret SK0 inside (but not

SK1).2nd program has secret SK1 inside (but not

SK0).But programs are indistinguishableSo, neither program “leaks” either secret.

Two-key trick is very handy in iO context.Similar to Naor-Yung ’90 technique to get

encryption with chosen ciphertext security

Page 25: Indistinguishability  Obfuscation for all Circuits

Indistinguishability Obfuscation 25

NC1 OBFUSCATION

10/4/2013

Page 26: Indistinguishability  Obfuscation for all Circuits

Indistinguishability Obfuscation 26

Outline of Our Construction

Describe Circuits as Branching Programs (BPs) using Barrington’s theorem [B86]

Randomized BPs (RBPs) a-la-Kilian [K88]

Encode RBPs “in the exponent” usingmultilinear maps [GGH13,CLT13]

Modifications to defeat attacks◦Multiplicative bundling against ”partial

evaluation” and “mixed input” attacks◦Defenses against “DDH attacks”, “rank attacks”

10/4/2013

Page 27: Indistinguishability  Obfuscation for all Circuits

Indistinguishability Obfuscation 27

(Oblivious) Branching ProgramsA specific way of describing a

functionLength- BP with -bit input is a

sequence

◦ are indexes, ’s are matricesInput chooses matrices

◦Compute the product ◦ if , else

10/4/2013

Page 28: Indistinguishability  Obfuscation for all Circuits

(Oblivious) Branching ProgramsThis length-9 BP has 4-bit inputs

A2,0A1,0 A3,0 A5,0A4,0 A6,0 A7,0 A8,0 A9,0

A2,1A1,1 A3,1 A5,1A4,1 A6,1 A7,1 A8,1 A9,1

0

Page 29: Indistinguishability  Obfuscation for all Circuits

(Oblivious) Branching ProgramsThis length-9 BP has 4-bit inputs

A2,0A1,0 A3,0 A5,0A4,0 A6,0 A7,0 A8,0 A9,0

A2,1A1,1 A3,1 A5,1A4,1 A6,1 A7,1 A8,1 A9,1

0 1

Page 30: Indistinguishability  Obfuscation for all Circuits

(Oblivious) Branching ProgramsThis length-9 BP has 4-bit inputs

Multiply the chosen 9 matrices together◦If product is output 1. Otherwise

output 0.

A2,0A1,0 A3,0 A5,0A4,0 A6,0 A7,0 A8,0 A9,0

A2,1A1,1 A3,1 A5,1A4,1 A6,1 A7,1 A8,1 A9,1

0 1 1 0

Page 31: Indistinguishability  Obfuscation for all Circuits

Barrington’s Theorem [B86]

computable by depth- circuit computable by a BP of length ◦With constant-dimension matrices

Corollary: every function in NC1 has a polynomial-length BP◦Recall: NC1 = O(log n)-depth circuits

Page 32: Indistinguishability  Obfuscation for all Circuits

Oblivious BP Evaluation [K88]Alice has . Bob has . They want Bob to get

◦ They start with a BP= for Randomized BP Generation

◦ Alice chooses random matrices , set ◦ RBP=

Matrix Collection◦ Alice sends matrices for her input ◦ Bob gets matrices for his input via OT

Evaluation of Randomized BP◦ ’s and their inverses cancel, cancel if

Randomized BP gives Alice perfect privacy

Page 33: Indistinguishability  Obfuscation for all Circuits

Kilian’s ProtocolBP-Obfuscation?RBP for with the part fixed

◦Bob gets as in Kilian, but both ’s for ◦Evaluates randomized BP in usual way, choosing

appropriate or for the -parts.

Biggest problems: ◦Perfect privacy is lost once we give both ’s◦Partial evaluation attacks: Adversary computes

partial product of matrices from positions to , makes comparisons.

◦Mixed Input attacks: Adversary computes matrix product that does not respect the BP structure.

Page 34: Indistinguishability  Obfuscation for all Circuits

Multilinear Maps to Hide MatricesRecall cryptographic -multilinear map:

◦ Groups of order , generators ◦ Computable maps for ◦ Multi-linearity: for all

Cryptographic hardness:◦ DL analog: hard to recover from ◦ Multilinear-DDH: Given for random ’s,

hard to distinguish from random in ◦ Etc.

[GGH13, CLT13] don’t exactly give this◦ But it’s close enough for our purposes

Page 35: Indistinguishability  Obfuscation for all Circuits

Indistinguishability Obfuscation 35

Multilinear Maps to Hide MatricesEncode the ’s in the exponent,

◦Matrix is encoded element-wiseCan use the maps ’s to multiply

them◦Given , compute ◦From , can compute

Then we can check if

Are the ’s really hidden?10/4/2013

Page 36: Indistinguishability  Obfuscation for all Circuits

Indistinguishability Obfuscation 36

“Partial Evaluation” Attacks

Evaluate the program on two inputs ,but only use matrices between steps , ◦Check if

Roughly, you learn if in the computations of the circuits for , you have the same value on some internal wire

10/4/2013

Page 37: Indistinguishability  Obfuscation for all Circuits

Indistinguishability Obfuscation 37

“Mixed Input” AttackInconsistent matrix selection:

◦Product includes and , but these two steps depend on the same input bit (i.e., )

Roughly, you learn what happens when fixing some internal wire in the circuit of ◦Fixing the wire value to 0, or to 1, or

copying value from another wire, …

10/4/2013

Page 38: Indistinguishability  Obfuscation for all Circuits

Indistinguishability Obfuscation 38

“Multiplicative Bundling”Obfuscator uses two randomized

BPs◦“Main BP ” computing ◦“Dummy BP ” computing c

Same length and -assignments as the BP for All the ’s are the identity Independent randomizer matrices

For every step choose random scalars under the constraint:◦For every input bit position and value

10/4/2013

Page 39: Indistinguishability  Obfuscation for all Circuits

Indistinguishability Obfuscation 39

“Multiplicative Bundling”Obfuscator outputs

To evaluate , compute the products (in the exponent) and

If then ◦ For some constant (the same for )

“Partial evaluation” & “mixed input” attacks yield matrices that differ by a multiplicative constant◦ Rather than identical matrices

10/4/2013

Page 40: Indistinguishability  Obfuscation for all Circuits

Indistinguishability Obfuscation 40

DDH AttacksIdentifying matrices (in the

exponent) that differ by a multiplicative constant is DDH

But we can solve DDH using MMAPs:◦Given , (with ), check etc.

Not out of the woods yet…

10/4/2013

Page 41: Indistinguishability  Obfuscation for all Circuits

Indistinguishability Obfuscation 41

More Attacks: Determinant & RankUse MMAPs to compute determinant

◦E.g., given compute

For matrices of dimension , can check if they are singular◦Use projections to compute rank

Not sure how to use for actual attack,but it is something to look for

10/4/2013

Page 42: Indistinguishability  Obfuscation for all Circuits

Indistinguishability Obfuscation 42

Fixing DDH, Rank AttacksOne option (also used in [BR13b]) is

to switch to “asymmetric maps”◦Just like XSDH for bilinear maps, DDH

can potentially be hard in the different groups, even though you have pairing

◦A little awkward to define in the multilinear setting, so will not do it here

10/4/2013

Page 43: Indistinguishability  Obfuscation for all Circuits

Indistinguishability Obfuscation 43

Fixing DDH, Rank AttacksOr embed in higher-dimension

matrices◦Set ◦Then

Matrix rank , too high to compute$’s are independent between all the

matrices ◦Matrices in attacks no longer differ just

by a multiplicative constant factor

10/4/2013

Page 44: Indistinguishability  Obfuscation for all Circuits

Indistinguishability Obfuscation 44

How To Evaluate?We have ,

and similarly ◦ diagonal, and if then so is ◦But top entries on the diagonal are

random, different between Add pairs of “bookend” vectors

◦, ◦ have 0’s to eliminate the $’s in ◦Compute , , check that

10/4/2013

Page 45: Indistinguishability  Obfuscation for all Circuits

Indistinguishability Obfuscation 45

Summary of BP-Obfuscation

“Main BP” for , “dummy” for cMultiplicative bundling with Embed ’s in higher-degree ’sMultiply by randomizers Add “bookend” vectors Encode everything with -MMAPs

To evaluate: compare products of “main”, “dummy”, output 1 if they match.

10/4/2013

Page 46: Indistinguishability  Obfuscation for all Circuits

Indistinguishability Obfuscation 46

Is This Indistinguishable?It’s plausible…Don’t know to distinguish , , except

by finding s.t. We can prove that some “generic

attacks” do not workBut no simple hardness assumption

that we can reduce to◦This is important future work

10/4/2013

Page 47: Indistinguishability  Obfuscation for all Circuits

Indistinguishability Obfuscation 47

Open ProblemsBetter underlying hardness assumptionsFaster constructions

◦Complexity of our construction is horrendousBetter notions

◦iO is okay for some things, not others◦Certainly does not capture our intuition of

what an obfuscator is Doesn’t even capture the intuition of what the

current construction achievesApplications

◦The sky is the limit…10/4/2013

Page 48: Indistinguishability  Obfuscation for all Circuits

Thank You

Questions?