xref: /aosp_15_r20/external/pigweed/pw_software_update/docs.rst (revision 61c4878ac05f98d0ceed94b57d316916de578985)
1.. _module-pw_software_update:
2
3.. rst-class:: with-subtitle
4
5==================
6pw_software_update
7==================
8.. pigweed-module::
9   :name: pw_software_update
10
11   The ``pw_software_update`` module offers the following building blocks for
12   setting up your own end-to-end software delivery system.
13
14   - **TUF embedded**: An underlying TUF_-based security framework tailored
15     for embedded use cases that enable safe and resilient software delivery.
16   - **One bundle**: A standard update bundle format for assembling all build
17     artifacts and release information.
18   - **Two keys**: Each product has two keys dedicated to software updates. The
19     ``targets`` key directly signs a versioned manifest of target files and
20     can be regularly rotated by the ``root`` key. The ``root`` keys are in
21     turn rotated by verified boot. No provisioning is required.
22   - **Frameworked client**: An update client that takes care of all the logic
23     of checking, staging, verifying, and installing an incoming update. The
24     framework calls into the downstream backend only when needed.
25   - **Signing service**: Integration support for your favorite production
26     signing service.
27   - **Tooling**: Python modules that assemble, sign, and inspect bundles,
28     ready to be integrated into your build and release pipeline. Plus a CLI
29     with which you can try out ``pw_software_update`` before buying into it.
30   - **Extensive guidance**: All software update systems are not equal. We
31     are building out extensive guidance for representative scenarios.
32
33-------------
34Who is it for
35-------------
36
37The ``pw_software_update`` module is still in early stages. It works best if
38your software update needs checks the following boxes.
39
40✅ **I want security-by-design**!
41
42The ``pw_software_update`` module is built with security in mind from
43day 0. It leverages the state-of-the-art and widely used TUF_ framework.
44With relatively little expertise, you can set up and operate a software
45building, release, and delivery pipeline that is resiliently secure and
46private.
47
48✅ **My project has verified boot.**
49
50Software update is an extension of verified boot. Security measures in
51``pw_software_update`` CANNOT replace verified boot.
52
53.. note::
54
55   Verified boot, also known as secure boot, refers to the generic security
56   feature that ensures no software component is run without passing
57   integrity and authentication verification.  In particular, verified boot
58   ensures the software update stack has not been tampered with.
59
60✅ **My project DOES NOT require delta updates.**
61
62``pw_software_update`` packages every new software release in a single opaque
63bundle. The bundle is the smallest granularity transferred between endpoints.
64
65✅ **I can manage signing keys myself.**
66
67We don't yet have a public-facing signing service.
68
69✅ **I can store and serve my own updates.**
70
71We don't yet have a public-facing end-to-end software delivery solution.
72
73If your project doesn't check all the boxes above but you still wish to use
74``pw_software_update``. Please `email <https://groups.google.com/g/pigweed>`_
75or `chat <https://discord.gg/M9NSeTA>`_ with us for potential workarounds.
76
77.. _TUF: https://theupdateframework.io/
78
79.. toctree::
80   :hidden:
81   :maxdepth: 1
82
83   get_started
84   design
85   guides
86   cli
87