Hi Peter,
On 8/12/25 16:07, Peter Oberauer wrote:
> Hi. We are looking for SWUpdate best practices in the following scenario:
>
> Company A manufactures devices, and builds the Yocto Linux SDK (toolchain).
> Company B (and others) buy the devices, use the SDK to create
> application(s) and sell the devices with their software application on it.
This is the well known "OEM" use case.
>
> Initially the devices only trust Company A (at secure boot).
> The question, is: somehow the device must be told that it must now also
> trust Company B (at least SWUpdate updates from Company B).
> What are the best practices around adding that additional trust, in a
> secure way?
You have to implement a full PKI. Company A becomes the CA (Certificate
Authotity) and creates certificates for itself (to deliver Yocto /
rootfs) and for Company B (to deploy applications). Certificates are
signe by CA. On the device, CA public certificate is installed. Device
can verify packages signed by A and signed by B, each of them with own
certificate.
>
> To provide more context:
>
> The device uses NXP i.MX 8X, U-Boot, Yocto Linux, SWUpdate.
Common case...
>
> Everything we have found online so far (from NXP, SWUpdate etc) covers
> the simpler case, where there are only keys from one company to manage.
Well, do you expect that vendor will fully provide support for your
project ? Take into account that there are several parts that are very
specific to a project. And to the Hardware.
NXP is not telling vyou about the great idea they had to move the SCU FW
into the bootloader. If the API between SCU and Kernel changes (and this
happened a lot of times..), system is broken and you need to upgrade
both U-Boot and Kernel at once. That creates a dependency, and you must
update U-Boot for changes in kernel (and viceversa). The only suitable
way I found with this SOC is to create an A/B schema also for U-Boot,
and synchronize updates of U-Boot (together with ATF, hdmi fw, etc.) and
the kernel.
> Which terminology/keywords should we be using for our scenario?
> After the initial reprogramming at company B, the device will need to
> accept additional updates in the field, from a USB stick, without
> internet connectivity.
See above.
>
> Rightly or wrongly, current plans are:
> Company A signs the boot container, Linux rootfs (read-only, dm-verity).
> Company A fuses their four SRKs and closes the device for signed secure
> boot.
Company B won't be able to replace the kernel - probably this is ok for you.
> Company B creates the SWUpdate - using the boot container and rootfs
> (built and signed by A) and their own app partition. And signs the
> SWUpdate themselves.
> Therefore the device needs to go from trusting A (on secure boot), to
> also trusting B (on SWUpdate).
Company B could also provide a full blown update, including U-Boot and
Kernel), if it gets the artifacts as they are from company A, that has
already signed them.
Best regards,
Stefano Babic