Introdução a criptografia
Este artigo não descreve algoritmos de criptografia nem ensina a quebrá-los. Trata-se de uma introdução. Se você não sabe a diferença entre chave e senha, ou entre algoritmos simétricos e assimétricos, se não sabe o que é o ataque de força bruta e quantos bits precisa ter para ser seguro, então este artigo poderá lhe ser útil.
Parte 6: Criptografia nos dias de hoje
Agora que os conceitos foram colocados, vamos aos fatos práticos.
Na informática tudo se resume a bits. Em um algoritmo de criptografia o que se mede é o tamanho da chave em bits. Se uma chave possui 3 bits, ela pode ser uma dentre os seguintes valores:
000
001
010
011
100
101
110
111
Isto nos dá apenas 8 possibilidades para k. Na matemática, o número de possíveis chaves é de 2 elevando ao número de bits (23 = 8).
Assim sendo, se um algoritmo simétrico tiver 128 bits de chave, como é o caso do AES, significa que ele tem 2128 possíveis chaves ou 340282366920938463463374607431768211456 (nem tente ler este número!).
Lembra do nosso computador que testa 1 bilhão de possibilidades e do fato de dispormos de 1 bilhão destes para usar? Com este hardware eu levaria 170141183460469231731 segundos, já considerando a metade das tentativas (2127: lembra? ninguém é tão azarado de acertar na última). Em uma calculadora, dividindo isto por 60 para ter minutos, por 60 novamente para ter horas, por 24 para ter dias e por 365 para anos, chega-se a estrondosa quantia de 5.395.141.535.403 anos!
É pura falta de conhecimento de causa quem afirma que algoritmos simétricos de 128 bits são quebráveis por força bruta. Só mesmo Dan Brown em seu livro "Fortaleza Digital" e seu computador quântico de bilhões de bits para quebrar tal algoritmo!
Se considerar o AES128, não estou dizendo que ele é inquebrável pois pode ter fraquezas exploráveis por criptoanálise. Se houver ou (a) não se descobriu ou (b) quem descobriu não nos contou! O que estou afirmando é ser inquebrável quanto a força bruta!
Literaturas afirmam que um algoritmos simétrico de 256 bits tem segurança eterna, pois nem todo o silício do universo daria para construir uma máquina que o quebrasse (parenteses agora: da maneira como se constrói computadores hoje em dia. Alguns cientistas vem falando da computação quântica e de como ela mudaria a maneira de fazer as coisas. Computação quântica é cercada de mistério e de exageros. O fato é que já existe uma máquina com sete bits quânticos disponível).
Agora o que muitos realmente confundem é quanto a força bruta dos algoritmos assimétricos! É muito, mas muito diferente!
Em um simétrico, se eu tenho 8 bits de chave, tenho 256 combinações possíveis.
Se pegar o caso do RSA que é um assimétrico e se tiver uma chave de 8 bits, significa que o valor do N é de 256 bits. Sem querer descrever o RSA aqui, posso dizer que N é o resultado da multiplicação de dois números primos de 4 bits. Quebrar a chave significa achar um destes números. E não é de 2 elevado na 4 tentativas, pois os valores 2, 4, 6, 8, 9, 10 não precisam ser testados pois não são primos!
No universo de 4 bits só existem estes primos: 2, 3, 5, 7, 11,13. Só! Mata-se em seis tentativas no máximo!
Para algoritmos assimétricos, como no caso do RSA, o cálculo do esforço matemático não é simplesmente de 2NumeroDeBits. É muito, mas muito menos que isto.
Exatamente por isto é que os algoritmos assimétricos precisam de uma chave muito maior, hoje perto dos 1024 bits. No caso do RSA, dizer que ele é de 1024 bits, significa que o valor de N é de 1024 bits, logo quebrar significa encontrar um número primo de até 512 bits que sirva.
Aí tem gente que se acostumou a ver o RSA de 1024 bits e sai dizendo que um AES de 128 é fraco, pois só 128 bits? São coisas diferentes, meu caro!
Na informática tudo se resume a bits. Em um algoritmo de criptografia o que se mede é o tamanho da chave em bits. Se uma chave possui 3 bits, ela pode ser uma dentre os seguintes valores:
000
001
010
011
100
101
110
111
Isto nos dá apenas 8 possibilidades para k. Na matemática, o número de possíveis chaves é de 2 elevando ao número de bits (23 = 8).
Assim sendo, se um algoritmo simétrico tiver 128 bits de chave, como é o caso do AES, significa que ele tem 2128 possíveis chaves ou 340282366920938463463374607431768211456 (nem tente ler este número!).
Lembra do nosso computador que testa 1 bilhão de possibilidades e do fato de dispormos de 1 bilhão destes para usar? Com este hardware eu levaria 170141183460469231731 segundos, já considerando a metade das tentativas (2127: lembra? ninguém é tão azarado de acertar na última). Em uma calculadora, dividindo isto por 60 para ter minutos, por 60 novamente para ter horas, por 24 para ter dias e por 365 para anos, chega-se a estrondosa quantia de 5.395.141.535.403 anos!
É pura falta de conhecimento de causa quem afirma que algoritmos simétricos de 128 bits são quebráveis por força bruta. Só mesmo Dan Brown em seu livro "Fortaleza Digital" e seu computador quântico de bilhões de bits para quebrar tal algoritmo!
Se considerar o AES128, não estou dizendo que ele é inquebrável pois pode ter fraquezas exploráveis por criptoanálise. Se houver ou (a) não se descobriu ou (b) quem descobriu não nos contou! O que estou afirmando é ser inquebrável quanto a força bruta!
Literaturas afirmam que um algoritmos simétrico de 256 bits tem segurança eterna, pois nem todo o silício do universo daria para construir uma máquina que o quebrasse (parenteses agora: da maneira como se constrói computadores hoje em dia. Alguns cientistas vem falando da computação quântica e de como ela mudaria a maneira de fazer as coisas. Computação quântica é cercada de mistério e de exageros. O fato é que já existe uma máquina com sete bits quânticos disponível).
Agora o que muitos realmente confundem é quanto a força bruta dos algoritmos assimétricos! É muito, mas muito diferente!
Em um simétrico, se eu tenho 8 bits de chave, tenho 256 combinações possíveis.
Se pegar o caso do RSA que é um assimétrico e se tiver uma chave de 8 bits, significa que o valor do N é de 256 bits. Sem querer descrever o RSA aqui, posso dizer que N é o resultado da multiplicação de dois números primos de 4 bits. Quebrar a chave significa achar um destes números. E não é de 2 elevado na 4 tentativas, pois os valores 2, 4, 6, 8, 9, 10 não precisam ser testados pois não são primos!
No universo de 4 bits só existem estes primos: 2, 3, 5, 7, 11,13. Só! Mata-se em seis tentativas no máximo!
Para algoritmos assimétricos, como no caso do RSA, o cálculo do esforço matemático não é simplesmente de 2NumeroDeBits. É muito, mas muito menos que isto.
Exatamente por isto é que os algoritmos assimétricos precisam de uma chave muito maior, hoje perto dos 1024 bits. No caso do RSA, dizer que ele é de 1024 bits, significa que o valor de N é de 1024 bits, logo quebrar significa encontrar um número primo de até 512 bits que sirva.
Aí tem gente que se acostumou a ver o RSA de 1024 bits e sai dizendo que um AES de 128 é fraco, pois só 128 bits? São coisas diferentes, meu caro!
http://www.vivaolinux.com.br/artigo/Criptografia-chave-simetrica-de-bloco-e-de-fluxo