Skip to main content

compute_intersection_rsa

RSA Blinding Private Set intersection.

Order of operations: 1. Modeller sends the task request to the worker, containing the columns on which the intersection should be performed. 2. Worker generates an RSA key pair, and sends the public key to the modeller, keeping the private key to themself. 3 (Worker Side). Worker hashes and uses his private key to encrypt each row for the relevant columns, and then hashes again the obtained values. 3 (Modeller Side). Modeller receives the public key from the pod. Then he chooses random factors (as many as the size of the rows in his data), which he encrypts using the public key. He then hashes each row of his input and multiplies it with the encrypted random factors, which is referred to as blinding. 4. Modeller sends his blinded inputs to the worker. 5. Worker receives the blinded inputs from the modeller. He first encrypts the blinded values using his private key, and then hashes each of the results. He then sends the list of blinded hashed values and the list of hashed values from step 3 to the modeller. 6. Modeller receives the two lists from the pod. He then can compute the private set intersection. For more details see: https://eprint.iacr.org/2009/491.pdf

Classes

ComputeIntersectionRSA

class ComputeIntersectionRSA(**kwargs: Any):

Algorithm for computing the private set intersection with rsa blinding.

Ancestors

  • bitfount.federated.algorithms.base._BaseAlgorithmFactory
  • bitfount.federated.mixins._PSIAlgorithmsMixIn
  • abc.ABC
  • bitfount.federated.roles._RolesMixIn
  • bitfount.types._BaseSerializableObjectMixIn
  • bitfount.federated.types._DataLessAlgorithm

Methods


def modeller(    self, **kwargs: Any,)> bitfount.federated.algorithms.compute_intersection_rsa._ModellerSide:

Returns the modeller side of the SqlQuery algorithm.

def worker(    self, **kwargs: Any,)> bitfount.federated.algorithms.compute_intersection_rsa._WorkerSide:

Returns the worker side of the SqlQuery algorithm.

Variables

  • static nested_fields : ClassVar[Dict[str, Mapping[str, Any]]]