Parte I · 2 — Objetivos e modelos de adversário

draft

Segurança não é uma propriedade absoluta — é sempre contra um adversário definido. Esta seção torna precisos os objetivos do capítulo anterior e apresenta a régua com que se mede um esquema: o modelo de ameaça.


2.1 O princípio de Kerckhoffs

Auguste Kerckhoffs, em La Cryptographie Militaire (1883), estabeleceu o princípio que sustenta toda a criptografia moderna:

A segurança de um sistema deve depender apenas do segredo da chave — nunca do segredo do algoritmo.

O algoritmo deve poder cair nas mãos do inimigo sem comprometer nada. As reformulações modernas são célebres: "the enemy knows the system" (Shannon) e "security through obscurity is no security" (Schneier).

A consequência é direta e contra-intuitiva para iniciantes: algoritmos criptográficos devem ser públicos e escrutinados. A confiança vem de décadas de ataques fracassados sob luz pública — não de esconder o desenho. É também o porquê de "inventei minha própria cifra" ser sempre uma má ideia.


2.2 Os objetivos, formalmente

O capítulo anterior listou os objetivos pela pergunta do usuário. Aqui está o que cada um significa para o criptógrafo:

Objetivo Significado formal (informal)
Confidencialidade O ciphertext não revela nenhuma informação útil sobre o plaintext a um adversário limitado.
Integridade Qualquer alteração no dado é detectável com probabilidade esmagadora.
Autenticidade Só quem tem a chave pode produzir um dado que verifica — prova a origem.
Não-repúdio A prova de origem é verificável por terceiros (só assinaturas, não MACs).

Duas propriedades avançadas, exigidas de protocolos modernos:

  • Forward secrecy (FS): comprometer a chave de hoje não revela o tráfego

    de ontem. Obtida descartando chaves de sessão efêmeras.

  • Post-compromise security (PCS): após um comprometimento, o sistema *e

    recupera*com uma nova troca de chaves. É o que o double ratchet do Signal garante.

MAC × assinatura — a diferença que mais confunde: ambos provam autenticidade. Mas um MAC usa uma chave compartilhada — quem verifica também poderia ter forjado, então não serve como prova a terceiros. Uma assinatura usa a chave privada do autor — só ele pôde produzi-la, logo dá não-repúdio. Precisa provar a um juiz quem assinou? Assinatura. Só precisa que você confie que veio do seu par? MAC (mais rápido).


2.3 O modelo de adversário

Provar segurança exige dizer o que o adversário pode fazer. Os modelos formam uma escada de poder crescente — um esquema seguro contra um modelo forte é seguro contra todos os mais fracos.

A escada de modelos de adversário, do mais fraco ao mais forte

Modelo O adversário pode… Padrão exigido hoje
COA (ciphertext-only) Ver apenas ciphertexts. Mínimo histórico.
KPA (known-plaintext) Ver pares (plaintext, ciphertext).
CPA (chosen-plaintext) Escolher plaintexts e ver os ciphertexts. Base da confidencialidade moderna.
CCA (chosen-ciphertext) Escolher também ciphertexts e ver as decifragens. Exigido de qualquer cifra séria.

O alvo de segurança moderno para cifras é IND-CCA2 (indistinguibilidade sob ataque adaptativo de ciphertext escolhido): o adversário não distingue a cifra de duas mensagens à sua escolha, mesmo podendo pedir decifragens de outros ciphertexts. É por isso que AEAD (cifra + autenticação juntas, como AES-GCM) é o default — cifrar sem autenticar deixa brechas de CCA reais.

Além do modelo lógico, há o adversário físico: ataques de canal lateral (side-channel) — tempo de execução, consumo de energia, emanação eletromagnética, cache. Uma cifra matematicamente perfeita vaza a chave se a implementação levar tempo diferente conforme os bits do segredo. Daí a exigência de código constant-time.


2.4 Segurança perfeita × segurança computacional

Há dois níveis de garantia, e quase tudo na prática é o segundo:

  • Segurança perfeita (incondicional): o ciphertext não dá nenhuma

    informação sobre o plaintext, nem a um adversário com poder de computação infinito. O One-Time Pad alcança isso — mas o teorema de Shannon prova o preço: a chave precisa ser tão longa quanto a mensagem, aleatória e usada uma só vez. Impraticável em escala.

  • Segurança computacional: quebrar o esquema é possível em teoria, mas

    exige recursos inviáveis (ex.: \(2^{128}\) operações). É o que todo sistema real usa. A segurança repousa em problemas que acreditamos serem difíceis (fatoração, logaritmo discreto) — não em impossibilidade provada.

Essa distinção é o calcanhar de Aquiles da era pós-quântica: os problemas difíceis que sustentam RSA e curvas elípticas deixam de ser difíceis para um computador quântico (algoritmo de Shor) — daí a Parte IV deste compêndio.


2.5 Confusão e difusão

Como uma cifra concreta consegue parecer aleatória? Shannon (1949) deu os dois princípios de desenho que toda cifra de bloco moderna segue:

  • Confusão: a relação entre a chave e o ciphertext deve ser *omplexa e

    não-linear — cada bit da saída depende de muitos bits da chave. Implementada por S-boxes*(substituição).

  • Difusão: a relação entre plaintext e ciphertext deve ser espalhada

    mudar um bit da entrada muda metade dos bits da saída (efeito avalanche). Implementada por permutação/mistura.

Cifras alternam camadas de confusão e difusão por várias rodadas. As duas estruturas dominantes são a rede de substituição-permutação (SPN — usada pelo AES) e a rede de Feistel (usada pelo DES). A Parte II detalha cada uma.


Onde aprofundar: as definições formais, o teorema de Shannon completo e o catálogo de modelos estão na referência — 02-fundamentos. A Parte I termina aqui; a Parte II — Primitivas (em construção) abre as caixas-pretas: cifras de bloco e fluxo, funções de hash, e o salto para a assimetria.