O que é uma cifra de fluxo?
Uma cifra de fluxo é um tipo de algoritmo usado na criptografia de dados em que a fonte que precisa ser criptografada é processada em uma sequência de chaves que parece aleatória. Esse tipo de cifra é um pouco flexível no sentido de que pode variar a criptografia à medida que o texto está sendo processado. Às vezes, eles também são chamados de cifra de estado porque a criptografia também depende do estado atual da operação. Ao contrário das cifras de bloco, que funcionam em pedaços de dados de 64 bits por vez, uma cifra de fluxo pode operar em um único bit. Por esse motivo, um fluxo pode ser processado em alta velocidade com muito pouco poder de processamento.
A primeira cifra de fluxo foi criada por Gilbert Vernam em 1917. Mais tarde, Vernam também ajudou a criar uma cifra conhecida como bloco único, que é uma forma de cifra de fluxo que usa uma chave única para criptografar os dados. Em um teclado único, a chave gerada tem o mesmo tamanho dos dados que precisam ser criptografados, é completamente aleatória e nunca é usada novamente em nenhum outro lugar, daí o nome.
Quando processado com base nos dados a serem criptografados, geralmente chamados de texto sem formatação, é impossível descriptografar o texto cifrado resultante sem a chave. O teclado único é difícil de lidar na maioria dos cenários e, portanto, é usado apenas para situações muito exclusivas. Ainda assim, uma cifra de fluxo é geralmente considerada útil, então as chaves foram encurtadas e tornadas pseudo-aleatórias, o que significa que elas são estatisticamente aleatórias, mas na realidade não são.
A cifra de fluxo tem a capacidade de criptografar em tempo real. Dessa forma, é ainda mais fácil que as cifras de fluxo simples sejam executadas por pessoas em papel e caneta, enquanto uma cifra de bloco normalmente requer o uso de um computador para processar. O texto sem formatação flui através do processo de criptografia junto com o fluxo de chaves, a sequência pseudo-aleatória que compõe a chave, onde é convertida e sai do outro lado como texto cifrado.
Geralmente, essa criptografia ocorre por meio de uma operação exclusiva ou (XOR) nos bits individuais à medida que passam pela cifra. Uma cifra XOR simples usa um tipo de disjunção lógica como base, o que essencialmente diz que o resultado pode ser verdadeiro se um dos operandos for verdadeiro, mas não ambos. Por exemplo, se um pouco em movimento no processo de criptografia é zero ou um e o bit de fluxo de chaves emparelhado não corresponde, a saída resultante é uma. Se o bit e o bit de fluxo de chaves emparelhado corresponderem, onde ambos são um ou ambos são zero, o resultado é zero. O fluxo criptografado de uns e zeros é então descriptografado na outra extremidade da transmissão usando o mesmo fluxo de chaves para converter os bits novamente em seu texto original.
Existem dois tipos de cifra de fluxo. Usando um método síncrono, o fluxo de chaves é criado separado do texto sem formatação ou do texto cifrado e depois mesclado para fornecer a criptografia ou descriptografia. Com esse método, as extremidades de envio e recebimento da transmissão devem permanecer sincronizadas onde estão operando na mesma chave e na mesma posição na chave. Caso ocorra algum problema, a descriptografia precisa recomeçar ou pode haver sinalizadores colocados intermitentemente em todo o texto cifrado, indicando novos pontos de partida. Uma cifra auto-sincronizada, por outro lado, atualizará o fluxo de chaves com base em algum número de dígitos anteriores no texto cifrado.
Uma das cifras de fluxo mais usadas, chamada RC4, foi criada pelo RSA Data Security®. É licenciado e usado em vários produtos de software, bem como no protocolo SSL (Secure Socket Layer) usado em comunicações seguras pela Internet e na criptografia WEP (Wired Equivalent Privacy) usada com dispositivos sem fio. Outra cifra frequentemente usada é conhecida como ORYX, que encontrou uso em transmissões de dados de telefone celular que precisam ser criptografadas. A IBM® também desenvolveu um método de criptografia de fluxo conhecido como SEAL, que encontrou uso na criptografia de disco rígido.