DSSE: Dead Simple Signing Envelope
Simple, foolproof standard for signing arbitrary data.
Features
- Supports arbitrary message encodings, not just JSON.
- Authenticates the message and the type to avoid confusion attacks.
- Avoids canonicalization to reduce attack surface.
- Allows any desired crypto primitives or libraries.
See Background for more information, including design
considerations and rationale.
What is it?
Specifications for:
Out of scope (for now at least):
Why not...?
- Why not raw signatures? Too fragile.
- Why not JWS? Too many insecure
implementations and features.
- Why not PASETO? JSON-specific, too opinionated.
- Why not the legacy TUF/in-toto signature scheme? JSON-specific, relies on
canonicalization.
See Background for further motivation.
Who uses it?
How can we use it?
Versioning
The DSSE specification follows semantic versioning, and is released using Git
tags. The master
branch points to the latest release. Changes to the
specification are submitted against the devel
branch, and are merged into
master
when they are ready to be released.