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.
RSA<br />
Criptografia e Segurança na Informática<br />
O mais usado e fácil <strong>de</strong> implementar dos algoritmos assimétricos, tem o<br />
nome formado com iniciais dos <strong>de</strong>scobridores, Rivest, Shamir & Adleman.<br />
Resiste a quase 20 anos <strong>de</strong> análise, sendo sua segurança supostamente<br />
basea<strong>da</strong> na dificul<strong>da</strong><strong>de</strong> <strong>de</strong> se fatorar números inteiros.<br />
Geração <strong>de</strong> parâmetros e par <strong>de</strong><br />
chaves do sistema: {t = tamanho}<br />
p = geraprimo(rand(t))<br />
q = geraprimo(rand(t))<br />
= (p-1)*(q-1) {p, q, secretos}<br />
n = p*q; e= rand(t)<br />
d = e -1 mod : A segun<strong>da</strong> chave <strong>de</strong> um par, inversa <strong>da</strong> primeira no anel<br />
Zφ (n), é calcula<strong>da</strong> pelo algoritmo <strong>de</strong> Eucli<strong>de</strong>s extendido:<br />
Fermat: O algoritmo funciona <strong>de</strong>vido ao Teorema <strong>de</strong> Fermat:<br />
d<br />
ci = ( e)d 1+r(p-1)(q-1)<br />
mi = mi<br />
= mi* mi<br />
r(p-1)(q-1)<br />
= mi* 1 mod n<br />
A cifra funciona formatando m em blocos mi <strong>de</strong> representação binária < n.<br />
Pedro Rezen<strong>de</strong> © 1998-2002<br />
e = e / mdc(e,) [>1] e A = (e,n)<br />
d = euclext(e,,1) d A = (d,n)<br />
Cifragem (começa com eA pública)<br />
c = m<br />
e<br />
mod n {encripta bloco}<br />
i i<br />
m = c<br />
d<br />
mod n {<strong>de</strong>cripta bloco}<br />
i i<br />
Assinatura (começa com d A priva<strong>da</strong>)<br />
x = h(m) d mod n {assina hash}<br />
h(m) = x e mod n ? {verifica hash}<br />
Algoritmo <strong>de</strong> Eucli<strong>de</strong>s extendido recursivo: Dados a, b, c on<strong>de</strong><br />
mdc(a,b) divi<strong>de</strong> c, retorna o menor x>0 tal que<br />
/* a * x = c mod b */<br />
euclext(a, b, c) begin<br />
r = b mod a<br />
se r == 0<br />
entao retorne( (c div a) mod (b div a) )<br />
senao retorne( (euclext(r,a,-c) * b+c) div a mod b)<br />
end<br />
37