Recapitulando o que ja vimos antes, para usarmos criptografia precisamos de um algoritmo criptográfico. Este algoritmo tem de ser “forte”, ou seja, difícil de prever seus resultados ou reverter uma operação através de uma técnica de criptoanálise.
Também vimos que o algoritmo normalmente é público, e o que garante a segurança é a senha. Aqui você pode se perguntar, como pode ser seguro se é público? Eu explico. O algoritmo nada mais é do que uma sequencia de diversas operações como as de substituição e transposição que vimos no texto anterior. O que o torna seguro é quando acrescentamos a chave, que é única e a cada chave usada um resultado completamente diferente é encontrado. Como existem milhões ou até bilhões de possibilidades se torna impossível prever o resultado tentando todas as possibilidades, isso é o que o torna seguro.
Sobre a chave, também chegamos a conclusão de que para a criptografia funcionar, ela deve ser conhecida apenas pela origem e pelo destino, e ser encaminhada entre as partes por um canal seguro.
Para complementar os conceitos que vimos nos textos anteriores vamos ver mais alguns.
Como já conhecemos o algoritmo, o objetivo da criptoanálise é verificar se através de alguma falha do algoritmo pode-se recuperar a chave usada para cifrar um determinado texto. Podemos também obter a chave se o algoritmo for “fraco”. Isso quer dizer, se o algoritmo for previsível na sua saída padrão é possível reverter a operação sem usar a chave.
Os dois métodos mais comuns de obter esses dados é a análise do algoritmo e amostras de textos, e a força bruta.
No lado da análise, o atacante vai estudar o algoritmo, amostras de entrada e saída e com isso tentar forçar uma entrada específica que cause um bug ou tentar prever a entrada com amostras de saída.
No outro lado temos a força bruta. Como o nome sugere, esse tipo de ataque consiste em tentar todas as possibilidades até obter um texto legível. Em muitos casos essa é considerada uma opção desesperada, porque se o algoritmo for forte e a chave usada tiver um tamanho razoável, esse processo pode demorar centenas, milhares ou até milhões de anos.
Não acredita? Vamos a um exemplo!
Imagine que você tem um supercomputador e deseja testar todas as possibilidades de um algoritmo moderno e forte, como por exemplo o AES-256. O seu supercomputador pode testar 2 quintilhões de senhas por segundo. Isso é coisa para caceta! Um computador normal com uma boa GPU pode chegar até 2 bilhões de combinações por segundo para você ter uma comparação, é muito processamento.
Agora, quanto tempo esse supercomputador levaria para testar todas as possibilidades? De acordo com pesquisas e testes feitos por alguns matemáticos, seria necessário cerca de 9.17x10^50 anos para testar tudo. Para usar como comparação saiba que a idade do universo é 1.4x10^10 anos. Outra coisa que você iria precisar era cerca de 150 reatores nucleares para manter os 150.000.000.000 watts de energia.
Acho que este exemplo é suficiente para demonstrar a complexidade de quebrar ou prever as possibilidades de um algoritmo atual. :)
Obviamente se você rodar um ataque de força bruta você vai conseguir quebrar uma chave específica em menos da metade desse tempo, talvez até muito menos se levarmos em conta senhas simples como “1234”, “password”, “teste”, como os usuários gostam de colocar.
Então, com base nesses exemplos e conceitos, vamos seguir em frente. Podemos classificar a força dos criptossistemas de dois modos, computacionalmente seguro e incondicionalmente seguro.
Os algoritmos computacionalmente seguros são aqueles onde o custo para quebrar é superior ao valor das informações que podem ser obtidas. De nada adianta você ganhar 100 mil por uma informação que você gastou 1 milhão para obter. Também entra na categoria computacionalmente seguro quando o tempo é superior ao tempo de vida da informação cifrada. De quê adiantaria levar 100 anos para quebrar uma informação que automaticamente se tornará publica em 50 anos?
Outra categoria que temos é os algoritmos incondicionalmente seguros, neste caso, independente da quantidade de texto, tempo e recurso é impossível reverter a operação e determinar o texto claro.
Também vimos que o algoritmo normalmente é público, e o que garante a segurança é a senha. Aqui você pode se perguntar, como pode ser seguro se é público? Eu explico. O algoritmo nada mais é do que uma sequencia de diversas operações como as de substituição e transposição que vimos no texto anterior. O que o torna seguro é quando acrescentamos a chave, que é única e a cada chave usada um resultado completamente diferente é encontrado. Como existem milhões ou até bilhões de possibilidades se torna impossível prever o resultado tentando todas as possibilidades, isso é o que o torna seguro.
Sobre a chave, também chegamos a conclusão de que para a criptografia funcionar, ela deve ser conhecida apenas pela origem e pelo destino, e ser encaminhada entre as partes por um canal seguro.
Para complementar os conceitos que vimos nos textos anteriores vamos ver mais alguns.
Criptoanálise
Nos textos anteriores foi comentado superficialmente sobre criptoanálise, agora chegou a hora de entrar um pouco mais nesse assunto.Como já conhecemos o algoritmo, o objetivo da criptoanálise é verificar se através de alguma falha do algoritmo pode-se recuperar a chave usada para cifrar um determinado texto. Podemos também obter a chave se o algoritmo for “fraco”. Isso quer dizer, se o algoritmo for previsível na sua saída padrão é possível reverter a operação sem usar a chave.
Os dois métodos mais comuns de obter esses dados é a análise do algoritmo e amostras de textos, e a força bruta.
No lado da análise, o atacante vai estudar o algoritmo, amostras de entrada e saída e com isso tentar forçar uma entrada específica que cause um bug ou tentar prever a entrada com amostras de saída.
No outro lado temos a força bruta. Como o nome sugere, esse tipo de ataque consiste em tentar todas as possibilidades até obter um texto legível. Em muitos casos essa é considerada uma opção desesperada, porque se o algoritmo for forte e a chave usada tiver um tamanho razoável, esse processo pode demorar centenas, milhares ou até milhões de anos.
Não acredita? Vamos a um exemplo!
Imagine que você tem um supercomputador e deseja testar todas as possibilidades de um algoritmo moderno e forte, como por exemplo o AES-256. O seu supercomputador pode testar 2 quintilhões de senhas por segundo. Isso é coisa para caceta! Um computador normal com uma boa GPU pode chegar até 2 bilhões de combinações por segundo para você ter uma comparação, é muito processamento.
Agora, quanto tempo esse supercomputador levaria para testar todas as possibilidades? De acordo com pesquisas e testes feitos por alguns matemáticos, seria necessário cerca de 9.17x10^50 anos para testar tudo. Para usar como comparação saiba que a idade do universo é 1.4x10^10 anos. Outra coisa que você iria precisar era cerca de 150 reatores nucleares para manter os 150.000.000.000 watts de energia.
Acho que este exemplo é suficiente para demonstrar a complexidade de quebrar ou prever as possibilidades de um algoritmo atual. :)
Obviamente se você rodar um ataque de força bruta você vai conseguir quebrar uma chave específica em menos da metade desse tempo, talvez até muito menos se levarmos em conta senhas simples como “1234”, “password”, “teste”, como os usuários gostam de colocar.
Então, com base nesses exemplos e conceitos, vamos seguir em frente. Podemos classificar a força dos criptossistemas de dois modos, computacionalmente seguro e incondicionalmente seguro.
Os algoritmos computacionalmente seguros são aqueles onde o custo para quebrar é superior ao valor das informações que podem ser obtidas. De nada adianta você ganhar 100 mil por uma informação que você gastou 1 milhão para obter. Também entra na categoria computacionalmente seguro quando o tempo é superior ao tempo de vida da informação cifrada. De quê adiantaria levar 100 anos para quebrar uma informação que automaticamente se tornará publica em 50 anos?
Outra categoria que temos é os algoritmos incondicionalmente seguros, neste caso, independente da quantidade de texto, tempo e recurso é impossível reverter a operação e determinar o texto claro.
0 comentários:
Postar um comentário