To understand the underlying activities which occur during inter-process communication;
To implement a client/server program using UDP sockets;
To use C/C++ library functions for implementing a socket program; and
To get familiarized with the Unix programming environment.
Introduction: For this project, you will be writing a client/server application to implement a mailbox messaging service with end-to-end encryption using UDP sockets. Secure communication between clients will be through RSA public key encryption (PKE). The server program will act as the public-key and mailbox manager. For purposes of making this project less complex, we will limit messages to a maximum of 4 characters (a "psst"). The "psst" message length will allow the encrypted messages to fit in an 4-byte long int data type.
The components to this programming project are:
Client: sends and receives encrypted beeps through a mailbox between users.
Server: manages public-keys sent by users, and stores and forwards encrypted messages between users.
Server. The server process performs the following activities. The server should maintain a table of public keys that have been registered and a table to store all messages.
Process key registration
The server should respond with an acknowledgement that the key was received
Process key requests
The server should respond with the corresponding public key of the requested user.
Process encrypted messages from any user.
The server should store messages by recipient and send an acknowledgement to the sending client.
Process "retrieve message" requests
The server should send all stored messages for the requesting recipient user,
Client. The client process should perform the following activities:
Send a register message to the server
A client should always register a public key to the server at the beginning of a session.
Send "request public key"
The client should be able to request for another user's public key to the server at any time.
Send encrypted messages
The client should be able to send messages from the user to other known users. The message should be encrypted using the recipient user's public key.
Send "retrieve messages" request
The client should be able to request to retrieve all his/her messages
The client should be able to receive ALL messages.
The messages should be decrypted using the user's own private key and displayed.
Exit – Provide an option for the user to exit the program. Client program should not quit.
7 freelancers are bidding on average $353 for this job
Hello! I'd like to deliver messaging app. I'm familiar with network programming, C++, cryptography. I'll do the job fairly good. Please, give me a try!