Laboratórios
DRT-240 BITS
Seg 19 Abr 2004 02:00 |
- Detalhes
- Categoria: Laboratório de Criptografia
- Atualização: Quinta, 14 Janeiro 2010 14:00
- Autor: Yugi
- Acessos: 13613
CIFRAGEM PASSO A PASSO
O Criptossistema DRT codifica o texto claro em blocos de 64 bits. Este bloco é dividido em 4 partes iguais (Words) de 16 bits. Estas 4 partes são representadas por A, B, C e D, respectivamente. Os Valores A, B, C e D são números de 16 bits, ou seja, números compreendidos entre 0 e 65535.
Vamos considerar que o texto claro seja representado por 8 bytes nulos, ou seja, com valor 0. Assim os valores A, B, C e D são iguais a zero.
Soma e Subtração:
A = (A + CHAVE[1]) MOD 65536 B = (B - CHAVE[2] + 65536) MOD 65536 C = (C - CHAVE[3] + 65536) MOD 65536 D = (D + CHAVE[4]) MOD 65536 Considerando os valores correntes teremos: A = (0 + 40443) MOD 65536 = 40443 B = (B – 7862 + 65536) MOD 65536 = 57674 C = (C – 35747 + 65536) MOD 65536 = 29789 D = (D + 57512) MOD 65536 = 57512
Inversão:
X1 = A DIV 256 X2 = C MOD 256 X3 = A MOD 256 X4 = C DIV 256 A = (X2 * 256) + X1 C = (X3 * 256) + X4 X1 = (40443 DIV 256) = 157 X2 = (29789 MOD 256) = 93 X3 = (40443 MOD 256) = 251 X4 = (29789 DIV 256) = 116 A = (93 * 256) + 57 = 23965 C = (251 * 256) + 116 = 64372 X1 = B DIV 256 X2 = D MOD 256 X3 = B MOD 256 X4 = D DIV 256 B = (X2 * 256) + X1 D = (X3 * 256) + X4 X1 = (57674 DIV 256) = 225 X2 = (57512 MOD 256) = 168 X3 = (57674 MOD 256) = 74 X4 = (57512 DIV 256) = 224 B = (168 * 256) + 225 = 43223 D = (74 * 256) + 224 = 19168 Neste ponto teremos os valores A = 23965 B = 43233 C = 64372 D = 19168
Difusão:
ACL = C XOR 27809 ACL = (ACL + (D * CHAVE[5])) MOD 65536 A = A XOR ACL B = (B + A) MOD 65536 ACL = (64372 XOR 27809) = 38869 ACL = (38869 + (19168 * 12596)) MOD 65536 ACL = 44373 A = 23965 XOR 44373 = 61640 B = (43233 + 61640) MOD 65536 = 39337 ACL = (A * CHAVE[6]) ACL = (ACL + (B XOR 30561)) MOD 65536 C = ((C + ACL) MOD 65536) XOR B ACL = (61640 * 28188) = 1737508320 ACL = (1737508320 + (39337 XOR 30561)) MOD 65536 = 13480 C = ((64372 + 13480) MOD 65536) XOR 39337 = 43445 ACL = (C DIV 256) + ((B MOD 256) * 256) ACL = ACL XOR A D = ((D XOR B) + ACL) MOD 65536 ACL = (43445 DIV 256) + ((39337 MOD 256) * 256) = 43433 ACL = 43433 XOR 61640 = 22881 D = ((19168 XOR 39337) + 22881) MOD 65536 = 11434 Neste ponto temos os valores: A = 61640 B = 39337 C = 43445 D = 11434
Rotação:
ACL = A A = B B = C C = D D = ACL ACL = 61640 A = 39337 B = 43445 C = 11434 D = 61640 Valores finais no final da 1ª rodada: A = 39337 B = 43445 C = 11434 D = 61640
Assim vemos acima os valores finais para a 1ª rodada da cifragem. As outras 7 rodadas têm o processo de cifragem idêntico e, por isso, vou condensar os dados destas 7 rodadas na tabela a seguir:
RODADA Soma & Subtração Inversão Difusão Rotação 2 A = 29500 A = 27251 A = 56413 A = 23253 B = 30954 B = 32376 B = 23253 B = 62006 C = 32106 C = 15485 C = 62006 C = 47626 D = 36478 D = 60046 D = 47626 D = 56413 3 A = 38894 A = 30615 A = 13053 A = 30218 B = 3346 B = 17165 B = 30218 B = 52033 C = 15223 C = 60987 C = 52033 C = 40194 D = 50755 D = 4806 D = 40194 D = 13053 4 A = 12105 A = 41263 A = 53860 A = 2732 B = 18549 B = 14408 B = 2732 B = 56111 C = 60065 C = 18922 C = 56111 C = 65211 D = 20536 D = 30032 D = 65211 D = 53860 5 A = 45813 A = 44466 A = 8025 A = 48815 B = 22054 B = 40790 B = 48815 B = 39829 C = 24749 C = 62816 C = 39829 C = 18683 D = 38559 D = 9878 D = 18683 D = 8025 6 A = 12795 A = 50993 A = 14085 A = 1035 B = 1768 B = 52486 B = 1035 B = 28538 C = 52423 C = 64460 C = 28538 C = 10518 D = 42957 D = 59559 D = 10518 D = 14085 7 A = 12361 A = 7984 A = 37815 A = 56835 B = 19685 B = 19020 B = 56835 B = 31582 C = 43039 C = 18856 C = 31582 C = 52193 D = 5706 D = 58646 D = 52193 D = 37815 8 A = 54708 A = 28373 A = 45639 A = 37778 B = 19446 B = 57675 B = 37778 B = 8351 C = 60526 C = 46316 C = 8351 C = 34358 D = 24033 D = 63069 D = 34358 D = 45639 INTERAÇÃO FINAL A = 19057 B = 11640 C = 33583 D = 60240
Esta tabela resume toda a cifragem de um bloco de 64 bits no algoritmo DRT. Na entrada temos:
A = 0 B = 0 C = 0 D = 0 A Chave de cifragem é (em Hexadecimal, 240 bits): 000000000000000000000000000000000000000000000000000000000000 O Criptograma correspondente é: A = 19057 B = 11640 C = 33583 D = 60240
Em seguida vejamos um exemplo da decifragem utilizando o algoritmo DRT.