Skip to content

Commit a4e3d07

Browse files
committed
Add draft of TAP-17
Signed-off-by: Aditya Sirish <[email protected]>
1 parent 49dcf1d commit a4e3d07

File tree

2 files changed

+95
-0
lines changed

2 files changed

+95
-0
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
* [TAP 14: Managing TUF Versions](tap14.md)
1919
* [TAP 15: Succinct hashed bin delegations](tap15.md)
2020
* [TAP 16: Snapshot Merkle Trees](tap16.md)
21+
* [TAP 17: Replace signature envelope with SSL signing-spec](tap17.md)
2122

2223
## Rejected
2324

tap17.md

Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
* TAP: 17
2+
* Title: Remove Signature Wrapper from the TUF Specification
3+
* Version: 0
4+
* Last-Modified: 22/06/2021
5+
* Author: Aditya Sirish A Yelgundhalli, Marina Moore
6+
* Type: Standardization
7+
* Status: Draft
8+
* Content-Type: markdown
9+
* Created: 30/04/2021
10+
* +TUF-Version:
11+
* +Post-History:
12+
13+
# Abstract
14+
15+
This TUF Augmentation Proposal (TAP) proposes removing the definition of a
16+
specific signature wrapper and key definitions, and instead defines certain
17+
properties a wrapper must have. Further, it suggests POUF-1 as an example
18+
implementors can refer to when choosing to generate TUF metadata.
19+
20+
# Specification
21+
22+
The TUF specification currently, as of June 2021, uses a custom signature
23+
wrapper. At the time of authoring this document, the primary reference
24+
implementation written in Python also generates TUF metadata using the same
25+
signature wrapper.
26+
27+
However, TUF does not mandate the use of this signature wrapper, nor any
28+
specific metaformat. Indeed, TAP-11, "Using POUFs for Interoperability" enables
29+
adopters to make their own decisions for their implementations, and provides a
30+
mechanism for them to document their decisions. POUF-1 is the POUF for the
31+
official reference implementation, and it seems like the obvious choice for this
32+
information to be specified.
33+
34+
Section 4.2 of the TUF specification, titled "File formats: general principles"
35+
may be replaced by a description of the properties that any signature wrapper used
36+
by a TUF implementation must provide. Some important properties:
37+
38+
* SHOULD include an authenticated payload type
39+
* SHOULD avoid depending on canonicalization for security
40+
* SHOULD NOT require the verifier to parse the payload before verifying
41+
* SHOULD NOT require the inclusion of signing key algorithms in the signature
42+
* MUST support the inclusion of multiple signatures in a file
43+
* SHOULD support a hint indicating what signing key was used, i.e., a KEYID
44+
45+
The presence of an authenticated payload type can be valuable for a project like TUF,
46+
with multiple implementations and derivatives. Indeed, every POUF that describes an
47+
implementation MUST choose a unique payload type, ensuring that there is no confusion
48+
about which implementation generated some piece of metadata.
49+
50+
# Motivation
51+
52+
TAP-11 introduced the concept of POUFs but the TUF specification continues to
53+
specify example formats, namely those used by the reference implementation as
54+
of June 2021. These definitions are essentially replicated in POUF-1, which is
55+
meant to be the authoritative source for information about the reference
56+
implementation. By replacing these definitions with *properties* that a wrapper
57+
must possess, the specification can aid adopters with the development of their
58+
implementations and the POUF can serve as an example. In this scenario, both
59+
documents are serving the purpose originally envisioned for them.
60+
61+
Further, the examples used in the specification are from the old signature
62+
wrapper that includes certain side effects:
63+
* it requires canonicalization before signature verification
64+
* it does not allow for distinguishing different implementations that may have slightly different formats, i.e., it's missing a payload type
65+
66+
# Rationale
67+
68+
Moving the signature wrapper details out of the specification, and instead
69+
requiring adopters to refer to POUFs for examples ensures a clean separation
70+
between implementation details and the TUF specification. Indeed, it also
71+
ensures that the focus of the reader is on only the TUF primitives rather
72+
than burdening them with the specifics of the signature wrapper.
73+
74+
# Security Analysis
75+
76+
Any implementations that build on the properties listed in this document
77+
will have their security enhanced.
78+
79+
# Backwards Compatibility
80+
81+
No backwards incompatibility.
82+
# Augmented Reference Implementation
83+
84+
See POUF-1 for details about the reference implementation.
85+
86+
# Copyright
87+
88+
This document has been placed in the public domain.
89+
90+
# References
91+
92+
* [TAP-11](https://github.com/theupdateframework/taps/blob/master/tap11.md)
93+
* [File formats in TUF Specification](https://theupdateframework.github.io/specification/latest/index.html#file-formats-general-principles)
94+
* [POUF-1](/POUFS/reference-POUF/pouf1.md)

0 commit comments

Comments
 (0)