Zależność czasu wykonania instrukcji od danych na procesorach ARM i Intel

Eric Biggers, jeden z twórców algorytmu Adiantum i maintainer systemu plików Linux fscrypt, zaproponował zestaw poprawek mających na celu zablokowanie problemów z bezpieczeństwem wynikających z cechy procesorów Intel, która nie zapewnia stałego czasu wykonania instrukcji dla różnych przetwarzanych danych. W procesorach Intel problem ten ujawnia się od rodziny Ice Lake. Podobny problem występuje także w procesorach ARM.

Zależność czasu wykonania instrukcji od przetwarzanych danych uznawana jest przez autora poprawek za lukę w procesorach, ponieważ takie zachowanie nie może gwarantować bezpieczeństwa operacji kryptograficznych realizowanych w systemie. Wiele implementacji algorytmów kryptograficznych zakłada, że dane nie wpływają na czas wykonania instrukcji, a naruszenie tego zachowania może prowadzić do ataków poprzez zewnętrzne kanały, które przywracają dane na podstawie analizy czasu ich przetwarzania.

Potencjalnie zależność czasu wykonania od danych może być również wykorzystywana do organizacji ataków mających na celu określenie danych jądra z przestrzeni użytkownika. Według Eric'a Biggers'a, stały czas wykonania z założenia nie jest zapewniany nawet dla instrukcji wykonujących operacje dodawania i XOR, a także dla specjalizowanych instrukcji AES-NI (informacje te nie zostały potwierdzone testami, według innych danych podczas mnożenia wektorów i zliczania bitów występuje opóźnienie o jeden cykl).

Aby wyłączyć omawiane zachowanie, firmy Intel i ARM zaproponowały nowe flagi: bit PSTATE DIT (Data Independent Timing) dla CPU ARM oraz bit MSR DOITM (Data Operand Independent Timing Mode) dla CPU Intel, które przywracają stare zachowanie z stałym czasem wykonania. Firmy Intel i ARM rekomendują włączenie ochrony w razie potrzeby dla szczególnie ważnego kodu, ale w praktyce ważne obliczenia mogą występować w różnych częściach jądra i przestrzeni użytkownika, dlatego rozważana jest możliwość stałego aktywowania trybów DOITM i DIT dla całego jądra.

Dla procesorów ARM do gałęzi jądra Linux 6.2 już przyjęto poprawki, które zmieniają zachowanie jądra, ale te poprawki są uważane za niewystarczające, ponieważ dotyczą tylko kodu jądra i nie zmieniają zachowania w przestrzeni użytkownika. Dla procesorów Intel włączenie ochrony jest obecnie na etapie przeglądu. Pomiar wpływu poprawki na wydajność nie został jeszcze przeprowadzony, ale według dokumentacji Intela włączenie trybu DOITM obniża wydajność (na przykład z powodu wyłączenia niektórych optymalizacji, takich jak prefetching specyficzny dla określonych danych) i w przyszłych modelach procesorów spadek wydajności może się nasilić.

Źródło: opennet.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster