I just wrote up a howto on setting up hostbased (rsh-style + 
rsa key verification) authentication that should be added to the FAQ
presently. Try checking the FAQ again:
http://www.employees.org/~satch/ssh/faq

--
Gregor Mosheh
[EMAIL PROTECTED]
Systems Admin, Humboldt Internet
707.825.4638


On Thu, 30 Mar 2000, 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.
> 

Reply via email to