Nie tylko Spectre i Meltdown. Wykonywanie spekulatywne jako generator liczb losowych

Nie tylko Spectre i Meltdown. Wykonywanie spekulatywne jako generator liczb losowych

(fot. Shutterstock.com)
(fot. Shutterstock.com)
Piotr Urbaniak
30.09.2019 11:28

Wykonywanie spekulatywne ostatnio kojarzy się głównie z podatnościami takimi jak Spectre czy Meltdown. Nie oznacza to jednak, że nie można wykorzystać tego mechanizmu w sprawie słusznej, czego próbuje dowieść jeden z deweloperów Linuksa.

Wiadomo, że we współczesnych mikroarchitekturach procesorów, czy to Intela czy AMD, wykonywanie spekulatywne odbywa się na bardzo złożonej zasadzie. Dokładne algorytmy to jedne z najpilniej strzeżonych tajemnic, więc ciężko o konkrety. Niemniej Thomas Gleixner, wieloletni deweloper jądra Linux, dostrzegł pewną intrygującą zależność.

Jak ustalił, pomiar czasu wykonania pętli opartych na spekulacji jest wystarczająco losowy, aby być prostym i efektywnym źródłem entropii dla generatora liczb losowych (RNG). Oczywiście sama pętla w ten sposób nie zadziała, ale wystarczy umieścić w niej jakieś dodatkowe instrukcje. Wypadkowa daje niedeterministyczne czasy wykonania, możliwe do zmierzenia za pomocą RDTSC, czyli znaczników czasu procesora.

Linus Torvalds stwierdził, że przedstawiona metoda nie jest wystarczająco wiarygodna, aczkolwiek przedstawił zarazem własną interpretację kodu Gleixnera.

Niewykluczone więc, że RNG oparty na wykonywaniu spekulatywnym kiedyś trafi do jądra Linux. Byłby to ciekawy przypadek exploitowania procesorów w dobrej wierze.

Programy

Zobacz więcej
Źródło artykułu:www.dobreprogramy.pl
Oceń jakość naszego artykułuTwoja opinia pozwala nam tworzyć lepsze treści.
Wybrane dla Ciebie
Komentarze (16)