Unfamiliar Numbers

The Known Number Oracle (KNO) provides a simple service: you tell it a number, and in return it tells you whether it has been told the same number before. The KNO does this for 128-bit binary numbers. site

One application of the KNO is for testing of random number generators. It is not uncommon to use even cruder tests, such as checking for the RNG output bits being "stuck at zero" or "stuck at one". The KNO will not only detect these failures, but also any other simple repeating pattern, as well as many other types of flaws.

To guard against false claims of knowledge, you interact with the KNO using a two-phase protocol based on hash functions. When you ask the KNO whether it knows a number, you don't send it the actual number at first, but only a hash of it.

The KNO uses a simple commitment scheme where the proof is split into two parts, an initial commitment that is provided in return for the hash, and a final reveal that is only provided in return for the actual number. For details, see the KNO Protocol Specification. page

The KNO keeps its known numbers indexed by their hashes, so if KNO already knows the number, it can quickly find it based on the hash, and will respond with a proof of its knowledge. If it does not, it will be unable to supply a valid proof.

Let's test your web browser.

Our web browser's built-in RNG generated the 128-bit number 87d5ae01f99fe58f73eb2eeae2a6bb62. This number was not previously known to the KNO, so the browser's RNG passed the KNO test. javascript

var n = new Uint8Array(16); window.crypto.getRandomValues(n);

.

See Number Frequency on the Web. pdf github