Rosetta icon indicating copy to clipboard operation
Rosetta copied to clipboard

SecureNN Integration

Open joyoFeng opened this issue 3 years ago • 2 comments

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, securenn-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).

joyoFeng avatar May 31 '21 06:05 joyoFeng

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?

lxhcrypto avatar Aug 05 '21 01:08 lxhcrypto

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.

xiangxiecrypto avatar Aug 05 '21 02:08 xiangxiecrypto