From b7edb11a880b1b49f3e2a7139e6743b680fb7f0f Mon Sep 17 00:00:00 2001 From: "Zheng, Qi" Date: Wed, 23 Feb 2022 15:01:38 +0800 Subject: [PATCH] Add occlum-ra-flow demo --- .github/workflows/hw_mode_test.yml | 52 ++++- .../remote_attestation/init_ra_flow/README.md | 92 +++++++++ .../remote_attestation/init_ra_flow/arch.png | Bin 0 -> 160852 bytes .../init_ra_flow/build_content.sh | 135 +++++++++++++ .../init_ra_flow/flask.yaml | 17 ++ .../init_ra_flow/gen-cert.sh | 14 ++ .../init_ra_flow/init_ra/Cargo.lock | 94 ++++++++++ .../init_ra_flow/init_ra/Cargo.toml | 11 ++ .../init_ra_flow/init_ra/build.rs | 5 + .../init_ra_flow/init_ra/src/main.rs | 177 ++++++++++++++++++ .../init_ra_flow/init_ra_client.yaml | 19 ++ .../init_ra_flow/ra_config_template.json | 16 ++ .../init_ra_flow/ra_server.yaml | 16 ++ demos/remote_attestation/init_ra_flow/run.sh | 16 ++ 14 files changed, 663 insertions(+), 1 deletion(-) create mode 100644 demos/remote_attestation/init_ra_flow/README.md create mode 100644 demos/remote_attestation/init_ra_flow/arch.png create mode 100755 demos/remote_attestation/init_ra_flow/build_content.sh create mode 100644 demos/remote_attestation/init_ra_flow/flask.yaml create mode 100755 demos/remote_attestation/init_ra_flow/gen-cert.sh create mode 100644 demos/remote_attestation/init_ra_flow/init_ra/Cargo.lock create mode 100644 demos/remote_attestation/init_ra_flow/init_ra/Cargo.toml create mode 100644 demos/remote_attestation/init_ra_flow/init_ra/build.rs create mode 100644 demos/remote_attestation/init_ra_flow/init_ra/src/main.rs create mode 100644 demos/remote_attestation/init_ra_flow/init_ra_client.yaml create mode 100644 demos/remote_attestation/init_ra_flow/ra_config_template.json create mode 100644 demos/remote_attestation/init_ra_flow/ra_server.yaml create mode 100755 demos/remote_attestation/init_ra_flow/run.sh diff --git a/.github/workflows/hw_mode_test.yml b/.github/workflows/hw_mode_test.yml index b9d87808..ecbab56d 100644 --- a/.github/workflows/hw_mode_test.yml +++ b/.github/workflows/hw_mode_test.yml @@ -880,12 +880,62 @@ jobs: - name: Run gRPC client run: | sleep ${{ env.nap_time }}; - docker exec ${{ env.CONTAINER_NAME }} bash -c "cd /root/occlum/demos/ra_tls; ./run.sh client" + docker exec ${{ env.CONTAINER_NAME }} bash -c "cd /root/occlum/demos/ra_tls; ./run.sh client cert" - name: Clean the environment if: ${{ always() }} run: docker stop ${{ env.CONTAINER_NAME }} + Init_RA_test: + if: github.event_name == 'push' || ${{ contains(github.event.pull_request.labels.*.name, 'SGX-hardware-test-required') }} + runs-on: ${{ matrix.self_runner }} + strategy: + matrix: + self_runner: [[self-hosted, SGX2-HW]] + + steps: + - name: Clean before running + run: | + sudo chown -R ${{ secrets.CI_ADMIN }} "${{ github.workspace }}" + + - name: Checkout code + if: github.event_name == 'push' + uses: actions/checkout@v2 + with: + submodules: true + + - name: Checkout code from fork + if: ${{ contains(github.event.pull_request.labels.*.name, 'SGX-hardware-test-required') }} + uses: actions/checkout@v2 + with: + ref: refs/pull/${{ github.event.pull_request.number }}/merge + submodules: true + + - uses: ./.github/workflows/composite_action/hw + with: + container-name: ${{ github.job }} + build-envs: 'OCCLUM_RELEASE_BUILD=1' + + - name: Build the init-ra all content + run: docker exec ${{ env.CONTAINER_NAME }} bash -c "cd /root/occlum/demos/remote_attestation/init_ra_flow; ./build_content.sh" + + - name: Run init-ra server and client(flask-tls) on backgroud + run: docker exec ${{ env.CONTAINER_NAME }} bash -c "cd /root/occlum/demos/remote_attestation/init_ra_flow; ./run.sh" + + - name: Test PUT data with certificate + run: | + docker exec ${{ env.CONTAINER_NAME }} bash -c "cd /root/occlum/demos/remote_attestation/init_ra_flow; + curl --cacert flask.crt -X PUT https://localhost:4996/customer/1 -d "data=Tom" + + - name: Test GET data with certificate + run: | + docker exec ${{ env.CONTAINER_NAME }} bash -c "cd /root/occlum/demos/remote_attestation/init_ra_flow; + curl --cacert flask.crt -X GET https://localhost:4996/customer/1 + + - name: Clean the environment + if: ${{ always() }} + run: docker stop ${{ env.CONTAINER_NAME }} + Stress_test_with_musl: if: github.event_name == 'schedule' runs-on: ${{ matrix.self_runner }} diff --git a/demos/remote_attestation/init_ra_flow/README.md b/demos/remote_attestation/init_ra_flow/README.md new file mode 100644 index 00000000..0ec326b7 --- /dev/null +++ b/demos/remote_attestation/init_ra_flow/README.md @@ -0,0 +1,92 @@ +# Occlum RA Flow in a real demo + +## Overview + +Remote attestation is a key part in the confidential computing. Occlum provides a [`DCAP Library`](../../../tools/toolchains/dcap_lib/) to ease the RA application. A brief Occlum RA [`introduction`](../../../docs/remote_attestation.md) is a good entry point. But still, utilizing the RA in a real application is complicated for general developers. + +Occlum provides a `Init RA` way to seperate the RA operation and the actual application. With this way, the APP developers don't need know too much about the RA and the application doesn't need to be modified for RA. + +This demo shows the `Init RA` way with a sample [`Flask TLS web application`](../../python/flask/), based on [`GRPC-RATLS`](../../ra_tls/) server/client implementation and a modified [`init`](./init_ra/) for Occlum InitFS. + +![Arch Overview](./arch.png) + +The GRPC-RATLS server holds some sensitive data thus it is usually deploed on secure environment. The application consuming the sensitive data could be deployed on general environment, such as Cloud service vendor provided SGX instance. For this demo, all are running on one SGX machine. + +## Flow + +* Starts the GRPC-RATLS server. It holds `RA Verify Config` JSON and `Secrets` JSON files. The `RA Verify Config` JSON records which SGX quote part should be verified. The template is [`ra_config_template.json`](./ra_config_template.json), all supported `verify_xxx` are on in default. +``` +{ + "verify_mr_enclave" : "on", + "verify_mr_signer" : "on", + "verify_isv_prod_id" : "on", + "verify_isv_svn" : "on", + "verify_enclave_debuggable" : "on", + "sgx_mrs": [ + { + "mr_enclave" : "", + "mr_signer" : "", + "isv_prod_id" : "0", + "isv_svn" : "0", + "debuggable" : false + } + ], + "other" : [] +} +``` +Users need decide which `verify_xxx` are taking effect. +1. if yes, fill in the measures data under `sgx_mrs`. +2. if no, set `verify_xxx` to `off`. + +Details could refer to the `build_server_instance` in script [`build_content.sh`](./build_content.sh). + +The `RA Verify Config` JSON records the secrets. Each secret has a name and its base64 encoded string value, such as +``` +{ + "flask_cert" : "dGVzdCBzYW1wbGUgY2VydGlmaWNhdGVzCg==", + "flask_key" : "dGVzdCBzYW1wbGUga2V5Cg==" + "image_key" : "YTUtNmQtN2YtY2YtYWUtOTMtZTItMWYtNWItOGEtODMtM2YtNzktNzgtMjktZmYK" +} +``` + +`flask_cert` and `flask_key` are generated by `openssl` by script `gen-cert.sh`. They are used for the Flask-TLS restful sever set-up. + +`image_key` is used to encrypt the Occlum APP RootFS image which is `Flask-TLS` in this demo. It is generated by command `occlum gen-image-key image_key`. The image encryption could be done by `occlum build --image-key image-key`. With this encryption, anything saved in the RootFS has a good protection. + +* Starts the Flask-TLS-Infer demo. For every Occlum built application, it starts `init` process first, then starts the real application in RootFS. The default [`init`](../../../tools/init/) process just run RootFS integrity check and then load the RootFS where the real application is located. + +For this demo, a modified [`init`](./init_ra/) is used. Besides the general `init` operation, it embeds the `GRPC-RATLS` client API `gr_client_get_secret`, gets the secrets(base64 encoded) from the `GRPC-RATLS server`, does base64 decoding, acquires the real secrets. The `image_key` is used to decrypt the RootFS image. The other two are saved to RootFS. In this example, they are `/etc/flask.crt` and `/etc/flask.key`. Finally, when the Flask-TLS app is running, all secrets are securely obtained already in `init` thus the app runs successfully without RA involvement in this stage. + + +## How-to build the demo + +* Just run `build_content.sh` which builds everything. +Once successful, two Occlum instances are created. +``` +occlum_client +occlum_server +``` + +## How-to run + +* Starts the GRPC-RATLS server in background. +``` +cd occlum_server +occlum run /bin/server & +``` + +* Starts the Flask-TLS web portal in backgroud. +``` +cd occlum_client +occlum run /bin/rest_api.py & +``` + +Above two could be executed in one script [`run.sh`](./run.sh). + +* Access the Flask-TLS web portal with valid certificate. +``` +curl --cacert flask.crt -X PUT https://localhost:4996/customer/1 -d "data=Tom" +curl --cacert flask.crt -X PUT https://localhost:4996/customer/2 -d "data=Jerry" +curl --cacert flask.crt -X GET https://localhost:4996/customer/1 +curl --cacert flask.crt -X GET https://localhost:4996/customer/2 +``` diff --git a/demos/remote_attestation/init_ra_flow/arch.png b/demos/remote_attestation/init_ra_flow/arch.png new file mode 100644 index 0000000000000000000000000000000000000000..81a3b41fc0cb62b8d4ec36ff35cb348a41801ba5 GIT binary patch literal 160852 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%0D`KcY!e)-EM6LUAv2;ozUqnPRNpGtu}S|zW} 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�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 Nc0$ikm#l3c_CMS~B/dev/null 2>&1 && pwd )" + +export DEP_LIBS_DIR="${script_dir}/dep_libs" +export INITRA_DIR="${script_dir}/init_ra" +export FLASK_DIR="${script_dir}/../../python/flask" +export RATLS_DIR="${script_dir}/../../ra_tls" + +function build_ratls() +{ + rm -rf ${DEP_LIBS_DIR} && mkdir ${DEP_LIBS_DIR} + pushd ${RATLS_DIR} + ./download_and_prepare.sh + ./build_and_install.sh musl + ./build_occlum_instance.sh musl + + cp ./grpc-src/examples/cpp/ratls/build/libgrpc_ratls_client.so ${DEP_LIBS_DIR}/ + cp ./grpc-src/examples/cpp/ratls/build/libhw_grpc_proto.so ${DEP_LIBS_DIR}/ + + popd +} + +function build_flask() +{ + pushd ${FLASK_DIR} + ${FLASK_DIR}/install_python_with_conda.sh + popd +} + +function build_init_ra() +{ + pushd ${INITRA_DIR} + occlum-cargo clean + occlum-cargo build --release + popd +} + +function build_client_instance() +{ + # generate client image key + occlum gen-image-key image_key + + rm -rf occlum_client && occlum new occlum_client + pushd occlum_client + + # prepare flask content + rm -rf image + copy_bom -f ../flask.yaml --root image --include-dir /opt/occlum/etc/template + + new_json="$(jq '.resource_limits.user_space_size = "600MB" | + .resource_limits.kernel_space_heap_size = "128MB" | + .resource_limits.max_num_of_threads = 32 | + .metadata.debuggable = false | + .env.default += ["PYTHONHOME=/opt/python-occlum"]' Occlum.json)" && \ + echo "${new_json}" > Occlum.json + + occlum build --image-key ../image_key + + # Get server mrsigner. + # Here client and server use the same signer-key thus using client mrsigner directly. + jq ' .verify_mr_enclave = "off" | + .verify_mr_signer = "off" | + .verify_isv_prod_id = "off" | + .verify_isv_svn = "off" | + .verify_enclave_debuggable = "on" | + .sgx_mrs[0].mr_signer = ''"'`get_mr client mr_signer`'" | + .sgx_mrs[0].debuggable = false ' ../ra_config_template.json > dynamic_config.json + + # prepare init-ra content + rm -rf initfs + copy_bom -f ../init_ra_client.yaml --root initfs --include-dir /opt/occlum/etc/template + + occlum build -f --image-key ../image_key + + popd +} + +function get_mr() { + sgx_sign dump -enclave ${script_dir}/occlum_$1/build/lib/libocclum-libos.signed.so -dumpfile ../metadata_info_$1.txt + if [ "$2" == "mr_enclave" ]; then + sed -n -e '/enclave_hash.m/,/metadata->enclave_css.body.isv_prod_id/p' ../metadata_info_$1.txt |head -3|tail -2|xargs|sed 's/0x//g'|sed 's/ //g' + elif [ "$2" == "mr_signer" ]; then + tail -2 ../metadata_info_$1.txt |xargs|sed 's/0x//g'|sed 's/ //g' + fi +} + +function gen_secret_json() { + # First generate cert/key by openssl + ./gen-cert.sh + + # Then do base64 encode + cert=$(base64 -w 0 flask.crt) + key=$(base64 -w 0 flask.key) + image_key=$(base64 -w 0 image_key) + + # Then generate secret json + jq -n --arg cert "$cert" --arg key "$key" --arg image_key "$image_key" \ + '{"flask_cert": $cert, "flask_key": $key, "image_key": $image_key}' > secret_config.json +} + +function build_server_instance() +{ + gen_secret_json + rm -rf occlum_server && occlum new occlum_server + pushd occlum_server + + jq '.verify_mr_enclave = "on" | + .verify_mr_signer = "on" | + .verify_isv_prod_id = "off" | + .verify_isv_svn = "off" | + .verify_enclave_debuggable = "on" | + .sgx_mrs[0].mr_enclave = ''"'`get_mr client mr_enclave`'" | + .sgx_mrs[0].mr_signer = ''"'`get_mr client mr_signer`'" | + .sgx_mrs[0].debuggable = false ' ../ra_config_template.json > dynamic_config.json + + new_json="$(jq '.resource_limits.user_space_size = "500MB" | + .metadata.debuggable = false ' Occlum.json)" && \ + echo "${new_json}" > Occlum.json + + rm -rf image + copy_bom -f ../ra_server.yaml --root image --include-dir /opt/occlum/etc/template + + occlum build + + popd +} + +build_ratls +build_flask +build_init_ra + +build_client_instance +build_server_instance diff --git a/demos/remote_attestation/init_ra_flow/flask.yaml b/demos/remote_attestation/init_ra_flow/flask.yaml new file mode 100644 index 00000000..d92664c9 --- /dev/null +++ b/demos/remote_attestation/init_ra_flow/flask.yaml @@ -0,0 +1,17 @@ +includes: + - base.yaml +targets: + - target: /usr/bin + createlinks: + - src: /opt/python-occlum/bin/python3 + linkname: python3 + # python packages + - target: /opt + copy: + - dirs: + - ${FLASK_DIR}/python-occlum + # below are python code and data + - target: /bin + copy: + - files: + - ${FLASK_DIR}/rest_api.py diff --git a/demos/remote_attestation/init_ra_flow/gen-cert.sh b/demos/remote_attestation/init_ra_flow/gen-cert.sh new file mode 100755 index 00000000..68d19cc5 --- /dev/null +++ b/demos/remote_attestation/init_ra_flow/gen-cert.sh @@ -0,0 +1,14 @@ +#!/bin/bash + +# Users should run this script in secure environment and keep +# the geneated key/cert proctected. + +pushd ~ +openssl rand -writerand .rnd +popd + +# Geneate self-signed key/cert +# Generate valid Flask server Key/Cert +openssl genrsa -out flask.key 2048 +openssl req -nodes -new -key flask.key -subj "/CN=localhost" -out flask.csr +openssl x509 -req -sha256 -days 365 -in flask.csr -signkey flask.key -out flask.crt diff --git a/demos/remote_attestation/init_ra_flow/init_ra/Cargo.lock b/demos/remote_attestation/init_ra_flow/init_ra/Cargo.lock new file mode 100644 index 00000000..95122653 --- /dev/null +++ b/demos/remote_attestation/init_ra_flow/init_ra/Cargo.lock @@ -0,0 +1,94 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +[[package]] +name = "init" +version = "0.0.1" +dependencies = [ + "libc", + "serde", + "serde_json", +] + +[[package]] +name = "itoa" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd25036021b0de88a0aff6b850051563c6516d0bf53f8638938edbb9de732736" + +[[package]] +name = "libc" +version = "0.2.84" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1cca32fa0182e8c0989459524dc356b8f2b5c10f1b9eb521b7d182c03cf8c5ff" + +[[package]] +name = "proc-macro2" +version = "1.0.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e0704ee1a7e00d7bb417d0770ea303c1bccbabf0ef1667dae92b5967f5f8a71" +dependencies = [ + "unicode-xid", +] + +[[package]] +name = "quote" +version = "1.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3d0b9745dc2debf507c8422de05d7226cc1f0644216dfdfead988f9b1ab32a7" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "ryu" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e" + +[[package]] +name = "serde" +version = "1.0.123" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92d5161132722baa40d802cc70b15262b98258453e85e5d1d365c757c73869ae" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.123" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9391c295d64fc0abb2c556bad848f33cb8296276b1ad2677d1ae1ace4f258f31" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serde_json" +version = "1.0.62" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea1c6153794552ea7cf7cf63b1231a25de00ec90db326ba6264440fa08e31486" +dependencies = [ + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "syn" +version = "1.0.60" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c700597eca8a5a762beb35753ef6b94df201c81cca676604f547495a0d7f0081" +dependencies = [ + "proc-macro2", + "quote", + "unicode-xid", +] + +[[package]] +name = "unicode-xid" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7fe0bb3479651439c9112f72b6c505038574c9fbb575ed1bf3b797fa39dd564" diff --git a/demos/remote_attestation/init_ra_flow/init_ra/Cargo.toml b/demos/remote_attestation/init_ra_flow/init_ra/Cargo.toml new file mode 100644 index 00000000..fae53884 --- /dev/null +++ b/demos/remote_attestation/init_ra_flow/init_ra/Cargo.toml @@ -0,0 +1,11 @@ +[package] +name = "init" +version = "0.0.1" +build = "build.rs" +authors = ["LI Qing geding.lq@antgroup.com"] +edition = "2018" + +[dependencies] +libc = "0.2.84" +serde = { version = "1.0", features = ["derive"] } +serde_json = "1.0" diff --git a/demos/remote_attestation/init_ra_flow/init_ra/build.rs b/demos/remote_attestation/init_ra_flow/init_ra/build.rs new file mode 100644 index 00000000..8a70a4cd --- /dev/null +++ b/demos/remote_attestation/init_ra_flow/init_ra/build.rs @@ -0,0 +1,5 @@ +fn main() { + println!("cargo:rustc-link-search=native=../dep_libs"); + println!("cargo:rustc-link-lib=dylib=grpc_ratls_client"); + println!("cargo:rustc-link-lib=dylib=hw_grpc_proto"); +} \ No newline at end of file diff --git a/demos/remote_attestation/init_ra_flow/init_ra/src/main.rs b/demos/remote_attestation/init_ra_flow/init_ra/src/main.rs new file mode 100644 index 00000000..bcc1e4e1 --- /dev/null +++ b/demos/remote_attestation/init_ra_flow/init_ra/src/main.rs @@ -0,0 +1,177 @@ +extern crate libc; +extern crate serde; +extern crate serde_json; + +use libc::syscall; +use serde::Deserialize; + +use std::error::Error; +use std::fs; +use std::fs::File; +use std::io::{ErrorKind, Read}; + +use std::ffi::CString; +use std::os::raw::{c_int, c_char}; + +#[link(name = "grpc_ratls_client")] +extern "C" { + fn gr_client_get_secret( + server_addr: *const c_char, // grpc server address+port, such as "localhost:50051" + config_json: *const c_char, // ratls handshake config json file + name: *const c_char, // secret name to be requested + secret_file: *const c_char // secret file to be saved + ) -> c_int; +} + +fn main() -> Result<(), Box> { + // Load the configuration from initfs + const IMAGE_CONFIG_FILE: &str = "/etc/image_config.json"; + let image_config = load_config(IMAGE_CONFIG_FILE)?; + + // Get the MAC of Occlum.json.protected file + let occlum_json_mac = { + let mut mac: sgx_aes_gcm_128bit_tag_t = Default::default(); + parse_str_to_bytes(&image_config.occlum_json_mac, &mut mac)?; + mac + }; + let occlum_json_mac_ptr = &occlum_json_mac as *const sgx_aes_gcm_128bit_tag_t; + + // Get client secrets through grpc-ratls + let server_addr = CString::new("localhost:50051").unwrap(); + let config_json = CString::new("dynamic_config.json").unwrap(); + + // Get the key of FS image if needed + let key = match &image_config.image_type[..] { + "encrypted" => { + // Get the image encrypted key through RA + let secret = CString::new("image_key").unwrap(); + let filename = CString::new("/etc/image_key").unwrap(); + + let ret = unsafe { + gr_client_get_secret( + server_addr.as_ptr(), + config_json.as_ptr(), + secret.as_ptr(), + filename.as_ptr()) + }; + + if ret != 0 { + println!("gr_client_get_secret failed return {}", ret); + return Err(Box::new(std::io::Error::last_os_error())); + } + + const IMAGE_KEY_FILE: &str = "/etc/image_key"; + let key_str = load_key(IMAGE_KEY_FILE)?; + let mut key: sgx_key_128bit_t = Default::default(); + parse_str_to_bytes(&key_str, &mut key)?; + Some(key) + } + "integrity-only" => None, + _ => unreachable!(), + }; + let key_ptr = key + .as_ref() + .map(|key| key as *const sgx_key_128bit_t) + .unwrap_or(std::ptr::null()); + + // Get certificate + let secret = CString::new("flask_cert").unwrap(); + let filename = CString::new("cert_file").unwrap(); + + let ret = unsafe { + gr_client_get_secret( + server_addr.as_ptr(), + config_json.as_ptr(), + secret.as_ptr(), + filename.as_ptr()) + }; + + if ret != 0 { + println!("gr_client_get_secret failed return {}", ret); + return Err(Box::new(std::io::Error::last_os_error())); + } + + let cert_secret = fs::read_to_string(filename.into_string().unwrap()) + .expect("Something went wrong reading the file"); + + // Get key + let secret = CString::new("flask_key").unwrap(); + let filename = CString::new("key_file").unwrap(); + + let ret = unsafe { + gr_client_get_secret( + server_addr.as_ptr(), + config_json.as_ptr(), + secret.as_ptr(), + filename.as_ptr()) + }; + + if ret != 0 { + println!("gr_client_get_secret failed return {}", ret); + return Err(Box::new(std::io::Error::last_os_error())); + } + + let key_secret = fs::read_to_string(filename.into_string().unwrap()) + .expect("Something went wrong reading the file"); + + // Mount the image + const SYS_MOUNT_FS: i64 = 363; + let ret = unsafe { syscall(SYS_MOUNT_FS, key_ptr, occlum_json_mac_ptr) }; + if ret < 0 { + return Err(Box::new(std::io::Error::last_os_error())); + } + + // Write the secrets to rootfs + fs::write("/etc/flask.crt", cert_secret.into_bytes())?; + fs::write("/etc/flask.key", key_secret.into_bytes())?; + + Ok(()) +} + +#[allow(non_camel_case_types)] +type sgx_key_128bit_t = [u8; 16]; +#[allow(non_camel_case_types)] +type sgx_aes_gcm_128bit_tag_t = [u8; 16]; + +#[derive(Deserialize, Debug)] +#[serde(deny_unknown_fields)] +struct ImageConfig { + occlum_json_mac: String, + image_type: String, +} + +fn load_config(config_path: &str) -> Result> { + let mut config_file = File::open(config_path)?; + let config_json = { + let mut config_json = String::new(); + config_file.read_to_string(&mut config_json)?; + config_json + }; + let config: ImageConfig = serde_json::from_str(&config_json)?; + Ok(config) +} + +fn load_key(key_path: &str) -> Result> { + let mut key_file = File::open(key_path)?; + let mut key = String::new(); + key_file.read_to_string(&mut key)?; + Ok(key.trim_end_matches(|c| c == '\r' || c == '\n').to_string()) +} + +fn parse_str_to_bytes(arg_str: &str, bytes: &mut [u8]) -> Result<(), Box> { + let bytes_str_vec = { + let bytes_str_vec: Vec<&str> = arg_str.split('-').collect(); + if bytes_str_vec.len() != bytes.len() { + return Err(Box::new(std::io::Error::new( + ErrorKind::InvalidData, + "The length or format of Key/MAC string is invalid", + ))); + } + bytes_str_vec + }; + + for (byte_i, byte_str) in bytes_str_vec.iter().enumerate() { + bytes[byte_i] = u8::from_str_radix(byte_str, 16)?; + } + Ok(()) +} diff --git a/demos/remote_attestation/init_ra_flow/init_ra_client.yaml b/demos/remote_attestation/init_ra_flow/init_ra_client.yaml new file mode 100644 index 00000000..300599d1 --- /dev/null +++ b/demos/remote_attestation/init_ra_flow/init_ra_client.yaml @@ -0,0 +1,19 @@ +includes: + - base.yaml +targets: + - target: /bin/ + copy: + - files: + - ${INITRA_DIR}/target/x86_64-unknown-linux-musl/release/init + - target: /lib/ + copy: + - files: + - ${DEP_LIBS_DIR}/libgrpc_ratls_client.so + - target: / + copy: + - files: + - dynamic_config.json + - target: /usr/share/grpc/ + copy: + - files: + - ${RATLS_DIR}/grpc-src/etc/roots.pem diff --git a/demos/remote_attestation/init_ra_flow/ra_config_template.json b/demos/remote_attestation/init_ra_flow/ra_config_template.json new file mode 100644 index 00000000..573c86ff --- /dev/null +++ b/demos/remote_attestation/init_ra_flow/ra_config_template.json @@ -0,0 +1,16 @@ +{ + "verify_mr_enclave" : "on", + "verify_mr_signer" : "on", + "verify_isv_prod_id" : "on", + "verify_isv_svn" : "on", + "verify_enclave_debuggable" : "on", + "sgx_mrs": [ + { + "mr_enclave" : "", + "mr_signer" : "", + "isv_prod_id" : "0", + "isv_svn" : "0", + "debuggable" : false + } + ] +} diff --git a/demos/remote_attestation/init_ra_flow/ra_server.yaml b/demos/remote_attestation/init_ra_flow/ra_server.yaml new file mode 100644 index 00000000..d7225594 --- /dev/null +++ b/demos/remote_attestation/init_ra_flow/ra_server.yaml @@ -0,0 +1,16 @@ +includes: + - base.yaml +targets: + - target: /bin/ + copy: + - files: + - ${RATLS_DIR}/grpc-src/examples/cpp/ratls/build/server + - target: / + copy: + - files: + - dynamic_config.json + - ../secret_config.json + - target: /usr/share/grpc/ + copy: + - files: + - ${RATLS_DIR}/grpc-src/etc/roots.pem diff --git a/demos/remote_attestation/init_ra_flow/run.sh b/demos/remote_attestation/init_ra_flow/run.sh new file mode 100755 index 00000000..2872c70c --- /dev/null +++ b/demos/remote_attestation/init_ra_flow/run.sh @@ -0,0 +1,16 @@ +#!/bin/bash +set -e + +echo "Start GRPC server on backgound ..." + +pushd occlum_server +occlum run /bin/server & +popd + +sleep 3 + +echo "Start Flask-TLS restful web portal on backgound ..." + +pushd occlum_client +occlum run /bin/rest_api.py & +popd \ No newline at end of file