Top Banner
COMPUTING ON ENCRYPTED DATA Shai Halevi, IBM Research January 5, 2012
38

Computing on Encrypted Data

Apr 16, 2017

Download

Technology

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: Computing on Encrypted Data

COMPUTING ON ENCRYPTED DATA

Shai Halevi, IBM ResearchJanuary 5, 2012

Page 2: Computing on Encrypted Data

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

Computing on Encrypted Data

Page 3: Computing on Encrypted Data

Computing on Encrypted Data

• Wouldn’t it be nice to be able to…– Encrypt my data before sending to the cloud– While still allowing the cloud to

search/sort/edit/… this data on my behalf– Keeping the data in the cloud in encrypted form• Without needing to ship it back and forth to be

decrypted

Page 4: Computing on Encrypted Data

Computing on Encrypted Data

• Wouldn’t it be nice to be able to…– Encrypt my queries to the cloud– While still allowing the cloud to process them– Cloud returns encrypted answers• that I can decrypt

Page 5: Computing on Encrypted Data

Outsourcing Computation Privately

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

Page 6: Computing on Encrypted Data

$skj#hS28ksytA@ …

Outsourcing Computation Privately

Page 7: Computing on Encrypted Data

Outsourcing Computation Privately

$kjh9*mslt@na0&maXxjq02bflx

