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 meras ferramentas de trabalho ou estudo e tornaram-se parte fundamental nas mais diversas atividades de nosso cotidiano, desde a busca de um tutorial para preparo de um prato no almoço até o consumo de vídeos de entretenimento nos momentos de descanso. Mas neste contexto digital em que estamos cada vez mais imersos, 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 nos seja solicitado um cadastro para exibição completa do conteúdo. No processo de cadastro, em geral, entraremos com algumas informações (data de nascimento, cidade, estado, dentre outras), selecionaremos um nome de usuário e adotaremos uma senha. Bem, aqui entra uma questão importante: como é que esses dados são salvos? Será que ficam acessíveis em um banco de dados para todos os administradores do sistema?

Embora o modo como os dados são armazenados possa variar de acordo com o tipo de serviço e a organização provedora desse serviço, boas práticas de segurança e privacidade são um requisito obrigatório para seu funcionamento estabelecido por leis e regulamentações.

Sendo assim, quando estivermos implementando, organizando ou mantendo um sistema que processa e armazena informações de usuários, precisamos conhecer e seguir tais boas práticas para proteção dos usuários e cumprir as normas legais.

Um dos itens críticos nesse processo de cadastro é a senha que estamos escolhendo. Como o número de serviços que consumimos na internet é cada vez maior, é comum que alguns usuários utilizem uma única senha e nome de usuário para muitos desses serviços (importante destacar que essa não é uma boa prática de segurança por parte do usuário!). Imagine que essas senhas acompanhadas dos nomes de usuários, por alguma falha de segurança ocorrida em um sistema, vazem. Os dados que esses usuários informaram para diversos serviços poderão ser facilmente acessados e coletados para os mais diversos usos não autorizados.

Para resguardar as informações dos usuários de um sistema, usamos técnicas de segurança como a criptografia. Vamos entender mais sobre isso?

O que é criptografia?

A criptografia é o que nos permite manter a senha inserida por um usuário em um sistema protegida de livre acesso e leitura. Podemos entendê-la como um processo de conversão dos dados de um modo legível, facilmente acessível e decodificado, para uma forma encriptada, 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 sua leitura sem acesso a chave de encriptação. Desse modo, já podemos perceber que somente sistemas autorizados conseguirão realizar a leitura do dado encriptado. A conversão dos dados é realizada por um algoritmo de encriptação (ou algoritmo de criptografia) que define como se dará o processo com base, geralmente, em fundamentos e teorias da matemática.

A principal finalidade da criptografia é garantir a segurança da informação, sendo essencial no mundo digital para proteção dos nossos dados e daqueles que usam os sistemas que construímos e mantemos. Dentre seus objetivos e aplicações, podemos destacar:

  • Comunicação segura: Garantia da confidencialidade das informações inseridas por usuários em um aplicativo durante a sua transmissão pela rede até o servidor de hospedagem do serviço. Assim, mesmo se os dados forem interceptados, não será possível sua identificação, protegendo os dados dos usuários que trafegam em redes de computadores.

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

  • Segurança no armazenamento de dados: Proteção dos dados armazenados em data centers, smartphones, computadores pessoais, sistemas corporativos e serviços de computação em nuvem.

  • Integridade: Garantia da inviolabilidade dos dados durante sua transmissão em redes e armazenamento nos mais variados dispositivos.

  • Não repúdio: Verificação do encaminhamento de mensagens e realização de transações, impedindo que um usuário possa repudiar uma ação que tenha efetivamente realizado.

  • Confidencialidade: Garantia que as informações só serão acessadas pelos sistemas ou usuários devidamente autorizados.

Poderíamos pensar aqui 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 e proteção dos dados. Assim, sua aplicação vai desde um site de notícias que exige um simples cadastro de usuário 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 comumente categorizados em dois grupos principais: simétricos e assimétricos. Vamos entender um pouco mais sobre isso!

Banner de divulgação da Imersão IA da Alura em colaboração com o Google. Mergulhe em Inteligência artificial com a Alura e o Google. Serão cinco aulas gratuitas para você aprender a usar IA na prática e desenvolver habilidades essenciais para o mercado de trabalho. Inscreva-se gratuitamente agora!

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!?

