$cat ~/posts/criptografia-ciencia-a-parte

bilíngue · en / pt

← /blog

criptografia é uma ciência à parte


Saí de uma aula sobre criptografia revoltado com a condução dela, e fui atrás. Não foi o assunto que me perdeu: eu acompanhava o suficiente pra perceber que a aula tangenciava o tema e deixava coisa errada pelo caminho. Esse post é o que eu queria ter ouvido, escrito pra quem nunca viu a matemática e pra quem já vive nisso.

Aviso de escopo: eu não sou criptógrafo. Esse post inteiro é a defesa de por que essa frase importa.

a pergunta que sobrou

Todo dev usa criptografia todo dia. Você abriu essa página por TLS, e se ela pede senha em algum lugar, tem hash no meio. É a tecnologia mais universalmente usada e menos universalmente entendida que existe na nossa profissão.

E a pergunta que ficou pra mim foi: por que ninguém explica o conceito antes da sigla? Dá pra passar uma hora inteira ouvindo WEP, WPA2, WPS, SSL, A1, A3, token, e sair sem saber responder o que é uma chave. A sigla é o fim da história. Começar por ela é começar pelo fim.

Então vamos pelo começo. E o começo é bem mais antigo do que parece.

três mil anos embaralhando

A primeira criptografia que a gente tem registro decente não tinha matemática nenhuma. Era um bastão.

Os espartanos enrolavam uma tira de couro em volta de um bastão de espessura específica e escreviam a mensagem no sentido do comprimento. Desenrolada, a tira virava um monte de letra solta sem sentido. Pra ler, você precisava de um bastão da mesma espessura. Chamavam de cítala.

Repare no que a espessura do bastão é, nessa história: ela é a chave. Ninguém usava essa palavra, mas o papel é exatamente esse: o pedaço da informação que separa quem consegue ler de quem não consegue.

Uns seiscentos anos depois, César fazia outra coisa. Em vez de embaralhar a posição das letras, ele trocava cada letra por outra, três casas adiante no alfabeto. A vira D, B vira E, e assim até o alfabeto dar a volta.

deslocar o alfabeto três casas: a operação inteira cabe numa linha, e por isso mesmo o espaço de chaves cabe em vinte e cinco tentativas.

Essas duas ideias, trocar a posição e trocar o símbolo, são a base de tudo que veio nos três mil anos seguintes. O resto foi refinamento.

E o refinamento óbvio apareceu rápido: em vez de deslocar o alfabeto por um número fixo, embaralha ele todo. Cada letra vira outra qualquer, sem padrão. Isso dá um número de arranjos possíveis com vinte e seis dígitos, o que na época parecia o fim da conversa.

Não era.

  1. 700 a.C.cítalaesparta enrola a tira no bastão. a espessura é a chave, e ninguém ainda tem a palavra pra isso.
  2. 50 a.C.cifra de Césarsubstituição por deslocamento fixo. vinte e cinco chaves possíveis, o que só é um problema depois que alguém pensa em testar todas.
  3. 850Al-Kindianálise de frequência em Bagdá. o primeiro método sistemático pra quebrar uma cifra sem ter a chave.
  4. 1553Vigenèrea cifra polialfabética que resistiu três séculos e ganhou o apelido de le chiffre indéchiffrable.
  5. 1863Kasiskipublica como achar o tamanho da chave do Vigenère procurando repetições. o indecifrável cai.
  6. 1883Kerckhoffsenuncia o princípio que separa o algoritmo da chave e vira a regra que a área segue até hoje.
cada barra é o intervalo até o marco seguinte. os vãos são de séculos porque quase nada acontecia.

Tem uma coisa em comum entre a cítala, o César e a substituição embaralhada, e é ela que explica por que tudo isso caiu: em todos os três, o segredo era o método. Quem descobrisse como a cifra funcionava lia tudo que já tinha sido escrito com ela, pra sempre.

