ATECC608 TFLXTLS SECURE PROVISIONING PROCESS

Microchip offers Secure Provisioning Services for its security solutions before shipment. To leverage this service, secure exchange process is required between customers and Microchip Hardware Secure Modules (HSM). The process starts with requesting a unique custom Part Number, a manufacturing ID (MAN-ID - optional: for Custom PKI), Certificate Signing Request (CSR - for Custom PKI) and the HSM encryption keys (unique per project) through the Microchip Technical Support Portal.
Refer to the Secure Provisioning Guide for detailed steps of the secure sub-system configuration and secure exchange process.

Select Use Cases :

    TrustFLEX XML Generator

    Choose TrustFLEX device interface:



    Click on table rows for more info.

    Slot Number Slot Use-case Description Slot Property
    Slot 0 Primary private key Primary authentication key Permanent, Ext Sign, ECDH
    SLOT 0
    Slot Description:
    It's permanent to support a "factory reset" option where the original credentials are always available. It also prevents Denial-Of-Service attacks where the key is changed, either intentionally or by accident.

    Provisioning:
    Private key is generated and locked, no further modifications can be made to the slot.



    Slot 1 Internal sign private key Private key that can only be used to attest internal keys and state of the device.
    Can't be used to sign arbitrary messages.
    Permanent, Int Sign
    SLOT 1
    Slot Description:
    The internal sign key can support key attestation (proving a key is securely held in the ATECC608) during key rotation operations with the secondary private keys.

    Provisioning:
    Private key is generated and locked, no further modifications can be made to the slot. This slot can be used only for internal sign operation.



    Slot 2 Secondary private key 1 Secondary private key for other uses Updatable, Ext Sign, ECDH, Lockable
    SLOT 2
    Slot Description:
    These keys don't have a specified purpose, but allow authentication with additional systems using separate keys. The keys can be changed if needed or locked if the user wants them permanent. If the keys are changed, key attestation can performed with the Internal signer private key to prove the new key is in the ATECC608, if required.

    Provisioning:
    This private key can be updated internally using the GenKey command. Data to this slot is genererated internally, slot data is not user writable.



    Disable slot write:
    If the following checkbox is checked, the contents of the slot cannot be modified under any circumstances.
    Disable slot write

    Slot 3 Secondary private key 2 Secondary private key for other uses Updatable, Ext Sign, ECDH, Lockable
    SLOT 3
    Slot Description:
    These keys don't have a specified purpose, but allow authentication with additional systems using separate keys. The keys can be changed if needed or locked if the user wants them permanent. If the keys are changed, key attestation can performed with the Internal signer private key to prove the new key is in the ATECC608, if required.

    Provisioning:
    This private key can be updated internally using the GenKey command. Data to this slot is genererated internally, slot data is not user writable.



    Disable slot write:
    If the following checkbox is checked, the contents of the slot cannot be modified under any circumstances.
    Disable slot write

    Slot 4 Secondary private key 3 Secondary private key for other uses Updatable, Ext Sign, ECDH, Lockable
    SLOT 4
    Slot Description:
    These keys don't have a specified purpose, but allow authentication with additional systems using separate keys. The keys can be changed if needed or locked if the user wants them permanent. If the keys are changed, key attestation can performed with the Internal signer private key to prove the new key is in the ATECC608, if required.

    Provisioning:
    This private key can be updated internally using the GenKey command. Data to this slot is genererated internally, slot data is not user writable.



    Disable slot write:
    If the following checkbox is checked, the contents of the slot cannot be modified under any circumstances.
    Disable slot write

    Slot 5 Secret key Storage for a secret key No read, Encrypted write(6), Lockable, AES key
    SLOT 5
    Slot Description:
    This slot provides a storage location for a symmetric key to use with the ATECC608's symmetric key commands. The primary use case was to support secondary symmetric authentication. For example, many cloud providers perform symmetric authentication using HMAC SHA256, which could be done with a key in this slot. Slot can only be updated with an encrypted write using the IO protection key as a write key. The IO protection key must be setup prior to writing this slot. This slot is also marked as an AES slot so it can be used with the AES command if required.

    Provisioning:
    The data entered in the below step will be stored in the device slot during provisioning.

    Provisioning data input method:


    Disable slot write:
    If the following checkbox is checked, the contents of the slot cannot be modified under any circumstances.
    Disable slot write

    Slot 6 IO protection key Key used to protect the I2C bus communication (IO) of certain commands. Requires setup before use. No read, Clear write, Lockable
    SLOT 6
    Slot Description:
    Using the IO protection features is optional, but the IO protection key is saved here. The idea is that on first boot, a random key will be generated and saved to this slot and the MCU's NVM, then the slot locked. Locking may not be necessary, if key rotation is needed for this key, but it does open up the device to a DOS attack where the key is changed unexpectedly.

    Provisioning:
    The data entered in the below step will be stored into the device slot during provisioning.

    Provisioning data input method:


    Disable slot write:
    If the following checkbox is checked, the contents of the slot cannot be modified under any circumstances.
    Disable slot write

    Slot 7 Secure Boot digest Storage location for Secure Boot digest. This is an internal function, so no reads or writes are enabled. No read, No write
    SLOT 7
    Slot Description:
    This slot is used as a secure location to store the Secure Boot digest. This slot can be updated only through internal commands so no external read/write is possible on this slot.

    Provisioning:
    No external writes are allowed to this slot, data can be stored only using internal commands. This slot is not user writable.



    Slot 8 General data General public data storage (416 bytes) Clear read, Always write, Lockable
    SLOT 8
    Slot Description:
    This slot is used for public data storage, data can be written/read in clear text (Not encrypted). This slot should not be used for storing secrets.

    Provisioning:
    The data entered in the below step will be stored into the device slot during provisioning.

    Provisioning data input method:


    Disable slot write:
    If the following checkbox is checked, the contents of the slot cannot be modified under any circumstances.
    Disable slot write

    Slot 9 AES key Intermediate key storage for ECDH and KDF output No read, Always write, AES key
    SLOT 9
    Slot Description:
    This slot is intended as a destination for ECDH or KDF commands so the resulting key can be used with the AES command. No read, as ECDH and KDF can return the results directly, if the MCU requires it. Always write is required to be a destination for the commands. KeyConfig. PubInfo must be 1 to be a destination for KDF.

    Provisioning:
    The data entered in the below step will be stored into the device slot during provisioning.

    Provisioning data input method:


    Slot 10 Device compressed certificate Certificate primary public key in the Crypto Authentication compressed format Clear read, No write
    SLOT 10
    Slot Description:
    Device compressed certificate is stored in this slot. This slot is written with certificate signed by Microchip signers and root.

    It's permanent to support a "factory reset" option where the original credentials are always available. It also prevents Denial-Of-Service attacks where the cert is changed, either intentionally or by accident.

    Provisioning:
    The slot is provisioned by Microchip with its owm root and signers. There are two options that customers can choose from(Microchip Standard Certificate or Custom certificate).
    1. Microchip standard certificate: Certificate elements like name, date, country....... will be filled by Microchip. The certificate will be signed with Microchip signers.
    2. Custom Certificate: This option will allow the Customer to define some of the certificate elements like name and data.
    Select device certificate type:



    Notes on Custom Device Certificate
    1. Due to the way the certificates are stored/retrieved from the ECC608 device, using Custom certificates will require some knowledge on compressed certificates and certificate templates.
    2. The issue date only has a resolution of hours. Minutes and seconds are assumed to be zero. Refer to Compressed Certificate Definition for further details on the compressed certificates.
    3. The custom definition files (.c, .h) being generated assumes the size of Organization and Common Names matches with MCHP standard certificates.
    4. The Distinguished Names, both for the Issuer and for the Subject in all certificates must be comprised of an Organization Name and a Common Name entry, in that order.
    5. The Organization Name entered here gets padded and spaces replaced with '_' to match with MCHP standard certificates sizes.
    6. It is recommended to use default CommonName i.e. device serial prefixed with sn. If this needs to be different, its size would be matched to MCHP standard certificates with spaces replaced by '_'
    7. For the Device certificate Basic Constraints come before the Key Usage, following is the order of extensions:
      1. Basic Constraints: critical, CA:FALSE
      2. Key Usage: critical Digital Signature, Key Agreement
      3. Subject Key Identifier
      4. Authority Key Identifier
    Populate below to customize certificate fields:

       

    Slot 11 Signer public key Public key for the CA (signer) that signed the device cert Clear read, No write
    SLOT 11
    Slot Description:
    Signer public key is stored in this slot.

    It's permanent to support a "factory reset" option where the original credentials are always available. It also prevents Denial-Of-Service attacks where the cert is changed, either intentionally or by accident.

    Provisioning:
    The slot is provisioned by Microchip with the signer public key. Slot data is not user modifiable.



    Slot 12 Signer compressed certificate Certificate for the CA (signer) certificate for the device certificate in the CryptoAuthentication compressed format Clear read, No write
    SLOT 12
    Slot Description:
    Signer compressed certificate is stored in this slot.

    It's permanent to support a "factory reset" option where the original credentials are always available. It also prevents Denial-Of-Service attacks where the cert is changed, either intentionally or by accident.

    Provisioning:
    The slot is provisioned by Microchip's root key. There are two options that customers can choose from(Microchip Standard Certificate or Custom certificate).
    1. Microchip standard certificate: Certificate elements like name, date, country....... will be filled by Microchip. The certificate will be signed with Microchip root.
    2. Custom Certificate: This option will allow the Customer to define some of the certificate elements like name and data.
    Select certificate type:



    Notes on Custom Signer Certificate:
    1. Due to the way the certificates are stored/retrieved from the ECC608 device, using Custom certificates will require some knowledge on compressed certificates and certificate templates.
    2. The issue date only has a resolution of hours. Minutes and seconds are assumed to be zero. Refer to Compressed Certificate Definition for further details on the compressed certificates.
    3. The custom definition files (.c, .h) being generated assumes the length of Organization and Common Names matches with MCHP standard certificates.
    4. The Distinguished Names, both for the Issuer and for the Subject in all certificates must be comprised of an Organization Name and a Common Name entry, in that order
    5. The Organization Name entered here gets padded and spaces replaced with '_' to match MCHP standard certificates sizes.
    6. The Subject Common Name in the Signer certificate resp. the Issuer Common Name in the Device certificate gets padded and spaces replaced with '_' to match MCHP standard certificates sizes.
    7. The Signer certificates must contain exactly the following extensions in exactly the same order:
      1. Key Usage, critical: Digital Signature, Certificate Sign, CRL Sign
      2. Basic Constraints, critical: CA: TRUE, PATHLEN: 0
      3. Subject Key Identifier
      4. Authority Key Identifier
    Populate below to customize certificate fields:



    Slot 13 Parent public key or general data Parent public key for validating/invalidating the validated public key. Can also be used just as a public key or general data storage (72 bytes). Clear read, Always write, Lockable
    SLOT 13
    Slot Description:
    If the validated public key feature is required, then this is the public key of the validation authority (parent). Otherwise, this slot can be used as a normal public key (the Validated public key slot should be ignored in this use case), or for general data storage. If used as a validation authority public key, the slot must be locked after writing the key. For other use-cases locking is dependent on the application.

    Provisioning:
    The data entered in the below step will be stored into the device slot during provisioning.

    Provisioning data input method:



    Disable slot write:
    If the following checkbox is checked, the contents of the slot cannot be modified under any circumstances.
    Disable slot write

    Slot 14 Validated public key Validated public key cannot be used (verify command) or changed without authorization via the parent public key. Clear read, Always write, Validated (13)
    SLOT 14
    Slot Description:
    If the validated public key feature is required, then that public key is stored here. This allows one to have an important public key be updatable with through the use of a (off-chip) validation authority. Slot defaults to unvalidated, so it is writable in the clear until validated. As such, it could be used for general data storage as a last resort. Last resort is because the first nibble is used to store the validation status, so the first byte would have to be ignore in that case, which is a strange requirement to try and express.

    Provisioning:
    The data entered in the below step will be stored into the device slot during provisioning.

    Provisioning data input method:




    Slot 15 Secure Boot public key Secure Boot public key Clear read, Always write, Lockable
    SLOT 15
    Slot Description:
    Secure Boot public key will be stored in this slot.

    Provisioning:
    The data entered in the below step will be stored into the device slot during provisioning.

    Provisioning data input method:


    TrustFLEX Secure Boot Options:
    Using the following option private key in Slot0 can be set to require a Secure Boot before this key will be authorized for use. If the following option is enabled, user will be able to use Slot0 private key only after a successfull secuerboot operation. The slot access policy changes for Slot0 ties to the persistent latch being set.



    Disable slot write:
    If the following checkbox is checked, the contents of the slot cannot be modified under any circumstances.
    Disable slot write

    Custom root (or intermediate CA) Information





    Custom root (or intermediate CA) public key is needed to verify the full certificate chain (device-signer-root) during production.
    Choose provisioning data input method(Provide public key):




    Part Number details
    Provide the Part Number received from MCHP in the support system. For prototyping, one can leave these blank.




    Prototyping

    The prototype package is for prototyping and learning only. Do NOT share the prototype package because secrets are in plain text. Alternatively, you may use dummy secrets.
    Click here to provision the ATECC608-TFLXTLSx-PROTO with the package generated from "Generate provisioning Package - Prototype". Make sure to load the generated zip file.

    Production

    Click here to generate the Secure Exchange Package then upload it to Microchip Provisioning Service (through Microchip Technical Support Portal). You will be prompted to add the HSM encryption keys when starting the generation process.
    Both "Generate Provisioning Package" buttons compile all the data provided in the above slots into a zip package containing .ENC.xml/.xml, .c, .h and certificate files.
    1. '.xml' file contains device configuration and user data to be loaded into the ATECC608-TFLXTLS slots. In the prototyping package, all user data are in unencrypted plain text whereas in the production package, user data are encrypted.
    2. '.c, .h' are 'C' source files that are meant to be used with CryptoAuthLib. These files are required to use certificates in CryptoAuthLib.
    3. Certificate files are generated for verification purpose.



    MICROCHIP

    This text will be replaced