xsukax PGP Secure Chat
xsukax PGP Secure Chat
A lightweight, privacy-focused real-time chat application that implements end-to-end encryption using OpenPGP standards. Built with security and user privacy as core principles, this application ensures that your conversations remain completely private and secure.
Github Repo: https://github.com/xsukax/xsukax-PGP-Secure-Chat
Project Overview
xsukax PGP Secure Chat is a modern web-based messaging platform that combines the proven security of PGP encryption with the convenience of real-time communication. The application consists of a Python WebSocket server that handles message routing and connection management, paired with a responsive web client that performs all cryptographic operations locally in the browser.
Key Architecture Principles:
- Zero-knowledge server design: The server never has access to message content or private keys
- Client-side encryption: All cryptographic operations occur in the user’s browser
- Minimal data persistence: Only encrypted messages and public keys are stored
- Decentralized trust model: Users manage their own key pairs and verify contacts independently
The application generates unique 6-character user IDs for each session and facilitates secure peer-to-peer communication through an encrypted friend request system.
Security and Privacy Benefits
End-to-End Encryption
- OpenPGP Implementation: Utilizes the robust OpenPGP.js library for industry-standard encryption
- Client-Side Cryptography: All encryption and decryption operations occur exclusively in the user’s browser
- Forward Secrecy: Each message is individually encrypted, preventing retroactive decryption of message history
Privacy Protection
- Zero-Knowledge Architecture: The server cannot read message content, only route encrypted data
- No Persistent User Accounts: Users are identified by temporary session-based IDs
- Minimal Metadata Collection: The server stores only essential routing information
- No Message Content Logging: Encrypted messages pass through the server without being logged or analyzed
Key Management Security
- Local Key Storage: Private keys never leave the user’s device
- Passphrase Protection: Support for passphrase-protected private keys
- Key Verification: Users can verify public key fingerprints before establishing trust
- Secure Key Exchange: Public keys are exchanged through the friend request mechanism
Operational Security
- Transport Layer Security: WebSocket connections can be secured with TLS
- Connection Health Monitoring: Automatic ping/pong for connection stability
- Graceful Error Handling: Secure failure modes that don’t leak sensitive information
- Memory Protection: Sensitive data handling with appropriate cleanup
Features and Advantages
Core Functionality
- Real-Time Messaging: Instant delivery of encrypted messages through WebSocket connections
- Friend Request System: Secure method for establishing trusted communication channels
- Cross-Platform Compatibility: Web-based client runs on any modern browser
- Responsive Design: Optimized for both desktop and mobile devices
Technical Advantages
- Lightweight Architecture: Minimal resource requirements for both client and server
- Easy Deployment: Simple installation process with automated service setup
- Scalable Design: Efficient handling of multiple concurrent connections
- Open Source: Full transparency and community-driven development
User Experience
- Intuitive Interface: Clean, modern UI with terminal-inspired aesthetic
- Drag-and-Drop Key Import: Simple PGP key file upload process
- Status Indicators: Real-time connection and encryption status display
- Message Persistence: Encrypted message history maintained per conversation
Unique Selling Points
- No Registration Required: Immediate access without account creation
- Temporary Identity Model: Enhanced privacy through session-based user IDs
- Browser-Based Encryption: No software installation required for clients
- Self-Hosted Option: Complete control over your communication infrastructure
Installation Instructions
Prerequisites
- Linux server (Ubuntu/Debian or CentOS/RHEL/Rocky/AlmaLinux)
- Python 3.6 or higher
- Root or sudo access
- Network connectivity on port 8765
Automated Installation
-
Download the installation package:
git clone https://github.com/xsukax/xsukax-PGP-Secure-Chat.git cd xsukax-PGP-Secure-Chat -
Run the installation script:
sudo chmod +x install_service.sh sudo ./install_service.sh install -
Verify installation:
sudo systemctl status xsukax-pgp-chat
Manual Installation
If you prefer manual installation or need to customize the setup:
-
Install Python dependencies:
sudo apt update # For Ubuntu/Debian sudo apt install python3 python3-pip python3-venv # Or for CentOS/RHEL: sudo yum install python3 python3-pip pip3 install websockets asyncio -
Create application directory:
sudo mkdir -p /opt/xsukax-pgp-chat sudo cp server.py /opt/xsukax-pgp-chat/ sudo chmod +x /opt/xsukax-pgp-chat/server.py -
Create systemd service (optional but recommended):
sudo cp xsukax-pgp-chat.service /etc/systemd/system/ sudo systemctl daemon-reload sudo systemctl enable xsukax-pgp-chat sudo systemctl start xsukax-pgp-chat
Firewall Configuration
Open the required port for WebSocket connections:
For UFW (Ubuntu/Debian):
sudo ufw allow 8765/tcp
For FirewallD (CentOS/RHEL):
sudo firewall-cmd --permanent --add-port=8765/tcp
sudo firewall-cmd --reload
TLS/SSL Setup (Recommended)
For production deployments, configure a reverse proxy with TLS:
server {
listen 443 ssl;
server_name your-domain.com;
ssl_certificate /path/to/certificate.crt;
ssl_certificate_key /path/to/private.key;
location / {
proxy_pass http://localhost:8765;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
}
}
PGP Key Generation
Before using xsukax PGP Secure Chat, you need to generate a PGP key pair. This section provides step-by-step instructions for creating your cryptographic keys using GnuPG (GPG).
Prerequisites for Key Generation
- GnuPG (GPG) installed on your system
- Basic understanding of public-key cryptography concepts
- Secure environment for key generation (offline recommended for maximum security)
Installing GnuPG
Ubuntu/Debian:
sudo apt update
sudo apt install gnupg
CentOS/RHEL/Rocky:
sudo yum install gnupg2
# or for newer versions:
sudo dnf install gnupg2
macOS:
brew install gnupg
Windows: Download and install GPG4Win from https://gpg4win.org/
Step-by-Step Key Generation
1. Generate Your Key Pair
Run the following command to start the interactive key generation process:
gpg --full-generate-key
During the interactive process, you will be prompted for:
- Key type: Select
(1) RSA and RSA (default) - Key size: Choose
4096bits for maximum security - Key expiration: Set according to your security policy (recommend 1-2 years)
- Real name: Enter your name or identifier
- Email address: Enter your email (can be fictional for privacy)
- Comment: Optional description field
- Passphrase: Choose a strong passphrase to protect your private key
Example output:
pub rsa4096 2025-09-20 [SC]
5BE31FC1655C5D57F4EE4578E0B17789DB4D8F77
uid Your Name <[email protected]>
sub rsa4096 2025-09-20 [E]
2. Export Your Public Key
Use your key ID (the long hexadecimal string) to export your public key:
gpg --armor --export YOUR_KEY_ID > public_key.asc
Example:
gpg --armor --export 5BE31FC1655C5D57F4EE4578E0B17789DB4D8F77 > public_key.asc
3. Export Your Private Key
Export your private key using the same key ID:
gpg --armor --export-secret-keys YOUR_KEY_ID > private_key.asc
Example:
gpg --armor --export-secret-keys 5BE31FC1655C5D57F4EE4578E0B17789DB4D8F77 > private_key.asc
Key Management Best Practices
Security Recommendations
- Secure Storage: Store your private key in a secure location with restricted access
- Backup Strategy: Create encrypted backups of your private key and store them separately
- Passphrase Strength: Use a strong, unique passphrase for your private key
- Key Expiration: Set reasonable expiration dates and renew keys regularly
- Revocation Certificate: Generate a revocation certificate and store it securely
Verifying Your Keys
After generation, verify your keys are correctly created:
# List your secret keys
gpg --list-secret-keys
# List your public keys
gpg --list-keys
# Check key fingerprint
gpg --fingerprint YOUR_KEY_ID
Key File Format
Your exported keys will be in ASCII-armored format (.asc files):
- public_key.asc: Contains your public key for sharing with others
- private_key.asc: Contains your private key (keep this secret and secure)
Both files can be directly uploaded to the xsukax PGP Secure Chat application.
Alternative Key Generation Methods
Using Kleopatra (Windows/GUI)
For users who prefer a graphical interface:
- Install GPG4Win with Kleopatra
- Open Kleopatra
- Click “New Key Pair”
- Follow the wizard to generate your keys
- Export keys in ASCII-armored format
Using GPG Suite (macOS)
- Install GPG Suite
- Open GPG Keychain
- Click “New” to create a key pair
- Export keys in .asc format
Security Considerations
Important Security Notes:
- Never share your private key with anyone
- Use the application only after verifying the server’s authenticity
- Consider generating keys on an air-gapped system for maximum security
- Regularly audit your key usage and revoke compromised keys
- Verify key fingerprints when exchanging public keys with contacts
Usage Guide
Setting Up Your Keys
- Access the application by opening
Client.htmlin your web browser - Connect to server by entering the WebSocket URL (e.g.,
ws://your-server:8765) - Import your PGP keys:
- Click “Choose Files” for both private and public key slots
- Select your
.ascor.gpgkey files - Click “Load Keys”
- Enter your private key passphrase when prompted (or leave blank if none)
Step-by-Step Communication Process
-
Add a Friend:
- Obtain your friend’s 6-character user ID
- Enter the ID in the “Add Friend” field
- Click “Send Friend Request”
- Wait for your friend to accept the request
-
Send Encrypted Messages:
- Select your friend from the friends list
- Type your message in the text area
- Click “Send” – the message is automatically encrypted
- Your friend receives and decrypts the message automatically
-
Message Security Verification:
- All messages display a lock icon indicating encryption
- Failed decryption attempts are clearly marked
- Connection status is continuously monitored
Administration and Monitoring
Service Management:
# Start the service
sudo systemctl start xsukax-pgp-chat
# Stop the service
sudo systemctl stop xsukax-pgp-chat
# Restart the service
sudo systemctl restart xsukax-pgp-chat
# View status
sudo systemctl status xsukax-pgp-chat
# View logs
sudo journalctl -u xsukax-pgp-chat -f
Monitoring Active Connections: The server logs provide information about:
- Client connections and disconnections
- Friend request activities
- Message routing (encrypted content only)
- Error conditions and recovery
Troubleshooting Common Issues
Connection Problems:
- Verify server is running:
sudo systemctl status xsukax-pgp-chat - Check firewall rules allow port 8765
- Ensure WebSocket URL is correct (ws:// not http://)
Key Loading Issues:
- Verify key file formats (.asc or .gpg)
- Check passphrase accuracy (case-sensitive)
- Ensure private and public keys match
Message Decryption Failures:
- Confirm friend’s public key is properly loaded
- Verify your private key is correctly decrypted
- Check that you’re friends with the message sender
Licensing Information
This project is licensed under the GNU General Public License v3.0 (GPL-3.0).
What This Means for Users
Freedom to Use: You are free to use this software for any purpose, including commercial applications, without paying licensing fees.
Freedom to Study and Modify: You have the right to examine the source code, understand how it works, and modify it to suit your needs.
Freedom to Distribute: You may redistribute copies of the software to others, either in original or modified form.
Copyleft Protection: Any modifications or derivative works must also be licensed under GPL-3.0, ensuring the software remains open and free.
What This Means for Contributors
Open Source Requirement: All contributions become part of the GPL-3.0 licensed codebase and must be compatible with this license.
No Proprietary Derivatives: The copyleft nature of GPL-3.0 prevents the creation of proprietary versions of this software.
Patent Protection: The license includes provisions that protect users from patent-related legal issues.
Compliance Requirements
If you distribute this software (modified or unmodified):
- Include the full GPL-3.0 license text
- Provide access to the corresponding source code
- Clearly indicate any modifications made to the original code
- Ensure derivative works are also licensed under GPL-3.0
For the complete license text, see the LICENSE file in this repository or visit https://www.gnu.org/licenses/gpl-3.0.html.
Security Notice: While this application implements strong cryptographic practices, users should conduct their own security review before using it for highly sensitive communications. For maximum security, deploy on infrastructure you control and audit the code thoroughly.









