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:
- Autenticação
- Não Repúdio
- Integridade dos dados
- 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.