Intel® SoC FPGA Embedded Development Suite
Support for SoC FPGA Software Development, SoC FPGA HPS Architecture, HPS SoC Boot and Configuration, Operating Systems
567 Discussions

Arria10 Secure Boot : unable to boot SPL FUSE

ChristianMS
Novice
4,572 Views

On the Arria10, a signed SPL using the FUSE method does not boot at all, but it does boot when using the USER method. The behavior is the same as if we had not programmed the fuses.


Details :

Using the alt_authtool.py utility found in the repository, the SPL is signed.
The tool accepts the following options:

- fuse: embed root pubkey in image. BootROM verifies its hash against device fuses.
- fpga: fetch trusted root pubkey from location in FPGA memory.
- user: embed root pubkey in image. BootROM does not verify.

 

read EC key
Private-Key: (256 bit)
priv:
9e:e1:55:ec:b6:be:bd:15:22:80:73:3a:66:ee:07:
fa:58:26:1f:d0:13:c8:e5:6a:b0:05:bc:23:f7:dc:
58:46
pub:
04:0d:b3:cf:29:e9:54:60:7a:1c:d2:99:ca:5e:dd:
d0:72:98:0c:5f:89:33:2c:16:35:24:4f:65:ad:ba:
23:45:9d:ec:5e:22:06:9f:b6:b2:bd:d0:19:8c:53:
aa:af:20:1c:df:72:0f:02:e9:44:b0:86:1a:d5:b5:
7a:2c:81:65:dd
ASN1 OID: prime256v1
NIST CURVE: P-256

 

First, we generate the SPL using the user option, then follow the Application Note, and the Arria10 board boots correctly.

python3 -B -E $(which alt_authtool.py) sign -t user -k ${ROOT_KEY_PEM} -i ${DEPLOYDIR}/u-boot-spl-public-key.sfp -o ${DEPLOYDIR}/u-boot-spl-public-key-signed.sfp --fuseout ${DEPLOYDIR}/u-boot-spl-public-key-signed.fuse

 

The following text is displayed:

SHA256 digest of root public key: 3dfe63cab8b3657db2ebdeaca234f0d6ec3744a3905d7e04dfa63a5a6721dfe7

 

==> The SPL with USER option boots correctly.

 

Next, we generate the SPL using the fuse option. With this, the FPGA should only be able to boot if the fuses are programmed (volatile or non-volatile). When alt_authtool.py is executed, it displays the SHA256 hash of the public key. We use this public key to construct a file containing:

key1 3DFE63CAB8B3657DB2EBDEACA234F0D6EC3744A3905D7E04DFA63A5A6721DFE7

 

Using this key file, we generate an EKP file with Quartus (compressed into a zip and attached to the present message).

In the end, using the Quartus Prime Programmer, we program the Arria10 board with EKP file (this takes less than one second).

Capture d'écran 2025-07-15 100249.png

Capture d'écran 2025-07-15 100852.png

Capture d'écran 2025-07-15 111142.png

Immediately after programming the volatile fuses, the board resets (the power supply current drops from 1A to 0.8A, and then returns to 1A), and the fan stops and restarts.

==> However, on the serial console, the SPL signed with the FUSE method does not display any messages, and neither U-Boot nor the kernel is loaded.

 

On the other hand, the SPL signed with the USER method is still able to boot, even with the volatile fuses programmed (boot messages appear, and both U-Boot and the kernel are loaded).

Question:

Can you help us to solve this boot issue with the FUSE method ? The behavior is like volatile fuses are not programmed !

 

If you need more information and details, please tell us.

 

Thanks in advance.

 

Christian & Baptiste

0 Kudos
18 Replies
nareshrkumar
Employee
4,481 Views

Hi Christian

 

Thanks for bringing the issue to our notice.

 

I have internally started working on it; will keep you posted on the progress.

 

Kind Regards

Naresh

0 Kudos
nareshrkumar
Employee
4,244 Views

Hi Christian

 


Immediately after programming the volatile fuses, the board resets (the power supply current drops from 1A to 0.8A, and then returns to 1A), and the fan stops and restarts.

 


Preliminary impressions of the issue are, since the board resets after programming the volatile fuses, the saved hash is also lost. Hence, the hash comparison step fails, leading to no prints on the console.

 

So, basically we need to avoid reset once the fuse is flashed, this I believe is happening because reset is initiated by the Quartus tool or your programmer.

 

There are 2 points for us to check, one with Quartus tool and the other with your programmer:

  1. From my end, I am checking whether Quartus is initiating the reset, and if there is a way to avoid it.
  2. I believe you are using JTAG as your programmer, can you please check if the programmer is initiating the reset?

 

Thanks

Naresh

0 Kudos
ChristianMS
Novice
4,039 Views

Thank you for your involvement.

 

  1. Just for your information, I was using the Programmer from Quartus Prime 23.1 (Standard Edition), while the EKP file was generated using Quartus Prime 24.2 (Pro Edition). I will try installing the same version to ensure compatibility.
  2. We are using the "JTAG Altera USB Blaster." We’ll investigate the reset pin behavior, but if the reset does not occur, there should be an alternative way to boot the SPL (such as jumping to the entry address directly).

 

Best regards,

Christian & Baptiste

0 Kudos
ThFo
Beginner
3,839 Views

Hi @nareshrkumar,

 

Thanks you for your feedback.

I'm working with Christian and Baptiste. Without further information, the project, that we working on is currently at a deadlock situation.
Do you have new information about how to bypass the reset that can be triggered by quartus ?

- Have you encountered/known issues with certain Quartus version ? (standard, pro or specific version number)
- If the USB blaster forces the reset, is there a method to bypass it using Quartus?


Thanks,
Théo

0 Kudos
nareshrkumar
Employee
3,625 Views

Hi Theo, Christian and Baptiste

 

Thank you for the information shared. 

 

As of today, I am not aware of any known issues with a Quartus version.

 

As the issue involves multiple components, U-Boot, Quartus, programmer and signing tool etc., I am working with different teams internally to get definitive information.  Please give me some more time, I will update you on the status.

 

Thanks

Naresh

 

0 Kudos
ThFo
Beginner
3,607 Views

Hi nareshrkumar,

 

Thank you for your help, we are still listening.

 

Christian & Baptiste & Théo

0 Kudos
nareshrkumar
Employee
3,252 Views

Hi Theo, Christian and Baptiste

 

Thank you for the wait.

 

I have collected the information relevant to various use cases for Secure Boot in A10 but I need the below information to narrow it to your use case and help with the same.

 

My questions:

1. What is your objective with the Secure Boot in A10, is it for image authentication, encryption or both?

2. Also, can you please share all the steps you have run for the "fuse" use case?

 

Thanks

Naresh

0 Kudos
ThFo
Beginner
3,010 Views

Hi @nareshrkumar , @Jeet14 

 

Thank you for your help

 

About your previous questions :

1. What is your objective with the Secure Boot in A10, is it for image authentication, encryption or both?
Our objective is to enable image authentification only.

2. Also, can you please share all the steps you have run for the "fuse" use case?
The steps followed for the "fuse" use case are identical to those for "user" mode (first post), except that when executing "alt_authtool.py", we use the "sign -t fuse" option instead of "sign -t user".

 

If you have any further questions, please don't hesitate to ask.

 

Thanks,

Christian & Baptiste & Théo

0 Kudos
nareshrkumar
Employee
2,985 Views

Hi Christian & Baptiste & Théo

 

Thanks for sharing the information.

 

As you might already know A10 Secure boot supports both authentication and encryption use cases. We can use one of them or both of them based on the security needs.

Now,  a) Image Authentication and Verification key can be sourced in three ways, (options here refer to python script ones):

  1. User option --> primarily used for testing purposes, volatile and reprogrammable; public key hash check is not performed by Secure Manager in HPS
  2. Fuse option --> Key Authorization Key (KAK) hash is programmed in User Access Fuses (UAF), non-volatile and one time programmable (OTP)
  3. FPGA option --> fetched from FPGA OCRAM

Note: Need to use “sign”  option with the python tool for image authentication use cases

b) Image Encryption and Decryption key can be stored as:

    1. Volatile --> external battery source must be connected to VccBat to retain the key during reset, reprogrammable
    2. Non-volatile --> fuses blown and OTP

