¿Cuándo necesitaría una SecureString en .NET?

Estoy tratando de asimilar el propósito de SecureString de .NET. Desde MSDN:

Una instancia de la clase System.String es inmutable y, cuando ya no es necesaria, no puede programarse programáticamente para la recolección de basura; es decir, la instancia es de solo lectura después de su creación y no es posible predecir cuándo se eliminará la instancia de la memoria de la computadora. En consecuencia, si un objeto String contiene información confidencial, como una contraseña, un número de tarjeta de crédito o datos personales, existe el riesgo de que la información se revele después de que se use porque su aplicación no puede eliminar los datos de la memoria de la computadora.

Un objeto SecureString es similar a un objeto String porque tiene un valor de texto. Sin embargo, el valor de un objeto SecureString se cifra automáticamente, se puede modificar hasta que su aplicación lo marque como de solo lectura y se puede eliminar de la memoria de la computadora ya sea por su aplicación o por el recolector de basura de .NET Framework.

El valor de una instancia de SecureString se cifra automáticamente cuando la instancia se inicializa o cuando se modifica el valor. Su aplicación puede hacer que la instancia sea inmutable y evitar nuevas modificaciones invocando el método MakeReadOnly.

¿Es el cifrado automático la gran recompensa?

¿Y por qué no puedo simplemente decir:

SecureString password = new SecureString("password");

en lugar de

SecureString pass = new SecureString();
foreach (char c in "password".ToCharArray())
    pass.AppendChar(c);

¿Qué aspecto de SecureString me estoy perdiendo?

Respuestas a la pregunta(11)

Su respuesta a la pregunta