SMCL
A Domain-Specific Programming Language for Secure Multiparty Computation
June 14, 2007 Janus Dam Nielsen - PLAS 2007 Janus Dam Nielsen and Michael I. Schwartzbach 1/27
SMCL A Domain-Specific Programming Language for Secure Multiparty - - PowerPoint PPT Presentation
SMCL A Domain-Specific Programming Language for Secure Multiparty Computation Janus Dam Nielsen and Michael I. Schwartzbach June 14, 2007 Janus Dam Nielsen - PLAS 2007 1/27 Overview Secure Multiparty Computation SMCL Concepts An
June 14, 2007 Janus Dam Nielsen - PLAS 2007 Janus Dam Nielsen and Michael I. Schwartzbach 1/27
June 14, 2007 Janus Dam Nielsen - PLAS 2007 2/27
computable function: f(x1,...,xn)
must be kept secret from the other parties.
some subset of the parties
June 14, 2007 Janus Dam Nielsen - PLAS 2007 3/27
June 14, 2007 Janus Dam Nielsen - PLAS 2007 4/27
June 14, 2007 Janus Dam Nielsen - PLAS 2007 5/27
June 14, 2007 Janus Dam Nielsen - PLAS 2007 6/27
Clients Server
June 14, 2007 Janus Dam Nielsen - PLAS 2007 7/27
Public & Secret values Private values
Booleans Integers Records Booleans Secret booleans Integers Secret integers Records
Client identity Secret client identity
June 14, 2007 Janus Dam Nielsen - PLAS 2007 8/27
Tunnels:
Asynchronous
Functions:
Synchronous Primitive types only Data encrypted Secret data - shared and encrypted put and get functions Primitive types only Invoked by server
Tunnels:
Accessed via client identity put and get functions
June 14, 2007 Janus Dam Nielsen - PLAS 2007 9/27
Groups of clients:
A set of clients All of the same kind Iterated using a for loop Uniform treatment of clients Secrecy of client identity Specified externally
June 14, 2007 Janus Dam Nielsen - PLAS 2007 10/27
June 14, 2007 Janus Dam Nielsen - PLAS 2007 11/27
declare server Max: declare client Millionaires: function void main(int[] args) { } function void main(int[] args) { } sint max = 0; sclient rich; function void tell(bool b) { if (b) { display("You are the richest!"); } else { display("Make more money!"); } } foreach (client c in mills) { c.tell(open(c==rich|rich)); } group of Millionaires mills; foreach (client c in mills) { } if (netWorth >= max) { max = netWorth; rich = c; } tunnel of sint netWorth; function void ask() { netWorth.put(readInt()); } ask(); sint netWorth = c.netWorth.take();
The Millionaire’s Example
June 14, 2007 Janus Dam Nielsen - PLAS 2007 11/27
June 14, 2007 Janus Dam Nielsen - PLAS 2007 13/27
state of the server
and secret values
June 14, 2007 Janus Dam Nielsen - PLAS 2007
Clients Server
14/27
computation
masked out
clients not available
P S P’ S’ T P S P S S P
1 2 1 2
June 14, 2007 Janus Dam Nielsen - PLAS 2007 15/27
June 14, 2007 Janus Dam Nielsen - PLAS 2007 16/27
P’ S’ S’ T T1
2 2 1
P S1 P S2 P’’
identical
which are a function of the trace (e.g. timing)
independent of arguments
June 14, 2007 Janus Dam Nielsen - PLAS 2007 17/27
representation
T1 P
1
P’
1
P’ S1 P P’ S’
1
T2 P
June 14, 2007 Janus Dam Nielsen - PLAS 2007 18/27
June 14, 2007 Janus Dam Nielsen - PLAS 2007 19/27
source of differences in trace
branches
x = b*y + (1-b)*z if (b) { x = y; x = z; } else { }
June 14, 2007 Janus Dam Nielsen - PLAS 2007 20/27
allowed
June 14, 2007 Janus Dam Nielsen - PLAS 2007 21/27
S S’ P S’’
inefficient
version reveals same information as the ideal version
programmer
Ideal computation
June 14, 2007 Janus Dam Nielsen - PLAS 2007 22/27
June 14, 2007 Janus Dam Nielsen - PLAS 2007 23/27
(parties, threshold) ideal pragmatic public (3,1) 12 sec 30 ms < 1 ms (5,2) 17 sec 65 ms < 1 ms (7,3) 30 sec 132 ms < 1 ms sint x = 17; sint a = 42; sint b = -5; sint c = 87; sint p = a*(x*x) + b*x +c sint sign = 0; int output; if (p<0) sign = -1; if (p>0) sign = 1;
Ideal
int x = 17; sint a = 42; sint b = -5; sint c = 87; sint p = open(a*(x*x) + b*x +c|a,b,c) sint sign = 0; int output; if (p<0) sign = -1; if (p>0) sign = 1;
Pragmatic
June 14, 2007 Janus Dam Nielsen - PLAS 2007 24/27
June 14, 2007 Janus Dam Nielsen - PLAS 2007 25/27
June 14, 2007 Janus Dam Nielsen - PLAS 2007 26/27
June 14, 2007 Janus Dam Nielsen - PLAS 2007 27/27