Al-Kindi e o nascimento da criptoanálise

No século IX, em Bagdá, um sujeito chamado Al-Kindi escreveu o texto que, pra mim, é o marco real desse post inteiro.

A ideia dele é quase constrangedora de tão simples. Numa língua qualquer, as letras não aparecem com a mesma frequência. Em português, A e E são muito comuns; K e W quase não existem. Numa substituição, a letra muda de roupa, mas não muda de frequência. Se A vira Q, então Q vai aparecer no texto cifrado com a mesma abundância que A tinha no texto original.

Então você não precisa da chave. Você conta as letras.

o perfil não é destruído pela cifra, ele só anda de lugar. achar quanto ele andou é achar a chave.

Isso parece pouco e é enorme. É o primeiro ataque sistemático da história: um procedimento que qualquer pessoa pode seguir, que não depende de sorte nem de sacada, e que funciona contra uma família inteira de cifras em vez de uma mensagem específica.

Antes de Al-Kindi, quebrar cifra era talento. Depois dele, virou método.

Essa é a fronteira que dá nome a esse post. No instante em que existe um procedimento repetível pra atacar, existe também um critério pra avaliar defesa: dá pra dizer que uma cifra é melhor que outra, e dizer por quê. Isso é ciência. O resto era artesanato.

E foi Al-Kindi que criou o vício que a criptografia tem até hoje: ninguém acredita numa cifra porque ela parece boa. Acredita depois que gente competente tentou quebrar e não conseguiu.

Kerckhoffs: a segurança está na chave

O Vigenère foi a resposta à análise de frequência, e foi uma boa resposta. Em vez de um alfabeto de substituição, vários, alternando conforme uma palavra-chave. A mesma letra do texto claro vira letras diferentes em posições diferentes, e o perfil de frequência se achata. Ficou trezentos anos conhecido como le chiffre indéchiffrable.

Em 1863, Kasiski publicou como achar o tamanho da palavra-chave procurando trechos repetidos no texto cifrado. Achado o tamanho, o Vigenère se desmonta em vários Césares, e cada um cai na análise de frequência. Indecifrável por trezentos anos, decifrado num artigo.

Vinte anos depois, um holandês chamado Auguste Kerckhoffs escreveu a frase que organizou a área inteira.

Um sistema criptográfico deve continuar seguro mesmo que tudo sobre ele seja público, exceto a chave. Se a sua segurança depende do inimigo não saber como o seu sistema funciona, você não tem segurança. Você tem um prazo.

Isso é menos óbvio do que parece hoje. Kerckhoffs estava dizendo pra abrir mão da vantagem mais intuitiva que existe, que é o inimigo não saber o que você está fazendo. E o argumento dele é puramente prático: método vaza. Gente sai da equipe, equipamento é capturado, código é lido. A chave você troca numa tarde; o método, não.

É por isso que os algoritmos que protegem o seu banco estão publicados na internet, com especificação aberta, e isso não é um descuido. É o desenho.

E é daqui que sai a regra que fecha esse post lá no fim, a de nunca inventar a sua própria criptografia. Ela não é conservadorismo de área. É a consequência direta de Kerckhoffs: se a segurança tem que morar na chave e não no segredo do método, então o método precisa ter sido lido por muita gente. Um algoritmo que ninguém examinou não é secreto. É só desconhecido.

duas chaves, ou uma só

Criptografia simétrica é a ideia intuitiva, a que você já teve quando criança: as duas pontas combinam um segredo e usam ele pra embaralhar e desembaralhar. Uma chave só, dos dois lados.

É rápida e é isso que protege o grosso dos seus dados hoje: AES é simétrica. Mas ela tem um problema que parece bobo e é fatal: como as duas pontas combinam a chave? Se eu preciso de um canal seguro pra te mandar a chave, e a chave é justamente o que cria o canal seguro, eu ando em círculo.

