[][src]Crate helvetia

Helvetia

Helvetia is a service that allows anonymous storage of secrets, with a simple rule; any user can create a secret using a token, and they can only access it using the same token. Helvetia will then go to great lengths to ensure that the secret remains safe, even from itself.

Architecture

Helvetia can be roughly separated in the following layers, from top to bottom:

API

Helvetia exposes a REST API for basic CRUD operations:

  • Create or replace a secret.
  • Read a secret's (meta)data.
  • Delete a secret.

You can find more details about the supported API calls in the api module.

Authorization

Operations on a secret follow a simple logic; if the secret does not exist, anyone can create it. If it does, only those with a token can view/edit it. Optionally, during secret creation, users can specify a separate token that can be used only for accessing the metadata of the secret.

The implementation of this logic can be found in the vault module.

Persistence

The secrets are stored in a key-value stored provided by the caves crate. This gives us the option to store them in-memory, in a filesystem or in a RocksDB database, using the same interface.

Modules

api

Helvetia API

ct

Constant-time operations

hkdf

HKDF helpers

hmac

HMAC helpers

proto

Protobuf-generated code

res

Results and errors

secret

Secrets

vault

Vault