sources of "uniqueness"/entropy on embedded systems

Viewed 1865

I have an embedded system. What I would like for it to do when it powers up or otherwise resets, is to generate a unique ID, so that on different restarts a different unique ID is generated with high probability.

It does not have access to a real-time clock, but it does have access to an ADC and a UART. I am wondering if there is a decent way to gather entropy from these sources to generate a unique ID. I am vaguely familiar with Yarrow. Is there a good way to use this?

Unfortunately I do not have any noise sources of predictable characteristics; the ADC is connected to a number of relatively-low-noise inputs, so I suppose I could just use the least-significant bits of the ADC as inputs.

edit: for what it's worth, this is the TI TMS320F28335 processor.


update/clarification: I was looking for a method in software of gathering entropy. I found another way to solve my problem, so in a way, my question was a moot point, but I am still looking for guidance on specific software solutions to gather entropy from low-entropy sources like least-significant bits of the ADC and system timing for receiving UART characters.

5 Answers

See also Fortuna, described in Practical Cryptography by Niels Ferguson and Bruce Schneier. Although, both Yarrow and Fortuna might be too heavy-weight for an embedded system.

Unlike Yarrow, Fortuna doesn't require you to estimate the entropy of your random sources.

Related