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

TUF Graduation PR #166

Merged
merged 40 commits into from Dec 18, 2019
Merged
Changes from all commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
998939a
Rough, partially filled out sketch
JustinCappos Oct 11, 2018
653381e
More detail...
JustinCappos Oct 12, 2018
e9f661c
fixing lists
JustinCappos Oct 12, 2018
a7e68f9
"DataDog" -> "Datadog"
trishankatdatadog Oct 12, 2018
75012cf
minor grammar edits
trishankatdatadog Oct 15, 2018
c282941
Tweak the organizations
justincormack Oct 16, 2018
d8832c7
Merge pull request #1 from justincormack/jc-edits
JustinCappos Oct 16, 2018
e8a5af5
Update tuf-graduation.md
JustinCappos Oct 16, 2018
235fc09
alphabetical ordering of organizations
trishankatdatadog Oct 16, 2018
e192204
Merge pull request #2 from trishankatdatadog/trishankatdatadog/patch-1
JustinCappos Oct 16, 2018
822588a
Listing more information about adoption / adopters.
JustinCappos Nov 5, 2018
e2e3939
Update reviews/tuf-graduation.md
JustinCappos Sep 13, 2019
6a270a1
Update reviews/tuf-graduation.md
JustinCappos Sep 13, 2019
0c66c7b
Update reviews/tuf-graduation.md
JustinCappos Sep 13, 2019
a51a1ed
Update reviews/tuf-graduation.md
JustinCappos Sep 13, 2019
a345489
Update reviews/tuf-graduation.md
JustinCappos Sep 13, 2019
88252db
Update reviews/tuf-graduation.md
JustinCappos Sep 13, 2019
2f54f63
Update reviews/tuf-graduation.md
JustinCappos Sep 13, 2019
98b62e8
Update reviews/tuf-graduation.md
JustinCappos Sep 13, 2019
108bd1d
Update reviews/tuf-graduation.md
JustinCappos Sep 13, 2019
6ba3771
Update reviews/tuf-graduation.md
JustinCappos Sep 13, 2019
178db80
Update reviews/tuf-graduation.md
JustinCappos Sep 13, 2019
bf4da41
Update reviews/tuf-graduation.md
JustinCappos Sep 13, 2019
2b66615
Update reviews/tuf-graduation.md
JustinCappos Sep 13, 2019
d48c50b
Update reviews/tuf-graduation.md
JustinCappos Sep 13, 2019
30ce33f
reviews:tuf-graduation: update contributor stats
SantiagoTorres Sep 13, 2019
5853fac
Update reviews/tuf-graduation.md
JustinCappos Oct 7, 2019
4ed9c8b
Update reviews/tuf-graduation.md
JustinCappos Oct 17, 2019
b969c7b
Update reviews/tuf-graduation.md
JustinCappos Oct 17, 2019
1ce1ad0
Update reviews/tuf-graduation.md
JustinCappos Nov 5, 2019
25b0383
Update reviews/tuf-graduation.md
JustinCappos Nov 5, 2019
7d88029
Update reviews/tuf-graduation.md
JustinCappos Nov 5, 2019
235adb9
Update reviews/tuf-graduation.md
JustinCappos Nov 5, 2019
8e0a5f0
Update reviews/tuf-graduation.md
JustinCappos Nov 9, 2019
83be9d4
Update reviews/tuf-graduation.md
JustinCappos Nov 9, 2019
4a23082
Update reviews/tuf-graduation.md
JustinCappos Nov 9, 2019
b9f5f42
Update reviews/tuf-graduation.md
JustinCappos Nov 9, 2019
389cf72
Update reviews/tuf-graduation.md
JustinCappos Nov 9, 2019
16f6383
Update reviews/tuf-graduation.md
JustinCappos Nov 9, 2019
3363c7a
Update reviews/tuf-graduation.md
JustinCappos Nov 11, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
81 changes: 81 additions & 0 deletions reviews/tuf-graduation.md
@@ -0,0 +1,81 @@
# TUF Graduation Application

