Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rename "password" to "passphrase/13th word" #10408

Closed
yahiheb opened this issue Mar 31, 2023 · 26 comments · Fixed by #12320
Closed

Rename "password" to "passphrase/13th word" #10408

yahiheb opened this issue Mar 31, 2023 · 26 comments · Fixed by #12320
Assignees
Labels
Milestone

Comments

@yahiheb
Copy link
Collaborator

yahiheb commented Mar 31, 2023

Using the word password is very confusing for users specially newbies who most likely do not know that it is very important to recover/access their wallet.

There are a lot of examples from users confused and complaining that they lost access to their wallet because of this, and we can easily say they are newbies just from the terminology they use or from the fact that it didn't occur to them that the password is part of their backup, it proves the point that they do not know it is important for their recovery.

For more example see this #10321 (comment).


Quoting this very good explanation from @lontivero on why we should call it passphrase instead of password:

Wasabi is a bip39 wallet, this means that it can derive a seed from mnemonic sentence and a passphrase (clarification: sometimes we use to say that the passphrase is the 13th word but that's just a mental shortcut for explaining the concept the newbies, the passphrase is not a word, or at least not necessarily, but multiple extra words separated by white spaces). Anyway, as a bip39 wallet Wasabi should speak the same idiom that all the rest of bip39 wallets and ask for passphrase, not for passwords. Just imagine if we have this discussion here what can we expect from new users!?


A simple solution to this confusing issue:

  1. Rename password to passphrase/13th word or recovery words extension. (IMO we should call it passphrase and mention that it is a recovery words extension/13th word on the dialog's description)
  2. Change the create wallet workflow and separate the recovery words and the passphrase dialogs to indicate to users that they should be backed up and stored separately:
    • First phase we create the wallet (derive a seed from recovery words and a passphrase), and ofc ask the user to back them up.
      • Show recovery words.
      • Ask the user to enter passphrase/13th word.
    • Second phase we confirm our back up
      • Confirm recovery words.
      • Confirm passphrase/13th word.
@yahiheb yahiheb added the UI label Mar 31, 2023
@yahiheb
Copy link
Collaborator Author

yahiheb commented Mar 31, 2023

FTR there is already #9756 & #10321 which describe the same issue differently.

@yahiheb
Copy link
Collaborator Author

yahiheb commented Mar 31, 2023

Why I personally would prefer passphrase over 13th word:

  • As Lucas mentioned the passphrase is the 13th word but that's just a mental shortcut for explaining the concept the newbies , it is not necessarily a word, it can be a phrase, a sentence, numbers, ...
  • What if we one day we start generating 24 recovery words?
  • The word passphrase is maybe less user friendly than 13th word and therefore it should lead users to take their time to learn and understand how important this is.
  • The previous point (slowing down the user when creating their wallet) should be good since Wasabi needs time to download the filters the first time it is launched.

@Kruwed
Copy link
Collaborator

Kruwed commented Mar 31, 2023

As mentioned in #10321 it is my opinion that substituting the word "Passphrase" for "Password" does not make any difference in a user's mind to inform them the thing they type in the 2 boxes gets added as a part of the recovery seed.

In English, the differences between these these two terms simply refers to the way the secret information is formatted. A "Word" implies the secret information is formatted as a single string without spaces, such as Canada77. A "Phrase" implies the secret information is formatted as several words concatenated together (with or without spaces, depending on the passphrase creator's preference), such as blue penguin running slowly

The terminology has evolved such that choosing (or generating) phrases instead of words for your secret information makes the secret information easier to remember by a human while making it harder to guess by bruteforcing attacker. This concept was made viral by this xkcd comic:

image

As such, the definition of "passphrase" is commonly known as "a password that is multiple words long":

A password is a string of characters required for access to a system. A password can look like this: 4jli$oju?A.
A passphrase is basically a more secure form of a password. People use passphrases for the same reasons and in the same way as a password. A passphrase is typically longer and contains spaces. A passphrase can also contain symbols, and it does not need to be grammatically correct. An example of a passphrase can be “flew cat, bo0k through there!” A passphrase should be easy to remember but hard for hackers to crack and guess.

A password is typically a continuous string of eight or more letters, numbers, and/or symbols. Ideally, these should be randomized, which would make it harder to decode. An example would be “W=aXBt<P#Y]SG.04pN1)”, as generated by my trusty password manager.
A passphrase, on the other hand, comprises a series of 4 to 10 random words (with or without spacing) and is usually longer than a password. For instance, “gnomechalkkimchihurricane”.

We recommend that you use passphrases, as they are longer yet easier to remember than a password of random, mixed characters. A passphrase is a memorized phrase consisting of a sequence of mixed words with or without spaces.
For example, you might create a passphrase by using association techniques, such as scanning a room in your home and creating a passphrase that uses words to describe what you see (e.g. “Closet lamp Bathroom Mug”).

Although I think "13th word" should be defined clearly, I would still recommend the term password if it came down to a coin flip between password and passphrase. Since creation of Bitcoin wallets already involves a 12 word recovery seed phrase, it causes a vocabulary collision if we also refer to the password as a "phrase" especially since (some? most?) users will choose a single word instead of a phrase for their password.

@yahiheb
Copy link
Collaborator Author

yahiheb commented Apr 1, 2023

As mentioned in #10321 it is my opinion that substituting the word "Passphrase" for "Password" does not make any difference in a user's mind to inform them the thing they type in the 2 boxes gets added as a part of the recovery seed.

  1. We should clarify that a passphrase is an extension to the recovery words, and that it is required to recover your wallet.
  2. As suggested above we should change the "create wallet" workflow to 2 phases:
    • 1st phase: Create the wallet (Display recovery words, then set a passphrase)
    • 2nd phase: Confirm the wallet backup (Confirm recovery words, then confirm the passphrase)

This should make a difference in the user's mind to inform them the thing they type in the 1 box gets added as a part of the recovery words.

In English, the differences between these these two terms simply refers to the way the secret information is formatted. A "Word" implies the secret information is formatted as a single string without spaces, such as Canada77. A "Phrase" implies the secret information is formatted as several words concatenated together (with or without spaces, depending on the passphrase creator's preference), such as blue penguin running slowly

The terminology has evolved such that choosing (or generating) phrases instead of words for your secret information makes the secret information easier to remember by a human while making it harder to guess by bruteforcing attacker. This concept was made viral by this xkcd comic:

This confirms that it should be called passphrase and not password.

As such, the definition of "passphrase" is commonly known as "a password that is multiple words long":

Again, literally all of those definitions and comparisons confirm that it should be called passphrase and not password.

Although I think "13th word" should be defined clearly, I would still recommend the term password if it came down to a coin flip between password and passphrase.

We know from experience and from many users' feedback for years that calling it password was always a source of confusion.

Take a look again at the examples mentioned in the description of this issue or at this #10321 (comment) to see how do other bitcoin projects call it, and what is their experience/opinion about this.

Since creation of Bitcoin wallets already involves a 12 word recovery seed phrase, it causes a vocabulary collision if we also refer to the password as a "phrase"

We never mention seed phrase in our software, we call them recovery words, so there should be no vocabulary collision.

especially since (some? most?) users will choose a single word instead of a phrase for their password.

If that is true then calling it passphrase would maybe push users to use a phrase instead of one word which is more secure. (As the attached picture suggested)

@editwentyone
Copy link

editwentyone commented Apr 23, 2023

without creating a new issue i would like to comment here with a sketch prototype

the user tests and common knowledge in the space shows us that its very important to help the user to create a solid backup. right now, without telling the user that Wasabis Wallet "Password" = Passphrase / 13th word , we are gambling with the users experience to loose btc and trust in wasabi wallet.

that needs to be fixed asap in my opinion.

✐ Experience Click Prototype

also touches: #10367

13thwordpassword_480.mov

@MaxHillebrand
Copy link
Collaborator

This is really cool.

I like the simplification to only asking for four words, the others should be visible in the UI while it's checked though. There are arguments to check all, but I think convenience matters more here.

password check on first wallet load can be skipped.

This is nice onboarding in two similar dialogs, no pop-ups or clutter, well done.

@turbolay
Copy link
Collaborator

turbolay commented Apr 23, 2023

I more or less agree with the idea of confirming only 4 words, I guess (or at least I don't oppose), as long as the others are displayed, but I strongly disagree with this statement:

I think convenience matters more here.

This is arguably the most important screen in the life of the user, a mistake here could mean all funds lost much later in the future with a false sense of security. If there is one screen in the software where convenience doesn't matter against security, that's this one.

password check on first wallet load can be skipped.

Automatically open new wallets, or at least the first one, good idea.

@editwentyone
Copy link

displaying the other words is a good idea. absolutely valid. will keep that in mind & as a comment on figma.

also i also think its one of the most important steps a user has to do. so its a delicate balance between time convinience and safety.

we can save some more time on other steps.

@yahiheb
Copy link
Collaborator Author

yahiheb commented Apr 24, 2023

If there is one screen in the software where convenience doesn't matter against security, that's this one.

I absolutely agree with this. IMHO we should let the user take as much time as needed when they are creating and backing up their wallet (recovery words + passphrase).

  • If users don't know how important this is for their funds security they should take their time to learn and understand it.
  • This also buys us some time to download the filters the first time Wasabi is launched.

password check on first wallet load can be skipped

we can save some more time on other steps.

As pointed out in #10367 (comment) newly generated wallets should be loaded automatically once the creation process is done, which would save some time.

@nopara73
Copy link
Contributor

There are some great ideas and some less so here.

It does seem like we all agree on the improvement of the verify backup regarding the elegant checksum solution: choosing the random words wit the mouse, so maybe @editwentyone you could create a new issue and we'll get that work started with the UI team?

Regarding the Create Backup screen, it is a confused screen. I have so many thoughts and let's go through them all in the UX meeting, but I'll leave a few here randomly:

  • 13/password passphrase: is it supposed to be the actual label or you're just having it here as an explanation for us? If it's the former, then it feels like you're just not able to decide what word to use, so you used all 3 candidates. For one, do not use the word passphrase. It's confusing in itself, let alone together with the others. Also don't rely on the long text of explanation above, this page is already a wall of text.
  • It's not clear to me what the print template is. Is it supposed to be sending the recovery words to a printer? While I'm not personally against that, it will certainly receive a lot of backlash due to the added trust to the printers. It's also a non-trivial new feature (maybe it's trivial, not sure) so probably we should just drop it. At least for now.
  • Regarding "Reveal." I'm not convinced of the security argument at all, but it might give us some UX gains if we play it well. What if the words would be hidden at first, but instead of having "Continue" button, it'd be the "Reveal" button. When user clicks "Reveal" then words are revealed and the button becomes a "Continue" button. This'd be good, because it has less cognitive load on the user as the buttons those has to be clicked are on the same place. We would reduce the wall of text we initially present to the user and only show the 12 words after it clicks Reveal.

Regarding not having a password screen, but rather make the password verification happen on these pages, I am still trying to decide if it's genius or a terrible idea. It might reduces the number of steps, but it might also end up being confusing. From an operational point of view, I'd default to what we have currently.

On new wallet naming. We should only do that if it's not the first wallet as we discussed.

Also what happened to the "Success! Your wallet is created" final screen you talked about before?

@MaxHillebrand
Copy link
Collaborator

MaxHillebrand commented Apr 24, 2023

The print out template is a pdf with placeholders for recovery words and passphrase (and maybe fingerprint). 1. _____________ 2. _____________ etc. The actual recovery words are not on there, the template is the same for every user.

@editwentyone
Copy link

editwentyone commented Apr 24, 2023

13/password passphrase: is it supposed to be the actual label or you're just having it here as an explanation for us? If it's the former, then it feels like you're just not able to decide what word to use, so you used all 3 candidates. For one, do not use the word passphrase. It's confusing in itself, let alone together with the others. Also don't rely on the long text of explanation above, this page is already a wall of text.

everything on a sketch is just for explanation, no final wordings until high fidelity designs (and even then everything is up to debate and optimization). only high fidelity designs can tell if it will be a wall of text, right now its hard to sketch in the right proportions. passphrase doesn't need to be named, we just need to make sure that its backuped.

It's not clear to me what the print template is.

its just a blank Din A4/ Letter Size Paper Template without any words. so no trust is needed for printers. the user just needs to fill out what he sees on the screen. the template has the same design as our backup screen.

What if the words would be hidden at first, but instead of having "Continue" button, it'd be the "Reveal" button.

I think that's not a good UX because most of the users wouldn't see/ recognize the label change while hovering and also they thought they can go to the next screen (continue does exactly that) but suddenly they have to stop and go back into the middle and work with the words. reveal does exactly what it needs to do, make sure, that the user is ready to write down the words in a save environment.

Regarding not having a password screen, but rather make the password verification happen on these pages, I am still trying to decide if it's genius or a terrible idea. It might reduces the number of steps, but it might also end up being confusing. From an operational point of view, I'd default to what we have currently.

its not only about reduction of steps. its about the teaching how important that backup of 12+1 is. because we decided to use the 13. word as a password mechanism, we need to make absolutely sure, that the user also understands that. without this step, by keeping the actual default way we have, we are risking that the funds and trust of our users.

On new wallet naming. We should only do that if it's not the first wallet as we discussed.

totally agree, if its the first wallet, it should be named in the background and not shown to change. every other wallet needs to see this naming screen / step.

Also what happened to the "Success! Your wallet is created" final screen you talked about before?

its at the beginning, right before "create backup" flow starts. I skimmed through my sketches and don't see a success screen at the end. after (optional) naming, the user should arrive at the empty home screen of the application with his newly created und unlocked wallet.

if its ok, I wouldn't put more steps on the user to start using the app. I would create an animation for a success screen in-between, now that I thought about it again…

@MaxHillebrand
Copy link
Collaborator

On new wallet naming. We should only do that if it's not the first wallet as we discussed.

totally agree, if its the first wallet, it should be named in the background and not shown to change. every other wallet needs to see this naming screen / step.

I would argue to even remove wallet naming from the second creation, and just call it Wallet2 by default, with an optional editing function somewhere in the settings or so.

Maybe we could generate some random human friendly short identifier names automatically for each wallet, so we avoid the numbering?

@editwentyone
Copy link

editwentyone commented Apr 24, 2023

you can combine that thougth: present the naming step, suggest a good name already so the user can just accept it by finishing without edit, but you also give the possibility to edit it quickly and continue. best of both worlds.

@MaxHillebrand
Copy link
Collaborator

I think as long as we don't have a dedicated screen exclusively for naming the wallet, I'm happy.

@Kruwed
Copy link
Collaborator

Kruwed commented Apr 24, 2023

How do you set an empty/blank password if the continue button does not activate until you enter text in the field?

@editwentyone
Copy link

Good question. IF the password is not mandatory it should be active as soon the verification is done.

Something I can’t decide. I understood that it should be mandatory. More security to unlock your wallet and prevent others from accessing it.

Just let me know if it’s not mandatory and I will redesign it

@turbolay
Copy link
Collaborator

turbolay commented Apr 24, 2023

Just let me know if it’s not mandatory and I will redesign it

It is not.

@yahiheb
Copy link
Collaborator Author

yahiheb commented Apr 25, 2023

@editwentyone

  • The seed extension is a passphrase/13th word used also as a password to unlock the wallet not the other way around.
  • The passphrase is needed to create the wallet if a user chooses to add one which is something we want to encourage.
    Wallet successfully created displayed first doesn't make sense in that case which should be considered as the default case.
  • Create your backup now as a title of the first dialog the user interacts with is a not user friendly imo.
  • Displaying the recovery words and passphrase on the same dialog leads users to store them in the same place which is bad.
  • Password is not mandatory.
  • I don't see any need for the print template, it isn't useful, it might confuse the users to think it is ok to print the backup and it just adds clutter to the UI.
  • The Reveal button is not need too imo, it just adds clutter to the UI.
  • We should verify 12 words, this is very important and it won't take much more time compared to verifying 4 words.
  • Maybe we shouldn't name the first wallet, but idk if it is a good idea or not because the first/main wallet would have a default name like Wallet, while the other wallets will have custom names by the user.
    Also this dialog should come before the recovery words imo.
  • Newly generated wallets should be loaded automatically without typing the passphrase again.

passphrase doesn't need to be named, we just need to make sure that its backuped.

Why it shouldn't? Many if not most other bitcoin projects call it passphrase and they say calling it anything else is the main source for users loosing access to their wallets. Take a look at second point here #10321 (comment).
Users should not just back it up, they should know what is it and understand its crucial role.

@yahiheb
Copy link
Collaborator Author

yahiheb commented Apr 25, 2023

It does seem like we all agree on the improvement of the verify backup regarding the elegant checksum solution: choosing the random words wit the mouse

I don't agree with that, for reasons stated above and on other issues/PRs.
The feature to verify all 12 words has just been agreed on and merged recently after long discussions and recourses spent on it, why should we go back on this? What is the benefit to verify only 3 or 4 words?

For one, do not use the word passphrase. It's confusing in itself, let alone together with the others. Also don't rely on the long text of explanation above, this page is already a wall of text.

It is not proven that the word passphrase is confusing, while it is very clear that the word password has been confusing for many new users throughout the years of Wasabi's existence.
The above text comes mostly from years of newbie user's feedback that they lost access to their wallets because of the word password, and from other experienced bitcoin developers of different bitcoin projects. #10321 (comment)
Ignoring all of that and trying to come up with something that might end up also confusing would be a mistake.

@editwentyone
Copy link

please see this video from minute ~2:30 #10661 (comment)

@yahiheb
Copy link
Collaborator Author

yahiheb commented Jun 13, 2023

Another case/proof that shows that many users don't know that the password is in fact a passphrase and it is required to recover their wallet. #10886

There are countless of cases like this one that we have seen through out the years of Wasabi's life but somehow we keep ignoring this feedback. ¯\_(ツ)_/¯

The terminology is very important specially for newbies. Currently it is very misleading.

@nopara73
Copy link
Contributor

What do you mean "keep ignoring this feedback"? There has been hundreds if not thousands of back and forth discussions about it. That does not qualify to me as "keep ignoring this feedback." If anything it's an argument to START ignoring this feedback and deliver shit instead.

@yahiheb
Copy link
Collaborator Author

yahiheb commented Jun 14, 2023

What do you mean "keep ignoring this feedback"? There has been hundreds if not thousands of back and forth discussions about it.

There should haven't been a lot of discussions for many years, but more importantly all of those discussions didn't move us forward so far.
For example I don't see us considering that feedback here: #10661 which is the main point of my previous comment.

If anything it's an argument to START ignoring this feedback and deliver shit instead.

That's what I have been saying for long, we know that what we currently have isn't optimal and we can easily improve it by a simple PR or two regardless of all the UX redesign which seems to be taking much more time than it should, at east for such obvious and easy issues.

@editwentyone
Copy link

editwentyone commented Jun 17, 2023

ok, to be clear:

  • i re-used passphrase aka 13th word as the "password" not because its right, but because its been used here like this
  • we have the problem, that people are not securing their password, because we don't tell them to, and because a password shouldnt be technically the passphrase
  • when i brought that up, people were complaining about passphrase usage (its not a phrase etc etc)

my suggestions is in #10661 and its another "try and error" without any testing and research to nudge the user to define and use a passphrase as a daily password. also to write it down (with the help of a template, to make it even clearer).

its still not perfect, but its a balance between: we want the user to use a daily password (aka passphrase) and also make it recoverable with 12 words + passphrase

best would be: 12 words + passphrase (12+1 backed up for recovery, but stored separately ) + dedicated password (for extra security on a daily basis, can be forgotten)
but is it easy for the user? you tell me, we do not test it to be sure. we (as the devs) are just guessing for the users (as in different personas with different background and skills) out there

but apparently its decided to use the passphrase as a password, its ok-ish, but then this route needs definitely assistance to back it up, also as a consequence we need to re-design the recovery flow after #10661 is implemented

@alecov
Copy link

alecov commented Aug 9, 2023

The feature of "password" in wallets usually means just to unlock the software and decrypt the seed or private key stored within. It does not mean the same thing as a "seed extension" in any sort; and is de facto expected not to be required a backup precisely because passwords are often forgotten. Security-wise this "password as seed extension" thing is irrelevant: the user can and often will save both things in the same place, against all recommendations, and software cannot control nor should impose this kind of restriction.

It is also surprising to find that your seed phrase + password does not derive the same keys from other wallet software because of this situation, which increases adoption friction. It took me a while to understand why Wasabi was not actually deriving the keys I wanted it to derive because of this and I am skeptical on using such mission-critical software which on my view does not comply to such basic usability norms.

I also find it unacceptable to store unencrypted key material (I am assuming that is the case if I do not employ a password during wallet creation or import) and it is also unacceptable to be forced to move coins to a Wasabi-only wallet just because of a password. Finally, assuming I understood the situation correctly, changing passwords is technically impossible without generating a brand new wallet, which is also unacceptable.

I would kindly suggest to implement a wallet password feature which does exactly the same thing as every other piece of software dealing with key material do: merely encrypt the stored key material without touching it (in this case, extending the seed). The current functionality of seed extension can be left as is for users willing to use it and should be renamed to what it actually is: a seed extension, not a password, neither a "passphrase" (which is essentially the same thing).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging a pull request may close this issue.

10 participants