SecureString come confrontare con un'altra SecureString che è sicura contro gli attacchi a tempo?

3

Vedo che Microsoft fornisce un SecureString: link , è possibile confrontare due SecureString e assicurarsi che sia sicuro contro gli attacchi a tempo?

    
posta Coppermill 06.06.2017 - 17:12
fonte

1 risposta

2

Ho scritto un post sul blog a riguardo. Ho trovato due soluzioni:

  1. Utilizzo di Marshal.ReadByte o codice puntatore non sicuro che puoi eseguire in loop su SecureString, proprio come in questo rispondere . Tuttavia, non eseguire la cauzione anticipata se uno dei personaggi è diverso; questo non è sicuro nel tempo. Invece, XOR tutti i caratteri e restituisce il risultato. Se tutti i caratteri sono uguali, tutti gli XOR restituiranno 0.
  2. Usa P / Invoke e l'API Windows Crypto per creare un hash delle due stringhe e confrontarle normalmente. Punti bonus per l'utilizzo di una chiave segreta casuale per creare l'hash, in modo che l'attaccante non possa conoscere l'hash da confrontare.

Si noti che questo è tutto molto avanzato e protegge da minacce improbabili introducendo molta complessità. Per la maggior parte dei casi eviterei SecureStrings.

    
risposta data 08.11.2017 - 14:13
fonte

Leggi altre domande sui tag