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...

Laboratórios

Astaroth

Seg

14

Mar

2005


04:23

(2 votos, média 4.50 de 5) 


2 – Definição do criptosistema

O criptosistema Astaroth, trabalha com blocos de 64 bits e chave de 256 bits.

Para garantir uma maior segurança das chave, o algoritmo trabalha com sub-chaves, que nada mais são do que um one-way hashing de 1024-bits da chave original de 256-bits, anexados a uma Tabela P, tabela esta que será melhor explicada a posteriori.

Nos três processos básicos do criptosistema (geração de sub-chaves, crifragem e decifragem), são usados elementos comuns a criptosistemas modernos, como caixas de substituição (S-BOXes), uma função F e uma rede Feistel.

As caixas de substituição, númeradas de 0 a 3, são de entrada de 8-bits e saida de 32-bits, de valores fixos, seus respectivos valores estão devidamente citados nas seções correspondentes a eles.

A função F, a qual é dedicada proxima seção, é (teoricamente) uma função irreversível.

Na cifragem e decifragem é usado, além das sub-chaves e dos processos citados acima, um outro processo, que é a permutação de bits baseados em uma tabela de permutação (Tabela P), gerada apartir das sub-chaves.

Existe ainda uma Tabela de Rotação (TR), usada somente na geração de sub-chaves, que determina um valor de rotação de bits para a geração de uma sub-chave.

2.1 - A função F

A função F é usada nos três processos básicos do criptosistema, citados anteriormente, a seguir foi feito um diagrama em linguagem lógica e divido em seis partes, explicando passo-a-passo o calculo da função f.

  • 1) y = -x
  • 2) y = (y - S3[x3]) <>< (S0[x4] mod 32)>
  • 3) y = (y - S2[x2]) <>< (S1[x3] mod 32)>
  • 4) y = (y ^ S1[x1])
  • 5) y = (y + S0[x4])
  • 6) f(x) = y

* Onde Y é uma variável temporária; X o valor de entrada da função; Sn[K] correspondendo a um posição K dentro de uma S-BOX n; e x1, x2, x3 e x4 o valor X divido em 4 valores de 8-bits cada; sendo X e Y valores de 32-bits.

Informações adicionais