• Nenhum resultado encontrado

3.2 Cifras de Bloco

3.2.2 Ciphertext Stealing

Conforme discutido anteriormente, a utilização dos modos de operação ECB (se-ção 3.2.1.1) e CBC (se(se-ção 3.2.1.2) pode acarretar em expansão do texto cifrado caso o tamanhonp do texto claro subjacente não corresponda exatamente a um múltiplo de nb, ou seja, caso (np modnb , 0). Para resolver este problema de expansão, indesejá-vel na maioria das aplicações, foi desenvolvida a técnica conhecida comoCiphertext Stealing(CTS, ou “Roubo de Texto Cifrado”). Sua utilização permite que mensagens de qualquer tamanho sejam encriptadas sem que haja expansão das mesmas, ao custo de um aumento na complexidade dos processos de encriptação e decriptação.

Resumidamente, a técnica consiste em alterar o processamento dos dois últimos blocos do texto claro e na reordenação dos mesmos antes da transmissão, conforme a seqüência:

1. O último bloco do texto claro (possivelmente incompleto) é preenchido com os bits de ordem mais baixa pertencentes ao penúltimo bloco cifrado, “roubando”

assim estes bits;

2. O último bloco, agora completo, é encriptado;

3. A ordem dos dois últimos blocos é invertida;

4. O último bloco resultante deste processo é truncado de forma que seu tamanho corresponda àquele do antigo último bloco, removendo-se assim os bits rou-bados. O resultado é um texto cifrado com o mesmo tamanho do texto claro original.

Portanto, apenas o processamento dos dois últimos blocos do texto é alterado. É importante ressaltar, entretanto, que a técnica só pode ser usada no caso de mensagens cujo tamanho total seja maior do que um bloco. A figura 10 ilustra a técnica para ambos os modos ECB e CBC.

Figura 10: Ciphertext Stealing para os modos ECB e CBC

3.2.3 Utilização e Segurança

Cifras de bloco são os mais proeminentes e importantes elementos em muitos sis-temas criptográficos. Individualmente, eles provêem confidencialidade; sua versatili-dade permite a construção de geradores de números pseudo-aleatórios (o modo CTR é comumente utilizado para este fim), cifras de fluxo (modos OFB, CFB e CTR) e funções dehash. Esta família de cifras é muito utilizada em técnicas de autenticação de mensagens, mecanismos para garantia de integridade, protocolos de autenticação e também esquemas de assinatura digital por chave simétrica. No entanto, é importante ressaltar que no domínio da criptografia não há panacéia: não existe um cifra, seja ela de bloco ou de fluxo, que seja a solução ideal para toda e qualquer aplicação, mesmo que a segurança por ela oferecida seja de alto nível. Na prática, existem diversos fa-tores (como restrição de recursos em uma plataforma, desempenho, compatibilidade com outros sistemas, etc.) que influenciam na escolha pela cifra mais adequada para cada aplicação.

São conhecidas atualmente técnicas para o projeto de cifras de bloco seguras, o que constitui em um fator decisivo para sua expansão. O mesmo não ocorre com cifras de fluxo, razão pela qual muitas aplicações em que estas últimas seriam adequadas preferem adotar cifras de bloco seguras em modos de operação de fluxo.

3.3 Resumo

Este capítulo apresentou os dois tipos principais de cifras simétricas existentes atualmente: Cifras de Fluxo e Cifras de Bloco. O funcionamento das cifras de fluxo consiste na geração de uma seqüência de bits pseudo-aleatória (dependente da chave) que é diretamente combinada com os bits da mensagem, normalmente por meio de ope-rações simples, como XOR bit-a-bit. Elas podem ainda ser classificadas em Síncronas e Auto-Síncronas, dependendo da forma como esta seqüência de chaves é gerada. Já as cifras de bloco operam necessariamente sobre blocos de bits (conjuntos de tama-nho fixo) e exigem, então, o uso de técnicas especiais para encriptar mensagens cujo tamanho não corresponda exatamente ao tamanho do bloco, como o uso de Modos de Operação (dentre os quais se destacam ECB, CBC, CFB, OFB e CTR), aplicação de PaddingeCiphertext Stealing.

Foram ainda discutidas algumas das vantagens e desvantagens de cada uma destas famílias de cifras simétricas. Enquanto cifras de fluxo são potencialmente mais rápi-das do que cifras de bloco, estas últimas têm a vantagem de serem conhecidos métodos para sua construção segura, algo que não ocorre com a outra família. Faz-se necessá-rio, portanto, um estudo mais aprofundado das metodologias de projeto de cifras de bloco, utilizadas para nortear o desenvolvimento de uma cifra segura e adequada a plataformas com restrição de recursos. Esta análise será apresentada no Capítulo 4, que discute os principais conceitos envolvidos na construção de cifras desta família e mostra algumas das mais proeminentes técnicas de ataque utilizadas contra a mesma.

4 CIFRAS DE BLOCO E CRIPTOANÁLISE

No capítulo anterior, foram discutidas as características que definem uma cifra de bloco, bem como as técnicas envolvidas em sua utilização. Este capítulo complementa a discussão anterior ao apresentar algumas das principais estratégias de projeto e pri-mitivas criptográficas adotadas, essenciais para a obtenção de algoritmos seguros. Ao longo deste capítulo, deve ficar clara a importância dos conceitos de difusão e confu-são estabelecidos por Shannon (cf. Capítulo 2), que confu-são a base do projeto de cifras de bloco.

É importante ressaltar, entretanto, que as estratégias mais modernas levam em conta não apenas estes princípios, mas também alguns dos mais efetivos ataques cripto-analíticos conhecidos. Portanto, para um completo entendimento de como estes fatores influenciam na construção de algoritmos seguros, neste capítulo são também descritas técnicas de ataque a cifras de bloco amplamente utilizadas com a intenção de transpor sua segurança. Apesar de alguns dos conceitos utilizados nestes ataques poderem ser corretamente aplicados à criptoanálise de cifras de fluxo, o foco do presente estudo é o desenvolvimento de cifras de bloco e, portanto, será dada uma maior ênfase a estas últimas.

4.1 Redes de Substituição-Permutação

Permutação e a substituição são primitivas básicas utilizadas no projeto de diver-sos algoritmos criptográficos. Quando se considera o projeto de cifras atuais, estas

operações podem ser melhor formalizadas da seguinte maneira:

• Substituição: um conjunto de ns bits é substituído por outro, em geral (mas não necessariamente) do mesmo tamanho, de acordo com uma tabela que re-cebe o nome deS-Box(Substitution-Box, ou “Caixa de Substituição”). Para ser considerada segura, a relação entre os bits de entrada e saída desta S-Box deve ser altamente não-linear. Deste modo, o objetivo da operação de substituição é prover confusão à cifra.

• Permutação: conjuntos denpbits são embaralhados entre si, como palavras em um anagrama. Esta permutação de posições é responsável pela capacidade de difusão da cifra.

Em geral, as técnicas de substituição e permutação utilizadas sozinhas não podem ser consideradas seguras. Todavia, a intercalação destas duas primitivas de forma ite-rativa mostra-se bastante interessante, sendo a estratégia adotada pela família de cifras conhecidas genericamente como SPN (Substitution-Permutation Networks, ou “Re-des de Substituição-Permutação”).

Com relação à chave criptográfica, existem dois modos comumente adotados para incorporá-la a uma cifra do tipo SPN:

• O primeiro deles consiste em intercalar camadas de substituição e permutação (camadas SP) independentes da chave e camadas de aplicação da sub-chave de round. São também incluídas camadas de adição de sub-chave no início e no final da cifra, pois sem este procedimento seria fácil para um atacante remover a camada SP não “protegida” por uma sub-chave. Um bom exemplo de cifra que adota esta abordagem é o AES. É interessante ressaltar que, ao invés de se utilizar uma chave a cada round, há ainda a possibilidade de aplicá-la apenas em algumas posições específicas da cifra (a cada 2 rounds, por exemplo).

• Uma segunda forma possível é a utilização da chave de round para alterar o fun-cionamento de uma das operações de substituição ou permutação, ou mesmo de ambas. Uma discussão sobre este tipo de abordagem é mostrada em (KELIHER;

MEIJER; TAVARES, 1997). A chave pode ser utilizada, por exemplo, para definir quais S-Boxes serão usadas em cada round, selecionadas dentro de um conjunto de várias S-Boxes possíveis.

A diferença entre estas duas abordagens é ilustrada na Figura 11.

Figura 11: Dois modos de incorporar as chaves de round em uma SPN: as chaves geradas no escalonamento de chaves (KS) são aplicadas de forma independente das camadas SP (esquerda); elas podem também influenciar diretamente nas camadas S e/ou P, por exemplo por meio da seleção das S-Boxes utilizadas (direita). A última operação de permutação é comumente suprimida para tornar a cifra verticalmente si-métrica (ignorando as camadas de adição de chave)

A decriptação é realizada injetando os bits “ao inverso” na SPN, ou seja, a ordem dos rounds é invertida e em cada um deles é primeiro aplicada a permutação inversa, se-guida da S-Box inversa. Portanto, a implementação do algoritmo de decriptação exige que as operações de permutação e substituição inversas sejam também implementadas, o que pode chegar a dobrar o custo da cifra em termos de hardware ou número de

li-nhas de código. Para superar este problema, é comum que os projetos de cifras de bloco utilizem técnicas para torná-lasinvolutivas, o que significa que as operações de encrip-tação e decripencrip-tação são idênticas, exceto pelo escalonamento de chaves. Esta classe de cifras, também denominadasE/D similares(LAI, 1992), têm como vantagem adicional a garantia de que sua segurança é igual em ambos os sentidos, o que previne ataques que exploram de alguma forma a assimetria de cifras. Uma estratégia bastante interes-sante para a construção de cifras involutivas é a adoção de funções de round compostas apenas por operações auto-inversas, bem como a remoção da operação de permutação na última camada da SPN (operação tracejada na Figura 11), deixando a cifra verti-calmente simétrica. A literatura inclui alguns casos de cifras involutivas e análise das mesmas, como em (BARRETO; RIJMEN, 2000a;BARRETO; RIJMEN, 2000b;DAEMEN et al., 2000; YOUSSEF; TAVARES; HEYS, 1996; YOUSSEF; MISTER; TAVARES, 1997). Este também é o caso do próprio C, que será apresentado no Capítulo 7.