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 52544965 $23.00 13:37 PM User’s TX Data … … … 2014-06-29 12144989 $48.12 20:49 PM Merchant ID Category 52544965 Restaurants Mint’s Proprietary … … Data 12144989 Gas Stations Mint
Transparent Mint Merchant ID Date Amount Alice 2014-06-03 52544965 $23.00 13:37 PM User’s TX Data … … … 2014-06-29 12144989 $48.12 20:49 PM Compute Provider Report Merchant ID Category 52544965 Restaurants Mint’s Proprietary … … Data 12144989 Gas Stations Mint
Transparent Mint Merchant ID Date Amount Alice 2014-06-03 52544965 $23.00 13:37 PM User’s TX Data … … … 2014-06-29 12144989 $48.12 20:49 PM Compute Provider Report Merchant ID Category 52544965 Restaurants Mint’s Proprietary … … Data 12144989 Gas Stations Mint
Transparent Mint Merchant ID Date Amount Alice Bank A 2014-06-03 52544965 $23.00 13:37 PM User’s TX Data … … … 2014-06-29 12144989 $48.12 20:49 PM Compute Provider Report Merchant ID Category 52544965 Restaurants Mint’s Proprietary … … Data 12144989 Gas Stations Mint Bank B
Towards Transparency via Privacy and Fairness Alice Bank A Compute Provider Report Mint Bank B
Towards Transparency via Privacy and Fairness Alice Bank A Privacy : Only reveal f(Alice_txs, Mint_db) Compute Provider Report Mint Bank B
Towards Transparency via Privacy and Fairness Alice Bank A Privacy : Only reveal f(Alice_txs, Mint_db) Compute Fairness : if anyone gets Provider the output, then so must Report all honest parties Mint Bank B
Towards Transparency via Privacy and Fairness Alice Bank A Privacy : Only reveal f(Alice_txs, Mint_db) Compute Fairness : if anyone gets Provider the output, then so must Report all honest parties Impossible in Malicious Setting [Cleve86] Mint Bank B
Fair Computation ➔ Fair Reconstruction
Fair Computation ➔ Fair Reconstruction (Unfair) Secure Computation { } k 1 { } TEE { } k o k 2
Fair Computation ➔ Fair Reconstruction (Unfair) Secure Computation { } k 1 { } TEE { } k o k 2 Systems based on Intel SGX VC3 for Map-Reduce [SCF+15] Opaque for Spark [ZDB+17] ObliDB [EZ17] , StealthDB [GVG17] for SQL
Fair Computation ➔ Fair Reconstruction (Unfair) Secure Computation { } k 1 { } TEE { } k o k 2 Systems based on Intel SGX VC3 for Map-Reduce [SCF+15] Opaque for Spark [ZDB+17] ObliDB [EZ17] , StealthDB [GVG17] for SQL
Fair Computation ➔ Fair Reconstruction Fair Reconstruction (Unfair) Secure Computation { } Ledger … k 1 { } TEE { } k o TEE TEE k 2 Systems based on Intel SGX k o k o k o VC3 for Map-Reduce [SCF+15] Opaque for Spark [ZDB+17] ObliDB [EZ17] , StealthDB [GVG17] for SQL
Fair Computation ➔ Fair Reconstruction Fair Reconstruction (Unfair) Secure Computation { } Ledger … k 1 { } TEE { } k o TEE TEE k 2 Systems based on Intel SGX k o k o k o VC3 for Map-Reduce [SCF+15] Fair n-party broadcast using Opaque for Spark [ZDB+17] t < n TEE nodes and a shared ledger (corruption threshold t) ObliDB [EZ17] , StealthDB [GVG17] for SQL
Fair Computation ➔ Fair Reconstruction Fair Reconstruction (Unfair) Secure Computation { } Ledger … k 1 { } TEE { } k o TEE TEE k 2 Systems based on Intel SGX k o k o k o VC3 for Map-Reduce [SCF+15] Fair n-party broadcast using Opaque for Spark [ZDB+17] t < n TEE nodes and a shared ledger (corruption threshold t) ObliDB [EZ17] , StealthDB [GVG17] for SQL [CGJ+17]: all n parties need TEE
Fair Collaborative Computation
Fair Collaborative Computation TEE Collective Revenue Capture ML Fair broadcast of model train
Fair Collaborative Computation TEE Collective Revenue Capture ML Fair broadcast of model train ML ML TEE train infer prediction data Crowdsourced Machine Learning Fair exchange of data and prediction
2-Party Fair Computation: Strawman
2-Party Fair Computation: Strawman TEE
2-Party Fair Computation: Strawman { } { } out out TEE
2-Party Fair Computation: Strawman { } { } out out Enc(pk_Alice, k y ) TEE
2-Party Fair Computation: Strawman { } { } out out Enc(pk_Alice, k y ) TEE
2-Party Fair Computation: Strawman { } { } out out Enc(pk_Alice, k y ) TEE
2-Party Fair Computation: Strawman { } { } out out Enc(pk_Alice, k y ) TEE
Bulletin Board Abstraction [CGJ+17]
Bulletin Board Abstraction [CGJ+17] Ledger …
Bulletin Board Abstraction [CGJ+17] Ledger … • post(x) returns (idx, σ )
Bulletin Board Abstraction [CGJ+17] Ledger … σ x • post(x) returns (idx, σ )
Bulletin Board Abstraction [CGJ+17] Ledger … σ x • post(x) returns (idx, σ ) • getContent(idx) returns (x, σ )
Bulletin Board Abstraction [CGJ+17] Ledger … σ x • post(x) returns (idx, σ ) • getContent(idx) returns (x, σ ) • getHeight() returns (idx)
2-Party Fair Computation Ledger … TEE
2-Party Fair Computation Ledger … TEE { } { } out out
2-Party Fair Computation Ledger … TEE { } { } out out
2-Party Fair Computation Ledger … Enc(pk_Alice, k y ) || TEE { } { } out out
2-Party Fair Computation Ledger … Enc(pk_Alice, k y ) || TEE { } { } out out
2-Party Fair Computation Ledger … Enc(pk_Alice, k y ) || σ TEE { } { } out out
2-Party Fair Computation Ledger … Enc(pk_Alice, k y ) || σ TEE { } { } out out
n-Party Fair Broadcast: Strawman Ledger … TEE
n-Party Fair Broadcast: Strawman Ledger … TEE
n-Party Fair Broadcast: Strawman Ledger … TEE
n-Party Fair Broadcast: Strawman Ledger … Enc(pk_Alice, k y ) || Enc(pk_BankA, k y ) || Enc(pk_BankA, k y ) TEE
n-Party Fair Broadcast: Strawman Ledger … Enc(pk_Alice, k y ) || Enc(pk_BankA, k y ) || Enc(pk_BankA, k y ) TEE
n-Party Fair Broadcast: Strawman Ledger … Enc(pk_Alice, k y ) || Enc(pk_BankA, k y ) || Enc(pk_BankA, k y ) TEE
n-Party Fair Broadcast: Strawman Ledger … Enc(pk_Alice, k y ) || Enc(pk_BankA, k y ) || Enc(pk_BankA, k y ) TEE Enc(pk_BankA, k y )
n-Party Fair Broadcast
n-Party Fair Broadcast { } out
n-Party Fair Broadcast { } out
n-Party Fair Broadcast { } out Ledger …
n-Party Fair Broadcast { } out Ledger …
n-Party Fair Broadcast { } out Ledger …
n-Party Fair Broadcast { } out Ledger …
n-Party Fair Broadcast { } out Ledger …
n-Party Fair Broadcast { } out Ledger …
n-Party Fair Broadcast { } out Ledger …
n-Party Fair Broadcast { } out Ledger …
n-Party Fair Broadcast { } out Ledger … = E pk_Alice (k y )
n-Party Fair Broadcast { } out Ledger … = E pk_Alice (k y )
n-Party Fair Broadcast { } out Ledger … = E pk_Alice (k y )
n-Party Fair Broadcast { } out Ledger … = E pk_Alice (k y )
n-Party Fair Broadcast { } out Ledger … = E pk_Alice (k y )
Q/A https://eprint.iacr.org/2019/178
Recommend
More recommend