Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

请教一下一些基本的算子问题(加减) #97

Closed
chinchilla-forest opened this issue Feb 23, 2023 · 2 comments
Closed

请教一下一些基本的算子问题(加减) #97

chinchilla-forest opened this issue Feb 23, 2023 · 2 comments
Assignees

Comments

@chinchilla-forest
Copy link

假设目前有两个节点a,b,双方各自有一个数组,分别是x,y.我想加他们相加得到结果z,然后我通过spu::kernel::hal::test::dump_public_as 函数得到解密后的结果rz,但是经过我的测试,我在a端对b节点的数组y进行spu::kernel::hal::test::dump_public_as操作,也能得到正常的结果。这样是不是会造成a,b端都可以获取对方的数据?

(这里加法是举个例子,我的意思是一些复杂操作也能获取对方的数据)
下面是我的代码:

auto hctx = MakeHalContext(parties_,parma_.rank); spu::device::ColocatedIo cio(hctx.get()); std::vector<int> vec; for(int i=0;i<10;++i) { vec.push_back(parma_.rank*10+i); } cio.hostSetVar(fmt::format("x-{}", hctx->lctx()->Rank()), vec); cio.sync(); auto x = cio.deviceGetVar("x-0"); auto y = cio.deviceGetVar("x-1"); auto z = spu::kernel::hal::add(hctx.get(),x,y); xt::xarray<int> rx = spu::kernel::hal::test::dump_public_as<int>( hctx.get(), spu::kernel::hal::reveal(hctx.get(), x)); xt::xarray<int> ry = spu::kernel::hal::test::dump_public_as<int>( hctx.get(), spu::kernel::hal::reveal(hctx.get(), y)); xt::xarray<int> rz = spu::kernel::hal::test::dump_public_as<int>( hctx.get(), spu::kernel::hal::reveal(hctx.get(), z));

@rivertalk rivertalk self-assigned this Feb 24, 2023
@rivertalk
Copy link

Hi @linjunmian ,感谢提问

image

SPU虚拟机提供了 reveal 方法来“揭露”密态数据。设想如果没有揭露方法,最终计算结果对所有人都不可见,计算本身也就会失去意义 :P

一个通用的流程是,多方输入数据 x, y, z,然后多方工作做计算 res = f(x, y, z),SPU可以保证整个计算过程的安全性,但最后用户需要手动 reveal(res),SPU/MPC本身并不保证结果的安全性

如果用户通过上层 API(Python)来写代码,SPU编译器和运行本身不会插入Reveal指令,所以计算过程是可以保证安全的

PS: 如果一个函数本身是“可逆”的,比如简单的加法,乘法,sigmoid,exp,那么通过结果本身是可以反推输入的,这是计算本身的性质,跟MPC无关。但是如果计算本身是不可逆的,比如 比较大小,或者是复杂的训练,预测,就无法反推输入了,这也是MPC应用的一个通用pattern

@chinchilla-forest
Copy link
Author

@rivertalk 谢谢回答。加法我只是举个例子,事实上我们不会提供这种可以倒推的算子(一般会有组合)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants