BenWestgate / Bails

Bails is a Bitcoin solution protecting against surveillance, censorship, and confiscation. It installs Bitcoin Core on the encrypted Persistent Storage of Tails, creates and recovers Bitcoin Core wallets from Codex32 (BIP93) seed backups, and creates backup Bails USB sticks and shareable blank Bails USB sticks. Learn more in README.md.
MIT License
40 stars 7 forks source link

2 testers have setup a Persistent Storage before running Bails #23

Closed BenWestgate closed 11 months ago

BenWestgate commented 12 months ago

More experienced Tails users like @epiccurious and my last tester understand that in order to install software to Tails, they must have a Persistent Storage, and so either click on the Welcome Screen or in the menus to create one.

While it is fine to click "Create a Persistent Storage" on the Welcome Screen. If it is actually setup first, especially without the right features of the Persistent Storage turned on, before running Bails, it will fail or give errors.

Worse, this latest user selected his own 12 character passphrase and it only had 53-bits of entropy which is weak against a State Sponsored attack, as the wallet encryption passphrase. Bitcoin Core recommends 10 or more random characters be used which is 66+ bits for all typeable characters.

The README.md instructions must be updated to Warn against setting up the Persistent Storage before running the Bails command.

BenWestgate commented 12 months ago

@epiccurious can you make a patch to README.md for this?

ask chat GPT for help or just paste your suggested change here and I'll make the commit

BenWestgate commented 12 months ago

24

epiccurious commented 12 months ago

Yes I can make this change.

epiccurious commented 12 months ago

Can you please assign the issue to me?

bflights commented 12 months ago

I was the other user that created my own passphrase.

Is it correct to assume that if I just change it to a higher entropy later for both the persistence and the core it will be fine?

Also, if I wanted to unplug and use the computer for another task will the core download just restart where it left off on the next time I log in?

BenWestgate commented 11 months ago

I was the other user that created my own passphrase.

Is it correct to assume that if I just change it to a higher entropy later for both the persistence and the core it will be fine?

Also, if I wanted to unplug and use the computer for another task will the core download just restart where it left off on the next time I log in?

Reposting my DM reply to you here:

If you encrypt with a weak passphrase initially, it's possible for the keyslot to remain on the USB for a long time afterwards (if accessed with forensic tools) which could be used to unlock the encryption of the Persistent Storage even though you've changed the weak passphrase

I have plans to add a feature to "change" or "reset" the passphrase or threshold of the codex32 seed backup that lets you keep the same wallet and just replace the shares.

The user would have to restore their wallet, then I could ask if they want to change the passphrase or threshold, then it would show the last two dialogs of "Create Wallet" (3-of-4 codex32 seed backup, and set seed backup passphrase) before displaying and confirming the new shares.

Increasing the threshold or changing the old passphrase would require destroying the old set of shares, so this is not exactly convenient but at least if you were already using the wallet, you would not have to Sweep the bitcoins to a new wallet

BenWestgate commented 11 months ago

Also, if I wanted to unplug and use the computer for another task will the core download just restart where it left off on the next time I log in?

If you shutdown bitcoin core safely, waiting for it to exit before shutting down Tails (from the menu in the upper right) it will resume where you left off the next time you Start on Tails, unlock its Persistent Storage, and connect to Tor.

Adding this to the FAQ

BenWestgate commented 11 months ago

24 @epiccurious

BenWestgate commented 11 months ago

While the instructions now say to "ignore 'Create Persistent Storage'" To completely close this issue, Bails can still detect when a Persistent Storage already exists and do as much of the previous persistent-setup as possible, short of telling them to use a strong passphrase, but they may already have!

Bails should install to a tails persistence someone is already using for other stuff, it's just another application. But if they do that, they need the same security assurances, so I have to ask if their passphrase is at least 4-5 random words and if they memorized it or wrote it down somewhere

BenWestgate commented 11 months ago

Tackling #12 so I can close this major issue.

BenWestgate commented 11 months ago

Completed. It now properly greets and handles all of the following cases where persistent storage is setup:

Not unlocked, they can delete it or restart and unlock it, up to them.

Unlocked but not configured , checks passphrase, enables features Unlocked but configured, checks passphrase Unlocked, misconfigured, bitcoin has been installed before = enables features Unlocked configured, bitcoin has been installed before = does nothing different than now.

It also protects against weak passphrases which should be expected in 95% of cases where people set up without following our instructions first.