Blocos de Cifras - Modo de Operação

Os algoritmos de criptografia do tipo block cipher trabalham em cima de blocos de tamanho predefinido, porém, a mensagem a ser cifrada muito provavelmente terá um tamanho diferente do tamanho do bloco (normalmente maior), fazendo com que seja necessário haver uma forma de o algoritmo poder ser aplicado a mensagens de diferentes tamanhos. O propósito dos modos de operação dos algoritmos do tipo block chiper é justamente permitir que tais algoritmos consigam trabalhar em mensagens de quaisquer tamanhos.

São 4 os modos de operação mais utilizados: Eletronic CodeBook (ECB), Cipher-Block Chaining (CBC), Cipher FeedBack (CFB) e Output FeedBack (OFB). Todos eles, com exceção do ECB, utilizam um vetor de inicialização (initialization vector, IV), que nada mais é do que um bloco de dados não específico, de tamanho igual ao do bloco tratado pelo algoritmo, utilizado para iniciar o processo e para inserir algum nível de aleatoriedade ao mesmo. Não há necessidade de o IV ser secreto.

Eletronic CodeBook (ECB)
É o modo de operação mais simples e mais inseguro. A mensagem original é dividida em blocos e cada bloco é cifrado isoladamente, ou seja, a cifragem de um bloco não influencia na cifragem dos demais. O problema deste modo de operação é que padrões de cifragem não são escondidos ao longo do processo, em outras palavras, dois blocos iguais (mesmo conteúdo) da mensagem original, quando cifrados, gerarão blocos cifrados iguais. Esta vulnerabilidade dá margem a um ataque de criptoanálise. As imagens a seguir ajudam a entender melhor como esta vulnerabilidade poderia ser explorada.
Digamos que a imagem inteira seja a mensagem que se deseja transmitir de forma confidencial. Para garantir a confidencialidade, iremos cifrar a imagem utilizando um algoritmo de criptografia do tipo block cipher, por exemplo o DES. Ao utilizarmos o modo de operação ECB, a mensagem (no caso, a imagem) será dividida em blocos. Para facilitar a exemplificação, vamos considerar que cada bloco a ser cifrado corresponde a um pixel da imagem. Se vocês observarem as duas primeiras imagens vão entender aonde estou querendo chegar: blocos (pixels) geram o mesmo resultado ao serem cifrados! Observe como é possível identificar padrões da mensagem original na mensagem cifrada, quando o modo de operação ECB é utilizado, coisa que não ocorre quando algum outro modo é utilizado (veja a terceira imagem).


Cipher-Block Chaining (CBC)
Neste modo de operação, que é o mais utilizado, antes que cada bloco da mensagem original seja cifrado, realiza-se a operação XOR entre este e o resultado da cifragem do bloco anterior. Como para o bloco inicial, por justamente ser o primeiro bloco da mensagem, não haverá resultado de cifragem anterior, então para realizar a operação XOR será utilizado o vetor de inicialização (IV). A seguir, um diagrama simples que apresenta o modo de operação CBC.

Como se pode ver, diferentemente do modo de operação ECB, a cifragem dos blocos não ocorre de forma isolada, pois depende tanto da chave quanto do resultado da cifragem do bloco anterior. Algumas informações adicionais sobre este modo de operação:
A operação de cifragem ocorre obrigatoriamente de forma seqüencial, não podendo ser paralelizada, ao contrário da operação de decifragem , que pode ser paralelizada;
A mensagem original deve ser complementada (padding) até que o seu tamanho seja múltiplo do tamanho da chave (bloco de cifragem);
Porque a cifragem ocorre em cadeia (cada bloco depende da cifragem do bloco anterior), é óbvio que a alterção de um único bit na mensagem original alterará não só a cifragem do bloco ao qual o bit em questão pertence, como também a todos os blocos posteriores;
Também por causa da forte dependência entre os blocos, qualquer problema de integridade da mensagem cifrada, mesmo um único bit corrompido, impedirá a realização da operação de decifragem.

Cipher FeedBack (CFB)
Este modo de operação é similar ao CBC, com a diferença de que o CFB transforma o block cipher em um stream cipher auto-sincronizado. Assim como no CBC, alterações na mensagem original são propagadas ao longo da cadeia de cifragem. Outra semelhança é que a operação de cifragem também não pode ser paralelizada. Porém, diferentemente do CBC, um bit corrompido na mensagem cifrada prejudicará a decifragem de apenas dois blocos: um único bit do bloco em que ocorreu o bit corrompido e todo o bloco seguinte. Os demais blocos da cadeia são decifrados corretamente. A seguir, um diagrama simples que apresenta o modo de operação CFB.

Outra vantagem que o modo de operação CFB oferece em relação ao CBC é que a mensagem original não precisa ser complementada para que seu tamanho seja múltiplo do tamanho do bloco de cifragem.

Output FeedBack (OFB)
Este modo de operação transforma o block cipher em um stream cipher sincronizado. Como se pode ver no diagrama a seguir, uma diferença que o OFB apresenta em relação ao CFB é que a cifragem do bloco posterior utiliza o resultado da cifragem do bloco anterior antes que esta tenha passado pela operação de XOR com o respectivo bloco da mensagem original.
Referências:
Block ciphers modes of operation (progressive-coding.com).
http://en.wikipedia.org/wiki/Block_cipher_mode_of_operation
blog - http://rumoapfarea3.blogspot.com/

Comentários

Postagens mais visitadas deste blog

Redação Ti Nota 10 - Klauss

Prova Discursiva nota 10 - Banca Cespe

Portugues - Orações