Skip to main content

SharedVault is a small application that allows you to define a secret that will require multiple people to unlock.

Project description

SharedVault

SharedVault is a small application that allows you to define a secret that will require multiple people to unlock.

How does it work ?

At the core, SharedVault uses Shamir's Secret Sharing algorythm (some code is directly copied from the wikipedia page). This allows us to define a key(M, N) and N parts where the key can be recovered from M parts. On top of that we add a layer where each user has a public/private key that encrypts the shares they hold. This allows the following features:

  • A user change chose and change their password.
  • A user has a single password to remember (instead of one per share).
  • We can grant users access without having to communicate the share over untrusted network.

Security consideration

Private keys

Private keys are stored in the main database and encrypted with the user's password. A weak/leaked password will compromise the private key and therefore all the shares it can decrypt.

Secret encryption

The secret itself is encrypted using the Fernet algorythm. The key is derived with Scrypt from the secret number generated by Shamir's Secret Sharing algorythm. Note that I have no idea what I am doing so it is likely that there is a flaw related to the scrypt configuration that could compromise a secret's safety.

Revoking access

Everytime a secret is updated we generate a brand new set of keys for the new encryption. This allows us to deny future access to a user that has their key removed from the secret.

How to use it ?

I will add more ways to use this tool but right now there is a cli that you can run with:

$ pipenv run python -m cli --db=$DB_CONN_STR --help

Depending on the type of database you use, you might need additional dependencies. You can read more about the connection string format, available backends and additional dependencies at https://docs.sqlalchemy.org/en/13/core/engines.html.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sharedvault-1.0.tar.gz (2.4 kB view details)

Uploaded Source

Built Distribution

sharedvault-1.0-py3-none-any.whl (2.1 kB view details)

Uploaded Python 3

File details

Details for the file sharedvault-1.0.tar.gz.

File metadata

  • Download URL: sharedvault-1.0.tar.gz
  • Upload date:
  • Size: 2.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/42.0.2 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.8.0

File hashes

Hashes for sharedvault-1.0.tar.gz
Algorithm Hash digest
SHA256 f859139a3053c885fb4a3b6e4569ec47bf0fb345a77aede3b92535f435537a33
MD5 0ee649cd271dd11cc61432a7c295b406
BLAKE2b-256 71f058807d99366ec979fe07e6f4c0fd378a2ccf205f41dc1fcb72e9ea8b7488

See more details on using hashes here.

File details

Details for the file sharedvault-1.0-py3-none-any.whl.

File metadata

  • Download URL: sharedvault-1.0-py3-none-any.whl
  • Upload date:
  • Size: 2.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/42.0.2 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.8.0

File hashes

Hashes for sharedvault-1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 17bf906edc930c077700a458868dd0580951ccfd2823d082f4bdd15016a743db
MD5 9395fa2586c814eb1ecaf2a391d49557
BLAKE2b-256 04ff1a13a553c937c2096fd481eea092392c5e3fe066b34b7620377b5000c8ac

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page