Criptografia assimétrica quebra esse círculo. Em vez de uma chave, um par, ligado por matemática: o que uma fecha, só a outra abre. Uma delas você publica pro mundo inteiro. A outra nunca sai da sua máquina.

simétrica

  1. uma chave, os dois ladosquem cifra e quem decifra seguram exatamente o mesmo segredo.
  2. rápida
  3. e como combinar a chave?

assimétrica

  1. um par de chavesduas chaves ligadas por matemática: o que uma fecha, só a outra abre.
  2. uma delas é pública
  3. quebra o círculo, e é lenta
o mesmo problema, resolvido de dois jeitos

A parte que parece mágica é a de que publicar uma chave não entrega a outra. Isso se apoia em problemas matemáticos fáceis num sentido e absurdamente difíceis no sentido contrário: multiplicar dois primos gigantes é trivial, fatorar o resultado de volta não é.

Só que essa ideia é muito mais nova do que o resto do post sugere.

Diffie-Hellman e RSA

Por três mil anos, a resposta pra "como as duas pontas combinam a chave" foi sempre a mesma: alguém leva. Um mensageiro, um encontro, uma mala. A criptografia protegia a mensagem e terceirizava o problema da chave pra logística.

Isso funcionava porque os usuários eram governos e exércitos, que têm mensageiro. Quando a comunicação civil começou a crescer, deixou de funcionar. Não dá pra mandar um mensageiro pra cada par de pessoas que queira se falar, e o número de chaves necessárias cresce com o quadrado do número de participantes.

Em 1976, Whitfield Diffie e Martin Hellman publicaram um artigo mostrando que dois estranhos podem chegar num segredo compartilhado conversando em público, na frente de quem estiver ouvindo, sem nunca dizer o segredo em voz alta.

Vale parar um segundo nisso, porque soa impossível. Não é uma forma esperta de esconder a chave durante o envio. É que a chave nunca é enviada. Cada lado combina o que recebeu com algo que só ele sabe, e os dois chegam no mesmo resultado por caminhos diferentes. Quem escutou a conversa inteira tem as duas metades públicas e não consegue chegar lá.

No ano seguinte, Ron Rivest, Adi Shamir e Leonard Adleman publicaram o RSA, que dá o passo seguinte: além de acordar uma chave, dá pra ter um par permanente, com uma metade publicável. É o que finalmente separa "quem pode escrever pra mim" de "quem pode ler o que me escreveram".

Dá pra ver funcionando com números pequenos. Escolhe dois primos, e a partir deles saem as duas chaves:

dois primos pequenos
n = p·q
143
φ(n) = (p−1)(q−1)
120
chave pública (e, n)
(7, 143)
chave privada (d, n)
(103, 143)
cifrada m^e mod n
81
decifrada c^d mod n
42
RSA com primos que cabem na cabeça, e que, por isso mesmo, qualquer computador quebra em milissegundos. RSA de verdade usa números com centenas de dígitos.

Duas notas de rodapé que eu acho que valem mais que a nota de rodapé.

A primeira é que o governo britânico já tinha isso. James Ellis, Clifford Cocks e Malcolm Williamson chegaram nas mesmas ideias no GCHQ alguns anos antes, e ficou classificado até 1997. Descoberto primeiro, inútil por duas décadas, porque ninguém podia usar.

A segunda é que o RSA de 1977 continua de pé em 2026. Quarenta e nove anos de gente muito boa tentando quebrar, publicamente, e o que derrubou o tamanho de chave foi o hardware ficar mais rápido, não a matemática ceder. Isso é o que "testado pelo tempo" quer dizer na prática.

assinatura digital

Tem um uso do par de chaves que quase nunca é explicado direito, e que é metade do motivo de a internet funcionar.

Até aqui, o par serviu pra esconder: você cifra com a chave pública de alguém, e só a privada daquela pessoa abre. Agora inverte a ordem. Cifra com a sua chave privada, e qualquer um consegue abrir com a sua pública.

Isso parece inútil, porque se qualquer um abre, não tem segredo nenhum. E não tem mesmo. Não é pra ter. O que isso prova é autoria: se abriu com a sua chave pública, só pode ter sido fechado com a sua privada, que só você tem.

o mesmo par de chaves, invertido. uma direção esconde o conteúdo, a outra prova quem escreveu.

Na prática ninguém assina a mensagem inteira, porque seria lento. Assina o hash dela, que é pequeno, de tamanho fixo, e muda inteiro se alguém encostar num byte do original. Por isso assinatura e hash andam sempre juntos, e por isso um hash quebrado quebra as assinaturas junto.

E é isso que o certificado do site faz. Ele não esconde nada. Ele é uma declaração assinada por alguém em quem o seu navegador já confia, dizendo que aquela chave pública pertence àquele domínio. Cifrar bem com o impostor errado continua sendo uma vitória inútil.

A1, A3 e token

Essa seção existe por um motivo específico: foi isso que a aula citou sem explicar, e é o tipo de coisa que soa como criptografia avançada quando não é.

A1 e A3 são tipos de certificado digital no padrão brasileiro. A diferença entre os dois não é o algoritmo, não é o tamanho da chave, não é a matemática. É onde a chave privada mora.

a mesma criptografia nos dois. o que muda é se a chave privada pode ou não sair do lugar onde nasceu.

No A1, a chave privada é um arquivo. Você instala no computador, e ela pode ser copiada, movida, feita backup, anexada num e-mail por engano. É prático e é frágil pelo mesmo motivo.

No A3, a chave privada é gerada dentro de um token USB ou cartão e não sai de lá. Você não manda a chave pro documento; você manda o documento pro dispositivo, ele assina internamente e devolve só a assinatura. Mesmo com a máquina comprometida, o atacante consegue pedir assinaturas enquanto o token está plugado, mas não consegue levar a chave embora.

É a mesma diferença entre guardar a chave de casa no bolso e deixar ela numa fechadura que só funciona com você presente.

E o "token" da aula, que apareceu na mesma frase como se fosse um terceiro algoritmo, é isso: um pedaço de hardware. Fator de posse, não primitiva criptográfica. Pior ainda, a palavra é sobrecarregada: token de autenticação numa API é outra coisa completamente, um string assinado que o servidor emite. Mesma palavra, dois mundos, e juntar os dois numa lista de siglas é exatamente como se aprende errado.

hash não é cifra

Esse é o ponto onde mais gente se perde, e a confusão tem consequência prática.

Cifrar é uma via de mão dupla: existe uma chave que desfaz. Hash é mão única. Ele pega uma entrada de qualquer tamanho e devolve um resumo de tamanho fixo, e não existe chave que desfaça, porque não sobrou informação pra desfazer. Quando um site diz que não sabe a sua senha, é isso que ele está dizendo: ele guardou o hash, não a senha.

Um bom hash tem uma propriedade que é mais fácil ver do que explicar. Muda uma letra da entrada, uma só, e a saída inteira vira outra coisa, sem nenhuma semelhança com a anterior. Chama efeito avalanche:

mesmo texto, uma letra trocada: Criptografia

e o oposto disso, quando o hash falha: dois PDFs diferentes com o mesmo SHA-1, publicados em 2017 pelo Google e pelo CWI. valores gravados, o navegador não recalcula SHA-1 aqui.

shattered-1.pdfshattered-2.pdf
38762cf7f55934b34d179ae6a4c80cadccbb7f0a
SHA-256 calculado no seu navegador. troque uma letra e veja quanto muda.

Isso é o que impede alguém de chegar perto da resposta por tentativa e erro guiada: não existe "quase certo". Ou é o mesmo hash, ou não tem informação nenhuma em quanto você errou.

