Built for CSU34031 Advanced Telecommunications
Encrypt your files on Google Drive and share them securely!
Securing the Cloud is a secure cloud storage application which secures files stored on Google Drive. Users can log in with their Google Account. Upon login, a folder named SECURE will be created in the user's root folder of Google Drive. When a user creates a group, a folder will be in the user's SECURE folder. The user can add & remove users from these groups. Files can be uploaded and downloaded to the group. All the files are encrypted when uploaded and decrypted when downloaded. If someone were to download the file from Google Drive, they would not be able to decrypt the file.
-
Install Node.js
-
Clone this repository
-
Rename
.env.example
to.env.local
and fill in the config- Get Google API token and App with scopes:
https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/drive
- Get Google API token and App with scopes:
-
Open up command prompt or teminal and navigate to the location of the cloned repository
-
Install the dependencies
npm install
-
Setup the database with Prisma
npx prisma generate; npx prisma migrate dev --preview-feature
-
Running the server locally
npm run dev
The server should now be hosted on http://localhost:3000
-
User account created
- Public and private Keys are created for the user.
- The user's private key is encrypted with AES with the user's account.
- The public & encrypted private user key are stored with the user's account.
- The SECURE folder is created on Google Drive and the ID of the folder is stored with the user.
-
Group created
- Public and private keys are created for the group.
- The group private key is encrypted with the owner's public key
- The group public key is stored with the group and the encrypted private key is stored with the user and links back to the group.
- The group folder is created in the owner's folder and the group folder ID is stored with the group.
-
User added to group
- The user decrypts their own private key with their session.
- The user decrypts the group private key with their decrypted private key.
- The group private key is encrypted with public key of the user that is being added.
- The group folder is shared with the user through Google Drive
-
User removed from group
- The user's connection to the group is removed and their encrypted access to the group private key is removed.
- The user is unshared from the Google Drive folder.
-
File Uploaded
- The file is encrypted with the group's public key on the upload.
- The file is uploaded to the group folder in Google Drive.
-
File Download
- The user decrypts their own private key with their session.
- The user decrypts the group private key with their decrypted private key.
- The decrypted group private key is then used decrypt the file.
- Decrypted file is then sent to the user.