Name
Last commit
Last update
.github SKALE-3596 Intel submission.
build-aux Fixed edl build
cert SKALE-2464-small fixes
docker SKALE-3430-add-new-ecdsa
docs ehnahncement/SKALE-3364-check-server-limits-before-running-sgxwallet
insecure-samples SKALE-2536-fix-cert
intel-sgx-ssl @ 8dc9f547 Loading commit data...
jsonrpc SKALE-2545 remove extra deps
leveldb @ 21304d41 Loading commit data...
libBLS @ 82884ec8 Loading commit data...
linux-sgx-driver @ 95eaa6f6 Loading commit data...
m4 FIxed include
run_sgx SKALE-3352 Use Intel signed version by default
run_sgx_sim SKALE-3274-restart-enclave
scripts Update sign_enclave.bash
secure_enclave SKALE-3596 Intel submission
sgx-gmp @ 2331e681 Loading commit data...
sgx-software-enable @ 8c8f69d4 Loading commit data...
third_party SKALE-3189-fix-build
.codacy.yml SKALE-2794 fix codacy
.gitignore SKLAE-2002 small refactoring
.gitmodules SKALE-3504 finalize tests
BLSCrypto.cpp SKALE-3654
BLSCrypto.h SKALE-3009 return vector
BLSPrivateKeyShareSGX.cpp SKALE-3636-sgx-server-anti-dos-protections
BLSPrivateKeyShareSGX.h SKALE-2794 clean up code
CMakeLists.txt SKALE-3228
CSRManagerServer.cpp SKALE-3067-cleanup-sgx
CSRManagerServer.h SKALE-2002 fix bls key length
DKGCrypto.cpp SKALE-3654
DKGCrypto.h SKALE-3504 add methods with hash
Dockerfile SKALE-3430-add-new-ecdsa
DockerfileBase SKALE-3189-fix-build
DockerfileIntelSubmission SKALE-3596 Intel submission.
DockerfileRelease SKALE-3430-add-new-ecdsa
DockerfileSimulation SKALE-3430-add-new-ecdsa
ECDSACrypto.cpp SKALE-3654
ECDSACrypto.h SKALE-3434 add import ECDSA key
ECDSAImpl.c SKALE-3228
Exception.cpp SKALE-2002 fix bls key length
Exception.h SKALE-2345 added logs
INTEL_SGX_LICENSE Fixed license
InvalidArgumentException.cpp SKALE-2794 fix headers
InvalidArgumentException.h SKALE-2794 fix headers
InvalidStateException.cpp SKALE-2794 fix headers
InvalidStateException.h SKALE-2794 fix headers
LICENSE Fixed license
LevelDB.cpp ehnahncement/SKALE-3364-check-server-limits-before-running-sgxwallet
LevelDB.h SKALE-2835 fix build
Log.cpp bug/SKALE-3654-SGX-errors
Log.h bug/SKALE-3654-SGX-errors
Makefile.am SKALE-3431 fix build
README.md Update README.md
SECURITY.md Add security policy
SEKManager.cpp SKALE-3654
SEKManager.h bug/SKALE-3536 Turns out thread number was not set properly in HTTP server
SGXException.h bug/SKALE-3654-SGX-errors
SGXRegistrationServer.cpp ehnahncement/SKALE-3364-check-server-limits-before-running-sgxwallet
SGXRegistrationServer.h SKALE-2536-fix-cert
SGXWalletServer.cpp SKALE-3654
SGXWalletServer.h SKALE-3159-test-fails
SGXWalletServer.hpp SKALE-3636-sgx-server-anti-dos-protections
ServerDataChecker.cpp SKALE-3228
ServerDataChecker.h update Licensing headers
ServerInit.cpp SKALE-3636-sgx-server-anti-dos-protections
ServerInit.h SKALE-2741
TestUtils.cpp SKALE-3654
TestUtils.h SKALE-3504 finalize tests
VERSION SKALE-3654
abstractCSRManagerServer.h SKALE-1855 Add licencing headers
abstractregserver.h SKALE-2341 Added tags for older commits
abstractstubserver.h SKALE-3504 add tests
autoconf.bash SKALE-2454-add-logs-to-enclave
build_instructions.txt SKALE-3039-downloadwhitelist
catch.hpp Added catch.hpp
cert_util.cpp SKALE-2794 fix headers
common.h ehnahncement/SKALE-3364-check-server-limits-before-running-sgxwallet
configure.ac Removed unneeded files
configure.gmp SKALE-1512-add-DKG-to-SGX Fix crash bls sign
intel_sgx_sdk_developer_reference_for_linux_os_pdf.pdf Added manual
regenerate_stubs_from_spec.sh Added regenerate script
sgx_enable Loading commit data...
sgxwall.cpp Loading commit data...
sgxwall.h Loading commit data...
sgxwallet.c Loading commit data...
sgxwallet.h Loading commit data...
sgxwallet_common.h Loading commit data...
spec.json Loading commit data...
stubclient.cpp Loading commit data...
stubclient.h Loading commit data...
testw.cpp Loading commit data...
testw.h Loading commit data...
testw.py Loading commit data...

