There are two related patches in this project: The BoringSSL patch enables an
opaque key for Channel ID, and the Chromium patch enables an opaque key along
with providing an implementation of hardware-backed keys using the Intel SGX
SDK. Together, these patches demonstrate how Chromium could store its Channel ID
private keys in an Intel SGX enclave.
Compile and run
Follow the following steps to compile and run:
Be on a machine with an SGX processor.
Enter the BIOS settings, and make sure SGX is set to enabled.
Install Linux.
Install the SGX Alpha SDK, following the included instructions.
Download the chromium repository following the instructions available. We
will call its path <chromium>.
Checkout commit f594a1085b49369c2479e5526dd0ef8b116e9af0 in the chromium
repository.
cd third_party/boringssl/src, checkout commit
afe57cb14d36f70ad4a109fc5e7765d1adc67035.
Chrome uses an included root to handle packages.
cd build/linux/debian_wheezy_<amd64/i386>-sysroot/
mkdir opt && cd opt && mkdir intel && cd intel
cp -r /opt/intel/sgxsdk .
Set up pkgconfig by creating the file /usr/lib/pkgconfig/sgx.pc with contents:
Channel ID Private Key Protection
About
There are two related patches in this project: The BoringSSL patch enables an opaque key for Channel ID, and the Chromium patch enables an opaque key along with providing an implementation of hardware-backed keys using the Intel SGX SDK. Together, these patches demonstrate how Chromium could store its Channel ID private keys in an Intel SGX enclave.
Compile and run
Follow the following steps to compile and run:
enabled.<chromium>.f594a1085b49369c2479e5526dd0ef8b116e9af0in the chromium repository.cd third_party/boringssl/src, checkout commitafe57cb14d36f70ad4a109fc5e7765d1adc67035./usr/lib/pkgconfig/sgx.pcwith contents:~/.bashrc:(this second one should already be there if chrome compiles properly)chromium/chromium.patchto<chromium>/src.boringssl/bssl.patchtothird_party/boringssl/src.<chromium>/src:ninja -C out/Default chrome chrome_sandbox)If you want to run tests:
There are more tests within boringssl, with instructions in
third_party/boringssl/src/BUILDING.md