Skip to content

Standalone Rust FSS functionality #4

@tholop

Description

@tholop

What?

Separate the Rust functionality from the Python wrapper in a neater way.

Why?

This would allow people who just care about Rust to use FSS directly, without the Python/Syft-friendly wrapper.
It will also make it easier to maintain, implement new FSS schemes, and attract contributors.

Breakdown

In Syft, our use-case for FSS is to generate large arrays of DPF and DIF keys with random alphas. This is not the most general use-case, where a user might just want to generate a single (alpha, beta)-DPF key. To support this, we would need to:

  • Separate the alpha/mask randomness generation from the (alpha, beta)-key generation. It means moving this line out of the Rust keygen:
    let mut rng = rand::thread_rng();
    . We can generate the randomness either in the Python wrapper, or in the SyMPC call.
  • It's a good opportunity to use cryptographically secure randomness (e.g. Torch CSPRNG)
  • Add support for arbitrary beta instead of beta=1

Metadata

Metadata

Assignees

Labels

Type: Refactor 🔨A complete overhaul of a file, feature, or codebase

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions