Cadenas de caracteres seguras


Existe una nueva clase en el .NET Framework 2.0 que nos permite crear un objeto para almacenar una cadena de caracteres y mantenerla de forma segura para guardar datos sensibles. Esta clase es SecureString, que se encuentra bajo el Namespace System.Security.

Un objeto SecureString es similar a un String, sin embargo:

  1. El valor introducido es encriptado automáticamente y se almacena de esa forma.
  2. El valor puede ser modificado, a menos que se invoque el método MakeReadOnly.
  3. El valor puede ser borrado en cualquier momento con el método Clear.
  4. El objeto puede eliminado desde el código usando el método Dispose.

Para el encriptado la clase emplea DPAPI (Data Protection API), razón por la cual sólo es soportada en Windows 2000 SP3, Windows XP, Windows 2003 y posteriores. .

Para reducir su exposición, la clase no tiene miembros para la inspección, comparación o conversión del valor almacenado. Para ello debe emplearse los métodos de la clase System.Runtime.InteropServices.Marshal, tal como SecureStringToBSTR.

Por otro lado la clase si tiene miembros que permiten agregar o modificar su valor, tales como: AppendChar, InsertAt, RemoveAt, y SetAt.

    Function Login() As Boolean
        Dim loginName As String
        Dim password As SecureString
        Dim successful As Boolean = False
        ReadLoginName(loginName)
        '...
        Do While True
            Dim keypressed As ConsoleKeyInfo = Console.ReadKey(True)
            If keypressed = ConsoleKey.Enter Then
                successful = VerifyLogin(loginName, password)
            Else
                password.AppendChar(keypressed.KeyChar)
            End If
        Loop
        password.Clear()
        Return successful
    End Function

La clase SecureString es nueva en .NET Framework 2.0, pero si desea emplearla en su código bajo el .NET Framework 1.x lea SecureString in NET v1.1 de Hernan De Lahitte.

Acerca de Willy Mejia

Developer, Techie, Human... http://about.me/willyxoft
Esta entrada fue publicada en .NET, Seguridad. Guarda el enlace permanente.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s