/ppid3

Implementation of the "Privacy preserving ID3 using Gini Index over horizontally partitioned data" as described by S. Samet and A. Miri.

Primary LanguageJavaMIT LicenseMIT

ppid3

Implementation of the "Privacy preserving ID3 using Gini Index over horizontally partitioned data" as described by S. Samet and A. Miri.

Project Structure

Implementations of the two subprotocols: "Multi-party Addition" and "Multi-party Multiplication" can be found in the computations package. See the Javadoc of SecureComputationMaster.java for detailed usage information.

The "Secure multi-party square division" protocol implementation and the ID3 itself can be found in id3_horizontal package.

Examples can be found in module: examples.

Current State

The current implementation only works with two involved parties. If more parties are involved and the runtime should not grow exponentially, there is a need to share a private key. Otherwise, the final result could not be properly decrypted.

An alternative solution to replace the private key exchange is the usage of a custom key-pair on each party. When using the Paillier cryptographic system the size of this key-pair has to be big enough to hold all possible encrypted values from the previous parties. Unfortunately this leads to an exponentially growing runtime and much overhead for organizing the different key-pairs.

Dependencies

https://github.com/kunerd/jpaillier

References