Atenção: esse artigo tem um vídeo complementar. Clique e assista!

´
De que se trata o artigo

Este artigo trata de um tópico fundamental e muito importante inerente à segurança da informação que é conhecido como criptografia de dados. O objetivo é explorar o conceito e entender de que forma o .NET Framework suporta estes mecanismos de segurança.


Em que situação o tema é útil

A criptografia de dados serve para assegurar o sigilo e a autenticidade de informações, esta proteção é realizada através de complexos algoritmos matemáticos que geram uma saída ininteligível. Esta nova versão somente poderá ser decifrada com o uso de uma chave secreta, o que garante que se dados forem capturados em trânsito ou de alguma outra fonte de persistência, estes mesmos dados estarão incompreensíveis ao agente caputrador. Talvez a criptografia de dados sensíveis como senha, número de cartão de crédito e etc. seja o cenário mais trivial onde este conceito é empregado, entretanto existem muitas outras situações onde a criptografia é bem vinda, por exemplo, para ocultar dados da string de conexão com banco de dados dentro do arquivo de configuração quando o uso de autenticação integrada não é utilizado ou quando se deseja transmitir um arquivo confidencial através da internet ou até mesmo em uma rede local.

Criptografia em .NET

O objetivo da criptografia é garantir confidencialidade, integridade e autenticidade de uma informação. Veremos neste artigo alguns aspectos importantes e inerentes à segurança da informação, onde exploraremos a necessidade crescente por softwares mais seguros, o papel que cada um ocupa para atingir os objetivos sobre segurança, modelos criptográficos e muito mais. Na seção prática será criada uma aplicação que explora a utilização das classes de criptografia fornecidas pelo .NET Framework.

Certas coisas na vida possuem pré-requisitos implícitos, exemplo disto é a situação de um indivíduo que vai a um restaurante e que sempre presume que este utilize critérios rigorosos de higiene e conservação de alimentos ou que um serviço de transporte aéreo civil possui uma equipe de profissionais altamente capacitados para conduzir o vôo com segurança da origem ao destino.

Isto é o mínimo que se espera quando requisitamos estes tipos de serviços e baseado nesta observação é pertinente dizer que quem utiliza um produto de software, espera que este por sua vez seja seguro e confiável, ou seja, que este software não permita que dados privilegiados e sigilosos fiquem livres e expostos à mercê de pessoas mal intencionadas, não é preciso especificar isto por se tratar de algo essencial para o bom funcionamento de um software.

Bem, este é o ponto de vista de uma das partes dos envolvidos em um projeto de software, o do usuário. Do outro lado temos a equipe de projetistas composta por analistas funcionais, analista de sistemas, arquitetos, administradores de banco de dados, gerentes de projetos etc., que são os responsáveis por cumprir o papel de elaboradores do sistema. Por razões diversas e adversas em algumas situações estas equipes de desenvolvimento negligenciam aspectos importantes na segurança em projetos de software, seja por motivos de desconhecimento, pressão por prazos de entrega cada vez menores, culturas corporativas ou cortes nos custos do projeto.

Opiniões pessoais colocadas à parte, é consenso dizer que o entendimento acerca de recursos de segurança no âmbito computacional é algo extremamente importante e interfere diretamente na qualidade da entrega final de um produto.

A necessidade de segurança

Em algum tempo atrás, os softwares tendiam ser isolados, sendo executados em um microcomputador exclusivamente, onde existiam barreiras físicas que impediam que intrusos obtivessem acesso a informações restritas. Obviamente que o uso da engenharia social era uma vulnerabilidade existente e uma forma de exploração de informações, entretanto o mundo digital mudou e atualmente é improvável pensar em software como um elemento isolado.

Com o aumento da conectividade e prevalência do software em rede, as barreiras físicas já não existem mais. E outra consideração importante é dizer que com o apoio do software, hoje controlamos recursos físicos valiosos, e que no mundo virtual de hoje há alguns que usurpam muito facilmente identificando-se em nome de outras pessoas, obtendo controle para adulteração de informações na rede. Ameaças como vírus que até dispositivos móveis atacam é algo que preocupa cada vez mais a comunidade digital e estas são as motivações que promovem movimentos a favor de softwares seguros.

Papéis na segurança do software

Quando pensamos em segurança da informação temos que ter em mente que isto é um objetivo alcançado no coletivo, onde cada um desempenha um papel importante para garantir efetividade na segurança. Isto quer dizer que de nada adianta a equipe de desenvolvimento criar um mecanismo de autenticação que envolva a criação de uma senha composta com a mescla de caracteres numéricos, alfanuméricos e caracteres especiais e que esta senha deva ser alterada de trinta em trinta dias, se o usuário da aplicação anotar esta senha em um pedaço de papel e deixá-lo debaixo do teclado ou até mesmo compartilhar seu acesso de forma indevida com outras pessoas. Nisto, todo o trabalho de uma ponta foi inviabilizado por outra. Para evitar estes problemas, trabalhos de conscientização devem ser realizados periodicamente com o propósito de minimizar ações deste tipo.

...
Quer ler esse conteúdo completo? Tenha acesso completo