Encrypted data rooms in DRACOON work very similarly to unencrypted ones. The only difference is that all contained files must be encrypted by the clients before uploading them. To ensure the functionality, all FileKey management needs to be done properly.
Client-side encryption: Overview
Before uploading a file to an encrypted data room, it needs to be encrypted by the client with an appropriate crypto mechanism. We version the different applied crypto algorithms to be able to update them over time whenever necessary.
The currently used crypto versions are:
- FileKey algorithms:
- A (discouraged)
- KeyPair algorithms:
- A (discouraged)
DRACOON uses a hybrid cryptosystem, i.e. combining public-key cryptography with symmetric cryptography.
Each file needs to be encrypted before being uploaded. To do so, a new random key (the FileKey) is created by the client application and used to encrypt the file with a supported crypto algorithm (i.e. AES-256-GCM).
After encrypting the file with the FileKey, the latter itself must be encrypted before being transmitted to the DRACOON server. To do so, the client downloads the current user's asymmetric key pair (e.g. RSA-4096) and encrypts the FileKey with the user's public key. The newly generated UserFileKey for the current user can then be transmitted together with the encrypted file to the DRACOON server.
After uploading a file together with the current user's UserFileKey, the file is available on the DRACOON server. However, it is inaccessible to all other users since they cannot decrypt the UserFileKey (which is only encrypted for the current user and can only be decrypted with his/her corresponding private key). Therefore, a distribution of UserFileKeys is necessary.
To do so, the client can request the public keys of all authorized users for the newly uploaded file and encrypt the FileKey with them as well. This process grants access to all other users and creates rescue keys.
A user may download any file from an encrypted data room that he/she can access, which means that a UserFileKey is available for this file for the current user. If that is the case, the user can download the encrypted file, the encrypted UserFileKey, and the own asymmetric key pair.
The private key from the key pair is used to decrypt the FileKey from the encrypted UserFileKey, which is then used to decrypt the actual file. Once again, a combination of symmetric and asymmetric cryptography is applied.
Implementing client-side cryptography
If you want to go into further detail and implement the crypto application yourself, please have a look at the more detailed technical documentation of DRACOON's client-side encryption.