Introdução à criptografia – 2

No artigo anterior eu falei que a criptografia simétrica era aquela em que a mesma chave utilizada para criptografar é usada para descriptografar. Neste artigo vou demonstrar um mini-exemplo de criptografia simétrica.

Em criptografia, o algoritmo deve ser considerado como conhecido por todos (origem, destino, atacante), o tamanho da chave também deve considerado como conhecido, assim como o tamanho da mensagem. A única coisa que somente as duas pessoas que querem conversar de forma criptografada sabem é a chave de criptografia.

A base de toda a criptografia simétrica está na operação booleana XOR, conhecida também como “Ou Exclusivo”.

A operação XOR tem a seguinte característica:

A XOR B.
Se A for igual a B, então A XOR B = 0.
Se A for diferente de B, então A XOR B = 1.

Então:

0 XOR 0 = 0;
0 XOR 1 = 1;
1 XOR 0 = 1;
1 XOR 1 = 0;

Ela é comutativa:
A XOR B = B XOR A;

E tem a seguinte característica:

A XOR B = C;
C XOR A = B;
C XOR B = A;

Imagine que Alice quer enviar a mensagem M para BOB usando a chave K, Alice então faz a seguinte operação:

M XOR K = “Mensagem Codificada”.

Bob, ao receber a mensagem, fará a seguinte operação:

“Mensagem Codificada” XOR K = M

Enquanto o tamanho da mensagem M e o tamanho da chave K forem iguais, sendo que K não é formada por repetições (ou seja, K é uma chave formada aleatoriamente), será impossível alguém conseguir ler esta mensagem sem a chave:

1110001101010110
XOR
1010011101101110
=
010001000011100

O problema deste tipo de algoritmo é que, se eu criptografar um DVD de 4GB, precisarei de 4GB de chave!

Só para constar: Um algoritmo de criptografia em que a chave de criptografia precisa ter o mesmo tamanho da mensagem é chamado de criptografia baseada em corrente.

Para resolver o problema do tamanho, a criptografia atual utiliza algoritmo de blocos, ou seja: A informação a ser codificada é dividida em blocos de tamanhos bem definidos e cada bloco é codificado de forma individual, usando uma chave de tamanho bem determinado. O resultado é que é possível criptografar uma quantidade infinita de dados para uma chave de um tamanho finito. (por exemplo, é possível criptografar um DVD de 4GB com uma chave de 128bits)

Tomando por exemplo a demonstração acima: Imagine que desejamos codificar “1110001101010110” usando uma algoritmo de bloco com uma chave de 4 bits (no caso, “0110”) . Para exemplos, o algoritmo será um simples XOR.

O que temos:

1110 0011 0101 0110 – mensagem
0110 0110 0110 0110 – chave
1000 0101 0011 0000 – mensagem cifrada

Para descriptografar, é só adicionar a chave à mensagem cifrada:

1000 0101 0011 0000 – mensagem cifrada
0110 0110 0110 0110 – chave
1110 0011 0101 0110 – mensagem

Repare que a chave sempre segue o mesmo padrão: 0110.

Isso é bom pois permite que estes 4 bits codifiquem infinitos bits. O ruim é que é sempre estes 4 bits que codificam: Se alguém descobre eles, toda a codificação é quebrada.

Esta criptografia de exemplo é muito fácil de ser quebrada caso haja vazamento ou repetição de parte da mensagem original:

Por exemplo, se ocorrer o vazamento dos primeiros 3 bits de informação (ou se o atacante adivinhar eles)

0110 0010 0110 0100 Mensagem Cifrada
xxxx xxxx xxxx xxxx Chave
101x xxxx xxxx xxxx mensagem Original.

Lembre que A XOR B = C e C XOR A = B? então:

0110 XOR 101x = 110x.

logo

0110 0010 0110 0100 Mensagem Cifrada
101x 111x 101x 100x Mensagem
110x 110x 110x 110x Chave

Logo, recuperei 3/4 desta mensagem por causa do vazamento de 3 bits  da mensagem original!

A criptografia usando somente XOR, hoje em dia, não é mais utilizada – o XOR é apenas o componente que adiciona a chave ao texto original, gerando o texto cifrado.

O algoritmo preferido para criptografia simétrica atualmente é o AES, que subsitituiu o DES e o triple DES. No futuro mostrarei detalhadamente o funcionamento do AES.

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: