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) 


CRIPTOSISTEMA ASTAROTH

Cristiano Campos Neves

Índice

  • 1 - Apresentação do trabalho ............................................ 2
    • 1.1 - Convenções usadas no texto ........................... 2
  • 2 - Definição do criptosistema ........................................... 3
    • 2.1 - A função F ..................................................... 3
    • 2.2 - A geração das sub-chaves ............................... 4
      • 2.2.1 - Geração dos 16 pares de sub-chaves ... 4
      • 2.2.2 - Geração da Tabela P .......................... 4
    • 2.3 - A cifragem ..................................................... 5
      • 2.3.1 – Atualização das sub-chaves ................ 5
    • 2.4 - A decifragem ................................................. 5
  • 3 – Apêndice A ................................................................ 6
    • 3.1 - Tabela de Rotação (TR) .................................. 6
    • 3.2 – S-BOX 0 ....................................................... 6
    • 3.3 – S-BOX 1 ....................................................... 7
    • 3.4 – S-BOX 2 ....................................................... 7
    • 3.5 – S-BOX 3 ....................................................... 8
    • 3.6 - Vetores de teste ............................................ 8
  • 4 - Apêndice B ................................................................. 9
    • 4.1 - Idéias adicionais ............................................ 9

1 - Apresentação do trabalho

O criptosistema Astaroth foi criado por mim, Cristiano Campos Neves, com fins acadêmicos e "recreativos".

O autor não assume qualquer tipo de responsabilidade pelo criptosistema, já que este é distribuido sem qualquer tipo de garantia, sem a cobrança de qualquer tipo de taxa, sendo um algoritmo de DOMÍNIO PÚBLICO, não patenteado.

Vale ressaltar ainda que este algoritmo, o qual apresento, apesar de NÃO ser propriedade intelectual minha e não ter qualquer limitação a sua implementação e/ou re-estruturação, os códigos incluidos no pacote original são licenciados sobre a GNU General Public License versão 2 (ou qualquer versão futura) e só podem ser utilizados/distribuidos/alterados sobre os termos desta.

1.1 - Convenções usadas no texto

Os valores numéricos apresentados neste texto podem estar em dois sistemas numéricos diferentes, para indicar o sistema hexadecimal o número será precedido por "0x" enquato para o sistema decimal, será apresentado somente o número.

O criptosistema será representado em linguagem lógica onde:

  • O simbolo "^" representa um OR-Exclusivo (xor);
  • Os simbolos "<><" representam rotação de bits, para direita e esquerda respectivamente;>
  • Os sinais "+" e "-" representam, respectivamente, adição e subtração;
  • A abreviação "mod" representa resto de divisão (módulo).

Serão usados ainda outros termos e convenções matemáticos, criptológicos, e de informática com os quais o leitor já deve estar devidamente familiarizado.


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.


2.2 - A geração das sub-chaves

As sub-chaves consistem de 16 pares de valores de 32-bits (as sub-chaves propriamente ditas), e mais 32 valores de 8-bits correpondentes a uma tabela de permutação de bits usada nos processos de cifragem e decifragem.

2.2.1 - Geração dos 16 pares de sub-chaves

Como já foi explicado anteriormente as sub-chaves consistem em um one-way hashing da chave de 256-bits.

O hashing é feito byte a byte, transformando cada byte em um valor de 32-bits (sub-chave), serão ao todo 32 iterações resultando em 16 pares de sub-chaves. As iterações deverão ser contadas de trás para frente (de 32 a 1), pois com o número da iteração se chegará ao número correspondente da Tabela de Rotação (TR). Ainda é usado algo que se assemelha ao CBC (Cipher Block Chaining), porém com uma fórmula especial e com um vetor de inicialização igual a zero. A seguir serão passados, uma listagem das operações feitas em uma iteração, e um diagrama lógico das mesmas.

Procedimentos para o cálculo de uma sub-chave:

  • 1. São lidos os primeiros (ou seguintes) 8-bits da chave original
  • 2. Pega-se o valor na Tabela de Rotação (TR) correspondente a iteração corrente.
  • 3. Escolhe-se uma S-BOX através da fórmula: I mod 4 (onde I, é o número da iteração corrente)
  • 4. Com a S-BOX escolhida, pega-se a saída da mesma, tendo como entrada os 8-bits lidos da chave original.
  • 5. É feita uma rotação de bits para a esquerda com o valor retirado da TR.
  • 6. É calculada a função f(x), sendo x a saída S-BOX.
  • 7. É feita uma rotação de bits para a direita com o valor retirado da TR.
  • 8. É calculada a função f(x), sendo x o valor obtido em 7.
  • 9. É feita uma rotação de bits para a esquerda com o valor retirado da TR.
  • 10. É realizado um OR-Exclusivo com vetor do CBC.

------ fim da geração da sub-chave ------

  • 11. Calcula-se o próximo valor do vetor do CBC.

Diagrama lógico do calculo da sub-chave e do vetor do CBC:

K = S[I mod 4][x] <>< TR[I]
K = f(K) ><>< TR[I]
K = K ^ CBC

Y = K * K
CBC = ((CBC – Y2) ><>< TR[I]) ^ Y1
>

* Onde, X são os 8 bits lidos da chave original; I o número da iteração; TR[I] o índice da Tabela de Rotação equivalente a I; Y uma variável temporária de 64-bits; y1 e y2 divisões de Y em dois valores de 32-bits; CBC o valor usado como vetor do Cipher Block Chaining; e S[A][B] representa a posição B de uma S-BOX A.

2.2.2 - Geração da Tabela P

A geração da tabela P é realizada da seguinte forma, enumerando-se uma array com valores de 0 a 31, em seguida lendo-se os primeiros 32-bits do bloco de sub-chaves, e dividindo-se este por 32, com o resto da divisão em mãos é feita a troca do primeiro valor da array com o mesmo. A operação é repetida com os valores de 32-bits seguintes do bloco de sub-chaves, até que todo o bloco tenha sido lido.

A seguir apresenta-se uma array de 32 bytes, numerada de 0 a 31, para demonstração da geração da Tabela P:

00  01  02  03  04  
05  06  07  08  09  
10  11  12  13  14  
15  16  17  18  19
20  21  22  23  24  
25  26  27  28  29  
30  31

Tendo-se a array apresentada, supõe-se que resto da divisão do primeiro valor de 32-bits seja o número 6, logo deverá ser feita a substituição destacada a seguir:

06  01  02  03  04  
05  00  07  08  09  
10  11  12  13  14  
15  16  17  18  19
20  21  22  23  24  
25  26  27  28  29  
30  31

O que foi feito com base nos primeiros 32-bits do bloco de sub-chaves, deverá ser repetido em outras 31 iterações baseando-se nos valores de 32-bits seguintes.


2.3 - A cifragem

A cifragem é um processo bem simples, se comparada aos outros processos do criptosistema, consiste de uma rede feistel, utilização da função F e uma permutação de bits baseada na Tabela P. A seguir será apresentado um diagrama mostrando a cifragem em suas etapas.

X1 = X1 ^ f(P(X2))

X = X ^ K1
X = X ^ K2
X = X ^ K3
.
.
.
X = X ^ K16

UPD(K)

* Onde X é bloco de 64-bits que deverá ser criptografado; X1 e X2 a divisão de X em dois valores de 32-bits; Kn um par de sub-chaves n; P uma permutação de bits usando a tabela P; UPD(K) chamada do algoritmo de atualização das sub-chaves.

2.3.1 – Atualização das sub-chaves

A atualização das sub-chaves é um recurso que decidi implantar com intuito de dificultar a identificação das sub-chaves usadas, porém este tem o efeito colateral de causar uma concordância entre os blocos que estão sendo criptografados. Tal atualização deve ser feita ao final da criptografia de cada bloco para ser usada (as sub-chaves atualizadas) no bloco seguinte. A atualização das sub-chaves acontece uma a uma, com as 32 sub-chaves, e pode ser representado pela fórmula a seguir:

Kx = Kx ^ -P(Kx)

* Onde Kx repesenta uma sub-chave x, P(Kx) a permutação bit a bit da chave Kx utilizando a tabela P.

Sendo que a permutação (P) funciona exatamente como as permutações de bit do sistema DES, porém utilizando-se uma tabela P, explicada anteriormente, ao invés de uma tabela de permutação fixa.

2.4 – Decifragem

O processo de decifragem ocorre de forma semelhante ao de cifragem, porém em ordem inversa, vindo primeiro a utilização da rede feistel (iniciando do par de sub-chave 16 em direção ao 1) e em seguida a permutação e utilização da função. Terminando também com a atualização das sub-chaves para serem utilizadas no bloco seguinte.


