Timing attacks nelle comparazioni di stringhe: mito o realtà?

Analizziamo la reale possibilità di attacchi tramite temporizzazione nelle comparazioni di stringhe, considerando implementazioni come strcmp in glibc e memcmp. Graph showing the timing differences in string comparisons between strncmp and memcmp.

Il confronto delle stringhe può variare in base alla similarità dei caratteri. In teoria, più due stringhe sono simili, più tempo impiega la loro comparazione. Tuttavia, alcune implementazioni come glibc’s strcmp confrontano più byte contemporaneamente, rendendo più difficile un attacco.

Nelle moderne CPU, strcmp utilizza set di istruzioni AVX2 ed EVEX, confrontando 32 byte alla volta. Questo riduce la vulnerabilità agli attacchi temporanei. Anche memcmp, che non cerca il byte nullo, risulta più sicuro.

Un’altra nota è che il confronto delle stringhe in linguaggi come C# può essere culturalmente sensibile, aumentando il tempo di comparazione. Tuttavia, disabilitando questa funzione i tempi di confronto si uniformano.

In conclusione, gli attacchi temporizzati richiedono condizioni molto specifiche e, nella pratica, spesso risultano non fattibili.

Potrebbe interessarti anche...