E é aqui que as siglas finalmente ganham sentido, porque hash é um lugar onde as coisas morrem. MD5 caiu: colisões práticas desde 2004, duas entradas diferentes com o mesmo resumo, produzidas de propósito. SHA-1 caiu em 2017, quando pesquisadores do Google e do CWI publicaram dois PDFs diferentes com o mesmo SHA-1. Os dois continuam aparecendo em sistema em produção até hoje. SHA-256 é o padrão de fato agora.

Hash de senha é um caso à parte: SHA-256 puro é rápido demais pra isso, e rapidez é justamente o que ajuda quem está tentando adivinhar. Senha pede uma função deliberadamente lenta e com sal: bcrypt, scrypt, Argon2, PBKDF2.

o cadeado do navegador

Com chave e hash na mão, o TLS deixa de ser sigla e vira uma história com começo, meio e fim. E ela responde a pergunta que ficou pendente lá em cima: se a assimétrica é lenta e a simétrica não consegue combinar a chave, como é que a internet funciona?

Funciona porque as duas trabalham juntas, em turnos.

navegadorservidorolá + minha metade da chaveolá + minha metadecertificado + assinaturafechado, seguimos simétricos

o navegador diz quais cifras ele fala e já manda a parte pública dele do acordo de chave.

handshake do TLS 1.3, simplificado: a assimétrica entrega o bastão pra simétrica e sai de cena.

O detalhe que quase sempre some na explicação: o segredo compartilhado nunca atravessa a rede. Cada lado manda uma metade pública e calcula o mesmo resultado sozinho. Quem estiver escutando o cabo vê as duas metades e não consegue chegar no resultado.

E o certificado não tem nada a ver com embaralhar dados. Ele responde outra pergunta, que é "com quem eu estou falando afinal". Cifrar perfeitamente com o impostor errado é uma vitória inútil.

Sobre "SSL": o nome morreu. SSL 3.0 foi aposentado em 2015, e o que roda hoje é TLS, de preferência 1.3. O apelido ficou por inércia, como quem ainda chama o carro de automóvel.

o wi-fi que caiu quatro vezes

O wi-fi é o melhor estudo de caso de criptografia que existe, porque a história inteira dele é pública e se repete: alguém publica um padrão, alguém quebra, o padrão é substituído.

  1. 1997WEPreaproveitava o vetor de inicialização do RC4. quebrado em 2001; hoje cai em minutos.
  2. 2003WPAremendo de emergência (TKIP) pra rodar no hardware que já existia. sempre foi transitório.
  3. 2004WPA2AES de verdade. aguentou treze anos, até o KRACK em 2017 atacar a negociação, não a cifra.
  4. 2006WPSo botãozinho de conectar fácil. o PIN de oito dígitos podia ser adivinhado em partes, e caiu em 2011. desliga isso.
  5. 2018WPA3troca a negociação por um handshake que não vaza material pra ataque offline. o Dragonblood, em 2019, achou falhas de implementação, não da ideia.
cada barra é o intervalo até o marco seguinte.

Repare no padrão: o WEP morreu porque a matemática estava errada. O WPA2 e o WPA3 apanharam pela implementação e pela negociação. É a diferença mais importante desse post inteiro, e ela volta no fim.

Turing, a dobradiça

Aqui a história vira, e ela vira num ponto só.

A Enigma é a peça de criptografia mais recontada da computação, então não vou recontar o filme. Mas vale contar o mecanismo do ataque, porque é ele que importa pro resto dessa seção.

A Enigma tinha um espaço de configurações grande o bastante pra ser inviável de testar uma por uma, mesmo hoje. O que Bletchley Park explorou não foi força bruta: foi estrutura. A máquina tinha uma propriedade que parecia inofensiva: nenhuma letra podia ser cifrada nela mesma. Isso significa que, se você chuta que uma mensagem contém uma palavra provável, dá pra deslizar essa palavra ao longo do texto cifrado e descartar todas as posições onde alguma letra coincide consigo mesma.

