← tópicos

Específicos · Segurança da Informação

Criptografia: simétrica × assimétrica × híbrida; hash (SHA-256, salt); HMAC

Antes de julgar qualquer item, pergunte qual chave foi usada e de quem ela é — pública do destinatário dá sigilo, privada do remetente dá autenticidade, e hash, que não usa chave nenhuma, dá…

Alta107 itens no tópico

A ideia que organiza o assunto

Criptografia não é um assunto de algoritmos. É um assunto de garantias, e são três: sigilo (ninguém mais lê), integridade (ninguém alterou) e autenticidade (veio de quem diz que veio). Cada ferramenta entrega uma dessas garantias, e nenhuma entrega todas.

O que decide quase todo item deste tópico é uma única pergunta: qual chave foi usada e de quem ela é?

Essas quatro linhas resolvem a maioria dos itens sem que você precise saber nada sobre o algoritmo citado. A banca vive trocando o sentido da seta: pública para assinar, privada para dar sigilo, hash para garantir confidencialidade. Leia o item procurando a seta antes de procurar o resto.

Por que se usa (e o que custa)

A criptografia simétrica é rápida — ordens de grandeza mais rápida que a assimétrica —, e por isso é ela que cifra o volume: o arquivo, o disco, o túnel TLS já estabelecido. O preço é o problema da distribuição de chaves: as duas pontas precisam combinar o segredo antes, por um canal que ainda não é seguro; e o número de chaves explode com o número de participantes — n pessoas exigem n(n−1)/2 chaves.

A criptografia assimétrica resolve exatamente isso: cada um publica a própria chave pública, e não é preciso canal seguro nenhum para começar a conversa. Paga-se em desempenho — cifrar um arquivo grande com RSA é inviável — e em confiança: uma chave pública só vale alguma coisa se você souber de quem ela é, o que traz o certificado digital e a autoridade certificadora para dentro do problema.

Daí a solução que a prova chama de correta em quase todo item de cenário: o esquema híbrido. A assimétrica transporta a chave de sessão; a simétrica cifra os dados; o hash e a assinatura cuidam de integridade e autenticidade. TLS, PGP e S/MIME fazem os três.

Como funciona

Simétrica. Uma chave, usada nos dois sentidos, conhecida por remetente e destinatário. Divide-se em duas famílias. A cifra de bloco processa blocos de tamanho fixo — e fixo pelo algoritmo, não pela chave: o AES tem bloco de 128 bits, use-se chave de 128, 192 ou 256. A cifra de fluxo cifra bit a bit ou byte a byte, tipicamente gerando um fluxo pseudoaleatório e aplicando XOR sobre o texto claro; o RC4, com chave de tamanho variável e usado no WEP e no SSL/TLS antigo, é o exemplo que a banca cita.

Modos de operação. Uma cifra de bloco sozinha só sabe cifrar um bloco; o modo diz como encadear os demais. O ECB cifra cada bloco isoladamente com a mesma chave — e é justamente por isso que blocos de texto claro iguais produzem criptogramas iguais, expondo padrões. Ele não é recomendado. CBC, CTR e GCM encadeiam ou usam contador/vetor de inicialização para que isso não aconteça.

Assimétrica. Um par matematicamente ligado: a chave pública deriva do mesmo processo de geração da privada e pode ser distribuída livremente, porque o caminho de volta — deduzir a privada a partir da pública — é computacionalmente inviável. O RSA apoia-se na dificuldade de fatorar o produto de dois números primos grandes; a curva elíptica (ECC), na dificuldade do logaritmo discreto sobre curvas elípticas em corpos finitos, o que lhe permite segurança equivalente com chaves muito menores. Ambos são de chave pública, e nenhum é simétrico.

