Skip to content

Commit 9b0ab8f

Browse files
committed
Remove delegated targets fast-forward check
This removes the fast-forward check for delegated targets, and adds an explanation of fast-forward attack recovery for delegated targets to the snapshot fast-forward check. Signed-off-by: Marina Moore <[email protected]>
1 parent 09250f8 commit 9b0ab8f

File tree

1 file changed

+15
-20
lines changed

1 file changed

+15
-20
lines changed

tuf-spec.md

Lines changed: 15 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1320,14 +1320,14 @@ it in the next step.
13201320

13211321
11. **Fast-forward attack recovery** A _fast-forward attack_ happens
13221322
when attackers arbitrarily increase the version numbers in any of the
1323-
timestamp, snapshot, targets, or delegated targets metadata. The attacker goal
1323+
timestamp, snapshot, targets, or delegated targets metadata. The attacker's goal
13241324
is to cause clients to refuse to update the metadata later because the attacker's
13251325
listed metadata version number (possibly MAX_INT) is greater than the new valid
1326-
version. To recover from
1327-
fast-forward attacks after the repository has been compromised and recovered,
1328-
certain metadata files need to be deleted as specified in this section.
1329-
Please see [the Mercury
1330-
paper](https://ssl.engineering.nyu.edu/papers/kuppusamy-mercury-usenix-2017.pdf)
1326+
version. To recover from a fast-forward attacks after the repository has been
1327+
compromised and recovered, certain metadata files need to be deleted as
1328+
specified in this section. If a delegated targets file is subjected to a
1329+
fast-forward attack, the snapshot role's keys should be replaced. Please see
1330+
[the Mercury paper](https://ssl.engineering.nyu.edu/papers/kuppusamy-mercury-usenix-2017.pdf)
13311331
for more details on fast-forward attacks.
13321332

13331333
1. **Targets recovery** If a threshold of targets keys have been
@@ -1489,18 +1489,13 @@ it in the next step.
14891489
1. Let DELEGATEE denote the current target role TARGETS is
14901490
delegating to.
14911491

1492-
2. **Fast-forward attack recovery.** If a threshold of
1493-
delegated targets keys for the current delegation are removed from the
1494-
TARGETS metadata, delete the trusted DELEGATEE metadata, if any, and the
1495-
previously trusted snapshot metadata.
1496-
1497-
3. **Check for a rollback attack via snapshot.** The version number of the
1492+
2. **Check for a rollback attack via snapshot.** The version number of the
14981493
DELEGATEE metadata in the previous trusted snapshot metadata, if any, MUST
14991494
be less than or equal to its version number in the new trusted snapshot
15001495
metadata. If this is not the case, abort the update cycle, and report the
15011496
potential rollback attack.
15021497

1503-
4. **Download the DELEGATEE targets metadata file**, up to either
1498+
3. **Download the DELEGATEE targets metadata file**, up to either
15041499
the number of bytes specified in the snapshot metadata file, or some Z
15051500
number of bytes. The value for Z is set by the authors of the application
15061501
using TUF. For example, Z may be tens of kilobytes. IF DELEGATEE cannot be
@@ -1513,40 +1508,40 @@ it in the next step.
15131508
in the snapshot metadata file. In either case, the client MUST write the
15141509
file to non-volatile storage as FILENAME.EXT.
15151510

1516-
5. **Check against snapshot metadata.** The hashes (if any), and
1511+
4. **Check against snapshot metadata.** The hashes (if any), and
15171512
version number of the new DELEGATEE metadata file MUST match the trusted
15181513
snapshot metadata, if any. This is done, in part, to prevent a mix-and-match
15191514
attack by man-in-the-middle attackers. If the new DELEGATEE metadata file
15201515
does not match, abort the update cycle, and report the failure.
15211516

1522-
6. **Check for an arbitrary software attack.** The new DELEGATEE
1517+
5. **Check for an arbitrary software attack.** The new DELEGATEE
15231518
metadata file MUST have been signed by a threshold of keys specified in the
15241519
TARGETS metadata file. If the new DELEGATEE metadata file is not signed
15251520
as required, abort the update cycle, and report the failure.
15261521

1527-
7. **Check for a rollback attack on the DELEGATEE metadata.**
1522+
6. **Check for a rollback attack on the DELEGATEE metadata.**
15281523
The version number of the trusted DELEGATEE metadata file, if any, MUST be
15291524
less than or equal to the version number of the new DELEGATE metadata
15301525
file. If the new DELEGATEE metadata file is older than the trusted
15311526
DELEGATEE metadata file abort the update cycle, and report the potential
15321527
rollback attack.
15331528

1534-
8. **Check for a freeze attack.** The latest known time
1529+
7. **Check for a freeze attack.** The latest known time
15351530
should be lower than the expiration timestamp in the new DELEGATEE
15361531
metadata file. If so, the new DELEGATEE file becomes the trusted DELEGATEE
15371532
file. If the new DELEGATEE metadata file is expired, abort the update
15381533
cycle, and report the potential freeze attack.
15391534

1540-
9. If the current delegation is a multi-role delegation,
1535+
8. If the current delegation is a multi-role delegation,
15411536
recursively visit each role, and check that each has signed exactly the
15421537
same non-custom metadata (i.e., length and hashes) about the target (or
15431538
the lack of any such metadata). Otherwise, abort the update cycle, and
15441539
report the failure.
15451540

1546-
10. If the current delegation is a terminating delegation,
1541+
9. If the current delegation is a terminating delegation,
15471542
then jump to step [[#fetch-target]].
15481543

1549-
11. Otherwise, if the current delegation is a non-terminating
1544+
10. Otherwise, if the current delegation is a non-terminating
15501545
delegation, continue processing the next delegation, if any, by repeating
15511546
the preorder depth-first search with DELEGATEE as the current TARGET role.
15521547
Stop the search, and jump to step [[#fetch-target]]. as soon as a

0 commit comments

Comments
 (0)