Slide 1

Slide 1 text

No content

Slide 2

Slide 2 text

No content

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

What If?

Slide 5

Slide 5 text

{ Cloud Security for Real This Time: Homomorphic Encryption and the Future of Data Privacy Craig Stuntz Improving Enterprises

Slide 6

Slide 6 text

https://speakerdeck.com/craigstuntz

Slide 7

Slide 7 text

TLS Changed the Internet

Slide 8

Slide 8 text

Browser Server Application TLS: Safe (mostly!), but must decrypt to do business

Slide 9

Slide 9 text

What if it’s stolen?

Slide 10

Slide 10 text

Consumer “I don’t want my personal information stolen.” “I’d rather not have to install software to manage my finances.” Cloud Service Provider “I don’t want the data I store to make me a target.” “I can protect my business methods by not redistributing my code.”

Slide 11

Slide 11 text

Homomorphic Encryption In a Nutshell Client Server Data Cyphertext Result Cyphertext Computation Homomorphic Data Plaintext Result Plaintext

Slide 12

Slide 12 text

Rot-13!

Slide 13

Slide 13 text

Awesoma Powa!

Slide 14

Slide 14 text

Let’s launch a startup! concatenatr Join us!

Slide 15

Slide 15 text

(Using Goldwasser and Micali’s algorithm developed 20 years earlier)

Slide 16

Slide 16 text

Unpadded RSA = mod 1 ∙ 2 = 1 mod ∙ (2 mod ) = (1 ∙ 2 ) mod = 1 ∙ 2 mod = E(1 ∙ 2 )

Slide 17

Slide 17 text

Pivot! multiplir We make products Awesome! Now add. Uhhh….

Slide 18

Slide 18 text

 Multiply  Add, subtract, exponents, etc.  Doesn’t have to be (quite) Turing complete  Conditional branching and loops, of a sort  Cannot perform conditional jumps based on (encrypted) user input Fully Homomorphic Encryption

Slide 19

Slide 19 text

Functional Completeness and Universal Gates  NAND  NOR  AND and NOT  XOR and AND

Slide 20

Slide 20 text

Addition, Multiplication Over GF(2) + 0 1 0 0 1 1 1 0 * 0 1 0 0 0 1 0 1

Slide 21

Slide 21 text

> def choose(first, second, choose_first): .. return first if choose_first else second .. > choose(True, False, True) => True > choose(True, False, False) => False first choose_first second

Slide 22

Slide 22 text

> def my_factorial(n): .. result = 1 .. while n > 1: .. result *= n .. n -= 1 .. return result > def my_factorial_less_than_20(n): .. result = 1; .. for i in range(2, 20): .. result *= 1 if i > n else i .. return result > my_factorial_less_than_20(4) => 24 > my_factorial_less_than_20(100) => 121645100408832000L > my_factorial_less_than_20(1000) => 121645100408832000L

Slide 23

Slide 23 text

Fast! Turing Complete* Strong Encryption Practical Homomorphic Encryption

Slide 24

Slide 24 text

No content

Slide 25

Slide 25 text

Craig Gentry IBM Research

Slide 26

Slide 26 text

Result Cyphertext Output Homomorphic reencryption algorithm Bootstrap Lossy Multiply Lossless Add Data Cyphertext Input

Slide 27

Slide 27 text

E(E(E(plaintext))) E(E(plaintext)) E(plaintext) Plaintext Bootstrappable Encryption

Slide 28

Slide 28 text

 “Nevertheless, the authors of this method to concede that making this scheme practical remains an open problem.”  “There exist well known solutions for secure computation of any function… It seems hard to apply these methods to complete continuous functions or represent Real numbers, since the methods inherently work over finite fields.”  “An encryption scheme with these two properties is called a homomorphic encryption scheme. The Paillier system is one homomorphic encryption scheme, but more ones [sic] exist.” Patent Encumbrance

Slide 29

Slide 29 text

Limitations  Server doesn’t have data to, e.g. hand off to third parties  Some fully homomorphic cryptosystems are relatively untested and security not proven. (Both in terms of algorithms and implementation.)  Space issues  Algorithms which operate on homomorphically encrypted data are, for now, anyway, computationally expensive  Client complexity and deployment  Not always clear when to choose fully homomorphic algorithms.  Not a cure-all. Metadata and side-channels still a problem  Moving target!  Patent encumbered

Slide 30

Slide 30 text

CryptDB  Query-based encryption  Requires no changes to DB server  Tested on phpBB, OpenEMR, TPC-C, etc.  Only 14-26% slower than unmodified apps.

Slide 31

Slide 31 text

Zero Knowledge Proof Image: Wikimedia Commons / User:Dake

Slide 32

Slide 32 text

2 Party Secure Computation Sends c = E(x) to Bob Computes and sends c’ = E(f(x,y)), ZKP of c’ correctness to Alice Decrypt c’, compute ZKP of valid decryption, and return both to Bob HELLO M y N ame I s Alice HELLO M y N ame I s Bob

Slide 33

Slide 33 text

The Future?

Slide 34

Slide 34 text

 Computing Arbitrary Functions of Encrypted Data, by Craig Gentry. Communications of the ACM, Vol. 53, No.3  Building the Swiss Army Knife, by Boaz Barak and Zvika Brakerski  HElib (source code)  CryptDB: Processing Queries on an Encrypted Database, by Raluca Ada Popa, Catherine M.S. Redfield, Nickolai Zeldovich, and Hari Balakrishnan Further reading