Skip to content

Commit 922ce7a

Browse files
committed
Begin integrating Entropy Analysis, Licensing into GUI
1 parent 9d0f222 commit 922ce7a

File tree

9 files changed

+194
-44
lines changed

9 files changed

+194
-44
lines changed

App.org

Lines changed: 26 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -22,15 +22,15 @@ nil
2222
#+RESULTS:
2323

2424
#+BEGIN_ABSTRACT
25-
Creating personal Ethereum, Bitcoin and other Cryptocurrency accounts is /urgently/ needed, but is
25+
Creating personal Ethereum, Bitcoin and other cryptocurrency accounts is /urgently/ needed, but is
2626
complex and fraught with potential for loss of funds.
2727

2828
All Crypto wallets start with a "Seed": a large, random number used to derive all of your actual
2929
Bitcoin, Ethereum, etc. wallets.
3030

3131
The best practice for using these wallets is to load this "Seed" into a secure hardware device, like
3232
a [[https://shop.trezor.io/product/trezor-model-t?offer_id=15&aff_id=10388][Trezor "Model T"]] hardware wallet. SLIP-39 Mnemonic cards contain the recovery words, which are
33-
typed directly into the Trezor device to recover the Seed, and all of its Cryptocurrency accounts.
33+
typed directly into the Trezor device to recover the Seed, and all of its cryptocurrency accounts.
3434
For the [[https://shop.ledger.com/pages/ledger-nano-x?r=2cd1cb6ae51f][Ledger Nano]] and other hardware wallets supporting only BIP-39 Mnemonics, you can now use the
3535
SLIP-39 App to securely and reliably back up these BIP-39 phrases.
3636

@@ -40,7 +40,7 @@ for the Seed to partners, family and friends. Also, encrypted "Paper Wallets" c
4040
support software cryptocurrency wallets such as Metamask, Brave or various mobile-phone and
4141
computer-based wallets.
4242

43-
Later, if you (or your heirs!) need to recover *all* of your Cryptocurrency accounts, they can
43+
Later, if you (or your heirs!) need to recover *all* of your cryptocurrency accounts, they can
4444
collect a sufficient threshold of the cards and regain access to all of the cryptocurrency accounts
4545
related to the Seed.
4646
#+END_ABSTRACT
@@ -99,7 +99,7 @@ related to the Seed.
9999
stored in wallet addresses that can never be accessed because the corresponding "Private Key"
100100
has been lost, or the passphrase forgotten.
101101

102-
The statistical chances of anyone successfully passing a Cryptocurrency wallet Private Key +
102+
The statistical chances of anyone successfully passing a cryptocurrency wallet Private Key +
103103
passphrase or Seed to their heirs over a 50-year period is therefore very low. Since memory fades
104104
and "safe" storage places are lost, destroyed or forgotten, this risk actually increases
105105
exponentially over time.
@@ -146,7 +146,7 @@ related to the Seed.
146146
and can transfer the funds into their own wallet.
147147

148148
If the Paper Wallet is ever lost, you can recover the Private Key (it was derived from your
149-
Seed!), and transfer the Cryptocurrency back into one of your own wallets.
149+
Seed!), and transfer the cryptocurrency back into one of your own wallets.
150150

151151
* Recommended Vendors
152152

@@ -157,7 +157,7 @@ related to the Seed.
157157

158158
The [[https://shop.trezor.io/product/trezor-model-t?offer_id=15&aff_id=10388][Trezor "Model T"]] hardware wallet has built-in SLIP-39 generation and recovery capability.
159159
Enter the words on the SLIP-39 cards directly into the screen of the Trezor to recover your
160-
Cryptocurrency accounts.
160+
cryptocurrency accounts.
161161

162162
#+BEGIN_EXPORT html
163163
<a href="https://shop.trezor.io/product/trezor-model-t?offer_id=15&aff_id=10388&file_id=534" target="_blank"><img src="https://media.go2speed.org/brand/files/trezor/15/20210707060206-T1TT_banner_728x90_3.png" width="728" height="90" border="0" /></a><img src="http://trezor.go2cloud.org/aff_i?offer_id=15&file_id=534&aff_id=10388" width="0" height="0" style="position:absolute;visibility:hidden;" border="0" />
@@ -170,7 +170,7 @@ related to the Seed.
170170

171171
We recommend the Trezor "Model T" for this reason. No other hardware wallet yet supports direct,
172172
on-screen SLIP-39 Seed recovery. This feature is, simply, so fundamentally important for
173-
Cryptocurrency Seed security and reliability that we consider it a necessity.
173+
cryptocurrency Seed security and reliability that we consider it a necessity.
174174

175175
If you already have one of the less expensive Trezor wallets that only support BIP-39 backup, we
176176
also support those, using the same BIP-39 Seed Entropy backup via SLIP-39 as for the Ledger, and
@@ -182,12 +182,6 @@ related to the Seed.
182182
Mnemonics. However, you can now use the SLIP-39 App to backup your BIP-39 Seed Entropy!
183183
Therefore, we now support the Ledger hardware wallets.
184184

185-
If you already have a BIP-39 Mnemonic, and would like back it up using SLIP-39 for more security
186-
and recovery reliability, you can use the Pro Controls to do so. Later, when you need to recover
187-
your BIP-39 Mnemonic, use the SLIP-39 App, select the Pro Controls, enter the SLIP-39 card
188-
Mnemonics, and click "Using BIP-39" to reveal your original BIP-39 Mnemonic phrase. Then,
189-
proceed with Ledger wallet recovery as normal, using the BIP-39 Mnemonic.
190-
191185
The [[https://shop.ledger.com/pages/ledger-nano-s-plus?r=2cd1cb6ae51f][Ledger Nano S Plus]] has a large screen, at a reasonable price point, and connects via USB-C.
192186

193187
#+BEGIN_EXPORT html
@@ -201,9 +195,27 @@ related to the Seed.
201195
<a href="https://shop.ledger.com/pages/ledger-nano-x?r=2cd1cb6ae51f"><img width=728 height=90 src="http://affiliate.ledger.com/image/728/90"></a>
202196
#+END_EXPORT
203197

198+
*** Recovering your BIP-39 Seed Phrase
199+
200+
If you already have a BIP-39 Mnemonic, and would like back it up using SLIP-39 for more security
201+
and recovery reliability, you can use the SLIP-39 App's Backup Controls to do so. After you
202+
create your Seed Data (or enter an existing BIP-39 Seed Phrase), select "Using BIP-39". This
203+
will generate a set of SLIP-39 Mnemonic Cards that *backs up your existing BIP-39 Seed Phrase*.
204+
205+
Later, when you need to recover your BIP-39 Mnemonic (say, to initialize a fresh replacement
206+
Ledger hardware wallet), use the SLIP-39 App, select the Recover Controls, and enter sufficient
207+
SLIP-39 card Mnemonics -- and click "Using BIP-39" to reveal your original BIP-39 Seed Phrase.
208+
Then, proceed with Ledger wallet recovery as normal, using the BIP-39 Mnemonic.
209+
210+
This may not /seem/ like an impressive feat. But, it is unexpectedly important and powerful!
211+
Your existing BIP-39 Seed Phrase is *extrememely* risky; it can /easily/ be lost or stolen. By
212+
using SLIP-39 to Backup your BIP-39 Seed Phrase, you can distribute the safe and reliable
213+
SLIP-39 Mnemonic cards to friends and family, and reduce the risks of theft or loss of your
214+
critical cryptocurrency accounts Seed data.
215+
204216
** Netcoins.app
205217

206-
In Canada, one of the more highly regulatory-compliant Cryptocurrency exchanges is [[https://netcoins.app/r?ac=5YO1MZ][Netcoins.app
218+
In Canada, one of the more highly regulatory-compliant cryptocurrency exchanges is [[https://netcoins.app/r?ac=5YO1MZ][Netcoins.app
207219
(referral code: 5YO1MZ)]]; sign up with this referral link, and we both get some benefits.
208220

209221
They have higher than typical Interac e-transfer limits, which is very nice. However, they don't

App.pdf

1.75 KB
Binary file not shown.

App.txt

Lines changed: 34 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
2022-02-02 22:22:00
99

1010

11-
Creating personal Ethereum, Bitcoin and other Cryptocurrency accounts is
11+
Creating personal Ethereum, Bitcoin and other cryptocurrency accounts is
1212
/urgently/ needed, but is complex and fraught with potential for loss of
1313
funds.
1414

@@ -19,7 +19,7 @@ The best practice for using these wallets is to load this "Seed" into a
1919
secure hardware device, like a [Trezor "Model T"] hardware wallet.
2020
SLIP-39 Mnemonic cards contain the recovery words, which are typed
2121
directly into the Trezor device to recover the Seed, and all of its
22-
Cryptocurrency accounts. For the [Ledger Nano] and other hardware
22+
cryptocurrency accounts. For the [Ledger Nano] and other hardware
2323
wallets supporting only BIP-39 Mnemonics, you can now use the SLIP-39
2424
App to securely and reliably back up these BIP-39 phrases.
2525

@@ -31,7 +31,7 @@ output, to support software cryptocurrency wallets such as Metamask,
3131
Brave or various mobile-phone and computer-based wallets.
3232

3333
Later, if you (or your heirs!) need to recover *all* of your
34-
Cryptocurrency accounts, they can collect a sufficient threshold of the
34+
cryptocurrency accounts, they can collect a sufficient threshold of the
3535
cards and regain access to all of the cryptocurrency accounts related to
3636
the Seed.
3737

@@ -48,6 +48,7 @@ Table of Contents
4848
2. Recommended Vendors
4949
.. 1. Trezor
5050
.. 2. Ledger
51+
..... 1. Recovering your BIP-39 Seed Phrase
5152
.. 3. Netcoins.app
5253
.. 4. Crypto.com
5354
.. 5. Protecting your SLIP-39 Cards
@@ -132,7 +133,7 @@ Windows)] <https://github.com/pjkundert/python-slip39/releases/latest>
132133
passphrase forgotten.
133134

134135
The statistical chances of anyone successfully passing a
135-
Cryptocurrency wallet Private Key + passphrase or Seed to their heirs
136+
cryptocurrency wallet Private Key + passphrase or Seed to their heirs
136137
over a 50-year period is therefore very low. Since memory fades and
137138
"safe" storage places are lost, destroyed or forgotten, this risk
138139
actually increases exponentially over time.
@@ -190,7 +191,7 @@ Windows)] <https://github.com/pjkundert/python-slip39/releases/latest>
190191
own wallet.
191192

192193
If the Paper Wallet is ever lost, you can recover the Private Key (it
193-
was derived from your Seed!), and transfer the Cryptocurrency back
194+
was derived from your Seed!), and transfer the cryptocurrency back
194195
into one of your own wallets.
195196

196197

@@ -206,12 +207,12 @@ Windows)] <https://github.com/pjkundert/python-slip39/releases/latest>
206207

207208
The [Trezor "Model T"] hardware wallet has built-in SLIP-39 generation
208209
and recovery capability. Enter the words on the SLIP-39 cards
209-
directly into the screen of the Trezor to recover your Cryptocurrency
210+
directly into the screen of the Trezor to recover your cryptocurrency
210211
accounts.
211212

212213
We recommend the Trezor "Model T" for this reason. No other hardware
213214
wallet yet supports direct, on-screen SLIP-39 Seed recovery. This
214-
feature is, simply, so fundamentally important for Cryptocurrency Seed
215+
feature is, simply, so fundamentally important for cryptocurrency Seed
215216
security and reliability that we consider it a necessity.
216217

217218
If you already have one of the less expensive Trezor wallets that only
@@ -232,14 +233,6 @@ Windows)] <https://github.com/pjkundert/python-slip39/releases/latest>
232233
SLIP-39 App to backup your BIP-39 Seed Entropy! Therefore, we now
233234
support the Ledger hardware wallets.
234235

