sycret
sycret copied to clipboard
Standalone Rust FSS functionality
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: https://github.com/OpenMined/sycret/blob/368276c2687462a9f00496771f102e84428fb74e/src/eq.rs#L47. 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