MatrixAI / js-encryptedfs

Encrypted Filesystem for TypeScript/JavaScript Applications
https://polykey.com
Apache License 2.0
10 stars 3 forks source link

Confidentiality of filename and metadata #6

Closed MeanMangosteen closed 3 years ago

MeanMangosteen commented 5 years ago

The filename and a file's metadata (size, date modified, permission) should be encrypted. This is because these entities can leak information about the file, which is meant to be secret, even though the file content is encrypted.

I think to start with, just the filename can be encrypted, we can deal with encrypted metadata after.

Both CryFS and EncFS encrypt filenames, however, only CryFS encrypts metadata aswell. It needs to be revisited on how they accomplish this.

MeanMangosteen commented 5 years ago

VeraCrypt encrypts both filename and metadata too. https://github.com/veracrypt/VeraCrypt.

CMCDragonkai commented 5 years ago

We can revisit metadata encryption later. Hopefully no path dependency.

On 6 March 2019 14:49:52 GMT+11:00, ll-aashwin-ll notifications@github.com wrote:

The filename and a file's metadata (size, date modified, permission) should be encrypted. This is because these entities can leak information about the file, which is meant to be secret, even though the file content is encrypted.

I think to start with, just the filename can be encrypted, we can deal with encrypted metadata after.

Both CryFS and EncFS encrypt filenames, however, only CryFS encrypts metadata aswell. It needs to be revisited on how they accomplish this.

-- You are receiving this because you are subscribed to this thread. Reply to this email directly or view it on GitHub: https://github.com/MatrixAI/js-encryptedfs/issues/6

-- Sent from my Android device with K-9 Mail. Please excuse my brevity.

CMCDragonkai commented 5 years ago

This is addressed in #8? If so, we can close this.

robert-cronin commented 4 years ago

One way to implement encrypted file structure would be to encrypt the directory and file names in the lowerfs so that at each level in the heirachy, EFS will have to decrypt in order to continue its traversal. This would mean O(n) on every directory traversal.

Another way would be to store the entire directory listing as a unit of plaintext that gets decrypted into ciphertext. This requires the directory listing to be consistent. This comes with some possible errors, e.g. it will fail if the underlying folder structure changes.

robert-cronin commented 3 years ago

Closing on account of migration to gitlab