Keywords: Data Aggregation, User Privacy, Multiple Data Customers, Secure Two-party Computation, SPDZ.
Privacy-preserving data aggregation has become a fundamental tool for large-scale analytics in AI-driven and cloud-based systems. While existing solutions provide the default privacy guarantee, i.e., input confidential- ity, most assure a semi-honest adversary model and fail to simultaneously ensure user anonymity, selective disclosure, and result privacy in the multiple data customers environment. In this work, we introduce PRI- VADA, a maliciously secure data aggregation solution that uses MPC in the SPDZ framework. Unlike prior data aggregation schemes using MPC with/without SPDZ, PRIVADA supports multiple data customers while preventing inference of user participation and resisting collusions in real-world data aggregation applications.
Moreover, our work guarantees user privacy and result privacy, in addition to input privacy. PRIVADA out- performs the state-of-the-art solutions by providing security against participating parties, including malicious data owners, aggregators, and data customers. Our proof-of-concept implementation also supports the new privacy-preserving data aggregation by combining malicious security, being available for multiple data cus- tomers, and ensuring strong privacy guarantees in large-scale deployments. The aggregation operation on the aggregator side becomes simpler with PRIVADA, and experimental results show a 12–15 times speedup compared to the state-of-the-art. This confirms that malicious security and strong privacy guarantees can be achievable without sacrificing practicality.Clone the repository including all submodules:
git submodule update --init --recursiveFollow the MP-SPDZ documentation to build the mpspdz:spdz2k-party docker image:
docker build --tag mpspdz:spdz2k-party --build-arg machine=spdz2k-party.x .cd PRIVADAGenerate certificates for communication between clients and parties:
make prida+_ssl
⚠️ Warning: For N=15000, this step may take a considerable amount of time. Proceed with caution.
Copy the data owner and customer scripts to the MP-SPDZ external I/O directory:
cp Programs/Source/data_owner.py ../MP-SPDZ/ExternalIO/data_owner.py
cp Programs/Source/data_customer.py ../MP-SPDZ/ExternalIO/data_customer.pySet up the necessary docker containers (ensure docker daemon is running):
make create_containersNote: Make sure the docker daemon is running before executing this command.
Execute batch evaluation with the specified parameters:
python Programs/Source/run_batch.py \
-N 100 \
-M 1 \
--batch-size 500 \
--n-batch-size 700 \
--prog prida+_readability \
--timeout 10 \
--times 1 \
--n-threads 1 \
--log-dir logsParameter Description:
-N 100: Number of participants (N)-M 1: Number of machines (M)--batch-size 500: Batch size for processing--n-batch-size 700: Batch size for N processing--prog prida+_readability: Program to run--timeout 10: Timeout in seconds--times 1: Number of iterations--n-threads 1: Number of threads--log-dir logs: Directory for logs output