Requirements

On this page, you will learn about:

  1. The quality requirements and constraints that govern the design of the Keychain system.

Quality Requirements and Goals

Requirement Name Description

R1. Self-sovereign Key Management

Private keys must be managed by the Keychain client and stored on the local device(s).

R2. Data-centric Security

Data should be encrypted and digitally signed in a way that the security guarantees hold regardless of where the data is stored or transmitted.

R3. Automated Key Rollover

The system should allow users to change their application-level keys with turn-key simplicity and automatically communicate the respective public key changes to all relevant counter parties.

R4. Historical Digital Signature Attribution

If a party can attribute and verify a digital signature on certain at a point in time, then the party should continue to perform the same verification for as long as the party has access to the data and the blockchain, even if the period is several decades.

R5. Application-level Consensus

The system must implement application-level Byzantine agreement on the receipt of application data and documents.

R6. Data Backwards Compatibility

All Keychain gateways must be backwards compatible with Keychain generated cipher texts regardless of when, when, or by which gateway the cipher text was produced.

R7. Client Interoperability

System components must inter operate fully with other clients within the same build regardless of the target platform architecture / environment (Windows, Linux, Android, 32-bit/64-bit, etc).

R8. Device Native Support

The Keychain client should run natively from machine instruction set code where possible.

R9. Support for Wide Range of Device Sizes

The Keychain clients must support and effective use resources on a wide range of device hardware, including small, Internet connected ones

R10. Multi-platform Support

The Keychain client must support the major environments (operating systems, 32 and 64 bit, machine architectures and instruction sets).

R11. Integration Readiness

The Keychain client should readily allow deployment into and integration with common corporate networks and allow network teams to continue to follow best practices. For example, network connections should be outbound only for devices that are inside the corporate network, avoiding the need to open inbound network firewall ports. Software servers should operate in network demilitarized zones.

R12. Compatibility with Existing Applications

The full functionality of the Keychain system should be usable within the architectural constraints of existing applications without requiring the users to migrate data and applications onto new architectures.

R13. Idiomatic Application Programming Interfaces

Each Keychain Core SDK interface should be idiomatic of the programming language for which it is written and exhibit best practices for that language.

R14. Obsolescence

Users should have a relatively cheap way to migrate their application to another platform or blockchain. Vendor lock-in should be minimized where possible. The user should be able to migrate data to new formats and migrate certificates to other blockchains or stores.

R15. Scale

The system should support public-key-infrastructure functions for at least single-digit billions of client devices where operation latencies are defined by quality-of-service tiers with reasonable costs.

R16. Privacy

The system should avoid publicly disclosing the relationship between a blockchain certificate and the user.