[BACK]Return to README CVS log [TXT][DIR] Up to [local] / src / usr.bin / ssh

Annotation of src/usr.bin/ssh/README, Revision 1.3

1.3     ! markus      1:
        !             2: [ Please note that this file has not been updated for OpenSSH and
        !             3:   covers the ssh-1.2.12 release from Dec 1995 only. ]
        !             4:
1.1       deraadt     5: Ssh (Secure Shell) is a program to log into another computer over a
                      6: network, to execute commands in a remote machine, and to move files
                      7: from one machine to another.  It provides strong authentication and
1.2       deraadt     8: secure communications over insecure channels.  It is intended as a
1.1       deraadt     9: replacement for rlogin, rsh, rcp, and rdist.
                     10:
                     11: See the file INSTALL for installation instructions.  See COPYING for
                     12: license terms and other legal issues.  See RFC for a description of
                     13: the protocol.  There is a WWW page for ssh; see http://www.cs.hut.fi/ssh.
                     14:
                     15: This file has been updated to match ssh-1.2.12.
                     16:
                     17:
                     18: FEATURES
                     19:
                     20:  o  Strong authentication.  Closes several security holes (e.g., IP,
                     21:     routing, and DNS spoofing).  New authentication methods: .rhosts
                     22:     together with RSA based host authentication, and pure RSA
                     23:     authentication.
                     24:
                     25:  o  Improved privacy.  All communications are automatically and
                     26:     transparently encrypted.  RSA is used for key exchange, and a
                     27:     conventional cipher (normally IDEA, DES, or triple-DES) for
                     28:     encrypting the session.  Encryption is started before
                     29:     authentication, and no passwords or other information is
                     30:     transmitted in the clear.  Encryption is also used to protect
                     31:     against spoofed packets.
                     32:
                     33:  o  Secure X11 sessions.  The program automatically sets DISPLAY on
                     34:     the server machine, and forwards any X11 connections over the
                     35:     secure channel.  Fake Xauthority information is automatically
                     36:     generated and forwarded to the remote machine; the local client
                     37:     automatically examines incoming X11 connections and replaces the
                     38:     fake authorization data with the real data (never telling the
                     39:     remote machine the real information).
                     40:
                     41:  o  Arbitrary TCP/IP ports can be redirected through the encrypted channel
                     42:     in both directions (e.g., for e-cash transactions).
                     43:
                     44:  o  No retraining needed for normal users; everything happens
                     45:     automatically, and old .rhosts files will work with strong
                     46:     authentication if administration installs host key files.
                     47:
                     48:  o  Never trusts the network.  Minimal trust on the remote side of
                     49:     the connection.  Minimal trust on domain name servers.  Pure RSA
                     50:     authentication never trusts anything but the private key.
                     51:
                     52:  o  Client RSA-authenticates the server machine in the beginning of
                     53:     every connection to prevent trojan horses (by routing or DNS
                     54:     spoofing) and man-in-the-middle attacks, and the server
                     55:     RSA-authenticates the client machine before accepting .rhosts or
                     56:     /etc/hosts.equiv authentication (to prevent DNS, routing, or
                     57:     IP-spoofing).
                     58:
                     59:  o  Host authentication key distribution can be centrally by the
                     60:     administration, automatically when the first connection is made
                     61:     to a machine (the key obtained on the first connection will be
                     62:     recorded and used for authentication in the future), or manually
                     63:     by each user for his/her own use.  The central and per-user host
                     64:     key repositories are both used and complement each other.  Host
                     65:     keys can be generated centrally or automatically when the software
                     66:     is installed.  Host authentication keys are typically 1024 bits.
                     67:
                     68:  o  Any user can create any number of user authentication RSA keys for
                     69:     his/her own use.  Each user has a file which lists the RSA public
                     70:     keys for which proof of possession of the corresponding private
                     71:     key is accepted as authentication.  User authentication keys are
                     72:     typically 1024 bits.
                     73:
                     74:  o  The server program has its own server RSA key which is
                     75:     automatically regenerated every hour.  This key is never saved in
                     76:     any file.  Exchanged session keys are encrypted using both the
                     77:     server key and the server host key.  The purpose of the separate
                     78:     server key is to make it impossible to decipher a captured session by
                     79:     breaking into the server machine at a later time; one hour from
                     80:     the connection even the server machine cannot decipher the session
                     81:     key.  The key regeneration interval is configurable.  The server
                     82:     key is normally 768 bits.
                     83:
                     84:  o  An authentication agent, running in the user's laptop or local
                     85:     workstation, can be used to hold the user's RSA authentication
                     86:     keys.  Ssh automatically forwards the connection to the
                     87:     authentication agent over any connections, and there is no need to
                     88:     store the RSA authentication keys on any machine in the network
                     89:     (except the user's own local machine).  The authentication
                     90:     protocols never reveal the keys; they can only be used to verify
                     91:     that the user's agent has a certain key.  Eventually the agent
                     92:     could rely on a smart card to perform all authentication
                     93:     computations.
                     94:
                     95:  o  The software can be installed and used (with restricted
                     96:     functionality) even without root privileges.
                     97:
                     98:  o  The client is customizable in system-wide and per-user
                     99:     configuration files.  Most aspects of the client's operation can
                    100:     be configured.  Different options can be specified on a per-host basis.
                    101:
                    102:  o  Automatically executes conventional rsh (after displaying a
                    103:     warning) if the server machine is not running sshd.
                    104:
                    105:  o  Optional compression of all data with gzip (including forwarded X11
                    106:     and TCP/IP port data), which may result in significant speedups on
                    107:     slow connections.
                    108:
                    109:  o  Complete replacement for rlogin, rsh, and rcp.
                    110:
                    111:
                    112: WHY TO USE SECURE SHELL
                    113:
                    114: Currently, almost all communications in computer networks are done
                    115: without encryption.  As a consequence, anyone who has access to any
                    116: machine connected to the network can listen in on any communication.
                    117: This is being done by hackers, curious administrators, employers,
                    118: criminals, industrial spies, and governments.  Some networks leak off
                    119: enough electromagnetic radiation that data may be captured even from a
                    120: distance.
                    121:
                    122: When you log in, your password goes in the network in plain
                    123: text.  Thus, any listener can then use your account to do any evil he
                    124: likes.  Many incidents have been encountered worldwide where crackers
                    125: have started programs on workstations without the owners knowledge
                    126: just to listen to the network and collect passwords.  Programs for
                    127: doing this are available on the Internet, or can be built by a
                    128: competent programmer in a few hours.
                    129:
                    130: Any information that you type or is printed on your screen can be
                    131: monitored, recorded, and analyzed.  For example, an intruder who has
                    132: penetrated a host connected to a major network can start a program
                    133: that listens to all data flowing in the network, and whenever it
                    134: encounters a 16-digit string, it checks if it is a valid credit card
                    135: number (using the check digit), and saves the number plus any
                    136: surrounding text (to catch expiration date and holder) in a file.
                    137: When the intruder has collected a few thousand credit card numbers, he
                    138: makes smallish mail-order purchases from a few thousand stores around
                    139: the world, and disappears when the goods arrive but before anyone
                    140: suspects anything.
                    141:
                    142: Businesses have trade secrets, patent applications in preparation,
                    143: pricing information, subcontractor information, client data, personnel
                    144: data, financial information, etc.  Currently, anyone with access to
                    145: the network (any machine on the network) can listen to anything that
                    146: goes in the network, without any regard to normal access restrictions.
                    147:
                    148: Many companies are not aware that information can so easily be
                    149: recovered from the network.  They trust that their data is safe
                    150: since nobody is supposed to know that there is sensitive information
                    151: in the network, or because so much other data is transferred in the
                    152: network.  This is not a safe policy.
                    153:
                    154: Individual persons also have confidential information, such as
                    155: diaries, love letters, health care documents, information about their
                    156: personal interests and habits, professional data, job applications,
                    157: tax reports, political documents, unpublished manuscripts, etc.
                    158:
                    159: One should also be aware that economical intelligence and industrial
                    160: espionage has recently become a major priority of the intelligence
                    161: agencies of major governments.  President Clinton recently assigned
                    162: economical espionage as the primary task of the CIA, and the French
                    163: have repeatedly been publicly boasting about their achievements on
                    164: this field.
                    165:
                    166:
                    167: There is also another frightening aspect about the poor security of
                    168: communications.  Computer storage and analysis capability has
                    169: increased so much that it is feasible for governments, major
                    170: companies, and criminal organizations to automatically analyze,
                    171: identify, classify, and file information about millions of people over
                    172: the years.  Because most of the work can be automated, the cost of
                    173: collecting this information is getting very low.
                    174:
                    175: Government agencies may be able to monitor major communication
                    176: systems, telephones, fax, computer networks, etc., and passively
                    177: collect huge amounts of information about all people with any
                    178: significant position in the society.  Most of this information is not
                    179: sensitive, and many people would say there is no harm in someone
                    180: getting that information.  However, the information starts to get
                    181: sensitive when someone has enough of it.  You may not mind someone
                    182: knowing what you bought from the shop one random day, but you might
                    183: not like someone knowing every small thing you have bought in the last
                    184: ten years.
                    185:
                    186: If the government some day starts to move into a more totalitarian
                    187: direction (one should remember that Nazi Germany was created by
                    188: democratic elections), there is considerable danger of an ultimate
                    189: totalitarian state.  With enough information (the automatically
                    190: collected records of an individual can be manually analyzed when the
                    191: person becomes interesting), one can form a very detailed picture of
                    192: the individual's interests, opinions, beliefs, habits, friends,
                    193: lovers, weaknesses, etc.  This information can be used to 1) locate
                    194: any persons who might oppose the new system 2) use deception to
                    195: disturb any organizations which might rise against the government 3)
                    196: eliminate difficult individuals without anyone understanding what
                    197: happened.  Additionally, if the government can monitor communications
                    198: too effectively, it becomes too easy to locate and eliminate any
                    199: persons distributing information contrary to the official truth.
                    200:
                    201: Fighting crime and terrorism are often used as grounds for domestic
                    202: surveillance and restricting encryption.  These are good goals, but
                    203: there is considerable danger that the surveillance data starts to get
                    204: used for questionable purposes.  I find that it is better to tolerate
                    205: a small amount of crime in the society than to let the society become
                    206: fully controlled.  I am in favor of a fairly strong state, but the
                    207: state must never get so strong that people become unable to spread
                    208: contra-offical information and unable to overturn the government if it
                    209: is bad.  The danger is that when you notice that the government is
                    210: too powerful, it is too late.  Also, the real power may not be where
                    211: the official government is.
                    212:
                    213: For these reasons (privacy, protecting trade secrets, and making it
                    214: more difficult to create a totalitarian state), I think that strong
                    215: cryptography should be integrated to the tools we use every day.
                    216: Using it causes no harm (except for those who wish to monitor
                    217: everything), but not using it can cause huge problems.  If the society
                    218: changes in undesirable ways, then it will be to late to start
                    219: encrypting.
                    220:
                    221: Encryption has had a "military" or "classified" flavor to it.  There
                    222: are no longer any grounds for this.  The military can and will use its
                    223: own encryption; that is no excuse to prevent the civilians from
                    224: protecting their privacy and secrets.  Information on strong
                    225: encryption is available in every major bookstore, scientific library,
                    226: and patent office around the world, and strong encryption software is
                    227: available in every country on the Internet.
                    228:
                    229: Some people would like to make it illegal to use encryption, or to
                    230: force people to use encryption that governments can break.  This
                    231: approach offers no protection if the government turns bad.  Also, the
                    232: "bad guys" will be using true strong encryption anyway.  Good
                    233: encryption techniques are too widely known to make them disappear.
                    234: Thus, any "key escrow encryption" or other restrictions will only help
                    235: monitor ordinary people and petty criminals.  It does not help against
                    236: powerful criminals, terrorists, or espionage, because they will know
                    237: how to use strong encryption anyway.  (One source for internationally
                    238: available encryption software is http://www.cs.hut.fi/crypto.)
                    239:
                    240:
                    241: OVERVIEW OF SECURE SHELL
                    242:
                    243: The software consists of a number of programs.
                    244:
                    245:    sshd                Server program run on the server machine.  This
                    246:                listens for connections from client machines, and
                    247:                whenever it receives a connection, it performs
                    248:                authentication and starts serving the client.
                    249:
                    250:    ssh         This is the client program used to log into another
                    251:                machine or to execute commands on the other machine.
                    252:                "slogin" is another name for this program.
                    253:
                    254:    scp         Securely copies files from one machine to another.
                    255:
                    256:    ssh-keygen  Used to create RSA keys (host keys and user
                    257:                authentication keys).
                    258:
                    259:    ssh-agent   Authentication agent.  This can be used to hold RSA
                    260:                keys for authentication.
                    261:
                    262:    ssh-add     Used to register new keys with the agent.
                    263:
                    264:    make-ssh-known-hosts
                    265:                Used to create the /etc/ssh_known_hosts file.
                    266:
                    267:
                    268: Ssh is the program users normally use.  It is started as
                    269:
                    270:   ssh host
                    271:
                    272: or
                    273:
                    274:   ssh host command
                    275:
                    276: The first form opens a new shell on the remote machine (after
                    277: authentication).  The latter form executes the command on the remote
                    278: machine.
                    279:
                    280: When started, the ssh connects sshd on the server machine, verifies
                    281: that the server machine really is the machine it wanted to connect,
                    282: exchanges encryption keys (in a manner which prevents an outside
                    283: listener from getting the keys), performs authentication using .rhosts
                    284: and /etc/hosts.equiv, RSA authentication, or conventional password
                    285: based authentication.  The server then (normally) allocates a
                    286: pseudo-terminal and starts an interactive shell or user program.
                    287:
                    288: The TERM environment variable (describing the type of the user's
                    289: terminal) is passed from the client side to the remote side.  Also,
                    290: terminal modes will be copied from the client side to the remote side
                    291: to preserve user preferences (e.g., the erase character).
                    292:
                    293: If the DISPLAY variable is set on the client side, the server will
                    294: create a dummy X server and set DISPLAY accordingly.  Any connections
                    295: to the dummy X server will be forwarded through the secure channel,
                    296: and will be made to the real X server from the client side.  An
                    297: arbitrary number of X programs can be started during the session, and
                    298: starting them does not require anything special from the user.  (Note
                    299: that the user must not manually set DISPLAY, because then it would
                    300: connect directly to the real display instead of going through the
                    301: encrypted channel).  This behavior can be disabled in the
                    302: configuration file or by giving the -x option to the client.
                    303:
                    304: Arbitrary IP ports can be forwarded over the secure channel.  The
                    305: program then creates a port on one side, and whenever a connection is
                    306: opened to this port, it will be passed over the secure channel, and a
                    307: connection will be made from the other side to a specified host:port
                    308: pair.  Arbitrary IP forwarding must always be explicitly requested,
                    309: and cannot be used to forward privileged ports (unless the user is
                    310: root).  It is possible to specify automatic forwards in a per-user
                    311: configuration file, for example to make electronic cash systems work
                    312: securely.
                    313:
                    314: If there is an authentication agent on the client side, connection to
                    315: it will be automatically forwarded to the server side.
                    316:
                    317: For more infomation, see the manual pages ssh(1), sshd(8), scp(1),
                    318: ssh-keygen(1), ssh-agent(1), ssh-add(1), and make-ssh-known-hosts(1)
                    319: included in this distribution.
                    320:
                    321:
                    322: X11 CONNECTION FORWARDING
                    323:
                    324: X11 forwarding serves two purposes: it is a convenience to the user
                    325: because there is no need to set the DISPLAY variable, and it provides
                    326: encrypted X11 connections.  I cannot think of any other easy way to
                    327: make X11 connections encrypted; modifying the X server, clients or
                    328: libraries would require special work for each machine, vendor and
                    329: application.  Widely used IP-level encryption does not seem likely for
                    330: several years.  Thus what we have left is faking an X server on the
                    331: same machine where the clients are run, and forwarding the connections
                    332: to a real X server over the secure channel.
                    333:
                    334: X11 forwarding works as follows.  The client extracts Xauthority
                    335: information for the server.  It then creates random authorization
                    336: data, and sends the random data to the server.  The server allocates
                    337: an X11 display number, and stores the (fake) Xauthority data for this
                    338: display.  Whenever an X11 connection is opened, the server forwards
                    339: the connection over the secure channel to the client, and the client
                    340: parses the first packet of the X11 protocol, substitutes real
                    341: authentication data for the fake data (if the fake data matched), and
                    342: forwards the connection to the real X server.
                    343:
                    344: If the display does not have Xauthority data, the server will create a
                    345: unix domain socket in /tmp/.X11-unix, and use the unix domain socket
                    346: as the display.  No authentication information is forwarded in this
                    347: case.  X11 connections are again forwarded over the secure channel.
                    348: To the X server the connections appear to come from the client
                    349: machine, and the server must have connections allowed from the local
                    350: machine.  Using authentication data is always recommended because not
                    351: using it makes the display insecure.  If XDM is used, it automatically
                    352: generates the authentication data.
                    353:
                    354: One should be careful not to use "xin" or "xstart" or other similar
                    355: scripts that explicitly set DISPLAY to start X sessions in a remote
                    356: machine, because the connection will then not go over the secure
                    357: channel.  The recommended way to start a shell in a remote machine is
                    358:
                    359:   xterm -e ssh host &
                    360:
                    361: and the recommended way to execute an X11 application in a remote
                    362: machine is
                    363:
                    364:   ssh -n host emacs &
                    365:
                    366: If you need to type a password/passphrase for the remote machine,
                    367:
                    368:   ssh -f host emacs
                    369:
                    370: may be useful.
                    371:
                    372:
                    373:
                    374: RSA AUTHENTICATION
                    375:
                    376: RSA authentication is based on public key cryptograpy.  The idea is
                    377: that there are two encryption keys, one for encryption and another for
                    378: decryption.  It is not possible (on human timescale) to derive the
                    379: decryption key from the encryption key.  The encryption key is called
                    380: the public key, because it can be given to anyone and it is not
                    381: secret.  The decryption key, on the other hand, is secret, and is
                    382: called the private key.
                    383:
                    384: RSA authentication is based on the impossibility of deriving the
                    385: private key from the public key.  The public key is stored on the
                    386: server machine in the user's $HOME/.ssh/authorized_keys file.  The
                    387: private key is only kept on the user's local machine, laptop, or other
                    388: secure storage.  Then the user tries to log in, the client tells the
                    389: server the public key that the user wishes to use for authentication.
                    390: The server then checks if this public key is admissible.  If so, it
                    391: generates a 256 bit random number, encrypts it with the public key,
                    392: and sends the value to the client.  The client then decrypts the
                    393: number with its private key, computes a 128 bit MD5 checksum from the
                    394: resulting data, and sends the checksum back to the server.  (Only a
                    395: checksum is sent to prevent chosen-plaintext attacks against RSA.)
                    396: The server checks computes a checksum from the correct data,
                    397: and compares the checksums.  Authentication is accepted if the
                    398: checksums match.  (Theoretically this indicates that the client
                    399: only probably knows the correct key, but for all practical purposes
                    400: there is no doubt.)
                    401:
                    402: The RSA private key can be protected with a passphrase.  The
                    403: passphrase can be any string; it is hashed with MD5 to produce an
                    404: encryption key for IDEA, which is used to encrypt the private part of
                    405: the key file.  With passphrase, authorization requires access to the key
                    406: file and the passphrase.  Without passphrase, authorization only
                    407: depends on possession of the key file.
                    408:
                    409: RSA authentication is the most secure form of authentication supported
                    410: by this software.  It does not rely on the network, routers, domain
                    411: name servers, or the client machine.  The only thing that matters is
                    412: access to the private key.
                    413:
                    414: All this, of course, depends on the security of the RSA algorithm
                    415: itself.  RSA has been widely known since about 1978, and no effective
                    416: methods for breaking it are known if it is used properly.  Care has
                    417: been taken to avoid the well-known pitfalls.  Breaking RSA is widely
                    418: believed to be equivalent to factoring, which is a very hard
                    419: mathematical problem that has received considerable public research.
                    420: So far, no effective methods are known for numbers bigger than about
                    421: 512 bits.  However, as computer speeds and factoring methods are
                    422: increasing, 512 bits can no longer be considered secure.  The
                    423: factoring work is exponential, and 768 or 1024 bits are widely
                    424: considered to be secure in the near future.
                    425:
                    426:
                    427: RHOSTS AUTHENTICATION
                    428:
                    429: Conventional .rhosts and hosts.equiv based authentication mechanisms
                    430: are fundamentally insecure due to IP, DNS (domain name server) and
                    431: routing spoofing attacks.  Additionally this authentication method
                    432: relies on the integrity of the client machine.  These weaknesses is
                    433: tolerable, and been known and exploited for a long time.
                    434:
                    435: Ssh provides an improved version of these types of authentication,
                    436: because they are very convenient for the user (and allow easy
                    437: transition from rsh and rlogin).  It permits these types of
                    438: authentication, but additionally requires that the client host be
                    439: authenticated using RSA.
                    440:
                    441: The server has a list of host keys stored in /etc/ssh_known_host, and
                    442: additionally each user has host keys in $HOME/.ssh/known_hosts.  Ssh
                    443: uses the name servers to obtain the canonical name of the client host,
                    444: looks for its public key in its known host files, and requires the
                    445: client to prove that it knows the private host key.  This prevents IP
                    446: and routing spoofing attacks (as long as the client machine private
                    447: host key has not been compromized), but is still vulnerable to DNS
                    448: attacks (to a limited extent), and relies on the integrity of the
                    449: client machine as to who is requesting to log in.  This prevents
                    450: outsiders from attacking, but does not protect against very powerful
                    451: attackers.  If maximal security is desired, only RSA authentication
                    452: should be used.
                    453:
                    454: It is possible to enable conventional .rhosts and /etc/hosts.equiv
                    455: authentication (without host authentication) at compile time by giving
                    456: the option --with-rhosts to configure.  However, this is not
                    457: recommended, and is not done by default.
                    458:
                    459: These weaknesses are present in rsh and rlogin.  No improvement in
                    460: security will be obtained unless rlogin and rsh are completely
                    461: disabled (commented out in /etc/inetd.conf).  This is highly
                    462: recommended.
                    463:
                    464:
                    465: WEAKEST LINKS IN SECURITY
                    466:
                    467: One should understand that while this software may provide
                    468: cryptographically secure communications, it may be easy to
                    469: monitor the communications at their endpoints.
                    470:
                    471: Basically, anyone with root access on the local machine on which you
                    472: are running the software may be able to do anything.  Anyone with root
                    473: access on the server machine may be able to monitor your
                    474: communications, and a very talented root user might even be able to
                    475: send his/her own requests to your authentication agent.
                    476:
                    477: One should also be aware that computers send out electromagnetic
                    478: radition that can sometimes be picked up hundreds of meters away.
                    479: Your keyboard is particularly easy to listen to.  The image on your
                    480: monitor might also be seen on another monitor in a van parked behind
                    481: your house.
                    482:
                    483: Beware that unwanted visitors might come to your home or office and
                    484: use your machine while you are away.  They might also make
                    485: modifications or install bugs in your hardware or software.
                    486:
                    487: Beware that the most effective way for someone to decrypt your data
                    488: may be with a rubber hose.
                    489:
                    490:
                    491: LEGAL ISSUES
                    492:
                    493: As far as I am concerned, anyone is permitted to use this software
                    494: freely.  However, see the file COPYING for detailed copying,
                    495: licensing, and distribution information.
                    496:
                    497: In some countries, particularly France, Russia, Iraq, and Pakistan,
                    498: it may be illegal to use any encryption at all without a special
                    499: permit, and the rumor has it that you cannot get a permit for any
                    500: strong encryption.
                    501:
                    502: This software may be freely imported into the United States; however,
                    503: the United States Government may consider re-exporting it a criminal
                    504: offence.
                    505:
                    506: Note that any information and cryptographic algorithms used in this
                    507: software are publicly available on the Internet and at any major
                    508: bookstore, scientific library, or patent office worldwide.
                    509:
                    510: THERE IS NO WARRANTY FOR THIS PROGRAM.  Please consult the file
                    511: COPYING for more information.
                    512:
                    513:
                    514: MAILING LISTS AND OTHER INFORMATION
                    515:
                    516: There is a mailing list for ossh.  It is ossh@sics.se.  If you would
                    517: like to join, send a message to majordomo@sics.se with "subscribe
                    518: ssh" in body.
                    519:
                    520: The WWW home page for ssh is http://www.cs.hut.fi/ssh.  It contains an
                    521: archive of the mailing list, and detailed information about new
                    522: releases, mailing lists, and other relevant issues.
                    523:
                    524: Bug reports should be sent to ossh-bugs@sics.se.
                    525:
                    526:
                    527: ABOUT THE AUTHOR
                    528:
                    529: This software was written by Tatu Ylonen <ylo@cs.hut.fi>.  I work as a
                    530: researcher at Helsinki University of Technology, Finland.  For more
                    531: information, see http://www.cs.hut.fi/~ylo/.  My PGP public key is
                    532: available via finger from ylo@cs.hut.fi and from the key servers.  I
                    533: prefer PGP encrypted mail.
                    534:
                    535: The author can be contacted via ordinary mail at
                    536:   Tatu Ylonen
                    537:   Helsinki University of Technology
                    538:   Otakaari 1
                    539:   FIN-02150 ESPOO
                    540:   Finland
                    541:
                    542:   Fax. +358-0-4513293
                    543:
                    544:
                    545: ACKNOWLEDGEMENTS
                    546:
                    547: I thank Tero Kivinen, Timo Rinne, Janne Snabb, and Heikki Suonsivu for
                    548: their help and comments in the design, implementation and porting of
                    549: this software.  I also thank numerous contributors, including but not
                    550: limited to Walker Aumann, Jurgen Botz, Hans-Werner Braun, Stephane
                    551: Bortzmeyer, Adrian Colley, Michael Cooper, David Dombek, Jerome
                    552: Etienne, Bill Fithen, Mark Fullmer, Bert Gijsbers, Andreas Gustafsson,
                    553: Michael Henits, Steve Johnson, Thomas Koenig, Felix Leitner, Gunnar
                    554: Lindberg, Andrew Macpherson, Marc Martinec, Paul Mauvais, Donald
                    555: McKillican, Leon Mlakar, Robert Muchsel, Mark Treacy, Bryan
                    556: O'Sullivan, Mikael Suokas, Ollivier Robert, Jakob Schlyter, Tomasz
                    557: Surmacz, Alvar Vinacua, Petri Virkkula, Michael Warfield, and
                    558: Cristophe Wolfhugel.
                    559:
                    560: Thanks also go to Philip Zimmermann, whose PGP software and the
                    561: associated legal battle provided inspiration, motivation, and many
                    562: useful techniques, and to Bruce Schneier whose book Applied
                    563: Cryptography has done a great service in widely distributing knowledge
                    564: about cryptographic methods.
                    565:
                    566:
                    567: Copyright (c) 1995 Tatu Ylonen, Espoo, Finland.