The Usefulness of Sparsifiable Inputs: How to Avoid Subexponential - - PowerPoint PPT Presentation

the usefulness of sparsifiable inputs how to avoid
SMART_READER_LITE
LIVE PREVIEW

The Usefulness of Sparsifiable Inputs: How to Avoid Subexponential - - PowerPoint PPT Presentation

The Usefulness of Sparsifiable Inputs: How to Avoid Subexponential iO Thomas Agrikola 1 Geoffroy Couteau 2 Dennis Hofheinz 3 1 Karlsruhe Institute of Technology (KIT), Germany 2 IRIF, Paris-Diderot University, CNRS, France 3 ETH Zurich, Switzerland


slide-1
SLIDE 1

The Usefulness of Sparsifiable Inputs: How to Avoid Subexponential iO

Thomas Agrikola1 Geoffroy Couteau2 Dennis Hofheinz3

1Karlsruhe Institute of Technology (KIT), Germany 2IRIF, Paris-Diderot University, CNRS, France 3ETH Zurich, Switzerland

May 12, 2020

slide-2
SLIDE 2

Introduction

Indistinguishability obfuscation (IO) is a method to transform a program into an unintelligible one maintaining the original functionality. P1 ≡ P2 iO(P1) ≈ iO(P2) iO iO

Introduction Recap Doubly probabilistic IO Applications Conclusion 1 /15

slide-3
SLIDE 3

Applications of iO

iO

[GGHRS+13]

Functional encryption

[CsW19; ACIJS20]

Succinct adaptive MPC

[SW14]

Deniable encryption

[CLTV15]

Fully homomorphic encryption

[DHRW16]

Spooky encryption

[DN18]

Universal proxy re-encryption

[BGI16]

Homomorphic secret sharing

[FHHL18]

Graded encoding schemes

[KLW15]

IO for Turing machines

◮ We can build almost

anything from iO.

poly reduction to iO subexp reduction to iO Introduction Recap Doubly probabilistic IO Applications Conclusion 2 /15

slide-4
SLIDE 4

Applications of iO

iO

[GGHRS+13]

Functional encryption

[CsW19; ACIJS20]

Succinct adaptive MPC

[SW14]

Deniable encryption

[CLTV15]

Fully homomorphic encryption

[DHRW16]

Spooky encryption

[DN18]

Universal proxy re-encryption

[BGI16]

Homomorphic secret sharing

[FHHL18]

Graded encoding schemes

[KLW15]

IO for Turing machines

◮ We can build almost

anything from iO.

◮ But what can we do

from polynomial iO?

poly reduction to iO subexp reduction to iO Introduction Recap Doubly probabilistic IO Applications Conclusion 2 /15

slide-5
SLIDE 5

Related work on removing subexp. IO

◮ Previous approaches to avoid subexponential reductions to iO:

replace iO with functional encryption, [GS16; GPSZ17; LZ17; KLMR18]

◮ short signatures ◮ universal samplers ◮ non-interactive multiparty key exchange ◮ trapdoor one-way permutations ◮ multi-key functional encryption ◮ . . . Introduction Recap Doubly probabilistic IO Applications Conclusion 3 /15

slide-6
SLIDE 6

Related work on removing subexp. IO

◮ Previous approaches to avoid subexponential reductions to iO:

replace iO with functional encryption, [GS16; GPSZ17; LZ17; KLMR18]

◮ short signatures ◮ universal samplers ◮ non-interactive multiparty key exchange ◮ trapdoor one-way permutations ◮ multi-key functional encryption ◮ . . .

◮ But the supported operations are relatively restricted

Introduction Recap Doubly probabilistic IO Applications Conclusion 3 /15

slide-7
SLIDE 7

Applications of iO

iO

[GGHRS+13]

Functional encryption

[CsW19; ACIJS20]

Succinct adaptive MPC

[SW14]

Deniable encryption

[CLTV15]

Fully homomorphic encryption

[DHRW16]

Spooky encryption

[DN18]

Universal proxy re-encryption

[BGI16]

Homomorphic secret sharing

[FHHL18]

Graded encoding schemes

[KLW15]

IO for Turing machines

◮ We can build almost

anything from iO.

◮ But what can we do

from polynomial iO?

poly reduction to iO subexp reduction to iO piO abstraction Introduction Recap Doubly probabilistic IO Applications Conclusion 4 /15

