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
Estrutura de funcionamentoA cifra CAST-256 faz uso de rede de Feistel, sendo o algoritmo desta rede baseado em:
Funcionamento do algoritmoNa 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: 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-256Seja = 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 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áliseA 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] 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]
Na PráticaDiversas ferramentas comerciais fazem uso da cifragem de dados:
O PGP (Pretty Good Privacy) tem como algoritmo default CAST-128.
Referências
|