Skip to content

Commit 298bd84

Browse files
authored
Merge pull request #1 from lukpueh/sync-upstream
Sync with theupdateframework.github.io (upstream)
2 parents 54206df + 28863ac commit 298bd84

File tree

11 files changed

+192
-83
lines changed

11 files changed

+192
-83
lines changed

assets/sass/style.sass

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,14 @@ $colors: mergeColorMaps(("{{ .name }}": ({{ .hex }}, $white)), $colors)
6969
{{ end }}
7070
{{ end }}
7171

72+
// Show h2 headings a bit below navbar when clicking anchors, without affecting
73+
// the spacing between a heading and a preceding paragraph.
74+
h2:before
75+
height: calc(#{$navbar-height} + 2rem)
76+
margin-top: calc((#{$navbar-height} + 2rem) * -1)
77+
content: ""
78+
display: block
79+
7280
// Bulma core
7381
@import "bulma/sass/utilities/_all"
7482
@import "bulma/sass/base/_all"

config.toml

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -88,23 +88,29 @@ parent = "getting-started"
8888
url = "/metadata"
8989
weight = 2
9090

91+
[[menu.main]]
92+
name = "Frequently asked questions"
93+
parent = "getting-started"
94+
url = "/faq"
95+
weight = 3
96+
9197
[[menu.main]]
9298
name = "Specification"
9399
parent = "getting-started"
94100
url = "https://github.com/theupdateframework/specification/blob/master/tuf-spec.md#the-update-framework-specification"
95-
weight = 3
101+
weight = 4
96102

97103
[[menu.main]]
98104
name = "Implementation"
99105
parent = "getting-started"
100106
url = "https://github.com/theupdateframework/tuf/blob/develop/docs/GETTING_STARTED.rst#getting-started"
101-
weight = 4
107+
weight = 5
102108

103109
[[menu.main]]
104110
name = "Videos"
105111
parent = "getting-started"
106112
url = "/videos"
107-
weight = 5
113+
weight = 6
108114

109115
[[menu.main]]
110116
name = "Community"

content/faq.md

Lines changed: 158 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,158 @@
1+
---
2+
title: Frequently Asked Questions
3+
---
4+
5+
**1. How difficult is it to integrate TUF?**
6+
7+
At a high level, all an adopter needs to do is (1) add TUF metadata to its
8+
software repository, and (2) arrange for clients to use TUF to fetch files
9+
from the repository before transferring the verified files to the software
10+
update system.
11+
12+
In practice, (1) will also require the adopter to decide how to make the
13+
metadata and delegations available to clients, how to manage the keys needed
14+
to sign TUF metadata (in particular, how to generate, securely store or backup,
15+
and rotate offline keys), and how to periodically update and re-sign metadata.
16+
17+
For (2), an adopter has to figure out how to ship the initial Root file, and
18+
implement [the TUF download and verification
19+
workflow](https://github.com/theupdateframework/specification/blob/master/tuf-spec.md#5-detailed-workflows)
20+
in their language of choice if one of the existing implementations is
21+
insufficient.
22+
23+
**2. Why should I use delegations?**
24+
25+
Using delegations makes it so that users can perform actions for one another
26+
without needing to share keys in order to make this happen.
27+
As we state in the specification: "Delegated roles can further delegate trust
28+
to other delegated roles. This provides for multiple levels of trust
29+
delegation where each role can delegate full or partial trust for the target
30+
files they are trusted for." Delegations add more security. For instance, in
31+
a community repository like PyPI, delegating trust for target files to a
32+
project developer is recommended. It increases compromise-resilience because
33+
if the developers control their own project keys, an attacker cannot access
34+
them, and therefore cannot sign and serve malicious versions of the project.
35+
36+
**3. What happens if the server and keys are compromised?**
37+
38+
The repo maintainer must revoke and replace compromised keys. If a Timestamp,
39+
Snapshot, Targets, or Root key is compromised, the Root role must re-sign its
40+
metadata to replace the compromised key. If a threshold of Root keys is
41+
compromised, the Root file must be re-issued out of band. If a threshold
42+
number of offline keys are required, a full compromise of the repo is
43+
unlikely. For a more in-depth discussion about the steps to follow in the
44+
event of a key compromise, see [PEP
45+
458](https://www.python.org/dev/peps/pep-0458/#in-the-event-of-a-key-compromise),
46+
which covers one way to deal with compromised keys on a community repo such
47+
as PyPI.
48+
49+
**4. Can I use the same keys for different roles?**
50+
51+
In general, you shouldn't share keys. In certain cases, even sharing online
52+
keys (e.g., between the Timestamp and Snapshot roles) is not advised. As we
53+
recommend for the PyPI community, "different keys for online roles allow for
54+
each of the keys to be placed on separate servers if need be, and prevents
55+
side channel attacks that compromise one key from automatically compromising
56+
the rest of the keys."
57+
58+
**5. Which roles can use online keys?**
59+
60+
The Timestamp and Snapshot roles can use online keys to facilitate continuous
61+
delivery of updates on the typical repository. All other roles should rely on
62+
offline keys to prevent attackers from signing for malicious packages in the
63+
event of a repo compromise.
64+
65+
**6. What is the point of having the Root and Snapshot roles?**
66+
67+
The Root role keeps track of the trusted public keys of the top-level roles,
68+
and can remove or add keys when needed. Its metadata is rarely updated and
69+
its signing keys must receive the greatest protection. In contrast, the
70+
Snapshot role is updated often, signed with an online key, and provides a
71+
consistent view of the metadata available on a repo. The Snapshot and Root
72+
role are responsible for different tasks that differ in level of importance.
73+
Separation of responsibilities is one of TUF's design choices.
74+
75+
**7. Can you combine Timestamp and Snapshot?**
76+
77+
There are a few reasons why the Timestamp and Snapshot files are not
78+
combined:
79+
80+
* The Timestamp file is downloaded very frequently and so should be
81+
kept as small as possible, especially considering that the Snapshot file will
82+
grow proportionally with the number of delegated target roles.
83+
84+
* As the Timestamp role’s key is an online key and thus at high risk,
85+
when an offline key storage is appropriate for Snapshot, separate keys should
86+
be used so that the Snapshot role’s keys can be kept offline, and thus in a
87+
more secure manner.
88+
89+
* When rotating keys, it makes much more sense to rotate Timestamp
90+
frequently. When Timestamp is rotated, if an attacker compromises the new
91+
key, they can launch a freeze attack for a short while. For Snapshot, an
92+
attacker could cause clients to invalidate a lot of their stored targets
93+
metadata, which may result in re-retrieval of a substantial amount of
94+
information from the repository. So, it is recommended to rotate Timestamp
95+
more often.
96+
97+
* Timestamp may be given to mirrors.
98+
99+
**8. How often should metadata expire?**
100+
101+
The Timestamp and Snapshot metadata should normally have a short expiration
102+
(1 day), whereas the Root and Targets metadata should expire less often (1
103+
year). A good rule of thumb is the more often the metadata changes, the
104+
sooner it should expire.
105+
106+
**9. Are there ways to reduce bandwidth costs?**
107+
108+
It is possible to minimize the size and number of delegated metadata that the
109+
client has to download, and in doing so, reduce the associated costs. The
110+
[Metadata Scalability
111+
section](https://www.python.org/dev/peps/pep-0458/#metadata-scalability) of
112+
PEP 458 discusses in more detail the ways in which to reduce bandwidth costs.
113+
For example, if one large metadata file is split into several smaller ones,
114+
the bandwidth associated with downloading the large file many times can be
115+
saved. The reference implementation provides an [easy way to distribute
116+
target files across many targets
117+
metadata](https://github.com/theupdateframework/tuf/blob/d4b308ae13acfe832bfb7f993108e5e065d44c04/tuf/repository_tool.py#L2387)
118+
(i.e., delegating to hashed bins), which the
119+
[specification](https://github.com/theupdateframework/specification/blob/master/tuf-spec.md)
120+
refers to as path hash prefixes.
121+
122+
**10. Can TUF be used with devices that lack the CPU power or memory to
123+
verify metadata?**
124+
125+
At a minimum, a client device must be able to verify the hashes and
126+
signatures on TUF metadata. If a device isn't powerful enough to perform
127+
cryptographic operations or has limited memory, it can delegate verification
128+
of hashes and signatures to another device. For instance, a weaker device can
129+
rely on another device on the network to verify the signatures on top-level
130+
metadata. Delegating to another device is not built into the framework but
131+
[Uptane](https://uptane.github.io/), a variant of TUF, is designed to work
132+
with weaker devices like the Electronic Control Units found in automobiles.
133+
134+
**11. Can I use TUF to download files from more than one repository?**
135+
136+
TUF can download files from multiple mirrors and repos. In fact, we offer
137+
guidance for conducting a secure search for files across multiple
138+
repositories in [TAP
139+
4](https://github.com/theupdateframework/taps/blob/master/tap4.md).
140+
141+
**12. Has there been a security audit of TUF?**
142+
143+
The [Security Audits](/audits) page links to a few of the security audits of
144+
TUF.
145+
146+
**13. How can I try TUF?**
147+
148+
The [Getting
149+
Started](https://github.com/theupdateframework/tuf/blob/develop/docs/GETTING_STARTED.rst)
150+
page contains instructions to install and run the reference implementation.
151+
The client and repo tools can be used to quickly create TUF repositories and
152+
experiment with software updates.
153+
154+
**14. Is there a presentation or video about TUF?**
155+
156+
The [Videos](/videos) page contains links to presentations that have been
157+
given by both TUF developer personnel, as well as adopters.
158+

content/metadata.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ that outdated metadata will be detected and that
1616
clients can refuse to accept metadata older than that which they've already seen.
1717

1818
All TUF metadata uses a subset of the JSON object format. When calculating the
19-
digest of an object, we use the [Canonical JSON](https://wiki.laptop.org/go/Canonical_JSON) format. Implementation-level detail about the metadata can be found in the [spec](https://github.com/theupdateframework/specification/blob/master/tuf-spec.md).
19+
digest of an object, we use the [Canonical JSON](http://wiki.laptop.org/go/Canonical_JSON) format. Implementation-level detail about the metadata can be found in the [spec](https://github.com/theupdateframework/specification/blob/master/tuf-spec.md).
2020

2121
There are four required top-level roles, each with their own metadata file.
2222

content/press.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ title: Press
88

99
* [Container Journal-October 2017: CNCF Adds 2 Projects to Better Secure Containers](https://containerjournal.com/2017/10/24/cncf-adds-projects-better-secure-containers/)
1010

11-
* [Enterprise Cloud News-October 2017: Cloud Native Computing Foundation Adopts 2 Security Projects](https://www.enterprisecloudnews.com/author.asp?section_id=571&doc_id=737560)
11+
* [Enterprise Cloud News-October 2017: Cloud Native Computing Foundation Adopts 2 Security Projects](http://www.enterprisecloudnews.com/author.asp?section_id=571&doc_id=737560)
1212

1313
* [The New Stack-October 2017: CNCF Brings Security to the Cloud Native Stack with Notary, TUF Adoption](https://thenewstack.io/cncf-brings-security-cloud-native-stack-notary-tuf-adoption/)
1414

data/adoptions.yaml

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,8 @@
11
main:
2-
- url: https://blog.docker.com/2015/08/content-trust-docker-1-8/
3-
tag: Docker
4-
- url: https://flynn.io/docs/development#the-update-framework-%28tuf%29
5-
tag: Flynn
6-
- url: https://advancedtelematic.com/en/press-releases/ats-is-integrating-the-uptane-security-framework-for-over-the-air-software-updates-to-connected-vehicles.html
7-
tag: ATS
2+
- url: https://github.com/awslabs/tough
3+
tag: Amazon
4+
- url: https://fuchsia.dev/
5+
tag: Google
86
- url: https://github.com/theupdateframework/notary
97
tag: Notary
108
- url: https://console.bluemix.net/docs/services/Registry/registry_trusted_content.html#registry_trustedcontent
@@ -13,10 +11,16 @@ main:
1311
- url: https://docs.microsoft.com/en-us/azure/container-registry/container-registry-content-trust
1412
tag: Azure
1513
img_type: jpg
16-
- url: https://leap.se/en/2014/darkest-night
17-
tag: LEAP
14+
- url: https://blog.docker.com/2015/08/content-trust-docker-1-8/
15+
tag: Docker
1816
- url: https://www.youtube.com/watch?v=2ZIu9XTvsC0
1917
tag: VMWare
18+
- url: https://advancedtelematic.com/en/press-releases/ats-is-integrating-the-uptane-security-framework-for-over-the-air-software-updates-to-connected-vehicles.html
19+
tag: ATS
20+
- url: https://www.datadoghq.com/blog/engineering/secure-publication-of-datadog-agent-integrations-with-tuf-and-in-toto
21+
tag: Datadog
22+
- url: https://flynn.io/docs/development#the-update-framework-%28tuf%29
23+
tag: Flynn
2024
- url: https://www.youtube.com/watch?v=ofXHmfOTLyA
2125
tag: Quay
2226
- url: https://github.com/digitalocean/do-agent
@@ -31,6 +35,8 @@ main:
3135
tag: Airbiquity
3236
- url: https://github.com/goharbor/harbor/blob/master/docs/use_notary.md
3337
tag: Harbor
38+
- url: https://leap.se/en/2014/darkest-night
39+
tag: LEAP
3440
ongoing:
3541
- url: https://github.com/pypa/interoperability-peps/blob/master/pep-0458-tuf-online-keys.rst
3642
tag: PyPi

layouts/partials/home/cncf.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{{ $logo := printf "img/logos/%s" site.Params.logos.cncf | relURL }}
22

33
<p class="title">
4-
The Update Framework is a <a href="https://cncf.io" target="_blank">CNCF</a> incubating project
4+
The Update Framework is a <a href="https://cncf.io" target="_blank">CNCF</a> graduated project
55
</p>
66

77
<br />
5.37 KB
Loading
14.4 KB
Loading
4.43 KB
Loading

0 commit comments

Comments
 (0)