Exemplo n.º 1
0
def test_mul_grad(X, Y, out_g, protocol="Helix"):
    cb.activate(protocol)

    global sess
    if sess is not None:
        sess.close()

    # ===========================
    # init global var
    # ===========================
    init = tf.compat.v1.global_variables_initializer()
    sess = tf.compat.v1.Session()
    sess.run(init)

    # ===========================
    # run mpc mul grad
    # ===========================
    print("===========================")
    print("run mpc mul(X * Y) grad")
    mpc_Z = cb.SecureMul(X, Y)
    mpc_g = tf.gradients(mpc_Z, [common.get_var_from_rtt_tensor(X), 
                                 common.get_var_from_rtt_tensor(Y)])
    print(sess.run(mpc_g))
    print("===========================")
    

    # ===========================
    # check mpcmul grads value
    # ===========================
    mpc_out_g = []
    for i in range(len(mpc_g)):
        print("---------- Reveal mpcmul grad ------------")
        mpc_out_g.append(sess.run(cb.SecureReveal(mpc_g[i])))
        print(mpc_out_g)
        print("------------------------------------------")

    global res_flag
    res_flag = res_flag and common.check_mpc_op_grads(out_g, mpc_out_g)
Exemplo n.º 2
0
rtt.activate(protocol)

input0 = rtt.private_input(0, 1.234)
input1 = rtt.private_input(1, 5.432)
input2 = rtt.private_input(2, 2.222)
print('input0:', input0)
print('input1:', input1)
print('input2:', input2)

i0 = tf.Variable(input0)
i1 = tf.Variable(input1)
i2 = tf.Variable(input2)

ii = rtt.SecureAdd(i0, i1)
ii = rtt.SecureAdd(ii, i2)
ir_add = rtt.SecureReveal(ii)  # i0 + i1 + i2

init = tf.global_variables_initializer()
with tf.Session() as sess1:
    sess1.run(init)
    print('rosetta add:', sess1.run(ir_add))

ii = rtt.SecureMul(i0, i1)
ii = rtt.SecureMul(ii, i2)
ir_mul = rtt.SecureReveal(ii)  # i0 * i1 * i2

init = tf.global_variables_initializer()
with tf.Session() as sess1:
    sess1.run(init)
    print('rosetta mul:', sess1.run(ir_mul))
Exemplo n.º 3
0
# default receive_party is -1, will output plaintext in P0/P1
zr = rtt.SecureReveal(z)
zr0 = rtt.SecureReveal(z, receive_party=0)  # output plaintext in P0
zr1 = rtt.SecureReveal(z, receive_party=1)  # output plaintext in P1

init = tf.global_variables_initializer()
with tf.Session() as sess1:
    sess1.run(init)
    sess1.run(z)
    print('zzzzzr:', sess1.run(zr))
    print('zzzzzr0:', sess1.run(zr0))
    print('zzzzzr1:', sess1.run(zr1))

X = tf.Variable([[2., 1.8]])
Y = tf.Variable([[1.2, 3.]])
z = rtt.SecureMul(X, Y)

# default receive_party is -1, will output plaintext in P0/P1
zr = rtt.SecureReveal(z)
zr0 = rtt.SecureReveal(z, receive_party=0)  # output plaintext in P0
zr1 = rtt.SecureReveal(z, receive_party=1)  # output plaintext in P1

init = tf.global_variables_initializer()
with tf.Session() as sess1:
    sess1.run(init)
    sess1.run(z)
    print('zzzzzr:', sess1.run(zr))
    print('zzzzzr0:', sess1.run(zr0))
    print('zzzzzr1:', sess1.run(zr1))

exit(0)
Exemplo n.º 4
0
if __name__ == "__main__":
    cmp_less = rtt.SecureLess(xa, xb)
    test_cmp(cmp_less, 'less', test_count)

    cmp_greater = rtt.SecureGreater(xa, xb)
    test_cmp(cmp_greater, 'greater', test_count)

    cmp_less_equal = rtt.SecureLessEqual(xa, xb)
    test_cmp(cmp_less_equal, 'less-equal', test_count)

    cmp_greater_equal = rtt.SecureGreaterEqual(xa, xb)
    test_cmp(cmp_greater_equal, 'cmp-greater-equal', test_count)

    add_op = rtt.SecureAdd(xa, xb)
    test_cmp(add_op, 'cmp-equal', test_count)

    sub_op = rtt.SecureSub(xa, xb)
    test_cmp(sub_op, 'cmp-equal', test_count)

    div_op = rtt.SecureDiv(xa, xb)
    test_cmp(div_op, 'cmp-equal', test_count)

    mul_op = rtt.SecureMul(xa, xb)
    test_cmp(mul_op, 'cmp-equal', test_count)

    cmp_equal = rtt.SecureEqual(xa, xb)
    test_cmp(cmp_equal, 'cmp-equal', test_count)

    rtt.deactivate()
    print('--------  ending ---------')
Exemplo n.º 5
0
with tf.Session() as sess:
    sess.run(init)
    print('SecureAdd:', sess.run(reveal0))

# Sub
share_c = rtt.SecureSub(share_a, share_b)
share_d = rtt.SecureSub(share_c, share_a)
share_e = rtt.SecureSub(share_d, share_b)
share_f = rtt.SecureSub(share_e, const_v, rh_is_const=True)
reveal0 = rtt.SecureReveal(share_f)
with tf.Session() as sess:
    sess.run(init)
    print('SecureSub:', sess.run(reveal0))

# Mul
share_c = rtt.SecureMul(share_a, share_b)
share_d = rtt.SecureMul(share_c, share_a)
share_e = rtt.SecureMul(share_d, share_b)
share_f = rtt.SecureMul(share_e, const_v, rh_is_const=True)
reveal0 = rtt.SecureReveal(share_f)
with tf.Session() as sess:
    sess.run(init)
    print('SecureMul:', sess.run(reveal0))

# Truediv
share_c = rtt.SecureTruediv(share_a, share_b)
share_d = rtt.SecureTruediv(share_c, share_a)
share_e = rtt.SecureTruediv(share_d, share_b)
share_f = rtt.SecureTruediv(share_e, const_v, rh_is_const=True)
reveal0 = rtt.SecureReveal(share_f)
with tf.Session() as sess:
Exemplo n.º 6
0
import sys
import numpy as np
np.set_printoptions(suppress=True)
"""
Variable Constant Placeholder
"""

xa0 = tf.Variable(5.)
xa1 = tf.Variable([1., 2., 5., 3., 4.])
xa2 = tf.Variable([[1., 2., -3., 4.], [3., -4., 3., 1.], [5., 6., 3., 4.]])

init = tf.compat.v1.global_variables_initializer()
sess = tf.compat.v1.Session()
sess.run(init)

xc = rtt.SecureMul(1.2, 3.4)
print(xc)
xcc = sess.run(xc)
print(xcc)

xc = rtt.SecureMul(xa0, 1.4)
print(xc)
xcc = sess.run(xc)
print(xcc)

xc = rtt.SecureMul(xc, 2.3)
print(xc)
xcc = sess.run(xc)
print(xcc)

exit(0)