zig/lib/std/rand
Frank Denis ee01dd4032
crypto: add the Xoodoo permutation, prepare for Gimli deprecation (#11866)
Gimli was a game changer. A permutation that is large enough to be
used in sponge-like constructions, yet small enough to be compact
to implement and fast on a wide range of platforms.

And Gimli being part of the Zig standard library was awesome.

But since then, Gimli entered the NIST Lightweight Cryptography
Competition, competing againt other candidates sharing a similar set
of properties.

Unfortunately, Gimli didn't pass the 3rd round.

There are no practical attacks against Gimli when used correctly, but
NIST's decision means that Gimli is unlikely to ever get any traction.

So, maybe the time has come to move Gimli from the standard library
to another repository.

We shouldn't do it without providing an alternative, though.
And the best candidate for this is probably Xoodoo.

Xoodoo is the core function of Xoodyak, one of the finalists of the
NIST LWC competition, and the most direct competitor to Gimli. It is
also a 384-bit permutation, so it can easily be used everywhere Gimli
was used with no parameter changes.

It is the building block of Xoodyak (for actual encryption and hashing)
as well as Charm, that some Zig applications are already using.

Like Gimli that it was heavily inspired from, it is compact and
suitable for constrained environments.

This change adds the Xoodoo permutation to std.crypto.core.

The set of public functions includes everything required to later
implement existing Xoodoo-based constructions.

In order to prepare for the Gimli deprecation, the default
CSPRNG was changed to a Xoodoo-based that works exactly the same way.
2022-07-01 13:18:08 +02:00
..
Gimli.zig Add argument for fillFn to Random.init 2021-10-29 19:20:31 -04:00
Isaac64.zig Add argument for fillFn to Random.init 2021-10-29 19:20:31 -04:00
Pcg.zig Add argument for fillFn to Random.init 2021-10-29 19:20:31 -04:00
RomuTrio.zig Add std.rand.RomuTrio 2022-05-24 22:48:51 -04:00
Sfc64.zig Add argument for fillFn to Random.init 2021-10-29 19:20:31 -04:00
test.zig std.rand: fixup 'improve random float generation' 2022-05-12 15:39:19 +02:00
Xoodoo.zig crypto: add the Xoodoo permutation, prepare for Gimli deprecation (#11866) 2022-07-01 13:18:08 +02:00
Xoroshiro128.zig Add argument for fillFn to Random.init 2021-10-29 19:20:31 -04:00
Xoshiro256.zig Add argument for fillFn to Random.init 2021-10-29 19:20:31 -04:00
ziggurat.zig compiler-rt: math functions reorg 2022-04-27 12:20:44 -07:00