Note: Need to use “encrypt”  option with the python tool for image encryption use cases

 

You have mentioned you are using "sign" and "fuse" options with the python tool, so I am confused why you are loading ekp file to the board?

 

If your intention is to use authentication --> fuse option described above, you need to copy SHA256 of the public key to a text file and load it to the board. 

The KAK key hash has a defined format by Altera. I  need to check with the team to share this information, please let me know if this is your requirement.

 

Here are some documentation resources which might help you:

  1. AN 759: Using Secure Boot in Intel® Arria® 10 SoC Devices 
  2. A10 Technical Reference Manual --> refer to Chapter 7 SoC Security

 

Kind Regards

Naresh

 

 

 

 

 

0 Kudos
ThFo
Beginner
2,864 Views

Hello,

Thank you very much for your answer.
We are starting to understand that we misunderstood the process…

We indeed want to only use *authentication* (without encryption).

We succeeded in signing our SPL, and booting it. For this, we use the 'sign' and '-user' options.
This validates the fact that our SPL is correctly signed with our key, but as expected, does NOT check that the key is trusted (because its hash is not verified).

We thought that the EKP file could be used to inject the SHA256 hash of the signing key into *volatile* memory, so that we could validate the whole process before flashing in OTP. In fact, your explanation seems to confirm that the EKP file is only useful to inject key used when encrypted SPL is selected. In our case, the EKP file seems useless.

Question 1: Can you confirm this understanding?



If this is the case, we understand that the next step in our case is to flash the OTP fuses for authentication only:
- Flashing the SHA256 hash of the signing key (i.e., the KAK key hash?)
- Flashing the fuses that says that the signature must be check (bit authen_en_f, kak_len_f, kak_src_f, ...)

Question 2 : Can you confirm that? How can we do that?


Best regards,

Christian & Baptiste & Théo

0 Kudos
nareshrkumar
Employee
2,590 Views

Hi Christian & Baptiste & Théo

 

Thank you for your response.

 

Your understanding with respect to Question 1 is correct.

 

Regarding your further questions related to flashing hash and fuse bits, I have already informed the concerned people at Altera. I am waiting for their response, once I have I will share it at the earliest.

 

Kind Regards

Naresh

0 Kudos
nareshrkumar
Employee
2,204 Views

Hi Christian & Baptiste & Théo

 

I got information saying, we need NDA to share the secure fuse flashing information. If you don't mind, can you please share your company name and whether it has NDA with Altera?

 

Meanwhile, I have asked for a contact at Altera to connect with your team on email and help you with the NDA and sharing of fuse information.

 

Thank you for your patience

Naresh

0 Kudos
nareshrkumar
Employee
2,107 Views

Hi Christian & Baptiste & Théo

 

I have got confirmation from my team that they have initiated communication via email to help you with NDA and sharing the relevant fuse flashing information accordingly. I believe you should have received the email by now.

 

Hope this helps!

 

Kind Regards

Naresh

0 Kudos
ThFo
Beginner
1,595 Views

Hello 

 

Sorry for the delay, we were on vacation.
We sent a response to the email regarding the NDA on the 19th (Tuesday) and are now waiting for the document.

 

Best regards,

Christian & Baptiste & Théo

0 Kudos
ThFo
Beginner
1,007 Views

Hello @nareshrkumar , @Jeet14,

 

We haven’t received much information about the NDA since the email sent on the 19th. Do you have any updates regarding the NDA document?

 

Best regards,

Christian & Baptiste & Théo

0 Kudos
nareshrkumar
Employee
776 Views

Hi Christian & Baptiste & Théo

 

I will check with the respective team and get back to you.

 

Kind Regards

Naresh

0 Kudos
nareshrkumar
Employee
503 Views

Hi Christian & Baptiste & Théo

 

I have got a response from the team that they received your NDA and currently, it is being validated. The team has been notified about the urgency and I have been informed, they will respond to you at the earliest; it could be as early as this week.

 

Thank you for your patience

Naresh

0 Kudos
Jeet14
Employee
3,034 Views

Hi Theo & Christian,


Any update on the previous post by Naresh Kumar.


Regards

Tiwari


0 Kudos
Reply