A Aldeia Numaboa ancestral ainda está disponível para visitação. É a versão mais antiga da Aldeia que eu não quis simplesmente descartar depois de mais de 10 milhões de pageviews. Como diz a Sirley, nossa cozinheira e filósofa de plantão: "Misericórdia, ai que dó!"

Se você tiver curiosidade, o endereço é numaboa.net.br.

Leia mais...

Criptografia Numaboa

O algoritmo IDEA ilustrado

Dom

11

Set

2005


17:16

(21 votos, média 4.81 de 5) 


Sub-blocos da chave

A obtenção de sub-blocos da chave é simples. O algoritmo usa 52 destes sub-blocos - seis em cada uma das oito rodadas, mais quatro na última transformação. Inicialmente, a chave de 128 bits é dividida em oito sub-blocos de 16 bits. Estes são os primeiros sub-blocos da chave: seis serão usados na primeira rodada e os outros dois serão K1 e K2 da segunda rodada. Depois disto, os bits da chave são deslocados 25 posições para a esquerda e a nova chave é novamente dividida em oito sub-blocos, dos quais quatro serão usados na segunda rodada e quatro na terceira. Este processo continua enquanto sub-blocos da chave forem necessários para completar o algoritmo.

A decifração do IDEA

O processo da decifração é o mesmo da cifragem, com exceção dos sub-blocos da chave que precisam ser revertidos. Na decifração, os sub-blocos da chave são o inverso aditivo ou o inverso multiplicativo dos sub-blocos da chave usados na cifragem. É preciso salientar que, no caso do IDEA, o inverso multiplicativo de 0 é 0. Estes cálculos são um pouco trabalhosos, mas, em compensação, só precisam ser realizados uma vez para cada um dos sub-blocos. A tabela abaixo mostra os sub-blocos da chave na cifragem e os sub-blocos da chave correspondentes na decifração:

     RODADA     SUB-BLOCOS NA CIFRAGEM
     ------     ---------------------------------
        1       K1(1) K2(1) K3(1) K4(1) K5(1) K6(1)
        2       K1(2) K2(2) K3(2) K4(2) K5(2) K6(2)
        3       K1(3) K2(3) K3(3) K4(3) K5(3) K6(3)
        4       K1(4) K2(4) K3(4) K4(4) K5(4) K6(4)
        5       K1(5) K2(5) K3(5) K4(5) K5(5) K6(5)
        6       K1(6) K2(6) K3(6) K4(6) K5(6) K6(6)
        7       K1(7) K2(7) K3(7) K4(7) K5(7) K6(7)
        8       K1(8) K2(8) K3(8) K4(8) K5(8) K6(8)
      saída     K1(9) K2(9) K3(9) K4(9)

     RODADA     SUB-BLOCOS NA DECIFRAÇÃO
     ------     --------------------------------------------
        1       K1(9)-1  -K2(9)  -K3(9)  K4(9)-1  K5(8)  K6(8)
        2       K1(8)-1  -K2(8)  -K3(8)  K4(8)-1  K5(7)  K6(7)
        3       K1(7)-1  -K2(7)  -K3(7)  K4(7)-1  K5(6)  K6(6)
        4       K1(6)-1  -K2(6)  -K3(6)  K4(6)-1  K5(5)  K6(5)
        5       K1(5)-1  -K2(5)  -K3(5)  K4(5)-1  K5(4)  K6(4)
        6       K1(4)-1  -K2(4)  -K3(4)  K4(4)-1  K5(3)  K6(3)
        7       K1(3)-1  -K2(3)  -K3(3)  K4(3)-1  K5(2)  K6(2)
        8       K1(2)-1  -K2(2)  -K3(2)  K4(2)-1  K5(1)  K6(1)
      saída     K1(1)-1  -K2(1)  -K3(1)  K4(1)-1

A velocidade do IDEA

A velocidade de cifragem e decifração do IDEA é praticamente a mesma do DES. Devido aos cálculos suplementares nos sub-blocos da chave, a decifração é um pouco mais lenta do que a cifragem.

Criptoanálise

O comprimento da chave do IDEA é de 128 bits. Um ataque de força bruta dos mais eficientes precisaria fazer 2128 (ou 1036) cifragens para recuperar a chave. Se dispuséssemos de um bilhão de chips que testassem um bilhão de chaves por segundo cada um, ainda assim seriam necessários 1013 anos para se realizar a tarefa! Talvez a força bruta não seja o melhor método para se quebrar o IDEA...

O algoritmo IDEA é imune à criptoanálise diferencial e, de acordo com Eli Biham, seu ataque criptoanalítico de chave relacionada também não funcionou contra o IDEA. Existem alguns textos que "descobriram" uma classe de chaves fracas. Estas chaves fracas são diferentes das chamadas chaves fracas do DES, onde a função de cifragem é auto-inversa. São consideradas fracas porque, se forem utilizadas, um atacante pode identificá-las com facilidade através de um ataque de texto claro escolhido. Por exemplo, a chave

0000 0000 0F00 0000 0000 000F FFFF F000

é uma chave fraca, sendo que os F podem ser substituídos por qualquer dígito hexadecimal. Este não é um problema crucial porque a chance de acidentalmente gerar uma chave deste tipo é extremamente pequena, da ordem de 2-96.

Informações adicionais