NssMPClib is a comprehensive Secure Multi-Party Computation (MPC) library developed by Xidian University NSS Lab. It implements privacy-preserving computation protocols based on both Arithmetic Secret Sharing and Function Secret Sharing.
Key Features
Multiple Security Models: Supports both Semi-Honest and Honest-Majority security assumptions
Flexible Party Configurations: 2-party and 3-party computation setups
Multiple Secret Sharing Schemes:
Additive Secret Sharing (2-party)
Replicated Secret Sharing (3-party)
Function Secret Sharing (FSS) implementations:
Distributed Point Function (DPF)
Distributed Comparison Function (DCF)
Distributed Interval Containment Function (DICF) with multiple variants (Standard, GROTTO, SIGMA)
Privacy-Preserving Neural Network Inference: Support for secure model evaluation
Ring-based Computation: All operations performed on finite rings for cryptographic security
System Requirements
OS: Linux (required for proper compilation)
Python: 3.10 or higher (recommended: 3.12)
PyTorch: >=2.3.0 (recommended: 2.7.1)
Additional: C++ compiler (gcc/g++), CUDA toolkit (for GPU support)
Installation
Step 1: Clone and Install
git clone https://github.com/XidianNSS/NssMPClib.git
cd NssMPClib
pip install -e .
Step 2: Generate Cryptographic Parameters
Generate essential precomputed parameters for MPC operations:
python scripts/offline_parameter_generation.py
Note: Parameters are saved to ~/NssMPClib/data/ (32-bit in data/32/, 64-bit in data/64/).
Quick Start: 2-Party Computation Example
Server (Party 0) - server.py:
from NssMPC import Party2PC, PartyRuntime, SEMI_HONEST, SecretTensor
import torch
server = Party2PC(0, SEMI_HONEST)
with PartyRuntime(server):
server.online()
x = torch.rand([10, 10])
share_x = SecretTensor(tensor=x)
result = share_x.restore().convert_to_real_field()
print("Server result:", result)
Client (Party 1) - client.py:
from NssMPC import Party2PC, PartyRuntime, SEMI_HONEST, SecretTensor
client = Party2PC(1, SEMI_HONEST)
with PartyRuntime(client):
client.online()
share_x = SecretTensor(src_id=0)
result = share_x.restore().convert_to_real_field()
print("Client result:", result)
Execution:
# Terminal 1: Start server
python server.py
# Terminal 2: Start client (in separate terminal)
python client.py
Configure the library in NssMPC/config/configs.json:
{
"BIT_LEN": 32, // Ring size: 32 or 64 bits
"DEVICE": "cuda", // Compute device: "cpu" or "cuda"
"DTYPE": "float", // Data type: "float" or "int"
"SCALE_BIT": 8, // Fixed-point scaling bits
"DEBUG_LEVEL": 2 // Debug level: 0-Secure, 1-Testing, 2-Development
}
DEBUG_LEVEL Details:
0 (Secure Mode): Highest security. All pre-generated keys are destroyed after use, strictly following the One-Time Pad principle.
1 (Testing Mode): Performance-optimized. Inputs with the same dimensions reuse the same set of keys, facilitating performance testing and batch operations.
2 (Development Mode): Convenient for development. Uses a single globally-shared pre-generated key for all operations. ONLY for non-sensitive development environments.
Usage Scenarios:
DEBUG_LEVEL: 0 - Production environments with real sensitive data
DEBUG_LEVEL: 1 - Performance testing environments, evaluating performance across different input sizes
DEBUG_LEVEL: 2 - Protocol development environments, quickly verifying functional correctness
NssMPClib - Secure Multi-Party Computation Library
Introduction
NssMPClib is a comprehensive Secure Multi-Party Computation (MPC) library developed by Xidian University NSS Lab. It implements privacy-preserving computation protocols based on both Arithmetic Secret Sharing and Function Secret Sharing.
Key Features
System Requirements
Installation
Step 1: Clone and Install
Step 2: Generate Cryptographic Parameters
Generate essential precomputed parameters for MPC operations:
Note: Parameters are saved to
~/NssMPClib/data/(32-bit indata/32/, 64-bit indata/64/).Quick Start: 2-Party Computation Example
Server (Party 0) -
server.py:Client (Party 1) -
client.py:Execution:
Running Built-in Examples
1. Arithmetic Secret Sharing (2-Party)
2. Neural Network Inference (2-Party)
3. Replicated Secret Sharing (3-Party)
Configuration
Configure the library in
NssMPC/config/configs.json:DEBUG_LEVEL Details:
Usage Scenarios:
DEBUG_LEVEL: 0- Production environments with real sensitive dataDEBUG_LEVEL: 1- Performance testing environments, evaluating performance across different input sizesDEBUG_LEVEL: 2- Protocol development environments, quickly verifying functional correctnessProject Structure
Precomputed Cryptographic Parameters
The library uses pre-generated parameters for efficiency. Key types include:
and so on…
Tutorials
Detailed tutorials are available in the
tutorials/directory:Best Practices
with PartyRuntime(party):Troubleshooting
Common Issues:
“Parameters not found” Error:
Port Already in Use: Change base port in
configs.jsonor kill existing processes.CUDA Errors: Set
DEVICE: "cpu"in config or check CUDA installation.Contributing
We welcome contributions! Please:
Citation
If you use NssMPClib in your research, please cite:
License
NssMPClib is released under the MIT License. See the LICENSE file for details.
Contact
Acknowledgements
Maintained by the Network and System Security (NSS) Laboratory at Xidian University.