Working on a new file system and looking for early feedback.
The new file system wraps around an existing file system and supports encoding chaining. What does this (encoding) mean? We can have one or zero compresison encoding and multiple encryption encodings. For instance, encoding a file could pass it through the following encodings: zstd -> aes -> twofish. The content is compressed first using zstd, then encrypted using two encryption algorithms - aes and twofish.
The new file system wraps around an existing file system by adding a header to all files. The header contains all information needed to decode the file content (not the name), except secrets/passwords.
The above mentioned branch implements:
- File header (protobuf) support to store the encoding chain
- zstd for transparent compression (the only supported encoding now)
The next steps are:
- Add encryption chaining
- Add a config to support all options
- Add file name encryption - planning to re-use crypt's approach
- Add zlib (gzip) compression
- Add metadata to support extended attributes. This will make the new fs work best on top of providers allowing extended attributes.
Let me know what you think.