Notes on Extended Specification#

Extended Specification are for SecretFlow only and not application to other privacy-preserving applications.

If you are looking for definition like DistData, NodeEvalParam, etc. They are part of SecretFlow Open Specification.

SecretFlow Cluster#

Defined in cluster.proto.

SFClusterDesc#

SFClusterDesc stores intrinsic properties of a SecretFlow cluster, including:

  • sf_version: SecretFlow version

  • py_version: Python version

  • parties: Parties participated in computation

  • devices: Security configs of secret devices like protocol of SPU devices.

  • ray_fed_config: Backend selection of RayFed.

The reason we regard SFClusterDesc as intrinsic properties is because SFClusterDesc is important to data security and integrity. For example, a DistData generated by one cluster could only consumed by another cluster only if their SFClusterDesc are compatible.

SFClusterConfig#

A SFClusterConfig contains all information to setup a SecretFlow cluster, besides SFClusterDesc, it contains public configs and private configs.

PublicConfig should be revealed to all parties, including:

  • ray_fed_config: Addresses for RayFed. Parties need this information to communicate to each other.

  • spu_configs: Addresses for SPU devices. SPU Runtimes of all parties need this information to connect.

PrivateConfig is unique to each party, including:

  • self_party: who am I?

  • ray_head_addr: The address of Ray cluster.

SecretFlow Data Types#

Defined in data.proto.

DeviceObjectCollection#

We usually use DeviceObjectCollection to represent an MPC models. We would provide more details for this part later.