Skip to content

A Julia implementation of the Paillier partially homomorphic encryption system

Notifications You must be signed in to change notification settings

hardbyte/Paillier.jl

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

85 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Paillier.jl is a Julia package implementing the basics of the Paillier partially homomorphic cryptosystem.

Build Status

The homomorphic properties of the paillier crypto system are:

  • Encrypted numbers can be multiplied by a non encrypted scalar.
  • Encrypted numbers can be added together.

Warning - Here be dragons.

This is rough! Don't use for anything serious yet! Not reviewed by a cryptographer.

Constant time functions have not been used, so this could be susceptible to timing side channel attacks.

We don't obfuscate the results of encrypted math operations by default. This is an optimization copied from python-paillier, however after any homomorphic operation - before sharing an EncryptedNumber or EncryptedArray you must call obfuscate() to secure the ciphertext. Ideally this will occur behind the scenes at serialization time, but this library does not help with serialization (yet).

Based off the sketch written by Morten Dahl at Snips, and the python-paillier library written by CSIRO's Data61 as part of N1 Analytics.