>> Tecnologia Eletrônica >  >> Casa Inteligente >> Vida Inteligente

Diferença entre Cifras de Fluxo (Stream Ciphers) e Cifras de Bloco (Block Ciphers)

Uma cifra é um conjunto de regras matemáticas (algoritmo) para converter texto legível (plaintext) em texto ilegível (ciphertext). A diferença principal: cifras de fluxo operam em fluxos de texto, um bit ou byte por vez; cifras de bloco operam em blocos de texto.

Cifra de Fluxo (Stream Cipher)

A ideia básica é dividir o texto em blocos minúsculos (1 bit ou 1 byte) e codificar cada bloco dependendo de muitos blocos anteriores. Cifras de fluxo usam chave de criptografia diferente para cada bit/byte, então o mesmo bit produz ciphertext diferente a cada criptografia. Algumas usam gerador de keystream, produzindo fluxo aleatório ou pseudoaleatório de bits. A cifra realiza operação Booleana (XOR exclusivo) entre bits do keystream e do plaintext para produzir ciphertext.

Cifra de Bloco (Block Cipher)

Divide o texto em blocos relativamente grandes (tipicamente 64 ou 128 bits) e codifica cada bloco separadamente. A mesma chave é usada para cada bloco, determinando a ordem de substituição, transposição e outras funções matemáticas. Algoritmos fortes tornam a engenharia reversa virtualmente impossível.

Difusão e Confusão

Cifras de bloco usam confusão e difusão para criptografar. Confusão torna a relação entre chave e ciphertext o mais complexa possível — idealmente, cada caractere da chave influencia cada caractere do ciphertext. Difusão espalha a influência de cada caractere do plaintext sobre vários caracteres do ciphertext, tornando a cifra menos suscetível a ataques estatísticos.

Prós e Contras

Cifras de fluxo, por criptografar bit a bit, são adequadas para aplicações de hardware em tempo real (áudio, vídeo). São mais fracas e menos eficientes em software, menos usadas nesse contexto. Cifras de bloco são mais fáceis de implementar em software porque criptografam em blocos de tamanho que o software já usa. A chave costuma ter o mesmo comprimento do bloco.