README revision 29964
1OPIE Software Distribution, Release 2.31 Important Information 2======================================== ===================== 3 4Introduction 5============ 6 7 "One-time Passwords In Everything" (OPIE) is a freely distributable 8software package originally developed at and for the US Naval Research 9Laboratory (NRL). Recent versions are the result of a cooperative effort 10between of NRL, several of the original NRL authors, The Inner Net, and many 11other contributors from the Internet community. 12 13 OPIE is an implementation of the One-Time Password (OTP) System that 14is being considered for the Internet standards-track. OPIE provides a one-time 15password system. The system should be secure against the passive attacks 16now commonplace on the Internet (see RFC 1704 for more details). The system 17is vulnerable to active dictionary attacks, though these are not widespread 18at present and can be detected through proper use of system audit 19software. 20 21 OPIE is primarily written for UNIX-like operating systems, but 22we are working to make applicable portions portable to other operating systems. 23The OPIE software is derived in part from and is fully interoperable with the 24Bell Communications Research (Bellcore) S/Key Release 1 software. Because 25Bellcore claims "S/Key" as a trademark for their software, NRL was forced to 26use a different name (we picked "OPIE") for this software distribution. 27 28 OPIE includes the following additions/modifications to the 29original Bellcore S/Key(tm) Version 1 software: 30 31* Just about three command installation (unpack the software, run the 32 configure script, and run make install). While we still recommend that you 33 follow instructions and test things by hand, the more adventurous can 34 install OPIE quickly. 35 36* A modified BSD FTP daemon that does OTP. 37 38* A version of su that uses OTP by default. 39 40* MD5 support. MD5 is now the default algorithm, though MD4 is still supported 41 by changing a parameter in the Makefile. This change was made because MD5 is 42 widely believed to be cryptographically stronger than MD4 (see RFC 1321). 43 44* A more portable version of MD4 has been substituted for the original MD4. 45 This should solve the endian problems that were in S/Key. 46 47* Most of the system-dependencies have been moved to a new file "opie_cfg.h". 48 49* Configuration options have been moved to the Makefile. 50 51* Isolated system dependencies (e.g. BSDisms) with appropriate #ifdefs. 52 53* Revised the opiekey(1) program to simultaneously support MD4 and MD5, with 54 the default algorithm being tunable using the MDX symbol in the Makefile. 55 56* More operating systems are supported by recent versions of OPIE, but older 57 BSD systems that aren't close to being compliant with the POSIX standard are 58 no longer supported. 59 60* Transition mechanisms are optional to prevent potential back doors. 61 62* On systems using the /etc/opieaccess transition mechanism, users can choose 63 to require the use of OPIE to login to their accounts when it would 64 otherwise be optional. 65 66* Bug fixes 67 68* Cosmetic changes 69 70* Prompts (optionally) identify specifically what kind of entry (system 71 password, secret pass phrase, or OTP response) is allowed. 72 73* Changes to mostly conform with the draft Internet OTP standard. 74 75A Glance at What's New 76====================== 77 78 2.31 March 20, 1997. 79 80 Removed active attack protection support due to patent problems. 81 82 Moved user locks to a separate directory. 83 84 Moved user-serviceable configuration options to the configure script. 85 86 Lots of portability and bug fixes. 87 88 2.3 September 22, 1996 89 90 Autoconf is now the only supported configuration method. 91 92 Lots of internal functions got re-written in ways that will make some 93planned future changes easier. 94 95 OTP extended responses, such as automatic re-initialization. 96 97 Support for a supplemental key file that stores information that was 98not in the original /etc/skeykeys file. This allows OPIE to store extra data 99needed for things like the OTP re-initialization extended response without 100breaking interoperability with other S/Key derived programs. This file is 101named "/etc/opiekeys.ext" by default. Unlike the standard key file, it MUST 102NOT be world readable. 103 104 OPIE should better support some of the native "features" of drain 105bamaged OSs such as AIX, HP-UX, and Solaris. 106 107 OPIE's utmp/wtmp handling has been completely re-written. This should 108solve many of the utmp/wtmp problems people have been having. 109 110 Lots of cleanups. 111 112 Bug fixes. 113 114 2.22 May 3, 1996. 115 116 More minor bug fixes. OPIE once again works on Solaris 2.x. 117 118 2.21 April 27, 1996. 119 120 Minor bug fixes. 121 122 2.2 April 11, 1996. 123 124 opiesubr.c, opiesubr2.c, and a few other functions moved into 125a subdirectory and split into files with fine granularity. Ditto with 126missing function replacements. This subdirectory structure changes a lot 127of things around and more splitting like this should be expected in the 128near future. 129 130 Added opiegenerator() library function that should make it very easy 131to create OTP clients using the OPIE library (this function is subject to 132change: there are a few problems remaining to be solved). Just about re-write 133opiegetpass() to use raw I/O and got most of the OPIE programs actually using 134that function. Autoconf build fixes. Lots of bug fixes. Lots of portability 135fixes. Function declarations should be ANSI style for ANSI compilers. Several 136fixes to bring OPIE in line with the latest OTP spec. MJR DES key crunch 137de-implemented. 138 139 Added sample programs: opiegen (client) and opieserv (server). 140 141 Probably broke non-autoconf support along the way :(. I've tried to 142bring this back in sync, but it may still be broken. 143 144 2.11 December 27, 1995. 145 146 Minor bug fixes. 147 148 2.10 December 26, 1995. 149 150 Optional autoconf support. opieinfo is now a normal program. 151Bugs fixed -- should work much better on SunOS, HP-UX, and AIX. 152 153System Requirements 154=================== 155 156 In order to build and run properly, OPIE requires: 157 158 * A UNIX-like operating system 159 * An ANSI C compiler and run-time library 160 * POSIX.1- and X/Open XPG-compliance (including termios) 161 * The BSD sockets API 162 * Approximately five megabytes of free disk space 163 164 In practice, we believe that many systems who are close to meeting 165these requirements but aren't completely there (for example, SunOS with the 166native compiler) will also work. Systems who aren't anywhere near close 167(for example, DOS) are not likely to work without major adjustments to the 168OPIE code. 169 170If OPIE Doesn't Work 171==================== 172 173 First and foremost, make sure you have the latest version of OPIE. The 174latest version is available by anonymous FTP at: 175 176 ftp://ftp.nrl.navy.mil/pub/security/opie 177 and 178 ftp://ftp.inner.net/pub/opie 179 180 If you have installed the OPIE software (either through "make test" 181in (7) above or "make install" in (14)), you can run "make uninstall" from the 182OPIE software distribution directory. This should remove the OPIE software and 183restore the original system programs, but it will not work properly (and can 184even result in the total loss of the old system programs -- beware!) if the 185installation procedure itself did not work properly. 186 187 If you are running a release version, try installing the latest public 188test version (look around). These frequently have already fixed the problem 189you are seeing, but may have new problems of their own (that's why they're 190test versions!). 191 192 OPIE is NOT supported software. We don't promise to support you or 193even to acknowledge your mail, but we are interested in bug reports and are 194reasonable folks. We also have an interest in seeing OPIE work on as many 195systems as we can. However, if your system doesn't meet the basic requirements 196for OPIE, this will probably require an unreasonable amount of effort. 197 198 The best bug reports include a diagnosis of the problem and a fix. 199Your bug report can still be valuable if you can at least diagnose what the 200problem is. If you just tell us "it doesn't work," then we won't be able to 201do anything to help you. 202 203 We've received a number of bug reports from people that look 204interesting, only to find when we try to follow up on them that the user 205either has an invalid return address or never bothered to respond to our 206followup. Please make sure that bug reports you send us have an electronic 207mail address that we can reply to somewhere in them (if necessary, just 208put it in the message body). If we send you a response and you are unable 209to invest the time to work with us to solve the problem, please tell us -- 210few things are more irritating than when someone sends us information 211about a bug that we'd like to fix and then is never heard from again. 212 213 We try to respond to all properly submitted bug reports. Improperly 214submitted bug reports will be responded to only if we have time left after 215responding to properly submitted bug reports. We deliberately ignore bug 216"reports" sent to mailing lists or USENET news groups instead of or before 217our bug report address. At the least, the latter practice is lacking in 218courtesy. 219 220 The file BUG-REPORT contains our bug reporting form. Please use it 221and follow the submission instructions in that file. We are going to switch 222to machine-parsed bug report processing sometime in the near future to make 223it easier to coordinate bug hunting. 224 225Gotchas 226======= 227 228 While an almost universal "feature", most people remain unaware that 229an intruder can log into a system, then log in again by running the "login" 230command from a shell. Because the second login is from the local host, the 231utmp entry will not show a remote login host anymore. The OPIE replacement 232for /bin/login currently carries on this behavior for compatibility reasons. 233If you would like to prevent this from happening, you should change the 234permissions of /bin/login to 0100, thus preventing unprivileged users from 235executing it. This fix should work on non-OPIE /bin/login programs as well. 236 237 On 4.3BSDish systems, the supplied /bin/login replacement obtains 238the terminal type for the console comes from the console line in the /etc/ttys 239file. Several systems contain a default entry in this file that specifies the 240console terminal type as "unknown". This is probably not what you want. 241 242 The OPIE FTP daemon responds with two 530 error messages if you have 243not yet logged in and execute a command that will also do a PORT request. This 244is a feature, not a bug, as the FTP client is really sending the server two 245commands (for instance, a PORT and a LIST if you tell your BSD FTP client to do 246a DIR command) and the server is responding to each of them with an error. The 247stock BSD FTP daemon doesn't check the PORT commands to see if you are logged 248in, so you would only get one error message. This change should not break any 249standards-compliant FTP client, but there are a number of brain-damaged GUI 250clients that have a track record for not dealing gracefully with any server 251other than the stock BSD one. 252 253 The /etc/opieaccess transition mechanism is, by definition, a security 254hole in the OPIE software because an attacker could use it to circumvent the 255requirement for OPIE authentication. You should compile the software with 256support for this file disabled unless you absolutely cannot use the software 257without it because of your environment. If you do use this support for 258transition purposes, you should move people to OTP authentication as quickly 259as possible and rebuild and reinstall OPIE with this transition support 260disabled so that you won't have a lurking security hole. 261 262 If this wasn't already clear, do not let your sequence number fall 263below about ten. If your sequence number reaches zero, your OTP sequence 264can only be reset by the superuser. System administrators should make this 265caveat known to their users. 266 267 On Solaris 2.x systems (and possibly others) running NIS+, users 268should run keylogin(1) manually after login because opielogin(1) does not 269do that automatically like the system login(1) program. 270 271 There are reports that some versions of GNU C Compiler (GCC) 272(when installed on some systems) use their own termios(4) instead of 273the system's termios(4). This can cause problems. If you are having 274compilation problems that seem to relate to termios and you are using 275GCC, you should probably verify that it is using the system's 276termios(4) and not some internal-to-GCC termios(4). One report 277indicates that Sun's C compiler works fine with SunOS 4.1.3/4.1.4 on 278SPARC, but that some version of GCC on the same system has this 279termios(4) problem. We haven't reproduced these problems ourselves 280and hence aren't sure what is happening, but we pass this along for 281your information. (This may have something to do with the use of GNU 282libc) 283 284 If a user has a valid entry in the opiekeys database but has an 285asterisk in their traditional password entry, they will not be able to 286log in via opielogin, but opielogin will decrement their sequence number 287if a valid response is received. 288 289 On some systems, the OPIE login program does not always display 290a "login:" prompt the first time. There is a race condition in many older 291telnetds that is probably the cause of this problem. This should be fixed by 292replacing your telnetd with the latest version of the stock telnetd 293(ftp.cray.com:/src/telnet). 294 295 The standard HPUX compiler is severely drain bamaged. One of the 296worst parts is that it sometimes won't grok a symbol definition with forward 297slashes in them properly and can choke badly on the definition of the key 298file's location. If this happens to you, install and use GCC. (This problem 299may or may not also come up with the optional HP ANSI C compiler -- we don't 300know for sure what compilers have this problem). 301 302 As of OPIE 2.2, the seed is converted to lower case and its length is 303checked in order to comply with the OTP specification. If any of your users 304have seeds that use capital letters or are too long, they need to run the OPIE 3052.2 opiepasswd program to re-initialize their sequence to one with a different 306seed. 307 308 opielogin is a replacement for /bin/login. It is NOT an OPIE "shell." 309You can use it as one, but don't be surprised if it doesn't behave the way 310you expect -- we've seen various reports of success and failure when used this 311way. An OPIE "shell" is on the TODO list. 312 313 Clients that use opiegen() will automatically send a re-initialization 314extended response if the sequence number falls below ten. If the server does 315not support this, the user will need to log in using opiekey and reset his 316sequence manually (using opiepasswd). 317 318 For reasons that remain very unclear, Solaris passes the login name 319from getty/telnetd to login by stuffing it in the terminal input buffer 320instead of passing it on the command line like every other *IX. This is just 321plain broken. Solaris has other problems with its telnetd and getty; you may 322want to consider getting the telnet(d) sources (ftp.cray.com:/src/telnet) 323and reasonable getty sources (try sunsite.unc.edu:/pub/Linux/system/Serial, at 324least one of agetty, mingetty, and getty_ps should work) and replacing the 325Solaris versions with these. OPIE should work *much* more happily with these 326programs than the ones that come with Solaris. However, there could be negative 327side effects -- this is not a procedure recommended for the faint of heart. An 328even more drastic solution more likely to make OPIE happy is to install Linux 329or NetBSD on your box ;) 330 331 OPIE is a lot more fussy than it used to be about lock files and where 332it puts them. The lock file directory must be a directory used only for OPIE 333lock files. It must be a directory, owned by the superuser, and must be mode 3340700. 335 336Gripes 337====== 338 339 Is it too much to ask that certain OS vendors just do the right thing 340and not "fix" what isn't broken? (Look at all the ifdefs in the OPIE code and 341the answer is clear) 342 343 utmp and wtmp handling in OPIE has been a very, very sore subject. 344Every vendor does things differently, and, of course, most of them swear they 345are complying to some or other "standard." My (cmetz) conclusion is that the 346only thing that is standard about utmp and wtmp handling is that it will be 347nonstandard on any given system. I've tried a lot of things and I've wasted 348*a lot* of time on trying to make utmp and wtmp handling work for everybody; 349my conclusion is that it will never happen. I personally am willing to stand 350behind the code for utmp/wtmp handling on reasonable Linux and 4.4BSD-Lite 351systems. If it breaks, tell me and I will fix it. While I am still interested 352in hearing about fixes for other OSs, I'm not likely to go out of my way to fix 353utmp/wtmp handling on them. If you want it fixed, the best way to do it is to 354fix it yourself and give me a patch. As long as the patch is reasonable, I'll 355include it in the next release. If you can't wait, use the --disable-utmp 356option. 357 358Credits 359======= 360 361 First and foremost credit goes to Phil Karn, Neil M. Haller, and John 362S. Walden of Bellcore for creating the S/Key Version 1 software distribution 363and for making its source code freely available to the public. Without their 364work, OPIE would not exist. Neil has also invested a good amount of his time 365in the development of a standard for One-Time Passwords so that packages like 366OPIE can interoperate. 367 368 The first NRL OPIE distribution included modifications made primarily 369by Dan McDonald of the U.S. Naval Research Laboratory (NRL) during March 1994. 370The 2nd NRL OPIE distribution, which has a number of improvements in areas 371such as portability of software and ease of installation, is primarily the 372work of Ran Atkinson and Craig Metz. Other NRL contributors include Brian 373Adamson, Steve Batsell, Preston Mullen, Bao Phan, Jim Ramsey, and Georg Thomas. 374 375 Some of version 2.2 was developed at NRL and released as a work in 376progress. Most of the release version was developed by Craig Metz (also of 377NRL), others at The Inner Net, and contributors from the Internet community. 378Versions beyond 2.2 were developed outside NRL, so don't blame them if they 379don't work (But please credit them when it does. Without the NRL effort, there 380wouldn't be an OPIE). 381 382 We would like to also thank everyone who helped us by by beta testing, 383reporting bugs, suggesting improvements, and/or sending us patches. We 384appreciate your contributions -- they have helped to make OPIE more of a 385community effort. These contributors include: 386 387 Mowgli Assor 388 Lawrie Brown 389 Andrew Davis 390 Axel Grewe 391 "Hobbit" 392 Kojima Hajime 393 Darren Hosking 394 Martijn Koster 395 Osamu Kurati 396 Ayamura Kikuchi 397 Hiroshi Nakano 398 Ikuo Nakagawa 399 Angelo Neri 400 C. R. Oldham 401 D. Jason Penney 402 John Perkins 403 Jim Simmons 404 Brad Smith 405 Werner Wiethege 406 Wietse Venema 407 408 OPIE development at NRL was sponsored by the Information Security 409Program Office (PD 71E), U.S. Space and Naval Warfare Systems Command, Crystal 410City, Virginia. 411 412 If you have problems with OPIE, please follow the instructions under 413"If OPIE Doesn't Work." Under NO circumstances should you send trouble 414reports directly to the authors or contributors. 415 416Trademarks 417========== 418S/Key is a trademark of Bell Communications Research (Bellcore). 419UNIX is a trademark of X/Open. 420NRL is a trademark of the U. S. Naval Research Laboratory. 421 422All other trademarks are trademarks of their respective owners. 423 424The term "OPIE" is in the public domain and hence cannot be legally 425trademarked by anyone. 426 427Copyrights 428========== 429%%% portions-copyright-cmetz-96 430Portions of this software are Copyright 1996-1997 by Craig Metz, All Rights 431Reserved. The Inner Net License Version 2 applies to these portions of 432the software. 433You should have received a copy of the license with this software. If 434you didn't get a copy, you may request one from <license@inner.net>. 435 436Portions of this software are Copyright 1995 by Randall Atkinson and Dan 437McDonald, All Rights Reserved. All Rights under this copyright are assigned 438to the U.S. Naval Research Laboratory (NRL). The NRL Copyright Notice and 439License Agreement applies to this software. 440 441Portions of this software are copyright 1980-1990 Regents of the 442University of California, all rights reserved. The Berkeley Software 443License Agreement specifies the terms and conditions for redistribution. 444 445Portions of this software are copyright 1990 Bell Communications Research 446(Bellcore), all rights reserved. 447