13.04.2013 Views

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

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!