Lock Keeper should provide a general-purpose, human-centric system that stores and retrieves secrets on a single server.
- Assumptions and Requirements
- System Architecture
- Workflows
- Cryptographic Protocol and Implementation Dependencies
- The primary stakeholder is a human with secrets. We call this human an asset owner.
- All workflows MUST be initiated from a local device owned and operated by a human, namely the asset owner.
- There is only one key server. This key server is either run on external cloud infrastructure or hosted locally by a service provider.
See the Systems Architecture page for details.
There are two basic components: a client (which runs on an asset owner device and initiates all workflows) and a key server (which provides the storage and retrieval of arbitrary secrets). These components communicate over secure channels at all times.
We provide sketches of the basic generation, storage, and use of arbitrary secrets below. These flows are initiated by the asset owner.
See the Networking subsection on the Systems Architecture page for details.
- The asset owner may register with the key server via an asymmetric password-authenticated key exchange protocol.
- Registration MUST occur via a channel that satisfies authentication of the server, confidentiality, and integrity.
- The asset owner may open an authenticated session with the key server via an asymmetric password-authenticated key exchange protocol.
- Once established, the asset owner can make operation requests on secrets to the key server.
- The session MUST provide a secure channel that satisfies mutual authentication, confidentiality, and integrity.
- The asset owner may close a session that the asset owner previously established with the key server.
See the Operations on Arbitrary Secrets page for details.
- The asset owner can generate secrets. Generation of secrets may be local or remote:
- The asset owner can generate a secret locally, i.e, using the client.
- This secret MUST be randomly generated according to the uniform distribution.
- This secret should default to 256-bits.
- The asset owner can request the key server to generate a secret remotely.
- This secret MUST be randomly generated according to the uniform distribution.
- This secret should default to 256-bits.
- The asset owner can generate a secret locally, i.e, using the client.
- The asset owner can store a secret.
- If the secret is generated locally, then the secret is by default stored both locally and at the key server.
- If the secret is generated remotely, then the secret is by default stored only at the key server.
- Storage on a key server MUST occur via a mutually authenticated channel that satisfies confidentiality and integrity.
- Local storage on the user's device should be secure.
- An additional functionality that allows the user to store secrets on the remote key server only WILL be added in the future.
- An additional functionality that allows the user to store secrets on the local device only may be added in the future.
- The asset owner can retrieve a secret from the key server.
- Retrieval from a key server MUST occur via a mutually authenticated channel that satisfies confidentiality and integrity.
- The key retrieved MUST be a key associated to the authenticated user.
- A retrieved secret can be:
- Stored locally in secure storage on the user's device.
- Copied to the system clipboard.
- The asset owner may import a secret to the system in an appropriate format.
- The default expected format is as bytes of the form
len || secret
, wherelen
is 1 byte that represents the length of the secretsecret
in bytes. - The implementation may define other acceptable import formats.
- Any communication with the key server that occurs in serving an import request MUST occur via a mutually authenticated channel that satisfies confidentiality and integrity.
- The default expected format is as bytes of the form
- The asset owner may export the secret from the system. The export format for the key SHOULD allow for easy transfer of the key material to another digital asset management system, i.e., secrets should be portable.
- The default expected format is as bytes of the form
len || secret
, wherelen
is 1 byte that represents the length of the secretsecret
in bytes. - The implementation may define other acceptable export formats.
- Any communication with the key server that occurs in serving an export request MUST occur via a mutually authenticated channel that satisfies confidentiality and integrity.
- The default expected format is as bytes of the form
- The asset owner may audit the operations performed by the key server on a given secret. This allows the asset owner to retrieve a log of operations from the key server.
- Audit log retrieval MUST occur via a mutually authenticated channel that satisfies confidentiality and integrity.
- Audit logs should be portable, i.e., easily exportable from the system.
- Non-normative note: Given the above properties, we do not achieve integrity of the audit logs in the presence of a cheating key server. Future work may address this concern.