File transfer between client and server -- 2

Job ID: 35436539

Budget: $10 – $30 USD

You are required to write an application for a simple file transfer between a client and server. The
application should have a connection-oriented communication to send a large file (in the magnitude
of 10s or 100s of Mbytes). There is no restriction on the user interface, but it should be easy to use.
Server is a public server and client and server do not share any keys prior to the communication. Your
aim is to first develop a protocol for the communication and then implement it.
You are free to choose any language and environment. However, a general-purpose language like C,
C++, C# and Java should be preferred.
Your aim is to provide a number of services during the file transfer to make it more secure and more
robust. Here are the services you need to implement:
o Key Exchange (creation of keys and IVs)
o Authentication
o Confidentiality
o Compression
You are not required to re-implement algorithms. You are free to choose any available compression,
encryption and MAC libraries. You can use PGP as a starting point about the services covered. For
sake of simplicity apply all services at once. You can assume that server has a public key and it is
known by the client.