COMP3334 Secure Online Storage System
A secure file storage and sharing system with user authentication, MFA via email OTP, and per-file encryption.
Overview
A secure file storage and sharing system with user authentication, MFA via email OTP, and file encryption. Designed for secure uploads, per-file encryption with user-specific keys, and safe sharing capabilities.
Features
- User registration and login with password hashing and MFA (OTP via email)
- File upload, download, edit, delete, and sharing
- Per-file encryption with user-specific keys
- Admin user for viewing users and logs
- Rate limiting for security
Setup Instructions
1. Clone the Repository
git clone https://github.com/paco1127/secure-online-storage-system.git
cd secure-online-storage-system/src
2. Install Dependencies
pip install -r requirements.txt
3. Configure Environment Variables
Edit the .env file to provide your email provider
credentials and admin settings:
SENDER_EMAIL="your_email@example.com"
SENDER_PASSWORD="your_email_password"
SMTP_SERVER="smtp.yourprovider.com"
SMTP_PORT=587
ADMIN_PASSWORD="your_admin_password"
ADMIN_EMAIL="your_admin_email@example.com"
Note: You must use valid SMTP credentials for OTP email delivery.
4. Generate SSL Certificates (Optional for Localhost)
openssl req -x509 -newkey rsa:4096 -keyout localhost.key -out localhost.crt -days 365 -nodes -subj "/CN=localhost"
5. Start the Server
python server.py
6. Run the Client
python client.py
Usage
- Register: Create a new user account.
- Login: Authenticate with password and OTP sent to your email.
- File Management: Upload, edit, delete, download, and share files securely.
-
Admin: Login as admin (credentials in
.env) to view users and logs.
Notes
- All files are encrypted before upload using per-file keys.
- OTPs are sent via email for MFA; ensure your SMTP credentials are correct.
- Intended for educational/demo use only.
Repository
Source code: paco1127/secure-online-storage-system