-
Notifications
You must be signed in to change notification settings - Fork 91
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
Add support for RELEASE builds of SGX-LKL #144
Comments
I don't think it's a good idea to have different launcher names. This will complicate any kind of automation. Why not simply use a different installation prefix and keep everything inside the same? |
I've updated the original issue per our discussion today. Please add other thoughts/suggestions, thanks. |
Symlinking |
I am not clear about this statement:
By |
That’s right. I’ve updated the original issue to reflect this. |
An alternative idea would be to have:
and also a |
Well, if you have |
Right, the symlink would have to be called |
Who would use the symlink? |
It’s a default for people who are confused by the build types? :-) I guess we don’t need the symlink. |
Regarding the properties of a release build, I don't think the following are required explicitly:
All of these would already be enforced by the policies of a key release service. For release deployments the policy would only allow non-debug hardware enclaves. There is no additional security in having the three points above implemented. |
@letmaik to me, a RELEASE build is not about what attestation enforces but rather about removing unnecessary code and functionality from the enclave, and thus getting a smaller TCB. By removing this functionality, we reduce the attack surface. |
This is p1 for the design doc at which point this should be reprioritized. |
Build types for SGX-LKL
We want to support the following three mutually-exclusive build types for SGX-LKL:
make DEBUG=true
# DEBUG buildThis creates a debug build of SGX-LKL with full debug and tracing functionality, debug symbols and
-O0
.This version should be used for development of SGX-LKL. It is not secure because it permits execution without attestation and secrets (e.g., root encryption keys) can be passed directly to the launcher via environment variables.
make
# NON-RELEASE buildThis builds a version of SGX-LKL with some (low-overhead) debug and tracing functionality, no debug symbols and
-O3
. This is the default build when no make target is specified.This version should be used for performance benchmarking and testing. It is not secure because it permits execution without attestation and secrets (e.g., root encryption keys) can be passed directly to the launcher via environment variables.
make RELEASE=true
# RELEASE buildThis builds a release version of SGX-LKL without debug functionality, no debug symbols and
-O3
.This version should be used for production deployments because it is the only version that is secure. It excludes any code from the enclave that compromises security, i.e., it:
Packaging of build types
The different builds of SGX-LKL could be installed in difference directory prefixes on the file system, e.g.:
/opt/sgx-lkl-debug/
/opt/sgx-lkl-non-release/
/opt/sgx-lkl-release/
We could have a symlink
sgx-lkl
that points to one of them (e.g. the RELEASE build to have security by default?). When launchingsgx-lkl-run-oe
, it outputs clearly which version it is.Dependencies
cc: @letmaik @wintersteiger @davidchisnall @paulcallen @jxyang
The text was updated successfully, but these errors were encountered: