Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Added TAP for TUF Version Management #107

Merged
merged 41 commits into from
Aug 18, 2020
Merged
Changes from 1 commit
Commits
Show all changes
41 commits
Select commit Hold shift + click to select a range
950dc60
added TAP 12 draft
mnm678 Dec 20, 2018
cc9f318
clarified client update
mnm678 Jan 7, 2019
1622a14
removed tap number for draft tap
mnm678 Mar 19, 2019
b348546
added clarifications about location of version numbers and semantic v…
mnm678 May 2, 2019
a80ab21
add intermediate root metadata for root metadata format changes
mnm678 May 22, 2019
03f7e59
added details and clarifications
mnm678 Jun 5, 2019
8c4c1a3
minor edits
mnm678 Jun 6, 2019
6de5c5d
fix link
mnm678 Jun 6, 2019
0b71af6
Added detail and reorganized sections
mnm678 Jun 10, 2019
2c3fcd9
clarifications and link to implementation
mnm678 Jul 4, 2019
1375ce5
added clarifications and example about how spec-version updates are h…
mnm678 Jul 5, 2019
156897b
minor edits
mnm678 Jul 5, 2019
0c178cf
Changes to address special cases.
mnm678 Jul 15, 2019
4bb95ee
Added use cases and description of directory structure
mnm678 Jul 22, 2019
87d57c2
clarifications and minor edits
mnm678 Aug 20, 2019
48cc83a
added some description
mnm678 Aug 22, 2019
986b3e3
added clarifications and grammar fixes
mnm678 Aug 26, 2019
f5999be
fix backward compatibility description
mnm678 Aug 27, 2019
3055189
add more rationale
mnm678 Oct 3, 2019
124e82f
add clarifications and security analysis
mnm678 Oct 8, 2019
468c6b8
Formatting changes
mnm678 Oct 10, 2019
2b7e8d7
clarifications to the multiple repositories case
mnm678 Oct 18, 2019
c9912d5
rework intro sections
mnm678 Oct 31, 2019
c1921b7
minor edits and fixes to abstract and rationale
mnm678 Nov 6, 2019
5ba968f
Apply suggestions from code review
mnm678 Jan 3, 2020
30202de
Added clarification based on review.
mnm678 Jan 3, 2020
9790a0c
Apply suggestions from code review
mnm678 Jan 14, 2020
4cee0bd
Added clarifications based on review. Especially:
mnm678 Jan 23, 2020
e927183
Add clarifications, especially:
mnm678 Feb 10, 2020
3f78127
Apply suggestions from code review
mnm678 Jul 9, 2020
cb81016
Update example as TUF is on version 1.0.x
mnm678 Jul 16, 2020
817e993
spec to specification and other minor edits for consistency and accuracy
mnm678 Jul 20, 2020
161db51
update with semantic versioning implementation link
mnm678 Jul 20, 2020
f218b82
add deprecation_timestamp field for targets metadata
mnm678 Jul 20, 2020
94183f9
Apply suggestions from code review
mnm678 Jul 21, 2020
d75e5c9
replace deprecation_timestamp with becomes_obsolete
mnm678 Jul 21, 2020
3fe4e52
additionally add becomes_obsolete to the timestamp metadata
mnm678 Jul 21, 2020
a6b3105
move becomes_obsolete to root
mnm678 Jul 24, 2020
b5d3bd9
Add clarifications from review
mnm678 Aug 6, 2020
b6b04e9
Add TAP number 14 to the version management TAP
mnm678 Aug 7, 2020
c933d87
Merge branch 'master' into tuf-versions
mnm678 Aug 7, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
54 changes: 54 additions & 0 deletions tap12.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
* TAP: 12
* Title: Managing TUF Versions
* Version: 1
* Last-Modified: 19-December-2018
* Author: Marina Moore, Justin Cappos
* Status: Draft
* Content-Type: text/markdown
* Created: 19-December-2018

# Abstract

This TAP clarifies how to manage updates to the TUF spec that include non-backwards compatible (breaking) changes. This TAP will define a procedure for TUF clients to ensure that they are using a compatible version of the TUF spec before performing updates.

# Motivation

Various TAPs, including TAPs 3 and 8 include changes that will make clients using the old version of the spec incompatible with servers using the new version. This TAP defines a procedure to ensure that clients are not missing important features to ensure the security of updates.

# Rationale

Breaking changes should only occur during a major release of the TUF spec (1.x.x to 2.x.x). The client should check the major version when the root metadata is downloaded, and if a new version is found update the client before performing any software updates.

Additionally, this TAP clarifies how TUF version numbers should be determined. For clarity, semantic versioning is used to determine version numbers that can be easily be understood.

# Specification

The root metadata already contains the TUF spec-version. The client shall compare the spec-version in the root metadata (server spec-version) with the spec-version of the local client (client spec-version). The client shall then proceed as described below.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What if the root file's format changes?


## Procedure

If the server spec-version is lower than the client spec-version, the client shall terminate the update and report an error.

If the major version (the first digit) of the spec-version has been incremented, the client must update before proceeding. This could be an automatic process or an error could be reported, requesting a manual client update.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the TAP, Marina!

Not clear what this means, though. The client must update what from where?


If a minor version or patch number of the spec-version has been incremented, the client should report this and may update, but can chose to proceed without further action.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
If a minor version or patch number of the spec-version has been incremented, the client should report this and may update, but can chose to proceed without further action.
If a minor version or patch number of the spec-version has been incremented, the client should report this and may update, but can choose to proceed without further action.


Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does the repo ever need to keep multiple versions of metadata? How does this work?

## Version Number format

TUF version number shall be determined based on [semantic versioning](https://semver.org/). This format specifies versions in the format MAJOR.MINOR.PATCH. In this format, only major changes are non-backwards compatible.

# Security Analysis

There should be minimal security impact. Ensuring that the client is up to date should improve security in the event that a security vulnerability is patched in a release of the spec.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What is the impact of letting the client be one or more minor versions behind? Also, how does the method by which the client gets an updated client impact security?


# Backwards Compatibility

This TAP is backwards compatible, and should be implemented before any non-backwards compatible TAPs are released.

# Augmented Reference Implementation

TODO

# Copyright

This document has been placed in the public domain.