CAST-256
Cast (Carlisle Adams and Stafford Tavares) é uma família de cifra de blocos. Nessa família se encontra a cifras de blocos individuais conhecidas como, CAST-64, CAST-128 (ou CAST5) e CAST-128 (candidato ao AES). O algoritmo encontrado na família CAST é baseado no algoritmo DES (utlizada a rede de Feistel e é conhecido como rede de substituição-permutação). CAST usa S-caixas fixas, mas são consideravelmente maiores do que as utilizadas em DES. Essas S-caixas foram cuidadosamente projetadas para ser não-linear e resistente à criptoanálise.
A cifra CAST-256 foi derivada da cifra CAST-128 que é um algoritmo de cifra de bloco, sendo criado em 1996 por Carlisle Adams e Stafford Tavares. O CAST-128 é um algoritmo de Feistel, com 12 a 16 iterações (rodadas) da etapa principal, tamanho de bloco de 64 bits e chave de tamanho variável (40 a 128 bits, com acréscimos de 8 bits). Os 16 rounds de iteração são usados quando a chave tem comprimento maior que 80 bits. [1]
O algoritmo AES (Advanced Encryption Standard) é o principal padrão de criptografia simétrica atual. [2] Vários algoritmos participaram do processo para escolha do AES. [2] Para candidatura ao AES surgiu a necessidade de aumentar o tamanho do bloco de cifragem. Blocos esses que passaram a ter 128 bits. A partir disso, deu-se inicio a cifra CAST-256.
A cifra CAST-256 além de ter a característica de blocos maiores, agora com 128 bits, também possui chaves de 128, 192 ou 256 bits e 48 iterações (12 quad-rounds) e faz uso de uma rede de Feistel "generalizada".
Princípios do CAST-256
- Em 1988-1990 começou o processo de criação de design para cifras simétricas, dando inicio à funções booleanas, Caixas-S, funções de rodadas, rotinas de chaves.
- Em 1992-1993 o nome CAST foi introduzido à família e especificado diversos parametros, dando inicio a criação do CAST-1 e posteriormente o CAST-2.
- Em 1993-1995 ocorreu a modificação da rotina de chave e partir disto deu-se o CAST-3 com uma maior foco em função de rodada e no design das Caixas-S. A criação preliminar das boxes-S caracteriza a CAST-4 e quando o design das boxes-S foram finalizadas criou-se a CAST-5 conhecida como CAST-128.
- Em 1997 foi publicada a cifra CAST-128 (RFC 2144).
- Em 1998 deu inicio a expansão da CAST-128 para a CAST-256 que foi submetida como candidato à cifra de bloco AES (Advanced Encryption Standard.
Estrutura de funcionamento
A cifra CAST-256 faz uso de rede de Feistel, sendo o algoritmo desta rede baseado em:
- Seja a função que será computada a cada rodada e seja as subchaves utilizadas nas rodadas respectivamente. Então a operação básica realizada para encriptar o bloco de entrada é a seguinte:
- Divida o bloco de entrada em duas metades (esquerdo e direito) que são processadas independentemente e para cada rodada compute:
- A operação em cada rodada utilizada para a decriptação do texto cifrado é:
- Ao final das operações, obtem-se o texto em claro novamente.
Funcionamento do algoritmo
Na Figura 1 conseguimos ver como é a estrutura de funcionamento da cifra CAST-256 que é bastante parecida com a de Feistel e se dá da seguinte maneira:
![](http://upload.wikimedia.org/wikipedia/commons/7/72/Cast-256.png)
Dado um bloco de entrada de 128-bits, divida-o em quatro blocos de 32-bits, denotado por . Seja o quad-round definido pelas seguintes operações de encriptação: .[3]
quando e são gerados pelo algoritmo de geração de chave do CAST-256 (mais detalhes sobre o algoritmo de geração de chaves e sobre as funçoes em [4]
O processo de decriptação se dá da seguinte maneira .[3]
Descrição do algoritmo CAST-256
Seja = 128-bits de bloco de entrada (texto em claro), temos o seguinte código de encriptação que corresponde ao esquema dito na seção anterior.
for(i = 0; i < 6; i++) Beta <- Q[i](Beta) for (i = 6; i < 12; i++) Beta <- Q_barra[i](Beta)
A saída desse algoritmo é o bloco de entrada cifrado de 128-bits.
A cifra CAST-256 faz uso de uma chave primária k de 256-bits. Considerando que a descriptografia é idêntica a criptografia, exceto que o conjunto de entradas das chaves na quad-round são derivadas de k e são usada em ordem inversa [5], como se segue:
for (i = 0; i < 12; i++) { k_{rnovo}(i) = k_{r}(11-i) k_{mnovo}(i) = k_{m}(11-i) }
A rotina de geração de chaves do CAST-256 é dada pelo seguinte algoritmo [5]:
Inicialização
for (i = 0; i < 24; i++){ for(j = 0; j < 8; j++){ tmj(i) = cm cm = (cm + mm) mod 2 ^ 32 trj(i) = cr cr = (cr + mr) mod 32 } }
Rotina da chave
= ABCDEFGH = chave primaria de 256 bits, K.
for (i = 0; i < 12; i++){ kappa <- omega(2i)(K) kappa <- omega(2i+)(K) kr(i) <- kappa km(i) <- kappa }
Detalhes sobre a especificação da função omega em [5].
Nota:
Criptoanálise
A ferramenta fundamental de um ataque linear é um diferenciador linear que consiste uma equação linear envolvendo pedaços de texto simples, texto cifrado e chave, segurando com probabilidade não uniforme. Essa discrepância entre a probabilidade de uma relação linear de uma cifra e de um comportamento aleatório é chamado de viés. Normalmente, as relações lineares são derivados para cada componente individual em uma cifra. Além disso, as relações lineares são combinadas, levando a aproximações lineares de estruturas maiores, até alcançar múltiplas rodadas. Intuitivamente, aproximações lineares são realizadas de preferência sobre os componentes não lineares, tais como, as S-boxes. Seja a S-box S: , e duas cadeias de bits, e , conhecido como máscaras de bits. A equação linear envolvendo os bits de entrada de , designada por , e seus bits de saída designados por, é . A probabilidade para que essa relação seja verdadeira é [3]
Se , então a máscara de bits é chamado trivial; caso contrário, ele é chamado de não-trivial. A tendência desta relação linear é . Uma lista exaustiva contendo todas as entradas e saídas de máscaras de bits de uma S-box S é chamada Tabela aproximação linear (LAT) de . O LAT permite identificar os mais promissores (não-trivial) relações lineares para S, nomeadamente aqueles com maior viés. [3]
O viés da combinação de duas aproximações lineares é derivado usando de Matsui Empilhar-Up Lema. A Zero-Up Lema assume que todas as subchaves das rodadas são independentes, a fim de calcular o viés combinado das relações lineares independentes. As subchaves das rodadas em CAST, porém, não são independentes, mas gerado através de um algoritmo de chave programação. No entanto, assumimos a aproximação é razoavelmente boa, como já foi assumido em ataques lineares anteriores sobre a cifra DES. [3]
Mas, não se pode combinar um número arbitrário de relações lineares. Uma restrição óbvia é a de limitar o esforço de ataque para menos do que a de uma pesquisa exaustiva chave. O tamanho da chave para CAST-128 é de pelo menos 40 bits, e para CAST-256, pelo menos 128 bits. Além disso, tanto para CAST-128 e CAST-256, nós olhamos para os ataques que não exigem mais texto do que o livro de códigos completa , blocos de texto, respectivamente). Caso contrário, um invasor pode recolher o livro de códigos e usá-lo para decifrar (e forjar) criptogramas sem conhecer a chave (e enquanto a chave não é alterado) [3]
As mesmas S-caixas de CAST-128 também são usadas em CAST-256. Da mesma forma, os mesmos três tipos de funções das rodadas de CAST-128 são aplicadas em grupos de quatro rodadas chamados quadrounds. Assim, usamos em CAST-256 as mesmas máscaras de bits usados em nossa análise da CAST-128. É interessante observar que [6] já previu aproximações lineares com mascára de saída diferente de zero. Mas, os autores [6] não discutiram mais este assunto. [3]
As primeiras relações lineares que temos para CAST-256 são 4-rodadas iterativa (Figura 2), que significa um quad-round. Apenas uma (de quatro) rodada é ativa e todas as quatro funções desta rodada estão ativas. [3]
![](http://upload.wikimedia.org/wikipedia/commons/thumb/f/f9/Quadround.png/220px-Quadround.png)
Calculamos o viés para a aproximação linear com máscaras , para cada um das quatro caixas até . O viés é exatamente para todos eles. [3]
Poderíamos ter construído as relações lineares alternativas iterativas, com bits de ordem superior definidos como ou . Para máscara de bit todos as S-caixas presente no viés , e por o viés são e para as S-boxes à , respectivamente. Estas máscaras levam a uma diminuição de no viés combinado devido ao carry e devido ao empréstimo de bits nas operações em modulo de adição e subtração nas funções das rodadas. Por exemplo, para uma rodada completa, usando a máscara , o viés torna-se . O fator é, devido à aproximação do módulo da subtração e adição com a máscara . Assim, temos não nenhuma vantagem significativa no uso dessas máscaras de bits alternativas em vez de . [3]
A relação linear na Figura 2 pode ser usado para distinguir um número de rodadas quad-rounds da CAST-256 a partir de uma permutação aleatória (com o mesmo tamanho de bloco). Pode-se derivar uma relação linear, tais como , onde (A, B, C, D) indica um bloco de texto simples, e (E, F, G, H) indica um bloco de texto cifrado após uma série de quad-rodadas.
Na Prática
Diversas ferramentas comerciais fazem uso da cifragem de dados:
- TrueCrypt
- CryptoExpert 2004 Lite
- E4M Disk Encryption
O PGP (Pretty Good Privacy) tem como algoritmo default CAST-128.
Referências
- ↑ {Ronielton Rezende Oliveira. Criptografia simétrica e assimétrica - Os principais algoritmos de cifragem. Segurança Digital [Revista online],31:11{15, 2012}
- ↑ a b {Joan Daemen and Vincent Rijmen. The design of Rijndael: AES-the advanced encryption standard. Springer Science & Business Media, 2013.}
- ↑ a b c d e f g h i j Jorge Nakahara Jr and Mads Rasmussen. Linear analysis of reduced-round cast-128 and cast-256.
- ↑ Carlisle Adams and Jeff Gilchrist. The cast-256 encryption algorithm. Technical report, 1999.
- ↑ a b c SICAST. Cast-256 algorithm specification.
- ↑ a b S.E. Tavares M. Wiener C.M. Adams, H.M. Heys. An analysis of the cast-256 cipher.