views:

92

answers:

8

I am developing a tool where a short pass code is generated. That code will be read to the intended user, so I want to limit my character set to letters that are hard to mistake. Both the reader and the listener will be untrained, so any solution must be transparent to them. I want to be able to just give them the passcode and have it exceedingly unlikely that a letter will be misheard.

First off I have limited my possible character list to those characters that look the similar depending on font, so no l or 1, 0 and O are out, as are S and 5, any others you can think of?

Also, I want to remove letters that sound similar, so G&D and B&P are out. Is there a resource of commonly misheard letters?

I know this will cut down on the possible character count severely, but I do need it because of accessibility issues. Also, the person on the receiving end of the code probably won't be aware that I am limiting the character set. The fact that I am limiting the characters should be transparent to both the person reading the password and the person hearing it.

+1  A: 

Can you not have it read back with the NATO phonetic alphabet?

A Alpha B Bravo C Charlie D Delta E Echo F Foxtrot G Golf H Hotel I India J Juliet K Kilo L Lima M Mike N November O Oscar P Papa Q Quebec R Romeo S Sierra T Tango U Uniform V Victor W Whiskey X X-ray Y Yankee Z Zulu

If not, you really need to drop any letter with an "ee" sound at the end, i.e.: B,C,D,E,G,P,T,V,Z

JNK
Possibly, but the users who will be reading the code are untrained. They will be submitting a form and getting back this passcode which they will be telling someone else. I really don't feel I can rely on them to use the phonetic alphabet, hence the need for limited character set. Good catch on the ee sounding names, +1.
Tyson of the Northwest
Well the phonetic alphabet was so you could transcribe. I.e. the code generates ABCD123 and it prints "Alpha Bravo Charlie Delta One Two Three". If you need it to not be obvious you are doing this, then I would use A F H I J K L M N O Q R S U W X Y. If you use the correct font on the client side (like courier new) the 1/l and 0/O thing shouldn't be an issue. Always use caps and the font puts a slash in the zero.
JNK
Tyson of the Northwest
+1  A: 

I found a similar discussion on google answer: http://answers.google.com/answers/threadview/id/521339.html

It might help you out, check out the answer given by pinkfreud-ga

Lobsterm
Helpful, but not there yet. The table had some characters, like G and K, that had high scores, but are commonly mistaken by human listeners, and not as picked out by machine listeners. But the low value characters I was able to knock off right away.
Tyson of the Northwest
@Tyson of the Northwest: G and K mistaken by human listeners, really? they don't strike me as phonetically very similar.
David Hedlund
G could be B, C, D, E and K, kinda could sound like A... maybe. Good point, I should add it back. Thanks.
Tyson of the Northwest
@Tyson of the Northwest: oh, I thought you were saying they were commonly mistaken *for one another*. yeah, i can see how `G` would not be a good fit *overall*. sorry bout that.
David Hedlund
+1  A: 

Hmm... I'm assuming that the code will be a visual representation that will then be read to the end user? because if it was spoken by speech synthesis, then 0 and O wouldn't be an issue, right?

If so, would you be able to visually aid the representation of that code?

Your code is
[M] ike [C] harlie [5] five ...

David Hedlund
I could, but that would make the reader aware that I am trying to mollycoddle them. The clarity of message should just happen.
Tyson of the Northwest
A: 

This approach seems a little harder than it needs to be, tbh, especially with the numeric similar appearance limitation. Why not restrict letters and numbers to certain positions within the passcode, and make it clear that "the first X characters will be alphabetical characters, and the last X characters will be numeric"?

The NATO phonetic alphabet like JNKyle says would also be helpful for visual feedback if it's possible for you to use it.

hollsk
But that would require both the user speaking it and the one hearing it to have a pre-existing knowledge of the pattern. The point of this is to make it completely transparent so neither party needs to know any information going into this other than how to read a letter or number.
Tyson of the Northwest
A: 

Pick only few characters and use those:

APJZCHWRTE
apjzchwrte

Though a good password ends up being long. add few digits and you can construct shorter passwords.

Cheery
Yes, but neither the reader nor the listener would know the minimized set. I am trying to pick the few characters, but they need to have a low probability of mishearing.
Tyson of the Northwest
@Cheery: I think that's exactly what OP was trying to do, but there are problems in picking out the set of few characters. Your `P` sounds a lot like, say, `B`. Now `B` is not included in your set, but presumably, *the listener will not know the logic behind the codes*, which would be a prerequisite to be able to say "was that a 'p' or a 'b'. i guess it must've been 'p' as 'b' is not included in the set."
David Hedlund
A: 

Setup an easily readable charset and then randomize it.

Here's a solution in Ruby

charset = %w{ 2 4 6 7 f h q w x y }
password = (0...10).map{ charset.to_a[rand(charset.size)] }.join

This produces passwords like ""qh4w26wxfq"

nicholasklick
Depending on the font, g, q and 9 all look similar.. possibly
Kieren Johnstone
It is not just an issue of mistaking a printed character. But the chance of mistaking a character for another character when the character is spoken aloud.
Tyson of the Northwest
Good point about the q, I missed that Kieren.
Tyson of the Northwest
I understand the issue here, but think you may be overthinking it. I reduced the charset to uniquely sounding chars. We have the same issue at work with people calling in to get new passwords. Something like the above works fine or we just change their password temporarily to something simple like "overflow" then they can change it to whatever they want.
nicholasklick
A: 

Some out of the box options...

If it doesn't have to be random numbers and letters, you could go with a dictionary of words. Then the person would not have to read off each character. The word could then be padded with numbers to make it more unique.

3power41
69topic31

Another possibility, make it all sets of two characters adjacent to each other.

ab-pq-78-de-mn-op

It would be easier to notice when a character breaks from this pattern because it was misheard (even someone untrained would probably notice the pattern).

If typed, a similar pattern could be used as adjacent letters on the keyboard.

qw-df-hj-io-23-we

The possibilities are limitless.

smdrager
Possibly, but then I get the misheard lyrics issue, spelling error, or spelled out or single character questions. Good solution for a problem other than this one.
Tyson of the Northwest
A: 

After taking the suggestions in other answers I this is the reduced list of characters that I have found to be hard to mistake when spoken or viewed.

fhikorsuwxyFHKLQRUWXY246789

Special thanks to:

Without their suggestions I would't have been able to synthesize this list.

Tyson of the Northwest