|
|
1.1 ! root 1: .\" @(#)password 6.1 (Berkeley) 5/14/86 ! 2: .\" ! 3: .\" tbl mm ^ eqn ^ troff -ms ! 4: .EH 'SMM:18-%''Password Security: A Case History' ! 5: .OH 'Password Security: A Case History''SMM:18-%' ! 6: .EQ ! 7: delim $$ ! 8: .EN ! 9: .\".RP ! 10: ....TM 78-1271-5 39199 39199-11 ! 11: .ND April 3, 1978 ! 12: .TL ! 13: Password Security: ! 14: A Case History ! 15: .OK ! 16: .\"Encryption ! 17: .\"Computing ! 18: .AU "MH 2C-524" 3878 ! 19: Robert Morris ! 20: .AU "MH 2C-523" 2394 ! 21: Ken Thompson ! 22: .AI ! 23: .MH ! 24: .AB ! 25: This paper describes the history of the design of the ! 26: password security scheme on a remotely accessed time-sharing ! 27: system. ! 28: The present design was the result of countering ! 29: observed attempts to penetrate the system. ! 30: The result is a compromise between extreme security and ! 31: ease of use. ! 32: .AE ! 33: .CS 6 0 6 0 0 4 ! 34: .SH ! 35: INTRODUCTION ! 36: .PP ! 37: Password security on the ! 38: .UX ! 39: time-sharing system [1] is provided by a ! 40: collection of programs ! 41: whose elaborate and strange design is the outgrowth of ! 42: many years of experience with earlier versions. ! 43: To help develop a secure system, we have had a continuing ! 44: competition to devise new ways to ! 45: attack the security of the system (the bad guy) and, at the same time, to ! 46: devise new techniques to resist the new attacks (the good guy). ! 47: This competition has been in the same vein as the ! 48: competition of long standing between manufacturers of armor ! 49: plate and those of armor-piercing shells. ! 50: For this reason, the description that follows will ! 51: trace the history of the password system rather than simply ! 52: presenting the program in its current state. ! 53: In this way, the reasons for the design will be made clearer, ! 54: as the design cannot be understood without also ! 55: understanding the potential attacks. ! 56: .PP ! 57: An underlying goal has been to provide password security ! 58: at minimal inconvenience to the users of the system. ! 59: For example, those who want to run a completely open ! 60: system without passwords, or to have passwords only at the ! 61: option of the individual users, are able to do so, while ! 62: those who require all of their users to have passwords ! 63: gain a high degree of security ! 64: against penetration of the system by unauthorized ! 65: users. ! 66: .PP ! 67: The password system must be able not only to prevent ! 68: any access to the system by unauthorized users ! 69: (i.e. prevent them from logging in at all), ! 70: but it must also ! 71: prevent users who are already logged in from doing ! 72: things that they are not authorized to do. ! 73: The so called ``super-user'' password, for example, is especially ! 74: critical because the super-user has all sorts of ! 75: permissions and has essentially unlimited access to ! 76: all system resources. ! 77: .PP ! 78: Password security is of course only one component of ! 79: overall system security, but it is an essential component. ! 80: Experience has shown that attempts to penetrate ! 81: remote-access systems have been astonishingly ! 82: sophisticated. ! 83: .PP ! 84: Remote-access systems are peculiarly vulnerable to ! 85: penetration by outsiders as there are threats at the ! 86: remote terminal, along the communications link, as well ! 87: as at the computer itself. ! 88: Although the security of a password encryption algorithm ! 89: is an interesting intellectual and mathematical problem, ! 90: it is only one tiny facet of a very large problem. ! 91: In practice, physical security of the computer, communications ! 92: security of the communications link, and physical control ! 93: of the computer itself loom as far more important issues. ! 94: Perhaps most important of all is control over the actions ! 95: of ex-employees, since they are not under any direct control ! 96: and they may have intimate ! 97: knowledge about the system, its resources, and ! 98: methods of access. ! 99: Good system security involves realistic ! 100: evaluation of the risks not only of deliberate ! 101: attacks but also of casual unauthorized access ! 102: and accidental disclosure. ! 103: .SH ! 104: PROLOGUE ! 105: .PP ! 106: The UNIX system was first implemented with a password file that contained ! 107: the actual passwords of all the users, and for that reason ! 108: the password file had to ! 109: be heavily protected against being either read or written. ! 110: Although historically, this had been the technique used ! 111: for remote-access systems, ! 112: it was completely unsatisfactory for several reasons. ! 113: .PP ! 114: The technique is excessively vulnerable to lapses in ! 115: security. ! 116: Temporary loss of protection can occur when ! 117: the password file is being edited or otherwise modified. ! 118: There is no way to prevent the making of copies by ! 119: privileged users. ! 120: Experience with several earlier remote-access systems ! 121: showed that such lapses occur with frightening frequency. ! 122: Perhaps the most memorable such occasion occurred ! 123: in the early 60's when ! 124: a system administrator on the CTSS system at MIT ! 125: was editing the ! 126: password file and another system administrator was editing ! 127: the daily message that is printed on everyone's terminal ! 128: on login. ! 129: Due to a software design error, the temporary editor files ! 130: of the two users were interchanged and thus, for a time, the password ! 131: file was printed on every terminal when it was logged in. ! 132: .PP ! 133: Once such a lapse in security has been discovered, everyone's ! 134: password must be changed, usually simultaneously, at a considerable ! 135: administrative cost. ! 136: This is not a great matter, but ! 137: far more serious is the high probability of such lapses ! 138: going unnoticed by the system administrators. ! 139: .PP ! 140: Security against unauthorized disclosure of the passwords was, ! 141: in the last analysis, impossible with this system because, ! 142: for example, if the ! 143: contents of the file system are put on to magnetic tape for ! 144: backup, as they must be, then anyone who has physical ! 145: access to the tape ! 146: can read anything on it with no restriction. ! 147: .PP ! 148: Many programs must get information of various kinds ! 149: about the users of the system, and these programs in general ! 150: should have no special permission to read the password file. ! 151: The information which should have been in the password file actually was ! 152: distributed (or replicated) into a number of files, all of ! 153: which had to be updated whenever a user was added to or ! 154: dropped from the system. ! 155: .SH ! 156: THE FIRST SCHEME ! 157: .PP ! 158: The obvious solution is to arrange that the passwords not ! 159: appear in the system at all, and it is not difficult to decide ! 160: that this can be done by encrypting each user's password, ! 161: putting only the encrypted form in the password file, and ! 162: throwing away his original password (the one that ! 163: he typed in). ! 164: When the user later tries to log in to the system, the password ! 165: that he types is encrypted and compared with the encrypted ! 166: version in the password file. ! 167: If the two match, his login attempt is accepted. ! 168: Such a scheme was first described ! 169: in [3, p.91ff.]. ! 170: It also seemed advisable to devise ! 171: a system in which neither the password file nor the ! 172: password program itself needed to be ! 173: protected against being read by anyone. ! 174: .PP ! 175: All that was needed to implement these ideas ! 176: was to find a means of encryption that was very difficult ! 177: to invert, even when the encryption program ! 178: is available. ! 179: Most of the standard encryption methods used (in the past) ! 180: for encryption of messages are rather easy to invert. ! 181: A convenient and rather good encryption program happened ! 182: to exist on the system at the time; it simulated the ! 183: M-209 cipher machine [4] ! 184: used by the U.S. Army during World War II. ! 185: It turned out that the M-209 program was usable, but with ! 186: a given key, the ciphers produced by this program are ! 187: trivial to invert. ! 188: It is a much more difficult matter to find out the key ! 189: given the cleartext input and the enciphered output of the program. ! 190: Therefore, ! 191: the password was used not as the text to be encrypted but as the ! 192: key, and a constant was encrypted using this key. ! 193: The encrypted result was entered into the password file. ! 194: .SH ! 195: ATTACKS ON THE FIRST APPROACH ! 196: .PP ! 197: Suppose that the bad guy has available ! 198: the text of the password encryption program and ! 199: the complete password file. ! 200: Suppose also that he has substantial computing ! 201: capacity at his disposal. ! 202: .PP ! 203: One obvious approach to penetrating the password ! 204: mechanism is to attempt to find a general method of inverting ! 205: the encryption algorithm. ! 206: Very possibly this can be done, but few ! 207: successful results ! 208: have come to light, despite substantial efforts extending ! 209: over a period of more than five years. ! 210: The results have not proved to be very useful ! 211: in penetrating systems. ! 212: .PP ! 213: Another approach to penetration is simply to keep trying ! 214: potential ! 215: passwords until one succeeds; this is a general cryptanalytic ! 216: approach called ! 217: .I ! 218: key search. ! 219: .R ! 220: Human beings being what they are, there is a strong tendency ! 221: for people to choose relatively short and simple passwords that ! 222: they can remember. ! 223: Given free choice, most people will choose their passwords ! 224: from a restricted character set (e.g. all lower-case letters), ! 225: and will often choose words or names. ! 226: This human habit makes the key search job a great deal easier. ! 227: .PP ! 228: The critical factor involved in key search is the amount of ! 229: time needed to encrypt a potential password and to check the result ! 230: against an entry in the password file. ! 231: The running time to encrypt one trial password and check ! 232: the result turned out to be approximately 1.25 milliseconds on ! 233: a PDP-11/70 when the encryption algorithm was recoded for ! 234: maximum speed. ! 235: It is takes essentially no more time to test the encrypted ! 236: trial password against all the passwords in ! 237: an entire password file, or for that matter, against ! 238: any collection of encrypted passwords, perhaps collected ! 239: from many installations. ! 240: .PP ! 241: If we want to check all passwords of length ! 242: .I ! 243: n ! 244: .R ! 245: that consist entirely of lower-case letters, the number ! 246: of such passwords is $26 sup n$. ! 247: If we suppose that the password consists of ! 248: printable characters only, then the number of possible passwords ! 249: is somewhat less than $95 sup n$. ! 250: (The standard system ``character erase'' and ``line kill'' ! 251: characters are, for example, not prime ! 252: candidates.) ! 253: We can immediately estimate the running time of a program that ! 254: will test every password of a given length with all of its ! 255: characters chosen from some set of characters. ! 256: The following table gives estimates of the running time ! 257: required on a PDP-11/70 ! 258: to test all possible character strings of length $n$ ! 259: chosen from various sets of characters: namely, all lower-case ! 260: letters, all lower-case letters plus digits, ! 261: all alphanumeric characters, all 95 printable ! 262: ASCII characters, and finally all 128 ASCII characters. ! 263: .TS ! 264: cccccc ! 265: cccccc ! 266: nnnnnn. ! 267: 26 lower-case 36 lower-case letters 62 alphanumeric 95 printable all 128 ASCII ! 268: n letters and digits characters characters characters ! 269: .sp .5 ! 270: 1 30 msec. 40 msec. 80 msec. 120 msec. 160 msec. ! 271: 2 800 msec. 2 sec. 5 sec. 11 sec. 20 sec. ! 272: 3 22 sec. 58 sec. 5 min. 17 min. 43 min. ! 273: 4 10 min. 35 min. 5 hrs. 28 hrs. 93 hrs. ! 274: 5 4 hrs. 21 hrs. 318 hrs. ! 275: 6 107 hrs. ! 276: .TE ! 277: .LP ! 278: One has to conclude that it is no great matter for someone with ! 279: access to a PDP-11 to test all lower-case alphabetic strings up ! 280: to length five ! 281: and, given access to the machine for, say, several weekends, to test ! 282: all such strings up to six characters in length. ! 283: By using such a program against a collection of actual encrypted ! 284: passwords, a substantial fraction of all the passwords will be ! 285: found. ! 286: .PP ! 287: Another profitable approach for the bad guy is to use the word ! 288: list from a dictionary or to use a list of names. ! 289: For example, a large commercial dictionary contains typicallly about ! 290: 250,000 words; these words can be checked in about five minutes. ! 291: Again, a noticeable fraction of any collection of passwords ! 292: will be found. ! 293: Improvements and extensions will be (and have been) found by ! 294: a determined bad guy. ! 295: Some ``good'' things to try are: ! 296: .IP - ! 297: The dictionary with the words spelled backwards. ! 298: .IP - ! 299: A list of first names (best obtained from some mailing list). ! 300: Last names, street names, and city names also work well. ! 301: .IP - ! 302: The above with initial upper-case letters. ! 303: .IP - ! 304: All valid license plate numbers in your state. ! 305: (This takes about five hours in New Jersey.) ! 306: .IP - ! 307: Room numbers, social security numbers, telephone numbers, and ! 308: the like. ! 309: .PP ! 310: The authors have conducted experiments to try to determine ! 311: typical users' habits in the choice of passwords when no ! 312: constraint is put on their choice. ! 313: The results were disappointing, except to the bad guy. ! 314: In a collection of 3,289 passwords ! 315: gathered from many users over a long period of time; ! 316: .IP ! 317: 15 were a single ASCII character; ! 318: .IP ! 319: 72 were strings of two ASCII characters; ! 320: .IP ! 321: 464 were strings of three ASCII characters; ! 322: .IP ! 323: 477 were string of four alphamerics; ! 324: .IP ! 325: 706 were five letters, all upper-case or all lower-case; ! 326: .IP ! 327: 605 were six letters, all lower-case. ! 328: .LP ! 329: An additional 492 passwords appeared in various available ! 330: dictionaries, name lists, and the like. ! 331: A total of 2,831, or 86% of this sample of passwords fell into one of ! 332: these classes. ! 333: .PP ! 334: There was, of course, considerable overlap between the ! 335: dictionary results and the character string searches. ! 336: The dictionary search alone, which required only five ! 337: minutes to run, produced about one third of the passwords. ! 338: .PP ! 339: Users could be urged (or forced) to use either longer passwords ! 340: or passwords chosen from a larger character set, or the system ! 341: could itself choose passwords for the users. ! 342: .SH ! 343: AN ANECDOTE ! 344: .PP ! 345: An entertaining and instructive example is ! 346: the attempt made at one installation to force users to use less predictable ! 347: passwords. ! 348: The users did not choose their own passwords; the system supplied ! 349: them. ! 350: The supplied passwords were eight characters long and ! 351: were taken from the character set consisting of ! 352: lower-case letters and digits. ! 353: They were generated by a pseudo-random number generator ! 354: with only $2 sup 15$ starting values. ! 355: The time required to search (again on a PDP-11/70) through ! 356: all character strings of length 8 from a 36-character ! 357: alphabet is 112 years. ! 358: .PP ! 359: Unfortunately, only $2 sup 15$ of them need be looked at, ! 360: because that is the number of possible outputs of the random ! 361: number generator. ! 362: The bad guy did, in fact, generate and test each of these strings ! 363: and found every one of the system-generated passwords using ! 364: a total of only about one minute of machine time. ! 365: .SH ! 366: IMPROVEMENTS TO THE FIRST APPROACH ! 367: .NH ! 368: Slower Encryption ! 369: .PP ! 370: Obviously, the first algorithm used was far too fast. ! 371: The announcement of the DES encryption algorithm [2] ! 372: by the National Bureau of Standards ! 373: was timely and fortunate. ! 374: The DES is, by design, hard to invert, but equally valuable ! 375: is the fact that it is extremely slow when implemented in ! 376: software. ! 377: The DES was implemented and used in the following way: ! 378: The first eight characters of the user's password are ! 379: used as a key for the DES; then the algorithm ! 380: is used to encrypt a constant. ! 381: Although this constant is zero at the moment, it is easily ! 382: accessible and can be made installation-dependent. ! 383: Then the DES algorithm is iterated 25 times and the ! 384: resulting 64 bits are repacked to become a string of ! 385: 11 printable characters. ! 386: .NH ! 387: Less Predictable Passwords ! 388: .PP ! 389: The password entry program was modified so as to urge ! 390: the user to use more obscure passwords. ! 391: If the user enters an alphabetic password (all upper-case or ! 392: all lower-case) shorter than six characters, or a ! 393: password from a larger character set shorter than five ! 394: characters, then the program asks him to enter a ! 395: longer password. ! 396: This further reduces the efficacy of key search. ! 397: .PP ! 398: These improvements make it exceedingly difficult to find ! 399: any individual password. ! 400: The user is warned of the risks and if he cooperates, ! 401: he is very safe indeed. ! 402: On the other hand, he is not prevented from using ! 403: his spouse's name if he wants to. ! 404: .NH ! 405: Salted Passwords ! 406: .PP ! 407: The key search technique is still ! 408: likely to turn up a few passwords when it is used ! 409: on a large collection of passwords, and it seemed wise to make this ! 410: task as difficult as possible. ! 411: To this end, when a password is first entered, the password program ! 412: obtains a 12-bit random number (by reading the real-time clock) ! 413: and appends this to the password typed in by the user. ! 414: The concatenated string is encrypted and both the ! 415: 12-bit random quantity (called the $salt$) and the 64-bit ! 416: result of the encryption are entered into the password ! 417: file. ! 418: .PP ! 419: When the user later logs in to the system, the 12-bit ! 420: quantity is extracted from the password file and appended ! 421: to the typed password. ! 422: The encrypted result is required, as before, to be the same as the ! 423: remaining 64 bits in the password file. ! 424: This modification does not increase the task of finding ! 425: any individual ! 426: password, ! 427: starting from scratch, ! 428: but now the work of testing a given character string ! 429: against a large collection of encrypted passwords has ! 430: been multiplied by 4096 ($2 sup 12$). ! 431: The reason for this is that there are 4096 encrypted ! 432: versions of each password and one of them has been picked more ! 433: or less at random by the system. ! 434: .PP ! 435: With this modification, ! 436: it is likely that the bad guy can spend days of computer ! 437: time trying to find a password on a system with hundreds ! 438: of passwords, and find none at all. ! 439: More important is the fact that it becomes impractical ! 440: to prepare an encrypted dictionary in advance. ! 441: Such an encrypted dictionary could be used to crack ! 442: new passwords in milliseconds when they appear. ! 443: .PP ! 444: There is a (not inadvertent) side effect of this ! 445: modification. ! 446: It becomes nearly impossible to find out whether a ! 447: person with passwords on two or more systems has used ! 448: the same password on all of them, ! 449: unless you already know that. ! 450: .NH ! 451: The Threat of the DES Chip ! 452: .PP ! 453: Chips to perform the DES encryption are already commercially ! 454: available and they are very fast. ! 455: The use of such a chip speeds up the process of password ! 456: hunting by three orders of magnitude. ! 457: To avert this possibility, one of the internal tables ! 458: of the DES algorithm ! 459: (in particular, the so-called E-table) ! 460: is changed in a way that depends on the 12-bit random ! 461: number. ! 462: The E-table is inseparably wired into the DES chip, ! 463: so that the commercial chip cannot be used. ! 464: Obviously, the bad guy could have his own chip designed and ! 465: built, but the cost would be unthinkable. ! 466: .NH ! 467: A Subtle Point ! 468: .PP ! 469: To login successfully on the UNIX system, it is necessary ! 470: after dialing in to type a valid user name, and then the ! 471: correct password for that user name. ! 472: It is poor design to write the login command in such a way that it ! 473: tells an interloper when he has typed in a invalid user name. ! 474: The response to an invalid name should be identical to ! 475: that for a valid name. ! 476: .PP ! 477: When the slow encryption algorithm was first implemented, ! 478: the encryption was done only if the user name was valid, ! 479: because otherwise there was no encrypted password to ! 480: compare with the supplied password. ! 481: The result was that the response was delayed ! 482: by about one-half second if the name was valid, but was ! 483: immediate if invalid. ! 484: The bad guy could find out ! 485: whether a particular user name was valid. ! 486: The routine was modified to do the encryption in either ! 487: case. ! 488: .SH ! 489: CONCLUSIONS ! 490: .PP ! 491: On the issue of password security, UNIX is probably ! 492: better than most systems. ! 493: The use of encrypted passwords appears reasonably ! 494: secure in the absence of serious attention of experts ! 495: in the field. ! 496: .PP ! 497: It is also worth some effort to conceal even the encrypted ! 498: passwords. ! 499: Some UNIX systems have instituted what is called an ! 500: ``external security code'' that must be typed when ! 501: dialing into the system, but before logging in. ! 502: If this code is changed periodically, then someone ! 503: with an old password will likely be prevented from ! 504: using it. ! 505: .PP ! 506: Whenever any security procedure is instituted that attempts ! 507: to deny access to unauthorized persons, it is wise to ! 508: keep a record of both successful and unsuccessful attempts ! 509: to get at the secured resource. ! 510: Just as an out-of-hours visitor to a computer center normally ! 511: must not only identify himself, but a record is usually also kept of ! 512: his entry. ! 513: Just so, it is a wise precaution to make and keep a record ! 514: of all attempts to log into a remote-access time-sharing ! 515: system, and certainly all unsuccessful attempts. ! 516: .PP ! 517: Bad guys fall on a spectrum whose one end is someone with ! 518: ordinary access to a system and whose goal is to find ! 519: out a particular password (usually that of the super-user) ! 520: and, at the other end, someone who wishes to collect as ! 521: much password information as possible from as many systems ! 522: as possible. ! 523: Most of the work reported here serves to frustrate the latter type; ! 524: our experience indicates that the former type of bad guy never ! 525: was very successful. ! 526: .PP ! 527: We recognize that a time-sharing system must operate in a ! 528: hostile environment. ! 529: We did not attempt to hide the security aspects of the operating ! 530: system, thereby playing the customary make-believe game in ! 531: which weaknesses of the system are not discussed no matter ! 532: how apparent. ! 533: Rather we advertised the password algorithm and invited attack ! 534: in the belief that this approach would minimize future trouble. ! 535: The approach has been successful. ! 536: .SG MH-1271-RM/KT ! 537: .SH ! 538: References ! 539: .IP [1] ! 540: Ritchie, D.M. and Thompson, K. ! 541: The UNIX Time-Sharing System. ! 542: .I ! 543: Comm. ACM ! 544: .B ! 545: 17 ! 546: .R ! 547: (July 1974), ! 548: pp. 365-375. ! 549: .IP [2] ! 550: .I ! 551: Proposed Federal Information Processing Data Encryption Standard. ! 552: .R ! 553: Federal Register (40FR12134), March 17, 1975 ! 554: .IP [3] ! 555: Wilkes, M. V. ! 556: .I ! 557: Time-Sharing Computer Systems. ! 558: .R ! 559: American Elsevier, ! 560: New York, (1968). ! 561: .IP [4] ! 562: U. S. Patent Number 2,089,603.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.