Essas palavras prováveis eram chamadas de berços, e vinham de hábito: previsões de tempo mandadas no mesmo horário, saudações protocolares, mensagens que terminavam sempre igual. A bomba eletromecânica então testava configurações em cima do que sobrava, e cada contradição lógica eliminava um bloco inteiro de possibilidades de uma vez.

Ou seja: não se testou o espaço todo. Usou-se regularidade estatística e conhecimento prévio do conteúdo pra podar o espaço até virar algo que uma máquina da época conseguia percorrer.

Guarde esse parágrafo, porque ele vai voltar daqui a pouco com outro nome.

E aqui entra a coincidência que não é coincidência: o sujeito que liderou aquilo é o mesmo que, doze anos depois, escreveu "Computing Machinery and Intelligence", o artigo que abre com "podem as máquinas pensar" e propõe o teste que leva o nome dele.

Criptografia e inteligência artificial saíram da mesma cabeça, com uns poucos anos de distância.

E não é acaso biográfico. Releia a descrição do ataque à Enigma trocando o vocabulário: espaço de busca intratável, poda por restrição, estrutura estatística da linguagem, hipótese sobre o conteúdo provável. Isso é uma descrição de aprendizado de máquina escrita trinta anos antes de o termo existir. As duas áreas nasceram da mesma pergunta: o que uma máquina consegue inferir do que não lhe foi dito.

Depois disso elas se separaram, e ficaram setenta anos quase sem se falar.

cypherpunks, crypto wars e blockchain

Tem um pedaço dessa história que raramente entra na aula, e que é o pedaço que explica por que você tem criptografia no bolso.

Até os anos 70, criptografia forte era coisa de Estado. O que Diffie, Hellman e o RSA fizeram foi tirar isso das mãos de governos e colocar em artigo publicado, e a reação foi exatamente a que se espera.

Nos Estados Unidos, criptografia acima de certo tamanho de chave era classificada como munição para efeito de exportação. Na mesma lista de tanque e míssil. Exportar software com criptografia forte era, na letra da lei, tráfico de armas.

Em 1991, Phil Zimmermann publicou o PGP, que dava criptografia de nível militar pra qualquer pessoa com um computador. Ele virou alvo de investigação criminal federal por três anos, porque o programa saiu dos Estados Unidos pela internet. A defesa foi um golpe de gênio: o código-fonte foi publicado como livro, impresso, pelo MIT Press. Exportar armas é crime; exportar livro é liberdade de expressão, protegida pela Primeira Emenda. O caso foi arquivado em 1996.

Na mesma linha, gente andava por aí com camiseta estampada com quatro linhas de Perl que implementavam RSA, com o aviso de que aquela camiseta era, tecnicamente, uma arma de exportação controlada. Era piada e era litígio de verdade ao mesmo tempo.

Por trás disso tudo tinha uma lista de e-mail, começada em 1992, onde essa turma se organizava. Eric Hughes escreveu no manifesto do grupo a frase que resume o método: cypherpunks write code. A ideia era que discurso não protege ninguém e lei muda com eleição. O que protege é software que existe, roda e está publicado.

  1. 1976Diffie-Hellmandois estranhos combinam um segredo em público. a criptografia sai do monopólio estatal e entra num periódico.
  2. 1977RSAo par de chaves permanente. quarenta e nove anos depois, ainda de pé.
  3. 1991PGPZimmermann publica, e passa três anos sob investigação federal por exportação de munição.
  4. 1993manifesto cypherpunkcypherpunks write code. a tese de que software publicado protege mais que legislação.
  5. 2001AESo fim do argumento: padrão escolhido em concurso público de cinco anos, com todo mundo tentando quebrar os candidatos à vista.
  6. 2008Bitcoinhash, assinatura e prova de trabalho montados de outro jeito. nenhuma primitiva nova.
da invenção da chave pública até a primeira aplicação de massa que saiu dessa cultura.

