Slide 1

Slide 1 text

Sefik Serengil Homomorphic Encryption In Python software engineer @ vorboss London 2024, Jul 02

Slide 2

Slide 2 text

Sefik Serengil Software Engineer About Me sefiks.com @serengil @sefiks serengil UK Global Talent

Slide 3

Slide 3 text

sefiks.com @serengil @sefiks LightPHE serengil RetinaFace About Me 11K 1K 500 50 101 TensorFlow 1K

Slide 4

Slide 4 text

PyData London β€˜24 PyData London’s 74th Meetup 2023, May 2 2024, June 16 Billion-Scale Facial Recognition The Art and Science of Deep Face Recognition in Python

Slide 5

Slide 5 text

sefiks.com @serengil @sefiks serengil

Slide 6

Slide 6 text

sefiks.com @serengil @sefiks serengil

Slide 7

Slide 7 text

sefiks.com @serengil @sefiks serengil

Slide 8

Slide 8 text

sefiks.com @serengil @sefiks serengil On-Prem Cloud salary, key Key can be stolen in this design!

Slide 9

Slide 9 text

sefiks.com @serengil @sefiks serengil On-Prem Cloud encrypted_salary

Slide 10

Slide 10 text

sefiks.com @serengil @sefiks serengil On-Prem Cloud encrypted_salary encrypted_salary We cannot use the computation power of cloud in this design! encrypted_salary

Slide 11

Slide 11 text

sefiks.com @serengil @sefiks serengil Can Update Be Done In The Cloud Without Key?

Slide 12

Slide 12 text

RSA sefiks.com @serengil @sefiks serengil πœ€(π‘š) = π‘šπ‘’π‘šπ‘œπ‘‘π‘› πœ€(π‘š1 ) = (π‘š1 )π‘’π‘šπ‘œπ‘‘π‘› πœ€(π‘š2 ) = (π‘š2 )π‘’π‘šπ‘œπ‘‘π‘› πœ€(π‘š1 ) Γ— πœ€(π‘š2 ) = (π‘š1 )𝑒 Γ— (π‘š2 )π‘’π‘šπ‘œπ‘‘π‘› πœ€(π‘š1 ) Γ— πœ€(π‘š2 ) = (π‘š1 Γ— π‘š2 )π‘’π‘šπ‘œπ‘‘π‘› πœ€(π‘š1 Γ— π‘š2 ) = (π‘š1 Γ— π‘š2 )π‘’π‘šπ‘œπ‘‘π‘› πœ€(π‘š1 Γ— π‘š2 ) = πœ€(π‘š1 ) Γ— πœ€(π‘š2 ) RSA is multiplicatively homomorphic! https://sefiks.com/2018/05/21/the-math-behind-rsa-algorithm/

Slide 13

Slide 13 text

Paillier sefiks.com @serengil @sefiks serengil πœ€(π‘š, π‘Ÿ) = π‘”π‘š Γ— π‘Ÿπ‘›π‘šπ‘œπ‘‘π‘›2 πœ€(π‘š1 , π‘Ÿ1 ) = π‘”π‘š1 Γ— (π‘Ÿ1 )π‘›π‘šπ‘œπ‘‘π‘›2 πœ€(π‘š2 , π‘Ÿ2 ) = π‘”π‘š2 Γ— (π‘Ÿ2 )π‘›π‘šπ‘œπ‘‘π‘›2 πœ€(π‘š1 , π‘Ÿ1 ) Γ— πœ€(π‘š2 , π‘Ÿ2 ) = π‘”π‘š1 Γ— (π‘Ÿ1 )𝑛 Γ— π‘”π‘š2 Γ— (π‘Ÿ2 )π‘›π‘šπ‘œπ‘‘π‘›2 πœ€(π‘š1 , π‘Ÿ1 ) Γ— πœ€(π‘š2 , π‘Ÿ2 ) = π‘”π‘š1+π‘š2 Γ— (π‘Ÿ1 Γ— π‘Ÿ2 )π‘›π‘šπ‘œπ‘‘π‘›2 πœ€(π‘š1 + π‘š2 , π‘Ÿ1 Γ— π‘Ÿ2 ) = π‘”π‘š1+π‘š2 Γ— (π‘Ÿ1 Γ— π‘Ÿ2 )π‘›π‘šπ‘œπ‘‘π‘›2 πœ€(π‘š1 + π‘š2 , π‘Ÿ1 Γ— π‘Ÿ2 ) = πœ€(π‘š1 , π‘Ÿ1 ) Γ— πœ€(π‘š2 , π‘Ÿ2 ) Paillier is additively homomorphic sefiks.com/2023/04/03/a-step-by-step-partially-homomorphic-encryption-example-with-paillier-in-python/

Slide 14

Slide 14 text

sefiks.com @serengil @sefiks serengil PHE Algorithms

Slide 15

Slide 15 text

LightPHE A Hybrid Partially Homomorphic Encryption Library for Python β€’ Open sourced at github.com/serengil/LightPHE under MIT license β€’ Can be installed with command `pip install lightphe` β€’ Wrapping RSA, ElGamal, Exponential ElGamal, Elliptic Curve ElGamal, Paillier, Damgard-Jurik, Okamoto–Uchiyama, Benaloh, Naccache–Stern, Goldwasser–Micali β€’ Stars are welcome! sefiks.com @serengil @sefiks serengil LightPHE

Slide 16

Slide 16 text

sefiks.com @serengil @sefiks serengil Building a Cryptosystem This generates random private - public key pair

Slide 17

Slide 17 text

sefiks.com @serengil @sefiks serengil Encryption and Decryption

Slide 18

Slide 18 text

sefiks.com @serengil @sefiks serengil Homomorphic Addition

Slide 19

Slide 19 text

sefiks.com @serengil @sefiks serengil Scalar Multiplication

Slide 20

Slide 20 text

sefiks.com @serengil @sefiks serengil Unsupported Operations

Slide 21

Slide 21 text

sefiks.com @serengil @sefiks serengil Homomorphic Multiplication

Slide 22

Slide 22 text

PHE vs FHE β€’ Notably faster β€’ Demands fewer computational resources β€’ Generating much smaller ciphertexts β€’ Distributing much smaller keys β€’ Well-suited for memory-constrained environments β€’ Strikes a favorable balance for practical use cases sefiks.com @serengil @sefiks serengil

Slide 23

Slide 23 text

Thank you for your attention! sefiks.com @serengil @sefiks serengil