3 – Apêndice A

3.1 – Tabela de Rotação (TR)

0x11, 0x0D, 0x04, 0x09, 0x0E, 0x05
0x1D, 0x01, 0x0B, 0x1E, 0x14, 0x1B
0x07, 0x0C, 0x0A, 0x17, 0x10, 0x06
0x18, 0x12, 0x1A, 0x00, 0x1C, 0x16
0x19, 0x1F, 0x08, 0x15, 0x02, 0x0F
0x03, 0x13

3.2 – S-BOX 0

0xFB2AE92D 0x2205B9D6 0x1ACD8ED1 0xE506FE46 0x0F1FBBE0 0x241F0F82 0x2D11C2F8 0x94859A71
0x033C3E76 0x7DA60155 0xF98A829A 0x165B7319 0x07DD44B3 0xD301B2DD 0xFD2EB667 0x17632F1B
0xB46DA013 0xC3EB125E 0xA341DD25 0x3B3BAC09 0x26F60DD1 0xE9A73FD9 0x880D559E 0x3BC45FA7
0xF8A6BD41 0xCC248457 0xA4319C5C 0x2F1DD572 0x0A99C9B2 0x553BB95B 0x791F847F 0x6B8CF88B
0x5352311C 0x4FA94B66 0x9C74004A 0xCE541D8C 0xF4862E96 0x2A29573A 0x2AF1BEDD 0xB9EF9AE9
0x02B054AD 0x881AA59A 0x6B4BF83F 0x288C524F 0xAAED4D4C 0xADBE23AA 0x5BE69FE7 0x9EDEDB31
0xEAB6C639 0x756A6635 0xA7AA0479 0x30B1EE02 0x481619CB 0x08A86873 0x9323E698 0x36BC16B6
0x03236E0B 0xFD3A5F27 0x839C8A21 0xD53DF24B 0x8FB7FC64 0xD449D12E 0x04D07F7D 0xB506AAF4
0x9965179A 0x7464BAB0 0xA3336F81 0xEFC42689 0x38F9289D 0x7C1CF27B 0xB25DE82E 0x75BC153C
0x1C9ADB54 0x0840919A 0xA748D096 0x62876D3F 0x4011A20B 0x6A7F6516 0x605754E1 0xF873FFE0
0x4F8285DF 0xE53647F0 0x8BC49691 0xD274A119 0x26971450 0x79135125 0x8031D441 0xD41253CE
0xBA210085 0xC1164F6F 0xA1C17E42 0x4FCC3CA4 0xDFD3DCC7 0xAAA26C17 0x8D9D239B 0xC05AF687
0xC28DE36D 0xD12529D3 0x09B8C8F5 0x4056D263 0xF00C116F 0x4E7DD4CA 0xDB1E7BFF 0x2FE19DED
0x55B8ECB3 0x54CE77EE 0xAB02BA21 0x7F523BA7 0xACD22323 0xC56CD4BD 0xC9E2C8ED 0x7D602A28
0x09FD2057 0x2D4AECDA 0x0F980C32 0x16C68CFE 0xA85A7E42 0x5CEA939E 0x0DA107F4 0xE1D1FA20
0xBB2DE8DA 0x00629765 0x126DB371 0x774030B8 0xE3544747 0xAB68A44D 0x7341EA64 0x9F1DDA3C
0x5CAE0054 0x57B31A2C 0x47D2C9EB 0xE7ACE71F 0x9E8F705D 0x6C3F90AC 0x0FD25482 0x02CC4BE2
0xDBB833AE 0xAB3792F4 0x66BECD81 0xBDB502D9 0x353F8F88 0xD81471B0 0x74FAB3C3 0xBAB07BB3
0x4ABEB4E2 0x9C4E22F0 0x548AE48D 0xBF1D2FEC 0xCDB5A21C 0x61D283A2 0x4836CC39 0x107C0DB9
0xABE8DA59 0xF1959FDB 0xC392AC0C 0xA8F771F7 0xF53A80B6 0x6F7C9653 0x47148187 0x54D2111F
0x1CF5A775 0x60730181 0x0A7E61D3 0xD9B9E4CA 0xEADA3AB5 0x764A8A2B 0x3AEB8F03 0x253F55FB
0xB06F2370 0x14F706F6 0x691B1581 0x1F4B79FA 0x8DB6F234 0x6BCF839B 0x94C0048B 0xB1103580
0xD793FD1D 0xAB10F5F3 0x1379D755 0xDFA9985F 0xC7170904 0x71F061D1 0x133B414C 0x4EA28565
0x06493E3F 0x74DE7E8C 0xC7222644 0x0FA0C1A7 0x6EEEBBFB 0x496A0469 0x26BA885D 0x1C1EC6FA
0x22A98D47 0x0E9E7BF3 0xE8FE7EC5 0x51BF30AC 0xC1D21B2C 0x65650747 0x59A67E00 0x36BDF950
0xAA25DB14 0xE474E67D 0x248438DE 0x9DB43ADC 0x7252488D 0xF5E84633 0xFF473116 0xA57F9B1E
0x65826E17 0x22C440EF 0x8D572ABA 0xE8F661DA 0xC131F589 0x8AD434D2 0x4361241E 0xAD274A46
0x64BC32ED 0x56DCDF4A 0xA5ACED42 0x422494F3 0x5AC8218D 0xE0FAC744 0x26F0BA02 0x4D01C10C
0xC38576C4 0xC79D60E0 0x7A769B21 0x75846DCF 0x555F7C21 0x41BB2583 0x832B714E 0x474AF4F0
0x9CAAE8B8 0x4148098A 0xC12A2CAB 0x25CEE463 0xE2DC6ABB 0x54412AD9 0x1132CE92 0xC1683B53
0x4AF597E9 0xE9052E21 0x511BB318 0xB98F5E8A 0xC608DF4D 0x1682F47B 0x84E09F74 0x9EB53027
0xCBEAAFED 0x13602CA7 0x32EF7AB1 0xAB601D8F 0xB4EB68C6 0x488A6449 0x2F2E68C5 0xD69C1B14

