homomorphic encryption tutorial

34
Homomorphic Encryption Tutorial Shai Halevi ― IBM August 2013

Upload: britanni-lowe

Post on 31-Dec-2015

123 views

Category:

Documents


0 download

DESCRIPTION

Homomorphic Encryption Tutorial. Shai Halevi ― IBM August 2013. I want to delegate processing of my data, without giving away access to it. Computing on Encrypted Data. Outsourcing Computation. “I want to delegate the computation to the cloud, but the cloud shouldn’t see my input”. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Homomorphic  Encryption Tutorial

Homomorphic EncryptionTutorial

Shai Halevi ― IBMAugust 2013

Page 2: Homomorphic  Encryption Tutorial

I want to delegate processing of my data, without giving away access to it.

Computing on Encrypted Data

Page 3: Homomorphic  Encryption Tutorial

Client Server/Cloud(Input: x) (Function: f)

“I want to delegate the computation to the cloud”“I want to delegate the computation to the cloud,

but the cloud shouldn’t see my input”

Enc[f(x)]

Enc(x) f

Outsourcing Computation

Page 4: Homomorphic  Encryption Tutorial

Example: RSA_encrypt(e,N)(x) = xe mod N

x1e x x2

e = (x1 x x2) e mod N

“Somewhat Homomorphic”: can compute some functions on encrypted data, but not all

Privacy Homomorphisms

Plaintext space P Ciphertext space Cx1 x2

ci Enc(xi) c1 c2

* #

y dy Dec(d)

• Rivest-Adelman-Dertouzos 1978

Page 5: Homomorphic  Encryption Tutorial

“Fully Homomorphic” Encryption

Encryption for which we can compute arbitrary functions on the encrypted data

Enc(f(x))

Enc(x) Eval f

Page 6: Homomorphic  Encryption Tutorial

An encryption scheme: (KeyGen, Enc, Dec)Plaintext-space = {0,1}

(pk,sk) KeyGen($), cEncpk(b), bDecsk(c)

Semantic security [GM’84]: (pk, Encpk(0)) (pk, Encpk(1)) means indistinguishable by efficient algorithms

Some Notations

6

Page 7: Homomorphic  Encryption Tutorial

H = {KeyGen, Enc, Dec, Eval} c* Evalpk(f, c)

Homomorphic: Decsk(Evalpk( f, Encpk(x))) = f(x)c* may not look like a “fresh” ciphertextAs long as it decrypts to f(x)

Compact: Decrypting c* easier than computing fOtherwise we could use Evalpk (f, c)=(f, c) and Decsk(f, c) = f(Decsk(c))Technically, |c*| independent of the complexity of f

Homomorphic Encryption (HE)

7

c*

Page 8: Homomorphic  Encryption Tutorial

8

First plausible candidate in [Gen’09]Security from hard problems in ideal latticesPolynomially slower than computing in the clear

Big polynomial though

Many advances sinceOther hardness assumptions

LWE, RLWE, NTRU, approximate-GCD

More efficientOther “Advanced properties”

Multi-key, Identity-based, …

Fully Homomorphic Encryption

Page 9: Homomorphic  Encryption Tutorial

9

Regev-like somewhat-homomorphic encryptionAdding homomorphism to [Reg’05] cryptosystem

Security based on LWE, Ring-LWE

Based on [BV’11, BGV’12, B’12]

Bootstrapping to get FHE [Gen’09]Packed ciphertexts for efficiency

Based on [SV’11, BGV’12, GHS’12]

Not in this talk: a new LWE-based scheme[Gentry-Sahai-Waters CRYPTO 2013]

This Talk

Page 10: Homomorphic  Encryption Tutorial

Learning with Errors [Reg’05]Many equivalent forms, this is one of them:

Parameters: (modulus), (dimension)Secret: a random short vector Input: many pairs

is random, is short

Goal: find the secret Or distinguish from random in

[Regev’05, Peikert’09]: As hard as some worst-case lattice problems in dim n (for certain range of params)

Page 11: Homomorphic  Encryption Tutorial

Regev’s Cryptosystem [Reg’05]The shared-key variant (enough for us)Secret key: vector Encrypt

s.t. Convenient to write

