The algorithm used in the PRNG for the AdaCore implementation is called the
Mersenne Twister
(created in the 90's and widely used and touted as being a strong for all sorts of applications).
Unfortunately, whilst the 'randomness' quality is high the generation of a random number is
predicable. There are several references available that expose this fact, and also that
the
Mersenne Twister algorithm not be used in situations where cryptographical security is a
priority. In fact the
Mersenne Twister is now classified as a
non-crypto PRNG.
These two reasons in combination with the ARM requirement that initialisation can be to
a time-
dependent state, and that initialisation being the default in the AdaCore implementation when
the random number pool is small, enables VT's finding:
ARM (A.5.2 - 26)
All generators are implicitly initialised to an unspecified state that does not vary
from one program execution to another, they may also be explicitly initialised, or re-initialised, to
a time-dependent state, to a previously saved state, or to a state uniquely denoted by an integer
value.
All that being said, there are certainly ways forward regarding improvement(s) to PRNG in
eVACS. My initial thinking is that the best way forward is to use/integrate PRNG functionality
available within the Linux O/S. The outcome should be a new Ada module to be incorporated
into eVACS.
I believe we should discuss such matters before I dive in deeper or activate effort to replace the
existing PRGN with something significantly better.
There is also the matter of my last email regarding responses by me to Vanessa Teague.
Is it possible to meet today?
Regards.
Clive.
Dr Clive Boughton
Software Improvements
GPO Box 1928
Canberra ACT 2601
Australia
Street address:
97 Bankers Road, NSW 2621
Australia
Mobile Phone:
Telephone: +61 (0)2 6230 3195