3.3 – S-BOX 1

0xC629B3C0 0x736B0412 0x44D1CAC3 0xAE40DC0F 0x97C6EF1C 0xEC4115C4 0x64A3B371 0xD43265FF
0xD807A1A4 0x400B860E 0xED5D1E7D 0x26D8CC7F 0x18860475 0x51460A75 0x74F1054A 0xCDB482D5
0x08B4C33C 0xC617FA5D 0x1F96F15A 0x9DD2BE20 0x6924FF5A 0xFC9ED39B 0xDF3AFFE3 0x96BAF831
0x11BC7C4C 0xAEF9A189 0x840516B4 0xFC892DD6 0x1F287153 0x6BA91729 0xC18D06E8 0x801D48C3
0x1499D0CF 0x233D0FA7 0xB9624CD5 0x986AF564 0x38FF9877 0x32DF5F3B 0xAAFDDDAF 0x7E327771
0x1CECBDF1 0x19FE1CDB 0x7925F6D9 0xEA30A754 0x44ACCE95 0xF525BAC3 0x520E7AAC 0xA8C9A106
0xF0EB3D43 0xA15F1201 0x1D30FA94 0x9BB2BDD7 0xE6244822 0x6A2C6574 0x3006B129 0xBA52968F
0xA2B72FFF 0xF55691A0 0x3E95BB6A 0x928E838E 0xC56E3FAD 0xACAC19D0 0x3F45AF2C 0xBE353B26
0x3D92F420 0x1C258297 0x382FC6C1 0x1BE4B0E2 0x927FF829 0x8555533E 0x09100903 0xFDDDC3A2
0xD51E8FE7 0x5FACC166 0x3FF90C0D 0x880E6D7C 0xFE0733C7 0x70232012 0xE18BA5C9 0x78DED2AB
0xA9E8081A 0x334D3D30 0x7F61DD9F 0x574C9646 0x6780F3C9 0x75A4F12E 0x7622D720 0xA9185D65
0x25471DF0 0x5DE7AFD5 0x31A98AD2 0x0AD4C887 0x00BB75C5 0x8B040285 0x080D4143 0x19F17C22
0x32C6BD2C 0xC21447C2 0x9B727EB8 0xB790D5FE 0x7C9D5786 0x546CC9F1 0xD9047AFD 0xC1A902ED
0x67112F1E 0xA21D81B9 0xFDFBC22D 0xDED6FA62 0x615397E5 0xC3254786 0x08C9E1EF 0x81AA7417
0xCB41646C 0xAB982F31 0xA4B3DCB2 0xF6D0C9BB 0x2D459D01 0x4A1531E6 0xBA48FC37 0xCDAB9797
0x595B1424 0x61F73B51 0x75A56773 0xC3B27249 0xFD482960 0x19C0095C 0x05253D97 0x4B9599F0
0xA47A4F0F 0xAC4E3E5E 0xF8D4C955 0x04CCDC6D 0x7072410E 0x14A18976 0x307B13A8 0x7402064C
0xAE92ABDC 0x9D2FB395 0x10A0AC44 0x9BA560E6 0xE82491EF 0x0A344687 0xBB2638CE 0x571FC6B9
0xE9EE0A40 0x973CFD49 0xE6AF4DA2 0x30C4A943 0x93EAF743 0x5E3AA405 0x20A48C11 0xA18C60D2
0x67DB19CB 0x1F3E79B2 0x83800FE7 0x847B1188 0x1997E727 0xDF1D57EA 0x316404D8 0xBC0F7448
0x7678254A 0x10C5D12D 0x6856334A 0x0F4175C3 0xB18DB5BB 0x4B49E3E6 0xF3FAE951 0x4BA3D4AE
0xD6D6CD3D 0x0EE759DE 0x255FAD8B 0x8CD6D470 0x68D38680 0x0D6C56E6 0x24D1860B 0xB727B9E6
0xE07A6179 0x46BF2E82 0x5B32E1FE 0x73A2048D 0xE6E7B42F 0x96C1297D 0x00EB0CE4 0x7D35BD4B
0x9EB463B9 0x54BC405C 0x54A0BD76 0x762995BE 0xAF5153DB 0xCA7B4BBE 0xA943E1DA 0xCA2010A4
0xD4E765A0 0xF24DBDB0 0x9627426D 0x391686DB 0xF41E6AF6 0xD5CB3412 0xFE1F8628 0xEED3E10B
0xF53F9A6C 0x8EDEC995 0x5583E68F 0x825AEA71 0xA1AC7096 0xE202F882 0x221091E5 0x93F7C715
0xDBE94246 0xFAFB4C37 0xEB74AB70 0x6121B321 0x140BEC88 0xE7C8068B 0x3F450725 0x37A39430
0x4BD337CC 0x6E633474 0x03F12EF2 0x36000376 0xC9F11AA6 0xF36E6F75 0x39B6FAC6 0x08628715
0xB114C90B 0xD712D7DE 0xF20F5813 0x747A28FE 0xA4740B0C 0x3B112750 0x871D0449 0x38EC9044
0xA2C2887E 0x93B9BD86 0x6AEECBA1 0xFB3694B7 0xA46D9ACA 0xE4AFE8D4 0x1FD2BAA6 0x8D775B2C
0xF0F3AA4E 0x956B69E3 0xA5EDF208 0xBBA41C48 0xF12ED772 0x8A196177 0x6612437D 0xE76110CE
0x5536BC15 0xDF6DE6D5 0x18529B35 0xC7D31CED 0xFE88CAD3 0x06750855 0xDB8B6143 0x51F8466D