Hash. Entrada de tamanho qualquer, saída de tamanho fixo, sem chave, de mão única. Duas propriedades importam: resistência à pré-imagem (dado o resumo, não se recupera a entrada) e resistência a colisão (não se acham duas entradas com o mesmo resumo). Colisões existem sempre — a saída é finita e a entrada não —, o que uma função boa oferece é que achá-las seja inviável. O efeito avalanche garante que trocar uma vírgula muda o resumo inteiro, e é disso que vive a verificação de integridade. Para senhas, acrescenta-se salt, um valor aleatório por senha, que derrota tabelas pré-computadas.

Assinatura digital é a costura das três coisas: calcula-se o hash da mensagem e cifra-se esse resumo com a chave privada do assinante. Quem recebe decifra com a pública, recalcula o hash e compara. Integridade vem do hash; autenticidade e não repúdio, da chave privada. Cifrar um arquivo com algoritmo assimétrico não produz assinatura — são operações diferentes, com chaves diferentes.

O que decide os itens

Qual chave, qual garantia — a tabela que resolve mais itens que todas as outras somadas:

operaçãochave usadagarante
cifrar para alguémpública do destinatárioconfidencialidade
decifrar o que recebeuprivada do destinatário
assinarprivada do remetenteautenticidade, integridade, não repúdio
verificar assinaturapública do remetente
resumirnenhumaintegridade

Simétrica × assimétrica:

simétricaassimétrica
chavesuma, compartilhadapar: pública + privada
velocidaderápidalenta
distribuição de chaveexige canal seguro préviodispensa canal seguro
chaves para n partesn(n−1)/22n
não repúdionãosim
exemplosDES, 3DES, AES, IDEA, Blowfish, RC4RSA, ECC, Diffie-Hellman, ElGamal, DSA

Hash não é criptografia de chave. MD5, SHA-1, SHA-2 e SHA-3 não são nem simétricos nem assimétricos: não têm chave. Item que classifica SHA como simétrico ou assimétrico está errado por isso, antes de qualquer outra coisa.

Bloco × fluxo — bloco processa blocos de tamanho fixo (AES, DES, 3DES, IDEA, Blowfish); fluxo processa bit a bit ou byte a byte, quase sempre por XOR (RC4, ChaCha20).

Tamanho de bloco × tamanho de chave — são independentes. O bloco do AES é sempre 128 bits; 128, 192 e 256 são tamanhos de chave. Trocar um pelo outro é a armadilha mais frequente do tópico.

Integridade × confidencialidade × autenticidade — hash dá integridade e não dá sigilo; cifra dá sigilo e não prova origem; assinatura dá origem e não esconde nada. Item que promete sigilo por hash, ou integridade por cifrar com a pública, está errado.

O tamanho da chave nunca é irrelevante — nem na simétrica nem na assimétrica. Ele define o espaço de busca da força bruta.

Algoritmos não interoperam. Texto cifrado com AES não se decifra com RC4, nem com a mesma chave. Cada algoritmo é um par cifra/decifra fechado.

Números que caem

DES: chave · bloco · rodadas56 bits (64 com paridade) · 64 bits · 16
3DES: chaves · operação168 bits (3 chaves) ou 112 (2 chaves) · cifra–decifra–cifra (E-D-E)
AES: bloco · chaves · rodadas128 bits fixo · 128 / 192 / 256 · 10, 12 e 14
IDEA · Blowfishbloco 64, chave 128 · bloco 64, chave de 32 a 448 bits
RC4cifra de fluxo, chave de tamanho variável
MD5resumo de 128 bits, bloco de 512
SHA-1resumo de 160 bits, bloco de 512
SHA-256 · SHA-512256 bits (bloco 512) · 512 bits (bloco 1.024)
SHA-3mesmas saídas do SHA-2 (224/256/384/512), construção em esponja (Keccak)
RSA: tamanhos usuais1.024, 2.048, 4.096 bits — hoje o mínimo recomendado é 2.048
ECC × RSA equivalentes256 × 3.072 bits
força brutachave de n bits → 2^n tentativas; +1 bit dobra o tempo médio
colisão (paradoxo do aniversário)esperada em cerca de 2^(n/2) para resumo de n bits
chaves simétricas para n partesn(n−1)/2
WPA3-Enterprise, modo de 192 bitsexige SHA-384; as demais suítes admitem SHA-1 e SHA-256

Como a CEBRASPE derruba você aqui

Troca de termo — 38%, o formato dominante, e quase sempre trocando simétrico por assimétrico. “O RSA […] é um algoritmo simétrico.” “O DES […] é um algoritmo de chave pública.” A criptografia de curva elíptica como “um tipo de sistema criptográfico simétrico”. “RSA e ECC são os principais protocolos utilizados na criptografia simétrica.” Na simétrica, “é comum o uso de duas chaves distintas”. “Em algoritmo de criptografia simétrica, a mensagem cifrada com chave pública pode somente ser decifrada pela sua chave privada correspondente.” Em todos, o resto da frase está impecável e uma palavra está trocada. Classifique o algoritmo antes de ler o predicado: RSA, ECC, Diffie-Hellman e ElGamal de um lado; DES, 3DES, AES, IDEA, Blowfish e RC4 do outro; MD5, SHA e RIPEMD em lugar nenhum, porque não têm chave — e há um item que vive exatamente disso, ao chamar o SHA-3 de “algoritmo de verificação de integridade simétrico”.

A mesma troca aparece entre propriedades, e esse é o eixo que decide mais itens do que parece. O trio confidencialidade × integridade × autenticidade mapeado na ferramenta errada: cifrar com a chave pública para “preservar a integridade da informação”, quando a operação dá confidencialidade; “a confidencialidade é uma propriedade verificável por meio do hash de uma mensagem”, quando o resumo verifica integridade e não esconde nada; e a verificação de integridade “possibilitada pela criptografia assimétrica, que utiliza chave pública de 2.048 bits”, quando quem a possibilita é a função de resumo e a assimétrica apenas acrescenta autenticidade na assinatura. A regra que resolve os três: quem dá sigilo é a cifra, quem dá integridade é o hash, quem dá autenticidade e não repúdio é a chave privada do remetente sobre o resumo.

Relação causal inventada — 24%, o segundo formato mais frequente, e muito acima do que ele pesa em qualquer outro tópico do corpus. É também o mais fácil de deixar passar, porque o predicado soa técnico e quem entrega o item é o conector. “Por suportar três tamanhos de chaves distintas”, o AES seria assimétrico — o que classifica um algoritmo é o número de chaves e a relação entre elas, nunca quantos tamanhos ele admite. O MD5 seria boa escolha para integridade “já que ele é resistente a colisões e garante confidencialidade” — as duas justificativas são falsas, e nenhum hash garante sigilo. “O algoritmo SHA512 é inseguro” porque o ataque de repetição “permite a colisão dos primeiros 64 bits de saída” — replay nada tem a ver com colisão. Cifrar arquivos com algoritmo assimétrico em que “é garantida automaticamente a assinatura digital do arquivo” — cifrar e assinar são operações distintas, com chaves distintas. Para “máxima segurança”, a chave simétrica “deverá ser enviada junto com o pacote criptografado” — quem intercepta o pacote intercepta o segredo. E o bloco da cifra dimensionado “usando como referência o tamanho da chave empregada” — bloco e chave são parâmetros independentes. Leia o porque, o já que, o visto que, o a fim de que e o automaticamente com desconfiança, e pergunte se a causa citada produz mesmo aquele efeito.

Inversão — 18%: a seta ao contrário. “Os algoritmos de hash MD5 e SHA-1 apresentam, respectivamente, mensagem de resumo de 160 bits e de 128 bits” — os dois valores certos, na ordem trocada. “O WPA2 usa o algoritmo de criptografia SAE […] enquanto o WPA3 usa o algoritmo AES” — trocados. No 3DES, “a primeira e a segunda criptografam informações; a terceira é usada para descriptografar aquelas” — é cifra-decifra-cifra, e quem decifra é a segunda. O ECB que “oculta padrões de dados em textos idênticos, sendo recomendado para uso em protocolos criptográficos considerados seguros” — ele expõe esses padrões e por isso não é recomendado. E, três vezes, o tamanho da chave declarado “uma característica irrelevante”, “indiferentes para a segurança do algoritmo” ou simplesmente “irrelevante para a segurança do sistema”, ora na simétrica ora na assimétrica — é o parâmetro que define o custo do melhor ataque conhecido, e foi o que aposentou o DES. As palavras respectivamente, enquanto e diferentemente de são o aviso: nelas, confira o par inteiro, nunca uma metade de cada vez.

Atribuição errada — 8%. Ação real, elemento errado: o certificado SSL “emitido por um validador de criptografia” em vez da autoridade certificadora; o UDP que “implementa por padrão a criptografia 3DES”, quando ele não implementa criptografia alguma; o SPF que “permite que os proprietários de domínios assinem emails automaticamente”, papel que é do DKIM — o SPF apenas publica em DNS a lista de servidores autorizados; e a proteção de confidencialidade descrita como “a geração de pares de chaves, a partir dos quais se obtém a identidade dos arquivos com comprimento fixo”, que mistura par de chaves com resumo.

Número alterado — 6%. O AES “de tamanho de 64 bits, considerado inseguro” — o bloco é de 128; DES e AES processando “em blocos de kilobits (Kb)” — são 64 e 128 bits; e a chave pública para a qual “é suficiente utilizar apenas um número primo”, quando são dois primos grandes cujo produto é o que resiste à fatoração. O par bloco × chave é o que mais cai, e a tabela de números acima é a defesa inteira.

Escopo ampliado e absolutos — 4% e 2%. O AES permitindo “a troca segura de informações e chaves criptográficas” — informações sim, desde que a chave já esteja compartilhada; trocar a chave com segurança em canal inseguro é o problema que a assimétrica resolve. “3DES e SHA-1 são métodos criptográficos que utilizam chave assimétrica” — vale para o RSA e é esticado a um algoritmo simétrico e a uma função sem chave. E o único absoluto medido: algoritmos de hash que “eliminam sistematicamente a possibilidade de colisões” — colisões existem necessariamente, porque a entrada é ilimitada e a saída é fixa; o que os algoritmos modernos fazem é torná-las computacionalmente inviáveis de encontrar.

Erros clássicos

Confundir tamanho de bloco com tamanho de chave. O AES tem bloco de 128 bits, ponto. Os três números famosos — 128, 192, 256 — são de chave. Esse é o erro número um do tópico.

Achar que hash é criptografia reversível. Não é: não há chave e não há volta. Hash não cifra, não esconde e não garante sigilo. Garante que o conteúdo não mudou.

Achar que uma função de hash boa não tem colisão. Tem, necessariamente — entrada infinita, saída finita. O que ela oferece é que encontrar uma seja computacionalmente inviável.

Assinar com a chave pública. Assina-se com a privada; verifica-se com a pública. E o que se cifra ao assinar é o resumo, não a mensagem inteira.

Supor que cifrar equivale a assinar. Cifrar com a pública do destinatário dá sigilo e não diz nada sobre quem enviou. Assinatura é operação separada.

Achar que a simétrica resolve distribuição de chaves. É exatamente o que ela não resolve, e é a razão de a assimétrica existir.

Tratar a assimétrica como a opção rápida. É a lenta. Por isso o mundo real é híbrido: assimétrica para a chave, simétrica para os dados.

Confundir SPF com DKIM. Quem assina o email com criptografia de chave pública é o DKIM; o SPF apenas publica em DNS quais servidores podem enviar pelo domínio.

Esquecer o salt. Hash de senha sem salt é vulnerável a tabelas pré-computadas, e a prova trata isso como armazenamento criptográfico inseguro.

Praticar105 itens