sgxwallet: SKALE SGX-based hardware crypto wallet

Discord

Intro

sgxwallet is a next generation hardware secure crypto wallet that is based on Intel SGX technology. It currently supports Ethereum and SKALE, and will support Bitcoin in the future.

sgxwallet runs as a network server. Clients connect to the server, authenticate to it using TLS 1.0 protocol with client certificates, and then issue requests to the server to generate crypto keys and perform cryptographic operations. The keys are generated inside the secure SGX enclave and never leave the enclave unencrypted.

The server provides an initial registration service to issue client certificates to the clients. The administrator manually approves each registration.

sgxwallet has been tested on Ubuntu Linux 18.04.

An important note about production readiness

The sgxwallet server is still in active development and therefore should be regarded as alpha software. The development is still subject to security hardening, further testing, and breaking changes. This server has not yet been reviewed or audited for security. Please see SECURITY.md for reporting policies.

Build, test and push sgxwallet container Build, test and push sim mode container

Running sgxwallet

Clone this repo

As you probably suspect, the first thing to do is to clone this repository and all it is sub-repositories.

git clone https://github.com/skalenetwork/sgxwallet.git --recurse-submodules

Try in simulation mode

The easiest way to try the sgxwallet server is to run a docker container in insecure simulation mode that emulates an SGX processor. Once you are familiar with the server, you can enable sgx on your machine and run it in secure production mode.

First install docker-compose if you dont have it

sudo apt-get install docker.io docker-compose

Then run sgxwallet using docker-compose

cd run_sgx_sim; sudo docker-compose up

Note: you need a machine that supports Intel AVX512 instruction set. Most modern Intel CPUs support it. To verify you machine supports AVX512, run

cat /proc/cpuinfo | grep avx512

Note: sgxwallet requires docker-compose for correct operation. You must always use docker-compose and avoid using raw docker tools.

Note: simulation mode is only to try sgxwallet. In production, you need to run sgxwallet on a server that supports SGX. Never run a production sgxserver in simulation mode.

Admin guide

If you are a SKALE validator and want to run sgxwallet for testnet or mainnet usage, you need a SGX-capable server.
Please refer to Admin guide for details on how to setup sgxwallet in a secure hardware mode docs/admin-guide.md.

Developer guide

If you are a SKALE developer and want to build sgxwallet from source, please refer to Developer guide docs/developer-guide.md.

Contributing

See contributing for information on how to contribute.

Libraries used by this project

License

License

All contributions to sgxwallet are made under the GNU Affero General Public License v3. See LICENSE.

Copyright (C) 2019-Present SKALE Labs.