A client-server system that enables secure file storage on Google Drive using AES encryption, SSL/TLS for secure transmission, and TCP checksum verification for data integrity.
This project implements a secure cloud-based file storage system where clients can securely store and retrieve encrypted files from Google Drive. The system ensures end-to-end encryption with client-side key management.
- End-to-End Encryption: Files are encrypted using AES before transmission
- Secure Communication: SSL/TLS encryption for client-server communication
- Data Integrity: TCP checksum verification ensures file integrity
- User-Friendly Interface: GUI for easy file management
- Cloud Storage: Integration with Google Drive for file storage
- Client-Side Key Management: Users maintain control of encryption keys
- Python 3.x
- Required packages:
pycryptodome google-auth google-auth-oauthlib google-auth-httplib2 google-api-python-client PyQt5 cryptography
-
Clone the repository:
git clone https://github.com/yourusername/secure_transfer.git cd secure_transfer -
Install required packages:
pip install pycryptodome pip install google-auth google-auth-oauthlib google-auth-httplib2 google-api-python-client pip install PyQt5 pip install cryptography -
Generate SSL certificates (if not already included):
openssl req -x509 -newkey rsa:4096 -keyout Server.key -out Server.crt -days 365 -nodes -
Refer to CN Project Documentation.pdf for detailed explanation
-
Ensure that you have RSA Key, Certificate and have a valid Credentials.json file
-
Navigate to the server directory:
cd Server -
Run the server:
python run_server.py -
The server will start and display its IP address and port number
-
Navigate to the client directory:
cd Client -
Ensure you have the Server.crt file in the Client directory
-
Start the client application:
python run_client.py -
Connect to the server by entering:
- Server IP address
- Server port number
- Click "Connect"
-
Uploading Files:
- Click "Upload" button
- Select file to upload
- Choose or generate an AES key
- The file will be encrypted and uploaded to Google Drive
-
Downloading Files:
- Select the file from the list
- Provide the correct AES key
- Click "Download"
- The file will be decrypted and saved locally
-
Key Management:
- Generate new AES keys using the "Generate Key" option
- Store keys securely - they are required for decryption
- Lost keys cannot be recovered
Project Root/
├── Server/
│ ├── server.py
│ ├── run_server.py
│ ├── Server.crt
│ ├── Server.key
│ ├── encryption.py
│ ├── gdrive.py
│ ├── test_encryption.py
│ ├── Downloads/
│ └── Uploads/
└── Client/
├── gui.py
├── client.py
├── Server.crt
└── run_client.py
- Key Storage: The client must store all AES keys locally. Loss of a key means the encrypted file cannot be decrypted.
- Certificate Validation: The client must have a valid server certificate to connect.
- Server Security: The server does not store any files; it only handles encryption/decryption operations.
- Connection Issues: Verify server IP and port, check if server is running, ensure SSL certificate is valid
- Authentication Errors: Verify Google Drive credentials, check SSL certificate validity
- File Transfer Issues: Check network connectivity, verify file permissions, ensure sufficient storage space
- Adyansh Aggarwal (PES1UG23AM028)
- Akash Madisetty (PES1UG23AM035)
This project is licensed under the MIT License - see the LICENSE file for details.