235-
If you already have a BIP-39 Mnemonic, and would like back it up using
236-
SLIP-39 for more security and recovery reliability, you can use the
237-
Pro Controls to do so. Later, when you need to recover your BIP-39
238-
Mnemonic, use the SLIP-39 App, select the Pro Controls, enter the
239-
SLIP-39 card Mnemonics, and click "Using BIP-39" to reveal your
240-
original BIP-39 Mnemonic phrase. Then, proceed with Ledger wallet
241-
recovery as normal, using the BIP-39 Mnemonic.
242-
243236
The [Ledger Nano S Plus] has a large screen, at a reasonable price
244237
point, and connects via USB-C.
245238

@@ -254,11 +247,36 @@ Windows)] <https://github.com/pjkundert/python-slip39/releases/latest>
254247
[Ledger Nano X]
255248
<https://shop.ledger.com/pages/ledger-nano-x?r=2cd1cb6ae51f>
256249

250+
2.2.1 Recovering your BIP-39 Seed Phrase
251+
╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌
252+
253+
If you already have a BIP-39 Mnemonic, and would like back it up using
254+
SLIP-39 for more security and recovery reliability, you can use the
255+
SLIP-39 App's Backup Controls to do so. After you create your Seed
256+
Data (or enter an existing BIP-39 Seed Phrase), select "Using BIP-39".
257+
This will generate a set of SLIP-39 Mnemonic Cards that *backs up your
258+
existing BIP-39 Seed Phrase*.
259+
260+
Later, when you need to recover your BIP-39 Mnemonic (say, to
261+
initialize a fresh replacement Ledger hardware wallet), use the
262+
SLIP-39 App, select the Recover Controls, and enter sufficient SLIP-39
263+
card Mnemonics – and click "Using BIP-39" to reveal your original
264+
BIP-39 Seed Phrase. Then, proceed with Ledger wallet recovery as
265+
normal, using the BIP-39 Mnemonic.
266+
267+
This may not /seem/ like an impressive feat. But, it is unexpectedly
268+
important and powerful! Your existing BIP-39 Seed Phrase is
269+
*extrememely* risky; it can /easily/ be lost or stolen. By using
270+
SLIP-39 to Backup your BIP-39 Seed Phrase, you can distribute the safe
271+
and reliable SLIP-39 Mnemonic cards to friends and family, and reduce
272+
the risks of theft or loss of your critical cryptocurrency accounts
273+
Seed data.
274+
257275

