CAST-256

Fonte: testwiki
Saltar para a navegação Saltar para a pesquisa

Predefinição:Wikificação 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 F a função que será computada a cada rodada e seja k0,k1,...,kn as subchaves utilizadas nas rodadas 0,1,...,n 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 i=0,1,...,n compute:
Esquerdai+1=Direitai
Direitai+1=EsquerdaiF(Direitai,ki)
  • A operação em cada rodada i=n,n1,...,0 utilizada para a decriptação do texto cifrado (Esquerdai+1,Direitai+1) é:
Direitai=Esquerdai+1
Esquerdai=Direitai+1F(Esquerdai+1,ki)
  • 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:

Figura 1: CAST-256

Dado um bloco de entrada de 128-bits, divida-o em quatro blocos de 32-bits, denotado por β=(A,B,C,D). Seja o quad-round definido pelas seguintes operações de encriptação: βQi(β).[3]

C=Cf1(D,kr0(i),km0(i))
B=Bf2(C,kr1(i),km1(i))
A=Af3(B,kr2(i),km2(i))
D=Df1(A,kr3(i),km3(i))

quando krj(i) e kmj(i) 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 f1,f2,f3 em [4]

O processo de decriptação se dá da seguinte maneira βQi(β).[3]

C=Cf1(D,kr0(i),km0(i))
B=Bf2(C,kr1(i),km1(i))
A=Af3(B,kr2(i),km2(i))
D=Df1(A,kr3(i),km3(i))

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 kr(i),km(i) 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

cm=2302=5A82799916
mm=2303=6ED9EBA116
cr=19
mr=17
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:

(|K|=128)>(E=F=G=H=0)
(|K|=160)>(F=G=H=0)
(|K|=192)>(G=H=0)
(|K|=224)>(H=0)

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: 2n2m, e duas cadeias de bits, ΓXn2 e ΓYn2, conhecido como máscaras de bits. A equação linear envolvendo os bits de entrada de S, designada por ΓX, e seus bits de saída designados por, ΓY é XΓXS[X]ΓY=0. A probabilidade para que essa relação seja verdadeira é [3]

PΓX,ΓY=#X2n|X.ΓX=S[X].ΓY#X2n

Se ΓX=ΓY=0, 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 é |PΓX,ΓY12|. 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 S. 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 (264e2128, 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 fi 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 (00x,00000001x), para cada um das quatro caixas S1 até S4. O viés é exatamente 25 para todos eles. [3]

Poderíamos ter construído as relações lineares alternativas iterativas, com bits de ordem superior definidos como 00000002x ou 00000003x. Para máscara de bit 00000002x todos as S-caixas presente no viés 25, e por 00000003x o viés são 26,25,26 e 27 para as S-boxes S1 à S4, respectivamente. Estas máscaras levam a uma diminuição de 23 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 00000002x, o viés torna-se 24*25*25*25*25*23=219. O fator 23 é, devido à aproximação do módulo da subtração e adição com a máscara 00000002x. Assim, temos não nenhuma vantagem significativa no uso dessas máscaras de bits alternativas em vez de 00000001x. [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 (DH)*00000001x=0, 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.


Predefinição: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. 2,0 2,1 {Joan Daemen and Vincent Rijmen. The design of Rijndael: AES-the advanced encryption standard. Springer Science & Business Media, 2013.}
  3. 3,00 3,01 3,02 3,03 3,04 3,05 3,06 3,07 3,08 3,09 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. 5,0 5,1 5,2 SICAST. Cast-256 algorithm specification.
  6. 6,0 6,1 S.E. Tavares M. Wiener C.M. Adams, H.M. Heys. An analysis of the cast-256 cipher.