A simple combined PRNG based on permutation polynomials mod 2**n

If a permutation polynomial mod 2**n is employed as a PRNG, it is well
known that the lower order bits of the sequence of the binary words
output are fairly poor statistically. On the other hand, for values of
n that are not too small, the higher order bits are very satisfactory.
Extensive testing up to n=256 indicates that as a rule only the 22
lower order bits of the words output are poor. This empirical evidence
is in good conformance to a recent rigorous theoretical result obtained
by Emil Lerner in his PhD research work, who showed that the sequence
of the higher order bits of the outputs of such permutation polynomials
are very uniformly distributed.

The basic idea of the present scheme of pseudo-random bits generation
is that, if one employs two such PRNGs, lets one of them be rotated by
n/2 bits and xor both together, then the good bits of of the outputs of
each should be able to compensate the poor bits of the other. Test
statistics for the case n=32 show that the correctness of our idea is
clearly verified, though there are yet a couple of values that lie
outside the desired confidence interval [7.178, 7.189] due to the fact
that, for n=32, in the outputs of the constituent PRNGs more than one
half of the bits are poor and thus this large defect can't therefore be
expected to be completely compensated. For larger values of n, e.g.
n=64, the above mentioned cause of troubles no longer exists and the
test statistics of all individual bits of the xor-combined output are
entirely satisfactory.

Implementation of the scheme is straightforward. A Python code can be
found in: http://s13.zetaboards.com/Crypto/topic/7355166/1/

M. K. Shen
9/22/2016 8:43:44 PM
comp.security.firewalls 10672 articles. 0 followers. dfinc1988 (97) is leader. Post Follow

1 Replies

Similar Articles

[PageSpeed] 54

A new version 3.1 has been released.

M. K. Shen
9/25/2016 9:36:30 PM