Chamber. Interesting name. But what does it do? And why make it? I intend to answer those two questions below.

What is Chamber?

…and what’s with the name, huh?

Chamber is a software to lock files. Or if I word it properly, it is rather a method to keep files locked away. Why that name? Because I like Harry Potter, and when I think of secrets, the term “Chamber of Secrets” comes quite naturally to me. Hence the name.

Assumption

When I talk about “vault” below for existing solutions, I am talking about a “file” which can be used as a “container” to keep your files secret/encrypted/password-protected. This “vault” can mean an encrypted DMG on macOS, LUKS encrypted file system contained in a file, or a “file container” method used with VeraCrypt.

I will talk about these methods shortly.

But are there not solutions that already do that?

Of course there are. There are all kinds of solutions for almost all platforms. You have native solutions, like:

  1. BitLocker - for windows.
  2. LUKS - for Linux.
  3. Encrypted DMG files - for macOS.

But, each one of those are completely non-cross-platform. You can’t open a Bitlocker encrypted drive on Linux or Mac. You can’t work with LUKS encrypted volume with Mac or Windows and there is no way to open an Encrypted DMG on Linux or Windows.

Then there are solutions that are paid, platform-specific and not-so-famous. There are some software applications which can work on 2 of those platforms (usually mac and Windows) which are either costly, or have very few reviews available, or don’t look very promising. Of course, I did not try any of those.

Then there are sophisticated tools that might require you to keep track of encryption and decryption keys (looking at you, openssl and gpg). Some of them might even need you to lower the security settings of your OS (gocryptfs) and might pose other risks.

The case of 1-1 encryption mechanisms

I don’t like 1-1 file encryption solutions like openssl and gpg. You need to set them up with your own tools and plumbing to make them usable to a degree when you can say “I can now easily work with the files”. In case of gocryptfs, it is exceptionally easy to just delete an encrypted file or to delete the main config file and that would be enough to cause a havoc. I have lost a few files in the past because they failed to sync. I was an idiot who did that with a nodejs project that I downloaded and got the node_modules populated and then I used gocryptfs on it and then I put that on a cloud. The sync got into some issues with that many files and later I had to redo everything; thankfully, it wasn’t something critical.

The existing plausible solution

If you are here then you have more or less just one solution left which checks all the existing boxes - VeraCrypt. If you are okay with that software (and I must say it is a great one), then maybe Chamber is not something you would be interested in.

Yes, VeraCrypt is quite good and yet, to choose which type to download is not always easy (please do not download the version that requires macFUSE on macOS). The vault creation wizard is laden with too many options. Although I consider myself fairly knowledgeable, I find VeraCrypt intimidating. In my view, from a normal user’s perspective, VeraCrypt is:

  • difficult to setup - you might need to install a dependency (Fuse-T on macOS) which is not open source, then you have to install VeraCrypt and then you can start using it.
  • requires a good understanding of cryptography and file systems - if you create a vault file with APFS as the file system on macOS and later want to use that file on a Windows system, you would be in a trouble. Also, file container creation wizard is full of options that can easily confuse a non-technical user.
  • requires you to think ahead in time - if you create a volume which is of 5 GB in size, you can’t now put in a 8GB file into it, you WILL have to create a new vault file. There is no way to expand an existing one.

While I do adjust with all that, there is one behavior that I am 100% NOT OK with (I am a cynic and a paranoid person for certain things) and that is one of the biggest issues that I have with all software in this category.

The REQUIREMENT to ‘mount’

Nearly none of the software mentioned above (including VeraCrypt) will work without you first mounting the secret container. There are 2 problems I have with that approach. Below I list those with a little bit of explanation; and I am going to imagine a vault file created using VeraCrypt because VeraCrypt is the best of the existing solutions:

  1. You cannot use that file as a standard user! Imagine this - you have a vault file which you kept on a Cloud Storage. You now need to access this thing on someone else’s computer where you are not an admin (a rented computer, a friend’s machine etc.). You can download it from the cloud storage but you can’t use that vault file without first installing and mounting it - which requires admin privileges. I faced this problem and I did not like that!
  2. Presence of a malicious actor or a supervising observer. If there is some kind of automated program (assume a virus/worm) on the computer where you mounted the volume, or if you install it on a server where the server itself is controlled and monitored by a third party (such as a VPS provider), then all your secrets are exposed to it just as much as anything else! This is because once you have mounted a vault, the files in their decrypted state are already visible.

While mounting is great because it lets you interact with your files as if they are normally available (this is the easiest thing that can happen), the requirement to mount it like regular set of files can be problematic in certain situations.

Now, since I am dreaming of a perfect solution, let me tell other problems I have faced with existing approaches.

Other Problems

