Escolar Documentos
Profissional Documentos
Cultura Documentos
Duarte
R.A.: 11058710
1) Criptografe uma mensagem de texto usando os algoritmos DES e AES. Mostre e compare a
sada do texto criptografado (em hexadecimal) com os dois algoritmos. Faa tambm 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 questo foi "UFABC". Inicialmente, foi gerada
uma chave aleatria de tamanho 64 na interface inicial do applet WebCry.
4) Gere uma chave do algoritmo RSA. Mostre qual a chave pblica e a chave privada.
Criptografou-se "UFABC" com 4 chaves de tamanhos 24, 512, 768 e 1024, respectivamente.
Os textos criptografados obtidos, foram respectivamente:
O#@/<
2u^
\<#mH``X<"#ZI#mt1a#!W6b#uJ)JW4d
%NB#L,8?*D|}>[ {[
j#L#X)gT=5#yTc\k#6#SK<}+#J#^.hi?
=Z$l##ZPN# u#v i1u#g #.=I#]@ #+'
X##~s#%:#J#y`'T][wZ#dWSj-#&i[3H+
Percebe-se que, aumentado-se o tamanho da chave, no apenas o texto cifrado torna-se mais
longo, como tambm torna-se mais difcil a descoberta do texto plano original.
6) Cifre um arquivo pdf usando um algoritmo simtrico. Tente abrir o arquivo cifrado. Faa a
decifragem do arquivo e tente abrir novamente. Descreva o que foi observado.
O arquivo escolhido para ser cifrado foi o prprio roteiro desta atividade. Aps ser cifrado, no
foi possvel abrir o arquivo para leitura. Aps decifrar o arquivo, foi possvel abri-lo para leitura.
7) Criptografe arquivos de diversos tamanhos (de poucos KB at vrios MB) usando os algoritmos
DES, AES e RSA. Faa uma tabela comparativa em relao ao tempo de execuo e explique os
resultados obtidos.
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. Porm, percebe-se que o algoritmo RSA tem drsticas mudanas
no 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 relao ao tamanho dos arquivos compactados.
Compactado (zip)
DES
AES
6733KB
6320KB
6591KB
6665KB
12504KB
12175KB
12498KB
12506KB
38273KB
38070KB
38207KB
38268KB
Segundo estgio
L1 = R0 = 0110
R1 = XOR(L0,F(R0,K0)) = XOR(0010,0001) = 0011
F(R1,K1) = XOR(1100,1011) = 0111
Texto Cifrado
L2 = R1 = 0011
R2 = XOR(L1,F(R1,K1)) = XOR(0110,0111) = 0001
C = R2 L2 = 00010011
No processo de decriptografia, tem-se:
Primeiro estgio
R2 = 0001
L2 = 0011
F(L2,K1) = XOR(1100,1011) = 0111
Segundo Estgio
R1 = L2 = 0011
L1 = XOR(R2,F(L2,K1)) = XOR(0001,0111) = 0110
F(L1,K0) = XOR(0110,0111) = 0001
Texto Plano
R0 = L1 = 0110
L0 = XOR(R1,F(L1,K0)) = XOR(0011,0001) = 0010
P = L0 R0 = 001000110
As funes criadas em MatLAB forneceram o seguinte resultado:
function C = encFeistel(P)
% Est funo recebe como entrada um texto plano de 8 bits e encripta
% utilizando um algoritmo de Feistel de dois estgios. Para decifrar o
% texto cifrado C, deve-se usar a funo decFeistel.
% Chave escolhida
chave = [1 1 1 0];
% Chaves derivadas da chave "me"
K0 = circshift(chave,[0 1]);
K1 = circshift(chave,[0 2]);
% Primeiro Estgio
L0 = P(1:4);
R0 = P(5:8);
F0 = xor(fliplr(R0),K0);
% Segundo Estgio
L1 = R0;
R1 = xor(L0,F0);
F1 = xor(fliplr(R1),K1);
% Texto Cifrado
L2 = R1;
R2 = xor(L1,F1);
C = [R2 L2];
%
%
%
%
%
%
function P = decFeistel(C)
% Est funo recebe como entrada um texto cifrado de 8 bits e decripta
% utilizando um algoritmo de Feistel de dois estgios. Para cifrar o
% texto plano P, deve-se usar a funo encFeistel.
% Chave escolhida
chave = [1 1 1 0];
% Chaves derivadas da chave "me"
K0 = circshift(chave,[0 1]);
K1 = circshift(chave,[0 2]);
% Primeiro Estgio
R2 = C(1:4);
L2 = C(5:8);
F2 = xor(fliplr(L2),K1);
% Segundo Estgio
R1 = L2;
L1 = xor(R2,F2);
F1 = xor(fliplr(L1),K0);
% Texto Plano
R0 = L1;
L0 = xor(R1,F1);
P = [L0 R0];
L0 = xor(R1,F1);
P = [L0 R0];