Black/PUF Keys - Black/PUF Keys - 2025.2 English - UG1283

Bootgen User Guide (UG1283)

Document_ID
UG1283
Release_Date
2025-11-20
Version
2025.2 English

The Versal AI Edge Series Gen 2and Versal Prime Series Gen 2 devices supports Black key encryption using a PUF (Physically Unclonable Function) derived Key Encryption Key (KEK). This secure boot mechanism ensures that user keys are never exposed directly, as they are encrypted using the PUF-based KEK. The encrypted keys (black keys) can be stored in eFUSE or embedded in the boot header.

The following is a Bootgen BIF file example illustrating the use of black keys with PUF for a secure boot configuration:
bif:
{
    bh_kek_iv   = black_iv.txt           // Initialization vector for black key encryption
    bh_keyfile  = black_key.txt          // Encrypted (black) key file
    puf_file    = pufdata.txt            // PUF registration data
    boot_config {puf4kmode}              // Enable 4K mode for PUF
    image
    {
        {type=bootloader, encryption=aes, keysrc=bh_blk_key, pufhd_bh,
         aeskeyfile=red_grey.nky, file=plm.elf}
        {type=pmcdata, load=0xf2000000, aeskeyfile=pmcdata.nky,
         file=pmc_data.cdo}
        {core=psm, file=psm.elf}
        {type=cdo, file=ps_data.cdo}
        {type=cdo, file=subsystem.cdo}
        {core=a72-0, exception_level=el-3, file=hello_world.elf}
    }
}
  • bh_kek_iv: Initialization vector used to encrypt the KEK with the PUF.
  • bh_keyfile: The file containing the encrypted (black) user key.
  • puf_file: Contains PUF data generated during enrollment.
  • boot_config {puf4kmode}: Enables 4 KB mode for PUF operations.
  • keysrc=bh_blk_key: Indicates the bootloader must use a black key sourced from PUF.
  • pufhd_bh: Specifies that the PUF header is embedded in the boot header.