Błąd sprzętowy w niektórych procesorach AMD. Wadliwe działanie generatora liczb losowych
Wybrane procesory AMD mają problem z działaniem generatora liczb losowych, RdRand – RNG. Okazuje się ze generator przestaje funkcjonować poprawnie po wybudzeniu maszyny z uśpienia. Szczęśliwie usterką są objęte jedynie starsze układy, takie jak Excavator i jego poprzednicy (mikroarchitektura Bulldozer i pochodne). Nowy Zen działa jak należy.
08.05.2019 | aktual.: 09.05.2019 14:25
Przypadłość zdiagnozował i opisał programista Red Hata, Lennart Poettering. W przykładzie użył czipu A6-6310, ale ustalono już, że problem jest szerszy i obejmuje znaczną część mikroarchitektur modułowych AMD – od czerwca 2015 r., gdyż starsze jednostki instrukcji nie wspierają.
RdRand wykorzystywany jest do generowania kluczy dla OpenSSL. Jednak domyślnie jądro Linux forsuje rozwiązanie programowe, a Windows kompletnie pomija RdRand w ACPI.
Czasem tylko w Linuksie tworzy się tym sposobem unikatowe identyfikatory UUID dla identyfikatorów wywołania, czego próbował zespół Red Hata. I wtedy właśnie dochodzi do zawieszenia komputera, gdy platforma wykorzystuje jeden z dotkniętych błędem procesorów. Oczywiście można to obejść, stosując czysto programowy RNG. Tak też zapewne postąpią w Red Hacie.
NSA? Nie ma tego złego, co by...
Jest też ciekawostka. Trochę paradoksalnie, niektórzy użytkownicy mogą się z kaprysów RdRand ucieszyć. W 2013 r. Linus Torvalds otrzymał petycję z prośbą o usunięcie funkcji z /dev/random. Dlaczego? Bo opiera się ona na standardzie NIST SP800-90, współtworzonym przez NSA.
Autor postulatu obawiał się, że w RdRand zaszyty jest jakiś backdoor. – Używamy rdrand jako jednego z wielu źródeł losowości i jest on sposobem na polepszenie losowości. Nawet jeśli w rdrand znajduje się tylna furtka NSA, to jego użycie poprawia jakość losowych wartości otrzymywanych z /dev/random – tłumaczył Torvalds. Na tyle skutecznie, że śmiałek zrezygnował z roszczenia. Ale być może porzucenie RdRand komuś jeszcze samopoczucie poprawi.