O esquema básico de uma cifra de bloco é representado da seguinte forma –
Uma cifra de bloco pega um bloco de bits de texto plano e gera um bloco de bits de texto plano, geralmente do mesmo tamanho. O tamanho do bloco é fixado no esquema dado. A escolha do tamanho do bloco não afeta diretamente a força do esquema de criptografia. A força da cifra depende do comprimento da chave.
Tamanho do bloco
Pois qualquer tamanho de bloco é aceitável, os seguintes aspectos são levados em conta ao selecionar um tamanho de bloco.
-
Evite tamanho de bloco muito pequeno – Digamos que um tamanho de bloco é m bits. Então as combinações possíveis de bits em texto plano são então 2m. Se o atacante descobre os blocos de texto simples correspondentes a alguns blocos de texto criptografado enviados anteriormente, então o atacante pode lançar um tipo de ‘ataque de dicionário’, construindo um dicionário de pares de texto simples/cif texto enviado usando aquela chave de criptografia. Um bloco de tamanho maior torna o ataque mais difícil pois o dicionário precisa ser maior.
-
Não tem um bloco de tamanho muito grande – Com blocos de tamanho muito grande, a cifra torna-se ineficiente para operar. Tais plaintexts precisarão ser acolchoados antes de serem criptografados.
-
Múltiplos de 8 bits – Um tamanho de bloco preferido é um múltiplo de 8, pois é fácil de implementar, pois a maioria dos processadores de computador manipula dados em múltiplos de 8 bits.
Padding in Block Cipher
Block ciphers processam blocos de tamanhos fixos (digamos 64 bits). O comprimento dos plaintexts não é, na maioria das vezes, um múltiplo do tamanho do bloco. Por exemplo, um plaintextos de 150 bits fornece dois blocos de 64 bits cada um com um terceiro bloco de 22 bits de balanço. O último bloco de bits precisa ser preenchido com informações redundantes para que o comprimento do bloco final seja igual ao tamanho do bloco do esquema. Em nosso exemplo, os 22 bits restantes precisam ter 42 bits redundantes adicionais adicionados para fornecer um bloco completo. O processo de adição de bits ao último bloco é referido como padding.
O excesso de padding torna o sistema ineficiente. Além disso, o padding pode tornar o sistema inseguro às vezes, se o padding for feito sempre com os mesmos bits.
Block Cipher Schemes
Existe um grande número de esquemas de cifras de blocos que estão em uso. Muitos deles são conhecidos publicamente. A maioria das populares e proeminentes cifras de blocos estão listadas abaixo.
-
Digital Encryption Standard (DES) – A popular cifra de blocos dos anos 90. Agora é considerado como uma cifra de bloco ‘quebrado’, devido principalmente ao seu pequeno tamanho de chave.
-
Triplo DES – É um esquema de variantes baseado em aplicações repetidas de DES. Ainda é uma cifra de bloco respeitada mas ineficiente em comparação com as novas cifras de bloco mais rápidas disponíveis.
-
Advanced Encryption Standard (AES) – É uma cifra de bloco relativamente nova baseada no algoritmo de encriptação Rijndael que ganhou a competição de design AES.
-
IDEA – É uma cifra de bloco suficientemente forte com um tamanho de bloco de 64 e um tamanho de chave de 128 bits. Várias aplicações usam criptografia IDEA, incluindo versões iniciais do protocolo Pretty Good Privacy (PGP). O uso do esquema IDEA tem uma adoção restrita devido a problemas de patentes.
-
Twofish – Este esquema de cifra de blocos usa um tamanho de bloco de 128 bits e uma chave de comprimento variável. Foi um dos finalistas da AES. É baseado na cifra do bloco anterior Blowfish com um tamanho de bloco de 64 bits.
-
Serpent – Uma cifra de bloco com um tamanho de bloco de 128 bits e chaves de 128, 192, ou 256 bits, que também foi um finalista da competição AES. É um desenho mais lento mas mais seguro que outras cifras de blocos.
Nas próximas seções, vamos discutir primeiro o modelo de cifra de blocos seguido por DES e AES, duas das mais influentes cifras de blocos modernos.