RDRAND
RDRAND (od ang. read random) – instrukcja architektury x86 umożliwiająca pobieranie 16, 32 lub 64-bitowych liczb losowych ze sprzętowego generatora wbudowanego w procesor. Wariant 64-bitowy jest dostępny wyłącznie w trybie 64-bitowym. Instrukcję wprowadził Intel w 2012 roku wraz z procesorami Ivy Bridge. AMD dodało jej obsługę w 2015 roku, począwszy od mikroarchitektury Excavator[1][2].
Działanie
[edytuj | edytuj kod]W implementacji Intela, znanej jako Intel Secure Key, instrukcja korzysta z kryptograficznego generatora pseudolosowego opartego na algorytmie AES, okresowo zasilanego danymi z fizycznego źródła entropii. Generator wykorzystuje mechanizm CTR_DRBG określony w standardzie NIST SP 800-90A.
Wynik jest zapisywany w rejestrze procesora. Pomyślne wykonanie instrukcji sygnalizuje ustawienie flagi przeniesienia (CF) na 1. Jeżeli liczba nie jest dostępna, flaga przyjmuje wartość 0, a rejestr docelowy zostaje wyzerowany. Oprogramowanie musi sprawdzać stan flagi i w razie potrzeby ponowić wywołanie. Intel zaleca maksymalnie 10 ponowień. Obsługę RDRAND można wykryć za pomocą instrukcji CPUID.
Pokrewna instrukcja RDSEED służy do pobierania wartości przeznaczonych do inicjowania programowych generatorów liczb pseudolosowych[3].
Znane błędy i podatności
[edytuj | edytuj kod]W 2019 roku wykryto błąd obsługi RDRAND w procesorach AMD Ryzen 3000 opartych na mikroarchitekturze Zen 2. Powodował on problemy z uruchamianiem niektórych dystrybucji Linuksa, których system inicjalizacji korzystał z tej instrukcji. Problem usunięto w aktualizacjach oprogramowania układowego płyt głównych opartych na AGESA 1.0.0.3ABB. Niezależnie wprowadzono obejście w systemd[4][5].
W 2020 roku ujawniono podatność CrossTalk (CVE-2020-0543), określaną również jako Special Register Buffer Data Sampling (SRBDS). W niektórych procesorach Intela umożliwiała ona odczytywanie wartości zwracanych przez RDRAND i RDSEED na innych rdzeniach procesora. Intel udostępnił aktualizacje mikrokodu ograniczające tę podatność[6][7].
Przypisy
[edytuj | edytuj kod]- ↑ What is Intel Secure Key Technology?. Intel, 2012-05-14. [dostęp 2026-11-05].
- ↑ Michael Larabel: 5+ Years Late: LLVM's AMD Excavator Target Was Missing Two Features. Phoronix, 2020-06-28. [dostęp 2026-11-05].
- ↑ Intel Digital Random Number Generator (DRNG) Software Implementation Guide. Intel, 2018-10-17. [dostęp 2026-11-05].
- ↑ AMD Ryzen 3000 CPUs (Zen2) do not boot due to broken rdrand instruction. Red Hat Bugzilla, 2019-07-11. [dostęp 2026-11-05].
- ↑ Jan Olšan: Opravné BIOSy pro Ryzen 3000 jsou tady. Také ale vypínají PCIe 4.0 na starších deskách. Cnews.cz, 2019-08-04. [dostęp 2026-11-05].
- ↑ CROSSTalk. VUSec, 2020-06-09. [dostęp 2026-11-05].
- ↑ Special Register Buffer Data Sampling. Intel, 2022-06-14. [dostęp 2026-11-05].