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