3.4 – S-BOX 2

0xFC824AF1 0xAE48FFD8 0xA3D59DE9 0xBE05F1D0 0x8329F009 0xA14C85A6 0x6F65EC66 0xFB784987
0xFECD0BE3 0x6E32024B 0xC479706C 0x090B745B 0xE25922EE 0x786D7581 0xBA116F70 0x58ADA01B
0xF952FEFB 0xF1418A4B 0x2D54F108 0xC70749E2 0x07EAA47F 0x258C2403 0xDB30E9AD 0xE821199A
0x0DD21627 0x76813C2D 0xFFB1822C 0xBD3DF8A5 0x3FF2FAB5 0x1AF9E28B 0xF991FCB1 0xACFFAF31
0x04122E86 0x499F1742 0x380C682B 0x6DF8BA8D 0xEAA891E5 0x3452DA79 0xC15A9796 0x0CBDF27E
0xE33AC4C8 0x8D6D7A5E 0x579627D6 0xEBBEBB6D 0x992E92F7 0x0E7EC5B1 0x9F8C7BAC 0x5FC21171
0xFF02327F 0x516853C6 0xF326A755 0xFC577116 0xA59EA683 0xDE32F452 0x4881D385 0x90744605
0xDC1B3DA4 0xADF68BE6 0x170F46AB 0x3933707E 0x608BF889 0xB8A9A6D6 0x5C85302F 0xB9F8DBEE
0xBEE7C8FD 0x0B3CE673 0x3901CDD7 0x1FE0A8DF 0xBE198A90 0xDBF7C0F9 0x92E52638 0xA1CBA942
0xA8AE169A 0xF0D0FF1B 0xA439FC06 0xB7946D19 0xEE258107 0x4B5B2738 0x57BBFD5C 0x55989D5A
0x3ECCCAE7 0x8787D934 0x7B3FB01F 0xB4B04C85 0xCF34C422 0x0C8DD95D 0xD0823965 0x412A7D66
0x6D22EA4B 0xE48D797A 0xF840CDE8 0x84495CC1 0x32C103D7 0x0A2CB214 0x69CE6677 0x90E88AE7
0x20FB9D0C 0x2B18D8A7 0x5953A8F8 0xA9CBC902 0x00FB9A2B 0x93291A73 0x828A013A 0x34C9DE1C
0xA3D480D5 0x7F1ACA54 0x0191D8F0 0x76893D30 0x3EA97E3A 0x716561B7 0xDF29B471 0x1ABCC99B
0x95A6DB71 0x56177DB0 0xB4D7B9DC 0xF6F4E1A3 0xC16A06A6 0x18036498 0xCF8EFE3A 0x689B0C7B
0xB4D5B7FD 0x354149DD 0x3EEDDF49 0x1A3233C6 0x120C2138 0xDD3A9C87 0x64442DB0 0x230270CA
0x08408B40 0x1E74951F 0x81AF9296 0x210B81A4 0xC9709FE5 0xD85A7541 0x1FD4299E 0xB9AF65CD
0x0A4F822E 0x2F67B3B0 0xF0D518F6 0x9CEC4AC4 0xDE8E2DEA 0x8C924F88 0xA6159895 0x011970FC
0xB2CCB02E 0xEF95A4EE 0xA47232E6 0x1E9DD29F 0x5399EB6D 0xD78ED375 0xA4B1EB71 0x0E53C84A
0xB9B338AE 0xABEED40D 0xB61D586B 0xFFB6312E 0x612DAAD7 0x85916831 0xF3D0DC82 0x44BDC971
0xF3247672 0xE036CDB8 0xE3C39ACB 0x21D5DBB3 0x82177934 0x60DD984A 0xFA7DB92F 0xDE38CCA1
0xF65C9BB1 0x9B2480B6 0x9EB5C6B4 0x962E25B8 0xA990A201 0x777BEC4F 0x4162FB40 0xDAE065CE
0x4632FDD3 0x1D1E0F9B 0xD828DDC6 0x97E4CE51 0x2C8329D4 0x816B4097 0x67BC9AD2 0xE03D2458
0x20F8B83B 0x723707B3 0x34F3A98F 0x1DCAE9F3 0x024898B1 0xF6846708 0xBC8A5C94 0x0B9281C8
0x31552DCF 0xAC9DC616 0xBA25BAEC 0xF4801274 0x153CBA12 0x975248B4 0xDDF1AC26 0xA7613CFD
0x3D512E18 0x41F0506E 0xA9060FD5 0x038A5640 0x9131D232 0x57B36487 0xF6C62250 0xCCDFCF22
0xAC995EA5 0x9F96B205 0x9593811F 0x94518D40 0x98DF51D5 0x0FE566B4 0x3B29972C 0x65F6F55B
0x0BC1CA0D 0x1F521152 0x7520CF31 0x834FE52D 0x51444462 0x339098C7 0xF4D84D92 0xADCB8C95
0x4F46AF13 0xC5C0AA88 0xC2CF1A82 0xCB6E3237 0x69956AF7 0x21D89AE7 0xA4A1E22C 0x6B6C501B
0x0F9E6214 0x95F09570 0x79EAA38B 0x9F92798B 0xAE19DA3A 0xF3245C01 0xB67D104C 0x958AA846
0x6F360057 0x0F362257 0xAF861436 0xF6826506 0xB06C62F8 0x129E52AF 0x62C7F24A 0xFEFDC6D1
0x9D6C708E 0xDA9CBD1F 0xA9E3543D 0x06C54026 0x2C964B23 0x649200BB 0xC750DF53 0x1AEAB8EA

