LPC55S69 : PUF usage

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

LPC55S69 : PUF usage

1,095 Views
EugeneHiihtaja
Senior Contributor I

Hello !

1.

Do I understand right and PUF can work with CoreClock up to 150 Mhz ?

Or some limitation available  like with Flash memory operations ?

2.

It is not so clear about recovery of PUF after PowerDown low power mode ?

Should I execute Init and Start again or just enable clock of PUF ?

Does activation code retains in PUF SRAM ? Or it should be reloaded from storage again ?

What is minimal recovery sequence ?

Full PUF initialization might take a lot of time and may be it should not reinit after every PowerDown cycle, only when it really need.

3. What kind of Keys should be provisioned and loaded to PUF for activate key wrapping functionality ?

   I have own keys what need to be wrapped and reconstructed back and look for minimal PUF initialization sequence.

Thank you !

Regards,

Eugene

Labels (1)
0 Kudos
7 Replies

940 Views
ZhangJennie
NXP TechSupport
NXP TechSupport

Hi 

PUF can work under coreclock as 150Mhz.

According to UM, PUF keys for AES and PRINCE, if already loaded, are retained during deep-sleep and power-down but not retained during deep-power down. The CTRL, CFG, KEYLOCK, KEYENABLE, KEYRESET, IDBLK_L/H, IDXBLK__DP/H_DP, SHIFT_STATUS registers are preserved and not reset during power-down.

You want to use PUF to store key, thus the PUF encrypts 64-bit to 4096-bit KEY into KEY CODE 

Have a nice day,

Jun Zhang

0 Kudos

940 Views
EugeneHiihtaja
Senior Contributor I

Hi ZhangJennie‌ !

But what about minimal reinitialization after PowerDown mode. Looks like re enabling of PUF clock is not enough and PUF_Init API

execute full sequence. If some register preserved, some fast reinitialization can be done.

Is this so ?

Regards,

Eugene

0 Kudos

940 Views
ZhangJennie
NXP TechSupport
NXP TechSupport

From comprehension of the UM, enable PUF clock is enough after power down mode. It's not necessary to reinitialize PUF. 

Did you make code test it? Could you be more specific about the whole test process?

0 Kudos

940 Views
EugeneHiihtaja
Senior Contributor I

Hi ZhangJennie‌ !

It is not enough for sure.

If I enable clock and read major registers they all 0.

PUF VERSION 0x00000000
PUF STAT 0x00000000, ALLOW 0x00000000, PWRCTRL 0x00000000


After full reinitialization there are back and PUF ready for Key Set/Get operations:

PUF VERSION 0x18A70101
PUF STAT 0x00000002, ALLOW 0x0000000C, PWRCTRL 0x00000003

I try to skip RESET for example. Nothing helps.

Only PUF_Init and PUF Start after that.

I have enrolled PUF via ISP and secure boot and etc is not used yet.

But I should know fast recover sequence after PowerDown mode what dosn't cause any impact for standard intrinsic keys.

I think a lot of peoples might have similar use case.

Regards,

Eugene

0 Kudos

940 Views
ZhangJennie
NXP TechSupport
NXP TechSupport

Hi Eugene

According to Table 280. Power domain supply, Physically Unclonable Function (PUF) is under PD_CORE power domains. According to Table 281. During power down mode, PD_CORE is OFF. Thus we can conclude PUF is off during power down mode. Thus we need reinitialize it after wake-up.

 pastedImage_1.png

PUF keys for AES and PRINCE, if already loaded, are retained during deep-sleep and power-down, but PUF itself is off during power down mode.


Have a great day,
Jun Zhang

-------------------------------------------------------------------------------
Note:
- If this post answers your question, please click the "Mark Correct" button. Thank you!

- We are following threads for 7 weeks after the last post, later replies are ignored
Please open a new thread and refer to the closed one, if you have a related question at a later point in time.
-------------------------------------------------------------------------------

0 Kudos

940 Views
EugeneHiihtaja
Senior Contributor I

Hi ZhangJennie‌ !

I think if "PUF keys for AES and PRINCE retained" somewhere, it is not a problem to reinitialize it when PUF is need for user keys.

But 2 problems appears.

Initialization of PUF might take up to 400 ms in worst ambient conditions what are not specified so well.

I can see it take quite short time and if it can take so long it can be problem.

How properly to identify if PUF is not initialized yet ?

I think I can read register as usually, but may be enabling of PUF clock is need as well.

Is this so ?

CLOCK_EnableClock(kCLOCK_Puf);

if (!PUF_IsGetKeyAllowed(PUF))
{

// Full PUF reinitialization
  .....
}

Regards,

Eugene

0 Kudos

940 Views
ZhangJennie
NXP TechSupport
NXP TechSupport

As we must reinitialize it after wake-up from power down, you just need initialize it directly.

It's also ok to reinitialize PUF as your code.

0 Kudos