PastePal-OS is a secure paste sharing application that implements zero-knowledge security principles. All data is encrypted locally before being sent to the server, ensuring that only you can access your content.
- Zero-Knowledge Security: Your data is encrypted locally before being sent to the server
- Client-Side Encryption: All encryption/decryption happens on your device
- Master Password: Your master password never leaves your device
- Symmetric Key Encryption: Your pastes are encrypted with a strong symmetric key
- Password-Based Key Derivation: Uses PBKDF2 with SHA-256 for secure key derivation
- You create an account with an email and master password
- A master key is derived from your password using PBKDF2
- A random symmetric key is generated for encrypting your pastes
- The symmetric key is encrypted with your master key
- Only your email, password hash, and encrypted symmetric key are sent to the server
- You enter your email and master password
- Your master key is derived locally from your password
- A password hash is sent to the server for authentication
- The server returns your encrypted symmetric key
- Your master key decrypts the symmetric key locally
- Your paste content is encrypted locally with your symmetric key
- Only the encrypted data is sent to the server
- The server stores the encrypted data but cannot read it
- Encrypted paste data is retrieved from the server
- The data is decrypted locally using your symmetric key
# Build the application
go build -o pastepal.exe ./cmd/pastepal
# Run the application
./pastepal.execmd/pastepal: Main application entry pointinternal/auth: Authentication and key managementinternal/crypto: Encryption and decryption utilitiesinternal/models: Data modelsinternal/storage: Local storage managementinternal/api: Server API clientinternal/config: Application configurationinternal/core: Core application logic
- golang.org/x/crypto: For cryptographic functions
- Your master password is never stored or transmitted in plain text
- The symmetric key is only stored in encrypted form
- All encryption/decryption happens locally on your device
- The server only sees encrypted data and cannot decrypt it
This application is designed to connect to a server that implements the corresponding API. The server component is not included in this repository.