[Cryptech Tech] Hardware entropy

Stephan Mueller smueller at chronox.de
Tue May 27 05:54:16 UTC 2014


Am Freitag, 23. Mai 2014, 15:43:07 schrieb Joachim Strömbergson:

Hi Bernd,

> Aloha!
> 
> Joachim Strömbergson wrote:
> > Short answer to your latest emails: Cool and thanks for doing this.
> > I will try to recreate the results when I get back to my dev boards.
> 
> Short update on my implementation test:
> 
> I've created a FPGA project for testing Berndts FPGA entropy source and
> integrate it into the coretest system:
> 
> https://github.com/secworks/coretest_bpaysan_entropy
> 
I looked a bit into the code and found a number of questions:

- rosc.v: Unless I miss something, but it seems that you have only one 
inverter here. Is that correct?

- entropy.v: the module instantiation with the following code seems to imply 
to generate 16 times two ring oscillators, correct? Or do you build up the 
inverter chain here (but if so, how come that you have an even number of 
inverters)?

  genvar i;
  generate
    for(i=0; i<16; i=i+1) begin: tworoscs
      rosc px(clk, nreset, rng1, rng2, p[i]);
      rosc nx(clk, nreset, rng1, rng2, n[i]);
    end
  endgenerate

Now, if I understand the code correctly, you have 32 independent inverters 
which each is used to sample one bit, right? If so, how do you counter the 
general problem that the inverters start to swing in harmony with a severe 
lack in entropy?

Shouldn't there be, say, one ring oscillator on the chip only? Or if there are 
multiple, their frequencies should be relative prime to each other to prevent 
the harmony?

Another question which I could not figure out: What is the frequency of the 
inverter (chain) and at which frequency does the sampling occur? I would 
expect that there is a high oversampling rate (i.e. the inverters run at a 
much higher frequency than the sampling code).

How do you kickstart the inverters in case they do not start swinging 
immediately? Shouldn't there be some kind of dead-test or a wait for some time 
or wait for a number of ring oscillator swings before sampling the output?


Ciao
Stephan
-- 
| Cui bono? |


More information about the Tech mailing list