An experimental email client implementing post-quantum cryptography and quantum key distribution
Features β’ Installation β’ Usage β’ Technical Details β’ Contributing
QuMail implements multiple cryptographic approaches including Kyber-512 KEM, quantum key distribution simulation, and traditional AES-GCM encryption. The project serves as a research platform for post-quantum cryptography in email communications, featuring a modern PyQt6 interface with integrated voice/video calling capabilities.
- Kyber-512 KEM: NIST-standardized post-quantum key encapsulation
- AES-256-GCM: Authenticated encryption for message payloads
- One-Time Pad: XOR-based encryption with quantum-derived keys
- QKD Simulation: Quantum key distribution protocol simulation
- Full IMAP/SMTP support for standard email providers
- Rich HTML email rendering with WebEngine
- Secure attachment encryption and decryption
- SQLite-based encrypted local keystore
- Firebase Realtime Database for public key distribution
- WebRTC-based voice and video calling
- Agora.io integration for reliable signaling
- Cross-platform multimedia support
- Real-time communication capabilities
- β Production Ready: Kyber-512 encryption, email client, local keystore
- π§ Active Development: QKD simulation, WebRTC calling, Firebase integration
- π Planned: Hardware QKD support, mobile clients, group messaging
- Python 3.8+
- pip package manager
git clone https://github.com/yourusername/qumail.git
cd qumail
pip install -r requirements.txt
python launcher.pyPyQt6>=6.4.0
PyQt6-WebEngine>=6.4.0
PyQt6-Multimedia>=6.4.0
PyQt6-MultimediaWidgets>=6.4.0
qtawesome>=1.2.0
qasync>=0.24.0
httpx>=0.24.0
cryptography>=3.4.8
keyring>=23.0.0
configparser>=5.0.0
fastapi>=0.100.0
uvicorn>=0.22.0
websockets>=11.0.0
pydantic>=2.0.0
agora-token-builder>=1.0.0
- Launch with
python launcher.py - Configure IMAP/SMTP settings in Settings dialog
- Kyber key pairs are generated automatically on first run
- Level 1: One-time pad with simulated quantum keys
- Level 2: AES-256-GCM with quantum-derived keys
- Level 3: Kyber-512 KEM with AES-256-GCM
- Level 4: Plaintext (testing only)
Experimental WebRTC implementation. Requires Agora.io configuration for signaling server.
| Level | Algorithm | Key Exchange | Notes |
|---|---|---|---|
| 1 | XOR (OTP) | Simulated QKD | Perfect secrecy if keys are truly random |
| 2 | AES-256-GCM | PBKDF2 from QKD keys | Quantum-derived symmetric keys |
| 3 | AES-256-GCM | Kyber-512 KEM | NIST PQC standardized algorithm |
| 4 | None | None | Plaintext for testing |
- Local: Kyber-512 keypairs stored in SQLite with encryption
- Distribution: Firebase Realtime Database for public key sharing
- QKD: HTTP-based simulation server (not actual quantum hardware)
kyberk2so/: Pure Python implementation of Kyber-512crypto_services.py: Encryption/decryption logicfirebase_directory.py: Public key distributionqkd_service.py: Simulated quantum key distributionwebrtc_service.py: WebRTC calling implementation
QuMail/
βββ π kyberk2so/ # Kyber-512 implementation
βββ π launcher.py # Process manager
βββ π± qumail_client.py # Main application
βββ π₯οΈ main_window.py # PyQt6 GUI
βββ π§ email_controller.py # Email logic
βββ π crypto_services.py # Encryption services
βββ π call_controller.py # WebRTC calls
βββ π firebase_directory.py # Key distribution
βββ βοΈ qkd_service.py # QKD simulation
βββ π§ pqc_key_server.py # Local key server
python pqc_key_server.py # Local key server (port 8080)
python qumail_client.py # Main GUI application
python launcher.py # Runs both automatically- Use Level 4 (plaintext) for debugging message flow
- QKD service runs in simulation mode by default
- Firebase configuration required for key distribution
- Hardware QKD device integration
- Mobile client development (Android/iOS)
- Group messaging and conference calling
- Performance optimization for large file handling
- Comprehensive security auditing
- Follow PEP 8
- Add type hints
- Document cryptographic functions thoroughly
- QKD uses simulation rather than quantum hardware
- WebRTC may require network/firewall configuration
- Public key distribution depends on Firebase
- Forward secrecy not yet implemented
- Large file handling could be optimized
- Encryption operations may briefly block UI
MIT License - see LICENSE file for details.