Rosetta
Rosetta copied to clipboard
SecureNN Integration
Overview
SecureNN have integrated into Rosetta as one of secure multi-party computation protocols. We have fully implemented SecureNN (3PC mode) with all basic functionalities and other composite operations to enable private machine learning in TensorFlow. Below is SecureNN operation dependency graph,
The paper: SecureNN.
The origin codebase: securenn-public.
Supported Operations
Detail of Rosetta support operations of SecureNN is as fellow,
- Basic operations
- [x] PrivateInput, SecureReveal, MatMul, PrivateCompare, SelectConvert, ComputeMSB, SelectShare
- Arithmetic operations
- [x] Add, Multiply, Subtract, Division
- [x] Inversion, Square, Sqrt, Pow
- [x] Negate, Abs
- [x] Log, Log1p
- [x] Sum, Mean, Max, Min
- [ ] Exp, Tanh, Log2
- Comparison operations
- [x] GreaterEqual, Greater
- [x] Equal, NotEqual
- [x] Less, LessEqual
- Logistical operation
- [x] Xor, And, Or
- High level operations
- [x] Sigmoid
- [x] DRelu, Relu
- [x] Softmax
Plan
More operations
We will import more operations to support a broader private machine learning, eg. Exp and Tanh
Todo:
- [x] Exp
- [ ] Log2
- [ ] Tanh
Optimization
How to
To use common program skill, eg. parallelization, vectorization to accelerate computation. To use common techniques eg. PRF to decrease communication overall. To generate triples offline thus accelerate the online computation. To adopt other techniques from other protocol, eg. Falcon.
About MSB Optimization
The author(Dr. Sameer Wagh) of SecureNN has proposed an idea in Falcon(replicated secret-sharing MPC) to optimize computation of MSB which gain the performance of comparison about 2 factor. We will no longer convert private values from ring Z_L to ring Z_{L-1}, we get MSB like this: MSB(a)=MSB(a0) xor MSB(a1) xor WrapAround(a0, a1, L).
I have already to read this paper about SecureNN and some part of the origin codebase.
In SecureNN, I just found these operations
But in Rosetta, there are many additional implementation part, like
- Negate, Abs
- Log, Log1p
- Sum, Mean
- GreaterEqual, Greater
How do you implement these operations and guarantee their security? I wonder if you have any other references?
I have already to read this paper about SecureNN and some part of the origin codebase.
In SecureNN, I just found these operations
But in Rosetta, there are many additional implementation part, like
- Negate, Abs
- Log, Log1p
- Sum, Mean
- GreaterEqual, Greater
How do you implement these operations and guarantee their security? I wonder if you have any other references?
All these operations could be implemented using the basic building blocks, which are essentially presented in the SecureNN paper. The security is guaranteed by the UC security of the basic operations.