Se você esta familiarizado com Álgebra Booleana, você sabe que isso é um XOR. Se você não está, isso é um "ou exclusivo". E ele é basicamente uma das operações mais importantes na criptografia dos computadores porque ele tem propriedades muito interessantes. Então antes de começar, permita-me ensinar um pouco sobre o XOR e essa álgebra.
Sem usar o MathJax.
É bem simples porque na álgebra booleana só vale 0 e 1. Portanto você pode enumerar os resultados de todas as operações possíveis com todos os elementos existentes. E, é isso que eu vou fazer, só que como eu não vou usar o MathJax, toda vez que você ler XOR, você vai imaginar aquela imagem nas devidas proporções como se fosse uma adição, ok?
Os resultados são os seguintes:
- 0 XOR 0 = 0
- 0 XOR 1 = 1
- 1 XOR 0 = 1
- 1 XOR 1 = 0
- c1 = a1 XOR b1
- c2 = a2 XOR b2
Acredito que a partir daí fica fácil ver como ele faz pra "n" bits de informação.
Dito isto, agora podemos falar do One Time Pad. Que é extremamente simples. Uma mensagem pra um computador é só um conjunto de bits. Você vai gerar uma chave K que tem o mesmo tamanho da mensagem M e vai gerar a cifra C da seguinte forma:
C = M XOR K
Simples, fácil e prático. E agora pra você descriptografar é só você fazer o seguinte:
M = C XOR K
Exatamente isso. Você aplica a mesma operação usando a mesma chave na cifra e você recupera a mensagem. Isso porque quando você faz A XOR A, o resultado é 0. E olhe só, o XOR é associativo e comutativo, ou seja, você pode trocar a ordem dos termos que não vai mudar em nada. Agora só falta mostrar porque isso funciona.
A força dessa criptografia depende diretamente do tamanho da mensagem. A sua chave é uma possibilidade entre 2 elevado ao tamanho da mensagem de possibilidades. Ou seja e quase impossível que alguém quebre a criptografia na base da força bruta quando a mensagem é grande.
Só que como tudo na vida. Existe algumas desvantagens.
Por exemplo, não é uma boa idéia usar o One Time Pad mais de uma vez. Isso porque se você usar a criptografia com mensagens diferentes com uma mesma chave. Isso faz sentido em qualquer tipo de ataque para quebrar criptografias de chave simétrica, que são aquelas que usam a mesma chave para cifrar e descifrar
Quando você encripta alguma coisa você adiciona tempo de processamento em cima de alguma coisa e isso pode atrasar as mensagens, ou seja, você não pode utilizar essa encriptação para mensagens infinitamente grandes, e nem pode replicá-la pelos pedaços das mensagens.
E por fim, ambos os lados precisam saber qual é a chave, e você não pode simplesmente transmitir a chave para que todos vejam, caso contrário todo mundo vai saber decodificar as mensagens e não vai adiantar de nada.
Mas esse tipo de encriptação serve como base para alguns outros tipos que são conhecidos como o DES, ou, um dos mais robustos atualmente, o AES. O DES já foi quebrado, então não é uma boa idéia utilizá-lo, mas o AES está vivo até hoje, e a base dele é o One Time Pad, obviamente com modificações.
E isso é tudo! Agora você ja pode brincar de encriptar e desencriptar coisas.
Nenhum comentário:
Postar um comentário