Marco Ricci commited on 2026-08-09 17:30:30
Zeige 4 geänderte Dateien mit 20 Einfügungen und 20 Löschungen.
Unfortunately, this typo is also present in one of the public method names and in one of the documentation files. The documentation file gets a redirect, but the code will necessitate an API version bump.
| ... | ... |
@@ -345,17 +345,17 @@ specifically marked as such.) |
| 345 | 345 |
### Added {#added-in-v0.5}
|
| 346 | 346 |
|
| 347 | 347 |
- For the [`Vault`][derivepassphrase.vault.Vault] API, support reporting |
| 348 |
- on whether two master passphrases are interchangable with respect to the |
|
| 349 |
- service passphrases they can derive. |
|
| 348 |
+ on whether two master passphrases are interchangeable with respect to |
|
| 349 |
+ the service passphrases they can derive. |
|
| 350 | 350 |
This is an artefact of how the master passphrase is converted to the |
| 351 | 351 |
random bit sequence with which the service passphrases are generated. |
| 352 |
- See the corresponding [FAQ entry: What are "interchangable passphrases" |
|
| 353 |
- in vault?][INTERCHANGABLE_PASSPHRASES] for details, including the |
|
| 352 |
+ See the corresponding [FAQ entry: What are "interchangeable passphrases" |
|
| 353 |
+ in vault?][INTERCHEANGABLE_PASSPHRASES] for details, including the |
|
| 354 | 354 |
practical security (non-)implications. |
| 355 | 355 |
|
| 356 | 356 |
The [`derivepassphrase vault`][CLI_VAULT] command-line interface does |
| 357 | 357 |
not address this in any manner, mostly because the "non-standard" |
| 358 |
- interchangable variants of a given master password tend to be ugly to |
|
| 358 |
+ interchangeable variants of a given master password tend to be ugly to |
|
| 359 | 359 |
type in, and because they do not have practical security implications. |
| 360 | 360 |
|
| 361 | 361 |
- For the [`Vault`][derivepassphrase.vault.Vault] API, accept arbitrary |
| ... | ... |
@@ -876,7 +876,7 @@ specifically marked as such.) |
| 876 | 876 |
[CLI_EXPORT]: reference/derivepassphrase-export.1.md |
| 877 | 877 |
[CLI_EXPORT_VAULT]: reference/derivepassphrase-export-vault.1.md |
| 878 | 878 |
[CLI_VAULT]: reference/derivepassphrase-vault.1.md |
| 879 |
-[INTERCHANGABLE_PASSPHRASES]: explanation/faq-vault-interchangable-passphrases.md |
|
| 879 |
+[INTERCHANGEABLE_PASSPHRASES]: explanation/faq-vault-interchangeable-passphrases.md |
|
| 880 | 880 |
[REFERENCE]: reference/index.md |
| 881 | 881 |
|
| 882 | 882 |
[BUG_ALLOW_ALL_UNICODE_PASSPHRASES]: wishlist/allow-all-unicode-passphrases.md "Bug entry: “Allow all Unicode text strings as master passphrases”" |
| ... | ... |
@@ -1,10 +1,10 @@ |
| 1 | 1 |
--- |
| 2 |
-title: What are "interchangable passphrases" in `vault`, and what does that mean in practice? |
|
| 2 |
+title: What are "interchangeable passphrases" in `vault`, and what does that mean in practice? |
|
| 3 | 3 |
--- |
| 4 | 4 |
|
| 5 |
-# What are "interchangable passphrases" in `vault`, and what does that mean in practice? |
|
| 5 |
+# What are "interchangeable passphrases" in `vault`, and what does that mean in practice? |
|
| 6 | 6 |
|
| 7 |
-## What are "interchangable passphrases"? |
|
| 7 |
+## What are "interchangeable passphrases"? |
|
| 8 | 8 |
|
| 9 | 9 |
The "vault" derivation scheme internally uses PBKDF2-HMAC-SHA1[^1] to turn |
| 10 | 10 |
the master passphrase[^2] into a pseudo-random bit sequence, which then |
| ... | ... |
@@ -15,7 +15,7 @@ key is thus subject to the HMAC key mapping procedure. |
| 15 | 15 |
Because the mapping of infinitely many arbitrarily sized keys to 64-byte |
| 16 | 16 |
sized keys cannot be one-to-one, there exist pairs of keys that behave |
| 17 | 17 |
identically when passed into (PBKDF2-)HMAC-SHA1, i.e., the keys (master |
| 18 |
-passphrases) are "interchangable" from the vault scheme's perspective. |
|
| 18 |
+passphrases) are "interchangeable" from the vault scheme's perspective. |
|
| 19 | 19 |
|
| 20 | 20 |
Fundamentally, this is an issue of *encoding*: the master passphrase is |
| 21 | 21 |
interpreted as an encoding of the HMAC-SHA1 key, and this encoding is not |
| ... | ... |
@@ -117,15 +117,15 @@ SHA1) is secure against preimage attacks: |
| 117 | 117 |
|
| 118 | 118 |
## What effect does the HMAC key mapping procedure have on `derivepassphrase`? |
| 119 | 119 |
|
| 120 |
-`derivepassphrase vault` does not check for interchangable passphrases, and |
|
| 120 |
+`derivepassphrase vault` does not check for interchangeable passphrases, and |
|
| 121 | 121 |
will happily accept any (non-empty) passphrase it is given. |
| 122 | 122 |
The [`derivepassphrase.vault.Vault`][] class does not check for |
| 123 |
-interchangable passphrases either, and will happily accept any passphrase it |
|
| 123 |
+interchangeable passphrases either, and will happily accept any passphrase it |
|
| 124 | 124 |
is given, even empty ones. |
| 125 | 125 |
|
| 126 |
-Most interchangable variations of a master passphrase contain binary |
|
| 126 |
+Most interchangeable variations of a master passphrase contain binary |
|
| 127 | 127 |
characters such as NUL, or even arbitrary byte sequences, which may be hard |
| 128 | 128 |
to type in or impossible to express in certain storage formats. As such, it |
| 129 | 129 |
is unlikely---but otherwise supported---that the user would want to enter |
| 130 |
-or store a different, interchangable version of their master passphrase in |
|
| 130 |
+or store a different, interchangeable version of their master passphrase in |
|
| 131 | 131 |
the first place. |
| ... | ... |
@@ -4,13 +4,13 @@ title: Explanation overview |
| 4 | 4 |
|
| 5 | 5 |
* [How to comply with the "altered versions" clause of the |
| 6 | 6 |
license][FAQ_ALTERED_VERSIONS] |
| 7 |
-* [What are "interchangable passphrases" in `vault`, and what does that mean |
|
| 8 |
- in practice?][FAQ_INTERCHANGABLE_PASSPHRASES] |
|
| 7 |
+* [What are "interchangeable passphrases" in `vault`, and what does that mean |
|
| 8 |
+ in practice?][FAQ_INTERCHANGEABLE_PASSPHRASES] |
|
| 9 | 9 |
* [Tradeoffs between a master passphrase and a master SSH |
| 10 | 10 |
key][TRADEOFFS_PASSPHRASE_SSH_KEY] |
| 11 | 11 |
* [Should I use one master SSH key/master passphrase, or many?][MANY_MASTER_SECRETS] |
| 12 | 12 |
|
| 13 | 13 |
[FAQ_ALTERED_VERSIONS]: faq-altered-versions.md |
| 14 |
-[FAQ_INTERCHANGABLE_PASSPHRASES]: faq-vault-interchangable-passphrases.md |
|
| 14 |
+[FAQ_INTERCHANGEABLE_PASSPHRASES]: faq-vault-interchangeable-passphrases.md |
|
| 15 | 15 |
[TRADEOFFS_PASSPHRASE_SSH_KEY]: tradeoffs-passphrase-ssh-key.md |
| 16 | 16 |
[MANY_MASTER_SECRETS]: many-master-secrets.md |
| ... | ... |
@@ -602,13 +602,13 @@ class Vault: |
| 602 | 602 |
return bytes(base64.standard_b64encode(signature_blob)) |
| 603 | 603 |
|
| 604 | 604 |
@classmethod |
| 605 |
- def phrases_are_interchangable( |
|
| 605 |
+ def phrases_are_interchangeable( |
|
| 606 | 606 |
cls, |
| 607 | 607 |
phrase1: Buffer, |
| 608 | 608 |
phrase2: Buffer, |
| 609 | 609 |
/, |
| 610 | 610 |
) -> bool: |
| 611 |
- """Return true if the passphrases are interchangable to Vault. |
|
| 611 |
+ """Return true if the passphrases are interchangeable to Vault. |
|
| 612 | 612 |
|
| 613 | 613 |
Vault internally passes the passphrase as the key to HMAC-SHA1. |
| 614 | 614 |
HMAC requires keys to have a certain fixed length, and therefore |
| ... | ... |
@@ -659,7 +659,7 @@ class Vault: |
| 659 | 659 |
This is the actual HMAC key this passphrase would be transformed |
| 660 | 660 |
into when used within Vault. |
| 661 | 661 |
|
| 662 |
- See [`phrases_are_interchangable`][] for further explanations |
|
| 662 |
+ See [`phrases_are_interchangeable`][] for further explanations |
|
| 663 | 663 |
and warnings about timing attack resistance. |
| 664 | 664 |
|
| 665 | 665 |
Args: |
| 666 | 666 |