1 Introduction
2 Preliminaries
2.1 Secure multiparty computation
2.2 The Sharemind platform
3 Collaborative satellite collision probability analysis
3.1 Motivation and state of the art
3.2 Underlying math
3.2.1 Vector and matrix operations
3.2.2 Computing integrals
3.3 Privacy-preserving solution using secure multiparty computation
4 Secure floating point operations
4.1 Related work
4.2 Representation of floating point numbers
-
Radix (base) \(b\) (usually \(2\) or \(10\)).
-
Sign \(s\) (e.g., having the value \(0\) or \(1\) corresponding to signs plus and minus, respectively).
-
Significand \(f\) representing the significant digits of \(N\). This number is assumed to belong to a fixed interval like \([1,2)\) or \([1/b,1)\).
-
Exponent \(e\) showing the number of places the radix point of the significand needs to be shifted in order to produce the number \(N\).
-
Bias (excess) \(q\) is a fixed number used to make the representation of \(e\) nonnegative; hence, one would actually use \(E\) such that \(e=E-q\) for storing the exponent. For example, for IEEE 754 double-precision arithmetic, it is defined that \(q=1{,}023\), \(e\in [-1{,}022,1{,}023]\) and \(E\in [1,2{,}046]\). The value \(E=0\) is reserved for representing \(N=0\) and some other very small values. The value \(E=2{,}047\) is reserved for special quantities like infinity and Not a Number (NaN) occurring as a result of illegal operations (e.g., \(0/0\) or \(\sqrt{-1}\)).
4.3 Multiplication
4.4 Addition
5 Elementary functions
5.1 Inversion
5.2 Square root
5.3 Exponentiation of \(e\)
5.4 Error function
6 Performance of floating point operations
6.1 Benchmark results
Input size in elements | ||||||
---|---|---|---|---|---|---|
1 | 10 | 100 | 1,000 | 10,000 | ||
Private \(x\)
| Add | 0.73 ops | 7.3 ops | 69 ops | 540 ops | 610 ops |
Private \(y\)
| Multiply | 2.3 ops | 23 ops | 225 ops | 1,780 ops | 6,413 ops |
Divide (TS) | 0.08 ops | 0.81 ops | 6.8 ops | 25.5 ops | 38 ops\(^{*}\)
| |
Divide (CP) |
\(0.16\) ops |
\(1.6\) ops |
\(14\) ops |
\(59\) ops |
\(79\) ops\(^{*}\)
| |
Private \(x\)
| Multiply | 2.3 ops | 23 ops | 220 ops | 1,736 ops | 6,321 ops |
Public \(y\)
| Multiply by \(2^{k}\)
|
\(5.9\times 10^{4}\) ops |
\(6.1\times 10^{5}\) ops |
\(4.2\times 10^{6}\) ops |
\(1.1\times 10^{7}\) ops |
\(1.4\times 10^{7}\) ops |
Divide | 2.3 ops | 23 ops | 221 ops | 1,727 ops | 6,313 ops | |
Divide by \(2^{k}\)
|
\(6.4\times 10^{4}\) ops |
\(6.1\times 10^{5}\) ops |
\(4.1\times 10^{6}\) ops |
\(1.2\times 10^{7}\) ops |
\(1.4\times 10^{7}\) ops | |
Private \(x\)
| Find \(e^{x}\) (TS) | 0.09 ops | 0.9 ops | 7.3 ops | 23 ops | 30 ops\(^{*}\)
|
Find \(e^{x}\) (CP) |
\(0.12\) ops |
\(1.2\) ops |
\(11\) ops |
\(71\) ops |
\(114\) ops | |
Invert (TS) | 0.09 ops | 0.84 ops | 6.8 ops | 14.7 ops | 35.7 ops\(^{*}\)
| |
Invert (CP) |
\(0.17\) ops |
\(1.7\) ops |
\(15.3\) ops |
\(55.2\) ops |
\(66.4\) ops | |
Square root | 0.09 ops | 0.85 ops | 7 ops | 24 ops | 32 ops\(^{*}\)
| |
Error function |
\(0.1\) ops | 0.97 ops | 8.4 ops | 30 ops | 39 ops |
Input size in elements | ||||||
---|---|---|---|---|---|---|
1 | 10 | 100 | 1,000 | 10,000 | ||
Private \(x\)
| Add | 0.68 ops | 6.8 ops | 60 ops | 208 ops | 244 ops |
Private \(y\)
| Multiply | 2.1 ops | 21 ops | 195 ops | 1,106 ops | 2,858 ops |
Divide (TS) | 0.08 ops | 0.7 ops | 3 ops | 5.2 ops | 12.4 ops\(^{*}\)
| |
Divide (CP) |
\(0.15\) ops |
\(1.5\) ops |
\(12\) ops |
\(23\) ops |
\(52\) ops\(^{*}\)
| |
Private \(x\)
| Multiply | 2.1 ops | 21 ops | 193 ops | 1263 ops | 2667 ops |
Public \(y\)
| Multiply by \(2^{k}\)
|
\(3.3\times 10^{4}\) ops |
\(3.2\times 10^{5}\) ops |
\(2.1\times 10^{6}\) ops |
\(8.5\times 10^{6}\) ops |
\(1.3\times 10^{7}\) ops |
Divide | 2.1 ops | 21 ops | 194 ops | 1223 ops | 2573 ops | |
Divide by \(2^{k}\)
|
\(6.4\times 10^{4}\) ops |
\(6.1\times 10^{5}\) ops |
\(4\times 10^{6}\) ops |
\(1\times 10^{7}\) ops |
\(1.2\times 10^{7}\) ops | |
Private \(x\)
| Find \(e^{x}\) (TS) | 0.09 ops | 0.8 ops | 3.1 ops | 4.5 ops | 6.2 ops\(^{*}\)
|
Find \(e^{x}\) (CP) |
\(0.11\) ops |
\(1.1\) ops |
\(9.7\) ops |
\(42\) ops |
\(50\) ops | |
Invert (TS) | 0.08 ops | 0.75 ops | 3.6 ops | 4.8 ops | 10.7 ops\(^{*}\)
| |
Invert (CP) |
\(0.16\) ops |
\(1.5\) ops |
\(11.1\) ops |
\(29.5\) ops |
\(47.2\) ops | |
Square root | 0.08 ops | 0.76 ops | 4.6 ops | 9.7 ops | 10.4 ops\(^{*}\)
| |
Error function |
\(0.09\) ops | 0.89 ops | 5.8 ops | 16 ops | 21 ops\(^{*}\)
|
6.2 Difference in the precision of Taylor series and Chebyshev polynomials
6.3 Benefits of parallelization
Number of matrix multiplications | |||||
---|---|---|---|---|---|
1 (s) | 10 (s) | 100 (s) | 1,000 (s) | ||
\(3\times 3\)
| Sequential | 3.2 | 31.9 | 318.5 | 3,212.3 |
Matrix | Parallel | 3.2 | 3.3 | 5.2 | 45.7 |
\(5\times 5\)
| Sequential | 4.6 | 46.3 | 466 | 4,641.4 |
Matrix | Parallel | 4.6 | 5.1 | 20.4 | 91.9 |
\(10\times 10\)
| Sequential | 6.4 | 65.9 | 674.6 | 6,624.2 |
matrix | Parallel | 6.6 | 15.7 | 152 | 1,189.2 |
7 Implementation of collision analysis
7.1 Reusable components
7.2 Vector and matrix operations
-
Vector length, unit vector and dot product for vectors of any size;
-
Cross product for vectors of size \(3\);
-
Matrix product for two-dimensional matrices; and
-
Eigensystem computation for \(2 \times 2\) matrices.
7.2.1 Dot product
7.3 Benchmark results
Number of satellite pairs | ||||||
---|---|---|---|---|---|---|
1 | 2 | 4 | 8 | 16 | ||
Single | TS | 258 (258) s | 350 (175) s | 488 (122) s | 792 (99) s | 1,348 (84) s |
Precision | CP | 204 (204) s | 255 (128) s | 355 (89) s | 557 (70) s | 967 (60) s |
Double | TS | 337 (337) s | 447 (223) s | 724 (181) s | 1127 (141) s | 2,064 (129) s |
Precision | CP | 246 (246) s | 340 (170) s | 450 (113) s | 724 (91) s | 1,272 (80) s |