Clique aqui para ler esse artigo em PDF.imagem_pdf.jpg

capa_NET36_G.gif

Clique aqui para ler todos os artigos desta edição

Criptografia de strings no .NET

 

Este artigo discute

Este artigo usa as seguintes tecnologias

·       A classe SecureString;

·       Utilização da classe SecureString;

·       Criptografia de strings.

Visual Studio 2005, Windows Forms e C#.

 

O tema segurança é de grande importância sobre tudo quando tratamos de informações sigilosas, algo que sempre assusta o desenvolvedor. Imagine-se efetuando uma transação bancária onde informações como: número do cartão e respectiva senha ou qualquer outra informação sigilosa, trafegam sem nenhum tipo de criptografia.

Suponhamos que exista algum programa “malicioso” rodando nessa máquina e sua função é justamente capturar as informações da memória. Nesse momento seus dados estariam expostos, concorda?

Para resolver esse tipo de problema, o .NET Framework 2.0 vem com uma novidade, a classe SecureString, pertencendo ao namespace System.Security, que possibilita trabalhar com strings de maneira segura, permitindo  que o texto seja criptografado para manter a privacidade quando estiver sendo usado e descriptografado quando acessado.

 O projeto de exemplo visa mostrar como é possível capturar e descriptograr as informações contidas em um objeto do tipo SecureString. Neste artigo, criaremos uma classe para criptografar as informações digitadas em uma caixa de texto, exibir a informação criptograda e mais tarde descriptografar essa informação.

 

A classe SecureString

Essa classe permite que você trafegue dados confidenciais, como senha, número de cartão de crédito ou qualquer outro tipo de informação que não possa ser revelada, de forma segura. Isso porque, sempre que passamos um valor para o objeto instanciado, esse é automaticamente criptografado.

Para simplificar pode-se dizer que uma SecureString é uma string que faz um hashing automático dos dados. Uma curiosidade, é que essa classe não possui métodos para inspecionar, comparar ou converter, por essa razão, o conteúdo dos dados não podem ser manipulados diretamente.

Essa ausência ajuda a proteger seu conteúdo de exposição acidental ou mal-intencionada. Imagino que a essa altura você deva estar se perguntando, se a string é criptografada como poderei manipulá-la?

Para manipularmos uma SecureString, usaremos a classe Marshal, isso é, usaremos os membros da classe System.Runtime.InteropServices.Marshal, tais como SecureStringToBSTR e o PtrToStringBSTR, apropriados para manipular o valor de um SecureString.

        Para garantirmos que o conteúdo da string não seja mais alterado, podemos chamar o método MakeReadOnly, que após a sua execução, “marca” o valor como somente-leitura, isso é, qualquer tentativa de modificá-la faz com que uma exceção do tipo InvalidOperationException seja gerada. Enfim, vejamos como funciona.

 

Criando o projeto

Abra o Visual Studio 2005 e crie um projeto do tipo Windows Application, através do menu File>New>Project. Em Project Type selecione ...

Quer ler esse conteúdo completo? Tenha acesso completo