CryptBoard: Secure File and Ciphertext Sharing Tool for Crypto Enthusiasts

For all the crypto-anarchists, here’s a free project you can host on your server, allowing you to do some ‘crazy things,’ as Elisabêth Borne would say. This tool is called CryptBoard and is essentially an encrypted clipboard for securely copying and pasting text and files, enabling sharing between different machines.

Designed for excellent anonymity, CryptBoard uses hybrid RSA + AES client-side encryption. The client makes an anonymous authorization request to the server, obtaining a random UID, and each message is then encrypted in AES with a random 256-bit key.

This random AES key is encrypted by the user’s public RSA key and sent to the server. Upon receiving the message, the recipient decrypts the AES key with their RSA private key and decodes the AES-encoded message.

Users need to share their UID and RSA public key via a link or QR code to read and write to each other, but the private key is not shared with the server or other clients. Additionally, the integrity of the public key and UID can be visually verified by inspecting the avatar generated from the hash of the public key and UID.

Though it might sound a bit complex, this method resolves certain problems associated with sharing files or text between machines and VMs, or machines controlled remotely, without compromising on security. As CryptBoard comes in the form of a website, there’s no need to install a tool to share secrets like passwords.

For those interested in encryption, click here. The code is available on Github, allowing you to audit or improve it.

To install it on your machine, you’ll need Docker. Follow these steps:

  1. Clone the code:
git clone
  1. Install Docker and Docker Compose, as well as Nginx.
  2. Create the config file:
cp web-app/.env.docker.example web-app/.env.docker
  1. Generate the necessary private and public keys:
ssh-keygen -t rsa -b 4096 -m PEM -f jwtRS256.key
# No passphrase
openssl rsa -in jwtRS256.key -pubout -outform PEM -out
  1. Add the contents of these files to the JWT_PUBLIC_KEY and JWT_PRIVATE_KEY variables in the .env.docker file:
LINE=$(cat ./web-app/jwtRS256.key | tr '\n' '$' | sed 's|\$|\\\\n|g;s|^|JWT_PRIVATE_KEY=|g'); sed -i "s|^JWT_PRIVATE_KEY.*|$LINE|g" -i ./web-app/.env.docker
LINE=$(cat ./web-app/ | tr '\n' '$' | sed 's|\$|\\\\n|g;s|^|JWT_PUBLIC_KEY=|g'); sed -i "s|^JWT_PUBLIC_KEY.*|$LINE|g" -i ./web-app/.env.docker
  1. Set the SERVER_HOST and SERVER_PORT variables in the .env.docker file, then create the Docker image:
  1. Launch Docker Compose:
./ up -d
  1. Check if everything works by going to the URL
  2. Configure Nginx as a reverse proxy for this local server and enable SSL if necessary using the conf/nginx/docker-proxy pass.conf file as a template for your Docker configuration.

Ensure you set the correct hostname, proxy_pass port, log file location, and LetsEncrypt key and certificate files.

And if you’re feeling lazy, the tool can still be used here.”

Mohamed SAKHRI
Mohamed SAKHRI

I'm the creator and editor-in-chief of Tech To Geek. Through this little blog, I share with you my passion for technology. I specialize in various operating systems such as Windows, Linux, macOS, and Android, focusing on providing practical and valuable guides.

Articles: 1310

Newsletter Updates

Enter your email address below and subscribe to our newsletter

Leave a Reply

Your email address will not be published. Required fields are marked *