From 25886e89333a32861e5e067ac3439a4c7ce21fdf Mon Sep 17 00:00:00 2001 From: Ben Burwell Date: Tue, 12 Mar 2019 14:07:20 -0400 Subject: Update with better-organized text --- CONTRIBUTING.md | 8 +++ README.md | 21 ++++++ index.html | 212 ++++++++++++++++++++++++++++++++++++++++++++------------ site.css | 58 +++++++++++++--- 4 files changed, 246 insertions(+), 53 deletions(-) create mode 100644 CONTRIBUTING.md create mode 100644 README.md diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..d33f38a --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,8 @@ +# Contributing to howtochooseapassword.com + +Contributions to the code and to the text itself are welcomed. Due to the +intended canonical nature of this site, changes will be rigorously reviewed for +accuracy with an additional focus on the language. + +Be sure to familiarize yourself with the [Plain Language +guidelines](https://plainlanguage.gov/) before making changes to the text. diff --git a/README.md b/README.md new file mode 100644 index 0000000..ab6751f --- /dev/null +++ b/README.md @@ -0,0 +1,21 @@ +# How to Choose a Password + +This is an educational site geared to the general public that uses the [Plain +Language guidelines](https://plainlanguage.gov/) to provide information on +password security. + +There are two primary use cases: + +1. As a reference to be shared with family and friends so you don’t need to keep + typing out the same material all the time. +2. To be linked to by apps and websites in their password creation user + interfaces. If you are responsible for implementing a password UI, feel free + to link to or use some or all of the text. + +## Contributing + +Contributions are welcome! See [CONTRIBUTING.md][] + +## License + +This site is in the public domain and subject to the Unlicense. diff --git a/index.html b/index.html index b051ff0..922fe52 100644 --- a/index.html +++ b/index.html @@ -3,86 +3,208 @@ How to Choose a Password +

How to Choose a Password

+ + +

+ + Why strong passwords are important + +

+

- It’s important to choose passwords that satisfy two basic requirements: + When choosing a password, it’s important to make sure that no one can + guess it — that’s the whole point, right?

-
    +

    + If we want to make sure no one can guess our passwords, we need to + think about what adversaries might be trying to guess + them and how they might do it. This is part of a process called + threat modeling. Some adversaries we can think about + are: +

    + +
    • - No one should be able to guess it, - either based on what they know about you, by simply guessing common - passwords, or based on other passwords they know you’ve used. + People who know us. Our friends know a lot about us, + like our birthday, our pets’ names, our favorite songs, and other + personal information. Even if we’re not worried about friends + guessing our passwords, an adversary might easily find these details + on the Internet, so we shouldn’t use any of these things in our + passwords.
    • - It should grant access to only one thing. - You should assume that the password will be compromised, and - when it is, the attacker should not be able to use that information to - gain access to any of your other accounts. + People who know a password we’ve used in the past. + Unfortunately, it’s not unusual for passwords to be discovered by + adversaries. This might happen if a website or app we use is + compromised, or if a computer we type our password on has been + infected with malware. This means it’s a bad idea to create a new + password by making a variation of another one.
    • -
