Implementation of Homomorphic Encryption

Hello all,

I am planning to work on Implementation of Homomorphic Encryption with some demo example of multiparty computation.

So I opened here an issue.
https://github.com/DaGenix/rust-crypto/issues/444

can someone suggest me how should I start this?
I am familiar with RUST basics.

Thanks

1 Like

I have implemented the Paillier cryptosystem some time ago: GitHub - kunerd/rpaillier: A Rust implementation of the Paillier cryptosystem. You can also find a Java implementation of the Paillier cryptosystem and a multiparty-computation algorithm (ID3) on my github account. (GitHub - kunerd/ppid3: Implementation of the "Privacy preserving ID3 using Gini Index over horizontally partitioned data" as described by S. Samet and A. Miri.). Maybe this will help you a bit.

1 Like

Thanks! I would like to extend this for project for other operation also (eg: multiplcation)

Note that rust-crypto is no longer maintained. (though RustCrypto project aims to supersede it) So it will be better to start such project as a separate crate in the same fashion as rpaillier.

1 Like

@manishkk: Sorry for the late response, but currently I haven't much time for open source development or community work :cry:. I don't know your crypto background, but Paillier crypto system doesn't seem to be uses very often in real world applications (at least it was not as I worked on my projects). From your main post I assume that you are interested in similar (privacy preserving) algorithms like I worked on and which were the reason for me to develop jpaillier and rpaillier. During the work on my Master thesis I saw a lot of research work on other such algorithms. So I would suggest to use Paillier only as a starting point, because it's not to hard to understand (at least it wasn't for me - and I'm by no means a mathematician). For me working on it also was a good starting point to learn more about cryptographically secure implementations, side channel attacks and such stuff, but keep in mind, that my implementations of Paillier are not hardened against such attacks. If you still want to do something with Paillier, there is a second use case described in Paillier's paper - using it to create digital signatures, if I remember correctly. Maybe you are interested in implementing this.

Hope I could help you a bit.

Thanks for your reply!

Are you talking about this issue?
https://github.com/kunerd/jpaillier/issues/4

The signature algorithm is described in Paillier's paper starting at page 8 (section 5). The decryption optimization is described at p. 9 (section 6).

1 Like