SecureString ¿cómo comparar con otro SecureString que es seguro contra los ataques de tiempo?

3

Veo que Microsoft proporciona un SecureString: enlace , ¿es posible comparar dos SecureStrings y garantizar que sea seguro contra los ataques de sincronización?

    
pregunta Coppermill 06.06.2017 - 17:12
fuente

1 respuesta

2

Escribí una publicación de blog sobre esto. Se me ocurrieron dos soluciones:

  1. Si usa Marshal.ReadByte o un código de puntero no seguro, puede hacer un bucle sobre SecureString, al igual que en este contestar . Sin embargo, no abandones temprano si uno de los personajes es diferente; esto no es seguro en el tiempo En su lugar, XOR todos los caracteres y devolver el resultado. Si todos los caracteres son iguales, todos los XOR devolverán 0.
  2. Use P / Invoke y la API de Windows Crypto para crear un hash de las dos cadenas y compárelas normalmente. Puntos de bonificación por usar una clave secreta aleatoria para crear el hash, de modo que el atacante no pueda saber el hash que se está comparando.

Tenga en cuenta que todo esto es muy avanzado y protege contra amenazas improbables al tiempo que introduce mucha complejidad. En la mayoría de los casos, evitaría SecureStrings.

    
respondido por el Sjoerd 08.11.2017 - 14:13
fuente

Lea otras preguntas en las etiquetas