Fair Computation
using Enclaves and Shared Ledger
Rohit Sinha, Siva Gaddam, and Ranjit Kumaresan
Open Source Enclaves Workshop 2019
Fair Computation using Enclaves and Shared Ledger Rohit Sinha , Siva - - PowerPoint PPT Presentation
Fair Computation using Enclaves and Shared Ledger Rohit Sinha , Siva Gaddam, and Ranjit Kumaresan Open Source Enclaves Workshop 2019 Transparent Mint Transparent Mint Alice Mint Transparent Mint Merchant ID Date Amount Alice 2014-06-03
Rohit Sinha, Siva Gaddam, and Ranjit Kumaresan
Open Source Enclaves Workshop 2019
Alice Mint
Merchant ID Date Amount 52544965 2014-06-03 13:37 PM $23.00 … … … 12144989 2014-06-29 20:49 PM $48.12 Merchant ID Category 52544965 Restaurants … … 12144989 Gas Stations
Mint’s Proprietary Data User’s TX Data
Alice Mint
Merchant ID Date Amount 52544965 2014-06-03 13:37 PM $23.00 … … … 12144989 2014-06-29 20:49 PM $48.12 Merchant ID Category 52544965 Restaurants … … 12144989 Gas Stations
Mint’s Proprietary Data User’s TX Data
Compute Provider
Report
Alice Mint
Merchant ID Date Amount 52544965 2014-06-03 13:37 PM $23.00 … … … 12144989 2014-06-29 20:49 PM $48.12 Merchant ID Category 52544965 Restaurants … … 12144989 Gas Stations
Mint’s Proprietary Data User’s TX Data
Compute Provider
Report
Alice Mint
Merchant ID Date Amount 52544965 2014-06-03 13:37 PM $23.00 … … … 12144989 2014-06-29 20:49 PM $48.12 Merchant ID Category 52544965 Restaurants … … 12144989 Gas Stations
Mint’s Proprietary Data User’s TX Data
Compute Provider
Report
Alice Bank A Bank B Mint
Compute Provider
Report
Alice Bank A Bank B Mint
Compute Provider
Report
Alice Bank A Bank B Mint
Privacy: Only reveal f(Alice_txs, Mint_db)
Compute Provider
Report
Alice Bank A Bank B Mint
Privacy: Only reveal f(Alice_txs, Mint_db) Fairness: if anyone gets the output, then so must all honest parties
Compute Provider
Report
Alice Bank A Bank B Mint
Privacy: Only reveal f(Alice_txs, Mint_db) Fairness: if anyone gets the output, then so must all honest parties
Impossible in Malicious Setting [Cleve86]
TEE
k2
k1
ko
(Unfair) Secure Computation
TEE
k2
k1
ko
(Unfair) Secure Computation
Systems based on Intel SGX VC3 for Map-Reduce [SCF+15] Opaque for Spark [ZDB+17] ObliDB [EZ17], StealthDB [GVG17] for SQL
TEE
k2
k1
ko
(Unfair) Secure Computation
Systems based on Intel SGX VC3 for Map-Reduce [SCF+15] Opaque for Spark [ZDB+17] ObliDB [EZ17], StealthDB [GVG17] for SQL
TEE
k2
k1
ko
(Unfair) Secure Computation Fair Reconstruction
Ledger
…
TEE TEE
ko ko ko
Systems based on Intel SGX VC3 for Map-Reduce [SCF+15] Opaque for Spark [ZDB+17] ObliDB [EZ17], StealthDB [GVG17] for SQL
TEE
k2
k1
ko
(Unfair) Secure Computation Fair Reconstruction
Ledger
…
TEE TEE
ko ko ko
Systems based on Intel SGX VC3 for Map-Reduce [SCF+15] Opaque for Spark [ZDB+17] ObliDB [EZ17], StealthDB [GVG17] for SQL
Fair n-party broadcast using t < n TEE nodes and a shared ledger (corruption threshold t)
TEE
k2
k1
ko
(Unfair) Secure Computation Fair Reconstruction
Ledger
…
TEE TEE
ko ko ko
Systems based on Intel SGX VC3 for Map-Reduce [SCF+15] Opaque for Spark [ZDB+17] ObliDB [EZ17], StealthDB [GVG17] for SQL
Fair n-party broadcast using t < n TEE nodes and a shared ledger (corruption threshold t) [CGJ+17]: all n parties need TEE
Collective Revenue Capture Fair broadcast of model
ML train
TEE
ML train ML infer
Crowdsourced Machine Learning Fair exchange of data and prediction prediction data Collective Revenue Capture Fair broadcast of model
ML train
TEE TEE
TEE
TEE
TEE
Enc(pk_Alice, ky)
TEE
Enc(pk_Alice, ky)
TEE
Enc(pk_Alice, ky)
TEE
Enc(pk_Alice, ky)
Ledger
…
Ledger
…
Ledger
…
x
σ
Ledger
…
x
σ
Ledger
…
x
σ
TEE Ledger
…
TEE Ledger
…
TEE Ledger
…
TEE Ledger
…
Enc(pk_Alice, ky) ||
TEE Ledger
…
Enc(pk_Alice, ky) ||
TEE Ledger
…
Enc(pk_Alice, ky) ||
σ
TEE Ledger
…
Enc(pk_Alice, ky) ||
σ
TEE Ledger
…
TEE Ledger
…
TEE Ledger
…
TEE Ledger
…
Enc(pk_Alice, ky) || Enc(pk_BankA, ky) || Enc(pk_BankA, ky)
TEE Ledger
…
Enc(pk_Alice, ky) || Enc(pk_BankA, ky) || Enc(pk_BankA, ky)
TEE Ledger
…
Enc(pk_Alice, ky) || Enc(pk_BankA, ky) || Enc(pk_BankA, ky)
TEE Ledger
…
Enc(pk_Alice, ky) || Enc(pk_BankA, ky) || Enc(pk_BankA, ky) Enc(pk_BankA, ky)
Ledger
…
Ledger
…
Ledger
…
Ledger
…
Ledger
…
Ledger
…
Ledger
…
Ledger
…
Ledger
…
= Epk_Alice(ky)
Ledger
…
= Epk_Alice(ky)
Ledger
…
= Epk_Alice(ky)
Ledger
…
= Epk_Alice(ky)
Ledger
…
= Epk_Alice(ky)
https://eprint.iacr.org/2019/178