Decrypt()Output 0 if | mod q|, else output 1Correct decryption as long as error

Security: If LWE is hard, cipehrtext is pseudorandom

, denote

Page 12: Homomorphic  Encryption Tutorial

12

Additive Homomorphism

If (mod q) then (mod q)

Error doubles on additionCorrect decryption as long as the error

Page 13: Homomorphic  Encryption Tutorial

How to Multiply [BV’11, B’12]

Step 1: Tensor ProductIf (mod q) and s is small ()then (mod )

Error has extra additive terms of size So encrypts relative to secret key

Rounding adds another small additive error

But the dimension squares on multiply

Page 14: Homomorphic  Encryption Tutorial

Step 2: Dimension ReductionPublish “key-switching gadget” to ranslate wrt wrt

Essentially an encryption of under

rational matrix W s.t. Given , compute

Some extra work to keep error from growing too much

Still secure under reasonable hardness assumptions

How to Multiply [BV’11, B’12]

Page 15: Homomorphic  Encryption Tutorial

15

Somewhat Homomorphic Encryption

Error doubles on addition, grows by poly(n) factor on multiplication (e.g., factor)

When computing a depth- circuit we have|output-error| |input-error|

Setting parameters:Start from |input-error| (say)Set Set the dimension large enough to get security

|output-error| , so no decryption errors

Page 16: Homomorphic  Encryption Tutorial

FHE via Bootstrapping [Gen’09]

16

C(x1, x2 ,…, xt)

x1

…x2

xt

C

So far, circuits of pre-determined depth

Page 17: Homomorphic  Encryption Tutorial

So far, circuits of pre-determined depth

Can eval y=C(x1,x2…,xn) when xi’s are “fresh”But y is an “evaluated ciphertext”

Can still be decryptedBut eval C’(y) will increase noise too much

FHE via Bootstrapping [Gen’09]

17

x1

…x2

xt

C

C(x1, x2 ,…, xt)

Page 18: Homomorphic  Encryption Tutorial

So far, circuits of pre-determined depth

Bootstrapping to handle deeper circuitsWe have a noisy evaluated ciphertext yWant to get another y with less noise

FHE via Bootstrapping [Gen’09]

18

x1

…x2

xt

C

C(x1, x2 ,…, xt)

Page 19: Homomorphic  Encryption Tutorial

For ciphertext c, consider Dc(sk) = Decsk(c)Hope: Dc(*) is a low-depth circuit (on input sk)

Include in the public key also Encpk(sk)

Homomorphic computation applied only to the “fresh” encryption of sk

FHE via Bootstrapping [Gen’09]

19

Dc

y

sk1

sk2

skn

c

Dc(sk)

= Decsk(c) = y

c’

Requires “circular security”

sk1

sk2

skn

Page 20: Homomorphic  Encryption Tutorial

Similarly define Mc1,c2(sk) = Decsk(c1) Dec∙ sk(c1)

Homomorphic computation applied only to the “fresh” encryption of sk

FHE via Bootstrapping [Gen’09]

20

Mc1,c2

y2

sk1

sk2

skn

c2

Mc1,c2(sk)

= Decsk(c1) x Decsk(c2) = y1 x y2

c’

y1c1

sk1

sk2

skn

Page 21: Homomorphic  Encryption Tutorial

21

The LWE-based somewhat-homomorphic scheme has depth- decryption circuitTo get FHE need modulus and dimension

is the security parameter

The ciphertext-size is bitsKey-switching matrix is of size bits Each multiplication takes at least times slowdown vs. computing in the clear

(In)Efficiency of This Scheme

Page 22: Homomorphic  Encryption Tutorial

22

Replace Z by Z[X]/F(X)F is a degree-d polynomial with

Can get security with lower dimension, as low as

The ciphertext-size still bitsBut key-switching matrix size only bits

It includes ring elements

slowdown vs. computing in the clear

Better Efficiency with Ring-LWE

Page 23: Homomorphic  Encryption Tutorial

23

Cannot reduce ciphertext size below But we can pack more bits in each ciphertextRecall decryption:

is a polynomial in

Use cyclotomic rings, Use CRT in to pack many bits inside m