O Bitcoin é o que eu acho mais interessante de olhar por esse ângulo, porque ele costuma ser contado como uma ruptura tecnológica e não é. O artigo de 2008 não inventa criptografia nenhuma. Hash você já viu aqui, assinatura digital também, e prova de trabalho é de 1997, criada pra combater spam. A originalidade está inteira no arranjo, em usar essas três peças pra resolver a ordem dos eventos sem ninguém no centro.

E isso é a regra do post aparecendo de novo, por um caminho diferente. A coisa mais disruptiva que a criptografia aplicada produziu nas últimas duas décadas foi construída exclusivamente com peças velhas e auditadas. Quem inventou primitiva nova no meio de blockchain, e teve bastante gente, forneceu os exemplos do que não fazer.

A cultura hacker entra nessa história como a força que empurrou a criptografia pro público, e o instinto dela é o mesmo de Kerckhoffs: abrir o código, publicar o método, deixar o mundo inteiro tentar quebrar. Vindo de lados opostos, um professor holandês do século XIX e uma lista de e-mail anarquista dos anos 90, as duas chegam na mesma conclusão. Segredo de método é dívida. Escrutínio público é o único ativo.

os dois sacerdócios

É aqui que eu chego no que me fez escrever.

Criptografia não é um assunto dentro de segurança da informação, que por sua vez é um assunto dentro de TI. É uma ciência inteira, com sua própria matemática, suas próprias conferências, e gente que passa a carreira toda dentro de um único primitivo. Usar TLS não é saber criptografia, do mesmo jeito que chamar model.predict() não é saber machine learning.

E as duas áreas, que nasceram juntas, hoje têm culturas opostas em relação ao tempo.

A criptografia tem uma regra que todo mundo repete: não invente a sua própria. Um algoritmo novo não vale nada por ser elegante. Ele vale depois de anos de gente competente tentando quebrar e falhando em público. O AES virou padrão depois de um concurso aberto de cinco anos. A criptografia pós-quântica levou oito anos de processo público até virar norma.

A IA hoje publica o artigo em duas semanas e sobe em produção na terceira.

Não estou dizendo que uma está certa e a outra errada. Estou dizendo que as duas são fundo, não superfície, e que só uma delas está sendo tratada como se fosse superfície.

onde elas se reencontram

E, depois de setenta anos, elas voltaram a se encostar. Em três frentes.

A primeira é a mais concreta: aprendizado profundo virou ferramenta de ataque de canal lateral. Em vez de atacar a matemática do AES, você mede o consumo de energia do chip enquanto ele cifra e treina uma rede pra deduzir a chave a partir desse traço. Isso é área madura, com conjunto de dados de referência e métrica própria, e o ganho do modelo é precisar de muito menos medições do que os métodos estatísticos antigos.

A segunda é a IA virando alvo: quando você põe uma cifra dentro de uma rede neural, a rede passa a responder a entradas que a cifra nunca aceitaria, e isso abre porta. Na EUROCRYPT de 2026 saiu justamente uma criptanálise desse tipo de construção.

A terceira é o relógio quântico. O algoritmo de Shor, de 1994, mostrou que um computador quântico grande o suficiente quebra RSA e curva elíptica, ou seja, quase toda a assimétrica em uso. Ninguém tem essa máquina hoje, mas o ataque não precisa dela agora: basta gravar o tráfego cifrado de hoje e esperar. É por isso que a migração já começou.

  1. 1994algoritmo de Shormostra que um computador quântico suficientemente grande fatora números grandes, e derruba RSA e curva elíptica junto.
  2. 2016NIST abre a chamadaprocesso público pra escolher os substitutos. oito anos de análise aberta pela frente.
  3. 2024-08os padrões saemML-KEM (FIPS 203) pra acordo de chave, ML-DSA (FIPS 204) e SLH-DSA (FIPS 205) pra assinatura.
  4. 2025-03HQC como reservaum segundo mecanismo de chave, com matemática diferente, pra não apostar tudo em reticulados.
  5. 2030prazo reala CNSA 2.0 exige a migração dos sistemas de segurança nacional, e o NIST deprecia o nível de 112 bits.
  6. 2035proibidoo que ficou pra trás deixa de ser aceito.
