Skip to content

Commit 04a035b

Browse files
authored
Merge pull request #555 from Bosch-0/external_signer
Added ⚡️ content to `Private Key Management` > `External Signing Devices`
2 parents 0b7603b + 27da58d commit 04a035b

14 files changed

+129
-109
lines changed

_compress_images_cache.yml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1475,4 +1475,9 @@ assets/images/guide/glossary/address/address-mobile.jpg: address-mobile.jpg
14751475
assets/images/guide/glossary/address/address-mobile@2x.jpg: address-mobile@2x.jpg
14761476
assets/images/guide/glossary/address/address-preview.jpg: address-preview.jpg
14771477
assets/images/guide/glossary/address/address.jpg: address.jpg
1478-
assets/images/guide/glossary/address/address@2x.jpg: address@2x.jpg
1478+
assets/images/guide/glossary/address/address@2x.jpg: address@2x.jpg
1479+
assets/images/guide/private-key-management/external-signers/external-signing-device-mobile.png: external-signing-device-mobile.png
1480+
assets/images/guide/private-key-management/external-signers/external-signing-device-mobile@2x.png: external-signing-device-mobile@2x.png
1481+
assets/images/guide/private-key-management/external-signers/external-signing-device-preview.png: external-signing-device-preview.png
1482+
assets/images/guide/private-key-management/external-signers/external-signing-device.png: external-signing-device.png
1483+
assets/images/guide/private-key-management/external-signers/external-signing-device@2x.png: external-signing-device@2x.png

assets/images/guide/private-key-management/external-signing-device/external-signing-device-mobile.png renamed to assets/images/guide/private-key-management/external-signers/external-signing-device-mobile.png

File renamed without changes.

assets/images/guide/private-key-management/external-signing-device/external-signing-device-mobile@2x.png renamed to assets/images/guide/private-key-management/external-signers/external-signing-device-mobile@2x.png

File renamed without changes.

assets/images/guide/private-key-management/external-signing-device/external-signing-device-preview.png renamed to assets/images/guide/private-key-management/external-signers/external-signing-device-preview.png

File renamed without changes.

assets/images/guide/private-key-management/external-signing-device/external-signing-device.png renamed to assets/images/guide/private-key-management/external-signers/external-signing-device.png

File renamed without changes.

assets/images/guide/private-key-management/external-signing-device/external-signing-device@2x.png renamed to assets/images/guide/private-key-management/external-signers/external-signing-device@2x.png

File renamed without changes.

guide/case-studies/savings-account.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,7 @@ The following [prototype](https://www.figma.com/proto/hwispqET5MzsKUpn3i9iqD/Sav
188188

189189
### Private key management
190190

191-
A 2-of-3 [multi-key setup]({{ '/guide/private-key-management/multi-key/' | relative_url }}) would seem the most appropriate here, although it will be a significant hurdle in [onboarding]({{ '/guide/onboarding/introduction/' | relative_url }}). Other schemes could be considered but come with distinct downsides for amounts of value we can expect users to store in this use case. A single-key scheme with an [automatic cloud backup]({{ '/guide/private-key-management/multi-key/' | relative_url }}), [recovery phrase]({{ '/guide/private-key-management/manual-backup/' | relative_url }}) or single [signing device]({{ '/guide/private-key-management/external-signing-device/' | relative_url }}) could work at the lower end of the value scale, but start to look like less responsible recommendations with higher values due to their single points of failure.
191+
A 2-of-3 [multi-key setup]({{ '/guide/private-key-management/multi-key/' | relative_url }}) would seem the most appropriate here, although it will be a significant hurdle in [onboarding]({{ '/guide/onboarding/introduction/' | relative_url }}). Other schemes could be considered but come with distinct downsides for amounts of value we can expect users to store in this use case. A single-key scheme with an [automatic cloud backup]({{ '/guide/private-key-management/multi-key/' | relative_url }}), [recovery phrase]({{ '/guide/private-key-management/manual-backup/' | relative_url }}) or single [signing device]({{ '/guide/private-key-management/external-signers/' | relative_url }}) could work at the lower end of the value scale, but start to look like less responsible recommendations with higher values due to their single points of failure.
192192

193193
An important question is the combination of key-storage devices and their distribution. We have many options here, and it might come down to the experience of the target audience and their expected access to the necessary hardware;
194194

guide/case-studies/upgradeable-wallet.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ Although it is generally easier to build a great experience with a specific [use
4444
The solution in this case could be a wallet that enables the user to upgrade the scheme as their experience and funds grow. The idea is to provide progressive security that doesn't introduce unnecessary friction until it is required. Our wallet will be able to switch from;
4545

4646
- [Automatic cloud backup]({{ '/guide/private-key-management/cloud-backup/' | relative_url }}) - as default for new users, who often start out with small amounts
47-
- [External signing device]({{ '/guide/private-key-management/external-signing-device/' | relative_url }}) - for more experienced users, and when funds have grown
47+
- [External signing device]({{ '/guide/private-key-management/external-signers/' | relative_url }}) - for more experienced users, and when funds have grown
4848
- 2-of-3 [multi-key]({{ '/guide/private-key-management/multi-key/' | relative_url }}) - for seasoned users, and critical amounts
4949
- 3-of-5 multi-key - for really serious situations and/or very high amounts
5050

Lines changed: 113 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,113 @@
1+
---
2+
layout: guide
3+
title: External signers
4+
description: What External signers are and their role in securing bitcoin.
5+
nav_order: 4
6+
parent: Private key management
7+
permalink: /guide/private-key-management/external-signers/
8+
image: https://bitcoin.design/assets/images/guide/private-key-management/external-signers/external-signing-device-preview.png
9+
redirect_from:
10+
- /guide/private-key-management/external-signing-device/
11+
main_classes: -no-top-padding
12+
---
13+
14+
<!--
15+
16+
Editor's notes
17+
18+
Description of what an external signers are and what the scheme consists of.
19+
20+
Illustration sources
21+
22+
https://www.figma.com/community/file/888680264445459448
23+
https://www.figma.com/community/file/995256542920917246/BDG---Private-key-management-illustrations
24+
https://www.figma.com/file/qr4P17z6WSPADm6oW0cKw2/?node-id=261%3A1837
25+
26+
-->
27+
28+
{% include picture.html
29+
image = "/assets/images/guide/private-key-management/external-signers/external-signing-device.png"
30+
retina = "/assets/images/guide/private-key-management/external-signers/external-signing-device@2x.png"
31+
mobile = "/assets/images/guide/private-key-management/external-signers/external-signing-device-mobile.png"
32+
mobileRetina = "/assets/images/guide/private-key-management/external-signers/external-signing-device-mobile@2x.png"
33+
alt-text = "Examples of popular external signers."
34+
width = 1600
35+
height = 700
36+
layout = "full-width"
37+
%}
38+
39+
# External signers
40+
41+
External signers use, store, and manage private keys and other sensitive info, such as the user's recovery phrase, externally from the user's wallet application. The most common external signers used today are hardware wallets. Software-only external signing applications also exist, but are less secure than their hardware counterparts.
42+
43+
A wallet application supporting external signers removes the need for storing private keys locally by the wallet application. This decreases the theft risk as the keys can be isolated from the internet and/or a potentially malicious device.
44+
45+
### How it works
46+
47+
<div class="center" markdown="1">
48+
49+
The external signer generates and stores private keys externally, and preferably offline, from the users primary wallet application.
50+
51+
To sign a transaction, the primary wallet application submits a unsigned transaction or a partially signed bitcoin transaction ([PSBT](https://github.com/bitcoin/bips/blob/master/bip-0174.mediawiki)) to the external signer.
52+
53+
The external signer then signs the transaction or PSBT and sends it back to the primary wallet application. The users primary wallet application now broadcasts this now signed transaction to the Bitcoin network for processing. This process can also happen fully air-gapped using QR codes or memory cards instead of cables or wireless connections, to keep the device offline at all times.
54+
55+
PSBT's can be passed between the primary wallet application and external signer in many ways such as email, messenger, QR, SD card etc. With PSBTs external signers can be completely air-gapped meaning they never have to be plugged into another device or connect to any network to sign. Signers that do not support PSBTs need to communicate transaction data over USB which is less secure as the device has to be plugged into another, potentially malicious, device to sign.
56+
57+
</div>
58+
59+
### Lightning signers
60+
61+
Lightning signers are an experimental type of external signers interacting with the Lightning network. Like regular external signers, Lightning signers isolate private keys from the user's primary wallet application. However, these signers need to remain online and connected 24/7 to the user's primary wallet application to update payment channel states. These, in effect, have some of the security benefits of regular external signers by isolating private keys from the internet and/or potential malicious device. Learn more [here](https://gitlab.com/lightning-signer/docs/-/blob/master/README.md).
62+
63+
{% include fact/pros.html %}
64+
65+
- Isolates private key from online and/or potentially malicious devices
66+
- Provides high security if used correctly
67+
68+
{% include fact/close.html %}
69+
70+
{% include fact/cons.html %}
71+
72+
- Purchase of specialized hardware or second device required
73+
- Requires further effort and knowledge to setup correctly
74+
- Still requires a good manual backup for redundancy
75+
76+
{% include fact/close.html %}
77+
78+
### Best practice
79+
80+
#### When to use
81+
- When storing medium to large amounts
82+
- When risk of loss from theft is higher than loss from negligence
83+
- When target audience is likely to be very knowledgeable or motivated to learn good manual backup schemes
84+
85+
#### When not to use
86+
- When most users are new to Bitcoin and unlikely to implement good backup schemes
87+
- When transactions are likely to be frequent and low value
88+
89+
#### Variations
90+
- Interfaces (bluetooth, USB, microSD card, camera, NFC)
91+
- Platform compatibility
92+
- Additional user authentication (pin or password)
93+
94+
#### Products that use this scheme
95+
- [Nunchuk]({{ 'https://nunchuk.io/'}})
96+
- [Specter]({{ 'https://specter.solutions/'}})
97+
- [Bluewallet]({{ 'https://bluewallet.io'}})
98+
99+
#### Hardware external signers
100+
- [Trezor]({{ 'https://trezor.io'}})
101+
- [Ledger]({{ 'https://www.ledger.com'}})
102+
- [Coldcard]({{ 'https://coldcardwallet.com'}})
103+
104+
---
105+
106+
Next, let's look at [multi-key]({{ '/guide/private-key-management/multi-key/' | relative_url }}).
107+
108+
{% include next-previous.html
109+
previousUrl = "/guide/private-key-management/manual-backup/"
110+
previousName = "Manual backups"
111+
nextUrl = "/guide/private-key-management/multi-key/"
112+
nextName = "Multi-key"
113+
%}

guide/private-key-management/external-signing-device.md

Lines changed: 0 additions & 98 deletions
This file was deleted.

0 commit comments

Comments
 (0)