258276
2.3 Netcoins.app
259277
────────────────
260278

261-
In Canada, one of the more highly regulatory-compliant Cryptocurrency
279+
In Canada, one of the more highly regulatory-compliant cryptocurrency
262280
exchanges is [Netcoins.app (referral code: 5YO1MZ)]; sign up with this
263281
referral link, and we both get some benefits.
264282

README.org

Lines changed: 69 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -953,7 +953,7 @@ recover your accounts to your Ledger (or other) hardware wallet.
953953
| strength | Or, the number of bits of Entropy to produce (Default: 128) |
954954
| language | Default is "english" |
955955
#+LATEX: }
956-
956+
957957
* Conversion from BIP-39 to SLIP-39
958958

959959
If we already have a BIP-39 wallet, it would certainly be nice to be able to create nice, safe
@@ -1547,6 +1547,74 @@ recover your accounts to your Ledger (or other) hardware wallet.
15471547
The MMC (Microsoft Management Console) is used to store your code-signing certificates.
15481548
See [[https://stackoverflow.com/questions/19879812/signing-exe-with-cer-file-what-is-my-certificates-name-that-signtool-exe-is][stackoverflow.com]] for how to enable its Certificate management.
15491549

1550+
* Licensing
1551+
1552+
Each installation of the SLIP-39 App requires an Ed25519 "Agent" identity, and cryptographically
1553+
signed license(s) to activate various python-slip39 features. No license is required to use basic
1554+
features; advanced features require a license.
1555+
1556+
** Create an Ed25519 "Agent" Key
1557+
1558+
The Ed25519 signing "Agent" identity is loaded at start-up, and (if necessary) is created
1559+
automatically on first execution. This is similar to the =ssh-keygen -t ed25519= procedure.
1560+
1561+
Each separate installation must have a ~/.crypto-licensing/python-slip39.crypto-keypair. This
1562+
contains the licensing "Agent" credentials: a passphrase-encrypted Ed25519 private key, and a
1563+
self-signed public key. This shows that we actually had access to the private key and used it to
1564+
create a signature for the claimed public key and the supplied encrypted private key -- proving
1565+
that the public key is valid, and associated with the encrypted private key.
1566+
1567+
** Validating an Advanced Feature License
1568+
1569+
When an advanced feature is used, all available =python-slip39.crypto-license= files are loaded.
1570+
They are examined, and if a license is found that is:
1571+
1572+
- Assigned to this Agent and Machine-ID
1573+
- Contains the required license authorizations
1574+
1575+
then the functionality is allowed to proceed.
1576+
1577+
If no license is found, instructions on how to obtain a license for this Agent on this Machine-ID
1578+
will be displayed.
1579+
1580+
If you've already obtained a "master" license on your primary machine's SLIP-39 installation, you
1581+
can use it to issue a sub-license to this installation (eg. for your air-gapped cryptocurrency
1582+
management machine).
1583+
1584+
Otherwise, a URL is displayed at which the required "master" license can be issued.
1585+
1586+
*** Get a sub-license From Your "master" License
1587+
1588+
Typically, you'll be using python-slip39's advanced features on an air-gapped computer. You do
1589+
not want to visit websites from this computer. So, you obtain a sub-license from your primary
1590+
computer's python-slip39 installation, and place it on your secure air-gapped computer
1591+
(eg. using a USB stick).
1592+
1593+
Take note of the secondary machine's Agent ID (pubkey) and Machine ID. On your primary
1594+
computer (with the "master" license), run:
1595+
: python3 -m slip39.sublicense <agent-pubkey> <machine-id>
1596+
1597+
Take the output, and place it in the file =~/.crypto-licensing/python-slip39.crypto-license= on
1598+
your air-gapped computer.
1599+
1600+
*** Obtaining an Advanced Feature "master" License
1601+
1602+
On your primary computer, open the provided URL in a browser. The URL contains the details of
1603+
the advanced feature desired.
1604+
1605+
This URL's web page will request an Ed25519 "Agent" public key to issue your "master" license
1606+
to. This should be your primary user account's Ed25519 "Agent" public key -- this master
1607+
"Agent" will be issuing sub-licenses to any of your other SLIP-39 installations. You will be
1608+
redirected to a URL that is unique to the advanced feature plus your Agent ID.
1609+
1610+
An invoice will be generated with unique Bitcoin, Ethereum and perhaps other cryptocurrency
1611+
addresses. Pay the required amount of cryptocurrency to one of the provided wallet addresses.
1612+
Within a few seconds, the cryptocurrency transfer will be confirmed.
1613+
1614+
Once the payment for the advanced feature is confirmed, the URL including your agent ID will
1615+
always allow you to re-download the license. It is only usable by your Agent ID to issue
1616+
sub-licenses to your python-slip39 installations on your machines.
1617+
15501618
* Dependencies
15511619

15521620
Internally, python-slip39 project uses Trezor's [[https://gihub.com/trezor/python-shamir-mnemonic.git][python-shamir-mnemonic]] to encode the seed data to

SLIP-39-macOS.spec

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,9 +50,9 @@ coll = COLLECT(exe,
5050
app = BUNDLE(coll,
5151
name='SLIP-39.app',
5252
icon='images/SLIP-39.icns',
53-
version='9.0.3',
53+
version='9.1.0',
5454
info_plist={
55-
'CFBundleVersion':'9.0.3',
55+
'CFBundleVersion':'9.1.0',
5656
'CFBundlePackageType':'APPL',
5757
'LSApplicationCategoryType':'public.app-category.finance',
5858
'LSMinimumSystemVersion':'10.15.0',

slip39/gui/SLIP-39-SE-SIGS.org

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
#+title: Seed Extra Randomness - Ignore Bad Entropy
2+
#+OPTIONS: toc:nil title:nil author:nil
3+
4+
#+BEGIN_ABSTRACT
5+
Bad Entropy is risk to Cryptocurrency HD Wallet Seed Secrets!
6+
7+
Avoid Harmonic and Shannon Entropy Deficiencies:
8+
- Use strong cryptographically secure randomness for your Seed Data
9+
- Use Extra Randomness from good sources, eg. rolling 20 or so dice
10+
#+END_ABSTRACT
11+
12+
#+BEGIN_EXAMPLE
13+
{update_seed_data.analysis}
14+
#+END_EXAMPLE
15+
16+
#+BEGIN_EXAMPLE
17+
{update_seed_entropy.analysis}
18+
#+END_EXAMPLE

slip39/gui/SLIP-39-SE-SIGS.txt

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
Bad Entropy is risk to Cryptocurrency HD Wallet Seed Secrets!
2+
3+
Avoid Harmonic and Shannon Entropy Deficiencies:
4+
• Use strong cryptographically secure randomness for your Seed Data
5+
• Use Extra Randomness from good sources, eg. rolling 20 or so dice
6+
7+
┌────
8+
│ {update_seed_data.analysis}
9+
└────
10+
11+
┌────
12+
│ {update_seed_entropy.analysis}
13+
└────

0 commit comments

Comments
 (0)