Laboratório 1 - Segurança de Redes UFABC 3Q2015

10
Nome: André Lucas de O. Duarte R.A.: 11058710 1) Criptografe uma mensagem de texto usando os algoritmos DES e AES. Mostre e compare a saída do texto criptografado (em hexadecimal) com os dois algoritmos. Faça também o processo inverso (decifrar a mensagem). O texto voltou ao original? O que acontece se você usar uma chave diferente na decriptografia? A mensagem escolhida para o estudo em questão foi "UFABC". Inicialmente, foi gerada uma chave aleatória de tamanho 64 na interface inicial do applet WebCry. A chave obtida foi 26042F24E6EBCCB6. Utilizando-se esta chave com o algoritomo DES, o resultado obtido foi: Figura 1 - Chave aleatória de tamanho 64 gerada pelo applet.

description

Primeiro relatório de laboratório da disciplina Segurança de Redes, UFABC terceiro quadrimestre de 2015.

Transcript of Laboratório 1 - Segurança de Redes UFABC 3Q2015

Page 1: Laboratório 1 - Segurança de Redes UFABC 3Q2015

Nome: André Lucas de O. DuarteR.A.: 11058710

1) Criptografe uma mensagem de texto usando os algoritmos DES e AES. Mostre e compare a saída do texto criptografado (em hexadecimal) com os dois algoritmos. Faça também o processo inverso (decifrar a mensagem). O texto voltou ao original? O que acontece se você usar uma chavediferente na decriptografia?

A mensagem escolhida para o estudo em questão foi "UFABC". Inicialmente, foi gerada uma chave aleatória de tamanho 64 na interface inicial do applet WebCry.

A chave obtida foi 26042F24E6EBCCB6. Utilizando-se esta chave com o algoritomo DES, o resultado obtido foi:

Figura 1 - Chave aleatória de tamanho 64 gerada pelo applet.

Page 2: Laboratório 1 - Segurança de Redes UFABC 3Q2015

Figura 2 - Criptografando "UFABC" com o algoritmo DES.

Page 3: Laboratório 1 - Segurança de Redes UFABC 3Q2015

Com esta chave e o algoritmo DES, "UFABC" (em hexadecimal 5546414243) torna-se "rÓžµÜê#>" ou "72D39EB5DCEA193E" em hexadecimal.

Repetindo o mesmo procedimento para o algoritmo AES, o resultado obtido é:

Figura 3 - Bloco cifrado com o DES.

Page 4: Laboratório 1 - Segurança de Redes UFABC 3Q2015

Neste caso, a chave utilizada foi "0480CF05F21CA2175330671C32EAAF84" e "UFABC" se tornou "29x¸#qb#U#@Cõ#”Ô", ou hexadecimal "323978B813716212551B4043F51A94D4".

Para ambos os algoritmos, foi possível retornar ao texto plano "UFABC", desde que a mesma chave usada para encriptação tenha sido usada na decriptação. Caso contrário, não é possível retornar ao texto plano original.

2) Faça a criptografia de uma mensagem de texto usando o algoritmo DES e verifique a saída (texto criptografado). Faça novamente a criptografia, usando a mesma chave. A saída permanece igual? Altere um caractere na mensagem de texto e faça a criptografia com a mesma chave usada anteriormente. O que é possível observar?

Utilizando-se da chave 66760DC10AD4C74B, UFABC torna-se "o"ïaûÚvä" (6F22EF61FBDA76E4 em hexadecimal) sempre. Alterando "UFABC" para "UFABD", o texto cifrado torna-se "#º6ð›#ZÃ" (14BA36F09B135AC3 em hexadecimal), o que é algo completamente diferente doobtido com o texto plano original "UFABC".

3) Faça o mesmo processo do exercício anterior, agora com os algoritmos AES e IDEA. Analisandoo texto criptografado, é possível verificar diferenças entre os algoritmos?

Para o algoritmo AES, a chave C2719AC7F38529A4A4D692FE72AC63E7 gera ;›##0LÖ/öR#Bx·, ou 3B9B0C1511300A4CD62FF6520E4278B7 em hexadecimal. E o resultado é o mesmo sempre. Alterando o texto plano para "UFABD", o resultado obtido é B#‡##ËïÞ†ë#HyZ²², ou 4204871B1ACBEFDE86EB0E48795AB2B2 em hexadecimal. Resultados bastante diferentes, apesar deter se alterado apenas um caracter no texto plano.

Figura 4 - Texto cifrado com o algoritmo AES.

Page 5: Laboratório 1 - Segurança de Redes UFABC 3Q2015

Já no algoritmo IDEA, para uma chave 1891FBB8AB52D546D6B3E56E8C0B32A3, "UFABC"torna-se "á–_J¼êFB" ou E1965F4ABCEA4642 em hexadecimal. O texto cifrado é o mesmo sempre. Alterando-se o texto plano para "UFABD", obtém-se "o#· ž7| ", ou 6F19B79D9E377C20 em �hexadecimal.

A diferença que salta aos solhos, é que o texto cifrado com IDEA é mais curto do que o cifrado com AES.