The Update Framework (TUF) helps developers maintain the security of a software update system, even against attackers that compromise some repository or signing keys. TUF provides a flexible framework and specification that developers can adopt into any software update system.

## TUF fulfills all the incubating and graduation criteria:

### Document that it is being used successfully in production by at least three independent end users which, in the TOC’s judgement, are of adequate quality and scope.

* TUF is used in production by Cloudflare, Datadog, DigitalOcean, Docker, IBM, Kolide, LEAP, Microsoft, RedHat, VMware, and many others. Amazon has just released a new Rust implementation of [TUF](https://github.com/awslabs/tough). [Uptane](https://uptane.github.io/), the automotive variant of TUF, is sold by major automotive vendors and is being adopted by automakers with over 1/3 of the cars on US roads in their forthcoming cars. Uptane is included as part of [Automotive Grade Linux](https://www.automotivelinux.org/), another Linux Foundation project.
* While these integrations all use the TUF specification, the implementations vary. Datadog, OTAinfo, and LEAP use the Python reference implementation, most cloud companies use Notary, Google is integrating their own Go implementation into Fuschia, and most automobiles use custom variants written by different automotive vendors.
* More detail about adoption, including some of the in progress adoptions, can be found here: https://theupdateframework.github.io/adoptions.html

JustinCappos marked this conversation as resolved.
Show resolved Hide resolved
Apart from the Docker, LEAP, and AppContainer adoptions (which happened prior to joining the CNCF), these adoptions have all happened while TUF is in incubation.

### Have a healthy number of committers. A committer is defined as someone with the commit bit; i.e., someone who can accept contributions to some or all of the project. The committers should come from at least two organizations.

As an intentionally minimal security specification / framework, we deliberately do not have a high degree of feature additions in the project. Effort comes on either the implementations, such as Notary, Amazon's Rust implementation, Google's implementation, or the Python reference implementation, or the specification itself. As TUF is a specification project, we focus on the specification and the Python reference implementation.

* Python reference implementation / specification (6 committers, 3 organizations)

* Justin Cappos (NYU), Trishank Karthik Kuppusamy (Datadog / NYU), Lukas Puehringer (NYU), Santiago Torres (NYU), Sebastien Awwad (Conda), Marina Moore (NYU)



JustinCappos marked this conversation as resolved.
Show resolved Hide resolved
### Demonstrate a substantial ongoing flow of commits and merged contributions.

We have had active contributions from an array of contributors across the CNCF landscape, more traditional software projects, and automakers. One way to see this is via the substantial changes that made their way into the specification.

Changes to the TUF standard largely come in the form of TAPs (TUF Augmentation Proposals). There are 8 active, non-informational TAPs (TAP 3-6 and 8-11).

The 5 accepted TAPs have authors from 6 different organizations:
* [TAP3](https://github.com/theupdateframework/taps/blob/master/tap3.md) and [TAP4](https://github.com/theupdateframework/taps/blob/master/tap4.md), by Trishank Karthik Kuppusamy (Datadog / NYU), Sebastien Awwad (Conda), Evan Cordell (CoreOS / RedHat), Vladimir Diaz, Jake Moshenko (CoreOS / RedHat), Justin Cappos (NYU)
* [TAP6](https://github.com/theupdateframework/taps/blob/master/tap6.md) by David Lawrence (Docker), Vladimir Diaz, Justin Cappos (NYU)
* [TAP9](https://github.com/theupdateframework/taps/blob/master/tap9.md) by heartsucker (HERE)
* [TAP10](https://github.com/theupdateframework/taps/blob/master/tap10.md) by Vladimir Diaz

There are 3 TAPs that are currently under consideration (all of which are likely to be accepted) with authors from 5 organizations:
* [TAP5](https://github.com/theupdateframework/taps/blob/master/tap5.md) by Trishank Karthik Kuppusamy (Datadog / NYU), Sebastien Awwad (Conda), Evan Cordell (CoreOS / RedHat), Vladimir Diaz, Jake Moshenko (CoreOS / RedHat), Justin Cappos (NYU)
* [TAP8](https://github.com/theupdateframework/taps/blob/master/tap8.md) by Hannes Mehnert (OCaml / Cambridge University), Justin Cappos (NYU)
* [TAP11](https://github.com/theupdateframework/taps/blob/master/tap11.md) by Marina Moore (NYU), Santiago Torres (NYU), Trishank Kuppusamy (Datadog), Sebastien Awwad (Conda), Justin Cappos (NYU)

JustinCappos marked this conversation as resolved.
Show resolved Hide resolved
There is also a TAPs from the automotive industry dealing with upgrading while changing the TUF metadata version itself that is currently being iterated over.

JustinCappos marked this conversation as resolved.
Show resolved Hide resolved
These demonstrate the breadth of contributions from different adopters and the way in which contributions are merged into the specification.

Each part of TUF has seen activity both from core committers and external parties. Of course the fewest commits have come in the TAPs and spec itself. The TAPs have had 575 commits by 10 contributors (5 external, 2 were non-TAP authors). The specification has had 82 commits by 11 contributors (6 external contributors). TUF's Python reference implementation has had more than 3.3K commits, by 42 contributors (26 external). This demonstrates both activity and committer diversity.

### A clear versioning scheme

TUF uses semantic versioning. We check in a persistent copy of the specification with each release.


JustinCappos marked this conversation as resolved.
Show resolved Hide resolved

### Have achieved and maintained a Core Infrastructure Initiative Best Practices Badge.

We have both the basic best practices badge and the silver badge.
https://bestpractices.coreinfrastructure.org/projects/1351

### Adopt the CNCF Code of Conduct.

TUF follows the CNCF code of conduct. https://github.com/theupdateframework/tuf/blob/develop/docs/CODE-OF-CONDUCT.md
This is linked multiple places, including the footer of [TUF's homepage](https://theupdateframework.github.io/).

### Explicitly define a project governance and committer process. This preferably is laid out in a GOVERNANCE.md file and references an OWNERS.md file showing the current and emeritus committers.

These documents may be found here:
* https://github.com/theupdateframework/tuf/blob/develop/docs/GOVERNANCE.md
* https://github.com/theupdateframework/tuf/blob/develop/docs/CONTRIBUTORS.rst

### Have a public list of project adopters for at least the primary repo (e.g., ADOPTERS.md or logos on the project website).

Our website has an [adoptions page](https://theupdateframework.github.io/adoptions.html) on it that lists the different projects. We also have an [ADOPTERS.MD](https://github.com/theupdateframework/tuf/blob/develop/docs/ADOPTERS.md) which contains much of the same information. [Uptane](https://uptane.github.io/), the automotive version of TUF, also its own [adoptions page](https://uptane.github.io/adoptions.html).

JustinCappos marked this conversation as resolved.
Show resolved Hide resolved
JustinCappos marked this conversation as resolved.
Show resolved Hide resolved
## Security Audits
There are multiple [security audits](https://theupdateframework.github.io/audits.html) of TUF available on the TUF website.

### Alternatives to TUF

The most common alternative to TUF involves using either a signing key on the server (e.g., TLS) or on a server as part of software creation (e.g., GPG signing in a build farm). Either way, the fundamental difference is that a single key / server compromise can result in an attacker having the ability to install arbitrary code on end user machines. Existing specifications / proposals like OMA-DM, SUIT, ITU-T X.1373, as well as common use patterns for GPG/PGP/RSA signing and TLS all have this flaw.

In contrast, TUF is designed with the assumption that the company deploying TUF may not have perfect security. In other words, a key and/or server will be compromised at some point. TUF is focused on preventing an attacker from performing harmful attacks while allowing the operator to recover to a secure baseline.```