Qual é considerado o algoritmo de encriptação mais forte?
Esta pode parecer uma resposta de cop-out, mas o "one time pad" é considerado o único algoritmo de encriptação/descriptação verdadeiramente "inquebrável".
Para máxima segurança, requer a fonte de entropia (aleatoriedade) da mais alta qualidade que se pode encontrar, de preferência a partir de algum processo ultra-complexo, analógico, físico como o ruído térmico em componentes eléctricos. Também se pode usar uma combinação de imagens de câmeras de vídeo de fenômenos relacionados ao tempo, imagens altamente localizadas de ondas oceânicas que se movimentam e se chocam com rochas, etc. e alimentar esse fluxo de dados com uma função de hashing de alta qualidade (como SHA-256) para gerar um fluxo aleatório de bits para ser usado como o one-time-pad.
O one-time-pad é simplesmente um fluxo de bits verdadeiramente aleatórios que tem exatamente o mesmo comprimento que o fluxo de bits do texto da placa. As duas correntes de bits são XOR'ed bit-wise juntos para criar o ciphertext.
Para decifrar a mensagem, deve-se estar de posse tanto do ciphertext como da corrente de bits one-time-pad. Simplesmente XOR estes juntos para recuperar o plaintext.
Agora aqui é a parte mais importante: Nunca, nunca mais use esse fluxo de bits para qualquer actividade criptográfica futura! É chamado de "one-time pad" por uma razão - destina-se a ser usado UMA VEZ, e SOMENTE UMA VEZ. Se esta regra fundamental for seguida sem falhas, então qualquer um que seja capaz de interceptar a mensagem criptográfica enquanto em trânsito não tem absolutamente nenhuma esperança de descodificar a mensagem sem ter também a posse dos bits de um one-time-pad. O ÚNICO vector de ataque possível para este esquema de encriptação/descriptação é, de alguma forma, ganhar a posse do one-time-pad. Nenhuma quantidade de análise matemática inteligente ou uso de recursos de supercomputação pode recuperar o texto da placa de apenas possuir o texto criptografado.
Se alguém quebrar as regras e decidir reutilizar um único bloco e duas ou mais mensagens de texto criptografado forem interceptadas, então a segurança deste esquema de criptografia está muito comprometida. A análise de criptografia envolvendo o XOR-ing de duas ou mais mensagens criptográficas interceptadas (todas criptografadas com o mesmo one-time-pad) revela muito sobre o que está no one-time-pad, e as mensagens de texto simples são então muito quase dadas. Se o atacante/interceptor tem uma forma de influenciar o conteúdo de mensagens futuras, então um "ataque de texto conhecido" pode quebrar a encriptação de forma bem aberta. Portanto, ele deve ser repetido: Nunca, nunca, nunca use uma única vez mais do que uma vez. Fazer algo assim num ambiente de alta segurança com documentos classificados deve, no mínimo, revogar a autorização de segurança de alguém e pode muito bem fazer com que alguém seja condenado a alguma pena de prisão. A menos, claro, que a pessoa tenha um certo sobrenome... É melhor eu não entrar nisso aqui.
Na prática (especialmente em TI/segurança do computador), os blocos de tempo único não são práticos, e raramente são usados, se é que alguma vez foram usados. O problema é que com cada mensagem criptografada enviada/recebida, um one-time-pad separado também deve ser enviado/recebido através de um canal altamente confiável e fora da banda, como um courier ou, em alguns casos, através de uma carta USPS ou pacote Fedex ou UPS. O que é mais comumente usado em ambientes altamente seguros para proteger os documentos classificados mais sensíveis é um algoritmo de criptografia de chave simétrica como AES-256. Como o nome do algoritmo implica, a chave de encriptação/desencriptação tem 256 bits de comprimento. A vantagem de algoritmos como este é que as chaves podem ser reutilizadas para criptografar muitos, muitos documentos, e os textos cifrados desses documentos podem ser vazados para os inimigos sem que eles sejam capazes de descobrir a chave de criptografia/descriptografia. Isto é especialmente verdade se os cálculos de cifras de bloco forem feitos em modo de encadeamento de cifras (modo CBC), com um "vetor de inicialização" randomizado que basicamente adiciona "sal" ao início da mensagem, para garantir que mesmo que plaintexts idênticos sejam encriptados, seus textos de cifras serão impossíveis de correlacionar pelo atacante.
Em comunicações remotas seguras, muitas vezes ainda não é bom o suficiente ter algoritmos de encriptação fortemente simétricos disponíveis com chaves longas (256-bit). Se dois sistemas remotos nunca se comunicaram antes, e eles desejam trocar dados criptografados através de um algoritmo como o AES-256 (que, até agora, tem resistido a ataques severos de criptologistas), é necessário que haja uma maneira desses sistemas concordarem com uma chave secreta de criptografia/descriptografia para usar, mesmo que um terceiro (um homem no meio do inimigo) esteja ouvindo todo o tráfego de rede entre essas duas máquinas (com um sniffer de pacotes em algum local crucial). É aqui que entra a criptografia assimétrica (chave pública/privada) como a RSA, usada em conjunto com protocolos de troca de chaves, como o Diffie-Hellman. Com os recentes desenvolvimentos na "computação quântica", há uma grande preocupação de que algoritmos de chave pública/privada como a RSA (que depende da dificuldade de se considerar grandes números em seus dois principais fatores) possam logo se tornar quebrados e inúteis, pelo menos para alguns dos menores comprimentos de chave ainda em uso hoje em dia. O tamanho padrão da chave RSA para muitos programas e protocolos atualmente (GPG, SSH, OpenSSL) é de 2048 bits. No momento, isso ainda é considerado "impossível de quebrar", mas aqueles que estão paranóicos sobre os próximos avanços da computação quântica são bem aconselhados a aumentar os comprimentos de chave RSA para pelo menos 4096 bits.
Ouvimos frequentemente nas notícias algumas histórias muito perturbadoras sobre como servidores que usam uma versão particular do OpenSSL para proteger a identidade do site (via certificados SSL e protocolo HTTPS) estão sendo hackeados, e software de código aberto supostamente confiável como OpenSSL e SSH fica sob fogo por ser "inseguro" ou "altamente vulnerável" até que sejam corrigidos. E infelizmente, é realmente verdade que tais sistemas realmente *são* vulneráveis a ataques (em alguns casos, com alguém conectando-se ao servidor de forma remota e ganhando uma shell raiz no sistema). O problema não é com os algoritmos de encriptação/descriptação em si. Se devidamente implementados, AES-256 e RSA 4096-bit devem ser extremamente seguros num futuro previsível. O que acontece, infelizmente, é que a codificação dos protocolos usados com esses algoritmos é complexa e as implementações podem ainda ter bugs escondidos no código, apenas esperando para serem explorados por alguém. Muitas vezes, esses bugs envolvem erros de programação simples e estúpidos como erros de buffer-overrun, onde um atacante pode injetar código executável arbitrário de escolha nas estruturas de dados apropriadas e enganar o software para executá-lo e conceder acesso ao sistema, muitas vezes com privilégios elevados.
Artigos semelhantes
- O Algoritmo de Dijkstra é um algoritmo ganancioso ou um algoritmo de programação dinâmico?
- Qual é a diferença entre encriptação em repouso e encriptação em trânsito?
- O LastPass ou 1Password utiliza uma encriptação mais forte?
- Qual é o metal ou material de ficção mais forte? Qual é o material ou metal ficcional mais forte?