Correlato, non un duplicato: Confronto tra stringhe sicure e tempistiche - Evitare la lunghezza Leak
- So di mancanze della cache, supponiamo di inserirci in una linea di cache.
- La risposta eccellente di Thomas non parla di jitter tranne quella introdotta da GC, né tocca l'esecuzione asincrona.
- Possiamo assumere un'implementazione di basso livello (assemblatore, C, F77, Forth) che può essere utilizzata in qualsiasi linguaggio di livello superiore (ad es. Python)
Per favore correggimi se sbaglio:
- Stiamo parlando del confronto di due stringhe di lunghezza non uguale . Il primo è scelto da Eva, il secondo appartiene ad Alice. Alice vuole impedire a Eve di imparare la lunghezza e / o il contenuto della seconda stringa.
-
Nessun linguaggio di programmazione mainstream esistente ha routine di confronto tra stringhe a tempo costante nella sua libreria standard.
-
Per evitare perdite di informazioni sulla lunghezza, dobbiamo
- hash precomputo di
Victoria'ssegreto di Alice (la stessa funzione di hash non deve essere vulnerabile agli attacchi temporali) - calcolo dell'hash della stringa malvagia di Eva
- confronta gli hash (stringhe di uguale lunghezza per definizione della funzione di hash) in tempo costante
o
- confronta semplicemente la stringa di Eve byte per byte con il segreto di Alice, incrementando un contatore (o due contatori, uno per corrispondenza e non corrispondente a byte?) fino alla fine della stringa di Eve?
- hash precomputo di
-
L'introduzione del jitter crittograficamente casuale è una misura valida per la difesa in profondità? (Si supponga che ciò avvenga su una LAN in un momento di calma quando il rumore di temporizzazione naturale è al minimo).
-
L'esecuzione asincrona dei confronti (con alcune dure garanzie in tempo reale) è una difesa praticabile? (Sì, so che un altro canale laterale potrebbe perdere)
Cosa non sto sollecitando :
- raccomandazioni per lingua / prodotto
- risponde ' dipende dal tuo modello di minaccia ' (la mia minaccia si nasconde in un altro server dall'altra parte della stanza, con un numero illimitato di tentativi)