Binary verification of application image before loading it into DRAM Working on a boot process where the application image has to be verified before loading it into DRAM.

We found 2 strategies;


RSA-1024, where the private key is secure in premises and the only public key is distributed with out boards. (Is it better if up-gradable to RSA-2048?)
AES-256 with CMAC, same key available both board and premise.


As they are symmetric and asymmetric, it is difficult to compare them directly. Like to understand, which is best suited for binary signature verification during boot process?
The obvious flaw of approach 2. is that you need the same key to sign and verify.
This means that whoever reverse-engineers one device and gets out the verification key can now sign their own application images which will be accepted as genuine by other devices.

The standard way of application signing is by using asymmetric algorithms (RSA-2048 is a minimum, or ECDSA-256). That way the device has only a public key (hopefully stored in a read-only memory so that it's not replaceable) and no one is able to sign application images even if devices get reverse engineered.