Criptografia básica usando XOR e seus problemas

A operação XOR, Exclusive or, Ou Exclusivo é uma operação lógica obrigatória nos microcontroladores. Suas aplicações são muitas como a comparação de bytes (com resultado zero se iguais), adição sem transporte, zerar registradores sem carregar o zero de imediato e muito usado na criptografia.

Com a seguinte tabela da verdade:

  • 0 ^ 0 = 0
  • 0 ^ 1 = 1
  • 1 ^ 0 = 1
  • 1 ^ 1 = 0

a tabela diz que quando os bits são iguais o resultado será zero. Já olhando para uma cadeia de bytes, ou uma string, o XOR tem a caracteristica de  misturar duas cadeias de bytes de forma que se possa recuperar a cadeia original usando somente a outra. Como no exemplo feito no octave:

  • octave:44> char(bitxor(double("texto plano"),double("12345@12345")))
    ans = EWK@Z`A^RZZ
    octave:45> char(bitxor(double("EWK@Z`A^RZZ"),double("12345@12345")))
    ans = texto plano
    octave:46>
     

Um leitor desavisado ficará tentado a implementar alguma criptografia utilizando somente este artíficio, mas há problemas a serem evidenciados.

Tamanho da chave

O problema de criptografar uma cadeia qualquer utilizando este método é a necessidade de uma chave com o mesmo tamanho da cadeia. Assim se pensarmos em criptografar um DVD cheio teremos que mandar outro DVD com a chave pois ambos terão o mesmo tamanho. Pode ser útil. Mas não é muito prático quando se precisa transmitir ou armazenar a informação plana. Não é uma criptografia fraca. De fato se a chave for aleatória o suficiente (se aproximando do ruido) este método é considerado o melhor, pois a operação XOR tem a propriedade de agregar a aleatoriedade da chave à cadeia de informação que é bem organizada. Veja que uma cadeia bem organizada pode por meios estatisticos facilitar a descriptografia por um terceiro.

Geração da chave

Se por um acaso pretende usar este formato de criptografia veja que a chave deve ser aleatória o suficiente e não ter muitos blocos repetidos. Uma forma de se conseguir esta chave é se utilizar de fenômenos físicos que apesar de todas as leis da fisica estarem escritas; para nossos olhos e de um computador é um fenômeno imprevisível e verdadeiramente aleatório. São fenômenos muitos utilizados o efeito Zener de um diodo Zener polarizado inversamente, o ruido térmico em resistores ou mesmo fenômenos atmosféricos. A combinação destes métodos também é possível.

Há na internet e muito popular em revistas de eletrônica os geradores de ruido branco feitos para simular os pratos das baterias (com um efeito de attack e fade)  ou para acalmar os nervos (parecem chuva, rios, praias). Estes geradores feitos com amplificação do ruido de um transistor sem polarização são um exemplo de geradores de chaves.

Anúncios

Deixe um comentário

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