From dce6f95be50917fd8e42b4774a185732f28c3b85 Mon Sep 17 00:00:00 2001 From: Joe Date: Tue, 16 Aug 2022 13:22:32 +0100 Subject: [PATCH] md formatting and add qubes images --- assets/clef_qubes_http.png | Bin 0 -> 12237 bytes assets/clef_qubes_qrexec.png | Bin 0 -> 17443 bytes assets/clef_sign_flow.png | Bin 0 -> 100271 bytes .../ethstats-mainnet.png | Bin assets/qrexec-example.png | Bin 0 -> 16166 bytes assets/qubes-client.py | 23 ++++ assets/qubes.Clefsign | 16 +++ assets/qubes_newaccount-1.png | Bin 0 -> 22348 bytes assets/qubes_newaccount-2.png | Bin 0 -> 37250 bytes content/docs/monitoring/dashboards.md | 16 +-- content/docs/monitoring/ethstats.md | 2 +- content/docs/tools/Clef/CliqueSigning.md | 17 ++- content/docs/tools/Clef/Introduction.md | 91 +++----------- content/docs/tools/Clef/Rules.md | 118 ++++-------------- content/docs/tools/Clef/datatypes.md | 2 +- 15 files changed, 99 insertions(+), 186 deletions(-) create mode 100644 assets/clef_qubes_http.png create mode 100644 assets/clef_qubes_qrexec.png create mode 100644 assets/clef_sign_flow.png rename {content/docs/monitoring => assets}/ethstats-mainnet.png (100%) create mode 100644 assets/qrexec-example.png create mode 100644 assets/qubes-client.py create mode 100644 assets/qubes.Clefsign create mode 100644 assets/qubes_newaccount-1.png create mode 100644 assets/qubes_newaccount-2.png diff --git a/assets/clef_qubes_http.png b/assets/clef_qubes_http.png new file mode 100644 index 0000000000000000000000000000000000000000..e95ad8da4af6fdd4f628ec4ea741c0b98147f00b GIT binary patch literal 12237 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

