Timing attacks nelle comparazioni di stringhe: mito o realtà?
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.