-
Notifications
You must be signed in to change notification settings - Fork 280
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
Secret registers can be leaked under certain circumstances #1529
Comments
What do you mean by running VMs? Which protocol? LTZ is not valid instruction for all proper protocols. More generally, changing the instructions would imply a corrupted party in MPC security, so one would expect only protocols with malicious security to protect against that. |
Thanks for your reply! I understand that each party needs to generate consistent IR after compiling the source code. Does that mean that if the compilation process is normal, undefined registers will not appear? |
I don't think that using
Yes. The compiler emits a warning if there are undefined registers, and with the argument |
Malicious modification of the
IR
does not cause changes in the program results, leading to the leakage of secret register(s9)
valuesHigh-level source code is:
The source IR is as follows:
Full source IR:
source IR.txt
The maliciously modified IR is as follows:
Full modified IR:
modified IR.txt
When running VMs based on these two IRs, the results are consistent.
However, we can see from the modified IR that
s9
is not initialized. Based on previous experience, we know that VM generally assigns uninitialized registers to 0. When the program result does not change, we can infer that the value of register s9 in the source IR is not less than 0, which means that the value of s9 in the source IR is leaked.Is this a bug?
Thanks!
The text was updated successfully, but these errors were encountered: