O que é criptografia e como funciona?
Você provavelmente já viu o termo “criptografia” usado na Internet.
Principais conclusões
- A criptografia é uma tecnologia crucial para a segurança digital, garantindo a privacidade ao transformar os dados em formato ilegível para quem não tem acesso.
- Técnicas históricas de criptografia como Scytale, Polybius Square e Caesar's Cipher influenciaram os sistemas modernos de criptografia.
- Hoje, a criptografia funciona usando algoritmos que dependem da fatoração de números extremamente grandes em números primos e protegem dados armazenados, sites seguros e comunicação digital segura.
Você provavelmente já viu o termo “criptografia” usado na Internet. Então o que é? Pode ser a tecnologia mais importante que temos. A maioria das medidas de segurança digital, desde navegação segura até e-mail seguro, depende disso. Sem criptografia, não teríamos privacidade.
Este artigo da Semana de Conscientização sobre Segurança Cibernética foi trazido a você em associação com a Incogni.
O que é criptografia?
A criptografia altera a composição de uma mensagem ou de dados para que somente pessoas que saibam como devolvê-los à sua forma original possam lê-los. Para qualquer outra pessoa, parecerá um jargão ou uma coleção sem sentido de caracteres e símbolos.
Isso é extremamente útil se você estiver enviando informações confidenciais ou privadas – um bom esquema de criptografia mantém essas informações longe de olhares indiscretos. Um esquema de criptografia apenas descreve como uma mensagem ou dados são alterados para torná-los ilegíveis. Daremos alguns exemplos históricos e depois discutiremos como isso é feito hoje.
O Scytale
Desde os primeiros tempos, as pessoas têm usado diferentes técnicas para impedir que qualquer pessoa, exceto o destinatário pretendido, leia mensagens privadas. Os antigos gregos enrolavam uma tira de pergaminho em uma espiral apertada em torno de uma haste de madeira chamada scytale. Eles escreveram sua mensagem ao longo da vara, sobre o pergaminho embrulhado.
Desenrolado, a escrita no pergaminho não fazia sentido. Um mensageiro entregaria o pergaminho ao destinatário, que leria a mensagem em particular, tendo primeiro enrolado-o em seu próprio scytale correspondente. Esta é uma forma de cifra de transposição.
É uma técnica primitiva, mas possui elementos que você encontrará em sistemas de criptografia modernos. Tanto o remetente quanto o destinatário devem saber antecipadamente qual é o esquema de criptografia e como usá-lo. E ambos precisam de mecanismos correspondentes para fazer isso.
A Praça Políbio
Outro método usado pelos antigos gregos era o quadrado de Políbio. Esta era uma grade de letras de cinco por cinco ou seis por seis. Uma carta foi referenciada por suas coordenadas, como os navios de guerra do jogo. A primeira letra da primeira linha foi codificada como “11”, a quarta letra da segunda linha seria escrita como “42” e assim por diante.
Claro, existem muitas maneiras de preencher a grade com letras. A menos que você conheça o layout das letras, a descriptografia será difícil. Isso permite configurar um esquema com vários quadrados com layouts diferentes. Você poderia criar sete quadrados e usar um quadrado diferente para cada dia da semana, por exemplo. Esquemas que usam vários alfabetos são chamados de cifras polialfabéticas.
Um quadrado de Políbio é uma forma de código. Um código substitui letras por outros caracteres, neste exemplo, dígitos. As cifras substituem letras por outras letras.
Cifra de César
Júlio César deu seu nome à Cifra de César. Isso usa um deslocamento – ou “rotação” – para selecionar uma letra a uma distância definida da letra que você está criptografando. Se você estivesse usando um deslocamento de dois, “A” seria escrito como “C” e “D” seria escrito como “F”. O destinatário deve saber o deslocamento correto a ser usado para decifrar a mensagem, subtraindo o deslocamento das cartas recebidas.
Uma Cifra de César com deslocamento de 13 – conhecida como “rotação 13” ou ROT13 – possui uma qualidade especial. Existem 26 letras no alfabeto inglês padrão e 13 se dividem em 26 exatamente duas vezes. Com esse deslocamento, para decifrar algo você pode submetê-lo novamente ao processo de criptografia. Cifrar duas vezes retorna ao texto original.
Plain: ABCDEFGHIJKLMNOPQRSTUVWXYZ ROT13: NOPQRSTUVWXYZABCDEFGHIJKLM
Se você escolher as letras “GEEK” no alfabeto superior e observar as letras correspondentes no alfabeto inferior, obterá “TRRX”. Se você fizer isso novamente com “TRRX” no alfabeto superior, obterá as letras “GEEK” no alfabeto inferior.
Em termos de programação, isso simplifica as coisas porque você só precisa escrever uma rotina de criptografia. Não há necessidade de uma rotina de decifração. É por isso que escrever uma implementação ROT13 é um exercício comum para quem está aprendendo a programar. O ROT13 também é comumente apontado como um exemplo de criptografia muito pobre e de baixo grau.
Você pode tentar você mesmo com este mecanismo ROT13 online. Tente inserir "Alaska Nynfxn" e coloque a saída novamente como entrada.
Então, o que é criptografia?
Todos os exemplos que abordamos aqui são fáceis de decifrar, mas ilustram um elemento comum que é compartilhado entre todos eles e entre todas as formas de criptografia. Há um conjunto de regras a serem seguidas para converter seus dados originais, chamados de “texto simples”, na versão cifrada, conhecida como texto cifrado. Esse conjunto de regras é um algoritmo. E é isso que é criptografia.
São algoritmos para privacidade.
Como funciona a criptografia hoje?
Tal como a pessoa na Grécia antiga, uma pessoa na era digital que deseja armazenar ou enviar dados privados enfrenta desafios. O que você pode fazer para impedir que pessoas não autorizadas acessem os dados? E o que pode ser feito para torná-lo seguro?
Todos os sistemas antigos poderiam ser superados com o conhecimento do sistema de criptografia. Use a haste do mesmo diâmetro e a mensagem do scytale ficará legível. A Cifra de César pode ser quebrada tentando diferentes compensações na primeira parte da mensagem. Você só tem 25 para tentar, no máximo.
Os quadrados de Políbio representam um desafio maior porque o layout das letras dentro do quadrado é imprevisível. Se você sabe qual é o layout da praça, não é nem um desafio. Se você não tem ideia do layout do quadrado, você pode tentar decifrar a mensagem estudando o próprio texto cifrado. Isso é chamado de criptoanálise.
Com uma cifra simples, você pode usar recursos como tabelas de frequência de letras para descobrir qual letra do texto cifrado representa qual letra do texto simples. Um esquema de criptografia seguro precisa ser seguro, independentemente de quem conhece a mecânica do esquema, e o texto cifrado deve resistir a ataques de criptoanálise.
Não personagens, bits
Esquemas digitais robustos não funcionam com letras e caracteres, um de cada vez, como fazem as cifras seriais. Eles trabalham com os dados, um pedaço de cada vez, e são chamados de cifras de bloco.
Eles manipulam os bits – todos aqueles uns e zeros – dentro de cada bloco de acordo com as regras de complicadas transformações matemáticas incorporadas nos algoritmos de criptografia. Se um algoritmo usar um tamanho de bloco de 128 bits, ele percorrerá os dados em pedaços de 128 bits. Se o último pedaço a ser processado for menor que 128 bits, ele será preenchido com 128 bits.
Existem muitos esquemas de criptografia de bloco disponíveis. O Advanced Encryption Standard (AES) é o padrão de criptografia oficial do governo dos EUA. Diferentes esquemas de criptografia usam diferentes algoritmos e diferentes comprimentos de bloco e fazem uso de diferentes combinações de transformações matemáticas.
Tudo isso parece muito completo, mas como podemos evitar que uma pessoa não autorizada use o mesmo esquema de criptografia para descriptografar nossos dados criptografados?
Sequências de hash
Veremos primeiro um caso especial. É possível criptografar dados usando uma transformação unidirecional. Esta é a antítese do ROT13 porque o texto cifrado resultante não pode ser revertido para texto simples. Mais precisamente, não pode ser descriptografado dentro de um prazo prático. Este tipo de criptografia é usado em funções de hash, onde uma sequência de texto simples é transformada em uma sequência de texto cifrado, chamada de hash ou sequência de hash. Todas as strings hash têm o mesmo comprimento.
Como isso é útil? Bem, um site seguro não armazenará sua senha em texto simples. Sua senha é criptografada e a string hash é armazenada. Sua senha nunca é mantida. Na próxima vez que você fizer login e inserir sua senha, ela será criptografada e a string hash será comparada com a string hash armazenada nos detalhes da sua conta. Se eles corresponderem, você pode entrar. Se você inserir uma senha incorreta, as duas strings hash não corresponderão e você não terá permissão para entrar.
Isso permite que o site use autenticação sem precisar armazenar as senhas de forma exposta. Se forem hackeados, nenhuma das senhas será comprometida. As técnicas de hash também podem adicionar dados únicos e aleatórios chamados salt às senhas antes de serem hash. Isso significa que todos os hashes são únicos, mesmo que dois ou mais usuários tenham escolhido a mesma senha.
Para que serve a criptografia?
Hoje, a criptografia é usada para quase tudo (ou pelo menos deveria ser). Aqui estão alguns exemplos que você encontra quase todos os dias.
Unidades de armazenamento criptografadas
Para evitar que pessoas não autorizadas descriptografem os dados, é usada uma chave que identifica quem os criptografou e quem pode descriptografá-los. Uma chave é uma longa sequência de bytes gerada por um algoritmo complexo. Eles normalmente variam em tamanho de 128 bytes a 2.048 bytes ou mais. A chave é usada pelo algoritmo de criptografia ao criptografar o texto simples. O tamanho da chave é independente do tamanho do bloco.
Para proteger os dados armazenados localmente, discos rígidos inteiros podem ser criptografados. A criptografia está vinculada à identidade de login do usuário e a chave é gerada automaticamente e aplicada automaticamente. O usuário não tem nenhuma interação direta com a chave, e a chave nunca precisa ser enviada a ninguém.
Como a chave está vinculada à identidade de login do usuário, remover o disco rígido do computador e conectá-lo a outro computador não permitirá o acesso aos dados. Este tipo de proteção protege dados estáticos ou “em repouso”.
Isso não se aplica apenas a computadores normais. O armazenamento em telefones modernos também é criptografado, e por um bom motivo: nossos telefones são um tesouro de informações pessoais e confidenciais, e não seria bom ter essas informações acessíveis a qualquer pessoa que atendesse nosso telefone.
Se seus dados precisarem ser transmitidos, você precisará considerar como protegerá seus dados “em trânsito”.
Sites seguros
Quando você se conecta a um site e vê um símbolo de cadeado na barra de endereço, você sabe que está conectado a um site seguro, certo? Bem, mais ou menos. O que na verdade significa é que a conexão entre o seu computador e o site é criptografada usando criptografia SSL/TLS.
Isso é bom, mas não verifica a segurança do resto do site. O site pode armazenar senhas em texto simples e usar uma senha de administrador padrão no banco de dados. Mas pelo menos se você vir o cadeado, saberá que sua comunicação com o site está criptografada.
Essa criptografia é possível porque o seu navegador e o site usam o mesmo esquema de criptografia com múltiplas chaves. No início de uma sessão de conexão, seu navegador e o site trocam chaves públicas. Uma chave pública pode descriptografar algo que foi criptografado usando uma chave privada.
Seu navegador e o site trocam suas chaves públicas e depois criptografam usando suas chaves privadas. Como cada extremidade da conexão possui a chave pública da outra extremidade, cada extremidade pode descriptografar as informações que recebe da outra extremidade. As chaves privadas nunca precisam ser expostas.
Liberar uma chave pública é seguro. Uma chave pública não pode ser usada para criptografar dados de forma fraudulenta. Portanto, embora você receba uma cópia da chave pública de um site, não poderá se passar pelo site genuíno porque não possui a chave privada. Isso levanta a questão da autenticidade. Como você sabe que o site é o proprietário genuíno do par de chaves pública e privada, e não um site imitador que de alguma forma roubou as duas chaves do site genuíno?
Os certificados são usados para verificar a identidade dos sites. Estes são emitidos pelas Autoridades de Certificação depois de verificarem a identidade do requerente. O site envia o certificado como parte do handshake no início de uma sessão de conexão para que o navegador possa validar o certificado.
Isso é feito entrando em contato com a Autoridade de Certificação e descriptografando algumas informações no certificado. Isso requer ainda mais chaves. Seu navegador possui chaves públicas das principais autoridades de certificação como parte de seu pacote de instalação. E há ainda mais chaves envolvidas. Além de trocar chaves públicas, seu navegador e o site criam chaves de sessão exclusivas para proteger ainda mais suas comunicações.
Depois que seu navegador verificar a autenticidade do site e a força da criptografia, ele coloca o cadeado na barra de endereço.
E-mail seguro
O conceito de chaves públicas e privadas surge continuamente na criptografia. Um método comum de proteger e-mails em trânsito usa pares de chaves públicas e privadas. As chaves públicas podem ser trocadas com segurança, as chaves privadas não são compartilhadas. As mensagens são criptografadas usando a chave privada do remetente. O destinatário pode usar a chave pública do remetente para descriptografá-lo e lê-lo. Eles podem usar sua própria chave privada para criptografar uma resposta.
OpenPGP é um esquema de criptografia bem conhecido que segue esse modelo, com uma diferença.
O cliente de email do remetente gera uma chave aleatória. Isso é usado para criptografar a mensagem de e-mail. A chave aleatória é então criptografada com a chave pública do destinatário. A mensagem criptografada e a chave aleatória criptografada são enviadas ao destinatário. O programa de e-mail do destinatário usa sua chave privada para descriptografar a chave aleatória que é então usada para descriptografar a mensagem.
O objetivo da etapa extra é permitir que um email seja enviado com segurança para vários destinatários. Seu cliente de e-mail não precisa criptografar todo o e-mail separadamente para cada destinatário, apenas a chave aleatória.
É claro que os sistemas de e-mail seguros também enfrentam a questão da autenticidade. Você tem que confiar na chave pública que foi enviada a você. As chaves estão vinculadas a endereços de e-mail. Receber a chave pública do endereço de e-mail com o qual você estará conversando é um bom primeiro passo. A maioria dos clientes de email pode mostrar o endereço de email associado a uma chave pública.
Outro método de verificar a autenticidade de uma chave pública é obtê-la em um repositório. As chaves públicas carregadas nos repositórios são verificadas pelo repositório antes de serem tornadas públicas.
A criptografia sustenta nossas vidas digitais
Pelo menos, a criptografia sustenta nossas vidas digitais se fizermos isso da maneira certa. Evite conexões remotas inseguras de qualquer tipo (seja trabalho remoto ou compra on-line), use clientes de e-mail capazes de criptografar mensagens privadas e use aplicativos de mensagens com criptografia de ponta a ponta.
Lbhe cevinpl vf vzcbegnag, hfr gur nccebcevngr gbbyf gb fnsrthneq vg. Como César poderia ter dito.