@@ -3428,14 +3428,74 @@ Basic hardware acceleration supported:
34283428- AES-ECB (128, 192, 256 key sizes)
34293429- AES-CBC (128, 192, 256 key sizes)
34303430- AES-OFB (128, 192, 256 key sizes)
3431- - Only supports full 16-byte blocks
34323431- AES-CFB (128, 192, 256 key sizes)
3433- - Only supports full 16-byte blocks
34343432- AES-CTR (128, 192, 256 key sizes)
34353433 - User must avoid counter wrap of all ff's to 0, as this fails in the hardware
34363434
34373435See [ Test and Benchmark] ( #lpc55s69-test-and-benchmark ) for a comparison with and without hardware acceleration.
34383436
3437+ ### LPC55S69: Hardware PUF (HWPUF)
3438+
3439+ wolfBoot / wolfCrypt provide support for the LPC55S69's SRAM PUF (Physically
3440+ Unclonable Function), which provides root of trust, identity, and key
3441+ generation & storage, without the need to expose keys during manufacturing.
3442+ Keys of size 128, 192, and 256 bits are supported.
3443+ To turn on HWPUF, set HWPUF=1 in the config file (see below).
3444+
3445+ ### LPC55S69: Example Configurations
3446+
3447+ #### The following example configurations are provided:
3448+
3449+ - [ lpc55s69.config] ( /config/examples/lpc55s69.config ) :
3450+ - Both wolfBoot and the test-app live in the non-secure realm
3451+ - Set PKA=1 in the config file to turn on hardware acceleration
3452+ (off by default)
3453+
3454+ - [ lpc55s69-benchmark.config] ( /config/examples/lpc55s69-benchmark.config ) :
3455+ - Same as ` lpc55s69.config ` , but turns on test and benchmark code
3456+ - Set PKA=1 in the config file to turn on hardware acceleration
3457+ (off by default)
3458+
3459+ - [ lpc55s69-tz.config] ( /config/examples/lpc55s69-tz.config ) :
3460+ - wolfBoot lives in the secure realm, test-app lives in the non-secure realm
3461+ - Provides a standard PKCS #11 api to interface with crypto algs in the secure
3462+ realm
3463+
3464+ - [ lpc55s69-tz-psa.config] ( /config/examples/lpc55s69-tz-psa.config ) :
3465+ - wolfBoot lives in the secure realm, test-app lives in the non-secure realm
3466+ - Provides a standard PSA api to interface with crypto algs in the secure
3467+ realm
3468+ - Provides an example of PSA Attestation
3469+ - To turn on HWPUF for use with attestation, set the following in the config
3470+ file:
3471+ - WOLFBOOT_UDS_UID_FALLBACK_FORTEST=0
3472+ - HWPUF=1
3473+ - WOLFBOOT_HWPUF_PROVISION=1
3474+
3475+ #### Summary of configurables applicable to all lpc55s69 example configurations:
3476+ - ` PKA ` : Turn on/off hardware acceleration of crypto algs
3477+ - ` HWPUF ` : Turn on/off support for the hardware PUF
3478+ - ` WOLFBOOT_HWPUF_PROVISION ` : Turn on/off auto-provisioning of the HWPUF on
3479+ first boot. Performs PUF enrollment and generates a UDS key for device
3480+ attestation. Stores PUF keycodes in a known flash location and uses them when
3481+ necessary.
3482+ - ` WOLFBOOT_HWPUF_PROV_ADDRESS ` : Flash address of the 4 KB PUF provisioning
3483+ record (default ` 0x80000 ` , page aligned). The build fails if it overlaps the
3484+ boot, update or swap partition or the protected flash region (` 0x9DE00 ` and
3485+ up), or if it lies below the boot partition (wolfBoot, keyvault and NSC).
3486+ The activation code and key code are written first and verified, then a
3487+ commit word is written in the last page of the record. Provisioning only
3488+ runs when that commit page is erased (or all ` 0xFF ` ), so a provisioning
3489+ interrupted before the commit is redone on the next boot. A record in any
3490+ other state is never silently replaced, because that would change the device
3491+ identity: attestation fails until the region is erased. This includes the
3492+ rare case where power is lost while the commit page itself is being erased or
3493+ programmed.
3494+
3495+ ` HWPUF=1 ` cannot be combined with ` WOLFBOOT_UDS_UID_FALLBACK_FORTEST=1 ` . With
3496+ ` TZEN=1 ` the PUF is reachable only from the secure world (it is excluded from
3497+ the non-secure SAU regions and is not linked into the non-secure test-app).
3498+
34393499### LPC55S69: Configuring and compiling
34403500
34413501Copy the example configuration file and build with make:
@@ -3445,9 +3505,6 @@ cp config/examples/lpc55s69.config .config
34453505make
34463506```
34473507
3448- We also provide a TrustZone configuration at ` config/examples/lpc55s69-tz.config `
3449- and a benchmarking configuration at ` config/examples/lpc55s69-benchmark.config ` .
3450-
34513508### LPC55S69: Loading the firmware
34523509
34533510Download and install the LinkServer tool:
0 commit comments