Repository navigation
persistent-setup: trust Tails passphrase policy - #243
Closed
BenWestgate wants to merge 1 commit into
Closed
BenWestgate wants to merge 1 commit into
BenWestgate wants to merge 1 commit into
Conversation
BenWestgate
commented
Sep 25, 2026
BenWestgate
left a comment
Owner
Author
There was a problem hiding this comment.
AI-generated review (Claude), posted at the maintainer's request.
ACK the --timeout 0 half of 3c36717. The gate removal needs discussion.
pinentry-gnome3 --timeout 0fixes the idle fall-through.- "Accepted by Tails" means the passphrase unlocks Persistent Storage; it doesn't mean it met a strength bar. Does Tails enforce a minimum? If not, this drops the only check. A smaller fix for the reported bug is to stop stripping spaces (
"$existing_passphrase"instead of"${existing_passphrase// /}") and make the <50-bit case a warning rather than a forced reboot. - Merges cleanly with #202, #217 and #234.
Owner
Author
Tails does not force a minimum. They recommend 5 to 7 random words and the Persistent Storage app shows 6. |
Owner
Author
I would ACK this. |
This was referenced Sep 27, 2026
Owner
Author
|
Superseded by #289. That stacked PR keeps this fix (trust Tails' passphrase policy and indefinite pinentry) while moving all optional passphrase-training ownership out of |
BenWestgate
added a commit
that referenced
this pull request
Oct 1, 2026
…292) * persistent-setup: score passphrases with their spaces Stripping spaces before keepassxc-cli estimate scored random-word passphrases as one concatenated token, so a five-word passphrase could fall below 50 bits and force a reboot. Keep the spaces, and let the lowest-score warning continue instead of rebooting unconditionally. Refs #243. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019JziKN4UP3pEXBVsdSYJDQ * persistent-setup: keep word separators out of the entropy score Scoring the passphrase with its spaces credited each separator as entropy, so four common words passed as 70 bits. Strip spaces again; random EFF-list passphrases of 6+ words still score above 65 bits, and the weakest case now warns instead of forcing a reboot. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019JziKN4UP3pEXBVsdSYJDQ --------- Co-authored-by: Claude <noreply@anthropic.com> Co-authored-by: Tails Tester <tails-test@localhost>
BenWestgate
pushed a commit
that referenced
this pull request
Oct 2, 2026
Tails 7.6 replaced KeePassXC with Secrets, so keepassxc-cli no longer exists. The empty estimate counted as zero bits, and every existing passphrase was reported as too weak, however strong. Estimate with zxcvbn instead, the same estimator KeePassXC used. Tails 7.14 ships its Rust port, zxcvbn_rs_py, as a dependency of Secrets; fall back to the Python zxcvbn where that is what is installed. The Rust port counts guesses in 64 bits, so it reports at most 64 bits of strength. Pass at 64 bits instead of 65, so that a passphrase of 5 or more random words, as Tails recommends, still passes. Pass the passphrase on stdin so it never appears in a process list. If no estimator is installed, say the strength was not checked instead of calling the passphrase weak. Refs #243
BenWestgate
pushed a commit
that referenced
this pull request
Oct 3, 2026
Tails 7.6 replaced KeePassXC with Secrets, so keepassxc-cli no longer exists. The empty estimate counted as zero bits, and every existing passphrase was reported as too weak, however strong. Estimate with zxcvbn instead, the same estimator KeePassXC used. Tails 7.14 ships its Rust port, zxcvbn_rs_py, as a dependency of Secrets; fall back to the Python zxcvbn where that is what is installed. The Rust port counts guesses in 64 bits, so it reports at most 64 bits of strength. Pass at 64 bits instead of 65, so that a passphrase of 5 or more random words, as Tails recommends, still passes. Pass the passphrase on stdin so it never appears in a process list. If no estimator is installed, say the strength was not checked instead of calling the passphrase weak. Refs #243
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Refs #240.
Summary
Reproduction
On
masterat5147ffdin Tails 7.13:keepassxc-cli estimate, so random-word passphrases could be scored as a concatenated token and rejected after Tails had already accepted themThe two later
mastercommits changeinstall-coreand review automation only; this one-file PR remains mergeable without a rebase.Testing
bash -n bails/.local/bin/persistent-setupshellcheck bails/.local/bin/persistent-setupgit diff --check origin/master...HEAD