Buscar

Criptografia: Origem e História

A origem da palavra “criptografia” vem da junção de duas palavras gregas, “Kryptós” e “Gráphein”, que significam “oculto” e “escrever” respectivamente. Logo, a palavra “criptografia” se refere a uma maneira de se ocultar aquilo que está escrito. Em uma definição menos semântica, a criptografia se refere a um conjunto de ações e regras que tem como objetivo garantir que uma informação não possa ser recebida por ninguém exceto o destinatário.


Para esclarecer, a criptografia não impede que alguém intercepte uma mensagem sua, mas sim que esse alguém não consiga compreender o conteúdo da mensagem.


Origem


A ideia de criptografar mensagens para tais propósitos é muito antiga e remonta à momentos anteriores ao surgimento dos primeiros computadores. Durante a história humana diversos foram os métodos utilizados para se criptografar mensagens de modo a aumentar a segurança da troca de informações. Desde métodos arcaicos e que agregam pouca segurança as mensagens, até métodos que foram extremamente complexos e revolucionários para sua época.


Podemos citar três métodos antigos de criptografia: a tumba de Khnumhotep II no Egito antigo, que trocava alguns hieróglifos para aumentar o mistério em torno da história da tumba; a “Cifra de César”, utilizado pelo imperador Júlio César para proteger mensagens de significado militar; e a máquina “Enigma” que foi utilizada na Segunda Guerra Mundial pelo exército alemão. Como é perceptível, a criptografia costumava ser utilizada principalmente para fins militares. Informação se tornou uma poderosa arma.



Maquina Enigma - Utilizada na 2ª Guerra pelos alemães




Cifra de César utilizada por Júlio César


Atualmente a criptografia não é utilizada somente para fins militares, mas também para todos os outros tipos de comunicações, em aplicativos, transações bancárias, etc.


Existem diversos métodos de criptografia, eles compartilham entre si algumas similaridades. Contudo, atualmente saber qual o tipo de criptografia de uma mensagem não é mais o suficiente para que seja possível acessar o conteúdo dessa mensagem.


Métodos


Os métodos de criptografia comumente utilizam chaves, que são uma sequência de números pré-definidos, sem essa sequência, a criptografia da mensagem se torna impossível. Essas chaves podem ser por exemplo de 4 bits, similar à utilizar um cadeado de combinação de 2 números, ou de 256 bits, que nos daria algo maior que 1,57e77, um número de combinações tão grande que é até difícil de se imaginar.


Dentro dos diversos tipos de criptografias podemos citar a Criptografia Simétrica e a Criptografia Assimétrica. Utilizando o simples conceito de uma mensagem de texto podemos exemplificar a ideia por trás desses dois tipos de criptografia.


Criptografia Simétrica


Imagine que uma mensagem deve ser enviada de um ponto A para um ponto B, através dessa técnica a mensagem original é convertida em uma mensagem criptografada. Essa mensagem não é um texto com as letras sem sentido como no caso da “Cifra de César” mas sim um conjunto de dados que só fará qualquer sentido caso você tenha acesso a chave gerada no momento de criptografia da sua mensagem.


Nesse tipo de criptografia a mesma chave usada para a codificação da mensagem é utilizada para a decodificação e sem ela, mesmo que a mensagem seja interceptada antes de chegar ao destino, ela não terá sua informação vazada.


Nesse tipo de codificação para comunicação as “chaves simétricas” costumam ser geradas em cada sessão de envio e invalidadas para a posterior, ou seja, cada mensagem enviada costuma possuir uma chave diferente para ser decodificada.


Esse tipo de criptografia possui dois problemas principais, o primeiro é a chave pode ser interceptada enquanto é enviada para o destinatário, sendo assim o interceptador poderia utilizá-la para decifrar a mensagem que viria posteriormente.


O segundo ponto problemático é a escalabilidade da geração de chaves. Ou seja, se houvessem 10 conversas acontecendo simultaneamente seriam necessárias 10 chaves diferentes, uma para cada conversa, e assim por diante, conforme forem aumentando o número de conversas, o que se tornaria um grande problema a medida que o número de chaves que precisassem ser geradas se aproximasse do número máximo de combinações que os bits dessa chave permitissem.


