Segurança e criptografia no Visual Basic


A palavra segurança talvez nunca tenha sido tão pronunciada como agora ; quer seja no aspecto da segurança pública quer seja no aspecto da segurança de dados e informações. Embora estejamos vivendo momentos de insegurança com a violência aumentando sob todos os aspectos eu vou me ater ao aspecto da segurança de dados neste artigo.

Com o crescimento e utilização da internet  as empresas passaram a usá-la como um meio de vender seus produtos. Atualmente fica difícil você pensar em uma empresa , mesmo de porte pequeno, que não esteja na internet. Grandes corporações , Bancos , empresas de todo o tipo usando a internet  fez com que a quantidade de informações e dinheiro aumentasse na internet  , e , como onde tem dinheiro tem ladrão surgiu um novo e 'ilustre' ladrão chamado de hacker (estou me referindo áquelas pessoas que roubam informações e dinheiro...) e com ele a preocupação com a segurança nas transações feitas na internet.

Creio que início do comércio eletrônico  tenha sido via EDI - Intercâmbio eletrônico de Dados - onde a troca de informações entre as empresas são feitas no padrão ANSIX12. Neste caso as transmissões são trocadas entre parceiros e usam o modelo EDIFACT e tem a vantagem de privacidade com largura de banda mas é caro , inflexível , não escalável , não interoperável.

A internet hoje praticamente monopoliza o comércio eletrônico nela temos basicamente os dois tipos de comércio :

  1. B2C - Business to Consumer - comércio entre empresa e consumidor
  2. B2B - Business to Business - comércio entre empresas.
  3. e-Gov - Serviços on-line de governo.(Receita Federal , etc.)

A internet embora seja flexível , rentável , ter um acesso global e possuir um gerenciamento distribuído tem o seu calcanhar de aquiles : a performance e a segurança.

Eu penso que um sistema de segurança mal feito é pior que nenhum sistema de segurança. Explico. Se você usa um sistema de segurança ruim e cheio de furos , pode ter a sensação de que está seguro mas na verdade esta vulnerável . Quando você não tem nenhum sistema de segurança você fica mais cauteloso pois sabe que precisa se cuidar.

Falei tudo isto para chegar na criptografia . Os primórdios desta técnica (falando em termos de internet) talvez estejam na década de 80 quando um tal de Paul Zimmermmann criou o PGP ( Pretty Good Privacy) e em seguida distribuiu o seu código fonte via internet. (quase foi preso...)

Nota: Na verdade desde os tempos antigos  a criptografia era utilizada para trocar mensagens em tempos de guerras.Os romanos usavam um primitivo método para criptografar as mensagens enviadas aos seus exércitos.

Pensando em tudo isto a criptografia é utilizada como uma ferramenta para proteger seus dados e informações e para você entender um pouco mais sobre ela vou falar sobre alguns conceitos básicos relacionados com a criptografia.

Os princípios básicos da segurança para o comércio eletrônico podem ser destacados em :

  1. Autenticação - Saber com que você se comunica ou a prova de que a pessoa é ela de fato.
  2. Sigilo - Proteger informações sigilosas . Garantir que somente o destinatário pode ler ou modificar as informações.
  3. Autorização - Certificar-se de que os usuários não excederão sua autoridade - Padrão de assinaturas , exigência de assinatura , proteção.
  4. Integridade - Impedir que as informações sejam forjadas ou alteradas - Assinar e autenticar , testemunhas.
  5. Não-repúdio - Criar prova jurídica vinculatória das transações - prova de intenção , participação , registro de data .

Para pode atingir o nível de segurança proposto entre o mundo físico e o mundo digital devemos usar ferramentas dentre as quais destacamos:

  1. Criptografia
  2. Certificados Digitais
  3. Assinaturas Digitais
  4. Recibos digitais
  5. Roaming

Criptografia é a troca de informações usando um código secreto. Ela é o nome do processo usado para embaralhar uma mensagem de acordo com um protocolo aprovado pelo remetente e o destinatário.  O protocolo geralmente é chamado de chave e é a base de qualquer criptografia pois é através dela que uma mensagem será codificada e decodificada.

Dentre as técnicas de criptografia clássica temos :

  1. Cifra de Vigenére - Usa uma matriz de texto e uma chave de múltiplos caracteres para encriptar a informação.
  2. Transposição - Transpõe a ordem de texto na mensagem.

Basicamente existem dois tipos de criptografia : simétrica e assimétrica.

A criptografia simétrica utiliza apenas uma chave para codificar e decodificar uma mensagem e é bastante usada em transmissões de dados em que não é necessário um grande nível de segurança como mensagens enviadas de um computador para outro. Usada também na distribuição de software . Geralmente emprega chave binária ou senhas ( 40 , 56 e 128 bits). Dentre os algorítimos simétricos citamos :

