Project 2 - Distributed Systems
Project Objective:
- Understand client side and server side UDP and TCP sockets.
- Simulate a man-in-the-middle attack and understand the indicators and implications of this type of attack.
- Understand TCP and UDP through first-hand experience.
- Familiarize with the abstraction provided by Remote Procedure Calls (RPCs) and implement digital signatures in RSA.
Tasks:
- Modify Server & Client code from in-class Lab to print certain messages and respond to given commands.
- Simulate a man-in-the-middle attack
- Create a basic addition method on the server that is called by the client, server responds with a running total. Server keeps track of total as long as it's running (client can exit / return and see the same total).
- Same principle as Task 2, but adds functionality to track multiple client IDs, subtract from the total, and get the current total for any of the IDs tracked.
- Repeat Task 3 using TCP instead of UDP.
- Implement RSA & digitally sign messages (modeled after ETH signatures).
Topics/Skills covered:
- Client/Server interactions using both TCP & UDP
- Eavesdropper / MITM attacks
- Digital Signatures
- RSA public / private key encryption
Demonstration of completed tasks:
Task 0: Client console output - "Halt!" command shuts down both server / client
Server console output - echoing messages received from client
Task 1: Created an eavsdropper that intercepts messages from spoofed port (in this case, 6798), and relays the intercepted message to another port (in this case, 6789). The idea is just to demostrate what it may look like on the client side if a message is being intercepted (shows that the client doesn't know any better)
Task 2: Client-side console output. The client enters a number and the server adds that number to the running total, then returns the running total to the client. Ignore the spelling mistake.
Server-side console output. Shows the addition operation and the result, and what is being returned to the client.
Task 3: Expanded upon task 2, added multiple users, subtraction, and GET functionality. Client-side console output:
Task 4: Functionality is identical to Task 3, it just uses TCP instead of UDP. Client-side console output:
Task 5: Task 4 functionality with RSA & digital signatures added. Client-side console output: