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

editar
  • 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

editar

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

editar

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:

 
Figura 1: CAST-256

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

editar

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

editar

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]

 
Figura 2 : Um quad-round iterativo de relações lineares para CAST-256

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

editar

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

  1. {Ronielton Rezende Oliveira. Criptografia simétrica e assimétrica - Os principais algoritmos de cifragem. Segurança Digital [Revista online],31:11{15, 2012}
  2. a b {Joan Daemen and Vincent Rijmen. The design of Rijndael: AES-the advanced encryption standard. Springer Science & Business Media, 2013.}
  3. 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.
  4. Carlisle Adams and Jeff Gilchrist. The cast-256 encryption algorithm. Technical report, 1999.
  5. a b c SICAST. Cast-256 algorithm specification.
  6. a b S.E. Tavares M. Wiener C.M. Adams, H.M. Heys. An analysis of the cast-256 cipher.