A one-time encrypted zero-knowledge password/secret sharing application focused on simplicity and security. No database or complicated set-up required.
- Download and extract the latest release of FlashPaper
 - Edit the 
docker-compose.ymlfile with your customizations - Run 
docker-compose up -dto start FlashPaper - Set up a reverse-proxy in front of FlashPaper that terminates SSL/TLS
 
Requirements: PHP 7.0+ and a web server
- Download and extract the latest release of FlashPaper to the document root of your web server
 - Copy 
settings.example.phptosettings.phpand make customizations to that file - Disable access logging in your web server's configuration so nothing sensitive (IP addresses, user agent strings, timestamps, etc) are logged to disk
 
<random>--secrets.sqlitesqlite database created (if it doesn't already exist)<random>--aes-static.keyrandomized 256-bit AES static key created (if one doesn't exist already)- Random 256-bit AES key created
 - Random 128-bit IV created
 - Random 64-bit ID created
 - ID + AES key hashed with bcrypt
 - Submitted text encrypted with AES-256-CBC using AES key and random IV
 - Ciphertext now encrypted with AES-256-CBC using static AES key and random IV
 - ID and AES key joined (known as 
k) - Random prune date/time generated using 
prune->min_days/max_days - ID, IV, bcrypt hash, ciphertext, and prune epoch stored in DB
 kvalue returned to user in one-time URL
kvalue removed from URLkvalue split into two parts: ID and AES key- IV, bcrypt hash, ciphertext looked up in DB with ID from 
k kbcrypt hash compared against bcrypt hash from DB (prevents tampering of URL)- Ciphertext decrypted with static AES key and IV
 - Ciphertext decrypted with AES key from 
kand IV - Entry deleted from DB
 - Decrypted text sent to user
 
enabled: Turn on/off auto-pruning of old secrets from the database upon page loadmin_days/max_days: When a secret is submitted, a random date/time is generated betweenmin_daysandmax_daysin the future. After that date/time has elapsed, the secret will be pruned from the database ifenabledis set totrue. This is to prevent your database from being filled with secrets that are never retrieved. NOTE: Even ifenabledis set tofalse, the prune value will still be generated and stored in the database, but secrets will not be pruned unlessenabledis switched totrue.
PayPal: https://paypal.me/AndrewPaglusch
BitCoin: 1EYDa33S14ejuQGMhSjtBUmBHTBB8mbTRs
Donations are not expected, but they are very appreciated!
