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

Strona główna Aktualności
(fot. Shutterstock.com)
(fot. Shutterstock.com)

O autorze

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.

© dobreprogramy
s