Ataques a cifras de fluxo

As Cifras de Fluxo são dígitos originais combinados com um fluxo de dígitos de cifra por uma operação de disjunção exclusiva (XOR). Podem ser muito seguras se forem usadas apropriadamente. Contudo, elas são vulneráveis a ataques se não forem tomadas certas precauções:

  • As chaves não devem ser usadas mais do que uma vez
  • Mensagens com decifragem válida nunca devem ser usadas para indicar autenticidade por si só

Ataque de reutilização da chave editar

As cifras de fluxo são vulneráveis a ataques se a mesma chave for usada duas ou mais vezes.

Digamos que enviamos duas mensagens A e B com o mesmo tamanho, as duas cifradas com a mesma chave, K. A cifra de fluxo produz um fluxo de bits C(K) com o mesmo tamanho das mensagens. A versão cifrada das mensagens será então:

E(A) = A xor C
E(B) = B xor C

onde o xor é executado bit a bit.

Digamos que um atacante intercepta as mensagens E(A) e E(B). Ele pode facilmente obter:

E(A) xor E(B)

No entanto, o xor é comutativo e tem como propriedade que X xor X = 0 (auto-inverso), logo:

E(A) xor E(B) = (A xor C) xor (B xor C) = A xor B xor C xor C = A xor B

Se uma mensagem for mais longa que a outra, o atacante trunca a mensagem maior ao tamanho da menor e o seu ataque irá revelar essa porção da mensagem mais longa. Por outras palavras, se alguém intercepta duas mensagens cifradas pela mesma chave, pode recuperar A xor B. Mesmo que nenhuma das mensagens seja conhecida, desde que se saiba que as duas mensagens estão em linguagem natural, essa cifra pode muitas vezes ser quebrada usando métodos de 'papel e lápis'. Se uma das mensagens for conhecida, a solução é trivial.