4) Gere uma chave do algoritmo RSA. Mostre qual é a chave pública e a chave privada.

Uma chave de tamanho 24 gerada foi:

e: 44571Dd: 4AB435n: 00AD1955

Onde "e" é a chave pública e "d" é a chave privada. 5) Faça a criptografia de mensagens de texto usando diferentes tamanhos de chave do RSA. Mostre e compare a saída (texto criptografado).

Criptografou-se "UFABC" com 4 chaves de tamanhos 24, 512, 768 e 1024, respectivamente.Os textos criptografados obtidos, foram respectivamente:

• Oñ#@/è<º‡

• 2…u«^ü ù X##ÂÞ~s#†%¥:#J#Çy`»¡'T][„Ôw‰Z#Æd—WSj-¡#&iŸˆ[3ëHÅø+úŒï€Ø�

• ¾\¸<#®mÖHÃ�``ú–X<"®#ZÇIÅ#m€t1aó#›°•!WÒ‡6–b¿Þ#òuÌJÐ÷Úæ)÷JW’4Ùý®Ê´d%¦NBØ#ðL,퉥8?Ñ*DÎ|Õ}º>°Öì[ º{[

• ‰æÁûjŽ#L™³Ñ¸û#‘®X à)ógT´¸=5#¡yT c\–k#ã¢6¸#ÒSKв<ü}+ê#Jœ¸æŠ#å^œÎÉí‡ù¬.Òhiî?� �=¦ZÑ´$l##¿ZPNÆ#þ© øu#¨v i1u#‚g � #.=I#ðý–ë]@ �#çé+£'̈� �

Percebe-se que, aumentado-se o tamanho da chave, não apenas o texto cifrado torna-se mais longo, como também torna-se mais difícil a descoberta do texto plano original.

6) Cifre um arquivo pdf usando um algoritmo simétrico. Tente abrir o arquivo cifrado. Faça a decifragem do arquivo e tente abrir novamente. Descreva o que foi observado.

O arquivo escolhido para ser cifrado foi o próprio roteiro desta atividade. Após ser cifrado, não foi possível abrir o arquivo para leitura. Após decifrar o arquivo, foi possível abri-lo para leitura.

7) Criptografe arquivos de diversos tamanhos (de poucos KB até vários MB) usando os algoritmosDES, AES e RSA. Faça uma tabela comparativa em relação ao tempo de execução e explique os resultados obtidos.

Page 6: Laboratório 1 - Segurança de Redes UFABC 3Q2015

Tabela 1 - Tempo gasto em segundos para encriptamento de arquivos pdf.

Tamanho DES (s) AES (s) RSA (s)

100KB 0.01 0.004 0.39

200KB 0.019 0.012 0.735

2.22MB 0.225 0.095 7.883

6.57MB 0.73 0.277 25.702

Observando-se a tabela acima, percebe-se que o tempo gasto cresce conforme o tamanho do arquivo cresce em todos os algoritmos. Porém, percebe-se que o algoritmo RSA tem drásticas mudançasno tempo gasto, principalmente da segunda linha para a terceira linha, onde o tamanho do arquivo aumentou ~10 vezes, e o tempo gasto aumentou proporcionalmente ~10 vezes.

8) Criptografe alguns arquivos (maiores que 3 MB) utilizando os algoritmos DES e AES. Compacte os arquivos originais e criptografados (usando WinZip, WinRAR, etc). Compare e explique os resultados obtidos em relação ao tamanho dos arquivos compactados.

Tabela 2 – Tamanho de arquivos originais e compactados em .zip com e sem criptografia.

Original Compactado (zip) DES AES

6733KB 6320KB 6591KB 6665KB

12504KB 12175KB 12498KB 12506KB

38273KB 38070KB 38207KB 38268KB

Analisando os dados acima, chega-se à conclusão de que os arquivos criptografados, quandocompactados apresentam tamanho maior do que o arquivo original. Isso se deve, talvez, ao fato de que alguns caracteres menos usuais, e que, portanto, são codificados com um número maior de bits, surgem nos textos cifrados, o que se traduz em um maior tamanho de arquivo. Ou também, algumaspropriedades (redundância no arquivo) que levam à uma maior taxa de compactação, normalmente são perdidas no processo de criptografia, devido ao objetivo de dificultar a descoberta do texto plano por terceiros.

9) Execute o programa StringEncrypter.java (usando NetBeans):

a) Quais são os métodos do Java usados para gerar chaves, criptografar e decriptografar?

Método responsável por gerar chaves: generateKey()Método responsável por criptografar: encrypt()Métodos responsável por decriptografar: decrypt()

b) Verifique o funcionamento do programa (cifragem/decifragem).

Page 7: Laboratório 1 - Segurança de Redes UFABC 3Q2015

c) A chave de criptografia pode ser gerada a partir de uma senha. Esta senha é combinada com um número, chamado de salt, servindo como semente para geração da chave. Modifique a senha de geração de chave (testUsingPassPhrase) para “teste-aula". Execute o programa várias vezes. O texto criptografado é sempre igual para uma mesma senha? E para senhas diferentes? Explique.

