Class MultipartyRNS
Defined in File rns-multiparty.h
Page Contents
Inheritance Relationships
Base Type
public lbcrypto::MultipartyBase< DCRTPoly >
(Template Class MultipartyBase)
Derived Types
public lbcrypto::MultipartyBFVRNS
(Class MultipartyBFVRNS)public lbcrypto::MultipartyBGVRNS
(Class MultipartyBGVRNS)public lbcrypto::MultipartyCKKSRNS
(Class MultipartyCKKSRNS)
Class Documentation
-
class lbcrypto::MultipartyRNS : public lbcrypto::MultipartyBase<DCRTPoly>
Inheritence diagram for lbcrypto::MultipartyRNS:
Collaboration diagram for lbcrypto::MultipartyRNS:
Abstract interface class for LBC Multiparty algorithms based on threshold FHE. A version of this multiparty scheme built on the BGV scheme is seen here:
Asharov G., Jain A., López-Alt A., Tromer E., Vaikuntanathan V., Wichs D. (2012) Multiparty Computation with Low Communication, Computation and Interaction via Threshold FHE. In: Pointcheval D., Johansson T. (eds) Advances in Cryptology – EUROCRYPT 2012. EUROCRYPT 2012. Lecture Notes in Computer Science, vol 7237. Springer, Berlin, Heidelberg
During offline key generation, this multiparty scheme relies on the clients coordinating their public key generation. To do this, a single client generates a public-secret key pair. This public key is shared with other keys which use an element in the public key to generate their own public keys. The clients generate a shared key pair using a scheme-specific approach, then generate re-encryption keys. Re-encryption keys are uploaded to the server. Clients encrypt data with their public keys and send the encrypted data server. The data is re-encrypted. Computations are then run on the data. The result is sent to each of the clients. One client runs a “Leader” multiparty decryption operation with its own secret key. All other clients run a regular “Main” multiparty decryption with their own secret key. The resulting partially decrypted ciphertext are then fully decrypted with the decryption fusion algorithms.
- Template Parameters
Element – a ring element.
Subclassed by lbcrypto::MultipartyBFVRNS, lbcrypto::MultipartyBGVRNS, lbcrypto::MultipartyCKKSRNS
Public Functions
-
inline virtual ~MultipartyRNS()
-
Ciphertext<DCRTPoly> MultipartyDecryptMain(ConstCiphertext<DCRTPoly> ciphertext, const PrivateKey<DCRTPoly> privateKey) const override
-
Ciphertext<DCRTPoly> MultipartyDecryptLead(ConstCiphertext<DCRTPoly> ciphertext, const PrivateKey<DCRTPoly> privateKey) const override
-
EvalKey<DCRTPoly> MultiMultEvalKey(PrivateKey<DCRTPoly> privateKey, EvalKey<DCRTPoly> evalKey) const override
-
inline std::string SerializedObjectName() const