aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/docs
diff options
context:
space:
mode:
authorDavid M. Syzdek <david@syzdek.net>2023-01-05 23:24:45 -0900
committerDavid M. Syzdek <david@syzdek.net>2023-01-05 23:24:45 -0900
commit20c498fd5c9ba7d7862c63bf0e296d2cf0e00eec (patch)
treecfa0e266f88d46446890ae340efb59a89a8b39b8 /docs
parent4201220774786a854f86db74ed87b11030e488c0 (diff)
downloadotputils-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.txt675
-rw-r--r--docs/rfc2289.txt1403
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
7Network Working Group N. Haller
8Request for Comments: 1760 Bellcore
9Category: Informational February 1995
10
11
12 The S/KEY One-Time Password System
13
14Status 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
20Abstract
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
27Overview
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
58Haller [Page 1]
59
60RFC 1760 The S/KEY One-Time Password System February 1995
61
62
63Introduction
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
80Secure 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
102Generation 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
114Haller [Page 2]
115
116RFC 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
155Form 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
170Haller [Page 3]
171
172RFC 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
179Verification 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
216Clients
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
226Haller [Page 4]
227
228RFC 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
244Acknowledgements
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
250References
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
282Haller [Page 5]
283
284RFC 1760 The S/KEY One-Time Password System February 1995
285
286
287Security Considerations
288
289 This entire document is about Security Considerations.
290
291Author'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
338Haller [Page 6]
339
340RFC 1760 The S/KEY One-Time Password System February 1995
341
342
343Dictionary 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
394Haller [Page 7]
395
396RFC 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
450Haller [Page 8]
451
452RFC 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
506Haller [Page 9]
507
508RFC 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
562Haller [Page 10]
563
564RFC 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
618Haller [Page 11]
619
620RFC 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
674Haller [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
7Network Working Group N. Haller
8Request for Comments: 2289 Bellcore
9Obsoletes: 1938 C. Metz
10Category: 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
20Status 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
28Copyright Notice
29
30 Copyright (C) The Internet Society (1998). All Rights Reserved.
31
321.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
422.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
58Haller Standards Track [Page 1]
59
60RFC 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
733.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
964.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
114Haller Standards Track [Page 2]
115
116RFC 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
1345.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
1566.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
170Haller Standards Track [Page 3]
171
172RFC 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
226Haller Standards Track [Page 4]
227
228RFC 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
282Haller Standards Track [Page 5]
283
284RFC 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
338Haller Standards Track [Page 6]
339
340RFC 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
3517.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
3688.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
394Haller Standards Track [Page 7]
395
396RFC 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
4159.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
43410.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
450Haller Standards Track [Page 8]
451
452RFC 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
46211.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
46912.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
506Haller Standards Track [Page 9]
507
508RFC 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
562Haller Standards Track [Page 10]
563
564RFC 2289 A One-Time Password System February 1998
565
566
56713.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
618Haller Standards Track [Page 11]
619
620RFC 2289 A One-Time Password System February 1998
621
622
623Appendix 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
674Haller Standards Track [Page 12]
675
676RFC 2289 A One-Time Password System February 1998
677
678
679MD5 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
694SHA 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
730Haller Standards Track [Page 13]
731
732RFC 2289 A One-Time Password System February 1998
733
734
735Appendix 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
786Haller Standards Track [Page 14]
787
788RFC 2289 A One-Time Password System February 1998
789
790
791Appendix 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
82463
825
826Seed 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
842Haller Standards Track [Page 15]
843
844RFC 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
861Parity 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
898Haller Standards Track [Page 16]
899
900RFC 2289 A One-Time Password System February 1998
901
902
903MD4 ENCODINGS
904
905Pass Phrase Seed Cnt Hex Six Word Format
906========================================================================
907This is a test. TeSt 0 D185 4218 EBBB 0B51
908 ROME MUG FRED SCAN LIVE LACE
909This is a test. TeSt 1 6347 3EF0 1CD0 B444
910 CARD SAD MINI RYE COL KIN
911This is a test. TeSt 99 C5E6 1277 6E6C 237A
912 NOTE OUT IBIS SINK NAVE MODE
913AbCdEfGhIjK alpha1 0 5007 6F47 EB1A DE4E
914 AWAY SEN ROOK SALT LICE MAP
915AbCdEfGhIjK alpha1 1 65D2 0D19 49B5 F7AB
916 CHEW GRIM WU HANG BUCK SAID
917AbCdEfGhIjK alpha1 99 D150 C82C CE6F 62D1
918 ROIL FREE COG HUNK WAIT COCA
919OTP's are good correct 0 849C 79D4 F6F5 5388
920 FOOL STEM DONE TOOL BECK NILE
921OTP's are good correct 1 8C09 92FB 2508 47B1
922 GIST AMOS MOOT AIDS FOOD SEEM
923OTP'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
954Haller Standards Track [Page 17]
955
956RFC 2289 A One-Time Password System February 1998
957
958
959MD5 ENCODINGS
960
961Pass Phrase Seed Cnt Hex Six Word Format
962========================================================================
963This is a test. TeSt 0 9E87 6134 D904 99DD
964 INCH SEA ANNE LONG AHEM TOUR
965This is a test. TeSt 1 7965 E054 36F5 029F
966 EASE OIL FUM CURE AWRY AVIS
967This is a test. TeSt 99 50FE 1962 C496 5880
968 BAIL TUFT BITS GANG CHEF THY
969AbCdEfGhIjK alpha1 0 8706 6DD9 644B F206
970 FULL PEW DOWN ONCE MORT ARC
971AbCdEfGhIjK alpha1 1 7CD3 4C10 40AD D14B
972 FACT HOOF AT FIST SITE KENT
973AbCdEfGhIjK alpha1 99 5AA3 7A81 F212 146C
974 BODE HOP JAKE STOW JUT RAP
975OTP's are good correct 0 F205 7539 43DE 4CF9
976 ULAN NEW ARMY FUSE SUIT EYED
977OTP's are good correct 1 DDCD AC95 6F23 4937
978 SKIM CULT LOB SLAM POE HOWL
979OTP's are good correct 99 B203 E28F A525 BE47
980 LONG IVY JULY AJAR BOND LEE
981
982
983SHA1 ENCODINGS
984
985Pass Phrase Seed Cnt Hex Six Word Format
986========================================================================
987This is a test. TeSt 0 BB9E 6AE1 979D 8FF4
988 MILT VARY MAST OK SEES WENT
989This is a test. TeSt 1 63D9 3663 9734 385B
990 CART OTTO HIVE ODE VAT NUT
991This is a test. TeSt 99 87FE C776 8B73 CCF9
992 GAFF WAIT SKID GIG SKY EYED
993AbCdEfGhIjK alpha1 0 AD85 F658 EBE3 83C9
994 LEST OR HEEL SCOT ROB SUIT
995AbCdEfGhIjK alpha1 1 D07C E229 B5CF 119B
996 RITE TAKE GELD COST TUNE RECK
997AbCdEfGhIjK alpha1 99 27BC 7103 5AAF 3DC6
998 MAY STAR TIN LYON VEDA STAN
999OTP's are good correct 0 D51F 3E99 BF8E 6F0B
1000 RUST WELT KICK FELL TAIL FRAU
1001OTP's are good correct 1 82AE B52D 9437 74E4
1002 FLIT DOSE ALSO MEW DRUM DEFY
1003OTP's are good correct 99 4F29 6A74 FE15 67EC
1004 AURA ALOE HURL WING BERG WAIT
1005
1006
1007
1008
1009
1010Haller Standards Track [Page 18]
1011
1012RFC 2289 A One-Time Password System February 1998
1013
1014
1015Appendix 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
1066Haller Standards Track [Page 19]
1067
1068RFC 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
1122Haller Standards Track [Page 20]
1123
1124RFC 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
1178Haller Standards Track [Page 21]
1179
1180RFC 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
1234Haller Standards Track [Page 22]
1235
1236RFC 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
1290Haller Standards Track [Page 23]
1291
1292RFC 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
1346Haller Standards Track [Page 24]
1347
1348RFC 2289 A One-Time Password System February 1998
1349
1350
1351Full 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
1402Haller Standards Track [Page 25]
1403