3.5 – S-BOX 3

0xF70EF29E 0xE0A03BF8 0x14B049C2 0xFC975226 0x602D3987 0x3592E98E 0x4D24BD40 0x21EE922B
0xDB4835A5 0xC0D00981 0x0AAE4785 0xB27994E3 0x85514534 0x2516DA41 0xFEAF9FEF 0x91789773
0xABAA3905 0x4B3B4B06 0x6E20F93A 0x8C56767D 0x6DE24FCA 0x34311F40 0x93A4C8A2 0x6793D81A
0xC39B453D 0xC5028ECA 0x90532A1A 0x2A2F3076 0x0176788B 0x085548E8 0xA1CA6F0D 0x2AB4E3DD
0xC8015016 0xDD621726 0xB50A79E1 0x089B2675 0x17E5AB75 0x00958ADD 0xA0AB3525 0x390D1E0E
0x4F459E0E 0xEB56A5EE 0x6A8B3317 0x0E8ED28E 0xA0EBF6B4 0xDAEB3170 0x1B4AA787 0x79CFFA21
0x241A0951 0xC47A2D62 0x745CFB9F 0x77987547 0x665FD506 0xAEA0553C 0xBF83A8DB 0x957B64FA
0x7B4F91F6 0xC61DA123 0x49342B45 0x2F0A7B1E 0x5454DE1A 0x19B9617D 0x344E1D3F 0xA0BBEF95
0xC482A251 0xDB25A4E9 0x111C6296 0xAE067E54 0x22F02B9A 0x08449E06 0x6AA92EB4 0x289B6F1D
0xE6D5CDF6 0x5C40D6F1 0x005CD4E4 0x63593560 0x5AE63ECA 0xB9ABD36F 0xAC46504D 0xEA854EA0
0xE29ED8AC 0xE0CDB784 0xA2EA13D4 0x3AE175E8 0x785254B9 0x156DB06C 0x6ADA5798 0x0BF5B925
0x8AD82B56 0x035EE8C2 0xECE93186 0xB547E9FC 0x521D2668 0xB2A0DDA6 0xA457FFA3 0x36FC6C09
0x630D53F2 0x5456229C 0xAE9C1FEC 0x9ADCD7F8 0x85A3E7DE 0x8CA4869C 0x6715DDE5 0x3CA3171C
0x83A9BD0D 0x40C57654 0x844F3418 0x0C372B1C 0x2E85BD7C 0x5A2A891D 0x12BCA0C3 0x2F5B351A
0x2D27D351 0x2B4A3F84 0xCC11A4D9 0x30B80AAF 0x3351CC31 0x87DAD9EC 0xDA43D02A 0x4BC55883
0x9398003F 0x341E5A0D 0xDAA42BB9 0xCEEFD45B 0xB6453C73 0x432008A2 0x077B1BB4 0x15521B3A
0xB68BC725 0x9DD08836 0xC8F99776 0xACE375BF 0xFBB15FDB 0x5453D3D2 0xA4127FC4 0x8909F292
0x5ED7ECB6 0x224A8819 0x7271865D 0x11AFEA8F 0x220CEBF5 0x9423EA69 0x8FF690AE 0xA1FA9AB7
0xD4388DCA 0xD3D541FD 0xDF65785C 0x67997417 0x3B8455A9 0x8B5A8844 0x5374DB98 0x5A5789C2
0xA1A84CEB 0x1B77DEED 0xD46647DC 0x80958CF7 0x60367E69 0x9CA2408B 0xD066E830 0xD1655FC4
0xC5D7F833 0x2B8F1438 0xAF242E22 0xDBE1E006 0xB3C7A6F2 0xABE8A3BF 0x33DF6871 0xBF34CA3C
0xB683F67E 0x8F6D0826 0x313A9C7F 0xA0163A57 0xE5CFDF92 0x1B340EF2 0xD6564733 0xC0F131DE
0xE5E0130E 0x02AE66A5 0x69E1AFF1 0x8DDE4390 0xD393BF9F 0xDF87BC5D 0x09BFF854 0x9D1F998B
0x28464C84 0x63D8BABF 0x931EDBBE 0x86365C03 0x929B1FFB 0x69AB9C3B 0x3AA6683B 0xC0EC85BC
0x99BC37F7 0xAC7EFFCC 0xE2D35231 0xDA1CF03B 0x9A18A9EE 0x3F5FB0B6 0xFC26122B 0x8D6D0182
0x18A768E9 0xF6A5A186 0xF99FAA71 0x89094F03 0x0B5BF087 0xFA11F0BE 0xDE856BF4 0x5732E1B3
0x81385B02 0x1E77C7C8 0x469BD837 0x044D14A0 0x3BB30900 0x1FEEAD6B 0x4F42EC2F 0x14A4C286
0xB78903B2 0xECC7F96E 0xE2288842 0x91AF22F0 0xFF1C28AA 0xE4618B49 0xA9CBF001 0x01BC69EB
0x9FBF6773 0x68D0ACD8 0xAB16E0EA 0xC1DC5A64 0xF142351D 0xF5856CE0 0x77F3A4A5 0x8A58585D
0x11563E17 0xA4EAC089 0xDB08E82E 0x0D4082D4 0x6433425A 0x8AC8708C 0xC035389F 0x8032021A
0x3EEDB0EC 0x3E75F734 0x8468EFAA 0x9AAA1621 0xF2833083 0xB344D1CC 0x5EE4E62C 0x39A23C66
0xB837E468 0x8C023848 0x0F1E9E6E 0x7A2DFBA3 0x460E51AB 0x52F62392 0x9161BA7B 0xD297027D

