AES-GCM also supports the rolling keys feature, which represents the entire encrypted image using smaller AES-encrypted blocks or modules. The system encrypts each module with its own unique key. The device stores the initial key at the key source, while the previous module encrypts (wraps) the keys for each successive module. Bootgen can generate boot images with rolling keys. The BIF attribute blocks specifies the pattern to create multiple smaller blocks for encryption.
image:
{
[keysrc_encryption] bbram_red_key
[
bootloader,
destination_cpu = a53-0,
encryption = aes,
aeskeyfile = aes_p1.nky,
blocks = 1024(2);2048;4096(2);8192(2);4096;2048;1024
] fsbl.elf
[
destination_cpu = a53-3,
encryption = aes,
aeskeyfile = aes_p2.nky,
blocks = 4096(1);1024
] hello.elf
}
Note:
- Number of keys in the key file should always be equal to the
number of blocks to be encrypted.
- If the number of keys are less than the number of blocks to be encrypted, Bootgen returns an error.
- If the number of keys are more than the number of blocks to be encrypted, Bootgen ignores (does not read) the extra keys.
- If you want to specify multiple Key/IV Pairs, you should specify
no. of blocks + 1pairs- The extra Key/IV pair is to encrypt the secure header.
- Do not repeat any Key/IV pair in any of the AES key files in a single BIF. Only Key0 and IV0 may repeat.