![]() | ![]() GRC's Open, Ultra-High Security, One Time Password System | ![]() |
GRC's "Perfect Paper Passwords" (PPP) system is a straightforward, simple and secure implementation of a paper-based One Time Password (OTP) system. When used in conjunction with an account name & password, the individual "passcodes" contained on PPP's "passcards" serve as the second factor ("something you have") of a secure multi-factor authentication system.
As shown by our PPP demo page, the "paper" of the Perfect Paper Passwords system is the user's own. The system operates by allowing Internet users to securely print their own paper passcards any time (and at any convenient size) they wish. By enforcing secure (SSL) web browser connections, GRC's PPP printing facility securely delivers user-printable web pages with images of credit card size "passcards", each containing seven columns by ten rows of unique, single-use 4-character passcodes.
A user wishing to prove his identity to a remote Internet service, with which he has previously established an account, does so when prompted by entering the next passcode in the sequence printed on his current passcard:

Individual passcodes are used and consumed in linear, left-to-right reading sequence, across and down. Since no passcode will ever be reused, the user is free to cross it off his list of remaining passcodes.
The set of 64 characters used by the (default configuration) PPP system results in 16,777,216 possible combinations of four characters. Even though each "passcode" is conveniently short, they provide more security than 6-digit hardware tokens that offer (only) one million possible numbers.
After the user has initiated a logon procedure by providing their username (used to lookup their account information, including their PPP Sequence Key and the location of the next passcode), the authenticating service will prompt the user for their account's secret passphrase and for the next expected passcode. To prevent account name guessing, a secure system will always request the account's passphrase and passcode even if the username is unknown or invalid.
As shown on the sample passcard image above and on the diagram below, the remote service will prompt the user for the next passcode by providing the passcard number (as printed in the upper right corner of each card) and the row and column of the next passcode:

This prompting in no way reduces the security of the system. And since no passcode or passcard will ever be reused, the user may elect to permanently cross off the most recently used passcode so that they will be able to more easily locate the next one. This also serves as a convenient visual reminder of the possible need to print and/or begin carrying the next card in the sequence as the current card's codes are consumed.
That's really all there is to it. The system offers easily understood straightforward simplicity at essentially zero cost (compared with hardware token solutions) and no batteries to consume and replace, while delivering bulletproof security in an easy-to-use one-time password authentication system.
Additional features of the system:The Perfect Paper Passwords system was originally developed for GRC's internal use to enable GRC staff to securely authenticate themselves to GRC's private corporate management services when they were roaming away from home. PPP has turned out to be so convenient and secure that it will also be incorporated into GRC's forthcoming CryptoLink™ product as one of several highly secure remote authentication methods.
The PPP system cryptographically derives a successive 128-bit pseudo-random number for each passcode. From this number it "extracts" characters by successively dividing the large 128-bit number by the character set size and using the remainder to select the character. (This character extraction process is described and analyzed thoroughly on the Statistical Analysis page.)
Each division remainder is used to choose one of the following 64 characters displayed and printed using the bold "Courier New" typeface:
This set of characters was carefully chosen to eliminate visually confusing or ambiguous characters. Numeric 0 and 1 are removed, as are uppercase alphabetic 'I', 'O' 'Q' and lowercase 'l'. The HTML-unsafe special characters '&', '<' and '>' were also eliminated.
Also note that the PPP specification requires the PPP character set to be "ASCII sorted" to improve interoperability among PPP implementations. Therefore, any user-supplied character set will always be sorted into low-to-high ASCII order (as shown above) before being used.
A 64-character alphabet was chosen because it is sufficiently large to allow each character to convey 6-bits of information (26 = 64) while being small enough to allow the exclusion of visually ambiguous or confusing characters. The resulting short passcodes are fun to use and easy to "get right" when reading from a printed PPP passcard.
PPP users authenticate themselves to a PPP-equipped Internet service simply by demonstrating that they know the next passcode in their own unique and personal passcode sequence. And the only way they could know the next passcode — short of a one in nearly 17 million chance of guessing — is to refer to a passcard that the authenticating service previously provided for printing.
As was mentioned above, the exact number of possible individual and unique passcode sequences is 2256 since that's the exact number of possible combinations that 256 bits may have. Since visualizing powers of 2 is difficult, here's that number shown in much more familiar decimal notation:
115, 792, 089, 237, 316, 195, 423, 570, 985, 008, 687, 907, 853,
269, 984, 665, 640, 564, 039, 457, 584, 007, 913, 129, 639, 936
When you establish an account with a PPP-based authentication service, you will be randomly assigned one unique passcode sequence from among that many possible sequences. You will never know which one you've been assigned, nor will anyone who might be trying to guess your next passcode. Even if someone has seen all of your prior passcodes or has access to all of your previous passcards, they still won't have any idea what's coming next.
Only your printout of your individual passcard
allows you to know which passcode comes next.
We also mentioned above that each user's unique passcode sequence is extremely long. Exactly how long? There are this many passcodes:
340, 282, 366, 920, 938, 463, 463, 374, 607, 431, 768, 211, 456
Consequently, jumping ahead, skipping passcodes, and retiring entire passcards early represents no problem for the PPP system. There's no danger that you'll exhaust your personal and private passcode sequence.
As you can see, for the sake of security the PPP system was designed to use lots of bits. In fact, it uses a great many more than are probably necessary to provide "adequate" security. But "adequate" security was not the goal in designing this system. The goal was overkill security, and overkill security is what PPP delivers. At the same time, the large number of bits used to create PPP's overkill security is entirely hidden from PPP's users. So even though PPP delivers world-class overkill security, the system is easy to use and has many significant advantages over weaker solutions.
The PPP Algorithm page describes the exact operation of the PPP CryptoSystem in sufficient detail to allow anyone to implement it themselves.
Gibson Research Corporation is owned and operated by Steve Gibson. The contents of this page are Copyright (c) 2008 Gibson Research Corporation. SpinRite, ShieldsUP, NanoProbe, and any other indicated trademarks are registered trademarks of Gibson Research Corporation, Laguna Hills, CA, USA. GRC's web and customer privacy policy. |
| Last Edit: Feb 22, 2008 at 09:55 (233.49 days ago) | Viewed 19 times per day |