An end-to-end encrypted file hosting service built with a React.js + TailwindCSS frontend, an Express.js backend, and Google Cloud Storage.
Frontend deployed with Netlify, backend hosted on Google Cloud Run.
Features:
Please note that this is just a personal project I developed for learning purposes, and should not be used for sensitive or production-grade data storage.
Files are encrypted and decrypted on the user's device, ensuring that data remains secure throughout the entire journey between the user and server. This project's implementation takes advantage of AES (Advanced Encryption Standard), a symmetric encryption algorithm.
A master key for encrypting/decrypting files is generated during the creation of a user account. To support a user logging in on multiple devices, the master key is encrypted using the user's password with a key derivation function (PBKDF2) and uploaded to the server. As such, the master key can only be decrypted by clients who have logged in. Even if server data is compromised, the master key cannot be decrypted because passwords are not directly stored on the server.