Hi,
Get Anne Carasik's book UNIX Secure Shell, McGraw Hill,
ISBN:0-07-134933-2
It's a great book, buy it, you'll become the SSH expert in you company.
Carl
On 30-Mar-00 asosin wrote:
> Does anyone understand how the Client to Server authentication is
> performed ?
>
> Below I have included all the information I was able to gather from the
> Internet and the MAN pages Unix, however it still does not sound
> correct.
> If someone knows how it works, please add in some comments to clear up
> my
> confusion.
>
>
> Here is where my confusion is:
> a). In # 4 the MAN page said that the Server send it's Public key and
> the
> Clients Public key to the Client.
> However what is there to prevent a fake Server from sending that same
> Public key and the Clients
> Public key to the client ? If someone has an account on that Server
> then
> they can easily get the Client and Server Public key, even if someone
> is
> using a sniffer they can get this information since it doesn't appear
> to be
> encrypted in #4.
> b). In # 6 the client then generates a random 256 bit number which is
> encrypted using the Clients
> Public key and the Server Public key. If that is the case how is the
> Server suppose to decrypt the random
> number since it would only know the Server Private key and not the
> Clients
> Private key ? The idea of using RSA is
> that if you encrypt something with a public key, then you are suppose
> to be
> able to decrypt it using a private key or vice versa.
>
> If you know the answer please reply, or type out the steps in a easy to
> understand format.
>
> ------------------------------------------------
> 1. First on the client side, a user types: ssh
> servername.ca
> In Unix\Linux the client computer reads the ~user/.ssh/config and
> the
> /etc/ssh/ssh_config files.
> (Each client has a 1024 bit key to identify itself, and each server
> key is
> 768 bits, and this RSA key is
> regenerated by the Server every hour it is used or when the daemon
> starts
> and kept in memory not on HD.)
>
> 2. The client that wants to establish a connection does this using
> port
> 22, but first the Server checks whether the connection came from an
> authorized IP#, and if so then it responds to the client with a
> "Version
> Identification string."
>
> 3. The client then sends it's own "Version" back to the Server and if
> either side fails then the connection is terminated.
>
> 4. The Server then uses the RSA Cipher algorithm and sends the
> following
> info to the client:
> Server Public Key + Client Public Key (Stored in the Server's
> ssh_known_hosts file.)
>
> /etc/ssh_known_hosts Everyone = Read, and Root = Write
> - contains the clients public key.
>
> /etc/ssh_host_key Everyone = No access, and Root = Write
> - contains Server Private RSA key.
>
> /etc/ssh_host_key.pub Everyone = Read
> - contains the Server Public RSA key.
>
> /etc/ssh_random_seed Everyone = No access, and Root = Write
> - contains the session 256 bit random number.
>
> Note that the Client Public key is already on the Server since it was
> placed there during the very first
> connection to the Server.
>
> 5. Now the client check the Server Public Key it received against the
> one
> in it's own list
> of ssh_known_hosts, and if it's a match then we know it's the same
> Server. (Prevents Spoofing ?)
> Also during this transfer the sshd of the Server included a 64bit of
> random
> data, a "cookie" which the client must then include in its reply to the
> Server.
>
> 6. The client then generates a 256 bit random number "Session key" and
> encrypts it using the client public key and the Server public key.
> This
> encrypted number is then send to the server which only the Server can
> decrypt using it's private key, and the cookie is also included in the
> reply so the Server knows it is still talking to the same computer.
>
> 7. Now both sides use this random number as a session key to encrypt
> all
> the communication during
> the connection. The rest of the session is encrypted using the
> default
> cypher IDEA.
>
> 8. In the final step the client tries to authenticate itself using
> password
> authentication. The .rhosts
> authentication is disabled by default on the Server, since it is
> insecure.
> The Server can be
> configured using command line options which will override the config
> file.
------------------------------------------------------------------------
E-Mail: Carl J. Nobile <[EMAIL PROTECTED]>
Date: 31-Mar-00 Phone: 315-453-2912 Ex. 5336
Time: 08:59:14 Fax: 315-453-3052
Software Engineering Group -- AppliedTheory Corp.
224 Harrison Street, 6th Floor, Syracuse, NY 13202
------------------------------------------------------------------------