+
  • + People who know a lot of common passwords. Attackers + have compiled “password dictionaries” containing thousands of + commonly used passwords. Even if an adversary is not specifically + trying to find our password, they might use lists like this + to discover our password if it is one of the common ones. +
  • + -

    Use long, random passwords

    - The easiest way to make sure that no one can guess your password is to - make it completely random. Using random passwords helps achieve the - principles above because: + + The way to make sure that no one can guess our passwords is to make + them completely random. + + When our passwords are randomly generated, they don’t have any + information related to us that friends might be able to guess. If an + adversary learns one of our passwords, they will be no closer to + guessing any of our other passwords. And of course, randomly generated + passwords are very unlikely to be listed in password dictionaries.

    -
      + +

      + + How to generate a random password + +

      + +

      + Being truly random is something that people are very bad at. Even when + we think we are being random, there are often patterns + associated with the “random” things we come up with. +

      + +

      + When we want to create good, random passwords, one thing we can use is + software (such as our password manager, more on this below) to help us. +

      + +

      + Another method is to use a word list and dice to create a random + passphrase. The + Electronic Frontier Foundation, + a digital privacy advocacy group, has created + + a wordlist you can download + + for this purpose. To use this method, you’ll need five dice (or you can + roll a single die five times). Here’s how: +

      + +
      1. - It automatically won’t have any information associated with you, such - as a pet’s or family member’s name. + Roll five dice (or one die five times) and read the number from each + so that you have five digits, for example: 1, 6, 3, 5, 2.
      2. - If you need to change your password, it’s easy to come up with a - completely new one rather than just changing randomness to - randomness1, then to randomness2 and so on. + Look at + + the wordlist + + to find the word next to the number you rolled. + In this case, we find the line 16352 comfort, so our + word word is comfort.
      3. -
    +
  • + Repeat the first two steps until you have at least six words. You + will end up with a random phrase like + comfort tableful booth tulip dandelion stable + which is your new random passphrase. +
  • +
  • + Make up a little story to help remember the passphrase. For example: + “The diner had a comfortable + tableful in the booth with + tulips and dandelions in a + stable vase.” +
  • + +

    - A good, random password depends on entropy, which is a measure - of the amount of information it contains. Some passwords that - appear random and secure are not. For example, - zxcvbn looks like a bunch of random letters, but is - actually a common password because it’s the first six keys on the bottom - row of the QWERTY keyboard. + If an adversary wanted to guess our passphrase, even if they had our + wordlist and knew exactly how we created it, they would need to + correctly guess 30 random die rolls in the right order. The probability + of this is 1 in 221,073,919,720,733,357,899,776. It is + extremely unlikely they would be successful, as it would take + three billion years of making a million guesses every second before + they would be likely to succeed.

    -

    Use a password manager to help you remember

    +

    + + How to remember your passwords + +

    +

    - Unless you have a superhuman memory, you won’t be able to remember all - the long, random passwords that you have. A great solution to this - problem is to use a password manager. Password managers are software - programs that run on your computer and/or mobile phone that securely - store your passwords and guard them with a master passphrase. + It’s also important not to use the same password twice. Imagine if we + generate a completely random password and use it for our email account, + and we also use it for a social media site. If an adversary learns our + email address and password for the social media site, they could easily + try that same password on our email account, and since we used the same + random password, they would succeed easily. This is why you should only + use each password for a single site.

    + +

    + When there are a lot of different things we need passwords for, it + quickly becomes hard to remember all of them. Luckily, we can use a + password manager to help us out. Password managers are + software programs that help us securely store our passwords. +

    + +

    + Imagine writing down all of our passwords on a sheet of paper, and then + scrambling them all up according to a secret pattern. Even though + someone might look at the paper, they won’t be able to figure out any + of our passwords without knowing the secret pattern we used to scramble + them. Password managers use a similar idea; they use a + master passphrase to encrypt the list of all of our + passwords. The master passphrase is like the scrambling pattern: an + adversary can access the list of all our passwords if and only if they + discover the master passphrase. +

    +

    - A good password manager uses your passphrase to encrypt all of your - passwords. This means that even the company who makes the software does - not have access to your secret passwords; the only way someone could - access them is by knowing your passphrase. + It’s very important to use a long, randomly generated master passphrase + because all of our passwords are only as good as our master passphrase. + When we use a password manager, we only need to remember our passphrase + to unlock our list of passwords. The password manager stores all of our + other passwords for us.

    +

    Another benefit to using a password manager is that they help you generate new passwords when you need them. Here are a few recommendations:

    + + +
    - diff --git a/site.css b/site.css index fae7aea..751197c 100644 --- a/site.css +++ b/site.css @@ -1,6 +1,36 @@ +:root { + --background-color: #fff; + --text-color: #333; + --muted-color: #999; + --accent-color: #ccc; + --link-color: #09e; + --header-color: #4a0; +} + +@media print { + :root { + --background-color: #fff; + --text-color: #000; + --muted-color: #000; + --accent-color: rgba(0, 0, 0, 0); + --link-color: #000; + --header-color: #000; + } +} + +@media (prefers-color-scheme: dark) { + :root { + --background-color: #222; + --text-color: #bbb; + --muted-color: #999; + --accent-color: #666; + } +} + html { + background-color: var(--background-color); font-family: sans-serif; - color: #333; + color: var(--text-color); padding: 0; margin: 0; } @@ -10,7 +40,7 @@ body { margin: 0; } -main, footer { +main { max-width: 600px; margin-left: auto; margin-right: auto; @@ -18,22 +48,34 @@ main, footer { } a { - color: #07c; + color: var(--link-color); } -h1, h2 { - color: #390; +h1, +h2, +h1 a, +h2 a { + color: var(--header-color); } p, li { - line-height: 1.3; + line-height: 1.5; } li { margin-bottom: 1em; } +aside { + padding: 0 1em; + margin: 2em 0; + font-size: 1.2em; + border-left: 5px solid var(--accent-color); +} + footer { - border-top: 2px solid #999; - color: #999; + border-top: 2px solid var(--accent-color); + color: var(--muted-color); + padding-top: 1em; + font-size: 0.9em; } -- cgit v1.2.3