a corrida pós-quântica: do algoritmo que criou o problema até os prazos que já estão valendo.

E o aviso que falta em quase toda manchete: IA não quebra AES. Nada nas três frentes acima arranha a matemática de uma cifra moderna. O que a IA faz é atacar a implementação, o vazamento físico e a fronteira entre modelo e cifra. É exatamente a mesma lição do WPA2.

o que eu já quebrei

Eu ia ficar mal-acostumado de escrever tudo isso sem dizer onde eu mesmo errei. Todos os quatro são de código meu, em produção, e todos foram consertados.

O primeiro é o meu favorito porque é quase poético. Eu tinha uma constante declarada com validade de quinze minutos pro token de acesso, bonitinha, no topo do arquivo. E ela nunca era passada pra função que assinava o token. O resultado é que os tokens saíam sem campo de expiração nenhum, ou seja, não expiravam nunca. O código dizia quinze minutos. O sistema entregava eternidade. Hoje ele rejeita qualquer token que chegue sem prazo, em vez de confiar que o prazo foi posto.

O segundo não é criptografia, é o que fica em volta dela, e é pior. Eu tinha uma função que checava papel de usuário antes de liberar rota de administrador. Ela estava registrada com o escopo errado do framework, uma palavra, e por causa disso não valia fora do arquivo onde foi declarada. Nove checagens de permissão viraram enfeite. Qualquer usuário autenticado alcançava rota de admin. O código parecia certo, revisava bem, e não fazia absolutamente nada.

O terceiro é o oposto: deu certo. Eu tinha um endpoint de download de arquivo que era público e montava o caminho concatenando o que vinha na URL, sem autenticação, sem assinatura, e sem conferir se o caminho continuava dentro da pasta. Quem adivinhasse um nome baixava o arquivo, e uma sequência de ../ saía da pasta inteira. A troca foi por URL assinada com HMAC sobre a chave e o prazo, comparação em tempo constante, e o caminho resolvido e conferido contra a raiz. Um detalhe que eu só entendi escrevendo: a assinatura é conferida antes da expiração, de propósito. Se eu checasse a validade primeiro, a diferença entre "assinatura inválida" e "link expirado" contaria pra quem estivesse sondando que aquela assinatura era boa.

O quarto é o mesmo HMAC com outro modelo de ameaça: webhook de pagamento. O provedor assina cada notificação, e o meu lado recalcula a assinatura, compara em tempo constante e rejeita qualquer coisa fora de uma janela de cinco minutos, pra ninguém reenviar uma notificação legítima capturada antes. E a regra que vale mais que a criptografia toda: o corpo do webhook nunca decide nada. Ele é um aviso pra eu ir perguntar o status na API do provedor, que é a única fonte de verdade.

Esses quatro têm a mesma moral, e é a moral do WPA2: a matemática não falhou em nenhum deles. Falhou o que estava em volta: uma constante que não chegou ao destino, uma palavra de escopo, um caminho não validado, uma ordem de checagem. É sempre a costura.

o que eu levei da aula ruim

Que criptografia é uma ciência à parte, e que isso não é desculpa pra não entender o básico. É motivo pra respeitar o básico.

Eu não vou virar criptógrafo. Ninguém precisa virar. Mas saber o que é uma chave, por que hash não volta, e onde a assimétrica passa o bastão pra simétrica é a diferença entre usar a ferramenta e ser usado por ela. E saber que existe uma ciência inteira atrás dela é o que te impede de inventar a sua própria, que é, no fim, a única regra que a criptografia realmente pede de quem está de fora.