-
-
Notifications
You must be signed in to change notification settings - Fork 9
Open
Labels
Type: Refactor 🔨A complete overhaul of a file, feature, or codebaseA complete overhaul of a file, feature, or codebase
Description
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: . We can generate the randomness either in the Python wrapper, or in the SyMPC call.
Line 47 in 368276c
let mut rng = rand::thread_rng(); - 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 codebaseA complete overhaul of a file, feature, or codebase