The cryptosystem remains unchangedEncoding/decoding of bits inside plaintext polys

Ciphertext Packing

Page 24: Homomorphic  Encryption Tutorial

Plaintext Algebra

irreducible over Z, but not mod 2 (mod 2)Fj’s are irreducible, all have the same degree d

degree d is the order of 2 in For some m’s we can get

is a direct sum,

1-1 mapping

Page 25: Homomorphic  Encryption Tutorial

Plaintext Slots

Plaintext encodes values To embed plaintext bits, use

Ops +, in work independently on the slots-ADD: -MUL:

If then our -bit ciphertext can hold plaintext bits

Ciphertext-expansion ratio only polylog(k)

Page 26: Homomorphic  Encryption Tutorial

Aside: an -SELECT Operation

We will use this later

1 0 0 1 0 1 0

x1 x2 x3 x4 x5 x6 x7

x8 x9 x10 x11 x12 x13 x14

0 1 1 0 1 0 1

x1 0 0 x4 0 x6 0

0 x9 x10 0 x12 0 x14

x

x

=

=

+

x1 x9 x10 x4 x12 x6 x14

Page 27: Homomorphic  Encryption Tutorial

Homomorphic SIMD [SV’11]

SIMD = Single Instruction Multiple DataComputing the same function on inputs at the price of one computation

Overhead only polylog(k)Pack the inputs into the slots

Bit-slice, inputs to j’th instance go in j‘th slotsCompute the function onceAfter decryption, decode the output bits from the output plaintext polynomial

Page 28: Homomorphic  Encryption Tutorial

April 19, 2023 28

Beyond SIMD Computation

To reduce overhead for a single computation:Pack all input bits in just a few ciphertextsCompute while keeping everything packed

How to do this?

Page 29: Homomorphic  Encryption Tutorial

So you want to compute some function…

+ + + + + + + + + + + + +

× × × × × × × × × × ×

+ + + + + + + + +

0 1 1

1

1

x1 x2 x3 x4 x5 x7 x8x9 x10 x11 x12 x14 x15 x16 x17 x18 x19 x21 x22 x23 x24 x25 x26

Input bits

Page 30: Homomorphic  Encryption Tutorial

x1 x2 x3 x4 x5 x7 x8x9 x10 x11 x12 x14 x15 x16 x17 x18 x19 x21 x22 x23 x24 x25 x26

x15 x16 x17 x18 x19 x21x8 x9 x10 x11 x12 x14x1 x2 x3 x4 x5 x7 x22 x23 x24 x25 x26

Input bits

+ + + + + + + + + + + + +

× × × × × × × × × × ×

+ + + + + + + + +

0 1 1

1

1

So you want to compute some function using SIMD…

Page 31: Homomorphic  Encryption Tutorial

Routing Values Between Levels

We need to map this

Into that

Is there a natural operation on polynomials that moves values between slots?

x15 x16 x17 x18 x19 1 x21

x8 x9 x10 x11 x12 1 x14x1 x2 x3 x4 x5 0 x7

x22 x23 x24 x25 x26

x15 x17 x19 x21 x23 x25

x2 x4 0 x8 x10 x12 x14

x1 x3 x5 x7 x9 x11 1

x16 x18 1 x22 x24 x26

+ + + + + + + + + + + + +

… so we can use -add

Page 32: Homomorphic  Encryption Tutorial

April 19, 2023 32

Using Automorphisms

The operation Under some conditions on m, exists s.t.,

For any encoding ,

t is a generator of (if it exists)Once we have rotations, we can get every permutation on the plaintext slots

Using only shifts and SELECTs [GHS’12]How to implement homomorphically?

Page 33: Homomorphic  Encryption Tutorial

April 19, 2023 33

Homomorphic Automorphism

Recall decryption via inner product If then also Since for any , then also

Therefore is an encryption of relative to key Can publish key-switching matrix to get back an encryption relative to

Page 34: Homomorphic  Encryption Tutorial

April 19, 2023 34

Summary of RLWE HE encryption

Native plaintext space used to pack values

sk is , ctxt is a pair Decryption is

Inner product over Homomorphic addition, multiplication work element-size on the ’sHomomorphic automorphism to move ’s between the slots