Indistinguishability
Obfuscation
and Applications
Sanjam Garg
IBM T. J. Watson
Outline
2
•
Part I : What is Obfuscation? What
is it useful for?
•
Part II: How do we construct
Software Obfuscation
O
(P)
P
• Obfuscation aims to make computer programs
“unintelligible” while preserving their functionality.
Protecting intellectual
property via Obfuscation
O
Patching Software Securely
via Obfuscation
Contemporary Obfuscation:
Security-via-Obscurity
#include <stdio.h>
int l;int main(int o,char **O, int I){char c,*D=O[1];if(o>0){ for(l=0;D[l ];D[l ++]-=10){D [l++]-=120;D[l]-= 110;while (!main(0,O,l))D[l] += 20; putchar((D[l]+1032) /20 ) ;}putchar(10);}else{ c=o+ (D[I]+82)%10-(I>l/2)* (D[I-l+I]+72)/10-9;D[I]+=I<0?0 :!(o=main(c/10,O,I-1))*((c+999 )%10-(D[I]+92)%10);}return o;}
• Relies on Human ingenuity
Crypto Obfuscator
Make the task of reverse engineering time-consuming,
• Under complex and new but still very
reasonable computational assumption
• Huge leap: Known obfuscation solutions work for simple families of functions such as point function [C97….]
• Even no heuristic!
Our results
Multilinear Maps
[GGH13]
Obfuscation for all circuits [GGHRSW13]
Functional Encryption
[Sha84,SW06, …,O’Neil10,BSW11,…]
PK MSK
𝑓 1 𝑓 2
𝐸𝑛𝑐(𝑥)
SK’ SK
Key Authority
Prior Work: Limited function such as inner product [KSW08,..] were known to be realizable or were limited to single-key[SS10, AGVW12...]
𝑓 1(𝑥) 𝑓 2( 𝑥)
We [GGHRSW13] can do it for all circuits.
Witness Encryption
[TW87, Rudich89, … , CS02, CCKV08, GOVW12, … GGSW13]
Application 2
Encrypter
Soundness:
Statement is false Semantic Security
Multiparty Secure Computation [GMW87]
with Minimal-Communication
$
7
$
5
$
3
$
4
$
1
h
𝐻𝑖𝑔 𝑒𝑠𝑡 𝐵𝑖𝑑𝑑𝑒𝑟 ?
Obfuscation [GGHR14] based protocol has
optimal
• round complexity
Many other applications of
Obfuscation
• Multi-input Functional Encryption [GGJS13]
• Functional Encryption for Randomized Functions [GJKS13] • Multiparty Key Exchange [BZ13]
• Removing random oracles [HSW13]
• Separation results for circular security [KRW13,MO13] • Functional Witness Encryption [BCP13]
• Impossibility Results [BCPR13a,BP13,GK13,BCPR13b] • Deniable Encryption [SW13]
• Broadcast Encryption and Traitor Tracing [BZ13,ABGSZ13] • Extension to Turing Machines [BCP13, ABGSZ13]
Part II:
Obfuscation – Formal Notions
[BGIRSVY01]
• Produce as output another program • computes the same function as
• at most polynomially larger than • is “unintelligible”
• Multiple notions
• ``virtual black-box’’ notion:
• cannot do much more with than running it on various inputs
• functions for which VBB obfuscation is impossible
𝐶
𝑂
𝑂
(
𝐶
)
𝐴
(
𝑂
(
𝐶
)
)
∼
𝑃𝑃𝑇𝑆
𝐶(
1
|𝐶|)
Indistinguishability Obfuscation
[B+01]
• Def: 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)
Witness Encryption from
Indistinguishability
Witness Encryption: Recall
[TW87, Rudich89, … , CS02, CCKV08, GOVW12, … GGSW13]
Application 2
Encrypter
Soundness:
Statement is false Semantic Security
Witness Encryption from
Indistinguishability
Obfuscation?
Encrypter
𝑐
=
𝑖𝑂
(
𝐶
𝑚)
Statement :
𝑚
Roadmap for the
Construction
1. iO for “shallow circuits” (NC1)
• Using multilinear maps
• Security under a new complex assumption
2. Bootstrap to get iO for all circuits
• Using homomorphic encryption with NC1
decryption
• Very simple and provable transformation
F Homomorphic
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
NC
1Obfuscation
P
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)
Obfuscate only this part
NC1 Circuit
Output of P obfuscator
F Homomorphic
Encryption F
CondDec
• We have iO, not “perfect” obfuscation
NC
1Obfuscation
P
Obfuscation
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)
Obfuscate only this part
NC1 Circuit
Output of P obfuscator
F Homomorphic
Encryption F
CondDec
F F(x)
CondDecF, F, SK(· ,· ) Indist. Obfuscation
Indist. Obfuscation
≈
NC
1Obfuscation
P
How to realize iO for
1.
View circuit as a
matrix branching program
◦ Barrington’s Theorem [B86]
2.
Randomize
it via Kilian’s approach [K88]
3.
Use
multilinear maps
to make computation
hidden
4.
Attacks and fixes
• Barrington’s theorem:
• An circuit polynomial length MBP • With constant-dimension matrices
• Example: length-9 MBP with 4-bit input
A
2,0A
1,0A
3,0A
4,0A
5,0A
6,0A
7,0A
8,0A
9,0A
2,1A
1,1A
3,1A
4,1A
5,1A
6,1A
7,1A
8,1A
9,10
• This length-9 BP has 4-bit inputs
A
2,0A
1,0A
3,0A
4,0A
5,0A
6,0A
7,0A
8,0A
9,0A
2,1A
1,1A
3,1A
4,1A
5,1A
6,1A
7,1A
8,1A
9,10 1
Matrix Branching Program
• This length-9 BP has 4-bit inputs
• Multiply the chosen 9 matrices together
• If product is output 1. Otherwise output 0.
A
2,0A
1,0A
3,0A
4,0A
5,0A
6,0A
7,0A
8,0A
9,0A
2,1A
1,1A
3,1A
4,1A
5,1A
6,1A
7,1A
8,1A
9,10 1 1 0
Kilian’s Randomization
• Randomization can hide everything else • Sample to . Set
A
2,0A
1,0A
3,0A
4,0A
5,0A
6,0A
7,0A
8,0A
9,0A
2,1A
1,1A
3,1A
4,1A
5,1A
6,1A
7,1A
8,1A
9,10 1 1 0
B
3,0B
5,0B
6,0B
9,0B
2,1What if we give both?
• Perfect privacy is lost once we give both ’s
B
2,0B
1,0B
3,0B
4,0B
5,0B
6,0B
7,0B
8,0B
9,0B
2,1First line of defense:
Multilinear Maps
[BS03,
G
GH13]
• Multilinear Maps
• ``encrypt’’ these matrices
• identity matrices can be tested
• Recall cryptographic -multilinear map:
• Groups of order , generators and target group
with generator .
• Computable map
• Multi-linearity: for all ’s.
• [GGH13] maps are noisy but lets ignore that
First line of defense:
Multilinear Maps
[BS03,
G
GH13]
• Encode the ’s in the exponent,
• Can use the map to multiply them • Then we can check if
B
2,0B
1,0B
3,0B
4,0B
5,0B
6,0B
7,0B
8,0B
9,0B
2,1Attack 1: Are the ’s hidden?
• Mixed input attacks: Inconsistent 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
B
2,0B
1,0B
3,0B
4,0B
5,0B
6,0B
7,0B
8,0B
9,0B
2,1B
1,1B
3,1B
4,1B
5,1B
6,1B
7,1B
8,1B
9,1Attack 2: Are the ’s hidden?
• 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
B
2,0B
1,0B
3,0B
4,0B
5,0B
6,0B
7,0B
8,0B
9,0B
2,1Fixing attack 1:
Multiplicative bundling
34
B
2,0B
1,0B
3,0B
4,0B
5,0B
6,0B
7,0B
8,0B
9,0B
2,1Fixing attack 1:
Multiplicative bundling
B
2,0B
1,0B
3,0B
4,0B
5,0B
6,0B
7,0B
8,0B
9,0B
2,1Attack 2: Does it still exist?
36
B
2,0B
1,0B
3,0B
4,0B
5,0B
6,0B
7,0B
8,0B
9,0B
2,1Fixing attack 2:
Extended Multiplicative
bundling
B
2,0B
1,0B
3,0B
4,0B
5,0B
6,0B
7,0B
8,0B
9,0B
2,1B
1,1B
3,1B
4,1B
5,1B
6,1B
7,1B
8,1B
9,1𝛾
1𝛾
2𝛾
3𝛾
4𝛾
5𝛾
6𝛾
7𝛾
8𝛾
9Fixing attack 2:
Extended Multiplicative
bundling
38
Security Proof?
• Not on a standard assumption, but • a complex new assumption.
• Some evidence: We give proof of security in a
certain generic mulitlinear matrix model.
• Evidence strengthened by [BR13, BGKPS13] who
Open Problems
•
Better assumptions
•
Stronger notions
•
Faster constructions
• Complexity of our construction is horrendous
•
More applications
• The sky is the limit…
Thank You