-
Notifications
You must be signed in to change notification settings - Fork 33
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
fast instantiation or Low communication instantiation? #73
Comments
correct, the low comm version was never fully functional and has not been released. Might finish implementing it at some point but no promises. |
Thank you for your reply. However, I don’t fully understand the statement, “low comm version was never fully functional.” Could you clarify what is meant by “never fully functional”? Additionally, why was the “low comm version” never fully functional? I suspect that the issue might be related to the OKVS not supporting the low comm version. Is this a possible reason? |
it means the performance numbers in the paper were obtains by a version that didn't actual perform the right computation. Instead, I implemented something that aimed to perform the same amount of computation to get an estimate on the running time. At the time this was because "subfield vole" was not implemented in libOTe. It is now implemented and so it would be a relatively simple task to add it. If you're interested, I could tell you how. The OKVS does support it. or could be configured to. |
Thank you for your quick response. I am very interested in learning how to add the "subfield vole." Could you please let me know how to implement? |
ok, well the main protocol is in the paper obviously. You will need to update this repo to use the latest libOTe version. you can do this be deleting the You might need to update some stuff if the code no longer compiles. then you will need to copy the existing volepsi implementation and replace the old VOLE using GF128 with a subfield VOLE of the appropriate fields. I guess you can figure what fields to use. libOTe has the subfield vole here https://github.com/osu-crypto/libOTe/blob/master/libOTe/Vole/Silent/SilentVoleSender.h#L37
Then basically you just need to do the same for the OKVS, it has something similar to |
Thank you for your help. I will try to implement the Low Comm version according to your instructions in the If I successfully implement the Low Comm version, I would like to contribute a pull request to |
should be possible. You'd be the first. Depending on what the visa lawyers say you might have to agree to a Contributor License Agreement (CLA). TDB. I can look into once you start making progress. |
Thank you once again. I will try my best to accomplish it. |
OK, let me know if you have questions. Happy to help. |
FYI, i updated the library to use the latest libOTe... |
Thank you very much for your reminder. In addition, I seem to have implemented LowCommMode correctly. I used such a combination: In short, according to the above implementation, I have currently conducted a large number of PSI tests, running about 10,000 times in a loop, each time randomly generating |
ok, are you wanting to make a pull request? I could review it at some point (current a bit busy bit should find time in the next month or so). And then I can ask the lawyers about what we need to do to merge the PR. |
Of course, I will make a pull request. However, I need some time to refine my codes. Thank you again for your help. I will submit the pull request as soon as possible |
No rush, might take me some time to review and everything else |
As you said: "you need to implement a CoeffCtx helper type https://github.com/osu-crypto/libOTe/blob/master/libOTe/Tools/CoeffCtx.h#L18C12-L18C27 that knows how to perform the relevant operations on F,G. eg how to add and multiply, serialize, etc. ' However, the Now, I init Vole Object as follows:
but I have encount a build error:
Is there a simpler way to use Subfield related interfaces? |
You have to tell the protocol how yo work with your types. What does it mean to multiple a block and a u64? The context class you used has mul(block, block). It doesn't know how to multiply block, u64. You'll need top copy oc::CoeffCtxGF128> into vole psi and modify it to work with your types. You need to define multiplication, etc. |
Excuse me, is the code for the OKVS technology in this paper open source? By the way, I see your name is also Chinese. |
yes, the OKVS code is all here. |
In the paper: Blazing Fast PSI from Improved OKVS and Subfield VOLE. On Page-22, the paper proposes two constructions: one is fast instantiation, and the other is low communication instantiation. Which one is realized in this code?
I suspect the default is the Fast construction because I do not see any keywords related to Subfield Vole in the code."
The text was updated successfully, but these errors were encountered: