graphene-sgx ./my_program) which uses either of these system calls, will the new process execute within the same enclave that
my_program is in or a separate enclave? Or will it not be executed in an enclave at all? If the second process is being placed into its own enclave, are the command line arguments passed with execv secure?system() behave the same way? It's my understanding that it uses a combination of fork and execv to spawn a new program while allowing the current program to continue executing.dev/attestation/user_report_data before calling fork? Specifically, if I have program A executing and wish to then spawn program B with some secrets provisioned from A, then I would:dev/attestation/user_report_data
/dev/attestation/user_report_data which appears to be included in the report and later verified by
verify_report_mac. So, I'm wondering, is this how you would provision a secret during local attestation?ra-tls source code for the ra-tls-secret-prov example, however, it looks like secrets are provisioned via an mbedtls session that gets configured after remote attestation. Does that mean I should also provision secrets via
TLS for local attestations as well (i.e., for two enclaves running on the same machine)?fork() creates a new enclave and
execv() replaces the process in the current enclave; I was just curious as to what purposes /dev/attestation/user_report_data and
/dev/target_info serve though.Dear Taylor,
There are two separate ways of communication between Graphene processes (SGX enclaves):
And of course, if you need SGX remote attestation, you need to use one of the following:
--
Dmitrii
--
You received this message because you are subscribed to the Google Groups "Graphene Support Mailing List" group.
To unsubscribe from this group and stop receiving emails from it, send an email to
graphene-suppo...@googlegroups.com.
To view this discussion on the web visit
https://groups.google.com/d/msgid/graphene-support/MN2PR03MB4911E166FFC370CAFA103BA497D49%40MN2PR03MB4911.namprd03.prod.outlook.com.
Intel Deutschland GmbH
Registered Address: Am Campeon 10, 85579 Neubiberg, Germany
Tel: +49 89 99 8853-0, www.intel.de
Managing Directors: Christin Eisenschmid, Sharon Heck, Tiffany Doon Silva
Chairperson of the Supervisory Board: Nicole Lau
Registered Office: Munich
Commercial Register: Amtsgericht Muenchen HRB 186928
graphene-sgx ./programA and within that program fork and execv another program
./programB then I can be assured that (1) the execv commandline arguments to programB are secure and (2) if I open a pipe between A and B that the pipe is encrypted?Please don't try connecting "unrelated" Graphene enclaves running on one machine, it's a footgun. You can easily spawn multiple processes in one Graphene "instance"/enclave using a simple wrapper (in bash,python,C, whatever).
graphene-sgx ./programA and graphene-sgx ./programB) because I will have to use the low-level attestation primitives which I am likely to use incorrectly?sgx_get_quote in Pal/src/host/Linux-SGX/tools/sgx_attest.h to generate quotes at runtime?RTFM 😊 https://graphene.readthedocs.io/en/latest/attestation.html#low-level-dev-attestation-interface
Graphene (which is by the way renamed to Gramine now) provides the low-level interface in the form of pseudo-files under `/dev/attestation` (this directory exists *only under Graphene*, so it’s also a good way to check whether the app runs inside Graphene or normally).
Also see a quick example (actually, our regression test) on how to use it in C:
You *don’t* need to use RA-TLS if you want your app to produce SGX quotes. RA-TLS is a higher-level interface (again, check the first link).
To view this discussion on the web visit https://groups.google.com/d/msgid/graphene-support/MN2PR03MB491153848FF7D339F32A9D5597DC9%40MN2PR03MB4911.namprd03.prod.outlook.com.
Intel Deutschland GmbH
Registered Address: Am Campeon 10, 85579 Neubiberg, Germany
Tel: +49 89 99 8853-0, www.intel.de