slide-8
SLIDE 8

Applications of iO

iO

[GGHRS+13]

Functional encryption

[CsW19; ACIJS20]

Succinct adaptive MPC

[SW14]

Deniable encryption

[CLTV15]

Fully homomorphic encryption

[DHRW16]

Spooky encryption

[DN18]

Universal proxy re-encryption

[BGI16]

Homomorphic secret sharing

[FHHL18]

Graded encoding schemes

[KLW15]

IO for Turing machines

◮ We can build almost

anything from iO.

◮ But what can we do

from polynomial iO?

poly reduction to iO subexp reduction to iO piO abstraction Introduction Recap Doubly probabilistic IO Applications Conclusion 4 /15

slide-9
SLIDE 9

Probabilistic IO

iO compiles programs into unintelligible ones, while preserving their functionality.

P iO(P) iO x P(x) x P(x) P1 ≡ P2 iO(P1) ≈ iO(P2) iO iO

functionally equivalent

P piO(P) piO x P(x; r) x P(x; r ′) P1 ≈ P2 piO(P1) ≈ piO(P2) piO piO

deterministic “functionally indistinguishable”

Introduction Recap Doubly probabilistic IO Applications Conclusion 5 /15

slide-10
SLIDE 10

Probabilistic IO

iO compiles programs into unintelligible ones, while preserving their functionality.

P iO(P) iO x P(x) x P(x) P1 ≡ P2 iO(P1) ≈ iO(P2) iO iO

functionally equivalent

P piO(P) piO x P(x; r) x P(x; r ′) P1 ≈ P2 piO(P1) ≈ piO(P2) piO piO

deterministic “functionally indistinguishable”

Introduction Recap Doubly probabilistic IO Applications Conclusion 5 /15

slide-11
SLIDE 11

Probabilistic IO

iO compiles programs into unintelligible ones, while preserving their functionality. piO compiles randomized programs into deterministic unintelligible ones, while preserving their functionality.

P iO(P) iO x P(x) x P(x) P1 ≡ P2 iO(P1) ≈ iO(P2) iO iO

functionally equivalent

P piO(P) piO x P(x; r) x P(x; r ′) P1 ≈ P2 piO(P1) ≈ piO(P2) piO piO

deterministic “functionally indistinguishable”

Introduction Recap Doubly probabilistic IO Applications Conclusion 5 /15

slide-12
SLIDE 12

Probabilistic IO

iO compiles programs into unintelligible ones, while preserving their functionality. piO compiles randomized programs into deterministic unintelligible ones, while preserving their functionality.

P iO(P) iO x P(x) x P(x) P1 ≡ P2 iO(P1) ≈ iO(P2) iO iO

functionally equivalent

P piO(P) piO x P(x; r) x P(x; r ′) P1 ≈ P2 piO(P1) ≈ piO(P2) piO piO

deterministic “functionally indistinguishable”

Introduction Recap Doubly probabilistic IO Applications Conclusion 5 /15

slide-13
SLIDE 13

Why does piO require subexponential iO?

◮ Programs are only required to be “functionally indistinguishable”

Introduction Recap Doubly probabilistic IO Applications Conclusion 6 /15

slide-14
SLIDE 14

Why does piO require subexponential iO?

◮ Programs are only required to be “functionally indistinguishable” ◮ Captures a vast class of programs, e.g.

P1(x; r)

return Enc(pk, x; r)

≈ P2(x; r)

return Enc(pk, 0; r)

Introduction Recap Doubly probabilistic IO Applications Conclusion 6 /15

slide-15
SLIDE 15

Why does piO require subexponential iO?

◮ Programs are only required to be “functionally indistinguishable” ◮ Captures a vast class of programs, e.g.

P1(x; r)

return Enc(pk, x; r)

≈ P2(x; r)

return Enc(pk, 0; r) ◮ Strategy due to Canetti et al., [CLTV15]:

◮ derive random coins from input x via PRF(K, x)

r := PRF(x) return P(x; r)

iO

piO(P)

Introduction Recap Doubly probabilistic IO Applications Conclusion 6 /15

slide-16
SLIDE 16

Why does piO require subexponential iO?

◮ Programs are only required to be “functionally indistinguishable” ◮ Captures a vast class of programs, e.g.

P1(x; r)

return Enc(pk, x; r)

≈ P2(x; r)

return Enc(pk, 0; r) ◮ Strategy due to Canetti et al., [CLTV15]:

◮ derive random coins from input x via PRF(K, x)

r := PRF(x) return P(x; r)

iO

piO(P)

◮ use iO to obfuscate this deterministic program Introduction Recap Doubly probabilistic IO Applications Conclusion 6 /15

slide-17
SLIDE 17

Construction of piO due to Canetti et al., [CLTV15]

P1(x; r)

return Enc(pk, x; r)

≈ P2(x; r)

return Enc(pk, 0; r)

Example:

r := PRF(x) return P(x; r)

piO construction: ◮ But iO security can only be applied if circuits behave fully

identically

◮ in our example, P1 and P2 behave very differently Introduction Recap Doubly probabilistic IO Applications Conclusion 7 /15

slide-18
SLIDE 18

Construction of piO due to Canetti et al., [CLTV15]

P1(x; r)

return Enc(pk, x; r)

≈ P2(x; r)

return Enc(pk, 0; r)

Example:

r := PRF(x) return P(x; r)

piO construction: ◮ But iO security can only be applied if circuits behave fully

identically

◮ in our example, P1 and P2 behave very differently

direct (polynomial) reduction to iO won’t work

Introduction Recap Doubly probabilistic IO Applications Conclusion 7 /15

slide-19
SLIDE 19

Construction of piO due to Canetti et al., [CLTV15]

P1(x; r)

return Enc(pk, x; r)

≈ P2(x; r)

return Enc(pk, 0; r)

Example:

r := PRF(x) return P(x; r)

piO construction: ◮ But iO security can only be applied if circuits behave fully

identically

◮ in our example, P1 and P2 behave very differently

direct (polynomial) reduction to iO won’t work

◮ Use a “one-input-at-a-time” hybrid argument for all possible inputs

◮ this includes the randomness Introduction Recap Doubly probabilistic IO Applications Conclusion 7 /15

slide-20
SLIDE 20

Construction of piO due to Canetti et al., [CLTV15]

P1(x; r)

return Enc(pk, x; r)

≈ P2(x; r)

return Enc(pk, 0; r)

Example:

r := PRF(x) return P(x; r)

piO construction: ◮ But iO security can only be applied if circuits behave fully

identically

◮ in our example, P1 and P2 behave very differently

direct (polynomial) reduction to iO won’t work

◮ Use a “one-input-at-a-time” hybrid argument for all possible inputs

◮ this includes the randomness

Our goal: reduce number of hybrids to a polynomial amount

Introduction Recap Doubly probabilistic IO Applications Conclusion 7 /15

slide-21
SLIDE 21

Main tool – Extremely lossy functions

◮ Extremely lossy functions (ELFs) due to Zhandry, [Zha16] offer two

indistinguishable modes:

injective mode image size exponential extremely lossy mode image size polynomial

Introduction Recap Doubly probabilistic IO Applications Conclusion 8 /15

slide-22
SLIDE 22

Main tool – Extremely lossy functions

◮ Extremely lossy functions (ELFs) due to Zhandry, [Zha16] offer two

indistinguishable modes:

injective mode image size exponential extremely lossy mode image size polynomial

◮ exist from exponential DDH Introduction Recap Doubly probabilistic IO Applications Conclusion 8 /15

slide-23
SLIDE 23

Main tool – Extremely lossy functions

◮ Extremely lossy functions (ELFs) due to Zhandry, [Zha16] offer two

indistinguishable modes:

injective mode image size exponential extremely lossy mode image size polynomial

◮ exist from exponential DDH

◮ We believe that some sort of (sub)exponential assumption is

inherent for probabilistic iO

◮ ELFs can be used to push this subexponentiality to a much more

well-understood assumption

Introduction Recap Doubly probabilistic IO Applications Conclusion 8 /15

slide-24
SLIDE 24

First try

P1(x; r)

return Enc(pk, x; r)

≈ P2(x; r)

return Enc(pk, 0; r)

Example:

x = ELF(x) r := PRF(x) return P(x; r)

◮ First try: reduce number of hybrids by applying the ELF on the

input x

Introduction Recap Doubly probabilistic IO Applications Conclusion 9 /15

slide-25
SLIDE 25

First try

P1(x; r)

return Enc(pk, x; r)

≈ P2(x; r)

return Enc(pk, 0; r)

Example:

x = ELF(x) r := PRF(x) return P(x; r)

◮ First try: reduce number of hybrids by applying the ELF on the

input x

◮ But pre-processing the program input x with an ELF will not

preserve the expected functionality of the circuit

Introduction Recap Doubly probabilistic IO Applications Conclusion 9 /15

slide-26
SLIDE 26

Our observation

◮ Common ground for many applications of piO:

D(m) piO(P) x inputs x come from distributions D(m)

Introduction Recap Doubly probabilistic IO Applications Conclusion 10 /15

slide-27
SLIDE 27

Our observation

◮ Common ground for many applications of piO:

D(m) piO(P) x inputs x come from distributions D(m)

◮ e.g., D(m) outputs encryptions of m,

  • r, D(·) samples public encryption keys.

Introduction Recap Doubly probabilistic IO Applications Conclusion 10 /15

slide-28
SLIDE 28

Our observation

◮ Common ground for many applications of piO:

D(m) piO(P) x inputs x come from distributions D(m)

◮ e.g., D(m) outputs encryptions of m,

  • r, D(·) samples public encryption keys.

◮ Approach: reduce number of hybrids by applying the ELF on the

random tape of D to sparsify inputs

Introduction Recap Doubly probabilistic IO Applications Conclusion 10 /15

slide-29
SLIDE 29

Doubly-Probabilistic IO

◮ Our framework: doubly-probabilistic IO (dpiO)

D(m) piO(P) x dpiOD(P) D(m) crs aux x

1-source dpiO

CRS model compiled input sampler certifies that x is valid

  • bfuscation

depends on input sampler D

dpiOD(P) crs D(m1) aux1 x1 D(m2) aux2 x2

2-source dpiO

CRS model compiled input sampler certifies that x is valid

  • bfuscation

depends on input sampler D

Introduction Recap Doubly probabilistic IO Applications Conclusion 11 /15

slide-30
SLIDE 30

Doubly-Probabilistic IO

◮ Our framework: doubly-probabilistic IO (dpiO)

D(m) piO(P) x dpiOD(P) D(m) crs aux x

1-source dpiO

CRS model compiled input sampler certifies that x is valid

  • bfuscation

depends on input sampler D

dpiOD(P) crs D(m1) aux1 x1 D(m2) aux2 x2

2-source dpiO

CRS model compiled input sampler certifies that x is valid

  • bfuscation

depends on input sampler D

Introduction Recap Doubly probabilistic IO Applications Conclusion 11 /15

slide-31
SLIDE 31

Doubly-Probabilistic IO

◮ Our framework: doubly-probabilistic IO (dpiO)

D(m) piO(P) x dpiOD(P) D(m) crs aux x

1-source dpiO

CRS model compiled input sampler certifies that x is valid

  • bfuscation

depends on input sampler D

dpiOD(P) crs D(m1) aux1 x1 D(m2) aux2 x2

2-source dpiO

CRS model compiled input sampler certifies that x is valid

  • bfuscation

depends on input sampler D

Introduction Recap Doubly probabilistic IO Applications Conclusion 11 /15

slide-32
SLIDE 32

Doubly-Probabilistic IO

◮ Our framework: doubly-probabilistic IO (dpiO)

D(m) piO(P) x dpiOD(P) D(m) crs aux x

1-source dpiO

CRS model compiled input sampler certifies that x is valid

  • bfuscation

depends on input sampler D

dpiOD(P) crs D(m1) aux1 x1 D(m2) aux2 x2

2-source dpiO

CRS model compiled input sampler certifies that x is valid

  • bfuscation

depends on input sampler D

Introduction Recap Doubly probabilistic IO Applications Conclusion 11 /15

slide-33
SLIDE 33

Doubly-Probabilistic IO

◮ Our framework: doubly-probabilistic IO (dpiO)

D(m) piO(P) x dpiOD(P) D(m) crs aux x

1-source dpiO

CRS model compiled input sampler certifies that x is valid

  • bfuscation

depends on input sampler D

dpiOD(P) crs D(m1) aux1 x1 D(m2) aux2 x2

2-source dpiO

CRS model compiled input sampler certifies that x is valid

  • bfuscation

depends on input sampler D

Introduction Recap Doubly probabilistic IO Applications Conclusion 11 /15

