Skip to content

Commit c0d39aa

Browse files
authored
Merge pull request #46 from MarkLodato/paseto
Clarify comments regarding PASETO and PAE.
2 parents 3113b94 + ba9f3a5 commit c0d39aa

File tree

1 file changed

+17
-5
lines changed

1 file changed

+17
-5
lines changed

background.md

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,9 @@ There is no other simple, foolproof signature scheme that we are aware of.
2727
CA for `x5c`. It also requires a JSON library even if the payload is not
2828
JSON, though this is a minor issue.
2929

30-
* [PASETO] is JSON-specific and too opinionated. For example, it mandates
31-
ed25519 signatures, which may not be useful in all cases.
30+
* [PASETO] is too opinionated to be used in all cases. For example, it
31+
mandates ed25519 signatures, which [Google Cloud KMS] does not support.
32+
PASETO also requires JSON payloads, which may not be desirable in all cases.
3233

3334
The intent of this project is to define a minimal signature scheme that avoids
3435
these issues.
@@ -118,11 +119,20 @@ Rationales for specific decisions:
118119

119120
- See [Motivation](#motivation).
120121

121-
- Why use PAE?
122+
- Why use a pre-authentication encoding (PAE)?
122123

123124
- Because we need an unambiguous way of serializing two fields,
124-
payloadType and payload. PAE is already documented and good enough. No
125-
need to reinvent the wheel.
125+
payloadType and payload. PASETO already solved this problem by
126+
developing its PAE, which is where we got the idea and the name.
127+
[ed25519ctx] uses the same idea, though it was developed independently.
128+
129+
- Why not use PASETO's PAE?
130+
131+
- Originally we did, but the minor difficulty of working with binary
132+
encoding led us to develop a simpler ASCII-based PAE. While we were at
133+
it, we switched to using a fixed number of inputs and added a version
134+
string ("DSSEv1") to allow for future changes.
135+
([more info](https://github.com/secure-systems-lab/dsse/issues/27))
126136

127137
- Why not stay backwards compatible by requiring the payload to always be JSON
128138
with a "_type" field? Then if you want a non-JSON payload, you could simply
@@ -155,6 +165,8 @@ and new envelope format by detecting the presence of the `payload` field (new
155165
format) vs `signed` field (old format).
156166

157167
[Canonical JSON]: http://wiki.laptop.org/go/Canonical_JSON
168+
[ed25519ctx]: https://www.cryptologie.net/article/497/eddsa-ed25519-ed25519-ietf-ed25519ph-ed25519ctx-hasheddsa-pureeddsa-wtf/
169+
[Google Cloud KMS]: https://cloud.google.com/security-key-management
158170
[in-toto]: https://in-toto.io
159171
[JWS]: https://tools.ietf.org/html/rfc7515
160172
[PASETO]: https://github.com/paragonie/paseto/blob/master/docs/01-Protocol-Versions/Version2.md#sig

0 commit comments

Comments
 (0)