Skip to content

Commit a30461f

Browse files
authoredApr 15, 2024
Merge pull request #186 from mnm678/tap20-acceptance
Tap 20 Acceptance
2 parents 683cc5d + e3e4a8d commit a30461f

File tree

2 files changed

+28
-17
lines changed

2 files changed

+28
-17
lines changed
 

‎README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
* [TAP 11: Using POUFs for Interoperability](tap11.md)
1414
* [TAP 12: Improving keyid flexibility](tap12.md)
1515
* [TAP 15: Succinct hashed bin delegations](tap15.md)
16+
* [TAP 20: Self-revocation](tap20.md)
1617

1718
## Draft
1819

@@ -21,7 +22,6 @@
2122
* [TAP 17: Remove Signature Wrapper from the TUF Specification](tap17.md)
2223
* [TAP 18: Ephemeral identity verification using sigstore's Fulcio for TUF developer key management](tap18.md)
2324
* [TAP 19: Content Addressable Systems and TUF](tap19.md)
24-
* [TAP 20: Self-revocation](tap20.md)
2525

2626
## Deferred
2727

‎tap20.md

+27-16
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
* Version: 1
44
* Last-Modified: 29-Jan-2024
55
* Author: Marina Moore
6-
* Status: Draft
6+
* Status: Accepted
77
* Content-Type: text/markdown
88
* Created: 19-Jan-2024
99

@@ -39,7 +39,7 @@ still the source of trust, but allows the role to act independently.
3939

4040
# Motivation
4141

42-
Several use cases can benefit from an independent revocation mechanism:
42+
The following use case can benefit from an independent revocation mechanism:
4343

4444

4545
## Community repositories
@@ -77,30 +77,34 @@ from that proposal to support key revocation.
7777
## Rotate file (from TAP 8)
7878

7979
The signed portion of a `rotate` file is as follows (there's also a
80-
signatures wrapper as in tuf spec, not shown here):
80+
signatures wrapper as in the TUF specification, not shown here):
8181

8282
```python
8383
{
84-
"_type" : "rotate" ,
85-
"previous" : PREV_FILENAME
84+
"_type" : "rotate",
85+
"version" : VERSION,
8686
"role" : ROLE,
8787
"keys" : {
8888
KEYID : KEY
8989
, ... } ,
90-
"threshold" : THRESHOLD }
90+
"threshold" : THRESHOLD
9191
}
9292
```
9393

9494
Where ROLE, KEYID, KEY, and THRESHOLD are as defined in the original
95-
tuf spec. The value of ROLE has to be the same as the role for the
96-
delegation. The value of THRESHOLD is its new value. PREV_FILENAME is
97-
the name of the previous rotate file in the chain, or the empty string if this is
98-
the first rotate file for this role. The keys specify the new valid keys
95+
TUF specification. The value of ROLE has to be the same as the role for the
96+
delegation. The value of THRESHOLD is its new value. VERSION is the index of
97+
this rotate file, incrementing by 1 on each rotation. The keys specify the new
98+
valid keys
9999
and associated key ids (which may be a subset or superset of
100100
the old ones). A rotate file does _not_ contain an expiration date,
101101
it is meant to be signed once and never modified. The rotate
102102
file has to be signed with an old threshold of old keys.
103103

104+
This rotate file will be named `ROLE.rotate.VERSION` where ROLE and VERSION are
105+
defined as above and go into a 'rotate' folder on the repository that
106+
contains all rotate files for the repository.
107+
104108

105109
## Rotation to Null
106110

@@ -125,23 +129,30 @@ where NULL is the null key.
125129

126130
### Prioritizing Self Revocation
127131

128-
Rotation files are immutable unless replaced with a revocation (rotate
129-
to null). This is the only case in which they can be replaced or
130-
modified. If a client wants to rotate to a different
132+
Rotation files are immutable unless replaced with a revocation.
133+
This is the only case in which they can be replaced or
134+
modified. If a key holder wants to rotate to a different
131135
key, without having access to their currently delegated private key,
132136
this requires a key revocation by the delegating metadata.
133137

138+
## Client workflow
139+
140+
Rotate files will be downloaded by clients as described in TAP 8. Once a
141+
rotate file is downloaded and verified, the client will check for a rotation
142+
to null. If such a rotation to null is found, the client will treat the given
143+
role as revoked.
134144

135145
# Security Analysis
136146

137147
There should be no negative security impact. The major benefits are
138148
that many security-sensitive revocations that require key use by
139149
multiple parties, will now be much easier to do.
140150

141-
Clients need to take care to check for rotation to a null key (rotate
151+
Clients need to take care to check for revocation (rotate
142152
files that contain a null key). This shall be handled in the
143153
same manner as an invalid metadata signature on by the role possessing
144-
the key. The role will be invalid until it is re-delegated to with a new key.
154+
the key. The role will be invalid until it is re-delegated to with a new
155+
rolename and key.
145156
Clients MUST use snapshot metadata to ensure that they receive all rotate files
146157
in the chain.
147158

@@ -162,7 +173,7 @@ verify the revocations.
162173

163174
# Augmented Reference Implementation
164175

165-
TODO
176+
https://github.com/theupdateframework/python-tuf/pull/2257/files
166177

167178
# Copyright
168179

0 commit comments

Comments
 (0)