slide-34
SLIDE 34

Construction

(x1, aux1) valid wrt. D? (x2, aux2) valid wrt. D? return ⊥ r := PRF(x1, x2) return P(x1, x2; r) no no yes yes

iO

dpiOD(P)

dpiOD(P)

D(m1)

x1 := D(m1; ELF(r1)) aux1 ← “NIZK-proof” return (x1, aux1)

D(m1; r1)

aux1 x1 D(m2)

x2 := D(m2; ELF(r2)) aux2 ← “NIZK-proof” return (x2, aux2)

D(m2; r2)

aux2 x2 number of valid inputs

  • nly polynomial

when ELF is lossy

(we need that number

  • f possible mi is small)

Introduction Recap Doubly probabilistic IO Applications Conclusion 12 /15

slide-35
SLIDE 35

Construction

(x1, aux1) valid wrt. D? (x2, aux2) valid wrt. D? return ⊥ r := PRF(x1, x2) return P(x1, x2; r) no no yes yes

iO

dpiOD(P)

dpiOD(P)

D(m1)

x1 := D(m1; ELF(r1)) aux1 ← “NIZK-proof” return (x1, aux1)

D(m1; r1)

aux1 x1 D(m2)

x2 := D(m2; ELF(r2)) aux2 ← “NIZK-proof” return (x2, aux2)

D(m2; r2)

aux2 x2 number of valid inputs

  • nly polynomial

when ELF is lossy

(we need that number

  • f possible mi is small)

Introduction Recap Doubly probabilistic IO Applications Conclusion 12 /15

slide-36
SLIDE 36

Construction

(x1, aux1) valid wrt. D? (x2, aux2) valid wrt. D? return ⊥ r := PRF(x1, x2) return P(x1, x2; r) no no yes yes

iO

dpiOD(P)

dpiOD(P)

D(m1)

x1 := D(m1; ELF(r1)) aux1 ← “NIZK-proof” return (x1, aux1)

D(m1; r1)

aux1 x1 D(m2)

x2 := D(m2; ELF(r2)) aux2 ← “NIZK-proof” return (x2, aux2)

D(m2; r2)

aux2 x2 number of valid inputs

  • nly polynomial

when ELF is lossy

(we need that number

  • f possible mi is small)

Introduction Recap Doubly probabilistic IO Applications Conclusion 12 /15

slide-37
SLIDE 37

Construction

(x1, aux1) valid wrt. D? (x2, aux2) valid wrt. D? return ⊥ r := PRF(x1, x2) return P(x1, x2; r) no no yes yes

iO

dpiOD(P)

dpiOD(P)

D(m1)

x1 := D(m1; ELF(r1)) aux1 ← “NIZK-proof” return (x1, aux1)

D(m1; r1)

aux1 x1 D(m2)

x2 := D(m2; ELF(r2)) aux2 ← “NIZK-proof” return (x2, aux2)

D(m2; r2)

aux2 x2 number of valid inputs

  • nly polynomial

when ELF is lossy

(we need that number

  • f possible mi is small)

Introduction Recap Doubly probabilistic IO Applications Conclusion 12 /15

slide-38
SLIDE 38

Leveled Homomorphic Encryption

◮ LHEL = (Gen, Enc, Dec, Eval) is a LHE scheme for depth-L

circuits C, if

◮ (Gen, Enc, Dec) is a PKE scheme, and ◮ Eval allows to homomorphically evaluate depth-L circuits on

ciphertexts m1 m2 c1 c2

Enc Enc

EvalC C

=

Dec

Introduction Recap Doubly probabilistic IO Applications Conclusion 13 /15

slide-39
SLIDE 39

Leveled Homomorphic Encryption

◮ LHEL = (Gen, Enc, Dec, Eval) is a LHE scheme for depth-L

circuits C, if

◮ (Gen, Enc, Dec) is a PKE scheme, and ◮ Eval allows to homomorphically evaluate depth-L circuits on

ciphertexts m1 m2 c1 c2

Enc Enc

EvalC C

=

Dec

Introduction Recap Doubly probabilistic IO Applications Conclusion 13 /15

slide-40
SLIDE 40

Leveled Homomorphic Encryption

◮ LHEL = (Gen, Enc, Dec, Eval) is a LHE scheme for depth-L

