Door Anoniem: Wat blijkt: AMD heeft schoonheidsfoutjes gemaakt bij hun implementatie (en workaround voor een eerdere fix) van RdRand. Daardoor was de hardwarematige random number generation niet willekeurig genoeg, en werd output van RdRand (terecht) afgekeurd door systemd (jawel ;-) ).
AMD zou een microcode-fix hebben, welke in eerste instantie per BIOS-update naar eindgebruikers moet komen. Van dezelfde bron als het originele artikel:
https://www.phoronix.com/scan.php?page=news_item&px=AMD-Releases-Linux-Zen2-Fix Mww - je samenvatting suggereert 'matige' random numbers . Feitelijk staat de RNG soms 'uit' (waarschijnlijk in relatie met suspend/resume) , terwijl de status vlag die moet zeggen 'call succesvol' toch 'succes' belooft .
De teruggelezen waarde is dan -1 .
Het probleem is iig wel heel duidelijk herkenbaar - een bug waarbij bv de randum numbers de output zouden zijn van een aes met een vaste of voorspelbare input zou extreem moeilijk detecteerbaar zijn.
Comment in de systemd fix/workaround:
/* Apparently on some AMD CPUs RDRAND will sometimes (after a suspend/resume cycle?) report success
* via the carry flag but nonetheless return the same fixed value -1 in all cases. This appears to be
* a bad bug in the CPU or firmware. Let's deal with that and work-around this by explicitly checking
* for this special value (and also 0, just to be sure) and filtering it out. This is a work-around
* only however and something AMD really should fix properly. The Linux kernel should probably work
* around this issue by turning off RDRAND altogether on those CPUs. See:
* https://github.com/systemd/systemd/issues/11810 */