Criptografia Assimétrica


Nesse tipo de criptografia existem duas chaves, uma chave pública que será compartilhada com quem quer que esteja na conversa, e uma chave privada, que será mantida exclusivamente com o proprietário que a gerou.


Nesse método uma mensagem codificada com uma chave pública só poderia ser decifrada utilizando a chave privada, e vice-versa. Esse método já aumenta a segurança da troca de informações, uma vez que a chave privada nunca é transmitida.


Um dos problemas desse método é que ele é mais lento que a Criptografia Simétrica o que faz com que não seja recomendado para grandes fluxos de dados. Além disso, apesar do aumento de segurança ainda estamos longe de eliminarmos os problemas de roubo de informações durante a transmissão, visto que a chave pública ainda pode ser roubada como no caso anterior.


Tendo isto em mente, geralmente é utilizado uma junção dos dois métodos, dessa maneira são gerados dois pares de chaves público-privada, onde as chaves públicas são compartilhadas, mas as chaves privadas são mantidas cada uma com seu respectivo proprietário.


Usando mais uma vez do exemplo de um aplicativo de troca de mensagens: diremos que o ponto A que ser comunicar com o ponto B. Desse modo A e B possuem cada um sua chave privada e conhecem a chave pública do outro, antes do envio da mensagem, o ponto A gera uma chave de sessão simétrica, mas ao invés de enviá-la conforme foi gerada, o ponto A usa a chave pública do ponto B para codificar a chave de sessão simétrica, pois desse modo somente B poderá decodificar a chave, já que somente ele possui a chave privada correspondente.


Desse modo todas as mensagens enviadas serão codificadas usando a chave simétrica gerada pelo ponto A no começo da troca de informações. Chave essa que só poderia ser decifrada pelo ponto B, eliminando assim o problema de velocidade da troca de informações, uma vez que apenas no início seria usada a técnica de “Criptografia Assimétrica”.


Claramente esse método não é perfeito, mas é muito mais seguro, seu maior problema é: caso a chave pública utilizada para codificar a chave de sessão simétrica não tenha vindo do ponto B como foi assumido inicialmente, mas sim de algum invasor tentando se passar pelo ponto B.


Outras técnicas


Contudo, essas são apenas algumas técnicas de criptografia. Podem ser utilizadas, como já exemplificado, de diversas maneiras diferentes. como na prática, uma chave de sessão simétrica para cada mensagem ou para toda a troca de informações, o uso combinado de chaves simétricas e assimétricas, e etc. Portanto são necessários protocolos e definições dos diversos métodos e tecnologias acerca da criptografia.


Os protocolos de criptografia irão definir como as mensagens serão codificadas e decodificadas. Ou seja, eles irão definir quais técnicas serão utilizadas, quantas chaves, que tipos de chaves, quando uma chave será gerada ou descartada, entre outras questões.


Por exemplo o protocolo 3DES trabalha com três chaves de 56 bits cada, o que gera uma chave de 168 bits, enquanto seu predecessor o DES utilizava apenas uma chave de 56 bits. Como já dito, os padrões de criptografia não se diferenciam apenas na quantidade de bits ou de chaves utilizadas, mas sim a uma gama de outros fatores.


Atualmente um dos protocolos mais seguros é o AES que é utilizado como padrão pelo governo dos Estados Unidos e diversas outras grandes organizações. Esse protocolo já é incrivelmente eficiente na forma básica de 128 bits, mas também pode ser utilizado com 256 bits.


O AES é comumente considerado imune a todos os ataques, exceto os ditos “ataques de força bruta” que usam de hardwares e equipamentos poderosos para testar todas as combinações possíveis no menor intervalo de tempo possível.


Por fim, o principal objetivo da criptografia é proteger informações pessoais, desse modo, qual protocolo utilizar (ou as vezes sequer utilizar um protocolo específico), o tamanho das chaves de codificação e decodificação e outros fatores, dependem do tipo de informação, dos recursos disponíveis e do meio pelo qual se envia a informação. Claramente não utilizaríamos um AES-256 para codificar uma lista de compras de supermercado ou a “língua do P” para uma informação militar vital.

BLOG

Ramo Estudantil IEEE-UEL — 2011 - 2020