A proof of concept framework to orchestrate Interoperable Differentially Private Data Clean Room Services on Intel SGX.
A Data Clean Room is a secure environment where organizations can collect data from multiple sources and combine it with their first-party data. Doing so allows marketers to leverage large, aggregated datasets of consumer behavior to provide insight into critical factors like performance, demographics, campaigns, etc.
Data clean rooms allow companies to extract value from aggregate datasets sourced from multiple parties while prioritizing user privacy and maintaining strict security measures.
This Repo follows following Contributing Guidelines
NOTE: This project is hosted under GSSoC'23. Please go through GSSoc_CONTRIBUTING.md before moving on the any issues. You can ask any queries on discord channel or Discussion Board mentioned.
- As of now this framework is only able to show a Proof of Concept for the architecture described in the spec. This framework will be used in a paper that I will be publishing soon. The paper will try to formalise data clean rooms. So, any thing that deviates this project from realising the paper is not in the scope of this project.
- Current PoC only shows an example of three collaborators, out of which two provide sources and one provides the transformation.
- Currently only Confidential GoApps are supported for transformations.
- The Code is not production ready and does not partake any security measures other than access control and differential privacy.
- The library is still not tested on actual SGX backed machines and but the PoC can be tested on simulation mode.
To Run an example Data Clean Room Scenario.
- This framework will not work on Windows. Make sure you have a linux machine installed.
- (Optional) Install Intel-SGX SDK
- Make sure you have Go 1.20+ installed.
- Make sure you have E-Go Compiler installed on your PC's
You can see the sample collaboration package in samples/init_collaboration. You can also look at some sample packages under construction along with their graph images in samples/test_graph
- 🏗 Build the
dcr
binary.
make build
![Screenshot 2023-05-11 at 4 09 17 AM](https://private-user-images.githubusercontent.com/92882879/237531975-30ae2382-6775-405d-9902-adafdb764251.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjYxNzE0OTUsIm5iZiI6MTcyNjE3MTE5NSwicGF0aCI6Ii85Mjg4Mjg3OS8yMzc1MzE5NzUtMzBhZTIzODItNjc3NS00MDVkLTk5MDItYWRhZmRiNzY0MjUxLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA5MTIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwOTEyVDE5NTk1NVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTRlNGMyNWU0MzIxY2MwY2I1NTZhYTc2ZDMzZTBlMDllZTA2ZTdmOWNjYzE2MTI2YWQzMjJkNzI1YmY5ZmMwZmImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.Q2OnW7bJ7oHSqHmpdPxZKeuEd8eeZMSCBHWYYSgxjUs)
![Screenshot 2023-05-11 at 4 10 33 AM](https://private-user-images.githubusercontent.com/92882879/237531990-8cd81896-cfd8-4724-85aa-afd7b2829c9b.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjYxNzE0OTUsIm5iZiI6MTcyNjE3MTE5NSwicGF0aCI6Ii85Mjg4Mjg3OS8yMzc1MzE5OTAtOGNkODE4OTYtY2ZkOC00NzI0LTg1YWEtYWZkN2IyODI5YzliLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA5MTIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwOTEyVDE5NTk1NVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWEzNGY1MjYwMzJlZWViMzVhNWI3MDRjYWNlMWJhYzY1MjMzOTk4YmRmODQ4MzliNWUyMmI5ZDdiMjU1MzI2ZjAmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.AVmZP2_hfl0v9HYW2U8ybh9KraTcLzrrj27bZSyrAiM)
- 🏃🏻♀️ Run the demonstration
./bin/dcr run --pkgpath samples/init_collaboration
Links: