Serpent

Origem: Wikipédia, a enciclopédia livre.
Ir para: navegação, pesquisa

Serpent é uma cifra de criptografia simétrica que foi finalista no concurso Advanced Encryption Standard (AES), onde ele ficou em segundo lugar para Rijndael. Serpent foi projetado por Ross Anderson, Eli Biham, e Lars Knudsen.

Como outras submissões AES, Serpent tem um tamanho de bloco de 128 bits e suporta um tamanho de chave de 128, 192, 256 ou 512 bits. A cifra é uma rede de substituição-permutação 32-round operando em um bloco de quatro palavras de 32 bits. Cada rodada é aplicável uma das oito de 4 bits a 4-bit S caixas-32 vezes em paralelo. Serpente foi projetado de modo que todas as operações podem ser executadas em paralelo, usando 32 fatias de 1 bit. Isso maximiza o paralelismo, mas também permite o uso do extenso trabalho criptoanálise realizada em DES.

Serpente tomou uma abordagem conservadora para a segurança, optando por uma grande margem de segurança: os designers considerados 16 rodadas para ser suficientes contra os tipos conhecidos de ataque, mas especificado 32 rodadas como um seguro contra futuras descobertas em criptoanálise. O relatório oficial sobre a concorrência NIST AES classificadas Serpent como tendo uma margem de segurança de alta, juntamente com Marte e Twofish, em contraste com a margem de RC6 e Rijndael (atualmente AES) segurança adequada. Na votação final, Serpent teve o menor número de votos negativos entre os finalistas, mas marcou o segundo lugar geral porque Rijandel teve votos substancialmente mais positivos, o fator decisivo é que Rijandel permitido para uma implementação de software muito mais eficiente.

A cifra Serpent é de domínio público e não foi patenteado. Não existem restrições ou ônus de qualquer natureza quanto à sua utilização. Como resultado, qualquer um é livre para incorporar Serpent em seu software (ou hardware implementações) sem pagar taxas de licenciamento.

Rijndael vs. Serpent[editar | editar código-fonte]

Rijndael é uma rede de transformação substituição linear com dez, doze ou catorze ciclos, dependendo do tamanho da chave, e com tamanhos de bloco de 128 bits, bits de 192 ou 256 bits, independentemente especificados. Serpente é uma rede de substituição-permutação, que tem trinta e dois rounds, além de uma inicial e uma permutação final para simplificar uma implementação otimizada. A função rodada em Rijndael consiste em três partes: uma camada não-linear, uma camada de mistura linear, e uma camada de mistura de chave XOR. A função rodada em Serpent consiste de key-mistura XOR, trinta e duas aplicações paralelas do mesmo 4 × 4 S-box, e uma transformação linear, exceto na última rodada, em que outra chave de mistura XOR substitui a transformação linear. A camada de não-linear em Rijndael usa um 8 × 8 S-box Considerando Serpent usa oito diferentes 4 × 4 S-boxes. Os 32 rodadas significa que Serpent tem uma margem de segurança maior do que Rijndael; no entanto, Rijndael com 10 rodadas é mais rápido e mais fácil de implementar para pequenas blocks.Hence, Rijndael foi escolhido como o vencedor na competição AES.

Segurança[editar | editar código-fonte]

O ataque XSL, se eficaz, enfraqueceria Serpent (embora não tanto quanto seria enfraquecer Rijndael, que se tornou AES). No entanto, muitos acreditam que uma vez cryptanalysts considerações de implementação são levados em conta o ataque XSL seria mais caro do que um ataque de força bruta.

Em 2000, um artigo de Kohno et al. apresenta um ataque meet-in-the-middle contra 6 de 32 rodadas de serpente e um ataque boomerang amplificado contra 9 de 32 rodadas na Serpente.

Um ataque de 2001 por Eli Biham, Orr Dunkelman e Nathan Keller apresenta um ataque de criptoanálise linear que rompe 10 de 32 rodadas de Serpent-128 com 2.118 plaintexts conhecidos e 289 tempo, e 11 rodadas de Serpente-192/256 com 2118 plaintexts conhecidas e 2187 tempo.

Um ataque de 2011 Hongjun Wu, Huaxiong Wang e Phuong Ha Nguyen, também usando criptoanálise linear, rompe 11 rodadas de Serpent-128 com 2.116 plaintexts conhecidos, 2.107,5 tempo e 2.104 memória.

O mesmo documento também descreve dois ataques que quebram 12 rodadas de Serpent-256. O primeiro requer 2.118 plaintexts conhecidos, 2.228,8 tempo e 2.228 memória. O outro ataque requer 2.116 plaintexts conhecidas e 2121 memória, mas também exige 2.237,5 tempo.

Referências[editar | editar código-fonte]


Ícone de esboço Este artigo sobre Criptografia é um esboço. Você pode ajudar a Wikipédia expandindo-o.