Serpent-1 O Serpent-0 refinado Paulo Estima Mello PPGC – Instituto de Informática
Perspectiva história 1998: Início do concurso para escolha do “Advanced Encryption Standard” 1999: Definidos os finalistas do AES contest: Serpent, Rijndael, Mars, RC6 e Twofish 2000: AES escolhido: Rijndael
O Serpent Dados de entrada Tamanho da chave: 128, 192 e 256 bits Padding diferenciado para chaves pequenas (< 256) Tamanho do bloco: 128 bits Rodadas: 32 Em tese 16 são suficientes
O Serpent Operações Foram escolhidas operações consolidadas (ditas clássicas) supostamente confiáveis. XORs Tabelas de substituição (S-boxes) Tranformação linear Escalonamento de chaves
O Serpent Funcionamento Sobre um bloco “claro” é aplicada uma permutação inicial; Após ocorrem 32 rodadas (vemos em seguida) A última operação aplicada é uma permutação final
O Serpent As rodadas Passo 1: Transformação da chave Passo 2: Aplicação das S-boxes Passo 3: Aplicação da transformação linear Na última rodada não é aplicada. No seu lugar é feito um XOR com a 33ª chave de rodada
O Serpent Escalonamento de chaves São necessárias 132 palavras de 32 bits
O Serpent Aplicação das S-boxes São 8 S-boxes ao todo Transformam 4 bits de entrada produzindo 4 bits de saída Cada S-box é utilizada quatro vezes Operação bit-slice Cada S-box é replicada para transformar todo bloco
O Serpent Propriedades das S-boxes Um bit de diferença na entrada produz mais de um bit de diferença na saída Existe uma chance pequena de um bit de saída estar relacionado linearmente com um bit de entrada Um bit de entrada afeta no máximo 3 bits de saída
O Serpent Aplicação da transformação linear Rotações à esquerda (<<<) XORs Shift-lefts (<<)
O Serpent Não baseado em redes Feistel Na época do AES contest não estavam na moda Não há ataques reais registrados Tanto ataques lineares quanto diferenciais estão relacionados com as S-boxes utilizadas As S-boxes propostas foram baseadas nas S-boxes do DES com algumas modificações
Por que não venceu? O Serpent é possivelmente mais seguro que o Rjindael Performance tanto em hardware quanto em software pior (muito) O AES assumiu que a segurança do Rjindael era suficiente e o desempenho satisfatório
Por que Serpent-0 e Serpent-1? A primeira versão era um “beta” release que utilizava as S-boxes do DES, esta chamava-se Serpent-0 A última versão teve suas S-boxes aprimoradas (reduzindo a chance de ataques lineares e diferenciais) e se tornou o Serpent-1
Conclusão Se você não tem pressa... Use Serpent.
Bibliografia Anderson, R.; Biham, E.; Knudsen, L. Serpent: A proposal for the Advanced Encryption System. Agosto, 1999. Anderson, R.; Biham, E.; Knudsen, L. Serpent: A flexible block cipher with maximum assurance. Agosto, 1998. Comparison: Serpent/AES-Rijndael. http://www.scribd.com/word/download/4522?extension=ppt. Acessado em 27/04/2007.