3.6 – Vetores de teste

Vetores de teste da geração de sub-chaves

Chave:
 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

Pares de sub-chaves resultante:
K01 e K02 = 0xEA8FEC61 0xFAC7E2C0
K03 e K04 = 0x527FDE93 0x599B7623
K05 e K06 = 0x498CF4D3 0xF68616AA
K07 e K08 = 0xBB8E4EC6 0x5D279079
K09 e K10 = 0xB6583F23 0x2B5A392B
K11 e K12 = 0xCB6F53AD 0xDF67F3BC
K12 e K14 = 0x44B055A1 0x12A63B00
K15 e K16 = 0xAA88BB67 0x26321D8A
K17 e K18 = 0x046D6D0A 0x22AB867A
K19 e K20 = 0x22C18A93 0x58E099DD
K21 e K22 = 0x7C7E1C0C 0x65E1233B
K23 e K24 = 0x394BA64F 0x14D14218
K25 e K26 = 0x067E0CAC 0xBD812BDB
K27 e K28 = 0xC3476D21 0x1AD7739D
K29 e K30 = 0x9FFF3543 0x12AF7EA5
K31 e K32 = 0xC3370D06 0x695447B7

Tabela P resultante:
0x17 0x06 0x13 0x1F 0x04 0x15 0x0E 0x00
0x18 0x0F 0x1A 0x09 0x1C 0x1E 0x10 0x0D
0x14 0x0A 0x02 0x05 0x07 0x01 0x03 0x0B
0x1B 0x0C 0x08 0x16 0x1D 0x12 0x19 0x11


