3.8.3 Errors

Upon detecting an error during an operation, the PUF module cancels the command, presents an error result code (see drv_puf_result_t enumeration in the PUF driver) and goes back to the state it was in before the command was issued. After an error, new commands can be executed by the PUF module.

If an error occurs, the software determines what next steps apply:
  • The occurred error is acceptable: The error condition can be repaired and a retry can be done. For security reasons, the number of acceptable (sequential) errors must be limited. If more than this number of errors occur, it can be considered an attack and the last error cannot be accepted.
  • The occurred error is not acceptable: Depending on the type and severity of the error, multiple actions can be initiated by software, for example:
    • Send a Stop command to PUF. This removes sensitive data from PUF and software can then perform other actions (e.g., ensure that the correct activation code is available), after which a new Start or Reconstruct command can be run.
    • Zeroize PUF, send Zeroize commands to other peripherals that have such command, and zeroize parts of system memory and registers that contain sensitive data.
    • Switch off the product/device, or the parts of the device that contain sensitive data.
    • Reset the product/device and check if the error remains.

The following table shows the possible error result codes for each operation type.

Table 3-4. Possible Error Result Codes per Operation
Result CodeDescriptionPossible Action
Enroll
DRV_PUF_RES_QUALITY_ERRPUF-dedicated SRAM quality verification failsTry to repower the PUF or the product
Start
DRV_PUF_RES_WRONG_AC_ERRThe provided Activation Code (AC) is not for the current product/versionProvide an AC that was created with this product/device
DRV_PUF_RES_AC_CORRUPTED_ERRThe provided AC is corrupted
  • Verify the AC checksum
  • Try sending the AC again (it might be a transient error)
  • Check that the AC buffer (if used) is not overwritten by another process
DRV_PUF_RES_AC_AUTH_FAILED_ERRAuthentication of the provided AC failed
  • Verify with the AC header that the AC was created for this device
  • Check that the AC buffer (if used) is not overwritten by another process
  • Try to repower the PUF or the product/device
DRV_PUF_RES_AC_CORRUPTED_PH2_ERRThe AC in the second phase is corrupted
  • Verify the AC checksum
  • Try sending the AC again (it might be a transient error)
  • Check that the AC buffer (if used) is not overwritten by another process
DRV_PUF_RES_AC_AUTH_FAILED_PH2_ERR_ERRAuthentication of the provided AC failed in the second phaseCheck that the AC buffer (if used) is not overwritten by another process
Reconstruct
DRV_PUF_RES_WRONG_AC_ERRThe provided AC is not for the current product/versionProvide an AC that was created with this product/device
DRV_PUF_RES_AC_CORRUPTED_ERRThe provided AC is corrupted
  • Verify the AC checksum
  • Try sending the AC again (it might be a transient error)
  • Check that the AC buffer (if used) is not overwritten by another process
DRV_PUF_RES_AC_AUTH_FAILED_ERRAuthentication of the provided AC failed
  • Verify with the AC header that the AC was created for this device
  • Check that the AC buffer (if used) is not overwritten by another process
  • Try to repower the PUF or the product/device
Get Key
DRV_PUF_RES_CONTEXT_ERRAn incorrect or unsupported context is providedProvide a valid context
DRV_PUF_RES_DESTINATION_ERRA key destination that was set is not allowed by the key scopeProvide a valid destination or scope
Wrap Generated Random, Wrap
DRV_PUF_RES_CONTEXT_ERRAn incorrect or unsupported context is providedProvide a valid context
Unwrap
DRV_PUF_RES_WRONG_AC_ERRThe provided Key Code (KC) is invalidProvide a KC with a valid context
DRV_PUF_RES_CONTEXT_ERRThe context in the KC header is incorrectProvide a KC with a valid context
DRV_PUF_RES_DESTINATION_ERRA key destination that was set is not allowed by the key scope in the KC header and the current PUF stateProvide a valid destination
DRV_PUF_RES_AC_CORRUPTED_ERRThe provided KC is corrupted
  • Verify the KC checksum
  • Try sending the KC again (it might be a transient error)
  • Check that the KC buffer (if used) is not overwritten by another process
DRV_PUF_RES_AC_AUTH_FAILED_ERRAuthentication of the provided KC failed
  • Verify with the KC header that the AC was created for this device
  • Ensure that the KC was created with the same AC as was used during the last Start or Reconstruct operation (this must be managed by the system software)
  • Check that the KC buffer (if used) is not overwritten by another process
Generate Random
DRV_PUF_RES_CONTEXT_ERRAn incorrect or unsupported context is providedProvide a valid context