Capítulos 5,6 - Departamento de Ciência da Computação
Capítulos 5,6 - Departamento de Ciência da Computação
Capítulos 5,6 - Departamento de Ciência da Computação
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Cifras Enca<strong>de</strong>a<strong>da</strong>s<br />
• RC4 (RSA Data Security, 1987) -<br />
Algoritmo restrito até 1994, quando teve sua especificação publica<strong>da</strong><br />
anonimamente na lista <strong>de</strong> mensagens Cypherpunk. Para cifras enca<strong>de</strong>a<strong>da</strong>s <strong>de</strong><br />
bytes em modo OFB, usa uma S-box 8x8 S contendo permutação S0...S255<br />
dos valores hexa 00,..,FF, e dois contadores <strong>de</strong> bytes m, n.<br />
Geração <strong>da</strong> seqüência <strong>de</strong> pad: k<br />
repeat<br />
n = (n+1) mod 256<br />
m = (m+ S ) mod 256<br />
n<br />
Troca (S ,S )<br />
m n<br />
t = (S +S ) mod 256<br />
m n<br />
k= S<br />
t<br />
• Análise do RC4 -<br />
1. A cifra enca<strong>de</strong>a<strong>da</strong> em modo OFB encripta ou <strong>de</strong>cripta executando o XOR<br />
<strong>de</strong> ca<strong>da</strong> byte k gerado pelo algoritmo, com ca<strong>da</strong> byte <strong>da</strong> mensagem<br />
ou do criptograma. A chave semente po<strong>de</strong> ter até 1024 bits<br />
2. Há 256!*256 2 ≈ 2 1700 estados possíveis para o gerador <strong>de</strong> chaves <strong>de</strong><br />
padding <strong>de</strong>ste algoritmo. RSA afirma parecer não haver sementes<br />
k1...k255 que gerem ciclos pequenos, e ser o algoritmo imune às<br />
análises diferencial e linear. Licenciado para exportação com H = 40.<br />
3. Usado em <strong>de</strong>zenas <strong>de</strong> produtos (Lotus Notes, Apple AOCE, Oracle<br />
Secure SQL, CDPD, etc.) Em princípio po<strong>de</strong> ser a<strong>da</strong>ptado <strong>de</strong> 8 para 16<br />
bits, tornando-o mais rápido, mas com 2 16 iterações <strong>de</strong> inicialização e<br />
~100K <strong>de</strong> RAM ocupados pela S-box 16x16.<br />
Inicialização <strong>de</strong> S com a chave<br />
semente concatena<strong>da</strong> = k 1 ...k 255 :<br />
for n=0 to 255 do S n = n<br />
m=0<br />
for n=0 to 255 do<br />
m = (m+S n +k n ) mod 256<br />
Troca (S m ,S n )<br />
20