Para uma dada senha, o texto criptografado é sempre o mesmo. Senhas diferentes fornecem textos criptografados diferentes. Isso acontece pois foi implementado neste programa Java o que é conhecido por “Password-Based Encryption (PBE)”, onde a chave secreta é gerada com base numa senha. Assim, senhas diferentes levam à chaves diferentes, que levam a textos criptografados diferentes, enquanto senhas iguais, geram a mesma chave, que gera o mesmo texto criptografado.

10) Crie e implemente (em qualquer linguagem de programação) um algoritmo de criptografia de bloco usando a cifra de Feistel com dois estágios, conforme figura abaixo. A entrada deve ser um bloco de 8 bits. A chave deve ter 4 bits (escolha uma chave qualquer). Verifique manualmente se o processo de criptografia e decriptografia foi implementado corretamente. (obs: o algoritmo criado deve ser aplicado na função F).

Foi criado dois scripts .m em MatLAB para solver o problema. Um para a criptografia e outro para decriptografia.

A chave mãe escolhida foi 1110. As chaves K0 e K1, derivadas da chave mãe, foram obtidascomo a primeira permutação e segunda permutação circular da chave mãe, portanto K0 = 0111 e K1= 1011. A função F, foi designada para fazer um XOR entre o vetor Ri invertido com a chave de cada turno. Como exemplo, tomemos o texto plano P = 00100110. O processo de criptografia é:

Primeiro estágio:L0 = 0010R0 = 0110F(R0,K0) = XOR(0110,0111) = 0001

Figura 5 – Funcionamento do programa Java

Page 8: Laboratório 1 - Segurança de Redes UFABC 3Q2015

Segundo estágioL1 = R0 = 0110R1 = XOR(L0,F(R0,K0)) = XOR(0010,0001) = 0011F(R1,K1) = XOR(1100,1011) = 0111

Texto CifradoL2 = R1 = 0011R2 = XOR(L1,F(R1,K1)) = XOR(0110,0111) = 0001C = R2 L2 = 00010011

No processo de decriptografia, tem-se:

Primeiro estágioR2 = 0001L2 = 0011F(L2,K1) = XOR(1100,1011) = 0111

Segundo EstágioR1 = L2 = 0011L1 = XOR(R2,F(L2,K1)) = XOR(0001,0111) = 0110F(L1,K0) = XOR(0110,0111) = 0001

Texto PlanoR0 = L1 = 0110L0 = XOR(R1,F(L1,K0)) = XOR(0011,0001) = 0010P = L0 R0 = 001000110

As funções criadas em MatLAB forneceram o seguinte resultado:

Figure 5 – Resultados obtidos no MatLAB

Page 9: Laboratório 1 - Segurança de Redes UFABC 3Q2015

Percebe-se que os cálculos manuais e o obtido com os scripts fornecem os mesmos resultados.

Ambos scripts são fornecidos abaixo:

% Esta função foi desenvolvida como solução do último problema % do roteiro de laboratório 1 da disciplina EN3611 - Segurança de Redes% da UFABC, 3Q2015, ministrada pelo professor João Henrique Kleinschmidt.% Aluno: André Lucas de O. Duarte% R.A. : 10058710% Última Modificação: 06/10/2015 function C = encFeistel(P)% Está função recebe como entrada um texto plano de 8 bits e encripta% utilizando um algoritmo de Feistel de dois estágios. Para decifrar o% texto cifrado C, deve-se usar a função decFeistel. % Chave escolhidachave = [1 1 1 0];% Chaves derivadas da chave "mãe"K0 = circshift(chave,[0 1]);K1 = circshift(chave,[0 2]); % Primeiro EstágioL0 = P(1:4);R0 = P(5:8);F0 = xor(fliplr(R0),K0); % Segundo EstágioL1 = R0;R1 = xor(L0,F0);F1 = xor(fliplr(R1),K1); % Texto CifradoL2 = R1;R2 = xor(L1,F1);C = [R2 L2];

% Esta função foi desenvolvida como solução do último problema % do roteiro de laboratório 1 da disciplina EN3611 - Segurança de Redes% da UFABC, 3Q2015, ministrada pelo professor João Henrique Kleinschmidt.% Aluno: André Lucas de O. Duarte% R.A. : 10058710% Última Modificação: 06/10/2015 function P = decFeistel(C)% Está função recebe como entrada um texto cifrado de 8 bits e decripta% utilizando um algoritmo de Feistel de dois estágios. Para cifrar o% texto plano P, deve-se usar a função encFeistel.% Chave escolhida chave = [1 1 1 0];% Chaves derivadas da chave "mãe"K0 = circshift(chave,[0 1]);K1 = circshift(chave,[0 2]); % Primeiro EstágioR2 = C(1:4);L2 = C(5:8);F2 = xor(fliplr(L2),K1);

Page 10: Laboratório 1 - Segurança de Redes UFABC 3Q2015

% Segundo EstágioR1 = L2;L1 = xor(R2,F2);F1 = xor(fliplr(L1),K0); % Texto PlanoR0 = L1;L0 = xor(R1,F1);P = [L0 R0];

L0 = xor(R1,F1);P = [L0 R0];