Algorítimo Suporte Tamanho Disponibilidade Comentários
DES NSA , ANSI 40 e 56 bits Domínio Público Fraco , mas o mais usado até hoje.
Triple-DES NSA , ANSI 80, 112 e 168 bits Domínio Público Variante mais forte da DES
RC2,RC4,RC5,RC6 RSA varia de 40 a 128 bits Patente expirou em 2000 Muito forte exportável em versões de 40 e 56.

A força da criptografia da chave simétrica depende de :

Para quebrar uma criptografia simétrica deve-se usar a força bruta (busca exaustiva pela chave). Esta técnica hoje é muito mais viável com a utilização de milhares de computadores em rede. De acordo com o tamanho da chave podemos estimar o tempo gasto para quebrar a criptografia:

Nota: talvez o maior problema da criptografia simétrica seja como enviar a chave simétrica de uma parte para outra de forma segura. Parece que a resposta parcial foi dada em 1976 por Diffe-Hellman. ( não vou entrar em detalhes)

Tamanho da chave simétrica chave possíveis Tempo para quebrar
40 1 x 10^12 (1 trilhão)  2   horas
56 7 x 10^16  20 horas
64 2 x 10^19  9 anos
128 3 x 10^33 10^19 anos
256 1 x 10^77 10^58 anos

A criptografia assimétrica utiliza duas chaves : uma pública , que todos conhecem ,  e outra privada. É criada uma chave privada e a partir dela uma chave pública que deve ser enviada para todas as pessoas com as quais você deseja trocar informações.

Uma das chaves de criptografia assimétricas mais utilizadas é a RSA - Rivest, Shamir e Adleman - ( 3 membros do MIT que criaram o algorítimo em 1977 ) Embora existam outros algorítimos mais eficientes ela continua a ser muito usado até hoje.

Onde o Visual Basic entra nesta história toda ?   Eu não falei tudo isto para encerrar o artigo aqui então eu vou mostrar como podemos usar o VB para criar código que usa alguns algorítimos de criptografia que você vai poder usar em suas aplicações. Como eu não nasci sabendo nem sei tudo eu não desenvolvi estes algoritmos em suas rotinas em VB apenas estou apresentando a você. Vamos lá :

Blowfish em VB

O método blowfish foi criado por Bruce Schneier e pode ser usado sem restrições. Pegue o exemplo em VB aqui - BlowfishVB.zip.

Após descompactar o arquivo e executar o aplicativo você terá a seguinte tela:

- Você define a chave na caixa Key

- Gera a chave ativa no formato - Hex ou Alpha

- Informa o texto que deseja criptografar em - Plain Text

- Faz a criptografia e obtém o resultado

- Decodifica o texto

Se quiser um exemplo em VB.NET ele esta no Super CD .NET pois ele é um pouco maior.

Nota: Se quiser algo mais simples , apenas uma hash , abaixo uma função em VB.NET que faz o serviço:

Imports System.Security.Cryptography

Imports System.Text

 

Module Module1

Sub Main()

Dim SHA1HASHValue() As Byte

Console.WriteLine("SHA1 HASH GENERATOR")

Console.WriteLine("-------------------")

Console.WriteLine("Entre com o texto a criptografar :")

Dim sString As String = Console.ReadLine()

'Cria uma nova instância de UnicodeEncoding para

'converter a string em um array de bytes Unicode

Dim UE As New UnicodeEncoding()

'Converte o stringem um array de bytes.

Dim MessageBytes As Byte() = UE.GetBytes(sString)

'Cria uma instância de SHA1Managed para criar um valor  hash

Dim SHhash As New SHA1Managed()

'Cria o valor  hash

SHA1HASHValue = SHhash.ComputeHash(MessageBytes)

'Exibe o valor hash value no console.

Dim b As Byte

For Each b In SHA1HASHValue

Console.Write("{0} ", b)

Next b

Console.ReadLine()

End Sub

End Module

Algorítimo MD5

Este algoritmo recebe como parâmetro um texto ou arquivo e produz uma assinatura de 128 bits. Ele é muito utilizado na assinatura de pacote de dados . Assim você gera uma assinatura MD5 antes da transmissão e quando o pacote chegar é gerada outra assinatura que deve ser igual a enviada junto com o pacote.

Pegue o exemplo em Visual Basic aqui - md5VB.zip.

Mais informações sobre o assunto você encontra nos seguintes links:

Aguarde em breve  mais artigos sobre criptografia no VB e no VB.NET . Até breve...

Veja os Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique e confira !

Quer migrar para o VB .NET ?

Quer aprender C# ??

Quer aprender os conceitos da Programação Orientada a objetos ?

Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ?

  Gostou ?   Compartilhe no Facebook   Compartilhe no Twitter

Referências:


José Carlos Macoratti