Vetores de teste da cifragem


** Com os valores de sub-chaves obtidos acima

Valor de entrada (limpo): 0x41535441524F5448
Valor cifrado: 0x15445E664DCDB5B5

4 – Apêndice B

4.1 – Idéias adicionais

Acerca das sub-chaves, existe um problema que deriva muitas vezes da falta do entendimento de princípios básicos da informática. É obvio que é totalmente impróprio deixar que o usuário entre diretamente caracteres ASCII no campo de chave do algoritmo, pois isto diminuiria consideravelmente a segurança de qualquer algoritmo, limitando-o à metade dos bits e facilitando o uso de ataques brute force. Seria no mínimo interessante usar o algoritmo criptográfico combinado com um sistema de hashing de 256 bits, como GHOST, HAVAL-256, SHA256, entre outros, aproveitando-se assim o máximo potencial do algoritmo.

Seria também interessante a aplicação de métodos como ECB, OFB, CFB, já conhecidos do sistema DES. A biblioteca que acompanha o pacote original deste texto permite a aplicação de tais métodos, porem obviamente pode optar-se por fazer alterações diretamente na biblioteca, desde que atentando-se ao fato de que a biblioteca está licenciada sobre a GNU General Public License v2, e qualquer modificação deve obedecer os termos desta.

mfx brokerтубалобановский александр женаалександр лобановский2day никас отзывыполигон ооо

Informações adicionais