https://lists.ubuntu.com/archives/ubuntu-users/2016-December/288591.html
that inspired this blog post of mine:
http://defining-computers.blogspot.com/2016/12/passwords-passphrases-public-key-and.html
inspired another blog post.
I've talked about this before in this blog:
http://defining-computers.blogspot.jp/2012/01/good-password-bad-password.html mentions it in trying to lay out some basic approaches to choosing good passwords and remembering them.
http://defining-computers.blogspot.jp/2016/08/multiple-login-methods-for-one-user.html goes on at some length about memorability, while trying to explain why you really don't want to log in the same way every time you use a computer or other information device. (And maybe ending up missing the point for the general case.)
http://defining-computers.blogspot.jp/2015/10/why-personal-information-in-e-mail-is.html mentions the problems, and tries (not very successfully) to talk about a few ways to send a PIN to someone else without damaging your finances.
But I decided I'd lay out some processes for remembering things here.
First, you may read somewhere that experts strongly advise against writing PINs and passwords down. Your bank is probably required by the insurance company to say that.
This is a prime example of simple rules just simply not being enough. If you don't understand why you shouldn't write it down, read the post about sending PINs that I linked above.
If you don't understand why you need to write it down somewhere safe, read the other two posts, then think about why it's easy to remember a friend's phone number:
- Regular use,
- Positive re-inforcement,
- The fact that three mistakes in a row doesn't send you back to the bank to get the number changed,
- Etc.
- And -- drumroll, please -- you write that phone number down anyway. The first several times you use it, you are reading it out of your phone book.
Short numbers are easy to remember. They are also easy to misremember.
It's actually easier to remember a seven-digit or twelve-digit number that you regularly use than a four-digit or less number.
Why?
Because you use so many of them, for one thing. (There are several other important reasons, but that should be enough for the purposes of this post.)
Conclusion?
Banks really should start putting on-screen keyboards in the ATMs and allowing letters with the numbers, and longer passcodes instead of PINs. (And still keep the ATM passcode separate from the on-line banking login.)
But that's too easy, so banks are trying to get you to use hardware tokens, which introduce the manufacturer of the token as a new attack vector. Which I have blogged about somewhere, also. I mentioned it in passing in a general post about computer security. I think I went into more detail somewhere, but I don't remember where right now. I'm getting sidetracked again. :)
Back to remembering these tokens.
Lots of people used to write passwords down on sticky notes and attach them to the screen of the workstation or terminal where they used them. (You never did, right? :-/) It's hard to imagine they didn't understand the blatant irony in doing so, but they didn't want to believe they couldn't trust the people around them.
Trust is an important concept here. I've tried to approach it in my freedom is not free blog and other places. It's pretty much an undercurrent in most of the posts in this blog. I think I talk about it a bit in the security rants I posted in February 2013. I talked about it in my rant about trust certificates and certificate authorities and my rant about entrepreneurship, trust, and crowdfunding in my main blog. I need to post something dealing more directly with it here or in the freedom--is-not-free blog, sometime.
People have an innate need to trust.
My sister had a friend who wanted, very much, to tell my sister her PIN and let her borrow her ATM card. I shouldn't mention this except that it illustrates that trust is something we tend to develop blind spots about. That friend knew better, she just also needed someone she could trust. Which means that my sister's telling her to keep it to herself was the only right thing to do -- for all reasons.
We are all irrational about trust, because not trusting is too hard. But passwords and other cryptographic tokens are important. We can't leave our bank PIN stuck to our ATM card in our purse or backpack.
No passwords on stickies, or even any scrap of paper that you will not be controlling until you destroy it. No passwords in your daily planner or phone book.
No book of passwords unless it is under lock and key whenever it is not in your hand or in your pocket.
Lately, we are beginning to see password managers for your computers and for your portable information device (cell phone, etc.) They are convenient. They are sold as the software equivalent of a little book of passwords in a locked drawer.
There are two problems with password managers.
One, they are made by someone you don't know that you can trust. (Or, to put it in a positive phrase, if you want to use a password manager app, get to know the author and make sure the author is someone you can trust. Make sure the author has more to lose by a hidden breach of trust than he or she has to gain, etc.)
You might build your own, and I might try to show how on my programming fun blog, sometime, but that is definitely not a small project.
The other is that they can become a single point of failure. Someone gets in to your password manager, and they have access to every account or whatever that the password manager manages.
But whether you trust the author or build your own, you definitely need a really strong password that you can remember for the manager.
So. Let's talk about remembering these cryptographic tokens without a password manager app.
We'll start with clues for PINs.
Remembering a PIN is more a question of choosing a PIN you can remember. I've tried a variety of things, things like the following list:
- The address of a girl I had a terrible crush on in junior high school, reversed, of course,
- Two consecutive two-digit prime numbers that I had a certain mathematical interest in,
- 10,000 minus the model number of a bicycle that I no longer have,
- The next four-digit prime number after that model number,
- The ascii codes for my favorite cousin's initials,
- My dog's name, as I would punch it in on my cell phone,
- The sum of George Washington and Abraham Lincoln's birthdays.
If I had a note in my pocket planner:
First Tokyo Bank -- yellow bike 10's comp.you might easily guess that PIN and know which bank it might work on.
So, I might write that I took 10's complement, but reverse the order instead. Or note it as the combination to my sports club locker instead of writing the bank's name.
So I list it with some fake stuff, like a fake mail box at work, the name of a bank I don't have an account with, etc. And mix it with some real numbers that I don't care if people know:
- George's cell phone -- 313-843-2112
- Second Bank of the Northeast -- that beauty's initials
- Sports club combo -- yellow bike 10's comp.
- Work phone extension -- 6732
- Book club membership -- zerostone and the moon
So an important key is to be devious. Write something misleading, along with something that helps you remember the number.
But then you have to remember how it was different from what you wrote. If you use the PIN regularly, it will be easier to remember, of course. But after a month or two of not using the ATM, not so easy.
So, here's another suggestion -- use the ATM once or twice a month. Stop by and check your balance, even if you already know what it is.
Okay. So far, so good. But, you're worried that the yellow racer 2626 is too obvious, and, after trying 8484 and 7374, the attacker might try 6262, which is what you set it to.
Ciphers are good for making passwords, too. Let's try a few more simple rotation and arithmetic ciphers:
- rot 1: 3737
2 + 1 = 3,
6 + 1 = 7 - rot 9: 1515
2 + 9 = 11 -- drop the carry: 1,
6 + 9 + 15 -- drop the carry: 5 - rot 1234: 3850
2 + 1 = 3,
6 + 2 = 8,
2 + 3 = 5,
6 + 4 = 10 -- drop the carry - add 9876: 2502
2626 + 9876 = 1,2502 -- keep the carries except the last - sub 5432: 2806
2626 - 5432 = -2806 -- ignore the negative sign
Saying this once again, what we are doing here is using the cipher for the PIN instead of encrypting the number we remember, because we can write the number we remember in words, but writing the cipher in words is not so easy, and may draw attention to what we are doing.
So, you write the note about the PIN on one page, and on another page, you write a note about what you did to it, but it has to be someplace that doesn't stick out. Maybe it would be in a pocket address book, instead. Or on a slip of paper in your wallet (which you could rip to shreds and throw away in multiple trash cans, once you are confident you'll remember it).
Owe 12.34 to Georgemight mean that you subtracted 1234 from the model number to get the PIN you are currently using.
Going to all this work, you still need to keep that pocket planner where people won't start thumbing through it. Don't leave it lying around in the office or on the living room sofa. If you keep it in your bag, make sure your bag is not where co-workers, customers, students, or random strangers might pick it up and rifle through it and walk away with it because it looks interesting.
Walking away: Keep a copy of the actual PINs in a locked drawer somewhere or maybe an extra copy of the obfuscation. Then if your pocket planner walks away, you have the PINs when you go to the bank to change them.
And you can mark out the ones you remember as you remember them, or rip the page out and rip it up, throwing the pieces away in different trash cans.
Again, the problem with being devious is that someone else might decide to be devious the same way.
Now let's get some ideas for passwords.
Simple ciphers like I've described above are not good against someone with a computer. On the other hand, a simple cipher on your password is better than keeping the bare naked password in your little book of passwords, as long as you protect your little book of passwords carefully.
The discussion of PINs lays the groundwork and motivation, but passwords and passphrases have more than numbers. There are two ways to deal with that. We can cycle through the numbers, letters, and punctuation separately, or all together. (And there are some variations, which I will leave to you to figure out.)
We've looked at cycling through the numbers, but it may be easier to understand if we put a list of the numbers, letters, and punctuation in front of us. First, let's just list the whole "printable" ascii chart:
32: !"#$%&'()*+,-./Notice the space character at code point 32.
48: 0123456789:;<=>?
64: @ABCDEFGHIJKLMNO
80: PQRSTUVWXYZ[\]^_
96: `abcdefghijklmno
112: pqrstuvwxyz{|}
But the code point ranks might get in the way. Let's look at that without them:
!"#$%&'()*+,-./Using this chart, a rot 1 cipher just uses the next character in the list. And if the character you are encrypting is "}", wrap around to the first character.
0123456789:;<=>?
@ABCDEFGHIJKLMNO
PQRSTUVWXYZ[\]^_
`abcdefghijklmno
pqrstuvwxyz{|}
Which gives us a question, do we encrypt blanks or not? With pass phrases, it's an important question. Here we will encrypt blanks because I don't think it's a good idea to leave too many clues.
Let's pick a nice phrase to start with:
Bob's your uncle.That's too common, let's make it a little less common:
Bobbette's your aunt.Well, okay that isn't really that much less common. If I were doing this for real, I'd probably want to muck things up a bit further, like this:
Bobbin's my aunt Friday.Okay, now we l33t-$pe@k it:
80bBIn'5 m4 ant phRYd@y.And, because our server doesn't allow space, we'll remove the spaces:
80bBIn'5m4antphRYd@y.That's a twenty-one character password. But you can remember it because of the phrase it's based on. But you can't remember it all the time, so let's encrypt it with rot 2 before we write it down. Bring that clot of ascii back:
!"#$%&'()*+,-./and refer to it while we work. Slide everything over two characters:
0123456789:;<=>?
@ABCDEFGHIJKLMNO
PQRSTUVWXYZ[\]^_
`abcdefghijklmno
pqrstuvwxyz{|}
80bBIn'5m4antphRYd@y. (original)The only problem with this is that if
:2dDKp)7o6cpvrjT[fB{0 (encrypted, if I made no mistakes)
Google mail: :2dDKp)7o6cpvrjT[fB{0is in your pocket planner, the attacker is going to think,
That's not plaintext. No way is someone who makes up a password like this going to just leave it there for me to grab.And she will proceed to do the reverse of what we just did, trying with 1 and minus 1, then 2 and -2:
91cCJo(6n5bouqiSZeAz/ (rot -1)and, because she's interested in l33t$pe@K, too, she notices that rot -2 gives something that looks suspiciously meaningful. And she thinks,
;3eELq*8p7dqwskU\gC|1 (rot 1)
80bBIn'5m4antphRYd@y. (rot -2)
<4fFMr+9q8erxtlV]hD}2 (rot 2)
"Bobbin's my aunt, uhm Friday." Could be a mnemonic password.And, not only does she have your password, but if you used rot 2 anywhere else, she has those passwords, too.
Okay, so the encryption probably discourages the average junior high school student, but it only attracts the attention of the determined attacker with a bit of free time.
We could use an alternating rotation and still be within range of what we can do in our heads. We could start with rot 1 and rot -1 and rot 2 and rot -2 and then back to rot 1:
!"#$%&'()*+,-./
0123456789:;<=>?
@ABCDEFGHIJKLMNO
PQRSTUVWXYZ[\]^_
`abcdefghijklmno
pqrstuvwxyz{|}
80bBIn'5m4antphRYd@y. (original)Another option that might make it easier to work on without an ascii chart is to rotate numbers, letters, and the punctuation ranges separately:
9/d@Jm)3n3cluojPZcBw/ (encrypted, if I made no mistakes)
0123456789But that means the punctuation in the phrase remains punctuation, which gives the attacker information that you may not want to give.
ABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrztuvwxyz
[SP]!"#$%&'()*+,-./
:;<=>?@
[\]^_`
{|}
Anyway, the problem is that the password looks like a password. In fact, it looks like a hard password.
Wait. How about if we take a note we made to ourselves in our pocket planner --
Milk and eggs, no bread.and do a rot 2 on that?
Oknm"cpf"giiu."pq"dtgcf0That might make a sort of nice password, except for the spaces being turned into quotes.
Remove most of the spaces and the period, and l33t$pe@k it a little, add "today":
mIlk&egg5, 0Bread2d@ybut we don't actually write that anywhere. Maybe we can remember that much. Rot2:
oKnm(gii7."2Dtgcf4fB{and there's a nice password. (And a longer string for a passphrase.)
See how that works? The encrypted form looks like an innocuous phrase. It doesn't catch anyone's attention. Maybe you never actually write it in your pocket planner.
It takes a little time to do the decryption in your head, but you'll remember that password pretty soon.
(I'm working on a little tool to do that on my computer or tablet. I'll blog about that in my programming fun blog sometime.)
Don't try to use exactly what I have demonstrated here. Pick and choose, use what you can understand and work with.