Governance Stage 0: Signing Key Generation and Use #435
Replies: 5 comments 6 replies
-
The thing I will say in favor of just using KMS though, is even with HSM, TPM, or enclave setups, whoever controls the logic in the enclave (and any checks for attestation), for example, can still control what the keys are doing in pretty dangerous ways. So, your best line of defense still ends up being things on chain which can be kind of double-up with attestations and similar, but is still really more about the actual voting and time locks. |
Beta Was this translation helpful? Give feedback.
-
From the built-in docs of
This mostly means optionally encrypted well-known files; |
Beta Was this translation helpful? Give feedback.
-
I think there are secret sharing algorithms with recovery from M out of N shares. This could be used to guard against a single (or multiple) enclaves crashing. However, successful recovery depends on timely detection of loss of some shares. There are also projects for decentralized secret storage, one example being Nillion. |
Beta Was this translation helpful? Give feedback.
-
Proposed to this end: movementlabsxyz/MIP#1 |
Beta Was this translation helpful? Give feedback.
-
On remote signing with Celestia: The light and bridge nodes can add a |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
Summary
The current proposal for Governance Stage 0 (#421) is to generate all signing keys on trusted hardware and prevent direct access. This roughly means that each place we currently use a signing key needs to be evaluated for use via a HSM/TPM or enclave.
An enclave-based solution is likely most generalizable, as we can push existing (and potentially already audited) logic directly down into the logic of the program running in the enclave. However, AWS Nitro Enclaves (the product we would likely use) do not have backups, meaning we have to consider some additional patterns.
A KMS approach may also be deemed just as viable, given the control of access to the signing capabilities poses a similar attack to access to the signing keys themselves.
Aptos
We keep a
maptos_signing_key
which is used to:Thus, the primary modification here needs to be to sign raw Aptos transactions for the faucet with trusted compute. A discussion about how difficult this would be to implement non-destructively in
aptos-core
has already started here at #387. If we wanted to do this in the faucet app-logic, that might be easier.Celestia
celestia_auth_token
. We then use this token to sign blob submission transactions.cel-key
binary. We may be able to use backends available viahttps://github.com/iqlusioninc/tmkmsCosmos-SDK (in Go).ETH Signing: Contract Upgrades, Contract Method Calls, and Staking
Most of these transaction calls will already have to be written from scratch--which is a blessing and a curse. We could therefore simply send raw transactions to a HSM/TPM for signing. Secp256k1 is not supported by any TPM I'm aware of. It is supported by AWS HSM. But, this could also take place in an enclave, but...
General Key Generation and Signing
In general, keys should be generated in a place which is recoverable, reliable, and able to restricted from direct access. This place also somehow has to be able perform the necessary signing logic.
The following are some strategies which could contend with this:
Combatting Misuse of Enclaves
If we do go for an enclave-based signing approach, there a couple more clever things that can be done to make misusing the enclave more difficult:
Beta Was this translation helpful? Give feedback.
All reactions