Skip to content

demihungry/File-Drop-Project

Repository files navigation

File-Drop-Project

Team Members

David Modelo, Demi Chen, Eduardo Chavez, Noah Scoot, Raquel Cruz

Cryptographic Keys (Demo Only)

The RSA key pairs included in crypto/keys/ are for testing and demonstration purposes only. In real-world deployment, each user would generate and securely manage their own key pairs. Private keys would never be committed to a repository.

Project Overview

This project implements a client-server file drop service that allows one user to upload a file that can only be accessed by a single intended recipient securely.

Design

  • Confidentiality (only the recipient should be able to read the file)
  • Digital Signature (the recipient should be able to verify that the file came from the sender)

Basic Flow

  1. Sender encrypts file locally
  2. Sender encrypts symmetric key using recipient’s public key
  3. Sender signs the file
  4. Server stores encrypted data
  5. Recipient downloads and verifies

How to Run

Local Development

The server can be run locally for testing, which allows direct inspection of stored files and verification of tamper resistance.

Make sure you have requests and npm installed

npm install
pip install requests

For macOS/Linux

export JWT_SECRET="your_secret_here"
node server.js

For Windows Command Promp

set JWT_SECRET="your_secret_here"
node server.js

For Windows PowerShell

$env:JWT_SECRET="dev-secret-key"
node server.js

You should see something like

Server running on port 3000

To run the client locally, you must execute it from the project’s main directory. The client relies on relative paths, so running it from the wrong location will cause errors.

Steps

  1. Open a terminal.
  2. Navigate to the main project folder (the directory that contains client_gui.py). You can either:
  • Open the terminal directly in the project folder, or
  • cd into the folder manually. Example:
cd ~/Downloads/File-Drop-Project-main
  1. Run the client using Python 3:
python3 client_gui.py

How to Use

To test the system, users should create two separate accounts so files can be sent from one user to another.

  1. Register Users Open the client and enter a username and password. Click the Register button. Wait until the message "Registered Successfully" appears.

Note: Registration may occasionally fail. If this happens, register again using a different username.

Repeat this process to create a second user account.

  1. Log In Enter the username and password for one of the accounts. Click Log In. After a successful login, the application features will be available.

  2. Upload a File After logging in, click the File tab. Type the recipient’s username in the recipient field. Click Choose File and select the file to upload. Click Upload. Wait for the upload confirmation message.

The file is encrypted and digitally signed on the client before being sent to the server.

  1. Download a File Log in as the recipient user. View the received file in the inbox. Select the file and click Download.

The client will verify the file’s digital signature before downloading. If the key pairs match, the client will display "Valid" and allow the file to be downloaded. If verification fails, the download is blocked.

Team Contributions

Demi: implemented client-side cryptographic protocols, and designed the security protocol diagrams and documentation.
David: implemented the client-side application logic for uploading and downloading files, and handling user interaction through a command-line interface.
Noah: implemented the server-side functionality for storing encrypted files and metadata and enforcing recipient-only access, without handling any plaintext data or cryptographic keys.
Eduardo: Designed the overall system architecture and protocol flow and contributed to the project design documentation.
Raquel: Organized and compiled the final project documentation and presentation.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •  

Languages