LPC80X | looking for Ture random function

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 

LPC80X | looking for Ture random function

1,792 次查看
shai_b
Senior Contributor II

Dear team,

I am working on LPC802 and I was looking for secure random function (should provide unique random number each MCU).

I know on the LPC was an RNG driver which provide with true random function, but I did not found such a driver into the lpc802 SDK.

Can you please advise back how do I perform such true random function (with unique seed) with lpc802?

Waiting for your kind feedback, thanks in advance.

Best regards,

Shai Berman

标签 (1)
标记 (1)
0 项奖励
回复
5 回复数

1,659 次查看
sanders7284
Contributor III

Could you possibly use the Unique_ID which each IC has? 

u32 NXP_Unique_ID;

NXP_Unique_ID = Chip_IAP_ReadUID(); //32 bit UID

Byte_ID_3 = NXP_Unique_ID >> 24; //3
Byte_ID_2 = NXP_Unique_ID >> 16; //2
Byte_ID_1 = NXP_Unique_ID >> 8; //1
Byte_ID_0 = NXP_Unique_ID; //0

Regards Sanders7284

1,652 次查看
shai_b
Senior Contributor II

@sanders7284 ,

This sounds like a good option to get a kinda random number so I could seed my rand() function with different seed numbers for each MCU.

Once I will implement that I will let you know if it works.

Thanks a lot.

Kind regards,

Shai

0 项奖励
回复

1,780 次查看
xiangjun_rong
NXP TechSupport
NXP TechSupport

Hi, Shai,

Regarding the Random Number Generation, there are two methods to generate the RND number, one is to use RNG hardware module, another is to use pure firmware. But the LPC8xx neither have the RNG module from hardware perspective,  nor have the source code or library in SDK.

I have checked the mbedtls library which is only for Cortex-M4, it has implemented the rand() function.

I attach the example of mbedtls based on LPC54628 which uses Cortex-M4 core.

 

xiangjun_rong_0-1664340753636.png

BR

XiangJun Rong

 

0 项奖励
回复

1,724 次查看
shai_b
Senior Contributor II

@xiangjun_rong ,

Thanks for your comments but using rand(); function will not produce a real true random number.

It's a kind of hash technique that generates a new number (with wrapping) based on the given seed number but it will produce the same "random" number each time.

it's not good for my use case. thanks again for your input.

KR,

Shai

0 项奖励
回复

1,715 次查看
frank_m
Senior Contributor III

A really random value is difficult to achieve, especially on a MCU with relatively little resources.

One of my former companies used noisy input of an ADC for this purpose. This was a 8-bit architecture, though.

Here an article from another vendor as example, for a Cortex M : https://siliconlabs.force.com/community/s/article/generating-an-8-bit-random-number-using-adc?langua...