m^00a2nm5,A4.pE.abxp3m58bsa(3saM%w,snanbanq~mD=3akm2,AZ,ltnhde83|3mz{ndewiunb4]gnbTa*kjew^bwJ^mdns0

Page 8: Computing on Encrypted Data

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

e x x2e = (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 9: Computing on Encrypted Data

“Fully Homomorphic” Encryption

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

• Another example: private information retrievalEnc(f(x))

Enc(x) Eval f

Enc(A[i])Enc(i)i A[1 … n]

Page 10: Computing on Encrypted Data

HOW TO DO IT?

Page 11: Computing on Encrypted Data

Step 1: Boolean Circuit for f

• Every function can be constructed from Boolean AND, OR, NOT– Think of building it from hardware gates

• For any two bits b1, b2 (both 0/1 values)– NOT b1 = 1 – b1

– b1 AND b2 = b1b2

– b1 OR b2 = b1+b2– b1b2

• If we can do +, – , x, we can do everything

Page 12: Computing on Encrypted Data

Step 2: Encryption Supporting , • Open Problem for over 30 years• Gentry 2009: first plausible scheme– Security relies on hard problems in integer lattices

• Several other schemes in last two years

Fully homomorphic encryptionis possible

Page 13: Computing on Encrypted Data

HOW MUCH DOES IT COST?

Page 14: Computing on Encrypted Data

Performance

• A little slow…• First working implementation in mid-2010,

½ -hour to compute a single AND gate– 13-14 orders of magnitude slowdown

vs. computing on non-encrypted data• A faster “dumbed down” version– Can only evaluate “very simple functions”– About ½-second for an AND gate

Page 15: Computing on Encrypted Data

• Underlying “somewhat homomorphic” scheme• PK is 2 integers, SK is one integer

Dimension KeyGen Enc (amortized)

Dec / AND

2048800,000-bit

integers

1.25 sec 60 millisec 23 millisec

81923,200,000-bit

integers

10 sec 0.7 sec 0.12 sec

3276813,000,000-bit

integers

95 sec 5.3 sec 0.6 sec

Larg

e

Med

ium

S

mal

lPerformance

Page 16: Computing on Encrypted Data

Dimension KeyGen PK size AND

2048800,000-bit

integers

40 sec 70 MByte 31 sec

81923,200,000-bit

integers

8 min 285 MByte 3 min

3276813,000,000-bit

integers

2 hours 2.3 GByte 30 min

Larg

e

Med

ium

S

mal

lPerformance

• Fully homomorphic scheme

Page 17: Computing on Encrypted Data

Performance

• A little slow…• Butler Lampson: “I don’t think we’ll see

anyone using Gentry’s solution in our lifetimes […]” – Forbes, Dec-19, 2011

Page 18: Computing on Encrypted Data

New Stuff

• New techniques suggested during 2011• Promise ~3 orders of magnitude improvement

vs. Gentry’s original scheme– Implementations on the way

• Still very expensive, but maybe suitable for some niche applications

• Computing “simple functions” using these tools may be realistic

Page 19: Computing on Encrypted Data

WHAT CAN I USE?

Page 20: Computing on Encrypted Data

Things we can already use today

• Sometimes simple functions is all we need– Statistics, simple keyword match, etc.

• Interactive solutions are sometime faster– vs. the single round trip of Homomorphic Enc

• Great efficiency gains when settling for weaker notions of secrecy– “Order preserving encryption”– MIT’s CryptDB (onion encryption)

Page 21: Computing on Encrypted Data

QUESTIONS?

Page 22: Computing on Encrypted Data

BACKUP SLIDES

Page 23: Computing on Encrypted Data

Limitations of function-as-circuit

• Some performance optimizations are ruled out• Example: Binary search– log(n) steps to find element in an n-element array– But circuit must be of size ~n

• Example: private information retrieval– Non-encrypted access with one lookup– But encrypted access must touch all entries• Else you leak information (element is not in i’th entry)

• Only data-oblivious computation is possible

Page 24: Computing on Encrypted Data

Evaluate any function in four “easy” steps• Step 1: Encryption from linear ECCs– Additive homomorphism

• Step 2: ECC lives inside a ring– Also multiplicative homomorphism– But only for a few operations (low-degree poly’s)

• Step 3: Bootstrapping– Few ops (but not too few) any number of ops

• Step 4: Everything else– “Squashing” and other fun activities

The [Gentry 2009] blueprint

Error-Correcting Codes

Page 25: Computing on Encrypted Data

• For “random looking” codes, hard to distinguish close/far from code

• Many cryptosystems built on this hardness– E.g., [McEliece’78, AD’97, GGH’97, R’03,…]

Step 1: Encryption from Linear ECCs

Page 26: Computing on Encrypted Data

• KeyGen: choose a “random” Code– Secret key: “good representation” of Code• Allows correction of “large” errors

– Public key: “bad representation” of Code• Can generate “random code-words”• Hard to distinguish close/far from the code

• Enc(0): a word close to Code• Enc(1): a random word– Far from Code (with high probability)

Step 1: Encryption from Linear ECCs

Page 27: Computing on Encrypted Data

• Code determined by a secret integer p– Codewords: multiples of p

• Good representation: p itself• Bad representation:– N = pq, and also many xi = pqi + ri

• Enc(0): subset-sum(xi’s)+r mod N– r is new noise, chosen by encryptor

• Enc(1): random integer mod N

Example: Integers mod p [vDGHV 2010]

ri << p

p N

Page 28: Computing on Encrypted Data

• Both Enc(0), Enc(1) close to the code– Enc(0): distance to code is even– Enc(1): distance to code is odd– Security unaffected when p is odd

• In our example of integers mod p:– Enc(b) = 2(r+subset-sum(xi’s)) + b mod N

= kp + 2(r+subset-sum(ri’s))+b

– Dec(c) = (c mod p) mod 2

A Different Input EncodingNp

xi = pqi + ri

much smaller than p/2

Plaintext encodedin the “noise”

Page 29: Computing on Encrypted Data

• c1+c2 = (codeword1+codeword2) + (2r1+b1)+(2r2+b2 )– codeword1+codeword2 Code– (2r1+b1)+(2r2+b2 )=2(r1+r2)+b1+b2 is still small

• If 2(r1+r2)+b1+b2 < min-dist/2, thendist(c1+c2, Code) = 2(r1+r2)+b1+b2 dist(c1+c2, Code) b1+b2 (mod 2)

• Additively-homomorphic while close to Code

Additive Homomorphism

Page 30: Computing on Encrypted Data

Product in Ring of small elements is small

• What happens when multiplying in Ring:– c1∙c2 = (codeword1+2r1+b1) (codeword∙ 2+2r2+b2)

= codeword1∙X + Y codeword∙ 2

+ (2r1+b1) (∙ 2r2+b2)• If:– codeword1∙X + Y codeword∙ 2 Code– (2r1+b1) (∙ 2r2+b2) < min-dist/2

• Then– dist(c1c2, Code) = (2r1+b1) (∙ 2r2+b2) = b1∙b2 mod 2

Step 2: Code Lives in a Ring

Code is an ideal

Page 31: Computing on Encrypted Data

• Secret-key is p, public-key is N and the xi’s• ci = Encpk(bi) = 2(r+subset-sum(xi’s)) + b mod N

= kip + 2ri+bi

– Decsk(ci) = (ci mod p) mod 2• c1+c2 mod N = (k1p+2r1+b1)+(k2p+2r2+b2) – kqp

= k’p + 2(r1+r2) + (b1+b2)• c1c2 mod N = (k1p+2r1+b1)(k2p+2r2+b2) – kqp

= k’p + 2(2r1r2+r1b2+r2b1)+b1b2

• Additive, multiplicative homomorphism– As long as noise < p/2

Example: Integers mod p [vDGHV 2010]

xi = pqi + ri

Np

Page 32: Computing on Encrypted Data

• We need a linear error-correcting code C– With “good” and “bad” representations– C lives inside an algebraic ring R– C is an ideal in R– Sum, product of small elements in R is still small

• Can find such codes in Euclidean space– Often associated with lattices

• Then we get a “somewhat homomorphic” encryption, supporting low-degree polynomials– Homomorphism while close to the code

Summary Up To Now

Page 33: Computing on Encrypted Data

Step 3: Bootstrapping

P(x1, x2 ,…, xt)

x1

…x2

xt

P

• So far, can evaluate low-degree polynomials

Page 34: Computing on Encrypted Data

• So far, can evaluate low-degree polynomials

• Can eval y=P(x1,x2…,xn) when xi’s are “fresh”• But y is an “evaluated ciphertext”– Can still be decrypted– But eval Q(y) will increase noise too much

• “Somewhat Homomorphic” encryption (SWHE)

Step 3: Bootstrapping

x1

…x2

xt

P

P(x1, x2 ,…, xt)

Page 35: Computing on Encrypted Data

• So far, can evaluate low-degree polynomials

• Bootstrapping to handle higher degrees– We have a noisy evaluated ciphertext y– Want to get another y with less noise

Step 3: Bootstrapping

x1

…x2

xt

P

P(x1, x2 ,…, xt)

Page 36: Computing on Encrypted Data

• For ciphertext c, consider Dc(sk) = Decsk(c)– Hope: Dc(*) is a low-degree polynomial in sk

• Include in the public key also Encpk(sk)

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

Step 3: Bootstrapping

Dc

y

sk1

sk2

skn

c

Dc(sk)

= Decsk(c) = y

c’

Requires “circular security”

sk1

sk2

skn

Page 37: Computing on Encrypted Data

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

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

Step 3: Bootstrapping

Mc1,c2

y2

sk1

sk2

skn

c2

Mc1,c2(sk)

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

c’

y1c1

sk1

sk2

skn

Page 38: Computing on Encrypted Data

• Cryptosystems from [G’09, vDGHV’10, BG’11a] cannot handle their own decryption

• Tricks to “squash” the decryption procedure, making it low-degree– Nontrivial, requires putting more information

about the secret key in the public key– Requires yet another assumption, namely hardness

of the Sparse-Subset-Sum Problem (SSSP)– I will not talk about squashing here

Step 4: Everything Else