DevSecOps

23 fev, 2017

Criptografia na plataforma .net – princípios gerais

Publicidade

A segurança é uma preocupação constante que todos os desenvolvedores precisam abordar, principalmente quando existem dados que estão sendo armazenados ou transmitidos.

Criptografia (em grego: kryptós, “escondido”, e gráphein, “escrita”) é o estudo dos princípios e técnicas pelas quais a informação pode ser transformada da sua forma original para outra ilegível, de forma que possa ser conhecida apenas por seu destinatário (detentor da “chave secreta”), o que a torna difícil de ser lida por alguém não autorizado. (Fonte: https://pt.wikipedia.org/wiki/Criptografia)

Resumindo, a criptografia representa a transformação de informação inteligível numa forma aparentemente ilegível, a fim de ocultar informação de pessoas não autorizadas, garantindo privacidade.

O estudo da criptografia é feito desde a Roma antiga, quando eram usados algoritmos simples para ocultar informações. A criptografia moderna é basicamente formada pelo estudo dos algoritmos criptográficos que podem ser implementados em computadores.

Por meio do uso da criptografia você pode:

  • proteger os dados sigilosos armazenados em seu computador, como o seu arquivo de senhas e a sua declaração de Imposto de Renda;
  • criar uma área (partição) específica no seu computador na qual todas as informações que forem lá gravadas serão automaticamente criptografadas;
  • proteger seus backups contra acesso indevido, principalmente aqueles enviados para áreas de armazenamento externo de mídias;
  • proteger as comunicações realizadas pela Internet, como os e-mails enviados/recebidos e as transações bancárias e comerciais realizadas. (fonte: http://cartilha.cert.br/criptografia/)

Há duas maneiras básicas de se criptografar mensagens:

Usando códigos – Procura esconder o conteúdo da mensagem através de códigos predefinidos entre as partes envolvidas na troca de mensagens.

Usando cifras – O conteúdo da mensagem é cifrado através da mistura e/ou substituição das letras da mensagem original. A mensagem é decifrada fazendo-se o processo inverso ao ciframento

Os termos codificar e criptografar não significam a mesma coisa. Assim, codificação não é criptografia.

Na codificação, usando o mecanismo de codificação base64 por exemplo, não é preciso usar uma chave de codificação ou decodificação.

O mecanismo de codificação Base64 é usando quando você precisa representar dados binários em um ambiente baseado em texto.

Para converter para e a partir de base64 podemos usar a classe Convert. Veja exemplo abaixo para VB .NET e C#:

VB .NET

      Dim binario = New Byte() {1, 2, 3, 4, 5}
      Dim codificacao = Convert.ToBase64String(binario)
      Dim retornaBinario = Convert.FromBase64String(codificacao)

C#

  var binario = new Byte[] { 1, 2, 3, 4, 5 };
   var codificacao = Convert.ToBase64String(binario);
   var retornaBinario = Convert.FromBase64String(codificacao);

Com a popularização da internet e o consequente aumento na utilização das aplicações de comércio eletrônico e de home-banking, informações confidenciais como cartões de crédito, transações financeiras e outras são enviadas e processadas em meios não confiáveis.

Enquanto meios de comunicações suficientemente seguros para proteger este tipo de informação não surgem, a criptografia aparece como uma boa alternativa para proteção de dados.

A criptografia foca em quatro princípios gerais para proteger a informação que esta sendo armazenada ou transmitida entre as partes. Uma aplicação segura precisa aplicar uma combinação destes princípios para proteger os dados sensíveis:

  1. Autenticação
  2. Não Repúdio
  3. Integridade dos dados
  4. Confidencialidade

 

1. Autenticação

Antes que a informação recebida de uma parte possa ser considerada confiável, a fonte dessa informação deve ser autenticada para provar a legitimidade da identidade da parte que enviou a informação (emissor).

A autenticação garante que a informação é autêntica.

2. Não Repúdio

Além de provar a identidade do emissor da informação, precisa existir um mecanismo para assegurar que o emissor de fato enviou a informação.

O não repúdio garante que o emissor não negue ter assinado ou criado a informação.

Nota: O não repudio fornece provas legais de que um usuário realizou uma determinada ação, como transferir dinheiro, autorizar uma compra, ou enviar uma mensagem.

3. Integridade dos dados

Uma vez que a autenticação do emissor e a legitimidade da correspondência tenham sido confirmados, os dados precisam ser verificados para assegurar que não eles não foram modificados.

A integridade garante a exatidão da informação ou seja, garante que a informação não foi modificada.

4. Confidencialidade

A Confidencialidade é a propriedade da informação pela que não estará disponível ou divulgada a indivíduos, entidades ou processos sem autorização. Ela protege a informação de qualquer pessoa que possa interceptar a transmissão da informação.

A confidencialidade garante que a informação seja acessada somente por pessoas autorizadas.

 

Na próxima aula veremos as técnicas de criptografia.