-
Notifications
You must be signed in to change notification settings - Fork 2.2k
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
feat(protocol): support SGX proofs #14851
Conversation
The latest updates on your projects. Learn more about Vercel for Git ↗︎
2 Ignored Deployments
|
Codecov Report
@@ Coverage Diff @@
## improve_bridge_cide #14851 +/- ##
======================================================
Coverage ? 39.80%
======================================================
Files ? 113
Lines ? 5283
Branches ? 113
======================================================
Hits ? 2103
Misses ? 3044
Partials ? 136
*This pull request uses carry forward flags. Click here to find out more. 📣 We’re building smart automated test selection to slash your CI/CD build times. Learn more |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good! Just some refactoring suggestions.
I need to learn more about SGX, but it seems no public keys are associated with those from Intel. |
The public/private keys are generated inside the SGX program and so we have full flexibility of what what we can use to verify proofs, after verifying the attestation that the program is running safely. |
If I understand correctly, the ZK keys which can be calculated from the circuit codebase, but the SGX "bootstrap nodes" setup cannot be verified and has to be trusted. If there is also an image ID that can be verified by using the guest program such as zeth, then the solution is more trustworthy. But I guess it is hard to achieve? |
They are pretty similar in that to verify the verification keys in the zk verifier contract, you would indeed have to verify the code and regenerate the same verification keys and check if they match the ones in the smart contract. Registering those verification keys is itself a trusted process, because the smart contract cannot verify if those keys are correct. But it is verifiable. With SGX you would have to check the source code, and then generate the The only benefit of being able to verify the remote attestations onchain is that there is no dependency on those bootstrap nodes, so it's potentially more decentralized because those bootstrap nodes may refuse verifying other SGX instances or they may go offline. But even with onchain remote attestation verification, setting the expected |
I think a trusted set up of MRENCLAVE is acceptable as long as it is verifiable by third parties. Is it possible to achieve this without onchain remote attestation verification? |
Yes, because onchain remote attestation verification does not make any difference.
No need for any trusted setup or onchain remote attestation verification, it is as trustless as registering the verification keys for the zk circuits (ignoring the trust in intel of course). |
First PoC - basically verifier does not do attestation verification on-chain - just a signature check.
A set of initial (
addToRegistry()
) trusted enclaves identified uniquely by their (initial) ECDSA public key can sign data.In our case exactly this:
Once public key is used by an enclave another has to be used next time.
Let me know if this is what we discussed or not.