During our work at SINE, we often discuss potential use case ideas for secure multi-party computation (MPC) for enabling data analysis where where data exchange either is impossible or lacks incentive. Some of our discussions lead to valuable use cases, whereas others end with identifying aspects of the use case that do not match common criteria for MPC.
In order to be able to summarize these criteria, we compiled the following document that can be used to quickly validate use cases for MPC. The questions that follow are guidelines: It is not necessary for a good use case to only have “green” responses and even a “red” response does not necessarily disqualify a use case. However, it might also not be sufficient for a use case to get only “green” responses in order to be truly valuable and interesting. Our aim, however, is to direct thinking in the right directions when resources are to be accounted for that are necessary to tackle a given “red” or “yellow” response.
Is MPC a must-have or is there a trusted party that could do the computation instead? MPC introduces considerable complexity in terms of performance and deployment, so it usually only makes sense if the alternative to using MPC is not doing the computation at all. In situations where there is at least some trust there are usually better alternatives to MPC.
🔴 There is a trusted third party already.
🟡 There is currently no trusted third party, but there might be one in the future.
🟢 There is no trust and no foreseeable possibility for a trusted third party.
How many different parties need to provide inputs? In an MPC protocol each party needs to communicate with each other party and compute with data from each other party, so the communication complexity and thus the time for the entire computation increases quickly with a growing number of parties.
🔴 More than 20 parties
🟡 11-20 parties
🟢 2-10 parties
Is each party reachable during the entire time of the computation? Or is each party only intermittently online, for example because they run the software on a computer that might be switched off?
🔴 Some parties want to run the software in a browser or on a phone.
🟡 Some parties run the software on a personal computer, but are mostly online.
🟢 All parties run the software on servers which are constantly online.
How long can the parties wait for a result? Depending on how complex an MPC calculation is, it can take a long time to communicate all the necessary data and compute the result. MPC is thus currently a better fit for applications that are not time-critical.
🔴 Only seconds
🟡 A couple of minutes to one hour
🟢 Several hours
Where are the parties located on a network, relative to each other? A big factor in any MPC calculation is network latency, because there are multiple rounds of communication. High-speed networks of closely located parties are best, whereas slow networks with participants on different sides of the world are considerably worse.
🔴 On a slow / unreliable network, on different continents
🟡 On a good network, on the same continent
🟢 On a high-speed network, in the same country
How much data does each party need to provide as its own input? It is enough to approximate this roughly, for example by coming up with example data for one party and saving it as a text file (for Excel you can just export the data as a CSV). You can then use the file size of the text file as your estimate.
🔴 More than 1 MB
🟡 Between 1 KB and 1 MB
🟢 Less than 1 KB
Can the program (that specifies the computation) be agreed upon in advance by all parties? Does each party understand that while the inputs are kept private, the program that specifies the computation is visible to all participants?
🔴 The calculation is complex, dynamic and changes often.
🟡 The calculation is complex, but changes rarely (development work is necessary).
🟢 The calculation is simple and does not change after the initial deployment.
Is it possible to infer or estimate the inputs of one or more parties from the output? For example, if the computation is a benchmark that calculates the average of some value among the different parties and only two parties join, it is possible to calculate the inputs of the other party based on another party's own inputs. In such a case, enough parties need to participate in the computation so that the information that can be deduced from the output is acceptable.
🔴 It is possible to infer the exact inputs from the output in some situations.
🟡 It is possible to estimate some inputs from the output.
🟢 Output values reveal little information about individual inputs, no inference possible.
Is each party incentivized to provide correct input data? In contrast to other types of calculations, it is much harder to check the truthfulness of input data in MPC, because the inputs stay private. This is why MPC usually only makes sense when parties have an incentive to share correct data.
🔴 There is no incentive and no way to validate the inputs within MPC.
🟡 There are limited incentives, but it might be possible to validate within MPC.
🟢 There are incentives for each party to tell the truth.
What do you think about our list above? Would you remove any of the questions or do you think we missed an important criterion? Do you disagree with our categorization for the different levels of difficulty? We are glad to receive your feedback and discuss further!