Skip to content

Add support for Recovery Phrases#740

Merged
crwood merged 80 commits intomainfrom
674.recovery-phrases.2
Aug 25, 2025
Merged

Add support for Recovery Phrases#740
crwood merged 80 commits intomainfrom
674.recovery-phrases.2

Conversation

@crwood
Copy link
Copy Markdown
Member

@crwood crwood commented Aug 25, 2025

This PR adds preliminary support for Recovery Phrases, enabling users to backup and restore their Gridsync "rootcap" by writing down -- and later re-entering -- a BIP-39-compatible 12-word phrase. The user interface provided features automatic/tab completion for words and currently supports 11 different languages (thanks to the wordlists provided by the mnemonic package):

recovery-phrase-1 recovery-phrase-2 recovery-phrase-3

This functionality is made possible by recent changes in Tahoe-LAFS (version 1.20.0) that allow mutable objects to be created with user-supplied RSA keys (PRs #1365, #1245) as well as two new Rust libraries: deterministic-keygen (crates.io, PyPI.org) for generating keys deterministically and lafs (crates.io, PyPI.org) for independently verifying the derivation of dircap URIs.

Please note that Recovery Phrases do not fully replace Gridsync's existing "Recovery Keys" system. Naturally, users will still need to maintain a record of additional connection information (such as the storage fURLs comprising the storage grid) in order to reconnect to a grid "from scratch" and perform a restoration. In addition, this feature is presently gated behind a feature flag out of caution; Recovery Phrases can be enabled by either setting recovery_phrases to true in gridsync/resources/config.txt or by setting the equivalent environment variable GRIDSYNC_FEATURES_RECOVERY_PHRASES=true.

Special thanks to the Tahoe-LAFS Foundation for supporting the research and development of this feature!

@crwood crwood merged commit a1209a0 into main Aug 25, 2025
18 checks passed
@crwood crwood deleted the 674.recovery-phrases.2 branch August 25, 2025 02:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant