Criptografia: entendendo as diferenças entre simétrica, assimétrica e homomórfica

Criptografia: entendendo as diferenças entre simétrica, assimétrica e homomórfica
Lucas Ribeiro Mata
Lucas Ribeiro Mata

Compartilhe

As tecnologias digitais deixaram de ser apenas ferramentas de trabalho ou estudo, elas se tornaram parte das mais diversas atividades do nosso cotidiano, desde a busca por um tutorial para preparar uma receita no almoço até assistir vídeos de entretenimento nos momentos de descanso.

Mas, neste contexto digital em que estamos cada vez mais inseridos, há uma crescente preocupação com nossa privacidade e sigilo de informações pessoais.

Afinal, quando acessamos um serviço na internet, tal como um site de notícias, é comum que seja solicitado um cadastro para a exibição completa do conteúdo.

Neste formulário, em geral, devemos inserir algumas informações, comodata de nascimento, cidade, estado, dentre outras, selecionar um nome de usuário ou usuária e criar uma senha.

É neste momento que entra uma importante questão: como esses dados são salvos? Eles ficam acessíveis em um banco de dados para todas as pessoas que administram o sistema?

Embora o modo como os dados são armazenados possa variar de acordo com o tipo de serviço e sua organização provedora, boas práticas de segurança e privacidade são obrigatóriaspara ter um tratamento de dados conforme estabelecido pelas regulamentações da Lei Geral de Proteção de Dados (LGPD).

Sendo assim, na hora de implementar, organizar, ou manter um sistema que processa e armazena informações pessoais, é preciso conhecer e seguir as boas práticas para proteção dos usuários e usuárias e cumprir as normas legais.

