diff options
| author | David M. Syzdek <david@syzdek.net> | 2023-01-05 23:24:45 -0900 |
|---|---|---|
| committer | David M. Syzdek <david@syzdek.net> | 2023-01-05 23:24:45 -0900 |
| commit | 20c498fd5c9ba7d7862c63bf0e296d2cf0e00eec (patch) | |
| tree | cfa0e266f88d46446890ae340efb59a89a8b39b8 /docs | |
| parent | 4201220774786a854f86db74ed87b11030e488c0 (diff) | |
| download | otputils-20c498fd5c9ba7d7862c63bf0e296d2cf0e00eec.tar.gz otputils-20c498fd5c9ba7d7862c63bf0e296d2cf0e00eec.tar.bz2 otputils-20c498fd5c9ba7d7862c63bf0e296d2cf0e00eec.tar.xz otputils-20c498fd5c9ba7d7862c63bf0e296d2cf0e00eec.zip | |
docs: adding RFC 1760 and RFC 2289
Diffstat (limited to 'docs')
| -rw-r--r-- | docs/rfc1760.txt | 675 | ||||
| -rw-r--r-- | docs/rfc2289.txt | 1403 |
2 files changed, 2078 insertions, 0 deletions
diff --git a/docs/rfc1760.txt b/docs/rfc1760.txt new file mode 100644 index 0000000..067b607 --- /dev/null +++ b/docs/rfc1760.txt | |||
| @@ -0,0 +1,675 @@ | |||
| 1 | |||
| 2 | |||
| 3 | |||
| 4 | |||
| 5 | |||
| 6 | |||
| 7 | Network Working Group N. Haller | ||
| 8 | Request for Comments: 1760 Bellcore | ||
| 9 | Category: Informational February 1995 | ||
| 10 | |||
| 11 | |||
| 12 | The S/KEY One-Time Password System | ||
| 13 | |||
| 14 | Status of this Memo | ||
| 15 | |||
| 16 | This memo provides information for the Internet community. This memo | ||
| 17 | does not specify an Internet standard of any kind. Distribution of | ||
| 18 | this memo is unlimited. | ||
| 19 | |||
| 20 | Abstract | ||
| 21 | |||
| 22 | This document describes the S/KEY* One-Time Password system as | ||
| 23 | released for public use by Bellcore and as described in reference | ||
| 24 | [3]. A reference implementation and documentation are available by | ||
| 25 | anonymous ftp from ftp.bellcore.com in the directories pub/nmh/... | ||
| 26 | |||
| 27 | Overview | ||
| 28 | |||
| 29 | One form of attack on computing system connected to the Internet is | ||
| 30 | eavesdropping on network connections to obtain login id's and | ||
| 31 | passwords of legitimate users. The captured login id and password | ||
| 32 | are, at a later time, used gain access to the system. The S/KEY | ||
| 33 | One-Time Password system is designed to counter this type of attack, | ||
| 34 | called a replay attack. | ||
| 35 | |||
| 36 | With the S/KEY system, only a single use password ever crosses the | ||
| 37 | network. The user's secret pass-phrase never crosses the network at | ||
| 38 | any time, including during login or when executing other commands | ||
| 39 | requiring authentication such as the UNIX commands passwd or su. | ||
| 40 | Thus, it is not vulnerable to eavesdropping/replay attacks. Added | ||
| 41 | security is provided by the property that no secret information need | ||
| 42 | be stored on any system, including the host being protected. | ||
| 43 | |||
| 44 | The S/KEY system protects against external passive attacks against | ||
| 45 | the authentication subsystem. It does not prevent a network | ||
| 46 | eavesdropper from gaining access to private information, and does not | ||
| 47 | provide protection against "inside jobs" or against active attacks | ||
| 48 | where the potential intruder as able to intercept and modify the | ||
| 49 | packet stream. | ||
| 50 | |||
| 51 | |||
| 52 | |||
| 53 | |||
| 54 | |||
| 55 | |||
| 56 | |||
| 57 | |||
| 58 | Haller [Page 1] | ||
| 59 | |||
| 60 | RFC 1760 The S/KEY One-Time Password System February 1995 | ||
| 61 | |||
| 62 | |||
| 63 | Introduction | ||
| 64 | |||
| 65 | There are two sides to the operation of the S/KEY one-time password | ||
| 66 | system. On the client side, the appropriate one-time password must | ||
| 67 | be generated. On the host side, the server must verify the one-time | ||
| 68 | password and permit the secure changing of the user's secret pass- | ||
| 69 | phrase. | ||
| 70 | |||
| 71 | An S/KEY system client passes the user's secret pass-phrase through | ||
| 72 | multiple applications of a secure hash function to produce a one-time | ||
| 73 | password. On each use, the number of applications is reduced by one. | ||
| 74 | Thus a unique sequence of passwords is generated. The S/KEY system | ||
| 75 | host verifies the one-time password by making one pass though the | ||
| 76 | secure hash function and comparing the result with the previous one- | ||
| 77 | time password. This technique was first suggested by Leslie Lamport | ||
| 78 | [1]. | ||
| 79 | |||
| 80 | Secure Hash Function | ||
| 81 | |||
| 82 | A secure hash function is a function that is easy to compute in the | ||
| 83 | forward direction, but computationally infeasible to invert. The | ||
| 84 | S/KEY system is based on the MD4 Message Digest algorithm designed by | ||
| 85 | Ronald Rivest [2]. Since the S/KEY authentication system went into | ||
| 86 | use, the MD5 Message Digest was released. We have chosen to continue | ||
| 87 | to use MD4 due the large number of client programs that have been | ||
| 88 | distributed. Some sites have generated functionally similar systems | ||
| 89 | based on MD5. Clearly clients and hosts must use the same secure | ||
| 90 | hash function to interoperate. | ||
| 91 | |||
| 92 | The S/KEY system one-time passwords are 64 bits in length. This is | ||
| 93 | believed to be long enough to be secure and short enough to be | ||
| 94 | manually entered (see below, Form of Passwords) when necessary. | ||
| 95 | |||
| 96 | The S/KEY system applies the secure hash function multiple times, | ||
| 97 | producing a 64 bit final output. MD4 accepts an arbitrary number of | ||
| 98 | bits as input and produces a 128 bit output. The S/KEY secure hash | ||
| 99 | function consists of applying MD4 to a 64 bit input and folding the | ||
| 100 | output of MD4 with exclusive or to produce a 64 bit output. | ||
| 101 | |||
| 102 | Generation of One-Time Passwords | ||
| 103 | |||
| 104 | This section describes the computation of the S/KEY one-time | ||
| 105 | passwords. It consists of a preparatory step in which all inputs are | ||
| 106 | combined, a generation step where the secure hash function is applied | ||
| 107 | multiple times, and an output function where the 64 bit one-time | ||
| 108 | |||
| 109 | |||
| 110 | |||
| 111 | |||
| 112 | |||
| 113 | |||
| 114 | Haller [Page 2] | ||
| 115 | |||
| 116 | RFC 1760 The S/KEY One-Time Password System February 1995 | ||
| 117 | |||
| 118 | |||
| 119 | password is displayed in readable form. | ||
| 120 | |||
| 121 | The client's secret pass phrase may be of any length and should be | ||
| 122 | more than eight characters. As the S/KEY secure hash function | ||
| 123 | described above accepts a 64 bit input, a preparatory step is needed. | ||
| 124 | In this step, the pass phrase is concatenated with a seed that is | ||
| 125 | transmitted from the server in clear text. This non-secret seed | ||
| 126 | allows a client to use the same secret pass phrase on multiple | ||
| 127 | machines (using different seeds) and to safely recycle secret | ||
| 128 | passwords by changing the seed. (For ease in parsing, the seed may | ||
| 129 | not contain any blanks, and should consist of strictly alphanumeric | ||
| 130 | characters.) The result of the concatenation is passed through MD4, | ||
| 131 | and then reduced to 64 bits by exclusive-OR of the two 8-byte halves. | ||
| 132 | |||
| 133 | The following code fragment uses the MD4 implementation defined in | ||
| 134 | RFC 1320 [2] and defines the preparatory step: | ||
| 135 | |||
| 136 | strcpy(buf,seed); | ||
| 137 | strcat(buf,passwd); | ||
| 138 | MDbegin(&md) | ||
| 139 | MDupdate(&md,(unsigned char *)buf,8*buflen); | ||
| 140 | |||
| 141 | /* Fold result to 64 bits */ | ||
| 142 | md.buffer[0] ^= md.buffer[2]; | ||
| 143 | md.buffer[1] ^= md.buffer[3]; | ||
| 144 | |||
| 145 | A sequence of one-time passwords is produced by applying the secure | ||
| 146 | hash function multiple times to the output of the preparatory step | ||
| 147 | (called S). That is, the first one-time password is produced by | ||
| 148 | passing S through the secure hash function a number of times (N) | ||
| 149 | specified by the user. The next one-time password is generated by | ||
| 150 | passing S though the secure hash function N-1 times. An eavesdropper | ||
| 151 | who has monitored the transmission of a one-time password would not | ||
| 152 | be able to generate any succeeding password because doing so would | ||
| 153 | require inverting the hash function. | ||
| 154 | |||
| 155 | Form of Passwords | ||
| 156 | |||
| 157 | The one-time password generated by the above procedure is 64 bits in | ||
| 158 | length. Entering a 64 bit number is a difficult and error prone | ||
| 159 | process. Some S/KEY system one-time password calculator programs | ||
| 160 | insert this password into the input stream, others make it available | ||
| 161 | for system cut and paste. Some arrangements require the one-time | ||
| 162 | password to be entered manually. The S/KEY system is designed to | ||
| 163 | facilitate this manual entry without impeding automatic methods. The | ||
| 164 | one-time password is therefore converted to, and accepted as, a | ||
| 165 | sequence of six short (1 to 4 letter) English words. Each word is | ||
| 166 | chosen from a dictionary of 2048 words; at 11 bits per word, all | ||
| 167 | |||
| 168 | |||
| 169 | |||
| 170 | Haller [Page 3] | ||
| 171 | |||
| 172 | RFC 1760 The S/KEY One-Time Password System February 1995 | ||
| 173 | |||
| 174 | |||
| 175 | one-time passwords may be encoded. Interoperability requires at all | ||
| 176 | S/KEY system hosts and calculators use the same dictionary. The | ||
| 177 | standard dictionary is attached to this RFC. | ||
| 178 | |||
| 179 | Verification of One-Time Passwords | ||
| 180 | |||
| 181 | A function on the host system that requires S/KEY authentication is | ||
| 182 | expected to issue an S/KEY challenge. This challenge give the client | ||
| 183 | the current S/KEY parameters - the sequence number and seed. It is | ||
| 184 | important that the S/KEY challenge be in a standard format so that | ||
| 185 | automated clients (see below) can recognize the challenge and extract | ||
| 186 | the parameters. The format of the challenge is: | ||
| 187 | |||
| 188 | s/key sequence_integer seed | ||
| 189 | |||
| 190 | The three tokens are separated by single space characters. The | ||
| 191 | challenge is terminated by a blank or a newline. | ||
| 192 | |||
| 193 | Given the parameters and the secret pass phrase, the client can | ||
| 194 | compute (or lookup) the one time password. It then passes it to the | ||
| 195 | host system where it can be verified. | ||
| 196 | |||
| 197 | The host system has a file (on the UNIX reference implementation it | ||
| 198 | is /etc/skeykeys) containing, for each user, the one-time password | ||
| 199 | from the last successful login, or it may be initialized with the | ||
| 200 | first one-time password of the sequence using the keyinit command | ||
| 201 | (this command name may be implementation dependent). To verify an | ||
| 202 | authentication attempt, it passes the transmitted one-time password | ||
| 203 | through the secure hash function one time. If the result of this | ||
| 204 | operation matches the stored previous one-time password, the | ||
| 205 | authentication is successful and the accepted one-time password is | ||
| 206 | stored for future use. | ||
| 207 | |||
| 208 | Because the number of hash function applications executed by the | ||
| 209 | client decreases by one each time, at some point the user must | ||
| 210 | reinitialize the system of be unable to login again. This is done by | ||
| 211 | using the keyinit command which allows the changing of the secret | ||
| 212 | pass phrase, the iteration count, and the seed. A frequent technique | ||
| 213 | is to increment a trailing digit(s) of the seed and to reset the | ||
| 214 | iteration count (to something in range of 500-1000). | ||
| 215 | |||
| 216 | Clients | ||
| 217 | |||
| 218 | Several programs are available to calculate S/KEY one time passwords. | ||
| 219 | Included in the reference implementation are command line interfaces | ||
| 220 | for UNIX and PC systems (key), TSR interfaces for PCs (ctkey, | ||
| 221 | termkey, and popkey), and GUI interfaces for Macintosh and Windows | ||
| 222 | (keyapp and un-named Macintosh interface). | ||
| 223 | |||
| 224 | |||
| 225 | |||
| 226 | Haller [Page 4] | ||
| 227 | |||
| 228 | RFC 1760 The S/KEY One-Time Password System February 1995 | ||
| 229 | |||
| 230 | |||
| 231 | The most basic calculator is the key command whose format is: | ||
| 232 | |||
| 233 | key [-n count] sequence seed | ||
| 234 | |||
| 235 | The optional count is used to display more than a single one time | ||
| 236 | password. This is useful to create a paper list of one time | ||
| 237 | passwords. | ||
| 238 | |||
| 239 | The most automated calculator is the termkey program that runs as a | ||
| 240 | Terminate and Stay Resident (TSR) program on a PC. It scans the | ||
| 241 | screen to find the S/KEY parameters, prompts for the secret pass | ||
| 242 | phrase, and stuffs the one time password into the keyboard buffer. | ||
| 243 | |||
| 244 | Acknowledgements | ||
| 245 | |||
| 246 | The idea behind S/KEY authentication was first proposed by Leslie | ||
| 247 | Lamport [1]. The specific system described was proposed by Phil | ||
| 248 | Karn, who also wrote most of the reference implementation. | ||
| 249 | |||
| 250 | References | ||
| 251 | |||
| 252 | [1] Lamport, L., "Password Authentication with Insecure | ||
| 253 | Communication", Communications of the ACM 24.11, November 1981, | ||
| 254 | 770-772. | ||
| 255 | |||
| 256 | [2] Rivest, R., "The MD4 Message-Digest Algorithm", RFC 1320, MIT and | ||
| 257 | RSA Data Security, Inc., April 1992 | ||
| 258 | |||
| 259 | [3] Haller, N., "The S/KEY One-Time Password System", Proceedings of | ||
| 260 | the ISOC Symposium on Network and Distributed System Security, | ||
| 261 | February 1994, San Diego, CA | ||
| 262 | |||
| 263 | [4] Haller, N., and R. Atkinson, "On Internet Authentication", RFC | ||
| 264 | 1704, Bell Communications Research and Naval Research Laboratory, | ||
| 265 | October 1994 | ||
| 266 | |||
| 267 | |||
| 268 | |||
| 269 | |||
| 270 | |||
| 271 | |||
| 272 | |||
| 273 | |||
| 274 | |||
| 275 | |||
| 276 | |||
| 277 | |||
| 278 | |||
| 279 | |||
| 280 | |||
| 281 | |||
| 282 | Haller [Page 5] | ||
| 283 | |||
| 284 | RFC 1760 The S/KEY One-Time Password System February 1995 | ||
| 285 | |||
| 286 | |||
| 287 | Security Considerations | ||
| 288 | |||
| 289 | This entire document is about Security Considerations. | ||
| 290 | |||
| 291 | Author's Address | ||
| 292 | |||
| 293 | Neil Haller | ||
| 294 | Bellcore | ||
| 295 | MRE 2Q-280 | ||
| 296 | 445 South Street | ||
| 297 | Morristown, NJ, 07960-6438, USA | ||
| 298 | |||
| 299 | Phone: +1 201 829-4478 | ||
| 300 | Fax: +1 201 829-2504 | ||
| 301 | EMail: nmh@bellcore.com | ||
| 302 | |||
| 303 | |||
| 304 | |||
| 305 | |||
| 306 | |||
| 307 | |||
| 308 | |||
| 309 | |||
| 310 | |||
| 311 | |||
| 312 | |||
| 313 | |||
| 314 | |||
| 315 | |||
| 316 | |||
| 317 | |||
| 318 | |||
| 319 | |||
| 320 | |||
| 321 | |||
| 322 | |||
| 323 | |||
| 324 | |||
| 325 | |||
| 326 | |||
| 327 | |||
| 328 | |||
| 329 | |||
| 330 | |||
| 331 | |||
| 332 | |||
| 333 | |||
| 334 | |||
| 335 | |||
| 336 | |||
| 337 | |||
| 338 | Haller [Page 6] | ||
| 339 | |||
| 340 | RFC 1760 The S/KEY One-Time Password System February 1995 | ||
| 341 | |||
| 342 | |||
| 343 | Dictionary for Converting Between S/KEY 6-Word and Binary Formats | ||
| 344 | |||
| 345 | This dictionary is from the module put.c. The code for this module, | ||
| 346 | and an implementation of the entire S/KEY One Time Password System is | ||
| 347 | available by anonymous ftp from ftp.bellcore.com in the directory | ||
| 348 | pub/nmh/skey. | ||
| 349 | |||
| 350 | |||
| 351 | { "A", "ABE", "ACE", "ACT", "AD", "ADA", "ADD", | ||
| 352 | "AGO", "AID", "AIM", "AIR", "ALL", "ALP", "AM", "AMY", | ||
| 353 | "AN", "ANA", "AND", "ANN", "ANT", "ANY", "APE", "APS", | ||
| 354 | "APT", "ARC", "ARE", "ARK", "ARM", "ART", "AS", "ASH", | ||
| 355 | "ASK", "AT", "ATE", "AUG", "AUK", "AVE", "AWE", "AWK", | ||
| 356 | "AWL", "AWN", "AX", "AYE", "BAD", "BAG", "BAH", "BAM", | ||
| 357 | "BAN", "BAR", "BAT", "BAY", "BE", "BED", "BEE", "BEG", | ||
| 358 | "BEN", "BET", "BEY", "BIB", "BID", "BIG", "BIN", "BIT", | ||
| 359 | "BOB", "BOG", "BON", "BOO", "BOP", "BOW", "BOY", "BUB", | ||
| 360 | "BUD", "BUG", "BUM", "BUN", "BUS", "BUT", "BUY", "BY", | ||
| 361 | "BYE", "CAB", "CAL", "CAM", "CAN", "CAP", "CAR", "CAT", | ||
| 362 | "CAW", "COD", "COG", "COL", "CON", "COO", "COP", "COT", | ||
| 363 | "COW", "COY", "CRY", "CUB", "CUE", "CUP", "CUR", "CUT", | ||
| 364 | "DAB", "DAD", "DAM", "DAN", "DAR", "DAY", "DEE", "DEL", | ||
| 365 | "DEN", "DES", "DEW", "DID", "DIE", "DIG", "DIN", "DIP", | ||
| 366 | "DO", "DOE", "DOG", "DON", "DOT", "DOW", "DRY", "DUB", | ||
| 367 | "DUD", "DUE", "DUG", "DUN", "EAR", "EAT", "ED", "EEL", | ||
| 368 | "EGG", "EGO", "ELI", "ELK", "ELM", "ELY", "EM", "END", | ||
| 369 | "EST", "ETC", "EVA", "EVE", "EWE", "EYE", "FAD", "FAN", | ||
| 370 | "FAR", "FAT", "FAY", "FED", "FEE", "FEW", "FIB", "FIG", | ||
| 371 | "FIN", "FIR", "FIT", "FLO", "FLY", "FOE", "FOG", "FOR", | ||
| 372 | "FRY", "FUM", "FUN", "FUR", "GAB", "GAD", "GAG", "GAL", | ||
| 373 | "GAM", "GAP", "GAS", "GAY", "GEE", "GEL", "GEM", "GET", | ||
| 374 | "GIG", "GIL", "GIN", "GO", "GOT", "GUM", "GUN", "GUS", | ||
| 375 | "GUT", "GUY", "GYM", "GYP", "HA", "HAD", "HAL", "HAM", | ||
| 376 | "HAN", "HAP", "HAS", "HAT", "HAW", "HAY", "HE", "HEM", | ||
| 377 | "HEN", "HER", "HEW", "HEY", "HI", "HID", "HIM", "HIP", | ||
| 378 | "HIS", "HIT", "HO", "HOB", "HOC", "HOE", "HOG", "HOP", | ||
| 379 | "HOT", "HOW", "HUB", "HUE", "HUG", "HUH", "HUM", "HUT", | ||
| 380 | "I", "ICY", "IDA", "IF", "IKE", "ILL", "INK", "INN", | ||
| 381 | "IO", "ION", "IQ", "IRA", "IRE", "IRK", "IS", "IT", | ||
| 382 | "ITS", "IVY", "JAB", "JAG", "JAM", "JAN", "JAR", "JAW", | ||
| 383 | "JAY", "JET", "JIG", "JIM", "JO", "JOB", "JOE", "JOG", | ||
| 384 | "JOT", "JOY", "JUG", "JUT", "KAY", "KEG", "KEN", "KEY", | ||
| 385 | "KID", "KIM", "KIN", "KIT", "LA", "LAB", "LAC", "LAD", | ||
| 386 | "LAG", "LAM", "LAP", "LAW", "LAY", "LEA", "LED", "LEE", | ||
| 387 | "LEG", "LEN", "LEO", "LET", "LEW", "LID", "LIE", "LIN", | ||
| 388 | "LIP", "LIT", "LO", "LOB", "LOG", "LOP", "LOS", "LOT", | ||
| 389 | "LOU", "LOW", "LOY", "LUG", "LYE", "MA", "MAC", "MAD", | ||
| 390 | "MAE", "MAN", "MAO", "MAP", "MAT", "MAW", "MAY", "ME", | ||
| 391 | |||
| 392 | |||
| 393 | |||
| 394 | Haller [Page 7] | ||
| 395 | |||
| 396 | RFC 1760 The S/KEY One-Time Password System February 1995 | ||
| 397 | |||
| 398 | |||
| 399 | "MEG", "MEL", "MEN", "MET", "MEW", "MID", "MIN", "MIT", | ||
| 400 | "MOB", "MOD", "MOE", "MOO", "MOP", "MOS", "MOT", "MOW", | ||
| 401 | "MUD", "MUG", "MUM", "MY", "NAB", "NAG", "NAN", "NAP", | ||
| 402 | "NAT", "NAY", "NE", "NED", "NEE", "NET", "NEW", "NIB", | ||
| 403 | "NIL", "NIP", "NIT", "NO", "NOB", "NOD", "NON", "NOR", | ||
| 404 | "NOT", "NOV", "NOW", "NU", "NUN", "NUT", "O", "OAF", | ||
| 405 | "OAK", "OAR", "OAT", "ODD", "ODE", "OF", "OFF", "OFT", | ||
| 406 | "OH", "OIL", "OK", "OLD", "ON", "ONE", "OR", "ORB", | ||
| 407 | "ORE", "ORR", "OS", "OTT", "OUR", "OUT", "OVA", "OW", | ||
| 408 | "OWE", "OWL", "OWN", "OX", "PA", "PAD", "PAL", "PAM", | ||
| 409 | "PAN", "PAP", "PAR", "PAT", "PAW", "PAY", "PEA", "PEG", | ||
| 410 | "PEN", "PEP", "PER", "PET", "PEW", "PHI", "PI", "PIE", | ||
| 411 | "PIN", "PIT", "PLY", "PO", "POD", "POE", "POP", "POT", | ||
| 412 | "POW", "PRO", "PRY", "PUB", "PUG", "PUN", "PUP", "PUT", | ||
| 413 | "QUO", "RAG", "RAM", "RAN", "RAP", "RAT", "RAW", "RAY", | ||
| 414 | "REB", "RED", "REP", "RET", "RIB", "RID", "RIG", "RIM", | ||
| 415 | "RIO", "RIP", "ROB", "ROD", "ROE", "RON", "ROT", "ROW", | ||
| 416 | "ROY", "RUB", "RUE", "RUG", "RUM", "RUN", "RYE", "SAC", | ||
| 417 | "SAD", "SAG", "SAL", "SAM", "SAN", "SAP", "SAT", "SAW", | ||
| 418 | "SAY", "SEA", "SEC", "SEE", "SEN", "SET", "SEW", "SHE", | ||
| 419 | "SHY", "SIN", "SIP", "SIR", "SIS", "SIT", "SKI", "SKY", | ||
| 420 | "SLY", "SO", "SOB", "SOD", "SON", "SOP", "SOW", "SOY", | ||
| 421 | "SPA", "SPY", "SUB", "SUD", "SUE", "SUM", "SUN", "SUP", | ||
| 422 | "TAB", "TAD", "TAG", "TAN", "TAP", "TAR", "TEA", "TED", | ||
| 423 | "TEE", "TEN", "THE", "THY", "TIC", "TIE", "TIM", "TIN", | ||
| 424 | "TIP", "TO", "TOE", "TOG", "TOM", "TON", "TOO", "TOP", | ||
| 425 | "TOW", "TOY", "TRY", "TUB", "TUG", "TUM", "TUN", "TWO", | ||
| 426 | "UN", "UP", "US", "USE", "VAN", "VAT", "VET", "VIE", | ||
| 427 | "WAD", "WAG", "WAR", "WAS", "WAY", "WE", "WEB", "WED", | ||
| 428 | "WEE", "WET", "WHO", "WHY", "WIN", "WIT", "WOK", "WON", | ||
| 429 | "WOO", "WOW", "WRY", "WU", "YAM", "YAP", "YAW", "YE", | ||
| 430 | "YEA", "YES", "YET", "YOU", "ABED", "ABEL", "ABET", "ABLE", | ||
| 431 | "ABUT", "ACHE", "ACID", "ACME", "ACRE", "ACTA", "ACTS", "ADAM", | ||
| 432 | "ADDS", "ADEN", "AFAR", "AFRO", "AGEE", "AHEM", "AHOY", "AIDA", | ||
| 433 | "AIDE", "AIDS", "AIRY", "AJAR", "AKIN", "ALAN", "ALEC", "ALGA", | ||
| 434 | "ALIA", "ALLY", "ALMA", "ALOE", "ALSO", "ALTO", "ALUM", "ALVA", | ||
| 435 | "AMEN", "AMES", "AMID", "AMMO", "AMOK", "AMOS", "AMRA", "ANDY", | ||
| 436 | "ANEW", "ANNA", "ANNE", "ANTE", "ANTI", "AQUA", "ARAB", "ARCH", | ||
| 437 | "AREA", "ARGO", "ARID", "ARMY", "ARTS", "ARTY", "ASIA", "ASKS", | ||
| 438 | "ATOM", "AUNT", "AURA", "AUTO", "AVER", "AVID", "AVIS", "AVON", | ||
| 439 | "AVOW", "AWAY", "AWRY", "BABE", "BABY", "BACH", "BACK", "BADE", | ||
| 440 | "BAIL", "BAIT", "BAKE", "BALD", "BALE", "BALI", "BALK", "BALL", | ||
| 441 | "BALM", "BAND", "BANE", "BANG", "BANK", "BARB", "BARD", "BARE", | ||
| 442 | "BARK", "BARN", "BARR", "BASE", "BASH", "BASK", "BASS", "BATE", | ||
| 443 | "BATH", "BAWD", "BAWL", "BEAD", "BEAK", "BEAM", "BEAN", "BEAR", | ||
| 444 | "BEAT", "BEAU", "BECK", "BEEF", "BEEN", "BEER", "BEET", "BELA", | ||
| 445 | "BELL", "BELT", "BEND", "BENT", "BERG", "BERN", "BERT", "BESS", | ||
| 446 | "BEST", "BETA", "BETH", "BHOY", "BIAS", "BIDE", "BIEN", "BILE", | ||
| 447 | |||
| 448 | |||
| 449 | |||
| 450 | Haller [Page 8] | ||
| 451 | |||
| 452 | RFC 1760 The S/KEY One-Time Password System February 1995 | ||
| 453 | |||
| 454 | |||
| 455 | "BILK", "BILL", "BIND", "BING", "BIRD", "BITE", "BITS", "BLAB", | ||
| 456 | "BLAT", "BLED", "BLEW", "BLOB", "BLOC", "BLOT", "BLOW", "BLUE", | ||
| 457 | "BLUM", "BLUR", "BOAR", "BOAT", "BOCA", "BOCK", "BODE", "BODY", | ||
| 458 | "BOGY", "BOHR", "BOIL", "BOLD", "BOLO", "BOLT", "BOMB", "BONA", | ||
| 459 | "BOND", "BONE", "BONG", "BONN", "BONY", "BOOK", "BOOM", "BOON", | ||
| 460 | "BOOT", "BORE", "BORG", "BORN", "BOSE", "BOSS", "BOTH", "BOUT", | ||
| 461 | "BOWL", "BOYD", "BRAD", "BRAE", "BRAG", "BRAN", "BRAY", "BRED", | ||
| 462 | "BREW", "BRIG", "BRIM", "BROW", "BUCK", "BUDD", "BUFF", "BULB", | ||
| 463 | "BULK", "BULL", "BUNK", "BUNT", "BUOY", "BURG", "BURL", "BURN", | ||
| 464 | "BURR", "BURT", "BURY", "BUSH", "BUSS", "BUST", "BUSY", "BYTE", | ||
| 465 | "CADY", "CAFE", "CAGE", "CAIN", "CAKE", "CALF", "CALL", "CALM", | ||
| 466 | "CAME", "CANE", "CANT", "CARD", "CARE", "CARL", "CARR", "CART", | ||
| 467 | "CASE", "CASH", "CASK", "CAST", "CAVE", "CEIL", "CELL", "CENT", | ||
| 468 | "CERN", "CHAD", "CHAR", "CHAT", "CHAW", "CHEF", "CHEN", "CHEW", | ||
| 469 | "CHIC", "CHIN", "CHOU", "CHOW", "CHUB", "CHUG", "CHUM", "CITE", | ||
| 470 | "CITY", "CLAD", "CLAM", "CLAN", "CLAW", "CLAY", "CLOD", "CLOG", | ||
| 471 | "CLOT", "CLUB", "CLUE", "COAL", "COAT", "COCA", "COCK", "COCO", | ||
| 472 | "CODA", "CODE", "CODY", "COED", "COIL", "COIN", "COKE", "COLA", | ||
| 473 | "COLD", "COLT", "COMA", "COMB", "COME", "COOK", "COOL", "COON", | ||
| 474 | "COOT", "CORD", "CORE", "CORK", "CORN", "COST", "COVE", "COWL", | ||
| 475 | "CRAB", "CRAG", "CRAM", "CRAY", "CREW", "CRIB", "CROW", "CRUD", | ||
| 476 | "CUBA", "CUBE", "CUFF", "CULL", "CULT", "CUNY", "CURB", "CURD", | ||
| 477 | "CURE", "CURL", "CURT", "CUTS", "DADE", "DALE", "DAME", "DANA", | ||
| 478 | "DANE", "DANG", "DANK", "DARE", "DARK", "DARN", "DART", "DASH", | ||
| 479 | "DATA", "DATE", "DAVE", "DAVY", "DAWN", "DAYS", "DEAD", "DEAF", | ||
| 480 | "DEAL", "DEAN", "DEAR", "DEBT", "DECK", "DEED", "DEEM", "DEER", | ||
| 481 | "DEFT", "DEFY", "DELL", "DENT", "DENY", "DESK", "DIAL", "DICE", | ||
| 482 | "DIED", "DIET", "DIME", "DINE", "DING", "DINT", "DIRE", "DIRT", | ||
| 483 | "DISC", "DISH", "DISK", "DIVE", "DOCK", "DOES", "DOLE", "DOLL", | ||
| 484 | "DOLT", "DOME", "DONE", "DOOM", "DOOR", "DORA", "DOSE", "DOTE", | ||
| 485 | "DOUG", "DOUR", "DOVE", "DOWN", "DRAB", "DRAG", "DRAM", "DRAW", | ||
| 486 | "DREW", "DRUB", "DRUG", "DRUM", "DUAL", "DUCK", "DUCT", "DUEL", | ||
| 487 | "DUET", "DUKE", "DULL", "DUMB", "DUNE", "DUNK", "DUSK", "DUST", | ||
| 488 | "DUTY", "EACH", "EARL", "EARN", "EASE", "EAST", "EASY", "EBEN", | ||
| 489 | "ECHO", "EDDY", "EDEN", "EDGE", "EDGY", "EDIT", "EDNA", "EGAN", | ||
| 490 | "ELAN", "ELBA", "ELLA", "ELSE", "EMIL", "EMIT", "EMMA", "ENDS", | ||
| 491 | "ERIC", "EROS", "EVEN", "EVER", "EVIL", "EYED", "FACE", "FACT", | ||
| 492 | "FADE", "FAIL", "FAIN", "FAIR", "FAKE", "FALL", "FAME", "FANG", | ||
| 493 | "FARM", "FAST", "FATE", "FAWN", "FEAR", "FEAT", "FEED", "FEEL", | ||
| 494 | "FEET", "FELL", "FELT", "FEND", "FERN", "FEST", "FEUD", "FIEF", | ||
| 495 | "FIGS", "FILE", "FILL", "FILM", "FIND", "FINE", "FINK", "FIRE", | ||
| 496 | "FIRM", "FISH", "FISK", "FIST", "FITS", "FIVE", "FLAG", "FLAK", | ||
| 497 | "FLAM", "FLAT", "FLAW", "FLEA", "FLED", "FLEW", "FLIT", "FLOC", | ||
| 498 | "FLOG", "FLOW", "FLUB", "FLUE", "FOAL", "FOAM", "FOGY", "FOIL", | ||
| 499 | "FOLD", "FOLK", "FOND", "FONT", "FOOD", "FOOL", "FOOT", "FORD", | ||
| 500 | "FORE", "FORK", "FORM", "FORT", "FOSS", "FOUL", "FOUR", "FOWL", | ||
| 501 | "FRAU", "FRAY", "FRED", "FREE", "FRET", "FREY", "FROG", "FROM", | ||
| 502 | "FUEL", "FULL", "FUME", "FUND", "FUNK", "FURY", "FUSE", "FUSS", | ||
| 503 | |||
| 504 | |||
| 505 | |||
| 506 | Haller [Page 9] | ||
| 507 | |||
| 508 | RFC 1760 The S/KEY One-Time Password System February 1995 | ||
| 509 | |||
| 510 | |||
| 511 | "GAFF", "GAGE", "GAIL", "GAIN", "GAIT", "GALA", "GALE", "GALL", | ||
| 512 | "GALT", "GAME", "GANG", "GARB", "GARY", "GASH", "GATE", "GAUL", | ||
| 513 | "GAUR", "GAVE", "GAWK", "GEAR", "GELD", "GENE", "GENT", "GERM", | ||
| 514 | "GETS", "GIBE", "GIFT", "GILD", "GILL", "GILT", "GINA", "GIRD", | ||
| 515 | "GIRL", "GIST", "GIVE", "GLAD", "GLEE", "GLEN", "GLIB", "GLOB", | ||
| 516 | "GLOM", "GLOW", "GLUE", "GLUM", "GLUT", "GOAD", "GOAL", "GOAT", | ||
| 517 | "GOER", "GOES", "GOLD", "GOLF", "GONE", "GONG", "GOOD", "GOOF", | ||
| 518 | "GORE", "GORY", "GOSH", "GOUT", "GOWN", "GRAB", "GRAD", "GRAY", | ||
| 519 | "GREG", "GREW", "GREY", "GRID", "GRIM", "GRIN", "GRIT", "GROW", | ||
| 520 | "GRUB", "GULF", "GULL", "GUNK", "GURU", "GUSH", "GUST", "GWEN", | ||
| 521 | "GWYN", "HAAG", "HAAS", "HACK", "HAIL", "HAIR", "HALE", "HALF", | ||
| 522 | "HALL", "HALO", "HALT", "HAND", "HANG", "HANK", "HANS", "HARD", | ||
| 523 | "HARK", "HARM", "HART", "HASH", "HAST", "HATE", "HATH", "HAUL", | ||
| 524 | "HAVE", "HAWK", "HAYS", "HEAD", "HEAL", "HEAR", "HEAT", "HEBE", | ||
| 525 | "HECK", "HEED", "HEEL", "HEFT", "HELD", "HELL", "HELM", "HERB", | ||
| 526 | "HERD", "HERE", "HERO", "HERS", "HESS", "HEWN", "HICK", "HIDE", | ||
| 527 | "HIGH", "HIKE", "HILL", "HILT", "HIND", "HINT", "HIRE", "HISS", | ||
| 528 | "HIVE", "HOBO", "HOCK", "HOFF", "HOLD", "HOLE", "HOLM", "HOLT", | ||
| 529 | "HOME", "HONE", "HONK", "HOOD", "HOOF", "HOOK", "HOOT", "HORN", | ||
| 530 | "HOSE", "HOST", "HOUR", "HOVE", "HOWE", "HOWL", "HOYT", "HUCK", | ||
| 531 | "HUED", "HUFF", "HUGE", "HUGH", "HUGO", "HULK", "HULL", "HUNK", | ||
| 532 | "HUNT", "HURD", "HURL", "HURT", "HUSH", "HYDE", "HYMN", "IBIS", | ||
| 533 | "ICON", "IDEA", "IDLE", "IFFY", "INCA", "INCH", "INTO", "IONS", | ||
| 534 | "IOTA", "IOWA", "IRIS", "IRMA", "IRON", "ISLE", "ITCH", "ITEM", | ||
| 535 | "IVAN", "JACK", "JADE", "JAIL", "JAKE", "JANE", "JAVA", "JEAN", | ||
| 536 | "JEFF", "JERK", "JESS", "JEST", "JIBE", "JILL", "JILT", "JIVE", | ||
| 537 | "JOAN", "JOBS", "JOCK", "JOEL", "JOEY", "JOHN", "JOIN", "JOKE", | ||
| 538 | "JOLT", "JOVE", "JUDD", "JUDE", "JUDO", "JUDY", "JUJU", "JUKE", | ||
| 539 | "JULY", "JUNE", "JUNK", "JUNO", "JURY", "JUST", "JUTE", "KAHN", | ||
| 540 | "KALE", "KANE", "KANT", "KARL", "KATE", "KEEL", "KEEN", "KENO", | ||
| 541 | "KENT", "KERN", "KERR", "KEYS", "KICK", "KILL", "KIND", "KING", | ||
| 542 | "KIRK", "KISS", "KITE", "KLAN", "KNEE", "KNEW", "KNIT", "KNOB", | ||
| 543 | "KNOT", "KNOW", "KOCH", "KONG", "KUDO", "KURD", "KURT", "KYLE", | ||
| 544 | "LACE", "LACK", "LACY", "LADY", "LAID", "LAIN", "LAIR", "LAKE", | ||
| 545 | "LAMB", "LAME", "LAND", "LANE", "LANG", "LARD", "LARK", "LASS", | ||
| 546 | "LAST", "LATE", "LAUD", "LAVA", "LAWN", "LAWS", "LAYS", "LEAD", | ||
| 547 | "LEAF", "LEAK", "LEAN", "LEAR", "LEEK", "LEER", "LEFT", "LEND", | ||
| 548 | "LENS", "LENT", "LEON", "LESK", "LESS", "LEST", "LETS", "LIAR", | ||
| 549 | "LICE", "LICK", "LIED", "LIEN", "LIES", "LIEU", "LIFE", "LIFT", | ||
| 550 | "LIKE", "LILA", "LILT", "LILY", "LIMA", "LIMB", "LIME", "LIND", | ||
| 551 | "LINE", "LINK", "LINT", "LION", "LISA", "LIST", "LIVE", "LOAD", | ||
| 552 | "LOAF", "LOAM", "LOAN", "LOCK", "LOFT", "LOGE", "LOIS", "LOLA", | ||
| 553 | "LONE", "LONG", "LOOK", "LOON", "LOOT", "LORD", "LORE", "LOSE", | ||
| 554 | "LOSS", "LOST", "LOUD", "LOVE", "LOWE", "LUCK", "LUCY", "LUGE", | ||
| 555 | "LUKE", "LULU", "LUND", "LUNG", "LURA", "LURE", "LURK", "LUSH", | ||
| 556 | "LUST", "LYLE", "LYNN", "LYON", "LYRA", "MACE", "MADE", "MAGI", | ||
| 557 | "MAID", "MAIL", "MAIN", "MAKE", "MALE", "MALI", "MALL", "MALT", | ||
| 558 | "MANA", "MANN", "MANY", "MARC", "MARE", "MARK", "MARS", "MART", | ||
| 559 | |||
| 560 | |||
| 561 | |||
| 562 | Haller [Page 10] | ||
| 563 | |||
| 564 | RFC 1760 The S/KEY One-Time Password System February 1995 | ||
| 565 | |||
| 566 | |||
| 567 | "MARY", "MASH", "MASK", "MASS", "MAST", "MATE", "MATH", "MAUL", | ||
| 568 | "MAYO", "MEAD", "MEAL", "MEAN", "MEAT", "MEEK", "MEET", "MELD", | ||
| 569 | "MELT", "MEMO", "MEND", "MENU", "MERT", "MESH", "MESS", "MICE", | ||
| 570 | "MIKE", "MILD", "MILE", "MILK", "MILL", "MILT", "MIMI", "MIND", | ||
| 571 | "MINE", "MINI", "MINK", "MINT", "MIRE", "MISS", "MIST", "MITE", | ||
| 572 | "MITT", "MOAN", "MOAT", "MOCK", "MODE", "MOLD", "MOLE", "MOLL", | ||
| 573 | "MOLT", "MONA", "MONK", "MONT", "MOOD", "MOON", "MOOR", "MOOT", | ||
| 574 | "MORE", "MORN", "MORT", "MOSS", "MOST", "MOTH", "MOVE", "MUCH", | ||
| 575 | "MUCK", "MUDD", "MUFF", "MULE", "MULL", "MURK", "MUSH", "MUST", | ||
| 576 | "MUTE", "MUTT", "MYRA", "MYTH", "NAGY", "NAIL", "NAIR", "NAME", | ||
| 577 | "NARY", "NASH", "NAVE", "NAVY", "NEAL", "NEAR", "NEAT", "NECK", | ||
| 578 | "NEED", "NEIL", "NELL", "NEON", "NERO", "NESS", "NEST", "NEWS", | ||
| 579 | "NEWT", "NIBS", "NICE", "NICK", "NILE", "NINA", "NINE", "NOAH", | ||
| 580 | "NODE", "NOEL", "NOLL", "NONE", "NOOK", "NOON", "NORM", "NOSE", | ||
| 581 | "NOTE", "NOUN", "NOVA", "NUDE", "NULL", "NUMB", "OATH", "OBEY", | ||
| 582 | "OBOE", "ODIN", "OHIO", "OILY", "OINT", "OKAY", "OLAF", "OLDY", | ||
| 583 | "OLGA", "OLIN", "OMAN", "OMEN", "OMIT", "ONCE", "ONES", "ONLY", | ||
| 584 | "ONTO", "ONUS", "ORAL", "ORGY", "OSLO", "OTIS", "OTTO", "OUCH", | ||
| 585 | "OUST", "OUTS", "OVAL", "OVEN", "OVER", "OWLY", "OWNS", "QUAD", | ||
| 586 | "QUIT", "QUOD", "RACE", "RACK", "RACY", "RAFT", "RAGE", "RAID", | ||
| 587 | "RAIL", "RAIN", "RAKE", "RANK", "RANT", "RARE", "RASH", "RATE", | ||
| 588 | "RAVE", "RAYS", "READ", "REAL", "REAM", "REAR", "RECK", "REED", | ||
| 589 | "REEF", "REEK", "REEL", "REID", "REIN", "RENA", "REND", "RENT", | ||
| 590 | "REST", "RICE", "RICH", "RICK", "RIDE", "RIFT", "RILL", "RIME", | ||
| 591 | "RING", "RINK", "RISE", "RISK", "RITE", "ROAD", "ROAM", "ROAR", | ||
| 592 | "ROBE", "ROCK", "RODE", "ROIL", "ROLL", "ROME", "ROOD", "ROOF", | ||
| 593 | "ROOK", "ROOM", "ROOT", "ROSA", "ROSE", "ROSS", "ROSY", "ROTH", | ||
| 594 | "ROUT", "ROVE", "ROWE", "ROWS", "RUBE", "RUBY", "RUDE", "RUDY", | ||
| 595 | "RUIN", "RULE", "RUNG", "RUNS", "RUNT", "RUSE", "RUSH", "RUSK", | ||
| 596 | "RUSS", "RUST", "RUTH", "SACK", "SAFE", "SAGE", "SAID", "SAIL", | ||
| 597 | "SALE", "SALK", "SALT", "SAME", "SAND", "SANE", "SANG", "SANK", | ||
| 598 | "SARA", "SAUL", "SAVE", "SAYS", "SCAN", "SCAR", "SCAT", "SCOT", | ||
| 599 | "SEAL", "SEAM", "SEAR", "SEAT", "SEED", "SEEK", "SEEM", "SEEN", | ||
| 600 | "SEES", "SELF", "SELL", "SEND", "SENT", "SETS", "SEWN", "SHAG", | ||
| 601 | "SHAM", "SHAW", "SHAY", "SHED", "SHIM", "SHIN", "SHOD", "SHOE", | ||
| 602 | "SHOT", "SHOW", "SHUN", "SHUT", "SICK", "SIDE", "SIFT", "SIGH", | ||
| 603 | "SIGN", "SILK", "SILL", "SILO", "SILT", "SINE", "SING", "SINK", | ||
| 604 | "SIRE", "SITE", "SITS", "SITU", "SKAT", "SKEW", "SKID", "SKIM", | ||
| 605 | "SKIN", "SKIT", "SLAB", "SLAM", "SLAT", "SLAY", "SLED", "SLEW", | ||
| 606 | "SLID", "SLIM", "SLIT", "SLOB", "SLOG", "SLOT", "SLOW", "SLUG", | ||
| 607 | "SLUM", "SLUR", "SMOG", "SMUG", "SNAG", "SNOB", "SNOW", "SNUB", | ||
| 608 | "SNUG", "SOAK", "SOAR", "SOCK", "SODA", "SOFA", "SOFT", "SOIL", | ||
| 609 | "SOLD", "SOME", "SONG", "SOON", "SOOT", "SORE", "SORT", "SOUL", | ||
| 610 | "SOUR", "SOWN", "STAB", "STAG", "STAN", "STAR", "STAY", "STEM", | ||
| 611 | "STEW", "STIR", "STOW", "STUB", "STUN", "SUCH", "SUDS", "SUIT", | ||
| 612 | "SULK", "SUMS", "SUNG", "SUNK", "SURE", "SURF", "SWAB", "SWAG", | ||
| 613 | "SWAM", "SWAN", "SWAT", "SWAY", "SWIM", "SWUM", "TACK", "TACT", | ||
| 614 | "TAIL", "TAKE", "TALE", "TALK", "TALL", "TANK", "TASK", "TATE", | ||
| 615 | |||
| 616 | |||
| 617 | |||
| 618 | Haller [Page 11] | ||
| 619 | |||
| 620 | RFC 1760 The S/KEY One-Time Password System February 1995 | ||
| 621 | |||
| 622 | |||
| 623 | "TAUT", "TEAL", "TEAM", "TEAR", "TECH", "TEEM", "TEEN", "TEET", | ||
| 624 | "TELL", "TEND", "TENT", "TERM", "TERN", "TESS", "TEST", "THAN", | ||
| 625 | "THAT", "THEE", "THEM", "THEN", "THEY", "THIN", "THIS", "THUD", | ||
| 626 | "THUG", "TICK", "TIDE", "TIDY", "TIED", "TIER", "TILE", "TILL", | ||
| 627 | "TILT", "TIME", "TINA", "TINE", "TINT", "TINY", "TIRE", "TOAD", | ||
| 628 | "TOGO", "TOIL", "TOLD", "TOLL", "TONE", "TONG", "TONY", "TOOK", | ||
| 629 | "TOOL", "TOOT", "TORE", "TORN", "TOTE", "TOUR", "TOUT", "TOWN", | ||
| 630 | "TRAG", "TRAM", "TRAY", "TREE", "TREK", "TRIG", "TRIM", "TRIO", | ||
| 631 | "TROD", "TROT", "TROY", "TRUE", "TUBA", "TUBE", "TUCK", "TUFT", | ||
| 632 | "TUNA", "TUNE", "TUNG", "TURF", "TURN", "TUSK", "TWIG", "TWIN", | ||
| 633 | "TWIT", "ULAN", "UNIT", "URGE", "USED", "USER", "USES", "UTAH", | ||
| 634 | "VAIL", "VAIN", "VALE", "VARY", "VASE", "VAST", "VEAL", "VEDA", | ||
| 635 | "VEIL", "VEIN", "VEND", "VENT", "VERB", "VERY", "VETO", "VICE", | ||
| 636 | "VIEW", "VINE", "VISE", "VOID", "VOLT", "VOTE", "WACK", "WADE", | ||
| 637 | "WAGE", "WAIL", "WAIT", "WAKE", "WALE", "WALK", "WALL", "WALT", | ||
| 638 | "WAND", "WANE", "WANG", "WANT", "WARD", "WARM", "WARN", "WART", | ||
| 639 | "WASH", "WAST", "WATS", "WATT", "WAVE", "WAVY", "WAYS", "WEAK", | ||
| 640 | "WEAL", "WEAN", "WEAR", "WEED", "WEEK", "WEIR", "WELD", "WELL", | ||
| 641 | "WELT", "WENT", "WERE", "WERT", "WEST", "WHAM", "WHAT", "WHEE", | ||
| 642 | "WHEN", "WHET", "WHOA", "WHOM", "WICK", "WIFE", "WILD", "WILL", | ||
| 643 | "WIND", "WINE", "WING", "WINK", "WINO", "WIRE", "WISE", "WISH", | ||
| 644 | "WITH", "WOLF", "WONT", "WOOD", "WOOL", "WORD", "WORE", "WORK", | ||
| 645 | "WORM", "WORN", "WOVE", "WRIT", "WYNN", "YALE", "YANG", "YANK", | ||
| 646 | "YARD", "YARN", "YAWL", "YAWN", "YEAH", "YEAR", "YELL", "YOGA", | ||
| 647 | "YOKE" }; | ||
| 648 | |||
| 649 | |||
| 650 | |||
| 651 | |||
| 652 | |||
| 653 | |||
| 654 | |||
| 655 | |||
| 656 | |||
| 657 | |||
| 658 | |||
| 659 | |||
| 660 | |||
| 661 | |||
| 662 | |||
| 663 | |||
| 664 | |||
| 665 | |||
| 666 | |||
| 667 | |||
| 668 | |||
| 669 | |||
| 670 | |||
| 671 | |||
| 672 | |||
| 673 | |||
| 674 | Haller [Page 12] | ||
| 675 | |||
diff --git a/docs/rfc2289.txt b/docs/rfc2289.txt new file mode 100644 index 0000000..8d1d722 --- /dev/null +++ b/docs/rfc2289.txt | |||
| @@ -0,0 +1,1403 @@ | |||
| 1 | |||
| 2 | |||
| 3 | |||
| 4 | |||
| 5 | |||
| 6 | |||
| 7 | Network Working Group N. Haller | ||
| 8 | Request for Comments: 2289 Bellcore | ||
| 9 | Obsoletes: 1938 C. Metz | ||
| 10 | Category: Standards Track Kaman Sciences Corporation | ||
| 11 | P. Nesser | ||
| 12 | Nesser & Nesser Consulting | ||
| 13 | M. Straw | ||
| 14 | Bellcore | ||
| 15 | February 1998 | ||
| 16 | |||
| 17 | |||
| 18 | A One-Time Password System | ||
| 19 | |||
| 20 | Status of this Memo | ||
| 21 | |||
| 22 | This document specifies an Internet standards track protocol for the | ||
| 23 | Internet community, and requests discussion and suggestions for | ||
| 24 | improvements. Please refer to the current edition of the "Internet | ||
| 25 | Official Protocol Standards" (STD 1) for the standardization state | ||
| 26 | and status of this protocol. Distribution of this memo is unlimited. | ||
| 27 | |||
| 28 | Copyright Notice | ||
| 29 | |||
| 30 | Copyright (C) The Internet Society (1998). All Rights Reserved. | ||
| 31 | |||
| 32 | 1.0 ABSTRACT | ||
| 33 | |||
| 34 | This document describes a one-time password authentication system | ||
| 35 | (OTP). The system provides authentication for system access (login) | ||
| 36 | and other applications requiring authentication that is secure | ||
| 37 | against passive attacks based on replaying captured reusable | ||
| 38 | passwords. OTP evolved from the S/KEY (S/KEY is a trademark of | ||
| 39 | Bellcore) One-Time Password System that was released by Bellcore and | ||
| 40 | is described in references [3] and [5]. | ||
| 41 | |||
| 42 | 2.0 OVERVIEW | ||
| 43 | |||
| 44 | One form of attack on networked computing systems is eavesdropping on | ||
| 45 | network connections to obtain authentication information such as the | ||
| 46 | login IDs and passwords of legitimate users. Once this information is | ||
| 47 | captured, it can be used at a later time to gain access to the | ||
| 48 | system. One-time password systems are designed to counter this type | ||
| 49 | of attack, called a "replay attack" [4]. | ||
| 50 | |||
| 51 | The authentication system described in this document uses a secret | ||
| 52 | pass-phrase to generate a sequence of one-time (single use) | ||
| 53 | passwords. With this system, the user's secret pass-phrase never | ||
| 54 | needs to cross the network at any time such as during authentication | ||
| 55 | |||
| 56 | |||
| 57 | |||
| 58 | Haller Standards Track [Page 1] | ||
| 59 | |||
| 60 | RFC 2289 A One-Time Password System February 1998 | ||
| 61 | |||
| 62 | |||
| 63 | or during pass-phrase changes. Thus, it is not vulnerable to replay | ||
| 64 | attacks. Added security is provided by the property that no secret | ||
| 65 | information need be stored on any system, including the server being | ||
| 66 | protected. | ||
| 67 | |||
| 68 | The OTP system protects against external passive attacks against the | ||
| 69 | authentication subsystem. It does not prevent a network eavesdropper | ||
| 70 | from gaining access to private information and does not provide | ||
| 71 | protection against either "social engineering" or active attacks [9]. | ||
| 72 | |||
| 73 | 3.0 INTRODUCTION | ||
| 74 | |||
| 75 | There are two entities in the operation of the OTP one-time password | ||
| 76 | system. The generator must produce the appropriate one-time password | ||
| 77 | from the user's secret pass-phrase and from information provided in | ||
| 78 | the challenge from the server. The server must send a challenge that | ||
| 79 | includes the appropriate generation parameters to the generator, must | ||
| 80 | verify the one-time password received, must store the last valid | ||
| 81 | one-time password it received, and must store the corresponding one- | ||
| 82 | time password sequence number. The server must also facilitate the | ||
| 83 | changing of the user's secret pass-phrase in a secure manner. | ||
| 84 | |||
| 85 | The OTP system generator passes the user's secret pass-phrase, along | ||
| 86 | with a seed received from the server as part of the challenge, | ||
| 87 | through multiple iterations of a secure hash function to produce a | ||
| 88 | one-time password. After each successful authentication, the number | ||
| 89 | of secure hash function iterations is reduced by one. Thus, a unique | ||
| 90 | sequence of passwords is generated. The server verifies the one-time | ||
| 91 | password received from the generator by computing the secure hash | ||
| 92 | function once and comparing the result with the previously accepted | ||
| 93 | one-time password. This technique was first suggested by Leslie | ||
| 94 | Lamport [1]. | ||
| 95 | |||
| 96 | 4.0 REQUIREMENTS TERMINOLOGY | ||
| 97 | |||
| 98 | In this document, the words that are used to define the significance | ||
| 99 | of each particular requirement are usually capitalized. These words | ||
| 100 | are: | ||
| 101 | |||
| 102 | - MUST | ||
| 103 | |||
| 104 | This word or the adjective "REQUIRED" means that the item is an | ||
| 105 | absolute requirement of the specification. | ||
| 106 | |||
| 107 | |||
| 108 | |||
| 109 | |||
| 110 | |||
| 111 | |||
| 112 | |||
| 113 | |||
| 114 | Haller Standards Track [Page 2] | ||
| 115 | |||
| 116 | RFC 2289 A One-Time Password System February 1998 | ||
| 117 | |||
| 118 | |||
| 119 | - SHOULD | ||
| 120 | |||
| 121 | This word or the adjective "RECOMMENDED" means that there might | ||
| 122 | exist valid reasons in particular circumstances to ignore this | ||
| 123 | item, but the full implications should be understood and the case | ||
| 124 | carefully weighed before taking a different course. | ||
| 125 | |||
| 126 | - MAY | ||
| 127 | |||
| 128 | This word or the adjective "OPTIONAL" means that this item is | ||
| 129 | truly optional. One vendor might choose to include the item | ||
| 130 | because a particular marketplace requires it or because it | ||
| 131 | enhances the product, for example; another vendor may omit the | ||
| 132 | same item. | ||
| 133 | |||
| 134 | 5.0 SECURE HASH FUNCTION | ||
| 135 | |||
| 136 | The security of the OTP system is based on the non-invertability of a | ||
| 137 | secure hash function. Such a function must be tractable to compute in | ||
| 138 | the forward direction, but computationally infeasible to invert. | ||
| 139 | |||
| 140 | The interfaces are currently defined for three such hash algorithms, | ||
| 141 | MD4 [2] and MD5 [6] by Ronald Rivest, and SHA [7] by NIST. All | ||
| 142 | conforming implementations of both server and generators MUST support | ||
| 143 | MD5. They SHOULD support SHA and MAY also support MD4. Clearly, the | ||
| 144 | generator and server must use the same algorithm in order to | ||
| 145 | interoperate. Other hash algorithms may be specified for use with | ||
| 146 | this system by publishing the appropriate interfaces. | ||
| 147 | |||
| 148 | The secure hash algorithms listed above have the property that they | ||
| 149 | accept an input that is arbitrarily long and produce a fixed size | ||
| 150 | output. The OTP system folds this output to 64 bits using the | ||
| 151 | algorithms in the Appendix A. 64 bits is also the length of the one- | ||
| 152 | time passwords. This is believed to be long enough to be secure and | ||
| 153 | short enough to be entered manually (see below, Form of Output) when | ||
| 154 | necessary. | ||
| 155 | |||
| 156 | 6.0 GENERATION OF ONE-TIME PASSWORDS | ||
| 157 | |||
| 158 | This section describes the generation of the one-time passwords. | ||
| 159 | This process consists of an initial step in which all inputs are | ||
| 160 | combined, a computation step where the secure hash function is | ||
| 161 | applied a specified number of times, and an output function where the | ||
| 162 | 64 bit one-time password is converted to a human readable form. | ||
| 163 | |||
| 164 | Appendix C contains examples of the outputs given a collection of | ||
| 165 | inputs. It provides implementors with a means of verification the | ||
| 166 | use of these algorithms. | ||
| 167 | |||
| 168 | |||
| 169 | |||
| 170 | Haller Standards Track [Page 3] | ||
| 171 | |||
| 172 | RFC 2289 A One-Time Password System February 1998 | ||
| 173 | |||
| 174 | |||
| 175 | Initial Step | ||
| 176 | |||
| 177 | In principle, the user's secret pass-phrase may be of any length. To | ||
| 178 | reduce the risk from techniques such as exhaustive search or | ||
| 179 | dictionary attacks, character string pass-phrases MUST contain at | ||
| 180 | least 10 characters (see Form of Inputs below). All implementations | ||
| 181 | MUST support a pass-phrases of at least 63 characters. The secret | ||
| 182 | pass-phrase is frequently, but is not required to be, textual | ||
| 183 | information provided by a user. | ||
| 184 | |||
| 185 | In this step, the pass phrase is concatenated with a seed that is | ||
| 186 | transmitted from the server in clear text. This non-secret seed | ||
| 187 | allows clients to use the same secret pass-phrase on multiple | ||
| 188 | machines (using different seeds) and to safely recycle their secret | ||
| 189 | pass-phrases by changing the seed. | ||
| 190 | |||
| 191 | The result of the concatenation is passed through the secure hash | ||
| 192 | function and then is reduced to 64 bits using one of the function | ||
| 193 | dependent algorithms shown in Appendix A. | ||
| 194 | |||
| 195 | Computation Step | ||
| 196 | |||
| 197 | A sequence of one-time passwords is produced by applying the secure | ||
| 198 | hash function multiple times to the output of the initial step | ||
| 199 | (called S). That is, the first one-time password to be used is | ||
| 200 | produced by passing S through the secure hash function a number of | ||
| 201 | times (N) specified by the user. The next one-time password to be | ||
| 202 | used is generated by passing S though the secure hash function N-1 | ||
| 203 | times. An eavesdropper who has monitored the transmission of a one- | ||
| 204 | time password would not be able to generate the next required | ||
| 205 | password because doing so would mean inverting the hash function. | ||
| 206 | |||
| 207 | Form of Inputs | ||
| 208 | |||
| 209 | The secret pass-phrase is seen only by the OTP generator. To allow | ||
| 210 | interchangeability of generators, all generators MUST support a | ||
| 211 | secret pass-phrase of 10 to 63 characters. Implementations MAY | ||
| 212 | support a longer pass-phrase, but such implementations risk the loss | ||
| 213 | of interchangeability with implementations supporting only the | ||
| 214 | minimum. | ||
| 215 | |||
| 216 | The seed MUST consist of purely alphanumeric characters and MUST be | ||
| 217 | of one to 16 characters in length. The seed is a string of characters | ||
| 218 | that MUST not contain any blanks and SHOULD consist of strictly | ||
| 219 | alphanumeric characters from the ISO-646 Invariant Code Set. The | ||
| 220 | seed MUST be case insensitive and MUST be internally converted to | ||
| 221 | lower case before it is processed. | ||
| 222 | |||
| 223 | |||
| 224 | |||
| 225 | |||
| 226 | Haller Standards Track [Page 4] | ||
| 227 | |||
| 228 | RFC 2289 A One-Time Password System February 1998 | ||
| 229 | |||
| 230 | |||
| 231 | The sequence number and seed together constitute a larger unit of | ||
| 232 | data called the challenge. The challenge gives the generator the | ||
| 233 | parameters it needs to calculate the correct one-time password from | ||
| 234 | the secret pass-phrase. The challenge MUST be in a standard syntax so | ||
| 235 | that automated generators can recognize the challenge in context and | ||
| 236 | extract these parameters. The syntax of the challenge is: | ||
| 237 | |||
| 238 | otp-<algorithm identifier> <sequence integer> <seed> | ||
| 239 | |||
| 240 | The three tokens MUST be separated by a white space (defined as any | ||
| 241 | number of spaces and/or tabs) and the entire challenge string MUST be | ||
| 242 | terminated with either a space or a new line. The string "otp-" MUST | ||
| 243 | be in lower case. The algorithm identifier is case sensitive (the | ||
| 244 | existing identifiers are all lower case), and the seed is case | ||
| 245 | insensitive and converted before use to lower case. If additional | ||
| 246 | algorithms are defined, appropriate identifiers (short, but not | ||
| 247 | limited to three or four characters) must be defined. The currently | ||
| 248 | defined algorithm identifiers are: | ||
| 249 | |||
| 250 | md4 MD4 Message Digest | ||
| 251 | md5 MD5 Message Digest | ||
| 252 | sha1 NIST Secure Hash Algorithm Revision 1 | ||
| 253 | |||
| 254 | An example of an OTP challenge is: otp-md5 487 dog2 | ||
| 255 | |||
| 256 | Form of Output | ||
| 257 | |||
| 258 | The one-time password generated by the above procedure is 64 bits in | ||
| 259 | length. Entering a 64 bit number is a difficult and error prone | ||
| 260 | process. Some generators insert this password into the input stream | ||
| 261 | and some others make it available for system "cut and paste." Still | ||
| 262 | other arrangements require the one-time password to be entered | ||
| 263 | manually. The OTP system is designed to facilitate this manual entry | ||
| 264 | without impeding automatic methods. The one-time password therefore | ||
| 265 | MAY be converted to, and all servers MUST be capable of accepting it | ||
| 266 | as, a sequence of six short (1 to 4 letter) easily typed words that | ||
| 267 | only use characters from ISO-646 IVCS. Each word is chosen from a | ||
| 268 | dictionary of 2048 words; at 11 bits per word, all one-time passwords | ||
| 269 | may be encoded. | ||
| 270 | |||
| 271 | The two extra bits in this encoding are used to store a checksum. | ||
| 272 | The 64 bits of key are broken down into pairs of bits, then these | ||
| 273 | pairs are summed together. The two least significant bits of this sum | ||
| 274 | are encoded in the last two bits of the six word sequence with the | ||
| 275 | least significant bit of the sum as the last bit encoded. All OTP | ||
| 276 | generators MUST calculate this checksum and all OTP servers MUST | ||
| 277 | verify this checksum explicitly as part of the operation of decoding | ||
| 278 | this representation of the one-time password. | ||
| 279 | |||
| 280 | |||
| 281 | |||
| 282 | Haller Standards Track [Page 5] | ||
| 283 | |||
| 284 | RFC 2289 A One-Time Password System February 1998 | ||
| 285 | |||
| 286 | |||
| 287 | Generators that produce the six-word format MUST present the words in | ||
| 288 | upper case with single spaces used as separators. All servers MUST | ||
| 289 | accept six-word format without regard to case and white space used as | ||
| 290 | a separator. The two lines below represent the same one-time | ||
| 291 | password. The first is valid as output from a generator and as input | ||
| 292 | a server, the second is valid only as human input to a server. | ||
| 293 | |||
| 294 | OUST COAT FOAL MUG BEAK TOTE | ||
| 295 | oust coat foal mug beak tote | ||
| 296 | |||
| 297 | Interoperability requires that all OTP servers and generators use | ||
| 298 | the same dictionary. The standard dictionary was originally | ||
| 299 | specified in the "S/KEY One Time Password System" that is described | ||
| 300 | in RFC 1760 [5]. This dictionary is included in this document as | ||
| 301 | Appendix D. | ||
| 302 | |||
| 303 | To facilitate the implementation of smaller generators, hexadecimal | ||
| 304 | output is an acceptable alternative for the presentation of the | ||
| 305 | one-time password. All implementations of the server software MUST | ||
| 306 | accept case-insensitive hexadecimal as well as six-word format. The | ||
| 307 | hexadecimal digits may be separated by white space so servers are | ||
| 308 | REQUIRED to ignore all white space. If the representation is | ||
| 309 | partitioned by white space, leading zeros must be retained. | ||
| 310 | Examples of hexadecimal format are: | ||
| 311 | |||
| 312 | Representation Value | ||
| 313 | |||
| 314 | 3503785b369cda8b 0x3503785b369cda8b | ||
| 315 | e5cc a1b8 7c13 096b 0xe5cca1b87c13096b | ||
| 316 | C7 48 90 F4 27 7B A1 CF 0xc74890f4277ba1cf | ||
| 317 | 47 9 A68 28 4C 9D 0 1BC 0x479a68284c9d01bc | ||
| 318 | |||
| 319 | In addition to accepting six-word and hexadecimal encodings of the | ||
| 320 | 64 bit one-time password, servers SHOULD accept the alternate | ||
| 321 | dictionary encoding described in Appendix B. The six words in this | ||
| 322 | encoding MUST not overlap the set of words in the standard | ||
| 323 | dictionary. To avoid ambiguity with the hexadecimal representation, | ||
| 324 | words in the alternate dictionary MUST not be comprised solely of | ||
| 325 | the letters A-F. Decoding words thus encoded does not require any | ||
| 326 | knowledge of the alternative dictionary used so the acceptance of | ||
| 327 | any alternate dictionary implies the acceptance of all alternate | ||
| 328 | dictionaries. Words in the alternative dictionaries are case | ||
| 329 | sensitive. Generators and servers MUST preserve the case in the | ||
| 330 | processing of these words. | ||
| 331 | |||
| 332 | In summary, all conforming servers MUST accept six-word input that | ||
| 333 | uses the Standard Dictionary (RFC 1760 and Appendix D), MUST accept | ||
| 334 | hexadecimal encoding, and SHOULD accept six-word input that uses the | ||
| 335 | |||
| 336 | |||
| 337 | |||
| 338 | Haller Standards Track [Page 6] | ||
| 339 | |||
| 340 | RFC 2289 A One-Time Password System February 1998 | ||
| 341 | |||
| 342 | |||
| 343 | Alternative Dictionary technique (Appendix B). As there is a remote | ||
| 344 | possibility that a hexadecimal encoding of a one-time password will | ||
| 345 | look like a valid six-word standard dictionary encoding, all | ||
| 346 | implementations MUST use the following scheme. If a six-word | ||
| 347 | encoded one-time password is valid, it is accepted. Otherwise, if | ||
| 348 | the one-time password can be interpreted as hexadecimal, and with | ||
| 349 | that decoding it is valid, then it is accepted. | ||
| 350 | |||
| 351 | 7.0 VERIFICATION OF ONE-TIME PASSWORDS | ||
| 352 | |||
| 353 | An application on the server system that requires OTP authentication | ||
| 354 | is expected to issue an OTP challenge as described above. Given the | ||
| 355 | parameters from this challenge and the secret pass-phrase, the | ||
| 356 | generator can compute (or lookup) the one-time password that is | ||
| 357 | passed to the server to be verified. | ||
| 358 | |||
| 359 | The server system has a database containing, for each user, the | ||
| 360 | one-time password from the last successful authentication or the | ||
| 361 | first OTP of a newly initialized sequence. To authenticate the user, | ||
| 362 | the server decodes the one-time password received from the generator | ||
| 363 | into a 64-bit key and then runs this key through the secure hash | ||
| 364 | function once. If the result of this operation matches the stored | ||
| 365 | previous OTP, the authentication is successful and the accepted | ||
| 366 | one-time password is stored for future use. | ||
| 367 | |||
| 368 | 8.0 PASS-PHRASE CHANGES | ||
| 369 | |||
| 370 | Because the number of hash function applications executed by the | ||
| 371 | generator decreases by one each time, at some point the user must | ||
| 372 | reinitialize the system or be unable to authenticate. | ||
| 373 | |||
| 374 | Although some installations may not permit users to initialize | ||
| 375 | remotely, implementations MUST provide a means to do so that does | ||
| 376 | not reveal the user's secret pass-phrase. One way is to provide a | ||
| 377 | means to reinitialize the sequence through explicit specification | ||
| 378 | of the first one-time password. | ||
| 379 | |||
| 380 | When the sequence of one-time passwords is reinitialized, | ||
| 381 | implementations MUST verify that the seed or the pass-phrase is | ||
| 382 | changed. Installations SHOULD discourage any operation that sends | ||
| 383 | the secret pass-phrase over a network in clear-text as such practice | ||
| 384 | defeats the concept of a one-time password. | ||
| 385 | |||
| 386 | Implementations MAY use the following technique for | ||
| 387 | [re]initialization: | ||
| 388 | |||
| 389 | |||
| 390 | |||
| 391 | |||
| 392 | |||
| 393 | |||
| 394 | Haller Standards Track [Page 7] | ||
| 395 | |||
| 396 | RFC 2289 A One-Time Password System February 1998 | ||
| 397 | |||
| 398 | |||
| 399 | o The user picks a new seed and hash count (default values may | ||
| 400 | be offered). The user provides these, along with the | ||
| 401 | corresponding generated one-time password, to the host system. | ||
| 402 | |||
| 403 | o The user MAY also provide the corresponding generated one | ||
| 404 | time password for count-1 as an error check. | ||
| 405 | |||
| 406 | o The user SHOULD provide the generated one-time password for | ||
| 407 | the old seed and old hash count to protect an idle terminal | ||
| 408 | or workstation (this implies that when the count is 1, the | ||
| 409 | user can login but cannot then change the seed or count). | ||
| 410 | |||
| 411 | In the future a specific protocol may be defined for | ||
| 412 | reinitialization that will permit smooth and possibly automated | ||
| 413 | interoperation of all hosts and generators. | ||
| 414 | |||
| 415 | 9.0 PROTECTION AGAINST RACE ATTACK | ||
| 416 | |||
| 417 | All conforming server implementations MUST protect against the race | ||
| 418 | condition described in this section. A defense against this attack | ||
| 419 | is outlined; implementations MAY use this approach or MAY select an | ||
| 420 | alternative defense. | ||
| 421 | |||
| 422 | It is possible for an attacker to listen to most of a one-time | ||
| 423 | password, guess the remainder, and then race the legitimate user to | ||
| 424 | complete the authentication. Multiple guesses against the last word | ||
| 425 | of the six-word format are likely to succeed. | ||
| 426 | |||
| 427 | One possible defense is to prevent a user from starting multiple | ||
| 428 | simultaneous authentication sessions. This means that once the | ||
| 429 | legitimate user has initiated authentication, an attacker would be | ||
| 430 | blocked until the first authentication process has completed. In | ||
| 431 | this approach, a timeout is necessary to thwart a denial of service | ||
| 432 | attack. | ||
| 433 | |||
| 434 | 10.0 SECURITY CONSIDERATIONS | ||
| 435 | |||
| 436 | This entire document discusses an authentication system that | ||
| 437 | improves security by limiting the danger of eavesdropping/replay | ||
| 438 | attacks that have been used against simple password systems [4]. | ||
| 439 | |||
| 440 | The use of the OTP system only provides protections against passive | ||
| 441 | eavesdropping/replay attacks. It does not provide for the privacy | ||
| 442 | of transmitted data, and it does not provide protection against | ||
| 443 | active attacks such as session hijacking that are known to be | ||
| 444 | present in the current Internet [9]. The use of IP Security | ||
| 445 | (IPsec), see [10], [11], and [12] is recommended to protect against | ||
| 446 | TCP session hijacking. | ||
| 447 | |||
| 448 | |||
| 449 | |||
| 450 | Haller Standards Track [Page 8] | ||
| 451 | |||
| 452 | RFC 2289 A One-Time Password System February 1998 | ||
| 453 | |||
| 454 | |||
| 455 | The success of the OTP system to protect host systems is dependent | ||
| 456 | on the non-invertability of the secure hash functions used. To our | ||
| 457 | knowledge, none of the hash algorithms have been broken, but it is | ||
| 458 | generally believed [6] that MD4 is not as strong as MD5. If a | ||
| 459 | server supports multiple hash algorithms, it is only as secure as | ||
| 460 | the weakest algorithm. | ||
| 461 | |||
| 462 | 11.0 ACKNOWLEDGMENTS | ||
| 463 | |||
| 464 | The idea behind OTP authentication was first proposed by Leslie | ||
| 465 | Lamport [1]. Bellcore's S/KEY system, from which OTP is derived, was | ||
| 466 | proposed by Phil Karn, who also wrote most of the Bellcore reference | ||
| 467 | implementation. | ||
| 468 | |||
| 469 | 12.0 REFERENCES | ||
| 470 | |||
| 471 | [1] Leslie Lamport, "Password Authentication with Insecure | ||
| 472 | Communication", Communications of the ACM 24.11 (November | ||
| 473 | 1981), 770-772 | ||
| 474 | |||
| 475 | [2] Rivest, R., "The MD4 Message-Digest Algorithm", RFC 1320, | ||
| 476 | April 1992. | ||
| 477 | |||
| 478 | [3] Neil Haller, "The S/KEY One-Time Password System", Proceedings | ||
| 479 | of the ISOC Symposium on Network and Distributed System | ||
| 480 | Security, February 1994, San Diego, CA | ||
| 481 | |||
| 482 | [4] Haller, N., and R. Atkinson, "On Internet Authentication", | ||
| 483 | RFC 1704, October 1994. | ||
| 484 | |||
| 485 | [5] Haller, N., "The S/KEY One-Time Password System", | ||
| 486 | RFC 1760, February 1995. | ||
| 487 | |||
| 488 | [6] Rivest, R., "The MD5 Message-Digest Algorithm", RFC 1321, | ||
| 489 | April 1992. | ||
| 490 | |||
| 491 | [7] National Institute of Standards and Technology (NIST), | ||
| 492 | "Announcing the Secure Hash Standard", FIPS 180-1, U.S. | ||
| 493 | Department of Commerce, April 1995. | ||
| 494 | |||
| 495 | [8] International Standard - Information Processing -- ISO 7-bit | ||
| 496 | coded character set for information interchange (Invariant Code | ||
| 497 | Set), ISO-646, International Standards Organization, Geneva, | ||
| 498 | Switzerland, 1983 | ||
| 499 | |||
| 500 | |||
| 501 | |||
| 502 | |||
| 503 | |||
| 504 | |||
| 505 | |||
| 506 | Haller Standards Track [Page 9] | ||
| 507 | |||
| 508 | RFC 2289 A One-Time Password System February 1998 | ||
| 509 | |||
| 510 | |||
| 511 | [9] Computer Emergency Response Team (CERT), "IP Spoofing and | ||
| 512 | Hijacked Terminal Connections", CA-95:01, January 1995. | ||
| 513 | Available via anonymous ftp from info.cert.org in | ||
| 514 | /pub/cert_advisories. | ||
| 515 | |||
| 516 | [10] Atkinson, R., "Security Architecture for the Internet Protocol", | ||
| 517 | RFC 1825, August 1995. | ||
| 518 | |||
| 519 | [11] Atkinson, R., "IP Authentication Header", RFC 1826, August | ||
| 520 | 1995. | ||
| 521 | |||
| 522 | [12] Atkinson, R., "IP Encapsulating Security Payload (ESP)", RFC | ||
| 523 | 1827, August 1995. | ||
| 524 | |||
| 525 | |||
| 526 | |||
| 527 | |||
| 528 | |||
| 529 | |||
| 530 | |||
| 531 | |||
| 532 | |||
| 533 | |||
| 534 | |||
| 535 | |||
| 536 | |||
| 537 | |||
| 538 | |||
| 539 | |||
| 540 | |||
| 541 | |||
| 542 | |||
| 543 | |||
| 544 | |||
| 545 | |||
| 546 | |||
| 547 | |||
| 548 | |||
| 549 | |||
| 550 | |||
| 551 | |||
| 552 | |||
| 553 | |||
| 554 | |||
| 555 | |||
| 556 | |||
| 557 | |||
| 558 | |||
| 559 | |||
| 560 | |||
| 561 | |||
| 562 | Haller Standards Track [Page 10] | ||
| 563 | |||
| 564 | RFC 2289 A One-Time Password System February 1998 | ||
| 565 | |||
| 566 | |||
| 567 | 13.0 AUTHORS' ADDRESSES | ||
| 568 | |||
| 569 | Neil Haller | ||
| 570 | Bellcore | ||
| 571 | MCC 1C-265B | ||
| 572 | 445 South Street | ||
| 573 | Morristown, NJ, 07960-6438, USA | ||
| 574 | |||
| 575 | Phone: +1 201 829-4478 | ||
| 576 | Fax: +1 201 829-2504 | ||
| 577 | EMail: nmh@bellcore.com | ||
| 578 | |||
| 579 | |||
| 580 | Craig Metz | ||
| 581 | Kaman Sciences Corporation | ||
| 582 | For NRL Code 5544 | ||
| 583 | 4555 Overlook Avenue, S.W. | ||
| 584 | Washington, DC, 20375-5337, USA | ||
| 585 | |||
| 586 | Phone: +1 202 404-7122 | ||
| 587 | Fax: +1 202 404-7942 | ||
| 588 | EMail: cmetz@cs.nrl.navy.mil | ||
| 589 | |||
| 590 | |||
| 591 | Philip J. Nesser II | ||
| 592 | Nesser & Nesser Consulting | ||
| 593 | 13501 100th Ave NE | ||
| 594 | Suite 5202 | ||
| 595 | Kirkland, WA 98034, USA | ||
| 596 | |||
| 597 | Phone: +1 206 481 4303 | ||
| 598 | EMail: pjnesser@martigny.ai.mit.edu | ||
| 599 | |||
| 600 | |||
| 601 | Mike Straw | ||
| 602 | Bellcore | ||
| 603 | RRC 1A-225 | ||
| 604 | 445 Hoes Lane | ||
| 605 | Piscataway, NJ 08854-4182 | ||
| 606 | |||
| 607 | Phone: +1 908 699-5212 | ||
| 608 | EMail: mess@bellcore.com | ||
| 609 | |||
| 610 | |||
| 611 | |||
| 612 | |||
| 613 | |||
| 614 | |||
| 615 | |||
| 616 | |||
| 617 | |||
| 618 | Haller Standards Track [Page 11] | ||
| 619 | |||
| 620 | RFC 2289 A One-Time Password System February 1998 | ||
| 621 | |||
| 622 | |||
| 623 | Appendix A - Interfaces to Secure Hash Algorithms | ||
| 624 | |||
| 625 | Original interoperability tests provided valuable insights into the | ||
| 626 | subtle problems which occur when converting protocol specifications | ||
| 627 | into running code. In particular, the manipulation of bit ordered | ||
| 628 | data is dependent on the architecture of the hardware, specifically | ||
| 629 | the way in which a computer stores multi-byte data. The method is | ||
| 630 | typically called big or little "endian." A big endian machine stores | ||
| 631 | data with the most significant byte first, while a little endian | ||
| 632 | machine stores the least significant byte first. Thus, on a big | ||
| 633 | endian machine data is stored left to right, while little endian | ||
| 634 | machines store data right to left. | ||
| 635 | |||
| 636 | For example, the four byte value 0x11AABBCC is stored in a big endian | ||
| 637 | machine as the following series of four bytes, "0x11", "0xAA", | ||
| 638 | "0xBB", and "0xCC", while on a little endian machine the value would | ||
| 639 | be stored as "0xCC", "0xBB", "0xAA", and "0x11". | ||
| 640 | |||
| 641 | For historical reasons, and to promote interoperability with existing | ||
| 642 | implementations, it was decided that ALL hashes incorporated into the | ||
| 643 | OTP protocol MUST store the output of their hash function in LITTLE | ||
| 644 | ENDIAN format BEFORE the bit folding to 64 bits occurs. This is done | ||
| 645 | in the implementations of MD4 and MD5 (see references [2] and [6]), | ||
| 646 | while it must be explicitly done for the implementation of SHA1 (see | ||
| 647 | reference [7]). | ||
| 648 | |||
| 649 | Any future hash functions implemented into the OTP protocol SHOULD | ||
| 650 | provide a similar reference fragment of code to allow independent | ||
| 651 | implementations to operate successfully. | ||
| 652 | |||
| 653 | |||
| 654 | MD4 Message Digest (see reference [2]) | ||
| 655 | |||
| 656 | MD4_CTX md; | ||
| 657 | unsigned char result[16]; | ||
| 658 | |||
| 659 | strcpy(buf, seed); /* seed must be in lower case */ | ||
| 660 | strcat(buf, passwd); | ||
| 661 | MD4Init(&md); | ||
| 662 | MD4Update(&md, (unsigned char *)buf, strlen(buf)); | ||
| 663 | MD4Final(result, &md); | ||
| 664 | |||
| 665 | /* Fold the 128 bit result to 64 bits */ | ||
| 666 | for (i = 0; i < 8; i++) | ||
| 667 | result[i] ^= result[i+8]; | ||
| 668 | |||
| 669 | |||
| 670 | |||
| 671 | |||
| 672 | |||
| 673 | |||
| 674 | Haller Standards Track [Page 12] | ||
| 675 | |||
| 676 | RFC 2289 A One-Time Password System February 1998 | ||
| 677 | |||
| 678 | |||
| 679 | MD5 Message Digest (see reference [6]) | ||
| 680 | |||
| 681 | MD5_CTX md; | ||
| 682 | unsigned char result[16]; | ||
| 683 | strcpy(buf, seed); /* seed must be in lower case */ | ||
| 684 | strcat(buf, passwd); | ||
| 685 | MD5Init(&md); | ||
| 686 | MD5Update(&md, (unsigned char *)buf, strlen(buf)); | ||
| 687 | MD5Final(result, &md); | ||
| 688 | |||
| 689 | /* Fold the 128 bit result to 64 bits */ | ||
| 690 | for (i = 0; i < 8; i++) | ||
| 691 | result[i] ^= result[i+8]; | ||
| 692 | |||
| 693 | |||
| 694 | SHA Secure Hash Algorithm (see reference [7]) | ||
| 695 | |||
| 696 | SHA_INFO sha; | ||
| 697 | unsigned char result[16]; | ||
| 698 | strcpy(buf, seed); /* seed must be in lower case */ | ||
| 699 | strcat(buf, passwd); | ||
| 700 | sha_init(&sha); | ||
| 701 | sha_update(&sha, (unsigned char *)buf, strlen(buf)); | ||
| 702 | sha_final(&sha); /* NOTE: no result buffer */ | ||
| 703 | |||
| 704 | /* Fold the 160 bit result to 64 bits */ | ||
| 705 | sha.digest[0] ^= sha.digest[2]; | ||
| 706 | sha.digest[1] ^= sha.digest[3]; | ||
| 707 | sha.digest[0] ^= sha.digest[4]; | ||
| 708 | |||
| 709 | /* | ||
| 710 | * copy the resulting 64 bits to the result buffer in little endian | ||
| 711 | * fashion (analogous to the way MD4Final() and MD5Final() do). | ||
| 712 | */ | ||
| 713 | for (i = 0, j = 0; j < 8; i++, j += 4) | ||
| 714 | { | ||
| 715 | result[j] = (unsigned char)(sha.digest[i] & 0xff); | ||
| 716 | result[j+1] = (unsigned char)((sha.digest[i] >> 8) & 0xff); | ||
| 717 | result[j+2] = (unsigned char)((sha.digest[i] >> 16) & 0xff); | ||
| 718 | result[j+3] = (unsigned char)((sha.digest[i] >> 24) & 0xff); | ||
| 719 | } | ||
| 720 | |||
| 721 | |||
| 722 | |||
| 723 | |||
| 724 | |||
| 725 | |||
| 726 | |||
| 727 | |||
| 728 | |||
| 729 | |||
| 730 | Haller Standards Track [Page 13] | ||
| 731 | |||
| 732 | RFC 2289 A One-Time Password System February 1998 | ||
| 733 | |||
| 734 | |||
| 735 | Appendix B - Alternative Dictionary Algorithm | ||
| 736 | |||
| 737 | The purpose of alternative dictionary encoding of the OTP one-time | ||
| 738 | password is to allow the use of language specific or friendly words. | ||
| 739 | As case translation is not always well defined, the alternative | ||
| 740 | dictionary encoding is case sensitive. Servers SHOULD accept this | ||
| 741 | encoding in addition to the standard 6-word and hexadecimal | ||
| 742 | encodings. | ||
| 743 | |||
| 744 | |||
| 745 | GENERATOR ENCODING USING AN ALTERNATE DICTIONARY | ||
| 746 | |||
| 747 | The standard 6-word encoding uses the placement of a word in the | ||
| 748 | dictionary to represent an 11-bit number. The 64-bit one-time | ||
| 749 | password can then be represented by six words. | ||
| 750 | |||
| 751 | An alternative dictionary of 2048 words may be created such that | ||
| 752 | each word W and position of the word in the dictionary N obey the | ||
| 753 | relationship: | ||
| 754 | |||
| 755 | alg( W ) % 2048 == N | ||
| 756 | where | ||
| 757 | alg is the hash algorithm used (e.g. MD4, MD5, SHA1). | ||
| 758 | |||
| 759 | In addition, no words in the standard dictionary may be chosen. | ||
| 760 | |||
| 761 | The generator expands the 64-bit one-time password to 66 bits by | ||
| 762 | computing parity as with the standard 6-word encoding. The six 11- | ||
| 763 | bit numbers are then converted to words using the dictionary that | ||
| 764 | was created such that the above relationship holds. | ||
| 765 | |||
| 766 | SERVER DECODING OF ALTERNATE DICTIONARY ONE-TIME PASSWORDS | ||
| 767 | |||
| 768 | The server accepting alternative dictionary encoding converts each | ||
| 769 | word to an 11-bit number using the above encoding. These numbers | ||
| 770 | are then used in the same way as the decoded standard dictionary | ||
| 771 | words to form the 66-bit one-time password. | ||
| 772 | |||
| 773 | The server does not need to have access to the alternate dictionary | ||
| 774 | that was used to create the one-time password it is authenticating. | ||
| 775 | This is because the decoding from word to 11-bit number does not | ||
| 776 | make any use of the dictionary. As a result of the independence of | ||
| 777 | the dictionary, a server accepting one alternate dictionary accept | ||
| 778 | all alternate dictionaries. | ||
| 779 | |||
| 780 | |||
| 781 | |||
| 782 | |||
| 783 | |||
| 784 | |||
| 785 | |||
| 786 | Haller Standards Track [Page 14] | ||
| 787 | |||
| 788 | RFC 2289 A One-Time Password System February 1998 | ||
| 789 | |||
| 790 | |||
| 791 | Appendix C - OTP Verification Examples | ||
| 792 | |||
| 793 | This appendix provides a series of inputs and correct outputs for all | ||
| 794 | three of the defined OTP cryptographic hashes, specifically MD4, MD5, | ||
| 795 | and SHA1. This document is intended to be used by developers for | ||
| 796 | interoperability checks when creating generators or servers. Output | ||
| 797 | is provided in both hexadecimal notation and the six word encoding | ||
| 798 | documented in Appendix D. | ||
| 799 | |||
| 800 | GENERAL CHECKS | ||
| 801 | |||
| 802 | Note that the output given for these checks is not intended to be | ||
| 803 | taken literally, but describes the type of action that should be | ||
| 804 | taken. | ||
| 805 | |||
| 806 | Pass Phrase Length | ||
| 807 | |||
| 808 | Input: | ||
| 809 | Pass Phrase: Too_short | ||
| 810 | Seed: iamvalid | ||
| 811 | Count: 99 | ||
| 812 | Hash: ANY | ||
| 813 | Output: | ||
| 814 | ERROR: Pass Phrase too short | ||
| 815 | |||
| 816 | Input: | ||
| 817 | Pass Phrase: | ||
| 818 | 1234567890123456789012345678901234567890123456789012345678901234 | ||
| 819 | Seed: iamvalid | ||
| 820 | Count: 99 | ||
| 821 | Hash: ANY | ||
| 822 | Output: | ||
| 823 | WARNING: Pass Phrase longer than the recommended maximum length of | ||
| 824 | 63 | ||
| 825 | |||
| 826 | Seed Values | ||
| 827 | |||
| 828 | Input: | ||
| 829 | Pass Phrase: A_Valid_Pass_Phrase | ||
| 830 | Seed: Length_Okay | ||
| 831 | Count: 99 | ||
| 832 | Hash: ANY | ||
| 833 | Output: | ||
| 834 | ERROR: Seed must be purely alphanumeric | ||
| 835 | |||
| 836 | Input: | ||
| 837 | Pass Phrase: A_Valid_Pass_Phrase | ||
| 838 | Seed: LengthOfSeventeen | ||
| 839 | |||
| 840 | |||
| 841 | |||
| 842 | Haller Standards Track [Page 15] | ||
| 843 | |||
| 844 | RFC 2289 A One-Time Password System February 1998 | ||
| 845 | |||
| 846 | |||
| 847 | Count: 99 | ||
| 848 | Hash: ANY | ||
| 849 | |||
| 850 | Output: | ||
| 851 | ERROR: Seed must be between 1 and 16 characters in length | ||
| 852 | |||
| 853 | Input: | ||
| 854 | Pass Phrase: A_Valid_Pass_Phrase | ||
| 855 | Seed: A Seed | ||
| 856 | Count: 99 | ||
| 857 | Hash: ANY | ||
| 858 | Output: | ||
| 859 | ERROR: Seed must not contain any spaces | ||
| 860 | |||
| 861 | Parity Calculations | ||
| 862 | |||
| 863 | Input: | ||
| 864 | Pass Phrase: A_Valid_Pass_Phrase | ||
| 865 | Seed: AValidSeed | ||
| 866 | Count: 99 | ||
| 867 | Hash: MD5 | ||
| 868 | Output: | ||
| 869 | Hex: 85c43ee03857765b | ||
| 870 | Six Word(CORRECT): FOWL KID MASH DEAD DUAL OAF | ||
| 871 | Six Word(INCORRECT PARITY): FOWL KID MASH DEAD DUAL NUT | ||
| 872 | Six Word(INCORRECT PARITY): FOWL KID MASH DEAD DUAL O | ||
| 873 | Six Word(INCORRECT PARITY): FOWL KID MASH DEAD DUAL OAK | ||
| 874 | |||
| 875 | |||
| 876 | |||
| 877 | |||
| 878 | |||
| 879 | |||
| 880 | |||
| 881 | |||
| 882 | |||
| 883 | |||
| 884 | |||
| 885 | |||
| 886 | |||
| 887 | |||
| 888 | |||
| 889 | |||
| 890 | |||
| 891 | |||
| 892 | |||
| 893 | |||
| 894 | |||
| 895 | |||
| 896 | |||
| 897 | |||
| 898 | Haller Standards Track [Page 16] | ||
| 899 | |||
| 900 | RFC 2289 A One-Time Password System February 1998 | ||
| 901 | |||
| 902 | |||
| 903 | MD4 ENCODINGS | ||
| 904 | |||
| 905 | Pass Phrase Seed Cnt Hex Six Word Format | ||
| 906 | ======================================================================== | ||
| 907 | This is a test. TeSt 0 D185 4218 EBBB 0B51 | ||
| 908 | ROME MUG FRED SCAN LIVE LACE | ||
| 909 | This is a test. TeSt 1 6347 3EF0 1CD0 B444 | ||
| 910 | CARD SAD MINI RYE COL KIN | ||
| 911 | This is a test. TeSt 99 C5E6 1277 6E6C 237A | ||
| 912 | NOTE OUT IBIS SINK NAVE MODE | ||
| 913 | AbCdEfGhIjK alpha1 0 5007 6F47 EB1A DE4E | ||
| 914 | AWAY SEN ROOK SALT LICE MAP | ||
| 915 | AbCdEfGhIjK alpha1 1 65D2 0D19 49B5 F7AB | ||
| 916 | CHEW GRIM WU HANG BUCK SAID | ||
| 917 | AbCdEfGhIjK alpha1 99 D150 C82C CE6F 62D1 | ||
| 918 | ROIL FREE COG HUNK WAIT COCA | ||
| 919 | OTP's are good correct 0 849C 79D4 F6F5 5388 | ||
| 920 | FOOL STEM DONE TOOL BECK NILE | ||
| 921 | OTP's are good correct 1 8C09 92FB 2508 47B1 | ||
| 922 | GIST AMOS MOOT AIDS FOOD SEEM | ||
| 923 | OTP's are good correct 99 3F3B F4B4 145F D74B | ||
| 924 | TAG SLOW NOV MIN WOOL KENO | ||
| 925 | |||
| 926 | |||
| 927 | |||
| 928 | |||
| 929 | |||
| 930 | |||
| 931 | |||
| 932 | |||
| 933 | |||
| 934 | |||
| 935 | |||
| 936 | |||
| 937 | |||
| 938 | |||
| 939 | |||
| 940 | |||
| 941 | |||
| 942 | |||
| 943 | |||
| 944 | |||
| 945 | |||
| 946 | |||
| 947 | |||
| 948 | |||
| 949 | |||
| 950 | |||
| 951 | |||
| 952 | |||
| 953 | |||
| 954 | Haller Standards Track [Page 17] | ||
| 955 | |||
| 956 | RFC 2289 A One-Time Password System February 1998 | ||
| 957 | |||
| 958 | |||
| 959 | MD5 ENCODINGS | ||
| 960 | |||
| 961 | Pass Phrase Seed Cnt Hex Six Word Format | ||
| 962 | ======================================================================== | ||
| 963 | This is a test. TeSt 0 9E87 6134 D904 99DD | ||
| 964 | INCH SEA ANNE LONG AHEM TOUR | ||
| 965 | This is a test. TeSt 1 7965 E054 36F5 029F | ||
| 966 | EASE OIL FUM CURE AWRY AVIS | ||
| 967 | This is a test. TeSt 99 50FE 1962 C496 5880 | ||
| 968 | BAIL TUFT BITS GANG CHEF THY | ||
| 969 | AbCdEfGhIjK alpha1 0 8706 6DD9 644B F206 | ||
| 970 | FULL PEW DOWN ONCE MORT ARC | ||
| 971 | AbCdEfGhIjK alpha1 1 7CD3 4C10 40AD D14B | ||
| 972 | FACT HOOF AT FIST SITE KENT | ||
| 973 | AbCdEfGhIjK alpha1 99 5AA3 7A81 F212 146C | ||
| 974 | BODE HOP JAKE STOW JUT RAP | ||
| 975 | OTP's are good correct 0 F205 7539 43DE 4CF9 | ||
| 976 | ULAN NEW ARMY FUSE SUIT EYED | ||
| 977 | OTP's are good correct 1 DDCD AC95 6F23 4937 | ||
| 978 | SKIM CULT LOB SLAM POE HOWL | ||
| 979 | OTP's are good correct 99 B203 E28F A525 BE47 | ||
| 980 | LONG IVY JULY AJAR BOND LEE | ||
| 981 | |||
| 982 | |||
| 983 | SHA1 ENCODINGS | ||
| 984 | |||
| 985 | Pass Phrase Seed Cnt Hex Six Word Format | ||
| 986 | ======================================================================== | ||
| 987 | This is a test. TeSt 0 BB9E 6AE1 979D 8FF4 | ||
| 988 | MILT VARY MAST OK SEES WENT | ||
| 989 | This is a test. TeSt 1 63D9 3663 9734 385B | ||
| 990 | CART OTTO HIVE ODE VAT NUT | ||
| 991 | This is a test. TeSt 99 87FE C776 8B73 CCF9 | ||
| 992 | GAFF WAIT SKID GIG SKY EYED | ||
| 993 | AbCdEfGhIjK alpha1 0 AD85 F658 EBE3 83C9 | ||
| 994 | LEST OR HEEL SCOT ROB SUIT | ||
| 995 | AbCdEfGhIjK alpha1 1 D07C E229 B5CF 119B | ||
| 996 | RITE TAKE GELD COST TUNE RECK | ||
| 997 | AbCdEfGhIjK alpha1 99 27BC 7103 5AAF 3DC6 | ||
| 998 | MAY STAR TIN LYON VEDA STAN | ||
| 999 | OTP's are good correct 0 D51F 3E99 BF8E 6F0B | ||
| 1000 | RUST WELT KICK FELL TAIL FRAU | ||
| 1001 | OTP's are good correct 1 82AE B52D 9437 74E4 | ||
| 1002 | FLIT DOSE ALSO MEW DRUM DEFY | ||
| 1003 | OTP's are good correct 99 4F29 6A74 FE15 67EC | ||
| 1004 | AURA ALOE HURL WING BERG WAIT | ||
| 1005 | |||
| 1006 | |||
| 1007 | |||
| 1008 | |||
| 1009 | |||
| 1010 | Haller Standards Track [Page 18] | ||
| 1011 | |||
| 1012 | RFC 2289 A One-Time Password System February 1998 | ||
| 1013 | |||
| 1014 | |||
| 1015 | Appendix D - Dictionary for Converting Between 6-Word and Binary Formats | ||
| 1016 | |||
| 1017 | This dictionary is from the module put.c in the original Bellcore | ||
| 1018 | reference distribution. | ||
| 1019 | |||
| 1020 | { "A", "ABE", "ACE", "ACT", "AD", "ADA", "ADD", | ||
| 1021 | "AGO", "AID", "AIM", "AIR", "ALL", "ALP", "AM", "AMY", | ||
| 1022 | "AN", "ANA", "AND", "ANN", "ANT", "ANY", "APE", "APS", | ||
| 1023 | "APT", "ARC", "ARE", "ARK", "ARM", "ART", "AS", "ASH", | ||
| 1024 | "ASK", "AT", "ATE", "AUG", "AUK", "AVE", "AWE", "AWK", | ||
| 1025 | "AWL", "AWN", "AX", "AYE", "BAD", "BAG", "BAH", "BAM", | ||
| 1026 | "BAN", "BAR", "BAT", "BAY", "BE", "BED", "BEE", "BEG", | ||
| 1027 | "BEN", "BET", "BEY", "BIB", "BID", "BIG", "BIN", "BIT", | ||
| 1028 | "BOB", "BOG", "BON", "BOO", "BOP", "BOW", "BOY", "BUB", | ||
| 1029 | "BUD", "BUG", "BUM", "BUN", "BUS", "BUT", "BUY", "BY", | ||
| 1030 | "BYE", "CAB", "CAL", "CAM", "CAN", "CAP", "CAR", "CAT", | ||
| 1031 | "CAW", "COD", "COG", "COL", "CON", "COO", "COP", "COT", | ||
| 1032 | "COW", "COY", "CRY", "CUB", "CUE", "CUP", "CUR", "CUT", | ||
| 1033 | "DAB", "DAD", "DAM", "DAN", "DAR", "DAY", "DEE", "DEL", | ||
| 1034 | "DEN", "DES", "DEW", "DID", "DIE", "DIG", "DIN", "DIP", | ||
| 1035 | "DO", "DOE", "DOG", "DON", "DOT", "DOW", "DRY", "DUB", | ||
| 1036 | "DUD", "DUE", "DUG", "DUN", "EAR", "EAT", "ED", "EEL", | ||
| 1037 | "EGG", "EGO", "ELI", "ELK", "ELM", "ELY", "EM", "END", | ||
| 1038 | "EST", "ETC", "EVA", "EVE", "EWE", "EYE", "FAD", "FAN", | ||
| 1039 | "FAR", "FAT", "FAY", "FED", "FEE", "FEW", "FIB", "FIG", | ||
| 1040 | "FIN", "FIR", "FIT", "FLO", "FLY", "FOE", "FOG", "FOR", | ||
| 1041 | "FRY", "FUM", "FUN", "FUR", "GAB", "GAD", "GAG", "GAL", | ||
| 1042 | "GAM", "GAP", "GAS", "GAY", "GEE", "GEL", "GEM", "GET", | ||
| 1043 | "GIG", "GIL", "GIN", "GO", "GOT", "GUM", "GUN", "GUS", | ||
| 1044 | "GUT", "GUY", "GYM", "GYP", "HA", "HAD", "HAL", "HAM", | ||
| 1045 | "HAN", "HAP", "HAS", "HAT", "HAW", "HAY", "HE", "HEM", | ||
| 1046 | "HEN", "HER", "HEW", "HEY", "HI", "HID", "HIM", "HIP", | ||
| 1047 | "HIS", "HIT", "HO", "HOB", "HOC", "HOE", "HOG", "HOP", | ||
| 1048 | "HOT", "HOW", "HUB", "HUE", "HUG", "HUH", "HUM", "HUT", | ||
| 1049 | "I", "ICY", "IDA", "IF", "IKE", "ILL", "INK", "INN", | ||
| 1050 | "IO", "ION", "IQ", "IRA", "IRE", "IRK", "IS", "IT", | ||
| 1051 | "ITS", "IVY", "JAB", "JAG", "JAM", "JAN", "JAR", "JAW", | ||
| 1052 | "JAY", "JET", "JIG", "JIM", "JO", "JOB", "JOE", "JOG", | ||
| 1053 | "JOT", "JOY", "JUG", "JUT", "KAY", "KEG", "KEN", "KEY", | ||
| 1054 | "KID", "KIM", "KIN", "KIT", "LA", "LAB", "LAC", "LAD", | ||
| 1055 | "LAG", "LAM", "LAP", "LAW", "LAY", "LEA", "LED", "LEE", | ||
| 1056 | "LEG", "LEN", "LEO", "LET", "LEW", "LID", "LIE", "LIN", | ||
| 1057 | "LIP", "LIT", "LO", "LOB", "LOG", "LOP", "LOS", "LOT", | ||
| 1058 | "LOU", "LOW", "LOY", "LUG", "LYE", "MA", "MAC", "MAD", | ||
| 1059 | "MAE", "MAN", "MAO", "MAP", "MAT", "MAW", "MAY", "ME", | ||
| 1060 | "MEG", "MEL", "MEN", "MET", "MEW", "MID", "MIN", "MIT", | ||
| 1061 | "MOB", "MOD", "MOE", "MOO", "MOP", "MOS", "MOT", "MOW", | ||
| 1062 | "MUD", "MUG", "MUM", "MY", "NAB", "NAG", "NAN", "NAP", | ||
| 1063 | |||
| 1064 | |||
| 1065 | |||
| 1066 | Haller Standards Track [Page 19] | ||
| 1067 | |||
| 1068 | RFC 2289 A One-Time Password System February 1998 | ||
| 1069 | |||
| 1070 | |||
| 1071 | "NAT", "NAY", "NE", "NED", "NEE", "NET", "NEW", "NIB", | ||
| 1072 | "NIL", "NIP", "NIT", "NO", "NOB", "NOD", "NON", "NOR", | ||
| 1073 | "NOT", "NOV", "NOW", "NU", "NUN", "NUT", "O", "OAF", | ||
| 1074 | "OAK", "OAR", "OAT", "ODD", "ODE", "OF", "OFF", "OFT", | ||
| 1075 | "OH", "OIL", "OK", "OLD", "ON", "ONE", "OR", "ORB", | ||
| 1076 | "ORE", "ORR", "OS", "OTT", "OUR", "OUT", "OVA", "OW", | ||
| 1077 | "OWE", "OWL", "OWN", "OX", "PA", "PAD", "PAL", "PAM", | ||
| 1078 | "PAN", "PAP", "PAR", "PAT", "PAW", "PAY", "PEA", "PEG", | ||
| 1079 | "PEN", "PEP", "PER", "PET", "PEW", "PHI", "PI", "PIE", | ||
| 1080 | "PIN", "PIT", "PLY", "PO", "POD", "POE", "POP", "POT", | ||
| 1081 | "POW", "PRO", "PRY", "PUB", "PUG", "PUN", "PUP", "PUT", | ||
| 1082 | "QUO", "RAG", "RAM", "RAN", "RAP", "RAT", "RAW", "RAY", | ||
| 1083 | "REB", "RED", "REP", "RET", "RIB", "RID", "RIG", "RIM", | ||
| 1084 | "RIO", "RIP", "ROB", "ROD", "ROE", "RON", "ROT", "ROW", | ||
| 1085 | "ROY", "RUB", "RUE", "RUG", "RUM", "RUN", "RYE", "SAC", | ||
| 1086 | "SAD", "SAG", "SAL", "SAM", "SAN", "SAP", "SAT", "SAW", | ||
| 1087 | "SAY", "SEA", "SEC", "SEE", "SEN", "SET", "SEW", "SHE", | ||
| 1088 | "SHY", "SIN", "SIP", "SIR", "SIS", "SIT", "SKI", "SKY", | ||
| 1089 | "SLY", "SO", "SOB", "SOD", "SON", "SOP", "SOW", "SOY", | ||
| 1090 | "SPA", "SPY", "SUB", "SUD", "SUE", "SUM", "SUN", "SUP", | ||
| 1091 | "TAB", "TAD", "TAG", "TAN", "TAP", "TAR", "TEA", "TED", | ||
| 1092 | "TEE", "TEN", "THE", "THY", "TIC", "TIE", "TIM", "TIN", | ||
| 1093 | "TIP", "TO", "TOE", "TOG", "TOM", "TON", "TOO", "TOP", | ||
| 1094 | "TOW", "TOY", "TRY", "TUB", "TUG", "TUM", "TUN", "TWO", | ||
| 1095 | "UN", "UP", "US", "USE", "VAN", "VAT", "VET", "VIE", | ||
| 1096 | "WAD", "WAG", "WAR", "WAS", "WAY", "WE", "WEB", "WED", | ||
| 1097 | "WEE", "WET", "WHO", "WHY", "WIN", "WIT", "WOK", "WON", | ||
| 1098 | "WOO", "WOW", "WRY", "WU", "YAM", "YAP", "YAW", "YE", | ||
| 1099 | "YEA", "YES", "YET", "YOU", "ABED", "ABEL", "ABET", "ABLE", | ||
| 1100 | "ABUT", "ACHE", "ACID", "ACME", "ACRE", "ACTA", "ACTS", "ADAM", | ||
| 1101 | "ADDS", "ADEN", "AFAR", "AFRO", "AGEE", "AHEM", "AHOY", "AIDA", | ||
| 1102 | "AIDE", "AIDS", "AIRY", "AJAR", "AKIN", "ALAN", "ALEC", "ALGA", | ||
| 1103 | "ALIA", "ALLY", "ALMA", "ALOE", "ALSO", "ALTO", "ALUM", "ALVA", | ||
| 1104 | "AMEN", "AMES", "AMID", "AMMO", "AMOK", "AMOS", "AMRA", "ANDY", | ||
| 1105 | "ANEW", "ANNA", "ANNE", "ANTE", "ANTI", "AQUA", "ARAB", "ARCH", | ||
| 1106 | "AREA", "ARGO", "ARID", "ARMY", "ARTS", "ARTY", "ASIA", "ASKS", | ||
| 1107 | "ATOM", "AUNT", "AURA", "AUTO", "AVER", "AVID", "AVIS", "AVON", | ||
| 1108 | "AVOW", "AWAY", "AWRY", "BABE", "BABY", "BACH", "BACK", "BADE", | ||
| 1109 | "BAIL", "BAIT", "BAKE", "BALD", "BALE", "BALI", "BALK", "BALL", | ||
| 1110 | "BALM", "BAND", "BANE", "BANG", "BANK", "BARB", "BARD", "BARE", | ||
| 1111 | "BARK", "BARN", "BARR", "BASE", "BASH", "BASK", "BASS", "BATE", | ||
| 1112 | "BATH", "BAWD", "BAWL", "BEAD", "BEAK", "BEAM", "BEAN", "BEAR", | ||
| 1113 | "BEAT", "BEAU", "BECK", "BEEF", "BEEN", "BEER", "BEET", "BELA", | ||
| 1114 | "BELL", "BELT", "BEND", "BENT", "BERG", "BERN", "BERT", "BESS", | ||
| 1115 | "BEST", "BETA", "BETH", "BHOY", "BIAS", "BIDE", "BIEN", "BILE", | ||
| 1116 | "BILK", "BILL", "BIND", "BING", "BIRD", "BITE", "BITS", "BLAB", | ||
| 1117 | "BLAT", "BLED", "BLEW", "BLOB", "BLOC", "BLOT", "BLOW", "BLUE", | ||
| 1118 | "BLUM", "BLUR", "BOAR", "BOAT", "BOCA", "BOCK", "BODE", "BODY", | ||
| 1119 | |||
| 1120 | |||
| 1121 | |||
| 1122 | Haller Standards Track [Page 20] | ||
| 1123 | |||
| 1124 | RFC 2289 A One-Time Password System February 1998 | ||
| 1125 | |||
| 1126 | |||
| 1127 | "BOGY", "BOHR", "BOIL", "BOLD", "BOLO", "BOLT", "BOMB", "BONA", | ||
| 1128 | "BOND", "BONE", "BONG", "BONN", "BONY", "BOOK", "BOOM", "BOON", | ||
| 1129 | "BOOT", "BORE", "BORG", "BORN", "BOSE", "BOSS", "BOTH", "BOUT", | ||
| 1130 | "BOWL", "BOYD", "BRAD", "BRAE", "BRAG", "BRAN", "BRAY", "BRED", | ||
| 1131 | "BREW", "BRIG", "BRIM", "BROW", "BUCK", "BUDD", "BUFF", "BULB", | ||
| 1132 | "BULK", "BULL", "BUNK", "BUNT", "BUOY", "BURG", "BURL", "BURN", | ||
| 1133 | "BURR", "BURT", "BURY", "BUSH", "BUSS", "BUST", "BUSY", "BYTE", | ||
| 1134 | "CADY", "CAFE", "CAGE", "CAIN", "CAKE", "CALF", "CALL", "CALM", | ||
| 1135 | "CAME", "CANE", "CANT", "CARD", "CARE", "CARL", "CARR", "CART", | ||
| 1136 | "CASE", "CASH", "CASK", "CAST", "CAVE", "CEIL", "CELL", "CENT", | ||
| 1137 | "CERN", "CHAD", "CHAR", "CHAT", "CHAW", "CHEF", "CHEN", "CHEW", | ||
| 1138 | "CHIC", "CHIN", "CHOU", "CHOW", "CHUB", "CHUG", "CHUM", "CITE", | ||
| 1139 | "CITY", "CLAD", "CLAM", "CLAN", "CLAW", "CLAY", "CLOD", "CLOG", | ||
| 1140 | "CLOT", "CLUB", "CLUE", "COAL", "COAT", "COCA", "COCK", "COCO", | ||
| 1141 | "CODA", "CODE", "CODY", "COED", "COIL", "COIN", "COKE", "COLA", | ||
| 1142 | "COLD", "COLT", "COMA", "COMB", "COME", "COOK", "COOL", "COON", | ||
| 1143 | "COOT", "CORD", "CORE", "CORK", "CORN", "COST", "COVE", "COWL", | ||
| 1144 | "CRAB", "CRAG", "CRAM", "CRAY", "CREW", "CRIB", "CROW", "CRUD", | ||
| 1145 | "CUBA", "CUBE", "CUFF", "CULL", "CULT", "CUNY", "CURB", "CURD", | ||
| 1146 | "CURE", "CURL", "CURT", "CUTS", "DADE", "DALE", "DAME", "DANA", | ||
| 1147 | "DANE", "DANG", "DANK", "DARE", "DARK", "DARN", "DART", "DASH", | ||
| 1148 | "DATA", "DATE", "DAVE", "DAVY", "DAWN", "DAYS", "DEAD", "DEAF", | ||
| 1149 | "DEAL", "DEAN", "DEAR", "DEBT", "DECK", "DEED", "DEEM", "DEER", | ||
| 1150 | "DEFT", "DEFY", "DELL", "DENT", "DENY", "DESK", "DIAL", "DICE", | ||
| 1151 | "DIED", "DIET", "DIME", "DINE", "DING", "DINT", "DIRE", "DIRT", | ||
| 1152 | "DISC", "DISH", "DISK", "DIVE", "DOCK", "DOES", "DOLE", "DOLL", | ||
| 1153 | "DOLT", "DOME", "DONE", "DOOM", "DOOR", "DORA", "DOSE", "DOTE", | ||
| 1154 | "DOUG", "DOUR", "DOVE", "DOWN", "DRAB", "DRAG", "DRAM", "DRAW", | ||
| 1155 | "DREW", "DRUB", "DRUG", "DRUM", "DUAL", "DUCK", "DUCT", "DUEL", | ||
| 1156 | "DUET", "DUKE", "DULL", "DUMB", "DUNE", "DUNK", "DUSK", "DUST", | ||
| 1157 | "DUTY", "EACH", "EARL", "EARN", "EASE", "EAST", "EASY", "EBEN", | ||
| 1158 | "ECHO", "EDDY", "EDEN", "EDGE", "EDGY", "EDIT", "EDNA", "EGAN", | ||
| 1159 | "ELAN", "ELBA", "ELLA", "ELSE", "EMIL", "EMIT", "EMMA", "ENDS", | ||
| 1160 | "ERIC", "EROS", "EVEN", "EVER", "EVIL", "EYED", "FACE", "FACT", | ||
| 1161 | "FADE", "FAIL", "FAIN", "FAIR", "FAKE", "FALL", "FAME", "FANG", | ||
| 1162 | "FARM", "FAST", "FATE", "FAWN", "FEAR", "FEAT", "FEED", "FEEL", | ||
| 1163 | "FEET", "FELL", "FELT", "FEND", "FERN", "FEST", "FEUD", "FIEF", | ||
| 1164 | "FIGS", "FILE", "FILL", "FILM", "FIND", "FINE", "FINK", "FIRE", | ||
| 1165 | "FIRM", "FISH", "FISK", "FIST", "FITS", "FIVE", "FLAG", "FLAK", | ||
| 1166 | "FLAM", "FLAT", "FLAW", "FLEA", "FLED", "FLEW", "FLIT", "FLOC", | ||
| 1167 | "FLOG", "FLOW", "FLUB", "FLUE", "FOAL", "FOAM", "FOGY", "FOIL", | ||
| 1168 | "FOLD", "FOLK", "FOND", "FONT", "FOOD", "FOOL", "FOOT", "FORD", | ||
| 1169 | "FORE", "FORK", "FORM", "FORT", "FOSS", "FOUL", "FOUR", "FOWL", | ||
| 1170 | "FRAU", "FRAY", "FRED", "FREE", "FRET", "FREY", "FROG", "FROM", | ||
| 1171 | "FUEL", "FULL", "FUME", "FUND", "FUNK", "FURY", "FUSE", "FUSS", | ||
| 1172 | "GAFF", "GAGE", "GAIL", "GAIN", "GAIT", "GALA", "GALE", "GALL", | ||
| 1173 | "GALT", "GAME", "GANG", "GARB", "GARY", "GASH", "GATE", "GAUL", | ||
| 1174 | "GAUR", "GAVE", "GAWK", "GEAR", "GELD", "GENE", "GENT", "GERM", | ||
| 1175 | |||
| 1176 | |||
| 1177 | |||
| 1178 | Haller Standards Track [Page 21] | ||
| 1179 | |||
| 1180 | RFC 2289 A One-Time Password System February 1998 | ||
| 1181 | |||
| 1182 | |||
| 1183 | "GETS", "GIBE", "GIFT", "GILD", "GILL", "GILT", "GINA", "GIRD", | ||
| 1184 | "GIRL", "GIST", "GIVE", "GLAD", "GLEE", "GLEN", "GLIB", "GLOB", | ||
| 1185 | "GLOM", "GLOW", "GLUE", "GLUM", "GLUT", "GOAD", "GOAL", "GOAT", | ||
| 1186 | "GOER", "GOES", "GOLD", "GOLF", "GONE", "GONG", "GOOD", "GOOF", | ||
| 1187 | "GORE", "GORY", "GOSH", "GOUT", "GOWN", "GRAB", "GRAD", "GRAY", | ||
| 1188 | "GREG", "GREW", "GREY", "GRID", "GRIM", "GRIN", "GRIT", "GROW", | ||
| 1189 | "GRUB", "GULF", "GULL", "GUNK", "GURU", "GUSH", "GUST", "GWEN", | ||
| 1190 | "GWYN", "HAAG", "HAAS", "HACK", "HAIL", "HAIR", "HALE", "HALF", | ||
| 1191 | "HALL", "HALO", "HALT", "HAND", "HANG", "HANK", "HANS", "HARD", | ||
| 1192 | "HARK", "HARM", "HART", "HASH", "HAST", "HATE", "HATH", "HAUL", | ||
| 1193 | "HAVE", "HAWK", "HAYS", "HEAD", "HEAL", "HEAR", "HEAT", "HEBE", | ||
| 1194 | "HECK", "HEED", "HEEL", "HEFT", "HELD", "HELL", "HELM", "HERB", | ||
| 1195 | "HERD", "HERE", "HERO", "HERS", "HESS", "HEWN", "HICK", "HIDE", | ||
| 1196 | "HIGH", "HIKE", "HILL", "HILT", "HIND", "HINT", "HIRE", "HISS", | ||
| 1197 | "HIVE", "HOBO", "HOCK", "HOFF", "HOLD", "HOLE", "HOLM", "HOLT", | ||
| 1198 | "HOME", "HONE", "HONK", "HOOD", "HOOF", "HOOK", "HOOT", "HORN", | ||
| 1199 | "HOSE", "HOST", "HOUR", "HOVE", "HOWE", "HOWL", "HOYT", "HUCK", | ||
| 1200 | "HUED", "HUFF", "HUGE", "HUGH", "HUGO", "HULK", "HULL", "HUNK", | ||
| 1201 | "HUNT", "HURD", "HURL", "HURT", "HUSH", "HYDE", "HYMN", "IBIS", | ||
| 1202 | "ICON", "IDEA", "IDLE", "IFFY", "INCA", "INCH", "INTO", "IONS", | ||
| 1203 | "IOTA", "IOWA", "IRIS", "IRMA", "IRON", "ISLE", "ITCH", "ITEM", | ||
| 1204 | "IVAN", "JACK", "JADE", "JAIL", "JAKE", "JANE", "JAVA", "JEAN", | ||
| 1205 | "JEFF", "JERK", "JESS", "JEST", "JIBE", "JILL", "JILT", "JIVE", | ||
| 1206 | "JOAN", "JOBS", "JOCK", "JOEL", "JOEY", "JOHN", "JOIN", "JOKE", | ||
| 1207 | "JOLT", "JOVE", "JUDD", "JUDE", "JUDO", "JUDY", "JUJU", "JUKE", | ||
| 1208 | "JULY", "JUNE", "JUNK", "JUNO", "JURY", "JUST", "JUTE", "KAHN", | ||
| 1209 | "KALE", "KANE", "KANT", "KARL", "KATE", "KEEL", "KEEN", "KENO", | ||
| 1210 | "KENT", "KERN", "KERR", "KEYS", "KICK", "KILL", "KIND", "KING", | ||
| 1211 | "KIRK", "KISS", "KITE", "KLAN", "KNEE", "KNEW", "KNIT", "KNOB", | ||
| 1212 | "KNOT", "KNOW", "KOCH", "KONG", "KUDO", "KURD", "KURT", "KYLE", | ||
| 1213 | "LACE", "LACK", "LACY", "LADY", "LAID", "LAIN", "LAIR", "LAKE", | ||
| 1214 | "LAMB", "LAME", "LAND", "LANE", "LANG", "LARD", "LARK", "LASS", | ||
| 1215 | "LAST", "LATE", "LAUD", "LAVA", "LAWN", "LAWS", "LAYS", "LEAD", | ||
| 1216 | "LEAF", "LEAK", "LEAN", "LEAR", "LEEK", "LEER", "LEFT", "LEND", | ||
| 1217 | "LENS", "LENT", "LEON", "LESK", "LESS", "LEST", "LETS", "LIAR", | ||
| 1218 | "LICE", "LICK", "LIED", "LIEN", "LIES", "LIEU", "LIFE", "LIFT", | ||
| 1219 | "LIKE", "LILA", "LILT", "LILY", "LIMA", "LIMB", "LIME", "LIND", | ||
| 1220 | "LINE", "LINK", "LINT", "LION", "LISA", "LIST", "LIVE", "LOAD", | ||
| 1221 | "LOAF", "LOAM", "LOAN", "LOCK", "LOFT", "LOGE", "LOIS", "LOLA", | ||
| 1222 | "LONE", "LONG", "LOOK", "LOON", "LOOT", "LORD", "LORE", "LOSE", | ||
| 1223 | "LOSS", "LOST", "LOUD", "LOVE", "LOWE", "LUCK", "LUCY", "LUGE", | ||
| 1224 | "LUKE", "LULU", "LUND", "LUNG", "LURA", "LURE", "LURK", "LUSH", | ||
| 1225 | "LUST", "LYLE", "LYNN", "LYON", "LYRA", "MACE", "MADE", "MAGI", | ||
| 1226 | "MAID", "MAIL", "MAIN", "MAKE", "MALE", "MALI", "MALL", "MALT", | ||
| 1227 | "MANA", "MANN", "MANY", "MARC", "MARE", "MARK", "MARS", "MART", | ||
| 1228 | "MARY", "MASH", "MASK", "MASS", "MAST", "MATE", "MATH", "MAUL", | ||
| 1229 | "MAYO", "MEAD", "MEAL", "MEAN", "MEAT", "MEEK", "MEET", "MELD", | ||
| 1230 | "MELT", "MEMO", "MEND", "MENU", "MERT", "MESH", "MESS", "MICE", | ||
| 1231 | |||
| 1232 | |||
| 1233 | |||
| 1234 | Haller Standards Track [Page 22] | ||
| 1235 | |||
| 1236 | RFC 2289 A One-Time Password System February 1998 | ||
| 1237 | |||
| 1238 | |||
| 1239 | "MIKE", "MILD", "MILE", "MILK", "MILL", "MILT", "MIMI", "MIND", | ||
| 1240 | "MINE", "MINI", "MINK", "MINT", "MIRE", "MISS", "MIST", "MITE", | ||
| 1241 | "MITT", "MOAN", "MOAT", "MOCK", "MODE", "MOLD", "MOLE", "MOLL", | ||
| 1242 | "MOLT", "MONA", "MONK", "MONT", "MOOD", "MOON", "MOOR", "MOOT", | ||
| 1243 | "MORE", "MORN", "MORT", "MOSS", "MOST", "MOTH", "MOVE", "MUCH", | ||
| 1244 | "MUCK", "MUDD", "MUFF", "MULE", "MULL", "MURK", "MUSH", "MUST", | ||
| 1245 | "MUTE", "MUTT", "MYRA", "MYTH", "NAGY", "NAIL", "NAIR", "NAME", | ||
| 1246 | "NARY", "NASH", "NAVE", "NAVY", "NEAL", "NEAR", "NEAT", "NECK", | ||
| 1247 | "NEED", "NEIL", "NELL", "NEON", "NERO", "NESS", "NEST", "NEWS", | ||
| 1248 | "NEWT", "NIBS", "NICE", "NICK", "NILE", "NINA", "NINE", "NOAH", | ||
| 1249 | "NODE", "NOEL", "NOLL", "NONE", "NOOK", "NOON", "NORM", "NOSE", | ||
| 1250 | "NOTE", "NOUN", "NOVA", "NUDE", "NULL", "NUMB", "OATH", "OBEY", | ||
| 1251 | "OBOE", "ODIN", "OHIO", "OILY", "OINT", "OKAY", "OLAF", "OLDY", | ||
| 1252 | "OLGA", "OLIN", "OMAN", "OMEN", "OMIT", "ONCE", "ONES", "ONLY", | ||
| 1253 | "ONTO", "ONUS", "ORAL", "ORGY", "OSLO", "OTIS", "OTTO", "OUCH", | ||
| 1254 | "OUST", "OUTS", "OVAL", "OVEN", "OVER", "OWLY", "OWNS", "QUAD", | ||
| 1255 | "QUIT", "QUOD", "RACE", "RACK", "RACY", "RAFT", "RAGE", "RAID", | ||
| 1256 | "RAIL", "RAIN", "RAKE", "RANK", "RANT", "RARE", "RASH", "RATE", | ||
| 1257 | "RAVE", "RAYS", "READ", "REAL", "REAM", "REAR", "RECK", "REED", | ||
| 1258 | "REEF", "REEK", "REEL", "REID", "REIN", "RENA", "REND", "RENT", | ||
| 1259 | "REST", "RICE", "RICH", "RICK", "RIDE", "RIFT", "RILL", "RIME", | ||
| 1260 | "RING", "RINK", "RISE", "RISK", "RITE", "ROAD", "ROAM", "ROAR", | ||
| 1261 | "ROBE", "ROCK", "RODE", "ROIL", "ROLL", "ROME", "ROOD", "ROOF", | ||
| 1262 | "ROOK", "ROOM", "ROOT", "ROSA", "ROSE", "ROSS", "ROSY", "ROTH", | ||
| 1263 | "ROUT", "ROVE", "ROWE", "ROWS", "RUBE", "RUBY", "RUDE", "RUDY", | ||
| 1264 | "RUIN", "RULE", "RUNG", "RUNS", "RUNT", "RUSE", "RUSH", "RUSK", | ||
| 1265 | "RUSS", "RUST", "RUTH", "SACK", "SAFE", "SAGE", "SAID", "SAIL", | ||
| 1266 | "SALE", "SALK", "SALT", "SAME", "SAND", "SANE", "SANG", "SANK", | ||
| 1267 | "SARA", "SAUL", "SAVE", "SAYS", "SCAN", "SCAR", "SCAT", "SCOT", | ||
| 1268 | "SEAL", "SEAM", "SEAR", "SEAT", "SEED", "SEEK", "SEEM", "SEEN", | ||
| 1269 | "SEES", "SELF", "SELL", "SEND", "SENT", "SETS", "SEWN", "SHAG", | ||
| 1270 | "SHAM", "SHAW", "SHAY", "SHED", "SHIM", "SHIN", "SHOD", "SHOE", | ||
| 1271 | "SHOT", "SHOW", "SHUN", "SHUT", "SICK", "SIDE", "SIFT", "SIGH", | ||
| 1272 | "SIGN", "SILK", "SILL", "SILO", "SILT", "SINE", "SING", "SINK", | ||
| 1273 | "SIRE", "SITE", "SITS", "SITU", "SKAT", "SKEW", "SKID", "SKIM", | ||
| 1274 | "SKIN", "SKIT", "SLAB", "SLAM", "SLAT", "SLAY", "SLED", "SLEW", | ||
| 1275 | "SLID", "SLIM", "SLIT", "SLOB", "SLOG", "SLOT", "SLOW", "SLUG", | ||
| 1276 | "SLUM", "SLUR", "SMOG", "SMUG", "SNAG", "SNOB", "SNOW", "SNUB", | ||
| 1277 | "SNUG", "SOAK", "SOAR", "SOCK", "SODA", "SOFA", "SOFT", "SOIL", | ||
| 1278 | "SOLD", "SOME", "SONG", "SOON", "SOOT", "SORE", "SORT", "SOUL", | ||
| 1279 | "SOUR", "SOWN", "STAB", "STAG", "STAN", "STAR", "STAY", "STEM", | ||
| 1280 | "STEW", "STIR", "STOW", "STUB", "STUN", "SUCH", "SUDS", "SUIT", | ||
| 1281 | "SULK", "SUMS", "SUNG", "SUNK", "SURE", "SURF", "SWAB", "SWAG", | ||
| 1282 | "SWAM", "SWAN", "SWAT", "SWAY", "SWIM", "SWUM", "TACK", "TACT", | ||
| 1283 | "TAIL", "TAKE", "TALE", "TALK", "TALL", "TANK", "TASK", "TATE", | ||
| 1284 | "TAUT", "TEAL", "TEAM", "TEAR", "TECH", "TEEM", "TEEN", "TEET", | ||
| 1285 | "TELL", "TEND", "TENT", "TERM", "TERN", "TESS", "TEST", "THAN", | ||
| 1286 | "THAT", "THEE", "THEM", "THEN", "THEY", "THIN", "THIS", "THUD", | ||
| 1287 | |||
| 1288 | |||
| 1289 | |||
| 1290 | Haller Standards Track [Page 23] | ||
| 1291 | |||
| 1292 | RFC 2289 A One-Time Password System February 1998 | ||
| 1293 | |||
| 1294 | |||
| 1295 | "THUG", "TICK", "TIDE", "TIDY", "TIED", "TIER", "TILE", "TILL", | ||
| 1296 | "TILT", "TIME", "TINA", "TINE", "TINT", "TINY", "TIRE", "TOAD", | ||
| 1297 | "TOGO", "TOIL", "TOLD", "TOLL", "TONE", "TONG", "TONY", "TOOK", | ||
| 1298 | "TOOL", "TOOT", "TORE", "TORN", "TOTE", "TOUR", "TOUT", "TOWN", | ||
| 1299 | "TRAG", "TRAM", "TRAY", "TREE", "TREK", "TRIG", "TRIM", "TRIO", | ||
| 1300 | "TROD", "TROT", "TROY", "TRUE", "TUBA", "TUBE", "TUCK", "TUFT", | ||
| 1301 | "TUNA", "TUNE", "TUNG", "TURF", "TURN", "TUSK", "TWIG", "TWIN", | ||
| 1302 | "TWIT", "ULAN", "UNIT", "URGE", "USED", "USER", "USES", "UTAH", | ||
| 1303 | "VAIL", "VAIN", "VALE", "VARY", "VASE", "VAST", "VEAL", "VEDA", | ||
| 1304 | "VEIL", "VEIN", "VEND", "VENT", "VERB", "VERY", "VETO", "VICE", | ||
| 1305 | "VIEW", "VINE", "VISE", "VOID", "VOLT", "VOTE", "WACK", "WADE", | ||
| 1306 | "WAGE", "WAIL", "WAIT", "WAKE", "WALE", "WALK", "WALL", "WALT", | ||
| 1307 | "WAND", "WANE", "WANG", "WANT", "WARD", "WARM", "WARN", "WART", | ||
| 1308 | "WASH", "WAST", "WATS", "WATT", "WAVE", "WAVY", "WAYS", "WEAK", | ||
| 1309 | "WEAL", "WEAN", "WEAR", "WEED", "WEEK", "WEIR", "WELD", "WELL", | ||
| 1310 | "WELT", "WENT", "WERE", "WERT", "WEST", "WHAM", "WHAT", "WHEE", | ||
| 1311 | "WHEN", "WHET", "WHOA", "WHOM", "WICK", "WIFE", "WILD", "WILL", | ||
| 1312 | "WIND", "WINE", "WING", "WINK", "WINO", "WIRE", "WISE", "WISH", | ||
| 1313 | "WITH", "WOLF", "WONT", "WOOD", "WOOL", "WORD", "WORE", "WORK", | ||
| 1314 | "WORM", "WORN", "WOVE", "WRIT", "WYNN", "YALE", "YANG", "YANK", | ||
| 1315 | "YARD", "YARN", "YAWL", "YAWN", "YEAH", "YEAR", "YELL", "YOGA", | ||
| 1316 | "YOKE" }; | ||
| 1317 | |||
| 1318 | |||
| 1319 | |||
| 1320 | |||
| 1321 | |||
| 1322 | |||
| 1323 | |||
| 1324 | |||
| 1325 | |||
| 1326 | |||
| 1327 | |||
| 1328 | |||
| 1329 | |||
| 1330 | |||
| 1331 | |||
| 1332 | |||
| 1333 | |||
| 1334 | |||
| 1335 | |||
| 1336 | |||
| 1337 | |||
| 1338 | |||
| 1339 | |||
| 1340 | |||
| 1341 | |||
| 1342 | |||
| 1343 | |||
| 1344 | |||
| 1345 | |||
| 1346 | Haller Standards Track [Page 24] | ||
| 1347 | |||
| 1348 | RFC 2289 A One-Time Password System February 1998 | ||
| 1349 | |||
| 1350 | |||
| 1351 | Full Copyright Statement | ||
| 1352 | |||
| 1353 | Copyright (C) The Internet Society (1998). All Rights Reserved. | ||
| 1354 | |||
| 1355 | This document and translations of it may be copied and furnished to | ||
| 1356 | others, and derivative works that comment on or otherwise explain it | ||
| 1357 | or assist in its implementation may be prepared, copied, published | ||
| 1358 | and distributed, in whole or in part, without restriction of any | ||
| 1359 | kind, provided that the above copyright notice and this paragraph are | ||
| 1360 | included on all such copies and derivative works. However, this | ||
| 1361 | document itself may not be modified in any way, such as by removing | ||
| 1362 | the copyright notice or references to the Internet Society or other | ||
| 1363 | Internet organizations, except as needed for the purpose of | ||
| 1364 | developing Internet standards in which case the procedures for | ||
| 1365 | copyrights defined in the Internet Standards process must be | ||
| 1366 | followed, or as required to translate it into languages other than | ||
| 1367 | English. | ||
| 1368 | |||
| 1369 | The limited permissions granted above are perpetual and will not be | ||
| 1370 | revoked by the Internet Society or its successors or assigns. | ||
| 1371 | |||
| 1372 | This document and the information contained herein is provided on an | ||
| 1373 | "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING | ||
| 1374 | TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING | ||
| 1375 | BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION | ||
| 1376 | HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF | ||
| 1377 | MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. | ||
| 1378 | |||
| 1379 | |||
| 1380 | |||
| 1381 | |||
| 1382 | |||
| 1383 | |||
| 1384 | |||
| 1385 | |||
| 1386 | |||
| 1387 | |||
| 1388 | |||
| 1389 | |||
| 1390 | |||
| 1391 | |||
| 1392 | |||
| 1393 | |||
| 1394 | |||
| 1395 | |||
| 1396 | |||
| 1397 | |||
| 1398 | |||
| 1399 | |||
| 1400 | |||
| 1401 | |||
| 1402 | Haller Standards Track [Page 25] | ||
| 1403 | |||
