MatrixAI / js-encryptedfs

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

Implementing a db key validity check on starting the encrypted fs #57

Closed scottmmorris closed 2 years ago

scottmmorris commented 2 years ago

Description

There needs to be a more explicit way of determining if the db key is valid for the encrypted fs. At the moment, the efs start up continues until it tries to decrypt existing state and cannot because the key is not valid.

To overcome this, a similar pattern to sentinel species will be used. On creation of the efs, we encrypt a known string into the db at the root level. Then on subsequent constructions, we access the string and if we cannot decrypt it then we know that the vault key is invalid and we therefore throw an error. If the string does not exist in the db then we start and put the known string in because we know its a new db.

Tasks

  1. [x] Implement the key validity checks
  2. [x] Add new testing for the key validity checks

Final checklist

CMCDragonkai commented 2 years ago

This is cool!

But we realised we should probably do this against the js-db instead so that everything benefits from this. In js-db it would have to create a "_meta" level just for this stuff though and safeguard so that users don't try to create a level like so.