Um dos itens críticos nesse processo de cadastro é a [senha] (https://www.alura.com.br/artigos/como-armazenar-senhas-no-banco-de-dados-de-forma-segura) que escolhemos.

Uma vez que o número de serviços que consumimos na internet é cada vez maior, é comum que algumas pessoas utilizem uma única senha e nome de usuário (a) para diferentes sites.Imagine que esses logins, por alguma falha de segurança ocorrida em um sistema, vazem no ambiente virtual.

Com isso, todos os dados que as pessoas informaram para serviços variados, poderão ser facilmente acessados e coletados para os mais diversos usos não autorizados.

Para resguardar as informações dos usuários e usuárias de um sistema, usamos técnicas de segurança avançada, como a criptografia. Vamos entender mais sobre essa tecnologia? Continue a leitura!

O que é criptografia?

A criptografia é a tecnologia que nos permite manter a senha inserida em um site protegida de livre acesso e leitura.

Portanto, podemos entender que ela é um processo de conversão de dados de um modo legível, facilmente acessível e decodificado, para uma forma encriptada e não decodificável.

Um diagrama com um arquivo identificado como “dado original” que vai para o “algoritmo de criptografia” e sai como um novo arquivo identificado como “dado criptografado”.

No formato não decodificável, mesmo que seja obtido acesso ao dado, não será possível realizar a leitura sem o acesso à chave de encriptação.

Desse modo, somente sistemas autorizados conseguirão realizar a codificação das informações criptografadas.

A conversão dos dados é realizada por um [algoritmo] (https://www.alura.com.br/artigos/por-que-estudar-algoritmos) de encriptação (ou algoritmo de criptografia), que define como se será feito o processo, geralmente, com base em fundamentos e teorias da matemática.

A principal finalidade da criptografia é garantir a segurança da informação,o que é essencial no mundo digital para proteção de dados pessoais e sensíveis dentro de sistemas. Dentre seus objetivos e aplicações, podemos destacar:

  • Comunicação segura: garantia da proteção das informações inseridas por usuários e usuárias em um aplicativo durante a sua transmissão pela rede até o servidor de hospedagem do site. Assim, mesmo se os dados forem interceptados, não será possível sua identificação.

  • Autenticação: verificação da identidade de usuários e usuárias, e seus dispositivos, confirmando a autenticidade de suas informações.

  • Segurança no armazenamento de dados: proteção das informações armazenadas em data centers, smartphones, computadores pessoais, sistemas corporativos e serviços de computação em nuvem.

  • Integridade: garantia da não violação dos dados durante sua transmissão em redes e armazenamento nos mais variados dispositivos.

  • Não repúdio: verificação de mensagens e realização de transações, impedindo que um usuário ou usuária possa negar uma ação que tenha efetivamente realizado.

  • Confidencialidade: garantia que as informações só serão acessadas pelos sistemas ou pelas pessoas devidamente autorizadas.

Poderíamos pensar em múltiplas aplicações da criptografia, pois já conseguimos perceber que é um elemento essencial nos mais diversos serviços do mundo digital para garantir a confidencialidade, integridade, [autenticidade] (https://www.alura.com.br/artigos/autenticacao-de-forma-segura-com-criptografia) e proteção dos dados.

Assim, sua aplicação vai desde um site de notícias, que exige um simples cadastro de usuário (a) para acesso às publicações, até o aplicativo de transações financeiras de um banco.

Vale ressaltar que os algoritmos de encriptação são frequentemente categorizados em dois grupos principais: simétricos e assimétricos. Vamos entender um pouco mais sobre esses tipos de criptografias.

Leia também: Sensitive Data Exposure

Banner da Escola de DevOps: Matricula-se na escola de DevOps. Junte-se a uma comunidade de mais de 500 mil estudantes. Na Alura você tem acesso a todos os cursos em uma única assinatura; tem novos lançamentos a cada semana; desafios práticos. Clique e saiba mais!

O que são algoritmos de criptografia simétricas e assimétricas?

Quando protegemos algum bem físico valioso com um cadeado em casa, usamos uma chave para acessá-lo sempre que necessário, não é mesmo?

Logo, ao pensar no processo de criptografia, não basta apenas proteger um dado com alguma técnica de encriptação baseada em uma teoria matemática, é preciso garantir que esse dado seja acessível pelos sistemas ou usuários e usuárias autorizados.

Por esta razão, usamos chaves na criptografia e descriptografia de um dado. Esta chave é gerada pelo algoritmo de criptografia, sendo formada normalmente por uma sequência aleatória de bits.

A classificação dos algoritmos de criptografia é baseada nos dois tipos principais de chaves utilizadas: simétrica e assimétrica.

Algoritmos de criptografia simétricas

Esse método usa as mesmas chaves tanto para criptografar dados inseridos pela pessoa usuária em um formulário, como para descriptografá-los em um sistema ou dispositivo autorizado.

Um diagrama com um arquivo identificado como “mensagem codificada” que vai para o “Decodificação com a chave simétrica” e sai como um novo arquivo identificado como “mensagem original” que contém a frase “Olá, tudo bem? Abraços”.

Para ser possível utilizar a mesma chave na criptografia e descriptografia, é necessário haver o seu compartilhamento entre as partes envolvidas.

Utilizamos esse tipo de código quando queremos realizar comunicação ponto a ponto de modo seguro (VPNs, sistemas IoT, mensagens de chat, transferência de arquivos, entre outros casos).

Ele também é usado em sistemas corporativos ou controlados, em que as partes envolvidas podem compartilhar a mesma chave de forma segura, comoredes corporativas, comunicação entre servidores e sistemas de [backup] (https://www.alura.com.br/artigos/restaurar-backup-banco-de-dados-mysql).

O Advanced Encryption Standard (Padrão Avançado de Criptografia), mais conhecido pela sigla AES, é um exemplo de algoritmo de criptografia simétrica bastante utilizado.

Ele apresenta chaves com tamanhos diferentes (128 bits, 192 bits e 256 bits) e atua na conversão de blocos de dados fixos de 128 bits (16 bytes).

Algoritmos de criptografia assimétrica

Esse tipo de criptografia adota pares de chaves, sendo uma pública e uma privada, para criptografar e descriptografar dados.

Dessa forma, cada parte envolvida na comunicação deve possuir um par de chaves. A pública será conhecida por todas as partes, enquanto a privada deve ser mantida protegida.

Com isso, caso você queira usar um serviço de e-mails seguro que tenha proteção de ponta a ponta, algoritmos de criptografia assimétrica são os mais recomendados.

Na prática, funciona assim: o remetente prepara o e-mail e utiliza a chave pública do destinatário ou destinatária para criptografá-lo.

Por sua vez, o (a) destinatário (a) somente conseguirá acessar o conteúdo do e-mail após realizar o processo de descriptografia, usando sua própria chave privada.

Desse modo, nenhum dispositivo ou pessoa usuária no meio do caminho conseguirá ter acesso à mensagem encaminhada.

O Rivest–Shamir–Adleman (RSA) é um exemplo de algoritmo de criptografia assimétrica utilizado nos protocolos de segurança da internet (SSL e TLS), serviços de e-mails e acesso seguro a servidores e outros dispositivos computacionais por meio do protocolo SSH.

O RSA se baseia, matematicamente, na dificuldade de fatorar o produto de dois números primos com vários dígitos (por exemplo, acima de 100).

Quanto maior o número de dígitos, mais complexo e difícil será o processo de quebra da criptografia, um procedimento computacional que demandaria dezenas de anos de tentativas e erros.

Quando você acessa um site com [“https://”] (https://www.alura.com.br/artigos/qual-e-diferenca-entre-http-e-https) e vê um cadeado verde na barra de endereço do navegador, isso indica que a comunicação entre o seu navegador e o servidor web está protegida usando um algoritmo de criptografia assimétrica.

O Digital Signature Algorithm (DSA), ou Algoritmo de Assinatura Digital, é outro exemplo de algoritmo de criptografia assimétrica adotado no processo de coleta de assinaturas digitais para documentos eletrônicos.

As assinaturas digitais são fundamentais na autenticação da origem e garantia da integridade de documentos online.

A seguir, vamos entender o uso desse método de criptografia e os certificados digitais.

Criptografia assimétrica e os certificados digitais

Uma aplicação prática da criptografia assimétrica são os certificados digitais. Os certificados digitais são uma tecnologia de autenticação da identidade digital de uma pessoa, organização ou mesmo um dispositivo eletrônico, garantindo maior [segurança] (https://www.alura.com.br/podcast/hipsterstech-fundamentos-de-ciberseguranca-hipsters-ponto-tech-362-a2337) na realização de diversas transações online, como operações bancárias, assinatura de documentos, envio de declarações e emissão de procurações.

Esses certificados são documentos eletrônicos que contêm dados sobre a identidade da entidade e chaves criptográficas (uma pública e uma privada) para realizar as operações no ambiente digital.

Eles são emitidos com período de validade previamente definido por uma Autoridade Certificadora (AC).

No Brasil, para garantir o bom funcionamento do sistema nacional de certificação digital, há uma hierarquia de confiança conhecida como Infraestrutura de Chaves Públicas Brasileira (ICP - Brasil) que atua na viabilização da emissão de certificados digitais para identificação de pessoas físicas e jurídicas, também chamados de e-CPF e e-CNPJ.

Dessa forma, as autoridades certificadoras são responsáveis diretas pela emissão e gerenciamento dos certificados digitais, considerando seu registro de operação regulado pela Autoridade Certificadora Raiz da ICP-Brasil.

O modelo de infraestrutura adotado no país é o de certificação com raiz única, tendo o Instituto Nacional de Tecnologia da Informação (ITI) o papel de AC - Raiz.

Criptografia simétrica ou assimétrica? Qual usar?

Ao analisarmos os dois tipos principais de algoritmos de criptografia, podemos constatar que:

  • Algoritmos de criptografia simétrica: possuem implementação e uso simplificado, demandam menos recursos e tempo de processamento e são capazes de lidar com grandes volumes de dados.

Por outro lado, o uso de uma chave compartilhada demanda cuidados em relação a sua proteção para evitar o comprometimento dos dados criptografados.

  • Algoritmos de criptografia assimétrica: tendem a demandar mais recursos e tempo, porém garantem a confidencialidade e autenticação das informações entre duas partes.

Caso a chave pública compartilhada entre as partes seja perdida, os dados não serão comprometidos, pois só podem ser descriptografados usando a chave privada da parte proprietária.

A seleção do tipo de criptografia que será usado em um projeto deve passar por uma análise do contexto da aplicação e os requisitos de segurança definidos.

Uma prática cada vez mais comum consiste na adoção de uma abordagem híbrida que integre as melhores características de cada tipo para criar soluções mais robustas e seguras.

Para entender melhor sobre como usar a criptografia no processo de autenticação, confira o artigo: “Autenticação de forma segura com criptografia”.

Talvez você já tenha ouvido falar em outro tipo de criptografia que ainda não mencionamos aqui: a criptografia homomórfica.

Chegou a hora de entendermos como utilizá-la como uma solução de segurança. Leia também: Tipos de Autenticação — Senha, Token, JWT, Dois Fatores e Mais

Criptografia homomórfica

Com a importância crescente da segurança dos dados, foi criado um novo ramo de estudo, desenvolvimento e aplicação da criptografia com intuito de possibilitar o processamento de dados no formato criptografado: a criptografia homomórfica.

Formada por técnicas de criptografia que permitem o processamento dos dados no formato criptografado, esse tipo de tecnologia obtém resultados igualmente protegidos que, posteriormente, podem passar pelo processo de descriptografia.

Confira a imagem que representa esse processo:

Um diagrama com um arquivo identificado como “dado X” que vai para a “função de criptografia” e sai como um novo arquivo identificado como “dado X” com um K (representando que está criptografado), em seguida vai para “Avaliação” com a operação P e sai como novo arquivo identificado como “dado P(X)” com um K, que segue para a “Função de descriptografia” que retorna o arquivo “dado P(X)” descriptografado.

Vamos analisar o diagrama passo a passo

  • 1º passo: inicialmente, temos um arquivo identificado como “dado X”, que é submetido a uma “função de criptografia”, resultando em um novo arquivo identificado como “dado X” com um “K” (o que indica que está criptografado);

  • 2º passo: esse arquivo criptografado é então enviado para a etapa de “avaliação”, onde uma operação matemática representada como “P” é realizada sobre o dado criptografado. O resultado desse processo é um novo arquivo identificado como “dado P(X)” com um “K”, indicando que a operação foi realizada sobre as informações criptografadas;

  • 3º passo: por fim, o arquivo “dado P(X)” criptografado é encaminhado para a “função de descriptografia”, que o retorna descriptografado.

Assim, entendemos que a criptografia homomórfica permite que operações sejam realizadas sobre dados criptografados sem a necessidade de descriptografá-los, garantindo a segurança e a privacidade dos dados durante o processamento.

O termo “homomórfica” é derivadodo conceito matemático em que essa forma de criptografia está baseada: o homomorfismo matemático. Podemos defini-lo como uma função que preserva a estrutura algébrica de dois conjuntos, permitindo que as operações realizadas sobre elementos de um conjunto possam ser mapeadas de forma coerente para elementos correspondentes do outro conjunto. É importante destacar que os algoritmos de criptografia tradicional são concebidos de modo a não apresentar homomorfismo, o que evita que os dados protegidos tenham uma estrutura relacionada com os dados originais.

Ao usarmos a criptografia homomórfica, reduzimos a probabilidade de vazamento dos dados com a redução do seu tempo de exposição nas ações de criptografia e descriptografia para processamento, e obtemos maior controle sobre a disponibilidade das informações.

A implementação desse método é mais complexa, consumindo mais recursos computacionais, o que não é uma solução adequada para todas as aplicações de criptografia, tais como as que analisamos anteriormente.

A criptografia homomórfica é mais indicada, em geral, nas seguintes situações:

  • para processar informações na nuvem sem revelar o seu conteúdo para os provedores do serviço;
  • para analisar dados sensíveis, como registros de saúde e financeiros;
  • para terceirizar o processamento de dados sem a quebra de sigilo e confidencialidade.

Com estes cenários, é possível compreender que as principais aplicações da criptografia homomórfica estão relacionadas com a garantia da privacidade e confidencialidade dos dados quando estamos lidando com informações sigilosas ou utilizando infraestrutura computacional de outras pessoas.

Seus algoritmos, baseados no homomorfismo matemático, são computacionalmente intensivos, apresentando maior lentidão em relação aos algoritmos de criptografia tradicionais.

Conclusão

Analisamos ao longo deste artigo a importância da criptografia, seus principais objetivos e aplicações práticas na implementação e manutenção de sistemas.

Exploramos também os principais tipos de criptografia: tradicionais, simétrico e assimétrico, e a criptografia homomórfica, que possui grandes potencialidades na garantia da confidencialidade de dados sensíveis, contudo ainda está em processo de evolução da maturidade tecnológica.

Agora, você já pode dar os primeiros passos no desenvolvimento de sistemas seguros, selecionando algoritmos de criptografia para proteção de informações durante o seu armazenamento em banco de dados e transmissão entre diferentes sistemas.

Se você quer conhecer mais a fundo as técnicas e os tipos de criptografia e tokenização, conheça nosso curso exclusivo sobre [Node.js: criptografia e tokens JWT] (https://www.alura.com.br/curso-online-nodejs-criptografia-tokens-jwt) e aprenda como proteger seus sistemas de ponta a ponta.

Não esqueça de visitar nosso canal no YouTube para conferir mais conteúdo sobre criptografia na proteção de dados e como essa área pode mudar a sua carreira na tecnologia.

Assista ao episódio sobre cibersegurança do nosso programa Hipsters.Tube agora mesmo:

Lucas Ribeiro Mata
Lucas Ribeiro Mata

Professor universitário, Instrutor e Engenheiro de Pesquisa e Desenvolvimento. Possui graduação em Engenharia Mecânica pela Escola Politécnica da UFRJ e Mestrado em Engenharia Elétrica com foco em Sistemas Eletrônicos pela Escola Politécnica da USP/University of Twente.

Veja outros artigos sobre DevOps