Some authentication ideas I have come up with may bear mention
given all the attention problems of authenticating folks remotely
have been getting.
Let us suppose to introduce the ideas that we have some token we give
folks such that it displays a number sequence (that may vary with time
or with uses, in the latter case being tracked) and such that an
authenticating agency can tell what it will display. Let us suppose
further that (seeing we don't want to be total fools) each such token
has an identifying number visible to users, but generates a different
number sequence from any other token. (This can be done easily by just
having an internal counter encrypted with a key, and using a different
key for every device. The authenticating agency needs to know the keys
but nobody else does.)
This is pretty common stuff. After all, SecureID has been around for
years, and ciphers - of - the - day have been around for centuries.
However it can be used for more than has been common.
If we want an authenticating agency to prove its identity to the token
holder, how about having the token holder report half the display and
have the agency then tell the holder the other half?
To prove that a known person is present, and not just that the token is
present, it has been customary to have the person transmit a PIN and
ALSO the display value. For people who like to type a lot this is ok,
but lots of systems only have room to send back 3 or 4 digits, and if a
PIN is entered in plaintext, webcams, keyloggers, or other agents can
then capture the PIN.
There's a better way.
Let's suppose your display looks like this (forgive ASCII art):
+---+---+---+---+---+---+---+
| 7 | 5 | 2 | 9 | 1 | 0 | 3 |
+---+---+---+---+---+---+---+
a b c d e f g
01 23 45 67 89
where the part in the boxes is the number. (I have drawn it with no
repeated digits for clarity.)
Now we can ask the person, ahead of time, to pick 3 positions of the
display (he can use 3 letters to remember if he likes). This is like
getting into your car door these days, but simpler. (Car doors often ask
for 5 numbers.)
Suppose the person's pattern is "feb". (Can be anything, but some will
choose to spell things. It'd be OK to print the whole alphabet, a few
letters to a digit, if we wanted a larger selection.)
Now to identify himself and his token, a person would get the token to
generate a number, then pick out the digits at the positions he
selected. In the above example that would be digits 0 1 5.
Note that because the display changes every time, the chosen digits
change every time, yet they authenticate the user and the token together
at a stroke, and are hard to capture because the token is not connected
to anything, and mostly won't be in range of a webcam or other spy
gadget. Notice too that giving this information is a conscious act, not
something a chip can be fooled into doing.
Finally, where a transaction is used, and it is desired to get a
person's OK to spend, say, $539 on something, he could be asked to
please pick the positions above the little digits corresponding to 539
on his display. In the picture above, that would be the "45", the "23",
and the "89" positions, and if the display read as shown the customer
could key in "251" to give his OK. (This would be most important for
large purchases and in internet type settings.)
Now this would give better authentication than we now get, without
changing payment networks. (Credit/debit card authentication codes are 3
digits long, for example. I'd rather use something like this than a
fixed PIN where a PIN was needed, too.)
However there's a cheaper way to use these same schemes. Instead of
sending out tokens (which would be considered "unproven"), if you are an
authenticating agency you can send out "bingo cards". These would be
printed with each one different and having again some serial number.
Suppose I try again to draw a crude one. There are more variants here,
since at each intersection can be long or short numbers. For
illustration let me presume that at each intersection there is another 7
digit number like the putative token display above. So the card might
start like:
a b c d e f g
1 3265891 5276903 4437921 0513277 7902168 3180245 7421056
2 6387009 8711244 5037837 9091234 1234567 0987654 7634216
... and so on.
A real card would have a lot of these printed.
Now when the authenticator wants to prove to you who he is, you send the
coordinates (row and column) and he can tell you the number there.
For you to authenticate yourself you can again pick a pattern to select
out of any display, and the authenticator can give you the coordinates
to use. You then pick out your pattern of 3 or 4 positions and report
the digits there, using the number on the bingo card. (If your pattern
were as above, the 6th, 5th, and 2nd digits, and you had to report using
the number on your card at d2 above (which is 9091234 above), you'd pick
3 2 0 and report "320".)
It is possible of course to scratch off a number and just use that,
reporting your pattern, if it is hard to transmit a coordinate to use.
The authenticator would be able to track what you used. This kind of
thing is most useful for network authentication though where some added
communication is easy.
If you were asked to approve an amount string or the like with a bingo
card, I would suspect it easiest if you got prompted first with a
picture of what digit positions to pick out and with a coordinate. You
would be able to see the digit pattern if you wanted to check that it
was reasonable but someone who did not have your card, and had not
authenticated himself with your pattern moments before, would not get
that far with the transaction.
Variants of using the number could be used to check payee names if the
need should arise.
The beauty of schemes like this, while they are a little more effort
than some, is they need only simple devices and rely on the fact that
the devices are not connected to any tappable things, and that people
are pretty good at remembering simple patterns. This would after all be
much easier than getting into your car, and would be used often enough
not to be a problem to recall. (If you have several of them, and use the
same position pattern for all of them, it's no big deal: the random
display kinda/sorta encrypts the transmission for you so it is really
hard to intercept.)
If people start stealing inputs because some sites don't authenticate to
the user or omit the "amount check", it will still be tough to fake a
site that does the above stuff. (Obviously the initial pattern needs to
be transmitted separately from the bingo card or token.)
An authentication scheme that people will use ought to be voluntary and
conscious like this, moreover. Fingerprints can be stolen in 10 seconds
with tape, and in general biometrics must be kept un-stolen for ~100
years...a long time once every 7-11 clerk can get to them. RFID might be
read without your knowledge (much less consent). This is a little more
like the old signet rings barons and kings used to use...you know you
are using it, and for what. Also it is possible to have several of them
pretty easily if you must, each authenticating your relationship to one
authenticator. In effect multiple such authenticators could act like a
"web of trust" where you show "I am a customer of x bank, y bank, z
company, and a member of r and s clubs" if you need to use more than
one, and that might very well be plenty to convince merchant W to grant
you credit.
Glenn C. Everhart
[EMAIL PROTECTED]
_______________________________________________
Secure Coding mailing list (SC-L)
SC-L@securecoding.org
List information, subscriptions, etc - http://krvw.com/mailman/listinfo/sc-l
List charter available at - http://www.securecoding.org/list/charter.php