Assim, pensando no processo de criptografia, não basta apenas proteger um dado com alguma técnica de encriptação baseada em uma teoria matemática, precisamos garantir que esse dado seja acessível pelos sistemas ou usuários autorizados. Por isso, usamos chaves na criptografia e descriptografia de um dado. A 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.

Algoritmos de criptografia simétricas

Esse método usa as mesmas chaves tanto para criptografar dados inseridos pelo usuário 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 que seja possível utilizar a mesma chave na criptografia e descriptografia é necessário o seu compartilhamento entre as partes envolvidas. Utilizamos esse tipo de criptografia quando queremos realizar comunicação ponto a ponto de modo seguro (VPNs, sistemas IoT, mensagens de chat, transferência de arquivos, dentre outros casos).Também é usado em sistemas corporativos ou controlados, em que as partes envolvidas podem compartilhar a mesma chave de forma segura (redes corporativas, comunicação entre servidores, sistemas de backup, dentre outros).

O Advanced Encryption Standard (Padrão Avançado de Criptografia), mais conhecido pelo acrônimo AES, é um exemplo de algoritmo de criptografia simétrica bastante utilizado, apresentando chaves com tamanhos diferentes (128 bits, 192 bits e 256 bits) e atuando na conversão de blocos de dados fixos de 128 bits (16 bytes).

Algoritmos de criptografia assimétrica

Já esse método adota pares de chaves, sendo uma chave pública e uma chave privada, para criptografar e descriptografar dados. Dessa forma, cada parte envolvida na comunicação deve possuir um par de chaves. Sua chave pública será conhecida por todas as demais partes, enquanto sua chave privada deve ser mantida protegida.

Assim, caso você queira usar um serviço de e-mails seguro que realize criptografia de ponta a ponta, algoritmos de criptografia assimétrica são os mais recomendados. Vamos entender como ele funciona.

O remetente irá preparar o e-mail e utilizará a chave pública do destinatário para criptografá-lo. Por sua vez, o destinatário somente conseguirá acesso ao conteúdo do e-mail após o processo de descriptografia usando a sua própria chave privada. Desse modo, nenhum dispositivo ou usuário no meio do caminho conseguirá ter acesso a 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 processo computacional que demandaria dezenas de anos de tentativas e erros.

Quando você acessa um site com "https://" e vê um cadeado 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 - 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 eletrônicos.

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 na realização de diversas transações online (operações bancárias, assinatura de documentos, envio de declarações, emissão de procurações).

Tais 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 realização das operações no ambiente digital, sendo 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.

Dessa forma, as autoridades certificadoras são responsáveis diretas pela emissão e gerenciamento dos certificados digitais, tendo seu registro de operação regulado pela Autoridade Certificadora Raiz da ICP-Brasil. O modelo de infraestrutura adotado no Brasil é 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.

Já 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 duas 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 um outro tipo de criptografia que ainda não mencionamos aqui, a criptografia homomórfica. Vamos entender como utilizá-la também como uma solução de segurança.

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, evitando sua exposição. Essa área é conhecida como criptografia homomórfica, sendo formada por técnicas de criptografia que permitem o processamento dos dados no formato criptografado, obtendo resultados igualmente criptografados que posteriormente podem passar pelo processo de descriptografia. Confira a imagem que contém um diagrama 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 por partes:

  • 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" (representando que está criptografado);
  • 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 dessa operação é um novo arquivo identificado como "dado P(X)" com um "K", indicando que a operação foi realizada sobre os dados criptografados;
  • 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 privacidade dos dados durante o processamento.

O termo “homomórfica” deriva do 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, evitando que os dados criptografados 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, e 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, quando queremos processar informações na nuvem sem revelar o seu conteúdo para os provedores do serviço, analisar dados sensíveis, tais como registros de saúde e financeiros de usuários, e terceirizar o processamento de dados sem quebra de sigilo e confidencialidade.

Assim, entendemos 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 sensíveis ou utilizando infraestrutura computacional de terceiros. 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, destacando seus principais objetivos e aplicações práticas na implementação e manutenção de sistemas. Exploramos também os principais tipos de criptografia mais 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ê pode dar os primeiros passos no desenvolvimento de sistemas seguros, selecionando algoritmos de criptografia para proteção dos dados durante o seu armazenamento em banco de dados e transmissão entre diferentes sistemas.

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