Access requester secrets
In this tutorial, you will learn how to:
leverage requester secrets by using the following environment variables in your code:
IEXEC_REQUESTER_SECRET_1
,IEXEC_REQUESTER_SECRET_2
,...
,IEXEC_REQUESTER_SECRET_<N>
map your personal secrets to those environment variables when buying an execution on iExec network
Before going any further, make sure you managed to Build your first application with Scone framework.
Prerequisites:
Docker 17.05 or higher on the daemon and client.
iExec SDK 8.0.0 or higher. Install the iExec SDK
Familiarity with the basic concepts of Intel® SGX and SCONE framework.
Trusted Execution Environments offer a huge advantage from a security perspective. They guarantee that the behavior of execution does not change even when launched on an untrusted remote machine. The data inside this type of environment is also protected, which allows its monetization while preventing leakage.
With iExec, it is possible to securely consume requester-provided secrets in the application.
The requester secrets are only exposed to authorized apps inside enclaves and never leave them.
Your secrets are transferred with the SDK from your machine to the SMS over a TLS channel.
Let's see how to do all of that!
Prepare your application
For demo purposes, we omitted some development best practices in these examples.
Make sure to check your field's best practices before going to production.
where the coefficients a, b, c and d are kept confidential using an application secret, and the input x is kept confidential using the requester's secret.
Let's create a directory tree for this app in ~/iexec-projects/
.
Make sure your chain.json
content is correct.
The application uses the requester's secret to evaluate a secret function f(x), keeping the input x also confidential, and writes the result in a file.
Copy the following content in src/
.
Build a Confidential Computing application
Create the Dockerfile
In this section, you will:
Build the native image of the application as described in Build your first application.
Create and execute the
sconify.sh
script to build the Scone TEE application as we saw in Build Scone app > Prepare your application.
The Dockerfile and the build scripts are similar to the ones we saw previously for a trusted application:
Create the Dockerfile
For a Javascript application:
For a Python application:
Build the docker image.
Follow the steps described in Build Scone app > Build the TEE docker image.
Update the sconify.sh
script with the variables as follow:
Run the sconify.sh
script to build the Scone TEE application:
Push the image on Docker Hub
Test your app on iExec
At this stage, your application is ready to be tested on iExec with the following steps:
Deploy the TEE app on iExec
For simplicity, we will use secrets in a TEE-debug app on a debug workerpool. The debug workerpool is connected to a debug Secret Management Service so we will send the requester secrets to this SMS (this is fine for debugging but do not use to store production secrets).
In this example, the app developer's secret must be strictly defined in the following format a;b;c;d
. For example set your secret to 1;1;1;1
for coeficients a,b,c,d. For details, go to Use app secret
Push some requester secrets to the SMS
Check secrets availability in the SMS
Run the TEE app
You are now ready to run the app with requester secrets.
Specify the --secret
and --tag tee,scone
options in iexec app run
command to run a tee app with requester secrets on Scone
The option --secret <secretMapping...>
allows the requester to provision any number of secrets with the mapping syntax <key>=<name>
.
example:
the secret named
foo
will be available inIEXEC_REQUESTER_SECRET_1
the secret named
bar
will be available inIEXEC_REQUESTER_SECRET_3
IEXEC_REQUESTER_SECRET_2
will be skipped
Next step?
Thanks to the explained confidential computing workflow, you now know how to consume requester secrets in a Confidential Computing application.
To go further, check out how to:
Last updated