circuits C, if

◮ (Gen, Enc, Dec) is a PKE scheme, and ◮ Eval allows to homomorphically evaluate depth-L circuits on

ciphertexts m1 m2 c1 c2

Enc Enc

EvalC C

=

Dec

Introduction Recap Doubly probabilistic IO Applications Conclusion 13 /15

slide-41
SLIDE 41

Leveled Homomorphic Encryption

◮ LHEL = (Gen, Enc, Dec, Eval) is a LHE scheme for depth-L

circuits C, if

◮ (Gen, Enc, Dec) is a PKE scheme, and ◮ Eval allows to homomorphically evaluate depth-L circuits on

ciphertexts m1 m2 c1 c2

Enc Enc

EvalC C

=

Dec

Introduction Recap Doubly probabilistic IO Applications Conclusion 13 /15

slide-42
SLIDE 42

Leveled Homomorphic Encryption

◮ LHEL = (Gen, Enc, Dec, Eval) is a LHE scheme for depth-L

circuits C, if

◮ (Gen, Enc, Dec) is a PKE scheme, and ◮ Eval allows to homomorphically evaluate depth-L circuits on

ciphertexts m1 m2 c1 c2

Enc Enc

EvalC C

=

Dec

Introduction Recap Doubly probabilistic IO Applications Conclusion 13 /15

slide-43
SLIDE 43

Application LHE/FHE

◮ LHE construction due to Canetti et al., [CLTV15] ◮ one NAND gate is evaluated as follows: a1 := Decsk1(C1) a2 := Decsk1(C2) return Encpk2(a1∧a2)

Eval∧

Encpk1(m1) Encpk1(m2) C1 C2

piO

use compiled input samplers produce output with compiled input sampler for next level

Introduction Recap Doubly probabilistic IO Applications Conclusion 14 /15

slide-44
SLIDE 44

Application LHE/FHE

◮ LHE construction due to Canetti et al., [CLTV15] ◮ one NAND gate is evaluated as follows: a1 := Decsk1(C1) a2 := Decsk1(C2) return Encpk2(a1∧a2)

Eval∧

Encpk1(m1) Encpk1(m2) C1 C2

piO

use compiled input samplers produce output with compiled input sampler for next level

Introduction Recap Doubly probabilistic IO Applications Conclusion 14 /15

slide-45
SLIDE 45

Application LHE/FHE

◮ LHE construction due to Canetti et al., [CLTV15] ◮ one NAND gate is evaluated as follows: a1 := Decsk1(C1) a2 := Decsk1(C2) return Encpk2(a1∧a2)

Eval∧

Encpk1(m1) Encpk1(m2) (C1, aux1) (C2, aux2)

dpiOEncpk1

use compiled input samplers produce output with compiled input sampler for next level

Introduction Recap Doubly probabilistic IO Applications Conclusion 14 /15

slide-46
SLIDE 46

Conclusion

iO

[GGHRS+13]

Functional encryption

[CsW19; ACIJS20]

Succinct adaptive MPC

[SW14]

Deniable encryption

[CLTV15]

Fully homomorphic encryption

[DHRW16]

Spooky encryption

[DN18]

Universal proxy re-encryption

[BGI16]

Homomorphic secret sharing

[FHHL18]

Graded encoding schemes

[KLW15]

IO for Turing machines

◮ We can build almost

anything from iO.

◮ But what can we do

from polynomial iO?

poly reduction to iO subexp reduction to iO piO abstraction subexp iO plus ELF Introduction Recap Doubly probabilistic IO Applications Conclusion 15 /15

slide-47
SLIDE 47

Conclusion

iO

[GGHRS+13]

Functional encryption

[CsW19; ACIJS20]

Succinct adaptive MPC

[SW14]

Deniable encryption

[CLTV15]

Fully homomorphic encryption

[DHRW16]

Spooky encryption

[DN18]

Universal proxy re-encryption

[BGI16]

Homomorphic secret sharing

[FHHL18]

Graded encoding schemes

[KLW15]

IO for Turing machines

◮ We can build almost

anything from iO.

◮ But what can we do

from polynomial iO?

◮ And what can we do

from polynomial iO and ELFs?

poly reduction to iO subexp reduction to iO piO abstraction subexp iO plus ELF Introduction Recap Doubly probabilistic IO Applications Conclusion 15 /15