>W^cs-?#mXItenZY6gYiNlBTK1l?7OkpEdc1 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 GkN+2l3G_?= literal 0 HcmV?d00001 diff --git a/assets/clef_sign_flow.png b/assets/clef_sign_flow.png new file mode 100644 index 0000000000000000000000000000000000000000..906384cf22d51aeb6bfe32c0c7f1bef9e8e623fa GIT binary patch literal 100271 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 literal 0 HcmV?d00001 diff --git a/assets/qubes-client.py b/assets/qubes-client.py new file mode 100644 index 0000000000..93a74b899b --- /dev/null +++ b/assets/qubes-client.py @@ -0,0 +1,23 @@ +""" +This implements a dispatcher which listens to localhost:8550, and proxies +requests via qrexec to the service qubes.EthSign on a target domain +""" + +import http.server +import socketserver,subprocess + +PORT=8550 +TARGET_DOMAIN= 'debian-work' + +class Dispatcher(http.server.BaseHTTPRequestHandler): + def do_POST(self): + post_data = self.rfile.read(int(self.headers['Content-Length'])) + p = subprocess.Popen(['/usr/bin/qrexec-client-vm',TARGET_DOMAIN,'qubes.Clefsign'],stdin=subprocess.PIPE, stdout=subprocess.PIPE) + output = p.communicate(post_data)[0] + self.wfile.write(output) + + +with socketserver.TCPServer(("",PORT), Dispatcher) as httpd: + print("Serving at port", PORT) + httpd.serve_forever() + diff --git a/assets/qubes.Clefsign b/assets/qubes.Clefsign new file mode 100644 index 0000000000..9b5af7b4fe --- /dev/null +++ b/assets/qubes.Clefsign @@ -0,0 +1,16 @@ +#!/bin/bash + +SIGNER_BIN="/home/user/tools/clef/clef" +SIGNER_CMD="/home/user/tools/gtksigner/gtkui.py -s $SIGNER_BIN" + +# Start clef if not already started +if [ ! -S /home/user/.clef/clef.ipc ]; then + $SIGNER_CMD & + sleep 1 +fi + +# Should be started by now +if [ -S /home/user/.clef/clef.ipc ]; then + # Post incoming request to HTTP channel + curl -H "Content-Type: application/json" -X POST -d @- http://localhost:8550 2>/dev/null +fi diff --git a/assets/qubes_newaccount-1.png b/assets/qubes_newaccount-1.png new file mode 100644 index 0000000000000000000000000000000000000000..3bfc8b5b7e91330f1f773d9fef259906eab06c31 GIT binary patch literal 22348 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 IQcs@$AA2scU;qFB literal 0 HcmV?d00001 diff --git a/content/docs/monitoring/dashboards.md b/content/docs/monitoring/dashboards.md index 76671417a3..c3c1fff839 100644 --- a/content/docs/monitoring/dashboards.md +++ b/content/docs/monitoring/dashboards.md @@ -130,40 +130,40 @@ When Grafana is up and running, it should be reachable at `localhost:3000`. A br to access a visualization dashboard. The browser will prompt for login credentials (user: `admin` and password: `admin`). When prompted, the default password should be changed and saved. -![](assets/grafana1.png) +![](/assets/grafana1.png) The browser first redirects to the Grafana home page to set up the source data. Click on the configuration icon in the left bar and select "Data sources". -![](assets/grafana2.png) +![](/assets/grafana2.png) There aren't any data sources yet, click on "Add data source" to define one. -![](assets/grafana3.png) +![](/assets/grafana3.png) Select "InfluxDB" and proceed. -![](assets/grafana4.png) +![](/assets/grafana4.png) Data source configuration is pretty straight forward if you are running tools on the same machine. You need to set the InfluxDB address and details for accessing the database. Refer to the picture below. -![](assets/grafana5.png) +![](/assets/grafana5.png) If everything is complete and InfluxDB is reachable, click on "Save and test" and wait for the confirmation to pop up. -![](assets/grafana6.png) +![](/assets/grafana6.png) Grafana is now set up to read data from InfluxDB. Now you need to create a dashboard which will interpret and display it. Dashboards properties are encoded in JSON files which can be created by anybody and easily imported. On the left bar, click on "Create and Import". -![](assets/grafana7.png) +![](/assets/grafana7.png) For a Geth monitoring dashboard, copy the ID of [this dashboard](https://grafana.com/grafana/dashboards/13877/) and paste it in the "Import page" in Grafana. After saving the dashboard, it should look like this: -![](assets/grafana8.png) +![](/assets/grafana8.png) The dashboards can be customized further. Each panel can be edited, moved, removed or added. To learn more about how dashboards work, refer to [Grafana's documentation](https://grafana.com/docs/grafana/latest/dashboards/). diff --git a/content/docs/monitoring/ethstats.md b/content/docs/monitoring/ethstats.md index 65b47e6913..dc209244a8 100644 --- a/content/docs/monitoring/ethstats.md +++ b/content/docs/monitoring/ethstats.md @@ -32,7 +32,7 @@ Ethstats has three components: The summary dashboard for Ethereum Mainnet can be viewed at [ethstats.net](https://ethstats.net/). -![Ethstats](/ethstats-mainnet.png) +![Ethstats](assets/ethstats-mainnet.png) Note that the Ethstats dashboard is not a reliable source of information about the entire Ethereum network because submitting data to the Ethstats server is voluntary and has to be configured by diff --git a/content/docs/tools/Clef/CliqueSigning.md b/content/docs/tools/Clef/CliqueSigning.md index a227dbbcc8..b523badc46 100644 --- a/content/docs/tools/Clef/CliqueSigning.md +++ b/content/docs/tools/Clef/CliqueSigning.md @@ -1,5 +1,6 @@ --- -title:Clique signing +title: Clique signing +description: Instructions for setting up Clef to seal blocks on a Clique network --- Clique is a proof-of-authority system where new blocks can be created by authorized ‘signers’ only. The initial set of authorized signers is configured in the genesis block. Signers can be authorized and de-authorized using a voting mechanism, thus allowing the set of signers to change while the blockchain operates. Signing blocks in Clique networks classically uses the "unlock" feature of Geth so that each node is always ready to sign without requiring a user to manually provide authorization. @@ -12,12 +13,10 @@ Clef provides a way to safely circumvent `--unlock` while maintaining a enough a It is useful to have basic knowledge of private networks and Clef. These topics are covered on our [private networks](/content/docs/developers/geth-developer/private-network) and [Introduction to Clef](/content/docs/tools/Clef/introduction) pages. -{:toc} -- this will be removed by the toc ## Prepping a Clique network -First of all, set up a rudimentary testnet to have something to sign. Create a new keystore (password `testtesttest`) +First of all, set up a rudimentary testnet to have something to sign. Create a new keystore (password `testtesttest`): ```terminal $ geth account new --datadir ./ddir @@ -186,6 +185,7 @@ And indeed, after approving with `y`, the password is not required - the signed ```terminal INFO [06-16|11:36:46.714] Successfully sealed new block number=1 sealhash=9589ed..662d03 hash=bd20b9..af8b87 elapsed=4.214s ``` + This mode of operation offers quite a poor UX because each block to be sealed requires manual approval. That is fixed in the following section. ## Using rules to approve blocks @@ -334,11 +334,7 @@ DEBUG[06-16|14:20:33.584] Served account_signData reqid=5 durat ## Refinements -If an attacker find the Clef "external" interface (which would only happen if you start it with `http` enabled), they -- cannot make it sign arbitrary transactions, -- cannot sign arbitrary data message, - -However, they could still make it sign e.g. 1000 versions of a certain block height, making the chain very unstable. +If an attacker finds the Clef "external" interface (which would only happen if you start it with `--http` enabled), they cannot sign arbitrary data or transactions. However, they could still make it sign e.g. 1000 versions of a certain block height, making the chain very unstable. It is possible for rule execution to be stateful (i.e. storing data). In this case, one could, for example, store what block heights have been sealed and reject sealing a particular block height twice. In other words, these rules could be used to build a miniature version of an execution layer slashing-db. @@ -381,12 +377,13 @@ JS:> number 46 latest 45 INFO [06-16|22:26:44.313] Op approved DEBUG[06-16|22:26:45.317] Served account_signData reqid=4 duration=1.010612774s ``` -This might be a bit over-the-top, security-wise, and may cause problems if, for some reason, a clique-deadlock needs to be resolved by rolling back and continuing on a side-chain. It is mainly meant as a demonstration that rules can use Javascript and statefulness to construct very intricate signing logic. +This might be a bit over-the-top security-wise, and may cause problems if, for some reason, a clique-deadlock needs to be resolved by rolling back and continuing on a side-chain. It is mainly meant as a demonstration that rules can use Javascript and statefulness to construct very intricate signing logic. ## TLDR quick-version Creation and attestation is a one-off event: + ```sh ## Create the rules-file cat << END > rules.js diff --git a/content/docs/tools/Clef/Introduction.md b/content/docs/tools/Clef/Introduction.md index 2aeadde9ac..fd7cac89e2 100644 --- a/content/docs/tools/Clef/Introduction.md +++ b/content/docs/tools/Clef/Introduction.md @@ -1,24 +1,11 @@ --- title: Introduction to Clef -sort_key: A +description: Introduction to the external signing tool, Clef --- -{:toc} -- this will be removed by the toc - ## What is Clef? -Clef is a tool for **signing transactions and data** in a secure local environment. -t is intended to become a more composable and secure replacement for Geth's built-in -account management. Clef decouples key management from Geth itself, meaning it can be -used as an independent, standalone key management and signing application, or it -can be integrated into Geth. This provides a more flexible modular tool compared to -Geth's account manager. Clef can be used safely in situations where access to Ethereum is -via a remote and/or untrusted node because signing happens locally, either manually or -automatically using custom rulesets. The separation of Clef from the node itself enables it -to run as a daemon on the same machine as the client software, on a secure usb-stick like -[USB armory](https://inversepath.com/usbarmory), or even a separate VM in a -[QubesOS](https://www.qubes-os.org/) type setup. +Clef is a tool for **signing transactions and data** in a secure local environment. It is intended to become a more composable and secure replacement for Geth's built-in account management. Clef decouples key management from Geth itself, meaning it can be used as an independent, standalone key management and signing application, or it can be integrated into Geth. This provides a more flexible modular tool compared to Geth's account manager. Clef can be used safely in situations where access to Ethereum is via a remote and/or untrusted node because signing happens locally, either manually or automatically using custom rulesets. The separation of Clef from the node itself enables it to run as a daemon on the same machine as the client software, on a secure usb-stick like [USB armory](https://inversepath.com/usbarmory), or even a separate VM in a [QubesOS](https://www.qubes-os.org/) type setup. ## Installing and starting Clef @@ -30,9 +17,7 @@ However, Clef is not bound to Geth and can be built on its own using: `make clef` -Once built, Clef must be initialized. This includes storing some data, some of which is sensitive -(such as passwords, account data, signing rules etc). Initializing Clef takes that data and -encrypts it using a user-defined password. +Once built, Clef must be initialized. This includes storing some data, some of which is sensitive (such as passwords, account data, signing rules etc). Initializing Clef takes that data and encrypts it using a user-defined password. `clef init` @@ -71,66 +56,31 @@ You should treat 'masterseed.json' with utmost secrecy and make a backup of it! ## Security model -One of the major benefits of Clef is that it is decoupled from the client software, -meaning it can be used by users and dapps to sign data and transactions in a secure, -local environment and send the signed packet to an arbitrary Ethereum entry-point, which -might include, for example, an untrusted remote node. Alternatively, Clef can simply be -used as a standalone, composable signer that can be a backend component for decentralized -applications. This requires a secure architecture that separates cryptographic operations -from user interactions and internal/external communication. +One of the major benefits of Clef is that it is decoupled from the client software, meaning it can be used by users and dapps to sign data and transactions in a secure, local environment and send the signed packet to an arbitrary Ethereum entry-point, which might include, for example, an untrusted remote node. Alternatively, Clef can simply be used as a standalone, composable signer that can be a backend component for decentralized applications. This requires a secure architecture that separates cryptographic operations from user interactions and internal/external communication. The security model of Clef is as follows: -* A self-contained binary controls all cryptographic operations including encryption, - decryption and storage of keystore files, and signing data and transactions. +* A self-contained binary controls all cryptographic operations including encryption, decryption and storage of keystore files, and signing data and transactions. -* A well defined, deliberately minimal "external" API is used to communicate with the - Clef binary - Clef considers this external traffic to be UNTRUSTED. This means Clef - does not accept any credentials and does not recognize authority of requests received - over this channel. Clef listens on `http.addr:http.port` or `ipcpath` - the same as Geth - - and expects messages to be formatted using the [JSON-RPC 2.0 standard](https://www.jsonrpc.org/specification). - Some of the external API calls require some user interaction (manual approve/deny)- if it is - not received responses can be delayed indefinitely. +* A well defined, deliberately minimal "external" API is used to communicate with the Clef binary - Clef considers this external traffic to be UNTRUSTED. This means Clef does not accept any credentials and does not recognize authority of requests received over this channel. Clef listens on `http.addr:http.port` or `ipcpath` - the same as Geth - and expects messages to be formatted using the [JSON-RPC 2.0 standard](https://www.jsonrpc.org/specification). Some of the external API calls require some user interaction (manual approve/deny)- if it is not received responses can be delayed indefinitely. -* Clef communicates with the process that invoked the binary using stin/stout. The process - invoking the binary is usually the native console-based user interface (UI) but there is - also an API that enables communication with an external UI. This has to be enabled using `--stdio-ui` - at startup. This channel is considered TRUSTED and is used to pass approvals and passwords between - the user and Clef. +* Clef communicates with the process that invoked the binary using stin/stout. The process invoking the binary is usually the native console-based user interface (UI) but there is also an API that enables communication with an external UI. This has to be enabled using `--stdio-ui` at startup. This channel is considered TRUSTED and is used to pass approvals and passwords between the user and Clef. -* Clef does not store keys - the user is responsible for securely storing and backing up keyfiles. - Clef does store account passwords in its encrypted vault if they are explicitly provided to - Clef by the user to enable automatic account unlocking. +* Clef does not store keys - the user is responsible for securely storing and backing up keyfiles. Clef does store account passwords in its encrypted vault if they are explicitly provided to Clef by the user to enable automatic account unlocking. -The external API never handles any sensitive data directly, but it can be used to request Clef to -sign some data or a transaction. It is the internal API that controls signing and triggers requests for -manual approval (automatic approves actions that conform to attested rulesets) and passwords. +The external API never handles any sensitive data directly, but it can be used to request Clef to sign some data or a transaction. It is the internal API that controls signing and triggers requests for manual approval (automatic approves actions that conform to attested rulesets) and passwords. -The general flow for a basic transaction-signing operation using Clef and an Ethereum node such as -Geth is as follows: +The general flow for a basic transaction-signing operation using Clef and an Ethereum node such as Geth is as follows: -![Clef signing logic](/static/images/clef_sign_flow.png) +![Clef signing logic](/assets/clef_sign_flow.png) -In the case illustrated in the schematic above, Geth would be started with `--signer :` and -would relay requests to `eth.sendTransaction`. Text in `mono` font positioned along arrows shows the objects -passed between each component. - -Most users use Clef by manually approving transactions through the UI as in the schematic above, but it is also -possible to configure Clef to sign transactions without always prompting the user. This requires defining the -precise conditions under which a transaction will be signed. These conditions are known as `Rules` and they are -small Javascript snippets that are *attested* by the user by injecting the snippet's hash into Clef's secure -whitelist. Clef is then started with the rule file, so that requests that satisfy the conditions in the whitelisted -rule files are automatically signed. This is covered in detail on the [Rules page](/docs/_clef/Rules.md). +In the case illustrated in the schematic above, Geth would be started with `--signer :` and would relay requests to `eth.sendTransaction`. Text in `mono` font positioned along arrows shows the objects passed between each component. +Most users use Clef by manually approving transactions through the UI as in the schematic above, but it is also possible to configure Clef to sign transactions without always prompting the user. This requires defining the precise conditions under which a transaction will be signed. These conditions are known as `Rules` and they are small Javascript snippets that are *attested* by the user by injecting the snippet's hash into Clef's secure whitelist. Clef is then started with the rule file, so that requests that satisfy the conditions in the whitelisted rule files are automatically signed. This is covered in detail on the [Rules page](/content/docs/tools/Clef/rules). ## Basic usage -Clef is started on the command line using the `clef` command. Clef can be configured by providing flags and -commands to `clef` on startup. The full list of command line options is available [below](#command-line-options). -Frequently used options include `--keystore` and `--chainid` which configure the path to an existing keystore -and a network to connect to. These options default to `$HOME/.ethereum/keystore` and `1` (corresponding to -Ethereum Mainnet) respectively. The following code snippet starts Clef, providing a custom path to an existing -keystore and connecting to the Goerli testnet: +Clef is started on the command line using the `clef` command. Clef can be configured by providing flags and commands to `clef` on startup. The full list of command line options is available [below](#command-line-options). Frequently used options include `--keystore` and `--chainid` which configure the path to an existing keystore and a network to connect to. These options default to `$HOME/.ethereum/keystore` and `1` (corresponding to Ethereum Mainnet) respectively. The following code snippet starts Clef, providing a custom path to an existing keystore and connecting to the Goerli testnet: ```sh clef --keystore /my/keystore --chainid 5 @@ -155,12 +105,9 @@ Enter 'ok' to proceed: > ``` -Requests requiring account access or signing now require explicit consent in this terminal. -Activities such as sending transactions via a local Geth node's attached Javascript console or -RPC will now hang indefinitely, awaiting approval in this terminal. - -A much more detailed Clef tutorial is available on the [Tutorial page](/docs/clef/tutorial). +Requests requiring account access or signing now require explicit consent in this terminal. Activities such as sending transactions via a local Geth node's attached Javascript console or RPC will now hang indefinitely, awaiting approval in this terminal. +A much more detailed Clef tutorial is available on the [Tutorial page](/content/docs/tools/Clef/tutorial). ## Command line options @@ -200,9 +147,5 @@ GLOBAL OPTIONS: ## Summary -Clef is an external key management and signer tool that comes bundled with Geth but can either be used -as a backend account manager and signer for Geth or as a completely separate standalone application. Being -modular and composable it can be used as a component in decentralized applications or to sign data and -transactions in untrusted environments. Clef is intended to eventually replace Geth's built-in account -management tools. +Clef is an external key management and signer tool that comes bundled with Geth but can either be used as a backend account manager and signer for Geth or as a completely separate standalone application. Being modular and composable it can be used as a component in decentralized applications or to sign data and transactions in untrusted environments. Clef is intended to eventually replace Geth's built-in account management tools. \ No newline at end of file diff --git a/content/docs/tools/Clef/Rules.md b/content/docs/tools/Clef/Rules.md index b7a7416cce..95fc34cf5e 100644 --- a/content/docs/tools/Clef/Rules.md +++ b/content/docs/tools/Clef/Rules.md @@ -1,58 +1,35 @@ --- title: Rules -sort_key: C +description: Introduction to automated rulesets in Clef --- -This page provides a fairly low-level explanation for how rules are implemented in -Clef. It is a good idea to read the [Introduction to Clef](/docs/clef/introduction) -and the [Clef tutorial](/docs/clef/tutorial) before diving in to this page. +This page provides a fairly low-level explanation for how rules are implemented in Clef. It is a good idea to read the [Introduction to Clef](/content/docs/tools/Clef/introduction) and the [Clef tutorial](/content/docs/tools/Clef/tutorial) before diving in to this page. -{:toc} -- this will be removed by the toc - ## Introduction -Rules in Clef are sets of conditions that determine whether a given action can be -approved automatically without requiring manual intervention from the user. This can be -useful for automatically approving transactions between a user's own accounts, or -approving patterns that are commonly used by applications. Automatic signing also -requires Clef to have access to account passwords which is configured independently -of the ruleset. +Rules in Clef are sets of conditions that determine whether a given action can be approved automatically without requiring manual intervention from the user. This can be useful for automatically approving transactions between a user's own accounts, or approving patterns that are commonly used by applications. Automatic signing also requires Clef to have access to account passwords which is configured independently of the ruleset. Rules can define arbitrary conditions such as: -* Auto-approve 10 transactions with contract `CasinoDapp`, with value between `0.05 ether` and - `1 ether` per 24h period. +* Auto-approve 10 transactions with contract `CasinoDapp`, with value between `0.05 ether` and `1 ether` per 24h period. -* Auto-approve transactions to contract `Uniswapv2` with `value` up to 1 ether, if - `gas < 44k` and `gasPrice < 40Gwei`. +* Auto-approve transactions to contract `Uniswapv2` with `value` up to 1 ether, if `gas < 44k` and `gasPrice < 40Gwei`. * Auto-approve signing if the data to be signed contains the string `"approve_me"`. * Auto-approve any requests to list accounts in keystore if the request arrives over IPC -Because the rules are Javascript files they can be customized to implement any arbitrary logic on -the available request data. +Because the rules are Javascript files they can be customized to implement any arbitrary logic on the available request data. -This page will explain how rules are implemented in Clef and how best to manage credentials -when automatic rulesets are enabled. +This page will explain how rules are implemented in Clef and how best to manage credentials when automatic rulesets are enabled. ## Rule Implementation - -The ruleset engine acts as a gatekeeper to the command line interface - it auto-approves -any requests that meet the conditions defined in a set of authenticated rule files. This -prevents the user from having to manually approve or reject every request - instead they -can define common patterns in a rule file and abstract that task away to the ruleset engine. -The general architecture is as follows: +The ruleset engine acts as a gatekeeper to the command line interface - it auto-approves any requests that meet the conditions defined in a set of authenticated rule files. This prevents the user from having to manually approve or reject every request - instead they can define common patterns in a rule file and abstract that task away to the ruleset engine. The general architecture is as follows: ![Clef ruleset logic](/static/images/clef_ruleset.png) -When Clef receives a request, the ruleset engine evaluates a Javascript file for -each method defined in the internal [UI API docs](/docs/clef/apis). For example the code -snippet below is an example ruleset that calls the function `ApproveTx`. The call to `ApproveTx` -is invoking the `ui_approveTx` [JSON_RPC API endpoint](/docs/clef/apis/#ui-api). Every time an RPC -method is invoked the Javascript code is executed in a freshly instantiated virtual machine. +When Clef receives a request, the ruleset engine evaluates a Javascript file for each method defined in the internal [UI API docs](/content/docs/tools/Clef/apis). For example the code snippet below is an example ruleset that calls the function `ApproveTx`. The call to `ApproveTx` is invoking the `ui_approveTx` [JSON_RPC API endpoint](/content/docs/tools/Clef/apis/#ui-api). Every time an RPC method is invoked the Javascript code is executed in a freshly instantiated virtual machine. ```js function asBig(str) { @@ -102,43 +79,33 @@ handled in different ways: | Anything else | Pass decision to UI for manual approval | -There are some additional noteworthy implementation details that are important -for defining rules correctly in `ruleset.js`: +There are some additional noteworthy implementation details that are important for defining rules correctly in `ruleset.js`: * The code in `ruleset.js` **cannot** load external Javascript files. * The Javascript engine can access `storage` and `console` -* The only preloaded library in the Javascript environment is - `bignumber.js` version `2.0.3`. +* The only preloaded library in the Javascript environment is `bignumber.js` version `2.0.3`. -* Each invocation is made in a fresh virtual machine meaning data cannot be - stored in global variables between invocations. +* Each invocation is made in a fresh virtual machine meaning data cannot be stored in global variables between invocations. -* Since no global variable storage is available, disk backed `storage` must be - used - rules should not rely on ephemeral data. +* Since no global variable storage is available, disk backed `storage` must be used - rules should not rely on ephemeral data. -* Javascript API parameters are always objects. This ensures parameters are - accessed by _key_ to avoid misordering errors. +* Javascript API parameters are always objects. This ensures parameters are accessed by _key_ to avoid misordering errors. * Otto VM uses ES5. ES6-specific features (such as Typed Arrays) are not supported. -* The regular expression engine (re2/regexp) in Otto VM is not fully compatible - with the [ECMA5 specification](https://tc39.es/ecma262/#sec-intro). +* The regular expression engine (re2/regexp) in Otto VM is not fully compatible with the [ECMA5 specification](https://tc39.es/ecma262/#sec-intro). -* [Strict mode](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Strict_mode) - is not supported. "Use strict" will parse but it does nothing. +* [Strict mode](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Strict_mode) is not supported. "Use strict" will parse but it does nothing. ## Credential management -The ability to auto-approve transaction requires that the signer has -the necessary credentials, i.e. account passwords, to decrypt keyfiles. +The ability to auto-approve transaction requires that the signer has the necessary credentials, i.e. account passwords, to decrypt keyfiles. These are stored encrypted as follows: -When the `signer` is started it generates a seed that is locked with a -user specified password. The seed is saved to a location that defaults to -`$HOME/.clef/masterseed.json`. The `seed` itself is a blob of bytes. +When the `signer` is started it generates a seed that is locked with a user specified password. The seed is saved to a location that defaults to `$HOME/.clef/masterseed.json`. The `seed` itself is a blob of bytes. The `signer` uses the `seed` to: @@ -147,56 +114,28 @@ The `signer` uses the `seed` to: * `$HOME/.clef/790046d38025/credentials.json` * Generate the encryption password for the config and credentials files. -`config.json` stores the hashes of any attested rulesets. `credentials.json` -stores encrypted account passwords. The masterseed is required to decrypt -these files. The decrypted account passwords can then be used to decrypt keyfiles. +`config.json` stores the hashes of any attested rulesets. `credentials.json` stores encrypted account passwords. The masterseed is required to decrypt these files. The decrypted account passwords can then be used to decrypt keyfiles. ## Security ### The Javascript VM -The downside of the very flexible rule implementation included in Clef is -that the `signer` binary needs to contain a Javascript engine. This is an -additional attack surface. The only viable attack is for an adversary to -somehow extract cryptographic keys from memory during the Javascript VM execution. -The hash-based rule attestation condition means the actual Javascript code -executed by the Javascript engine is not a viable attack surface -- since if the attacker can control the ruleset, a much simpler -attack would be to surreptitiously insert an attested "always-approve" rule -instead of attempting to exploit the Javascript virtual machine. The Javascript -engine is quite simple to implement and there are currently no known security -vulnerabilities, not have there been any security problems identified for the +The downside of the very flexible rule implementation included in Clef is that the `signer` binary needs to contain a Javascript engine. This is an additional attack surface. The only viable attack is for an adversary to somehow extract cryptographic keys from memory during the Javascript VM execution. The hash-based rule attestation condition means the actual Javascript code executed by the Javascript engine is not a viable attack surface -- since if the attacker can control the ruleset, a much simpler attack would be to surreptitiously insert an attested "always-approve" rule instead of attempting to exploit the Javascript virtual machine. The Javascript engine is quite simple to implement and there are currently no known security vulnerabilities, not have there been any security problems identified for the similar Javascript VM implemented in Geth. ### Writing rules -Since the user has complete freedom to write custom rules, it is plausible that those rules -could create unintended security vulnerabilities. This can only really be protected by -coding very carefully and trying to test rulesets (e.g. on a private testnet) before +Since the user has complete freedom to write custom rules, it is plausible that those rules could create unintended security vulnerabilities. This can only really be protected by coding very carefully and trying to test rulesets (e.g. on a private testnet) before implementing them on a public network. -Javascript is very flexible but also easy to write incorrectly. For example, users -might assume that javascript can handle large integers natively rather than explicitly -using `bigInt`. This is an error commonly encountered in the Ethereum context when -users attempt to multiply `gas` by `gasCost`. - -It’s unclear whether any other language would be more secure - there is alwas the possibility -of implementing an insecure rule. - -### File security +Javascript is very flexible but also easy to write incorrectly. For example, users might assume that javascript can handle large integers natively rather than explicitly using `bigInt`. This is an error commonly encountered in the Ethereum context when users attempt to multiply `gas` by `gasCost`. +It’s unclear whether any other language would be more secure - there is alwas the possibility of implementing an insecure rule. ### Credential security -Clef implements a secure, encrypted vault for storing sensitive data. This vault is -encrypted using a `masterseed` which the user is responsible for storing and backing -up safely and securely. Since this `masterseed` is used to decrypt the secure vault, -and its security is not handled by Clef, it could represent a security vulnerability -if the user does not implement best practise in keeping it safe. +Clef implements a secure, encrypted vault for storing sensitive data. This vault is encrypted using a `masterseed` which the user is responsible for storing and backing up safely and securely. Since this `masterseed` is used to decrypt the secure vault, and its security is not handled by Clef, it could represent a security vulnerability if the user does not implement best practise in keeping it safe. -The same is also true for keys. Keys are not stored by Clef, they are only accessed -using account passwords that Clef does store in its vault. The keys themselves are stored -in an external `keystore` whose security is the responsibility of the user. If the -keys are compromised, the account is not safe irrespective of the security benefits -derived from Clef. +The same is also true for keys. Keys are not stored by Clef, they are only accessed using account passwords that Clef does store in its vault. The keys themselves are stored in an external `keystore` whose security is the responsibility of the user. If the keys are compromised, the account is not safe irrespective of the security benefits derived from Clef. ## Ruleset examples @@ -316,9 +255,4 @@ function OnApprovedTx(resp) { ## Summary -Rules are sets of conditions encoded in Javascript files that enable certain actions to -be auto-approved by Clef. This page outlined the implementation details and security -considerations that will help to build suitrable ruleset files. See the -[Clef Github](https://github.com/ethereum/go-ethereum/tree/master/cmd/clef) for further reading. - - +Rules are sets of conditions encoded in Javascript files that enable certain actions to be auto-approved by Clef. This page outlined the implementation details and security considerations that will help to build suitrable ruleset files. See the [Clef Github](https://github.com/ethereum/go-ethereum/tree/master/cmd/clef) for further reading. diff --git a/content/docs/tools/Clef/datatypes.md b/content/docs/tools/Clef/datatypes.md index fc1499c00f..a3772eac0b 100644 --- a/content/docs/tools/Clef/datatypes.md +++ b/content/docs/tools/Clef/datatypes.md @@ -1,6 +1,6 @@ --- title: Communication data types -sort_key: F +description: The data types used by the Clef APIs --- ## UI Client interface