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

[Feature]: SPU跨协议调用 #911

Closed
c-doubley opened this issue Nov 11, 2024 · 8 comments
Closed

[Feature]: SPU跨协议调用 #911

c-doubley opened this issue Nov 11, 2024 · 8 comments

Comments

@c-doubley
Copy link

Feature Request Type

Build/Install

Have you searched existing issues?

Yes

Is your feature request related to a problem?

A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

Describe features you want to add to SPU

A clear and concise description of what you want to happen.

Describe features you want to add to SPU

我想要设计一个新协议,设计过程可能会需要调用SPU中spdz2k协议和semi2k协议的乘法子协议,请问这样的跨协议调用是可以的吗,需要注意哪些内容?

@tpppppub
Copy link
Collaborator

如果你的协议是基于这两个协议的,可以在这二者的基础上新增 kernel。如果使用的完全不同的 secret share schema,底层的类型和状态不同,不能直接调用。

@c-doubley
Copy link
Author

虽然使用的是完全不同的secret share scheme,但是我可以编写底层的类型转换,完成符合其他协议的输入,如果是这样的话能否跨协议调用呢?

@tpppppub
Copy link
Collaborator

可以尝试一下,你需要完成 type 的转换,还有 semi2k state 和 kernel 的注册,整个过程不如在你的协议中重新实现乘法更方便

@c-doubley
Copy link
Author

好,重新实现乘法是一个备用的选择,因为我需要使用spdz2k中的验证,如果可以调用的话方便一些,否则还要重新实现mac的逻辑,成本有点高

@c-doubley
Copy link
Author

c-doubley commented Nov 19, 2024

您好,我在进行协议设计的时候遇到一个奇怪的问题,需要向您请教一下。
我使用下面的代码在两个参与方之间发送和接收消息:

// P1
comm->sendAsync(0, z2, kBindName);


// P0
const auto z3 = comm->recv(1, x3.eltype(), kBindName);

x3.eltype(): Ring<FM32>

我在发送之前已经确认了z2.shape()是20x30
但是我在检查z3.shape()时却发现变成了600
我不太理解出现这种错误可能的原因是什么,

@tpppppub
Copy link
Collaborator

recv 的结果是 flatten 的,需要自己 reshape 回去

@c-doubley
Copy link
Author

好的,我参考了ABY3里面没有 reshape ,添加了reshape之后问题解决了,谢谢!
我还有一个新的问题,在进行截断的时候我想先尝试本地截断,尽管这样误差比较大,但是结果似乎超出我的预期。本地截断的结果是一个类似乱码的数字1073741914,正确的值应该是92,我不太清楚导致这个问题可能的原因有哪些。
我猜测是秘密值的最高符号位和原数的最高符号位不一致导致了还原错误。

@c-doubley
Copy link
Author

另外还想请问在spdz2k协议中是否实现了“中止”功能,中止如何体现以及反馈到上层应用呢?我尝试搜索“abort”没有在项目中搜索到相关内容

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