# [Cryptography] [RNG] question about the recent improvment of generator polynomials in linux

Hannes Frederic Sowa hannes at stressinduktion.org
Mon Feb 17 10:34:59 EST 2014

```[Sorry for double posting. I think, I should have sent this to the crypto
list, too.]

Hi all!

I have a question regarding this recent commit to the linux kernel:

https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/drivers/char/random.c?id=6e9fa2c8a630e6d0882828012431038abce285b9

It is referencing this paper: http://eprint.iacr.org/2012/251.pdf

I played around with the new/fixed polynomial in sage a bit but could
find this polynomial to always be reduceable:

===
sage: F = GF(2, 'c')
sage: F.<t> = PolynomialRing(F, 't')
sage: P = t^128 + t^104 + t^76 + t^51 + t^25 + t + 1
sage: Q = t^32+t^26+t^23+t^22+t^16+t^12+t^11+t^10+t^8+t^7+t^5+t^4+t^2+t+1
sage: Z = Q^3 * (P - 1) + 1
sage: Z.is_irreducible()
False
===
sage: F = GF(2^32, 'c')
sage: F.<t> = PolynomialRing(F, 't')
sage: P = t^128 + t^104 + t^76 + t^51 + t^25 + t + 1
sage: Q = t^32+t^26+t^23+t^22+t^16+t^12+t^11+t^10+t^8+t^7+t^5+t^4+t^2+t+1
sage: Z = Q^3 * (P - 1) + 1
sage: Z.is_irreducible()
False
===
sage: F = GF(2^32, 'c')
sage: F.<t> = PolynomialRing(F, 't')
sage: P = t^128 + t^104 + t^76 + t^51 + t^25 + t + 1
sage: Q = t^32+t^26+t^23+t^22+t^16+t^12+t^11+t^10+t^8+t^7+t^5+t^4+t^2+t+1
sage: Z = (Q^3).substitute({t:P - 1}) + 1
sage: Z.is_irreducible()
False
===
...

What am I missing? I guess I have misunderstood something.

Thanks,

Hannes

```