Releases: data61/MP-SPDZ
Releases Β· data61/MP-SPDZ
Release list
Maintenance
- Fixed security bug: malicious parties not committed to MAC key across threads and executions
- Fixed security bug: insufficient checks in Rep4
- Improved radix sort
- Optimized 32-bit computation
- Multithreaded Rep3 shuffling
- Improved benchmarking in binary virtual machines
- More sophisticated register allocation
- C++-20 requirement throughout
- Option for parametrized communication cost
- Use budget when merging function calls
- Timeout for compilation to allow identification of blowouts
- Option to disable index checks in loops
- File persistence for public integers
Expected communication cost in compiler
- Expected communication cost in compiler
- Semi-honest option of Rep4
- Reduced communication for preprocessing in Dealer protocol
- Option of choosing SoftSpoken parameter at run-time
- BERT functionality (@hiddely)
- Recommended reading list in documentation
- Fixed security bug: minor security parameter degradation in HighGear input protocol
Protocols with function-dependent preprocessing
- Add protocols with function-dependent preprocessing (https://eprint.iacr.org/2025/919)
- Parallelize shuffling (@vincent-ehrmanntraut)
- More efficient probabilistic truncation in Rep3
- More efficient binary to arithmetic conversion for one bit in Rep3
- Backend optimizations benefitting the most efficient protocols like Rep3
- Allow regint registers as argument in exported functions
- More efficient dot product for GF(2^n)
- File persistence for GF(2^n)
- Output of binary secrets
- SHA256
- Improved navigation by providing links to relevant papers (
./compile.py --papers) and outputting which code is executed (./<protocol>-party.x --code-locations) - Fixed security bug: remove MAC key in case of failure
Functionality to call high-level code from C++
- Functionality to call high-level code from C++
- Matrix triples from file for all appropriate protocols
- Exit with message on errors instead of uncaught exceptions
- Reduce memory usage for binary memory
- Optimized cint-regint conversion in Dealer protocol
- Fixed security bug: missing MAC check in probabilistic truncation
Maintenance
- Inference with non-sequential PyTorch networks
- SHA-3 for any input length (@hiddely)
- Improved client facilities
- Shuffling with malicious security for SPDZ-wise protocols by Asharov et al.
- More reusable bytecode via in-thread calling facility
- Recursive functions without return values
- Fewer rounds for parallel matrix multiplications (@vincent-ehrmanntraut)
- Optimized usage of SoftSpokenOT in semi-honest protocols
- More integrity checks on storage in MAC-based protocols
- Use C++17
- Use glibc 2.18 for the binaries
- Fixed security bugs: remotely caused buffer overflows (#1382)
- Fixed security bug: Missing randomization before revealing to client
- Fixed security bug: Bias in Rep3 secure shuffling
Multinode computation
- Functionality for multiple nodes per party
- Functionality to use disk space for high-level data structures
- True division is always fixed-point division (similar to Python 3)
- Compiler option to optimize for specific protocol
- Cleartext permutation
- Faster compilation and lower bytecode size
- Functionality to output secret shares from high-level code
- Run-time command-line arguments accessible from high-level code
- Client connection setup specifies cleartext domain
- Compile-time parameter for connection timeout
- Prevent connections from timing out (@ParallelogramPal)
- More ECDSA examples
- More flexible multiplication instruction
- Dot product instruction supports several operations at once
- Example-based virtual machine explanation
Maintenance
- Path Oblivious Heap (@tskovlund)
- Adjust batch and bucket size to program
- Direct communication available in more protocols
- Option for seed in fake preprocessing (@strieflin)
- Lower memory usage due to improved register allocation
- New instructions to speed up CISC compilation
- Protocol implementation example
- Fixed security bug: missing MAC checks in multi-threaded programs
- Fixed security bug: race condition in MAC check
- Fixed security bug: missing shuffling check in PS mod 2^k and Brain
- Fixed security bug: insufficient drowning in pairwise protocols
Maintenance
- More extensive benchmarking outputs
- Replace MPIR by GMP
- Secure reading of edaBits from files
- Semi-honest client communication
- Back-propagation for average pooling
- Parallelized convolution
- Probabilistic truncation as in ABY3
- More balanced communication in Shamir secret sharing
- Avoid unnecessary communication in Dealer protocol
- Linear solver using Cholesky decomposition
- Accept .py files for compilation
- Fixed security bug: proper accounting for random elements
More accessible machine learning functionality
- Easier-to-use machine learning interface
- Integrated compilation-execution facility
- Import/export sequential models and parameters from/to PyTorch
- Binary-format input files
- Less aggressive round optimization for faster compilation by default
- Multithreading with client interface
- Functionality to protect order of specific memory accesses
- Oblivious transfer works again on older (pre-2011) x86 CPUs
- clang is used by default
Decision tree training
- Decision tree training
- Optimized oblivious shuffle in Rep3
- Optimized daBit generation in Rep3 and semi-honest HE-based 2PC
- Optimized element-vector AND in SemiBin
- Optimized input protocol in Shamir-based protocols
- Square-root ORAM (@Quitlox)
- Improved ORAM in binary circuits
- UTF-8 outputs