While VeraCrypt can encrypt an entire disk, I am talking about using a “file container” (where the secret files are contained within a file). I have faced these issues when using an “Encrypted DMG” on macOS as well.

  1. Splitting a file: Normally, you cannot split a vault file. Without that you have a problem if that vault file is bigger than 4 GB. The problem is - You cannot transfer this file out of your system into another using a portable drive which has an appropriate file system (must not be FAT32 formatted) and must have enough storage space to contain that entire file at once. This is sometimes a problem. I have faced this when I had a 20 GB encrypted DMG that I wanted to store on another system before an OS upgrade but the only external drive I had was a 16 GB USB which was my Linux installation disk (and it did not have enough space, obviously).
  2. (and thus,) syncing a large vault file: If you create a 20 GB vault file and keep it backed up on a cloud storage provider system (such as Google Drive, Dropbox, OneDrive etc.) then any change to your secret files will change the parent vault file and that can easily trigger a 20 GB upload. Every single time you make a change, the sync system of your cloud provider will try uploading the updated file. If you are not conscious enough to disable/re-enable syncing, it can be source of bandwidth drain. If you are on a metered connection, it can be really problematic for you.
  3. Hosting: I can’t keep my VeraCrypt drive on my server and access its contents easily enough while also making sure that the VPS service provider itself is not reading from the vault file (since it is mounted, that would be really easy). Now, I do not claim that VPS/Hosting providers do that but I don’t trust anyone completely either. In addition, no vault software providers a built-in web interface to host my secrets reliably enough for me to access the contents remotely. Setting up a NFS, FTP, SFTP or SMB share can be very challenging.
  4. Mobile App: A very large number of people have a mobile as the only computing device that they use. Even for someone with multiple devices, it is not uncommon to find oneself in a situation where all they have is a mobile phone as a computing device. None of the above mentioned solutions have an accompanying mobile app that can open a vault and let a user see the contents. This is something I would very much want and love to have.

So what is the utopian dream for a vault software that I want to achieve with Chamber?

The feature-set of Chamber

In an ideal, utopian world, I would like to have a software (which I want to create and name it as Chamber) which has the following properties:

  1. Easy to use: I don’t want to manage encryption keys. I want to set a long password, with a hint and not have to carry my encryption keys around. It should be installable easily and the user should not have to take multiple complicated steps to get it working.
  2. Cross Platform: I use macOS regularly, use Linux quite often and sometimes also need to work on Windows. I need the software to work on all the platforms.
  3. Can Mount: Creating a mount point using a vault software, backed by a encrypted vault file ensures that the decrypted content is never stored on the disk. It also provides for unprecedented ease of use (can’t get any easier). Mounting must be possible in a trusted environment.
  4. Mounting not Required: Mounting requires admin privileges. That is not something that I can always have. In a moment of need (and desperation), I should be able to access the files without having the need to mount. It should work without having to mount the vault.
  5. Auto-Resizable: Sometimes, it is difficult to predict the size requirement for a vault. One can think that he would need 2 GB of space but with time might start needing to store 5 or maybe 50 GB of data. The vault should auto-adjust according to what is stored. Also, if I create a 20 GB vault file but I store only 1 GB of data in it, I am wasting the other 19 GB of space for no benefit.
  6. Splittable and Joinable: In a world where a single file can be triple-digit of GBs and can’t be uploaded to any and every cloud provider or external disk, being able to split a vault file (say, in chunks of 2 GB) can be invaluable. As more data is added to the vault, more split files (each less that 2 GB in this example) should appear on the host machine. However, if need be, I should be able to join them all into one without me needing to work hard on it.
  7. Takes care of file system: An average user does not even know what a file system is, much less the nuances of each one. The vault software should take care of that for the user.
  8. Hostable: The software should allow access to the files remotely over a web interface in a way that disallows anyone, including the controller/owner of that machine from accessing the secret files without the vault password.
  9. Mobile accessible: I should be able to use my vault on a mobile phone as well! Sometimes, it is the ONLY device I have.
  10. Supports Automation as well as GUI: I should be able to automate certain actions. For example, I might want to write a script to download the latest data dump from my finance software and store it in a vault without having to do that manually. That requires a reliable CLI interface. But normally, I should be able to see the files in a GUI window too (with or without mounting the vault).
  11. Supports Change: If the vault software upgrades and includes a new encryption mechanism, or regeneration of encryption keys, the vault file format then the software should allow such change without the user needing to create a new vault and copy over everything manually.
  12. Fault tolerance and Verification: The software should never allow the underlying vault data to enter a corrupt state as long as the underlying system (hardware and the host OS) is not at fault. If one needs to choose between fast or reliable, the software must stay reliable. This should be true even for long running processes such as password/key change, copying very large number of files into the vault, copying or moving very large number of files inside the vault itself etc. The software must also provide cryptographically verifiable hashes of both plaintext and encrypted version of files stored. This can be very useful in automation as well as for technical users storing sensitive data in the vault.
  13. Work with minimum resources: It is easy to create a software on a MacBook with a fast processor. But I also have a 15 year old dual core machine and a Raspberry Pi which are not so powerful. This software should be able to run with minimum memory requirements irrespective of the file sizes it is dealing with.

Yes, that is a bar too high. The list of challenges is exceptional here. But I do believe it is doable.