Lab 8 - Secure Shell (SSH) Protocol

Due: Friday

One network security related protocol not mentioned in the book is the SSH protocol. This protocol allows encrypted shell sessions and encrypted file transfer sessions between the client and server. One issue in unsecure LANs is that others can sniff your password (and anything sent between the client and server) when you use a plaintext application such as telnet or FTP. SSH provides an encrypted alternative to these applications so that sniffing is not as easy. Note: as with any cryptographic protocol, if someone figures out how to break the underlaying cryptographic algorithms, they can recover the plaintext from the encrypted session.

The two main developers of SSH servers are Tectia (formerly SSH Communications Security) and OpenSSH. The original SSH code was written by Tatu Ylönen and released freely. Tatu Ylönen went on to form SSH Communications Security, which is a proprietary company. It changed its name to Tectia Corporation in 2010. OpenSSH was developed from Tatu Ylönen's free code and is open source. The OpenSSH server is widely used by many Unix/Linux based servers.

There are also many free SSH clients for various platforms, such as the Putty program for Windows. Most Linux distributions use the client software provided by OpenSSH. There are also proprietary SSH clients for a variety of platforms.

Like many network related protocols, SSH was developed first then standardized. IETF formed a working group called secsh to develop the RFCs. The working group has now dissolved. The main RFCs out of that working group are:

Assignment

Read through the RFCs and answer the following questions. You might also find it helpful to read through Chapter 8 of the book, which talks about public key encryption, symmetric key encryption and key exchanges.
  1. Does SSH encrypt the TCP/IP headers or just the payload?
  2. In brief, what is the purpose of including a message digest (MAC)?
  3. What is a key exchange and why is it used in SSH?
  4. Does SSH support public key, symmetric key or both?
  5. Why is Diffie-Hellman key exchange appealing?